2012-10-27 17 views
7

क्या एक परिवर्तनीय शिफ्ट ecx पर एक आंशिक रजिस्टर स्टॉल (या recombining μops पंजीकृत) उत्पन्न कर सकता है? यदि हां, तो किस पर माइक्रोआर्किटेक्चर?सीएल रजिस्टर परिणाम का उपयोग कर एक आंशिक रजिस्टर स्टॉल में बदलाव कर सकते हैं?

मैंने कोर 2 (65 एनएम) पर इसका परीक्षण किया है, जो केवल cl पढ़ता है।

_shiftbench: 
    push rbx 
    mov edx, -10000000 
    mov ecx, 5 
    _shiftloop: 
    mov bl, 5 ; replace by cl to see possible recombining 
    shl eax, cl 
    add edx, 1 
    jnz _shiftloop 
    pop rbx 
    ret 

mov cl, 5 द्वारा mov bl, 5 की जगह कोई अंतर नहीं है, अगर वहाँ रजिस्टर recombining, पर जा के रूप में add eax, ecx द्वारा shl eax, cl की जगह प्रदर्शन किया जा सकता था जो यह होता बनाया (मेरे परीक्षणों में add साथ संस्करण एक 2.8x मंदी जब अनुभव bl के बजाय cl पर लिखना)।


टेस्ट परिणाम:

  • मेरॉम: कोई स्टाल मनाया
  • Penryn: कोई स्टाल मनाया
  • Nehalem: कोई स्टाल मनाया

अद्यतन: नई shrx -group हैसवेल में बदलावों की दिखाती है कि स्टाल। शिफ्ट-गिनती तर्क 8 बिट रजिस्टर के रूप में नहीं लिखा गया है, इसलिए इसकी अपेक्षा की जा सकती है, लेकिन पाठ का प्रतिनिधित्व वास्तव में ऐसे सूक्ष्म-वास्तुशिल्प विवरणों के बारे में कुछ भी नहीं कहता है।

+1

'ecl' द्वारा 'shl' के लिए कोई ऑपोड नहीं है। आपको ऐसा क्यों लगता है? – interjay

+1

@interjay यह समानार्थी है, कुछ असेंबलर उस फॉर्म को अनुमति देते हैं। – harold

+2

यदि यह समानार्थी है, तो आप इसकी अलग-अलग प्रभाव की अपेक्षा कैसे करते हैं? – interjay

उत्तर

4

वर्तमान में वाक्यांशित ("सीएल रजिस्टर का उपयोग कर एक शिफ्ट ...") प्रश्न के शीर्षक में अपना उत्तर है: एक आधुनिक प्रोसेसर के साथ, कभी भी सीएल पर आंशिक रजिस्टर स्टॉल नहीं होता है क्योंकि सीएल को कभी छोटे से कुछ नहीं बदला जा सकता है ।

हां, प्रोसेसर जानता है कि जिस राशि को आप स्थानांतरित कर रहे हैं वह प्रभावी रूप से सीएल में 5 या 6 कम से कम महत्वपूर्ण बिट्स सीएल में निहित है। एक तरह से यह ईसीएक्स पर रोक सकता था अगर ग्रैन्युलरिटी जिस पर इसे निर्देश निर्भरता माना जाता था, वह पूर्ण रजिस्टरों से नीचे नहीं था। यह चिंता अप्रचलित है, हालांकि: नवीनतम इंटेल प्रोसेसर जो पूरे ईसीएक्स रजिस्टर को निर्भरता के रूप में मानता था, वह पेंटियम 4 था। एग्नेर फोग का unofficial optimization manual, पेज 121 देखें। लेकिन फिर, पी 4 के साथ इसे आंशिक रजिस्टर स्टॉल नहीं कहा जाएगा , कार्यक्रम केवल झूठी निर्भरता का शिकार हो सकता है (कहें, यदि सीएच शिफ्ट से ठीक पहले संशोधक था)।

+0

धन्यवाद के बजाय' ecx' द्वारा स्थानांतरित हो रहा था। दुर्भाग्यवश अब तक मैंने दोनों जवाबों का पता लगाया था और यह कि मैंने कभी भी सबसे बुरा सवाल पूछा था। ओह अच्छा.. – harold

+2

@harold अपने आप को हरा मत करो, आप एक अनुभवजन्य उत्तर को मापने के लिए कुछ प्रयास करने के बाद स्टैक ओवरव्लो में आए, और आपने यह भी जांच की कि आपके उपायों को आंशिक रजिस्टर स्टॉल के कारण ज्ञात निर्देश में स्वैप करके समझ में आया है। यदि आपका प्रश्न केवल पद्धति के लिए साइट पर एक अच्छा जोड़ा है। –

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