Pipeline Hazard Arsitektur Komputer Pipelining Operand fetch of

  • Slides: 42
Download presentation
Pipeline Hazard Arsitektur Komputer

Pipeline Hazard Arsitektur Komputer

Pipelining Operand fetch of I 2 takes three cycles • Pipeline stalls for two

Pipelining Operand fetch of I 2 takes three cycles • Pipeline stalls for two cycles Caused by hazards • Pipeline stalls reduce overall throughput

� Limits Hazards to pipelining: Hazards prevent next instruction from executing during its designated

� Limits Hazards to pipelining: Hazards prevent next instruction from executing during its designated clock cycle � Three types of hazards • Resource hazards �Occurs when two or more instructions use the same resource �Also called structural hazards • Data hazards �Caused by data dependencies between instructions �Example: Result produced by I 1 is read by I 2 • Control hazards �Default: sequential execution suits pipelining �Altering control flow (e. g. , branching) causes problems �Introduce control dependencies n Common solution is to stall the pipeline until the hazard is resolved, inserting one or more “bubbles” in the pipeline

Hazards Pipeline Bubble Untuk menyelesaikan instruksi tertentu, beberapa langkah dalam pipeline ada yang tidak

Hazards Pipeline Bubble Untuk menyelesaikan instruksi tertentu, beberapa langkah dalam pipeline ada yang tidak relevan. Hal ini disebut ‘pipeline bubble’. Untuk beberapa instruksi, sejumlah langkah dalam pipeline tidak akan dikerjakan. Misalnya, untuk instruksi NOOP, hanya ada dua langkah yang diperlukan yaitu pengambilan instruksi, dan dekode instruksi. Karena itu instruksi ini menyebabkan ‘bubble’ dalam pipeline setelah dua langkah pertama. Sama halnya instruksi LOAD tidak dikerjakan pada tingkat penulisan hasil. Namun demikian, instruksi-instruksi tersebut harus melalui semua tingkatan tanpa melompati langkah yang tidak diinginkan.

Pipeline Hazards Pipeline Hazard Pipeline beroperasi dengan efisiensi penuh asalkan program adalah suatu yang

Pipeline Hazards Pipeline Hazard Pipeline beroperasi dengan efisiensi penuh asalkan program adalah suatu yang ideal yang tidak mengganggu pada tujuan penyelesaian dari satu instruksi untuk setiap clock. Tetapi kadang-kadang program praktis mempunyai tipe yang berbeda dari hubungan antar-instruski yang dihasilkan pada tempat pipeline. Dengan kata lain, ketergantungan antara instruksi-instruksi yang berurutan/berdekatan menyebabkan hazard dalam pipeline dan mempengaruhi operasi mulus dari pipeline instruksi. Ada tiga hal utama yang menyebabkan hazard: § Konflik sumberdaya atau Structural hazard § Ketergantungan data atau data hazard § Branch difficulty atau control hazard

Structural Hazards Konflik Sumberdaya (structural hazard) Bila dua segmen berbeda dalam pipeline memerlukan sumberdaya

Structural Hazards Konflik Sumberdaya (structural hazard) Bila dua segmen berbeda dalam pipeline memerlukan sumberdaya hardware secara bersamaan, maka akan menghasilkan konflik sumberdaya (resource conflict). Berikut beberapa contoh tipikal: 1. Anggap tingkat akhir WB (penulisan hasil) suatu instruksi memerlukan akses memori untuk penyimpanan hasil, dan pada waktu yang sama FO (pengambilan operand) juga memerlukan akses memori untuk pengambilan operand untuk instruksi berikutnya. Jelas, salah satunya akan mengalami penundaan. Jika kita menunda akses memori WB, dia akan menunda operasi pipeline untuk instruksi berikutnya hingga akses memori WB selesai. Dengan kata lain jika kita menunda akses memori FO, operasi parsial instruksi antara FO dan WB akan berjalan terus sedangkan bagian yang mendahului FO akan tetap diam. Satu solusi untuk mengatasi masalah ini adalah dengan menggunakan ‘write output buffer’. Tingkat WB dengan mudah menyimpan hasil dan ‘informasi kontrol lainnya’ (yaitu alamat memori) pada write buffer sebagai pengganti pengaksesan memori utama. Dengan kata lain operasi penyimpanan dalam memori utama dihilangkan dari pipeline. Sirkuit kontrol tambahan melakukan suatu operasi penulisan memori bila memori tersedia dengan mengambil informasi dari write buffer.

Structural Hazards (konflik sumber daya) Konflik Sumberdaya (structural hazard) 2. Konflik sumberdaya lainnya terjadi

