Arsitektur Prosesor MPS Oleh : FIQY HERAWAN AHFANDY BASRI MUSTIKA
ARSITEKTUR PROSESOR MIPS Sebuah arsitektur komputer tidak mendefinisikan implementasi perangkat keras yang mendasari. Seringali, banyak implementasi perangkat keras yang berbeda dari arsitektur tunggal yang ada. Sebagai contoh intel dan AMD menjual brbagai mikroprosesor dengan arsitektur yang ama dengan IA-32. Semuanya dapat menjalankan program yang sama, tapi mereka menggunakan perangkat keras yang berbeda dan karena itu menawarkan trade-off dam kinerja,harga,daya.
Pertama, di beberapa tempat di gambar 1 menunjukan data yang berbeda. ADD PC Memori instruksi REGISTER alamat instruksi DATA Register # ALU Alamat Data Memori data 4 Gambar 1 organisasi Unit-unit fungsional MIPS yang disederhanakan Walaupun gambar ini menunjuakn sebagian besar aliran data ke prosesor, hal itu menhilangkan duaaspek penting dari pelaksanaan instruksi: Pertama, di beberapa tempat di gambar 1 menunjukan data yang berbeda. Penghilangan kedua pada gambar 1 adalah bahwa beberapa unti harus dikendalikan yang tergantung pada jenis instruksi.
4 Memori instruksi ALU alamat Memori data ADD PC Memori instruksi REGISTER alamat instruksi DATA Register # ALU Alamat Data Memori data M U X 4 CONTROL ZERO BRANCH Operasi alu MemWrite RegWrite MemRead Gambar 2 organisasi Unit-unit fungsional MIPS yang diperluas
Gambar 2 menunjuakn datapath gambar 1 dengan tambahan kebutuhan tiga multiplexer, serta jalur kontrol untuk unit fungsional utama. Sebuah unit kontrol, yang memiliki intruksi sebagai masukan yang digunakan untuk menentukan bagian mana men-set (mengatur) jalur-jalur kontrol untuk unit-unit fungsional dan multiplexer. The mltiplexr ketiga, yang menentukan apakah PC+4 atau alamat tujuan branch/cabang ditulis ke PC, diatur berdasarkan pada outout zero dari ALU, yang digunakan untuk melakukan perbandingan sebuah instruksi beq. Keteraturan dan kesederhanaan dari set instruksi MIPS berarti bahwa proses decoding sederhan dapat digunakan untuk menentukan bagaimana men-set jallur-jalur kontrol.
Datapath MIPS Alamat Instruksi Instruksi MEMORI INSTRUKSI PC Gambar 3 State Element berupa memori Instruksi, program counter Gambar ini menunjukkan elemen pertama yang kita butuhkan: unit memori untuk menyimpan instruksi program dan pasokan instruksi yang diberikan alamat. Dan menunjukkan program counter (PC), adalah register yang menyimpan alat dari instruksi saat ini. Terakhir, kita akan membutuhkan penambah untuk kenaikan PC ke alamat instruksi berikutnya. Alamat Instruksi Instruksi MEMORI INSTRUKSI PC ADD SUM (a) Memori instruksi (b) Program counter (c) Penjumlahan
State element adalah memori instruksi dan program counter State element adalah memori instruksi dan program counter. Memori instruksi hanya perlu menyediakan akses baca karena datapath tidak menulis instruksi. Program counter adalah register 32 bit yang ditulis pada akhir setiap siklus clock dan dengan demikian tidak diperlukan sinyal kontrol tulis. Penjumlah (adder) dalah sebuah ALU kawat yang fungsinya hanya selalu menambahkan dua masukan 32-bit dan menempatkan hasil jumlahnya pada keluarannya secara permanen, dan tidak dapat melakukan fungsi-fungsi ALU lainnya. untuk mengeksekusi suatu instruksi, kita harus mulai dengan mengambil/membaca instruksi dari memori. Untuk mempersiapkan eksekusi instruksi berikutnya, kita juga harus menaikkan isi program counter sehingga menunjuk pada instruksi berikutnya, 4 byte berikutnya.
Gambar 4 Bagian datapath yang digunakan untuk pengambilan isntruksi dan menambah isi PC. ADD SUM PC Alamat pembacaan MEMORI INSTRUKSI Format instruksi ini membaca dua register, melakukan operasi ALU pada isi register, dan menulis hasilnya ke register. Intstruksi ini disebut instruksi type-R atau instruksi Aritmetika-Logika (karena melakukan Aritmatika atau operasi logika). Kelompok instruksi ini meliputi add,sub,AND,OR, dan slt. Contoh khas instruksi tersebut adalah add,$t1,$t2,$t3, yang membaca $t2 dan $t3 dan yang menulis $t1. Instruksi format-R memiliki tiga operand register, sehingga kita perlu membaca dua word data dari register file dan menulis sebuah word data ke dalam register file untuk setiap instruksi. Untuk menulis sebuah word data, kita membutuhkan dua masukan, satu untuk menetapkan nomor register yang akan ditulis dan satu untuk mensuplai data yang akan ditulis ke dalam register. Register file selalu mengeluarkan isi dari nomor register manapun pada masukan Read Register.
Gambar 5 implementasi operasi ALU format-R: register file dan ALU Pada gambar 5 (a) ditunjukkan bahwa dibutuhkan total empat masukkan (tiga untuk nomor-nomor register dan satu untuk data) dan dua keluaran (keduanya utuk data). Masukan-masukan nomor register lebarnya 5-bit untuk menetapkan salah satu dari 32 register (32 = 2 5 ) sedangkan bus masukan data dan dua bus keluaran data lebarnya masing-masing 32-bit. Gambar 5 (b) menunjukan ALU, yang mengambil dua masukan 32-bit dan menghasilkan hasil 32-bit, serta sinyal 1-bit jika hasilnya 0. Read Register 1 Register 2 Write Register data ALU operation Read Data 1 Data 2 zero ALU Register numbers Data Hasil ALU Data RegWrite (a) Register (b) ALU Gambar 5 implementasi operasi ALU format-R: register file dan ALU
Gambar 6 Unit yang digunakan untuk Load dan store Memwrite Alamat Read Data MEMORI DATA Write Data Sign- Extended 32 16 Memread (a) Unit memori data (b) unit perluasan bit tanda (sign extension) Gambar 6 Unit yang digunakan untuk Load dan store
Gambar diatas menunjukkan dua elemen untuk load dan store instruksi beq memiliki tiga operand, Dua register yang dibandingkan untuk kesamaan, dan sebuah 16-bit offset yang digunakan untuk menghitung branch target addres (alamat target cabang) relatif terhadap alamat instruksi cabang/branch, bentuk instruksinya adalah beq $t1,$t2, offset. Untuk melaksanakan instruksi ini, kita harus menghitung branch target addres dengan menambahkan sign-extended offset field dari instruksi kedalam PC. Kita juga harus menentukan apakah instruksi berikutnya dalah instruksi yang mengikuti secara sekuensial atau instruksi pada alamat target cabang. Ketika kondisi benar (operandnya sama) maka alamat target cabang menjadi PC baru. Jika operand tidak sama, maka PC ditambah isinya menggantikan isi PC saat ini. Datapath cabang harus melakukan dua operasi: menghitung alamat target cabang dan membandinhkan isi register (cabang juga mempengaruhi porsi pengambilan instruksi dari datapath.
Read Register 1 Register 2 Write Register data Data 1 Data 2 ADD SUM zero Sign extend Shift Left 2 4 RegWrite instruksi 16 32 PC-4 dari datapath instruksi Target Cabang/branch Ke Branch control logic Operasi ALU Gambar 7 datapath untuk cabang memakai ALU dan alamat target cabang memakai penjumlah Gambar diatas menunjukan struktur segmen datapath yag menangani percabangan. Untuk menghitung alamat target cabang, datapath cabang termasuk unit perluasan bit tanda, dari Gambar 6 dan penjumlahan.
Register Register PC (program counter) mempunyai fungsi yang sama dengan register penunjuk instruksi (instruksi pointer – IP) pada prosesor pentium. Dua register fungsi khusus disebut HI dan LO yang digunakan untuk menyimpan hasil dari instruksi perkalian dan pembagian integer (bilangan bulat): pada operasi perkalian integer, register HI dan LO menyimpan hasil 64-bit, di mana register HI menyimpan 32-bit separuh orde-atas dan register LO menyimpan 2-bit separuh orde-bawah. pada operasi bilangan interger, hasil bagi 32-bit disimpan dalam register LO dan sisa pembagian disimpan dalam register HI.
General purpose register-GPR 31 $zero $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 $at $vo $vo-$v1 $v1 $a0 $a1 $ao-$a3 $a2 $a3 $to Register perkalian dan pembagian $t1 31 $t2 HI LO $t3 $to-$t7 $t4 $t5 $t6 $t7 $s0 Program counter 31 $s1 $s2 PC $s3 $so-$s7 $s4 $s5 $s6 $s7 $s8 $t8-$t9 $s9 $k0 $ko-$k1 Gambar 8 register-register prosesor MIPS R2000 $k1 $gp $sp $fp $ra
Nama Register Nomor Penggunaan Konvensi penggunaan general-purpose register Meskipun tidak ada persyaratan dari perangkat keras prosesor, MIPS telah membentuk sebuah konvensi tentang bagaimana 30 register ini harus digunakan. Tabel 1 menunjukan bagaimana penggunaan yang disarankan pada masing-masing register. Karena saran ini tidak ditegakkan oleh perangkat keras, kita dapat munggunakan GPR secara konvensional. Tabel 1 register-register MIPS Nama Register Nomor Penggunaan $0 Constant 0 $at 1 Reserver for assmbler $vo - $v1 2,3 Results of a procedure $a0 - $a3 4 – 7 Procedure arguments $t0 - $t7 8 – 15 Temporary variables $s0 - $s7 16 – 23 Saved variables $t8 - $t9 24 , 25 Temprary variables $k0 - $k1 26 , 27 Reserved for OS kernel $gp 28 Pointer to global area $sp 29 Stack pointer $fp 30 Frame pointer $ra 31 Procedure return address
MODE PENGAMALATAN Posesor pentium menyediakan beberapa mode pengamalatan yang merupakan karakteristik prosesor berbasis CISC. Karena MIPS menggunakan arsitektur load/store, maka hanya instruksi load dan store saja yang mengakses memori. Pada gambar 9 menunjukan bagaimana operand diidentifikasi untuk setiap mode pengamalatan. Mode pengamalatan MIPS: Mode immidiate addresing, di mana operand adalah konstanta yang berada di dalam instruksi itu sendiri. Mode register addresing, di mana operand adalah sebuah register. Semua instruksi tipe-R hanya menggunakan tipe addresing. Mode based addresing atau displacement, di mana operand berada pada lokasi yang mempunyai alamat berupa hasil penjumlahan isi register dan konstanta dalam instruksi. Mode PC-relative addresing, di mana alamat branch/cabang adalah hasil penjumlah PC dan konstanta dalam instruksi. Mode pengamalatan pseudodirect addresing, di mana alamat lompatnya adalah 26 bit dari gabungan instruksi dengan bit atas PC.
4. PC-relative addresing Memory 1. Immedial addresing op rs rt immediate 2. Register addresing op rs rt rd ... fund Registers register 3. Base addresing op rs rt address Hallword Byte Word Memory register + 4. PC-relative addresing op rs rt address Word Memory PC + 5. Pseudodirect addresing op address Word Memory PC +
Penggunaan memori MIPS menggunakan memori dengan teknikbyte-addressable. Artinya, setiap byte dalam memori mempunyai sebuah alamat unik (khusus). MIPS menggunakan tata letak memori konvensional. Ruang alamat program terdiri dari tiga bagian yaitu code, data dan stack. cadangan Segmen teks Area statis Area dinamis Segmen stack Alamat memori 7FFFFFFFH 10000000H 4000000H SEGMEN DATA Gambar 10 tataletak memori MIPS
Terima kasih