ORGANISASI INTERNAL PROSESOR 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.
19
20
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 bitbit flag dan bit-bit kontrol. Flag diset secara otomatis oleh kejadian tertentu selama operasi aritmatik dan lojik. Bit kontrol diset oleh program agar meng-enable modemode 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
21 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.
22 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.
23 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.
24 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)
Gambar 3.4 Ruang alamat yang terpisah. (a) Alamat memori. (b) Alamat I/O.
25 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
26 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.
27 • •
Pada prosesor 16-bit, operasi biasanya dilaksanakan dalam byte, 16-bit, dan kadangkadang 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
MOVE MOVE
MEM, R R2, R1
Instruksi pertama memindah isi lokasi memori MEM ke dalam register CPU R memindah isi register CPU R ke lokasi memori MEM instruksi memindah isi register CPU R1 ke register R2
28 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 LOC, hasilnya disimpan di dalam LOC
29
LOC2
0 0 1 1 1 0 1 1
LOC2
0 0 1 1 1 0 1 0
LOC1
1 1 1 1 1 1 0 1
LOC1
1 1 1 1 1 1 0 0
Hasil
0 0 1 1 1 0 0 1
Hasil
1 1 1 1 1 1 1 0
(a) Operasi AND
LOC2
0 0 1 1 1 0 1 0
LOC1
1 1 1 1 1 1 0 0
Hasil
1 1 0 0 0 1 1 0
(b) Operasi OR
LOC
0 0 1 1 1 0 1 0
Hasil
1 1 0 0 0 1 0 1
(c) Operasi EXOR
(d) Operasi NOT
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 CALLSUB LOC RETSUB RETINT JUMP LOC, OF2 LOOPBCK R,LOC •
jump to location LOC call subroutine at LOC return from subroutine return from interrupt jump to LOC if condition met 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:
30 SETC CLRC ENINT DISINT HALT NOP
set the carry flag clear the carry flag enable interrupts disable interrupts halt instruction execution 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
Gambar 2.10 Timing prosesor untuk instruksi “increment memory direct”.