2016年1月3日日曜日

SDカードの速度

SDカードの書き込み速度を計測しなおしてみた。



SPI接続で3種類のSDカードの速度を計測してみた。

・TS 32GB
Transcend製
32GB/クラス10/UHS-I/300xとか書いてあって早そうなパッケージ
多分これ:http://www.amazon.co.jp/dp/B00APCMME0/

TO 4GB
東芝製
4GB/クラス4
これ:http://www.amazon.co.jp/dp/B00K187GP8/

TO 8GB
東芝製
8GB/クラス10/UHS-I
これ:http://www.amazon.co.jp/dp/B00K187ILA/


SDの規格作ったグループに東芝いるんだから早いだろ、と思って東芝の2種類を買ってみたけど、意外と遅かった。これは「Transcendすげぇ!」なのか、「技術の進歩すげぇ!」なのか、判断に迷うところ(おそらく8GBや4GBはかなり古い設計)。
あと8GBは2000円程度、4GBでも1500円程度する。32GBは現在1400円で売ってるので、小容量じゃないとダメという訳の分からない理由でも無い限りは32GBのメディアで良さそう。書き込み早いし、安いし、大容量だし。

//***

念のためにロジアナで確認してみる。上がTS32で4ブロックのマルチブロックライト。下がTO8で4ブロックのマルチブロックライト。





1回しかキャプチャしてないし、誤差だろ と言われればそれまでだけど、Transcendは1ブロック目のビジーがかなり長い。対して東芝はあまり間をおかずに2ブロック目を転送している。対して転送終了後のビジーは切れてて申し訳ないけど、Transcendは1.7msecほど、東芝は1.9msecほどと、Transcendのほうが早い。しかしCSがLの時間は東芝が2.65msec、Transcendが3.37msecと、東芝のほうが2割少し早い。
現在使っているロジアナはこのシリーズではかなりメモリが大きい方だけど、それでもクロック100MHzだと12msecくらいしかキャプチャできない。SDカードへの転送はもっと時間がかかるので、全体を見渡すことができない。

//***

次にもう一つ比較。





1ブロック書き込みの時の波形。Transcendは1トランザクションが2.9msecほどで終了している。対して東芝では27msecを超えており、ロジアナのメモリには入りきらない。FATで数ブロックを書き換える場合はマルチブロックライト以外にもFATテーブルを書き換えるためのシングルブロックライトがかなりの割合を占める。そのため、シングルブロックライトに数十msecを必要としている場合、マルチブロックWが数割早い程度では回収できないほどの遅れを生じてしまう。Transcendが倍くらい早いのは、TranscendがシングルブロックWをうまくバッファリングしてるのか、東芝がシンブルブロックWが下手なのか、または双方かもしれないけど。

念のため、シングルブロックがアホな処理をやっている、という可能性を潰すために512バイトでもマルチブロックライトで書き込んでみた、ちゃんと計ったわけではないが、8KiBを書いて0.39Mbyte/secほどだった。しかしロジアナで見える範囲では数十msecのビジーが発生しているようには見えない。マルチブロックライトで1ブロックだけの場合は内部でシングルブロックと等価な処理を行っているのかもしれないが、ビジーはそんなに長くない、しかし総合的な処理はシングルブロックライトと変わらないし、というちょっと謎な挙動となった。これ以上を調べるのは手持ちの機材ではつらそうだ。

//***

ロジアナでキャプチャしながらブログ書いてるけど、最初はこんなに長く書く気はなかった。でもなんだかムキになってきてもうちょっと続く(計画性がないからこんなことになるんだ)。

//***





こちらは10MHzでサンプリングした波形。SPIクロックは36MHzなのでデータとしての正しさはあまりない。ただCSの形はおおよそわかるので、1トランザクションの長さはある程度信頼できると思う。
が、波形が見えたところでどの波形がどういう通信なのかがわからないのであまり意味が無い。一応双方とも同じデータが流れているはずで、MISO(一番下の茶色)でLowが続いているのはビジー状態だと思う。そう考えると東芝の方はビジーが長い気がする。

//**





Transcendは10MHz、東芝は5MHzで4ブロック書き込みをキャプチャ。東芝のカードは1個目のシングルブロックで85msec以上のビジーが発生しており、これがネックっぽい。というかこれはひどい。。。

//***

ところで、SDカードでは少し不思議な挙動がある。東芝の場合は何回も書いていると数割くらいの確率で書き込み速度が倍増くらいになる。Transcendの場合は、最初の数回がものすごく遅くても、何回も書いていればちゃんと速度が出るようになる。



このキャプチャは東芝8GBで16ブロック(8KiB)を書いた時のキャプチャ。この時には0.6Mbyte/secを超えている。相変わらずTranscendには劣るが、それでもかなり早くなった。

ちなみにSDカード初期化直後のキャプチャはこれ。



シングルもマルチも関係なく512バイト転送ごとに70msec前後のビジーが発生している。明らかに駄目な感じ。この時は0.021Mbyte/secくらい。21.5kByte/secである。ISDNの2.6倍くらいの速度。遅すぎ。

//***

なんか「実は電源が貧弱で安定動作していません」みたいなオチがしっくりきそうな気がしてきた。
現在はマイコンボードのLDOで3.3Vを作って、そこからちょっと引き回して470uFの電コン(これしかなかった)に突っ込んで、microSDブレークアウトボードの下で0.1uFという構成。
もうわけがわからないよ。

0 件のコメント:

コメントを投稿