फ्लैश मेमोरी वेट स्टेट्स क्या है?


10

मैं एक फ्रीस्केल पावरपीसी माइक्रोकंट्रोलर का उपयोग कर रहा हूं। डेटाशीट में फ्लैश मेमोरी मॉड्यूल में, "फ्लैश मेमोरी एक्सेस की प्रतीक्षा अवस्था" की संख्या कॉन्फ़िगर करने योग्य है।

निम्नलिखित डेटाशीट का हिस्सा है जिसने मेरा सवाल उठाया, यह PFlash मॉड्यूल रजिस्टरों के रजिस्टर विवरण से लिया गया है:

इस क्षेत्र को PFLash के संचालन आवृत्ति और PFlash के वास्तविक रीड एक्सेस समय के अनुरूप मूल्य पर सेट किया जाना चाहिए। उच्च परिचालन आवृत्तियों को उचित फ्लैश ऑपरेशन के लिए इस क्षेत्र के लिए गैर-शून्य सेटिंग्स की आवश्यकता होती है।
0 मेगाहर्ट्ज, <23 मेगाहर्ट्ज, प्रतीक्षा राज्यों की आवश्यकता = 0 ---
23 मेगाहर्ट्ज, <45 मेगाहर्ट्ज, प्रतीक्षा राज्यों की आवश्यकता = 1 ---
45 मेगाहर्ट्ज, <68 मेगाहर्ट्ज, प्रतीक्षा राज्यों की आवश्यकता = 2 ---
68 मेगाहर्ट्ज, <90 मेगाहर्ट्ज, प्रतीक्षा राज्यों की आवश्यकता = 3 ---

(PFlash प्लेटफ़ॉर्म फ्लैश कंट्रोलर मॉड्यूल है)

मैं समझता हूं कि प्रोसेसर फ्लैश की तुलना में तेज है, इसीलिए प्रतीक्षा की स्थिति पेश की जाती है। जो मुझे समझ नहीं आ रहा है, वह है: यदि प्रोसेसर फ्लैश से तेज है, तो प्रोसेसर वह है जिसे फ्लैश को धीमा करने की आवश्यकता है, लेकिन ऊपर का पैराग्राफ इसके विपरीत कहता है (या मुझे यह समझ में नहीं आया?), यह का कहना है कि अगर पफ्लैश उच्च आवृत्तियों के साथ संचालित होता है, तो हमें इसे अतिरिक्त प्रतीक्षा राज्यों में जोड़कर धीमा करना होगा !!

मेरी समझ में क्या गलत है?

धन्यवाद


1
अगर मुझे सही तरीके से समझा गया है, तो नियंत्रक है जिसे विभिन्न गतिओं पर सेट किया जा सकता है; इसलिए यह इंतजार करना होगा कि वास्तविक फ्लैश मेमोरी में डेटा उपलब्ध हो।
clabacchio

जवाबों:


8

स्टीवनव के जवाब को बढ़ाने के लिए, किसी भी प्रकार के तर्क, जब एक इनपुट सिग्नल दिया जाता है, तो आउटपुट सिग्नल का उत्पादन करने में कुछ समय लगेगा; अन्य लॉजिक की तुलना में मेमोरी अक्सर धीमी होती है। अक्सर, इस बात की गारंटी होगी कि आउटपुट सिग्नल एक निश्चित समय के भीतर वैध हो जाएगा, लेकिन ऐसा है। विशेष रूप से, यह संभव है कि संकेत उस अंतराल के भीतर कई बार बदल सकता है, और उस अंतराल के अंत से पहले कोई संकेत नहीं होगा, कि संकेत ने अपना अंतिम "सही" मान प्राप्त किया है।

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


अच्छा! आपके द्वारा समझाया गया उपयोगी विवरण के लिए धन्यवाद!
मोहम्मद इज़

