19
Oleh: Priyanto
Setiap prosesor memiliki beberapa perbedaan dan keistimewaan, tetapi organisasi dasarnya terdiri dari arithmatic/logic unit (ALU), register dan control unit (CU).
ALU
ALU melakukan operasi aritmatik dan lojik pada operand-operand. Operand-operand tersebut disimpan sementara di dalam register. Pada beberapa prosesor hasil operasi disimpan pada register khusus yang disebut akumulator. Tipe operasi ditentukan oleh control unit yang mendekode instruksi yang difetch dan kemudian mengumpankan ke ALU dengan sinyal-sinyal kontrol yang sesuai.
Prosesor juga dapat melakukan operasi biner presisi ganda, untuk mempercepat aplikasi tertentu. Prosesor ini biasanya merupakan prosesor slave yang dihubungkan dengan prosesor utama. Prosesor ini sering disebut dengan prosesor aritmatik.
REGISTER
Register mempertukarkan informasi melalui satu atau lebih bus-bus internal. Bus-bus internal ini memungkinkan terjadinya overlaping operasi-operasi yang dapat meningkatkan kecepatan CPU. Lebar setiap register--yaitu jumlah bit--biasanya sama dengan bus data internal. Pada Gambar 3.1 ditunjukkan enam buah register yang masing-masing memiliki fungsi khusus. Register yang lainnya adalah general purpose register (GPR) yang digunakan untuk menyimpan alamat dan data sementara selama operasi prosesor.
Gambar 2.1. Organisasi dasar mikroprosesor
Beberapa macam register dan fungsinya:
1. Program Counter (PC): Sebelum mengeksekusi program, PC diisi dengan alamat awal program. Kemudian ditambah setiap instruksi baru difetch, sehingga PC selalu menunjuk pada lokasi instruksi berikutnya.
2. Instruction Register (IR): Instruksi-instruksi program terdiri dari opcode dan field alamat. IR mengekstrak instruksi dari data buffer register hanya bagian opcode-nya saja. Setelah itu control unit mendekode isi IR dan membangkitkan sinyal kontrol yang menghidupkan kegiatan sesuai dengan instruksi tersebut.
3. Buffer Register: Buffer register data dan alamat memisahkan bus eksternal dengan bus internal CPU. Dalam beberapa kasus buffer register dapat berupa gerbang penyangga saja.
4. Status Register: Status register menyimpan word status program yang terdiri dari bit-bit flag dan bit-bit-bit-bit kontrol. Flag diset secara otomatis oleh kejadian tertentu selama operasi aritmatik dan lojik. Bit kontrol diset oleh program agar meng-enable mode-mode operasi CPU.
5. Stack Pointer (SP): Stack merupakan lokasi memori yang berdampingan dimana item-item informasi di dalamnya dapat ditambahkan atau dibuang dengan cara seperti
tumpukan (stack like). SP menunjuk puncak stack, dengan kata lain menyimpan alamat item yang berada di atas. Stack dapat berambah naik atau turun sepeti Gambar 3.2. a) Untuk menambah (push) item baru ke dalam stack tersebut, dilakukan dengan
mengurangi SP sehingga menunjuk ke alamat berikut yang lebih rendah.
b) Untuk membuang (pop) suatu item, dilakukan dengan membaca item dari puncak stack kemudian mengurangi SP untuk menunjuk ke puncak yang baru. Cara ini dikenal dengan Last-In-First-Out (LIFO).
CONTROL UNIT
Control unit (CU) membangkitkan urutan sinyal yang berasal dari clock. Tipe urutan sinyal tergantung pada opcode dari masukan yang diberikan dari sumber luar ke CPU. Masukan eksternal tersebut dapat merupakan permintaan interupsi pada program (interupt request).
Gambar 2.2. Contoh Stack
Dari Gambar 2.1 CU membangkitkan dua kelompok sinyal:
1. Sinyal kontrol internal untuk pengaktifan ALU dan pembukaan/penutupan data path antar register.
2. Sinyal kontrol eksternal ditujukan untuk memori dan I/O. Sinyal ini dikirimkan untuk pengaktifan transfer data atau sebagai tanggapan terhadap interupsi dan permintaan bus.
Biasanya CU menggunakan microcoding. Microcoding mengacu pada penggunaan pola biner untuk mengenkode sinyal kontrol pada setiap langkah. Setiap pola menempati satu lokasi read-only memory (ROM) dan disebut microinstruction. Urutan microinstruction disebut microprogram.
2.2 ANTARMUKA EKSTERNAL
Gambar 2.3. Antarmuka eksternal prosesor.
Prosesor menggunakan sejumlah pin atau terminal untuk berhubungan dengan dunia luar. Antarmuka untuk setiap prosesor tidak selalu sama, baik jumlah pin maupun nama sinyalnya. Perbedaan dapat timbul karena bertimbangan biaya, sehinga ada satu pin yang dipakai bersama untuk menghemat biaya. Aspek fungsional antarmuka eksternal terdiri dari beberapa terminal seperti uraian berikut.
2.2.1 Catu Daya dan Clock
Biasanya prosesor memiliki satu atau lebih pin Gnd dan satu atau lebih pin tegangan yang mengacu pada Gnd.
Prosesor adalah merupakan mesin sinkron yang ergantung pada pulsa clock untuk sinkroisasi operasinya. Pengaktifan dan pendeaktifan sinyal kontrol berkaitan dengan ujung (edge) pulsa clock. Pulsa clock disuplai dari sumber eksternal melalui jalur clock.
2.2.2 Bus Alamat
Bus alamat menentukan lokasi yang akan diakses oleh CPU selama operasi baca atau tulis. Lokasi dapat berupa lokasi memori atau lokasi I/O, dimana setiap lokasi menyimpan satu byte dta. Bus alamat akan menentukan seperangkat alamat yang berbeda yang membentuk direct address space dari prosesor.
Apabila terdapat N jalur alamat, maka address space adalah 2N byte lokasi. Alamat terrendahnya adalah 0 dan alamat tertingginya adalah 2N-1. Pada prosesor 16-bit, lokasi byte dipasangkan menjadi lokasi word 16 bit. Byte alamat genap merupakan upper half of word dan byte alamat ganjil merupakan lower half, seperti ditunjukkan Gambar 2.4. Word biasanya dialamati dengan upper byte dan sinyal kontrol menunjukkan bahwa ini adalah alamat word, bukan byte. Pada prosesor 32-bit, lokasi byte dapat dikelompokkan empat kali untuk membentuk lokasi word 32-bit.
2.2.3 Bus Data
Jalur ini membawa data yang akan ditulis atau dibaca dari lokasi yang diidentifikasi melalui saluran alamat. Tidak seperti jalur alamat yang hanya satu arah, jalur data dapat mengirimkan informasi dua arah. Jumlah jalur data akan menenntukan jumlah informasi maksimum yang dapat ditransfer selama sekali operasi baca atau tulis. Bus data ini merupakan dasar pengelompokan prosesor. Sebagai contoh apabila jalur data berjumlah delapan, maka prosesor ini disebut prosesor 8-bit.
2.2.4 Jalur kontrol Transfer Data
Berkaitan dengan transfer data, timbul beberapa pertanyaan:
• Bagaimana memori mengetahui bahwa transfer data untuk memori atau untuk I/O? • Bagaimana memori dan I/O mengetahui bahwa operasi untuk membaca atau menulis? • Pada kasus prosesor 16-bit atau 32-bit, bagaimana memoridan I/O mengetahui bila
transfer data melibatkan satu, dua atau tiga byte?
• Bagaimana memori dan I/O mengetahui bahwa prosesor telah meletakkan alamat baru pada bus alamat dan data baru pada bus data?
• Bagaimana bila memori dan I/O lebih lambat?
• Bagaimana prosesor mengetahui kapan memori dan I/O siap menerima data atau memberikan data?
Seluruh informasi di atas dikomunikasikan dengan jalur pengontrol transfer data. Prosesor model yang digunakan dalam pembahasan ini menggunakan enam jalur sinyal untuk keperluan tersebut. Pada sinyal kontrol berikut dan untuk uraian selanjutnya dalam buku ini, tanda * menandakan bahwa sinyal kontrol yang dimaksud adalah active low.
1. M/IO* (Memory-I/O). Sinyal ini hanya diperlukan jika prosesor memiliki ruang alamat I/O yang terpisah. Sebagai contoh pada Gambar 3.4 ditunjukkan ruang alamat I/O yang terpisah memiliki lokasi 2M byte. Apabila M/IO tinggi menandakan bahwa ada akses memori, sedangkan I/O mengabaikan sinyal tersebut. Apabila M/IO rendah berarti ada akses I/O.
2. R/W* (Read/Write). menunjukkan arah transfer data. Jika tinggi berarti prosesor membaca data, dan jika rendah berarti prosesor menulis data.
3. WRD/B* (Word/Byte). Sinyal ini tidak diperlukan pada prosesor 8-bit. Sinyal ini menunjukkan apakah data yang akan diakses berupa byte atau word.
4. AS (Address Strobe). Prosesor mengaktifkan AS untuk menunjukkan bahwa prosesor telah meletakkan alamat baru pada bus alamat.
5. DS (Data Strobe). Snyal ini memiliki dua peran. Pada operasi tulis menunjukkan bahwa prosesor telah meletakkan informasi pada bus data. Pada operasi baca DS menunjukkan pada memori (atau I/O) kapan meletakkan informasi pada bus data.
6. READY. Seluruh sinyal kontrol di atas dibangkitkan oleh prosesor. READY dibangkitkan oleh rangkaian eksternal untuk menunjukkan kesiapan memori dan I/O pada proses transfer data.
2N-1 2M 2M-1 2M-1 1 1 0 0 (a) (b)
2.2.5 Jalur Interupsi
Karena peran prosesor merupakan titik kontrol sentral, prosesor harus selalu selalu memperhatikan event yang terjadi pada bagian sistem yang lain. Pada prosesor model Gambar 2.3, terdapat dua jalur interupsi yaitu: interrupt request (INTREQ) dan interrupt acknowledge (INTACK).
Pada prosesor model tersebut, urutan langkah interupsi adalah seperti berikut: a. Periferal mengaktifkan INTREQ.
b. Apabila program yang sedang dieksekusi prosesor memiliki prioritas yang lebih tinggi, INTREQ diabaikan. Sebaliknya urutan berjalan seperti berikut.
c. Prosesor menyelesaikan eksekusi instruksi yang sedang dikerjakan agar berhenti dengan tertib.
d. Setelah menerima jawaban (acknowledgement), periferal memuat kode khusus pada bus data mengatur INTREQ menjadi rendah.
e. Prosesor menerima kode alamat yang ditunjukan pada langkah sebelumnya dan mendeaktifkan jalur INTACK.
f. Agar prosesor dapat melanjutkan eksekusi program yang diinterupsi, CPU menyimpan informasi tertentu dari registernya.
g. Pada titik ini prosesor menggunakan kode alamat khusus untuk menentukan alamat awal rutin, yaitu subprogram, yang akan melayani periferal.
2.2.6 Jalur Kontrol Bus
Pada prosesor model terdapat tiga macam jalur kontrol bus, yaitu: bus request (BR), jalur bus grant (BG), dan jalur LOCK. BG melayani jawaban permintaan bus (BR). LOCK menunjukkan pada peralatan I/O apakah prosesor mengijinkan permintaan bus saat ini. 2.2.7 Jalur-jalur Lain
• Jalur RESET, mengembalikan prosesor pada kondisi awal.
• Jalur status, menyatakan informasi tentang keadaan CPU dan envent-event internal lainnya. Sebagai contoh prosesor sedang melakukan fecthing instruksi, melakukan operasi internal, dan sebaginya.
2.3 FORMAT INSTRUKSI
Program terdiri dari urutan instruksi, setiap instruksi memiliki aksi tertentu. Setiap instruksi terdiri dari field kode operasi (operation code) atau opcode yang menentukan operasi apa yang harus dikerjakan oleh CPU. Instruksi dapat berupa opcode saja, tetapi sebagian besar instruksi melibatkan satu atau lebih operand. Untuk menentukan
dimana operand berada (dalam hal ini alamatnya) disebut dengan addressing. Instruksi tanpa operand (opcode saja) disebut dengan zero-address instruction. Instruksi yang memerlukan satu atau lebih operand disebut one-address instruction, two- address instruction, dan seterusnya.
Opcode
(a) Zero-address instruction
Opcode Address
(b) One-address instruction
Opcode Address 1 Address 2
(c) Two-address instruction
Gambar 2.7 Tiga format instruksi yang umum
Panjang instruksi tergantung pada jumlah operand yang terlibat dan cara menentukan setiap operand.
• Pada sistem dua operand:
• 1 operand sebagai sumber (source) atau src. • 1 operand sebagai tujuan (destination) atau dest. • Pada sistem tiga operand:
• 2 operand pertama sebagai sumber (source), src 1 dan src 2. • 1 operand kedua sebagai tujuan (destination), dest.
2.5 SET INSTRUKSI
Dari uraian di muka nampak bahwa instruksi terdiri dari field opcode dan sejumlah field operand (atau alamat). Set opcode yang tersdia menentukan operasi dasar apa yang dapat dinstruksikan ke CPU. Operasi-operasi dasar ini menentukan set instruksi CPU.
Set instruksi dapat berbeda tidak hanya pada tipe operasi, tetapi juga tipe data dimana operasi-operasi tersebut dikaukan.
• Pada prosesor 8-bit, operasi biasanya dilaksanakan dalam byte atau kadang-kadang dalam word 16-bit.
• Pada prosesor 16-bit, operasi biasanya dilaksanakan dalam byte, 16-bit, dan kadang-kadang dalam word 32-bit.
• Pada prosesor 32-bit, operasi biasanya dilaksanakan dalam byte, 16-bit, 32-bit, dan biasanya 32-bit.
Dipandang dari tipe operasi, innstruksi dapat dibagi menjadi tiga kelas utama: transfer data, manipulasi data, dan instruksi kendali. Instruksi transfer data memindahkan data antar lokasi tanpa melakukan operasi apapun pada data yang bersangkutan. Instruksi kendali tidak melakukan operasi pada data. Fungsi instruksi ini untuk pengendalian program dan keadaan (state) CPU. Operasi data yang sesungguhnya dilakukan oleh instruksi manipulasi data, yang memberikan hasil melalui transformasi data. Dua kelas instruksi tersebut dapat dibagi menjadi beberapa kategori sebagai berikut:
1. Instruksi-instruksi transfer data 2. Instruksi-instruksi manipulasi data
a) Aritmatik b) Lojik c) Shift/rotate d) Manipulasi bit e) Pemrosesan string 3. Instruksi-instruksi Kendali a) Kendali prgram b) Kendali CPU
2.5.1 Instruksi-instruksi Transfer Data
Tipe instruksi ini mentransfer data satu byte atau satu word dari satu lokasi kelokasi yang lain. Beberapa contoh instruksi ini adalah:
MOVE R, MEM Instruksi pertama memindah isi lokasi memori MEM ke dalam register CPU R
MOVE MEM, R memindah isi register CPU R ke lokasi memori MEM MOVE R2, R1 instruksi memindah isi register CPU R1 ke register R2
2.5.2 Instruksi-instruksi Manipulasi Data • Instruksi Aritmatik
Semua CPU memiliki instruksi untuk penjumlahan maupun pengurangan integer biner dan bilangan desimal. Menggunakan dua instruksi dasar ini , dapat dibuat program untuk melakukan operasi perkalian dan pembagian. Beberapa contoh instruksi aritmatik adalah:
ADD LOC2, LOC1 menjumlahkan bilangan yang tersimpan di dalam lokasi LOC1 dan LOC 2, hasilnya disimpan di dalam LOC2
SUB LOC2, LOC1 mengurangi bilangan yang tersimpan di dalam lokasi LOC1 dan LOC 2, hasilnya disimpan di dalam LOC2
MUL LOC2, LOC1 mengalikan bilangan yang tersimpan di dalam lokasi LOC1 dan LOC 2, hasilnya disimpan di dalam LOC2
DIV LOC2, LOC1 membagi bilangan yang tersimpan di dalam lokasi LOC1 dan LOC 2, hasilnya disimpan di dalam LOC2
COMP LOC2, LOC1 membandingkan bilangan yang tersimpan di dalam lokasi LOC1 dan LOC 2, hasilnya disimpan di dalam LOC2
INC LOC menambah isi lokasi LOC dengan 1 DEC LOC mengurangi isi lokasi LOC dengan 1
• Instruksi Lojik
AND LOC2, LOC1 AND dua operand yang tersimpan di dalam LOC1 dan LOC2 bit-demi-bit, hasilnya disimpan di dalam LOC2 OR LOC2, LOC1 OR dua operand yang tersimpan di dalam LOC1 dan LOC2
bit-demi-bit, hasilnya disimpan di dalam LOC2
EXOR LOC2, LOC1 EXOR dua operand yang tersimpan di dalam LOC1 dan LOC2 bit-demi-bit, hasilnya disimpan di dalam LOC2 NOT LOC membalik (invert) operand tunggal yang tersimpan di dalam
Gambar 2.9 Contoh operasi lojik
2.5.3 Instruksi-instruksi Kendali • Instruksi Kendali Program
Golongan instruksi ini merubah isi program counter (PC), selanjutnya menyebabkan transfer kendali ke bagian lain dari program. Contoh beberapa instruksi kendali program adalah:
JUMP LOC jump to location LOC CALLSUB LOC call subroutine at LOC RETSUB return from subroutine RETINT return from interrupt
JUMP LOC, OF2 jump to LOC if condition met LOOPBCK R,LOC loop back until condition met
• Instruksi Kendali CPU
Sebagian besar instruksi kendali CPU melibatkan operasi pada register status CPU. Beberapa contoh nstruksi kendali CPU adalah:
0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 0 0 1 LOC2 LOC1 Hasil 0 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 LOC2 LOC1 Hasil (b) Operasi OR (a) Operasi AND
0 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 LOC2 LOC1 Hasil (d) Operasi NOT (c) Operasi EXOR 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 1 LOC Hasil
SETC set the carry flag CLRC clear the carry flag ENINT enable interrupts DISINT disable interrupts
HALT halt instruction execution NOP no operation
2.6 CPU TIMING
Instruction Cycle dan Machine Cycle
Instruction cyce adalah urutan langkah yang diperlukan dalam fetching dan eksekusi
instruksi. Di dalam prosesor, langkah ini dibagi menjadi urutan yang lebih kecil yang disebut machine cycle. Sebagai contoh instruction cycle Gambar 2.10 terdiri dari lima machine cycle (MCY). Pada umumnya MCY terdiri dari tiga atau empat clock cycles. Tipe machine cycle yang umum adalah:
• Memory Read • Memory Write • Internal Operation • Interrupt Acknowledge • Bus Grant