- 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
Yang Ke-2 adalah Komputer Pipeline
2. 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.
Intruksi Pipeline
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)
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.
Dan Yang terakhir di sini adalah Pemrosesan Paralel
Intruksi Pipeline
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)
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.
Dan Yang terakhir di sini adalah Pemrosesan Paralel
3. Pemrosesan Pararel
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 kecepatan 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
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.