バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
不揮発性メモリの話の続きで主にFlashROMについて。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
FlashROMの性質
で、
なんで、消去単位以上のRAM容量が必要になるの?
FlashROMの書き換えは以下の流れになる。
- Block消去
- Block書き込み
つまり、書きこむためには必ず特定の範囲を消去する必要がある。
この消去する部分をRAMに退避してないと、まっさらに消えてしまう。
あーなるほどー。
言われてみれば、普通のシリアルFlash(NOR型)でも同じようなことしたころあるよ。
ちなみに、NAND-FlashROMの消去単位ってどのくらい?
NOR-FlashROMの時は256byteとかだったけど。
モノによるところは若干あるけど、
まぁ大体128~256[Kbyte]かな?
え゛
Kbyte?byteじゃなくて?
Kbyte。byteじゃなくて。
ちなみに、普通のECUのRAM容量ってどのくらい・・・なの・・・?
普通は量産コスト都合でRAM容量128~256[kbyte]あたりマイコンに落ち着くかな?
まぁ一番大容量で2MbyteのRAMをもってるものもマイコンとしては存在してるけど。
ちょっと、RAMが128~256[kbyte]ってことは、
それだけで、NAND-FlashROMの一時退避で使い切っちゃうじゃん!
NAND-FlashROMは使えないよーー!!
ま、それが答えってことだねー。
SDカードの中身は?
そういうえば、今回使用予定のSDカードの中身はどうなってるの?
SDカードの中身はNAND-FlashROMだよ。
え゛?
それってやばくないの?
ヤバくはない。
中身がNAND-FlashROMだけど、
アクセス単位は512byte。
この単位で読み書きできる。
え?
ということはSDカードの中でうまくバッファリングとかしてくれてるって感じ?
そうだね。
あとは、ウェアレベリングっていう利用Blockの平滑化処理も入ってて
NAND-Flashの寿命を縮めないような仕組みもある。
ウェアレベリング?寿命?
FlashROMは消去するたびに劣化していくんだよ。
同じところ何度も消去するとその部分だけ劣化が早くなる。
これを回避するために論理上は同じアドレスでも物理アドレスは別って管理をして、
消去されるBlockをうまく分散してくれてるんだよ。
ほー。
そんな便利な機能が。
こんなの自分で作ったら気が狂うね。
たしかに。
ということはSDカードを使うというのは結構良い方法なのか。
そうだね。
大容量でアクセスし易くてまぁまぁ安い。
組み込みシステムのストレージで良く使われる理由でもあるね。
まとめ
まとめだよ。
- NAND-FlashROMの凶悪な一面を垣間見た。
- 消去単位が128~256[Kbyte]。
- 同等のRAMを割り当てできないとまともに制御できない。
- SDカードの中身はNAND-FlashROM。
- しかし、NAND-FlashROMの凶悪な一面はうまく隠されている。
バックナンバーはこちら。
コメント