* BigSector ドライブを試す [#n2455dcc]

遅ればせながら,Western Digital の BigSector ドライブを試してみた.
型番は WD20EARS,2TB のドライブである.

** BigSector とは [#i4983559]

従来の HDD は読み書きの最小単位(セクタ)が 512 バイトであった.
が,BigSector ドライブではこの最小単位が 4KB ( = 4096 バイト ) となっている.

** 参考資料 [#raa3655d]

BigSector についてもっと詳しく知りたい方は [http://www.bigsector.org/_smartsite/external/bigsector/index.php bigsector.org] を参照のこと.



** 互換性 [#z63079e0]

現状では,BigSector ドライブは,電源投入後は「エミュレーションモード」で動作する.
つまり,HDD 内部の回路やファームウェアで,外見上は 512 バイト/セクタのドライブと同等の動作をするようになっている.
つまり,PC 側から 512 バイト/セクタのつもりで発行されたリクエストを HDD 内部で 4KB/セクタのリクエストに変換し,512バイト/セクタのような応答を返す.
あくまでもエミュレーションなので,HDD 上の物理的なセクタは 4KB/セクタのままである.

というわけで,レガシーなシステムで使用しても直ちに「動作しない」ということはない.
が,後に述べる理由により,パフォーマンスが低下する.

** セクタ番号の対応 [#u6ceca05]
おそらくは下表のような対応になっているものと思われる.

|512バイト/セクタ|4KB/セクタ|h
|0|0|
|1|~|
|2|~|
|3|~|
|4|~|
|5|~|
|6|~|
|7|~|
|8|1|
|9|~|
|10|~|
|…|~|

** 512バイト/セクタエミュレーションでのアクセス [#t79d0ef2]

512 バイト/セクタのエミュレーション時に例えば
> セクタ番号 0 から 8 セクタの読み込み

をする場合,HDD 内部では
+ 物理番号 0 のセクタを読み込み
+ これを 8 セクタ分の応答として返す

という動作をすればいい.

ところが
> セクタ番号 1 から 8 セクタの読み込み

となると
+ 物理番号 0 と 1 のセクタを読み込み
+ 対応する 8 セクタ分の応答を返す

という動作になる.
同じセクタ数の読み出しなのに,後者では2物理セクタの読み込みが発生することになる.
これは

> 8 で割り切れないセクタ番号で始まるアクセス

なのが原因なのは明らかだろう.

書き込みの場合は,もっと深刻である.
> セクタ番号 1 から 8 セクタの書き込み

の場合は
+ 物理セクタ 0, 1  を読み出し
+ 物理セクタ 0 の後ろ 7 論理セクタ分と物理セクタ 1 の最初 1 論理セクタ分を書き換え
+ 物理セクタ 0, 1 を書き戻す

となる.
いわゆる read-modify-write と呼ばれる動作になり,パフォーマンスへの影響は大きい.

** CHS パラメータの呪い [#na963a05]

HDD には「シリンダ数」「ヘッド数」「セクタ数」というパラメータがある.
HDD 上にはこのパラメータに沿ってセクタが配置されている,というのは昔の話.

現代の HDD の CHS パラメータは
:シリンダ|たくさん
:ヘッド|255
:セクタ|63

というパラメータとなっている.
ヘッドが 255 もあれば,ディスク(プラッタ)は 128 枚も入っていることになるが,壊れた HDD を分解してみてもそんなにたくさんの円盤は無い.
つまり,
> HDD のコントローラとファームウェアがホラを吹いている

のである.

ところで,パーティションを切る場合,Windows XP 以前だとディスクを目一杯使おうとすると,最初のトラックはパーティションテーブル等のために利用されない.
が,上記の CHS パラメータではセクタ/トラックは 63 となっている.
第一パーティションは 64 セクタ目,セクタ番号 63 から切られることになる.
パーティション先頭が 8 で割り切れないセクタ番号なので,パーティション内部のアクセスが 4KB 単位だったとしても,常に「切れの悪い」アドレスからのアクセスということになる.

困ったもんだ.

** 実験 [#jed6559e]

*** Windows XP でパーティションを切り,フォーマット [#r96d7a77]

Windows で HDD をフォーマットし,パーティションテーブルをダンプする.
第1パーテション部分は以下のようになっている.

 000001b0                                             00 01  |................|
 000001c0  01 00 07 fe ff ff 3f 00  00 00 82 74 e0 e8        |......?....t....|



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS