JP2014048810A - ホストシステム、ストレージデバイス、および通信方法 - Google Patents
ホストシステム、ストレージデバイス、および通信方法 Download PDFInfo
- Publication number
- JP2014048810A JP2014048810A JP2012190192A JP2012190192A JP2014048810A JP 2014048810 A JP2014048810 A JP 2014048810A JP 2012190192 A JP2012190192 A JP 2012190192A JP 2012190192 A JP2012190192 A JP 2012190192A JP 2014048810 A JP2014048810 A JP 2014048810A
- Authority
- JP
- Japan
- Prior art keywords
- storage device
- unit
- packet
- command
- commands
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 105
- 238000000034 method Methods 0.000 title claims description 49
- 238000012546 transfer Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 30
- 239000000284 extract Substances 0.000 claims description 9
- 230000006870 function Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 9
- 238000000354 decomposition reaction Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Communication Control (AREA)
Abstract
【課題】通信効率を可及的に高めること。
【解決手段】本発明の一つの実施形態によれば、通信路を介してストレージデバイスに接続されたホストシステムは、アプリケーション部と、通信インタフェース部とを備える。前記アプリケーション部は、前記ストレージデバイスへのコマンドを発行する。前記通信インタフェース部は、予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行する。また、前記通信インタフェース部は、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する。さらに、通信インタフェース部は、前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する。
【選択図】図9
【解決手段】本発明の一つの実施形態によれば、通信路を介してストレージデバイスに接続されたホストシステムは、アプリケーション部と、通信インタフェース部とを備える。前記アプリケーション部は、前記ストレージデバイスへのコマンドを発行する。前記通信インタフェース部は、予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行する。また、前記通信インタフェース部は、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する。さらに、通信インタフェース部は、前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する。
【選択図】図9
Description
本発明の実施形態は、ホストシステム、ストレージデバイス、および通信方法に関する。
コンピュータなどのホストシステムとHDD、SSDなどのストレージデバイスとをつなぐ通信路の速度は近年非常に高速になってきている。例えば第二世代のSATA(Serial Advanced Technology Attachment)規格は、3.0Gbps(300MB/s)までの通信速度を定めている。
本発明の一つの実施形態は、通信効率が可及的に高いホストシステム、ストレージデバイス、および通信方法を提供することを目的とする。
本発明の一つの実施形態によれば、通信路を介してストレージデバイスに接続されたホストシステムは、アプリケーション部と、通信インタフェース部とを備える。前記アプリケーション部は、前記ストレージデバイスへのコマンドを発行する。前記通信インタフェース部は、予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行する。また、前記通信インタフェース部は、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する。さらに、通信インタフェース部は、前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する。
以下に添付図面を参照して、実施形態にかかるホストシステム、ストレージデバイス、および通信方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
まず、図1〜図3を参照して、SATA規格に準拠して行われる、ホストシステムとストレージデバイスとの間の通信の一例について概略的に説明する。図1は、ホストシステム(以降、ホスト)とストレージデバイス(以降、ストレージ)との間のSATA規格に基づいて実行されるトランスポート層レベルの通信手順の概略を示す図である。各矢印は一つのFISを示す。なお、ここでは、ホストがストレージに対してユーザデータを書き込む場合の例を示している。
まず、図1〜図3を参照して、SATA規格に準拠して行われる、ホストシステムとストレージデバイスとの間の通信の一例について概略的に説明する。図1は、ホストシステム(以降、ホスト)とストレージデバイス(以降、ストレージ)との間のSATA規格に基づいて実行されるトランスポート層レベルの通信手順の概略を示す図である。各矢印は一つのFISを示す。なお、ここでは、ホストがストレージに対してユーザデータを書き込む場合の例を示している。
図1に示すように、ホストは、ライトコマンドを格納したRegister Host to Device(Reg HD)というFISをストレージに送る。SATA規格によれば、FIS(Frame Information Structure)とよばれるデータ構造を用いてホストとストレージとの間で通信が行われる。SATA規格によれば、8種類の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機能によれば、ストレージは、ホストから受信したリード/ライトコマンドを32個までキューに格納することができる。ストレージは、キューに格納したリード/ライトコマンドのうちの実行準備が整ったコマンドを特定する情報(コマンド識別情報、以降、単にtag)をDMA Setup FISに格納して送信することによって、実行開始対象のコマンドを指定することができる。
DMA Setup FISを受信すると、ライトコマンド(正確には、DMA Setup FISにより指定されたライトコマンド)にかかるライトデータをData FISというFISを用いて送信する。Data FISは、最大で2048Dword(=8192バイト)のデータを格納することができるFISである。図1には示されないがライトデータのサイズが2048Dwordを越える場合はデバイスからホストにDMA Activate FISという別のFISを送信することでホストは後続のData FISを送信することができる。
ストレージは、ライトデータの受信を完了すると、ステータス情報(status)をSet Device BitsというFISに格納してホストに送信する。
図2は、トランスポート層のデータであるFISをデータリンク層におけるフレームが搭載する構造を説明する図であり、図3は、ホストシステムからストレージデバイスへの一つのFISの送信手順をデータリンク層の視点から示す図である。図2に示すように、FIS100は、FIS100の送信開始を示すプリミティブであるSOF110、FIS100の誤り検出に用いられるCRC120、およびFIS100の送信終了を示すプリミティブであるEOF130とともにフレーム200を構成する。当該フレーム200が送信される前には、図3に示すように、ホストとストレージとの間でプリミティブ「X_RDY」とプリミティブ「R_RDY」とによるハンドシェイクが行われる。なお、図3では簡略化して示しているが、X_RDY、Y_RDYは、相手から応答があるまで何度も繰り返し送信される。ハンドシェイクが完了すると、フレーム200が送信され、その後、フレーム200を受信したストレージから、フレーム200の送信に対するプリミティブ「R_OK」または「R_NG」を送信する。
SATA規格によれば、下位側から物理層、リンク層、トランスポート層の3層の構造が定義されている。トランスポート層は、さらに上位の層(例えばOS)からの要求に基づいてFIS100を生成し、生成したFIS100をリンク層に送る。なお、トランスポート層に対して要求を行う層を、アプリケーション層と呼ぶこともある。例えば、アプリケーション層がリード/ライトコマンドを生成した場合、トランスポート層は、生成されたリード/ライトコマンドを格納したReg HD(即ちコマンドFIS)を生成する。リンク層は、トランスポート層から送られてきたFIS100からCRC120を生成して、当該コマンドFIS100にSOF110、生成したCRC120、EOF130を付加し、フレーム200を生成する。物理層は、リンク層で生成されたフレーム200を差動信号として送信する。なお、X_RDY、R_RDYなど、SOF110、EOF130以外のプリミティブも、リンク層の制御の下で物理層によって送受信される。なお、以降、FIS100としてコマンドFISについてのみ説明するので、コマンドFISを符号100を付して表記することとする。
コマンドFIS100は、5DWORDのサイズのデータ構造を有する。第二世代のSATA規格によれば、コマンドFIS100自体の送信は、正味66ns程度で終了する。しかしながら、コマンドFIS100の送信を行うための一単位の転送処理は、上述したように、コマンドFIS100自体の転送のほかに、X_RDY、R_RDY、SOF110、CRC120、およびEOF130の送受信のように、予め定められた一連の付随処理を含んでいる。これらの一連の付随処理を一単位の付随処理とすると、一単位の転送処理は必ず一単位のみの付随処理を含む。この付随処理がオーバヘッドとなって、典型的にはコマンドFIS100の送信にかかる転送処理は1.1us程度の時間を要する。この転送処理の全期間にわたり通信路が活線状態に維持されるため、時間、消費電力の両方の観点から無駄が多い。即ち、通信効率が悪い。
そこで、本発明の実施形態によれば、複数のコマンドFIS100を一つのパケットにまとめ、一つのパケットを一単位の転送処理で送受信されるようにした。図4〜図6を参照して、本発明の実施形態の概略を説明する。
図4は、ホストの動作の概略を説明する図である。ホストは、アプリケーション層において32個のコマンド(リード/ライトコマンド)を発行した場合、トランスポート層において、当該32個のコマンドから夫々コマンドFIS100を生成し、これらのコマンドFIS100をヘッダ310とともに一つのデータ構造に格納する。複数のコマンドFIS100が格納されるデータ構造をパケット(パケット300)ということとする。ホストは、リンク層において、当該パケット300にSOF110、CRC120、EOF130を付加して、図6に示す本発明の実施形態のフレーム400を生成する。リンク層は、各プリミティブの制御を行ってハンドシェイクを行った後、当該フレーム400を物理層を介してストレージに送信する。
図5は、ストレージの動作の概略を説明する図である。ストレージは、物理層においてフレーム400を受信すると、リンク層においてパケット300を取り出す。そして、ストレージは、トランスポート層において、パケット300に含まれる32個のコマンドFIS100を取り出す。取り出された32個のコマンドFIS100はキューに格納され、アウトオブオーダー実行される。
図7は、本発明の実施形態を適用したホストシステムおよびストレージデバイスの構成を示す図である。図示するように、ストレージデバイス(ストレージ)1は、ホストシステム(ホスト)2とSATA規格に準拠した通信路3で接続され、ホスト2の外部記憶装置として機能する。なお、ホスト2は、例えば携帯電話やパーソナルコンピュータであってよい。また、ストレージ1は、HDD(Hard disk drive)やSSD(Solid State Drive)であってよい。
ホスト2は、通信制御部20、アプリケーション22、および通信制御部20を含むホスト2のハードウェア資源をソフトウェアが実行するための環境をアプリケーション22に提供するオペレーティングシステム(OS)21を備えている。
OS21およびアプリケーション22の機能は、演算装置および記憶装置を備えたコンピュータにより実現される。具体的には、OS21およびアプリケーション22の機能は、記憶装置に予め格納される対応するプログラムが演算装置により読み出されて実行されることによって、夫々実現する。
アプリケーション22は、OS21に対して、ファイル名を指定してリード/ライト要求を行う。
OS21は、アプリケーション層(アプリケーション部)としての機能を有している。例えば、OS21は、アプリケーション22が発行したリード/ライト要求したファイルの格納先の領域の先頭アドレスとファイルのサイズとを求め、求めた先頭アドレスとサイズとを含むリード/ライトコマンドを生成する。
通信制御部20は、通信路3の接続インタフェースであって、ここでは一例として、トランスポート層以下の層を制御する機能を有している。即ち、ホスト2の通信インタフェース部として機能する。具体的には、通信制御部20は、OS21からコマンドが複数発行されたとき、複数のコマンドの夫々からコマンドFIS100を生成し、生成したコマンドFIS100を複数まとめてパケット300を生成する。そして、パケット300からフレーム400を生成し、生成したフレーム400を一単位の転送処理で通信路3に送出する。
図8は、パケット300の詳細なデータ構造を説明する図である。図示するように、パケット300は、32個のコマンドFIS100と、ヘッダ310とを備えている。
ヘッダ310は、1DWORD(=4バイト)のサイズを有しており、32個のコマンドFIS100は、夫々5DWORDのサイズを有しているので、パケット300は全部で161DWORDのサイズを有する。ヘッダ310は、1バイトのサイズで記述されるパケット識別情報311を含んでいる。パケット識別情報311は、このヘッダ310およびこのヘッダ310に後続する内容が161DWORDのサイズを有するパケット300のデータ構造を構成することを示す情報である。図8では、一例として、「C7h」という値がパケット識別情報311として機能する。
個々のコマンドFIS100は、コマンド識別情報、FIS種類情報、先頭アドレス、データサイズ、およびコマンド識別情報(tag)を含んでいる。コマンド識別情報は、コマンドの種別(リードコマンドであるかライトコマンドであるか等)を示す情報である。FIS種類情報は、自コマンドFIS100が前述した8種類のFISのうちのどの種類のFISであるかを示す情報である。先頭アドレスは、アクセス先の領域の先頭のアドレスを示しており、LBA(Logical Block Addressing)の形式で記述される。また、データサイズは、アクセス対象のデータのサイズを示しており、セクタ数(Sector Counts;SC)で表現される。コマンド識別情報(tag)は、キューに格納される32個のコマンドの夫々を識別するための情報である。
図7に戻り、ストレージ1は、通信制御部10、コントローラ11、および1以上の記憶部(ここでは記憶部12a〜12n)を備えている。通信制御部10、コントローラ11、および記憶部12a〜12nは、バスで互いに接続されている。
記憶部12a〜12nは、ホスト2からのライトデータを記憶する不揮発性の記憶装置である。例えば本発明の実施形態のストレージ1がSSDに適用される場合には、記憶部12a〜12nの夫々は、メモリセルアレイを搭載するメモリチップに相当する。
通信制御部10は、通信路3の接続インタフェースであって、ここでは一例として、リンク層および物理層を制御する機能を有している。通信制御部10は、通信路3を介して一単位の転送処理で受信したフレーム400からパケット300を取り出して、取り出したパケット300をコントローラ11に送る。
コントローラ11は、ストレージ1の全体の制御を行う。また、コントローラ11は、通信路3のトランスポート層の制御機能と、アプリケーション層の機能を有している。なお、通信制御部10と、コントローラ11のトランスポート層の制御機能とは、協働して、ストレージ1の通信インタフェース部を構成する。
コントローラ11は、トランスポート層の制御機能として、パケット300から複数のコマンドFIS100を取り出して、取り出した夫々のコマンドFIS100に格納されているコマンドをキュー(図示せず)に格納するパケット分解部13と、アプリケーション層の機能として、キューに格納されたコマンドFIS100を解析・実行する解析・実行部14とを備えている。
なお、コントローラ11の機能は、典型的には演算装置および記憶装置を備えたコンピュータと同等のハードウェア構成により実現される。具体的には、コントローラ11は、自身が有する記憶装置あるいは記憶部12a〜12nに予め記憶するファームウェアを演算装置が実行することによって上述の機能を実現する。
次に、本発明の実施形態のホスト2およびストレージ1の動作を説明する。
上述したように、OS21が複数のコマンドを発行すると、通信制御部20は、発行された複数のコマンドから一つのパケット300を生成することができる。図9は、ストレージ1が備える通信制御部20の動作を説明するフローチャートである。
通信制御部20は、まず、発行されたコマンド数は0個であるか否か(ステップS1)、および発行されたコマンド数は1個であるか否かを判定する(ステップS2)。発行されたコマンド数が0個である場合には(ステップS1、Yes)、通信制御部20は、動作を終了する。発行されたコマンド数が1個である場合には(ステップS1、No、ステップS2、Yes)、通信制御部20は、発行された1つのコマンドからコマンドFIS100を生成して、当該生成したコマンドFIS100を単独で送信する(ステップS3)。即ち、通信制御部20は、コマンドFIS100から図2に示したフレーム200を生成し、生成したフレーム200をストレージ1に送信する。ステップS3の処理の後、通信制御部20は動作を終了する。
発行されたコマンド数が2個以上である場合には(ステップS1、No、ステップS2、No)、通信制御部20は、まず、空のパケット300を生成する(ステップS4)。空のパケット300とは、ヘッダ310のみ有し、コマンドFIS100が格納されていないパケット300をいう。
そして、通信制御部20は、ステップS5〜ステップS7のループ処理を実行して、発行されたコマンドをステップS4の処理により作成されたパケット300に格納していく。具体的には、通信制御部20は、パケット300に未格納のコマンドがあるか否かを判定する(ステップS5)。未格納のコマンドがある場合には(ステップS5、Yes)、通信制御部20は、パケット300が32個のコマンドを格納しているか否かを判定する(ステップS6)。パケット300が32個のコマンドを格納していない場合(ステップS6、No)、通信制御部20は、パケット300にコマンドを1つ追加する(ステップS7)。即ち、通信制御部20は、未格納のコマンドを1つ選択し、選択したコマンドからコマンドFIS100を生成し、生成したコマンドFIS100をパケット300に格納する。通信制御部20は、ステップS7の処理の後、ステップS5の判定処理を実行する。
未格納のコマンドがない場合(ステップS5、No)、またはパケット300が32個のコマンドを格納している場合(ステップS6、Yes)、通信制御部20は、パケット300をストレージ1に送信する(ステップS8)。即ち、通信制御部20は、パケット300から図6に示したフレーム400を生成し、生成したフレーム400をストレージ1に送信する。ステップS8の処理の後、通信制御部20は動作を終了する。
ストレージ1では、通信制御部10は、コマンドFIS100が格納されたフレーム200を通信路3を介して受信すると、受信したフレーム400からコマンドFIS100を取り出してパケット分解部13に送る。また、通信制御部10は、パケット300が格納されたフレーム400を通信路3を介して受信すると、受信したフレーム400からパケット300を取り出してパケット分解部13に送る。
図10は、コントローラ11の動作を説明するフローチャートである。コントローラ11では、パケット分解部13は、まず、通信制御部10から送られてきた内容はパケット300であるか否かを判定する(ステップS11)。通信制御部10から受信した内容がパケット300ではなく1個のコマンドFIS100である場合には(ステップS11、No)、パケット分解部13は、当該コマンドFIS100をキューを介して解析・実行部14に送り、解析・実行部14は、送られてきたコマンドFIS100を解析・実行する(ステップS12)。
通信制御部10から送られてきた内容はパケット300である場合には(ステップS11、Yes)、パケット分解部13は、ステップS13、ステップS14のループ処理を実行して、送られてきたパケット300を分解する。即ち、パケット分解部13は、ステップS13において、パケット300が空であるか否かを判定する(ステップS13)。パケット300が空でない場合には(ステップS13、No)、パケット分解部13は、パケット300からコマンドFIS100を一つ取り出して(ステップS14)、ステップS13の判定処理を再び実行する。ステップS14の処理においては、パケット分解部13は、取り出したコマンドFIS100をキューに格納する。パケット300が空になった場合(ステップS13、Yes)、解析・実行部14は、ステップS12の処理において、キューに格納された複数のコマンドFIS100を解析・実行する。なお、解析・実行部14がコマンドFIS100を解析・実行するとは、キューに複数のコマンドFIS100が格納されている場合に、これらのコマンドFIS100をアウトオブオーダー実行することを含む。ステップS12の処理の後、コントローラ11は、通信にかかる処理を終了する。
なお、以上の説明においては、本発明の実施形態によればパケット300の生成およびパケット300の分解はトランスポート層において実行されるとして説明するが、双方または一方は必ずしもトランスポート層で実行されなくてもよい。パケット300の生成またはパケット300の分解は、例えばリンク層で実行されてもよい。
また、ストレージ1の通信インタフェース部としての機能は、ハードウェア(通信制御部10)とソフトウェア(コントローラ11)との組み合わせにより実現されるものとして説明したが、ハードウェアのみにより実現されるようにしてもよいし、ソフトウェアのみにより実現されるようにしてもよい。
同様に、ホスト2の通信インタフェース部としての機能は、ハードウェア(通信制御部20)により実現されるものとして説明したが、ホスト2の通信インタフェース部としての機能のうちの一部または全部をソフトウェアにより実現されるようにしてもよい。
また、パケット300は、最大で32個のコマンドFIS100を格納できるものとして説明したが、パケット300が格納できるコマンドFIS100の最大数は32個に限定されない。パケット300が格納できるコマンドFIS100の最大数をストレージ1側のキューに格納できる最大数と同一の値とすることによって、NCQ機能を有効活用することができる。
また、通信路3はSATA規格に準拠するものとして説明したが、本発明の実施形態は、ストレージ1とホスト2との間の通信路が一単位の転送処理に一単位の付随処理が必要となる規格であればどのような通信規格に準拠する場合であっても適用可能である。例えば、通信路3がSAS規格に準拠するものであってもよい。なお、通信路3にSATA規格が適用されている場合には、物理層を変更せず、リンク層以上の設計変更によって本実施形態を適用することができる。
以上述べたように、本発明の実施形態によれば、ホスト2は、ストレージ1へのコマンドを発行するOS21と、予め定められた一単位の付随処理を一単位毎に含む転送処理をストレージ1との間で実行し、OS21が発行したコマンドをコマンド毎に一単位の転送処理を実行してストレージ1に送信する通信制御部20と、を備える。そして、通信制御部20は、さらに、OS21が複数のコマンドを発行したとき、複数のコマンドを一つのパケット300に格納し、当該パケット300を一単位の転送処理でストレージ1に送信する。ホスト2は、複数のコマンドを格納したパケット300を一単位の転送処理で送信することができるので、コマンド毎に一単位の転送処理を実行する場合に比べて一単位の転送処理のうちの付随処理が占める時間の割合を小さくすることができる。即ち、通信効率が可及的に高いホスト2を得ることができる。
また、ストレージ1は、予め定められた一単位の付随処理を一単位毎に含む転送処理をホスト2との間で実行し、ホスト2から自ストレージ1に対するコマンドをコマンド毎に一単位の転送処理を実行して受信する通信インタフェース部としての通信制御部10およびパケット分解部13と、通信インタフェース部が受信したコマンドを解析し、実行する解析・実行部14とを備える。そして、通信制御部10は、さらに、複数のコマンドを含むパケット300をパケット300毎に一単位の転送処理で受信する。パケット分解部13は、当該受信したパケット300に含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドを解析・実行部14に渡す。これにより、ストレージ2は、複数のコマンドを格納したパケット300を一単位の転送処理で受信することができるので、コマンド毎に一単位の転送処理を実行する場合に比べて一単位の転送処理のうちの付随処理が占める時間の割合を小さくすることができる。即ち、通信効率が可及的に高いストレージ1を得ることができる。
また、ストレージ1は、パケット分解部13は、パケット300から取り出した複数のコマンドをキューに格納し、解析・実行部14は、キューに格納された複数のコマンドをアウトオブオーダー実行するので、NCQ機能を利用した効率のよい通信をホスト2との間で実行することができる。
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 ストレージデバイス、2 ホストシステム、3 通信路、10 通信制御部、11 コントローラ、12 記憶部、13 パケット分解部、14 解析・実行部、20 通信制御部、21 オペレーティングシステム、22 アプリケーション、200,400 フレーム、300 パケット、310 ヘッダ、311 パケット識別情報、100 FIS。
Claims (8)
- 通信路を介してストレージデバイスに接続されたホストシステムであって、
前記ストレージデバイスへのコマンドを発行するアプリケーション部と、
予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行し、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する通信インタフェース部と、
を備え、
前記通信インタフェース部は、さらに、
前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する、
ことを特徴とするホストシステム。 - 前記付随処理は、プリミティブを用いたハンドシェイク処理である、
ことを特徴とする請求項1に記載のホストシステム。 - 通信路を介してホストシステムに接続されたストレージデバイスであって、
予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ホストシステムとの間で実行し、前記ホストシステムから自ストレージデバイスに対するコマンドをコマンド毎に一単位の転送処理を実行して受信する通信インタフェース部と、
前記通信インタフェース部が受信したコマンドを解析し、実行する解析・実行部と
を備え、
前記通信インタフェース部は、さらに、複数のコマンドを含むパケットをパケット毎に一単位の転送処理で受信し、当該受信したパケットに含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドを前記解析・実行部に渡す、
を備えることを特徴とするストレージデバイス。 - キューをさらに備え、
前記通信インタフェース部は、前記受信したパケットから取り出した複数のコマンドを前記キューに格納し、
前記解析・実行部は、前記キューに格納された複数のコマンドをアウトオブオーダー実行する、
ことを特徴とする請求項3に記載のストレージデバイス。 - 前記付随処理は、プリミティブを用いたハンドシェイク処理である、
ことを特徴とする請求項3または請求項4に記載のストレージデバイス。 - 互いに通信路で接続され、転送処理毎に予め定められた一単位の付随処理を含む転送処理を実行して互いに通信する、ホストシステムとストレージデバイスとの間の通信方法であって、
前記ホストシステムは、前記ストレージデバイスへの複数のコマンドを生成し、前記生成した複数のコマンドを格納した一つのパケットを作成し、前記一つのパケットを前記一単位の転送処理で前記ストレージデバイスに送信し、
前記ストレージデバイスは、前記一単位の転送処理で一つのパケットを受信したとき、当該受信したパケットに含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドの夫々を順次実行する、
ことを特徴とする通信方法。 - 前記ストレージデバイスは、前記パケットから取り出した複数のコマンドをアウトオブオーダー実行する、
ことを特徴とする請求項6に記載の通信方法。 - 前記付随処理は、プリミティブを用いたハンドシェイク処理である、
ことを特徴とする請求項6または請求項7に記載の通信方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012190192A JP2014048810A (ja) | 2012-08-30 | 2012-08-30 | ホストシステム、ストレージデバイス、および通信方法 |
US13/786,422 US20140068120A1 (en) | 2012-08-30 | 2013-03-05 | Host system, storage device and communication method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012190192A JP2014048810A (ja) | 2012-08-30 | 2012-08-30 | ホストシステム、ストレージデバイス、および通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014048810A true JP2014048810A (ja) | 2014-03-17 |
Family
ID=50189078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012190192A Pending JP2014048810A (ja) | 2012-08-30 | 2012-08-30 | ホストシステム、ストレージデバイス、および通信方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140068120A1 (ja) |
JP (1) | JP2014048810A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9846657B2 (en) * | 2015-02-06 | 2017-12-19 | Mediatek Inc. | Electronic device for packing multiple commands in one compound command frame and electronic device for decoding and executing multiple commands packed in one compound command frame |
CN109325899B (zh) * | 2018-09-07 | 2023-04-04 | 格兰菲智能科技有限公司 | 计算机系统、图形处理单元及其图形处理方法 |
US11537560B2 (en) | 2019-07-11 | 2022-12-27 | Samsung Electronics Co., Ltd. | Markers for hash code calculations on occupied portions of data blocks |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7239635B2 (en) * | 2002-06-27 | 2007-07-03 | International Business Machines Corporation | Method and apparatus for implementing alterations on multiple concurrent frames |
US7835397B2 (en) * | 2003-04-25 | 2010-11-16 | Alcatel-Lucent Usa Inc. | Frame processing |
-
2012
- 2012-08-30 JP JP2012190192A patent/JP2014048810A/ja active Pending
-
2013
- 2013-03-05 US US13/786,422 patent/US20140068120A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20140068120A1 (en) | 2014-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI840641B (zh) | 多重功能儲存元件以及用於操作多重功能儲存元件的方法 | |
CN102750238B (zh) | 存储器管理系统以及管理存储器的方法 | |
WO2018102967A1 (zh) | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 | |
JP5480834B2 (ja) | Sasエクスパンダにおけるデータプリフェッチ | |
US9213500B2 (en) | Data processing method and device | |
US10491672B2 (en) | Data transfer device, data receiving system and data receiving method | |
WO2015166540A1 (ja) | ストレージ装置とそのデータ処理方法及びストレージシステム | |
US10216448B2 (en) | Storage system with read request accelerator having dynamic internal data memory allocation | |
JP5204195B2 (ja) | データ送信システムおよびデータ送信プログラム | |
JP2011023016A5 (ja) | ||
EP2840576A1 (en) | Hard disk and data processing method | |
US8966130B2 (en) | Tag allocation for queued commands across multiple devices | |
JP5957634B2 (ja) | ストレージデバイスに関連付けられた複数の書き込みコマンドの順序付け | |
JP2017513096A (ja) | コンピュータ、制御デバイス及びデータ処理方法 | |
CN104021069A (zh) | 基于分布式虚拟机系统的软件性能测试的管理方法和系统 | |
KR101654807B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20190042161A1 (en) | Hard Disk Operation Method and Hard Disk Manager | |
US10097658B2 (en) | Traffic control of packet transfer | |
US10853255B2 (en) | Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover | |
JP2014048810A (ja) | ホストシステム、ストレージデバイス、および通信方法 | |
US20150242160A1 (en) | Memory system, control method of memory system, and controller | |
US20120136958A1 (en) | Method for analyzing protocol data unit of internet small computer systems interface | |
JP2018504689A5 (ja) | ||
JP5728088B2 (ja) | 入出力制御装置及び入出力制御装置のフレーム処理方法 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 |