फ़्लोटिंग-पॉइंट यूनिट

एक फ़्लोटिंग-पॉइंट यूनिट (एफपीयू, बोलचाल की भाषा में एक गणित सहप्रोसेसर) एक कंप्यूटर सिस्टम का एक हिस्सा है जिसे विशेष रूप से फ़्लोटिंग-पॉइंट अंकगणित | फ़्लोटिंग-पॉइंट संख्याओं पर संचालन करने के लिए डिज़ाइन किया गया है। विशिष्ट संक्रियाएँ जोड़, घटाव, गुणा, भाग (गणित), और वर्गमूल हैं। कुछ एफपीयू विभिन्न पारलौकिक कार्य भी कर सकते हैं जैसे घातांक प्रकार्य या त्रिकोणमितीय गणना, लेकिन सटीकता बहुत कम हो सकती है, ताकि कुछ सिस्टम सॉफ़्टवेयर में इन कार्यों की गणना करना पसंद करें।

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

जब एक सीपीयू एक प्रोग्राम निष्पादित कर रहा है जो फ्लोटिंग-पॉइंट ऑपरेशन के लिए कहता है, तो इसे पूरा करने के तीन तरीके हैं:
 * एक फ़्लोटिंग-पॉइंट यूनिट एमुलेटर (एक फ़्लोटिंग-पॉइंट लाइब्रेरी)
 * ऐड-ऑन एफपीयू
 * एकीकृत एफपीयू

इतिहास
1954 में, IBM 704 में एक मानक सुविधा के रूप में फ़्लोटिंग-पॉइंट अंकगणित था, जो इसके पूर्ववर्ती IBM 701 की तुलना में इसके प्रमुख सुधारों में से एक था। इसे इसके उत्तराधिकारियों 709, 7090 और 7094 में आगे बढ़ाया गया था।

1963 में, डिजिटल ने पीडीपी-6 की घोषणा की, जिसमें एक मानक सुविधा के रूप में फ्लोटिंग पॉइंट था। 1963 में, GE-200 श्रृंखला|GE-235 में फ्लोटिंग पॉइंट और डबल-प्रिसिजन गणनाओं के लिए एक सहायक अंकगणितीय इकाई शामिल थी। ऐतिहासिक रूप से, कुछ प्रणालियों ने फ़्लोटिंग-पॉइंट अंकगणित को एक एकीकृत इकाई के बजाय एक सह प्रोसेसर  के साथ लागू किया (लेकिन अब सीपीयू के अलावा, उदाहरण के लिए  ग्राफ़िक्स प्रोसेसिंग युनिट ) –  जो सहसंसाधक होते हैं जो हमेशा सीपीयू में निर्मित नहीं होते हैं –  एक नियम के रूप में एफपीयू है, जबकि जीपीयू की पहली पीढ़ी नहीं थी)। यह एक एकल एकीकृत सर्किट, एक संपूर्ण मुद्रित सर्किट बोर्ड या एक कैबिनेट हो सकता है। जहां फ़्लोटिंग-पॉइंट गणना हार्डवेयर प्रदान नहीं किया गया है, फ़्लोटिंग-पॉइंट गणना सॉफ़्टवेयर में की जाती है, जिसमें अधिक प्रोसेसर समय लगता है, लेकिन अतिरिक्त हार्डवेयर की लागत से बचा जाता है। किसी विशेष कंप्यूटर आर्किटेक्चर के लिए, फ़्लोटिंग-पॉइंट यूनिट निर्देश सॉफ़्टवेयर फ़ंक्शंस की लाइब्रेरी द्वारा एम्यूलेटर हो सकते हैं; यह समान  वस्तु कोड  को फ़्लोटिंग-पॉइंट हार्डवेयर के साथ या उसके बिना सिस्टम पर चलने की अनुमति दे सकता है। अनुकरण को कई स्तरों पर लागू किया जा सकता है: सीपीयू में माइक्रोकोड के रूप में (सामान्य अभ्यास नहीं), एक ऑपरेटिंग सिस्टम फ़ंक्शन के रूप में, या उपयोगकर्ता-स्पेस कोड में। जब केवल पूर्णांक कार्यक्षमता उपलब्ध होती है, तो CORDIC फ़्लोटिंग-पॉइंट इम्यूलेशन विधियों का सबसे अधिक उपयोग किया जाता है।

