【FileSystem】車載外部ストレージ その85【SD応答向上仕様㉞】

【FileSystem】車載外部ストレージ その85【SD応答向上仕様㉞】 車載外部ストレージ

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/

はじめに

SDカードのCQ Modeの読み書き以外のコマンドたちの話。
CMD38(ERASE)の続きでDiscardについて。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

CQ Modeのステートマシンと読み書き以外のコマンド

フクさん
フクさん

今回はCMD38(ERASE)の続きでDiscardについての話だ。
CQ Modeのステートマシン図は以下。

CQ Modeのステートマシン(State Diagram in CQ Mode)、CMD49(WRITE_EXTR_SINGLE) Enable CQ=1、CMD49(WRITE_EXTR_SINGLE) Enable CQ=0、CMD12(STOP_TRANSMISSION),CMD13(SEND_STATUS),CMD32(ERASE_WR_BLK_ADDR),CMD33(ERASE_WR_BLK_END_ADDR)、CMD44(Q_TASK_INFO_A),CMD45(Q_TASK_INFO_B)、Read:CMD19(SEND_TUNING_BLOCK),CMD46(Q_RD_TASK),CMD48(READ_EXTR_SINGLE),CMD58(READ_EXTR_MULTI)、Write:CMD47(Q_WR_TASK),CMD49(WRITE_EXTR_SINGLE),CMD59(WRITE_EXTR_MULTI)、CMD38(ERASE),CMD43(Q_MANAGEMENT)、End of R1b,End of Data Transfer、CMD12(STOP_TRANSMISSION),CMD13(SEND_STATUS)、CMD44(Q_TASK_INFO_A),CMD45(Q_TASK_INFO_B)、CQ Disable、CQ Tran、CQ Enabled
フクさん
フクさん

そして、CQ Modeの読み書き以外のコマンドたち。

  • CMD19(SEND_TUNING_BLOCK)
  • CMD32(ERASE_WR_BLK_START)
  • CMD33(ERASE_WR_BLK_END)
  • CMD38(ERASE) ← これの第3回/全3回
  • CMD43(Q_MANAGEMENT)

CMD38(ERASE)のDiscard

太郎くん
太郎くん

ERASE関連で良く分からんのがDiscardだな。
単語の意味としては「捨てる」「破棄」ってことなんだろうけど、
どういう効能があるんだ???

フクさん
フクさん

まぁDiscardについては結構特殊だね。
実際には消去してないかもしれないし。

太郎くん
太郎くん

消去してないかもしれない???
なんで?
消去用のコマンドでしょ?

フクさん
フクさん

Discardについては、
管理から破棄するだけで、具体的にどうするかは仕様上としては未規定なんだよね。

太郎くん
太郎くん

ますますわからん。

CMD38(ERASE)のDiscardの目的

フクさん
フクさん

Discardという言葉自体はSDカードというよりも
SSD(Solid State Drive)由来の言葉なんだよね。

太郎くん
太郎くん

ほう?

フクさん
フクさん

SSDもSDカードと同じく内部はNAND-FlashRomだ。
そして、NAND-FlashRomは均等に使わないと後天性不良ブロックが発生し易くなる。
よって、寿命を最大化させるためにはウェアレベリングをしてあげる必要がある。

太郎くん
太郎くん

んー?ウェアレベリング?どっかで聞いたな?

フクさん
フクさん

ここで一回説明したな。

太郎くん
太郎くん

むっちゃ前やん・・・。

太郎くん
太郎くん

で、ウェアレベリングがどう関係してくるの?

フクさん
フクさん

管理から破棄したといことは「使用していないBlockと明言した」ということになって、
ウェアレベリングのアルゴリズムが積極的に再利用を考慮できるってことになる。

太郎くん
太郎くん

おー!

フクさん
フクさん

というわけで、ホスト側は使ってないBlockに対しては
とっととDiscardしてあげるとストレージの寿命が延びやすくなる
ってことになる。

太郎くん
太郎くん

なるほど。
確かに重要な仕様かもね。

CMD38(ERASE)のDiscardのSupport有無確認

太郎くん
太郎くん

ところで、Discardは必ず使用できる機能なの?
FULEみたいにサポート有無がありそうな気がするんだけど。

フクさん
フクさん

そうだね。
FULEと同じくSD_STATUSで確認できる。

BitsIdentifierValueDescription
511:510DAT_BUS_WIDTH’00’=1(default),’10’=4bit現在のバス幅。ACMD6(SET_BUS_WIDTH)でも取得可能
509SECURED_MODE‘0’=Not in the mode,’1’=In Serured ModeSecured modeか否か
508:496reserved
495:480SD_CARD_TYPE‘0000h’=SD,’0001h’=SD ROM,’0002h’=OPT
479:448SIZE_OF_PROTECTED_AREASize of protected area保護領域サイズ
447:440SPEED_CLASSSpeed Class of the cardカードのSpeed Class
439:432PERFORMANCE_MOVEAUのコピー速度
431:428AU_SIZESize of AUAllocation Unit(NAND-FLASH消去単位)
427:424reserved
423:408ERASE_SIZENumber of AUs to be erased at a timeERASE_TIMEOUTで指定された時間で消去できるAU数
407:402ERASE_TIMEOUTTimeout value for erasing areas specified by UNIT_OF_ERASE_AUERASE_SIZEで指定されたAU数を消去するのに必要な時間
401:400ERASE_OFFSETFixed offset value added to erase time.AU消去時に必ずかかるオフセット時間
388:396UHS_SPEED_GRADESpeed Grade for UHS mode.UHS mode時のSpeed Grade
395:392UHS_AU_SIZEsize of AU for UHS modeUHS mode時のAUサイズ
391:384VIDEO_SPEED_CLASSVedeo Speed Class value of the cardビデオスピードクラス
383:378reserved
377:368VSC_AU_SIZEAU size in MB for Video Speed Classビデオスピードクラスに於いてのAUサイズ
367:346SUS_ADDRSuspension Addressサスペンドアドレス
345:340reserved
339:336APP_PERF_CLASSApplication Performance Class Value of the cardアプリケーションパフォーマンスクラス
335:328PERFORMANCE_ENHANCESupport for Performance Enhancement functionalities応答向上機能
327:314reserved
313DISCARD_SUPPORT‘1’:SupportedERASE操作サポート
312FULE_SUPPORT‘1’:Supportedユーザエリア全域のERASE操作サポート
太郎くん
太郎くん

あ、FULE_SUPPORTの隣にいたのか。
これを確認すればOKってことだねー。

フクさん
フクさん

というわけでErase関連の説明は終了だ。

まとめ

フクさん
フクさん

まとめだよ。

  • CMD38(ERASE)のDiscardについて説明。
  • DiscardはSSD由来の用語。
  • Discard指定したBlockがどのような状態になるかは仕様上の規定はない。
  • Discardしておくと、ストレージ側(SD/SSD)で効果的なウェアレベリングを実施してくれる可能性が上がり、結果として寿命が延びやすくなる。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました