JP2017162399A - 記憶装置 - Google Patents

記憶装置 Download PDF

Info

Publication number
JP2017162399A
JP2017162399A JP2016048797A JP2016048797A JP2017162399A JP 2017162399 A JP2017162399 A JP 2017162399A JP 2016048797 A JP2016048797 A JP 2016048797A JP 2016048797 A JP2016048797 A JP 2016048797A JP 2017162399 A JP2017162399 A JP 2017162399A
Authority
JP
Japan
Prior art keywords
information
transmission
host
command
storage device
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.)
Abandoned
Application number
JP2016048797A
Other languages
English (en)
Inventor
茗茄 信行
Nobuyuki Myoga
信行 茗茄
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.)
Kioxia Corp
Original Assignee
Toshiba Memory 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 Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2016048797A priority Critical patent/JP2017162399A/ja
Priority to US15/442,344 priority patent/US10228883B2/en
Publication of JP2017162399A publication Critical patent/JP2017162399A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0656Data buffering arrangements
    • 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
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】記憶装置の性能を向上する。【解決手段】実施形態の記憶装置は、データを記憶する不揮発性記憶媒体と、ホストから受信した複数のコマンドをキューイングして実行し、コマンドに応じて不揮発性記憶媒体への書き込み動作及び読み出し動作を制御するコントローラとを具備する。コントローラは、コマンドの実行に応じて第1の情報と第2の情報をホストに送信し、第1の情報は、送信を開始する前に、コマンドの実行に応じて送信予定数が決められている。そしてコントローラは、第1の情報の送信開始後かつ送信予定数分の送信を完了する前に、第2の情報をホストに送信可能である。【選択図】図1

Description

