(57)【特許請求の範囲】
【請求項１】
コンピュータ・システム中に、ハードウェア自動デバイス・オペレーション・イニシエータを実装するためのコントローラであって、
ホスト・コマンドを受信するためのインライン・ハードウェア・エンジンを含み、
前記インライン・ハードウェア・エンジンは複数のレジスタを含み、前記複数のレジスタはエンジン・ルーティング情報を提供し、
前記インライン・ハードウェア・エンジンは、ハードウェア自動実行機能を可能にする論理ホスト・ リソースの構成を識別することに応答して、有効化設定を利用してファームウェアの関与なしに開始するため受信されたコマンドを精査し、
前記インライン・ハードウェア・エンジンは、前記受信されたコマンドを実施するために、ハードウェア・コマンド・ブロックの一つ以上の連鎖を構築し、
前記インライン・ハードウェア・エンジンは、前記受信されたコマンドに対する前記一つ以上の連鎖の実行を開始し、ハードウェアとファームウェアとの間の相互作用の回数をファームウェアの一度だけの関与に低減しながら、ファームウェアは前記受信されたコマンドに対する前記一つ以上の連鎖の各々に対する前記ハードウェア・コマンド・ブロックの全体／完全の連鎖を実行する、
コントローラ。
【請求項２】
前記インライン・ハードウェア・エンジンが、ファームウェアにホスト・システムへの成功裏の完了応答の送信を開始させるため、前記受信されたコマンドに対する前記一つ以上の連鎖の実行を完了する、請求項１に記載のコントローラ。
【請求項３】
前記受信されたコマンドに対するハードウェア・コマンド・ブロックの完了をファームウェアに通知するイベントを生成する、前記インライン・ハードウェア・エンジンを含む、請求項２に記載のコントローラ。
【請求項４】
前記インライン・ハードウェア・エンジンが、各対象論理ホスト・リソースに対し自動実行コマンドを有効化および無効化することを可能にするため、各論理ホスト・リソースに対する所定のレジスタを含む、請求項１に記載のコントローラ。
【請求項５】
前記インライン・ハードウェア・エンジンが、各対象論理ホスト・リソースを物理デバイスに直接リンクするため、各論理ホスト・リソースに対する所定のレジスタを含む、請求項１に記載のコントローラ。
【請求項６】
前記物理デバイスに向けて前記レジスタ中の情報内に記述されたデバイス・オペレーションを生成する、前記インライン・ハードウェア・エンジンを含む、請求項５に記載のコントローラ。
【請求項７】
前記インライン・ハードウェア・エンジンが、ファームウェアの関与なしに開始するため受信されたコマンドを精査するステップは、前記インライン・ハードウェア・エンジンが、命令要件なしの読み取り要求または書き込み要求であることを識別するためチェックするステップを含む、請求項１に記載のコントローラ。
【請求項８】
前記受信されたコマンドに対するハードウェア・コマンド・ブロックの前記連鎖内のハードウェア・コマンド・ブロックのエラー終了を取り扱うための、エラーおよびイベント取り扱いコードを含む、請求項１に記載のコントローラ。
【請求項９】
前記エラーおよびイベント取り扱いコードが、同期化および併合オペレーションを取り扱う、請求項８に記載のコントローラ。
【請求項１０】
前記インライン・ハードウェア・エンジンが、前記受信されたコマンドを実施するためにハードウェア・コマンド・ブロックの一つ以上の連鎖を構築するステップは、ハードウェア・コマンド・ブロックの連鎖を構築するための、直接インデックス・モードを有するステップを含む、請求項１に記載のコントローラ。
【請求項１１】
前記インライン・ハードウェア・エンジンが、前記受信されたコマンドを実施するためにハードウェア・コマンド・ブロックの一つ以上の連鎖を構築するステップは、前記インライン・ハードウェア・エンジンが、読み取りコマンドを実施するためにハードウェア・コマンド・ブロックの連鎖を構築するステップと、前記インライン・ハードウェア・エンジンが、書き込みコマンドを実施するためにハードウェア・コマンド・ブロックの連鎖を構築するステップと、を含む、請求項１に記載のコントローラ。
【請求項１２】
読み取りコマンドを実施するためのハードウェア・コマンド・ブロックの前記連鎖が、バッファ・ページを割り当てるための割り当て制御ブロックと、データを前記割り当てバッファ・ページ中に読み取るためのシリアル接続ＳＣＳＩ（ＳＡＳ）デバイス・オペレーション制御ブロックと、データ転送のためのホスト直接メモリ・アクセス（ＨＤＭＡ）制御ブロックと、割り当てられたバッファ・ページを解放するための割り当て解除制御ブロックとを含む、請求項１に記載のコントローラ。
【請求項１３】
コンピュータ・システム中に、ハードウェア自動デバイス・オペレーション・イニシエータを実装する方法であって、
ホスト・コマンドを受信するためのインライン・ハードウェア・エンジンを設けるステップを含み、
前記インライン・ハードウェア・エンジンは複数のレジスタを含み、前記複数のレジスタはエンジン・ルーティング情報を提供し、
前記インライン・ハードウェア・エンジンは、
ハードウェア自動実行機能を可能にする論理ホスト・リソースの構成を識別することに応答して、有効化設定を利用してファームウェアの関与なしに開始するため受信されたコマンドを精査するステップと、
前記受信されたコマンドを実施するために、ハードウェア・コマンド・ブロックの一つ以上のストリングを構築するステップと、
前記受信されたコマンドに対する前記一つ以上のストリングの実行を開始するステップであって、
ハードウェアとファームウェアとの間の相互作用の回数をファームウェアの一度だけの関与に低減しながら、ファームウェアは前記受信されたコマンドに対する前記一つ以上の連鎖の各々に対する前記ハードウェア・コマンド・ブロックの全体／完全の連鎖を実行する、前記一つ以上のストリングの実行を開始するステップと、
を実行する、方法。
【請求項１４】
ファームウェアにホスト・システムへの成功裏の完了応答の送信を開始させるため、前記受信されたコマンドに対する前記一つ以上の連鎖の実行を完了する、前記インライン・ハードウェア・エンジンを含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ処理の分野に関し、さらに具体的には、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体に関する。
【背景技術】
【０００２】
ホスト・コンピュータ・システムを、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ、コンパクト・ディスク・ドライブなどの周辺ストレージＩ／Ｏデバイスに接続するためにストレージ・アダプタが用いられる。現在、ホスト・コンピュータ・システムをストレージ・アダプタに接続しそのストレージ・アダプタをストレージＩ／Ｏデバイスに接続するために、周辺構成機器相互接続エキスプレス（ＰＣＩｅ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）、シリアル接続ＳＣＳＩ（ＳＡＳ：Ｓｅｒｉａｌ  Ａｔｔａｃｈ  ＳＣＳＩ）、ファイバ・チャネル、およびインフィニバンド（Ｒ）など、様々な高速システム相互接続が用いられている。
【０００３】
これまで長年にわたり、ハード・ディスク・ドライブ（ＨＤＤ：ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）または回転ドライブが、オンライン・アクセスを必要とするコンピュータ・データの永続ストレージのために使われる主要なストレージＩ／Ｏデバイスであった。近年、ソリッド・ステート・ドライブ（ＳＳＤ：ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）が、これらの最高データ速度が必ずしもＨＤＤより高いわけではないにせよ、ＳＳＤの方が一般にＨＤＤよりも多い秒あたりＩ／Ｏ（ＩＯＰＳ：Ｉ／Ｏ  ｐｅｒ  ｓｅｃｏｎｄ）を遂行する能力があるので、こちらの方がより普及してきている。
【０００４】
より高速でより高性能のソリッド・ステート・ドライブ（ＳＳＤ）の出現に伴い、ストレージ・サブシステムに対する性能上の要求事項は桁上がりに増大してきた。このことは、コマンドのスループット、または小演算について特に言える。ＳＳＤによって提供される極めて低い待ち時間および極めて高いコマンド・スループットを利用した益々多くのアプリケーションが出現しており、多くの場合において、ストレージ・サブシステムがボトルネックになることがある。
【０００５】
従来型のストレージ・サブシステムまたはＲＡＩＤコントローラにおいて、要求がホストから着信し、多くの場合、この要求のフェッチはハードウェアによって自動化されている。ファームウェアがこの要求を調べ、取るべき一連の処置を判定する。多くの場合、この処理は、最初に非同期のハードウェア・オペレーションのシーケンスでの開始を伴う。この最初のオペレーションが完了すると、ファームウェアはそのオペレーションを再び精査して次の一連の処置を決める。これが、要求されたホスト・オペレーションが完了するまで行われ、ホストに応答が送信される。
【０００６】
より近年の高性能のストレージ・サブシステムでは、これらの非同期のハードウェアのオペレーションの多くを併せて連鎖することができ、ファームウェアは、ハードウェア・オペレーションの全てをセットアップしてシーケンスを開始し、連鎖全体の成功裏の完了、もしくは途中のどこかで生じたエラーの処理だけを行うことを可能にしている。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来型の実装はもとより、より近年の高性能の実装の両方にあってさえも、ストレージ・サブシステムに対して高まる性能上の必要性にはまだ足りない。これら高性能の設計でさえも、ファームウェアが、一連のオペレーションを、連鎖の開始時および連鎖の完了時の少なくとも２回決めることを必要とし、さらに、ファームウェアがホストの要求を調査し、そのオペレーションを実行するためのハードウェア制御ブロックを構築することを必要とする。多くの場合、ファームウェアを起動するだけでも、コントローラのプロセッサの時間の３０％もが消費され得る。
【０００８】
ハードウェア自動デバイス・オペレーション・イニシエータを実装するための効果的方法およびコントローラが必要とされている。
【０００９】
以下の説明および特許請求の範囲において使用される、用語、コントローラおよびコントローラ回路は、入力／出力（ＩＯ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）アダプタ（ＩＯＡ：ＩＯ  ａｄａｐｔｅｒ）を含めて広意に解されるべきであり、ホスト・コンピュータ・システムと、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ、コンパクト・ディスク・ドライブなどを含めた周辺ストレージＩ／Ｏデバイスとの様々な構成を接続するＩＯ  ＲＡＩＤアダプタを含む。
【課題を解決するための手段】
【００１０】
本発明の主要な側面は、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体を提供することである。本発明の他の重要な側面は、実質的な悪影響を生じることなく、かかる方法、コントローラ、および設計構造体を提供し、従来技術の構成の欠点の多くを克服することである。
【００１１】
簡潔に言えば、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体が提供される。本コントローラは、ホストのコマンドを受信し、ファームウェアの関与なしに開始するため、受信されたコマンドを精査するインライン・ハードウェア・エンジンを含む。このインライン・ハードウェア・エンジンは、受信されたコマンドを実施するため、ハードウェアのコマンド・ブロックの一つ以上の連鎖を構築し、受信されたコマンドに対しその一つ以上の連鎖の実行を開始する。
【００１２】
本発明の特徴によれば、ホストのオペレーションのための、ハードウェアとファームウェアとの間の相互作用の回数は、ファームウェアの一度だけの関与に低減され、従来型の構成よりも、ストレージ・サブシステムを通して格段に良好なパフォーマンスを提供する。
【００１３】
本発明の特徴によれば、インライン・ハードウェア・エンジンは、各論理ホスト・リソースに対するレジスタを含み、これらレジスタは、対象ホスト・リソースに対し自動実行コマンドを有効化および無効化にすることができる。有効化設定は、リソースが、キャッシング中またはエラー処理中の論理ブロック・アドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）転換を必要とするなど、当該リソースに対する構成が自動実行オペレーションを許さない場合に、ファームウェアが、ホスト・リソース毎に自動実行機能を無効化、または部分的に無効化にすることを可能にする。
【００１４】
本発明の特徴によれば、インライン・ハードウェア・エンジンは、各論理ホスト・リソースに対するレジスタを含み、これらレジスタは、各ホスト・リソースを物理デバイスに直接にリンクし、物理デバイスにエンジン・ルーティング情報を提供する。生成されたデバイス・オペレーションは、これらのレジスタ内に記述された物理デバイスに向けられる。
【００１５】
本発明の特徴によれば、インライン・ハードウェア・エンジンは、着信するコマンドをチェックし、それらが、例えば命令要件などのない単純な読み取りまたは書き込みなど自動実行オペレーションに対する基準に合致していることを確実にする。
【００１６】
本発明の特徴によれば、エラーおよびイベント取り扱いコードが、これら自動実行オペレーションの完了をキャッチする。このコードは、成功裏の完了を取り扱い、ホストへの良好な応答の送信を開始するだけである。
【００１７】
本発明は前述のおよび他の目的および利点と併せ、図面中に示された本発明の好適な実施形態の以下の詳細な説明から最善に理解することができよう。
【図面の簡単な説明】
【００１８】
【図１】好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための例示的なシステムを示す概略ブロック図である。
【図２】好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための例示のハードウェア・オペレーションを示す。
【図３】好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータにより実装される例示の自動生成の連鎖を示す。
【図４】好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータにより実装されたハードウェア・コマンド・ブロックの例示のストリングのエラー・パスの例を示す。
【図５】図５Ａおよび５Ｂは、好適な実施形態による、直接インデックスのエラーの取り扱いの例を示す。
【図６】図６Ａおよび６Ｂは、好適な実施形態による、ファームウェア（ＦＷ：ｆｉｒｍｗａｒｅ）イベントおよび制御の例を示す。
【図７】図７Ａおよび７Ｂは、好適な実施形態による、ファームウェア（ＦＷ：ｆｉｒｍｗａｒｅ）イベントおよび制御のさらなる例を示す。
【図８】好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された例示の標準的フローを示す。
【図９】好適な実施形態による、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された、有効化および無効化イベント・キュー・オペレーションについての例を示す。
【図１０】半導体の設計、製造、もしくは試験またはこれらの組み合わせに用いられる設計プロセスの流れ図である。
【発明を実施するための形態】
【００１９】
本発明の諸実施形態の以下の詳細な説明において添付の図面が参照され、これら図面は、本発明が実践できる例示の実施形態を示す。当然のことながら、本発明の範囲から逸脱することなく、他の実施形態を用いることができ構造的な変更を加えることも可能である。
【００２０】
本明細書で使用される用語は、特定の実施形態を説明するためだけのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある（“ａ”、“ａｎ”）」、および「該（“ｔｈｅ”）」は、文脈上明瞭に別途に示されている場合を除き、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む（“ｃｏｍｐｒｉｓｅ”）」もしくは「含んでいる（“ｃｏｍｐｒｉｓｉｎｇ”）」またはその両方は、述べられた特徴、完全体（ｉｎｔｅｇｅｒ）、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在または追加を排除するものではない。
【００２１】
本発明の特徴によれば、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための方法およびコントローラ、並びに対象コントローラ回路を配置する設計構造体が提供される。ホストのオペレーションのための、ハードウェアとファームウェアとの間の相互作用の回数は、ファームウェアの一度だけの関与に低減される。ファームウェアは、ホストの要求を見る必要はなく、いかなるハードウェア制御ブロックの構築をする必要もなく見る必要さえない。これは、従来型の実装と比べて、ファームウェアが関与する必要のある時間の少なくとも５０％を除去し、そのオペレーション構築の負担全体を除去する。これは、ストレージ・サブシステムを通して格段に良好なパフォーマンスをもたらし、ＳＳＤによく適した多くの新生の作業負荷を可能にする。
【００２２】
ここで図１を参照すると、好適な実施形態による、全体を参照符号１００で指定された入力／出力アダプタ（ＩＯＡ）またはコントローラが示されている。コントローラ１００は、一つ以上のプロセッサまたは中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ）１０６を含む少なくとも一つのプロセッサ複合体１０４に連結された半導体チップ１０２を含む。コントローラ１００は、ＣＰＵ１０６に近接し、コマンド・ブロック、作業キュー、およびイベント・キューのストレージを提供する、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）などの制御ストア（ＣＳ：ｃｏｎｔｒｏｌ  ｓｔｏｒｅ）１０８を含む。コントローラ１００は、不揮発性（ＮＶ：ｎｏｎ−ｖｏｌａｔｉｌｅ）バックアップ・メモリ１１０と、例えばハードウェアによって実施される、データ並びにコマンド・ブロックの設定および処理のためのスクラッチ・バッファを提供するデータ・ストア（ＤＳ：ｄａｔａ  ｓｔｏｒｅ）１１２を含むことができる。コントローラ１００には、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ：ｎｏｎ−ｖｏｌａｔｉｌｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１１４およびフラッシュ・メモリ１１６を含めてもよい。
【００２３】
本発明の特徴によれば、コントローラ１００は、ホスト・システム１３４からホスト・コマンドを受信し、ファームウェアの関与なしに開始するため受信したコマンドを精査する、インライン・ハードウェア・エンジン１１８を含む。インライン・ハードウェア・エンジン１１８は、受信したコマンドを実施するために、ハードウェア・コマンド・ブロックの一つ以上のストリングまたは連鎖を構築し、受信したコマンドに対しその一つ以上のストリングの実行を開始する。インライン・ハードウェア・エンジン１１８は、各論理ホスト・リソースに対するレジスタ１１９を包含するかまたはそれらに接続され、これらレジスタは、対象ホスト・リソースに対する自動実行コマンドを有効化および無効化することを可能にする。インライン・ハードウェア・エンジン１１８は、各論理ホスト・リソースに対するレジスタ１１９を包含するかまたはそれらに接続され、これらレジスタは、各ホスト・リソースを物理デバイスに直接リンクし、物理デバイスに到達するためのエンジン・ルーティング情報を提供する。インライン・ハードウェア・エンジン１１８によって生成されたデバイス・オペレーションは、これらレジスタ１１９内に記述された物理デバイスに向けられる。
【００２４】
本発明の特徴によれば、レジスタ１１９は、各論理ホスト・リソースに関連付けられる。これらのレジスタ１１９は、自動読み取りおよび自動書き込みを有効化および無効化する能力を包含する。また、これらのレジスタ１１９は、他のハードウェアのオフロード・オペレーションを有効化および無効化する能力を包含してもよい。自動実行機能を有効化にするときは、有効化レジスタ１１９をオンにする以外の処置を取る必要はない。自動実行機能を無効化にするときは、有効化レジスタをオフにする以外の処置を取る必要はない。これは、実施する必要のある静止化または同期化は、自動実行機能に関係なく同様に実施できるからである。自動実行機能を、例えば、自動読み取りおよび自動書き込みから自動読み取りだけに変更するとき、その自動実行機能全体を無効化し、次いで所望の機能だけを有効化することができる。これは、アトミック性問題に起因するいかなる問題点も生じないことを確実にする。物理ルーティング情報は、アトミックに修正可能な単一のレジスタ１１９内に全て保持される。しかして、或るドライブへの経路が別の経路に変更され、または障害迂回しなければならない場合、そのルーティング情報は、自動実行機能の中断なしに更新することができる。
【００２５】
コントローラ半導体チップ１０２は、割り当てエンジン１２０Ａ、ホスト直接メモリ・アクセス（ＨＤＭＡ：ｈｏｓｔ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）エンジン１２０Ｈ、シリアル接続ＳＣＳＩ（ＳＡＳ）エンジン１２０Ｓ、および割り当て解除エンジン１２０Ｄなど、インライン・ハードウェア・エンジン１１８によって構築されるハードウェア・コマンド・ブロックの連鎖を実施するための複数のハードウェア・エンジンを含む。
【００２６】
本発明の特徴によれば、かなりの従来型ファームウェア機能が、インライン・ハードウェア・エンジン１１８によって実施されるＨＷのオペレーションに移される。
【００２７】
図示のように、コントローラ半導体チップ１０２は、コントローラ半導体チップ１０２とプロセッサ複合体１０４との間で周辺構成機器相互接続エキスプレス（ＰＣＩｅ）高速システム相互接続を用いるそれぞれのＰＣＩｅインターフェース１２８；並びに、コントローラ半導体チップ１０２と、ハード・ディスク・ドライブ（ＨＤＤ）または回転ドライブ１３２およびソリッド・ステート・ドライブ（ＳＳＤ）１３２など複数のストレージデバイス１３２の各々との間でシリアル接続ＳＣＳＩ（ＳＡＳ）高速システム相互接続を用いるＳＡＳコントローラ１３０；を含む。ホスト・システム１３４は、ＰＣＩｅ高速システム相互接続を用いてコントローラ１００に接続される。当然のことながら、外部のプロセッサ複合体１０４である必要はなく、コントローラ半導体チップ１０２に内蔵することもできよう。
【００２８】
ＤＳ１１２は、例えば８ＧＢのＤＲＡＭを含み、揮発性もしくは不揮発性またはその両方の４ＫＢページのデータ、ＤＳの連続する領域中に各不揮発性の頁の書き込みキャッシュのための一つのキャッシュ・ライン（ＣＬ：ｃａｃｈｅ  ｌｉｎｅ）を有する３２バイトのＣＬ、およびＣＬ領域の後のＤＳの連続する領域中に３２バイトのパリティ更新フットプリント（ＰＵＦＰ：ｐａｒｉｔｙ  ｕｐｄａｔｅ  ｆｏｏｔｐｒｉｎｔ）を格納する。
【００２９】
コントローラ半導体チップ１０２および制御ストア（ＣＳ）１０８は、図３に示しこれに関連して説明するような、インライン・ハードウェア・エンジン１１８によって構築されたハードウェア・コマンド・ブロックの連鎖と、他の構造体およびコマンドのブロックとを格納する。
【００３０】
図２を参照すると、好適な実施形態による、全体を参照符号２００によって指定された、ハードウェア自動デバイス・オペレーション・イニシエータを実装するための例示のハードウェア・オペレーションが示されている。ブロック２０２に示されるように、受信されたコマンドまたは受信されたオペレーションの処理が開始される。
【００３１】
判定ブロック２０４に示されるように、ファームウェアの関与なしにコマンドが開始できるかどうかを判定するためにコマンドの精査が行われる。ホストによってオペレーションが開始されると、いかなる要求についても、ハードウェアはその要求を記述した制御ブロックをフェッチする。制御ブロックが到着してメモリに収納されると、判定ブロック２０４で、ハードウェアが要求を調べる。次いで、判定ブロック２０４で、ハードウェアは、当該オペレーションが、自動実行オペレーションが可能な論理リソースに向けられているかどうかをチェックする。判定ブロック２０４で、ハードウェアは、オペレーションが読み取りかまたは書き込みかをチェックする。判定ブロック２０４で、ハードウェアは、オペレーションが単純なタグだけを、またはタグなしのキューのタグを有するのかどうかをチェックする。判定ブロック２０４で、ハードウェアは、オペレーションが他の複雑な要件を有していないかどうかをチェックする。
【００３２】
例えば、判定ブロック２０４で、インライン・ハードウェア・エンジン１１８は、対象ホスト・リソースに対し自動実行コマンドを有効化および無効化することが可能かどうかを判定するために、論理ホスト・リソースに対するレジスタ１１９をチェックする。レジスタ１１９によって提供される有効化設定は、リソースが、キャッシング中またはエラー処理中の論理ブロック・アドレス（ＬＢＡ）変換を必要とするなど、当該リソースに対する構成が自動実行オペレーションを許さない場合に、ファームウェアが、ホスト・リソース毎に自動実行機能を無効化または部分的に無効化にすることを可能にする。判定ブロック２０４で、インライン・ハードウェア・エンジン１１８は、着信したコマンドをチェックし、それらが、例えば命令要件等のない単純な読み取りまたは書き込みなど、自動実行オペレーションに対する基準に合致することを確実にする。判定ブロック２０４で現在の構成にＨＷ自動実行機能を使用する能力がないと判定された場合、受信されたコマンドは、ブロック２０６に示されるように、ＨＷイベント・キューに置かれる。
【００３３】
判定ブロック２０４で現在の構成にＨＷ自動実行機能を使用する能力があると判定された場合、次いでインライン・ハードウェア・エンジン１１８は、読み取りまたは書き込み要求を実施するためにハードウェア・コマンド・ブロックの一つ以上のストリングを構築し、次いで、ブロック２０８に示されるように、それらストリングの実行を開始する。インライン・ハードウェア・エンジン１１８は、当該オペレーションが読み取りで前述のチェックに合格した場合、要求を実施するためにハードウェア・コマンド・ブロックの一つ以上のストリングを構築する。例えば、ハードウェアは、図３に関連して図示、説明するように、着信ホスト・オペレーションに関連付けられた２Ｋのハードウェア・バッファ中にこれら制御ブロックを構築する。
【００３４】
ブロック２０８において、直接インデックス・モードは、リソース・アロケータを経由するオーバーヘッドを低減するため、いくつかの小オペレーションに使用可能な事前割り当てされたリソースの特別なセットから成る。着信オペレーションが１つの４Ｋページだけを使う場合、ページは、ホスト・オペレーションに関連付けられた各制御ブロックに黙示的に結合されている。この単一のページは、標準のページ割り当てエンジンを経由せずに直接使用することができる。
【００３５】
エラーおよびイベント取り扱いコードは、判定ブロック２１０に示されるように、これらの自動実行オペレーションの完了をキャッチする。このコードは、ブロック２１２に示されるように、成功裏の完了を取り扱い、ホストへの良好な応答の送信を開始するだけである。成功裏の完了は、ハードウェア・コマンド・ブロックのストリングの終端での制御ブロックの成功裏の完了に対してだけ取り扱われる。成功裏の完了は、当該オペレーションに従事するファームウェアだけに、ホスト要求毎に一度だけもたらされる。また、当該ファームウェアは、ホスト要求を見る必要は全くなく、ハードウェア制御ブロックを構築する必要または見る必要さえ全くない。
【００３６】
ブロック２１４に示されるように、エラーおよびイベント取り扱いコードは、ハードウェア・コマンド・ブロックの自動実行ストリング内の一切のハードウェア制御ブロックの、判定ブロック２１０でのエラー終了を取り扱う。エラー取り扱いコード・ファームウェアは、失敗したストリングを精査し、このコードがハードウェア・コマンド・ブロックのストリングを開始していたかのように見えるように必要な制御を構築する。ブロック２１４で、エラー取り扱いコードは、このとき、あたかも当該自動実行オペレーションがファームウェアの関与なく開始されたものではなかったかのように、エラー取り扱いを開始することになる。基本的には、このコードは、自動実行オペレーションを通常の非自動実行オペレーションに変換する。ブロック２１４で、エラーおよびイベント取り扱いコードは、あたかも自動実行オペレーションが、ファームウェアの知見で構築され実行されたかのように、外部との同期化および併合を取り扱う。同期および併合には、全ての可能な制御ブロックが実行中かどうかを見るためにこれらを調べ、実行中の場合、同期化または併合作業を必要とするオペレーションを潜在的にマークすることを必要とする。良好な完了では、同期化または併合に対する全ての外部要求は、チェックする場合、オペレーション毎に単一の変数の単一のチェックで把握されることになる。エラー終了に対しては、当該オペレーションが変換された後、全ての取り扱いは、標準の非自動オペレーションのエラーを取り扱うエラー取り扱いルーティン内で行われる。
【００３７】
図３を参照すると、好適な実施形態による、全体を参照符号３００によって指定された、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された例示の自動生成連鎖が示されている。ハードウェアＨＷは、着信したホスト要求を調べ、オペレーションの適切な連鎖を構築する。図示された自動生成連鎖３００は、４Ｋよりも大きいホスト書き込み連鎖３０２、４Ｋよりも大きいホスト読み取り連鎖３０４、４Ｋ以下のホスト書き込み連鎖３０６、および４Ｋ以下のホスト読み取り連鎖３０８を含む。４Ｋより大きいホスト書き込み連鎖３０２は、データの転送に使われるページまたはバッファを割り当てるための割り当てＡオペレーションと、そのデータを、ＰＣＩｅバスを介してホストのメモリから書き込みのために割り当てられたバッファ中に転送するための、またはそのデータをＰＣＩｅバスを介してバッファから読み取りのためにホストのメモリに転送するための、ホスト直接メモリ・アクセス（ＨＤＭＡ：ｈｏｓｔ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）Ｈのオペレーションと、バッファからのデータをドライブに書き込むための、またはドライブからのデータを割り当てられたバッファ中に読み取るための、シリアル接続ＳＣＳＩ（ＳＡＳ）Ｓのオペレーションと、ページまたはバッファを開放するための割り当て解除Ｄのオペレーションと、を含む。
【００３８】
４Ｋより大きいホスト読み取り連鎖３０４は、割り当てＡ、ＳＡＳ  Ｓ、ＨＤＭＡ  Ｈ、および割り当て解除Ｄのオペレーションを含む。４Ｋ以下のホスト書き込み連鎖３０６は、ホスト直接メモリ・アクセス（ＨＤＭＡ）Ｈ、およびシリアル接続ＳＣＳＩ（ＳＡＳ）Ｓのオペレーションを含む。４Ｋ以下のホスト読み取り連鎖３０８は、ＳＡＳ  Ｓ、およびＨＤＭＡ  Ｈのオペレーションを含む。
【００３９】
本発明の特徴によれば、４Ｋ以下のホスト書き込み連鎖３０６およびホスト読み取り連鎖３０８に対して、使われている２Ｋのハードウェア制御ブロックに関連付けられた、事前割り当てされたページが用いられる。これは、ホスト書き込み連鎖３０６およびホスト読み取り連鎖３０８中での割り当ておよび割り当て解除制御ブロックの構築および使用を回避して、２つの領域におけるパフォーマンスに影響を与える。第一に、これは、ＳＡＳまたはＨＤＭＡオペレーションを開始可能にするためその前に行う割り当てエンジンの実行の必要性を除去することによって待ち時間を低減する。第二に、これは、ハードウェアによって実施される制御ストア相互作用の回数を減らす。まず、割り当ておよび割り当て解除制御ブロックのセットアップを回避することによって、２つの１６または３２バイトの制御ブロックの制御ストアへの書き込みを除去する。次に、割り当て／割り当て解除エンジンをリンクしないことによって、これらの同じ制御ブロックのフェッチが除去され、さらに多くの制御ストア・オペレーションが節減される。最後に、割り当ておよび割り当て解除エンジンを実行しないことによって、ページ・テーブルおよびページなしリストの両方が読み取り／書き込みされず、制御ストアへの別の２〜４回のアクセスが節減される。
【００４０】
単一の４Ｋページだけにタッチするオペレーションに対しては、直接インデックス・モードが用いられ、直接インデックスは、各２Ｋのハードウェア制御バッファ（ＨｗＣｂ：ｈａｒｄｗａｒｅ  ｃｏｎｔｒｏｌ  ｂｕｆｆｅｒ）に固定された１頁を有する。事前割り当てされた頁または直接インデックス・モードの使用は、ハードウェア自動実行オペレーションの要件ではないが、これは、自動実行オペレーションが活用可能なパフォーマンスの増強である。構築された各制御ブロック連鎖は、対応するレジスタ・セットからのイベントＩＤを有する。連鎖３０２、３０４、３０６、３０８中の最後の制御ブロックが成功裏に完了、または連鎖中のいずれかの制御ブロックがエラー終了すると、イベントＩＤを使ってファームウェアに終了が連絡される。
【００４１】
割り当てオペレーションＡおよび割り当て解除オペレーションＤを構築するために、必要なデータの全てがホスト要求内に包含される。要求されたＬＢＡおよび長さに基づいて、４Ｋに配列された頁の全長を算定することができる。この数が１より大きい場合、割り当ておよび割り当て解除制御ブロックが生成される。数が１より小さい場合、事前割り当てされた黙示の頁が使用される。割り当ておよび割り当て解除制御ブロックの両方は、着信ホスト・オペレーションに関連付けられた２Ｋのハードウェア制御ブロックの未使用部分中に、ページ・テーブルの宛先／発信元とともに生成されることになる。
【００４２】
ＨＤＭＡオペレーションＨを構築するために、必要なデータの全てがホスト要求内に包含される。転送の型、ヘッダの有無、必要なデータチェックなどがホスト要求中に含まれる。また、宛先または発信元ホスト・メモリ・アドレスもホスト要求の中に在る。
【００４３】
ＳＡＳオペレーションＳを構築するために、ホスト要求からの情報および物理ドライブへの経路指定の仕方の情報が用いられる。これらの情報は、所与の論理ホスト・リソース対し、図１のインラインＨＷエンジン１１８によってレジスタ１１９中に保持される。この情報は、当該オペレーションを取り扱うことになるＳＡＳエンジンに対するチップまたはＳＡＳエンジン番号を含む。また、この情報は、ポート番号およびデバイス番号を含む。このポート番号は、所与のＳＡＳエンジンに接続されたＳＡＳポート番号である。このデバイス番号は、ＳＡＳエンジンによって保持され、ＳＡＳエンジンが所与のデバイス１３２に対するＳＡＳアドレスをルックアップすることを可能にする、アレイ中へのインデックスである。基本的に、ハードウェアが物理デバイス１３２に到達するために必要となるルーティング情報の全てが、チップ１０２中のレジスタ１１９内に保持され、ハードウェアはファームウェアの関与なしに到達することができる。自動実行機能が有効化されるのに先立って、これらのレジスタ１１９が、ファームウェアによってセットアップされる。
【００４４】
図２中のブロック２０８に示されるように、ハードウェア制御ブロックが構築されたならば、ハードウェアは、ファームウェアがオペレーションを開始するのと同じ様にオペレーションを開始できるようになる。オペレーションの連鎖全体が実行され、図２のブロック２１２に示されるように、成功裏の完了とともに、ハードウェアは当該連鎖の成功裏の完了をファームウェアに連絡するイベントを生成することになる。この場合、ファームウェアはそのイベントをキャッチし、そのイベントを追跡すべきような何事も生じなかったことを確実にし、ホストへの応答を開始することになる。
【００４５】
図２中のブロック２１４に示されるように、ファームウェアが、全ての未処理のオペレーションを併合または同期化する必要がある場合、ホスト・オペレーションに関連付けられた制御ブロックの中に指示が入れられる。成功裏の完了時にこの指示がオンである場合、ファームウェア制御ブロックが、ファームウェアに開始されたオペレーションを模擬するように調整されることになる。次いで、図２中のブロック２１４に示されるように、その完了は、あたかもファームウェアが当該オペレーションを開始したかのように取り扱われることになる。
【００４６】
図４に関連して図示、説明するように、連鎖のいずれかの部分に不具合が生じた場合、あたかもその連鎖がファームウェアによって開始されたかのように、ハードウェアは、その連鎖を停止し、連鎖中の不具合を生じた制御ブロックに対する不具合イベントを生成し、図２中のブロック２１４に示されるように、ＨＷコマンド・ブロックに対するエラー終了を取り扱うことになる。イベントＩＤは、ファームウェアに、適切なイベント・ハンドラへの経路を指定することになる。次いで、イベント・ハンドラは、当該オペレーションに関連付けられたまたは関連付け予定のファームウェア制御ブロックを、そのオペレーションがファームウェアによって開始されたように、変更または充足することになる。当該オペレーションがファームウェアによって開始されていれば存在したはずの制御ブロックを疑似するための、ファームウェア中の全てのものがセットアップされたならば、ファームウェアは、あたかもファームウェア開始の標準のオペレーションの不具合であるかのように、不具合イベントの処理を開始する。この時点以降の全てのエラー取り扱いは、標準のファームウェア開始のオペレーションに対して行われるものと同じである。
【００４７】
図４を参照すると、好適な実施形態による、全体を参照符号４００で指定された、ハードウェア自動デバイス・オペレーション・イニシエータにより実装されたハードウェア・コマンド・ブロックの例示のストリングのエラー・パスの例が示されている。エラー・パス４００は、シリアル接続ＳＣＳＩ（ＳＡＳ）Ｓブロック中に示された、エラーを有するオペレーションＡ、Ｈ、Ｓ、Ｄを含む、４Ｋより大きなホスト書き込み連鎖４０２を示す。エラーの場合、不具合ＨｗＣｂに対しエラー・イベントが生成される。ファームウェアは、自動開始連鎖４０２を、ＦＷ開始のように見える連鎖、またはＦＷ実施パス・オペレーション／構成体４０４に変換することになる。ほとんどの場合、これは、ＦＷが実行中であったことの自分の認知を表すビットをオンにすることを伴う。また、仮想機能ポインタ・テーブルを構築するために、コンストラクタが実行される。あらゆるものが、ＦＷが、ＦＷ実施パス・オペレーション／構成体４０４として当該オペレーションを開始したように見えるようにして、既存のエラー・パス４０６に示されるように、全ての既存のエラー取り扱いコードがそのまま使われる。
【００４８】
ここで、図５Ａおよび５Ｂを参照すると、好適な実施形態による、それぞれ全体を参照符号５００および５１０で指定された、直接インデックス・エラーの取り扱いの例が示されている。
【００４９】
図５Ａにおいて、直接インデックス・エラーの取り扱いの例５００は、シリアル接続ＳＣＳＩ（ＳＡＳ）Ｓブロック中に示された、オペレーションＨおよびエラーを有するオペレーションＳを含む、４Ｋ以下のホスト書き込み５０２を含む。ファームウェアは、直接インデックスの使用については不知である。書き込み不具合に対し、割り当て制御ブロックＡ、および割り当てＡの後にＨＤＭＡ制御ブロックＨが再構築される。この新規連鎖は、連鎖Ａ、Ｈ５０４で示されるように実行される。Ｓブロック中にエラーを有するＦＷ実施パス・オペレーション／構成体５０６に、標準のエラー処理が適用される。
【００５０】
図５Ｂにおいて、直接インデックス・エラーの取り扱いの例５１０は、シリアル接続ＳＣＳＩ（ＳＡＳ）ブロック中に示された、エラーを有するオペレーションＳ、およびオペレーションＨを含む、４Ｋ以下のホスト書き込み５１２を含む。読み取り不具合に対し、直接インデックスを用いた自動読み取りオペレーションは、ＦＷによって実行された実施パス読み取りオペレーションであったかの如く見えるように変換される。エラー処理の過程では、不在の割り当てＡおよび割り当て解除Ｄは使用されない。エラー処理がエラーを一掃したならば、オペレーション全体が、標準の読み取りオペレーションとして再発行される。これと前述で行われたこととの間の差異は、オペレーションを再開始するに先立って、ページを割り当て解除する前に、割り当てまたは割り当て解除制御ブロックが存在するかどうかをチェックすることである。
【００５１】
次いで、図６Ａおよび６Ｂを参照すると、好適な実施形態による、それぞれ全体を参照符号６００および６１０で指定された、ファームウェア（ＦＷ）のイベントおよび制御の例が示されている。
【００５２】
また、図７Ａおよび７Ｂを参照すると、好適な実施形態による、それぞれ全体が参照符号７００および７１０で指定された、ファームウェア（ＦＷ）のイベントおよび制御のさらなる例が示されている。
【００５３】
本発明の特徴によれば、図６Ａおよび６Ｂ、並びに図７Ａおよび７Ｂは、一般に、自動ＳＡＳ書き込みの変換を処置するコード中の３つの異なるパスを取り扱う。第一に、様々なエンジンにおいて新規のオペレーションが発信されないように、全処理の凍結が行われる。次に、オペレーションが取り得る３つのポジションに対するチェックが行われる。まず、オペレーションがすでにＨＤＭＡエンジンを既に通過している可能性がある。この場合、そのオペレーションは、あたかもＦＷがそれを開始したかのように、実施パス書き込みオペレーションに変換される。次に、オペレーションがまだＨＤＭＡエンジンに入っていない可能性がある。この場合、そのオペレーションがＨＤＭＡエンジンに入るときに、連鎖がＨＤＭＡエンジンを過ぎて続かないように（しかして、自動割り当ておよびＤＭＡオペレーションに見えるように）、ＨＤＭＡ制御ブロックは連鎖の最後になるように変更される。最後に、オペレーションがＨＤＭＡエンジンの中に在る場合は、そのオペレーションは中止される。但し、これは非同期オペレーションなので難しいことが分かっている。この中止はＨＤＭＡエンジン中のオペレーションを喪失する可能性があり、ＨＤＭＡが空白で終了する可能性があって、その場合、これはあたかもそのオペレーションがＨＤＭＡエンジンを過ぎて進捗されたのと同様に取り扱われる。あるいは、この中止によってＨＤＭＡを実際に停止することも可能である。この場合、時によっては、当該オペレーションを同期して検出することが可能なこともあり、時によっては可能でないこともある。可能な場合には、その処置をするために標準のエラー処理が用いられる。分からない場合には、オペレーションは、ＨＤＭＡを通過済みであり得ると仮定され、しかして、そのオペレーションはＨＤＭＡエンジンを過ぎて進捗しているものとして処理される。最後に、この場合、ＨＤＭＡ制御ブロックに対する中止イベントの受信は、変換済みの連鎖に対するものとして取り扱われる。
【００５４】
図６Ａにおいて、ＦＷのイベントおよび制御の例６００は、ホスト直接メモリ・アクセス（ＨＤＭＡ）Ｈブロック中に示された、イベントを有するオペレーションＡ、Ｈ、Ｓ、Ｄを含む、４Ｋより大きいホスト書き込み連鎖６０２を含む。ＦＷは、これらのオペレーションを、実施パス・オペレーションＡ、Ｈ、Ｓ、Ｄを含むＦＷ実施パス・オペレーション／構成体６０４に変換する。
【００５５】
図６Ｂにおいて、ＦＷのイベントおよび制御の例６１０は、ホスト直接メモリ・アクセス（ＨＤＭＡ）Ｈブロック中に示された、イベントを有するオペレーションＡ、Ｈ、Ｓ、Ｄを含む、４Ｋより大きいホスト書き込み連鎖６０２を含む。ＦＷは、これらのオペレーションを、実施パス・オペレーションＡ、Ｈを含むＦＷ実施パス・オペレーション／構成体６１２に変換する。
【００５６】
図６Ａおよび６Ｂにおいて、ＦＷは、ホスト書き込み連鎖６０２のこれらのオペレーションについて実際は不知である。ＦＷが、オペレーションＨ中に示されるオペレーションを停止または休止する必要のある場合に何らかのオペレーションを行いたいとき、ＦＷは、全てのオペレーションを知る必要があり、ＦＷは、全てのあり得るＨＷ自動オペレーションをくまなく探してオペレーションを変換し、且つ、それらのオペレーションを、図６Ａ中のＦＷ実施パス・オペレーション／構成体６０４によっておよび図６Ｂ中のＦＷ実施パス・オペレーション／構成体６１２において示されるような、ＦＷ開始の実施パス・オペレーションに見えるように変換する。書き込みの場合、既存の自動割り当ておよびＤＭＡに起因して、オペレーションを、自動割り当てのＤＭＡオペレーションに変換する必要があることがあり、これには、ＨＤＭＡオペレーションＨの後の連鎖を終了するためＨｗＣｂの変更が含まれる。
【００５７】
図７Ａにおいて、ＦＷのイベントおよび制御の例７００は、ホスト直接メモリ・アクセス（ＨＤＭＡ）Ｈブロック中に示された、イベントおよび中止を有するオペレーションＡ、Ｈ、Ｓ、Ｄを含む、４Ｋより大きいホスト書き込み連鎖７０２を含む。ＦＷは、これらオペレーションを、実施パス・オペレーションＡ、Ｈ、Ｓ、Ｄを含むＦＷ実施パス・オペレーション／構成体７０４に変換する。
【００５８】
図７Ｂにおいて、ＦＷのイベントおよび制御の例７１０は、ホスト直接メモリ・アクセス（ＨＤＭＡ）Ｈブロック中に示された、イベントおよび中止を有するオペレーションＡ、Ｈ、Ｓ、Ｄを含む、４Ｋより大きいホスト書き込み連鎖７０２を含む。ＦＷは、これらオペレーションを、自動割り当てのオペレーションＡ、Ｈを含むＤＭＡオペレーション／構成体７１２に見えるように変換する。
【００５９】
図７Ａおよび７Ｂにおいて、変換が開始されようとするときに、ホスト書き込み連鎖７０２中に示されるようにＨＤＭＡエンジンがオペレーションＨを実行している場合、ＨｗＣｂ  Ｈは、それが既に処理中なので変更することができず、且つ、それが次のＨｗＣｂを開始してしまう可能性があるので継続させることはできない。この時、ＨＤＭＡオペレーションの中止が必要となる。オペレーションが連鎖中の次のＣｂを開始したとき、ＨＤＭＡオペレーションの停止が失敗したと想定され、この場合そのオペレーションは変換される。連鎖が停止された場合は、中止イベントは達成され、連鎖は変換されない。一部の場合に、ＨＤＭＡオペレーションの中止が失敗または失敗しなかったことがあってその後にオペレーションが変換されたとき、オペレーションは変換されたがＨＤＭＡを実際に完了していないかどうかを取り扱う必要がある。中止イベントが非同期的に到着したとき、ＨＤＭＡに対する中止イベントは、ＨＤＭＡオペレーションが中止されることを示す。オペレーションが変換されたがＨＤＭＡが中止されたことが判明した場合、ＦＷインジケータはクリアされ、ＨＤＭＡオペレーションは連鎖の終端に再構築され、再発行される。
【００６０】
図８を参照すると、好適な実施形態による、全体を参照符号８００で指定された、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された、生成イベントを有する標準フローまたは良好パスの例が示されている。ブロック８０２に示されるように、入力／出力アダプタ要求制御ブロック（ＩＯＡＲＣＢ：ｉｎｐｕｔ／ｏｕｔｐｕｔ  ａｄａｐｔｅｒ  ｒｅｑｕｅｓｔ  ｃｏｎｔｒｏｌ  ｂｌｏｃｋ）の調査が実施される。現行構成は、ブロック８０２で調査されたＩＯＡＲＣＢに対しＨＷ自動実行機能を用いる能力があり、インライン・ハードウェア・エンジン１１８は、ブロック８０４に示されるように、ＩＯＡＲＣＢを実施するために、ハードウェア・コマンド・ブロックの連鎖を構築し、次いで、それぞれオペレーションＡ、Ｈ、Ｓ、Ｄ８０８を含む複数のブロック８０６、８０８、８１０、８１２中に示されるような実行の連鎖を開始する。ブロック８１４に示されるように、イベントが生成される。ブロック８１６に示されるように、ＦＷプロセスの完了が提供される。ブロック８１８に示されるように、次いで、ＦＷは、ホストへの応答の送信を開始する。
【００６１】
図９を参照すると、好適な実施形態による、全体を参照符号９００で指定された、ハードウェア自動デバイス・オペレーション・イニシエータによって実装された有効化および無効化イベント・キュー・オペレーションについての例が示されている。一般に有効化は簡単である。ＦＷが、図１の一部のリソース取り扱いハードウェア・レジスタ１１９毎にいくつかのビットを書き込み、これらビットが書き込まれた後、ＨＷは、任意の新規オペレーションに対する連鎖を自動構築する。無効化は、いくつかの非同期手段に頼る必要があるのでもっと複雑である。
【００６２】
図９において、例示の有効化および無効化イベント・キュー・プロセス９００は、ＦＷが処理した直近のイベント９０６の間に示される未知のゾーン９０４を有するイベント・キュー９０２と、受信された無効化ポイント補助およびファームウェア・イベント９０８とを含む。全ての可能な未処理補助オペレーションを変換することによって、未知のゾーン９０４のウィンドウが低減される。ファームウェアがアトミックにＨＷを無効化したならば、もはや自動オペレーションは生成されない。イベント・キュー９０２中の、無効化ポイント補助および受信ファームウェア・イベント９０８の後の全ての後側オペレーションは自動オペレーションではない。ＦＷが処理した直近のイベント９０６において、予期しない自動オペレーションの完了がないように、全ての可能なＳＡＳ補助のオペレーションに対し変換が実施され、ファームウェアはそれ自体にイベント・キューについてのイベントを送信する。ＦＷが、９０６でそれ自体にイベントを送信し、９０８でそれを受信することによって、未知のゾーン９０４のウィンドウがバインドされる。ＦＷイベントの前に、ＨＷは、それが自動オペレーションを開始したことを表すイベントを送信することができる。ＦＷは、これらのイベントをフィルタして、無効化の過程で自分が行った変換を明らかにする必要がある。ＦＷイベントの後、ＦＷはイベント・キューのフィルタを停止して、イベント・キューの標準処理に戻ればよい。
【００６３】
図１０は、例示の設計フロー１０００のブロック図を示す。設計フロー１０００は、設計されるＩＣの種類によって変わり得る。例えば、特定用途向けＩＣ（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ＩＣ）を作製するための設計フロー１０００は、標準部品を設計するための設計フロー１０００とは異なり得る。設計構造体１００２は、望ましくは設計プロセス１００４へのインプットであり、このインプットはＩＰプロバイダ、コア開発者、または他の設計会社から来ることもあり、あるいは、設計フローのオペレータによって生成されることもあり、または他の提供源によることもある。設計構造体１００２は、回路図、または例えば、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、Ｃなどのハードウェア記述言語ＨＤＬの形で、コントローラ１００およびチップ１０２を含む。設計構造体１００２は、一つ以上のマシン可読媒体に包含することができる。例えば、設計構造体１００２は、コントローラ１００およびチップ１０２のテキスト・ファイルまたはグラフ表示であってよい。設計プロセス１００４は、望ましくは、コントローラ１００およびチップ１０２をネットリスト１００６中に合成または転換し、ネットリスト１００６は、例えば、集積回路設計中の他の素子および回路への接続を記述し、少なくとも一つのマシン可読媒体に記録される、ワイヤのリスト、トランジスタ、論理ゲート、制御回路、Ｉ／Ｏ、モデルなどである。これは、ネットリスト１００６が、コントローラ１００およびチップ１０２に対する設計仕様およびパラメータの如何によって、一回以上にわたり再合成される、相互作用プロセスであり得る。
【００６４】
設計プロセス１００４には、例えば、３２ｎｍ、４５ｎｍ、９０ｎｍといった各種技術ノードなど所与の製造技術に対する、モデル、レイアウト、および記号表現を含め、よく使われる素子、回路、およびデバイスのセットを収納可能なライブラリ・エレメント１００８、設計仕様１０１０、特性化データ１０１２、検証データ１０１４、設計ルール１０１６、および、試験パターンおよび他の試験情報を含み得る試験データ・ファイル１０１８からのインプットなど、様々なインプットの使用を含めることができる。設計プロセス１００４には、例えば、タイミング解析、検証、設計ルール確認、配置配線作業などの標準的回路設計プロセスをさらに含めてもよい。集積回路設計の当業者は、本発明の範囲および趣旨から逸脱することなく、設計プロセス１００４で使用可能な電子設計自動化ツールおよびアプリケーションの範囲をよく理解できよう。本発明の設計構造体はいかなる特定の設計フローにも限定されない。
【００６５】
設計プロセス１００４は、望ましくは、図１に示されるような本発明の実施形態を、任意のさらなる集積回路設計またはデータ（適用可能な場合）とともに、第二設計構造体１０２０に転換する。設計構造体１０２０は、例えば、ＧＤＳＩＩ（ＧＤＳ２）、ＧＬ１、ＯＡＳＩＳで、またはかかる設計構造体を保存するための任意の他の適切なフォーマットで格納された情報など、集積回路のレイアウト・データの交換のため用いられるデータフォーマットで、ストレージ媒体上に常駐する。設計構造体１０２０には、例えば、試験データ・ファイル、設計コンテント・ファイル、製造データ、レイアウト・パラメータ、配線、金属のレベル、ビア、形状、製造ラインをたどるためのデータ、および、半導体製造者が、図１中に示された本発明の実施形態を生成するために必要とする任意の他のデータを含めることができる。次いで、設計構造体１０２０は段階１０２２に進むことができ、例えば、設計構造体１０２０は、テープアウトに進み、製造にリリースされ、マスク・ハウスにリリースされ、別の設計ハウスに送付され、顧客に納品などされる。
【００６６】
図面中に示された本発明の実施形態の詳細を参照しながら本発明を説明してきたが、これらの詳細は、添付の特許請求の範囲を限定することは意図されていない。
【図１】
0006537510.tif 000002
【図２】
0006537510.tif 000003
【図３】
0006537510.tif 000004
【図４】
0006537510.tif 000005
【図５】
0006537510.tif 000006
【図６】
0006537510.tif 000007
【図７】
0006537510.tif 000008
【図８】
0006537510.tif 000009
【図９】
0006537510.tif 000010
【図１０】
0006537510.tif 000011