अधिकांश गैर-वाष्पशील यादों में डिफ़ॉल्ट 1 के रूप में तार्किक 1 क्यों है?


14

मैंने एम्बेडेड अनुप्रयोगों में EEPROM और FLASH मेमोरी की तरह गैर-वाष्पशील मेमोरी का उपयोग किया है , और मैंने हमेशा पाया है कि अप्रयुक्त मेमोरी (EEPROM / FLASH) बिट स्थान हमेशा 1डिफ़ॉल्ट रूप से सेट होते हैं । इसके बजाय इसका उपयोग क्यों किया जाता है 0?

उदाहरण के लिए एक पता, मान लें कि 0 वां पता (मेमोरी का पहला बाइट), यदि उपयोगकर्ता द्वारा नहीं लिखा गया है, तो हमेशा स्टोर होता है 0xffऔर नहीं 0x00। ऐसा क्यों है कि मेमोरी चिप्स बनाने वाले लोगों ने इसे इस तरह से रखा है? मुझे यकीन है कि डिफ़ॉल्ट मेमोरी लोकेशन को बनाए रखना 0xffनिर्माता के लिए कुछ लाभ या कुछ महत्वपूर्ण होगा।

मेमोरी चिप्स में इस संरचना के पीछे क्या कारण है?

जवाबों:


20

मैं फ्लैश मेमोरी प्रोग्रामिंग पर चर्चा करने जा रहा हूं, लेकिन बहुत सारी सामग्री EEPROMs (Electrically Erasable Programmable ROM) के समान होगी, क्योंकि 1980 के दशक के मध्य में फ्लैश मेमोरी EEPROM से ली गई थी। जैसा कि नीचे वर्णित है, भौतिक दृष्टिकोण से, डिफ़ॉल्ट स्थिति 1 है। लेकिन इससे भी महत्वपूर्ण बात, मैं यह बताने जा रहा हूं कि एक डिफ़ॉल्ट स्थिति क्यों है - आप पिछली बार पहले से प्रोग्राम किए गए शीर्ष पर केवल मनमाने ढंग से प्रोग्राम नहीं कर सकते।

NOR फ्लैश लगभग हमेशा प्रोग्राम फ्लैश के लिए चुना जाता है क्योंकि इंटरफ़ेस माइक्रोकंट्रोलर के मेमोरी मैप के भीतर डेटा रखने के लिए सबसे उपयुक्त है - पूर्ण पता और डेटा busses mimic RAM और किसी भी स्थान पर यादृच्छिक एक्सेस की अनुमति देता है। डेटा को एक समय में एक शब्द पढ़ा जा सकता है, जहां एक शब्द को माइक्रोकंट्रोलर की डेटा चौड़ाई के रूप में परिभाषित किया जाता है, आमतौर पर 8, 16 या 32-बिट्स। दूसरी ओर नंद फ्लैश, हार्ड ड्राइव और क्रमिक रूप से काम करने के लिए विकसित किया गया था।

हालाँकि प्रोग्रामिंग थोड़ी अधिक जटिल हो जाती है। जैसा कि पहले ही उल्लेख किया गया है, NOR फ्लैश और NAND फ्लैश, EEPROMs और यहां तक ​​कि EPROMs जैसी अन्य गैर-वाष्पशील यादों के लिए डिफ़ॉल्ट स्थिति एक तर्क है। आप इन उपकरणों में 1 का प्रोग्राम नहीं कर सकते, आप केवल 0 का प्रोग्राम कर सकते हैं। उदाहरण के लिए यदि आपके पास 0x0123 बाइट है और आप इसे 0x3210 में बदलना चाहते हैं, तो आप सीधे रैम में बाइट पर लिखना पसंद नहीं कर सकते।

इसके बजाय, मेमोरी में बिट्स को मिटाना होगा, जो उन्हें पहले से उल्लिखित डिफ़ॉल्ट 1 स्थिति में डालता है। यह केवल ब्लॉक में किया जा सकता है, शब्दों में नहीं। माइक्रोचिप PIC32 पर, जो मैंने सबसे हाल ही में काम किया है, जिसे मिटाया जा सकता है न्यूनतम ब्लॉक आकार 4096 बाइट्स है। इसलिए यदि आप सिर्फ एक शब्द (32-बिट) बदलना चाहते हैं, तो आपको मेमोरी के 4K को पढ़ना होगा, ब्लॉक को मिटाना होगा, फिर 4K को वापस फ्लैश पर लिखना होगा, लेकिन आवश्यकतानुसार नए 32-बिट मान को भी शामिल करना होगा। यह मिटाने में कुछ समय लग सकता है - एक दूसरे का एक अच्छा हिस्सा।