अधिकांश आधुनिक कंप्यूटर आर्किटेक्चर में, पूर्णांक संचालन से फ़्लोटिंग-पॉइंट संचालन का कुछ विभाजन होता है। यह विभाजन वास्तुकला के अनुसार काफी भिन्न होता है; कुछ के पास समर्पित फ़्लोटिंग-पॉइंट रजिस्टर हैं, जबकि कुछ, x86 की तरह, इसे स्वतंत्र कंप्यूटर घड़ी योजनाओं के रूप में लेते हैं। CORDIC रूटीन को x87 कोप्रोसेसर (इंटेल 8087) में लागू किया गया है    80287, 80387  इंटेल 80486 तक माइक्रोप्रोसेसर श्रृंखला, साथ ही मोटोरोला 68881 में भी  और 68882 कुछ प्रकार के फ़्लोटिंग-पॉइंट निर्देशों के लिए, मुख्य रूप से एफपीयू सबसिस्टम के  तर्क द्वार  काउंट (और जटिलता) को कम करने के तरीके के रूप में।

फ़्लोटिंग-पॉइंट ऑपरेशन अक्सर निर्देश पाइपलाइनिंग होते हैं। सामान्य आउट-ऑफ़-ऑर्डर निष्पादन के बिना पहले के सुपरस्केलर आर्किटेक्चर में, फ़्लोटिंग-पॉइंट ऑपरेशंस को कभी-कभी पूर्णांक ऑपरेशंस से अलग से पाइपलाइन किया जाता था।

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

फ़्लोटिंग-पॉइंट लाइब्रेरी
कुछ फ़्लोटिंग-पॉइंट हार्डवेयर केवल सबसे सरल ऑपरेशन का समर्थन करते हैं: जोड़, घटाव और गुणा। लेकिन यहां तक ​​कि सबसे जटिल फ़्लोटिंग-पॉइंट हार्डवेयर में भी सीमित संख्या में संचालन होते हैं जो इसे समर्थन दे सकते हैं – उदाहरण के लिए, कोई भी एफपीयू सीधे तौर पर मनमाना-सटीक अंकगणित का समर्थन नहीं करता है।

जब एक सीपीयू एक प्रोग्राम निष्पादित कर रहा है जो एक फ़्लोटिंग-पॉइंट ऑपरेशन की मांग करता है जो सीधे हार्डवेयर द्वारा समर्थित नहीं है, तो सीपीयू सरल फ़्लोटिंग-पॉइंट ऑपरेशंस की एक श्रृंखला का उपयोग करता है। बिना किसी फ्लोटिंग-पॉइंट हार्डवेयर वाले सिस्टम में, सीपीयू एमुलेटर सरल फिक्स्ड-पॉइंट अंकगणितीय संचालन की एक श्रृंखला का उपयोग करता है जो पूर्णांक अंकगणितीय तर्क इकाई पर चलता है।

वह सॉफ़्टवेयर जो फ़्लोटिंग-पॉइंट ऑपरेशंस का अनुकरण करने के लिए संचालन की आवश्यक श्रृंखला को सूचीबद्ध करता है, अक्सर फ़्लोटिंग-पॉइंट पुस्तकालय (कंप्यूटिंग)  में पैक किया जाता है।

एकीकृत एफपीयू
कुछ मामलों में, एफपीयू को विशिष्ट किया जा सकता है, और सरल फ़्लोटिंग-पॉइंट ऑपरेशंस (मुख्य रूप से जोड़ और गुणा) और विभाजन जैसे अधिक जटिल ऑपरेशंस के बीच विभाजित किया जा सकता है। कुछ मामलों में, केवल सरल ऑपरेशन को हार्डवेयर या माइक्रोकोड में लागू किया जा सकता है, जबकि अधिक जटिल ऑपरेशन को सॉफ्टवेयर के रूप में लागू किया जाता है।

कुछ मौजूदा आर्किटेक्चर में, SIMD गणना करने के लिए FPU कार्यक्षमता को एकल निर्देश, एकाधिक डेटा इकाइयों के साथ जोड़ा जाता है; इसका एक उदाहरण नए इंटेल और एएमडी प्रोसेसर में उपयोग किए गए x86-64 आर्किटेक्चर में स्ट्रीमिंग SIMD एक्सटेंशन निर्देश सेट के साथ x87 निर्देशों का संवर्द्धन है।

