Pipeline
Suatu cara yang digunakan untuk melakukan sejumlah kerja
secara bersamaan tapi dalam tahap yang berbeda yang dialirkan secara
continue / berkelanjutan pada unit pemrosesan.pipeline sebagai serangkaian pipa yang harus
dilewati oleh instruksi program. Setiap instruksi harus masuk di
Prefetch/Fetch dan keluar di Write-back.
Peranan
Memori Cache:
Tiap stage dalam pipeline
diharapkan menyelesaikan operasinya dalam satu clock cycle. Karenanya, periode
clock harus cukup lama untuk menyelesaikan tugas yang sedang dilakukan pada
tiap stage. Jika unit yang berbeda memerlukan jumlah waktu yang berbeda, maka
periode clock harus memungkinkan tugas terlama dapat diselesaikan.
Suatu unit yang menyelesaikan tugasnya lebih awal akan idle selama sisa periode
clock. Karenanya, pipelining paling efektif dalam meningkatkan performa jika
tugas yang sedang dilakukan dalam stage yang berbeda memerlukan jumlah waktu
yang sama.
Ò Penggunaan
memori cache menyelesaikan persoalan akses memori. maka waktu akses ke cache
biasnya sama dengan waktu yang dibutuhkan untuk menjalankan operasi dasar lain
di dalam processor.
Pipelining
adalah suatu teknik implementasi
dengan mana berbagai instruksi dapat dilaksanakan secara tumpang tindih
(overlapped; hal ini mengambil keuntungan paralelisme yang ada di antara
tindakan yang diperlukan untuk mengeksekusi suatu instruksi.
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.
Definisi
pemrosesan Pipelining:
Pada
umumnya efisiensi sebuah komputer dinilai berdasarkan kecepatan perangkat
keras dan fasilitas-fasilitas perangkat lunak. Penilaian ini disebut
THROUGHPUT, didefinisikan sebagai jumlah pemrosesan yang dapat dikerjakan dalam
suatu interval waktu tertentu. Salah satu teknik yang mendorong
peningkatan suatu sistem throughput yang cukup hebat disebut sebagai pemrosesan
pipeline.
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.
3 kesulitan pada metode Pipeline
Ò 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.
Ò 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.
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
Adalah pengambilan data ke memori atau register
Ó Execute
Menginterpretasikan opcode dan melakukan operasi yang diindikasikan
Adalah 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.
Ó 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
Ó Write Operand (WO)
Menyimpan hasilnya di dalam memori.
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.
Ó 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
Ó Write Operand (WO)
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
Macam-macam
Data Hazard:
Ada 3 jenis pipeline
hazards
É Struktural Hazard, yang
dikarenakan dari konflik resource sistem yaitu ketika hardware tidak dapat
mensuport semua kemungkinan kombinasi pelaksanaan instruksi.
É Control Hazard, instruksi
melompat dan instruksi lainnya yang membuat stall (penundaan),pipeline
sampai timbul NO
OPeration instruksi terpaksa diselipkan di dalam pipeline.
É Data Hazard, muncul karena instruksi selanjutnya menunggu data yang
tergantung dari hasil instruksi sebelumnya yang belum selesai dilaksanakan.
Pipeline
Hazard:
Ò Data hazards
- satu perintahan mempergunakan hasil dari satu Instruksi
sebelumnya
ADD
R1, R2, R3 or
SW R1, 3(R2)
ADD
R4, R1,
R5
LW R3, 3(R2)
Ò Control hazards
- lokasi dari satu perintahan bergantung kepada satu
instruksi sebelumnya
JMP
LOOP
…
LOOP:
ADD R1, R2, R3
Ò Structural hazards
-
dua perintahkan akses kebutuhan ke sumber daya yang sama
= misalnya, memori tunggal berbagi untuk menginstruksikan mengambil dan isi /
simpan
= bentrokan di tabel pesanan tempat
Type
pada Data Hazards
RAW
(membaca setelah tulis)
Ò hanyalah ambil resiko untuk
‘perbaikan’ saluran tetap
Ò instruksi kemudiannya harus bacaan setelah
instruksi lebih awal tulis
WAW
(menulis setelah tulis)
Ò saluran panjang variabel
Ò Instruksi
kemudian harus tulis setelah instruksi lebih awal tulis
WAR
(menulis setelah bacaan)
Ò saluran dengan penghujung bacaan
Ò instruksi kemudian harus tulis setelah
instruksi lebih awal bacaan
Pipeline
Ò Keuntungan
1. Waktu siklus prosesor berkurang, sehingga meningkatkan
tingkat instruksi-isu dalam kebanyakan kasus.
2. Jika pipelining digunakan sebagai pengganti, hal itu
dapat menghemat sirkuit yang digunakan.
3. Secara keseluruhan dapat meningkatkan kinerja
computer.
Ò Kerugian
1. Non-pipelined prosesor hanya menjalankan satu instruksi
pada satu waktu.
2. Instruksi latency di non-pipelined prosesor sedikit lebih
rendah daripada dalam pipelined setara.
3. Non-pipelined prosesor akan memiliki instruksi yang
stabil bandwidth. Kinerja prosesor yang pipelined jauh lebih sulit untuk
meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda
terimakasih infonya sangat membantu
BalasHapusSolder uap