Pengertian 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
dijaankan 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.
Dengan penerapan
pipeline ini pada microprocessor akan didapatkan peningkatan kinerja microprocessor.
Hal ini terjadi karena beberapa instruksi dapat dilakukan secara parallel dalam
waktu yang bersamaan. Secara kasarnya diharapkan akan didapatkan peningkatan
sebesar K kali dibandingkan dengan microprocessor yang tidak menggunakan
pipeline, apabila tahapan yang ada dalam satu kali pemrosesan instruksi adalah K
tahap.
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 dan
lancar. Sedangkan ketergantungan terhadap data bisa muncul, misalnya instruksi
yang berurutan memerlukan data dari instruksi yang sebelumnya. 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.
Teknik pipeline yang diterapkan pada microprocessor, dapat dikatakan
sebuah arsitektur khusus. Ada perbedaan khusus antara model microprocessor yang
tidak menggunakan arsitektur pipeline dengan microprocessor yang
menerapkan teknik ini.
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.
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 pun
seterusnya, ketika instruksi pertama masuk ke langkah 3, instruksi kedua masuk
ke langkah 2 dan instruksi ketiga masuk ke langkah 1.
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.
Kategori Pipeline:
1.Pipeline Unit Arithmetic : berguna untuk operasi vector
2.Pipeline Unit Instruction : berguna untuk komputer yang mempunyai set instruksi yang sederhana
2.Pipeline Unit Instruction : berguna untuk komputer yang mempunyai set instruksi yang sederhana
Proses Pipeline:
Instruksi-instruksi dari program yang sudah berurutan kemudian satu-persatu
memasuki pipeline prosesor untuk diproses. Setiap tingkat pipeline memerlukan
satu clock cycle untuk menyelesaikan satu instruksi dan meneruskan hasilnya ke
pipeline berikutnya.
Generic Pipeline
ada 4 tahapan dalam generic pipeline :
1. Fetch : Ambil instruksi dari memori
2. Decode : Terjemahkan arti dari instruksi
3. Execute : Eksekusi instruksi yang telah di-decode
4. Write-back : Simpan hasil eksekusi ke memori
1. Fetch : Ambil instruksi dari memori
2. Decode : Terjemahkan arti dari instruksi
3. Execute : Eksekusi instruksi yang telah di-decode
4. Write-back : Simpan hasil eksekusi ke memori
Dekomposisi Pengolahan Instruksi
·
Fetch
pengambilan data ke memori atau register
·
Execute
Menginterpretasikan opcode dan melakukan operasi
yang diindikasikan
·
Fetch Instruction (FI)
Membaca instruksi berikutnya ke dalam buffer
·
Decode Instruction (DI)
Menentukan Opcode dan operand specifier
·
Calculate Operand (CO)
Menghitung alamat efektif seluruh operand sumber.
Hal ini mungkin melibatkan displacement, register indirect, atau bentuk kalkulasi alamat lainnya.
Hal ini mungkin melibatkan displacement, register indirect, atau bentuk kalkulasi alamat lainnya.
·
Fetch Operand (FO)
mengambil semua operand dari memori.
Operand-operand yang berada di register tidak perlu diambil.
·
Execute Insruction (EI)
Melakukan operasi yang diindikasikan dan menyimpan hasilnya
Melakukan operasi yang diindikasikan dan menyimpan hasilnya
·
Write Operand (WO)
Menyimpan hasilnya di dalam memori.
Menyimpan hasilnya di dalam memori.
ADA 2 TAHAP
Tahapan pertama mengambil instruksi dan mem-buffer-kannya.
Ketika tahapan kedua bebas, tahapan pertama mengirimkan instruksi yang di-buffer-kan tersebut.Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membufferkan instruksi berikutnya.
-Proses ini disebut instruction prefetch atau fetch overlap.
Tahapan pertama mengambil instruksi dan mem-buffer-kannya.
Ketika tahapan kedua bebas, tahapan pertama mengirimkan instruksi yang di-buffer-kan tersebut.Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membufferkan instruksi berikutnya.
-Proses ini disebut instruction prefetch atau fetch overlap.
Penanganan Percabangan:
1. Multiple Streams
2. Prefetch Target percabangan
3. Loop buffer
4. Memprediksi percabangan
5. Delay percabangan
2. Prefetch Target percabangan
3. Loop buffer
4. Memprediksi percabangan
5. Delay percabangan
Data Hazard
Kita harus memastikan bahwa hasil yang memperoleh ketika arahan
dilaksanakan pada satu prosesor pipelined serupa ke itu memperoleh ketika
arahan yang sama dilaksanakan secara sekuen.
- Ambil resiko terjadi
A? 3 + A
B? 4 × A
- Tidak ada ambil resiko
A? 5 × C
B? 20 + C
Ketika dua operasi bergantung kepada satu sama lain, mereka harus
dilaksanakan secara sekuen pada tempat yang benar.
- Contoh lain:
Mul R2, R3, R4
Tambahkan R5, R4, R6
Instruksi pada pipeline
Tahapan pipeline
·
Mengambil instruksi dan
membuffferkannya
·
Ketika tahapan kedua bebas
tahapan pertama mengirimkan instruksi yang dibufferkan tersebut
·
Pada saat tahapan kedua sedang
mengeksekusi instruksi ,tahapan pertama memanfaatkan siklus memori yang tidak
dipakai untuk mengambil dan membuffferkan instruksi berikutnya
.Berikut ini
adalah gambaran tentang Instuksi pipeline :
Karena untuk setiap tahap pengerjaan instruksi, komponen yang bekerja
berbeda, maka dimungkinkan untuk mengisi kekosongan kerja di komponen tersebut.
Sebagai contoh :
Instruksi 1 : ADD AX, AX Instruksi 2:
ADD EX, CX
Setelah CU menjemput instruksi 1 dari memori (IF), CU akan menerjemahkan
instruksi tersebut(ID). Pada menerjemahkan instruksi 1 tersebut, komponen
IF tidak bekerja. Adanya teknologi pipeline menyebabkan IF akan menjemput
instruksi 2 pada saat ID menerjemahkan instruksi 1. Demikian seterusnya pada
saat CU menjalankan instruksi 1 (EX), instruksi 2 diterjemahkan (ID).
Contoh
pengerjaan instruksi tanpa pipeline :
Contoh pengerjaan instruksi
dengan pipeline :
Dengan adanya pipeline dua instruksi selesai dilaksanakan padadetik keenam
(sedangkan pada kasus tanpa pipeline baru selesai pada detik kesepuluh). Dengan
demikian telah terjadi percepatan sebanyak 1,67x dari 10T menjadi hanya 6T.
Sedangkan untuk pengerjaan 3 buah instruksi terjadi percepatan sebanyak 2, 14x
dari 15T menjadi hanya 7T.
Untuk kasus pipeline sendiri, 2 instruksi dapat dikerjakan dalam 6T (CPI =
3) dan instruksi dapat dikerjakan dalam 7T (CPT = 2,3) dan untuk 4 instruksi
dapat dikerjakan dalam 8T (CPI =2). Ini berarti untuk 100 instruksi akan
dapat dikerjakan dalam 104T (CPI = 1,04). Pada kondisi ideal CPI akan
harga 1.
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.
Keuntungan dari Pipeline
1.
Waktu siklus prosesor berkurang,
sehingga meningkatkan tingkat instruksi-isu dalam kebanyakan kasus.
2.
Beberapa combinational sirkuit
seperti penambah atau pengganda dapat dibuat lebih cepat dengan menambahkan
lebih banyak sirkuit.
Jika pipeline
digunakan sebagai pengganti, hal itu dapat menghemat sirkuit vs combinational yang
lebih kompleks sirkuit.
Kerugian dari Pipeline
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.
Contoh Penerapan Pipeline :
Konsep pemrosesan pipeline dalam suatu komputer mirip dengan suatu baris
perakitan dalam suatu pabrik industri. Ambil contoh, suatu proses pembuatan
sebuah mobil: anggaplah bahwa langkah-langkah tertentu di jalur perakitan
adalah untuk memasang mesin, memasang kap mesin, dan memasang roda (dalam
urutan tersebut, dengan langkah arbitrary interstitial). Sebuah mobil di jalur
perakitan hanya dapat memiliki salah satu dari tiga tahap yang dilakukan
sekaligus.
Setelah mobil memiliki mesin yang terpasang, bergerak ke bagian pemasangan
kap, meninggalkan fasilitas pemasangan mesin yang tersedia untuk mobil
berikutnya. Mobil pertama kemudian pindah ke pemasangan roda, mobil kedua untuk
pemasangan kap, dan mobil ketiga dimulai untuk pemasangan mesin. Jika instalasi
mesin membutuhkan waktu 20 menit, instalasi kap mobil memakan waktu 5 menit,
dan instalasi roda membutuhkan waktu 10 menit, kemudian menyelesaikan semua
tiga mobil ketika hanya satu mobil dapat dioperasikan sekaligus akan memakan
waktu 105 menit.
Tidak ada komentar:
Posting Komentar