バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのPERFORMANCE_ENHANCEの話。
Host-initiated maintenanceについて。
登場人物
博識フクロウのフクさん
イラスト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の仕様としては規定はされてない。
ということは最適化の内容自体はここでは触れないって感じか。
まぁ推測レベルだと、
物理ブロックと論理ブロックの並びを見て、
連続している方が良い所を連続配置にするってくらいかな。
まさにデフラグってやつだ。
それ以上はわからんよねー。
Host-initiated maintenance
まずはホスト主導の
Host-initiated maintenanceから。
実は、再びPerformance Enhancement Registerが絡んでくる。
あー、ここでやったやつか。
これだったね。
Byte Offset | Bits | Name | Description |
---|---|---|---|
0 | – | Performance Enhancement Function Revision | 00h:Revison 1 |
1 | [0] | FX_EVENT Support | 0:Not support,1:Supported |
2 | [0] | Card Initiated Maintenance Support | 0:Not support,1:Supported |
2 | [1] | Host Initiated maintenance Support | 0:Not support,1:Supported |
3 | [1:0] | Card maintenance Urgency 00b:None, 01b:Mild, 10b:Middle, 11b:Urgent | |
4 | [0] | Cache Support | 0:Not support,1:Supported |
5 | – | Reserved | – |
6 | – | CQ Support and Depth | 00h:CA is not supported,01h:depth=2(ID=0,1),…,1Fh:depth=32(ID 0~31) |
7 | – | Reserved | – |
8月15日 | – | Task Error Status | 00h:No Error,01h:Error,Other:Reserved |
16-256 | – | Reserved | – |
257 | 0 | FX_EVENT Enable | 0:Disable,1Enable |
258 | 0 | Card Initiated maintenance Enable | 0:Disable,1Enable |
258 | 1 | Host Initiated maintenance Enable | 0:Disable,1Enable |
259 | 0 | Start Host-Initiated Maintenance | 1:Starts host-initiated maintenance.0:By card indicates the break of maintenance.(break within 1 secomd.) |
260 | 0 | Flush Cache | 1:Start Cache flush.0:By card indicates the end of Cache flush.(flush within 1 second.) |
262 | 0 | Enable CQ | 0:Disable,1Enable |
262 | 1 | CQ Mode | 0:Voluntary mode, 1:Sequential Mode |
263-511 | – | Reserved | – |
このレジスタの
Host Initiated maintenance Enable
を1にして有効化。
そして、
Start Host-Initiated Maintenance
を1すればカード側でセルフメンテナンスが開始される。
以外とシンプル。
あと、
Card maintenance Urgency
ってところで、緊急度ってのが設定できる。
緊急度?
これもメーカ依存だけど、ガッツリ最適化するか、ゆるーく最適化するかってところだろう。
具体的なところはなんもわからん。
うーん、そういう指示ができるってのだけ覚えておこう。
次に、Card-initiated maintenanceだが、
これは次回に回そう。
そこそこ情報量があるってことだな・・・。
まとめ
まとめだよ。
- Host-initiated maintenanceについて説明。
- Performance Enhancement Registerで制御。
- Start Host-Initiated Maintenanceで開始。
- Card maintenance Urgencyで緊急度設定。
バックナンバーはこちら。
コメント