ハードディスクの予備知識 part1

weekly making now! (00.09.24)

<Home> → <weekly making now!> → <weekly making now! (00.09.24)>


はじめに

仕様書などに載っている用語を中心にハードディスク(主にATA)について説明しています。もっと書きたくなったので取り敢えず part1 ということで。


1. データ転送方式

以下は ATA のデータ転送方式の種類です。

転送方式 最大転送レート(Byte/sec)
PIO転送 mode 0 3.33MB
mode 1 5.22MB
mode 2 8.33MB
mode 3 11.1MB
mode 4 16.6MB
Single word DMA転送 mode 0 2.08MB
mode 1 4.16MB
mode 2 8.33MB
Multi word DMA転送 mode 0 4.16MB
mode 1 13.3MB
mode 2 16.6MB
Ultra DMA 転送 mode 0 16.6MB
mode 1 25MB
mode 2 33.3MB
mode 3 44.4MB
mode 4 66.6MB
mode 5 100MB

1.1 PIO 転送 (Programmed Input/Output)

ATA の一般的な転送方式です。この方式は CPU が直接 port を管理しなくてはならなくなり、当然パフォーマンスもすぐに頭打ちしてきました。ちなみに mode 3, mode 4 では IRQ を使用して速度を上げていますが、当時は他社同士の相性問題を多発したこともありました。

1.2 DMA 転送

ほぼ同時期に Multi word DMA 転送方式もあったので、データ転送効率の面で劣る Single word DMA 転送方式は殆ど使用される機会は無かったです。実際 ATA-3 の仕様書から抹殺されています。それでもハードディスクメーカーはサポートを続けているようです。CPU が直接制御する機会が激減したためパフォーマンス的に良いとされています。相変わらず相性問題は残っていましたが。

1.2 Ultra DMA 転送

一般的に mode 2 を Ultra ATA/33(Ultra DMA/33 とも言う)、mode 4 を Ultra ATA/66、mode 5 を Ultra ATA/100 と呼ばれています。

データ転送速度の向上の他に CRC 付属によるデータ転送の信頼性も向上しています。ただしこれらの転送を有効にするにはハードディスクのサポートはもちろん、PC 側のインターフェースも Ultra DMA 転送をサポートしていなければなりません。アキバのおにーさんの言うには「他社ハードディスクとの相性は悪いんで、Master/Slave 設定は同じメーカーのを使用してくださいね」とのこと。

mode 3 からは今までの 40芯のケーブルではなく専用の 80芯のケーブルを使用しなければならない。別に信号線が増えたわけではなく、信号線の間に Ground を入れることでノイズ特性を改善した処置とのこと。ちなみにアキバで売っている Smart cable ってノイズ大丈夫なのか、すごく不安です。Graund 関係なさそうじゃん?


2. パフォーマンス

2.1 回転数 (rpm, revolution per minute)

1分間当たりの回転数。当然、数値が大きければ大きいほど回転数は速くなりハードディスクのパフォーマンスは上がります。パフォーマンスでは最も重要な要素になります。

Linux のインストーラーのことじゃないですよ :-)。

2.2 バッファ容量 (buffer size)

ハードディスク上にあるキャッシュメモリ。一概に大きければ大きいほどパフォーマンスが良くなるわけでもないのですが、一般的に大きければそれだけパフォーマンスが良くなると思って間違いないと思います。特にサーバー等の頻繁に大きなファイルを頻繁に読み書きする場合には有効に働きます。逆に小さなファイルをランダムに読み込むゲーム等のキャッシュミスを頻発する用途の場合には、パフォーマンスがかえって悪くなる可能性もあります。

ちなみにこのキャッシュのアルゴリズムは各社、異なっていて実際のパフォーマンスにもかなり影響してきます。もちろん制御チップの高速化等でアルゴリズムの差を埋める方法もあるのですが。

2.3 面記録密度 (Areal Dencity)

1平方インチ(mm^2/inch)当たりの容量数。密度が濃いほど(数値が大きいほど)1トラック当たりに読み書きできる量が多くなり、速度も向上することになります。最近注目されている値です。そろそろ頭打ちが近いらしい。

同様に線記憶密度(Recording Dencity) という用語もあります。これは1インチ中当たりの容量数になります。単位は BPI (bit par inch)。

2.4 シークタイム(Seek time), 平均待ち時間 (Latency), etc...

未だに仕様書には記述されていますが、ハードディスクで上記の用語は情報処理技術者試験以外では役に立たないでしょう。現在のハードディスクの磁気ヘッドの速度は殆ど進歩しておらず、パフォーマンスに影響することはまずありえません。しかも各メーカーによって基準が様々のようです。それ以外の用語の方がパフォーマンスの影響が大きいのです。一応説明しますとシークタイムは磁気ヘッドの平均移動時間。平均待ち時間は磁気ヘッドにデータが読み出されるまでの待ち時間。


3. 容量の壁

一般常識では 1MB = 1048576 byte として計算するのですが、何故か(多分、営業的理由なのだが)昔から容量の話になると 1MB = 1,000,000 Byte として扱われてしまいます。が、この章は違和感を減らすためあえて1MB = 1,000,000 Byte を適用します。

3.1 528 MB の壁 (hard、BIOS制限→Enhanced IDE仕様制定へ)

従来、ハードディスクは CHS (Cylinder, Head, Sector の意味) を指定して読み書きを行います。通常、ハードディスクに読み書きを行う場合には必ず BIOS を経由しなければなりません。ここで harddisk、BIOS との仕様の違いで制限が生まれました。互いの最小値を選択すると 1024x16x63x512(Byte/Sector) = 約 528MB (528,482,304 bytes) が制限になります。

