JP2004046851A - バス管理装置及びそれを有する複合機器の制御装置 - Google Patents
バス管理装置及びそれを有する複合機器の制御装置 Download PDFInfo
- Publication number
- JP2004046851A JP2004046851A JP2003180262A JP2003180262A JP2004046851A JP 2004046851 A JP2004046851 A JP 2004046851A JP 2003180262 A JP2003180262 A JP 2003180262A JP 2003180262 A JP2003180262 A JP 2003180262A JP 2004046851 A JP2004046851 A JP 2004046851A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- master
- data
- transfer
- request
- 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
Images
Landscapes
- Bus Control (AREA)
- Memory System (AREA)
Abstract
【解決手段】システムバスブリッジ(SSB)402には、CPU401からのPバス、システムメモリからのMCバス、入出力機器が接続されたIOバス、スキャナプリンタコントローラ408の画像データを転送するGバスが接続され、SSB402は、マスタとしてPバス、Gバス、IOバスのいずれか、スレーブとしてMCバス、IOバスのいずれかをマスタの要求に応じて接続する。この際、PバスとIOバス、GバスとMCバスは、並列に接続することができる。そのため、CPUによる入出力機器の使用と並行して、スキャナプリンタコントローラによるメモリのアクセスを行うことができる。また、使用するバスを決定するためには、バスマスタから出されるバス要求の情報を判定し、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定する。
【選択図】図4
Description
【発明の属する技術分野】
本発明は、スキャナ等の画像入力装置と、プリンタ等の画像出力装置とを効率的に制御する複合機器の制御装置に関する。
【0002】
【従来の技術】
従来、スキャナなどの画像入力装置と、プリンタなどの画像出力装置を組み合わせた、複写機やファクシミリ、あるいはそれらを単体として備えたコンピュータシステムなどが実用化されている。こういったシステムでは、画像データを扱うために、膨大な量のデータを効率的に処理する必要がある。
【0003】
【発明が解決しようとする課題】
こういったシステムにおいては、データ転送のために複数のバスマスタによるDMA転送が用いられる。複数のバスマスタが順次に処理を行うことが必要な場合、例えば、メモリ上のデータに対して、処理A(バスマスタ1)を行った後、処理B(バスマスタ2)を行い、その処理後のデータをバスマスタ4に送るといった一連の処理を考える。
【0004】
通常このような処理を行う場合、大量のデータを扱うために、単一のバスではバスの転送能力がボトルネックとなっていた。これを解消するために、バスを2重化して転送能力の増強を図ったシステムもあった。
【0005】
しかしながら、複数のバスを有するシステムであっても、バスの構成が柔軟でなく、大量のデータを転送する場合などには、十分な転送能力が引き出されてはいなかったという第1の問題点があった。
【0006】
また、従来のバスは単一であるのが普通であり、複数のバスマスタが同一のメモリドレスに書き込みを行おうとした場合、バス使用権を獲得した順にメモリへデータを書き込むことが保証できた。
【0007】
しかしながら、複数のバスが存在し、これらのバスのバス調停(アービトレーション)と、複数のバスのどれかひとつのバスをメモリへ接続することを独立に制御するシステム構成では、複数のバスの接続された複数のバスマスタが同時に同一のメモリ空間へ書き込みを行う可能性があり、書き込みの順序は、バスの調停によりバスの使用権を得た順序とはならない可能性があるという第2の問題点があった。以上述べたように、本発明は、膨大な量のデータを効率的に処理し、全体としての処理速度を向上させるバス管理装置及びそれを有する複合機器の制御装置を提供することを第1の目的とする。
【0008】
また、本発明は上記第2の問題に鑑みてなされたもので、バスの構成を柔軟にし、最適なバスを選んでデータの転送を行えるバス管理装置及びそれを有する複合機器の制御装置を提供することを第2の目的とする。
【0009】
また、本発明は上記第3の問題に鑑みてなされたもので、複数のバスのそれぞれに接続されたバスマスタからのバスの使用権を得た順にメモリにアクセスできるバス管理装置及びそれを有する複合機器の制御装置を提供することを第3の目的とする。
【0010】
【課題を解決するための手段】
上記の問題を解決するために、本発明のバス管理装置は次のような構成からなる。
【0011】
少なくとも4つのバスと、前記バスに接続されたバスマスタと、前記バス同士の接続を、前記バスのそれぞれに接続されたバスマスタのバスの要求に応じて切り替える切り替え手段と、前記少なくとも4つのバスの内のひとつにはメモリが、他のバスにはそれぞれ少なくとも1つのバスマスタが接続され、前記他のバスには、プロセッサに接続されたバスと、入出力機器に接続された少なくとも2つのバスとを含み、前記切り替え手段は、プロセッサに接続されたバスと入出力機器に接続されたバスとからの接続要求を調停し、前記切り替え手段は、前記メモリに接続されたバスと前記入出力機器に接続された一方のバスと、前記プロセッサに接続されたバスと前記入出力機器に接続された他方のバスとのそれぞれを、並列的に接続することを特徴とする。
【0012】
さらに好ましくは、前記切り替え手段は、前記プロセッサからのメモリあるいは入出力に対する接続要求と、前記入出力バスそれぞれからメモリに対する接続要求とを調停し、バス同士の接続を切り替える。
【0013】
さらに好ましくは、前記入出力機器は画像データの入力及び出力を行う画像入出力機器であり、前記入出力機器を制御する制御部を更に備え、該制御部は、前記入出力機器に接続された2つのバスに接続され、選択的にいずれかを用いる。
【0014】
あるいは、少なくとも4つのバスに各々接続されるバスインターフェースと、前記バスからの接続要求に応じて2つの前記バス間を接続して通信路を形成するバススイッチ手段と、前記バスから受信した接続要求を調停する調停手段とを備え、前記スイッチ手段は、同時動作できる互いに異なる2つのバス間を接続した2つの通信路を形成することを特徴とする。
【0015】
さらに好ましくは、前記バスインターフェースは、メモリに接続されたバスに接続される第1のバスインターフェースと、プロセッサに接続されたバスに接続される第2のバスインターフェースと、入出力機器に接続された少なくとも2つの第3、第4のバスインターフェースを含む。
【0016】
あるいは、それぞれにバスマスタを備えた少なくとも2つのバスと、前記バスを介してアクセスされるメモリと、前記バスそれぞれに接続され、当該バスのバスマスタによるバス要求を調停し、そのいずれかにバス使用権を付与する調停手段と、前記バスそれぞれについてバス使用権を付与された複数のバスマスタが同一のあて先に書き込みを行う場合、それらバスマスタのうち、もっとも早くバス要求を出したバスマスタ以外のバスマスタに対するバス使用権を停止させるよう、前記調停手段に対して通知するバス同期手段とを備える。
【0017】
さらに好ましくは、前記バス同期手段は、前記各バスのバスマスタがバス要求を出した時刻を記憶し、バス要求とともに指定されたアドレスを比較して一致した場合には前記記憶された時刻を比較し、もっとも速い時刻のバス要求でないバス要求を出したバスマスタを停止させる。
【0018】
あるいは、それぞれがバスの調停手段を有する少なくとも2つのバスと、前記バスに接続されたバスマスタと、前記バスの状態と、前記バスマスタから出されるバス要求の情報とを判定し、前記バスのうちいずれを使用するか決定する決定手段とを備え、前記バス要求の情報には、バス要求の優先度とデータの転送先と転送サイズとを含み、前記バスの状態には、各バスの使用状態を含み、前記決定手段は、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定する。
【0019】
あるいは、本発明の複合機器の制御装置は次のような構成からなる。すなわち、上記いずれかに記載のバス管理装置を備え、該バス管理装置により、画像入力装置及び画像出力装置が接続されたバスを管理する。
【0020】
【発明の実施の形態】
次に本発明の実施の形態として、プロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナー/プリンタコントローラ、PCIインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである”DoEngine”を説明する。
【0021】
[1.DoEngine概要]
DoEngineは、MIPSテクノロジー社のR4000プロセッサとコンパチブルなプロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナー/プリンタコントローラ、PCIインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである。高速並列動作、ビルディングブロック手法を採用し実装される。
【0022】
プロセッサシェル(プロセッサコアを含むプロセッサ周辺回路の総称)内には最大でインストラクション、データそれぞれ16Kバイトの計32Kバイトのキャッシュメモリ、FPU(浮動小数点演算ユニット)、MMU(メモリ管理ユニット)、ユーザー定義可能なコプロセッサなどを内蔵することが可能である。
【0023】
PCIバスインターフェースを有するので、PCIバススロットを有するコンピュータシステムと共に用いることができる。また、PCIサテライト構成に加え、PCIホストバスブリッジ構成にてPCIバスコンフィギュレーションを発行することが可能であり、安価なPCI周辺デバイスと組み合わせることにより、マルチファンクションペリフェラル(複合機能周辺機器)のメインエンジンとして使用することも可能である。さらにPCIバスインターフェースを有するレンダリングエンジン、圧縮・伸長エンジンと組み合わせることも可能である。
【0024】
チップ内部に汎用IOコアを接続するIOバス、及び、画像データ転送に最適化したグラフィックバス(Gバス:Graphics Bus)の2系統の独立したバスを有し、メモリ、プロセッサとこれらのバスをクロスバスイッチを介して接続することにより、マルチファンクションシステムにおける同時動作に必須の、並列性の高い高速データ転送を実現している。
【0025】
メモリには、画像データに代表される、連続したデータ列のアクセスに対し、最高のコストパフォーマンスを有するシンクロナスDRAM(SDRAM)をサポートし、SDRAMのバーストアクセス高速データ転送のメリットを享受できない小さなデータ単位でのランダムアクセスにおける性能低下を最小に抑えるために、8Kバイトの2ウェイセットアソシアティブ・メモリフロントキャッシュをメモリコントローラ内に備える。メモリフロントキャッシュは、すべてのメモリライトに対するバススヌープが難しい、クロスバスイッチを採用したシステム構成においても、複雑な機構なしに、キャッシュメモリによる高性能化が達成出来る方式である。また、リアルタイムデータ転送(機器制御)が可能な、プリンタ及びスキャナーとのデータインターフェース(Video Interface)を有し、さらにハードウェアによる、機器間同期のサポート及び画像処理を行う事により、スキャナ、プリンタ分離型の構成においても、高品質で高速なコピー動作の実現が可能な構成となっている。
【0026】
なお、DoEngineは、コアが3.3Vで動作し、IOは5Vトレラントである。
【0027】
図1及び図2,図3は、DoEngineを用いた装置あるいはシステムの構成例を示している。図1は分離構成型であり、パーソナルコンピュータ102には、それが備えるPCIインターフェースを介してDoEngineを備えたローカルボード101が装着される。ローカルボード101にはDoEngineのほか、後述するメモリバスを介してDoEngineと接続されたメモリと、色処理回路(チップ)が設けられている。このローカルボード101を介して、高速スキャナ103とカラー/モノクロプリンタ104とがパーソナルコンピュータ102に接続される。この構成により、パーソナルコンピュータの制御のもとで、ローカルボード101により、スキャナ103から入力された画像情報を処理し、プリンタ104から出力させることができる。
【0028】
また、図2及び図3はスキャナ203とプリンタ202とを一体に組み込んだ例で、図2は通常の複写機に類する構成を、図3(a)はファクシミリ装置などの構成を示している。図3(b)は、図3(a)をコントロールするコンピュータを示している。
【0029】
これらのうち、図1,2は、PCIインターフェースを介して接続された外部のCPUによりDoEngineが制御されるというスレーブモードで使用されている例であり、図3は、DoEngineのCPUが主体となり、PCIインターフェースを介して接続されたデバイスを制御するマスタモードで使用されている例である。
【0030】
表1として、DoEngineの仕様を示す。外部インターフェースとして、PCI,メモリバス,ビデオ,汎用入出力,IEEE1284,RS232C,100baseT/10baseT,LCDパネル及びキーを備えるが、更にUSBを有していてもよい。内蔵ブロックとして、CPUコアに加えて、1次キャッシュ,キャッシュ付きメモリコントローラ,コピーエンジン,IOバスアービタ,グラフィックバスアービタなどを備えている。また、DMAコントローラはチャネル数が5であり、グラフィックバス,IOバスともにアービトレーションは、優先度付きの先着順処理方式で行われる。
【0031】
【表1】
【0032】
[2.DoEngineの構成及び動作]
本章では、DoEngine の総論に加え、各機能ブロック毎のブロック図、概要、詳細、コアインターフェース、タイミング図などを解説する。
【0033】
[2.1.DoEngineのチップ構成]
図4として、DoEngineのブロック図を示す。DoEngine400は次世代複合機能周辺機器(システム)(MFP:Multi Function Peripheral or MFS:Multi Function System)の主たるコントローラとして設計、開発された。
【0034】
CPU(プロセッサコア)401として、MIPSテクノロジー社のMIPSR4000コアを採用する。プロセッサコア401内には、8Kバイトずつのインストラクション,データのキャッシュメモリ、MMUなどが実装される。プロセッサコア401は、64ビットのプロセッサバス(Pバス)を介して、システム・バス・ブリッジ(SBB)402に接続される。SBB402は4×4の64ビットクロスバスイッチであり、プロセッサコア401の他に、キャッシュメモリを備えたSDRAMやROMを制御するメモリコントローラ403と専用のローカルバス(MCバス)で接続されており、さらに、グラフィックバスであるGバス404、IOバスであるIOバス405と接続され、全部で4つのバスに接続される。システムバスブリッジ402は、これら4モジュール間を、可能な限り、同時平行接続を確保することができるように設計されている。
【0035】
Gバス404はGバスアービタ(GBA)406により協調制御されており、スキャナやプリンタと接続するためのスキャナ/プリンタコントローラ(SPC)408に接続される。また、IOバス405は、IOバスアービタ(BBA)407により協調制御されており、SPC408のほか、電力管理ユニット(PMU)409,インタラプトコントローラ(IC)410,UARTを用いたシリアルインターフェースコントローラ(SIC)411,USBコントローラ412,IEEE1284を用いたパラレルインターフェースコントローラ(PIC)413,イーサネット(登録商標)を用いたLANコントローラ(LANC)414,LCDパネル,キー,汎用入出力コントローラ(PC)415,PCIバスインターフェース(PCIC)416にも接続されている。
【0036】
[2.2.プロセッサシェル]
プロセッサシェルとは、プロセッサコアに加えMMU(Memory Management Unit)、命令キャッシュ、データキャッシュ、ライトバックバッファ及び掛け算ユニットを含んだブロックを指す。
<キャッシュメモリ>
図5に示したように、キャッシュメモリコントローラは、無効(Invalid),有効かつクリーン(Valid Clean:キャッシュが更新されていない),有効かつダーティ(Valid Dirty:キャッシュが更新されている)の3つのステートキャッシュを管理する。この状態に応じて、キャッシュは制御される。
【0037】
[2.3.インタラプトコントローラ]
図6にインタラプトコントローラ410のブロック図を示す。インタラプトコントローラ410は、IOバスインターフェース605を介してIOバス405に接続され、DoEngineチップ内の各機能ブロック及び、チップ外部からのインタラプトを集積し、CPUコア401がサポートする、6レベルの外部インタラプト及び、ノンマスカブルインタラプト(NMI)に再分配する。各機能ブロックとは、電力管理ユニット409,シリアルインターフェースコントローラ411,USBコントローラ412,パラレルインターフェースコントローラ413,イーサネット(登録商標)コントローラ414,汎用IOコントローラ415,PCIインターフェースコントローラ416,スキャナ/プリンタコントローラ408などである。
【0038】
この際、ソフトウェアコンフィギュレーション可能なマスクレジスタ(Int Mask Logic 0 − 5)602により、各要因毎に割り込みをマスクをすることが可能である。また、外部インタラプト入力は、選択的エッジ検出回路601により、信号線ごとに、エッジセンス/レベルセンスを選択することが出来る。要因レジスタ(Detect and set Cause Reg 0 − 5)603は、各レベルごとに、どのインタラプトがアサートされているかを示すとともに、ライト動作を行うことで、レベルごとにクリアを行う事が出来る。
【0039】
各レベルの割込み信号は、各レベル毎に少なくともひとつの割り込みがあれば割込み信号を出力すべく、論理和回路604により論理和として出力される。なお、各レベル内での複数要因間のレベル付けはソフトウェアにて行う。
【0040】
[2.4.メモリコントローラ]
図7は、メモリコントローラ403のブロック図である。メモリコントローラ403は、メモリコントローラ専用のローカルバスであるMCバスにMCバスインターフェース701を介して接続され、最大1ギガバイトのシンクロナスDRAM(SDRAM)と、32メガバイトのフラッシュROMあるいはROMをサポートする。SDRAMの特徴であるバースト転送時の高速性を活かすため、64(16×4)バースト転送を実現する。また、CPUやIOバスよりの連続したアドレスのシングル転送を考慮し、メモリコントローラ内にSRAM(メモリフロントキャッシュ)702を内蔵し、SDRAMへ直接シングル転送を行うことを可能な限り回避して転送効率を向上させる。メモリコントローラ−SDRAM間のデータバス幅は、信号ramData及びramParをあわせて72ビット(このうち8ビットの信号ramParはパリティ)、フラッシュROM間のデータバスfntromData,prgromDataの幅は32ビットとする。
【0041】
[2.4.2.構成及び動作]
メモリコントローラの各部はこれから説明するような構成となっている。
<MCバスインターフェース(701)>
MCバスは、SBB402−メモリコントローラ403間の専用のバスであり、またSBB内部の基本バスとして用いられている。
【0042】
CPU401とバスブリッジ402とを接続する専用バスPBusのバースト転送が4バーストのみ規定しているのに対し、MCバスにおいては16バースト×4までの転送を追加している。このためにバースト長を示す信号としてmTType[6:0]を新たに定義した。
(MCバス信号の定義)
MCバスの各信号は下記の通り定義される。
・mClk(出力) …MCバスクロック:
・mAddr[31:0](出力)…MCバスアドレス:
32ビットのアドレスバスであり、mTs_Lがアサートされた時点からmBRdy_Lがアサートされるまで保持される。
・mDataOut[63:0](出力) …MCバスデータ出力:
64ビットの出力データバスであり、mDataOe_Lがアサートされている時のみ有効である。
・mDataOe_L(出力)…MCバスデータ出力イネーブル:
mDataOut[63:0]が有効であることを示す。またその転送がWriteであることを示す。
・mDataIn[63:0](入力)…MCバスデータ入力:
64ビットの入力データバスであり、mBRdy_LがアサートされているmClkの立ち上がりでサンプリングされる。
・mTs_L(出力)…MCバストランザクション開始ストローブ:
転送が開始したことを示す。転送の最初の1クロックの間だけアサートされる。転送が1クロックで終了し、次の転送がすぐに始められるのならばmTs_Lは引続きアサートされたままになる。
・mTType[6:0](出力)…MCバストランザクションタイプ:
MCバス上の転送のタイプを示す。シングル転送時はその転送の間、バースト転送時は最初の転送(beat)の間保持される。上位3ビットがソース(マスタ)をあらわし、下位ビットがシングル/バースト長をあらわす。タイプには次のようなものがある。
mTType[6:4]信号源
−−−−−−−−−−−−−−−−−
001 CPU
010 IOバス
100 Gバス
−−−−−−−−−−−−−−−−−
mTType[3:0]シングル/バースト長
−−−−−−−−−−−−−−−−−
1xxx シングル(1−8bytes)
0001 2バースト
0010 4バースト
0011 6バースト
0100 8バースト
0101 16バースト
0110 2×16バースト
0111 3×16バースト
0000 4×16バースト
・mBE_L[7:0](出力)…MCバストランザクションバイトイネーブル:
シングル転送時、64ビットデータバス上の有効なバイトレーンを示す。バースト転送時はWrite時のみ有効であり、Read時は無視される。
・mBRdy_L(入力) …MCバスレディ:
現在の転送(beat)が終了したことを示す。
・mTPW_L(出力)…次トランザクションがIn−page write(ページ内書き込み):
次の転送が同じページ(同じRowアドレス)のWriteであることを示し、最大4個までのWriteを続けることができる。ページサイズはあらかじめコンフィギュレーションレジスタに設定しておく。
・mBPWA_L(入力)…バスのページ内書き込み許可:
MCバススレーブ(メモリコントローラ)がページ内書き込みトランザクションを許可するかどうかを示し、mBRdy_Lと同じクロックでサンプリングされる。この時mBPWA_LがディアサートされていればmTPW_Lは無意味となる。
・mBRty_L(入力)…バスリトライ:
MCバススレーブ(メモリコントローラ)がアクセスを未実行のまま終了させる場合にアサートし、少なくとも1サイクル以上のアイドルの後に再試行しなければならないことを示す。(もしmBRdy_LとmBRty_Lが同時にアサートされた場合は、mBRty_Lが優先される。)
・mBerr_L(入力)…バスエラー:
パリティエラーやその他のバスエラーが発生した場合にアサートされる。
【0043】
なお、上述した入出力の別はSBBからみての定義である。
(MCバストランザクション)
MCバス上のトランザクションとしては、以下のトランザクションをサポートする。
(1)ベーシックトランザクション(1,2,3,4,8バイト Read/Write):
mBE_L[7:0]信号に従い、1,2,3,4,8バイトのシングルトランザクションをサポートする。
(2)バーストトランザクション:
(CPUからの)4−ダブルワードバーストまでのトランザクションをサポートする。
(3)Gバスからの16−ダブルワードバースト×4までのトランザクションをサポートする。
(4)In−page write(ページ内書き込み)トランザクション:
mTPW_Lで示される同一ページ内の書き込みに関して、連続的なWriteアクセスをサポートする。
(5)バスリトライ:
メモリコントローラ内の制限によりメモリアクセスができない場合は、mBRty_L信号をアサートし、バスリトライを通知する。
<SDRAMコントローラ(705)>
メモリコントローラ403は、次のような構成を有するSDRAMを以下のように制御する。
【0044】
(DRAM構成)
DRAMの構成としては、x4,x8,x16ビットタイプの16/64メガビットSDRAMを64ビットデータバスで8バンク制御することができる。
【0045】
【表2】
【0046】
(DRAMアドレスビット構成)
DRAMのアドレスビットの割付けについては、64ビットSDRAMの場合にはMA[13:0]を、16ビットSDRAMの場合にはMA[11:0]を使用する。
【0047】
【表3】
(SDRAMプログラマブル構成(モードレジスタ))
SDRAMは内部にモードレジスタを持ち、モードレジスタ設定コマンドを用いて下記の項目を設定する。
(1)バースト長:
バースト長は、1,2,4,8,フルページのいずれかが設定可能であるが、CPUからのバースト転送長が4であることから、バースト長4が最適である。Gバスからの16バースト以上の転送は、Read/Writeコマンド(オートプリチャージ無し)を連続して発行することにより実現する。
(2)ラップタイプ(Wrap Type):
バースト転送時のアドレスのインクリメント順を設定する。「シーケンシャル」または「インターリーブ」のどちらかが設定可能である。
(3)CASレーテンシ:
CASレーテンシは、1,2,3のいずれかが設定可能であり、使用するSDRAMのグレードと動作クロックにより決定される。
【0048】
(SDRAMコマンド)
SDRAMに対して以下のコマンドをサポートする。各コマンドの詳細は、SDRAMデータブックに記載されている。
・モードレジスタ設定コマンド
・アクティブコマンド
・プリチャージコマンド
・ライトコマンド
・リードコマンド
・CBR(Auto)リフレッシュコマンド
・セルフリフレッシュ開始コマンド
・バーストストップコマンド
・NOPコマンド
(SDRAMリフレッシュ)
SDRAMは、2048サイクル/32ms(4096/64ms)であるので、16,625nsおきにCBRリフレッシュコマンドを発行する。メモリコントローラは設定可能なリフレッシュカウンタを持ち、自動的にCBRリフレッシュコマンドを発行する。Gバスからの16−バースト×nの転送中は、リフレッシュ要求を受け付けない。したがって、リフレッシュカウンタは16−バースト×4転送の時間だけ余裕を持った値を設定しなければならない。また、セルフリフレッシュをサポートする。このコマンドを発行すると、パワーダウンモード(ramclke_L=Low)時にセルフリフレッシュが続行される。
【0049】
(SDRAM初期化)
メモリコントローラはパワーオンリセット後、SDRAMに対して以下の初期化を行なう。すなわち、電源投入後100μsのポーズ期間をおいて、
(1)プリチャージウコマンドを用いて全バンクをプリチャージする、
(2)SDRAMのモードレジスタを設定する、
(3)オートリフレッシュコマンドを用いて、リフレッシュを8回行う。
【0050】
<フラッシュROMコントローラ(704)>
フラッシュROMコントローラ704は、romAddr[23:2]のアドレス信号と4個のチップセレクト(romCs_L[3:0])信号をサポートする。アドレス信号romAddr2〜romAddr9はパリティ信号ramPar0〜ramPar7とマルチプレクスされ、アドレス信号romAddr10〜romAddr23は、DRAMアドレスramAddr0〜ramAddr13とマルチプレクスされている。
【0051】
<SRAMコントロール(メモリフロントキャッシュ)>
メインメモリとして用いられるSDRAMは、バースト転送は非常に高速であるが、シングル転送においてはその高速性が発揮できない。そこで、メモリコントローラ内にメモリフロントのキャッシュを実装し、シングル転送の高速化をはかる。メモリフロントキャッシュは、キャッシュコントローラ706とSRAM702より構成される。MCバスに定義されたmTType[6:0]信号により、その転送マスターと転送長を知ることができるので、各マスターごと、あるいは転送長ごとにキャッシュのオン/オフが設定可能である。キャッシュの方式は、次の通りである。なお、以下、特に断らない限り、単なるキャッシュあるいはキャッシュメモリという呼称は、プロセッサコアに内蔵されたキャッシュではなく、メモリコントローラが内蔵するメモリフロントキャッシュを指すものとする。
・2ウェイセットアソシアティブ
・8kバイトデータRAM
・128 x 21 x 2 タグRAM
・LRU(Least Recently Used)アルゴリズム
・ライトスルー
・No Write Allocate
次にキャッシュコントローラ706を中心とする詳細なブロック図を図8に示す。
【0052】
(キャッシュの動作)
ここで、MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作を図8のブロック図と、図9及び図10に示すフローチャートを用いて説明する。
【0053】
MCバスよりデータ転送が開始されると、その転送の最初にMCバス上で示されるmTType[6:0]によって、その転送がキャッシュオンでおこなうか、オフでおこなうかの判断がおこなわれる。この説明では、転送がシングル転送であればオン、バースト転送であればオフと判断することにする(ステップS901)。すなわち、mTType(3)が”1”hであれば、シングル転送をあらわすのでキャッシュオンで、”0”hであればバースト転送をあらわすのでキャッシュオフで転送を行う。
【0054】
シングル転送(キャッシュオン)の場合、アドレスlmaddr[31:0]が与えられると、lmaddr[11:5]がインデックスとしてb1_tag_ram801,b2_tag_ram802,b1_data_ram702−a,b2_data_ram702−b,lru803ヘ与えられ、それぞれのブロックから、入力されたインデックスに対応するバリッドビット”v”及びb1_tag_addr,バリッドビット”v”及びb2_tag_addr,b1_out_data,b2_out_data,lru_inがそれぞれ出力される(ステップS902)。
【0055】
b1_tag_ram801とb2_tag_ram802より出力されたb1_tag_addrとb2_tag_addrがそれぞれb1_comparater804,b2_comparater805でアドレスlmaddr[31:12]と比較され、その結果、すなわちヒットか否かがb1_hit_miss_L,b2_hit_miss_L信号によりキャッシュコントローラ706へ知らされ、判定される(ステップS903)。
【0056】
ここでヒットであれば、リードかライトかが判定される(ステップS904)。ヒットであるとは、b1_tag_addrとb2_tag_addrのいずれかにアドレスlmaddr[31:12]と一致するものがある場合である。ヒットかつリードの場合にはつぎのようになる。すなわち、b1がヒットであり、要求された転送がリードであった場合は、すでに読み出されているb1_out_dataとb2_out_dataのうちb1_out_dataを選択し、lmaddr[4:3]で示される8バイトのデータをMCバスへ出力する(ステップS905)。同時にそのインデックスに対応するlruを”0”(=b1ヒット)に書き換えて、転送が終了する。b2がヒットであり、要求された転送がリードであった場合は、すでに読み出されているb1_out_dataとb2_out_dataのうちb2_out_dataを選択し、lmaddr[4:3]で示される8バイトのデータをMCバスへ出力する(ステップS905)。同時にそのインデックスに対応するlruを”1”h(=b2ヒット)に書き換えて、転送が終了する。
【0057】
一方、ヒットかつライトの場合にはつぎのようになる。すなわち、b1がヒットであり、要求された転送がライトであった場合は、インデックスで示されるb1_data_ram702−aのlmaddr[4:3]で示される8バイトのデータのうちmBE_L[7:0]で示される有効なバイトレーンのみを書き換え、同時にそのインデックスに対応するlruを”0”h(=b1ヒット)に書き換える。またSDRAMも同様に書き換えて転送が終了する(ステップS906)。b2がヒットであり、要求された転送がライトであった場合は、インデックスで示されるb2_data_ram702−bのlmaddr[4:3]で示される8バイトのデータのうちmBE_L[7:0]で示される有効なバイトレーンのみを書き換え、同時にそのインデックスに対応するlruを”1”h(=b2ヒット)に書き換える。またSDRAMも同様に書き換えて転送が終了する(ステップS906)。
【0058】
一方、b1,b2ともにミスである場合にも、リードかライトか判定される(ステップS1001)。要求された転送がリードであった場合は、そのlmaddr[31:3]で示される8バイトのデータがSDRAMより読み出され(ステップS1003)、MCバスヘ出力される(ステップS1004)。同時にそのインデックスに対応するlruが読み出され、”0”hであった場合はb2_data_ramへSDRAMからのデータを書きlruも”1”hへ書き換える。lruが”1”hであった場合はb1_data_ramヘSDRAMからのデータを書き、lruも”0”hヘ書き換え終了する(ステップS1005)。b1,b2ともにミスであり、要求された転送がライトであった場合は、SDRAMに書き込むだけで転送が終了する(ステップS1002)。
【0059】
ステップS901においてバースト転送(キャッシュオフ)の場合、リード、ライトともSDRAMに対してだけ行われ(ステップS907−S909)、キャッシュデータやタグの書き換え等は行わない。
【0060】
<ROM/RAMインターフェース(707)>
ROM/RAMコントローラ707の構成を図11に示す。ブロック1101〜ブロック1104により、SDRAMのデータ信号、アドレス信号、パリティ信号が、フラッシュROMのデータ信号、アドレス信号と多重化される。
【0061】
[2.4.3.タイミングダイアグラム]
上述したメモリコントローラ403によるデータの読み出し・書き込み等の処理のタイミングを、図12〜図19を用いて説明する。
【0062】
図12は、CPUからのバースト読み出しのタイミングを示す。バースト長は4、CASレイテンシは3である。図9のステップS909における処理に相当する。
【0063】
図13は、CPUからのバースト書き込みのタイミングを示す。バースト長は4、CASレイテンシは3である。図9のステップS908における処理に相当する。
【0064】
図14は、Gバスデバイスからのバースト読み出しのタイミングを示す。Gバスのバースト長は16、SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS909における処理に相当する。
【0065】
図15は、Gバスデバイスからのバースト書き込みのタイミングを示す。Gバスのバースト長は16、SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS908における処理に相当する。
【0066】
図16は、メモリフロントキャッシュにヒットした場合のシングル読み出しのタイミングを示す。読み出されるデータmDataIn[63:0]としては、キャッシュ・メモリであるb1_data_ram702−aあるいはb2_data_ram702−bから読み出されたb1/b2_out_dataが出力される。SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS905における処理に相当する。
【0067】
図17は、メモリフロントキャッシュにヒットしなかった場合のシングル読み出しのタイミングを示す。読み出されるデータmDataIn[63:0]としては、SDRAMから読み出されたデータramData[63:0]が出力される。また、このデータはb1/b2_in_dataとしてキャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bにも書き込まれる。SDRAMのバースト長は4、CASレイテンシは3である。図10のステップS1004及びS1005における処理に相当する。
【0068】
図18は、メモリフロントキャッシュにヒットした場合のシングル書き込みのタイミングを示す。書き込まれるデータmDataOut[63:0]は、キャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bに書き込まれるとともに、SDRAMにも書き込まれる。SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS906における処理に相当する。
【0069】
図19は、メモリフロントキャッシュにヒットしなかった場合のシングル書き込みのタイミングを示す。書き込まれるデータmDataOut[63:0]は、キャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bには書き込まれず、SDRAMに対してだけ書き込まれる。SDRAMのバースト長は4、CASレイテンシは3である。図10のステップS1002における処理に相当する。
【0070】
なお、ここでは、MCバスよりデータ転送が開始されると、その転送の最初にMCバス上で示されるmTType[6:0]によって、転送がシングル転送であればオン、バースト転送であればオフと判断しているが、バースト転送の場合に、さらにバースト長を判定し、バースト長がキャッシュの1ラインよりも小さい場合にはキャッシュオンとし、そうでない場合にはキャッシュオフとして動作するようにしてもよい。
【0071】
また、MCバスに、メモリへのデータ転送を要求したバスマスタの識別子を示す信号を含ませることで、メモリコントローラがその識別子を判定し、識別子に応じてキャッシュオン/キャッシュオフの制御を行うこともできる。この場合には、識別子とキャッシュオン/オフの別とを対応させた書換え可能なテーブルを用意し、それを参照してキャッシュのオンオフを切り替えることもできる。このテーブルは、例えば特定のアドレスを割り当ててCPU401などから書換え可能にすることもできる。
【0072】
[2.5.システムバスブリッジ(SBB)及びIOバス,Gバス]
図20としてシステムバスブリッジ(SBB)402のブロック図を示す。
【0073】
SBB402は、IOバス(入出力バス),Gバス(グラフィックバス),Pバス(プロセッサローカルバス)及びMCバス間の相互接続をクロスバスイッチを用いて提供する、マルチチャネル双方向バスブリッジである。クロスバスイッチにより、2系統の接続を同時に確立することが出来、並列性の高い高速データ転送を実現出来る。
【0074】
SBB402は、IOバス405と接続するためのIOバスインターフェース2906と、Gバス404と接続するためのGバスインターフェース2006と、プロセッサコア401と接続するためのCPUインターフェーススレーブポート2002と、メモリコントローラ403と接続するためのメモリインターフェースマスターポートを備えるほか、アドレスバスを接続するアドレススイッチ2003,データバスを接続するデータスイッチ2004を含む。また、プロセッサコアのキャッシュメモリを無効化するキャッシュ無効化ユニット2005を備えている。
【0075】
IOバスインターフェース2009には、IOバスデバイスからのDMAライトを高速化するライトバッファと、IOバスデバイスのリードを効率化するリードプリフェッチキューを実装する。これらのキュー内に一時的に存在するデータに関するコヒーレンシ管理はハードウェアにて行う。なお、IOバスに接続されたデバイスをデバイスと呼ぶ。
【0076】
プロセッサコアは32ビットバスに対するダイナミックバスサイジングをサポートしているが、SBB402ではこれをサポートしない、将来、バスサイジングをサポートしないプロセッサを用いる場合にもSBBに必要な改造を最小限におさえるためである。
【0077】
[2.5.1.SBB及び各バスの構成及び動作]
<IOバスインターフェース>
図21は、IOバスインターフェースのブロック図である。
【0078】
IOバスインターフェース2009は、IOバスとMCバス間の双方向ブリッジ回路である。IOバスはDoEngineの内部汎用バスである。
【0079】
IOバスインターフェース2009内には、マスタコントロールブロック2011、スレーブコントロールブロック2010、データインターフェース2012、DMAC2013、IOバスバッファの5ブロックが含まれる。図21上で、DMAC2013は、機能上3個のシーケンサとレジスタブロックに分割される。それら3つのシーケンサのうち、DMAメモリアクセスシーケンサはIOバススレーブコントロールブロック2010に、DMAregシーケンサはIOバスマスターコントロールブロック2011に内蔵される。レジスタブロックであるDMAレジスタはIOバスデータインターフェース2012部に内蔵される。
【0080】
またIOバスインターフェース2009はIOバス側からのメモリへの書き込み時、及びDMAによるデバイスからメモリへの転送が起こった時に、キャッシュ無効化インターフェースを介してCPUシェル内のデータ、命令両キャッシュの無効化の制御を行う。
【0081】
なお、CPUライト時のライトバックバッファはIOバスインターフェースには実装しないが、IOバス上の外部マスタライト時のライトバッファを実装する。これにより、バースト転送でない、連続した外部マスタからの書き込みが高速化される。このライトバッファのフラッシュは、IOバスアービタ407によるャc鰍ヨの接続が許された時点で行われる。IOバスマスタリードのライトバッファバイパスは行わない。
【0082】
また、外部マスタのリードプリフェッチキューを実行する。これにより、外部マスタからの連続した、データストリームの読み出しの高速化を図る。リードバッファの無効化は、
(1)IOバスの新たなリードがバッファにヒットしなかった場合、
(2)CPUからメモリへのライトが行われた場合、
(3)Gバスからメモリへのライトが行われた場合、
(4)IOバスからメモリへのライトが行われた場合
に行われる。
【0083】
またIOバスインターフェース2009にはIOバス405上の各デバイスとメモリ間のDMAコントローラ2013が内蔵される。システムバスブリッジ402にDMAコントローラを内蔵することにより、ブリッジ双方へ、同時にアクセス要求が発行出来、効率的なDMA転送が実現出来る。
【0084】
IOバスインターフェース2009はプロセッサ401からのアクセス要求に対して、ダイナミックバスサイジングの使用を要求しない。またIOバスマスタからのメモリアクセス要求時に、メモリコントローラ403からのバスサイジングにも対応しない。すなわち、メモリコントローラはバスサイジングを期待すべきではない。
【0085】
<IOバス>
IOバスはDoEngine内の汎用IOバスであり、以下の仕様を持つ。
・アドレス、データ分離型32ビットバス。
・任意のウェイトサイクルを挿入可能、最短はノーウェイト。
・バーストトランザクションのサポート。
・最大転送速度は、クロックが50MHz時に200Mbyte/Sec。
・バスエラーとバスリトライのサポート。
・複数バスマスタのサポート。
【0086】
(IOバス信号定義)
以下にバス信号の定義を説明する。各信号毎に、「信号名(英語呼称):入力元→出力先(,3States)…信号の説明」の要領で記載されている。なお、3ステートの項は3ステートの信号に限り記載した。
・bAddr[31:2](IOBus Address Bus):Master→Slabe,3State… IOBusアドレスバス。
・bData[31:0] (IOBus Data Bus):DataDriver→DataReceiver,3State…IOBusデータバス。
・b(Datadrivername)DataOeReq(IOBus Data Output Enable Request):Datadriver→DefaultDriverLogic…後述する双方向IOバスを実現するため、デフォルトドライバーコントロールロジックヘの出力信号である。Datadrivernameを持つデバイスが、バス上にデータをドライブするための要求信号である。データの出力を許可されたデバイスには、デフォルトドライバーコントロールロジックよりb(Datadrivername)DataOe_Lが出力される。Datadriverの例:Pci,Sbb,Jpeg,Spu。
・b(Datadrivername)DataOe_L(IOBus Data Output Enable):dfaultDriverLogic→Datadriver…b(Datadrivername)DataOeReqを出力したデバイスに対し、デフォルトドライバーロジックがデータバスへのデータのドライブを許す場合b(Datadrivername)DataOe_L信号をそのデバイスに対して返す。
・bError_L(IOBus Bus Error):Slave→Master 3State…IOバストランザクションがエラーで終了したことを示す。
・b(Mastername)BGnt_L(IOBus Grant):Arbiter→Master…バスアービトレーションにより当マスタがバスの使用権を得たことを示す。Masternameの例:Pci,Sbb,Jpeg,Spu。
・blnstNotData(IOBus Instruction/Data Output Indicator):Master→Slave,3State…IOバスマスタがインストラクションフェッチをIOバススレーブに対して行う場合にHighにドライブする。データトランザクションの場合はLowにドライブする。
・b(Mastername)CntlOeReq(IOBus Master Control Output Enable Request):Master→DefaultDriverLogic…IOバスマスタが、bStart_L,bTx_L,bWr_L,vInstNotDataとbAddr[31:2]を3ステートバス上にドライブしたい場合に、IOBus Output Control Logicに対してアサートする。IOBus Output Control Logic は各マスタからの、bMCntlOeReqに基づきドライブを許すマスタに対し、b(Mastername)CntlOe_L信号を返す。
・b(Mastername)CntlOe_L(IOBus Master Control Output Enable):DefaultDriverLogic→Master…b(Mastername)CntlOeReqを出力したマスタに対し、デフォルトドライバーロジックがドライブを許す場合b(Mastername)CntlOe_L信号をそのマスタに対して返す。
・bRdy_L(IOBus Ready):Slave→Master,3State…IOバススレーブは、現在のIOバスデータトランザクションが現在のクロックサイクルを最後に終了することを示すためにこの信号をアサートする。IOバスマスタは、この信号により、現在のトランザクションがこのクロックサイクルで終了することを知る。
・b(Mastername)BReq_L(IOBus Bus Request):Master→Arbiter…IOバスマスタが、IOバスアービタに対し、バスの使用権要求を行う事を示す。
・bRetry_L(IOBus Bus Retry):Slave→Master 3State…IOバススレーブがマスタに対し、バストランザクションの最実行を要求する。
・b(Slavename)RdyOeReq(IOBus Slave Ready Output Enable Request):Slave→DefaultDriverLogic…IOバススレーブが、bRdy_L,bWBurstReq_L,bBurstAck_Lを3ステートバス上にドライブしたい場合に、IOBus Output Control Logicに対してアサートする。IOBus DefaultDriverLogicは各マスタからの、b(Slavename)RdyOeReqに基づきドライブを許すスレーブに対し、b(Slavename)RdyOe_L信号を返す。
・b(Slavename)RdyOe_L(IOBus Slave Ready Output Enable):DefaultDriverLogic→Slave…b(Slavename)RdyOeReqを出力したマスタに対し、デフォルトドライバーロジックがドライブを許す場合b(Slavename)RdyOe_L信号をそのマスタに対して返す。
・bSnoopWait(IOBus Snoop Wait):SBB→NextMaster…IOバスインターフェースがIOバスに接続された他のデバイスに対し、キャッシュのスヌーピング実行中であることを示す。IOバスに接続されたデバイスはこの信号がアサートされている間は新たなトランザクションを発行できない。
・bStart_L(IOBus Transaction START):Master →Slave 3State…IOバスマスタがIOバストランザクションをスタートすることを示す信号、IOバススレーブは、この信号を監視することにより、IOバストランザクションのスタートを知ることが出来る。
・bTx_L(IOBus Transaction Indicator Input):Master→Slave 3State…IOバスマスタがIOバススレーブに対し、IOバストランザクションが現在実行中である事を示すためにアサートする。
・bWBurstGnt_L(IOBus Burst Write Grant):Master→Slave,3State…IOバスマスタが、IOバスバーストライトのリクエストに対し、バーストライト実行することを示すためにドライブする。
・bWBurstReq_L(IOBus Burst Write Request):Slave →Master,3Stete…IOバススレーブがIOバスマスタに対し、バースとライトを要求する場合にアサートする。
・bWr_L(IOBus Write Transaction Indicater):Master→Slave,3State…IOバスマスタが、IOバススレーブに対し、現在のトランザクションがライトである事を示すためにアサートする。
・bByteEn[3:0](IOBus Byte Enables):DataDriver→DataReceiver,3State…IOバス上にデータをドライブするエージェントが、各ビットに対応したbData[31:0]上のバイトレーンが有効である事を示すためにHighにドライブする。本信号の各ラインとbDataのバイトレーンは表4の対応関係にある。
【0087】
【表4】
・bBurst_L(IOBus Extended Burst Request):Master→Slave,3Sate…IOバスマスタが拡張バーストを行いたい事を示す。アサート、ネゲートタイミングはbTx_Lと同一。
・bBurstAck_L(IOBus Extended Burst Acknowledge):Slave→Maste,3State…IOバススレーブが拡張バーストを行える事を示す。アサート、ネゲートタイミングはbRdy_Lと同一。
・bBurstShortNotLong_L(IOBus Burst Length):Master→Slave,3State…IOバスマスタが拡張バーストを行う場合のバースト長を示す。アサート、ネゲートタイミングはbTx_Lと同一であり、信号値とバースト長との対応は表5に示したとおりである。
【0088】
【表5】
【0089】
IOバス信号は上述の通りである。DoEngine内部のバスである、IOバス(及びGバス)は接続される機能ブロック数が10以上になるので、InOut分離バスですべてのブロックを接続することは、困難である。DoEngineでは、チップ内双方向バスを採用する。
【0090】
<Gバスインターフェース>
図22にGバスインターフェース2006のブロック図を示す。この概要は下記の通りである。
【0091】
(Gバス概要)
Gバスは、MFP用1チップコントローラDoEngine内部において、各画像データ処理部間のデータ転送を高速に実行するために定義されたバスである。64ビットのデータバスをもち、4Gbyte(128byte boundary)のアドレス空間をサポートする。16ビート(128byte=64ビット x 16) を1ロングバーストとした転送を基本とし、連続して4ロングバースト(512byte=16ビート x 4) までを可能とする(シングルビートなど16ビート以下の転送はサポートしない)。
【0092】
(Gバス信号定義)
信号の定義に用いる記号をまず定めておく。信号名の直後には、必要に応じて信号の方向が記述されている。それは次のように定める。
・In(Input signal)…バスエージェントに対する入力信号
・Out(Output signal)…バスエージェントからの出力信号
・InOut(Bi−Directional Tri−State signal)…双方向の信号で、複数のバスエージェントがドライブする。一度にひとつのエージェントだけがドライブする。信号をドライブする各エージェントのイネーブルリクエスト信号をデフォルトドライバで集中管理し、どのエージェントがドライブするかはデフォルトドライバが決定する。どのエージェントもイネーブルリクエストを出さない場合や、複数のエージェントが同時にイネーブルリクエストを出している場合はデフォルトドライバ信号をドライブする。エージェントは、信号をロウにドライブする場合は、前後1クロックの間ハイにドライブしなければならない。信号のアサートはドライブを初めてから1クロック以上経過してからしか行えない。基本的に信号のリリースはネゲートした次のクロックで行う。
【0093】
なお、各信号名の後の”_L”はその信号がローアクティブであることを示す。信号の記述のしかたは、ほぼIOバス信号の記述に準ずる。説明は、システム信号、アドレス及びデータ信号、インターフェース制御信号、アービトレーション信号に分けて行う。また、バスエージェントとは、バスに接続されるバスマスタやバススレーブの総称である。
【0094】
(システム信号)
・gClk(G−Bus Clock)… Gバス上のすべてのトランザクションについてタイミングを提供し、すべてのデバイスに対して入力となる。
・gRst_L(G−Bus Reset)… Gバス上のすべてのデバイスをリセットする。すべての内部レジスタはクリアーされ、すべての出力信号はネゲートされる。
【0095】
(アドレスおよびデータ信号)
・gAddr[31:7],InOut,(G−Bus Address):Master→Slave…Gバス上のデータ転送はすべて128byte(16ビート)単位で行われるため、gAddr[31]〜gAddr[7]の25ビットで4Gbyteのアドレス空間をサポートする。
− drive:gTs_Lと同時にマスターがドライブassert:ドライブした次のクロック。− negate:gAack_Lのアサートを確認したクロック。
・g(Mastename)AddrOeReq(G−Bus Address OutPut Enable Request):Master→DefaultDriverLogic…双方向Gバスを実現するための、デフォルトドライバロジックへの出力信号。バスマスタがアドレスバスをドライブするための要求信号。
・g(Mastername)AddrOe_L(G−Bus Address OutPut Enablet):DefaultDriveLogic→Master…g(Mastername)AddrOeReqを出力したバスマスタに対し、デフォルトドライバロジックがアドレスバスのドライブを許可することを示す信号。
・gData[63:0],InOut,( G−Bus Data):DataDriver→DataReceiver…64ビットデータバスで、ライト時はマスタがドライブ、リード時はスレーブがドライブ。
[ライト]
− drive:gTs_Lと同時にマスタがドライブ。ただし、gSlvBsy_Lがアサートされている時はネゲートされるまで待ってドライブ。
assert:ドライブした次のクロック。
− change:gAack_Lのアサートを確認したクロック、その後は毎クロック。
− negate:転送終了時、またはgTrStp_Lによる転送停止要求を確認した場合は、gAack_Lのアサートを確認したクロック。
[リード]
− drive:gAack_Lと同時にスレーブがドライブ。
− assert:スレーブがReadyであればドライブした次のクロックで、ReadyでなければReadyになるまで待ってアサートされる。
− change:gAack_Lのアサートを確認したクロック、その後は毎クロック。リードの場合はアサートしたクロックから毎クロック。
− negate:転送終了時。
− release:ネゲートの1クロック後、またはgTrStp_Lによる転送停止要求を確認したクロック。
・g(DataDrivername)DataOeReq(G−Bus Data OutPut Enable Request):DataDriver→DefaultDriverLogic…データドライバがデータバスをドライブするための要求信号。
・g(DataDrivername)DataOe_L(G−Bus Data OutPut Enablet):DefaultDriverLogic→DataDriver…g(DataDrivername)DataOeReqを出力したデータドライバに対し、デフォルトドライバロジックがデータバスのドライブを許可することを示す信号。
【0096】
(インターフェース制御信号)
・gTs_L(InOut G−Bus Transaction Sart):Master→Slave…マスターにより1クロックの間Lowにアサートされ、転送の開始(アドレスフェーズ)をあらわす。マスターはgTs_Lと共に、gAddr,gRdNotWr,gBstCntをドライブし、転送の種類、データ量を明確にする。マスタは、ライトの場合ここで明確にした転送データ量をウェイトなしで出せることを保証しなければならない。また、リードの場合は明確にした転送データ量をウェイトなしで受けることを保証しなければならない。スレーブは途中でデータ転送ができなくなった場合はgBsStep_Lにより、次の16ビートの転送をキャンセルすることがある。ただし、16ビートの途中でキャンセルすることはない。
− drive:gGnt_Lのアサートを確認したクロックでドライブ。
− assert:ドライブした次のクロック。
− negate:1クロックアサート後にネゲートされる。
・g(Mastername)TsOeReq(G−Bus Transaction Start OutPut Enable Request):Master→DefaultDriverLogic…バスマスタがgTs_Lをドライブするための要求信号。
・g(Mastername)TsOe_L(G−Bus Transaction Start OutPut Enablet):DefaultDriverLogic→Master…g(Mastername)TsOeReqを出力したバスマスタに対し、デフォルトドライバクロックがgTs_Lのドライブを許可することを示す信号。
・gAack_L,InOut,(G−Bus Address Acknowledge):Slave→Master…スレーブにより1クロックの間Lowにドライブされる。該当するスレーブが、転送を認識し、バスが空いていることを確認して、データ転送がスタートできることをマスターに知らせる。ライトの場合、スレーブはマスタから要求された転送データ量をウェイトなしで受けることを保証しなければならない。またリードの場合は、要求された転送データ量をウェイトなしで出せることを保証しなければならない。万が一、途中でデータ転送ができなくなった場合は、gBstStp_Lにより、次の16ビートの転送をキャンセルすることができる。ただし、16ビートの途中でキャンセルすることはできない。
− drive:アドレスデコードビット時、gTs_Lのアサートを確認したクロックでドライブが開始される。ただし、gSlvBsy_Lがアサートされている時はネゲートされるまで待ってドライブされる。また、データバス使用中のため、まだドライブされていなかった場合は、gTrStp_Lによる転送停止要求を確認したクロックでドライブ開始される。
− assert:スレーブがReadyであればドライブした次のクロックで、ReadyでなければReadyになるまで待ってアサートされる。gTrStp_Lによる転送停止に対する応答のときには、ドライブした次のクロックでアサートされる。
− negate:ドライブ後にgTrStp_Lがアサートされた場合は、gTrStp_Lを確認したクロックでアサートされる。また、1クロックアサート後にネゲートされる。
・g(Slavename)AackOeReq(G−Bus Address Acknowledge OutPut Enable Request):Slave→DefaultDriverLogic…スレーブがgAack_Lをドライブするための要求信号。
・g(Slavename)AackOe_L(G−Bus Address Acknowledge OutPut Enablet):DefaultDriverLogic→Slave…g(Slavename)AackOeReqを出力したスレーブに対し、デフォルトドライバロジックがgAack_Lのドライブを許可することを示す信号。
・gSlvBsy_L,InOut,(G−Bus Slave Busy):Slave→Master…スレーブがドライブし、データバスでデータを転送中であることをあらわす。
− drive:アドレスデコードヒット時、gTs_Lのアサートを確認したクロックでドライブ開始。ただし、gSlvBsy_Lがアサートされている時はネゲートされるまで待ってドライブ。
− assert:スレーブがReadyであればドライブした次のクロックで、ReadyでなければReadyになるまで待ってアサート。
− negate:転送終了時にネゲート。
− release:ネゲートの1クロック後、またはgTrStp_Lによる転送停止要求を確認したクロック。
・g(Slavename)SlvBsyOeReq(G−Bus Slave Busy OutPut Enable Request):Slave→DefaultDriverLogic…スレーブがgSlvBsy_Lをドライブするための要求信号g(Slavename)SlvBsyOe_L(G−Bus Slave Busy OutPut Enable):DefaultDriverLogic→Slave…g(Slavename)SlvBsyOeReqを出力したスレーブに対し、デフォルトドライバロジックがgSlvBsy_Lのドライブを許可することを示す信号。
・gRdNotWr,InOut,(G−Bus Read(High)/Write(Low)):Master→Slave…マスターによりドライブされ、HighでREAD、LOWでWRITEをあらわす。ドライブする期間はGAと同じである。
− drive:gTs_Lと同時にマスターがドライブ。
− assert:ドライブした次のクロック。
− negate:gAack_Lのアサートを確認したクロック。
・g(Mastername)RdNotWrOeReq(G−Bus Read/Write OutPut Enable Reques):Master→DefaultDriverLogic…バスマスタがgRdNotWrをドライブするための要求信号。
・g(Mastername)RdNotWrOe_L(G−Bus Read/Write OutPut Enablet):DefaultDriverLogic→Master…g(Mastername)RdNotWrOeReqを出力したバスマスタに対し、デフォルトドライバロジックがgRdNotWrのドライブを許可することを示す信号。
・gBstCnt[1:0],InOut,(G−Bus Burst Counter):Master→Slave…マスターによりドライブされ、連続して行うバースト転送の数(1〜4)をあらわす。信号の値とバースト転送するバイト数との対応は表6のようになる。
− drive:gTs_Lと同時にマスターがドライブ。
− assert:ドライブした次のクロック。
− negate:gAack_Lのアサートを確認したクロック。
【0097】
【表6】
・g(Mastername)BstCntOeReq(G−Bus Burst Counter OutPut Enable Request):Master→DefaultDriverLogic…バスマスタがgBstCntをドライブするための要求信号。
・g(Mastername)BstCntOe_L(G−Bus Burst Counter OutPut Enablet):DefaultDriverLogic→Master…g(Mastername)BstCntOeReqを出力したバスマスタに対し、デフォルトドライバロジックがgBstCntのドライブを許可することを示す信号。
・gBstStp_L,InOut,(G−Bus Burst Stop):Slave→Master…スレーブによりドライブされ、連続する次のバースト転送を受付不可であることをあらわす。1バースト(16ビート)の転送の15ビート目にアサートする。ストップしない場合にはドライブしない。
− drive:14ビート目。
− assert:15ビート目。
− negate:1クロックアサート後
・g(Slavename)BstStpOeReq(G−Bus Burst Stop OutPut Enable Request):Slave→ DefaultDriverLogic…スレーブがgBstStp_L上をドライブするための要求信号。
・g(Slavename)BstStpOe_L(G−Bus Burst Stop OutPut Enablet):DefaultDriverlogic→Slave…g(Slavename)BstStpOeReqを出力したスレーブに対し、デフォルトドライバロジックがgBstStp_Lのドライブを許可することを示す信号。
【0098】
(アービトレーション信号)
g(Mastername)Req_L,Out,(G−Bus Request):Master→Arbiter…マスターによりドライブされ、アービタに対してバスを要求する。各マスターデバイスごとに専用のgReq_Lを持つ。
− assert:データ転送が必要なマスターがアサート
− negate:gGnt_Lを受ければネゲート
・g(Mastername)Gnt_L,In,(G−Bus GNT):Arbiter→Master…アービタによりドライブされ、バス要求に対して次のバス権を与える。各マスタデバイスごとに専用のgGnt_Lを持つ。プライオリティーの高いバスマスタから順にバス権を与える。同じプライオリティーのマスタに対しては、バス要求のあった順番にバス権を与える。
− assert:他のマスターにgGnt_Lを与えていない時、または次のクロックで他のマスタに与えていたgGnt_Lをネゲートする時に、アービトレーションによって選ばれたマスタに対してアサートする。
− negate:gAack_Lのアサートを確認したクロック
・gTrStp_L,In,(G−Bus Transuaction Stop):Arbiter→Master,Slave…アービタによりドライブされ、gGnt_Lによりすでにアドレスフェーズを開始されたトランザクションを中止する。ただ、すでにgAack_Lによりデータフェーズを開始してしまったトランザクションについては中止できない。また、この信号はgAack_Lによりマスクがかけられており、gAack_Lがアサートされた時には、たとえアサートしていてもネゲートされ出力される。
− assert:すでにアドレスフェーズを開始したトランザクションよりも高いプライオリティのマスタからバス要求がきた時。
− negate:gAack_Lのアサートを確認したクロック
(Gバスライトサイクル)
Gバスのライトサイクルは次のようになる。
(1)マスタがバス要求、gReq_Lアサート。
(2)アービタが許可、gGnt_Lアサート。gReq_Lネゲート。
(3)gGnt_Lを受けて、マスタはgTs_L,gAddr,gRdNotWr,gBstCnt,をドライブ。
ライト動作の場合、gSlvBsy_Lがアサートされていなければ、同時にgDataもドライブする。gSlvBsy_Lがドライブされていれば、gSlvBsy_Lがフリーになるのを待ってドライブする。
(4)スレーブはgTs_Lがアサートされている時にアドレスをデコードし、ヒットすれば自分に対する転送であることを認識する。この時gSlvBsy_Lが他のスレーブによりアサートされていなければ、gSlvBsy_LとgAack_Lのドライブを始める。また、リードの場合はgDataもドライブする。gSlvBsy_Lが他のスレーブによりアサートされていれば、データバスは使用中であるということなので、ネゲートされるまで待ってドライブを始める。gSlvBsy_L,gAack_L,(gData)のドライブ開始後、スレーブがデータ転送の準備ができれば、それぞれの信号をアサートし、データ転送を開始する。
(5)gAack_Lがアサートされた時点でアドレスフェーズは終了し、マスタはgAddr,gRdNotWr,gBstCntをネゲートする。また、その時点からマスタはライトデータを毎クロック切り替え、gBstCntで指定されたデータ量だけ転送を行う。マスタとスレーブは、それぞれ自分でクロックをカウントして、データ転送の終了を知らなければならない。
【0099】
スレーブは転送の途中でマスタから要求されたデータ転送量を転送できなくなった場合は、bStStp_Lを15ビート目でアサートすることで、次の16ビートの転送をキャンセルすることがただし、16ビートの途中でキャンセルすることはできない。
【0100】
マスタおよびスレーブは、gBstStp_Lがアサートされれば、次のクロックでデータの転送を終了させなければならない。
【0101】
<キャッシュインバリデーションユニット(CIU)>
キャッシュインバリデーションユニット(以下CIU)2005は、IOバスからメモリへのライトトランザクションを監視し、これが起こった場合は、メモリへの書込が終了する前に、CPUシェルのキャッシュインバリデーションインターフェースを用い、CPUシェルに内蔵されたキャッシュの無効化を行う。
【0102】
CPUシェルは、次の3種類の信号を使用する。
・SnoopADDR[31:5] (Cache Invalidation Address)
・DCINV (Dcache(データキャッシュ)Invalidation Strobe)
・ICINV (Icache(インストラクションキャッシュ)Invalidation Strobe)。
キャッシュの無効化は最大3クロックで行われる、IOバスからメモリへのライトは3クロックで終了することはないので、キャッシュインバリデーションユニット2005は、CPUシェル401から出力されるStop_L信号を用いて無効化終了のハンドシェイクを行うことはしない。但し、将来の変更に備え、IOバス上にはbSnoopWaitをStop_Lと同一サイクルだけドライブする。
【0103】
なお、現在のインプリメンテーションでは、IOバスからのライトが起こった場合は、安全のためにIcacheもインバリデーションしている、もし、OSでセルフモディファイングコードを禁止し、インストラクションとして使われる可能性のあるデータのローディング時に、意図的にインストラクションキャッシュのインバリデーションを行うなら、Icacheのインバリデーションはいらない。この場合は若干のパフォーマンスアップが望める。
【0104】
<メモリマップ>
図23及び図24にメモリマップを示す。図23は、左から順に、仮想メモリマップ、物理メモリマップ、Gバスのアドレス空間でのメモリマップ、IOバスのアドレス空間でのメモリマップである。また、図24は、レジスタ等を含む図23における斜線部の512メガバイトを示すマップである。
【0105】
プロセッサコアのメモリモデルはR3000をベースにしている。プロセッサコアの物理アドレス空間は32ビットアドレッシングにより4Gバイトある。仮想空間も同様に32ビットアドレッシングを行なう。ユーザープロセスの最大サイズは2Gバイトである。アドレスマッピングはカーネルモードとユーザーモードで異なる。図はMMUを使用しない場合のメモリマップである。
【0106】
(ユーザーモード仮想アドレッシング)
ユーザーモードの仮想アドレッシングでは2Gバイトのユーザ仮想アドレス空間(kuseg)が有効となる。このユーザーセグメントのアドレスは0x00000000から始まり、すべての有効なアクセスは0にクリアされたmsbを持つ。ユーザーモードにおいてmsbをセットしたアドレスの参照はアドレスエラー例外処理を引き起こす。TLBはkusegへのすべての参照をユーザーモードとカーネルモードで同様にマッピングする。また、キャッシャブルである。kusegは通常ユーザーコードやデータを保持するために使用される。
【0107】
(カーネルモード仮想アドレッシング)
カーネルモードの仮想アドレス空間には4つのアドレスセグメントを持っている。
・kuseg仮想アドレスの0x00000000から2Gバイト。ページと単位としたキャッシングとマッピングが可能。このセグメントはカーネルメモリアクセスとユーザーメモリアクセスでオーバーラップしている。
・kseg0仮想アドレスの0x80000000から512Mバイト。物理メモリの最初の512Mバイトにダイレクトにマップされる。参照はキャッシュされるが、アドレス変換にはTLBは使われない。kseg0は通常カーネルの実行コードやカーネルデータのために使用される。
・kseg1仮想アドレスの0xA0000000から512Mバイト。物理メモリの最初の512Mバイトにダイレクトにマップされる。参照はキャッシュされず、アドレス変換にはTLBは使われない。kseg1は通常OSによって、I/Oレジスタ、ROMコード、ディスクバッファのために使用される。
・kseg2仮想アドレスの0xC0000000から1Gバイト。kusegと同様、TLBにより仮想アドレスから物理アドレスにマップされる。キャッシングは自由。OSは通常kseg2をスタックやコンテキストスイッチによるリマップが必要なプロセス毎のデータのために使用する。
【0108】
(仮想アドレスメモリマップ(図23(a),図24(a)))
仮想アドレス空間は4Gバイトあり、システム上のすべてのメモリ、I/Oがアクセス可能である。kusegにはSYSTEM MEMORY(1GB)が存在する。
【0109】
kseg0には内蔵RAM(16MB)が存在する。これは、例外処理のベクタをプログラミングしたい場合にインプリメントし、例外ベクタベースアドレスを0x80000000に設定する。このアドレスは物理アドレス空間の0x00000000にマッピングされる。
【0110】
kseg1にはROM,I/O,レジスタが存在し、ブートROM(16MB),SBB内部レジスタとMC内部レジスタ(16MB),IOBusI/O1(16MB:Gバスアービタ内部レジスタ、IOバスアービタ内部レジスタ、PMU内部レジスタなどのプリミティブなIOバスレジスタ),IOBusI/O2(16MB),IOBusMEM(16MB),Gbus MEM(32MB),FONT ROM(240MB)、FONT ROM or RAM(16MB)が含まれる。kseg2にはPCI I/O(512MB),PCIMEM(512MB)が存在する。kseg0,kseg1はどちらも物理アドレス空間の最初の512Mバイトにマッピングされるため、kseg0,kseg1とkusegの最初の512Mバイトはすべて同じ物理アドレス空間を参照していることになる。
【0111】
(物理アドレスメモリマップ(図23(b),図24(b)))
物理アドレス空間も仮想アドレス空間と同様4Gバイトあり、システム上のすべてのメモリ、I/Oがアクセス可能である。PCI I/O,PCI MEM,SYSTEM MEMORYについては仮想アドレスメモリマップと同一である。kseg1,kseg2はどちらも物理アドレス空間の最初の512Mバイトにマッピングされるので、ROM,I/O,Regは0x00000000からの空間に存在している。
【0112】
(Gバスメモリマップ(図23(c),図24(c)))
Gバスアドレス空間は4Gバイトあり、SYSTEM MEMORY,GBus MEM,FONTのみがアクセス可能である。
【0113】
(IOバスメモリマップ(図23(d),図24(d)))
IOバスアドレス空間は4Gバイトあり、PCI I/O,PCI MEM,SYSTEM MEMORY,IOBusI/O2,IOBus MEM,FONTのみがアクセス可能である。IOBus I/O1はプリミティブなレジスタのため、0x1C000000から0x20000000までの空間はPCIからプロテクトがかけられており、PCIからアクセスできない。
【0114】
<アドレススイッチ>
アドレススイッチ2003は、Pバス,Gバス,IOバス,MCバス間のデータ転送を行なうために、マスターとなるバスからスレーブとなるバスへ、SBB402を経由してアドレス信号を送るためのものである。SBB402を経由する転送において、マスターとなり得るバスは、Pバス,Gバス,IOバスであり、スレーブとなり得るバスはIOバス,MCバスである。MCバスに対してはPバス,Gバス,IOバス,のいずれかがマスターとなり、IOバスへはPバスのみがマスターとなってアドレス信号を送る。また、Pバス−IOバス間の転送と、Gバス−MCバス間の転送は同時に行なうことができる。
【0115】
図25に、アドレススイッチ2003のブロック図を示す。スイッチシーケンサ2003aにより、スイッチ2003bを切り替えてスレーブをIOバスとMCバスとで切り換え、スイッチ2003cを切り替えてマスタをPバス,Gバス,IOバスで切り換える。この構成により、MCバスに対してはPバス,Gバス,IOバス,のいずれかがマスターとなり、IOバスへはPバスのみがマスターとなり、また、Pバス−IOバス間の転送と、Gバス−MCバス間の転送は同時に行なうことができる。
【0116】
<データスイッチ>
データスイッチはPバス,Gバス,IOバス,MCバス間のデータ転送を行なう際に,SBB内でデータの流れを切り替えるものである。ライト時はマスターからスレーブ、リード時はスレーブからマスターへデータが送られる。
【0117】
図26にデータスイッチ2004のブロック図を示す。この構成において、セレクタA−1〜A−3及びB−1,B−2を表7のように切り替えることで、Pバス,Gバス,IOバスのいずれかをマスタとし、IOバス,MCバスのいずれかをスレーブとして、書き込みあるいは読み出しを行うように制御できる。
【0118】
【表7】
【0119】
<アービトレーション>
SBB402内のスイッチシーケンサ2003aは、各スイッチを切り替えるにあたって、SBB外部からの以下の3種類の接続要求間のアービトレーションを行う。
1.CPU
2.Gバスバスマスタ
3.IOバスバスマスタ
このアービトレーションは、現在のバススイッチ接続状況、及び、あらかじめ設定された優先順位により決定され、その結果アドレススイッチ、データスイッチの接続が切り替えられる。
【0120】
<タイミングダイアグラム>
図27〜図32にタイミング図を示す。図27はGバスからの書き込み/読み出しサイクルのタイミング図、図28はGバスのバースト停止サイクルのタイミング図、図29〜図32は、Gバスのトランザクション停止サイクルのタイミング図である。
【0121】
[2.6.PCIバスインターフェース]
図33は、PCIバスインターフェース416のブロック図である。PCIバスインターフェース416は、DoEngine内部汎用IOバスであるIOバスと、チップ外部IOバスであるPCIバスの間をインターフェースするブロックである。入力ピン設定により、リセット時にPCIバスコンフィギュレーション発行可能な、ホストブリッジ構成と、PCIバスコンフィギュレーションは発行しないターゲット構成とを切り替えることができる。
【0122】
IOバスインターフェースのマスタDMAコントローラ3301は、PCIバスシグナルインターフェース3302を介してPCIバスマスタからDoEngine内部のリソースにアクセス要求があった場合に、IOバスマスタとしてこのアクセス要求をIOバス内部にブリッジする。
【0123】
更に、このマスタDMAコントローラ3301は、PCIバス上でマッピングされるメモリからDoEngineMemoryへのDMA転送を行う事が出来る。この際、プログラマが意図したIOバスDMAと、GバスDMAのアクセスの順番を守って動作させるために、転送先アドレス(bPciAddr[31:0])と、PCIマスターコントローラ3301のID信号(bPciID)を、IOバスとアービトレーションシーケンサに対して、バスリクエストと同時に発行する。
【0124】
マスタDMAコントローラ3301はバスグラント(bPciBGnt_L)を受け取り、バスを使用しデータ転送が終了した時点で、ID信号(bPciID)のアサートを取りやめる。なお、PCIバスは、33MHz,32ビット,PCI2.1準拠とする。
【0125】
[2.7.Gバスアービタ]
図34は、Gバスアービタ(GBA)406のブロック図である。Gバスのアービトレーションは、中央アービトレーション方式であり、各バスマスタに対して専用のリクエスト信号(g(mastername)Req_L)とグラント信号(g(mastername)Gnt_L)を持つ。図34は、masternameはM1〜M4となっている。Busアービタ406は、Gバス上のバスマスタを4つまでサポートしており、以下のような特徴を持つ。
・アービタ内部のレジスタ3401aの設定によりアービタをプログラミングすることが出来る。レジスタ設定はIOバスより行なう。
・すべてのバスマスタを同じ優先権として、公平にバス権を与える公平アービトレーションモードと、いずれかひとつのバスマスタの優先権を上げ、優先的にバスを使用させる優先アービトレーションモードがある。どのバスマスタに優先権を与えるかはレジスタ3401bの設定により決定される。
・優先バスマスタが連続してバスを使用することができる回数を設定することが可能。
・すでにアドレスフェーズを開始したが、データフェーズをまだ開始していないトランザクションについて、そのトランザクションをストップするためのトランザクションストップサイクルをサポート。
・複数のバスマスタにおける順序処理のプログラミングができる(後述)。プログラムされた順序は、レジスタテーブル3401aに格納される。
・GバスマスタとIOバスマスタが同一メモリアドレスに順次書き込みを発行した場合に、プログラマの意図したアクセス順序を維持するための機構として、同期ユニットからのマスタID信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【0126】
なお、レジスタへのプログラミングは、IOバスを介してCPU401から行われる。
【0127】
(アービトレーションシーケンサ)
Gバスアービタの中核となるアービトレーションシーケンサ3402a,bは、1つの優先マスタとその他の4つの非優先マスタの間で5つのマスタによるアービトレーションを行なう。4つのバスマスタからのリクエスト信号とグラント信号を、リクエストディスパッチ回路3403とグラントディスパッチ回路3404によって4つの非優先マスタに割り付けることにより、公平アービトレーションモードが実現される。また、4つのバスマスタのうちのひとつを、高優先アービトレーションシーケンサ3402aの優先マスタに割り付けることで、優先アービトレーションモードとして動作する。これらの割り付けは、レジスタ3401a,bの設定にしたがって行われる。これにより、優先バスマスタは、他のマスタより高い確率でバスの使用権を取得することが出来る。
【0128】
さらに、バスの取得機会確率の調整に加え、高優先シーケンサ3402aに割り当てられたマスタは、連続してバスを使用する事が出来、連続して使用出来る回数をプログラマブルなレジスタにより可変する事ができる。これは、バスの占有率を調整出来、ある特定のマスタにより多くバスを使用させる様に出来ることを意味する。
【0129】
(公平アービトレーションモード)
このモードでは、すべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる(ラウンドロビン方式)。例えば、M1からM4までのすべてのバスマスタが同じクロックでリクエストを出した場合は、M1→M2→M3→M4といった順序でバス権が与えられる。M4のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、M1→M2→M3→M4→M1→M2…というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、M4からM1へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【0130】
一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【0131】
(優先アービトレーション)
このモードでは、ひとつのバスマスタ(レジスタ3401bに登録されたバスマスタ)が他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。優先バスマスタ以外のバスマスタの優先順位はすべて同じである。
【0132】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続したリクエストを行う場合、優先バスマスタと他の非優先バスマスタは交互にバス権を得る。
【0133】
非優先バスマスタから他のバスマスタにバス権が移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと、その非優先バスマスタは再びバス権を得ることができない。
【0134】
(トランザクション・ストップ・サイクル)
優先アービトレーションモードにおいて、優先バスマスタがリクエストを出した時、すでに他のバスマスタがアドレスフェーズを開始していても、データフェーズをまだ開始していなければ、そのトランザクションをストップし、優先バスマスタがバス権を得ることができる。ただし、その直前に優先バスマスタがバス権を持っていた場合は、連続したバス権を得ることができる回数を超えることはできない。
【0135】
優先バスマスタのトランザクションが終了した時、中止されたバスマスタがリクエストを出していれば、優先してバス権が与えられる。
【0136】
(優先バスマスタの切り替え)
優先バスマスタの切り替えを行なうには、レジスタ3401bを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【0137】
優先バスマスタの切り替えには十分注意を払う必要がある。優先させるべきバスマスタのDMAが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのDMAの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、DMAが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【0138】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行う必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんGバス上に新たなDMAリクエストが発生しないよう、すべてのバスマスタ及びDMAコントローラに対する設定を中止し、その後、Gバスアービタ406内のレジスタに適切な値をセットし、さらに、Gバスアービタ406内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなGバス上へのアクセス及びDMAの起動を行うべきである。
【0139】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【0140】
(順序処理)
図35は、DoEngine400内におけるGバス404を中心とする、Gバス上のバスマスタによるDMAに係るブロック図である。
【0141】
複数のバスマスタが順次に処理を行うことが必要な場合、例えば、メモリ3501上のデータに対して、バスマスタ1により処理Aを行った後、バスマスタ2により処理Bを行い、その処理後のデータをバスマスタ4に送るといった一連の処理を考える。
【0142】
この処理を行うソフトウェア、すなわちCPU401により実行されるプログラムにより、IOバス405を介して、バスアービタ406内のレジスタテーブル3401aに、バスマスタがバスを使用する順序と、バス権の付与の開始条件と、終了条件がセットされる。この例では、
というようにセットする。すなわち、Gバスアービタ406は、それぞれのバスマスタから、開始条件として設定された信号を受けるとそのバスマスタにバス使用権を与え、終了条件として設定された信号を受けるとバス使用権を奪う。
【0143】
ソフトウェアはそれぞれのバスマスタにDMAをセットする。それによって、それぞれのマスタはGバスアービタ404に対してリクエスト(g(mastername)Req_L)を発行する。Gバスアービタ404はレジスタテーブル3401aに登録された順序に従ってバスマスタ1にバス権を与える(gM1Gnt_L)。バスマスタ1はメモリ3501からある単位のデータをリードし、処理Aを行って、バスマスタ1内部のバッファにデータをライトする。バスマスタ1はひとつの単位の処理が終了し、バッファの準備ができたことをgM1BufReady信号によりアービタ406に対して通知する。
【0144】
アービタ406はそれを受け、レジスタテーブル3401aに登録された、バスマスタがバス権を与える条件とバス権を奪う条件にしたがって、バス権をバスマスタ1から奪いバスマスタ2に与える。バスマスタ2はバスマスタ1のバッファのデータをリードし、処理Bを行って、バスマスタ2内部のバッファにデータを格納する。この間にバスマスタ1のバッファが空になるとgM1BufEmptyがアサートされ、アービタ406はバスマスタ2にバス権を与えていたのを取りやめる。バスマスタ2は処理Bを行って、バッファの準備ができるとgM2BufReady信号により通知する。
【0145】
アービタ406はそれを受け、レジスタ3401aの内容にしたがって、今度はバスマスタ4にバス権を与える。バスマスタ4はバスマスタ2のバッファからデータをリードする。バスマスタ2のバッファが空になると、gM2BufEmptyによってアービタ406に通知し、アービタ406はそれを受け、レジスタ3401aの内容に従って再びバスマスタ1にバス権を与え、次のデータの処理を始める。
【0146】
それぞれのバスマスタにセットされたDMAがすべて終了すると、それぞれのバスマスタはプロセッサに割り込みによって通知する。ソフトウェアはすべてのバスマスタからの終了通知がそろったとき、一連の処理が終了したことを知る。
【0147】
以上説明した動作は完全順次モードでの動作であり、順次処理に関わるバスマスタ以外のバスマスタは、バスを使用することができない。この順次処理中でも、順次処理に関係のないバスマスタがバスを使用することを可能にするために優先順次モードが用意されている。これらのモードの切り替えではアービタ406内部のレジスタにプログラミングすることによって行なう。優先順次モードでは、順次処理を行なうバスマスタは優先的にバスを使用できるが、順次処理に関わらないバスマスタであればバスを使用することが許される。順次処理を行なうバスマスタと関わらないバスマスタの間のアービトレーションは、前述した優先アービトレーションモードと同等である。当然、順次処理に係わるバスマスタで、バス権を与えられる条件が満足されずに自分の順番が回ってきていないバスマスタにはバス権は与えられない。
【0148】
(アクセス順序を維持するための機構)
信号stopSpcがアサートされた場合は、Gバスマスタのひとつであるスキャナプリンタコントローラ408はアービトレーションの対象から除外され、たとえリクエストをアサートしていてもバス使用権を与えられることはない。アービトレーションはこのマスタを除外したマスタ間で行われる。詳細な説明はIOバスアービタの節で行なう。
【0149】
<タイミングダイアグラム>
図36〜図39において、Gバスアービトレーションのタイミングを説明する。図36は、連続してバスを使用する回数が、バスマスタ1〜4のすべてについて1に設定されている場合の公平アービトレーションモード(フェアモード)の例である。バスマスタ1による2回目の(タイミング4から出されている)バス要求は、バス要求を出している他のバスマスタがすべて1回ずつ処理されるまで待たされている。
【0150】
図37は、連続してバスを使用する回数が、バスマスタ1についてのみ2であり、他のバスマスタは1に設定されている場合の公平アービトレーションモードの例である。バスマスタ1が出している2回目の(タイミング4から出されている)バス要求は1回目の要求に続いて直ちに許可され、他のバスマスタはその処理がすむまで待たされている。
【0151】
図38は、連続してバスを使用する回数がそれぞれ1ずつであり、バスマスタ1が優先バスマスタと設定されている場合の優先アービトレーションモードの例である。優先バスマスタと非優先バスマスタとは交互にバス使用権が認められるために、バスマスタ1の2回目のバス要求はバスマスタ2のバスの使用後に認められており、バスマスタ4のバス要求は、バスマスタ1の2回目のバスの使用後に認められている。また、バスマスタ2の2回目のバス要求は、バス要求を出している他のすべてのバスマスタ、図38ではバスマスタ1及びバスマスタ4のバス使用が終了した後で認められている。
【0152】
図39は、バスマスタ1からのバス要求により、バスマスタ4のバス要求が許可されているにもかかわらず中断された例である。この場合、バスマスタ1のバス使用が終了すると、バスマスタ2のバス要求に優先してバスマスタ4のバス要求が認められる。
【0153】
[2.8.IOバスアービタ]
図40は、IOバスアービタ407のブロックである。IOバスアービタ407は、DoEngine内部のIO汎用バスであるIOバス405のバス使用要求を受け付け、調停の後、使用許可を選択された一つのマスタに対して与え、同時に2つ以上のマスタがバスアクセスを行う事を禁止する。
【0154】
アービトレーション方式は、3段階のプライオリティを持ち、それぞれのプライオリティに複数のマスタをプログラマブルに割り当てられる構成になっている。割り当ては、それぞれ最大で、最高のプライオリティに3マスタ、中間に7マスタ、最低レベルに3マスタとなる。
【0155】
また、GバスマスタとIOバスマスタが、同一メモリアドレスに順次書き込みを発行した場合に、プロブラマの意図したアクセス順序を維持するための機構として、同期ユニットからの、マスタID信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【0156】
(アービトレーションシーケンサ)
IOバスアービタは3つのアービトレーションシーケンサ4002,4003,4004から構成される。それぞれ、高優先権、中優先権、低優先権を持ち、それぞれのシーケンサ内に、3,7,3本のバスマスタ用アービトレーションシーケンサが内蔵される。IOバス上のすべてのバスマスタになる可能性のあるユニットからのリクエスト信号とそれらへのグラント信号を、リクエストセレクタとグラントセレクタによって、これらの3つのシーケンサユニットに分配する。この分配は、BBusインタフェース4005内のソフトウェアプログラマブルなレジスタ4005aにより、複数の組み合わせのなかから、一意の組み合わせを選択することが出来る。
【0157】
たとえば、最大7つのマスタのリクエストを中優先アービトレーションシーケンサ4003に接続することにより、7つのマスタ間で公平なアービトレーションが実現される。また、バスマスタのうちのいくつかを、高優先アービトレーションシーケンサ4002に割り付けることで、これらのマスタは他のマスタより、より高い確率でバスの使用権を取得することが出来る。さらに、いくつかのリクエストを低優先シーケンサ4004に接続することで、これらのバスの使用率を低く抑える事が出来る。さらに、バスの取得機会確率の調整に加え、高優先シーケンサ4002に割り当てられたマスタは、連続してバスを使用する事ができ、連続して使用出来る回数をプログラマブルなレジスタ4005aにより可変する事ができる。これは、バスの占有率を調整でき、ある特定のマスタにより多くの時間バスを使用させる様に出来る事を意味する。
【0158】
(公平バスアービトレーション方式)
中優先シーケンサ4003を例にとり、公平アービトレーションの実現方法を説明する。一つのシーケンサに接続されたすべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる(ファーストカムファーストサーブ)。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる(同時リクエスト発行時ラウンドロビン)。例えば、M1からM7までのすべてのバスマスタが同じクロックでリクエストを出した場合は、M1→M2→M3→M4→M5→M6→M7といった順序でバス権が与えられる。M7のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、M1→M2→M3→M4→M5→M6→M7→M1→M2というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、M7からM1へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【0159】
(優先アービトレーション)
IOバスインターフェースは、高優先、中優先、低優先の3つのアービトレーションシーケンサが存在する。優先順位をつけたアービトレーションは、複数のバスリクエストを選択的に、高優先、低優先、のアービタに割り振ることにより実現される。
【0160】
たとえば、ひとつのマスタを高優先に割り当て、残りを中優先に割り当てることにより、ひとつのバスマスタが他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。同じ優先権のアービトレーションシーケンサに割り当てられたバスマスタの優先順位はすべて同じである。
【0161】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続してリクエストを行う場合、優先バスマスタと他のバスマスタは交互にバス権を得る。M3が優先マスタでM1,M2,M3,M4がリクエストを出し続けた場合M3→M1→M3→M2→M3→M4→M3→M1の順でバス使用権を与える。
【0162】
また、高優先バスマスタは、アービタ内のプログラマブルなレジスタにあらかじめ設定された回数だけ連続したバス権を得ることができる。連続したバスを使用出来る回数は最大で4回である。
【0163】
優先バスマスタ以外のバスマスタから他のバスマスタにバス権が移ると、そのバスマスタは、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。ひとつのバスマスタが連続してリクエストを行う場合、他にリクエストを行っているバスマスタがいなければ、連続してバス権を得ることができるが、他のバスマスタがリクエストを行っていれば、そのバスマスタはあらかじめ設定された回数だけ連続してバス権を得ることができる。一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【0164】
低優先アービトレーションシーケンサ4004には最大3本のリクエストを割り当てる事が出来る。低優先シーケンサ4004に割り当てられたマスタへは、中優先、高優先シーケンサに割り当てられた、すべてのマスタのリクエストがなくならないと、バスの使用権が与えられない。このシーケンサへのバスマスタの割り当ては十分な注意を持って行われなければならない。
【0165】
(優先バスマスタの切り替え)
優先バスマスタの切り替えを行なうには、アービタ内のレジスタを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【0166】
切り替えには十分注意を払う必要がある。優先させるべきバスマスタのDMAが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのDMAの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、DMAが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【0167】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行なう必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんIOバス上に新たなDMAリクエストが発生しないよう、すべてのバスマスタ及びDMAコントローラに対する設定を中止し、その後、IOバスアービタ407内のレジスタに適切な値をセットし、さらに、IOバスアービタ内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなIOバス上へのアクセス及びDMAの起動を行うべきである。
【0168】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは、違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【0169】
(アクセス順序制御機構)
IOバスアービタ407はアクセス順序制御機構を含む。アクセス順序制御機構は、同期ユニット4001と、IOバスアービタ407,Gバスアービタ406内に組み込まれたバス使用権発行抑制機構によって実現される。IOバスアービタ407内に組み込まれたバス使用権発行抑制機構は、Gバスアービタのそれと同様に動作する。つまり、stopPci信号が入力された場合は、Pciバスマスタからのバスリクエストが発行され、アービトレーションの結果、このマスタにバスの使用権を与えることが可能な状態でも、バスの使用権発行は行わず、他のマスタへバス使用権をあたえる。具体的には、stopPci信号が入力された場合は、直ちにbPciReq_Lをマスクすることにこれを行う。
【0170】
LANコントローラ414からのバスリクエストおよび、ストップ信号の場合もまったく同様に動作する。図41に同期ユニット4001のブロック図を示す。同期ユニット内には複数のDMAマスタ間すべての組み合わせに関して、それぞれコンペアユニット4101〜4103が接続される、DoEngineでは、Gbus上のDMAマスタはスキャナ/プリンタコントローラ408のみ存在する。IOバス上には、DMAPCIユニット、LANユニットの二つが存在する。SBB内のIOバスインターフェースはIOバス上のバスマスタであるが、メモリには直接アクセスしないので、同期ユニット4001にはIDと転送先アドレスを出力しない。
【0171】
図42に同期ユニット内の一つコンペアユニット(Comparation Unit 1)を以下に示す。他のコンペアユニットも同様の構成を有する。
【0172】
PCIインターフェース416に付属するDMAブロックもしくは、スキャナ/プリンタコントローラ408から、同期ユニット4001に対し、DMAライトがプログラミングされた時点で、転送先のアドレスとそのDMAブロック固有のリクエスト信号が通知される。
【0173】
各コンペアユニットは、各DMAブロックからリクエストが出力された時点で、アドレスを内部に持つタイマによる現在時刻とともに記憶する、次に他のDMAブロックから、DMAライトに関するアドレスとリクエストが入力された時点で、コンペアユニットは両アドレスを比較する。一致した場合にはさらに、それぞれのレジスタに格納された時間を比較し、時間的に後からDMAライトの要求を出してきたDMAブロックが接続されたバスのバスアービタに対し、このマスタに対するバス使用強化を与えないようにする。これは、stop(ID)という信号により各バスのバスアービタに通知される。
【0174】
各バスアービタはstop(ID)信号により通知されたマスタに対しては、アービトレーションによるバス使用権の割り当てを行わない。
【0175】
時間が経過し、先にアクセス要求を行ったバスマスタにより当該メモリアドレスへのDMAライトが終了すると、先のマスタは、同期ユニットに対するリクエストを取り下げる、同期ユニットは、2番目にDMAライトの要求を出した、DMAブロックの接続するバスのバスアービタに対し、このDMAブロックへの、バス使用権許可禁止信号の発行をとりさげる。そして、後からDMAライトを行うべきマスタのDMAライトが行われる。
【0176】
双方のDMAライトが終了し、双方のリクエストが取り下げられると、タイマーがリセットされる。タイマーのカウントアップは再度どちらかのマスタからのリクエストが出力された時点で再度行われる。
【0177】
[2.9.スキャナ/プリンタコントローラ]
図43は、スキャナ/プリンタコントローラ408のブロック図である。図において、スキャナ/プリンタコントローラ408は、VideoI/Fによってスキャナおよびプリンタと接続され、内部バスGバスおよびIOバスにインターフェースするブロックである。大別して以下の8つのブロックから構成される。
1.スキャナ制御ユニット4303…ビデオI/Fを介してスキャナの動作制御を行う。
2.プリンタ制御ユニット4304…ビデオI/Fを介してプリンタの動作制御を行う。
3.スキャナ系画像処理ユニット4305…スキャナから入力される画像データに対して画像処理を行う。
4.プリンタ系画像処理ユニット4308…プリンタに出力する画像データに対して画像処理を行う。
5.スキャナ/ビデオ同期ユニット4306…スキャナから入力する画像データに対して、入力の同期タイミングを生成する。
6.プリンタ/ビデオ同期ユニット4307…プリンタに出力する画像データに対して、出力タイミングを生成する。プリンタとスキャナが同期可能な組み合わせの場合、スキャナ/ビデオ同期制御ユニット4306とともにコピー動作のビデオタイミングを生成する。
7.データ転送制御ユニット4302…データ転送の動作制御を行う。DMA動作ではマスターおよびスレーブの両動作をサポートする。
8.Gバス/IOバス インターフェースユニット4301…GバスおよびIOバスとスキャナ、プリンタコントローラを接続するインターフェースユニットである。データ転送制御ユニット4302とLバスによって接続される。
【0178】
<スキャナ/ビデオ同期制御ユニット4306>
図44にスキャナ/ビデオ同期制御ユニット4306のブロック図を示す。
【0179】
(スキャナ/ビデオ同期制御ユニットの概要)
スキャナ/ビデオ同期制御ユニット4306は、スキャナから入力される画像データの垂直同期信号(SVSYNC)、水平同期信号(SHSYNC)、画像データ同期クロック(SVCLK)により、画像データの取り込みタイミング信号、画像処理のためのタイミング信号、転送バッファであるFIFOヘ書き込みタイミング信号(SCFWR)を生成する。
【0180】
また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。設定量の画像データ取込を終了したタイミングでの状態信号(SALLEND)を生成する。ラインカウンタ4401は副走査方向の遅延と取り込みライン数を管理して、画像読み取り有効ラインの垂直同期信号(SEFHSYNC)を生成する。ピクセルカウンタ4402は主走査方向の画像取り込み遅延と取り込み画素数を管理する。取り込んだ画像データをFIFOに格納するための書き込みタイミング信号(SCFWR)を生成する。ページカウンタ4403は入力される画像データページ単位で管理する。設定されたページ数分の画像データ入力を終了すると、終了信号(SALLPEND)を生成する。
【0181】
ラインカウンタ4401,ピクセルカウンタ4402,ページカウンタ4403の各設定値はコントロールレジスタ4310によって読み書きされる。
・ライトデータ:IFWDATA[31:0]
・リードデータ:IFRDATA[31:0]
・ラインカウンタライト信号:SLCSET
・ラインカウンタリード信号:SLCRD
・ピクセルカウンタライト信号:SPCSET
・ピクセルカウンタリード信号:SPCRD
・ページカウンタライト信号:SPAGESET
・ページカウンタリード信号:SPAGERD
<プリンタ/ビデオ同期制御ユニット4307>
図45は、プリンタ/ビデオ同期制御ユニット4307のブロック図である。
【0182】
(プリンタ/ビデオ同期制御ユニットの概要)
プリンタ/ビデオ同期制御ユニット4307は、プリンタから入力される画像データの垂直同期信号(PVSYNC)、水平同期信号(PHSYNC)、画像データ同期クロック(PVCLK)により、画像データの取り込みタイミング信号、画像処理のためのタイミング信号、転送バッファであるFIFOからの読み出しタイミング信号(PRFRD)を生成する。
【0183】
また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。設定量の画像データ取り込みを終了したタイミングでの状態信号(PLEND)を生成する。ラインカウンタ4501は副走査方向の遅延と出力ライン数を管理して、画像出力有効ラインの垂直同期信号(PEFHSYNC)を生成する。ピクセルカウンタ4502は主走査方向の画像出力遅延と出力画素数を管理する。出力画像データをFIFOから読み出すための読み出しタイミング信号(PRFRD)を生成する。ページカウンタ4503は出力数画像データをページ単位で管理する。設定されたページ数分の画像出力が終了すると、終了信号(PALLPEND)を生成する。
【0184】
ラインカウンタ4501,ピクセルカウンタ4502,ページカウンタ4503の各設定値はコントロールレジスタ4310によって読み書きされる。
・ライトデータ:IFWDATA[31:0]
・リードデータ:IFRDATA[31:0]
・ラインカウンタライト信号:PLCSET
・ラインカウンタリード信号:PLCRD
・ピクセルカウンタライト信号 :PPCSET
・ピクセルカウンタリード信号 :PPCRD
・ページカウンタライト信号:PPAGESET
・ページカウンタリード信号:PPAGERD
<スキャナFIFOコントローラ4311>
図46は、スキャナFIFOコントローラのブロック図である。スキャナFIFOコントローラ4312(図43参照)は、スキャナから入力された画像データをGバスもしくはIOバスを介して転送するためのバッファとしてのFIFOと、そのFIFOをコントロールする回路を含む。容量1024バイト、データ幅24ビット(R,G,B各8ビット)の2系統のFIFO4602,4603を備える。これらのFIFOは、Gバス/IOバスのデータ転送動作とスキャナからの画像データ入力動作を交互に行うダブルバッファとして動作する。FIFOのデータ入出力は、スキャナFIFOセレクタ4601がFIFOのフルフラグ(FF)とエンプティーフラグ(EF)により制御する。
【0185】
<プリンタFIFOコントローラ4312>
図47は、プリンタFIFOコントローラ4312(図43)のブロック図である。プリンタFIFOコントローラ4312は、プリンタヘ出力する画像データをGバスもしくはIOバスを介して転送するためのバッファとしてのFIFOと、そのFIFOをコントロールする回路を含む。容量1024バイト、データ幅24ビット(R,G,B各8ビット)のFIFOを2系統備える。これらは、Gバス/IOバスのデータ転送動作とプリンタへの画像データ出力動作を交互に行うダブルバッファーとして動作する。FIFOのデータ入出力は、プリンタFIFOセレクタ4701がFIFOのフルフラグ(FF)とエンプティーフラグ(EF)により制御する。
【0186】
スキャナプリンタコントローラ408は、スキャナとプリンタとを同期動作させ、コピー動作をおこなうために、図43に示すように、スキャナデータを直接プリンタへ出力するデータパスを備える。また、スキャナからの入力データとプリンタへの出力データをFIFOにより同期させるデータパスも備える。それらのデータパスはスキャナとプリンタのデータ入出力の同期関係で選択可能とする。
【0187】
<データ転送制御ユニット4302>
図48は、データ転送制御ユニット4302のブロック図である。データ転送制御ユニット4302は、Lバスヘのデータの入出力を制御するブロックで、チェインコントローラ4801、マスタDMAコントローラ4802、転送アービタ4803等を含む。
【0188】
データ転送制御ユニットは、マスタとしては以下の動作を制御する。
1.スキャナからの画像データDMA転送およびチェインテーブル参照
2.プリンタへの画像データDMA転送およびチェインテーブル参照。
スレーブとしては以下の動作を制御する。
1.内部レジスタのライト・リード
2.スキャナからの画像データ転送
3.プリンタへの画像データ転送。
【0189】
(チェインコントローラ)
図49は、チェインコントローラ4801のブロック図である。チェインコントローラは、チェインテーブルを示すアドレスポインタブロックとDMAの転送先を示すアドレスポインタブロックから構成される。スキャナ、プリンタコントローラがマスタとしてDMAを行う際の転送先アドレス発生ブロックであり、チェインDMAをサポートする。スキャナデータ転送、プリンタデータ転送の2系統が独立で動作する。
【0190】
<Lバス>
Gバス/IOバスインターフェースユニットとデータ転送ユニットを接続する
スキャナ、プリンタコントローラ内のローカルなバスである。次のような信号を含む。なお、以下、信号の入出力は、データ転送制御ユニット4302からGバス/IOバスインターフェースユニット4301に出力する信号をOUT、Gバス/IOバスインターフェースユニット4301からデータ転送制御ユニット4302に入力する信号をINで示す。
・IFCLK (IN)…Lバスの基本クロック
・IFRDATA[63:0](OUT)…データ転送制御ユニットからGバス/IOバスインターフェースユニットに出力される64ビットのデータバスである。データ転送制御ユニットがマスタとスレーブのどちらの動作においても使用される。
・IFWDATA[63:0](IN)…Gバス/IOバスインターフェースユニット からデータ転送制御ユニットに出力される64ビットのデータバスである。データ転送制御ユニットがマスタとスレーブのどちらの動作においても使用される。
・IFMDTREQ(OUT)…データ転送制御ユニットがマスタとしてデータ転送の要求とデータおよびアドレスの有効状態を示す。”High”でデータの転送要求とアドレスバスIFMAD[3:12]の有効状態を示す。
・IFMAD[31:2](OUT)…データ転送制御ユニットがマスタ動作時、目的アドレスを示すアドレスバス。IFMDTREQ信号がアクティブ状態”High”で有効なアドレスを出力する。
・IFMRW(OUT)…データ転送制御ユニットがマスタ動作時、データの入出力を示す信号。”High”のときデータ転送制御ユニットはIFWDATA[63:0]からデータを入力する。”Low”のときデータ転送制御ユニットはIFRDATA[63:0]にデータを出力する。
・IFMDTACK(IN)…データ転送制御ユニットがマスタ動作時、IFMDTREQに対する応答信号、Gバス/IOバスインターフェースユニットから出力される。”High”のときIFRDATA[63:0)またはIFWDATA[63:0]が有効データであることを示す。
・PRIOR[3:0](OUT)…データ転送制御ユニットがマスタ動作時、データ転送の優先度を示す。優先度は表8のように定義される。
【0191】
【表8】
・MTSIZE[2:0](OUT)…データ転送制御ユニットがマスタ動作時、転送の単位サイズを示す。この単位サイズの転送中、IFMDTREQは”High”のアクティブ状態のままとなる。サイズは表9のように示される。
【0192】
【表9】
・IFSDTREQ(IN)…データ転送制御ユニットがスレーブ動作時、Gバス/IOバスインターフェースユニットからのデータ転送要求とデータおよびアドレスの有効状態をしめす。”High”でデータ転送要求とアドレスバスIFSAD[6:2]の有効状態を示す。
・IFSAD[6:2](IN)…データ転送制御ユニットがスレーブ動作時、目的アドレスを示すアドレスバス。IFSDTREQ信号がアクティブ状態”HIGH”で有効なアドレスを出力する。
・IFSRW(IN)…データ転送制御ユニットがスレーブ動作時、データの入出力を示す信号。”High”のときデータ転送制御ユニットはIFRDATA[63:0]にデータを出力する。”Low”のときデータ転送制御ユニットはIFWDATA[63:0]からデータを入力する。
・IFSDTACK(OUT)…データ転送制御ユニットがスレーブ動作時、IFSDTREQに対する応答信号。データ転送制御ユニットから出力される。”High”のときIFRDATA[63:0]またはIFWDATA[63:0]が有効データであることを示す。
・STSIZE(IN)…データ転送制御ユニットがスレーブ動作時、Gバス/IOバスインターフェースユニットからのデータ幅を示す。”High”でIFRDATA[63:0]またはIFWDATA[63:0]が有効となる。”Low”でIFRDATA[31:0]またはIFWDATA[31:0]が有効となる。
【0193】
<Gバス/IOバスインターフェースユニット>
図50は、Gバス/IOバスインターフェースユニット4301のブロック図である。Gバス/IOバスインターフェースユニットは、コピーエンジン内部の内部バス(Lバス)と外部バス(Gバス/IOバス)とのインターフェース部分である。このユニットは、他の機能ブロックで使えるように実現されるが、本実施の形態ではコピーエンジンが使用する。なお、コピーエンジンとは、スキャナ/プリンタコントローラ408及びそれにより制御されるスキャナとプリンタとを含めた総称である。Gバス/IOバスインターフェースユニットは、大きくバスセレクタユニット,IOバスコントローラ5002,Gバスコントローラ5003の三つの部分から構成される。
【0194】
バスセレクタユニット5001は、コピーエンジンがDMAマスタの時には、Lバスのバースト転送可能な転送量、優先度(緊急度)、転送先のアドレスと、さらに各バス(GバスとIOバス)の空き情報を基にして、動的にバスの選択を行い、対応するコントローラ(Gバスコントローラ5003かIOバスコントローラ5002)に、多少の前処理を施してLバスを接続する。コピーエンジンがDMAスレーブの時には、各バス(GバスとIOバス)からの要求を調停し、優先順位の高いバスとLバスを接続する。
【0195】
Gバスコントローラ5003とIOバスコントローラ5002は、Lバスと対応するバス(GバスとIOバス)のバスの変換を行う。以下に、各部の説明をする。
【0196】
コピーエンジンは、Gバス/IOバスの両方のバスに対してDMA可能なDMAマスタであり、Gバス/IOバスインターフェースユニット4301は、DMA転送する際に使用するバスを決定する。従来のシステムでは、転送先(アドレス)によりバスを切り替えているが、各バスの転送速度や使用率等を考慮しなければ、システム全体として良い性能が得られない。
【0197】
バスセレクタユニット5001は、Lバスのバースト転送可能な転送量、優先度(緊張度)、転送先のアドレスと、さらに各バス(GバスとIOバス)の空き情報を基にして、動的に効率的なバスの選択を行い、対応するコントローラ(Gバスコントローラ5003かIOバスコントローラ5002)に、多少の前処理を施して、Lバスを接続する。
【0198】
Gバスコントローラ5003とIOバスコントローラ5002は、Lバスと対応するバス(GバスとIOバス)同期ユニットヘ、書き込みアドレスと機能ブロック(ここでは、コピーエンジン)のIDを送り出す。以下に、各部の説明をする。
【0199】
(バスセレクタユニット)
図51は、バスセレクタユニット5001のブロック図である。その動作を以下に説明する。
【0200】
[コピーエンジンのマスター時の動作]
コピーエンジンがマスターの場合は、主に、バスセレクタユニットのLバスマスタシーケンサ5101で制御される。Lバスマスタシーケンサ5101は、コピーエンジンからIFMDTREQ(マスターデータ要求信号)を受けることにより、コピーエンジンのマスター動作の要求を知る。
【0201】
コピーエンジンは、IFMDTREQアサートと同時に、IFMAD[31:2](マスター転送アドレス信号)、MTSIZE[2:0](マスター転送長信号)、IFMRW(マスター・リード・ライト信号)をバスセレクタユニット5001に出力する。転送アドレスはアドレスカウンタ5102に、転送長は長さカウンタ5103に、それぞれラッチされる。
【0202】
Lバスマスタシーケンサ5101は、外部バストの転送を開始する時点でGバスを使用するか、IOバスを使用するかを、アドレスカウンタ, 長さカウンタ,プライオリティ,各バスのビジー状態から決定する。アドレスカウンタの下位ビット5がすべて0ではない場合、あるいは長さカウンタが64ビット×4未満の場合は、Gバスでの転送は不可能なので、IOバスを選択する。それ以外は、高プライオリティかつGバスが使用中かつIOバスが空いている、という場合を除き、Gバスを選択する。外部バスへの転送サイクルを終了した時点で、アドレスカウンタ5102と長さカウンタ5103を更新し、長さカウンタが0でなければ、上記の動作を繰り返す。バスの選択の基準を表10に示す。
【0203】
【表10】
【0204】
コピーエンジンから外部バスへの転送では、Lバスマスタシーケンサ5101は、データFIFO5104がフルでない限り、コピーエンジンへIFMDTACK信号をアサートし、転送データを要求し、得たデータをFIFO5104に書き込む。また、データFIFOがエンプティでない限り、外部バスコントローラ(IOバスコントローラ5002かGバスコントローラ5003)へマスター転送要巨M号(LbMReqかLgMReq)をアサートし、データ転送を要求する。外部バスコントローラ(IOバスコントローラかGバスコントローラ)は、データFIFO5104のデータを転送し、転送終了で、マスター転送通知信号(LbMAckかLgMAck)をアサートするので、Lバスマスタシーケンサ5101は、外部バスヘの転送の終了を知ることができる。
【0205】
外部バスからコピーエンジンへの転送では、Lバスマスタシーケンサ5101は、データFIFOがフルでない限り、外部バスコントローラ(IOバスコントローラかGバスコントローラ)へマスター転送要求信号(LbMReqかLgMReq)をアサートし、データ転送を要求し、データをデータFIFOに書き込み、データFIFOがエンプティでない限り、コピーエンジンへIFMDTACK信号をアサートし、転送データを要求し、得たデータFIFOのデータを書き込む。
【0206】
(IOバスコントローラ)
図52は、IOバスコントローラ5002のブロック図である。IOバスコントローラ5002は、LバスとIOバスのインターフェース部分である。
【0207】
IOバスマスタシーケンサ5201は、IOバスマスター時の動作を、IOバススレーブシーケンサ5202は、IOバススレーブの時の動作を、それぞれ制御する。
【0208】
[コピーエンジンのマスター時の動作]
バスセレクタユニット5001からのLbMReq信号のアサートにより、データ転送は開始される。転送の方向は、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMRdNotWr信号により決まる。転送のサイズは、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbBstCnt[1:0]信号により決まる。また、転送のアドレスはLbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMAddr[31:2]信号により決まる。
【0209】
IOバスからの転送(LbMRdNotWr信号が0の時)は、読み込み用データFIFOがフルであれば(bRFifoFullがアサート)、フルでなくなるのを待ち、IOバスマスタシーケンサは、決められたIOバスの転送を開始し、得たデータは、バスセレクタユニット5001 のデータFIFOに書き込む。
【0210】
IOバスヘの転送(LbMRdNotWr信号が1の時)は、書き込み用データFIFOがエンプティであれば(bWFifoEmptがアサート)、エンプティでなくなるのを待ち、IOバスマスタシーケンサは、決められたIOバスの転送を開始し、バスセレクタユニット5001のデータFIFOから得たデータをIOバス上に送る。
【0211】
(Gバスコントローラ)
図53は、Gバスコントローラ5003のブロック図である。Gバスコントローラ5003は、LバスとGバスのインターフェース部分である。
【0212】
Gバスマスタシーケンサ5301は、Gバスマスター時の動作を、Gバススレーブシーケンサ5302は、Gバススレーブの時の動作を、それぞれ制御する。
【0213】
[コピーエンジンのマスター時の動作]
バスセレクタユニット5001からのLbMReq信号のアサートにより、データ転送は開始される。転送の方向は、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMRdNotWr信号により決まる。転送のサイズは、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbBstCnt[1:0]信号により決まる。また、転送のアドレスはLbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMAddr[31:2]信号により決まる。
【0214】
Gバスからの転送(LgMRdNotWr信号が0の時)は、読み込み用データFIFOがフルであれば(gRFifoFullがアサート)フルでなくなるのを待ち、Gバスマスタシーケンサは、決められたGバスの転送を開始し、得たデータは、バスセレクタユニット5001 のデータFIFOに書き込む。
【0215】
Gバスヘの転送(LgMRdNotWr信号が1の時)は、書き込み用データFIFOがエンプティであれば(bWFifoEmptがアサート)、エンプティでなくなるのを待ち、Gバスマスタシーケンサは、決められたGバスの転送を開始し、バスセレクタユニット5001のデータFIFOから得たデータをGバス上に送る。
【0216】
[2.10.電力管理ユニット]
図54は、電力管理ユニット409のブロック図である。DoEngineはCPUを内蔵した大規模なASICである。このため、内部のロジックが全部同時に動作してしまうと、大量の熱を発生し、チップ自体が破壊されてしまう恐れがある。これを防ぐために、DoEngineは、ブロック毎の電力の管理、すなわちパワーマネジメントを行ない、更にチップ全体の消費電力量の監視を行なう。
【0217】
パワーマネージメントは、それぞれのブロックが各自個別に行なう。各ブロックの消費電力量の情報は、パワーマネージメントレベルとして、電力管理ユニット(PMU)409に集められる。PMU409では、各ブロックの消費電力量を合計し、その値が限界消費電力を超えないように、DoEngineの各ブロックの消費電力量を一括して監視する。
【0218】
<動作>
電力管理ブロックの動作は次の通りである。
・各ブロックは、4段階のパワーマネジメントレベルを持つ。
・PMUは、それぞれのレベルにおける消費電力の値をレジスタとして持つ。このレベル構成及び消費電力の値は、PM構成レジスタ5401に保持される。
・PMUは、各ブロックからパワーマネジメントレベルを2ビットのステータス信号として受け取り(後述)、レジスタ5401に設定された値と照合させて各ブロックの消費電力を知る。
・PMUは各ブロックの消費電力を加算器5403で加算し、DoEngine全体の消費電力量をリアルタイムに計算する。
・算出された消費電力量は、構成レジスタ5401に設定された消費電力のリミット値(PMリミット)と比較器5404で比較され、これを超えた場合には割込発生器5405から割り込み信号を発行する。
・このリミット値は2段階設定することができる。1段階目は、本当の限界から少し余裕を持たせた値を設定しておく。この値を超えると、通常の割込み信号が発行される。ソフトウェアはこれを受けて、新たにブロックを起動するような転送は始めないようにする。ただ、2段階目のリミット値に達しない範囲内では、ソフトウェアの管理の元で、新たなブロックを起動することができる。2段階目のリミット値は、デバイスが破壊される恐れのある値を設定しておく。万が一、この値を超えてしまった時には、NMI(割込マスクが設定できない割り込み)を発行して安全のためにシステムを停止させる。
・割込み信号は、PMUの状態レジスタ5402をリードすることで解除される。この状態レジスタ5402をリードした時点からタイマカウントを始め、タイマがエクスパイアするまで消費電力量が戻らなければ、再び割込み信号を発行する。このタイマの値の設定はPMUの構成レジスタ5401に設定される。
【0219】
<各ブロックのパワーマネージメント>
各ブロックのパワーマネージメント制御は、ブロック毎に自由に構成してよい。構成の例を示す。
【0220】
(構成例1)
この例では、内部ロジックへのクロックをオン/オフすることにより、パワーマネジメントを行なっているので、消費電力のレベルは2段階しか持っていない。このレベルをステータス信号として電力管理ユニット409に送る。図55にバスエージェントのブロック図を示す。
・バスエージェント5501は、各ユニット毎の内部ロジック5502、アドレスをデコードするデコーダ5503、クロックコントロール部5504、クロックゲート5505を含む。
・デコーダ5503とクロックコントロール部5504は常に動作しており、パワーマネージメントコントロールとして、バスのアクティビティーの監視、内部ロジックへのクロックのゲーティングを行なっている。
【0221】
<クロックコントロール>
・バスエージェントは、バスのアクティビティーを検出し、クロックのオン/オフを自動で行なう。
・バスエージェントには、Sleep, Wake Up, Waitの3つのステートがある。
・Sleepはバスエージェントにアクティビティーがなく、クロックゲートクロックを停止させている状態である。
・Sleepの状態でも、デコーダ部5503、クロックコントロール部5504は動作しており、バスをモニタリングして、要求を待っている。
・デコーダ5503が自分のアドレスを検出すると、クロックゲート5505を開き、内部ロジックのクロックを動作させ、バスの要求に応える。ステートはWake Upに移行する。また、この状態を電力管理ユニット409に通知する。・データ転送が終了すると、Waitステートに移行し、次の要求を待つ。この時クロックは動作したままである。要求があれば、Wake Upステートに戻り、転送を行なう。また、要求を待っている間はタイマによりカウントを行ない、要求がないままカウンタがタイムアップした場合は、Sleepステートへ移り、クロックを停止させる。この状態も電力管理ユニット409に通知される。
以上のようにして、消費電力が所定値を越えないように管理している。
【0222】
[その他の構成例]
図9及び図10で示したキャッシュの動作手順は、図56及び図57のようなものであってもよい。図56においては、MCバスよりデータ転送が開始されると、その最初にMCバスで示されるmTType[60:0]によってその転送をキャッシュオンで行うかオフで行うか判断される。ここでは、転送がバースト転送の時、そのバースト転送データ量がキャッシュの1ラインのデータ量より大か小かによって判断する。なお、キャッシュの1ラインは256ビット=4バースト分である。
【0223】
図56において、メモリコントローラは転送の開始でmTType[3:0]をチェックし、mTTypeが示すバースト長が1/2/4であれば、キャッシュオンで動作し、6/8/16/2×16/3×16/4×16の場合はキャッシュオフで動作する。キャッシュオンあるいはオフ後の動作は、図9及び図10と同様である。
【0224】
また、図58及び図59のように、デバイスによってキャッシュのオンオフを切り替えることもできる。図58において、メモリコントローラは転送の開始でmTType[6:4]をチェックすることにより転送要求デバイスを識別し、そのデバイスの転送要求をキャッシュオンで動作するか、オフで動作するかを判断するために、あらかじめ設定されている構成レジスタの値を参照し、キャッシュオンで動作するか、オフで動作するか決定する。キャッシュオンあるいはオフ後の動作は、図9及び図10と同様である。構成レジスタの設定は、ハードウエア的に決定(変更不可)していも良いし、ソフトウエアで書換え可能にしてもよい。
【0225】
【発明の効果】
以上説明したように本発明においては、少なくとも4つのバスのひとつにはメモリが、ひとつにはプロセッサが、他のふたつにはそれぞれ入出力機器が接続され、切り替え手段により、プロセッサに接続されたバスと入出力機器に接続されたバスとからの接続要求が調停されて、メモリに接続されたバスと入出力機器に接続された一方のバスと、プロセッサに接続されたバスと前記入出力機器に接続された他方のバスとのそれぞれが、並列的に接続される。
【0226】
これにより、要求に応じて接続するバスを切り替え、最適なバスを選んでデータの転送を行うことができる。さらに、バスの構成を柔軟にし、複数のバスの接続を並列に行えるようにして、バスの使用効率を向上させることができる。
【0227】
また、少なくとも4つのバスからの接続要求に応じてバス間を接続して通信路を形成するバススイッチにおいて、同時動作できる互いに異なる2つのバス間を接続した2つの通信路を形成することができる。
【0228】
これにより、スイッチによって要求に応じて接続するバスを切り替え、最適なバスを選んでデータの転送を行うことができため、複数のバスの接続を並列に行えるようにして、バスの使用効率を向上させることができる。
【0229】
また、それぞれにバスマスタを備えた少なくとも2つのバスを介して、それぞれのバスのバスマスタから同一のあて先に書き込みを行う場合、もっとも早くバス要求を出したバスマスタ以外のバスマスタに対するバス使用権を停止させて、複数のバスのそれぞれに接続されたバスマスタについて、それらがバスの使用権を得た順にメモリにアクセスするように制御することができる。
【0230】
これにより、時間経過に伴う処理順序を適正に保つことができる。
【0231】
また、バスマスタが接続された、それぞれがバスの調停手段を有する少なくとも2つのバスの状態と、バスマスタから出されるバス要求の情報とを判定し、それらバスのうちいずれを使用するかを、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定する。
【0232】
これにより、各バスマスタが使用するバスを、バスの使用状況やバス要求の優先度、バスの性能、転送するデータがバスに適合するか否かなどを動的に決定して選択するため、バスの効率を向上させることができる。
【図面の簡単な説明】
【図1】DoEngineを用いた装置あるいはシステムの構成例の図である。
【図2】DoEngineを用いた装置あるいはシステムの構成例の図である。
【図3】DoEngineを用いた装置あるいはシステムの構成例の図である。
【図4】DoEngineのブロック図である
【図5】キャッシュメモリコントローラの3つのステートを示す図である。
【図6】インタラプトコントローラ410のブロック図である。
【図7】メモリコントローラ403のブロック図である。
【図8】キャッシュコントローラ706を中心とする詳細なブロック図である。
【図9】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作を示すフローチャートである。
【図10】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作を示すフローチャートである。
【図11】ROM/RAMコントローラ707の構成を示す図である。
【図12】CPUからのバースト読み出しのタイミングを示すタイミング図である。
【図13】CPUからのバースト書き込みのタイミングを示すタイミング図である。
【図14】Gバスデバイスからのバースト読み出しのタイミングを示すタイミング図である。
【図15】Gバスデバイスからのバースト書き込みのタイミングを示すタイミング図である。
【図16】メモリフロントキャッシュにヒットした場合のシングル読み出しのタイミングを示すタイミング図である。
【図17】メモリフロントキャッシュにヒットしなかった場合のシングル読み出しのタイミングを示すタイミング図である。
【図18】メモリフロントキャッシュにヒットした場合のシングル書き込みのタイミングを示すタイミング図である。
【図19】メモリフロントキャッシュにヒットしなかった場合のシングル書き込みのタイミングを示すタイミング図である。
【図20】システムバスブリッジ(SBB)402のブロック図である。
【図21】IOバスインターフェースのブロック図である。
【図22】Gバスインターフェース2006のブロック図である。
【図23】仮想メモリマップ、物理メモリマップ、Gバスのアドレス空間でのメモリマップ、IOバスのアドレス空間でのメモリマップの図である。
【図24】レジスタ等を含む図23における斜線部の512メガバイトを示すマップの図である。
【図25】アドレススイッチ2003のブロック図である。
【図26】データスイッチ2004のブロック図である。
【図27】Gバスからの書き込み/読み出しサイクルのタイミング図である。
【図28】Gバスのバースト停止サイクルのタイミング図である。
【図29】Gバスのトランザクション停止サイクルのタイミング図である。
【図30】Gバスのトランザクション停止サイクルのタイミング図である。
【図31】Gバスのトランザクション停止サイクルのタイミング図である。
【図32】Gバスのトランザクション停止サイクルのタイミング図である。
【図33】PCIバスインターフェース416のブロック図である。
【図34】Gバスアービタ(GBA)406のブロック図である。
【図35】DoEngine400内におけるGバス404を中心とする、Gバス上のバスマスタによるDMAに係るブロック図である。
【図36】連続してバスを使用する回数が、バスマスタ1〜4のすべてについて1に設定されている場合の公平アービトレーションモード(フェアモード)の例を示す図である。
【図37】連続してバスを使用する回数が、バスマスタ1についてのみ2であり、他のバスマスタは1に設定されている場合の公平アービトレーションモードの例を示す図である。
【図38】連続してバスを使用する回数がそれぞれ1ずつであり、バスマスタ1が優先バスマスタと設定されている場合の優先アービトレーションモードの例を示す図である。
【図39】バスマスタ1からのバス要求により、バスマスタ4のバス要求が許可されているにもかかわらず中断された例を示す図である。
【図40】IOバスアービタ407のブロック図である。
【図41】同期ユニット4001のブロック図である。
【図42】同期ユニット内の一つコンペアユニットの図である。
【図43】スキャナ/プリンタコントローラ408のブロック図である。
【図44】スキャナ/ビデオ同期制御ユニット4306のブロック図である。
【図45】プリンタ/ビデオ同期制御ユニット4307のブロック図である。
【図46】スキャナFIFOコントローラのブロック図である。
【図47】プリンタFIFOコントローラ4312のブロック図である。
【図48】データ転送制御ユニット4302のブロック図である。
【図49】チェインコントローラ4801のブロック図である。
【図50】Gバス/IOバスインターフェースユニット4301のブロック図である。
【図51】バスセレクタユニット5001のブロック図である。
【図52】IOバスコントローラ5002のブロック図である。
【図53】Gバスコントローラ5003のブロック図である。
【図54】電力管理ユニット409のブロック図である。
【図55】バスエージェントのブロック図である。
【図56】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図57】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図58】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図59】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
Claims (10)
- 少なくとも4つのバスと、
前記バスに接続されたバスマスタと、
前記バス同士の接続を、前記バスのそれぞれに接続されたバスマスタのバスの要求に応じて切り替える切り替え手段とを備え、
前記少なくとも4つのバスの内のひとつにはメモリが、他のバスにはそれぞれ少なくとも1つのバスマスタが接続され、
前記他のバスには、プロセッサに接続されたバスと、入出力機器に接続された少なくとも2つのバスとを含み、前記切り替え手段は、プロセッサに接続されたバスと入出力機器に接続されたバスとからの接続要求を調停し、
前記切り替え手段は、前記メモリに接続されたバスと前記入出力機器に接続された一方のバスと、前記プロセッサに接続されたバスと前記入出力機器に接続された他方のバスとのそれぞれを、並列的に接続することを特徴とするバス管理装置。 - 前記切り替え手段は、前記プロセッサからのメモリあるいは入出力に対する接続要求と、前記入出力バスそれぞれからメモリに対する接続要求とを調停し、バス同士の接続を切り替えることを特徴とする請求項1に記載のバス管理装置。
- 前記入出力機器は画像データの入力及び出力を行う画像入出力機器であり、前記入出力機器を制御する制御部を更に備え、該制御部は、前記入出力機器に接続された2つのバスに接続され、選択的にいずれかを用いることを特徴とする請求項1に記載のバス管理装置。
- 少なくとも4つのバスに各々接続されるバスインターフェースと、
前記バスからの接続要求に応じて2つの前記バス間を接続して通信路を形成するバススイッチ手段と、
前記バスから受信した接続要求を調停する調停手段とを備え、
前記スイッチ手段は、同時動作できる互いに異なる2つのバス間を接続した2つの通信路を形成することを特徴とするバス管理装置。 - 前記バスインターフェースは、メモリに接続されたバスに接続される第1のバスインターフェースと、プロセッサに接続されたバスに接続される第2のバスインターフェースと、入出力機器に接続された少なくとも2つの第3、第4のバスインターフェースを含むことを特徴とする請求項4記載のバス管理装置
- それぞれにバスマスタを備えた少なくとも2つのバスと、
前記バスを介してアクセスされるメモリと、
前記バスそれぞれに接続され、当該バスのバスマスタによるバス要求を調停し、そのいずれかにバス使用権を付与する調停手段と、
前記バスそれぞれについてバス使用権を付与された複数のバスマスタが同一のあて先に書き込みを行う場合、それらバスマスタのうち、もっとも早くバス要求を出したバスマスタ以外のバスマスタに対するバス使用権を停止させるよう、前記調停手段に対して通知するバス同期手段と
を備えることを特徴とするバス管理装置。 - 前記バス同期手段は、前記各バスのバスマスタがバス要求を出した時刻を記憶し、バス要求とともに指定されたアドレスを比較して一致した場合には前記記憶された時刻を比較し、もっとも速い時刻のバス要求でないバス要求を出したバスマスタを停止させることを特徴とする請求項6に記載のバス管理装置。
- それぞれがバスの調停手段を有する少なくとも2つのバスと、
前記バスに接続されたバスマスタと、
前記バスの状態と、前記バスマスタから出されるバス要求の情報とを判定し、前記バスのうちいずれを使用するか決定する決定手段とを備え、
前記バス要求の情報には、バス要求の優先度とデータの転送先と転送サイズとを含み、前記バスの状態には、各バスの使用状態を含み、前記決定手段は、要求された前記転送先と転送サイズとが許されるバスがひとつの場合にはそのバスを使用するものと決定し、複数ある場合には、転送速度の速い方のバスを優先的に使用するよう決定することを特徴とするバス管理装置。 - 単一の半導体基板上に形成されてなることを特徴とする請求項1乃至8のいずれかに記載のバス管理装置。
- 請求項1乃至9のいずれかに記載のバス管理装置を備え、該バス管理装置により、画像入力装置及び画像出力装置が接続されたバスを管理することを特徴とする複合機器の制御装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003180262A JP2004046851A (ja) | 2003-06-24 | 2003-06-24 | バス管理装置及びそれを有する複合機器の制御装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003180262A JP2004046851A (ja) | 2003-06-24 | 2003-06-24 | バス管理装置及びそれを有する複合機器の制御装置 |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP20057097A Division JP3524337B2 (ja) | 1997-07-25 | 1997-07-25 | バス管理装置及びそれを有する複合機器の制御装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2004046851A true JP2004046851A (ja) | 2004-02-12 |
Family
ID=31712472
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003180262A Pending JP2004046851A (ja) | 2003-06-24 | 2003-06-24 | バス管理装置及びそれを有する複合機器の制御装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2004046851A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2013014776A1 (ja) * | 2011-07-27 | 2013-01-31 | 富士通株式会社 | 検証プログラム、情報処理装置および検証方法 |
| JP2015176380A (ja) * | 2014-03-14 | 2015-10-05 | 株式会社リコー | 画像処理装置および画像形成装置 |
| US9667531B2 (en) | 2013-07-29 | 2017-05-30 | Ricoh Company, Limited | Image processing apparatus and control method |
| JP2020047005A (ja) * | 2018-09-19 | 2020-03-26 | 富士ゼロックス株式会社 | 情報処理装置および半導体装置 |
| CN113641622A (zh) * | 2020-04-27 | 2021-11-12 | 富泰华工业(深圳)有限公司 | 访问数据总线的装置、方法及系统 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6367665A (ja) * | 1986-09-09 | 1988-03-26 | Hitachi Ltd | デ−タ処理装置 |
| JPH01185757A (ja) * | 1988-01-21 | 1989-07-25 | Fujitsu Ltd | データ転送装置 |
| JPH022445A (ja) * | 1988-06-10 | 1990-01-08 | Hitachi Ltd | 多重バスシステム |
| JPH04227557A (ja) * | 1990-06-04 | 1992-08-17 | Hitachi Ltd | 情報処理装置 |
| JPH04295947A (ja) * | 1990-12-31 | 1992-10-20 | Internatl Business Mach Corp <Ibm> | 動的割振りが可能なバスを備えるコンピュータ |
-
2003
- 2003-06-24 JP JP2003180262A patent/JP2004046851A/ja active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6367665A (ja) * | 1986-09-09 | 1988-03-26 | Hitachi Ltd | デ−タ処理装置 |
| JPH01185757A (ja) * | 1988-01-21 | 1989-07-25 | Fujitsu Ltd | データ転送装置 |
| JPH022445A (ja) * | 1988-06-10 | 1990-01-08 | Hitachi Ltd | 多重バスシステム |
| JPH04227557A (ja) * | 1990-06-04 | 1992-08-17 | Hitachi Ltd | 情報処理装置 |
| JPH04295947A (ja) * | 1990-12-31 | 1992-10-20 | Internatl Business Mach Corp <Ibm> | 動的割振りが可能なバスを備えるコンピュータ |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2013014776A1 (ja) * | 2011-07-27 | 2013-01-31 | 富士通株式会社 | 検証プログラム、情報処理装置および検証方法 |
| US9667531B2 (en) | 2013-07-29 | 2017-05-30 | Ricoh Company, Limited | Image processing apparatus and control method |
| JP2015176380A (ja) * | 2014-03-14 | 2015-10-05 | 株式会社リコー | 画像処理装置および画像形成装置 |
| JP2020047005A (ja) * | 2018-09-19 | 2020-03-26 | 富士ゼロックス株式会社 | 情報処理装置および半導体装置 |
| US11375080B2 (en) | 2018-09-19 | 2022-06-28 | Fujifilm Business Innovation Corp. | Information processing apparatus and semiconductor device for writing data to a volatile memory through pluarl communication pathway |
| JP7107126B2 (ja) | 2018-09-19 | 2022-07-27 | 富士フイルムビジネスイノベーション株式会社 | 情報処理装置および半導体装置 |
| CN113641622A (zh) * | 2020-04-27 | 2021-11-12 | 富泰华工业(深圳)有限公司 | 访问数据总线的装置、方法及系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6438635B1 (en) | Bus management using logic-based arbitration among bus access requests | |
| US6850995B1 (en) | Control unit selectively connected with a first bus and a second bus for controlling a displaying process in parallel with a scanning process | |
| US6049841A (en) | Method and apparatus of selecting data transmission channels | |
| US6697898B1 (en) | Information processing system for composite appliance | |
| WO2011059812A1 (en) | Address translation unit with multiple virtual queues | |
| US6347202B1 (en) | Control device and control method for composite appliance | |
| US6480916B1 (en) | Information processing method and system for composite appliance | |
| JP3976927B2 (ja) | バス制御装置 | |
| US6003106A (en) | DMA cache control logic | |
| EP1001606B1 (en) | Image input/output control system | |
| US6604151B1 (en) | Control apparatus for composite appliance | |
| JP5137171B2 (ja) | データ処理装置 | |
| JP2004046851A (ja) | バス管理装置及びそれを有する複合機器の制御装置 | |
| US6163815A (en) | Dynamic disablement of a transaction ordering in response to an error | |
| JP2004030672A (ja) | バス管理装置及びそれを有する複合機器の制御装置及びバス管理方法 | |
| JP2004062887A (ja) | 電力管理装置及びそれを有する複合機器の制御装置 | |
| JP4136163B2 (ja) | データ入出力装置およびデータ入出力装置のコントローラ | |
| JP2000215157A (ja) | バス制御装置 | |
| JP2000215156A (ja) | 複合機器の情報処理システム | |
| JP3206656B2 (ja) | バス上でのプリフェッチ装置およびプリフェッチ方法 | |
| JP5094050B2 (ja) | メモリ制御装置、メモリ制御方法および組み込みシステム | |
| JP2000211215A (ja) | 複合機器の制御装置 | |
| JPH11212903A (ja) | データ処理システム、周辺装置及びマイクロコンピュータ | |
| JP2006127408A (ja) | データ転送システム及びその制御方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051114 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051118 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060113 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060227 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060421 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060818 |
