JP5908416B2 - インターフェース制御装置、データ記憶装置及びインターフェース制御方法 - Google Patents

インターフェース制御装置、データ記憶装置及びインターフェース制御方法 Download PDF

Info

Publication number
JP5908416B2
JP5908416B2 JP2013010076A JP2013010076A JP5908416B2 JP 5908416 B2 JP5908416 B2 JP 5908416B2 JP 2013010076 A JP2013010076 A JP 2013010076A JP 2013010076 A JP2013010076 A JP 2013010076A JP 5908416 B2 JP5908416 B2 JP 5908416B2
Authority
JP
Japan
Prior art keywords
request
read
information
elements
read request
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.)
Expired - Fee Related
Application number
JP2013010076A
Other languages
English (en)
Other versions
JP2014142757A (ja
Inventor
鶴見 浩司
浩司 鶴見
豪紀 小池
豪紀 小池
信昭 吉武
信昭 吉武
友雄 内海
友雄 内海
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 JP2013010076A priority Critical patent/JP5908416B2/ja
Priority to US13/921,538 priority patent/US9110856B2/en
Publication of JP2014142757A publication Critical patent/JP2014142757A/ja
Application granted granted Critical
Publication of JP5908416B2 publication Critical patent/JP5908416B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0608Saving storage space on storage systems
    • 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

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)
  • Information Transfer Systems (AREA)

Description

