2012-03-25 12 views
5

यह प्रश्न छोटा और प्यारा होगा।मध्य-निर्देश में एआरएम बाधा उत्पन्न हो सकती है?

मुझे पता है कि निर्देश के बीच एक निर्देश हो सकता है लेकिन के दौरान एक बाधा हो सकती है? क्या रजिस्टरों में सभी मानों को लोड करने से पहले एक लोड एकाधिक निर्देश बाधित हो सकता है?

mov r0, r1 
       < interrupt can happen here 
ldm r0, {r1-r4} < can an interrupt happen **during** a load multiple instruction? 

उत्तर

6

भार एकाधिक निर्देश स्पष्ट रूप से परमाणु नहीं हैं। एआरएम वी 7 सी आर्किटेक्चर संदर्भ मैनुअल के सेक्शन ए 3.5.3 देखें।

LDM, एलडीसी, LDC2, LDRD, एसटीएम, एसटीसी, STC2, STRD, धक्का, पॉप, RFE, एसआरएस, VLDM, VLDR, VSTM, और VSTR निर्देश शब्द-मिलान के एक दृश्य के रूप में क्रियान्वित कर रहे हैं शब्द का उपयोग करता है। प्रत्येक 32-बिट शब्द पहुंच की गारंटी है एकल प्रतिलिपि परमाणु। आर्किटेक्चर को अनुक्रम से दो या दो से अधिक शब्द पहुंच के के बाद की आवश्यकता नहीं है परमाणु।

यदि आप पर पढ़ा, आपको पता चल जाएगा कि LDM/एसटीएम निर्देश व्यवधान द्वारा निरस्त किया गया जा सकता है (और बाधा वापसी पर शुरू से ही पुन: प्रारंभ)। एलडीएम और एसटीएम निर्देश हमेशा डेटा निरस्त करके बाधित हो सकते हैं, इसलिए वे उस अर्थ में परमाणु नहीं हैं। अन्यथा, एआरएमवी 7-ए आर्किटेक्चर आपकी मदद करने के लिए सबसे अच्छा है। इंटरप्ट्स के लिए, यदि कम अंतराल विलंबता सक्षम होती है, तो उन्हें केवल बाधित किया जा सकता है, और सामान्य स्मृति का उपयोग किया जा रहा है। तो कम से कम, आपको डिवाइस मेमोरी में बार-बार एक्सेस नहीं मिलेगी। आप ऐसा कुछ भी नहीं करना चाहते हैं जो सामान्य स्मृति के परमाणु पढ़ने/लिखने की अपेक्षा करता है।

किसी भी समय v7-m, एलडीएम और एसटीएम में बाधा डाली जा सकती है (एआरएमवी 7-एम आर्किटेक्चर रेफरेंस मैनुअल के अनुभाग बी 1.5.10 देखें)। यह कार्यान्वयन परिभाषित किया गया है कि क्या लोड लोड/स्टोर्स की सूची की शुरुआत से निर्देश को पुनरारंभ किया गया है या नहीं, या फिर इसे छोड़ दिया गया है या नहीं। एआरएम कहते हैं:

ARMv7 एम वास्तुकला की निरंतरता का समर्थन करता है, या से शुरुआत, नीचे उल्लिखित के रूप में एक परित्यक्त LDM या एसटीएम अनुदेश को पुन: प्रारंभ। जहां एक एलडीएम या एसटीएम छोड़ दिया जाता है और फिर से शुरू किया जाता है (आईसीआई बिट्स समर्थित नहीं हैं), निर्देशों को अस्थिर स्मृति के साथ उपयोग नहीं किया जाना चाहिए।

दूसरे शब्दों में, यदि आप पोर्टेबल कोड लिखने की कोशिश कर रहे हैं तो एलडीएम या एसटीएम परमाणु होने पर भरोसा न करें।

+0

इसके अलावा, v5 (शायद सभी> = v4?) पर, यह कार्यान्वयन को परिभाषित किया गया है कि आधार रजिस्टर लिखने के साथ एक निर्देश डेटा बेसोर्ट पर पहले ही अपडेट किया गया आधार रजिस्टर होगा। – ninjalj

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