Structural Hazards (konflik sumber daya) Konflik Sumberdaya (structural hazard) 2. Konflik sumberdaya lainnya terjadi bila tingkat FI memerlukan akses memori untuk pengambilan instruksi dan tingkat FO memerlukan akses memori untuk pengambilan operand pada saat yang sama. Hal ini dapat diselesaikan dengan mempunyai unit-unit memori cache terpisah untuk instruksi (cache kode) dan operand (cache data) seperti pada kasus Mikropresessor Pentium. Secara bersamaan, cache kode dan cache data dapat diakses.

 Structural Hazards (Konflik Sumberdaya) Example • Conflict for memory in clock cycle 3

Structural Hazards (Konflik Sumberdaya) Example • Conflict for memory in clock cycle 3 I 1 fetches operand I 3 delays its instruction fetch from the same memory

Penanganan Konflik Sumberdaya Minimizing the impact of resource conflicts • Increase available resources •

Penanganan Konflik Sumberdaya Minimizing the impact of resource conflicts • Increase available resources • Prefetch Relaxes just-in-time principle Example: Instruction queue

Data Hazards Ketergantungan Data (data hazard) Jika operand untuk suatu instruksi merupakan hasil dari

Data Hazards Ketergantungan Data (data hazard) Jika operand untuk suatu instruksi merupakan hasil dari instruksi sebelumnya yang belum selesai dalam pipeline, maka kasus ini disebut ketergantungan data (data dependency). Contoh:

Data Hazards (cont’d) Ketergantungan Data (data hazard) Jika operand untuk suatu instruksi merupakan hasil

Data Hazards (cont’d) Ketergantungan Data (data hazard) Jika operand untuk suatu instruksi merupakan hasil dari instruksi sebelumnya yang belum selesai dalam pipeline, maka kasus ini disebut ketergantungan data (data dependency). Contoh I 1: add I 2: sub R 2, R 3, R 4 /* R 2 = R 3 + R 4 */ R 5, R 6, R 2 /* R 5 = R 6 – R 2 */ Memperlihatkan data dependency antara I 1 and I 2 Pipeline diam dalam dua siklus clock

Data Hazards (cont’d) � Three types of data dependencies require attention • Read-After-Write (RAW)

Data Hazards (cont’d) � Three types of data dependencies require attention • Read-After-Write (RAW) �One instruction writes that is later read by the other instruction • Write-After-Read (WAR) �One instruction reads from register/memory that is later written by the other instruction • Write-After-Write (WAW) �One instruction writes into register/memory that is later written by the other instruction • Read-After-Read (RAR) �No conflict

Data Hazards ØAntara dua instruksi A dan B terjadi ‘RAW’ hazard jika B membaca

Data Hazards ØAntara dua instruksi A dan B terjadi ‘RAW’ hazard jika B membaca beberapa item data yang dimodifikasi oleh A. Ø‘WAR’ hazard terjadi jika B memodifikasi beberapa item data yang dibaca oleh A. Ø‘WAW’ hazard terjadi jika A dan B keduanya memodifikasi beberapa item data. Deteksi dini situasi hazard dan koreksi awal untuk mencegah hazard biasanya dilakukan oleh hardware logic yang tepat.

Data Hazards (cont’d)

Data Hazards (cont’d)

Data Hazards (cont’d)

Data Hazards (cont’d)

Data Hazards (cont’d) � � Data dependencies have two implications • Correctness issue �Detect

Data Hazards (cont’d) � � Data dependencies have two implications • Correctness issue �Detect dependency and stall • Efficiency issue �Try to minimize pipeline stalls Two techniques to handle data dependencies • Register interlocking �Also called bypassing • Register forwarding �General technique

Data Hazards (cont’d) � � Register interlocking • Provide output result as soon as

Data Hazards (cont’d) � � Register interlocking • Provide output result as soon as possible An Example • Forward 1 scheme �Output of I 1 is given to I 2 as we write the result into destination register of I 1 �Reduces pipeline stall by one cycle • Forward 2 scheme �Output of I 1 is given to I 2 during the IE stage of I 1 �Reduces pipeline stall by two cycles

Data Hazards (cont’d)

Data Hazards (cont’d)

Data Hazards (cont’d) Implementation of forwarding in hardware • Forward 1 scheme Result is

Data Hazards (cont’d) Implementation of forwarding in hardware • Forward 1 scheme Result is given as input from the bus Not from A • Forward 2 scheme Result is given as input from the ALU output

