(58)【調査した分野】(Int.Cl.,DB名)
前記書き込みコマンド及び前記読み取りコマンドは、ネイティブコマンドキューイング(native command queuing;NCQ)によって前記ホストバスアダプタに入力されることを特徴とする請求項1に記載のデータ転送方法。
前記書き込み及び読み取りコマンドを発行する前に、前記記憶装置の前のコマンドが完了したことを判別するために前記ホストバスアダプタの第1レジスタを読み取る段階をさらに含むことを特徴とする請求項1に記載のデータ転送方法。
前記ホストに前記発行された書き込みコマンドと読み取りコマンドに対応するフレーム情報構造を転送することによってコマンドをフェッチする段階をさらに含むことを特徴とする請求項1に記載のデータ転送方法。
前記フレーム情報構造のシーケンスはそれぞれダイレクトメモリアクセスセットアップのフレーム情報構造(DMA Setup FIS)、プログラムアイオーフレーム情報構造(PIO Setup FIS)、データフレーム情報構造(Data FIS)、セット装置ビットフレーム情報構造(SDB FIS)を含むことを特徴とする請求項1に記載のデータ転送方法。
前記読み取り及び書き込みのダイレクトメモリアクセス動作が完了した後に、前記フレーム情報構造のシーケンスが発生されることを特徴とする請求項1に記載のデータ転送方法。
中央処理装置、メインメモリ、前記中央処理装置と第1インターフェースを介して通信し、内部に第2インターフェースを介して通信するホストバッファアダプタを備える記憶装置を含むコンピューティングシステムのデータ転送方法に於いて、
前記中央処理装置から前記メインメモリに入出力要求に対応するコマンドキューを送信する段階と、
前記中央処理装置から、前記メインメモリに前記入出力要求された情報を前記ホストバッファアダプタに送信する段階と、
前記記憶装置から前記情報に応答して前記メインメモリに前記入出力要求に対応するフレーム情報構造を転送することによって前記入出力要求をフェッチする段階と、
前記記憶装置から前記第1インターフェースによって前記メインメモリと前記記憶装置との間でデータを転送する段階と、
前記記憶装置が、前記データ転送後に前記第2インターフェースの規定によって書き込み及び読み取りフレーム情報構造のシーケンス(DMAセットアップFIS,ノンデータFIS、及びSDB−FISをこの順に含む)を発生し、前記メインメモリに送信する段階と、
但し、書き込みの際のノンデータFISのみは前記メインメモリから前記記憶装置に送信され、
前記記憶装置のホストバスアダプタから割り込みを発生してホストメモリに送信する段階と、
前記中央処理装置から前記発生された割り込みをもとにして前記入出力要求を完了する段階と、を含むことを特徴とするデータ転送方法。
前記第1インターフェースはPCIe(peripheral component interconnect express)インターフェースであり、前記第2インターフェースはSATA(serial advanced technology attachment)インターフェースであることを特徴とする請求項9に記載のデータ転送方法。
【発明を実施するための形態】
【0011】
以下、本発明が属する技術分野において通常の知識を有する者が本発明の技術的思想を容易に実施できるように、本発明の実施形態を添付図面を参照して説明する。
図1は本発明によるコンピューティングシステム1000の第1実施形態を示すブロック図である。
図1を参照すると、コンピューティングシステム1000は、ホストバス1001、少なくとも1つのホストプロセッサ1100、少なくとも1つのホストメモリ1200及び記憶装置1300を備える。以下では、ホストバス1001、ホストプロセッサ1100及びホストメモリ1200をホスト(Host)と称する。
【0012】
ホストバス1001は、コンピューティングシステム1000の構成要素(例えば、プロセッサ1100と記憶装置1300)間の第1インターフェース(1st interface)によってデータを転送することができる。ここで第1インターフェースは双方向のデータ転送(full duplex、他の用語で、“全二重通信”)が可能である。すなわち、第1インターフェースは個別に利用可能な送信チャネル(Tx)及び受信チャネル(Rx)を提供する。例えば、第1インターフェースはFC(fiber channel)、USB(universal serial bus)3.0、SAS(serial attached SCSI)、PCIe(peripheral component interconnect express)、SPI(serial peripheral interface)、サンダーボルトインターフェース(thunder bolt interface)、ライトニングボルトインターフェース(lightning bolt interface)などからなる。
【0013】
ホストプロセッサ1100はコンピューティングシステム1000の全ての動作を制御する。ホストプロセッサ1100は第1インターフェース回路1110を備える。第1インターフェース回路1110は第1インターフェースによってホストバス1001に接続される。ホストプロセッサ1100は図示されていないが、ホストメモリ1200を制御するためのメモリコントローラを備える。
ホストメモリ1200はホストプロセッサ1100に接続され、ホストプロセッサ1100の制御によって動作中に必要なデータを保存することができる。ホストメモリ1200はDRAMのような不揮発性メモリ装置またはPRAMのような不揮発性メモリ装置から構成できる。
【0014】
記憶装置1300は第1インターフェースによってホストバス1001に接続され、データを保存する。記憶装置1300は第1インターフェースによって外部のホストプロセッサ1100と通信を行い、第2インターフェースによって内部の通信を行う。ここで第2インターフェースは第1インターフェースとは違って、双方向のデータ転送(fullduplex)を実行せずに、単方向のデータ転送(half duplex)を実行する。例えば、第2インターフェースにはATAインターフェース、SATAインターフェースなどがある。
【0015】
記憶装置1300は第1インターフェース回路1310(他の用語で、“外部インターフェース回路”)、ホストバスアダプタ1320、第2インターフェースエミュレータ1330(他の用語で、“内部インターフェース回路”)、ダイレクトメモリアクセス(direct memory access; DMA)回路1340、少なくとも1つの不揮発性メモリ装置1350及びメモリコントローラ1360を備える。
【0016】
第1インターフェース回路1310はホストバス1001に接続され、外部と第1インターフェースによって通信する。
ホストバスアダプタ1320は第1インターフェースによって第1インターフェース回路1310と通信する。ホストバスアダプタ1320はホストプロセッサ1100から出力された少なくとも1つのコマンドを記憶装置1300が検知できるように構成されるハードウェア及び/またはソフトウェアからなる。実施形態では、ホストバスアダプタ1320はAHCI(advanced host controller interface)から構成される。
【0017】
第2インターフェースエミュレータ1330は第2インターフェースによってホストバスアダプタ1320と通信する。第2インターフェースエミュレータ1330は記憶装置1300のための第2インターフェースのエミュレーションを提供する。例えば、第2インターフェースエミュレータ1330は第2インターフェースのフレーム情報構造(frame information structure; FIS)を利用してホストバスアダプタ1320と通信できるように構成される。従って、FISは第2インターフェースの規定によるデータパケットである。第2インターフェースエミュレータ1330はメモリコントローラ1360に/からFISトランザクション(transaction)を処理したり、ホストバスアダプタ1320を介してホストのFISを処理したりすることができる。
【0018】
DMA回路1340はホストプロセッサ1100から入力されたNCQ(native command queuing)コマンド(write command、read command)に基づいて第1インターフェース回路1310を制御することによって、記憶装置1300がホストメモリ1200にデータを読み取りまたは書き込みできるように構成される。
【0019】
DMA回路1340はホストバス1001の送信チャネル(TX)と受信チャネル(RX)を利用して双方向のデータ転送(full duplex data transfer)を実行するための送信DMA回路(図示せず)と受信DMA回路(図示せず)を備える。
少なくとも1つの不揮発性メモリ装置1350はデータを保存する装置として、フラッシュメモリ(例えば、NAND型フラッシュメモリ)、PRAM(phase−change RAM)、MRAM(magnetic RAM)、RRAM(登録商標)(Resistive RAM)、FRAM(登録商標)(ferroelectric RAM)、VNAND(vertical NAND)などからなる。
メモリコントローラ1360は第2インターフェースエミュレータ1330から出力されたFISトランザクションによって、不揮発性メモリ装置1350を制御する。
【0020】
一般的に、第2インターフェース(例えば、単方向データを転送するインターフェース)を支援している記憶装置は双方向のデータ転送は不可能である。しかし、本発明の実施形態によるコンピューティングシステム1000は記憶装置1300が第1インターフェース(例えば、双方向データを転送するインターフェース)を支援するホストバスアダプタ1320と第2インターフェースのFISを利用してホストバスアダプタと通信する第2インターフェースエミュレータ1330を備えることによって、内部では第2インターフェースによってデータを転送するとともに外部とは第1インターフェースによって双方向のデータ転送を可能にする。すなわち、本発明によるコンピューティングシステム1000は第2インターフェースの条件を満足するとともに、データの転送速度を2倍に極大化することができる。
【0021】
また、本発明の実施形態によるコンピューティングシステム1000は第1インターフェースを支援するホストバスアダプタ1320を有する記憶装置1300を備えることによって、従来のものと比較して記憶装置1300のためのホストドライバ(host driver)を別に開発する必要はない。すなわち、本発明の実施形態によるホストプロセッサ1100は従来のホストドライバを使用して本発明の記憶装置1300を駆動することができる。
【0022】
図2は本発明の実施形態によるホストと記憶装置間のデータの流れを概略的に示す図である。
図1及び
図2を参照すると、データの流れは次のとおりである。
ホストプロセッサ1100は記憶装置1300にデータ転送に関するNCQコマンド(書き込みコマンドまたは読み取りコマンド、CMD)を実行できるかどうかをまず判断する。このために、ホストプロセッサ1100は前のコマンド(prior CMD)が完了したことを確認するためのホストバスアダプタ1320のレジスタを読み取る(S11)。もし、ホストバスアダプタ1320のレジスタを読み取った結果として前のコマンド(prior CMD)が完了したら、ホストプロセッサ1100はコマンド(CMD)をホストメモリ1200に発行する(S12)。この後、ホストプロセッサ1100はホストメモリ1200のコマンド(CMD)が発行されたことを通知するコマンドFIS(CMDFIS)をホストバスアダプタ1320に送信する(S13)。その後、第2インターフェースエミュレータ1330はホストメモリ1200にコマンドFIS関連情報(例えば、コマンドの種類、アドレス、データなど)を保存することによりコマンドをフェッチ(CMD Fetching)する(S14)。これによって、ホストメモリ1200は記憶装置1300へデータを転送することができる領域を設定する。
【0023】
この後、読み取りコマンドまたは書き込みコマンド(CMD)によってホストメモリ1200と記憶装置1300との間に第2インターフェースの規定を満足するとともにデータ転送が行われる。ここで、データ転送は双方向のデータ転送である。即ち、同時に入力された読み取りコマンドと書き込みコマンドによって双方向のデータ転送が実行されたり、読み取りコマンドと書き込みコマンドが混在した状態で双方向のデータ転送が実行されたりする(S15)。データ転送が完了すると、ホストバスアダプタ1320は割り込みをホストメモリ1200に送信する(S16)。この後、ホストプロセッサ1100はコマンド(CMD)に応じた動作の完了即ち、コマンド完了の情報をホストメモリ1200に送信する(S17)。
本発明によるコンピューティングシステム1000はNCQコマンド(CMD)によって双方向のデータ転送を行うことができる。
【0024】
図3は
図2に図示された双方向のデータ転送を例示的に示すフローチャートである。
図3を参照すると、双方向のデータ転送は次のとおりである。
DMA回路1340の送信DMA回路は書き込みコマンド(Write CMD)によって、ホストバス1001の送信チャネル(TX)を使用して書き込みデータ(Write Data)をホストメモリ1200から受信し、DMA回路1340の受信DMA回路は読み取りコマンド(Read CMD)によって、ホストバス1001の受信チャネル(RX)を使用して読み取りデータ(Read Data)をホストメモリ1200に転送する(S21)。即ち、書き込みデータ(Write Data)と読み取りデータ(Read Data)の転送は並列に処理される。
【0025】
ホストバス1001の送信チャネル(TX)を介して書き込みデータ(Write Data)の送信が完了すると、第2インターフェースの規定による書き込みデータFIS(Write Data FIS: DMA Setup FIS、Non−Data FIS、SDB(set device bits)FIS)がホストメモリ1200に送信される(S22、S23、S24)。ここで、DMA Setup FISはデータを送信するためにDMA回路1340(
図1参照)を設定する情報を含み、Non−Data FISはデータが存在しない情報を含み、SDBFISはデータの送信完了または送信状態の情報を含む。ここで、Non−Data FISはホストメモリ1200から発生して記憶装置1300に送信される。図示されていないが、第2インターフェースの転送の規定を満足するためにData FISは第2インターフェースエミュレータ1330(
図1参照)から発生したヘッダだけを含み、発生されたData FISはホストバスアダプタ1320(
図1を参照)で第2インターフェースのエミュレーションのために使用される。
【0026】
また、ホストバス1001の受信チャネル(RX)を介して読み取りデータ(Read Data)の転送が完了すると、第2インターフェースの規定による読み取りデータFIS(Read Data FIS: DMA Setup FIS、Non−Data FIS、SDBFIS)がホストメモリ1200に転送される(S25、S26、S27)。ここで、DMA Setup FISはデータを受信するためにDMA回路1340(
図1を参照)を使用するかどうかの情報を含み、Non−Data FISはデータが存在しない情報を含み、SDBFISはデータの受信完了または受信状態の情報を含む。
【0027】
実施形態において、書き込みデータFIS(Write Data FIS)と読み取りデータ(Read Data FIS)は書き込みデータ(Write Data)と読み取りデータ(Read Data)の転送が終わった後順次に発生する。
実施形態において、書き込みデータFIS(Write Data FIS)と読み取りデータ(Read Data FIS)のそれぞれは、DMA Setup FIS、Non−Data FIS、SDB FISを順次に発生する。
【0028】
本発明の実施形態による双方向のデータ転送方法は、第1インターフェースの規定による書き込みデータ(Write Data)と読み取りデータ(Read Data)の転送を実行した後、第2インターフェースの規定によるDATA FIS(Write FIS、Read FIS)を仮想的に生成及び転送する。
【0029】
図4は本発明によるデータ転送方法を例示的に示すフローチャートである。
図1〜
図4を参照すると、データ転送方法は次のとおりである。
ホストプロセッサ1100は記憶装置1300にNCQコマンド(読み取り/書き込み)を発行する(S110)。ここで、NCQコマンドは書き込みコマンドと読み取りコマンドを同時に発行したり、順次に発行したりする。NCQコマンドに応じてホストメモリ1200と記憶装置1300との間で第1インターフェースを使用して並列的に書き込みDMA動作と読み取りDMA動作が実行される(S120)。書き込みDMA動作と読み取るDMA動作が完了した後、第2インターフェースを満足するためのデータFISシーケンス(例えば、DMA Setup FIS ⇒ Non−Data FIS ⇒ SDB FIS)が記憶装置1300からホストメモリ1200に転送される(S130)。
【0030】
本発明の実施形態によるデータ転送方法は、第1インターフェースの規定によりDMA動作を実行した後、第2インターフェースの規定によりData FISを転送する。
図1〜
図4で説明されたコンピューティングシステム1000は外部から第1インターフェースの規定によりホストバス1001に接続され、内部に第2インターフェースの規定によって動作する記憶装置1300を備えている。本発明の実施形態によるコンピューティングシステムは第1インターフェースの規定によってホストバスに接続されて動作する記憶装置をさらに備える。
【0031】
図5は本発明によるコンピューティングシステムの第2実施形態を示すブロック図である。
図5を参照すると、コンピューティングシステム2000はホストバス2001、少なくとも1つのホストプロセッサ2100、少なくとも1つのホストメモリ2200、第1記憶装置2300と第2記憶装置2400を備える。ここで、ホストバス2001、ホストプロセッサ2100及びホストメモリ2200は
図1に示されたホストバス1001、ホストプロセッサ1100、ホストメモリ1200と同じ動作及び構造で構成される。
【0032】
第2記憶装置2400は第1インターフェースによってホストバス2001に接続される。第2記憶装置2400は第1インターフェース回路2410、少なくとも1つの不揮発性メモリ装置2450とメモリコントローラ2460を備える。第1インターフェース回路2410は第1インターフェースの規定によって、ホストとの通信を実行するように構成される。メモリコントローラ2460は第1インターフェースの規定によってコマンド及びデータ転送を実行し、ホストからの要求に応じて不揮発性メモリ装置2450を制御する。
一方、第2記憶装置2400は第1インターフェース記憶装置と呼ばれる。このとき、第1記憶装置2300はホストが第1インターフェース記憶装置とみなすので、疑似(pseudo)第1インターフェース記憶装置と呼ばれる。
【0033】
本発明の実施形態によるコンピューティングシステムは、RAID(redundant array of independent disks)の機能をさらに備える。ここで、RAID機能は複数の記憶装置を単一の論理デバイスとして動作するようにすることで、個々の記憶装置の限られた容量をユーザーが希望するだけ拡張したり、記憶装置に保存されたデータの信頼性を確保したりするために使用される。
【0034】
図6は本発明によるコンピューティングシステムの第3実施形態を示すブロック図である。
図6を参照すると、コンピューティングシステム3000はホストバス3001、少なくとも1つのホストプロセッサ3100、少なくとも1つのホストメモリ3200、RAIDコントローラ3300、第1記憶装置3400と第2記憶装置3500を備える。ここで、ホストバス3001、ホストプロセッサ3100及びホストメモリ3200は、
図1に示されたホストバス1001、ホストプロセッサ1100、ホストメモリ1200と同じ動作及び構造で構成される。
【0035】
RAIDコントローラ3300は第1インターフェースによって、ホストバス3001に接続され、RAID機能を提供するために第1及び第2記憶装置3400、3500を制御する。ここで、RAID機能はデータのミラーリング技術を含む。例えば、データのミラーリング技術は第1記憶装置3400にデータを保存しながら同時に同じデータを第2記憶装置3500に保存する。RAIDコントローラ3300は第1インターフェースによって、第1及び第2記憶装置3400、3500に接続される。第1及び第2記憶装置3400、3500はそれぞれ
図1に図示された記憶装置1300と同様に構成される。すなわち、第1及び第2記憶装置3400、3500は疑似第1インターフェース記憶装置になる。
【0036】
本発明の実施形態によるコンピューティングシステム3000は疑似第1インターフェース記憶装置3400、3500を使用してRAID機能を実行する。
図6に図示されたコンピューティングシステム3000には2つの記憶装置3400、3500が示されている。しかし、本発明のRAID機能を実行するための記憶装置の数はこれに限定されない。本発明のコンピューティングシステム3000は3つ以上の疑似第1インターフェース記憶装置を使用してRAID機能を実行することができる。
【0037】
図6に図示されたコンピューティングシステム3000の記憶装置はすべて疑似第1インターフェース記憶装置3400、3500である。しかし、本発明のコンピューティングシステムはこれに限定されない。本発明のコンピューティングシステムは少なくとも1つのHDD(hard disk drive)を備える。
【0038】
図7は本発明によるコンピューティングシステムの第4実施形態を示すブロック図である。
図7を参照すると、コンピューティングシステム4000は、ホストバス4001、少なくとも1つのホストプロセッサ4100、少なくとも1つのホストメモリ4200、RAIDコントローラ4300、記憶装置4400とHDD4500を備える。ホストバス4001、ホストプロセッサ4100及びホストメモリ4200は、
図1に示されたホストバス1001、ホストプロセッサ1100、ホストメモリ1200と同じ動作及び構造で構成される。
【0039】
RAIDコントローラ4300は第1インターフェースによって、ホストバス4001に接続され、RAID機能を提供するために記憶装置4400とHDD4500を制御する。RAIDコントローラ4300はホストの書き込み要求に応答して書き込みデータを記憶装置4400に保存するとともにHDD4500にも保存する。
【0040】
本発明の実施形態によるコンピューティングシステム4000は疑似第1インターフェース記憶装置4400とHDD4500を使用してハイブリッド方式でRAID機能を実行する。
本発明の実施形態によるコンピューティングシステムにおいて、第1インターフェースはPCIeインターフェースからなり、第2インターフェースはSATAインターフェースからなる。
【0041】
図8は本発明によるコンピューティングシステムの第5実施形態を示すブロック図である。
図8を参照すると、コンピューティングシステム5000はホストチップセット5100とSSDe記憶装置5300を備える。ホストチップセット5100とSSDe記憶装置5300は、PCIeインターフェースを介して接続される。
ホストチップセット5100はAHCIコントローラ5110、PCIeルートポート5120及びPCIeレーン5130を備える。SSDe記憶装置5300はSSDコントローラ5301を備える。SSDコントローラ5301は、PCIe物理層5310、PCIeリンク層5320、PCIe転送層5330及びAHCIコントローラ5340を備える。
【0042】
PCIe物理層5310はPCIeレーン5130を介してホストチップセット5100のPCIeルートポート5120に接続される。PCIe物理層5310は、ホストチップセット5100から受信したアナログ信号をデジタルデータに変換したり、ホストチップセット5100に送信するデジタルデータをアナログ信号に変換したりする。
PCIeリンク層5320は、PCIe物理層5310のデジタルデータをPCIe標準符号化/復号化する。
【0043】
PCIe転送層5330は、ホストチップセット5100とアプリケーション層との間で符号化/復号化されたデータ(あるいは、データパケット)を送信するためのFISを管理する。AHCIコントローラ5340は、PCIe規定のデータパケットをSATAe規定のデータパケットに変更する。
AHCIコントローラ5340はSSDe記憶装置5300をPCIeリンクを介してホストに接続されているPCIe記憶装置とみなすようにする。
【0044】
本発明の実施形態によるコンピューティングシステム5000は、ホストチップセット5100とSSDe記憶装置5300との間でPCIeレーンを介してPCIeリンク層のフォーマットを有するデータパケットを送受信する。
本発明の実施形態によるコンピューティングシステムは、疑似第1インターフェース記憶装置と第2インターフェース記憶装置の両方を備えることもできる。
【0045】
図9は本発明によるコンピューティングシステムの第6実施形態を示すブロック図である。
図9を参照すると、コンピューティングシステム6000は、中央処理装置6100(CPU)、DRAM6200、内部チャネルコントローラ6300、AHCI記憶装置6400、及びSATA記憶装置6500を備える。中央処理装置6100及びDRAM6200は、
図1に示されたホストプロセッサ1100及びホストメモリ1200にそれぞれ対応する。
【0046】
内部チャネルコントローラ6300は、PCIeインターフェースによって接続され、PCIeルートコンプレックス6310、AHCIコントローラ6320、SATAコントローラ6330を備える。
AHCI記憶装置6400は、PCIeインターフェースを介して内部チャネルコントローラ6300に接続され、PCIe規定のデータパケットをSATA規定のデータパケットに変換するAHCIコントローラ6410を含む。AHCI記憶装置6400は、外部からはPCIe記憶装置とみなされるが、内部的にはSATA記憶装置である。AHCI記憶装置6400は、
図1に図示された記憶装置1300と同様に動作するように構成される。
【0047】
SATA記憶装置6500は、SATAインターフェースを介して内部チャネルコントローラ6300に接続され、SATA規定のデータパケットを処理するSATAコントローラ6510を備える。SATA記憶装置6500は、内部チャネルコントローラ6300のSATAコントローラ6330の制御によってSATAデータパケットを送受信する。送受信されたSATAデータパケットは内部チャネルコントローラ6300のAHCIコントローラ6320によってPCIeデータパケットに変換され、変換されたPCIeデータパケットはPCIeインターフェースを介して中央処理装置6100に送受信される。
【0048】
本発明の実施形態によるコンピューティングシステム6000は、PCIeインターフェースを介して内部チャネルコントローラ6300に接続された疑似PCIe記憶装置6400及びSATA記憶装置6500を備える。
図10は本発明の実施形態による入出力要求(IO RQ)の観点から見たコンピューティングシステム7000を示す図である。
図10を参照すると、コンピューティングシステム7000は、中央処理装置7100、メインメモリ7200及びSATAe記憶装置7300を備える。
【0049】
SATAe記憶装置7300は、不揮発性メモリ装置7350とそれを制御するSATAコントローラ7360を備える。SATAコントローラ7360は、PCIeインターフェース回路7361、SATAeエンジン7362、オン−チップSRAM7363及びDRAMバッファ7364を備える。SATAeエンジン7362は、AHCIエンジン7320、SATAエミュレータ7330、DMA回路7340を備える。特に、DMA回路7340は、データ転送のための送信DMA回路7341(DMA1)、データ受信のための受信DMA回路7342(DMA2)を含む。
【0050】
入出力要求(IO RQ)のプロセスは次のとおりである。入出力要求(IO RQ)が可能であれば、中央処理装置7100はメインメモリ7200に入出力要求(IO RQ)を送信する((1))。入出力要求(IO RQ)に対応するコマンドキュー(command queue)は、コマンドヘッド(command header; CH)/コマンドFIS(command frame information structure; CFIS)、PRDT(physical region descriptor table)、ホストバッファ(host buffer)を含む。PRDTは、ホストに送信されるデータやホストから送信されるデータを格納するメモリ領域の構造体を格納するテーブルである。PRD(physical region descriptor)は、対応するメモリ領域のアドレスとサイズを含む。
【0051】
中央処理装置7100は、入出力要求(IO RQ)のブザー(doorbell)情報をSATAe記憶装置7300に転送する((2))。SATAe記憶装置7300のAHCIエンジン7320にはブザー情報を保存するためのホストレジスタ(例えば、PxCI)を備える。SATAe記憶装置7300は、入出力要求(IO RQ)に応答してFIS関連情報をメインメモリ7200に転送することにより、入出力要求(IO RQ)に対してフェッチする((3))。また、入出力要求(IO RQ)に対応するFISが自主的に更新される((4))。メインメモリ7200とSATAe記憶装置7300との間で送信DMA回路7341及び受信DMA回路7342を介して入出力要求(IO RQ)によるデータ転送がそれぞれ行われる。データ転送が完了すると、SATAe記憶装置7300は中央処理装置7100に割り込みを送信する((5))。中央処理装置7100に割り込みが入力された後、中央処理装置7100は入出力要求が完了した情報をSATAe記憶装置7300に転送する((6))。
【0052】
本発明の実施形態によるコンピューティングシステム7000は、メインメモリ7200とSATAe記憶装置7300との間で入出力要求に基づいて双方向のデータ転送を行うことができる。
図11は
図10に図示されたAHCIエンジン7320に入出力されるデータパケットのPCIヘッダを例示的に示す図である。
図11を参照すると、ABARはAHCIベースアドレスとして、ホスト制御レジスタの開始アドレスはABARに0x0000を加えた値になり、ポートレジスタの開始アドレスはABARに0x0100を加えた値になる。
【0053】
図12は
図10に図示されたAHCIエンジン7320に格納されているホストの制御情報を例示的に示す図である。
図12を参照すると、00h〜03hに対応するホスト制御レジスタはホストの能力情報を保存し、0Ch〜0Fhに対応するホスト制御レジスタは結合されたポート情報を保存する。
【0054】
図13は
図10に図示されたAHCIエンジン7320に保存されているポート情報を例示的に示す図である。
図13を参照すると、00h〜03hに対応するポートレジスタはコマンドリストベースアドレスに対するポート情報を格納し、08h〜0Bhに対応するポートレジスタはFISベースアドレスに対するポート情報を格納し、28h〜2Bhに対応するポートレジスタはSATA状態に対するポートの情報を格納し、38h〜3Bhに対応するポートレジスタはコマンドに対するポート情報を格納する。
【0055】
図14A〜
図14Hは
図10に図示されたAHCIエンジン7320とSATAエミュレータ7330との間に送受信されるFISの規定を例示的に示す図である。
図14A〜
図14Bを参照すると、FISの規定はSATA3.0仕様を満足する。
図14AはFISの種類であり、
図14BはH2DFISレイアウト、
図14CはD2HFISレイアウト、
図14DはPIO Setup FISレイアウト、
図14EはDMA Setup FISレイアウト、
図14Fは、DMA Activate FISレイアウト、
図14GはData FISレイアウト、
図14HはSDB FISレイアウトを示す図である。
【0056】
図15は
図10に示されているメインメモリ7200のホストバッファの構造を例示的に示す図である。
図15を参照すると、ポートレジスタPxCLBはコマンドテーブル(CT)を識別するための複数のコマンドを有するコマンドリスト構造(コマンドキュー)を保存し、ポートレジスタPxFBは入力されたFIS構造を保存する。コマンドリスト構造に対するメインメモリ7200からホストバッファベースアドレスはポートレジスタPxCLBによって識別することができる。FIS構造に対するメインメモリ7200からホストバッファベースアドレスはポートレジスタPxFBによって識別することができる。
【0057】
図16は
図15に図示されたコマンドリストの構造を例示的に示す図である。
図16を参照すると、コマンドヘッダ(command header)のそれぞれはコマンドテーブルのベースアドレス(DW2)とコマンドテーブルのベースアドレスの上位32ビット(DW3)を保存する。
【0058】
図17は
図16に図示されたコマンドテーブルを例示的に示す図である。
図17を参照すると、コマンドテーブルは複数のアイテム(Item0〜ItemCHz[PRDTL]−1)を有するPRDT(physical region descriptor table)を含む。アイテム(Item0〜ItemCHz[PRDTL]−1)のそれぞれはデータベースアドレス(DBA)を含む。データベースアドレス(DBA)はメインメモリ7200のホストバッファに保存される。PRDTはプリフェッチ(prefetching)のために使用される。
【0059】
図18は
図15に図示されたReceived FIS構造を例示的に示す図である。
図18を参照すると、FISはDMAセットアップFIS、PIOセットアップFIS、D2HレジスタFIS、未確認FIS、予備領域を備える。
【0060】
図19は
図10に図示されたコンピューティングシステム7000から実行される読み取りコマンドの過程を例示的に示す図である。
図19を参照すると、AHCIエンジン7320のレジスタPxCIはNCQコマンドを受信し、AHCIエンジン7320はNQQコマンドによるFIS情報をSATAeエミュレータ7330とやりとりし、関連するFIS情報(CH、H2DFIS、PRDテーブルなど)をメインDRAM7200に転送することによってコマンドをフェッチする。その後、SATAeエンジン7362はメインメモリ7200にアクセスすることによってコマンドによる入出力データが転送される。その後、SATAの規定によるDMAセットアップFIS及びSDBFISがSATAeエミュレータ7330からAHCIエンジン7320に転送され、AHCIエンジン7320はこれらをメインメモリ7200に転送する。その後、読み取りの完了情報がAHCIエンジン7320に転送される。