528MB の壁について
- シリンダ (Cylinder) ヘッド (Head) セクタ (Sector) 合計
BIOS の parameter 2^10 = 1024 2^8-1 = 255 2^6-1 = 63 1024x255x63x512 = 8422686720 = 約8.4GB
ATA の register 2^16 = 65536 2^4 = 16 2^8 = 256 65536x16x256x512 = 137,438,953,472 bytes = 約137GB
1024 16 63 1024x16x63x512 = 528,482,304 = 約528MB

この制限を解消するため、ハードディスクの仕様を拡張しました。CHS から LBA (Linerar Block Addressing) 方式に変更することにより仕様上 2^28 = 2.2TB まで指定できるようになりました。LBA 方式とは ATA に予め全てのセクタ数の合計を保存しておき、そのセクター数より CHS に当てはまるよう BIOS が逆算する方法です。

余談ですが BIOS の選択肢に「LARGE」と言うのがありますが、これはハードディスクの CHS を BIOS の仕様に合わせた CHS に変換した値になります。LARGE の変換方式は BIOS 各社によって異なりますので互換性はないです。注意しましょう。通常は LBA を選択した方が良いようです。こちらは変換方式が固定しています。

3.2 8.4 GB の壁 (BIOS仕様→拡張BIOS対応へ)

BIOSの仕様により LBA 方式を用いたとしても 8.4GB までが限界点となります。そこで phoenix 社より BIOS 自体を拡張することにより解決する方式が考えられました。今まで BIOS 経由で動作していたアプリケーションは、この拡張 BIOS(INT 13 Extensions) を使用することにより LBA 方式の限界である 2.2TB までアクセス出来るようになります。

拡張 BIOS の仕様書は以下から取得出来ます。

3.3 137 GB の壁(hard仕様→ATA-6対応?)

ATA の仕様 (register) による限界点です。これ以上サポートする場合何らかの hardware 的な拡張が必要となります。00/09 現在、仕様考案中らしいです。Interface 00/07 号の特集(P140)によると以下のようになるとのこと。この記事にあるように私も ATA の ATAPI 化の方が納得の行く拡張だと思うんだけどね。どちらにしろ OS を強制 update の刑(?)は逃れられないのかなぁ。

3.4 その他の制限

3.4.1 2.1GB の壁 (OS制限→強制update?)

FAT16 の制限。FAT32 を使用することで 2TB まで使用可能になります。FAT32 は Windows 95 OSR2 よりサポートしています。Windows NT でも似たような制限有。この場合、Service Pack を当てることにより解決できる、場合もある。

3.4.2 33.8GB の壁 (BIOSバグ?)

BIOS の変換アルゴリズムのバグで引き起こってしまうらしい(未確認)。きっと update でサポートしてくれる、はず。


4. etc.

4.1 ATA (AT Attachment)

IDE(Integrated Drive Electronics) の正式な規格名。現在 ANSI(NCITS) が規格化を勧めています。

[t13.org]

4.2 ATAPI (AT Attachment Packet Interface)

ATA インターフェースにハードディスク以外の機器を接続するために新たに考案されています。基本的には SCSI と同様にパケット単位で情報をやり取りするのが特徴です。

4.3 MTBF (平均故障間隔)

Mean Time Between Failure の略。故障していない時間の平均値。つまり購入時から故障しないで動作できる臨界点のようなもの。一般的にハードディスクは様々な要因で故障しますが、この MTBF の場合、動作し続けた場合のモーターやヘッド等の劣化を計測し計算されています。もちろん実際に 10 年、20 年掛けて計測した値ではありませんよ。昔(DOS世代?)はこの値を重要視していたこともありますが、現在ハードディスクが比較的動作が安定してきたのと、各社計測基準がバラバラなことより対して気にしている人はいないようです。

実際、仕様書にも記載されていなくなっているようです。唯一、情報処理技術者試験で見かけることがある程度です :-P。

4.4 S.M.A.R.T. (Self-Monitoring Analysis and Reporting Technology)

ハードディスクの読書きエラー率等の情報を事前に回収し、その情報を元に自分自身の死期を悟り(遺言状?)、そのことをユーザーに伝えることによって本当に harddisk が壊れてしまう前にバックアップ等を促すことを目的としています。この機能を利用することで、ハードディスク障害の60〜70%が予測可能といわれています。他に温度変化や MFBF(Mean Time Between Failure:平均故障間隔) から算出しているものもあるようですが、ここら辺は Vendor specific のようです。

4.5 MRヘッド (Magneto-Resistive Head)

MRヘッドはMR(磁場抵抗)効果を用いることにより、従来の磁場を直接検知する薄膜ヘッド(Thin Film Head)よりノイズの影響を受けにくく、大容量化しやすい、という特長をもっているらしい。現在のハードディスクの殆どは MRヘッドを採用しています。GMR(Giant MR)ヘッドというのもあるようだけど MRヘッドとの違いはよく分かりませんでした。

4.6 PRML (Partial-Response-Maximum-Liklifood)

PRML とは MRヘッドで読み込んだデータを解析しやすくするための信号方式です。詳しくは下記の page で確認してください。


ということで

何故に「基礎知識」にせず予備知識にしたかというと、世の中にこの手の名前が多いんでカブってしまうので避けるために予備知識にしました :)。以下は基礎知識な page です。


<Home> → <weekly making now!> → <weekly making now! (00.09.24)>
Copyright (c) 2000 Makoto NARA (Mc.N), Some rights reserved.
This web page is licensed under a Creative Commons License.
Creative Commons License
<Terms of Use>

Valid CSS! Valid HTML 4.01!