Anda di halaman 1dari 22

DMA Direct memory access (DMA) adalah suatu alat pengendali khusus disediakan untuk memungkinkan transfes blok

data langsung antar perangkat eksternal dan memori utama, tanpa intervensi terus menerus dari prosesor. Transfer DMA dilakukan oleh sirkuit kontrol yang merupakan bagian dari antar muka perangkat I/O. Istilah ini yang sering banyak kita ketahui adalah sebagai kontroler DMA. Kontroler DMA melakukan fungsi yang biasanya dilakukan oleh prosesor pada saat mengakses memori utama (yang sering disebut :RAM). Untuk setiap word yang ditransfer, kontroler ini menyediakan alamat memori dan semua sinyal bus yang mengontrol transfer data. Karena harus mentransfer sejumlah blok data, maka kontroler DMA harus menaikkan alamat memori untuk word yang berurutan dan mencatat jumlah transfer. Sekalipun kontroler DMA dapat mentransfer data tanpa intervensi dari prosesor, operasinya tetap berada dibawah kontrol program yang dieksekusi oleh prosesor. Untuk menginisiasi transfer suatu blok word, prosesor mengirim alamat awal, jumlah word dalam blok, dan arah transfer. Pada saat seluruh blok telah ditransfer, kontroler tersebut memberitahu prosesor dengan memunculkan sinyal interupt. Pada saat transfer DMA terjadi, program yang meminta transfer tersebut berhenti bekerja dan prosesor dapat digunakan untuk mengeksekusi program lain. Setelah transfer DMA selesai, prosesor dapat kembali ke program yang meminta transfer tersebut. Operasi I/O selalu dilakukan oleh OS sebagai respon terhadap request dari program aplikasi. OS juga bertanggung jawab untuk menunda eksekusi satu program dan memulai eksekusi program lain. Sehingga, untuk operasi I/O yang melibatkan DMA, OS menetapkan program yang meminta transfer tsb pada keadaan blocked, menginisiasi operasi DMA, dan memulai eksekusi program lain. Pada saat transfer selesai, kontroler DMA memberitahu prosesor dengan mengirim interupt request. Sebagai responnya, OS menetapkan program yang ditunda ke keadaan runnable sehingga dapat dipilih oleh scheduler untuk melanjutkan eksekusi. Memory System Design Pada minggu-minggu sebelumnya, pada saat kita membahas disain prosesor, kita menganggap memori sebagai sebuah blok dengan kapasitas penyimpanan data yang dibatasi oleh banyaknya alamat yang dimiliki. Kita juga menganggap, bahwa proses Load dan Store (membaca dan menyimpan) data di register dapat berlangsung dalam satu clock cycle. Pada kenyataannya, faktor-faktor seperti biaya, kecepatan, ukuran, konsumsi daya, dan faktor-faktor lain memperumit proses disain memori. Pendahuluan: Komponen-komponen dari Struktur Memori Pertama kita akan membahas parameter-parameter yang digunakan untuk mengkarakterisasikan kapasitas main memory dan organisasinya. Kemudian kita akan membahassecara singkatkarakteristik berbagai komponen yang membangun memory hierarchy.

Memory hierarchy adalah kombinasi dari komponen penyimpan data yang membangun keseluruhan sistem physical memory dari suatu komputer. Bermacam komponen, umumnya, diurutkan berdasarkan kecepatan mengakses data, dari yang paling cepatsampai yang paling lambat ( hal ini yang merupakan alasan digunakannya istilah hierarchy). Cache memory, main memory, dan disk memory dibahas sebagai komponen umum dari hierarchy. Ukuran dan Organisasi Main Memory CPUMAMDRegisterfilemwws01232n-1AddressA0 Am-1D0 - Db-1R/WREQUESTCOMPLETEbmAddress busData busControl Signal Symbol Definisi Intel 8088 Intel 8086 PowerPC601 w Ukuran word CPU 16 bit 16 bit 64 bit m Jumlah bit pada logical memory address 20 bit 20 bit 32 bit s Jumlah bit pada unit terkecil 8 bit 8 bit 8 bit b Ukuran data bus 8 bit 16 bit 64 bit 2m Kapasitas memory word, word berukuran s 220 word 220 word 232 word 2m s Kapasitas memori dalam bit 220 8 bit 220 8 bit 232 8 bit

Gambar dan tabel tersebut menunjukkan parameter-parameter yang mengkarakterisasikan hubungan antara CPU dan main memory. Main memory dapat dilihat sebagai susunan atas koleksi register-register, yang setiap registernya memiliki ukuran kemampuan penyimpanan data yang sama, yaitu s buah bit, yang kita namakan memory word. Perhatikan bahwasannya ukuran word CPUyang disimbolkan wdapat saja berbeda dengan ukuran word memoriyang disimbolkan s. Secara umum, word berukuran s-bit adalah unit data terkecil yang dapat diakses dari/ke memori. Pada banyak prosesor, data berukuran beberapa word yang ter-fragment menjadi beberapa w dapat diproses. Sebagai contoh, prosesor PowerPC 601 memiliki register berukuran 32-bit, dan menggunakan address yang berukuran byte, akan tetapi prosesor ini dapat melakukan proses read dan write terhadap data yang berukuran 8bit, 16-bit, 32-bit, atau bahkan 64-bit dari/ke main memory-nya. Sebuah mesin dengan address berukuran m-bit memiliki kapasitas memori sebesar 2m s-bit memory word, atau memiliki kapasitas bit memori sebesar 2m s. Berdasarkan alasan biaya, suatu sistem memori mungkin tidak men-transmit keseluruhan w bit dari sebuah CPU word. Sistem memori ini bisa jadi akan mentransmit fragmen-fragmen dari CPU word secara serial, yang nantinya akan disusun kembali menjadi suatu word yang utuh oleh CPU. Kita tentukan ukuran word yang terbesar, yang sesungguhnya di-transmit, sebagai sebuah unit yang kita simbolkan b. Pada saat sebuah word berukuran s-bitdimana s<wdiakses oleh CPU, suatu sistem memori bisa jadi akan men-transmit keseluruhan word berukuran w-bit, sehingga CPU hardware harus meng-extract fragmen berukuran s-bit yang diinginkan/dibutuhkan tersebut. Tabel sebelumnya menunjukkan 2 contoh dari keluarga Intel 8086, yaitu prosesor Intel 8086 dan Intel 8088. keduanya memiliki ukuran word CPU sebesar 16-bit, ukuran word memori sebesar 8-bit, dan address bus sebesar 20-bit. Akan tetapi Intel 8086 dapat men-transmit keseluruhan 16-bit CPU word dalam 1 bus cycle melalui bus data 16bitnya. Berbeda dengan Intel 8088 yangberdasarkan pertimbangan hargahanya memiliki bus data selebar 8-bit, sehingga harus men-transmit data 16-bit sebagai 2 buah byte berukuran masing-masing 8-bit, dengan demikian membutuhkan setidaknya 2 bus cycle. Hal ini adalah satu contoh dari bentuk "tawar-menawar" Yusrila Y Kerlooza antara waktu (2 bus cycle vs 1 bus cycle) dan ukuran (8-bit bus vs 16-bit bus) yang terjadi pada proses pendisainan suatu sistem. Beberapa istilah penting pada sistem memori: Big Endian and Little Endian Word Ordering Schemes Big Endian dan Little Endian adalah istilah cara atau konvensi untuk menyimpan beberapa buah w/s byte data dari sebuah word data, jika w/s = n >1. Cara Little Endian adalah menyimpan least significant byte dari datanya pada alamat yang lebih kecil (lower byte address), berurut sampai most significant byte -nya di alamat yang lebih besar (higher address byte). Sementara cara Big Endian menyimpan most significant byte dari datanya di alamat yang lebih kecil, berurut sampai least significant byte -nya di alamat yang lebih besar. Berikut disajikan ilustrasi dari kedua

