バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのPERFORMANCE_MOVEの話。
NAND-FlashRomの省メモリ制御について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
SDカードのSD_STATUS詳細
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
PERFORMANCE_MOVEの説明で、
NAND-FlashRomの省メモリ制御についてが今回の話だ。
- PERFORMANCE_MOVE ← これの第2回/全4回
- VIDEO_SPEED_CLASS
- APP_PERF_CLASS
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
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の共通の性質
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
前回の話だと、
「書き戻さずにコピーする」
ってことだけど、これの詳細を聞こうか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁそのまんまの話なんだけど、
まずNAND-FlashRomの共通の性質を整理しよう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
よろしくー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
NAND-FlashRomは、
- 1page単位で読み書き可能。
- 1block単位で消去可能。
- 1blockは複数pageで構成される。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
具体的な数値を入れるとするとどんなレベル感になるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁNAND-FlashRomによるが、比較的集積度が高めのものの数値を採用すると・・・。
1[page]=4[kbyte]
1[block]=64[page]=256[kbyte]
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
そういえば、消去単位が256[kbyte]になり得るってところでRAMが足りないって話になったね。
NAND-FlashRomの省メモリ書き込み手法
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
本来であれば、256[kbyte]以上のRAMが無いと以下のフローは使えない。
- 1[block]読み出し
- 書き換え部分更新
- 1[block]消去
- 1[block]書き戻し
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
うん。
それはわかる。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
じゃー、とりあえず、更新は置いておいて、
1[block]を別のblockへコピーする場合は?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
んー?一緒なんじゃない?256[kbyte]のRAMが必要って状況は。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
読み書き単位は1[block]じゃなくて、1[page]になるけど?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
あ、そうか!
とりあえず4[kbyte]あれば、一応足りるのか!
①1[block消去]
②1[page]読み出し
③1[page]書き込み
あとは、
②、③を64回繰り返せばOKだ!
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
そして、
どっかの1pageを書き換えたい場合は、
②、③をやってるうちの目的のpageが来た時に書き換えてしまえばOKだ!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
それが「書き戻さずにコピーする」ってやつだ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
でも、コピーってことは別のBlockになるから、異なるアドレスになるよね?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まぁNAND-FlashRomをリニアなアドレス空間として見なすとそうなるね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
その言い方だと、
まだなんかあるっぽいな・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
それは次回説明しよう。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- NAND-FlashRomの共通の性質を説明。
- page(読み書き)、block(消去)の概念が共通。
- NAND-FlashRomの省メモリ書き込み手法説明。
- 書き戻さずに、page単位でコピー。
- コピーの最中に書き換えたいpageだけ更新。
バックナンバーはこちら。
コメント