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 অনিবার্য।