2016-09-05 16 views
8

मैंने हाल ही में row hammer हमले के बारे में सीखा। इस हमले को करने के लिए प्रोग्रामर को एक विशिष्ट संख्या के पते के लिए एक सीपीयू के पूर्ण कैश पदानुक्रम को फ्लश करने की आवश्यकता है।CLFLUSH x86 में क्यों मौजूद है?

मेरा प्रश्न है: x86 में CLFLUSH क्यों आवश्यक है? अगर सब L * कैश पारदर्शी रूप से (यानी, कोई स्पष्ट कैश अमान्यकरण आवश्यक) कार्य क्या, कभी भी इस अनुदेश का उपयोग करने के कारण हैं? इसके अलावा: क्या सीपीयू मेमोरी एक्सेस पैटर्न अनुमान लगाने के लिए स्वतंत्र नहीं है, और इस तरह निर्देश को पूरी तरह से अनदेखा करता है?

उत्तर

6

अधिकतर संचित करने योग्य MMIO क्षेत्रों की तरह अजीब सामान के लिए, मुझे लगता है।

Skylake कमजोर-आदेश दिया गया उच्च प्रदर्शन CLFLUSHOPT शुरू की क्योंकि यह गैर वाष्पशील भंडारण सीधे मेमोरी पदानुक्रम को झुका के लिए उपयोगी है। फ़्लशिंग कैश सुनिश्चित करता है कि डेटा वास्तविक स्मृति में लिखा गया है, सीपीयू में अभी भी गंदा नहीं है।

यह संभावित भी उपकरणों के लिए गैर-संचय-सुसंगत डीएमए के लिए मायने रखती है, अगर कुछ अभी भी 86 में ऐसा कर सकते हैं। (शायद नहीं; मुझे लगता है कि सभी डीएमए अब कैश-सुसंगत हैं।)

मैं इस पर एक विशेषज्ञ नहीं हूं, और यह सभी उपयोग-मामलों को कवर करने का पूरा उत्तर नहीं है।

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