説明

データ記憶装置及びデータ転送制御方法

【課題】データ転送要求の順序を制御することにより、パフォーマンスを効果的に向上できるデータ記憶装置を提供することにある。
【解決手段】NCQ仕様のコマンド処理に伴うデータ転送制御を行なうデータ記憶装置10において、ホストシステム20から通知されるコマンド処理の優先条件に基づいてデータ転送要求の順序を並び替える構成である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ記憶装置に関し、特に、インターフェースのデータ転送制御技術に関する。
【背景技術】
【0002】
近年、ハードディスクドライブ(単にディスクドライブと表記する)やソリッドステートドライブ(SSD:solid state drive)などのデータ記憶装置(以下、総称してドライブと表記する場合がある)では、ホストシステム(ホストコントローラ)とのインターフェースとして、シリアルATA(SATA:Serial AT Attachment)規格のインターフェース(以下、SATAインターフェースと表記する場合がある)が採用されている。ここで、ホストシステムは、例えば、パーソナルコンピュータやデジタルテレビ受信機などである。
【0003】
例えばディスクドライブは、SATAインターフェースを介して、ホストシステムから転送されるライトコマンドやリードコマンド等のコマンドを実行することで、ディスク上にデータを書き込み、又はディスク上からデータを読み出す。
【0004】
シリアルATA規格には、NCQ(native command queuing)と呼ばれるコマンドキューイング(command queuing)仕様が規定されている。このNCQは、ドライブ側で、コマンドバッファに格納(キュー)された複数のコマンドの実行順序を任意に決定できる機能を実現する仕様である。
【0005】
さらに、シリアルATA規格では、NCQ仕様のコマンドの実行に伴うデータ転送制御を行なう仕様として、ドライブ側は、ホストシステムに対するデータ転送要求を行なう場合に、FIS(Frame Information Structure)として定義されているセットアップ・フレームを発行する。このデータ転送要求を、DMA setup FIS要求と表記する。フレームは、シリアルATAインターフェースでのデータ通信を行なうための単位(データ構造)である。
【0006】
ここで、ドライブとホストシステム間のデータ転送には、ライトコマンドの実行に伴うライトデータの転送のようなホストシステム側からのデータ転送、及びリードコマンドの実行に伴うリードデータの転送のようなホストシステム側へのデータ転送がある。
【0007】
このようなデータ転送制御方式において、ホストシステムに対するコマンド終了通知のタイミングを制御することで、ドライブ側のパフォーマンスを向上させるための技術が提案されている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2005−215729号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
データ転送制御技術は、コマンド処理の効率向上に関係し、ドライブ側のパフォーマンスを向上させるための重要な技術である。前述の先行技術の方法だけでは、ドライブ側のパフォーマンスを効果的に向上させるには不十分である。
【0010】
そこで、本発明の目的は、データ転送要求の順序を制御することにより、パフォーマンスを効果的に向上できるデータ記憶装置を提供することにある。
【課題を解決するための手段】
【0011】
本発明の観点に従ったデータ記憶装置は、ホストシステムとの間でコマンド及びデータの転送を行なうためのインターフェース手段と、前記インターフェース手段を介してコマンド処理に伴うデータ転送要求を実行するときに、前記コマンド処理の優先条件に基づいて前記データ転送要求の順序を並び替える制御手段とを備えた構成である。
【発明の効果】
【0012】
本発明によれば、データ転送要求の順序を制御することにより、データ記憶装置のパフォーマンスを効果的に向上することが可能となる。
【図面の簡単な説明】
【0013】
【図1】本発明の実施形態に関するディスクドライブの要部を示すブロック図。
【図2】本実施形態に関するデータ転送制御の概略を説明するためのフローチャート。
【図3】本実施形態に関するコマンドキューの一例を説明するための図。
【図4】本実施形態に関するデータ転送要求テーブルの一例を説明するための図。
【図5】本実施形態に関するデータ転送要求テーブルの一例を説明するための図。
【図6】本実施形態に関するデータ転送要求テーブルの一例を説明するための図。
【図7】本実施形態に関するデータ転送要求テーブルの一例を説明するための図。
【図8】本実施形態に関するデータ転送制御の手順を説明するためのタイミングチャート。
【図9】本実施形態に関するデータ転送制御方法の手順を説明するためのフローチャート。
【図10】他の実施形態に関するデータ転送制御方法を適用する具体例を説明するための図。
【図11】他の実施形態に関するデータ転送制御方法を適用する具体例を説明するための図。
【図12】他の実施形態に関するデータ転送制御方法を適用する具体例を説明するための図。
【図13】他の実施形態に関するデータ転送制御方法を適用する具体例を説明するための図。
【図14】他の実施形態に関するデータ転送制御方法を適用する具体例を説明するための図。
【図15】本実施形態のデータ記憶装置に適用するSSDの要部を示すブロック図。
【発明を実施するための最良の形態】
【0014】
以下図面を参照して、本発明の実施形態を説明する。
【0015】
[ディスクドライブの構成]
図1は、本実施形態に関するデータ記憶装置として、ディスクドライブ10の要部を示すブロック図である。
【0016】
ディスクドライブ10は、図1に示すように、ハードディスクコントローラ(HDC、以下単にディスクコントローラと表記する)11と、メモリ12と、マイクロプロセッサ(CPU)13と、ヘッド・ディスクアセンブリ(HDA)14とを有する。
【0017】
HDA14はデータ記録媒体であるディスク140を含み、当該ディスク140上にデータを磁気的に記録し、かつディスク140上からデータを再生する。HDA14は、ディスク140及びヘッドを駆動するための機構や、ヘッドアンプ及びリード/ライトチャネルなどの回路群を含む。ディスク140上のデータ面は、多数のトラック(シリンダ)が構成されて、各トラックが複数のセクタ(リード/ライト動作のアクセス単位)と呼ばれるデータ記録領域に分割されている。各セクタは、論理ブロックアドレス(LBA)が割り当てられている。ホストシステム20からLBA(n)により、ライトアクセス又はリードアクセスの対象セクタが指定される。
【0018】
ディスクコントローラ11は、シリアルATA(SATA)インターフェース規格のSATAバス100を介してホストシステム20と接続し、NCQ(native command queuing)仕様のコマンド及びデータ(リードデータまたはライトデータ)の転送制御を実行するためのホストインターフェースモジュールを有する。また、ディスクコントローラ11は、HDA14のリード/ライトチャネル間でリードデータ又はライトデータの転送を制御するディスクインターフェースモジュールを有する。
【0019】
メモリ12は、NCQ仕様のコマンドバッファ120及びデータバッファ121を含む。コマンドバッファ120は、ホストシステム20から連続的に転送される複数のコマンドをキュー(queuing)する待ち行列バッファである。データバッファ121は、ホストシステム20から転送されるライトデータを格納するライトバッファ領域及びホストシステム20へ転送するためのリードデータを格納するリードバッファ領域を含む。
【0020】
CPU13は、ドライブ10のメイン制御装置であり、HDA14の制御及びコマンド処理を実行する。HDA14の制御には、ディスク140に対するリード動作及びライト動作の制御、及びヘッドのサーボ制御が含まれる。さらに、CPU13は、後述するように、ホストシステム20との間でコマンドの実行に伴うデータ転送要求(DMA setup FIS要求)の処理を実行する。
【0021】
[データ転送制御]
以下、図2を参照して、本実施形態のディスクドライブ10でのデータ転送制御の概略を説明する。
【0022】
ディスクコントローラ11は、SATAバス100を介してホストシステム20から転送されたコマンド(リード/ライトコマンド)を連続的に受信する(ブロック200)。ディスクコントローラ11は、受信したコマンドをコマンドバッファ120に順次格納(キュー)する(ブロック201)。
【0023】
ここで、CPU13は、NCQ仕様によるコマンド処理を実行する。即ち、CPU13は、コマンドバッファ120にキューされた複数のコマンドの実行順序を設定して、任意のタイミングで実行する。具体的には、CPU13は、コマンドバッファ120にキューされた複数のコマンドをメモリ12に確保されているリオーダリング(reordering)テーブルに登録し、高速に処理できる順序でコマンドを開始する。
【0024】
CPU13は、コマンドの実行に伴うデータ転送要求(DMA setup FIS要求)を、SATAバス100を介してホストシステム20に対して実行する(ブロック202)。このとき、データ転送要求(DMA setup FIS要求)は、メモリ12に確保されているデータ転送要求テーブル(待ち行列バッファ)に登録されている。
【0025】
ホストシステム20は、データ転送要求に応じて、ライトコマンドの場合にはライトデータをHDC11に転送し、またリードコマンドの場合にはHDC11から転送されたリードデータを受信する(ブロック203)。このような一連の動作が、コマンドバッファ120に格納された複数のコマンドの実行が全て完了するまで繰り返される(ブロック204)。
【0026】
さらに、図3から図7、図8のタイミングチャート、及び図9のフローチャートを参照して、本実施形態のデータ転送制御を具体的に説明する。
【0027】
図8に示すように、ホストシステム20は、ドライブ10に対して、データ転送要求(DMA setup FIS要求)順序の優先条件を通知する(800)。ここでは、ホストシステム20は、優先条件として、例えばリードコマンド処理に伴うリードデータ転送の優先を通知する。ディスクコントローラ11は、ホストシステム20に対して了承応答を通知する(801)。次に、ホストシステム20は、NCQ仕様のリード/ライトコマンド群を一度に発行する(802)。
【0028】
ここで、図9のフローチャートを参照して、ディスクドライブ10の処理を説明する。
【0029】
ディスクコントローラ11は、図3に示すように、ホストシステム20から転送されたコマンド群をコマンドバッファ120にキューする。NCQ仕様では、32個までのコマンドの同時制御が可能であり、ホストシステム20から発行される各コマンドには0〜31までのタグ番号(Tag No.)が付加されている。
【0030】
図3に示すテーブルにおいて、「LBA」はアクセス対象のセクタを指定する論理ブロックアドレスである。「Block」は、転送するデータのブロック数である。「Command」はコマンドの種別を示す。ここでは、リードコマンド(Read)とライトコマンド(Write)の2種類とする。
【0031】
CPU13は、図9に示すように、コマンドバッファ120にキューされたコマンドを順次実行する(ブロック900のYES)。このとき、CPU13は、ライトコマンドの場合には、データバッファ121のライトバッファ領域が空き状態であれば、ライトデータの転送要求(DMA setup FIS要求)をデータ転送要求テーブルにキューし、コマンドをリオーダリングテーブルに登録する(ブロック901のYES,902のYES,903,904)。
【0032】
本実施形態では、リードデータの転送要求(DMA setup FIS要求)のデータ転送要求テーブルへのキューは、ディスク140に対するリード動作により転送すべきリードデータがデータバッファ121のリードバッファ領域に準備された時点で行うことを想定している。この場合、CPU13は、リードコマンドの場合には、コマンドのリオーダリングテーブルへの登録のみを行う(ブロック901のNO,904)。
【0033】
本実施形態では、データ転送要求テーブルのキューに2以上の要求がセットされている場合に、CPU13は、以下のように、データ転送要求テーブルの要求順序の並び替え処理を実行する(ブロック905のYES,906)。
【0034】
本実施形態では、前述したように、ホストシステム20は、優先条件としてリードデータ転送の優先を通知することを想定している。この場合、転送すべきリードデータがデータバッファ121のリードバッファ領域に準備されていない場合、CPU13は、図4に示すように、データ転送要求テーブルには、ライトコマンド(図3の300,302)に伴うデータ転送要求のみを登録する。
【0035】
図8に示すように、ディスクコントローラ11は、図4に示すデータ転送要求テーブルの要求順位1位のライトコマンド(300)の実行に伴うライトデータの転送要求(DMA setup FIS要求)をホストシステム20に対して実行する(803)。ホストシステム20は、当該データ転送要求に応じてライトコマンド(300)の処理に必要なライトデータをディスクドライブ10に転送する(804)。このとき、ホストシステム20からディスクコントローラ11までのライトデータの転送が完了するまでに、例えば20msの経過時間を要したとする。
【0036】
この要求順位1位のライトデータの転送中に、図3に示すリードコマンド(301,303)の処理に伴うリードデータがデータバッファ121のリードバッファ領域に準備完了したとする。CPU13は、図5に示すように、データ転送要求テーブルには、リードコマンド(301,303)のデータ転送要求を登録する。ライトデータの転送終了後、データ転送要求テーブルは、図6に示すような状態となる。
【0037】
CPU13は、ホストシステム20からのリードデータ転送の優先に基づいて、図6に示すデータ転送要求テーブルの要求順位を、図7に示すように並べ替え処理を実行する(ブロック906を参照)。次に、ディスクコントローラ11は、図7に示すデータ転送要求テーブルの要求順位の1位に従って、リードコマンド(301)の実行に伴うリードデータの転送要求(DMA setup FIS要求)をホストシステム20に対して実行する(805)。ディスクコントローラ11は、当該データ転送要求に応じてリードコマンド(301)の処理に伴うリードデータをホストシステム20に転送する(806)。
【0038】
さらに、図7に示すデータ転送要求テーブルの要求順位の2位に従って、ディスクコントローラ11は、リードコマンド(303)の実行に伴うリードデータの転送要求(DMA setup FIS要求)をホストシステム20に対して実行する(807)。ディスクコントローラ11は、当該データ転送要求に応じてリードコマンド(303)の処理に伴うリードデータをホストシステム20に転送する(808)。
【0039】
ホストシステム20からの優先条件であるリードデータ転送が完了すると、データ転送要求テーブルの要求順位の3位に従って、ディスクコントローラ11は、ライトコマンド(302)の実行に伴うライトデータの転送要求(DMA setup FIS要求)をホストシステム20に対して実行する(809)。ホストシステム20は、当該データ転送要求に応じてライトコマンド(302)の処理に必要なライトデータをディスクドライブ10に転送する(810)。
【0040】
以上のようにして、ホストシステム20から通知される優先条件として、リードコマンド処理に伴うリードデータ転送を優先する条件に基づいて、ディスクドライブ10は、リードコマンド処理に伴うリードデータ転送を優先するように、データ転送要求テーブルのデータ転送要求の順序を並べ替える処理を実行する。但し、リードデータ転送の準備が完了していない場合には、ライトコマンドの処理に伴うライトデータ転送要求を先行して実行し、準備完了後にデータ転送要求の順序を並べ替える処理を実行する。
【0041】
このようなデータ転送制御方法により、ホストシステム20からの要求に応じてデータ転送要求の順序を制御することで、ディスクドライブ10のコマンド処理の効率を向上し、結果としてドライブ10側のパフォーマンスを向上させることが可能となる。
【0042】
[他の実施形態]
図10から図14は、他の実施形態に関するデータ転送制御方法を説明するための図である。
【0043】
図10は、ホストシステム20から転送されたコマンド群の一例で、リオーダリング(reordering)テーブルに登録した状態を示す図である。図11は、当該コマンド群の処理に伴うデータ転送要求(DMA setup FIS要求)を登録したデータ転送用要求テーブルを示す図である。即ち、CPU13は、図10に示すテーブルのタグ番号0のリードコマンドの処理を開始すると共に、データバッファ121のライトバッファ領域が十分空いているという条件で、例えばタグ番号1、2、4〜6のライトコマンドに伴うDMA setup FIS要求をキューに登録する。
【0044】
図12(A)〜(E)はそれぞれ、ホストシステム20からの要求または予め設定されるコマンド処理の優先条件に基づいて、データ転送要求テーブルの要求順序の並べ替え処理を実行した結果を示す図である。
【0045】
まず、前述と同様にリードデータ転送を優先する条件では、CPU13は、図12(A)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。ここでは、リードデータ転送の準備ができていないため、データ転送用要求テーブルにはライトコマンドに伴うライトデータ転送要求のみしか登録されていない。なお、ホストシステム20は、リードコマンドをライトコマンドよりも優先して処理すると、次のコマンド処理を早く決定できるためパフォーマンスが向上する。
【0046】
次に、転送ブロック数の小さいコマンドを優先する条件では、CPU13は、図12(B)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。この場合、ディスクドライブ10では、単位時間当たりに処理できるコマンド数が増大する。このため、ホストシステム20は、多数のコマンドを新規に発行できることになる。
【0047】
逆に、転送ブロック数の大きいコマンドを優先する条件では、CPU13は、図12(C)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。ライトコマンド処理では、ホストシステム20からのライトデータ転送が完了すると、ディスクドライブ10はライトバッファ領域のライトデータをディスク1401上に書き込む。このとき、転送ブロック数の大きい分だけ、ライトバッファ領域を空けることができる。
【0048】
さらに、シーケンシャルのコマンドを優先する条件では、CPU13は、図12(D)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。この場合、ホストシステム20上のあるプロセスが要求したシーケンシャルのディスクアクセス要求が、ディスクドライブ10へのコマンド発行以前に分断されていたような場合、ホストシステム20は次のコマンド処理を早く決定できる。
【0049】
さらに、ホストシステム20からのコマンド発行からの時間経過が長いコマンドを優先する条件では、CPU13は、図12(E)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。但し、ここでは、データ転送用要求テーブルの状態は、図12(A)に示す状態と同じになる。この場合、ホストシステム20側でのタイムアウトを防止し、全体のパフォーマンスの低下を回避することが可能となる。
【0050】
図13は、データ転送要求が処理された後に、例えば2つのリードコマンド(タグ番号3,7)が登録されたデータ転送要求テーブルを示す図である。このような状態において、図14(A)〜(E)を参照して、データ転送要求テーブルの要求順序の並べ替え処理の具体例を説明する。
【0051】
リードデータ転送を優先する条件では、CPU13は、図14(A)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。即ち、データ転送用要求テーブルは、2つのリードコマンド(タグ番号3,7)のデータ転送用要求順序が1位と2位になるように並べ替え処理される。前述と同様に、転送ブロック数の小さいコマンドを優先する条件では、CPU13は、図14(B)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。逆に、転送ブロック数の大きいコマンドを優先する条件では、CPU13は、図14(C)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。さらに、シーケンシャルのコマンドを優先する条件では、CPU13は、図14(D)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。さらに、ホストシステム20からのコマンド発行からの時間経過が長いコマンドを優先する条件では、CPU13は、図14(E)に示すように、データ転送用要求テーブルの並べ替え処理を実行する。なお、このようなデータ転送用要求テーブルの並べ替え処理においても、前述と同様の効果を得ることができる。
【0052】
[SSDの構成]
本実施形態では、データ記憶装置としてディスクドライブ10を適用する場合について説明したが、これに限ることなく、図15に示すようなソリッドステートドライブ(SSD:solid state drive)30にも適用できる。
【0053】
SSD30は、データ記録媒体としてフラッシュメモリ32を使用するデータ記憶装置であり、ホストシステム20とSATAバス100を介して接続するコントローラ31を含む。コントローラ31は、図1に示すディスクドライブ10のディスクコントローラ11及びCPU13に相当する機能を有し、本実施形態に関するNCQ仕様のコマンド処理及びデータ転送要求順序の並べ替え処理などを実行する。
【0054】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0055】
10…ディスクドライブ、11…ハードディスクコントローラ(HDC)、
12…メモリ、13…マイクロプロセッサ(CPU)、
14…ヘッド・ディスクアセンブリ(HDA)、20…ホストシステム、
30…ソリッドステートドライブ(SSD)、31…コントローラ、
32…フラッシュメモリ、100…シリアルATAバス、
120…コマンドバッファ、121…データバッファ、140…ディスク。

