यह एक अच्छा सवाल है क्योंकि संख्यात्मक एल्गोरिदम और प्रदर्शन को समझना एक प्रभावी कम्प्यूटेशनल वैज्ञानिक होने के लिए एक महत्वपूर्ण शर्त है। इसी समय, यह एक खराब सवाल है क्योंकि सामने आई बाधाओं को सार्थक जवाब देने के लिए पर्याप्त रूप से योग्य नहीं माना जाता है ।
तीन संगणना का प्रदर्शन अंतिम परिणाम में आवश्यक सटीकता पर निर्भर करेगा और साथ ही साथ ऑपरेंड का प्रतिनिधित्व करने के लिए आवश्यक न्यूनतम सटीकता भी होगा। आप सकारात्मक वास्तविक संख्याओं के रूप में , b और c को अर्हता प्राप्त करते हैं , लेकिन हमें यह जानना भी आवश्यक है कि कितने बाइनरी अंक d n का सही प्रतिनिधित्व करने के लिए आवश्यक हैं। सामान्य वास्तविक संख्याओं के लिए प्रदर्शन के विचारों को समझने के लिए, हमें पहले यह समझने की आवश्यकता है कि कंप्यूटर पूर्णांक का प्रतिनिधित्व कैसे करते हैं और साथ ही यह कैसे फ़्लोटिंग-पॉइंट संख्याओं का उपयोग करके वास्तविक संख्याओं का अनुमान लगाते हैं।abcdn
जब कंप्यूटर एक पूर्णांक पर काम करते हैं , तो आवश्यक द्विआधारी अंकों की संख्या स्पष्ट रूप से पूर्णांक के परिमाण के लॉग 2 के बराबर होती है , साथ ही हस्ताक्षर को संभालने के लिए एक अतिरिक्त बिट:M2
लॉग 2 | एम | + 1dn=2|M|+1
उदाहरण के लिए, संख्या -8 को 4 बाइनरी अंकों के साथ दर्शाया जा सकता है। प्रदर्शन और अंतरिक्ष-दक्षता के लिए, आधुनिक तर्क इकाइयों पर पूर्णांक के संख्यात्मक अभिकलन के लिए जिम्मेदार अंकगणितीय तर्क इकाइयाँ (ALU), कुछ निश्चित आकार तक पूर्णांकों पर गणित को संभालने के लिए डिज़ाइन की गई हैं, इन दिनों सबसे आम है d - 32 और d = 64। आपके कंप्यूटर में जैसे x86 प्रोसेसर ही नहीं ALU हैं, वे आज के इलेक्ट्रॉनिक समाज में सर्वव्यापी कंप्यूटर आर्किटेक्चर के एक मौलिक निर्माण खंड हैं। यदि आप वीडियो गेम कंसोल से परिचित हैं, तो आप निंटेंडो 64 को याद कर सकते हैं, आकार (बिट्स) के नाम पर एक वीडियो गेम सिस्टम, कंसोल के प्रोसेसर पर अंकगणितीय तर्क इकाइयां संभाल करने के लिए डिज़ाइन की गई थीं।
अंकगणित तर्क इकाइयों पर पूर्णांक जोड़, घटाव और गुणा बहुत कुशल हैं, और आमतौर पर गणना करने के लिए कई चक्रों से अधिक की आवश्यकता नहीं होती है। विभाजन कम निष्पादन वाले हैं, और आधुनिक प्रोसेसर पर कई दर्जन चक्रों की आवश्यकता हो सकती है। प्रदर्शन प्रसंस्करण इकाई (और अंकगणितीय तर्क इकाई के इसी कार्यान्वयन) की वास्तुकला और इसकी आवृत्ति दोनों पर निर्भर करता है। ध्यान दें कि एक 64-बिट प्रोसेसर आमतौर पर 1 और 64 के बीच कहीं भी x के लिए एक ही गति पर -bit ऑपरेंड पर अंकगणित कर सकता है ।xx
सामान्य कंप्यूटिंग में, और विशेष रूप से वैज्ञानिक कंप्यूटिंग में, पूर्णांक गणित कई संगणनाओं के लिए अस्पष्ट है, और संख्याओं के एक और प्रतिनिधित्व की आवश्यकता है, तथाकथित 'फ़्लोटिंग-पॉइंट' प्रतिनिधित्व। फ्लोटिंग प्वाइंट संख्या जिस तरह से आधुनिक माइक्रोप्रोसेसरों काम के बीच एक समझौता (में चारों ओर डेटा कार्टिंग प्रतिनिधित्व करते हैं -बिट जिसे) और, छोटा कर दिया वैज्ञानिक अंकन में प्रोसेसर पर संख्या का प्रतिनिधित्व एक निश्चित आधार का उपयोग करके गणना की जरूरतों ख (आमतौर पर ख = 2 या ख = 10 ) और दो पूर्णांकों, एक अपूर्णांश (कुछ हलकों में significand) का उपयोग कर संख्या का प्रतिनिधित्व है , और एक प्रतिपादक ई । एक दिया गया संख्या xnbb=2b=10sex तब लगभग इसका प्रतिनिधित्व किया जाता है:
x=s∗be
मैं लगभग कहता हूं क्योंकि यह स्पष्ट होना चाहिए कि 1 जैसे तर्कसंगत तर्क भी को मानक ठिकानों के लिए फ्लोटिंग-पॉइंट नंबर के रूप में बिल्कुल नहीं दिखाया जा सकता है। महत्व के लिए प्रतिबद्ध अंकों की संख्या, संख्या की सटीकता को निर्धारित करती है, जो कि इसकी स्वयं की परिमाण के सापेक्ष है। आईईईई 754 मानकनिर्दिष्ट करती है कि फ्लोटिंग प्वाइंट संख्या उम्मीद कर रहे हैं के लिए नियमों का एक नंबर व्यवहार करने के लिए, (और इसी रेंज और सटीक) significand और अपूर्णांश की सीमाओं सहित कई महत्वपूर्ण मूल्यों के लिएघn, तो संख्यात्मक गणनाओं के भीतर दोहराने योग्य हैं कि कुछ सहिष्णुता। फ्लोटिंग-पॉइंट नंबरों के काम में काफी सूक्ष्मता है, जो इस उत्तर में कैप्चर करने की उम्मीद नहीं कर सकते हैं, एक अच्छे परिचय के लिए मैं"फ्लोटिंग-पॉइंट अंकगणित के बारे में क्या जानना चाहिए"13dn।
पिछले 50 वर्षों में बौद्धिक प्रयासों की एक महत्वपूर्ण राशि को कुशलता से फ्लोटिंग-पॉइंट ऑपरेशंस की गणना करने के लिए प्रोसेसर क्षमता में सुधार करने में निवेश किया गया है। आधुनिक प्रोसेसर पर, इन संगणनाओं को एक या अधिक फ्लोटिंग-पॉइंट इकाइयों (FPUs) द्वारा नियंत्रित किया जाता है, जो अंकगणित तर्क इकाई का एक अधिक परिष्कृत संस्करण है जो फ्लोटिंग-पॉइंट नंबरों पर अंकगणितीय संचालन करने के लिए डिज़ाइन किया गया है और आमतौर पर IEEE 754-निर्दिष्ट 32 को संभालने के लिए डिज़ाइन किया गया है -बिट फ़्लोटिंग-पॉइंट नंबर (अक्सर 'फ़्लोट्स' के रूप में संदर्भित) और 64-बिट फ़्लोटिंग-पॉइंट नंबर (अक्सर 'डबल्स' के रूप में संदर्भित) कुशलता से। अंकगणितीय तर्क इकाइयों के समान, फ़्लोटिंग-पॉइंट इकाइयाँ अक्सर कुछ चक्रों में जोड़, घटाव और गुणन की गणना कर सकती हैं, जबकि आमतौर पर विभाजन की आवश्यकता थोड़ी अधिक होती है।
ज्यादातर मामलों में, IEEE 754 64-बिट फ्लोटिंग-पॉइंट 'डबल्स' संख्यात्मक अभिकलन के लिए पर्याप्त हैं, तो आइए मान लेते हैं कि , b , और c प्रत्येक 64-बिट डबल्स के रूप में दर्शाए गए हैं, और आप प्रदर्शन में रुचि रखते हैं एक Intel नेहेल्म आर्किटेक्चर पर स्केलर ऑपरेशन के रूप में तीन संगणनाएँ x87 फ्लोटिंग-पॉइंट इंस्ट्रक्शन सब्मिट का उपयोग करते हुए, यानी आप इन ऑपरेशन को लूप के लिए या डेटा की श्रेणी में गणना करने में रुचि नहीं रखते हैं, और आप वेक्टर एक्सटेंशन का उपयोग नहीं करना चाहते हैं । निर्देश विलंबता जानकारी Agner Fog के इंटेल / AMD आर्किटेक्चर के लिए निर्देश संदर्भ तालिकाओं के उत्कृष्ट सेट से एकत्र की गई है ।abc
- ab
- लॉग इन a cac
- c1b
1 सामान्य घातांक को अक्सर निम्नलिखित पहचान के साथ लागू किया जाता है:
ab=βa⋅logβb
β2eβ=2abt=a⋅log2b2t
FYL2X + F2XM1 + ~ 20 = 80 + 51 + ~ 20 = ~ 151 चक्र
2 यह आधार पहचान के परिवर्तन के आधार पर दो लघुगणक और एक विभाजन में परिवर्तित किया जा सकता है और सटीक परिणाम के लिए इसे पुन: व्यवस्थित करने की आवश्यकता नहीं है।
2 * FYL2X + FDIV = 2 * 80 + (7 से 27) = 167 से 187 चक्र
[३] यह एक विभाजन के बाद होता है जिसके बाद एक घातांक होता है, इसलिए [१] प्लस FDIV, ~ १ c५ चक्र।