JP2004062887A - System for controlling electric power and control device of composite equipment comprising it - Google Patents

System for controlling electric power and control device of composite equipment comprising it Download PDF

Info

Publication number
JP2004062887A
JP2004062887A JP2003180264A JP2003180264A JP2004062887A JP 2004062887 A JP2004062887 A JP 2004062887A JP 2003180264 A JP2003180264 A JP 2003180264A JP 2003180264 A JP2003180264 A JP 2003180264A JP 2004062887 A JP2004062887 A JP 2004062887A
Authority
JP
Japan
Prior art keywords
bus
master
data
transfer
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003180264A
Other languages
Japanese (ja)
Inventor
Atsushi Date
伊達 厚
Takashi Fujiwara
藤原 隆史
Tadaaki Maeda
前田 忠昭
Noboru Yokoyama
横山 登
Katsunori Kato
加藤 勝則
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2003180264A priority Critical patent/JP2004062887A/en
Publication of JP2004062887A publication Critical patent/JP2004062887A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

<P>PROBLEM TO BE SOLVED: To prevent a large amount of heat evolution when a system is integrated on one semiconductor chip. <P>SOLUTION: Information on a power consumption of an electric circuit including a plurality of circuit blocks of a large scale ASIC is accumulated in a power management unit 409. The system checks whether a total of power consumption of each block exceeds the limit of electric power and, if it does, issues an interrupt signal. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は、スキャナ等の画像入力装置と、プリンタ等の画像出力装置とを効率的に制御する複合機器の制御装置に関する。
【0002】
【従来の技術】
従来、スキャナなどの画像入力装置と、プリンタなどの画像出力装置を組み合わせた、複写機やファクシミリ、あるいはそれらを単体として備えたコンピュータシステムなどが実用化されている。こういったシステムでは、画像データを扱うために、膨大な量のデータを効率的に処理する必要がある。
【0003】
【発明が解決しようとする課題】
このようなシステムをひとつの半導体チップに集積すると大量の熱が発生し、パッケージが熱で破壊されるおそれがあるという問題点があった。
【0004】
本発明は、全体としての処理速度を向上させるバス管理装置及びそれを有する複合機器の制御装置を提供することを第1の目的とする。
【0005】
また、本発明は上記問題に鑑みてなされたもので、回路の動作状態を監視して消費電力を抑制し、大量の熱を発生を抑制する電力管理装置及びそれを有する複合機器の制御装置を提供することを第2の目的とする。
【0006】
【課題を解決するための手段】
上記の問題を解決するために、本発明の電力管理装置は次のような構成からなる。すなわち、制御部により制御された複数の回路ブロックを含む電気回路の消費電力を制御する電力管理装置であって、各ブロックの動作状態を監視する状態監視手段と、動作状態にあるブロックの消費電力を加算する加算手段と、加算された電力を所定の閾値と比較し、閾値を越えたことを前記制御部に通知する通報手段とを備える。
【0007】
あるいは、上記いずれかに記載の電力管理装置を備える。
【0008】
【発明の実施の形態】
次に本発明の実施の形態として、プロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナー/プリンタコントローラ、PCIインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである”DoEngine”を説明する。
【0009】
[1.DoEngine概要]
DoEngineは、MIPSテクノロジー社のR4000プロセッサとコンパチブルなプロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナー/プリンタコントローラ、PCIインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである。高速並列動作、ビルディングブロック手法を採用し実装される。
【0010】
プロセッサシェル(プロセッサコアを含むプロセッサ周辺回路の総称)内には最大でインストラクション、データそれぞれ16Kバイトの計32Kバイトのキャッシュメモリ、FPU(浮動小数点演算ユニット)、MMU(メモリ管理ユニット)、ユーザー定義可能なコプロセッサなどを内蔵することが可能である。
【0011】
PCIバスインターフェースを有するので、PCIバススロットを有するコンピュータシステムと共に用いることができる。また、PCIサテライト構成に加え、PCIホストバスブリッジ構成にてPCIバスコンフィギュレーションを発行することが可能であり、安価なPCI周辺デバイスと組み合わせることにより、マルチファンクションペリフェラル(複合機能周辺機器)のメインエンジンとして使用することも可能である。さらにPCIバスインターフェースを有するレンダリングエンジン、圧縮・伸長エンジンと組み合わせることも可能である。
【0012】
チップ内部に汎用IOコアを接続するIOバス、及び、画像データ転送に最適化したグラフィックバス(Gバス:Graphics Bus)の2系統の独立したバスを有し、メモリ、プロセッサとこれらのバスをクロスバスイッチを介して接続することにより、マルチファンクションシステムにおける同時動作に必須の、並列性の高い高速データ転送を実現している。
【0013】
メモリには、画像データに代表される、連続したデータ列のアクセスに対し、最高のコストパフォーマンスを有するシンクロナスDRAM(SDRAM)をサポートし、SDRAMのバーストアクセス高速データ転送のメリットを享受できない小さなデータ単位でのランダムアクセスにおける性能低下を最小に抑えるために、8Kバイトの2ウェイセットアソシアティブ・メモリフロントキャッシュをメモリコントローラ内に備える。メモリフロントキャッシュは、すべてのメモリライトに対するバススヌープが難しい、クロスバスイッチを採用したシステム構成においても、複雑な機構なしに、キャッシュメモリによる高性能化が達成出来る方式である。また、リアルタイムデータ転送(機器制御)が可能な、プリンタ及びスキャナーとのデータインターフェース(Video Interface)を有し、さらにハードウェアによる、機器間同期のサポート及び画像処理を行う事により、スキャナ、プリンタ分離型の構成においても、高品質で高速なコピー動作の実現が可能な構成となっている。
【0014】
なお、DoEngineは、コアが3.3Vで動作し、IOは5Vトレラントである。
【0015】
図1及び図2,図3は、DoEngineを用いた装置あるいはシステムの構成例を示している。図1は分離構成型であり、パーソナルコンピュータ102には、それが備えるPCIインターフェースを介してDoEngineを備えたローカルボード101が装着される。ローカルボード101にはDoEngineのほか、後述するメモリバスを介してDoEngineと接続されたメモリと、色処理回路(チップ)が設けられている。このローカルボード101を介して、高速スキャナ103とカラー/モノクロプリンタ104とがパーソナルコンピュータ102に接続される。この構成により、パーソナルコンピュータの制御のもとで、ローカルボード101により、スキャナ103から入力された画像情報を処理し、プリンタ104から出力させることができる。
【0016】
また、図2及び図3はスキャナ203とプリンタ202とを一体に組み込んだ例で、図2は通常の複写機に類する構成を、図3(a)はファクシミリ装置などの構成を示している。図3(b)は、図3(a)をコントロールするコンピュータを示している。
【0017】
これらのうち、図1,2は、PCIインターフェースを介して接続された外部のCPUによりDoEngineが制御されるというスレーブモードで使用されている例であり、図3は、DoEngineのCPUが主体となり、PCIインターフェースを介して接続されたデバイスを制御するマスタモードで使用されている例である。
【0018】
表1として、DoEngineの仕様を示す。外部インターフェースとして、PCI,メモリバス,ビデオ,汎用入出力,IEEE1284,RS232C,100baseT/10baseT,LCDパネル及びキーを備えるが、更にUSBを有していてもよい。内蔵ブロックとして、CPUコアに加えて、1次キャッシュ,キャッシュ付きメモリコントローラ,コピーエンジン,IOバスアービタ,グラフィックバスアービタなどを備えている。また、DMAコントローラはチャネル数が5であり、グラフィックバス,IOバスともにアービトレーションは、優先度付きの先着順処理方式で行われる。
【0019】
【表1】

Figure 2004062887
【0020】
[2.DoEngineの構成及び動作]
本章では、DoEngine の総論に加え、各機能ブロック毎のブロック図、概要、詳細、コアインターフェース、タイミング図などを解説する。
【0021】
[2.1.DoEngineのチップ構成]
図4として、DoEngineのブロック図を示す。DoEngine400は次世代複合機能周辺機器(システム)(MFP:Multi Function Peripheral or MFS:Multi Function System)の主たるコントローラとして設計、開発された。
【0022】
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モジュール間を、可能な限り、同時平行接続を確保することができるように設計されている。
【0023】
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にも接続されている。
【0024】
[2.2.プロセッサシェル]
プロセッサシェルとは、プロセッサコアに加えMMU(Memory Management Unit)、命令キャッシュ、データキャッシュ、ライトバックバッファ及び掛け算ユニットを含んだブロックを指す。
<キャッシュメモリ>
図5に示したように、キャッシュメモリコントローラは、無効(Invalid),有効かつクリーン(Valid Clean:キャッシュが更新されていない),有効かつダーティ(Valid Dirty:キャッシュが更新されている)の3つのステートキャッシュを管理する。この状態に応じて、キャッシュは制御される。
【0025】
[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などである。
【0026】
この際、ソフトウェアコンフィギュレーション可能なマスクレジスタ(Int Mask Logic 0 − 5)602により、各要因毎に割り込みをマスクをすることが可能である。また、外部インタラプト入力は、選択的エッジ検出回路601により、信号線ごとに、エッジセンス/レベルセンスを選択することが出来る。要因レジスタ(Detect and set Cause Reg 0 − 5)603は、各レベルごとに、どのインタラプトがアサートされているかを示すとともに、ライト動作を行うことで、レベルごとにクリアを行う事が出来る。
【0027】
各レベルの割込み信号は、各レベル毎に少なくともひとつの割り込みがあれば割込み信号を出力すべく、論理和回路604により論理和として出力される。なお、各レベル内での複数要因間のレベル付けはソフトウェアにて行う。
【0028】
[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ビットとする。
【0029】
[2.4.2.構成及び動作]
メモリコントローラの各部はこれから説明するような構成となっている。
<MCバスインターフェース(701)>
MCバスは、SBB402−メモリコントローラ403間の専用のバスであり、またSBB内部の基本バスとして用いられている。
【0030】
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(入力)…バスエラー:
パリティエラーやその他のバスエラーが発生した場合にアサートされる。
【0031】
なお、上述した入出力の別は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を以下のように制御する。
【0032】
(DRAM構成)
DRAMの構成としては、x4,x8,x16ビットタイプの16/64メガビットSDRAMを64ビットデータバスで8バンク制御することができる。
【0033】
【表2】
Figure 2004062887
【0034】
(DRAMアドレスビット構成)
DRAMのアドレスビットの割付けについては、64ビットSDRAMの場合にはMA[13:0]を、16ビットSDRAMの場合にはMA[11:0]を使用する。
【0035】
【表3】
Figure 2004062887
(SDRAMプログラマブル構成(モードレジスタ))
SDRAMは内部にモードレジスタを持ち、モードレジスタ設定コマンドを用いて下記の項目を設定する。
(1)バースト長:
バースト長は、1,2,4,8,フルページのいずれかが設定可能であるが、CPUからのバースト転送長が4であることから、バースト長4が最適である。Gバスからの16バースト以上の転送は、Read/Writeコマンド(オートプリチャージ無し)を連続して発行することにより実現する。
(2)ラップタイプ(Wrap Type):
バースト転送時のアドレスのインクリメント順を設定する。「シーケンシャル」または「インターリーブ」のどちらかが設定可能である。
(3)CASレーテンシ:
CASレーテンシは、1,2,3のいずれかが設定可能であり、使用するSDRAMのグレードと動作クロックにより決定される。
【0036】
(SDRAMコマンド)
SDRAMに対して以下のコマンドをサポートする。各コマンドの詳細は、SDRAMデータブックに記載されている。
・モードレジスタ設定コマンド
・アクティブコマンド
・プリチャージコマンド
・ライトコマンド
・リードコマンド
・CBR(Auto)リフレッシュコマンド
・セルフリフレッシュ開始コマンド
・バーストストップコマンド
・NOPコマンド
(SDRAMリフレッシュ)
SDRAMは、2048サイクル/32ms(4096/64ms)であるので、16,625nsおきにCBRリフレッシュコマンドを発行する。メモリコントローラは設定可能なリフレッシュカウンタを持ち、自動的にCBRリフレッシュコマンドを発行する。Gバスからの16−バースト×nの転送中は、リフレッシュ要求を受け付けない。したがって、リフレッシュカウンタは16−バースト×4転送の時間だけ余裕を持った値を設定しなければならない。また、セルフリフレッシュをサポートする。このコマンドを発行すると、パワーダウンモード(ramclke_L=Low)時にセルフリフレッシュが続行される。
【0037】
(SDRAM初期化)
メモリコントローラはパワーオンリセット後、SDRAMに対して以下の初期化を行なう。すなわち、電源投入後100μsのポーズ期間をおいて、
(1)プリチャージウコマンドを用いて全バンクをプリチャージする、
(2)SDRAMのモードレジスタを設定する、
(3)オートリフレッシュコマンドを用いて、リフレッシュを8回行う。
【0038】
<フラッシュROMコントローラ(704)>
フラッシュROMコントローラ704は、romAddr[23:2]のアドレス信号と4個のチップセレクト(romCs_L[3:0])信号をサポートする。アドレス信号romAddr2〜romAddr9はパリティ信号ramPar0〜ramPar7とマルチプレクスされ、アドレス信号romAddr10〜romAddr23は、DRAMアドレスramAddr0〜ramAddr13とマルチプレクスされている。
【0039】
<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に示す。
【0040】
(キャッシュの動作)
ここで、MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作を図8のブロック図と、図9及び図10に示すフローチャートを用いて説明する。
【0041】
MCバスよりデータ転送が開始されると、その転送の最初にMCバス上で示されるmTType[6:0]によって、その転送がキャッシュオンでおこなうか、オフでおこなうかの判断がおこなわれる。この説明では、転送がシングル転送であればオン、バースト転送であればオフと判断することにする(ステップS901)。すなわち、mTType(3)が”1”hであれば、シングル転送をあらわすのでキャッシュオンで、”0”hであればバースト転送をあらわすのでキャッシュオフで転送を行う。
【0042】
シングル転送(キャッシュオン)の場合、アドレス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)。
【0043】
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)。
【0044】
ここでヒットであれば、リードかライトかが判定される(ステップ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ヒット)に書き換えて、転送が終了する。
【0045】
一方、ヒットかつライトの場合にはつぎのようになる。すなわち、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)。
【0046】
一方、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)。
【0047】
ステップS901においてバースト転送(キャッシュオフ)の場合、リード、ライトともSDRAMに対してだけ行われ(ステップS907−S909)、キャッシュデータやタグの書き換え等は行わない。
【0048】
<ROM/RAMインターフェース(707)>
ROM/RAMコントローラ707の構成を図11に示す。ブロック1101〜ブロック1104により、SDRAMのデータ信号、アドレス信号、パリティ信号が、フラッシュROMのデータ信号、アドレス信号と多重化される。
【0049】
[2.4.3.タイミングダイアグラム]
上述したメモリコントローラ403によるデータの読み出し・書き込み等の処理のタイミングを、図12〜図19を用いて説明する。
【0050】
図12は、CPUからのバースト読み出しのタイミングを示す。バースト長は4、CASレイテンシは3である。図9のステップS909における処理に相当する。
【0051】
図13は、CPUからのバースト書き込みのタイミングを示す。バースト長は4、CASレイテンシは3である。図9のステップS908における処理に相当する。
【0052】
図14は、Gバスデバイスからのバースト読み出しのタイミングを示す。Gバスのバースト長は16、SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS909における処理に相当する。
【0053】
図15は、Gバスデバイスからのバースト書き込みのタイミングを示す。Gバスのバースト長は16、SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS908における処理に相当する。
【0054】
図16は、メモリフロントキャッシュにヒットした場合のシングル読み出しのタイミングを示す。読み出されるデータmDataIn[63:0]としては、キャッシュ・メモリであるb1_data_ram702−aあるいはb2_data_ram702−bから読み出されたb1/b2_out_dataが出力される。SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS905における処理に相当する。
【0055】
図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における処理に相当する。
【0056】
図18は、メモリフロントキャッシュにヒットした場合のシングル書き込みのタイミングを示す。書き込まれるデータmDataOut[63:0]は、キャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bに書き込まれるとともに、SDRAMにも書き込まれる。SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS906における処理に相当する。
【0057】
図19は、メモリフロントキャッシュにヒットしなかった場合のシングル書き込みのタイミングを示す。書き込まれるデータmDataOut[63:0]は、キャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bには書き込まれず、SDRAMに対してだけ書き込まれる。SDRAMのバースト長は4、CASレイテンシは3である。図10のステップS1002における処理に相当する。
【0058】
なお、ここでは、MCバスよりデータ転送が開始されると、その転送の最初にMCバス上で示されるmTType[6:0]によって、転送がシングル転送であればオン、バースト転送であればオフと判断しているが、バースト転送の場合に、さらにバースト長を判定し、バースト長がキャッシュの1ラインよりも小さい場合にはキャッシュオンとし、そうでない場合にはキャッシュオフとして動作するようにしてもよい。
【0059】
また、MCバスに、メモリへのデータ転送を要求したバスマスタの識別子を示す信号を含ませることで、メモリコントローラがその識別子を判定し、識別子に応じてキャッシュオン/キャッシュオフの制御を行うこともできる。この場合には、識別子とキャッシュオン/オフの別とを対応させた書換え可能なテーブルを用意し、それを参照してキャッシュのオンオフを切り替えることもできる。このテーブルは、例えば特定のアドレスを割り当ててCPU401などから書換え可能にすることもできる。
【0060】
[2.5.システムバスブリッジ(SBB)及びIOバス,Gバス]
図20としてシステムバスブリッジ(SBB)402のブロック図を示す。
【0061】
SBB402は、IOバス(入出力バス),Gバス(グラフィックバス),Pバス(プロセッサローカルバス)及びMCバス間の相互接続をクロスバスイッチを用いて提供する、マルチチャネル双方向バスブリッジである。クロスバスイッチにより、2系統の接続を同時に確立することが出来、並列性の高い高速データ転送を実現出来る。
【0062】
SBB402は、IOバス405と接続するためのIOバスインターフェース2906と、Gバス404と接続するためのGバスインターフェース2006と、プロセッサコア401と接続するためのCPUインターフェーススレーブポート2002と、メモリコントローラ403と接続するためのメモリインターフェースマスターポートを備えるほか、アドレスバスを接続するアドレススイッチ2003,データバスを接続するデータスイッチ2004を含む。また、プロセッサコアのキャッシュメモリを無効化するキャッシュ無効化ユニット2005を備えている。
【0063】
IOバスインターフェース2009には、IOバスデバイスからのDMAライトを高速化するライトバッファと、IOバスデバイスのリードを効率化するリードプリフェッチキューを実装する。これらのキュー内に一時的に存在するデータに関するコヒーレンシ管理はハードウェアにて行う。なお、IOバスに接続されたデバイスをデバイスと呼ぶ。
【0064】
プロセッサコアは32ビットバスに対するダイナミックバスサイジングをサポートしているが、SBB402ではこれをサポートしない、将来、バスサイジングをサポートしないプロセッサを用いる場合にもSBBに必要な改造を最小限におさえるためである。
【0065】
[2.5.1.SBB及び各バスの構成及び動作]
<IOバスインターフェース>
図21は、IOバスインターフェースのブロック図である。
【0066】
IOバスインターフェース2009は、IOバスとMCバス間の双方向ブリッジ回路である。IOバスはDoEngineの内部汎用バスである。
【0067】
IOバスインターフェース2009内には、マスタコントロールブロック2011、スレーブコントロールブロック2010、データインターフェース2012、DMAC2013、IOバスバッファの5ブロックが含まれる。図21上で、DMAC2013は、機能上3個のシーケンサとレジスタブロックに分割される。それら3つのシーケンサのうち、DMAメモリアクセスシーケンサはIOバススレーブコントロールブロック2010に、DMAregシーケンサはIOバスマスターコントロールブロック2011に内蔵される。レジスタブロックであるDMAレジスタはIOバスデータインターフェース2012部に内蔵される。
【0068】
またIOバスインターフェース2009はIOバス側からのメモリへの書き込み時、及びDMAによるデバイスからメモリへの転送が起こった時に、キャッシュ無効化インターフェースを介してCPUシェル内のデータ、命令両キャッシュの無効化の制御を行う。
【0069】
なお、CPUライト時のライトバックバッファはIOバスインターフェースには実装しないが、IOバス上の外部マスタライト時のライトバッファを実装する。これにより、バースト転送でない、連続した外部マスタからの書き込みが高速化される。このライトバッファのフラッシュは、IOバスアービタ407によるャc鰍ヨの接続が許された時点で行われる。IOバスマスタリードのライトバッファバイパスは行わない。
【0070】
また、外部マスタのリードプリフェッチキューを実行する。これにより、外部マスタからの連続した、データストリームの読み出しの高速化を図る。リードバッファの無効化は、
(1)IOバスの新たなリードがバッファにヒットしなかった場合、
(2)CPUからメモリへのライトが行われた場合、
(3)Gバスからメモリへのライトが行われた場合、
(4)IOバスからメモリへのライトが行われた場合
に行われる。
【0071】
またIOバスインターフェース2009にはIOバス405上の各デバイスとメモリ間のDMAコントローラ2013が内蔵される。システムバスブリッジ402にDMAコントローラを内蔵することにより、ブリッジ双方へ、同時にアクセス要求が発行出来、効率的なDMA転送が実現出来る。
【0072】
IOバスインターフェース2009はプロセッサ401からのアクセス要求に対して、ダイナミックバスサイジングの使用を要求しない。またIOバスマスタからのメモリアクセス要求時に、メモリコントローラ403からのバスサイジングにも対応しない。すなわち、メモリコントローラはバスサイジングを期待すべきではない。
【0073】
<IOバス>
IOバスはDoEngine内の汎用IOバスであり、以下の仕様を持つ。
・アドレス、データ分離型32ビットバス。
・任意のウェイトサイクルを挿入可能、最短はノーウェイト。
・バーストトランザクションのサポート。
・最大転送速度は、クロックが50MHz時に200Mbyte/Sec。
・バスエラーとバスリトライのサポート。
・複数バスマスタのサポート。
【0074】
(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の対応関係にある。
【0075】
【表4】
Figure 2004062887
・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に示したとおりである。
【0076】
【表5】
Figure 2004062887
【0077】
IOバス信号は上述の通りである。DoEngine内部のバスである、IOバス(及びGバス)は接続される機能ブロック数が10以上になるので、InOut分離バスですべてのブロックを接続することは、困難である。DoEngineでは、チップ内双方向バスを採用する。
【0078】
<Gバスインターフェース>
図22にGバスインターフェース2006のブロック図を示す。この概要は下記の通りである。
【0079】
(Gバス概要)
Gバスは、MFP用1チップコントローラDoEngine内部において、各画像データ処理部間のデータ転送を高速に実行するために定義されたバスである。64ビットのデータバスをもち、4Gbyte(128byte boundary)のアドレス空間をサポートする。16ビート(128byte=64ビット x 16) を1ロングバーストとした転送を基本とし、連続して4ロングバースト(512byte=16ビート x 4) までを可能
とする(シングルビートなど16ビート以下の転送はサポートしない)。
【0080】
(Gバス信号定義)
信号の定義に用いる記号をまず定めておく。信号名の直後には、必要に応じて信号の方向が記述されている。それは次のように定める。
・In(Input signal)…バスエージェントに対する入力信号
・Out(Output signal)…バスエージェントからの出力信号
・InOut(Bi−Directional Tri−State signal)…双方向の信号で、複数のバスエージェントがドライブする。一度にひとつのエージェントだけがドライブする。信号をドライブする各エージェントのイネーブルリクエスト信号をデフォルトドライバで集中管理し、どのエージェントがドライブするかはデフォルトドライバが決定する。どのエージェントもイネーブルリクエストを出さない場合や、複数のエージェントが同時にイネーブルリクエストを出している場合はデフォルトドライバ信号をドライブする。エージェントは、信号をロウにドライブする場合は、前後1クロックの間ハイにドライブしなければならない。信号のアサートはドライブを初めてから1クロック以上経過してからしか行えない。基本的に信号のリリースはネゲートした次のクロックで行う。
【0081】
なお、各信号名の後の”_L”はその信号がローアクティブであることを示す。信号の記述のしかたは、ほぼIOバス信号の記述に準ずる。説明は、システム信号、アドレス及びデータ信号、インターフェース制御信号、アービトレーション信号に分けて行う。また、バスエージェントとは、バスに接続されるバスマスタやバススレーブの総称である。
【0082】
(システム信号)
・gClk(G−Bus Clock)… Gバス上のすべてのトランザクションについてタイミングを提供し、すべてのデバイスに対して入力となる。
・gRst_L(G−Bus Reset)… Gバス上のすべてのデバイスをリセットする。すべての内部レジスタはクリアーされ、すべての出力信号はネゲートされる。
【0083】
(アドレスおよびデータ信号)
・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を出力したデータドライバに対し、デフォルトドライバロジックがデータバスのドライブを許可することを示す信号。
【0084】
(インターフェース制御信号)
・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のアサートを確認したクロック。
【0085】
【表6】
Figure 2004062887
・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のドライブを許可することを示す信号。
【0086】
(アービトレーション信号)
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で指定されたデータ量だけ転送を行う。マスタとスレーブは、それぞれ自分でクロックをカウントして、データ転送の終了を知らなければならない。
【0087】
スレーブは転送の途中でマスタから要求されたデータ転送量を転送できなくなった場合は、bStStp_Lを15ビート目でアサートすることで、次の16ビートの転送をキャンセルすることがただし、16ビートの途中でキャンセルすることはできない。
【0088】
マスタおよびスレーブは、gBstStp_Lがアサートされれば、次のクロックでデータの転送を終了させなければならない。
【0089】
<キャッシュインバリデーションユニット(CIU)>
キャッシュインバリデーションユニット(以下CIU)2005は、IOバスからメモリへのライトトランザクションを監視し、これが起こった場合は、メモリへの書込が終了する前に、CPUシェルのキャッシュインバリデーションインターフェースを用い、CPUシェルに内蔵されたキャッシュの無効化を行う。
【0090】
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と同一サイクルだけドライブする。
【0091】
なお、現在のインプリメンテーションでは、IOバスからのライトが起こった場合は、安全のためにIcacheもインバリデーションしている、もし、OSでセルフモディファイングコードを禁止し、インストラクションとして使われる可能性のあるデータのローディング時に、意図的にインストラクションキャッシュのインバリデーションを行うなら、Icacheのインバリデーションはいらない。この場合は若干のパフォーマンスアップが望める。
【0092】
<メモリマップ>
図23及び図24にメモリマップを示す。図23は、左から順に、仮想メモリマップ、物理メモリマップ、Gバスのアドレス空間でのメモリマップ、IOバスのアドレス空間でのメモリマップである。また、図24は、レジスタ等を含む図23における斜線部の512メガバイトを示すマップである。
【0093】
プロセッサコアのメモリモデルはR3000をベースにしている。プロセッサコアの物理アドレス空間は32ビットアドレッシングにより4Gバイトある。仮想空間も同様に32ビットアドレッシングを行なう。ユーザープロセスの最大サイズは2Gバイトである。アドレスマッピングはカーネルモードとユーザーモードで異なる。図はMMUを使用しない場合のメモリマップである。
【0094】
(ユーザーモード仮想アドレッシング)
ユーザーモードの仮想アドレッシングでは2Gバイトのユーザ仮想アドレス空間(kuseg)が有効となる。このユーザーセグメントのアドレスは0x00000000から始まり、すべての有効なアクセスは0にクリアされたmsbを持つ。ユーザーモードにおいてmsbをセットしたアドレスの参照はアドレスエラー例外処理を引き起こす。TLBはkusegへのすべての参照をユーザーモードとカーネルモードで同様にマッピングする。また、キャッシャブルである。kusegは通常ユーザーコードやデータを保持するために使用される。
【0095】
(カーネルモード仮想アドレッシング)
カーネルモードの仮想アドレス空間には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をスタックやコンテキストスイッチによるリマップが必要なプロセス毎のデータのために使用する。
【0096】
(仮想アドレスメモリマップ(図23(a),図24(a)))
仮想アドレス空間は4Gバイトあり、システム上のすべてのメモリ、I/Oがアクセス可能である。kusegにはSYSTEM MEMORY(1GB)が存在する。
【0097】
kseg0には内蔵RAM(16MB)が存在する。これは、例外処理のベクタをプログラミングしたい場合にインプリメントし、例外ベクタベースアドレスを0x80000000に設定する。このアドレスは物理アドレス空間の0x00000000にマッピングされる。
【0098】
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バイトはすべて同じ物理アドレス空間を参照していることになる。
【0099】
(物理アドレスメモリマップ(図23(b),図24(b)))
物理アドレス空間も仮想アドレス空間と同様4Gバイトあり、システム上のすべてのメモリ、I/Oがアクセス可能である。PCI I/O,PCI MEM,SYSTEM MEMORYについては仮想アドレスメモリマップと同一である。kseg1,kseg2はどちらも物理アドレス空間の最初の512Mバイトにマッピングされるので、ROM,I/O,Regは0x00000000からの空間に存在している。
【0100】
(Gバスメモリマップ(図23(c),図24(c)))
Gバスアドレス空間は4Gバイトあり、SYSTEM MEMORY,GBus MEM,FONTのみがアクセス可能である。
【0101】
(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からアクセスできない。
【0102】
<アドレススイッチ>
アドレススイッチ2003は、Pバス,Gバス,IOバス,MCバス間のデータ転送を行なうために、マスターとなるバスからスレーブとなるバスへ、SBB402を経由してアドレス信号を送るためのものである。SBB402を経由する転送において、マスターとなり得るバスは、Pバス,Gバス,IOバスであり、スレーブとなり得るバスはIOバス,MCバスである。MCバスに対してはPバス,Gバス,IOバス,のいずれかがマスターとなり、IOバスへはPバスのみがマスターとなってアドレス信号を送る。また、Pバス−IOバス間の転送と、Gバス−MCバス間の転送は同時に行なうことができる。
【0103】
図25に、アドレススイッチ2003のブロック図を示す。スイッチシーケンサ2003aにより、スイッチ2003bを切り替えてスレーブをIOバスとMCバスとで切り換え、スイッチ2003cを切り替えてマスタをPバス,Gバス,IOバスで切り換える。この構成により、MCバスに対してはPバス,Gバス,IOバス,のいずれかがマスターとなり、IOバスへはPバスのみがマスターとなり、また、Pバス−IOバス間の転送と、Gバス−MCバス間の転送は同時に行なうことができる。
【0104】
<データスイッチ>
データスイッチはPバス,Gバス,IOバス,MCバス間のデータ転送を行なう際に,SBB内でデータの流れを切り替えるものである。ライト時はマスターからスレーブ、リード時はスレーブからマスターへデータが送られる。
【0105】
図26にデータスイッチ2004のブロック図を示す。この構成において、セレクタA−1〜A−3及びB−1,B−2を表7のように切り替えることで、Pバス,Gバス,IOバスのいずれかをマスタとし、IOバス,MCバスのいずれかをスレーブとして、書き込みあるいは読み出しを行うように制御できる。
【0106】
【表7】
Figure 2004062887
【0107】
<アービトレーション>
SBB402内のスイッチシーケンサ2003aは、各スイッチを切り替えるにあたって、SBB外部からの以下の3種類の接続要求間のアービトレーションを行う。
1.CPU
2.Gバスバスマスタ
3.IOバスバスマスタ
このアービトレーションは、現在のバススイッチ接続状況、及び、あらかじめ設定された優先順位により決定され、その結果アドレススイッチ、データスイッチの接続が切り替えられる。
【0108】
<タイミングダイアグラム>
図27〜図32にタイミング図を示す。図27はGバスからの書き込み/読み出しサイクルのタイミング図、図28はGバスのバースト停止サイクルのタイミング図、図29〜図32は、Gバスのトランザクション停止サイクルのタイミング図である。
【0109】
[2.6.PCIバスインターフェース]
図33は、PCIバスインターフェース416のブロック図である。PCIバスインターフェース416は、DoEngine内部汎用IOバスであるIOバスと、チップ外部IOバスであるPCIバスの間をインターフェースするブロックである。入力ピン設定により、リセット時にPCIバスコンフィギュレーション発行可能な、ホストブリッジ構成と、PCIバスコンフィギュレーションは発行しないターゲット構成とを切り替えることができる。
【0110】
IOバスインターフェースのマスタDMAコントローラ3301は、PCIバスシグナルインターフェース3302を介してPCIバスマスタからDoEngine内部のリソースにアクセス要求があった場合に、IOバスマスタとしてこのアクセス要求をIOバス内部にブリッジする。
【0111】
更に、このマスタDMAコントローラ3301は、PCIバス上でマッピングされるメモリからDoEngineMemoryへのDMA転送を行う事が出来る。この際、プログラマが意図したIOバスDMAと、GバスDMAのアクセスの順番を守って動作させるために、転送先アドレス(bPciAddr[31:0])と、PCIマスターコントローラ3301のID信号(bPciID)を、IOバスとアービトレーションシーケンサに対して、バスリクエストと同時に発行する。
【0112】
マスタDMAコントローラ3301はバスグラント(bPciBGnt_L)を受け取り、バスを使用しデータ転送が終了した時点で、ID信号(bPciID)のアサートを取りやめる。なお、PCIバスは、33MHz,32ビット,PCI2.1準拠とする。
【0113】
[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信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【0114】
なお、レジスタへのプログラミングは、IOバスを介してCPU401から行われる。
【0115】
(アービトレーションシーケンサ)
Gバスアービタの中核となるアービトレーションシーケンサ3402a,bは、1つの優先マスタとその他の4つの非優先マスタの間で5つのマスタによるアービトレーションを行なう。4つのバスマスタからのリクエスト信号とグラント信号を、リクエストディスパッチ回路3403とグラントディスパッチ回路3404によって4つの非優先マスタに割り付けることにより、公平アービトレーションモードが実現される。また、4つのバスマスタのうちのひとつを、高優先アービトレーションシーケンサ3402aの優先マスタに割り付けることで、優先アービトレーションモードとして動作する。これらの割り付けは、レジスタ3401a,bの設定にしたがって行われる。これにより、優先バスマスタは、他のマスタより高い確率でバスの使用権を取得することが出来る。
【0116】
さらに、バスの取得機会確率の調整に加え、高優先シーケンサ3402aに割り当てられたマスタは、連続してバスを使用する事が出来、連続して使用出来る回数をプログラマブルなレジスタにより可変する事ができる。これは、バスの占有率を調整出来、ある特定のマスタにより多くバスを使用させる様に出来ることを意味する。
【0117】
(公平アービトレーションモード)
このモードでは、すべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる(ラウンドロビン方式)。例えば、M1からM4までのすべてのバスマスタが同じクロックでリクエストを出した場合は、M1→M2→M3→M4といった順序でバス権が与えられる。M4のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、M1→M2→M3→M4→M1→M2…というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、M4からM1へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【0118】
一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【0119】
(優先アービトレーション)
このモードでは、ひとつのバスマスタ(レジスタ3401bに登録されたバスマスタ)が他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。優先バスマスタ以外のバスマスタの優先順位はすべて同じである。
【0120】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続したリクエストを行う場合、優先バスマスタと他の非優先バスマスタは交互にバス権を得る。
【0121】
非優先バスマスタから他のバスマスタにバス権が移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと、その非優先バスマスタは再びバス権を得ることができない。
【0122】
(トランザクション・ストップ・サイクル)
優先アービトレーションモードにおいて、優先バスマスタがリクエストを出した時、すでに他のバスマスタがアドレスフェーズを開始していても、データフェーズをまだ開始していなければ、そのトランザクションをストップし、優先バスマスタがバス権を得ることができる。ただし、その直前に優先バスマスタがバス権を持っていた場合は、連続したバス権を得ることができる回数を超えることはできない。
【0123】
優先バスマスタのトランザクションが終了した時、中止されたバスマスタがリクエストを出していれば、優先してバス権が与えられる。
【0124】
(優先バスマスタの切り替え)
優先バスマスタの切り替えを行なうには、レジスタ3401bを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【0125】
優先バスマスタの切り替えには十分注意を払う必要がある。優先させるべきバスマスタのDMAが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのDMAの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、DMAが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【0126】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行う必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんGバス上に新たなDMAリクエストが発生しないよう、すべてのバスマスタ及びDMAコントローラに対する設定を中止し、その後、Gバスアービタ406内のレジスタに適切な値をセットし、さらに、Gバスアービタ406内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなGバス上へのアクセス及びDMAの起動を行うべきである。
【0127】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【0128】
(順序処理)
図35は、DoEngine400内におけるGバス404を中心とする、Gバス上のバスマスタによるDMAに係るブロック図である。
【0129】
複数のバスマスタが順次に処理を行うことが必要な場合、例えば、メモリ3501上のデータに対して、バスマスタ1により処理Aを行った後、バスマスタ2により処理Bを行い、その処理後のデータをバスマスタ4に送るといった一連の処理を考える。
【0130】
この処理を行うソフトウェア、すなわちCPU401により実行されるプログラムにより、IOバス405を介して、バスアービタ406内のレジスタテーブル3401aに、バスマスタがバスを使用する順序と、バス権の付与の開始条件と、終了条件がセットされる。この例では、
バスマスタ:開始条件  : 終了条件
1.バスマスタ1:gM2BufEmpty :gM1BufReady
2.バスマスタ2:gM1BufReady :gM1BufEmpty
3.バスマスタ4:gM2BufReady :gM2BufEmpty
というようにセットする。すなわち、Gバスアービタ406は、それぞれのバスマスタから、開始条件として設定された信号を受けるとそのバスマスタにバス使用権を与え、終了条件として設定された信号を受けるとバス使用権を奪う。
【0131】
ソフトウェアはそれぞれのバスマスタにDMAをセットする。それによって、それぞれのマスタはGバスアービタ404に対してリクエスト(g(mastername)Req_L)を発行する。Gバスアービタ404はレジスタテーブル3401aに登録された順序に従ってバスマスタ1にバス権を与える(gM1Gnt_L)。バスマスタ1はメモリ3501からある単位のデータをリードし、処理Aを行って、バスマスタ1内部のバッファにデータをライトする。バスマスタ1はひとつの単位の処理が終了し、バッファの準備ができたことをgM1BufReady信号によりアービタ406に対して通知する。
【0132】
アービタ406はそれを受け、レジスタテーブル3401aに登録された、バスマスタがバス権を与える条件とバス権を奪う条件にしたがって、バス権をバスマスタ1から奪いバスマスタ2に与える。バスマスタ2はバスマスタ1のバッファのデータをリードし、処理Bを行って、バスマスタ2内部のバッファにデータを格納する。この間にバスマスタ1のバッファが空になるとgM1BufEmptyがアサートされ、アービタ406はバスマスタ2にバス権を与えていたのを取りやめる。バスマスタ2は処理Bを行って、バッファの準備ができるとgM2BufReady信号により通知する。
【0133】
アービタ406はそれを受け、レジスタ3401aの内容にしたがって、今度はバスマスタ4にバス権を与える。バスマスタ4はバスマスタ2のバッファからデータをリードする。バスマスタ2のバッファが空になると、gM2BufEmptyによってアービタ406に通知し、アービタ406はそれを受け、レジスタ3401aの内容に従って再びバスマスタ1にバス権を与え、次のデータの処理を始める。
【0134】
それぞれのバスマスタにセットされたDMAがすべて終了すると、それぞれのバスマスタはプロセッサに割り込みによって通知する。ソフトウェアはすべてのバスマスタからの終了通知がそろったとき、一連の処理が終了したことを知る。
【0135】
以上説明した動作は完全順次モードでの動作であり、順次処理に関わるバスマスタ以外のバスマスタは、バスを使用することができない。この順次処理中でも、順次処理に関係のないバスマスタがバスを使用することを可能にするために優先順次モードが用意されている。これらのモードの切り替えではアービタ406内部のレジスタにプログラミングすることによって行なう。優先順次モードでは、順次処理を行なうバスマスタは優先的にバスを使用できるが、順次処理に関わらないバスマスタであればバスを使用することが許される。順次処理を行なうバスマスタと関わらないバスマスタの間のアービトレーションは、前述した優先アービトレーションモードと同等である。当然、順次処理に係わるバスマスタで、バス権を与えられる条件が満足されずに自分の順番が回ってきていないバスマスタにはバス権は与えられない。
【0136】
(アクセス順序を維持するための機構)
信号stopSpcがアサートされた場合は、Gバスマスタのひとつであるスキャナプリンタコントローラ408はアービトレーションの対象から除外され、たとえリクエストをアサートしていてもバス使用権を与えられることはない。アービトレーションはこのマスタを除外したマスタ間で行われる。詳細な説明はIOバスアービタの節で行なう。
【0137】
<タイミングダイアグラム>
図36〜図39において、Gバスアービトレーションのタイミングを説明する。図36は、連続してバスを使用する回数が、バスマスタ1〜4のすべてについて1に設定されている場合の公平アービトレーションモード(フェアモード)の例である。バスマスタ1による2回目の(タイミング4から出されている)バス要求は、バス要求を出している他のバスマスタがすべて1回ずつ処理されるまで待たされている。
【0138】
図37は、連続してバスを使用する回数が、バスマスタ1についてのみ2であり、他のバスマスタは1に設定されている場合の公平アービトレーションモードの例である。バスマスタ1が出している2回目の(タイミング4から出されている)バス要求は1回目の要求に続いて直ちに許可され、他のバスマスタはその処理がすむまで待たされている。
【0139】
図38は、連続してバスを使用する回数がそれぞれ1ずつであり、バスマスタ1が優先バスマスタと設定されている場合の優先アービトレーションモードの例である。優先バスマスタと非優先バスマスタとは交互にバス使用権が認められるために、バスマスタ1の2回目のバス要求はバスマスタ2のバスの使用後に認められており、バスマスタ4のバス要求は、バスマスタ1の2回目のバスの使用後に認められている。また、バスマスタ2の2回目のバス要求は、バス要求を出している他のすべてのバスマスタ、図38ではバスマスタ1及びバスマスタ4のバス使用が終了した後で認められている。
【0140】
図39は、バスマスタ1からのバス要求により、バスマスタ4のバス要求が許可されているにもかかわらず中断された例である。この場合、バスマスタ1のバス使用が終了すると、バスマスタ2のバス要求に優先してバスマスタ4のバス要求が認められる。
【0141】
[2.8.IOバスアービタ]
図40は、IOバスアービタ407のブロックである。IOバスアービタ407は、DoEngine内部のIO汎用バスであるIOバス405のバス使用要求を受け付け、調停の後、使用許可を選択された一つのマスタに対して与え、同時に2つ以上のマスタがバスアクセスを行う事を禁止する。
【0142】
アービトレーション方式は、3段階のプライオリティを持ち、それぞれのプライオリティに複数のマスタをプログラマブルに割り当てられる構成になっている。割り当ては、それぞれ最大で、最高のプライオリティに3マスタ、中間に7マスタ、最低レベルに3マスタとなる。
【0143】
また、GバスマスタとIOバスマスタが、同一メモリアドレスに順次書き込みを発行した場合に、プロブラマの意図したアクセス順序を維持するための機構として、同期ユニットからの、マスタID信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【0144】
(アービトレーションシーケンサ)
IOバスアービタは3つのアービトレーションシーケンサ4002,4003,4004から構成される。それぞれ、高優先権、中優先権、低優先権を持ち、それぞれのシーケンサ内に、3,7,3本のバスマスタ用アービトレーションシーケンサが内蔵される。IOバス上のすべてのバスマスタになる可能性のあるユニットからのリクエスト信号とそれらへのグラント信号を、リクエストセレクタとグラントセレクタによって、これらの3つのシーケンサユニットに分配する。この分配は、BBusインタフェース4005内のソフトウェアプログラマブルなレジスタ4005aにより、複数の組み合わせのなかから、一意の組み合わせを選択することが出来る。
【0145】
たとえば、最大7つのマスタのリクエストを中優先アービトレーションシーケンサ4003に接続することにより、7つのマスタ間で公平なアービトレーションが実現される。また、バスマスタのうちのいくつかを、高優先アービトレーションシーケンサ4002に割り付けることで、これらのマスタは他のマスタより、より高い確率でバスの使用権を取得することが出来る。さらに、いくつかのリクエストを低優先シーケンサ4004に接続することで、これらのバスの使用率を低く抑える事が出来る。さらに、バスの取得機会確率の調整に加え、高優先シーケンサ4002に割り当てられたマスタは、連続してバスを使用する事ができ、連続して使用出来る回数をプログラマブルなレジスタ4005aにより可変する事ができる。これは、バスの占有率を調整でき、ある特定のマスタにより多くの時間バスを使用させる様に出来る事を意味する。
【0146】
(公平バスアービトレーション方式)
中優先シーケンサ4003を例にとり、公平アービトレーションの実現方法を説明する。一つのシーケンサに接続されたすべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる(ファーストカムファーストサーブ)。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる(同時リクエスト発行時ラウンドロビン)。例えば、M1からM7までのすべてのバスマスタが同じクロックでリクエストを出した場合は、M1→M2→M3→M4→M5→M6→M7といった順序でバス権が与えられる。M7のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、M1→M2→M3→M4→M5→M6→M7→M1→M2というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、M7からM1へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【0147】
(優先アービトレーション)
IOバスインターフェースは、高優先、中優先、低優先の3つのアービトレーションシーケンサが存在する。優先順位をつけたアービトレーションは、複数のバスリクエストを選択的に、高優先、低優先、のアービタに割り振ることにより実現される。
【0148】
たとえば、ひとつのマスタを高優先に割り当て、残りを中優先に割り当てることにより、ひとつのバスマスタが他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。同じ優先権のアービトレーションシーケンサに割り当てられたバスマスタの優先順位はすべて同じである。
【0149】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続してリクエストを行う場合、優先バスマスタと他のバスマスタは交互にバス権を得る。M3が優先マスタでM1,M2,M3,M4がリクエストを出し続けた場合M3→M1→M3→M2→M3→M4→M3→M1の順でバス使用権を与える。
【0150】
また、高優先バスマスタは、アービタ内のプログラマブルなレジスタにあらかじめ設定された回数だけ連続したバス権を得ることができる。連続したバスを使用出来る回数は最大で4回である。
【0151】
優先バスマスタ以外のバスマスタから他のバスマスタにバス権が移ると、そのバスマスタは、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。ひとつのバスマスタが連続してリクエストを行う場合、他にリクエストを行っているバスマスタがいなければ、連続してバス権を得ることができるが、他のバスマスタがリクエストを行っていれば、そのバスマスタはあらかじめ設定された回数だけ連続してバス権を得ることができる。一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【0152】
低優先アービトレーションシーケンサ4004には最大3本のリクエストを割り当てる事が出来る。低優先シーケンサ4004に割り当てられたマスタへは、中優先、高優先シーケンサに割り当てられた、すべてのマスタのリクエストがなくならないと、バスの使用権が与えられない。このシーケンサへのバスマスタの割り当ては十分な注意を持って行われなければならない。
【0153】
(優先バスマスタの切り替え)
優先バスマスタの切り替えを行なうには、アービタ内のレジスタを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【0154】
切り替えには十分注意を払う必要がある。優先させるべきバスマスタのDMAが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのDMAの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、DMAが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【0155】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行なう必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんIOバス上に新たなDMAリクエストが発生しないよう、すべてのバスマスタ及びDMAコントローラに対する設定を中止し、その後、IOバスアービタ407内のレジスタに適切な値をセットし、さらに、IOバスアービタ内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなIOバス上へのアクセス及びDMAの起動を行うべきである。
【0156】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは、違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【0157】
(アクセス順序制御機構)
IOバスアービタ407はアクセス順序制御機構を含む。アクセス順序制御機構は、同期ユニット4001と、IOバスアービタ407,Gバスアービタ406内に組み込まれたバス使用権発行抑制機構によって実現される。IOバスアービタ407内に組み込まれたバス使用権発行抑制機構は、Gバスアービタのそれと同様に動作する。つまり、stopPci信号が入力された場合は、Pciバスマスタからのバスリクエストが発行され、アービトレーションの結果、このマスタにバスの使用権を与えることが可能な状態でも、バスの使用権発行は行わず、他のマスタへバス使用権をあたえる。具体的には、stopPci信号が入力された場合は、直ちにbPciReq_Lをマスクすることにこれを行う。
【0158】
LANコントローラ414からのバスリクエストおよび、ストップ信号の場合もまったく同様に動作する。図41に同期ユニット4001のブロック図を示す。同期ユニット内には複数のDMAマスタ間すべての組み合わせに関して、それぞれコンペアユニット4101〜4103が接続される、DoEngineでは、Gbus上のDMAマスタはスキャナ/プリンタコントローラ408のみ存在する。IOバス上には、DMAPCIユニット、LANユニットの二つが存在する。SBB内のIOバスインターフェースはIOバス上のバスマスタであるが、メモリには直接アクセスしないので、同期ユニット4001にはIDと転送先アドレスを出力しない。
【0159】
図42に同期ユニット内の一つコンペアユニット(Comparation Unit 1)を以下に示す。他のコンペアユニットも同様の構成を有する。
【0160】
PCIインターフェース416に付属するDMAブロックもしくは、スキャナ/プリンタコントローラ408から、同期ユニット4001に対し、DMAライトがプログラミングされた時点で、転送先のアドレスとそのDMAブロック固有のリクエスト信号が通知される。
【0161】
各コンペアユニットは、各DMAブロックからリクエストが出力された時点で、アドレスを内部に持つタイマによる現在時刻とともに記憶する、次に他のDMAブロックから、DMAライトに関するアドレスとリクエストが入力された時点で、コンペアユニットは両アドレスを比較する。一致した場合にはさらに、それぞれのレジスタに格納された時間を比較し、時間的に後からDMAライトの要求を出してきたDMAブロックが接続されたバスのバスアービタに対し、このマスタに対するバス使用強化を与えないようにする。これは、stop(ID)という信号により各バスのバスアービタに通知される。
【0162】
各バスアービタはstop(ID)信号により通知されたマスタに対しては、アービトレーションによるバス使用権の割り当てを行わない。
【0163】
時間が経過し、先にアクセス要求を行ったバスマスタにより当該メモリアドレスへのDMAライトが終了すると、先のマスタは、同期ユニットに対するリクエストを取り下げる、同期ユニットは、2番目にDMAライトの要求を出した、DMAブロックの接続するバスのバスアービタに対し、このDMAブロックへの、バス使用権許可禁止信号の発行をとりさげる。そして、後からDMAライトを行うべきマスタのDMAライトが行われる。
【0164】
双方のDMAライトが終了し、双方のリクエストが取り下げられると、タイマーがリセットされる。タイマーのカウントアップは再度どちらかのマスタからのリクエストが出力された時点で再度行われる。
【0165】
[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バスによって接続される。
【0166】
<スキャナ/ビデオ同期制御ユニット4306>
図44にスキャナ/ビデオ同期制御ユニット4306のブロック図を示す。
【0167】
(スキャナ/ビデオ同期制御ユニットの概要)
スキャナ/ビデオ同期制御ユニット4306は、スキャナから入力される画像データの垂直同期信号(SVSYNC)、水平同期信号(SHSYNC)、画像データ同期クロック(SVCLK)により、画像データの取り込みタイミング信号、画像処理のためのタイミング信号、転送バッファであるFIFOヘ書き込みタイミング信号(SCFWR)を生成する。
【0168】
また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。設定量の画像データ取込を終了したタイミングでの状態信号(SALLEND)を生成する。ラインカウンタ4401は副走査方向の遅延と取り込みライン数を管理して、画像読み取り有効ラインの垂直同期信号(SEFHSYNC)を生成する。ピクセルカウンタ4402は主走査方向の画像取り込み遅延と取り込み画素数を管理する。取り込んだ画像データをFIFOに格納するための書き込みタイミング信号(SCFWR)を生成する。ページカウンタ4403は入力される画像データページ単位で管理する。設定されたページ数分の画像データ入力を終了すると、終了信号(SALLPEND)を生成する。
【0169】
ラインカウンタ4401,ピクセルカウンタ4402,ページカウンタ4403の各設定値はコントロールレジスタ4310によって読み書きされる。
・ライトデータ:IFWDATA[31:0]
・リードデータ:IFRDATA[31:0]
・ラインカウンタライト信号:SLCSET
・ラインカウンタリード信号:SLCRD
・ピクセルカウンタライト信号:SPCSET
・ピクセルカウンタリード信号:SPCRD
・ページカウンタライト信号:SPAGESET
・ページカウンタリード信号:SPAGERD
<プリンタ/ビデオ同期制御ユニット4307>
図45は、プリンタ/ビデオ同期制御ユニット4307のブロック図である。
【0170】
(プリンタ/ビデオ同期制御ユニットの概要)
プリンタ/ビデオ同期制御ユニット4307は、プリンタから入力される画像データの垂直同期信号(PVSYNC)、水平同期信号(PHSYNC)、画像データ同期クロック(PVCLK)により、画像データの取り込みタイミング信号、画像処理のためのタイミング信号、転送バッファであるFIFOからの読み出しタイミング信号(PRFRD)を生成する。
【0171】
また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。設定量の画像データ取り込みを終了したタイミングでの状態信号(PLEND)を生成する。ラインカウンタ4501は副走査方向の遅延と出力ライン数を管理して、画像出力有効ラインの垂直同期信号(PEFHSYNC)を生成する。ピクセルカウンタ4502は主走査方向の画像出力遅延と出力画素数を管理する。出力画像データをFIFOから読み出すための読み出しタイミング信号(PRFRD)を生成する。ページカウンタ4503は出力数画像データをページ単位で管理する。設定されたページ数分の画像出力が終了すると、終了信号(PALLPEND)を生成する。
【0172】
ラインカウンタ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)により制御する。
【0173】
<プリンタ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)により制御する。
【0174】
スキャナプリンタコントローラ408は、スキャナとプリンタとを同期動作させ、コピー動作をおこなうために、図43に示すように、スキャナデータを直接プリンタへ出力するデータパスを備える。また、スキャナからの入力データとプリンタへの出力データをFIFOにより同期させるデータパスも備える。それらのデータパスはスキャナとプリンタのデータ入出力の同期関係で選択可能とする。
【0175】
<データ転送制御ユニット4302>
図48は、データ転送制御ユニット4302のブロック図である。データ転送制御ユニット4302は、Lバスヘのデータの入出力を制御するブロックで、チェインコントローラ4801、マスタDMAコントローラ4802、転送アービタ4803等を含む。
【0176】
データ転送制御ユニットは、マスタとしては以下の動作を制御する。
1.スキャナからの画像データDMA転送およびチェインテーブル参照
2.プリンタへの画像データDMA転送およびチェインテーブル参照。
スレーブとしては以下の動作を制御する。
1.内部レジスタのライト・リード
2.スキャナからの画像データ転送
3.プリンタへの画像データ転送。
【0177】
(チェインコントローラ)
図49は、チェインコントローラ4801のブロック図である。チェインコントローラは、チェインテーブルを示すアドレスポインタブロックとDMAの転送先を示すアドレスポインタブロックから構成される。スキャナ、プリンタコントローラがマスタとしてDMAを行う際の転送先アドレス発生ブロックであり、チェインDMAをサポートする。スキャナデータ転送、プリンタデータ転送の2系統が独立で動作する。
【0178】
<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のように定義される。
【0179】
【表8】
Figure 2004062887
・MTSIZE[2:0](OUT)…データ転送制御ユニットがマスタ動作時、転送の単位サイズを示す。この単位サイズの転送中、IFMDTREQは”High”のアクティブ状態のままとなる。サイズは表9のように示される。
【0180】
【表9】
Figure 2004062887
・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]が有効となる。
【0181】
<Gバス/IOバスインターフェースユニット>
図50は、Gバス/IOバスインターフェースユニット4301のブロック図である。Gバス/IOバスインターフェースユニットは、コピーエンジン内部の内部バス(Lバス)と外部バス(Gバス/IOバス)とのインターフェース部分である。このユニットは、他の機能ブロックで使えるように実現されるが、本実施の形態ではコピーエンジンが使用する。なお、コピーエンジンとは、スキャナ/プリンタコントローラ408及びそれにより制御されるスキャナとプリンタとを含めた総称である。Gバス/IOバスインターフェースユニットは、大きくバスセレクタユニット,IOバスコントローラ5002,Gバスコントローラ5003の三つの部分から構成される。
【0182】
バスセレクタユニット5001は、コピーエンジンがDMAマスタの時には、Lバスのバースト転送可能な転送量、優先度(緊急度)、転送先のアドレスと、さらに各バス(GバスとIOバス)の空き情報を基にして、動的にバスの選択を行い、対応するコントローラ(Gバスコントローラ5003かIOバスコントローラ5002)に、多少の前処理を施してLバスを接続する。コピーエンジンがDMAスレーブの時には、各バス(GバスとIOバス)からの要求を調停し、優先順位の高いバスとLバスを接続する。
【0183】
Gバスコントローラ5003とIOバスコントローラ5002は、Lバスと対応するバス(GバスとIOバス)のバスの変換を行う。以下に、各部の説明をする。
【0184】
コピーエンジンは、Gバス/IOバスの両方のバスに対してDMA可能なDMAマスタであり、Gバス/IOバスインターフェースユニット4301は、DMA転送する際に使用するバスを決定する。従来のシステムでは、転送先(アドレス)によりバスを切り替えているが、各バスの転送速度や使用率等を考慮しなければ、システム全体として良い性能が得られない。
【0185】
バスセレクタユニット5001は、Lバスのバースト転送可能な転送量、優先度(緊張度)、転送先のアドレスと、さらに各バス(GバスとIOバス)の空き情報を基にして、動的に効率的なバスの選択を行い、対応するコントローラ(Gバスコントローラ5003かIOバスコントローラ5002)に、多少の前処理を施して、Lバスを接続する。
【0186】
Gバスコントローラ5003とIOバスコントローラ5002は、Lバスと対応するバス(GバスとIOバス)同期ユニットヘ、書き込みアドレスと機能ブロック(ここでは、コピーエンジン)のIDを送り出す。以下に、各部の説明をする。
【0187】
(バスセレクタユニット)
図51は、バスセレクタユニット5001のブロック図である。その動作を以下に説明する。
【0188】
[コピーエンジンのマスター時の動作]
コピーエンジンがマスターの場合は、主に、バスセレクタユニットのLバスマスタシーケンサ5101で制御される。Lバスマスタシーケンサ5101は、コピーエンジンからIFMDTREQ(マスターデータ要求信号)を受けることにより、コピーエンジンのマスター動作の要求を知る。
【0189】
コピーエンジンは、IFMDTREQアサートと同時に、IFMAD[31:2](マスター転送アドレス信号)、MTSIZE[2:0](マスター転送長信号)、IFMRW(マスター・リード・ライト信号)をバスセレクタユニット5001に出力する。転送アドレスはアドレスカウンタ5102に、転送長は長さカウンタ5103に、それぞれラッチされる。
【0190】
Lバスマスタシーケンサ5101は、外部バストの転送を開始する時点でGバスを使用するか、IOバスを使用するかを、アドレスカウンタ, 長さカウンタ,プライオリティ,各バスのビジー状態から決定する。アドレスカウンタの下位ビット5がすべて0ではない場合、あるいは長さカウンタが64ビット×4未満の場合は、Gバスでの転送は不可能なので、IOバスを選択する。それ以外は、高プライオリティかつGバスが使用中かつIOバスが空いている、という場合を除き、Gバスを選択する。外部バスへの転送サイクルを終了した時点で、アドレスカウンタ5102と長さカウンタ5103を更新し、長さカウンタが0でなければ、上記の動作を繰り返す。バスの選択の基準を表10に示す。
【0191】
【表10】
Figure 2004062887
【0192】
コピーエンジンから外部バスへの転送では、Lバスマスタシーケンサ5101は、データFIFO5104がフルでない限り、コピーエンジンへIFMDTACK信号をアサートし、転送データを要求し、得たデータをFIFO5104に書き込む。また、データFIFOがエンプティでない限り、外部バスコントローラ(IOバスコントローラ5002かGバスコントローラ5003)へマスター転送要巨M号(LbMReqかLgMReq)をアサートし、データ転送を要求する。外部バスコントローラ(IOバスコントローラかGバスコントローラ)は、データFIFO5104のデータを転送し、転送終了で、マスター転送通知信号(LbMAckかLgMAck)をアサートするので、Lバスマスタシーケンサ5101は、外部バスヘの転送の終了を知ることができる。
【0193】
外部バスからコピーエンジンへの転送では、Lバスマスタシーケンサ5101は、データFIFOがフルでない限り、外部バスコントローラ(IOバスコントローラかGバスコントローラ)へマスター転送要求信号(LbMReqかLgMReq)をアサートし、データ転送を要求し、データをデータFIFOに書き込み、データFIFOがエンプティでない限り、コピーエンジンへIFMDTACK信号をアサートし、転送データを要求し、得たデータFIFOのデータを書き込む。
【0194】
(IOバスコントローラ)
図52は、IOバスコントローラ5002のブロック図である。IOバスコントローラ5002は、LバスとIOバスのインターフェース部分である。
【0195】
IOバスマスタシーケンサ5201は、IOバスマスター時の動作を、IOバススレーブシーケンサ5202は、IOバススレーブの時の動作を、それぞれ制御する。
【0196】
[コピーエンジンのマスター時の動作]
バスセレクタユニット5001からのLbMReq信号のアサートにより、データ転送は開始される。転送の方向は、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMRdNotWr信号により決まる。転送のサイズは、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbBstCnt[1:0]信号により決まる。また、転送のアドレスはLbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMAddr[31:2]信号により決まる。
【0197】
IOバスからの転送(LbMRdNotWr信号が0の時)は、読み込み用データFIFOがフルであれば(bRFifoFullがアサート)、フルでなくなるのを待ち、IOバスマスタシーケンサは、決められたIOバスの転送を開始し、得たデータは、バスセレクタユニット5001 のデータFIFOに書き込む。
【0198】
IOバスヘの転送(LbMRdNotWr信号が1の時)は、書き込み用データFIFOがエンプティであれば(bWFifoEmptがアサート)、エンプティでなくなるのを待ち、IOバスマスタシーケンサは、決められたIOバスの転送を開始し、バスセレクタユニット5001のデータFIFOから得たデータをIOバス上に送る。
【0199】
(Gバスコントローラ)
図53は、Gバスコントローラ5003のブロック図である。Gバスコントローラ5003は、LバスとGバスのインターフェース部分である。
【0200】
Gバスマスタシーケンサ5301は、Gバスマスター時の動作を、Gバススレーブシーケンサ5302は、Gバススレーブの時の動作を、それぞれ制御する。
【0201】
[コピーエンジンのマスター時の動作]
バスセレクタユニット5001からのLbMReq信号のアサートにより、データ転送は開始される。転送の方向は、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMRdNotWr信号により決まる。転送のサイズは、LbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbBstCnt[1:0]信号により決まる。また、転送のアドレスはLbMReq信号と同時にアサートされるバスセレクタユニット5001からのLbMAddr[31:2]信号により決まる。
【0202】
Gバスからの転送(LgMRdNotWr信号が0の時)は、読み込み用データFIFOがフルであれば(gRFifoFullがアサート)フルでなくなるのを待ち、Gバスマスタシーケンサは、決められたGバスの転送を開始し、得たデータは、バスセレクタユニット5001 のデータFIFOに書き込む。
【0203】
Gバスヘの転送(LgMRdNotWr信号が1の時)は、書き込み用データFIFOがエンプティであれば(bWFifoEmptがアサート)、エンプティでなくなるのを待ち、Gバスマスタシーケンサは、決められたGバスの転送を開始し、バスセレクタユニット5001のデータFIFOから得たデータをGバス上に送る。
【0204】
[2.10.電力管理ユニット]
図54は、電力管理ユニット409のブロック図である。DoEngineはCPUを内蔵した大規模なASICである。このため、内部のロジックが全部同時に動作してしまうと、大量の熱を発生し、チップ自体が破壊されてしまう恐れがある。これを防ぐために、DoEngineは、ブロック毎の電力の管理、すなわちパワーマネジメントを行ない、更にチップ全体の消費電力量の監視を行なう。
【0205】
パワーマネージメントは、それぞれのブロックが各自個別に行なう。各ブロックの消費電力量の情報は、パワーマネージメントレベルとして、電力管理ユニット(PMU)409に集められる。PMU409では、各ブロックの消費電力量を合計し、その値が限界消費電力を超えないように、DoEngineの各ブロックの消費電力量を一括して監視する。
【0206】
<動作>
電力管理ブロックの動作は次の通りである。
・各ブロックは、4段階のパワーマネジメントレベルを持つ。
・PMUは、それぞれのレベルにおける消費電力の値をレジスタとして持つ。このレベル構成及び消費電力の値は、PM構成レジスタ5401に保持される。
・PMUは、各ブロックからパワーマネジメントレベルを2ビットのステータス信号として受け取り(後述)、レジスタ5401に設定された値と照合させて各ブロックの消費電力を知る。
・PMUは各ブロックの消費電力を加算器5403で加算し、DoEngine全体の消費電力量をリアルタイムに計算する。
・算出された消費電力量は、構成レジスタ5401に設定された消費電力のリミット値(PMリミット)と比較器5404で比較され、これを超えた場合には割込発生器5405から割り込み信号を発行する。
・このリミット値は2段階設定することができる。1段階目は、本当の限界から少し余裕を持たせた値を設定しておく。この値を超えると、通常の割込み信号が発行される。ソフトウェアはこれを受けて、新たにブロックを起動するような転送は始めないようにする。ただ、2段階目のリミット値に達しない範囲内では、ソフトウェアの管理の元で、新たなブロックを起動することができる。2段階目のリミット値は、デバイスが破壊される恐れのある値を設定しておく。万が一、この値を超えてしまった時には、NMI(割込マスクが設定できない割り込み)を発行して安全のためにシステムを停止させる。
・割込み信号は、PMUの状態レジスタ5402をリードすることで解除される。この状態レジスタ5402をリードした時点からタイマカウントを始め、タイマがエクスパイアするまで消費電力量が戻らなければ、再び割込み信号を発行する。このタイマの値の設定はPMUの構成レジスタ5401に設定される。
【0207】
<各ブロックのパワーマネージメント>
各ブロックのパワーマネージメント制御は、ブロック毎に自由に構成してよい。構成の例を示す。
【0208】
(構成例1)
この例では、内部ロジックへのクロックをオン/オフすることにより、パワーマネジメントを行なっているので、消費電力のレベルは2段階しか持っていない。このレベルをステータス信号として電力管理ユニット409に送る。図55にバスエージェントのブロック図を示す。
・バスエージェント5501は、各ユニット毎の内部ロジック5502、アドレスをデコードするデコーダ5503、クロックコントロール部5504、クロックゲート5505を含む。
・デコーダ5503とクロックコントロール部5504は常に動作しており、パワーマネージメントコントロールとして、バスのアクティビティーの監視、内部ロジックへのクロックのゲーティングを行なっている。
【0209】
<クロックコントロール>
・バスエージェントは、バスのアクティビティーを検出し、クロックのオン/オフを自動で行なう。
・バスエージェントには、Sleep, Wake Up, Waitの3つのステートがある。
・Sleepはバスエージェントにアクティビティーがなく、クロックゲートクロックを停止させている状態である。
・Sleepの状態でも、デコーダ部5503、クロックコントロール部5504は動作しており、バスをモニタリングして、要求を待っている。
・デコーダ5503が自分のアドレスを検出すると、クロックゲート5505を開き、内部ロジックのクロックを動作させ、バスの要求に応える。ステートはWake Upに移行する。また、この状態を電力管理ユニット409に通知する。
・データ転送が終了すると、Waitステートに移行し、次の要求を待つ。この時クロックは動作したままである。要求があれば、Wake Upステートに戻り、転送を行なう。また、要求を待っている間はタイマによりカウントを行ない、要求がないままカウンタがタイムアップした場合は、Sleepステートへ移り、クロックを停止させる。この状態も電力管理ユニット409に通知される。
以上のようにして、消費電力が所定値を越えないように管理している。
【0210】
[その他の構成例]
図9及び図10で示したキャッシュの動作手順は、図56及び図57のようなものであってもよい。図56においては、MCバスよりデータ転送が開始されると、その最初にMCバスで示されるmTType[60:0]によってその転送をキャッシュオンで行うかオフで行うか判断される。ここでは、転送がバースト転送の時、そのバースト転送データ量がキャッシュの1ラインのデータ量より大か小かによって判断する。なお、キャッシュの1ラインは256ビット=4バースト分である。
【0211】
図56において、メモリコントローラは転送の開始でmTType[3:0]をチェックし、mTTypeが示すバースト長が1/2/4であれば、キャッシュオンで動作し、6/8/16/2×16/3×16/4×16の場合はキャッシュオフで動作する。キャッシュオンあるいはオフ後の動作は、図9及び図10と同様である。
【0212】
また、図58及び図59のように、デバイスによってキャッシュのオンオフを切り替えることもできる。図58において、メモリコントローラは転送の開始でmTType[6:4]をチェックすることにより転送要求デバイスを識別し、そのデバイスの転送要求をキャッシュオンで動作するか、オフで動作するかを判断するために、あらかじめ設定されている構成レジスタの値を参照し、キャッシュオンで動作するか、オフで動作するか決定する。キャッシュオンあるいはオフ後の動作は、図9及び図10と同様である。構成レジスタの設定は、ハードウエア的に決定(変更不可)していも良いし、ソフトウエアで書換え可能にしてもよい。
【0213】
【発明の効果】
以上説明したように本発明においては、回路の各ブロックの動作状態を監視して消費電力を抑制し、さらに、予備的な警告や危険な事態を割込み信号で通報するため、大量の熱の発生を抑制し、装置の熱による破壊を防止することができる。
【図面の簡単な説明】
【図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バスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a control device for a multifunction device that efficiently controls an image input device such as a scanner and an image output device such as a printer.
[0002]
[Prior art]
2. Description of the Related Art Conventionally, a copier, a facsimile, or a computer system having a single unit, in which an image input device such as a scanner and an image output device such as a printer are combined, have been put to practical use. In such a system, a huge amount of data needs to be efficiently processed in order to handle image data.
[0003]
[Problems to be solved by the invention]
When such a system is integrated on one semiconductor chip, a large amount of heat is generated, and there is a problem that the package may be damaged by the heat.
[0004]
SUMMARY OF THE INVENTION It is a first object of the present invention to provide a bus management device that improves the overall processing speed and a control device for a multifunction device having the same.
[0005]
Further, the present invention has been made in view of the above-described problems, and has been made to provide a power management device that monitors an operation state of a circuit to suppress power consumption and suppress generation of a large amount of heat, and a control device of a multifunction device including the same. The second purpose is to provide.
[0006]
[Means for Solving the Problems]
In order to solve the above problem, the power management device of the present invention has the following configuration. That is, a power management device that controls power consumption of an electric circuit including a plurality of circuit blocks controlled by a control unit, wherein a state monitoring unit that monitors an operation state of each block; And a notification unit that compares the added power with a predetermined threshold value and notifies the control unit that the threshold value has been exceeded.
[0007]
Alternatively, the power management apparatus according to any one of the above is provided.
[0008]
BEST MODE FOR CARRYING OUT THE INVENTION
Next, as an embodiment of the present invention, "DoEngine" which is a single-chip scanning and printing engine including a processor core, a processor peripheral controller, a memory controller, a scanner / printer controller, a PCI interface, and the like will be described.
[0009]
[1. DoEngine Overview]
DoEngine is a single-chip scanning and printing engine with a built-in processor core, processor peripheral controller, memory controller, scanner / printer controller, PCI interface, etc. compatible with MIPS Technology's R4000 processor. It is implemented using high-speed parallel operation and the building block method.
[0010]
Within the processor shell (general term for processor peripheral circuits including the processor core), a maximum of 32 Kbytes of instruction memory and 16 Kbytes of data, 32 Kbytes of cache memory, FPU (floating point arithmetic unit), MMU (memory management unit), and user definable It is possible to incorporate a coprocessor and the like.
[0011]
Because it has a PCI bus interface, it can be used with computer systems that have PCI bus slots. In addition to the PCI satellite configuration, it is possible to issue a PCI bus configuration in a PCI host bus bridge configuration, and by combining it with an inexpensive PCI peripheral device, a main engine of a multifunction peripheral (multifunction peripheral) can be issued. It is also possible to use as. Furthermore, it is also possible to combine with a rendering engine and a compression / decompression engine having a PCI bus interface.
[0012]
The chip has two independent buses: an IO bus for connecting a general-purpose IO core inside the chip, and a graphic bus (G bus: Graphics Bus) optimized for image data transfer. By connecting via a switch, high-speed data transfer with high parallelism, which is essential for simultaneous operation in a multifunction system, is realized.
[0013]
The memory supports a synchronous DRAM (SDRAM) with the highest cost performance for accessing a continuous data string represented by image data, and small data that cannot enjoy the advantages of SDRAM burst access high-speed data transfer. In order to minimize performance degradation in random access in units, an 8-Kbyte 2-way set associative memory front cache is provided in the memory controller. The memory front cache is a system that can achieve high performance by a cache memory without a complicated mechanism even in a system configuration employing a crossbar switch in which bus snooping for all memory writes is difficult. In addition, it has a data interface (Video Interface) with a printer and a scanner capable of real-time data transfer (device control), and further supports hardware synchronization between devices and performs image processing to separate the scanner and the printer. Even in the mold configuration, a high-quality and high-speed copy operation can be realized.
[0014]
In DoEngine, the core operates at 3.3 V, and IO is 5 V tolerant.
[0015]
FIG. 1, FIG. 2, and FIG. 3 show a configuration example of an apparatus or a system using DoEngine. FIG. 1 shows a separate configuration type, in which a personal computer 102 is mounted with a local board 101 having DoEngine via a PCI interface provided therein. The local board 101 includes, in addition to DoEngine, a memory connected to DoEngine via a memory bus, which will be described later, and a color processing circuit (chip). A high-speed scanner 103 and a color / monochrome printer 104 are connected to a personal computer 102 via the local board 101. With this configuration, under the control of the personal computer, the local board 101 can process the image information input from the scanner 103 and output the image information from the printer 104.
[0016]
2 and 3 show an example in which the scanner 203 and the printer 202 are integrated. FIG. 2 shows a configuration similar to a normal copying machine, and FIG. 3A shows a configuration of a facsimile apparatus and the like. FIG. 3B shows a computer that controls FIG. 3A.
[0017]
Of these, FIGS. 1 and 2 are examples in which DoEngine is used in a slave mode in which DoEngine is controlled by an external CPU connected via a PCI interface, and FIG. 3 is mainly a DoEngine CPU. This is an example used in a master mode for controlling a device connected via a PCI interface.
[0018]
Table 1 shows the specifications of DoEngine. The external interface includes a PCI, a memory bus, a video, general-purpose input / output, IEEE1284, RS232C, 100baseT / 10baseT, an LCD panel, and a key, but may further have a USB. As a built-in block, a primary cache, a memory controller with a cache, a copy engine, an IO bus arbiter, a graphic bus arbiter, and the like are provided in addition to the CPU core. The DMA controller has five channels, and the arbitration is performed on both the graphic bus and the IO bus in a first-come-first-served manner with priority.
[0019]
[Table 1]
Figure 2004062887
[0020]
[2. Configuration and operation of DoEngine]
In this chapter, in addition to the general information of DoEngine, the block diagram, outline, details, core interface, timing diagram, etc. of each functional block are explained.
[0021]
[2.1. DoEngine Chip Configuration]
FIG. 4 shows a block diagram of DoEngine. The DoEngine 400 was designed and developed as a main controller of a multi-function peripheral (MFP) and a multi-function system (MFS).
[0022]
As the CPU (processor core) 401, a MIPSR4000 core from MIPS Technology is adopted. In the processor core 401, an instruction of 8K bytes, a data cache memory, an MMU, and the like are mounted. The processor core 401 is connected to a system bus bridge (SBB) 402 via a 64-bit processor bus (P bus). The SBB 402 is a 4 × 4 64-bit crossbar switch, and is connected to a memory controller 403 for controlling an SDRAM or a ROM having a cache memory in addition to the processor core 401 via a dedicated local bus (MC bus). , Which are a graphic bus and an IO bus 405 which is an IO bus, and are connected to a total of four buses. The system bus bridge 402 is designed to ensure simultaneous parallel connection between these four modules as much as possible.
[0023]
The G bus 404 is cooperatively controlled by a G bus arbiter (GBA) 406 and is connected to a scanner / printer controller (SPC) 408 for connecting to a scanner or a printer. The IO bus 405 is cooperatively controlled by an IO bus arbiter (BBA) 407. In addition to the SPC 408, a power management unit (PMU) 409, an interrupt controller (IC) 410, and a serial interface controller (SIC) 411 using a UART are used. , USB controller 412, parallel interface controller (PIC) 413 using IEEE1284, LAN controller (LANC) 414 using Ethernet (registered trademark), LCD panel, keys, general-purpose input / output controller (PC) 415, PCI bus interface ( (PCIC) 416.
[0024]
[2.2. Processor shell]
The processor shell refers to a block including a processor core, an MMU (Memory Management Unit), an instruction cache, a data cache, a write-back buffer, and a multiplication unit.
<Cache memory>
As shown in FIG. 5, the cache memory controller has three types: invalid (Invalid), valid and clean (Valid Clean: the cache has not been updated), and valid and dirty (Valid Dirty: the cache has been updated). Manage the state cache. The cache is controlled according to this state.
[0025]
[2.3. Interrupt controller]
FIG. 6 shows a block diagram of the interrupt controller 410. The interrupt controller 410 is connected to the IO bus 405 via the IO bus interface 605, integrates each functional block in the DoEngine chip and an interrupt from outside the chip, and has six levels of external interrupts and CPUs supported by the CPU core 401. , Non-maskable interrupts (NMI). Each functional block includes a power management unit 409, a serial interface controller 411, a USB controller 412, a parallel interface controller 413, an Ethernet (registered trademark) controller 414, a general-purpose IO controller 415, a PCI interface controller 416, a scanner / printer controller 408, and the like. is there.
[0026]
At this time, an interrupt can be masked for each factor by a software configurable mask register (Int Mask Logic 0-5) 602. In addition, the external interrupt input can select edge sensing / level sensing for each signal line by the selective edge detection circuit 601. A factor register (Detect and set Cause Reg 0-5) 603 indicates which interrupt is asserted for each level, and can perform clearing for each level by performing a write operation.
[0027]
The interrupt signal of each level is output as a logical sum by the OR circuit 604 so as to output an interrupt signal if there is at least one interrupt for each level. The level assignment between a plurality of factors in each level is performed by software.
[0028]
[2.4. Memory controller]
FIG. 7 is a block diagram of the memory controller 403. The memory controller 403 is connected to an MC bus, which is a local bus dedicated to the memory controller, via an MC bus interface 701, and supports a synchronous DRAM (SDRAM) of up to 1 gigabyte and a flash ROM or ROM of 32 megabytes. 64 (16 × 4) burst transfer is realized to take advantage of the high speed at the time of burst transfer, which is a feature of SDRAM. In addition, in consideration of single transfer of continuous addresses from the CPU and the IO bus, an SRAM (memory front cache) 702 is incorporated in the memory controller, and transfer efficiency is reduced by avoiding direct single transfer to the SDRAM as much as possible. Improve. The width of the data bus between the memory controller and the SDRAM is 72 bits including the signals ramData and ramPar (the 8-bit signal ramPar is a parity), and the width of the data buses fntromData and prglomData between the flash ROM is 32 bits.
[0029]
[2.4.2. Configuration and Operation]
Each part of the memory controller has a configuration as described below.
<MC bus interface (701)>
The MC bus is a dedicated bus between the SBB 402 and the memory controller 403, and is used as a basic bus inside the SBB.
[0030]
While the burst transfer of the dedicated bus PBus connecting the CPU 401 and the bus bridge 402 specifies only four bursts, the MC bus adds a transfer of up to 16 bursts × 4. For this purpose, mTType [6: 0] is newly defined as a signal indicating the burst length.
(Definition of MC bus signal)
Each signal of the MC bus is defined as follows.
・ MClk (output)… MC bus clock:
• mAAddr [31: 0] (output): MC bus address:
This is a 32-bit address bus, and is held from the time when mTs_L is asserted to the time when mBRdy_L is asserted.
MDataOut [63: 0] (output) ... MC bus data output:
This is a 64-bit output data bus, and is valid only when mDataOe_L is asserted.
MDataOe_L (output): MC bus data output enable:
Indicates that mDataOut [63: 0] is valid. It also indicates that the transfer is Write.
-MDataIn [63: 0] (input) ... MC bus data input:
This is a 64-bit input data bus, and is sampled at the rising edge of mClk where mBRdy_L is asserted.
MTs_L (output): MC bus transaction start strobe:
Indicates that the transfer has started. Asserted only during the first clock of the transfer. If the transfer is completed in one clock and the next transfer is started immediately, mTs_L will remain asserted.
• mTType [6: 0] (output): MC bus transaction type:
Indicates the type of transfer on the MC bus. During the single transfer, the data is held during the transfer, and during the burst transfer, the data is held during the first transfer (beat). The upper 3 bits represent the source (master) and the lower bits represent the single / burst length. The types are as follows.
mTType [6: 4] signal source
−−−−−−−−−−−−−−−−−−−−
001 CPU
010 IO bus
100 G bus
−−−−−−−−−−−−−−−−−−−−
mTType [3: 0] single / burst length
−−−−−−−−−−−−−−−−−−−−
1xxx single (1-8 bytes)
0001 2 burst
0010 4 burst
0011 6 bursts
0100 8 burst
0101 16 burst
0110 2 × 16 burst
0111 3 × 16 burst
0000 4 × 16 burst
MBE_L [7: 0] (output): MC bus transaction byte enable:
Indicates a valid byte lane on a 64-bit data bus during single transfer. During burst transfer, it is valid only during Write, and is ignored during Read.
-MBRdy_L (input) ... MC bus ready:
Indicates that the current transfer (beat) has been completed.
MTPW_L (output): the next transaction is In-page write (in-page write):
This indicates that the next transfer is a Write of the same page (the same Row address), and up to four Writes can be continued. The page size is set in the configuration register in advance.
MBPWA_L (input): Write permission in the page of the bus:
Indicates whether the MC bus slave (memory controller) allows an intra-page write transaction and is sampled at the same clock as mBRdy_L. At this time, if mBPWA_L is deasserted, mTPW_L becomes meaningless.
-MBRty_L (input) ... bus retry:
Assert when the MC bus slave (memory controller) terminates the access in an unexecuted state, indicating that the retry must be performed after at least one cycle of idle. (If mBRdy_L and mBRty_L are asserted simultaneously, mBRty_L has priority.)
-MBerr_L (input) ... bus error:
Asserted when a parity error or other bus error occurs.
[0031]
It should be noted that the above-mentioned distinction between input and output is a definition as seen from SBB.
(MC bus transaction)
The following transactions are supported as transactions on the MC bus.
(1) Basic transaction (1, 2, 3, 4, 8 bytes Read / Write):
According to the mBE_L [7: 0] signal, a single transaction of 1, 2, 3, 4, 8 bytes is supported.
(2) Burst transaction:
Supports transactions up to 4-doubleword bursts (from CPU).
(3) Support up to 16-doubleword burst x 4 transactions from the G bus.
(4) In-page write transaction:
It supports continuous Write access for writing in the same page indicated by mTPW_L.
(5) Bus retry:
If the memory cannot be accessed due to a limitation in the memory controller, the mBRty_L signal is asserted to notify a bus retry.
<SDRAM controller (705)>
The memory controller 403 controls the SDRAM having the following configuration as follows.
[0032]
(DRAM configuration)
As a configuration of the DRAM, a 16/64 Mbit SDRAM of x4, x8, and x16 bit type can be controlled in eight banks by a 64-bit data bus.
[0033]
[Table 2]
Figure 2004062887
[0034]
(DRAM address bit configuration)
Regarding the allocation of the address bits of the DRAM, MA [13: 0] is used for a 64-bit SDRAM, and MA [11: 0] is used for a 16-bit SDRAM.
[0035]
[Table 3]
Figure 2004062887
(SDRAM programmable configuration (mode register))
The SDRAM has a mode register inside, and sets the following items using a mode register setting command.
(1) Burst length:
The burst length can be set to any one of 1, 2, 4, 8 and full page. However, since the burst transfer length from the CPU is 4, a burst length of 4 is optimal. Transfer of 16 bursts or more from the G bus is realized by continuously issuing a Read / Write command (without auto-precharge).
(2) Wrap Type:
Set the address increment order during burst transfer. Either “sequential” or “interleave” can be set.
(3) CAS latency:
The CAS latency can be set to one of 1, 2, and 3, and is determined by the grade of the SDRAM used and the operation clock.
[0036]
(SDRAM command)
The following commands are supported for SDRAM. Details of each command are described in the SDRAM data book.
・ Mode register setting command
・ Active command
・ Precharge command
・ Write command
・ Read command
-CBR (Auto) refresh command
・ Self refresh start command
・ Burst stop command
・ NOP command
(SDRAM refresh)
Since the SDRAM has 2048 cycles / 32 ms (4096/64 ms), it issues a CBR refresh command every 16,625 ns. The memory controller has a configurable refresh counter and automatically issues a CBR refresh command. During the transfer of 16-burst × n from the G bus, no refresh request is accepted. Therefore, the refresh counter must be set to a value with a margin of 16-burst × 4 transfer time. It also supports self-refresh. When this command is issued, the self-refresh is continued in the power down mode (ramclke_L = Low).
[0037]
(SDRAM initialization)
After a power-on reset, the memory controller performs the following initialization on the SDRAM. That is, after a pause period of 100 μs after power-on,
(1) precharge all banks using a precharge command;
(2) setting the mode register of the SDRAM;
(3) Refresh is performed eight times using an auto-refresh command.
[0038]
<Flash ROM controller (704)>
The flash ROM controller 704 supports an address signal of romAddr [23: 2] and four chip select (romCs_L [3: 0]) signals. The address signals romAddr2 to romAddr9 are multiplexed with the parity signals ramPar0 to ramPar7, and the address signals romAddr10 to romAddr23 are multiplexed with the DRAM addresses ramAddr0 to ramAddr13.
[0039]
<SRAM control (memory front cache)>
The SDRAM used as a main memory can perform burst transfer at a very high speed, but cannot exhibit the high speed in a single transfer. Therefore, a memory front cache is implemented in the memory controller to increase the speed of single transfer. The memory front cache includes a cache controller 706 and an SRAM 702. Since the transfer master and the transfer length can be known from the mTType [6: 0] signal defined on the MC bus, the cache can be turned on / off for each master or for each transfer length. The cache method is as follows. Hereinafter, unless otherwise specified, the term “cache” or “cache memory” refers to not a cache built in a processor core but a memory front cache built in a memory controller.
・ 2-way set associative
・ 8k bytes data RAM
・ 128 x 21 x 2 tag RAM
・ LRU (Least Recently Used) algorithm
・ Write-through
・ No Write Allocate
Next, a detailed block diagram centering on the cache controller 706 is shown in FIG.
[0040]
(Cache operation)
Here, the operation of the cache when a memory read / write transfer is requested from the MC bus will be described with reference to the block diagram of FIG. 8 and the flowcharts of FIGS. 9 and 10.
[0041]
When data transfer is started from the MC bus, it is determined at the beginning of the transfer whether or not the transfer is to be performed with the cache on or off by mTType [6: 0] indicated on the MC bus. In this description, it is determined that the transfer is on if the transfer is a single transfer, and off if the transfer is a burst transfer (step S901). In other words, if mTType (3) is "1" h, the transfer is performed with cache on because it indicates single transfer, and if "0" h, it indicates burst transfer and transfer with cache off.
[0042]
In the case of single transfer (cache-on), when an address lmaddr [31: 0] is given, lmaddr [11: 5] is given as an index to b1_tag_ram801, b2_tag_ram802, b1_data_ram702-a, b2_data_ram702-b and lru803, respectively. Then, valid bits “v” and b1_tag_addr, valid bits “v” and b2_tag_addr, b1_out_data, b2_out_data, and lru_in corresponding to the input index are output (step S902).
[0043]
The b1_tag_addr and the b2_tag_addr output from the b1_tag_ram 801 and the b2_tag_ram 802 are respectively compared with the addresses lmaddr [31:12] at the b1_comparator 804 and b2_comparator 805 at the b1_comparator 804 and the b2_comparator 805, and whether the signal is a hit is _hs_hs_hs_m_sb_sm_hs_sm_hs_m_sb_sm_hs_mh_sm_sm_hs_sm_hs_sm_hs_sm_hs_sm_hs_hs_hs_hs_hs_hs_hs_hs_hh_hhh_hhhhhhhhhhhhhh) (Step S903).
[0044]
If it is a hit here, it is determined whether it is read or write (step S904). A hit is a case where any one of b1_tag_addr and b2_tag_addr matches the address lmaddr [31:12]. In the case of a hit and a read, it is as follows. That is, if b1 is a hit and the requested transfer is a read, b1_out_data is selected from b1_out_data and b2_out_data that have already been read, and the 8-byte data indicated by lmaddr [4: 3] is selected. Output to the MC bus (step S905). At the same time, lru corresponding to the index is rewritten to "0" (= b1 hit), and the transfer is completed. If b2 is a hit and the requested transfer is a read, b2_out_data is selected from b1_out_data and b2_out_data that have already been read, and 8-byte data indicated by lmaddr [4: 3] is transferred to the MC bus. (Step S905). At the same time, lru corresponding to the index is rewritten to "1" h (= b2 hit), and the transfer is completed.
[0045]
On the other hand, in the case of hit and write, it is as follows. That is, when b1 is a hit and the requested transfer is a write, mBE_L [7: 0] of 8-byte data indicated by lmaddr [4: 3] of b1_data_ram702-a indicated by the index is used. Only the indicated valid byte lane is rewritten, and at the same time, lru corresponding to the index is rewritten to “0” h (= b1 hit). The SDRAM is similarly rewritten and the transfer is completed (step S906). If b2 is a hit and the requested transfer is a write, it is indicated by mBE_L [7: 0] of 8-byte data indicated by lmaddr [4: 3] of b2_data_ram702-b indicated by the index. Only valid byte lanes are rewritten, and at the same time, lru corresponding to the index is rewritten to "1" h (= b2 hit). The SDRAM is similarly rewritten and the transfer is completed (step S906).
[0046]
On the other hand, when both b1 and b2 are misses, it is determined whether the data is read or write (step S1001). If the requested transfer is a read, the 8-byte data indicated by lmaddr [31: 3] is read from the SDRAM (step S1003) and output to the MC bus (step S1004). At the same time, lru corresponding to the index is read, and if it is "0" h, data from the SDRAM is written to b2_data_ram, and lru is also rewritten to "1" h. If lru is "1" h, the data from the SDRAM is written to b1_data_ram, and lru is also rewritten to "0" h (step S1005). If b1 and b2 are both misses and the requested transfer is a write, the transfer is completed only by writing to the SDRAM (step S1002).
[0047]
In the case of burst transfer (cache off) in step S901, both reading and writing are performed only for the SDRAM (steps S907-S909), and cache data and tags are not rewritten.
[0048]
<ROM / RAM interface (707)>
FIG. 11 shows the configuration of the ROM / RAM controller 707. Blocks 1101 to 1104 multiplex the data signal, address signal and parity signal of the SDRAM with the data signal and address signal of the flash ROM.
[0049]
[2.4.3. Timing diagram]
The timing of processing such as data read / write by the memory controller 403 will be described with reference to FIGS.
[0050]
FIG. 12 shows the timing of burst reading from the CPU. The burst length is 4, and the CAS latency is 3. This corresponds to the processing in step S909 in FIG.
[0051]
FIG. 13 shows the burst write timing from the CPU. The burst length is 4, and the CAS latency is 3. This corresponds to the processing in step S908 in FIG.
[0052]
FIG. 14 shows the timing of burst reading from the G bus device. The burst length of the G bus is 16, the burst length of the SDRAM is 4, and the CAS latency is 3. This corresponds to the processing in step S909 in FIG.
[0053]
FIG. 15 shows the timing of burst write from the G bus device. The burst length of the G bus is 16, the burst length of the SDRAM is 4, and the CAS latency is 3. This corresponds to the processing in step S908 in FIG.
[0054]
FIG. 16 shows the timing of a single read when a hit occurs in the memory front cache. As the read data mDataIn [63: 0], b1 / b2_out_data read from the cache memory b1_data_ram702-a or b2_data_ram702-b is output. The burst length of the SDRAM is 4 and the CAS latency is 3. This corresponds to the processing in step S905 in FIG.
[0055]
FIG. 17 shows the timing of a single read when no hit occurs in the memory front cache. Data ramData [63: 0] read from the SDRAM is output as the read data mDataIn [63: 0]. This data is also written as b1 / b2_in_data in the cache memory b1_data_ram702-a or b2_data_ram702-b. The burst length of the SDRAM is 4 and the CAS latency is 3. This corresponds to the processing in steps S1004 and S1005 in FIG.
[0056]
FIG. 18 shows the timing of a single write when a hit occurs in the memory front cache. The data mDataOut [63: 0] to be written is written to the cache memory b1_data_ram 702-a or b2_data_ram 702-b, and is also written to the SDRAM. The burst length of the SDRAM is 4 and the CAS latency is 3. This corresponds to the processing in step S906 in FIG.
[0057]
FIG. 19 shows the timing of a single write when no hit occurs in the memory front cache. The data mDataOut [63: 0] to be written is not written to the cache memory b1_data_ram702-a or b2_data_ram702-b, but is written only to the SDRAM. The burst length of the SDRAM is 4 and the CAS latency is 3. This corresponds to the processing in step S1002 in FIG.
[0058]
Here, when data transfer is started from the MC bus, mTType [6: 0] indicated on the MC bus at the beginning of the transfer turns on if the transfer is a single transfer, and turns off if the transfer is a burst transfer. In the case of burst transfer, the burst length is further determined. If the burst length is smaller than one cache line, the cache is turned on; otherwise, the cache is turned off. Is also good.
[0059]
Also, by including a signal indicating the identifier of the bus master that has requested data transfer to the memory on the MC bus, the memory controller can determine the identifier and control cache on / cache off according to the identifier. it can. In this case, it is also possible to prepare a rewritable table in which the identifier is associated with whether the cache is on or off, and switch the cache on / off with reference to the rewritable table. This table can be made rewritable by the CPU 401 or the like by assigning a specific address, for example.
[0060]
[2.5. System bus bridge (SBB) and IO bus, G bus]
FIG. 20 shows a block diagram of the system bus bridge (SBB) 402.
[0061]
The SBB 402 is a multi-channel bidirectional bus bridge that provides interconnection between an IO bus (input / output bus), a G bus (graphic bus), a P bus (processor local bus), and an MC bus using a crossbar switch. With the crossbar switch, two systems can be simultaneously connected, and high-speed data transfer with high parallelism can be realized.
[0062]
The SBB 402 includes an IO bus interface 2906 for connecting to the IO bus 405, a G bus interface 2006 for connecting to the G bus 404, a CPU interface slave port 2002 for connecting to the processor core 401, and a memory controller 403. In addition to a memory interface master port for connection, an address switch 2003 for connecting an address bus and a data switch 2004 for connecting a data bus are included. Further, a cache invalidation unit 2005 for invalidating the cache memory of the processor core is provided.
[0063]
In the IO bus interface 2009, a write buffer for speeding up DMA writing from the IO bus device and a read prefetch queue for improving the efficiency of reading from the IO bus device are mounted. Coherency management for data temporarily existing in these queues is performed by hardware. Note that a device connected to the IO bus is called a device.
[0064]
Although the processor core supports dynamic bus sizing for a 32-bit bus, the SBB 402 does not support this, in order to minimize the modification required for the SBB even when using a processor that does not support bus sizing in the future. .
[0065]
[2.5.1. Configuration and operation of SBB and each bus]
<IO bus interface>
FIG. 21 is a block diagram of the IO bus interface.
[0066]
The IO bus interface 2009 is a bidirectional bridge circuit between the IO bus and the MC bus. The IO bus is a DoEngine internal general-purpose bus.
[0067]
The IO bus interface 2009 includes five blocks of a master control block 2011, a slave control block 2010, a data interface 2012, a DMAC 2013, and an IO bus buffer. In FIG. 21, the DMAC 2013 is functionally divided into three sequencers and register blocks. Among these three sequencers, the DMA memory access sequencer is built in the IO bus slave control block 2010, and the DMAreg sequencer is built in the IO bus master control block 2011. The DMA register as a register block is built in the IO bus data interface 2012.
[0068]
The IO bus interface 2009 invalidates both the data and instruction caches in the CPU shell via the cache invalidation interface when writing to the memory from the IO bus side and when data is transferred from the device to the memory by DMA. Control.
[0069]
Although a write-back buffer for CPU write is not mounted on the IO bus interface, a write buffer for external master write on the IO bus is mounted. As a result, continuous writing from an external master, which is not a burst transfer, is speeded up. The flushing of the write buffer is performed when the IO bus arbiter 407 permits connection of the cache buffer. No write buffer bypass for IO bus master read is performed.
[0070]
Also, the read prefetch queue of the external master is executed. Thus, the speed of reading a continuous data stream from the external master is increased. Disabling the read buffer
(1) When a new read of the IO bus does not hit the buffer,
(2) When writing to the memory from the CPU is performed,
(3) When data is written from the G bus to the memory,
(4) When data is written from the IO bus to the memory
Done in
[0071]
The IO bus interface 2009 incorporates a DMA controller 2013 between each device on the IO bus 405 and the memory. By incorporating a DMA controller in the system bus bridge 402, an access request can be issued to both bridges at the same time, and efficient DMA transfer can be realized.
[0072]
The IO bus interface 2009 does not request the use of dynamic bus sizing in response to an access request from the processor 401. It also does not support bus sizing from the memory controller 403 when a memory access request is made from the IO bus master. That is, the memory controller should not expect bus sizing.
[0073]
<IO bus>
The IO bus is a general-purpose IO bus in DoEngine, and has the following specifications.
-Address / data separation type 32 bit bus.
・ Any wait cycle can be inserted. The shortest is no wait.
-Support for burst transactions.
-The maximum transfer speed is 200 Mbytes / Sec when the clock is 50 MHz.
-Support for bus error and bus retry.
-Support for multiple bus masters.
[0074]
(IO bus signal definition)
The definition of the bus signal will be described below. For each signal, it is described in the manner of “Signal name (English name): input source → output destination (, 3States)... Signal description”. Note that the three-state item is described only for three-state signals.
BAddr [31: 2] (IOBus Address Bus): Master → Slave, 3State ... IOBus address bus.
BData [31: 0] (IOBus Data Bus): DataDriver → DataReceiver, 3State ... IOBus data bus.
B (DataDrivername) DataOeReq (IOBus Data Output Enable Request): DataDriver → DefaultDriverLogic: An output signal to a default driver control logic to realize a bidirectional IO bus described later. A device having a DataDrivername is a request signal for driving data on the bus. B (Datadrivername) DataOe_L is output from the default driver control logic to the device permitted to output data. Examples of Datadriver: Pci, Sbb, Jpeg, Spu.
B (DataDrivername) DataOe_L (IOBus Data Output Enable): ddefaultDriverLogic → Datadriver ... b (DataDrivername) For a device that outputs DataOeData, the default driver logic is Data_eData at the data bus. Returns for that device.
BError_L (IOBus Bus Error): Slave → Master 3State ... Indicates that the IO bus transaction has ended with an error.
B (Mastername) BGnt_L (IOBus Grant): Arbiter → Master... Indicates that the master has obtained the right to use the bus by bus arbitration. Examples of Mastername: Pci, Sbb, Jpeg, Spu.
BlnstNotData (IOBus Instruction / Data Output Indicator): Master → Slave, 3State... Drives high when the IO bus master performs an instruction fetch to the IO bus slave. In the case of a data transaction, drive to Low.
B (Mastername) CntOeReq (IOBus Master Control Output Enable Request): Master → DefaultDriverLogic ... IO bus master drives bStart_L, bTx_L, bWr_L, bWr_L, bTx_L, bTx_L, bTx_L, bTx_L, bTx_L, bTx_L, bTx_L, bTx_L, bTx_L Assert for Control Logic. The IOBus Output Control Logic returns a b (Mastername) CntOe_L signal from each master to the master that permits the drive based on bMCntOeReq.
B (Mastername) CntlOe_L (IOBus Master Control Output Enable): DefaultDriverLogic → Master ... b (Mastername) When the default driver logic allows the master to output the master signal to the master that outputs the CntOReq signal, then b (Lame) return.
BRdy_L (IOBus Ready): Slave → Master, 3State... The IO bus slave asserts this signal to indicate that the current IO bus data transaction ends the current clock cycle last. The IO bus master knows from this signal that the current transaction will end in this clock cycle.
B (Mastername) BReq_L (IOBus Bus Request): Master → Arbiter... Indicates that the IO bus master issues a bus use right request to the IO bus arbiter.
BRetry_L (IOBus Bus Retry): Slave → Master 3State... The IO bus slave requests the master to execute the bus transaction again.
B (Slavename) RdyOeReq (IOBus Slave Ready Output Enable Request): Slave → DefaultDriverLogic ... If IO bus slave is on bus drive, BRyL is on Bus drive, BBurstReq_L is on Bus drive, BBurstReq_L is on BBurstReq_L, bBurstReq_L is on LBurstReq_L, bBurstReq_L is on BBurstReq_L, bBurstReq_L is on BBurstReq_L, bBurstReq_L is on bus drive. The IOBusDefaultDriverLogic returns a b (Slavenname) RdyOe_L signal from each master to a slave that permits driving based on b (Slavenname) RdyOeReq.
B (Slavename) RdyOe_L (IOBus Slave Ready Output Enable): DefaultDriverLogic → Slave b (Slavename) RdyOeReq to the master that has output Rdylae signal to the master that has output R_labe to the master that has output Rb to the master. return.
BSnoopWait (IOBus Snoop Wait): SBB → NextMaster... Indicates that the IO bus interface is executing the snooping of the cache to another device connected to the IO bus. Devices connected to the IO bus cannot issue new transactions while this signal is asserted.
BStart_L (IOBus Transaction Start): Master → Slave 3State... A signal indicating that the IO bus master starts an IO bus transaction. The IO bus slave can know the start of the IO bus transaction by monitoring this signal. .
BTx_L (IOBus Transaction Indicator Input): Master → Slave 3State... The IO bus master asserts to the IO bus slave to indicate that the IO bus transaction is currently being executed.
BWBurstGnt_L (IOBus Burst Write Grant): Master → Slave, 3State... Drives to indicate that the IO bus master executes burst write in response to an IO bus burst write request.
BWBurstReq_L (IOBus Burst Write Request): Slave → Master, 3State ... Asserted when an IO bus slave requests a berth and write to the IO bus master.
BWr_L (IOBus Write Transaction Indicator): Master → Slave, 3State... The IO bus master asserts to the IO bus slave to indicate that the current transaction is a write.
BByteEn [3: 0] (IOBus Byte Enables): DataDriver → DataReceiver, 3State... The agent that drives data on the IO bus has a valid byte lane on bData [31: 0] corresponding to each bit. Drive to High to indicate Table 4 shows the correspondence between each line of this signal and the byte lane of bData.
[0075]
[Table 4]
Figure 2004062887
BBurst_L (IOBus Extended Burst Request): Master → Slave, 3State... Indicates that the IO bus master wants to perform an extended burst. Assert and negate timings are the same as bTx_L.
BBurstAck_L (IOBus Extended Burst Acknowledge): Slave → Mast, 3State... Indicates that an IO bus slave can perform an extended burst. Assert and negate timings are the same as bRdy_L.
BBurstShortNotLong_L (IOBus Burst Length): Master → Slave, 3State... Indicates a burst length when the IO bus master performs an extended burst. Assert and negate timings are the same as bTx_L, and the correspondence between the signal value and the burst length is as shown in Table 5.
[0076]
[Table 5]
Figure 2004062887
[0077]
The IO bus signals are as described above. The number of functional blocks to be connected to the IO bus (and the G bus), which is a bus inside the DoEngine, is 10 or more, so it is difficult to connect all the blocks with the InOut separation bus. In DoEngine, a bidirectional bus in a chip is adopted.
[0078]
<G bus interface>
FIG. 22 shows a block diagram of the G bus interface 2006. The outline is as follows.
[0079]
(Overview of G bus)
The G bus is a bus defined within the one-chip controller DoEngine for the MFP to execute high-speed data transfer between the image data processing units. It has a 64-bit data bus and supports a 4-Gbyte (128-byte boundary) address space. Basically, 16 long beats (128 bytes = 64 bits x 16) are transferred as one long burst, and up to 4 long bursts (512 bytes = 16 beats x 4) are possible.
(Transfer of 16 beats or less, such as a single beat, is not supported.)
[0080]
(G bus signal definition)
First, the symbols used to define the signals are determined. Immediately after the signal name, the direction of the signal is described as necessary. It is defined as follows.
In (Input signal): Input signal to the bus agent
Out (Output signal): Output signal from the bus agent
InOut (Bi-Directional Tri-State signal): a bidirectional signal, driven by a plurality of bus agents. Only one agent drives at a time. The enable request signal of each agent that drives the signal is centrally managed by a default driver, and the default driver determines which agent drives. When no agent issues an enable request, or when a plurality of agents issue an enable request at the same time, the default driver signal is driven. If the agent drives the signal low, it must drive high for one clock before and after. The signal can be asserted only after one or more clocks have passed since the drive was first started. Basically, the signal is released at the next negated clock.
[0081]
Note that "_L" after each signal name indicates that the signal is low active. The description of the signal substantially conforms to the description of the IO bus signal. The description is divided into system signals, address and data signals, interface control signals, and arbitration signals. The bus agent is a general term for a bus master and a bus slave connected to the bus.
[0082]
(System signal)
GClk (G-Bus Clock): Provides timing for all transactions on the G bus and is an input to all devices.
GRst_L (G-Bus Reset): Resets all devices on the G bus. All internal registers are cleared and all output signals are negated.
[0083]
(Address and data signals)
GAddr [31: 7], InOut, (G-Bus Address): Master → Slave... Since all data transfer on the G bus is performed in units of 128 bytes (16 beats), gAddr [31] to gAddr [7] Supports 4 Gbyte address space with 25 bits.
Drive: Driven by the master at the same time as gTs_L assert: The next clock driven by the master.
Negative: a clock that has confirmed assertion of gAack_L.
G (Mastername) AddrOeReq (G-Bus Address OutPut Enable Request): Master → DefaultDriverLogic ···· Output signal to default driver logic for realizing bidirectional G bus. Request signal for the bus master to drive the address bus.
G (Mastername) AddrOe_L (G-Bus Address OutPut Enable): DefaultDriveLogic → Master... The default driver logic permits the bus master that has output the g (Mastername) AddrOeReq to drive the address bus.
GData [63: 0], InOut, (G-Bus Data): DataDriver → DataReceiver ... A 64-bit data bus. The master drives when writing and the slave drives when reading.
[Light]
Drive: the master is driven at the same time as gTs_L. However, when gSlvBsy_L is asserted, drive until it is negated.
assert: The next clock that has been driven.
Change: a clock that confirms assertion of gAack_L, and thereafter every clock.
-Negative: a clock at the end of transfer or when gAack_L is asserted when a transfer stop request by gTrStp_L is confirmed.
[Lead]
Drive: The slave is driven at the same time as gAack_L.
Assert: Assert at the next clock after the drive if the slave is Ready, and wait until it becomes Ready if it is not Ready.
Change: a clock that confirms assertion of gAack_L, and thereafter every clock. For read, every clock from asserted clock.
-Negate: at the end of transfer.
Release: a clock one clock after negation or a clock confirming a transfer stop request by gTrStp_L.
G (DataDrivername) DataOeReq (G-Bus Data OutPut Enable Request): DataDriver → DefaultDriverLogic: A request signal for the data driver to drive the data bus.
G (DataDrivername) DataOe_L (G-Bus DataOutPut Enable): DefaultDriverLogic → DataDriver ... g (DataDrivername) Data driver that outputs a data enable signal to a data driver that outputs g (DataDrivername) DataOeReq.
[0084]
(Interface control signal)
GTs_L (InOut G-Bus Transaction Start): Master → Slave: Asserted Low for one clock by the master to indicate the start of transfer (address phase). The master drives gAddr, gRdNotWr, and gBstCnt together with gTs_L to clarify the type of transfer and the amount of data. The master must guarantee that the transfer data amount specified here can be issued without weight in the case of a write. In the case of a read, it is necessary to guarantee that the specified transfer data amount is received without a wait. When data cannot be transferred in the middle of the slave, the transfer of the next 16 beats may be canceled by gBsStep_L. However, there is no cancellation in the middle of 16 beats.
-Drive: Drive with a clock that confirms assertion of gGnt_L.
Assert: next clock driven.
Negative: negated after clock assertion.
G (Mastername) TsOeReq (G-Bus Transaction Start Out Enable Request): Master → DefaultDriverLogic ... A request signal for the bus master to drive gTs_L.
G (Mastername) TsOe_L (G-Bus Transaction Start OutPut Enable): DefaultDriverLogic → Master... G (Mastername) TsOeReq is a default driver clock for the bus master that has output the TsOeReq.
GAack_L, InOut, (G-Bus Address Acknowledge): Slave → Master... Is driven low by the slave for one clock. The corresponding slave recognizes the transfer, confirms that the bus is free, and informs the master that data transfer can be started. In the case of a write, the slave must ensure that it receives the transfer data amount requested by the master without waiting. In the case of read, it must be ensured that the requested transfer data amount can be output without waiting. If data transfer cannot be performed in the middle, the transfer of the next 16 beats can be canceled by gBstStp_L. However, it cannot be canceled in the middle of 16 beats.
-Drive: At the time of an address decode bit, driving is started with a clock that confirms assertion of gTs_L. However, when gSlvBsy_L is asserted, it is driven until it is negated. If the drive has not been driven yet because the data bus is in use, the drive is started with the clock that has confirmed the transfer stop request by gTrStp_L.
Assert: Assert at the next clock after the drive if the slave is Ready, and wait until it becomes Ready if it is not Ready. In response to a transfer stop by gTrStp_L, it is asserted at the next clock after driving.
-Negative: When gTrStp_L is asserted after driving, it is asserted with the clock that confirms gTrStp_L. It is negated after one clock assertion.
G (Slavenname) AckOeReq (G-Bus Address Acknowledge OutPut Enable Request): Slave → DefaultDriverLogic ... A request signal for the slave to drive gAack_L.
G (Slavename) AackOe_L (G-Bus Address Acknowledge OutPut Enable): DefaultDriverLogic → Slave ... A default driver logic that indicates the drive that outputs g (Slavename) AackOeReq to a slave that outputs g (Slavename) AackOeReq.
GSlvBsy_L, InOut, (G-Bus Slave Busy): Slave → Master... Indicates that the slave is driving and data is being transferred on the data bus.
-Drive: When address decode hits, drive starts with a clock that confirms assertion of gTs_L. However, when gSlvBsy_L is asserted, drive until it is negated.
-Assert: Assert at the next clock after driving if the slave is Ready, and wait until it becomes Ready if it is not Ready.
-Negate: negate at the end of transfer.
Release: a clock one clock after negation or a clock confirming a transfer stop request by gTrStp_L.
· G (Slavename) SlvBsyOeReq (G-Bus Slave Busy OutPut Enable Request): Slave → DefaultDriverLogic ... request signal g (Slavename) for slave to drive the gSlvBsy_L SlvBsyOe_L (G-Bus Slave Busy OutPut Enable): DefaultDriverLogic → Slave ... g (Slavename) A signal indicating that the default driver logic permits the slave that outputs SlvBsyOeReq to drive gSlvBsy_L.
GRdNotWr, InOut, (G-Bus Read (High) / Write (Low)): Master → Slave... Driven by the master, which indicates READ when High and WRITE when LOW. The driving period is the same as GA.
Drive: The master drives at the same time as gTs_L.
Assert: next clock driven.
Negative: a clock that has confirmed assertion of gAack_L.
G (Mastername) RdNotWrOeReq (G-Bus Read / Write OutPut Enable Requests): Master → DefaultDriverLogic: Request signal for the bus master to drive gRdNotWr.
G (Mastername) RdNotWrOe_L (G-Bus Read / Write OutPut Enable): DefaultDriverLogic → Master ... g (Mastername) RdNotWrOeReq is the default driver logic for the bus master that has output RdNotWrOeReq.
GBstCnt [1: 0], InOut, (G-Bus Burst Counter): Master → Slave... Indicates the number of burst transfers (1 to 4) driven by the master and performed continuously. Table 6 shows the correspondence between the signal value and the number of bytes to be burst-transferred.
Drive: The master drives at the same time as gTs_L.
Assert: next clock driven.
Negative: a clock that has confirmed assertion of gAack_L.
[0085]
[Table 6]
Figure 2004062887
G (Mastername) BstCntOeReq (G-Bus Burst Counter OutPut Enable Request): Master → DefaultDriverLogic: A request signal for the bus master to drive gBstCnt.
G (Mastername) BstCntOe_L (G-Bus Burst Counter OutPut Enable): DefaultDriverLogic → Master... G (Mastername) BstCntOeReq is the default driver logic for the bus master that has output the BstCntOeReq.
GBstStp_L, InOut, (G-Bus Burst Stop): Slave → Master... Driven by the slave and indicates that the next successive burst transfer cannot be accepted. Assert at the 15th beat of one burst (16 beats) transfer. If you do not stop, do not drive.
-Drive: 14th beat.
-Assert: 15th beat.
-Negate: after 1 clock assertion
G (Slavenname) BstStpOeReq (G-Bus Stop Stop Out Enable Request): Slave → DefaultDriverLogic ... A request signal for the slave to drive on gBstStp_L.
G (Slavenname) BstStpOe_L (G-Bus Burst Stop OutPut Enable): DefaultDriverlogic → Slave ... g (Slavenname) BstStPOeReq is a default driver logic for a slave that outputs BstStpOeReq.
[0086]
(Arbitration signal)
g (Mastername) Req_L, Out, (G-Bus Request): Master → Arbiter... Driven by the master and requests a bus to the arbiter. Each master device has a dedicated gReq_L.
-Assert: The master which needs data transfer asserts.
-Negate: negation upon receipt of gGnt_L
G (Mastername) Gnt_L, In, (G-Bus GNT): Driven by Arbiter → Master... Arbiter, and grants the next bus right to the bus request. Each master device has a dedicated gGnt_L. Bus rights are given in order from the bus master with the highest priority. Bus rights are given to masters of the same priority in the order in which bus requests are made.
Assert: Assert to the master selected by arbitration when gGnt_L is not given to another master or when gGnt_L given to another master is negated at the next clock.
-Negative: a clock whose assertion of gAack_L has been confirmed.
GTrStp_L, In, (G-Bus Transaction Stop): Arbiter → Master, Slave ... The transaction driven by the arbiter and whose address phase has already been started by gGnt_L is stopped. However, a transaction that has already started the data phase by gAack_L cannot be stopped. This signal is masked by gAack_L, and when gAack_L is asserted, it is negated and output even if it is asserted.
Assert: when a bus request comes from a master with a higher priority than the transaction that has already started the address phase.
-Negative: a clock whose assertion of gAack_L has been confirmed.
(G bus write cycle)
The G bus write cycle is as follows.
(1) The master requests the bus and asserts gReq_L.
(2) Arbiter permitted, gGnt_L asserted. gReq_L negation.
(3) Upon receiving gGnt_L, the master drives gTs_L, gAddr, gRdNotWr, and gBstCnt.
In the case of a write operation, if gSlvBsy_L is not asserted, gData is also driven at the same time. If gSlvBsy_L is driven, drive is performed after gSlvBsy_L becomes free.
(4) The slave decodes the address when gTs_L is asserted, and recognizes a transfer to itself if hit. At this time, if gSlvBsy_L is not asserted by another slave, driving of gSlvBsy_L and gAack_L is started. In the case of a read, gData is also driven. If gSlvBsy_L is asserted by another slave, it means that the data bus is in use, so wait until it is negated and start driving. After the drive of gSlvBsy_L, gAack_L, (gData) starts, if the slave is ready for data transfer, it asserts each signal and starts data transfer.
(5) The address phase ends when gAack_L is asserted, and the master negates gAddr, gRdNotWr, and gBstCnt. From that point on, the master switches the write data every clock, and transfers the data by the amount of data specified by gBstCnt. The master and the slave must each count the clock on their own to know the end of the data transfer.
[0087]
If the slave cannot transfer the data transfer amount requested by the master during the transfer, it can cancel the transfer of the next 16 beats by asserting bStStp_L at the 15th beat. Cannot be canceled with
[0088]
When gBstStp_L is asserted, the master and the slave must end the data transfer at the next clock.
[0089]
<Cache Invalidation Unit (CIU)>
The cache invalidation unit (hereinafter, CIU) 2005 monitors a write transaction from the IO bus to the memory, and when this occurs, before writing to the memory is completed, the cache invalidation interface of the CPU shell is used. Invalidates the cache built in the CPU shell.
[0090]
The CPU shell uses the following three types of signals.
・ SnoopADDR [31: 5] (Cache Invalidation Address)
DCINV (Dcache (data cache) Invalidation Strobe)
ICINV (Icache (Instruction Cache) Invalidation Strobe).
Cache invalidation is performed in a maximum of three clocks. Since writing from the IO bus to the memory does not end in three clocks, the cache invalidation unit 2005 invalidates using the Stop_L signal output from the CPU shell 401. It does not perform a handshake to end the conversion. However, in preparation for a future change, bSnoopWait is driven on the IO bus for the same cycle as Stop_L.
[0091]
In the current implementation, if a write from the IO bus occurs, Icache is also invalidated for safety. If the OS modifies the self-modifying code, it may be used as an instruction. If the instruction cache is intentionally invalidated when loading certain data, there is no need for Icache invalidation. In this case, a slight performance improvement can be expected.
[0092]
<Memory map>
23 and 24 show the memory maps. FIG. 23 shows a virtual memory map, a physical memory map, a memory map in the address space of the G bus, and a memory map in the address space of the IO bus in order from the left. FIG. 24 is a map showing 512 Mbytes indicated by hatching in FIG. 23 including registers and the like.
[0093]
The memory model of the processor core is based on R3000. The physical address space of the processor core is 4 Gbytes by 32-bit addressing. The virtual space similarly performs 32-bit addressing. The maximum size of the user process is 2 GB. Address mapping differs between kernel mode and user mode. The figure shows a memory map when the MMU is not used.
[0094]
(User mode virtual addressing)
In the virtual addressing in the user mode, a user virtual address space (kuseg) of 2 Gbytes is effective. The address of this user segment starts at 0x00000000, and all valid accesses have msb cleared to zero. Reference to the address in which msb is set in the user mode causes address error exception handling. The TLB maps all references to kuseg similarly in user mode and kernel mode. It is also cashable. Kuseg is usually used to hold user code and data.
[0095]
(Kernel mode virtual addressing)
The kernel mode virtual address space has four address segments.
-2 GB from 0x00000000 of the kuseg virtual address. Caching and mapping per page and unit is possible. This segment overlaps with kernel memory access and user memory access.
-512 Mbytes from 0x80000000 of the kseg0 virtual address. Directly mapped to the first 512 Mbytes of physical memory. References are cached, but TLB is not used for address translation. kseg0 is usually used for kernel execution code and kernel data.
-512 Mbytes from 0xA00000000 of kseg1 virtual address. Directly mapped to the first 512 Mbytes of physical memory. References are not cached and TLB is not used for address translation. kseg1 is usually used by the OS for I / O registers, ROM code, and disk buffers.
1 Gbyte from 0xC00000000 of kseg2 virtual address. Like the Kuseg, the virtual address is mapped to the physical address by the TLB. Caching is free. The OS normally uses kseg2 for data for each process that needs to be remapped by a stack or a context switch.
[0096]
(Virtual address memory map (FIGS. 23A and 24A))
The virtual address space is 4 Gbytes, and all memories and I / O on the system can be accessed. There is SYSTEM MEMORY (1 GB) in kuseg.
[0097]
kseg0 has a built-in RAM (16 MB). This is implemented when it is desired to program an exception handling vector, and sets the exception vector base address to 0x80000000. This address is mapped to 0x00000000 in the physical address space.
[0098]
There are ROM, I / O, and registers in kseg1. Boot ROM (16 MB), SBB internal register and MC internal register (16 MB), IOBus I / O1 (16 MB: G bus arbiter internal register, IO bus arbiter internal register, PMU internal register Primitive IO bus register), IOBus I / O2 (16 MB), IOBus MEM (16 MB), Gbus MEM (32 MB), FONT ROM (240 MB), FONT ROM or RAM (16 MB). kseg2 includes PCI I / O (512 MB) and PCIMEM (512 MB). Since kseg0 and kseg1 are both mapped to the first 512 Mbytes of the physical address space, the first 512 Mbytes of kseg0, kseg1 and kuseg all refer to the same physical address space.
[0099]
(Physical address memory map (FIGS. 23 (b) and 24 (b)))
The physical address space also has 4 Gbytes like the virtual address space, and all memories and I / O on the system can be accessed. PCI I / O, PCI MEM, and SYSTEM MEMORY are the same as the virtual address memory map. Since both kseg1 and kseg2 are mapped to the first 512 Mbytes of the physical address space, ROM, I / O, and Reg exist in the space from 0x00000000.
[0100]
(G bus memory map (FIG. 23 (c), FIG. 24 (c)))
The G bus address space has 4 Gbytes, and can be accessed only by the SYSTEM MEMORY, the G Bus MEM, and the Font.
[0101]
(IO bus memory map (FIGS. 23D and 24D))
The IO bus address space has 4 Gbytes, and is accessible only by PCI I / O, PCI MEM, SYSTEM MEMORY, IOBus I / O2, IOBus MEM, and Font. Since IOBus I / O1 is a primitive register, the space from 0x1C000000 to 0x20000000 is protected from PCI and cannot be accessed from PCI.
[0102]
<Address switch>
The address switch 2003 transmits an address signal from the master bus to the slave bus via the SBB 402 in order to transfer data between the P bus, the G bus, the IO bus, and the MC bus. . In the transfer via the SBB 402, the buses that can be masters are the P bus, the G bus, and the IO bus, and the buses that can be the slaves are the IO bus and the MC bus. One of the P bus, the G bus, and the IO bus is the master for the MC bus, and only the P bus is the master for the IO bus to send address signals. Further, the transfer between the P bus and the IO bus and the transfer between the G bus and the MC bus can be performed simultaneously.
[0103]
FIG. 25 shows a block diagram of the address switch 2003. The switch sequencer 2003a switches the switch 2003b to switch the slave between the IO bus and the MC bus, and switches the switch 2003c to switch the master between the P bus, the G bus, and the IO bus. With this configuration, any one of the P bus, the G bus, and the IO bus becomes the master for the MC bus, only the P bus becomes the master for the IO bus, and the transfer between the P bus and the IO bus and the G bus Transfer between the bus and the MC bus can be performed simultaneously.
[0104]
<Data switch>
The data switch switches the flow of data in the SBB when performing data transfer between the P bus, the G bus, the IO bus, and the MC bus. Data is sent from the master to the slave during writing, and from the slave to the master during reading.
[0105]
FIG. 26 shows a block diagram of the data switch 2004. In this configuration, by switching the selectors A-1 to A-3 and B-1 and B-2 as shown in Table 7, one of the P bus, the G bus, and the IO bus is used as a master, and the IO bus, the MC bus is used. Can be controlled to perform writing or reading using either of them as a slave.
[0106]
[Table 7]
Figure 2004062887
[0107]
<Arbitration>
When switching each switch, the switch sequencer 2003a in the SBB 402 performs arbitration between the following three types of connection requests from outside the SBB.
1. CPU
2. G bus bus master
3. IO bus bus master
This arbitration is determined by the current bus switch connection status and a preset priority, and as a result, the connection of the address switch and the data switch is switched.
[0108]
<Timing diagram>
27 to 32 show timing charts. 27 is a timing diagram of a write / read cycle from the G bus, FIG. 28 is a timing diagram of a burst stop cycle of the G bus, and FIGS. 29 to 32 are timing diagrams of a transaction stop cycle of the G bus.
[0109]
[2.6. PCI bus interface]
FIG. 33 is a block diagram of the PCI bus interface 416. The PCI bus interface 416 is a block that interfaces between an IO bus that is a DoEngine internal general-purpose IO bus and a PCI bus that is a chip external IO bus. By setting an input pin, it is possible to switch between a host bridge configuration that can issue a PCI bus configuration at the time of reset and a target configuration that does not issue a PCI bus configuration.
[0110]
The master DMA controller 3301 of the IO bus interface bridges the access request to the inside of the IO bus as the IO bus master when the PCI bus master requests access to the resources inside the DoEngine via the PCI bus signal interface 3302.
[0111]
Further, the master DMA controller 3301 can perform a DMA transfer from a memory mapped on the PCI bus to the DoEngine Memory. At this time, the transfer destination address (bPciAddr [31: 0]) and the ID signal (bPciID) of the PCI master controller 3301 are used in order to operate the IO bus DMA and the G bus DMA in the order intended by the programmer. Is issued simultaneously with the bus request to the IO bus and the arbitration sequencer.
[0112]
The master DMA controller 3301 receives the bus grant (bPciBGnt_L), and cancels the assertion of the ID signal (bPciID) when data transfer is completed using the bus. The PCI bus is 33 MHz, 32 bits, and conforms to PCI 2.1.
[0113]
[2.7. G bus arbiter]
FIG. 34 is a block diagram of the G bus arbiter (GBA) 406. The arbitration of the G bus is a central arbitration method, and has a dedicated request signal (g (mastername) Req_L) and a grant signal (g (mastername) Gnt_L) for each bus master. In FIG. 34, the mastername is M1 to M4. The Bus arbiter 406 supports up to four bus masters on the G bus and has the following features.
The arbiter can be programmed by setting the register 3401a inside the arbiter. Register setting is performed from the IO bus.
-There is a fair arbitration mode in which all bus masters have the same priority and the bus right is imparted fairly, and a priority arbitration mode in which the priority of any one bus master is raised and the bus is used preferentially. Which bus master is given priority is determined by the setting of the register 3401b.
-The number of times that the priority bus master can use the bus continuously can be set.
-Supports a transaction stop cycle for stopping a transaction that has already started the address phase but has not started the data phase.
-Programming of sequential processing in a plurality of bus masters can be performed (described later). The programmed order is stored in the register table 3401a.
When the G bus master and the IO bus master sequentially write to the same memory address, as a mechanism for maintaining the access order intended by the programmer, a specific master is determined based on the master ID signal and the stop signal from the synchronization unit. On the other hand, it has a mechanism to suspend giving the bus use permission.
[0114]
The programming of the registers is performed by the CPU 401 via the IO bus.
[0115]
(Arbitration sequencer)
The arbitration sequencers 3402a and 3402b, which are the core of the G bus arbiter, perform arbitration by five masters between one priority master and the other four non-priority masters. By allocating request signals and grant signals from the four bus masters to the four non-priority masters by the request dispatch circuit 3403 and the grant dispatch circuit 3404, a fair arbitration mode is realized. In addition, by allocating one of the four bus masters to the priority master of the high-priority arbitration sequencer 3402a, it operates in the priority arbitration mode. These assignments are performed according to the settings of the registers 3401a and 3401b. As a result, the priority bus master can acquire the right to use the bus with a higher probability than the other masters.
[0116]
Further, in addition to adjusting the bus acquisition opportunity probability, the master assigned to the high-priority sequencer 3402a can use the bus continuously, and can change the number of times the bus can be used continuously by using a programmable register. . This means that the occupancy of the bus can be adjusted so that a particular master can use more of the bus.
[0117]
(Fair arbitration mode)
In this mode, all bus masters are at the same priority and the opportunity to be granted the bus is fair. When the bus is free, the bus master that issues the request first can get the bus right. When a plurality of bus masters issue requests at the same time, the bus right is sequentially given in a predetermined order (round robin method). For example, when all the bus masters from M1 to M4 issue requests with the same clock, the bus right is given in the order of M1 → M2 → M3 → M4. If all the bus masters have issued requests again at the end of the transaction of M4, the bus rights are given in the same order, such as M1 → M2 → M3 → M4 → M1 → M2. If some bus masters are issuing requests, round wrapping from M4 to M1 is performed, and a grant is given to the master with the highest number closest to the master that last used the bus.
[0118]
Once the bus right has been transferred to another bus master, the bus right can be obtained again only after all other requesting bus masters have been given the bus right.
[0119]
(Priority arbitration)
In this mode, one bus master (a bus master registered in the register 3401b) becomes a priority bus master having a higher priority than the other bus masters, and is given priority over the other bus masters. All bus masters other than the priority bus master have the same priority.
[0120]
When a plurality of bus masters have issued requests and the priority bus master makes continuous requests, the priority bus master and other non-priority bus masters alternately obtain the bus right.
[0121]
When the bus right is transferred from the non-priority bus master to another bus master, the bus priority cannot be obtained again until after all other requesting bus masters have been granted the bus right.
[0122]
(Transaction stop cycle)
In priority arbitration mode, when the priority bus master issues a request, if another bus master has already started the address phase, but has not started the data phase, the transaction is stopped and the priority bus master grants the bus right. Obtainable. However, if the priority bus master has the bus right before that, the number of times that the continuous bus right can be obtained cannot be exceeded.
[0123]
At the end of the transaction of the priority bus master, if the suspended bus master has issued a request, the bus right is given priority.
[0124]
(Switch priority bus master)
To switch the priority bus master, the register 3401b may be rewritten. When the register for selecting the priority bus master is rewritten, the priority bus master is switched after the completion of the transaction being executed at that time. The state of the arbiter returns to the idle state, and the bus master that has issued the request at that time is re-arbitrated as if it issued the request at the same time.
[0125]
Care must be taken when switching the priority bus master. If the priority bus master is switched to a different bus master before the DMA of the bus master to be prioritized ends, the priority of the DMA of the first priority bus master decreases. If it is not desired to lower the priority of the first priority bus master, it is necessary to switch the priority bus master after confirming that the DMA has been completed.
[0126]
In software that needs to dynamically switch the priority bus master not only at the time of system boot but also during system operation, the switching of the priority bus master is performed by all bus masters and all the bus masters so that a new DMA request does not occur on the G bus. The setting for the DMA controller is stopped, and then an appropriate value is set in a register in the G bus arbiter 406. Further, the status register in the G bus arbiter 406 is checked to confirm that the priority of the bus master has been switched. Access to a new G bus and activation of DMA should be performed.
[0127]
The dynamic switching of the priority bus master may change or violate the real-time guarantee of the operating system and the setting of the task priority, and must be performed with due consideration.
[0128]
(Order processing)
FIG. 35 is a block diagram related to DMA by a bus master on the G bus centering on the G bus 404 in the DoEngine 400.
[0129]
When it is necessary for a plurality of bus masters to perform processing sequentially, for example, after processing A on the data in the memory 3501 by the bus master 1, processing B is performed by the bus master 2, and the data after the processing is A series of processes such as sending to the bus master 4 will be considered.
[0130]
Software for performing this processing, that is, a program executed by the CPU 401, stores the order in which the bus master uses the bus, the start condition for granting the bus right, and the end condition in the register table 3401a in the bus arbiter 406 via the IO bus 405. The condition is set. In this example,
Bus master: Start condition: End condition
1. Bus master 1: gM2BufEmpty: gM1BufReady
2. Bus master 2: gM1BufReady: gM1BufEmpty
3. Bus master 4: gM2BufReady: gM2BufEmpty
And so on. That is, the G bus arbiter 406 gives a bus use right to a bus master when receiving a signal set as a start condition from each bus master, and deprives the bus master of a bus use right when receiving a signal set as an end condition.
[0131]
Software sets the DMA to each bus master. As a result, each master issues a request (g (mastername) Req_L) to the G bus arbiter 404. The G bus arbiter 404 gives a bus right to the bus master 1 in the order registered in the register table 3401a (gM1Gnt_L). The bus master 1 reads a certain unit of data from the memory 3501, performs process A, and writes data to a buffer inside the bus master 1. The bus master 1 notifies the arbiter 406 that the processing of one unit has been completed and the buffer is ready by the gM1BufReady signal.
[0132]
The arbiter 406 receives the bus right from the bus master 1 and gives the bus right to the bus master 2 in accordance with the conditions for the bus master to grant the bus right and the conditions for depriving the bus right registered in the register table 3401a. The bus master 2 reads the data in the buffer of the bus master 1, performs the process B, and stores the data in the buffer inside the bus master 2. If the buffer of the bus master 1 becomes empty during this time, gM1BufEmpty is asserted, and the arbiter 406 stops giving the bus right to the bus master 2. The bus master 2 performs the process B, and notifies that the buffer is ready by a gM2BufReady signal.
[0133]
The arbiter 406 receives this and gives the bus master 4 a bus right in accordance with the contents of the register 3401a. The bus master 4 reads data from the buffer of the bus master 2. When the buffer of the bus master 2 becomes empty, the arbiter 406 is notified by gM2BufEmpty, and the arbiter 406 receives the notification and gives the bus right to the bus master 1 again according to the contents of the register 3401a, and starts processing the next data.
[0134]
When all DMAs set in the respective bus masters are completed, the respective bus masters notify the processor by interruption. The software knows that a series of processing has been completed when all the bus masters have received the completion notification.
[0135]
The operation described above is an operation in the complete sequential mode, and a bus master other than the bus master involved in the sequential processing cannot use the bus. Even during this sequential processing, a priority sequential mode is provided to enable a bus master unrelated to the sequential processing to use the bus. Switching between these modes is performed by programming a register inside the arbiter 406. In the priority sequential mode, a bus master performing sequential processing can use the bus preferentially, but a bus master not involved in the sequential processing is allowed to use the bus. The arbitration between the bus masters that perform the sequential processing and the bus masters that are not involved is equivalent to the priority arbitration mode described above. As a matter of course, the bus masters who are not involved in the sequential order and are not in their turn because the conditions for granting the bus master are not satisfied are not given the bus master.
[0136]
(Mechanism for maintaining access order)
When the signal stopSpc is asserted, the scanner printer controller 408, which is one of the G bus masters, is excluded from arbitration, and is not given the right to use the bus even if the request is asserted. Arbitration is performed between masters excluding this master. A detailed description will be given in the section on IO bus arbiters.
[0137]
<Timing diagram>
36 to 39, the timing of the G bus arbitration will be described. FIG. 36 shows an example of the fair arbitration mode (fair mode) in the case where the number of times of continuous use of the bus is set to 1 for all the bus masters 1 to 4. The second bus request (issued from timing 4) by the bus master 1 is kept waiting until all other bus masters issuing the bus request are processed one by one.
[0138]
FIG. 37 shows an example of the fair arbitration mode when the number of times the bus is used continuously is 2 only for the bus master 1 and the other bus masters are set to 1. The second bus request (issued from timing 4) issued by the bus master 1 is immediately granted following the first request, and the other bus masters are kept waiting until the processing is completed.
[0139]
FIG. 38 shows an example of the priority arbitration mode when the number of times of continuous use of the bus is one and the bus master 1 is set as the priority bus master. Since the priority bus master and the non-priority bus master are alternately granted the right to use the bus, the second bus request of the bus master 1 is granted after the use of the bus of the bus master 2, and the bus request of the bus master 4 is Allowed after the second use of the bus. The second bus request from the bus master 2 is acknowledged after all other bus masters issuing the bus request, in FIG. 38, the bus masters 1 and 4 have finished using the bus.
[0140]
FIG. 39 shows an example in which a bus request from the bus master 1 is interrupted even though the bus request from the bus master 4 is permitted. In this case, when the use of the bus by the bus master 1 ends, the bus request by the bus master 4 is acknowledged in preference to the bus request by the bus master 2.
[0141]
[2.8. IO bus arbiter]
FIG. 40 is a block diagram of the IO bus arbiter 407. The IO bus arbiter 407 receives a bus use request for the IO bus 405, which is an IO general-purpose bus in the DoEngine, and after arbitration, grants use permission to the selected one master, and at the same time, two or more masters perform bus access. Is prohibited.
[0142]
The arbitration system has three levels of priorities, and a plurality of masters can be assigned to each priority in a programmable manner. The assignments are maximum, 3 masters at the highest priority, 7 masters at the middle, and 3 masters at the lowest level.
[0143]
Further, when the G bus master and the IO bus master sequentially issue a write to the same memory address, a mechanism for maintaining the access order intended by the programmer is specified based on the master ID signal and the stop signal from the synchronization unit. Has a mechanism to suspend giving the bus use permission to the master.
[0144]
(Arbitration sequencer)
The IO bus arbiter includes three arbitration sequencers 4002, 4003, and 4004. Each has a high priority, a medium priority, and a low priority, and 3, 7, and 3 bus master arbitration sequencers are built in each sequencer. Request signals from units that may become all bus masters on the IO bus and grant signals to them are distributed to these three sequencer units by a request selector and a grant selector. In this distribution, a unique combination can be selected from a plurality of combinations by a software programmable register 4005a in the BBus interface 4005.
[0145]
For example, by connecting requests of up to seven masters to the medium-priority arbitration sequencer 4003, fair arbitration is realized among the seven masters. Also, by allocating some of the bus masters to the high-priority arbitration sequencer 4002, these masters can acquire the right to use the bus with higher probability than other masters. Further, by connecting some requests to the low-priority sequencer 4004, the usage rate of these buses can be suppressed. Further, in addition to adjusting the bus acquisition opportunity probability, the master assigned to the high-priority sequencer 4002 can use the bus continuously, and the number of times that it can be used continuously can be changed by the programmable register 4005a. it can. This means that the occupancy of the bus can be adjusted so that a particular master can use the bus more time.
[0146]
(Fair bus arbitration method)
A method for realizing fair arbitration will be described using the middle-priority sequencer 4003 as an example. All bus masters connected to one sequencer have the same priority, and the opportunity to be granted the bus is fair. When the bus is free, the bus master issuing the request first can get the bus right (first come first serve). When a plurality of bus masters issue requests at the same time, bus rights are sequentially given in a predetermined order (round-robin at the time of issuing a simultaneous request). For example, when all the bus masters from M1 to M7 issue requests with the same clock, the bus right is granted in the order of M1 → M2 → M3 → M4 → M5 → M6 → M7. If all the bus masters have issued requests again at the end of the transaction of M7, the bus right is given in the same order as M1 → M2 → M3 → M4 → M5 → M6 → M7 → M1 → M2. . If some bus masters have issued requests, the round wrap from M7 to M1 is given, and a grant is given to the master with the largest number closest to the master that used the bus last.
[0147]
(Priority arbitration)
The IO bus interface has three arbitration sequencers of high priority, medium priority, and low priority. Arbitration with priorities is realized by selectively allocating a plurality of bus requests to high-priority and low-priority arbiters.
[0148]
For example, by assigning one master to high priority and assigning the rest to medium priority, one bus master becomes a priority bus master with a higher priority than other bus masters, and the bus right has priority over other bus masters. Given. All bus masters assigned to the arbitration sequencer having the same priority have the same priority.
[0149]
When a plurality of bus masters have issued requests and the priority bus master makes requests continuously, the priority bus master and the other bus masters alternately obtain the bus right. When M3 is the priority master and M1, M2, M3, and M4 keep issuing requests, the bus use right is given in the order of M3 → M1 → M3 → M2 → M3 → M4 → M3 → M1.
[0150]
Further, the high-priority bus master can obtain a continuous bus right for a preset number of times in a programmable register in the arbiter. The maximum number of times a continuous bus can be used is four.
[0151]
When the bus right is transferred from a bus master other than the priority bus master to another bus master, the bus master can obtain the bus right again after giving the bus right to all other requesting bus masters. When one bus master makes a request continuously, if there is no other requesting bus master, the bus right can be obtained continuously, but if another bus master makes a request, that bus master will The bus right can be continuously obtained a predetermined number of times. Once the bus right has been transferred to another bus master, the bus right can be obtained again only after all other requesting bus masters have been given the bus right.
[0152]
A maximum of three requests can be assigned to the low-priority arbitration sequencer 4004. The master assigned to the low-priority sequencer 4004 cannot be given the right to use the bus unless all master requests assigned to the medium-priority and high-priority sequencers are eliminated. The assignment of the bus master to this sequencer must be done with great care.
[0153]
(Switch priority bus master)
To switch the priority bus master, a register in the arbiter may be rewritten. When the register for selecting the priority bus master is rewritten, the priority bus master is switched after the completion of the transaction being executed at that time. The state of the arbiter returns to the idle state, and the bus master that has issued the request at that time is re-arbitrated as if it issued the request at the same time.
[0154]
Care must be taken when switching. If the priority bus master is switched to a different bus master before the DMA of the bus master to be prioritized ends, the priority of the DMA of the first priority bus master decreases. If it is not desired to lower the priority of the first priority bus master, it is necessary to switch the priority bus master after confirming that the DMA has been completed.
[0155]
In software that needs to dynamically switch the priority bus master not only at the time of system boot but also during system operation, the switching of the priority bus master is performed by all bus masters and all bus masters so that a new DMA request does not occur on the IO bus once. The setting for the DMA controller is stopped. After that, an appropriate value is set in the register in the IO bus arbiter 407, the status register in the IO bus arbiter is checked, and after confirming that the priority of the bus master has been switched, a new value is set. Access to the IO bus and start of DMA.
[0156]
The dynamic switching of the priority bus master may change or violate the real-time guarantee of the operating system and the setting of the task priority, and must be performed with due consideration.
[0157]
(Access sequence control mechanism)
IO bus arbiter 407 includes an access order control mechanism. The access order control mechanism is realized by the synchronization unit 4001 and the bus use right issue suppression mechanism incorporated in the IO bus arbiter 407 and the G bus arbiter 406. The bus use right issuance suppression mechanism incorporated in the IO bus arbiter 407 operates similarly to that of the G bus arbiter. That is, when the stopPci signal is input, a bus request is issued from the Pci bus master, and as a result of the arbitration, the bus usage right is not issued even if the master can be given the right to use the bus. Give the right to use the bus to other masters. Specifically, when the stopPci signal is input, this is done by immediately masking bPciReq_L.
[0158]
The bus request from the LAN controller 414 and the stop signal operate in exactly the same manner. FIG. 41 shows a block diagram of the synchronization unit 4001. Compare units 4101 to 4103 are connected to all combinations between a plurality of DMA masters in the synchronization unit. In DoEngine, only the scanner / printer controller 408 is the DMA master on Gbus. There are two DMA PCI units and LAN units on the IO bus. The IO bus interface in the SBB is a bus master on the IO bus, but does not directly access the memory, and thus does not output the ID and the transfer destination address to the synchronization unit 4001.
[0159]
FIG. 42 shows one comparison unit (Comparison Unit 1) in the synchronization unit below. Other compare units have the same configuration.
[0160]
When a DMA write is programmed from the DMA block attached to the PCI interface 416 or the scanner / printer controller 408 to the synchronization unit 4001, a transfer destination address and a request signal unique to the DMA block are notified.
[0161]
Each of the compare units stores the address together with the current time by a timer having an internal when the request is output from each DMA block. Next, when the address and the request related to the DMA write are input from another DMA block. , The compare unit compares the two addresses. If they match, the times stored in the respective registers are further compared, and the bus arbiter of the bus connected to the DMA block that has issued the DMA write request later in time is strengthened to use the bus for the master. Not give. This is notified to the bus arbiter of each bus by a signal called stop (ID).
[0162]
Each bus arbiter does not assign a bus use right by arbitration to the master notified by the stop (ID) signal.
[0163]
When the time has elapsed and the DMA write to the memory address is completed by the bus master that has made the access request first, the previous master withdraws the request for the synchronous unit, and the synchronous unit issues the DMA write request second. The bus arbiter of the bus to which the DMA block is connected will not issue the bus use right permission / prohibition signal to this DMA block. Then, the DMA write of the master to be written later is performed.
[0164]
When both DMA writes are completed and both requests are withdrawn, the timer is reset. The count up of the timer is performed again when a request from one of the masters is output again.
[0165]
[2.9. Scanner / Printer Controller]
FIG. 43 is a block diagram of the scanner / printer controller 408. In the figure, a scanner / printer controller 408 is a block that is connected to a scanner and a printer by a video I / F and interfaces with an internal bus G bus and an IO bus. It is roughly composed of the following eight blocks.
1. Scanner control unit 4303: Controls the operation of the scanner via the video I / F.
2. A printer control unit 4304 controls the operation of the printer via the video I / F.
3. Scanner image processing unit 4305: Image processing is performed on image data input from the scanner.
4. A printer-based image processing unit 4308 performs image processing on image data to be output to a printer.
5. Scanner / video synchronization unit 4306... Generates input synchronization timing for image data input from the scanner.
6. A printer / video synchronization unit 4307 generates an output timing for image data to be output to the printer. When the combination of the printer and the scanner is synchronizable, a video timing of the copy operation is generated together with the scanner / video synchronization control unit 4306.
7. Data transfer control unit 4302: Controls data transfer operation. The DMA operation supports both master and slave operations.
8. G bus / IO bus interface unit 4301... An interface unit for connecting the G bus and the IO bus to the scanner and the printer controller. It is connected to the data transfer control unit 4302 by the L bus.
[0166]
<Scanner / Video synchronization control unit 4306>
FIG. 44 shows a block diagram of the scanner / video synchronization control unit 4306.
[0167]
(Overview of scanner / video synchronization control unit)
The scanner / video synchronization control unit 4306 uses the vertical synchronization signal (SVSYNC), the horizontal synchronization signal (SHSYNC), and the image data synchronization clock (SVCLK) of the image data input from the scanner to acquire the image data timing signal and perform image processing. And a write timing signal (SCFWR) to the FIFO which is a transfer buffer.
[0168]
In addition, it manages the delay of image data in the main scanning direction, the number of captured pixels, the delay in the sub-scanning direction, and the number of captured lines. A state signal (SALLEND) is generated at the timing when the set amount of image data has been captured. The line counter 4401 manages the delay in the sub-scanning direction and the number of fetched lines, and generates a vertical synchronizing signal (SEFHSYNC) of an image reading effective line. A pixel counter 4402 manages an image capture delay in the main scanning direction and the number of captured pixels. A write timing signal (SCFWR) for storing the captured image data in the FIFO is generated. The page counter 4403 manages the input image data in units of pages. When image data input for the set number of pages is completed, an end signal (SALLPEND) is generated.
[0169]
The set values of the line counter 4401, the pixel counter 4402, and the page counter 4403 are read and written by the control register 4310.
Write data: IFWDATA [31: 0]
-Read data: IFRDATA [31: 0]
・ Line counter write signal: SLCSET
・ Line counter read signal: SLCRD
・ Pixel counter write signal: SPCSET
-Pixel counter read signal: SPPCRD
・ Page counter write signal: SPAGSET
・ Page counter read signal: SPAGERD
<Printer / video synchronization control unit 4307>
FIG. 45 is a block diagram of the printer / video synchronization control unit 4307.
[0170]
(Overview of printer / video synchronization control unit)
The printer / video synchronization control unit 4307 receives a vertical synchronization signal (PVSYNC), a horizontal synchronization signal (PHSYNC), and an image data synchronization clock (PVCLK) of image data input from the printer, and acquires a timing signal for capturing image data and a signal for image processing. And a read timing signal (PRFRD) from the FIFO which is a transfer buffer.
[0171]
In addition, it manages the delay of image data in the main scanning direction, the number of captured pixels, the delay in the sub-scanning direction, and the number of captured lines. A state signal (PLEND) is generated at the timing when the capture of the set amount of image data is completed. The line counter 4501 manages the delay in the sub-scanning direction and the number of output lines, and generates a vertical synchronizing signal (PEFHSYNC) of an image output effective line. A pixel counter 4502 manages an image output delay in the main scanning direction and the number of output pixels. A read timing signal (PRFRD) for reading output image data from the FIFO is generated. The page counter 4503 manages the output number image data in page units. When the image output for the set number of pages is completed, an end signal (PALLPEND) is generated.
[0172]
The set values of the line counter 4501, the pixel counter 4502, and the page counter 4503 are read and written by the control register 4310.
Write data: IFWDATA [31: 0]
-Read data: IFRDATA [31: 0]
・ Line counter write signal: PLCSET
・ Line counter read signal: PLCRD
・ Pixel counter write signal: PPCSET
・ Pixel counter read signal: PPCRD
・ Page counter write signal: PPAGESET
・ Page counter read signal: PPAGERD
<Scanner FIFO controller 4311>
FIG. 46 is a block diagram of the scanner FIFO controller. The scanner FIFO controller 4312 (see FIG. 43) includes a FIFO as a buffer for transferring image data input from the scanner via the G bus or the IO bus, and a circuit for controlling the FIFO. It has two systems of FIFOs 4602 and 4603, each having a capacity of 1024 bytes and a data width of 24 bits (8 bits for each of R, G, and B). These FIFOs operate as a double buffer for alternately performing a data transfer operation of the G bus / IO bus and an image data input operation from the scanner. The data input / output of the FIFO is controlled by the scanner FIFO selector 4601 by the full flag (FF) and the empty flag (EF) of the FIFO.
[0173]
<Printer FIFO controller 4312>
FIG. 47 is a block diagram of the printer FIFO controller 4312 (FIG. 43). The printer FIFO controller 4312 includes a FIFO as a buffer for transferring image data to be output to the printer via a G bus or an IO bus, and a circuit for controlling the FIFO. It has two systems of FIFO with a capacity of 1024 bytes and a data width of 24 bits (R, G, B 8 bits each). These operate as a double buffer for alternately performing a G bus / IO bus data transfer operation and an image data output operation to a printer. Data input / output of the FIFO is controlled by a printer FIFO selector 4701 by a FIFO full flag (FF) and an empty flag (EF).
[0174]
The scanner printer controller 408 has a data path for directly outputting scanner data to the printer, as shown in FIG. 43, for synchronizing the scanner and the printer and performing a copying operation. Further, a data path for synchronizing input data from the scanner and output data to the printer by FIFO is provided. These data paths can be selected in synchronization with the data input / output of the scanner and the printer.
[0175]
<Data transfer control unit 4302>
FIG. 48 is a block diagram of the data transfer control unit 4302. The data transfer control unit 4302 is a block that controls input and output of data to and from the L bus, and includes a chain controller 4801, a master DMA controller 4802, a transfer arbiter 4803, and the like.
[0176]
The data transfer control unit controls the following operations as a master.
1. DMA transfer of image data from the scanner and reference to the chain table
2. Refer to image data DMA transfer to printer and chain table.
The following operations are controlled as a slave.
1. Write / read internal register
2. Image data transfer from scanner
3. Image data transfer to printer.
[0177]
(Chain controller)
FIG. 49 is a block diagram of the chain controller 4801. The chain controller includes an address pointer block indicating a chain table and an address pointer block indicating a DMA transfer destination. A transfer destination address generation block when a scanner or a printer controller performs DMA as a master, and supports chain DMA. Scanner data transfer and printer data transfer operate independently.
[0178]
<L bus>
Connect G bus / IO bus interface unit and data transfer unit
This is a local bus in the scanner and printer controller. Includes the following signals: In the following, the input and output of signals will be described as OUT, a signal output from the data transfer control unit 4302 to the G bus / IO bus interface unit 4301, and a signal input from the G bus / IO bus interface unit 4301 to the data transfer control unit 4302. Indicated by IN.
・ IFCLK (IN): Basic clock of L bus
IFRDATA [63: 0] (OUT): A 64-bit data bus output from the data transfer control unit to the G bus / IO bus interface unit. The data transfer control unit is used in both master and slave operations.
• IFWDATA [63: 0] (IN): A 64-bit data bus output from the G bus / IO bus interface unit to the data transfer control unit. The data transfer control unit is used in both master and slave operations.
IFMDTREQ (OUT): The data transfer control unit indicates a data transfer request and a valid state of data and address as a master. “High” indicates a data transfer request and the valid state of the address bus IFMAD [3:12].
IFMAD [31: 2] (OUT): An address bus indicating a target address when the data transfer control unit operates as a master. A valid address is output when the IFMDTREQ signal is in the active state “High”.
IFMRW (OUT): A signal indicating data input / output when the data transfer control unit operates as a master. When “High”, the data transfer control unit inputs data from IFWDATA [63: 0]. When "Low", the data transfer control unit outputs data to IFRDATA [63: 0].
IFMDTACK (IN): When the data transfer control unit operates as a master, a response signal to IFMDTREQ is output from the G bus / IO bus interface unit. “High” indicates that IFRDATA [63: 0] or IFWDATA [63: 0] is valid data.
PRIOR [3: 0] (OUT): Indicates the priority of data transfer when the data transfer control unit operates as a master. The priority is defined as shown in Table 8.
[0179]
[Table 8]
Figure 2004062887
MTSIZE [2: 0] (OUT): Indicates the transfer unit size when the data transfer control unit operates as a master. During the transfer of this unit size, IFMDTREQ remains in the active state of “High”. The size is shown in Table 9.
[0180]
[Table 9]
Figure 2004062887
IFSDTREQ (IN): Indicates a data transfer request from the G bus / IO bus interface unit and a valid state of data and address when the data transfer control unit operates in a slave mode. “High” indicates a data transfer request and the valid state of the address bus IFSAD [6: 2].
IFSAD [6: 2] (IN): Address bus indicating the target address when the data transfer control unit operates as a slave. The valid address is output when the IFSDTREQ signal is in the active state “HIGH”.
IFSRW (IN): A signal indicating data input / output when the data transfer control unit operates as a slave. When "High", the data transfer control unit outputs data to IFRDATA [63: 0]. When "Low", the data transfer control unit inputs data from IFWDATA [63: 0].
IFSDTACK (OUT): A response signal to IFSDTREQ when the data transfer control unit operates as a slave. Output from the data transfer control unit. “High” indicates that IFRDATA [63: 0] or IFWDATA [63: 0] is valid data.
STSIZE (IN): Indicates the data width from the G bus / IO bus interface unit when the data transfer control unit operates as a slave. “High” enables IFRDATA [63: 0] or IFWDATA [63: 0]. "Low" enables IFRDATA [31: 0] or IFWDATA [31: 0].
[0181]
<G bus / IO bus interface unit>
FIG. 50 is a block diagram of the G bus / IO bus interface unit 4301. The G bus / IO bus interface unit is an interface between an internal bus (L bus) inside the copy engine and an external bus (G bus / IO bus). This unit is realized so that it can be used in other functional blocks, but is used by the copy engine in the present embodiment. The copy engine is a generic term including the scanner / printer controller 408 and the scanner and printer controlled by the controller. The G bus / IO bus interface unit mainly includes three parts: a bus selector unit, an IO bus controller 5002, and a G bus controller 5003.
[0182]
When the copy engine is a DMA master, when the copy engine is a DMA master, the transfer amount, priority (urgency), transfer destination address, and free information of each bus (G bus and IO bus) of the L bus that can be burst-transferred , A bus is dynamically selected, and a corresponding controller (G bus controller 5003 or IO bus controller 5002) is subjected to some preprocessing to connect the L bus. When the copy engine is a DMA slave, it arbitrates requests from each bus (G bus and IO bus) and connects the bus with the higher priority to the L bus.
[0183]
The G bus controller 5003 and the IO bus controller 5002 convert the buses of the L bus and the corresponding bus (G bus and IO bus). Hereinafter, each part will be described.
[0184]
The copy engine is a DMA master capable of performing DMA for both the G bus and the IO bus, and the G bus / IO bus interface unit 4301 determines a bus to be used for DMA transfer. In the conventional system, the bus is switched according to the transfer destination (address). However, good performance cannot be obtained as a whole system unless the transfer speed and the usage rate of each bus are taken into consideration.
[0185]
The bus selector unit 5001 dynamically determines the burst transfer capacity of the L bus, the priority (tension), the address of the transfer destination, and the free information of each bus (G bus and IO bus). Efficient bus selection is performed, the corresponding controller (G bus controller 5003 or IO bus controller 5002) is subjected to some preprocessing, and the L bus is connected.
[0186]
The G bus controller 5003 and the IO bus controller 5002 send out a write address and an ID of a functional block (here, a copy engine) to a bus (G bus and IO bus) synchronization unit corresponding to the L bus. Hereinafter, each part will be described.
[0187]
(Bus selector unit)
FIG. 51 is a block diagram of the bus selector unit 5001. The operation will be described below.
[0188]
[Operation when the copy engine is the master]
When the copy engine is a master, it is mainly controlled by the L bus master sequencer 5101 of the bus selector unit. The L bus master sequencer 5101 receives a request for a master operation of the copy engine by receiving IFMDTREQ (master data request signal) from the copy engine.
[0189]
The copy engine sends IFMAD [31: 2] (master transfer address signal), MTSIZE [2: 0] (master transfer length signal) and IFMRW (master read / write signal) to the bus selector unit 5001 simultaneously with the assertion of IFMDTREQ. Output. The transfer address is latched by an address counter 5102, and the transfer length is latched by a length counter 5103.
[0190]
The L bus master sequencer 5101 determines whether to use the G bus or the IO bus at the time of starting the transfer of the external bust from the address counter, the length counter, the priority, and the busy state of each bus. If all the lower 5 bits of the address counter are not 0, or if the length counter is less than 64 bits × 4, the transfer on the G bus is impossible, so the IO bus is selected. In other cases, the G bus is selected unless the priority is high, the G bus is in use, and the IO bus is free. When the transfer cycle to the external bus is completed, the address counter 5102 and the length counter 5103 are updated. If the length counter is not 0, the above operation is repeated. Table 10 shows the criteria for selecting a bus.
[0191]
[Table 10]
Figure 2004062887
[0192]
In the transfer from the copy engine to the external bus, the L bus master sequencer 5101 asserts the IFMDACK signal to the copy engine, requests the transfer data, and writes the obtained data to the FIFO 5104, unless the data FIFO 5104 is full. As long as the data FIFO is not empty, the master bus required M (LbMReq or LgMReq) is asserted to the external bus controller (IO bus controller 5002 or G bus controller 5003) to request data transfer. The external bus controller (IO bus controller or G bus controller) transfers the data in the data FIFO 5104 and asserts the master transfer notification signal (LbMAck or LgMAck) at the end of the transfer. Therefore, the L bus master sequencer 5101 transfers the data to the external bus. You can know the end of.
[0193]
In the transfer from the external bus to the copy engine, the L bus master sequencer 5101 asserts a master transfer request signal (LbMReq or LgMReq) to an external bus controller (IO bus controller or G bus controller) unless the data FIFO is full, A transfer is requested, the data is written to the data FIFO, and unless the data FIFO is empty, the IFMDACK signal is asserted to the copy engine to request the transfer data, and the obtained data FIFO is written.
[0194]
(IO bus controller)
FIG. 52 is a block diagram of the IO bus controller 5002. The IO bus controller 5002 is an interface between the L bus and the IO bus.
[0195]
The IO bus master sequencer 5201 controls the operation at the time of the IO bus master, and the IO bus slave sequencer 5202 controls the operation at the time of the IO bus slave.
[0196]
[Operation when the copy engine is the master]
Data transfer is started by the assertion of the LbMReq signal from the bus selector unit 5001. The transfer direction is determined by the LbMRdNotWr signal from the bus selector unit 5001 that is asserted simultaneously with the LbMReq signal. The size of the transfer is determined by the LbBstCnt [1: 0] signal from the bus selector unit 5001 which is asserted simultaneously with the LbMReq signal. The transfer address is determined by the LbMAddr [31: 2] signal from the bus selector unit 5001 which is asserted simultaneously with the LbMReq signal.
[0197]
When transferring from the IO bus (when the LbMRdNotWr signal is 0), if the read data FIFO is full (bRFInfoFull is asserted), the IO bus master sequencer waits until the data is no longer full, and the IO bus master sequencer transfers the determined IO bus. After starting, the obtained data is written to the data FIFO of the bus selector unit 5001.
[0198]
In the transfer to the IO bus (when the LbMRdNotWr signal is 1), if the write data FIFO is empty (bWFifoEmpt is asserted), the transfer waits until the write data FIFO is not empty, and the IO bus master sequencer starts transfer of the determined IO bus. Then, data obtained from the data FIFO of the bus selector unit 5001 is sent to the IO bus.
[0199]
(G bus controller)
FIG. 53 is a block diagram of the G bus controller 5003. The G bus controller 5003 is an interface between the L bus and the G bus.
[0200]
The G bus master sequencer 5301 controls the operation at the time of the G bus master, and the G bus slave sequencer 5302 controls the operation at the time of the G bus slave.
[0201]
[Operation when the copy engine is the master]
Data transfer is started by the assertion of the LbMReq signal from the bus selector unit 5001. The transfer direction is determined by the LbMRdNotWr signal from the bus selector unit 5001 that is asserted simultaneously with the LbMReq signal. The size of the transfer is determined by the LbBstCnt [1: 0] signal from the bus selector unit 5001 which is asserted simultaneously with the LbMReq signal. The transfer address is determined by the LbMAddr [31: 2] signal from the bus selector unit 5001 which is asserted simultaneously with the LbMReq signal.
[0202]
In the transfer from the G bus (when the LgMRdNotWr signal is 0), if the read data FIFO is full (gRFifoFull is asserted), the G bus master sequencer waits until the data is not full, and the G bus master sequencer starts the predetermined G bus transfer. Then, the obtained data is written to the data FIFO of the bus selector unit 5001.
[0203]
In the transfer to the G bus (when the LgMRdNotWr signal is 1), if the write data FIFO is empty (bWFifoEmp is asserted), the G bus master sequencer starts transfer of the determined G bus. Then, data obtained from the data FIFO of the bus selector unit 5001 is sent to the G bus.
[0204]
[2.10. Power management unit]
FIG. 54 is a block diagram of the power management unit 409. DoEngine is a large-scale ASIC with a built-in CPU. For this reason, if all the internal logics operate simultaneously, a large amount of heat is generated, and the chip itself may be destroyed. To prevent this, DoEngine manages the power of each block, that is, performs power management, and monitors the power consumption of the entire chip.
[0205]
Each block performs power management individually. Information on the power consumption of each block is collected in a power management unit (PMU) 409 as a power management level. The PMU 409 sums up the power consumption of each block, and monitors the power consumption of each block of DoEngine collectively so that the value does not exceed the limit power consumption.
[0206]
<Operation>
The operation of the power management block is as follows.
-Each block has four power management levels.
The PMU has registers of power consumption values at the respective levels. The values of the level configuration and the power consumption are held in the PM configuration register 5401.
The PMU receives the power management level from each block as a 2-bit status signal (described later), and checks the power consumption of each block by checking the value set in the register 5401.
The PMU adds the power consumption of each block by the adder 5403, and calculates the total power consumption of the DoEngine in real time.
The calculated power consumption is compared with the power consumption limit value (PM limit) set in the configuration register 5401 by the comparator 5404. If the power consumption exceeds the limit, an interrupt signal is issued from the interrupt generator 5405. I do.
・ This limit value can be set in two stages. In the first stage, a value is set with some margin from the true limit. If this value is exceeded, a normal interrupt signal is issued. In response, the software does not start a transfer that starts a new block. However, a new block can be started under the management of software within a range not reaching the limit value of the second stage. As the limit value in the second stage, a value that may cause the device to be destroyed is set. If this value is exceeded, an NMI (interrupt for which an interrupt mask cannot be set) is issued to stop the system for safety.
The interrupt signal is released by reading the status register 5402 of the PMU. The timer starts counting from the time when the status register 5402 is read. If the power consumption does not return until the timer expires, an interrupt signal is issued again. The setting of the timer value is set in the configuration register 5401 of the PMU.
[0207]
<Power management of each block>
The power management control of each block may be freely configured for each block. The example of a structure is shown.
[0208]
(Configuration Example 1)
In this example, the power management is performed by turning on / off the clock to the internal logic, so that the power consumption level has only two levels. This level is sent to the power management unit 409 as a status signal. FIG. 55 shows a block diagram of the bus agent.
The bus agent 5501 includes an internal logic 5502 for each unit, a decoder 5503 for decoding an address, a clock control unit 5504, and a clock gate 5505.
The decoder 5503 and the clock control unit 5504 are always operating, and monitor the bus activity and perform the gating of the clock to the internal logic as the power management control.
[0209]
<Clock control>
The bus agent detects bus activity and automatically turns on / off the clock.
The bus agent has three states, Sleep, Wake Up, and Wait.
Sleep is a state where the bus agent has no activity and the clock gate clock is stopped.
-Even in the sleep state, the decoder unit 5503 and the clock control unit 5504 are operating, monitor the bus, and wait for a request.
When the decoder 5503 detects its own address, it opens the clock gate 5505, operates the clock of the internal logic, and responds to the bus request. The state shifts to Wake Up. Also, this state is notified to the power management unit 409.
When the data transfer is completed, the state shifts to the Wait state and waits for the next request. At this time, the clock remains running. If there is a request, it returns to the Wake Up state and performs transfer. While waiting for a request, counting is performed by a timer. If the counter times out without a request, a transition is made to the Sleep state and the clock is stopped. This state is also notified to the power management unit 409.
As described above, the power consumption is managed so as not to exceed the predetermined value.
[0210]
[Other configuration examples]
The operation procedure of the cache shown in FIGS. 9 and 10 may be as shown in FIGS. 56 and 57. In FIG. 56, when data transfer is started from the MC bus, it is first determined whether the transfer is performed with the cache on or off with mTType [60: 0] indicated by the MC bus. Here, when the transfer is a burst transfer, the determination is made based on whether the burst transfer data amount is larger or smaller than the data amount of one line of the cache. One line of the cache is 256 bits = 4 bursts.
[0211]
In FIG. 56, the memory controller checks mTType [3: 0] at the start of transfer, and if the burst length indicated by mTType is 1/2/4, the memory controller operates with the cache on and operates as 6/8/16/2 × In the case of 16/3 × 16/4 × 16, the operation is performed with the cache off. The operation after the cache is turned on or off is the same as in FIGS.
[0212]
Further, as shown in FIGS. 58 and 59, the cache can be switched on / off depending on the device. In FIG. 58, the memory controller identifies the transfer request device by checking mTType [6: 4] at the start of transfer, and determines whether the transfer request of the device operates with the cache on or off. For this purpose, it is determined whether to operate with the cache on or off with reference to a preset value of the configuration register. The operation after the cache is turned on or off is the same as in FIGS. The configuration register setting may be determined (cannot be changed) by hardware or may be rewritable by software.
[0213]
【The invention's effect】
As described above, in the present invention, the operation state of each block of the circuit is monitored to suppress power consumption, and further, a preliminary warning or a dangerous situation is notified by an interrupt signal, so that a large amount of heat is generated. And destruction of the device by heat can be prevented.
[Brief description of the drawings]
FIG. 1 is a diagram of a configuration example of an apparatus or a system using DoEngine.
FIG. 2 is a diagram of a configuration example of an apparatus or a system using DoEngine.
FIG. 3 is a diagram of a configuration example of an apparatus or a system using DoEngine.
FIG. 4 is a block diagram of DoEngine.
FIG. 5 is a diagram showing three states of a cache memory controller.
FIG. 6 is a block diagram of an interrupt controller 410.
FIG. 7 is a block diagram of a memory controller 403.
FIG. 8 is a detailed block diagram mainly showing a cache controller 706;
FIG. 9 is a flowchart showing a cache operation when a memory read / write transfer is requested from the MC bus.
FIG. 10 is a flowchart showing an operation of the cache when a memory read / write transfer is requested from the MC bus.
FIG. 11 is a diagram showing a configuration of a ROM / RAM controller 707.
FIG. 12 is a timing chart showing the timing of burst reading from the CPU.
FIG. 13 is a timing chart showing the timing of burst writing from the CPU.
FIG. 14 is a timing chart showing the timing of burst reading from a G bus device.
FIG. 15 is a timing chart showing the timing of burst write from a G bus device.
FIG. 16 is a timing chart showing the timing of single reading when a hit occurs in the memory front cache.
FIG. 17 is a timing chart showing the timing of a single read when no hit occurs in the memory front cache.
FIG. 18 is a timing chart showing the timing of a single write when a hit occurs in the memory front cache.
FIG. 19 is a timing chart showing the timing of a single write when no hit occurs in the memory front cache.
20 is a block diagram of a system bus bridge (SBB) 402. FIG.
FIG. 21 is a block diagram of an IO bus interface.
FIG. 22 is a block diagram of a G bus interface 2006.
FIG. 23 is a diagram of a virtual memory map, a physical memory map, a memory map in a G bus address space, and a memory map in an IO bus address space.
FIG. 24 is a map showing 512 megabytes indicated by hatching in FIG. 23 including registers and the like;
FIG. 25 is a block diagram of an address switch 2003.
FIG. 26 is a block diagram of a data switch 2004.
FIG. 27 is a timing chart of a write / read cycle from the G bus.
FIG. 28 is a timing chart of a burst stop cycle of the G bus.
FIG. 29 is a timing chart of a transaction stop cycle of the G bus.
FIG. 30 is a timing chart of a G bus transaction stop cycle.
FIG. 31 is a timing chart of a G bus transaction stop cycle.
FIG. 32 is a timing chart of a G bus transaction stop cycle.
FIG. 33 is a block diagram of a PCI bus interface 416.
FIG. 34 is a block diagram of a G bus arbiter (GBA) 406.
FIG. 35 is a block diagram related to DMA by a bus master on the G bus centering on the G bus 404 in the DoEngine 400;
FIG. 36 is a diagram illustrating an example of a fair arbitration mode (fair mode) when the number of times of continuous use of the bus is set to 1 for all of the bus masters 1 to 4;
FIG. 37 is a diagram illustrating an example of the fair arbitration mode when the number of times of continuous use of the bus is 2 only for the bus master 1 and the other bus masters are set to 1;
FIG. 38 is a diagram illustrating an example of a priority arbitration mode when the number of times of continuous use of the bus is one and the bus master 1 is set as the priority bus master.
FIG. 39 is a diagram showing an example in which a bus request from the bus master 1 is interrupted even though the bus request from the bus master 4 is permitted.
40 is a block diagram of an IO bus arbiter 407. FIG.
FIG. 41 is a block diagram of a synchronization unit 4001.
FIG. 42 is a diagram of one compare unit in the synchronization unit.
FIG. 43 is a block diagram of a scanner / printer controller 408.
FIG. 44 is a block diagram of a scanner / video synchronization control unit 4306.
FIG. 45 is a block diagram of a printer / video synchronization control unit 4307.
FIG. 46 is a block diagram of a scanner FIFO controller.
FIG. 47 is a block diagram of a printer FIFO controller 4312.
FIG. 48 is a block diagram of a data transfer control unit 4302.
FIG. 49 is a block diagram of a chain controller 4801.
50 is a block diagram of a G bus / IO bus interface unit 4301. FIG.
FIG. 51 is a block diagram of a bus selector unit 5001.
FIG. 52 is a block diagram of an IO bus controller 5002.
FIG. 53 is a block diagram of a G bus controller 5003.
FIG. 54 is a block diagram of a power management unit 409.
FIG. 55 is a block diagram of a bus agent.
FIG. 56 is a flowchart showing another example of the operation of the cache when memory read / write transfer is requested from the MC bus.
FIG. 57 is a flowchart showing another example of the cache operation when a memory read / write transfer is requested from the MC bus.
FIG. 58 is a flowchart showing another example of the cache operation when a memory read / write transfer is requested from the MC bus.
FIG. 59 is a flowchart showing another example of the cache operation when a memory read / write transfer is requested from the MC bus.

Claims (5)

制御部により制御された複数の回路ブロックを含む電気回路の消費電力を制御する電力管理装置であって、
各ブロックの動作状態を監視する状態監視手段と、
動作状態にあるブロックの消費電力を加算する加算手段と、
加算された電力を所定の閾値と比較し、閾値を越えたことを前記制御部に通知する通報手段と
を備えることを特徴とする電力管理装置。
A power management device that controls power consumption of an electric circuit including a plurality of circuit blocks controlled by a control unit,
Status monitoring means for monitoring the operation status of each block;
Adding means for adding the power consumption of the block in the operating state;
A power management apparatus comprising: a notification unit that compares the added power with a predetermined threshold and notifies the control unit that the power has exceeded the threshold.
前記通報手段は、前記閾値として互いに異なる複数の値を有し、各閾値ごとの比較結果に応じて、通知を行うことを特徴とする請求項1に記載の電力管理装置。2. The power management apparatus according to claim 1, wherein the notification unit has a plurality of values different from each other as the threshold, and performs notification according to a comparison result for each threshold. 3. 経過時間を測定する計時手段を更に備え、前記通報手段は、前記通知を行ってから、各ブロックの動作状態が変わらないまま所定時間経過すると再度通知を繰り返すことを特徴とする請求項1または2に記載の電力管理装置。3. The system according to claim 1, further comprising a timer for measuring an elapsed time, wherein the notifying unit repeats the notification after a predetermined time elapses without changing the operation state of each block after the notification. The power management device according to claim 1. 前記閾値は、前記制御部により書き換えられることを特徴とする請求項1に記載の電力管理装置。The power management device according to claim 1, wherein the threshold is rewritten by the control unit. 請求項1乃至4のいずれかに記載の電力管理装置を備えることを特徴とする複合機器の制御装置。A control device for a multifunction device, comprising: the power management device according to claim 1.
JP2003180264A 2003-06-24 2003-06-24 System for controlling electric power and control device of composite equipment comprising it Pending JP2004062887A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003180264A JP2004062887A (en) 2003-06-24 2003-06-24 System for controlling electric power and control device of composite equipment comprising it

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003180264A JP2004062887A (en) 2003-06-24 2003-06-24 System for controlling electric power and control device of composite equipment comprising it

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP20057097A Division JP3524337B2 (en) 1997-07-25 1997-07-25 Bus management device and control device for multifunction device having the same

Publications (1)

Publication Number Publication Date
JP2004062887A true JP2004062887A (en) 2004-02-26

Family

ID=31944705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003180264A Pending JP2004062887A (en) 2003-06-24 2003-06-24 System for controlling electric power and control device of composite equipment comprising it

Country Status (1)

Country Link
JP (1) JP2004062887A (en)

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
US6182168B1 (en) Programmable sideband port for generating sideband signal
US6697898B1 (en) Information processing system for composite appliance
JP5137171B2 (en) Data processing device
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 (en) Bus control device
US6003106A (en) DMA cache control logic
EP1001606B1 (en) Image input/output control system
US6604151B1 (en) Control apparatus for composite appliance
JP2004046851A (en) Bus management device, and controller for composite apparatus including the same
US6163815A (en) Dynamic disablement of a transaction ordering in response to an error
JP2004030672A (en) Bus management device, controller of complex machine having the same, and bus management method
JP2004062887A (en) System for controlling electric power and control device of composite equipment comprising it
JP4136163B2 (en) Data input / output device and controller of data input / output device
JP2000215157A (en) Bus controller
JP5094050B2 (en) Memory control device, memory control method, and embedded system
JP3206656B2 (en) Prefetch device and prefetch method on bus
JP2000215156A (en) Information processing system of hybrid equipment
JP2000211215A (en) Control device for composite apparatus
JP2006127408A (en) Data transfer system and its control method
JP2004220486A (en) Memory control device

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060522

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061006