Friday, June 29, 2018

Mengenal arsitektur MIPS: single-cycle vs pipelining

Arsitektur komputer merupakan hal yang menarik untuk dipelajari. Dengan memahami cara kerja komputer, khususnya processor, kita akan lebih mudah belajar IT, khususnya pemrograman dan komputasi. Masalahnya processor era modern menggunakan sistem yang kompleks, contohnya seperti i9, i7, m3 maupun processor buatan AMD dan IBM. Untuk mempelajari cara kerja processor, kita bisa memakai MIPS, processor jaman baheula yang sudah tidak dipakai lagi, namun konsepnya tetap digunakan oleh processor modern yang sekarang kita gunakan.

Secara umum, cara kerja processor dilihat dari data pathnya dapat dibagi menjadi dua yakni single-cycle dan pipelining.

Gb 1. Simple data path pada arsitektur MISP

Berdasarkan gambar diatas, bisa dijelaskan tahapan datapath pada eksekusi single-cycle sebagai berikut:
  1. PC (program counter): menahan alamat dari instruksi yang akan dieksekusi.
  2. Add: Menambahkan nilai dari PC(alamat saat ini) dengan nilai konstan 4, dan menghasilkan alamat tentatif untuk instruksi selanjutnya. (jika instruksi selanjutnya adalah percabangan dan syaratnya terpenuhi, maka alamat tersebut tidak dipakai).
  3. Add/ALU result: bagian ini menghitung alamat target selanjutnya (branch target address). Inputnya adalah PC+4 dan output dari konstan 16 bit yang di-sign extend menjadi 32 bit dan digeser kiri (left shifted) 2 bits.
  4. Mux: bagian ini menghasilkan alamat selanjutnya. Jika instruksi selanjutnya adalah conditional branch, maka output dari 3 dipilih, selainnya digunakan outout dari 2.
  5. Sign-extend: bagian ini meng-extend/memperluas input 16 bits menjadi 32 bit (dengan menambahkan 16 bit baru dengan "tanda" yang sama dengan bit paling kanan).
  6. Mux: memilih data yang akan ditulis pada register tujuan dari data yang dibaca dari memory dan data hasil perhitungan ALU.

Meskipun cara kerja processor single cycle diatas dapat bekerja dengan baik namun tidak dipakai di komputer modern karena:
  • Semua instruksi harus dieksekusi dalam satu siklus.
  • Lama waktu eksekusi merupakan jumlahan dari tiap instruksi, artinya jika ada instruksi yang dieksekusi cukup lama, maka instruksi lain akan menunggu,
Sebagai solusinya, diperkenalkan pipelining. Analogi yang cukup sederhanan adalah proses mencuci, mengeringkan, menyeterika dan melipat/memasukkan lemari. Pada teknik single-cycle (satu siklus), semua tahapan dilakukan berurutan, mencuci dulu, setelah selesai baru dikeringkan, kemudian diseterika dan dimasukkan lemari, baru mencuci lagi. Pada teknik pipelining, sambil mengeringkan, kita bisa mencuci lagi, saat cucian pertama diseterika, cucian kedua dikeringkan, dan cucian baru (ketiga) bisa mulai dicuci. Dengan cara pipelining seperti ini, waktu pemrosesan menjadi jauh lebih sedikit. Gambarnya ditunjukkan seperti di bawah.


Gb 2. Ilustrasi pipelining (bawah) dengan single cycle (atas) pada proses mencuci, mengeringkan, menyeterika dan menata pakaian [1]

Pada prosesor/komputer, tahapan prosesor dan kependekannya dapat dibagi menjadi sebagai berikut:
  1. Fetch instruction dari memory (IF).
  2. Membaca register ketika mendekoding instruksi (ID, instruction decoding). Format regular dari MIPS mengizinkan untuk membaca dan mendekoding secara bersamaan
  3. Mengeksekusi operasi atau perhitungan dari alamat (EX, execute).
  4. Mengaksess operdand di memori data (MEM, memory).
  5. Menulisi hasilnya pada resister (WB, write back).
    Sehingga Gb 1. sebelumnya bisa dibagi-bagi menjadi tahapan seperti diatas sebagai berikut.
    Gb 3. Pembagian tahapan/stage pada proses single cycle [2]

    Jika ide pipelining seperti pada proses mencuci dijelaskan sebelumnya diaplikasikan, maka performansi (waktu eksekusi) dapat ditingkatkan. Sebagai contoh tiga proses dimana setiap instruksi membutuhkan waktu 800 pico second (instruksi dari proses paling lama). Jika menggunakan single cycle, maka waktu untuk tiga instruksi adalah 2400 ps, sedangkan jika menggunakan teknik pipelining dapat dipendekkan menjadi 1400 ps.  Gambar 4 menunjukkan perbedaan performansi single cycle vs pipelining untuk kasus tersebut.
    Gb 4. Perbedaan performansi single cycle (atas) dengan pipelining (bawah) untuk tiga instruksi.

    Referensi:
    [1] Patterson, David A., and John L. Hennessy. "Computer Organization and Design." zadnje izdanje (1994).

    Related Posts Plugin for WordPress, Blogger...