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
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
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:
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
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.
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.