BAB2. 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.
0 comments:
Post a Comment