Data Hazards (cont’d) � Register interlocking • Associate a bit with each register �Indicates

Data Hazards (cont’d) � Register interlocking • Associate a bit with each register �Indicates whether the contents are correct � 0 : contents can be used � 1 : do not use contents • Instructions lock the register when using • Example �Intel Itanium uses a similar bit �Called Na. T (Not-a-Thing) �Uses this bit to support speculative execution

Data Hazards (cont’d) Example I 1: add I 2: sub R 2, R 3,

Data Hazards (cont’d) Example I 1: add I 2: sub R 2, R 3, R 4 /* R 2 = R 3 + R 4 */ R 5, R 6, R 2 /* R 5 = R 6 – R 2 */ I 1 locks R 2 for clock cycles 3, 4, 5

Data Hazards (cont’d) � Register forwarding vs. Interlocking • Forwarding works only when the

Data Hazards (cont’d) � Register forwarding vs. Interlocking • Forwarding works only when the required values are in the pipeline • Intrerlocking can handle data dependencies of a general nature • Example load R 3, count ; R 3 = count add R 1, R 2, R 3 ; R 1 = R 2 + R 3 �add cannot use R 3 value until load has placed the count �Register forwarding is not useful in this scenario

Handling Branches Bila suatu instruksi cabang (branch) memasuki pipeline, dia dikenali ketika fase pendekodean

Handling Branches Bila suatu instruksi cabang (branch) memasuki pipeline, dia dikenali ketika fase pendekodean instruksi. Tindakan khusus dilakukan oleh prosesor untuk instruksi cabang tidak bersyarat (unconditional branch) dan instruksi cabang bersyarat (conditional branch) dapat dilihat pada bagan alir berikut:

Handling Branches � Branches alter control flow • Require special attention in pipelining •

Handling Branches � Branches alter control flow • Require special attention in pipelining • Need to throw away some instructions in the pipeline �Depends on when we know the branch is taken �First example (next slide) �Discards (flush) three instructions I 2, I 3 and I 4 �Pipeline wastes three clock cycles �Called branch penalty • Reducing branch penalty �Determine branch decision early �Next example: penalty of one clock cycle

Handling Branches (cont’d)

Handling Branches (cont’d)

Handling Branches (cont’d) �Delayed branch execution • Effectively reduces the branch penalty • We

Handling Branches (cont’d) �Delayed branch execution • Effectively reduces the branch penalty • We always fetch the instruction following the branch �Why throw it away? �Place a useful instruction to execute �This is called delay slot Delay slot add R 2, R 3, R 4 branch target add R 2, R 3, R 4 sub R 5, R 6, R 7 . . .

Branch Prediction �Three prediction strategies • Fixed �Prediction is fixed �Example: branch-never-taken �Not proper

Branch Prediction �Three prediction strategies • Fixed �Prediction is fixed �Example: branch-never-taken �Not proper for loop structures • Static �Strategy depends on the branch type �Conditional branch: always not taken �Loop: always taken • Dynamic �Takes run-time history to make more accurate predictions

Branch Prediction (cont’d) �Dynamic branch prediction • Uses runtime history �Takes the past n

Branch Prediction (cont’d) �Dynamic branch prediction • Uses runtime history �Takes the past n branch executions of the branch type and makes the prediction • Simple strategy �Prediction of the next branch is the majority of the previous n branch executions �Example: n = 3 �If two or more of the last three branches were taken, the prediction is “branch taken” �Depending on the type of mix, we get more than 90% prediction accuracy

Characteristics of Pipelined Processor Design � Main memory must operate in one cycle •

Characteristics of Pipelined Processor Design � Main memory must operate in one cycle • This can be accomplished by expensive memory, but • It is usually done with cache � Instruction separate and data memory must appear • Harvard architecture has separate instruction & data memories • Again, this is usually done with separate caches � Few buses are used • Most connections are point to point • Some few-way multiplexers are used � Data is latched (stored in temporary registers) at each pipeline stage—called “pipeline registers. ” � ALU operations take only 1 clock (esp. shift)

KINERJA PIPELINE � Analisis berikut menunjukkan bahwa waktu yang digunakan untuk menyelesaikan m instruksi

KINERJA PIPELINE � Analisis berikut menunjukkan bahwa waktu yang digunakan untuk menyelesaikan m instruksi dalam suatu pipeline n tingkat, � Waktu yang digunakan instruksi pertama = ntc di mana tc adalah durasi satu siklus clock. � Waktu yang digunakan untuk sisa instruksi (m – 1) adalah (m – 1)tc. � Total waktu yang digunakan untuk m instruksi adalah: (ntc) + (m – 1) tc = (n + m – 1) tc.

KINERJA PIPELINE � Jika prosesor adalah non-pipeline, maka waktu yang digunakan untuk m instruksi

KINERJA PIPELINE � Jika prosesor adalah non-pipeline, maka waktu yang digunakan untuk m instruksi adalam nmtc dengan menganggap waktu siklus instruksi sama dengan ntc � Gain Kinerja (Speed-up) pipeline adalah waktu yang digunakan dalam mode non-pipeline dibagi waktu yang digunakan dalam mode pipeline, dapat dituliskan: Untuk nilai m >> (n – 1), maka (n + m – 1) mendekati m. Karena itu speed-up = nm/m = n Jadi, speed-up maksimum secara teoritis adalah sama dengan jumlah tingkat dalam pipeline.

KINERJA PIPELINE

KINERJA PIPELINE

KINERJA PIPELINE Contoh 11. 2. Sebuah program menggunakan 500 s untuk eksekusi pada sebuah

KINERJA PIPELINE Contoh 11. 2. Sebuah program menggunakan 500 s untuk eksekusi pada sebuah prosesor non-pipeline. Anggap kita menginginkan menjalankan 100 program dengan tipe yang sama pada prosesor pipeline lima tingkat dengan perioda clock 20 s. Berapa rasio speed-up dari pipeline ? Berapa speed-up maksimum yang dapat dicapai ? Berapa throughput ? Solusi: Waktu yang digunakan oleh satu program pada prosesor non-pipeline = mntc = 500 s. Anggap siklus instruksi menggunakan lima clock masing-masing 20 s, jadi m = mntc/ntc = 500/100 = 5. Karena itu, satu program mempunyai 5 instruksi. Jumlah instruksi dalam 100 program = 500 instruksi. Sekarang kita kalkulasi speed-up ketika 100 program dijalankan dalam prosesor pipeline. Untuk n = 5 dan m = 500, tc = 20 s. Speed-up maksimum = n = 5 Efisiensi (rasio speed-up) = speed-up aktual /speed-up maks = 4, 96 / 5 = 0, 992 = 99, 2%

SOAL-SOAL LATIHAN PIPELINE 1. 2. 3. Gambarkan space-time diagram (Gantt’s chart) untuk pipeline enam-tingkat

SOAL-SOAL LATIHAN PIPELINE 1. 2. 3. Gambarkan space-time diagram (Gantt’s chart) untuk pipeline enam-tingkat yang menunjukkan waktu yang digunakan untuk memproses 8 pekerjaan. Tentukan jumlah siklus clock yang digunakan untuk memproses 200 pekerjaan dalam sebuah pipeline enam-tingkat. Sebuah sistem non-pipeline memproses sebuah pekerjaan dalam waktu 50 ns. Dengan pekerjaan yang sama dapat dilakukan dalam pipeline enam-tingkat di mana satu siklus clock = 10 ns. Tentukan speed-up ratio dalam pipeline untuk 100 pekerjaan. Berapa speedup maksimum yang dapat dicapai?

Operation: Ai * Bi + C i Fig. Example of pipeline processing Memory Ai

Operation: Ai * Bi + C i Fig. Example of pipeline processing Memory Ai Segment 1 Bi Ci R 1 Ai R 2 Bi R 2 R 1 Multiplier Segment 2 R 3 R 1 * R 2 R 4 Ci R 4 R 3 Adder R 5 R 3 + R 4 Segment 3 R 5

Operation: Ai * Bi + Ci for i = 1, 2, 3, …. .

Operation: Ai * Bi + Ci for i = 1, 2, 3, …. . , 7 Table. isi register pada contoh pipeline Clock pulse number Segment 1 Segment 2 Segment 3 R 1 R 2 R 3 R 4 R 5 1 A 1 B 1 2 A 2 B 2 A 1 * B 1 C 1 3 4 A 3 A 4 B 3 B 4 A 2 * B 2 A 3 * B 3 C 2 C 3 A 1 * B 1 + C 1 A 2 * B 2 + C 2 5 A 5 B 5 A 4 * B 4 C 4 A 3 * B 3 + C 3 6 A 6 B 6 A 5 * B 5 C 5 A 4 * B 4 + C 4 7 A 7 B 7 A 6* B 6 C 6 A 5 * B 5 + C 5 8 A 7 * B 7 C 7 A 6 * B 6 + C 6 9 A 7 * B 7 + C 7

§ The operands pass through all four-segments in a fixed sequence. Clock input S

