Senin, 13 Juni 2016

Pemrograman Mikro, Komputer Pipeline dan Pemrosesan Paralel

Pemrograman Mikro

            Pada awal tahun 1950-an, M.V. Likes pertama kali mengungkapkan istilah pemrograman mikro pada saat mengajukan suatu pendekatan baru untuk mengendalikan perancangan unit. Banyak ahli dan insinyur komputer tertarik dengan ide yang dikemukakannya walaupun idenya tampak tidak realistis karena terkendala persyaratan untuk memori kendali yang sangat cepat tetapi  relatif mahal. Tetapi ide tersebut terbukti realistis dengan adanyan komputer IBM System 360 pada bulan April 1964 yang menggunakan memori kontrol yang cepat dan tidak mahal, yaitu pemrograman mikro.

            Control Unit adalah salah satu bagian dari CPU yang bertugas untuk memberikan arahan/kendali/kontrol terhadap operasi yang dilakukan di bagian ALU. Output dari control unit ini akan mengatur aktivitas dari bagian lainnya dari perangkat CPU tersebut. CU diimplementasikan sebagai sebuah microprogram yang disimpan di dalam tempat penyimpanan kontrol (control store).

            Ada 2 tugas dasar control unit, yaitu pengurutan dan eksekusi. Pengurutan yaitu unit control menyebabkan prosesor menuju sejumlah operasi mikro dalam urutan yang benar, yang didasarkan pada program yang sedang dieksekusi. Pada saat eksekusi, unit control menyebabkan setiap operasi mikro dilakukan.

            Kata mikro mengacu pada fakta bahwa tiap langkah adalah sederhana dan akan menyelesaikan operasi terkecil. Unit kendali logika ( Control Logic Unit ) bertugas untuk mengatur seluruh aktifitas perangkat keras di dalam komputer. Berikut tugas Unit Kendali Logika (CLU) :
1.        Memfetch suatu instruksi dari memori
2.        Memberi kode pada instruksi untuk menentukan operasi mana yang akan dilaksanakan
3.        Menentukan sumber dan tujuan data di dalam perpindahan data
4.        Mengeksekusi operasi yang dilakukan

Setelah menginterpretasi kode biner suatu instruksi, CLU menghasilkan serangkaian perintah kendali, yang disebut sebagai instruksi mikro (microinstruction ) atau operasi mikro. Terdapat 2 pendekatan dalam perancangan CLU, yaitu :
1.    Hardwired atau Random Logic
Sejumlah gerbang ( gate ), counter dan register saling dihubungkan untuk menghasilkan sinyal-sinyal kendali. Setiap rancangan memerlukan sekelompok peranti logika dan hubungan yang berbeda-beda.
2.    Microprogrammed Control
Dibentuk serangkaian instruksi mikro ( program mikro ) yang disimpan dalam sebuah  memori kendali ( biasanya sebuah ROM ) dalam CLU. Waktu yang diperlukan dan    sinyal  kendali yang dihasilkan didapat dengan menjalankan suatu program mikro.

            Instruksi mikro atau operasi mikro merupakan operasi primitif tingkat rendah yang bertindak secara langsung pada sirkuit logika suatu komputer dan mengatur fungsi-fungsi sebagai berikut :
1.        Membuka/menutup suatu gerbang ( gate ) dari sebuah register ke sebuah bus
2.        Mentransfer data sepanjang bus
3.        Memberi inisial sinyal-sinyal kendali seperti READ, WRITE, SHIFT, CLEAR & SET
4.        Mengirimkan sinyal-sinyal waktu
5.        Menunggu sejumlah periode waktu tertentu
6.        Menguji bit-bit tertentu dalam sebuah register

            Ada beberapa tipe operasi mikro, yaitu :
1.        Mendefinisikan elemen dasar prosesor
2.        Mendiskripsikan operasi mikro yang harus dilakukan prosesor
3.        Menentukan fungsi Control Unit yang harus dilakukan prosesor

            Kelemahan Operasi Mikro, yaitu :
1.        Karena waktu akses memori kendali ROM menentukan kecepatan operasi CLU maka kendali microprgrammed mungkin menghasilkan CLU yang lebih lambat dibandingkan dengan kendali hard-wired.
2.        Alasannya bahwa waktu yang diperlukan untuk menjalankan suatu instruksi mikro juga mencakup waktu akses ROM, Sedangkan, suatu keterlambatan dalam CLU hard-wired hanya mungkin disebabkan oleh keterlambatan waktu penyebaran melalui perangkat keras, yang relative sangat kecil. (hard-wired digunakan hanya jika system itu tidak terlalu kompleks dan hanya memerlukan beberapa operasi kendali).

            Meskipun memiliki kelemahan, operasi mikro pun memiliki kelebihan, yaitu :
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.


