हम गणितीय सिपाही 8087 के क्रिस्टल से स्थिरांक निकालते हैं

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

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




चिप के ऊपरी आधे हिस्से में कंट्रोल सर्किट होते हैं। फ्लोटिंग पॉइंट इंस्ट्रक्शन को निष्पादित करने के लिए 1000 तक के चरणों की आवश्यकता हो सकती है; इन चरणों का वर्णन करने के लिए 8087 ने माइक्रोकोड का उपयोग किया। क्रिस्टल की तस्वीर में आप "तंत्र" देख सकते हैं जिसने माइक्रोकोड से प्रोग्राम लॉन्च किया था; वास्तव में, यह एक साधारण सीपीयू है। इसके बगल में एक बड़ी रॉम है, जहां माइक्रोकोड संग्रहीत है।

चिप के निचले भाग में सर्किट होते हैं जो फ्लोटिंग पॉइंट नंबरों को प्रोसेस करते हैं। एक फ्लोटिंग पॉइंट नंबर में एक भिन्नात्मक भाग (एक संख्या या मंटिसा का एक महत्वपूर्ण भाग के रूप में जाना जाता है), एक घातांक, और एक संकेत बिट शामिल होता है। दशमलव संकेतन में, संख्या 6.02 × 10 236.02 में मंटिसा होगी और 23 को प्रतिपादक होगा। अलग चिप सर्किट एक साथ mantissa और घातांक की प्रक्रिया करते हैं। मंटिसा प्रसंस्करण योजना 67-बिट मानों का समर्थन करती है - सटीकता के लिए 64-बिट मंटिसा और तीन अतिरिक्त बिट्स। बाएं से दाएं, मंटिसा ऑपरेशन योजनाओं में स्थिरांक, एक शिफ्ट रजिस्टर, एक योजक / घटाव और एक रजिस्टर स्टैक के साथ रोम शामिल हैं। इस लेख का विषय स्थिरांक के साथ रॉम है; फोटो में इसे हरे रंग में हाइलाइट किया गया है।

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

मैं 8087 के आंतरिक कामकाज के बारे में विस्तार से नहीं बताऊंगा, लेकिन सामान्य तौर पर, फ्लोटिंग पॉइंट ऑपरेशन को पूर्णांक के अतिरिक्त, घटाव और बदलाव के माध्यम से लागू किया जाता है। दो फ़्लोटिंग-पॉइंट संख्याओं को जोड़ने या घटाने के लिए, 8087 बाइनरी कॉमा को संरेखित करने (दशमलव बिंदुओं, केवल बाइनरी सिस्टम में) तक संख्याओं को बदलता है, और फिर मंटिसा को जोड़ता या घटाता है। गुणन, विभाजन और वर्गमूल लेने के क्रमिक पारियों और परिवर्धन / घटाव द्वारा किया जाता है। ट्रान्सेंडैंटल फ़ंक्शंस (स्पर्शरेखा, चाप स्पर्शरेखा, लघुगणक, डिग्री) CORDIC एल्गोरिदम का उपयोग करते हैं, जो गणना की दक्षता बढ़ाने के लिए विशेष स्थिरांक की पाली और परिवर्धन का उपयोग करते हैं।

रॉम कार्यान्वयन


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

स्थिरांक के लिए ROM 8087 द्वारा गणना के लिए आवश्यक स्थिरांक (जैसे l, ln (2) और )2) के लिए मानक प्रौद्योगिकियों का उपयोग करता है। नीचे दी गई तस्वीर, स्थिरांक के साथ रोम का हिस्सा दिखाती है। क्रिस्टल को देखने के लिए, एक धातु की परत को इससे हटा दिया गया है। गुलाबी रंग के क्षेत्र सिलिकॉन अलग-अलग गुणों के साथ अशुद्धियाँ देते हैं, और लाल और हरे रंग की रेखाएं पॉलीसिलिकॉन होती हैं , जो एक विशेष प्रकार की सिलिकॉन वायरिंग होती है जो शीर्ष पर पड़ी होती है। सही जाली के समान, ROM की संरचना पर ध्यान दें। ROM में बिट्स के भंडारण के ट्रांजिस्टर के दो कॉलम होते हैं। इसके संचालन की योजना की व्याख्या करने के लिए, मैं ट्रांजिस्टर की योजना से शुरू करूंगा।


हटाए गए धातु की परत के साथ स्थिरांक के साथ रॉम का हिस्सा। पंक्तियों का चयन करने के लिए बड़े ट्रांजिस्टर के तीन स्तंभों का उपयोग किया जाता है।

