पुराने x64 प्रोसेसर cmpxchg16b निर्देश का अभाव कैसे प्रचलित हैं?


8

परमाणु 128 बिट मेमोरी एक्सचेंज करने के लिए cmpxchg16b निर्देश x64 प्रोसेसर के पुराने संस्करणों पर समर्थित नहीं है, लेकिन ऐसा लगता है कि यह प्रोसेसर के नए संस्करणों द्वारा कई वर्षों से समर्थित है। एक पुराने प्रोसेसर के साथ 64-बिट मशीन का सामना करने की कितनी संभावना है कि इस निर्देश का अभाव है?


12
आपका सबसे महत्वपूर्ण ग्राहक निश्चित रूप से अपने महत्वपूर्ण उत्पादन सर्वर में से एक है, जो केवल क्रिसमस की पूर्व संध्या पर चलने वाले महत्वपूर्ण कार्यों के लिए उपयोग किया जाता है, लेकिन कहीं और नहीं है, और बिल्कुल परीक्षण के वातावरण में नहीं ...

7
मुझे नहीं लगता कि यह सवाल सुपरसुसर को दिया जाना चाहिए था। यह सिर्फ यह सुनिश्चित करता है कि उत्तर जानने वाले कम लोग कभी इस प्रश्न को देखेंगे।
क्रिस्टोफर बार्बर

जवाबों:


6

रेव एफ (जो कि जब वे DDR2 मेमोरी में चले गए हैं) से पहले आप शुरुआती AMD 64-बिट प्रोसेसर को देख रहे हैं। कुछ शुरुआती डी इंटेल नोकान्स भी हैं जिन्होंने इसका समर्थन नहीं किया, मुझे लगता है, लेकिन ये दुर्लभ हैं।


4

मेरे पास कुछ प्रकार के CPU की व्यापकता के बारे में कोई डेटा नहीं है, इसलिए मैं सीधे आपके प्रश्न का उत्तर नहीं दे सकता। हालांकि, अगर आप चाहे सीपीयू का समर्थन करता है पता कर सकते हैं CMPXCHG16Bकी जाँच करें कि क्या द्वारा CPUID.01h.ECX.bit13है 1(उपलब्ध) या 0(नहीं उपलब्ध हो)।

यह भी ध्यान दें कि इंटेल के मैनुअल सुझाव देते हैं कि इस निर्देश को परमाणु रूप से पूरा करने के लिए, आपको इसे LOCKउपसर्ग के साथ संयोजित करने की आवश्यकता है ।


हां, मुझे पता है कि cpuid परिणाम की जांच कैसे करें। मुद्दा यह है कि अगर यह समर्थित नहीं है तो क्या करें। मैं एक अनुपस्थित निर्देश के आसपास काम करने में समय बर्बाद नहीं करूंगा, अगर मैं उस मामले को व्यवहार में कभी नहीं देखूंगा।
क्रिस्टोफर नाई

@ क्रिस्टोफर नाई - सीपीयूआईडी को 486 प्रोसेसर देर से समर्थन दिया गया है, जिसका अर्थ यह भी है कि हर 64-बिट सक्षम x86 प्रोसेसर सीपीयूआईडी का समर्थन करेगा।

2
@PhiS: मुझे पूरा यकीन है कि क्रिस्टोफर cmpxchg16b के समर्थन की कमी के बारे में बात कर रहे थे। अगर वह गायब है तो क्या करना है
बाहबर

3

सीपीयू में समर्थन वास्तव में पर्याप्त नहीं हो सकता है क्योंकि विंडोज 8.1 के लॉन्च पर कुछ कोर 2 उपयोगकर्ताओं को पता चला था , विशेष रूप से जिनके पास इंटेल डीपी 35 डीपीबोर्ड है। मुझे अभी तक यकीन नहीं है कि मदरबोर्ड CMPXCHG16B को काम करने से रोक सकता है। संभवतः फीचर डिटेक्शन बिट्स को BIOS द्वारा अक्षम किया जा सकता है। यह बताने के लिए कि इस पर युहोंग बाओ का ब्लॉग क्या कहता है, प्रारंभिक कोर 2 चिप्स में एक प्रोसेसर इरेटा था (45nm कोर 2 का E0 / R0 स्टेपिंग) जिससे सीपीयूआईडी के माध्यम से उनकी विशेषताओं को गलत तरीके से पेश किया गया। BIOS / माइक्रोकोड अपडेट के माध्यम से इसके आसपास काम करना संभव था, जहां तक ​​मैं बता सकता हूं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.