本発明の実施形態は、ホストとデータ記憶装置間のインターフェースを制御するインターフェース制御装置、データ記憶装置及びインターフェース制御方法に関する。
近年、ホストとデータ記憶装置(ストレージデバイス)間のインターフェースとして、例えばPCI Express(登録商標、以下PCIe)規格にSCSI規格をマッピングしたSOP(SCSI over PCI Express)と呼ばれる規格などが提案されている。
このようなインターフェース規格の特徴としては、ホスト側において、コマンド、タスク等の処理要求を行なうリクエスト(Request)情報、及びストレージデバイスからのレスポンス(Response)情報をキューイングできる複数のキュー(queue)を配置できる。さらに、これらの複数キューをストレージデバイス側で制御するためのインターフェース制御仕様が設定されている。
特開2006−273261号公報
複数のキューに格納するリクエスト情報及びレスポンス情報は、情報ユニット(Information Unit:IU)と呼ばれることがあり、それぞれリクエストIU及びレスポンスIUと表記される。情報ユニットは、1つのエレメント単位で格納される場合と複数のエレメントに分割されて格納される場合がある。ここで、エレメントとは、情報ユニットを格納するキューの格納単位である。
複数のエレメントに分割されてキューに格納されているリクエスト情報をストレージデバイス側に発行する場合(即ち、ストレージデバイス側が取り出す場合)に、エレメント単位での転送処理において分割された一部のエレメントがキューに滞留する可能性がある。このような事態が発生すると、ストレージデバイス側は、全てのエレメントが転送されるまで当該リクエスト情報の処理を実行できないため、処理効率が低下することになる。
そこで、本発明の目的は、複数のエレメントに分割されたリクエスト情報の処理を効率良く実行できるインターフェース制御装置、データ記憶装置及び方法を提供することにある。
本実施形態のインターフェース制御装置は、インターフェース手段と、制御手段とを具備する。インターフェース手段は、ホストとデータ記憶装置間における情報の転送を行なう。制御手段は、インターフェース手段を介して、ホスト側に設けられたキュー手段の格納単位であるエレメントからデータ記憶装置に対する処理要求を指示するリクエスト情報を取り出す場合に、複数のエレメントに分割されて格納されている第1のリクエスト情報の未取得情報単一エレメントに格納されている第2のリクエスト情報に対して優先的に取り出すリード要求処理を実行する。
実施形態に関するシステム構成を説明するためのブロック図。 実施形態に関するインターフェース構成を説明するための概念図。 実施形態に関するキューの構成を説明するための図。 実施形態に関する情報ユニットの格納仕様を説明するための図。 実施形態に関する情報ユニットのフォーマットを説明するための図。 実施形態に関するI/Fモジュールの要部を説明するためのブロック図。 実施形態に関するIQリードリクエスタの構成を説明するための図。 実施形態に関する情報ユニットのリード要求処理を説明するためのフローチャート。
以下図面を参照して、実施形態を説明する。
[システム構成]
図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モジュール(以下、I/Fモジュール)13及びメディアコントローラ14を含む。本実施形態では、I/Fモジュール13は、インターフェースバス20を介してホスト2と接続し、後述するように、リクエスト情報(リクエストIU)及びレスポンス情報(レスポンスIU)の転送を制御する転送コントローラである。メディアコントローラ14は、I/Fモジュール13と連携し、記憶媒体11に対するデータのリード処理またはライト処理を制御するリード/ライトコントローラである。バッファメモリ12は、I/Fモジュール13の制御により情報を格納するメモリである。
図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)に示すように、各キュー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)と呼ぶ。
図5は、リクエストIUのフォーマットの概略を説明するための図である。このフォーマットは、例えば、SOP規格またはPQI(PCI Express Queuing Interface)規格に準拠している。
図5に示すように、フォーマットは大別して、IUヘッダ50、キューイング・インターフェース仕様(Queuing Interface Specific)部51、及びIU仕様(IU specific)部52を含む。キューイング・インターフェース仕様部51には、例えばリクエストIUの応答に使用するレスポンスIUを返すべきOQを識別するためのOQ−ID情報などが設定される。IU仕様部52には、例えばSCSI規格のコマンド(リード/ライトコマンドなど)の種類などが設定される。
IUヘッダ50には、IUタイプ(IU TYPE)部53、コンパティブル・フィーチャー(COMPATIBLE FEATURES)部54、及びIU長(IU LENGTH)55が含まれる。IUタイプ部53には、例えば、ホスト2からのコマンド、タスクなどのリクエスト情報の種類が設定される。コンパティブル・フィーチャー部54は、現在の規格では無視されるフィールドである。IU長55にはIUのデータ長を示す情報が設定される。
ここで、前述したように、ストレージデバイス1のコントローラ10は、キュー(IQ)30からリードポインタIQ-RIで示すエレメントからリクエストIUを取り出す。本実施形態では、コントローラ10は、リクエストIUが格納されているエレメント数を確認する。即ち、図4(B)に示すように、コントローラ10は、当該リクエストIUが複数のエレメントに分割されてIQ30に格納されている拡張IU(spanned IU)であるか否かを確認する。具体的には、コントローラ10は、IQ30からリクエストIUの先頭を含めて任意数のエレメントを読み込み、先頭エレメントに含まれるIUヘッダ50のIUタイプ部53及びIU長55に設定されている情報を確認することで、拡張IUであるか否かを認識できる。
また、コントローラ10は、IQ30から取り出したリクエストIUに対するレスポンスIUを返す場合に、IUヘッダ50のキューイング・インターフェース仕様部51に設定されているOQ−ID情報に基づいてOQ31を識別する。ホスト2は、当該キュー(OQ)31からレスポンスIUを取り出す。
次に、図6は、コントローラ10に含まれるI/Fモジュール13の要部を示す図である。本実施形態では、I/Fモジュール13は、キューマネージャ(Queue Manager)60と呼ぶモジュールを含む構成である。
図6に示すように、キューマネージャ(Queue Manager)60は、IQコントローラ65とOQコントローラ66を有し、ホスト2の各キューIQ(IQ-1〜IQ-3)及びOQ(OQ-1〜OQ-3)の状態を管理する。以後、各キューは便宜的に各IQまたは各OQと表記する。
IQコントローラ65は、各IQの格納状態を示す情報(IQInfo #0〜#N)を保持するレジスタ67と、IQリードリクエスタ(IQ Read Requester)68と、IQポインタ更新部(IQ(RI/WI) Updater)69を含む。レジスタ67には、各IQのライトポインタIQ-WIとリードポインタIQ-RIが格納される。IQリードリクエスタ68は、各IQに格納されているリクエストIUのリード要求を調停する。IQポインタ更新部69は、各IQのリードポインタIQ-RI及びライトポインタIQ-WIの更新を実行する。
一方、OQコントローラ66は、各OQの格納状態を示す情報(OQInfo #0〜#N)を保持するレジスタ70と、OQポインタ更新部(OQ(RI/WI) Updater)71と、割り込み合体(Interrupt Coalescing)部72を含む。レジスタ70には、ライトポインタOQ-WIとリードポインタOQ-RIが格納される。なお、本実施形態は、IQコントローラ65に関するものであるため、OQコントローラ66の具体的な説明は省略する。
さらに、図6に示すように、キューマネージャ60の周辺には、IUハンドラ(IU Handler)61と、トランザクションコントローラ(Transaction Controller)62と、TLP作成部(TLP Builder)63と、割り込みコントローラ(MSI-X Interrupt Controller)64とが含まれる。MSI-Xとは、PCIe規格で規定される割り込み処理を意味する。
さらに、キューマネージャ60の周辺には、メディアコントローラ14によりアクセス可能なレジスタ群80と、ホスト2側のインターフェース(PCIe)上でのベースアドレスレジスタ(base address register : BAR)群81と、レスポンスハンドラ(Response Handler)82とが含まれる。
レスポンスハンドラ82は、リクエストの実行後のレスポンスを返すためにレスポンスIUの送信をTLP作成部63に要求し、レスポンスIUをホスト2のOQに格納する。また、レスポンスハンドラ82は、OQコントローラ66にライトポインタOQ-WIのアップデートを指示する。割込みコントローラ64は、割り込み合体部72からの指示により、ホスト2に対してMSI-X割込み処理を実行してレスポンスIUを格納したことを通知する。レジスタ群80は各ブロックを制御するためのレジスタ群である。ベースアドレスレジスタ群81は、インターフェース(PCIe)を介してホスト2からアクセス可能なレジスタ群である。
IUハンドラ61は、各IQから取得されたリクエストIUのIUヘッダ50をチェックする。トランザクションコントローラ62は、ホスト2上の各IQからリクエストIUを取得するためのリード要求をTLP作成部63に対して実行する。TLP作成部63は、トランザクションコントローラ62からのリード要求に応じて、インターフェースバス20を介してリクエストIUの転送を要求するためのTLパケット(Transaction Layer Packet : TLP)を作成する。
以下、図6を参照して、ストレージデバイス1のコントローラ10がリクエストIUを取得するための処理を説明する。
ホスト2がいずれかのIQにリクエストIUを格納した後、ストレージデバイス1のレジスタ67のライトポインタIQ-WIをインターフェースバス20を介して更新する。次に、IQコントローラ65はレジスタ67を参照して、各IQのライトポインタIQ-WIとリードポインタIQ-RIとの差分をチェックし、いずれかのIQにリクエストIUが格納されていることを認識する。IQリードリクエスタ68は、当該差分が発生した場合に、各IQからリクエストIUをリードするためのリード要求(REQ信号)100をトランザクションコントローラ62に出力する。
TLP作成部63は、トランザクションコントローラ62からのリード要求に応じて、リクエストIUの転送要求のためのTLパケットを作成してインターフェースバス20上に発行する。この場合、TLP作成部63は、リードポインタ更新部69からIQの最新のリードポインタ(IQ-RI)102を受け取り、そのリードポインタ102からリード要求を行なうTLパケット(TLP)をホスト2に発行する。
このような処理により、コントローラ10は、インターフェースバス20を介して、IQから任意のエレメント数分のリクエストIUをリードする。トランザクションコントローラ62は、取り出したエレメント数分だけ進めた各IQのリードポインタ(IQ-RI)の更新値101をIQコントローラ65に出力する。リードポインタ更新部69は、当該更新値101をセットする。
一方、ホスト2は、コントローラ10からのリード要求(TLパケット)に応じて、IQから読み出したリクエストIUのデータを含む処理完了のTLパケット(Completion TLP)を、インターフェースバス20を介して伝送(返信)する。前述したように、IUハンドラ61は、伝送されたリクエストIUのIUヘッダ50を解析し、当該リクエストIUがIQからリードされたエレメント数で完結しているか否かをチェックする。即ち、IUハンドラ61は、図4(B)に示すように、当該リクエストIUが複数のエレメントに分割されてIQに格納されたものであるか否かを確認する。
コントローラ10(実際にはI/Fモジュール13)は、当該リクエストIUが1単位のエレメントの場合、または当該リクエストIUが取得した複数のエレメント数で完結している場合、ホスト要求(Host Request)処理部に当該リクエストIUを送出する。ホスト要求処理部とは、ホスト2からの要求(即ち、記憶媒体11に対するデータのリード/ライトコマンド)を解析して実行するコマンド処理部である。本実施形態では、コントローラ10に含まれるメディアコントローラ14である。
ここで、コントローラ10は、取得したエレメント数では当該リクエストIUが完結していない場合には、完結できる全てのエレメント数を取得するまでホスト要求処理部には送れない。この状態のままでは、ホスト2のIQに格納されたリクエストIUのコマンド処理が停滞することになる。
そこで、本実施形態のIQコントローラ65は、IQリードリクエスタ68により、当該リクエストIUの後続のエレメントを、他のIQのエレメントの取得より優先して取得するための処理を実行する。以下、図7及び図8を参照して具体的に説明する。
図7に示すように、IQリードリクエスタ68は、FIFO(first-in first-out)セレクタ90と、3種のFIFO91〜93と、転送を調停するためのアービタ(Arbiter)94とを含む。FIFOセレクタ90は、3種のFIFO91〜93からいずれかのFIFOを選択する。3種のFIFO91〜93とは、例えばPQI規格のAdministrator IQ用の高優先(Hi priority)FIFO(以下、H−FIFOと表記)91、中間優先(Mid priority)FIFO(以下、M−FIFOと表記)92、及び低優先(Low priority)FIFO(以下、L−FIFOと表記)93のFIFO式バッファである。
次に、図8のフローチャートを参照して、IQリードリクエスタ68の動作を説明する。
リード要求(REQ)の発生時に、IQリードリクエスタ68において、少なくともFIFO91〜93のいずれかにはリード要求(IQの識別情報IQID-nを含む)が保持されているものとする。IQリードリクエスタ68は、各IQからリクエストIUをリードするためのリード要求が、例えばPQI規格のAdministrator IQ用の高優先のリード要求(Hi要求)であるか否かを判定する(ブロック800)。本実施形態では、当該高優先のリード要求処理は、複数のエレメントに分割されたリクエストIUを取得する処理とは直接的に関係しないため、省略されてもよい。
Hi要求の場合(ブロック800のYES)には、IQリードリクエスタ68は、FIFOセレクタ90により選択されたH−FIFO91から、リード要求のIQID-0を読み出す(ブロック801)。この場合、アービタ94がH−FIFO91を優先的に選択することにより、H−FIFO91からリード要求(IQID-0)が読み出される。
さらに、IQリードリクエスタ68は、リード要求のIQID-0のアクティブ数(有効なエレメント数)を取得する(ブロック802)。この場合、図3(A)に示すように、IQのいわゆるラップアラウンド(wrap around)によるエレメント数もチェックする。次に、前述したように、IQリードリクエスタ68は、リード要求(REQ信号)100をトランザクションコントローラ62に出力する(ブロック803)。この場合、リード要求100にはIQID-0及びアクティブ数が含まれている。
トランザクションコントローラ62はリード要求(REQ信号)100を受領すると、応答信号(ACK信号)をIQリードリクエスタ68に返信する。この時点で、IQリードリクエスタ68はH−FIFO91からリード要求(IQID-0)を送出し、H−FIFO91から当該リード要求(IQID-0)を除去する(ブロック804)。
一方、本実施形態では、M−FIFO92は、リード要求が拡張IU(spanned IU)の場合に、取得すべき複数エレメントの中で未取得である残りエレメントのリード要求(ここではIQのIQID-nはIQID-5とする)を保持する。拡張IUは、図4(B)に示すように、例えば4エレメント数に分割されたリクエストIUである。また、L−FIFO93は、H−FIFO91及びM−FIFO92のいずれかのリード要求以外のリード要求を保持する。
IQリードリクエスタ68は、Hi要求ではない場合(ブロック800のNO)、後述するような拡張IUの残りエレメントに対する要求であると判断される場合を除いて、Mid要求でない、即ち、Low要求と判定する(ブロック805のNO)。即ち、IQリードリクエスタ68は、FIFOセレクタ90により選択されたL−FIFO93から、リード要求(IQID-3)を読み出す(ブロック813)。さらに、IQリードリクエスタ68は、リード要求のIQID-3のアクティブ数(有効なエレメント数)を取得する(ブロック814)。前述したように、IQのラップアラウンド(wrap around)によるエレメント数もチェックする。
次に、IQリードリクエスタ68は、リード要求(REQ信号)100をトランザクションコントローラ62に出力する(ブロック815)。トランザクションコントローラ62はリード要求(REQ信号)100を受領すると、応答信号(ACK信号)をIQリードリクエスタ68に返信する。この時点で、IQリードリクエスタ68はL−FIFO93からリード要求(IQID-3)を送出し、L−FIFO93から当該リード要求(IQID-3)を除去する(ブロック816)。
本実施形態では、IQリードリクエスタ68は、Hi要求ではなく(ブロック800のNO)、M−FIFO92にリード要求が保持されている場合には、アービタ94によりL−FIFO93に対して優先的な調停動作を実行させる(ブロック805のYES)。前述したように、M−FIFO92には、拡張IUの取得すべき複数エレメントの中で未取得である残りエレメントのリード要求(IQID-5)が保持されている。
IQリードリクエスタ68は、FIFOセレクタ90により選択されたM−FIFO92から、リード要求(IQID-5)を読み出す(ブロック806)。さらに、IQリードリクエスタ68は、リード要求のIQID-5のアクティブ数(有効なエレメント数)を取得する(ブロック807)。前述したように、IQのラップアラウンド(wrap around)によるエレメント数もチェックする。ここで、IQリードリクエスタ68は、レジスタ67に保持されているリードポインタIQ-RIに基づいて残りエレメント数をチェックする(ブロック808)。
次に、IQリードリクエスタ68は、リード要求(REQ信号)100をトランザクションコントローラ62に出力する(ブロック809)。トランザクションコントローラ62はリード要求(REQ信号)100を受領すると、応答信号(ACK信号)をIQリードリクエスタ68に返信する。
ここで、前述したように、TLP作成部63は、トランザクションコントローラ62からのリード要求に応じて、リクエストIUの転送要求のためのTLパケットを作成してインターフェースバス20上に発行する。ホスト2は、当該リード要求(TLパケット)に応じて、IQから読み出したリクエストIUのデータ(ここでは、残りエレメントのデータ)を含む処理完了のTLパケット(Completion TLP)を、インターフェースバス20を介して伝送(返信)する。
コントローラ10側のIUハンドラ61は、伝送されたリクエストIUのIUヘッダ50を解析し、当該リクエストIUがIQからリードされたエレメント数で完結しているか否かをチェックし、残りエレメント数を通知する。即ち、IQリードリクエスタ68は、IUハンドラ61からの残りエレメント数の通知を受けて(ブロック810)、当該リクエストIUが取得したエレメント数で完結しているか否か、即ち、残りエレメントが0であるか否かを判定する(ブロック811)。残りエレメント数が0の場合(ブロック811のYES)、IQリードリクエスタ68は、M−FIFO92からリード要求(IQID-5)を除去する(ブロック812)。さらに、I/Fモジュール13は、ホスト要求処理部であるメディアコントローラ14に当該リクエストIUを送出する。
一方、リードされたエレメント数で完結していない場合には(ブロック811のNO)、
IQリードリクエスタ68は、残りエレメント数が0になるまで、トランザクションコントローラ62に対するリード要求の出力を繰り返す(ブロック809)。そして、IQリードリクエスタ68は、IUハンドラ61からの通知により残りエレメント数が0になると(ブロック810、811のYES)、M−FIFO92からリード要求(IQID-5)を除去する(ブロック812)。
I/Fモジュール13は、リクエストIUが拡張IUの場合に、全てのエレメント数を取得して完結した当該リクエストIUを、ホスト要求処理部であるメディアコントローラ14に送出する。これにより、メディアコントローラ14は拡張IUに基づいたコマンド処理を実行する。
なお、前記の拡張IUに対するリード要求処理は以下のような手順でもよい。即ち、IQリードリクエスタ68は、残りエレメントのリード要求をM−FIFO92に格納した後に、M−FIFO92から一旦リード要求を送出する。その後に、IQリードリクエスタ68は、トランザクションコントローラ62に対して、TLP作成部63からの残りエレメント分のリードリクエスト用TLパケットの発行を依頼する。IQリードリクエスタ68は、残りエレメント数が0になるまで、M−FIFO92にリード要求を再格納し、トランザクションコントローラ62に対してリードリクエスト用TLパケットの発行の依頼を継続する。
以上のように本実施形態によれば、IQに複数のエレメントに分割されて格納されている拡張IUであるリクエストIUをホスト2から読み出す場合に、当該リクエストIUの取得を他のIQのリクエストIUの取得より優先して行なうことが可能となる。即ち、拡張IUが完結するための全てのエレメント数を取得するまで、ホスト2に対するリード要求を繰り返し、且つ優先して行なうことができる。
ホスト2から転送されていない残りエレメントがIQに滞留している場合、ホスト要求処理部(メディアコントローラ14)では拡張IUであるリクエストIUの処理が進行できない。本実施形態は、IQに格納されている拡張IUの残りエレメント(取得済みエレメントの後続エレメント)を、他のエレメントよりも優先的に読み出すことができる。従って、拡張IUであるリクエストIUの処理を効率的に進行できる。
ホスト2の各IQから完結していない不完全な拡張IUが読み出された場合に、多数の不完全な拡張IUを一時的に格納するための一種のバッファメモリが必要となる。本実施形態の構成であれば、不完全な拡張IUの発生を抑制できるため、それらを一時的に格納するためのバッファメモリの容量を削減できる。即ち、ストレージデバイス1側のメモリリソースを最小限に抑制できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…ストレージデバイス、2…ホスト、
IQ,OQ,IQ-1〜IQ-3,OQ-1〜OQ-3…キュー、
10…コントローラ、11…記憶媒体、12…バッファメモリ、
13…インターフェースモジュール(I/Fモジュール)、
14…メディアコントローラ、20…インターフェースバス、21…キューセット、
60…キューマネージャ、61…IUハンドラ、62…トランザクションコントローラ、63…TLP作成部、65…IQコントローラ、68…IQリードリクエスタ。

Claims (9)

  1. ホストとデータ記憶装置間における情報の転送を行なうためのインターフェース手段と、
    前記インターフェース手段を介して、前記ホスト側に設けられたキュー手段の格納単位であるエレメントから前記データ記憶装置に対する処理要求を指示するリクエスト情報を取り出す場合に、複数のエレメントに分割されて格納されている第1のリクエスト情報の未取得情報単一のエレメントに格納されている第2のリクエスト情報に対して優先的に取り出すリード要求処理を実行する制御手段と、
    を具備するインターフェース制御装置。
  2. 前記制御手段は、
    前記キュー手段から前記リクエスト情報を前記エレメント単位で取り出すためのリード要求を前記ホスト側に転送する場合に、
    前記第1のリクエスト情報を構成する複数のエレメントの中で未取得の残りエレメントから取り出すためのリード要求を、単一エレメントから前記第2のリクエスト情報を取り出すためのリード要求に対して優先する請求項1に記載のインターフェース制御装置。
  3. 前記制御手段は、
    前記第1のリクエスト情報をエレメント単位で取り出すためのリード要求を格納する第1のバッファ手段と、
    前記第2のリクエスト情報をエレメント単位で取り出すためのリード要求を格納する第2のバッファ手段と、
    前記第1のバッファ手段に前記残りエレメントを取り出すためのリード要求が格納されている場合に、優先的に前記第1のバッファ手段を選択して前記第1のバッファ手段からのリード要求を前記ホスト側に転送する請求項2に記載のインターフェース制御装置。
  4. 前記制御手段は、
    前記残りエレメントが無くなるまで、前記第1のバッファ手段からのリード要求を継続的に前記ホスト側に転送する請求項3に記載のインターフェース制御装置。
  5. データを記憶する記憶媒体と、
    ホストとの間で情報の転送を行なうためのインターフェース手段と、
    前記インターフェース手段を介して、前記ホスト側に設けられたキュー手段の格納単位であるエレメントから前記記憶媒体に対するデータの書き込み、読み出しの処理要求を指示するリクエスト情報を取り出す場合に、複数のエレメントに分割されて格納されている第1のリクエスト情報の未取得情報単一エレメントに格納されている第2のリクエスト情報に対して優先的に取り出すリード要求処理を実行する制御手段と、
    を具備するデータ記憶装置。
  6. 前記制御手段のリード要求処理に応じて取得されたリクエスト情報に基づいて、前記処理要求を処理するホスト要求処理手段を有する請求項5に記載のデータ記憶装置。
  7. 前記制御手段は、
    前記キュー手段から前記リクエスト情報を前記エレメント単位で取り出すためのリード要求を前記ホスト側に転送する場合に、
    前記第1のリクエスト情報を構成する複数のエレメントの中で未取得の残りエレメントから取り出すためのリード要求を、単一エレメントから前記第2のリクエスト情報を取り出すためのリード要求に対して優先する請求項5または請求項6に記載のデータ記憶装置。
  8. 前記制御手段は、
    前記第1のリクエスト情報をエレメント単位で取り出すためのリード要求を格納する第1のバッファ手段と、
    前記第2のリクエスト情報をエレメント単位で取り出すためのリード要求を格納する第2のバッファ手段と、
    前記第1のバッファ手段に前記残りエレメントを取り出すためのリード要求が格納されている場合に、優先的に前記第1のバッファ手段を選択して前記第1のバッファ手段からのリード要求を前記ホスト側に転送する請求項7に記載のデータ記憶装置。
  9. ホストとデータ記憶装置間における情報の転送を行なうためのインターフェースに適用するインターフェース制御方法であって、
    前記ホスト側に設けられたキュー手段の格納単位であるエレメントから前記データ記憶装置に対する処理要求を指示するリクエスト情報を取り出す場合に、複数のエレメントに分割されて格納されている第1のリクエスト情報の未取得情報単一エレメントに格納されている第2のリクエスト情報に対して優先的に取り出すリード要求処理を実行するインターフェース制御方法。
JP2013010076A 2013-01-23 2013-01-23 インターフェース制御装置、データ記憶装置及びインターフェース制御方法 Expired - Fee Related JP5908416B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013010076A JP5908416B2 (ja) 2013-01-23 2013-01-23 インターフェース制御装置、データ記憶装置及びインターフェース制御方法
US13/921,538 US9110856B2 (en) 2013-01-23 2013-06-19 Interface control apparatus, data storage apparatus and method for interface control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013010076A JP5908416B2 (ja) 2013-01-23 2013-01-23 インターフェース制御装置、データ記憶装置及びインターフェース制御方法

Publications (2)

Publication Number Publication Date
JP2014142757A JP2014142757A (ja) 2014-08-07
JP5908416B2 true JP5908416B2 (ja) 2016-04-26

Family

ID=51208649

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013010076A Expired - Fee Related JP5908416B2 (ja) 2013-01-23 2013-01-23 インターフェース制御装置、データ記憶装置及びインターフェース制御方法

Country Status (2)

Country Link
US (1) US9110856B2 (ja)
JP (1) JP5908416B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507740B2 (en) 2014-06-10 2016-11-29 Oracle International Corporation Aggregation of interrupts using event queues
US11494316B2 (en) * 2020-08-24 2022-11-08 Advanced Micro Devices, Inc. Memory controller with a plurality of command sub-queues and corresponding arbiters

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3819233B2 (ja) 2000-11-22 2006-09-06 本田技研工業株式会社 車両用制御システム
JP2004054419A (ja) 2002-07-17 2004-02-19 Hitachi Ltd ノード間トランザクション処理装置
CN1689284B (zh) * 2003-01-20 2010-04-28 富士通微电子株式会社 网络交换装置和网络交换方法
JP2005301442A (ja) * 2004-04-07 2005-10-27 Hitachi Ltd ストレージ装置
JP4457306B2 (ja) 2005-03-30 2010-04-28 株式会社デンソー 自動車用制御ユニット
US8634422B2 (en) 2005-08-17 2014-01-21 Qualcomm Incorporated Prioritization techniques for quality of service packet transmission over a network lacking quality of service support at the media access control layer
JP5171602B2 (ja) * 2008-12-25 2013-03-27 京セラドキュメントソリューションズ株式会社 Raidドライバ及びこれを備えた電子機器並びにraidに対するアクセス要求調停方法
US8245064B2 (en) * 2009-06-16 2012-08-14 Seagate Technology Llc Power conservation during a power mode transition

Also Published As

Publication number Publication date
JP2014142757A (ja) 2014-08-07
US20140207980A1 (en) 2014-07-24
US9110856B2 (en) 2015-08-18

Similar Documents

Publication Publication Date Title
USRE47659E1 (en) Memory system having high data transfer efficiency and host controller
JP4748610B2 (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
JP4917174B2 (ja) 制御装置と通信するように構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作用の入出力処理を容易にするためのコンピュータ・プログラム、装置、および方法
CN109558344B (zh) 一种适用于网络传输的dma传输方法及dma控制器
JP5029513B2 (ja) 情報処理装置、情報処理装置の制御方法、およびプログラム
US6917992B2 (en) Method and apparatus for efficient command queuing within a serial ATA environment
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US20110225378A1 (en) Data Processing Apparatus, Data Processing Method, and Computer-Readable Recording Medium for Writing and Reading Data to and from a Storage
TWI727394B (zh) 記憶體系統及記憶體系統之控制方法
US10146475B2 (en) Memory device performing control of discarding packet
JP2010152571A (ja) Raidドライバ及びこれを備えた電子機器並びにraidに対するアクセス要求調停方法
US11138142B2 (en) Adaptive interface circuit
JP5908416B2 (ja) インターフェース制御装置、データ記憶装置及びインターフェース制御方法
US7409486B2 (en) Storage system, and storage control method
US9201611B2 (en) Interface control apparatus, data storage apparatus and interface control method
WO2015155850A1 (ja) 入出力装置及び方法
US10970244B2 (en) Smart interface circuit
JP5101195B2 (ja) インタフェースコントローラ
EP2503746A1 (en) Data transfer apparatus, data transfer method, and information processing apparatus
JP5637178B2 (ja) Dma転送装置、dma転送方法及びdma転送プログラム
CN116225318A (zh) 命令调度方法、闪存控制器、闪存设备及存储介质
JP2009169599A (ja) バス装置
JP2012048309A (ja) Usbホスト装置、及びプログラム
JP2005333481A (ja) データ転送装置及び通信データ処理システム
JP2012073663A (ja) Usbホスト装置、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160323

R151 Written notification of patent or utility model registration

Ref document number: 5908416

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees