(57)【要約】【課題】通信効率を可及的に高めること。【解決手段】本発明の一つの実施形態によれば、通信路を介してストレージデバイスに接続されたホストシステムは、アプリケーション部と、通信インタフェース部とを備える。前記アプリケーション部は、前記ストレージデバイスへのコマンドを発行する。前記通信インタフェース部は、予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行する。また、前記通信インタフェース部は、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する。さらに、通信インタフェース部は、前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する。【選択図】図９
2014048810.tif 000002
【特許請求の範囲】
【請求項１】
通信路を介してストレージデバイスに接続されたホストシステムであって、
前記ストレージデバイスへのコマンドを発行するアプリケーション部と、
予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行し、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する通信インタフェース部と、
を備え、
前記通信インタフェース部は、さらに、
前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する、
ことを特徴とするホストシステム。
【請求項２】
前記付随処理は、プリミティブを用いたハンドシェイク処理である、
ことを特徴とする請求項１に記載のホストシステム。
【請求項３】
通信路を介してホストシステムに接続されたストレージデバイスであって、
予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ホストシステムとの間で実行し、前記ホストシステムから自ストレージデバイスに対するコマンドをコマンド毎に一単位の転送処理を実行して受信する通信インタフェース部と、
前記通信インタフェース部が受信したコマンドを解析し、実行する解析・実行部と
を備え、
前記通信インタフェース部は、さらに、複数のコマンドを含むパケットをパケット毎に一単位の転送処理で受信し、当該受信したパケットに含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドを前記解析・実行部に渡す、
を備えることを特徴とするストレージデバイス。
【請求項４】
キューをさらに備え、
前記通信インタフェース部は、前記受信したパケットから取り出した複数のコマンドを前記キューに格納し、
前記解析・実行部は、前記キューに格納された複数のコマンドをアウトオブオーダー実行する、
ことを特徴とする請求項３に記載のストレージデバイス。
【請求項５】
前記付随処理は、プリミティブを用いたハンドシェイク処理である、
ことを特徴とする請求項３または請求項４に記載のストレージデバイス。
【請求項６】
互いに通信路で接続され、転送処理毎に予め定められた一単位の付随処理を含む転送処理を実行して互いに通信する、ホストシステムとストレージデバイスとの間の通信方法であって、
前記ホストシステムは、前記ストレージデバイスへの複数のコマンドを生成し、前記生成した複数のコマンドを格納した一つのパケットを作成し、前記一つのパケットを前記一単位の転送処理で前記ストレージデバイスに送信し、
前記ストレージデバイスは、前記一単位の転送処理で一つのパケットを受信したとき、当該受信したパケットに含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドの夫々を順次実行する、
ことを特徴とする通信方法。
【請求項７】
前記ストレージデバイスは、前記パケットから取り出した複数のコマンドをアウトオブオーダー実行する、
ことを特徴とする請求項６に記載の通信方法。
【請求項８】
前記付随処理は、プリミティブを用いたハンドシェイク処理である、
ことを特徴とする請求項６または請求項７に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ホストシステム、ストレージデバイス、および通信方法に関する。
【背景技術】
【０００２】
コンピュータなどのホストシステムとＨＤＤ、ＳＳＤなどのストレージデバイスとをつなぐ通信路の速度は近年非常に高速になってきている。例えば第二世代のSATA（Serial  Advanced  Technology  Attachment）規格は、3.0Gbps(300MB/s)までの通信速度を定めている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１９０２０２号公報
【特許文献２】特開２００７−２３３９９８号公報
【特許文献３】特開２０１０−９２４９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、通信効率が可及的に高いホストシステム、ストレージデバイス、および通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、通信路を介してストレージデバイスに接続されたホストシステムは、アプリケーション部と、通信インタフェース部とを備える。前記アプリケーション部は、前記ストレージデバイスへのコマンドを発行する。前記通信インタフェース部は、予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行する。また、前記通信インタフェース部は、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する。さらに、通信インタフェース部は、前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する。
【図面の簡単な説明】
【０００６】
【図１】図１は、ホストとストレージとの間のSATA規格に基づく通信手順の概略を示す図である。
【図２】図２は、FISのフレーム構造を説明する図である。
【図３】図３は、FISの送信手順をより詳しく示す図である。
【図４】図４は、実施形態のホストの動作の概略を説明する図である。
【図５】図５は、実施形態のストレージの動作の概略を説明する図である。
【図６】図６は、実施形態のフレームの構成を説明する図である。
【図７】図７は、実施形態のホストシステムおよびストレージデバイスの構成を示す図である。
【図８】図８は、パケットの詳細なデータ構造を説明する図である。
【図９】図９は、ストレージが備える通信制御部の動作を説明するフローチャートである。
【図１０】図１０は、コントローラの動作を説明するフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるホストシステム、ストレージデバイス、および通信方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
まず、図１〜図３を参照して、SATA規格に準拠して行われる、ホストシステムとストレージデバイスとの間の通信の一例について概略的に説明する。図１は、ホストシステム（以降、ホスト）とストレージデバイス（以降、ストレージ）との間のSATA規格に基づいて実行されるトランスポート層レベルの通信手順の概略を示す図である。各矢印は一つのFISを示す。なお、ここでは、ホストがストレージに対してユーザデータを書き込む場合の例を示している。
【０００９】
図１に示すように、ホストは、ライトコマンドを格納したRegister  Host  to  Device（Reg  HD）というFISをストレージに送る。SATA規格によれば、FIS（Frame  Information  Structure）とよばれるデータ構造を用いてホストとストレージとの間で通信が行われる。SATA規格によれば、８種類のFISが規定されている。Reg  HD  FISは、FISのうちの一つであって、ホストがストレージに対してコマンドを発行するときに使用されるFISである。なお、以降、Reg  HD  FISのうちのリード／ライトコマンドが格納されたReg  HD  FISをコマンドFISと表記することがある。
【００１０】
ストレージは、Reg  HD  FISに格納されたライトコマンドを受信すると、Clear  Interface  Busyというステータス情報を格納したRegister  Device  to  Host（Reg  DH）というFISをホストに送信して、ストレージとホストとの間の通信路を開放する。そして、ストレージは、ライトコマンドの実行準備が整うと、DMA  Setup  FISというFISを用いて当該ライトコマンドのデータ送信指示をホストに通知する。なお、SATA規格によれば、ストレージが、リード／ライトコマンドをキューに格納し、当該キューに格納されたリード／ライトコマンドを効率の良い順番に並べ替えて実行（アウトオブオーダー実行）をすることができる、NCQ（Native  Command  Queuing）と呼ばれる機能が規定されている。NCQ機能によれば、ストレージは、ホストから受信したリード／ライトコマンドを３２個までキューに格納することができる。ストレージは、キューに格納したリード／ライトコマンドのうちの実行準備が整ったコマンドを特定する情報（コマンド識別情報、以降、単にtag）をDMA  Setup  FISに格納して送信することによって、実行開始対象のコマンドを指定することができる。
【００１１】
DMA  Setup  FISを受信すると、ライトコマンド（正確には、DMA  Setup  FISにより指定されたライトコマンド）にかかるライトデータをData  FISというFISを用いて送信する。Data  FISは、最大で2048Dword（＝8192バイト）のデータを格納することができるFISである。図１には示されないがライトデータのサイズが2048Dwordを越える場合はデバイスからホストにDMA  Activate  FISという別のFISを送信することでホストは後続のData  FISを送信することができる。
【００１２】
ストレージは、ライトデータの受信を完了すると、ステータス情報（status）をSet  Device  BitsというFISに格納してホストに送信する。
【００１３】
図２は、トランスポート層のデータであるFISをデータリンク層におけるフレームが搭載する構造を説明する図であり、図３は、ホストシステムからストレージデバイスへの一つのFISの送信手順をデータリンク層の視点から示す図である。図２に示すように、FIS１００は、FIS１００の送信開始を示すプリミティブであるSOF１１０、FIS１００の誤り検出に用いられるCRC１２０、およびFIS１００の送信終了を示すプリミティブであるEOF１３０とともにフレーム２００を構成する。当該フレーム２００が送信される前には、図３に示すように、ホストとストレージとの間でプリミティブ「X_RDY」とプリミティブ「R_RDY」とによるハンドシェイクが行われる。なお、図３では簡略化して示しているが、X_RDY、Y_RDYは、相手から応答があるまで何度も繰り返し送信される。ハンドシェイクが完了すると、フレーム２００が送信され、その後、フレーム２００を受信したストレージから、フレーム２００の送信に対するプリミティブ「R_OK」または「R_NG」を送信する。
【００１４】
SATA規格によれば、下位側から物理層、リンク層、トランスポート層の３層の構造が定義されている。トランスポート層は、さらに上位の層（例えばＯＳ）からの要求に基づいてFIS１００を生成し、生成したFIS１００をリンク層に送る。なお、トランスポート層に対して要求を行う層を、アプリケーション層と呼ぶこともある。例えば、アプリケーション層がリード／ライトコマンドを生成した場合、トランスポート層は、生成されたリード／ライトコマンドを格納したReg  HD（即ちコマンドFIS）を生成する。リンク層は、トランスポート層から送られてきたFIS１００からCRC１２０を生成して、当該コマンドFIS１００にSOF１１０、生成したCRC１２０、EOF１３０を付加し、フレーム２００を生成する。物理層は、リンク層で生成されたフレーム２００を差動信号として送信する。なお、X_RDY、R_RDYなど、SOF１１０、EOF１３０以外のプリミティブも、リンク層の制御の下で物理層によって送受信される。なお、以降、FIS１００としてコマンドFISについてのみ説明するので、コマンドFISを符号１００を付して表記することとする。
【００１５】
コマンドFIS１００は、5DWORDのサイズのデータ構造を有する。第二世代のSATA規格によれば、コマンドFIS１００自体の送信は、正味66ns程度で終了する。しかしながら、コマンドFIS１００の送信を行うための一単位の転送処理は、上述したように、コマンドFIS１００自体の転送のほかに、X_RDY、R_RDY、SOF１１０、CRC１２０、およびEOF１３０の送受信のように、予め定められた一連の付随処理を含んでいる。これらの一連の付随処理を一単位の付随処理とすると、一単位の転送処理は必ず一単位のみの付随処理を含む。この付随処理がオーバヘッドとなって、典型的にはコマンドFIS１００の送信にかかる転送処理は1.1us程度の時間を要する。この転送処理の全期間にわたり通信路が活線状態に維持されるため、時間、消費電力の両方の観点から無駄が多い。即ち、通信効率が悪い。
【００１６】
そこで、本発明の実施形態によれば、複数のコマンドFIS１００を一つのパケットにまとめ、一つのパケットを一単位の転送処理で送受信されるようにした。図４〜図６を参照して、本発明の実施形態の概略を説明する。
【００１７】
図４は、ホストの動作の概略を説明する図である。ホストは、アプリケーション層において３２個のコマンド（リード／ライトコマンド）を発行した場合、トランスポート層において、当該３２個のコマンドから夫々コマンドFIS１００を生成し、これらのコマンドFIS１００をヘッダ３１０とともに一つのデータ構造に格納する。複数のコマンドFIS１００が格納されるデータ構造をパケット（パケット３００）ということとする。ホストは、リンク層において、当該パケット３００にSOF１１０、CRC１２０、EOF１３０を付加して、図６に示す本発明の実施形態のフレーム４００を生成する。リンク層は、各プリミティブの制御を行ってハンドシェイクを行った後、当該フレーム４００を物理層を介してストレージに送信する。
【００１８】
図５は、ストレージの動作の概略を説明する図である。ストレージは、物理層においてフレーム４００を受信すると、リンク層においてパケット３００を取り出す。そして、ストレージは、トランスポート層において、パケット３００に含まれる３２個のコマンドFIS１００を取り出す。取り出された３２個のコマンドFIS１００はキューに格納され、アウトオブオーダー実行される。
【００１９】
図７は、本発明の実施形態を適用したホストシステムおよびストレージデバイスの構成を示す図である。図示するように、ストレージデバイス（ストレージ）１は、ホストシステム（ホスト）２とSATA規格に準拠した通信路３で接続され、ホスト２の外部記憶装置として機能する。なお、ホスト２は、例えば携帯電話やパーソナルコンピュータであってよい。また、ストレージ１は、HDD（Hard  disk  drive）やSSD（Solid  State  Drive）であってよい。
【００２０】
ホスト２は、通信制御部２０、アプリケーション２２、および通信制御部２０を含むホスト２のハードウェア資源をソフトウェアが実行するための環境をアプリケーション２２に提供するオペレーティングシステム（ＯＳ）２１を備えている。
【００２１】
ＯＳ２１およびアプリケーション２２の機能は、演算装置および記憶装置を備えたコンピュータにより実現される。具体的には、ＯＳ２１およびアプリケーション２２の機能は、記憶装置に予め格納される対応するプログラムが演算装置により読み出されて実行されることによって、夫々実現する。
【００２２】
アプリケーション２２は、ＯＳ２１に対して、ファイル名を指定してリード／ライト要求を行う。
【００２３】
ＯＳ２１は、アプリケーション層（アプリケーション部）としての機能を有している。例えば、ＯＳ２１は、アプリケーション２２が発行したリード／ライト要求したファイルの格納先の領域の先頭アドレスとファイルのサイズとを求め、求めた先頭アドレスとサイズとを含むリード／ライトコマンドを生成する。
【００２４】
通信制御部２０は、通信路３の接続インタフェースであって、ここでは一例として、トランスポート層以下の層を制御する機能を有している。即ち、ホスト２の通信インタフェース部として機能する。具体的には、通信制御部２０は、ＯＳ２１からコマンドが複数発行されたとき、複数のコマンドの夫々からコマンドFIS１００を生成し、生成したコマンドFIS１００を複数まとめてパケット３００を生成する。そして、パケット３００からフレーム４００を生成し、生成したフレーム４００を一単位の転送処理で通信路３に送出する。
【００２５】
図８は、パケット３００の詳細なデータ構造を説明する図である。図示するように、パケット３００は、３２個のコマンドFIS１００と、ヘッダ３１０とを備えている。
【００２６】
ヘッダ３１０は、1DWORD（＝4バイト）のサイズを有しており、３２個のコマンドFIS１００は、夫々5DWORDのサイズを有しているので、パケット３００は全部で161DWORDのサイズを有する。ヘッダ３１０は、1バイトのサイズで記述されるパケット識別情報３１１を含んでいる。パケット識別情報３１１は、このヘッダ３１０およびこのヘッダ３１０に後続する内容が161DWORDのサイズを有するパケット３００のデータ構造を構成することを示す情報である。図８では、一例として、「C7h」という値がパケット識別情報３１１として機能する。
【００２７】
個々のコマンドFIS１００は、コマンド識別情報、FIS種類情報、先頭アドレス、データサイズ、およびコマンド識別情報（tag）を含んでいる。コマンド識別情報は、コマンドの種別（リードコマンドであるかライトコマンドであるか等）を示す情報である。FIS種類情報は、自コマンドFIS１００が前述した8種類のFISのうちのどの種類のFISであるかを示す情報である。先頭アドレスは、アクセス先の領域の先頭のアドレスを示しており、LBA（Logical  Block  Addressing）の形式で記述される。また、データサイズは、アクセス対象のデータのサイズを示しており、セクタ数（Sector  Counts；SC）で表現される。コマンド識別情報（tag）は、キューに格納される３２個のコマンドの夫々を識別するための情報である。
【００２８】
図７に戻り、ストレージ１は、通信制御部１０、コントローラ１１、および１以上の記憶部（ここでは記憶部１２ａ〜１２ｎ）を備えている。通信制御部１０、コントローラ１１、および記憶部１２ａ〜１２ｎは、バスで互いに接続されている。
【００２９】
記憶部１２ａ〜１２ｎは、ホスト２からのライトデータを記憶する不揮発性の記憶装置である。例えば本発明の実施形態のストレージ１がSSDに適用される場合には、記憶部１２ａ〜１２ｎの夫々は、メモリセルアレイを搭載するメモリチップに相当する。
【００３０】
通信制御部１０は、通信路３の接続インタフェースであって、ここでは一例として、リンク層および物理層を制御する機能を有している。通信制御部１０は、通信路３を介して一単位の転送処理で受信したフレーム４００からパケット３００を取り出して、取り出したパケット３００をコントローラ１１に送る。
【００３１】
コントローラ１１は、ストレージ１の全体の制御を行う。また、コントローラ１１は、通信路３のトランスポート層の制御機能と、アプリケーション層の機能を有している。なお、通信制御部１０と、コントローラ１１のトランスポート層の制御機能とは、協働して、ストレージ１の通信インタフェース部を構成する。
【００３２】
コントローラ１１は、トランスポート層の制御機能として、パケット３００から複数のコマンドFIS１００を取り出して、取り出した夫々のコマンドFIS１００に格納されているコマンドをキュー（図示せず）に格納するパケット分解部１３と、アプリケーション層の機能として、キューに格納されたコマンドFIS１００を解析・実行する解析・実行部１４とを備えている。
【００３３】
なお、コントローラ１１の機能は、典型的には演算装置および記憶装置を備えたコンピュータと同等のハードウェア構成により実現される。具体的には、コントローラ１１は、自身が有する記憶装置あるいは記憶部１２ａ〜１２ｎに予め記憶するファームウェアを演算装置が実行することによって上述の機能を実現する。
【００３４】
次に、本発明の実施形態のホスト２およびストレージ１の動作を説明する。
【００３５】
上述したように、ＯＳ２１が複数のコマンドを発行すると、通信制御部２０は、発行された複数のコマンドから一つのパケット３００を生成することができる。図９は、ストレージ１が備える通信制御部２０の動作を説明するフローチャートである。
【００３６】
通信制御部２０は、まず、発行されたコマンド数は0個であるか否か（ステップＳ１）、および発行されたコマンド数は１個であるか否かを判定する（ステップＳ２）。発行されたコマンド数が0個である場合には（ステップＳ１、Ｙｅｓ）、通信制御部２０は、動作を終了する。発行されたコマンド数が１個である場合には（ステップＳ１、Ｎｏ、ステップＳ２、Ｙｅｓ）、通信制御部２０は、発行された１つのコマンドからコマンドFIS１００を生成して、当該生成したコマンドFIS１００を単独で送信する（ステップＳ３）。即ち、通信制御部２０は、コマンドFIS１００から図２に示したフレーム２００を生成し、生成したフレーム２００をストレージ１に送信する。ステップＳ３の処理の後、通信制御部２０は動作を終了する。
【００３７】
発行されたコマンド数が２個以上である場合には（ステップＳ１、Ｎｏ、ステップＳ２、Ｎｏ）、通信制御部２０は、まず、空のパケット３００を生成する（ステップＳ４）。空のパケット３００とは、ヘッダ３１０のみ有し、コマンドFIS１００が格納されていないパケット３００をいう。
【００３８】
そして、通信制御部２０は、ステップＳ５〜ステップＳ７のループ処理を実行して、発行されたコマンドをステップＳ４の処理により作成されたパケット３００に格納していく。具体的には、通信制御部２０は、パケット３００に未格納のコマンドがあるか否かを判定する（ステップＳ５）。未格納のコマンドがある場合には（ステップＳ５、Ｙｅｓ）、通信制御部２０は、パケット３００が３２個のコマンドを格納しているか否かを判定する（ステップＳ６）。パケット３００が３２個のコマンドを格納していない場合（ステップＳ６、Ｎｏ）、通信制御部２０は、パケット３００にコマンドを１つ追加する（ステップＳ７）。即ち、通信制御部２０は、未格納のコマンドを１つ選択し、選択したコマンドからコマンドFIS１００を生成し、生成したコマンドFIS１００をパケット３００に格納する。通信制御部２０は、ステップＳ７の処理の後、ステップＳ５の判定処理を実行する。
【００３９】
未格納のコマンドがない場合（ステップＳ５、Ｎｏ）、またはパケット３００が３２個のコマンドを格納している場合（ステップＳ６、Ｙｅｓ）、通信制御部２０は、パケット３００をストレージ１に送信する（ステップＳ８）。即ち、通信制御部２０は、パケット３００から図６に示したフレーム４００を生成し、生成したフレーム４００をストレージ１に送信する。ステップＳ８の処理の後、通信制御部２０は動作を終了する。
【００４０】
ストレージ１では、通信制御部１０は、コマンドFIS１００が格納されたフレーム２００を通信路３を介して受信すると、受信したフレーム４００からコマンドFIS１００を取り出してパケット分解部１３に送る。また、通信制御部１０は、パケット３００が格納されたフレーム４００を通信路３を介して受信すると、受信したフレーム４００からパケット３００を取り出してパケット分解部１３に送る。
【００４１】
図１０は、コントローラ１１の動作を説明するフローチャートである。コントローラ１１では、パケット分解部１３は、まず、通信制御部１０から送られてきた内容はパケット３００であるか否かを判定する（ステップＳ１１）。通信制御部１０から受信した内容がパケット３００ではなく１個のコマンドFIS１００である場合には（ステップＳ１１、Ｎｏ）、パケット分解部１３は、当該コマンドFIS１００をキューを介して解析・実行部１４に送り、解析・実行部１４は、送られてきたコマンドFIS１００を解析・実行する（ステップＳ１２）。
【００４２】
通信制御部１０から送られてきた内容はパケット３００である場合には（ステップＳ１１、Ｙｅｓ）、パケット分解部１３は、ステップＳ１３、ステップＳ１４のループ処理を実行して、送られてきたパケット３００を分解する。即ち、パケット分解部１３は、ステップＳ１３において、パケット３００が空であるか否かを判定する（ステップＳ１３）。パケット３００が空でない場合には（ステップＳ１３、Ｎｏ）、パケット分解部１３は、パケット３００からコマンドFIS１００を一つ取り出して（ステップＳ１４）、ステップＳ１３の判定処理を再び実行する。ステップＳ１４の処理においては、パケット分解部１３は、取り出したコマンドFIS１００をキューに格納する。パケット３００が空になった場合（ステップＳ１３、Ｙｅｓ）、解析・実行部１４は、ステップＳ１２の処理において、キューに格納された複数のコマンドFIS１００を解析・実行する。なお、解析・実行部１４がコマンドFIS１００を解析・実行するとは、キューに複数のコマンドFIS１００が格納されている場合に、これらのコマンドFIS１００をアウトオブオーダー実行することを含む。ステップＳ１２の処理の後、コントローラ１１は、通信にかかる処理を終了する。
【００４３】
なお、以上の説明においては、本発明の実施形態によればパケット３００の生成およびパケット３００の分解はトランスポート層において実行されるとして説明するが、双方または一方は必ずしもトランスポート層で実行されなくてもよい。パケット３００の生成またはパケット３００の分解は、例えばリンク層で実行されてもよい。
【００４４】
また、ストレージ１の通信インタフェース部としての機能は、ハードウェア（通信制御部１０）とソフトウェア（コントローラ１１）との組み合わせにより実現されるものとして説明したが、ハードウェアのみにより実現されるようにしてもよいし、ソフトウェアのみにより実現されるようにしてもよい。
【００４５】
同様に、ホスト２の通信インタフェース部としての機能は、ハードウェア（通信制御部２０）により実現されるものとして説明したが、ホスト２の通信インタフェース部としての機能のうちの一部または全部をソフトウェアにより実現されるようにしてもよい。
【００４６】
また、パケット３００は、最大で３２個のコマンドFIS１００を格納できるものとして説明したが、パケット３００が格納できるコマンドFIS１００の最大数は３２個に限定されない。パケット３００が格納できるコマンドFIS１００の最大数をストレージ１側のキューに格納できる最大数と同一の値とすることによって、NCQ機能を有効活用することができる。
【００４７】
また、通信路３はSATA規格に準拠するものとして説明したが、本発明の実施形態は、ストレージ１とホスト２との間の通信路が一単位の転送処理に一単位の付随処理が必要となる規格であればどのような通信規格に準拠する場合であっても適用可能である。例えば、通信路３がSAS規格に準拠するものであってもよい。なお、通信路３にSATA規格が適用されている場合には、物理層を変更せず、リンク層以上の設計変更によって本実施形態を適用することができる。
【００４８】
以上述べたように、本発明の実施形態によれば、ホスト２は、ストレージ１へのコマンドを発行するＯＳ２１と、予め定められた一単位の付随処理を一単位毎に含む転送処理をストレージ１との間で実行し、ＯＳ２１が発行したコマンドをコマンド毎に一単位の転送処理を実行してストレージ１に送信する通信制御部２０と、を備える。そして、通信制御部２０は、さらに、ＯＳ２１が複数のコマンドを発行したとき、複数のコマンドを一つのパケット３００に格納し、当該パケット３００を一単位の転送処理でストレージ１に送信する。ホスト２は、複数のコマンドを格納したパケット３００を一単位の転送処理で送信することができるので、コマンド毎に一単位の転送処理を実行する場合に比べて一単位の転送処理のうちの付随処理が占める時間の割合を小さくすることができる。即ち、通信効率が可及的に高いホスト２を得ることができる。
【００４９】
また、ストレージ１は、予め定められた一単位の付随処理を一単位毎に含む転送処理をホスト２との間で実行し、ホスト２から自ストレージ１に対するコマンドをコマンド毎に一単位の転送処理を実行して受信する通信インタフェース部としての通信制御部１０およびパケット分解部１３と、通信インタフェース部が受信したコマンドを解析し、実行する解析・実行部１４とを備える。そして、通信制御部１０は、さらに、複数のコマンドを含むパケット３００をパケット３００毎に一単位の転送処理で受信する。パケット分解部１３は、当該受信したパケット３００に含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドを解析・実行部１４に渡す。これにより、ストレージ２は、複数のコマンドを格納したパケット３００を一単位の転送処理で受信することができるので、コマンド毎に一単位の転送処理を実行する場合に比べて一単位の転送処理のうちの付随処理が占める時間の割合を小さくすることができる。即ち、通信効率が可及的に高いストレージ１を得ることができる。
【００５０】
また、ストレージ１は、パケット分解部１３は、パケット３００から取り出した複数のコマンドをキューに格納し、解析・実行部１４は、キューに格納された複数のコマンドをアウトオブオーダー実行するので、NCQ機能を利用した効率のよい通信をホスト２との間で実行することができる。
【００５１】
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５２】
１  ストレージデバイス、２  ホストシステム、３  通信路、１０  通信制御部、１１  コントローラ、１２  記憶部、１３  パケット分解部、１４  解析・実行部、２０  通信制御部、２１  オペレーティングシステム、２２  アプリケーション、２００，４００  フレーム、３００  パケット、３１０  ヘッダ、３１１  パケット識別情報、１００  FIS。
【図１】
2014048810.tif 000003
【図２】
2014048810.tif 000004
【図３】
2014048810.tif 000005
【図４】
2014048810.tif 000006
【図５】
2014048810.tif 000007
【図６】
2014048810.tif 000008
【図７】
2014048810.tif 000009
【図８】
2014048810.tif 000010
【図９】
2014048810.tif 000011
【図１０】
2014048810.tif 000012