PEMROGRAMAN MIKRO
Unit Kendali
Logika atau Control Logic Unit adalah bagian yang mengatur seluruh aktivitas
perangkat keras di dalam komputer. CLU menyebabkan suatu instruksi dapat
diambil dari memori, memberi kode pada instruksi tersebut untuk menentukan
operasi yang akan dilaksanakan, menentukan sumber dan tujuan data, dan
menyebabkan perpindahan data dan eksekusi operasi yang diperlukan. CLU
menjalankan seluruh proses sampai sebuah operasi HALT secara tiba-tiba masuk ke
dalam program dan dieksekusi.
Kode instruksi
bersama data, tersimpan di dalam memori. Sebuah instruksi merupakan entitas
kompleks yang pelaksanaannya tidak dapat diselesaikan dalam satu waktu/putaran.
Karena itu setelah menginterpretasikan kode biner suatu instruksi, CLU
menghasilkan serangkaian perintah kendali yang disebut sebagai instruksi-mikro
(microinstruction) yang menjalankan instruksi tersebut. Untuk membedakan sebuah
instruksi dan sebuah instruksi-micro, seringkali instruksi-instruksi disebut
sebagai instruksi-makro (macroinstruction).
Durasi siklus
eksekusi tergantung pada jenis operasi yang akan dikerjakan, mode pengalamatan
data yang digunakan dan jumlah operand yang diperlukan. CLU mengerjakannya
dengan membagi setiap siklus instruksi menjadi serangkaian keadaan (state),
setiap state mempunyai panjang yang sama dan durasi setiap state sama dengan
periode clock/siklus komputer.
Instruksi-mikro
merupakan operasi primitif tingkat rendah yang bertindak secara langsung pada
sirkuit logika suatu komputer. Mereka memerinci fungsi-fungsi (sinyal-sinyal)
seperti berikut:
- Membuka/menutup suatu gerbang (gate) dari sebuah register ke sebuah BUS.
- Mengirim data sepanjang sebuah BUS.
- Memberi inisial sinyal-sinyal kendali seperti READ, WRITE, SHIFT, CLEAR dan SET.
- Mengirimkan sinyal-sinyal waktu.
- Menunggu sejumlah periode waktu tertentu.
- Menguji bit-bit tertentu dalam sebuah register.
Ada dua
pendekatan pokok bagi perancangan sebuah CLU yaitu: rancangan hard-wire (atau
logika acak) dan rancangan microprogrammed. Pada pendekatan hard-wired sejumlah
gerbang (gate), counter, dan register saling dihubungkan untuk
menghasilkan sinyal-sinyal kendali, setiap rancangan memerlukan piranti logika
dan hubungan yang berbeda-beda. Pada pendekatan microprogrammed untuk
setiap instruksi-mikro disebut sebagai sebuah program-mikro, untuk setiap
instruksi-mikro dan disimpan dalam sebuah memori kendali (biasanya ROM) dalam
CLU. Kemudian waktu yang diperlukan dan kendali dihasilkan dengan menjalankan
suatu program-mikro untuk masing-masing instruksi-makro.
KENDALI HARD-WIRED
Sewaktu sebuah
instruksi ditempatkan dalam register instruksi (IR atau Instruction
Register), CLU mendekode instruksi itu dan menghasilkan serangkaian
instruksi-mikro. Sebagai contoh suatu komputer yang mempunyai 16 instruksi,
sehingga setiap instruksi dapat diberi kode dengan sebuah opcode 4 bit yang
unik, sisa word instruksi berisi informasi pengalamatan yang penting
seperti register-register yang terlibat, alamat-alamat memori dan offset).
Mneumonic-nya diperlihatkan sebagai berikut:
- LDR (Load register dari memori)
- LDM (Load memori dari suatu register)
- ADR (Add ke register)
- BRU (Branch/percabangan tidak kondisional)
- BRZ (Branch/percabanan pada nol)
KENDALI MICROPROGRAMMED
Istilah
program-mikro pertama kali diungkapkan oleh M.V Wilkes pada awal tahun 1950-an
ketika dia mengajukan suatu pendekatan baru untuk mengendalikan perancangan
unit. Ide ini menarik perhatian banyak ahli dan insinyur komputer pada saat
itu, walaupun hal itu tampak tidak realistis karena adanya persyaratan untuk
memori kendali yang sangat cepat dan relatif tidak mahal. Situasi ini berubah
secara dramatis dengan adanya pengumuman keluarga komputer IBM System/360 pada
bulan April 1964. Seluruh model terbesar menyertakan memori kontrol yang cepat
dan tidak mahal dan merupakan microprogrammed. Sejak itu, pemrograman
mikro menjadi hal yang umum sejalan dengan peningkatan kecepatan dan penurunan
harga memori kontrol.
Organisasi CLU
Microprogrammed
Instruksi-makro disimpan dalam
memori utama dan diakses melalui memory address register (MAR)
dan memory buffer register (MBR). Instruksi diambil (fetch) ke dalam
register instruksi (IR atauinstruction register) dan pengendali-mikro (microcontroller atau sequencer)
yang bersesuaian. Alamat awal program-mikro dimuat (load) ke dalam kendali
alamat register (CAR atau Control Address Register) dan kemudian kendali
memori mengirim instruksi-mikro pertama ke dalam kendali penyangga register
(CBR atau Control Buffer).
Komponen-Komponen
Pokok Control Unit Microprogrammed
- Instruction Register
Menyimpan instruksi register mesin yang dijalankan.
2.Control Store berisi microprogrammed
- Untuk semua instruksi mesin.
- Untuk startup mesin.
- Untuk memprosesan interupt
3. Address Computing Circuiting
Menentukan alamat Control Store dari mikroinstruksi berikutnya yang akan
dijalankan.
4. Microprogrammed Counter
Menyimpan
alamat dari mikroinstruksi berikutnya.
5. Microinstruction Buffer
Menyimpan
mikroinstruksi tersebut selama dieksekusi.
6. Microinstruction Decoder
Menghasilkan dan mengeluarkan
mikroorder yang didasarkan pada mikroinstruksi dan opcode
instruksi yang akan dijalankan.
Format Instruksi-mikro
Pada dasarnya
ada dua jenis format instruksi-mikro: horisontal dan vertikal. Pada format
instruksi-mikro horisontal, satu bit diberikan untuk setiap sinyal logika yang
dapat dihasilkan oleh instruksi-mikro. Dengan demikian, jika dibutuhkan
sejumlah K sinyal kendali yang berbeda maka dibutuhkan
instruksi-mikro dengan word sepanjang K bit. Untuk menghasilkan suatu
sinyal tertentu, bit yang bersesuaian dalam instruksi mikro diatur menjadi 1,
kehadiran suatu sinyal kendali diindikasikan dengan menempatkan sebuah nol pada
posisi bit yang semestinya. Pendekatan ini mempunyai keuntungan bahwa kita
dapat menghasilkan sebanyak mungkin sinyal kendali yang diperlukan secara
beruntun, yang memungkinkan operasi yang sangat cepat.
Namun demikian
kebanyakan operasi-mikro adalah mutual ekslusif dan tidak pernah dipanggil
secara bersamaan. Karena itu, kita dapat membagi mereka ke dalam
kelompok-kelompok dan menggunakan sejumlah bit (field) untuk memberi kode
sekumpulan intruksi-mikro yang mutual ekslusif. Kemudian digunakan suatu
dekoder untuk memilih operasi mikro tertentu yang akan dipanggil. Jika terbawa
ke dalam ekstrem (hanya satu field) maka proses mengode (coding) dan
mendekode (decoding) menghasilkan suatu format instruksi-mikro vertikal, dimana
hanya ada satu operasi-mikro yang dipanggil pada suatu waktu. Karena itu
instruksi-mikro vertikal menyerupai format sebuah interuksi-makro dan terdiri
atas suatu kode operasi tunggal, disebut sebagai opecode mikro, satu operand
atau lebih, dan berberapa field lain (misalnya untuk percabangan
kondisional).
KEUNTUNGAN
PEMROGRAMAN-MIKRO
Kendali microprogrammed menawarkan
suatu pendekatan yang lebih terstruktur untuk merancang unit kendali logika
(CLU) dibandingkan dengan kendali hard-wired.
1. Rancangan
microprogrammed relative mudah diubah-ubah dan dibetulkan.
2. Menyediakan
kemampuan diagnostic yang lebih baik dan lebih dapat diandalkan daripada
rancangan hard-wired.
3. Utilisasi
memori utama dalam computer microprogrammed biasanya lebih baik Karena
perangkat lunak yang seharusnya menggunakan ruang memori utama justru
ditempatkan pada memori kendali.
4. Pengembangan
ROM lebih lanjut(dalam kaitan dengan harga dan waktu akses) secara lebih jauh
justru menguatkan posisi dominant pemrograman mikro, salah satunya dengan
menyertakan unit memori ketiga disebut sebagai nano-memory (tambahan bagi
memori utama dan memori kendali). Dalam mengerjakan hal ini, mungkin terjadi
pertukaran (trade-off) yang menarik antara pemrograman mikro horisontal dan
vertikal.
KOMPUTER PIPELINE
A. Pengertian Pipeline
Pipeline adalah suatu cara yang
digunakan untuk melakukan sejumlah kerja secara bersama tetapi dalam tahap yang
berbeda yang dialirkan secara kontinou pada unit pemrosesor. Dengan cara ini,
maka unit pemrosesan selalu bekerja.
Urutan
Pengolahan Intruksi Pipeline.
a. Fetch Intrukasi (FI)
b. Decode Instruction (DI)
c. Calculate Operand (CO)
d. Fetch Operand (FO)
e. Execute Instruction (EI)
f. Write Operand (WO)
a. Fetch Intrukasi (FI)
b. Decode Instruction (DI)
c. Calculate Operand (CO)
d. Fetch Operand (FO)
e. Execute Instruction (EI)
f. Write Operand (WO)
Masalah-masalah pada Pipeline
1. Resiko pada Struktur harware muncul dari konflik resource sistem yaitu ketika hardware tidak dapat mendukung semua kemungkinan kombinasi instruksi.
2. Resiko pada Data muncul ketika data untuk suatu instruksi tergantung pada hasil instruksi sebelumnya.
3. Resiko pada kontrol program muncul pada pelaksanaan instruksi yang mengubah nilai pada Program Counter (PC) (contoh :branch/ percabangan).
Keuntungan Pipeline
1. Waktu siklus prosesor berkurang, sehingga meningkatkan kecepatan proses.
2. Beberapa rangkaian digital seperti ADDER dapat dibuat lebih cepat dengan menambahkan lebih banyak rangkaian.
3. Jika pipelining digunakan sebagai pengganti, hal itu dapat menghemat rangkaian yang kompleks.
Kekurangan Pipeline
1. Non-pipelined prosesor hanya menjalankan satu instruksi pada satu waktu. Hal ini untuk mencegah penundaan cabang (yang berlaku, setiap cabang tertunda) dan masalah dengan serial instruksi dieksekusi secara bersamaan. Akibatnya desain lebih sederhana dan lebih murah untuk diproduksi.
2. Instruksi yang bersifat laten (terpendam) di non-pipelined prosesor sedikit lebih rendah daripada dalam pipelined setara.
3. Non-pipelined prosesor akan memiliki bandwidth yang stabil. Kinerja prosesor yang pipelined jauh lebih sulit untuk diprediksi karena harus memiliki kecepatan proses yang bervariasi di antara program yang berbeda.
1. Resiko pada Struktur harware muncul dari konflik resource sistem yaitu ketika hardware tidak dapat mendukung semua kemungkinan kombinasi instruksi.
2. Resiko pada Data muncul ketika data untuk suatu instruksi tergantung pada hasil instruksi sebelumnya.
3. Resiko pada kontrol program muncul pada pelaksanaan instruksi yang mengubah nilai pada Program Counter (PC) (contoh :branch/ percabangan).
Keuntungan Pipeline
1. Waktu siklus prosesor berkurang, sehingga meningkatkan kecepatan proses.
2. Beberapa rangkaian digital seperti ADDER dapat dibuat lebih cepat dengan menambahkan lebih banyak rangkaian.
3. Jika pipelining digunakan sebagai pengganti, hal itu dapat menghemat rangkaian yang kompleks.
Kekurangan Pipeline
1. Non-pipelined prosesor hanya menjalankan satu instruksi pada satu waktu. Hal ini untuk mencegah penundaan cabang (yang berlaku, setiap cabang tertunda) dan masalah dengan serial instruksi dieksekusi secara bersamaan. Akibatnya desain lebih sederhana dan lebih murah untuk diproduksi.
2. Instruksi yang bersifat laten (terpendam) di non-pipelined prosesor sedikit lebih rendah daripada dalam pipelined setara.
3. Non-pipelined prosesor akan memiliki bandwidth yang stabil. Kinerja prosesor yang pipelined jauh lebih sulit untuk diprediksi karena harus memiliki kecepatan proses yang bervariasi di antara program yang berbeda.
Pemerosesan Paralel
Pemrosesan Paralel adalah komputasi dua atau lebih
tugas pada waktu bersamaan dengan tujuan untuk mempersingkat waktu penyelesaian
tugas-tugas tersebut dengan cara mengoptimalkan resource pada sistem komputer
yang ada untuk mencapai tujuan yang sama. Pemrosesan paralel dapat
mempersingkat waktu ekseskusi suatu program dengan cara membagi suatu program
menjadi bagian-bagian yang lebih kecil yang dapat dikerjakan pada masing-masing
prosesor secara bersamaan.
Tujuan utama dari pemrosesan paralel adalah untuk meningkatkan performa
komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu
yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang
paling gampang adalah, bila anda dapat merebus air sambil memotong-motong
bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit
dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau
waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan
berdua.
Performa dalam pemrosesan paralel diukur dari berapa
banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan teknik
paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu
1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam
maka anda memperoleh peningkatan sebanyak 2 kali.
Adapun proses kerja , pemrosesan paralel membagi beban kerja dan
mendistribusikannya pada komputer-komputer lain yang terdapat dalam sistem
untuk menyelesaikan suatu masalah. Sistem yang akan dibangun akan tidak akan
menggunakan komputer yang didesikasikan secara khusus untuk keperluan
pemrosesan paralel melainkan menggunakan komputer yang telah ada. Artinya,
sistem ini nantinya akan terdiri dari sejumlah komputer dengan spesifikasi
berbeda yang akan bekerjasama untuk menyelesaikan suatu masalah.
Mikrokontroler adalah suatu unit yang dapat diprogram cara kerjanya,
sehingga dapat dipergunakan untuk keperluan yang berbeda. Pada masa sekarang
mikrokontroler banyak digunakan sebagai pengontrol pada peralatan-peralatan
mulai dari mainan/hobie, peralatan rumah tangga, sampai kontrol pada peralatan
industri. Beberapa mikrokontroler yang beredar dipasaran merupakan keluaran
beberapa pabrik yang sudah terkenal, misal: Intel, Zilog dan Microchip.
Struktur Mikrokontroler :
a. Register adalah suatu tempat
penyimpanan (Variabel) bilangan bulat 8 bit atau 16 bit. Pada umumnya register
berjumlah banyak, dan masing-masing ada yang memiliki fungsi khusus dan ada
yang memiliki fungsi umum.
b. Accumulor (register A), merupakan
salah satu register khusus yang berfungsi sebagai operand umum proses
aritmatika dan logika.
c. Program counter, merupakan salah satu
register khusus yang berfungsi sebagai pencacah/penghitung eksekusi program
mikrokontroler.
ALU (Arithmetical and Logical Unit), ALU memiliki
kemampuan khusus dalam mengerjakan proses-proses arithmetika.
d. ALU
(Arithmetical and Logical Unit), ALU memiliki kemampuan khusus dalam
mengerjakan proses-proses arithmetika (penjumlahan, pengurangan,
perkalian dan pembagian) dan operasi logika (AND, OR, XOR dan NOT.
e. Clock circuits, mikrokontroler merupakan
rangkaian digital sekuensial, dimana kerjanya berjalan melalui sinkronisasi
clock. Karenanya diperlukan clock circuits yang menyediakan clock bagi seluruh
bagian rangkaian.
f. Internal ROM (On Chip Flash), merupakan memori
yang isinya tidak dapat diubah atau dihapus (pada saat mikrokontroler berjalan)
isinya hanya dapat dibaca saja. ROM biasanya berisi program (urutan-urutan
instruksi) untuk menjalankan mikrokontroler. Data pada ROM dibaca secara
berurutan.
g. Internal RAM, merupakan memori yang isinya dapat
diubah atau dihapus. RAM pada mikrokontroler biasanya berisi data-data variable
dan register. Data yang tersimpan pada RAM bersifat hilang jika catu daya yang
diberikan hilang (mati).
h.Stack pointer, merupakan bagian dari RAM yang
memiliki metode penyimpanan dan pengambilan data yang khusus. Dimana data yang
paling terakhir dimasukkan merupakan data yang pertama kali dibaca kembali
(LIFO).
i. I/O port (serial dan parallel), merupakan sarana
yang digunakan mikrokontroler untuk mengakses peralatan di luar dirinya,
memasukan dan mengeluarkan data.
j. Interrupt circuits, merupakan rangkaian yang
mengendalikan sinyal-sinyal interupsi bail internal maupun eksternal, dengan
adanya sinyal interupsi akan mengakibatkan program utama yang sedang dikerjakan
berhenti sejenak, dan bercabang/.loncat ke program rutin layanan interupsi
(RLI) yang diminta, setelah RLI selesai dikerjakan, mikrokontroler kembali
melanjutkan program utama yang tertunda tadi.
Prinsip kerja
mikrokontroler adalah sebagai berikut :
a. Berdasarkan nilai yang berada
pada register Program Counter, mikrokontroler mengambil data pada ROM dengan
alamat sebagaimana yang tertera pada register Program Counter. Selanjutnya isi
dari register Program Counter ditambah dengan satu (Increment) secara otomatis.
b. Data yang diambil pada ROM merupakan urutan instruksi program yang telah dibuat dan diisikan sebelumnya oleh pengguna.
c. Instruksi yang diambil
tersebut diolah dan dijalankan oleh mikrokontroler. Proses pengerjaan
bergantung pada jenis instruksi, bisa membaca, mengubah nilai-nilai pada
register, RAM, isi Port, atau melakukan pembacaan dan dilanjutkan dengan
pengubahan data.
d. Program Counter telah berubah nilainya (baik karena penambahan otomatis pada langkah 1, atau karena pengubahan-pengubahan pada langkah 2). Selanjutnya yang dilakukan oleh mikrokontroler adalah mengulang kembali siklus ini pada langkah 1 Demikian seterusnya hingga power dimatikan.