Neden geçici olmayan belleklerin çoğunda varsayılan durum olarak mantıksal 1 vardır?


14

Gömülü uygulamalarda EEPROM ve FLASH bellek gibi geçici olmayan bellek kullandım ve her zaman kullanılmayan bellek (EEPROM / FLASH) bit konumlarının her zaman 1varsayılan olarak ayarlandığını gördüm . Bunun yerine neden kullanılıyor 0?

Örneğin bir adres, kullanıcı tarafından yazılmadıysa, 0'ıncı adresi (ilk bellek baytı) deyin, her zaman saklar 0xffve saklamaz 0x00. Bellek çiplerini yapan insanlar neden bu şekilde saklıyorlar? 0xffÜretici için bazı avantajlar veya önemli bir şey sağlayacak şekilde varsayılan bellek konumunu koruduğumdan eminim .

Bellek yongalarındaki bu yapının arkasındaki neden nedir?

Yanıtlar:


20

Flash bellek programlamasını tartışacağım, ancak flaş bellek 1980'lerin ortalarında EEPROM'lardan türetildiği için birçok malzeme EEPROM'lara (Elektrikle Silinebilir Programlanabilir ROM) benzer olacaktır. Aşağıda açıklandığı gibi, fiziksel bir bakış açısından, varsayılan durum 1'dir. Ama daha önemlisi, orada niçin gidiyorum olduğu varsayılan bir devlet - yapabilecekleriniz sadece keyfi programı zaten son kez programlanmıştır neyin üstüne.

Arabirim, verileri mikrodenetleyicinin bellek haritasına yerleştirmek için en uygun olan NOR flaşı neredeyse her zaman seçilir - tam adres ve veri yolları RAM'i taklit eder ve herhangi bir konuma rastgele erişime izin verir. Veriler her seferinde bir kelime okunabilir, burada bir kelime mikrodenetleyicinin veri genişliği, tipik olarak 8, 16 veya 32 bit olarak tanımlanır. NAND flash ise sabit disklerin yerini almak üzere geliştirildi ve sırayla çalışıyor.

Ancak programlama biraz daha karmaşık hale gelir. Daha önce de belirtildiği gibi, NOR flaşı ve NAND flaşı, EEPROM'lar ve hatta EPROM'lar gibi diğer kalıcı bellekler için varsayılan durum bir mantık 1'dir. 1'leri bu cihazlara programlayamazsınız, sadece 0'ları programlayabilirsiniz. Örneğin, 0x0123 içeren bir baytınız varsa ve 0x3210 olarak değiştirmek istiyorsanız, bunu doğrudan RAM'deki bir bayt üzerine yazmak gibi yapamazsınız.

Bunun yerine, bellekteki bitler silinmelidir, bu da bunları daha önce belirtilen varsayılan 1 durumuna getirir. Bu sadece bloklar halinde yapılabilir, kelimelerle değil. En son çalıştığım Microchip PIC32'de silinebilecek minimum blok boyutu 4096 bayt. Bu nedenle, yalnızca bir kelimeyi (32 bit) değiştirmek isterseniz, 4K hafızayı okumak, bloğu silmek, ardından 4K hafızayı tekrar flaşa yazmak, ancak gerektiğinde yeni 32 bit değeri dahil etmek gerekir. Bu silme biraz zaman alabilir - bir saniyenin iyi bir kısmı.

Aşağıda bir flash bellek hücresinin resmi görülmektedir. Flash, kayan kapıdaki elektronları çıkararak veya koyarak verileri saklar. Kayan kapıda elektronlar mevcut olduğunda, transistörden 0 akımı gösteren herhangi bir akım akmaz. Elektronlar kayan kapıda çıkarıldığında, transistör iletmeye başlar ve 1'i gösterir. (Bu, konvansiyonla olabilir - aksi halde tüm veri hatlarında inverterler gerektirir.)

resim açıklamasını buraya girin

Silme işlemi. Flaş bellek hücrelerinin (tek düzeyli NOR flaş hücresi) varsayılan durumu 1'dir, çünkü kayan kapılar negatif yük taşımaz. Bir flash bellek hücresini silme (1'e sıfırlama), kaynak ve kontrol geçidine (kelime satırı) bir voltaj uygulanarak elde edilir. Voltaj -9V ila -12V arasında olabilir. Ve ayrıca kaynağa yaklaşık 6V uygulayın. Yüzen kapıdaki elektronlar çekilir ve kuantum tünelleme ile kaynağa aktarılır . Başka bir deyişle, elektronlar kayan kapıdan kaynağa ve substrata tünel açar.

Silme işlemi yüksek voltaj kullandığından, bloklar halinde silme işlemi daha az kalıp alanı gerektirir. Böylece gerilimler bir seferde sadece transistörlerin tüm sıralarına uygulanabilir.

