2 / 20 · अवधारणा
चिह्नयुक्त गुणनफल और संचायक चौड़ाई
ऑपरैंड की सबसे खराब सीमा से संचायक की चौड़ाई निकालें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
सबसे ऋणात्मक इनपुट भी शामिल करें
W-बिट टूज़ कॉम्प्लीमेंट इनपुट −2^(W−1) से 2^(W−1)−1 तक होता है। सबसे बड़ा धनात्मक गुणनफल तब मिलता है जब दोनों इनपुट सबसे ऋणात्मक हैं। W=8 पर (−128)×(−128)=16384, जो 127×127=16129 से बड़ा है। दो W-बिट इनपुट का पूरा चिह्नयुक्त गुणनफल सुरक्षित रूप से 2W बिट में दर्शाया जाता है।
K पदों वाले रिडक्शन के लिए यह पाठ्यक्रम नीचे का सुरक्षित नियम चुनता है। K धनात्मक होना चाहिए; नियम समान ऑपरैंड चौड़ाई और अतिरिक्त बायस न होना मानता है।
यह सरल सुरक्षित सीमा है, हर K के लिए न्यूनतम चौड़ाई का दावा नहीं। W=8 और K=4 में अठारह बिट चुनें। चार अधिकतम गुणनफलों का योग 65536 है। चिह्नयुक्त सत्रह-बिट संचायक 65535 तक जाता है, इसलिए ठीक इस सीमा पर विफल है। अठारह बिट −131072 से 131071 तक समाते हैं। K=1 पर अतिरिक्त संचय बिट नहीं जुड़ते।
चिह्न स्पष्ट रूप से सुरक्षित रखें
व्यंजक का आकार अनुमान लगाने के बजाय मध्यवर्ती संकेत घोषित करें। AW कम से कम PW होना चाहिए।
localparam int PW = 2*W;
localparam int AW = PW + $clog2(K);
logic signed [W-1:0] a, b;
logic signed [PW-1:0] product;
logic signed [AW-1:0] addend, acc;
assign product = $signed(a) * $signed(b);
assign addend = {{(AW-PW){product[PW-1]}}, product};आठ बिट का 0xFE पैटर्न −2 है। तीन से गुणा करने पर −6 मिलता है; उस गुणनफल को चौड़ा करने में चिह्न विस्तार चाहिए। शून्य विस्तार ऋणात्मक संख्या को धनात्मक बनाता है। वह बिंदु लिखें जहाँ चिह्नरहित इंटरफ़ेस बिट पैटर्न चिह्नयुक्त अंकगणितीय मान बनता है।
चौड़ाई संचायक में रखे पूरे रिडक्शन पर निर्भर है। K को टाइल में बाँटना आंशिक संचायक संकरा करने का कारण नहीं, यदि संयोजन से पहले वह ओवरफ़्लो कर सकता है। बायस जोड़ने या कई रिडक्शन मिलाने में नई सीमा गणना चाहिए।
न्यूनतम×न्यूनतम, न्यूनतम×अधिकतम, अधिकतम×अधिकतम और बारी-बारी के चिह्न जाँचें। चौड़ा पूर्णांक संदर्भ और चुनी चौड़ाई का परिणाम दोनों रखें। तय सीमा में सटीक संचय और उसके बाहर चक्रीय व्यवहार या संतृप्ति अलग अनुबंध हैं; हर अंतर को सामान्य ओवरफ़्लो मानना असली चिह्न त्रुटियाँ छिपाता है।
खुद आज़माएँ
W=4 और K=3 के लिए सुरक्षित AW और अधिकतम धनात्मक योग निकालें। −8×7 गुणनफल को कौन सा बिट बढ़ाता है?
व्याख्या पढ़ें
PW=8 और ceil(log2 3)=2, इसलिए AW=10। अधिकतम धनात्मक योग 3×64=192 है। गुणनफल −56 है और उसे एक बिट से बढ़ाना चाहिए। दस चिह्नयुक्त बिट −512..511 समाते हैं।