Anda di halaman 1dari 55

Oleh: Anisah Argi Kartika Candri Aruma Pusparani Fara Nabilla Farida Setianingsih Lina Nofita Endriyati E Novarani

Afifah Shinta Dewi Amalia Tiara Alfreida M. Esa Permana P 36981 40020 40116 40015 39613 39575 39267 39444 40078 39642

BAB 10 RANCANGAN DASAR KOMPUTER Pada bab 7, pemisahan rancangan menjadi datapath yang mengimplementasikan mikrooperasi , dan control unit yang menentukan rangkaian mikrooperasi telah diperkenalkan. Di bab ini, kita menetapkan datapath umum komputer yang mengimplementasikan register transfer mikrooperasi dan menyajikannya sebagai kerangka untuk merancang proses logika yang detail. Konsep control word menyediakan datapath dan control unit terkait dalam jumlah sama besar. Datapath umum dikombinasikan dengan control unit dan memori membentuk sistem yang dapat diprogram, dalam hal ini komputer sederhana. Konsep dari Instrucion Set Architecture (ISA) diperkenalkan sebagai maksud untuk menentukan komputer. Dengan tujuan melaksanakan ISA, datapath general dan control unit disatukan untuk membentuk CPU (Central Processing Unit). Selanjutnya, karena ini adalah sistem yang dapat diprogram, juga terdapat memori untuk penyimpanan program dan data. Dua komputer berbeda dan dua control unit berbeda dipertimbangkan. Komputer pertama memiliki 2 memori, satu untuk instruksi, sedangkan yang satunya untuk data dan mengerjakan operasinya dalam sebuah single clock cycle. Komputer kedua memiliki memori tunggal untuk kedua instruksi dan data, dan arsitektur yang lebih kompleks membutuhkan multiple clock cycle untuk mengerjakan operasinya. Dalam Generic Computer di awal bab 1, register transfer, mikrooperasi, bus, datapath, komponen datapath, dan control word digunakan dengan sangat luas. Demikian juga, control unit muncul di sebagian besar part digital dari generic computer. Perancangan processing unit yang terdiri dari interaksi control unit dan datapath, memiliki dampak terbesar untuk generic computer di CPU dan FPU di chip prosesor. Kedua komponen ini berisi major datapath yang mengerjakan pengolahan. CPU dan FPU mengerjakan penambahan, pengurangan dan sebagian besar operasi lain yang ditentukan oleh set instruksi. 10-1 INTRODUCTION

Komputer dan perancangannya diperkenalkan dalam bab ini. Spesifikasi komputer terdiri dari penggambaran tampilan untuk programmer pada tingkat terendah, Instruction Set Architecture (ISA)nya. Dari ISA, penggambaran tingkat tinggi hardware untuk mengimplementasikan komputer, disebut Arsitektur komputer, adalah untuk dirumuskan. Arsitektur ini, untuk komputer sederhana, dibagi dalam datapath dan control. Datapath ditetapkan oleh tiga komponen dasar. 1. Register set 2. Mikrooperasi yang dilakukan pada penyimpanan data di dalam register, dan 3. Control interface Control unit menyediakan sinyal yang mengendalikan mikrooperasi dilakukan di datapath dan di komponen lain dalam sistem, misalnya memori. Selanjutya, control unit mengendalikan operasinya sendiri, menentukan urutan peristiwa yang terjadi. Urutan ini mungkin tergantung pada hasil mikrooperasi yang dieksekusi saat ini maupun dulu. Pada komputer yang lebih rumit, diberikan multiple control unit dan datapath. Untuk membangun dasar pertimbangan perancangan komputer, awalnya, kita memperluas ide di bab 7 untuk implementasi dari datapath. Khususnya, kita mempertimbangkan generic datapath, satu untuk bisa digunakan, untuk beberapa kasus dalam bentuk modifikasi, di semua desain komputer dipertimbangkan dalam sisa teks . Rencana rancangan tersebut menampilkan bagaimana datapath yang diberikan dapat digunakan untuk mengimplementasikan instruksi set arsitektur yang berbeda dengan menyederhanakan penggabungan datapath dengan control unit berbeda. 10-2 DATAPATHS Dibandingkan masing-masing register harus mengerjakan mikrooperasi sendiri secara langsung, sistem komputer lebih sering menggunakan bantuan sejumlah register penyimpanan dengan operasi unit bersama yang disebut arithmetic/logic unit, yang disingkat ALU. Untuk mengerjakan mikrooperasi, isi dari register sumber tertentu diterapkan ke input dari ALU bersama. ALU mengerjakan operasi, dan hasil dari operasi ini ditransfer ke register tujuan. Dengan ALU sebagai rangkaian gabungan, seluruh operasi register transfer dari register sumber, melalui ALU, dan menuju register tujuan, dilakukan selama satu clock cycle. Operasi perpindahan sering dilakukan di unit terpisah, tetapi terkadang operasi-operasi tersebut juga diimplementasikan dalam ALU. Ingat bahwa gabungan dari register set dengan ALU bersama dan path interkoneksi adalah datapath untuk sistem. Sisa bab ini memperhatikan organisasi dan rancangan datapath dan control unit terkait digunakan untuk mengimplementasikan komputer sederhana. Rancangan dari sebuah ALU tertentu dilakukan untuk menunjukkan proses yang terlibat dalam pelaksanaan rangkaian kombinasional yang kompleks. Kita juga merancang sebuah shifter, menggabungkan control signal ke control word, dan kemudian menambah control unit untuk mengimplementasikan dua komputer berbeda. Datapath dan control unit adalah dua bagian dari prosesor, atau CPU, dari sebuah komputer. Selanjutnya untuk register, datapath berisi logika digital yang mengimplementasikan berbagai macam mikrooperasi. Logika digital ini terdiri dari bus, multiplexer, decoder, dan processing circuit. Ketika register dalam jumlah besar berada dalam sebuah datapath, register paling mudah terhubung melalui

satu bus atau lebih. Register di datapath berinteraksi dengan transfer data langsung, serta kinerja berbagai jenis mikrooperasi. Sebuah busbased datapath sederhana dengan empat register, sebuah ALU, dan sebuah shifter yang ditunjukkan dalam gambar 10-1. Shading dan blue signal names berhubungan dengan gambar 10-10 dan akan dibahas di section 10-5. Black signal names digunakan disini untuk mendeskripsikan detail dalam gambar 10-1. Masing-masing register dihubungkan pada dua multiplexer untuk membentuk ALU dan shifter input bus A dan B. Input yang dipilih pada masing-masing multiplexer memilih satu register untuk bus yang sesuai. Untuk bus B, ada multiplexer tambahan, MUX B, supaya konstanta dapat dibawa ke datapath dari luar menggunakan konstanta masuk. Bus B juga terhubung ke data keluar, untuk mengirim data keluar datapath ke komponen lain dari sistem, seperti memori atau input-output. Demikian juga Bus A terhubung ke Alamat keluar, untuk mengirim informasi alamat keluar dari datapath untuk memori atau input-output. Aritmatika dan logika mikrooperasi dilakukan pada operand di bus A dan B oleh ALU. G select input memilih mikrooperasi untuk dikerjakan oleh ALU. Shift mikrooperasi dikerjakan pada data di Bus B oleh shifter. H select input juga melewatkan operand pada bus B secara langsung melalui shifter output atau memilih sebuah shift mikrooperasi. MUX F memilih output dari ALU atau output dari shifter. MUX D memilih output dari MUX F atau data eksternal diterapkan pada data masuk untuk diterapkan pada Bus D. Terakhir dihubungkan ke input dari semua register. Input terpilih yang dituju (destination select input) menentukan register mana yang memuat data pada bus D. Karena input terpilih di-decode , hanya satu register Load-signal yang aktif untuk berbagai transfer data ke dalam register dari Bus D. Load enable signal yang dapat mengubah semua Load signal ke 0 menggunakan gerbang AND, digunakan untuk transfer yang tidak mengubah isi dari 4 register manapun. Memiliki informasi tertentu, berdasarkan hasil dari operasi ALU, tersedia akan sangat berguna untuk digunakan oleh control unit dari CPU untuk membuat keputusan. Empat status bit ditunjukkan dengan ALU di gambar 10-1. Status bit, carry C dan overflow V, dijelaskan dengan gambar 5-9. Status nol bit Z adalah 1 jika output dari ALU semua berisi nol dan adalah 0 jika output dari ALU semua berisi satu. Demikian, Z = 1 jika hasil dari operasi adalah nol, dan Z = 0 jika hasilnya bukan nol. Tanda status bit N (untuk negative) adalah bit paling kiri dari output ALU, yang mana sign bit sebagai hasil dalam gambaran signed-number. Status value dari shifter juga dapat tergabung dalam status bit jika diinginkan. Control unit untuk datapath menunjukkan arah informasi melalui bus, ALU, shifter, dan register dengan menggunakan sinyal ke select input. Contohnya, untuk menunjukkan mikrooperasi R1 <- R2 + R3 Control unit harus menyediakan nilai pilihan biner untuk set control input dibawah ini:

1. A select, untuk menempatkan isi R2 ke Data A dan bus A. 2. B select, untuk menempatkan isi R3 ke input 0 dari MUX B, dan MB select, untuk menempatkan input 0 dari MUX B ke bus B. 3. G select, untuk menyediakan operasi aritmatik A+B. 4. MF select, untuk menempatkan output ALU pada output MUX F. 5. MD select, untuk menempatkan output MUX F ke Bus D. 6. Destination select, untuk memilih R1 sebagai tujuan dari data pada Bus D.

7. Load enable, untuk meng-enable register pada kasus ini, R1 untuk diisi. Set value harus dibangkitkan dan harus tersedia di control line yang sesuai pada awal clock cycle. Data biner dari dua register sumber harus menyebarkan melalui multiplexer dan ALU dan masuk ke input dari register tujuan, sekali selama sisa clock cycle yang sama. Kemudian, ketika positive clock edge selanjutnya tiba, data biner pada Bus D dimuat ke dalam register tujuan. Untuk mendapatkan operasi cepat, ALU dan shifter dibangun dengan logika gabungan yang memiliki sejumlah level terbatas, seperti carry-lookahead adder. THE ARITHMETIC/LOGIC UNIT ALU adalah rangkaian gabungan yang menunjukkan set dari aritmatik dasar dan logika mikrooperasi. ALU memiliki sejumlah selection lines digunakan untuk menentukan operasi yang dilakukan. Selection lines di-decode dalam ALU, supaya k selection lines dapat menetapkan hingga 2k operasi berbeda. Gambar 10-2 menampilkan symbol untuk sebuah n-bit ALU yang khas. Data input n dari A dikombinasikan dengan data input n dari B, membangkitkan hasil dari operasi pada output G.

Input mode-select S2 membedakan antara operasi aritmatika dan logika. Operation select input S1 dan S0 dan Carry input Cin, keduanya menetapkan delapan operasi aritmatik dengan S2 pada 0. Operand select input S0 dan Cin, menetapkan empat operasi logika dengan S2 pada 1. Kita mengerjakan rancangan dari ALU ini di tiga tahap. Pertama, kita merancang bagian aritmatika. Kemudian kita merancang bagian logika, dan terakhir, kita menggabungkan 2 bagian tersebut untuk membentuk ALU. Arithmetic Circuit Komponen dasar dari rangkaian aritmatika adalah parallel adder, yang dibangun dengan sejumlah rangkaian full-adder yang terhubung dalam cascade, seperti yang ditunjukkan pada gambar 5-5. Dengan mengendalikan input data ke parallel adder, memungkinkan untuk mendapatkan berbagai jenis operasi aritmatika. Diagram blok pada gambar 10-3 menunjukkan sebuah konfigurasi dimana satu set input ke parallel adder dikendalikan oleh select lines S1 dan S0. Terdapat n bit di rangkaian aritmatika, dengan dua input A dan B dan output G. Input n dari B melalui logika input B ke input Y dari parallel adder. Input membawa Cin masuk ke carry input dari full adder di posisi least-significant-bit. Output membawa Cout dari full adder di posisi most-significant-bit. Output dari parallel adder dihitung dari penjumlahan aritmatika sebagai G = X + Y + Cin Dimana X adalah bilangan biner n-bit dari input dan Y adalah bilangan biner n-bit dari logika input B. Cin adalah input carry, dimana samadengan 0 atau 1. Perhatikan bahwa simbol + dalam persamaan menunjukkan penambahan aritmatika.

Tabel 10-1 : Tabel Fungsi untuk Sirkuit Aritmatika

Pada Tabel 10-1, terdapat operasi-operasi aritmatika yang didapatkan dengan mengontrol nilai Y dengan masukan seleksi S1 dan S0. Jika masukan dari B diabaikan dan semua masukan Y dijadikan 0, hasil jumlahannya menjadi . Dari persamaan ini, didapatkan nilai G=A ketika Cin=0 dan G = A + 1 ketika Cin=1. Pada kasus pertama, terjadi transfer langsung dari masukan A ke keluaran G. Pada kasus kedua, nilai A dinaikkan (increment) menjadi +1. Setelah itu, dilakukan pengaplikasian masukan B ke masukan Y pada parallel adder. Dari sini, diperoleh persamaan ketika Cin=0 . Pengurangan aritmatika diperoleh dengan mengaplikasikan komplemen masukan B ke masukan Y pada parallel adder, untuk mendapatkan nilai ketika nilai Cin=1. Diperolehlah nilai A ditambah komplemen 2 dari B, yang ekuivalen dengan hasil pengurangan komplemen 2. Pada komplemen 2, -1 direpresentasikan dengan 1. Dengan mengaplikasikan nilai 1 pada masukan Y dengan Cin=0, diperoleh operasi pengurangan G=A-1. Logika masukan B pada Gambar 10-3 dapat diimplementasikan dengan multiplekser sebanyak n. , dan 1; masingMasukan data pada setiap multiplekser pada tahap i untuk i=0, 1, ., n-1 adalah masing saling berkorespondensi dengan variabel seleksi S1S0: 00, 01, 10, dan 11. Karenanya, suatu sirkuit aritmatika dapat dibentuk dengan menggunakan beberapa full adder multiplekser 4-1, masing-masing sebanyak n. Jumlah gerbang pada logika masukan B dapat dikurangi jika menggunakan desain logika satu bit pada B. Ini dapat diselesaikan sebagaimana yang ditunjukkan pada Gambar 10-4. Tabel kebenaran untuk satu tahap i dari logika tersebut diberikan pada gambar 10-4 (a). (halaman 436)

