Altifigence Academy

11 / 24 · प्रयोग

प्रयोगशाला: दो चरण और बुलबुले ट्रेस करें

पुरानी स्थिति से अगली स्थिति निकालें और आउटपुट टैग, मान तथा किनारे तुलना करें।

एक साथ अपडेट होने वाले रजिस्टरों का मॉडल बनाएँ

दो चरण वाले f(a,b)=3(a+b) का चक्र मॉडल बनाएँ। हर पुनरावृत्ति एक उर्ध्व किनारा दर्शाती है। पहले पुराने s2 का उपयोग करें। फिर पुराने s1 से नया दूसरा चरण निकालें और दोनों चरण अपडेट करें। s2 निकालने से पहले s1 अपडेट करने पर इनपुट गलत ढंग से एक किनारे पर दो रजिस्टर पार कर जाता है।

अपनी परियोजना में स्वयं pipeline-model.mjs जोड़ें, सहेजें और Node.js टर्मिनल में node pipeline-model.mjs चलाएँ। किनारा 0 से 3 पर चार इनपुट स्वीकार करें, फिर किनारा 4 और 5 पर निकासी करें। इस हमेशा तैयार अनुबंध में सभी इनपुट स्वीकार होते हैं। Null खाली चरण है; वह संख्यात्मक शून्य नहीं है। वैध शून्य परिणाम भी लेनदेन दर्शाता है।

javascript
import assert from 'node:assert/strict';
const inputs = [[1,2], [250,10], [100,0], [255,255]];
let s1 = null, s2 = null;
const seen = [];
for (let edge = 0; edge < 6; edge++) {
  if (s2 !== null) seen.push({ edge, ...s2 });
  const next2 = s1 === null ? null : {
    tag: s1.tag, y: (s1.sum * 3) % 256
  };
  const next1 = edge < inputs.length ? {
    tag: edge, sum: inputs[edge][0] + inputs[edge][1]
  } : null;
  s1 = next1;
  s2 = next2;
}
assert.deepEqual(seen, [
  { edge: 2, tag: 0, y: 9 },
  { edge: 3, tag: 1, y: 12 },
  { edge: 4, tag: 2, y: 44 },
  { edge: 5, tag: 3, y: 250 }
]);
assert.equal(s1, null);
assert.equal(s2, null);
console.log('PIPELINE PASS: 4 ordered results, latency=2');
किनारास्वीकार इनपुटवितरित आउटपुट
0tag0:1+2कोई नहीं
1tag1:250+10कोई नहीं
2tag2:100+0tag0:y9
3tag3:255+255tag1:y12
4बुलबुलाtag2:y44
5बुलबुलाtag3:y250

दूसरा लेनदेन योग 260 बनाए रखता है और 780 घटकर 12 बनता है। अंतिम में 1530 घटकर 250 बनता है। स्पष्ट किनारे, टैग और मान की तुलना अंकगणितीय त्रुटियों के साथ समय त्रुटियाँ भी पकड़ती है। निकासी के बुलबुले दोनों चरण साफ़ करते हैं ताकि पुराने आउटपुट दोहर न सकें।

अनुपस्थित इनपुट समझने के लिए चुने हुए स्वीकृति किनारों पर null रखें और टैग केवल स्वीकार लेनदेन के लिए बढ़ाएँ। आउटपुट अंतराल बुलबुलों के अनुसार आते हैं, जबकि वैध लेनदेन की विलंबता दो किनारे रहती है। इस मॉडल में आउटपुट बैकप्रेशर नहीं है। अगला अध्याय लचीला व्यवहार जोड़ता है। Node जाँच पास होना इस स्थिति मॉडल को सत्यापित करता है, HDL संकलन या DDS सिम्युलेशन रन को नहीं।

खुद आज़माएँ

किनारा 1 पर इनपुट न हो और B,C,D किनारा 2,3,4 पर स्वीकार हों तो टैग 0 से 3 के वितरण किनारे कौन से होंगे?

व्याख्या पढ़ें

A किनारा 2 पर स्थानांतरित होता है। B,C,D किनारा 4,5,6 पर स्थानांतरित होते हैं। किनारा 3 आउटपुट बुलबुला है। टैग भौतिक किनारा संख्या के बजाय स्वीकृति क्रम 0,1,2,3 से दें।

Lesson files

pipeline-model.mjs ↓

आपका चयन इस ब्राउज़र पर लागू होता है। फ़ुटर से कभी भी बदलें।