Comments
Description
Transcript
SATA
解説 ら か 礎 基 を い知識 た き お て っ SATAで知 や ク ス ィ デ ・ ハード る な と 流 主 S S Dで を ス ー ェ フ ー タ ン イ A S AT 理解しよう 猪狩 史 重点企画 システムの記事 SATA(Serial ATA)はハード・ディスクとのインターフェー ビギナーズ 制御します. この中で,トランスポート層は特に以下のように進化し スである ATA(AT Attachment)をシリアル化したもので, ATA 以上のデータ転送速度を得るために開発された.本稿で てきました. は SATA の階層構造やコマンド,データをやりとりするための ¡SATA からPATA(Parallel ATA ;ATA のこと)に変換 データ構造“FIS”,データ転送の際にやりとりするコマンドな ¡メイン・メモリにデータの読み書きを行う機能を搭載 ど,プロトコルの基礎知識について解説する. ¡CPU からの制御が最小で済むように自動化機能を搭載 (筆者) このため現在では,SATA のプロトコル制御は SATA 1.SATA の階層構造 制御 LSI の内部で実行されます.システム側ではプロトコ ルの細かい制御を行わないという構成が一般的です. ● トランスポート層の制御インターフェースは必要最小限 SATA(Serial ATA)は,ハード・ディスクとの接続に 2.トランスポート層で使う“FIS”とは 使われる ATA(AT Attachment)をシリアル化したイン ターフェースです.SATA の特徴としては,図 1 のように トランスポート層では SATA のプロトコルの制御を行い 階層構造が定義されています.例えばデータを送信する場 ます.プロトコルの制御にはコマンドを使います.コマン 合,トランスポート層でコマンド送信に必要なデータを作 ドは,FIS(Frame Instruction Structure)と呼ばれるデー 成し,次のリンク層で符号化,最後にそのデータを PHY タ列の送受信によって実行されます.つまりSATA のトラ (物理)層で送信,ということになります. これらの各層の主な役割について以下に解説します. ンスポート層では,FIS を使ってコマンドやデータをやり とりすることで,プロトコルを制御します. ¡PHY(物理)層 PHY 層は SATA 信号を制御します.主にリンク層から ホスト側 与えられるデータをシリアル化して SATA に送信したり, あるいは受信したデータをリンク層が解釈できる形にして データ 送信方向 リンク層は PHY 層の制御やデータの符号化を行います. ¡トランスポート層 トランスポート層はコマンドを発行しプロトコル全体を Keyword リンク層 物理 (PHY)層 送信 データ 作成 送信データ 符号化 データを 送出 データ を展開 受信データ を8ビット 変換 データ 受信 システム・ バス 引き渡したりします. ¡リンク層 デバイス側 トランス ポート層 データ 受信方向 図1 SATA インター フェース HDD データ送信 データ受信 SATA の階層構造 物理層,PHY 層,リンク層,トランスポート層,FIS,NCQ,データ転送プロトコル,ソフトウェア・リセット, COMRESET,8B/10B 変換,プリミティブ,パワー・セーブ,OOB,スピード・ネゴシエーション,ピン 11 Design Wave Magazine 2008 December 77 D DWM BASIC SATA FIS には,先頭・終了位置を知らせたり,転送・受信の れるデータ構造を単位とします(図 2).ここでいうデータ 同期をとったりするためにプリミティブという特殊な文字 とは読み書きを行うためのデータのみではなく,HDD 列が含まれます.プリミティブは本来,リンク層で付加さ (ハード・ディスク・ドライブ)を制御するための情報や, れますが,プロトコルの一部の説明にはプリミティブが含 HDD から送信される実行結果の情報も含みます. ハード・ディスク や SSD で主流となる すべての FIS は“ SOF”, 内容,を CRC ( Cyclic Redun SATA インターフェース 理解しよう まれていた方が分かりやすい部分もあります.ここではFIS の種類や機能を中心に,若干のプリミティブの内容を加え dancy Check),“EOF”から成ります.SOF,EOF はそ て説明していきます. れぞれFIS の先頭,終了を示すためのプリミティブですが, FIS はコマンドの種類やデータ転送プロトコルによって これについては後述します. 何が使われるか決められています.まず FIS の構造・種類 FIS の記述は4 バイト単位です.送受信の順ごとに,この を紹介し,次にコマンド・プロトコルがどのような FIS を 4 バイト単位に対して“ダブルワード”あるいは, “Dword” 使って実現されているのかを解説していきます. と表記することがあります.FIS の種別は Dword 0 の最下 位 8 ビットの FIS タイプで記述されます.FIS の種別によ ● FIS の記述は 4 バイト単位 り,それ以降に記述されるFIS の内容が決められています. SATA におけるデータの送受信は,すべて“FIS”と呼ば ● トランスポート層で使われる FIS は 8 種 SOFプリミティブ FIS内容(内容は個別に規定) FISタイプ FIS内容(内容は個別に既定) (長さはFISによって異なる) ぞれの概要を解説します. ¡Register Host to Device(RegHD) Register Host to Device は,ホストからデバイスに指示 CRC 図2 FIS の基本構造 SATA で定義されている FIS は 8 種類です.以下にそれ EOFプリミティブ を出すための FIS です(図 3).この FIS を HDD などのデ バイスに送信することで,コマンドの動作が始まります. HDDを複数使っている 場合の接続先を指定 0 フィーチャーズ コマンド 1 デバイス LBAハイ DWord0の最下位8ビットで FISの種類を指定 C R R R PM Port FISタイプ(27h) LBAミッド LBAロー 2 フィーチャーズ(exp) LBAハイ(exp)LBAミッド(exp)LBAロー(exp) この FIS は,ATA のコマンド設定で必要なレジスタがすべ て含まれているので,ATA と同様の動作を行えます.FIS の内容の準備方法はトランスポート層の構成によって異な ります. また,PMPort 指定部分はポート・マルチプライヤと呼 ばれる構成でHDD の接続を増やしている場合に,どのポー 3 コントロール 予約 4 予約 予約 図3 セクタ・カウント(exp)セクタ・カウント(exp) 予約 予約 トに接続されている HDD に対してコマンド指定を行うか を設定します.これはほかの FIS でも同じです. ¡Register Device to Host(RegDH) Register Host to Device のFIS データ構造 LBA(論理ブロック・アドレス)はアドレス方式の一つ.exp は拡張 LBA 方式 を表す. Register Device to Host は実行結果をデバイスからホス トに報告するときに使われる FIS です(図 4).ATA で使 われるすべてのレジスタが含まれているので,ATA と同 0 エラー ステータス 1 デバイス LBAハイ 2 予約 3 予約 予約 4 予約 予約 R I R R PM Port FISタイプ(34h) LBAミッド LBAロー LBAハイ(exp)LBAミッド(exp) LBAロー(exp) セクタ・カウント(exp)セクタ・カウント 予約 予約 じ情報を通知できます. Register Device to Host は,動作に対する応答時に,デ バイス(HDD)からホストに送信されます. ¡Data Data FIS は,データの送受信に用いられます(図 5).ホ ストからの送信,HDD からの送信の両方で用いられ,送 図4 Register Device to Host のFIS データ構造 LBA(論理ブロック・アドレス)はアドレス方式の一つ.exp は拡張 LBA 方式を 表す. 78 Design Wave Magazine 2008 December 信方向による FIS タイプの種別はありません.最大で 2048Dword(= 8192 バイト)のデータを内蔵できます.転