Monday 3 November 2008

Deskrispsi Informal dari RISC Computer secara Sederhana, SRC

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.


2.3.2Bentuk - 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 < 0.instruksi brl menyimpan PC di suatu register yang ditetapkan.
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.3.3Mengakses 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) → -x: (x≥0) → x):
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.
Memory refenrce Instructions
Instruksi dapat dipisahkan ke dalam classes based berbeda pada jenis aksi apa saja yang mereka lakukan. SRC, seperti computer RISC lainnya, di istimewakan oleh pemisahan kumpulan instruksi yang mengambil register dari dan menyimpannya ke memory. Instruksi selanjutnya menggunakan alamat memori, jadi itu menjelaskan mencakupnya arti nama di effective address section

Load and store instruction :
Instruction_execution := ((
ld (:= op = 1)->R[ra]<-M[disp]: Load register
ldr (:= op = 2)->R[ra]<-M[rel]: Load register relative
st (:= op = 3)->M[disp]<-R[ra]: Store register
str (:= op = 4)->M[rel]<-R[ra]: Store register relative
la (:= op = 5)->R[ra]<-disp: Load displacement address
lar (:= op = 6)-> R[ra]<-rel: Load relative address

Instruksi-instruksi yang berbeda memungkinkan sel-sel memori untuk menangani alamat manapun, baik oleh penggantian/jarak atau gaya relatif. Kemampuan untuk mengisi/memuat nilai suatu alamat secara langsung ke dalam suatu register, disediakan oleh la dan lar, mempunyai beberapa pemakaian di mesin ini. Ini adalah satu jalan/cara untuk menempatkan suatu cakupan pendek yang tetap di suatu instruksi ke dalam suatu register. itu dat meletakkan suatu alamat sederhana ke dalam suatu register dimana proses aritmatika dapat dilakukan didalamnya untuk alamat yang lebih kompleks. Itu juga merupakan suatu cara untuk meletakkan target dari suatu perpindahan dari kendali/kontrol, atau cabang, instruksi ke dalam suatu register.

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]:
Bentuk immediate berguna dengan and untuk pembersihan, atau penutupan, bagian dari bit dan dengan or untuk menentukan constants ke dalam bidang/bagian.
Operasi-operasi pergeseran diperlukan untuk memanipulasi karakter dan data lain yang lebih pendek dibandingkan sebuah kata. Pergeseran-pergeseran juga digunakan dengan operasi-operasi aritmatika dan keduanya memiliki versi logis dan aritmatika. Suatu nilai immediate untuk count pergeseran sangat sering diinginkan, tetapi menggunakan suatu register untuk suatu perhitungan count juga sangat penting. Count tersebut adalah dibawah 5 bit bidang yang telah ditetapkan, karena suatu count pergeseran lebih dari 31 tidak bermanfaat, tetapi jika bit ini adalah 0, juga count pergeseran yang tidak bermanfaat, lebih rendah 5 bit dari suatu spesifikasi register oleh rc adalah digunakan sebagai gantinya.

n:=((c3<4..0>=0) -> R[rc]<4..0>:
(c3<4..0>0) -> c3<4..0>)):
shr(:= op= 26) -> R[ra]<31..0 <- (n @ 0) # R[rb]<31..n>:
shra(:= op= 27) -> R[ra]<31..0 <- (n @ R[rb]<31> # R[rb]<31..n>:
shl(:= op= 28) -> R[ra]<31..0 <- R[rb]<31-n..0> # (n @ 0>:
shl(:= op= 29) -> R[ra]<31..0 <- R[rb]<31-n..0> # R[rb]<31..32-n>:

Pergeseran aritmatika yang benar memperluas tanda, sementara suatu pengisian nol pergeseran yang benar adalah umum untuk karakter pengepakan atau bidang yang pendek ke dalam suatu kata.
satu bagian baru [dari] notasi di sini adalah operator @, [yang] mengambil/menangani satu sisi kiri bilangan bulat dan menggabungkan sebelah kanan dengan [dirinya] sendiri bahwa jumlah kali/zaman. sebagai contoh, 5@0 adalah 00000. pergeseran di/dalam SCR adalah pergeseran benar yang logis, satu aritmatika benar/kanan pergeseran, [yang] memperluas tanda bit, satu pergeseran ditinggalkan dimana mengisi dengan nol pada sisi kanan, dan satu pergeseran melingkar [yang] dianggap sebagai pergi mungkin menjadi menganggap sebagai pergi atau kanan tergantung pada gelar ningrat pergeseran. Mereka semua mungkin menjadi digambarkan oleh concatenating menyeleksi bidang [dari] kuantitas dan pengulangan menggeser/bergeser nol atau tanda bit dengan berbagai cara.

Bermacam-macam instruksi
Instruksi nop menyebabkan tidak ada aksi untuk ditempatkan, dan perhentian instruksi, memberhentikan komputer sampai dimulainya sinyal berikutnya diterima.

Bermacam-macam instruksi dan akhir dari eksekusi intruksi
Nop (:= op=0) -> : No operation
Stop (:= op= 31) -> Run <- 0 Stop instruction
); instruction_interpretation ): End of instruction_ execution; invoke instruction_interpretation.
Perhentian adalah terakhir di daftar panjang tindakan bersyarat yang mendefinisikan nama, eksekusi instruksi. Dengan begitu diikuti oleh tanda kurung kanan dimana bertanding tanda kurung ditinggalkan pada awal ekspresi bersyarat. Imediately mengikuti eksekusi instruksi adalah instruksi penafsiran, yang akan menaikan PC dan mengambil instruksi berikutnya, ad infinitum. Kita akan mendiskusikan komplikasi-komplikasi dari reset dan pemrosesan pada Chapter 4.
ini melengkapi spesifikasi dari komputer SCR yang sangat sederhana. kita akan mempertimbangkan keduanya, yaitu implementasi dari komputer ini dan perluasan dari spesifikasinya ketika membukukan kemajuan. Itu adalah suatu mesin lengkap dalam mendeteksi bahwa suatu compiler bisa menjadi ditulis untuk itu yang akan membangkitkan kode untuk bahasa modern tingkat tinggi. Tentu saja, compiler ditulis untuk mesin lebih sederhana. Perluasan bahwa kita akan melihat berikutnya meliputi interupsi, meningkatkan aritmatika, dan input/output, atau I/O.
I/O benar-benar diikuti dengan set instruksi yang disajikan. Beberapa komputer assosiate alamat memori dengan I/O devcies dan mengkomunikasikan data hanya menggunakan beban serta menyimpan instruksi. Kita akan menggunakan pemetakan memori ini I/O teknik dengan SRC juga.


