...

SATA

by user

on
Category: Documents
13

views

Report

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 バイト)のデータを内蔵できます.転
Fly UP