निम्नलिखित एक फ्लैश मेमोरी सेल की तस्वीर है। फ्लोटिंग गेट पर इलेक्ट्रॉनों को हटाने या डालकर फ्लैश डेटा को संग्रहीत करता है। जब फ्लोटिंग गेट पर इलेक्ट्रॉन मौजूद होते हैं, तो कोई भी ट्रांजिस्टर के माध्यम से प्रवाहित नहीं होता है। 0. यह दर्शाता है कि फ्लोटिंग गेट से इलेक्ट्रॉनों को हटा दिया जाता है, तो ट्रांजिस्टर का संचालन शुरू होता है, यह दर्शाता है कि 1. (यह कन्वेंशन द्वारा है - यह हो सकता था) अन्य तरह से लेकिन सभी डेटा लाइनों पर इनवर्टर की आवश्यकता होगी।)

यहाँ छवि विवरण दर्ज करें

ऑपरेशन मिटा दें। फ्लैश मेमोरी सेल्स (एक-स्तरीय NOR फ्लैश सेल) की डिफ़ॉल्ट स्थिति 1 है क्योंकि फ्लोटिंग गेट्स कोई नकारात्मक चार्ज नहीं करते हैं। एक फ्लैश-मेमोरी सेल (1 को रीसेट करना) को मिटाने से स्रोत और नियंत्रण गेट (शब्द लाइन) पर वोल्टेज लागू करके हासिल किया जाता है। वोल्टेज -9 V से -12 V की रेंज में हो सकता है। और स्रोत के लिए लगभग 6V भी लागू करें। फ्लोटिंग गेट में इलेक्ट्रॉनों को खींच लिया जाता है और क्वांटम टनलिंग द्वारा स्रोत में स्थानांतरित कर दिया जाता है । दूसरे शब्दों में, फ्लोटिंग गेट से स्रोत और सब्सट्रेट तक इलेक्ट्रॉन सुरंग बनाते हैं।

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

लिखने के लिए, एक NOR फ्लैश सेल को प्रोग्राम किया जा सकता है, या निम्नलिखित प्रक्रिया द्वारा 0 पर सेट किया जा सकता है। लिखते समय, नियंत्रण द्वार (शब्द लाइन) पर लगभग 12V का एक उच्च वोल्टेज लागू होता है। यदि 7V के आसपास एक उच्च वोल्टेज बिट लाइन (ड्रेन टर्मिनल) पर लागू होता है, तो सेल में एक 0 संग्रहीत किया जाता है। चैनल अब चालू है, इसलिए इलेक्ट्रॉन स्रोत से नाली तक प्रवाह कर सकते हैं। स्रोत-नाली का प्रवाह कुछ उच्च-ऊर्जा इलेक्ट्रॉनों के कारण होता है जो गर्म-इलेक्ट्रॉन इंजेक्शन नामक प्रक्रिया के माध्यम से फ्लोटिंग गेट पर इन्सुलेट परत के माध्यम से कूदते हैं।

पढ़ने के लिए, नियंत्रण द्वार पर लगभग 5V का एक वोल्टेज लगाया जाता है और लगभग 1V नाली तक जाता है। मेमोरी सेल की स्थिति नाली और स्रोत के बीच बहने वाले वर्तमान द्वारा प्रतिष्ठित है।

गैर-वाष्पशील स्मृति का उपयोग करने योग्य जीवन को मिटाए गए चक्रों के संदर्भ में मापा जाता है। NOR का नुकसान यह है कि मिटा चक्र की संख्या नंद स्मृति के बारे में 1/10 है। PIC32 के कई संस्करण केवल फ्लैश मेमोरी को 1000 बार अपडेट करने की अनुमति देते हैं, कम से कम तब EEPROMs के लिए विशिष्ट 100,000 मिटा चक्र।

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

डिवाइस को हटाने वाला यह ब्लॉक पहले EPROM (Erasable Programmable ROM) पर वापस चला जाता है, जो EEPROMs को आगे बढ़ाता है। कोड को चिप्स में (16KB 27128 की तरह) प्रोग्राम किया गया था और सॉकेट में रखा गया था। इन चिप्स में ऊपर की तरफ एक छोटी सी खिड़की थी जो प्रकाश को मरने पर चमकने देती थी। जब कार्यक्रम को बदलना पड़ा, तो चिप्स को 20 मिनट या इसके बाद के लिए यूवी इरेज़र में डाल दिया गया, जो पूरी चिप को मिटा देगा। फिर चिप को नए प्रोग्राम के साथ प्रोग्राम किया जाएगा।

कुछ EEPROM को प्रोग्रामिंग से पहले मेमोरी के ब्लॉक को मिटाने की आवश्यकता होती है; अन्य लोग एक समय में एक बाइट लिखने की अनुमति देते हैं (EEPROM नियंत्रक वास्तव में बाइट को पहले मिटाता है और इसके कार्यक्रम)।


