Mengapa sebagian besar memori non-volatil memiliki logika 1 sebagai keadaan default?

14

Saya telah menggunakan memori yang tidak mudah menguap , seperti memori EEPROM dan FLASH, dalam aplikasi tertanam dan saya selalu menemukan bahwa lokasi bit memori yang tidak terpakai (EEPROM / FLASH) selalu disetel ke 1default. Mengapa ini digunakan 0?

Misalnya alamat, ucapkan alamat 0 (byte pertama memori), jika tidak ditulis oleh pengguna, selalu simpan 0xffdan tidak 0x00. Mengapa orang yang membuat chip memori tetap seperti itu? Saya yakin menjaga lokasi memori default karena 0xffakan memberikan beberapa keuntungan atau sesuatu yang penting bagi pabrikan.

Apa alasan di balik struktur ini dalam chip memori?

Rookie91
sumber

Jawaban:

20

Saya akan membahas pemrograman memori flash, tetapi banyak materi akan mirip dengan EEPROMs (Electrically Erasable Programmable ROM), karena memori flash berasal dari EEPROMs pada pertengahan 1980-an. Seperti dijelaskan di bawah, dari sudut pandang fisik, status default adalah 1. Tapi yang lebih penting, saya akan menjelaskan mengapa ada adalah suatu keadaan default - Anda tidak bisa hanya sewenang-wenang Program di atas apa yang sudah diprogram dari terakhir kali.

NOR flash hampir selalu dipilih untuk program flash karena antarmuka paling cocok untuk menempatkan data dalam peta memori mikrokontroler - alamat lengkap dan bus data meniru RAM dan memungkinkan akses acak ke lokasi mana pun. Data dapat dibaca satu kata pada suatu waktu, di mana kata didefinisikan sebagai lebar data mikrokontroler, biasanya 8, 16, atau 32-bit. NAND flash, di sisi lain dikembangkan untuk mengganti hard drive dan bekerja secara berurutan.

Namun pemrograman menjadi sedikit lebih rumit. Seperti yang telah disebutkan, status default untuk NOR flash dan memori non-volatil lainnya seperti NAND flash, EEPROMs dan bahkan EPROM adalah logika 1. Anda tidak dapat memprogram 1 ke dalam perangkat ini, Anda hanya dapat memprogram 0. Jadi misalnya jika Anda memiliki byte yang berisi 0x0123 dan Anda ingin mengubahnya ke 0x3210, Anda tidak dapat melakukannya secara langsung seperti menulis lebih dari satu byte dalam RAM.

Sebagai gantinya, bit dalam memori harus dihapus, yang menempatkan mereka ke dalam keadaan default 1 yang telah disebutkan. Ini hanya bisa dilakukan dalam blok, bukan kata-kata. Pada Microchip PIC32, yang paling lama saya gunakan, ukuran blok minimum yang bisa dihapus adalah 4.096 byte. Jadi jika Anda ingin mengubah hanya satu kata (32-bit), Anda harus membaca memori 4K, menghapus blok, kemudian menulis memori 4K kembali ke flash tetapi termasuk nilai 32-bit baru sesuai kebutuhan. Penghapusan ini dapat memakan waktu - bagian yang baik dari sedetik.

Berikut ini adalah gambar sel memori flash. Flash menyimpan data dengan menghapus atau meletakkan elektron di gerbang mengambang. Ketika elektron hadir di gerbang mengambang, tidak ada arus yang mengalir melalui transistor, menunjukkan 0. Ketika elektron dikeluarkan dari gerbang mengambang, transistor mulai melakukan, menunjukkan 1. (Ini adalah dengan konvensi - itu bisa menjadi cara lain tetapi akan membutuhkan inverter di semua jalur data.)

masukkan deskripsi gambar di sini

Hapus operasi. Keadaan standar sel memori flash (sel flash NOR tingkat tunggal) adalah 1 karena gerbang mengambang tidak membawa muatan negatif. Menghapus sel memori flash (mengatur ulang ke 1) dicapai dengan menerapkan tegangan di sumber dan gerbang kontrol (baris kata). Tegangannya bisa berkisar antara -9V hingga -12V. Dan juga berlaku sekitar 6V ke sumbernya. Elektron di gerbang mengambang ditarik dan ditransfer ke sumber dengan tunneling kuantum . Dengan kata lain, terowongan elektron dari gerbang mengambang ke sumber dan substrat.

Karena menghapus menggunakan tegangan tinggi, jadi menghapus dalam blok membutuhkan area die yang lebih sedikit. Jadi voltase hanya dapat diterapkan ke seluruh baris transistor pada satu waktu.

