Pipeline Hazard
Pipeline hazards, pipeline में आने वाले रुकावट को कहते हैं। Pipeline hazard के कारण instruction execution के दौरान आने वाले दूसरे instruction में बाधा उत्पन्न होती है।
दूसरे शब्दों में, pipeline hazards उस स्थिति को कहते हैं जो instruction के execution में जटिलता, विलम्ब अथवा बाधा उत्पन्न करती है।
यह समस्या मुख्य रूप से high-speed processing devices जैसे कि मॉर्डन प्रोसेसर्स में देखने को मिलती है।
Type of Pipeline hazards
Pipeline hazard निम्न प्रकार के होते है :-
1. Structural Hazards:
ये hazard तब होती है जब दो या दो से अधिक प्रोसेस एक ही resource का उपयोग करती हैं, जिससे अन्य प्रोसेस का execution रुक जाता है।
जैसे कि दो प्रोसेस एक ही समय में print के लिए प्रिंटर में डेटा भेजतीहैं, तो कोई एक प्रोसेस रुकजातीहै, जिससे hazard उत्पन्न होता जाता है।
इस तरह के hazard को रोकने के लिए पर्याप्त मात्रा में resource की आवश्यकता होती है, जिससे सारे instruction एक साथ execute हो सकें।
2. Data Hazards:
Data hazard को data dependency भी कहते हैं। जब कोई instruction किसी दूसरे instruction के परिणाम पर निर्भर करता है और उसके परिणाम में देरी हो जाती है, तो इसे डेटा hazard कहते हैं।
दूसरे शब्दों में, data hazard तब आता है जब डेटा dependency((निर्भरता) वाले instruction pipeline में instruction डेटा के लिए कोई resource अथवा destination उपलब्ध नहीं होता।
Data hazard execution टाइम को affect कर सकता है क्योंकि processor को wait करना पड़ता है जब तक डेटा उपलब्ध नहीं होता।
Example:
Instruction 1: A= 5+2;
Instruction 2: B= A+12;
इसमें दूसरा instruction “A” के मान पर निर्भर रहता है। जब तक instruction 1 पूरी तरह से execute नहीं हो जाता, तब तक instruction 2 रुका रहेगा। इसी स्थिति को hazard कहते हैं। क्योंकि जब तक पहले instruction का मान (A का मान)) execute नहीं हो जाता, तब instruction 2 “A” के मान के लिए रुका रहेगा।
3. Control Hazards:
यह hazard तब होती है जब processor अगले instruction का address calculate कर रहा होता है लेकिन अभी तक current instruction पूर्ण नहीं हुई होती।
जब एक instruction का execution शुरू होता है और अगला instruction पुनः प्राप्त होने से पहले current instruction का result उपयोग किया जाता है, तो इस स्थिति में control hazard उत्पन्न होता है।
Control hazard का एक सामान्य उदाहरण branch instructions होते हैं, जैसे conditional branch या jump instructions।
जब CPU में एक branch instruction को execute करने से पहले अगले instruction का address निश्चित नहीं किया जाता, तब तक यह hazard उत्पन्न करते हैं।