Comments
Description
Transcript
ハード・ディスク制御の 素朴な疑問 10選
第3 章 設計に入る前に確認しておこう ハード・ディスク制御の 素朴な 疑問 10選 猪狩 史 ような手順になります(図 1). 本稿では,ハード・ディスク・ドライブ(HDD)を使った機器 を開発するにあたって疑問に思いやすい 10 項目を厳選し, (1)アプリケーション・ソフトウェアが,読み出したい(あ Q & A 形式で紹介する.設計に入る前にぜひ確認しておこう. るいは書き込みたい)ファイルを OS のライブラリの一 (編集部) つである API( Application Programming Interface) に対して要求する. Q1 (2)OS(API)はそれに基づいたI/O 要求を,ストレージ・ ソフトウェアからどのようにハード・ Q2 Q3 Q4 Q5 ディスクを制御するのですか? デバイス内のデータ位置情報,サイズとともにデバイ Q6 Q7 Q8 Q9 Q10 デバイス・ドライバと呼ばれるソフトウェアが A1 A2 A3 A4 A5 ス・ドライバに渡す. (3)デバイス・ドライバは,実際のプロトコル制御を行う HBA(Host Bus Adapter)というハードウェ ハードウェアである HBA(Host Bus Adapter)に対し がハードウェアを制御 A6 アの設定を行い,HBA A7 A8 A9 A10 て,I/O 要求に必要な設定を行う. します. (4)HBA は,接続されているストレージ・デバイスのイ ンターフェースに合わせて,実際にストレージ・デバ ハード・ディスク・ドライブ(HDD)などのストレージ・ イスにコマンドを発行する. デバイスを制御するといっても,実際にはいろいろな段階 (1)∼(4)のそれぞれの段階で,直接ではないとしても, があります.例えばWindows などのOS を使う場合,アプ ストレージ・デバイスを制御している,ともいえます. リケーション・ソフトウェアによる HDD の制御は,次の 本特集では,主にストレージ・デバイスや実際にスト レージ・デバイスにアクセスを行う HBA に相当する部分 アプリケーション・ソフトウェア について解説しています. I/O 要求 ソフト ウェア OS,API(Application Programming Interface) 内容を解釈 デバイス・ドライバ AP Iへの指示に対応して必要な動作をHBAに指示 動作に必要な設定を実施 HBA (Host Bus Adapter) 実際のプロトコル制御を行うハードウェア(チップセットなど) ハード ウェア ストレージ・インターフェース ハード・ディスク・ドライブ(HDD)などの ストレージ・デバイス 図1 ストレージ・デバイスの制御構成 Keyword 50 Q1 Q2 よく使われるハードウェア構成は? Q3 Q4 Q5 A1 Q6 A2 Q7 ストレージ・インターフェースや CPU の種類 A6 A7 A3 Q8 A4 Q9 A5 Q10 A8 A9 A10 によって,いくつかの方法があります. HDD にデータをリード/ライトする場合,データ転送が 必要になります.HDD を制御するという観点からすれば, データの送受信用に用いるメイン・メモリにどのようにア HDD,ハード・ディスク,HBA,OS,デバイス・ドライバ,ATA,SATA,シリンダ,ヘッド,セクタ, トラック,アドレス,ブロック,コマンド,CHS 方式,LBA 方式,AHCI Design Wave Magazine 2008 November クセスするのか,ということになります. 例えば,PCI バス(PCI Express でも同様)を備えたシス Q1 Q2 HDD Q4 にデータを読み書きするには, Q5 どのような情報が必要なのですか? Q3 テムにおいて,よく使われるシステム構成と特徴を以下に 示します. (1)チップセットの機能を用いる場合 Q6 A1 Q7 A2 現在のパソコン向け CPU のチップセットでは,内部に A6 データ転送を自動的に実行する機能が搭載されています〔図 Q8 Q9 Q10 アクセス先の情報(アドレス)とアクセスする A3 A4 A5 データ量(ブロック数) ,させたい動作(コマン A7 A8 ド)を発行する必要があります. A9 A10 2(a)〕.例えば,米国 Intel 社の ICH5 シリーズ以降のチッ ストレージ・デバイスは一般に次のことがいえます. プセットでは,コマンドに付随するデータ転送をメイン・ ¡記録領域があるサイズのデータを格納するブロックに分 メモリのどこに格納,あるいはどこから出すかということ をあらかじめ指定しておくと,コマンドの応答に従って勝 手にデータを転送する機能があります.データ転送が終了 したら CPU に対して割り込みを発生します. このような自動化機能を持つ LSI を介して SATA(Serial 1 割されている. ¡アクセスすべき場所と,そこを先頭にして何ブロックの データをアクセスするかを決める. ¡アクセスの目標情報,アクセス・ブロック数とともにコマ ンドを発行する(一般的にリード用コマンドとライト用コ ATA)インターフェースを備えた HDD を制御する場合, マンドではコマンド・コードやプロトコルが異なる) . インターフェースの詳細なプロトコルよりも,LSI の自動化 ¡コマンドを発行すると,インターフェースの転送プロト 機能をどのように使うのかを理解することがまず重要です. (2)PCI バスに接続した SATA 制御 LSI を用いる場合 最近パソコンで使われるHDD の多くは,インターフェー Pro App1 2 3 コルに応じてストレージ・デバイスが応答する ¡書き込みコマンドの場合,コマンド・コードに引き続き, 4 書き込みを行うべきデータを送信する. スとして SATA を備えています.SATA 対応 HDD を制御 するには,SATA 制御LSI を使うという選択肢があります. メイン・メモリ SATA 制御LSI を用いた場合の制御は,基本的にはチップ セットを用いた場合と大差ありません〔図2(b) 〕 .SATA の 自動制御 チップセット内 HBA CPU 制御部はPCI などのバスに接続されているため,CPU から見 HDD App2 FIS(応答など) PCIバスなど るとチップセット内の機能を使うのか,SATA 制御LSI の機 (a)チップセットを用いた場合 能を使うのか,ということで,本質的な差はありません. 説明が前後しますが,SATA の制御系を一般には HBA App3 チップセット (Host Bus Adapter)と呼びます.チップセット内に搭載 メイン・メモリ されている SATA の制御系も HBA の一つになります. (3)ブリッジ LSI を用いる場合 5 FIS(命令など) 自動制御 CPU FIS(命令など) HDD SATA制御LSI ブリッジ LSI は,SATA を別のインターフェースに変換 FIS(応答など) PCIバスなど します.図 2(c)は PATA(Parallel ATA)-SATA ブリッ (b)SATA制御LSIを用いた場合 ジ LSI を用いているシステム構成例です. ブリッジ LSI はインターフェースの変換しか行わないの チップセット で,CPU がデータ転送をすべて制御しなければなりませ メイン・メモリ ん.この場合,習熟が必要なのは変換後のインターフェー CPUが制御 FIS(命令など) スのプロトコル制御となります.PATA ブリッジを用いた 場合の制御方法はここでは割愛します. CPU HDD PATA SATA FIS(応答など) PCIバスなど (c)ブリッジLSIを用いた場合 図2 ハード・ディスクを使う場合のハードウェア構成 Design Wave Magazine 2008 November 51