Komputer Pipeline

            Pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersama tetapi dalam tahap yang berbeda yang dialirkan secara kontinu pada unit pemrosesan. Dengan cara ini, maka unit pemrosesan selalu bekerja. Pada microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai, baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam microprocessor yang menggunakan teknik pipeline, ketika satu instruksi sedangkan diproses, maka instruksi yang berikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi, instruksi yang diproses secara bersamaan ini, ada dalam tahap proses yang berbeda. Jadi, ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi.

            Ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi pipeline. Misalnya sebuah microprocessor menyelesaikan sebuah instruksi dalam 4 langkah. Ketika instruksi pertama masuk ke langkah 2, maka instruksi berikutnya diambil untuk diproses pada langkah 1 instruksi tersebut. Begitu seterusnya, ketika instruksi pertama masuk ke langkah 3, instruksi kedua masuk ke langkah 2 dan instruksi ketiga masuk ke langkah 1. Berikut tahapan pipeline :
1.        Mengambil instruksi dan membuffferkannya
2.        Ketika tahapn kedua bebas tahapan pertama mengirimkan instruksi yang dibufferkan tersebut
3.      Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membuffferkan instruksi berikutnya .

Pipeline dapat kita klasifikasikan menurut fungsi dan konfigurasinya. Secara fungsional, pipeline dapat diklasifikasikan menjadi tiga kelompok pokok : pipelining aritmatika, instruksi, dan prosesor. Sedangkan menurut konfigurasi dan strategi kendalinya mengklasifikasikan pipeline berikut: unifungsi versus multifungsi dan skalar atau vector.

            Keuntungan dari pipelining, yaitu :
1.    Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi dalam kebanyakan kasus ( lebih cepat selesai).
2.      Beberapa combinational sirkuit seperti penambah atau pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak sirkuit. Jika pipelining digunakan sebagai pengganti, hal itu dapat menghemat sirkuit & combinational yang lebih kompleks.
3.    Pemrosesan dapat dilakukan lebih cepat, dikarenakan beberapa proses dilakukan secara bersamaan dalam satu waktu.

            Kekurangan pipelining yaitu :
1.     Pipelined prosesor menjalankan beberapa instruksi pada satu waktu. Jika ada beberapa cabang yang mengalami penundaan cabang (penundaan memproses data) dan akibatnya proses yang dilakukan cenderung lebih lama.
2.        Instruksi latency di non-pipelined prosesor sedikit lebih rendah daripada dalam pipelined setara. Hal ini disebabkan oleh fakta bahwa intruksi ekstra harus ditambahkan ke jalur data dari prosesor pipeline.
3.        Kinerja prosesor di pipeline jauh lebih sulit untuk meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda.
4.        Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi tersebut sama-sama memerlukan resource yang sama, sehingga diperlukan adanya pengaturan yang tepat agar proses tetap berjalan dengan benar.
5.  Sedangkan ketergantungan terhadap data, bisa muncul, misalnya instruksi yang berurutan memerlukan data dari instruksi yang sebelumnya.
6.     Kasus Jump, juga perlu perhatian, karena ketika sebuah instruksi meminta untuk melompat ke suatu lokasi memori tertentu, akan terjadi perubahan program counter, sedangkan instruksi yang sedang berada dalam salah satu tahap proses yang berikutnya mungkin tidak mengharapkan terjadinya perubahan program counter.


Pemrosesan Paralel

            Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.

            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.

            Untuk itu, diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.

            Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing. Pada system komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini computer parallel dibedakan menjadi shared memory parallel machine dan distributed memory parallel machine.

            Adapun arsitektur komputer paralel, sebagai berikut :
1.        Embarasingly Parallel adalah pemrograman paralel yang digunakan pada masalah-masalah yang bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain. Sebenarnya pemrograman ini bisa dibilang sebagai pemrograman paralel yang ideal, karena tanpa biaya komunikasi, lebih banyak peningkatan kecepatan yang bisa dicapai.
2.      Taksonomi dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data yang digunakan:
3.        SISD Single Instruction Single Datapath, ini prosesor tunggal, yang bukan paralel.
4.        SIMD Single Instruction Multiple Datapath, alur instruksi yang sama dijalankan terhadap banyak alur data yang berbeda. Alur instruksi di sini kalau tidak salah maksudnya ya program komputer itu. trus datapath itu paling ya inputnya, jadi inputnya lain-lain tapi program yang digunakan sama.
5.   MIMD Multiple Instruction Multiple Datapath, alur instruksinya banyak, alur datanya juga banyak, tapi masing-masing bisa berinteraksi.
6.        MISD Multiple Instruction Single Datapath, alur instruksinya banyak tapi beroperasi pada data yang sama.