JP2014048810A - ホストシステム、ストレージデバイス、および通信方法 - Google Patents

ホストシステム、ストレージデバイス、および通信方法 Download PDF

Info

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
Application number
JP2012190192A
Other languages
English (en)
Inventor
Hiroaki Tanaka
博明 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012190192A priority Critical patent/JP2014048810A/ja
Priority to US13/786,422 priority patent/US20140068120A1/en
Publication of JP2014048810A publication Critical patent/JP2014048810A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk 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

Description

本発明の実施形態は、ホストシステム、ストレージデバイス、および通信方法に関する。
コンピュータなどのホストシステムとHDD、SSDなどのストレージデバイスとをつなぐ通信路の速度は近年非常に高速になってきている。例えば第二世代のSATA(Serial Advanced Technology Attachment)規格は、3.0Gbps(300MB/s)までの通信速度を定めている。
特開2005−190202号公報 特開2007−233998号公報 特開2010−92493号公報
本発明の一つの実施形態は、通信効率が可及的に高いホストシステム、ストレージデバイス、および通信方法を提供することを目的とする。
本発明の一つの実施形態によれば、通信路を介してストレージデバイスに接続されたホストシステムは、アプリケーション部と、通信インタフェース部とを備える。前記アプリケーション部は、前記ストレージデバイスへのコマンドを発行する。前記通信インタフェース部は、予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行する。また、前記通信インタフェース部は、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する。さらに、通信インタフェース部は、前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する。
図1は、ホストとストレージとの間のSATA規格に基づく通信手順の概略を示す図である。 図2は、FISのフレーム構造を説明する図である。 図3は、FISの送信手順をより詳しく示す図である。 図4は、実施形態のホストの動作の概略を説明する図である。 図5は、実施形態のストレージの動作の概略を説明する図である。 図6は、実施形態のフレームの構成を説明する図である。 図7は、実施形態のホストシステムおよびストレージデバイスの構成を示す図である。 図8は、パケットの詳細なデータ構造を説明する図である。 図9は、ストレージが備える通信制御部の動作を説明するフローチャートである。 図10は、コントローラの動作を説明するフローチャートである。
以下に添付図面を参照して、実施形態にかかるホストシステム、ストレージデバイス、および通信方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
まず、図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. 通信路を介してストレージデバイスに接続されたホストシステムであって、
    前記ストレージデバイスへのコマンドを発行するアプリケーション部と、
    予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ストレージデバイスとの間で実行し、前記アプリケーション部が発行したコマンドをコマンド毎に一単位の転送処理を実行して前記ストレージデバイスに送信する通信インタフェース部と、
    を備え、
    前記通信インタフェース部は、さらに、
    前記アプリケーション部が複数のコマンドを発行したとき、前記複数のコマンドを格納した一つのパケットを作成し、当該パケットを一単位の転送処理で前記ストレージデバイスに送信する、
    ことを特徴とするホストシステム。
  2. 前記付随処理は、プリミティブを用いたハンドシェイク処理である、
    ことを特徴とする請求項1に記載のホストシステム。
  3. 通信路を介してホストシステムに接続されたストレージデバイスであって、
    予め定められた一単位の付随処理を一単位毎に含む転送処理を前記ホストシステムとの間で実行し、前記ホストシステムから自ストレージデバイスに対するコマンドをコマンド毎に一単位の転送処理を実行して受信する通信インタフェース部と、
    前記通信インタフェース部が受信したコマンドを解析し、実行する解析・実行部と
    を備え、
    前記通信インタフェース部は、さらに、複数のコマンドを含むパケットをパケット毎に一単位の転送処理で受信し、当該受信したパケットに含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドを前記解析・実行部に渡す、
    を備えることを特徴とするストレージデバイス。
  4. キューをさらに備え、
    前記通信インタフェース部は、前記受信したパケットから取り出した複数のコマンドを前記キューに格納し、
    前記解析・実行部は、前記キューに格納された複数のコマンドをアウトオブオーダー実行する、
    ことを特徴とする請求項3に記載のストレージデバイス。
  5. 前記付随処理は、プリミティブを用いたハンドシェイク処理である、
    ことを特徴とする請求項3または請求項4に記載のストレージデバイス。
  6. 互いに通信路で接続され、転送処理毎に予め定められた一単位の付随処理を含む転送処理を実行して互いに通信する、ホストシステムとストレージデバイスとの間の通信方法であって、
    前記ホストシステムは、前記ストレージデバイスへの複数のコマンドを生成し、前記生成した複数のコマンドを格納した一つのパケットを作成し、前記一つのパケットを前記一単位の転送処理で前記ストレージデバイスに送信し、
    前記ストレージデバイスは、前記一単位の転送処理で一つのパケットを受信したとき、当該受信したパケットに含まれる複数のコマンドを取り出し、前記取り出した複数のコマンドの夫々を順次実行する、
    ことを特徴とする通信方法。
  7. 前記ストレージデバイスは、前記パケットから取り出した複数のコマンドをアウトオブオーダー実行する、
    ことを特徴とする請求項6に記載の通信方法。
  8. 前記付随処理は、プリミティブを用いたハンドシェイク処理である、
    ことを特徴とする請求項6または請求項7に記載の通信方法。
JP2012190192A 2012-08-30 2012-08-30 ホストシステム、ストレージデバイス、および通信方法 Pending JP2014048810A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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访问方法及装置、存储系统及存储介质