2014-04-21 7 views
7

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

मैं अपने सीपीयू को प्राप्त कर सकते हैं अधिकतम सैद्धांतिक FLOP/एस की गणना करने के लिए इसका उपयोग करने की उम्मीद कर रहा हूं।

मैक्स फ्लॉप = (# कोर की संख्या) * (घड़ी आवृत्ति (चक्र/सेक)) * (# फ्लॉप/चक्र)

कुछ भी मुझे सही दिशा में इशारा करते हुए उपयोगी होगा।

4 डी पी फ्लॉप/चक्र: 2 चौड़ा SSE2 अलावा + 2 चौड़ा SSE2 गुणा

8 सपा फ्लॉप/चक्र: 4 मैं इस FLOPS per cycle for sandy-bridge and haswell SSE2/AVX/AVX2

इंटेल कोर 2 और Nehalem पाया है -व्यापी एसएसई अतिरिक्त + 4-चौड़ा एसएसई गुणा

लेकिन मुझे यकीन नहीं है कि ये आंकड़े कहां पाए गए थे। क्या वे एक फ़्यूज्ड मल्टीप्ली एड (एफएमएडी) ऑपरेशन मान रहे हैं?

संपादित करें: इसका उपयोग करके, डीपी में मैं इंटेल द्वारा 38.4 जीएफएलओपी/एस (उद्धृत here) के रूप में उद्धृत सही डीपी अंकगणितीय थ्रूपुट की गणना करता हूं। एसपी के लिए, मुझे दोगुना मिलता है, 76.8 जीएफएलओपी/एस। मुझे पूरा यकीन है कि 4 डीपी फ्लॉप/चक्र और 8 एसपी फ्लॉप/चक्र सही है, मैं सिर्फ 4 और 8 के एफएलओपी/चक्र मूल्य को प्राप्त करने की पुष्टि करना चाहता हूं।

+2

(है 8 एसपी एफएलओपी/चक्र) * (4 कोर) * (2.4 गीगाहर्ट्ज) = 76.8 जीएफएलओपी/एस। प्रोसेसर प्रत्येक चक्र को एक जोड़ और गुणा निर्देश दोनों कर सकता है। लेकिन वे जुड़े नहीं हैं। – Mysticial

+0

आपको शायद आधिकारिक संख्या नहीं मिल रही है क्योंकि कोई नहीं है - यह आपके निर्देशों के मिश्रण पर निर्भर करता है, और उनके बीच निर्भरता। सैद्धांतिक अधिकतम की गणना की जा सकती है, लेकिन बहुत कम उपयोगी वास्तविक दुनिया के कार्यक्रम (सिंथेटिक बेंचमार्क के अलावा) हैं जो अधिकतम प्राप्त करने के लिए बिल्कुल सही क्रम में निर्देशों का सही मिश्रण होगा ... – twalberg

+1

और यदि आप हैं यह देखने के लिए उत्सुक है कि अधिकतम एफएलओपी/एस कैसे प्राप्त करें, इस पर ध्यान दें: http://stackoverflow.com/questions/8389648/how-do-i-achieve-the-theoretical-maximum-of-4-flops-per -साइकिल वह डबल परिशुद्धता के लिए है, लेकिन इसे आसानी से एक ही परिशुद्धता में संशोधित किया जा सकता है। – Mysticial

उत्तर

6

नेहलेम 4 डीपी या 8 निष्पादित करने में सक्षम है एसपी फ्लॉप/चक्र। यह एसएसई का उपयोग करके पूरा किया जाता है, जो पैक किए गए फ्लोटिंग पॉइंट वैल्यू पर 2/डीपी में पंजीकरण करता है और एसपी में 4/रजिस्टर करता है। 4 डीपी एफएलओपी/चक्र या 8 एसपी एफएलओपी/चक्र प्राप्त करने के लिए कोर को प्रति चक्र 2 एसएसई निर्देश निष्पादित करना होगा। यह प्रति चक्र एक एमयूएलडीपी और एक एडीडीडीपी (या एक एमयूएलएसपी और एक एडीडीएसपी) निष्पादित करके पूरा किया जाता है। कारण यह संभव है क्योंकि नेहलेम के पास एसएसई गुणा और एसएसई जोड़ने के लिए अलग निष्पादन इकाइयां हैं, और इन इकाइयों को पाइपलाइन किया गया है ताकि throughput एक गुणा और प्रति चक्र एक जोड़ा जा सके। एसपी में 4 चक्रों और डीपी में 5 चक्रों के लिए गुणक पाइपलाइन में गुणांक हैं। एसपी/डीपी से स्वतंत्र 3 चक्रों के लिए पाइपलाइन में जोड़ता है। पाइपलाइन में चक्रों की संख्या latency के रूप में जानी जाती है। शीर्ष FLOP/चक्र की गणना करने के लिए आपको केवल इतना जानने की आवश्यकता है कि थ्रूपुट है। तो गुणक और योजक (2 निष्पादन इकाइयों) दोनों के लिए 1 एसएसई वेक्टर निर्देश/चक्र के थ्रूपुट के साथ आपके पास 2 एक्स 2 = 4 एफएलओपी/डीपी में चक्र और एसपी में 2 एक्स 4 = 8 एफएलओपी/चक्र है। वास्तव में इस चोटी के थ्रूपुट को बनाए रखने के लिए आपको विलंबता पर विचार करने की आवश्यकता है (इसलिए पाइपलाइन की गहराई के रूप में पाइपलाइन में कम से कम कई स्वतंत्र संचालन हैं) और आपको पर्याप्त तेज़ी से डेटा को खिलाने में सक्षम होने पर विचार करने की आवश्यकता है। नेहलेम में एक एकीकृत मेमोरी कंट्रोलर है जो स्मृति से बहुत अधिक बैंडविड्थ में सक्षम है, जो डेटा प्रीफेचर डेटा के एक्सेस पैटर्न को सही ढंग से अनुमानित करता है (अनुक्रमिक रूप से स्मृति से लोड करना एक छोटा पैटर्न है जिसे वह अनुमान लगा सकता है) प्राप्त कर सकता है। आमतौर पर चरम फ्लॉप/चक्र पर डेटा के साथ सभी कोरों को खिलाने के लिए पर्याप्त मेमोरी बैंडविड्थ नहीं होती है, इसलिए चरम फ्लॉप/चक्र को बनाए रखने के लिए कैश से डेटा का पुन: उपयोग करने की आवश्यकता होती है।

विवरण जहां आप स्वतंत्र निष्पादन इकाइयों की संख्या और उनके थ्रूपुट और चक्र में विलंबता की जानकारी के बारे में जानकारी प्राप्त कर सकते हैं।

पृष्ठ 105 8 देखें।9 निष्पादन इकाइयों इस दस्तावेज़ के

http://www.agner.org/optimize/microarchitecture.pdf

इसमें कहा गया है कि Nehalem

के लिए बंदरगाह 0 पर चल बिन्दु गुणक डबल और लंबी डबल परिशुद्धता के लिए और एकल परिशुद्धता के लिए 4 से 5 के एक विलंबता है । फ़्लोटिंग पॉइंट गुणक का थ्रूपुट कोर 2 पर लंबे डबल परिशुद्धता को छोड़कर, प्रति घड़ी चक्र 1 ऑपरेशन है। फ़्लोटिंग पॉइंट योजक पोर्ट 1 से जुड़ा हुआ है। इसमें 3 की विलंबता है और पूरी तरह से पाइपलाइन है।

8 एसपी फ्लॉप/चक्र प्राप्त करने के लिए आपको 4 एसपी एडीडी/चक्र और 4 एसपी एमयूएल/चक्र की आवश्यकता है। योजक और गुणक अलग निष्पादन इकाइयों पर हैं, और अलग-अलग बंदरगाहों से बाहर निकलते हैं, प्रत्येक एसएसई पैक (वेक्टर) निर्देशों (4x32bit = 128 बिट) का उपयोग कर एक साथ 4 एसपी पैक किए गए ऑपरेटरों पर निष्पादित कर सकते हैं। दोनों में प्रति घड़ी चक्र 1 ऑपरेशन का थ्रूपुट होता है। उस थ्रूपुट को प्राप्त करने के लिए, आपको विलंबता पर विचार करने की आवश्यकता है ... परिणाम का उपयोग करने से पहले निर्देश के मुद्दों के बाद कितने चक्र .. इसलिए आपको विलंबता को कवर करने के लिए कई स्वतंत्र निर्देश जारी करना होगा। एकल परिशुद्धता में गुणक 4 के एक विलंबता और आप इंटेल अनुकूलन गाइड में Nehalem के लिए ये एक ही प्रवाह और विलंबता संख्या पा सकते हैं 3.

की योजक, टेबल सी-15a

http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html

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