Senin, November 3

arsitektur komputer

2
  1. Deskrispsi Informal dari RISC Computer secara Sederhana, SRC


Pada bagian ini kami membahas deskripsi informal dari SRC, dan pada bagian selanjutnya kami membahas deskripsi formal. Contoh Mesin ini cukup sederhana dan tidak ada kerumitan pada mesin-mesin sebenarnya yang terdapat di dalam bab 4 dan 5 yang bertindak sebagai salah satu contoh dari desain perangkat keras mesin yang terperinci.


Register dan Struktur Memori


Gambar 2.9 menunjukkan model pemrogram dari mesin SRC. Ini terdiri atas register machine, dengan 32 general purpose, 32-bit register, serta Program Counter (PC) dan Instruction Register (IR). Meskipun main memori tersusun atas beberapa array, hanya 32-bit yang dapat diambil dari atau disimpan ke main memori. Akses operand memorinya mengikuti model load-store seperti yang diuraikan di atas. Suatu kata pada alamat A digambarkan seperti 4 byte di alamat dan menggantikan tiga alamat. Byte di alamat yang paling rendah berisi 8 bit signifikan, byte di alamat yang berikutnya berisi 8 bit signifikan berikutnya, dan seterusnya.



  1. Bentuk - bentuk Instruksi


Gambar 2.9 menunjukkan 23 instruksi dalam 8 format yang berbeda :

  • Instruksi Load (ambil) dan Store (simpan) : terdapat empat instruksi Load-ld, ldr, la, dan lar-dan dua instruksi store-st dan str.

  • Instruksi branch (cabang) : terdapat dua instruksi branch, br dan brl, mengizinkan unconditional dan conditional branch ke suatu alamat yang berisi suatu register yang ditetapkan. Conditional branch menguji isi-isi register dan cabang ketika register bernilai = 0, ≠ 0, ≥ 0, atau <>

  • Instruksi Aritmstika : terdapat empat insturksi aritmatika : add, addi, sub dan neg. Semua kecuali addi mengambil dua register operand dan menempatkannya pada satu register. Instruksi addi menambahkan satu ketetapan yang segera terdapat di field c2 ke suatu register dan menempatkan hasilnya suatu register.

  • Instruksi Logical dan Shift (pergeseran) : terdapat sembilan instruksi logical dan shift. Instruksi shift dapat bergeser dengan menghitung isi dari suatu konstanta pada instruksi atau dengan menghitungnya di register.

  • Instruksi miscellaneous (bermacam – macam) : terdapat dua instruksi zero-operand : nip dan stop.



Semua instruksi terdiri dari 32 bit. Karena SRC berasal dari class load-store dari mesin, operand - operand di dalam memori dapat diakses hanya melalui instruksi load dan store. Semua instruksi mempunyai 5-bit field opcode, mengizinkan 32 instruksi yang berbeda. Di sini kita memaparkan hanya 23 instruksi ini. Field ra, rb, dan rc adalah 5-bit field menetapkan salah satu dari32 register serba guna. Konstanta c1, c2, c3, Cond dan Count digunakan dalam berbagai cara bahwa kita akan memaparkannya untuk didiskusikan pada setiap instruksi. Pertama kita diskusikan mode pengalamatan memori dan kemudian ke 23 instruksi. Ketika kita menguraikan masing – masing instruksi, kita masukkan field komentar di dalamnya dimulai dengan titik koma yang menggambarkan operasi pada instruksi pseuso C code. Notasi M[x] berarti nilai yang disimpan pada kata x di memori.


Kenali bahwa ada banyak “lubang-lubang" yang tak terpakai di dalam instruksi yang mengikis kapasitas memori. Dengan demikian kesediaan untuk penggunaan yang lebih efesien dari memori terdapat pada semua perintah suatu fitur dari mesin-mesin RISC paling modern. Permasalahan ini dibahas lebih terperinci di dalam bab 3.


    1. Mengakses Memori : Instruksi Load dan Store


Instruksi - instruksi load dan store hanya instruksi – instruksi SRC untuk mengakses operand – operand pada memory.


Instruksi – instruksi Load dan store

┐d ra, c2 ; Direct addressing: R[ra] = M[c2]