Gambar 10-4: Logika Masukan B untuk Sirkuit Aritmatika satu tahap/bit.

tahap biasa dari logika diperlihatkan di Gambar 10-4(a). Masukan-masukannya adalah dan , dan keluarannya adalah . Mengikuti persyaratan-persyaratan yang disebutkan di Tabel 10-1, kita tetapkan saat = 00, dan secara serupa menetapkan tiga nilai lain untuk tiap kombinasi dari variabel seleksi. Keluaran disederhanakan pada peta di Gambar 10-4(b), untuk menghasilkan dimana dan lazim pada semua tahap n. Tiap tahap berhubungan dengan masukan dan keluaran untuk Logika ini sesuai dengan sebuah multiplexer 2-ke-1 dengan pada masukan seleksi dan dan pada data masukan.

Gambar 10-5 menunjukkan diagram logika dari sebuah sirkuit aritmatika untuk . Empat sirkuit full-adder (FA) membentuk adder paralel. Carry pada tahap pertama adalah carry . Kesemua Carry lainnya terhubung secara internal dari satu tahap ke tahap berikutnya. Variabel-variabel seleksinya adalah , , dan .

Variabel dan mengontrol semua masukan dari full adder menurut fungsi Boolean berasal di Gambar 10-4(b). Setiap adalah 1, ditambah 1. Delapan operasi aritmatika untuk sirkuit saat sebuah fungsi dari , , dan dicantumkan di Tabel 10-2. Menarik untuk dicatat bahwa operasi muncul dua kali dlam tabel. Ini adalah hasil tambahan yang tidak merugikan dari digunakannya sebagai satu dari variabel control sambil mengimplementasikan perintah increment serta decrement.

Sirkuit Logika Logika operasi mikro memanipulasi bit-bit dari operand-operand dengan memperlakukan tiap bit di sebuah register sebagai sebuah variabel biner, memberi operasi secara bit. Ada empat operasi logika umum AND, OR, XOR (exclusive-OR), dan NOT dari yang lainnya dapat dapat diturunkan dengan mudah. Gambar 10-6(a) menunjukkan satu tahap dari sirkuit logika. Ini berisi empat gerbang dan sebuah multiplexer 4-ke-1, walaupun penyederhanaan dapat menghasilkan logika yang lebih tidak kompleks. Setiap operasi dari keempat operasi logika dihasilkan melalui sebuah gerbang yang melakukan logika yang diperlukan. Keluaran-keluaran dari gerbang-gerbang diteruskan ke masukan-masukan dari multiplexer dengan dua variabel seleksi dan . Kedua variabel seleksi memilih satu dari data

masukan di multiplexer dan melanjutkan nilainya ke keluaran. Diagram menunjukkan tahap biasa dengan subscript i. Untuk sirkuit logika dengan bit-bit n, diagram harus diulang sebanyak n kali untuk Variabel seleksi digunakan untuk semua tahap. Tabel fungsi di Gambar 10-6(b) memperlihatkan opertasi-operasi logika yang didapat untuk tiap kombinasi dari nilai seleksi.

Arithmetic/Logic Unit Sirkuit logika dapat digabungkan dengan sirkuit aritmatika untuk menghasilkan sebuah ALU. Variabel seleksi dan dapat menjadi lazim untuk kedua sirkuit, karena kita menggunakan variabel seleksi ketiga untuk membedakan keduanya. Konfigurasi untuk satu tahap dari ALU ditunjukkan di Gambar 107.Keluaran-keluaran dari aritmatika dan sirkuit logika di tiap tahap diterapkan ke sebuah multiplexer 2ke-1 dengan variabel seleksi .

Saat , keluaran aritmatika dipilih, dan saat , output logika dipilih. Ingat bahwa diagram menunjukkan hanya satu tahap biasa dari ALU; sirkuit harus diulang sebanyak n kali untuk sebuah ALU n-bit. Carry keluaran dari sebuah tahap aritmatika yang disebutkan harus terhubung ke carry masukan dari tahap selanjutnya secara berurutan. Carry masukan pada tahap pertama adalah carry masukan , yang juga sebagai variabel seleksi untuk operasi-operasi aritmatika. ALU dijelaskan di Gambar 10-7 berisi empat aritmatika dan empat operasi logika. Tiap operasi dipilih melalui variabel , , dan . Tabel 10-2 menunjukkan 12 operasi ALU. Delapan pertama adalah

operasi

aritmatika

dan diseleksi dengan . Empat selanjutnya adalah operasi logika dan diseleksi dengan . Agar kode-kode seleksi menggunakan sesedikit mungkin bit, dan . Input seleksi tidak memiliki dampak saat operasi-operasi logika dan ditandai dengan X untuk mengindikasikan bahwa nilainya bisa saja 0 atau 1. Selanjutnya pada desain, diberikan nilai 0 untuk operasi-operasi logika. Logika ALU yang telah didesain tidak sesederhana seperti yang terlihat dan memiliki level logika yang cukup tinggi, menyebabkan tunda propagasi di sirkuit. Dengan menggunakan software penyederhana logika, kita dapat menyederhanakan logika ini dan mengurangi tunda. Sebagai contoh, mudah untuk menyederhanakan logika untuk sebuah tahap ALU. Untuk n sebenarnya, pengurangan tunda propagasi carry lebih lanjut di ALU, seperti carry lookahead adder dari Section 5-2 diperlukan.

10-4 SHIFTER Shifter menggeser nilai pada Bus B, menempatkan hasil pada sebuah masukan MUX F. Shifter dasar melakukan satu dari dua tipe utama transformasi data: shift kanan dan shift kiri. Tampaknya, pilihan yang tepat untuk sebuah shifter adalah sebuah bidirectional shift register dengan beban paralel. Data dari Bus B dapat dikirimkan ke register secara paralel kemudian digeser ke kanan, ke kiri, atau tidak digeser sama sekali. Pulsa clock memuat keluaran dari Bus A ke shift register, dan pulsa

clock kedua melakukan penggeseran. Akhirnya, pulsa clock ketiga mengirim data dari shift register ke register tujuan yang diseleksi. Secara alternatif, pengiriman dari register sumber ke register tujuan dapat dilakukan menggunakan hanya satu pulsa clock jika shifter diimplementasikan sebagai sebuah sirkuit kombinasi seperti pada Bab 5. Karena operasi yang lebih cepat yang dihasilkan dari penggunaan satu pulsa clock bukannya tiga, ini adalah metode yang lebih dipilih. Pada shifter kombinasi, sinyal melewati gerbang tanpa memerlukan pulsa clock. Maka, clock yang hanya dibutuhkan untuk sebuah shift di datapath adalah untuk memuat data dari Bus H ke register tujuan yang dipilih. Shifter kombinasi dapat terbentuk dengan beberapa multiplexer seperti yang terlihat di Gambar 10-8. Variabel seleksi S diterapkan ke keempat multiplexer untuk menyeleksi tipe operasi di dalam shifter. S = 00 menyebabkan B yang dilewatkan ke shifter tidak berubah. S = 01 menyebabkan operasi shit kanan dan S = 10 menyebabkan operasi shift kiri. Shift kanan mengisi posisi di kiri dengan nilai pada masukan seri IR. Keluaran seri mengisi posisi di kanan dengan nilai pada masukan seri IL. Keluaran-keluaran seri ada dari keluaran seri R dan keluaran seri L untuk shift kanan dan shift kiri secara berurutan. Diagram pada Gambar 10-8 hanya menunjukkan empat tahap dari shifter, yang memiliki n tahap di sebuah sistem dengan operans-operand n-bit. Variabel seleksi tambahan dapat digunakan untuk menentukan yang menuju ke IR dan ke IL selama penggeseran sebuah posisi bit. Perlu dicatat bahwa untuk menggeser sebuah operand sebanyak m>1 posisi bit, shifter ini harus melakukan serangkaian penggeseran 1-bit m, selama m siklus clock.

Barrel Shifter

Pada aplikasi datapath, seringkali data harus digerser lebih dari satu posisi dalam sebuah siklus clock. Sebuah barrel shifter adalah satu bentuk sirkuit kombinasi yang menggeser atau memutar bit-bit data masukan dengan jumlah posisi bit yang ditentukan oleh sebuah nilai biner pada sebuah kumpulan baris seleksi. Shift yang kita bicarakan di sini adalah sebuah perputaran ke kiri, yang berarti data biner digeser ke kiri, dengan bit-bit berasal dari bagian paling signifikan dari register berputar kembali ke bagian paling tidak signifikan dari register. Sebuah versi 4-bit dari barrel shifter jenis ini ditunjukkan di Gambar 10-9. Versi ini berisi empat multiplexer dengan baris seleksi umum S1 dan S0. Variabel seleksi menentukan jumlah posisi dari data masukan akan digeser ke kiri dengan perputaran. Saat S1S0 = 00, tidak ada penggeseran terjadi, dan ata masukan memiliki jalur langsung ke keluaran. Saat S1S0 = 01, data masukan diputar satu posisi, dengan D0 menuju ke Y1, D1 ke Y2, D2 ke Y3, dan D3 ke Y0. Saat S1S0 = 10, masukan diputar dua posisi, dan saat S1S0 = 11, perputarannya sebanyak posisi 3 bit. Tabel 10-3 merupakan tabel fungsi untuk barrel shifter 4-bit. Untuk tiap

nilai biner dari variabel pilihan, tabel mendaftar masukan-masukan yang menuju ke keluarannya yang sesuai. Maka, untuk merotasi tiga posisi, S1S0 harus sama dengan 11, yang menyebabkan D0 pergi menuju ke Y3, D1 menuju ke Y0, D2 menuju ke Y1, dan D3 ke Y2. Perlu diperhatikan bahwa dengan menggunakan barrel shifter rotasi kiri ini, seseorang dapat juga mengadakan semua rotasi kanan yang diinginkan. Sebagai contoh, sebuah rotasi kiri sebanyak tiga posisi sama dengan sebuah rotasi kanan satu posisi pada barrel shifter 4-bit ini. Secara umum, pada barrel shifter 2n-bit, posisi-posisi i di rotasi kiri sama seperti bit-bit 2n-i di rotasi kanan. Sebuh barrel shifter dengan baris masukan dan keluaran 2n memerlukan multiplexer 2n, dimana tiap multiplexer memiliki masukan data 2n dan masukan pilihan n. Banyaknya posisi untuk merotasi data ditentukan oleh variabel pilihan dan bisa dari posisi 0 sampai 2n1. Untuk n yang besar, fan-in to gatesnya sangatlah besar pula, sehingga barrel shifter yang besar terdiri dari lapisan-lapisan multiplexer, seperti yang ditunjukkan pada Section 12-2, atau bisa juga dari struktur spesial yang dirancang pada level transistor. 10-5 DATAPATH REPRESENTATION

Datapath pada Figure 10-1 memuat register-register, logika pilihan untuk register, ALU, shifter, dan tiga multiplexer tambahan. Dengan struktur hirarkis, kita dapat mengurangi kompleksitas yang jelas terlihat pada datapath. Pengurangan ini sangatlah penting karena kita sering menggunakan datapath ini. Selain itu, seperti yang diilustrasikan oleh file register untuk didiskusikan selanjutnya, penggunaan hirarki memungkinkan sebuah implementasi dari modul untuk digantikan dengan yang lain, sehingga kita tidak terikat dengan implementasi logika yang spesifik. Sebuah datapath tipikal memiliki lebih dari empat register. Komputer dengan 32 atau lebih register tentu sudah biasa. Pembuatan sebuah sistem bus dengan banyak. (457)

Konstruksi sistem bus yang memiliki banyak register (halaman 442) memerlukan metode lain. Sekumpulan register yang diterapkan operasi mikro yang sejenis dapat disusun menjadi suatu file register. Pada umumnya, file register adalah suatu tipe memori bebas khusus yang mengijinkan lebih dari satu sandi untuk dibaca dan dituliskan secara bersamaan. Secara fungsional, file register sederhana berisi logika seperti yang disorot pada Gambar 10-1. Karena sifat file register yang mirip dengan sifat memori , variabel seleksi A, B dan variabel seleksi Destination (tujuan) pada gambar menjadi tiga alamat register. Seperti yang ditunjukkan pada Gambar 10-1 (warna biru) dan pada simbol file register di Gambar 10-10, alamat A mengakses sandi untuk kemudian dibaca di data A, alamat B mengakses sandi untuk kemudian dibaca di data B dan alamat D mengakses sandi untuk kemudian dituliskan dari dan ke data D. Semua pengaksesan ini terjadi dalam satu siklus clock.

Gambar 10-10: Diagram blok dari datapath menggunakan file register dan Function Unit.

Input Write yang berkaitan dengan sinyal Load Enable juga disediakan. Ketika 1, sinyal Write mengizinkan register untuk dmuati, selama siklus clock saat itu, dan ketika 0, mencegah register memuat. Ukuran register file adalah 2m x n, di mana m adalah jumlah bit alamat register dan n adalah jumlah bit per register. Untuk datapath di Gambar 10-1, m = 2, memberi 4 register, dan n tidak dispesifikasi. Karena ALU dan shifter dibagi unit pemroses dengan output yang dipilih oleh MUX F, akan nyaman apabila mengelompokkan dua unit itu dan MUX bersama untuk membentuk sebuah unit fungsi terbagi. Arsir abu-abu di Gambar 10-1 menunjukkan unit fungsi, yang dapat di representasikan dengan simbol yang diberikan di Gambar 10-10. Input ke unit fungsi, adalah dari Bus A dan Bus B, dan output unit fungsi menuju ke MUX D. unit fungsi juga memiliki empat bit status, V, C, N, Z sebagai output yang ditambahkan. Dalam gambar 10-1, ada tiga set imput seleksi: G select, H select, MF select. Dalam gambar 10-10, ada set tunggal dari input seleksi yang berlabel FS untuk function select. Untuk sepenuhnya menspesifikasi simbol unit fungsi dalam gambar, semua kode untuk G select, H select, MF select harus didefinisikan dalam hal kode untuk FS. Tabel 10-4 mendefinisikan transformasi kode ini. Kode untuk FS diberikan di kolom kiri. Dari Tabel 10-4, jelas bahwa MF adalah 1 untuk dua bit paling kiri dari FS keduanya

samadengan 1. Jika MF select = 0, maka kode G select menentukan fungsi output unit fungsi. Jika MF select = 1, maka H select menentukan fungsi di output dari unit fungsi. Untuk memperlihatkan dependensi ini, kode yang menentukan output unit fungsi diberi tanda biru pada tabel. Dari tabel 10-4 transformasi kode bisa diimplementasikan mengguankan persamaan Boolean: MF = F3.F2, G3 = F3, G2 = F2, G1= F1, G0=F0, H1= F1, dan H0= F0. Bit status dianggap tak berarti ketika shifter dipilih, walaupun dalam sistem yang lebih kompleks, bit status shifter bisa didesain untuk menggantikan bit untuk ALU saat mikrooperasi shifter dispesifikkan. Catat bahwa implementasi bit status bergantung pada implementasi spesifik yang sudah digunakan untuk rangkaian aritmatik. Implementasi alternatif mungkin tidak menghasilkan hasil yang sama. 10-6 Control Word Variabel seleksi untuk datapath mengontrol mikrooperasi yang dieksekusi dalam datapath untuk pulsa clock kapan saja yang diberikan. Untuk datapath di Bagian 10-5, variabel seleksi mengontrol alamatalamat untuk data yang dibaca dari file register, fungsi yang dilaksanakan oleh unit fungsi, dan data yang dimuati ke file register, juga seleksi data eksternal. Kita sekarang akan mendemonstrasikan bagaimana variabel kontrol ini memilih mikrooperasi untuk datapath. Pilihan nilai vaiabel kontrol untuk mikrooperasi tipikal akan didiskusikan, dan sebuah semulasi datapath akan diilustrasikan. Diagram blok dari sebuah datapath yang merupakan versi spesifik datapath dalam Gambar 10-10 ditunjukkan dalam Gambar 10-11(a). Ia memiliki sebuah file register dengan 8 register, R0 sampai R7. File register menyediakan input ke unit fungsi melalui Bus A dan Bus B. MUX B memilih antara nilai konstan di Constant in dan nilai register di data B. ALU dan logika zero-detection dalam unit fungsi membangkitkan data biner untuk empat bit status: V (overflow), C (carry), N (sign), dan Z (zero). MUX D memilih output unit fungsi atau data pada Data in sebagai input untuk file register. Ada 16 input kontrol biner. Nilai mereka yang dikombinasi menspesifikasi sebuah control word. Control word 16 bit didefinisikan pada Gambar 10-11(b). Ini terdiri atas 7 bagian disebut field (bidang), tiaptiapnya terdiri oleh sepasang huruf. Tiga bidang register ini tiap-tiapnya ada 3 bit. Bidang lainnya memiliki satu atau empat bit. 3 bit DA memilih satu dari delapan register tujuan untuk hasil mikrooperasi. Tiga bit AA memilih satu dari delapan register sumber untuk input Bus A ke ALU. Tiga bit BA memilih register sumber untuk input 0 dari MUX B. Bit tunggal MB menentukan apakah Bus B membawa isi register sumber terpilih atau nilai konstan. Bidang FS 4 bit mengontrol operasi unit fungsi. Bidang FS terdiri dari 15 kode dari Tabel 10-4. Bit tunggal MD memilih output unit fungsi atau data di Data in sebagai input ke Bus D. Bidang erakhir, RW, menentukan apakah sebuah register ditulis atau tidak. Ketika diterapkan ke input kontrol, control word 16 bit menspesifikasi mikrooperasi khusus. Fungsi dari semua kode kontrol yang berati dipesifikasi di Tabel 10-5. Untuk tiap bidang kode biner untuk tiap fungsi diberikan. Register yang dipilih oleh tiap bidang DA, AA, dan BA adalah register dengan equivalen desimal yang sama dengan nomor biner untuk kode. MB memilih apakah register yang dipilih oleh BA atau konstanta dari luar datapath di Constant in. Operasi ALU, operasi shifter, dan pemilihan ALU atau

output shifter semua dispesifikasi oleh bidang FS. Bidang MD mengontrol informasi yang dimuatkan ke file register. Bidang terakhir, RW, memiliki No Write, untuk mencegah penulisan ke register apapun, dan Write untuk menandai penulisan ke sebuah register.

Control word untuk sebuah mikrooperasi dapat diperoleh dengan menentukan nilai dari tiap bidang kontrol. Sebagai contoh, sebuah subtraksi dari pernyataan menentukan R2 sebagai input A dari ALU dan R3 sebagai input B dari ALU. Pernyataan tersebut juga menetapkan operasi unit fungsi dan pilihan atas keluaran unit fungsi untuk input ke file register. Pada akhirnya, mikrooperasi memilih R1 sebagai register tujuan dan menetapkan nilai RW menjadi 1 yang menyebabkan R1 kemudian ditulis. Control word untuk mikroinstruksi ini ditentukan oleh ketujuh bidangnya, dengan nilai biner untuk tiap bidang didapat dari encoding yang terdaftar di Table 10-5. Binary control word untuk mikrooperasi subtraksi ini, 001_010_011_0_0101_0_1, (dengan garis bawah "_" digunakan demi kemudahan untuk memisahkan bidang) didapatkan seperti berikut: Bidang: Simbolis: DA R1 AA R2 BA R3 MB Register FS MD RW Function Write

Biner: 001 010 011 0 0101 0 1 Control word untuk beberapa mikrooperasi ditunjukkan pada Table 10-6 menggunakan notasi simbol dan di Table 10-7 menggunakan kode biner. Contoh kedua pada Table 10-6 adalah sebuah mikrooperasi dengan pernyataan

Pernyataan ini menentukan sebuah shift kiri untuk shifter. Isi dari register R6 digeser ke kiri, dikirim ke R4. Perlu dicatat bahwa karena shifter dikendalikan bus B, sumber untuk penggeseran ditentukan di bidang BA daripada bidang AA. Dari pengetahuan simbol-simbol di tiap bidang, word kendali dalam biner dapat dilihat di Tabel 10-7. Untuk banyak operasi mikro, baik data A atau data B dari register tidak dipakai. Pada hal ini, bidang simbolik masing-masing ditandai dengan sebuah tanda garis. Karena nilainilai ini tidak ditentukan, nilai biner yang sesuai di Tabel 10-7 adalah Xs. Dialnjutkan dengan tiga contoh terakhir di Tabel 10-6, untuk membuat isi-isi dari register pada keluaran data B dari file register, dengan RW= No Write (0) unruk mencegah file register untuk ditulis. Untuk menempatkan sebuah konstanta kecil di sebuah register atau menggunakan konstanta kecil sebagai salah satu operand, kita menempatkan konstantanya pada Constant in, menentukan MB menjadi Constant, dan mengirim nilai dari Bus B melalui ALU dan Bus D ke register tujuan. Untuk membersihkan sebuah register menjadi 0, Bus D ditentukan ke all 0s dengan menggunakan register yang sama untuk data A dan data B dengan sebuah operasi XOR (FS = 1010) dan MD = 0. Bidang DA ditentukan menjadi kode untuk register tujuan, dan RW adalah Write (1).

itu jelas dari contoh-contoh yang banyak operasi mikronya dapat dilakukan oleh datapath yang sama. Urutan operasi mikro tersebut dapat direalisasikan dengan menyediakan unit kontrol yang menghasilkan urutan yang tepat dari kata-kata kontrol. Untuk menyelesaikan bagian ini, kita melakukan simulasi datapath pada Gambar 10-11. jumlah bit dalam setiap register, n, adalah sama dengan 8., yang paling nyaman untuk membaca output simulasi tidak di tandai representasi desimal dan digunakan untuk semua sinyal bit ganda, kita mengasumsikan bahwa operasi mikro dalam tabel 10-7, mengeksekusi secara berurutan, memberikan masukan kepada Datapath dan bahwa kandungan awal setiap register adalah nomor dalam desimal (misalnya R5 mengandung (0000 0101)2 = (5)10). Gambar 10-12 memberikan hasil simulasi ini . Nilai pertama yang ditampilkan adalah clock dengan nomor siklus clock untuk referensi . Input , output dan state untuk datapath yang diberikan kira-kira di urutan arus informasi melalui jalan path . Empat masukan pertama adalah bidang utama control word . itu yang menentukan alamat register , menentukan file output ,mendaftar dan pemilihan fungsi . Selanjutnya adalah input konstan dalam dan MB , yang mengontrol input ke bus B.

Simulasi urutan Mikrooperation dalam tabel 10-7 Berikut merupakan output Address out dan Data out, yang merupakan output dari Bus A dan Bus B, secara berurutan. Tiga variable selanjutnyaData in, MD, dan RWmerupakan tiga input terakhir untuk datapath. Input tersebut diikuti oleh konten dari 8 register dan Status bits, yang diberikan sebagai sebuah vektor (V,C,N,Z). Konten awal masing-masing register adalah nomornya dalam decimal. Nilai 2 dimasukkan ke Constant hanya pada siklus 4 dimana MB setara dengan 1. Jika tidak, nilai pada Constant in tidak diketahui yang dinyatakan oleh X. Maka, Data in memiliki nilai 18. Dalam simulasi, nilai

tersebut didapat dari sebuah memori yang dialamatkan oleh Address out dan yang mempunyai nilai 18 di lokasi 0 dengan nilai tidak diketahui dalam semua lokasi lain. Nilai hasil, kecuali ketika Address out adalah 0, direpresentasikan oleh sebuah garis pertengahan antara 0 dan 1 menyatakan nilainya tidak diketahui. Sebagai catatan dalam hasil simulasi bahwa perubahan pada register merupakan akibat dari sebuah mikrooperasi tertentu muncul dalam siklus clock setelah mikrooperasi ditentukan. Sebagai contoh, hasil dari perkalian dalam siklus clock 1 muncul dalam register R1 di siklus clock 2. Hal ini dikarenakan hasil dimasukkan ke dalam flip-flop pada positive edges clock di akhir siklus clock. Pada sisi lain, nilai pada Status bits, Address out dan Data out muncul di siklus clock yang sama sebagai miksrooperasi yang mengendalikannya, karena nilai-nilai tersebut tidak bergantung pada adanya sebuah positive clock edge. Dengan tidak adanya delay kombinasional yang ditentukan dalam simulasi, nilai tersebut berubah pada waktu yang bersamaan sebagai nilai-nilai register. Maka, catat bahwa 8 siklus clock simulasi digunakan untuk 7 mikrooperasi sehingga nilai nilai dalam register-register yang merupakan hasil dari eksekusi mikrooperasi terakhir dapat diteliti. Meskipun Status bits muncul untuk semua mikrooperasi, status bits tersebut tidak selalu berarti. Sebagai contoh, untuk mikrooperasi , R3 = Data out dan R4 Data in, dalam siklus clock 5 dan 6, secara berurutan , nilai dari status bits tidak berhubungan dengan hasil karena unit Fungsi tidak digunakan dalam operasi tersebut. Maka, untuk R5 R0 R0 pada siklus clock 7, unit aritmatika tidak digunakan, sehingga nilai-nilai V dan C dari unit tersebut tidak relevan, tetapi nilai-nilai untuk N dan Z merepresentasikan status hasil sebagai sebuah signed 2s complement integer.

10-7 SEBUAH ARSITEKTUR KOMPUTER SEDERHANA


Kami memperkenalkan sebuah arsitektur komputer sederhana untuk memperoleh sebuah pemahaman awal mengenai desain computer dan mengilustrasikan kontrol desain untuk programmable system. Dalam programmable system, sebuah bagian dari input ke prosessor terdiri dari sebuah urutan instruksiinstruksi. Setiap instruksi menentukan sistem operasi untuk menampilkan operand-operand yang mana digunakan dalam operasi, ke manakah nilai hasil operasi ditempatkan dan, dalam beberapa kasus, instruksi yang manakah untuk dieksekusi berikutnya. Untuk programmable system, instruksi biasanya disimpan dalam memori, bisa RAM atau ROM. Untuk menjalankan instruksi-instruksi secara urutan, perlu memberikan alamat dalam memori mengenai instruksi yang akan dijalankan. Dalam sebuah computer, alamat ini datang dari sebuah register yang disebut Program Counter(PC). Seperti namanya, PC mempunyai logika yang mengizinkannya untuk menghitung. Sebagai tambahan, untuk mengubah urutan operasi-operasi menggunakan keputusan-keputusan yang berdasarkan pada status informasi, PC membutuhkan kemampuan memuat parallel. Sehingga, dalam kasus sebuah programmable system, kontrol unit berisi sebuah PC dan menghubungkan keputusan logika, serta logika yang diperlukan untuk menginterpretasikan dalam urutan untuk menjalankannya. Menjalankan sebuah instruksi berarti mengaktivasi perlunya urutan mikrooperasi-mikrooperasi yang dibutuhkan dalam datapath (dan tempat lain) harus menampilkan operasi yang ditentukan oleh instruksi. Berbeda dengan sebelumnya, catat bahwa untuk sebuah nonprogrammable system, kontrol unit tidak bertanggungjawab dalam mmeperoleh instruksi-instriksi dari memori, atau tidak pula bertangggungjawab untuk mengurutkan pengeksekusian instruksi-instruksi tersebut. Tidak ada PC atau register yang sama dalam system seperti

itu. Malahan, kontrol unit menentukan operasi-operasi yang akan ditampilkan dan urutan operasioperasi tersebut, hanya berdasarkan pada input dan status bits-nya. Kami menunjukkan bagaimana operasi ditentukan oleh instruksi-instruksi, untuk komputer sederhana dapat diimplementasikan oleh mikrooperasi-mikrooperasi dalam datapath, serta pergerakan informasi antara datapath dan memori. Kami juga menunjukkan dua kontrol struktur berbeda untuk mengimplementasikan pengurutan operasi-operasi yang diperlukan untuk mengontrol eksekusi program. Tujuannya disini adalah untuk menggambarkan dua pendekatan berbeda untuk mengontrol desain dan efek-efek yang dimiliki pendekatan tersebut terhadap desain datapath dan tampilan sistem. Sebuah pembelajaran konsep yang lebih luas yang terhubung dengan set instruksi untuk komputerkomputer digital dijelaskan secara detail di bab berikutnya, dan desain CPU yang lebih lengkap dijelaskan dalam Bab 12. Instruction Set Architecture Pengguna menentukan operasi-operasi yang akan ditampilkan dan urutannya dengan menggunakan sebuah program, yang merupakan sebuah list instruksi yang menentukan operasi-operasi, operandoperand, dan urutan proses terjadinya. Pengolahan data yang ditampilkan oleh sebuah komputer dapat diubah dengan menentukan sebuah program baru dari instruksi yang berbeda atau menentukan instruksi yang sama dengan data yang berbeda. Instruksi dan data biasanya disimpan bersama dalam sebuah memori. Dengan cara-cara yang didiskusikan dalam Bab 12, namun, instruksi dan data tersebut mungkin akan terlihat datang dari memori yang berbeda. Kontrol unit membaca instruksi dari memori dan men-decode dan menjalankan instruksi dengan memanggil sebuah urutan dari satu atau beberapa mikrooperasi. Kemampuan untuk menjalankan sebuah program dari memori merupakan single property paling penting dari sebuah general-purpose komputer. Pengeksekusian sebuah program dari memori berbeda jauh dengan unit kontrol nonprogrammable multiplier yang dipertimbangkan awal tadi, yang mana hanya menjalankan sebuah single, operasi tetap. Sebuah instruksi merupakan koleksi bit-bit yang memerintahkan komputer untuk menampilkan sebuah operasi tertentu. Kami sebut koleksi dari instruksi-instruksi untuk sebuah computer adalah instruction set dan sebuah deskripsi lengkap dari instruction set adalah instruction set architecture (ISA). Instruction set architecture sederhana mempunyai tiga komponen besar: storage resources, instruction formats, dan spesifikasi instruksi. Storage resources Storage resources untuk komputer sederhana direpresentasikan oleh diagram pada gambar 10-13. Diagram tersebut mneggambarkan struktur komputer yang dilihat oleh seorang user yang memrogramnya dalam sebuah bahasa yang secara langsung menentukan instruksi-instruksi untuk dijalankan. Hal ini memberi user sumber yang terlihat bersedia untuk menyimpan informasi. Catat bahwa arsitektur melibatkan dua memori, satu untuk penyimpanan instruksi-instruksi dan yang lain untuk penyimpanan data. Memori tersebut mungkin sebenarnya memori yang berbeda, atau mungkin memori yang sama, tetapi dilihat berbeda dari standpoint CPU seperti yang didiskusikan dalam Bab 12.

Serta terlihat oleh programmer dalam diagram merupakan sebuah file register dengan delapan 16-bit register dan 16-bit program counter.

Instruction formats Format sebuah instruksi biasanya digambarkan dengan sebuah kotak persegi empat menandakan bit-bit instruksi, bersamaaan dengan munculnya dalam memory words atau dalam sebuah control register. Bitbit dibagi dalam kelompok-kelompok atau bagian-bagian yang disebut field. Masing-masing field diberi sebuah item tertentu, misalnya kode operasi, sebuah nilai konstanta, atau sebuah alamat file register. Setiap field menentukan fungsi-fungsi yang berbeda untuk instruksi dan ketika ditampilkan bersama, membentuk sebuah instruction format. Kode operasi sebuah instruksi, sering disebut opcode, adalah sebuah kelompok bit denngan instruksi yang menentukan sebuah operasi, misalnya add, substract, shift atau complement. Jumlah bit yang diperlukan untuk opcode dari sebuah instruksi merupakan sebuah fungsi dari jumlah total dari operasioperasi dalam instruction set. Opcode ini harus terdiri atas minimal m bit sampai dengan 2m operasioperasi yang berbeda. Desainer memberi sebuah kombinasi bit ( sebuah kode) untuk tiap operasi. Komputer didesain untuk menerima konfigurasi bit ini pada waktu yang telah ditentukan dalam urutan aktivitas-aktivitas dan untuk menyediakan urutan control word yang tepat untuk menjalankan operasi yang ditentukan. Sebagai contoh khusus, pertimbangkan sebuah computer dengan maksimum 128 operasi yang berbeda, satu di antaranya sebuah operasi penjumlahan. Opcode yang diberi operasi ini

terdiri atas tujuh bit 0000010. Ketika opcode 0000010 terdeteksi oleh control unit, sebuah urutan control words diterapkan ke datapath untuk menampilkan penjumlahan yang dikehendaki. Opcode sebuah instruksi menentukan operasi yang akan ditampilkan. Operasi tersebut harus ditampilkan menggunakan data yang disimpan dalam register-register komputer atau dalam memori (sebagai contoh, dalam konten dari storage resources). Sebuah instruksi, oleh karena itu, tidak hanya harus menentukan operasi, tetapi juga register-register atau memory words di mana operand-operand nantinya akan ditemukan dan hasilnya untuk ditempatkan. Operand-operand mungkin telah ditentukan oleh sebuah instruksi dalam dua cara. Sebuah operand dikatakan tertentu secara eksplisit jika instruksi berisi bit khusus untuk identifikasinya. Sebagai contoh, instruksi menampilkan sebuah penjumlahan mungkin berisi tiga bilangan biner yang menentukan register-register yang berisi dua operand dan register yang menerima hasilnya. Sebuah operand dikatakan tertentu secara implisit jika dimasukkan sebagai bagian dari definisi operand itu sendiri, seperti yang direpresentasikan oleh opcode, lebih baik daripada diberikan dalam instruksi. Sebagai contoh, dalam sebuah operasi Increment Register, salah satu operandnya adalah +1 , secara implisit. Ketiga instruction formats untuk komputer sederhana digambarkan dalam Gambar 10-14. Andaikan computer mempunyai sebuah file register berisi delapan register, R0 menuju R7. Instruction format dalam Gambar 10-14(a) berisi sebuah opcode yang menentukan penggunaan dari tiga register atau kurang, seperti yang diperlukan. Salah satu dari register ditunjuk sebuah tujuan untuk hasilnya dan dua dari register sebagai sumber untuk operand. Untuk kenyamanan, nama field disingkat DR, untuk Destination Register, SA untuk Source Register A, dan SB untuk Source Register B. Jumlah field register dan register yang benar-benar digunakan ditentukan oleh opcode tertentu. Opcode tersebut juga menentukan penggunaan register. Sebagai contoh, untuk operasi perkalian, andaikan terdapat tiga bit dalam SA adalah 010, menentukan R2, ketiga bit dalam SB 011, menentukan R3, dan ketiga bit dalam DR adalah 001, menentukan R1.

Kemudian konten dari R3 akan dikurangkan dari konten R2, dan hasilnya akan ditempatkan di R1. Sebagai contoh tambahan, andaikan bahwa operasi adalah sebuah penyimpanan (untuk memory). Andaikan lebih jauh, bahwa ketiga bit di SA menentukan R4 dan ketiga bit di SB menentukan R5. Untuk operasi khusus ini, diasumsikan bahwa register ditentukan di SA berisi alamat dan register yang ditentukan di SB berisi operand untuk disimpan. Jadi nilai dari R5 disimpan dalam lokasi memori yang diberikan oleh nilai di R4. DR field tidak memeiliki efek, karena penyimpanan operasi mencegah file register dalam penulisan. Instruction format dalam Gambar 10-14(b), memiliki opcode, dua register field, dan sebuah operand. Operand merupakan sebuah konstanta yang disebut sebagai immediate operand, karena operand ini secara tiba-tiba tersedia di dalam instruksi. Sebagai contoh, untuk sebuah penambahan immediate operation dengan SA ditentukan sebagai R7. DR ditentukan sebagai R2, dan operand OP setara dengan 011, nilai 3 ditambahkan ke konten R7, dan hasil dari penambahan ditempatkan di R2. Karena operand hanya tiga bit dibandingkan dari 16 bit penuh, sisa 13 bit harus diisi dengan menggunakan jika tidak zero-fill atau sign extension seperti yang didiskusikan dalam Bab 5. Dalam ISA ini, zero-fill ditetapkan untuk operand. Instruction format dalam Gambar 10-14(c) , berbeda dengan dua format yang lain, tidak mengubah file register manapun atau isi memori. Malahan, hal tersebut memengaruhi urutan dimana instruksi diambil dari memori. Lokasi sebuah instruksi yang akan diambil ditentukan oleh program counter yang ditunjuk oleh PC. Biasanya, program counter tersebut mengambil instruksi-instruksi dari alamat-alamat sekuensial dalam memori bersamaan saat program dijalankan. Tetapi kebanyakan tenaga dari sebuah prosessor datang dari kemampuannya untuk mengubah urutan eksekusi instruksi-instruksi berdasarkan hasil dari proses yang ditampilkan. Perubahan-perubahan tersebut dalam urutan instruksi eksekusi didasarkan pada penggunaan instruksi-instruksi yang ditujukan sebagai jump dan branch. Contoh format yang diberikan dalam Gambar 10-14(c) untuk instruksi jump dan branch memiliki sebuah operation code, satu field register SA dan sebuah field alamat terpisah AD. Jika sebuah branch (mungkin berdasarkan konten register yang ditentukan) untuk terjadi, alamat baru dibentuk dengan menambahkan isi PC saat ini dan isi dari field alamat 6 bit, yang mana ditujukan sebagai sebuah address offset yang diperlakukan sebagai nilai sebuah signed 2s complement. Untuk mempertahankan representasi 2s complement, sign extension diterapkan ke alamat 6 bit untuk membentuk sebuah 16 bit offset sebelum penjumlahan. Jika left-most bit dari field alamat AD adalah 1, maka 10 bit ke kirinya diisi dengan 1s untuk memberikan sebuah negative 2s complement offset. Jika leftmost bit dari field alamat adalah 0, maka 10 bit ke kirinya diisi dengan 0s untuk memberikan sebuah positive 2s complement offset. Offset ditambahkan ke isi PC untuk membentuk lokasi di mana instruksi berikutnya akan diambil. Sebagai contoh, dengan nilai PC setara dengan 55, andaikan bahwa sebuah branch akan terjadi ke lokasi 35 jika isi dari R6 setara dengan nol. Opcode akan menentukan sebuah branch dalam instruksi nol. SA akan ditentukan sebagai R6, dan AD akan menjadi 6 bit, representasi 2s complement dari -20. Jika R6 adalah nol, maka isi PC menjadi 55 + (-20) = 35 dan instruksi selanjutnya akan diambil dari alamat 35. Sebaliknya, jika R6 adalah nonzero, PC akan menghitung sampai 56 dan instruksi berikutnya akan diambil dari alamat 56. Metode pengalamatan ini hanya dapat mengalokasikan alamat-alamat cabang

dengan jangkauan yang kecil, yakni dibawah dan diatas nilai PC. Dengan jump, jangkauan alamat menjadi lebih luas karena menggunakan isi register 16-bit yang tidak tertanda sebagai targetnya. Bab ini akan membahas tiga bentuk pengalamatan seperti yang ditunjukkan pada Gambar 10-14. Bentuk-bentuk lainnya akan dibahas secara lebih rinci di bab 11. Spesifikasi Instruksi Spesifikasi instruksi menerangkan setiap instruksi yang dapat dieksekusi oleh sistem. Untuk setiap instruksi, diberikan opcode dengan nama lainnya mnemonic, yang dapat digunakan sebagai representasi simbolik dari opcode. Bersama representasi instruksi-instruksi tambahan lainnya, mneumonic digunakan untuk mewakili notasi yang digunakan dalam merinci semua instruksi secara simbolik. Representasi simbolik ini kemudian diterjemahkan dengan assembler kedalam bentuk biner. Pengeksekusian instruksi juga memberikan deskripsi operasi yang dikerjakan, termasuk bit-bit status yang terpengaruh dengan instruksi tadi.Deskripsi ini dapat berupa teks atau menggunakan notasi seperti pada transfer register. Pada table 10-8, diberikan spesifikasi instruksi yang biasa digunakan pada komputer sederhana . Digunakan notasi transfer register (diberikan di bab sebelumnya) untuk menjelaskan (471) operasi yang sedang dikerjakan serta bit-bit status yang valid untuk setiap instruksi yang didapat. operasi yang dilakukan, dan bit-bit status yang valid untuk tiap instruksi pun ditunjukkan. Untuk menggambarkan instruksi, anggap kita memiliki sebuah memori dengan 16 bit per kata yang instruksinya memakai salah satu format di Figure 10-14. Instruksi-instruksi dan data, dalam bentuk biner, ditempatkan dalam memori seperti yang ditunjukkan pada Table 10-9. Informasi tersimpan ini merepresentasikan keempat instruksi yang menggambarkan format-format berbeda tersebut. Di alamat 25, kita memiliki instruksi format register yang menentukan sebuah operasi untuk mensubtraksi R3 dari R2 dan menyimpan selisihnya ke R1. Operasi ini direpresentasikan secara simbolis pada kolom paling kanan dari Table 10-9. Perlu dicatat bahwa opcode 7-bit untuk subtrasksi adalah 0000101, atau angka desimal 5. Bit-bit lainnya dari instruksi menunjukkan ketiga register: 001 menentukan register tujuan sebagai R1, 010 menentukan register asal A sebagai R2, dan 011 menentukan register asal B sebagai R3. Di dalam lokasi memori 35 terdapat sebuah instruksi format register untuk menyimpan konten dari R5 dalam lokasi memori yang ditentukankan oleh R4. Opcodenya adalah 0100000, atau desimal 32, dan operasinya secara simbolis juga terdapat di kolom paling kanan dari tabel. Anggap R4 bernilai 70 dan R5 bernilai 80. Maka eksekusi instruksi ini akan menyimpan nilai 80 di lokasi memori 70, menggantikan nilai original yang tadinya adalah 192. Di alamat 45, muncul sebuah instruksi format yang menambahkan 3 ke nilai R7 dan memuat hasilnya ke R2. Opcode untuk instruksi ini adalah 66, dan operand yang akan ditambahkan adalah nilai 3 (011) dalam bidang OP, ketiga bit terakhir dari instruksi. Di lokasi 5, instruksi cabang yang telah dideskripsikan sebelumnya muncul. Opcode untuk instruksi ini adalah 96, dan register asal A dispesifikasikan sebagai R6. Perhatikan bahwa AD (kiri) memuat 101 dan AD (kanan) memuat 100. Setelah menggabungkan keduanya

dan menerapkan sign extension, kita dapatkan 1111111111101100, yang merepresentasikan -20 dalam komplemen keduanya. Jika register R6 adalah nol, maka -20 ditambahkan ke PC untuk menghasilkan 35. Jika register R6 adalah selain nol, maka nilai PC yang baru adalah 56. Perlu dicatat bahwa kita telah mengasumsikan penambahan ke nilai PC terjadi sebelum PC di-increment seperti yang terjadi di komputer tunggal. Meskipun begitu, dalam sistem nyata, kadang-kadang PC telah di-increment untuk menunjuk instruksi selanjutnya dalam memori. Jika hal tersebut terjadi, nilai yang tersimpan dalam AD pun perlu disesuaikan untuk mendapatkan alamat cabang yang tepat. Penempatan instruksi-instruksi dalam memori seperti yang ditunjukkan dalam Table 10-9 agak tidak dibatasi. Pada kebanyakan komputer, panjang kata adalah dari 32 sampai 64 bit, sehingga formatformat instruksi dapat menyimpan immediate operand dan alamat-alamat yang lebih banyak daripada seharusnya. Tergantung pada arsitektur komputernya, sebagian dari format instruksi dapat menempati dua atau lebih memory word berturut-turut. Selain itu, jumlah registernya juga lebih besar, sehingga bidang register dalam instruksi pastilah memuat bit yang lebih banyak. Pada titik ini, sangatlah vital unutk mengenali perbedaan antara operasi komputer dan mikrooperasi hardware. Sebuah operasi ditentukan oleh sebuah instruksi yang disimpan dalam bentuk biner pada memori komputer. Unit kontrol pada komputer menggunakan alamat yang disediakan program counter untuk mendapatkan instruksi dari memori. Intruksi tersebut lalu mendekode bit opcode dan informasi lain dalam instruksi untuk melaksanakan mikrooperasi yang diperlukan untuk eksekusi instruksi. Sementara itu, sebuah mikrooperasi ditentukan oleh bit-bit dalam sebuah control word dalam hardware yang didekode oleh hardware komputer untuk melaksanakan mikrooperasi.

Eksekusi dari sebuah operasi komputer seringkali memerlukan sebuah rangkaian atau program dari banyak mikrooperasi, dan bukannya sebuah mikrooperasi tunggal.

10-8 Single Cycle Hardwired Control Diagram blok untuk sebuah komputer yang memiliki hardwired control unit dan yang menjemput dan mengeksekusi sebuah instruksi dalam satu siklus clock ditunjukkan pada Figure 10-15. Kita menyebut komputer ini sebagai komputer siklus tunggal. Sumber penyimpanan, format instruksi, dan spesifikasi instruksi untuk computer telah dijelaskan pada bab sebelumnya. Datapath yang ditunjukkan sama seperti pada Figure 10-11 dengan m = 3 dan n = 16. Memori data M terlampir ke Address out, Data out, dan Data in oleh koneksi-koneksi ke datapath. Memori data M tersebut memiliki sinyal kontrol tunggal MW yang bernilai 1 untuk menulis memori, dan 0 jika tidak. Unit kontrol tampak pada bagian kiri Figure 10.15. Meskipun biasanya tidak dianggap sebagai bagian dari unit kontrol, memori instruksi bersama dengan address input dan instruction output-nya turut diperlihatkan dengan unit kontrol demi kenyamanan. Kita tidak menulis memori instruksi, namun secara teori membuatnya kombinasional dan bukannya sebuah komponen sekuensial. Seperti yang telah didiskusikan sebelumnya, PC menyediakan alamat instruksi ke memori instruksi, dan output instruksi dari memori instruksi dikirim ke control logic, yang dalam hal ini adalah instruction decoder. Keluaran dari memori instruksi juga menuju Extend and Zero fill, yang menyediakan alamat offset ke PC dan input konstan, Constant in, masing-masing ke datapath. Ekstensi menambahkan bit paling kiri dari address offset field 6-bit AD ke sebelah kiri AD, mempertahankan representasi komplemen keduanya.

Zero fill menambahkan 13 nol kesebelah kiri bidang operand (OP) dari instruksi untuk membentuk 16-bit unsigned operand yang digunakan di datapath. Sebagai contoh, nilai operand 110 menjadi 0000000000000110 atau +6. PC diperbarui pada tiap siklus clock. Tingkah laku PC, yang merupkan sebuah register kompleks, ditentukan oleh opcode N dan Z, karena C dan V tidak digunakan dalam desain unit kontrol ini. Jika sebuah loncatan terjadi, nilai PC yang baru menjadi nilai di Bus A. Jika sebuah cabang diambil, maka nilai PC yang baru adalah jumlah dari nilai PC sebelumnya dan sign-extended address offset, dimana dalam komplemen keduanya bisa jadi positif ataupun negatif. JIka tidak, PC di-increment oleh 1. Sebuah loncatan terjadi untuk bit 13 dalam instruksi sama dengan 1. Untuk bit 13 sama dengan 0, sebuah cabang kondisional terjadi. Status bit yang merupakan kondisi untuk cabang dipilih oleh bit 9 dari instruksi. Untuk bit 9 sama dengan 1, N terpilih dan untuk bit 9 sama dengan 0, Z terpilih.

Semua bagian dari komputer yang sekuensial diperlihatkan dalam warna biru. Perlu dicatat bahwa tidak ada logika sekuensial dalam bagian kontrol selain PC. Maka, selain menyediakan alamat untuk memori instruksi, dalam hal ini control logic adalah sesuatu yang kombinasional. Fakta tersebut, dikombinasikan dengan struktur datapath dan penggunaan instruksi dan memori data yang terpisah, memungkinkan komputer siklus tunggal untuk mendapatkan dan mengeksekusi sebuah instruksi dari memori instruksi, semuanya dalam satu siklus clock tunggal.

Instruction Decoder Instruction decoder adalah sebuah sirkuit kombinasional yang menyediakan semua control word untuk datapath, berdasarkan nilai dari bidang instruksi. Sekumpulan bidang control word dapt diperoleh secara langsung dari konten bidang dalam instruksi . Pada Figure 10-16, dapat kita lihat bahwa bidang control word DA, AA, dan BA masing-masing sama dengan bidang instruksi DR, SA, dan SB. Selain itu, bidang kontrol BC untuk pemilihan branch condition status bits diambil langsung dari bit terakhir di Opcode. Bidang-bidang control word lainnya memuat datapath dan bit kontrol memori data MB, MD, RW, dan MW. Terdapat dua bit tambahan

untuk kontrol dari PC, PL, dan JB. Jika akan ada sebuah lompatan atau cabang, PL =1, memuat PC. Untuk PL = 0, PC di-increment. Dengan PL = 1, JB =1 meminta sebuah lompatan, dan JB = 0 meminta cabang kondisional. Sebagian dari bidang control word bit tunggal memerlukan logika untuk implementasinya. Untuk merancang logika ini, kita bagi bermacam-macam instruksi yang mungkin untuk komputer sederhana ke dalam berbagai tipe fungsi lalu menempatkan ketiga bit pertama dari opcode ke berbagai macam tipe. Tipe fungsi instruksi pada Table 10-10 didasarkan pada penggunaan hardware resource spesifik pada komputer, seperti MUX B, unit Fungsi, file Register, memori Data, dan PC. Sebagai contoh, tipe fungsi yang pertama menggunakan ALU, menetapkan MUX B untuk menggunakan sumber file register, mengatur MUX D untuk menggunakan output unit Fungsi, dan menulis ke file Register. Tipe fungsi instruksi lainnya didefinisikan sebagai macam-macam kombinasi penggunaan dari input yang konstan dan bukannya register. Memori data membaca dan menulis, dan manipulasi PC untuk jump dan branch. Dengan melihat hubungan antara tipe fungsi instruksi nilai control word yang dibutuhkan untuk implementasinya, bit 15 sampai 13 dan bit 9 ditempatkan seperti pada Table 10-10. Penempatan ini merupakan usaha untuk memperkecil logika yang diperlukan untuk menjalankan dekoder. Untuk melakukan perancangan dekoder, nilai untuk semua bidang bit tunggal dalam control word ditentukan dari tipe fungsi dan dimasukkan ke Table 10-10. Perhatikan bahwa ada sejumlah masukan dont care (X). Anggap Tabel 10-10 sebagai tabel kebenaran dan mengoptimisasi fungsi logika, logika dari keluaran bit tungal dari dekoder instruksi dalam hasil Figure 10-16. Dalam optimisasi, keempat kode yang belum terpakai untuk bit 15, 14, 13 dan 9 diasumsikan memiliki nilai X untuk semua bidang bit tunggal. Hal ini mengimplikasikan bahwa salah satu dari kode-kode ini terjadi dalam sebuah program, efeknya belum diketahui. Desain yang lebih konservatif menetapkan RW, MW dan PL sebagai nol bagi keempat kode tersebut untuk memastikan bahwa keadaan sumber penyimpanan tidak berubah untuk

kode-kode tak terpakai. Optimasi tersebut menghasilkan logika di Figure 10-16 untuk pengimplementasian MB, MD, RW, MW, PL, dan JB. Logika yang tersisa di dekoder berhubungan dengan bidang FS. Untuk semuanya kecuali conditional branch dan unconditional jump instructions, bit 9 sampai 12 diberikan langsung untuk membentuk bidang FS. Selama operasi conditional branch, seperti Branch on Zero, nilai dalam register sumber A harus melewati ALU sehingga bit-bit status N dan Z dapat dievaluasi. Hal ini mensyaratkan FS = 0000. Meskipun begitu, penggunaan bit 9 untuk pemilihan bit status bagi conditional branches, seringkali mensyaratkan bahwa bit 9 yang mengontrol bit paling kanan dari FS harus bernilai 1. Kontradiksi dari nilai di antara bit 9 dan FS diselesaikan dengan menambahkan sebuah enable pada bit 9 yang memaksa FS0 menjadi nol tiap kali PL = 1 seperti yang tertera pada Figure 10-16.

Instruksi Contoh dan Program Enam instruksi untuk komputer siklus tunggal telah terdaftar pada Table 10-11. Nama simbolis yang berhubungan dengan instruksi berguna untuk mendaftar program dalam format simbolis dan bukannya dalam bentuk biner. Karena pentingnya decoding instruksi, enam kolom paling kanan di tabel menunjukkan nilai sinyal kontrol kritis untuk tiap instruksi, berdasarkan nilai yang didapat menggunakan logika di Figure 10-16. Sekarang anggap bahwa instruksi yang pertama, "Add Immediate" (ADI), berada pada keluaran memori instruksi yang ditunjukkan di Figure 10-15. Maka, berdasarkan pada tiga bit pertama dari opcode, 100, keluaran dari dekoder instruksi memiliki nilai-nilai MB = 1, MD = 0, RW = 1, dan MW = 0.

Tiga bit terakhir dari instruksi, OP2.0, diperluas menjadi 16 bit dengan zero fill. Hal ini ditunjukkan dalam sebuah pernyataan transfer register oleh zf. Karena MB adalah 1, nilai dari zero fill ini ditempatkan di Bus B. Dengan MD = 0, keluaran unit fungsi diseleksi, dan karena empat bit terakhir dari opcode, 0010 menentukan bidang FS, operasinya adalah A+B. Jadi nilai berisi nol pada Bus B ditambah ke isi register SA, dengan hasil dikeluarkan pada Bus BD. Karen RW = 1, nilai pada Bus D ditulis ke register DR. Akhirnya, dengan MW = 0, tidak ada penulisan ke memori terjadi. Keseluruhan operasi terjadi di satu siklus clock. Pada awal siklus selanjutnya, register tujuan ditulis dan karena PL = 0, PC di-increment ke poin setelah instruksi. Instruksi kedua, LD, adalah sebuah muatan dari memori dengan opcode 0010000. Tiga bit pertama dari opcode ini, 001, memberi nilai kendali MD = 1, RW = 1, dan MW = 0. Nilai-nilai ini, ditambah bidang sumber register SA dan bidang tujuan register DR, secara penuh menentukan instruksi ini, yang memuat isi-isi dari alamat memori yang ditentukan oleh register SA ke register DR. Karena PL = 0, PC diincrement. Catat bahwa nilai-nilai dari JB dan BC diabaikan, karena ini bukan sebuah lompatan atau instruksi cabang. Instruksi ketiga, ST, menyimpan isi register di dalam memori. Tiga bit pertama dari kode operasional, 010, memberikan nilai sinyal kontrol MB =0, RW =0, dan MW=1. MW=1 menyebabkan sebuah memori menulis operasi, dengan alamat dan data dari berkas register. RW=0 menghalangi berkas register agar bisa ditulisi. Alamat untuk memori tulisan berasal dari register terpilih bidang SA, dan data dari memori tulisan berasal dari register terpilih bidang SB, selama MB=0. Bagian DR, walaupun ada, tidak digunakan karena register tidak digunakan dalam penulisan.

