2010-02-10 10 views
27

मैं इस धारणा के आधार पर एक संख्यात्मक/सांख्यिकी लाइब्रेरी के लिए एक सॉर्टिंग फ़ंक्शन को अनुकूलित कर रहा हूं कि, किसी भी नाएन को फ़िल्टर करने और थोड़ा सा झुकाव करने के बाद, फ्लोट्स को 32-बिट इनट्स के रूप में तुलना किए बिना परिणाम को बदला जा सकता है और युगल हो सकता है 64-बिट चींटियों की तुलना में।क्या कोई असली दुनिया सीपीयू आईईईई 754 का उपयोग नहीं करते हैं?

ऐसा लगता है कि इन सरणी को 40% के क्रम में कहीं भी क्रमबद्ध करना है, और मेरी धारणा तब तक होती है जब तक फ्लोटिंग पॉइंट नंबरों का बिट-स्तरीय प्रतिनिधित्व आईईईई 754 होता है। क्या कोई असली दुनिया सीपीयू है वास्तव में उपयोग (एम्बेडेड डिवाइसों को छोड़कर, जो इस लाइब्रेरी को लक्षित नहीं करता है) का उपयोग करते हैं जो कि कुछ अन्य प्रतिनिधित्व का उपयोग करते हैं जो इस धारणा को तोड़ सकता है?

+0

बहुत रोचक - क्या आप विस्तार से बता सकते हैं कि आप उन्हें इनट्स के रूप में कैसे तुलना कर रहे हैं? – Saideira

उत्तर

17

flawed Pentiums के अलावा, कोई भी x86 या x64- आधारित CPU आईईईई 754 का उपयोग अपने फ़्लोटिंग-पॉइंट अंकगणितीय मानक के रूप में कर रहा है।

यहां एफपीए मानकों और उनके गोद लेने का एक संक्षिप्त अवलोकन है।

IEEE 754:  Intel x86, and all RISC systems (IBM Power 
       and PowerPC, Compaq/DEC Alpha, HP PA-RISC, 
       Motorola 68xxx and 88xxx, SGI (MIPS) R-xxxx, 
       Sun SPARC, and others); 

VAX:   Compaq/DEC 

IBM S/390:  IBM (however, in 1998, IBM added an IEEE 754 
       option to S/390) 

Cray:   X-MP, Y-MP, C-90; other Cray models have been 
       based on Alpha and SPARC processors with 
       IEEE-754 arithmetic. 

जब तक काफी विदेशी सीपीयू आर्किटेक्चर पर आपकी लाइब्रेरी समर्थन पर अपनी योजना, यह सुरक्षित है माना कि CPU की अब 99% के लिए आईईईई 754 संगत होने चाहिए।

+14

यह भिन्न होता है।आपकी सूची में आर्किटेक्चर के कई वास्तविक विश्व कार्यान्वयन लगभग आईईईई 754 का समर्थन करते हैं, लेकिन गुफाओं के साथ नाएन का पूरा सेट नहीं है, शून्य को कम करने के लिए मजबूर करना, यूएलपी की त्रुटियां या गुणा/विभाजन परिणामों में दो, गुणा होने से यूएलपी भिन्न होता है या दो ऑपरेंड ऑर्डर इत्यादि के आधार पर। "99% सीपीयू आईईईई 754 अनुरूप हैं" को अस्वीकरण की आवश्यकता है - आत्मा सच है और प्रश्न के प्रयोजनों के लिए आप सही हैं, लेकिन आम तौर पर शैतान अक्सर विस्तार से होता है। अधिक, 99% सीपीयू 99% आईईईई 754 अनुरूप हैं। – moonshadow

+0