Konsep kunci : MENGGAMBARKAN sebuah INSTRUKSI KOMPUTER MENETAPKAN

Banyak hal [yang] dilindungi/ditutupi harus melindungi/menutupi dalam menggambarkan satu komputer lengkap mungkin menjadi mengorganisir ke dalam empat kategori
1. Prosesor dan keadaan/negara bagian memori : ukuran dan sejumlah register tempat penyimpanan di cpu, struktur memori dan I/O keadaan/negara bagian jika bisa diterapkan. Hal ini adalah sering disebut model [dari] mesin programmer.
2. Format dan penafsiran data di/dalam register: Jenis Data, format instruksi dan efektif menghadapi penafsiran. Jenis data Aritmatika adalah sering sederhana di/dalam perbandingan ke/pada penafsiran [dari] instruksi
3. Urutan penafsiran instruksi: hal ini adalah siklus mengambil-melakukan adalah denyut jantung [dari] mesin dan mendasari eksekusi dari semua instruksi
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

2.4.2 URAIAN yang (ME)LAWAN INFORMAL FORMAL
Mandi/rendaman formal dan informal mesin serta uraian bahasa mesin mempunyai tempat mereka. Uraian Informal cenderung untuk menyediakan satu lebih intuitif “merasakan” untuk maksud/arti satu membangun, tetapi mungkin sedang mengacaukan, tidak tepat/tidak jelas tidak lengkap di/dalam tenaga (energi) deskriptif mereka, uraian formal menyediakan rata-rata untuk [menjadi] presisi dan tepat tetapi mungkin menjadi kering serta sulit untuk memahami. Kita menggunakan keduanya dalam buku ini ketika sesuai ke/pada sedang menggambarkan , dan himbauan anda tidak untuk menutup kesalahan uraian RTN, tanpa menghiraukan kecenderungan untuk melakukannya, anda bahkan dapat menemukan bahwa seperti anda maju di/dalam pengetahuan [dari] desain komputer anda, anda akan cenderung untuk menutup kesalahan uraian informal dan berkonsentrasi pada RTN
Anda mungkin mempunyai beberapa kebingungan tentang RTN menggunakan sebagai sebuah bahasa uraian di lain pihak dengan bahasa mesin [dari] mesin itu adalah menggambarkan. RTN harus mempertimbangkan satu bahasa meta , satu bahasa [yang] digunakan untuk adalah digunakan untuk menggambarkan bahasa.