1970 के दशक में उच्च घनत्व एकीकृत सर्किट (आईसी) आमतौर पर एन-एमओएस ट्रांजिस्टर से बनाए गए थे(आधुनिक कंप्यूटर सीएमओएस से बने होते हैं, जिनमें एन-एमओएस और पी-एमओएस रिवर्स पोलरिटी से युक्त होते हैं)। नीचे दिया गया चित्र एन-एमओएस ट्रांजिस्टर की संरचना को दर्शाता है। आईसी को एक सिलिकॉन सब्सट्रेट से इकट्ठा किया जाता है, जिस पर ट्रांजिस्टर बनाए जाते हैं। वांछित विद्युत गुणों के साथ "फैलाना" क्षेत्र बनाते हुए, अणु को सिलिकॉन साइटों में जोड़ा जाता है। एक ट्रांजिस्टर को एक स्विच के रूप में माना जा सकता है जो वर्तमान को प्रसार के दो वर्गों के बीच प्रवाह करने की अनुमति देता है, जिसे स्रोत और नाली कहा जाता है। ट्रांजिस्टर को एक विशेष प्रकार के सिलिकॉन - पॉलीसिलिकॉन से बने गेट द्वारा नियंत्रित किया जाता है। गेट पर वोल्टेज लागू करने से स्रोत और नाली के बीच प्रवाह करने की अनुमति मिलती है; अन्यथा, कोई प्रवाह नहीं। 8087 काफी जटिल है, इस पर लगभग 40,000 ट्रांजिस्टर हैं।

8087 के लिए विभिन्न स्रोत ट्रांजिस्टर की एक अलग संख्या देते हैं: इंटेल 40,000 के बारे में कहता है, विकिपीडिया 45,000 के बारे में कहता है। शायद पूरी बात अलग-अलग गणना विधियों में है। चूंकि ROM, PLA या अन्य समान संरचना में ट्रांजिस्टर की संख्या संग्रहीत डेटा पर निर्भर करती है, इसलिए वास्तविक लोगों के बजाय "संभावित" ट्रांजिस्टर की संख्या अक्सर स्रोतों में इंगित की जाती है। आप पुल-अप ट्रांजिस्टर पर भी विचार कर सकते हैं या नहीं कर सकते हैं, या उच्च-वर्तमान ड्राइवरों को एक ट्रांजिस्टर या कई समानांतर वाले मान सकते हैं।


आईपी ​​में कार्यान्वित एमओएस संरचना

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


स्थिरांक के साथ ROM का हिस्सा। प्रत्येक सैंपलिंग बस एक विशिष्ट स्थिरांक का चयन करती है। ट्रांजिस्टर पीले रंग में दिखाए गए हैं। X बिट से संबंधित लापता ट्रांजिस्टर को चिह्नित करता है। नारंगी रेखा धातु के कंडक्टर के स्थान को इंगित करती है।

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

ROM सामग्री


स्थिरांक के साथ ROM में 143 पंक्तियाँ और 21 स्तंभ होते हैं। इसमें ऊपरी बाएँ में 6 × 6 ट्रांजिस्टर के एक टुकड़े को छोड़कर 21 बिट्स की 134 पंक्तियाँ होती हैं। इसलिए, स्थिरांक के साथ रॉम का भौतिक आकार 2946 बिट्स है।



रॉम योजना के आधार पर, लापता अनुभाग का अर्थ है कि पहले 12 स्थिरांक 64-बिट हैं, 67-बिट नहीं। ये लगातार CORDIC से संबंधित नहीं हैं, और उन्हें स्पष्ट रूप से अतिरिक्त परिशुद्धता की आवश्यकता नहीं है।

माइक्रोस्कोप के तहत, ROM बिट पैटर्न दिखाई देता है, इसलिए इसे वहां से हटाया जा सकता है। हालांकि, यह बिल्कुल स्पष्ट नहीं है कि बाद में इन बिट्स की व्याख्या कैसे करें। पहला सवाल यह है कि क्या एक ट्रांजिस्टर की उपस्थिति 0 या 1 को इंगित करती है (बाद में पता चला कि एक ट्रांजिस्टर की उपस्थिति 1 है)। दूसरी समस्या यह है कि 134 × 21 बिट ग्रिड को मूल्यों में कैसे अनुवाद किया जाए।

