X86 और x64 प्रोसेसर पर CPU निर्देशों की विलंबता


14

मैं कुछ तालिका या कुछ इसी तरह की तलाश में हूं जो मुझे विधानसभा कोड की दक्षता की गणना करने में मदद कर सकती है।

जैसा कि मुझे पता है कि बिट शिफ्टिंग में 1 सीपीयू घड़ी लगती है, लेकिन मैं वास्तव में देख रहा हूं कि कितना जोड़ (घटाव समान होना चाहिए), गुणा और विभाजन समय की गणना कैसे करें यदि मुझे पता है कि मान विभाजित हैं।

मुझे वास्तव में पूर्णांक मूल्यों के बारे में जानकारी की आवश्यकता है, लेकिन फ्लोट निष्पादन समय का भी स्वागत है।


जवाबों:


10

सामान्य तौर पर, इन कार्यों में से प्रत्येक एकल घड़ी चक्र के साथ-साथ निष्पादित करने के लिए लेता है यदि पाइपलाइन के विभिन्न चरणों में तर्क रजिस्टर में हैं।

विलंबता से आपका क्या तात्पर्य है? ALU में एक ऑपरेशन में कितने चक्र खर्च होते हैं?

आपको यह तालिका उपयोगी लग सकती है: http://www.agner.org/optimize/instruction_tables.pdf

चूंकि आधुनिक प्रोसेसर सुपर स्केलर हैं और ऑर्डर से बाहर निकल सकते हैं, इसलिए आप अक्सर प्रति चक्र के लिए कुल निर्देश प्राप्त कर सकते हैं। चक्र विलंबता)।

कई x86 निर्देश कुछ चरणों को पूरा करने के लिए कई चक्र ले सकते हैं यदि वे जटिल हैं (उदाहरण के लिए REP कमांड या बदतर MWAIT)।


3
सभी हाल ही में x86 सीपीयू (और कुछ पुराने सीपीयू पर अधिक) पर इंटीगर गुणा कम से कम 3 सी विलंबता है। कई सीपीयू पर, यह पूरी तरह से पाइपलाइज्ड है, इसलिए थ्रूपुट प्रति घड़ी 1 है, लेकिन आप केवल यह प्राप्त कर सकते हैं कि यदि आपके पास उड़ान में तीन स्वतंत्र गुण हैं। (हैसवेल पर एफपी गुणा 5 सी विलंबता, 0.5 सी थ्रूपुट है, इसलिए आपको थ्रूपुट को संतृप्त करने के लिए 10 की आवश्यकता है)। प्रभाग ( divऔर idiv) भी बदतर है: यह microcoded है, और बहुत अधिक विलंबता से addया shr, और नहीं भी पूरी तरह से किसी भी CPU पर pipelined। यह सब Agner Fog के निर्देश तालिकाओं से सीधे है, इसलिए यह एक अच्छी बात है जिसे आपने लिंक किया है।
पीटर कॉर्डेस


7

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


मुझे पता है कि, लेकिन मुझे इसकी ज़रूरत है कि मैं वास्तविक परियोजना में नहीं बल्कि एक तरह के मज़ेदार प्रोग्रामिंग प्रोजेक्ट में हूँ।
ST3 19

चाहे आपको वास्तविक के लिए इसकी आवश्यकता हो या मज़े के लिए इस प्रोसेसर लाइन के लिए उत्तर को बदलना नहीं है। क्या आपने इसके बजाय एक प्रोपेलर चिप जैसे अधिक नियतात्मक प्रोसेसर पर स्विच करने पर विचार किया है?
ब्रायन नोब्लुच सेप

3
यहां तक ​​कि एक स्केलर के साथ, इन-ऑर्डर कार्यान्वयन शाखा गलतफहमी और कैश मिस भी रन टाइम में भिन्नता पैदा कर सकती है।
पॉल ए। क्लेटन

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

यदि आप प्रदर्शन कारणों से हाथ से लिख रहे हैं, तो यह वास्तव में इंटेल और एएमडी सीपीयू पर विलंबता और थ्रूपुट बाधाओं के लिए देखने के लिए उपयोगी है। यह कठिन है, हालांकि, और कभी-कभी एएमडी के लिए इष्टतम क्या इंटेल के लिए इष्टतम नहीं है।
पीटर कॉर्ड्स

4

आप इंटेल सॉफ्टवेयर डेवलपर मैनुअल पर इंटेल सीपीयू के बारे में जानकारी पा सकते हैं । उदाहरण के लिए विलंबता पूर्णांक जोड़ के लिए 1 चक्र है और पूर्णांक गुणन के लिए 3 चक्र।

मैं गुणन के बारे में नहीं जानता, लेकिन मैं हमेशा इसके अलावा एक चक्र लेने की अपेक्षा करता हूं।


एक चक्र, जब यह "मुक्त" को छोड़कर (समानांतर में जब पाइपलाइन सही ढंग से ऊपर होती है) या कैश मिस के कारण अधिक समय लगता है। :-)
ब्रायन नोब्लुक

2
वर्तमान में (2018) यह जानकारी परिशिष्ट C में उपलब्ध है, जिसका नाम "इंस्ट्रक्शन लेटेंसी एंड थ्रूपुट" दस्तावेज़ 248966 "Intel® 64 और IA-32 आर्किटेक्चर ऑप्टिमाइजेशन रेफरेंस मैनुअल" उत्तर में जुड़े पेज पर उपलब्ध है
stananct
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.