konvensi penyimpanan data CPU word berukuran 32-bit pada memoriyang masingmasing lokasi memori hanya mampu menyimpan data selebar 8-bit: CPU word Lokasi bit CPU word b31 . . . b24 b23 . . . b16 b15 . . . b8 b7 . . . b0 Big-endian byte addresses 1 2 3 Little-endian byte addresses 3 2 1 Penyimpanan sebuah CPU word pada memori Penyimpanan Little-endian Penyimpanan Big-endian Alamat memori Isi Alamat memori Isi b7 . . . b0 b31 . . . b24 1 b15 . . . b8 1 b23 . . . b16 2 b23 . . . b16 2 b15 . . . b8 3 b31 . . . b24 3 b7 . . . b0 ... ... Kedua strategi penyimpanan data ini memiliki 'pengikut-pengikut'-nya sediri, tetapi pada dasarnya, perbedaan di antara kedua metoda ini hanya sedikit, dan bermacam mesin menggunakan bermacam konvensi byte ordering. Prosesor 16-bit Intel 8086 adalah mesin Little Endian dan prosesor 16-bit PDP 11 adalah sebuah mesin Big Endian. Konvesi byte ordering menjadi penting untuk diketahui pada kasus-kasus berikut ini:

Ketika menggunakan debugger, user harus mengetahui byte ordering yang digunakan mesin tersebut, agar dapat memeriksa isi memori byte per byte. Pada saat word dengan multiple byte akan dikomunikasikan diantara mesin-mesin yang berbeda vendor (pabrik), maka byte ordering yang digunakan oleh setiap mesin harus diketahui agar data yang dikomunikasikan tidak disalah-tafsirkan oleh mesinmesin tersebut. RAM dan ROM RAM (Random Access Memory) berdasarkan kesepakatan, adalah memori yang dapat ditulisi data dan dapat dibaca. ROM (Read Only Memory) adalah memori yang isinya telah diprogram/ditulis terlebih dahulu, dan setelah itu hanya dapat dibaca, tidak dapat dihapus / ditulisi ulang. Operasi Memori: READ & WRITE Operasi memori READ & WRITE dapat dilihat seperti fungsi pada bahasa pemrograman tingkat tinggi, yaitu memiliki parameter masukan dan keluaran. Berikut adalah abstraksi operasi memori READ & WRITE dari sudut pandang sistem memori: READ (in: Addr ; out: Word, Completion_Signal) On Entry : MA (register Memory Address, ingat minggu ke-5 dan 6) berisi alamat memori (Addr) yang datanya akan dibaca. On Exit : Completion_Signal bernilai 'true' dan MD (register Memory Data, ingat minggu ke-5 dan 6) berisi Word yang tersimpan pada alamat memori yang dibaca (dengan ukuran w bit). WRITE (in: Addr, Word ; out:, Completion_Signal) On Entry : MA berisi alamat memori (Addr) yang akan ditulisi data; MD berisi Word yang akan dituliskan, dengan ukuran w bit. .On Exit : Completion_Signal bernilai 'true' ; Word telah dituliskan pada memori beralamat Addr. CPU membaca data dari memori dengan mengirimkan sinyal READ dan alamat memori yang akan dibaca datanya. Sistem memori memberikan respon dengan memasukkan data yang disimpan pada lokasi memori yang ditunjuk CPU ke data bus, dan mengirimkan Completion_signal, yang menandakan bahwa proses pembacaan telah selesai dilakukan. Siklus penulisan data ke memori mirip dengan siklus membaca data dari memori, kecuali prosesor memasukkan datayang akan dituliskanke MD dan mengeluarkan sinyal WRITE. Sistem memori akan mengirimkan Completion_signal, yang menandakan bahwa proses penulisan data telah selesai dilakukan. Parameter-parameter Performa Memori Parameter-parameter performa memori yang paling penting adalah: access time, ta, yaitu interval waktu antara permulaan suatu proses pembacaan (READ) sampai dengan pengiriman Completion_signal, oleh memori. cycle time, tc, yaitu interval waktu minimum antara permulaan suatu proses pembacaan (READ) atau penulisan (WRITE) sampai dengan operasi memori berikutnya. cycle time mungkin lebih besar sedikit dibandingkan dengan access time, hal ini disebabkan karena kinerja hardware yang berbeda, yang harus dikerjakan memori.

Beberapa sistem memori membaca/menulis data tidak dalam word tunggal, melainkan dalam sejumlah blok dari k buah word. Pada sistem memori jenis ini, akan ada waktu latency, t1, yaitu waktu pada saat mencari word pertama pada suatu blok. Istilah bandwidth, , pada sistem memori adalah rata-rata word yang dapat di-transmit setiap detiknya, setelah word pertama pada blok telah ditemukan. Dengan demikian waktu akses keseluruhan word dalam blok adalah tbl = t1 + k/. Parameter-parameter ini dirangkum pada tabel berikut: Symbol Definisi Unit Arti ta Access time Waktu Waktu untuk mengakses sebuah memory word tc Cycle time Waktu Waktu dari awal proses read s/d awal operasi berikutnya k Block size Words Jumlah word tiap blok Bandwidth Words/detik Rata-rata transmisi word t1 Latency Waktu Waktu untuk mengakses word pertama dalam urutan tbl = t1 + k/ Block access time Waktu Waktu untuk mengakses keseluruhan blok dari permulaan proses read The Memory Hierarchy Komponen Tipe akses Random Access Random Access Random Access Direct Access Sequential Access

Kapasitas (byte) 6 - 1024 5 - 256 KB 8 - 64 MB 1 - 10 GB 1 TB Latency 1 - 10 ns 20 ns 50 ns 10 ms 10 ms - 10 s Ukuran blok 1 word 16 word 16 word 4 KB 4 KB Bandwidth System clock rate 8 MB/s 1 MB/s 1 MB/s 1 MB/s Harga/MB Mahal $500 $30 $0.25 $0.02 CacheMemoryCPUMainMemoryDiskMemoryTapeMemory Tabel tersebut menunjukkan memory hierarchy yang umum dan nilai kapasistas penyimpanan, latency, bandwidth, dan harga pendekatan. Register, yaitu memori internal CPU, adalah level pertama dari memory hierarchy, berikutnya adalah RAM. Banyak sistem memunculkan 2 level RAM, yaitu cache memory, dan main memory. Cache memory disusun atas RAM berukuran kecil yang cepat, tapi mahal harganya, sementara main memory disusun atas RAM yang berukuran besar, dan lebih murah harganya. Setelah main memory, level berikutnya adalah sistem memory disk, yang kemudian disusul oleh sistem memory tape. Secara konvensional, memori berkecepatan tinggi disebut primary memory, disk drives disebut secondary memory dan tape drivejika adadisebut tertiary memory. Processor Design