本発明の実施形態は、記憶装置に関する。
ホストから受信したコマンドをキューイングして実行する記憶装置において、記憶装置の性能を向上させるためには、各コマンド実行に関する情報を適切な順序でホストに送信することが重要であることが知られている。
米国特許第8868809号明細書
本発明が解決しようとする課題は、記憶装置の性能を向上させることにある。
上記課題を達成するために、実施形態の記憶装置は、データを記憶する不揮発性記憶媒体と、ホストから受信した複数のコマンドをキューイングして実行し、コマンドに応じて不揮発性記憶媒体への書き込み動作及び読み出し動作を制御するコントローラとを具備する。コントローラは、コマンドの実行に応じて第1の情報と第2の情報をホストに送信し、第1の情報は、送信を開始する前に、コマンドの実行に応じて送信予定数が決められている。そしてコントローラは、第1の情報の送信開始後かつ送信予定数分の送信を完了する前に、第2の情報をホストに送信可能である。
第1の実施形態の記憶装置の構成を示すブロック図である。 第1の実施形態の記憶装置中の受信制御部、実行制御部、送信制御部の詳細な構成を示すブロック図である。 第1の実施形態の記憶装置中の実行管理テーブルの構成を示す図である。 第1の実施形態の記憶装置が実行するリードコマンドのプロトコルを説明する図である。 第1の実施形態の記憶装置が実行するライトコマンドのプロトコルを説明する図である。 第1の実施形態の記憶装置が実行するノンデータコマンドのプロトコルを説明する図である。 第1の実施形態の記憶装置におけるコマンドのキューイング実行を説明する図である。 第1の実施形態の記憶装置がリードコマンドを実行するときのタイミングチャートである。 第1の実施形態の記憶装置がリードコマンドとノンデータコマンドをキューイング実行するときのタイミングチャートである。 第1の実施形態の記憶装置がDATAフレームを送信するときの動作を説明するフローチャートである。 第1の実施形態の記憶装置がリードコマンドとノンデータコマンドをキューイング実行するときの動作を説明する図である。 第2の実施形態の記憶装置における全二重通信方式の動作を説明する図である。 第2の実施形態の記憶装置がライトコマンドを実行するときのタイミングチャートである。 第2の実施形態の記憶装置がリードコマンドとライトコマンドをキューイング実行するときのタイミングチャートである。 第2の実施形態の記憶装置がDATAフレームを送信するときの動作を説明するフローチャートである。 第2の実施形態の記憶装置がリードコマンドとライトコマンドをキューイング実行するときの動作を説明する図である。 第3の実施形態の記憶装置がDATAフレームを送信するときの動作を説明するフローチャートである。 第3の実施形態の記憶装置がDATAフレームを送信するときの動作を説明するフローチャートである。 第4の実施形態の記憶装置と複数のホストとの接続形態を説明するブロック図である。 第4の実施形態の記憶装置中の実行制御部の詳細な構成を示すブロック図である。 第4の実施形態の記憶装置中の実行管理テーブルの構成を示す図である。 第4の実施形態の記憶装置がDATAフレームを送信するときの動作を説明するフローチャートである。
以下、実施形態の記憶装置を、図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
[第1の実施形態]
図1は、第1の実施形態の記憶装置1の構成を示すブロック図である。
記憶装置1は、記憶装置1全体を制御するコントローラ10、データを記憶する不揮発性記憶媒体20、ホスト2と不揮発性記憶媒体20との間でデータを一時的に格納するバッファ30などからなる。
本実施形態の説明では、ホスト2はSAS(Serial Attached SCSI)規格のインターフェースをサポートするコンピュータであるが、その他の規格、例えばSATA(Serial ATA)規格、NVMe(NVM Express)規格のインターフェースをサポートするコンピュータであってもよい。
コントローラ10は、例えばSoC(System on a Chip)として設計される半導体集積回路である。
不揮発性記憶媒体20としては、例えばNAND型フラッシュメモリや磁気ディスクなどが用いられる。
本実施形態ではバッファ30はSRAM(Static Random Access Memory)からなるメモリであるが、DRAM(Dynamic Random Access Memory)など他の種類のメモリを採用してもよい。また、バッファ30は、コントローラ10に内蔵されていてもよい。
コントローラ10はホスト2との通信を行う通信インターフェース(IF)部40、FW(Firmware)を実行し記憶装置1全体の制御を行うCPU(Central Processing Unit)50、ホスト2からの情報の受信を制御する受信制御部100、ホスト2から受信したコマンドの実行を制御する実行制御部200、ホスト2への情報の送信を制御する送信制御部300などから成る。
なお、CPU50はコントローラ10に内蔵せず、別個の半導体集積回路としてもよい。また、以下の説明においてFWにより実行されるとしてある機能の一部又は全部は専用のHW(Hardware)によっても実行可能であり、HWにより実行されるとしてある機能の一部又は全部をFWによって実行することも可能である。
受信制御部100はホスト2から受信したコマンド及びデータの振り分けを行う受信情報選択部110、受信したコマンドを保持しておくコマンドテーブル120などから成る。
実行制御部200は、インターフェースに適合したプロトコルでコマンドの実行を行うプロトコルエンジン210などから成る。
送信制御部300はホスト2へ送信するステータス情報及びデータの振り分けを行う送信情報選択部310などから成る。
図2は、第1の実施形態の記憶装置1中の受信制御部100、実行制御部200、送信制御部300の詳細な構成を示すブロック図である。
受信制御部100中の受信情報選択部110は、ホスト2よりフレームの形で受信した情報400を、フレームヘッダー中のフレーム種別フィールドに基づいて格納先を選択して格納する。すなわち、コマンド情報であるCOMMANDフレーム401はコマンドテーブル120に、不揮発性記憶媒体20に記憶されるデータであるDATAフレーム402はバッファ30に、それぞれ格納する。
コマンドテーブル120に格納されたCOMMANDフレーム401はFWにより取り出され、FWはコマンドのタイプ(すなわちライトコマンド、リードコマンド、ノンデータコマンドの種別)、LBA(Logical Block Address)、転送数などを解釈する。
また、受信制御部100には受信カウンタ130があり、バッファ30に格納されたDATAフレーム402の長さ(データ数)をカウントし、受信カウンタ130の値は実行制御部200に出力される。
送信制御部300中の送信情報選択部310は、実行制御部200の指示のもと、記憶装置1の内部状態を示すステータス情報501と、不揮発性記憶媒体20から読み出されバッファ30に格納されたデータであるDATAフレーム502とを選択し、通信インターフェース部40に出力する。
ステータス情報501には、コマンドの実行が完了したことを報告するRESPONSEフレームと、ライトデータの受信が可能であることを報告するXFER_RDY(Transfer Ready)フレームがある。
また、送信制御部300には送信カウンタ320があり、バッファ30から読み出されたDATAフレーム502の長さ(データ数)をカウントし、送信カウンタ320の値は実行制御部200に出力される。
実行制御部200はプロトコルエンジン210のほか、実行管理テーブル220、受信完了判定部230及び送信完了判定部240を有する。
実行管理テーブル220は、コマンドをキューイングして実行を管理するためのテーブルであり、その構成の一例を図3に示す。実行管理テーブル220は例えば1エントリーが4DW(Double Word、1DWは32ビット)で構成される。テーブルのエントリー数は同時にキューイングするコマンドの数に応じて決まり、例えば8コマンドをキューイングする必要がある場合には、4DWから成るテーブルが8エントリー実装される。
実行管理テーブル220の各エントリーには、キューイングして実行する各コマンドを識別するためにフレームヘッダーに付加されるtag221、コマンドのタイプ222、コマンドで指定される論理アドレス(LBA)223、コマンドで指定された全転送数224、現在送受信しているデータの送信/受信予定数225が設定される。
なお、送信/受信予定数225はリードコマンド実行時には送信予定数、ライトコマンド実行時には受信予定数として扱われる。また、送信/受信予定数225はコマンドで指定された全転送数224と一致してもよいが、送信予定数としてはバッファ30への格納が済んだデータに応じた数、受信予定数としてはバッファ30の空きスペースに応じた数、としてもよい。
図2に戻って説明を続ける。受信完了判定部230には、現在受信しているDATAフレーム402のtag140及び受信カウンタ130の値が受信制御部100から入力され、実行管理テーブル220の各エントリーからtag221及び受信予定数225が入力される。受信しているDATAフレーム402のtag140と実行管理テーブル220に設定されたtag221が一致し、かつ、当該エントリーの受信予定数225の値と受信カウンタ130の値が一致すると、受信完了判定部230は実行管理テーブル220に対し、当該エントリーのライトデータ受信完了を通知する。
同様に、送信完了判定部240には、現在送信しているDATAフレーム502のtag330及び送信カウンタ320の値が送信制御部300から入力され、実行管理テーブル220の各エントリーからtag221及び送信予定数225が入力される。送信しているDATAフレーム502のtag330と実行管理テーブル220に設定されたtag221が一致し、かつ、当該エントリーの送信予定数225の値と送信カウンタ320の値が一致すると、送信完了判定部240は実行管理テーブル220に対し、当該エントリーのリードデータ送信完了を通知する。
次に、図4a〜図4cを参照して、実行制御部200が制御するコマンドのプロトコルを説明する。
図4aはリードコマンドのプロトコルを示す。
ホスト2が送信したCOMMANDフレームはコマンドテーブル120に格納される。FWがCOMMANDフレームを取り出し、不揮発性記憶媒体20から読み出したデータのバッファ30への格納その他の必要な処理を行った後、実行管理テーブル220にtag221、コマンドのタイプ222としてリードコマンド、LBA223、コマンドで指定された全転送数224、送信予定数225を設定する。すると、実行管理テーブル220がプロトコルエンジン210に対してDATAフレームの生成を要求する。要求を受けたプロトコルエンジン210は、実行管理テーブル220からはtag221及び送信予定数225を、バッファ30からはデータをそれぞれ取得し、DATAフレームを生成する。DATAフレームは送信制御部300中の送信情報選択部310から通信インターフェース部40を介してホスト2に送信される。
記憶装置1がホスト2へDATAフレームを送信し、送信予定数225の値と送信カウンタ320の値が一致すると、送信完了判定部240は実行管理テーブル220に対してリードデータの送信完了を通知する。
リードデータの送信完了を通知された実行管理テーブル220は、コマンドで指定された全転送数分のDATAフレームの送信が完了していない場合、FWに割り込み(interrupt)をあげ、FWは送信予定数225の設定等を再度行う。実行管理テーブル220はプロトコルエンジン210に対してDATAフレームの生成を再度要求し、DATAフレームが再送信される。
一方で、コマンドで指定された全転送数のDATAフレームの送信が完了した場合は、実行管理テーブル220はプロトコルエンジン210に対してRESPONSEフレームの生成を要求する。プロトコルエンジン210は、実行管理テーブル220からtag221を取得し、RESPONSEフレームを生成する。
RESPONSEフレームは送信制御部300中の送信情報選択部310から通信インターフェース部40を介してホスト2に送信され、ホスト2はリードコマンドの完了を認識することができる。
図4bはライトコマンドのプロトコルを示す。
ホスト2が送信したCOMMANDフレームはコマンドテーブル120に格納される。FWがCOMMANDフレームを取り出し、バッファ30の空きスペースの確保その他の必要な処理を行った後、実行管理テーブル220にtag221、コマンドのタイプ222としてライトコマンド、LBA223、コマンドで指定された全転送数224、受信予定数225を設定する。すると、実行管理テーブル220がプロトコルエンジン210に対してXFER_RDYフレームの生成を要求する。要求を受けたプロトコルエンジン210は、実行管理テーブル220からtag221及び受信予定数225を取得し、XFER_RDYフレームを生成する。XFER_RDYフレームは送信制御部300中の送信情報選択部310から通信インターフェース部40を介してホスト2に送信される。
XFER_RDYフレームを受信したホスト2は、DATAフレームを送信する。記憶装置1がDATAフレームを受信すると、受信制御部100はDATAフレームをバッファ30に格納する。受信予定数225の値が受信カウンタ130の値と一致すると、受信完了判定部230は実行管理テーブル220に対してライトデータの受信完了を通知する。
ライトデータの受信完了を通知された実行管理テーブル220は、コマンドで指定された全転送数分のDATAフレームの受信が完了していない場合、FWに割り込みをあげ、FWは受信予定数225の設定等を再度行う。実行管理テーブル220はプロトコルエンジン210に対してXFER_RDYフレームの生成を再度要求し、XFER_RDYフレームが再送信される。
一方で、コマンドで指定された全転送数のDATAフレームの受信が完了した場合は、実行管理テーブル220はプロトコルエンジン210に対してRESPONSEフレームの生成を要求する。プロトコルエンジン210は、実行管理テーブル220からtag221を取得し、RESPONSEフレームを生成する。
RESPONSEフレームは送信制御部300中の送信情報選択部310から通信インターフェース部40を介してホスト2に送信され、ホスト2はライトコマンドの完了を認識することができる。
図4cはノンデータコマンドのプロトコルを示す。
ホスト2が送信したCOMMANDフレームはコマンドテーブル120に格納される。FWがCOMMANDフレームを取り出し必要な処理を行った後、実行管理テーブル220にtag221、コマンドのタイプ222としてノンデータコマンドを設定する。なお、ノンデータコマンドの場合、LBA223、全転送数224、送信/受信予定数225は設定する必要がない。すると、実行管理テーブル220がプロトコルエンジン210に対してRESPONSEフレームの生成を要求する。要求を受けたプロトコルエンジン210は、実行管理テーブル220からtag221を取得し、RESPONSEフレームを生成する。
RESPONSEフレームは送信制御部300中の送信情報選択部310から通信インターフェース部40を介してホスト2に送信され、ホスト2はノンデータコマンドの完了を認識することができる。
次に、図5を参照して、複数のコマンドをキューイングして実行するときのプロトコルの一例を説明する。
ホスト2はtag=1のCOMMANDフレームでリードコマンドを、tag=2のCOMMANDフレームでライトコマンドを、tag=3のCOMMANDフレームでノンデータコマンドをそれぞれ送信している。
記憶装置1はtag=1のリードコマンドに対するDATAフレーム及びRESPONSEフレームを送信した後、tag=3のノンデータコマンドに対するRESPONSEフレーム、tag=2のライトコマンドに対するXFER_RDYフレームを送信している。
ホスト2はtag=2のライトコマンドに対するDATAフレームを送信し、記憶装置1はtag=2のライトコマンドに対するRESPONSEフレームを送信している。
図6は本実施形態の記憶装置1がリードコマンドを実行するときのタイミングチャートである。
実行管理テーブル220の送信予定数225に0x1000(バイト)が設定され、各0x400バイトのDATAフレーム(DATA0〜DATA3)が送信される。DATAフレームの送信毎に送信カウンタ320が0x400ずつインクリメントされ、送信予定数225と送信カウンタ320の値が0x1000で一致すると、送信完了判定部240は実行管理テーブル220に対してリードデータの送信完了を通知する。そして、コマンドで指定された全転送数のDATAフレームの送信が完了した場合、プロトコルエンジン210がRESPONSEフレームを生成し、ホスト2に送信する。
なお、本実施形態では送信カウンタ320はDATAフレーム長ずつインクリメントされているが、もっと小さい単位(例えばバイト単位やDW単位)でインクリメントするようにしてもよい。
図7は本実施形態の記憶装置1がリードコマンドとノンデータコマンドをキューイングして実行するときのタイミングチャートである。
tag=4のリードコマンドに対する送信予定数225として、実行管理テーブル220に0x2000(バイト)が設定され、各0x400バイトのDATAフレームの送信を開始する(DATA0〜DATA2)。
一方でtag=5のノンデータコマンドに対するFWの処理が完了し、実行管理テーブル220がプロトコルエンジン210にtag=5のRESPONSEフレームの生成を要求する。プロトコルエンジン210はtag=5のRESPONSEフレームを生成し、tag=4のリードコマンドに対する送信予定数分のDATAフレームの送信完了前(DATA2の送信完了後かつDATA3の送信開始前)に送信情報選択部310を一時的に切り替え、tag=5のRESPONSEフレームを送信する。tag=5のRESPONSEフレームの送信を完了すると、プロトコルエンジン210は再度送信情報選択部310を切り替え、tag=4のリードコマンドに対する残りのDATAフレーム(DATA3以降)を送信する。
なお、本実施形態ではDATAフレームのフレーム境界で送信情報選択部310を切り替えたが、もっと小さい単位(例えばバイト単位)で切り替えてもよい。
図8は本実施形態の記憶装置1がDATAフレームを送信するときの動作を説明するフローチャートである。
実行管理テーブル220に送信予定数225が設定された後(S800)、DATAフレームの送信を行う(S801)。次に、送信予定数225の値と送信カウンタ320の値が一致しているか、すなわち、送信予定数分のDATAフレームの送信が完了したかの判断を行う(S802)。送信予定数分のDATAフレームの送信が完了していない場合、実行が完了したコマンドがあるか、すなわちRESPONSEフレームの生成要求があるかの判断を行う(S803)。RESPONSEフレームの生成要求がない場合、S801に戻りDATAフレームの送信を続行する。RESPONSEフレームの生成要求がある場合、RESPONSEフレームを生成及び送信(S804)してからS801に戻りDATAフレームの送信を再開する。
図9は本実施形態の記憶装置1がリードコマンドとノンデータコマンドをキューイングして実行するときの動作を説明する図である。
ホスト2はtag=4のCOMMANDフレームでリードコマンドを、tag=5のCOMMANDフレームでノンデータコマンドをそれぞれ送信している。
記憶装置1はtag=4のリードコマンドに対する送信予定数分のDATAフレームの送信を完了する前に、tag=5のノンデータコマンドに対するRESPONSEフレームを送信した後、tag=4のリードコマンドに対する残りのDATAフレームを送信している。
なお、上記ではリードコマンドとノンデータコマンドをキューイングして実行する場合を説明したが、リードコマンドとライトコマンドをキューイングして実行する場合にも同様に、DATAフレームの送信を開始した後、その送信予定数分の完了前に、ライトコマンドに対するRESPONSEフレームを送信することができる。
以上説明した第1の実施形態の記憶装置によれば、送信予定数の決まっているDATAフレームの送信を開始した後、RESPONSEフレームを送信する必要が生じたときに、DATAフレームの送信を一時中断しRESPONSEフレームを優先して送信するので、キューイングして実行している各コマンドを適切な順序で実行することができ、記憶装置の性能を向上させることができる。
[第2の実施形態]
図10は、全二重(Full Duplex)通信方式を説明する図である。
図に示すように、全二重通信方式では、ホスト2がライトコマンドに対するDATAフレームを記憶装置1に送信するのと同時に、記憶装置1がリードコマンドに対するDATAフレームをホスト2に送信することができる。
図11は、本実施形態の記憶装置1がライトコマンドを実行するときのタイミングチャートである。
実行管理テーブル220の受信予定数225に0x1000(バイト)が設定されると、プロトコルエンジン210がXFER_RDYフレームを生成し、ホスト2に送信する。XFER_RDYフレームを受信したホスト2は、各0x400バイトのDATAフレーム(DATA0〜DATA3)を送信する。DATAフレームの受信毎に受信カウンタ130が0x400ずつインクリメントされ、受信予定数225と受信カウンタ130の値が0x1000で一致すると、受信完了判定部230は実行管理テーブル220に対してライトデータの受信完了を通知する。そして、実行管理テーブル220は、コマンドで指定された全転送数分のDATAフレームの受信が完了していない場合、FWに割り込みをあげる。FWは実行管理テーブル220の受信予定数225を再度設定し、XFER_RDYフレームがホスト2に再度送信される。
なお、本実施形態では受信カウンタ130はDATAフレーム長ずつインクリメントされているが、もっと小さい単位(例えばバイト単位やDW単位)でインクリメントするようにしてもよい。
図12は本実施形態の記憶装置1がリードコマンドとライトコマンドをキューイングして実行するときのタイミングチャートである。
tag=6のリードコマンドに対する送信予定数225として、実行管理テーブル220に0x2000(バイト)が設定され、各0x400バイトのDATAフレームの送信を開始する(DATA_R0〜DATA_R1)。
一方でtag=7のライトデータコマンドについて、受信予定数0x1000(バイト)に対するDATAフレーム(DATA_W2〜DATA_W3)の受信が完了後、FWの処理が完了し、実行管理テーブル220がプロトコルエンジン210にtag=7のXFER_RDYフレームの生成を要求する。
プロトコルエンジン210はtag=7のXFER_RDYフレームを生成し、tag=6のリードコマンドに対する送信予定数分のDATAフレームの送信完了前(DATA_R1の送信完了後かつDATA_R2の送信開始前)に送信情報選択部310を一時的に切り替え、tag=7のXFER_RDYフレームを送信する。tag=7のXFER_RDYフレームの送信を完了すると、プロトコルエンジン210は再度送信情報選択部310を切り替え、tag=6のリードコマンドに対する残りのDATAフレーム(DATA_R2以降)を送信する。
tag=7のXFER_RDYフレームを受信したホスト2は、tag=7のライトコマンドに対する残りのDATAフレーム(DATA_W4以降)を送信するとともに、tag=6のリードコマンドに対する残りのDATAフレーム(DATA_R2以降)を受信することができる。
なお、本実施形態ではDATAフレームのフレーム境界で送信情報選択部310を切り替えたが、もっと小さい単位(例えばバイト単位)で切り替えてもよい。
図13は本実施形態の記憶装置1がDATAフレームを送信するときの動作を説明するフローチャートである。
実行管理テーブル220に送信予定数225が設定された後(S1300)、DATAフレームの送信を行う(S1301)。次に、送信予定数225の値と送信カウンタ320の値が一致しているか、すなわち、送信予定数分のDATAフレームの送信が完了したかの判断を行う(S1302)。送信予定数分のDATAフレームの送信が完了していない場合、ライトデータの受信が可能となったコマンドがあるか、すなわちXFER_RDYフレームの生成要求があるかの判断を行う(S1303)。XFER_RDYフレームの生成要求がない場合、S1301に戻りDATAフレームの送信を続行する。XFER_RDYフレームの生成要求がある場合、XFER_RDYフレームを生成及び送信して(S1304)からS1301に戻りDATAフレームの送信を再開する。
図14は本実施形態の記憶装置1がリードコマンドとライトデータコマンドをキューイングして実行するときの動作を説明する図である。
ホスト2はtag=6のCOMMANDフレームでリードコマンドを、tag=7のCOMMANDフレームでライトコマンドをそれぞれ送信している。
記憶装置1はtag=7のライトコマンドに対するXFER_RDYフレームを送信し、tag=7のライトコマンドに対するDATAフレームの受信と同時に、tag=6のリードコマンドに対するDATAフレームの送信を開始する。
記憶装置1はtag=6のリードコマンドに対する送信予定数分のDATAフレームの送信を完了する前に、tag=7のライトコマンドに対するXFER_RDYフレームを再度送信した後、tag=6のリードコマンドに対する残りのDATAフレームを送信している。
以上説明した第2の実施形態の記憶装置によれば、送信予定数の決まっているDATAフレームの送信を開始した後、XFER_RDYフレームを送信する必要が生じたときに、DATAフレームの送信を一時中断しXFER_RDYフレームを優先して送信するので、キューイングして実行している各コマンドを適切な順序で実行することができ、記憶装置の性能を向上させることができる。また、全二重通信方式である場合は、ホスト2との通信路の使用効率を高めることができる。
[第3の実施形態]
第3の実施形態の記憶装置1は、送信予定数の決まっているDATAフレームの送信を開始した後、DATAフレームの送信を一時中断し記憶装置1の内部状態を示すステータス情報501を送信するか否かを判定するための閾値を有している。なお、閾値は記憶装置1内の適切な場所、例えば実行制御部200内に設けられるレジスタに設定されればよい。
図15aは本実施形態の記憶装置1がDATAフレームを送信するときの動作を説明するフローチャートである。
実行管理テーブル220に送信予定数225が設定された後(S1500a)、DATAフレームの送信を行う(S1501a)。次に、送信予定数225の値と送信カウンタ320の値が一致しているか、すなわち、送信予定数分のDATAフレームの送信が完了したかの判断を行う(S1502a)。次に、送信予定数225の値と送信カウンタ320の値との差分が閾値以上であるか、すなわち、DATAフレームの送信残量が多いかどうかの判断を行う(S1503a)。
送信予定数225の値と送信カウンタ320の値との差分が閾値以上である場合、実行が完了したコマンドがあるか、すなわちRESPONSEフレームの生成要求があるかの判断を行う(S1504a)。RESPONSEフレームの生成要求がない場合、S1501aに戻りDATAフレームの送信を続行する。RESPONSEフレームの生成要求がある場合、RESPONSEフレームを生成及び送信して(S1505a)からS1501aに戻りDATAフレームの送信を再開する。
なお、送信予定数225の値と送信カウンタ320の値との差分が閾値未満であるときに(S1503a:No)RESPONSEフレームの生成要求があった場合は、送信予定数分のDATAフレームの送信が完了してから(S1506a)、RESPONSEフレームを生成及び送信する。
同様に、図15bは本実施形態の記憶装置1がDATAフレームを送信するときの動作を説明するフローチャートである。
図15bは図15aとほぼ同じであるが、図15aのRESPONSEフレームにかかるステップ(S1504a〜S1505a)が、図15bではXFER_RDYフレームに置き換えられている(S1504b〜S1505b)。
以上説明した第3の実施形態の記憶装置によれば、送信予定数の決まっているDATAフレームの送信を開始した後、記憶装置の内部状態を示すステータス情報を送信する必要が生じたときに、DATAフレームの送信残量が多いときのみステータス情報を優先して送信するので、DATAフレームの送信が細切れになることを防止しつつ、キューイングして実行している各コマンドを適切な順序で実行することができ、記憶装置の性能を向上させることができる。
[第4の実施形態]
SASインターフェースにおいては、図16に示すように、エキスパンダー3と呼ばれる中継器を介して記憶装置1と複数のホスト2とが通信することができる。記憶装置1及び各ホスト2は、それぞれが固有に持つWWN(World Wide Name)という識別子によって区別される。記憶装置1及び各ホスト2は、相手方にフレームを送信する前に論理的な接続を確立させ、送信完了後は速やかに論理的な接続を切断しなければならない。
図17は、本実施形態の記憶装置1中の実行制御部200の詳細な構成を示すブロック図である。
実行制御部200はプロトコルエンジン210、実行管理テーブル220、受信完了判定部230、送信完了判定部240のほか、ホスト管理テーブル250を有する。
ホスト管理テーブル250は、通信相手となるホスト2のWWNや、通信速度などを管理するテーブルで、ホスト2との論理的な接続が確立されるごとに更新される。また、そのエントリー数は同時に管理する必要があるホスト2の数に応じて決まる。例えば8つのホスト2を管理する必要がある場合は8エントリー実装される。
図18は、本実施形態の記憶装置1中の実行管理テーブル220の構成を示す図である。図3との違いは、本実施形態の実行管理テーブル220には、ホスト管理テーブルのエントリー番号を示すホスト番号226があることである。
図17に戻って説明を続ける。プロトコルエンジン210には、実行管理テーブル220からホスト番号226が入力されるとともに、ホスト管理テーブル250の情報が入力される。これにより、プロトコルエンジン210は、現在論理的な接続が確立されているホスト2のWWN等を把握することができる。
図19は本実施形態の記憶装置1がDATAフレームを送信するときの動作を説明するフローチャートである。
実行管理テーブル220に送信予定数225が設定された後(S1900)、DATAフレームの送信を行う(S1901)。次に、送信予定数225の値と送信カウンタ320の値が一致しているか、すなわち、送信予定数分のDATAフレームの送信が完了したかの判断を行う(S1902)。送信予定数分のDATAフレームの送信が完了していない場合、現在DATAフレームを送信しているホスト2から受信したコマンドのうち、実行が完了したコマンドがあるか、すなわちRESPONSEフレームの生成要求があるかの判断を行う(S1903)。RESPONSEフレームの生成要求がない場合、S1901に戻りDATAフレームの送信を続行する。RESPONSEフレームの生成要求がある場合、RESPONSEフレームを生成及び送信して(S1904)からS1901に戻りDATAフレームの送信を再開する。
以上説明した第4の実施形態の記憶装置によれば、送信予定数の決まっているDATAフレームの送信を開始した後、同一ホスト向けにRESPONSEフレームを送信する必要が生じたときに、DATAフレームの送信を一時中断しRESPONSEフレームを優先して送信するので、ホストと記憶装置との間の論理的な接続の確立回数を必要以上に増大させることなく、キューイングして実行している各コマンドを適切な順序で実行することができ、記憶装置の性能を向上させることができる。
以上説明した少なくとも1つの実施形態の記憶装置によれば、送信予定数の決まっているDATAフレームの送信を開始した後、記憶装置の内部状態を示すステータス情報を送信する必要が生じたときに、DATAフレームの送信を一時中断しステータス情報を優先して送信するので、キューイングして実行している各コマンドを適切な順序で実行することができ、記憶装置の性能を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…記憶装置、2…ホスト、3…エキスパンダー、10…コントローラ、20…不揮発性記憶媒体、30…バッファ、40…通信インターフェース部、50…CPU、100…受信制御部、110…受信情報選択部、120…コマンドテーブル、130…受信カウンタ、140…受信したフレームのtag、200…実行制御部、210…プロトコルエンジン、220…実行管理テーブル、221…実行管理テーブルに設定されたtag、222…コマンドタイプ、223…LBA、224…全転送数、225…送信/受信予定数、226…ホスト番号、230…受信完了判定部、240…送信完了判定部、250…ホスト管理テーブル、300…送信制御部、310…送信情報選択部、320…送信カウンタ、330…送信するフレームのtag、400…受信したフレーム、401…受信したCOMMANDフレーム、402…受信したDATAフレーム、500…送信するフレーム、501…送信するステータス情報、502…送信するDATAフレーム

