JP2002540526A - I/o完了報告を組み合わせるホスト・アダプタおよびそれを使用する方法 - Google Patents

I/o完了報告を組み合わせるホスト・アダプタおよびそれを使用する方法

Info

Publication number
JP2002540526A
JP2002540526A JP2000608268A JP2000608268A JP2002540526A JP 2002540526 A JP2002540526 A JP 2002540526A JP 2000608268 A JP2000608268 A JP 2000608268A JP 2000608268 A JP2000608268 A JP 2000608268A JP 2002540526 A JP2002540526 A JP 2002540526A
Authority
JP
Japan
Prior art keywords
requests
host
completed
request
host microprocessor
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
Application number
JP2000608268A
Other languages
English (en)
Inventor
マイカリッツイ、チャールズ、ジュニア
ニューイエム、ターン、エックス
ロマニエック、リチャード、エル
ニューエン、トーン、ビー
Original Assignee
クロジック コーポレーション
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 クロジック コーポレーション filed Critical クロジック コーポレーション
Publication of JP2002540526A publication Critical patent/JP2002540526A/ja
Pending legal-status Critical Current

Links

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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Systems (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 I/Oリクエスト完了報告を組み合わせるために適用できる方法を使用し、またホスト・マイクロプロセッサに対する割り込みの回数を相当減少するホスト・アダプタを提供すること。 【解決手段】 I/Oシステム内の入力/出力(I/O)コントローラ(40)が、ホスト・コンピュータ(15)から複数のI/Oデバイス(80〜86)へのI/Oリクエストを処理する。I/Oコントローラ(40)が、割り込みをホスト・コンピュータ(15)に発生し、I/Oシステムの少なくとも一つの条件が一致したときに、I/Oデバイス(80〜86)からの複数の完了I/Oリクエストを報告する。I/Oシステムの第1条件が、I/Oデバイス(80〜86)による未報告I/O完了の総数とホスト・コンピュータ(15)からの残りのI/Oリクエストの総数との間の所定比率からなる。第2条件が、いずれの個々のI/Oデバイス(80〜86)のために処理されるべく残された残りのI/Oリクエストの数が所定最少制限に達したときに、始動するタイマーの時間終了からなる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
(技術分野) 本発明は概してコンピュータ・システムに関する。より詳しくは、本発明はホ
スト・アダプタからホスト・マイクロプロセッサに発生された入力/出力(I/
O)完了割り込み(インタラプト、interrupt )の数を減少するホスト・アダプ
タに関する。
【0002】
【従来の技術】
(背景技術) コンピュータ・システムにおいて、ホスト・マイクロプロセッサ(ホスト・シ
ステム)または中央処理ユニット(CPU)が、I/OリクエストをI/Oコン
トローラないしアダプタに送信することによって、ディスク・ドライブのような
多数の周辺I/Oデバイスから情報を検索する。I/Oコントローラが周辺I/
Oデバイスとして予定されているI/Oリクエストを処理する。ほとんどのI/
Oコントローラは、ホスト・マイクロプロセッサからの多数I/Oリクエストを
同時に処理する。I/Oコントローラは各I/Oリクエストに関連する数個の低
レベル命令を処理する。例えば、小型コンピュータ・システム・インターフェー
ス(SCSI)バスに添着されたI/Oデバイスに対して、単一I/Oリクエス
トがSCSIバスのために仲裁する命令、ターゲットI/Oデバイスを選択する
命令、データの転送をリクエストする命令、SCSIバスからのI/Oデバイス
との断続および再接続する命令、およびSCSIバス状態を変更する他の命令を
含んでいてよい。
【0003】
【発明が解決しようとする課題】
上述のコンピュータ・システムにおいて、I/OデバイスがI/Oリクエスト
または低レベル命令の一つを完了した後、I/Oコントローラがハードウエア・
割り込みを介してホスト・マイクロプロセッサに通知する。割り込みがホスト・
マイクロプロセッサをして、I/Oリクエストが完了され、また、I/Oリクエ
ストが正確に実行されたかどうか決定せしめる。ホスト・マイクロプロセッサは
、I/Oコントローラからの割り込みをサービスするために他の操作を一時中断
しなければならない。さらに、ホスト・マイクロプロセッサが各割り込みをサー
ビスするとき、ホスト・マイクロプロセッサはオーバーヘッドまたは負担(burde
n)をこうむる。オーバーヘッドはホスト・マイクロプロセッサに出入りする割り
込みによって生ぜしめられる。
【0004】 ホスト・マイクロプロセッサが、多数のI/Oリクエストを送信すれば、すな
わち、I/Oの処理量が高ければ、ホスト・マイクロプロセッサが対応する多数
の割り込みを受信し、割り込みに関連する相当量のオーバーヘッドとなる。マル
チ−ユーザないしマルチータスク・コンピュータ・システムにおいて、このオー
バーヘッドはホスト・マイクロプロセッサ時間と他のアプリケーションを処理す
るのに利用可能なリソース(例えば、パワー)の大きさを縮小する。これがシス
テムの性能のスローダウンを引き起こす。既存のホスト・マイクロプロセッサが
より高速になるように設計されるにつれて、ホスト・サービス・割り込みのため
のシステム性能中のスローダウンがより顕著になる。
【0005】 何年にも渡り、高速ホスト・マイクロプロセッサに付加して、I/Oリクエス
トを処理中の周辺I/Oデバイスの速度も改善された。この速くなった速度が、
ホスト・マイクロプロセッサに対するI/O完了割り込みの頻度を増す。
【0006】 加うるに、ホスト・マイクロプロセッサを稼働するプログラム・アプリケーシ
ョンには、より大きい処理パワーを必要とする。従って、I/Oリクエストと応
答を達成するために使用される処理パワーのためにより大きい需要がある。
【0007】
【課題を解決するための手段】
(発明の開示) 本発明はI/Oリクエスト完了報告を組み合わせるために適用できる方法を使
用し、またホスト・マイクロプロセッサに対する割り込みの回数を相当減少する
ホスト・アダプタに関する。特に、このアダプタは1秒当りのI/O完了報告(
IOPS)と割り込みとの比を相当増加させる。
【0008】 I/O完了報告を首尾よく組み合わせるとともに、割り込みの回数を減少する
ことによって、ホスト・アダプタが首尾よく完了されるI/Oリクエストのため
の割り込みのサービスを受けるオーバーヘッドを減少する。これが処理時間(「
I/Oバウンド」時間)と、アダプタからの割り込みの処理でホスト・マイクロ
プロセッサによって消費されるパワーを低減し、ユーザ・アプリケーションを処
理するホスト・マイクロプロセッサに対する時間とパワーをより多く生成する。
本発明の一実施例において、割り込みをサービスするホスト・マイクロプロセッ
サ(CPU利用)によって消費される時間および/またはリソース(例えば、パ
ワー)量は20%減少する。
【0009】 本発明の一つの利点は、ホスト・マイクロプロセッサのI/Oリクエスト処理
量に適合することである。ホスト・マイクロプロセッサが忙しくなればなるほど
、ますます多くのI/O完了報告が単一割り込みを伴うアダプタによって戻され
る。より詳しく説明すると、I/Oリクエスト処理量が多くなればなるほど、1
秒当りのI/O完了報告と割り込みとの率(IOPS)がますます高くなる。例
えば、一実施例において、処理量が比較的低ければ、例えば5〜10のI/Oリ
クエストが一度に発生されると、3〜5のI/O完了報告が単一割り込みでホス
ト・マイクロプロセッサに対して報告される。処理量が比較的高ければ、例えば
30〜60のリクエストが一度に発生されると、30までのI/O完了報告がホ
スト・マイクロプロセッサに対して単一割り込みで報告される。これが顕著な利
点を提供する。なぜなら、ホスト・マイクロプロセッサが忙しくなればなるほど
、ホスト・マイクロプロセッサは、割り込みをサービスし、割り込みに関連する
オーバーヘッドに対する時間とリソースの余裕がますます少なくなるからである
【0010】 ホストへの割り込みの数を減らすこと以外に、アダプタの別の利点は、I/O
デバイスがもはや処理するI/Oリクエストを残していないときに、すなわち、
I/Oが「遊び」状態のときに、タイマーをスタートすることによってI/Oデ
バイスのために十分な稼働を維持する。タイマーが時間になったときに、全てが
首尾よく完了するが、全てのI/Oデバイスからの未報告I/Oリクエストが割
り込みでホスト・マイクロプロセッサにポストされる。あるホスト・アプリケー
ションにおいて、より多くのI/Oリクエストが送られる前に、ホスト・マイク
ロプロセッサはI/Oリクエストが完了され、報告されるまで待機している。こ
れらの完了I/Oリクエストが処理された後、ホスト・マイクロプロセッサが新
しいI/OリクエストをI/Oデバイスに送ってもよい。これにより、一つまた
はそれ以上の新しいI/Oリクエストが遊び(アイドル)中のI/Oデバイスに
送られる可能性が増加する。この結果、アダプタがコンピュータ・システムの待
機時間を短縮するとともに全体的性能 (パフォーマンス) を改善する。
【0011】 本発明の適応できる特徴のために、I/Oリクエスト処理量(高い処理量また
は低い処理量のいずれでも)、アクセスのタイプ(シーケンス・アクセスまたは
ランダム・アクセスのいずれでも)、システム構成のタイプ、I/Oデバイスの
数、I/Oリクエストのタイプ、およびキユーされたI/Oまたはキューされて
いないI/Oリクエストのいずれでにも関係なくシステム性能が改善される。
【0012】 本発明の一つの観点は、コンピュータ・システム内で発送(dispatch)されたI
/Oリクエストを処理する方法に関し、ホスト・コンピュータのホスト・マイク
ロプロセッサがI/OリクエストをI/Oコントローラに発送し、ホスト・コン
ピュータと複数の周辺I/Oデバイス間のデータの伝送を開始する。発送I/O
リクエストを処理する方法が、(a)発送I/Oリクエストを周辺I/Oデバイ
スとホスト・コンピュータのメモリ間でデータを伝送することによって処理する
工程と;(b)工程(a)と同時に、少なくとも多数の未報告完了I/Oリクエ
ストと多数の未決I/Oリクエストに基づいて、ホスト・マイクロプロセッサに
割り込みするかどうかを決定する工程と;(c)工程(b)でホスト・マイクロ
プロセッサが割り込みされたことが決定されたときに、ホスト・マイクロプロセ
ッサに割り込みし、またホスト・マイクロプロセッサに未報告完了I/Oリクエ
ストを報告する工程と;(d)I/Oコントローラの現在の動作に基づく工程(
c)においてホスト・マイクロプロセッサに報告された未報告完了I/Oリクエ
ストの数を変更する工程とを含んでいる。
【0013】 一実施例において、工程(b)が未報告完了I/Oリクエストの数と未決I/
Oリクエストの数を比較することからなる。一つの構成において、この方法は未
報告完了I/Oリクエストの数が未決I/Oリクエストの数よりも大きいかまた
は同数であるときにホスト・マイクロプロセッサに割り込みする工程からなる。
【0014】 一実施例において、ホスト・マイクロプロセッサに割り込みするかどうかを決
定する工程(b)がさらに各周辺I/Oデバイスに対応する未決I/Oリクエス
トの数にさらに基づいている。一つの構成において、この方法は周辺I/Oデバ
イスの一つに対する未決I/Oリクエストの数がゼロに達した場合、ホスト・マ
イクロプロセッサに割り込みする工程からなる。別の構成において、この方法は
周辺I/Oデバイスの一つに対する未決I/Oリクエストの数が予め定められた
プログラム可能な数に達した場合、ホスト・マイクロプロセッサに割り込みする
工程からなる。一つの構成において、各周辺I/Oデバイスが割り込みをホスト
・マイクロプロセッサにトリガするそれぞれプログラム可能な数の未決I/Oリ
クエストを有している。
【0015】 一つの構成において、ホスト・マイクロプロセッサの割り込みの工程において
、周辺I/Oデバイスのための未決I/Oリクエストの数がゼロに到達すれば、
ホスト・マイクロプロセッサを割り込みする前に、所定時間待機する工程を含ん
でいる。選択された所定時間周期が、ホスト・マイクロプロセッサが割り込みさ
れる前に、一つまたはそれ以上の他の周辺I/Oデバイスがそれぞれの未決I/
Oリクエストを完了するという可能性を実質的に増加させる。別の構成において
、所定時間周期が約5マイクロ秒と約8ミリ秒の間である。別の構成においては
、所定時間周期が約25マイクロ秒と約1,000マイクロ秒の間である。別の
構成においては、それぞれの所定時間周期が各周辺I/Oデバイスのために選択
される。一つの構成において、所定時間周期がプログラム可能である。
【0016】 本発明の別の観点は、コンピュータ・システムにおけるI/Oコントローラに
関し、そのホスト・コンピュータのホスト・マイクロプロセッサが入力/出力(
I/O)リクエストをI/Oコントローラに発送し、ホスト・コンピュータと複
数の周辺I/Oデバイス間でデータを伝送し、またI/Oコントローラがホスト
・マイクロプロセッサを割り込みし完了I/Oリクエストを報告する。I/Oコ
ントローラが:ホスト・マイクロプロセッサから残留I/Oリクエストの総数を
カウントするように構成された第1カウンタと;I/Oデバイスによって完了さ
れた未報告I/Oリクエストの総数をカウントするように形成された第2カウン
タとからなる。I/Oコントローラが第1カウンタ内の数と第2カウンタ内の数
を比較する。第2カウンタ内の数が第1カウンタ内の数よりも大きいか、または
これに等しいときに、前記I/Oコントローラがホスト・マイクロプロセッサを
割り込みし、I/Oデバイスによって完了された全ての未報告I/Oリクエスト
を報告する。
【0017】 一実施例において、I/Oコントローラがさらに、各カウンタがI/Oデバイ
スの一つにつき残留I/Oリクエストの数をカウントするように構成された複数
のI/Oデバイス・カウンタと、所定時間周期を伴うタイマーからなる。このタ
イマーは、複数のI/Oデバイスの一つが最後のI/Oリクエストを完了させた
とき、すなわち、I/Oデバイス・カウンタが1から0への過渡期にあるときに
、タイミングを開始するように形成されいる。タイマーが所定時間周期に達した
ときに、I/Oコントローラがホスト・マイクロプロセッサを割り込みし、I/
Oデバイスによって完了された全ての未報告I/Oリクエストを報告する。一つ
の構成において、全てのカウンタがI/Oコントローラに関連するランダム・ア
クセス・メモリ内に記憶され、更新される変数である。
【0018】 本発明の別の観点は、完了I/Oリクエストがコンピュータ・システム内のホ
スト・マイクロプロセッサに報告されるタイミングを制御するI/Oコントロー
ラ内の方法に関する。ホスト・コンピュータのホスト・マイクロプロセッサが入
力/出力(I/O)リクエストをI/Oコントローラに発送し、ホスト・コンピ
ュータと複数の周辺I/Oデバイス間でデータを伝送する。またI/Oコントロ
ーラがホスト・マイクロプロセッサを割り込みし、完了I/Oリクエストを報告
する。この方法は、少なくとも(i)未報告完了I/Oリクエストの数と、(i
i)複数の未決I/Oリクエストの周辺I/Oデバイスの数をモニターする工程
と;このモニター工程に基づいて、完了I/Oリクエストに報告するために、ホ
スト・マイクロプロセッサを割り込みするかどうかを決定する工程と;ホスト・
マイクロプロセッサを割り込みする工程と;割り込み毎にホスト・マイクロプロ
セッサへ完了I/Oリクエストの可変数を報告する工程とからなる。
【0019】 一実施例において、完了I/Oリクエストに報告するために、ホスト・マイク
ロプロセッサを割り込みするかどうかを決定する工程が、未報告完了I/Oリク
エストの数と複数の未決I/Oリクエストの周辺I/Oデバイスの数と比較する
工程を含んでいる。一つの構成において、この方法は、未報告完了I/Oリクエ
ストの数が、未決I/Oリクエストの周辺I/Oデバイスの数より大きいか、ま
たはこれに等しいときに、ホスト・マイクロプロセッサを割り込みする工程を含
んでいる。
【0020】
【発明の実施の形態】
(好ましい実施例の詳細な説明) 本発明はI/Oリクエスト完了報告の組み合わせに適用可能な方法を使用し、
ホスト・マイクロプロセッサへの割り込みの数を相当減じるホスト・アダプタに
関する。
【0021】 図1は本発明の一実施例によるコンピュータ・システム10を示す。本発明の
適応特性のために、コンピュータ・システム10の別の実施例が、図1に示すも
のとは異なるシステム構成をとることもある。加わうるに、別の実施例は高い、
または低いI/Oリクエスト処理量、シーケンスまたはランダムI/Oアクセス
、異なる数量のI/Oデバイス、およびキューされたまたはキューされていない
I/Oを備えることもできる。
【0022】 図1において、コンピュータ・システム10はホスト・システム15、第1バ
ス35、ホスト・アダプタ・ボード40、第2バス70、および多数の周辺I/
Oデバイス80〜86からなる。当業者は、ホスト・システム15、ホスト・ア
ダプタ・ボード40、第1バス35、および第2バス70に対する種々の名前お
よび構成を理解することができるであろう。例えば、ホスト・システム15は中
央処理ユニット(CPU)、メイン・マイクロプロセッサ、メイン・プロセッサ
、主処理ユニットまたは単にホストと呼ぶこともある。
【0023】 (ホスト・システム) 一つの構成において、図1のホスト・システム15はホスト・マイクロプロセ
ッサ20とメモリ25からなる。メモリ25はソフトウエア・ドライバー30、
割り込み・ハンドラ32、リクエスト・キュー26、レスポンス・キュー27、
リクエスト・キュー・インポインタ変数350、リクエスト・キュー・アウトポ
インタ変数352、レスポンス・キュー・インポインタ変数354、およびレス
ポンス・キュー・アウトポインタ変数356からなる。ソフトウエア・ドライバ
ー30と割り込み・ハンドラ32は、メモリ25からホスト・マイクロプロセッ
サ20によって実行される。一つの構成において、ソフトウエア・ドライバー3
0は主要アプリケーション、ファイル・システム・マネージャ、周辺I/Oデバ
イス80〜86のための少なくとも一つのデバイス・ドライバーとホスト・アダ
プタ・ドライバー(図示省略)からなる。
【0024】 リクエスト・キュー26とレスポンス・キュー27のようなメモリ25の少な
くとも一部が、ホスト・マイクロプロセッサ20とホスト・アダプタ・ボード4
0間で共通メモリとなる。リクエスト・キュー26とレスポンス・キュー27が
、I/OリクエストとI/Oレスポンスに関連する命令と状態情報を記憶する。
【0025】 (PCIバスおよびSCSIバス) 第1および第2バス35、70は、システム・バス、I/Oバス、またはネッ
トワーク・バスと呼ばれることもある。一つの構成において、第1バス35は周
辺要素相互接続(PCI)バスである。一つの構成において、第2バス70は小
型コンピュータ標準インターフェース(SCSI)バスである。第2バス70は
いずれのタイプのSCSIバスでもよい。例えば、一つの構成において、SCS
Iバスは15ターゲットまでをサポートする単一ポート・バスである。各ターゲ
ットは1から32の論理ユニット(LUNs)をサポートできる。従って、単一
ポートSCSIバスは15から480(15×32=480)の周辺I/Oデバ
イス80〜86をサポートできる。別の構成において、SCSIバスはデュアル
−ポート・バスで、31までのターゲットをサポートする。別の構成において、
第2バス70は高速、超ワイドSCSIバスである。別の構成において、第2バ
ス70はファイバー・チャネルである。一つの構成において、ファイバー・チャ
ネルはSCSI命令フォーマットまたはSCSIパケット・フォーマットを使用
するか、またはこれに追従するように形成されている。
【0026】 第1バス35はホスト・システム15とホスト・アダプタ・ボード40間の通
信を提供する。第2バス70はホスト・アダプタ・ボード40とI/Oデバイス
80〜86間の通信を提供する。
【0027】 (ホスト・アダプタ・ボード) ホスト・アダプタ・ボード40および/またはホスト・アダプタ45は、I/
Oコントローラ、I/Oコントローラ回路、I/Oコントローラ・システム、I
/Oプロセッサ、I/Oサブ−プロセッサ、通信アダプタまたは単にホスト・ア
ダプタと呼ばれることもある。ホスト・アダプタ・ボード40は差動アダプタ・
ボード、SCSI単端アダプタ・ボードまたはファイバー・チャネル・アダプタ
・ボードの構成をとってもよい。一実施例において、ホスト・アダプタ・ボード
40はホスト・アダプタ45、リード−オンリ・メモリ(ROM)60およびラ
ンダム−アクセス・メモリ(RAM)65からなる。一つの構成において、RO
Mはブータブル・コード61を記憶するフラッシュ・プログラマブルROM(P
ROM)である。
【0028】 一つの構成において、ホスト・アダプタ45はマイクロプロセッサ50、イン
ターフェース・レジスタ52およびSCSI実行プロトコル(SXP)エンジン
55からなる。一つの構成において、マイクロプロセッサ50は縮小命令セット
・コンピュータ(RISC)である。
【0029】 RAM65は、このRAM65にソフトウエア・ドライバー30またはブット
アップ時間にブータブル(フラッシュ)コード61によってダウンロードされた
(すなわち、初期化され、かつ、負荷されるかまたは形成された)RISCコー
ドまたはファームウエア62を記憶する。ファームウエア62はホスト・アダプ
タ45によって実行され、ホスト・マイクロプロセッサ20からのI/Oリクエ
ストと命令を処理する。SXPエンジン55がI/Oリクエストに関する低レベ
ル命令を処理するとともに、マイクロプロセッサ50に対して、他の到来I/O
リクエストを処理することのような他の操作の実行を許可する。
【0030】 (I/Oデバイス) 周辺I/Oデバイス80〜86は、テープ・ドライブ、ディスク・ドライブ、
ビデオ・ディスク・ドライブ(VDD)、デジタル・ビデオ・ディスク(DVD
)、安い/独立のディスクの冗長アレイ(RAID)、CD−ROM、スキャナ
、プリンタ等である。図示の目的で、7個の周辺I/Oデバイス80〜86を図
1に示している。しかし、コンピュータ・システム10は、7個未満または7個
を超えるI/Oデバイス80〜86で構成してもよい。I/Oデバイスのいずれ
の数および/または組み合わせも本発明において使用してもよい。
【0031】 (一般的動作) コンピュータ・システム10の一般的な使用および動作を、図1を参照して説
明する。ホスト・マイクロプロセッサ20および/またはソフトウエア・ドライ
バー30が、リクエスト・キュー26内で周辺I/Oデバイス80〜86として
用いられる予定であるI/Oリクエストを記憶する。アダプタ45および/また
はファームウエア62がPCIバス35を介してリクエスト・キュー26からI
/Oリクエストを検索する。一つの構成において、ホスト・アダプタ45がダイ
レクト・アクセス・メモリ(DMA)を介してホスト・メモリ25からI/Oリ
クエストを読み取る。アダプタ45は、ホスト・マイクロプロセッサ20からの
介在なしに多数のI/O操作とデータ転送の管理をすることができる。
【0032】 アダプタ45は、I/Oリクエストを処理し、SCSIバス70を介して命令
を周辺I/Oデバイス80〜86に伝送し、リクエストされたデータを検索ない
し記憶する。ホスト・アダプタ45はリクエストされたデータをダイレクト・メ
モリ・アクセス(DMA)を介してホスト・メモリ25に送り、またこれから受
け、あるいはこれを検索する。以下に説明する適応方法によれば、I/Oリクエ
ストの数または率が完了したとき、またはI/Oデバイス80〜86が処理する
さらなる命令がなくなった後、ある時間周期が終了したときに、アダプタ45が
割り込みをホスト・マイクロプロセッサ20に対して発生する。
【0033】 (リクエストおよびレスポンス・キュー) 図2A〜2Bはホスト・メモリ25内のリクエスト・キュー26の例を示す。
レスポンス・キュー27の構造は図2A〜2Bに示したリクエスト・キュー26
の構造と実質的に同じであるが、レスポンス・キュー27がI/O状態ブロック
(IOSB)を含むように形成され、一方リクエスト・キュー26がI/O命令
ブロック(IOCB)を含むように形成されている点で異なる。一つの構成にお
いて、リクエスト・キュー26とレスポンス・キュー27は、64バイトの先入
れ先出し(FIFO)エントリーの円形固定長さリストとして編成されている。
一つの構成において、各キュー26、27内に128のエントリーがある。本発
明の他の実施例において、命令および状況情報が、円形キューの代わりにデータ
構造(例えば、スタック)の他のタイプで記憶される。
【0034】 各キュー26、27は指標として提供されたインポインタとアウトポインタを
有している。メモリ25が、一連のインポインタとアウトポインタ変数350〜
356(図1)を記憶し、ホスト・アダプタ・ボード40のファームウエア62
が、RAM65内に記憶された一連のそれ自体のインポインタとアウトポインタ
変数360〜366(図4)を使用する。メモリ25(図1)に記憶された各イ
ンポインタとアウトポインタ変数350〜356は、キュー26、27の一つの
128エントリーの一つのアドレスに関連するアドレスに変換することができる
【0035】 キュー26、27のインポインタとアウトポインタは、キュー26、27がフ
ル(いっぱい)であるか、空きであるか、または部分的につまっているかを決定
する。キュー26、27のインポインタがそのキュー26、27のアウトポイン
タよりも一つ少ないとき(円形キューのラップアラウンド状態を考慮して)、キ
ュー26、27はフルである。図2Aはフルリクエスト・キュー26の1つの形
態を図示している。 フル・キュー26、27はキュー26、27の総合長さ未
満の1エントリーを含んでいる。インポインタ87とアウトポインタ88が等し
いとき、キュー26、27は空きである。図2Bは空きリクエスト・キュー26
の一つの構成を示す。特定キュー26、27内の空き(利用可能)キュー・エン
トリーの数が、アウトポインターからインポインターを減算することによって(
回り込み(wrap-around) 状態を考慮して)計算される。
【0036】 リクエスト・キュー26は、ホスト・アダプタ45(および/またはファーム
ウエア62)に対するインターフェースであり、これを介してホスト・マイクロ
プロセッサ20が、種々の命令とデータからなるI/O命令ブロック(IOCB
)の伝送のためのI/Oリクエストを通過させる。リクエスト・キュー26のエ
ントリーが、リクエスト・キュー・インポインタ88を制御するホスト・マイク
ロプロセッサ20によってのみキューされる。リクエスト・キュー26のエント
リーは、リクエスト・キュー・アウトポインタ88を制御するホスト・アダプタ
45(および/またはファームウエア62)によってのみデキュー(de-queued)
される。
【0037】 レスポンス・キュー27はホスト・マイクロプロセッサ20に対するインター
フェースであり、これを介してホスト・アダプタ45(および/またはファーム
ウエア62)が、SCSI状況とI/Oリクエストに関する他の状況情報からな
るI/O状況ブロック(IOSB)の伝送のためにI/Oレスポンスを通過させ
る。レスポンス・キュー27のエントリーは、レスポンス・キュー・インポイン
タ(図示省略)を制御するアダプタ45(および/またはファームウエア62)
によってのみキューされる。レスポンス・キュー27のエントリーは、レスポン
ス・キュー・アウトポインタ(図示省略)を制御するホスト・マイクロプロセッ
サ20によってのみデキューされる。
【0038】 (エントリー・タイプ−リクエスト・キュー) リクエスト・キュー26内の各エントリーは一つのIOCBを保持できる。I
OCBは、そのホスト・アダプタ・プロセッサ50がホスト・メモリ25から検
索し、実行する命令とデータを含んでいる。種々のタイプのIOCBがあってよ
い。一つの構成において、リクエスト・キュー26は少なくとも二つのIOCB
エントリ・タイプを有している。すなわち、COMMAND とEXTENDE
D COMMANDである。図3AはCOMMAND エントリー・タイプ10
0の一つの構成を示し、また図3BはEXTENDED COMMANDエント
リー・タイプ120の一つの構成を示す。リクエスト・キュー26も、CONT
INUATION, MARKERおよびSCAN OPERATION(図示
省略)のような他のエントリー・タイプを有している。
【0039】 COMMAND エントリー・タイプ100(図3A)は、SCSI命令の特
定I/Oデバイス80〜86への伝送をリクエストする。図3Aにおいて、CO
MMNAD エントリー・タイプ100は少なくとも7個のデータ構造、すなわ
ち、エントリー・タイプ102;ハンドル104;ターゲット106;制御フラ
グ108;SCSI命令ディスクリプタ・ブロック(CDB)118;一つまた
はそれ以上のデータ・セグメント・アドレス110、114;および一つまたは
それ以上のデータ・セグメント長さ112、116からなる。
【0040】 図3Aにおいて、エントリー・タイプ102はCOMMAND エントリー・
タイプ100対EXTENDED COMMANDのようなある他のエントリー
・タイプとしてエントリーを識別する。一つの構成において、COMMAND
エントリーのためのエントリー・タイプ番号は「01H」である。ハンドル10
4は、完了処理業務の部分としてソフトウェア・ドライバ30 (図1)によって
使用される識別子であり、特定ハンドル104と結びついたIOCBが完了した
とマイクロプロセッサ20にしらせる。1つの構成として、ハンドル104は1
6ビット長である。別の構成において、ハンドル104は32ビット長である。
ターゲット106は、I/O命令を受信する特定ターゲットないしI/Oデバイ
ス80〜86を識別する。一つの構成において、ターゲット106はブリッジ・
コントローラ(図示省略)またはI/Oデバイス80〜86のSCSI IDで
ある。
【0041】 制御フラグ108が、どのようにCOMMAND エントリー100を実行す
るかをファームウエア62に指示する。SCSI CDB118は、COMMA
ND 位相(phase) 中にターゲットまたはI/Oデバイス80〜86に送られる
CDBバイトを含んでいる。データ・セグメント・アドレス(一つまたは複数)
110、114は、特定読取りまたは書込みI/Oリクエストに関連するメモリ
25内に記憶されたデータ・セグメントの開始アドレスである。データ・セグメ
ント長112、116が特定読取りまたは書込みI/Oリクエストに関連するメ
モリ25内に記憶されたデータ・セグメント・アドレスへ、またはこれから伝送
されたデータ・バイトの数を特定する。
【0042】 EXTENDED COMMANDエントリー・タイプ120はSCSI命令
を特定I/Oデバイス80〜86に発する。一つの構成において、EXTEND
ED COMMANDエントリー・タイプ120は、COMMAND エントリ
ー・タイプ100と同様に、エントリー・タイプ122、ハンドル124、ター
ゲット126、制御フラグ128、およびSCSI CDB130を含んでいる
。一つの構成において、EXTENDED COMMANDエントリのためのエ
ントリー・タイプ番号は「05H」である。
【0043】 (エントリー・タイプ−レスポンス・キュー) レスポンス・キュー27内の各エントリーは一つのIOSBを保持できる。I
OSBは、ホスト・マイクロプロセッサ20に対して、I/Oリクエストが完了
され、またI/Oリクエストが成功したか否かを伝える状況情報を含んでいる。
異なるタイプのIOSBもある。一つの構成において、レスポンス・キュー27
は少なくとも三つのIOSBエントリー・タイプ、すなわち、STATUS、
16ビットのハンドルを伴うSUCCESSFUL STATUS および32
ビットのハンドルを伴うSUCCESSFUL STATUS を有している。
図3CはSTATUSエントリー・タイプ140の一つの構成を示す。図6Aは
16ビットのハンドルを伴うSUCCESSFUL STATUS エントリー
・タイプ370の一つの構成を示す。図6Bは32ビットのハンドルを伴うSU
CCESSFUL STATUS エントリー・タイプ380の一つの構成を示
す。レスポンス・キュー27は、EXTENDED STATUS (図示省略
)のような他のエントリー・タイプを有することもある。
【0044】 STATUSエントリー・タイプ140(図3C)はCOMMAND エント
リー100またはEXTENDED COMMANDエントリー120の完了を
報告し、またI/Oリクエストが成功したか否かも報告する。SUCCESSF
UL STATUS エントリー・タイプ370、380は、成功した多数IO
CBのハンドルを報告する。各COMMAND エントリー100は、レスポン
ス・キュー27内で対応するSTATUSエントリー140または SUCCE
SSFUL STATUSエントリー370、380になり、命令完了がホスト
・マイクロプロセッサ20に通知される。COMMAND エントリー100ま
たはEXTENDED COMMANDエントリー120のハンドル104は、
レスポンス・キュー27内の対応するSTATUSエントリー140または S
UCCESSFUL STATUS370、380内でそのままで戻される。
【0045】 図3Cにおいて、STATUSエントリー・タイプ140は、COMMAND
エントリー・タイプ100のように、エントリー・タイプ142とハンドル1
44を含んでいる。一つの構成において、STATUSエントリー140のエン
トリー・タイプ番号は「03H」である。STATUSエントリー・タイプ14
0は、さらに二つの他のデータ構造、すなわち、完了状況フィールド146とリ
クエスト・データ・フィールド152を含んでいる。完了状況フィールド146
は、発生した転送エラー、および、もし発生した場合のエラーの種類(descripti
on) を報告する。リクエスト・データ・フィールド152は特定I/Oデバイス
80〜86からホスト・マイクロプロセッサ20によってリクエストされた任意
のデータを含んでいる。
【0046】 図6Aにおいて、SUCCESSFUL STATUS エントリー・タイプ
370は、エントリー・タイプ372、ハンドル・カウント374、および首尾
よく完了した特定IOCBに対応する多数の16ビットのハンドルを含んでいる
。一つの構成において、16ビットのハンドルを伴うSUCCESSFUL S
TATUS エントリー・タイプ370のためのエントリ・タイプ番号は「22
H」である。図6Bにおいて、SUCCESSFUL STATUS エントリ
ー・タイプ380は、エントリー・タイプ382、ハンドル・カウント384、
および首尾よく完了した特定IOCBに対応する多数の32ビットのハンドルを
含んでいる。一つの構成において、32ビットのハンドルを伴うSUCCESS
FUL STATUS エントリー380のためのエントリ・タイプ番号は「2
1H」である。一つの構成において、SUCCESSFUL STATUS エ
ントリー・タイプ370、380内のハンドルの順番は、各IOCBが首尾よく
完了されたときの順番と同じである。
【0047】 図3A〜3Cと図6A〜6Bに示したエントリー・タイプが、コンピュータ・
システム10の一実施例により使用される。コンピュータ・システム10の他の
実施例は、ここで説明した(COMMAND 100, EXTENDED C
OMMAND 120, STATUS 140, SUCCESSFUL S
TATUS 370,380)タイプ以外の異なるエントリー・タイプまたは異
なるデータ・構造を備えた同じエントリー・タイプを使用することもできる。
【0048】 (メールボックス) 図4は図1のインターフェース・レジスタ52内の内部メールボックス・レジ
スタ180〜187、190〜197の二つのセット160、165の一つの構
成を示す。アダプタ45はさらに図4に示したようなタイマー245からなる。
一つの構成において、インターフェース・レジスタ52はさらにホスト命令/制
御レジスタ170およびPCI制御レジスタ175からなる。
【0049】 図4はホスト・アダプタ・ボード40のRAM65内に記憶され、かつ、RI
SCコードまたはファームウエア62によって使用される一連の変数を示す。こ
れらの変数にはTOTAL_REMAIN 220, TOTAL_COMPL
ETE 225, DEV_1_COUNT 230, DEV_2_COUN
T 231, DEV_3_COUNT 232 等が含まれている。三つのD
EV_n_COUNT 変数230、231、232のみを図示の目的で図4に
示すが、好ましい構成においては、各周辺I/Oデバイス80〜86のために少
なくとも一つのDEV_n_COUNT 変数がある。別の実施例において、変
数TOTAL_REMAIN, TOTAL_COMPLETE, DEV_1
_COUNT,DEV_2_COUNT, DEV_3_COUNT等は、アダ
プタ45内のインターフェース・レジスタ52にあるレジスタである。
【0050】 一構成において、メールボックス・レジスタ180〜187、190〜197
は、ホスト・マイクロプロセッサ20とアダプタ・プロセッサ50にアクセスで
きる物理的ハードウエア・レジスタである。一つの構成において、各メールボッ
クス・レジスタ180〜187、190〜197は16ビット長である。メール
ボックス・レジスタ180〜187の第1セット160は、到来メールボックス
・レジスタからなり、ホスト・マイクロプロセッサ20によって書込可能であり
、またアダプタ・ファームウエア62(図1)によって読取可能である。到来メ
ールボックス・レジスタ180〜187は、ホスト・マイクロプロセッサ20か
らアダプタ・プロセッサ50および/またはファームウエア62への情報を転送
するのに使用される。
【0051】 メールボックス・レジスタ190〜197の第2セット165は送出メールボ
ックス・レジスタであり、アダプタ・ファームウエア62によって書込可能であ
り、またホスト・マイクロプロセッサ20によって読取可能である。送出メール
ボックス・レジスタ190〜197は、アダプタ・プロセッサ50および/また
はファームウエア62からホスト・マイクロプロセッサ20への状況情報を転送
するのに使用される。
【0052】 図4の両メールボックス・レジスタ・セット160、165において、レジス
タ4はリクエスト・キュー26に関連するポインタを含み、またレジスタ5がレ
スポンス・キュー27に関連するポインタを含んでいる。到来メールボックス・
レジスタ・セット160のレジスタ4は、レジスタ・キュー26(図1〜2B)
のためのインポインタ87を含み、ホスト・マイクロプロセッサ20によって書
込可能であり、またアダプタ・プロセッサ50(またはファームウエア62)に
よって読取可能である。送出メールボックス・レジスタ・セット165のレジス
タ4は、リクエスト・キュー26のためのアウトポインタ88を含み、アダプタ
・プロセッサ50(またはファームウエア62)によって書込可能であり、また
ホスト・マイクロプロセッサ20によって読取可能である。
【0053】 到来メールボックス・レジスタ・セット160のレジスタ5は、レスポンス・
キュー27(図1)のアウトポインタを含み、ホスト・マイクロプロセッサ20
によって書込可能であり、またアダプタ・プロセッサ50(またはファームウエ
ア62)によって読取可能である。送出メールボックス・レジスタ・セット16
5のレジスタ5は、レスポンス・キュー27のインポインタを含み、アダプタ・
プロセッサ50(またはファームウエア62)によって書込可能であり、またホ
スト・マイクロプロセッサ20によって読取可能である。
【0054】 図4において、到来メールボックス・レジスタ・セット160のレジスタ0〜
3、6〜7は、ホスト・マイクロプロセッサ20からアダプタ・プロセッサ50
(またはファームウエア62)への命令情報を含んでいる。送出メールボックス
・レジスタ・セット165のレジスタ1〜3、6〜7は、アダプタ・ファームウ
エア62からホスト・マイクロプロセッサ20へのI/O状況情報を含むように
形成されている。
【0055】 一構成において、送出メールボックス・レジスタ・セット165のレジスタ1
〜3、6〜7は、レスポンス・キュー27(図1)中のSTATUS エントリ
ー140(図3C)の一つまたはそれ以上のハンドル、またはホスト・メモリ2
5のリクエスト・キュー26(図2A、図2B)中の首尾よく完了されたCOM
MAND エントリー100(図3A)またはEXTENDED COMMAN
Dエントリー120(図3B)のハンドルを含んでいてよい。一構成において、
送出メールボックス・レジスタ・セット165のレジスタ1〜3、6〜7中のハ
ンドルの順は、各IOCBが首尾よく完了されたときによって決定される。
【0056】 好ましい実施例において、送出メールボックス・レジスタ・セット165のレ
ジスタ0は、ユニーク・コードを含み、アダプタ・ファームウエア62によって
、ホスト・マイクロプロセッサに送られた割り込みに関する事象をホスト・マイ
クロプロセッサ20に通知する。一つの構成において、送出メールボックス・レ
ジスタ・セット165のメールボックス・レジスタ0が、どのタイプの情報が5
個の利用可能な送出メールボックス・レジスタ1〜3、6〜7にあることを指示
するためにリザーブされる。好ましい構成において、送出メールボックス・レジ
スタ・セット165のメールボックス0が、レスポンス・キュー27内のIOS
B(または、リクエスト・キュー26内の首尾よく完了されたIOSB)に対す
るハンドル、および、例えば16ビットもしくは32ビットのIOSB(または
IOCB)ハンドルの大きさを現在含んでいる送出メールボックス・レジスタ1
〜3、6〜7の数のホスト・マイクロプロセッサ20に通知する。
【0057】 例えば、一構成において、メールボックス0が番号「802x」または「80
3x」を含み、「803x」は、利用可能な送出メールボックス・レジスタ1〜
3、6〜7内の16ビットIOSBまたは首尾よく完了されたIOCBハンドル
の「x」番号があることを意味している。「802x」は利用可能な送出メール
ボックス・レジスタ1〜2、6〜7内の32ビットIOSBまたは首尾よく完了
されたIOCBハンドルの「x」番号があることを意味している。従って、送出
メールボックス・レジスタ・セット165のメールボックス0は5個の利用可能
な送出メールボックス・レジスタ1〜3および6〜7内の5個までの16ビット
のハンドルまたは二つまでの32ビットのハンドルを説明する情報を含んでいる
【0058】 (メールボックスおよびリクエスト・キューとレスポンス・キュー操作) リクエストおよびレスポンス・キュー26、27の使用と操作およびメールボ
ックス・レジスタ180〜187、190〜197を図1〜4を参照して説明す
る。ホスト・マイクロプロセッサ20が、一つまたはそれ以上のIOSB(図3
A、図3BのCOMMANDまたはEXTENDED COMMANDエントリ
・タイプ100、120)を次にリクエスト・キュー26の利用可能なエントリ
ーに負荷し(図2A、図2B)、リクエスト・キュー・インポインタ変数350
(図1)によって指示された第1利用可能エントリーで始動する。ホスト・マイ
クロプロセッサ20が、リクエスト・キュー・インポインタ変数350を、リク
エスト・キュー26にロード(負荷)された新しいエントリーの数だけ増加する
。増加されたリクエスト・キュー・インポインタ変数350が、リクエスト・キ
ュー26内で次の利用可能エントリーのアドレスになる。
【0059】 次にホスト・マイクロプロセッサ20が増加されたリクエスト・キュー・イン
ポインタ変数350の新しい値を、到来メールボックス・レジスタ・セット16
0(図4)のメールボックス・レジスタ4 184に書き込む。ホスト・アダプ
タ・ボード40(図1)のファームウエア62が、到来メールボックス・セット
160のメールボックス・レジスタ4をポールし、メールボックス・レジスタ4
内の値とRAM65に記憶されたリクエスト・キュー・インポインタ変数360
とを比較する。到来メールボックス・セット160のメールボックス・レジスタ
4内の値がRAM65に記憶された内部リクエスト・キュー・インポインタ変数
360と異なるときは、ホスト・マイクロプロセッサ20が一つまたはそれ以上
の新しいエントリーをリクエスト・キュー26に付加することをファームウエア
62が認識する。ファームウエア62がRAM65内に記憶されたリクエスト・
キュー・インポインタ変数360を、到来メールボックス・レジスタ・セット1
60のメールボックス・レジスタ4に記憶された新しい値に等しくなるように変
更する。
【0060】 ホスト・アダプタ・ファームウエア62がリクエスト・キュー26内の一つま
たはそれ以上のIOCBを処理する用意があるとき、ホスト・アダプタ・ファー
ムウエア62が、RAM65(図4)内に記憶されたリクエスト・キュー・アウ
トポインタ変数362によって設計されたエントリーで開始するリクエスト・キ
ュー26からIOCBを検索(および/または一時的にセーブ)する。次に、フ
ァームウエア62が、リクエスト・キュー・アウトポインタ変数362を、検索
されたIOCBの数だけ増加する。ファームウエア62が増加リクエスト・キュ
ー・アウトポインタ変数362を、送出メールボックス・レジスタ・セット16
5のメールボックス・レジスタ4 194に書き込む。次に、ホスト・マイクロ
プロセッサ20が、送出メールボックス・レジスタ・セット165のメールボッ
クス・レジスタ4を読み取り、リクエスト・キュー26のアウトポインタ88の
位置を決定する。
【0061】 ホスト・アダプタ45が、第2バス70にアクセスすることによって、そして
、周辺I/Oデバイス80〜86への、またこれからのリクエスト情報を書込ま
たは検索によってリクエスト・キュー26からIOCBを処理する。好ましい実
施例において、読取I/Oリクエスト中、ホスト・アダプタ45が検索データを
仕向けられたI/Oデバイス80〜86から、COMMAND エントリー(図
3A、3B)のデータ・セグメント・アドレス110、114によって設計され
たメモリ25(図1)内の位置に直接転送を始める。
【0062】 (I/O完了の報告) I/O命令完了情報が処理されるべく用意されたとき(送出メールボックス・
レジスタ・セット165またはレスポンス・キュー27内で)、また検索データ
が処理されるべく用意されたとき(メモリ25内で)、ホスト・アダプタ45が
ホスト・マイクロプロセッサ20に報告する。アダプタ45に対して完了I/O
リクエストを報告する三つの方法がある。すなわち、(1)首尾よく完了したI
OCBのハンドルを送出メールボックス・レジスタ1〜3、6〜7 191〜1
93、196〜197(図4)に配置すること;(2)STATUSエントリー
・タイプ140(図3C)を発生し、これをレスポンス・キュー27に転送、お
よび/または、STATUSエントリー140のハンドルを送出メールボックス
・レジスタ1〜3、6〜7 191〜193、196〜197内に配置すること
;(3)SUCCESSFUL STATUS エントリー・タイプ370、3
80を発生し、これらをレスポンス・キュー27(図1)に転送することによる
【0063】 以下に説明する三つの方法の各々は、多数I/O完了をホスト・マイクロプロ
セッサ20に、ホスト・マイクロプロセッサ20に対して単一の割り込みで、ま
たはハンドラ32(図1)に対して割り込みで報告することが可能である。単一
割り込みでホスト・マイクロプロセッサ20に対して多数の完了I/Oリクエス
トを報告する方法は、「高速ポスティング」と呼ばれる。高速ポスティングない
しポスティングは、STATUSまたはSUCCESSFUL STATUS
エントリー・タイプ140、370、380を発生および転送せずに、首尾よく
完了したIOCBの一つまたはそれ以上のハンドルを送出メールボックス・レジ
スタ1〜3、6〜7、191〜193、196〜197(図4)に配置すること
でもある。
【0064】 I/O完了をホスト・マイクロプロセッサ20に報告する第1方法は、アダプ
タ・ファームウエア62にとって、首尾よく完了したIOCBのハンドルを送出
メールボックス・レジスタ1〜3、6〜7、191〜193、196〜197(
図4)に配置することである。完了I/Oリクエストがどの読取操作にも含まれ
ておれば、ホスト・マイクロプロセッサ20は、I/Oデバイス80〜86から
検索されたデータを処理し、メモリ25内に記憶することができる。ホスト・マ
イクロプロセッサ20は、送出メールボックス・レジスタ・セット165のメー
ルボックス0を読取り、首尾よく完了したIOCBのハンドルと、例えば16ビ
ットまたは32ビットのIOCBハンドルのサイズを含む送出メールボックス・
レジスタ1〜3、6〜7の番号を決定することである。
【0065】 I/O完了をホスト・マイクロプロセッサ20に報告する第2方法は、アダプ
タ・ファームウエア62にとって、RAM65内でSTATUSエントリー・タ
イプ140(図3C)を発生し、STATUSエントリー・タイプ140を、ダ
イレクト・メモリ・アクセス(DMA)を介してレスポンス・キュー27に転送
することである。特に、ファームウエア62はSTATUSエントリー・タイプ
140を、レスポンス・キュー27(図1)内の一つのまたはそれ以上の利用可
能なエントリーに転送し、RAM65に記憶されたレスポンス・キュー・インポ
インタ変数364によって指定されたエントリーで開始することである。STA
TUSエントリー・タイプ140はファームウエア62をして不成功完了I/O
リクエストだけでなく、成功完了I/Oリクエストの報告も許可する。
【0066】 一つまたはそれ以上のSTATUSエントリー・タイプ140を転送した後、
ファームウエア62が、レスポンス・キュー27に転送されたSTATUSエン
トリー・タイプ140の数だけレスポンス・キュー・インポインタ変数364を
増加させる。次に、ファームエウア62が増加されたレスポンス・キュー・イン
ポインタ変数364の値を、ホスト・マイクロプロセッサ20で読み取るために
、送出メールボックス・レジスタ・セット165のメールボックス・レジスタ5
195に書き込む。一つの構成において、ファームウエア62がSTATUS
エントリー・タイプ140のハンドル144を、ホスト・マイクロプロセッサ2
0で読み取るために、利用可能な送出メールボックス・レジスタ1〜3、6〜7
、191〜193、196〜197(図4)も配置する。
【0067】 I/O完了をホスト・マイクロプロセッサ20に報告する第3方法は、アダプ
タ・ファームウエア62にとって、RAM65内でSUCCESSFUL ST
ATUS エントリー・タイプ370、380を発生し、これら370、380
を、DMAを介してレスポンス・キュー27(図1)に転送することである。上
述したように、各SUCCESSFUL STATUS エントリー・タイプ3
70、380(図6Aおよび6B)は、いくつかの首尾よく完了したI/Oリク
エストに対するハンドルを含んでいる。次に、ファームウエア62が、レスポン
ス・キュー27に転送されたSUCCESSFUL STATUS エントリー
・タイプ370、380の数だけレスポンス・キュー・インポインタ変数364
を増加させる。次に、ファームウエア62が、増加されたレスポンス・キュー・
インポインタ変数364の値を、ホスト・マイクロプロセッサ20で読み取るた
めに、送出メールボックス・レジスタ・セット165のメールボックス・レジス
タ5 195に書き込むことである。
【0068】 一つの構成において、首尾よく(成功)完了したIOCBのハンドルの、ST
ATUSまたはSUCCESSFULエントリー・タイプ140、370、38
0を発生する代わりに、送出メールボックス・レジスタ・セット165を介して
の報告、およびこれらエントリー・タイプ140、370、380をレスポンス
・キュー27への転送がより速くなる。一方で、送出メールボックス・レジスタ
1〜3、6〜7を介して報告された首尾よくI/Oリクエストの数が、利用可能
なレジスタ1〜3、6〜7の数を制限することになり、図4に示した構成では5
である。
【0069】 さらに、送出メールボックス・レジスタ1〜3、6〜7を介しての首尾よいI
OCBの報告はホスト・マイクロプロセッサ20に通知されず、そのI/Oリク
エストは成功しない。しかし、好ましい実施例において、I/Oリクエストを想
定するホスト・マイクロプロセッサ20および/またはソフトウエア・ドライバ
30は、ホスト・アダプタ45が所定時間周期内で首尾よいI/O完了に復帰し
なければ、成功しない。次に、ソフトウエア・ドライバ30がエラー回復プロシ
ージャを開始するか、またはI/Oリクエストを再送する。
【0070】 好ましい実施例において、ホスト・アダプタ45が、レスポンス・キュー27
か、または送出メールボックス・レジスタ1〜3、6〜7、191〜193、1
96〜197のいずれかを使用して、数(5を超えるか、またはこれに等しい)
と、完了I/Oリクエストの状況(成功/不成功)に依存して、完了I/Oリク
エストに報告する。
【0071】 (割り込み) ホスト・アダプタ45またはファームウエア62が、I/Oリクエストが完了
したホスト・マイクロプロセッサ20または割り込み・ハンドラ32に通知する
二つの方法がある。好ましい実施例において、ホスト・アダプタ45がハードウ
エア・割り込みを発生させるとともに、完了I/Oリクエストを報告することに
よってホスト・マイクロプロセッサ20に注意を喚起させる。別の方法として、
ホスト・マイクロプロセッサ20が、第1バス35に関連した状況レジスタ(図
示省略)内でビットをポールする。ホスト・マイクロプロセッサ20に対して割
り込みを発生する方法を次に説明する。
【0072】 一構成において、ホスト・マイクロプロセッサ20が割り込みを受信したとき
、ホスト・マイクロプロセッサ20が送出メールボックス・レジスタ・セット1
65のレジスタ0を読取り、アダプタ・ファームウエア62によって使用される
上述の三つの方法の一つを決定する。メールボックス・レジスタ0 190に記
憶が可能なユニーク・コードまたはシーケンスが、三つの上述方法の各一つを指
定するのに使用される。
【0073】 ファームウエア62が第1方法を使用すれば、送出メールボックス・レジスタ
・セット165(図4)のレジスタ0が、どれだけの成功(首尾よい)完了IO
CBハンドルが送出メールボックス・レジスタ・セット165のメールボックス
・レジスタ1〜3、6〜7にあるか、ホスト・マイクロプロセッサ20に通知す
る。それから、ホスト・マイクロプロセッサ20は、送出メールボックス・レジ
スタ・セット165のメールボックス・レジスタ1〜3、6〜7を読み取り、I
OCBが首尾よく完了されることを決定する。
【0074】 ファームウエア62が第2または第3方法を使用すれば、ホスト・マイクロプ
ロセッサ20が送出メールボックス・レジスタ・セット165(図4)のメール
ボックス・レジスタ5を読取り、レスポンス・キュー・インポインタを決定する
。ホスト・マイクロプロセッサ20が、送出メールボックス・レジスタ5で見つ
けた値を、メモリ25(図1)に記憶されたレスポンス・キュー・インポインタ
変数356に書き込む。次に、ホスト・マイクロプロセッサ20が、メモリ25
内に記憶されたレスポンス・キュー・アウトポインタ変数356で開始し、送出
メールボックス・レジスタ・セット165のメールボックス・レジスタ5内のレ
スポンス・キュー・インポインタ値まで、レスポンス・キュー27(図1)内の
IOSBエントリーを読み取る。ホスト・マイクロプロセッサ20が、レスポン
ス・キュー27内のIOSBを処理し、処理されたIOSBの数だけレスポンス
・キュー・アウトポインタ変数356を増加させ、増加したレスポンス・キュー
・アウトポインタ変数356の値を、到来メールボックス・レジスタ・セット1
60(図4)のメールボックス・レジスタ5 185に書き込む。
【0075】 (順応アルゴリズムの一実施例) 図4において、変数TOTAL_REMAIN 220, TOTAL_CO
MPLETE 225, DEV_1_COUNT 230, DEV_2_C
OUNT 231およびDEV_3_COUNT 232 等が決定され、ファ
ームウエア62によって更新される。DEV_1_COUNT 230, DE
V_2_COUNT 231およびDEV_3_COUNT 232 が、I/
Oデバイス1 80(図1)、I/Oデバイス2 81およびI/Oデバイス3
82のための変数をそれぞれカウントする。各I/Oデバイス80〜86のた
めの少なくとも一つの変数(図示省略)がある。例えば、15 I/Oデバイス
があれば、少なくとも15のカウント変数がある。
【0076】 TOTAL_REMAIN変数220が、I/Oデバイス80〜86によって
未だ処理されていない総I/Oリクエストの数をカウントする。TOTAL_C
OMPLETE変数225が、I/Oデバイス80〜86によって完了されてい
るが、ホスト・マイクロプロセッサ20に未だ報告されていない総I/Oリクエ
ストの数をカウントする。
【0077】 DEV_1_COUNT 変数230が、受信されているが、第1I/Oデバ
イス80によって完了されていない残りのI/Oリクエストの数をカウントする
。DEV_2_COUNT およびDEV_3_COUNT変数 231、23
2が、受信されたが、それぞれ第2および第3I/Oデバイス81、82によっ
て完了されていない残りのI/Oリクエストの数をカウントする。同様に、DE
V_n_COUNT 変数が、受信されているが、それぞれ4番から7番のI/
Oデバイス83〜86によって完了されていない残りのI/Oリクエストの数を
カウントする。
【0078】 図5はホスト・アダプタ・ボード40によって使用され、I/Oリクエスト完
了報告を組み合わせて、ホスト・マイクロプロセッサ20への割り込みの回数を
減じる方法の一実施例を示す。一構成において、図5の方法はRISCコードの
一部またはファームウエア62である。
【0079】 図5の方法の使用と操作を図1と4を参照して説明する。図5において、開始
/続行工程300において、ホスト・システム15(図1)のソフトウエア・ド
ライバ30が、アダプタ・プロセッサ50を初期化し、RISCコードまたはフ
ァームウエア62を負荷する。初期化後、アダプタ45がホスト・マイクロプロ
セッサ20からの到来I/Oリクエストを処理するように用意される。
【0080】 処理工程305において、ファームウエア62(図1)が、ホスト・マイクロ
プロセッサ20によってリクエスト・キュー26内に配備された全ての新しいI
/Oリクエストまたは命令(IOCB)のために一つだけTOTAL_REMA
IN変数220を増加(インクリメント)する。TOTAL_REMAINが、
残されているI/O命令の数のカウントを、I/Oデバイス80〜86にって処
理し続ける。ファームウエア62もまた、アダプタ45とI/Oデバイス80〜
86によって処理されたI/Oリクエストの数だけTOTAL_REMAIN変
数220を減少(デクリメント)する。
【0081】 処理工程310において、ファームウエア62が、I/Oデバイス80〜86
によって完了されているが、未だホスト・マイクロプロセッサ20に報告されて
いない全I/Oリクエストのために一つだけTOTAL_COMPLETE変数
225を増加させる。決定工程315において、ファームウエア62が、未報告
I/O完了(TOTAL_COMPLETE 225)の数が残りのI/Oリク
エスト(TOTAL_REMAIN 220)より大きいかまたはこれに等しい
かどうかを決定する。これは「ファースト・トリガ」と呼ばれる。なぜなら、T
OTAL_COMPLETE 225がTOTAL_REMAIN 220より
も大きいか、またはこれに等しければ、ファームウエア62が割り込みをホスト
・マイクロプロセッサ20に発生するとともに、処理工程340内の全ての完了
未報告I/Oリクエストを報告するからである。次に、ファームウエア62が処
理工程300に戻り、TOTAL_REMAIN 220およびTOTAL_C
OMPLETE 225がそれに応じて増加および減少を続行する。
【0082】 TOTAL_COMPLETE 225がTOTAL_REMAIN 220
よりも少なければ、ファームウエア62が、タイマー245(図4)が決定工程
320で始動するかどうかを決定する。タイマー245が始動すれば、ファーム
ウエア62が、タイマー245が決定工程325内で終了したかどうかを決定す
る。これは「第2トリガ」と呼ばれる。なぜなら、タイマー245が終了すると
、ファームウエア62が割り込みをホスト・マイクロプロセッサ20に発生し、
処理工程340で全I/Oデバイス80〜86のために全ての完了された、しか
し未報告のI/Oリクエストを報告するからである。ファームウエア62は、ま
たTOTAL_COMPLETE変数225を0にクリアする。次に、ファーム
ウエア62が処理工程300に戻り、これに応じてTOTAL_REMAIN
220とTOTAL_COMPLETE 225の増加と減少を続行する。タイ
マー245が終了していなければ、次に、ファームウエア62が処理工程300
に戻り、これに応じてTOTAL_REMAINとTOTAL_COMPLET
Eの増加と減少を続行する。
【0083】 決定工程330において、タイマー245がスタートしていなければ、ファー
ムウェア62が、残された(未完了の)I/Oデバイス、または任意の個々のI
/Oデバイス80〜86で処理されるべく残された命令の数が1から0に減少す
るかどうかを決める。特にファームウエア62が、変数DEV_1COUNT
230, DEV_2_COUNT 231 等のいずれかが1から0の過渡期
にあるかどうかを決定する。DEV_n_COUNT がI/Oデバイス80〜
86の一つのためにゼロに等しいとき、そのI/Oデバイス80〜86は、処理
するさらなる命令がない。変数DEV_1_COUNT 230, DEV_2
_COUNT 231等の一つが1から0への過渡期にあれば、ファームウエア
62が処理工程335でタイマー245をスタートさせる。次に、ファームウエ
ア62が処理工程300に戻り、これに応じて、TOTAL_REMAIN 2
20およびTOTAL_COMPLETE 225の増加と減少を続行する。
【0084】 変数DEV_1_COUNT 230, DEV_2_COUNT 231等
のどれも1から0への過渡期になければ、次にファームウエア62が処理工程3
00に戻り、これに応じて、TOTAL_REMAIN 220およびTOTA
L_COMPLETE 225の増加と減少を続行する。
【0085】 好ましい実施例において、タイマー245は、I/Oデバイス80〜86が休
止状態にあり、また延長周期の間、処理(例えば、DEV_1_COUNT=0
)されるI/O命令がなければ、スタートされない。タイマー245は、I/O
デバイス80〜86で処理されるべく残されたI/O命令の数が1から0への過
渡期(例えば、DEV_1_COUNT が1から0に変化するとき)にあれば
、始動する。
【0086】 (他の比率が使用できる) 図5に関する上述の方法において、全残りのI/Oリクエストの少なくとも半
分が完了されたとき(TOTAL_COMPLETE 225がTOTAL_R
EMAIN 220より大きいかまたはこれに等しいとき)、アダプタ45とフ
ァームウエア62が、全て完了されているが、未報告I/Oリクエストを報告し
、ホスト・マイクロプロセッサ20に割り込みする。これが、アダプタ45とI
/Oデバイス80〜86がなおも処理すべきI/Oリクエストの相当数(全I/
Oリクエストの半分)を有していることが確信され、一方ホスト・マイクロプロ
セッサ20が報告I/O(全I/Oリクエストの半分)を処理する。
【0087】 他の実施例において、アダプタ45が未報告I/O完了(TOTAL_COM
PLETE 225)の数と、残りのI/Oリクエスト(TOTAL_REMA
IN 220)の数の異なる比率を使用して、ホスト・マイクロプロセッサ20
に対する割り込みをトリガするとともに、全完了されているが未報告のI/Oリ
クエストを報告する。例えば、一実施例において、アダプタ45はTOTAL_
REMAIN 220に対するTOTAL_COMPLETE 225の3/2
の比率を使用する。TOTAL_COMPLETE 225がTOTAL_RE
MAIN 220よりも少なくとも3から2だけ数が多いとき、アダプタ45が
ホスト・マイクロプロセッサ20を割り込みし、全て完了されているが未報告の
I/Oリクエストをホスト・システム15に報告する。他の比率、2対1、3対
1、4対1、4対3、1対2、1対3、1対4、2対3、3対4も本発明により
実行することができる。
【0088】 TOTAL_COMPLETE 225対TOTAL_REMAIN 220
の特定比率が、ホスト・マイクロプロセッサ20のI/Oリクエスト処理量(高
い処理量または低い処理量のいずれか)、アクセスのタイプ(シーケンス・アク
セスまたはランダム・アクセスのいずれか)、システム10の構成または要素の
タイプ、I/Oデバイス80〜86の数、およびI/Oリクエストのタイプのよ
うな種々の要素に依存して製造者またはエンドユーザによって調節することがで
きる。
【0089】 (I/Oデバイスはなおもリクエストを受信でき、タイマーは再始動しない) タイマー245が始動された後、一つまたはそれ以上の新しいI/Oリクエス
トが、タイマー245を始動せしめる特定I/Oデバイス80〜86によってな
おも受信され、処理される。例えば、I/Oデバイス1 80のために処理され
るように残された残りのI/Oリクエストの数が1から0への過渡期になれば(
DEV_1_COUNT 230 が1から0にデクリメント)、ファームウエ
ア62がこの1から0への過渡期を認識し、図5の処理工程335に示したよう
に、タイマー245を始動(I/Oデバイス1 80が1から0の過渡期を作る
第1I/Oデバイス80〜86であれば)する。I/Oデバイス1 80が新し
いI/Oリクエストを受信すれば、この新しいI/Oリクエストを処理すること
になる。一度、I/Oデバイス1 80が新しいI/Oリクエストを完了すると
、別の1から0への過渡期がDEV_1_COUNT 230 によって形成さ
れるが、タイマー245は再び始動しない。
【0090】 同様にして、別のI/Oデバイス81〜86が全てのそのI/Oリクエストの
処理を終了し、例えば、DEV_2_COUNT 231 が1から0の過渡期
を形成すれば、タイマー245は再び始動しない。全てのそのI/Oリクエスト
を終了する第1I/Oデバイス80〜86が、一般的に、ホスト・システム15
に報告されるべきその完了I/OリクエストのためにI/Oデバイス80〜86
を最も長く待機することになる。一度、タイマー245が始動すると、時間経過
するか、または第1トリガ(TOTAL_COMPLETE 225がTOTA
L_REMAIN 220より大きいか、またはこれと同じである)が、アダプ
タ45をしてホスト・マイクロプロセッサ20を割り込みせしめるとともに、全
ての完了されているが、未報告I/Oリクエストを報告するまでリセット(クリ
ア)されない。
【0091】 一実施例において、全てのI/Oデバイス80〜86のために処理されるよう
に残されたI/Oリクエストの数が1から0への過渡期を形成しておらず、また
第1トリガ(TOTAL_COMPLETE 225 がTOTAL_REMA
IN 220より大きいか等しければ)が、アダプタ45をしてホスト・マイク
ロプロセッサ20を割り込みせしめるとともにI/O完了を報告することを続行
すれば、タイマー245が延長された時間周期で始動されないことが可能である
。換言すれば、ファームウエア62は、延長時間周期で図5の処理工程335を
実行しない。処理量が高く(I/Oリクエストの大きい数)、また各I/Oデバ
イス80〜86がホスト・マイクロプロセッサ20によって頻繁に利用されると
き、その状況は一般的に発生する。
【0092】 (タイマーの持続期間) タイマー245の持続時間ないし遅延周期は、コンピュータ・システム10、
特にI/Oデバイス80〜86の構成および要素によって変わる。タイマー24
5の持続時間は、I/Oデバイス80〜86の一つのレスポンス時間、全てのI
/Oデバイス80〜86の中から最も長いレスポンス、しばしば使用されるI/
Oデバイス80〜86のレスポンス時間、またはI/Oデバイス80〜86の全
てのレスポンス時間の平均よって設定することができる。他の要素はタイマー2
45の持続時間の設定を考慮することができる。
【0093】 一実施例において、タイマー245の持続時間は、約5マイクロ秒と約8ミリ
秒の間の値に設定される。別の実施例において、タイマー245の持続時間は約
25マイクロ秒と約1000マイクロ秒の間の値に設定される。別の実施例にお
いて、タイマー245の持続時間は、約600マイクロ秒と約1000マイクロ
秒の間の値に設定される。
【0094】 好ましい実施例において、タイマー245の持続時間は約800マイクロ秒の
値に設定される。これはI/Oデバイス80〜86のための一般的なレスポンス
時間が約50マイクロ秒だからである。タイマー245の持続時間が短かすぎれ
ば、一つのI/Oデバイス80〜86がゼロI/Oリクエストに到達した直後に
、別のI/Oデバイス80〜86がゼロI/Oリクエストに到達した直後に別の
割り込みに追従して、アダプタ・ファームウエア62がタイマー245をリセッ
トし、割り込みをホスト・マイクロプロセッサ20に発生する。タイマー245
の持続時間が短くなればなるほど、I/O完了が一つの割り込み当りのホスト・
マイクロプロセッサ20への報告がますます少なくなる。短い時間周期でホスト
・マイクロプロセッサ20に反復して割り込みすることはホスト・アダプタ45
にとって能率が悪い。
【0095】 特に、第1I/Oデバイス80〜86がそのI/Oリクエストのセットを完了
した後、所定時間周期でI/O完了の報告を遅延することによって、一つまたは
それ以上の付加的なI/Oデバイス80〜86も所定時間周期中にI/Oリクエ
ストのそのセットを完了することになる。二つまたはそれ以上のセットのI/O
完了を単一の割り込みと一緒に報告することは、二つまたはそれ以上のセットの
完了を二つのまたはそれ以上の別々の割り込みと別々に報告するよりも有利であ
る。ホスト・マイクロプロセッサ20は、二つまたはそれ以上の割り込みの代わ
りにホスト・アダプタ45から一つの割り込みをサービスしなければならないだ
けである。
【0096】 例えば、I/Oデバイス1 80が、50マイクロ秒でそのI/Oリクエスト
を全て完了する。ファームウエア62がタイマー245を開始させる。次に、I
/Oデバイス4 83がそのI/Oリクエストを50マイクロ秒後に完了し、ま
た次にI/Oデバイス2 81がそのI/Oリクエストを50マイクロ秒後に完
了する。タイマー245が75マイクロ秒の持続時間を有しておれば、アダプタ
45は一つの割り込みをホスト・マイクロプロセッサ20に発生し、I/Oデバ
イス1 80とI/Oデバイス4 83の全てのI/O完了を報告する。アダプ
タ45が第2割り込みを発生し、I/Oデバイス2 81のI/O完了を報告す
る。タイマー245の持続時間が、例えば125マイクロ秒と長ければ、アダプ
タ45は単一の割り込みをホスト・マイクロプロセッサ20に発生し、I/Oデ
バイス1 80、I/Oデバイス4 83およびI/Oデバイス2 81のI/
O完了を報告する。
【0097】 他方において、タイマー245の持続時間が長すぎれば、新しいI/Oリクエ
ストが送られる前に、ホスト・マイクロプロセッサ20がI/Oデバイス80〜
86からのI/O完了を待機し、一つまたはそれ以上のI/Oデバイス80〜8
6が遊び、一方でホスト・マイクロプロセッサ20からのより多くのI/Oリク
エストを待機する。従って、好ましい実施例において、タイマー245の持続時
間は、短い時間周期での多数の割り込みを回避するのに十分長く、また延長され
た遊び時間を回避するのに十分短い。
【0098】 一実施例において、タイマー245の持続時間は、I/Oデバイス80〜86
がタイマー245によってトリガされることに依存して変化する。頻繁に使用さ
れるI/Oデバイス80〜86は、比較的短いタイマー持続時間を有している。
あまり頻繁に使用されないI/Oデバイスは比較的長いタイマー持続時間を有し
ている。別の実施例において、タイマー245の持続時間は、一つまたはそれ以
上のI/Oデバイス80〜86に対してゼロである。この実施例において、ゼロ
に等しいタイマー持続時間を有しているI/Oデバイス80〜86は、全てのそ
のI/Oリクエストを終了し、ファームウエア62が直ちに割り込みをホスト・
マイクロプロセッサ20に発生し、全て完了した、しかし未報告I/Oリクエス
トを報告する。
【0099】 別の実施例において、図5を参照して上述したようにゼロの代わりに、いずれ
のI/Oデバイス80〜86のためのI/Oリクエストの数も所定数、例えば3
以下に落ちているとき、タイマー245が始動する。
【0100】 タイマー245の持続時間はホスト・マイクロプロセッサ20によってセット
できる。一実施例において、エンドユーザはタイマー245の持続時間をセット
することができる。別の実施例において、システム・デザイナー(ホスト・コン
ピュータ製造者またはアダプタ製造者)またはプログラマーがタイマー245の
持続時間を設定することができる。
【0101】 (閾値トリガーの利点) 上述した方法には適応性がある:すなわち、ホスト・マイクロプロセッサ20
のI/Oリクエスト処理量に適応する。I/Oリクエスト処理量が高くなればな
るほど、割り込み当り毎秒のI/O完了報告(IOPS)の比率または数がます
ます多くなる。例えば、処理量が比較的低ければ、例えばほんの5対10のI/
Oリクエストが一度に発生されれば、ほんの3対6の完了I/Oリクエストが、
一つの割り込みでホスト・マイクロプロセッサ20に報告される。処理量が比較
的高ければ、例えば30対60のI/Oリクエストが一度に発生されれば、15
対30の完了I/Oリクエストが、一つの割り込みでホスト・マイクロプロセッ
サ20に報告される。従って、ホスト・マイクロプロセッサ20が忙しくなれば
なるほど、各割り込み当りのアダプタ45によって戻されるI/O完了報告がま
すます多くなる。これは重要な利点である。なぜなら、ホスト・マイクロプロセ
ッサ20が忙しくなればなるほど、ホスト・マイクロプロセッサ20が、割り込
みおよび割り込みに関連するオーバーヘッドをサービスする時間とリソースに余
裕がなくなるからである。
【0102】 (タイマー・トリガの利点) タイマー245にも重要な利点がある。タイマー245は、他のI/Oデバイ
ス80〜86がなおも稼働中に、そのI/Oリクエスト全てが完了された特定I
/Oデバイス80〜86の遊び時間(待ち時間)を短縮する。
【0103】 例えば、I/Oデバイス1 80が、そのI/Oリクエスト(DEV_1_C
OUNT=0) の全てを終了し、一方で他のI/Oデバイス81〜86がなお
も完了させるべきいくつかのI/Oリクエストを有している。TOTAL_RE
MAIN 220が実質的にTOTAL_COMPLETE 225よりも大き
ければ、アダプタ45は、相当の時間の間、完了されているが未報告のI/Oリ
クエストを報告しない。一つまたはそれ以上の前回I/Oリクエストが完了され
、報告されるまで、新しいリクエストを一つまたはそれ以上のI/Oデバイス8
0〜86、例えば、I/Oデバイス1 80に送らないホスト・マイクロプロセ
ッサ20によって稼働する、あるソフトウエア・アプリケーションまたはサブル
ーチンがある。これが遅延を惹起し、またシステムの性能を制限する。これはI
/Oデバイス1 80に対して比能率であり、延長された時間周期中で遊びが残
り、一方で他のI/Oデバイス81〜86が処理されるべきいくつかのI/Oリ
クエストを有するとともに、実際にそれらのI/Oリクエストを処理する。
【0104】 タイマー245は、このタイマー245の期間終了後、ファームウエア62を
してI/Oデバイスの遊び時間を減らそうとし、ホスト・マイクロプロセッサ2
0に対して割り込みを発生せしめるとともに、全て完了しているが、未報告のI
/Oリクエストをホスト・システム15に報告する。これが第1トリガ(TOT
AL_REMAINとTOTAL_COMPLETEとを比較した総I/O完了
閾値)をバイパスする。ホスト・マイクロプロセッサ20が完了I/Oリクエス
トを処理した後、ホスト・マイクロプロセッサ20が、処理されるべき遊びI/
Oデバイス1 80のための一つまたはそれ以上の新しいI/Oリクエストを送
ることができる。従って、タイマー245(第2トリガ)がI/O完了閾値カウ
ンタ、TOTAL_COMPLETE(第1トリガ)を、いずれ任意の時間でそ
のI/Oリクエストの全てを終了する第1I/Oデバイス80〜86の遊び時間
を短縮することによって補完する。
【0105】 (各トリガのみ、あるいは他のトリガを備えた) 図5に示した実施例において、割り込みをホスト・マイクロプロセッサ20に
発生するための二つのトリガ(工程(ブロック)315と工程320〜335)
がある。別の方法として、本発明の他の実施例は二つのトリガの一つのみを使用
する。二つのトリガか、またはそのバリエーションのいずれかが、他と独立して
使用され、ホスト・マイクロプロセッサ20をいつ割り込みするべきかを決定す
る。例えば、一実施例において、アダプタ45が工程300〜315および34
0に示した方法を実行するだけである。本実施例において、決定工程315でT
OTAL_COMPLETE 225がTOTAL_REMAIN 220より
も大きくないか、またはこれに等しければ、ファームウエア62が、始動/続行
工程300に戻る。
【0106】 本発明の他の実施例が二つのトリガの一つのみを使用しているので、より優れ
た性能が、上述した二つのトリガを組み合わせて使用したときに達成される。付
加的なトリガが、上述した一つの、または両方のトリガと組み合わせて使用する
ことができる。例えば、別のトリガが変数REMAIN 220を使用せずに、
ホスト・マイクロプロセッサ20の処理量を決定することができる。二つまたは
それ以上のI/Oデバイス80〜86のためのI/Oリクエストの数が、ゼロで
はないある所定数以下に落ちると、別のトリガが割り込みをホスト・マイクロプ
ロセッサ20に発生する。
【0107】 (適応アルゴリズムの他の実施例) 図7は図1のホスト・アダプタ・ボード40によって使用される方法の別の実
施例を示し、I/Oリクエスト完了報告と組み合わせてホスト・マイクロプロセ
ッサ20への割り込みの数を減じる。一つの構成において、図7の方法はRIS
Cコードまたはファームウエア62の一部である。
【0108】 図7の方法の使用と操作を図1、4および5を参照して説明する。図7におい
て、始動/続行工程400に示した操作、処理工程405および処理工程410
は、図5の始動/続行工程300に示した操作、処理工程305および処理工程
310を参照して示した操作と実質的に同じである。しかし、図7において、T
OTAL_REMAIN変数220は、処理工程405内で最初に(リクエスト
・キュー26内で受信された各新しいI/Oリクエストのために)増加される。
TOTAL_REMAIN変数220が増加された後、変数TOTAL_REM
AIN変数220が(アダプタ45によって完了された各I/Oリクエストのた
めに)減少され、また、変数TOTAL_COMPLETEが、処理工程410
に示したように(アダプタ45によって各々完了されているが、未報告のI/O
リクエストのために)増加される。
【0109】 決定工程415において、ファームウエア62が、いずれの個々のI/Oデバ
イス80〜86のための残りのI/Oリクエストの数が1から0に減じられた(
すなわち、いずれのDEV_n_COUNT 変数230〜232が1から0の
過渡期を形成している)かどうかを決定する。いずれの個々のI/Oデバイス8
0〜86のための残りのI/Oリクエストの数が1から0に減少したときに、処
理工程420に示したようにファームウェア62がプロセッサ50内の始動タイ
マー・フラグを設定する。これに応答して、プロセッサ50がタイマー245(
図4)を始動する。次に、ファームウエア62が、決定工程425に示したよう
に、TOTAL_COMPLETE変数225をTOTAL_REMAIN変数
220と比較する。決定工程415において、いずれの個々のI/Oデバイス8
0〜86のための残りのI/Oリクエストの数が1から0に減少しなければ、フ
ァームウエア62が、決定工程425に示したように、TOTAL_COMPL
ETE変数225をTOTAL_REMAIN変数220と比較する。
【0110】 決定工程425において、TOTAL_COMPLETE変数225がTOT
AL_REMAIN変数220より大きいか、またはこれと同じであれば、ファ
ームウエア62が割り込みをホスト・マイクロプロセッサ20に発生させるとと
もに、処理工程430に示したように、全て完了しているが、未報告のI/Oリ
クエストを報告する。処理工程430において、ファームウエア62がTOTA
L_COMPLETE変数225も0にクリアし、また始動タイマー・フラグを
クリアする。決定工程435において、ファームウエア62が、タイマー245
が始動したかどうかを決定する。決定工程425においてTOTAL_COMP
LETE変数225がTOTAL_REMAIN変数220より小さければ、フ
ァームウエア62が直接決定工程435に進行し、処理工程430をバイパスし
てタイマー245が始動したかどうかを決定する。
【0111】 決定工程435において、タイマー245が始動していなければ、ファームウ
エア62が、処理工程400〜410に示したように、TOTAL_REMAI
N変数220の増加、減少を続行し、またTOTAL_COMPLETE変数2
25をこれに応じて増加する。タイマーが始動しておれば、ファームウエア62
が、タイマー245が決定工程440で時間が経過しているかどうかを決定する
。タイマー245が時間経過していなければ、ファームウエア62が処理工程4
00〜410に戻り、これに応じてTOTAL_REMAIN変数220の増加
と減少を、またTOTAL_COMPLETE変数225の増加を続行する。タ
イマー245が時間経過しておれば、ファームウエア62が、処理工程445に
示したように、割り込みをホスト・マイクロプロセッサ20に発生するとともに
、全て完了しているが、未報告のI/Oリクエストを報告する。処理工程445
において、ファームウエア62がTOTAL_COMPLETE変数225を0
にクリアし、また始動タイマー・フラグをクリアする。次に、ファームウエア6
2が処理工程400〜410に戻り、TOTAL_REMAIN変数220の増
大と減少を続行し、またこれに応じてTOTAL_COMPLETE変数225
を増加する。
【0112】 (デバイスによる閾値−図8) 図8は図1のホスト・アダプタ・ボード40によって使用される方法の別の実
施例を示し、I/Oリクエスト完了報告と組み合わせてホスト・マイクロプロセ
ッサ20の割り込みの数を減じる。図1〜7を参照して上述した実施例は、シー
ケンスI/Oアクセスを使用するホスト・コンピューティング・システム15に
理想的に適している。図8を参照して以下に説明する実施例は、ランダムI/O
アクセスを使用するホスト・コンピュータ・システム15に理想的に適している
。シーケンスI/OアクセスおよびランダムI/Oアクセスは、当業者によって
理解できる。
【0113】 図8に示した方法は、図8の決定工程485が図7の決定工程425とは異な
ること以外は図7に示した方法と実質的に同じである。特に、図8の決定工程4
85において、ファームウエア62(図1)は、未報告I/O完了(TOTAL
_REMAIN 220)の数が目下「稼働中」I/Oデバイス80〜86の数
に等しいかどうかを決定する。「稼働中」I/Oデバイス80〜86が、少なく
とも一つの未決(未完了)I/Oリクエストを有しているI/Oデバイス80〜
86である。I/Oデバイス80〜86がその最終I/Oリクエストを完了した
とき、I/Oデバイス80〜86が、本発明の実施例の目的のためにもはや稼働
中であると考えられず、また稼働I/Oデバイス80〜86の数が1だけ少なく
なる。他方で、アダプタ45が、前回不稼働I/Oデバイス80〜86のために
意図された新しい(未決)I/Oリクエストを受信し、稼働I/Oデバイス80
〜86の数が1だけ増える。従って、稼働I/Oデバイス80〜86の数は、一
つまたはそれ以上のI/Oデバイス80〜86がそれらの最終未決I/Oリクエ
ストを完了するか、または第1(未決)I/Oリクエストを受信するように増大
または減少する動的変数である。
【0114】 例えば、最初の三つのI/Oデバイス80〜82が、未決I/Oリクエストを
有している、すなわち、DEV_1_COUNT 230, DEV_2_CO
UNT 231およびDEV_3_COUNT 232 が0に等しくなければ
、これで目下稼働中I/Oデバイス80〜82の数が3である。最初の三つのI
/Oデバイス80〜82が本実施例の目的で稼働あるが、いずれの番号ないし順
のI/Oデバイス80〜86も任意の時間で稼働される。図8の決定工程485
において、ホスト・プロセッサ20に対して割り込みをトリガする「閾」値(ま
た全て完了されたI/Oリクエストを報告)が目下3である。TOTAL_CO
MPLETE 225が1に等しければ、TOTAL_COMPLETE 22
5は、3である閾値(目下稼働中のI/Oデバイス80〜82の数)に未だ等し
くない。
【0115】 割り込みをトリガする閾値は、図8の工程485に示したように、目下稼働中
のI/Oデバイス80〜86の数に依存して増加または減少する。稼働中のI/
Oのデバイス80〜82がその割り当てられたI/Oリクエストを完成すると、
TOTAL_COMPLETE 225が増加し、また閾値(目下稼働中のI/
Oデバイス80〜82の数)が減少する。前回不稼働のI/Oデバイス83〜8
6が稼働し、稼働I/Oデバイスの数および閾値が増加する。TOTAL_CO
MPLETE 225が、図8の方法が決定工程485に進行したとき、目下稼
働中のI/Oデバイスの数に等しければ、ファームウエア62が割り込みをホス
ト・マイクロプロセッサ20に発生して、処理工程490で全て完成しているが
未報告のI/Oリクエストを報告する。
【0116】 図8の方法において、タイマー操作、すなわち、第2トリガが図7を参照して
上述した方法のタイマー操作と実質的に同じである。
【0117】 図8の方法中の変化する閾値が、ホスト・アダプタ45とファームウエア62
に対してホスト・マイクロプロセッサ20の処理量に順応させることを許可する
。ホスト・マイクロプロセッサ20が、高いI/O処理量を有しており、またい
くつかのI/Oデバイス80〜86が稼働であれば、割り込みをトリガする閾値
も高くなる。高い閾値が毎秒の割り込み(IPS)の数を減らし、また割り込み
毎の報告I/O完成の数を増大する。ホストが低いI/O処理量を有しており、
またI/Oデバイス80〜86の低い数が稼働であれば、割り込みをトリガする
閾値も低くなる。
【0118】 従って、図5、7および8の方法、さらにホスト・マイクロプロセッサ20に
割り込みをトリガするこれらの閾値が、ホスト・マイクロプロセッサ20のI/
Oリクエスト処理量に順応する。ホスト・マイクロプロセッサ20が忙しくなれ
ばなるほど、I/O完成報告が、単一割り込みを伴うアダプタ45による帰還が
ますます多くなる。特に、I/Oリクエスト処理量が多くなればなるほど、1秒
当りのI/O完成報告(IOPS)対割り込みの比がますます大きくなる。
【0119】 例えば、図5または7を参照して上述した実施例において、処理量が比較的少
なければ、例えば5〜10のみのI/Oリクエストが一度に発生されれば、3〜
5のI/O完成報告が単一割り込みでホスト・マイクロプロセッサ20に報告さ
れる。処理量が比較的高ければ、例えば、50〜100のI/Oリクエストが一
度に発生されると、25〜50のI/O完成報告が単一割り込みでホスト・マイ
クロプロセッサ20に報告される。これが重要な利点を提供する。なぜなら、ホ
スト・マイクロプロセッサ20が忙しくなればなるほど、ホスト・マイクロプロ
セッサ20が、割り込みおよび割り込みに関連するオーバヘッドをサービスする
時間とリソースに余裕が少なくなるからである。
【0120】 従って、その順応性特徴のために、本発明はI/Oリクエストの処理量(高い
処理量または低い処理量いずれも)、アクセスのタイプ(シーケンス・アクセス
またはランダム・アクセスのいずれも)、システム構成のタイプ、I/Oデバイ
スの数、およびI/Oリクエストのタイプ、キューされたまたはキューされてい
ないI/Oリクエストのいずれにも関係なく実行できる。
【0121】 本発明の実施例およびアプリケーションを示すとともに説明したが、種々の修
正例も本発明の範囲を逸脱することなく可能なことは当業者にとって理解できる
。従って、これは添付の請求の範囲の範囲内で理解することができ、本発明は特
別に説明しなくても、実行することができる。
【図面の簡単な説明】
【図1】 本発明の一実施例に基づくホスト・コンピュータ・システム、多数の周辺I/
Oデバイスおよびホスト・アダプタ・ボードからなるコンピュータ・システムを
示す図
【図2】 FIG.2Aは、図1のホスト・システム内のフル・リクエスト・キューの一構
成を示す図、FIG.2Bは、図1のホスト・システム内の空きリクエスト・キ
ューの一構成を示す図
【図3】 FIG.3Aは、図1のコンピュータ・システムによって使用された命令エント
リー・タイプの一構成を示す図
【図4】 FIG.3Bは、図1のコンピュータ・システムによって使用された拡張命令エ
ントリー・タイプの一構成を示す図
【図5】 FIG.3Cは、図1のコンピュータ・システムによって使用される成功/不成
功状況エントリー・タイプの一構成を示す図
【図6】 FIG.4は、図1のホスト・アダプタ・ボード内に記憶された二つのセットの
メールボックス・レジスタと変数の一構成を示す図
【図7】 FIG.5は、図1のホスト・アダプタ・ボードを使用してI/Oリクエスト完
成報告を組み合わせ、ホスト・システムへの割り込みの数を減じる方法の一実施
例を示す図
【図8】 FIG.6Aは、図1のコンピュータ・システムによって使用された16ビット
・ハンドルを伴う成功状況エントリー・タイプの一構成を示す図
【図9】 FIG.6Bは、図1のコンピュータ・システムによって使用された32ビット
・ハンドルを伴う成功状況エントリー・タイプの一構成を示す図
【図10】 FIG.7は、図1のホスト・アダプタ・ボードを使用してI/Oリクエスト完
成報告を組み合わせ、ホスト・システムへの割り込みの数を減じる方法の他の実
施例を示す図
【図11】 FIG.8は、図1のホスト・アダプタ・ボードを使用してI/Oリクエスト完
成報告を組み合わせ、ホスト・システムへの割り込みの数を減じる方法の他の実
施例を示す図
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AG,AL,AM,AT,AU, AZ,BA,BB,BG,BR,BY,CA,CH,C N,CR,CU,CZ,DE,DK,DM,DZ,EE ,ES,FI,GB,GD,GE,GH,GM,HR, HU,ID,IL,IN,IS,JP,KE,KG,K P,KR,KZ,LC,LK,LR,LS,LT,LU ,LV,MA,MD,MG,MK,MN,MW,MX, NO,NZ,PL,PT,RO,RU,SD,SE,S G,SI,SK,SL,TJ,TM,TR,TT,TZ ,UA,UG,UZ,VN,YU,ZA,ZW (72)発明者 ロマニエック、リチャード、エル アメリカ合衆国 92708 カリフォルニア 州、ファウンテン バレー、カナリー ア ベニュー 8848 (72)発明者 ニューエン、トーン、ビー アメリカ合衆国 92869−5658 カリフォ ルニア州、オレンジ、サン ルイス、8127 イー Fターム(参考) 5B014 EB03 FA04 FB03 FB04 GA03 GA06 GA35 GA47 GA54 GC06 GE07 HC03 HC05 5B061 BA02 CC09 CC11

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】 ホスト・コンピュータのホスト・マイクロプロセッサが入力
    /出力(I/O)リクエストをI/Oコントローラに発送し、ホスト・コンピュ
    ータと複数の周辺I/Oデバイス間でデータの伝送を開始するコンピュータ・シ
    ステムにおいて、発送I/Oリクエストを処理する方法であって、 (a)発送I/Oリクエストを周辺I/Oデバイスとホスト・コンピュータの
    メモリ間でデータを伝送することによって処理する工程と、 (b)工程(a)と同時に、少なくとも未報告完了I/Oリクエストの数と未
    決I/Oリクエストの数に基づいて、ホスト・マイクロプロセッサにインターラ
    プトするかどうかを決定する工程と、 (c)工程(b)でホスト・マイクロプロセッサが割り込みされたことが決定
    されたときに、ホスト・マイクロプロセッサに割り込みし、またホスト・マイク
    ロプロセッサに未報告完了I/Oリクエストを報告する工程と、 (d)I/Oコントローラの現在の処理量に基づく工程(c)においてホスト
    ・マイクロプロセッサに報告された未報告完了I/Oリクエストの数を変更する
    工程と、を含む発送I/Oリクエストを処理する方法。
  2. 【請求項2】 工程(b)が未報告完了I/Oリクエストの数と未決I/O
    リクエストの数を比較することからなる請求項1に記載の方法。
  3. 【請求項3】 該方法は未報告完了I/Oリクエストの数が、未決I/Oリ
    クエストの数よりも大きいかまたは同数であるときにホスト・マイクロプロセッ
    サに割り込みする工程からなる請求項2に記載の方法。
  4. 【請求項4】 ホスト・マイクロプロセッサに割り込みするかどうかを決定
    する工程(b)が、さらに各周辺I/Oデバイスに対応する未決I/Oリクエス
    トの数にさらに基づいている請求項1に記載の方法。
  5. 【請求項5】 該方法は、周辺I/Oデバイスの一つに対する未決I/Oリ
    クエストの数がゼロに達した場合、ホスト・マイクロプロセッサに割り込みする
    工程からなる請求項4に記載の方法。
  6. 【請求項6】 該方法は、周辺I/Oデバイスの一つに対する未決I/Oリ
    クエストの数が予め定められたプログラム可能な数に達した場合、ホスト・マイ
    クロプロセッサに割り込みする工程からなる請求項4に記載の方法。
  7. 【請求項7】 各周辺I/Oデバイスが割り込みをホスト・マイクロプロセ
    ッサにトリガするそれぞれプログラム可能な数の未決リクエストを有している請
    求項6に記載の方法。
  8. 【請求項8】 ホスト・マイクロプロセッサに割り込みする工程は、周辺I
    /Oデバイスのための未決I/Oリクエストの数がゼロに到達するならば、ホス
    ト・マイクロプロセッサを割り込みする前に、所定時間待機する工程を含んでお
    り、選択された所定時間周期が、ホスト・マイクロプロセッサが割り込みされる
    前に、一つまたはそれ以上の他の周辺I/Oデバイスがそれぞれの未決I/Oリ
    クエストを完了するという可能性を実質的に増加させる請求項5に記載の方法。
  9. 【請求項9】 所定時間周期が約5マイクロ秒と約8ミリ秒の間である請求
    項8に記載の方法。
  10. 【請求項10】 所定時間周期が約25マイクロ秒と約1,000マイクロ
    秒の間である請求項8に記載の方法。
  11. 【請求項11】 それぞれの所定時間周期が各周辺I/Oデバイスのために
    選択される請求項8に記載の方法。
  12. 【請求項12】 所定時間周期がプログラム可能である請求項8に記載の方
    法。
  13. 【請求項13】 ホスト・コンピュータのホスト・マイクロプロセッサが入
    力/出力(I/O)リクエストをI/Oコントローラに発送し、ホスト・コンピ
    ュータと複数の周辺I/Oデバイス間でデータの伝送を開始し、またI/Oコン
    トローラが完了I/Oリクエストをレポートするために、ホスト・マイクロプロ
    セッサを割り込みするコンピュータ・システムにおいて、 少なくとも(i)未報告完了I/Oリクエストの数と、(ii)未決I/Oリ
    クエストの総数と、(iii)複数の各周辺I/Oデバイスに対応する未決I/
    Oリクエストの数とをモニターする工程と、 前記モニター工程に基づいて、ホスト・マイクロプロセッサを割り込みして完
    了I/Oリクエストを報告するかどうかを決定する工程と、 割り込み毎にホスト・マイクロプロセッサへ完了I/Oリクエストの可変数を
    報告する工程と、からなるI/Oコントローラ内で完了I/Oリクエストがホス
    ト・マイクロプロセッサに報告されるタイミングを制御するI/Oコントローラ
    内の方法。
  14. 【請求項14】 ホスト・コンピュータのホスト・マイクロプロセッサが入
    力/出力(I/O)リクエストをI/Oコントローラに発送し、ホスト・コンピ
    ュータと複数の周辺I/Oデバイス間でデータの伝送を開始し、またI/Oコン
    トローラがホスト・マイクロプロセッサを割り込みし完了I/Oリクエストを報
    告するコンピュータ・システムにおいて、 ホスト・マイクロプロセッサから残留I/Oリクエストの総数をカウントする
    ように構成された第1カウンタと、 I/Oデバイスによって完了された未報告I/Oリクエストの総数をカウント
    し、前記I/Oコントローラが第1カウンタ内の数と第2カウンタ内の数を比較
    し、第2カウンタ内の数が第1カウンタ内の数よりも大きいかまたはこれに等し
    いときに、前記I/Oコントローラがホスト・マイクロプロセッサを割り込みし
    、I/Oデバイスによって完了される全ての未報告I/Oリクエストを報告する
    ように構成された第2カウンタと、からなるI/Oコントローラ。
  15. 【請求項15】 各カウンタがI/Oデバイスの一つにつき残留I/Oリク
    エストの数をカウントするように構成された複数のI/Oデバイス・カウンタと
    、 複数のI/Oデバイス・カウンタの一つが1から0への過渡期にあるとき、タ
    イミングを開始するように形成された所定時間周期を伴うタイマーであって、タ
    イマーの所定時間周期が経過したときに、前記I/Oコントローラがホスト・マ
    イクロプロセッサを割り込みし、I/Oデバイスによって完了される全ての未報
    告I/Oリクエストを報告するタイマーと、をさらに含む請求項14に記載のI
    /Oコントローラ。
  16. 【請求項16】 全てのカウンタがI/Oコントローラに関連するランダム
    ・アクセス・メモリ内に記憶され、更新される変数である請求項14に記載のI
    /Oコントローラ。
  17. 【請求項17】 ホスト・コンピュータのホスト・マイクロプロセッサが入
    力/出力(I/O)リクエストをI/Oコントローラに発送し、ホスト・コンピ
    ュータと複数の周辺I/Oデバイス間でデータの伝送を開始し、またI/Oコン
    トローラがホスト・マイクロプロセッサを割り込みし完了I/Oリクエストをレ
    ポートするコンピュータ・システムにおいて、 少なくとも(i)未報告完了I/Oリクエストの数と、(ii)複数の未決I
    /Oリクエストの周辺I/Oデバイスの数とをモニターする工程と、 前記モニター工程に基づいて、完了I/Oリクエストに報告するために、ホス
    ト・マイクロプロセッサを割り込みするかどうかを決定する工程と、 ホスト・マイクロプロセッサを割り込みする工程と、 割り込み毎にホスト・マイクロプロセッサへの完了I/Oリクエストの可変数
    を報告する工程と、からなる完了I/Oリクエストがホスト・マイクロプロセッ
    サに報告されるタイミングを制御するI/Oコントローラ内の方法。
  18. 【請求項18】 完了I/Oリクエストに報告するために、ホスト・マイク
    ロプロセッサを割り込みするかどうかを決定する工程が、未報告完了I/Oリク
    エストの数と複数の未決I/Oリクエストの周辺I/Oリクエストの数とを比較
    する工程を含む請求項17に記載の方法。
  19. 【請求項19】 未報告完了I/Oリクエストの数が、複数の未決I/Oリ
    クエストの周辺I/Oデバイスの数に等しいときに、ホスト・マイクロプロセッ
    サを割り込みする工程を含む請求項18に記載の方法。
JP2000608268A 1999-03-31 2000-03-29 I/o完了報告を組み合わせるホスト・アダプタおよびそれを使用する方法 Pending JP2002540526A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/282,341 1999-03-31
US09/282,341 US6434630B1 (en) 1999-03-31 1999-03-31 Host adapter for combining I/O completion reports and method of using the same
PCT/US2000/008443 WO2000058843A1 (en) 1999-03-31 2000-03-29 A host adapter for combining i/o completion reports and method of using the same

Publications (1)

Publication Number Publication Date
JP2002540526A true JP2002540526A (ja) 2002-11-26

Family

ID=23081068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000608268A Pending JP2002540526A (ja) 1999-03-31 2000-03-29 I/o完了報告を組み合わせるホスト・アダプタおよびそれを使用する方法

Country Status (9)

Country Link
US (1) US6434630B1 (ja)
EP (1) EP1163595B1 (ja)
JP (1) JP2002540526A (ja)
KR (1) KR100677538B1 (ja)
AT (1) ATE373844T1 (ja)
AU (1) AU4327800A (ja)
CA (1) CA2367890C (ja)
DE (1) DE60036465T2 (ja)
WO (1) WO2000058843A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009015783A (ja) * 2007-07-09 2009-01-22 Toshiba Corp インタフェースコントローラ
JP7453167B2 (ja) 2020-03-11 2024-03-19 三星電子株式会社 構成可能なコマンド応答トリガーを有するストレージ装置及びそのトリガー方法

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564271B2 (en) * 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6792477B1 (en) * 2000-05-18 2004-09-14 Microsoft Corporation Discovering printers and shares
US6779054B2 (en) * 2001-10-05 2004-08-17 Intel Corporation Method and apparatus for operating a network controller
US20030086485A1 (en) * 2001-11-08 2003-05-08 John Lin Master to multi-slave asynchronous transmit fifo
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
JP4212811B2 (ja) * 2002-01-10 2009-01-21 富士通株式会社 情報処理システム、インタフェース装置、情報処理装置、情報記憶装置
US20030189945A1 (en) * 2002-04-05 2003-10-09 Connor Patrick L. Selective completion indication of controller events
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
FI20021867A (fi) * 2002-10-18 2004-04-19 Nokia Corp Menetelmä kortin toimintatilan muuttamiseksi, järjestelmä, kortti ja laite
WO2004046926A1 (ja) * 2002-11-21 2004-06-03 Fujitsu Limited イベント通知方法、デバイス及びプロセッサシステム
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US20050071688A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Hardware CPU utilization meter for a microprocessor
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7676611B2 (en) 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7853960B1 (en) * 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
JP2007012021A (ja) * 2005-06-01 2007-01-18 Sony Corp 情報処理装置および情報処理方法、並びにプログラム
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
US7743195B2 (en) * 2006-12-27 2010-06-22 Intel Corporation Interrupt mailbox in host memory
US7716397B2 (en) * 2007-07-03 2010-05-11 Lsi Corporation Methods and systems for interprocessor message exchange between devices using only write bus transactions
US8458730B2 (en) * 2008-02-05 2013-06-04 International Business Machines Corporation Multi-level driver configuration
CN102077181B (zh) * 2008-04-28 2014-07-02 惠普开发有限公司 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统
US20100005199A1 (en) * 2008-07-07 2010-01-07 Texas Instruments Incorporated Direct memory access (dma) data transfers with reduced overhead
US20110153891A1 (en) * 2008-08-20 2011-06-23 Akihiro Ebina Communication apparatus and communication control method
US7853726B2 (en) * 2008-10-06 2010-12-14 International Business Machines Corporation FCP command-data matching for write operations
FR2952937B1 (fr) 2009-11-20 2013-02-08 Chaire Europeenne De Chimie Now Pour Un Developpement Durable Nouvelles resines de type phenoplastes obtenues a partir de composes phenoliques et de durcisseurs macromoleculaire portant des fonctions aldehydes
US8719843B2 (en) * 2011-07-27 2014-05-06 Intel Corporation Virtualizable and forward-compatible hardware-software interface
US8856479B2 (en) * 2012-04-20 2014-10-07 International Business Machines Corporation Implementing storage adapter performance optimization with hardware operations completion coalescence
US9727494B1 (en) * 2012-10-11 2017-08-08 Qlogic, Corporation Method and system for communication between a computing device and a peripheral device
US9298652B2 (en) * 2013-03-15 2016-03-29 Microsoft Technology Licensing, Llc Moderated completion signaling
KR102649324B1 (ko) * 2016-05-19 2024-03-20 삼성전자주식회사 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법
US10776289B2 (en) 2018-09-21 2020-09-15 Microsoft Technology Licensing, Llc I/O completion polling for low latency storage device
US10740258B2 (en) * 2018-10-23 2020-08-11 Microsoft Technology Licensing, Llc Timer-based I/O completion polling for low latency storage device
US20230120600A1 (en) * 2021-10-20 2023-04-20 Western Digital Technologies, Inc. Data Storage Devices, Systems, and Related Methods for Grouping Commands of Doorbell Transactions from Host Devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0315941A (ja) * 1989-06-14 1991-01-24 Hitachi Ltd 半導体集積回路
JPH0844652A (ja) * 1994-07-26 1996-02-16 Hitachi Ltd 計算機システムおよび入出力命令の発行方法
JPH10105502A (ja) * 1996-09-26 1998-04-24 Nec Corp 周辺機器制御装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4268906A (en) 1978-12-22 1981-05-19 International Business Machines Corporation Data processor input/output controller
US5129064A (en) 1988-02-01 1992-07-07 International Business Machines Corporation System and method for simulating the I/O of a processing system
DE69328320T2 (de) 1992-01-09 2000-11-30 Cabletron Systems Inc Vorrichtung und Verfahren zur Datenübertragung zu und von einem Wirtrechnersystem
US5761427A (en) 1994-12-28 1998-06-02 Digital Equipment Corporation Method and apparatus for updating host memory in an adapter to minimize host CPU overhead in servicing an interrupt
US5689713A (en) 1995-03-31 1997-11-18 Sun Microsystems, Inc. Method and apparatus for interrupt communication in a packet-switched computer system
US5671365A (en) * 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
US5892969A (en) 1996-03-15 1999-04-06 Adaptec, Inc. Method for concurrently executing a configured string of concurrent I/O command blocks within a chain to perform a raid 5 I/O operation
US5881296A (en) 1996-10-02 1999-03-09 Intel Corporation Method for improved interrupt processing in a computer system
US6055603A (en) * 1997-09-18 2000-04-25 Emc Corporation Method and apparatus for performing pre-request operations in a cached disk array storage system
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6138176A (en) * 1997-11-14 2000-10-24 3Ware Disk array controller with automated processor which routes I/O data according to addresses and commands received from disk drive controllers
US6006340A (en) * 1998-03-27 1999-12-21 Phoenix Technologies Ltd. Communication interface between two finite state machines operating at different clock domains

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0315941A (ja) * 1989-06-14 1991-01-24 Hitachi Ltd 半導体集積回路
JPH0844652A (ja) * 1994-07-26 1996-02-16 Hitachi Ltd 計算機システムおよび入出力命令の発行方法
JPH10105502A (ja) * 1996-09-26 1998-04-24 Nec Corp 周辺機器制御装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009015783A (ja) * 2007-07-09 2009-01-22 Toshiba Corp インタフェースコントローラ
JP7453167B2 (ja) 2020-03-11 2024-03-19 三星電子株式会社 構成可能なコマンド応答トリガーを有するストレージ装置及びそのトリガー方法

Also Published As

Publication number Publication date
CA2367890C (en) 2007-05-29
DE60036465T2 (de) 2008-06-12
US6434630B1 (en) 2002-08-13
WO2000058843A1 (en) 2000-10-05
ATE373844T1 (de) 2007-10-15
DE60036465D1 (de) 2007-10-31
AU4327800A (en) 2000-10-16
KR100677538B1 (ko) 2007-02-01
EP1163595A1 (en) 2001-12-19
CA2367890A1 (en) 2000-10-05
EP1163595B1 (en) 2007-09-19
KR20010104732A (ko) 2001-11-26

Similar Documents

Publication Publication Date Title
JP2002540526A (ja) I/o完了報告を組み合わせるホスト・アダプタおよびそれを使用する方法
US6272499B1 (en) Linked lists of transfer descriptors scheduled at intervals
JP5159900B2 (ja) 予約デバイスのアクセス競合を低減するコンピュータ・プログラム、装置、及び方法
EP1856610B1 (en) Transmit completion event batching
EP1856623B1 (en) Including descriptor queue empty events in completion events
US6421760B1 (en) Disk array controller, and components thereof, for use with ATA disk drives
US7035948B1 (en) System and method for USB controllers
US8521934B1 (en) Multi-port context-based host controller
US20080091868A1 (en) Method and System for Delayed Completion Coalescing
US20050235072A1 (en) Data storage controller
US20020116565A1 (en) USB host controller and interface with batched data transfer
US8302109B2 (en) Synchronization optimized queuing system
US6477610B1 (en) Reordering responses on a data bus based on size of response
US8606992B2 (en) Dynamically switching command types to a mass storage drive
US20080155154A1 (en) Method and System for Coalescing Task Completions
JP2001524707A (ja) コントローラの機能性を高めるためのファームウェアの使用
US6842797B1 (en) USB adapter for burst mode communications
US7130932B1 (en) Method and apparatus for increasing the performance of communications between a host processor and a SATA or ATA device
EP2383659B1 (en) Queue depth management for communication between host and peripheral device
US5911152A (en) Computer system and method for storing data in a buffer which crosses page boundaries utilizing beginning and ending buffer pointers
US7415559B1 (en) Data processing systems and method for processing work items in such systems
WO2023093805A1 (zh) 存储控制方法、存储控制器、存储芯片、网卡、可读介质
WO2007074343A2 (en) Processing received data
JP2002500454A (ja) バッファ付きuartにおけるデータ損失の回避
JP4089506B2 (ja) ファイル共有システム及びサーバー並びにプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070117

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100507