[मानक आर्किटेक्चर मानक समितियों के बारे में परवाह करते हैं] (http://stackoverflow.com/q/6971886/995714) –

4

सेल प्रोसेसर के SPUs differ in a few ways (INF और Nans की कमी) की तरह है, लेकिन मुझे नहीं लगता कि वहाँ मतभेद अपनी मान्यताओं टूट जाएगा रहे हैं ...

+3

अच्छा बिंदु। एआरएम-नियॉन सिम-यूनिट (नए आईफोन और अन्य मोबाइल उपकरणों में उपयोग किया जाता है) कुछ तरीकों से अलग है। सीपीयू हालांकि वीपीएफ-मोड में अनुरूप फ्लोट कंप्यूटेशंस निष्पादित करने में सक्षम है। ओह, और एमआईपीएस आर 5 9 00 (प्लेस्टेशन 2) में कुछ समस्याएं भी थीं। सबसे उल्लेखनीय आखिरी मंथिसा-गुणा का बिट अपरिभाषित था। –

+3

मेरे पास वर्तमान में तीन अलग-अलग पावरपीसी-व्युत्पन्न CPUs के साथ काम पर मेरे डेस्क पर एम्बेडेड हार्डवेयर के तीन अलग-अलग टुकड़े हैं जो तीन अलग-अलग तरीकों से असंगत हैं ... – moonshadow

10

यह है जहाँ आप के बीच 'असली रेखा खींचना पर निर्भर करता है दुनिया "और काल्पनिक एक।

  1. वैक्स जी प्रारूप अभी भी अल्फा मशीनों पर समर्थित है (जो एचपी कहता है कि वे कम से कम 2013 के माध्यम से समर्थन करेंगे)।
  2. आईबीएम हेक्साडेसिमल एफपी अभी भी आईबीएम जेड-सीरीज़ मेनफ्रेम द्वारा समर्थित है। उन्होंने आईईईई बाइनरी और दशमलव समर्थन जोड़ा है, लेकिन जो मैंने सुना है, उससे शायद ही कभी इसका उपयोग किया जाता है, क्योंकि हेक्साडेसिमल एफपी काफी तेज है (आईबीएम अब लगभग 45 वर्षों के लिए इसे अनुकूलित कर रहा है ...)

काफी हाल ही में, यूनिसिस ने अभी भी क्लियरपैथ आईएक्स बेचा है जो यूनिवैक एफपी प्रारूप का समर्थन करने के लिए बर्रॉप्स एफपी प्रारूप और क्लीयरपाथ एमसीपी मशीनों का समर्थन करता है। मेरा मानना ​​है कि वे अब केवल इम्यूलेशन (ज़ियंस पर) में चल रहे हैं, लेकिन एक सॉफ्टवेयर दृष्टिकोण से, वे शायद एक और दशक या उससे अधिक के लिए सक्रिय उपयोग में जारी रहेंगे।

प्लेटो पर (इम्यूलेट) नियंत्रण डेटा मेनफ्रेम चलाने के लिए 10 का उपयोग करके 10 का उपयोग कर अपने अद्वितीय फ़्लोटिंग पॉइंट प्रारूप के साथ। (क्षमा करें, लेकिन मेरा पहला गंभीर प्रोग्रामिंग एक सीडीसी साइबर मशीन पर था, इसलिए मैं इसे लाने का विरोध नहीं कर सका, भले ही यह दशकों तक "असली दुनिया" न हो)।

2

पावरपीसी प्रोसेसर (2006-2007 तक मैक, वर्तमान आईबीएम सर्वर के टन) 128 बिट प्रारूप का उपयोग करते हैं जिसमें लंबे समय तक दो युगल होते हैं, इसके बजाय आईईईई 754 विस्तारित प्रारूप।

हालांकि, सी या उद्देश्य-सी में, 32 बिट या 64 बिट फ्लोटिंग पॉइंट नंबर को पूर्णांक के रूप में समझने के लिए कोई पोर्टेबल तरीका नहीं है (फ़्लोट और uint32_t मानते हैं, या डबल और uint64_t की बिट्स की संख्या समान है)। जब मुझे उस तरह की चीज करने की ज़रूरत होती, तो मुझे कंपाइलर के आधार पर अलग-अलग कोड लिखना पड़ता था (एक संघ का उपयोग कर रहा था, एक डबल * लंबे समय तक कास्टिंग करके था *)। कोई विचार नहीं कि सी ++ में एक पुनर्वितरण पोर्टेबल कर देगा या नहीं।

+0

यह [डबल-डबल अंकगणितीय] है (http://en.wikipedia.org/विकी/क्वाड्रपल-सटीक_फ्लोएटिंग-पॉइंट_फॉर्मैट # डबल-डबल_एरिथमेटिक) –

+2

1 9 80 के दशक में मैकिंटोश "मानक ऐप्पल न्यूमेरिकल एनवायरनमेंट" 32, 64, और 80-बिट फ्लोटिंग-पॉइंट प्रकारों का इस्तेमाल करता था, 80-बिट प्रकार सबसे तेज़ होता है, एक्सपोनेंट के बाद से और मंथिसा को बिना मास्किंग के आसानी से रजिस्टरों में लोड किया जा सकता है, और जब मुझे नहीं पता कि SANE ने इस तथ्य का लाभ उठाया है, तो स्थगित सामान्यीकरण कभी-कभी बार-बार फ़्लोटिंग-पॉइंट एडिशन के सबसे धीमे हिस्सों में से एक हो सकता है। – supercat

संबंधित मुद्दे