2010-07-15 13 views
6

मैं जेनेटिक एल्गोरिदम का उपयोग कर जीसीसी के लिए अनुकूलन का एक गुच्छा लिखना चाहता हूं। मुझे कुछ आंकड़ों और फिट कार्यों के लिए असेंबली फ़ंक्शंस के निष्पादन समय को मापने की आवश्यकता है। सामान्य समय माप का उपयोग नहीं किया जा सकता है, क्योंकि यह कैश आकार से प्रभावित होता है।
तो मुझे एक टेबल चाहिए जहां मैं ऐसा कुछ देख सकूं।प्रोसेसर चक्र में x86 और x86-64 असेंबली कमांड निष्पादन समय को मापने के लिए कैसे करें?

command | operands | operands sizes | execution cycles 

क्या मैं कुछ याद कर रहा हूं? खराब अंग्रेजी के लिए खेद है।

+0

आपकी अंग्रेजी ठीक है। मेरे पास सिर्फ एक गड़बड़ है: मुझे नहीं पता कि वह दिन कभी आएगा जब माइक्रो ऑप्टिमाइज़ेशन के माध्यम से कुछ प्रतिशत स्पीडअप की तलाश करने वाले लोग मैक्रो ऑप्टिमाइज़ेशन के माध्यम से स्पीडअप के कई कारकों को प्राप्त करने के मूल्य को भी समझेंगे, जो कंपाइलर्स नहीं कर सकते हैं। –

+0

संभावित डुप्लिकेट [प्रत्येक असेंबली निर्देश के लिए कितने CPU चक्र की आवश्यकता है?] (Http://stackoverflow.com/questions/692718/how-many-cpu-cycles-are-needed-for-each-assembly-instruction) –

उत्तर

2
आधुनिक CPU के साथ

, वहाँ कोई सरल तालिकाओं को देखने के लिए कितनी देर तक एक निर्देश को पूरा करने के (हालांकि जैसे तालिकाओं कुछ पुराने प्रोसेसर के लिए मौजूद हैं उदाहरण के लिए, 486) ले जाएगा रहे हैं। प्रत्येक निर्देश क्या करता है और चिप निर्माता से कितना समय लग सकता है, इस बारे में आपकी सबसे अच्छी जानकारी। जैसे Intel's documentation manuals काफी अच्छे हैं (उस पृष्ठ पर एक अनुकूलन मैनुअल भी है)।

बहुत सारे आधुनिक सीपीयू के पास RDTSC निर्देश भी है जो प्रोसेसर के लिए टाइम स्टैम्प काउंटर पढ़ता है जिस पर कोड EDX:EAX में चल रहा है। इसके साथ भी समस्याएं हैं, लेकिन अनिवार्य रूप से यदि आप जिस कोड को प्रोफाइल कर रहे हैं वह वास्तविक उपयोग की स्थिति का प्रतिनिधि है, तो इसका निष्पादन बाधित नहीं होता है या किसी अन्य सीपीयू कोर में स्थानांतरित नहीं होता है, तो आप अपने निर्देशों को प्राप्त करने के लिए इस निर्देश का उपयोग कर सकते हैं। अर्थात। उस कोड को घेर लें जिसे आप दो RDTSC निर्देशों के साथ अनुकूलित कर रहे हैं और समय के रूप में टीएससी में अंतर लेते हैं। (विभिन्न परीक्षणों/परिस्थितियों में समय पर भिन्नताएं बहुत अच्छी हो सकती हैं; आंकड़े आपका मित्र हैं।)

1

आप असेंबली (rdtsc और दोस्तों) का उपयोग करके अपने कोड का उपयोग कर सकते हैं या PAPI जैसे उपकरण एपीआई का उपयोग कर सकते हैं। एक निर्देश के निष्पादन के दौरान खर्च किए गए घड़ी चक्रों को सटीक रूप से मापना संभव नहीं है, हालांकि - आप सर्वोत्तम अनुमानों के लिए अपने आर्किटेक्चर डेवलपर मैनुअल का उल्लेख कर सकते हैं।

दोनों मामलों में, आपको एसएमपी पर्यावरण पर चलने से खाता प्रभावों को ध्यान में रखते समय सावधान रहना चाहिए।

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