File

advertisement
1. Asitektur Mikroprosesor
Sejak Intel mengeluarkan seri 4004 sekitar tahun 1970 dikenal ada dua jenis arsitektur
mikroprosesor dilihat dari cara penggunaan memorinya. Jauh sebelum ini, pada tahun
1944 Howard Aiken dari Harvard University bekerja sama dengan engineer IBM
membuat mesin electromechanical yang terbuat dari banyak sekali transistor tabung dan
relay. Mesin ini dikenal sebagai komputer pertama di dunia yang diberi nama Harvard
Mark I. Belakangan baru diketahui bahwa sebelumnya pada tahun 1941 Konrad Zuse
dari Jerman sudah membuat mesin yang dapat diprogram dan bekerja dengan sistem
biner. Namun karena Jerman kala itu terisolasi saat perang dunia ke-II, Harvard Mark I
diyakini sebagai komputer pertama yang memakai prinsip digital.
Mesin Harvard ini tidak lain adalah mesin kalkulator yang dikendalikan oleh pita kertas
yang berisi instruksi. Waktu itu belum terpikirkan konsep komputer yang memakai
memori. Hanya sebelumnya Alan Turing seorang ahli matematika Inggris pada tahun
1939 mengemukanan konsep mesin universal (universal machine). Hampir satu dekade
kemudian pada tahun 1945, Dr. John von Neumann ahli matematika yang lahir di
Budapest Hongaria, membuat tulisan mengenai konsep komputer yang menurutnya
penting untuk menyimpan instruksi dan data pada memori. Sehingga mesin komputer ini
dapat bekerja untuk berbagai keperluan.
Dari dulu hingga saat ini konsep dasar dari komputer yang dikendalikan oleh program
sekuensial masih sama, yaitu terdiri dari CPU, Memori dan I/O (input-output). CPU
(Central Processing Unit) sendiri terdiri dari blok unit control dan ALU (Aritmathic
Logic Unit). Konsep dasarnya semua sama, tetapi kemudian adalah bagaimana
implementasi dan realisasinya. Desainer dan pabrik mikroprosesor membuatnya dengan
arsitektur yang berbeda-beda.
Sebagai pionir era komputer digital, nama Harvard dan Von Neumann diadopsi untuk
menggambarkan dua tipe arsitektur mikroprosesor. Kedua arsitektur itu berbeda pada
cara penempatan memorinya dan dikenal dengan sebutan arsitektur Harvard dan
arsitektur Von Neumann.
Arsitektur Von Neumann adalah arsitektur komputer yang menempatkan program
(ROM=Read Only Memory) dan data (RAM=Random Access Memory) dalam peta
memori yang sama. Arsitektur ini memiliki address dan data bus tunggal untuk
mengalamati program (instruksi) dan data. Contoh dari mikrokontroler yang memakai
arsitektur Von Neumann adalah keluarga 68HC05 dan 68HC11 dari Motorola.
Sebaliknya, arsitektur Harvard memiliki dua memori yang terpisah satu untuk program
(ROM) dan satu untuk data (RAM). Intel 80C51, keluarga Microchip PIC16XX, Philips
P87CLXX dan Atmel AT89LSXX adalah contoh dari mikroprosesor yang mengadopsi
arsitektur Harvard. Kedua jenis arsitektur ini masing-masing memiliki keungulan tetapi
juga ada kelemahannya.
Dengan arsitektur Von Neuman prosesor tidak perlu membedakan program dan data.
Prosesor tipe ini tidak memerlukan control bus tambahan berupa pin I/O khusus untuk
membedakan program dan data. Karena kemudahan ini, tidak terlalu sulit bagi prosesor
yang berarsitektur Von Neumann untuk menambahan peripheral eksternal seperti A/D
converter, LCD, EEPROM dan devais I/O lainnya. Biasanya devais eksternal ini sudah
ada di dalam satu chips, sehingga prosesor seperti ini sering disebut dengan nama
mikrokontroler (microcontroller).
Arsitektur Von Neumann
Keuntungan lain dengan arrrsitektur Von Neumann adalah pada fleksibilitas
pengalamatan program dan data. Biasanya program selalu ada di ROM dan data selalu
ada di RAM. Arsitektur Von Neumann memungkinkan prosesor untuk menjalankan
program yang ada didalam memori data (RAM). Misalnya pada saat power on, dibuat
program inisialisasi yang mengisi byte di dalam RAM. Data di dalam RAM ini pada
gilirannya nanti akan dijalankan sebagai program. Sebaliknya data juga dapat disimpan di
dalam memori program (ROM). Contohnya adalah data look-up-table yang ditaruh di
ROM. Data ini ditempatkan di ROM agar tidak hilang pada saat catu daya mati. Pada
mikroprosesor Von Neumann, instruksi yang membaca data look-up-table atau program
pengambilan data di ROM, adalah instruksi pengalamatan biasa. Sebagai contoh, pada
mikrokontroler 8bit Motorola 68HC11 program itu ditulis dengan :
LDAA $4000 ; A <-- $4000
Program ini adalah instruksi untuk mengisi accumulator A dengan data yang ada di
alamat 4000 (ROM).
Instruksi tersebut singkat hanya perlu satu baris saja. Pada prinsipnya, kode biner yang
ada di ROM atau di RAM bisa berupa program dan bisa juga berupa data.
Arsitektur Von Neumann bukan tidak punya kelemahan, diantaranya adalah bus
tunggalnya itu sendiri. Sehingga instruksi untuk mengakses program dan data harus
dijalankan secara sekuensial dan tidak bisa dilakukan overlaping untuk menjalankan dua
isntruksi yang berurutan. Selain itu bandwidth program harus sama dengan banwitdh
data. Jika memori data adalah 8 bits maka program juga harus 8 bits. Satu instruksi
biasanya terdiri dari opcode (instruksinya sendiri) dan diikuti dengan operand (alamat
atau data). Karena memori program terbatas hanya 8 bits, maka instruksi yang panjang
harus dilakukan dengan 2 atau 3 bytes. Misalnya byte pertama adalah opcode dan byte
berikutnya adalah operand. Secara umum prosesor Von Neumann membutuhkan jumlah
clock CPI (Clock per Instruction) yang relatif lebih banyak dan walhasil eksekusi
instruksi dapat menjadi relatif lebih lama.
Arsitektur Harvard
Pada mikroprosesor yang berarsitektur Harvard, overlaping pada saat menjalankan
instruksi bisa terjadi. Satu instruksi biasanya dieksekusi dengan urutan fetch (membaca
instruksi ), decode (pengalamatan), read (membaca data), execute (eksekusi) dan write
(penulisan data) jika perlu. Secara garis besar ada dua hal yang dilakukan prosesor yaitu
fetching atau membaca perintah yang ada di memori program (ROM) dan kemudian
diikuti oleh executing berupa read/write dari/ke memori data (RAM).
Karena
pengalamatan ROM dan RAM yang terpisah, ini memungkinkan CPU untuk melakukan
overlaping pada saat menjalankan instruksi. Dengan cara ini dua instruksi yang beurutan
dapat dijalankan pada saat yang hampir bersamaan. Yaitu, pada saat CPU melakukan
tahap executing instruksi yang pertama, CPU sudah dapat menjalankan fetching instruksi
yang ke-dua dan seterusnya. Ini yang disebut dengan sistem pipeline, sehingga program
keseluruhan dapat dijalankan relatif lebih cepat.
prinsip pipeline
Pada arsitektur Harvard, lebar bit memori program tidak mesti sama dengan lebar
memori data. Misalnya pada keluarga PICXX dari Microchip, ada yang memiliki
memori program dengan lebar 12,14 atau 16 bits, sedangkan lebar data-nya tetap 8 bits.
Karena bandwith memori program yang besar (16 bits), opcode dan operand dapat
dijadikan satu dalam satu word instruksi saja. Tujuannya adalah supaya instruksi dapat
dilakukan dengan lebih singkat dan cepat.
Kedua hal di atas inilah yang membuat prosesor ber-arsitektur Harvard bisa memiliki CPI
yang kecil. PICXX dari Microchip dikenal sebagai mikroprosesor yang memiliki 1 siklus
mesin (machine cycle) untuk tiap instruksinya, kecuali instruksi percabangan.
Dari segi kapasitas memori, tentu arsitektur Harvard memberi keuntungan. Karena
memori program dan data yang terpisah, maka kavling total memori program dan data
dapat menjadi lebih banyak. Mikrokontroler 8bit Motorola 68HC05 memiliki peta
memori 64K yang dipakai bersama oleh RAM dan ROM. Oleh sebab itu pengalamatan
ROM dan RAM hanya dapat mencapai 64K dan tidak lebih. Sedangkan pada
mikrokontroler Intel keluarga 80C51 misalnya, memori program (ROM) dan memori
data (RAM) masing-masing bisa mencapai 64K.
Tetapi ada juga kekurangannya, arsitektur Harvard tidak memungkinkan untuk
menempatkan data pada ROM. Kedengarannya aneh, tetapi arsitektur ini memang tidak
memungkinkan untuk mengakses data yang ada di ROM. Namun hal ini bisa diatasi
dengan cara membuat instruksi dan mekanisme khusus untuk pengalamatan data di
ROM. Mikroprosesor yang memiliki instruksi seperti ini biasanya disebut ber-arsitektur
Modified Harvard. Instruksi yang seperti ini dapat ditemukan pada keluarga MCS-51
termasuk Intel 80C51, P87CLXX dari Philips dan Atmel AT89LSXX. Tetapi instruksi itu
keseluruhannya menjadi program yang lebih panjang seperti contoh program dengan
80C51 berikut ini.
MOV DPTR,#4000
CLR A
;DPTR = $4000
;@A = 0
MOVC A,@A+DPTR ;A <-- (DPTR+@A)
Urutan program di atas adalah :
1. load/isi data pointer dengan #4000
2. set accumulator A = 0 sebagai offset
3. load/isi accumulator A dengan data di alamat 4000+offset
Bandingkan dengan instruksi 68HC11 yang cukup dengan satu instruksi LDAA $4000.
Seperti yang dikemukan pada tulisan ini, Arsitektur Harvard dan Von Neuman keduanya
memiliki kelebihan sekaligus juga kekurangan. Dalam memilih prosesor tentu saja tidak
hanya dengan mempertimbangkan arsitekturnya. Motorola dengan varian singlechip-nya
ada yang dilengkapi dengan konventer A/D dan D/A, PWM control, port I/O, EEPROM
dan sebagainya. Tetapi tidak ketinggalan juga keluarga Intel 80C51 dan klonnya,
memperkenalkan bus serial I2C yang sangat praktis untuk penambahan devais eksternal.
Intel based MCS-51 adalah arsitektur yang paling banyak diadopsi misalnya oleh Philips
dan Atmel, sehingga kompatibilitas diantaranya semakin besar.
Karena desain arsitektur yang demikian, jumlah siklus mesin (machine cycle) per
instruksi keluarga 68HC05/11 relatif lebih banyak dari keluarga 80C31/51. Misalnya
instruksi 68HC05 Motorola untuk program percabangan, seperti contoh dibawah ini
diselesaikan dengan 6 siklus mesin.
Motorola 68HC05/11 :
DECX
BNE LOOP
Intel 80C31/51 :
DJNZ R0,LOOP
Dibandingkan dengan 80C51 Intel, instruksi yang sama dapat diselesaikan dengan 2
siklus mesin saja.
Namun demikian satu siklus instruksi, kecepatannya ditentukan juga oleh peran
kristal/osilator. Satu siklus mesin mikrokontroler Motorola adalah frekuensi kristal
dibagi 4 sedangkan untuk Intel dibagi 12. Sehingga jika menggunakan kristal yang
sesuai, program percabangan itu dapat diselesaikan oleh kedua contoh mikrokontroler di
atas dalam waktu yang relatif sama.
Download