バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのPERFORMANCE_MOVEの話。
NAND-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
SDカードのSD_STATUS詳細
PERFORMANCE_MOVEの説明で、
NAND-FlashRomの省メモリ制御についての続きの話だ。
- PERFORMANCE_MOVE ← これの第3回/全4回
- VIDEO_SPEED_CLASS
- APP_PERF_CLASS
SD_STATUSの上記に関係するところの明細。
Bits | Identifier | Value | Description |
---|---|---|---|
439:432 | PERFORMANCE_MOVE | Performance of move indicated by 1[MB/s] step. | AUのコピー速度 |
391:384 | VIDEO_SPEED_CLASS | Vedeo Speed Class value of the card | ビデオスピードクラス |
377:368 | VSC_AU_SIZE | AU size in MB for Vide Speed Class | ビデオスピードクラスに於いてのAUサイズ |
339:336 | APP_PERF_CLASS | Application Performance Class Value of the card | アプリケーションパフォーマンスクラス |
NAND-FlashRomの性質
前回、NAND-FlashRomのBlock管理がリニアなアドレス管理とは違うようなこといってたけど?
そうだね。
これもNAND-FlashRomの性質に起因している。
(NAND-FlashRom、癖強すぎだろ・・・。)
NAND-FlashRomは確率的にどこかのBlockが不良Blockになってる。
不良Blockも2種類あって、以下。
- 初期不良Block
- 後発不良Block
え?
ちょっと待って初期不良Blockってどういうこと?
そんなの流通してて良いの?
まぁどうしても構造的に発生するみたいなんだよね。
一応、先頭Blockだけは初期不良ではないことは保証されているようだけど。
しかし、不良ブロックって具体的にどうなるの?
読み書きができなる状態?
読み書きはできるが、ビット化けし易い状態だね。
というわけで、使用できなくもないが、使用しない。というのが正解。
この不良Blockがあることが、リニアなアドレス管理に向かない理由か。
NAND-FlashRomの管理方法
で、これを不揮発性メモリとして管理しようとすると、
物理Blockと論理Blockという概念が必要になる。
なんとなく分かってきたぞ。
物理BlockはNAND-FlashRomの本当のBlock番号をさして、
論理Blockは利用側から見たBlock番号を指していて、
一致するの物ではない。
って感じか。
正解!
簡単な管理方法としては、変換テーブルだね。
論理block番号を指定したら、対応する物理block番号が取得できる感じ。
前回のまでの
「書き戻さずにコピーする」
って話と組み合わせると、
コピーした段階で論理Blockと物理Blockの紐づけを更新すれば、
外部から見た場合はコピーではなく、更新に見えるってことか。
それも正解!
そこはなんとなくわかったが、
大元の話のPERFORMANCE_MOVEとはどう繋がるの?
ま、それは次回説明かな。
まとめ
まとめだよ。
- NAND-FlashRomの省メモリ制御についての続きを説明。
- NAND-FlashRomは確率的にどこかのBlockが不良Blockになってる。
- 初期不良Block。
- 後発不良Block。
- よって、リニアアドレス的なアクセスに向いていない。
- 物理Block、論理Blockに分けて変換テーブルを挟んで管理することが多い。
バックナンバーはこちら。
コメント