┐d ra, c2(rb) ; Indexed addressing(rb≠0); R[ra]=M[c2+R[rb]

st ra, c2 ; Direct addressing: M[c2]=R[ra]

st ra, c2(rb) ; Indexed addressing(rb≠0); M[c2+R[rb]=R[ra]

┐a ra, c2 ; Load displacement address:R[ra]=c2

┐a ra, c2(rb) ; Load displacement address;R[ra]=c2+R[rb]


Instruksi – instruksi ini menggunakan format 1 dari gambar 2.9. register untuk terisi atau disimpan adalah ditetapkan dalam bidang 5-bit ra, dan alamat adalah ditetapkan ketika 17-bit menghargai di bidang c2. Bidang rb melayani melipatgandakan tugas. Jika rb=0 (itu, jika nilai 5-bit adalah nol, menetapkan r0), ini bertindak sebagai sinyal ke/pada mesin contro; unit bahwa memori menghadapi adalah baru nilai c2 sebagai sebuah mengisyaratkan-meluas 2 nomor komplemen. Bila ada dari lain 31 register adalah ditetapkan-itu, jika rb?0 – kemudian memori menghadapi adalah membentuk dengan cara menambahkan R[rb]+c2, menghasilkan di/dalam mendasarkan, atau penggantian/jarak, gaya pengalamatan. Perlu diperhatikan penambahan [dari] c2 itu ke/pada R[rb] berlangsung ketika instruksi sedang melakukan, itu, pada/di berlari/menjalankan waktu. Berpesan itu ketika c2 adalah menetapkan ke/pada 0, gaya pengalamatan register tidak langsung.


Dengan begitu instruksi ld beban ke dalam register R[ra] kinandar menyimpan pada/di menghadapi c2 (pengalamatan langsung) jika rb=0, atau pada/di menghadapi c2+R[rb] jika rb?0 (ter-index atau pengalamatan penggantian/jarak); instruksi st melakukan cadangan, menyimpan kinandar di/dalam R[ra] pada/di menghadapi c2 ketika rb=0, atau pada/di menghadapi c2+R[rb] ketika rb?0.


La (beban menghadapi) instruksi mengkalkulasi kinandar menghadapi sebagai di atas, tetapi cukup maka mengambil kinandar, itu menyimpan valuein diperhitungkan R[ra]. Secara operasional, itu mengisi/memuat nilai c2 atau c2+R2[rb] [dirinya] sendiri ke dalam satu register. Ini memungkinkan kompleks menghadapi kalkulasi untuk dilakukan dengan tegas. Dengan cara ini, gaya pengalamatan tidak avaible dalam instruksi ditetapkan dapat disimulasikan bya rangkaian tahap aritmatika tegas/eksplisit.


Beberapa titik harus membuat tentang instruksi ini. Pertama, karena c2 adalah satu 17-bit nilai, hanya kinandar menyimpan di/dalam sekarang atau nanti 216 byte memori mungkin menjadi mengakses menggunakan gaya pengalamatan langsung, atau, dalam kasus [dari] instruksi la, hanya positif atau negatif constants dengan magnitudes lebih kecil maka 216 mungkin menjadi terisi. Untuk meng-akses kinandar menyimpan di tempat lain di/dalam memori, penggantian/jarak atau register tidak langsung gaya pengalamatan harus digunakan, dengan nilai di/dalam R[rb] bertindak sebagai dasar dan nilai c2 bertindak sebagai satu offset. (Daya ingat bahwa register tidak langsung gaya pengalamatan mungkin menjadi mencapai dengan cara menentukan c2 sepadan dengan 0.) Catatan penambahan alamat yang juga itu adalah 2 komplemen, sehingga penggantian/jarak 17-bit harus mengisyaratkan-meluas untuk 32 bit sebelum penambahan alamat. Lihat bab 6 untuk satu diskusi yang lebih seksama 2 aritmatika komplemen.


Relative addressing memproses alamat operand sebagai relative address ke PC.

Load and Store Relative

ldr ra, c1 ;Load register relative: R[ra] = M[PC + c1]

str ra, c1 ;Store register relative: M[PC +c1] = R[ra]

lar ra, c1 ; Load relative address:R[ra] = PC + c1

Alamat yang efektif dibentuk oleh run-time addition, c1+PC. Pengalamatan secara relatif ini membuat instruksi yang mampu ditempatkan pada suatu lokasi. Karena alamat data ditetapkan sebagai nilai yang konstan dari PC, dan oleh karena instruksi baru, semua modul pada program dan data di memory bisa dipindahkan atau dilokasikan ke mana pun tanpa merubah nilai data lain yang tidak dipindahkan. Berbeda dengan cara pengalamatan secara langsung, yang alamatnya ditetapkan pada lokasi memory secara mutlak. Karena tanpa memindahkan c1 yang memiliki 22 bits, maka alamat dengan ± 221 instruksi bisa ditentukan lebih spesifik.


Tabel 2.4 menyediakan contoh bahasa assembler dan hasil pengkodean mesin dari beberapa perintah load dan store. Kita bisa mempelajari ini sampai kita mengerti masing-masing entry atau masukan. Kode operasi untuk masing-masing intruksi terdapat pada kolom op.


Contoh 2.2: kode biner dari instruksi SRC. Sebagai contoh dari koding instruksi SRC, dari instruksi kedua pada tabel 2.4, ld r22, 24(r4). Maka prosesnya sebagai berikut:

Op=1 ra=22 rb=4 c1=24

00001 10110 00100 00000000000011000 = 0D880018H


2.3.4 Instruksi Aritmatic and Logic

Perintah yang menggunakan ALU pada mesin SRC untuk melakukan aritmatik atau perhitungan, logika, dan operasi shift. Pertama mencakup instruksi “1-operand” not dan neg.

Instruksi ALU 1-Operand

neg ra, rc ;Negate: R[ra]= -R[rc]

not ra, rc ;Not: R[ra] = R[rc]

Ini merupakans instruksi format 3 yang memerlukan satu operand register dan menyediakan satu hasil register. Intstruksi neg (op=15) menggunakan komplemen ke-2 dari isi register R[rc] dan menyimpannya di register R[rc]. Instruksi not (op=24) menggunakan komplemen ke-1 dari isi register R[rc] dan menyimpannya di register R[ra]. Semua field-field yang lain tidak digunakan pada instruksi.


Instruksi add (op=12), sub (op=14), and (op=20), and or (op=22) termasuk 2-operand dan menghasilkan satu instruksi. Semuanya harus berada pada general purpose registers. Perintah-perintah tersebut ditentukan menggunakan format 6. Perlu diperhatikan bahwa paling sedikit 12 bit penting tidak digunakan, karena 4 field pertama cukup untuk menggambarkan seluruh operasi.


Instruksi ALU 2-Operand

add ra, rb, rc ;2’s complement addition: R[ra] = R[rb]+R[rc]

sub ra, rb, rc ;2’s complement substraction: R[ra] = R[rb]-R[rc]

and ra, rb, rc ;Logical AND: R[ra] = R[rb]^c2

or ra, rb, rc ;Logical OR: R[ra] = R[rb]vR[rc]

Ada tiga instruksi ALU yang menggunakan immediate addressing mode: addi (op=13), andi (op=21), and ori (op=23). Secara terus-menerus diisi di field 17-bit dan diperpanjang sampai nilai 32-bit sebelum operasi aritmatik ditampilkan. Semua intruksi tersebut menggunakan format 1.


Immediate Addressing ALU Instructions

Addi ra, rb, c2 ;Immediate 2’s compl. Addtion: R[ra] = R[rb]+c2

Andi ra, rb, c2 ;Immediate logical and: R[ra] = R[rb]^c2

Ori ra, rb, c2 ;Immediate logical or: R[ra] = R[rb]vc2

Instruksi shift merubah operand di kanan, kiri, atau secara sirkular pada R[ra] dari 1 sampai 32 bit, dan menempatkan hasilnya di R[ra]; jumlah perubahan yang diperintahkan oleh pengkodean 5-bit tidak menyatakan integer, jadi memungkinkan untuk perubahan dari 0 sampai 31 bit. Integer menunjukkan jumlah perubahan yang juga disimpan sebagai nilai di 5 bit penting pada instruksi (format7a), atau jika nilainya 0, maka jumlah perubahan yang diperoleh dari sedikitnya 5 bit penting pada regiester R[rc] (format 7b).


Ada dua bentuk dari shift kanan, shr dan shra (op=26 dan 27, respectively). Bentuk pertama merubah kosong dari kiri sebagai nilai yang dirubah di kanan, dan bentuk kedua, biasa disebut perubahan aritmatik, berikutnya merubah salinan dari msb ke dalam kata di sebelah kiri sebagai isi yang dirubah dengan benar. Bentuk aritmatik ini menunjukkan jumlah komplemen ke-2 selama operasi perubahan.


Shift kiri, shÌ (op=28), merubah kosong di sebelah kanan sebagai nilai pada register yang dirubah di kiri. Perubahan sirkular, shc (op=29), merubah nilai kiri dengan count bits, tapi nilai yang dirubah di register sebelah kiri ditempatkan kembali ke dalam register sebelah kanan. Bentuk bahasa assembler ditunjukkan dibawah ini.

Shift instruktion

Shr ra, rb, rc ;Shift R[rb] right into R[ra] by count in R[rc]

Shr ra, rb, count ;Shift R[rb] right into R[ra] by count in c3

Shr ra, rb, rc ;AShift R[rb] right into R[ra] by count in R[rc]

Shr ra, rb, count ;AShift R[rb] right into R[ra] by count in c3

Shr ra, rb, rc ;Shift R[rb] left into R[ra] by count in R[rc]

Shr ra, rb, count ;Shift R[rb] left into R[ra] by count in c3

Shr ra, rb, rc ;Shift R[rb] circ into R[ra] by count in R[rc]

Shr ra, rb, rc ;Shift R[rb] circ into R[ra] by count in c3

Semua instruksi ini adalah pengkodean dengan menggunakan format 7 dari gambar 2.9. Jika jumlah field ≠ 0 (format 7a), kemudian jumlah perubahan/pergeseran diambil paling sedikit 5 bit signifikan (lsbs), dari field c3, disebut “count” dalam figur. Jika jumlah field = 0 (format 7b), kemudian jumlah pergeseran diambil dari register yang dikodekan pada bit 12-16 instruksi, yang disebut rc dalam format 7 dari gambar 2.9.

2.3.5 Branch Instruction

Instruksi cabang br (op=8) dan brÌ (op=9) pengkodean yang menggunakan format 4 dan 5. Format 4, br, digunakan untuk menentukan satu instruksi cabang yang menggantikan PC dengan target di suatu cabang. Format 5, brÌ, digunakan untuk cabang dan hubungan instruksi, yang mengcopy PC ke dalam link register sesudah cabang. Link Register ini memungkinkan kembali dari subroutine yang panggil dan digunakan untuk menerapkan prosedur-prosedur bahasa tingkat tinggi dan fungsi. Perlu diperhatikan bahwa PC dicopy ke link register tanpa menghiraukan apakah cabang diambil atau tidak. Dua instruksi Ini memungkinkan bercabang di bawah lima syarat-syarat cabang berbeda. Kita menyebutnya instruksi cabang ini sebagai kumpulan mesin yang memelihara satu set kode kondisi dalam satu status register di dalam CPU yang diuji sebagai bagian dari satu cabang bersyarat. SRC tidak menggunakan pada pendekatan ini. Ini memungkinkan sebanyak 32 general purpose register untuk memegang satu nilai untuk diuji pada syarat bercabang. Kondisi cabang yang diuji ditetapkan oleh 3 bit yang signifikan di dield c3, c2<2..0>, yang ditunjukkan pada tabel 2.5. Dua pesan kode, nv, zr, pÌ, atau mil, ditambahkan ke mnemonic (ingatan) dan dikonversi oleh asembler menjadi kode kondisi cabang dalam c3. Arti dari ra, rb, dan field rc dalam instruksi cabang diperlihatkan di halaman berikut.


Tabel 2.6 menunjukkan contoh-contoh dari form-form dan pengkodean semua instruksi cabang. Perakit (assembler) bertanggung jawab atas mengubah mnemonic (ingatan) cabang dan menambahkan catatan kode dua-huruf dari kolom 1 pada tabel itu menjadi sandi operasi 8 dan 9 dari instruksi-instruksi br dan br1, berturut-turut, sebaik dan setepat pemilihan nilai field kondisi cabang c3(2..0). Field yang akan di assemble oleh assembler menjadi intstruksi 32-bit diterapkan dalam tabel : op, ra, rb, rc, dan c3(2..0). Form di dalam kolom yang pertama akan menentukan/memperbaiki field-field pada op dan c3(2..0), dan operand sisa akan menentukan/memperbaiki field-field ra, rb, dan rc. Catat bahwa dalam beberapa kasus satu atau lebih field-field ini tak akan digunakan, yang ditandai oleh suatu strip panjang dengan masukan tabel yang sesuai.


2.3.6 Bermacam-Macam Perintah

Sebagai tambahan terhadap instruksi tersebut di atas, ada dua perintah : nop (op=0), tujuan siapa untuk lakukan tidak ada apa pun, dan stop (op=31), tujuan siapa untuk berhenti mesin. Instruksi nop digunakan sebagai pemilik tempat atau sebagai satu pembuang waktu dan sangat penting di dalam implementasi-implementasi yang pipelined (lihat bab 5). Instruksi stop digunakan untuk berhenti mesin pada suatu titik yang ditetapkan di dalam eksekusi program. Itu adalah bermanfaat di dalam debugging, karena dapat disisipkan pada poin-poin meragukan di dalam program, dan jika instruksi stop dicapai, orang yang melakukan debugging dapat menguji status(negara mesin pada kesenangan nya.

[gambar]


Tiga "ops op," . equ, .org, dan .dw, adalah instruksi yang diperlukan oleh assembler dan untuk memuat program (program loader), dan setiap kode yang bisa dieksekusi tidak memiliki hasil. Pseudo op .equ memungkinkan programmer untuk menspesifikasi konstannta secara simbol, di dalam analogi hampir yang tepat kepada operasi #define C; .org menetapkan lokasi data dan program di dalam memori; dan .dw menyediakan ruang spasi cadangan untuk variabel-variabel program.


Perlu diketahui bahwa assembler mengizinkan pemakaian label-label yang simbolis seperti Over untuk menunjukkan lokasi-lokasi di dalam program. Assembler itu akan mengabaikan teks program, mengubah nilai simbolik itu menjadi aktual dan konstan dimana mereka wakili sebelum penyandian (encoding) program ke dalam bahasa mesin yang biner.


Setelah membaca uraian-uraian informal yang terdahulu, anda mungkin merasa bingung tentang maksud yang tepat mengenai perintah-perintah. Dalam Bahasa Inggris, atau dalam setiap bahasa alami, masih disesuaikan untuk menggambarkan secara tepat, proses yang rumit seperti penafsiran interpretasi bahasa mesin. Di dalam bagian yang berikutnya, kami memperkenalkan suatu bahasa uraian yang formal jauh lebih cocok untuk menggambarkan mesin-mesin dan perilaku-perilaku mereka.


2.4 Uraian Formal SRC Yang Menggunakan Bangsa Perpindahan Register, RTN

Uraian bahasa Inggris [dari] satu perangkat keras dan instruksi komputer ditetapkan adalah berguna bagi menyampaikan fitur umum [dari] satu desain mesin serta untuk menggambarkan kemampuan umum nya, tetapi untuk membangun suatu komputer, kita memerlukan sebuah spesifikasi yang tepat sesuai dari fungsinya. Suatu spesifikasi memerlukan notasi matematis demikian pula dengan bahasa alami. Pentingnya perpindahan data diantara register dan sel-sel memori dalam satu komputer, kadang-kadang mentransformasikan data itu sedang dalam proses, membuat skema notasi dikenal sebagai register transfer (RT) languages satu metoda baik untuk menyertakan level yang benar ke dalam satu spesifikasi computer yang tepat. Kita berkembang dan menggunakan notasi RT yang umum, yaitu RTN. Itu menjadi dasar terhadap ISP (Instruction Set Processor) bahasa yang dikembangkan oleh Gordon Bell dan Alan Newel dan dalam penggunaan saat ini memiliki kemampuan dasar yang sama dengan RT language.

2.4.1 Deskripsi RTN Dari Sebuah Komputer RISC Sederhana, SRC

Kami memperkenalkan RTN dan menggunakannya untuk menggambarkan komponen-komponen dan operasi SRC. Pertama kita menjelaskan berbagai register dan memori yang bisa menangani nilai data serta dapat ditetapkan atau digunakan oleh beberapa instruksi. Aspek berbeda dari notasi diperkenalkan sebagaimana diperlukan, dan satu ringkasan dari notasi diberikan pada table 2.7 serta di Appendix B.


Memori.

Memori yang paling signifikan adalah item processor-state (keadaan processor), yang digunakan oleh banyak instruksi.


Keadaan Prcessor

IPC<31..0> : 32-bit register memberi nama PC (Program Counter)

IR <31..0> : 32-bit register bernama IR (Instruction Register)

Run : 1-bit run/indikator perhentian (halt indicator), dinamakan Run

Strt : Sinyal start

R[0..31]<31..0> : 32 32-bit general purpose registers


Register Memori adalah ditandai oleh alphanumeric. Jumlah bit satu register terdapat di dalam sebuah kurung sudut <>, setelah itu. Yang manapun, baik satu bilangan tunggal atau satu ... jangkauan memisahkan mungkin saja digunakan. Jumlahnya di sebelah kiri... menomori high-order bit dan menuju sebelah kanan low-order bit. Tidak adanya kurung sudut dalam satu definisi menandakan satu bit tunggal. Sekelompok identitas register dapat memiliki nama yang sama dan dibedakan oleh indeks di dalam kurung siku, [ ]. Penggunaan satu register menjelaskan untuk memiliki words ganda dan/atau bit, yang meninggalkan keluar tanda kurung bersesuaian, adalah diasumsikan untuk menunjuk keseluruhan jangkauan. Tanda titik dua memisahkan pernyataan, dalam hal ini definisi, bahwa tidak mempunyai pemesanan tertentu.


Sebuah mesin RISC adalah ditandai oleh suatu keadaan prosesor dengan satu sekumpulan register umum besar dan beberapa register lain. Dalam mesin yang nyata, ada tambahan prosesor-state register digunakan dalam koneksi dengan interupsi, syarat-syarat perkecualian aritmatika, I/O, dan aktivitas mesin lain. Kita akan mendiskusikan ini di titik sesuai.


Definisi prosesor-state menyatakan pada kita bahwa SRC adalah satu mesin register umum (general purpose register) dengan satu program counter. Instructrion Register (IR) adalah tempat dimana setiap kode instruksi akan diterjemahkan dan dsimpan dalam berbagai bidang yang menetapkan operasi (operations), alamat (addresses), nomor register (register numbers) . Dua bit tunggal, Run dan Strt telah didefinisikan. Run mungkin menjadi dianggap sebagai mati-hidup yang ditetapkan untuk memulai menjalankan mesin. Strt agak berbeda. Itu satu sinyal berasal dari satu sumber eksternal seperti satu tombol dan adalah digunakan untuk Run ditetapkan.


Unsur-unsur memori yang selanjutnya terpenting adalah mereka dari besar sekumpulan sel penyimpanan (storage cells) yang dikenal sebagai memori utama (main memory). Memori yang sama mungkin dialamatkan sebagai bytes atau words dalam mesin ini. Satu pengujian dari instruksi mesin bagian ini akan terlihat, bagaimanapun, bahwa tidak ada instruksi yang bisa mengakses atau memanipulasi nilai lebih kecil dibandingkan 32-bit words.


Bagian Memory Utama (Main Memory State)

Mem [0..232 - 1]<7..0> : 232 addressable byte memori

M[x]<31..0> := Mem[x]#Mem[x+1]#Mem[x+2]#Mem[x+3]:

Kata versi dari memori adalah mendefinisikan dalam kaitan dengan byte versi menggunakan := operator. “Penamaan” ini, operator mendefinisikan objek pada sisi kiri sebagai ekspresi pada sisi kanan. Kapanpun sisi kiri muncul di ekspresi lain, itu adalah diterjemahkan dengan cara menggantikan sebelah kanan teks untuk itu dan hasilnya penginterpretasian secara rekursif, jika yang diperlukan.


Simbol # menandakan penggabungan dari tempat penyimpanan atau nilai di atas pada sisi kanan. Definisi ini meliputi satu variabel tiruan, x, yang akan menggantikan oleh satu parameter aktual dalam satu penggunaan sebelah kiri nama. Sebagai contoh, arti dari M[40]<31..0> adalah M[40]<7..0>#M[41]<7..0>#M[42]<7..0>#M[43]<7..0>.


Dari definisi memori untuk SRC, adalah bukti bahwa satu memori memerlukan 32 bit. Karena register instruksi hanya mempunyai 32 bit, itu tidak akan mungkin untuk satu instruksi untuk berisi satu memori penuh dengan satu kode operasi. Register, dan 'program counter'cukup panjang untuk berisi satu alamat memori.


Formats Bagian – bagian berbeda register boleh mempunyai tujuan khusus untuk sebuah nama yang terpisah yang berguna. Format register ini memberikan nama alternate(yang bergantian) untuk bagian register atau ekpresi penggabungan bagian dari register. Yang terpenting dari perbedaan khas bagian-bagian dari register instruksi adalah bagaimana menerjemahkan maksud dari instruksi.


Format Instruksi

op<4..0> := IR<31..27>; Field Kode operasi

ra<4..0> := IR<26..27>; Field target register

rb<4..0> := IR<21..17>; Operand, alamat index, atau target register bercabang

rc<4..0> := IR<16..12>; Opreasi kedua, test bersyarat, atau perubahan jumlah register

c1<21..0> := IR<21..>; Field long displacement

c2<16..0> := IR<16...0>; Field short displacement atau immediate field

c3<11..0> := IR<11..0>; Field hitung atau modifier field


Karena menumpuknya field-field yang berbeda, cenderung memungkunkan bit mempunyai beberapa nama dan persamaan maksud, tergantung pada instruksi. Contoh, beberapa instruksi menggunakan field op, ra, dan c1 selama yang lain menggunakan op, ra, rb, rc, dan c3 seperti yang telah ditunjukan sebelumnya pada Figure 2.9.

Effective Addres Calculations Kebanyakan format penting ekspresi nama menggunakan field register daripada hanya menamakan lagi bit, itu digunakan untuk menghitung effective address untuk sebuah pengisian atau penyimpanan memory. Effective addresses dapat menentukan (pemindahan) atau relative ke PC.

Effective Address (displacement)

disp<31..0> := ((rb = 0) → c2<16..0> {sign extend}:

(rb ≠ 0) → R[rb] + c2(16..0> {sign extend, 2’s complement}):


Definisi ini tidak bilang bahwa R[0] adalah identik dengan nol. Hanya bilang ketika R[0] terpilih sebagai register yang membawa sebuah perhitungan displacement yang field c2 sendiri harus diambil sebagai displacement.

Simbol → adalah bentuk infix dari if – then. Juga tidak ada konsep of else.

Jika dua kondisi pada left of differnt tanda → adalah true, both right hand sides terevaluasi. Kasus di atas, dua kondisi tidak berhubungan, jadi hanya satu akan true. The right hand sides of → adalah nilai dan bukan operasi, jadi ekspresinya adalah sebuah definisi bersyarat dari nilai displacement. Simbol → digunakan sebagai pengganti if – then karena perbedaan ini. Meskipun beberapa pemrogram bahasa menggunakan ide nilai bersyarat, ini sering terlihat di matematika. Contoh, nilai mutlak dapat didefinisikan

|x| := ((x<0)>

Maksudnya sebuah longer left hand sidepada jangka sebuah short right hand side, atau pada penambahan dua field yang berbeda panjangnya, ini perlu untuk menetapkan berapa pendek operasi terberi dan apa yang dilakukan dengan penjumlahan yang mungkin terlalu panjang. Ini diselesaikan oleh pengubah di {} setelah operasi.

Tererjemahan bahasa Inggris dari alamat mode displacement di SRC adalah bahwa ini dibentuk oleh penambahan isi dari register yang dipilh ke field displacement yang instruksi unless (jika tidak) menetapkan R[0], dimana kasus nol ditambahkan ke field displacement. Kita mengaskan kembali, perbedaan antara (rb=0) dan (R[rb]=0). Pertama yaitu perbandingan register number ke nol. Kedua yaitu perbandingan register contents ke nol. Meskipun R[0] register biasa, ini tidak digunakan di perhitungan pengalamatan. Sebagai pengganti, nomornya mengizinkan sebuah pengalamatran untuk ditempatkan hanya pada konstan displacement di instruksi. Setelah penyimpanan ini mempunyai mode pengalamatan khusus atau permanent zero register untuk mode pengalamatan langsung, dimana sebuah pengalamatan dengan langsung oleh konstan di instruksi.

Bentuk kedua effective address in SRC adalah sebuah alamat relative ke PC.

Effective Address (Relative)

rel<31..0> := PC<31..0> + c1<21..0> {sign extend, 2’s comp.}:

Yang terpenting untuk instruksi bercabang. Sejak field register tidak dibutuhkan, sebuah longer displacement constant dapat digunakan. Sejak program direkam di cara modular, di modul yang terjadi pengeksekusian dapat dengan sesuai dilakukan menggunakan program counter, yang instruksi selanjutnya untuk dieksekusi.

Instruction Interpretation and the Fetch-Execute Cycle Aksi yang terjadi untuk setiap instruksi sebelum instruksi khusus adalah selalu mengartikan yang diketahui sebagai instruction interpretation.

instruction interpretation

instruction_interpretation := (

­¬Run^Strt → Run ← 1; instruction_interpretation):

Run → (IR ← M[PC]: PC ← PC + 4; instruction_execution)):

Instruction Execution Sekarang tiba ke penjelasan instruksi individu apa saja di dalam mesin bekerja. Sekali instruksi terambil dan PC tertambah, maka instruksi dilakukan. RTN berikutnya menjelaskan eksekusi dari instruksi SRC. Ini mengambil bentuk dari sebuah daftar panjang operasi bersyarat. Setiap kondisi adalah sebuah nilai khusus field kode operasi register IR. Nilainya semua berbeda, jadi hanya aksi yang tepat ke satu instruksi akan terjadi. Ini berguna untuk menamakan kondisi yang persamaan field operasinya sebuah nilai khusus dengan perakitan kode mnemonic sama dengan nilai tersebut, dan ini dilakukan “in – line” menggunakan tanda kurung mendefinisikan untuk menyimpan daftar terpisah panjang.


Instruksi-instruksi percabangan

Beberapa pengaturan khusus pada bidang tetap dari instruksi yang hanya digunakan dengan percabangan-percabangan.


Instruksi-instruksi percabangan

Cond := ( c3<2..0>=0 -> 0: Never

c3<2..0>=1 -> 1: Always

c3<2..0>=2 -> R[rc]=0: If register is zero

c3<2..0>=3 -> R[rc]0: If register is nonzero

c3<2..0>=4 -> R[rc]<31>=0: If positive or nonzero

c3<2..0>=5 -> R[rc]<31>=1: If negative

br (:= op= 8)->(cond->PC<-R[rb]); Conditional branch

brl (:= op= 9)->(R[ra]<-PC: cond->(PC<-R[rb])); Branch and link


Di dalam SRC, transfer dari kendali/kontrol kepada suatu titik yang berbeda dalam suatu aliran (stream) instruksi telah dipenuhi oleh suatu instruksi percabangan, br, yang mengubah alamat tersebut dari instruksi berikutnya didalam PC jika suatu kondisi telah terseleksi bernilai benar (true). Instruksi percabangan dan keterhubungan (link), brl, alamat penyimpanan pertama dari instruksi berikutnya ke dalam suatu link register yang terpilih, sehingga kendali/control tersebut dapat dikembalikan instruksi berikutnya dalam satu urutan, dan percabangan-percabangan cond bernilai benar (true), tindakan tersebut sama seperti instruksi br. Dengan catatan bahwa brl itu akan menyimpan link R[ra] tanpa menghiraukan apakah cabang tersebut diambil. Selain dari pada bermanfaat untuk pemanggilan dan pengembalian subroutine, link register tersebut dapat digunakan untuk PC-relative addressing. Kondisi cond tersebut didefinisikan untuk menjadi satu dari enam yang benar/true (=1) atau nilai false (=0). Salah satu dari kondisi tersebut selalu benar (atau 1), sehingga instruksi-instruksi ini meliputi percabangan tanpa syarat, disebut lompatan (jumps) di beberapa mesin. Target perabangan didalam SRC harus terdapat di dalam suatu register, sedangkan cabang dan instruksi lompatan (jumps) didalam mesin-mesin yang lain sering menggunakan suatu gaya alamat seperti relatifnya atau pemindahan seperti di beban serta menyimpan instruksi dari SRC. Terdapat beberapa alasan baik untuk mempunyai suatu alamat dengan percabangan tersebut, tetapi kondisi tersebut juga menggunakan instruksi bit, dan di sana ada beberapa hal yang dapat dilakukan untuk meningkatkan kinerja jika suatu target cabang adalah dengan tegas disiapkan sebelum cabang tersebut dieksekusi.


Instruksi ALU


Selanjutnya kita akan masuk pada instruksi aritmatika. Untuk sementara waktu kita akan membatasi komputer sederhana SCR untuk menambahkan, mengurangi, dan meniadakan nomor komplemen 32-bit. Kita akan melihat bagaimana untuk memperluas ini ketika kita mendiskusikan komputer aritmatika.


Instruksi-instruksi Aritmatika

Add (:= op= 12) -> R[ra]<-R[rb]+R[rc]:

Addi (:= op= 13) -> R[ra]<-R[rb]+c2<16..0> {2’s complement, sign extend}:

Sub (:= op= 14) -> R[ra]<-R[rb]-R[rc]:

Neg (:= op= 15) -> R[ra]<- -R[rc]:


Terdapat dua bentuk untuk menambahkan instruksi: yang pertama dimana penambahan dua register dan suatu bentuk immediate yang memungkinkan suatu ketetapan tanda yang kecil untuk ditambahkan ke register. Bentuk immediate bermanfaat untuk incrementing atau decrementing dalam menghadapi dan menghubungkan dengan alamat offset ke dalam array (larik) atau record. Ketika seluruh aritmatika adalah 2’komplemen, itu akan hanya disebutkan ketika itu diperlukan untuk menetapkan bagaimana memperluas suatu operan untuk memenuhi panjang dari yang lainnya. pengurangan instruksi tidak memerlukan suatu bentuk immediate karena suatu ketetapan negatif dapat digunakan dengan addi.

Data non-numerik dalam suatu komputer adalah sebagian besar dimanipulasi oleh operasi logis, pembatasan dalam mesin ini untuk and, or, dan not. and ^, or v, dan not -, operator pengoperasian bitwise tersebut pada berbagai jumlah bit, memperpanjang yang lebih pendek untuk memenuhi panjangnya dari yang terpanjang ketika diperlukan.


Operasi-operasi Logika

and (:= op= 20) -> R[ra]<-R[rb]^R[rc]:

and (:= op= 20) -> R[ra]<-R[rb]^R[rc]:

andi(:= op= 21) -> R[ra]<-R[rb]^c2<16..0> {sign extend}:

or (:= op= 22) -> R[ra]<-R[rb] v R[rc]:

or (:= op= 23) -> R[ra]<-R[rb] v c2<16..0> {sign extend}:

not (:= op= 22) -> R[ra]<- -R[rc]:

4. Uraian [dari] instruksi individual : kelas instruksi meliputi pergerakan data (beban dan toko/penyimpanan ), cabang, Operasi ALU dan bermacam-macam.


Instruksi pergerakan Data menentukan fleksibilitas tersedia di/dalam transfer cincin/arena data dari satu bagian dari keadaan/negara bagian prosesor ke lainnya.

Instruksi Cabang adalah mempunyai hubungan dekat ke/pada siklus mengambil-melakukan karena mereka menentukan instruksi apa adalah meletus berikutnya.

Walaupun asembler bisa mentransformasikan informasi mnemonic (ingatan) dan simbolis ke dalam numerik membentuk, setiap instruksi bahasa asembler menyesuaikan dengan satu instruksi mesin biner