Karena komputer ini sudah memuat dan menyimpan instruksi dan tidak menggabungkan pemuatan dan

penyimpanan operan data dengan operasi lain, ini seperti memiliki arsitektur load/store. Kegunaan arsitektur semacam ini menyederhanakan eksekusi intruksi. Dua instruksi berikutnya menggunakan unit Function dan menulis ke file register tanpa operan sebelumnya. Empat bit terakhir dari opcode, nilai untuk bidang FS dari control word, menspesifikasikan operasi unit Function. Untuk dua instruksi ini, hanya satu register sumber, R[SA] untuk NOT dan R[SB] untuk shift kiri, dan termasuk register tujuan. Instruksi terakhir adalah cabang kondisional dan memanipulasi nilai PC. Ini memiliki PL = 1, menyebabkan penghitung program dimuati bukan di-increment, dan JB = 0, menyebabkan cabang kondisional bukan sebuah jump. Karena BC = 0, register R[SA] diuji untuk nilai nol. Jika R[SA] = 0, nilai PC menjadi PC + se AD, di mana se kepanjangan dari sign extend. Jika tidak, PC ter-increment. Untuk instruksi ini, bidang DR dan SB menjadi 6 bit pengalamatan bidang AD, yang sign extended dan ditambahkan ke PC. Untuk mendemonstrasikan bagaimana instruksi semacam ini dapat digunakan dalam sebuah program sederhana, lihat ekspresi aritmatik 83 (2 + 3). Program berikut menampilkan komputasi ini, dengan mengasumsikan bahwa register R3 berisi 248, lokasi 248 dalam memori data berisi 2, lokasi 249 berisi 83, dan hasilnya ditaruh di lokasi 250: LD ADI NOT INC INC LD ADD INC ST R1, R3 R1, R1, 3 R1, R1 R1, R1 R3, R3 R2, R3 R2, R2, R1 Memuati R1 dengan isi lokasi 248 di memori (R1 = 2) Menambahkan 3 ke R1 (R1 = 5) Menambahkan R1 Increment R1 (R1 = -5) Increment isi R3 (R3 = 249) Memuati R2 dengan isi lokasi 249 di memori (R2 = 83) Menambah isi R1 ke isi R2 (R2 = 78)

R3, R3 Increment isi R3 (R3 = 250) R3, R2 Menyimpan R2 di memori lokasi 250 (M[250] = 78)

Pengurangan dalam kasus ini dilakukan dengan mengambil komplemennya 2 dari (2 + 3) dan menambahkannya ke 83, operasi pengurangan SUB dapat digunakan juga. Jika bidang register tidak digunakan dalam mengeksekusi sebuah intruksi, nilai simbolisnya dihilangkan. Nilai simbolis dari instruksi jenis-register, ketika yang terakhir muncul, adalah berurutan DR, SA, dan SB. Untuk jenis yang segera/dekat, bidangnya berurutan DR, SA, dan OP. Untuk menyimpan program ini di memori instruksi, perlu mengkonversi semua nama simbol dan nomor desimal yang tadinya kode biner yang sesuai dengan mereka. Masalah Komputer Single-Cycle

Walaupun mungkin ada saat di mana pewaktuan komputer single-cycle dan strategi konntrol itu berguna, ini memiliki kekurangan. Salah satu kekurangan adalah dalam hal menampilkan operasi kompleks. Sebagai contoh, anggap bahwa sebuah instruksi dimaksudkan untuk mengeksekusi perkalian biner tanpa tanda (unsigned) menggunakan algoritma add-and-shift. Dengan datapath yang diberikan, ini tidak dapat diselesaikan dengan sebuah mikrooperasi yang bisa dieksekusi dalam siklus clock tunggal. Maka, sebuah organisasi kontrol yang menyediakan siklus clock jamak untuk eksekusi diperlukan. Juga, komputer single-cycle memiliki dua memori 16 bit yang berbeda. Satu untuk instruksi dan satu untuk data. Untuk komputer sederhana dengan instruksi dan data dalam memori 16 bit yang sama, dua akses pembacaan memori dibutuhkan untuk mengeksekusi sebuah instruksi yang memuati sebuah data word dari memori ke register. Akses pertama memperoleh instruksi, dan akses kedua, jika dibutuhkan, membaca dan menulis data word. Karena dua alamat berbeda harus diterapkan ke input alamat memori, sekurang-kurangnya dua siklus clock, satu untuk tiap alamat, dibutuhkan untuk mendapatkan dan mengeksekusi instruksi. Ini juga bisa diselesaikan dengan mudah dengan kontrol siklus-jamak. Terakhir, komputer single-cycle memiliki batas lebih rendah pada periode clock berdasarkan sebuah keadaan terburuk path tunda yang panjang. Path ini ditunjukkan dalam warna biru dalam diagram sederhana Gambar 10-17. Total tunda sepanjang path adalah 17 ns. Ini membatasi frekuensi sampai 58,8 MHz, di mana, walaupun ini mungkin sesuai untuk beberapa aplikasi,

tapi terlalu lambat untuk CPU komputer modern. Untuk mendapatkan frekuensi clock yang lebih tinggi, begitu pula dengan tunda komponen pada path atau nomor komponen tidak bisa dikurangi. Jika tunda komponen tidak bisa dikurangi, mengurangi nomor komponen di path adalah hanya alternatif. Di bab 12, pipelining dari datapath mengurangi nomor komponen pada path tunda kombinasional yang terpanjang dan mengijinkan frekuensi clock untuk ditingkatkan. Datapath pipeline dan kontrol diberikan pada bab 12, mendemonstrasikan kinerja CPU yang sudah diperbaiki yang dapat diperoleh. 10-9 Kontrol Hardware Multiple-Cycle Untuk mendemonstrasikan kontrol multiple-cycle, kita menggunakan arsitektur komputer sederhana, tetapi memodifikasi datapath, memori, dan kontrol. Tujuan modifikasi itu untuk mendemonstrasikan bagaimana instruksi yang lebih kompleks bisa diimplementasikan dengan menggunakan siklus clock jamak per instruksi. Diagram blok dalam gambar 10-18 menunjukkan modifikasi pada datapath, memori, dan kontrol. Perubahan pada komputer siklus tunggal bisa diamati dengan membandingkan gambar 10-15 dan 10-18. Modifikasi pertama, yang mungkin bisa, tapi tidak esensial, terhadap operasi siklus jamak, menggantikan memori instruksi terpisah dan memori data dalam Gambar 10-15 dengan memori tunggal M di Gambar 10-18. Untuk mengambil instruksi, PC adalah sumber alamat untuk memori, dan untuk mengambil data. Bus A adalah sumber alamat. Pada input alamat ke memori, multiplexer MUX M memilih antara kedua sumber alamat ini. MUX M membutuhkan sinyal kontrol additional, MM, yang mana ditambahkan ke format control word. Karena instruksi dari Memori M dibutuhkan di unit kontrol, sebuah path ditambahkan dari outputnya ke register instruksi IR pada unit control. Saat mnegeksekusi sebuah instruksi melalui siklus clock jamak, data dibangkitkan selama siklus saat ini seringnya dibutuhkan pada siklus sesudahnya. Data ini bisa disimpan sementara pada sebuah register dari saat dia dibangkitkan sampai saat dia digunakan. Register digunakan untuk penyimpanan sementara semacam ini selama eksekusi instruksi, biasanya tidak dapat dilihat pengguna (yaitu, tidak sebagai bagian sumber penyimpanan). Modifikasi kedua menyediakan register penyimpanan sementara ini dengan menggandakan nomor register dalam file register. Register 0-7 adalah resources penyimpanan dan register 8 sampai 15 hanya digunakan untuk penyimpan sementara selama eksekusi instruksi, jadi bukan bagian resource penyimpan yang dapat dilihat pengguna. Pengalamatan 16 register membutuhkan 4 bit, dan menjadi lebih kompleks, karena pengalamatan dari delapan register pertama harus dikontrol dari unit kontrol. Ini dihandle oleh Logika pengalamatan register pada gambar 10-18 dan dengan memodifikasi bidang DX, AX, dan BX di control word. Detail dari perubahan ini akan didiskusikan kemudian ketika kontrolnya didefinisikan. PC adalah satu-satunya komponen unit kontrol yang ditahan dan ini juga harus dimodifikasi. Selama eksekusi instruksi siklus jamak, PC harus ditahan pada nilai saat itu untuk semua kecuali satu siklus. Untuk menyediakan kemampuan menahan ini, maupun increment dan dua operasi load, PC dimodifikasi untuk dikontrol oleh bidang kontrol 2-bit, PS. Kaena PC dikontrol seluruhnya oleh control word, logika kontrol Branch yang sebelumnya direpresentasikan oleh BC, diserap ke blok Control Logic di Gambar 1018.

Karena siklus jamak komputer yang dimodifikasi, insruksi perlu ditahan di register untuk digunakan selama eksekusinya karena nilainya hampir selalu dibutuhkan untuk lebih daripada siklus pertama saja. Register yang digunakan untuk tujuan ini adalah instruction register IR dalam gambar 10-18. Karena IR memuati hanya ketika sebuah instruksi sedang dibaca dari memori, ia memiliki sinyal load-enable IL yang ditambahkan ke control word. Karena operasi siklus jamak, sirkuit kontrol sekuensial, yang mana dapat menyediakan sebuah sekuen control word untuk mikrooperasi yang digunakan

untuk menginterpretasikan instruksi, dibutuhkan dan mengganti dekoder instruksi. Unit kontrol sekuensial terdiri atas register state Control dan Control logic kombinasional. Logika Control memiliki state, opcode, dan bit status sesuai inputnya dan menghasilkan control word sesuai outputnya. Secara konseptual, control word dibagi ke dalam dua bagian, satu untuk Sequential control, yang menentukan

keadaan selanjutnya dari keseluruhan unit kontrol, dan satu untuk Datapath control, yang mengontrol mokrooperasi yang dieksekusi oleh Datapath dan Memory M seperti ditunjukkan dalam Gambar 10-18. Control word 28 bit yang telah dimodifikasi ditunjukkan dalam Gambar 10-19 dan definisi bidang control word diberikan pada Tabel 10-12 dan 10-13. Pada Tabel 10-12, bidang DX, AX, dan BX mengontrol pemilihan register. Jika MSB dari salah satu bidang ini 0, maka alamat register yang berkaitan DA, AA, atau BA yang ditunjukkan oleh 0 || DR, 0 || SA, dan SB, secara berurutan. Jika MSB dari salah satu bidang ini adalah 1, maka alamat register yang berkaitan adalah isi dari bidang DX, AX, atau BX. Ini

proses seleksi dilakukan oleh alamat logika register, yang mengandung 3 multiplekser, yaitu DA, AA, dan BA, dikontrol oleh MSB dari DX, AX, dan BX, secara berurutan. Tabel 10-12 juga memberikan kode nilai untuk daerah MM, yang menentukan apakah alamat yang keluar atau server PC sebagai memori alamat M. Sisa bidang pada tabel 10-12, MBDB,RW, dan MW memiliki fungsi yang sama untuk siklus tunggal komputer. Dalam sirkuit kontrol sekuensial, bidang kontrol register punya satu set bidang, sama seperti satu set film-flop dalam rangkaian sekuensial lainnya. Pada tingkat diskusi kita, kita anggap setiap bidang memiliki nama abstrak yang dapat digunakan kedua bidang dan pada nilai bidang selanjutmya. Dalam proses desain, tugas sebuah bidang perlu dibuat dari bidang abstrak. Berdasarkan tabel 10-13, bidang NS dalam kontrol kata menyediakan bidang selanjutnya untuk bidang kontrol register. Kita dapat menetapkan 4 bit untuk kode bidang, tapi ini dapat dimodifikasi berdasarkan kebutuhan nomor bidang yang diperlukan dan tugas bidang yang digunakan dalam desain. Setiap bidang dapat di anggap sebagai integral terhadap kontrol dan sirkuit sekuensial dana bukan bagian dari kontrol kata, tapi itu akan

muncul di tabel bidang kontrol dalam banyak kasus. Daerah PS 2-bit mengontrol program hitung, PC. Dalam pemberian siklus clock PC memiliki bidang (00), kenaikan bidang oleh 1 (01), keadaan muatan PC dengan perluasan-tanda AD (10), atau tanpa keadaan muatan konten R [SA] (11). Pada akhirnya, instruksi register hanya memuat sekali selama eksekusi sebuah instruksi. Jadi, dalam setiap siklus yang diberikan, salah satu dari instruksi baru memuat (IL=1) atau instruksi tetap tidak diubah (IL =0).