Gambar 2.10 pertunjukan suatu cara untuk melihat situasi ini : Bahasa mesin SRC adalah diterjemahkan oleh beberapa interpreter bahasa mesin tertentu (perangkat keras ) atau satu gandum (perangkat lunak ) yang mengenali bahasa SRC, sebagai contoh , di/dalam bab 4 dan 5 kita akan memainkan peran [dari] compiler RTN serta desain empat seperti interpreter SRC terdiri dari perangkat keras. Perangkat lunak dimana menyertai buku teks ini meliputi suatu gandum, ditulis di/dalam ANSI C, [yang] anda bisa menyusun dan berlari. Gandum dihasilkan akan menerima bahasa mesin SRC sebagai input, selain dari pada adalah satu jalan/cara unambiguously mengkomunikasikan satu struktur mesin dan berfungsi, RTN mungkin menjadi digunakan untuk mengotomatiskan produksi [dari] interpreter untuk mesin
RTN bisa juga membantu mengurangi kemungkinan [dari] error di/dalam desain dan implementasi. RTN membantu mencegah dua berbagai jenis error [yang] bisa muncul/bangkit selama desain dan implementasi :
1. Error disebabkan oleh satu kesalahan menafsir [dari] uraian mesin
2. Error [dari] desain dan implementasi
Di kasus pertama, RTN menyediakan kemampuan untuk menggambarkan struktur mesin dan berfungsi unambiguously. Dalam kasus kedua, compiler dan interpreter mungkin menjadi ditulis untuk RTN [yang] akan secara otomatis membangkitkan gandum atau bahkan perangkat keras mesin, Satu compiler RTN bisa menjadi merancang ke/pada output satu ANSI C gandum. Sebagai alternatif, compiler RTN bisa menjadi merancang ke/pada output satu uraian [dari] mesin tepat untuk memasukan ke/pada membuat-topeng IC permesinan. Rangkaian terintegrasi dihasilkan akan satu mikroprosesor [yang] diterima bahasa mesin SRC
Adalah benar itu disana bisa menjadi error di compiler RTN, tetapi pengalaman telah memperlihatkan dimana bahasa uraian formal dan generator otomatis menyediakan hasil superior serta mereka adalah di/dalam penggunaan yang hampir universal di/dalam desain komputer modern. Satu standar industri, adalah berdasarkan pada bahasa pemrograman ADA. Terdapat bahasa uraian tujuan khusus yang lain yang memungkinkan spesifikasi [dari] komponen mesin di gerbang, blok logika dan tingkat subsistem

2.5 MENGGAMBARKAN gaya PENGALAMATAN DENGAN RTN
Jalanan/cara dimana Operands And Result adalah mengakses oleh satu komputer adalah sangat penting ke kegunaan nya. Di sini, juga, presisi notasi formal bisa membantu menjelaskan apa benar-benar terjadi. Di/dalam bagian 2.2.5 kita menyediakan satu uraian informal [dari] beberapa gaya pengalamatan umum. Jika anda mendekati materi ini untuk pertama kali, anda mungkin sudah menemukan definisi informal ini belum jelas dan kebingungan. Penggunaan RTN menyediakan satu jalan/cara dari secara formal menggambarkan gaya pengalamatan diskusikan di/dalam bagian 2.2.5 demikian pula beberapa gaya pengalamatan yang lebih tidak umum lain
Kebutuhan akan berbeda gaya pengalamatan menjadi dasar di atas/terhadap cara biasa [dari] data structuring di/dalam program komputer. Sebuah variabel sederhana di/dalam memori mungkin menjadi menangani oleh satu tetap adalah nilai diketahui ketika instruksi ditetapkan/diperbaiki. Instruksi adalah dengan nyaman terletak oleh offset sehubungan dengan lokasi [dari] instruksi saat ini, mana merupakan isi PC. Alamat [dari] satu elemen array (larik) memerlukan satu indeks itu tidak diketahui sampai pengatur waktu eksekusi.

Translator by : Vita, Dewa, Erika, Jaka, Angga, Anggi, Chandra

No comments: