JP2016528634A - ハードウェア自動デバイス・オペレーション・イニシエータの実装するための方法およびコントローラ - Google Patents

ハードウェア自動デバイス・オペレーション・イニシエータの実装するための方法およびコントローラ Download PDF

Info

Publication number
JP2016528634A
JP2016528634A JP2016533802A JP2016533802A JP2016528634A JP 2016528634 A JP2016528634 A JP 2016528634A JP 2016533802 A JP2016533802 A JP 2016533802A JP 2016533802 A JP2016533802 A JP 2016533802A JP 2016528634 A JP2016528634 A JP 2016528634A
Authority
JP
Japan
Prior art keywords
hardware
controller
command
inline
hardware engine
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.)
Granted
Application number
JP2016533802A
Other languages
English (en)
Other versions
JP6537510B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2016528634A publication Critical patent/JP2016528634A/ja
Application granted granted Critical
Publication of JP6537510B2 publication Critical patent/JP6537510B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0658Controller construction 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0683Plurality of storage devices

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)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ハードウェア自動デバイス・オペレーション・イニシエータをデータ・ストレージ・システムで実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体を提供する。【解決手段】本コントローラは、ホスト・コマンドを受信し、ファームウェアの関与なしに開始するため受信されたコマンドを精査するインライン・ハードウェア・エンジンを含む。インライン・ハードウェア・エンジンは、受信されたコマンドを実施するため、ハードウェア・コマンド・ブロックの一つ以上の連鎖を構築し、その受信されたコマンドに対しそれら連鎖または連鎖群の実行を開始する。【選択図】図1

Description