2
यह इस बात का एक बड़ा अवलोकन है कि कैसे अवास्तविक यादों को एक्सेस किया जाता है, लेकिन यह वास्तव में पता नहीं करता है कि क्यों मिटाया गया राज्य '1' है और '0' नहीं है।
अकोल्मस्मिथ

1
@akohlsmith मैंने उस जानकारी को और अधिक पूर्ण होने के लिए जोड़ा। लेकिन असली मुद्दा यह नहीं है कि क्या डिफ़ॉल्ट सेल 1 या 0 है; यह सिर्फ प्रत्येक डेटा लाइन पर इनवर्टर लगाकर उलटा किया जा सकता है। असली मुद्दा यह है कि पहले स्थान पर डिफ़ॉल्ट स्थिति क्यों है; यानी आप 1 नहीं 1 लिख सकते हैं - बाद वाले को ब्लॉक में मिटाने की आवश्यकता होती है।
tcrosley

1
मैं असहमत हूं, यह सवाल काफी विशिष्ट लग रहा था कि मिटाया गया राज्य 'स्पष्ट' के बजाय 'सेट' क्यों है - वैसे भी मुझे आपका जवाब पसंद है, और +1 मुझसे (ऐसा नहीं है कि मैं कोई भी हूं, बस एक यादृच्छिक इंटरनेट अजनबी जो पसंद करता है आपका उत्तर)
akohlsmith

1
@akohlsmith मैं आपके साथ सहमत हूं कि सम्मेलन द्वारा, सेट राज्य आमतौर पर 1 हैं, और वास्तव में यह है कि व्यक्तिगत कोशिकाएं कैसे काम करती हैं। इसे उलटने के लिए कुछ अतिरिक्त हार्डवेयर (ज्यादा नहीं) चाहिए, और ऐसा करने की कोई आवश्यकता नहीं थी: 1 क्योंकि डिफ़ॉल्ट ठीक था।
tcrosley

यह एक बेहतरीन जवाब है। लेकिन मुझे लगता है कि यह समझना आसान होगा कि क्या कहते हैं: आप इन डिवाइसों में 1 का प्रोग्राम नहीं कर सकते, आप केवल 0 का ही प्रोग्राम कर सकते हैं। यदि आप 1 का प्रोग्राम करना चाहते हैं, तो आपको डिवाइसों को मिटाना होगा और पूरे ब्लॉक को डिफॉल्ट 1 स्थिति में वापस लाना होगा, और फिर प्रोग्राम को 0 के रूप में आवश्यक है। । उदाहरण के लिए, प्रोग्राम 0101करने के लिए 1010, आपको इस क्रम में करना होगा: 0101-> (मिटाएं) -> 1111-> (प्रोग्राम 0 के) -> 1010। या अनिवार्य रूप से, इसका अर्थ है 1 का लिखना और 0 का लिखना अलग-अलग ग्रैन्युलैरिटी पर किया जाता है
smwikipedia

4

आधुनिक फ्लैश मेमोरी में, मुझे डिफ़ॉल्ट के रूप में शून्य से अधिक लोगों को चुनने का कोई कारण नहीं पता है। रीड्स अंतर वर्तमान अर्थ एम्पलीफायरों के माध्यम से किया जाता है, इसलिए सिद्धांत रूप में आप दोनों तरफ से आउटपुट ले सकते हैं। (पहले EEPROMs में सरल सर्किट पढ़ा गया हो सकता है - मुझे यकीन नहीं है।)

वहाँ है यह सीपीयू के लिए स्मृति से प्रचार देरी में वृद्धि होगी - अतिरिक्त इन्वर्टर जोड़ने के लिए नहीं एक अच्छे कारण के। माइक्रोकंट्रोलर्स में, CPU डेटापथ पर फ्लैश का समग्र सिस्टम प्रदर्शन पर बहुत अधिक प्रभाव पड़ता है, क्योंकि यह निर्धारित करता है कि नए निर्देशों को लाने में कितना समय लगता है।

डिजिटल सर्किट डिजाइनर अक्सर शून्य को स्पष्ट / रीसेट / मिटाने की उम्मीद करते हैं। लेकिन फ्लैश ट्रांजिस्टर और रीड सर्किट्री एनालॉग हैं। उस दृष्टिकोण से, फ्लैश ट्रांजिस्टर की चालकता की स्थिति को तार्किक के रूप में वर्णित करना अधिक समझ में आता है। और यह सिर्फ इतना होता है कि एक से शून्य तक जाना बहुत अधिक है, एक शून्य से एक तक जाने की तुलना में बहुत तेज है, इसलिए एक "मिटा" राज्य बन जाता है जबकि शून्य "क्रमबद्ध" स्थिति बन जाता है।