1
@MemoryLeaks: मेरी खुशी। नोट करने के लिए एक महत्वपूर्ण बात यह है कि निर्दिष्ट सीमा से नीचे की प्रतीक्षा अवस्थाओं को कम करने से सिस्टम तेजी से चल सकता है, लेकिन मेमोरी से पढ़ने से मनमाने ढंग से गलत डेटा मिल सकता है; इसके अलावा, "मनमाने ढंग से उपज गलत डेटा" का अर्थ हो सकता है "सही डेटा प्राप्त करें जब तक कि आपके द्वारा डिज़ाइन किया गया डिवाइस आपके ग्राहक के हाथों में है, और फिर ग्राहक को बहुत अधिक पागल बनाने के लिए अक्सर गलत डेटा का उत्पादन करना शुरू करें।"
सुपरकैट

1
यह बहुत बारीकी से समानांतर ओवरक्लॉकिंग के लिए लगता है, लेकिन इसके अलावा एक विन्यास विकल्प के अधिक। शायद एमसीयू को ओवरक्लॉक करने का दिलचस्प तरीका।
sherrellbc

1
@ सुपरकैट, नियंत्रक से एक सवाल यह है कि यह प्रोसेसर या मेमोरी कंट्रोलर है?
मूईन

1
@ मॉइन: यदि कोई नहीं है तो मेमोरी कंट्रोलर या प्रोसेसर नहीं है।
सुपरकैट

9

सीपीयू द्वारा शुरू किए गए मेमोरी एक्सेस चक्र में वेट स्टेट्स जोड़े जाते हैं। तो यह वास्तव में सीपीयू है जो धीमी फ़्लैश के लिए इंतजार करना पड़ता है। मेमोरी कंट्रोलर कई चक्रों (0 से 3) के लिए सीपीयू के लिए "तैयार नहीं" का संकेत देता है, और जब ऐसा होता है तो सीपीयू अपनी वर्तमान स्थिति में रहता है, अर्थात फ्लैश पता लिखा जाता है, लेकिन अभी तक डेटा नहीं पढ़ रहा है। केवल जब मेमोरी कंट्रोलर "डेटा रेडी" सिग्नल देता है तो सीपीयू डेटा बस से पढ़ेगा और अपना निर्देश जारी रखेगा (डेटा को रजिस्टर या रैम में लाकर)।


1
तो उस सेटिंग को कॉन्फ़िगर करके, मैं मेमोरी कंट्रोलर को बता रहा हूं कि कब "डेटा रेडी" का संकेत दिया जाए। क्या मैं मेमोरी को "डेटा रेडी" सिग्नल देने के लिए नहीं कह सकता जब वह वास्तव में तैयार हो?
मोहम्मद इज़

1
@MemoryLeaks - यह संभव है, और यह अतुल्यकालिक प्रोसेसर द्वारा किया जाता है, जो दुर्लभ हैं। यह एक घड़ी का उपयोग करके सब कुछ सिंक्रनाइज़ करने के लिए अधिक सामान्य, और अधिक अनुमानित है। तो यह या तो एक घड़ी चक्र देरी (या 2 या 3) या कुछ भी नहीं है।
स्टीवनवह

आपके उत्तर के लिए धन्यवाद :) इसलिए योग करने के लिए: ऊपर दिए गए मेरे प्रश्न में वर्णन का अर्थ है कि यह "सीपीयू" में देरी करेगा और फ्लैश नियंत्रक नहीं
मोहम्मद इज़

1
@stevenvh प्रोसेसर को शाब्दिक रूप से लटकाता है, यह मेमोरी से डेटा प्राप्त करता है, मेरा मतलब है कि यह पूरी तरह से निष्पादन को रोक देता है या यह पाइपलाइज्ड सीपीयू के मामले में अन्य निर्देशों को निष्पादित करेगा। क्या मुझे लगता है कि सीपीयू मेमोरी तैयार होने की प्रतीक्षा कर रहा है, जबकि मुझे लगता है कि वे बाधित होते हैं।
मिगेल सांचेज