Pada minggu-minggu sebelumnya, kita telah membahas mesin komputer dari sudut pandang assembly & machine language programmer. Dari pertemuan-pertemuan tersebut anda juga telah memiliki kemampuan "membaca" dan memahami RTN. Dengan pengetahuan dan kemampuan tersebut, kita dapat mulai masuk ke dalam bagian inti dari proses perancangan suatu sistem komputer, yaitu proses disain CPU dari sudut pandang logic designer. Proses Disain Langkah-langkah yang dilakukan dalam suatu proses disain CPU: 1. Mendiskripsikan RTN Pada tahap ini setiap instruction set didefinisikan secara jelas dengan menggunakan register transfer notation. 2. Menentukan Data Path Data path adalah koleksi/kumpulan register tambahan dan register penghubung yang diperlukan dalam proses pengeksekusian suatu instruksi, yang termasuk dalam instruction set, secara keseluruhan. Pada tahap menentukan data path ini, penggunaan RTN akan sangat diperlukan untuk menjelaskan langkah-langkah yang terjadi dalam proses pengeksekusian masing-masing instruksi. Pada tahap ini kita juga harus membuat asumsi tentang bagaimana komponen-komponen hardware bekerja. Kumpulan asumsi-asumsi yang dibuat akan dijadikan spesifikasi bagi disain logika dari perangkat keras data path. 3. Mendisain perangkat keras, sesuai dengan spesifikasi data path Untuk melaksanakan tahap ini, disainer harus memikirkan sinyal-sinyal kontrol yang harus di-generate agar suatu langkah dalam urutan proses pengeksekusian suatu instruksi dapat berlangsung, seperti "strobe" untuk me-load register ke bus, dsb. 4. Membuat Control Unit yang akan menghasilkan dan mengatur sinyal-sinyal kontrol dalam urutan yang tepat sehingga langkah-langkah dalam urutan proses pengeksekusian instruksi dapat berlangsung dengan benar. Hal yang harus dipahami dan diingat dengan baik dalam keseluruhan proses disain CPU adalah bahwa setiap langkah menghasilkan spesifikasi-spesifikasi yang harus dipenuhi pada langkah selanjutnya. Konsep awal yang sangat penting adalah perbedaan antara abstract RTN dan concrete RTN: Abstract RTN menjelaskan perubahan pada programmer-visible registers yang disebabkan oleh pengeksekusian suatu instruksi. Concrete RTN menjelaskan secara detil langkah-langkah register transfer yang terjadi pada data path sehingga menghasilkan perubahan pada programmer-visible registers secara keseluruhan. Unit kerja dari suatu abstract RTN adalah eksekusi instruksi, sementara langkahlangkah pada concrete RTN berhubungan dengan pulsa clock prosesor. Suatu 1-Bus Microarchitecture untuk SRC Untuk membangun deskripsi suatu concrete RTN yang berhubungan abstract RTN, langkah pertama adalah menentukan microarchitecture yang diperlukan dalam