§ The operands pass through all four-segments in a fixed sequence. Clock input S 1 R 1 segment 1 S 2 R 2 segment 2 S 3 R 3 segment 3 S 4 R 4 segment 4 S 1 S 2 S 3 S 4 = combinational circuits R 1 R 2 R 3 R 4 = registers

Ø Pikirkan keadaan di mana sebuah pipeline k segment dengan waktu siklus clock tp

Ø Pikirkan keadaan di mana sebuah pipeline k segment dengan waktu siklus clock tp digunakan untuk mengeksekusi n task. Ø Task pertama T 1 memerlukan waktu sebesar ktp untuk menyelesaikan operasinya karena terdapat k segment dalam pipe. Ø Sisa task n-1 muncul dari pipe dengan rate satu task per siklus clock dan mereka akan selesai selama = (n-1)tp. Ø Karena itu, untuk menyelesaikan n tasks dengan pipeline ksegment memerlukan siklus clock = k+(n-1). S = speed up S= ntn (k + n – 1)tp

Waktu Tunda Karena Instruksi Cabang Bersyarat Instruksi cabang bersyarat mempunyai dua kondisi: 1. Kondisi

Waktu Tunda Karena Instruksi Cabang Bersyarat Instruksi cabang bersyarat mempunyai dua kondisi: 1. Kondisi yang diuji berhasil; di sini isi pipeline dibilas dan instruksi pada alamat cabang masuk ke pipeline. 2. Kondisi yang diuji tidak berhasil dan di sini ada eksekusi sekuensial; dalam kasus ini, isi pipeline tidak terpengaruh. Waktu tunda (delay) yang disebabkan oleh instruksi cabang bersyarat dijelaskan menggunakan contoh berikut: Anggap ada m instruksi yang akan dieksekusi: p adalah probabilitas instruksi cabang bersyarat dan q adalah probabilitas instruksi cabang yang sukses. Karena itu jumlah instruksi yang menyebabkan instruksi cabang sukses adalah mpq

Waktu Tunda Karena Instruksi Cabang Bersyarat Jika tidak ada instruksi cabang di dalam kancah

Waktu Tunda Karena Instruksi Cabang Bersyarat Jika tidak ada instruksi cabang di dalam kancah (stream), rutin program selesai dalam m clock. Semua hasil instruksi cabang pada pembilasan pipeline dan pengisian kembali adalah dari alamat cabang. Instruksi dari alamat cabang (alamat target) memerlukan n siklus clock untuk pengeksekusian. Total siklus clock yang diperlukan untuk mengesekusi m instruksi = (waktu tunda dalam siklus clock yang dimulai dari instruksi cabang) + (siklus clock yang diperlukan untuk instruksi non-cabang): = mpqn + {(m – mp) + mp – mpq)} = mpqn + {(m – mpq)} = mpqn + m(1 – pq) Jadi, m instruksi dieksekusi dalam mpqn + m(1 – pq) siklus clock. Rata-rata jumlah clock per instruksi (CPI) = 1 + pq(n – 1) Jika program tidak terdapt pencabangan, q = 0; CPI = 1.

Contoh 11. 3. Sebuah program mempunyai instruksi cabang 20%. Anggap semua pencabangan berhasil, hitung

Contoh 11. 3. Sebuah program mempunyai instruksi cabang 20%. Anggap semua pencabangan berhasil, hitung speed-up dalam pipepline dengan enam tingkat. Solusi: Jika tidak instruksi cabang dalam program, speed-up = n = jumlah tingkat = 6 p = 0, 2 q = 1, 0 n=6 CPI = 1 + pq(n - 1) = 1 + 0, 2 x 1, 0 x (6 -1) = 2, 0 Prosesor non-pipline memerlukan 6 clock per instruksi Speed-up = 6/2 = 3, 0

Contoh 11. 4. Sebuah program mempunyai instruksi cabang 20%. Jika dijalankan pada prosesor pipeline

Contoh 11. 4. Sebuah program mempunyai instruksi cabang 20%. Jika dijalankan pada prosesor pipeline lima tingkat, dari pengamatan menghasilkan pencabangan sukses 60%. Hitung peningkatan performanya pada prosesor pipeline. Berapa speed-up maksimum yang mungkin jika tidak ada pencabangan ? Solusi: p = 0, 2 q = 0, 6 n=5 CPI = 1 + pq(n - 1) = 1 + 0, 2 x 0, 6 x (5 -1) = 1, 48 Prosesor non-pipline memerlukan 5 clock per instruksi Speed-up = 6/2 = 3 Speed-up maksimum jika tidak ada pencabangan = 5