Foundationপ্রথম নীতি থেকে
LEVEL 3 · CPU Architecture

Pipeline Hazard

পাইপলাইন হ্যাজার্ড

একটা পরিস্থিতি যেখানে instruction-দের overlap করে চালানো (pipelining) ভুল ফলাফল দিতে পারে, যদি বিশেষ সাবধানতা না নেওয়া হয় — তিন ধরনের: structural, data, control।

also: hazard, data hazard, structural hazard, control hazard

Structural hazard — দুইটা instruction-এর একই cycle-এ একই hardware resource (যেমন একটা মাত্র memory port) দরকার।

Data hazard — একটা instruction একটা মান দরকার যা আগের, এখনও in-flight instruction তৈরি করেনি। সমাধান: forwarding (ALU-এর output সরাসরি পরের instruction-এ পাঠানো, register file bypass করে) বা stalling (pipeline bubble ঢুকিয়ে অপেক্ষা করা) — computer-architecture/forwarding-and-stalling-এ বিস্তারিত।

Control hazard — branch-এর ফলাফল না জেনেই পরের instruction fetch করতে হয়। সমাধান: [[branch-prediction]]।

Load-use hazard (একটা LOAD-এর ফলাফল সাথে সাথে পরের instruction-এ দরকার) forwarding দিয়েও সম্পূর্ণ এড়ানো যায় না — কারণ মান MEM stage-এর আগে অস্তিত্বই নেই — অন্তত ১ stall cycle অনিবার্য।