Untuk menulis, sel flash NOR dapat diprogram, atau diatur ke 0 dengan prosedur berikut. Saat menulis, tegangan tinggi sekitar 12V diterapkan ke gerbang kontrol (baris kata). Jika tegangan tinggi sekitar 7V diterapkan ke bit Line (terminal drain), 0 disimpan di dalam sel. Saluran sekarang dinyalakan, sehingga elektron dapat mengalir dari sumber ke saluran pembuangan. Arus sumber-pengaliran cukup tinggi untuk menyebabkan beberapa elektron berenergi tinggi melompati lapisan isolasi ke gerbang mengambang melalui proses yang disebut injeksi elektron panas.

Untuk membaca, tegangan sekitar 5V diterapkan ke gerbang kontrol dan sekitar 1V ke saluran pembuangan. Keadaan sel memori dibedakan oleh arus yang mengalir antara selokan dan sumber.

Masa pakai memori non-volatile yang dapat diukur diukur dari siklus hapus. Kerugian dari NOR adalah jumlah siklus erase sekitar 1/10 dari memori NAND. Banyak versi PIC32 hanya memungkinkan memori flash diperbarui 1000 kali, lebih sedikit dari 100.000 siklus erase khas untuk EEPROMs.

Jadi tidak begitu penting jika para perancang membuat keadaan default adalah 1 atau 0 (mereka memilih nilai yang memungkinkan implementasi termudah); yang penting adalah seseorang harus menghapus blok flash terlebih dahulu (yang membutuhkan waktu), dan kemudian memprogram ulang seluruh blok (bahkan jika satu kata sedang diubah (yang membutuhkan sejumlah besar RAM).

Blok yang menghapus perangkat ini akan kembali ke EPROM pertama (Erasmable Programmable ROM), yang memproses EEPROM. Kode ini diprogram dalam chip (seperti 16KB 27128) dan ditempatkan di soket. Keripik ini memiliki jendela kecil di atasnya yang memungkinkan cahaya bersinar pada cetakan. Ketika program harus diubah, chip dimasukkan ke dalam penghapus UV selama 20 menit atau lebih, yang akan menghapus seluruh chip. Maka chip akan diprogram dengan program baru.

Beberapa EEPROM membutuhkan penghapusan blok memori sebelum pemrograman; yang lain mengizinkan penulisan byte pada satu waktu (pengontrol EEPROM sebenarnya menghapus byte pertama dan program-programnya).

tcrosley
sumber
2
Ini adalah gambaran yang bagus tentang bagaimana memori non-volatil diakses, tetapi sebenarnya tidak membahas MENGAPA keadaan terhapus adalah '1' dan bukan '0'.
akohlsmith
1
@akohlsmith saya menambahkan informasi itu menjadi lebih lengkap. Tetapi masalah sebenarnya bukan apakah sel default adalah 1 atau 0; ini bisa dibalik hanya dengan meletakkan inverter di setiap baris data. Masalah sebenarnya adalah mengapa ada status default di tempat pertama; yaitu Anda dapat menulis 0 dengan tidak 1 - yang terakhir membutuhkan penghapusan dalam blok.
tcrosley
1
Saya tidak setuju, pertanyaannya tampak cukup spesifik tentang mengapa status terhapus adalah 'ditetapkan' daripada 'jelas' - lagi pula saya menyukai jawaban Anda, dan +1 dari saya (bukan saya siapa pun, hanya orang asing internet acak yang suka jawaban Anda)
akohlsmith
1
@ Akohlsmith Saya setuju dengan Anda bahwa dengan konvensi, keadaan yang ditetapkan biasanya 1, dan bahwa sebenarnya adalah bagaimana sel-sel individu bekerja. Dibutuhkan beberapa perangkat keras tambahan (tidak banyak) untuk membalikkannya, dan tidak perlu melakukannya: 1 karena standarnya baik-baik saja.
tcrosley
Ini jawaban yang bagus. Tetapi saya pikir akan lebih mudah untuk memahami jika mengatakan: Anda tidak dapat memprogram 1 ke dalam perangkat ini, Anda hanya dapat memprogram 0. Jika Anda ingin memprogram 1, Anda harus menghapus perangkat dan mengembalikan seluruh blok kembali ke keadaan default 1, lalu memprogram 0 jika diperlukan. . Misalnya, program 0101untuk 1010, yang harus Anda lakukan dalam urutan ini: 0101-> (menghapus) -> 1111-> (Program 0 ini) -> 1010. Atau pada dasarnya, itu berarti penulisan 1 dan penulisan 0 dilakukan pada granularitas yang berbeda .
smwikipedia
4

Dalam memori flash modern, saya tidak tahu alasan untuk memilih yang lebih dari nol sebagai default. Pembacaan dilakukan melalui penguat indera diferensial saat ini, jadi pada prinsipnya Anda bisa mengambil output dari kedua sisi. (EEPROM pertama mungkin memiliki sirkuit baca yang lebih sederhana - saya tidak yakin.)

Ada adalah alasan yang baik untuk tidak menambahkan inverter ekstra - itu akan meningkatkan delay propagasi dari memori ke CPU. Dalam mikrokontroler, flash ke CPU datapath memiliki efek besar pada kinerja sistem secara keseluruhan, karena menentukan berapa lama waktu yang diperlukan untuk mengambil instruksi baru.

Desainer sirkuit digital sering berharap nol berarti jelas / reset / terhapus. Tetapi transistor flash dan sirkuit baca adalah analog. Dari sudut pandang itu, menggambarkan keadaan penghantar transistor flash sebagai yang logis lebih masuk akal. Dan kebetulan bahwa beralih dari satu ke nol jauh, jauh lebih cepat daripada beralih dari nol ke satu, jadi seseorang menjadi keadaan "terhapus" sementara nol menjadi keadaan "terprogram".

Versi singkat: Fisikawan semikonduktor dan perancang sirkuit analog tidak peduli dengan intuisi digital Anda. :-)

