आईबीएम हेक्साडेसिमल फ्लोटिंग-पॉइंट

From alpha
Jump to navigation Jump to search

हेक्साडेसिमल फ़्लोटिंग-पॉइंट अंकगणित (जिसे अब आईबीएम द्वारा एचएफपी कहा जाता है) आईबीएम आईबीएम सिस्टम/360 | सिस्टम/360 कंप्यूटरों पर पहली बार पेश किए गए फ़्लोटिंग-पॉइंट नंबरों को एन्कोडिंग के लिए एक प्रारूप है, और उस आर्किटेक्चर के आधार पर बाद की मशीनों पर समर्थित है।[1][2][3] साथ ही ऐसी मशीनें जिनका उद्देश्य सिस्टम/360 के साथ अनुप्रयोग-संगत होना था।[4][5] IEEE 754 फ़्लोटिंग पॉइंट की तुलना में, HFP प्रारूप का एक लंबा महत्व और एक छोटा घातांक है। सभी HFP प्रारूपों में 64 के प्रतिपादक पूर्वाग्रह के साथ 7 बिट्स के घातांक हैं। प्रतिनिधित्व योग्य संख्याओं की सामान्यीकृत सीमा 16 से है-65 से 1663 (लगभग 5.39761 × 10−79 से 7.237005 × 1075).

संख्या को निम्न सूत्र के रूप में दर्शाया गया है: (−1)साइन इन करें × 0।significand × 16घातांक−64.

एकल-परिशुद्धता 32-बिट

एक एकल परिशुद्धता | एकल-परिशुद्धता HFP संख्या (जिसे IBM द्वारा छोटा कहा जाता है) को 32-बिट शब्द में संग्रहीत किया जाता है:

1 7 24 (width in bits)
S Exp Fraction  
31 30 ... 24 23 ... 0 (bit index)*
* IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.

इस प्रारूप में प्रारंभिक बिट दबा नहीं है, और रेडिक्स (हेक्साडेसिमल) बिंदु महत्व के बाईं ओर सेट है (आईबीएम प्रलेखन और आंकड़ों में अंश)।

चूंकि आधार 16 है, इसलिए इस रूप में प्रतिपादक IEEE 754 में समतुल्य के रूप में लगभग दोगुना बड़ा है, बाइनरी में समान प्रतिपादक श्रेणी के लिए, 9 प्रतिपादक बिट्स की आवश्यकता होगी।

उदाहरण

मान -118.625 को एचएफपी एकल-परिशुद्धता फ़्लोटिंग-पॉइंट मान के रूप में एन्कोड करने पर विचार करें।

मान ऋणात्मक है, इसलिए साइन बिट 1 है।

मान 118.62510 बाइनरी में 1110110.101 है2. रेडिक्स बिंदु को चार बिट्स (एक हेक्साडेसिमल अंक) को एक समय में ले जाकर सामान्यीकृत किया जाता है, जब तक कि बाईं ओर का अंक शून्य न हो, 0.01110110101 उत्पन्न होता है2. शेष सबसे दाहिने अंक शून्य के साथ गद्देदार होते हैं, जो .0111 0110 1010 0000 0000 0000 का 24-बिट अंश देते हैं2.

सामान्यीकृत मान ने मूलांक बिंदु दो हेक्साडेसिमल अंकों को बाईं ओर स्थानांतरित किया, जिससे एक गुणक और 16 का प्रतिपादक प्राप्त हुआ+2। घातांक (+2) में +64 का बायस जोड़ा जाता है, जिससे +66 प्राप्त होता है, जो 100 0010 है2.

साइन, एक्सपोनेंट प्लस बायस और सामान्यीकृत अंश का संयोजन इस एन्कोडिंग का उत्पादन करता है:

S Exp Fraction  
1 100 0010 0111 0110 1010 0000 0000 0000  

दूसरे शब्दों में, प्रदर्शित संख्या -0.76A000 है16 × 1666 − 64 = −0.4633789… × 16+2 = -118.625

सबसे बड़ी प्रतिनिधित्व योग्य संख्या

S Exp Fraction  
0 111 1111 1111 1111 1111 1111 1111 1111  

प्रस्तुत संख्या +0.FFFFFF है16 × 16127 − 64 = (1 − 16-6) × 1663 ≈ +7.2370051 × 1075

सबसे छोटी सकारात्मक सामान्यीकृत संख्या

S Exp Fraction  
0 000 0000 0001 0000 0000 0000 0000 0000  

