(57)【要約】【課題】画像データ等、大量のデータを効率良く処理する。【解決手段】システムバスブリッジ（ＳＳＢ）４０２には、ＣＰＵ４０１からのＰバス、システムメモリからのＭＣバス、入出力機器が接続されたＩＯバス、スキャナプリンタコントローラ４０８の画像データを転送するＧバスが接続され、ＳＳＢ４０２は、マスタとしてＰバス、Ｇバス、ＩＯバスのいずれか、スレーブとしてＭＣバス、ＩＯバスのいずれかをマスタの要求に応じて接続する。この際、ＰバスとＩＯバス、ＧバスとＭＣバスは、並列に接続することができる。そのため、ＣＰＵによる入出力機器の使用と並行して、スキャナプリンタコントローラによるメモリのアクセスを行うことができる。また、使用するバスを決定するためには、バスマスタから出されるバス要求の情報を判定し、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定する。【選択図】図４
2004046851.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも４つのバスと、
前記バスに接続されたバスマスタと、
前記バス同士の接続を、前記バスのそれぞれに接続されたバスマスタのバスの要求に応じて切り替える切り替え手段とを備え、
前記少なくとも４つのバスの内のひとつにはメモリが、他のバスにはそれぞれ少なくとも１つのバスマスタが接続され、
前記他のバスには、プロセッサに接続されたバスと、入出力機器に接続された少なくとも２つのバスとを含み、前記切り替え手段は、プロセッサに接続されたバスと入出力機器に接続されたバスとからの接続要求を調停し、
前記切り替え手段は、前記メモリに接続されたバスと前記入出力機器に接続された一方のバスと、前記プロセッサに接続されたバスと前記入出力機器に接続された他方のバスとのそれぞれを、並列的に接続することを特徴とするバス管理装置。
【請求項２】
前記切り替え手段は、前記プロセッサからのメモリあるいは入出力に対する接続要求と、前記入出力バスそれぞれからメモリに対する接続要求とを調停し、バス同士の接続を切り替えることを特徴とする請求項１に記載のバス管理装置。
【請求項３】
前記入出力機器は画像データの入力及び出力を行う画像入出力機器であり、前記入出力機器を制御する制御部を更に備え、該制御部は、前記入出力機器に接続された２つのバスに接続され、選択的にいずれかを用いることを特徴とする請求項１に記載のバス管理装置。
【請求項４】
少なくとも４つのバスに各々接続されるバスインターフェースと、
前記バスからの接続要求に応じて２つの前記バス間を接続して通信路を形成するバススイッチ手段と、
前記バスから受信した接続要求を調停する調停手段とを備え、
前記スイッチ手段は、同時動作できる互いに異なる２つのバス間を接続した２つの通信路を形成することを特徴とするバス管理装置。
【請求項５】
前記バスインターフェースは、メモリに接続されたバスに接続される第１のバスインターフェースと、プロセッサに接続されたバスに接続される第２のバスインターフェースと、入出力機器に接続された少なくとも２つの第３、第４のバスインターフェースを含むことを特徴とする請求項４記載のバス管理装置
【請求項６】
それぞれにバスマスタを備えた少なくとも２つのバスと、
前記バスを介してアクセスされるメモリと、
前記バスそれぞれに接続され、当該バスのバスマスタによるバス要求を調停し、そのいずれかにバス使用権を付与する調停手段と、
前記バスそれぞれについてバス使用権を付与された複数のバスマスタが同一のあて先に書き込みを行う場合、それらバスマスタのうち、もっとも早くバス要求を出したバスマスタ以外のバスマスタに対するバス使用権を停止させるよう、前記調停手段に対して通知するバス同期手段と
を備えることを特徴とするバス管理装置。
【請求項７】
前記バス同期手段は、前記各バスのバスマスタがバス要求を出した時刻を記憶し、バス要求とともに指定されたアドレスを比較して一致した場合には前記記憶された時刻を比較し、もっとも速い時刻のバス要求でないバス要求を出したバスマスタを停止させることを特徴とする請求項６に記載のバス管理装置。
【請求項８】
それぞれがバスの調停手段を有する少なくとも２つのバスと、
前記バスに接続されたバスマスタと、
前記バスの状態と、前記バスマスタから出されるバス要求の情報とを判定し、前記バスのうちいずれを使用するか決定する決定手段とを備え、
前記バス要求の情報には、バス要求の優先度とデータの転送先と転送サイズとを含み、前記バスの状態には、各バスの使用状態を含み、前記決定手段は、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定することを特徴とするバス管理装置。
【請求項９】
単一の半導体基板上に形成されてなることを特徴とする請求項１乃至８のいずれかに記載のバス管理装置。
【請求項１０】
請求項１乃至９のいずれかに記載のバス管理装置を備え、該バス管理装置により、画像入力装置及び画像出力装置が接続されたバスを管理することを特徴とする複合機器の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、スキャナ等の画像入力装置と、プリンタ等の画像出力装置とを効率的に制御する複合機器の制御装置に関する。
【０００２】
【従来の技術】
従来、スキャナなどの画像入力装置と、プリンタなどの画像出力装置を組み合わせた、複写機やファクシミリ、あるいはそれらを単体として備えたコンピュータシステムなどが実用化されている。こういったシステムでは、画像データを扱うために、膨大な量のデータを効率的に処理する必要がある。
【０００３】
【発明が解決しようとする課題】
こういったシステムにおいては、データ転送のために複数のバスマスタによるＤＭＡ転送が用いられる。複数のバスマスタが順次に処理を行うことが必要な場合、例えば、メモリ上のデータに対して、処理Ａ（バスマスタ１）を行った後、処理Ｂ（バスマスタ２）を行い、その処理後のデータをバスマスタ４に送るといった一連の処理を考える。
【０００４】
通常このような処理を行う場合、大量のデータを扱うために、単一のバスではバスの転送能力がボトルネックとなっていた。これを解消するために、バスを２重化して転送能力の増強を図ったシステムもあった。
【０００５】
しかしながら、複数のバスを有するシステムであっても、バスの構成が柔軟でなく、大量のデータを転送する場合などには、十分な転送能力が引き出されてはいなかったという第１の問題点があった。
【０００６】
また、従来のバスは単一であるのが普通であり、複数のバスマスタが同一のメモリドレスに書き込みを行おうとした場合、バス使用権を獲得した順にメモリへデータを書き込むことが保証できた。
【０００７】
しかしながら、複数のバスが存在し、これらのバスのバス調停（アービトレーション）と、複数のバスのどれかひとつのバスをメモリへ接続することを独立に制御するシステム構成では、複数のバスの接続された複数のバスマスタが同時に同一のメモリ空間へ書き込みを行う可能性があり、書き込みの順序は、バスの調停によりバスの使用権を得た順序とはならない可能性があるという第２の問題点があった。以上述べたように、本発明は、膨大な量のデータを効率的に処理し、全体としての処理速度を向上させるバス管理装置及びそれを有する複合機器の制御装置を提供することを第１の目的とする。
【０００８】
また、本発明は上記第２の問題に鑑みてなされたもので、バスの構成を柔軟にし、最適なバスを選んでデータの転送を行えるバス管理装置及びそれを有する複合機器の制御装置を提供することを第２の目的とする。
【０００９】
また、本発明は上記第３の問題に鑑みてなされたもので、複数のバスのそれぞれに接続されたバスマスタからのバスの使用権を得た順にメモリにアクセスできるバス管理装置及びそれを有する複合機器の制御装置を提供することを第３の目的とする。
【００１０】
【課題を解決するための手段】
上記の問題を解決するために、本発明のバス管理装置は次のような構成からなる。
【００１１】
少なくとも４つのバスと、前記バスに接続されたバスマスタと、前記バス同士の接続を、前記バスのそれぞれに接続されたバスマスタのバスの要求に応じて切り替える切り替え手段と、前記少なくとも４つのバスの内のひとつにはメモリが、他のバスにはそれぞれ少なくとも１つのバスマスタが接続され、前記他のバスには、プロセッサに接続されたバスと、入出力機器に接続された少なくとも２つのバスとを含み、前記切り替え手段は、プロセッサに接続されたバスと入出力機器に接続されたバスとからの接続要求を調停し、前記切り替え手段は、前記メモリに接続されたバスと前記入出力機器に接続された一方のバスと、前記プロセッサに接続されたバスと前記入出力機器に接続された他方のバスとのそれぞれを、並列的に接続することを特徴とする。
【００１２】
さらに好ましくは、前記切り替え手段は、前記プロセッサからのメモリあるいは入出力に対する接続要求と、前記入出力バスそれぞれからメモリに対する接続要求とを調停し、バス同士の接続を切り替える。
【００１３】
さらに好ましくは、前記入出力機器は画像データの入力及び出力を行う画像入出力機器であり、前記入出力機器を制御する制御部を更に備え、該制御部は、前記入出力機器に接続された２つのバスに接続され、選択的にいずれかを用いる。
【００１４】
あるいは、少なくとも４つのバスに各々接続されるバスインターフェースと、前記バスからの接続要求に応じて２つの前記バス間を接続して通信路を形成するバススイッチ手段と、前記バスから受信した接続要求を調停する調停手段とを備え、前記スイッチ手段は、同時動作できる互いに異なる２つのバス間を接続した２つの通信路を形成することを特徴とする。
【００１５】
さらに好ましくは、前記バスインターフェースは、メモリに接続されたバスに接続される第１のバスインターフェースと、プロセッサに接続されたバスに接続される第２のバスインターフェースと、入出力機器に接続された少なくとも２つの第３、第４のバスインターフェースを含む。
【００１６】
あるいは、それぞれにバスマスタを備えた少なくとも２つのバスと、前記バスを介してアクセスされるメモリと、前記バスそれぞれに接続され、当該バスのバスマスタによるバス要求を調停し、そのいずれかにバス使用権を付与する調停手段と、前記バスそれぞれについてバス使用権を付与された複数のバスマスタが同一のあて先に書き込みを行う場合、それらバスマスタのうち、もっとも早くバス要求を出したバスマスタ以外のバスマスタに対するバス使用権を停止させるよう、前記調停手段に対して通知するバス同期手段とを備える。
【００１７】
さらに好ましくは、前記バス同期手段は、前記各バスのバスマスタがバス要求を出した時刻を記憶し、バス要求とともに指定されたアドレスを比較して一致した場合には前記記憶された時刻を比較し、もっとも速い時刻のバス要求でないバス要求を出したバスマスタを停止させる。
【００１８】
あるいは、それぞれがバスの調停手段を有する少なくとも２つのバスと、前記バスに接続されたバスマスタと、前記バスの状態と、前記バスマスタから出されるバス要求の情報とを判定し、前記バスのうちいずれを使用するか決定する決定手段とを備え、前記バス要求の情報には、バス要求の優先度とデータの転送先と転送サイズとを含み、前記バスの状態には、各バスの使用状態を含み、前記決定手段は、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定する。
【００１９】
あるいは、本発明の複合機器の制御装置は次のような構成からなる。すなわち、上記いずれかに記載のバス管理装置を備え、該バス管理装置により、画像入力装置及び画像出力装置が接続されたバスを管理する。
【００２０】
【発明の実施の形態】
次に本発明の実施の形態として、プロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナー／プリンタコントローラ、ＰＣＩインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである”ＤｏＥｎｇｉｎｅ”を説明する。
【００２１】
［１．ＤｏＥｎｇｉｎｅ概要］
ＤｏＥｎｇｉｎｅは、ＭＩＰＳテクノロジー社のＲ４０００プロセッサとコンパチブルなプロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナー／プリンタコントローラ、ＰＣＩインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである。高速並列動作、ビルディングブロック手法を採用し実装される。
【００２２】
プロセッサシェル（プロセッサコアを含むプロセッサ周辺回路の総称）内には最大でインストラクション、データそれぞれ１６Ｋバイトの計３２Ｋバイトのキャッシュメモリ、ＦＰＵ（浮動小数点演算ユニット）、ＭＭＵ（メモリ管理ユニット）、ユーザー定義可能なコプロセッサなどを内蔵することが可能である。
【００２３】
ＰＣＩバスインターフェースを有するので、ＰＣＩバススロットを有するコンピュータシステムと共に用いることができる。また、ＰＣＩサテライト構成に加え、ＰＣＩホストバスブリッジ構成にてＰＣＩバスコンフィギュレーションを発行することが可能であり、安価なＰＣＩ周辺デバイスと組み合わせることにより、マルチファンクションペリフェラル（複合機能周辺機器）のメインエンジンとして使用することも可能である。さらにＰＣＩバスインターフェースを有するレンダリングエンジン、圧縮・伸長エンジンと組み合わせることも可能である。
【００２４】
チップ内部に汎用ＩＯコアを接続するＩＯバス、及び、画像データ転送に最適化したグラフィックバス（Ｇバス：Ｇｒａｐｈｉｃｓ　Ｂｕｓ）の２系統の独立したバスを有し、メモリ、プロセッサとこれらのバスをクロスバスイッチを介して接続することにより、マルチファンクションシステムにおける同時動作に必須の、並列性の高い高速データ転送を実現している。
【００２５】
メモリには、画像データに代表される、連続したデータ列のアクセスに対し、最高のコストパフォーマンスを有するシンクロナスＤＲＡＭ（ＳＤＲＡＭ）をサポートし、ＳＤＲＡＭのバーストアクセス高速データ転送のメリットを享受できない小さなデータ単位でのランダムアクセスにおける性能低下を最小に抑えるために、８Ｋバイトの２ウェイセットアソシアティブ・メモリフロントキャッシュをメモリコントローラ内に備える。メモリフロントキャッシュは、すべてのメモリライトに対するバススヌープが難しい、クロスバスイッチを採用したシステム構成においても、複雑な機構なしに、キャッシュメモリによる高性能化が達成出来る方式である。また、リアルタイムデータ転送（機器制御）が可能な、プリンタ及びスキャナーとのデータインターフェース（Ｖｉｄｅｏ　Ｉｎｔｅｒｆａｃｅ）を有し、さらにハードウェアによる、機器間同期のサポート及び画像処理を行う事により、スキャナ、プリンタ分離型の構成においても、高品質で高速なコピー動作の実現が可能な構成となっている。
【００２６】
なお、ＤｏＥｎｇｉｎｅは、コアが３．３Ｖで動作し、ＩＯは５Ｖトレラントである。
【００２７】
図１及び図２，図３は、ＤｏＥｎｇｉｎｅを用いた装置あるいはシステムの構成例を示している。図１は分離構成型であり、パーソナルコンピュータ１０２には、それが備えるＰＣＩインターフェースを介してＤｏＥｎｇｉｎｅを備えたローカルボード１０１が装着される。ローカルボード１０１にはＤｏＥｎｇｉｎｅのほか、後述するメモリバスを介してＤｏＥｎｇｉｎｅと接続されたメモリと、色処理回路（チップ）が設けられている。このローカルボード１０１を介して、高速スキャナ１０３とカラー／モノクロプリンタ１０４とがパーソナルコンピュータ１０２に接続される。この構成により、パーソナルコンピュータの制御のもとで、ローカルボード１０１により、スキャナ１０３から入力された画像情報を処理し、プリンタ１０４から出力させることができる。
【００２８】
また、図２及び図３はスキャナ２０３とプリンタ２０２とを一体に組み込んだ例で、図２は通常の複写機に類する構成を、図３（ａ）はファクシミリ装置などの構成を示している。図３（ｂ）は、図３（ａ）をコントロールするコンピュータを示している。
【００２９】
これらのうち、図１，２は、ＰＣＩインターフェースを介して接続された外部のＣＰＵによりＤｏＥｎｇｉｎｅが制御されるというスレーブモードで使用されている例であり、図３は、ＤｏＥｎｇｉｎｅのＣＰＵが主体となり、ＰＣＩインターフェースを介して接続されたデバイスを制御するマスタモードで使用されている例である。
【００３０】
表１として、ＤｏＥｎｇｉｎｅの仕様を示す。外部インターフェースとして、ＰＣＩ，メモリバス，ビデオ，汎用入出力，ＩＥＥＥ１２８４，ＲＳ２３２Ｃ，１００ｂａｓｅＴ／１０ｂａｓｅＴ，ＬＣＤパネル及びキーを備えるが、更にＵＳＢを有していてもよい。内蔵ブロックとして、ＣＰＵコアに加えて、１次キャッシュ，キャッシュ付きメモリコントローラ，コピーエンジン，ＩＯバスアービタ，グラフィックバスアービタなどを備えている。また、ＤＭＡコントローラはチャネル数が５であり、グラフィックバス，ＩＯバスともにアービトレーションは、優先度付きの先着順処理方式で行われる。
【００３１】
【表１】
2004046851.tif 000003
【００３２】
［２．ＤｏＥｎｇｉｎｅの構成及び動作］
本章では、ＤｏＥｎｇｉｎｅ　の総論に加え、各機能ブロック毎のブロック図、概要、詳細、コアインターフェース、タイミング図などを解説する。
【００３３】
［２．１．ＤｏＥｎｇｉｎｅのチップ構成］
図４として、ＤｏＥｎｇｉｎｅのブロック図を示す。ＤｏＥｎｇｉｎｅ４００は次世代複合機能周辺機器（システム）（ＭＦＰ：Ｍｕｌｔｉ　Ｆｕｎｃｔｉｏｎ　Ｐｅｒｉｐｈｅｒａｌ　ｏｒ　ＭＦＳ：Ｍｕｌｔｉ　Ｆｕｎｃｔｉｏｎ　Ｓｙｓｔｅｍ）の主たるコントローラとして設計、開発された。
【００３４】
ＣＰＵ（プロセッサコア）４０１として、ＭＩＰＳテクノロジー社のＭＩＰＳＲ４０００コアを採用する。プロセッサコア４０１内には、８Ｋバイトずつのインストラクション，データのキャッシュメモリ、ＭＭＵなどが実装される。プロセッサコア４０１は、６４ビットのプロセッサバス（Ｐバス）を介して、システム・バス・ブリッジ（ＳＢＢ）４０２に接続される。ＳＢＢ４０２は４×４の６４ビットクロスバスイッチであり、プロセッサコア４０１の他に、キャッシュメモリを備えたＳＤＲＡＭやＲＯＭを制御するメモリコントローラ４０３と専用のローカルバス（ＭＣバス）で接続されており、さらに、グラフィックバスであるＧバス４０４、ＩＯバスであるＩＯバス４０５と接続され、全部で４つのバスに接続される。システムバスブリッジ４０２は、これら４モジュール間を、可能な限り、同時平行接続を確保することができるように設計されている。
【００３５】
Ｇバス４０４はＧバスアービタ（ＧＢＡ）４０６により協調制御されており、スキャナやプリンタと接続するためのスキャナ／プリンタコントローラ（ＳＰＣ）４０８に接続される。また、ＩＯバス４０５は、ＩＯバスアービタ（ＢＢＡ）４０７により協調制御されており、ＳＰＣ４０８のほか、電力管理ユニット（ＰＭＵ）４０９，インタラプトコントローラ（ＩＣ）４１０，ＵＡＲＴを用いたシリアルインターフェースコントローラ（ＳＩＣ）４１１，ＵＳＢコントローラ４１２，ＩＥＥＥ１２８４を用いたパラレルインターフェースコントローラ（ＰＩＣ）４１３，イーサネット（登録商標）を用いたＬＡＮコントローラ（ＬＡＮＣ）４１４，ＬＣＤパネル，キー，汎用入出力コントローラ（ＰＣ）４１５，ＰＣＩバスインターフェース（ＰＣＩＣ）４１６にも接続されている。
【００３６】
［２．２．プロセッサシェル］
プロセッサシェルとは、プロセッサコアに加えＭＭＵ（Ｍｅｍｏｒｙ　Ｍａｎａｇｅｍｅｎｔ　Ｕｎｉｔ）、命令キャッシュ、データキャッシュ、ライトバックバッファ及び掛け算ユニットを含んだブロックを指す。
＜キャッシュメモリ＞
図５に示したように、キャッシュメモリコントローラは、無効（Ｉｎｖａｌｉｄ），有効かつクリーン（Ｖａｌｉｄ　Ｃｌｅａｎ：キャッシュが更新されていない），有効かつダーティ（Ｖａｌｉｄ　Ｄｉｒｔｙ：キャッシュが更新されている）の３つのステートキャッシュを管理する。この状態に応じて、キャッシュは制御される。
【００３７】
［２．３．インタラプトコントローラ］
図６にインタラプトコントローラ４１０のブロック図を示す。インタラプトコントローラ４１０は、ＩＯバスインターフェース６０５を介してＩＯバス４０５に接続され、ＤｏＥｎｇｉｎｅチップ内の各機能ブロック及び、チップ外部からのインタラプトを集積し、ＣＰＵコア４０１がサポートする、６レベルの外部インタラプト及び、ノンマスカブルインタラプト（ＮＭＩ）に再分配する。各機能ブロックとは、電力管理ユニット４０９，シリアルインターフェースコントローラ４１１，ＵＳＢコントローラ４１２，パラレルインターフェースコントローラ４１３，イーサネット（登録商標）コントローラ４１４，汎用ＩＯコントローラ４１５，ＰＣＩインターフェースコントローラ４１６，スキャナ／プリンタコントローラ４０８などである。
【００３８】
この際、ソフトウェアコンフィギュレーション可能なマスクレジスタ（Ｉｎｔ　Ｍａｓｋ　Ｌｏｇｉｃ　０　−　５）６０２により、各要因毎に割り込みをマスクをすることが可能である。また、外部インタラプト入力は、選択的エッジ検出回路６０１により、信号線ごとに、エッジセンス／レベルセンスを選択することが出来る。要因レジスタ（Ｄｅｔｅｃｔ　ａｎｄ　ｓｅｔ　Ｃａｕｓｅ　Ｒｅｇ　０　−　５）６０３は、各レベルごとに、どのインタラプトがアサートされているかを示すとともに、ライト動作を行うことで、レベルごとにクリアを行う事が出来る。
【００３９】
各レベルの割込み信号は、各レベル毎に少なくともひとつの割り込みがあれば割込み信号を出力すべく、論理和回路６０４により論理和として出力される。なお、各レベル内での複数要因間のレベル付けはソフトウェアにて行う。
【００４０】
［２．４．メモリコントローラ］
図７は、メモリコントローラ４０３のブロック図である。メモリコントローラ４０３は、メモリコントローラ専用のローカルバスであるＭＣバスにＭＣバスインターフェース７０１を介して接続され、最大１ギガバイトのシンクロナスＤＲＡＭ（ＳＤＲＡＭ）と、３２メガバイトのフラッシュＲＯＭあるいはＲＯＭをサポートする。ＳＤＲＡＭの特徴であるバースト転送時の高速性を活かすため、６４（１６×４）バースト転送を実現する。また、ＣＰＵやＩＯバスよりの連続したアドレスのシングル転送を考慮し、メモリコントローラ内にＳＲＡＭ（メモリフロントキャッシュ）７０２を内蔵し、ＳＤＲＡＭへ直接シングル転送を行うことを可能な限り回避して転送効率を向上させる。メモリコントローラ−ＳＤＲＡＭ間のデータバス幅は、信号ｒａｍＤａｔａ及びｒａｍＰａｒをあわせて７２ビット（このうち８ビットの信号ｒａｍＰａｒはパリティ）、フラッシュＲＯＭ間のデータバスｆｎｔｒｏｍＤａｔａ，ｐｒｇｒｏｍＤａｔａの幅は３２ビットとする。
【００４１】
［２．４．２．構成及び動作］
メモリコントローラの各部はこれから説明するような構成となっている。
＜ＭＣバスインターフェース（７０１）＞
ＭＣバスは、ＳＢＢ４０２−メモリコントローラ４０３間の専用のバスであり、またＳＢＢ内部の基本バスとして用いられている。
【００４２】
ＣＰＵ４０１とバスブリッジ４０２とを接続する専用バスＰＢｕｓのバースト転送が４バーストのみ規定しているのに対し、ＭＣバスにおいては１６バースト×４までの転送を追加している。このためにバースト長を示す信号としてｍＴＴｙｐｅ［６：０］を新たに定義した。
（ＭＣバス信号の定義）
ＭＣバスの各信号は下記の通り定義される。
・ｍＣｌｋ（出力）　…ＭＣバスクロック：
・ｍＡｄｄｒ［３１：０］（出力）…ＭＣバスアドレス：
３２ビットのアドレスバスであり、ｍＴｓ＿Ｌがアサートされた時点からｍＢＲｄｙ＿Ｌがアサートされるまで保持される。
・ｍＤａｔａＯｕｔ［６３：０］（出力）　…ＭＣバスデータ出力：
６４ビットの出力データバスであり、ｍＤａｔａＯｅ＿Ｌがアサートされている時のみ有効である。
・ｍＤａｔａＯｅ＿Ｌ（出力）…ＭＣバスデータ出力イネーブル：
ｍＤａｔａＯｕｔ［６３：０］が有効であることを示す。またその転送がＷｒｉｔｅであることを示す。
・ｍＤａｔａＩｎ［６３：０］（入力）…ＭＣバスデータ入力：
６４ビットの入力データバスであり、ｍＢＲｄｙ＿ＬがアサートされているｍＣｌｋの立ち上がりでサンプリングされる。
・ｍＴｓ＿Ｌ（出力）…ＭＣバストランザクション開始ストローブ：
転送が開始したことを示す。転送の最初の１クロックの間だけアサートされる。転送が１クロックで終了し、次の転送がすぐに始められるのならばｍＴｓ＿Ｌは引続きアサートされたままになる。
・ｍＴＴｙｐｅ［６：０］（出力）…ＭＣバストランザクションタイプ：
ＭＣバス上の転送のタイプを示す。シングル転送時はその転送の間、バースト転送時は最初の転送（ｂｅａｔ）の間保持される。上位３ビットがソース（マスタ）をあらわし、下位ビットがシングル／バースト長をあらわす。タイプには次のようなものがある。
ｍＴＴｙｐｅ［６：４］信号源
−−−−−−−−−−−−−−−−−
００１　ＣＰＵ
０１０　ＩＯバス
１００　Ｇバス
−−−−−−−−−−−−−−−−−
ｍＴＴｙｐｅ［３：０］シングル／バースト長
−−−−−−−−−−−−−−−−−
１ｘｘｘ　シングル（１−８ｂｙｔｅｓ）
０００１　２バースト
００１０　４バースト
００１１　６バースト
０１００　８バースト
０１０１　１６バースト
０１１０　２×１６バースト
０１１１　３×１６バースト
００００　４×１６バースト
・ｍＢＥ＿Ｌ［７：０］（出力）…ＭＣバストランザクションバイトイネーブル：
シングル転送時、６４ビットデータバス上の有効なバイトレーンを示す。バースト転送時はＷｒｉｔｅ時のみ有効であり、Ｒｅａｄ時は無視される。
・ｍＢＲｄｙ＿Ｌ（入力）　…ＭＣバスレディ：
現在の転送（ｂｅａｔ）が終了したことを示す。
・ｍＴＰＷ＿Ｌ（出力）…次トランザクションがＩｎ−ｐａｇｅ　ｗｒｉｔｅ（ページ内書き込み）：
次の転送が同じページ（同じＲｏｗアドレス）のＷｒｉｔｅであることを示し、最大４個までのＷｒｉｔｅを続けることができる。ページサイズはあらかじめコンフィギュレーションレジスタに設定しておく。
・ｍＢＰＷＡ＿Ｌ（入力）…バスのページ内書き込み許可：
ＭＣバススレーブ（メモリコントローラ）がページ内書き込みトランザクションを許可するかどうかを示し、ｍＢＲｄｙ＿Ｌと同じクロックでサンプリングされる。この時ｍＢＰＷＡ＿ＬがディアサートされていればｍＴＰＷ＿Ｌは無意味となる。
・ｍＢＲｔｙ＿Ｌ（入力）…バスリトライ：
ＭＣバススレーブ（メモリコントローラ）がアクセスを未実行のまま終了させる場合にアサートし、少なくとも１サイクル以上のアイドルの後に再試行しなければならないことを示す。（もしｍＢＲｄｙ＿ＬとｍＢＲｔｙ＿Ｌが同時にアサートされた場合は、ｍＢＲｔｙ＿Ｌが優先される。）
・ｍＢｅｒｒ＿Ｌ（入力）…バスエラー：
パリティエラーやその他のバスエラーが発生した場合にアサートされる。
【００４３】
なお、上述した入出力の別はＳＢＢからみての定義である。
（ＭＣバストランザクション）
ＭＣバス上のトランザクションとしては、以下のトランザクションをサポートする。
（１）ベーシックトランザクション（１，２，３，４，８バイト　Ｒｅａｄ／Ｗｒｉｔｅ）：
ｍＢＥ＿Ｌ［７：０］信号に従い、１，２，３，４，８バイトのシングルトランザクションをサポートする。
（２）バーストトランザクション：
（ＣＰＵからの）４−ダブルワードバーストまでのトランザクションをサポートする。
（３）Ｇバスからの１６−ダブルワードバースト×４までのトランザクションをサポートする。
（４）Ｉｎ−ｐａｇｅ　ｗｒｉｔｅ（ページ内書き込み）トランザクション：
ｍＴＰＷ＿Ｌで示される同一ページ内の書き込みに関して、連続的なＷｒｉｔｅアクセスをサポートする。
（５）バスリトライ：
メモリコントローラ内の制限によりメモリアクセスができない場合は、ｍＢＲｔｙ＿Ｌ信号をアサートし、バスリトライを通知する。
＜ＳＤＲＡＭコントローラ（７０５）＞
メモリコントローラ４０３は、次のような構成を有するＳＤＲＡＭを以下のように制御する。
【００４４】
（ＤＲＡＭ構成）
ＤＲＡＭの構成としては、ｘ４，ｘ８，ｘ１６ビットタイプの１６／６４メガビットＳＤＲＡＭを６４ビットデータバスで８バンク制御することができる。
【００４５】
【表２】
2004046851.tif 000004
【００４６】
（ＤＲＡＭアドレスビット構成）
ＤＲＡＭのアドレスビットの割付けについては、６４ビットＳＤＲＡＭの場合にはＭＡ［１３：０］を、１６ビットＳＤＲＡＭの場合にはＭＡ［１１：０］を使用する。
【００４７】
【表３】
2004046851.tif 000005
（ＳＤＲＡＭプログラマブル構成（モードレジスタ））
ＳＤＲＡＭは内部にモードレジスタを持ち、モードレジスタ設定コマンドを用いて下記の項目を設定する。
（１）バースト長：
バースト長は、１，２，４，８，フルページのいずれかが設定可能であるが、ＣＰＵからのバースト転送長が４であることから、バースト長４が最適である。Ｇバスからの１６バースト以上の転送は、Ｒｅａｄ／Ｗｒｉｔｅコマンド（オートプリチャージ無し）を連続して発行することにより実現する。
（２）ラップタイプ（Ｗｒａｐ　Ｔｙｐｅ）：
バースト転送時のアドレスのインクリメント順を設定する。「シーケンシャル」または「インターリーブ」のどちらかが設定可能である。
（３）ＣＡＳレーテンシ：
ＣＡＳレーテンシは、１，２，３のいずれかが設定可能であり、使用するＳＤＲＡＭのグレードと動作クロックにより決定される。
【００４８】
（ＳＤＲＡＭコマンド）
ＳＤＲＡＭに対して以下のコマンドをサポートする。各コマンドの詳細は、ＳＤＲＡＭデータブックに記載されている。
・モードレジスタ設定コマンド
・アクティブコマンド
・プリチャージコマンド
・ライトコマンド
・リードコマンド
・ＣＢＲ（Ａｕｔｏ）リフレッシュコマンド
・セルフリフレッシュ開始コマンド
・バーストストップコマンド
・ＮＯＰコマンド
（ＳＤＲＡＭリフレッシュ）
ＳＤＲＡＭは、２０４８サイクル／３２ｍｓ（４０９６／６４ｍｓ）であるので、１６，６２５ｎｓおきにＣＢＲリフレッシュコマンドを発行する。メモリコントローラは設定可能なリフレッシュカウンタを持ち、自動的にＣＢＲリフレッシュコマンドを発行する。Ｇバスからの１６−バースト×ｎの転送中は、リフレッシュ要求を受け付けない。したがって、リフレッシュカウンタは１６−バースト×４転送の時間だけ余裕を持った値を設定しなければならない。また、セルフリフレッシュをサポートする。このコマンドを発行すると、パワーダウンモード（ｒａｍｃｌｋｅ＿Ｌ＝Ｌｏｗ）時にセルフリフレッシュが続行される。
【００４９】
（ＳＤＲＡＭ初期化）
メモリコントローラはパワーオンリセット後、ＳＤＲＡＭに対して以下の初期化を行なう。すなわち、電源投入後１００μｓのポーズ期間をおいて、
（１）プリチャージウコマンドを用いて全バンクをプリチャージする、
（２）ＳＤＲＡＭのモードレジスタを設定する、
（３）オートリフレッシュコマンドを用いて、リフレッシュを８回行う。
【００５０】
＜フラッシュＲＯＭコントローラ（７０４）＞
フラッシュＲＯＭコントローラ７０４は、ｒｏｍＡｄｄｒ［２３：２］のアドレス信号と４個のチップセレクト（ｒｏｍＣｓ＿Ｌ［３：０］）信号をサポートする。アドレス信号ｒｏｍＡｄｄｒ２〜ｒｏｍＡｄｄｒ９はパリティ信号ｒａｍＰａｒ０〜ｒａｍＰａｒ７とマルチプレクスされ、アドレス信号ｒｏｍＡｄｄｒ１０〜ｒｏｍＡｄｄｒ２３は、ＤＲＡＭアドレスｒａｍＡｄｄｒ０〜ｒａｍＡｄｄｒ１３とマルチプレクスされている。
【００５１】
＜ＳＲＡＭコントロール（メモリフロントキャッシュ）＞
メインメモリとして用いられるＳＤＲＡＭは、バースト転送は非常に高速であるが、シングル転送においてはその高速性が発揮できない。そこで、メモリコントローラ内にメモリフロントのキャッシュを実装し、シングル転送の高速化をはかる。メモリフロントキャッシュは、キャッシュコントローラ７０６とＳＲＡＭ７０２より構成される。ＭＣバスに定義されたｍＴＴｙｐｅ［６：０］信号により、その転送マスターと転送長を知ることができるので、各マスターごと、あるいは転送長ごとにキャッシュのオン／オフが設定可能である。キャッシュの方式は、次の通りである。なお、以下、特に断らない限り、単なるキャッシュあるいはキャッシュメモリという呼称は、プロセッサコアに内蔵されたキャッシュではなく、メモリコントローラが内蔵するメモリフロントキャッシュを指すものとする。
・２ウェイセットアソシアティブ
・８ｋバイトデータＲＡＭ
・１２８　ｘ　２１　ｘ　２　タグＲＡＭ
・ＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｌｙ　Ｕｓｅｄ）アルゴリズム
・ライトスルー
・Ｎｏ　Ｗｒｉｔｅ　Ａｌｌｏｃａｔｅ
次にキャッシュコントローラ７０６を中心とする詳細なブロック図を図８に示す。
【００５２】
（キャッシュの動作）
ここで、ＭＣバスよりメモリリード／ライト転送が要求された場合のキャッシュの動作を図８のブロック図と、図９及び図１０に示すフローチャートを用いて説明する。
【００５３】
ＭＣバスよりデータ転送が開始されると、その転送の最初にＭＣバス上で示されるｍＴＴｙｐｅ［６：０］によって、その転送がキャッシュオンでおこなうか、オフでおこなうかの判断がおこなわれる。この説明では、転送がシングル転送であればオン、バースト転送であればオフと判断することにする（ステップＳ９０１）。すなわち、ｍＴＴｙｐｅ（３）が”１”ｈであれば、シングル転送をあらわすのでキャッシュオンで、”０”ｈであればバースト転送をあらわすのでキャッシュオフで転送を行う。
【００５４】
シングル転送（キャッシュオン）の場合、アドレスｌｍａｄｄｒ［３１：０］が与えられると、ｌｍａｄｄｒ［１１：５］がインデックスとしてｂ１＿ｔａｇ＿ｒａｍ８０１，ｂ２＿ｔａｇ＿ｒａｍ８０２，ｂ１＿ｄａｔａ＿ｒａｍ７０２−ａ，ｂ２＿ｄａｔａ＿ｒａｍ７０２−ｂ，ｌｒｕ８０３ヘ与えられ、それぞれのブロックから、入力されたインデックスに対応するバリッドビット”ｖ”及びｂ１＿ｔａｇ＿ａｄｄｒ，バリッドビット”ｖ”及びｂ２＿ｔａｇ＿ａｄｄｒ，ｂ１＿ｏｕｔ＿ｄａｔａ，ｂ２＿ｏｕｔ＿ｄａｔａ，ｌｒｕ＿ｉｎがそれぞれ出力される（ステップＳ９０２）。
【００５５】
ｂ１＿ｔａｇ＿ｒａｍ８０１とｂ２＿ｔａｇ＿ｒａｍ８０２より出力されたｂ１＿ｔａｇ＿ａｄｄｒとｂ２＿ｔａｇ＿ａｄｄｒがそれぞれｂ１＿ｃｏｍｐａｒａｔｅｒ８０４，ｂ２＿ｃｏｍｐａｒａｔｅｒ８０５でアドレスｌｍａｄｄｒ［３１：１２］と比較され、その結果、すなわちヒットか否かがｂ１＿ｈｉｔ＿ｍｉｓｓ＿Ｌ，ｂ２＿ｈｉｔ＿ｍｉｓｓ＿Ｌ信号によりキャッシュコントローラ７０６へ知らされ、判定される（ステップＳ９０３）。
【００５６】
ここでヒットであれば、リードかライトかが判定される（ステップＳ９０４）。ヒットであるとは、ｂ１＿ｔａｇ＿ａｄｄｒとｂ２＿ｔａｇ＿ａｄｄｒのいずれかにアドレスｌｍａｄｄｒ［３１：１２］と一致するものがある場合である。ヒットかつリードの場合にはつぎのようになる。すなわち、ｂ１がヒットであり、要求された転送がリードであった場合は、すでに読み出されているｂ１＿ｏｕｔ＿ｄａｔａとｂ２＿ｏｕｔ＿ｄａｔａのうちｂ１＿ｏｕｔ＿ｄａｔａを選択し、ｌｍａｄｄｒ［４：３］で示される８バイトのデータをＭＣバスへ出力する（ステップＳ９０５）。同時にそのインデックスに対応するｌｒｕを”０”（＝ｂ１ヒット）に書き換えて、転送が終了する。ｂ２がヒットであり、要求された転送がリードであった場合は、すでに読み出されているｂ１＿ｏｕｔ＿ｄａｔａとｂ２＿ｏｕｔ＿ｄａｔａのうちｂ２＿ｏｕｔ＿ｄａｔａを選択し、ｌｍａｄｄｒ［４：３］で示される８バイトのデータをＭＣバスへ出力する（ステップＳ９０５）。同時にそのインデックスに対応するｌｒｕを”１”ｈ（＝ｂ２ヒット）に書き換えて、転送が終了する。
【００５７】
一方、ヒットかつライトの場合にはつぎのようになる。すなわち、ｂ１がヒットであり、要求された転送がライトであった場合は、インデックスで示されるｂ１＿ｄａｔａ＿ｒａｍ７０２−ａのｌｍａｄｄｒ［４：３］で示される８バイトのデータのうちｍＢＥ＿Ｌ［７：０］で示される有効なバイトレーンのみを書き換え、同時にそのインデックスに対応するｌｒｕを”０”ｈ（＝ｂ１ヒット）に書き換える。またＳＤＲＡＭも同様に書き換えて転送が終了する（ステップＳ９０６）。ｂ２がヒットであり、要求された転送がライトであった場合は、インデックスで示されるｂ２＿ｄａｔａ＿ｒａｍ７０２−ｂのｌｍａｄｄｒ［４：３］で示される８バイトのデータのうちｍＢＥ＿Ｌ［７：０］で示される有効なバイトレーンのみを書き換え、同時にそのインデックスに対応するｌｒｕを”１”ｈ（＝ｂ２ヒット）に書き換える。またＳＤＲＡＭも同様に書き換えて転送が終了する（ステップＳ９０６）。
【００５８】
一方、ｂ１，ｂ２ともにミスである場合にも、リードかライトか判定される（ステップＳ１００１）。要求された転送がリードであった場合は、そのｌｍａｄｄｒ［３１：３］で示される８バイトのデータがＳＤＲＡＭより読み出され（ステップＳ１００３）、ＭＣバスヘ出力される（ステップＳ１００４）。同時にそのインデックスに対応するｌｒｕが読み出され、”０”ｈであった場合はｂ２＿ｄａｔａ＿ｒａｍへＳＤＲＡＭからのデータを書きｌｒｕも”１”ｈへ書き換える。ｌｒｕが”１”ｈであった場合はｂ１＿ｄａｔａ＿ｒａｍヘＳＤＲＡＭからのデータを書き、ｌｒｕも”０”ｈヘ書き換え終了する（ステップＳ１００５）。ｂ１，ｂ２ともにミスであり、要求された転送がライトであった場合は、ＳＤＲＡＭに書き込むだけで転送が終了する（ステップＳ１００２）。
【００５９】
ステップＳ９０１においてバースト転送（キャッシュオフ）の場合、リード、ライトともＳＤＲＡＭに対してだけ行われ（ステップＳ９０７−Ｓ９０９）、キャッシュデータやタグの書き換え等は行わない。
【００６０】
＜ＲＯＭ／ＲＡＭインターフェース（７０７）＞
ＲＯＭ／ＲＡＭコントローラ７０７の構成を図１１に示す。ブロック１１０１〜ブロック１１０４により、ＳＤＲＡＭのデータ信号、アドレス信号、パリティ信号が、フラッシュＲＯＭのデータ信号、アドレス信号と多重化される。
【００６１】
［２．４．３．タイミングダイアグラム］
上述したメモリコントローラ４０３によるデータの読み出し・書き込み等の処理のタイミングを、図１２〜図１９を用いて説明する。
【００６２】
図１２は、ＣＰＵからのバースト読み出しのタイミングを示す。バースト長は４、ＣＡＳレイテンシは３である。図９のステップＳ９０９における処理に相当する。
【００６３】
図１３は、ＣＰＵからのバースト書き込みのタイミングを示す。バースト長は４、ＣＡＳレイテンシは３である。図９のステップＳ９０８における処理に相当する。
【００６４】
図１４は、Ｇバスデバイスからのバースト読み出しのタイミングを示す。Ｇバスのバースト長は１６、ＳＤＲＡＭのバースト長は４、ＣＡＳレイテンシは３である。図９のステップＳ９０９における処理に相当する。
【００６５】
図１５は、Ｇバスデバイスからのバースト書き込みのタイミングを示す。Ｇバスのバースト長は１６、ＳＤＲＡＭのバースト長は４、ＣＡＳレイテンシは３である。図９のステップＳ９０８における処理に相当する。
【００６６】
図１６は、メモリフロントキャッシュにヒットした場合のシングル読み出しのタイミングを示す。読み出されるデータｍＤａｔａＩｎ［６３：０］としては、キャッシュ・メモリであるｂ１＿ｄａｔａ＿ｒａｍ７０２−ａあるいはｂ２＿ｄａｔａ＿ｒａｍ７０２−ｂから読み出されたｂ１／ｂ２＿ｏｕｔ＿ｄａｔａが出力される。ＳＤＲＡＭのバースト長は４、ＣＡＳレイテンシは３である。図９のステップＳ９０５における処理に相当する。
【００６７】
図１７は、メモリフロントキャッシュにヒットしなかった場合のシングル読み出しのタイミングを示す。読み出されるデータｍＤａｔａＩｎ［６３：０］としては、ＳＤＲＡＭから読み出されたデータｒａｍＤａｔａ［６３：０］が出力される。また、このデータはｂ１／ｂ２＿ｉｎ＿ｄａｔａとしてキャッシュメモリであるｂ１＿ｄａｔａ＿ｒａｍ７０２−ａあるいはｂ２＿ｄａｔａ＿ｒａｍ７０２−ｂにも書き込まれる。ＳＤＲＡＭのバースト長は４、ＣＡＳレイテンシは３である。図１０のステップＳ１００４及びＳ１００５における処理に相当する。
【００６８】
図１８は、メモリフロントキャッシュにヒットした場合のシングル書き込みのタイミングを示す。書き込まれるデータｍＤａｔａＯｕｔ［６３：０］は、キャッシュメモリであるｂ１＿ｄａｔａ＿ｒａｍ７０２−ａあるいはｂ２＿ｄａｔａ＿ｒａｍ７０２−ｂに書き込まれるとともに、ＳＤＲＡＭにも書き込まれる。ＳＤＲＡＭのバースト長は４、ＣＡＳレイテンシは３である。図９のステップＳ９０６における処理に相当する。
【００６９】
図１９は、メモリフロントキャッシュにヒットしなかった場合のシングル書き込みのタイミングを示す。書き込まれるデータｍＤａｔａＯｕｔ［６３：０］は、キャッシュメモリであるｂ１＿ｄａｔａ＿ｒａｍ７０２−ａあるいはｂ２＿ｄａｔａ＿ｒａｍ７０２−ｂには書き込まれず、ＳＤＲＡＭに対してだけ書き込まれる。ＳＤＲＡＭのバースト長は４、ＣＡＳレイテンシは３である。図１０のステップＳ１００２における処理に相当する。
【００７０】
なお、ここでは、ＭＣバスよりデータ転送が開始されると、その転送の最初にＭＣバス上で示されるｍＴＴｙｐｅ［６：０］によって、転送がシングル転送であればオン、バースト転送であればオフと判断しているが、バースト転送の場合に、さらにバースト長を判定し、バースト長がキャッシュの１ラインよりも小さい場合にはキャッシュオンとし、そうでない場合にはキャッシュオフとして動作するようにしてもよい。
【００７１】
また、ＭＣバスに、メモリへのデータ転送を要求したバスマスタの識別子を示す信号を含ませることで、メモリコントローラがその識別子を判定し、識別子に応じてキャッシュオン／キャッシュオフの制御を行うこともできる。この場合には、識別子とキャッシュオン／オフの別とを対応させた書換え可能なテーブルを用意し、それを参照してキャッシュのオンオフを切り替えることもできる。このテーブルは、例えば特定のアドレスを割り当ててＣＰＵ４０１などから書換え可能にすることもできる。
【００７２】
［２．５．システムバスブリッジ（ＳＢＢ）及びＩＯバス，Ｇバス］
図２０としてシステムバスブリッジ（ＳＢＢ）４０２のブロック図を示す。
【００７３】
ＳＢＢ４０２は、ＩＯバス（入出力バス），Ｇバス（グラフィックバス），Ｐバス（プロセッサローカルバス）及びＭＣバス間の相互接続をクロスバスイッチを用いて提供する、マルチチャネル双方向バスブリッジである。クロスバスイッチにより、２系統の接続を同時に確立することが出来、並列性の高い高速データ転送を実現出来る。
【００７４】
ＳＢＢ４０２は、ＩＯバス４０５と接続するためのＩＯバスインターフェース２９０６と、Ｇバス４０４と接続するためのＧバスインターフェース２００６と、プロセッサコア４０１と接続するためのＣＰＵインターフェーススレーブポート２００２と、メモリコントローラ４０３と接続するためのメモリインターフェースマスターポートを備えるほか、アドレスバスを接続するアドレススイッチ２００３，データバスを接続するデータスイッチ２００４を含む。また、プロセッサコアのキャッシュメモリを無効化するキャッシュ無効化ユニット２００５を備えている。
【００７５】
ＩＯバスインターフェース２００９には、ＩＯバスデバイスからのＤＭＡライトを高速化するライトバッファと、ＩＯバスデバイスのリードを効率化するリードプリフェッチキューを実装する。これらのキュー内に一時的に存在するデータに関するコヒーレンシ管理はハードウェアにて行う。なお、ＩＯバスに接続されたデバイスをデバイスと呼ぶ。
【００７６】
プロセッサコアは３２ビットバスに対するダイナミックバスサイジングをサポートしているが、ＳＢＢ４０２ではこれをサポートしない、将来、バスサイジングをサポートしないプロセッサを用いる場合にもＳＢＢに必要な改造を最小限におさえるためである。
【００７７】
［２．５．１．ＳＢＢ及び各バスの構成及び動作］
＜ＩＯバスインターフェース＞
図２１は、ＩＯバスインターフェースのブロック図である。
【００７８】
ＩＯバスインターフェース２００９は、ＩＯバスとＭＣバス間の双方向ブリッジ回路である。ＩＯバスはＤｏＥｎｇｉｎｅの内部汎用バスである。
【００７９】
ＩＯバスインターフェース２００９内には、マスタコントロールブロック２０１１、スレーブコントロールブロック２０１０、データインターフェース２０１２、ＤＭＡＣ２０１３、ＩＯバスバッファの５ブロックが含まれる。図２１上で、ＤＭＡＣ２０１３は、機能上３個のシーケンサとレジスタブロックに分割される。それら３つのシーケンサのうち、ＤＭＡメモリアクセスシーケンサはＩＯバススレーブコントロールブロック２０１０に、ＤＭＡｒｅｇシーケンサはＩＯバスマスターコントロールブロック２０１１に内蔵される。レジスタブロックであるＤＭＡレジスタはＩＯバスデータインターフェース２０１２部に内蔵される。
【００８０】
またＩＯバスインターフェース２００９はＩＯバス側からのメモリへの書き込み時、及びＤＭＡによるデバイスからメモリへの転送が起こった時に、キャッシュ無効化インターフェースを介してＣＰＵシェル内のデータ、命令両キャッシュの無効化の制御を行う。
【００８１】
なお、ＣＰＵライト時のライトバックバッファはＩＯバスインターフェースには実装しないが、ＩＯバス上の外部マスタライト時のライトバッファを実装する。これにより、バースト転送でない、連続した外部マスタからの書き込みが高速化される。このライトバッファのフラッシュは、ＩＯバスアービタ４０７によるャｃ鰍ヨの接続が許された時点で行われる。ＩＯバスマスタリードのライトバッファバイパスは行わない。
【００８２】
また、外部マスタのリードプリフェッチキューを実行する。これにより、外部マスタからの連続した、データストリームの読み出しの高速化を図る。リードバッファの無効化は、
（１）ＩＯバスの新たなリードがバッファにヒットしなかった場合、
（２）ＣＰＵからメモリへのライトが行われた場合、
（３）Ｇバスからメモリへのライトが行われた場合、
（４）ＩＯバスからメモリへのライトが行われた場合
に行われる。
【００８３】
またＩＯバスインターフェース２００９にはＩＯバス４０５上の各デバイスとメモリ間のＤＭＡコントローラ２０１３が内蔵される。システムバスブリッジ４０２にＤＭＡコントローラを内蔵することにより、ブリッジ双方へ、同時にアクセス要求が発行出来、効率的なＤＭＡ転送が実現出来る。
【００８４】
ＩＯバスインターフェース２００９はプロセッサ４０１からのアクセス要求に対して、ダイナミックバスサイジングの使用を要求しない。またＩＯバスマスタからのメモリアクセス要求時に、メモリコントローラ４０３からのバスサイジングにも対応しない。すなわち、メモリコントローラはバスサイジングを期待すべきではない。
【００８５】
＜ＩＯバス＞
ＩＯバスはＤｏＥｎｇｉｎｅ内の汎用ＩＯバスであり、以下の仕様を持つ。
・アドレス、データ分離型３２ビットバス。
・任意のウェイトサイクルを挿入可能、最短はノーウェイト。
・バーストトランザクションのサポート。
・最大転送速度は、クロックが５０ＭＨｚ時に２００Ｍｂｙｔｅ／Ｓｅｃ。
・バスエラーとバスリトライのサポート。
・複数バスマスタのサポート。
【００８６】
（ＩＯバス信号定義）
以下にバス信号の定義を説明する。各信号毎に、「信号名（英語呼称）：入力元→出力先（，３Ｓｔａｔｅｓ）…信号の説明」の要領で記載されている。なお、３ステートの項は３ステートの信号に限り記載した。
・ｂＡｄｄｒ［３１：２］（ＩＯＢｕｓ　Ａｄｄｒｅｓｓ　Ｂｕｓ）：Ｍａｓｔｅｒ→Ｓｌａｂｅ，３Ｓｔａｔｅ…　ＩＯＢｕｓアドレスバス。
・ｂＤａｔａ［３１：０］　（ＩＯＢｕｓ　Ｄａｔａ　Ｂｕｓ）：ＤａｔａＤｒｉｖｅｒ→ＤａｔａＲｅｃｅｉｖｅｒ，３Ｓｔａｔｅ…ＩＯＢｕｓデータバス。
・ｂ（Ｄａｔａｄｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅＲｅｑ（ＩＯＢｕｓ　Ｄａｔａ　Ｏｕｔｐｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｄａｔａｄｒｉｖｅｒ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…後述する双方向ＩＯバスを実現するため、デフォルトドライバーコントロールロジックヘの出力信号である。Ｄａｔａｄｒｉｖｅｒｎａｍｅを持つデバイスが、バス上にデータをドライブするための要求信号である。データの出力を許可されたデバイスには、デフォルトドライバーコントロールロジックよりｂ（Ｄａｔａｄｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅ＿Ｌが出力される。Ｄａｔａｄｒｉｖｅｒの例：Ｐｃｉ，Ｓｂｂ，Ｊｐｅｇ，Ｓｐｕ。
・ｂ（Ｄａｔａｄｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅ＿Ｌ（ＩＯＢｕｓ　Ｄａｔａ　Ｏｕｔｐｕｔ　Ｅｎａｂｌｅ）：ｄｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｄａｔａｄｒｉｖｅｒ…ｂ（Ｄａｔａｄｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅＲｅｑを出力したデバイスに対し、デフォルトドライバーロジックがデータバスへのデータのドライブを許す場合ｂ（Ｄａｔａｄｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅ＿Ｌ信号をそのデバイスに対して返す。
・ｂＥｒｒｏｒ＿Ｌ（ＩＯＢｕｓ　Ｂｕｓ　Ｅｒｒｏｒ）：Ｓｌａｖｅ→Ｍａｓｔｅｒ　３Ｓｔａｔｅ…ＩＯバストランザクションがエラーで終了したことを示す。
・ｂ（Ｍａｓｔｅｒｎａｍｅ）ＢＧｎｔ＿Ｌ（ＩＯＢｕｓ　Ｇｒａｎｔ）：Ａｒｂｉｔｅｒ→Ｍａｓｔｅｒ…バスアービトレーションにより当マスタがバスの使用権を得たことを示す。Ｍａｓｔｅｒｎａｍｅの例：Ｐｃｉ，Ｓｂｂ，Ｊｐｅｇ，Ｓｐｕ。
・ｂｌｎｓｔＮｏｔＤａｔａ（ＩＯＢｕｓ　Ｉｎｓｔｒｕｃｔｉｏｎ／Ｄａｔａ　Ｏｕｔｐｕｔ　Ｉｎｄｉｃａｔｏｒ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ，３Ｓｔａｔｅ…ＩＯバスマスタがインストラクションフェッチをＩＯバススレーブに対して行う場合にＨｉｇｈにドライブする。データトランザクションの場合はＬｏｗにドライブする。
・ｂ（Ｍａｓｔｅｒｎａｍｅ）ＣｎｔｌＯｅＲｅｑ（ＩＯＢｕｓ　Ｍａｓｔｅｒ　Ｃｏｎｔｒｏｌ　Ｏｕｔｐｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｍａｓｔｅｒ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…ＩＯバスマスタが、ｂＳｔａｒｔ＿Ｌ，ｂＴｘ＿Ｌ，ｂＷｒ＿Ｌ，ｖＩｎｓｔＮｏｔＤａｔａとｂＡｄｄｒ［３１：２］を３ステートバス上にドライブしたい場合に、ＩＯＢｕｓ　Ｏｕｔｐｕｔ　Ｃｏｎｔｒｏｌ　Ｌｏｇｉｃに対してアサートする。ＩＯＢｕｓ　Ｏｕｔｐｕｔ　Ｃｏｎｔｒｏｌ　Ｌｏｇｉｃ　は各マスタからの、ｂＭＣｎｔｌＯｅＲｅｑに基づきドライブを許すマスタに対し、ｂ（Ｍａｓｔｅｒｎａｍｅ）ＣｎｔｌＯｅ＿Ｌ信号を返す。
・ｂ（Ｍａｓｔｅｒｎａｍｅ）ＣｎｔｌＯｅ＿Ｌ（ＩＯＢｕｓ　Ｍａｓｔｅｒ　Ｃｏｎｔｒｏｌ　Ｏｕｔｐｕｔ　Ｅｎａｂｌｅ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｍａｓｔｅｒ…ｂ（Ｍａｓｔｅｒｎａｍｅ）ＣｎｔｌＯｅＲｅｑを出力したマスタに対し、デフォルトドライバーロジックがドライブを許す場合ｂ（Ｍａｓｔｅｒｎａｍｅ）ＣｎｔｌＯｅ＿Ｌ信号をそのマスタに対して返す。
・ｂＲｄｙ＿Ｌ（ＩＯＢｕｓ　Ｒｅａｄｙ）：Ｓｌａｖｅ→Ｍａｓｔｅｒ，３Ｓｔａｔｅ…ＩＯバススレーブは、現在のＩＯバスデータトランザクションが現在のクロックサイクルを最後に終了することを示すためにこの信号をアサートする。ＩＯバスマスタは、この信号により、現在のトランザクションがこのクロックサイクルで終了することを知る。
・ｂ（Ｍａｓｔｅｒｎａｍｅ）ＢＲｅｑ＿Ｌ（ＩＯＢｕｓ　Ｂｕｓ　Ｒｅｑｕｅｓｔ）：Ｍａｓｔｅｒ→Ａｒｂｉｔｅｒ…ＩＯバスマスタが、ＩＯバスアービタに対し、バスの使用権要求を行う事を示す。
・ｂＲｅｔｒｙ＿Ｌ（ＩＯＢｕｓ　Ｂｕｓ　Ｒｅｔｒｙ）：Ｓｌａｖｅ→Ｍａｓｔｅｒ　３Ｓｔａｔｅ…ＩＯバススレーブがマスタに対し、バストランザクションの最実行を要求する。
・ｂ（Ｓｌａｖｅｎａｍｅ）ＲｄｙＯｅＲｅｑ（ＩＯＢｕｓ　Ｓｌａｖｅ　Ｒｅａｄｙ　Ｏｕｔｐｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｓｌａｖｅ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…ＩＯバススレーブが、ｂＲｄｙ＿Ｌ，ｂＷＢｕｒｓｔＲｅｑ＿Ｌ，ｂＢｕｒｓｔＡｃｋ＿Ｌを３ステートバス上にドライブしたい場合に、ＩＯＢｕｓ　Ｏｕｔｐｕｔ　Ｃｏｎｔｒｏｌ　Ｌｏｇｉｃに対してアサートする。ＩＯＢｕｓ　ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃは各マスタからの、ｂ（Ｓｌａｖｅｎａｍｅ）ＲｄｙＯｅＲｅｑに基づきドライブを許すスレーブに対し、ｂ（Ｓｌａｖｅｎａｍｅ）ＲｄｙＯｅ＿Ｌ信号を返す。
・ｂ（Ｓｌａｖｅｎａｍｅ）ＲｄｙＯｅ＿Ｌ（ＩＯＢｕｓ　Ｓｌａｖｅ　Ｒｅａｄｙ　Ｏｕｔｐｕｔ　Ｅｎａｂｌｅ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｓｌａｖｅ…ｂ（Ｓｌａｖｅｎａｍｅ）ＲｄｙＯｅＲｅｑを出力したマスタに対し、デフォルトドライバーロジックがドライブを許す場合ｂ（Ｓｌａｖｅｎａｍｅ）ＲｄｙＯｅ＿Ｌ信号をそのマスタに対して返す。
・ｂＳｎｏｏｐＷａｉｔ（ＩＯＢｕｓ　Ｓｎｏｏｐ　Ｗａｉｔ）：ＳＢＢ→ＮｅｘｔＭａｓｔｅｒ…ＩＯバスインターフェースがＩＯバスに接続された他のデバイスに対し、キャッシュのスヌーピング実行中であることを示す。ＩＯバスに接続されたデバイスはこの信号がアサートされている間は新たなトランザクションを発行できない。
・ｂＳｔａｒｔ＿Ｌ（ＩＯＢｕｓ　Ｔｒａｎｓａｃｔｉｏｎ　ＳＴＡＲＴ）：Ｍａｓｔｅｒ　→Ｓｌａｖｅ　３Ｓｔａｔｅ…ＩＯバスマスタがＩＯバストランザクションをスタートすることを示す信号、ＩＯバススレーブは、この信号を監視することにより、ＩＯバストランザクションのスタートを知ることが出来る。
・ｂＴｘ＿Ｌ（ＩＯＢｕｓ　Ｔｒａｎｓａｃｔｉｏｎ　Ｉｎｄｉｃａｔｏｒ　Ｉｎｐｕｔ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ　３Ｓｔａｔｅ…ＩＯバスマスタがＩＯバススレーブに対し、ＩＯバストランザクションが現在実行中である事を示すためにアサートする。
・ｂＷＢｕｒｓｔＧｎｔ＿Ｌ（ＩＯＢｕｓ　Ｂｕｒｓｔ　Ｗｒｉｔｅ　Ｇｒａｎｔ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ，３Ｓｔａｔｅ…ＩＯバスマスタが、ＩＯバスバーストライトのリクエストに対し、バーストライト実行することを示すためにドライブする。
・ｂＷＢｕｒｓｔＲｅｑ＿Ｌ（ＩＯＢｕｓ　Ｂｕｒｓｔ　Ｗｒｉｔｅ　Ｒｅｑｕｅｓｔ）：Ｓｌａｖｅ　→Ｍａｓｔｅｒ，３Ｓｔｅｔｅ…ＩＯバススレーブがＩＯバスマスタに対し、バースとライトを要求する場合にアサートする。
・ｂＷｒ＿Ｌ（ＩＯＢｕｓ　Ｗｒｉｔｅ　Ｔｒａｎｓａｃｔｉｏｎ　Ｉｎｄｉｃａｔｅｒ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ，３Ｓｔａｔｅ…ＩＯバスマスタが、ＩＯバススレーブに対し、現在のトランザクションがライトである事を示すためにアサートする。
・ｂＢｙｔｅＥｎ［３：０］（ＩＯＢｕｓ　Ｂｙｔｅ　Ｅｎａｂｌｅｓ）：ＤａｔａＤｒｉｖｅｒ→ＤａｔａＲｅｃｅｉｖｅｒ，３Ｓｔａｔｅ…ＩＯバス上にデータをドライブするエージェントが、各ビットに対応したｂＤａｔａ［３１：０］上のバイトレーンが有効である事を示すためにＨｉｇｈにドライブする。本信号の各ラインとｂＤａｔａのバイトレーンは表４の対応関係にある。
【００８７】
【表４】
2004046851.tif 000006
・ｂＢｕｒｓｔ＿Ｌ（ＩＯＢｕｓ　Ｅｘｔｅｎｄｅｄ　Ｂｕｒｓｔ　Ｒｅｑｕｅｓｔ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ，３Ｓａｔｅ…ＩＯバスマスタが拡張バーストを行いたい事を示す。アサート、ネゲートタイミングはｂＴｘ＿Ｌと同一。
・ｂＢｕｒｓｔＡｃｋ＿Ｌ（ＩＯＢｕｓ　Ｅｘｔｅｎｄｅｄ　Ｂｕｒｓｔ　Ａｃｋｎｏｗｌｅｄｇｅ）：Ｓｌａｖｅ→Ｍａｓｔｅ，３Ｓｔａｔｅ…ＩＯバススレーブが拡張バーストを行える事を示す。アサート、ネゲートタイミングはｂＲｄｙ＿Ｌと同一。
・ｂＢｕｒｓｔＳｈｏｒｔＮｏｔＬｏｎｇ＿Ｌ（ＩＯＢｕｓ　Ｂｕｒｓｔ　Ｌｅｎｇｔｈ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ，３Ｓｔａｔｅ…ＩＯバスマスタが拡張バーストを行う場合のバースト長を示す。アサート、ネゲートタイミングはｂＴｘ＿Ｌと同一であり、信号値とバースト長との対応は表５に示したとおりである。
【００８８】
【表５】
2004046851.tif 000007
【００８９】
ＩＯバス信号は上述の通りである。ＤｏＥｎｇｉｎｅ内部のバスである、ＩＯバス（及びＧバス）は接続される機能ブロック数が１０以上になるので、ＩｎＯｕｔ分離バスですべてのブロックを接続することは、困難である。ＤｏＥｎｇｉｎｅでは、チップ内双方向バスを採用する。
【００９０】
＜Ｇバスインターフェース＞
図２２にＧバスインターフェース２００６のブロック図を示す。この概要は下記の通りである。
【００９１】
（Ｇバス概要）
Ｇバスは、ＭＦＰ用１チップコントローラＤｏＥｎｇｉｎｅ内部において、各画像データ処理部間のデータ転送を高速に実行するために定義されたバスである。６４ビットのデータバスをもち、４Ｇｂｙｔｅ（１２８ｂｙｔｅ　ｂｏｕｎｄａｒｙ）のアドレス空間をサポートする。１６ビート（１２８ｂｙｔｅ＝６４ビット　ｘ　１６）　を１ロングバーストとした転送を基本とし、連続して４ロングバースト（５１２ｂｙｔｅ＝１６ビート　ｘ　４）　までを可能とする（シングルビートなど１６ビート以下の転送はサポートしない）。
【００９２】
（Ｇバス信号定義）
信号の定義に用いる記号をまず定めておく。信号名の直後には、必要に応じて信号の方向が記述されている。それは次のように定める。
・Ｉｎ（Ｉｎｐｕｔ　ｓｉｇｎａｌ）…バスエージェントに対する入力信号
・Ｏｕｔ（Ｏｕｔｐｕｔ　ｓｉｇｎａｌ）…バスエージェントからの出力信号
・ＩｎＯｕｔ（Ｂｉ−Ｄｉｒｅｃｔｉｏｎａｌ　Ｔｒｉ−Ｓｔａｔｅ　ｓｉｇｎａｌ）…双方向の信号で、複数のバスエージェントがドライブする。一度にひとつのエージェントだけがドライブする。信号をドライブする各エージェントのイネーブルリクエスト信号をデフォルトドライバで集中管理し、どのエージェントがドライブするかはデフォルトドライバが決定する。どのエージェントもイネーブルリクエストを出さない場合や、複数のエージェントが同時にイネーブルリクエストを出している場合はデフォルトドライバ信号をドライブする。エージェントは、信号をロウにドライブする場合は、前後１クロックの間ハイにドライブしなければならない。信号のアサートはドライブを初めてから１クロック以上経過してからしか行えない。基本的に信号のリリースはネゲートした次のクロックで行う。
【００９３】
なお、各信号名の後の”＿Ｌ”はその信号がローアクティブであることを示す。信号の記述のしかたは、ほぼＩＯバス信号の記述に準ずる。説明は、システム信号、アドレス及びデータ信号、インターフェース制御信号、アービトレーション信号に分けて行う。また、バスエージェントとは、バスに接続されるバスマスタやバススレーブの総称である。
【００９４】
（システム信号）
・ｇＣｌｋ（Ｇ−Ｂｕｓ　Ｃｌｏｃｋ）…　Ｇバス上のすべてのトランザクションについてタイミングを提供し、すべてのデバイスに対して入力となる。
・ｇＲｓｔ＿Ｌ（Ｇ−Ｂｕｓ　Ｒｅｓｅｔ）…　Ｇバス上のすべてのデバイスをリセットする。すべての内部レジスタはクリアーされ、すべての出力信号はネゲートされる。
【００９５】
（アドレスおよびデータ信号）
・ｇＡｄｄｒ［３１：７］，ＩｎＯｕｔ，（Ｇ−Ｂｕｓ　Ａｄｄｒｅｓｓ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ…Ｇバス上のデータ転送はすべて１２８ｂｙｔｅ（１６ビート）単位で行われるため、ｇＡｄｄｒ［３１］〜ｇＡｄｄｒ［７］の２５ビットで４Ｇｂｙｔｅのアドレス空間をサポートする。
−　ｄｒｉｖｅ：ｇＴｓ＿Ｌと同時にマスターがドライブａｓｓｅｒｔ：ドライブした次のクロック。−　ｎｅｇａｔｅ：ｇＡａｃｋ＿Ｌのアサートを確認したクロック。
・ｇ（Ｍａｓｔｅｎａｍｅ）ＡｄｄｒＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ａｄｄｒｅｓｓ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｍａｓｔｅｒ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…双方向Ｇバスを実現するための、デフォルトドライバロジックへの出力信号。バスマスタがアドレスバスをドライブするための要求信号。
・ｇ（Ｍａｓｔｅｒｎａｍｅ）ＡｄｄｒＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ａｄｄｒｅｓｓ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅｔ）：ＤｅｆａｕｌｔＤｒｉｖｅＬｏｇｉｃ→Ｍａｓｔｅｒ…ｇ（Ｍａｓｔｅｒｎａｍｅ）ＡｄｄｒＯｅＲｅｑを出力したバスマスタに対し、デフォルトドライバロジックがアドレスバスのドライブを許可することを示す信号。
・ｇＤａｔａ［６３：０］，ＩｎＯｕｔ，（　Ｇ−Ｂｕｓ　Ｄａｔａ）：ＤａｔａＤｒｉｖｅｒ→ＤａｔａＲｅｃｅｉｖｅｒ…６４ビットデータバスで、ライト時はマスタがドライブ、リード時はスレーブがドライブ。
［ライト］
−　ｄｒｉｖｅ：ｇＴｓ＿Ｌと同時にマスタがドライブ。ただし、ｇＳｌｖＢｓｙ＿Ｌがアサートされている時はネゲートされるまで待ってドライブ。
ａｓｓｅｒｔ：ドライブした次のクロック。
−　ｃｈａｎｇｅ：ｇＡａｃｋ＿Ｌのアサートを確認したクロック、その後は毎クロック。
−　ｎｅｇａｔｅ：転送終了時、またはｇＴｒＳｔｐ＿Ｌによる転送停止要求を確認した場合は、ｇＡａｃｋ＿Ｌのアサートを確認したクロック。
［リード］
−　ｄｒｉｖｅ：ｇＡａｃｋ＿Ｌと同時にスレーブがドライブ。
−　ａｓｓｅｒｔ：スレーブがＲｅａｄｙであればドライブした次のクロックで、ＲｅａｄｙでなければＲｅａｄｙになるまで待ってアサートされる。
−　ｃｈａｎｇｅ：ｇＡａｃｋ＿Ｌのアサートを確認したクロック、その後は毎クロック。リードの場合はアサートしたクロックから毎クロック。
−　ｎｅｇａｔｅ：転送終了時。
−　ｒｅｌｅａｓｅ：ネゲートの１クロック後、またはｇＴｒＳｔｐ＿Ｌによる転送停止要求を確認したクロック。
・ｇ（ＤａｔａＤｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ｄａｔａ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：ＤａｔａＤｒｉｖｅｒ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…データドライバがデータバスをドライブするための要求信号。
・ｇ（ＤａｔａＤｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ｄａｔａ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅｔ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→ＤａｔａＤｒｉｖｅｒ…ｇ（ＤａｔａＤｒｉｖｅｒｎａｍｅ）ＤａｔａＯｅＲｅｑを出力したデータドライバに対し、デフォルトドライバロジックがデータバスのドライブを許可することを示す信号。
【００９６】
（インターフェース制御信号）
・ｇＴｓ＿Ｌ（ＩｎＯｕｔ　Ｇ−Ｂｕｓ　Ｔｒａｎｓａｃｔｉｏｎ　Ｓａｒｔ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ…マスターにより１クロックの間Ｌｏｗにアサートされ、転送の開始（アドレスフェーズ）をあらわす。マスターはｇＴｓ＿Ｌと共に、ｇＡｄｄｒ，ｇＲｄＮｏｔＷｒ，ｇＢｓｔＣｎｔをドライブし、転送の種類、データ量を明確にする。マスタは、ライトの場合ここで明確にした転送データ量をウェイトなしで出せることを保証しなければならない。また、リードの場合は明確にした転送データ量をウェイトなしで受けることを保証しなければならない。スレーブは途中でデータ転送ができなくなった場合はｇＢｓＳｔｅｐ＿Ｌにより、次の１６ビートの転送をキャンセルすることがある。ただし、１６ビートの途中でキャンセルすることはない。
−　ｄｒｉｖｅ：ｇＧｎｔ＿Ｌのアサートを確認したクロックでドライブ。
−　ａｓｓｅｒｔ：ドライブした次のクロック。
−　ｎｅｇａｔｅ：１クロックアサート後にネゲートされる。
・ｇ（Ｍａｓｔｅｒｎａｍｅ）ＴｓＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ｔｒａｎｓａｃｔｉｏｎ　Ｓｔａｒｔ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｍａｓｔｅｒ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…バスマスタがｇＴｓ＿Ｌをドライブするための要求信号。
・ｇ（Ｍａｓｔｅｒｎａｍｅ）ＴｓＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ｔｒａｎｓａｃｔｉｏｎ　Ｓｔａｒｔ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅｔ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｍａｓｔｅｒ…ｇ（Ｍａｓｔｅｒｎａｍｅ）ＴｓＯｅＲｅｑを出力したバスマスタに対し、デフォルトドライバクロックがｇＴｓ＿Ｌのドライブを許可することを示す信号。
・ｇＡａｃｋ＿Ｌ，ＩｎＯｕｔ，（Ｇ−Ｂｕｓ　Ａｄｄｒｅｓｓ　Ａｃｋｎｏｗｌｅｄｇｅ）：Ｓｌａｖｅ→Ｍａｓｔｅｒ…スレーブにより１クロックの間Ｌｏｗにドライブされる。該当するスレーブが、転送を認識し、バスが空いていることを確認して、データ転送がスタートできることをマスターに知らせる。ライトの場合、スレーブはマスタから要求された転送データ量をウェイトなしで受けることを保証しなければならない。またリードの場合は、要求された転送データ量をウェイトなしで出せることを保証しなければならない。万が一、途中でデータ転送ができなくなった場合は、ｇＢｓｔＳｔｐ＿Ｌにより、次の１６ビートの転送をキャンセルすることができる。ただし、１６ビートの途中でキャンセルすることはできない。
−　ｄｒｉｖｅ：アドレスデコードビット時、ｇＴｓ＿Ｌのアサートを確認したクロックでドライブが開始される。ただし、ｇＳｌｖＢｓｙ＿Ｌがアサートされている時はネゲートされるまで待ってドライブされる。また、データバス使用中のため、まだドライブされていなかった場合は、ｇＴｒＳｔｐ＿Ｌによる転送停止要求を確認したクロックでドライブ開始される。
−　ａｓｓｅｒｔ：スレーブがＲｅａｄｙであればドライブした次のクロックで、ＲｅａｄｙでなければＲｅａｄｙになるまで待ってアサートされる。ｇＴｒＳｔｐ＿Ｌによる転送停止に対する応答のときには、ドライブした次のクロックでアサートされる。
−　ｎｅｇａｔｅ：ドライブ後にｇＴｒＳｔｐ＿Ｌがアサートされた場合は、ｇＴｒＳｔｐ＿Ｌを確認したクロックでアサートされる。また、１クロックアサート後にネゲートされる。
・ｇ（Ｓｌａｖｅｎａｍｅ）ＡａｃｋＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ａｄｄｒｅｓｓ　Ａｃｋｎｏｗｌｅｄｇｅ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｓｌａｖｅ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…スレーブがｇＡａｃｋ＿Ｌをドライブするための要求信号。
・ｇ（Ｓｌａｖｅｎａｍｅ）ＡａｃｋＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ａｄｄｒｅｓｓ　Ａｃｋｎｏｗｌｅｄｇｅ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅｔ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｓｌａｖｅ…ｇ（Ｓｌａｖｅｎａｍｅ）ＡａｃｋＯｅＲｅｑを出力したスレーブに対し、デフォルトドライバロジックがｇＡａｃｋ＿Ｌのドライブを許可することを示す信号。
・ｇＳｌｖＢｓｙ＿Ｌ，ＩｎＯｕｔ，（Ｇ−Ｂｕｓ　Ｓｌａｖｅ　Ｂｕｓｙ）：Ｓｌａｖｅ→Ｍａｓｔｅｒ…スレーブがドライブし、データバスでデータを転送中であることをあらわす。
−　ｄｒｉｖｅ：アドレスデコードヒット時、ｇＴｓ＿Ｌのアサートを確認したクロックでドライブ開始。ただし、ｇＳｌｖＢｓｙ＿Ｌがアサートされている時はネゲートされるまで待ってドライブ。
−　ａｓｓｅｒｔ：スレーブがＲｅａｄｙであればドライブした次のクロックで、ＲｅａｄｙでなければＲｅａｄｙになるまで待ってアサート。
−　ｎｅｇａｔｅ：転送終了時にネゲート。
−　ｒｅｌｅａｓｅ：ネゲートの１クロック後、またはｇＴｒＳｔｐ＿Ｌによる転送停止要求を確認したクロック。
・ｇ（Ｓｌａｖｅｎａｍｅ）ＳｌｖＢｓｙＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ｓｌａｖｅ　Ｂｕｓｙ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｓｌａｖｅ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…スレーブがｇＳｌｖＢｓｙ＿Ｌをドライブするための要求信号ｇ（Ｓｌａｖｅｎａｍｅ）ＳｌｖＢｓｙＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ｓｌａｖｅ　Ｂｕｓｙ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｓｌａｖｅ…ｇ（Ｓｌａｖｅｎａｍｅ）ＳｌｖＢｓｙＯｅＲｅｑを出力したスレーブに対し、デフォルトドライバロジックがｇＳｌｖＢｓｙ＿Ｌのドライブを許可することを示す信号。
・ｇＲｄＮｏｔＷｒ，ＩｎＯｕｔ，（Ｇ−Ｂｕｓ　Ｒｅａｄ（Ｈｉｇｈ）／Ｗｒｉｔｅ（Ｌｏｗ））：Ｍａｓｔｅｒ→Ｓｌａｖｅ…マスターによりドライブされ、ＨｉｇｈでＲＥＡＤ、ＬＯＷでＷＲＩＴＥをあらわす。ドライブする期間はＧＡと同じである。
−　ｄｒｉｖｅ：ｇＴｓ＿Ｌと同時にマスターがドライブ。
−　ａｓｓｅｒｔ：ドライブした次のクロック。
−　ｎｅｇａｔｅ：ｇＡａｃｋ＿Ｌのアサートを確認したクロック。
・ｇ（Ｍａｓｔｅｒｎａｍｅ）ＲｄＮｏｔＷｒＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ｒｅａｄ／Ｗｒｉｔｅ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓ）：Ｍａｓｔｅｒ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…バスマスタがｇＲｄＮｏｔＷｒをドライブするための要求信号。
・ｇ（Ｍａｓｔｅｒｎａｍｅ）ＲｄＮｏｔＷｒＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ｒｅａｄ／Ｗｒｉｔｅ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅｔ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｍａｓｔｅｒ…ｇ（Ｍａｓｔｅｒｎａｍｅ）ＲｄＮｏｔＷｒＯｅＲｅｑを出力したバスマスタに対し、デフォルトドライバロジックがｇＲｄＮｏｔＷｒのドライブを許可することを示す信号。
・ｇＢｓｔＣｎｔ［１：０］，ＩｎＯｕｔ，（Ｇ−Ｂｕｓ　Ｂｕｒｓｔ　Ｃｏｕｎｔｅｒ）：Ｍａｓｔｅｒ→Ｓｌａｖｅ…マスターによりドライブされ、連続して行うバースト転送の数（１〜４）をあらわす。信号の値とバースト転送するバイト数との対応は表６のようになる。
−　ｄｒｉｖｅ：ｇＴｓ＿Ｌと同時にマスターがドライブ。
−　ａｓｓｅｒｔ：ドライブした次のクロック。
−　ｎｅｇａｔｅ：ｇＡａｃｋ＿Ｌのアサートを確認したクロック。
【００９７】
【表６】
2004046851.tif 000008
・ｇ（Ｍａｓｔｅｒｎａｍｅ）ＢｓｔＣｎｔＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ｂｕｒｓｔ　Ｃｏｕｎｔｅｒ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｍａｓｔｅｒ→ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…バスマスタがｇＢｓｔＣｎｔをドライブするための要求信号。
・ｇ（Ｍａｓｔｅｒｎａｍｅ）ＢｓｔＣｎｔＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ｂｕｒｓｔ　Ｃｏｕｎｔｅｒ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅｔ）：ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ→Ｍａｓｔｅｒ…ｇ（Ｍａｓｔｅｒｎａｍｅ）ＢｓｔＣｎｔＯｅＲｅｑを出力したバスマスタに対し、デフォルトドライバロジックがｇＢｓｔＣｎｔのドライブを許可することを示す信号。
・ｇＢｓｔＳｔｐ＿Ｌ，ＩｎＯｕｔ，（Ｇ−Ｂｕｓ　Ｂｕｒｓｔ　Ｓｔｏｐ）：Ｓｌａｖｅ→Ｍａｓｔｅｒ…スレーブによりドライブされ、連続する次のバースト転送を受付不可であることをあらわす。１バースト（１６ビート）の転送の１５ビート目にアサートする。ストップしない場合にはドライブしない。
−　ｄｒｉｖｅ：１４ビート目。
−　ａｓｓｅｒｔ：１５ビート目。
−　ｎｅｇａｔｅ：１クロックアサート後
・ｇ（Ｓｌａｖｅｎａｍｅ）ＢｓｔＳｔｐＯｅＲｅｑ（Ｇ−Ｂｕｓ　Ｂｕｒｓｔ　Ｓｔｏｐ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅ　Ｒｅｑｕｅｓｔ）：Ｓｌａｖｅ→　ＤｅｆａｕｌｔＤｒｉｖｅｒＬｏｇｉｃ…スレーブがｇＢｓｔＳｔｐ＿Ｌ上をドライブするための要求信号。
・ｇ（Ｓｌａｖｅｎａｍｅ）ＢｓｔＳｔｐＯｅ＿Ｌ（Ｇ−Ｂｕｓ　Ｂｕｒｓｔ　Ｓｔｏｐ　ＯｕｔＰｕｔ　Ｅｎａｂｌｅｔ）：ＤｅｆａｕｌｔＤｒｉｖｅｒｌｏｇｉｃ→Ｓｌａｖｅ…ｇ（Ｓｌａｖｅｎａｍｅ）ＢｓｔＳｔｐＯｅＲｅｑを出力したスレーブに対し、デフォルトドライバロジックがｇＢｓｔＳｔｐ＿Ｌのドライブを許可することを示す信号。
【００９８】
（アービトレーション信号）
ｇ（Ｍａｓｔｅｒｎａｍｅ）Ｒｅｑ＿Ｌ，Ｏｕｔ，（Ｇ−Ｂｕｓ　Ｒｅｑｕｅｓｔ）：Ｍａｓｔｅｒ→Ａｒｂｉｔｅｒ…マスターによりドライブされ、アービタに対してバスを要求する。各マスターデバイスごとに専用のｇＲｅｑ＿Ｌを持つ。
−　ａｓｓｅｒｔ：データ転送が必要なマスターがアサート
−　ｎｅｇａｔｅ：ｇＧｎｔ＿Ｌを受ければネゲート
・ｇ（Ｍａｓｔｅｒｎａｍｅ）Ｇｎｔ＿Ｌ，Ｉｎ，（Ｇ−Ｂｕｓ　ＧＮＴ）：Ａｒｂｉｔｅｒ→Ｍａｓｔｅｒ…アービタによりドライブされ、バス要求に対して次のバス権を与える。各マスタデバイスごとに専用のｇＧｎｔ＿Ｌを持つ。プライオリティーの高いバスマスタから順にバス権を与える。同じプライオリティーのマスタに対しては、バス要求のあった順番にバス権を与える。
−　ａｓｓｅｒｔ：他のマスターにｇＧｎｔ＿Ｌを与えていない時、または次のクロックで他のマスタに与えていたｇＧｎｔ＿Ｌをネゲートする時に、アービトレーションによって選ばれたマスタに対してアサートする。
−　ｎｅｇａｔｅ：ｇＡａｃｋ＿Ｌのアサートを確認したクロック
・ｇＴｒＳｔｐ＿Ｌ，Ｉｎ，（Ｇ−Ｂｕｓ　Ｔｒａｎｓｕａｃｔｉｏｎ　Ｓｔｏｐ）：Ａｒｂｉｔｅｒ→Ｍａｓｔｅｒ，Ｓｌａｖｅ…アービタによりドライブされ、ｇＧｎｔ＿Ｌによりすでにアドレスフェーズを開始されたトランザクションを中止する。ただ、すでにｇＡａｃｋ＿Ｌによりデータフェーズを開始してしまったトランザクションについては中止できない。また、この信号はｇＡａｃｋ＿Ｌによりマスクがかけられており、ｇＡａｃｋ＿Ｌがアサートされた時には、たとえアサートしていてもネゲートされ出力される。
−　ａｓｓｅｒｔ：すでにアドレスフェーズを開始したトランザクションよりも高いプライオリティのマスタからバス要求がきた時。
−　ｎｅｇａｔｅ：ｇＡａｃｋ＿Ｌのアサートを確認したクロック
（Ｇバスライトサイクル）
Ｇバスのライトサイクルは次のようになる。
（１）マスタがバス要求、ｇＲｅｑ＿Ｌアサート。
（２）アービタが許可、ｇＧｎｔ＿Ｌアサート。ｇＲｅｑ＿Ｌネゲート。
（３）ｇＧｎｔ＿Ｌを受けて、マスタはｇＴｓ＿Ｌ，ｇＡｄｄｒ，ｇＲｄＮｏｔＷｒ，ｇＢｓｔＣｎｔ，をドライブ。
ライト動作の場合、ｇＳｌｖＢｓｙ＿Ｌがアサートされていなければ、同時にｇＤａｔａもドライブする。ｇＳｌｖＢｓｙ＿Ｌがドライブされていれば、ｇＳｌｖＢｓｙ＿Ｌがフリーになるのを待ってドライブする。
（４）スレーブはｇＴｓ＿Ｌがアサートされている時にアドレスをデコードし、ヒットすれば自分に対する転送であることを認識する。この時ｇＳｌｖＢｓｙ＿Ｌが他のスレーブによりアサートされていなければ、ｇＳｌｖＢｓｙ＿ＬとｇＡａｃｋ＿Ｌのドライブを始める。また、リードの場合はｇＤａｔａもドライブする。ｇＳｌｖＢｓｙ＿Ｌが他のスレーブによりアサートされていれば、データバスは使用中であるということなので、ネゲートされるまで待ってドライブを始める。ｇＳｌｖＢｓｙ＿Ｌ，ｇＡａｃｋ＿Ｌ，（ｇＤａｔａ）のドライブ開始後、スレーブがデータ転送の準備ができれば、それぞれの信号をアサートし、データ転送を開始する。
（５）ｇＡａｃｋ＿Ｌがアサートされた時点でアドレスフェーズは終了し、マスタはｇＡｄｄｒ，ｇＲｄＮｏｔＷｒ，ｇＢｓｔＣｎｔをネゲートする。また、その時点からマスタはライトデータを毎クロック切り替え、ｇＢｓｔＣｎｔで指定されたデータ量だけ転送を行う。マスタとスレーブは、それぞれ自分でクロックをカウントして、データ転送の終了を知らなければならない。
【００９９】
スレーブは転送の途中でマスタから要求されたデータ転送量を転送できなくなった場合は、ｂＳｔＳｔｐ＿Ｌを１５ビート目でアサートすることで、次の１６ビートの転送をキャンセルすることがただし、１６ビートの途中でキャンセルすることはできない。
【０１００】
マスタおよびスレーブは、ｇＢｓｔＳｔｐ＿Ｌがアサートされれば、次のクロックでデータの転送を終了させなければならない。
【０１０１】
＜キャッシュインバリデーションユニット（ＣＩＵ）＞
キャッシュインバリデーションユニット（以下ＣＩＵ）２００５は、ＩＯバスからメモリへのライトトランザクションを監視し、これが起こった場合は、メモリへの書込が終了する前に、ＣＰＵシェルのキャッシュインバリデーションインターフェースを用い、ＣＰＵシェルに内蔵されたキャッシュの無効化を行う。
【０１０２】
ＣＰＵシェルは、次の３種類の信号を使用する。
・ＳｎｏｏｐＡＤＤＲ［３１：５］　（Ｃａｃｈｅ　Ｉｎｖａｌｉｄａｔｉｏｎ　Ａｄｄｒｅｓｓ）
・ＤＣＩＮＶ　（Ｄｃａｃｈｅ（データキャッシュ）Ｉｎｖａｌｉｄａｔｉｏｎ　Ｓｔｒｏｂｅ）
・ＩＣＩＮＶ　（Ｉｃａｃｈｅ（インストラクションキャッシュ）Ｉｎｖａｌｉｄａｔｉｏｎ　Ｓｔｒｏｂｅ）。
キャッシュの無効化は最大３クロックで行われる、ＩＯバスからメモリへのライトは３クロックで終了することはないので、キャッシュインバリデーションユニット２００５は、ＣＰＵシェル４０１から出力されるＳｔｏｐ＿Ｌ信号を用いて無効化終了のハンドシェイクを行うことはしない。但し、将来の変更に備え、ＩＯバス上にはｂＳｎｏｏｐＷａｉｔをＳｔｏｐ＿Ｌと同一サイクルだけドライブする。
【０１０３】
なお、現在のインプリメンテーションでは、ＩＯバスからのライトが起こった場合は、安全のためにＩｃａｃｈｅもインバリデーションしている、もし、ＯＳでセルフモディファイングコードを禁止し、インストラクションとして使われる可能性のあるデータのローディング時に、意図的にインストラクションキャッシュのインバリデーションを行うなら、Ｉｃａｃｈｅのインバリデーションはいらない。この場合は若干のパフォーマンスアップが望める。
【０１０４】
＜メモリマップ＞
図２３及び図２４にメモリマップを示す。図２３は、左から順に、仮想メモリマップ、物理メモリマップ、Ｇバスのアドレス空間でのメモリマップ、ＩＯバスのアドレス空間でのメモリマップである。また、図２４は、レジスタ等を含む図２３における斜線部の５１２メガバイトを示すマップである。
【０１０５】
プロセッサコアのメモリモデルはＲ３０００をベースにしている。プロセッサコアの物理アドレス空間は３２ビットアドレッシングにより４Ｇバイトある。仮想空間も同様に３２ビットアドレッシングを行なう。ユーザープロセスの最大サイズは２Ｇバイトである。アドレスマッピングはカーネルモードとユーザーモードで異なる。図はＭＭＵを使用しない場合のメモリマップである。
【０１０６】
（ユーザーモード仮想アドレッシング）
ユーザーモードの仮想アドレッシングでは２Ｇバイトのユーザ仮想アドレス空間（ｋｕｓｅｇ）が有効となる。このユーザーセグメントのアドレスは０ｘ００００００００から始まり、すべての有効なアクセスは０にクリアされたｍｓｂを持つ。ユーザーモードにおいてｍｓｂをセットしたアドレスの参照はアドレスエラー例外処理を引き起こす。ＴＬＢはｋｕｓｅｇへのすべての参照をユーザーモードとカーネルモードで同様にマッピングする。また、キャッシャブルである。ｋｕｓｅｇは通常ユーザーコードやデータを保持するために使用される。
【０１０７】
（カーネルモード仮想アドレッシング）
カーネルモードの仮想アドレス空間には４つのアドレスセグメントを持っている。
・ｋｕｓｅｇ仮想アドレスの０ｘ００００００００から２Ｇバイト。ページと単位としたキャッシングとマッピングが可能。このセグメントはカーネルメモリアクセスとユーザーメモリアクセスでオーバーラップしている。
・ｋｓｅｇ０仮想アドレスの０ｘ８０００００００から５１２Ｍバイト。物理メモリの最初の５１２Ｍバイトにダイレクトにマップされる。参照はキャッシュされるが、アドレス変換にはＴＬＢは使われない。ｋｓｅｇ０は通常カーネルの実行コードやカーネルデータのために使用される。
・ｋｓｅｇ１仮想アドレスの０ｘＡ０００００００から５１２Ｍバイト。物理メモリの最初の５１２Ｍバイトにダイレクトにマップされる。参照はキャッシュされず、アドレス変換にはＴＬＢは使われない。ｋｓｅｇ１は通常ＯＳによって、Ｉ／Ｏレジスタ、ＲＯＭコード、ディスクバッファのために使用される。
・ｋｓｅｇ２仮想アドレスの０ｘＣ０００００００から１Ｇバイト。ｋｕｓｅｇと同様、ＴＬＢにより仮想アドレスから物理アドレスにマップされる。キャッシングは自由。ＯＳは通常ｋｓｅｇ２をスタックやコンテキストスイッチによるリマップが必要なプロセス毎のデータのために使用する。
【０１０８】
（仮想アドレスメモリマップ（図２３（ａ），図２４（ａ）））
仮想アドレス空間は４Ｇバイトあり、システム上のすべてのメモリ、Ｉ／Ｏがアクセス可能である。ｋｕｓｅｇにはＳＹＳＴＥＭ　ＭＥＭＯＲＹ（１ＧＢ）が存在する。
【０１０９】
ｋｓｅｇ０には内蔵ＲＡＭ（１６ＭＢ）が存在する。これは、例外処理のベクタをプログラミングしたい場合にインプリメントし、例外ベクタベースアドレスを０ｘ８０００００００に設定する。このアドレスは物理アドレス空間の０ｘ００００００００にマッピングされる。
【０１１０】
ｋｓｅｇ１にはＲＯＭ，Ｉ／Ｏ，レジスタが存在し、ブートＲＯＭ（１６ＭＢ），ＳＢＢ内部レジスタとＭＣ内部レジスタ（１６ＭＢ），ＩＯＢｕｓＩ／Ｏ１（１６ＭＢ：Ｇバスアービタ内部レジスタ、ＩＯバスアービタ内部レジスタ、ＰＭＵ内部レジスタなどのプリミティブなＩＯバスレジスタ），ＩＯＢｕｓＩ／Ｏ２（１６ＭＢ），ＩＯＢｕｓＭＥＭ（１６ＭＢ），Ｇｂｕｓ　ＭＥＭ（３２ＭＢ），ＦＯＮＴ　ＲＯＭ（２４０ＭＢ）、ＦＯＮＴ　ＲＯＭ　ｏｒ　ＲＡＭ（１６ＭＢ）が含まれる。ｋｓｅｇ２にはＰＣＩ　Ｉ／Ｏ（５１２ＭＢ），ＰＣＩＭＥＭ（５１２ＭＢ）が存在する。ｋｓｅｇ０，ｋｓｅｇ１はどちらも物理アドレス空間の最初の５１２Ｍバイトにマッピングされるため、ｋｓｅｇ０，ｋｓｅｇ１とｋｕｓｅｇの最初の５１２Ｍバイトはすべて同じ物理アドレス空間を参照していることになる。
【０１１１】
（物理アドレスメモリマップ（図２３（ｂ），図２４（ｂ）））
物理アドレス空間も仮想アドレス空間と同様４Ｇバイトあり、システム上のすべてのメモリ、Ｉ／Ｏがアクセス可能である。ＰＣＩ　Ｉ／Ｏ，ＰＣＩ　ＭＥＭ，ＳＹＳＴＥＭ　ＭＥＭＯＲＹについては仮想アドレスメモリマップと同一である。ｋｓｅｇ１，ｋｓｅｇ２はどちらも物理アドレス空間の最初の５１２Ｍバイトにマッピングされるので、ＲＯＭ，Ｉ／Ｏ，Ｒｅｇは０ｘ００００００００からの空間に存在している。
【０１１２】
（Ｇバスメモリマップ（図２３（ｃ），図２４（ｃ）））
Ｇバスアドレス空間は４Ｇバイトあり、ＳＹＳＴＥＭ　ＭＥＭＯＲＹ，ＧＢｕｓ　ＭＥＭ，ＦＯＮＴのみがアクセス可能である。
【０１１３】
（ＩＯバスメモリマップ（図２３（ｄ），図２４（ｄ）））
ＩＯバスアドレス空間は４Ｇバイトあり、ＰＣＩ　Ｉ／Ｏ，ＰＣＩ　ＭＥＭ，ＳＹＳＴＥＭ　ＭＥＭＯＲＹ，ＩＯＢｕｓＩ／Ｏ２，ＩＯＢｕｓ　ＭＥＭ，ＦＯＮＴのみがアクセス可能である。ＩＯＢｕｓ　Ｉ／Ｏ１はプリミティブなレジスタのため、０ｘ１Ｃ００００００から０ｘ２０００００００までの空間はＰＣＩからプロテクトがかけられており、ＰＣＩからアクセスできない。
【０１１４】
＜アドレススイッチ＞
アドレススイッチ２００３は、Ｐバス，Ｇバス，ＩＯバス，ＭＣバス間のデータ転送を行なうために、マスターとなるバスからスレーブとなるバスへ、ＳＢＢ４０２を経由してアドレス信号を送るためのものである。ＳＢＢ４０２を経由する転送において、マスターとなり得るバスは、Ｐバス，Ｇバス，ＩＯバスであり、スレーブとなり得るバスはＩＯバス，ＭＣバスである。ＭＣバスに対してはＰバス，Ｇバス，ＩＯバス，のいずれかがマスターとなり、ＩＯバスへはＰバスのみがマスターとなってアドレス信号を送る。また、Ｐバス−ＩＯバス間の転送と、Ｇバス−ＭＣバス間の転送は同時に行なうことができる。
【０１１５】
図２５に、アドレススイッチ２００３のブロック図を示す。スイッチシーケンサ２００３ａにより、スイッチ２００３ｂを切り替えてスレーブをＩＯバスとＭＣバスとで切り換え、スイッチ２００３ｃを切り替えてマスタをＰバス，Ｇバス，ＩＯバスで切り換える。この構成により、ＭＣバスに対してはＰバス，Ｇバス，ＩＯバス，のいずれかがマスターとなり、ＩＯバスへはＰバスのみがマスターとなり、また、Ｐバス−ＩＯバス間の転送と、Ｇバス−ＭＣバス間の転送は同時に行なうことができる。
【０１１６】
＜データスイッチ＞
データスイッチはＰバス，Ｇバス，ＩＯバス，ＭＣバス間のデータ転送を行なう際に，ＳＢＢ内でデータの流れを切り替えるものである。ライト時はマスターからスレーブ、リード時はスレーブからマスターへデータが送られる。
【０１１７】
図２６にデータスイッチ２００４のブロック図を示す。この構成において、セレクタＡ−１〜Ａ−３及びＢ−１，Ｂ−２を表７のように切り替えることで、Ｐバス，Ｇバス，ＩＯバスのいずれかをマスタとし、ＩＯバス，ＭＣバスのいずれかをスレーブとして、書き込みあるいは読み出しを行うように制御できる。
【０１１８】
【表７】
2004046851.tif 000009
【０１１９】
＜アービトレーション＞
ＳＢＢ４０２内のスイッチシーケンサ２００３ａは、各スイッチを切り替えるにあたって、ＳＢＢ外部からの以下の３種類の接続要求間のアービトレーションを行う。
１．ＣＰＵ
２．Ｇバスバスマスタ
３．ＩＯバスバスマスタ
このアービトレーションは、現在のバススイッチ接続状況、及び、あらかじめ設定された優先順位により決定され、その結果アドレススイッチ、データスイッチの接続が切り替えられる。
【０１２０】
＜タイミングダイアグラム＞
図２７〜図３２にタイミング図を示す。図２７はＧバスからの書き込み／読み出しサイクルのタイミング図、図２８はＧバスのバースト停止サイクルのタイミング図、図２９〜図３２は、Ｇバスのトランザクション停止サイクルのタイミング図である。
【０１２１】
［２．６．ＰＣＩバスインターフェース］
図３３は、ＰＣＩバスインターフェース４１６のブロック図である。ＰＣＩバスインターフェース４１６は、ＤｏＥｎｇｉｎｅ内部汎用ＩＯバスであるＩＯバスと、チップ外部ＩＯバスであるＰＣＩバスの間をインターフェースするブロックである。入力ピン設定により、リセット時にＰＣＩバスコンフィギュレーション発行可能な、ホストブリッジ構成と、ＰＣＩバスコンフィギュレーションは発行しないターゲット構成とを切り替えることができる。
【０１２２】
ＩＯバスインターフェースのマスタＤＭＡコントローラ３３０１は、ＰＣＩバスシグナルインターフェース３３０２を介してＰＣＩバスマスタからＤｏＥｎｇｉｎｅ内部のリソースにアクセス要求があった場合に、ＩＯバスマスタとしてこのアクセス要求をＩＯバス内部にブリッジする。
【０１２３】
更に、このマスタＤＭＡコントローラ３３０１は、ＰＣＩバス上でマッピングされるメモリからＤｏＥｎｇｉｎｅＭｅｍｏｒｙへのＤＭＡ転送を行う事が出来る。この際、プログラマが意図したＩＯバスＤＭＡと、ＧバスＤＭＡのアクセスの順番を守って動作させるために、転送先アドレス（ｂＰｃｉＡｄｄｒ［３１：０］）と、ＰＣＩマスターコントローラ３３０１のＩＤ信号（ｂＰｃｉＩＤ）を、ＩＯバスとアービトレーションシーケンサに対して、バスリクエストと同時に発行する。
【０１２４】
マスタＤＭＡコントローラ３３０１はバスグラント（ｂＰｃｉＢＧｎｔ＿Ｌ）を受け取り、バスを使用しデータ転送が終了した時点で、ＩＤ信号（ｂＰｃｉＩＤ）のアサートを取りやめる。なお、ＰＣＩバスは、３３ＭＨｚ，３２ビット，ＰＣＩ２．１準拠とする。
【０１２５】
［２．７．Ｇバスアービタ］
図３４は、Ｇバスアービタ（ＧＢＡ）４０６のブロック図である。Ｇバスのアービトレーションは、中央アービトレーション方式であり、各バスマスタに対して専用のリクエスト信号（ｇ（ｍａｓｔｅｒｎａｍｅ）Ｒｅｑ＿Ｌ）とグラント信号（ｇ（ｍａｓｔｅｒｎａｍｅ）Ｇｎｔ＿Ｌ）を持つ。図３４は、ｍａｓｔｅｒｎａｍｅはＭ１〜Ｍ４となっている。Ｂｕｓアービタ４０６は、Ｇバス上のバスマスタを４つまでサポートしており、以下のような特徴を持つ。
・アービタ内部のレジスタ３４０１ａの設定によりアービタをプログラミングすることが出来る。レジスタ設定はＩＯバスより行なう。
・すべてのバスマスタを同じ優先権として、公平にバス権を与える公平アービトレーションモードと、いずれかひとつのバスマスタの優先権を上げ、優先的にバスを使用させる優先アービトレーションモードがある。どのバスマスタに優先権を与えるかはレジスタ３４０１ｂの設定により決定される。
・優先バスマスタが連続してバスを使用することができる回数を設定することが可能。
・すでにアドレスフェーズを開始したが、データフェーズをまだ開始していないトランザクションについて、そのトランザクションをストップするためのトランザクションストップサイクルをサポート。
・複数のバスマスタにおける順序処理のプログラミングができる（後述）。プログラムされた順序は、レジスタテーブル３４０１ａに格納される。
・ＧバスマスタとＩＯバスマスタが同一メモリアドレスに順次書き込みを発行した場合に、プログラマの意図したアクセス順序を維持するための機構として、同期ユニットからのマスタＩＤ信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【０１２６】
なお、レジスタへのプログラミングは、ＩＯバスを介してＣＰＵ４０１から行われる。
【０１２７】
（アービトレーションシーケンサ）
Ｇバスアービタの中核となるアービトレーションシーケンサ３４０２ａ，ｂは、１つの優先マスタとその他の４つの非優先マスタの間で５つのマスタによるアービトレーションを行なう。４つのバスマスタからのリクエスト信号とグラント信号を、リクエストディスパッチ回路３４０３とグラントディスパッチ回路３４０４によって４つの非優先マスタに割り付けることにより、公平アービトレーションモードが実現される。また、４つのバスマスタのうちのひとつを、高優先アービトレーションシーケンサ３４０２ａの優先マスタに割り付けることで、優先アービトレーションモードとして動作する。これらの割り付けは、レジスタ３４０１ａ，ｂの設定にしたがって行われる。これにより、優先バスマスタは、他のマスタより高い確率でバスの使用権を取得することが出来る。
【０１２８】
さらに、バスの取得機会確率の調整に加え、高優先シーケンサ３４０２ａに割り当てられたマスタは、連続してバスを使用する事が出来、連続して使用出来る回数をプログラマブルなレジスタにより可変する事ができる。これは、バスの占有率を調整出来、ある特定のマスタにより多くバスを使用させる様に出来ることを意味する。
【０１２９】
（公平アービトレーションモード）
このモードでは、すべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる（ラウンドロビン方式）。例えば、Ｍ１からＭ４までのすべてのバスマスタが同じクロックでリクエストを出した場合は、Ｍ１→Ｍ２→Ｍ３→Ｍ４といった順序でバス権が与えられる。Ｍ４のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、Ｍ１→Ｍ２→Ｍ３→Ｍ４→Ｍ１→Ｍ２…というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、Ｍ４からＭ１へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【０１３０】
一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【０１３１】
（優先アービトレーション）
このモードでは、ひとつのバスマスタ（レジスタ３４０１ｂに登録されたバスマスタ）が他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。優先バスマスタ以外のバスマスタの優先順位はすべて同じである。
【０１３２】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続したリクエストを行う場合、優先バスマスタと他の非優先バスマスタは交互にバス権を得る。
【０１３３】
非優先バスマスタから他のバスマスタにバス権が移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと、その非優先バスマスタは再びバス権を得ることができない。
【０１３４】
（トランザクション・ストップ・サイクル）
優先アービトレーションモードにおいて、優先バスマスタがリクエストを出した時、すでに他のバスマスタがアドレスフェーズを開始していても、データフェーズをまだ開始していなければ、そのトランザクションをストップし、優先バスマスタがバス権を得ることができる。ただし、その直前に優先バスマスタがバス権を持っていた場合は、連続したバス権を得ることができる回数を超えることはできない。
【０１３５】
優先バスマスタのトランザクションが終了した時、中止されたバスマスタがリクエストを出していれば、優先してバス権が与えられる。
【０１３６】
（優先バスマスタの切り替え）
優先バスマスタの切り替えを行なうには、レジスタ３４０１ｂを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【０１３７】
優先バスマスタの切り替えには十分注意を払う必要がある。優先させるべきバスマスタのＤＭＡが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのＤＭＡの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、ＤＭＡが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【０１３８】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行う必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんＧバス上に新たなＤＭＡリクエストが発生しないよう、すべてのバスマスタ及びＤＭＡコントローラに対する設定を中止し、その後、Ｇバスアービタ４０６内のレジスタに適切な値をセットし、さらに、Ｇバスアービタ４０６内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなＧバス上へのアクセス及びＤＭＡの起動を行うべきである。
【０１３９】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【０１４０】
（順序処理）
図３５は、ＤｏＥｎｇｉｎｅ４００内におけるＧバス４０４を中心とする、Ｇバス上のバスマスタによるＤＭＡに係るブロック図である。
【０１４１】
複数のバスマスタが順次に処理を行うことが必要な場合、例えば、メモリ３５０１上のデータに対して、バスマスタ１により処理Ａを行った後、バスマスタ２により処理Ｂを行い、その処理後のデータをバスマスタ４に送るといった一連の処理を考える。
【０１４２】
この処理を行うソフトウェア、すなわちＣＰＵ４０１により実行されるプログラムにより、ＩＯバス４０５を介して、バスアービタ４０６内のレジスタテーブル３４０１ａに、バスマスタがバスを使用する順序と、バス権の付与の開始条件と、終了条件がセットされる。この例では、
2004046851.tif 000010
というようにセットする。すなわち、Ｇバスアービタ４０６は、それぞれのバスマスタから、開始条件として設定された信号を受けるとそのバスマスタにバス使用権を与え、終了条件として設定された信号を受けるとバス使用権を奪う。
【０１４３】
ソフトウェアはそれぞれのバスマスタにＤＭＡをセットする。それによって、それぞれのマスタはＧバスアービタ４０４に対してリクエスト（ｇ（ｍａｓｔｅｒｎａｍｅ）Ｒｅｑ＿Ｌ）を発行する。Ｇバスアービタ４０４はレジスタテーブル３４０１ａに登録された順序に従ってバスマスタ１にバス権を与える（ｇＭ１Ｇｎｔ＿Ｌ）。バスマスタ１はメモリ３５０１からある単位のデータをリードし、処理Ａを行って、バスマスタ１内部のバッファにデータをライトする。バスマスタ１はひとつの単位の処理が終了し、バッファの準備ができたことをｇＭ１ＢｕｆＲｅａｄｙ信号によりアービタ４０６に対して通知する。
【０１４４】
アービタ４０６はそれを受け、レジスタテーブル３４０１ａに登録された、バスマスタがバス権を与える条件とバス権を奪う条件にしたがって、バス権をバスマスタ１から奪いバスマスタ２に与える。バスマスタ２はバスマスタ１のバッファのデータをリードし、処理Ｂを行って、バスマスタ２内部のバッファにデータを格納する。この間にバスマスタ１のバッファが空になるとｇＭ１ＢｕｆＥｍｐｔｙがアサートされ、アービタ４０６はバスマスタ２にバス権を与えていたのを取りやめる。バスマスタ２は処理Ｂを行って、バッファの準備ができるとｇＭ２ＢｕｆＲｅａｄｙ信号により通知する。
【０１４５】
アービタ４０６はそれを受け、レジスタ３４０１ａの内容にしたがって、今度はバスマスタ４にバス権を与える。バスマスタ４はバスマスタ２のバッファからデータをリードする。バスマスタ２のバッファが空になると、ｇＭ２ＢｕｆＥｍｐｔｙによってアービタ４０６に通知し、アービタ４０６はそれを受け、レジスタ３４０１ａの内容に従って再びバスマスタ１にバス権を与え、次のデータの処理を始める。
【０１４６】
それぞれのバスマスタにセットされたＤＭＡがすべて終了すると、それぞれのバスマスタはプロセッサに割り込みによって通知する。ソフトウェアはすべてのバスマスタからの終了通知がそろったとき、一連の処理が終了したことを知る。
【０１４７】
以上説明した動作は完全順次モードでの動作であり、順次処理に関わるバスマスタ以外のバスマスタは、バスを使用することができない。この順次処理中でも、順次処理に関係のないバスマスタがバスを使用することを可能にするために優先順次モードが用意されている。これらのモードの切り替えではアービタ４０６内部のレジスタにプログラミングすることによって行なう。優先順次モードでは、順次処理を行なうバスマスタは優先的にバスを使用できるが、順次処理に関わらないバスマスタであればバスを使用することが許される。順次処理を行なうバスマスタと関わらないバスマスタの間のアービトレーションは、前述した優先アービトレーションモードと同等である。当然、順次処理に係わるバスマスタで、バス権を与えられる条件が満足されずに自分の順番が回ってきていないバスマスタにはバス権は与えられない。
【０１４８】
（アクセス順序を維持するための機構）
信号ｓｔｏｐＳｐｃがアサートされた場合は、Ｇバスマスタのひとつであるスキャナプリンタコントローラ４０８はアービトレーションの対象から除外され、たとえリクエストをアサートしていてもバス使用権を与えられることはない。アービトレーションはこのマスタを除外したマスタ間で行われる。詳細な説明はＩＯバスアービタの節で行なう。
【０１４９】
＜タイミングダイアグラム＞
図３６〜図３９において、Ｇバスアービトレーションのタイミングを説明する。図３６は、連続してバスを使用する回数が、バスマスタ１〜４のすべてについて１に設定されている場合の公平アービトレーションモード（フェアモード）の例である。バスマスタ１による２回目の（タイミング４から出されている）バス要求は、バス要求を出している他のバスマスタがすべて１回ずつ処理されるまで待たされている。
【０１５０】
図３７は、連続してバスを使用する回数が、バスマスタ１についてのみ２であり、他のバスマスタは１に設定されている場合の公平アービトレーションモードの例である。バスマスタ１が出している２回目の（タイミング４から出されている）バス要求は１回目の要求に続いて直ちに許可され、他のバスマスタはその処理がすむまで待たされている。
【０１５１】
図３８は、連続してバスを使用する回数がそれぞれ１ずつであり、バスマスタ１が優先バスマスタと設定されている場合の優先アービトレーションモードの例である。優先バスマスタと非優先バスマスタとは交互にバス使用権が認められるために、バスマスタ１の２回目のバス要求はバスマスタ２のバスの使用後に認められており、バスマスタ４のバス要求は、バスマスタ１の２回目のバスの使用後に認められている。また、バスマスタ２の２回目のバス要求は、バス要求を出している他のすべてのバスマスタ、図３８ではバスマスタ１及びバスマスタ４のバス使用が終了した後で認められている。
【０１５２】
図３９は、バスマスタ１からのバス要求により、バスマスタ４のバス要求が許可されているにもかかわらず中断された例である。この場合、バスマスタ１のバス使用が終了すると、バスマスタ２のバス要求に優先してバスマスタ４のバス要求が認められる。
【０１５３】
［２．８．ＩＯバスアービタ］
図４０は、ＩＯバスアービタ４０７のブロックである。ＩＯバスアービタ４０７は、ＤｏＥｎｇｉｎｅ内部のＩＯ汎用バスであるＩＯバス４０５のバス使用要求を受け付け、調停の後、使用許可を選択された一つのマスタに対して与え、同時に２つ以上のマスタがバスアクセスを行う事を禁止する。
【０１５４】
アービトレーション方式は、３段階のプライオリティを持ち、それぞれのプライオリティに複数のマスタをプログラマブルに割り当てられる構成になっている。割り当ては、それぞれ最大で、最高のプライオリティに３マスタ、中間に７マスタ、最低レベルに３マスタとなる。
【０１５５】
また、ＧバスマスタとＩＯバスマスタが、同一メモリアドレスに順次書き込みを発行した場合に、プロブラマの意図したアクセス順序を維持するための機構として、同期ユニットからの、マスタＩＤ信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【０１５６】
（アービトレーションシーケンサ）
ＩＯバスアービタは３つのアービトレーションシーケンサ４００２，４００３，４００４から構成される。それぞれ、高優先権、中優先権、低優先権を持ち、それぞれのシーケンサ内に、３，７，３本のバスマスタ用アービトレーションシーケンサが内蔵される。ＩＯバス上のすべてのバスマスタになる可能性のあるユニットからのリクエスト信号とそれらへのグラント信号を、リクエストセレクタとグラントセレクタによって、これらの３つのシーケンサユニットに分配する。この分配は、ＢＢｕｓインタフェース４００５内のソフトウェアプログラマブルなレジスタ４００５ａにより、複数の組み合わせのなかから、一意の組み合わせを選択することが出来る。
【０１５７】
たとえば、最大７つのマスタのリクエストを中優先アービトレーションシーケンサ４００３に接続することにより、７つのマスタ間で公平なアービトレーションが実現される。また、バスマスタのうちのいくつかを、高優先アービトレーションシーケンサ４００２に割り付けることで、これらのマスタは他のマスタより、より高い確率でバスの使用権を取得することが出来る。さらに、いくつかのリクエストを低優先シーケンサ４００４に接続することで、これらのバスの使用率を低く抑える事が出来る。さらに、バスの取得機会確率の調整に加え、高優先シーケンサ４００２に割り当てられたマスタは、連続してバスを使用する事ができ、連続して使用出来る回数をプログラマブルなレジスタ４００５ａにより可変する事ができる。これは、バスの占有率を調整でき、ある特定のマスタにより多くの時間バスを使用させる様に出来る事を意味する。
【０１５８】
（公平バスアービトレーション方式）
中優先シーケンサ４００３を例にとり、公平アービトレーションの実現方法を説明する。一つのシーケンサに接続されたすべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる（ファーストカムファーストサーブ）。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる（同時リクエスト発行時ラウンドロビン）。例えば、Ｍ１からＭ７までのすべてのバスマスタが同じクロックでリクエストを出した場合は、Ｍ１→Ｍ２→Ｍ３→Ｍ４→Ｍ５→Ｍ６→Ｍ７といった順序でバス権が与えられる。Ｍ７のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、Ｍ１→Ｍ２→Ｍ３→Ｍ４→Ｍ５→Ｍ６→Ｍ７→Ｍ１→Ｍ２というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、Ｍ７からＭ１へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【０１５９】
（優先アービトレーション）
ＩＯバスインターフェースは、高優先、中優先、低優先の３つのアービトレーションシーケンサが存在する。優先順位をつけたアービトレーションは、複数のバスリクエストを選択的に、高優先、低優先、のアービタに割り振ることにより実現される。
【０１６０】
たとえば、ひとつのマスタを高優先に割り当て、残りを中優先に割り当てることにより、ひとつのバスマスタが他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。同じ優先権のアービトレーションシーケンサに割り当てられたバスマスタの優先順位はすべて同じである。
【０１６１】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続してリクエストを行う場合、優先バスマスタと他のバスマスタは交互にバス権を得る。Ｍ３が優先マスタでＭ１，Ｍ２，Ｍ３，Ｍ４がリクエストを出し続けた場合Ｍ３→Ｍ１→Ｍ３→Ｍ２→Ｍ３→Ｍ４→Ｍ３→Ｍ１の順でバス使用権を与える。
【０１６２】
また、高優先バスマスタは、アービタ内のプログラマブルなレジスタにあらかじめ設定された回数だけ連続したバス権を得ることができる。連続したバスを使用出来る回数は最大で４回である。
【０１６３】
優先バスマスタ以外のバスマスタから他のバスマスタにバス権が移ると、そのバスマスタは、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。ひとつのバスマスタが連続してリクエストを行う場合、他にリクエストを行っているバスマスタがいなければ、連続してバス権を得ることができるが、他のバスマスタがリクエストを行っていれば、そのバスマスタはあらかじめ設定された回数だけ連続してバス権を得ることができる。一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【０１６４】
低優先アービトレーションシーケンサ４００４には最大３本のリクエストを割り当てる事が出来る。低優先シーケンサ４００４に割り当てられたマスタへは、中優先、高優先シーケンサに割り当てられた、すべてのマスタのリクエストがなくならないと、バスの使用権が与えられない。このシーケンサへのバスマスタの割り当ては十分な注意を持って行われなければならない。
【０１６５】
（優先バスマスタの切り替え）
優先バスマスタの切り替えを行なうには、アービタ内のレジスタを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【０１６６】
切り替えには十分注意を払う必要がある。優先させるべきバスマスタのＤＭＡが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのＤＭＡの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、ＤＭＡが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【０１６７】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行なう必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんＩＯバス上に新たなＤＭＡリクエストが発生しないよう、すべてのバスマスタ及びＤＭＡコントローラに対する設定を中止し、その後、ＩＯバスアービタ４０７内のレジスタに適切な値をセットし、さらに、ＩＯバスアービタ内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなＩＯバス上へのアクセス及びＤＭＡの起動を行うべきである。
【０１６８】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは、違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【０１６９】
（アクセス順序制御機構）
ＩＯバスアービタ４０７はアクセス順序制御機構を含む。アクセス順序制御機構は、同期ユニット４００１と、ＩＯバスアービタ４０７，Ｇバスアービタ４０６内に組み込まれたバス使用権発行抑制機構によって実現される。ＩＯバスアービタ４０７内に組み込まれたバス使用権発行抑制機構は、Ｇバスアービタのそれと同様に動作する。つまり、ｓｔｏｐＰｃｉ信号が入力された場合は、Ｐｃｉバスマスタからのバスリクエストが発行され、アービトレーションの結果、このマスタにバスの使用権を与えることが可能な状態でも、バスの使用権発行は行わず、他のマスタへバス使用権をあたえる。具体的には、ｓｔｏｐＰｃｉ信号が入力された場合は、直ちにｂＰｃｉＲｅｑ＿Ｌをマスクすることにこれを行う。
【０１７０】
ＬＡＮコントローラ４１４からのバスリクエストおよび、ストップ信号の場合もまったく同様に動作する。図４１に同期ユニット４００１のブロック図を示す。同期ユニット内には複数のＤＭＡマスタ間すべての組み合わせに関して、それぞれコンペアユニット４１０１〜４１０３が接続される、ＤｏＥｎｇｉｎｅでは、Ｇｂｕｓ上のＤＭＡマスタはスキャナ／プリンタコントローラ４０８のみ存在する。ＩＯバス上には、ＤＭＡＰＣＩユニット、ＬＡＮユニットの二つが存在する。ＳＢＢ内のＩＯバスインターフェースはＩＯバス上のバスマスタであるが、メモリには直接アクセスしないので、同期ユニット４００１にはＩＤと転送先アドレスを出力しない。
【０１７１】
図４２に同期ユニット内の一つコンペアユニット（Ｃｏｍｐａｒａｔｉｏｎ　Ｕｎｉｔ　１）を以下に示す。他のコンペアユニットも同様の構成を有する。
【０１７２】
ＰＣＩインターフェース４１６に付属するＤＭＡブロックもしくは、スキャナ／プリンタコントローラ４０８から、同期ユニット４００１に対し、ＤＭＡライトがプログラミングされた時点で、転送先のアドレスとそのＤＭＡブロック固有のリクエスト信号が通知される。
【０１７３】
各コンペアユニットは、各ＤＭＡブロックからリクエストが出力された時点で、アドレスを内部に持つタイマによる現在時刻とともに記憶する、次に他のＤＭＡブロックから、ＤＭＡライトに関するアドレスとリクエストが入力された時点で、コンペアユニットは両アドレスを比較する。一致した場合にはさらに、それぞれのレジスタに格納された時間を比較し、時間的に後からＤＭＡライトの要求を出してきたＤＭＡブロックが接続されたバスのバスアービタに対し、このマスタに対するバス使用強化を与えないようにする。これは、ｓｔｏｐ（ＩＤ）という信号により各バスのバスアービタに通知される。
【０１７４】
各バスアービタはｓｔｏｐ（ＩＤ）信号により通知されたマスタに対しては、アービトレーションによるバス使用権の割り当てを行わない。
【０１７５】
時間が経過し、先にアクセス要求を行ったバスマスタにより当該メモリアドレスへのＤＭＡライトが終了すると、先のマスタは、同期ユニットに対するリクエストを取り下げる、同期ユニットは、２番目にＤＭＡライトの要求を出した、ＤＭＡブロックの接続するバスのバスアービタに対し、このＤＭＡブロックへの、バス使用権許可禁止信号の発行をとりさげる。そして、後からＤＭＡライトを行うべきマスタのＤＭＡライトが行われる。
【０１７６】
双方のＤＭＡライトが終了し、双方のリクエストが取り下げられると、タイマーがリセットされる。タイマーのカウントアップは再度どちらかのマスタからのリクエストが出力された時点で再度行われる。
【０１７７】
［２．９．スキャナ／プリンタコントローラ］
図４３は、スキャナ／プリンタコントローラ４０８のブロック図である。図において、スキャナ／プリンタコントローラ４０８は、ＶｉｄｅｏＩ／Ｆによってスキャナおよびプリンタと接続され、内部バスＧバスおよびＩＯバスにインターフェースするブロックである。大別して以下の８つのブロックから構成される。
１．スキャナ制御ユニット４３０３…ビデオＩ／Ｆを介してスキャナの動作制御を行う。
２．プリンタ制御ユニット４３０４…ビデオＩ／Ｆを介してプリンタの動作制御を行う。
３．スキャナ系画像処理ユニット４３０５…スキャナから入力される画像データに対して画像処理を行う。
４．プリンタ系画像処理ユニット４３０８…プリンタに出力する画像データに対して画像処理を行う。
５．スキャナ／ビデオ同期ユニット４３０６…スキャナから入力する画像データに対して、入力の同期タイミングを生成する。
６．プリンタ／ビデオ同期ユニット４３０７…プリンタに出力する画像データに対して、出力タイミングを生成する。プリンタとスキャナが同期可能な組み合わせの場合、スキャナ／ビデオ同期制御ユニット４３０６とともにコピー動作のビデオタイミングを生成する。
７．データ転送制御ユニット４３０２…データ転送の動作制御を行う。ＤＭＡ動作ではマスターおよびスレーブの両動作をサポートする。
８．Ｇバス／ＩＯバス　インターフェースユニット４３０１…ＧバスおよびＩＯバスとスキャナ、プリンタコントローラを接続するインターフェースユニットである。データ転送制御ユニット４３０２とＬバスによって接続される。
【０１７８】
＜スキャナ／ビデオ同期制御ユニット４３０６＞
図４４にスキャナ／ビデオ同期制御ユニット４３０６のブロック図を示す。
【０１７９】
（スキャナ／ビデオ同期制御ユニットの概要）
スキャナ／ビデオ同期制御ユニット４３０６は、スキャナから入力される画像データの垂直同期信号（ＳＶＳＹＮＣ）、水平同期信号（ＳＨＳＹＮＣ）、画像データ同期クロック（ＳＶＣＬＫ）により、画像データの取り込みタイミング信号、画像処理のためのタイミング信号、転送バッファであるＦＩＦＯヘ書き込みタイミング信号（ＳＣＦＷＲ）を生成する。
【０１８０】
また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。設定量の画像データ取込を終了したタイミングでの状態信号（ＳＡＬＬＥＮＤ）を生成する。ラインカウンタ４４０１は副走査方向の遅延と取り込みライン数を管理して、画像読み取り有効ラインの垂直同期信号（ＳＥＦＨＳＹＮＣ）を生成する。ピクセルカウンタ４４０２は主走査方向の画像取り込み遅延と取り込み画素数を管理する。取り込んだ画像データをＦＩＦＯに格納するための書き込みタイミング信号（ＳＣＦＷＲ）を生成する。ページカウンタ４４０３は入力される画像データページ単位で管理する。設定されたページ数分の画像データ入力を終了すると、終了信号（ＳＡＬＬＰＥＮＤ）を生成する。
【０１８１】
ラインカウンタ４４０１，ピクセルカウンタ４４０２，ページカウンタ４４０３の各設定値はコントロールレジスタ４３１０によって読み書きされる。
・ライトデータ：ＩＦＷＤＡＴＡ［３１：０］
・リードデータ：ＩＦＲＤＡＴＡ［３１：０］
・ラインカウンタライト信号：ＳＬＣＳＥＴ
・ラインカウンタリード信号：ＳＬＣＲＤ
・ピクセルカウンタライト信号：ＳＰＣＳＥＴ
・ピクセルカウンタリード信号：ＳＰＣＲＤ
・ページカウンタライト信号：ＳＰＡＧＥＳＥＴ
・ページカウンタリード信号：ＳＰＡＧＥＲＤ
＜プリンタ／ビデオ同期制御ユニット４３０７＞
図４５は、プリンタ／ビデオ同期制御ユニット４３０７のブロック図である。
【０１８２】
（プリンタ／ビデオ同期制御ユニットの概要）
プリンタ／ビデオ同期制御ユニット４３０７は、プリンタから入力される画像データの垂直同期信号（ＰＶＳＹＮＣ）、水平同期信号（ＰＨＳＹＮＣ）、画像データ同期クロック（ＰＶＣＬＫ）により、画像データの取り込みタイミング信号、画像処理のためのタイミング信号、転送バッファであるＦＩＦＯからの読み出しタイミング信号（ＰＲＦＲＤ）を生成する。
【０１８３】
また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。設定量の画像データ取り込みを終了したタイミングでの状態信号（ＰＬＥＮＤ）を生成する。ラインカウンタ４５０１は副走査方向の遅延と出力ライン数を管理して、画像出力有効ラインの垂直同期信号（ＰＥＦＨＳＹＮＣ）を生成する。ピクセルカウンタ４５０２は主走査方向の画像出力遅延と出力画素数を管理する。出力画像データをＦＩＦＯから読み出すための読み出しタイミング信号（ＰＲＦＲＤ）を生成する。ページカウンタ４５０３は出力数画像データをページ単位で管理する。設定されたページ数分の画像出力が終了すると、終了信号（ＰＡＬＬＰＥＮＤ）を生成する。
【０１８４】
ラインカウンタ４５０１，ピクセルカウンタ４５０２，ページカウンタ４５０３の各設定値はコントロールレジスタ４３１０によって読み書きされる。
・ライトデータ：ＩＦＷＤＡＴＡ［３１：０］
・リードデータ：ＩＦＲＤＡＴＡ［３１：０］
・ラインカウンタライト信号：ＰＬＣＳＥＴ
・ラインカウンタリード信号：ＰＬＣＲＤ
・ピクセルカウンタライト信号　：ＰＰＣＳＥＴ
・ピクセルカウンタリード信号　：ＰＰＣＲＤ
・ページカウンタライト信号：ＰＰＡＧＥＳＥＴ
・ページカウンタリード信号：ＰＰＡＧＥＲＤ
＜スキャナＦＩＦＯコントローラ４３１１＞
図４６は、スキャナＦＩＦＯコントローラのブロック図である。スキャナＦＩＦＯコントローラ４３１２（図４３参照）は、スキャナから入力された画像データをＧバスもしくはＩＯバスを介して転送するためのバッファとしてのＦＩＦＯと、そのＦＩＦＯをコントロールする回路を含む。容量１０２４バイト、データ幅２４ビット（Ｒ，Ｇ，Ｂ各８ビット）の２系統のＦＩＦＯ４６０２，４６０３を備える。これらのＦＩＦＯは、Ｇバス／ＩＯバスのデータ転送動作とスキャナからの画像データ入力動作を交互に行うダブルバッファとして動作する。ＦＩＦＯのデータ入出力は、スキャナＦＩＦＯセレクタ４６０１がＦＩＦＯのフルフラグ（ＦＦ）とエンプティーフラグ（ＥＦ）により制御する。
【０１８５】
＜プリンタＦＩＦＯコントローラ４３１２＞
図４７は、プリンタＦＩＦＯコントローラ４３１２（図４３）のブロック図である。プリンタＦＩＦＯコントローラ４３１２は、プリンタヘ出力する画像データをＧバスもしくはＩＯバスを介して転送するためのバッファとしてのＦＩＦＯと、そのＦＩＦＯをコントロールする回路を含む。容量１０２４バイト、データ幅２４ビット（Ｒ，Ｇ，Ｂ各８ビット）のＦＩＦＯを２系統備える。これらは、Ｇバス／ＩＯバスのデータ転送動作とプリンタへの画像データ出力動作を交互に行うダブルバッファーとして動作する。ＦＩＦＯのデータ入出力は、プリンタＦＩＦＯセレクタ４７０１がＦＩＦＯのフルフラグ（ＦＦ）とエンプティーフラグ（ＥＦ）により制御する。
【０１８６】
スキャナプリンタコントローラ４０８は、スキャナとプリンタとを同期動作させ、コピー動作をおこなうために、図４３に示すように、スキャナデータを直接プリンタへ出力するデータパスを備える。また、スキャナからの入力データとプリンタへの出力データをＦＩＦＯにより同期させるデータパスも備える。それらのデータパスはスキャナとプリンタのデータ入出力の同期関係で選択可能とする。
【０１８７】
＜データ転送制御ユニット４３０２＞
図４８は、データ転送制御ユニット４３０２のブロック図である。データ転送制御ユニット４３０２は、Ｌバスヘのデータの入出力を制御するブロックで、チェインコントローラ４８０１、マスタＤＭＡコントローラ４８０２、転送アービタ４８０３等を含む。
【０１８８】
データ転送制御ユニットは、マスタとしては以下の動作を制御する。
１．スキャナからの画像データＤＭＡ転送およびチェインテーブル参照
２．プリンタへの画像データＤＭＡ転送およびチェインテーブル参照。
スレーブとしては以下の動作を制御する。
１．内部レジスタのライト・リード
２．スキャナからの画像データ転送
３．プリンタへの画像データ転送。
【０１８９】
（チェインコントローラ）
図４９は、チェインコントローラ４８０１のブロック図である。チェインコントローラは、チェインテーブルを示すアドレスポインタブロックとＤＭＡの転送先を示すアドレスポインタブロックから構成される。スキャナ、プリンタコントローラがマスタとしてＤＭＡを行う際の転送先アドレス発生ブロックであり、チェインＤＭＡをサポートする。スキャナデータ転送、プリンタデータ転送の２系統が独立で動作する。
【０１９０】
＜Ｌバス＞
Ｇバス／ＩＯバスインターフェースユニットとデータ転送ユニットを接続する
スキャナ、プリンタコントローラ内のローカルなバスである。次のような信号を含む。なお、以下、信号の入出力は、データ転送制御ユニット４３０２からＧバス／ＩＯバスインターフェースユニット４３０１に出力する信号をＯＵＴ、Ｇバス／ＩＯバスインターフェースユニット４３０１からデータ転送制御ユニット４３０２に入力する信号をＩＮで示す。
・ＩＦＣＬＫ　（ＩＮ）…Ｌバスの基本クロック
・ＩＦＲＤＡＴＡ［６３：０］（ＯＵＴ）…データ転送制御ユニットからＧバス／ＩＯバスインターフェースユニットに出力される６４ビットのデータバスである。データ転送制御ユニットがマスタとスレーブのどちらの動作においても使用される。
・ＩＦＷＤＡＴＡ［６３：０］（ＩＮ）…Ｇバス／ＩＯバスインターフェースユニット　からデータ転送制御ユニットに出力される６４ビットのデータバスである。データ転送制御ユニットがマスタとスレーブのどちらの動作においても使用される。
・ＩＦＭＤＴＲＥＱ（ＯＵＴ）…データ転送制御ユニットがマスタとしてデータ転送の要求とデータおよびアドレスの有効状態を示す。”Ｈｉｇｈ”でデータの転送要求とアドレスバスＩＦＭＡＤ［３：１２］の有効状態を示す。
・ＩＦＭＡＤ［３１：２］（ＯＵＴ）…データ転送制御ユニットがマスタ動作時、目的アドレスを示すアドレスバス。ＩＦＭＤＴＲＥＱ信号がアクティブ状態”Ｈｉｇｈ”で有効なアドレスを出力する。
・ＩＦＭＲＷ（ＯＵＴ）…データ転送制御ユニットがマスタ動作時、データの入出力を示す信号。”Ｈｉｇｈ”のときデータ転送制御ユニットはＩＦＷＤＡＴＡ［６３：０］からデータを入力する。”Ｌｏｗ”のときデータ転送制御ユニットはＩＦＲＤＡＴＡ［６３：０］にデータを出力する。
・ＩＦＭＤＴＡＣＫ（ＩＮ）…データ転送制御ユニットがマスタ動作時、ＩＦＭＤＴＲＥＱに対する応答信号、Ｇバス／ＩＯバスインターフェースユニットから出力される。”Ｈｉｇｈ”のときＩＦＲＤＡＴＡ［６３：０）またはＩＦＷＤＡＴＡ［６３：０］が有効データであることを示す。
・ＰＲＩＯＲ［３：０］（ＯＵＴ）…データ転送制御ユニットがマスタ動作時、データ転送の優先度を示す。優先度は表８のように定義される。
【０１９１】
【表８】
2004046851.tif 000011
・ＭＴＳＩＺＥ［２：０］（ＯＵＴ）…データ転送制御ユニットがマスタ動作時、転送の単位サイズを示す。この単位サイズの転送中、ＩＦＭＤＴＲＥＱは”Ｈｉｇｈ”のアクティブ状態のままとなる。サイズは表９のように示される。
【０１９２】
【表９】
2004046851.tif 000012
・ＩＦＳＤＴＲＥＱ（ＩＮ）…データ転送制御ユニットがスレーブ動作時、Ｇバス／ＩＯバスインターフェースユニットからのデータ転送要求とデータおよびアドレスの有効状態をしめす。”Ｈｉｇｈ”でデータ転送要求とアドレスバスＩＦＳＡＤ［６：２］の有効状態を示す。
・ＩＦＳＡＤ［６：２］（ＩＮ）…データ転送制御ユニットがスレーブ動作時、目的アドレスを示すアドレスバス。ＩＦＳＤＴＲＥＱ信号がアクティブ状態”ＨＩＧＨ”で有効なアドレスを出力する。
・ＩＦＳＲＷ（ＩＮ）…データ転送制御ユニットがスレーブ動作時、データの入出力を示す信号。”Ｈｉｇｈ”のときデータ転送制御ユニットはＩＦＲＤＡＴＡ［６３：０］にデータを出力する。”Ｌｏｗ”のときデータ転送制御ユニットはＩＦＷＤＡＴＡ［６３：０］からデータを入力する。
・ＩＦＳＤＴＡＣＫ（ＯＵＴ）…データ転送制御ユニットがスレーブ動作時、ＩＦＳＤＴＲＥＱに対する応答信号。データ転送制御ユニットから出力される。”Ｈｉｇｈ”のときＩＦＲＤＡＴＡ［６３：０］またはＩＦＷＤＡＴＡ［６３：０］が有効データであることを示す。
・ＳＴＳＩＺＥ（ＩＮ）…データ転送制御ユニットがスレーブ動作時、Ｇバス／ＩＯバスインターフェースユニットからのデータ幅を示す。”Ｈｉｇｈ”でＩＦＲＤＡＴＡ［６３：０］またはＩＦＷＤＡＴＡ［６３：０］が有効となる。”Ｌｏｗ”でＩＦＲＤＡＴＡ［３１：０］またはＩＦＷＤＡＴＡ［３１：０］が有効となる。
【０１９３】
＜Ｇバス／ＩＯバスインターフェースユニット＞
図５０は、Ｇバス／ＩＯバスインターフェースユニット４３０１のブロック図である。Ｇバス／ＩＯバスインターフェースユニットは、コピーエンジン内部の内部バス（Ｌバス）と外部バス（Ｇバス／ＩＯバス）とのインターフェース部分である。このユニットは、他の機能ブロックで使えるように実現されるが、本実施の形態ではコピーエンジンが使用する。なお、コピーエンジンとは、スキャナ／プリンタコントローラ４０８及びそれにより制御されるスキャナとプリンタとを含めた総称である。Ｇバス／ＩＯバスインターフェースユニットは、大きくバスセレクタユニット，ＩＯバスコントローラ５００２，Ｇバスコントローラ５００３の三つの部分から構成される。
【０１９４】
バスセレクタユニット５００１は、コピーエンジンがＤＭＡマスタの時には、Ｌバスのバースト転送可能な転送量、優先度（緊急度）、転送先のアドレスと、さらに各バス（ＧバスとＩＯバス）の空き情報を基にして、動的にバスの選択を行い、対応するコントローラ（Ｇバスコントローラ５００３かＩＯバスコントローラ５００２）に、多少の前処理を施してＬバスを接続する。コピーエンジンがＤＭＡスレーブの時には、各バス（ＧバスとＩＯバス）からの要求を調停し、優先順位の高いバスとＬバスを接続する。
【０１９５】
Ｇバスコントローラ５００３とＩＯバスコントローラ５００２は、Ｌバスと対応するバス（ＧバスとＩＯバス）のバスの変換を行う。以下に、各部の説明をする。
【０１９６】
コピーエンジンは、Ｇバス／ＩＯバスの両方のバスに対してＤＭＡ可能なＤＭＡマスタであり、Ｇバス／ＩＯバスインターフェースユニット４３０１は、ＤＭＡ転送する際に使用するバスを決定する。従来のシステムでは、転送先（アドレス）によりバスを切り替えているが、各バスの転送速度や使用率等を考慮しなければ、システム全体として良い性能が得られない。
【０１９７】
バスセレクタユニット５００１は、Ｌバスのバースト転送可能な転送量、優先度（緊張度）、転送先のアドレスと、さらに各バス（ＧバスとＩＯバス）の空き情報を基にして、動的に効率的なバスの選択を行い、対応するコントローラ（Ｇバスコントローラ５００３かＩＯバスコントローラ５００２）に、多少の前処理を施して、Ｌバスを接続する。
【０１９８】
Ｇバスコントローラ５００３とＩＯバスコントローラ５００２は、Ｌバスと対応するバス（ＧバスとＩＯバス）同期ユニットヘ、書き込みアドレスと機能ブロック（ここでは、コピーエンジン）のＩＤを送り出す。以下に、各部の説明をする。
【０１９９】
（バスセレクタユニット）
図５１は、バスセレクタユニット５００１のブロック図である。その動作を以下に説明する。
【０２００】
［コピーエンジンのマスター時の動作］
コピーエンジンがマスターの場合は、主に、バスセレクタユニットのＬバスマスタシーケンサ５１０１で制御される。Ｌバスマスタシーケンサ５１０１は、コピーエンジンからＩＦＭＤＴＲＥＱ（マスターデータ要求信号）を受けることにより、コピーエンジンのマスター動作の要求を知る。
【０２０１】
コピーエンジンは、ＩＦＭＤＴＲＥＱアサートと同時に、ＩＦＭＡＤ［３１：２］（マスター転送アドレス信号）、ＭＴＳＩＺＥ［２：０］（マスター転送長信号）、ＩＦＭＲＷ（マスター・リード・ライト信号）をバスセレクタユニット５００１に出力する。転送アドレスはアドレスカウンタ５１０２に、転送長は長さカウンタ５１０３に、それぞれラッチされる。
【０２０２】
Ｌバスマスタシーケンサ５１０１は、外部バストの転送を開始する時点でＧバスを使用するか、ＩＯバスを使用するかを、アドレスカウンタ，　長さカウンタ，プライオリティ，各バスのビジー状態から決定する。アドレスカウンタの下位ビット５がすべて０ではない場合、あるいは長さカウンタが６４ビット×４未満の場合は、Ｇバスでの転送は不可能なので、ＩＯバスを選択する。それ以外は、高プライオリティかつＧバスが使用中かつＩＯバスが空いている、という場合を除き、Ｇバスを選択する。外部バスへの転送サイクルを終了した時点で、アドレスカウンタ５１０２と長さカウンタ５１０３を更新し、長さカウンタが０でなければ、上記の動作を繰り返す。バスの選択の基準を表１０に示す。
【０２０３】
【表１０】
2004046851.tif 000013
【０２０４】
コピーエンジンから外部バスへの転送では、Ｌバスマスタシーケンサ５１０１は、データＦＩＦＯ５１０４がフルでない限り、コピーエンジンへＩＦＭＤＴＡＣＫ信号をアサートし、転送データを要求し、得たデータをＦＩＦＯ５１０４に書き込む。また、データＦＩＦＯがエンプティでない限り、外部バスコントローラ（ＩＯバスコントローラ５００２かＧバスコントローラ５００３）へマスター転送要巨Ｍ号（ＬｂＭＲｅｑかＬｇＭＲｅｑ）をアサートし、データ転送を要求する。外部バスコントローラ（ＩＯバスコントローラかＧバスコントローラ）は、データＦＩＦＯ５１０４のデータを転送し、転送終了で、マスター転送通知信号（ＬｂＭＡｃｋかＬｇＭＡｃｋ）をアサートするので、Ｌバスマスタシーケンサ５１０１は、外部バスヘの転送の終了を知ることができる。
【０２０５】
外部バスからコピーエンジンへの転送では、Ｌバスマスタシーケンサ５１０１は、データＦＩＦＯがフルでない限り、外部バスコントローラ（ＩＯバスコントローラかＧバスコントローラ）へマスター転送要求信号（ＬｂＭＲｅｑかＬｇＭＲｅｑ）をアサートし、データ転送を要求し、データをデータＦＩＦＯに書き込み、データＦＩＦＯがエンプティでない限り、コピーエンジンへＩＦＭＤＴＡＣＫ信号をアサートし、転送データを要求し、得たデータＦＩＦＯのデータを書き込む。
【０２０６】
（ＩＯバスコントローラ）
図５２は、ＩＯバスコントローラ５００２のブロック図である。ＩＯバスコントローラ５００２は、ＬバスとＩＯバスのインターフェース部分である。
【０２０７】
ＩＯバスマスタシーケンサ５２０１は、ＩＯバスマスター時の動作を、ＩＯバススレーブシーケンサ５２０２は、ＩＯバススレーブの時の動作を、それぞれ制御する。
【０２０８】
［コピーエンジンのマスター時の動作］
バスセレクタユニット５００１からのＬｂＭＲｅｑ信号のアサートにより、データ転送は開始される。転送の方向は、ＬｂＭＲｅｑ信号と同時にアサートされるバスセレクタユニット５００１からのＬｂＭＲｄＮｏｔＷｒ信号により決まる。転送のサイズは、ＬｂＭＲｅｑ信号と同時にアサートされるバスセレクタユニット５００１からのＬｂＢｓｔＣｎｔ［１：０］信号により決まる。また、転送のアドレスはＬｂＭＲｅｑ信号と同時にアサートされるバスセレクタユニット５００１からのＬｂＭＡｄｄｒ［３１：２］信号により決まる。
【０２０９】
ＩＯバスからの転送（ＬｂＭＲｄＮｏｔＷｒ信号が０の時）は、読み込み用データＦＩＦＯがフルであれば（ｂＲＦｉｆｏＦｕｌｌがアサート）、フルでなくなるのを待ち、ＩＯバスマスタシーケンサは、決められたＩＯバスの転送を開始し、得たデータは、バスセレクタユニット５００１　のデータＦＩＦＯに書き込む。
【０２１０】
ＩＯバスヘの転送（ＬｂＭＲｄＮｏｔＷｒ信号が１の時）は、書き込み用データＦＩＦＯがエンプティであれば（ｂＷＦｉｆｏＥｍｐｔがアサート）、エンプティでなくなるのを待ち、ＩＯバスマスタシーケンサは、決められたＩＯバスの転送を開始し、バスセレクタユニット５００１のデータＦＩＦＯから得たデータをＩＯバス上に送る。
【０２１１】
（Ｇバスコントローラ）
図５３は、Ｇバスコントローラ５００３のブロック図である。Ｇバスコントローラ５００３は、ＬバスとＧバスのインターフェース部分である。
【０２１２】
Ｇバスマスタシーケンサ５３０１は、Ｇバスマスター時の動作を、Ｇバススレーブシーケンサ５３０２は、Ｇバススレーブの時の動作を、それぞれ制御する。
【０２１３】
［コピーエンジンのマスター時の動作］
バスセレクタユニット５００１からのＬｂＭＲｅｑ信号のアサートにより、データ転送は開始される。転送の方向は、ＬｂＭＲｅｑ信号と同時にアサートされるバスセレクタユニット５００１からのＬｂＭＲｄＮｏｔＷｒ信号により決まる。転送のサイズは、ＬｂＭＲｅｑ信号と同時にアサートされるバスセレクタユニット５００１からのＬｂＢｓｔＣｎｔ［１：０］信号により決まる。また、転送のアドレスはＬｂＭＲｅｑ信号と同時にアサートされるバスセレクタユニット５００１からのＬｂＭＡｄｄｒ［３１：２］信号により決まる。
【０２１４】
Ｇバスからの転送（ＬｇＭＲｄＮｏｔＷｒ信号が０の時）は、読み込み用データＦＩＦＯがフルであれば（ｇＲＦｉｆｏＦｕｌｌがアサート）フルでなくなるのを待ち、Ｇバスマスタシーケンサは、決められたＧバスの転送を開始し、得たデータは、バスセレクタユニット５００１　のデータＦＩＦＯに書き込む。
【０２１５】
Ｇバスヘの転送（ＬｇＭＲｄＮｏｔＷｒ信号が１の時）は、書き込み用データＦＩＦＯがエンプティであれば（ｂＷＦｉｆｏＥｍｐｔがアサート）、エンプティでなくなるのを待ち、Ｇバスマスタシーケンサは、決められたＧバスの転送を開始し、バスセレクタユニット５００１のデータＦＩＦＯから得たデータをＧバス上に送る。
【０２１６】
［２．１０．電力管理ユニット］
図５４は、電力管理ユニット４０９のブロック図である。ＤｏＥｎｇｉｎｅはＣＰＵを内蔵した大規模なＡＳＩＣである。このため、内部のロジックが全部同時に動作してしまうと、大量の熱を発生し、チップ自体が破壊されてしまう恐れがある。これを防ぐために、ＤｏＥｎｇｉｎｅは、ブロック毎の電力の管理、すなわちパワーマネジメントを行ない、更にチップ全体の消費電力量の監視を行なう。
【０２１７】
パワーマネージメントは、それぞれのブロックが各自個別に行なう。各ブロックの消費電力量の情報は、パワーマネージメントレベルとして、電力管理ユニット（ＰＭＵ）４０９に集められる。ＰＭＵ４０９では、各ブロックの消費電力量を合計し、その値が限界消費電力を超えないように、ＤｏＥｎｇｉｎｅの各ブロックの消費電力量を一括して監視する。
【０２１８】
＜動作＞
電力管理ブロックの動作は次の通りである。
・各ブロックは、４段階のパワーマネジメントレベルを持つ。
・ＰＭＵは、それぞれのレベルにおける消費電力の値をレジスタとして持つ。このレベル構成及び消費電力の値は、ＰＭ構成レジスタ５４０１に保持される。
・ＰＭＵは、各ブロックからパワーマネジメントレベルを２ビットのステータス信号として受け取り（後述）、レジスタ５４０１に設定された値と照合させて各ブロックの消費電力を知る。
・ＰＭＵは各ブロックの消費電力を加算器５４０３で加算し、ＤｏＥｎｇｉｎｅ全体の消費電力量をリアルタイムに計算する。
・算出された消費電力量は、構成レジスタ５４０１に設定された消費電力のリミット値（ＰＭリミット）と比較器５４０４で比較され、これを超えた場合には割込発生器５４０５から割り込み信号を発行する。
・このリミット値は２段階設定することができる。１段階目は、本当の限界から少し余裕を持たせた値を設定しておく。この値を超えると、通常の割込み信号が発行される。ソフトウェアはこれを受けて、新たにブロックを起動するような転送は始めないようにする。ただ、２段階目のリミット値に達しない範囲内では、ソフトウェアの管理の元で、新たなブロックを起動することができる。２段階目のリミット値は、デバイスが破壊される恐れのある値を設定しておく。万が一、この値を超えてしまった時には、ＮＭＩ（割込マスクが設定できない割り込み）を発行して安全のためにシステムを停止させる。
・割込み信号は、ＰＭＵの状態レジスタ５４０２をリードすることで解除される。この状態レジスタ５４０２をリードした時点からタイマカウントを始め、タイマがエクスパイアするまで消費電力量が戻らなければ、再び割込み信号を発行する。このタイマの値の設定はＰＭＵの構成レジスタ５４０１に設定される。
【０２１９】
＜各ブロックのパワーマネージメント＞
各ブロックのパワーマネージメント制御は、ブロック毎に自由に構成してよい。構成の例を示す。
【０２２０】
（構成例１）
この例では、内部ロジックへのクロックをオン／オフすることにより、パワーマネジメントを行なっているので、消費電力のレベルは２段階しか持っていない。このレベルをステータス信号として電力管理ユニット４０９に送る。図５５にバスエージェントのブロック図を示す。
・バスエージェント５５０１は、各ユニット毎の内部ロジック５５０２、アドレスをデコードするデコーダ５５０３、クロックコントロール部５５０４、クロックゲート５５０５を含む。
・デコーダ５５０３とクロックコントロール部５５０４は常に動作しており、パワーマネージメントコントロールとして、バスのアクティビティーの監視、内部ロジックへのクロックのゲーティングを行なっている。
【０２２１】
＜クロックコントロール＞
・バスエージェントは、バスのアクティビティーを検出し、クロックのオン／オフを自動で行なう。
・バスエージェントには、Ｓｌｅｅｐ，　Ｗａｋｅ　Ｕｐ，　Ｗａｉｔの３つのステートがある。
・Ｓｌｅｅｐはバスエージェントにアクティビティーがなく、クロックゲートクロックを停止させている状態である。
・Ｓｌｅｅｐの状態でも、デコーダ部５５０３、クロックコントロール部５５０４は動作しており、バスをモニタリングして、要求を待っている。
・デコーダ５５０３が自分のアドレスを検出すると、クロックゲート５５０５を開き、内部ロジックのクロックを動作させ、バスの要求に応える。ステートはＷａｋｅ　Ｕｐに移行する。また、この状態を電力管理ユニット４０９に通知する。・データ転送が終了すると、Ｗａｉｔステートに移行し、次の要求を待つ。この時クロックは動作したままである。要求があれば、Ｗａｋｅ　Ｕｐステートに戻り、転送を行なう。また、要求を待っている間はタイマによりカウントを行ない、要求がないままカウンタがタイムアップした場合は、Ｓｌｅｅｐステートへ移り、クロックを停止させる。この状態も電力管理ユニット４０９に通知される。
以上のようにして、消費電力が所定値を越えないように管理している。
【０２２２】
［その他の構成例］
図９及び図１０で示したキャッシュの動作手順は、図５６及び図５７のようなものであってもよい。図５６においては、ＭＣバスよりデータ転送が開始されると、その最初にＭＣバスで示されるｍＴＴｙｐｅ［６０：０］によってその転送をキャッシュオンで行うかオフで行うか判断される。ここでは、転送がバースト転送の時、そのバースト転送データ量がキャッシュの１ラインのデータ量より大か小かによって判断する。なお、キャッシュの１ラインは２５６ビット＝４バースト分である。
【０２２３】
図５６において、メモリコントローラは転送の開始でｍＴＴｙｐｅ［３：０］をチェックし、ｍＴＴｙｐｅが示すバースト長が１／２／４であれば、キャッシュオンで動作し、６／８／１６／２×１６／３×１６／４×１６の場合はキャッシュオフで動作する。キャッシュオンあるいはオフ後の動作は、図９及び図１０と同様である。
【０２２４】
また、図５８及び図５９のように、デバイスによってキャッシュのオンオフを切り替えることもできる。図５８において、メモリコントローラは転送の開始でｍＴＴｙｐｅ［６：４］をチェックすることにより転送要求デバイスを識別し、そのデバイスの転送要求をキャッシュオンで動作するか、オフで動作するかを判断するために、あらかじめ設定されている構成レジスタの値を参照し、キャッシュオンで動作するか、オフで動作するか決定する。キャッシュオンあるいはオフ後の動作は、図９及び図１０と同様である。構成レジスタの設定は、ハードウエア的に決定（変更不可）していも良いし、ソフトウエアで書換え可能にしてもよい。
【０２２５】
【発明の効果】
以上説明したように本発明においては、少なくとも４つのバスのひとつにはメモリが、ひとつにはプロセッサが、他のふたつにはそれぞれ入出力機器が接続され、切り替え手段により、プロセッサに接続されたバスと入出力機器に接続されたバスとからの接続要求が調停されて、メモリに接続されたバスと入出力機器に接続された一方のバスと、プロセッサに接続されたバスと前記入出力機器に接続された他方のバスとのそれぞれが、並列的に接続される。
【０２２６】
これにより、要求に応じて接続するバスを切り替え、最適なバスを選んでデータの転送を行うことができる。さらに、バスの構成を柔軟にし、複数のバスの接続を並列に行えるようにして、バスの使用効率を向上させることができる。
【０２２７】
また、少なくとも４つのバスからの接続要求に応じてバス間を接続して通信路を形成するバススイッチにおいて、同時動作できる互いに異なる２つのバス間を接続した２つの通信路を形成することができる。
【０２２８】
これにより、スイッチによって要求に応じて接続するバスを切り替え、最適なバスを選んでデータの転送を行うことができため、複数のバスの接続を並列に行えるようにして、バスの使用効率を向上させることができる。
【０２２９】
また、それぞれにバスマスタを備えた少なくとも２つのバスを介して、それぞれのバスのバスマスタから同一のあて先に書き込みを行う場合、もっとも早くバス要求を出したバスマスタ以外のバスマスタに対するバス使用権を停止させて、複数のバスのそれぞれに接続されたバスマスタについて、それらがバスの使用権を得た順にメモリにアクセスするように制御することができる。
【０２３０】
これにより、時間経過に伴う処理順序を適正に保つことができる。
【０２３１】
また、バスマスタが接続された、それぞれがバスの調停手段を有する少なくとも２つのバスの状態と、バスマスタから出されるバス要求の情報とを判定し、それらバスのうちいずれを使用するかを、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定する。
【０２３２】
これにより、各バスマスタが使用するバスを、バスの使用状況やバス要求の優先度、バスの性能、転送するデータがバスに適合するか否かなどを動的に決定して選択するため、バスの効率を向上させることができる。
【図面の簡単な説明】
【図１】ＤｏＥｎｇｉｎｅを用いた装置あるいはシステムの構成例の図である。
【図２】ＤｏＥｎｇｉｎｅを用いた装置あるいはシステムの構成例の図である。
【図３】ＤｏＥｎｇｉｎｅを用いた装置あるいはシステムの構成例の図である。
【図４】ＤｏＥｎｇｉｎｅのブロック図である
【図５】キャッシュメモリコントローラの３つのステートを示す図である。
【図６】インタラプトコントローラ４１０のブロック図である。
【図７】メモリコントローラ４０３のブロック図である。
【図８】キャッシュコントローラ７０６を中心とする詳細なブロック図である。
【図９】ＭＣバスよりメモリリード／ライト転送が要求された場合のキャッシュの動作を示すフローチャートである。
【図１０】ＭＣバスよりメモリリード／ライト転送が要求された場合のキャッシュの動作を示すフローチャートである。
【図１１】ＲＯＭ／ＲＡＭコントローラ７０７の構成を示す図である。
【図１２】ＣＰＵからのバースト読み出しのタイミングを示すタイミング図である。
【図１３】ＣＰＵからのバースト書き込みのタイミングを示すタイミング図である。
【図１４】Ｇバスデバイスからのバースト読み出しのタイミングを示すタイミング図である。
【図１５】Ｇバスデバイスからのバースト書き込みのタイミングを示すタイミング図である。
【図１６】メモリフロントキャッシュにヒットした場合のシングル読み出しのタイミングを示すタイミング図である。
【図１７】メモリフロントキャッシュにヒットしなかった場合のシングル読み出しのタイミングを示すタイミング図である。
【図１８】メモリフロントキャッシュにヒットした場合のシングル書き込みのタイミングを示すタイミング図である。
【図１９】メモリフロントキャッシュにヒットしなかった場合のシングル書き込みのタイミングを示すタイミング図である。
【図２０】システムバスブリッジ（ＳＢＢ）４０２のブロック図である。
【図２１】ＩＯバスインターフェースのブロック図である。
【図２２】Ｇバスインターフェース２００６のブロック図である。
【図２３】仮想メモリマップ、物理メモリマップ、Ｇバスのアドレス空間でのメモリマップ、ＩＯバスのアドレス空間でのメモリマップの図である。
【図２４】レジスタ等を含む図２３における斜線部の５１２メガバイトを示すマップの図である。
【図２５】アドレススイッチ２００３のブロック図である。
【図２６】データスイッチ２００４のブロック図である。
【図２７】Ｇバスからの書き込み／読み出しサイクルのタイミング図である。
【図２８】Ｇバスのバースト停止サイクルのタイミング図である。
【図２９】Ｇバスのトランザクション停止サイクルのタイミング図である。
【図３０】Ｇバスのトランザクション停止サイクルのタイミング図である。
【図３１】Ｇバスのトランザクション停止サイクルのタイミング図である。
【図３２】Ｇバスのトランザクション停止サイクルのタイミング図である。
【図３３】ＰＣＩバスインターフェース４１６のブロック図である。
【図３４】Ｇバスアービタ（ＧＢＡ）４０６のブロック図である。
【図３５】ＤｏＥｎｇｉｎｅ４００内におけるＧバス４０４を中心とする、Ｇバス上のバスマスタによるＤＭＡに係るブロック図である。
【図３６】連続してバスを使用する回数が、バスマスタ１〜４のすべてについて１に設定されている場合の公平アービトレーションモード（フェアモード）の例を示す図である。
【図３７】連続してバスを使用する回数が、バスマスタ１についてのみ２であり、他のバスマスタは１に設定されている場合の公平アービトレーションモードの例を示す図である。
【図３８】連続してバスを使用する回数がそれぞれ１ずつであり、バスマスタ１が優先バスマスタと設定されている場合の優先アービトレーションモードの例を示す図である。
【図３９】バスマスタ１からのバス要求により、バスマスタ４のバス要求が許可されているにもかかわらず中断された例を示す図である。
【図４０】ＩＯバスアービタ４０７のブロック図である。
【図４１】同期ユニット４００１のブロック図である。
【図４２】同期ユニット内の一つコンペアユニットの図である。
【図４３】スキャナ／プリンタコントローラ４０８のブロック図である。
【図４４】スキャナ／ビデオ同期制御ユニット４３０６のブロック図である。
【図４５】プリンタ／ビデオ同期制御ユニット４３０７のブロック図である。
【図４６】スキャナＦＩＦＯコントローラのブロック図である。
【図４７】プリンタＦＩＦＯコントローラ４３１２のブロック図である。
【図４８】データ転送制御ユニット４３０２のブロック図である。
【図４９】チェインコントローラ４８０１のブロック図である。
【図５０】Ｇバス／ＩＯバスインターフェースユニット４３０１のブロック図である。
【図５１】バスセレクタユニット５００１のブロック図である。
【図５２】ＩＯバスコントローラ５００２のブロック図である。
【図５３】Ｇバスコントローラ５００３のブロック図である。
【図５４】電力管理ユニット４０９のブロック図である。
【図５５】バスエージェントのブロック図である。
【図５６】ＭＣバスよりメモリリード／ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図５７】ＭＣバスよりメモリリード／ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図５８】ＭＣバスよりメモリリード／ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図５９】ＭＣバスよりメモリリード／ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図１】
2004046851.tif 000014
【図２】
2004046851.tif 000015
【図３】
2004046851.tif 000016
【図４】
2004046851.tif 000017
【図５】
2004046851.tif 000018
【図６】
2004046851.tif 000019
【図７】
2004046851.tif 000020
【図８】
2004046851.tif 000021
【図９】
2004046851.tif 000022
【図１０】
2004046851.tif 000023
【図１１】
2004046851.tif 000024
【図１２】
2004046851.tif 000025
【図１３】
2004046851.tif 000026
【図１４】
2004046851.tif 000027
【図１５】
2004046851.tif 000028
【図１６】
2004046851.tif 000029
【図１７】
2004046851.tif 000030
【図１８】
2004046851.tif 000031
【図１９】
2004046851.tif 000032
【図２０】
2004046851.tif 000033
【図２１】
2004046851.tif 000034
【図２２】
2004046851.tif 000035
【図２３】
2004046851.tif 000036
【図２４】
2004046851.tif 000037
【図２５】
2004046851.tif 000038
【図２６】
2004046851.tif 000039
【図２７】
2004046851.tif 000040
【図２８】
2004046851.tif 000041
【図２９】
2004046851.tif 000042
【図３０】
2004046851.tif 000043
【図３１】
2004046851.tif 000044
【図３２】
2004046851.tif 000045
【図３３】
2004046851.tif 000046
【図３４】
2004046851.tif 000047
【図３５】
2004046851.tif 000048
【図３６】
2004046851.tif 000049
【図３７】
2004046851.tif 000050
【図３８】
2004046851.tif 000051
【図３９】
2004046851.tif 000052
【図４０】
2004046851.tif 000053
【図４１】
2004046851.tif 000054
【図４２】
2004046851.tif 000055
【図４３】
2004046851.tif 000056
【図４４】
2004046851.tif 000057
【図４５】
2004046851.tif 000058
【図４６】
2004046851.tif 000059
【図４７】
2004046851.tif 000060
【図４８】
2004046851.tif 000061
【図４９】
2004046851.tif 000062
【図５０】
2004046851.tif 000063
【図５１】
2004046851.tif 000064
【図５２】
2004046851.tif 000065
【図５３】
2004046851.tif 000066
【図５４】
2004046851.tif 000067
【図５５】
2004046851.tif 000068
【図５６】
2004046851.tif 000069
【図５７】
2004046851.tif 000070
【図５８】
2004046851.tif 000071
【図５９】
2004046851.tif 000072