【特許請求の範囲】
【請求項1】
ホストシステムとの間でコマンド及びデータの転送を行なうためのインターフェース手段と、
前記インターフェース手段を介してコマンドの処理に伴うデータ転送要求を実行するときに、前記コマンド処理の優先条件に基づいて前記データ転送要求の順序を並び替える制御手段と
を具備したことを特徴とするデータ記憶装置。
【請求項2】
前記優先条件は、リードコマンドを優先して実行する条件であって、前記ホストシステムに対してリードデータを転送するためのデータ転送要求の順序を優先させるための条件であることを特徴とする請求項1に記載のデータ記憶装置。
【請求項3】
前記優先条件は、相対的に転送データ量の小さいコマンドを優先して実行する条件であることを特徴とする請求項1に記載のデータ記憶装置。
【請求項4】
前記優先条件は、相対的に転送データ量の大きいコマンドを優先して実行する条件であることを特徴とする請求項1に記載のデータ記憶装置。
【請求項5】
前記優先条件は、シーケンシャル・アクセスのコマンドを優先して実行する条件であることを特徴とする請求項1に記載のデータ記憶装置。
【請求項6】
前記優先条件は、前記ホストシステムの発行からの時間経過が長いコマンドを優先して実行する条件であることを特徴とする請求項1に記載のデータ記憶装置。
【請求項7】
前記制御手段は、
前記インターフェース手段を介して前記ホストシステムから通知された前記優先条件に基づいて、前記データ転送要求の順序を並び替えることを特徴とする請求項1から請求項6のいずれか1項に記載のデータ記憶装置。
【請求項8】
前記制御手段は、
前記コマンドの実行準備の完了に応じてデータ転送要求をキューし、前記優先条件に基づいて前記データ転送要求の待ち行列順序を変更することを特徴とする請求項1から請求項7のいずれか1項に記載のデータ記憶装置。
【請求項9】
前記インターフェース手段は、シリアルATAインターフェース規格に基づいたデータ転送制御を実行する構成であることを特徴とする請求項1から請求項8のいずれか1項に記載のデータ記憶装置。
【請求項10】
データ記憶装置に含まれて、ホストシステムとの間でコマンド及びデータの転送を行なうシリアルインターフェース手段と、
前記シリアルインターフェース手段を介してコマンド処理に伴うデータ転送要求を実行するときに、前記コマンド処理の優先条件に基づいて前記データ転送要求の順序を並び替える制御手段と
を具備したことを特徴とするデータ転送制御装置。
【請求項11】
データ記憶装置とホストシステムとを接続するシリアルインターフェースを介してコマンド及びデータの転送を制御するデータ転送制御方法であって、
前記シリアルインターフェースを介して、前記ホストシステムから転送されたコマンドを受信する処理と、
コマンド処理に伴うデータ転送要求を実行するときに、前記コマンド処理の優先条件に基づいて前記データ転送要求の順序を並び替える処理と
を有することを特徴とするデータ転送制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate