Semua mikrokontroler menggunakan satu
diantara dua model rancangan yang dinamakan arsitektur Harvard dan von-Neumann.
Berikut secara singkat, perbedaan keduanya dilihat dari pertukaran data antara
CPU dan memori.
Arsitektur
von-Neumann
Mikrokontroler yang menggunakan arsitektur
ini hanya memiliki satu blok memori dan satu bus data 8-bit. Karena pertukaran
data semuanya menggunakan 8 jalur ini, bus akan overload dan komunikasi menjadi
sangat lambat dan tidak efisien. Sebaliknya CPU dapat membaca instruksi atau
baca/tulis data dari/ke memori. Keduanya tidak dapat terjadi secara bersamaan
karena data dan instruksi menggunakan sistem bus yang sama. Misalnya, jika
sebuah baris program memerintahkan register memori RAM dengan nama “SS” harus
dinaikkan satu (misalnya menggunakan instruksi: inc SS), maka mikrokontroler
akan melakukan:
- Baca bagian dari instruksi program yang menyatakan APA yang harus dilakukan (dalam kasus ini adalah instruksi “inc” untuk perintah kenaikkan);
- Baca lebih lanjut dari instruksi ini yang menyatakan data YANG MANA yang akan dinaikkan (alam kasus ini adalah register “SS”);
- Setelah dinaikkan, isi dari register ini harus dituliskan kembali ke register yang sebelumnya telah dibaca
Bus
data yang sama digunakan untuk keseluruhan operasi ini…
Pada
arsitektur Von Neumann, program dan data dibagi pada ruang memori yang sama.
Arsitektur Von Neumann menyediakan fitur penyimpanan dan modifikasi program
secara mudah. Bagaimanapun, penyimpanan program tidak mungkin optimal dan
membutuhkan berbagai pengumpulan program dan data untuk membentuk instruksi.
Pengumpulan program dan data diselesaikan menggunakan time division multiplexing yang
akan berpengaruh pada performa mikrokontroler itu sendiri. Salah satu contoh mikrokontroler
yang menggunakan arsitektur Von Neumann (princeton) adalah Motorola 68HC11.
Motorola 68HC11 |
Keuntungan arrrsitektur Von Neumann :
1.
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.
2.
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).
Kelemahan
Asrsitektur Von Neumann:
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
Mikrokontroler yang menggunakan
arsitektur ini memiliki dua bus yang berbeda. Satu bus 8-bit dan menghubungkan
CPU ke RAM. Yang lain terdiri dari beberapa jalur (12, 14 atau 16) dan
menghubungkan CPU ke ROM. Dengan demikian, CPU dapat membaca instruksi dan
mengakses memori data pada saat yang bersamaan. Karena semua register memori
RAM lebarnya 8-bit, semua pertukaran data dalam mikrokontroler menggunakan
format yang sama, sehingga selama eksekusi penulisan data, hanya 8-bit yang
diperhatikan. Dengan kata lain, yang perlu Anda perhatikan saat merancang
program adalah lebar data yang bisa dipertukarkan atau diproses hanya selebar
8-bit, ya hanya selebar 8-bit saja.
Program yang Anda buat untuk beberapa
mikrokontroler ini akan tersimpan di dalam ROM internal (Flash ROM) setelah
dilakukan kompilasi ke bahasa mesin. Lokasi memori ini dinyatakan dalam 12, 14
atau 16-bit. Sebagian dari bit, 4, 6 atau 8-bit digunakan sebagai instruksinya
sendiri dan diikuti dengan data 8-bit.
Arsitektur
Havard menggunakan memori terpisah untuk program dan data dengan alamat dan bus
data yang berdiri sendiri. Karena dua perbedaan aliran data dan alamat, maka
tidak diperlukan multiplexing alamat
dan bus data. Arsitektur ini tidak hanya didukung dengan bus paralel untuk
alamat dan data, tetapi juga menyediakan organisasi internal yang berbeda
sedemikian rupa instruksi dapat diambil dan dikodekan ketika berbagai data
sedang diambil dan dioperasikan. Lebih lanjut lagi, bus data bisa saja memiliki
ukuran yang berbeda dari bus alamat. Hal ini memungkinkan pengoptimalan bus
data dan bus alamat dalam pengeksekusian instruksi yang cepat. Sebagai contoh,
mikrokontroler Intel keluarga MCS-51 menggunakan arsitektur Havard karena ada
perbedaan kapasitas memori untuk program dan data, dan bus terpisah (internal)
untuk alamat dan data. Begitu juga dengan keluarga PIC dari Microchip yang
menggunakan arsitektur Havard.
Pada mikrokontroler dengan arsitektur
Harvard, bus program biasanya lebih dari 1 byte, yang membolehkan masing-masing
word mengandung instruksi dan data, dengan kata lain satu word - satu
instruksi.
Kelebihan-kelebihan:
- Semua data di dalam program selebar 1 byte (8-bit). Karena bus data yang digunakan dalam pembacaa program memiliki beberapa jalur (12, 14 atau 16), instruksi dan data dapat dibaca dibaca sekaligus. Dengan demikian, semua instruksi dapat dieksekusi hanya dengan satu siklus instruksi, kecuali instruksi lompat (jump) yang dieksekusi dalam dua siklus.
- Kenyataan bahwa program (ROM) dan data sementara (RAM) terpisah, CPU dapat mengeksekusi dua instruksi sekaligus. Gampangnya, selama proses pembacaan dan penulisan RAM (akhir dari suatu instruksi), instruksi berikutnya dibaca melalui bus yang lain.
- Jika menggunakan mikrokontrole menggunakan arsitektur Von-Neumann kita tidak bisa tahu seberapa banyak memori yang dibutuhkan oleh beberapa instruksi. Pada dasarnya, masing-masing instruksi program membutuhkan dua lokasi memori (satu mengandung instruksi APA yang harus dilakukan, sedangkan sisanya mengandung informasi data YANG MANA akan diproses).
Kekurangan :
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
Perbedan Arsitektur
Von Neumann dengan Arsitektur Harvard:
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).