- ベストアンサー
HDDやUSBメモリのキャッシュメモリサイズを調べる方法
- HDDやUSBメモリのキャッシュメモリのサイズを調べる方法について教えてください。
- 商品のスペックには記載されていないため、キャッシュメモリのサイズをどうやって調べればいいのかわかりません。
- HD Tuneを使用してもバッファサイズしか確認できないので、キャッシュメモリの調べ方を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ブロックサイズ アロケーションユニットサイズとは別物のようです。あくまでフラッシュメモリの管理のための単位で、OSには依存しないものと思われます。 主な要素はフラッシュメモリへの配線上の都合で、SLCの標準的なフラッシュメモリでは128キロバイト/ブロックだとか。 http://ja.wikipedia.org/wiki/NAND%E5%9E%8B%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%83%A1%E3%83%A2%E3%83%AA#.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF.E3.81.A8.E3.83.9A.E3.83.BC.E3.82.B8 これが最近の事実上の標準であるMLCメモリなら単純に数倍のサイズになるでしょう。同じ数のセルにより多数のビットデータを収納できますので。 >フラグメント フラッシュメモリではHDDやFDDのように読み取りヘッダがデータの上に来るのを待つ必要がありません。 そのため、フラグメント(断片化)が起きたとしても、その悪影響は読み書き命令の発行数の増加・命令処理待ち時間の増加(HDDほどではない)までに留まるはずです。 (でも「最適化できない」ってことはあったっけ…? 一応、ちゃんと配列すれば読み出し命令を少なくする効果はあるはずなんだけど…)
その他の回答 (2)
- Eureka_
- ベストアンサー率41% (5079/12273)
>シーケンシャルな~ 細かいところまで把握してるわけじゃない(んで先の回答と混乱すること言うかも)ですけど、USBメモリなどのフラッシュメモリは制御を単純化するために「ブロック」というひとまとまりを単位としてしか書き込み命令が出せないんですよ。 で、フラッシュメモリへのデータの書き込みは「書き込み対象ブロックに既存データがあるか確認→データが存在した場合、書き込み対象ブロックの既存データを消去→新規データを書き込み」というえらく面倒な手順を踏む必要があります。 たとえばブロックサイズが512キロバイトとすると、同じブロックに対する1バイトの書き込みでも512キロバイトの書き込みでも、同じだけ「データチェック→消去→書き込み」が発生します(シーケンシャル)。 512キロバイトが512個のブロックに1キロバイトずつの書き込み(ランダム)だと恐ろしいことに。 512*1024個のブロックに1バイトずつ書き込み?はははご冗談を… また、ブロック複数にまたがる連続データだと「ここからここまでのブロック全部」という指定が使えるのでデータ転送の効率が上がります。 >ランダムな読み書きが行われにくい そりゃ、USBメモリを使う時ってどんな時かを思い浮かべてもらえれば。 データのバックアップ目的か持ち出し目的か、いずれにしても書き込みはそう頻繁にはやらないでしょう?いっぺんにガッと放り込むはずです。 読み取りはそれに比べればランダム性が強いかも知れませんが、フラッシュメモリの読み込みそれ自体はまだ書き込みに比べれば何とでもなるレベルですし。 これがHDD代わりに使われる高速SSDだとまた話は違うんですけど、USBメモリにおいて容量・その他を犠牲にしてランダム読み書きの高速化を図る動機はメーカー側にないと思います。 #その代替案がTurboUSBなどの「PC側で命令配置を最適化して、なるべくシーケンシャルな読み書きを連続できるようにする」アプローチなんじゃないかなと。1キロバイト512個をきっちり並べれば見かけ上の速度は512倍です(ぇー? ※最後にひっくり返しますが、この2回答、あくまで「私はこう理解している」レベルだととらえて下さい。関係する学術論文読んでいったら全然別の理由が書いてあったりするかもしれません。
お礼
Eureka_さん、御返信ありがとうございます。 > USBメモリなどのフラッシュメモリは、制御を単純化するために「ブロック」というひとまとまりを単位としてしか書き込み命令が出せないんですよ。 「ブロック」(のサイズ)とは、ディスクをフォーマとする時に指定する「アローケーションユニットサイズ」の事を仰っているのでしょうか? だとすると、「制御を単純化するために「ブロック」というひとまとまりを単位としてしか書き込み命令が出せない」という事は、フラッシュメモリに限らず、内蔵HDDや外付けHDDにもあてはまりますよね? >そりゃ、USBメモリを使う時ってどんな時かを思い浮かべてもらえれば。 データのバックアップ目的か、持ち出し目的か、いずれにしても書き込みはそう頻繁にはやらないでしょう?いっぺんにガッと放り込むはずです。 例えば、HDDから、N個のファイルをUSBメモリにコピーする場合は、基本的に、 「1つのファイルのコピーは全てシーケンシャルな読み書きで行われ、結果としてランダムな書き込み処理はN回しか行われない。」と考えるのは正しいのでしょうか? あと、この時気になったのですが、上の処理で、ランダムな書き込み処理はN回しか行われないのは、USBメモリのフラグメントが起きていない場合だと思います。 そこでUSBメモリの、プロパティのツールタブにある「最適化する」ボタンから、デフラグを行おうと思ったのですが、ディスクが解析されませんでした。 USBメモリなどのフラッシュメモリでは、なぜデフラグを行えないのでしょうか?(あるいは必要がないのでしょうか?) 長くなりましたが、以上です。 何度も申し訳ございませんが、重要な事ばかりだと思いますので、引き続きよろしくお願い致します。
- Eureka_
- ベストアンサー率41% (5079/12273)
HDDなら型番ググれば一発だと思いますが。 http://wdc.custhelp.com/app/answers/detail/a_id/1512/~/specifications-for-the-500-gb-caviar-blue-and-caviar-se-serial-ata-drive >Buffer 8 MB バッファメモリにHDD制御用のファームウェアを一部読み込んで動くドライブがある(HGSTのは知ってますが他社はよく知りません)のでバッファが全てキャッシュではないにせよ、おおむね近似すると思っておけば間違いないです。 #そこを正確な数字が知りたい? ファームウェアのバージョンによっても変動するので、実物を買って実測して下さい。ファームバージョンによってキャッシュメモリがどう変動するかまで公開しているメーカーはないと思います。 外付けは…つないだときに中身の型番が見えるならそれをググる。見えなければ分解して実HDDの型番を確認するしかない(ただし、それをUSBなりなんなりに変換する基板で制約されてる可能性も)ですね。 USBメモリは普通キャッシュメモリを積んでません。あってもコントローラチップに内蔵(読み書き命令自体をキャッシュするため)。 シーケンシャルな読み書きならコントローラチップの各チャネルに割り振って対応できますし、ランダムな読み書きはUSBメモリにおいてそんなに行われないのでメーカー的には対応優先度がほぼゼロです。(やるとしてもバッファローならターボPCなど、命令自体を効率的に配置することで性能を上げようとするアプローチの方が楽か有効かどちらかのはず。限られた電力をキャッシュメモリに回す余裕もないでしょうし。)
お礼
Eureka_さん 大変御丁寧な御説明、ありがとうございます。 >バッファメモリにHDD制御用のファームウェアを一部読み込んで動くドライブがある(HGSTのは知ってますが他社はよく知りません)のでバッファが全てキャッシュではないにせよ、おおむね近似すると思っておけば間違いないです。 そうだったのですか。 HDDでは、「バッファメモリ≒キャッシュメモリ」と考えていいのですね。 覚えておきます。 >USBメモリは普通キャッシュメモリを積んでません。あってもコントローラチップに内蔵(読み書き命令自体をキャッシュするため)。 それは知りませんでした。 記憶媒体関係について、大変お詳しいですね。 僕も少しは見習います。 >シーケンシャルな読み書きならコントローラチップの各チャネルに割り振って対応できます。 ちょっと僕には難しすぎて、意味がよく分かりません。 USBメモリでは、読み書きの際にバッファを使用していないといった事を、仰っているのでしょうか? >ランダムな読み書きはUSBメモリにおいてそんなに行われないので・・・ そういえば、USBメモリのベンチマークテストを行った所、 ランダムな書き込みの速度が、極端に遅くなっていたのを覚えています。 USBでランダムな読み書きが行われにくいのは、どうしてなのでしょうか? 引き続きよろしくお願い致します。
補足
この質問の題名、明らかにおかしいですね。(笑) HDDやUSBメモリのフラッシュメモリのサイズ → HDDやUSBメモリのキャッシュメモリのサイズ です。
お礼
Eureka_さん 何度も御回答ありがとうございます。 なるほど、ブロックサイズはアローケーションユニットサイズとは別物なのですね。 了解しました。 USBメモリの断片化についても、説明頂いた内容で、大体理解できました。 Eureka_さんは、PCに本当に御詳しいのですね。 ややこしい質問にお付き合い頂き、ありがとうございました。