Senin, 13 Juni 2016

Pemrograman Mikro, Komputer Pipeline dan Pemrosesan Paralel




Hi, Cendikians! Hari kita akan saling berbagi pengetahuan tentang Pemrograman Mikro, Komputer Pipeline dan Pemrosesan Paralel. Langsung saja berikut materinya:
 
1.      Pemrograman Mikro
A.    Pengertian Pemrograman Mikro
Ada dua macam pendekatan dalam perancangan unit kendali logika, yaitu "Hard-wired" dan "microprogrammed". Pada hard-wired, perangkat seperti gate, counter, dan register saling dihubungkan untuk menghasilkan sinyal kendali, sehingga setiap instruksi berbeda memerlukan perangkat logika dengan hubungan yang berbeda-beda pula. Sementara pada microprogrammed/ pemrograman mikro dibentuk serangkaian instruksi mikro dan disimpan dalam sebuah memori kendali, kemudian dengan program mikro akan dihasilkan waktu dan sinyal yang dibutuhkan untuk suatu instruksi.
B.     Peralatan Pendukung Pemrograman Mikro
1)      Assembler Mikro, merupakan program-program perangkat lunak yang memungkinkan untuk meng-encode suatu program mikro dalam suatu bahasa simbolik (mnemonics) dan menterjemahkan representasi ini kedalam representasi absolut untuk di load ke memori kendali.
2)      Formatter, adalah program-program yang memfasilitasi pemrograman PROM yang digunakan untuk mengimplementasu memori kendali.
3)      Sistem Pengembangan, adalah peralatan yang memungkinkan programmer untuk menyimpan program mikro dan menguji data pada file disk, mengeditnya dari terminal dan mensimulasikan memori kendali.
4)      Simulator Perangkat Keras, merupakan program-program yang mensimulasikan rincian arus data di dalam hardware yang sedang dirancang.
C.     Keuntungan Pemrograman Mikro
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  

2.      Komputer Pipeline
A.    Mengenal Pipeline
Pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersama tetapi dalam tahap yang berbeda yang dialirkan secara kontinu pada unit pemrosesor. Dengan cara ini, maka unit pemrosesan selalu bekerja.
Teknik pipeline ini dapat diterapkan pada berbagai tingkatan dalam sistem komputer. Bisa pada level yang tinggi, misalnya program aplikasi, sampai pada tingkat yang rendah, seperti pada instruksi yang dijalankan oleh microprocessor. 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.
 Teknik  pipeline  ini menyebabkan ada sejumlah hal yang harus diperhatikan sehingga ketika diterapkan dapat berjalan dengan baik. Tiga kesulitan yang sering dihadapi ketika menggunakan teknik  pipeline  ini adalah :
1)      Terjadinya penggunaan resource yang bersamaan
2)      Ketergantungan terhadap data, dan
3)      Pengaturan Jump ke suatu lokasi memori.
Instruksi pada pipeline yaitu:
1)      Mengambil instruksi dan membuffferkannya.
2)      Ketika tahapan 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
B.     Klasifikasi Pipeline
1)      Berdasarkan fungsi
·         Pipelining aritmatika
·         Pipelining instruksi, memfetch instruksi secara berurutan
·         Pipelining prosesor, ketika stage suatu pipeline merupakan prosesor aktual dan latch-latch (tambahan kunci) saling berbagi memori antara prosesor-prosesor tersebut.
2)      Berdasarkan konfigurasi
·         Unifungsi, menjalankan hanya satu jenis pokok operasi.
·         Multifungsi, menjalankan fungsi-fungsi yang berbeda.
·         Statis, instruksi yang sama dijalankan bersamaan waktu.
·         Dinamis, beberapa konfigurasi fungsional dapat muncul sekaligus.
Cascading atas Stage, yaitu sebuah pipeline yang kompleks tanpa salah satu stage yang penting.
C.     Prinsip Pipelining Secara Umum
Pipeline sangat sering mempunyai hubungan umpan balik (feedback) dan umpan maju (feedforward). Hubungan dari suatu stage dengan stage sebelumnya disebut feedback, sedngkan hubungan dengan stage berikutnya disebut feedforward. Ketika berhubungan dengan dengan suatu pipeline umum, harus ditentukan urutan proses setiap stage. Untuk memberi karakteristik pada struktur antarhubungan dan arus data suatu pipeline umum digunakan tabel reservasi (menunjukkan bagaimana stage-stage diproses secara berurutan untuk evaluasi fungsi tertentu)..
Algoritma Penjadwalan yang efisien dapat diimplementasikan untuk mencegah adanya tubrukan (collision).
Inisiasi, berhubungan dengan permulaan suatu evaluasi fungsi tunggal yang mengikuti path yang dinamai oleh tabel.
Latensi, jumlah unit waktu antara dua inisiasi dalam suatu pipeline.
D.    Masalah-masalah pada Pipeline
Dengan adanya persyaratan bahwa setiap instuksi yang berdekatan harus tidak saling bergantung, maka ada kemungkinan terjadinya situasi dimana pipeline gagal dilaksanakan (instruksi berikutnya tidak bisa dilaksanakan). Situasi ini disebut Hazards. Hazards mengurangi performansi dari CPU dimana percepatan ideal tidak dapat dicapai.
Ada 3 kelompok Hazards :
1)      Structural Hazards muncul dari konflik resource sistem yaitu ketika hardware tidak dapat mensuport semua kemungkinan kombinasi pelaksanaan instruksi.
2)      Data Hazards muncul ketika data untuk suatu instruksi tergantung pada hasil instruksi sebelumnya.
3)      Control Hazards muncul pada pelaksanaan instruksi yang mengubah PC (contoh : branch).
 Adanya Hazards menyebabkan pipeline terhambat (stalled). Tidak ada instruksi baru yang dijemput sampai hambatan itu selesai. Ini berarti instruksi-instruksi selanjutnya akan ditunda pula penjemputannya.
