Altifigence Academy

9 / 24 · अवधारणा

पाइपलाइन सीमाओं पर पूरा लेनदेन संग्रहीत करें

योग और स्केलिंग को बाँटें तथा valid, टैग और चौड़ाई साथ रखें।

रजिस्टर सीमा बिट के साथ अर्थ भी आगे ले जाती है

f(a,b)=3(a+b) को दो चरणों में बाँटें। पहला चरण आठ बिट के दो चिह्नरहित ऑपरैंड का नौ बिट योग रखता है। दूसरा चरण ग्यारह बिट का स्केल किया हुआ मान बनाता है और उसके निचले आठ बिट रखता है। सबसे बड़ा चौड़ा परिणाम 1530 है। इस पूर्णांक व्यंजक में मध्यवर्ती योग की चौड़ाई घटाने से संयोग से अंतिम मॉड्यूलो-256 मान बना रहता है, लेकिन ओवरफ़्लो बताने या बाद की तुलना के लिए आवश्यक जानकारी खो जाएगी। मध्यवर्ती चौड़ाई स्पष्ट रखें।

हर चरण डेटा के साथ valid और टैग रखता है। valid शून्य होने का अर्थ खाली बुलबुला है। खाली चरण में पुराने डेटा बिट रह सकते हैं, लेकिन उन्हें लेनदेन नहीं गिनना चाहिए। टैग में उसके मान जैसा ही रजिस्टर विलंब चाहिए। दो डेटा रजिस्टर और केवल एक टैग रजिस्टर होने से लेनदेन A के परिणाम से B की पहचान जुड़ जाती है।

यह कोर स्टॉल नहीं मानता और पोर्ट हमेशा तैयार हैं। गुणा करने से पहले s1 बढ़ाएँ और स्थिरांक का आकार तय करें। दूसरा चरण पुराने s1 और t1 पढ़ता है; नया इनपुट एक ही किनारे पर दोनों रजिस्टर पार नहीं कर सकता।

SystemVerilog
logic [8:0] s1;
logic [7:0] s2, t1, t2;
logic v1, v2;
logic [10:0] scaled;
assign scaled = {2'b00, s1} * 11'd3;
always_ff @(posedge clk) begin
  if (rst) begin
    v1 <= 1'b0;
    v2 <= 1'b0;
  end else begin
    v1 <= in_valid;
    v2 <= v1;
    if (in_valid) begin
      s1 <= {1'b0, a} + {1'b0, b};
      t1 <= in_tag;
    end
    if (v1) begin
      s2 <= scaled[7:0];
      t2 <= t1;
    end
  end
end

किनारा 0 पर A=(1,2) स्वीकार करें: उसके बाद s1=3 है। किनारा 1 पर B=(250,10) स्वीकार करें: s1 का मान 260 होता है, जबकि s2 में A का परिणाम 9 आता है। A, किनारा 1 के बाद वैध है और किनारा 2 पर स्थानांतरित हो सकता है। बाद में B से 780 मॉड्यूलो 256, अर्थात 12 मिलता है।

valid रजिस्टर से बुलबुले भी आगे बढ़ाएँ। इनपुट न होने पर पुराना v1=1 बनाए रखने से लेनदेन दोहर सकता है। रीसेट valid स्थिति साफ़ करता है ताकि पुराना डेटा नया परिणाम न बने। प्रत्येक सीमा पर सभी साथ के फ़ील्ड लिखें: ऑपरेशन, टैग, अपवाद, पता या पैकेट के अंत का चिह्न। जाँचें कि पूरी पाइपलाइन में ये फ़ील्ड एक ही लेनदेन बने रहें।

खुद आज़माएँ

A=(1,2,tag=10) और B=(250,10,tag=11) लगातार स्वीकार होते हैं। t2<=in_tag होने पर A के परिणाम के साथ कौन सा टैग आएगा? सही कनेक्शन दें।

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

किनारा 1 पर s2 पुराने लेनदेन A की गणना करता है, जबकि वर्तमान in_tag का मान 11 है, इसलिए परिणाम 9 को टैग 11 मिलता है। A का पुराना प्रथम-चरण टैग 10 कैप्चर करने के लिए t2<=t1 करें।

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