Desain Kontrol Sekuensial Desain sirkuit kontrol sekuensial dapat diselesaikan menggunakan teknik dari Bab 6 dan Bab 8. Tetapi, membandingkan terhadap contoh disana, maupun untuk komparatif komputer simpel, kontronya cukup kompleks. Asumsikan disana ada 4 bidang variabel, kombinasi kontrol logika memiliki 15 variabel masukan dan 28 variabel keluaran. Ternyata membuat Table bidang sirkuit ini tidak terlalu sulit untuk dibuat, tapi desain manual dari detail logikanya sangat kompleks, membuat penggunaan PLA atau sintesis logika lebih banyak pilihan. Konsekuensinya, kita fokus pada pembuatan tabel bidang daripada implementasi detail logika. Kita mulai dengan membuat sebuah grafik ASM yang merepresentasikan instruksi yang dapat diimplementasikan dengan jumlah minimal dari siklus clock. Perluasan grafik ini kemudian dapat

dikembangkan untuk implementasi dari instruksi yang membutuhkan lebih dari jumlah minimum siklus clock. Grafik ASM menyediakan informasi yang diperlukan untuk membuat masukan tabel bidang untuk implementasi kumpulan instruksi. Untuk instruksi membutuhkan akses memori dari data serta untuk instruksi itu sendiri, paling sedikit diperlukan 2 siklus. Itu cocok untuk membagi siklus menjadi 2 langkah pemrosesan: instruksi pengambilan dan instruksi eksekusi. Pada basis bagian ini, grafik ASM untuk kedua siklus instruksi ditunjukkan di gambar 10-20. Instruksi pengambilan terjadi di bidang INF di grafik bagian atas. PC mengandung alamat instruksi di memori M. Alamat ini diaplikasikan ke memori, dan kata dibaca dari memori dimuat ke dalam IR dalam sinyal clock yang berakhir di bidang INF. Sinyal clock yang sama menyebabkan bagian baru menjadi EX0. Dalam bidang EX0, penguraian sandi instruksi dengan menggunakan kotak keputusan vektor besar dan eksekusi seluruh mikrooperasi atau bagian dari instruksi muncul dalam kondisional kotak keluaran. Jika instruksi dapat menyelesaikan bagian EX0, selanjutnya bagian INF menyiapkan untuk diambil pada instruksi berikutnya. Selanjutnya, untuk instruksi

yang tidak mengubah konten PC selama eksekusinya, PC mengalami kenaikan. Jika penambahan bagian dibutuhkan eksekusi instruksi, kondisi selanjutnya adalah EX1. Dalam setiap bidang eksekusi, ada 128 kemungkinan kombinasi masukan yang berbeda, bedasarkan pada kode operasional . Ketika menggunakan status bit, khususunya sekali dalam suatu waktu, keluaran dari kotak keputusan vektor memberikan satu atau banyak kotak pilihan skalar sebagai ilustrasi untuk cabang instruksi di kanan bawah pada gambar 10-20. Selanjutnya, kita mendiskripsikan contoh dari eksekusi instruksi khusus oleh grafik ASM pada Gambar 10-20. Kode operasional (opcode) pertama adalah 0000000 untuk perintah memindahkan A (MOVA). Instruksi ini melibatkan pemindahan simpel dari sumber register A ke register tujuan, selama menetapkan pemindahan register ditunjukkkan dalam bidang EX0 untuk instruksi kode operasional (opcode). Meskipun status bit N dan Z sah, mereka tidak digunakan dalam eksekusi instruksi ini. PC mengalami peningkatan pada pinggir clock akhir bidang EX0, sebuah tindakan terjadi untuk semua cabang dan instruksi dalam grafik ASM. Kode operasional ketiga adalah 0000010 untuk instruksi ADD dengan pemindahan register untuk menunjukkan tambahan. Dalam kasus ini, status bit-bit V,C,N, dan Z adalah sah, meskipun tidak digunakan. Kode operasi kesebelas, 0010000, adalah instruksi muatan (LD), yang menggunakan nilai pada register khusus pada SA untuk alamat dan muatan data kata dari memori M ke register khusus DR. Kode operasi ke duabelas, 0100000, adalah untuk instruksi menyimpan (ST), dimana menyimpan nilai di register SB ke dalam lokasi di memori khusus M oleh alamat yang berasal dari register SA. Kode operasi keempatbelas, 1001100, adalah penambahan dengan segera (ADI), dimana penambahan nilai kosong pada daerah OP, 3 bit paling kanan dari instruksi, ke konten register SA dan menempatkan hasil di register DR. Kode operasional keenambelas, 1100001, adalah instruksi cabang negatif (BRN). Penguraian kode instruksi ini menyebabkan nilai pada register khusus SA lolos melewati unit Fungsi dalam perintah untuk mengevaluasi status bit N dan Z. Kemudian nilai N dan Z diperbanyak kembali ke logika Control. Berdasarkan pada nilai N, cabang mengambil atau tidak mengambil penambaah perluasan alamat AD dari instruksi ke nilai di PC atau penambahan PC, berturut-turut. Ini direpresentasikan oleh kotak keputusan salar untuk N ditunjukkan pada Gambar 10-20.

Dari grafik ASM, tabel bidang untuk kontrol sirkuit sekuensial dapat dibuat seperti yang ditunjukkan pada Tabel 10-14. Tabel bidang diberikan sebagai abstrak nama bidang, dan kode operasional dan status bit sebagai masukan. Dalam kasus status bit, hanya bit itu yang diguakan dalam instruksi spesifik. Dengan menggunakan kombinasi bit dan multipel pola status bit, itu memungkinkan untuk menentukan fungsi dari status bit. Catatan bahwa ada banya masukan pada Tabel 10-14 mengandung Xs, menyimbolkan jangan dipedulikan. Untuk masukan ini, masukan atau sumber tidak digunakan untuk memberikan microoperasi atau bit khusus pada kode yang terdaoat X yang tidak digunakan untuk mengontrol itu. Itu latihan yang berguna untuk menentukan bagaimana setiap masukan pada Tabel 10-14 mengandung, berdasarkan pada Table 10-12, Table 10-13, dan Gambar 1020. Hal itu sangat menarik untuk membandingkan waktu eksekusi instruksi dalam organisasi ini dengan itu untuk siklus tunggal komputer. Setiap instruksi membutuhkan 2 siklus clock untuk mencapai dan eksekusi, membandingkan dengan satu siklus clock untuk siklus tunggal komputer. Karena penundaan path yang sangat panjang dari PC melewati memori instruksi. Instruksi penguraian kode, datapath, dan kontrol cabang rusak oleh register instruksi, periode clock kadang pendek. Meski demikian, dalam kaitan kebutuhan waktu setup untuk menambana flip-flop ke IR dan potensial ketidakseimbangan dalam penundaan untuk variasi Plath memlui sirkuit, seluruh waktu melakukan eksekusi sebuah instruksi dapat lama atau lebih lama pada siklus tunggal komputer. Jadi apa kentungan dari organisasi ini dibandingkan kemampuan untuk sebuah memori tunggal? Dua instruksi selanjutnya akan memberikan jawaban. Instruksi pertama menambahakan muatan register tak langsung (LRI), dengan kode operasional 00100001. Pada instruksi ini, konten register SA alamat sebuah kata dalam memori. Kata

dimana dikenal sebagai alamat tak langsung, kemudian digunakan untuk alamat kata dalam memori yang dibebankan ke register DR. Ini dapat direpresentasikan secara simbol sebagai R[DR] M[M[R[SA]]] Grafik ASM untuk eksekusi instruksi ini ditunjukkan pada Gambar 10-21. Mengikuti instruksi mengambil, bidang menjadi EX0. Dalam bidang ini R[SA] mengalamatkan memori untuk mengandung alamat tidak langsung, dimana kemudian ditempatkan pada register sementara R8. Dalam bidang berikutnya, EX1, akses memori selanjutnya terjadi dengan alamat dari R8. Operand menganding tempat di R[DR] untuk melengkapu operasi, dan peningkatan PC. Kemudian ASM kembali ke bidang INF untuk menangkap instruksi selanjutnya. Kotak keputusan vektor untuk kode operasional diperlukan untuk seluruh bidang, selama dalam bidang yang sama digunakan oleh instruksi lain untuk eksekusi mereka. Jelasnya, dengan dua akses ke memori M, instruksi ini tidak dapat dieksekusi oleh siklus tunggal clock komputer atau menggunakan 2 siklus clock dalam banyak siklus komputer. Juga untuk menghindari gangguan konten register R0 melewati R7 (kecuali untuk R[SA]), kegunaan register R8 untuk penyimpanan sementara hal-hal pokok. Instruksi LRI membutuhkan 3 siklus clock untuk eksekusinya. Untuk menyelesaikan operasi yang sama dalam siklus tunggal komputer membutuhkan 2 instruksi LD, mengambil 2 siklus clock. dalam banyak siklus komputer, dalam 2 instruksi mengambil dana dua data akses, itu akan membutuhkan 2 instruksi LD, tapi akan mengambil 4 siklus clock. jadi instruksi LRI memberikan peningkatan dalam waktu eksekusi kasus akhir.

Dua instruksi final untuk ditambahkan adalah pergeseran perkalian kanan (SRM) dan pergeseran perkalian kiri (SLM), dengan operasional kode 0001101 dan 0001110, berturut -turut. Kedua instruksi itu dapat membagi banyak bagian mikroinstruksi untuk digunakan. SRM mengelompokkan konten itu pada register SA yang akan di geser ke kanan oleh angka dari posisi yang diberkan oleh 3 bit pada daerah OP, dengan hasil penempatan di register DR. Grafik ASM untuk operasi ini (dan untuk SLM) ditunjukkan pada Gambar 10-22. Register R9 menyimpan angka dari posisi bit sisanya untuk di geser, dan melakukan penggeseran di register R8.

Pada awalnya, konten R[SA] yang digeser ditempatkan di R8. Sebagaimana dia dibebankan pada r8, itu dicek untuk melihat jika itu 0 dan penggeseran tidak diperlukan. Demikian juga, jumlah pergeseran akan dibebankan ke R9 akan dicek untuk melihat apabila itu 0, berarti pergeseran itu tidak diperlukan. Jika kasus lain memuaskan, eksekusi instruksi adalah lengkap, dan diagram ASM kembali ke kondisi INF. Sebaliknya, operasi pergeseran kanan akan ditunjukkan ada konten register R8. Pengurangan R9 dan pengetesa untuk melihat jika akan menjadi 0. Jika R9 #0, kemudian ergeseran dan pengurangan akan diulang. Jika R9 =0, lalu konten dari R8 akan digeser oleh angka dari posisi bit khusus oleh OP, kemudian asi ditransfer ke R[DR] untuk melengkapi instruksi eksekusi, dan diagram ASM kembali ke bidang INF. Jika kedua operand dan pergeseran mengandung bukan nol, SRM, termasuk pengambilan, membutuhkan 2s+4 siklus clock, dimana s adalah nomer posisi pergeseran. Daerah siklus clock membutuhkan, termasuk instruksi mengambil, dari 6 ke 18. Jika operasi yang sama diimplemenasikan oleh program menggunakan instruksi pergeseran kanan dengan penambahan dan percabangan, kemudian instruksi 3s+3 akan disarankan menjadi 6s+6 siklus. Peningkatan dalam saran nomer dari siklus clock adalah 4s+2, jadi 6 sampai 30 siklus clock disimpan dalam banyak siklus komputer untuk operand bukan nol dan muatan pergeseran. Juga, kurang dari lima lokasi memori dibutuhkan untuk penyimpanan instruksi SRM, dalam kontras untuk program itu.

Gambar 10-22 :Bagan ASM untuk Instruksi Jamak Shift Kanan

Halaman 490

Tabel 10-5 : Tabel kondisi untuk gambaran instruksi dengan tiga siklus atau lebih.

Pada bagan ASM di Gambar 10-22, kondisi INF dan EX0 (juga EX1) sama dengan yang digunakan pada instruksi dua siklus pada bagan ASM di Gambar 10-20, juga dengan instruksi LRI pada Gambar 10-21. Implementasi operasi jamak shift kiri ditunjukkan pada Gambar 10-22, yang mana berdasarkan opcode, shift kiri R8 menggantikan shift kanannya. Akibatnya, implementasi logika kondisi yang digunakan untuk kedua instruksi ini dapat dipakai bersama-sama. Selain itu, logika yang dipakai dalam mengurutkan kondisi juga dapat dibagi bersama dengan implementasi instruksi SRM dan SLM. Spesifikasi tabel kondisi pada Tabel 10-15 didapatkan dari bagan ASM pada Gambar 10-22; Tabel 10-12 dan 10-13. Kode-kode didapatkan dari transfer register dan pengurutannya dideskripsikan dalam komponen-komponen pada sisi kanan dengan cara yang sama seperti pada Tabel 10-15. Implementasi dari instruksi LRI dan SRM menggambarkan fleksibilitas yang diperoleh dengan siklus kontrol jamak. Implementasi dari instruksi lainnya akan dieksplorasi lebih lanjut pada akhir bab ini. 10-10: Rangkuman Bagian pertama bab ini menjelaskan konsep datapath yang digunakan untuk memproses informasi dalam sistem digital. Komponen-komponen datapath terdiri atas file register, bus, Arithmetic Logic Units (ALU) dan shifter. Datapath berfungsi mengatur operasi mikro yang kemudian diorganisir secara teratur oleh suatu sandi kontrol. Konsep-konsep ini adalah konsep awal datapath, yang menjadi dasar dalam menjelajahi komputer. Pada bagian kedua, dikenalkan desain kontrol untuk sistem terprogram dengan menguji dua implementasi basic control unit yang berbeda untuk arsitektur komputer sederhana. Dikenalkan konsep arsitektur kumpulan instruksi dan bentuk instruksi terdefinisi serta operasi untuk komputer sederhana. Komputer ini mampu mengeksekusi instruksi apapun dalam satu siklus clock. Di samping memiliki pencacah program serta logikanya, Control Unit komputer ini juga memiliki kombinasi sirkuit decoder. Kekurangan dari komputer sederhana dengan satu siklus yaitu memiliki batasan dalam mengeksekusi instruksi yang rumit, masalah interface dengan memori tunggal, serta frekuensi clock yang relatif rendah. Dua masalah pertama dapat diatasi dengan menguji komputer siklus jamak yang menggunakan memori tunggal dan dan implementasi instruksi dengan dua fase, perolehan instruksi dan eksekusinya. Masalah siklus clock panjang akan dibahas pada bab 12, dimana akan dikenalkan pipelined datapath beserta kontrolnya. REFERENCES 1. Mano, M.M. (1998) Computer Engineering: Hardware Design. Englewood Cliffs, NJ: Prentice Hall. 2. Mano, M. M. (1993) Computer System Architecture,3rd edition. Englewood Cliffs, NY: Prentice Hall. 3. Patterson, D. A. & J.L. Hennesy (1998) Computer Organization and Design: The Hardware/Software Interface, 2nd edition. San Francisco, CA: Morgan Kaufmann.

