JPH11175455A - コンピュータ・システムにおける通信方法及び装置 - Google Patents
コンピュータ・システムにおける通信方法及び装置Info
- Publication number
- JPH11175455A JPH11175455A JP10278576A JP27857698A JPH11175455A JP H11175455 A JPH11175455 A JP H11175455A JP 10278576 A JP10278576 A JP 10278576A JP 27857698 A JP27857698 A JP 27857698A JP H11175455 A JPH11175455 A JP H11175455A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- completion
- queue
- register
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40123—Interconnection of computers and peripherals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Systems (AREA)
Abstract
(57)【要約】
【課題】主メモリを通じて処理を行うホストから入出力
(I/O)を切り離すための方法及び装置を提供する。 【解決手段】PCIバス・マスタ118の分散型バース
ト・エンジン(DBE)206は、バッファ、主メモリ
112とI/Oデバイス208との間でパケットのリン
ク・リストを伝送するコントローラ、及びドアベル・レ
ジスタ204を含んでいる。リンク・リストは、パケッ
トの物理アドレスと仮想アドレスの間のリンクを示し、
パケットはヘッダにリンク・フィールドを含んで送信さ
れる。ドアベル・レジスタ204は、プロセッサ100
からのイベント発生を表す指示をDBE206に通知す
る。汎用性が高く、バスに独立し、主メモリとI/Oデ
バイス間の事実上あらゆる場所に配置できるDBEを用
いることにより、物理及び仮想アドレス間の変換が不要
となる。
(I/O)を切り離すための方法及び装置を提供する。 【解決手段】PCIバス・マスタ118の分散型バース
ト・エンジン(DBE)206は、バッファ、主メモリ
112とI/Oデバイス208との間でパケットのリン
ク・リストを伝送するコントローラ、及びドアベル・レ
ジスタ204を含んでいる。リンク・リストは、パケッ
トの物理アドレスと仮想アドレスの間のリンクを示し、
パケットはヘッダにリンク・フィールドを含んで送信さ
れる。ドアベル・レジスタ204は、プロセッサ100
からのイベント発生を表す指示をDBE206に通知す
る。汎用性が高く、バスに独立し、主メモリとI/Oデ
バイス間の事実上あらゆる場所に配置できるDBEを用
いることにより、物理及び仮想アドレス間の変換が不要
となる。
Description
【0001】本発明は、インテリジェント入出力デバイ
スと通信する方法、及び入出力デバイスとホストとの間
で自動的にデータ転送を行なう装置に関するものであ
る。
スと通信する方法、及び入出力デバイスとホストとの間
で自動的にデータ転送を行なう装置に関するものであ
る。
【0002】
【従来の技術】コンピュータ・システムが発展するに連
れて、その都度一層強力かつ先進の特徴が取り入れられ
ている。PCIバス、即ち、周辺要素相互接続バスのよ
うな多くの新しい進んだバス構造が開発され、コンピュ
ータ・システムの性能向上をもたらした。加えて、近年
のパーソナル・コンピュータが接続及びマルチメディア
指向システム(connected and multimedia oriented sys
tem)の色合いを強めるに連れて、ユニバーサル・シリア
ル・バス及びファイアウエア(Firewire)としても知られ
ているI.E.E.E.1394(電気電子学会)のよ
うな新たなシリアル通信バスが開発されている。しかし
ながら、これらの投入は、その度毎に、プロセッサに対
するデータの管理及び移動の要求を増々増大させること
になる。今日のオペレーティング・システムは、真のマ
ルチタスク・オペレーティング・システムであり、所与
のタイム・スライス間で多数のタスクのバランスを保つ
役割を担っている。プロセッサに対して入出力動作を処
理する要求が増大するに連れて、各タスクに適当なプロ
セッサ時間量を与えるようにタスクのバランスを適正に
保つことが一層難しくなる。更に、割り込みが問題を複
雑にする。何故なら、割り込みは予測不可能であり、通
常素早くそれに対応しなければならないからである。
れて、その都度一層強力かつ先進の特徴が取り入れられ
ている。PCIバス、即ち、周辺要素相互接続バスのよ
うな多くの新しい進んだバス構造が開発され、コンピュ
ータ・システムの性能向上をもたらした。加えて、近年
のパーソナル・コンピュータが接続及びマルチメディア
指向システム(connected and multimedia oriented sys
tem)の色合いを強めるに連れて、ユニバーサル・シリア
ル・バス及びファイアウエア(Firewire)としても知られ
ているI.E.E.E.1394(電気電子学会)のよ
うな新たなシリアル通信バスが開発されている。しかし
ながら、これらの投入は、その度毎に、プロセッサに対
するデータの管理及び移動の要求を増々増大させること
になる。今日のオペレーティング・システムは、真のマ
ルチタスク・オペレーティング・システムであり、所与
のタイム・スライス間で多数のタスクのバランスを保つ
役割を担っている。プロセッサに対して入出力動作を処
理する要求が増大するに連れて、各タスクに適当なプロ
セッサ時間量を与えるようにタスクのバランスを適正に
保つことが一層難しくなる。更に、割り込みが問題を複
雑にする。何故なら、割り込みは予測不可能であり、通
常素早くそれに対応しなければならないからである。
【0003】
【発明が解決しようとする課題】過去において、ある種
の処理をコプロセッサに割り振る(load off)ことによっ
て、プロセッサの負荷配分(loading)の問題を解決しよ
うとする試みがなされている。算術演算用コプロセッサ
(math co-processor)又はダイレクト・メモリ・アクセ
ス・コントローラ(DMA)が、よく知られている例で
ある。しかしながら、算術演算用コプロセッサは、企業
に固有のインターフェース及び命令によってプロセッサ
に強く結び付けられているので、汎用の入出力への応用
には適していない。DMAは、一旦そのコンフィギュレ
ーションが設定されたならば、データの移動には好適で
あるが、各データ・ブロック毎にコンフィギュレーショ
ンを必要とする。したがって、DMAコントローラは、
単一のデータ・ブロックを超えて独立して機能すること
ができない(そのコンフィギュレーションをデマンド・
モード用に設定するのでない場合)。更に、DMAコン
トローラは、ハードウエアのレベルで機能する。DMA
コントローラは、処理(service)対照のデータ型又はデ
バイス型についての理解(comprehension)を有していな
い。したがって、プロセッサが常に関与している。過去
において、DMAコントローラは、データをあるアドレ
スから他のアドレスに移動させるには格段に効率的であ
ったが、しかしながら、今日のプロセッサはそれよりも
はるかに効率的であるので、そのリード/ライト・サイ
クル・タイムはDMAコントローラのそれに近づきつつ
ある。したがって、DMAコントローラの利点は、時と
ともに減少している。更に、高性能DMAコントローラ
によって与えられるいずれの価値(gain)も、典型的に、
次世代プロセッサによって相殺されてしまっている。他
にも、インテリジェント入出力(I2O)処理を開発す
る試みがなされたが、これらは、Intel i960RPプロセッ
サのような埋め込み型プロセッサを対象としたものであ
った。これらの解決策はプロセッサの独立を達成する
が、それを行なうためのコストは非常に高い。したがっ
て、インテリジェント入出力処理に対する安価な解決策
が必要とされている。
の処理をコプロセッサに割り振る(load off)ことによっ
て、プロセッサの負荷配分(loading)の問題を解決しよ
うとする試みがなされている。算術演算用コプロセッサ
(math co-processor)又はダイレクト・メモリ・アクセ
ス・コントローラ(DMA)が、よく知られている例で
ある。しかしながら、算術演算用コプロセッサは、企業
に固有のインターフェース及び命令によってプロセッサ
に強く結び付けられているので、汎用の入出力への応用
には適していない。DMAは、一旦そのコンフィギュレ
ーションが設定されたならば、データの移動には好適で
あるが、各データ・ブロック毎にコンフィギュレーショ
ンを必要とする。したがって、DMAコントローラは、
単一のデータ・ブロックを超えて独立して機能すること
ができない(そのコンフィギュレーションをデマンド・
モード用に設定するのでない場合)。更に、DMAコン
トローラは、ハードウエアのレベルで機能する。DMA
コントローラは、処理(service)対照のデータ型又はデ
バイス型についての理解(comprehension)を有していな
い。したがって、プロセッサが常に関与している。過去
において、DMAコントローラは、データをあるアドレ
スから他のアドレスに移動させるには格段に効率的であ
ったが、しかしながら、今日のプロセッサはそれよりも
はるかに効率的であるので、そのリード/ライト・サイ
クル・タイムはDMAコントローラのそれに近づきつつ
ある。したがって、DMAコントローラの利点は、時と
ともに減少している。更に、高性能DMAコントローラ
によって与えられるいずれの価値(gain)も、典型的に、
次世代プロセッサによって相殺されてしまっている。他
にも、インテリジェント入出力(I2O)処理を開発す
る試みがなされたが、これらは、Intel i960RPプロセッ
サのような埋め込み型プロセッサを対象としたものであ
った。これらの解決策はプロセッサの独立を達成する
が、それを行なうためのコストは非常に高い。したがっ
て、インテリジェント入出力処理に対する安価な解決策
が必要とされている。
【0004】
【課題を解決するための手段】本発明は、ホスト・プロ
セッサ、メモリ、及び1つ以上の入出力(I/O)デバ
イスを含む。ホスト・プロセッサはパケットを発生し、
I/Oデバイスが後に使用するために、これらをメモリ
に提出する(submit)。パケットは、アドレス及びその他
の情報を収容するためのヘッダ部分と、データ又はメッ
セージを搬送するためのペイロード部分とを含む。パケ
ットは、リスト内において互いにリンクされ、パケット
・プールを形成する。パケット・ヘッダは、物理アドレ
ス・フィールド、次パケット物理アドレス・フィール
ド、仮想アドレス・フィールド、及び次パケット仮想ア
ドレス・フィールドを含む。したがって、一旦パケット
が読み込まれたなら、パケットの仮想及び物理アドレ
ス、ならびに次のパケットの仮想及び物理アドレスは知
られることになる。第1パケットが、次のパケットの物
理アドレス及び仮想アドレスを収容し、リンク・リスト
(linked list)を形成する。一旦リンクが確立されたな
ら、仮想アドレス上又は物理アドレス上のいずれかにお
いて、それ以上のアドレス変換を必要とすることなく、
パケット・プールを処理することができる。仮想及び物
理アドレス・フィールドは、ヘッダの予め規定された位
置にあるので、インデックス機能(indexing)を用いて必
要なアドレスを読み出すことができる。
セッサ、メモリ、及び1つ以上の入出力(I/O)デバ
イスを含む。ホスト・プロセッサはパケットを発生し、
I/Oデバイスが後に使用するために、これらをメモリ
に提出する(submit)。パケットは、アドレス及びその他
の情報を収容するためのヘッダ部分と、データ又はメッ
セージを搬送するためのペイロード部分とを含む。パケ
ットは、リスト内において互いにリンクされ、パケット
・プールを形成する。パケット・ヘッダは、物理アドレ
ス・フィールド、次パケット物理アドレス・フィール
ド、仮想アドレス・フィールド、及び次パケット仮想ア
ドレス・フィールドを含む。したがって、一旦パケット
が読み込まれたなら、パケットの仮想及び物理アドレ
ス、ならびに次のパケットの仮想及び物理アドレスは知
られることになる。第1パケットが、次のパケットの物
理アドレス及び仮想アドレスを収容し、リンク・リスト
(linked list)を形成する。一旦リンクが確立されたな
ら、仮想アドレス上又は物理アドレス上のいずれかにお
いて、それ以上のアドレス変換を必要とすることなく、
パケット・プールを処理することができる。仮想及び物
理アドレス・フィールドは、ヘッダの予め規定された位
置にあるので、インデックス機能(indexing)を用いて必
要なアドレスを読み出すことができる。
【0005】パケットの移動を容易に行なうために、分
散型バースト・エンジン(DBE:distributed burst
engine)を開示する。これは、1つ以上の入出力(I/
O)デバイスと主メモリとを結合するものである。分散
型バースト・エンジンは、単一のI/Oデバイスのバス
・インターフェース、ブリッジ・デバイス、又はメモリ
・コントローラのいずれにも位置することができる汎用
性のある構成物であり、これによって多数のI/Oデバ
イスに結合する。分散型バースト・エンジン・アーキテ
クチャは、キュー・スキームを定義し、プロセッサにパ
ケットの物理アドレスをデバイス・レジスタに書き込ま
せることなく、プロセッサが連続的にパケットをI/O
デバイスに整列(キュー:queue)することを可能にす
る。パケットが互いにリンクされているので、DBEは
常に、次のパケットがどこで得られるかについて知って
いる。これにより、DBEがプロセッサの介入を受けず
に、メモリからのデータをバーストすることを可能にす
る。
散型バースト・エンジン(DBE:distributed burst
engine)を開示する。これは、1つ以上の入出力(I/
O)デバイスと主メモリとを結合するものである。分散
型バースト・エンジンは、単一のI/Oデバイスのバス
・インターフェース、ブリッジ・デバイス、又はメモリ
・コントローラのいずれにも位置することができる汎用
性のある構成物であり、これによって多数のI/Oデバ
イスに結合する。分散型バースト・エンジン・アーキテ
クチャは、キュー・スキームを定義し、プロセッサにパ
ケットの物理アドレスをデバイス・レジスタに書き込ま
せることなく、プロセッサが連続的にパケットをI/O
デバイスに整列(キュー:queue)することを可能にす
る。パケットが互いにリンクされているので、DBEは
常に、次のパケットがどこで得られるかについて知って
いる。これにより、DBEがプロセッサの介入を受けず
に、メモリからのデータをバーストすることを可能にす
る。
【0006】DBEは、フロント・エンドとバック・エ
ンドとの間に、パケットを保持するための3つのデータ
・バッファ、即ち、先入れ先出しメモリ(FIFO)を
含む。それらは、要求バッファ、ポステッド・バッファ
(posted buffer)、及び完了バッファである。DBEの
フロント・エンドは、全体的に、メモリからパケットを
引き出し、要求バッファ及びポステッド・バッファを満
杯に保持しつつ、パケットをメモリに押し出して、完了
バッファを空の状態に保つ役割を担っている。DBEの
バック・エンドは、1つ以上のI/Oデバイスと双方向
処理を行い、パケットからのコマンド、制御、アドレ
ス、及びデータ情報をI/Oデバイスに提示する。リン
ク・リストにおける加入及び削除に対するパケットの移
動を容易に行なうために、DBE及びプロセッサによっ
て、ヘッド・レジスタ及びテール・レジスタが保持され
ている。また、DBEは、新たな要求パケットが要求キ
ューにリンクされたというような、イベントが発生した
ことの指示をプロセッサから受け取るためのドアベル・
レジスタ(doorbell register)も含む。例えば、プロセ
ッサが要求パケットを要求キューに整列した後、プロセ
ッサは要求ドアベルを鳴らす。パケットはリンクされて
おり、DBEは次のパケットの位置を保持しているの
で、DBEは、これに応答して、単にメモリからパケッ
トを引き出し、それをI/Oデバイスに提示する。コマ
ンド又はデータは、パケット内に収容されている。
ンドとの間に、パケットを保持するための3つのデータ
・バッファ、即ち、先入れ先出しメモリ(FIFO)を
含む。それらは、要求バッファ、ポステッド・バッファ
(posted buffer)、及び完了バッファである。DBEの
フロント・エンドは、全体的に、メモリからパケットを
引き出し、要求バッファ及びポステッド・バッファを満
杯に保持しつつ、パケットをメモリに押し出して、完了
バッファを空の状態に保つ役割を担っている。DBEの
バック・エンドは、1つ以上のI/Oデバイスと双方向
処理を行い、パケットからのコマンド、制御、アドレ
ス、及びデータ情報をI/Oデバイスに提示する。リン
ク・リストにおける加入及び削除に対するパケットの移
動を容易に行なうために、DBE及びプロセッサによっ
て、ヘッド・レジスタ及びテール・レジスタが保持され
ている。また、DBEは、新たな要求パケットが要求キ
ューにリンクされたというような、イベントが発生した
ことの指示をプロセッサから受け取るためのドアベル・
レジスタ(doorbell register)も含む。例えば、プロセ
ッサが要求パケットを要求キューに整列した後、プロセ
ッサは要求ドアベルを鳴らす。パケットはリンクされて
おり、DBEは次のパケットの位置を保持しているの
で、DBEは、これに応答して、単にメモリからパケッ
トを引き出し、それをI/Oデバイスに提示する。コマ
ンド又はデータは、パケット内に収容されている。
【0007】単一のI/Oデバイスが多数の機能を提供
することができるので、多数の要求チャネルが利用可能
となり、各要求チャネル毎に、要求バッファ、要求ドア
ベル、ならびに対応するヘッド・レジスタ及びテール・
レジスタを有する。パケットは、当該パケットに関する
情報を搬送するためのヘッダを含む。パケットは、非同
期、割り込み又はポール・パケット(polled packet)と
して指定することができる。非同期パケットは、当該パ
ケットが完了したことの通知を必要としない要求に有用
である。割り込みパケットは、完了の通知を必要とする
要求パケットに有用である。非請求(unsolicited)パ
ケットも、割り込みパケットとして指定される。割り込
みパケットが完了した場合、DBEによってプロセッサ
に割り込みを発生する。ポール・パケットは、完了の通
知を必要とするが、ハードウエア割り込みの形態ではな
い通知でよい要求に有用である。この形式のパケット
は、ハードウエアの割り込みに伴うオーバーヘッドを回
避するのに役立つ。パケット・ヘッダ内に、ポール・パ
ケットが完了したか否かを示すビットが1つある。した
がって、プロセッサは、連続的にこのアドレス上で読み
出し即ち「スピン(spin)」を行い、通知を受け取らなけ
ればならない。プロセッサがパケットをポールしている
間メモリ・バス帯域を占領することを防止するために、
パケット・ヘッダは、都合よくプロセッサのキャッシュ
ライン内に位置するように設計されている。したがっ
て、プロセッサは、DBEが前述のビットを変化させた
ときに、キャッシュ・ミスが発生するまで、そのキャッ
シュ上でポールする。
することができるので、多数の要求チャネルが利用可能
となり、各要求チャネル毎に、要求バッファ、要求ドア
ベル、ならびに対応するヘッド・レジスタ及びテール・
レジスタを有する。パケットは、当該パケットに関する
情報を搬送するためのヘッダを含む。パケットは、非同
期、割り込み又はポール・パケット(polled packet)と
して指定することができる。非同期パケットは、当該パ
ケットが完了したことの通知を必要としない要求に有用
である。割り込みパケットは、完了の通知を必要とする
要求パケットに有用である。非請求(unsolicited)パ
ケットも、割り込みパケットとして指定される。割り込
みパケットが完了した場合、DBEによってプロセッサ
に割り込みを発生する。ポール・パケットは、完了の通
知を必要とするが、ハードウエア割り込みの形態ではな
い通知でよい要求に有用である。この形式のパケット
は、ハードウエアの割り込みに伴うオーバーヘッドを回
避するのに役立つ。パケット・ヘッダ内に、ポール・パ
ケットが完了したか否かを示すビットが1つある。した
がって、プロセッサは、連続的にこのアドレス上で読み
出し即ち「スピン(spin)」を行い、通知を受け取らなけ
ればならない。プロセッサがパケットをポールしている
間メモリ・バス帯域を占領することを防止するために、
パケット・ヘッダは、都合よくプロセッサのキャッシュ
ライン内に位置するように設計されている。したがっ
て、プロセッサは、DBEが前述のビットを変化させた
ときに、キャッシュ・ミスが発生するまで、そのキャッ
シュ上でポールする。
【0008】
【発明の実施の形態】図1は、本発明の好適な実施形態
によるコンピュータ・システムCを示している。コンピ
ュータ・システムCは、インテル社のペンティウム・プ
ロ・プロセッサ(Intel Pentium Pro processor)等のよ
うな、1つ以上のプロセッサ100を含む。1つのプロ
セッサ100のみを示すが、本発明は単一プロセッサ・
コンピュータに限定される訳ではない。プロセッサ10
0は、ホスト・バス102に結合されている。ホスト・
バス102には、メモリ・サブシステム104、及びIn
tel 82454KX等のような、ホスト−PCI間のブリッジ
・デバイス106が結合されている。ホスト−PCIブ
リッジ・デバイスは、プロセッサ・サイクルをPCIサ
イクルに、及びその逆に変換し、PCIバス114に接
続する。メモリ・サブシステム104は、それ自体、 I
ntel 82453KX等のようなメモリ・コントローラ108、
Intel 82452KX等のようなメモリ・データ・パス・デバ
イス、及び主メモリ・アレイ112からなる。メモリ・
コントローラ108は、主メモリ112にアドレス信号
及び制御信号を供給する。主メモリ112は、複数のダ
イナミック・ランダム・アクセス・メモリ(DRAM)
デバイス(具体的には示さない)で構成されている。メ
モリ・データ・パス・デバイス110は、メモリ・コン
トローラ108と共に動作し、ホスト・バス102のデ
ータ部分と複数のDRAMとの間のバッファ動作(buffe
ring)を行なう。勿論、他の公知の様々なメモリ・サブ
システムを利用することも可能である。あまりよく知ら
れていないが、この中で考えられる代わりのメモリ・シ
ステムの1つが、Mark W. Welker(マークW.ウェルカ
ー), Tomas J. Bonola(トマスJ.ボノーラ)及びMic
hae l P. Moriarty(マイケルP.モリアティ)の"MULT
IMEDIA COMPUTER ARCHITECTURE'"(マルチメディア・コ
ンピュータ・アーキテクチャ)と題し、本願と同時に出
願された米国特許出願第 号に開示されてい
る。その内容は、この言及により本願にも含まれるもの
とする。
によるコンピュータ・システムCを示している。コンピ
ュータ・システムCは、インテル社のペンティウム・プ
ロ・プロセッサ(Intel Pentium Pro processor)等のよ
うな、1つ以上のプロセッサ100を含む。1つのプロ
セッサ100のみを示すが、本発明は単一プロセッサ・
コンピュータに限定される訳ではない。プロセッサ10
0は、ホスト・バス102に結合されている。ホスト・
バス102には、メモリ・サブシステム104、及びIn
tel 82454KX等のような、ホスト−PCI間のブリッジ
・デバイス106が結合されている。ホスト−PCIブ
リッジ・デバイスは、プロセッサ・サイクルをPCIサ
イクルに、及びその逆に変換し、PCIバス114に接
続する。メモリ・サブシステム104は、それ自体、 I
ntel 82453KX等のようなメモリ・コントローラ108、
Intel 82452KX等のようなメモリ・データ・パス・デバ
イス、及び主メモリ・アレイ112からなる。メモリ・
コントローラ108は、主メモリ112にアドレス信号
及び制御信号を供給する。主メモリ112は、複数のダ
イナミック・ランダム・アクセス・メモリ(DRAM)
デバイス(具体的には示さない)で構成されている。メ
モリ・データ・パス・デバイス110は、メモリ・コン
トローラ108と共に動作し、ホスト・バス102のデ
ータ部分と複数のDRAMとの間のバッファ動作(buffe
ring)を行なう。勿論、他の公知の様々なメモリ・サブ
システムを利用することも可能である。あまりよく知ら
れていないが、この中で考えられる代わりのメモリ・シ
ステムの1つが、Mark W. Welker(マークW.ウェルカ
ー), Tomas J. Bonola(トマスJ.ボノーラ)及びMic
hae l P. Moriarty(マイケルP.モリアティ)の"MULT
IMEDIA COMPUTER ARCHITECTURE'"(マルチメディア・コ
ンピュータ・アーキテクチャ)と題し、本願と同時に出
願された米国特許出願第 号に開示されてい
る。その内容は、この言及により本願にも含まれるもの
とする。
【0009】また、PCIバス114には、PCI/I
SA(業界標準アーキテクチャ)ブリッジ116、小型
コンピュータ・システム・インターフェース(SCS
I)コントローラ120のような1つ以上のPCIバス
・マスタ118、及びネットワーク・インターフェース
・コントローラ128も接続されている。更に、PCI
バス114には、ビデオ・システム122及び1つ以上
のPCIスロット124が接続されている。PCI/I
SAブリッジ116は、PCIサイクルをISAバス・
サイクルに、及びその逆に変換し、ISAバス126に
接続する。また、PCI/ISAブリッジ116は、強
化したダイレクト・メモリ・アクセス(DMA)コント
ローラ、割り込みコントローラ、タイマ/カウンタ、及
びノンマスカブル割り込みロジック(non-maskable i nt
errupt logic)ならびに種々の周辺デバイス用デコード
・ロジックを統合する。SCSIコントローラ120
は、ハード・ディスク144、テープ・ドライブ、及び
CD−ROMのようなSCSI周辺機器に接続可能であ
る。ビデオ・システム122は、ビデオ・コントロー
ラ、フレーム・バッファ、及びモニタ130に接続する
ための種々のロジックを含む。ネットワーク・インター
フェース・コントローラ128は、イーサネット・ネッ
トワークに接続するための種々のインターフェース回
路、又は代わりにトークン・リング・ネットワークを含
む。SCSIコントローラ120及びネットワーク・コ
ントローラ128は、バス・マスタの多くの例の内の2
つに過ぎず、これらを総称してPCIバス・マスタ11
8と呼ぶことにする。尚、ここに開示する原理は、PC
Iバス114以外にも、ISA又はEISAのようなバ
ス・マスタリング(bus mastering)に対応するその他の
バスにも適用可能である。ISAバス126は、更に、
マルチI/Oデバイス132、リード・オンリ・メモリ
(ROM)134、及びキーボード・コントローラ13
6にも接続する。マルチI/Oデバイスは、フロッピ・
ディスク・ドライブ138に接続するためのフロッピ・
ディスク・コントローラを含む。また、マルチI/Oデ
バイス内には、多数のシリアル・ポート回路及びパラレ
ル・ポート回路が収容されている。ROMは、電力投入
時にハードウエアを起動するための低レベル・コードを
与える。キーボード・コントローラは、キーボード14
0及びマウス142との通信を扱う。
SA(業界標準アーキテクチャ)ブリッジ116、小型
コンピュータ・システム・インターフェース(SCS
I)コントローラ120のような1つ以上のPCIバス
・マスタ118、及びネットワーク・インターフェース
・コントローラ128も接続されている。更に、PCI
バス114には、ビデオ・システム122及び1つ以上
のPCIスロット124が接続されている。PCI/I
SAブリッジ116は、PCIサイクルをISAバス・
サイクルに、及びその逆に変換し、ISAバス126に
接続する。また、PCI/ISAブリッジ116は、強
化したダイレクト・メモリ・アクセス(DMA)コント
ローラ、割り込みコントローラ、タイマ/カウンタ、及
びノンマスカブル割り込みロジック(non-maskable i nt
errupt logic)ならびに種々の周辺デバイス用デコード
・ロジックを統合する。SCSIコントローラ120
は、ハード・ディスク144、テープ・ドライブ、及び
CD−ROMのようなSCSI周辺機器に接続可能であ
る。ビデオ・システム122は、ビデオ・コントロー
ラ、フレーム・バッファ、及びモニタ130に接続する
ための種々のロジックを含む。ネットワーク・インター
フェース・コントローラ128は、イーサネット・ネッ
トワークに接続するための種々のインターフェース回
路、又は代わりにトークン・リング・ネットワークを含
む。SCSIコントローラ120及びネットワーク・コ
ントローラ128は、バス・マスタの多くの例の内の2
つに過ぎず、これらを総称してPCIバス・マスタ11
8と呼ぶことにする。尚、ここに開示する原理は、PC
Iバス114以外にも、ISA又はEISAのようなバ
ス・マスタリング(bus mastering)に対応するその他の
バスにも適用可能である。ISAバス126は、更に、
マルチI/Oデバイス132、リード・オンリ・メモリ
(ROM)134、及びキーボード・コントローラ13
6にも接続する。マルチI/Oデバイスは、フロッピ・
ディスク・ドライブ138に接続するためのフロッピ・
ディスク・コントローラを含む。また、マルチI/Oデ
バイス内には、多数のシリアル・ポート回路及びパラレ
ル・ポート回路が収容されている。ROMは、電力投入
時にハードウエアを起動するための低レベル・コードを
与える。キーボード・コントローラは、キーボード14
0及びマウス142との通信を扱う。
【0010】システム・アーキテクチャ 次に、図2のAのブロック図を参照する。本発明で特に
興味深いのは、プロセッサ100がPCIバス・マスタ
118と、及びその逆方向に、通信する方法である。各
PCIバス・マスタ118毎に、主メモリ112におい
て初期化時に、請求パケット・プール(solicited packe
t pool)200及び非請求パケット・プール(unsolicite
d packet pool)202が形成される。パケット・プール
を収容するメモリ112のエリアは、プロセッサ100
とPCIバス・マスタ118との間で共有される。請求
パケット・プール200は、1つ以上のパケット250
を収容し、これらは、プロセッサ100によって、目標
のPCIバス・マスタ118へ/からのデータを請求す
る際に用いられる。非請求パケット・プール202は、
2つ以上のパケット250を収容し、これらは、PCI
バス・マスタ118によって、非請求データ(unsolicit
ed data)をプロセッサ100に伝達する際に用いられ
る。非請求データとは、マウス142又はネットワーク
・コントローラ128によって受け取られたデータのよ
うに、PCIバス・マスタ118によって、非同期デー
タ源から自発的に受け取られたデータのことである。パ
ケット・プールを構成するパケット250は、初期化時
にリンクされ、リストを形成する。各リストは、ヘッド
HポインタとテールTポインタとを有し、これらに他の
パケット250をリンクすることができる。請求パケッ
ト・プール200内に位置するパケット250は、好ま
しくは同一の長さで、共に仮想アドレスによってリンク
されている。非請求パケット・プール202内に位置す
るパケット250は、好ましくは同一の長さで、共に物
理アドレスによってリンクされている。
興味深いのは、プロセッサ100がPCIバス・マスタ
118と、及びその逆方向に、通信する方法である。各
PCIバス・マスタ118毎に、主メモリ112におい
て初期化時に、請求パケット・プール(solicited packe
t pool)200及び非請求パケット・プール(unsolicite
d packet pool)202が形成される。パケット・プール
を収容するメモリ112のエリアは、プロセッサ100
とPCIバス・マスタ118との間で共有される。請求
パケット・プール200は、1つ以上のパケット250
を収容し、これらは、プロセッサ100によって、目標
のPCIバス・マスタ118へ/からのデータを請求す
る際に用いられる。非請求パケット・プール202は、
2つ以上のパケット250を収容し、これらは、PCI
バス・マスタ118によって、非請求データ(unsolicit
ed data)をプロセッサ100に伝達する際に用いられ
る。非請求データとは、マウス142又はネットワーク
・コントローラ128によって受け取られたデータのよ
うに、PCIバス・マスタ118によって、非同期デー
タ源から自発的に受け取られたデータのことである。パ
ケット・プールを構成するパケット250は、初期化時
にリンクされ、リストを形成する。各リストは、ヘッド
HポインタとテールTポインタとを有し、これらに他の
パケット250をリンクすることができる。請求パケッ
ト・プール200内に位置するパケット250は、好ま
しくは同一の長さで、共に仮想アドレスによってリンク
されている。非請求パケット・プール202内に位置す
るパケット250は、好ましくは同一の長さで、共に物
理アドレスによってリンクされている。
【0011】メモリ112とPCIバス・マスタ118
との間のパケットの移動を容易に行なうために、各PC
Iバス・マスタ118は、分散型バースト・エンジン
(DBE)206を含むことが好ましい。DBE206
は、本質的に、I/Oデバイス208のためのインテリ
ジェント・ダイレクト・メモリ・アクセス(DMA)コ
ントローラである。DBEの機能は、プロセッサ100
からの介入なく、パケット250を読み出し、送ること
である。I/Oデバイス208は、本質的に、SCSI
コントローラのように、DBE206と通信するように
構成された従来からのI/Oコントローラである。各D
BE206は、1つ以上のドアベル・レジスタ(doorbel
l register)204を含む。ドアベル204は、プロセ
ッサ100が「鳴らして(ring)」、メモリ112におい
て1つ以上のパケット250の準備が完了しており、使
用可能であることを、目標I/Oデバイス208に通知
する。その後、I/Oデバイス208は、DBE206
を介して、パケットをメモリ112から引き出し、即
ち、読み出し、パケット250の内容に応じてそれらを
処理する。
との間のパケットの移動を容易に行なうために、各PC
Iバス・マスタ118は、分散型バースト・エンジン
(DBE)206を含むことが好ましい。DBE206
は、本質的に、I/Oデバイス208のためのインテリ
ジェント・ダイレクト・メモリ・アクセス(DMA)コ
ントローラである。DBEの機能は、プロセッサ100
からの介入なく、パケット250を読み出し、送ること
である。I/Oデバイス208は、本質的に、SCSI
コントローラのように、DBE206と通信するように
構成された従来からのI/Oコントローラである。各D
BE206は、1つ以上のドアベル・レジスタ(doorbel
l register)204を含む。ドアベル204は、プロセ
ッサ100が「鳴らして(ring)」、メモリ112におい
て1つ以上のパケット250の準備が完了しており、使
用可能であることを、目標I/Oデバイス208に通知
する。その後、I/Oデバイス208は、DBE206
を介して、パケットをメモリ112から引き出し、即
ち、読み出し、パケット250の内容に応じてそれらを
処理する。
【0012】I/Oデバイス208が外部ソースからデ
ータを受け取った場合、DBE206によって非請求パ
ケットが準備され、メモリ112内に格納される。DB
E206が未請求データ・パケットをメモリ112内に
格納した後、プロセッサ100に割り込みをかけ、パケ
ットが処理可能であることをプロセッサ100に通知す
る。1つ以上の論理通信チャネル214が、プロセッサ
100とI/Oデバイス208との間に存在する可能性
がある。例えば、I/Oデバイス208は、入来データ
専用に1つのチャネル214、出立データに別のチャネ
ル214、ならびにコマンド及び制御のために第3のチ
ャネル214を有することができる。したがって、プロ
セッサ100とPCIバス・マスタ118との間の直接
通信は、このコマンド・パケット・アーキテクチャによ
って減少即ち制限される。このプロセッサ100及びP
CIバス・マスタ118間の、コマンド・パケット・ア
ーキテクチャによる切り離しの結果、多数の利点が得ら
れる。その利点の中には、ハードウエア割り込みの減
少、グラフィックスやオーディオのようなプロセッサ1
00の集約的アプリケーション(intensive applicatio
n)に対する処理能力向上、及びプロセッサ100の目標
I/Oデバイス208から読み出し不要が含まれる。
ータを受け取った場合、DBE206によって非請求パ
ケットが準備され、メモリ112内に格納される。DB
E206が未請求データ・パケットをメモリ112内に
格納した後、プロセッサ100に割り込みをかけ、パケ
ットが処理可能であることをプロセッサ100に通知す
る。1つ以上の論理通信チャネル214が、プロセッサ
100とI/Oデバイス208との間に存在する可能性
がある。例えば、I/Oデバイス208は、入来データ
専用に1つのチャネル214、出立データに別のチャネ
ル214、ならびにコマンド及び制御のために第3のチ
ャネル214を有することができる。したがって、プロ
セッサ100とPCIバス・マスタ118との間の直接
通信は、このコマンド・パケット・アーキテクチャによ
って減少即ち制限される。このプロセッサ100及びP
CIバス・マスタ118間の、コマンド・パケット・ア
ーキテクチャによる切り離しの結果、多数の利点が得ら
れる。その利点の中には、ハードウエア割り込みの減
少、グラフィックスやオーディオのようなプロセッサ1
00の集約的アプリケーション(intensive applicatio
n)に対する処理能力向上、及びプロセッサ100の目標
I/Oデバイス208から読み出し不要が含まれる。
【0013】次に図2のBを参照すると、本発明のデバ
イス・ドライバがどのようにしてメモリ112と通信す
るかについて示されている。従来技術では、プロセッサ
100は、デバイス・ドライバを介してI/Oデバイス
と直接通信し、デバイス・ドライバが、I/Oデバイス
上のメモリ・マップI/Oレジスタ(memory mapped I/O
register)のコンフィギュレーション(環境設定)を行
い、I/Oデバイスに処理を行なわせていた。その処理
が完了した後、I/Oデバイスはプロセッサ100に割
り込みをかけ、一方プロセッサ100は、割り込み源に
関して、I/Oデバイス上のステータス・レジスタをプ
ロセッサ100にチェックさせる。本発明の好適な実施
形態によれば、要求は、ホスト・ソフトウエア・アプリ
ケーション220から、Windows NTのようなオペレーテ
ィング・システム(OS)222に発生する。OS22
2は、全体として、ある実行サービス224、マイクロ
カーネル226,ハードウエア抽象レイヤ(HAL: ha
rdware abstractionlayer)228、及び1つ以上のデ
バイス・ドライバ230を有するI/Oシステムを含む
カーネルで構成されている。デバイス・ドライバ230
は、メモリ112やPCIバス・マスタ118のような
ハードウエアCと直接通信することを許可されている。
各PCIバス・マスタ118毎に、少なくとも1つのデ
バイス・ドライバ230があることは理解されよう。D
BEデバイス206に対するデバイス・ドライバ230
は、いずれかのプロセッサ100の特権レベル(インテ
ル社のプロセッサ上における「リング」レベル)で実行
するためには不要である。ドライバ230は、カーネル
・モード又はユーザ・モードで実行することができる。
イス・ドライバがどのようにしてメモリ112と通信す
るかについて示されている。従来技術では、プロセッサ
100は、デバイス・ドライバを介してI/Oデバイス
と直接通信し、デバイス・ドライバが、I/Oデバイス
上のメモリ・マップI/Oレジスタ(memory mapped I/O
register)のコンフィギュレーション(環境設定)を行
い、I/Oデバイスに処理を行なわせていた。その処理
が完了した後、I/Oデバイスはプロセッサ100に割
り込みをかけ、一方プロセッサ100は、割り込み源に
関して、I/Oデバイス上のステータス・レジスタをプ
ロセッサ100にチェックさせる。本発明の好適な実施
形態によれば、要求は、ホスト・ソフトウエア・アプリ
ケーション220から、Windows NTのようなオペレーテ
ィング・システム(OS)222に発生する。OS22
2は、全体として、ある実行サービス224、マイクロ
カーネル226,ハードウエア抽象レイヤ(HAL: ha
rdware abstractionlayer)228、及び1つ以上のデ
バイス・ドライバ230を有するI/Oシステムを含む
カーネルで構成されている。デバイス・ドライバ230
は、メモリ112やPCIバス・マスタ118のような
ハードウエアCと直接通信することを許可されている。
各PCIバス・マスタ118毎に、少なくとも1つのデ
バイス・ドライバ230があることは理解されよう。D
BEデバイス206に対するデバイス・ドライバ230
は、いずれかのプロセッサ100の特権レベル(インテ
ル社のプロセッサ上における「リング」レベル)で実行
するためには不要である。ドライバ230は、カーネル
・モード又はユーザ・モードで実行することができる。
【0014】デバイス・ドライバ230とは、ここで
は、Windows, Windows NT, OS/2等のようなオペレーテ
ィング・システムに関係する技術分野では公知のデバイ
ス・ドライバのクラスを意味する。しかしながら、本発
明にしたがって記載されるデバイス・ドライバ230
は、当技術分野では新規なものであることは理解されよ
う。ここの開示は、本発明にしたがってデバイス・ドラ
イバを開発するための十分な手引きを当業者に提供す
る。デバイス・ドライバ230は、DBEデバイス20
6及びホスト・ソフトウエア220との双方向処理に関
して、6つの主要な機能を有するものと見ることができ
る。これらの機能は、初期化/初期化解除(initializat
ion/deinitialization)、パケット提出(packet submiss
ion)、パケット完了(packet completion)、同期ダイレ
クト・アクセス、パケット取り消し、パケット・プール
の増減である。ドライバ230は、システムの初期化中
に、DBEデバイス206及びI/Oデバイス208を
初期化しなければならない。一旦DBEデバイス206
及びI/Oデバイス208が初期化され、要求を受け入
れ可能となったなら、ドライバ230は、デバイス要求
を開始することができ、DBEデバイス206はデータ
転送を開始することができる。次いで、デバイス・ドラ
イバ230は、パケットに対して適切な完了シーケンス
を実行することができる。これらの詳細については、以
下で論ずる。尚、デバイス・ドライバ230はプロセッ
サ100上で実行することが好ましいので、オペレーテ
ィング・システム222によって実行されるパケット処
理に言及する場合、用語は相互交換可能に用いることが
できることを注記しておく。加えて、「ホスト」という
用語は、ときとして、プロセッサ100、ホスト・ソフ
トウエア220、及びデバイス・ドライバ230全体に
論理的に言及するために用いることもある。このような
場合、番号指定はプロセッサ100と同一とする。即
ち、ホスト100とする。
は、Windows, Windows NT, OS/2等のようなオペレーテ
ィング・システムに関係する技術分野では公知のデバイ
ス・ドライバのクラスを意味する。しかしながら、本発
明にしたがって記載されるデバイス・ドライバ230
は、当技術分野では新規なものであることは理解されよ
う。ここの開示は、本発明にしたがってデバイス・ドラ
イバを開発するための十分な手引きを当業者に提供す
る。デバイス・ドライバ230は、DBEデバイス20
6及びホスト・ソフトウエア220との双方向処理に関
して、6つの主要な機能を有するものと見ることができ
る。これらの機能は、初期化/初期化解除(initializat
ion/deinitialization)、パケット提出(packet submiss
ion)、パケット完了(packet completion)、同期ダイレ
クト・アクセス、パケット取り消し、パケット・プール
の増減である。ドライバ230は、システムの初期化中
に、DBEデバイス206及びI/Oデバイス208を
初期化しなければならない。一旦DBEデバイス206
及びI/Oデバイス208が初期化され、要求を受け入
れ可能となったなら、ドライバ230は、デバイス要求
を開始することができ、DBEデバイス206はデータ
転送を開始することができる。次いで、デバイス・ドラ
イバ230は、パケットに対して適切な完了シーケンス
を実行することができる。これらの詳細については、以
下で論ずる。尚、デバイス・ドライバ230はプロセッ
サ100上で実行することが好ましいので、オペレーテ
ィング・システム222によって実行されるパケット処
理に言及する場合、用語は相互交換可能に用いることが
できることを注記しておく。加えて、「ホスト」という
用語は、ときとして、プロセッサ100、ホスト・ソフ
トウエア220、及びデバイス・ドライバ230全体に
論理的に言及するために用いることもある。このような
場合、番号指定はプロセッサ100と同一とする。即
ち、ホスト100とする。
【0015】パケット DBE206の更なる詳細に進む前に、パケット250
について更に詳しく理解する必要がある。ここで図3を
参照すると、好適な実施形態によるパケット250が示
されている。パケット250は、2つの主要部分、即
ち、32バイトのヘッダ252及び可変サイズのペイロ
ード254からなる。各パケットは、64バイトの境
界、即ち、Pentiumのキャッシュラインに整合されてい
る。このようにすれば、最初のキャッシュラインがヘッ
ダ252を収容し、後続のキャッシュラインはペイロー
ド254を収容することができる。ペイロード254
は、デバイスに特定のデータを保持し、4バイト刻みで
4〜256バイトの範囲を取ることができる。ヘッダ2
52は、8つの32ビット・フィールドで構成され、ソ
フトウエア・コンテクスト(SwContext)フィールド25
6、チャネル・フィールド258、仮想アドレス・リン
ク(VaLink)フィールド260、物理アドレス(Pa)フィー
ルド262、ハードウエア・コンテクスト(HwContext)
フィールド264、物理アドレス・リンクDword (PaLin
kDwords)フィールド266、物理アドレス・リンク(PaL
ink)フィールド268、及び仮想アドレス(Va)フィール
ド270を含む。リンク・フィールドは、パケットのリ
ンク・リスト形成を可能にする。
について更に詳しく理解する必要がある。ここで図3を
参照すると、好適な実施形態によるパケット250が示
されている。パケット250は、2つの主要部分、即
ち、32バイトのヘッダ252及び可変サイズのペイロ
ード254からなる。各パケットは、64バイトの境
界、即ち、Pentiumのキャッシュラインに整合されてい
る。このようにすれば、最初のキャッシュラインがヘッ
ダ252を収容し、後続のキャッシュラインはペイロー
ド254を収容することができる。ペイロード254
は、デバイスに特定のデータを保持し、4バイト刻みで
4〜256バイトの範囲を取ることができる。ヘッダ2
52は、8つの32ビット・フィールドで構成され、ソ
フトウエア・コンテクスト(SwContext)フィールド25
6、チャネル・フィールド258、仮想アドレス・リン
ク(VaLink)フィールド260、物理アドレス(Pa)フィー
ルド262、ハードウエア・コンテクスト(HwContext)
フィールド264、物理アドレス・リンクDword (PaLin
kDwords)フィールド266、物理アドレス・リンク(PaL
ink)フィールド268、及び仮想アドレス(Va)フィール
ド270を含む。リンク・フィールドは、パケットのリ
ンク・リスト形成を可能にする。
【0016】SwContextフィールド256は、ホスト・
ソフトウエア220が、適切と見なすいずれかの方法で
使用するために予約されている32ビット・フィールド
である。ソフトウエアは、このフィールドを用いて、こ
のパケット250に関連するOSに特定の情報を埋め込
むことができる。その一例をあげるとすれば、パケット
250内のI/O要求と関連するI/O要求パケット
(IRP)の仮想アドレスを置くことであろう。これに
よって、デバイス・ドライバ230は、I/O完了の間
に、I/O要求パケットを直接復元することができ、未
決要求のリストを管理する必要がなくなる。チャネル・
フィールド258は、パケットが関連した最後のチャネ
ル214の番号を収容する32ビット・フィールドであ
る。チャネル214は、論理通信リンクである。各I/
Oデバイス208は、2つ以上のチャネル214を有す
る場合がある。一方、1つ以上のI/Oデバイスに対応
するDBE206は、2つ以上のチャネル214を有す
る場合がある。例えば、1つのチャネル214をデータ
転送のために割り当て、他方のチャネル214をコマン
ド及びステータスのために割り当てる場合もある。この
フィールドは、非請求パケット・プール202内のパケ
ットに対しては、「0」を収容する。
ソフトウエア220が、適切と見なすいずれかの方法で
使用するために予約されている32ビット・フィールド
である。ソフトウエアは、このフィールドを用いて、こ
のパケット250に関連するOSに特定の情報を埋め込
むことができる。その一例をあげるとすれば、パケット
250内のI/O要求と関連するI/O要求パケット
(IRP)の仮想アドレスを置くことであろう。これに
よって、デバイス・ドライバ230は、I/O完了の間
に、I/O要求パケットを直接復元することができ、未
決要求のリストを管理する必要がなくなる。チャネル・
フィールド258は、パケットが関連した最後のチャネ
ル214の番号を収容する32ビット・フィールドであ
る。チャネル214は、論理通信リンクである。各I/
Oデバイス208は、2つ以上のチャネル214を有す
る場合がある。一方、1つ以上のI/Oデバイスに対応
するDBE206は、2つ以上のチャネル214を有す
る場合がある。例えば、1つのチャネル214をデータ
転送のために割り当て、他方のチャネル214をコマン
ド及びステータスのために割り当てる場合もある。この
フィールドは、非請求パケット・プール202内のパケ
ットに対しては、「0」を収容する。
【0017】Vaフィールド270、VaLinkフィールド2
60、Paフィールド262、及びPaLinkフィールド26
8は、パケット・ヘッダ252内に収容され、物理メモ
リ及び仮想メモリ間の多数のアドレス変換を不要とす
る。物理メモリはメモリ112である。Pentium及び同
等のプロセッサ100は、物理メモリ112を効率的に
使用するために、ハードウエア・メモリ管理機構を採用
している。典型的に、プロセッサ100上で実行するプ
ログラムは直接物理メモリ112にアドレス指定するの
ではなく、代わりに、仮想アドレスを用いてメモリ11
2にアクセスする。各パケット250内に仮想アドレス
・フィールド及び物理アドレス・フィールドの双方を備
えることにより、パケット250を初期化するときに、
変換を1回だけ行えば済むようになる。このように、デ
バイス・ドライバは仮想アドレスを用いて動作すること
ができ、一方DBE206は物理アドレスを用いて動作
することができ、各々同じパケット250を用いて通信
する。
60、Paフィールド262、及びPaLinkフィールド26
8は、パケット・ヘッダ252内に収容され、物理メモ
リ及び仮想メモリ間の多数のアドレス変換を不要とす
る。物理メモリはメモリ112である。Pentium及び同
等のプロセッサ100は、物理メモリ112を効率的に
使用するために、ハードウエア・メモリ管理機構を採用
している。典型的に、プロセッサ100上で実行するプ
ログラムは直接物理メモリ112にアドレス指定するの
ではなく、代わりに、仮想アドレスを用いてメモリ11
2にアクセスする。各パケット250内に仮想アドレス
・フィールド及び物理アドレス・フィールドの双方を備
えることにより、パケット250を初期化するときに、
変換を1回だけ行えば済むようになる。このように、デ
バイス・ドライバは仮想アドレスを用いて動作すること
ができ、一方DBE206は物理アドレスを用いて動作
することができ、各々同じパケット250を用いて通信
する。
【0018】Vaフィールド270は、以下のフィールド
で構成された32ビット・フィールドである。
で構成された32ビット・フィールドである。
【表1】
【0019】VaLinkフィールドは、リスト内の次のパケ
ットの仮想アドレスを収容する32ビット・フィールド
である。このフィールドは、リンクされているパケット
がない場合、ヌルとなる。このフィールドは、DBEデ
バイス206が完了したときに、空きパケットを再び請
求パケット・プール200にリンクする際にDBEデバ
イス206によって用いられる。空きパケット(free pa
cket)とは、既に完了し、現在は再び「自由に」使用で
きるパケットのことである。DBE206デバイスは必
ずしも仮想アドレス処理を理解している訳ではないが、
単純にパケット250内に収容されている仮想アドレス
のリード及びライトを行うことによって、仮想アドレス
を用いてパケット250をリンクすることができる。Pa
フィールド262は、パケット250の物理アドレスを
収容する32ビット・フィールドである。これは、DB
Eデバイス206が見て使用するアドレスである。PaLi
nkフィールド268は、リスト内の次のパケット250
の物理アドレスを収容する32ビット・フィールドであ
る。HwContextフィールド264は、DBEデバイス2
06が適切とみなすいずれかの方法で、その特定の実装
によって用いるために予約されている32ビット・フィ
ールドである。例えば、これを用いて、キャッシュされ
ていないメモリ範囲へのアドレスを埋め込むことによ
り、ペイロード254なしでパケット250を作成する
ことが可能となる。PaLinkDwordsフィールド262は、
次のパケットのペイロード254のサイズを収容する3
2ビット・フィールドである。そのサイズは、連続する
4バイトのチャンク(chunk)の数として表現することが
好ましい。
ットの仮想アドレスを収容する32ビット・フィールド
である。このフィールドは、リンクされているパケット
がない場合、ヌルとなる。このフィールドは、DBEデ
バイス206が完了したときに、空きパケットを再び請
求パケット・プール200にリンクする際にDBEデバ
イス206によって用いられる。空きパケット(free pa
cket)とは、既に完了し、現在は再び「自由に」使用で
きるパケットのことである。DBE206デバイスは必
ずしも仮想アドレス処理を理解している訳ではないが、
単純にパケット250内に収容されている仮想アドレス
のリード及びライトを行うことによって、仮想アドレス
を用いてパケット250をリンクすることができる。Pa
フィールド262は、パケット250の物理アドレスを
収容する32ビット・フィールドである。これは、DB
Eデバイス206が見て使用するアドレスである。PaLi
nkフィールド268は、リスト内の次のパケット250
の物理アドレスを収容する32ビット・フィールドであ
る。HwContextフィールド264は、DBEデバイス2
06が適切とみなすいずれかの方法で、その特定の実装
によって用いるために予約されている32ビット・フィ
ールドである。例えば、これを用いて、キャッシュされ
ていないメモリ範囲へのアドレスを埋め込むことによ
り、ペイロード254なしでパケット250を作成する
ことが可能となる。PaLinkDwordsフィールド262は、
次のパケットのペイロード254のサイズを収容する3
2ビット・フィールドである。そのサイズは、連続する
4バイトのチャンク(chunk)の数として表現することが
好ましい。
【0020】このように、パケット構造及びプロトコル
が定義され、これによって、デバイス・ドライバ230
は、I/Oデバイス208とパケットを通信することが
可能となる。デバイスの初期化時に、プロセッサ100
は、I/Oデバイス208に対して、特定数のパケット
を形成する。次に、デバイス・ドライバ230は、I/
Oデバイス208と通信する際、メモリ112に格納さ
れているパケット250にコマンド及びデータを書き込
み、パケット250を処理する準備ができていることを
DBE206に通知する。DBE206は、メモリ11
2からパケット250を読み出し、それを解析してドラ
イバ230が要求した処理を判定する。どのようにパケ
ット250をDBE206に発行したかに応じて、DB
Eデバイスがどのように処理を完了し、ドライバ230
のためにパケット250をメモリ112に戻すのかが決
定される。パケット250は、Vaフィールド270に示
される3つの方法、即ち、非同期、ポール、又は割り込
みの内の1つで提出することができる。デバイス・ドラ
イバ230は、完了通知を必要としない又は望まない場
合に、非同期パケットを提出する。グラフィックス・コ
ントローラ122のビット・ブリット(BLT:bit-bl
it)処理が、その一例である。
が定義され、これによって、デバイス・ドライバ230
は、I/Oデバイス208とパケットを通信することが
可能となる。デバイスの初期化時に、プロセッサ100
は、I/Oデバイス208に対して、特定数のパケット
を形成する。次に、デバイス・ドライバ230は、I/
Oデバイス208と通信する際、メモリ112に格納さ
れているパケット250にコマンド及びデータを書き込
み、パケット250を処理する準備ができていることを
DBE206に通知する。DBE206は、メモリ11
2からパケット250を読み出し、それを解析してドラ
イバ230が要求した処理を判定する。どのようにパケ
ット250をDBE206に発行したかに応じて、DB
Eデバイスがどのように処理を完了し、ドライバ230
のためにパケット250をメモリ112に戻すのかが決
定される。パケット250は、Vaフィールド270に示
される3つの方法、即ち、非同期、ポール、又は割り込
みの内の1つで提出することができる。デバイス・ドラ
イバ230は、完了通知を必要としない又は望まない場
合に、非同期パケットを提出する。グラフィックス・コ
ントローラ122のビット・ブリット(BLT:bit-bl
it)処理が、その一例である。
【0021】デバイス・ドライバ230は、完了通知を
必要とする場合、I/Oデバイス118によってアサー
トされたハードウエア割り込みによって、割り込みパケ
ットを提出する。デバイス・ドライバ230は、ホスト
・ソフトウエア220がポーリングを要求するような状
況に対して、ポール・パケットを提出する。場合によっ
て、ポール・パケットの方が効率的な手段完了通知(mea
ns completion notification)となることもある。例え
ば、SCSIコントローラ120に対する典型的な要求
は、「セクタ・リード」及び「セクタ・ライト」動作で
ある。従来技術のオペレーティング・システムは、その
殆どが、デバイス・ドライバに要求を完了するのを「待
つ」ように要求するセクタ・データのリード及びライト
を行うためのコール側アプリケーションの目標バッファ
を表す、物理ページのリストを備えている。要求の完了
を示すディスク・デバイスによる通知の際に、ドライバ
は、コール側のアプリケーションの目標バッファのため
に、メモリを解放することができる。目標デバイスに基
づいて、ドライバにとっては、ハードウエア割り込みの
結果としてコンテクストの切り替えを誘発するよりはむ
しろ、特定の処理上で「ポール」することによって、完
了通知を「待つ」方が一層効率的な場合がある。したが
って、本発明は、デバイス・ドライバ230が、DBE
デバイス206に要求を提出し、I/Oデバイス208
がその要求を終了するまで、パケット250上でポール
するための方法を提供する。
必要とする場合、I/Oデバイス118によってアサー
トされたハードウエア割り込みによって、割り込みパケ
ットを提出する。デバイス・ドライバ230は、ホスト
・ソフトウエア220がポーリングを要求するような状
況に対して、ポール・パケットを提出する。場合によっ
て、ポール・パケットの方が効率的な手段完了通知(mea
ns completion notification)となることもある。例え
ば、SCSIコントローラ120に対する典型的な要求
は、「セクタ・リード」及び「セクタ・ライト」動作で
ある。従来技術のオペレーティング・システムは、その
殆どが、デバイス・ドライバに要求を完了するのを「待
つ」ように要求するセクタ・データのリード及びライト
を行うためのコール側アプリケーションの目標バッファ
を表す、物理ページのリストを備えている。要求の完了
を示すディスク・デバイスによる通知の際に、ドライバ
は、コール側のアプリケーションの目標バッファのため
に、メモリを解放することができる。目標デバイスに基
づいて、ドライバにとっては、ハードウエア割り込みの
結果としてコンテクストの切り替えを誘発するよりはむ
しろ、特定の処理上で「ポール」することによって、完
了通知を「待つ」方が一層効率的な場合がある。したが
って、本発明は、デバイス・ドライバ230が、DBE
デバイス206に要求を提出し、I/Oデバイス208
がその要求を終了するまで、パケット250上でポール
するための方法を提供する。
【0022】パケット・キュー 初期化時に、デバイス・ドライバ230は、請求パケッ
ト・プール200及び非請求パケット・プール202を
形成する。図4には、これらのパケットのリンク・リス
トの形成に関して更に詳細に示されている。デバイス・
ドライバ230及びメモリ112間ならびにDBEデバ
イス206及びメモリ112間双方におけるパケットの
フローを管理するために、4つのキュー272〜278
が形成される。即ち、フリー・キュー(FQ: free que
ue)272、要求キュー(RQ:request queue)27
4、完了キュー(CQ: completion queue)276、及
びポステッド・キュー(PQ: posted queue)278で
ある。フリー・キュー272は、請求パケット・プール
200と同一であり、ポステッド・キュー278は非請
求パケット・プール202と同一である。これら4つの
キュー272〜278の各々は、ヘッドHポインタ及び
テールTポインタを有する。デバイス・ドライバ230
は、フリー・キュー272のヘッドH及び残りの3つの
キュー274〜278のテールTを保持する。DBEデ
バイス206は、フリー・キュー272のテールT及び
残りの3つのキュー274〜278のヘッドHを保持す
る。
ト・プール200及び非請求パケット・プール202を
形成する。図4には、これらのパケットのリンク・リス
トの形成に関して更に詳細に示されている。デバイス・
ドライバ230及びメモリ112間ならびにDBEデバ
イス206及びメモリ112間双方におけるパケットの
フローを管理するために、4つのキュー272〜278
が形成される。即ち、フリー・キュー(FQ: free que
ue)272、要求キュー(RQ:request queue)27
4、完了キュー(CQ: completion queue)276、及
びポステッド・キュー(PQ: posted queue)278で
ある。フリー・キュー272は、請求パケット・プール
200と同一であり、ポステッド・キュー278は非請
求パケット・プール202と同一である。これら4つの
キュー272〜278の各々は、ヘッドHポインタ及び
テールTポインタを有する。デバイス・ドライバ230
は、フリー・キュー272のヘッドH及び残りの3つの
キュー274〜278のテールTを保持する。DBEデ
バイス206は、フリー・キュー272のテールT及び
残りの3つのキュー274〜278のヘッドHを保持す
る。
【0023】フリー・キュー272は、デバイス・ドラ
イバ230がDBEデバイス206との通信に使用する
際に利用可能なパケット250を収容する。ホスト・ソ
フトウエア220から要求が請求されると、デバイス・
ドライバ230は、フリー・キュー272のヘッドHか
らパケット250のリンクを解除し、パケットのペイロ
ード254を満たし、パケット250を要求キュー27
2のテールTにリンクする。パケット250は、非同期
的(A)、ポール(P)又は割り込み(I)のいずれか
によって提出することができる。DBEデバイス206
は、請求された要求を処理する際に、パケット250の
リンクを要求キュー274から解除し、ペイロード25
4をI/Oデバイス208に受け渡し、それらの提出方
法にしたがってパケット250を完了する。更に具体的
には、非同期パケットAの完了は、デバイス・ドライバ
230に通知せずに行い、フリー・キュー272のテー
ルTで完了する。ポール・パケットPは、デバイス・ド
ライバ230によって、フリー・キュー272のヘッド
Hに戻され、割り込みパケットIの完了は、完了キュー
276を通じて行う。
イバ230がDBEデバイス206との通信に使用する
際に利用可能なパケット250を収容する。ホスト・ソ
フトウエア220から要求が請求されると、デバイス・
ドライバ230は、フリー・キュー272のヘッドHか
らパケット250のリンクを解除し、パケットのペイロ
ード254を満たし、パケット250を要求キュー27
2のテールTにリンクする。パケット250は、非同期
的(A)、ポール(P)又は割り込み(I)のいずれか
によって提出することができる。DBEデバイス206
は、請求された要求を処理する際に、パケット250の
リンクを要求キュー274から解除し、ペイロード25
4をI/Oデバイス208に受け渡し、それらの提出方
法にしたがってパケット250を完了する。更に具体的
には、非同期パケットAの完了は、デバイス・ドライバ
230に通知せずに行い、フリー・キュー272のテー
ルTで完了する。ポール・パケットPは、デバイス・ド
ライバ230によって、フリー・キュー272のヘッド
Hに戻され、割り込みパケットIの完了は、完了キュー
276を通じて行う。
【0024】割り込みパケットについては、DBEデバ
イス206が割り込みパケットIを完了キューのヘッド
Hにリンクした後、ハードウエア割り込みを発生すれば
よい。完了キュー276が空の場合、パケット250を
リンクするときに割り込みを発生する。完了キュー27
6が空でない場合、続いてリンクされるパケットは割り
込みを発生しない。デバイス・ドライバ230は、完了
キュー276からのパケット250のリンクを解除し、
ペイロード254を除去し、Vaフィールド270のビッ
ト0に基づいて、パケットをフリー・キュー272又は
ポステッド・キュー278のいずれかに戻す。ポステッ
ド・キュー278は、非請求要求のためにパケット25
0を保持する。非請求要求が発生した場合、DBEデバ
イス206は、ポステッド・キュー278からのパケッ
ト250のリンクを解除し、ペイロード254をデータ
で満たし、パケット250を完了キュー276にリンク
する。パケットのリストが未だ完了キュー276上にな
い場合、ハードウエア割り込みを発生する。
イス206が割り込みパケットIを完了キューのヘッド
Hにリンクした後、ハードウエア割り込みを発生すれば
よい。完了キュー276が空の場合、パケット250を
リンクするときに割り込みを発生する。完了キュー27
6が空でない場合、続いてリンクされるパケットは割り
込みを発生しない。デバイス・ドライバ230は、完了
キュー276からのパケット250のリンクを解除し、
ペイロード254を除去し、Vaフィールド270のビッ
ト0に基づいて、パケットをフリー・キュー272又は
ポステッド・キュー278のいずれかに戻す。ポステッ
ド・キュー278は、非請求要求のためにパケット25
0を保持する。非請求要求が発生した場合、DBEデバ
イス206は、ポステッド・キュー278からのパケッ
ト250のリンクを解除し、ペイロード254をデータ
で満たし、パケット250を完了キュー276にリンク
する。パケットのリストが未だ完了キュー276上にな
い場合、ハードウエア割り込みを発生する。
【0025】DBEに対するソフトウエア・インターフ
ェース DBEデバイス206は、DBEデバイス・オブジェク
ト272(図2のA)を通じて、デバイス・ドライバ2
30に対して抽象化される。DBEデバイス・オブジェ
クト272は、関連するデータ構造、及びドライバ23
0とDBEデバイス206との間でパケット・プロトコ
ルを管理するために必要なリソースを収容する。DBE
デバイス・オブジェクト272は、メモリ112に格納
され、DBEデバイス・ドライバ230によって管理さ
れる。DBEデバイス・オブジェクト272は、コンピ
ュータ・システムC内の特定のDBEデバイス206に
対応する。DBEデバイス206は、このデータ構造の
概念を有していない。オブジェクト272は、目標DB
Eデバイス206のリソースを管理するために、デバイ
ス・ドライバ230のみによって作成され使用される。
DBEデバイス・オブジェクトのメモリ・フォーマット
を変更しても、新たなファンクショナリティがデバイス
によって要求されなければ、デバイスには影響を与えな
い。DBEオブジェクト272をPentiumのキャッシュ
・ラインの境界と整合させ、頻繁に参照される隣接する
データ項目上でキャッシュ・ラインが満杯になる回数を
減少させる。DBEデバイス・オブジェクト272は、
表2に示したデータ構造からなる。
ェース DBEデバイス206は、DBEデバイス・オブジェク
ト272(図2のA)を通じて、デバイス・ドライバ2
30に対して抽象化される。DBEデバイス・オブジェ
クト272は、関連するデータ構造、及びドライバ23
0とDBEデバイス206との間でパケット・プロトコ
ルを管理するために必要なリソースを収容する。DBE
デバイス・オブジェクト272は、メモリ112に格納
され、DBEデバイス・ドライバ230によって管理さ
れる。DBEデバイス・オブジェクト272は、コンピ
ュータ・システムC内の特定のDBEデバイス206に
対応する。DBEデバイス206は、このデータ構造の
概念を有していない。オブジェクト272は、目標DB
Eデバイス206のリソースを管理するために、デバイ
ス・ドライバ230のみによって作成され使用される。
DBEデバイス・オブジェクトのメモリ・フォーマット
を変更しても、新たなファンクショナリティがデバイス
によって要求されなければ、デバイスには影響を与えな
い。DBEオブジェクト272をPentiumのキャッシュ
・ラインの境界と整合させ、頻繁に参照される隣接する
データ項目上でキャッシュ・ラインが満杯になる回数を
減少させる。DBEデバイス・オブジェクト272は、
表2に示したデータ構造からなる。
【0026】
【表2】
【0027】DBEデバイス・インターフェース 次にDBEデバイス206に言及するために、図5に注
意を向けると、DBEデバイス206のレジスタ・イン
ターフェースが示されている。DBEデバイス206
は、1組のメモリ・マップI/Oレジスタ280〜29
2を含み、DBEプロトコルに便宜を図っている。DB
Eドライバ206に対応するデバイス・ドライバ230
は、システムの初期化中に、コンフィギュレーション情
報をレジスタ280〜292に書き込む。レジスタ28
0〜292は、プロセッサ100(デバイス・ドライ
バ)及びDBEデバイス206双方にアクセス可能であ
る。これらのレジスタは、イベント・イネーブル・レジ
スタ(EN_REG)280、イベント・ディスエーブル・レジ
スタ(DI_REG)282、フリー・キュー・テール・レジス
タ(FQ_REG)284、完了キュー・ヘッド・レジスタ(CQ_
REG)286、ポステッド・バッファ・キュー・ヘッド・
レジスタ(PQ_REG)288、及び1つ以上の要求キュー・
ヘッド・レジスタ(RQn_REG) 290を含む。イベント・
イネーブル・レジスタ(EN_REG)280は、実装に特定の
情報を収容するための32ビット・レジスタである。ビ
ット31:2は、カスタム化(customization)のために
使用可能である。ビット1:0については、以下で定義
する。このレジスタは、32ビット、リード/ライト、
ビット・マップ、及びメモリ・マップI/Oレジスタで
あることの属性を有する。ビットの定義は以下の通りで
ある。
意を向けると、DBEデバイス206のレジスタ・イン
ターフェースが示されている。DBEデバイス206
は、1組のメモリ・マップI/Oレジスタ280〜29
2を含み、DBEプロトコルに便宜を図っている。DB
Eドライバ206に対応するデバイス・ドライバ230
は、システムの初期化中に、コンフィギュレーション情
報をレジスタ280〜292に書き込む。レジスタ28
0〜292は、プロセッサ100(デバイス・ドライ
バ)及びDBEデバイス206双方にアクセス可能であ
る。これらのレジスタは、イベント・イネーブル・レジ
スタ(EN_REG)280、イベント・ディスエーブル・レジ
スタ(DI_REG)282、フリー・キュー・テール・レジス
タ(FQ_REG)284、完了キュー・ヘッド・レジスタ(CQ_
REG)286、ポステッド・バッファ・キュー・ヘッド・
レジスタ(PQ_REG)288、及び1つ以上の要求キュー・
ヘッド・レジスタ(RQn_REG) 290を含む。イベント・
イネーブル・レジスタ(EN_REG)280は、実装に特定の
情報を収容するための32ビット・レジスタである。ビ
ット31:2は、カスタム化(customization)のために
使用可能である。ビット1:0については、以下で定義
する。このレジスタは、32ビット、リード/ライト、
ビット・マップ、及びメモリ・マップI/Oレジスタで
あることの属性を有する。ビットの定義は以下の通りで
ある。
【0028】
【表3】
【0029】イベント・ディスエーブル・レジスタ(DI_
REG)282は、デバイス・ドライバ230が、EN_REG2
80によってイネーブルされたイベントをディスエーブ
ルする際に用いられる。EN_REG280及びDI_REG282
レジスタは、同一レジスタに対するセット/クリア動作
に対して、個々のビット位置を自動的に反映させる(aff
ect)ために通常必要なリード/修正/ライト動作を不要
とするために実装する。このレジスタは、32ビット、
リード/ライト、ビット・マップ及びメモリ・マップI
/Oレジスタであることの属性を有する。ビット定義は
以下の通りである。
REG)282は、デバイス・ドライバ230が、EN_REG2
80によってイネーブルされたイベントをディスエーブ
ルする際に用いられる。EN_REG280及びDI_REG282
レジスタは、同一レジスタに対するセット/クリア動作
に対して、個々のビット位置を自動的に反映させる(aff
ect)ために通常必要なリード/修正/ライト動作を不要
とするために実装する。このレジスタは、32ビット、
リード/ライト、ビット・マップ及びメモリ・マップI
/Oレジスタであることの属性を有する。ビット定義は
以下の通りである。
【表4】
【0030】フリー・キュー・テール・レジスタ(FQ_RE
G)284は、請求パケット・プール200上の最後のパ
ケット250、即ち、テール・パケットTの物理アドレ
スを格納するための32ビット・レジスタである。この
レジスタは、システムの初期化中に、デバイス・ドライ
バ230によって初期化される。その後、このレジスタ
は、DBEデバイス206によって維持される。この手
順を実装するために、DBEデバイス206は、DBE
デバイス206がRESETモードにある場合(EN_REG[0]="
1")、このレジスタのビット[31:5]へのプロセッサ10
0のライトをラッチする。DBEデバイス206は、物
理アドレスのビット[4:0]が"0"を含むことを想定する。
DBEデバイス206は、デバイス・ドライバ230に
通知を返送することなく、請求パケット・プール200
のテールTへの非同期パケット(以下で論ずる)を完了
する。デバイス・ドライバ230は、DBEデバイス2
06が、完了した非同期パケット250にリンクするた
めの場所を有するために、請求パケット・プール200
上に少なくとも1つのフリー・パケット250を保持し
なければならない。このレジスタは、32ビット、リー
ド/ライト、ビット・マップ及びメモリ・マップI/O
レジスタであることの属性を有する。ビット定義は以下
の通りである。
G)284は、請求パケット・プール200上の最後のパ
ケット250、即ち、テール・パケットTの物理アドレ
スを格納するための32ビット・レジスタである。この
レジスタは、システムの初期化中に、デバイス・ドライ
バ230によって初期化される。その後、このレジスタ
は、DBEデバイス206によって維持される。この手
順を実装するために、DBEデバイス206は、DBE
デバイス206がRESETモードにある場合(EN_REG[0]="
1")、このレジスタのビット[31:5]へのプロセッサ10
0のライトをラッチする。DBEデバイス206は、物
理アドレスのビット[4:0]が"0"を含むことを想定する。
DBEデバイス206は、デバイス・ドライバ230に
通知を返送することなく、請求パケット・プール200
のテールTへの非同期パケット(以下で論ずる)を完了
する。デバイス・ドライバ230は、DBEデバイス2
06が、完了した非同期パケット250にリンクするた
めの場所を有するために、請求パケット・プール200
上に少なくとも1つのフリー・パケット250を保持し
なければならない。このレジスタは、32ビット、リー
ド/ライト、ビット・マップ及びメモリ・マップI/O
レジスタであることの属性を有する。ビット定義は以下
の通りである。
【表5】
【0031】完了キュー・レジスタ(CQ_REG)286は、
メモリ112内に位置する完了リスト・ヘッドの物理ア
ドレスを格納するための32ビット・レジスタである。
CQ_REG286は、DBEデバイス206によって構築さ
れた完了リストのヘッドを置く位置の4ビット整合物理
アドレスを用いて、デバイス・ドライバ230によって
初期化される。その後、CQ_REG286は、DBEデバイ
ス206によって維持される。この手順を実装するため
に、DBEデバイス206は、DBEデバイス206が
RESETモードにある場合(EN_REG[0]="1")、このレジスタ
のビット[31:2]へのプロセッサ100の書き込みをラッ
チする。DBEデバイス206は、物理アドレスのビッ
ト[1:0]が"0"を含むことを想定する。
メモリ112内に位置する完了リスト・ヘッドの物理ア
ドレスを格納するための32ビット・レジスタである。
CQ_REG286は、DBEデバイス206によって構築さ
れた完了リストのヘッドを置く位置の4ビット整合物理
アドレスを用いて、デバイス・ドライバ230によって
初期化される。その後、CQ_REG286は、DBEデバイ
ス206によって維持される。この手順を実装するため
に、DBEデバイス206は、DBEデバイス206が
RESETモードにある場合(EN_REG[0]="1")、このレジスタ
のビット[31:2]へのプロセッサ100の書き込みをラッ
チする。DBEデバイス206は、物理アドレスのビッ
ト[1:0]が"0"を含むことを想定する。
【表6】
【0032】ポステッド・キュー・レジスタ(PQ_REG)2
88は、非請求パケット・プール202内の最初のパケ
ット250の32ビット整合物理アドレスを格納するた
めの32ビット・レジスタである。PQ_REG288は、シ
ステムの初期化中に、デバイス・ドライバ230によっ
て初期化される。その後、PQ_REG288は、DBEデバ
イス206によって維持される。この手順を実装するた
めに、DBEデバイス206は、DBEデバイス206
がRESETモードにある場合(EN_REG[0]="1")、このレジス
タのビット[31:5]へのプロセッサ100のライトをラッ
チする。DBEデバイス206は、物理アドレスのビッ
ト[4:0]が"0"を含むことを想定する。DBEデバイスは
このレジスタを読み取り、非請求データをメモリ112
のどこに書き込むかの決定を行う。
88は、非請求パケット・プール202内の最初のパケ
ット250の32ビット整合物理アドレスを格納するた
めの32ビット・レジスタである。PQ_REG288は、シ
ステムの初期化中に、デバイス・ドライバ230によっ
て初期化される。その後、PQ_REG288は、DBEデバ
イス206によって維持される。この手順を実装するた
めに、DBEデバイス206は、DBEデバイス206
がRESETモードにある場合(EN_REG[0]="1")、このレジス
タのビット[31:5]へのプロセッサ100のライトをラッ
チする。DBEデバイス206は、物理アドレスのビッ
ト[4:0]が"0"を含むことを想定する。DBEデバイスは
このレジスタを読み取り、非請求データをメモリ112
のどこに書き込むかの決定を行う。
【表7】
【0033】要求キュー・ヘッド・レジスタ(RQn_REG)
290は、次の要求パケット250がデバイス・ドライ
バ230によってどこに置かれたかの、32ビット整合
物理アドレスを格納するための32ビット・レジスタで
ある。各(RQn_REG)290は、システムの初期化中に、
チャネルnに対応する「ダミー」パケット250の物理
アドレスを用いて、デバイス・ドライバ230によって
初期化される。その後、 RQn_REG 290は、DBEデ
バイス206によって維持される。この手順を実装する
ために、DBEデバイス206は、DBEデバイス20
6がRESETモードにある場合(EN_REG[0]="1")、このレジ
スタのビット[31:5]へのプロセッサ100のライトをラ
ッチする。DBEデバイス206は、物理アドレスのビ
ット[4:0]が"0"を含むことを想定する。DBEデバイス
206は、このレジスタを用いてパケット250をフェ
ッチする。
290は、次の要求パケット250がデバイス・ドライ
バ230によってどこに置かれたかの、32ビット整合
物理アドレスを格納するための32ビット・レジスタで
ある。各(RQn_REG)290は、システムの初期化中に、
チャネルnに対応する「ダミー」パケット250の物理
アドレスを用いて、デバイス・ドライバ230によって
初期化される。その後、 RQn_REG 290は、DBEデ
バイス206によって維持される。この手順を実装する
ために、DBEデバイス206は、DBEデバイス20
6がRESETモードにある場合(EN_REG[0]="1")、このレジ
スタのビット[31:5]へのプロセッサ100のライトをラ
ッチする。DBEデバイス206は、物理アドレスのビ
ット[4:0]が"0"を含むことを想定する。DBEデバイス
206は、このレジスタを用いてパケット250をフェ
ッチする。
【表8】
【0034】ソフトウエア・アーキテクチャ DBEプロトコルの機構を隠すように、1組のルーチン
がホスト・ソフトウエア220に使用可能である。各ル
ーチンは、ホスト・ソフトウエア220によってコール
されるためのエントリポイントを含む。以下に各エント
リポイントを説明する。 DBE_AcknowledgeInterrupt このルーチンは、完了したパケット250のリストを返
し、目標DBEデバイス206における割り込みを承認
する。このルーチンは、デバイス・ドライバの割り込み
サービス・ルーチン(IRS:Interrupt Service Rout
ine)又は遅延プロシージャ・コール(DPC:Deferre
d Procdure Call)によってコールすることができる。
このルーチンをコールして、DBEデバイス・オブジェ
クト・ハンドル内に位置する完了キュー・ヘッドから、
完了リストを除去する。コール元は、同期を与える必要
はない。 DBE_AllocatePacket このルーチンは、請求パケット・プール200のヘッド
Hから最初のパケット250を原子的に除去する。この
ルーチンは、ドライバ230がある処理を目標DBEデ
バイス206に請求したい場合に、当該ドライバによっ
てコールされる。ドライバ230は、パケット250を
割り当て、指定された請求要求のためにそれを満たし、
DBE提出ルーチンの1つを用いてそれを目標DBEデ
バイス206に発行する。このルーチンは、ドライバ2
30による同期を必要としない。
がホスト・ソフトウエア220に使用可能である。各ル
ーチンは、ホスト・ソフトウエア220によってコール
されるためのエントリポイントを含む。以下に各エント
リポイントを説明する。 DBE_AcknowledgeInterrupt このルーチンは、完了したパケット250のリストを返
し、目標DBEデバイス206における割り込みを承認
する。このルーチンは、デバイス・ドライバの割り込み
サービス・ルーチン(IRS:Interrupt Service Rout
ine)又は遅延プロシージャ・コール(DPC:Deferre
d Procdure Call)によってコールすることができる。
このルーチンをコールして、DBEデバイス・オブジェ
クト・ハンドル内に位置する完了キュー・ヘッドから、
完了リストを除去する。コール元は、同期を与える必要
はない。 DBE_AllocatePacket このルーチンは、請求パケット・プール200のヘッド
Hから最初のパケット250を原子的に除去する。この
ルーチンは、ドライバ230がある処理を目標DBEデ
バイス206に請求したい場合に、当該ドライバによっ
てコールされる。ドライバ230は、パケット250を
割り当て、指定された請求要求のためにそれを満たし、
DBE提出ルーチンの1つを用いてそれを目標DBEデ
バイス206に発行する。このルーチンは、ドライバ2
30による同期を必要としない。
【0035】DBE_BeginDirectAccess このルーチンは、DBEデバイス206に対するダイレ
クト・アクセスを、チャネル・パラメータによって指定
された請求要求チャネルに以前に提出されたパケット2
50と同期させる。同期を取るには、ドライバ230が
指定されたチャネル214に対するDBE_EndDirectAcces
sをコールするまで、指定されたチャネル214に対す
るDBEデバイス206上での入力処理を停止する。通
常、ドライバのダイレクト・アクセスは、DBEデバイ
ス230において保留となっている請求パケットとの同
期は必要としない。ドライバ230は、そのダイレクト
・アクセスが、指定された請求要求チャネル214に以
前に提出された未決のパケットの完了に依存する場合
に、このルーチンをコールする。このルーチンは、他の
スレッドが、指定された請求要求チャネル214に要求
を提出するのを禁止する。 DBE_CancelPacket このルーチンは、指定されたパケットに、取り消しのた
めのマークを付ける。このルーチンは、以前に提出した
パケットが目標DBEデバイスによって処理されるべき
でない場合に、ドライバによってコールされる。次に、
DBEドライバ206は、パケットのペイロード254
をバースト・ダウンする(bur st down)ことなく、取り
消されたパケットを完了する。パケットの完了は、パケ
ット250がドライバ230によってどのように提出さ
れたかによって判定される。ドライバ230は、IO取
り消しプロトコルを実装するために、DBEデバイス2
06において保留となっているパケット250を追跡す
る役割を担う。このルーチンは、IO完了のためのマー
クを、指定されたパケットに付ける方法を与えるに過ぎ
ない。
クト・アクセスを、チャネル・パラメータによって指定
された請求要求チャネルに以前に提出されたパケット2
50と同期させる。同期を取るには、ドライバ230が
指定されたチャネル214に対するDBE_EndDirectAcces
sをコールするまで、指定されたチャネル214に対す
るDBEデバイス206上での入力処理を停止する。通
常、ドライバのダイレクト・アクセスは、DBEデバイ
ス230において保留となっている請求パケットとの同
期は必要としない。ドライバ230は、そのダイレクト
・アクセスが、指定された請求要求チャネル214に以
前に提出された未決のパケットの完了に依存する場合
に、このルーチンをコールする。このルーチンは、他の
スレッドが、指定された請求要求チャネル214に要求
を提出するのを禁止する。 DBE_CancelPacket このルーチンは、指定されたパケットに、取り消しのた
めのマークを付ける。このルーチンは、以前に提出した
パケットが目標DBEデバイスによって処理されるべき
でない場合に、ドライバによってコールされる。次に、
DBEドライバ206は、パケットのペイロード254
をバースト・ダウンする(bur st down)ことなく、取り
消されたパケットを完了する。パケットの完了は、パケ
ット250がドライバ230によってどのように提出さ
れたかによって判定される。ドライバ230は、IO取
り消しプロトコルを実装するために、DBEデバイス2
06において保留となっているパケット250を追跡す
る役割を担う。このルーチンは、IO完了のためのマー
クを、指定されたパケットに付ける方法を与えるに過ぎ
ない。
【0036】DBE_CompletionListIsReady このルーチンは、完了リストのために、完了キュー・ヘ
ッドを「のぞき見る」。このルーチンは、完了リスト・
キューから完了リストを除去することはない。このルー
チンは、ドライバ230が、DBEデバイス・オブジェ
クト272内の完了リスト・キュー上の完了リストをチ
ェックするためにコールされる。ドライバ230が完了
キューから完了リストを除去したい場合、DBE_Acknowle
dgeInterrutpルーチンをコールしなければならない。 DBE_DecreasePool このルーチンは、指定されたパケット・プールからパケ
ットを除去する。DBEプロトコルは、2つのパケット
・プールを定義する。1つのプールは、DBEデバイス
に対する請求要求のためのものであり、他方のプール
は、DBEデバイスから受け取った非請求データのため
のものである。 DBE_Deinitialize このルーチンは、目標デバイスのためにDBE_Initialize
によって作成された、全ての割り当てリソースを削除す
る。 DBE_FreePacket このルーチンは、指定されたパケットを、請求パケット
・プールのヘッド上に置く。
ッドを「のぞき見る」。このルーチンは、完了リスト・
キューから完了リストを除去することはない。このルー
チンは、ドライバ230が、DBEデバイス・オブジェ
クト272内の完了リスト・キュー上の完了リストをチ
ェックするためにコールされる。ドライバ230が完了
キューから完了リストを除去したい場合、DBE_Acknowle
dgeInterrutpルーチンをコールしなければならない。 DBE_DecreasePool このルーチンは、指定されたパケット・プールからパケ
ットを除去する。DBEプロトコルは、2つのパケット
・プールを定義する。1つのプールは、DBEデバイス
に対する請求要求のためのものであり、他方のプール
は、DBEデバイスから受け取った非請求データのため
のものである。 DBE_Deinitialize このルーチンは、目標デバイスのためにDBE_Initialize
によって作成された、全ての割り当てリソースを削除す
る。 DBE_FreePacket このルーチンは、指定されたパケットを、請求パケット
・プールのヘッド上に置く。
【0037】DBE_EndDirectAccess このルーチンは、チャネル214によって指定された請
求要求チャネル214に対して、DBE状態機械(マシ
ン)を起動する。 DBE_GetDevice このルーチンは、システム内の全てのDBEデバイスの
マスタ・リストを走査し、指定されたデバイスIDに対
する一致を調べる。このルーチンは、指定されたデバイ
スIDを有するDBEデバイスを作成するのではない。
代わりに、このルーチンは、DBE_Initializeルーチンに
よって既に作成されている、指定されたデバイスIDを
有するDBEデバイスを検索する。このルーチンは、マ
ルチスレッド及びマルチプロセッサ・セーフ(multithre
ad and multiprocessor safe)である。 DBE_GetHwContext このルーチンは、DBEパケット・ヘッダ内の、特定ハ
ードウエア・データ・フィールドの32ビットの内容を
返す。 DBE_GetNextPacketToComplete このルーチンは、完了したパケットのリストにおいて、
次のパケットを読み出し、現パケットを適切なパケット
・プール上に返す。このルーチンは、DBE_AcknowledgeI
nterruptルーチンによって既に除去されている、完了リ
スト上の次のパケットの仮想アドレスを返す。このルー
チンは、マルチスレッド及びマルチプロセッサ・セーフ
である。DBE_AcknowledgeInterruptによって完了リスト
を除去した各実行コンテクスト(execution context)
は、当該リストの独占所有権を有する。
求要求チャネル214に対して、DBE状態機械(マシ
ン)を起動する。 DBE_GetDevice このルーチンは、システム内の全てのDBEデバイスの
マスタ・リストを走査し、指定されたデバイスIDに対
する一致を調べる。このルーチンは、指定されたデバイ
スIDを有するDBEデバイスを作成するのではない。
代わりに、このルーチンは、DBE_Initializeルーチンに
よって既に作成されている、指定されたデバイスIDを
有するDBEデバイスを検索する。このルーチンは、マ
ルチスレッド及びマルチプロセッサ・セーフ(multithre
ad and multiprocessor safe)である。 DBE_GetHwContext このルーチンは、DBEパケット・ヘッダ内の、特定ハ
ードウエア・データ・フィールドの32ビットの内容を
返す。 DBE_GetNextPacketToComplete このルーチンは、完了したパケットのリストにおいて、
次のパケットを読み出し、現パケットを適切なパケット
・プール上に返す。このルーチンは、DBE_AcknowledgeI
nterruptルーチンによって既に除去されている、完了リ
スト上の次のパケットの仮想アドレスを返す。このルー
チンは、マルチスレッド及びマルチプロセッサ・セーフ
である。DBE_AcknowledgeInterruptによって完了リスト
を除去した各実行コンテクスト(execution context)
は、当該リストの独占所有権を有する。
【0038】DBE_GetSwContext このルーチンは、DBEパケット・ヘッダ内の特定ソフ
トウエア・データ・フィールドの32ビットの内容を返
す。 DBE_IncreasePool このルーチンは、パケットを、指定されたパケット・プ
ールに追加する。DBEプロトコルは2つのパケット・
プールを定義する。一方のプールは、DBEデバイスに
対する請求要求のためのものであり、他方のプールは、
DBEデバイスから受け取った非請求データのためのも
のである。 DBE_Initialize このルーチンは、DBEデバイス・オブジェクトを作成
する。このルーチンは、ドライバがDBEデバイス・オ
ブジェクトを作成し初期化するためにコールされる。こ
のルーチンは、DeviceIDによって指定された同一デバイ
スIDを有する別のDBEデバイスが既に存在する場合
は、実行されない(succeed)。 DBE_PacketIsBusy このルーチンは、指定されたパケットが目標DBEデバ
イスにおいて保留となっているか否かについて判定を行
う。このルーチンは、パケット・ヘッダ内のVaLinkフィ
ールド260のビット2の検査を行うのみである。何故
なら、ドライバの完了及び承認を必要とするのは、ポー
ル・パケット及び割り込みパケットだけであるからであ
る。このルーチンは、非同期パケットとして提出された
パケット250にはNULL(ヌル)を返す。
トウエア・データ・フィールドの32ビットの内容を返
す。 DBE_IncreasePool このルーチンは、パケットを、指定されたパケット・プ
ールに追加する。DBEプロトコルは2つのパケット・
プールを定義する。一方のプールは、DBEデバイスに
対する請求要求のためのものであり、他方のプールは、
DBEデバイスから受け取った非請求データのためのも
のである。 DBE_Initialize このルーチンは、DBEデバイス・オブジェクトを作成
する。このルーチンは、ドライバがDBEデバイス・オ
ブジェクトを作成し初期化するためにコールされる。こ
のルーチンは、DeviceIDによって指定された同一デバイ
スIDを有する別のDBEデバイスが既に存在する場合
は、実行されない(succeed)。 DBE_PacketIsBusy このルーチンは、指定されたパケットが目標DBEデバ
イスにおいて保留となっているか否かについて判定を行
う。このルーチンは、パケット・ヘッダ内のVaLinkフィ
ールド260のビット2の検査を行うのみである。何故
なら、ドライバの完了及び承認を必要とするのは、ポー
ル・パケット及び割り込みパケットだけであるからであ
る。このルーチンは、非同期パケットとして提出された
パケット250にはNULL(ヌル)を返す。
【0039】DBE_SetHwContext このルーチンは、DBEパケット・ヘッダ252内の特
定ハードウエア・データ・フィールドの32ビットの内
容をセットする。 DBE_SetSwContext このルーチンは、DBEパケット・ヘッダ252内の特
定ソフトウエア・データ・フィールドの32ビットの内
容をセットする。 DBE_SubmitPacketA このルーチンは、請求パケットを目標DBEデバイス2
06に発行する。このパケットは、DBEデバイス20
6が当該処理を完了したときに、DBEデバイス206
によって自動的に請求パケット・プール200のテール
Tに再循環される。このルーチンは、プロセッサ割り込
みをディスエーブルせず、目標請求要求キューに対する
アクセスの同期を取るために、「スピン」ループを必要
としない。 DBE_SubmitPacketI このルーチンは、請求パケットを目標DBEデバイスに
発行する。このパケットを発行して、目標DBEデバイ
スからのハードウエア割り込みに、このパケットの完了
を承認するように要求する。このルーチンは、この要求
を発行後直ちに、コール元に戻る。ドライバは、目標オ
ペレーティング・システム環境によって定義された標準
的な割り込み処理を通じて、このパケットの完了を承認
しなければならない。このルーチンは、プロセッサ割り
込みをディスエーブルせず、目標請求要求キューに対す
るアクセスの同期を取るために、「スピン」ループを必
要としない。このルーチンは、マルチスレッド及びマル
チプロセッサ・セーフである。
定ハードウエア・データ・フィールドの32ビットの内
容をセットする。 DBE_SetSwContext このルーチンは、DBEパケット・ヘッダ252内の特
定ソフトウエア・データ・フィールドの32ビットの内
容をセットする。 DBE_SubmitPacketA このルーチンは、請求パケットを目標DBEデバイス2
06に発行する。このパケットは、DBEデバイス20
6が当該処理を完了したときに、DBEデバイス206
によって自動的に請求パケット・プール200のテール
Tに再循環される。このルーチンは、プロセッサ割り込
みをディスエーブルせず、目標請求要求キューに対する
アクセスの同期を取るために、「スピン」ループを必要
としない。 DBE_SubmitPacketI このルーチンは、請求パケットを目標DBEデバイスに
発行する。このパケットを発行して、目標DBEデバイ
スからのハードウエア割り込みに、このパケットの完了
を承認するように要求する。このルーチンは、この要求
を発行後直ちに、コール元に戻る。ドライバは、目標オ
ペレーティング・システム環境によって定義された標準
的な割り込み処理を通じて、このパケットの完了を承認
しなければならない。このルーチンは、プロセッサ割り
込みをディスエーブルせず、目標請求要求キューに対す
るアクセスの同期を取るために、「スピン」ループを必
要としない。このルーチンは、マルチスレッド及びマル
チプロセッサ・セーフである。
【0040】DBE_SubmitPacketP このルーチンは、請求パケットを目標DBEデバイスに
発行する。このパケットは、目標DBEデバイスに対す
る「ポール」要求として発行される。このルーチンは、
この要求を発行後直ちにコール元に戻る。ドライバは、
DBE_PacketIsBusyルーチンを用いて、このパケットの完
了を承認しなければならない。ドライバは、何らかのI
O完了処理をパケット上で実行した後、DBE_FreePacket
を用いて、当該パケットを解放しなければならない。こ
のルーチンは、プロセッサ割り込みをディスエーブルせ
ず、目標請求要求キューに対するアクセスの同期を取る
ために、「スピン」ループを必要としない。 DBE_SubmitPacketPdeferred このルーチンは、請求パケットを、目標DBEデバイス
にポール・パケットとして発行する。このルーチンは、
直ちにコール元に戻り、DBEデバイスとプロセッサと
の間の処理の重複を最大化する。このルーチンは、目標
DBEデバイスによるこのパケットの提出後直ちにコー
ル元に戻る。DBEデバイスは、パケット250のVaLi
nkフィールド内の「提出」ビット(ビット[2:1])をク
リアすることによって、完了を指示する。ドライバは、
何らかのIO完了をパケット上で実行した後は、DBE_Fr
eePacketを用いて当該パケットを解放しなければならな
い。このルーチンは、プロセッサ割り込みをディスエー
ブルせず、目標請求要求キューに対するアクセスの同期
を取るために、「スピン」ループを必要としない。上述
のエントリポイントは、概略的に、以下のカテゴリの1
つに該当する。即ち、初期化/初期化解除、パケット提
出、パケット完了、同期ダイレクト・アクセス、パケッ
ト取り消し、及びパケット・プール増減である。
発行する。このパケットは、目標DBEデバイスに対す
る「ポール」要求として発行される。このルーチンは、
この要求を発行後直ちにコール元に戻る。ドライバは、
DBE_PacketIsBusyルーチンを用いて、このパケットの完
了を承認しなければならない。ドライバは、何らかのI
O完了処理をパケット上で実行した後、DBE_FreePacket
を用いて、当該パケットを解放しなければならない。こ
のルーチンは、プロセッサ割り込みをディスエーブルせ
ず、目標請求要求キューに対するアクセスの同期を取る
ために、「スピン」ループを必要としない。 DBE_SubmitPacketPdeferred このルーチンは、請求パケットを、目標DBEデバイス
にポール・パケットとして発行する。このルーチンは、
直ちにコール元に戻り、DBEデバイスとプロセッサと
の間の処理の重複を最大化する。このルーチンは、目標
DBEデバイスによるこのパケットの提出後直ちにコー
ル元に戻る。DBEデバイスは、パケット250のVaLi
nkフィールド内の「提出」ビット(ビット[2:1])をク
リアすることによって、完了を指示する。ドライバは、
何らかのIO完了をパケット上で実行した後は、DBE_Fr
eePacketを用いて当該パケットを解放しなければならな
い。このルーチンは、プロセッサ割り込みをディスエー
ブルせず、目標請求要求キューに対するアクセスの同期
を取るために、「スピン」ループを必要としない。上述
のエントリポイントは、概略的に、以下のカテゴリの1
つに該当する。即ち、初期化/初期化解除、パケット提
出、パケット完了、同期ダイレクト・アクセス、パケッ
ト取り消し、及びパケット・プール増減である。
【0041】初期化/初期化解除 初期化/初期化解除ルーチンは、ホスト・ソフトウエア
が、DBEハードウエア及びソフトウエア・リソースの
初期化及び初期化解除を実行する際に用いられる。この
カテゴリは、DBE_Initialize, DBE_Deinitialize及びD
BE_GetDeviceという3つのルーチンを含む。ホスト・ソ
フトウエアは、その初期化フェーズ中にDBE_Initialize
をコールし、DBEデバイス・オブジェクト272のハ
ンドルを作成し、適切なアドレス情報を用いてDBEハ
ードウエア・レジスタ280〜292を設定し、自動化
DMAを容易にする。ホスト・ソフトウエア220が、
システムのリブート又はOS222による動的アンロー
ディング(dynamic unloading)によって再初期化される
場合、DBE_Initializeルーチンを再度コールし、目標D
BEデバイス206に対する新たな接続を作成し、新た
なアドレス情報を用いて、DBEハードウエア・レジス
タ280〜292を再初期化しなければならない。DBE_
Deinitializeルーチンは、ホスト・ソフトウエア220
が、目標DBEデバイス206のために割り当てられた
メモリ・リソースを一掃し、目標DBEデバイス206
をRESETモードに設定する際に用いられる。DBEソフトウ
エア・アーキテクチャは、システム全体で作成されたD
BEデバイス・オブジェクト272全てを追跡する。ホ
スト・ソフトウエア220は、DBE_GetDeviceをコール
することによって、他のソフトウエア・エンティティが
既に初期化したDBEデバイス206に対する接続を確
立することができる。ホスト・ソフトウエア220は、
その初期化コンテクスト内からのこのルーチンのコール
に限定されるのではない。DBE_GetDeviceは、いずれの
実行コンテクスト内からでもコールすることができる。
が、DBEハードウエア及びソフトウエア・リソースの
初期化及び初期化解除を実行する際に用いられる。この
カテゴリは、DBE_Initialize, DBE_Deinitialize及びD
BE_GetDeviceという3つのルーチンを含む。ホスト・ソ
フトウエアは、その初期化フェーズ中にDBE_Initialize
をコールし、DBEデバイス・オブジェクト272のハ
ンドルを作成し、適切なアドレス情報を用いてDBEハ
ードウエア・レジスタ280〜292を設定し、自動化
DMAを容易にする。ホスト・ソフトウエア220が、
システムのリブート又はOS222による動的アンロー
ディング(dynamic unloading)によって再初期化される
場合、DBE_Initializeルーチンを再度コールし、目標D
BEデバイス206に対する新たな接続を作成し、新た
なアドレス情報を用いて、DBEハードウエア・レジス
タ280〜292を再初期化しなければならない。DBE_
Deinitializeルーチンは、ホスト・ソフトウエア220
が、目標DBEデバイス206のために割り当てられた
メモリ・リソースを一掃し、目標DBEデバイス206
をRESETモードに設定する際に用いられる。DBEソフトウ
エア・アーキテクチャは、システム全体で作成されたD
BEデバイス・オブジェクト272全てを追跡する。ホ
スト・ソフトウエア220は、DBE_GetDeviceをコール
することによって、他のソフトウエア・エンティティが
既に初期化したDBEデバイス206に対する接続を確
立することができる。ホスト・ソフトウエア220は、
その初期化コンテクスト内からのこのルーチンのコール
に限定されるのではない。DBE_GetDeviceは、いずれの
実行コンテクスト内からでもコールすることができる。
【0042】パケット提出 パケット提出ルーチンは、ホスト・ソフトウエアが、請
求パケットの割り当て、及びDBEデバイス206への
提出を実行する際に用いられる。このカテゴリは、DBE_
AllocatePacket, DBE_SubmitPacketA, DBE_SubmitPack
etP, DBE_SubmitPacketPdeferred、及びDBE_SubmitPack
etIの5つのルーチンを含む。ホスト・ソフトウエア2
20が、請求要求をDBEデバイス206に提出可能と
なる前に、請求パケット・プール200から請求パケッ
ト250を割り当てなければならない。ホスト・ソフト
ウエア220は、DBE_AllocatePacketをコールし、使用
可能なパケット250を請求パケット・プール200か
ら除去する。ソフトウエアは、パケット250が使用可
能となるまで、リトライ・カウントを指定するか、ある
いはいつまでも待つことができる。DBE_AllocatePacket
ルーチンは、アプリケーション/デバイスが定義するい
ずれの方法でも使用可能な、空パケットのペイロード・
データ・エリアへのポインタを返す。一旦空パケット2
50が割り当てられたなら、ホスト・ソフトウエア22
0は、指定された請求要求チャネル214への請求トラ
ンザクション(solicited transaction)を実行するため
に必要な関連情報で、パケットのペイロード・データ・
エリア254を満たす。ホスト・ソフトウエア220
は、非同期、ポール、又は割り込みの3つの方法の内の
1つで、パケット250をDBEデバイス206に発行
する。
求パケットの割り当て、及びDBEデバイス206への
提出を実行する際に用いられる。このカテゴリは、DBE_
AllocatePacket, DBE_SubmitPacketA, DBE_SubmitPack
etP, DBE_SubmitPacketPdeferred、及びDBE_SubmitPack
etIの5つのルーチンを含む。ホスト・ソフトウエア2
20が、請求要求をDBEデバイス206に提出可能と
なる前に、請求パケット・プール200から請求パケッ
ト250を割り当てなければならない。ホスト・ソフト
ウエア220は、DBE_AllocatePacketをコールし、使用
可能なパケット250を請求パケット・プール200か
ら除去する。ソフトウエアは、パケット250が使用可
能となるまで、リトライ・カウントを指定するか、ある
いはいつまでも待つことができる。DBE_AllocatePacket
ルーチンは、アプリケーション/デバイスが定義するい
ずれの方法でも使用可能な、空パケットのペイロード・
データ・エリアへのポインタを返す。一旦空パケット2
50が割り当てられたなら、ホスト・ソフトウエア22
0は、指定された請求要求チャネル214への請求トラ
ンザクション(solicited transaction)を実行するため
に必要な関連情報で、パケットのペイロード・データ・
エリア254を満たす。ホスト・ソフトウエア220
は、非同期、ポール、又は割り込みの3つの方法の内の
1つで、パケット250をDBEデバイス206に発行
する。
【0043】非同期パケットは、DBEデバイス206
からの完了通知を必要としない。ホスト・ソフトウエア
220は、ソフトウエアが特定の処理に対して完了通知
を必要としない場合、即ち、グラフィック処理が要求さ
れたような場合に、非同期パケット250を提出する。
DBEデバイス206は、パケットの完了時に、請求パ
ケット・プール200のテールに、自動的に非同期パケ
ットを置く。ホスト・ソフトウエア220は、DBE_Subm
itPacketAルーチンを用いて、非同期パケットを発行す
る。典型的な非同期処理は、グラフィックス・デバイス
122によって実行される、スクリーン−スクリーン間
BLT(screen- screen- BLT)である。ポール要求は、
ドライバ230がI/Oデバイス118に処理の完了を
指示するように要求したときに、デバイス・ドライバ2
30によって発行されるが、ハードウエア割り込みの形
態ではない。デバイス・ドライバ230は、 パケット
・ヘッダ252内のキャッシュに基づくフィールドにポ
ールすることによって、I/Oデバイス118が処理を
完了するのを待つ。ポール・パケットは、パケット・ヘ
ッダ252内のビットをクリアすることによって、DB
Eデバイス206からの完了通知を要求する。ホスト・
ソフトウエア220は、パケット250の完了時にDB
Eデバイス206が提出ビット(Va+Flagsフィールドの
ビット[2:1])のビット位置に"00"を書き込むまで、パケ
ット・ヘッダ252内の提出ビット上で「スピン」即ち
ポールする。ドライバ230は、修正されたデータによ
る「無効化」サイクルがキャッシュ・ラインを更新する
まで、そのキャッシュ内においてスピンを行う。これに
よって、I/Oデバイス118に直接ポールし、プロセ
ッサ100をホスト・バス102から分離しておく必要
性がなくなる。
からの完了通知を必要としない。ホスト・ソフトウエア
220は、ソフトウエアが特定の処理に対して完了通知
を必要としない場合、即ち、グラフィック処理が要求さ
れたような場合に、非同期パケット250を提出する。
DBEデバイス206は、パケットの完了時に、請求パ
ケット・プール200のテールに、自動的に非同期パケ
ットを置く。ホスト・ソフトウエア220は、DBE_Subm
itPacketAルーチンを用いて、非同期パケットを発行す
る。典型的な非同期処理は、グラフィックス・デバイス
122によって実行される、スクリーン−スクリーン間
BLT(screen- screen- BLT)である。ポール要求は、
ドライバ230がI/Oデバイス118に処理の完了を
指示するように要求したときに、デバイス・ドライバ2
30によって発行されるが、ハードウエア割り込みの形
態ではない。デバイス・ドライバ230は、 パケット
・ヘッダ252内のキャッシュに基づくフィールドにポ
ールすることによって、I/Oデバイス118が処理を
完了するのを待つ。ポール・パケットは、パケット・ヘ
ッダ252内のビットをクリアすることによって、DB
Eデバイス206からの完了通知を要求する。ホスト・
ソフトウエア220は、パケット250の完了時にDB
Eデバイス206が提出ビット(Va+Flagsフィールドの
ビット[2:1])のビット位置に"00"を書き込むまで、パケ
ット・ヘッダ252内の提出ビット上で「スピン」即ち
ポールする。ドライバ230は、修正されたデータによ
る「無効化」サイクルがキャッシュ・ラインを更新する
まで、そのキャッシュ内においてスピンを行う。これに
よって、I/Oデバイス118に直接ポールし、プロセ
ッサ100をホスト・バス102から分離しておく必要
性がなくなる。
【0044】ホスト・ソフトウエア220は、DBE_Subm
itPacketP及びDBE_Submi tPacketPdeferredルーチンを
用いて、ポール・パケットを発行する。DBE_SublitPack
etPルーチンは、DBEデバイス206がパケット・ヘ
ッダ252内の提出ビットをクリアするまで、そのビッ
ト上での「スピン」動作を与える。DBE_SubmitPacketPd
eferredルーチンは、要求をDBEデバイス206に提
出した後直ちに戻る。ホスト・ソフトウエア220は、
パケット250がDBEデバイス206によって処理さ
れている間、他のタスクの処理を続けることができる。
割り込み要求は、ホスト・ソフトウエア220がハード
ウエア割り込みによる完了通知を要求するときに、デバ
イス・ドライバ230によって発行される。これは、よ
り古典的なドライバ230とその目標PCIバス・マス
タ118との間の通信方法である。DBEデバイス20
6は、割り込み要求を完了する際、完了したパケットの
仮想アドレスを、システム・メモリ内の既知のメモリ・
キューに書き込み、ハードウエア割り込みをアサートす
る。DBEデバイス206は、ドライバ230が未だ直
前の完了に対応していない場合、要求を完了し続けるこ
とができる。この場合、DBEデバイス206は、シス
テム・メモリ内に完了パケットのリストを構築し、完了
キューが他の完了リストを受け取る準備ができたことを
I/Oデバイス118が示すまで、他のハードウエア割
り込みをアサートしない。ホスト・ソフトウエア220
は、DBE_SubmitPacketIルーチンをコールすることによ
って、割り込みパケットを発行する。このルーチンは、
パケット250の提出時に、直ちにコール元に戻る。ホ
スト・ソフトウエア220は、要求された割り込みイベ
ントの到着まで、実行コンテクストの「ポスティング(p
osting)」を扱う。
itPacketP及びDBE_Submi tPacketPdeferredルーチンを
用いて、ポール・パケットを発行する。DBE_SublitPack
etPルーチンは、DBEデバイス206がパケット・ヘ
ッダ252内の提出ビットをクリアするまで、そのビッ
ト上での「スピン」動作を与える。DBE_SubmitPacketPd
eferredルーチンは、要求をDBEデバイス206に提
出した後直ちに戻る。ホスト・ソフトウエア220は、
パケット250がDBEデバイス206によって処理さ
れている間、他のタスクの処理を続けることができる。
割り込み要求は、ホスト・ソフトウエア220がハード
ウエア割り込みによる完了通知を要求するときに、デバ
イス・ドライバ230によって発行される。これは、よ
り古典的なドライバ230とその目標PCIバス・マス
タ118との間の通信方法である。DBEデバイス20
6は、割り込み要求を完了する際、完了したパケットの
仮想アドレスを、システム・メモリ内の既知のメモリ・
キューに書き込み、ハードウエア割り込みをアサートす
る。DBEデバイス206は、ドライバ230が未だ直
前の完了に対応していない場合、要求を完了し続けるこ
とができる。この場合、DBEデバイス206は、シス
テム・メモリ内に完了パケットのリストを構築し、完了
キューが他の完了リストを受け取る準備ができたことを
I/Oデバイス118が示すまで、他のハードウエア割
り込みをアサートしない。ホスト・ソフトウエア220
は、DBE_SubmitPacketIルーチンをコールすることによ
って、割り込みパケットを発行する。このルーチンは、
パケット250の提出時に、直ちにコール元に戻る。ホ
スト・ソフトウエア220は、要求された割り込みイベ
ントの到着まで、実行コンテクストの「ポスティング(p
osting)」を扱う。
【0045】パケット完了 パケット完了ルーチンは、ホスト・ソフトウエアが、D
BEデバイス206に提出されたパケット250上で完
了処理を実行する際に用いられる。このカテゴリは、DB
E_PacketIsBusy, DBE_FreePacket, DBE_CompletionLi
stIsReady, DBE_AcknowledgeInterrupt, 及びDBE_Get
NextPacketToCompleteという5つのルーチンを含む。非
同期で提出された請求パケット250は、ホスト・ソフ
トウエア220による完了処理を要求しない。DBEデ
バイス206は、完了した非同期パケット250を自動
的に「解放」し、請求パケット・プール200のテール
Tに配する。ポール・パケット250は、何らかの完了
処理がホスト・ソフトウエア220によって実行された
後、請求パケット・プール200上に返されなければな
らない。ソフトウエア220は、DBE_FreePacketをコー
ルし、完了したパケット250を、請求パケット・プー
ル200のヘッド上に置く。DBE_SubmitPacketPdeferre
dルーチンによって発行されたパケット250は、DBE_F
reePacketを用いて請求パケット・プール200のヘッ
ド上にパケット250を置く前に、最初にDBD_PacketIs
Busyルーチンをコールしなければならない。
BEデバイス206に提出されたパケット250上で完
了処理を実行する際に用いられる。このカテゴリは、DB
E_PacketIsBusy, DBE_FreePacket, DBE_CompletionLi
stIsReady, DBE_AcknowledgeInterrupt, 及びDBE_Get
NextPacketToCompleteという5つのルーチンを含む。非
同期で提出された請求パケット250は、ホスト・ソフ
トウエア220による完了処理を要求しない。DBEデ
バイス206は、完了した非同期パケット250を自動
的に「解放」し、請求パケット・プール200のテール
Tに配する。ポール・パケット250は、何らかの完了
処理がホスト・ソフトウエア220によって実行された
後、請求パケット・プール200上に返されなければな
らない。ソフトウエア220は、DBE_FreePacketをコー
ルし、完了したパケット250を、請求パケット・プー
ル200のヘッド上に置く。DBE_SubmitPacketPdeferre
dルーチンによって発行されたパケット250は、DBE_F
reePacketを用いて請求パケット・プール200のヘッ
ド上にパケット250を置く前に、最初にDBD_PacketIs
Busyルーチンをコールしなければならない。
【0046】DBEデバイス206は、割り込みパケッ
ト250を完了する際に、パケット完了リストを構築
し、このリストの先頭を、DBEデバイス・オブジェク
ト272内に位置する完了キュー・ヘッド内に置く。D
BEデバイス206は、完了リストを完了キュー・ヘッ
ド内に置いた後、プロセッサ100へのハードウエア割
り込みをアサートして、ホスト・プロセッサにリストを
通知する。ホスト・ソフトウエアは、完了キュー・ホス
トを「覗いて」、DDBE_CompletionListIsReadyをコー
ルすることにより、完了キュー・ヘッドからリストを実
際に除去することなく、BEデバイス206が実際にそ
の割り込みをアサートしているか否か確認することがで
きる。DBE_AcknowledgeInterruptルーチンは、ソフトウ
エア220が、完了キュー・ヘッドから完了リストを除
去し、DBEデバイス割り込みを承認する際にコールさ
れる。一旦このリストが除去されると、完了リストの終
端に到達するまで、後続のDBE_GetNextPacketToComplet
eへのコールによって、「検索(walk)」することができ
る。DBE_GetNextPacketToCompleteは、次のパケットを
抽出しそれから完了させた後、直ちに、現パケットを請
求パケット・プールのヘッド上に置くことによって、そ
れを「解放」することができる。
ト250を完了する際に、パケット完了リストを構築
し、このリストの先頭を、DBEデバイス・オブジェク
ト272内に位置する完了キュー・ヘッド内に置く。D
BEデバイス206は、完了リストを完了キュー・ヘッ
ド内に置いた後、プロセッサ100へのハードウエア割
り込みをアサートして、ホスト・プロセッサにリストを
通知する。ホスト・ソフトウエアは、完了キュー・ホス
トを「覗いて」、DDBE_CompletionListIsReadyをコー
ルすることにより、完了キュー・ヘッドからリストを実
際に除去することなく、BEデバイス206が実際にそ
の割り込みをアサートしているか否か確認することがで
きる。DBE_AcknowledgeInterruptルーチンは、ソフトウ
エア220が、完了キュー・ヘッドから完了リストを除
去し、DBEデバイス割り込みを承認する際にコールさ
れる。一旦このリストが除去されると、完了リストの終
端に到達するまで、後続のDBE_GetNextPacketToComplet
eへのコールによって、「検索(walk)」することができ
る。DBE_GetNextPacketToCompleteは、次のパケットを
抽出しそれから完了させた後、直ちに、現パケットを請
求パケット・プールのヘッド上に置くことによって、そ
れを「解放」することができる。
【0047】同期ダイレクト・アクセス 同期ダイレクト・アクセスは、プロセッサ100が共有
DBEハードウエア・リソースに対するダイレクト・ア
クセスを要求する場合に有用である。ホスト・ソフトウ
エア220は、DBE_BeginDirectAccessをコールして、
ポール・パケット250を提出し、指定されたチャネル
(群)に対するDBEデバイス206に、後続のパケッ
ト250の処理を停止させる。これによって、以前に提
出されたパケットの処理とダイレクト・アクセス処理と
の間の接続がなくでも、ホスト・ソフトウエア220の
目標デバイスのハードウエア・リソースに対するダイレ
クト・アクセスが可能となる。ホスト・ソフトウエア2
20は、DBE_EndDire ctAccessルーチンをコールするこ
とによって、指定されたチャネル(群)に対する同期ダ
イレクト・アクセスを終了する。
DBEハードウエア・リソースに対するダイレクト・ア
クセスを要求する場合に有用である。ホスト・ソフトウ
エア220は、DBE_BeginDirectAccessをコールして、
ポール・パケット250を提出し、指定されたチャネル
(群)に対するDBEデバイス206に、後続のパケッ
ト250の処理を停止させる。これによって、以前に提
出されたパケットの処理とダイレクト・アクセス処理と
の間の接続がなくでも、ホスト・ソフトウエア220の
目標デバイスのハードウエア・リソースに対するダイレ
クト・アクセスが可能となる。ホスト・ソフトウエア2
20は、DBE_EndDire ctAccessルーチンをコールするこ
とによって、指定されたチャネル(群)に対する同期ダ
イレクト・アクセスを終了する。
【0048】パケット取り消し DBEデバイス206に発行され、DBEデバイス20
6による完了が未だ保留中のパケット250は、ホスト
・ソフトウエアがDBE_CancelPacketをコールすることに
よって取り消すことができる。DBEデバイス206
は、パケット250がVaフィールド270においてIO
取り消しのためのマークが付けられている場合、パケッ
トのペイロード254をバーストしてはならない。取り
消されたパケット250は、当該パケット250がどの
ように提出されたかに応じて、直ちにDBEデバイス2
06によって完了される。
6による完了が未だ保留中のパケット250は、ホスト
・ソフトウエアがDBE_CancelPacketをコールすることに
よって取り消すことができる。DBEデバイス206
は、パケット250がVaフィールド270においてIO
取り消しのためのマークが付けられている場合、パケッ
トのペイロード254をバーストしてはならない。取り
消されたパケット250は、当該パケット250がどの
ように提出されたかに応じて、直ちにDBEデバイス2
06によって完了される。
【0049】パケット・プールの増減 ホスト・ソフトウエア220は、より多くのパケット2
50を請求パケット・プール200及び非請求パケット
・プール202に追加することによって、それ自体と目
標DBEデバイス206との間の切り離し(decoupling)
量を増加させることができる。ソフトウエア220は、
DBE_IncreasePoolをコールし、指定されたプールにパケ
ット250を更に追加する。ソフトウエア220が、パ
ケット・プール上に過剰に多いパケット250があり、
いくつかのパケット250をOSのメモリ・マネージャ
に戻せることを発見した場合、ホスト・ソフトウエア2
20はDBE_DecreasePoolをコールし、指定されたパケッ
ト・プールからパケット250を除去することができ
る。
50を請求パケット・プール200及び非請求パケット
・プール202に追加することによって、それ自体と目
標DBEデバイス206との間の切り離し(decoupling)
量を増加させることができる。ソフトウエア220は、
DBE_IncreasePoolをコールし、指定されたプールにパケ
ット250を更に追加する。ソフトウエア220が、パ
ケット・プール上に過剰に多いパケット250があり、
いくつかのパケット250をOSのメモリ・マネージャ
に戻せることを発見した場合、ホスト・ソフトウエア2
20はDBE_DecreasePoolをコールし、指定されたパケッ
ト・プールからパケット250を除去することができ
る。
【0050】DBEアーキテクチャ 図6のA及び図6のBを参照すると、分散型バースト・
エンジン(DBE)206に対する少なくとも2つの選
択可能な位置が示されている。図6のAでは、多数のP
CIバス・マスタ118がDBEインターフェース20
6を含み、PCIバス・マスタ118とメモリ112と
の間で効率的にパケットをバーストする。図6のBで
は、ホスト−PCI間ブリッジ106aがDBE206
を含み、ユニバーサル・シリアル・バスのホスト・コン
トローラ又はファイアウエア・コントローラのようなI
/Oデバイス208とメモリ112との間で、パケット
・アドレスを受け渡しを行う。図6のBの更に別の変形
として、図6のCは、ホスト・ブリッジ210が、1つ
以上のプロセッサ100と通信するためのホスト・バス
102,メモリ112と通信するためのメモリ・バス2
12、及び周辺機器と通信するためのPCIバス114
に取り付けられた、コンピュータ・システムを示す。こ
のアーキテクチャの更なる詳細については、Mark W. We
lker(マークW.ウェルカー), TomasJ. Bonola(トマ
スJ.ボノーラ)及びMichael P. Moriarty(マイケル
P.モリアティ)による"MULTIMEDIA COMPUTER ARCHITE
CTURE'"(マルチメディア・コンピュータ・アーキテク
チャ)と題し、本願と同時に出願された米国特許出願第
号を引用する。その内容は、この言及により本願にも含
まれるものとする。ホスト・ブリッジ210内には、ユ
ニバーサル・シリアル・バス(USB)、ファイアウエ
アとしても知られているI.E.E.E.(電気電子学
会)1394、又は小型コンピュータ・システム・イン
ターフェース(SCSI)というような、I/Oチャネ
ル208がある。I/Oチャネル208は、分散型バー
スト・エンジン206に接続されている。この実施形態
は、図6のA及び図6のBの実施形態とは異なる。何故
なら、DBE206は一層緊密にメモリ112に結合さ
れているからである。これによって、DBEは、I/O
デバイス208に対してパケットをバーストする代わり
に、パケット・アドレスをI/Oデバイス208に渡す
ことが可能となる。このようにして、I/Oデバイス2
08は、直接メモリ112からのパケット上で処理を行
うことができる。PCIバス114を通じてパケットを
バーストする際に伴うレイテンシイが排除されるので、
これは図6のA及び図6のBの結合が緩いDBEに対す
る利点である。このように、DBEデバイス206は、
種々の状況に対する適合性が非常に高い。
エンジン(DBE)206に対する少なくとも2つの選
択可能な位置が示されている。図6のAでは、多数のP
CIバス・マスタ118がDBEインターフェース20
6を含み、PCIバス・マスタ118とメモリ112と
の間で効率的にパケットをバーストする。図6のBで
は、ホスト−PCI間ブリッジ106aがDBE206
を含み、ユニバーサル・シリアル・バスのホスト・コン
トローラ又はファイアウエア・コントローラのようなI
/Oデバイス208とメモリ112との間で、パケット
・アドレスを受け渡しを行う。図6のBの更に別の変形
として、図6のCは、ホスト・ブリッジ210が、1つ
以上のプロセッサ100と通信するためのホスト・バス
102,メモリ112と通信するためのメモリ・バス2
12、及び周辺機器と通信するためのPCIバス114
に取り付けられた、コンピュータ・システムを示す。こ
のアーキテクチャの更なる詳細については、Mark W. We
lker(マークW.ウェルカー), TomasJ. Bonola(トマ
スJ.ボノーラ)及びMichael P. Moriarty(マイケル
P.モリアティ)による"MULTIMEDIA COMPUTER ARCHITE
CTURE'"(マルチメディア・コンピュータ・アーキテク
チャ)と題し、本願と同時に出願された米国特許出願第
号を引用する。その内容は、この言及により本願にも含
まれるものとする。ホスト・ブリッジ210内には、ユ
ニバーサル・シリアル・バス(USB)、ファイアウエ
アとしても知られているI.E.E.E.(電気電子学
会)1394、又は小型コンピュータ・システム・イン
ターフェース(SCSI)というような、I/Oチャネ
ル208がある。I/Oチャネル208は、分散型バー
スト・エンジン206に接続されている。この実施形態
は、図6のA及び図6のBの実施形態とは異なる。何故
なら、DBE206は一層緊密にメモリ112に結合さ
れているからである。これによって、DBEは、I/O
デバイス208に対してパケットをバーストする代わり
に、パケット・アドレスをI/Oデバイス208に渡す
ことが可能となる。このようにして、I/Oデバイス2
08は、直接メモリ112からのパケット上で処理を行
うことができる。PCIバス114を通じてパケットを
バーストする際に伴うレイテンシイが排除されるので、
これは図6のA及び図6のBの結合が緩いDBEに対す
る利点である。このように、DBEデバイス206は、
種々の状況に対する適合性が非常に高い。
【0051】分散型バースト・エンジン(DBE) 図7を参照すると、DBEデバイス206及びI/Oデ
バイス208を含む、PCIバス・マスタ118のブロ
ック図が示されている。DBEデバイス206は、DB
Eデバイス206とメモリ112との間でPCIバス1
14を通じてデータ・パケット250を交換するため
の、バス・マスタ・インターフェース(I/F)300
を含む。あるいは、DBE206は、EISAバス又は
他のいずれかの所望のバスに対するバス・マスタ・イン
ターフェースを有することも可能である。また、DBE
デバイス206は、あるフロント・エンド状態機械30
2〜306とあるバック・エンド状態機械308〜31
0との間に結合された3つのバッファ312〜316も
含む。これら3つのバッファは、要求キュー・バッファ
(RQn_BFR)312、完了キュー・バッファ(CQ_BRF)31
4、及びポステッド・キュー・バッファ(PQ_BFR)316
である。フロント・エンドの目的は、要求キュー・バッ
ファ312及びポステッド・キュー・バッファ316を
満杯に保持し、完了キュー・バッファ314を空に保持
することである。バック・エンドの目的は、要求キュー
・バッファ312及びポステッド・キュー・バッファ3
16からパケット・アドレス及びデータ情報を引き出
し、パケットを処理し、完了したパケットをプロセッサ
100に戻すことである。
バイス208を含む、PCIバス・マスタ118のブロ
ック図が示されている。DBEデバイス206は、DB
Eデバイス206とメモリ112との間でPCIバス1
14を通じてデータ・パケット250を交換するため
の、バス・マスタ・インターフェース(I/F)300
を含む。あるいは、DBE206は、EISAバス又は
他のいずれかの所望のバスに対するバス・マスタ・イン
ターフェースを有することも可能である。また、DBE
デバイス206は、あるフロント・エンド状態機械30
2〜306とあるバック・エンド状態機械308〜31
0との間に結合された3つのバッファ312〜316も
含む。これら3つのバッファは、要求キュー・バッファ
(RQn_BFR)312、完了キュー・バッファ(CQ_BRF)31
4、及びポステッド・キュー・バッファ(PQ_BFR)316
である。フロント・エンドの目的は、要求キュー・バッ
ファ312及びポステッド・キュー・バッファ316を
満杯に保持し、完了キュー・バッファ314を空に保持
することである。バック・エンドの目的は、要求キュー
・バッファ312及びポステッド・キュー・バッファ3
16からパケット・アドレス及びデータ情報を引き出
し、パケットを処理し、完了したパケットをプロセッサ
100に戻すことである。
【0052】要求キュー・バッファ312は、請求され
た要求を整列するための先入れ先出し(FIFO)バッ
ファである。供給キュー・バッファ312は、I/Oデ
バイス208が対応するチャネル数214に応じた、並
列なn個のバッファからなる。好ましくは、要求キュー
・フロント・エンド状態機械302及び要求キュー・バ
ック・エンド状態機械308は、要求キュー・バッファ
312全ての管理を担うが、状態機械の別個の集合を、
各要求キュー・バッファ312毎に用いることも可能で
あると考えられる。簡略化のために、要求キュー・バッ
ファ312は、ここでは単一のバッファとして扱う。完
了キュー・バッファ314は、完了したパケットを整列
するためのFIFOである。ポステッド・キュー・バッ
ファ316は、非請求要求を整列するためのFIFOで
ある。バッファ312〜316は、キューのデータ全体
(キュー274〜278)の一部分のみを収容する場合
もあるので、バッファ312〜316はそれらの各キュ
ー274〜278のサブセットと見なされる。バッファ
312〜316は、典型的にバス調定の結果として起こ
るPCIバス114のレイテンシから、I/Oデバイス
208を切り離す。この結果、以前に得られたものより
も、I/O性能が向上する。
た要求を整列するための先入れ先出し(FIFO)バッ
ファである。供給キュー・バッファ312は、I/Oデ
バイス208が対応するチャネル数214に応じた、並
列なn個のバッファからなる。好ましくは、要求キュー
・フロント・エンド状態機械302及び要求キュー・バ
ック・エンド状態機械308は、要求キュー・バッファ
312全ての管理を担うが、状態機械の別個の集合を、
各要求キュー・バッファ312毎に用いることも可能で
あると考えられる。簡略化のために、要求キュー・バッ
ファ312は、ここでは単一のバッファとして扱う。完
了キュー・バッファ314は、完了したパケットを整列
するためのFIFOである。ポステッド・キュー・バッ
ファ316は、非請求要求を整列するためのFIFOで
ある。バッファ312〜316は、キューのデータ全体
(キュー274〜278)の一部分のみを収容する場合
もあるので、バッファ312〜316はそれらの各キュ
ー274〜278のサブセットと見なされる。バッファ
312〜316は、典型的にバス調定の結果として起こ
るPCIバス114のレイテンシから、I/Oデバイス
208を切り離す。この結果、以前に得られたものより
も、I/O性能が向上する。
【0053】ここで、図示するDBEデバイス206
は、単一ストリームDBEデバイスであることを注記し
ておく。DBEデバイス206が多機能周辺機器に対応
することを要求される場合、多数の状態機械の集合を並
列に実装し、単一のI/Oデバイス内に結合されている
各機能毎に対応することができる。単一の状態機械の集
合が、対応するI/Oデバイス208に対する全てのチ
ャネル214を処理する。フロント・エンド状態機械
は、要求キュー・フロント・エンド状態機械(RQSMFEND)
302、ポステッド・キュー・フロント・エンド状態機
械(PQSMFEND)306、及び完了キュー・フロント・エン
ド状態機械(CQSM)304を含む。要求キュー・フロント
・エンド状態機械302は、デバイス・ドライバ230
によって要求キュー274上に置かれたパケット250
を処理し、要求キュー・バッファ312に供給する役割
を担う。ポステッド・キュー・フロント・エンド状態機
械306は、メモリ112からポステッド・パケット・
アドレスを引き出し、それらをポステッド・キュー・バ
ッファ316内に置く役割を担う。
は、単一ストリームDBEデバイスであることを注記し
ておく。DBEデバイス206が多機能周辺機器に対応
することを要求される場合、多数の状態機械の集合を並
列に実装し、単一のI/Oデバイス内に結合されている
各機能毎に対応することができる。単一の状態機械の集
合が、対応するI/Oデバイス208に対する全てのチ
ャネル214を処理する。フロント・エンド状態機械
は、要求キュー・フロント・エンド状態機械(RQSMFEND)
302、ポステッド・キュー・フロント・エンド状態機
械(PQSMFEND)306、及び完了キュー・フロント・エン
ド状態機械(CQSM)304を含む。要求キュー・フロント
・エンド状態機械302は、デバイス・ドライバ230
によって要求キュー274上に置かれたパケット250
を処理し、要求キュー・バッファ312に供給する役割
を担う。ポステッド・キュー・フロント・エンド状態機
械306は、メモリ112からポステッド・パケット・
アドレスを引き出し、それらをポステッド・キュー・バ
ッファ316内に置く役割を担う。
【0054】バック・エンド状態機械308〜310
は、要求キュー・バック・エンド状態機械(RQSMBEND)3
08及びポステッド・キュー・バック・エンド状態機械
(PQSMBEND)310を含む。要求キュー・バック・エンド
状態機械308は、要求キュー・バッファ312からパ
ケット情報を引き出し、それをI/Oデバイス208に
供給する役割を担う。ポステッド・キュー・バック・エ
ンド状態機械310は、ポステッド・キュー・バッファ
316から非請求パケット・アドレスを引き出し、それ
らをI/Oデバイス208に提示する役割を担う。完了
キュー状態機械(CQSM)304は、フロント・エンド及び
バック・エンドと協同してパケットを完了し、完了キュ
ー276及びフリー・キュー272のリンクを維持する
役割を担う。また、DBEデバイス206には、多数の
ソース、即ち、I/Oデバイス208、要求キュー・バ
ック・エンド状態機械308、及びポステッド・キュー
・バック・エンド状態機械310から、データのフロー
を完了キュー・バッファ314に方向付けるための、完
了キュー・マルチプレクサ(CQMUX)318も含まれる。
完了キュー・マルチプレクサ318は、ポステッド・キ
ュー・バック・エンド状態機械310によって制御され
る。
は、要求キュー・バック・エンド状態機械(RQSMBEND)3
08及びポステッド・キュー・バック・エンド状態機械
(PQSMBEND)310を含む。要求キュー・バック・エンド
状態機械308は、要求キュー・バッファ312からパ
ケット情報を引き出し、それをI/Oデバイス208に
供給する役割を担う。ポステッド・キュー・バック・エ
ンド状態機械310は、ポステッド・キュー・バッファ
316から非請求パケット・アドレスを引き出し、それ
らをI/Oデバイス208に提示する役割を担う。完了
キュー状態機械(CQSM)304は、フロント・エンド及び
バック・エンドと協同してパケットを完了し、完了キュ
ー276及びフリー・キュー272のリンクを維持する
役割を担う。また、DBEデバイス206には、多数の
ソース、即ち、I/Oデバイス208、要求キュー・バ
ック・エンド状態機械308、及びポステッド・キュー
・バック・エンド状態機械310から、データのフロー
を完了キュー・バッファ314に方向付けるための、完
了キュー・マルチプレクサ(CQMUX)318も含まれる。
完了キュー・マルチプレクサ318は、ポステッド・キ
ュー・バック・エンド状態機械310によって制御され
る。
【0055】次に図8を参照すると、要求キュー・フロ
ント・エンド状態機械302及びポステッド・キュー・
フロント・エンド状態機械306のフロント・エンドの
更に詳細なブロック図が示されている。要求キュー・フ
ロント・エンド状態機械302について最初に説明す
る。図9のA、図9のB及び図9のCは、要求キュー・
フロント・エンド状態機械302のフロー・チャート、
状態遷移図、及び出力を示す。要求キュー・フロント・
エンド状態機械302の出力は、図9のCに示されてい
る。他に特に示さない限り、出力は、それに割り当てら
れた論理レベルから不変のままであるとする。要求キュ
ー・フロント・エンド状態機械302は、プロセッサ1
00によって要求キュー274上に置かれたパケットを
処理する役割を担う。要求キュー・フロント・エンド状
態機械302は、Rqn_REG290を用いて、プロセッサ
100が次のパケット・アドレスを置くメモリ・アドレ
スを得る。プロセッサ100は、システムの初期化中に
1回Rqn_REG290に書き込み、再度それに書き込むこ
とは決してない。要求キュー・フロント・エンド状態機
械302は、要求キュー・フロント・エンド状態機械3
02が処理した最後のパケットの物理アドレスを用い
て、Rqn_REG290の内容を実行時間中保持する。要求
キュー・フロント・エンド状態機械302は、要求キュ
ー・バッファ312を満杯に維持し、要求キュー・バッ
ク・エンド状態機械308をバス・マスタI/F300
から切り離そうとする。
ント・エンド状態機械302及びポステッド・キュー・
フロント・エンド状態機械306のフロント・エンドの
更に詳細なブロック図が示されている。要求キュー・フ
ロント・エンド状態機械302について最初に説明す
る。図9のA、図9のB及び図9のCは、要求キュー・
フロント・エンド状態機械302のフロー・チャート、
状態遷移図、及び出力を示す。要求キュー・フロント・
エンド状態機械302の出力は、図9のCに示されてい
る。他に特に示さない限り、出力は、それに割り当てら
れた論理レベルから不変のままであるとする。要求キュ
ー・フロント・エンド状態機械302は、プロセッサ1
00によって要求キュー274上に置かれたパケットを
処理する役割を担う。要求キュー・フロント・エンド状
態機械302は、Rqn_REG290を用いて、プロセッサ
100が次のパケット・アドレスを置くメモリ・アドレ
スを得る。プロセッサ100は、システムの初期化中に
1回Rqn_REG290に書き込み、再度それに書き込むこ
とは決してない。要求キュー・フロント・エンド状態機
械302は、要求キュー・フロント・エンド状態機械3
02が処理した最後のパケットの物理アドレスを用い
て、Rqn_REG290の内容を実行時間中保持する。要求
キュー・フロント・エンド状態機械302は、要求キュ
ー・バッファ312を満杯に維持し、要求キュー・バッ
ク・エンド状態機械308をバス・マスタI/F300
から切り離そうとする。
【0056】要求キュー・フロント・エンド状態機械3
02は、PA_LINKフィールド268を保持するために、
要求キューPA_LINKレジスタ(RQ_PALINK)320を制御す
る。要求キュー・フロント・エンド状態機械302内部
には、要求キュー・ヘッド・レジスタ(RQ_REG)290、
現パケットのPALINKDWORDフィールドを保持するための
パケット長レジスタ(RQ_LENGTH)、及び次のパケットのP
aLinkDWORDを保持するための次パケット長レジスタ(R Q
_NXPLENGTH)がある。RQ_LENGTHレジスタの出力は、バス
・マスタI/F300に供給されるので、パケット25
0の中を適正に読み取ることができる。以下の検討は単
一のチャネル要求キューについてのみ言及するが、多数
のチャネルが使用可能であることは理解されよう。パケ
ット250が互いにリンクされていることを思い出すの
は重要である。したがって、リンク・リスト内のどのパ
ケット250を状態機械が処理しているのかを明確にす
るために、以下の規則を用いる。「現パケット」とは、
現在処理又は転送されている最中のパケットを意味す
る。「前パケット」とは、現パケットに先立ってリンク
され、現パケットよりも前に処理されたパケットを意味
する。「次パケット」とは、現パケットの後にリンクさ
れ、現パケットよりも後に処理されるパケットを意味す
る。したがって、前パケットのPaLinkフィールド268
は現パケットを示し、現パケットのPaLinkDWORDフィー
ルド266は、次パケットに対するDWORDの数を示す。
これは全てのパケット型に対して一貫している。
02は、PA_LINKフィールド268を保持するために、
要求キューPA_LINKレジスタ(RQ_PALINK)320を制御す
る。要求キュー・フロント・エンド状態機械302内部
には、要求キュー・ヘッド・レジスタ(RQ_REG)290、
現パケットのPALINKDWORDフィールドを保持するための
パケット長レジスタ(RQ_LENGTH)、及び次のパケットのP
aLinkDWORDを保持するための次パケット長レジスタ(R Q
_NXPLENGTH)がある。RQ_LENGTHレジスタの出力は、バス
・マスタI/F300に供給されるので、パケット25
0の中を適正に読み取ることができる。以下の検討は単
一のチャネル要求キューについてのみ言及するが、多数
のチャネルが使用可能であることは理解されよう。パケ
ット250が互いにリンクされていることを思い出すの
は重要である。したがって、リンク・リスト内のどのパ
ケット250を状態機械が処理しているのかを明確にす
るために、以下の規則を用いる。「現パケット」とは、
現在処理又は転送されている最中のパケットを意味す
る。「前パケット」とは、現パケットに先立ってリンク
され、現パケットよりも前に処理されたパケットを意味
する。「次パケット」とは、現パケットの後にリンクさ
れ、現パケットよりも後に処理されるパケットを意味す
る。したがって、前パケットのPaLinkフィールド268
は現パケットを示し、現パケットのPaLinkDWORDフィー
ルド266は、次パケットに対するDWORDの数を示す。
これは全てのパケット型に対して一貫している。
【0057】要求キュー・フロント・エンド状態機械3
02は、システム・リセットからIDLE状態に初期化す
る。RESETモードにある間、デバイス・ドライバ230
は、請求パケット・プール200(又はフリー・キュー
272)上の最後のパケット250の物理アドレスを用
いて、RQ_REG290を初期化する。フリー・キュー27
2は、DBEデバイス206が完了した非同期パケット
を整列する場所を有するために、請求パケット・プール
200上に少なくとも1つの空きパケット250を維持
する必要がある。IDLE状態330において、要求キュー
・フロント・エンド状態機械302は、RQ_DOORBELLが
鳴らされるのを待つ。RQ_DOORBELLを待っている間、要
求キュー・フロント・エンド状態機械302は、RQ_REG
290からの値(通常、DBEによって処理された最後
の要求パケットの物理アドレス)を用いて、要求キュー
・リード・アドレス・レジスタ(RQ_READADDR_B)を初期
化し、RQ_LENGTHレジスタは2hに初期化される。DB
E206が丁度デバイス・ドライバ230によって初期
化されたばかりである場合、RQ_READADDR_Bは、デバイ
ス・ドライバ230によってRQ_REG290に書き込まれ
た値によって初期化される。RQ_DOORBELL信号がアサー
トされると、要求キュー・フロント・エンド状態機械3
02は、クリア要求キュー・ドアベル(CLR_RQ_DOORBEL
L)信号をアサートし、NEXTPKT状態332に遷移する。
02は、システム・リセットからIDLE状態に初期化す
る。RESETモードにある間、デバイス・ドライバ230
は、請求パケット・プール200(又はフリー・キュー
272)上の最後のパケット250の物理アドレスを用
いて、RQ_REG290を初期化する。フリー・キュー27
2は、DBEデバイス206が完了した非同期パケット
を整列する場所を有するために、請求パケット・プール
200上に少なくとも1つの空きパケット250を維持
する必要がある。IDLE状態330において、要求キュー
・フロント・エンド状態機械302は、RQ_DOORBELLが
鳴らされるのを待つ。RQ_DOORBELLを待っている間、要
求キュー・フロント・エンド状態機械302は、RQ_REG
290からの値(通常、DBEによって処理された最後
の要求パケットの物理アドレス)を用いて、要求キュー
・リード・アドレス・レジスタ(RQ_READADDR_B)を初期
化し、RQ_LENGTHレジスタは2hに初期化される。DB
E206が丁度デバイス・ドライバ230によって初期
化されたばかりである場合、RQ_READADDR_Bは、デバイ
ス・ドライバ230によってRQ_REG290に書き込まれ
た値によって初期化される。RQ_DOORBELL信号がアサー
トされると、要求キュー・フロント・エンド状態機械3
02は、クリア要求キュー・ドアベル(CLR_RQ_DOORBEL
L)信号をアサートし、NEXTPKT状態332に遷移する。
【0058】NEXTPKT状態332において、RQ_DOORBELL
がクリアされ、パケット250がメモリ112から読み
出され、要求キュー・バッファ312に書き込まれる。
バス・マスタI/F300は、PaLinkDWORDフィールド
266を用いてパケット情報を供給し始め、ペイロード
の終端に到達するまで続ける。PaLinkDWORDフィールド
266の前のフィールド(図3参照)は、要求キュー・
フロント・エンド状態機械302には必要ではない。現
パケット250が書き込まれると、前パケットからの値
が要求キュー・バッファ312上に押し出される。現パ
ケットのPaLinkDWORDフィールド値266がRQ_NXPLENGT
Hレジスタにラッチされると、RQ_LENGTHレジスタに現在
保持されているPaLinkDWORDフィールド値266は、要
求キュー・バッファ312上に押し出される。マルチプ
レクサ( MUX)322は0入力から1入力に切り替えられ
るので、現在RQ_PALINKレジスタ320に保持されてい
るPaLinkフィールド値268は、現パケットのPaLinkフ
ィールド値268がRQ_PALINKレジスタ320にラッチ
されると、要求キュー・バッファ312上に押し出され
る。その後、マルチプレクサ322は、0入力からのデ
ータを受け取るように、再度切り替えられる。
がクリアされ、パケット250がメモリ112から読み
出され、要求キュー・バッファ312に書き込まれる。
バス・マスタI/F300は、PaLinkDWORDフィールド
266を用いてパケット情報を供給し始め、ペイロード
の終端に到達するまで続ける。PaLinkDWORDフィールド
266の前のフィールド(図3参照)は、要求キュー・
フロント・エンド状態機械302には必要ではない。現
パケット250が書き込まれると、前パケットからの値
が要求キュー・バッファ312上に押し出される。現パ
ケットのPaLinkDWORDフィールド値266がRQ_NXPLENGT
Hレジスタにラッチされると、RQ_LENGTHレジスタに現在
保持されているPaLinkDWORDフィールド値266は、要
求キュー・バッファ312上に押し出される。マルチプ
レクサ( MUX)322は0入力から1入力に切り替えられ
るので、現在RQ_PALINKレジスタ320に保持されてい
るPaLinkフィールド値268は、現パケットのPaLinkフ
ィールド値268がRQ_PALINKレジスタ320にラッチ
されると、要求キュー・バッファ312上に押し出され
る。その後、マルチプレクサ322は、0入力からのデ
ータを受け取るように、再度切り替えられる。
【0059】現パケットのVa+Flagsフィールド値270
は、現パケットの残りのペイロード254であるので、
要求キュー・バッファ312上に押し出される。現パケ
ット250が要求キュー・バッファ312に書き込まれ
る際、Va+Flagsフィールド270をチェックし、I/O
取り消しか又はダイレクト・アクセスかを調べる。Va+F
lagsフィールド270のビット3又はビット4のいずれ
かがセットされている場合、ペイロードを読み出す前に
パケット転送サイクルを中断する。パケット250の各
DWORDを読み出すに連れて、RQ_READADDR_Bレジスタをそ
れに応じて増分する。ペイロード254が転送されたと
き、RQ_RDDONE信号がバス・マスタI/F300から受
け取られる。RQ_RDDONE信号が受け取られ、RQ_PALINKレ
ジスタが0値を収容している場合、要求キュー・フロン
ト・エンド状態機械はIDLE状態330に戻り、別のRQ_D
OORBELLを待つ。
は、現パケットの残りのペイロード254であるので、
要求キュー・バッファ312上に押し出される。現パケ
ット250が要求キュー・バッファ312に書き込まれ
る際、Va+Flagsフィールド270をチェックし、I/O
取り消しか又はダイレクト・アクセスかを調べる。Va+F
lagsフィールド270のビット3又はビット4のいずれ
かがセットされている場合、ペイロードを読み出す前に
パケット転送サイクルを中断する。パケット250の各
DWORDを読み出すに連れて、RQ_READADDR_Bレジスタをそ
れに応じて増分する。ペイロード254が転送されたと
き、RQ_RDDONE信号がバス・マスタI/F300から受
け取られる。RQ_RDDONE信号が受け取られ、RQ_PALINKレ
ジスタが0値を収容している場合、要求キュー・フロン
ト・エンド状態機械はIDLE状態330に戻り、別のRQ_D
OORBELLを待つ。
【0060】RQ_RDDONE信号が受け取られ、更にRQ_PALI
NKレジスタが0値を収容している場合、別のパケット転
送サイクルが必要となる。この場合、状態機械302
は、RQ_NXPLENGTH内の次パケット長値を、3hだけ増分
し、この値をRQ_LENGTHレジスタにラッチし、RQ_PALI N
Kレジスタからの値をPQ_READADDR_Bレジスタにラッチす
る。RQ_RDDONE信号が受け取られ、RQ_PALINKレジスタが
0ではないが、要求キュー・バッファ312が満杯であ
る場合(RQFULL)、要求キュー・フロント・エンド状態機
械302はWAIT状態に遷移する。状態機械302は、要
求キュー・バッファ312が満杯でない場合、再びWAIT
状態からNEXTPKT状態に遷移する。RQFULL信号は、要求
キュー・バッファ312によって供給される。いずれの
状態においても、要求キュー・バッファ312が満杯で
ない場合、RQ_PALINKレジスタ内に格納されている値がR
Q_REGにラッチされる。RQ_LENGTH, RQ_READADDR_B,
及びRQ_REGレジスタにロードされた後、別のパケット転
送サイクルが始まる。
NKレジスタが0値を収容している場合、別のパケット転
送サイクルが必要となる。この場合、状態機械302
は、RQ_NXPLENGTH内の次パケット長値を、3hだけ増分
し、この値をRQ_LENGTHレジスタにラッチし、RQ_PALI N
Kレジスタからの値をPQ_READADDR_Bレジスタにラッチす
る。RQ_RDDONE信号が受け取られ、RQ_PALINKレジスタが
0ではないが、要求キュー・バッファ312が満杯であ
る場合(RQFULL)、要求キュー・フロント・エンド状態機
械302はWAIT状態に遷移する。状態機械302は、要
求キュー・バッファ312が満杯でない場合、再びWAIT
状態からNEXTPKT状態に遷移する。RQFULL信号は、要求
キュー・バッファ312によって供給される。いずれの
状態においても、要求キュー・バッファ312が満杯で
ない場合、RQ_PALINKレジスタ内に格納されている値がR
Q_REGにラッチされる。RQ_LENGTH, RQ_READADDR_B,
及びRQ_REGレジスタにロードされた後、別のパケット転
送サイクルが始まる。
【0061】次に、図8及び図10を参照して、ポステ
ッド・キュー・フロント・エンド状態機械306を更に
詳細に説明する。図10のA及びBは、ポステッド・キ
ュー・フロント・エンド状態機械306のフロー・チャ
ート及び状態遷移条件を示す。ポステッド・キュー・フ
ロント・エンド状態機械306の出力を図10のCに示
す。他に特に示していない限り、出力は不変のままとす
る。ポステッド・キュー・フロント・エンド状態機械(P
QSMFEND)306は、メモリ112からポステッド・パケ
ット・アドレスを引き出し、それらをポステッド・キュ
ー・バッファ316内に置く役割を担う。ポステッド・
キュー・フロント・エンド状態機械306は、常に、3
つのDWORD (現パケット250に対してPALINKDWORDS, P
A_LINK 及びVA+FLAGS)を初期リード上で要求し、2つ
のDWORD (PA_LINK及びVA+FLAGS)を後続の全てのリード
上で要求する。プロセッサ100は、システムの初期化
中にポステッド・パケット250のリストを構築し、次
に、ポステッド・キュー278内の最初のパケット25
0の物理アドレスをPQ_REG288に書き込む。ポステッ
ド・キュー・フロント・エンド状態機械306は、ポス
テッド・パケット250のリストを見渡し、パケット・
アドレスをプリフェッチする。アドレス(PA_LINK及びV
A)は、バッファ316が満杯になるまで、又はメモリ1
12内の非請求パケット・プール202上にもはやポス
テッド・パケット250がなくなるまで、ポステッド・
キュー・バッファ316内に置かれる。リスト上に残っ
ているパケット250が1つのみの場合、非請求パケッ
ト・プール202は、空と見なされる。
ッド・キュー・フロント・エンド状態機械306を更に
詳細に説明する。図10のA及びBは、ポステッド・キ
ュー・フロント・エンド状態機械306のフロー・チャ
ート及び状態遷移条件を示す。ポステッド・キュー・フ
ロント・エンド状態機械306の出力を図10のCに示
す。他に特に示していない限り、出力は不変のままとす
る。ポステッド・キュー・フロント・エンド状態機械(P
QSMFEND)306は、メモリ112からポステッド・パケ
ット・アドレスを引き出し、それらをポステッド・キュ
ー・バッファ316内に置く役割を担う。ポステッド・
キュー・フロント・エンド状態機械306は、常に、3
つのDWORD (現パケット250に対してPALINKDWORDS, P
A_LINK 及びVA+FLAGS)を初期リード上で要求し、2つ
のDWORD (PA_LINK及びVA+FLAGS)を後続の全てのリード
上で要求する。プロセッサ100は、システムの初期化
中にポステッド・パケット250のリストを構築し、次
に、ポステッド・キュー278内の最初のパケット25
0の物理アドレスをPQ_REG288に書き込む。ポステッ
ド・キュー・フロント・エンド状態機械306は、ポス
テッド・パケット250のリストを見渡し、パケット・
アドレスをプリフェッチする。アドレス(PA_LINK及びV
A)は、バッファ316が満杯になるまで、又はメモリ1
12内の非請求パケット・プール202上にもはやポス
テッド・パケット250がなくなるまで、ポステッド・
キュー・バッファ316内に置かれる。リスト上に残っ
ているパケット250が1つのみの場合、非請求パケッ
ト・プール202は、空と見なされる。
【0062】ポステッド・キュー・フロント・エンド状
態機械306は、ポステッド・キュー・レジスタ(PQ_RE
G)288、ならびに次のパケットのペイロードのPA_LIN
K及び長さ(PQ_PALINK及びPQ_LENGTH)を保持するための
他のレジスタを内蔵する。ポステッド・キュー・フロン
ト・エンド状態機械306は、システム・リセットから
REALIDLE状態336に初期化する。RESETモードにある
間、デバイス・ドライバ230は、非請求パケット・プ
ール202内の最初のパケットの物理アドレスを用い
て、PQ_REG288を初期化する。その後、ポステッド・
キュー・フロント・エンド状態機械は、非請求パケット
・プール202のヘッドの物理アドレスを、PQ_REG28
8に保持する。REALIDLE状態336では、ポステッド・
キュー・フロント・エンド状態機械306は、PQ_DOORB
ELLが鳴らされるのを待つ。デバイス・ドライバ230
がPQ_DOORBELLを鳴らすのは、パケット250がDBE
206に使用可能となったときである。これは、DBE_Fr
eePacket又はDBE_GetNextPacketToCompleteが非請求パ
ケットによってコールされる毎に発生する。PQ_DOORBEL
Lビットがセットされると、ポステッド・キュー・フロ
ント・エンド状態機械306は、IDLE状態338に遷移
する。
態機械306は、ポステッド・キュー・レジスタ(PQ_RE
G)288、ならびに次のパケットのペイロードのPA_LIN
K及び長さ(PQ_PALINK及びPQ_LENGTH)を保持するための
他のレジスタを内蔵する。ポステッド・キュー・フロン
ト・エンド状態機械306は、システム・リセットから
REALIDLE状態336に初期化する。RESETモードにある
間、デバイス・ドライバ230は、非請求パケット・プ
ール202内の最初のパケットの物理アドレスを用い
て、PQ_REG288を初期化する。その後、ポステッド・
キュー・フロント・エンド状態機械は、非請求パケット
・プール202のヘッドの物理アドレスを、PQ_REG28
8に保持する。REALIDLE状態336では、ポステッド・
キュー・フロント・エンド状態機械306は、PQ_DOORB
ELLが鳴らされるのを待つ。デバイス・ドライバ230
がPQ_DOORBELLを鳴らすのは、パケット250がDBE
206に使用可能となったときである。これは、DBE_Fr
eePacket又はDBE_GetNextPacketToCompleteが非請求パ
ケットによってコールされる毎に発生する。PQ_DOORBEL
Lビットがセットされると、ポステッド・キュー・フロ
ント・エンド状態機械306は、IDLE状態338に遷移
する。
【0063】IDLE状態338では、PQ_DOORBELLがクリ
アされ、ポステッド・キュー・リード要求信号(PQ_RDRE
Q)がアサートされる。ポステッド・キュー・フロント・
エンド状態機械306は自動的にIDLE状態338からGE
TPAVA状態340に遷移する。GETPAVA状態340におけ
る第1リード・サイクルにおいて、PA_LINKフィールド
値268はポステッド・キューPaLinkレジスタ(PQ_PALI
NK)にラッチされ、PaLinkDWORDフィールド値266はポ
ステッド・キュー長レジスタ(PQ_LENGTH)にラッチさ
れ、Va+Flagsフィールド値270はラッチされる。後続
のリード・サイクルでは、PA_LINK及びVa+ FLAGSフィー
ルドのみが読み取られる。何故なら、ペイロード254
のサイズが既にわかっているからである。各リード・サ
イクル毎に、PA_LINKフィールド及びVA+FLAGSフィール
ドは、ポステッド・キュー・バッファ316に押し出さ
れる。現パケット250のPA_LINKフィールドが0に等
しい場合、ポステッド・キュー・フロント・エンド状態
機械306は、再びREALIDLE状態に遷移し、PQ_DOORBEL
Lビットが再度セットされるのを待つ。現パケット25
0のPA_LINKフィールドが0に等しくない場合、現パケ
ットには追加のパケット250がリンクされていること
になる。この場合、ポステッド・キュー・フロント・エ
ンド状態機械306は、QVA状態342に遷移し、更にI
DEL状態338に戻り、次パケット250をフェッチす
る。ポステッド・キュー・バッファ316が満杯となっ
ている場合(PWFULL信号)、パケットのフェッチは抑制
される。
アされ、ポステッド・キュー・リード要求信号(PQ_RDRE
Q)がアサートされる。ポステッド・キュー・フロント・
エンド状態機械306は自動的にIDLE状態338からGE
TPAVA状態340に遷移する。GETPAVA状態340におけ
る第1リード・サイクルにおいて、PA_LINKフィールド
値268はポステッド・キューPaLinkレジスタ(PQ_PALI
NK)にラッチされ、PaLinkDWORDフィールド値266はポ
ステッド・キュー長レジスタ(PQ_LENGTH)にラッチさ
れ、Va+Flagsフィールド値270はラッチされる。後続
のリード・サイクルでは、PA_LINK及びVa+ FLAGSフィー
ルドのみが読み取られる。何故なら、ペイロード254
のサイズが既にわかっているからである。各リード・サ
イクル毎に、PA_LINKフィールド及びVA+FLAGSフィール
ドは、ポステッド・キュー・バッファ316に押し出さ
れる。現パケット250のPA_LINKフィールドが0に等
しい場合、ポステッド・キュー・フロント・エンド状態
機械306は、再びREALIDLE状態に遷移し、PQ_DOORBEL
Lビットが再度セットされるのを待つ。現パケット25
0のPA_LINKフィールドが0に等しくない場合、現パケ
ットには追加のパケット250がリンクされていること
になる。この場合、ポステッド・キュー・フロント・エ
ンド状態機械306は、QVA状態342に遷移し、更にI
DEL状態338に戻り、次パケット250をフェッチす
る。ポステッド・キュー・バッファ316が満杯となっ
ている場合(PWFULL信号)、パケットのフェッチは抑制
される。
【0064】次に図11を参照すると、要求キュー・バ
ック・エンド状態機械(RQSMBEND)308及びポステッド
・キュー・バック・エンド状態機械(PQSMBEND)310の
更に詳細なブロック図が示されている。要求キュー・バ
ック・エンド状態機械308について最初に説明する。
図12及び図13は、要求キュー・バック・エンド状態
機械308のフロー・チャート及び状態遷移条件を示
す。要求キュー・バック・エンド状態機械308の出力
を、図14に示す。他に特に示されていない限り、出力
は、それらに予め割り当てらた論理値から不変のままと
する。要求キュー・バック・エンド状態機械308は、
要求キュー・バッファ312の1つからパケット情報を
引き出す役割を担う。要求キュー・バック・エンド状態
機械308は、要求キュー・バッファ312から物理ア
ドレス及び仮想アドレスを引き出し、I/Oデバイス2
08にデータ254を引き出させる。パケット250が
既にI/Oデバイス208によって処理されている場
合、I/Oデバイス208は、要求キュー・バック・エ
ンド状態機械308に通知し、パケット250を完了す
る。パケット250には、割り込み、ポール、又は非同
期完了とマークが付けられる。要求キュー・バック・エ
ンド状態機械308は、完了の間、プロセッサ100の
DBEデバイス206へのダイレクト・アクセスをパケ
ット250と同期させる役割も担っている。
ック・エンド状態機械(RQSMBEND)308及びポステッド
・キュー・バック・エンド状態機械(PQSMBEND)310の
更に詳細なブロック図が示されている。要求キュー・バ
ック・エンド状態機械308について最初に説明する。
図12及び図13は、要求キュー・バック・エンド状態
機械308のフロー・チャート及び状態遷移条件を示
す。要求キュー・バック・エンド状態機械308の出力
を、図14に示す。他に特に示されていない限り、出力
は、それらに予め割り当てらた論理値から不変のままと
する。要求キュー・バック・エンド状態機械308は、
要求キュー・バッファ312の1つからパケット情報を
引き出す役割を担う。要求キュー・バック・エンド状態
機械308は、要求キュー・バッファ312から物理ア
ドレス及び仮想アドレスを引き出し、I/Oデバイス2
08にデータ254を引き出させる。パケット250が
既にI/Oデバイス208によって処理されている場
合、I/Oデバイス208は、要求キュー・バック・エ
ンド状態機械308に通知し、パケット250を完了す
る。パケット250には、割り込み、ポール、又は非同
期完了とマークが付けられる。要求キュー・バック・エ
ンド状態機械308は、完了の間、プロセッサ100の
DBEデバイス206へのダイレクト・アクセスをパケ
ット250と同期させる役割も担っている。
【0065】要求キュー・バック・エンド状態機械30
8は、システム・リセット又はRESETモードからIDLE状
態350に初期化し、要求キュー・バッファ312から
の!RQEMPTY信号が、要求キュー・バッファ312が空で
ないことを示すのを待つ。空でない場合、要求キュー・
バック・エンド状態機械308はGETLENGTH状態352
に遷移し、要求キュー(dq_RQ)信号をアサートし、最初
のDWORDを要求キュー・バッファ312からポップする
(pop)。GETLENGTH状態352において、状態機械308
は最初のDWORDを長さレジスタ(RQB_LENGTH)に書き込
む。最初のDWORDは、現パケット250のPALINKDWORDフ
ィールド値266である。要求キュー・バッファ312
が空でない場合、要求キュー・バック・エンド状態機械
308はGETPALINK状態354に遷移し、要求キュー(dq
_RQ)信号をアサートし、他のDWORDを要求キュー・バッ
ファ312からポップする。要求キュー・バッファ31
2が空の場合、要求キュー・バック・エンド状態機械3
08は、要求キュー・バッファ312が空でなくなるま
で、GETLENGTH状態352に止まる。
8は、システム・リセット又はRESETモードからIDLE状
態350に初期化し、要求キュー・バッファ312から
の!RQEMPTY信号が、要求キュー・バッファ312が空で
ないことを示すのを待つ。空でない場合、要求キュー・
バック・エンド状態機械308はGETLENGTH状態352
に遷移し、要求キュー(dq_RQ)信号をアサートし、最初
のDWORDを要求キュー・バッファ312からポップする
(pop)。GETLENGTH状態352において、状態機械308
は最初のDWORDを長さレジスタ(RQB_LENGTH)に書き込
む。最初のDWORDは、現パケット250のPALINKDWORDフ
ィールド値266である。要求キュー・バッファ312
が空でない場合、要求キュー・バック・エンド状態機械
308はGETPALINK状態354に遷移し、要求キュー(dq
_RQ)信号をアサートし、他のDWORDを要求キュー・バッ
ファ312からポップする。要求キュー・バッファ31
2が空の場合、要求キュー・バック・エンド状態機械3
08は、要求キュー・バッファ312が空でなくなるま
で、GETLENGTH状態352に止まる。
【0066】GETPALINK状態354において、状態機械
308は2番目のDWORDを要求キューPA_LINKレジスタ(R
QB_PALINK)に書き込む。2番目のDWORDは、現パケット
250のPA_LINKフィールド値268である。要求キュ
ー・バッファ312が未だ空でない場合、要求キュー・
バック・エンド状態機械308はGETVA状態356に遷
移し、要求キュー(dq_RQ)信号をアサートし、別のDWORD
を要求キュー・バッファ312からポップする。要求キ
ュー・バッファ312が空になった場合、要求キュー・
バック・エンド状態機械308は、GETPALINK状態35
4に止まる。GETVA状態356において、状態機械30
8は3番目のDWORDを要求キューVA+FLAGSレジスタ(RQB_
VA+FLAGS)に書き込む。3番目のDWORDは、現パケット2
50のVA+FLAGSフィールド値270である。VA+FLAGSフ
ィールド値270を書き込む間、状態機械308は、ビ
ット4でI/O取り消しをチェックし、更にビット3で
ダイレクト・アクセスをチェックする。ビット3は、R
QB_LENGTH=0の場合にのみチェックするように制限が設
けられる。いずれかのビットがセットされている場合、
状態機械308はWRITE状態360(以下で論ずる)に
遷移し、パケットはI/Oデバイス208に提出されな
い。ビット3及び4がセットされていないが、RQB_LENG
TH=0である場合、状態機械308は、DONE状態362
(以下で論ずる)に遷移する。その他の場合、状態機械
308はNEXTDWORD状態358に遷移し、DQRDY信号をア
サートして、I/Oデバイス208にデータが準備でき
ていることを示す。
308は2番目のDWORDを要求キューPA_LINKレジスタ(R
QB_PALINK)に書き込む。2番目のDWORDは、現パケット
250のPA_LINKフィールド値268である。要求キュ
ー・バッファ312が未だ空でない場合、要求キュー・
バック・エンド状態機械308はGETVA状態356に遷
移し、要求キュー(dq_RQ)信号をアサートし、別のDWORD
を要求キュー・バッファ312からポップする。要求キ
ュー・バッファ312が空になった場合、要求キュー・
バック・エンド状態機械308は、GETPALINK状態35
4に止まる。GETVA状態356において、状態機械30
8は3番目のDWORDを要求キューVA+FLAGSレジスタ(RQB_
VA+FLAGS)に書き込む。3番目のDWORDは、現パケット2
50のVA+FLAGSフィールド値270である。VA+FLAGSフ
ィールド値270を書き込む間、状態機械308は、ビ
ット4でI/O取り消しをチェックし、更にビット3で
ダイレクト・アクセスをチェックする。ビット3は、R
QB_LENGTH=0の場合にのみチェックするように制限が設
けられる。いずれかのビットがセットされている場合、
状態機械308はWRITE状態360(以下で論ずる)に
遷移し、パケットはI/Oデバイス208に提出されな
い。ビット3及び4がセットされていないが、RQB_LENG
TH=0である場合、状態機械308は、DONE状態362
(以下で論ずる)に遷移する。その他の場合、状態機械
308はNEXTDWORD状態358に遷移し、DQRDY信号をア
サートして、I/Oデバイス208にデータが準備でき
ていることを示す。
【0067】NEXTDWORD状態358において、DQ_RQ信号
をアサートし、DWORDを要求キュー・バッファ312か
らポップする。DWORDがI/Oデバイス208によって
読み込まれる毎に、デバイス・レディ(DEVICEDQRDY)信
号がI/Oデバイス208から受け取られ、LENGTHレジ
スタを1だけ減分する。LENGTH値が1hに達したとき、
DQRDY信号をディアサートし、状態機械308はDONE状
態362に遷移する。DONE状態362において、状態機
械308は、非同期、割り込み、又はポールの内どの型
のパケットが完了したかについて判定を行なう。DQ_RQ
信号をディアサートし、パケット情報をキューから取り
出す(dequeue)のを停止する。パケット型を判定するた
めに、状態機械308はRQB_VALINKレジスタ内に格納さ
れているVALINKフィールド値270のビット1及び2を
検査する。ビット2:1=1h(DBE_PKT_SUBMIT_A)の場
合、状態機械308はWRITE状態360に遷移する。ビ
ット2:1=2h(DBE_ PKT_SUBMIT_P)又は2:1=3
h(DBE_PKT_SUBMIT_ I)の場合、状態機械308はWAIT
状態366に遷移し、I/Oデバイス208へのDONE信
号をアサートし、パケット250が処理されたことの承
認を要求する。
をアサートし、DWORDを要求キュー・バッファ312か
らポップする。DWORDがI/Oデバイス208によって
読み込まれる毎に、デバイス・レディ(DEVICEDQRDY)信
号がI/Oデバイス208から受け取られ、LENGTHレジ
スタを1だけ減分する。LENGTH値が1hに達したとき、
DQRDY信号をディアサートし、状態機械308はDONE状
態362に遷移する。DONE状態362において、状態機
械308は、非同期、割り込み、又はポールの内どの型
のパケットが完了したかについて判定を行なう。DQ_RQ
信号をディアサートし、パケット情報をキューから取り
出す(dequeue)のを停止する。パケット型を判定するた
めに、状態機械308はRQB_VALINKレジスタ内に格納さ
れているVALINKフィールド値270のビット1及び2を
検査する。ビット2:1=1h(DBE_PKT_SUBMIT_A)の場
合、状態機械308はWRITE状態360に遷移する。ビ
ット2:1=2h(DBE_ PKT_SUBMIT_P)又は2:1=3
h(DBE_PKT_SUBMIT_ I)の場合、状態機械308はWAIT
状態366に遷移し、I/Oデバイス208へのDONE信
号をアサートし、パケット250が処理されたことの承
認を要求する。
【0068】WAIT状態366において、状態機械308
はI/Oデバイス208からの完了通知を待つ。PROCES
S_DONE信号がI/Oデバイス208から受け取られ、パ
ケットが非同期パケットであった場合、DONE信号はディ
アサートされ、状態機械308は再びIDLE状態350に
遷移する。PROCESS_DONE信号がI/Oデバイス208か
ら受け取られ、パケットが非同期パケットでなかった場
合、DONE信号はディアサートされ、状態機械308はWR
ITE状態360に遷移する。PROCESS_DONE信号が受け取
られない場合、状態機械はWAIT状態366において待機
する。WRITE状態360において、現パケット250のP
A_LINK268及びVA+FLAGS270フィールドの値を、完
了キュー276に書き込む。パケットの型もキュー上で
マークするので、フロント・エンドは、それが処理しよ
うとするパケットの型がわかる。
はI/Oデバイス208からの完了通知を待つ。PROCES
S_DONE信号がI/Oデバイス208から受け取られ、パ
ケットが非同期パケットであった場合、DONE信号はディ
アサートされ、状態機械308は再びIDLE状態350に
遷移する。PROCESS_DONE信号がI/Oデバイス208か
ら受け取られ、パケットが非同期パケットでなかった場
合、DONE信号はディアサートされ、状態機械308はWR
ITE状態360に遷移する。PROCESS_DONE信号が受け取
られない場合、状態機械はWAIT状態366において待機
する。WRITE状態360において、現パケット250のP
A_LINK268及びVA+FLAGS270フィールドの値を、完
了キュー276に書き込む。パケットの型もキュー上で
マークするので、フロント・エンドは、それが処理しよ
うとするパケットの型がわかる。
【0069】状態機械308は、完了キュー276が満
杯でなく(CQFULL)、ポステッド・キュー・バック・エン
ド状態機械310が使用中でない(CQBUSY)場合、AGAIN
信号に基づいて、WRITE状態360を通じて2回のパス
を行なう。その他の場合、状態機械308は、完了キュ
ー276が満杯でなくなり、使用可能となるまで待機す
る。AGAINは最初にセットされるので、最初のパスではA
GAINはセットされず、2回目のパスでセットされる。最
初のパスでは、現パケットの物理アドレス(PA)が、完了
キュー276に書き込まれる。2回目のパスは、パケッ
ト型によって異なる。パケット型が非同期の場合、現パ
ケット250の仮想アドレスが完了キュー276に書き
込まれ、ビット33:34に2h が書き込まれ、非同期
パケットであることを意味する。状態機械308は、パ
ケット250にI/O取り消しのマークが付けられてい
る場合、又はダイレクト・アクセスのマークが付けられ
ていない場合、WAIT状態366に遷移する。その他の場
合(パケット250に、I/O取り消しのマークが付け
られていなかったが、ダイレクト・アクセスのマークが
付けられていた場合)、状態機械308はDIRECT ACC状
態364に遷移し、対応する要求レジスタ(Rqn_REG)内
のダイレクト・アクセス・ビットをクリアし、チャネル
が使用可能であることあるいは同期されていることを、
デバイス・ドライバ230に示す。
杯でなく(CQFULL)、ポステッド・キュー・バック・エン
ド状態機械310が使用中でない(CQBUSY)場合、AGAIN
信号に基づいて、WRITE状態360を通じて2回のパス
を行なう。その他の場合、状態機械308は、完了キュ
ー276が満杯でなくなり、使用可能となるまで待機す
る。AGAINは最初にセットされるので、最初のパスではA
GAINはセットされず、2回目のパスでセットされる。最
初のパスでは、現パケットの物理アドレス(PA)が、完了
キュー276に書き込まれる。2回目のパスは、パケッ
ト型によって異なる。パケット型が非同期の場合、現パ
ケット250の仮想アドレスが完了キュー276に書き
込まれ、ビット33:34に2h が書き込まれ、非同期
パケットであることを意味する。状態機械308は、パ
ケット250にI/O取り消しのマークが付けられてい
る場合、又はダイレクト・アクセスのマークが付けられ
ていない場合、WAIT状態366に遷移する。その他の場
合(パケット250に、I/O取り消しのマークが付け
られていなかったが、ダイレクト・アクセスのマークが
付けられていた場合)、状態機械308はDIRECT ACC状
態364に遷移し、対応する要求レジスタ(Rqn_REG)内
のダイレクト・アクセス・ビットをクリアし、チャネル
が使用可能であることあるいは同期されていることを、
デバイス・ドライバ230に示す。
【0070】パケット型がポールの場合、現パケット2
50の仮想アドレスが完了キュー276に書き込まれ、
ビット33:34に1h が書き込まれ、ポール・パケッ
トであることを意味する。状態機械308は、パケット
250にI/O取り消しのマークが付けられていたか、
あるいはダイレクト・アクセスのマークが付けられてい
なかった場合、IDLE状態350に遷移する。その他の場
合(パケット250にはI/O取り消しのマークが付け
られていなかったが、ダイレクト・アクセスのマークが
付けられていた場合)状態機械308はDIRECTACC状態
364に遷移し、対応する要求レジスタ(Rqn_REG)内の
ダイレクト・アクセス・ビットをクリアし、デバイス・
ドライバ230に、チャネルが使用可能であることある
いは同期されていることを示す。パケット型が割り込み
の場合、現パケット250の仮想アドレスが完了キュー
276に書き込まれ、ビット33:34に3h が書き込
まれ、割り込みパケットであることを意味する。状態機
械308は、パケット250にI/O取り消しのマーク
が付けられていた場合、IDLE状態350に遷移する。パ
ケット250にダイレクト・アクセスのマークが付けら
れていた場合、状態機械308はDIRECTACC状態350
に遷移し、対応する要求レジスタ(Rqn_REG)内のダイレ
クト・アクセス・ビットをクリアし、デバイス・ドライ
バ230に、チャネルが使用可能であることあるいは同
期されていることを示す。その他の場合、状態機械30
8はWAIT状態350に遷移する。DIRECTACC状態364
において、状態機械308は、デバイス・ドライバ23
0がダイレクト・アクセス動作を完了するのを待つ。状
態機械308は、デバイス・ドライバ230が要求レジ
スタ(Rqn_REG)内の終了ダイレクト・アクセス・ビット
(ビット3)をセットするまで、要求キュー・バッファ
312からいかなる追加データも引き出さない。
50の仮想アドレスが完了キュー276に書き込まれ、
ビット33:34に1h が書き込まれ、ポール・パケッ
トであることを意味する。状態機械308は、パケット
250にI/O取り消しのマークが付けられていたか、
あるいはダイレクト・アクセスのマークが付けられてい
なかった場合、IDLE状態350に遷移する。その他の場
合(パケット250にはI/O取り消しのマークが付け
られていなかったが、ダイレクト・アクセスのマークが
付けられていた場合)状態機械308はDIRECTACC状態
364に遷移し、対応する要求レジスタ(Rqn_REG)内の
ダイレクト・アクセス・ビットをクリアし、デバイス・
ドライバ230に、チャネルが使用可能であることある
いは同期されていることを示す。パケット型が割り込み
の場合、現パケット250の仮想アドレスが完了キュー
276に書き込まれ、ビット33:34に3h が書き込
まれ、割り込みパケットであることを意味する。状態機
械308は、パケット250にI/O取り消しのマーク
が付けられていた場合、IDLE状態350に遷移する。パ
ケット250にダイレクト・アクセスのマークが付けら
れていた場合、状態機械308はDIRECTACC状態350
に遷移し、対応する要求レジスタ(Rqn_REG)内のダイレ
クト・アクセス・ビットをクリアし、デバイス・ドライ
バ230に、チャネルが使用可能であることあるいは同
期されていることを示す。その他の場合、状態機械30
8はWAIT状態350に遷移する。DIRECTACC状態364
において、状態機械308は、デバイス・ドライバ23
0がダイレクト・アクセス動作を完了するのを待つ。状
態機械308は、デバイス・ドライバ230が要求レジ
スタ(Rqn_REG)内の終了ダイレクト・アクセス・ビット
(ビット3)をセットするまで、要求キュー・バッファ
312からいかなる追加データも引き出さない。
【0071】図15A、及びBには、図11のポステッ
ド・キュー・バック・エンド状態機械(PQSMBEND)310
の対応するフロー・チャート、及び状態遷移条件が示さ
れている。ポステッド・キュー・バック・エンド状態機
械310の出力を図15のCに示す。他に特に示されて
いない限り、出力は、それらに予め割り当てらた論理値
から不変のままとする。ポステッド・キュー・バック・
エンド状態機械310は、ポステッド・キュー・バッフ
ァ316から非請求パケットのアドレスを引き出し、そ
れらをI/Oデバイス208に提示する役割を担う。I
/Oデバイス208は、これらのアドレスをメモリ11
2内の位置として用い、非請求データを「ダンプ」す
る。ポステッド・キュー・バック・エンド状態機械31
0は、常に、2つのDWORD (PALINK及びVA+FLAGS)をポス
テッド・キュー・バッファ316から除去する。DBE
デバイス206によって受け取られた非請求データは、
ポステッド・キュー・フロント・エンド状態機械306
によって供給された物理アドレス及び仮想アドレスを用
いて、メモリ112に書き込まれる。
ド・キュー・バック・エンド状態機械(PQSMBEND)310
の対応するフロー・チャート、及び状態遷移条件が示さ
れている。ポステッド・キュー・バック・エンド状態機
械310の出力を図15のCに示す。他に特に示されて
いない限り、出力は、それらに予め割り当てらた論理値
から不変のままとする。ポステッド・キュー・バック・
エンド状態機械310は、ポステッド・キュー・バッフ
ァ316から非請求パケットのアドレスを引き出し、そ
れらをI/Oデバイス208に提示する役割を担う。I
/Oデバイス208は、これらのアドレスをメモリ11
2内の位置として用い、非請求データを「ダンプ」す
る。ポステッド・キュー・バック・エンド状態機械31
0は、常に、2つのDWORD (PALINK及びVA+FLAGS)をポス
テッド・キュー・バッファ316から除去する。DBE
デバイス206によって受け取られた非請求データは、
ポステッド・キュー・フロント・エンド状態機械306
によって供給された物理アドレス及び仮想アドレスを用
いて、メモリ112に書き込まれる。
【0072】ポステッド・キュー・バック・エンド状態
機械310は、非請求パケットの物理ペイロード・アド
レスを完了キュー・バッファ314に書き込む。次い
で、ポステッド・キュー・バック・エンド状態機械31
0は、I/Oデバイス208に、その非請求データを、
現パケット250のための非請求パケットのペイロード
・データ・エリアの長さだけ、完了キュー・バッファ3
14に「ダンプ」するように要求する。一方、I/Oデ
バイス208は、データの「ダンプ」を完了したとき
に、ポステッド・キュー・バック・エンド状態機械31
0に通知する。次に、ポステッド・キュー・バック・エ
ンド状態機械310は、非請求パケットの仮想及び物理
アドレス・ヘッダ情報を、完了キュー・バッファ314
内に置く。完了キュー状態機械304は、このパケット
を割り込み型パケット250として完了する。ポステッ
ド・キュー・バック・エンド状態機械310は、システ
ム・リセット又はRESETモードからIDLE状態370に初
期化し、I/Oデバイス208からのポステッド・パケ
ット要求(POSTPACKETREQ)信号を待つ。 POSTPACKETREQ
信号がアサートされ、ポステッド・キュー・バッファ3
10が空いておらず(PQEMPTY)、更にマルチプレクサ制
御信号(MUXVA)がアサートされていない場合、完了キュ
ー・ビジー(CQBUSY)信号がセットされ、現パケットの物
理アドレスがポステッド・キュー・バッファ310から
除去されてラッチされ、ペイロードの物理アドレスが完
了キュー上に置かれ、マルチプレクサ制御信号がセット
され( 1 )、I/Oデバイス208からデータを受け取
り、状態機械310はGETVA状態372に遷移する。
機械310は、非請求パケットの物理ペイロード・アド
レスを完了キュー・バッファ314に書き込む。次い
で、ポステッド・キュー・バック・エンド状態機械31
0は、I/Oデバイス208に、その非請求データを、
現パケット250のための非請求パケットのペイロード
・データ・エリアの長さだけ、完了キュー・バッファ3
14に「ダンプ」するように要求する。一方、I/Oデ
バイス208は、データの「ダンプ」を完了したとき
に、ポステッド・キュー・バック・エンド状態機械31
0に通知する。次に、ポステッド・キュー・バック・エ
ンド状態機械310は、非請求パケットの仮想及び物理
アドレス・ヘッダ情報を、完了キュー・バッファ314
内に置く。完了キュー状態機械304は、このパケット
を割り込み型パケット250として完了する。ポステッ
ド・キュー・バック・エンド状態機械310は、システ
ム・リセット又はRESETモードからIDLE状態370に初
期化し、I/Oデバイス208からのポステッド・パケ
ット要求(POSTPACKETREQ)信号を待つ。 POSTPACKETREQ
信号がアサートされ、ポステッド・キュー・バッファ3
10が空いておらず(PQEMPTY)、更にマルチプレクサ制
御信号(MUXVA)がアサートされていない場合、完了キュ
ー・ビジー(CQBUSY)信号がセットされ、現パケットの物
理アドレスがポステッド・キュー・バッファ310から
除去されてラッチされ、ペイロードの物理アドレスが完
了キュー上に置かれ、マルチプレクサ制御信号がセット
され( 1 )、I/Oデバイス208からデータを受け取
り、状態機械310はGETVA状態372に遷移する。
【0073】GETVA状態372において、ポステッド・
キュー・バッファ316が空でない場合(PQEMPTY)、状
態機械は、I/Oデバイス208に、ポステッド・パケ
ット250が準備できている(POSTPACKETRDY)ことを通
知し、データを完了キュー・バッファ314に「ダン
プ」し、WAIT状態374に遷移する。WAIT状態374に
おいて、ポステッド・パケット終了(POSTPACKETDONE)信
号がI/Oデバイス208から受け取られた場合、マル
チプレクサ制御信号を再度セットし( 0 )、ポステッド
・キュー・バック・エンド状態機械310からパケット
仮想アドレス(VA+FLAGS)を受け取る。POSTPACKETDONE信
号が受け取られ、完了キュー・バッファ314は満杯で
はなく、POSTPACKETRDY信号がアサートされた場合、状
態機械310はPOSTPACKETRDY信号をディアサートし、
現パケットの物理アドレス(PA_LINK)を完了キュー・バ
ッファ314上に押し出す。完了キュー・バッファ31
4が満杯でなく、POSTPACKETRDY信号がディアサートさ
れた場合、仮想アドレス(VA+FLAGS)を完了キュー276
上に置く。
キュー・バッファ316が空でない場合(PQEMPTY)、状
態機械は、I/Oデバイス208に、ポステッド・パケ
ット250が準備できている(POSTPACKETRDY)ことを通
知し、データを完了キュー・バッファ314に「ダン
プ」し、WAIT状態374に遷移する。WAIT状態374に
おいて、ポステッド・パケット終了(POSTPACKETDONE)信
号がI/Oデバイス208から受け取られた場合、マル
チプレクサ制御信号を再度セットし( 0 )、ポステッド
・キュー・バック・エンド状態機械310からパケット
仮想アドレス(VA+FLAGS)を受け取る。POSTPACKETDONE信
号が受け取られ、完了キュー・バッファ314は満杯で
はなく、POSTPACKETRDY信号がアサートされた場合、状
態機械310はPOSTPACKETRDY信号をディアサートし、
現パケットの物理アドレス(PA_LINK)を完了キュー・バ
ッファ314上に押し出す。完了キュー・バッファ31
4が満杯でなく、POSTPACKETRDY信号がディアサートさ
れた場合、仮想アドレス(VA+FLAGS)を完了キュー276
上に置く。
【0074】次に、図16〜図19を参照すると、完了
キュー状態機械304を更に詳細に説明する。図17
は、バス・マスタI/F300の制御のフロー・チャー
トである。完了キュー状態機械304は、バス・マスタ
I/F300が完了キュー・バッファ314からアドレ
ス及びデータを引き出す際、マルチプレクサ(MUX2)32
4を通じて、データのフローを制御する。図17を参照
する。バス・マスタI/F300は、IDLE状態400に
おいて待機している。ステップ400において、完了キ
ューVAリンク要求(CQ_VALINKREQ)信号が受け取られた
か、あるいは完了キュー・バッファ314が空でない場
合、バス・マスタI/F300はステップ402に遷移
し、CQ_VALINKREQ信号を検査する。 CQ_VALINKREQが完
了キュー状態機械304によってアサートされている場
合、バス・マスタI/F300はステップ404に進
む。 CQ_VALINKREQがない場合、バス・マスタI/F3
00はステップ406に進み、完了キュー・バッファ3
14の出力のビット33:32を検査する。ビット3
3:32が0に等しい場合、バス・マスタI/F300
はステップ408に進む。ビット33:32が0でない
場合、バス・マスタI/F300はステップ410に進
み、ビット33を検査する。ステップ410において、
ビット33が0に等しくない場合、バス・マスタI/F
300はステップ402に戻る。ステップ410におい
て、ビット33が0に等しい場合、バス・マスタI/F
300はステップ412に進み、パケット・アドレス情
報を除去する。ステップ412から、バス・マスタI/
F300はステップ414に進み、完了キュー・バッフ
ァ314からパケット・データを除去する。ステップ4
14から、制御はIDLE状態400に戻る。
キュー状態機械304を更に詳細に説明する。図17
は、バス・マスタI/F300の制御のフロー・チャー
トである。完了キュー状態機械304は、バス・マスタ
I/F300が完了キュー・バッファ314からアドレ
ス及びデータを引き出す際、マルチプレクサ(MUX2)32
4を通じて、データのフローを制御する。図17を参照
する。バス・マスタI/F300は、IDLE状態400に
おいて待機している。ステップ400において、完了キ
ューVAリンク要求(CQ_VALINKREQ)信号が受け取られた
か、あるいは完了キュー・バッファ314が空でない場
合、バス・マスタI/F300はステップ402に遷移
し、CQ_VALINKREQ信号を検査する。 CQ_VALINKREQが完
了キュー状態機械304によってアサートされている場
合、バス・マスタI/F300はステップ404に進
む。 CQ_VALINKREQがない場合、バス・マスタI/F3
00はステップ406に進み、完了キュー・バッファ3
14の出力のビット33:32を検査する。ビット3
3:32が0に等しい場合、バス・マスタI/F300
はステップ408に進む。ビット33:32が0でない
場合、バス・マスタI/F300はステップ410に進
み、ビット33を検査する。ステップ410において、
ビット33が0に等しくない場合、バス・マスタI/F
300はステップ402に戻る。ステップ410におい
て、ビット33が0に等しい場合、バス・マスタI/F
300はステップ412に進み、パケット・アドレス情
報を除去する。ステップ412から、バス・マスタI/
F300はステップ414に進み、完了キュー・バッフ
ァ314からパケット・データを除去する。ステップ4
14から、制御はIDLE状態400に戻る。
【0075】ステップ404において、バス・マスタI
/F300は、完了キューVAリンク承認(CQ_VALINKACK)
信号をアサートする。ステップ404から、制御はステ
ップ412に進み、パケット・アドレス情報を除去し、
CQ_VALINKACK信号をディアサートする。ステップ408
において、バス・マスタI/F300は、パケット・ア
ドレス情報を除去する。ステップ408から、制御はス
テップ416に進み、除去したパケット・アドレスのビ
ット34:32を検査する。ビット34:32が0に等
しい場合、制御はステップ418に進み、完了キュー・
バッファ314からパケット・データを除去する。ステ
ップ416,418は、ビット34:32がもはや0に
等しくなくなる(パケット・データを除去する)まで繰
り返される。ステップ416において、ビット34:3
2が0に等しくない場合、制御はIDLE状態400に戻
る。完了キュー状態機械(CQSM)304は、完了及びフリ
ー・キュー・リンクを維持する役割を担う。また、完了
リンク・リストをCQ_REG286に提示し、 CQ_REG28
6のライト完了時に、バス・マスタI/F300に割り
込みをセットすることを通知する役割も担う(ポステッ
ド・パケット及び割り込みパケットのみ)。完了キュー
状態機械304は、請求及び非請求イベントから完了パ
ケットを受け取る。要求キュー274に発行された割り
込みパケット、及びI/Oデバイス208によって非請
求データで満たされた非請求パケット・プール202か
ら発した全てのパケットには、完了が要求される。
/F300は、完了キューVAリンク承認(CQ_VALINKACK)
信号をアサートする。ステップ404から、制御はステ
ップ412に進み、パケット・アドレス情報を除去し、
CQ_VALINKACK信号をディアサートする。ステップ408
において、バス・マスタI/F300は、パケット・ア
ドレス情報を除去する。ステップ408から、制御はス
テップ416に進み、除去したパケット・アドレスのビ
ット34:32を検査する。ビット34:32が0に等
しい場合、制御はステップ418に進み、完了キュー・
バッファ314からパケット・データを除去する。ステ
ップ416,418は、ビット34:32がもはや0に
等しくなくなる(パケット・データを除去する)まで繰
り返される。ステップ416において、ビット34:3
2が0に等しくない場合、制御はIDLE状態400に戻
る。完了キュー状態機械(CQSM)304は、完了及びフリ
ー・キュー・リンクを維持する役割を担う。また、完了
リンク・リストをCQ_REG286に提示し、 CQ_REG28
6のライト完了時に、バス・マスタI/F300に割り
込みをセットすることを通知する役割も担う(ポステッ
ド・パケット及び割り込みパケットのみ)。完了キュー
状態機械304は、請求及び非請求イベントから完了パ
ケットを受け取る。要求キュー274に発行された割り
込みパケット、及びI/Oデバイス208によって非請
求データで満たされた非請求パケット・プール202か
ら発した全てのパケットには、完了が要求される。
【0076】プロセッサ100は、完了キューが処理さ
れ(service)、プロセッサ100が他の完了パケットの
リストの準備ができたときに、CQ_REG286のCQ_DOORB
ELLビットを鳴らす(ring)。メモリ112内の完了キュ
ー276がプロセッサ100によって処理されていない
場合、完了キュー状態機械304は、現完了パケットの
仮想アドレスを、直前に完了したパケット250のVAフ
ィールド270に書き込む。完了キュー状態機械304
は、次回パケットが完了を要求するときのために、現パ
ケット250の物理アドレスをテールTとしてセーブす
る。メモリ112内の完了キュー276が完了パケット
250のリストを受け入れる準備ができている場合、完
了パケットのリストにおける最初のパケット250の仮
想アドレスVAが、メモリ112の完了キュー276に書
き込まれる。完了キュー276のヘッドの物理アドレス
は、CQ_REG286内に位置付けられる。その後、完了キ
ュー状態機械204の内部ヘッド/テール・レジスタは
消去(null)され、新たな完了リストを開始する。完了
キュー状態機械304は、ドライバによって非同期要求
として提出されたパケット250も完了させる。非同期
パケット250内に指定されている処理が終了したな
ら、完了キュー状態機械304は、パケット250の仮
想アドレスVAを請求パケット・プール200のテールT
上に置く。請求パケット・プール200のテールTは、
FQ_REG 284を通じて、DBEデバイス206によっ
て維持される。パケットの仮想アドレスVAが直前のパケ
ットのVALINKフィールド260に書き込まれた後、完了
キュー状態機械304は、パケットの物理アドレスPAを
FQ_REG284内に置く。
れ(service)、プロセッサ100が他の完了パケットの
リストの準備ができたときに、CQ_REG286のCQ_DOORB
ELLビットを鳴らす(ring)。メモリ112内の完了キュ
ー276がプロセッサ100によって処理されていない
場合、完了キュー状態機械304は、現完了パケットの
仮想アドレスを、直前に完了したパケット250のVAフ
ィールド270に書き込む。完了キュー状態機械304
は、次回パケットが完了を要求するときのために、現パ
ケット250の物理アドレスをテールTとしてセーブす
る。メモリ112内の完了キュー276が完了パケット
250のリストを受け入れる準備ができている場合、完
了パケットのリストにおける最初のパケット250の仮
想アドレスVAが、メモリ112の完了キュー276に書
き込まれる。完了キュー276のヘッドの物理アドレス
は、CQ_REG286内に位置付けられる。その後、完了キ
ュー状態機械204の内部ヘッド/テール・レジスタは
消去(null)され、新たな完了リストを開始する。完了
キュー状態機械304は、ドライバによって非同期要求
として提出されたパケット250も完了させる。非同期
パケット250内に指定されている処理が終了したな
ら、完了キュー状態機械304は、パケット250の仮
想アドレスVAを請求パケット・プール200のテールT
上に置く。請求パケット・プール200のテールTは、
FQ_REG 284を通じて、DBEデバイス206によっ
て維持される。パケットの仮想アドレスVAが直前のパケ
ットのVALINKフィールド260に書き込まれた後、完了
キュー状態機械304は、パケットの物理アドレスPAを
FQ_REG284内に置く。
【0077】図18及び図19を参照し、完了キュー状
態機械の動作について説明する。完了キュー状態機械3
04は、システム・リセット時又はRESETモード時に、I
DEL状態430に初期化する。完了キュー状態機械30
4は、次の3つのイベントの1つが発生するまで、IDLE
状態で待機する。1)完了キュー・ドアベル(CQ_DOORBE
LL)が鳴らされ、完了キュー・バッファ314がヌルで
ない。2)完了した割り込みパケット20を、完了キュ
ー276のテールにリンクする必要がない。又は3)完
了した非同期パケットが、完了キュー276のテールT
にリンクする必要がある。完了キュー・ドアベル(CQ_DO
ORBELL)が鳴らされ、完了キュー・ヘッド・レジスタ(CQ
_HEAD)438がヌルでない場合、完了キュー状態機械3
04は、CQ_VALINKREG信号及びバス・マスタI/F30
0へのセット割り込み(SETINTERRUPT)信号をアサート
し、バス・マスタI/F300が割り込みの準備ができ
ているか否か調べる。CQ_HEAD438は、状態機械30
4によって維持され、完了リストを追跡する。バス・マ
スタI/F300は、CQ_VALINKACK信号によって応答
し、状態機械304は、MUX2に、CQ_REG内の物理アドレ
スを通過させ、次いで、CQ_HEAD内に位置する完了リス
トのヘッドの仮想アドレスをバス・マスタI/F300
に受け渡す。次に、CQ_HEAD及び完了キュー・ドアベル
・ビット(CQ_DOORBELL)をクリアし、状態機械304はW
AIT状態434に遷移する。
態機械の動作について説明する。完了キュー状態機械3
04は、システム・リセット時又はRESETモード時に、I
DEL状態430に初期化する。完了キュー状態機械30
4は、次の3つのイベントの1つが発生するまで、IDLE
状態で待機する。1)完了キュー・ドアベル(CQ_DOORBE
LL)が鳴らされ、完了キュー・バッファ314がヌルで
ない。2)完了した割り込みパケット20を、完了キュ
ー276のテールにリンクする必要がない。又は3)完
了した非同期パケットが、完了キュー276のテールT
にリンクする必要がある。完了キュー・ドアベル(CQ_DO
ORBELL)が鳴らされ、完了キュー・ヘッド・レジスタ(CQ
_HEAD)438がヌルでない場合、完了キュー状態機械3
04は、CQ_VALINKREG信号及びバス・マスタI/F30
0へのセット割り込み(SETINTERRUPT)信号をアサート
し、バス・マスタI/F300が割り込みの準備ができ
ているか否か調べる。CQ_HEAD438は、状態機械30
4によって維持され、完了リストを追跡する。バス・マ
スタI/F300は、CQ_VALINKACK信号によって応答
し、状態機械304は、MUX2に、CQ_REG内の物理アドレ
スを通過させ、次いで、CQ_HEAD内に位置する完了リス
トのヘッドの仮想アドレスをバス・マスタI/F300
に受け渡す。次に、CQ_HEAD及び完了キュー・ドアベル
・ビット(CQ_DOORBELL)をクリアし、状態機械304はW
AIT状態434に遷移する。
【0078】CQ_DOORBELLがセットされていないか、あ
るいはCQ_HEADが0に等しい場合で、かつバス・マスタ
I/F300からのレディ信号(GO)がセットされている
場合、状態機械304は、完了キュー276から最初の
DWORDを引き出し(現パケットの物理アドレス)、それ
を完了キュー・テール・レジスタCQ_TAIL440に書き
込む。このDWORDは、完了キュー276上の最後のパケ
ットの物理アドレスである。次に、状態機械304は、
BFR_HEAD状態436に遷移する。BFR_HEAD状態におい
て、現パケットの仮想アドレスを格納する。完了キュー
・ヘッド・レジスタが0に等しくなく、CQ_DOORBELLが
セットされていない場合、状態機械304はCQ_VALINKR
EQ信号をアサートし、直前のパケットの物理アドレス(C
Q_TAIL)をバス・マスタI/F300に受け渡す。バス
・マスタI/F300がCQ_VALINKACK信号で応答する
と、完了キュー・バッファ314の最初のDWORDがCQ_TA
ILレジスタ440に書き込まれ、状態機械304はASYN
CHPAK状態432に遷移する。(現パケットの仮想アド
レスは、直前のパケットの物理アドレス(CQ_TAIL )に書
き込まれる。)
るいはCQ_HEADが0に等しい場合で、かつバス・マスタ
I/F300からのレディ信号(GO)がセットされている
場合、状態機械304は、完了キュー276から最初の
DWORDを引き出し(現パケットの物理アドレス)、それ
を完了キュー・テール・レジスタCQ_TAIL440に書き
込む。このDWORDは、完了キュー276上の最後のパケ
ットの物理アドレスである。次に、状態機械304は、
BFR_HEAD状態436に遷移する。BFR_HEAD状態におい
て、現パケットの仮想アドレスを格納する。完了キュー
・ヘッド・レジスタが0に等しくなく、CQ_DOORBELLが
セットされていない場合、状態機械304はCQ_VALINKR
EQ信号をアサートし、直前のパケットの物理アドレス(C
Q_TAIL)をバス・マスタI/F300に受け渡す。バス
・マスタI/F300がCQ_VALINKACK信号で応答する
と、完了キュー・バッファ314の最初のDWORDがCQ_TA
ILレジスタ440に書き込まれ、状態機械304はASYN
CHPAK状態432に遷移する。(現パケットの仮想アド
レスは、直前のパケットの物理アドレス(CQ_TAIL )に書
き込まれる。)
【0079】CQ_DOORBELLがセットされていないか、あ
るいはCQ_HEADが0に等しい場合で、かつバス・マスタ
I/F300からのレディ信号(GO)がセットされ、現パ
ケットが非同期パケットであることをビット34:33
が示す場合、状態機械304はCQ_VALINKREQ信号をアサ
ートし、次のパケットの仮想アドレスをバス・マスタI
/F300に受け渡す。バス・マスタI/F300がCQ
_VALINKACK信号で応答すると、FQ_REG284の内容がバ
ス・マスタI/F300に受け渡され、完了キュー・バ
ッファ314からの最初のDWORDがFQ_REG284に書き
込まれ、完了キュー・バッファ314からの仮想アドレ
スがFQ_REG284の直前の内容に書き込まれ、状態機械
304はASYNCHPAK状態432に遷移する。ASYNCHPAK状
態432において、状態機械304は、GO信号がディア
サートされ、IDLE状態430に遷移するのを待つ。デバ
イス・ディキュー(DEVICEDQ)信号が受け取られ、AGAIN
信号がアサートされていない場合、MUX2がセットされ、
完了キュー・バッファ314からのアドレスを受け取
る。DEVICEDQ信号は、バス・マスタI/F300によっ
て供給され、完了キュー・バッファ314からデータを
引き出す。AGAIN信号は、状態機械304をASYNCHPAK状
態432に止めておく。MUX2は、本質的に、完了キュー
・バッファ314とFQ_REG284との間の切り替えを制
御する。GO信号がディアサートされると、状態機械はID
EL状態430に再び遷移する。WAIT状態434におい
て、状態機械304はIDLE状態430に戻る前に、割り
込みが発生したことの確認を待つ。INTROUT B信号をバ
ス・マスタI/F300から受け取った場合、CQ_HEAD
を消去し、状態機械はIDLE状態430に戻る。BRF_HEAD
状態436では、完了中の現パケットの仮想アドレス
を、完了した直前のパケットのVALINKフィールド260
に書き込む。
るいはCQ_HEADが0に等しい場合で、かつバス・マスタ
I/F300からのレディ信号(GO)がセットされ、現パ
ケットが非同期パケットであることをビット34:33
が示す場合、状態機械304はCQ_VALINKREQ信号をアサ
ートし、次のパケットの仮想アドレスをバス・マスタI
/F300に受け渡す。バス・マスタI/F300がCQ
_VALINKACK信号で応答すると、FQ_REG284の内容がバ
ス・マスタI/F300に受け渡され、完了キュー・バ
ッファ314からの最初のDWORDがFQ_REG284に書き
込まれ、完了キュー・バッファ314からの仮想アドレ
スがFQ_REG284の直前の内容に書き込まれ、状態機械
304はASYNCHPAK状態432に遷移する。ASYNCHPAK状
態432において、状態機械304は、GO信号がディア
サートされ、IDLE状態430に遷移するのを待つ。デバ
イス・ディキュー(DEVICEDQ)信号が受け取られ、AGAIN
信号がアサートされていない場合、MUX2がセットされ、
完了キュー・バッファ314からのアドレスを受け取
る。DEVICEDQ信号は、バス・マスタI/F300によっ
て供給され、完了キュー・バッファ314からデータを
引き出す。AGAIN信号は、状態機械304をASYNCHPAK状
態432に止めておく。MUX2は、本質的に、完了キュー
・バッファ314とFQ_REG284との間の切り替えを制
御する。GO信号がディアサートされると、状態機械はID
EL状態430に再び遷移する。WAIT状態434におい
て、状態機械304はIDLE状態430に戻る前に、割り
込みが発生したことの確認を待つ。INTROUT B信号をバ
ス・マスタI/F300から受け取った場合、CQ_HEAD
を消去し、状態機械はIDLE状態430に戻る。BRF_HEAD
状態436では、完了中の現パケットの仮想アドレス
を、完了した直前のパケットのVALINKフィールド260
に書き込む。
【0080】DBE/ブリッジ 次に図20を参照すると、図6のDのDBE/ブリッジ
216の更に詳細なブロック図が示されている。これ
は、一次PCIバスI/Fコントローラ500及び二次
PCIバスI/Fコントローラ502と共に示されてい
るが、代わりに、ホスト・バス102を含むその他のバ
スに、これらのインターフェースを適合化させることも
可能である。各PCIコントローラ500,502は、
マスタ及びスレーブI/Fを内蔵する。上述した同じパ
ケット・アーキテクチャ及びプロトコルが図11のハー
ドウエアに適用されるので、ここでは繰り返さないこと
にする。DBE/ブリッジ216は、2つの機能的半部
分において見ることができる。即ち、一方の半部分は一
次PCIバス114と通信し、他方の半部分は二次PC
Iバス115と通信する。一次PCIバス半部分は、一
次PCIバスI/Fコントローラ500,一次FIFO
504,一次ダイレクト・メモリ・アクセス(DMA)
コントローラ506、及び一次バースト・バッファ(P
BB)508を内蔵する。二次PCIバス半部分は、二
次PCIバスI/Fコントローラ502、二次FIFO
510、二次DMAコントローラ512、及び二次バー
スト・バッファ(SBB)514を内蔵する。バースト
・バッファ508,514は、好ましくは、デュアル・
ポート型とし、I/Oプロセッサ516及びDMAエン
ジン(506又は512)又はPCII/F(500又
は512)のいずれか双方の同時アクセスを可能とする
ことによって、PCIデバイス118、I/Oプロセッ
サ516、及びプロセッサ100間の潜在的なボトルネ
ックを全て解消する。しかしながら、従来のDRAM又
はSRAMのような他の形式のメモリも、バースト・バ
ッファ508,514を形成するために使用可能であ
る。
216の更に詳細なブロック図が示されている。これ
は、一次PCIバスI/Fコントローラ500及び二次
PCIバスI/Fコントローラ502と共に示されてい
るが、代わりに、ホスト・バス102を含むその他のバ
スに、これらのインターフェースを適合化させることも
可能である。各PCIコントローラ500,502は、
マスタ及びスレーブI/Fを内蔵する。上述した同じパ
ケット・アーキテクチャ及びプロトコルが図11のハー
ドウエアに適用されるので、ここでは繰り返さないこと
にする。DBE/ブリッジ216は、2つの機能的半部
分において見ることができる。即ち、一方の半部分は一
次PCIバス114と通信し、他方の半部分は二次PC
Iバス115と通信する。一次PCIバス半部分は、一
次PCIバスI/Fコントローラ500,一次FIFO
504,一次ダイレクト・メモリ・アクセス(DMA)
コントローラ506、及び一次バースト・バッファ(P
BB)508を内蔵する。二次PCIバス半部分は、二
次PCIバスI/Fコントローラ502、二次FIFO
510、二次DMAコントローラ512、及び二次バー
スト・バッファ(SBB)514を内蔵する。バースト
・バッファ508,514は、好ましくは、デュアル・
ポート型とし、I/Oプロセッサ516及びDMAエン
ジン(506又は512)又はPCII/F(500又
は512)のいずれか双方の同時アクセスを可能とする
ことによって、PCIデバイス118、I/Oプロセッ
サ516、及びプロセッサ100間の潜在的なボトルネ
ックを全て解消する。しかしながら、従来のDRAM又
はSRAMのような他の形式のメモリも、バースト・バ
ッファ508,514を形成するために使用可能であ
る。
【0081】また、DBE/ブリッジ216には、埋め
込みI/Oプロセッサ516も含まれており、プロセッ
サ100からの介入を受けずに、データを転送するため
に必要なインテリジェンス(intelligence)を与える。こ
れは、DBE/ブリッジ216に接続されているPCI
デバイス118を効果的にプロセッサ100から切り離
し、プロセッサ100、DBE/ブリッジ216、及び
PCIデバイス118間の同時性及び負荷均衡配分を最
大に高める。I/Oプロセッサ516は、好ましくは、
Advanced Micro Devices486プロセッサであるが、いず
れの形式のプロセッサでも使用可能である。データ・キ
ャッシュは、I/Oプロセッサ516においてはディス
エーブルされる。メモリ・コントローラを含ませ、デー
タ・キャッシュのコヒーレンシを確保することも可能で
ある。一次バースト・バッファ508の一部は、I/O
プロセッサ516のためのコードを格納するために割り
当てられる。あるいは、別個のリード・オンリ・メモリ
(ROM)を用いて、コード又はコンフィギュレーショ
ン情報を格納することも可能である。メモリ・コントロ
ーラは、I/Oプロセッサ516に結合され、プロセッ
サ・サイクルを、以下の分類にデコードする。ROMリ
ード/ライト、バースト・バッファ(ローカル・メモ
リ)ヒット、FIFOリード/ライト、DMAコントロ
ーラ・コンフィギュレーション、ローカル・レジスタ・
リード/ライト、16進ステータス・ディスプレイ・ラ
イト、PCIコンフィギュレーション、及びその他(P
CIサイクル)である。あるサイクルがローカル・アド
レス空間に該当しない場合、このサイクルをPCIサイ
クルに変換する。
込みI/Oプロセッサ516も含まれており、プロセッ
サ100からの介入を受けずに、データを転送するため
に必要なインテリジェンス(intelligence)を与える。こ
れは、DBE/ブリッジ216に接続されているPCI
デバイス118を効果的にプロセッサ100から切り離
し、プロセッサ100、DBE/ブリッジ216、及び
PCIデバイス118間の同時性及び負荷均衡配分を最
大に高める。I/Oプロセッサ516は、好ましくは、
Advanced Micro Devices486プロセッサであるが、いず
れの形式のプロセッサでも使用可能である。データ・キ
ャッシュは、I/Oプロセッサ516においてはディス
エーブルされる。メモリ・コントローラを含ませ、デー
タ・キャッシュのコヒーレンシを確保することも可能で
ある。一次バースト・バッファ508の一部は、I/O
プロセッサ516のためのコードを格納するために割り
当てられる。あるいは、別個のリード・オンリ・メモリ
(ROM)を用いて、コード又はコンフィギュレーショ
ン情報を格納することも可能である。メモリ・コントロ
ーラは、I/Oプロセッサ516に結合され、プロセッ
サ・サイクルを、以下の分類にデコードする。ROMリ
ード/ライト、バースト・バッファ(ローカル・メモ
リ)ヒット、FIFOリード/ライト、DMAコントロ
ーラ・コンフィギュレーション、ローカル・レジスタ・
リード/ライト、16進ステータス・ディスプレイ・ラ
イト、PCIコンフィギュレーション、及びその他(P
CIサイクル)である。あるサイクルがローカル・アド
レス空間に該当しない場合、このサイクルをPCIサイ
クルに変換する。
【0082】異なるPCIデバイス118と通信すると
きに、種々のステータス及びコマンド・フォーマット
を、デバイス・ドライバ230が理解することのできる
パケット250にカプセル化するのは、I/Oプロセッ
サ516の役割である。PCIバスの最大速度でのバー
スト処理を容易に行うために、一次(PBB)及び二次
(SBB)バースト・バッファ504,506が設けら
れており、これらは、一次及び二次ダイレクト・メモリ
・アクセス(DMA)コントローラ508,510によ
ってそれぞれ制御される。一次DMAコントローラ50
8は、一次バースト・バッファ504と一次PCIバス
114との間でデータを転送する役割を担う。二次DM
Aコントローラ510は、二次バースト・バッファ50
6と二次PCIバス115との間でデータを転送する役
割を担う。一次及び二次FIFO504,510は、D
MAコントローラ506,512に転送を行わせること
に加えて、そしてそれに代わる更に効率的な代替案とし
て、データを転送するために設けられている。DMAコ
ントローラ506又は512の一方によってデータが転
送される場合、一次及び二次PCIバス114,115
双方を利用する。例えば、二次DMAコントローラ51
2がデータを二次バースト・バッファ514からメモリ
112に転送しようとした場合、二次PCIバス115
だけでなく、一次PCIバス114も使用不可能とな
る。データは、一次及び二次バースト・バッファ50
8,514において、主にDBE/ブリッジ216内に
受け取られる。したがって、DMAコントローラ50
6,512にデータを一次及び二次バースト・バッファ
508,514からDBE/ブリッジ216外部に移動
させる代わりに、DMAコントローラ506,512
は、データをFIFO504,510内に移動させるこ
とができる。その後、PCIバス114,115双方に
影響を与えることなく、FIFO504,510の一方
からデータを移動させることができる。例えば、PCI
デバイス118がデータを二次バースト・バッファ51
4に書き込む場合、二次DMAコントローラ512は、
データを一次FIFO504に移動させることができ
る。一旦これが行われたなら、二次PCII/F502
が他のデータ・ブロックを受け取っている間、一次PC
II/F500からデータを転送することができる。
きに、種々のステータス及びコマンド・フォーマット
を、デバイス・ドライバ230が理解することのできる
パケット250にカプセル化するのは、I/Oプロセッ
サ516の役割である。PCIバスの最大速度でのバー
スト処理を容易に行うために、一次(PBB)及び二次
(SBB)バースト・バッファ504,506が設けら
れており、これらは、一次及び二次ダイレクト・メモリ
・アクセス(DMA)コントローラ508,510によ
ってそれぞれ制御される。一次DMAコントローラ50
8は、一次バースト・バッファ504と一次PCIバス
114との間でデータを転送する役割を担う。二次DM
Aコントローラ510は、二次バースト・バッファ50
6と二次PCIバス115との間でデータを転送する役
割を担う。一次及び二次FIFO504,510は、D
MAコントローラ506,512に転送を行わせること
に加えて、そしてそれに代わる更に効率的な代替案とし
て、データを転送するために設けられている。DMAコ
ントローラ506又は512の一方によってデータが転
送される場合、一次及び二次PCIバス114,115
双方を利用する。例えば、二次DMAコントローラ51
2がデータを二次バースト・バッファ514からメモリ
112に転送しようとした場合、二次PCIバス115
だけでなく、一次PCIバス114も使用不可能とな
る。データは、一次及び二次バースト・バッファ50
8,514において、主にDBE/ブリッジ216内に
受け取られる。したがって、DMAコントローラ50
6,512にデータを一次及び二次バースト・バッファ
508,514からDBE/ブリッジ216外部に移動
させる代わりに、DMAコントローラ506,512
は、データをFIFO504,510内に移動させるこ
とができる。その後、PCIバス114,115双方に
影響を与えることなく、FIFO504,510の一方
からデータを移動させることができる。例えば、PCI
デバイス118がデータを二次バースト・バッファ51
4に書き込む場合、二次DMAコントローラ512は、
データを一次FIFO504に移動させることができ
る。一旦これが行われたなら、二次PCII/F502
が他のデータ・ブロックを受け取っている間、一次PC
II/F500からデータを転送することができる。
【0083】このバースト・バッファ508,514と
一次及び二次FIFO間のデータの移動を容易に行うた
めに、スイッチ518及びマルチプレクサ520を設
け、図20に示すようにデータを通過させ、データの経
路を決定する。加えて、DBE/ブリッジ216は、ド
アベル・レジスタ520を含む多数のレジスタを備えて
いる。また、一次PCIバス114と二次PCIバス1
15との間に接続されているI/Oプロセッサ・ブリッ
ジ・バイパス回路(IOPブリッジ・バイパス)530
も示されている。好ましくは、これは、IBM 82352PCI-P
CIブリッジのような、従来からのPCI−PCI間ブリ
ッジ・デバイスである。バイパス・ブリッジ530は、
二次PCIバス115に対する調停を行い、二次PCI
バス115及びそれに関連する割り込みを、一次PCI
バス114から効果的に分離する。
一次及び二次FIFO間のデータの移動を容易に行うた
めに、スイッチ518及びマルチプレクサ520を設
け、図20に示すようにデータを通過させ、データの経
路を決定する。加えて、DBE/ブリッジ216は、ド
アベル・レジスタ520を含む多数のレジスタを備えて
いる。また、一次PCIバス114と二次PCIバス1
15との間に接続されているI/Oプロセッサ・ブリッ
ジ・バイパス回路(IOPブリッジ・バイパス)530
も示されている。好ましくは、これは、IBM 82352PCI-P
CIブリッジのような、従来からのPCI−PCI間ブリ
ッジ・デバイスである。バイパス・ブリッジ530は、
二次PCIバス115に対する調停を行い、二次PCI
バス115及びそれに関連する割り込みを、一次PCI
バス114から効果的に分離する。
【0084】図21のAは、PCIデバイス118及び
ホスト100間の転送を示すフロー・チャートである。
このプロセスは、典型的に、PCIデバイス118がメ
ッセージ/データを二次バースト・バッファ514に転
記(post)したときに開始する。あるいは、PCIデバイ
ス118がDBEプロトコルに準拠する場合、PCIデ
バイス118はデータを直接メモリ112に転記するこ
とができる。ステップ550において、PCIデバイス
118が適正なフォーマットでデータを供給可能か否か
について判定を行う。可能であれば、処理はステップ5
52に進み、PCIデバイス118は、適正にフォーマ
ットされたデータ/メッセージを直接メモリ112に転
記する。この場合、I/Oプロセッサ516は、PCI
デバイス118に対してアドミニストレータ(administr
ator)となり、バイパス・ブリッジ530を用いて、デー
タ/メッセージをホスト100に移動させる。可能でな
い場合、処理はステップ554に進み、PCIデバイス
118はデータ/メッセージを二次バースト・バッファ
514に転記する。ステップ556において、I/Oプ
ロセッサ516は、このデータ/メッセージをDBEと
互換性のあるプロトコルに変換し、データ/メッセージ
をパケット250にカプセル化する。データ/メッセー
ジをフォーマットした後、ステップ558において、デ
ータ/メッセージは、DMA転送によってホスト100
に送出するか、あるいは一次FIFO554に転記する
ことができる。データ/メッセージを一次FIFO55
4に転記することによって、データの連続的な順序が保
証される。
ホスト100間の転送を示すフロー・チャートである。
このプロセスは、典型的に、PCIデバイス118がメ
ッセージ/データを二次バースト・バッファ514に転
記(post)したときに開始する。あるいは、PCIデバイ
ス118がDBEプロトコルに準拠する場合、PCIデ
バイス118はデータを直接メモリ112に転記するこ
とができる。ステップ550において、PCIデバイス
118が適正なフォーマットでデータを供給可能か否か
について判定を行う。可能であれば、処理はステップ5
52に進み、PCIデバイス118は、適正にフォーマ
ットされたデータ/メッセージを直接メモリ112に転
記する。この場合、I/Oプロセッサ516は、PCI
デバイス118に対してアドミニストレータ(administr
ator)となり、バイパス・ブリッジ530を用いて、デー
タ/メッセージをホスト100に移動させる。可能でな
い場合、処理はステップ554に進み、PCIデバイス
118はデータ/メッセージを二次バースト・バッファ
514に転記する。ステップ556において、I/Oプ
ロセッサ516は、このデータ/メッセージをDBEと
互換性のあるプロトコルに変換し、データ/メッセージ
をパケット250にカプセル化する。データ/メッセー
ジをフォーマットした後、ステップ558において、デ
ータ/メッセージは、DMA転送によってホスト100
に送出するか、あるいは一次FIFO554に転記する
ことができる。データ/メッセージを一次FIFO55
4に転記することによって、データの連続的な順序が保
証される。
【0085】図21の(B)に示すホスト−PCIデバ
イス118間の転送では、データ/メッセージをPCI
デバイス118に送るプロセスは、 PCIデバイス−
ホスト間転送(図21のA)と同様である。ステップ5
60において、ホスト100がPCIデバイス118と
直接通信可能か否かについて判定を行う。可能であれ
ば、ステップ562において、ホストはデータ/メッセ
ージを直接バイパス・ブリッジ530を通じてPCIデ
バイス118に送る。可能でない場合、ステップ564
において、ホスト100は要求をメモリ112に書き込
み、対応するドアベル520を鳴らす。ドアベル520
は、I/Oプロセッサ516に割り込みを発生させる。
ドアベルが鳴らされた場合、ステップ566においてI
/Oプロセッサ516は、割り込み源を判定し、その割
り込みを処理し、ドアベルをクリアする。I/Oプロセ
ッサは、請求パケット及び非請求パケットを、DBEデ
バイス206と同様に取り扱う。以上、ホスト100と
I/Oデバイス208との間でパケット250を移動す
るためのパケット・プロトコル及び複数の選択可能なハ
ードウエア・エンジンを説明した。
イス118間の転送では、データ/メッセージをPCI
デバイス118に送るプロセスは、 PCIデバイス−
ホスト間転送(図21のA)と同様である。ステップ5
60において、ホスト100がPCIデバイス118と
直接通信可能か否かについて判定を行う。可能であれ
ば、ステップ562において、ホストはデータ/メッセ
ージを直接バイパス・ブリッジ530を通じてPCIデ
バイス118に送る。可能でない場合、ステップ564
において、ホスト100は要求をメモリ112に書き込
み、対応するドアベル520を鳴らす。ドアベル520
は、I/Oプロセッサ516に割り込みを発生させる。
ドアベルが鳴らされた場合、ステップ566においてI
/Oプロセッサ516は、割り込み源を判定し、その割
り込みを処理し、ドアベルをクリアする。I/Oプロセ
ッサは、請求パケット及び非請求パケットを、DBEデ
バイス206と同様に取り扱う。以上、ホスト100と
I/Oデバイス208との間でパケット250を移動す
るためのパケット・プロトコル及び複数の選択可能なハ
ードウエア・エンジンを説明した。
【0086】本発明の上述の開示及び説明は、本発明の
例示及び説明のためのものであり、サイズ、形状、材
料、構成部品、回路素子、配線接続及びコンタクト、な
らびに図示の回路及び構造や、動作方法の詳細におい
て、本発明の精神から逸脱することなく、様々な変更が
可能である。
例示及び説明のためのものであり、サイズ、形状、材
料、構成部品、回路素子、配線接続及びコンタクト、な
らびに図示の回路及び構造や、動作方法の詳細におい
て、本発明の精神から逸脱することなく、様々な変更が
可能である。
【図1】本発明によるコンピュータ・システムCのブロ
ック図である。
ック図である。
【図2】Aは、好適な実施形態による本発明のシステム
・アーキテクチャを示すブロック図である。Bは、好適
な実施形態による本発明のソフトウエア・システム・ア
ーキテクチャを示すブロック図である。
・アーキテクチャを示すブロック図である。Bは、好適
な実施形態による本発明のソフトウエア・システム・ア
ーキテクチャを示すブロック図である。
【図3】好適な実施形態によるパケット・アーキテクチ
ャを示すブロック図である。
ャを示すブロック図である。
【図4】好適な実施形態によるパケット・キューを示す
ブロック図である。
ブロック図である。
【図5】好適な実施形態によるDBEデバイスのハード
ウエア・レジスタを示すブロック図である。
ウエア・レジスタを示すブロック図である。
【図6】Aは、PCIバスに沿ったDBEデバイスの第1
の配置を示すブロック図である。Bは、図1のホスト/
PCIブリッジにおけるDBEデバイスの第2の実施形態
を示すブロック図である。Cは、ブリッジ/メモリ・コ
ントローラ・デバイスにおけるDBEデバイスの第3の
実施形態を示すブロック図である。Dは、PCI/PCIブリ
ッジにおけるDBEデバイスの第4の実施形態を示すブ
ロック図である。
の配置を示すブロック図である。Bは、図1のホスト/
PCIブリッジにおけるDBEデバイスの第2の実施形態
を示すブロック図である。Cは、ブリッジ/メモリ・コ
ントローラ・デバイスにおけるDBEデバイスの第3の
実施形態を示すブロック図である。Dは、PCI/PCIブリ
ッジにおけるDBEデバイスの第4の実施形態を示すブ
ロック図である。
【図7】好適な実施形態によるDBEデバイスの更なる
詳細を示すブロック図である。
詳細を示すブロック図である。
【図8】好適な実施形態によるDBEデバイスの要求キ
ュー・フロント・エンド状態機械及びポステッド・キュ
ー・フロント・エンド状態機械のブロック図である。
ュー・フロント・エンド状態機械及びポステッド・キュ
ー・フロント・エンド状態機械のブロック図である。
【図9】要求キュー・フロント・エンド状態機械の状態
遷移図、状態遷移条件、及び出力を示す図である。
遷移図、状態遷移条件、及び出力を示す図である。
【図10】ポステド・キュー・フロント・エンド状態機
械の状態遷移図、状態遷移条件、及び出力を示す図であ
る。
械の状態遷移図、状態遷移条件、及び出力を示す図であ
る。
【図11】好適な実施形態によるDBEデバイスの要求
キュー・バック・エンド状態機械及びポステッド・キュ
ー・バック・エンド状態機械のブロック図である。
キュー・バック・エンド状態機械及びポステッド・キュ
ー・バック・エンド状態機械のブロック図である。
【図12】要求キュー・フロント・エンド状態機械の状
態遷移図である。
態遷移図である。
【図13】要求キュー・フロント・エンド状態機械の状
態遷移条件、及び出力を示す図である。
態遷移条件、及び出力を示す図である。
【図14】要求キュー・フロント・エンド状態機械の出
力を示す図である。
力を示す図である。
【図15】ポステド・キュー・フロント・エンド状態機
械の状態遷移図、状態遷移条件、及び出力を示す図であ
る。
械の状態遷移図、状態遷移条件、及び出力を示す図であ
る。
【図16】好適な実施形態によるDBEデバイスの完了
キュー状態機械のブロック図である。
キュー状態機械のブロック図である。
【図17】好適な実施形態による図7のバス・マスタ・
インターフェースのプロセスを示すフロー・チャートで
ある。
インターフェースのプロセスを示すフロー・チャートで
ある。
【図18】完了キュー状態機械の状態遷移図、及び状態
遷移条件を示す図である。
遷移条件を示す図である。
【図19】完了キュー状態機械の出力を示す図である。
【図20】DBEデバイスの代替実施例を示すブロック
図である。
図である。
【図21】デバイス−ホスト間転送及びホスト−デバイ
ス間転送を示すフロー・チャートである。
ス間転送を示すフロー・チャートである。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591030868 20555 State Highway 249,Houston,Texas 77070,United States o f America (72)発明者 マイケル・ピー・モリアーティ アメリカ合衆国テキサス州77379,スプリ ング,サニー・ポイント・ドライブ 8830 (72)発明者 マイケル・ピー・メディナ アメリカ合衆国テキサス州77090,ヒュー ストン,ドミニオン・パーク・ドライブ 211,ナンバー 205
Claims (37)
- 【請求項1】 コンピュータ・システムにおいて仮想/
物理アドレスの変換を不要とする通信方法であって、前
記コンピュータがメモリを有し、システム・ソフトウエ
アを処理してデバイスと通信することが可能であり、前
記方法が、 (a)メモリ内の第1アドレスにおいて第1パケットを
形成するステップであって、前記第1アドレスが、前記
システム・ソフトウエアに対して仮想アドレスであり、
前記デバイスに対して物理アドレスであり、前記第1パ
ケットが多数のフィールドを有している、ステップと、 (b)メモリ内の第2アドレスにおいて第2パケットを
形成するステップであって、前記第2アドレスが前記シ
ステム・ソフトウエアに対して仮想アドレスであり、前
記デバイスに対して物理アドレスであり、前記第2パケ
ットが多数のフィールドを有している、ステップと、 (c)前記第2パケットの前記仮想アドレスを、前記第
1パケットの第1フィールドに格納するステップと、 (d)前記第2パケットの前記物理アドレスを、前記第
1パケットの第2フィールドに格納するステップと、 (e)前記第1パケットの前記第1フィールドを読み取
り、前記第2パケットの前記仮想アドレスを得るステッ
プと、 (f)前記第1パケットの前記第2フィールドを読み取
り、前記第2パケットの前記物理アドレスを得るステッ
プとから成り、これによって、パケットのリンク・リス
トを形成し、各パケットを互いに仮想及び物理アドレス
によってリンクすることを特徴とする方法。 - 【請求項2】 請求項1記載の方法において、前記シス
テム・ソフトウエアがステップ(e)を実行して、前記
仮想アドレスを獲得することを特徴とする方法。 - 【請求項3】 請求項1記載の方法において、前記デバ
イスがステップ(f)を実行し、前記物理アドレスを獲
得することを特徴とする方法。 - 【請求項4】 ホスト・プロセッサ及びデバイスと通信
する装置であって、前記ホストは、少なくとも1つのパ
ケット・プールを格納するメモリを有し、各プールがパ
ケットのリンク・リストから成り、各パケットが、前記
リンク・リストを形成するために、次のパケットの物理
アドレスを収容するための物理アドレス・フィールドを
含むヘッダを有しており、前記装置が、 前記リンク・リストの次のパケットの物理アドレスを保
持するように動作可能な要求ヘッド・レジスタと、 前記リンク・リストの最後のパケットの物理アドレスを
保持するように動作可能なフリー・キュー・レジスタ
と、 パケットを保持する要求キューであって、パケットが内
部にある場合、満杯指示を与えるように動作可能な要求
キューと、 前記ホストから、次のパケットが処理のために使用可能
であることの指示を受け取る要求ドアベル・レジスタ
と、 完了リストの物理アドレスを保持する完了ヘッド・レジ
スタと、 パケットを保持する完了キューと、 前記ホストから、前記完了キューが処理されたこと、及
び前記ホストがパケットを受け取る準備ができているこ
との指示を受け取る完了ドアベル・レジスタと、 前記要求キューに結合され、前記要求ドアベル・レジス
タに応答する第1フロント・エンド・コントローラであ
って、前記要求ドアベル・レジスタが鳴らされたとき
に、前記要求ヘッド・レジスタ内に格納されている物理
アドレスに応じて、メモリからパケットを読み出し、該
パケットを前記要求キューに格納する第1フロント・エ
ンド・コントローラと、 前記要求キューと前記完了キューとに結合され、前記要
求キューの満杯指示に応答する第1バック・エンド・コ
ントローラであって、前記要求キューが空でない場合
に、前記要求キューからパケットを読み出し、該パケッ
トを前記デバイスに供給する第1バック・エンド・コン
トローラであって、前記デバイスが前記パケットの処理
を完了したときに、前記パケットを前記完了キューに供
給する第1バック・エンド・コントローラと、 前記完了キューに結合され、前記完了ドアベル・レジス
タと前記完了ヘッド・レジスタとに応答する完了コント
ローラであって、前記完了キューからのパケットを完了
し、前記メモリに戻すように動作可能な完了コントロー
ラとからなることを特徴とする装置。 - 【請求項5】 請求項4記載の装置であって、該装置は
更に、 前記リンク・リストの次のパケットの物理アドレスを保
持するポステッド・ヘッド・レジスタと、 非請求要求に使用するために前記デバイスによって利用
可能なパケットを保持するポステッド・キューと、 前記ホストから、次のパケットがメモリ内で前記デバイ
スに利用可能であるという指示を受け取るポステッド・
ドアベル・レジスタと、 前記ポステッド・キューに結合され、前記ポステッド・
ドアベル・レジスタに応答する第2フロント・エンド・
コントローラであって、メモリからポステッド・パケッ
トを読み出し、該パケットを前記ポステッド・キューに
書き込む第2フロント・エンド・コントローラと、 前記ポステッド・キュー及び前記完了キューに結合さ
れ、前記デバイスに応答する第2バック・エンド・コン
トローラであって、前記ポステッド・キューが空でない
ときに、前記ポステッド・キューからパケットを獲得
し、該パケットを前記デバイスに供給する第2バック・
エンド・コントローラであって、更に、前記デバイスが
前記パケットの処理を完了したときに、前記パケットを
前記完了キューに供給する第2バック・エンド・コント
ローラとを備えることを特徴とする装置。 - 【請求項6】 請求項5記載の装置において、前記第2
バック・エンド・コントローラが更に、前記ホストが前
記ポステッド・ドアベル・レジスタを鳴らすことに応答
して、メモリからパケットを獲得することを特徴とする
装置。 - 【請求項7】 請求項4記載の装置において、 該装置は更に、前記完了リストの最後のパケットの物理
アドレスを保持する完了テール・レジスタを備え、 各パケットが、前記リンク・リストを形成するために、
次のパケットの仮想アドレスを収容する仮想アドレス・
フィールドを含み、前記完了ドアベル・レジスタがセッ
トされた場合、前記完了コントローラが、更に、前記完
了ドアベル・レジスタをクリアすることを特徴とする装
置。 - 【請求項8】 請求項7記載の装置において、前記完了
ヘッド・レジスタが空の場合、前記完了コントローラ
が、前記完了したパケットの物理アドレスを前記完了テ
ール・レジスタに書き込み、前記完了したパケットの仮
想アドレスを前記完了ヘッド・レジスタに書き込むこと
を特徴とする装置。 - 【請求項9】 請求項7記載の装置において、前記完了
ヘッド・レジスタが空でない場合、前記完了コントロー
ラが、前記完了したパケットの仮想アドレスを、前記完
了テール・レジスタによって指示されるパケットの物理
アドレス・フィールドに書き込み、更に前記完了したパ
ケットの物理アドレスを前記完了テール・レジスタに書
き込むように動作可能であることを特徴とする装置。 - 【請求項10】 請求項7記載の装置において、前記パ
ケットが、非同期パケット、ポール・パケット、及び割
り込みパケットとして特徴付けられ、前記完了したパケ
ットが割り込みパケットである場合、前記完了コントロ
ーラが、更に、前記完了ドアベル・レジスタをクリアし
た後に、割り込みを前記ホストに発生することを特徴と
する装置。 - 【請求項11】 請求項7記載の装置において、前記完
了コントローラが、更に、前記完了したパケットの物理
アドレスをクリアし、前記完了ヘッド・レジスタに書き
込むことを特徴とする装置。 - 【請求項12】 請求項4記載の装置において、各パケ
ットが、前記リンク・リストを形成するために、次のパ
ケットの仮想アドレスを収容する仮想アドレス・フィー
ルドを含み、前記完了ドアベル・レジスタがセットされ
ていない場合、前記完了コントローラが、更に、前記完
了したパケットの仮想アドレスを、前記完了ヘッド・レ
ジスタによって指示されるパケットに書き込むことを特
徴とする装置。 - 【請求項13】 請求項4記載の装置において、各パケ
ットが、前記リンク・リストを形成するために、次のパ
ケットの仮想アドレスを収容する仮想アドレス・フィー
ルドを含み、前記パケットが、非同期パケット、ポール
・パケット、及び割り込みパケットとして特徴付けら
れ、前記完了したパケットが非同期パケットである場
合、前記完了コントローラが、更に、前記完了したパケ
ットの仮想アドレスを、前記フリー・キュー・レジスタ
によって指示されるパケットに書き込むことを特徴とす
る装置。 - 【請求項14】 請求項4記載の装置において、前記第
1フロント・エンド・コントローラがメモリから次のパ
ケットを読み出した後、前記第1フロント・エンド・コ
ントローラが、前記要求ヘッド・レジスタ内に格納され
ている前記物理アドレスを、前記次のパケットのヘッダ
内に収容されている物理アドレスと交換することを特徴
とする装置。 - 【請求項15】 請求項14記載の装置において、前記
第1フロント・エンド・コントローラが、前記次のパケ
ットのヘッダ内に収容されている物理アドレスが空とな
るまで、メモリからのパケットの読み出しを継続するこ
とを特徴とする装置。 - 【請求項16】 請求項4記載の装置において、前記パ
ケット・ヘッダが、ダイレクト・アクセスを示すビット
を含み、前記ダイレクト・アクセス・ビットがセットさ
れているパケットが前記バック・エンド・コントローラ
によって受け取られた場合、前記バック・エンド・コン
トローラが、前記ホストから特殊なコマンドを受け取る
まで、パケットの処理を停止することを特徴とする装
置。 - 【請求項17】 請求項4記載の装置において、 前記デバイスがデータを直接メモリから読み取り可能で
あり、 前記デバイスに供給されるペイロードが、該デバイスが
読み取るメモリ内のデータのアドレス範囲を含むことを
特徴とする装置。 - 【請求項18】 請求項4記載の装置において、前記デ
バイスがデータを読み取ることが可能であり、前記デバ
イスに供給されるペイロードがデータを含むことを特徴
とする装置。 - 【請求項19】 請求項4記載の装置において、前記ホ
ストが、キャッシュラインを有するキャッシュを含み、
前記ペイロードがキャッシュラインに整合されているこ
とを特徴とする装置。 - 【請求項20】 請求項4記載の装置において、前記ド
アベル・レジスタがメモリ・マッピングされていること
を特徴とする装置。 - 【請求項21】 自動ダイレクト・メモリ・アクセスを
有するコンピュータ・システムであって、 少なくとも1つのパケット・プールを格納する主メモリ
であって、各プールがパケットのリンク・リストから成
り、各パケットが、前記リンク・リストを形成するため
に、次のパケットの物理アドレスを収容するための物理
アドレス・フィールドを含むヘッダを有する主メモリ
と、 前記主メモリに結合されたプロセッサと、 大容量記憶サブシステムと、 前記大容量記憶サブシステムと前記主メモリとの間に結
合された分散型バースト・エンジンとを備え、前記分散
型バースト・エンジンが、 前記リンク・リストの次のパケットの物理アドレスを保
持する要求ヘッド・レジスタと、 前記リンク・リストの最後のパケットの物理アドレスを
保持するフリー・キュー・レジスタと、 パケットを保持する要求キューであって、パケットが内
部にある場合、満杯指示を与える要求キューと、 前記ホストから、次のパケットが処理のために使用可能
であることの指示を受け取る要求ドアベル・レジスタ
と、 完了リストの物理アドレスを保持する完了ヘッド・レジ
スタと、 パケットを保持する完了キューと、 前記ホストから、前記完了キューが処理されたこと、及
び前記プロセッサがパケットを受け取る準備ができてい
ることの指示を受け取る完了ドアベル・レジスタと、 前記要求キューに結合され、前記要求ドアベル・レジス
タに応答する第1フロント・エンド・コントローラであ
って、前記要求ドアベル・レジスタが鳴らされたとき
に、前記要求ヘッド・レジスタ内に格納されている物理
アドレスに応じて、メモリからパケットを読み出し、該
パケットを前記要求キューに格納する第1フロント・エ
ンド・コントローラと、 前記要求キューと前記完了キューとに結合され、前記要
求キューの満杯指示に応答する第1バック・エンド・コ
ントローラであって、前記要求キューが空でない場合
に、前記要求キューからパケットを読み出し、該パケッ
トを前記大容量記憶サブシステムに供給する第1バック
・エンド・コントローラであって、前記大容量記憶サブ
システムが前記パケットの処理を完了したときに、前記
パケットを前記完了キューに供給する第1バック・エン
ド・コントローラと、 前記完了キューに結合され、前記完了ドアベル・レジス
タと前記完了ヘッド・レジスタとに応答する完了コント
ローラであって、前記完了キューからのパケットを完了
し、前記メモリに戻す完了コントローラとを備えている
ことを特徴とするコンピュータ・システム。 - 【請求項22】 請求項21記載のコンピュータ・シス
テムにおいて、前記分散型バースト・エンジンが、更
に、 前記リンク・リストの次のパケットの物理アドレスを保
持するポステッド・ヘッド・レジスタと、 前記大容量記憶サブシステムによって非請求要求のため
に使用するために利用可能なパケットを保持するポステ
ッド・キューと、 前記プロセッサから、次のパケットがメモリ内で前記大
容量記憶サブシステムのために利用可能であるという指
示を受け取るポステッド・ドアベル・レジスタと、 前記ポステッド・キューに結合され、前記ポステッド・
ドアベル・レジスタに応答する第2フロント・エンド・
コントローラであって、メモリからポステッド・パケッ
トを読み出し、該パケットを前記ポステッド・キューに
書き込む第2フロント・エンド・コントローラと、 前記ポステッド・キュー及び前記完了キューに結合さ
れ、前記大容量記憶サブシステムに応答する第2バック
・エンド・コントローラであって、前記ポステッド・キ
ューが空でないときに、前記ポステッド・キューからパ
ケットを獲得し、該パケットを前記大容量記憶サブシス
テムに供給する第2バック・エンド・コントローラであ
って、更に、前記大容量記憶サブシステムが前記パケッ
トの処理を完了したときに、前記パケットを前記完了キ
ューに供給する第2バック・エンド・コントローラとを
備えることを特徴とするコンピュータ・システム。 - 【請求項23】 請求項22記載のコンピュータ・シス
テムにおいて、前記第2バック・エンド・コントローラ
が、更に、前記プロセッサが前記ポステッド・ドアベル
・レジスタを鳴らすことに応答して、メモリからパケッ
トを獲得することを特徴とするコンピュータ・システ
ム。 - 【請求項24】 請求項21記載のコンピュータ・シス
テムにおいて、 前記分散型バースト・エンジンが、更に、前記完了リス
トの最後のパケットの物理アドレスを保持する完了テー
ル・レジスタを備え、 各パケットが、前記リンク・リストを形成するために、
次のパケットの仮想アドレスを収容する仮想アドレス・
フィールドを含み、前記完了ドアベル・レジスタがセッ
トされた場合、前記完了コントローラが、更に、前記完
了ドアベル・レジスタをクリアすることを特徴とするコ
ンピュータ・システム。 - 【請求項25】 請求項24記載のコンピュータ・シス
テムにおいて、前記完了ヘッド・レジスタが空の場合、
前記完了コントローラが、前記完了したパケットの物理
アドレスを前記完了テール・レジスタに書き込み、前記
完了したパケットの仮想アドレスを前記完了ヘッド・レ
ジスタに書き込むことを特徴とするコンピュータ・シス
テム。 - 【請求項26】 請求項24記載のコンピュータ・シス
テムにおいて、前記完了ヘッド・レジスタが空でない場
合、前記完了コントローラが、前記完了したパケットの
仮想アドレスを、前記完了テール・レジスタによって指
示されるパケットの物理アドレス・フィールドに書き込
み、更に前記完了したパケットの物理アドレスを前記完
了テール・レジスタに書き込むことを特徴とするコンピ
ュータ・システム。 - 【請求項27】 請求項24記載のコンピュータ・シス
テムにおいて、前記パケットが、非同期パケット、ポー
ル・パケット、及び割り込みパケットとして特徴付けら
れ、前記完了したパケットが割り込みパケットである場
合、前記完了コントローラが、更に、前記完了ドアベル
・レジスタをクリアした後に、割り込みを前記プロセッ
サに発生することを特徴とするコンピュータ・システ
ム。 - 【請求項28】 請求項24記載のコンピュータ・シス
テムにおいて、前記完了コントローラが、更に、前記完
了したパケットの物理アドレスをクリアし、前記完了ヘ
ッド・レジスタに書き込むことを特徴とするコンピュー
タ・システム。 - 【請求項29】 請求項21記載のコンピュータ・シス
テムにおいて、各パケットが、前記リンク・リストを形
成するために、次のパケットの仮想アドレスを収容する
仮想アドレス・フィールドを含み、前記完了ドアベル・
レジスタがセットされていない場合、前記完了コントロ
ーラが、更に、前記完了したパケットの仮想アドレス
を、前記完了ヘッド・レジスタによって指示されるパケ
ットに書き込むことを特徴とするコンピュータ・システ
ム。 - 【請求項30】 請求項21記載のコンピュータ・シス
テムにおいて、各パケットが、前記リンク・リストを形
成するために、次のパケットの仮想アドレスを収容する
仮想アドレス・フィールドを含み、前記パケットが、非
同期パケット、ポール・パケット、及び割り込みパケッ
トとして特徴付けられ、前記完了したパケットが非同期
パケットである場合、前記完了コントローラが、更に、
前記完了したパケットの仮想アドレスを、前記フリー・
キュー・レジスタによって指示されるパケットに書き込
むことを特徴とするコンピュータ・システム。 - 【請求項31】 請求項21記載のコンピュータ・シス
テムにおいて、前記第1フロント・エンド・コントロー
ラがメモリから次のパケットを読み出した後、前記第1
フロント・エンド・コントローラが、前記要求ヘッド・
レジスタ内に格納されている前記物理アドレスを、前記
次のパケットのヘッダ内に収容されている物理アドレス
と交換することを特徴とするコンピュータ・システム。 - 【請求項32】 請求項31記載のコンピュータ・シス
テムにおいて、前記第1フロント・エンド・コントロー
ラが、前記次のパケットのヘッダ内に収容されている物
理アドレスが空となるまで、メモリからパケットを読み
出し続けることを特徴とするコンピュータ・システム。 - 【請求項33】 請求項21記載のコンピュータ・シス
テムにおいて、前記パケット・ヘッダが、ダイレクト・
アクセスを示すビットを含み、前記ダイレクト・アクセ
ス・ビットがセットされているパケットが前記バック・
エンド・コントローラによって受け取られた場合、前記
バック・エンド・コントローラが、前記プロセッサから
特殊なコマンドを受け取るまで、パケットの処理を停止
することを特徴とするコンピュータ・システム。 - 【請求項34】 請求項21記載のコンピュータ・シス
テムにおいて、 前記大容量記憶サブシステムがデータを直接メモリから
読み取ることが可能であり、 前記大容量記憶サブシステムに供給されるペイロード
が、該大容量記憶サブシステムが読み取るメモリ内のデ
ータのアドレス範囲を含むことを特徴とするコンピュー
タ・システム。 - 【請求項35】 請求項21記載のコンピュータ・シス
テムにおいて、前記大容量記憶サブシステムが、データ
を読み取り可能であり、前記大容量記憶サブシステムに
供給されるペイロードがデータを含むことを特徴とする
コンピュータ・システム。 - 【請求項36】 請求項21記載のコンピュータ・シス
テムにおいて、前記プロセッサが、あるキャッシュライ
ンを有するキャッシュを含み、前記ペイロードがキャッ
シュラインに整合されていることを特徴とするコンピュ
ータ・システム。 - 【請求項37】 請求項21記載のコンピュータ・シス
テムにおいて、前記ドアベル・レジスタがメモリ・マッ
ピングされていることを特徴とするコンピュータ・シス
テム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US940911 | 1986-12-10 | ||
US08/940,911 US5978858A (en) | 1997-09-30 | 1997-09-30 | Packet protocol and distributed burst engine |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11175455A true JPH11175455A (ja) | 1999-07-02 |
Family
ID=25475629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10278576A Pending JPH11175455A (ja) | 1997-09-30 | 1998-09-30 | コンピュータ・システムにおける通信方法及び装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5978858A (ja) |
EP (1) | EP0908826A3 (ja) |
JP (1) | JPH11175455A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007519102A (ja) * | 2003-12-24 | 2007-07-12 | インテル・コーポレーション | グラフィックスメモリ・スイッチ |
JP2014112402A (ja) * | 2004-10-06 | 2014-06-19 | Intel Corp | プロセッサ構成設定をオーバーライドする方法 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4236729B2 (ja) * | 1998-05-07 | 2009-03-11 | 株式会社リコー | データ処理装置 |
US6785730B1 (en) * | 1999-02-16 | 2004-08-31 | Rebecca S. Taylor | Generic communications protocol translator |
JP3895071B2 (ja) * | 1999-03-12 | 2007-03-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | バス・ブリッジ回路、情報処理システム、及びカードバス・コントローラ |
US6848029B2 (en) * | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
AU2001284823B2 (en) * | 2000-08-14 | 2006-11-30 | Ortho-Mcneil Pharmaceutical, Inc. | Substituted pyrazoles |
US6842797B1 (en) * | 2000-10-10 | 2005-01-11 | 3Com Corporation | USB adapter for burst mode communications |
US6993037B2 (en) * | 2001-03-21 | 2006-01-31 | International Business Machines Corporation | System and method for virtual private network network address translation propagation over nested connections with coincident local endpoints |
US7668144B2 (en) * | 2001-06-04 | 2010-02-23 | Taylor Rebecca S | Dynamically extensible communications device |
US8249097B2 (en) * | 2003-07-14 | 2012-08-21 | Broadcom Corporation | Method and system for an integrated host PCI I/O bridge and dual port gigabit Ethernet controller |
US7617376B2 (en) | 2003-08-14 | 2009-11-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for accessing a memory |
US7757232B2 (en) * | 2003-08-14 | 2010-07-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing work request lists |
US7404190B2 (en) * | 2003-09-18 | 2008-07-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing notification via multiple completion queue handlers |
US8959171B2 (en) | 2003-09-18 | 2015-02-17 | Hewlett-Packard Development Company, L.P. | Method and apparatus for acknowledging a request for data transfer |
US8150996B2 (en) | 2003-12-16 | 2012-04-03 | Hewlett-Packard Development Company, L.P. | Method and apparatus for handling flow control for a data transfer |
US7870311B2 (en) * | 2005-02-24 | 2011-01-11 | Wind River Systems, Inc. | Preemptive packet flow controller |
US7949793B1 (en) * | 2005-09-16 | 2011-05-24 | Xilinx, Inc. | Method and apparatus for providing an interface between a programmable circuit and a processor |
US7409485B1 (en) | 2005-10-27 | 2008-08-05 | Cisco Technology, Inc. | Optimized data transfer for a data bus |
US7721023B2 (en) * | 2005-11-15 | 2010-05-18 | International Business Machines Corporation | I/O address translation method for specifying a relaxed ordering for I/O accesses |
CN102693206B (zh) * | 2007-01-30 | 2015-06-24 | 世意法(北京)半导体研发有限责任公司 | 在终点中无线usb同步的缓冲器管理 |
CN101237445B (zh) * | 2007-01-30 | 2013-01-02 | 世意法(北京)半导体研发有限责任公司 | 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备 |
US20110296437A1 (en) * | 2010-05-28 | 2011-12-01 | Devendra Raut | Method and apparatus for lockless communication between cores in a multi-core processor |
EP2521035B1 (de) * | 2011-05-06 | 2018-02-21 | Siemens Aktiengesellschaft | Verfahren und Anordnung zur Konfigurierung einer Ressource für eine virtuelle Laufzeitumgebung |
US8928677B2 (en) * | 2012-01-24 | 2015-01-06 | Nvidia Corporation | Low latency concurrent computation |
US9513869B2 (en) * | 2013-09-18 | 2016-12-06 | HGST Netherlands B.V. | Doorbell-less endpoint-initiated protocol for storage devices |
US9778859B2 (en) | 2013-09-18 | 2017-10-03 | Western Digital Technologies, Inc. | Doorless protocol having multiple queue read requests in flight |
US10048878B2 (en) | 2015-06-08 | 2018-08-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory module and storage system having the same |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3276916D1 (en) * | 1981-09-18 | 1987-09-10 | Rovsing As Christian | Multiprocessor computer system |
US4951193A (en) * | 1986-09-05 | 1990-08-21 | Hitachi, Ltd. | Parallel computer with distributed shared memories and distributed task activating circuits |
US4894822A (en) * | 1987-11-24 | 1990-01-16 | AT&T Information Systems American Telephone and Telegraph Company | Fast packetized data delivery for digital networks |
US5050066A (en) * | 1988-10-14 | 1991-09-17 | Intel Corporation | Apparatus with a single memory and a plurality of queue counters for queuing requests and replies on a pipelined packet bus |
US5404550A (en) * | 1991-07-25 | 1995-04-04 | Tandem Computers Incorporated | Method and apparatus for executing tasks by following a linked list of memory packets |
JPH0619785A (ja) * | 1992-03-27 | 1994-01-28 | Matsushita Electric Ind Co Ltd | 分散共有仮想メモリーとその構成方法 |
US5657471A (en) * | 1992-04-16 | 1997-08-12 | Digital Equipment Corporation | Dual addressing arrangement for a communications interface architecture |
US5255265A (en) * | 1992-05-05 | 1993-10-19 | At&T Bell Laboratories | Controller for input-queued packet switch |
US5363369A (en) * | 1993-03-31 | 1994-11-08 | At&T Bell Laboratories | System for inter packet community communication |
US5448558A (en) * | 1994-04-05 | 1995-09-05 | International Business Machines Corporation | Method and apparatus for managing packet FIFOS |
US5664223A (en) * | 1994-04-05 | 1997-09-02 | International Business Machines Corporation | System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively |
US5687316A (en) * | 1994-07-29 | 1997-11-11 | International Business Machines Corporation | Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data |
WO1996013776A1 (en) * | 1994-10-31 | 1996-05-09 | Intel Corporation | M & a for exchanging data, status, and commands over a hierarchical serial bus assembly using communication packets |
SG82563A1 (en) * | 1995-07-07 | 2001-08-21 | Sun Microsystems Inc | An apparatus and method for packetizing and segmenting mpeg packets |
US5793953A (en) * | 1995-07-07 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for allowing packet data to be separated over multiple bus targets |
US5752076A (en) * | 1995-08-31 | 1998-05-12 | Intel Corporation | Dynamic programming of bus master channels by intelligent peripheral devices using communication packets |
US6519268B1 (en) * | 1996-03-07 | 2003-02-11 | Sony Corporation | Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure |
-
1997
- 1997-09-30 US US08/940,911 patent/US5978858A/en not_active Expired - Lifetime
-
1998
- 1998-09-24 EP EP98307736A patent/EP0908826A3/en not_active Withdrawn
- 1998-09-30 JP JP10278576A patent/JPH11175455A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007519102A (ja) * | 2003-12-24 | 2007-07-12 | インテル・コーポレーション | グラフィックスメモリ・スイッチ |
JP2014112402A (ja) * | 2004-10-06 | 2014-06-19 | Intel Corp | プロセッサ構成設定をオーバーライドする方法 |
Also Published As
Publication number | Publication date |
---|---|
EP0908826A2 (en) | 1999-04-14 |
EP0908826A3 (en) | 2000-03-29 |
US5978858A (en) | 1999-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4104746B2 (ja) | 自動直接メモリ・アクセス機能を備えたコンピュータ・システム | |
JPH11175455A (ja) | コンピュータ・システムにおける通信方法及び装置 | |
US7603490B2 (en) | Barrier and interrupt mechanism for high latency and out of order DMA device | |
US5925099A (en) | Method and apparatus for transporting messages between processors in a multiple processor system | |
US5870567A (en) | Delayed transaction protocol for computer system bus | |
US6052744A (en) | System and method for transferring concurrent multi-media streams over a loosely coupled I/O bus | |
US7523228B2 (en) | Method for performing a direct memory access block move in a direct memory access device | |
JP3344345B2 (ja) | 共有メモリ型ベクトル処理システムとその制御方法及びベクトル処理の制御プログラムを格納する記憶媒体 | |
US7620749B2 (en) | Descriptor prefetch mechanism for high latency and out of order DMA device | |
US8131895B2 (en) | Interrupt management for multiple event queues | |
JP3431149B2 (ja) | 仮想fifoによる周辺装置インタフェースのシステム並びに方法 | |
US5682551A (en) | System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto | |
JPH09160861A (ja) | ローカル・プロセッサの介入なしにコマンド・ブロックをローカル処理サイドに転送するための情報処理システム | |
US7234004B2 (en) | Method, apparatus and program product for low latency I/O adapter queuing in a computer system | |
JP4317365B2 (ja) | 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置 | |
US6675251B1 (en) | Bridge device for connecting multiple devices to one slot | |
JP2001117859A (ja) | バス制御装置 | |
JPH09160862A (ja) | ローカル・サイド及びホスト・サイドの間でデータ・ブロックを転送するためのステータス処理システム | |
US6279065B1 (en) | Computer system with improved memory access | |
US11995351B2 (en) | DMA engines configured to perform first portion data transfer commands with a first DMA engine and second portion data transfer commands with second DMA engine | |
JP2002503847A (ja) | 2次バスからのメッセージング・ユニットへのアクセス | |
US6957280B2 (en) | Streamlining ATA device initialization | |
JPH06274425A (ja) | ネットワークアダプタ装置 | |
JP4166615B2 (ja) | データ処理装置におけるマルチアクセス命令を処理するデータ処理装置及び方法並びにその方法によるコンピュータ・プログラム製品 | |
US6742074B2 (en) | Bus to system memory delayed read processing |