Selasa, 09 Mei 2017

Pemrograman Mikro

Apa itu pemrograman Mikro? 

       Pemrograman mikro adalah proses penerjemahan dan eksekusi dari setiap instruksi prosesor menjadi urutan instruksi yang lebih kecil (mikro). Ini untuk mengatakan bahwa mikro-program adalah proses penulisan kode mikro untuk prosesor-mikro. Ini mendefinisikan fungsi prosesor-mikro sambil mengeksekusi instruksi mesin-bahasa. Juga dikenal sebagai mikro-codingIni adalah teknik yang digunakan dalam menerapkan sebuah Unit Kontrol. Micro-kode atau mikro-program dikembangkan sebagai instruksi set CPU. Dengan demikian, insinyur desain CPU menulis mikro-program untuk mengimplementasikan set instruksi mesin. Dalam proses pengembangan produk perangkat lunak, ini-kode mikro dapat ditulis atau diubah beberapa kali bahkan selama tahap desain nanti. Pada beberapa komputer, mikro-kode yang disimpan dalam ROM dan karenanya tidak dapat dimodifikasi. Tapi di komputer yang lebih besar, mereka disimpan dalam EPROM dan dengan demikian, dapat digantikan dengan versi segar atau yang lebih baru.     
Konsep pemrograman mikro juga digunakan dalam pengembangan perangkat lunak online. Perkembangan pesat dalam teknologi komputer dalam beberapa tahun terakhir telah membuat konsep pemrograman mikro tampak agak berlebihan. Program menjadi lebih kompleks dan ini memiliki dampak langsung pada kinerja perangkat lunak dan pembangunan. Interpreter dan compiler telah membuat kode tingkat rendah dari perintah tingkat tinggi. Kemajuan tersebut telah digantikan keunggulan microprogramming. Telah ada skema desain CPU yang tidak menggunakan pemrograman mikro seperti TTA Prosesor, Superscaler Prosesor, dan Prosesor RISC. Pemrograman mikro menawarkan suatu pendekatan yang lebih terstruktur untuk merancang unit kendali logika (CLU) dibandingkan dengan kendali hard-wired. Rancangan pemrograman mikro relatif mudah diubah-ubah dan dibetulkan, menawarkan kemampuan diagnostik yang lebih baik dan lebih dapat diandalkan daripada rancangan hard-wired. Karena waktu akses memori kendali ROM menentukan kecepatan operasi CLU maka kendali microprogrammed mungkin menghasilkan CLU yang lebih lambat dibandingkan dengan kendali hard-wired. Alasannya adalah bahwa waktu yang diperlukan untuk menjalankan suatu instruksi-mikro juga harus mencakup waktu akses ROM. Sebaliknya, suatu keterlambatan dalam CLU hard-wired hanya mungkin disebabkan oleh keterlambatan waktu penyebaran melalui perangkat keras, yang relatif sangat kecil. Bagaimanapun juga, ilmu ekonomi kelihatannya lebih menyukai kendali hard-wired hanya jika sistem itu tidak terlalu kompleks dan hanya memerlukan beberapa operasi kendali.

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.

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:

1. Membuka/menutup suatu gerbang (gate) dari sebuah register ke sebuah BUS.
2. Mengirim data sepanjang sebuah BUS.
3. Memberi inisial sinyal-sinyal kendali seperti READ, WRITE, SHIFT, CLEAR dan SET.
4. Mengirimkan sinyal-sinyal waktu.
5. Menunggu sejumlah periode waktu tertentu.
6. 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.

l  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).


l  Komponen-Komponen Pokok  Control Unit Microprogrammed
1.         Instruction Register
            Menyimpan instruksi register mesin yang dijalankan.
2.         Control Store berisi microprogrammed
a)        Untuk semua instruksi mesin.
b)        Untuk startup mesin.
c)        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