implementasinya. istilah microarchitecture digunakan untuk menunjukkan suatu cara pandang terhadap mesin komputer sebagai sekumpulan register, bus dan keseluruhan unit fungsional penting lainnya seperti ALU dan counter. Sebelum masuk ke struktur mikroskopis dari SRC, kita pelajari struktur keseluruhannya terlebih dahulu. Gambar berikut menunjukkan bagaimana subsystem-subsystem dari SRC berhubungan satu sama lain. 32 buahgeneralpurposeregister 32bitAPCIRMAMDCALUABCTo memory subsystemMemory busData PathMainmemoryInput/output0R031R31<31..0>32031Diagram Block ofSRCControl UnitControl unit inputsControl signals outCPU Subsystem penting yang diperlihatkan pada gambar tersebut adalah CPU, main memory, dan I/O. Data path, diperlihatkan pada bagian bawah gambar, berhubungan dengan control unit, yang diperlihatkan pada bagian atas gambar. Control unit "menerima" sinyal yang menjelaskan keadaan data path dan control unit "mengirim" sinyal kontrol ke data path. Sinyal-sinyal ini mengatur arus data di dalam CPU, antara CPU dan main memory dan I/O. Perhatikan adanya 4 register tambahan yang tidak terdapat pada spesifikasi abstract RTN, yaitu register A, C, MA dan MD. Register A dan C diperlukan pada microarchitecture ini untuk menyimpan secara sementara satu operand dan hasil operasi pada saat mengerjakan operasi ALU. Untuk memahami mengapa register A dan C dibutuhkan, kita harus mengetahui "rule of buses", yaitu hanya ada satu item pada bus per langkahnya. Register MA dan MD digunakan sebagai register penghubung ke sistem memori. MA berisi alamat dari memory operand, dan MD digunakan sebagai buffer untuk data masuk dan keluar. Abstract dan Concrete RTN untuk instruksi SRC "add" Sebagai contoh dari deskripsi abstract dan concrete RTN, perhatikan RTN untuk keseluruhan instruksi SRC add, termasuk instruction fetch-nya berikut: Abstract RTN: (IRM[PC]:PCPC+4;instruction_execution); instruction_execution := ( add (:=op=12)R[ra]R[rb]+R[rc]: Spesifikasi abstrak tersebut menyatakan bahwasannya instruksi yang ditunjukkan oleh PC di-fetch-kan ke instruction register; PC di-increment-kan 4, sehingga menunjukkan alamat instruksi berikutnya, yaitu di 4 byte jauhnya; kemudian instruksi dieksekusi. Spesifikasi abstrak ini tidak menyatakan bagaimana cara kerja mesin mengerjakan penjumlahan. Deskripsi mengenai hal ini tergantung pada disain data path yang digunakan. 32 buahgeneralpurposeregister 32-bitAPCIRMAMDCALUABCTo memory subsystemHigh-Level View of the 1-Bus SRC Design0R031R31<31..0>32031 Deskripsi concrete RTN untuk instruksi "add" pada sebuah mesin yang menggunakan microarchitecture seperti yang terdapat pada gambar di atas dinyatakan pada tabel berikut: Langkah RTN T0

MAPC:CPC+4; T1 MDM[MA]:PCC; T2 IRMD; T3 AR[rb]; T4 CA+R[rc]; T5 R[ra] C; Secara abstrak, operasi fetching dan eksekusi instruksi add hanya memerlukan 2 langkah; sementara pada implementasi kongkritnya, operasi ini membutuhkan 6 langkah3 langkah untuk instruction fetch dan 3 langkah untuk mengeksekusi instruksi add: 1. Salin PC ke register MA, increment nilai PC, dan simpan hasilnya di register C. 2. Baca datayang disimpan pada alamat memori yang ditunjukkan oleh register MA ke register MD, dan salin isi register C ke PC. 3. Salin isi register MD ke IR. (Perangkat keras men-decode instruksi ini. Hasil decodenya adalah sebuah operasi "add"). 4. Salin register rb lewat bus dan simpan di register A. 5. Salin register rc lewat bus(dan dengan demikian simpan di bagian B di ALU), lakukan ADD(*), dan simpan hasilnya di register C. 6. Salin isi register C lewat bus dan simpan di register ra. (*) kita gunakan huruf besar (ADD) untuk operasi ALU, dan huruf kecil (add) untuk operation codes. Perhatikan pada tabel di atas bahwasannya 2 langkah pertama, masing-masingnya terdiri dari 2 operasi yang berlangsung secara parallel (bersamaan). PC+4 yang ada pada langkah T0 menyatakan secara tidak langsung bahwasannya perangkat keras melakukan increment 4 pada nilai register PC. Hal ini merupakan requirement yang masuk akal untuk ALU integer, dan merupakan contoh dari sebuah design note untuk spesifikasi ALU. Tiga langkah pertama melakukan instruction fetch. Karena setiap instruksi harus difetch-kan terlebih dulu sebelum di-decode-kan, dan karena sudah jelas prosesor tidak dapat mengetahui instruksi selanjutnya, sampai instruksi berikutnya tersebut di-fetchkan, maka setiap instruksi di disain 1-bus semacam ini akan dimulai dengan 3 langkah pertama yang sama. Kita dapat menyamakan jumlah langkah dengan clock cycle yang dibutuhkan untuk mengeksekusi suatu instruksi, sehingga pada microarchitecture semacam ini, instruksi add akan membutuhkan 6 clock cycle: 3 untuk instruction fetch dan 3 untuk melakukan penjumlahan dan penyimpanan hasilnya Machines, Machine Languages & Digital Logic

Main memory umumnya dianggap sebagai sebuah array dari unit-unit data dengan ukuran terkecil yang dapat diakses menggunakan instruction set dari mesin tersebut. Ukuran main memory sekarang ini hampir selalu sebesar 8-bit byte, sehinggasebagai contohsebuah angka bertipe floating point (64-bit) akan disimpan di dalam main memory sebagai sebuah string dari 8 buah byte yang berurutan, dan akan ada instruksi-instruksi yang memperlakukan string tersebut sebagai sebuah unit (kesatuan). Processor State (CPU) Registers, diklasifikasi berdasarkan ukuran dan tipe data yang dapat dikandung olehnya. CPU register biasa disebut Special Purpose Register. Mesinmesin komputer awal memiliki register yang berbeda untuk menangani alamat dan data. Contoh kasus Prosesor Intel 8086: Data RegistersAddress andCountRegistersMemorySegmentRegisters220 bytes ofmain memorycapacity0AXBXCXDXIPstatusSPBPSIDICSDSSSES07815I8086(1979)Lebih dari 120instruksi Mesin ini memiliki register-register dengan fungsi khusus, contoh: register AX dan BX disebut sebagai accumulator atau arithmetic register, yang digunakan sebagai tempat penyimpanan data operand dan data hasil operasi aritmetika maupun logika. Sedangkan register Status atau Flag Register (FG) berfungsi sebagai tempat penyimpanan data mengenai keadaan atau status dari mesin, yang dihasilkan oleh operasi aritmetika atau logika sebelumnya. Register CS akan menyimpan data alamat segment instruksi, dan bersama dengan register IP akan membentuk suatu alamat memori relatif dari suatu instruksi mesin : Jika CS = 0100 dan IP = 0100, maka alamat isntruksi yang akan dieksekusi selanjutnya berada pada alamat memori relatif 0100:0100. Register SS akan menyimpan data alamat segment stack, dan bersama dengan register SPyang menyimpan data alamat stack pointerakan membentuk suatu alamat memori relatif dari stack: Jika SS = 0040 dan SP = 0100, maka suatu data akan disimpan mulai alamat memori relatif 0040:0100, jika dilakukan instruksi PUSH. Percobaan sederhana: 1. Jika anda menggunakan komputer IBM PC/Compatible, pada MS-DOS prompt, ketikkan debug, kemudian tekan tombol ENTER. 2. Kemudian ketikkan r, diikuti dengan penekanan tombol ENTER. 3. Amati dan catat seluruh data yang ditampilkan, kita akan diskusikan hal ini di kelas! 4. Untuk keluar dari program debug, ketikkan q, diikuti dengan penekanan tombol ENTER. Secara umum, komputer dapat diklasifikasi berdasarkan struktur dan fungsi dari register-register CPU-nya. Accumulator machine Hanya memiliki sedikit sekali data accumulator, bahkan terkadang hanya satu, di dalam CPU-nya. Disebut accumulator karena fungsinya , baik sebagai tempat penyimpanan

salah satu operand dan juga sebagai tempat penyimpanan hasil instruksi aritmetika maupun logika. Sehingga fungsinya mengakumulasikan data. Stack machine Register-register CPU-nya diorganisasikan berdasarkan stack atau "tumpukan". Operand-operand di push ke stack, dan jika akan dikeluarkan berlaku Last In-First Out. Operasi aritmetika/logika akan "mengeluarkan" operand dari tumpukan stack paling atas, dan hasil operasinya akan disimpan pada tumpukan stack paling atas, menggantikan operand tadi. General register machine Memiliki sejumlah register yang dinomori pada CPU-nya. Tidak seperti pada accumulator machine maupun stack machine, register-register pada general purpose machine dapat digunakan hampir untuk apapun. Register-register ini dapat digunakan untuk menyimpan data, maupun alamat memori. Variasi yang biasanya ada adalah, sejumlah register dikhususkan untuk dapat menyimpan data angka floating point, sementara yang lain untuk menyimpan data tipe integer. Pada prakteknya saat ini ,kita akan melihat percampuran antara ketiga jenis mesin di atas. Computer Instruction Sets Setiap instruksi harus berisi informasi berikut: (baik secara eksplisit atau implisit) 1. Operasi yang akan dilakukan. Informasi ini diketahui dari operation code (opcode) yang unik untuk setiap operasi. Contoh: operasi penjumlahan : ADD 2. Letak operand (data yang akan dioperasikan) atau operands, jika ada operands. Operand(s) dapat terletak pada register CPU, pada main memory, atau pada I/O port. Lokasi operand dapat disebutkan secara eksplisit, misal pada suatu alamat memori, atau nomer/nama suatu general purpose register. Lokasi operand dapat juga disebutkan secara implisit pada opcode, sehingga tidak perlu lagi disebutkan.Contoh: Eksplisit : MOV AX,BX Implisit : DAA 3. Tempat hasil operasi disimpan, jika ada hasil operasi. Seperti halnya letak operand, tempat hasil operasi dapat disebutkan secara eksplisit, maupun secara implisit, sehingga tidak perlu lagi disebutkan. 4. Informasi mengenai letak instruksi selanjutnya. Pada inline codeinstruksi berurut tanpa percabanganinstruksi selanjutnya yang akan dikerjakan terletak setelah instruksi yang sedang dikerjakan, sehingga alamat tempat instruksi selanjutnya tidak perlu dicantumkan secara eksplisit pada instruksi yang sedang dikerjakan. Data Movement Instructions Dimanakah letak penyimpanan data di dalam komputer? Tempat penyimpanan data dan program adalah di dalam main memory. Dengan demikian, informasi disalinkan ke register CPU, yang merupakan bagian dari processor state, diproses dan hasilnya dikembalikan ke main memory. Secara umum diklasifikasikan menjadi instruksi yang akan memindahkan data dari sumber data ke tujuan. Sumber data dapat berupa: input port, suatu lokasi memory,

suatu register CPU, ataupun suatu nilai konstanta. Sedangkan tujuan dapat berupa: output port, suatu lokasi memory, ataupun suatu register CPU. ALU Instructions Instruksi-instruksi tersebut akan memanipulasi data secara aritmetika, maupun secara logika dan merupakan bagian terpenting dalam suatu instruction set. Pada accumulator machine yang awal dibuat, programmer tidak diberi kebebasan untuk menentukan lokasi operand dan lokasi penyimpanan hasil operasi, sebab tidak adanya general purpose register di CPU-nya. Sedangkan pada mesin-mesin selanjutnya, operand dan hasil instruksi ALU dapat berada pada register atau pada memori. Branch Instructions Pada minggu pertama, kita telah membahas bahwasanya instruksi berikutnya yang akan dieksekusi terletak pada alamat memori yang ditunjukkan oleh nilai register program counter (PC) atau register instruction pointer (IP), dengan demikian PC atau IP mengontrol jalannya program. Selama eksekusi normal program, nilai PC atau IP akan bertambah selama pembacaan instruksi untuk menunjukkan lokasi instruksi selanjutnya. Suatu branch instruction diperlukan untuk menunjukkan alamat instruksi lain yang berbeda dengan alamat instruksi selanjutnya dalam urutan. Dengan demikian branch instruction akan memberikan informasi mengenai letak instruksi berikutnya yang harus dieksekusi, dengan jalan menganti nilai PC atau IP sesungguhnya dengan nilai alamat instruksi yang akan dieksekusi tersebut. Secara umum, branch instruction dibagi menjadi: 1. Unconditional branch instruction, dan 2. Conditional branch instruction. 4-, 3-, 2-, 1-, and 0-Address and General Register Machine Classes Instruksi-instruksi mesin harus dikodekan menjadi suatu pola bit yang menunjukkan hal-hal: 1. Operasi yang akan dilakukan 2. Letak operand (data yang akan dioperasikan) atau operands, jika ada operands 3. Tempat hasil operasi disimpan, jika ada hasil operasi 4. Informasi mengenai letak instruksi selanjutnya. Disainer suatu instruction set akan meminimasikan jumlah bit yang diperlukan untuk memenuhi kebutuhan di atas, sementara pada saat yang bersamaan menginginkan fleksibilitas maksimum pada bagaimana hal-hal di atas dapat diatur. Untuk mempermudah cara kita mempelajari pengkodean suatu instruksi, kita asumsikan mesin yang kita gunakan adalah suatu mesin dengan 24-bit memori address, dan memiliki 128 buah instruksi. Dengan demikian dibutuhkan 3-byte untuk "menamai" suatu alamat memori dan dibutuhkan 7-bit untuk "menamai" suatu instruksi mesin (yang kita bulatkan menjadi 1byte). 4-Address Machines and Operations Instruksi pada mesin ini menjelaskan : 1. Operasi yang akan dilakukan 2. Letak operand 1

3. Letak operand 2 4. Tempat hasil operasi disimpan, jika ada hasil operasi 5. Informasi mengenai letak instruksi selanjutnya. sehingga dibutuhkan satu kode alamat untuk setiap operand, satu untuk hasil operasi dan satu untuk letak instruksi selanjutnya. Gambar berikut menunjukkan model programmer, secara sistematis, format operasi dan instruksi mesin: op1op2resnext instr.+memoryOp1Addr:Op2Addr:ResAddr:NextiAddrCPUFormat Instruksi:addResAddrOp1AddrOp2AddrNextiAddrinstruksi : res op1+op2bits:824242424operasiyangdilakukanalamat tempatpenyimpananhasil operasialamat tempatpenyimpananoperand1alamat tempatpenyimpananoperand2alamat instruksiselanjutnya 3-Address Machines and Operations Penghitungan program counter yang selalu menunjukkan letak instruksi berikutnya secara internal di dalam CPU menghilangkan kebutuhan untuk memberikan alamat instruksi beriktnya pada kode instruksi (kecuali pada instruksi branch). Hal ini menyebabkan instruksi pada mesin ini cukup hanya menjelaskan : 1. Operasi yang akan dilakukan 2. Letak operand 1 3. Letak operand 2 4. Tempat hasil operasi disimpan, jika ada hasil operasi sehingga dibutuhkan satu kode alamat untuk setiap operand, dan satu untuk hasil operasi. Gambar berikut menunjukkan model programmer, secara sistematis, format operasi dan instruksi mesin: op1op2resnext instr.+memoryOp1Addr:Op2Addr:ResAddr:NextiAddrCPUFormat Instruksi:addResAddrOp1AddrOp2Addrinstruksi : res op1+op2bits:8242424operasiyangdilakukanalamat tempatpenyimpananhasil operasialamat tempatpenyimpananoperand1alamat tempatpenyimpananoperand2Program Counter24 2-Address Machines and Operations Dengan menyimpan hasil operasi ke salah satu dari operand, maka akan didapat pengurangan kode alamat Hal ini menyebabkan instruksi pada mesin ini cukup hanya menjelaskan : 1. Operasi yang akan dilakukan 2. Letak operand 1 3. Letak operand 2 sehingga hanya dibutuhkan satu kode alamat untuk setiap operand, sedang hasil operasi akan secara otomatis disimpan pada salah satu operand, menggantikan data sebelumnya. Gambar berikut menunjukkan model programmer, secara sistematis, format operasi dan instruksi mesin: op1op2/resnext instr.+memoryOp1Addr:Op2Addr:NextiAddrCPUFormat Instruksi:addOp2AddrOp1Addrinstruksi : op2 op1+op2bits:82424operasiyangdilakukanalamat

tempatpenyimpananoperand2sekaligusalamat tempatpenyimpanandata hasiloperasialamat tempatpenyimpananoperand1Program Counter24 1-Address (Accumulator) Machines and Operations Dengan memberikan sebuah register akumulator, Acc, ke CPU yang akan menjadi tempat penyimpanan salah satu operand sekaligus sebagai tempat meyimpan hasil operasi, maka akan didapati cukup memberikan satu kode alamat Hal ini menyebabkan instruksi pada mesin ini cukup hanya menjelaskan : 1. Operasi yang akan dilakukan 2. Letak operand Gambar berikut menunjukkan model programmer, secara sistematis, format operasi dan instruksi mesin: op1next instr.+memoryOp1Addr:NextiAddrCPUFormat Instruksi:addOp1Addrinstruksi : Acc op1+Accbits:824operasiyangdilakukanalamat tempatpenyimpananoperand1Program Counter24Akumulator 0-Address (Stack) Computers and Address Formats Dengan pencantuman push-down stack di dalam CPU, membolehkan instruksi-instruksi ALU berlangsung tanpa memerlukan alamat operand. Operand-operand di-push ke dalam stack dari memori, dan operasi ALU secara implisit bekerja pada kedua data teratas pada stack, yang tidak lain adalah kedua operand tadi. Operasi ALU akan 'membuang' kedua operand dari stack, dan menggantikannya dengan hasil operasi. Kekurangan dari komputer dengan 0-address adalah operand-operand harus selalu berada di posisi teratas dan kedua-teratas dari stack dan diperlukannya instruksiinstruksi tambahan untuk menempatkan operand-operand ke dalam stack. Contoh: Op3=Op2+Op1; Push Op1 Push Op2 Add Pop Op3 Gambar berikut menunjukkan model programmer, secara sistematis, format operasi dan instruksi mesin: ProgramCounter+stackTOSSOS24Op1NextiOp1Addr:CPUMemoryFormat Instruksitempat penyimpananoperand dan hasil operasipush Op1 (TOS Op1)add (TOS TOS+SOS)pushOp1Addr824operasihasilFormatBitadd8FormatBitoperasiGeneral Register Machine and 1 Address Instructions Mesin akumulator dan stack memberikan keuntungan antara lain: hasil operasi dapat di-"tahan" di dalam CPU. Operasi yang kompleks sering membutuhkan penyimpanan lebih dari satuhasil operasi secara sementara di CPU. Memberikan lebih dari satu register di CPU membutuhkan penambahan kode register pada instruksi, akan tetapi untuk menetukan n buah register, hanya diperlukan kode sebanyak log 2 (n) bit saja., dan penggunaan temporary register dapat menyebabkan eksekusi instruksi menjadi lebih efisien. Suatu tipe umum dari instruksi ALU pada mesin general register serupa dengan instruksi pada mesin 3-address , akan tetapi dengan menggunakan register CPU, menggantikan alamat memori. Alamat "kecil" yang digunakan untuk menentukan

register, sering disebut sebagai half address. Sebuah instruksi yang menggunakan satu operand di memori dan satu operand di register disebut instruksi 1-address. Gambar berikut menunjukkan model programmer, secara sistematis, format operasi dan instruksi mesin: ProgramCounter+24Op1NextiOp1Addr:CPUMemoryFormat InstruksiregisterR8R6R5R4loadloadR8Op1Addrload R8.Op1 (R8add R4.R5.R6 (R4addR4R5R6Op1)R5+R6) Karakteristik Mesin (Pertemuan 1 - 2) Bisnis komputer telah berkembang dari nol sampai ke ratusan juta dolar disebabkan kemampuan dan manfaat yang diberikannyalebih dari yang mampu diberikan oleh alat lain. Komputer juga telah menjadi hal yang umum dijumpai karena selain kemampuan dan manfaat yang diberikannya, juga disebabkan oleh harga yang dibutuhkan untuk memberikan kemampuan dan manfaat tersebut. Minggu ini kita akan membahas pentingnya harga, isu tentang upward compatibility, dan pengukuran performa komputer. Economics Is the Driving Force Computer engineering dan disain komputer sangat memperhatikan harga dan keseimbangan antara harga dan performa. Harga dan performa komponen-komponen pada implementation domain - lah yang menentukan performa dari suatu sistem yang sedang dibangun. Harga dari setiap individual sirkuit, semakin lama semakin murah. Tabung-tabung vakum yang digunakan pada komputer di tahun 1940-an dan 1950-an berharga beberapa dolar per buah. Transistor diskrit berharga kurang dari satu dolar pada tahun1960-an, akan tetapi revolusi harga komponen elektronik baru berawal dari penemuan IC. Harga dari sebuah IC tidak didominasi oleh jumlah komponen yang dikandungnya, melainkan oleh biaya riset dan pengembangannya, oleh jumlah chip per wafer, dan oleh harga 'bungkus' chip. Dewasa ini, merupakan hal yang lumrah jika harga socket lebih mahal dari harga chip, bahkan harga keyboard dan monitor bisa jadi lebih mahal dari harga motherboard. Upward Compatibility Upward compatibility berarti kemampuan suatu mesin komputer untuk menjalankan software yang dibangun pada mesin komputer versi sebelumnya. Hal ini merupakan keharusan yang alamiah, sebab kebanyakan user menginvestasikan uangnya sama besar, atau bahkan lebih, pada software daripada hardware. Kebanyakan user pasti enggan membeli software baru untuk memperoleh keuntungan yang dijanjikan oleh suatu mesin komputer generasi terbaru. Upward compatibility dapat berupa: Binary compatibility. File-file biner yang di-compile pada versi sebelumnya akan bekerja pada mesin komputer generasi yang lebih baru. Kadang-kadang source codenya harus di-recompile untuk memperoleh keuntungan dari mesin komputer generasi terbaru.

Binary compatibility, dengan beberapa pengecualian. File-file biner yang di-compile pada versi sebelumnya dapat bekerja pada mesin komputer generasi yang lebih baru, jika mengikuti "aturan-aturan" yang diberikan pada saat software tersebut dibuat Source code compatibility. Source code yang ditulis pada mesin komputer versi sebelumnya akan bekerja pada versi berikutnya jika di-recompile. Emulation compatibility. Terkadang, vendor suatu mesin komputer mengeluarkan binary interpreter yang bekerja pada mesin terbaru, "menterjemahkan" kode biner lama pada run time, instruksi per instruksi. Keuntungan menggunakan cara ini adalah tidak diperlukannya "usaha" untuk menjalankan software lama pada mesin yang baru. Kerugian yang biasanya muncul adalah berkurangnya performa. Seringkali software yang bekerja di bawah emulator berjalan lebih lambat pada mesin yang lebih baru, dibandingkan pada mesin sebelumnya tanpa emulator. Machine Performance Cara memperkirakan performa suatu mesin komputer sangat bervariasi, dari yang hanya secara "kualitatif" sampai pengujian teliti yang menggunakan software yang didisain khusus untuk mengukur aspek-aspek tertentu dari suatu sistem. Secara umum, suatu pengujian dimulai dengan menentukan sebuah workload, yang merupakan suatu paket program yang dapat bekerja dan waktu pengeksekusiannya dapat dihitung. Idealnya, suatu workload berisi program-program yang nantinya akan dijalankan user pada mesin mereka. Kesulitan untuk menentukan program-program yang nantinya pasti dijalankan user mengharuskan suatu pengujian menggunakan suatu set program benchmark yang diharapkan mendekati workload sesungguhnya. Berikut disajikan beberapa metoda pengukuran performa mesin komputer. Execution Time, Clock Speed, dan Clocks per Instruction (CPI) Pengukuran dasar dari suatu performa adalah waktu. Suatu sistem komputer yang dapat menyelesaikan program lebih cepat dibandingkan komputer lain berarti memiliki performa yang lebih baik pada workload tersebut. Program execution time atau wall clock time disusun atas banyak faktor. Pada saat ini, kita akan mengabaikan faktorfaktor yang tidak tergantung pada kecepatan prosesor, seperti waktu tunggu I/O. Waktu yang berhubungan dengan prosesor dirumuskan sebagai: Execution time = IC CPI IC adalah instruction count, CPI adalah jumlah periode system clock rata-rata yang diperlukan untuk mengeksekusi sebuah instruksi, dan adalah waktu sebuah periode clock. Suatu komputer dengan system clock yang lebih cepat, lebih sedikit clock tiap instruksinya, atau memerlukan lebih sedikit instruksi untuk menyelesaikan tugas memiliki performa yang lebih baik. Execution rate lebih sering digunakan daripada execution time karena berbedanya jumlah instruksi yang perlu dikerjakan untuk menyelesaikan suatu program pada mesin yang berbeda (berbeda-bedanya jumlah instruction set yang disediakan mesin komputer). Hal ini berarti nilai yang dihasilkan oleh benchmark mungkin tidak secara akurat mencerminkan execution time suatu program yang dibuat menggunakan instruction set yang berbeda.

MIPS Salah satu ukuran performa yang paling umum dan berguna adalah MIPS, millions of instruction per second (juta instruksi per detik). Nilai ini diukur dengan menghitung jumlah instruksi satu program (atau beberapa program) dalam jutaan dan membaginya dengan waktu yang diperlukan untuk mengeksekusi program tersebut. Banyak kelemahan yang dikandung MIPS sebagai alat ukur performa mesin komputer, salah satu yang paling serius adalah perbedaan kapabilitas setiap instruksi pada mesin yang berbeda. Jumlah instruksi untuk sebuah program yang di-compile pada suatu mesin RISC (Reduced Instruction Set Computer) mungkin 20% lebih banyak dibandingkan dengan jumlah instruksi untuk program yang sama, yang di-compile pada suatu mesin CISC (Complex Instruction Set Computer), walaupun mesin RISC secara umum dapat bekerja pada kecepatan clock yang beberapa kali lebih cepat dibandingkan kecepatan rata-rata clock mesin CISC. Sistem MIPS secara luas digunakan pada akhir 1970-an dan awal 1980-an. FLOPS dan MFLOPS Komunitas supercomputing secara umum telah lebih tertarik pada kemampuan pengolahan operasi floating-point per detik yang mampu dilakukan oleh suatu mesin, dan mulai mengukur performa mesin dengan MFLOPS (millions of floating-point operation per second). Pengukuran ini merupakan perbaikan dari MIPS, karena setidaknya diukur berdasarkan operasi floating-point yang dilakukan user, akan tetapi kelemahan yang dimiliki adalah tergantungnya pengukuran pada operasi floating-point yang dilakukan dan penggunaan jenis program untuk mengukurnya. MFLOPS berbeda dengan MIPS dalam dua hal : Operasi floating-point adalah operasi yang kompleks, dan tanpa hardware yang mendukung operasi ini, program floating-point akan berjalan lambat sekali, bahkan pada mesin dengan MIPS yang besar. Pada saat menggunakan MFLOPS, overhead instruction yang dibutuhkan untuk mengambil operand, menyimpan hasil perhitungan, melakukan looping, dsb, secara efektif akan membengkak. Whetstones dan Dhrystones Whetstone benchmark adalah program benchmark "sistetis" pertama. Disebut sistetis, karena merupakan program yang secara khusus didisain untuk pengukuran performa. Dibuat pada pertengahan 1970-an oleh Whetstone Algol compiler. Program ini pertamakali dibuat untuk mengukur performa floating-point, dan performanya dihitung dalam MWIPS (millions of Whetstone instruction per second). Program Dhrystone, yang namanya merupakan pelesetan dari whetstone, dibuat pada 1984 sebagai benchmark performa integer. Program ini kecil, kurang dari 100 instruksi high-level language, yang jika di-compile menjadi program berukuran 1 - 1,5 Kb. Baik Whetstone maupun Dhrystone merupakan program yang kecil, sedemikian kecil hingga "overoptimization", menyebabkan distorsi pada hasil pengujian. SPECSystem Performance Evaluation Cooperative Konsorsium SPEC, terdiri dari berbagai perusahaan komputer, dibentuk pada tahun 1987 bertujuan untuk menentukan program benchmark standar. Paket standar

benchmark SPEC berisi sebuah compiler, sebuah program Boolean, sebuah program spreadsheet, dan sejumlah program yang menitik-beratkan pada kecepatan proses aritmetika. Paket benchmak SPEC diperbarui pada tahun 1992, dan berkembang pada pengujian performa sistem client-server dan aspek-aspek performa komputer lain yang lebih luas. RISC vs CISC Pembahasan kita pada RISC (Reduced Instruction Set Computer) lebih merupakan sebuah konsep atau filosofi dari disain mesin daripada suatu set arsitektural yang spesifik. Istilah reduced pun agaknya merupakan istilah yang kurang tepat, pada kenyataan bahwa mesin RISC generasi baru masih memiliki ratusan instruksi, cukup kompleks dalam definisi apapun. Disain CISC Mesin CISC bukan hasil dari filosofi disain tertentu, melainkan lebih merupakan hasil dari usaha disainer untuk memfasilitasi feature-feature seperti addressing mode dan tipe-tipe instruksi pada kondisi ketika harga memori dan waktu pengaksesan masih sangat mahal. Karakteristik Umum Mesin CISC Karakteristik CISC yang memberatkan adalah pendekatannya pada disain Instruction set architecture yang menekankan pada kemampuan setiap instruksi yang berlebihan, sebagai hasilnya, mesin CISC memiliki addressing mode yang sangat beragam. Hal lain adalah pendekatan "terserah anda" pada penentuan lokasi dan jumlah operand pada berbagai instruksi. Dari CISC ke RISC Cara-cara paling umum yang dilakukan untuk mempercepat waktu eksekusi instruksi adalah dengan metode prefetching, pipelining, dan superscalar operation. Model eksekusi instruksi yang telah kita bahas pada minggu pertama menjelaskan bahwa sebuah instruksi dibaca (fetched), selanjutnya dieksekusi, dan instruksi selanjutnya akan dibaca (fetched). Pada kebanyakan mesin sekarang ini, proses ini biasanya overlap, yaitu instruksi selanjutnya sudah di-fetch-kan pada urutan instruksi yang akan dieksekusi sebelum instruksi yang sedang dikerjakan selesai dieksekusi. Metode ini disebut prefetching, yang dianggap sebagai bentuk awal dari pipelining. Mikroprosesor 16-bit Intel 8086/8 dapat melakukan prefetching sampai 6 byte setelah byte yang sedang dieksekusi. Metode lain untuk mempercepat waktu waktu eksekusi instruksi adalah pipelining, yaitu metode yang memulai atau memberikan instruksi selanjutnyasebelum menyelesaikan instruksi yang sedang dieksekusi. Istilah superscalar operation merujuk pada kemampuan prosesor untuk dapat memberikan lebih dari satu instruksi secara simultan. PPC601 memiliki unit integer, floating-point dan branch yang independen dan masing-masingnya dapat mengeksekusi sebuah instruksi secara simultan. Jika metode ini dikerjakan pada kekuatan penuh, maka beberapa instruksi akan dikerjakan di luar aturan.

Disainer mesin CISC berusaha untuk mengakomodasi teknik-teknik ini, akan tetapi dengan adanya instruksi-instruksi yang panjang dan rumit, dan akses operand yang tergantung pada penghitungan address yang kompleks maka sulit sekali mengefisienkan teknik-teknik ini. Terlebih lagi, instruksi yang panjang dan penghitungan address yang kompleks memperlambat kecepatan clock. Mesin RISC didisain untuk mengefisienkan penggunaan teknik-teknik prefetching, pipelining dan superscalar operation yang ditemukan pada masa CISC. Filosofi Disain RISC RISC memfokuskan pada pengurangan jumlah instruksi dan kompleksitasnya. Banyak strategi yang digunakan oleh disainer mesin RISC untuk dapat mengoptimalkan penggunaan teknik prefetching, pipelining dan superscalar operation. Perhatikan bahwasanya tidak semua strategi berikut digunakan secara bersamaan pada suatu disain RISC. Satu instruksi per cycle Definisi awal dari RISC menuntut setiap instruksi selesai dieksekusi pada satu clock cycle. Dengan menggunakan metode pipelining, tujuan utamanya adalah paling tidak satu instruksi akan diberikan ke prosesor tiap clock cycle. Karena waktu pengeksekusian program tergantung pada throughput bukannya pada waktu eksekusi instruksi secara individual, maka memberikan instruksi (dan menyelesaikannya) pada rata-rata satu clock cycle adalah tujuan yang benar. Kunci untuk melakukan cara ini adalah dengan menyederhanakan instruksi, bukan melambatkan clock periode, sehingga mengurangi nilai CPI tanpa merubah pada persamaan berikut: Execution time = IC CPI Fixed Instruction Length Jika satu instruksi akan diberikan setiap clock cycle, maka wajar apabila disainer RISC akan membatasi seluruh instruksi pada suatu panjang tertentu, yang biasanya 1 word. Satu word tersebut harus menunjukkan semua hal yang harus diketahui dari sebuah instruksi, yaitu (sekedar mengingatkan) operasi yang akan dilakukan, letak operands jika ada operands, letak menyimpan hasil operasi jika ada hasil operasi, dan letak instruksi selanjutnya. Hanya Instruksi Load dan Store yang dapat mengakses memori Dengan ukuran word yang 32 bit dan pembatasan waktu untuk mengakses operands di memori, disain RISC membutuhkan semua operand berada di register pada saat operasi. Akses ke operand yang berada di memori dibatasi pada dua operasi, load dan store. Pembatasan aktifitas prosesor antara akses operand dan operasi ini meminimasikan traffic antara prosesor dan memori, dan menjamin semua operand berada pada register pada saat dibutuhkan. Hal ini pada akhirnya meminimasikan pipeline delay akibat tidak adanya suatu operand. Menyederhanakan Addressing Mode Addressing mode yang rumit berarti clock period yang lebih panjang, karena lebih banyak perhitungan address yang harus dilakukan. Mesin RISC biasanya membatasi hanya pada dua mode addressing, yaitu register indirect dan indexed. Operasi yang lebih sedikit, dan lebih sederhana

Operasi yang lebih sederhana berpengaruh pada clock cycle yang lebih pendek, karena lebih sedikit yang harus dikerjakan pada suatu clock cycle tertentu. Instruksi-instruksi kompleks harus diurai menjadi beberapa instruksi sederhana. Pertanyaan yang harus dijawab sebelum mencantumkan sebuah instruksi pada instruction set suatu mesin RISC adalah "Apakah dengan menambahkan instruksi tersebut, akan sebanding dengan penambahan kompleksitas di control unit dan kemungkinan penambahan clock period?" Hanya jika jawabannya adalah Ya yang jelas, maka instruksi tersebut dapat dicantumkan dalam instruction set. Delayed Loads and Branches Pada arsitektur RISC tertentu, dibutuhkan lebih dari satu clock period untuk menyelesaikan instruksi load, store, atau branch. Pada kasus load dan store disebabkan karena waktu yang dibutuhkan untuk mengakses memori, sedang pada kasus branch disebabkan karena waktu tunda pada saat mengakses instruksi pada alamat brach. Konsep dari delayed loads dan branches adalah karena membutuhkan lebih dari satu clock period, maka prosesor dibolehkan untuk mengeksekusi instruksi yang letaknya setelah load atau branch. Hal ini mengakibatkan programmer atau compiler harus berusaha untuk menempatkan sebuah instruksi pada posisi tersebut, yang tidak Yusrila Y Kerlooza Computer Architecture and Organization-1 3rd Week,page 5 from 6 tergantung pada hasil instruksi load, store, atau branch. Jika hal ini tidak dapat dipenuhi karena instruksi tersebut tergantung pada hasil instruksi load, store, atau branch, maka penambahan instruksi NOP harus diberikan, hal ini disebut delay slot. Bantuan compiler sangat dibutuhkan, sebab seringkali programmer sulit mengingat bahwasanya instruksi yang mengikuti suatu branch akan dieksekusi, walaupun branch tersebut tidak dilalui. Prefetch dan Speculative Execution Keuntungan menggunakan prefetching menjadi lebih besar pada RISC dibanding pada CISC. Jika semua instruksi satu word panjangnya, maka pemeriksaan instruksi pada saat memasuki pipeline akan menjadi lebih mudah, apakah instruksi-instruksi tersebut melibatkan akses operand atau branching. Jika ya, maka operand atau target branch dapat di-prefetch terlebih dulu, menghasilkan waktu eksekusi yang hampir nol. Dengan adanya alamat branch dan mempunyai beberapa unit fungsional yang dapat mengeksekusi secara parallel, beberapa prosesor mulai mengeksekusi di awal waktu pada alamat target tanpa perlu mengetahui apakah kondisi percabangan tersebut terpenuhi atau tidak, jika tidak, maka hasil eksekusi pada alamat target akan dibuang. Hal ini dikenal dengan speculative execution. Let the Compiler Do It RISC memiliki instruksi yang lebih pendek dan kecil, masing-masing mengerjakan hal kecil. Hal ini menyebabkan instruksi kompleks harus "dipecah-pecah" menjadi serangkaian instruksi yang lebih sederhana. Untuk memaksimalkan sumberdaya mesin, pengeksekusian program harus dimungkinkan untuk bekerja semaksimal mungkin. Hal ini memberikan beban yang berat bagi programmer mesin, sebab dia harus memastikan tidak hanya suatu program correct tetapi juga akan bekerja secara maksimal. Kebanyakan compiler untuk RISC telah dibuat dengan perhatian khusus untuk

mengoptimalkan hal ini. Karena kompleksitas yang sangat tinggi untuk menuliskan kode yang optimum, biasanya kode yang ditulis untuk mesin dibuat pada high-level language dan di-compile ke dalam bahasa mesin secara otomatis dan optimal oleh compiler yang telah dibuat khusus untuk mesin tersebut.

Anda mungkin juga menyukai