JPH10247172A - バス・ブリッジ・システムのためのバッファ・リザベーション方法 - Google Patents
バス・ブリッジ・システムのためのバッファ・リザベーション方法Info
- Publication number
- JPH10247172A JPH10247172A JP10031923A JP3192398A JPH10247172A JP H10247172 A JPH10247172 A JP H10247172A JP 10031923 A JP10031923 A JP 10031923A JP 3192398 A JP3192398 A JP 3192398A JP H10247172 A JPH10247172 A JP H10247172A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- bridge
- command
- data
- buffer
- 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
供する。 【解決手段】 バス・ブリッジは、データを格納し、デ
ータを先取りし、データのライト・ポスティングを行う
ための多数のデータ・バッファを含む。バス・ブリッジ
と通信するデバイスは、2つの予約機構の1つによって
バッファを予約することができる。予約機構は、バス・
ブリッジに、アドレスおよびバイト・カウントを供給す
る。また、予約はいずれの上流側バス・ブリッジにも送
出することができる。予約されたバッファは、バス・ア
クセスの効率的な使用のために先取りされる。バッファ
が予約されていない場合、データの先取りおよびフラッ
シュは、別のアルゴリズムにしたがって行われる。
Description
方のバスに動作を変換する方法に関し、更に特定すれ
ば、バス間でデータを最適に転送するためのバッファ予
約機構(buffer reservation mechanism)に関するもので
ある。
術が発展しコンピュータに組み込まれるに連れて、常に
変化しつつある。マイクロプロセッサおよびメモリの性
能向上の結果、コンピュータは非常に強力になり、以前
では大型メインフレーム・コンピュータによってのみ処
理可能であったタスクも、今や処理可能となっている。
しかしながら、メインフレーム・コンピュータに完全に
取って代わるには、コンピュータは心臓部のI/O(入
力/出力)サブシステムが大量のメモリおよび格納容量
に対応していなければならない。
e:業界標準アーキテクチャ)、EISA(Extended Indus
try Stabdard Architecture:拡張業界標準アーキテクチ
ャ)、およびPCI(Peripheral Component Interface:
周辺素子インターフェース)を含むいくつかの標準化さ
れたI/Oバスが、システム設計者には使用可能であ
る。今日のコンピュータは、典型的に、これら3種類の
いずれかを組み合わせることによって設計される。これ
らバス間でデータを移動するためには、ブリッジ・デバ
イス(bridge device)が典型的に設けられる。
し、これらバス間でデータを転送すると共に、バス制御
信号の変換を行う。バスは異なるものとすることがで
き、あるいは、特にPCIの場合には、ブリッジは単に
同一の論理バスに対する電気的な拡張(エクステンショ
ン)を与えることができる。この電気的な分離のため
に、一方のバス・セグメント上における物理的デバイス
数を制限しつつ、同時にPCIエージェントの総数は制
限しない、PCIバスの要件を満たすことができる。P
CIバスの用語では、エージェントとは、マスタ・デバ
イスおよびスレーブ・デバイスを含む、バスに接続する
種類のデバイスを示す言葉である。
グ(bus mastering)と呼ばれる方式に対応しており、通
常プロセッサ以外のデバイスまたはエージェントが、ア
ービタ(arbiter)にバスの制御を要求することができ
る。アービタがエージェントに制御を許可した場合、こ
のエージェントはバス・マスタとなる。バス・マスタは
その処理を、スレーブと呼ばれる別のエージェントに差
し向ける。次いで、バス・マスタは、プロセッサの介入
なしに処理を実行することができ、プロセッサを伴う場
合よりも格段に効率的である。多くの場合、発生元バス
(origination bus)上のマスタは、宛先バス(destinatio
n bus)上のスレーブと通信する。これらのバスがブリッ
ジで結合されている場合、ブリッジの性能がマスタとス
レーブ間の通信性能に大きく影響する。従って、この経
路を最適化することが望ましい。
の1つは、遅延トランザクション又はリード・ポスティ
ング(read posting)を可能にすることである。PCIバ
スおよび遅延トランザクションに関する更なる詳細は、
オレゴン州ヒルズボロ(Hillsboro)のPCIスペシャ
ル・インタレスト・グループ(Special Interest Grou
p)から入手可能な“PCIローカル・バス仕様 バー
ジョン2.1(PCI LocalBus Specification version
2.1)”に記載されている。PCIローカル・バス仕様
およびそれに関連する文書をここに参照として援用す
る。遅延トランザクションは、低速デバイスがリクエス
ト(要求)に応答してデータを用意している間、バスの
使用を可能にする。従って、低速デバイスが待ち時間を
バスに加える代わりに、バスを他の要求のために用いる
ことができる。ブリッジにとって、宛先バスは、元の要
求のターゲット(target)として動作しなかったインター
フェースを意味する。遅延トランザクションは、マスタ
による要求、ターゲットによる要求の完了、およびマス
タによるトランザクションの完了という3つの段階(フ
ェーズ)で、完了に至る。
ンザクションを発生し、ターゲットがアクセスをデコー
ドし、アクセスを完了するために必要な情報をラッチ
し、リトライ−終了(retry-termination)によって要求
を終了する。マスタは、遅延トランザクション終了を用
いてトランザクションを完了しつつあるターゲットと、
現時点において単にトランザクションを完了できないタ
ーゲットとの区別ができないので、要求を再度発行しな
ければならない。第2フェーズでは、ターゲットは、遅
延要求からラッチした情報を用いて、宛先バス上で独立
して要求を完了する。遅延要求が読み出し(リード(rea
d))の場合、ターゲットは、要求データおよび完了ステ
ータスを取得する。遅延要求が書き込み(ライト(writ
e))の場合、ターゲットはライト・データを送り、完了
ステータスを取得する。第3フェーズの間、マスタは首
尾良くバスの再調停を行い、元の要求を再発行する。タ
ーゲットはこの要求をデコードし、完了ステータス(お
よび、リード要求の場合はデータ)をマスタに供給す
る。発生元バス上で完了する前に宛先バス上で完了しな
ければならない全てのバス・コマンドは、遅延トランザ
クションとして完了させることができる。これらは、割
込アクノレッジ(承認)、I/Oリード、I/Oライ
ト、コンフィギュレーション・リード、コンフィギュレ
ーション・ライト、メモリ・リード、メモリ・リード・
ラインおよびメモリ・リード多重のコマンドを含む。メ
モリ・ライト、およびメモリ・ライト及び無効化(inval
idate)のコマンドは、宛先バス上で完了する前に、発生
元バス上で完了することができる。これらのコマンド
は、遅延トランザクション終了を用いて完了されず、通
常はポスト(post)される。
lのPCI−EISAブリッジ・チップ・セットであ
る。82375EB/SB PCI-EISA Bridgeおよび82374EB/SB EIS
Aシステムのコンポーネントは、対で動作してPCIバ
スを有するコンピュータにEISA I/Oインターフ
ェースを提供する。チップ・セットは、PCIバス及び
EISAバスの両方上のマスタ又はスレーブの何れでも
よい。PCI−EISAデータ転送では、4つの32ビ
ット・ポステッド・ライト・バッファ(32-bit posted w
rite buffer)が設けられ、単一サイクルPCIバス・ト
ランザクションの改善を図っている。EISA−PCI
データ転送では、4つの16バイト・ライン・バッファ
が含まれ、EISAバースト処理(EISA bursting)を支
持する。
どのブリッジは、当該ブリッジ自体に、ある量のデータ
・バッファ機能を実施している。これによって、ブリッ
ジはバス同士を互いに結合解除し、他方のバスによる速
度低下を招くことなく、各バスをその最大速度で処理さ
せることが可能となる。通常、ブリッジ内に実施可能な
バッファには2種類があり、それらは、ライト・ポステ
ィング・バッファ(write posting buffer)およびリード
・プリフェッチ(先取り)・バッファ(read prefetch b
uffer)又はリード・アヘッド・バッファ(read ahead bu
ffer)である。両種類共、いずれのバス上でも実施可能
である。
バスからのライト・データを受け入れ、当該バスに受け
取りを知らせる。これによって、バスを解放し他のトラ
ンザクションを処理させる。ブリッジは、他のバスに書
き込むことができるようになるまで、ライト・データを
一時的に格納、又はポスト、する。リード先取りバッフ
ァは、単一のリード・アクセスからアドレスを取り込
み、追加のデータも必要となることを推測してその読み
取りを行う。次いで、ブリッジは、バッファが使用不可
能になるかあるいはリード・アクセスによって使用され
るまで、このデータをバッファ内に保持する。
は、バッファによって、ブリッジはピーク・データ転送
速度で短いデータ・バーストを受け取ることができるよ
うになる。例えば、EISAデバイスがPCIバス上の
メモリからのデータを要求すると、ブリッジは、PCI
メモリからそのバッファに4つの32ビット・データ・
ワードをバースト状に入力し、EISAデバイスがバッ
ファを読み取っている間、PCIバスを他のPCI要求
元に解放することができる。したがって、PCIバス
は、EISAデバイスにより遅延されない。バッファが
満杯の間、EISAデバイスは、バッファからデータを
読み取るように通知される。こうして、EISAデバイ
スは、そのバースト転送速度でバッファからデータを読
み出すことができる。その後、ブリッジは、PCIバス
を通じて短いデータ・バーストを実行しバッファを満杯
に維持することによって、EISAバス転送速度を維持
しようとする。しかしながら、他のEISAデバイスが
メモリからのデータを要求した場合、バッファを空にし
て(フラッシュして)再度満たさなければならない。
問題の原因にもなる。データをブリッジ内にバッファし
ている間、バス・エージェントおよびプロセッサが、メ
モリ内に実際に何が入っているかについて、異なる考え
を有する場合がある。バス・マスタがブリッジを通じ
て、ブリッジの他方側のターゲットのメモリ範囲にリー
ド要求を発行した場合、ブリッジは、処理能力およびデ
ータ完全性(インテグリティ(integrity))という2
つの矛盾する目標の間で、バランスを取らなければなら
ない。処理能力のためにメモリ動作および転送を最適化
する場合、ブリッジは、好ましくは、大きなブロックの
先取りしたデータを保持するであろう。しかしながら、
データを大きなブロックで先取りしたものの、使用され
ない場合には、ブリッジは、マスタによる後からのリー
ド要求に対して、古いデータを供給することを防止しな
ければならない。加えて、使用されないデータの大きな
ブロックを先取りすると、バス帯域を浪費することによ
り、性能低下を招く。したがって、性能要件(performan
ce concerns)を満たしつつ、データの完全性も保証する
解決策を見いだすことが望ましい。
したがって、ブリッジは、信号をある周波数の一方のバ
スから別の周波数の他方のバスに変換する際に、信号を
同期させなければならない。連続データ・フローを達成
すべき場合、同期は性能を犠牲にしてはならない。
ス・ブリッジは、複数のデータ・バッファを含む。デー
タ・バッファは、リード・データを格納するため、先取
りしたデータ又はリード・アヘッド・データを格納する
ため、あるいはライト・ポステッド・データを格納する
ために用いられる。本発明によれば、これらデータ・バ
ッファの使用によって、デバイスがバスにアクセスする
回数が減少し、バスのレイテンシ(latency)が減少す
る。
ザーブ(予約)する機構を含む。2つの代替機構が開示
され、これにより、ブリッジに結合されているバス・マ
スタまたはエージェントは、ブリッジがバス・マスタの
意図するデータ・リード転送のためにバッファを予約す
るように、要求することができる。ブリッジ階層がある
場合、予約要求(リザベーション・リクエスト)は、バ
ッファ予約機構を支持するアップストリーム(上流)・
ブリッジに渡される。
スタがデータを予約したデータ・バッファから除去する
際に、ブリッジがデータを予め読み取る(リード・アヘ
ッドする)又は先取り(プリフェッチ)するために必要
なアドレシング情報を含む。予約が行われる場合、3つ
の128バイト・データ・バッファがバス・マスタのた
めに予約される。データは順番にそして巡回的に、マス
タが読み取るに連れて、これらのデータ・バッファに先
取りされる。データ・バッファが最初にマスタによって
アクセスされるときに、次のデータ・バッファが先取り
される。アドレス範囲全体が読み取られ、データがバス
・マスタによって除去されたときに、予約は取り消され
る。プログラム可能な時間期間内に、バッファがバス・
マスタによってアクセスされない場合も、予約は取り消
される。予約バッファを管理するための予約アルゴリズ
を開示する。
トに使用可能でない場合に、バッファを管理する2つの
代替アルゴリズムも含む。デフォルト・アルゴリズムを
用いると、新しいバス・マスタが最初にバッファを予約
せずにリードを行おうとした場合、バッファが使用可能
であれば、ブリッジが3つの128バイト・データ・バ
ッファから成るバッファをこのマスタに割り当てる。そ
の他の場合、マスタは、リード動作をリトライするよう
に強制される。一旦バッファが割り当てられたなら、ブ
リッジは要求されたデータを128バイト・データ・バ
ッファの最初のものに読み込み、その後データをバス・
マスタに供給する。マスタが、第1データ・バッファの
終端を越えてバースト・リードを行い、マスタからの次
のリード動作が、最後のリードが終了した位置から開始
される場合、このマスタのために先取りがイネーブルさ
れる。次のシーケンシャルのリードの時に、ブリッジは
再び要求されたデータを第2データ・バッファに読み込
み、その後それをマスタに供給する。この時点では、先
取りは既にイネーブルされている。マスタが、バッファ
の1つの終端を越えて再度バースト・リードを行うとき
はいつでも、ブリッジは自動的に次の128バイト・バ
ッファに対してデータを先取りする。3つの128バイ
ト・データ・バッファは、順番にそして巡回的に満たさ
れる。バス・マスタが不連続なリードを要求した場合、
またはCPUがマスタに影響を与え得るライト・トラン
ザクションを実行した場合、バッファはフラッシュされ
る。
リズムと同様であるが、ブリッジは先取りを行わない。
バス・マスタがデータを全て読み取らない場合、マスタ
がバスからディスコネクト(接続解除)されるときに、
残りのデータをフラッシュする。
例によるブリッジ・デバイス106が図示されている。
ブリッジ・デバイス106は、コンピュータ・システム
100の一次バス110を二次バス112に結合する。
コンピュータ・システム100は、更に、一次バス11
0に結合されているCPU102およびメモリ104を
含む。好適実施例では、CPU102は、IBMコンパ
チブルのPCにおいて共通するような、インテルの48
6,ペンティアム7(Pentium7)または586級のプロ
セッサまたはそれらの同等物のようなプロセッサ(図示
せず)、ならびに標準的なコンピュータ周辺装置および
支援ロジック(図示せず)を含む。他のプロセッサや周
辺素子も勿論使用可能であることは理解されよう。
・グラフィック・コントローラまたはネットワーク・イ
ンターフェース・コントローラのようなバス・マスタ1
08、およびシリアル(直列)・ポートまたはパラレル
(並列)・ポートのようなバス・スレーブ114が、更
に、二次バス112に接続されている。本発明において
開示される原理の目的のためには、バス・マスタ108
およびスレーブ114の具体的な機能性を示すことは不
要であるので、ここでは、単に一般的なバス・マスタお
よびスレーブとして言及するに止めておく。
周辺素子相互接続(PCI)バスのような、標準的なI
/Oバスである。尚、ここに開示する原理は、業界標準
アーキテクチャ(ISA)、拡張業界標準アーキテクチ
ャ(EISA)およびマイクロチャネル・アーキテクチ
ャ(MCA:microchannel architecture)バスのよう
な他のバスにも適用可能であることは理解されよう。更
に、同じブリッジ設計原理は、PCIバスおよびEIS
Aバスのような2種類の異なるバスを結合するために適
用可能であることも、認めることができよう。好適実施
例では、一次バスは、電気的ファンアウト(electrical
fanout)を限定したローカルPCIバスであり、ブリッ
ジ106は、2次のPCIバス112によって一次バス
110の機能性を拡張するために用いられる。
112は、コンピュータ・システム100から離れた場
所にある。更に、ブリッジ106は、アップストリーム
(上流)部106aおよびダウンストリーム(下流)部
106bを備える。ケーブル118がアップストリーム
とダウンストリームのブリッジ・インスタンスを互いに
結合する。ダウンストリーム部106bは二次バス11
2に結合され、複数のバス・マスタ108aないし10
8dとの通信を行う。各バス・マスタは、コンピュータ
・システム100に大容量記憶装置を提供するために、
複数のハード・ディスク・ドライブ116aないし11
6dにも結合される。図1および図2の双方において、
ブリッジ106は、バス・マスタ108のような二次バ
ス上のデバイスに共通インターフェースを与え、メモリ
104のような一次バス上のデバイスとの通信を可能に
する。また、バス・マスタ108は、一次バス110か
らの帯域を全く要求することなく、バス・スレーブ11
4のような、その他の二次バス・デバイスとも通信する
ことができる。したがって、変換ユニットおよびバス拡
張部であることに加えて、ブリッジ106は分離バッフ
ァ(isolation buffer)としても機能する。
て読み取りまたは書き込みを行う場合のように、大きな
データ・ブロックをブリッジを通じて転送する際、ブリ
ッジは、リード先取り(read prefetching)およびライト
・ポスティング(write posting)のための多数のバッフ
ァを提供し、全体的なシステム性能向上を図る。これ
は、転送が発生し得る前に、双方のバスがブリッジ10
6と通信するという、典型的な要件をなくすのに役立
つ。リード先取りの管理は、いくつかの代替的なアルゴ
リズムによって行われる。アルゴリズムの1つは、バス
・マスタが非常に効率的なバス転送のためにリード先取
りバッファを予約可能とする機能を含む。他の適応的ア
ルゴリズムは、バス・マスタがバッファ予約を要求しな
い場合を扱う。しかしながら、これらの場合でも、リー
ド先取りが高い成功確率を有することが所定の状態によ
って示された場合には、アルゴリズムはバッファを予約
しデータを先取りしようとする。
デバイス106の第1および第2実施例のブロック図が
示されている。図に見られるように、一次バスは一次バ
ス・インターフェース200に結合し、二次バスは二次
バス・インターフェース202に結合する。ブリッジ1
06は、入来データを受け取り、リード先取り又はリー
ド・アヘッドを行い、また、ライト・ポスティングを行
うためのバッファ領域204を含む。バッファは、処理
の種類に応じたコンフィギュレーションに設定される。
これについては、以下で説明する。
動作の処理を向上させるために、4つの128バイト・
ライト・ポスティング・バッファ218が設けられい
る。バス・マスタ108が主メモリ104に対してライ
ト動作を実行する場合、データはライト・バッファ21
8に書き込み又はポスト(post)され、バス・マスタ10
8は、データが実際に主メモリ104に書き込まれる前
に、ブリッジ106から完了の指示(indication)を受
け取る。こうして、ブリッジ106は後から主メモリ1
04に対するライト動作を完了し、遅延を生じない。こ
のように、実際の完了指示を待たないので、バス・マス
タ108が二次バス102を制御する時間は大幅に短縮
される。
04からのバス・マスタ・リード動作を向上するため
に、8つのデフォルト・バッファ210も含む。デフォ
ルト・バッファ管理アルゴリズムがデフォルト・バッフ
ァ210を管理し、所定の条件の下において、リード・
データの格納およびリード・データの先取りを行う。デ
フォルト・バッファ管理アルゴリズムは、できるだけ長
く先取りデータを保持しながらも、古いデータを残す可
能性を回避するという2つの間のバランスを取る。バッ
ファ内の32ビット・ダブル・ワードのデータのチャン
ク(chunk)(以下DWORDSと呼ぶ)に対する3つの3ビッ
ト・ポインタを用いて、バッファを満杯にしたり空にし
たりする。バッファ入力ポインタ(BUFF_IN_PNTR)は、次
のDwordが格納される場所を指し示す。バッファ出力ポ
インタ(BUFF_OUT_PNTR)は、次のDwordが読み出される場
所を指し示す。バッファ有効ポインタ(BUFF_VALID_PNT
R)は、BUFF_IN PNTRとBUFF_OUT_PNTRの間のどちらのア
ドレスが有効であるかを示す。バスがロックされる状況
を防止するために、ポストされたメモリ・ライト(poste
d memory write)の後に完了したリードは、バッファに
格納することができるが、ポストされたメモリ・ライト
が完了する後までは有効となることができないので、所
定のアドレスのみが有効となるようにすればよい。
代わりとして、デフォルト・バッファ210を管理する
ために保存アルゴリズムが用意されている。保存アルゴ
リズムは先取りを行うことはなく、通常はバス・マスタ
によって要求されたデータを読み取るのみである。した
がって、古いデータは完全に回避される。
04からのバス・マスタ・リード動作の向上を図るため
に、8つの予約リソース(資源)220のプールも含
む。これらの資源220は、以下で論ずる予約アルゴリ
ズムによって管理される。各予約資源206は、3つの
128バイト・データ・バッファと、対応する予約情報
ブロック208で構成されている。各情報ブロック20
8は、予約バッファを制御するのに必要なレジスタを含
む。かかるレジスタには、64ビットの予約の開始アド
レスを収容する予約ベース・アドレス・レジスタ(RSRV_
BASE_ADDR)、予約の最後のアドレスよりも1大きな64
ビット・アドレスを収容する予約制限アドレス・レジス
タ(RSRV_LIMIT_ADDR)、非アクティブな予約資源を自動
的に取り消すために4つの値(オフ、25ms、50m
s、または100ms)の1つにプログラムされた破棄
タイマ値、データが読み込まれた最後のライン・バッフ
ァへの5ビット・ポインタを収容する最後バッファ・イ
ンディケータ・レジスタ(LAST_BUFF)、各ライン・バッ
ファの64ビット開始アドレスを収容するバッファ開始
ポインタ・レジスタ (BUFF_START_PNTR)、ライン・バッ
ファの最終アドレスよりも1大きな64ビット・アドレ
スを収容するバッファ制限ポインタ・レジスタ(BUFF_LI
MIT_PNTR)、次のDwordが格納されるアドレスを保持する
バッファ入力ポインタ・レジスタ(BUFF_IN_PNTR)、次の
DWORDが読み出されるアドレスを保持するバッファ出力
ポインタ・レジスタ(BUFF_OUT_PNTR)、BUFF_IN_PNTRとB
UFF_OUT_PNTRの間でどちらのアドレスが有効かを示すバ
ッファ有効ポインタ・レジスタ(BUFF_VALID_PNTR)、バ
ッファ状態レジスタ、およびバッファ先取りフラグ・レ
ジスタが含まれる。
源220は、各要求元マスタあるいは各プロセスまたは
スレッドに割り当てられてもよく、こうすることによ
り、単一のマスタが多数のバッファを有することが可能
となる。バッファ領域204はFIFOとして編成され
ており、勿論、最適なバス利用のために、マスタの要件
にしたがってサイズを決定することができる。ブリッジ
106は要求元およびそのターゲットには透明であるこ
とが好ましいので、バッファ領域204もトランザクシ
ョンに対して透明であることが望ましい。しかしなが
ら、バッファ領域204の動作を最適化するには、デー
タが効率的に先取りされ、先取りされたデータが主メモ
リ内のデータとコヒーレントとなるようにバッファを制
御することが望ましい。したがって、未処理のトランザ
クション(pending transaction)に対してバッファを最
適化するには、マスタが読もうとしているアドレス範囲
をブリッジが受け取ることが望ましい。こうすれば、一
旦ブリッジがアドレス情報を取得したなら、ブリッジは
アドレス範囲の最後まで自由にデータを先取りすること
ができる。予約資源を要求するための2つの代替案が用
意されている。
て、二次インターフェース202はコマンド・デコード
・ブロック212aを含む。メモリ・リード要求は下流
側のバス・マスタからなので、コマンド・デコード・ブ
ロック212aは二次インターフェース202に配置さ
れているが、逆方向のリード動作では、コマンド・デコ
ード・ブロックが一次インターフェース200において
も有効であることに留意されたい。予約資源は、主メモ
リ104から、二次バス112上に位置するバス・マス
タから開始されるリード動作に対して最も効果的である
ので、以下の説明はこの文脈に沿って進めることにす
る。
がブリッジ106に受け取られた場合に、バス・マスタ
108によって予約することができる。この点につい
て、読者は図7も参照されたい。バス・マスタ108が
ターゲット・メモリ104からのリード・トランザクシ
ョンのために予約資源220を予約したい場合、バス・
マスタ108は、ターゲット・メモリ104から読み出
される合計バイト数を示す予約コマンド(RSRV_COMMAND)
を含む、第1リード・トランザクションを発行する。RS
RV_COMMANDは、PCIバス上のコマンド/バイト・イネ
ーブル(C/BE#)信号によって表される特殊なPCIバス
・コマンドであり、図7のクロックの2に示すように、
フレーム(FRAME#)信号がアサートされトランザクション
の開始が示されたときに、第1リード・トランザクショ
ン上でブリッジ106に提示される。また、予約コマン
ドは、AD[31:0]ライン上のカウントも含み、所望される
バイト数を示す。クロックの3以降では、PCIトラン
ザクションは通常通りに進む。即ち、PCIトランザク
ションの種類が、アドレス/データ(AD)ライン上の開始
アドレスと共に、C/BE#ラインに供給され、入手可能な
ときにデータが転送される(クロックの5,7および9
に示す通り)。したがって、カウント(クロックの2)
および開始アドレス(クロックの3)は、読み取るべき
アドレス範囲を示す。このバッファを予約する範囲を示
すには、開始アドレスおよび終了アドレスを示すことに
よる等のように、代替方法もあることは理解されよう。
これらの代替方法は、予約コマンドのために考えられた
ものである。
は、RSRV_COMMANDがデュアル(二重)・アドレス・コマ
ンドおよび実際のリード・コマンドの前に位置する。二
重アドレス・コマンドについての更なる詳細は、先に引
用したPCI仕様に記載されている。
た場合、予約情報ブロック208のレジスタが初期設定
される。開始アドレスはRSRV_BASE_ADDRに格納され、終
了アドレスは、開始アドレスに合計バイト・カウントを
加算することによって決定され、1だけ増分されてRSRV
_LIMIT_ADDRに格納される。3つの128バイト・バッ
ファの内1つが、開始アドレスをBUFF_START_PNTRに格
納し、バッファ終了アドレスをBUFF_LIMIT_PNTRに格納
することによって、初期設定される。また、3つのバッ
ファ各々について、バッファ状態および先取りフラグも
初期設定される。
08はブリッジ106からディスコネクトし、後に再接
続することにより、RSVR_COMMANDを再発行することなく
処理を再開することができる。したがって、この代替案
では、単一のPCIバス・コマンドが、転送すべきバイ
ト数を示す。一旦バッファが予約されたなら、データ・
トランザクションは正常に進行するので、この追加情報
に対する負担は1クロック・サイクルのみである。
い。しかしながら、中間ブリッジが、下流(ダウンスト
リーム)側ブリッジからのRSRV_COMMANDを受け取る場合
がある。図5および図6に示すように、ブリッジの階層
構造がある場合、RSRV_COMMANDを支持する各ブリッジ
は、予約を上流(アップストリーム)に渡すことができ
る。各ブリッジのコンフィギュレーションでは、上流側
ブリッジがバッファ予約を支持していない場合、コンフ
ィギュレーション・ビット214(図3)がクリアさ
れ、その他の場合、このビットはコンピュータの初期設
定処理の間にコンフィギュレーション・ソフトウエアに
よってセットされ、予約(リザベーション)は上流に渡
される。図5は、ブリッジ階層の一例を示し、この場
合、ブリッジ300は、バッファ予約に対応する(バッ
ファ予約を支持する)2つのブリッジ106aと106
bの間に挟まれた非予約ブリッジである。この例では、
ブリッジ300がバッファ予約に対応していないので、
ブリッジ106b内のコンフィギュレーション・ビット
はクリアされ、RSRV_COMMANDは非予約ブリッジ300に
は送出されない。したがって、ブリッジ106aはバッ
ファ予約に対応しているが、この特徴はブリッジ106
aでは利用されない。
合、最上位のブリッジ300はバッファ予約に対応して
いないが、2つの下位ブリッジ106aおよび106b
はそれに対応している。この例では、ブリッジ300は
バッファ予約に対応していない(バッファ予約を支持し
ない)ので、非予約ブリッジに最も近いブリッジ、即
ち、ブリッジ106a内のコンフィギュレーション・ビ
ットをクリアし、RSVR_COMMANDが非予約ブリッジ300
に送出されないようにする。ブリッジ106b内のコン
フィギュレーション・ビット214はセットされ、ブリ
ッジ106bによって受け取られたRSRV_COMMANDがブリ
ッジ106aに送出されるようにする。このようにし
て、非予約ブリッジは、RSRV_COMMANDが実施される場合
に、バッファ予約の効果を切り離すように作用する。
を参照すると、ブリッジ106は、特別なアドレスに対
する処理をデコードするためのアドレス・デコード・ブ
ロック212bを含む。コンピュータ・システム100
のメモリ・アドレス・マップでは、この特別なメモリ・
アドレスは、この予約機構のために割り当てられてい
る。この特別アドレスに対するライト処理は、ブリッジ
106による予約動作として解釈される。バス・マスタ
108がリード動作のためにバッファ予約を望む場合、
まず、2−3 32ビット(Dword)バースト・ライトを
特別アドレスに実行する。ブリッジ106はこのライト
動作を横取り、コマンドを予約メールボックス(reserva
tion mailbox)216に格納する。最初のDwordは、バス
・マスタ108が読み取ろうとする合計バイト数であ
る。2番目のDwordは開始アドレスの下位32ビットで
ある。64ビット・アドレシングを用いる場合、開始メ
モリ・アドレスの上位32ビットを収容する第3のDwor
dが書き込まれる。2つのDwordのみが書き込まれる場
合、ブリッジは上位32ビットがゼロであると仮定す
る。ブリッジ106はデバイス・セレクト(DEVSEL#)信
号をアサートすることによって、メールボックス・レジ
スタ216に対するライト処理を横取りし要求する。何
故なら、アドレスは二次バス112上のいずれのデバイ
スにも割り当てられていないからである。ブリッジ10
6がトランザクションを受け取るとき、バッファが使用
可能であればそれを予約し、必要であれば、他の中間ブ
リッジに送出するために、メールボックス216にアド
レス、長さおよびその他の情報を格納する。予約が行わ
れた場合、上述のように、予約情報ブロックの初期設定
も行う。したがって、この代替案では、特別アドレスに
対するライトが、開始アドレスおよび転送すべきバイト
数を示す。この情報は、ブリッジ106が要求元マスタ
108のためにデータを先取りするために利用する。
層がある場合、バッファ予約を支持する各ブリッジは、
予約情報を上流に渡すことができる。各ブリッジのコン
フィギュレーションでは、階層内の最上位のブリッジ
は、予約を送出することをディスエーブルにされる。図
5は、バッファ予約を支持する2つのブリッジ106a
と106bの間に挟まれたブリッジ300が非予約ブリ
ッジであるブリッジ階層を示す。この例では、グローバ
ル・メモリ・アドレスに対するライト・トランザクショ
ンを用いてブリッジ間で予約情報を受け渡すので、コン
フィギュレーション・ビットおよびブリッジ106bが
セットされ、予約が非予約ブリッジ300に送出され、
予約ブリッジ106bに渡されるようにする。非予約ブ
リッジ300は、通常のメモリ・トランザクションと予
約ライト・トランザクションとの間の相違を認識しな
い。ブリッジ106aがその一次側でメモリ104に結
合されている場合、コンフィギュレーション・ビットお
よびブリッジ106aが、メモリへの予約情報の送出を
ディスエーブルするようにセットされる。このようにし
て、バッファ予約に対応可能な各ブリッジは、予約情報
を受け取る。
ァ予約に対応しないが、下位2つのブリッジ106aお
よび106bはそれに対応する、ブリッジ階層を示す。
この例では、ブリッジ300は最上位ブリッジであり、
バッファ予約を支持しないので、ブリッジ106aのコ
ンフィギュレーション・ビットはクリアされ、予約情報
の送出がディスエーブルされる。予約はブリッジ106
aと106bの間で受け渡しされる。このように、非予
約ブリッジが最上位に位置する場合、非予約ブリッジの
下にある予約ブリッジは、予約の送出をディスエーブル
される。最初の代替案に対しての、この方法の利点の1
つは、スクリプト・ドリブン・バス・マスタ(script-dr
iven bus master、スクリプト駆動のバス・マスタ)は、
殆ど変更せずに、メモリ・ライト・トランザクションを
容易に実施できることである。
ランザクションにおいて、ブリッジ106がデータを先
取り(プリフェッチ)できるようにするものである。バ
ッファ予約を利用することにより、要求されたデータの
みが先取りされるので、使用されないデータが先取りさ
れることが回避される。要求されたデータのみが先取り
され、要求元が転送を完了するまで、バス・マスタはこ
のデータを使用しないと考えることができるので、メモ
リ104とバッファ206および210に格納されてい
るデータの間のコヒーレンシに関する問題も回避され
る。このように、好適実施例にしたがって先取りされた
データは、転送が完了するまで保持され且つ有効と見な
すことができる。
ion)として知られている技法によって、リード動作を
ブリッジ106によって実行することができる。遅延ト
ランザクションに関する更なる詳細は、上記で援用した
PCI仕様及びこの明細書の従来技術の項に記載されて
いる。しかしながら、端的に言えば、遅延トランザクシ
ョンとは、所定の指定時間内にデータ・トランザクショ
ンを完了することができないPCIブリッジおよびPC
I I/Oによって用いられる、終了およびリトライ
(retry、再試行)の方法である。第1の要求元バス・
マスタが低速のI/Oコントローラまたはブリッジが応
答するのを待つ代わりに、このI/Oコントローラまた
はブリッジは第1の要求元バス・マスタをバスからオフ
に強制し、待ち状態の第1のバス・マスタが保持するこ
とによって通常は浪費されるバス帯域を、他のバス・マ
スタに使用させる。通常、遅延トランザクションは、バ
ス・マスタによる要求、ターゲットによる要求の完了、
およびバス・マスタによるトランザクションの完了、と
いう3段階で完了するように進展する。
は、発生元のバス上で完了する前に宛先バス上で完了し
なければならないトランザクションのことであり、I/
Oリード、コンフィギュレーション・リード、メモリ・
リード、メモリ・リード・ライン、またはメモリ・リー
ド多重コマンド(memory read multiple command)がそれ
に該当する可能性がある。図1を参照して、バス・マス
タ108がメモリ104からのデータを要求する場合、
二次バス112が発生元バスとなり、一次バス110が
宛先バスとなる。一旦宛先バス上で要求が試行される
と、これが宛先バス上で完了するまで、連続して繰り返
されなければならない。そのときまで、遅延リード要求
は単なる1要求に過ぎず、バス・マスタ108はこの要
求を後に繰り返さなければならないので、バスのデッド
ロックを防止するためまたは処理を促進するために、い
つでも破棄され得る。遅延リード完了とは、宛先バス上
で完了し、完結するために要求元バスに移動しつつある
リード・トランザクションのことである。遅延リード完
了は、バス・マスタ108によって要求されたデータ、
およびターゲット(メモリ104)のステータスを含
む。一旦遅延リード要求が宛先バス上で実行されたな
ら、これは遅延リード完了となる。
ランザクションの例は、バッファ領域204上における
その効果を示すのに役立つであろう。尚、遅延トランザ
クションは、ここに開示するバッファ予約機構を用いて
も、または用いなくても使用可能であることに留意され
たい。また、バッファ予約機構は、遅延トランザクショ
ンを用いても、または用いなくても使用可能であるが、
最大の処理性能を得るために、これらを一緒に用いるも
のと仮定する。
間、バス・マスタ108は、二次バス112上にメモリ
・リード・トランザクションを発生する。ブリッジ10
6は、このトランザクションをデコードし、主メモリが
一次バス上にあることを認識し、DEVSEL#信号をアサー
トすることによってトランザクションを要求し、アクセ
スを完了するために必要なトランザクション情報をラッ
チし、従来のPCIリトライ技法を用いて要求を終了す
る。ラッチされた要求情報のことを、遅延要求、あるい
は本例では更に具体的に、遅延リード要求と呼ぶ。PC
Iの規則によれば、バス・マスタ108はトランザクシ
ョンを繰り返さなければならない。その間、ラッチされ
たトランザクション情報を用いて、ブリッジ106は、
一次バス110上でメモリ・リード・トランザクション
を発生する。ターゲット(主メモリ104)の準備がで
きていない場合、ブリッジ106にリトライを発行する
ことにより、他の遅延トランザクションを強制すること
も可能である。しかしながら、メモリ104がリトライ
を発行しないと仮定すれば、メモリ104は要求を処理
し、ブリッジ106は完了ステータスおよび要求された
データを、そのバッファ204の内の1つに受け取る。
遅延要求がライト動作である場合、ブリッジ106は主
メモリ104から完了ステータスを取得する。宛先バス
(一次バス110)上で遅延要求(遅延された要求)を
完了した結果、遅延完了(delayed completion)が生成さ
れる。遅延完了は、遅延要求および完了ステータスのラ
ッチされた情報ならびにデータから成る。ブリッジ10
6は、バス・マスタ108が最初の要求を繰り返すま
で、データおよび完了ステータスをバッファ領域204
に格納する。
くバスの再調停を行い、元のメモリ・リード要求を再発
行する。ブリッジ106はこの要求をデコードし、処理
を要求し、データをバス・マスタ108に供給する。こ
の時点で、遅延完了は引っ込められ、トランザクション
は完了したことになる。バス・マスタ108に返される
ステータスは、ブリッジ106が、ターゲット(メモリ
104)から、リード・トランザクションを実行したと
きに取得したものと正確に同一であり、即ち、マスタ・
アボート、ターゲット・アボート、パリティ・エラー、
ノーマル、またはディスコネクトである。
するバッファ予約機構と組み合わせて用いることによ
り、バス・マスタとバス・スレーブの間のリード動作
は、以前よりも効率的に実行可能となる。
ータ転送を得るために望ましいものである。バス領域2
04の基本的な構成要素は、128バイト・バッファで
あり、図9のAでは、バッファ500と総称的に呼ばれ
ている。リード先取りデータおよびポステッド・ライト
・データ(posted write data)は双方ともブリッジ10
6(の異なるバッファ)に格納することができるが、リ
ード先取りデータは、ポステッド・メモリ・ライトが完
了するまで、有効となることはできない。データがバッ
ファ500に書き込まれると、BUFF_IN_PNTRが増分さ
れ、次のアドレスを示す。データは、BUFF_OUT_PNTRに
よって示されるアドレスに始まって、バッファ500か
ら消去される。BUFF_VALID_PNTRは、バッファ500の
どの領域が有効かを示す。BUFF_OUT_PNTRとBUFF_VALID_
PNTRの間のアドレスが有効アドレスとなる。遅延リード
要求が開始されると、BUFF_IN_PNTRおよびBUFF_OUT_PNT
Rは、PCIトランザクション・アドレスのビット4−
2に初期設定される。データの各Dwordが到達すると、B
UFF_IN_PNTRによって示されるアドレスに格納され、ポ
インタが増分される。宛先バス上のターゲットに宛て
た、未だ実行されていない以前のポステッド・メモリ・
ライトがない場合、BUFF_IN_PNTRを増分するときにBUFF
_VALIDポインタを増分することができる。前のポステッ
ド・メモリ・ライトがある場合、このライトを完了した
後にBUFF_VALID_PNTRを更新する。バス・マスタ108
がバッファからデータを取り込む際、各Dwordが除去さ
れた後にBUFF_OUT_PNTRが増分される。
のように構成されているかを示す。予約バッファ206
は、RSRV_BASE_ADDRによって示される開始アドレス、お
よびRSRV_LIMIT_ADDRによって示される終了アドレスを
有する。予約バッファ206は、3つの128バイト・
データ・バッファ(図9のAに示した形式の)で構成さ
れている。リード・トランザクションが進展するに連れ
て、これら3つのバッファが再使用され、RSRV_LIMIT_A
DDRからRSRV_BASE_ADDRを減じた長さの1つの長いバッ
ファをシミュレートする。個々のバッファは、各々、BU
FF_STARTによって示される開始アドレス、およびBUFF_L
IMITによって示される終了アドレスを有する。
TEおよびPREFETCH_FLAGによって示される。PREFETCH_FL
AGは、先取り動作と実際のリード要求との間で区別する
ために使用される。バッファに格納されているデータの
状態を図10に示す。バッファの状態は、システム・リ
セット、バッファ・タイムアウト、またはバッフア・フ
ラッシュ(buffer flush)の後にはEMPTY(空)と表され
る。バッファがEMPTYと示されている場合、それを割り
当てに使用可能である。バッファがリード要求に使用さ
れている場合、またはリード先取りを実行している場
合、このバッファはREQUEST(要求)と表される。一旦
あるデータがバッファに到達し始めたなら、状態はREQU
ESTからPART_COMP(部分完了)に遷移する。一旦全ての
データが受け取られたなら、バッファの状態はPART_COM
PからCOMPLETE(完了)に遷移する。バッファの状態がR
EQUST、PART_COMPまたはCOMPLETEであり、バッファがフ
ラッシュ(消去、flush)されている場合、状態はEMPTY
に戻る。バッファがCOMPLETEと示され、バス・マスタが
バッファからのデータ全てを読み取る場合、状態はCOMP
LETEからEMPTYに変化する。
シュされるのは、データの最後のDWORDがバッファから
除去されるときである。しかしながら、先取りされたデ
ータのフラッシュは、デフォルト・アルゴリズムまたは
保存アルゴリズム(conservative algorithm)では適宜行
われ、バス・マスタには決して古いデータを与えないこ
とを保証する。このために、バッファの状態を追跡する
のは重要である。
延リード要求で満たされていたバッファに残されている
データのことを意味するが、マスタが再接続したときに
は、マスタがディスコネクトする前にデータの一部のみ
が取り出されている。マスタの先取りデータは、以下の
状態の下でフラッシュされる。(1)マスタが、当該マ
スタの最後のリードとは連続しないアドレスからリード
をしようとする場合。(2)CPU102がこのマスタ
に影響を与え得るライト・トランザクション、例えば、
二次バス・ターゲットへのI/Oライト、汎用二次メモ
リ範囲レジスタへのメモリ・ライト、またはこのマスタ
のためのスロット特定メモリ範囲レジスタへのメモリ・
ライトのようなライト・トランザクションを行う場合。
(3)二次バス・マスタがこのマスタに影響を与え得る
ライト・トランザクション、例えば、二次バス・ターゲ
ットへのI/Oライト、汎用二次メモリ範囲レジスタへ
のメモリ・ライト、このマスタのためのスロット特定メ
モリ範囲レジスタへのメモリ・ライト、またはいずれか
のコンフィギュレーション・レジスタへのCPU102
のライトのようなライト・トランザクションを行う場
合。
11を参照しながら説明する。BUFF_STATEがREQUEST、P
ART_COMPまたはCOMPLETEと示された場合、PREFETCH_FLA
Gは、リードが先取りか又は実際のREQUESTかを示す。PR
EFETCH_FLAGがセットされている場合、先取り動作が進
行中であり、一方PREFETCH_FLAGがクリアされている場
合、実際のREQUESTが進行中である。セット状態からク
リア状態への遷移は、以下の式で示される。
またはそれが先取りデータを収容しているが当該バッフ
ァに対して進行中の先取りが既にない場合にのみ、新し
いREQUESTに対して使用可能となる。バス・マスタ10
8がリードを行おうとして、ブリッジ106が遅延リー
ド要求を開始した場合、BUFF_STATEはREQUESTに変更さ
れ、PREFETCH_FLAGはクリアされる。ブリッジ106の
先取りによってリード動作が開始された場合、BUFF_STA
TEはREQUESTに変更され、PREFETCH_FLAG がセットされ
る。
TEはPART_COMPに変更される。マスタがリード・トラン
ザクションを繰り返し、状態がPART_COMPまたはCOMPLET
Eである場合、リード・データをバス・マスタ108に
供給する。バス・マスタ108が、ブリッジ106から
ディスコネクトする前に、全てのデータを取り込まなか
った場合、PREFETCH_FLAGがセットされ、バッファ20
4内のデータの残りはこの時点では先取りされたデータ
と見なされることを示すが、状態は不変のままである。
バス・マスタ108が最後のデータを取り込んだ場合、
即ち、状態がCOMPLETEで(BUFF_OUT_PNTR >= BUFF_IN_PN
TR > リード後)の場合、状態はEMPTYに変更される。
ントが発生し、そのPREFETCH_FLAGがセットされ、状態
がREQUEST、PART_COMPまたはEMPTYと示されている場
合、先取りが現在進行中であるので、状態はEMPTYに変
更されるが、未処理の先取りが完了するまで、PREFETCH
_FLAGはセットされたままである。バッファ204は、P
REFETCH_FLAGがクリアされるまで、他の先取りのために
再使用することはできない。バッファ204に対してフ
ラッシュ・イベントが発生し、そのPREFETCH_FLAGがセ
ットされ、状態がCOMPLETEと示された場合、状態はEMPT
Yに変更され、PREFETCH_FLAGはクリアされる。
実際の遅延要求がバッファ204を必要とする場合、新
しい要求がバッファに与えられる。PREFETCH_FLAGはク
リアされ(入来する先取りデータを破棄させる)、状態
はREQUESTに変更される。
PREFETCH_FLAGがクリアされると、データは破棄される
(バッファは実際の要求のために再使用されている)。
先取りデータがバッファ204のために到達し、状態が
EMPTYの場合、データは破棄される(バッファがフラッ
シュされる)。最後の先取りデータが到達したとき、PR
EFETCH_FLAGがクリアされ、バッファ204は使用可能
となり再使用される。
フラッシュ・アルゴリズム、即ち、デフォルト・アルゴ
リズム、保存アルゴリズム、および予約アルゴリズムが
実施されている。デフォルト・アルゴリズムは、殆どの
バス・マスタに適用可能でなければならない。保存アル
ゴリズムは、先取りを少なく、フラッシュを多くする
が、デフォルト・アルゴリズムが特定のバス・マスタに
対して作用しない場合にのみ実施される。予約アルゴリ
ズムは、予約機構を開始可能な、一層高度なバス・マス
タによって用いられる。
好適実施例による先取り(プリフェッチ)およびフラッ
シュ・アルゴリズムについて説明する。ブリッジ106
は、データのリードおよびライトに関する種々の処理を
実行するが、簡略化のために、これらのステップを省略
してあることは理解されたい。更に、ライト・ポスティ
ングに関連するステップも示されていないが、ブリッジ
は、ここに記載するリード先取りおよびフラッシュ・プ
ロセスと共に、これらの処理も実行することは理解され
よう。
は、図12において、二次バス・インターフェース20
2上のバス・トランザクションの受け取りから開始す
る。ステップ700(図12)において、コンフィギュ
レーション・コマンドが受け取られたか否かについて判
定が行われる。受け取られた場合、制御はステップ71
0(図13)に移行し、このコマンドを完了する。その
他の場合、制御はステップ702に進む。ステップ70
2において、ライト動作がブリッジ106に発行された
か否かについて判定が行われる。発行された場合、制御
はステップ712(図14)に移行し、ライト動作が、
既に割り当てられているデフォルト・バッファの1つに
影響を与えるか否かについて判定を行う。バス・マスタ
108が、デフォルト・バッファ210の内の割り当て
らた1つであり、ライト動作が、コンフィギュレーショ
ン・ライトまたはコマンドのように、バス・マスタ10
8に対して実行される場合、新しいプロセスが開始され
た可能性があり、この場合、デフォルト・バッファ21
0内にある先取りされたデータはいずれもが古い又は一
致しない恐れがある。かかる場合、バッファはライト・
コマンドによる影響を受けたと言う。このような場合、
制御はステップ714に移行し、ライト動作によって影
響を受けたスロット又はマスタに対応するデフォルト・
バッファ210をフラッシュする。次に、制御はステッ
プ714からステップ716に移行する。ステップ71
2において、ライト・コマンドがいずれのデフォルト・
バッファ210にも影響を与えないと判定された場合、
制御はステップ712からステップ716に移行する。
ステップ716において、あらゆるライト・データのラ
イト・ポスティング・バッファへの受け取り及びBUFF_V
ALID_PNTRの更新(ステップ718)を含む、残りのラ
イト動作処理が行われる。BUFF_VALID_PNTRは、デフォ
ルト・アルゴリズムおよび保存アルゴリズムについての
み更新される。これで、このルーチンは終了し、それを
コールしたいずれかのプロセスに戻る。
でないと判定された場合、制御はステップ704に移行
し、動作が予約コマンドであるか否かについて判定が行
われる。予約コマンドである場合、制御はステップ72
0(図15)に移行し、予約コマンドがブリッジ106
によって受け取られる。次に、制御はステップ722に
移行し、予約資源220の1つがこの要求のために使用
可能であるか否かについて判定が行われる。使用可能で
はない場合、制御はステップ742に移行し、要求元バ
ス・マスタにリトライを発行し、このルーチンは終了す
る。予約資源220が使用可能である場合、制御はステ
ップ722からステップ724に移行する代わりに、予
約コマンド内に含まれているデータ(即ち、アドレスお
よびカウント)を用いて、予約資源レジスタを初期設定
する。次に、制御はステップ728に移行し、3つの1
28バイト・バッファをこの要求に割り当て、ステップ
730に移行し、これらのバッファに対するステータス
をEMPTYに変更する。次に、制御はステップ730から
ステップ732に移行し、ブリッジ106はデータの3
ないし4ラインを、バッファ206の第1の128バイ
ト・バッファに先取りする。次に、制御はステップ73
4に移行し、最後のバッファ・ポインタ(LAST_BUFF_PNT
R)を初期設定し、どのバッファが次に書き込まれるのか
を示す。
出コンフィギュレーション・ビット(forwarding config
uration bit)がセットされているか否かについて判定が
行われる。セットされている場合、次に制御はステップ
738に移行し、予約コマンドをいずれかの上流ブリッ
ジに向けて送出する。次に、制御はステップ738から
ステップ740に移行する。ステップ736において、
コンフィギュレーション・ビットがセットされていない
場合、制御は直接ステップ740に移行する。ステップ
740において、予約タイマをリセットし、開始する。
25ms、50msまたは100msのような所定の時
間量の後、予約資源にアクセスされなかった場合、予約
タイマはこの予約を取り消す。この無動作期間の後、デ
ータは古くなったものと見なす。これで、このルーチン
は終了する。
ドではないと判定された場合、次に制御はステップ70
6に移行し、動作はバス・マスタからのリード・リトラ
イか否かについて判定が行われる。バス・マスタからの
リード・リトライでない場合、この動作は最初のリード
動作であると見なされ、制御はステップ744(図1
7)に移行する。
スタが、それにデフォルト・バッファ210を既に割り
当ててあるか、または新しいバス・マスタであるかにつ
いて判定が行われる。これが新しいマスタでないと判定
された場合、制御はステップ746に移行し、要求され
たアドレスが、BUFF_OUT_PNTRによって指し示されてい
るアドレスに等しいか否かについて判定が行われる。等
しい場合、制御は次にステップ750に移行する。等し
くない場合、制御は次にステップ748に移行し、マス
タは既に、新しい、連続しないアドレスからリードを開
始しているので、割り当てられたデフォルト・バッファ
210をフラッシュする。次に、制御はステップ750
に移行し、デフォルト・バッファ210をこのマスタに
再度割り当て、上述のように、バッファ・レジスタを初
期設定する。次いで、制御はステップ768に移行す
る。
スタであると判定された場合、制御はステップ756に
移行し、デフォルト・バッファ210のいずれかが現在
EMPTY(空)と示されているか否かについて判定が行わ
れる。EMPTYと示されているデフォルト・バッファがあ
る場合、制御はステップ758に移行し、EMPTYのデフ
ォルト・バッファ210の1つを新しいマスタに割り当
てる。ステップ758から、制御はステップ768に移
行する。EMPTYと示されているデフォルト・バッファが
ない場合、制御はステップ760に移行し、いずれかの
デフォルト・バッファ210に、現在REQUESTまたはPAR
T_COMPと示されているものがあるか否かについて判定が
行われる。かかるバッファがある場合、制御はステップ
726に移行し、PREFETCH_FLAGがセットされているか
否かについて判定が行われ、セットされている場合、制
御はステップ764に移行し、デフォルト・バッファ2
10が新しいマスタに割り当てられる。次に、制御はス
テップ764からステップ768に移行する。ステップ
760および762において、判定が否定的である場
合、制御はステップ766に移行し、バス・マスタに、
後の時点で動作をリトライするように要求する。
割り当てられたまたは再割り当てされたデフォルト・バ
ッファ210に対する先取りをディスエーブルする。次
に、制御はステップ770(図16)に移行し、リード
要求情報を格納する。次に、制御はステップ772に移
行し、ブリッジ106が宛先バス上のターゲットから要
求されたデータを集めている間に、バス・マスタに動作
をリトライするように要求する。次に、制御はステップ
774に移行し、リード要求がメモリ・リード多重コマ
ンド(memory read multiple command)であったか否か
について判定を行う。そうであった場合、制御はステッ
プ776に移行し、ブリッジ106は、主メモリ104
からデータの3ないし4ラインを読み取る。次に、制御
はステップ776からステップ784に移行する。ステ
ップ774において、リード・コマンドがメモリ・リー
ド多重でなかったと判定された場合、制御はステップ7
78に移行し、リード・コマンドはメモリ・リード・ラ
イン・コマンドであったか否かについて判定を行う。そ
うであった場合、制御はステップ780に移行し、ブリ
ッジ106が主メモリ104からデータの1行を読み取
り、次いで、制御はステップ784に移行する。ステッ
プ778において、コマンドがメモリ・リード・ライン
・コマンドでなかったと判定された場合、制御はステッ
プ782に移行し、ブリッジ106は主メモリ104か
らデータの1Dwordを読み取り、次いで、制御はステッ
プ784に移行する。
は主メモリ104からデータを受け取り、ステップ78
6において、ブリッジ106は受け取ったデータを割り
当てられたバッファに格納し、処理は終了する。このル
ーチンは後に要求元バス・マスタがこの動作のリトライ
を行うときにコールされる。
・マスタからのリード・リトライ動作であると判定され
た場合、制御はステップ708に移行し、更に、このバ
ス・マスタは以前にバッファ予約を要求したことがある
か否かについて判定が行われる。要求したことがある場
合、制御はステップ788(図18)に移行し、このリ
トライ・リード動作に対するアドレスが、予約資源22
0の制限内であるか否かについて判定が行われる。制限
内でない場合、制御はステップ790に移行して予約を
取り消し、制御はステップ744(図17)に移行し、
デフォルト・アルゴリズムを用いてリード動作を開始す
る。ステップ788において、リード動作が予約制限内
であることが判定された場合、制御はステップ792に
移行し、次に、リード・アドレスが3つのバッファの制
限の1つの中にあるか否かについて判定が行われる。そ
うである場合、制御はステップ794に移行し、要求さ
れたデータのDwordをバス・マスタに供給する。ステッ
プ794から、制御はステップ796に移行し、バス・
マスタがこの特定の128バイト・バッファからリード
を行ったのは、これが最初であるか否かについて判定が
行われる。
98に移行し、ブリッジ106が、LAST_BUFF_PNTRによ
って示される次のバッファにデータを先取りする。バッ
ファ206は、リースト・リーセントリー・ユーズド
(least recently used)(LRU)アルゴリズムにし
たがって充填される。一旦あるバッファからデータが最
初に読み出されたなら、この次のデータ先取り動作に
は、最も長い間使用されていないバッファが用いられ
る。したがって、この点において、バス・マスタは1つ
のバッファからリードを行い、次のバッファは先取りさ
れたデータを保持し、別のバッファが以前に先取りされ
たデータを保持する。したがって、バス・マスタがバッ
クアップする必要があっても、あるいはその現アドレス
からステップ・バックする必要があっても、データは、
以前に先取りされたバッファにある可能性が未だに高
い。制御はステップ798からステップ800に移行す
る。これが最初ではない場合、制御はステップ796か
らステップ800に移行し、バス・マスタによるリード
動作がバースト・リードであるか否かについて判定が行
われる。バースト・リードである場合、制御はステップ
788に戻り、追加データを供給する。バースト・リー
ドでない場合、制御は終了に移行する。
ッファ制限内にないことが判定された場合、制御はステ
ップ804に移行し、ブリッジ106は、ブリッジが要
求されたデータを取り出している間に、マスタに動作を
リトライすることを強制する。次に、制御はステップ8
04から806に移行し、ブリッジが主メモリ104か
らデータを読み取り、ステップ808に移行してそのデ
ータを受け取り、ステップ810に移行して受け取った
データをバッファ206に格納し、ブリッジはバス・マ
スタがリード動作をリトライするのを待つ。
ために以前に要求した予約資源がなかった場合、制御は
ステップ812のデフォルト・アルゴリズム(図19)
に移行する。
ッファ210の1つから、要求されたデータをバス・マ
スタに供給する。次いで、制御はステップ814に移行
し、リード動作がバースト動作であるか否かについて判
定が行われる。バースト動作でない場合、処理はステッ
プ815に進み、保存(conservative)アルゴリズムが
選択されるか否かについて判定が行われる。される場
合、制御はステップ817に移行し、バッファをフラッ
シュする。保存アルゴリズムが選択されない場合、制御
は終了に移行する。ステップ814において、バースト
動作が進行中である場合、制御はステップ816に移行
し、次の要求されたアドレスが、データ・バッファ内に
含まれているか否かについて判定が行われる。そうであ
る場合、制御はステップ818に移行し、データをバス
・マスタに供給する。次に、制御はステップ814に戻
り、要求されれば、追加データを供給する。ステップ8
16において、次の要求されたアドレスがバッファ内に
含まれていないと判定された場合、制御はステップ82
0に移行し、このバッファに対して先取りがイネーブル
されているか否かについて判定が行われる。イネーブル
されていない場合、制御はステップ832に移行し、先
取りをイネーブルする。次いで、上述のように、制御は
ステップ770に移行する。
ブルされていると判定された場合、制御はステップ82
2に移行し、リード・トランザクション情報をブリッジ
106に格納する。次に、制御はステップ824および
826に移行し、ブリッジ106がバス・マスタにリト
ライを発行し、ブリッジはリード動作を主メモリ104
に発行する。この点以降、このバス・マスタに対して先
取りがイネーブルされる。ステップ828において、ブ
リッジ106はリード・データを受け取り、ステップ8
30において、ブリッジは受け取ったデータをバッファ
に格納し、バス・マスタがリード動作をリトライするの
を待つ。
り、その説明に供するものであり、本発明の精神から逸
脱することなく、サイズ、形状、材質、構成要素、回路
素子、配線接続および接点、ならびに図示した回路や構
成、更に動作方法における種々の変更が可能である。
込んだコンピュータ・システムのブロック図である。
込んだコンピュータ・システムの更に詳細なブロック図
である。
ブロックを示すブロック図である。
ブロックを示すブロック図である。
合された非予約ブリッジを有する、バスの階層の一例を
示すブロック図である。
ッジとして動作する、バスの階層の一例を示すブロック
図である。
ド・トランザクションを示すタイミング図である。
スによる、PCIバス・リード・トランザクションを示
すタイミング図である。
に従った単一の128バイト・データ・バッファのブロ
ック図であり、Bは好適実施例に従った予約バッファの
ブロック図である。
図である。
す状態図である。
シュ・アルゴリズムを示すフローチャートである。
フローチャートである。
フローチャートである。
フローチャートである。
「G」に続くフローチャートである。
フローチャートである。
フローチャートである。
フローチャートである。
Claims (36)
- 【請求項1】 バス・ブリッジとバス・マスタの間にお
ける通信方法であって、前記バス・ブリッジは少なくと
も1つのデータ・バッファを有する、方法において、 (a)前記バス・マスタから予約コマンドを受け取るス
テップと、 (b)前記予約コマンドに応答して、前記バス・マスタ
のためにデータ・バッファを予約するステップと、 を備える方法。 - 【請求項2】 請求項1記載の方法において、(c)ス
テップ(a)の後に、バス・コマンドを受け取るステッ
プを更に備える方法。 - 【請求項3】 請求項2記載の方法において、前記バス
・コマンドは開始アドレスを含み、前記バス・コマンド
および前記予約コマンドは共になってアドレス範囲を定
義する、方法。 - 【請求項4】 請求項3記載の方法において、前記予約
コマンドはカウントを含む、方法。 - 【請求項5】 請求項3記載の方法において、前記バス
・コマンドがリード動作である場合に、 (d)前記リード動作に従ってデータを取り込むステッ
プであって、該データは予約された前記バッファを通じ
て受け渡される、ステップと、 (e)前記リード動作および前記アドレス範囲に従って
データを先取りするステップであって、先取りした該デ
ータは前記の予約されたデータ・バッファに書き込まれ
る、ステップと、 (f)前記の取り込んだデータおよび先取りしたデータ
を前記バス・マスタに供給するステップと、 を更に備える方法。 - 【請求項6】 請求項5記載の方法において、 (g)前記アドレス範囲を使い切るまで、ステップ
(e)および(f)を繰り返すステップと、 (h)ステップ(g)の後にデータ・バッファ予約を取
り消すステップと、 を更に備える方法。 - 【請求項7】 請求項1記載の方法において、前記予約
コマンドは、フレーム信号がアサートされた後に受け取
られる、方法。 - 【請求項8】 請求項1記載の方法において、前記バス
・ブリッジおよび前記バス・マスタは、周辺素子相互接
続(PCI)バスに結合するためのものである、方法。 - 【請求項9】 第1と第2バス・ブリッジの間における
通信の方法であって、前記第2バス・ブリッジは前記第
1バス・ブリッジとバス・マスタとの間を結合するもの
である、方法において、 (a)前記第2バス・ブリッジにおいて前記バス・マス
タから予約コマンドを受け取るステップと、 (b)前記予約コマンドを前記第1バス・ブリッジに送
出するステップと、を備える方法。 - 【請求項10】 請求項9記載の方法において、前記第
2バス・ブリッジは、予約コマンドが送出されるか否か
を選択するためのプログラム可能な送出ビットを含み、
更に、 (c)ステップ(b)の前に予約コマンドの送出をイネ
ーブルするために前記送出ビットがセットされているか
否かについて判定を行うステップを含み、 ステップ(b)は、送出をイネーブルとするために前記
送出ビットがセットされることを条件とする、 方法。 - 【請求項11】 請求項9記載の方法において、 (d)ステップ(a)の後にバス・コマンドを受け取る
ステップと、 (e)前記予約コマンドおよび前記バス・コマンドに応
答して、前記バス・マスタのためにデータ・バッファを
予約するステップと、 を更に備える方法。 - 【請求項12】 請求項11記載の方法において、前記
バス・コマンドは開始アドレスを含み、前記バス・コマ
ンドおよび前記予約コマンドは共になってアドレス範囲
を定義する、方法。 - 【請求項13】 請求項12記載の方法において、前記
予約コマンドはカウントを含む、方法。 - 【請求項14】 請求項12記載の方法において、前記
バス・コマンドがリード動作である場合に、 (f)前記リード動作に従ってデータを取り込むステッ
プであって、該データは予約された前記バッファを通じ
て渡される、ステップと、 (g)前記リード動作および前記アドレス範囲に従って
データを先取りするステップであって、先取りした該デ
ータは前記の予約したデータ・バッファに書き込まれ
る、ステップと、 (h)前記の取り込んだデータおよび先取りしたデータ
を前記バス・マスタに供給するステップと、 を更に備える方法。 - 【請求項15】 請求項14記載の方法において、 (i)前記アドレス範囲を使い切るまでステップ(g)
および(h)を繰り返すステップと、 (j)ステップ(i)の後に前記のデータ・バッファ予
約を取り消すステップと、 を更に備える方法。 - 【請求項16】 請求項9記載の方法において、前記予
約コマンドは、フレーム信号をアサートした後に受け取
られる、方法。 - 【請求項17】 請求項9記載の方法において、前記バ
ス・ブリッジおよび前記バス・マスタは、周辺素子相互
接続(PCI)バスに結合するためのものである、方
法。 - 【請求項18】 バス・ブリッジにおいてバッファを予
約する方法であって、 (a)フレーム指示を与えるステップと、 (b)前記フレーム指示をあたえるときに予約コマンド
を与えるステップと、 (c)ステップ(b)の後でかつ前記フレーム指示を与
えている間に、バス・コマンドを与えるステップと、 を備える方法。 - 【請求項19】 請求項18記載の方法において、前記
バス・コマンドは開始アドレスを含み、前記バス・コマ
ンドおよび前記予約コマンドは共になってアドレス範囲
を定義する、方法。 - 【請求項20】 請求項18記載の方法において、前記
予約コマンドはカウントを含む、方法。 - 【請求項21】 コンピュータ・システムであって、 主メモリと、 前記主メモリに結合されるプロセッサと、 大容量記憶システムと、 前記大容量記憶システムに結合されるバス・マスタであ
って、予約コマンドおよびバス・コマンドを含むバス動
作を与えるように動作可能なバス・マスタと、 前記主メモリと前記バス・マスタの間に結合されるバス
・ブリッジであって、少なくとも1つの割り当て可能な
データ・バッファを有し、前記バス動作を受け取り、該
バス動作に応答して、前記バス・マスタの排他的使用の
ためにデータ・バッファを予約するように動作可能であ
るバス・ブリッジと、 を備えるコンピュータ・システム。 - 【請求項22】 請求項21記載のコンピュータ・シス
テムにおいて、前記バス・コマンドは開始アドレスを含
み、前記バス・コマンドおよび前記予約コマンドは共に
なってアドレス範囲を定義する、コンピュータ・システ
ム。 - 【請求項23】 請求項22記載のコンピュータ・シス
テムにおいて、前記予約コマンドはカウントを含む、コ
ンピュータ・システム。 - 【請求項24】 請求項22記載のコンピュータ・シス
テムにおいて、前記バス・コマンドがリード動作である
場合に、 前記バス・ブリッジは、前記リード動作に従ってデータ
を取り込み、前記アドレス範囲に従ってデータを先取り
し、データは要求されたときに前記バス・マスタに供給
される、コンピュータ・システム。 - 【請求項25】 請求項24記載のコンピュータ・シス
テムにおいて、前記バス・マスタが前記アドレス範囲の
最後のアドレスにおいて読み取りを行うときに、前記バ
ス・ブリッジは前記データ・バッファの予約を取り消
す、コンピュータ・システム。 - 【請求項26】 請求項21記載のコンピュータ・シス
テムにおいて、前記予約コマンドは、フレーム信号がア
サートされた後に受け取られる、コンピュータ・システ
ム。 - 【請求項27】 請求項21記載のコンピュータ・シス
テムにおいて、前記バス・ブリッジおよび前記バス・マ
スタは周辺素子相互接続(PCI)バスに結合される、
コンピュータ・システム。 - 【請求項28】 請求項21記載のコンピュータ・シス
テムにおいて、前記バス動作は、前記大容量記憶システ
ムに書き込むためのメモリ・リード動作を含む、コンピ
ュータ・システム。 - 【請求項29】 コンピュータ・システムであって、 主メモリと、 前記主メモリに結合されるプロセッサと、 大容量記憶システムと、 前記大容量記憶システムに結合されるバス・マスタであ
って、予約コマンドとバス・コマンドとを含むバス動作
を与えるように動作可能なバス・マスタと、 前記主メモリに結合される第1バス・ブリッジと、 前記第1バス・ブリッジと前記バス・マスタとの間に結
合される第2バス・ブリッジであって、少なくとも1つ
の割り当て可能なデータ・バッファと送出ビットとを有
し、前記バス動作を受け取り且つ前記バス動作に応答し
て前記バス・マスタの排他的使用のためにデータ・バッ
ファを予約するように動作可能であり、前記送出ビット
がセットされている場合に前記予約コマンドを前記第1
ブリッジに送出するように動作可能である、第2バス・
ブリッジと、 を備えるコンピュータ・システム。 - 【請求項30】 請求項29記載のコンピュータ・シス
テムにおいて、前記バス・コマンドは開始アドレスを含
み、前記バス・コマンドおよび前記予約コマンドは共に
なってアドレス範囲を定義する、コンピュータ・システ
ム。 - 【請求項31】 請求項30記載のコンピュータ・シス
テムにおいて、前記予約コマンドはカウントを含む、コ
ンピュータ・システム。 - 【請求項32】 請求項29記載のコンピュータ・シス
テムにおいて、前記バス・コマンドがリード動作である
場合に、 前記第2バス・ブリッジは、前記リード動作に従ってデ
ータを取り込み且つ前記アドレス範囲に従ってデータを
先取りし、データは要求されたときに前記バス・マスタ
に供給される、コンピュータ・システム。 - 【請求項33】 請求項32記載のコンピュータ・シス
テムにおいて、前記バス・マスタが前記アドレス範囲の
最後のアドレスにおいて読み取りを行うときに、前記第
2バス・ブリッジは前記データ・バッファの予約を取り
消す、コンピュータ・システム。 - 【請求項34】 請求項29記載のコンピュータ・シス
テムにおいて、前記予約コマンドは、フレーム信号がア
サートされた後に受け取られる、コンピュータ・システ
ム。 - 【請求項35】 請求項29記載のコンピュータ・シス
テムにおいて、前記第2バス・ブリッジおよび前記バス
・マスタは周辺素子相互接続(PCI)バスに結合され
る、コンピュータ・システム。 - 【請求項36】 請求項29記載のコンピュータ・シス
テムにおいて、前記バス動作は、前記大容量記憶システ
ムに書き込むためのメモリ・リード動作を含む、コンピ
ュータ・システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US774746 | 1996-12-31 | ||
| US08/774,746 US5815677A (en) | 1996-12-31 | 1996-12-31 | Buffer reservation method for a bus bridge system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10247172A true JPH10247172A (ja) | 1998-09-14 |
| JPH10247172A5 JPH10247172A5 (ja) | 2005-08-04 |
Family
ID=25102158
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10031923A Pending JPH10247172A (ja) | 1996-12-31 | 1998-01-05 | バス・ブリッジ・システムのためのバッファ・リザベーション方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US5815677A (ja) |
| EP (1) | EP0851362B1 (ja) |
| JP (1) | JPH10247172A (ja) |
| DE (1) | DE69721209T2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6820161B1 (en) | 2000-09-28 | 2004-11-16 | International Business Machines Corporation | Mechanism for allowing PCI-PCI bridges to cache data without any coherency side effects |
| JP2011018358A (ja) * | 2010-09-13 | 2011-01-27 | Tao Logic Systems Llc | リンクブリッジ |
| JP2015154260A (ja) * | 2014-02-14 | 2015-08-24 | 富士通株式会社 | 情報処理装置および情報処理装置の制御方法 |
Families Citing this family (43)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6092141A (en) * | 1996-09-26 | 2000-07-18 | Vlsi Technology, Inc. | Selective data read-ahead in bus-to-bus bridge architecture |
| US5815677A (en) * | 1996-12-31 | 1998-09-29 | Compaq Computer Corporation | Buffer reservation method for a bus bridge system |
| US5961606A (en) * | 1997-06-30 | 1999-10-05 | Sun Microsystems, Inc. | System and method for remote buffer allocation in exported memory segments and message passing between network nodes |
| US5938777A (en) * | 1997-07-31 | 1999-08-17 | Advanced Micro Devices, Inc. | Cycle list based bus cycle resolution checking in a bus bridge verification system |
| US6047339A (en) * | 1997-10-27 | 2000-04-04 | Emulex Corporation | Buffering data that flows between buses operating at different frequencies |
| US5964859A (en) * | 1997-10-30 | 1999-10-12 | Advanced Micro Devices, Inc. | Allocatable post and prefetch buffers for bus bridges |
| US6212590B1 (en) * | 1997-12-22 | 2001-04-03 | Compaq Computer Corporation | Computer system having integrated bus bridge design with delayed transaction arbitration mechanism employed within laptop computer docked to expansion base |
| US6199131B1 (en) * | 1997-12-22 | 2001-03-06 | Compaq Computer Corporation | Computer system employing optimized delayed transaction arbitration technique |
| JP4111472B2 (ja) * | 1998-05-15 | 2008-07-02 | キヤノン株式会社 | 通信制御方法及び装置及び通信システム |
| US6216182B1 (en) * | 1998-07-30 | 2001-04-10 | Fore Systems, Inc. | Method and apparatus for serving data with adaptable interrupts |
| US7734852B1 (en) | 1998-08-06 | 2010-06-08 | Ahern Frank W | Modular computer system |
| US6405276B1 (en) * | 1998-12-10 | 2002-06-11 | International Business Machines Corporation | Selectively flushing buffered transactions in a bus bridge |
| US6286074B1 (en) * | 1999-03-24 | 2001-09-04 | International Business Machines Corporation | Method and system for reading prefetched data across a bridge system |
| US6442641B1 (en) * | 1999-06-08 | 2002-08-27 | Intel Corporation | Handling multiple delayed write transactions simultaneously through a bridge |
| US6532521B1 (en) * | 1999-06-30 | 2003-03-11 | International Business Machines Corporation | Mechanism for high performance transfer of speculative request data between levels of cache hierarchy |
| US6510494B1 (en) | 1999-06-30 | 2003-01-21 | International Business Machines Corporation | Time based mechanism for cached speculative data deallocation |
| US6496921B1 (en) | 1999-06-30 | 2002-12-17 | International Business Machines Corporation | Layered speculative request unit with instruction optimized and storage hierarchy optimized partitions |
| US6708244B2 (en) * | 1999-07-22 | 2004-03-16 | Cypress Semiconductor Corp. | Optimized I2O messaging unit |
| US6418503B1 (en) * | 1999-08-19 | 2002-07-09 | International Business Machines Corporation | Buffer re-ordering system |
| US7457896B1 (en) * | 1999-08-25 | 2008-11-25 | Seagate Technology Llc | Automated register data transfer to reduce processing burden on a processing device |
| TW449698B (en) * | 1999-12-15 | 2001-08-11 | Via Tech Inc | Control chipsets and data exchange method among them |
| US6490644B1 (en) * | 2000-03-08 | 2002-12-03 | International Business Machines Corporation | Limiting write data fracturing in PCI bus systems |
| US6708240B1 (en) * | 2000-03-31 | 2004-03-16 | Intel Corporation | Managing resources in a bus bridge |
| US6490647B1 (en) | 2000-04-04 | 2002-12-03 | International Business Machines Corporation | Flushing stale data from a PCI bus system read prefetch buffer |
| US6578102B1 (en) * | 2000-04-18 | 2003-06-10 | International Business Machines Corporation | Tracking and control of prefetch data in a PCI bus system |
| US6594719B1 (en) | 2000-04-19 | 2003-07-15 | Mobility Electronics Inc. | Extended cardbus/pc card controller with split-bridge ™technology |
| US6757767B1 (en) * | 2000-05-31 | 2004-06-29 | Advanced Digital Information Corporation | Method for acceleration of storage devices by returning slightly early write status |
| US6691200B1 (en) | 2001-05-01 | 2004-02-10 | Pericom Semiconductor Corp. | Multi-port PCI-to-PCI bridge with combined address FIFOs but separate data FIFOs for concurrent transactions |
| US6877060B2 (en) * | 2001-08-20 | 2005-04-05 | Intel Corporation | Dynamic delayed transaction buffer configuration based on bus frequency |
| US6748497B1 (en) * | 2001-11-20 | 2004-06-08 | Cirrus Logic, Inc. | Systems and methods for buffering memory transactions |
| US6957293B2 (en) * | 2002-04-15 | 2005-10-18 | International Business Machines Corporation | Split completion performance of PCI-X bridges based on data transfer amount |
| FR2846764B1 (fr) * | 2002-11-04 | 2005-01-14 | St Microelectronics Sa | Perfectionnement aux systemes electroniques comprenant un bus systeme |
| US7900017B2 (en) * | 2002-12-27 | 2011-03-01 | Intel Corporation | Mechanism for remapping post virtual machine memory pages |
| US6950905B2 (en) * | 2003-02-20 | 2005-09-27 | Sun Microsystems, Inc. | Write posting memory interface with block-based read-ahead mechanism |
| US7039747B1 (en) * | 2003-12-18 | 2006-05-02 | Cisco Technology, Inc. | Selective smart discards with prefetchable and controlled-prefetchable address space |
| DE10360679B4 (de) * | 2003-12-19 | 2007-04-19 | Infineon Technologies Ag | Programmgesteuerte Einheit |
| US7657690B1 (en) * | 2005-06-14 | 2010-02-02 | Globalfoundries Inc. | Control of PCI memory read behavior using memory read alias and memory command reissue bits |
| JP2007200169A (ja) | 2006-01-30 | 2007-08-09 | Hitachi Ltd | ストレージシステム及び記憶制御方法 |
| JP4304676B2 (ja) * | 2006-10-31 | 2009-07-29 | 日本電気株式会社 | データ転送装置、データ転送方法、及びコンピュータ装置 |
| EP2710476A1 (en) | 2011-05-16 | 2014-03-26 | Oracle International Corporation | System and method for providing a messaging application program interface |
| US8935707B2 (en) * | 2011-05-16 | 2015-01-13 | Oracle International Corporation | System and method for providing a messaging application program interface |
| US9465763B2 (en) * | 2013-06-17 | 2016-10-11 | Altera Corporation | Bridge circuitry for communications with dynamically reconfigurable circuits |
| GB2525577A (en) * | 2014-01-31 | 2015-11-04 | Ibm | Bridge and method for coupling a requesting interconnect and a serving interconnect in a computer system |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4860193A (en) * | 1986-05-22 | 1989-08-22 | International Business Machines Corporation | System for efficiently transferring data between a high speed channel and a low speed I/O device |
| US5586294A (en) * | 1993-03-26 | 1996-12-17 | Digital Equipment Corporation | Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer |
| US5542055A (en) * | 1993-05-28 | 1996-07-30 | International Business Machines Corp. | System for counting the number of peripheral buses in each hierarch connected to primary bus for creating map of peripheral buses to locate peripheral devices |
| JPH0784807A (ja) * | 1993-09-14 | 1995-03-31 | Fujitsu Ltd | バッファ管理装置および方法 |
| JPH07175698A (ja) * | 1993-12-17 | 1995-07-14 | Fujitsu Ltd | ファイルシステム |
| US5797042A (en) * | 1995-03-16 | 1998-08-18 | Intel Corporation | Method and apparatus for adjusting the buffering characteristic in the pipeline of a data transfer system |
| US5615392A (en) * | 1995-05-05 | 1997-03-25 | Apple Computer, Inc. | Method and apparatus for consolidated buffer handling for computer device input/output |
| JP3078204B2 (ja) * | 1995-06-01 | 2000-08-21 | 株式会社東芝 | 磁気ディスク装置及び磁気ディスク装置におけるバッファ管理方法 |
| US5694556A (en) * | 1995-06-07 | 1997-12-02 | International Business Machines Corporation | Data processing system including buffering mechanism for inbound and outbound reads and posted writes |
| US5859988A (en) * | 1995-09-29 | 1999-01-12 | Intel Corporation | Triple-port bus bridge |
| US5893926A (en) * | 1995-12-08 | 1999-04-13 | International Business Machines Corporation | Data buffering technique in computer system |
| US5815677A (en) * | 1996-12-31 | 1998-09-29 | Compaq Computer Corporation | Buffer reservation method for a bus bridge system |
-
1996
- 1996-12-31 US US08/774,746 patent/US5815677A/en not_active Expired - Lifetime
-
1997
- 1997-12-31 EP EP97310692A patent/EP0851362B1/en not_active Expired - Lifetime
- 1997-12-31 DE DE69721209T patent/DE69721209T2/de not_active Expired - Lifetime
-
1998
- 1998-01-05 JP JP10031923A patent/JPH10247172A/ja active Pending
- 1998-09-29 US US09/162,924 patent/US6260095B1/en not_active Expired - Lifetime
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6820161B1 (en) | 2000-09-28 | 2004-11-16 | International Business Machines Corporation | Mechanism for allowing PCI-PCI bridges to cache data without any coherency side effects |
| JP2011018358A (ja) * | 2010-09-13 | 2011-01-27 | Tao Logic Systems Llc | リンクブリッジ |
| JP2015154260A (ja) * | 2014-02-14 | 2015-08-24 | 富士通株式会社 | 情報処理装置および情報処理装置の制御方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5815677A (en) | 1998-09-29 |
| US6260095B1 (en) | 2001-07-10 |
| EP0851362A1 (en) | 1998-07-01 |
| DE69721209D1 (de) | 2003-05-28 |
| EP0851362B1 (en) | 2003-04-23 |
| DE69721209T2 (de) | 2003-11-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5815677A (en) | Buffer reservation method for a bus bridge system | |
| JP3275051B2 (ja) | バスブリッジにおけるトランザクション順序を維持し、遅延応答をサポートする方法及びそのための装置 | |
| US5463753A (en) | Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller | |
| US5958019A (en) | Multiprocessing system configured to perform synchronization operations | |
| US6279087B1 (en) | System and method for maintaining coherency and improving performance in a bus bridge supporting write posting operations | |
| EP0817073B1 (en) | A multiprocessing system configured to perform efficient write operations | |
| US6948035B2 (en) | Data pend mechanism | |
| US5881303A (en) | Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode | |
| US5572703A (en) | Method and apparatus for snoop stretching using signals that convey snoop results | |
| US6049841A (en) | Method and apparatus of selecting data transmission channels | |
| US5987555A (en) | Dynamic delayed transaction discard counter in a bus bridge of a computer system | |
| US5860159A (en) | Multiprocessing system including an apparatus for optimizing spin--lock operations | |
| US6330630B1 (en) | Computer system having improved data transfer across a bus bridge | |
| US7213094B2 (en) | Method and apparatus for managing buffers in PCI bridges | |
| US5269005A (en) | Method and apparatus for transferring data within a computer system | |
| US5859988A (en) | Triple-port bus bridge | |
| JPH08115260A (ja) | データ処理システムのi/oチャネル・コントローラのコヒーレンシと同期化装置及び方法 | |
| JP2001117859A (ja) | バス制御装置 | |
| US20030014591A1 (en) | Scarfing within a hierarchical memory architecture | |
| US5974497A (en) | Computer with cache-line buffers for storing prefetched data for a misaligned memory access | |
| JP3600536B2 (ja) | 書き込みデータの破壊を制限する方法及びシステムとpciバス・システム | |
| EP0924621A2 (en) | Computer system including bridge logic having a fair arbitration mechanism to support isochronous devices | |
| JP2005508549A (ja) | アンキャッシュ素子のための帯域幅の向上 | |
| US5809534A (en) | Performing a write cycle to memory in a multi-processor system | |
| JP2002198987A (ja) | ハブおよびポート付き転送コントローラのアクティブ・ポート |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041227 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041227 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070425 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070510 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071204 |