Adam Haun
sumber
1

Saya tidak yakin apa yang Anda kutip dari, tetapi pergi dari halaman Wikipedia untuk memori flash, tampaknya merupakan hasil dari perangkat keras di balik memori flash:

Sel flash NOR tingkat tunggal dalam keadaan standarnya secara logis setara dengan nilai "1" biner, karena arus akan mengalir melalui saluran di bawah penerapan tegangan yang sesuai ke gerbang kontrol, sehingga tegangan bitline ditarik ke bawah. "

Jika Anda menggunakan tipe flash lain, misalnya NAND, status default adalah 1 karena output dari NAND adalah 1 ketika output dari transistor di bawah tegangan ambang batas tinggi / rendahnya.

Permintaan maaf jika saya benar-benar merindukan perahu atas apa yang Anda minta, saya cukup baru untuk semua ini juga.

llee94
sumber
1
Tetapi mengingat bahwa ada sirkuit antara sel dan pin, yang seperti kebanyakan konstruksi logika mungkin secara inheren melakukan sejumlah inversi implisit, mengapa keadaan terhapus harus digunakan sebagai "0" dan bukan sebagai "1"?
Chris Stratton
Saya tidak begitu mengerti pertanyaan Anda - apakah status ERASE tidak digunakan sebagai "1"? Saya bertanya sehubungan dengan ini (di bawah "OEASE DAN KARAKTERISTIK SEL EEPROM MEMORY").
llee94
Keadaan listrik sel itu sendiri sesuai dengan keadaan logis dari antarmuka eksternal yang tampaknya hampir sewenang-wenang, karena ada banyak, mungkin implikasi pembalikan elemen-elemen rangkaian di antara keduanya.
Chris Stratton
1
@ ChrisStratton Saya percaya Ilee94 mengatakan status terhapus sebenarnya adalah 1. Tapi sebenarnya arbitrer - jika Anda meletakkan inverter pada jalur data akan seperti yang Anda jelaskan. 1 sebagai keadaan standar hanya membutuhkan sedikit lebih sedikit perangkat keras.
tcrosley
Atau sedikit lebih banyak perangkat keras - itu benar-benar tergantung dari apakah ada jumlah aneh atau bahkan elemen pembalik secara implisit antara sel dan output.
Chris Stratton
1

ROM dan PROM jalan kembali ketika harus dimanipulasi dengan menambahkan logam di lapisan topeng selama pembuatan atau membakarnya dalam pemrograman dan kedua proses memiliki keadaan tinggi default ketika diproduksi. Memiliki mereka default ke RENDAH akan memerlukan lebih banyak transistor, mengurangi kenyamanan pemrograman atau kecepatan operasi dalam beberapa cara.

Sejak itu menjadi konvensi karena menambahkan inverter di beberapa titik di jalur data hari ini adalah mungkin.

Konvensi mungkin telah dimulai pada hari-hari array memori logika dioda yang memiliki dioda untuk menarik garis data ketika mereka dialamatkan dan kata-kata memori yang tidak digunakan tidak akan memiliki dioda daripada semua dioda. Kebanyakan standar logika digital awal secara aktif ditarik RENDAH dan melayang tinggi jika tidak.

KalleMP
sumber