प्रदर्शित संख्या +0.1 है16 × 16 - 64 = 16−1 × 16−64 ≈ +5.397605 × 10−79.

शून्य

S Exp Fraction  
0 000 0000 0000 0000 0000 0000 0000 0000  

शून्य (0.0) को सामान्यीकृत रूप में सभी शून्य बिट्स के रूप में दर्शाया गया है, जो अंकगणितीय रूप से मान +0.0 है16 × 16 − 64 = +0 × 16−64 ≈ +0.000000 × 10−79 = 0. ऑल-बिट्स ज़ीरो के एक अंश को देखते हुए, पॉज़िटिव या नेगेटिव साइन बिट और नॉन-ज़ीरो बायस्ड एक्सपोनेंट का कोई भी संयोजन अंकगणितीय रूप से शून्य के बराबर मान देगा। हालाँकि, CPU हार्डवेयर द्वारा शून्य के लिए उत्पन्न सामान्यीकृत रूप ऑल-बिट्स शून्य है। यह तीनों फ़्लोटिंग-पॉइंट सटीक स्वरूपों के लिए सही है। अन्य एक्सपोनेंट मानों के साथ जोड़ या घटाव परिणाम में सटीकता खो सकता है।

सटीक मुद्दे

चूंकि आधार 16 है, बाइनरी महत्व में तीन अग्रणी शून्य बिट तक हो सकते हैं। इसका मतलब है कि जब संख्या को बाइनरी में परिवर्तित किया जाता है, तो 21 बिट्स की सटीकता हो सकती है। डगमगाने वाले सटीक प्रभाव के कारण, यह कुछ गणनाओं को बहुत गलत बना सकता है। इससे काफी आलोचना हुई है।[6]

अशुद्धि का एक अच्छा उदाहरण दशमलव मान 0.1 का प्रतिनिधित्व है। इसका कोई सटीक बाइनरी या हेक्साडेसिमल प्रतिनिधित्व नहीं है। हेक्साडेसिमल प्रारूप में, इसे 0.19999999 के रूप में दर्शाया जाता है ...16 या 0.0001 1001 1001 1001 1001 1001 1001...2, वह है:

S Exp Fraction  
0 100 0000 0001 1001 1001 1001 1001 1010  

इसमें केवल 21 बिट्स हैं, जबकि बाइनरी संस्करण में 24 बिट्स की सटीकता है।

सटीकता के छह हेक्साडेसिमल अंक मोटे तौर पर छह दशमलव अंकों के बराबर होते हैं (अर्थात (6 − 1) log10(16) ≈ 6.02)। एकल सटीक हेक्साडेसिमल फ्लोट को दशमलव स्ट्रिंग में बदलने के लिए कम से कम 9 महत्वपूर्ण अंकों (यानी 6 लॉग) की आवश्यकता होगी10(16) + 1 ≈ 8.22) उसी हेक्साडेसिमल फ्लोट वैल्यू में वापस कनवर्ट करने के लिए।

डबल-परिशुद्धता 64-बिट

दोहरी सुनिश्चितता | डबल-परिशुद्धता एचएफपी प्रारूप (आईबीएम द्वारा लंबे समय तक कहा जाता है) लघु प्रारूप के समान है, सिवाय इसके कि अंश क्षेत्र व्यापक है और डबल-परिशुद्धता संख्या एक डबल शब्द (8 बाइट्स) में संग्रहीत है:

1 7 56 (width in bits)
S Exp Fraction  
63 62 ... 56 55 ... 0 (bit index)*
* IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.

इस प्रारूप के लिए एक्सपोनेंट आईईईई बाइनरी प्रारूप के रूप में केवल एक चौथाई सीमा को कवर करता है।

सटीकता के 14 हेक्साडेसिमल अंक मोटे तौर पर 17 दशमलव अंकों के बराबर होते हैं। डबल सटीक हेक्साडेसिमल फ्लोट को दशमलव स्ट्रिंग में बदलने के लिए कम से कम 18 महत्वपूर्ण अंकों की आवश्यकता होगी ताकि वापस उसी हेक्साडेसिमल फ्लोट मान में परिवर्तित हो सके।

विस्तारित-परिशुद्धता 128-बिट