लघु संस्करण: सेमीकंडक्टर भौतिक विज्ञानी और एनालॉग सर्किट डिजाइनर आपके डिजिटल अंतर्ज्ञान के लिए कुछ भी नहीं करते हैं। :-)


1

मुझे यकीन नहीं है कि यह आप से क्या उद्धृत कर रहे हैं, लेकिन फ्लैश मेमोरी के लिए विकिपीडिया पृष्ठ से दूर जा रहा है , यह फ्लैश मेमोरी के साथ हार्डवेयर के परिणामस्वरूप लगता है:

इसकी डिफ़ॉल्ट स्थिति में एक एकल-स्तरीय NOR फ्लैश सेल तार्किक रूप से एक बाइनरी "1" मान के बराबर है, क्योंकि वर्तमान चैनल नियंत्रण द्वार के लिए एक उपयुक्त वोल्टेज के आवेदन के माध्यम से प्रवाह करेगा, ताकि बिटलाइन वोल्टेज नीचे खींच लिया जाए। "

यदि आप किसी अन्य प्रकार के फ़्लैश, जैसे NAND का उपयोग करते हैं, तो डिफ़ॉल्ट स्थिति 1 होगी क्योंकि NAND का आउटपुट 1 है जब ट्रांजिस्टर के किसी भी आउटपुट का उत्पादन उनके उच्च / निम्न थ्रेशोल्ड वोल्टेज से कम होता है।

माफी अगर मैं पूरी तरह से नाव पर याद कर रहा हूं कि आप क्या पूछ रहे थे, तो मैं इस सब के साथ काफी नया हूं।


1
लेकिन यह देखते हुए कि कोशिकाओं और पिंस के बीच सर्किटरी है, कि जैसे अधिकांश तर्क निर्माण संभवतया अंतर्निहित निहितार्थों की संख्या का प्रदर्शन करते हैं, क्यों मिटाया गया राज्य जरूरी "0" के रूप में उपयोग किया जाता है और "1" के रूप में नहीं?
क्रिस स्ट्रैटन

मैं आपके प्रश्न को काफी नहीं समझता - क्या ERASE राज्य "1" के रूप में उपयोग नहीं किया गया है? मैं के संबंध में पूछने इस ( "EEPROM मेमोरी सेल संचालन और विशेषताओं के अंतर्गत")।
llee94

सेल का कौन सा विद्युत राज्य खुद से मेल खाता है, बाहरी इंटरफ़ेस की तार्किक स्थिति लगभग मनमानी लगती है, क्योंकि दोनों के बीच कई, संभवतः सर्किट सर्किट तत्वों में निहितता है।
क्रिस स्ट्रैटन

1
@ChrisStratton मुझे विश्वास है कि Ilee94 ने कहा कि मिटाया गया राज्य वास्तव में 1. एक है, लेकिन यह वास्तव में मनमाना है - यदि आप डेटा लाइनों पर इनवर्टर डालते हैं तो जैसा कि आप वर्णित हैं। 1 डिफ़ॉल्ट स्थिति के रूप में बस थोड़ा कम हार्डवेयर की आवश्यकता होती है।
tcrosley

या थोड़ा और हार्डवेयर - यह वास्तव में निर्भर करता है कि क्या सेल और आउटपुट के बीच सर्किट के तत्वों की एक विषम या सम संख्या है।
क्रिस स्ट्रैटन

1

रास्ते के रोम और PROM को जब निर्माण के दौरान मुखौटा परत में धातु को जोड़कर या इसे दूर जलाकर प्रोग्रामिंग में हेरफेर करना पड़ता था और निर्मित होने पर दोनों प्रक्रियाओं में डिफ़ॉल्ट उच्च स्थिति होती थी। उन्हें LOW में डिफॉल्ट करने से अधिक ट्रांजिस्टर का खर्च होता, जिससे प्रोग्रामिंग सुविधा या संचालन की गति कम हो जाती।

यह तब से सम्मेलन बन गया है क्योंकि इन दिनों डेटा पथ में कुछ बिंदु पर एक इन्वर्टर जोड़ना संभव होगा।

कन्वेंशन डायोड लॉजिक मैमोरी एरे के दिनों में शुरू हो सकता था जिसमें डायोड में डेटा लाइनों को खींचने के लिए डायोड होते थे जब उन्हें संबोधित किया जाता था और अप्रयुक्त मेमोरी शब्द में सभी डायोड के बजाय कोई डायोड नहीं होता। अधिकांश शुरुआती डिजिटल लॉजिक मानकों को सक्रिय रूप से कम खींचा गया था और यदि नहीं किया गया तो उच्च स्तर पर तैरने लगे।

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