E.     Keuntungan dari Pipeline
1)      Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi-instruksi dalam kebanyakan kasus.
2)      Beberapa combinational sirkuit seperti penambah atau pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak sirkuit.
3)      Jika  pipeline  digunakan sebagai pengganti, hal itu dapat menghemat sirkuit vs combinational yang lebih kompleks sirkuit.
F.      Kerugian dari Pipeline
1)      Prossesor  non-pipeline 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 latency di prossesor non-pipeline sedikit lebih rendah daripada dalam pipeline setara. Hal ini disebabkan oleh fakta bahwa sandal jepit ekstra harus ditambahkan ke jalur data dari prossesor pipeline.
3)      Prossesor non-pipeline akan memiliki instruksi bandwidth yang stabil. Kinerja prossesor yang pipeline jauh lebih sulit untuk meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda.


3.      Pemrosesan Paralel 
A. Pengetian
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.
Beberapa cara telah dikembangkan untuk memperkenalkan paralisme ke dalam arsitektur komputer serial, yaitu:
1)      Pipelining, seperti pada materi sebelumnya, dapat dianggap paralisme.
2)      Unit-unit fungsional berganda (multiple), Daripada memiliki sebuah ALU untuk menjalankan semua fungsi aritmatika dan logika, kita dapat membangun unit-unit terpisah untuk menjalankan fungsi-fungsi berbeda.
3)      Tumpang tindih antara operasi-operasi CPU dan I/O, dengan memiliki prosesor I/O khusus yang menangani semua operasi I/O memungkinkan pelaksanaan instruksi-intruksi program lainnya djalankan bersamaan waktu.
4)      Interleaving memori, memungkinkan lebih dari satu word yang di fetch dari memori pada suatu waktu.
5)      Multiprogramming, merupakan jenis paralisme dengan program-program yang dijalankan sekuensial pada waktu yang sama.
6)      Multiprosesing, memiliki beberapa prosesor yang bekerja bersama pada permasalahan yang sama.
B. Percepatan
Percepatan komputer dengan n prosesor identik tidak selalu n kali lebih cepat, karena alasan konflik atas akses memori, konflik jalur komunikasi dan algoritma yang tidak efisien maka kurang dari n kali.
Suatu batas bawah (Konjektur Minsky, memperkirakan kecepatan sesungguhnya sebesar log2 n Sedang batas atas tergantung keseluruhan program apakah menyertakan bagian I/O (berupa kode sekuential), jika ya batas atas n/ln n.

C. Klasifikasi Arsitektur
Paralelisme dapat diaplikasikan dalam beberapa tingkatan:
1)      Tingkat pekerjaan: antar pekerjaan-pekerjaan. Prinsip dasar multiprograming.
2)      Tingkat prosedur: antar prosedur-prosedur dan di dalam loop.

