क्या एक परिवर्तनीय शिफ्ट 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 बिट रजिस्टर के रूप में नहीं लिखा गया है, इसलिए इसकी अपेक्षा की जा सकती है, लेकिन पाठ का प्रतिनिधित्व वास्तव में ऐसे सूक्ष्म-वास्तुशिल्प विवरणों के बारे में कुछ भी नहीं कहता है।
'ecl' द्वारा 'shl' के लिए कोई ऑपोड नहीं है। आपको ऐसा क्यों लगता है? – interjay
@interjay यह समानार्थी है, कुछ असेंबलर उस फॉर्म को अनुमति देते हैं। – harold
यदि यह समानार्थी है, तो आप इसकी अलग-अलग प्रभाव की अपेक्षा कैसे करते हैं? – interjay