आईबीएम द्वारा विस्तारित-परिशुद्धता कहा जाता है, एक चौगुनी सटीक फ़्लोटिंग-पॉइंट प्रारूप | चौगुनी-परिशुद्धता एचएफपी प्रारूप सिस्टम / 370 श्रृंखला में जोड़ा गया था और कुछ एस / 360 मॉडल (एस / 360-85, -195, और अन्य) पर उपलब्ध था। विशेष अनुरोध या ओएस सॉफ्टवेयर द्वारा सिम्युलेटेड)। विस्तारित-परिशुद्धता अंश क्षेत्र व्यापक है, और विस्तारित-परिशुद्धता संख्या दो दोहरे शब्दों (16 बाइट्स) के रूप में संग्रहीत है:

High-order part
1 7 56 (width in bits)
S Exp Fraction (high-order 14 digits)  
127 126 ... 120 119 ... 64 (bit index)*
Low-order part
8 56 (width in bits)
Unused Fraction (low-order 14 digits)  
63 ... 56 55 ... 0 (bit index)*
* IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.

परिशुद्धता के 28 हेक्साडेसिमल अंक लगभग 32 दशमलव अंकों के बराबर हैं। विस्तारित सटीक HFP को दशमलव स्ट्रिंग में बदलने के लिए कम से कम 35 महत्वपूर्ण अंकों की आवश्यकता होगी ताकि वापस उसी HFP मान में परिवर्तित हो सके। निम्न-क्रम वाले भाग में संग्रहीत प्रतिपादक उच्च-क्रम वाले भाग से 14 कम है, जब तक कि यह शून्य से कम न हो।

अंकगणितीय संचालन

उपलब्ध अंकगणितीय संचालन जोड़ और घटाना, सामान्यीकृत और असामान्य दोनों हैं, और तुलना करें। घातांक अंतर के आधार पर प्रीनॉर्मलाइजेशन किया जाता है। असामान्य मूल्यों को गुणा और विभाजित करें, और एक गार्ड अंक के बाद परिणाम को छोटा करें। दो से विभाजित करने को आसान बनाने के लिए एक आधा ऑपरेशन है। ESA/390 में प्रारंभ करते हुए, एक वर्गमूल संक्रिया है। सटीक हानि से बचने के लिए सभी परिचालनों में एक हेक्साडेसिमल गार्ड अंक होता है। अधिकांश अंकगणितीय संक्रियाएँ साधारण पॉकेट कैलकुलेटर की तरह छोटी होती हैं। इसलिए, 1 − 16−8 = 1. इस मामले में, परिणाम को शून्य से दूर कर दिया जाता है।[7]


आईईईई 754 आईबीएम मेनफ्रेम पर

1998 में S/390 G5 से शुरू करते हुए,[8] IBM मेनफ्रेम में IEEE बाइनरी फ़्लोटिंग-पॉइंट इकाइयाँ भी शामिल हैं जो IEEE 754|IEEE 754 फ़्लोटिंग-पॉइंट अंकगणितीय मानक के अनुरूप हैं। IEEE दशमलव फ़्लोटिंग-पॉइंट IBM System z9 GA2 में जोड़ा गया था[9] 2007 में मिलीकोड का उपयोग करते हुए[10] और 2008 में IBM सिस्टम z10 हार्डवेयर में।[11] आधुनिक आईबीएम मेनफ्रेम 3 हेक्साडेसिमल (एचएफपी) प्रारूपों, 3 बाइनरी (बीएफपी) प्रारूपों और 3 दशमलव (डीएफपी) प्रारूपों के साथ तीन फ्लोटिंग-पॉइंट रेडिस का समर्थन करते हैं। प्रति कोर दो फ्लोटिंग-पॉइंट इकाइयाँ हैं; एक सहायक एचएफपी और बीएफपी, और एक सहायक डीएफपी; एक रजिस्टर फ़ाइल है, एफपीआर, जिसमें सभी 3 प्रारूप हैं। 2015 में IBM_z13_(माइक्रोप्रोसेसर) से शुरू करते हुए, प्रोसेसर ने एक वेक्टर सुविधा जोड़ी है जिसमें 32 वेक्टर रजिस्टर शामिल हैं, प्रत्येक 128 बिट चौड़ा है; एक वेक्टर रजिस्टर में दो 64-बिट या चार 32-बिट फ़्लोटिंग-पॉइंट नंबर हो सकते हैं।[12] पारंपरिक 16 फ़्लोटिंग-पॉइंट रजिस्टर नए वेक्टर रजिस्टरों पर आच्छादित हैं, इसलिए कुछ डेटा को पारंपरिक फ़्लोटिंग-पॉइंट निर्देशों या नए वेक्टर निर्देशों के साथ जोड़-तोड़ किया जा सकता है।

विशेष उपयोग

