2013-02-03 40 views
10

अंतिम शाखा रिकॉर्ड रजिस्टर जोड़े (एमएसआर) के संग्रह को संदर्भित करता है जो हाल ही में निष्पादित शाखाओं से संबंधित स्रोत और गंतव्य पते को संग्रहीत करता है। http://css.csail.mit.edu/6.858/2012/readings/ia32/ia32-3b.pdf दस्तावेज़ में रुचि रखने पर अधिक जानकारी है।इंटेल अंतिम शाखा रिकॉर्ड का उपयोग करने का ओवरहेड क्या है?

  • ए) क्या कोई इस बात का विचार कर सकता है कि एलबीआर सामान्य कार्यक्रमों के प्रोग्राम निष्पादन को धीमा कर देता है - सीपीयू और आईओ दोनों गहन?
  • बी) एलबीआर ट्रेसिंग चालू होने पर शाखा भविष्यवाणी बंद हो जाएगी?
+1

आप इंटेल एलबीआर का उपयोग कैसे करेंगे? मुझे लगता है कि रिकॉर्डिंग और भविष्यवाणी के लिए एलबीआर का ओवरहेड छोटा नहीं है। – osgx

+0

मैं बस एक कार्यक्रम की शुरुआत में एलबीआर सक्षम करता हूं और अंत में इसे अक्षम करता हूं। मुझे यह भी लगता है कि कम से कम सॉफ्टवेयर उपकरण की तुलना में ओवरहेड अपेक्षाकृत छोटा होना चाहिए। लेकिन, अगर यह ओवरहेड पर कुछ आधिकारिक दस्तावेज मौजूद है तो यह सहायक होगा। – user655617

+0

आधिकारिक दस्तावेज़ीकरण के लिए एकमात्र जगह http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html – osgx

उत्तर

10

कागज Intel Code Execution Trace Resources शाखा ट्रेसिंग के तीन वेरिएंट को सूचीबद्ध करता है (Arium कार्यकर्ताओं, क्रेग पेडरसन और जेफ Acampora, अप्रैल 29, 2012 तक):

  • अंतिम शाखा रिकॉर्ड (LBR) में झंडा डीबग सीटीएलएमएसआर और इसी तरह के अंतिम ब्रंच टीओआईपी और लास्ट ब्रंचफ्रॉम एमएसआर के साथ-साथ LastExceptionToIP और LastExceptionFromIP MSRs।

  • शाखा ट्रेस स्टोर (बीटीएस) या तो कैश-ए-रैम या सिस्टम डीआरएएम का उपयोग कर।

  • वास्तुकला घटना ट्रेस (AET) XDP बंदरगाह बंद पर कब्जा कर लिया है और एक जुड़े इन-लक्ष्य जांच में बाहर से संग्रहीत।

के रूप में पेज 2, LBR MSRs में जानकारी को बचाने में कहा, "किसी भी वास्तविक समय प्रदर्शन में बाधा नहीं है," लेकिन केवल बहुत ही कम कोड के लिए उपयोगी है ("प्रभावी ट्रेस प्रदर्शन बहुत उथला है और आम तौर पर केवल सैकड़ों निर्देश दिखा सकते हैं। ")। केवल 4-16 शाखाओं के बारे में जानकारी बचाता है।

बीटीएस "से" और "टू" एस के कई जोड़े को कैप्चर करने की अनुमति देता है, और उन्हें कैश (कैश-ए-रैम, कार) या सिस्टम डीआरएएम में स्टोर करता है। कार के मामले में, गहराई/लंबाई का पता लगाने कैश आकार (और कुछ स्थिर) द्वारा सीमित है; डीआरएएम ट्रेस लंबाई लगभग असीमित है। अतिरिक्त मेमोरी स्टोर्स के कारण कागज 20 से 100 प्रतिशत तक बीटीएस के ऊपरी हिस्से का अनुमान लगाता है। लिनक्स पर बीटीएस प्रस्तावित perf branch record (अभी तक वेनिला में नहीं) या btrax project के साथ उपयोग करना आसान है। perf branch प्रस्तुति बीटीएस संगठन के बारे में कुछ संकेत देती है: बीटीएस बफर है, जिसमें "से", "से" फ़ील्ड, और "अनुमानित ध्वज" शामिल है। इसलिए, बीटीएस का उपयोग करते समय शाखा भविष्यवाणी बंद नहीं है। साथ ही, जब बीटीएस बफर अधिकतम आकार तक भर जाता है, तो बाधा उत्पन्न होती है। कर्नेल में बीटीएस-हैंडलिंग मॉड्यूल (perf_events उपप्रणाली या btrax कर्नेल मॉड्यूल) इस तरह के बाधा के मामले में बीटीएस बफर से डेटा को अन्य स्थान पर कॉपी करना चाहिए।

तो, बीटीएस मोड में ओवरहेड के दो स्रोत हैं: कैश/मेमोरी स्टोर्स और बीटीएस बफर ओवरफ्लो से इंटरप्ट्स।

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

कागज के "सारांश" कहते हैं: 

LBR कोई भूमि के ऊपर है, लेकिन बहुत उथला (4-16 शाखा स्थानों, सीपीयू पर निर्भर करता है) है। ट्रेस डेटा तुरंत रीसेट से बाहर उपलब्ध है।

बीटीएस बहुत गहरा है, लेकिन इसका सीपीयू प्रदर्शन पर असर पड़ता है और ऑन-बोर्ड रैम की आवश्यकता होती है। जैसे ही कार शुरू होता है, ट्रेस डेटा उपलब्ध होता है।

एईटी विशेष आईटीपी हार्डवेयर की आवश्यकता है और सभी सीपीयू आर्किटेक्चर पर उपलब्ध नहीं है। इसका बोर्ड से ट्रेस डेटा स्टोर करने का लाभ है।

+0

पेपर साझा करने और मुख्य बिंदुओं को सारांशित करने के लिए धन्यवाद! – user655617