本発明は、一般にデータ処理の分野に関し、さらに具体的には、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体に関する。
ホスト・コンピュータ・システムを、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ、コンパクト・ディスク・ドライブなどの周辺ストレージI/Oデバイスに接続するためにストレージ・アダプタが用いられる。現在、ホスト・コンピュータ・システムをストレージ・アダプタに接続しそのストレージ・アダプタをストレージI/Oデバイスに接続するために、周辺構成機器相互接続エキスプレス(PCIe:Peripheral Component Interconnect Express)、シリアル接続SCSI(SAS:Serial Attach SCSI)、ファイバ・チャネル、およびインフィニバンド(R)など、様々な高速システム相互接続が用いられている。
これまで長年にわたり、ハード・ディスク・ドライブ(HDD:hard disk drive)または回転ドライブが、オンライン・アクセスを必要とするコンピュータ・データの永続ストレージのために使われる主要なストレージI/Oデバイスであった。近年、ソリッド・ステート・ドライブ(SSD:solid state drive)が、これらの最高データ速度が必ずしもHDDより高いわけではないにせよ、SSDの方が一般にHDDよりも多い秒あたりI/O(IOPS:I/O per second)を遂行する能力があるので、こちらの方がより普及してきている。
より高速でより高性能のソリッド・ステート・ドライブ(SSD)の出現に伴い、ストレージ・サブシステムに対する性能上の要求事項は桁上がりに増大してきた。このことは、コマンドのスループット、または小演算について特に言える。SSDによって提供される極めて低い待ち時間および極めて高いコマンド・スループットを利用した益々多くのアプリケーションが出現しており、多くの場合において、ストレージ・サブシステムがボトルネックになることがある。
従来型のストレージ・サブシステムまたはRAIDコントローラにおいて、要求がホストから着信し、多くの場合、この要求のフェッチはハードウェアによって自動化されている。ファームウェアがこの要求を調べ、取るべき一連の処置を判定する。多くの場合、この処理は、最初に非同期のハードウェア・オペレーションのシーケンスでの開始を伴う。この最初のオペレーションが完了すると、ファームウェアはそのオペレーションを再び精査して次の一連の処置を決める。これが、要求されたホスト・オペレーションが完了するまで行われ、ホストに応答が送信される。
より近年の高性能のストレージ・サブシステムでは、これらの非同期のハードウェアのオペレーションの多くを併せて連鎖することができ、ファームウェアは、ハードウェア・オペレーションの全てをセットアップしてシーケンスを開始し、連鎖全体の成功裏の完了、もしくは途中のどこかで生じたエラーの処理だけを行うことを可能にしている。
しかしながら、従来型の実装はもとより、より近年の高性能の実装の両方にあってさえも、ストレージ・サブシステムに対して高まる性能上の必要性にはまだ足りない。これら高性能の設計でさえも、ファームウェアが、一連のオペレーションを、連鎖の開始時および連鎖の完了時の少なくとも2回決めることを必要とし、さらに、ファームウェアがホストの要求を調査し、そのオペレーションを実行するためのハードウェア制御ブロックを構築することを必要とする。多くの場合、ファームウェアを起動するだけでも、コントローラのプロセッサの時間の30%もが消費され得る。
ハードウェア自動デバイス・オペレーション・イニシエータを実装するための効果的方法およびコントローラが必要とされている。
以下の説明および特許請求の範囲において使用される、用語、コントローラおよびコントローラ回路は、入力/出力(IO:input/output)アダプタ(IOA:IO adapter)を含めて広意に解されるべきであり、ホスト・コンピュータ・システムと、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ、コンパクト・ディスク・ドライブなどを含めた周辺ストレージI/Oデバイスとの様々な構成を接続するIO RAIDアダプタを含む。
本発明の主要な側面は、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体を提供することである。本発明の他の重要な側面は、実質的な悪影響を生じることなく、かかる方法、コントローラ、および設計構造体を提供し、従来技術の構成の欠点の多くを克服することである。
簡潔に言えば、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体が提供される。本コントローラは、ホストのコマンドを受信し、ファームウェアの関与なしに開始するため、受信されたコマンドを精査するインライン・ハードウェア・エンジンを含む。このインライン・ハードウェア・エンジンは、受信されたコマンドを実施するため、ハードウェアのコマンド・ブロックの一つ以上の連鎖を構築し、受信されたコマンドに対しその一つ以上の連鎖の実行を開始する。
本発明の特徴によれば、ホストのオペレーションのための、ハードウェアとファームウェアとの間の相互作用の回数は、ファームウェアの一度だけの関与に低減され、従来型の構成よりも、ストレージ・サブシステムを通して格段に良好なパフォーマンスを提供する。
本発明の特徴によれば、インライン・ハードウェア・エンジンは、各論理ホスト・リソースに対するレジスタを含み、これらレジスタは、対象ホスト・リソースに対し自動実行コマンドを有効化および無効化にすることができる。有効化設定は、リソースが、キャッシング中またはエラー処理中の論理ブロック・アドレス(LBA:Logical Block Address)転換を必要とするなど、当該リソースに対する構成が自動実行オペレーションを許さない場合に、ファームウェアが、ホスト・リソース毎に自動実行機能を無効化、または部分的に無効化にすることを可能にする。
本発明の特徴によれば、インライン・ハードウェア・エンジンは、各論理ホスト・リソースに対するレジスタを含み、これらレジスタは、各ホスト・リソースを物理デバイスに直接にリンクし、物理デバイスにエンジン・ルーティング情報を提供する。生成されたデバイス・オペレーションは、これらのレジスタ内に記述された物理デバイスに向けられる。
本発明の特徴によれば、インライン・ハードウェア・エンジンは、着信するコマンドをチェックし、それらが、例えば命令要件などのない単純な読み取りまたは書き込みなど自動実行オペレーションに対する基準に合致していることを確実にする。
本発明の特徴によれば、エラーおよびイベント取り扱いコードが、これら自動実行オペレーションの完了をキャッチする。このコードは、成功裏の完了を取り扱い、ホストへの良好な応答の送信を開始するだけである。
本発明は前述のおよび他の目的および利点と併せ、図面中に示された本発明の好適な実施形態の以下の詳細な説明から最善に理解することができよう。
好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための例示的なシステムを示す概略ブロック図である。 好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための例示のハードウェア・オペレーションを示す。 好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータにより実装される例示の自動生成の連鎖を示す。 好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータにより実装されたハードウェア・コマンド・ブロックの例示のストリングのエラー・パスの例を示す。 図5Aおよび5Bは、好適な実施形態による、直接インデックスのエラーの取り扱いの例を示す。 図6Aおよび6Bは、好適な実施形態による、ファームウェア(FW:firmware)イベントおよび制御の例を示す。 図7Aおよび7Bは、好適な実施形態による、ファームウェア(FW:firmware)イベントおよび制御のさらなる例を示す。 好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された例示の標準的フローを示す。 好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された、有効化および無効化イベント・キュー・オペレーションについての例を示す。 半導体の設計、製造、もしくは試験またはこれらの組み合わせに用いられる設計プロセスの流れ図である。
本発明の諸実施形態の以下の詳細な説明において添付の図面が参照され、これら図面は、本発明が実践できる例示の実施形態を示す。当然のことながら、本発明の範囲から逸脱することなく、他の実施形態を用いることができ構造的な変更を加えることも可能である。
本明細書で使用される用語は、特定の実施形態を説明するためだけのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある(“a”、“an”)」、および「該(“the”)」は、文脈上明瞭に別途に示されている場合を除き、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む(“comprise”)」もしくは「含んでいる(“comprising”)」またはその両方は、述べられた特徴、完全体(integer)、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在または追加を排除するものではない。
本発明の特徴によれば、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体が提供される。ホストのオペレーションのための、ハードウェアとファームウェアとの間の相互作用の回数は、ファームウェアの一度だけの関与に低減される。ファームウェアは、ホストの要求を見る必要はなく、いかなるハードウェア制御ブロックの構築をする必要もなく見る必要さえない。これは、従来型の実装と比べて、ファームウェアが関与する必要のある時間の少なくとも50%を除去し、そのオペレーション構築の負担全体を除去する。これは、ストレージ・サブシステムを通して格段に良好なパフォーマンスをもたらし、SSDによく適した多くの新生の作業負荷を可能にする。
ここで図1を参照すると、好適な実施形態による、全体を参照符号100で指定された入力/出力アダプタ(IOA)またはコントローラが示されている。コントローラ100は、一つ以上のプロセッサまたは中央処理ユニット(CPU:central processor unit)106を含む少なくとも一つのプロセッサ複合体104に連結された半導体チップ102を含む。コントローラ100は、CPU106に近接し、コマンド・ブロック、作業キュー、およびイベント・キューのストレージを提供する、ダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic random access memory)などの制御ストア(CS:control store)108を含む。コントローラ100は、不揮発性(NV:non−volatile)バックアップ・メモリ110と、例えばハードウェアによって実施される、データ並びにコマンド・ブロックの設定および処理のためのスクラッチ・バッファを提供するデータ・ストア(DS:data store)112を含むことができる。コントローラ100には、不揮発性ランダム・アクセス・メモリ(NVRAM:non−volatile random access memory)114およびフラッシュ・メモリ116を含めてもよい。
本発明の特徴によれば、コントローラ100は、ホスト・システム134からホスト・コマンドを受信し、ファームウェアの関与なしに開始するため受信したコマンドを精査する、インライン・ハードウェア・エンジン118を含む。インライン・ハードウェア・エンジン118は、受信したコマンドを実施するために、ハードウェア・コマンド・ブロックの一つ以上のストリングまたは連鎖を構築し、受信したコマンドに対しその一つ以上のストリングの実行を開始する。インライン・ハードウェア・エンジン118は、各論理ホスト・リソースに対するレジスタ119を包含するかまたはそれらに接続され、これらレジスタは、対象ホスト・リソースに対する自動実行コマンドを有効化および無効化することを可能にする。インライン・ハードウェア・エンジン118は、各論理ホスト・リソースに対するレジスタ119を包含するかまたはそれらに接続され、これらレジスタは、各ホスト・リソースを物理デバイスに直接リンクし、物理デバイスに到達するためのエンジン・ルーティング情報を提供する。インライン・ハードウェア・エンジン118によって生成されたデバイス・オペレーションは、これらレジスタ119内に記述された物理デバイスに向けられる。
本発明の特徴によれば、レジスタ119は、各論理ホスト・リソースに関連付けられる。これらのレジスタ119は、自動読み取りおよび自動書き込みを有効化および無効化する能力を包含する。また、これらのレジスタ119は、他のハードウェアのオフロード・オペレーションを有効化および無効化する能力を包含してもよい。自動実行機能を有効化にするときは、有効化レジスタ119をオンにする以外の処置を取る必要はない。自動実行機能を無効化にするときは、有効化レジスタをオフにする以外の処置を取る必要はない。これは、実施する必要のある静止化または同期化は、自動実行機能に関係なく同様に実施できるからである。自動実行機能を、例えば、自動読み取りおよび自動書き込みから自動読み取りだけに変更するとき、その自動実行機能全体を無効化し、次いで所望の機能だけを有効化することができる。これは、アトミック性問題に起因するいかなる問題点も生じないことを確実にする。物理ルーティング情報は、アトミックに修正可能な単一のレジスタ119内に全て保持される。しかして、或るドライブへの経路が別の経路に変更され、または障害迂回しなければならない場合、そのルーティング情報は、自動実行機能の中断なしに更新することができる。
コントローラ半導体チップ102は、割り当てエンジン120A、ホスト直接メモリ・アクセス(HDMA:host direct memory access)エンジン120H、シリアル接続SCSI(SAS)エンジン120S、および割り当て解除エンジン120Dなど、インライン・ハードウェア・エンジン118によって構築されるハードウェア・コマンド・ブロックの連鎖を実施するための複数のハードウェア・エンジンを含む。
本発明の特徴によれば、かなりの従来型ファームウェア機能が、インライン・ハードウェア・エンジン118によって実施されるHWのオペレーションに移される。
図示のように、コントローラ半導体チップ102は、コントローラ半導体チップ102とプロセッサ複合体104との間で周辺構成機器相互接続エキスプレス(PCIe)高速システム相互接続を用いるそれぞれのPCIeインターフェース128;並びに、コントローラ半導体チップ102と、ハード・ディスク・ドライブ(HDD)または回転ドライブ132およびソリッド・ステート・ドライブ(SSD)132など複数のストレージデバイス132の各々との間でシリアル接続SCSI(SAS)高速システム相互接続を用いるSASコントローラ130;を含む。ホスト・システム134は、PCIe高速システム相互接続を用いてコントローラ100に接続される。当然のことながら、外部のプロセッサ複合体104である必要はなく、コントローラ半導体チップ102に内蔵することもできよう。
DS112は、例えば8GBのDRAMを含み、揮発性もしくは不揮発性またはその両方の4KBページのデータ、DSの連続する領域中に各不揮発性の頁の書き込みキャッシュのための一つのキャッシュ・ライン(CL:cache line)を有する32バイトのCL、およびCL領域の後のDSの連続する領域中に32バイトのパリティ更新フットプリント(PUFP:parity update footprint)を格納する。
コントローラ半導体チップ102および制御ストア(CS)108は、図3に示しこれに関連して説明するような、インライン・ハードウェア・エンジン118によって構築されたハードウェア・コマンド・ブロックの連鎖と、他の構造体およびコマンドのブロックとを格納する。
図2を参照すると、好適な実施形態による、全体を参照符号200によって指定された、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための例示のハードウェア・オペレーションが示されている。ブロック202に示されるように、受信されたコマンドまたは受信されたオペレーションの処理が開始される。
判定ブロック204に示されるように、ファームウェアの関与なしにコマンドが開始できるかどうかを判定するためにコマンドの精査が行われる。ホストによってオペレーションが開始されると、いかなる要求についても、ハードウェアはその要求を記述した制御ブロックをフェッチする。制御ブロックが到着してメモリに収納されると、判定ブロック204で、ハードウェアが要求を調べる。次いで、判定ブロック204で、ハードウェアは、当該オペレーションが、自動実行オペレーションが可能な論理リソースに向けられているかどうかをチェックする。判定ブロック204で、ハードウェアは、オペレーションが読み取りかまたは書き込みかをチェックする。判定ブロック204で、ハードウェアは、オペレーションが単純なタグだけを、またはタグなしのキューのタグを有するのかどうかをチェックする。判定ブロック204で、ハードウェアは、オペレーションが他の複雑な要件を有していないかどうかをチェックする。
例えば、判定ブロック204で、インライン・ハードウェア・エンジン118は、対象ホスト・リソースに対し自動実行コマンドを有効化および無効化することが可能かどうかを判定するために、論理ホスト・リソースに対するレジスタ119をチェックする。レジスタ119によって提供される有効化設定は、リソースが、キャッシング中またはエラー処理中の論理ブロック・アドレス(LBA)変換を必要とするなど、当該リソースに対する構成が自動実行オペレーションを許さない場合に、ファームウェアが、ホスト・リソース毎に自動実行機能を無効化または部分的に無効化にすることを可能にする。判定ブロック204で、インライン・ハードウェア・エンジン118は、着信したコマンドをチェックし、それらが、例えば命令要件等のない単純な読み取りまたは書き込みなど、自動実行オペレーションに対する基準に合致することを確実にする。判定ブロック204で現在の構成にHW自動実行機能を使用する能力がないと判定された場合、受信されたコマンドは、ブロック206に示されるように、HWイベント・キューに置かれる。
判定ブロック204で現在の構成にHW自動実行機能を使用する能力があると判定された場合、次いでインライン・ハードウェア・エンジン118は、読み取りまたは書き込み要求を実施するためにハードウェア・コマンド・ブロックの一つ以上のストリングを構築し、次いで、ブロック208に示されるように、それらストリングの実行を開始する。インライン・ハードウェア・エンジン118は、当該オペレーションが読み取りで前述のチェックに合格した場合、要求を実施するためにハードウェア・コマンド・ブロックの一つ以上のストリングを構築する。例えば、ハードウェアは、図3に関連して図示、説明するように、着信ホスト・オペレーションに関連付けられた2Kのハードウェア・バッファ中にこれら制御ブロックを構築する。
ブロック208において、直接インデックス・モードは、リソース・アロケータを経由するオーバーヘッドを低減するため、いくつかの小オペレーションに使用可能な事前割り当てされたリソースの特別なセットから成る。着信オペレーションが1つの4Kページだけを使う場合、ページは、ホスト・オペレーションに関連付けられた各制御ブロックに黙示的に結合されている。この単一のページは、標準のページ割り当てエンジンを経由せずに直接使用することができる。
エラーおよびイベント取り扱いコードは、判定ブロック210に示されるように、これらの自動実行オペレーションの完了をキャッチする。このコードは、ブロック212に示されるように、成功裏の完了を取り扱い、ホストへの良好な応答の送信を開始するだけである。成功裏の完了は、ハードウェア・コマンド・ブロックのストリングの終端での制御ブロックの成功裏の完了に対してだけ取り扱われる。成功裏の完了は、当該オペレーションに従事するファームウェアだけに、ホスト要求毎に一度だけもたらされる。また、当該ファームウェアは、ホスト要求を見る必要は全くなく、ハードウェア制御ブロックを構築する必要または見る必要さえ全くない。
ブロック214に示されるように、エラーおよびイベント取り扱いコードは、ハードウェア・コマンド・ブロックの自動実行ストリング内の一切のハードウェア制御ブロックの、判定ブロック210でのエラー終了を取り扱う。エラー取り扱いコード・ファームウェアは、失敗したストリングを精査し、このコードがハードウェア・コマンド・ブロックのストリングを開始していたかのように見えるように必要な制御を構築する。ブロック214で、エラー取り扱いコードは、このとき、あたかも当該自動実行オペレーションがファームウェアの関与なく開始されたものではなかったかのように、エラー取り扱いを開始することになる。基本的には、このコードは、自動実行オペレーションを通常の非自動実行オペレーションに変換する。ブロック214で、エラーおよびイベント取り扱いコードは、あたかも自動実行オペレーションが、ファームウェアの知見で構築され実行されたかのように、外部との同期化および併合を取り扱う。同期および併合には、全ての可能な制御ブロックが実行中かどうかを見るためにこれらを調べ、実行中の場合、同期化または併合作業を必要とするオペレーションを潜在的にマークすることを必要とする。良好な完了では、同期化または併合に対する全ての外部要求は、チェックする場合、オペレーション毎に単一の変数の単一のチェックで把握されることになる。エラー終了に対しては、当該オペレーションが変換された後、全ての取り扱いは、標準の非自動オペレーションのエラーを取り扱うエラー取り扱いルーティン内で行われる。
図3を参照すると、好適な実施形態による、全体を参照符号300によって指定された、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された例示の自動生成連鎖が示されている。ハードウェアHWは、着信したホスト要求を調べ、オペレーションの適切な連鎖を構築する。図示された自動生成連鎖300は、4Kよりも大きいホスト書き込み連鎖302、4Kよりも大きいホスト読み取り連鎖304、4K以下のホスト書き込み連鎖306、および4K以下のホスト読み取り連鎖308を含む。4Kより大きいホスト書き込み連鎖302は、データの転送に使われるページまたはバッファを割り当てるための割り当てAオペレーションと、そのデータを、PCIeバスを介してホストのメモリから書き込みのために割り当てられたバッファ中に転送するための、またはそのデータをPCIeバスを介してバッファから読み取りのためにホストのメモリに転送するための、ホスト直接メモリ・アクセス(HDMA:host direct memory access)Hのオペレーションと、バッファからのデータをドライブに書き込むための、またはドライブからのデータを割り当てられたバッファ中に読み取るための、シリアル接続SCSI(SAS)Sのオペレーションと、ページまたはバッファを開放するための割り当て解除Dのオペレーションと、を含む。
4Kより大きいホスト読み取り連鎖304は、割り当てA、SAS S、HDMA H、および割り当て解除Dのオペレーションを含む。4K以下のホスト書き込み連鎖306は、ホスト直接メモリ・アクセス(HDMA)H、およびシリアル接続SCSI(SAS)Sのオペレーションを含む。4K以下のホスト読み取り連鎖308は、SAS S、およびHDMA Hのオペレーションを含む。
本発明の特徴によれば、4K以下のホスト書き込み連鎖306およびホスト読み取り連鎖308に対して、使われている2Kのハードウェア制御ブロックに関連付けられた、事前割り当てされたページが用いられる。これは、ホスト書き込み連鎖306およびホスト読み取り連鎖308中での割り当ておよび割り当て解除制御ブロックの構築および使用を回避して、2つの領域におけるパフォーマンスに影響を与える。第一に、これは、SASまたはHDMAオペレーションを開始可能にするためその前に行う割り当てエンジンの実行の必要性を除去することによって待ち時間を低減する。第二に、これは、ハードウェアによって実施される制御ストア相互作用の回数を減らす。まず、割り当ておよび割り当て解除制御ブロックのセットアップを回避することによって、2つの16または32バイトの制御ブロックの制御ストアへの書き込みを除去する。次に、割り当て/割り当て解除エンジンをリンクしないことによって、これらの同じ制御ブロックのフェッチが除去され、さらに多くの制御ストア・オペレーションが節減される。最後に、割り当ておよび割り当て解除エンジンを実行しないことによって、ページ・テーブルおよびページなしリストの両方が読み取り/書き込みされず、制御ストアへの別の2〜4回のアクセスが節減される。
単一の4Kページだけにタッチするオペレーションに対しては、直接インデックス・モードが用いられ、直接インデックスは、各2Kのハードウェア制御バッファ(HwCb:hardware control buffer)に固定された1頁を有する。事前割り当てされた頁または直接インデックス・モードの使用は、ハードウェア自動実行オペレーションの要件ではないが、これは、自動実行オペレーションが活用可能なパフォーマンスの増強である。構築された各制御ブロック連鎖は、対応するレジスタ・セットからのイベントIDを有する。連鎖302、304、306、308中の最後の制御ブロックが成功裏に完了、または連鎖中のいずれかの制御ブロックがエラー終了すると、イベントIDを使ってファームウェアに終了が連絡される。
割り当てオペレーションAおよび割り当て解除オペレーションDを構築するために、必要なデータの全てがホスト要求内に包含される。要求されたLBAおよび長さに基づいて、4Kに配列された頁の全長を算定することができる。この数が1より大きい場合、割り当ておよび割り当て解除制御ブロックが生成される。数が1より小さい場合、事前割り当てされた黙示の頁が使用される。割り当ておよび割り当て解除制御ブロックの両方は、着信ホスト・オペレーションに関連付けられた2Kのハードウェア制御ブロックの未使用部分中に、ページ・テーブルの宛先/発信元とともに生成されることになる。
HDMAオペレーションHを構築するために、必要なデータの全てがホスト要求内に包含される。転送の型、ヘッダの有無、必要なデータチェックなどがホスト要求中に含まれる。また、宛先または発信元ホスト・メモリ・アドレスもホスト要求の中に在る。
SASオペレーションSを構築するために、ホスト要求からの情報および物理ドライブへの経路指定の仕方の情報が用いられる。これらの情報は、所与の論理ホスト・リソース対し、図1のインラインHWエンジン118によってレジスタ119中に保持される。この情報は、当該オペレーションを取り扱うことになるSASエンジンに対するチップまたはSASエンジン番号を含む。また、この情報は、ポート番号およびデバイス番号を含む。このポート番号は、所与のSASエンジンに接続されたSASポート番号である。このデバイス番号は、SASエンジンによって保持され、SASエンジンが所与のデバイス132に対するSASアドレスをルックアップすることを可能にする、アレイ中へのインデックスである。基本的に、ハードウェアが物理デバイス132に到達するために必要となるルーティング情報の全てが、チップ102中のレジスタ119内に保持され、ハードウェアはファームウェアの関与なしに到達することができる。自動実行機能が有効化されるのに先立って、これらのレジスタ119が、ファームウェアによってセットアップされる。
図2中のブロック208に示されるように、ハードウェア制御ブロックが構築されたならば、ハードウェアは、ファームウェアがオペレーションを開始するのと同じ様にオペレーションを開始できるようになる。オペレーションの連鎖全体が実行され、図2のブロック212に示されるように、成功裏の完了とともに、ハードウェアは当該連鎖の成功裏の完了をファームウェアに連絡するイベントを生成することになる。この場合、ファームウェアはそのイベントをキャッチし、そのイベントを追跡すべきような何事も生じなかったことを確実にし、ホストへの応答を開始することになる。
図2中のブロック214に示されるように、ファームウェアが、全ての未処理のオペレーションを併合または同期化する必要がある場合、ホスト・オペレーションに関連付けられた制御ブロックの中に指示が入れられる。成功裏の完了時にこの指示がオンである場合、ファームウェア制御ブロックが、ファームウェアに開始されたオペレーションを模擬するように調整されることになる。次いで、図2中のブロック214に示されるように、その完了は、あたかもファームウェアが当該オペレーションを開始したかのように取り扱われることになる。
図4に関連して図示、説明するように、連鎖のいずれかの部分に不具合が生じた場合、あたかもその連鎖がファームウェアによって開始されたかのように、ハードウェアは、その連鎖を停止し、連鎖中の不具合を生じた制御ブロックに対する不具合イベントを生成し、図2中のブロック214に示されるように、HWコマンド・ブロックに対するエラー終了を取り扱うことになる。イベントIDは、ファームウェアに、適切なイベント・ハンドラへの経路を指定することになる。次いで、イベント・ハンドラは、当該オペレーションに関連付けられたまたは関連付け予定のファームウェア制御ブロックを、そのオペレーションがファームウェアによって開始されたように、変更または充足することになる。当該オペレーションがファームウェアによって開始されていれば存在したはずの制御ブロックを疑似するための、ファームウェア中の全てのものがセットアップされたならば、ファームウェアは、あたかもファームウェア開始の標準のオペレーションの不具合であるかのように、不具合イベントの処理を開始する。この時点以降の全てのエラー取り扱いは、標準のファームウェア開始のオペレーションに対して行われるものと同じである。
図4を参照すると、好適な実施形態による、全体を参照符号400で指定された、ハードウェア自動デバイス・オペレーション・イニシエータにより実装されたハードウェア・コマンド・ブロックの例示のストリングのエラー・パスの例が示されている。エラー・パス400は、シリアル接続SCSI(SAS)Sブロック中に示された、エラーを有するオペレーションA、H、S、Dを含む、4Kより大きなホスト書き込み連鎖402を示す。エラーの場合、不具合HwCbに対しエラー・イベントが生成される。ファームウェアは、自動開始連鎖402を、FW開始のように見える連鎖、またはFW実施パス・オペレーション/構成体404に変換することになる。ほとんどの場合、これは、FWが実行中であったことの自分の認知を表すビットをオンにすることを伴う。また、仮想機能ポインタ・テーブルを構築するために、コンストラクタが実行される。あらゆるものが、FWが、FW実施パス・オペレーション/構成体404として当該オペレーションを開始したように見えるようにして、既存のエラー・パス406に示されるように、全ての既存のエラー取り扱いコードがそのまま使われる。
ここで、図5Aおよび5Bを参照すると、好適な実施形態による、それぞれ全体を参照符号500および510で指定された、直接インデックス・エラーの取り扱いの例が示されている。
図5Aにおいて、直接インデックス・エラーの取り扱いの例500は、シリアル接続SCSI(SAS)Sブロック中に示された、オペレーションHおよびエラーを有するオペレーションSを含む、4K以下のホスト書き込み502を含む。ファームウェアは、直接インデックスの使用については不知である。書き込み不具合に対し、割り当て制御ブロックA、および割り当てAの後にHDMA制御ブロックHが再構築される。この新規連鎖は、連鎖A、H504で示されるように実行される。Sブロック中にエラーを有するFW実施パス・オペレーション/構成体506に、標準のエラー処理が適用される。
図5Bにおいて、直接インデックス・エラーの取り扱いの例510は、シリアル接続SCSI(SAS)ブロック中に示された、エラーを有するオペレーションS、およびオペレーションHを含む、4K以下のホスト書き込み512を含む。読み取り不具合に対し、直接インデックスを用いた自動読み取りオペレーションは、FWによって実行された実施パス読み取りオペレーションであったかの如く見えるように変換される。エラー処理の過程では、不在の割り当てAおよび割り当て解除Dは使用されない。エラー処理がエラーを一掃したならば、オペレーション全体が、標準の読み取りオペレーションとして再発行される。これと前述で行われたこととの間の差異は、オペレーションを再開始するに先立って、ページを割り当て解除する前に、割り当てまたは割り当て解除制御ブロックが存在するかどうかをチェックすることである。
次いで、図6Aおよび6Bを参照すると、好適な実施形態による、それぞれ全体を参照符号600および610で指定された、ファームウェア(FW)のイベントおよび制御の例が示されている。
また、図7Aおよび7Bを参照すると、好適な実施形態による、それぞれ全体が参照符号700および710で指定された、ファームウェア(FW)のイベントおよび制御のさらなる例が示されている。
本発明の特徴によれば、図6Aおよび6B、並びに図7Aおよび7Bは、一般に、自動SAS書き込みの変換を処置するコード中の3つの異なるパスを取り扱う。第一に、様々なエンジンにおいて新規のオペレーションが発信されないように、全処理の凍結が行われる。次に、オペレーションが取り得る3つのポジションに対するチェックが行われる。まず、オペレーションがすでにHDMAエンジンを既に通過している可能性がある。この場合、そのオペレーションは、あたかもFWがそれを開始したかのように、実施パス書き込みオペレーションに変換される。次に、オペレーションがまだHDMAエンジンに入っていない可能性がある。この場合、そのオペレーションがHDMAエンジンに入るときに、連鎖がHDMAエンジンを過ぎて続かないように(しかして、自動割り当ておよびDMAオペレーションに見えるように)、HDMA制御ブロックは連鎖の最後になるように変更される。最後に、オペレーションがHDMAエンジンの中に在る場合は、そのオペレーションは中止される。但し、これは非同期オペレーションなので難しいことが分かっている。この中止はHDMAエンジン中のオペレーションを喪失する可能性があり、HDMAが空白で終了する可能性があって、その場合、これはあたかもそのオペレーションがHDMAエンジンを過ぎて進捗されたのと同様に取り扱われる。あるいは、この中止によってHDMAを実際に停止することも可能である。この場合、時によっては、当該オペレーションを同期して検出することが可能なこともあり、時によっては可能でないこともある。可能な場合には、その処置をするために標準のエラー処理が用いられる。分からない場合には、オペレーションは、HDMAを通過済みであり得ると仮定され、しかして、そのオペレーションはHDMAエンジンを過ぎて進捗しているものとして処理される。最後に、この場合、HDMA制御ブロックに対する中止イベントの受信は、変換済みの連鎖に対するものとして取り扱われる。
図6Aにおいて、FWのイベントおよび制御の例600は、ホスト直接メモリ・アクセス(HDMA)Hブロック中に示された、イベントを有するオペレーションA、H、S、Dを含む、4Kより大きいホスト書き込み連鎖602を含む。FWは、これらのオペレーションを、実施パス・オペレーションA、H、S、Dを含むFW実施パス・オペレーション/構成体604に変換する。
図6Bにおいて、FWのイベントおよび制御の例610は、ホスト直接メモリ・アクセス(HDMA)Hブロック中に示された、イベントを有するオペレーションA、H、S、Dを含む、4Kより大きいホスト書き込み連鎖602を含む。FWは、これらのオペレーションを、実施パス・オペレーションA、Hを含むFW実施パス・オペレーション/構成体612に変換する。
図6Aおよび6Bにおいて、FWは、ホスト書き込み連鎖602のこれらのオペレーションについて実際は不知である。FWが、オペレーションH中に示されるオペレーションを停止または休止する必要のある場合に何らかのオペレーションを行いたいとき、FWは、全てのオペレーションを知る必要があり、FWは、全てのあり得るHW自動オペレーションをくまなく探してオペレーションを変換し、且つ、それらのオペレーションを、図6A中のFW実施パス・オペレーション/構成体604によっておよび図6B中のFW実施パス・オペレーション/構成体612において示されるような、FW開始の実施パス・オペレーションに見えるように変換する。書き込みの場合、既存の自動割り当ておよびDMAに起因して、オペレーションを、自動割り当てのDMAオペレーションに変換する必要があることがあり、これには、HDMAオペレーションHの後の連鎖を終了するためHwCbの変更が含まれる。
図7Aにおいて、FWのイベントおよび制御の例700は、ホスト直接メモリ・アクセス(HDMA)Hブロック中に示された、イベントおよび中止を有するオペレーションA、H、S、Dを含む、4Kより大きいホスト書き込み連鎖702を含む。FWは、これらオペレーションを、実施パス・オペレーションA、H、S、Dを含むFW実施パス・オペレーション/構成体704に変換する。
図7Bにおいて、FWのイベントおよび制御の例710は、ホスト直接メモリ・アクセス(HDMA)Hブロック中に示された、イベントおよび中止を有するオペレーションA、H、S、Dを含む、4Kより大きいホスト書き込み連鎖702を含む。FWは、これらオペレーションを、自動割り当てのオペレーションA、Hを含むDMAオペレーション/構成体712に見えるように変換する。
図7Aおよび7Bにおいて、変換が開始されようとするときに、ホスト書き込み連鎖702中に示されるようにHDMAエンジンがオペレーションHを実行している場合、HwCb Hは、それが既に処理中なので変更することができず、且つ、それが次のHwCbを開始してしまう可能性があるので継続させることはできない。この時、HDMAオペレーションの中止が必要となる。オペレーションが連鎖中の次のCbを開始したとき、HDMAオペレーションの停止が失敗したと想定され、この場合そのオペレーションは変換される。連鎖が停止された場合は、中止イベントは達成され、連鎖は変換されない。一部の場合に、HDMAオペレーションの中止が失敗または失敗しなかったことがあってその後にオペレーションが変換されたとき、オペレーションは変換されたがHDMAを実際に完了していないかどうかを取り扱う必要がある。中止イベントが非同期的に到着したとき、HDMAに対する中止イベントは、HDMAオペレーションが中止されることを示す。オペレーションが変換されたがHDMAが中止されたことが判明した場合、FWインジケータはクリアされ、HDMAオペレーションは連鎖の終端に再構築され、再発行される。
図8を参照すると、好適な実施形態による、全体を参照符号800で指定された、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された、生成イベントを有する標準フローまたは良好パスの例が示されている。ブロック802に示されるように、入力/出力アダプタ要求制御ブロック(IOARCB:input/output adapter request control block)の調査が実施される。現行構成は、ブロック802で調査されたIOARCBに対しHW自動実行機能を用いる能力があり、インライン・ハードウェア・エンジン118は、ブロック804に示されるように、IOARCBを実施するために、ハードウェア・コマンド・ブロックの連鎖を構築し、次いで、それぞれオペレーションA、H、S、D808を含む複数のブロック806、808、810、812中に示されるような実行の連鎖を開始する。ブロック814に示されるように、イベントが生成される。ブロック816に示されるように、FWプロセスの完了が提供される。ブロック818に示されるように、次いで、FWは、ホストへの応答の送信を開始する。
図9を参照すると、好適な実施形態による、全体を参照符号900で指定された、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された有効化および無効化イベント・キュー・オペレーションについての例が示されている。一般に有効化は簡単である。FWが、図1の一部のリソース取り扱いハードウェア・レジスタ119毎にいくつかのビットを書き込み、これらビットが書き込まれた後、HWは、任意の新規オペレーションに対する連鎖を自動構築する。無効化は、いくつかの非同期手段に頼る必要があるのでもっと複雑である。
図9において、例示の有効化および無効化イベント・キュー・プロセス900は、FWが処理した直近のイベント906の間に示される未知のゾーン904を有するイベント・キュー902と、受信された無効化ポイント補助およびファームウェア・イベント908とを含む。全ての可能な未処理補助オペレーションを変換することによって、未知のゾーン904のウィンドウが低減される。ファームウェアがアトミックにHWを無効化したならば、もはや自動オペレーションは生成されない。イベント・キュー902中の、無効化ポイント補助および受信ファームウェア・イベント908の後の全ての後側オペレーションは自動オペレーションではない。FWが処理した直近のイベント906において、予期しない自動オペレーションの完了がないように、全ての可能なSAS補助のオペレーションに対し変換が実施され、ファームウェアはそれ自体にイベント・キューについてのイベントを送信する。FWが、906でそれ自体にイベントを送信し、908でそれを受信することによって、未知のゾーン904のウィンドウがバインドされる。FWイベントの前に、HWは、それが自動オペレーションを開始したことを表すイベントを送信することができる。FWは、これらのイベントをフィルタして、無効化の過程で自分が行った変換を明らかにする必要がある。FWイベントの後、FWはイベント・キューのフィルタを停止して、イベント・キューの標準処理に戻ればよい。
図10は、例示の設計フロー1000のブロック図を示す。設計フロー1000は、設計されるICの種類によって変わり得る。例えば、特定用途向けIC(ASIC:application specific IC)を作製するための設計フロー1000は、標準部品を設計するための設計フロー1000とは異なり得る。設計構造体1002は、望ましくは設計プロセス1004へのインプットであり、このインプットはIPプロバイダ、コア開発者、または他の設計会社から来ることもあり、あるいは、設計フローのオペレータによって生成されることもあり、または他の提供源によることもある。設計構造体1002は、回路図、または例えば、Verilog、VHDL、Cなどのハードウェア記述言語HDLの形で、コントローラ100およびチップ102を含む。設計構造体1002は、一つ以上のマシン可読媒体に包含することができる。例えば、設計構造体1002は、コントローラ100およびチップ102のテキスト・ファイルまたはグラフ表示であってよい。設計プロセス1004は、望ましくは、コントローラ100およびチップ102をネットリスト1006中に合成または転換し、ネットリスト1006は、例えば、集積回路設計中の他の素子および回路への接続を記述し、少なくとも一つのマシン可読媒体に記録される、ワイヤのリスト、トランジスタ、論理ゲート、制御回路、I/O、モデルなどである。これは、ネットリスト1006が、コントローラ100およびチップ102に対する設計仕様およびパラメータの如何によって、一回以上にわたり再合成される、相互作用プロセスであり得る。
設計プロセス1004には、例えば、32nm、45nm、90nmといった各種技術ノードなど所与の製造技術に対する、モデル、レイアウト、および記号表現を含め、よく使われる素子、回路、およびデバイスのセットを収納可能なライブラリ・エレメント1008、設計仕様1010、特性化データ1012、検証データ1014、設計ルール1016、および、試験パターンおよび他の試験情報を含み得る試験データ・ファイル1018からのインプットなど、様々なインプットの使用を含めることができる。設計プロセス1004には、例えば、タイミング解析、検証、設計ルール確認、配置配線作業などの標準的回路設計プロセスをさらに含めてもよい。集積回路設計の当業者は、本発明の範囲および趣旨から逸脱することなく、設計プロセス1004で使用可能な電子設計自動化ツールおよびアプリケーションの範囲をよく理解できよう。本発明の設計構造体はいかなる特定の設計フローにも限定されない。
設計プロセス1004は、望ましくは、図1に示されるような本発明の実施形態を、任意のさらなる集積回路設計またはデータ(適用可能な場合)とともに、第二設計構造体1020に転換する。設計構造体1020は、例えば、GDSII(GDS2)、GL1、OASISで、またはかかる設計構造体を保存するための任意の他の適切なフォーマットで格納された情報など、集積回路のレイアウト・データの交換のため用いられるデータフォーマットで、ストレージ媒体上に常駐する。設計構造体1020には、例えば、試験データ・ファイル、設計コンテント・ファイル、製造データ、レイアウト・パラメータ、配線、金属のレベル、ビア、形状、製造ラインをたどるためのデータ、および、半導体製造者が、図1中に示された本発明の実施形態を生成するために必要とする任意の他のデータを含めることができる。次いで、設計構造体1020は段階1022に進むことができ、例えば、設計構造体1020は、テープアウトに進み、製造にリリースされ、マスク・ハウスにリリースされ、別の設計ハウスに送付され、顧客に納品などされる。
図面中に示された本発明の実施形態の詳細を参照しながら本発明を説明してきたが、これらの詳細は、添付の特許請求の範囲を限定することは意図されていない。