ऐड-ऑन एफपीयू
पीडीपी-11 के कई मॉडल, जैसे पीडीपी-11/45, पीडीपी-11/34ए, पीडीपी-11/44,  और पीडीपी-11/70,  फ़्लोटिंग-पॉइंट निर्देशों का समर्थन करने के लिए एक ऐड-ऑन फ़्लोटिंग-पॉइंट इकाई का समर्थन करता है। पीडीपी-11/60,  माइक्रोपीडीपी-11/23 और कई VAX मॉडल  ऐड-ऑन एफपीयू के बिना फ्लोटिंग-पॉइंट निर्देशों को निष्पादित कर सकता है (माइक्रोपीडीपी-11/23 को इसके लिए ऐड-ऑन माइक्रोकोड विकल्प की आवश्यकता होती है) ), और उन निर्देशों के निष्पादन में तेजी लाने के लिए ऐड-ऑन एक्सेलेरेटर की पेशकश की।

1980 के दशक में, आईबीएम पीसी/संगत माइक्रो कंप्यूटरों में एफपीयू का सेंट्रल प्रोसेसिंग यूनिट से पूरी तरह अलग होना आम बात थी, और आमतौर पर इसे वैकल्पिक ऐड-ऑन के रूप में बेचा जाता था। इसे केवल तभी खरीदा जाएगा जब गणित-गहन कार्यक्रमों को तेज़ करने या सक्षम करने के लिए आवश्यक हो।

आईबीएम पीसी, आईबीएम पर्सनल कंप्यूटर एक्सटी, और 8088 या 8086 पर आधारित अधिकांश कंपैटिबल में वैकल्पिक 8087 कोप्रोसेसर के लिए एक सॉकेट था। आईबीएम पर्सनल कंप्यूटर/एटी और इंटेल 80286-आधारित सिस्टम आमतौर पर x87#80287 और इंटेल 80386|80386/80386SX-आधारित मशीनों के लिए सॉकेट किए गए थे। – क्रमशः x87#80387 और Intel 80387SX के लिए, हालाँकि शुरुआती वाले 80287 के लिए सॉकेट किए गए थे, क्योंकि 80387 अभी तक अस्तित्व में नहीं था। अन्य कंपनियों ने Intel x86 श्रृंखला के लिए सह-प्रोसेसर का निर्माण किया। इनमें साइरिक्स और  दूर  शामिल थे। बलूत का फल कंप्यूटर ने  एकल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप,  डबल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप  और  विस्तारित परिशुद्धता  की पेशकश के लिए WE32206 को चुना। इसकी एआरएम वास्तुकला संचालित बलूत का फल आर्किमिडीज़ रेंज के लिए।

मोटोरोला 68000 श्रृंखला, मोटोरोला 68881 के लिए सहप्रोसेसर उपलब्ध थे। ये सन-3 श्रृंखला की तरह मोटोरोला 68020/मोटोरोला 68030-आधारित कार्य केंद्र  में आम थे। उन्हें आम तौर पर ऐप्पल  मैकिनटोश  और कमोडोर अमिगा श्रृंखला के उच्च-अंत मॉडल में भी जोड़ा गया था, लेकिन आईबीएम पीसी-संगत सिस्टम के विपरीत, कोप्रोसेसर को जोड़ने के लिए सॉकेट निचले-अंत सिस्टम में उतने आम नहीं थे।

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

यह भी देखें

 * अंकगणितीय तर्क इकाई (एएलयू)
 * पता निर्माण इकाई (एजीयू)
 * लोड-स्टोर इकाई
 * कॉर्डिक रूटीन का उपयोग कई एफपीयू में कार्यों को लागू करने के लिए किया जाता है लेकिन गेट गिनती में बहुत अधिक वृद्धि नहीं होती है
 * निष्पादन इकाई
 * IEEE 754 फ़्लोटिंग-पॉइंट मानक
 * आईबीएम हेक्साडेसिमल फ़्लोटिंग पॉइंट
 * ग्राफ़िक्स प्रोसेसिंग युनिट
 * गुणा-संचय संचालन