Yazmak için, bir NOR flaş hücresi programlanabilir veya aşağıdaki prosedürle 0'a ayarlanabilir. Yazarken, kontrol kapısına (kelime satırı) yaklaşık 12 V yüksek voltaj uygulanır. Bit Hattına (boşaltma terminali) 7V civarında yüksek bir voltaj uygulanırsa, hücrede 0 depolanır. Kanal şimdi açıktır, böylece elektronlar kaynaktan tahliyeye akabilir. Kaynak-drenaj akımı, bazı yüksek enerjili elektronların, sıcak elektron enjeksiyonu adı verilen bir işlem yoluyla yalıtım katmanından kayan kapıya atlamasına neden olacak kadar yüksektir.

Okuma için, kontrol kapısına yaklaşık 5V ve gidere 1V civarında bir voltaj uygulanır. Bellek hücresinin durumu, drenaj ve kaynak arasında akan akım ile ayırt edilir.

Kalıcı belleğin kullanılabilir ömrü silme döngüleri cinsinden ölçülür. NOR'un dezavantajı, silme çevrimlerinin sayısının NAND belleğinin yaklaşık 1 / 10'u olmasıdır. PIC32'nin birçok sürümü, flash belleğin yalnızca 1000 kez güncellenmesine izin verir, bu da EEPROM'lar için tipik 100.000 silme çevriminden çok daha azdır.