बिट एन्कोडिंग को दो तरीकों से परिभाषित किया जा सकता है। पहला ROM से डेटा पढ़ने वाले सर्किट को ट्रैक करना और यह देखना है कि इसका उपयोग कैसे किया जाता है। दूसरा है कच्चे आंकड़ों में पैटर्न देखना और उन्हें समझने की कोशिश करना। चूंकि 8087 बहुत जटिल है, मैं स्थिरांक का अध्ययन करते समय पूर्ण रिवर्स इंजीनियरिंग से बचना चाहता था, इसलिए मैंने दूसरे दृष्टिकोण का उपयोग किया।

चिप के डेटा पथ में 67 क्षैतिज पंक्तियाँ हैं, इसलिए यह स्पष्ट था कि ROM में 134 पंक्तियाँ 67-बिट स्थिरांक के दो सेटों के अनुरूप हैं। मैंने विषम श्रृंखला से स्थिरांक का एक सेट निकाला, और दूसरी श्रृंखला से, हालांकि प्राप्त मूल्यों का कोई मतलब नहीं था। थोड़ा और सोचने पर, मुझे एहसास हुआ कि पंक्तियाँ वैकल्पिक नहीं थीं, लेकिन एबीबीए के आदेश को दोहराने में चली गईं।

पंक्तियाँ ABBAABBAABBA ... क्रम में गईं, जहाँ पंक्तियाँ A में स्थिरांक के एक सेट के लिए बिट्स हैं, और पंक्तियों B में दूसरे के लिए बिट्स हैं। इस तरह के एक सर्किट का उपयोग केवल वैकल्पिक एबीएवी के बजाय किया गया था, संभवतः क्योंकि एक संपर्क दो आसन्न ट्रांजिस्टर को नियंत्रित कर सकता है। यही है, एक कंडक्टर एए और बीबी में से प्रत्येक समूह का चयन कर सकता है।

जब मैंने ABBA के आदेश को ध्यान में रखा, तो मुझे, और 1. सहित परिचित स्थिरांक का एक गुच्छा मिला, नीचे दिया गया चित्र इन स्थिरांक से बिट्स दिखाता है। फोटो में, बिट 1 एक हरे रंग की पट्टी है, बिट 0 लाल है। बाइनरी सिस्टम में, π 11.001001 है ..., और यह वह मान है जो चिह्नित बिट्स की ऊपरी पंक्ति में दिखाई देता है। निचला मान स्थिर है। बिट्स की


ऊपरी पंक्ति संख्या the है, निचला एक है। 1. यह आरेख दूसरों की तुलना में 90 ° घुमाया जाता है।

व्याख्या के साथ अगली कठिनाई यह है कि केवल मंटिसा को रोम में संग्रहीत किया जाता है, लेकिन घातांक नहीं (अब तक मुझे घातांक के साथ एक अलग रोम नहीं मिला है)। और मैंने विभिन्न प्रदर्शकों के साथ प्रयोग किया जब तक कि मुझे सार्थक मूल्य नहीं मिला। कुछ तुरंत स्पष्ट थे: उदाहरण के लिए, निरंतर 1.204120 घातांक 2 -2 का उपयोग करके लॉग 10 (2) देता है । दूसरों को समझना मुश्किल था, उदाहरण के लिए, 1,734723। अंत में, मुझे एहसास हुआ कि 1.734723 × 2 59 = 10 18 । 8087 में ऐसा क्यों है? शायद इसलिए कि 8087 18-चरित्र वाले बाइनरी दशमलव कोड का समर्थन करता है

कुछ घातांक खोजने में बहुत मुश्किल थे, और मैंने यह देखने के लिए जानवर बल विधि का उपयोग किया कि क्या परिणाम किसी संख्या के लघुगणक या डिग्री प्राप्त करेगा। सबसे मुश्किल बात यह थी कि ln (2) / 3 के लिए स्थिरांक का निर्धारण करना। इस संख्या का महत्व मेरे लिए स्पष्ट नहीं है।

यहाँ ROM से स्थिरांक की पूरी सूची है। "अर्थ" कॉलम मेरे अर्थ का विवरण है।