3

प्रोसेसर को मेमोरी पर स्टाल करने की आवश्यकता हो सकती है, लेकिन एक चतुर डिजाइन की आवश्यकता नहीं होगी।

मुझे लगता है कि आपको जिस महत्वपूर्ण तकनीक के बारे में पता नहीं है वह फट / पेज मोड एक्सेस है । यह मेमोरी एक्सेस की बैंडविड्थ को प्रोसेसर की गति के बहुत करीब होने की अनुमति देता है (लेकिन शायद फ्लैश अभी भी अड़चन है क्योंकि मैंने कभी भी फ्लैश आधारित एमसीयू नहीं देखा है जो 200 एमएचजेड पर चलता है)

हालाँकि, विलंबता वही रहती है। उदाहरण के लिए, STM32F4 MCUs के लिए, जो मैं उपयोग कर रहा हूं, # स्टेट्स = फ्लोर (क्लॉकस्पीड / 30MZZ)। इसका मतलब है कि घड़ी की गति की परवाह किए बिना, विलंबता हमेशा 33ns है। एक कहावत है, "पैसा बैंडविड्थ खरीद सकता है, लेकिन विलंबता हमेशा के लिए है ..."

यहां तक ​​कि अगर फ्लैश बैंडविड्थ सीपीयू को व्यस्त रखने के लिए पर्याप्त नहीं था, तो आप आसानी से एक कोड कैश को डिज़ाइन कर सकते हैं जो स्टोर करने और प्रीफ़ेट करने वाले निर्देशों को निष्पादित करने की अपेक्षा करता है। ST ने अपने STM32F4 MCUs (168 MhZ) के लिए इस बारे में संकेत दिया है:

एआरटी एक्सीलेटर और 128-बिट फ्लैश मेमोरी के लिए धन्यवाद, यहां दिए गए प्रतीक्षा राज्यों की संख्या फ्लैश मेमोरी से निष्पादन की गति को प्रभावित नहीं करती है क्योंकि एआरटी त्वरक 0 प्रतीक्षा राज्य कार्यक्रम निष्पादन के बराबर प्रदर्शन प्राप्त करने की अनुमति देता है।

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


तार एक चिप पर "मुक्त" से बहुत दूर हैं, आम तौर पर बोल रहे हैं, लेकिन मेमोरी सरणी और कुंडी के एक सेट के बीच बस की चौड़ाई बढ़ाना तारों को नहीं जोड़ता है। यदि किसी चिप में 512x512 ग्रिड के रूप में एक 256kbit फ्लैश एरे का आयोजन किया जाता है, तो 512 कॉलम से 32 बिट बस में कंडेनस करने के लिए वायरिंग और लॉजिक आवश्यक है कि क्या "कंडेनसिंग" तार और लॉजिक से पहले 512-वाइड-वाइड कुंडी लगाई जाए? या उनके बाद एक 32-बिट चौड़ी कुंडी।
सुपरकैट

1
मेरा मतलब है कि वे बाहरी पिंस की तुलना में "मुक्त" हैं। मुझे पता है कि तार ऊर्जा इन दिनों हावी है और यह स्थानीयता महत्वपूर्ण है, इसलिए मुझे उस कथन को योग्य बनाना चाहिए। वे बनाने के लिए स्वतंत्र हैं, लेकिन चालू करने के लिए स्वतंत्र नहीं हैं!
येल झांग

1
मुझे यकीन नहीं है कि आप "तार ऊर्जा" से क्या मतलब है, लेकिन यहां तक ​​कि अंतरिक्ष के दृष्टिकोण से भी, बड़ी बसें महंगी हैं, लेकिन अगर किसी बस की चौड़ाई दोगुनी हो जाती है, तो इसकी कुल लागत लगभग आधी हो जाती है।
सुपरकैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.