आईबीएम एचएफपी प्रारूप में प्रयोग किया जाता है:

चूंकि आईबीएम एचएफपी प्रारूप का उपयोग कर हार्डवेयर का एकमात्र शेष प्रदाता है, और केवल आईबीएम मशीनें जो उस प्रारूप का समर्थन करती हैं, उनके मेनफ्रेम हैं, कुछ फ़ाइल स्वरूपों को इसकी आवश्यकता होती है। एक अपवाद एसएएस 5 ट्रांसपोर्ट फ़ाइल प्रारूप है, जिसकी एफडीए को आवश्यकता है; उस प्रारूप में, फ़ाइल में सभी फ़्लोटिंग-पॉइंट नंबर IBM मेनफ़्रेम प्रतिनिधित्व का उपयोग करके संग्रहीत किए जाते हैं। [...] अधिकांश प्लेटफॉर्म फ़्लोटिंग-पॉइंट नंबरों के लिए IEEE प्रतिनिधित्व का उपयोग करते हैं। [...] परिवहन फ़ाइलों को पढ़ने और/या लिखने में आपकी सहायता करने के लिए, हम IEEE प्रतिनिधित्व (या तो बड़े एंडियन या छोटे एंडियन) से परिवहन प्रतिनिधित्व और फिर से वापस करने के लिए रूटीन प्रदान कर रहे हैं।[13]IBM के प्रारूप के लिए कोड GNU लेसर जनरल पब्लिक लाइसेंस|LGPLv2.1 के तहत भी उपलब्ध है।[15]


आईबीएम फ्लोटिंग-पॉइंट प्रारूप का उपयोग करने वाले सिस्टम

यह भी देखें

संदर्भ

  1. IBM System/360 Principles of Operation, IBM Publication A22-6821-6, Seventh Edition (January 13, 1967), pp.41-50
  2. IBM System/370 Principles of Operation, IBM Publication GA22-7000-4, Fifth Edition (September 1, 1975), pp.157-170
  3. z/Architecture Principles of Operation, IBM Publication SA22-7832-01, Second Edition (October, 2001), chapter 9 ff.
  4. Xerox Data Systems (Oct 1973). Xerox SIGMA 7 Computer Reference Manyal. p. 48. Retrieved Nov 13, 2020.
  5. RCA (Mar 1966). Spectra 70 processors: 35 45 55 (PDF). p. 184. Retrieved Nov 13, 2020.
  6. Warren Jr., Henry S. (2013) [2002]. "The Distribution of Leading Digits". हैकर की प्रसन्नता (2 ed.). Addison Wesley - Pearson Education, Inc. pp. 385–387. ISBN 978-0-321-84268-8. 0-321-84268-5.
  7. ESA/390 Enhanced Floating Point Support: An Overview
  8. Schwarz, E. M.; Krygowski, C. A. (September 1999). "The S/390 G5 floating-point unit". IBM Journal of Research and Development. 43 (5.6): 707–721. doi:10.1147/rd.435.0707.
  9. Duale, A. Y.; Decker, M. H.; Zipperer, H.-G.; Aharoni, M.; Bohizic, T. J. (January 2007). "Decimal floating-point in z9: An implementation and testing perspective". IBM Journal of Research and Development. 51 (1.2): 217–227. CiteSeerX 10.1.1.123.9055. doi:10.1147/rd.511.0217.
  10. Heller, L. C.; Farrell, M. S. (May 2004). "IBM zSeries प्रोसेसर में मिलीकोड". IBM Journal of Research and Development. 48 (3.4): 425–434. CiteSeerX 10.1.1.641.1164. doi:10.1147/rd.483.0425.
  11. Schwarz, E. M.; Kapernick, J. S.; Cowlishaw, M. F. (January 2009). "आईबीएम सिस्टम z10 प्रोसेसर पर दशमलव फ़्लोटिंग-पॉइंट समर्थन". IBM Journal of Research and Development. 53 (1): 4:1–4:10. doi:10.1147/JRD.2009.5388585.
  12. z/Architecture Principles of Operation
  13. 13.0 13.1 "एसएएस ट्रांसपोर्ट (एक्सपोर्ट) प्रारूप में डेटा सेट का रिकॉर्ड लेआउट" (PDF). Retrieved September 18, 2014.
  14. "एसईजी वाई रेव 1 डेटा एक्सचेंज प्रारूप, रिलीज 1.0" (PDF). May 2002.
  15. "पैकेज 'एसएएसएक्सपोर्ट'" (PDF). March 10, 2020.


अग्रिम पठन