3)      Tingkat Instruksi: antar fase-fase sebuah siklus instruksi, yaitu fetch, decode dan eksekusi instruksi.
4)      Tingkat Aritmatika dan bit: antar bit-bit dalam sirkuit aritmatika (contoh adder paralel).
Skema yang paling umum digunakan dalam klasifikasi perancangan arsitektur komputer paralel adalah taksonomi Flynn.
a)      Klasifikasi Flynn
Michael J. Flynn (1966) memperkenalkan skema dengan melihat bagaimana mesin menghubungkan instruksi-instruksinya ke data yang sedang diproses.
·         SISD (Single Instruction Stream, single data stream), merupakan suatu komputer serial konvensional dimana instruksi-instruksi dijalankan satu persatu dan instruksi tunggal berhubungan dengan max. Satu operasi data. Kebanyakan komputer SISD di pipelinekan ke beberapa saluran tambahan. Karakter utamanya pelaksanaan instruksi secara sekuential.
·         SIMD (Single Instruction Stream, multiple data stream), instuksi dilaksanakan satu persatu namun mampu nekerja pada beberapa aliran data sekaligus. Juga dapat di pipeline untuk mempercepat proses. Berhubungan dengan prosesor array.
·         MISD (Multiple Instruction Stream, single data stream), melaksanakan beberapa instruksi secara bersamaan pada sebuah item data tunggal. Tidak ada komputer yang masuk kategori ini.
·         MIMD (Multiple Instruction Stream, multiple data stream), eksekusi instruksi saat bersamaan, setiap instruksi beroperasi pada beberapa aliran data. Kelas ini mencakup multiprosesor (komputer mainframe yang di hubungkan kejaringan sampai mikroprosesor yang besar).
b)      Klasifikasi Shore
J.E Shore (1973), membuat klasifikasi berdasarkan bagian-bagian penyusun suatu komputer.
·         Mesin I, satu instruksi dikerjakan pada suatu waktu dan masing-masing beroperasi pada satu word.Unit pengolahan bisa berupa pipeline atau tidak.
·         Mesin II, menjalankan sat instruksi pada satu waktu namun ia beroperasi pada sebuah irisan dari suatu bit dalam suatu waktu, bukannya semua bit dalam suatu word data. Pipeline tidak relevan pada jenis ini.
·         Mesin III (komputer orthogonal), komputer yang memiliki dua unit pengolahanyang beroperasi pada data, satu word dalam suatu waktu atau suatu irisan bit dalam suatu waktu.
·         Mesin IV, dicirikan sejumlah elemen pengolahan (unit pengolahan dan unit memori), dibawah kendali CLU tunggal. Komunikasi hanya lewat kendali logika.
·         Mesin V, dari mengubah mesin IV sehingga elemen-elemen pengolahan dapat berkomunikasi dengan tetangga dekat mereka.
·         Mesin VI (array-logika-dalam-memori), mesin dengan logika prosesor yang tersebar dalam memori. (Contoh prosesor array asosiatif).
c)      Klasifikasi Feng
Tse-yum Feng (1972), mengklasifikasikan atas tingkatan paralelisme mereka. (n panjang word, m panjang irisan bit)
·         n=1 dan m=1 maka terjadi paralelisme, word dan bit diproses per satuan waktu (word serial/bit serial WSBS)
·         n>1 dan m=1 maka semua n irisan bit diproses satu persatuan waktu (WPBS)
·         n=1 dan m>1 maka n word diproses satu persatuan waktu tetapi m bit dari masing-masing word diproses paralel (WSBP).
·         N>1 dan m>1 maka sejumlah nm bit diproses bersamaan (WPBP).
Mesin I Shore berhubungan dengan kelas SISD Flyyn dan Mesin II-IV sebagai subdivisi SIMD. Pada Kelas Feng mesin I = WSBP, II = WPBS dan III sampai IV = WPBP.
D. Pemrosesan ektorSuatu operasi yang bekerja pada minimal satu operand vektor disebut instruksi vektor, dijalankan oleh prosesor vektor. Dua konsep pada pemrosesan vektor:
·         Floating-point blok: untuk dapat menggunakan hanya satu eksponen kita perlu menyusun skala mantissa secara tepat. Namun jika menyebabkan kerugian data maka konsep ini tidak boleh dipakai.
·         Padding: proses pemanjangan sebuah vektor secara otomatis.
Pengalamatan vektor:
o   Rapat-rapat (teratur), elemen disimpan saling rapat berdekatan. Sering dipakai.
o   Jarang-jarang, pola alamat operand vektor harus dihitung secara matematis.
E. Prosesor Array
Yaitu sebuah komputer synchronous dengan lebih dari satu buah elemen pemrosesan (ALU dan register-register) yang beroperasi secara paralel. Memori asosiatif berbeda dari RAM dimana memori ini isinya dapat dialamati dan dapat ditelusuri secara bersamaan waktu. Jika memori asosiatif digunakan dalam prosesor array, komputernya disebut prosesor asosiatif (kelemahan: harga yang tinggi).
F. Sistem Multiprosesor  
Yaitu sebuah sistem dimana sekumpulan prosesor dalam suatu komputer tunggal berhubungan dan bekerja sama.
·         Sistem memori pribadi (pasangan longgar), dimana prosesor memiliki memori lokal yang besar dan mungkin juga piranti I/Onya.
·         Sistem memori terbagi (pasangan ketat), semua prosesor membagi-bagi sebuah memori utama umum. Biasanya piranty I/O terpisah dan memiliki catche yang berbeda.
Organisasi hardware multiprosesor
1)      Bus Umum, skema hubungan paling sederhana yang menjadi jalur komunikasi tunggal antar komponn fungsional.
2)      Saklar crossbar, suatu jalur yang terpisah menghubungkan setiap prosesor ke setiap unit memori.
3)      Memori multiport, dengan mengeluarkan logika kendali, logika saklar arbitrasi prioritas dari saklar crossbar dan meletakkannya di dalam interface masing-masing unit memori.