7 / 24 · अवधारणा
मेमोरी अनुरोध और उत्तर के समय अनुबंध
समकालिक पठन, विलंबित टैग और एक ही पते की टक्कर में अंतर समझें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
मेमोरी केवल बड़ी रजिस्टर सरणी नहीं है
मेमोरी इंटरफ़ेस में क्षमता के साथ समय अनुबंध भी चाहिए। अतुल्यकालिक पठन में पता बदलने पर संयोजी आउटपुट बदलता है। समकालिक पठन किनारे पर पता नमूना लेता है और उसके बाद आउटपुट बदलता है। इन मॉडलों के समयक्रम अलग हैं। किसी उपकरण के मेमोरी संसाधन में अनुमान द्वारा मैपिंग कोड शैली और लक्ष्य टूल पर भी निर्भर करती है। यहाँ हम समकालिक पठन वाली आठ बिट की सोलह प्रविष्टियाँ तय करते हैं।
किनारा k पर पता और टैग नमूना लें। संबंधित डेटा और विलंबित टैग उस किनारे के बाद दिखाई देते हैं; पहली बार उन्हें किनारा k+1 पर उपयोग किया जा सकता है। एक चक्र के पठन का अर्थ तत्काल संयोजी उत्तर नहीं है। response valid में भी वही विलंब होना चाहिए। विलंबित मान को वर्तमान इनपुट टैग से जोड़ना लगातार अनुरोधों का संबंध बिगाड़ता है।
logic [7:0] mem [0:15];
logic [7:0] rd_data;
logic [3:0] rd_tag;
logic rd_valid;
always_ff @(posedge clk) begin
if (wr_en) mem[wr_addr] <= wr_data;
rd_valid <= req_valid;
if (req_valid) begin
rd_data <= mem[req_addr];
rd_tag <= req_tag;
end
if (rst) rd_valid <= 1'b0;
endइस व्यवहार मॉडल में एक पते पर साथ में पठन और लेखन होने से पुराना मान लौटता है, क्योंकि नॉनब्लॉकिंग असाइनमेंट पुरानी स्थिति पढ़ते हैं। वास्तविक मेमोरी प्रिमिटिव में टक्कर के स्पष्ट मोड और प्रतिबंध होते हैं; AMD UG901 के पठन/लेखन मोड देखें और लक्ष्य तथा संश्लेषण परिणाम से इच्छित मोड की पुष्टि करें। valid रीसेट करने से सरणी आरंभ नहीं होती।
| किनारा | स्वीकार किया गया अनुरोध | प्रभाव |
|---|---|---|
| 2 | addr=3,tag=7 | पुराना mem[3]=42 कैप्चर करें |
| 3 | addr=4,tag=8 | 42,7 का उपयोग करें और अगला मान कैप्चर करें |
| 4 | कोई अनुरोध नहीं | response valid साफ़ करें |
यह समयक्रम मानता है कि उपभोक्ता कभी स्टॉल नहीं करता। यदि किनारा 3 पर वह स्टॉल करे, तो अगला उत्तर rd_data को अधिलेखित कर सकता है। उत्तर भंडारण जोड़ें या उपलब्ध क्षमता से अनुरोध सीमित करें; रास्ते में मौजूद उत्तरों को भी गिनें। मान जाँचने से पहले परीक्षण मेमोरी स्पष्ट रूप से आरंभ करें। केवल उत्तर डेटा नहीं, पता और टैग का संबंध भी सत्यापित करें; गलत अनुरोध से जुड़ा सही मान भी विफलता है।
खुद आज़माएँ
mem[3]=42 होने पर एक ही किनारे पर पता 3 पढ़ें और उसमें 99 लिखें। यह मॉडल rd_data में क्या रखता है और मेमोरी का नया मान क्या है? आउटपुट स्टॉल के लिए क्या चाहिए?
व्याख्या पढ़ें
rd_data में 42 आता है, जबकि mem[3] का मान 99 हो जाता है। दोनों असाइनमेंट पुरानी स्थिति पढ़ते हैं। स्टॉल के लिए उत्तर भंडारण और रास्ते में मौजूद उत्तरों को गिनने वाला प्रवेश नियंत्रण चाहिए। वास्तविक लक्ष्य मेमोरी का टक्कर मोड अलग सत्यापित करें।