Claims (8)

  1. ホストと通信可能な記憶装置であって、
    データを記憶する不揮発性記憶媒体と、
    前記ホストから受信した複数のコマンドをキューイングして実行し
    前記コマンドに応じて前記不揮発性記憶媒体への書き込み動作及び読み出し動作を制御するコントローラと、
    を具備し、
    前記コントローラは、
    前記コマンドの実行に応じて第1の情報と第2の情報を前記ホストに送信し、
    前記第1の情報は、送信を開始する前に前記コマンドの実行に応じて送信予定数が決められており、
    前記第1の情報の送信開始後かつ前記送信予定数分の送信を完了する前に、前記第2の情報を前記ホストに送信可能である
    記憶装置。
  2. 前記第1の情報は前記不揮発性記憶媒体から読み出したデータであり、
    前記第2の情報は前記記憶装置の内部状態を示すステータス情報である
    請求項1に記載の記憶装置。
  3. 前記ホストと前記不揮発性記憶媒体との間でデータを一時的に格納するバッファをさらに具備し、
    前記第1の情報の前記送信予定数は、前記コマンドの実行に応じて前記バッファに格納したデータの数に応じて決められる
    請求項2に記載の記憶装置。
  4. 前記ステータス情報は前記複数のコマンドのうちの少なくとも1つのコマンドの実行が完了したことを前記ホストに報告する情報であり、
    前記コントローラは、前記複数のコマンドのうちの少なくとも1つのコマンドの実行が完了したことに応じて
    前記ステータス情報を前記ホストに送信する
    請求項2に記載の記憶装置。
  5. 前記ホストとの通信は全二重通信方式による通信である
    請求項2に記載の記憶装置。
  6. 前記ステータス情報は前記データの受信が可能であることを前記ホストに報告する情報であり、
    前記コントローラは、前記データの受信が可能になったことに応じて
    前記ステータス情報を前記ホストに送信する
    請求項5に記載の記憶装置。
  7. 前記コントローラは、
    前記第1の情報の前記送信予定数と、
    前記コマンドの実行に応じて既に前記ホストに送信した前記第1の情報の送信数との差分が所定の閾値以上のときにのみ
    前記第1の情報の送信開始後かつ前記送信予定数分の送信を完了する前に、前記第2の情報を前記ホストに送信する
    請求項1に記載の記憶装置。
  8. さらに複数のホストのいずれかと選択的に通信可能であり、
    前記コントローラは、
    前記第1の情報と前記第2の情報とが同一の前記ホストに送信されるべき情報であるときにのみ
    前記第1の情報の送信開始後かつ前記送信予定数分の送信を完了する前に、前記第2の情報を前記ホストに送信する
    請求項1に記載の記憶装置。