4. Hennessy, J. L. & D. A. Patterson (1996) Computer Architecture: A Quantitative Approach, 2nd edition. San Francisco, CA: Morgan Kaufmann.

SOAL-SOAL Soal dengan tanda tambah (+) memiliki tingkat pengerjaan yang lebih sulit dan soal dengan tanda bintang (*) memiliki pemecahan yang dapat dilihat di situs Companion. 10-1. Datapath yang serupa dengan yang ditunjukkan pada Gambar 10-1 memiliki 128 register. Berapa banyak garis seleksi yang diperlukan untuk setiap multiplexer dan decoder-nya? 10-2. *Diberikan ALU 8-bit dengan keluaran F 7 melalui F0 dan carrier C8 dan C7. Gambarkan sirkuit logika yang menghasilkan sinyal untuk 4 bit status N (sign), Z (zero), V (overflow) dan C (carry). 10-3. * Buatlah desain sirkuit aritmatika dengan variabel seleksi S1 dan S0, serta dua masukan data n-bit A dan B. Sirkuit ini menghasilkan delapan operasi aritmatika dengan carry Cin.. S1 0 0 1 1 S0 Cin = 0 0 (penjumlahan) 1 0 (pengurangan 1) (komplemen 1) 1 Cin = 0 (pengurangan A-B) (pengurangan B-A) (penjumlahan dengan 1) (komplemen 2)

Gambarlah diagram logika untuk dua bit signifikan terkecil dari sirkuit tersebut.

10-4. *Buatlah desain sirkuit aritmatika 4 bit dengan variabel seleksi S1 dan S0, yang menghasilkan operasi aritmatika sebagai berikut: S1 0 0 1 1 S0 Cin = 0 0 (penjumlahan) 1 (transfer) (komplemen) 0 1 Cin = 0 (penjumlahan dengan 1) (negasi) (pengurangan)

Gambarlah diagram logika untuk kondisi satu bit-nya. 10-5. Masukan X dan Y dari setiap full adder dalam suatu sirkuit aritmatika memiliki logika digital yang berupa fungsi Boolean.

S adalah variabel seleksi, Cin adalah masukan carry dan Ai, Bi adalah masukan untuk tahap i. a) Gambarlah diagram logika untuk sirkuit 4 bit-nya, dengan menggunakan full adder dan multiplexer b) Tentukan operasi aritmatika yang dikerjakan pada setiap kombinasi S dan Cin: 00, 01, 10 dan 11. 10-6: *Buatlah desain sirkuit digital satu bit yang mengerjakan empat operasi logika, yakni exclusive-OR, exclusive-NOR, NOR dan NAND pada operan register A dan B dan hasilnya dimasukkan ke register A. Gunakan dua variabel seleksi. a) Dengan Peta Karnaugh, buatlah desain logika minimum untuk tahap pertama dan diagram logikanya. b) Ulangi (a), cobalah penugasan kode seleksi yang berbeda pada keempat operasi tersebut untuk melihat apakah logika kondisinya dapat disederhanakan. 10-7. +Buatlah desain ALU yang dapat mengerjakan operasi operasi dibawah ini: Desain yang telah anda buat adalah diagram logika satu kondisi pada ALU. Desain anda hanya boleh memiliki satu carry line antar tahap dan tiga bit seleksi. Gunakan program penyederhanaan logika untuk memperoleh logika yang lebih sederhana. 10-8. *Carilah keluaran Y pada barrel-shifter 4 bit di Gambar 10-9 untuk setiap pola bit yang diaplikasikan pada S1, S0, D3, D2, D1, dan D0. a) 000101 b) 010011 c) 101010 d) 111100

10-9. Tentukan sandi kontrol 16-bit yang harus diaplikasikan pada datapath di Gambar 10-11 untuk mengimplementasikan setiap operasi mikro berikut ini : a) b) c) d) e) f) g) h) R0 R1 + R7 R7 0 R6 s1 R6 R3 srR4 R1 R7 + 1 R2 R4 Konstanta masuk R1 R2 R3 R5 Data masuk

10-10. Jika diberikan 16 bit kata berikut untuk datapath pada gambar 10-11, tentukan (a) mikrooperasi yang dieksekusi, dan (b) perubahan isi register untuk setiap kata kontrol (dengan mengasumsi bahwa register adalah 8-bit register, dan sebelum pengeksekusian kata kontrol, register-register tersebut mengandung nomornya masing-masing (contoh: register R5 mengandung angka 05 dalam hexadesimal)). Asumsikan bahwa Konstanta bernilai 6 dan Data bernilai 1B keduanya dalam heksadesimal. (a) 101 100 101 0 1000 0 1 (b) 110 010 100 0 0101 0 1 (c) 101 110 000 0 1100 0 1 (d) 101 000 000 0 0000 0 1 (e) 100 100 000 1 1101 0 1 (f) 011 000 000 0 0000 1 1

10-11. Jika diberikan urutan dari 16 kata kontrol dibawah ini untuk datapath pada gambar 10-11 dan ASCII awal kode karakter adalah 8 bit register, simulasikan datapath untuk menentukan karakter alfanumerik dalam register setelah pengeksekusian urutan. Hasilnya ditampilkan dalam kata acak, apakah itu? 011 011 001 0 0010 0 1 100 100 001 0 1001 0 1 101 101 001 0 1010 0 1 001 001 000 0 1011 0 1 001 001 000 0 0001 0 1 110 110 001 0 0101 0 1 111 111 001 0 1010 0 1 001 111 000 0 0000 0 1 R0 R1 R2 R3 R4 R5 R6 R7 00000000 00100000 01000100 01000111 01010100 01001100 01000001 01001001

10-12. Datapath yang memiliki 5 komponen utama, A hingga E, terhubung pada sebuah loop dari register file ke register file yang sama pada gambar 10-17. Delay maksimal dari masing masing komponen adalah A, 2 ns; B, 1 ns; C, 3 ns; D, 4 ns; E, 5 ns. (a) Berapakah frekuensi clock maksimal yang dapat digunakan untuk datapath? (b) Datapath akan diganti dengan datapath yang disalurkan menggunakan 3 tahapan. Bagaimana seharusnya komponen dikombinasikan menjadi tahapan , dan berapa frekuensi clock maksimal yang diperoleh? (c) Ulangi (b) untuk 4 tahapan saluran. 10-13. Sebuah komputer memiliki 32 bit instruksi kata yang dibagi menjadi bidang seperti berikut: opcode, 6 bit; 2 register bidang, masing-masing 6 bit; dan 1 immediate operand/register bidang, 14 bit. (a) Berapakah operasi yang dapat ditentukan? (b) Berapa register yang dapat dialamatkan? (c) Berapa rentang immediate operand yang tidak tertandai yang dapat disediakan?

(d) Berapa rentang immediate operand yang tertandai yang dapat disediakan, jika bit ke-13 adalah bit penanda?

10-14. Sebuah komputer digital memiliki sebuah unit memori dengan 32 bit instruksi dan sebuah register file berisi 32 register. Set instruksi terdiri dari 110 operasi yang berbeda. Hanya ada satu format instruksi yang memiliki sebuah bagian opcode, sebuah alamat file register, dan sebuah bagian immediate operand. Setiap instruksi disimpan dalam 1 kata memori. (a) Berapa jumlah bit yang diperlukan untuk bagian opcode dari instruksi? (b) Berapa jumlah bit yang tersisa untuk bagian immediate dari instruksi? (c) Jika immediate operand digunakan sebagai alamat tak bertanda untuk memori, berapa jumlah kata maksimal yang dapat dialamatkan pada memori? (d) Berapa nilai aljabar terbesar dan terkecil dari angka binary bertanda 2s complement yang dapat diakomodasikan sebagai immediate operand? 10-15. Sebuah komputer digital memiliki 32 bit instruksi. Terdapat sejumlah format instruksi yang berbeda dan jumlah bit dalam setiap format yang digunakan untuk opcode berbeda tergantung pada bit yang diperlukan oleh bidang lainnya. Jika bit pertama opcode adalah 0, maka ada 4 bit opcode Jika bit pertama opcode adalah 1 dan bit keduanya adalah 0, maka opcode tersebut memiliki 6 bit. Jika bit pertama opcode adalah 1 dan bit keduanya adalah 1, maka opcode tersebut memiliki 8 bit. Berapa opcode berbeda yang tersedia bagi komputer ini? 10-16. Komputer bersiklus tunggal pada gambar 10-15 mengeksekusi 5 instruksi yang didefinisikan oleh register transfer melalui tabel berikut. (a) Lengkapi tabel dibawah ini, dengan menggunakan instruksi dekoder output biner dari gambar 10-6 selama pengeksekusian setiap instruksi:

(b) Lengkapi tabel dibawah ini, dengan menggunakan instruksi dalam biner untuk komputer bersiklus tunggal yang mengeksekusi register transfer (jika bidang tidak digunakan, berikan nilai 0):

10-17. Menggunakan informasi dari tabel kebenaran pada tabel 10-10, buktikan bahwa output bit tunggal pada dekoder dalam gambar 10-16 adalah benar. 10-18. Simulasikan secara manual siklus tunggal komputer pada gambar 10-15 untuk urutan instruksi berikut, dengan mengasumsi bahwa setiap register awalnya mengandung isi yang sesuai dengan indeksnya (misalnya R0 berisi 0, R1 berisi 1, dst.); SUB R0,R1, R2 SUB R3, R4, R5 SUB R6, R7, R0 SUB R0, R0, R3 SUB R0, R0, R3 ST R7, R0 LD R7,R6 ADI R0, R6, 0 ADI R3, R6, 3 Berikan (a) nilai biner dari instruksi untuk arah arus hasil dan (b) isi dari register apapun yang diganti oleh instruksi, atau lokasi dan isi dari memori apapun yang diganti oleh instruksi pada hasil berikutnya. Hasil diposisikan secara ini karena jumlah yang baru tidak ditampilkan dalam register atau memori akibat eksekusi dari sebuah instruksi hingga setelah ujung positif clock muncul kembali. 10-19. Berikan instruksi bagi siklus tunggal komputer yang me-reset register R4 ke 0 mengubah status Z dan N berdasarkan nilai 0 yang ditransfer ke R4. (petunjuk: coba gunakan eksklusifOR.) dengan mengamati detail logika ALU, tentukan nilai dari status V dan C. 10-20. Sebutkan isi tabel status logika kontrol untuk siklus jamak komputer yang mengimplementasikan pernyataan register transfer di bawah ini. Asumsikan bahwa dalam semua kasus, status awalnya EX0 dan opcode-nya 0010001. (a) (b) (c) (d) R3 R1 R2, EX1 Assume DR = 3, SA = 1, SB = 2 R8 sr R8, INF Assume DR = 5, SB = 5 If (N = 0) then (PC PC + se, INF) else (PC PC + 1, INF) R6 R6, C 0, INF Assume DR = SA = 6.

10-21. Simulasikan secara manual instruksi SRM dalam siklus jamak komputer untuk operand 0001001101111000 dengan OP=6.

10-22. Sebuah instruksi baru akan didefinisikan untuk siklus jamak komputer dengan opcode 0010001. Instruksi tersebut mengimplementasi register transfer R*DR+ R*SB+ + M*R*SA++ Temukan diagram ASR untuk mengimplementasi instruksi, dengan mengasumsi bahwa 0010001 adalah opcode. Buatlah bagian dari tabel status kontrol yang mengimplementasi instruksi ini. 10-23. Ulangi pertanyaan 10-22 menggunakan 2 instruksi; tambah dan cek OV (AOV), yang dideskripsikan oleh register transfer R*DR+ R*SA+ + R*SB+, V:R81, V:R80 Dan branch dan overflow (BRV), yang dideskripsikan oleh register transfer R8R8, V:PCPC + se AD, V:PC PC + 1 Opcode untuk AOV adalah 1000101 dan untuk BRV adalah 1000110. Perhatikan bahwa register R8 digunakan sebagai status register yang menyimpan kelebihan hasil V untuk operasi sebelumnya. Seluruh nilai N, Z, C, dan V dapat disimpan dalam R8 untuk memberikan status komplit untuk operasi aritmatik atau operasi logika sebelumnya. 10-24. Sebuah instruksi baru akan didefinisikan untuk siklus jamak komputer. Instruksi tersebut membandingkan 2 bilangan bulat tak bertanda yang disimpan dalam register R[SA] dan R[SB]. Jika kedua bilangan bernilai sama, maka bit 0 dari R[DR] akan diset ke 1. Jika R[SA] lebih besar daripada R[SB], maka bit 1 dari R[DR] akan diset ke 1. Selainnya, bit 0 dan 1 akan diset ke 0. Semua bit lain dari R[DR] memiliki nilai 0. Temukan diagram ASM untuk mengimplementasi instruksi, dengan mengasumsi bahwa 0010001 adalah opcode.Buatlah bagian dari tabel status kontrol yang mengimplementasi instruksi ini.

Anda mungkin juga menyukai