SDカードのアロケーションユニットサイズとか

ブロックデバイスとしてのSDカードで最もパフォーマンスの良いブロックサイズを知りたくて色々調べたが、Allocation Unit (AU) とか Recording Unit (RU) とかいろいろ複雑だなぁって感想で終わった話。 M5Stack持ってる人はSDカードのいろんな情報を読み出すのを @felis_silv 氏が作ってるので参考に。 https://github.com/yamamaya/M5-SDInfoViewer
9
Takashi SASAKI 佐々木隆志 @TakashiSasaki

SDカードの「ネイティブな」ブロックサイズってどうやったら知ることができるんだろう。

2022-06-08 13:15:31
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki そのへん不思議なんですよね。SDカードの中のレジスタの仕様でも、読み書きブロックサイズは512、消去ブロックサイズは64kって固定値になってるし。あんま物理的なところは気にせず、コントローラーに任せろ、ってこと?

2022-06-08 13:25:59
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv SDアソシエーション謹製のフォーマッタを使うとSDカードから諸元を読み取って最適なブロックサイズにしてくれるのかもしれないけど、仕組みはようわからんです。sdcard.org/downloads/form…

2022-06-08 13:37:40
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv Windowsからは単にUSBマスストレージデバイスとして見えてるだけなのですが、なんか特別なコマンドがあるのかもしれません。上記のフォーマッタは管理者権限を必要としますし。 pic.twitter.com/t5iGUGuh7T

2022-06-08 13:38:33
拡大
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv たくさんあるSDカードを管理するためにPSNを読み取って、なんてことを考えたこともありましたが、SDカードに対して直接コマンドを発行しないとだめだなぁって。cameramemoryspeed.com/sd-memory-card…

2022-06-08 13:40:11
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv Linuxのデバドラではいろいろ取得できた気がするけど、忘れちゃいました。kernel.org/doc/Documentat…

2022-06-08 13:41:41
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv Windowsのデバドラに関する記述でもSDカードの固有情報について言及はあるので、低レベルの情報もやりようによっては取得できるんでしょうねぇ。 docs.microsoft.com/en-us/windows-… pic.twitter.com/vgqiX23VKK

2022-06-08 13:47:10
拡大
拡大
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki SDカードから読み出せる、その辺のデータはCSDレジスタの中身くらいですね。ただ、なぜか固定値として定義されてるw pic.twitter.com/uh1g21SLMh

2022-06-08 16:13:41
拡大
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki USB接続のSDカードリーダーだと、間にUSB Mass Storage Classが介在するので、この辺の内部情報は読めないけど、バスに直に接続されたSDカードスロットなら読み込める?例えば、RasPiでも、USB接続だと読めないけど、本体のSDカードスロットだとこの辺の情報も読めます。

2022-06-08 16:15:19
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv 固定値ってそういうことでしたか。ドライバの実装がなんかサボってて決め打ちしてるってことかと勘違いしてました。

2022-06-08 16:26:37
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki あ、こんな情報もあるっぽいです。これが、フラッシュメモリ上の物理境界のサイズらしい?いずれにしても、USB接続では読めなさそう。。 pic.twitter.com/rnz0aZdX8P

2022-06-08 16:42:46
拡大
やまねこ⚙楢ノ木技研 @felis_silv

@Q900owner ADIがわりと日本語のドキュメント出してきますねw どのくらい最新に追従してるかわからないけど。。

2022-06-08 17:27:42
やまねこ⚙楢ノ木技研 @felis_silv

SDカードの内部情報みるやつ、表示する内容増やしてみた!A1とかA2対応のカード持ってないので、そのへんの動作は未検証w😅 表示はボタンで切り替わります。 github.com/yamamaya/M5-SD… pic.twitter.com/1vLqqDNYFF

2022-06-08 19:36:46
拡大
拡大
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki というわけで読んでみましたw けっこうでかいサイズなんですねー。。 twitter.com/felis_silv/sta…

2022-06-08 19:41:28
unos @unos

@felis_silv これsmartも読めたら便利かも!

2022-06-08 19:51:04
やまねこ⚙楢ノ木技研 @felis_silv

@unos SMARTは非公式対応だから、メーカーによって読み出し方もデータ構造も違うらしい。。w ちょっと無理w

2022-06-08 19:54:28
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv AUとUHS-I AUがあるんですね。そして後者はまさかの64MB。ってことは物理的(?)にはこれがフラッシュメモリの「単位」ってこと?でかい。

2022-06-08 20:02:29
unos @unos

@felis_silv nemuisan.blog.bai.ne.jp/?eid=221282 とはいえSMART取れて手に入るの、ここかTranscendかくらいでは感w

2022-06-08 20:06:27
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki Allocation Unitで、仮想アドレスを物理メモリのアドレスに置き換える単位、の意味みたいです。物理的なブロックサイズとの関係は、あるんだろうか。。

2022-06-08 20:08:19
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv 僕は東芝の古いドキュメントくらいしか探せてないんですが、ERASE_SIZEってのはAU_SIZEの倍数(1AU~65535AU)までなんですね。mikrocontroller.net/attachment/219… pic.twitter.com/hwua3Aztp6

2022-06-08 20:15:38
拡大
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki そのERASE_SIZEってなんなんでしょうねw シンボル名的には消去単位っぽいけど、タイムアウトとか絡んできてよく判らない。。😅

2022-06-08 20:16:44
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv 2006のドキュメントにはなかったけど、2010年のドキュメントにはUHS_AU_SIZEがありました。google.com/url?sa=t&rct=j… pic.twitter.com/CUdYhj9ZTT

2022-06-08 20:17:44
拡大
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv ようやくVersion 6.00見つけた。UHSバスI/Fを使うときはホストはAU_SIZEではなくUHS_AU_SIZEを参照せよと。うーむ、これ、フラッシュメモリの物理的な特性と関係あるのかなぁ。バス速度によって変わるって。。academy.cba.mit.edu/classes/networ… pic.twitter.com/ZlSDQJq8na

2022-06-08 20:19:58
拡大
Takashi SASAKI 佐々木隆志 @TakashiSasaki

@felis_silv VSC_AU_SIZEもあるのか。そしてAUの下にSUというのもあると。 pic.twitter.com/BqzqgTXDNQ

2022-06-08 20:22:31
拡大
拡大
やまねこ⚙楢ノ木技研 @felis_silv

@TakashiSasaki ですです。動作モードによって違うみたい。メモリコントローラーの管理単位、ということは間違いなさそうですが、物理的なフラッシュメモリとの関係はよく判らなかったです。。。

2022-06-08 20:23:12