स्थिरांकदशमलव मानअर्थ
1.204120 × 2 -20.3010300लॉग 10 (2)
1.386294 × 2 -10.6931472ln (2)
१.४४२६ ९ ५ × २ 1.426950लॉग 2 (ई)
१.५० 1.5 ९ × २ 3.1415927π
1.000000 × 2 01.0000001
1.660964 × 2 13.219281लॉग 2 (10)
1.734723 × 2 591.00e + 18१० १ 18
1.734723 × 2 591.00e + 18१० १ 18
1.848392×2-30.2310491ln(2)/3
1.082021×224.2808513*log2(e)
1.442695×201.426950log2 (e)
1.414214×201.4142136√2
1.570796×2-10.7853982atan(20)
1.854590×2-20.4636476atan(2-1)
2.000000×2-150.0000610atan(2-14)
2.000000×2-160.0000305atan(2-15)
1.959829×2-30.2449787atan(2-2)
1.989680×2-40.1243550atan(2-3)
2.000000×2-130.0002441atan(2-12)
2.000000×2-140.0001221atan(2-13)
1.997402×2-50.0624188atan(2-4)
1.999349×2-60.0312398atan(2-5)
1.999999×2-110.0009766atan(2-10)
2.000000×2-120.0004883atan(2-11)
1.999837×2-70.0156237atan(2-6)
1.999959×2-80.0078123atan(2-7)
1.999990×2-90.0039062atan(2-8)
1.999997×2-100.0019531atan(2-9)
1.441288×2-90.0028150log2(1+2-9)
1.439885×2-80.0056245log2(1+2-8)
1.437089×2-70.0112273log2(1+2-7)
1.431540×2-60.0223678log2(1+2-6)
1.442343×2-110.0007043log2(1+2-11)
1.441991×2-100.0014082log2(1+2-10)
1.420612×2-50.0443941log2(1+2-5)
1.399405×2-40.0874628log2(1+2-4)
1.442607×2-130.0001761log2(1+2-13)
1.442519×2-120.0003522log2(1+2-12)
1.359400×2-30.1699250log2(1+2-3)
1.287712×2-20.3219281log2(1+2-2)
1.442673×2-150.0000440log2(1+2-15)
1.442651×2-140.0000881log2(1+2-14)


निश्चित नहीं है कि 10 18 को क्यों दोहराया जाता है - शायद अंतर घातीय है।

शारीरिक रूप से, स्थिरांक तीन समूहों में स्थित हैं। पहला समूह वह मान है जो उपयोगकर्ता लोड कर सकता है (1, values, लॉग 2 10, लॉग 2 ई, लॉग 10 2, और ln), साथ ही आंतरिक उपयोग के लिए मान (10 18 , ln (2) / 3, 3 *) लॉग 2 (ई), लॉग 2 (ई) और )2)। दूसरे समूह में 16 अभिजात वर्ग स्थिरांक होते हैं, और तीसरे में 14 लॉग 2 स्थिरांक होते हैं

8087 में, स्थिरांक को सीधे लोड करने के लिए सात निर्देश हैं। निर्देश FDLZ, FLD1, FLDPI, FLD2T, FLD2E, FLDLG2 और FLDLN2 स्थिरांक को लोड करते हैं 0, 1,,, लॉग 2 10, लॉग 2 को स्टैक पर 2ई, क्रमशः 10 2 और ln 2 लॉग करें 0 को छोड़कर ये सभी स्थिरांक ROM में संचित होते हैं।

नक्षत्रों के अंतिम दो समूहों का उपयोग CORDIC एल्गोरिदम का उपयोग करके पारलौकिक कार्यों की गणना के लिए किया जाता है।

CORDIC एल्गोरिदम


ROM से स्थिरांक करके, आप 8087 एल्गोरिदम के संचालन के कुछ विवरणों का पता लगा सकते हैं। ROM में 2 -n से आर्कटेंट, आर्कटेंगेंट्स के 16 मान हैं । इसके अलावा (1 + 2 -एन ) के बेस 2 पर 14 लॉगरिदम संग्रहीत हैं । ऐसे मूल्य असामान्य लग सकते हैं, लेकिन उनका उपयोग कुशल CORDIC एल्गोरिथ्म में किया जाता है, जिसका आविष्कार 1958 में किया गया था।

CORDIC का विचार यह है कि इन कोणों द्वारा सदिश के घूर्णन के साथ कोण को छोटे से कोण में तोड़कर स्पर्शरेखा और आर्कटिक की गणना की जा सकती है। चाल यह है कि यदि आप छोटे कोणों को सही ढंग से चुनते हैं, तो प्रत्येक घुमाव की गणना त्रिकोणमितीय कार्यों के बजाय प्रभावी पारियों और परिवर्धन के माध्यम से की जा सकती है। मान लीजिए हमें टैन (z) खोजने की आवश्यकता है। हम छोटी कोणों का योग में जेड विभाजित कर सकते हैं: जेड ≈ {atan (2 -1 ) या 0} + {atan (2 -2) या 0} + {atan (2 -3 ) या 0} + ... + {atan (2 -16 या 0}। आप द्वारा, कहते हैं, atan (2 वेक्टर घुमा सकते हैं -2 ) 2 से गुणा करके -2 और जोड़ने। लब्बोलुआब यह है कि 2 -2 से गुणा करना एक तेज बिटवाइज़ शिफ्ट के माध्यम से किया जाता है। इस सब को ध्यान में रखते हुए, आप एटैन कॉन्स्टेंट के साथ z की तुलना करके टैन (z) की गणना कर सकते हैं, और फिर 16 चक्रों के अतिरिक्त और बदलावों से गुजरने के बाद, जो लोहे पर जल्दी से किया जाता है। atan के लिए पूर्व-परिकलित और ROM में संग्रहीत हैं। चाप स्पर्शरेखा की गणना एक समान तरीके से की जाती है, लेकिन इसके विपरीत - रोटेशन के दौरान, कोण (स्थिरांक के साथ ROM से) को अभिव्यक्त किया जाता है और अंतिम एक दिया जाता है।

लघुगणक और प्रतिपादक की गणना करते समय, CORDIC एल्गोरिदम और उनके संबंधित लघुगणक स्थिरांक का भी उपयोग किया जाता है। यहां मुख्य बात यह है कि पाली (1 + 2 -एन ) द्वारा गुणा को पाली और परिवर्धन की सहायता से जल्दी से किया जा सकता है। लघुगणक और प्रतिपादक की गणना समीकरणों के एक पक्ष को मूल्यों के अनुक्रम से गुणा करके और इसी लघुगणक स्थिरांक को दूसरे में जोड़कर की जा सकती है। 8087 के लिए दस्तावेज के लघुगणक और प्रतिपादक की गणना के लिए एल्गोरिदम के अनुसार, मुझे यह नहीं मिला। मुझे लगता है कि वे अगले लेख में वर्णित लोगों के समान हैं , केवल 8087 ई के बजाय बेस 2 का उपयोग करता है। मुझे समझ में नहीं आता कि 8087 में लॉग 2 निरंतर (1 + 2 -1 ) उस एल्गोरिथ्म के लिए आवश्यक क्यों नहीं है

8087 में पारलौकिक कार्यों के लिए समर्थन उतना व्यापक नहीं है जितना आप उम्मीद कर सकते हैं। यह केवल स्पर्श और चाप स्पर्शरेखा का समर्थन करता है, बिना साइन और कोसाइन के। उत्तरार्द्ध की गणना करने के लिए, त्रिकोणमितीय पहचान लागू करना आवश्यक है। लघुगणक और प्रतिपादक केवल आधार 2 का समर्थन करते हैं - आधार 10 या ई के लिए उपयोगकर्ता को एक स्केल फैक्टर लागू करना होगा। एक समय में, 8087 ने चिप्स की क्षमता की सीमा का विस्तार किया, इसलिए निर्देशों की संख्या कम से कम कर दी गई।

निष्कर्ष


8087 एक जटिल चिप है, और पहली नज़र में यह एक निराशाजनक पेचीदा भूलभुलैया जैसा दिखता है। हालांकि, अधिकांश भाग के लिए, इसे सावधानीपूर्वक अध्ययन के बाद समझा जा सकता है। इसकी ROM में, 42 स्थिरांक संग्रहीत किए जाते हैं, और उनके मूल्यों को माइक्रोस्कोप का उपयोग करके निकाला जा सकता है। कुछ स्थिरांक (जैसे were) अपेक्षित थे, जबकि अन्य (जैसे ln (2) / 3) अधिक प्रश्न उठाते हैं। कई स्थिरांक का उपयोग कॉर्डिक एल्गोरिदम का उपयोग करते हुए स्पर्शरेखा, आर्कटेंगेंट, लघुगणक और डिग्री की गणना के लिए किया जाता है। एक धातु की परत के बिना एक क्रिस्टल 8087 की तस्वीर। क्लिक करने योग्य।




हालांकि फ्लोटिंग पॉइंट ऑपरेशन के लिए इंटेल 8087 40 साल पहले पेश किया गया था, लेकिन इसका असर अभी भी महसूस किया जा रहा है। उन्होंने फ्लोटिंग पॉइंट नंबरों के लिए IEEE 754 मानक को जन्म दिया, जिसका उपयोग अधिकांश अंकगणितीय गणनाओं में किया गया था, और 8087 निर्देश अधिकांश कंप्यूटरों पर उपयोग किए गए x86 प्रोसेसर का हिस्सा बने हुए हैं।

All Articles