JP2014211801A - インターフェース制御装置、データ記憶装置及びインターフェース制御方法 - Google Patents
インターフェース制御装置、データ記憶装置及びインターフェース制御方法 Download PDFInfo
- Publication number
- JP2014211801A JP2014211801A JP2013088435A JP2013088435A JP2014211801A JP 2014211801 A JP2014211801 A JP 2014211801A JP 2013088435 A JP2013088435 A JP 2013088435A JP 2013088435 A JP2013088435 A JP 2013088435A JP 2014211801 A JP2014211801 A JP 2014211801A
- Authority
- JP
- Japan
- Prior art keywords
- host
- sgl
- controller
- command processing
- management information
- 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
Images
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
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 Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】情報ユニットを保持するテーブルの使用効率の良い管理を実現できるインターフェース制御装置、データ記憶装置及びインターフェース制御方法を提供することにある。
【解決手段】本実施形態によれば、インターフェース制御装置は、インターフェースと、テーブルと、コマンド処理部と、コントローラとを備えた構成である。前記インターフェースはホストとの間で情報の伝送を行なう。前記テーブルは前記ホストのメモリ空間のアドレスを管理する管理情報を保持する。前記コマンド処理部は、前記管理情報を使用して前記ホストのメモリ空間をアクセスするコマンド処理を実行する。前記コントローラは、前記コマンド処理に対応する前記管理情報を前記コマンド処理の完了に応じて前記テーブル手段から解放する。
【選択図】図1
【解決手段】本実施形態によれば、インターフェース制御装置は、インターフェースと、テーブルと、コマンド処理部と、コントローラとを備えた構成である。前記インターフェースはホストとの間で情報の伝送を行なう。前記テーブルは前記ホストのメモリ空間のアドレスを管理する管理情報を保持する。前記コマンド処理部は、前記管理情報を使用して前記ホストのメモリ空間をアクセスするコマンド処理を実行する。前記コントローラは、前記コマンド処理に対応する前記管理情報を前記コマンド処理の完了に応じて前記テーブル手段から解放する。
【選択図】図1
Description
本発明の実施形態は、ホストとデータ記憶装置間のインターフェースを制御するインターフェース制御装置、データ記憶装置及びインターフェース制御方法に関する。
近年、ホストとデータ記憶装置(ストレージデバイス)間のインターフェースとして、例えばPCI Express(登録商標、以下PCIe)規格にSCSI規格をマッピングしたSOP(SCSI over PCI Express)と呼ばれる規格などが提案されている。
このようなインターフェース規格の特徴としては、ホスト側において、コマンド、タスク等の処理要求を行なうリクエスト(Request)情報、及びストレージデバイスからのレスポンス(Response)情報をキューイングできる複数のキュー(queue)を配置できる。さらに、これらの複数キューをストレージデバイス側で制御するためのインターフェース制御仕様が制定されている。
複数のキューに格納するリクエスト情報及びレスポンス情報は、情報ユニット(Information Unit:IU)と呼ばれることがあり、それぞれリクエストIU及びレスポンスIUと表記される場合がある。情報ユニットは、1つのエレメントに格納される場合と複数のエレメントに分割されて格納される場合がある。ここで、エレメントとは、情報ユニットをキューに格納する際の格納単位である。
ホスト側は、例えばコマンドをリクエストIUに格納してストレージデバイス側に発行する。ストレージデバイス側は、当該リクエストIUを取り出してコマンド処理を実行する。ここで、情報ユニットにはコマンドやタスク以外に、ホスト側に確保されるメモリ空間のアドレスのリスト(Scatter Gather List、以下SGLと表記する)を格納することが可能である。ストレージデバイス側は、情報ユニットからSGLを取得することにより、SGLで指定されたホスト側のメモリ空間のアドレスをアクセスできる。これにより、ストレージデバイス側は、ホスト側のメモリ空間に分散されているデータを取得し、または、そのメモリ空間にデータを転送することが可能である。
ストレージデバイス側は、ホスト側から発行された情報ユニットに含まれる全情報を、レスポンスを返すまでテーブルに保持することになる。当該全情報にはSGLが含まれる場合もあるため、必要なテーブルの容量が大容量になる。このため、テーブルの使用効率の良いテーブル管理を実現して、テーブルの容量を必要最小限にできることが望ましい。
そこで、本発明の目的は、情報ユニットを保持するテーブルの使用効率の良い管理を実現できるインターフェース制御装置、データ記憶装置及びインターフェース制御方法を提供することにある。
本実施形態のインターフェース制御装置は、インターフェース手段と、テーブル手段と、コマンド処理手段と、制御手段とを備えた構成である。前記インターフェース手段は、ホストとの間で情報の伝送を行なう。前記テーブル手段は、前記ホストのメモリ空間のアドレスを管理する管理情報を保持する。前記コマンド処理手段は、前記管理情報を使用して前記ホストのメモリ空間をアクセスするコマンド処理を実行する。前記制御手段は、前記コマンド処理に対応する前記管理情報を前記コマンド処理の完了に応じて前記テーブル手段から解放する。
以下図面を参照して、実施形態を説明する。
[システム構成]
図1は、本実施形態に関するシステム構成を説明するためのブロック図である。図1に示すように、本実施形態では、ストレージデバイス(データ記憶装置)1とホスト2とが例えばPCIe規格のインターフェースバス20により接続されている。ストレージデバイス1は、例えば、ハードディスクドライブ(HDD)、SSD(solid state drive)、あるいはハイブリッド型HDDである。HDDは、後述する記憶媒体11としてディスクを有する。SSDは記憶媒体11としてフラッシュメモリを有する。ハイブリッド型HDDは、記憶媒体11としてディスク及びフラッシュメモリを有する。
図1は、本実施形態に関するシステム構成を説明するためのブロック図である。図1に示すように、本実施形態では、ストレージデバイス(データ記憶装置)1とホスト2とが例えばPCIe規格のインターフェースバス20により接続されている。ストレージデバイス1は、例えば、ハードディスクドライブ(HDD)、SSD(solid state drive)、あるいはハイブリッド型HDDである。HDDは、後述する記憶媒体11としてディスクを有する。SSDは記憶媒体11としてフラッシュメモリを有する。ハイブリッド型HDDは、記憶媒体11としてディスク及びフラッシュメモリを有する。
ストレージデバイス1は大別して、コントローラ10と、記憶媒体11と、バッファメモリ12とを有する。コントローラ10は、インターフェースコントローラ(以下、I/Fコントローラ)13及びメディアコントローラ14を含む。本実施形態では、I/Fコントローラ13は、インターフェースバス20を介してホスト2と接続し、後述するように、情報ユニット(IU)、具体的にはリクエスト情報(リクエストIU)及びレスポンス情報(レスポンスIU)の転送を制御するコントローラである。
メディアコントローラ14は、I/Fコントローラ13と連携し、記憶媒体11に対するデータのリード処理またはライト処理を制御するリード/ライトコントローラである。バッファメモリ12は、コントローラ10の制御により情報を格納するメモリである。
ここで、本実施形態では、ストレージデバイス1は、I/Fコントローラ13及びインターフェースバス20により、ホスト2が確保しているメモリ空間200をアクセスできる。具体的には、後述するように、I/Fコントローラ13は、SGL(Scatter Gather List)を使用して、ホスト2のメモリ空間200に分散されているデータを取得し、または、そのメモリ空間200にデータを転送する。SGLはメモリ空間200のアドレスのリストであり、リクエストIUなどの情報ユニットに格納されてストレージデバイス1に提供される。即ち、ストレージデバイス1がSGLを使用して、ホスト2のメモリ空間200を認識することが可能となる。
図2は、本実施形態のストレージデバイス1とホスト2とのインターフェース構成を説明するための概念図である。図2に示すように、ホスト2は、複数のキューを含むキューセット21を有するインターフェース仕様の構成である。キューセット21は、コマンドやタスクなどのリクエスト情報(リクエストIU)をストレージデバイス1に発行するためにキューイングする複数のキュー(Inbound Queue:IQ)IQ-1〜IQ-3を含む。また、キューセット21は、ストレージデバイス1から送信されたレスポンス情報(レスポンスIU)等を一時キューイングする複数のキュー(Outbound Queue:OQ)OQ-1〜OQ-3を含む。
ストレージデバイス1のコントローラ10はインターフェースバス20を介して、ホスト2の各キューIQ-1〜IQ-3からリクエスト情報(リクエストIU)を取り出す。また、コントローラ10はレスポンスを返す場合には、インターフェースバス20を介して、ホスト2の各キューOQ-1〜OQ-3にレスポンス情報(レスポンスIU)を格納する。
図3(A),(B)は、ホスト2に設けられた各キューの構成を説明するための図である。図3(A)は、リクエスト情報(リクエストIU)を格納するキュー(IQ)30である。また、図3(B)は、レスポンス情報(レスポンスIU)を格納するキュー(OQ)31である。なお、図3(A),(B)において、斜線は、IUが格納されている有効なエレメントを示す。エレメントとは、情報ユニット(IU)をキューに格納する際の格納単位である。
図3(A),(B)に示すように、各キュー30,31は、情報ユニット(IU)をエレメント(0〜n-1)単位で格納する。各キュー30,31への情報ユニットの格納(追加)と取り出しは、ライトポインタ(Write Index : WI)とリードポインタ(Read Index : RI)の2つのポインタにより制御される。
図3(A)に示すように、ホスト2は、コマンド、タスクなどのリクエスト情報(リクエストIU)を発行する場合に、キュー(IQ)30に対してライトポインタIQ-WIで示すエレメントにリクエストIUを格納する。ホスト2は、格納したエレメント数分だけライトポインタIQ-WIを進める。一方、ストレージデバイス1のコントローラ10は、キュー(IQ)30に対して、リードポインタIQ-RIで示すエレメントからリクエストIUを取り出す。コントローラ10は、取り出したエレメント数分だけリードポインタIQ-RIを進める。
また、図3(B)に示すように、ストレージデバイス1のコントローラ10は、レスポンス情報(レスポンスIU)を返す場合に、キュー(OQ)31に対してライトポインタOQ-WIで示すエレメントにレスポンスIUを格納する。コントローラ10は、格納したエレメント数分だけライトポインタOQ-WIを進める。一方、ホスト2は、キュー(OQ)31に対して、リードポインタOQ-RIで示すエレメントからレスポンスIUを取り出す。ホスト2は、取り出したエレメント数分だけリードポインタOQ-RIを進める。
図4(A),(B)は、キュー(IQ)30に格納されるリクエストIUの格納仕様を説明するための図である。図4(A)は、キュー(IQ)30にはエレメント毎に1個のリクエストIU40が格納される仕様を示す図である。これに対して、図4(B)は、1個のリクエストIUが複数エレメント41(ここでは4エレメント)に跨って格納される仕様を示す図である。要するに、図4(B)に示すように、複数エレメントに分割されて格納されるIUを、拡張IU(spanned IU)と呼ぶ。一方、図4(A)に示すように、エレメント毎に格納されるIUを非拡張IU(non-spanned IU)と呼ぶ。
ここで、前述したように、ストレージデバイス1のコントローラ10は、キュー(IQ)30からリードポインタIQ-RIで示すエレメントからリクエストIUを取り出す。本実施形態では、コントローラ10は、リクエストIUが格納されているエレメント数を確認する。また、図4(B)に示すように、コントローラ10は、当該リクエストIUが複数のエレメントに分割されてIQ30に格納されている拡張IU(spanned IU)であるか否かを確認する。具体的には、コントローラ10は、IQ30からリードポインタIQ-RIに従って、リクエストIUの先頭を含めて任意数のエレメントを読み込み、先頭エレメントに含まれるIUヘッダのIUタイプ部及びIU長に設定されている情報とエレメントサイズを比較することで、拡張IUであるか否かを認識できる。
また、コントローラ10は、IQ30から取り出したリクエストIUに対するレスポンスIUを返す場合に、取り出したリクエストIUに含まれるIUヘッダのキューイング・インターフェース仕様部に設定されているOQ−ID情報に基づいてOQ31を識別する。ホスト2は、当該キュー(OQ)31からレスポンスIUを取り出す。
コントローラ10は、取り出したリクエストIUの中で先頭エレメントにあるIUヘッダのIU長を確認し、リクエストIUを完全に取得したと判断した場合に、リクエストIUの情報を後述するホスト要求処理部55に送る。取得したエレメント数では当該リクエストIUが完結していない場合には、完結できる全てのエレメント数を取得するまでホスト要求処理部55には送れない。この状態のままでは、ホスト2のIQに格納されたリクエストIUのコマンド処理が停滞することになる。そこで、コントローラ10は、当該リクエストIUの後続のエレメントを、他のIQのエレメントの取得より優先して取得するための処理を実行する。
図5は、本実施形態のコントローラ10の内部構成(機能)を示すブロック図である。
図5に示すように、コントローラ10は、I/Fコントローラ13に含まれる機能として、トランザクションコントローラ(Transaction Controller)50と、IUハンドラ(IU Handler)51と、TLP(Transaction Layer Packet)ハンドラ52と、キューコントローラ(Queue Controller)53と、TLPビルダ(TLP Builder)/IU生成器(IU Generater)54とを有する。なお、TLPビルダ(TLP Builder)/IU生成器(IU Generater)54は、TLPビルダ54と表記する。
さらに、コントローラ10は、メディアコントローラ14に含まれる機能として、ホストリクエスト(Host Request)処理部55を有する。また、コントローラ10は、バッファメモリ12を使用する機能として、ライトバッファ(Write Buffer)56及びリードバッファ(Read Buffer)57を有する。
トランザクションコントローラ50は、後述するSGLテーブルコントローラ(SGL Table Controller)を含み、TLPビルダ54に対してホスト2上の各IQからリクエストIUを取得するためのメモリリード用TLP(即ち、リード要求)の発行を要求する。IUハンドラ51は、各IQから取得されたリクエストIUのIUヘッダ(IU type, IU Length)をチェックする。IUハンドラ51は、ホスト2から取得したIUが拡張IU(spanned IU)または非拡張IU(non-spanned IU)のいずれかであるかを判別する。
TLPハンドラ52は、ホスト2からの情報がIU又はデータであるかを判別し、IUをIUハンドラ51に転送する。また、TLPハンドラ52はデータをライトバッファ56に格納する。キューコントローラ53は、ホスト2の各キューIQまたはOQの状態を管理し、ホスト2からセットされたキューを示す通知を受け付ける。キューコントローラ53は、その通知に応じてトランザクションコントローラ50にエレメント(即ち、IU)の取得要求を出す。
TLPビルダ54は、トランザクションコントローラ50からの要求に応じて、インターフェースバス20を介してリクエストIUの転送を要求するためのメモリリード用TLPをホスト2に発行する。また、TLPビルダ54は、リクエストの実行後のレスポンスを返すためにレスポンスIUをホスト2に送信する。ホストリクエスト処理部55は、IUハンドラ51から出力されるコマンド/タスク情報510を受け付けてコマンド処理又はタスク処理を実行する。即ち、ホストリクエスト処理部55は、例えばライトコマンドの場合には、ホスト2からのデータを、ライトバッファ56を経由して記憶媒体11に書き込むためのコマンド処理を実行する。また、ホストリクエスト処理部55は、例えばリードコマンドの場合には、記憶媒体11から読み出されたデータを、リードバッファ57を経由してホスト2に伝送するためのコマンド処理を実行する。
図6は、本実施形態のIUの中で、コマンドを格納するIUであるコマンドIUのフォーマット60の一例を示す。
図6に示すように、コマンドIUは、64バイト目からSGLの領域(SGL DESCRIPTOR)となる。SGLのフォーマットの一例は、図7を参照して後述する。コマンドIUはヘッダの部分として、IUタイプ(IU TYPE)、IU長(IU LENGTH)及びレスポンスOQ−ID(RESPONSE OQ ID)を有する。IUタイプは、ホスト2からのコマンド/タスクなどのリクエスト情報の種類を示す。IU長はIUのデータ長を示す。レスポンスOQ−IDは、レスポンスIUを返す場合のOQを識別するID情報を示す。
さらに、コマンドIUは、データバッファサイズ(DATA BUFFER SIZE)、CDB、付加的CDBバイト(ADDITIONAL CDB BYTES)を有する。データバッファサイズは、コマンド(リードまたはライトコマンド)で指定されるデータのバッファサイズを示す。CDBは、コマンド・ディスクリプタ・ブロック(command descriptor block)であり、コマンドの内容を記述するブロックである。付加的CDBバイトは、付加的CDBを記述するためのデータ長を示す。
前述したように、SGLは、ホスト2のメモリ空間200のアドレスを示すリストである。図6に示すように、SGLはコマンドIUに格納されてストレージデバイス1に提供される。ストレージデバイス1はSGLを使用して、メモリ空間200に分散されているデータを取得し、または、そのメモリ空間200にデータを転送できる。
図7はSGLのフォーマット70の一例を示す。図7に示すように、SGLは、メモリ空間200のアドレス(ADDRESS)及びアドレスのアクセスデータ長(LENGTH)を有する。アクセスデータ長は、当該アドレスによりアクセスするデータのデータ長を示す。また、SGLは、コマンドIUに格納されるSGLからリンクされて、ホスト2のメモリ空間200上に設定されることが可能である。この場合、ストレージデバイス1は、任意のタイミングでメモリ空間200上に設定されているSGLをリードし、データ転送を行うことになる。
以下、IUに格納されるSGLについて説明する。ここで、コマンドIUは、例えば、1個のSGLが16バイトで定義されている場合に、最大で252個のSGLを格納できる。一般的に、キューのエレメントサイズは、常に最大のIUサイズに合うように設定されるのではなく、そのシステムにおいて使用効率の良い適切なサイズが採用される。このため、多数のSGLを格納するIUは、複数エレメントに分割されてキューに格納される。
次に、図8に示すように、トランザクションコントローラ50は、SGLテーブルコントローラ80を有する。SGLテーブルコントローラ80は、SGLコントロールテーブル(SGL Control Table)81、SGLスタンダードテーブル(SGL Standard Table)82及びSGLセグメントテーブル(SGL Segment Table)83の3種のテーブルを管理する。なお、SGLセグメントテーブル83は、本実施形態では説明を省略する。
SGLテーブルコントローラ80は、トランザクションコントローラ50がIUを受信すると、SGLスタンダードテーブル82に一旦IU全体を格納する。当該テーブル82は、例えばエレメントサイズが256バイトで指定されたエレメント単位に区切られており、エレメントをリードするごとに登録される。SGLコントロールテーブル81は、
SGLスタンダードテーブル82に対してエレメント単位の登録が行われると同時に生成される。SGLコントロールテーブル81は、SGLスタンダードテーブル82に登録されるエレメントのそれぞれに対応付けられている(紐付け)。
SGLスタンダードテーブル82に対してエレメント単位の登録が行われると同時に生成される。SGLコントロールテーブル81は、SGLスタンダードテーブル82に登録されるエレメントのそれぞれに対応付けられている(紐付け)。
図9は、SGLコントロールテーブル81の一例を示す。図9に示すように、SGLコントロールテーブル81は、プライマリビット(PRIMARY bit : PRI)を有する。前述したように、SGLスタンダードテーブル82には、ホスト2からリードされたエレメントのIU(ここではコマンドIU)が格納される。PRIには、SGLスタンダードテーブル82に格納されたIUに対応付けられたSGLコントロールテーブル81であることを示すために“1”がセットされる。PRIに“1”がセットされたSGLコントロールテーブル81は、プライマリテーブル(Primary Table)と表記される。プライマリテーブル(テーブル81)は1個のIUにつき1個のみ生成される。
また、IUヘッダを含まない、後続のエレメントを登録したSGLコントロールテーブル81のPRIには“0”がセットされる。PRIに“0”がセットされたSGLコントロールテーブル81は、セカンダリテーブル(Secondary Table)と表記される。セカンダリテーブルは1個のIUにつき、生成されない場合(IUが1エレメントに収まっている)と、1個以上生成される場合(IUが複数エレメントに跨っている)がある。
SGLコントロールテーブル81にはテーブルIDが割り当てられており、後続のエレメントがどのテーブル81に格納されているかを示す次テーブル番号(NEXT TABLE NUMBER)が定義される。最後のIUのSGLコントロールテーブル81には、エンドビット(END bit : END)がセットされるため、そのSGLコントロールテーブル81に対応するIUが最終エレメントであることを認識することができる。さらに、SGLコントロールテーブル81には、残存SGL長(REMAINING SGL LENGTH)、スタンダードSGLテーブルオフセット(STANDARD SGL TABLE OFFSET)、SGLアドレスオフセット(SGL ADDRESS OFFSET)及びデータ転送バイト(DATA TRANSFER BYTES)が設定される。ここで、スタンダードSGLテーブルオフセットはどこまでSGLを処理したかを示す。残存SGL長は処理されていないSGLの量を示す。SGLアドレスオフセットは、SGLスタンダードテーブル82でのSGLの位置を特定するためのアドレスを示す。データ転送バイトはSGLにより転送されるデータ長を示す。
図10は、SGLコントロールテーブル81とSGLスタンダードテーブル82との関係を示す。ここでは、SGLスタンダードテーブル82に対してエレメント単位の登録が行われると同時に、例えば、5個(TBL1〜TBL5)のSGLコントロールテーブル81が生成される場合である。各テーブルTBL1〜TBL5は、SGLスタンダードテーブル82に登録されるエレメントのそれぞれに対応付け(紐付け)られて、登録されたエレメントに応じて有効フラグ(VLD)に“1”がセットされる。(図10を修正)
[インターフェース制御動作]
以下、図11から図16を参照して、本実施形態のコントローラ10の動作を説明する。
[インターフェース制御動作]
以下、図11から図16を参照して、本実施形態のコントローラ10の動作を説明する。
先ず、図15のタイミングチャートを参照して、コントローラ10が、ホスト2からコマンドIU(後述するようにリードコマンドを含む)を取得する処理を説明する。
コントローラ10において、キューコントローラ53はホスト2からセットされたキューを示す通知を受けると、トランザクションコントローラ(T−コントローラ)50に対してエレメント(即ち、コマンドIU)の取得要求を出す(ブロック1500)。T−コントローラ50は、SGLテーブルコントローラ80を介して、SGLスタンダードテーブル82の空き状況を問い合わせる。
T−コントローラ50は、SGLテーブルコントローラ80からの応答である空き状況を示す情報と、キューコントローラ53から要求されたエレメント数に基づいて実際に取得するエレメント数を算出する。T−コントローラ50は、算出したエレメント数に基づいてホスト2からリクエストIUを取得するためのメモリリード用TLPの発行(即ち、リード要求)をTLPビルダ54に要求する(ブロック1501)。TLPビルダ54は、インターフェースバス20を介して、当該TLPをホスト2に発行する(ブロック1502)。
次に、TLPハンドラ52は、ホスト2から、要求したリクエストIUに関する情報が含まれるTLPであるコンプリションTLP(Completion TLP)を受信すると、当該TLPがIU又はデータであるかを判別する。TLPハンドラ52は、受信したTLPがIU(要求のコマンドIU)の場合にはIUハンドラ51に転送する(ブロック1503)。IUハンドラ51は、IUのヘッダ(IU type, IU Length)をチェックし、ホスト2から取得したIUが拡張IU(spanned IU)または非拡張IU(non-spanned IU)のいずれかであるかを判別する。一方、TLPハンドラ52は、受信したTLPがデータの場合にはライトバッファ56に格納する。IUハンドラ51は、チェック後にコマンドIUをT−コントローラ50に転送する。また、IUハンドラ51は、SGLコントロールテーブル81であるプライマリテーブルのテーブルID及びコマンドIUに含まれるリードコマンド(510)をホストリクエスト処理部(HR処理部)55に転送する(ブロック1504)。
以下、本実施形態のコントローラ10による、リードコマンド処理の実行から完了までの具体的動作を説明する。また、図16のフローチャートを参照して、T−コントローラ50の内部動作も説明する。
コントローラ10は、リードコマンド処理を実行することにより、記憶媒体11から読み出したデータをホスト2に伝送する。
HR処理部55は、IUハンドラ51からリードコマンドを受け取ると、リードコマンド処理を開始する(ブロック1505)。具体的には、HR処理部55は、記憶媒体11から読み出されたデータがリードバッファ57に格納されてデータ転送の準備が完了すると、T−コントローラ50に対してSGLの処理に関する問い合わせを行なう。ここで、前述したように、HR処理部55は、IUハンドラ51から、SGLコントロールテーブル81であるプライマリテーブルのテーブルIDを受け取っている。HR処理部55は、SGLを参照するために、SGLコントロールテーブル81のテーブルIDをT−コントローラ50に渡す。
ここで、図16に示すように、T−コントローラ50は、IUハンドラ51からコマンドIU(リードコマンドを含む)を受け取ると、SGLテーブルコントローラ80を介して、受信したIU全体をSGLスタンダードテーブル82に格納する(ブロック1600)。図11に示すように、T−コントローラ50は、SGLスタンダードテーブル82に対してエレメント単位のIU(エレメントA1〜A4とする)を登録すると同時に、例えば、4個(TBL1〜TBL4)のSGLコントロールテーブル81を生成する(ブロック1601)。
なお、前述したように、SGLコントロールテーブル81とSGLスタンダードテーブル82とは、各テーブルTBL1〜TBL5がSGLスタンダードテーブル82に登録されるエレメントのそれぞれに対応付けられている(図10を参照)。また、図11に示すように、3個のTBL1〜TBL3それぞれの次テーブル番号(NEXT TABLE NUMBER)には、後続のエレメントに対応するテーブル番号(TBL2〜TBL4)が格納される。
T−コントローラ50は、HR処理部55から渡されたテーブルIDに基づいてSGLコントロールテーブル81のいずれかのテーブル(TBL1〜TBL5)を特定し、SGLスタンダードテーブル82のSGL位置を特定する。即ち、T−コントローラ50は、テーブルIDに基づいてSGLコントロールテーブル81を参照し、当該テーブル81のSGLアドレスオフセット(SGL ADDRESS OFFSET)からSGL位置を特定する(ブロック1602のYES,1603)。
次に、T−コントローラ50は、図7に示すように、特定されたSGLからメモリ空間200のアドレス(ADDRESS)及びデータ転送長(LENGTH)を取得し、TLPビルダ54に送る(ブロック1604)。
図15に戻って、T−コントローラ50は、リードデータをホスト2のメモリ空間200に書き込むためのメモリライト用TLP(Memory Write TLP)の発行(即ち、ライト要求)をTLPビルダ54に要求する(ブロック1506)。TLPビルダ54は、T−コントローラ50からの要求に応じて、インターフェースバス20を介してメモリライト用TLPをホスト2に発行する(ブロック1507)。即ち、TLPビルダ54は、HR処理部55によりリードバッファ57から転送されるデータに転送アドレス(SGLにより指定)を付加してメモリライト用TLPを生成し、ホスト2に送信する。これにより、ホスト2のメモリ空間200には、コマンドIUに含まれるSGLにより指定されたアドレスにリードデータが書き込まれる。
次に図16に戻って、T−コントローラ50は、リードデータ(記憶媒体11から読み出されたデータ)の転送に伴い、SGLコントロールテーブル81上のスタンダードSGLテーブルオフセット(STANDARD SGL TABLE OFFSET)を更新する(ブロック1605)。このテーブルオフセットは、SGL処理状況を示す情報である。即ち、当該テーブルオフセットは、SGLコントロールテーブル81において、あるセカンダリテーブル上のSGLが示すデータの転送が完了したか否かを示す。
SGLテーブルコントローラ80は、SGLが示すデータ転送が完了すると、図12に示すように、当該SGLを格納したセカンダリテーブル(ここではTBL2)に対応付けられたSGLコントロールテーブル81のVLDをクリア(ビット“0”を設定)する。また、SGLテーブルコントローラ80は、SGLスタンダードテーブル82のIUエレメントA-2に対する紐づけを説いて、このIUエレメントA-2を解放する。SGLテーブルコントローラ80は、プライマリテーブル(ここではTLB1)の次テーブル番号(NEXT TABLE NUMBER)をその次のテーブル番号(TLB3)に更新する。
T−コントローラ50は、SGLコントロールテーブル81のVLDをクリアした時点で、SGLスタンダードテーブル82の空き状況をサーチする(ブロック1606)。これにより、T−コントローラ50は、VLDがクリアされたSGLコントロールテーブル81を検索できることにより、直ちに次のIUの転送要求を実行できる。即ち、図13に示すように、SGLスタンダードテーブル82には、後続のIU(エレメントB-1,B-2)を格納できる。この時、SGLスタンダードテーブル82のIUエレメントA-3は転送が完了しており、SGLテーブルコントローラ80により該SGLを格納したセカンダリテーブル(ここではTBL3)に対応付けられたSGLコントロールテーブル81のVLDはクリア(ビット“0”を設定)される。
なお、プライマリテーブル(TLB1)は、コマンドIUのヘッダ情報が格納されているため、レスポンスを返すまでその情報を必要とする。即ち、レスポンスを返すタイミングは、要求のコマンドIUに対するリードデータの転送処理が完了し、その実行結果がレスポンスIUとしてホスト2のキューOQ(Outbound Queue)に格納されるまでであることが好ましい。このレスポンスIUがOQに格納された時点で、図14に示すように、プライマリテーブル(TBL1)のVLDは、クリア(ビット“0”を設定)される。
以上のように本実施形態によれば、ホストのメモリ空間をアクセスするSGLを含むコマンドIUなどのIUをエレメント単位で管理するテーブルから、コマンド処理が完了したSGLを含むテーブル情報を解放する。従って、IUを管理するテーブル情報を格納するメモリ容量を最小限にできるため、使用効率の良いテーブル管理を実現することができる。
具体的には、要求したIUを全て取り込んだ後に、IUをエレメント単位で管理するテーブルからコマンド処理が完了したSGLを含むエレメントを解放する。これにより、次のIUを取り込むために、テーブルの空き領域を準備できる。従って、レスポンスを返すまでIU全体をテーブルに保持する必要はなく、テーブルの使用効率の良いテーブル管理を実現できる。結果的に大容量のテーブルは不要にでき、そのテーブル情報を格納するメモリの容量を削減できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…ストレージデバイス、2…ホスト、
IQ,OQ,IQ-1〜IQ-3,OQ-1〜OQ-3…キュー、
10…コントローラ、11…記憶媒体、12…バッファメモリ、
13…インターフェースコントローラ(I/Fコントローラ)、
14…メディアコントローラ、20…インターフェースバス、21…キューセット、
50…トランザクションコントローラ、51…IUハンドラ、
52…TLPハンドラ、53…キューコントローラ、
54…TLPビルダ、55…ホストリクエスト処理部、
56…ライトバッファ、57…リードバッファ。
IQ,OQ,IQ-1〜IQ-3,OQ-1〜OQ-3…キュー、
10…コントローラ、11…記憶媒体、12…バッファメモリ、
13…インターフェースコントローラ(I/Fコントローラ)、
14…メディアコントローラ、20…インターフェースバス、21…キューセット、
50…トランザクションコントローラ、51…IUハンドラ、
52…TLPハンドラ、53…キューコントローラ、
54…TLPビルダ、55…ホストリクエスト処理部、
56…ライトバッファ、57…リードバッファ。
Claims (9)
- ホストとの間で情報の伝送を行なうためのインターフェース手段と、
前記ホストのメモリ空間のアドレスを管理する管理情報を保持するテーブル手段と、
前記管理情報を使用して前記ホストのメモリ空間をアクセスするコマンド処理を実行するコマンド処理手段と、
前記コマンド処理に対応する前記管理情報を前記コマンド処理の完了に応じて前記テーブル手段から解放する第1の制御手段と
具備するインターフェース制御装置。 - 前記インターフェース手段を介して、前記ホストでのキュー手段の格納単位であるエレメントから、前記管理情報を含み、前記コマンド処理を指示するリクエスト情報を取り出し、
前記リクエスト情報を前記エレメント単位で前記テーブル手段に格納する第2の制御手段を有する請求項1に記載のインターフェース制御装置。 - 前記第1の制御手段は、
前記リクエスト情報のヘッダを含む第1のエレメント以外の第2のエレメントについては、当該第2のエレメントに対応する第2のリクエスト情報を、前記コマンド処理の完了後に前記テーブル手段から解放し、
前記第1のエレメントについては、当該第1のエレメントに対応する第1のリクエスト情報を、前記第2エレメントを解放した後に解放する請求項2に記載のインターフェース制御装置。 - 前記第2の制御手段は、
前記第1の制御手段により前記第2のリクエスト情報が前記テーブル手段から解放された後に、前記キュー手段から取得される次の前記管理情報を含むエレメントに対応するリクエスト情報を前記テーブル手段に格納する請求項2または請求項3に記載のインターフェース制御装置。 - 前記テーブル手段は、前記管理情報をエレメント単位で格納する第1のテーブル手段と前記リクエスト情報の全てをエレメント単位で格納する第2のテーブル手段とを含み、
前記第2の制御手段は、
第1のテーブル手段と前記第2のテーブル手段とをエレメント単位で対応付けて管理する請求項2から請求項4のいずれか1項に記載のインターフェース制御装置。 - 前記管理情報は前記ホストのメモリ空間をアクセスするためのアドレスを含み、
前記コマンド処理手段は、
前記第2の制御手段により取得した前記リクエスト情報がリードコマンドを含む場合に、読み出し対象のデータを前記管理情報のアドレスで指定された前記ホストのメモリ空間に書き込む処理を実行し、
前記第2の制御手段により取得した前記リクエスト情報がライトコマンドを含む場合に、
前記管理情報のアドレスで指定された前記ホストのメモリ空間上のデータを読み出す処理を実行する請求項2から請求項5のいずれか1項に記載のインターフェース制御装置。 - 請求項1から請求項6のいずれか1項に記載のインターフェース制御装置と、
記憶媒体と、
前記コマンド処理手段のコマンド処理に基づいて、前記記憶媒体に対するデータの読み出し、書き込みを実行するリードライト制御手段と
を具備するデータ記憶装置。 - ホストとデータ記憶装置との間で情報の伝送を行なうインターフェース制御装置に適用するインターフェース制御方法であって、
前記ホストから取得し、前記ホストのメモリ空間のアドレスを管理する管理情報を格納し、
前記管理情報を使用して前記ホストのメモリ空間をアクセスするコマンド処理を実行し、
前記コマンド処理に対応する前記管理情報を前記コマンド処理の完了に応じて解放するインターフェース制御方法。 - 前記ホストでのキューの格納単位であるエレメントから前記コマンド処理を指示するリクエスト情報を取り出し、
前記管理情報を含む前記リクエスト情報を前記エレメント単位で前記テーブル手段に格納する請求項8に記載のインターフェース制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013088435A JP2014211801A (ja) | 2013-04-19 | 2013-04-19 | インターフェース制御装置、データ記憶装置及びインターフェース制御方法 |
US14/022,431 US9201611B2 (en) | 2013-04-19 | 2013-09-10 | Interface control apparatus, data storage apparatus and interface control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013088435A JP2014211801A (ja) | 2013-04-19 | 2013-04-19 | インターフェース制御装置、データ記憶装置及びインターフェース制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014211801A true JP2014211801A (ja) | 2014-11-13 |
Family
ID=51729937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013088435A Pending JP2014211801A (ja) | 2013-04-19 | 2013-04-19 | インターフェース制御装置、データ記憶装置及びインターフェース制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9201611B2 (ja) |
JP (1) | JP2014211801A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10339079B2 (en) * | 2014-06-02 | 2019-07-02 | Western Digital Technologies, Inc. | System and method of interleaving data retrieved from first and second buffers |
US20170102879A1 (en) * | 2015-10-12 | 2017-04-13 | Sandisk Technologies Inc. | Descriptor data management |
CN112988623B (zh) * | 2019-12-17 | 2021-12-21 | 北京忆芯科技有限公司 | 加速sgl处理的方法与存储设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11327798A (ja) * | 1998-05-20 | 1999-11-30 | Matsushita Electric Ind Co Ltd | データ転送制御装置 |
JP2002091717A (ja) * | 2000-09-19 | 2002-03-29 | Oki Data Corp | 印刷システム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004094533A (ja) | 2002-08-30 | 2004-03-25 | Hajime Seki | 計算機システム |
JP2006238039A (ja) | 2005-02-24 | 2006-09-07 | Fujitsu I-Network Systems Ltd | パケット処理装置 |
JP4457306B2 (ja) | 2005-03-30 | 2010-04-28 | 株式会社デンソー | 自動車用制御ユニット |
JP2007228227A (ja) | 2006-02-23 | 2007-09-06 | Fujitsu Ltd | 通信装置 |
-
2013
- 2013-04-19 JP JP2013088435A patent/JP2014211801A/ja active Pending
- 2013-09-10 US US14/022,431 patent/US9201611B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11327798A (ja) * | 1998-05-20 | 1999-11-30 | Matsushita Electric Ind Co Ltd | データ転送制御装置 |
JP2002091717A (ja) * | 2000-09-19 | 2002-03-29 | Oki Data Corp | 印刷システム |
Also Published As
Publication number | Publication date |
---|---|
US9201611B2 (en) | 2015-12-01 |
US20140317362A1 (en) | 2014-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8195909B2 (en) | Data management in a data storage system | |
JP4748610B2 (ja) | 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用 | |
US8458381B2 (en) | Processing host transfer requests for direct block access storage devices | |
US9176673B2 (en) | Memory device | |
JP5029513B2 (ja) | 情報処理装置、情報処理装置の制御方法、およびプログラム | |
US9336153B2 (en) | Computer system, cache management method, and computer | |
CN109478168B (zh) | 内存访问技术及计算机*** | |
US20170192718A1 (en) | Storage apparatus and data processing method thereof, and storage system | |
KR101663066B1 (ko) | 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐 | |
US20150253992A1 (en) | Memory system and control method | |
JP2021526255A (ja) | 分散集積リストの順不同処理の方法 | |
JP2014211801A (ja) | インターフェース制御装置、データ記憶装置及びインターフェース制御方法 | |
US9910797B2 (en) | Space efficient formats for scatter gather lists | |
US10733118B2 (en) | Computer system, communication device, and storage control method with DMA transfer of data | |
JP2018504689A5 (ja) | ||
US20140310458A1 (en) | Data transferring method and apparatus and storage system | |
US10268388B2 (en) | Access control method, storage device, and system | |
US20150242160A1 (en) | Memory system, control method of memory system, and controller | |
JP5908416B2 (ja) | インターフェース制御装置、データ記憶装置及びインターフェース制御方法 | |
US20150254187A1 (en) | Storage device, information processing apparatus, and cache control program | |
US10228883B2 (en) | Storage device that postpones completion of read command to begin execution of a non-read command | |
US10713171B2 (en) | Computer system | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
US20220300424A1 (en) | Memory system, control method, and memory controller | |
US20240168877A1 (en) | Solving submission queue entry overflow with an additional out-of-order submission queue entry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150812 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160728 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160816 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170221 |