Bu nedenle, tasarımcıların varsayılan durumu 1 veya 0 yapması çok önemli değildir (en kolay uygulamaya izin veren değeri seçtiler); önemli olan, bir kişinin önce bir flash bloğunu (zaman alır) silmesi ve ardından tüm bloğu yeniden programlamasıdır (tek bir kelime değiştirilse bile (önemli miktarda RAM gerektirir).

Bu blok silme işlemi, EEPROM'lara devam eden ilk EPROM'lara (Silinebilir Programlanabilir ROM) geri döner Kod, çiplere (16KB 27128 gibi) programlanmış ve soketlere yerleştirilmiştir. Bu yongaların üstünde, ışığın kalıpta parlamasına izin veren küçük bir pencere vardı. Programın değiştirilmesi gerektiğinde, talaşlar 20 dakika boyunca bir UV silgisine konuldu ve bu da tüm talaşı sildi. Daha sonra çip yeni programla programlanacaktır.

Bazı EEPROM'lar programlamadan önce bellek bloklarının silinmesini gerektirir; diğerleri bir seferde bir bayt yazılmasına izin verir (EEPROM denetleyicisi ilk önce baytı ve programları programlar).


2
Bu, kalıcı belleklere nasıl erişildiğine dair harika bir genel bakıştır, ancak aslında silinen durumun neden '0' değil '1' olduğunu ele almaz.
akohlsmith

1
@akohlsmith Daha eksiksiz olması için bu bilgileri ekledim. Ama asıl sorun, varsayılan hücrenin 1 mi yoksa 0 mı olduğu değil; bu sadece her veri hattına eviriciler yerleştirilerek tersine çevrilebilir. Asıl mesele, ilk etapta neden varsayılan bir durum olduğudur; yani 1 değil 0 yazabilirsiniz - ikincisi bloklar halinde silinmeyi gerektirir.
tcrosley

1
Kabul etmiyorum, soru, silinen devletin neden 'açık' değil 'ayarlandığına' oldukça açık görünüyordu - yine de cevabınızı seviyorum ve benden + 1'ledim (hiç kimsem değil, sadece rastgele bir internet yabancı cevabınız)
akohlsmith

1
@akohlsmith Size katılıyorum, konvansiyonla, set durumlarının genellikle 1 olduğunu ve aslında tek tek hücrelerin nasıl çalıştığını. Tersine çevirmek için fazladan bir donanım (çok fazla değil) gerekirdi ve buna gerek yoktu: 1 varsayılan olarak iyiydi.
tcrosley

Bu harika bir cevap. Ancak şunu söylemek gerekirse daha kolay olacağını düşünüyorum: 1'leri bu cihazlara programlayamazsınız, sadece 0'ları programlayabilirsiniz. 1'leri programlamak istiyorsanız, aygıtları silmeniz ve tüm bloğu varsayılan 1 durumuna geri yüklemeniz ve ardından gerektiği gibi 0'ları programlamanız gerekir. . Örneğin, programlamak 0101için 1010şu sırayla yapmanız gerekir: 0101-> (sil) -> 1111-> (program 0) -> 1010. Ya da esasen, 1'in yazılması ve 0'ın yazılması farklı taneciklikte yapılır anlamına gelir .
smwikipedia

4

Modern flash bellekte, sıfırlar üzerinde olanları varsayılan olarak seçmek için herhangi bir neden bilmiyorum. Okumalar diferansiyel akım algılama amplifikatörleri aracılığıyla yapılır, bu nedenle prensipte çıkışı her iki taraftan da alabilirsiniz. (İlk EEPROM'ların daha basit okuma devreleri olmuş olabilir - emin değilim.)

Orada olup o CPU bellekten yayılım gecikmesi artıracak - ekstra invertörlerini eklemek için iyi bir sebep. Mikrodenetleyicilerde, CPU veriyoluna flaş, genel sistem performansı üzerinde büyük bir etkiye sahiptir, çünkü yeni talimatları almanın ne kadar süreceğini belirler.

Dijital devre tasarımcıları genellikle sıfırın temiz / sıfırla / silin anlamına gelmesini bekler. Ancak flaş transistörleri ve okuma devresi analogdur. Bu açıdan, flaş transistörün iletkenlik durumunu mantıksal olarak tanımlamak daha mantıklıdır. Ve öyle olur ki, birinden sıfıra gitmek, sıfırdan bire gitmekten çok, çok daha hızlıdır, bu nedenle sıfır "programlanmış" duruma dönüşürken kişi "silinmiş" duruma dönüşür.

Kısa versiyon: Yarı iletken fizikçiler ve analog devre tasarımcıları dijital sezgileriniz için hiçbir şey umursamazlar. :-)


1

Ne alıntı yaptığınızdan emin değilim, ancak flash bellek için Wikipedia sayfasından çıkmak, flash belleğin arkasındaki donanımın bir sonucu gibi görünüyor:

Varsayılan durumundaki tek seviyeli NOR flaş hücresi mantıksal olarak ikili "1" değerine eşdeğerdir, çünkü akım, kontrol kapısına uygun bir voltaj uygulanması altında kanaldan akacaktır, böylece bitline voltajı aşağı çekilecektir. "

Başka tür bir flaş kullanırsanız, örneğin NAND, varsayılan durum 1 olur çünkü transistörlerin çıkışlarından herhangi biri yüksek / düşük eşik voltajlarının altında olduğunda NAND çıkışı 1'dir.

Özür dilerim, sorduğunuz şeydeki tekneyi tamamen kaçırırsam, tüm bunlar için de oldukça yeniyim.


1
Ancak, hücreler ve pimler arasında bir devre olduğu düşünüldüğünde, çoğu mantık yapısı gibi muhtemelen doğası gereği bir dizi örtülü ters çevirme gerçekleştirir, silinen durum neden mutlaka "1" olarak değil, "0" olarak kullanılır?
Chris Stratton

Sorunuzu tam olarak anlamıyorum - ERASE durumu "1" olarak kullanılmıyor mu? Ben açısından sormak bu ( "EEPROM BELLEK HÜCRE ÇALIŞMA VE ÖZELLİKLERİ" altında).
llee94

Hücrenin kendisinin hangi elektriksel durumu, harici arayüzün hangi mantıksal durumuna neredeyse rastgele göründüğüne karşılık gelir , çünkü ikisi arasında birden fazla, muhtemelen ters çevren devre elemanları vardır.
Chris Stratton

1
@ChrisStratton Ilee94 silinmiş devlet aslında 1 olduğunu söyledi inanıyorum. Ama aslında keyfidir - Eğer veri hatları üzerine invertörler koymak sizin tarif ettiğiniz gibi olacaktır. 1 olarak varsayılan durum biraz daha az donanım gerektirir.
tcrosley

Ya da biraz daha fazla donanım - gerçekten hücre ve çıkış arasında dolaylı olarak ters çevrilmiş devre elemanları olup olmadığına bağlıdır.
Chris Stratton

1

Üretim sırasında maske katmanına metal eklenerek veya programlamada yakılarak ROM'ların ve PROM'ların manipüle edilmesi gerekti ve her iki işlem de üretildiğinde varsayılan bir yüksek duruma sahipti. Onları DÜŞÜK olarak varsayılan yapmak, daha fazla transistöre mal olur, programlama kolaylığını veya çalışma hızını bir şekilde azaltır.

O zamandan beri konvansiyon haline geldi çünkü bu günlerde veri yolunun bir noktasına bir invertör eklemek mümkün olacaktı.

Kural, adreslendiğinde veri hatlarını aşağı çekmek için diyotları olan diyot mantık bellek dizileri günlerinde başlamış olabilir ve kullanılmayan bellek sözcüklerinin tüm diyotlar yerine diyotları olmazdı. Çoğu erken dijital mantık standardı aktif olarak DÜŞÜK çekildi ve değilse yükseldi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.