JP2016048797A 2016-03-11 2016-03-11 記憶装置 Abandoned JP2017162399A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016048797A JP2017162399A (ja) 2016-03-11 2016-03-11 記憶装置
US15/442,344 US10228883B2 (en) 2016-03-11 2017-02-24 Storage device that postpones completion of read command to begin execution of a non-read command

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016048797A JP2017162399A (ja) 2016-03-11 2016-03-11 記憶装置

Publications (1)

Publication Number Publication Date
JP2017162399A true JP2017162399A (ja) 2017-09-14

Family

ID=59786507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016048797A Abandoned JP2017162399A (ja) 2016-03-11 2016-03-11 記憶装置

Country Status (2)

Country Link
US (1) US10228883B2 (ja)
JP (1) JP2017162399A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200054004A (ko) 2018-11-09 2020-05-19 삼성전자주식회사 호스트와 통신을 수행하는 전자 장치 및 그 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958066A (en) * 1997-06-03 1999-09-28 Emc Corporation On-line scanning and maintenance of a disk drive array
US6513089B1 (en) * 2000-05-18 2003-01-28 International Business Machines Corporation Dual burst latency timers for overlapped read and write data transfers
US6330642B1 (en) * 2000-06-29 2001-12-11 Bull Hn Informatin Systems Inc. Three interconnected raid disk controller data processing system architecture
JP4032670B2 (ja) * 2001-06-21 2008-01-16 株式会社日立製作所 ホストコンピュータの認証を行う記憶装置システム
US7337232B2 (en) * 2002-03-28 2008-02-26 Sony Corporation Method and system for providing and controlling sub-burst data transfers
US9152585B2 (en) 2009-02-12 2015-10-06 Rambus Inc. Memory interface with reduced read-write turnaround delay
US8296480B2 (en) 2009-11-30 2012-10-23 Lsi Corporation Context execution in a media controller architecture
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
JP5733680B2 (ja) * 2011-01-20 2015-06-10 日本電気株式会社 コマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラム
JP5304815B2 (ja) * 2011-02-28 2013-10-02 株式会社デンソー マイクロコンピュータ
US20150074293A1 (en) * 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Information processing system, storage device and controlling method of storage device

Also Published As

Publication number Publication date
US10228883B2 (en) 2019-03-12
US20170262230A1 (en) 2017-09-14

Similar Documents

Publication Publication Date Title
US20200278880A1 (en) Method, apparatus, and system for accessing storage device
WO2020000483A1 (zh) 数据处理的方法和存储系统
JP5159902B2 (ja) 入出力処理システム内のチャネル・サブシステムと通信するように構成された制御装置において可変長のデバイス・コマンド・ワード(dcw)を処理するための方法
US8458381B2 (en) Processing host transfer requests for direct block access storage devices
US10540307B1 (en) Providing an active/active front end by coupled controllers in a storage system
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
JP6757808B2 (ja) インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法
US10146475B2 (en) Memory device performing control of discarding packet
US10795608B2 (en) Computer, communication driver, and communication control method
WO2016181464A1 (ja) ストレージシステム、及び、記憶制御方法
CN112214157A (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
US11099740B2 (en) Method, apparatus and computer program product for managing storage device
JP2017162399A (ja) 記憶装置
US10817445B2 (en) Semiconductor devices including command priority policy management and related systems
US8898353B1 (en) System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface
JP2020144410A (ja) メモリコントローラ
US11016698B2 (en) Storage system that copies write data to another storage system
US10394727B2 (en) Semiconductor memory device with data buffering
US20150242160A1 (en) Memory system, control method of memory system, and controller
JP6502879B2 (ja) 記憶装置
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
US20240168877A1 (en) Solving submission queue entry overflow with an additional out-of-order submission queue entry
US9104637B2 (en) System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface
JPWO2018173300A1 (ja) I/o制御方法およびi/o制御システム
US20240168681A1 (en) Solving submission queue entry overflow with shadow submission queue

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20170821

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180907

RD07 Notification of extinguishment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7427

Effective date: 20180907

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20181119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181130