Claims (20)

  1. コンピュータ・システム中に、ハードウェア自動デバイス・オペレーション・イニシエータを実装するためのコントローラであって、
    ホスト・コマンドを受信するためのインライン・ハードウェア・エンジンを含み、
    前記インライン・ハードウェア・エンジンは、ファームウェアの関与なしに開始するため受信されたコマンドを精査し、
    前記インライン・ハードウェア・エンジンは、前記受信されたコマンドを実施するために、ハードウェア・コマンド・ブロックの一つ以上の連鎖を構築し、
    前記インライン・ハードウェア・エンジンは、前記受信されたコマンドに対する前記一つ以上の連鎖の実行を開始する、
    コントローラ。
  2. 前記インライン・ハードウェア・エンジンが、ファームウェアにホスト・システムへの成功裏の完了応答の送信を開始させるため、前記受信されたコマンドに対する前記一つ以上の連鎖の実行を完了する、請求項1に記載のコントローラ。
  3. 前記受信されたコマンドに対するハードウェア・コマンド・ブロックの完了をファームウェアに通知するイベントを生成する、前記インライン・ハードウェア・エンジンを含む、請求項2に記載のコントローラ。
  4. 前記インライン・ハードウェア・エンジンが、各ホスト・リソースに対し自動実行コマンドを有効化および無効化することを可能にするため、各論理ホスト・リソースに対する所定のレジスタを含む、請求項1に記載のコントローラ。
  5. 前記インライン・ハードウェア・エンジンが、各ホスト・リソースを物理デバイスに直接リンクするため、各論理ホスト・リソースに対する所定のレジスタを含む、請求項1に記載のコントローラ。
  6. 前記物理デバイスに向けて前記レジスタ中の情報内に記述されたデバイス・オペレーションを生成する、前記インライン・ハードウェア・エンジンを含む、請求項5に記載のコントローラ。
  7. 前記インライン・ハードウェア・エンジンが、ファームウェアの関与なしに開始するため受信されたコマンドを精査するステップは、前記インライン・ハードウェア・エンジンが、命令要件なしの読み取り要求または書き込み要求であることを識別するためチェックするステップを含む、請求項1に記載のコントローラ。
  8. 前記受信されたコマンドに対するハードウェア・コマンド・ブロックの前記連鎖内のハードウェア・コマンド・ブロックのエラー終了を取り扱うための、エラーおよびイベント取り扱いコードを含む、請求項1に記載のコントローラ。
  9. 前記エラーおよびイベント取り扱いコードが、同期化および併合オペレーションを取り扱う、請求項8に記載のコントローラ。
  10. 前記インライン・ハードウェア・エンジンが、前記受信されたコマンドを実施するためにハードウェア・コマンド・ブロックの一つ以上の連鎖を構築するステップは、前記インライン・ハードウェア・エンジンが、受信されたコマンドに対し事前割り当てされた1ページ以下のリソースの所定のセットを用いてハードウェア・コマンド・ブロックの連鎖を構築するための、直接インデックス・モードを有するステップを含む、請求項1に記載のコントローラ。
  11. 前記インライン・ハードウェア・エンジンが、前記受信されたコマンドを実施するためにハードウェア・コマンド・ブロックの一つ以上の連鎖を構築するステップは、前記インライン・ハードウェア・エンジンが、読み取りコマンドを実施するためにハードウェア・コマンド・ブロックの連鎖を構築するステップと、前記インライン・ハードウェア・エンジンが、書き込みコマンドを実施するためにハードウェア・コマンド・ブロックの連鎖を構築するステップと、を含む、請求項1に記載のコントローラ。
  12. 読み取りコマンドを実施するためのハードウェア・コマンド・ブロックの前記連鎖が、バッファ・ページを割り当てるための割り当て制御ブロックと、データを前記割り当てバッファ・ページ中に読み取るためのシリアル接続SCSI(SAS)デバイス・オペレーション制御ブロックと、データ転送のためのホスト直接メモリ・アクセス(HDMA)制御ブロックと、割り当てられたバッファ・ページを解放するための割り当て解除制御ブロックとを含む、請求項1に記載のコントローラ。
  13. コンピュータ・システム中に、ハードウェア自動デバイス・オペレーション・イニシエータを実装する方法であって、
    ホスト・コマンドを受信するためのインライン・ハードウェア・エンジンを設けるステップを含み、
    前記インライン・ハードウェア・エンジンは、
    ファームウェアの関与なしに開始するため受信されたコマンドを精査するステップと、
    前記受信されたコマンドを実施するために、ハードウェア・コマンド・ブロックの一つ以上のストリングを構築するステップと、
    前記受信されたコマンドに対する前記一つ以上のストリングの実行を開始するステップと、
    を含む、方法。
  14. ファームウェアにホスト・システムへの成功裏の完了応答の送信を開始させるため、前記受信されたコマンドに対する前記一つ以上の連鎖の実行を完了する、前記インライン・ハードウェア・エンジンを含む、請求項13に記載の方法。
  15. 前記インライン・ハードウェア・エンジンを設けるステップは、各ホスト・リソースに対し自動実行コマンドを有効化および無効化することを可能にするため、各論理ホスト・リソースに対する所定のレジスタを設けるステップ含む、請求項13に記載の方法。
  16. 前記インライン・ハードウェア・エンジンを設けるステップは、各ホスト・リソースを物理デバイスに直接リンクするため、各論理ホスト・リソースに対する所定のレジスタを設けるステップを含む、請求項13に記載の方法。
  17. 前記受信されたコマンドに対するハードウェア・コマンド・ブロックの前記連鎖内のハードウェア・コマンド・ブロックのエラー終了を取り扱うためのエラーおよびイベント取り扱いコードを設けるステップ含む、請求項13に記載の方法。
  18. 同期化および併合オペレーションを取り扱うためのエラーおよびイベント取り扱いコードを設けるステップを含む、請求項13に記載の方法。
  19. コンピュータ・システム中に、ハードウェア自動デバイス・オペレーション・イニシエータを実装するためのコントローラであって、
    ホスト・コマンドを受信するためのインライン・ハードウェア・エンジンを含み、
    前記インライン・ハードウェア・エンジンは、各ホスト・リソースに対し自動実行コマンドを有効化および無効化することを可能にするため、各論理ホスト・リソースに対する所定のレジスタを含み、
    前記インライン・ハードウェア・エンジンは、ファームウェアの関与なしに開始するため受信されたコマンドを精査し、
    前記インライン・ハードウェア・エンジンは、前記受信されたコマンドを実施するためにハードウェア・コマンド・ブロックの一つ以上の連鎖を構築し、
    前記インライン・ハードウェア・エンジンは、前記受信されたコマンドに対する前記一つ以上の連鎖の実行を開始する、
    コントローラ。
  20. 前記インライン・ハードウェア・エンジンが、各ホスト・リソースを物理デバイスに直接リンクするため、各論理ホスト・リソースに対する所定のレジスタをさらに含む、請求項19に記載のコントローラ。
JP2016533802A 2013-08-15 2014-08-11 ハードウェア自動デバイス・オペレーション・イニシエータの実装するための方法およびコントローラ Active JP6537510B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/967,693 2013-08-15
US13/967,693 US9122413B2 (en) 2013-08-15 2013-08-15 Implementing hardware auto device operations initiator
PCT/CN2014/084076 WO2015021896A1 (en) 2013-08-15 2014-08-11 Implementing hardware auto device operations initiator

Publications (2)

Publication Number Publication Date
JP2016528634A true JP2016528634A (ja) 2016-09-15
JP6537510B2 JP6537510B2 (ja) 2019-07-03

Family

ID=52467646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016533802A Active JP6537510B2 (ja) 2013-08-15 2014-08-11 ハードウェア自動デバイス・オペレーション・イニシエータの実装するための方法およびコントローラ

Country Status (5)

Country Link
US (1) US9122413B2 (ja)
EP (1) EP3033686B1 (ja)
JP (1) JP6537510B2 (ja)
CN (1) CN105453062B (ja)
WO (1) WO2015021896A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918101B (zh) * 2021-12-09 2022-03-15 苏州浪潮智能科技有限公司 一种写数据高速缓存的方法、系统、设备和存储介质
CN117420968B (zh) * 2023-12-19 2024-03-12 苏州元脑智能科技有限公司 存储控制器、存储设备的访问控制方法和存储系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020108003A1 (en) * 1998-10-30 2002-08-08 Jackson L. Ellis Command queueing engine
JP2004326782A (ja) * 2003-04-25 2004-11-18 Internatl Business Mach Corp <Ibm> 暗黙の通知を伴うデータ転送
US20100306420A1 (en) * 2009-06-01 2010-12-02 Lsi Corporation Fast path scsi io
WO2012016931A1 (en) * 2010-08-04 2012-02-09 International Business Machines Corporation Determination of one or more partitionable endpoints affected by an i/o message
US20120303855A1 (en) * 2011-05-24 2012-11-29 International Business Machines Corporation Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically dma
US20120304198A1 (en) * 2011-05-24 2012-11-29 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US20120304001A1 (en) * 2011-05-24 2012-11-29 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006086379A2 (en) * 2005-02-07 2006-08-17 Dot Hill Systems Corporation Command-coalescing raid controller
US7805543B2 (en) 2005-06-30 2010-09-28 Intel Corporation Hardware oriented host-side native command queuing tag management
WO2009039222A2 (en) 2007-09-19 2009-03-26 Marvell World Trade Ltd. Flexible sequencer design architecture for solid state memory controller
US8151037B1 (en) 2008-05-28 2012-04-03 Marvell International Ltd. Interface for solid-state memory
US20100235834A1 (en) 2009-03-16 2010-09-16 Faasse Scott P Providing a management communication channel between a software layer and platform layer for hardware management control
US8495259B2 (en) 2011-05-24 2013-07-23 International Business Machines Corporation Implementing storage adapter performance optimization with hardware chains to select performance path
US9003102B2 (en) 2011-08-26 2015-04-07 Sandisk Technologies Inc. Controller with extended status register and method of use therewith

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020108003A1 (en) * 1998-10-30 2002-08-08 Jackson L. Ellis Command queueing engine
JP2004326782A (ja) * 2003-04-25 2004-11-18 Internatl Business Mach Corp <Ibm> 暗黙の通知を伴うデータ転送
US20100306420A1 (en) * 2009-06-01 2010-12-02 Lsi Corporation Fast path scsi io
WO2012016931A1 (en) * 2010-08-04 2012-02-09 International Business Machines Corporation Determination of one or more partitionable endpoints affected by an i/o message
US20120303855A1 (en) * 2011-05-24 2012-11-29 International Business Machines Corporation Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically dma
US20120304198A1 (en) * 2011-05-24 2012-11-29 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US20120304001A1 (en) * 2011-05-24 2012-11-29 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path

Also Published As

Publication number Publication date
WO2015021896A1 (en) 2015-02-19
EP3033686A4 (en) 2016-08-17
US9122413B2 (en) 2015-09-01
EP3033686B1 (en) 2021-04-28
CN105453062A (zh) 2016-03-30
EP3033686A1 (en) 2016-06-22
CN105453062B (zh) 2018-07-03
JP6537510B2 (ja) 2019-07-03
US20150052265A1 (en) 2015-02-19

Similar Documents

Publication Publication Date Title
US8544029B2 (en) Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US8495258B2 (en) Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA
JP7247213B2 (ja) デバッグコントローラ回路
JP2012133405A (ja) ストレージ装置及びそのデータ転送制御方法
JP2007094994A (ja) Raidシステム及びそのリビルド/コピーバック処理方法
US8495259B2 (en) Implementing storage adapter performance optimization with hardware chains to select performance path
US8656213B2 (en) Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path
US8856479B2 (en) Implementing storage adapter performance optimization with hardware operations completion coalescence
CN115495389A (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US8516164B2 (en) Implementing storage adapter performance optimization with enhanced hardware and software interface
US8793462B2 (en) Implementing storage adapter performance optimization with enhanced resource pool allocation
US20060265523A1 (en) Data transfer circuit and data transfer method
JP6537510B2 (ja) ハードウェア自動デバイス・オペレーション・イニシエータの実装するための方法およびコントローラ
US9092364B2 (en) Implementing storage adapter performance control
JP5896328B2 (ja) 高性能ahciインターフェイス
US8868828B2 (en) Implementing storage adapter performance optimization with cache data/directory mirroring
US8886881B2 (en) Implementing storage adapter performance optimization with parity update footprint mirroring
KR101569049B1 (ko) 패스 스루 스토리지 디바이스들
US10719391B2 (en) Storage system and storage control apparatus
JP6825263B2 (ja) ストレージ制御装置、およびストレージシステム
US10846020B2 (en) Drive assisted storage controller system and method
US9195410B2 (en) Storage system and access arbitration method
Galbraith et al. Highly automated hardware and firmware RAID SoC design optimized for memory class storage devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180802

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190419

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: 20190514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190604

R150 Certificate of patent or registration of utility model

Ref document number: 6537510

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150