Dalam komputer, pipeline adalah
satu set dari elemen pemrosesan data dihubungkan secara seri,
sehingga hasil keluaran dari satu elemen adalah masukkan bagi elemen
berikutnya. Elemen-elemen dari sebuah pipeline sering dijalankan secara paralel.
Contoh pipeline dalam komputer adalah :
a. Pipeline instruksi, biasanya digunakan di unit pemroses sentral agar instruksi-instruksi
dapat dijalankan dalam satu waktu dalam satu sirkuit digital.
Biasanya sirkuitnya dibagi dalam beberapa tahap, termasuk decode instruksi,
aritmetika dan tahap-tahap penjemputan data dari register, dimana setiap
tahap melakukan satu instruksi dalam satu waktu.
b. Pipeline grafis,
sering ditemukan dalam sebagian besar unit pemrosesan grafis, yang terdiri
dari berbagai unit aritmatik atau unit pemroses sentral lengkap, yang
menerapkan berbagai macam tahap dari operasi render yang umum (seperti proyeksi
perspektif, kalkulasi warna dan pencahayaan, primitif gambar, dan sebagainya).
c. Pipeline perangkat lunak, dimana keluaran dari suatu program langsung
dipakai oleh program lain sebagai masukkan sehingga dapat langsung diproses.
Pipeline dapat kita klasifikasikan
menurut fungsi dan konfigurasinya. Secara fungsional, mereka diklasifikasikan
menjadi tiga kelompok pokok yaitu pipelining aritmatika, instruksi dan
prosesor. Ramamoorthy dan Li (1977) mengajukan tiga skema untuk mengklasifikasikan
pipeline menurut konfigurasi dan strategi kendalinya yaitu unifungsi atau
multifungsi, statis atau dinamis, dan skalar atau vektor.
Klasifikasi Berdasarkan Fungsi
- Pipelining aritmatika. Proses segmentasi fungsi dari ALU dari sistem yang muncul dalam
katagori ini. Suatu contoh dari fungsi pipeline aritmatika diberikan dalam
Bagian 9.7.
- Pipelining instruksi. Dalam suatu komputer nonpipeline, CPU bekerja melalui suatu siklus yang
berkesinambungan dari fetch-decode-eksekusi untuk semua instruksinya. Proses
fetch suatu instruksi tidak akan dimulai sampai eksekusi instruksi sebelumnya
selesai. Untuk mem-pipeline fungsi ini, instruksi-instruksi yang berdampingan
di-fetch dari memori ketika instruksi Yang sebelumnya di-decode dan dijalankan.
Proses pipelining instruksi, disebut juga instruction lihat ke-muka
(look-ahead), mem-fetch instruksi secara berurutan. Dengan demikian, jika suatu
instruksi menyebabkan percabangan keluar dari urutan itu maka Pipe akan
dikosongkan dari seluruh instruksi yang telah di-fetch sebelumnya dan instruksi
percabangan (branched-to-instruction) tersebut di-fetch. Proses Pipelining
instruksi dikerjakan pada hampir semua komputer berkemampuan tinggi
(high-perfomance).
- Pipelining prosesor. Sewaktu stage dari suatu pipeline merupakan prosesor aktual dan
latch-latch saling berbagi memori antara prosesor-prosesor tersebut maka
pipeline itu disebut sebagai pipeline prosesor. Dalam pipeline ini, setiap
prosesor mempunyai suatu tugas tertentu yang akan dijalankan pada aliran data,
seperti diperlihatkan pada Gambar 9-9. Pipelining banyak prosesor (multiple
processor) merupakan konsep yang relatif baru dan belum umum.
Klasifikasi Berdasarkan Konfigurasi
Unifungsi vs multifungsi. Kemampuan suatu pipeline
menjalankan hanya satu jenis pokok operasi disebut sebagai pipeline unifungsi.
Misalnya, perkalian floating-point mensyaratkan pipeline agar juga menjalankan
operasi yang sama pada setiap kelompok input. Jika pipeline dapat menjalankan fungsi-fungsi yang berbeda maka disebut sebagai pipeline multifungsi.
Fungsi-fungsi
yang berbeda itu bisa dijalankan baik pada waktu yang bersaman ataupun berbeda,
dengan menghubungkan subkelompok-subkelompok stage yang berbeda dalam pipeline.
Pipeline disusun seperlunya sesuai dengan nilai input kendali tambahan.
Statis
vs dinamis. Ketika instruksi-instruksi yang berjenis sama akan dijalankan secara
bersamaan waktunya maka digunakan pipeline statis. Pipeline ini dapat berupa
pipeline fungsional maupun multifungsional tetapi mungkin mengasumsikan hanya
satu konfigurasi fungsional pada suatu waktu. Suatu pipeline multifungsi statis
dapat bekerja paling baikjika fungsi yang akan dijalankan tidak sering berubah.
Antara perubahan, pipeline terlihat sebagai pipeline unifungsi dan mengulangi
operasi yang sama berulang-ulang. Sebelum mengganti fungsi tersebut, kelompok
input terakhir dari fungsi sebelumnya harus benar-benar telah melewati pipeline
dan proses ini disebut sebagai mengairi pipa (draining the pipe). Kemudian
pipeline dikonfigurasikan untuk fungsi yang baru dan input yang baru boleh
masuk ke dalam pipe.
Dengan
pipeline dinamis, beberapa konfigurasi fungsional dapat muncul sekaligus. Hal
ini berarti harus digunakan pipeline multifungsional. Dalam kasus ini,
konfigurasi pipe berubah-ubah secara konstan, tergantung pada data mana untuk
fungsi yang mana pada stage yang mana untuk setiap penangguhan clock. Pipeline
dinamis memerlukan kendali yang sangat kompleks dan mekanisme perangkai untuk
mengkonfigurasikan pipe bagi input-input tertentu. Untuk alasan ini, pipelining
aktual tidak berada di bawah kendali programer melainkan dibangun ke dalam
arsitektur mesin tersebut. Jika suatu pipeline dalam sebuah sistem perlu
mengubah fungsinya secara berkala maka harga implementasi pipeline dinamis
melebihi pertimbangan harga dari waktu menganggur (idle time) yang dihasilkan
dari proses draining pipeline statis secara terus menerus.
Skalar
vs vektor. Suatu pipeline skalar memproses serangkaian operasi skalar pada
operand skalar (yang berhubungan dengan masing-masing angka bukannya vektor)
seperti ditunjukkan oleh program. Salah satu contoh berupa operasi ADD dalam
loop FOR. Pipeline vektor dirancang untuk memproses instruksi vektor dengan
menggunakan operand vektor. Komputer yang mempunyai instruksi-instruksi vektor
disebut sebagai prosesor vektor dan akan dibahas pada Bab 10. Contoh pipeline
di bab ini dapat digunakan sebagai pipeline skalar atau sebagai bagian dari
pipeline vektor.
Tidak ada komentar:
Posting Komentar