JP3976927B2 - バス制御装置 - Google Patents
バス制御装置 Download PDFInfo
- Publication number
- JP3976927B2 JP3976927B2 JP05595399A JP5595399A JP3976927B2 JP 3976927 B2 JP3976927 B2 JP 3976927B2 JP 05595399 A JP05595399 A JP 05595399A JP 5595399 A JP5595399 A JP 5595399A JP 3976927 B2 JP3976927 B2 JP 3976927B2
- Authority
- JP
- Japan
- Prior art keywords
- bus
- signal
- data
- controller
- master
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/0083—Arrangements for transferring signals between different components of the apparatus, e.g. arrangements of signal lines or cables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N1/32561—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using a programmed control device, e.g. a microprocessor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N1/32561—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using a programmed control device, e.g. a microprocessor
- H04N1/32593—Using a plurality of controllers, e.g. for controlling different interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N1/32561—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using a programmed control device, e.g. a microprocessor
- H04N1/32598—Bus based systems
- H04N1/32603—Multi-bus systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/0077—Types of the still picture apparatus
- H04N2201/0091—Digital copier; digital 'photocopier'
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/0077—Types of the still picture apparatus
- H04N2201/0093—Facsimile machine
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Bus Control (AREA)
- Record Information Processing For Printing (AREA)
Description
【発明の属する技術分野】
本発明は、例えばスキャナ等の画像入力装置やプリンタ等の画像出力装置のデータを効率的に制御するバス制御装置に関するものである。
【0002】
【従来の技術】
従来、スキャナなどの画像入力装置とプリンタなどの画像出力装置とを組み合わせた複写機やファクシミリ、あるいはそれらを単体として備えたコンピュータシステムなど、デジタル複合機器と呼ばれる画像処理装置が実用化されている。このような装置では、画像入力機能、画像出力機能、コピー機能等の複合機能を実現するために、画像入力装置及び画像出力装置が同期して動作することが不可能な場合には、画像入力装置から一旦メモリに取り込んだ画像データを画像出力装置に出力することでコピー機能を実現していた。また、画像入力装置及び画像出力装置が同期して動作することが可能な場合には、画像入力装置から画像出力装置へ直接画像信号を転送する経路を設けてコピー機能を実現していた。
【0003】
【発明が解決しようとする課題】
しかしながら、画像データは一般に非常に大きなサイズを有することが多く、例えば画像入力装置−メモリ−画像出力装置間のデータ転送を高速に行うための機構が必要である。それに加えて、転送すべき画像サイズは様々であり、画像データの転送に用いるバス幅が画像データのバウンダリに一致しないことも多い。この画像データのバウンダリに合わせたデータ転送を行う機構を画像伝送用のバスに設けると、その機構によりバスの転送速度が損なわれることになる、といった問題があった。
【0004】
本発明は上記従来例に鑑みて成されたもので、高速な画像データの転送と画像データのバウンダリに合わせた画像データの転送とを両立することのできるバス制御装置を提供することを目的とする。
【0005】
【課題を解決するための手段】
上記目的を達成するために、本発明では、バス幅に適合したデータを転送する場合には第1のバスを使用してデータを転送し、バス幅に適合しないデータを転送する場合には、シングル転送が可能な第2のバスを使用してデータを転送する。
【0006】
また、本発明は次のような構成からなる。すなわち、画像データを転送するためのバス制御装置であって、画像データを入力する入力手段と、メモリに接続され、入力された画像データをバースト転送モードで前記メモリに転送するための第1のデータバスと、前記メモリに接続され、入力された画像データをシングル転送モードで前記メモリに転送するための第2のデータバスと、転送される画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致しているか否か判定する判定手段と、前記判定手段により画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致していると判定された場合、前記画像データを前記第1のデータバスによりバースト転送モードで転送し、画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致していないと判定された場合、前記画像データを前記第2のデータバスによりシングル転送モードで転送する制御手段とを備える。
【0009】
また好ましくは、前記制御手段は、所定サイズのメモリ空間に画像データを転送する2次元DMA転送を行う。
【0010】
また好ましくは、前記第1のバス及び第2のバス制御手段は、半導体基板上に集積された構成される。
【0011】
【発明の実施の形態】
次に本発明の実施の形態として、プロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナ/プリンタコントローラ、PCIインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである“DoEngine”を説明する。
【0012】
1.DoEngine概要
DoEngineは、MIPSテクノロジー社のR4000プロセッサとコンパチブルなプロセッサコア、プロセッサ周辺コントローラ、メモリコントローラ、スキャナー/プリンタコントローラ、PCIインターフェースなどを内蔵したシングルチップ・スキャニング・プリンティングエンジンである。高速並列動作、ビルディングブロック手法を採用し実装される。
【0013】
プロセッサシェル(プロセッサコアを含むプロセッサ周辺回路の総称)内には最大でインストラクション、データそれぞれ16Kバイトの計32Kバイトのキャッシュメモリ、FPU(浮動小数点演算ユニット)、MMU(メモリ管理ユニット)、ユーザー定義可能なコプロセッサなどを内蔵することが可能である。
【0014】
PCIバスインターフェースを有するので、PCIバススロットを有するコンピュータシステムと共に用いることができる。また、PCIサテライト構成に加え、PCIホストバスブリッジ構成にてPCIバスコンフィギュレーションを発行することが可能であり、安価なPCI周辺デバイスと組み合わせることにより、マルチファンクションペリフェラル(複合機能周辺機器)のメインエンジンとして使用することも可能である。さらにPCIバスインターフェースを有するレンダリングエンジン、圧縮・伸長エンジンと組み合わせることも可能である。
【0015】
チップ内部に汎用IOコアを接続するIOバス(Bバス)、及び、画像データ転送に最適化したグラフィックバス(Gバス:Graphics Bus)の2系統の独立したバスを有し、メモリ、プロセッサとこれらのバスをクロスバスイッチを介して接続することにより、マルチファンクションシステムにおける同時動作に必須の、並列性の高い高速データ転送を実現している。
【0016】
メモリには、画像データに代表される、連続したデータ列のアクセスに対し、最高のコストパフォーマンスを有するシンクロナスDRAM(SDRAM)をサポートし、SDRAMのバーストアクセス高速データ転送のメリットを享受できない小さなデータ単位でのランダムアクセスにおける性能低下を最小に抑えるために、8Kバイトの2ウェイセットアソシアティブ・メモリフロントキャッシュをメモリコントローラ内に備える。メモリフロントキャッシュは、すべてのメモリライトに対するバススヌープが難しい、クロスバスイッチを採用したシステム構成においても、複雑な機構なしに、キャッシュメモリによる高性能化が達成出来る方式である。また、リアルタイムデータ転送(機器制御)が可能な、プリンタ及びスキャナーとのデータインターフェース(Video Interface)を有し、さらにハードウェアによる、機器間同期のサポート及び画像処理を行う事により、スキャナ、プリンタ分離型の構成においても、高品質で高速なコピー動作の実現が可能な構成となっている。
【0017】
なお、DoEngineは、コアが3.3Vで動作し、IOは5Vトレラントである。
【0018】
図1及び図2,図3は、DoEngineを用いた装置あるいはシステムの構成例を示している。図1は分離構成型であり、パーソナルコンピュータ102には、それが備えるPCIインターフェースを介してDoEngineを備えたローカルボード101が装着される。ローカルボード101にはDoEngineのほか、後述するメモリバスを介してDoEngineと接続されたメモリと、色処理回路(チップ)が設けられている。このローカルボード101を介して、高速スキャナ103とカラー/モノクロプリンタ104とがパーソナルコンピュータ102に接続される。この構成により、パーソナルコンピュータの制御のもとで,ローカルボード101により、スキャナ103から入力された画像情報を処理し、プリンタ104から出力させることができる。
【0019】
また、図2及び図3はスキャナ203とプリンタ202とを一体に組み込んだ例で、図2は通常の複写機に類する構成を、図3(a)はファクシミリ装置などの構成を示している。図3(b)は、図3(a)をコントロールするコンピュータを示している。
【0020】
これらのうち、図1,2は、PCIインターフェースを介して接続された外部のCPUによりDoEngineが制御されるというスレーブモードで使用されている例であり、図3は、DoEngineのCPUが主体となり、PCIインターフェースを介して接続されたデバイスを制御するマスタモードで使用されている例である。
【0021】
表1として、DoEngineの仕様を示す。外部インターフェースとして、PCI,メモリバス,ビデオ,汎用入出力,IEEE1284,RS232C,100baseT/10baseT,LCDパネル及びキーを備えるが、更にUSBを有していてもよい。内蔵ブロックとして、CPUコアに加えて、1次キャッシュ,キャッシュ付きメモリコントローラ,コピーエンジン,IOバスアービタ(Bバスアービタ),グラフィックバスアービタ(Gバスアービタ)などを備えている。また、DMAコントローラはチャネル数が5であり、グラフィックバス(Gバス),IOバス(Bバス)ともに、アービトレーションは優先度付きの先着順処理方式で行われる。
【表1】
2.DoEngineの構成及び動作
本章では、DoEngine の総論に加え、各機能ブロック毎のブロック図、概要、詳細、コアインターフェース、タイミング図などを解説する。
【0022】
2.1.DoEngineのチップ構成
図4として、DoEngineのブロック図を示す。DoEngine400は次世代複合機能周辺機器(システム)(MFP:Multi Function Peripheral or MFS:Multi Function System)の主たるコントローラとして設計、開発された。
【0023】
CPU(プロセッサコア)401として、MIPSテクノロジー社のMIPSR4000コアを採用する。プロセッサコア401内には、8Kバイトずつのインストラクション,データのキャッシュメモリ、MMUなどが実装される。プロセッサコア401は、64ビットのプロセッサバス(SCバス)を介して、システム・バス・ブリッジ(SBB)402に接続される。SBB402は4×4の64ビットクロスバスイッチであり、プロセッサコア401の他に、キャッシュメモリを備えたSDRAMやROMを制御するメモリコントローラ403と専用のローカルバス(MCバス)で接続されており、さらに、グラフィックバスであるGバス404、IOバスであるBバス405と接続され、全部で4つのバスに接続される。システムバスブリッジ402は、これら4モジュール間を、可能な限り、同時平行接続を確保することができるように設計されている。
【0024】
Gバス404はGバスアービタ(GBA)406により協調制御されており、スキャナやプリンタと接続するためのスキャナコントローラ4302やプリンタコントローラ4303に接続される。また、Bバス405は、Bバスアービタ(BBA)407により協調制御されており、スキャナ/プリンタコントローラのほか、電力管理ユニット(PMU)409,インタラプトコントローラ(IC)410,UARTを用いたシリアルインターフェースコントローラ(SIC)411,USBコントローラ412,IEEE1284を用いたパラレルインターフェースコントローラ(PIC)413,イーサネットを用いたLANコントローラ(LANC)414,LCDパネル,キー,汎用入出力コントローラ(PC)415,PCIバスインターフェース(PCIC)416にも接続されている。
【0025】
2.2.プロセッサシェル
プロセッサシェルとは、プロセッサコアに加えMMU(Memory Management Unit)、命令キャッシュ、データキャッシュ、ライトバックバッファ及び掛け算ユニットを含んだブロックを指す。
【0026】
(キャッシュメモリ)
図5に示したように、キャッシュメモリコントローラは、無効(Invalid),有効かつクリーン(Valid Clean:キャッシュが更新されていない),有効かつダーティ(Valid Dirty:キャッシュが更新されている)の3つのステートキャッシュを管理する。この状態に応じて、キャッシュは制御される。
【0027】
2.3.インタラプトコントローラ
図6にインタラプトコントローラ410のブロック図を示す。
【0028】
インタラプトコントローラ410は、Bバスインターフェース605を介してBバス405に接続され、DoEngineチップ内の各機能ブロック及び、チップ外部からのインタラプトを集積し、CPUコア401がサポートする、6レベルの外部インタラプト及び、ノンマスカブルインタラプト(NMI)に再分配する。各機能ブロックとは、電力管理ユニット409,シリアルインターフェースコントローラ411,USBコントローラ412,パラレルインターフェースコントローラ413,イーサネットコントローラ414,汎用IOコントローラ415,PCIインターフェースコントローラ416,スキャナコントローラ4302,プリンタコントローラ4303などである。
【0029】
この際、ソフトウェアコンフィギュレーション可能なマスクレジスタ(Int Mask Logic 0 - 5)602により、各要因毎に割り込みをマスクをすることが可能である。また、外部インタラプト入力は、選択的エッジ検出回路601により、信号線ごとに、エッジセンス/レベルセンスを選択することが出来る。要因レジスタ(Detect and set Cause Reg 0 - 5)603は、各レベルごとに、どのインタラプトがアサートされているかを示すとともに、ライト動作を行うことで、レベルごとにクリアを行う事が出来る。
【0030】
各レベルの割込み信号は、各レベル毎に少なくともひとつの割り込みがあれば割込み信号を出力すべく、論理和回路604により論理和として出力される。なお、各レベル内での複数要因間のレベル付けはソフトウェアにて行う。
【0031】
2.4.メモリコントローラ
図7は、メモリコントローラ403のブロック図である。メモリコントローラ403は、メモリコントローラ専用のローカルバスであるMCバスにMCバスインターフェース701を介して接続され、最大1ギガバイトのシンクロナスDRAM(SDRAM)と、32メガバイトのフラッシュROMあるいはROMをサポートする。SDRAMの特徴であるバースト転送時の高速性を活かすため、64(16×4)バースト転送を実現する。また、CPUやBバスよりの連続したアドレスのシングル転送を考慮し、メモリコントローラ内にSRAM(メモリフロントキャッシュ)702を内蔵し、SDRAMへ直接シングル転送を行うことを可能な限り回避して転送効率を向上させる。メモリコントローラ−SDRAM間のデータバス幅は、信号ramData及びramParをあわせて72ビット(このうち8ビットの信号ramParはパリティ)、フラッシュROM間のデータバスfntromData,prgromDataの幅は32ビットとする。
【0032】
2.4.2.構成及び動作
メモリコントローラの各部はこれから説明するような構成となっている。
【0033】
(MCバスインターフェース(701))
MCバスは、SBB402−メモリコントローラ403間の専用のバスであり、またSBB内部の基本バスとして用いられている。
【0034】
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ビットがソース(マスタ)をあらわし、下位ビットがシングル/バースト長をあらわす。タイプには次のようなものがある。
【0035】
・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(入力) … バスエラー
パリティエラーやその他のバスエラーが発生した場合にアサートされる。
【0036】
なお、上述した入出力の別は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-ダブルワードバーストx4までのトランザクションをサポートする。
▲4▼In-page write(ページ内書き込み)トランザクション
mTPW_Lで示される同一ページ内の書き込みに関して、連続的なWriteアクセスをサポートする。
▲5▼バスリトライ
メモリコントローラ内の制限によりメモリアクセスができない場合は、mBRty_L信号をアサートし、バスリトライを通知する。
【0037】
(SDRAMコントローラ(705))
メモリコントローラ403は、次のような構成を有するSDRAMを以下のように制御する。
【0038】
(DRAM構成)
DRAMの構成としては、x4,x8,x16ビットタイプの16/64メガビットSDRAMを64ビットデータバスで8バンク制御することができる。
【表2】
(DRAMアドレスビット構成)
DRAMのアドレスビットの割付けについては、64ビットSDRAMの場合にはMA[13:0]を、16ビットSDRAMの場合にはMA[11:0]を使用する。
【表3】
(SDRAMプログラマブル構成(モードレジスタ))
SDRAMは内部にモードレジスタを持ち、モードレジスタ設定コマンドを用いて下記の項目を設定する。
▲1▼バースト長
バースト長は、1,2,4,8,フルページのいずれかが設定可能であるが、CPUからのバースト転送長が4であることから、バースト長4が最適である。Gバスからの16バースト以上の転送は、Read/Writeコマンド(オートプリチャージ無し)を連続して発行することにより実現する。
▲2▼ラップタイプ(Wrap Type)
バースト転送時のアドレスのインクリメント順を設定する。「シーケンシャル」または「インターリーブ」のどちらかが設定可能である。
▲3▼CASレイテンシ
CASレイテンシは、1,2,3のいずれかが設定可能であり、使用するSDRAMのグレードと動作クロックにより決定される。
【0039】
(SDRAMコマンド)
SDRAMに対して以下のコマンドをサポートする。各コマンドの詳細は、SDRAMデータブックに記載されている。
・モードレジスタ設定コマンド
・アクティブコマンド
・プリチャージコマンド
・ライトコマンド
・リードコマンド
・CBR(Auto)リフレッシュコマンド
・セルフリフレッシュ開始コマンド
・バーストストップコマンド
・NOPコマンド
(SDRAMリフレッシュ)
SDRAMは、2048サイクル/32ms(4096/64ms)であるので、16,625nsおきにCBRリフレッシュコマンドを発行する。メモリコントローラは設定可能なリフレッシュカウンタを持ち、自動的にCBRリフレッシュコマンドを発行する。Gバスからの16-バーストx nの転送中は、リフレッシュ要求を受け付けない。したがって、リフレッシュカウンタは16-バーストx 4転送の時間だけ余裕を持った値を設定しなければならない。また、セルフリフレッシュをサポートする。このコマンドを発行すると、パワーダウンモード(ramclke_L=Low)時にセルフリフレッシュが続行される。
【0040】
(SDRAM初期化)
メモリコントローラはパワーオンリセット後、SDRAMに対して以下の初期化を行なう。すなわち、電源投入後100μsのポーズ期間をおいて、
▲1▼プリチャージウコマンドを用いて全バンクをプリチャージする。
▲2▼SDRAMのモードレジスタを設定する。
▲3▼オートリフレッシュコマンドを用いて、リフレッシュを8回行う。
【0041】
(フラッシュROMコントローラ(704))
フラッシュROMコントローラ704は、romAddr[23:2]のアドレス信号と4個のチップセレクト(romCs_L[3:0])信号をサポートする。アドレス信号romAddr2〜romAddr9はパリティ信号ramPar0〜ramPar7とマルチプレクスされ、アドレス信号romAddr10〜romAddr23は、DRAMアドレスramAddr0〜ramAddr13とマルチプレクスされている。
【0042】
(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に示す。
【0043】
(キャッシュの動作)
ここで、MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作を図8のブロック図と、図9及び図10に示すフローチャートを用いて説明する。
【0044】
MCバスよりデータ転送が開始されると、その転送の最初にMCバス上で示されるmTType[6:0]によって、その転送がキャッシュオンでおこなうか、オフでおこなうかの判断がおこなわれる。この説明では、転送がシングル転送であればオン、バースト転送であればオフと判断することにする(ステップS901)。すなわち、mTType(3)が“1”hであれば、シングル転送をあらわすのでキャッシュオンで、“0”hであればバースト転送をあらわすのでキャッシュオフで転送を行う。
【0045】
シングル転送(キャッシュオン)の場合、アドレス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)。
【0046】
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)。
【0047】
ここでヒットであれば、リードかライトかが判定される(ステップ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ヒット)に書き換えて、転送が終了する。
【0048】
一方、ヒットかつライトの場合にはつぎのようになる。すなわち、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)。
【0049】
一方、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)。
【0050】
ステップS901においてバースト転送(キャッシュオフ)の場合、リード、ライトともSDRAMに対してだけ行われ(ステップS907−S909)、キャッシュデータやタグの書き換え等は行わない。
【0051】
(ROM/RAMインターフェース(707))
ROM/RAMコントローラ707の構成を図11に示す。ブロック1101〜ブロック1104により、SDRAMのデータ信号、アドレス信号、パリティ信号が、フラッシュROMのデータ信号、アドレス信号と多重化される。
【0052】
2.4.3.タイミングダイアグラム
上述したメモリコントローラ403によるデータの読み出し・書き込み等の処理のタイミングを、図12〜図19を用いて説明する。
【0053】
図12は、CPUからのバースト読み出しのタイミングを示す。バースト長は4、CASレイテンシは3である。図9のステップS909における処理に相当する。
【0054】
図13は、CPUからのバースト書き込みのタイミングを示す。バースト長は4、CASレイテンシは3である。図9のステップS908における処理に相当する。
【0055】
図14は、Gバスデバイスからのバースト読み出しのタイミングを示す。Gバスのバースト長は16、SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS909における処理に相当する。
【0056】
図15は、Gバスデバイスからのバースト書き込みのタイミングを示す。Gバスのバースト長は16、SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS908における処理に相当する。
【0057】
図16は、メモリフロントキャッシュにヒットした場合のシングル読み出しのタイミングを示す。読み出されるデータmDataIn[63:0]としては、キャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bから読み出されたb1/b2_out_dataが出力される。SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS905における処理に相当する。
【0058】
図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における処理に相当する。
【0059】
図18は、メモリフロントキャッシュにヒットした場合のシングル書き込みのタイミングを示す。書き込まれるデータmDataOut[63:0]は、キャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bに書き込まれるとともに、SDRAMにも書き込まれる。SDRAMのバースト長は4、CASレイテンシは3である。図9のステップS906における処理に相当する。
【0060】
図19は、メモリフロントキャッシュにヒットしなかった場合のシングル書き込みのタイミングを示す。書き込まれるデータmDataOut[63:0]は、キャッシュメモリであるb1_data_ram702−aあるいはb2_data_ram702−bには書き込まれず、SDRAMに対してだけ書き込まれる。SDRAMのバースト長は4、CASレイテンシは3である。図10のステップS1002における処理に相当する。
【0061】
なお、ここでは、MCバスよりデータ転送が開始されると、その転送の最初にMCバス上で示されるmTType[6:0]によって、転送がシングル転送であればオン、バースト転送であればオフと判断しているが、バースト転送の場合に、さらにバースト長を判定し、バースト長がキャッシュの1ラインよりも小さい場合にはキャッシュオンとし、そうでない場合にはキャッシュオフとして動作するようにしてもよい。
【0062】
また、MCバスに、メモリへのデータ転送を要求したバスマスタの識別子を示す信号を含ませることで、メモリコントローラがその識別子を判定し、識別子に応じてキャッシュオン/キャッシュオフの制御を行うこともできる。この場合には、識別子とキャッシュオン/オフの別とを対応させた書換え可能なテーブルを用意し、それを参照してキャッシュのオンオフを切り替えることもできる。このテーブルは、例えば特定のアドレスを割り当ててCPU401などから書換え可能にすることもできる。
【0063】
2.5.システムバスブリッジ(SBB)及びBバス,Gバス
図20としてシステムバスブリッジ(SBB)402のブロック図を示す。
【0064】
SBB402は、Bバス(入出力バス),Gバス(グラフィックバス),SCバス(プロセッサローカルバス)及びMCバス間の相互接続をクロスバスイッチを用いて提供する、マルチチャネル双方向バスブリッジである。クロスバスイッチにより、2系統の接続を同時に確立することが出来、並列性の高い高速データ転送を実現出来る。
【0065】
SBB402は、Bバス405と接続するためのBバスインターフェース2906と、Gバス404と接続するためのGバスインターフェース2006と、プロセッサコア401と接続するためのCPUインターフェーススレーブポート2002と、メモリコントローラ403と接続するためのメモリインターフェースマスターポートを備えるほか、アドレスバスを接続するアドレススイッチ2003,データバスを接続するデータスイッチ2004を含む。また、プロセッサコアのキャッシュメモリを無効化するキャッシュ無効化ユニット2005を備えている。
【0066】
Bバスインターフェース2009には、BバスデバイスからのDMAライトを高速化するライトバッファと、Bバスデバイスのリードを効率化するリードプリフェッチキューを実装する。これらのキュー内に一時的に存在するデータに関するコヒーレンシ管理はハードウェアにて行う。なお、Bバスに接続されたデバイスをデバイスと呼ぶ。
【0067】
プロセッサコアは32ビットバスに対するダイナミックバスサイジングをサポートしているが、SBB402ではこれをサポートしない、将来、バスサイジングをサポートしないプロセッサを用いる場合にもSBBに必要な改造を最小限におさえるためである。
【0068】
2.5.1.SBB及び各バスの構成及び動作
(Bバスインターフェース)
図21は、Bバスインターフェースのブロック図である。
【0069】
Bバスインターフェース2009は、BバスとMCバス間の双方向ブリッジ回路である。BバスはDoEngineの内部汎用バスである。
【0070】
Bバスインターフェース2009内には、マスタコントロールブロック2011、スレーブコントロールブロック2010、データインターフェース2012、DMAC2013、Bバスバッファの5ブロックが含まれる。図21上で、DMAC2013は、機能上3個のシーケンサとレジスタブロックに分割される。それら3つのシーケンサのうち、DMAメモリアクセスシーケンサはBバススレーブコントロールブロック2010に、DMAregシーケンサはBバスマスターコントロールブロック2011に内蔵される。レジスタブロックであるDMAレジスタはBバスデータインターフェース2012部に内蔵される。
【0071】
またBバスインターフェース2009はBバス側からのメモリへの書き込み時、及びDMAによるデバイスからメモリへの転送が起こった時に、キャッシュ無効化インターフェースを介してCPUシェル内のデータ、命令両キャッシュの無効化の制御を行う。
【0072】
なお、CPUライト時のライトバックバッファはBバスインターフェースには実装しないが、Bバス上の外部マスタライト時のライトバッファを実装する。これにより、バースト転送でない、連続した外部マスタからの書き込みが高速化される。このライトバッファのフラッシュは、Bバスアービタ407によるメモリへの接続が許された時点で行われる。Bバスマスタリードのライトバッファバイパスは行わない。
【0073】
また、外部マスタのリードプリフェッチキューを実行する。これにより、外部マスタからの連続した、データストリームの読み出しの高速化を図る。リードバッファの無効化は、
1.Bバスの新たなリードがバッファにヒットしなかった場合。
2.CPUからメモリへのライトが行われた場合。
3.Gバスからメモリへのライトが行われた場合。
4.Bバスからメモリへのライトが行われた場合。
に行われる。
【0074】
またBバスインターフェース2009にはBバス405上の各デバイスとメモリ間のDMAコントローラ2013が内蔵される。システムバスブリッジ402にDMAコントローラを内蔵することにより、ブリッジ双方へ、同時にアクセス要求が発行出来、効率的なDMA転送が実現出来る。
【0075】
Bバスインターフェース2009はプロセッサ401からのアクセス要求に対して、ダイナミックバスサイジングの使用を要求しない。またBバスマスタからのメモリアクセス要求時に、メモリコントローラ403からのバスサイジングにも対応しない。すなわち、メモリコントローラはバスサイジングを期待すべきではない。
【0076】
(Bバス)
BバスはDoEngine内の汎用IOバスであり、以下の仕様を持つ。
・アドレス、データ分離型32ビットバス。
・任意のウェイトサイクルを挿入可能、最短はノーウェイト。
・バーストトランザクションのサポート。
・最大転送速度は、クロックが50MHz時に200Mbyte/Sec。
・バスエラーとバスリトライのサポート。
・複数バスマスタのサポート。
【0077】
(Bバス信号定義)
以下にバス信号の定義を説明する。各信号毎に、「信号名(英語呼称):入力元>出力先 (,3States)…信号の説明」の要領で記載されている。なお、3ステートの項は3ステートの信号に限り記載した。
【0078】
bAddr[31:2](IOBus Address Bus):Master>Slabe,3State… IOBusアドレスバス。
【0079】
bData[31:0] (IOBus Data Bus):DataDriver>DataReceiver,3State … IOBusデータバス。
【0080】
b(Datadrivername)DataOeReq(IOBus Data Output Enable Request):Datadriver>DefaultDriverLogic … 後述する双方向IOバスを実現するため、デフォルトドライバーコントロールロジックヘの出力信号である。Datadrivernameを持つデバイスが、バス上にデータをドライブするための要求信号である。データの出力を許可されたデバイスには、デフォルトドライバーコントロールロジックよりb(Datadrivername)DataOe_Lが出力される。Datadriverの例:Pci,Sbb,Jpeg,Spu。
【0081】
b(Datadrivername)DataOe_L(IOBus Data Output Enable): dfaultDriverLogic>Datadriver … b(Datadrivername)DataOeReqを出力したデバイスに対し、デフォルトドライバーロジックがデータバスへのデータのドライブを許す場合b(Datadrivername)DataOe_L信号をそのデバイスに対して返す。
【0082】
bError_L(IOBus Bus Error):Slave>Master 3State … IOバストランザクションがエラーで終了したことを示す。
【0083】
b(Mastername)BGnt_L(IOBus Grant):Arbiter>Master … バスアービトレーションにより当マスタがバスの使用権を得たことを示す。Masternameの例:Pci,Sbb,Jpeg,Spu。
【0084】
blnstNotData(IOBus Instruction/Data Output Indicator):Master>Slave,3State … BバスマスタがインストラクションフェッチをBバススレーブに対して行う場合にHighにドライブする。データトランザクションの場合はLowにドライブする。
【0085】
b(Mastername)CntlOeReq(IOBus Master Control Output Enable Request):Master>DefaultDriverLogic … Bバスマスタが、bStart_L,bTx_L,bWr_L,vInstNotDataとbAddr[31:2]を3ステートバス上にドライブしたい場合に、IOBus Output Control Logicに対してアサートする。IOBus Output Control Logic は各マスタからの、bMCntlOeReqに基づきドライブを許すマスタに対し、b(Mastername)CntlOe_L信号を返す。
【0086】
b(Mastername)CntlOe_L(IOBus Master Control Output Enable):DefaultDriverLogic>Master … b(Mastername)CntlOeReqを出力したマスタに対し、デフォルトドライバーロジックがドライブを許す場合b(Mastername)CntlOe_L信号をそのマスタに対して返す。
【0087】
bRdy_L(IOBus Ready):Slave>Master,3State … Bバススレーブは、現在のBバスデータトランザクションが現在のクロックサイクルを最後に終了することを示すためにこの信号をアサートする。Bバスマスタは、この信号により、現在のトランザクションがこのクロックサイクルで終了することを知る。
b(Mastername)BReq_L(IOBus Bus Request):Master>Arbiter … Bバスマスタが、Bバスアービタに対し、バスの使用権要求を行う事を示す。
【0088】
bRetry_L(IOBus Bus Retry):Slave>Master 3State … Bバススレーブがマスタに対し、バストランザクションの最実行を要求する。
【0089】
b(Slavename)RdyOeReq(IOBus Slave Ready Output Enable Request):Slave>DefaultDriverLogic … Bバススレーブが、bRdy_L,bWBurstReq_L,bBurstAck_Lを3ステートバス上にドライブしたい場合に、IOBus Output Control Logicに対してアサートする。IOBus DefaultDriverLogicは各マスタからの、b(Slavename)RdyOeReqに基づきドライブを許すスレーブに対し、b(Slavename)RdyOe_L信号を返す。
【0090】
b(Slavename)RdyOe_L(IOBus Slave Ready Output Enable):DefaultDriverLogic>Slave … b(Slavename)RdyOeReqを出力したマスタに対し、デフォルトドライバーロジックがドライブを許す場合b(Slavename)RdyOe_L信号をそのマスタに対して返す。
【0091】
bSnoopWait(IOBus Snoop Wait):SBB>NextMaster … BバスインターフェースがBバスに接続された他のデバイスに対し、キャッシュのスヌーピング実行中であることを示す。Bバスに接続されたデバイスはこの信号がアサートされている間は新たなトランザクションを発行できない。
【0092】
bStart_L(IOBus Transaction START):Master >Slave 3State … BバスマスタがBバストランザクションをスタートすることを示す信号、Bバススレーブは、この信号を監視することにより、Bバストランザクションのスタートを知ることが出来る。
【0093】
bTx_L(IOBus Transaction Indicator Input):Master>Slave 3State … BバスマスタがBバススレーブに対し、Bバストランザクションが現在実行中である事を示すためにアサートする。
【0094】
bWBurstGnt_L(IOBus Burst Write Grant):Master>Slave,3State … Bバスマスタが、Bバスバーストライトのリクエストに対し、バーストライト実行することを示すためにドライブする。
【0095】
bWBurstReq_L(IOBus Burst Write Request):Slave >Master,3Stete …BバススレーブがBバスマスタに対し、バースとライトを要求する場合にアサートする。
【0096】
bWr_L(IOBus Write Transaction Indicater):Master>Slave,3State …Bバスマスタが、Bバススレーブに対し、現在のトランザクションがライトである事を示すためにアサートする。
【0097】
bByteEn[3:0](IOBus Byte Enables):DataDriver>DataReceiver,3State … Bバス上にデータをドライブするエージェントが、各ビットに対応したbData[31:0]上のバイトレーンが有効である事を示すためにHighにドライブする。本信号の各ラインとbDataのバイトレーンは表4の対応関係にある。
【表4】
bBurst_L(IOBus Extended Burst Request):Master>Slave,3Sate … Bバスマスタが拡張バーストを行いたい事を示す。アサート、ネゲートタイミングはbTx_Lと同一。
【0098】
bBurstAck_L(IOBus Extended Burst Acknowledge):Slave>Maste,3State… Bバススレーブが拡張バーストを行える事を示す。アサート、ネゲートタイミングはbRdy_Lと同一。
【0099】
bBurstShortNotLong_L(IOBus Burst Length):Master>Slave,3State …Bバスマスタが拡張バーストを行う場合のバースト長を示す。アサート、ネゲートタイミングはbTx_Lと同一であり、信号値とバースト長との対応は表5に示したとおりである。
【表5】
Bバス信号は上述の通りである。DoEngine内部のバスである、Bバス(及びGバス)は接続される機能ブロック数が10以上になるので、InOut分離バスですべてのブロックを接続することは、困難である。DoEngineでは、チップ内双方向バスを採用する。
【0100】
(Gバスインターフェース)
図22にGバスインターフェース2006のブロック図を示す。この概要は下記の通りである。
【0101】
(Gバス概要)
Gバスは、MFP用1チップコントローラDoEngine内部において、各画像データ処理部間のデータ転送を高速に実行するために定義されたバスである。64ビットのデータバスをもち、4Gbyte(128byte boundary)のアドレス空間をサポートする。16ビート(128byte=64ビット x 16) を1ロングバーストとした転送を基本とし、連続して4ロングバースト(512byte=16ビート x 4) までを可能とする。(シングルビートなど16ビート以下の転送はサポートしない)
(Gバス信号定義)
信号の定義に用いる記号をまず定めておく。信号名の直後には、必要に応じて信号の方向が記述されている。それは次のように定める。
In(Input signal) … バスエージェントに対する入力信号
Out(Output signal) … バスエージェントからの出力信号
InOut(Bi-Directional Tri-State signal) … 双方向の信号で、複数のバスエージェントがドライブする。一度にひとつのエージェントだけがドライブする。信号をドライブする各エージェントのイネーブルリクエスト信号をデフォルトドライバで集中管理し、どのエージェントがドライブするかはデフォルトドライバが決定する。どのエージェントもイネーブルリクエストを出さない場合や、複数のエージェントが同時にイネーブルリクエストを出している場合はデフォルトドライバ信号をドライブする。エージェントは、信号をロウにドライブする場合は、前後1クロックの間ハイにドライブしなければならない。信号のアサートはドライブを初めてから1クロック以上経過してからしか行えない。基本的に信号のリリースはネゲートした次のクロックで行う。
【0102】
なお、各信号名の後の“_L”はその信号がローアクティブであることを示す。信号の記述のしかたは、ほぼBバス信号の記述に準ずる。説明は、システム信号、アドレス及びデータ信号、インターフェース制御信号、アービトレーション信号に分けて行う。また、バスエージェントとは、バスに接続されるバスマスタやバススレーブの総称である。
【0103】
(システム信号)
gClk(G-Bus Clock) … Gバス上のすべてのトランザクションについてタイミングを提供し、すべてのデバイスに対して入力となる。
【0104】
gRst_L(G-Bus Reset) … Gバス上のすべてのデバイスをリセットする。すべての内部レジスタはクリアーされ、すべての出力信号はネゲートされる。
【0105】
(アドレスおよびデータ信号)
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のアサートを確認したクロック。
【0106】
g(Mastename)AddrOeReq(G-Bus Address OutPut Enable Request):Master>DefaultDriverLogic … 双方向Gバスを実現するための、デフォルトドライバロジックへの出力信号。バスマスタがアドレスバスをドライブするための要求信号。
【0107】
g(Mastername)AddrOe_L(G-Bus Address OutPut Enablet):DefaultDriveLogic>Master … g(Mastername)AddrOeReqを出力したバスマスタに対し、デフォルトドライバロジックがアドレスバスのドライブを許可することを示す信号。
【0108】
gData[63:0],InOut,( G-Bus Data):DataDriver>DataReceiver … 64ビットデータバスで、ライト時はマスタがドライブ、リード時はスレーブがドライブ。
【0109】
[ライト]
drive:gTs_Lと同時にマスタがドライブ。ただし、gSlvBsy_Lがアサートされている時はネゲートされるまで待ってドライブ。
assert:ドライブした次のクロック。
change:gAack_Lのアサートを確認したクロック、その後は毎クロック。
negate:転送終了時、またはgTrStp_Lによる転送停止要求を確認した場合は、gAack_Lのアサートを確認したクロック。
【0110】
[リード]
drive:gAack_Lと同時にスレーブがドライブ。
assert:スレーブがReadyであればドライブした次のクロックで、ReadyでなければReadyになるまで待ってアサートされる。
change:gAack_Lのアサートを確認したクロック、その後は毎クロック。リードの場合はアサートしたクロックから毎クロック。
negate:転送終了時。
release:ネゲートの1クロック後、またはgTrStp_Lによる転送停止要求を確認したクロック。
【0111】
g(DataDrivername)DataOeReq(G-Bus Data OutPut Enable Request):DataDriver>DefaultDriverLogic … データドライバがデータバスをドライブするための要求信号。
【0112】
g(DataDrivername)DataOe_L(G-Bus Data OutPut Enablet):DefaultDriverLogic>DataDriver … g(DataDrivername)DataOeReqを出力したデータドライバに対し、デフォルトドライバロジックがデータバスのドライブを許可することを示す信号。
【0113】
(インターフェース制御信号)
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クロックアサート後にネゲートされる。
【0114】
g(Mastername)TsOeReq(G-Bus Transaction Start OutPut Enable Request):Master>DefaultDriverLogic … バスマスタがgTs_Lをドライブするための要求信号。
【0115】
g(Mastername)TsOe_L(G-Bus Transaction Start OutPut Enablet):DefaultDriverLogic>Master … g(Mastername)TsOeReqを出力したバスマスタに対し、デフォルトドライバクロックがgTs_Lのドライブを許可することを示す信号。
【0116】
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クロックアサート後にネゲートされる。
【0117】
g(Slavename)AackOeReq(G-Bus Address Acknowledge OutPut Enable Request):Slave>DefaultDriverLogic … スレーブがgAack_Lをドライブするための要求信号。
【0118】
g(Slavename)AackOe_L(G-Bus Address Acknowledge OutPut Enablet):DefaultDriverLogic>Slave … g(Slavename)AackOeReqを出力したスレーブに対し、デフォルトドライバロジックがgAack_Lのドライブを許可することを示す信号。
【0119】
gSlvBsy_L,InOut,(G-Bus Slave Busy):Slave>Master … スレーブがドライブし、データバスでデータを転送中であることをあらわす。
drive:アドレスデコードヒット時、gTs_Lのアサートを確認したクロックでドライブ開始。ただし、gSlvBsy_Lがアサートされている時はネゲートされるまで待ってドライブ。
assert:スレーブがReadyであればドライブした次のクロックで、ReadyでなければReadyになるまで待ってアサート。
negate:転送終了時にネゲート。
release:ネゲートの1クロック後、またはgTrStp_Lによる転送停止要求を確認したクロック。
【0120】
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のドライブを許可することを示す信号。
【0121】
gRdNotWr,InOut,(G-Bus Read(High)/Write(Low)):Master>Slave … マスターによりドライブされ、HighでREAD、LOWでWRITEをあらわす。ドライブする期間はGAと同じである。
derive:gTs_Lと同時にマスターがドライブ。
assert:ドライブした次のクロック。
negate:gAack_Lのアサートを確認したクロック。
【0122】
g(Mastername)RdNotWrOeReq(G-Bus Read/Write OutPut Enable Reques):Master>DefaultDriverLogic … バスマスタがgRdNotWrをドライブするための要求信号。
【0123】
g(Mastername)RdNotWrOe_L(G-Bus Read/Write OutPut Enablet):DefaultDriverLogic>Master … g(Mastername)RdNotWrOeReqを出力したバスマスタに対し、デフォルトドライバロジックがgRdNotWrのドライブを許可することを示す信号。
【0124】
gBstCnt[1:0],InOut,(G-Bus Burst Counter):Master>Slave … マスターによりドライブされ、連続して行うバースト転送の数(1〜4)をあらわす。信号の値とバースト転送するバイト数との対応は表6のようになる。
derive:gTs_Lと同時にマスターがドライブ。
assert:ドライブした次のクロック。
negate:gAack_Lのアサートを確認したクロック。
【表6】
g(Mastername)BstCntOeReq(G-Bus Burst Counter OutPut Enable Request):Master>DefaultDriverLogic … バスマスタがgBstCntをドライブするための要求信号。
【0125】
g(Mastername)BstCntOe_L(G-Bus Burst Counter OutPut Enablet):DefaultDriverLogic>Master … g(Mastername)BstCntOeReqを出力したバスマスタに対し、デフォルトドライバロジックがgBstCntのドライブを許可することを示す信号。
【0126】
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上をドライブするための要求信号。
【0127】
g(Slavename)BstStpOe_L(G-Bus Burst Stop OutPut Enablet):DefaultDriverlogic>Slave … g(Slavename)BstStpOeReqを出力したスレーブに対し、デフォルトドライバロジックがgBstStp_Lのドライブを許可することを示す信号。
【0128】
(アービトレーション信号)
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で指定されたデータ量だけ転送を行う。マスタとスレーブは、それぞれ自分でクロックをカウントして、データ転送の終了を知らなければならない。
【0129】
スレーブは転送の途中でマスタから要求されたデータ転送量を転送できなくなった場合は、bStStp_Lを15ビート目でアサートすることで、次の16ビートの転送をキャンセルすることがただし、16ビートの途中でキャンセルすることはできない。
【0130】
マスタおよびスレーブは、gBstStp_Lがアサートされれば、次のクロックでデータの転送を終了させなければならない。
【0131】
(キャッシュインバリデーションユニット(CIU))
キャッシュインバリデーションユニット(以下CIU)2005は、Bバスからメモリへのライトトランザクションを監視し、これが起こった場合は、メモリへの書込が終了する前に、CPUシェルのキャッシュインバリデーションインターフェースを用い、CPUシェルに内蔵されたキャッシュの無効化を行う。
【0132】
CPUシェルは、次の3種類の信号を使用する。
・SnoopADDR[31:5] (Cache Invalidation Address)
・DCINV (Dcache(データキャッシュ)Invalidation Strobe)
・ICINV (Icache(インストラクションキャッシュ)Invalidation Strobe)
キャッシュの無効化は最大3クロックで行われる、Bバスからメモリへのライトは3クロックで終了することはないので、キャッシュインバリデーションユニット2005は、CPUシェル401から出力されるStop_L信号を用いて無効化終了のハンドシェイクを行うことはしない。但し、将来の変更に備え、Bバス上にはbSnoopWaitをStop_Lと同一サイクルだけドライブする。
【0133】
なお、現在のインプリメンテーションでは、Bバスからのライトが起こった場合は、安全のためにIcacheもインバリデーションしている、もし、OSでセルフモディファイングコードを禁止し、インストラクションとして使われる可能性のあるデータのローディング時に、意図的にインストラクションキャッシュのインバリデーションを行うなら、Icacheのインバリデーションはいらない。この場合は若干のパフォーマンスアップが望める。
【0134】
(メモリマップ)
図23及び図24にメモリマップを示す。図23は、左から順に、仮想メモリマップ、物理メモリマップ、Gバスのアドレス空間でのメモリマップ、Bバスのアドレス空間でのメモリマップである。また、図24は、レジスタ等を含む図23における斜線部の512メガバイトを示すマップである。
【0135】
プロセッサコアのメモリモデルはR3000をベースにしている。プロセッサコアの物理アドレス空間は32ビットアドレッシングにより4Gバイトある。仮想空間も同様に32ビットアドレッシングを行なう。ユーザープロセスの最大サイズは2Gバイトである。アドレスマッピングはカーネルモードとユーザーモードで異なる。図はMMUを使用しない場合のメモリマップである。
【0136】
(ユーザーモード仮想アドレッシング)
ユーザーモードの仮想アドレッシングでは2Gバイトのユーザ仮想アドレス空間(kuseg)が有効となる。このユーザーセグメントのアドレスは0x00000000から始まり、すべての有効なアクセスは0にクリアされたmsbを持つ。ユーザーモードにおいてmsbをセットしたアドレスの参照はアドレスエラー例外処理を引き起こす。TLBはkusegへのすべての参照をユーザーモードとカーネルモードで同様にマッピングする。また、キャッシャブルである。kusegは通常ユーザーコードやデータを保持するために使用される。
【0137】
(カーネルモード仮想アドレッシング)
カーネルモードの仮想アドレス空間には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をスタックやコンテキストスイッチによるリマップが必要なプロセス毎のデータのために使用する。
【0138】
(仮想アドレスメモリマップ(図23(a),図24(a)))
仮想アドレス空間は4Gバイトあり、システム上のすべてのメモリ、I/Oがアクセス可能である。kusegにはSYSTEM MEMORY(1GB)が存在する。
【0139】
kseg0には内蔵RAM(16MB)が存在する。これは、例外処理のベクタをプログラミングしたい場合にインプリメントし、例外ベクタベースアドレスを0x80000000に設定する。このアドレスは物理アドレス空間の0x00000000にマッピングされる。
【0140】
kseg1にはROM,I/O,レジスタが存在し、ブートROM(16MB),SBB内部レジスタとMC内部レジスタ(16MB),IOBusI/O1(16MB:Gバスアービタ内部レジスタ、Bバスアービタ内部レジスタ、PMU内部レジスタなどのプリミティブなBバスレジスタ),IOBusI/O2(16MB),IOBusMEM(16MB),Gbus MEM(32MB),FONT ROM(240MB)、FONT ROM or RAM(16MB)が含まれる。
【0141】
kseg2にはPCI I/O(512MB),PCI MEM(512MB)が存在する。
【0142】
kseg0,kseg1はどちらも物理アドレス空間の最初の512Mバイトにマッピングされるため、kseg0,kseg1とkusegの最初の512Mバイトはすべて同じ物理アドレス空間を参照していることになる。
【0143】
(物理アドレスメモリマップ(図23(b),図24(b)))
物理アドレス空間も仮想アドレス空間と同様4Gバイトあり、システム上のすべてのメモリ、I/Oがアクセス可能である。
【0144】
PCI I/O,PCI MEM,SYSTEM MEMORYについては仮想アドレスメモリマップと同一である。
【0145】
kseg1,kseg2はどちらも物理アドレス空間の最初の512Mバイトにマッピングされるので、ROM,I/O,Regは0x00000000からの空間に存在している。
【0146】
(Gバスメモリマップ(図23(c),図24(c)))
Gバスアドレス空間は4Gバイトあり、SYSTEM MEMORY,GBus MEM,FONTのみがアクセス可能である。
【0147】
(Bバスメモリマップ(図23(d),図24(d)))
Bバスアドレス空間は4Gバイトあり、PCI I/O,PCI MEM,SYSTEM MEMORY,IOBusI/O2,IOBus MEM,FONTのみがアクセス可能である。
【0148】
IOBus I/O1はプリミティブなレジスタのため、0x1C000000から0x20000000までの空間はPCIからプロテクトがかけられており、PCIからアクセスできない。
【0149】
(アドレススイッチ)
アドレススイッチ2003は、SCバス,Gバス,Bバス,MCバス間のデータ転送を行なうために、マスターとなるバスからスレーブとなるバスへ、SBB402を経由してアドレス信号を送るためのものである。SBB402を経由する転送において、マスターとなり得るバスは、SCバス,Gバス,Bバスであり、スレーブとなり得るバスはBバス,MCバスである。MCバスに対してはSCバス,Gバス,Bバス,のいずれかがマスターとなり、BバスへはSCバスのみがマスターとなってアドレス信号を送る。
【0150】
また、SCバス-Bバス間の転送と、Gバス-MCバス間の転送は同時に行なうことができる。
【0151】
図25に、アドレススイッチ2003のブロック図を示す。スイッチシーケンサ2003aにより、スイッチ2003bを切り替えてスレーブをBバスとMCバスとで切り換え、スイッチ2003cを切り替えてマスタをSCバス,Gバス,Bバスで切り換える。この構成により、MCバスに対してはSCバス,Gバス,Bバス,のいずれかがマスターとなり、BバスへはSCバスのみがマスターとなり、また、SCバス-Bバス間の転送と、Gバス-MCバス間の転送は同時に行なうことができる。
【0152】
(データスイッチ)
データスイッチはSCバス,Gバス,Bバス,MCバス間のデータ転送を行なう際に,SBB内でデータの流れを切り替えるものである。ライト時はマスターからスレーブ、リード時はスレーブからマスターへデータが送られる。
【0153】
図26にデータスイッチ2004のブロック図を示す。この構成において、セレクタA−1〜A−3及びB−1,B−2を表7のように切り替えることで、SCバス,Gバス,Bバスのいずれかをマスタとし、Bバス,MCバスのいずれかをスレーブとして、書き込みあるいは読み出しを行うように制御できる。
【表7】
(アービトレーション)
SBB402内のスイッチシーケンサ2003aは、各スイッチを切り替えるにあたって、SBB外部からの以下の3種類の接続要求間のアービトレーションを行う。
1.CPU
2.Gバスバスマスタ
3.Bバスバスマスタ
このアービトレーションは、現在のバススイッチ接続状況、及び、あらかじめ設定された優先順位により決定され、その結果アドレススイッチ、データスイッチの接続が切り替えられる。
【0154】
(タイミングダイアグラム)
図27〜図32にタイミング図を示す。図27はGバスからの書き込み/読み出しサイクルのタイミング図、図28はGバスのバースト停止サイクルのタイミング図、図29〜図32は、Gバスのトランザクション停止サイクルのタイミング図である。
【0155】
2.6.PCIバスインターフェース
図33は、PCIバスインターフェース416のブロック図である。
【0156】
PCIバスインターフェース416は、DoEngine内部汎用IOバスであるBバスと、チップ外部IOバスであるPCIバスの間をインターフェースするブロックである。
【0157】
入力ピン設定により、リセット時にPCIバスコンフィギュレーション発行可能な、ホストブリッジ構成と、PCIバスコンフィギュレーションは発行しないターゲット(サテライト)構成とを切り替えることができる。図107は、入力ピン設定を読み込んで、ホストブリッジ構成に設定される場合の例を示す模式図である。ホストブリッジ構成では、スイッチ1111がハイレベルであるとCPU401はその値を読み込んで、ホストブリッジであると判定されれば、コンフィグレーションレジスタ3303の設定を行い、コンフィグレーションサイクルを発生させて、PCIバス上のデバイスのコンフィグレーションレジスタに必要なデータを書き込む。ホストブリッジはコンフィグレーションによってPCIバスに接続された機器の構成を認識し、Do Engineではそれらを利用することができる。
【0158】
一方、図示していないが、ピン1111がローレベルに設定されていれば、ホスト401はDO ENGINE400がターゲット構成であると判定し、コンフィグレーションレジスタ3303へのホストブリッジからの設定を待つ。ターゲットになれば、それ自身はホストブリッジ側の制御部から利用されることになる。
【0159】
DO ENGINEでは、自身のコンフィグレーションレジスタにPCIバスインターフェース3302を介してアクセスできる構成を有しているため、このようにホストブリッジとターゲットのどちらでも動作する。
【0160】
BバスインターフェースのマスタDMAコントローラ3301は、PCIバスシグナルインターフェース3302を介してPCIバスマスタからDoEngine内部のリソースにアクセス要求があった場合に、Bバスマスタとしてこのアクセス要求をBバス内部にブリッジする。
【0161】
更に、このマスタDMAコントローラ3301は、PCIバス上でマッピングされるメモリからDoEngineMemoryへのDMA転送を行う事が出来る。この際、プログラマが意図したBバスDMAと、GバスDMAのアクセスの順番を守って動作させるために、転送先アドレス(bPciAddr[31:0])と、PCIマスターコントローラ3301のID信号(bPciID)を、Bバスとアービトレーションシーケンサに対して、バスリクエストと同時に発行する。
【0162】
マスタDMAコントローラ3301はバスグラント(bPciBGnt_L)を受け取り、バスを使用しデータ転送が終了した時点で、ID信号(bPciID)のアサートを取りやめる。
【0163】
なお、PCIバスは、33MHz,32ビット,PCI2.1準拠とする。
【0164】
2.7.Gバスアービタ
図34は、Gバスアービタ(GBA)406のブロック図である。
【0165】
Gバスのアービトレーションは、中央アービトレーション方式であり、各バスマスタに対して専用のリクエスト信号(g(mastername)Req_L)とグラント信号(g(mastername)Gnt_L)を持つ。図34は、masternameはM1〜M4となっている。Busアービタ406は、Gバス上のバスマスタを4つまでサポートしており、以下のような特徴を持つ。
・アービタ内部のレジスタ3401aの設定によりアービタをプログラミングすることが出来る。レジスタ設定はBバスより行なう。
・すべてのバスマスタを同じ優先権として、公平にバス権を与える公平アービトレーションモードと、いずれかひとつのバスマスタの優先権を上げ、優先的にバスを使用させる優先アービトレーションモードがある。どのバスマスタに優先権を与えるかはレジスタ3401bの設定により決定される。
・優先バスマスタが連続してバスを使用することができる回数を設定することが可能。
・すでにアドレスフェーズを開始したが、データフェーズをまだ開始していないトランザクションについて、そのトランザクションをストップするためのトランザクションストップサイクルをサポート。
・複数のバスマスタにおける順序処理のプログラミングができる(後述)。プログラムされた順序は、レジスタテーブル3401aに格納される。
・GバスマスタとBバスマスタが同一メモリアドレスに順次書き込みを発行した場合に、プログラマの意図したアクセス順序を維持するための機構として、同期ユニットからのマスタID信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【0166】
なお、レジスタへのプログラミングは、Bバスを介してCPU401から行われる。
【0167】
(アービトレーションシーケンサ)
Gバスアービタの中核となるアービトレーションシーケンサ3402a,bは、1つの優先マスタとその他の4つの非優先マスタの間で5つのマスタによるアービトレーションを行なう。4つのバスマスタからのリクエスト信号とグラント信号を、リクエストディスパッチ回路3403とグラントディスパッチ回路3404によって4つの非優先マスタに割り付けることにより、公平アービトレーションモードが実現される。また、4つのバスマスタのうちのひとつを、高優先アービトレーションシーケンサ3402aの優先マスタに割り付けることで、優先アービトレーションモードとして動作する。これらの割り付けは、レジスタ3401a,bの設定にしたがって行われる。これにより、優先バスマスタは、他のマスタより高い確率でバスの使用権を取得することが出来る。
【0168】
さらに、バスの取得機会確率の調整に加え、高優先シーケンサ3402aに割り当てられたマスタは、連続してバスを使用する事が出来、連続して使用出来る回数をプログラマブルなレジスタにより可変する事ができる。これは、バスの占有率を調整出来、ある特定のマスタにより多くバスを使用させる様に出来ることを意味する。
【0169】
(公平アービトレーションモード)
このモードでは、すべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる(ラウンドロビン方式)。例えば、M1からM4までのすべてのバスマスタが同じクロックでリクエストを出した場合は、M1→M2→M3→M4といった順序でバス権が与えられる。M4のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、M1→M2→M3→M4→M1→M2…というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、M4からM1へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【0170】
一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【0171】
(優先アービトレーション)
このモードでは、ひとつのバスマスタ(レジスタ3401bに登録されたバスマスタ)が他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。優先バスマスタ以外のバスマスタの優先順位はすべて同じである。
【0172】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続したリクエストを行う場合、優先バスマスタと他の非優先バスマスタは交互にバス権を得る。
【0173】
非優先バスマスタから他のバスマスタにバス権が移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと、その非優先バスマスタは再びバス権を得ることができない。
【0174】
(トランザクション・ストップ・サイクル)
優先アービトレーションモードにおいて、優先バスマスタがリクエストを出した時、すでに他のバスマスタがアドレスフェーズを開始していても、データフェーズをまだ開始していなければ、そのトランザクションをストップし、優先バスマスタがバス権を得ることができる。ただし、その直前に優先バスマスタがバス権を持っていた場合は、連続したバス権を得ることができる回数を超えることはできない。
【0175】
優先バスマスタのトランザクションが終了した時、中止されたバスマスタがリクエストを出していれば、優先してバス権が与えられる。
【0176】
(優先バスマスタの切り替え)
優先バスマスタの切り替えを行なうには、レジスタ3401bを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時すべて同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【0177】
優先バスマスタの切り替えには十分注意を払う必要がある。優先させるべきバスマスタのDMAが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのDMAの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、DMAが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【0178】
また別の方法として、レジスタ3401bが書き換えられても、ただちには優先バスマスタの切換えを行わず、すべてのバスマスタのバスリクエストがなくなった時点でバスの優先度を切り替える方法も可能である。この場合は、すべての優先度のアービトレーションシーケンサがアイドル状態にあることを示す信号を、各アービトレーションシーケンサからのアイドル信号のORをとって作成し、この信号がアイドル状態の場合にのみ、レジスタに書き込まれた内容を3403、3404のセレクタに反映することにより、切換えのタイミングを制御することができる。
【0179】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行う必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんGバス上に新たなDMAリクエストが発生しないよう、すべてのバスマスタ及びDMAコントローラに対する設定を中止し、その後、Gバスアービタ406内のレジスタに適切な値をセットし、さらに、Gバスアービタ406内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなGバス上へのアクセス及びDMAの起動を行うべきである。
【0180】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【0181】
(順序処理)
図35は、DoEngine400内におけるGバス404を中心とする、Gバス上のバスマスタによるDMAに係るブロック図である。
【0182】
複数のバスマスタが順次に処理を行うことが必要な場合、例えば、メモリ3501上のデータに対して、バスマスタ1により処理Aを行った後、バスマスタ2により処理Bを行い、その処理後のデータをバスマスタ4に送るといった一連の処理を考える。
【0183】
この処理を行うソフトウェア、すなわちCPU401により実行されるプログラムにより、Bバス405を介して、バスアービタ406内のレジスタテーブル3401aに、バスマスタがバスを使用する順序と、バス権の付与の開始条件と、終了条件がセットされる。この例では、
というようにセットする。すなわち、Gバスアービタ406は、それぞれのバスマスタから、開始条件として設定された信号を受けるとそのバスマスタにバス使用権を与え、終了条件として設定された信号を受けるとバス使用権を奪う。
【0184】
ソフトウェアはそれぞれのバスマスタにDMAをセットする。それによって、それぞれのマスタはGバスアービタ404に対してリクエスト(g(mastername)Req_L)を発行する。Gバスアービタ404はレジスタテーブル3401aに登録された順序に従ってバスマスタ1にバス権を与える(gM1Gnt_L)。バスマスタ1はメモリ3501からある単位のデータをリードし、処理Aを行って、バスマスタ1内部のバッファにデータをライトする。バスマスタ1はひとつの単位の処理が終了し、バッファの準備ができたことをgM1BufReady信号によりアービタ406に対して通知する。
【0185】
アービタ406はそれを受け、レジスタテーブル3401aに登録された、バスマスタがバス権を与える条件とバス権を奪う条件にしたがって、バス権をバスマスタ1から奪いバスマスタ2に与える。バスマスタ2はバスマスタ1のバッファのデータをリードし、処理Bを行って、バスマスタ2内部のバッファにデータを格納する。この間にバスマスタ1のバッファが空になるとgM1BufEmptyがアサートされ、アービタ406はバスマスタ2にバス権を与えていたのを取りやめる。バスマスタ2は処理Bを行って、バッファの準備ができるとgM2BufReady信号により通知する。
【0186】
アービタ406はそれを受け、レジスタ3401aの内容にしたがって、今度はバスマスタ4にバス権を与える。バスマスタ4はバスマスタ2のバッファからデータをリードする。バスマスタ2のバッファが空になると、gM2BufEmptyによってアービタ406に通知し、アービタ406はそれを受け、レジスタ3401aの内容に従って再びバスマスタ1にバス権を与え、次のデータの処理を始める。
【0187】
それぞれのバスマスタにセットされたDMAがすべて終了すると、それぞれのバスマスタはプロセッサに割り込みによって通知する。ソフトウェアはすべてのバスマスタからの終了通知がそろったとき、一連の処理が終了したことを知る。
【0188】
以上説明した動作は完全順次モードでの動作であり、順次処理に関わるバスマスタ以外のバスマスタは、バスを使用することができない。この順次処理中でも、順次処理に関係のないバスマスタがバスを使用することを可能にするために優先順次モードが用意されている。これらのモードの切り替えではアービタ406内部のレジスタにプログラミングすることによって行なう。優先順次モードでは、順次処理を行なうバスマスタは優先的にバスを使用できるが、順次処理に関わらないバスマスタであればバスを使用することが許される。順次処理を行なうバスマスタと関わらないバスマスタの間のアービトレーションは、前述した優先アービトレーションモードと同等である。当然、順次処理に係わるバスマスタで、バス権を与えられる条件が満足されずに自分の順番が回ってきていないバスマスタにはバス権は与えられない。
【0189】
(アクセス順序を維持するための機構)
信号stopSpcがアサートされた場合は、Gバスマスタのひとつであるスキャナコントローラ/プリンタコントローラはアービトレーションの対象から除外され、たとえリクエストをアサートしていてもバス使用権を与えられることはない。アービトレーションはこのマスタを除外したマスタ間で行われる。詳細な説明はBバスアービタの節で行なう。
【0190】
(タイミングダイアグラム)
図36〜図39において、Gバスアービトレーションのタイミングを説明する。図36は、連続してバスを使用する回数が、バスマスタ1〜4のすべてについて1に設定されている場合の公平アービトレーションモード(フェアモード)の例である。バスマスタ1による2回目の(タイミング4から出されている)バス要求は、バス要求を出している他のバスマスタがすべて1回ずつ処理されるまで待たされている。
【0191】
図37は、連続してバスを使用する回数が、バスマスタ1についてのみ2であり、他のバスマスタは1に設定されている場合の公平アービトレーションモードの例である。バスマスタ1が出している2回目の(タイミング4から出されている)バス要求は1回目の要求に続いて直ちに許可され、他のバスマスタはその処理がすむまで待たされている。
【0192】
図38は、連続してバスを使用する回数がそれぞれ1ずつであり、バスマスタ1が優先バスマスタと設定されている場合の優先アービトレーションモードの例である。優先バスマスタと非優先バスマスタとは交互にバス使用権が認められるために、バスマスタ1の2回目のバス要求はバスマスタ2のバスの使用後に認められており、バスマスタ4のバス要求は、バスマスタ1の2回目のバスの使用後に認められている。また、バスマスタ2の2回目のバス要求は、バス要求を出している他のすべてのバスマスタ、図38ではバスマスタ1及びバスマスタ4のバス使用が終了した後で認められている。
【0193】
図39は、バスマスタ1からのバス要求により、バスマスタ4のバス要求が許可されているにもかかわらず中断された例である。この場合、バスマスタ1のバス使用が終了すると、バスマスタ2のバス要求に優先してバスマスタ4のバス要求が認められる。
【0194】
2.8.Bバスアービタ
図40は、Bバスアービタ407のブロックである。
【0195】
Bバスアービタ407は、DoEngine内部のIO汎用バスであるBバス405のバス使用要求を受け付け、調停の後、使用許可を選択された一つのマスタに対して与え、同時に2つ以上のマスタがバスアクセスを行う事を禁止する。
【0196】
アービトレーション方式は、3段階のプライオリティを持ち、それぞれのプライオリティに複数のマスタをプログラマブルに割り当てられる構成になっている。割り当ては、それぞれ最大で、最高のプライオリティに3マスタ、中間に7マスタ、最低レベルに3マスタとなる。
【0197】
また、GバスマスタとBバスマスタが、同一メモリアドレスに順次書き込みを発行した場合に、プロブラマの意図したアクセス順序を維持するための機構として、同期ユニットからの、マスタID信号、ストップ信号に基づき、特定のマスタに対し、バス使用許可を与えることを保留する機構を持つ。
【0198】
(アービトレーションシーケンサ)
Bバスアービタは3つのアービトレーションシーケンサ4002,4003,4004から構成される。それぞれ、高優先権、中優先権、低優先権を持ち、それぞれのシーケンサ内に、3,7,3本のバスマスタ用アービトレーションシーケンサが内蔵される。Bバス上のすべてのバスマスタになる可能性のあるユニットからのリクエスト信号とそれらへのグラント信号を、リクエストセレクタとグラントセレクタによって、これらの3つのシーケンサユニットに分配する。この分配は、BBusインタフェース4005内のソフトウェアプログラマブルなレジスタ4005aにより、複数の組み合わせのなかから、一意の組み合わせを選択することが出来る。
【0199】
たとえば、最大7つのマスタのリクエストを中優先アービトレーションシーケンサ4003に接続することにより、7つのマスタ間で公平なアービトレーションが実現される。また、バスマスタのうちのいくつかを、高優先アービトレーションシーケンサ4002に割り付けることで、これらのマスタは他のマスタより、より高い確率でバスの使用権を取得することが出来る。さらに、いくつかのリクエストを低優先シーケンサ4004に接続することで、これらのバスの使用率を低く抑える事が出来る。さらに、バスの取得機会確率の調整に加え、高優先シーケンサ4002に割り当てられたマスタは、連続してバスを使用する事ができ、連続して使用出来る回数をプログラマブルなレジスタ4005aにより可変する事ができる。これは、バスの占有率を調整でき、ある特定のマスタにより多くの時間バスを使用させる様に出来る事を意味する。
【0200】
(公平バスアービトレーション方式)
中優先シーケンサ4003を例にとり、公平アービトレーションの実現方法を説明する。一つのシーケンサに接続されたすべてのバスマスタは同じ優先順位にあり、バス権を与えられる機会は公平である。バスがフリーの時は、一番最初にリクエストを出したバスマスタがバス権を得ることができる(ファーストカムファーストサーブ)。また、複数のバスマスタが同時にリクエストを出した場合は、あらかじめ決められた順序にしたがって順次バス権が与えられる(同時リクエスト発行時ラウンドロビン)。例えば、M1からM7までのすべてのバスマスタが同じクロックでリクエストを出した場合は、M1→M2→M3→M4→M5→M6→M7といった順序でバス権が与えられる。M7のトランザクションの終了時に再びすべてのバスマスタがリクエストを出している場合は、M1→M2→M3→M4→M5→M6→M7→M1→M2というように、同様の順序でバス権を与えていく。一部のバスマスタがリクエストを出している場合は、M7からM1へラウンドラップするとして、最後にバスを使用したマスタにもっとも近い大きい番号を持ったマスタへグラントを与える。
【0201】
(優先アービトレーション)
Bバスインターフェースは、高優先、中優先、低優先の3つのアービトレーションシーケンサが存在する。優先順位をつけたアービトレーションは、複数のバスリクエストを選択的に、高優先、低優先、のアービタに割り振ることにより実現される。
【0202】
たとえば、ひとつのマスタを高優先に割り当て、残りを中優先に割り当てることにより、ひとつのバスマスタが他のバスマスタよりも高い優先権を持つ優先バスマスタになり、他のバスマスタに比べ優先的にバス権が与えられる。同じ優先権のアービトレーションシーケンサに割り当てられたバスマスタの優先順位はすべて同じである。
【0203】
複数のバスマスタがリクエストを出しており、また優先バスマスタが連続してリクエストを行う場合、優先バスマスタと他のバスマスタは交互にバス権を得る。M3が優先マスタでM1,M2,M3,M4がリクエストを出し続けた場合M3→M1→M3→M2→M3→M4→M3→M1の順でバス使用権を与える。
【0204】
また、高優先バスマスタは、アービタ内のプログラマブルなレジスタにあらかじめ設定された回数だけ連続したバス権を得ることができる。連続したバスを使用出来る回数は最大で4回である。
【0205】
優先バスマスタ以外のバスマスタから他のバスマスタにバス権が移ると、そのバスマスタは、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。ひとつのバスマスタが連続してリクエストを行う場合、他にリクエストを行っているバスマスタがいなければ、連続してバス権を得ることができるが、他のバスマスタがリクエストを行っていれば、そのバスマスタはあらかじめ設定された回数だけ連続してバス権を得ることができる。一度バス権が他のバスマスタに移ると、他にリクエストを出しているすべてのバスマスタにバス権を与えた後でないと再びバス権を得ることができない。
【0206】
低優先アービトレーションシーケンサ4004には最大3本のリクエストを割り当てる事が出来る。低優先シーケンサ4004に割り当てられたマスタへは、中優先、高優先シーケンサに割り当てられた、すべてのマスタのリクエストがなくならないと、バスの使用権が与えられない。このシーケンサへのバスマスタの割り当ては十分な注意を持って行われなければならない。
【0207】
(優先バスマスタの切り替え)
優先バスマスタの切り替えを行なうには、アービタ内のレジスタを書き換えればよい。優先バスマスタを選択するレジスタが書き換えられると、その時に実行中のトランザクションの終了を待って、優先バスマスタが切り替えられる。アービタのステートはアイドル状態にもどり、その時点でリクエストを出していたバスマスタは、その時同時にリクエストを出したものとして、あらためてアービトレーションが行われる。
【0208】
切り替えには十分注意を払う必要がある。優先させるべきバスマスタのDMAが終了しないうちに、異なったバスマスタに優先バスマスタを切り替えてしまうと、最初の優先バスマスタのDMAの優先度が下がってしまう。もしも最初の優先バスマスタの優先度を下げたくないのであれば、DMAが終了したのを確認してから優先バスマスタの切り替えを行なう必要がある。
【0209】
優先バスマスタ切り替えを、システムブート時のみでなく、システム稼働中も動的に行なう必要のあるソフトウェアでは、優先バスマスタの切り替えは、いったんBバス上に新たなDMAリクエストが発生しないよう、すべてのバスマスタ及びDMAコントローラに対する設定を中止し、その後、Bバスアービタ407内のレジスタに適切な値をセットし、さらに、Bバスアービタ内のステータスレジスタをチェックし、バスマスタの優先権が切り替わったのを確認した上で新たなBバス上へのアクセス及びDMAの起動を行うべきである。
【0210】
優先バスマスタの動的切り替えは、オペレーティングシステムの実時間保証、タスクの優先順位の設定を変化もしくは、違反させてしまう可能性があり、十分な考慮の上行われなければならない。
【0211】
(アクセス順序制御機構)
Bバスアービタ407はアクセス順序制御機構を含む。アクセス順序制御機構は、同期ユニット4001と、Bバスアービタ407,Gバスアービタ406内に組み込まれたバス使用権発行抑制機構によって実現される。Bバスアービタ407内に組み込まれたバス使用権発行抑制機構は、Gバスアービタのそれと同様に動作する。つまり、stopPci信号が入力された場合は、Pciバスマスタからのバスリクエストが発行され、アービトレーションの結果、このマスタにバスの使用権を与えることが可能な状態でも、バスの使用権発行は行わず、他のマスタへバス使用権をあたえる。具体的には、stopPci信号が入力された場合は、直ちにbPciReq_Lをマスクすることにこれを行う。
【0212】
LANコントローラ414からのバスリクエストおよび、ストップ信号の場合もまったく同様に動作する。図41に同期ユニット4001のブロック図を示す。同期ユニット内には複数のDMAマスタ間すべての組み合わせに関して、それぞれコンペアユニット4101〜4103が接続される、DoEngineでは、Gbus上のDMAマスタはスキャナコントローラ/プリンタコントローラのみ存在する。Bバス上には、DMAPCIユニット、LANユニットの二つが存在する。SBB内のBバスインターフェースはBバス上のバスマスタであるが、メモリには直接アクセスしないので、同期ユニット4001にはIDと転送先アドレスを出力しない。
【0213】
図42に同期ユニット内の一つコンペアユニット(Comparation Unit 1)を以下に示す。他のコンペアユニットも同様の構成を有する。
【0214】
PCIインターフェース416に付属するDMAブロックもしくは、スキャナコントローラ/プリンタコントローラから、同期ユニット4001に対し、DMAライトがプログラミングされた時点で、転送先のアドレスとそのDMAブロック固有のリクエスト信号が通知される。
【0215】
各コンペアユニットは、各DMAブロックからリクエストが出力された時点で、アドレスを内部に持つタイマによる現在時刻とともに記憶する、次に他のDMAブロックから、DMAライトに関するアドレスとリクエストが入力された時点で、コンペアユニットは両アドレスを比較する。一致した場合にはさらに、それぞれのレジスタに格納された時間を比較し、時間的に後からDMAライトの要求を出してきたDMAブロックが接続されたバスのバスアービタに対し、このマスタに対するバス使用強化を与えないようにする。これは、stop(ID)という信号により各バスのバスアービタに通知される。
【0216】
各バスアービタはstop(ID)信号により通知されたマスタに対しては、アービトレーションによるバス使用権の割り当てを行わない。
【0217】
時間が経過し、先にアクセス要求を行ったバスマスタにより当該メモリアドレスへのDMAライトが終了すると、先のマスタは、同期ユニットに対するリクエストを取り下げる、同期ユニットは、2番目にDMAライトの要求を出した、DMAブロックの接続するバスのバスアービタに対し、このDMAブロックへの、バス使用権許可禁止信号の発行をとりさげる。そして、後からDMAライトを行うべきマスタのDMAライトが行われる。
【0218】
双方のDMAライトが終了し、双方のリクエストが取り下げられると、タイマーがリセットされる。タイマーのカウントアップは再度どちらかのマスタからのリクエストが出力された時点で再度行われる。
【0219】
2.9.スキャナコントローラ/プリンタコントローラ
図43は、スキャナコントローラ/プリンタコントローラ及びその周辺の回路のブロック図である。スキャナ/プリンタコントローラは、スキャナおよびプリンタを、GバスまたはBバスにインターフェースするブロックである。以下の3つの機能ブロックから構成される。
1.スキャナコントローラ
スキャナとビデオI/Fで接続され、動作制御およびデータ転送制御を行う。Gバス/BバスI/Fユニット4301AとはIF-バスで接続され、データ転送およびレジスタのリード・ライトが行われる。データ転送はマスタ機能を備える。スキャナコントローラは、DMA要求する際に、転送先アドレス及び転送データ長に基づいてトランスファメモリアドレスのバウンダリが半端でないか判定し、その判定結果に応じてGBusか、あるいはBBusか、いずれを用いてデータを転送するか決定する。その結果、使用すると決定されたバスを要求する。例えば、転送アドレスの下位5ビットが0であれば、4バイトバウンダリに適合する。また、下位7ビットが0であれば16バイトバウンダリに適合する。この場合には、データ長がそれぞれ4バイトあるいは16バイトあれば、GBusの4ビートあるいは16ビートバースト転送が使用可能である。これは、後述するとおり、GBusはこの2通りのバースト転送のみをサポートするである。
【0220】
この条件が満たされなければGBusは使用できないため、BBusを要求して。左記の条件が満たされるまでそこでシングル転送することになる。また、これは、いわゆる2次元DMAと呼ばれる技術に関しても全く同様である。2次元DMAとは、あるメモリ空間をそのまま画像を描く平面としてみなし、その平面上に例えばスキャナから読み込んだ画像を張り付けるといった用途に用いられる手法である。2次元DMAの場合には、転送される画像データの転送先アドレスはかならずしも連続しておらず、転送先のメモリ空間中における画像の位置に対応したアドレスとなる。このような2次元DMAでも全く同様に、GBusとBBusとが使い分けられる。
【0221】
以上のGBUs/BBusの使い分けは、プリンタコントローラがマスタとして機能する場合にも全く同様である。
2.プリンタコントローラ
プリンタとビデオI/Fで接続され、動作制御およびデータ転送制御を行う。Gバス/BバスI/Fユニット4301BとはI/F-バスで接続され、データ転送およびレジスタのリード・ライトが行われる。データ転送はマスタとスレーブの両機能を備える。
3.Gバス/BバスI/Fユニット
スキャナコントローラ4302およびプリンタコントローラ4303をGバスまたはBバスに接続するためのユニットである。スキャナコントローラ4302とプリンタコントローラ4302にそれぞれ独立して接続され、GバスとBバスに接続する。
4.CPバス
スキャナとプリンタの、画像データおよび水平、垂直同期のための同期信号を直結するためのバスである。
【0222】
2.9.1.スキャナコントローラ
図44にスキャナコントローラ4302のブロック図を示す。スキャナコントローラ4302は、ビデオI/Fによってスキャナと接続し、Gバス/BバスI/Fユニット(scc GBI)4301Aにインターフェースするブロックである。Gバス/BバスI/Fユニット(scc GBI)4301Aには、sccI/F-バスを介してインターフェースされる。大別して以下のブロックから構成される。
1.スキャナデバイスI/F4401
スキャナのビデオI/Fと信号の入出力をおこなう入出力ポート。
2.スキャナビデオクロックユニット4402
スキャナのビデオクロックで動作するユニット。
3.スキャナ画像データFIFOコントローラ4403
画像データ転送用のFIFOを制御する。
4.スキャナコントローラコントロールレジスタユニット4404
スキャナコントローラ全体を制御するためのレジスタ。
5.IRQコントローラ4406
スキャナコントローラ(Scc)内部で発生する割込み信号を制御する。
6.メモリフィルモードコントローラ4405
レジスタに設定された固定データをメモリに対して転送するモードをコントロールする。スキャナからの画像データと選択的に切り替えをおこなう。
7.FIFO(FIFO_SCC)4407
スキャナからのビデオデータを出力する際に、出力先のデバイスがビデオデータと非同期の可能性がある場合に用いられるFIFOである。
【0223】
なお、スキャナから入力する画像データの種類は、
1.RGB各8ビットのカラー多値データ
2.8ビット白黒多値データ
3.1ビット白黒2値データ
などが含まれる。
【0224】
次に、スキャナコントローラを構成する各ブロックの概要を説明する。
【0225】
[1.スキャナデバイスI/Fの概要]
図45に、スキャナデバイスI/F4401のブロック図を示す。スキャナデバイスI/Fは、スキャナユニットのスキャナビデオI/F4501との間で信号を入出力する入出力ポートである。スキャナビデオI/Fからの入力ビデオ信号SVideoR[7:0], SVideoG[7:0], SVideoB[7:0]の各信号を、スキャナコントローラコントロールレジスタ4404からのVDInvt信号に応じて、レベル反転するかどうかを切り替えることが可能である。
【0226】
[2.スキャナビデオクロックユニットの概要]
図46に、スキャナビデオクロックユニット4402のブロック図を示す。スキャナビデオクロックユニット4402は、スキャナからのビデオクロックで動作するブロックである。以下のブロックから構成される。
1.スキャナビデオデータマスク4601
スキャナからの画像データに対してデータマスクを行うブロックである。マスクされたデータはレジスタに設定された値のデータとなる。
2.スキャナビデオ同期コントロールユニット4602
スキャナからのビデオクロック, VSYNC, HSYNCの信号から、画像データを取り込むタイミング信号等を生成するブロックである。画像データの水平方向、垂直方向のデータ数とライン数を管理する。
3.ビデオデータ幅コンバータ
スキャナから入力した画像データを64ビット幅のデータにパッキングして変換するブロックである。
【0227】
(スキャナビデオデータマスクの概要)
図47にスキャナビデオデータマスク4601のブロック図を示す。スキャナビデオデータマスク4601は、スキャナから入力する画像データに対してピクセル単位でマスクを行う。マスクされた画像データはレジスタにより設定された値となる(RDMask[7:0], GDMask[7:0], BDMask[7:0])。
【0228】
(スキャナビデオ同期コントロールユニットの概要)
図48にスキャナビデオデータマスク4602のブロック図を示す。スキャナビデオ同期コントロールユニット4602は、スキャナから入力される画像データの垂直同期信号(SVSYNC)、水平同期信号(SHSYNC)、画像データ同期クロック(GTSVCLK)により、取り込む画像データのイネーブル信号(IVE)を生成する。また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。さらに、設定量の画像データ取り込みを終了したタイミングでの状態信号(PENDP)を生成する。
【0229】
ラインカウンタ4801は副走査方向の遅延と取り込みライン数を管理して、画像読み取り有効ラインの垂直同期信号(EH)を生成する。ピクセルカウンタ4802は主走査方向の画像取り込み遅延と取り込み画素数を管理する。ページカウンタ4803は入力する画像データをページ単位で管理する。設定されたページ数分の画像データ入力を終了すると、終了信号(ALLPEND)を生成する。
【0230】
(スキャナ ビデオデータ幅コンバータ4603の概要)
図49にスキャナビデオデータ幅コンバータ4603のブロック図を示す。これは、スキャナから入力する画像データを64ビット幅にならべるユニットである。ならべたデータはFIFOに64ビットデータで書き込まれる。入力できる画像データのタイプは、RGB各8ビットのカラー画像データ、多値8ビットの白黒画像データ、2値1ビットの白黒画像データの3種類である。スキャナコントローラコントロールレジスタ4404においてモード設定される。モードとしては、RGBカラー画像データをメモリ内に24ビットでならべるモードと、1バイト付加して32ビットでならべるモードとを備える。3種類の画像データは以下の信号ラインから入力される。
1.RGB各8ビットのカラー画像データ … R[7:0], G[7:0], B[7:0]
2.多値8ビットの白黒画像データ … R[7:0]
3.2値1ビットの白黒画像データ … R7
64ビットデータへのならべかたとメモリ上でのならびかたは以下のとおりである。
【0231】
1.RGB各8ビットのカラー画像データ(24ビット格納モード)
第1ピクセルR8ビット→ビット63−56
第1ピクセルG8ビット→ビット55−48
第1ピクセルB8ビット→ビット47−40
第2ピクセルR8ビット→ビット39−32
第2ピクセルG8ビット→ビット31−24
第2ピクセルB8ビット→ビット23−16
第3ピクセルR8ビット→ビット15−8
第3ピクセルG8ビット→ビット7−0
メモリ上でのならびは、図50の通りである。
【0232】
2.RGB各8ビットのカラー画像データ(32ビット格納モード)
第1ピクセルR8ビット→ビット63−56
第1ピクセルG8ビット→ビット55−48
第1ピクセルB8ビット→ビット47−40
第2ピクセルR8ビット→ビット31−24
第2ピクセルG8ビット→ビット23−16
第2ピクセルB8ビット→ビット15−8
メモリ上でのならびは、図51の通りである。
【0233】
3.多値8ビットの白黒画像データ
第1ピクセル8ビット→ビット63−56
第2ピクセル8ビット→ビット55−48
第3ピクセル8ビット→ビット47−40
第4ピクセル8ビット→ビット39−32
第5ピクセル8ビット→ビット31−24
第6ピクセル8ビット→ビット23−16
第7ピクセル8ビット→ビット15−8
第8ピクセル8ビット→ビット7−0
メモリ上でのならびは、図52の通りである。
【0234】
4.2値1ビットの白黒画像データ
第1ピクセル1ビット→ビット63
第2ピクセル1ビット→ビット62
第3ピクセル1ビット→ビット61
第4ピクセル1ビット→ビット60
:
第61ピクセル1ビット→ビット3
第62ピクセル1ビット→ビット2
第63ピクセル1ビット→ビット1
第64ピクセル1ビット→ビット0
メモリ上でのならびは、図53の通りである。
【0235】
次に、各パッキングユニットについて説明する。
【0236】
図54は、BW8パッキングユニット4901により、多値8ビットの白黒画像データを64ビット幅に変換する際のタイミング図である。スキャナからの8ビット白黒画像データR[7:0]は、信号VEがハイレベルになると取り込まれ、1ピクセルずつ信号LP0〜LP7に同期して64ビットラッチにラッチされる。8画素分揃うと、信号LP64に同期して、ラッチされた8画素64ビットが信号BW8[63:0]として出力される。
【0237】
図55は、シフトレジスタ4902により2値白黒画像データを64ビット幅に変換する際の画像データ入力のタイミング図である。スキャナからの2値白黒画像データR7(SVIDEOR0)は、信号VEがハイレベルになると取り込まれ、1ビットずつシフトレジスタによりシフトされて、64ビット取り込まれると。信号SVLATCH64に同期して、信号BW1[63:0]として出力される。
【0238】
図56は、RGBパッキングユニット4903により、RGB各8ビット(全24ビット)の画像データを64ビット幅に変換する際のタイミング図である。また、図57は、RGBパッキングユニット4903のブロック図である。図において、スキャナビデオデータマスク4601から入力された画像データR[7:0],G[7:0],B[7:0]は、24ビットデータラッチ5701A,Bに入力される。データラッチA,Bは、クロックCLKを2分の1に分周した、互いに逆位相のラッチ信号LP0,LP1に同期してそれぞれ入力される24ビットデータをラッチする。データラッチ5701A,Bにラッチされたデータは、48→32ビットデータセレクタ5702に入力信号RGBHT[47:0]として入力され、2ビットの選択信号LP[3:2]に応じて32ビット信号DATA[31:0]として出力される。出力の仕方は、選択信号の値に応じて3通りある。まず第1番目は、入力信号RGBHT[47:16]を出力信号DATA[31:0]とする方法である。第2番目は、入力信号RGBHT[15:0]を出力信号DATA[31:16]とし、入力信号RGBHT[47:32]を出力信号DATA[15:0]とする方法である。第3番目は、入力信号RGBHT[31:0]を出力信号DATA[31:0]とする方法である。
【0239】
データラッチ5701A,Bに、ラッチ信号に同期させて交互に24ビット画像データをラッチし、上記3通りの選択の仕方を順に切り換えることで、データセレクタ5702からの出力は、24ビット/ピクセルのデータを32ビットにまとめたデータとなる。ただし、上記第3の方法でセレクタ5702のデータが選択された後は、データセレクタに入力された2つのピクセル分のデータは両方とも更新されねばならない。そこで、図56に示されている通り、選択信号SELUL[3:2]は1クロック分遅延される。
【0240】
このようにデータセレクタ5702で32ビット幅に一旦変換されたデータは、データラッチ5740A,Bに交互にラッチされ、データラッチ5704Bの内容が更新されたタイミング、すなわちラッチ信号SELUL1がハイレベルになるタイミングで、64ビット幅に変換されたデータとして出力される。
【0241】
[3.スキャナ画像データ転送FIFOコントローラ4403の概要]
図58に、スキャナ画像データ転送FIFOコントローラ4403のブロック図を示す。このブロックは、スキャナから入力された画像データをGバスもしくはBバスを介して転送するためのバッファとしてのFIFO5801と、そのFIFO5801をコントロールする回路から構成されている。FIFOとしては、容量512バイト(64ビット×64)のFIFOを備える。FIFOのデータ出力は、スキャナFIFOライトリードアービタ5802が、FIFO5801のエンプティフラグ(EF)を監視しながら制御する。FIFOのデータ入力はスキャナビデオクロックユニット4402からの要求信号(WREQ)によりおこなわれる。
【0242】
[4.スキャナコントローラコントロールレジスタ4404の概要]
図59に、スキャナコントローラコントロールレジスタ4404のブロック図を示す。このブロックは、スキャナコントローラ内部を制御するレジスタを備えたブロックである。内部のレジスタは以下のとおりである。
1.スキャナ・コントローラ・パワー・マネージメント・コントロールレジスタ2.スキャナコントローラ・コントロールレジスタ
3.スキャナ・コントローラ・割り込み要因ステータスレジスタ
4.スキャナ・コントローラ・割り込み要因マスクレジスタ
5.スキャナ副走査マスクライン数設定レジスタ
6.スキャナ主走査マスクピクセル数設定レジスタ
7.スキャナ副走査ライン数設定レジスタ
8.スキャナ副走査ライン数カウンタ読み出しレジスタ
9.スキャナ副走査ピクセル数設定レジスタ
10.スキャナ主走査ピクセル数カウンタ読み出しレジスタ
11.スキャン・ページ数設定レジスタ
12.スキャン・ページ数カウンタ読み出しレジスタ
13.スキャナ・デバイス・コントロール・レジスタ
14.スキャナ・デバイス・ステータス・レジスタ
15.スキャナ・ビデオ・マスクデータ・レジスタ
16.メモリ・フィル・データ・レジスタ
[5.IRQコントローラ4406の概要]
図60に、IRQコントローラ4406のブロック図を示す。このブロックは、スキャナコントローラ内で発生する割り込み信号を管理する。割り込み発生要因には次のようなものがある。
1.設定されたページ分の画像データを入力終了(ALLEND)
2.1ページ分の画像データを入力終了(PageEnd)
3.スキャナからのSPRDY信号の立ち上がり(false→true)(INSPRDY)
4.スキャナからのSPRDY信号の立ち下がり(true→false)(INSPRDY)
5.スキャナからのSVSYNC信号の立ち上がり(false→true)(INSVSYNC)
6.スキャナからのSVSYNC信号の立ち下がり(true→false)(INSVSYNC)
7.画像データFIFOのEMPTY信号の立ち上がり(false→true)(EMPTY)
8.画像データFIFOのEMPTY信号の立ち下がり(true→false)(EMPTY)
9.画像データFIFOのFULL信号の立ち上がり(false→true)(FULL)
10.画像データFIFOのFULL信号の立ち下がり(true→false)(FULL)
11.画像データFIFOにオーバーライトが発生(FOW)
上記の割り込み要因に対応するフラグ情報(SCIRQ[31:21])をスキャナコントローラコントロールレジスタ4406に出力する。スキャナコントローラコントロールレジスタ4406から、各割り込み要因に対するマスクビット(SCIMask[31:21])とクリア信号(SCICLRP[31:21])とが入力される。各割り込み要因の論理和をintSccに出力する。
【0243】
[6.メモリフィルモードコントローラ4405の概要]
図61にメモリフィルモードコントローラ4405のブロック図を示す。このブロックは、レジスタに設定された固定データをGBIを介してメモリに転送するモードを制御する。このモード設定はMemfill信号によりおこなわれる。固定データの転送モード指定がなされると、sccGBIに出力されるデータは、レジスタに設定されたデータ(MFData[31:0])が選択される。また、sccGBIにデータ転送するタイミング信号(sccWrite)はこのブロック内で生成される。
【0244】
(sccIF−バス)
sccIF−バスは、Gバス/BバスI/Fユニット4301Aとスキャナコントローラ4302とを接続するローカルなバスである。このバスに含まれる信号には次のようなものである。なお、信号の入出力は、スキャナコントローラからGバス/BバスI/Fユニット(GBI)に出力する信号をOUT, Gバス/BバスI/Fユニット(GBI)からスキャナコントローラに入力する信号をINで示す。なお、IF-バスはスキャナコントローラとプリンタコントローラに対して同一規定とするため、スキャナコントローラのサポートしない機能のための信号も記述する。基本クロックはBバスのBclkを使用する。
・sccRst0_L :IN
この信号により、スキャナコントローラ内部のFIFOを初期状態に戻す。
・sccDataOut[63:0] :OUT
スキャナコントローラからGバス/BバスI/Fユニット(GBI)に出力される64ビットのデータバスである。スキャナコントローラがデータ転送動作する場合に画像データが転送される。
・sccWrite :OUT
スキャナコントローラがデータ転送動作するときの、Gバス/BバスI/Fユニット(GBI)へのライト信号である。Gバス/BバスI/Fユニットは、sccWrite信号がアサートされているBclkの立ち上がりで、sccDataOut[63:0]を取り込む。sccWrite信号をアサートし続けることで、1クロック単位でデータがライトできる。・sccWriteEnable :IN
スキャナコントローラがデータ転送動作時における、Gバス/BバスI/Fユニット(GBI)へのライト信号である。Gバス/BバスI/Fユニット(GBI)から出力される。Bclkの立ち上がりで、sccWriteEnable信号がアサートされていれば、次のクロックの立ち上がりで、ライト可能であることを示す。sccWrite信号のアサートは、sccWriteEnable信号を確認して行う。
・sccRegAddr[31:2] :IN
Gバス/BバスI/Fユニット(GBI)からスキャナコントローラ内部のレジスタにアクセスするさいのレジスタアドレスバスである。sccRegStart_Lアサートと同時に有効となり、スキャナコントローラ内部レジスタへのアクセスであれば、sccRegAck_L信号で応答するまで有効である。
・sccRegbyteEn[3:0] :IN
Gバス/BバスI/Fユニット(GBI)から出力されるsccRegDataIn[31:0]のバイトイネーブル信号である。sccRegStart_Lアサートと同時に有効となり、sccRegAck_L信号で応答するまで有効である。この信号で示された有効なバイトのみレジスタへの書き込みを行う。内部レジスタからの読み出し時は、この信号は無視し、全バイト出力する。この信号の各ビットとsccRegDataIn[31:0]のバイトとの対応は次の通りである。
sccRegbyteEn: 3 2 1 0
sccRegDataIn: [31:24] [25:16] [15:8] [7:0]
・sccRegStart_L :IN
Gバス/BバスI/Fユニット(GBI)からスキャナコントローラ内部のレジスタにアクセスする際のアクセス要求信号である。“Low”でレジスタのアクセス要求を示す。sccRegAddr[31:2]信号、sccRegRdNotWr信号とともにアサートされ、Bclk1クロック分だけアサートされる。スキャナコントローラが、このアクセスに対するsccRegAck_Lを返さない限り、次のアクセスのアサートはされない。
・sccRegDataOut[31:0] :OUT
Gバス/BバスI/Fユニット(GBI)からスキャナコントローラ内部のレジスタをリードアクセスする場合の32ビットデータバスである。sccRegAck_L信号がアサートされているときに有効となる。
・sccRegDataIn[31:0] :IN
Gバス/BバスI/Fユニット(GBI)からスキャナコントローラ内部のレジスタをライトアクセスする場合の32ビットデータバスである。sccRegStart_Lアサートと同時に有効となり、スキャナコントローラ内部レジスタへのアクセスであれば、sccAck_L信号で応答するまで有効である。
・sccRegRdNotWr :IN
Gバス/BバスI/Fユニット(GBI)からスキャナコントローラ内部のレジスタにアクセスするさいのアクセス方向(リードまたはライト)を示す信号である。”High”でスキャナコントローラ内部レジスタの内容がsccRegDataOut[31:0]に読みだされ、”Low”でsccRegDataIn[31:0]の内容がスキャナコントローラ内部レジスタに書き込まれる。sccRegStart_Lアサートと同時に有効となり、スキャナコントローラ内部レジスタへのアクセスであれば、sccRegAck_L信号で応答するまで有効である。
・sccRegAck_L :OUT
スキャナコントローラ内部のレジスタアクセスが完了したことを示す信号である。スキャナコントローラからGバス/BバスI/Fユニット(GBI)へ出力される。Bclk1クロック分だけアサートされる。sccRegReq_L信号がアサートされた次のクロックからセンスされる。
【0245】
なお、信号sccRst1_L, sccバイトEn[7:0], sccRead, sccDataIn[63:0]は、IFバスに含まれているものの、スキャナコントローラでは未使用である。
【0246】
図62及び図63は、上述の信号のタイミングの一例を示すタイミングダイアグラムである。図62はスキャナコントローラ4302からデータを読み出してDMA転送する際のタイミングであり、図63は、スキャナコントローラ4302の内部レジスタに対して読み出しあるいは書き込みを行うタイミングである。
【0247】
(パワーマネジメント)
スキャナコントローラ内部では、スキャナ・コントローラ・パワー・マネジメント・コントロールレジスタ(0X1B005000)の設定に応じたビデオクロック(SVCLK)のゲートコントロールを行い、それによりパワーマネージメントを行う。パワーマネジメントユニット(PMU)409に出力するPMステート信号(sccPmStat[1:0])の値は、Gバス/BバスI/Fユニット4301Aから入力されるsccDmaPmState[1:0]の状態とクロックの状態とを合わせて決定される。sccPmState[1:0]は図64のとおりである。
【0248】
図64において、sccDmaPmState[1:0]は、スキャナのGバス/BバスインターフェースGBI_sccのパワー消費状態を示している。GBI_secにはパワー消費状態00〜11の4段階がある。この状態信号sccDmaPmState[1:0]は、GBI_sccからスキャナコントローラへ出力されている。
【0249】
また、スキャナコントローラのパワー消費状態は2段階あり、内部信号SPStatで示される。
【0250】
信号sccPmstate[1:0]は、GBI_sccとスキャナコントローラの2つの状態をあわせた状態を示している。この信号がシステムのパワーマネージメントユニットに出力される。すなわち、スキャナコントローラの電力消費状態は4段階でパワーマネジメントユニットに伝えられる。その段階は信号sccPmstate[1:0]の値で示される。値00が最低レベルであり、1増えるごとに示される電力消費量は大きくなる。
【0251】
(スキャナコントローラコアインターフェース)
図65は、スキャナコントローラ4302における、上述した各ブロックを含むコア部分と、外部バスやスキャナとの間で入出力される信号をまとめた図である。このように、スキャナコントローラ4302は、システムバスブリッジ402との間をGバスにより接続され、IOデバイスやパワーマネジメントデバイス及びシステムバスブリッジとの間をBバスにより接続され、プリンタコントローラとの間をCPバスで接続され、Gバス/BバスI/Fユニットとの間をI/Fバスにより接続されている。
【0252】
2.9.2.プリンタコントローラ
図66にプリンタコントローラ4303のブロック図を示す。プリンタコントローラはビデオI/Fによってプリンタと接続し、Gバス/BバスI/Fユニットにインターフェースするブロックである。大別して以下のブロックから構成される。1.プリンタデバイスI/F6601
プリンタビデオI/FおよびオプションコントローラI/Fと信号の入出力をおこなう入出力ポートである。
2.プリンタビデオクロックユニット6602
プリンタのビデオクロックで動作するユニットである。
3.プリンタ画像データFIFOコントローラ6603
画像データ転送用のFIFOを制御する。
4.プリンタコントローラコントロールレジスタユニット6604
プリンタコントローラ全体を制御するためのレジスタユニットである。
5.IRQコントローラ6605
プリンタコントローラ(Prc)内部で発生する割込み信号を制御する。
6.プリンタコマンド/ステータスコントロールユニット6606
ビデオI/Fを介してプリンタとのコマンド/ステータス送受信を制御する。
7.オプションコントローラコントロールユニット6607
プリンタオプションコントローラを制御するユニットである。
8.FIFO(FIFO_PRC)6608
プリンタへとビデオデータを出力する際に、プリンタがビデオデータと非同期の可能性がある場合に用いられるFIFOである。
【0253】
プリンタへ出力する画像データの種類は次の5種類である。
1.RGB各8ビットのカラー多値データ(点順次)
2.8ビット白黒多値データ
3.1ビット白黒2値データ
4.CMYK各1ビットのカラーデータ(面順次)
5.CMYK各8ビットのカラーデータ(面順次)
次に、プリンタコントローラを構成する各ブロックの概要を説明する。
【0254】
[1.プリンタデバイスI/Fの概要]
図67にプリンタデバイスI/F6601のブロック図を示す。このブロックは、プリンタビデオI/FおよびオプションコントローラI/Fから信号を入出力する入出力ポートである。PビデオR[7:0], PビデオB[7:0]の各信号はVDInvt信号により、出力信号をレベル反転するかどうかを切り替えることが可能である。
【0255】
[2.プリンタビデオクロックユニットの概要]
図68にプリンタビデオクロックユニット6602のブロック図を示す。このブロックは、プリンタからのビデオクロックで動作し、以下のブロックから構成される。
1.プリンタビデオデータマスク6801(DFF8ENMask)
プリンタへの画像データに対して、データマスクを行うブロック。マスクされたデータはレジスタに設定された値のデータとなる。
2.プリンタビデオ同期コントロールユニット6802(Prc_syncユニット)
プリンタからのビデオクロック, VSYNC, HSYNCの信号から、画像データを出力するタイミング信号等を生成するブロック。画像データの水平方向、垂直方向のデータ数とライン数を管理する。
3.プリンタ ビデオデータ幅コンバータ6803(pvdwconv)
IFバスからの64ビット幅で送られてくる画像データを、モードにより、RGB24ビット、白黒8ビット、白黒1ビットのデータに変換するブロック。モード設定はレジスタにより行う。
【0256】
(プリンタビデオデータマスク)
図69にプリンタビデオデータマスク6801のブロック図を示す。このブロックは、プリンタへ出力する画像データに対して、ピクセル単位でマスクを行う。マスクされた画像データはレジスタに設定された値となる(RDMask[7:0], GDMask[7:0], BDMask[7:0])。
【0257】
(プリンタビデオ同期コントロールユニット)
図70にプリンタビデオ同期コントロールユニット6802のブロック図を示す。このブロックは、プリンタへ出力する画像データの垂直同期信号(TOP)、水平同期信号(INPHSYNC)、画像データ同期クロック(GTVCLK)により、出力する画像データのイネーブル信号(VDOEN)、プリンタ画像データ転送FIFOコントローラ6603にデータの要求をする信号(RREQ)を生成する。
【0258】
また、画像データの主走査方向の遅延、取り込みピクセル数、副走査方向の遅延、取り込みライン数を管理する。ラインカウンタ7001は設定量の画像データ出力を終了したタイミングでの状態信号(PENDP)を生成する。また、副走査方向の遅延と出力ライン数を管理して、画像出力有効ラインの垂直同期信号(EH)を生成する。ピクセルカウンタ7002は主走査方向の画像出力遅延と出力画素数を管理する。ページカウンタ7003は出力する画像データをページ単位で管理する。設定されたページ数分の画像データ出力を終了すると、終了信号(ALLPEND)を生成する。
【0259】
(プリンタ ビデオデータ幅コンバータ)
図71にビデオデータ幅コンバータ6803のブロック図を示す。このブロックは、GBI(Gバス/BバスI/F)から入力する64ビット幅のデータを画像データの形式に変換するユニットである。出力できる画像データのタイプは次の3種類。RGB各8ビットのカラー画像データ、多値8ビットの白黒画像データ、2値1ビットの白黒画像データである。RGB各8ビットのカラー画像データは24ビット単位でメモリ上に格納されている場合(24ビットモード)と、24ビットに1バイトデータが付加されて32ビット単位でメモリに格納されている場合(32ビットモード)の2つのモード出力をサポートする。このモードは、プリンタコントローラコントロールレジスタ6604においてモード設定される。3種類の画像データは以下の信号ラインへ出力される。
1.RGB各8ビットのカラー画像データ … IR[7:0], IG[7:0], IB[7:0]
2.多値8ビットの白黒画像データ … IR[7:0]
3.2値1ビットの白黒画像データ … IR7
64ビットデータのメモリ上でのならびかたは以下のとおりとなる。
【0260】
1.RGB各8ビットのカラー画像データ(24ビットモード)
第1ピクセルR8ビット→ビット63−56
第1ピクセルG8ビット→ビット55−48
第1ピクセルB8ビット→ビット47−40
第2ピクセルR8ビット→ビット39−32
第2ピクセルG8ビット→ビット31−24
第2ピクセルB8ビット→ビット23−16
第3ピクセルR8ビット→ビット15−8
第3ピクセルG8ビット→ビット7−0
この場合、メモリ上でのならびは、図72に示した通りとなる。
【0261】
2.RGB各8ビットのカラー画像データ(32ビットモード)
第1ピクセルR8ビット→ビット63−56
第1ピクセルG8ビット→ビット55−48
第1ピクセルB8ビット→ビット47−40
第2ピクセルR8ビット→ビット31−24
第2ピクセルG8ビット→ビット23−16
第2ピクセルB8ビット→ビット15−8
この場合、メモリ上でのならびは、図73に示した通りとなる。
【0262】
3.多値8ビットの白黒画像データ
第1ピクセル8ビット→ビット63−56
第2ピクセル8ビット→ビット55−48
第3ピクセル8ビット→ビット47−40
第4ピクセル8ビット→ビット39−32
第5ピクセル8ビット→ビット31−24
第6ピクセル8ビット→ビット23−16
第7ピクセル8ビット→ビット15−8
第8ピクセル8ビット→ビット7−0
この場合、メモリ上でのならびは、図74に示した通りとなる。
【0263】
4.2値1ビットの白黒画像データ
第1ピクセル1ビット→ビット63
第2ピクセル1ビット→ビット62
第3ピクセル1ビット→ビット61
第4ピクセル1ビット→ビット60
:
第60ピクセル1ビット→ビット4
第61ピクセル1ビット→ビット3
第62ピクセル1ビット→ビット2
第63ピクセル1ビット→ビット1
第64ピクセル1ビット→ビット0
この場合、メモリ上でのならびは、図75に示した通りとなる。
【0264】
次に、プリンタビデオデータ幅コンバータを構成するブロックについて説明する。
【0265】
(RGBoutユニット7101)
図76にRGBoutユニット7101のブロック図を示す。このブロックは24ビットモードでパックされた64ビット幅のデータをRGB各8ビットのカラー画像データに変換するユニットである。
【0266】
[3.プリンタ画像データ転送FIFOコントローラの概要]
図77にプリンタ画像データ転送FIFOコントローラ6603のブロック図を示す。このブロックは、プリンタへ出力する画像データをGBI(Gバス/BバスI/F)を介して転送するためのバッファとしてのFIFOと、そのFIFOをコントロールする回路でらう。容量512バイト(64ビット×64)のFIFO7701を備える。FIFOのデータ入力は、プリンタFIFOライトリードアービタ7702がFIFO7701のフルフラグ(FF)を監視しながら制御する。FIFOのデータ出力はプリンタビデオクロックユニット6602からの要求信号(RREQ)によりおこなわれる。
【0267】
[4.プリンタコントローラコントロールレジスタユニット]
図78にプリンタコントローラコントロールレジスタ6604のブロック図を示す。このブロックは、プリンタコントローラ内部を制御するレジスタを備えたブロックである。内部のレジスタは以下のとおりである。
1.プリンタ・パワー・マネージメント・コントロールレジスタ
2.プリンタ・コントローラ・コントロールレジスタ
3.プリンタ・コントローラ・割り込み要因ステータスレジスタ
4.プリンタ・コントローラ・割り込み要因マスクレジスタ
5.プリンタ副走査マスクライン数設定レジスタ
6.プリンタ主走査マスクピクセル数設定レジスタ
7.プリンタ副走査ライン数設定レジスタ
8.プリンタ副走査ライン数カウンタ読み出しレジスタ
9.プリンタ主走査ピクセル数設定レジスタ
10.プリンタ主走査ピクセル数カウンタ読み出しレジスタ
11.プリント・ページ数設定レジスタ
12.プリント・ページ数カウンタ読み出しレジスタ
13.プリンタ・デバイス・コントロール・レジスタ
14.プリンタ・デバイス・ステータス・レジスタ
15.プリンタ・シリアル・コマンド・レジスタ
16.プリンタ・シリアル・ステータス・レジスタ
17.オプション・コントローラ・TX・レジスタ
18.オプション・コントローラ・RX・レジスタ
19.プリンタ・ビデオ・マスクデータ・レジスタ
20.4階調出力レベル設定レジスタ
21.16階調出力レベル設定レジスタ1
22.16階調出力レベル設定レジスタ2
23.16階調出力レベル設定レジスタ3
24.16階調出力レベル設定レジスタ4
[5.IRQコントローラ]
図79及び図80にIRQコントローラ6605のブロック図を示す。このブロックは、プリンタコントローラ内で発生する割り込み信号を管理する。割り込み要因から、割り込みを発生させる。各割り込み要因に対してマスク機能をもち、個別にクリアすることができる。割り込み要因は以下のとおりである。
1.画像データ転送全ページ終了(ALLPEnd)
2.画像データ転送1ページ終了(PageEnd)
3.シリアルステータス1バイト受信完了(INPSBSY)
4.シリアルコマンド1バイト送信完了(EndCBSY)
5.PPRDY信号立ち上がり(false→true)(INPPRDY)
6.PPRDY信号立ち下がりtrue→false)(INPPRDY)
7.RDY信号立ち上がり(false→true)(INRDY)
8.RDY信号立ち下がり(true→false)(INRDY)
9.PFED信号立ち上がり(false→true)(INPFED)
10.PFED信号立ち下がり(true→false)(INPFED)
11.SPCHG信号立ち上がり(false→true)(INSPCHG)
12.SPCHG信号立ち下がり(true→false)(INSPCHG)
13.PDLV信号立ち上がり(false→true)(INPDLV)
14.PDLV信号立ち下がり(true→false)(INPDLV)
15.TOPR信号立ち上がり(false→true)(INTOPR)
16.TOPR信号立ち下がり(true→false)(INTOPR)
17.CCRT信号立ち上がり(false→true)(INCCRT)
18.CCRT信号立ち下がり(true→false)(INCCRT)
19.VSREQ信号立ち上がり(false→true)(INPVSYNC)
20.VSREQ信号立ち下がり(true→false)(INPVSYNC)
21.オプションコントローラ TX送信&RX受信完了
22.画像データ転送FIFOのEMPTY信号の立ち上がり
23.画像データ転送FIFOのEMPTY信号の立ち下がり
24.画像データ転送FIFOのFULL信号の立ち上がり
25.画像データ転送FIFOのFULL信号の立ち下がり
26.画像データ転送FIFOにオーバーリードが発生(EERDOut)
上記の割り込み要因に対応するフラグ情報(PCIRQ[31:6])をプリンタコントローラコントロールレジスタ6604に出力する。プリンタコントローラコントロールレジスタ6604から、各割り込み要因に対する、マスクビット(PCIMask[31:6])とクリア信号(PCICLRP[31:6])を入力する。各割り込み要因の論理和がintPrcに出力する。
【0268】
[6.プリンタコマンド/ステータスコントロールユニット]
図81に、プリンタコマンド/ステータスコントロールユニット6606のブロック図を示す。このブロックは、プリンタを制御するためのシリアルコマンド/ステータスを送受信するブロックである。
【0269】
シリアルコマンドとしては、コマンドを送信している期間をあらわすINPCBSY信号、シリアルコマンドの同期クロックであるINPCCLK信号、シリアルコマンドINPSRCMD信号が生成される。
【0270】
シリアルステータスとしては、ステータスが送信されている期間を示すINPSBSY信号、シリアルステータスINPSRSTS信号が入力されて、8ビットのステータスPSRSTAT[7:0]を出力する。シリアルステータスを入力するための同期クロックはプリンタから出力されるINPPCLK信号、または、本ブロックで生成されるPCCLK信号のどちらかを選択可能である。選択はPSRCLKMode信号によりなされる。
【0271】
[7.オプションコントローラコントロールユニット]
図82に、オプションコントローラコントロールユニット6607のブロック図を示す。このブロックは、オプションコントローラに対して、送信データ(TX)を出力するユニットである。TX送信のための、INSTROBE信号、INCKEN信号、CLK(OPCLK)信号を生成する。また、TX送信と同時に、受信データ(RX)の受信を行う。
【0272】
(prcIF−バス)
prcIF−バスは、Gバス/BバスI/Fユニット4301Bとプリンタコントローラ4303とを接続するローカルなバスである。このバスに含まれる信号には次のようなものである。なお、信号の入出力は、プリンタコントローラからGバス/BバスI/Fユニット(GBI)に出力する信号をOUT, Gバス/BバスI/Fユニット(GBI)からプリンタコントローラに入力する信号をINで示す。IF-バスはスキャナコントローラとプリンタコントローラに対して同一規定とするため、プリンタコントローラのサポートしない機能のための信号も記述する。基本クロックはBバスのBclkを使用する。
・prcRst0_L :IN
この信号により、プリンタコントローラ内部のFIFOを初期状態に戻す。
・prcDataIn[63:0] :IN
Gバス/BバスI/Fユニット(GBI)からプリンタコントローラに出力される64ビットのデータバスである。プリンタコントローラがデータ転送動作する場合に画像データが転送される。
・prcRead :OUT
プリンタコントローラがデータ転送動作するとき、Gバス/BバスI/Fユニット(GBI)からのリード信号。Gバス/BバスI/Fユニット(GBI)は、prcRead信号がアサートされているBclkの立ち上がりに対して、prcDataIn[63:0]を有効とする。prcRead信号をアサートし続けることで、1クロック単位でデータがリードできる。
・prcReadEnable :IN
プリンタコントローラがデータ転送動作時、Gバス/BバスI/Fユニット(GBI)からのデータリード許可を示す信号。Gバス/BバスI/Fユニット(GBI)から出力される。Bclkの立ち上がりで、prcReadEnable信号がアサートされていれば、次のクロックの立ち上がりで、リード可能であることを示す。prcRead信号のアサートは、prcReadEnable信号を確認して行う。
・prcRegAddr[31:2] :IN
Gバス/BバスI/Fユニット(GBI)からプリンタコントローラ内部のレジスタにアクセスするさいのレジスタアドレスバス。prcRegStart_Lアサートと同時に有効となり、スキャナコントローラ内部レジスタへのアクセスであれば、prcRegAck_L信号で応答するまで有効である。
・prcRegbyteEn[3:0] :IN
Gバス/BバスI/Fユニット(GBI)から出力されるprcRegDataIn[31:0]のバイトイネーブル信号。prcRegStart_Lアサートと同時に有効となり、prcRegAck_L信号で応答するまで有効である。この信号で示された有効なバイトのみレジスタへの書き込みを行う。内部レジスタからの読み出し時は、この信号は無視し、全バイト出力する。この信号の各ビットとprcRegDataIn[31:0]のバイトとの対応は次の通りである。
prcRegbyteEn: 3 2 1 0
prcRegDataIn: [31:24] [25:16] [15:8] [7:0]
・prcRegStart_L :IN
Gバス/BバスI/Fユニット(GBI)からプリンタコントローラ内部のレジスタにアクセスするさいのアクセス要求信号。”Low”でレジスタのアクセス要求を示す。prcRegAddr[31:2]信号、prcRegRdNotWr信号とともにアサートされ、Bclk1クロック分だけアサートされる。プリンタコントローラが、このアクセスに対する・prcRegAck_Lを返さない限り、次のアクセスのアサートはされない。
・prcRegDataOut[31:0] :OUT
Gバス/BバスI/Fユニット(GBI)からプリンタコントローラ内部のレジスタをリードアクセスする場合の32ビットデータバス。prcRegAck_L信号がアサートされているときに有効となる。
・prcRegDataIn[31:0] :IN
Gバス/BバスI/Fユニット(GBI)からプリンタコントローラ内部のレジスタをライトアクセスする場合の32ビットデータバス。prcRegStart_Lアサートと同時に有効となり、プリンタコントローラ内部レジスタへのアクセスであれば、prcRegAck_L信号で応答するまで有効である。
・prcRegRdNotWr :IN
Gバス/BバスI/Fユニット(GBI)からプリンタコントローラ内部のレジスタにアクセスするさいのアクセス方向(リードまたはライト)を示す信号。”High”でプリンタコントローラ内部レジスタの内容がprcRegDataOut[31:0]に読み出され、”Low”でprcRegDataIn[31:0]の内容がプリンタコントローラ内部レジスタに書き込まれる。PrcRegStart_Lアサートと同時に有効となり、プリンタコントローラ内部レジスタへのアクセスであれば、prcRegAck_L信号で応答するまで有効である。
・prcRegAck_L :OUT
プリンタコントローラ内部のレジスタアクセスが完了したことを示す信号。プリンタコントローラからGバス/BバスI/Fユニット(GBI)へ出力される。BClk1クロック分だけアサートされる。prcRegstart_L信号がアサートされた次のクロックからセンスされる。
【0273】
なお、信号prcReq0_L, prcバイトEn[7:0], prcWrite, prcDataOut[63:0], prcReadEnableは、プリンタコントローラでは未使用となる。
【0274】
図83及び図84は、上述の信号のタイミングの一例を示すタイミングダイアグラムである。図83はプリンタコントローラ4303へデータをDMA転送する際のタイミングであり、図63は、プリンタコントローラ4303の内部レジスタに対して読み出しあるいは書き込みを行うタイミングである。
【0275】
(パワーマネジメント)
プリンタコントローラ内部では、プリンタ・コントローラ・パワー・マネジメント・コントロールレジスタ(0X1B007000)の設定に応じたビデオクロック(VCLK)のゲートコントロールを行い、それによりパワーマネージメントを行う。パワーマネジメントユニット(PMU)409に出力するPMステート信号(prcPmStat[1:0])の値は、Gバス/BバスI/Fユニット4301Bから入力されるprcDmaPmState[1:0]の状態とクロックの状態とを合わせて決定される。prcPmState[1:0]は図85のとおりである。
【0276】
図85において、prcDmaPmState[1:0]は、プリンタのGバス/BバスインターフェースGBI_prcのパワー消費状態を示している。GBI_prcにはパワー消費状態00〜11の4段階がある。この状態信号prcDmaPmState[1:0]は、GBI_prcからプリンタコントローラへ出力されている。
【0277】
また、プリンタコントローラのパワー消費状態は2段階あり、内部信号PPStatで示される。
【0278】
信号prcPmstate[1:0]は、GBI_prcとプリンタコントローラの2つの状態をあわせた状態を示している。この信号がシステムのパワーマネージメントユニットに出力される。すなわち、プリンタコントローラの電力消費状態は4段階でパワーマネジメントユニットに伝えられる。その段階は信号prcPmstate[1:0]の値で示される。値00が最低レベルであり、1増えるごとに示される電力消費量は大きくなる。
【0279】
2.9.3 Gバス/BバスI/Fユニット(GBI)
図92は、Gバス/BバスI/Fユニット4301のブロック構成図である。Gバス/BバスI/Fユニットは、スキャナ及びプリンタのそれぞれに用意されているが、その構成は同じであるため、ここでまとめて説明する。
【0280】
図92において、GBI4301は、GBusと接続してこれを制御するGBusコントローラと、BBusと接続してこれを制御するBBusコントローラとを含む。これらの間には、DMAアドレスを制御するDMAコントローラ9205のほか、機能ブロックとGBus/BBusとの間をデータ転送に用いられるFIFO9204、種々の設定値が書き込まれるレジスタユニット9206が含まれる。このうち、GBUSコントローラとFIFO9204は、GBusにあわせて100MHzのクロックで動作し、その他のブロックはBBusにあわせて50MHzで動作する。
【0281】
GBI4301は、GBusとBBusの両方に接続されるべき機能ブロック(SCC:スキャナコントローラとPRC:プリンタコントローラ)の、GBusとBBusの選択的接続及び、両バスのインターフェースを提供する。GBIと各機能ブロックの間は、IFBus9201で接続される。機能ブロックでは、データの入出力先がGBusかBBusかを意識する必要はない。また、GBI側でDMAをサポートするので、機能ブロック側でアドレスを発生する必要もない。GBIは、各機能ブロックで共通に必要となる機能をまとめて、独立のユニットにしたものである。
【0282】
GBIがサポートするIFBus9201に接続される機能ブロックは、連続したデータを受け取る、あるいは送り出すものとする。IFBusにアドレス信号は含まれていない。GBIでは、Channel0(GBus/BBus→IFBus0)とChannel1(GBus/BBus→IFBus1)の2つのチャネルが用意され、それぞれに、DMAコントローラが用意されている。ただし、スキャナコントローラでは、Channel0のみを、プリンタコントローラでは、Channel1のみを使用(実装)する。
【0283】
DMAコントローラ9205は、I/O(アドレス固定)とメモリに対する設定が可能で、メモリの場合は、連続物理アドレスとチェーンテーブル方式(後述)のDMAが設定できる。
【0284】
GBIは、データを、FIFOを介して機能ブロックと入出力する。したがって、GBIがスレーブモードとして動作する場合、GBIのアドレスは、GBus側が、0x18n0_0000〜0x18n0_007F、BBus側が、0x19n0_0000〜0x19n0_001Fのみで同じロケーションがアクセスされる。FIFOを使用しているため、バースト転送時のラップアラウンドに対応するのが困難である。BBusのラップアラウンドを伴うバースト転送要求に対しては、シングルアクセスとして応答する。GBusのラップアラウンドを伴う転送要求に対しては応答しない。
【0285】
なお、GBI間で画像データのDMA転送を行う場合には、それぞれのDMAコントローラにより制御が行われる。この際に、いずれの側がマスタになるかは特に決めないが、よりデータ転送のタイミングが厳格な方がマスタになることが望ましい。このため、本実施例では、GBI_PRCをマスタにし、GBI_SCCをスレーブにしてDMA転送を行っている。
【0286】
GBI(GBus/BBusインターフェース)は、
1.機能ブロックとのデータの受け渡しをするFifoユニット
2.GBusに直結され、GBusとFifoユニットをつなぐGBusコントローラ9202
3.BBusに直結され、BBusとFifoユニットをつなぐBBusコントローラ9203
4.マスタモードの時に、DMA転送要求を各バスコントローラに発行するDMAコントローラ9205
5.レジスタの内容を保持し、各ブロックに信号を送るレジスタユニット9206
から構成される。レジスタユニット内には、割込み制御、パワー制御部も含んでいる。以下に、各部の説明をする。
【0287】
(Fifoユニット)
図93に示したFifoユニットは、GBus/BBusとIFBusとの間の転送データのバッファとなる部分である。Fifoユニットは、互いに独立したFifoユニット0とFifoユニット1とから構成される。Fifoユニット0はIFBusからのデータ入力及びGBusあるいはBBusへのデータ出力のために用いられ、Fifoユニット1はGBusあるいはBBusからのデータ入力及びIFBusへのデータ出力のために用いられる。
【0288】
信号scGbiFifo0ClkあるいはscGbiFifo1Clkはゲーテッドクロックで、クロックを止めることで省電力モードを実現する。このクロックは、GBI FIFOレジスタをライトすることにより停止し、マスタモードかスレーブモードに入る時に自動的に起動する。
【0289】
[Fifoユニット0]
Fifoユニット0は、IFBus0(IFBusの仕様については後述)からのデータをFifoに書き込み、GBus/BBusに送り出す。信号ifDataOutB[63:0]、ifWriteB、ifWriteEnableGは、IFBusと接続される。
【0290】
このFifoユニット0が有するFifo0は、IFBusからの64ビットデータを入力とし、GBus用の64ビットデータDataOut64とBBus用の32ビットデータDataOut32を出力する、64ビット×17段のFifoである。
【0291】
Fifoユニット0から出力されるステータス信号には次のような信号がある。
・Fifo0EnableB1G:Fifo0UnitからBBusへ1ワード(32ビット)転送可能であることを示す。マスタモードの時はDMAコントローラが、スレーブモードの時にはBBusコントローラが使用する。
・Fifo0EnableB4G:Fifo0UnitからBBusへ4ワード連続転送可能であることを示す。マスタモードの時はDMAコントローラが、スレーブモードの時にはBBusコントローラが使用する。
・Fifo0EnableB8G:Fifo0UnitからBBusへ8ワード連続転送可能であることを示す。マスタモードの時はDMAコントローラが、スレーブモードの時にはBBusコントローラが使用する。
・Fifo0EnableG4G:Fifo0UnitからGBusへ4ワード(1ワードは64ビット)連続転送可能であることを示す。マスタモードの時はDMAコントローラが、スレーブモードの時にはGBusコントローラが使用する。
・Fifo0EnableG16G:Fifo0UnitからGBusへ16ワード連続転送可能であることを示す。マスタモードの時はDMAコントローラが、スレーブモードの時にはGBusコントローラが使用する。
・ifWriteEnable:Fifo0がFull状態でないことを示す。IFBusと接続され、機能ブロックにライト可能であることを伝える。
【0292】
また、Fifo0からのGBusの64ビットデータのリードは、Fifo0に入力されている信号Rd64を使い、BBusの32ビットデータのリードは、信号Rd32を使う。どちらのリードによっても、ステータス信号及び、Fifo0からの出力データであるDataOut64とDataOut32は更新される。
【0293】
(B2Gブロック)
I/Fバス及びBBusのクロックは50MHzであり、GBusのクロックは100MHzである。このため、Fifoユニット0に含まれる不図示のB2Gなるブロックにより、IFBusクロックに同期した書込み信号ifWriteFifoB、あるいはBBUsクロックに同期した読出し信号bReadFifoBの1クロック分を、Fifoユニットのクロック(IFBusの2倍の周波数)のクロックに変換する。
【0294】
(ChkIllegalブロック)
Fifo0は、GBus/BBusにより共有される。マスターモードでは、DMAコントローラがGBus/BBusの排他使用を制御しているが、スレーブモードでは、DMAマスターが排他使用を制御しなければならない。このため、Fifoユニット0に含まれるChkIllegalブロックでは、GBusとBBusから同時にFifo0にアクセスされた場合に、信号fifoErrorGをアサートする。すなわち、Gbusからの読出し信号gReadFisoG、あるいはBBusからの読出し信号bReadFisoBが同時にアサートされると、信号fifoErrorGをアサートする。この信号は、レジスタユニットでラッチされ、マスクされていなければ、割り込みを発生する。
【0295】
[Fifoユニット1]
Fifoユニット1は、GBus/BBusからのデータを内蔵するFifo1に書き込み、IFBus1に送り出す。ifDataIng[63:0],ifByteEnG[7:0],ifReadB,ifReadEnableGは、IFBusと接続される。
【0296】
Fifoユニット1では、マスタモードでの逆方向DMAに対応するために、Fifo1の前段にフロントバッファを設けてある。逆方向DMA(入力信号reverseMODEがイネーブル)の時には、フロントバッファにいったんバッファしてから、逆順でFIFOにデータを送り出す。それ以外のモード(信号reverseMODEがディスエーブル)の時には、通常のFIFOとして機能する。
【0297】
(フロントバッファ)
GBusまたは、BBusからのデータを入力とし、Fifo1へ出力する、バイトイネーブル付き64+4ビット×4段のバッファである。BBusからの書き込みでは、データはバイトイネーブル信号とともに書き込まれる。GBusからの書き込みでは、バイトイネーブルをすべて有効とし、データが書き込まれる。BBusからの書き込みでの64ビットへのパッキングは行わない。
【0298】
ステータス信号として、フロントバッファが空状態であることを示す信号BufEmptyが設けられている。
【0299】
逆方向DMAの時には、信号reverseMODEがイネーブルであり、転送モードは、DMAコントローラで、GBusの4beatバースト転送、あるいはBBusのシングル転送のみに制限される。GBusの4beatバースト転送のデータは、一度フロントバッファに貯めてから、逆順にして、Fifo1にデータを送り出す(32ビット単位で逆順にする)。
【0300】
それ以外のモードの時には、信号reverseMODEがディスエーブルであり、4段のFIFOとして機能する。入力信号dummyWriteFifo1Bは一度ラッチされ、フロントバッファが空になった時点で、Fifo1に送られる。
【0301】
(Fifo1)
Fifo1は、フロントバッファからのデータを入力とし、入力されたデータをIFBusへ出力する、バイトイネーブル付き64+8ビット×16段のFifoである。BBusからのデータは、バイトイネーブル信号とともに書き込まれる。GBusからのデータは、バイトイネーブルをすべて有効とし、書き込まれる。BBusからのデータの書き込みでは、64ビットへのパッキングを行う。
【0302】
Fifo1の内部状態と、フロントバッファのBufEmpry信号を基に、以下のステータス信号を設けている。
・Fifo1EnableB1G:Fifoユニット1へBBusから2ワード(32ビット)転送可能であることを示す。Fifo1にBBus1ワード以上の空きがあるか、フロントバッファが空の時に、イネーブルとなる。
・Fifo1EnableB4G:Fifoユニット1へBBusから8ワード連続転送可能であることを示す。Fifo1にBBus4ワード以上の空きがあるか、フロントバッファが空の時に、イネーブルとなる。
・Fifo1EnableB8G:Fifoユニット1へBBusから12ワード連続転送可能であることを示す。Fifo1にBBus8ワード以上の空きがあるか、Fifo1にBBus4ワード以上の空きがあり、かつフロントバッファが空の時に、イネーブルとなる。
・Fifo1EnableG4G:Fifoユニット1へGBusから4ワード(1ワードは64ビット)連続転送可能であることを示す。Fifo1にGBus4ワード以上の空きがあるか、フロントが空の時に、イネーブルとなる。
・Fifo1EnableG16G:Fifoユニット1へGBusから16ワード連続転送可能であることを示す。Fifo1が空であるか、Fifo1にGBus12ワード以上の空きがあり、かつフロントバッファが空の時に、イネーブルとなる。
・ifReadEnable:Fifo1が空状態でないことを示す。IFBusと接続され、機能ブロックにリード可能であることを伝える。
【0303】
信号Fifo1EnableB1G、Fifo1EnableB4G、Fifo1EnableB8Gは、マスタモード時にはDMAコントローラが、スレーブモード時にはBBusコントローラが使用する。
【0304】
信号Fifo1EnableG4G、Fifo1EnableG16Gは、マスタモード時にはDMAコントローラが、スレーブモード時にはGBusコントローラが使用する。
【0305】
また、Fifoユニット1は、Fifoユニット0と同じく、B2Gブロック及びChkIllegalブロックを備えている。
【0306】
(GBusコントローラ)
図94は、Gbusコントローラ9202のブロック図である。Gbusコントローラ9202は、GBIがバスマスタとなってGBusを制御するためのGBusマスタコントローラと、スレーブとなった際の制御を行うためのGBusスレーブコントローラと、データを制御するためのGBusデータコントローラと、GBusインターフェースバッファとを含む。この構成により、GBI4301は、GBusのマスタあるいはスレーブとして動作することができる。
【0307】
[GBusマスタ動作]
GBusコントローラは、GBusマスタコントローラにより、以下のような手順でGBusマスタとしての制御を行う。
【0308】
1.DMAコントローラからの要求
DMAコントローラ9205は、チャネルNの転送が可能な段階で、gMReq(N)信号を、gMAddr(N)[31:5]信号、gMBst4Not16_N信号とともに、bClk(Bbusクロック信号)で1クロックだけアサートして、DMA転送を要求する。
【0309】
gMAddr(N)[31:5]信号、gMBst4Not16_N信号は、GBusマスタコントローラによりgMDone(N)信号、gMRtry(N)信号、gMBErr(N)信号のいずれかがアサートされるまで、変化させてはいけない。
【0310】
2.GBusアービタへの転送要求
gMReq(N)信号は、GBusマスタリクエストインターフェースでラッチされる(gLatchReq(N)信号)。
【0311】
各チャネルのgLatchReq信号は、不図示のGBusマスタリクエストアービタで調停され、GBusアービタ406に対し、DMA要求信号gReq_L信号をアサートすると同時に、GBusマスタアドレスフェーズに、gIntReq(N)信号を送る。
【0312】
3.GBusアービタからの転送許可
GBusアービタ406からのDMA許可信号gGnt_L信号がアサートされると、GBusマスタアドレスフェーズから、信号GGntSenseがアサートされ、DMA要求信号gReq_Lはネゲートされる。同時に、gLatchReq(N)信号とgIntReq(N)信号はネゲートされる。GBusマスタリクエストインターフェースは、信号gSlvBsyを監視し、データバスが使用可能になると、GMDataRq(N)信号をアサートする。この信号は、GBusマスタジェネレートエンドデータとGBusデータコントローラに送られる。
4.GBusデータ転送
スレーブのgAack信号を確認すると、データ転送を開始する。EndData以外のGBusの信号は、GBusマスタアドレスフェーズで生成される。EndDataは、GBusマスタジェネレートエンドデータで生成される。GBusからFifoあるいは、FifoからGBusへのデータの移動は、GMDataRq(N)信号により、GBusデータコントローラが行う。なお、gAack信号の前にgRtry信号を検出すると、GBusデータコントローラはデータ転送を行わない。
5.GBusデータ転送終了(あるいはリトライ)
GBusマスタジェネレートエンドデータは、GBusデータ転送の終了を、checkBErr信号によりGBusマスタリクエストインターフェースへ伝える。その信号を受けたGBusマスタリクエストインターフェースは、内部で保持している要求をクリアすると同時に、バスエラーがなければ、gMDone信号をアサートする。バスエラーを検出した場合には、gMBErr信号をアサートし、DMAコントローラ9205に転送が完了したことを伝える。
【0313】
また、gRtry信号を検出すると、GBusマスタリクエストインターフェースは、内部で保持している要求をクリアすると同時に、gMRtry信号をアサートする。
【0314】
DMAコントローラ49205は、GBusコントローラ9202から受けた信号がgMDone信号であれば、転送アドレスや転送長等を更新する。受けた信号がgMRtry信号であれば、それらを更新せずに、次のアクションを起こす。gMBErr信号の時には、DMAコントローラ9202は転送を中止し、マスクされていなければ、割り込みを発生する。
【0315】
[GBusスレーブ動作]
GBusコントローラは、GBusスレーブコントローラにより、以下のような手順でGBusスレーブとしての制御を行う。
1.マスタからの転送要求
GBusスレーブリクエストインターフェースでは、gTsReg信号アサートのタイミングで、gAddrReg信号とgRdNotWrReg信号(チャネル0か1)を確認する。GBIへのアクセスで、gSEnable(N)信号(スレーブモード:レジスタにより設定)がアサートされていれば、gBst4Not16信号とReadFifoEnable4/16信号(チャネル0)かWriteFifoEnable4/16信号(チャネル1)から、転送可能か判断する。可能であれば、gAack信号を、そうでなければ、gRtry信号をアサートする。
2.GBusデータ転送
転送可能であれば、GBusスレーブリクエストインターフェースは、gSlvBsy信号のネゲートを確認し、gAack信号をアサートし、そのタイミングを、GSlvStart信号でGBusスレーブリクエストスレーブビジーに伝える。また、GBusスレーブリクエストインターフェースは、データの転送開始を、GSDataRq(N)信号をアサートすることでGBusデータコントローラに伝える。GBusからFifoあるいは、FifoからGBusへのデータの移動は、GBusデータコントローラが行う。GBusスレーブリクエストスレーブビジーは、gSlvBsy信号を生成する。
3.GBusデータ転送終了
転送終了を示す信号は特にない。gBErr信号をアサートすることもない。ただし、gSEnable(N)信号がネゲートしてあれば、マスタのアクセスに対して応答しないので、タイムアウトによるバスエラーが発生する。
【0316】
(BBusコントローラ)
図95は、BBusコントローラ9203のブロック図である。BBusコントローラ9203は、BBusマスタコントローラと、BBusデータコントローラ、BBusスレーブコントローラ及びBBusインターフェースバッファを含む。この構成により、GBI4301は、BBusのマスタあるいはスレーブとして動作することができる。
【0317】
[BBusマスタ動作]
1.DMAコントローラからの要求
DMAコントローラ9205は、チャネルNの転送が可能な段階で、bMReq(N)信号を、bMAddr(N)[31:2]信号、bMBurst8n)信号、bMBst4Not8_N信号とともに、BBusクロック信号bClkで1クロックだけアサートする。また、チェーンDMAモードでチェーンテーブルの読み込みが必要な段階で、cMReq(N)信号を、cMAddr(N)[31:2]信号とともに、bClkで1クロックだけアサートする。チェーンテーブルの読み込みでは、BBusのバースト転送を使用しない。こうして、DMAコントローラからBBusのDMA転送が要求される。
【0318】
bMAddr(N)[31:2]信号,bMBurst(N)信号,bMBst4Not8_N信号は、Fifoにアクセスを開始する(bReadFifo、bWriteFifoがアサートされる)まで変化させてはいけない。
【0319】
また、cMAddr(N)[31:2]信号は、cMDone(N)信号,cMrtry(N)信号,cMBErr(N)信号のいずれかがアサートされるまで変化させてはいけない。
【0320】
2.BBusアービタへの転送要求
BBusbMReq(N)信号及びcMReq(N)信号は、BBusマスタリクエストインターフェースでラッチされる(bLatchReq(N)信号及びcLatchReq(N)信号)。各要求信号は、BBusマスタリクエストアービタで調停され、BBusアービタ407に対してbBReq_L信号がアサートされる。
【0321】
3.BBusアービタからの転送許可
BBusアービタからの許可信号であるbBGnt_L信号がアサートされると、BBusマスタリクエストアービタから、対応する要求元のBBusマスタリクエストインターフェースに、BGnt(N)信号あるいはCGnt(N)信号を送り、bBGnt_L信号はネゲートされる。BBusマスタリクエストインターフェースは、bLatchReq(N)信号あるいはcLatchReq(N)信号をネゲートし、bTx信号とbSnoopWait信号を監視し、転送可能な状態になると、BMDataRq(N)信号及びCMDataRq(N)信号をアサートする。この信号は、BBusマスタシーケンサとBBusデータコントローラに送られる。
【0322】
4.BBusデータ転送
BBusマスタシーケンサは、BBusマスタがドライブすべきデータ以外のBBusの信号をすべて生成する。BMDataRq(N)信号あるいはCMDataRq(N)信号をトリガにして、bStartOut_L(バーストモードであれば、同時にbBurstOut_L)をアサートし、bRdy(バーストモードであれば、bBurstAck)をチェックし、転送終了を検出する。BBusからFifo、あるいはFifoからBBusへのデータの移動は、BMDataRq(N)信号により、BBusデータコントローラが行う。
【0323】
なお、bRdy信号の前(あるいは同時に)にbRetry信号を検出すると、BBusデータコントローラはデータ転送を行わない。
【0324】
5.BBusデータ転送終了(あるいは、リトライ、バスエラー)
BBusデータコントローラは、BBusマスタシーケンサのBMLastData信号でデータの移動を終了する。また、BBusマスタシーケンサは、BBusデータ転送の終了をDone信号により、BBusリクエストインターフェースへ伝える。リトライあるいはバスエラーであった場合には、それぞれ、Retry信号、Error信号で伝える。BBusマスタリクエストインターフェースは、DMAコントローラに転送が完了したことを、[bc]MDone(N)(以下、bまたはcのいずれかであることを[bc]と表す)で、リトライ、バスエラー場合には、[bc]MRtry(N)信号、[bc]MBErr信号でそれぞれ伝える。
【0325】
DMAコントローラは、信号bReadFifo、bWriteFifoにより、転送アドレスや転送長等を更新し、DMAのBBus転送の終了を示すbMDone(N)信号か、bMRtry(N)信号で、次のアクションを起こす。チェーンテーブルの読み込みの終了を示すcMDone(N)信号は、内部のチェーンテーブルを更新し、cMRtry(N)信号であれば、再び転送要求を発行する。
【0326】
[bc]MBErr(N)信号の時には、DMAコントローラは転送を中止し、マスクされていなければ割り込みを発生する。
【0327】
(バーストモードでのリトライ)
信号bStart_Lと信号bBurst_Lの同時アサートで、スレーブが、信号bRetry_Lのアサートなしに、信号bRdy_Lと信号bBurstAck_Lの同時アサートで応答した場合、スレーブはバースト転送可能と判断される。そのバースト転送中は信号bRetry_Lはチェックされない。つまり、最初のbRdy_Lのタイミングの時のみ、信号bRetry_Lはチェックされる。なお、バースト転送中でも、信号bError_Lは、各クロックでチェックされる。
【0328】
(信号bError_L、bRetry_L、bRdy_Lの同時アサートについて)
信号bError_Lがアサートされた場合、信号bRetry_Lがアサートされていても、バスエラーとみなされる。信号bError_Lがネゲートされ、信号bRetry_Lがアサートされた場合、信号bRdy_Lがアサートされていてもリトライと見なされる。
【0329】
(マスタモード時の信号byteEn_L[3:0]について)
マスタモード時の信号byteEn_L[3:0]は、シングルアクセス、バーストアクセスの最後の転送以外は、常に、“0000”である。
【0330】
[BBusスレーブ動作(レジスタアクセス以外)]
1.マスタからの転送要求
BBusマスタシーケンサは、bStart_L信号アサートのタイミングで、bAddr信号とbWr_L信号(チャネル0か1)を確認する。GBIへのアクセスで、bSEnable(N)信号(スレーブモード:レジスタにより設定)がアサートされていれば、bBurstShortNotLong信号(bBurst_L信号がアサートされた時のみ)とReadFifoEnable1/4/8信号(チャネル0)かWriteFifoEnable1/4/8信号(チャネル1)から転送可能かを判断する。転送可能であれば、bRdyOut_L信号(バーストモードであれば、bBurstAckOut_L信号も)をアサートし、そうでなければ、bRetryOut_L信号をアサートする。
【0331】
マスタのバーストモード(bBurst_L信号がアサート)の要求に対して、Fifoの状態から、バースト転送はできないがシングル転送は可能な場合は、bRdyOut_L信号のみアサートし、シングル転送を行う。また、マスタのバーストモード要求がラップアラウンドを発生する場合、GBIがラップアラウンドに対応していないため、可能であればシングル転送を行う(bBurstAckOut_L信号をアサートしない)。
【0332】
2.BBusデータ転送
転送可能であれば、BBusマスタシーケンサは、必要なクロック分だけ、bRdyOut_L信号をアサートし続ける。バースト転送の場合には、最初のbRdyOut_L信号のアサートのタイミングで、bBurstAckOut_L信号を1BBusクロックだけアサートする。また、データの転送開始をBSDataRq(N)信号で、データの転送終了をbMLastData信号で、BBusデータコントローラに伝える。BBusからFifoあるいは、FifoからBBusへのデータの移動は、BBusデータコントローラが行う。
【0333】
3.BBusデータ転送終了
転送終了を示す信号は特にない。bErrorOut_L信号をアサートすることもない。ただし、bSEnable(N)信号がネゲートしていれば、マスタのアクセスに対して、応答しないので、タイムアウトによるバスエラーが発生する。
【0334】
[BBusスレーブ動作(レジスタアクセス)]
GBI及び機能ブロック内のレジスタのアクセスはBBusから行う。レジスタのアクセスについては、GBIのモードや状態によらず、いつでもアクセス可能である。bRetryOut_L、bErrorOut_L信号をアサートすることはない。マスタのバーストモードの要求に対して、いつでもシングル転送で応答する(bBurstAckOut_L信号をアサートしない)。
【0335】
レジスタコントローラ9206は、regStart_L、regAddr[31:2]、byteEnIn[3:0]、regWr_L信号(BBusの信号をBBusクロックで叩いた信号)をセンスし、レジスタへの書き込みであれば、bDataIn[31:0]信号のデータを書き込み、Ack信号(GBIでは、regGbiAck_L、IFBusでは、regIfAck_L)をアサートする。レジスタからの読み出しであれば、データを内部バス(GBIでは、regGbiDataOut[31:0]、IFBusでは、regIfDataOut[31:0])に乗せて、Ack信号(GBIでは、regGbiAck_L、IFBusでは、regIfAck_L)をアサートする。
【0336】
BBusスレーブジェネレートレディで、Ack信号からbRdyOut_Lを作る。
【0337】
(GBIのレジスタアクセス以外のBBusのサイクル)
GBIのスレーブモードでは、シングル転送のサイクルはいつも3BBusクロックである。バースト転送は、シングル転送と同じタイミングで、最初のbRdyOut_L信号をアサートし、その後ネゲートすることなしに必要なクロック分アサートを続ける。転送(シングルとバースト)ができない場合は、最初のbRdyOut_Lをアサートするタイミングで、bRetryOut_Lだけアサートする。
【0338】
(BBusスレーブジェネレートレディブロック)
BBusスレーブジェネレートレディブロックは、BBusスレーブシーケンサからのChannelRdy_L信号と、GBIレジスタユニットからのregGbiAck_L信号と機能ブロック(IFBus)からのregIfAck_L信号をORして、クロックで叩く。
【0339】
(IFBusインターフェース)
IFBusは、GBIと機能ブロックを接続する簡単なバスである。クロックは、bClk(50MHz)を使用する。ここでいう入力信号とは、機能ブロックからGBIへの方向の信号である。双方向信号はない。以下にIFBusの信号について説明する。“_L”で終わる信号名は、ローアクティブであることを示す。これは、すでに説明した部分においても同様である。なお、実際のインプリメンテーションでは、信号名の“if”は機能ブロックの名前に置き換える。
【0340】
・ifRst0_L(チャネル0),ifRst1_L(チャネル1)(出力)
IFBusのリセット信号である。この信号により、IFBusの状態を初期状態に戻す。GBIの内部レジスタにより、アサートされる。GBIと機能ブロックとの転送に先立って、必ずアサートする。
【0341】
・ifDataOutB[63:0](入力:チャネル0のみ)
機能ブロックからGBIへのデータ信号である。この信号は、Fifoユニット0に接続されている(図93参照)。
【0342】
・ifWriteB(入力:チャネル0のみ)
機能ブロックからGBIへのライト信号である。GBIは、ifWrite信号がアサートされているifClkの立ち上がりで、ifDataOut[63:0]を書き込む。ifWriteB信号をアサートし続けることで、1クロック単位でデータがライトできる。この信号は、Fifoユニット0に接続されている(図93参照)。
【0343】
・ifWriteEnableG(出力:チャネル0のみ)
機能ブロックからGBIへのライト許可信号である。ifClkの立ち上がりで、ifWriteEnableG信号がアサートされていれば、次のクロックの立ち上がりで、ライト可能であることを示す。ifWriteB信号のアサートは、ifWriteEnableG信号を確認して行う。この信号は、Fifoユニット0から出力される。
【0344】
・ifDataInG[63:0],ifByteEnG[7:0](出力:チャネル1のみ)
GBIから機能ブロックへのデータとバイトイネーブル信号である。この信号は、Fifoユニット1に接続されている。表8に信号ifByteEnG[7:0]の各桁とifDataInG[63:0]の各バイトユニットとの対応を示す。
【表8】
・ifRead(入力:チャネル1のみ)
GBIから機能ブロックへのリード信号である。GBIは、ifRead信号がアサートされているifClkの立ち上がりで、ifDataInG[63:0]とifByteEnG[7:0]を出力する。ifRead信号をアサートし続けることで、1クロック単位でデータがリードできる。この信号は、Fifoユニット1に接続されている。
【0345】
・ifReadEnableG(出力:チャネル1のみ)
GBIから機能ブロックへのリード許可信号である。ifClkの立ち上がりで、ifReadEnableG信号がアサートされていれば、次のクロックの立ち上がりで、リード可能であることを示す。ifRead信号のアサートは、ifReadEnableG信号を確認して行う。この信号は、Fifoユニット1から出力される。
【0346】
・ifRegStart_L(チャネル共通)(出力)
BBusのbStart_Lをクロックで叩いた信号である。ifRegAddr[31:2]信号、ifRegRdNotWr信号ifByteEn_L[3:0]信号とともに1クロックだけアサートされる。機能ブロックの内部レジスタへの書き込みの場合には、信号ifRegDataIn[31:0]も有効となっている。機能ブロックでは、ifRegStart_Lがアサートされた時点で、アドレスをチェックし、機能ブロックの内部レジスタへのアクセスであれば、ifRegAck_L信号で応答する。そうでなければ、次のifRegStart_Lのアサートを待つ。この信号は、BBusコントローラから出力される。
【0347】
・ifRegAddr[31:2](チャネル共通)(出力)
BBusのbAddr[31:2]をクロックで叩いたアドレス信号である。信号ifRegStart_Lアサートと同時に有効となり、機能ブロックの内部レジスタへのアクセスであれば、ifRegAck_L信号で応答する間で有効である。この信号は、BBusコントローラから出力される。
【0348】
・ifRegByteEn[3:0](チャネル共通)(出力)
BBusのbyteEn_L[3:0]をクロックで叩いたバイトイネーブル信号である。信号ifRegStart_Lアサートと同時に有効となり、機能ブロックの内部レジスタへのアクセスであれば、ifRegAck_L信号で応答する間で有効である。機能ブロックの内部レジスタへの書き込みの場合には、この信号で示された有効なバイトのみ書き込みを行う。機能ブロックの内部レジスタからの読み出しの場合には、この信号は無視され、全バイト出力される。この信号は、BBusコントローラから出力される。表9に、信号ifRegByteEn[3:0]の各桁と信号ifRegDataInG[31:0]の各バイトユニットとの対応を示す。
【表9】
・ifRegRdNotWr(チャネル共通)(出力)
BBusのbWr_Lをクロックで叩いた信号で、機能ブロックの内部レジスタへのアクセスの方向を示す。ハイで、機能ブロックの内部レジスタの内容が信号ifReqDataOut[31:0]に出力され、ローで、ifReqDataIn[31:0]のデータが、機能ブロックの内部レジスタに書き込まれる。信号ifRegStart_Lアサートと同時に有効となり、機能ブロックの内部レジスタへのアクセスであれば、ifRegAck_L信号で応答する間で有効である。この信号は、BBusコントローラから出力される。
【0349】
・ifRegAck_L(チャネル共通)(入力)
機能ブロックが内部レジスタへのアクセスを完了したことを示す信号である。信号ifRegStart_Lがアサートされた時点で、アドレスをチェックし、機能ブロックの内部レジスタへのアクセスであれば、レジスタのリードあるいはライトを行い、必ず、1クロックだけアサートする。機能ブロックの内部レジスタへのアクセスでない場合には、決してアサートしてはいけない。この信号は、BBusコントローラに接続される。
【0350】
・ifRegDataOut[31:0](チャネル共通)(入力)
機能ブロックの内部レジスタの内容が読み出されるデータバス信号である。信号ifRegAck_L信号がアサートされているときに有効でなければいけない。この信号は、BBusコントローラに接続される。
【0351】
・ifRegDataIn[31:0](チャネル共通)(出力)
機能ブロックの内部レジスタに書き込まれるデータを示すバス信号である。信号ifRegStart_Lアサートと同時に有効となり、機能ブロックの内部レジスタへのアクセスであれば、ifRegAck_L信号で応答する間で有効である。この信号は、BBusコントローラから出力される。
【0352】
・IfDmaPmState[1:0](チャネル共通)(出力)
GBIの動作状態を示す信号。この出力は常に有効である。機能ブロックは、この信号と機能ブロック自身の動作状態を基に、パワーマネージメントユニットへのパワーマネージメントステータス信号を生成する。この信号は、レジスタユニットから出力される。どのような値が出力されるかは、後述のパワーマネジメントの項で説明する。
【0353】
(DMAコントローラ)
GBIには、チャネル0と1に、それぞれ図96のようなDMAコントローラ9205が存在する。
【0354】
DMAコントローラは、DMAメインコントローラ、フェッチチェインテーブル、カルキュレートピッチアドレス、ジェネレートアドレス、DMAリクエストの各部ロックから成る。
【0355】
レジスタユニット9206からは、表10の信号によりDMAのモードが伝えられる。
【表10】
次に、DMAコントローラの各部ロックについて説明する。
【0356】
[DMAメインコントローラ]
DMAメインコントローラは、他の4つのブロックの起動と停止の制御をする。チェーンテーブル方式のDMAでは、フェッチチェインテーブル、ジェネレートアドレス、DMAリクエストの順に、ブロックを1クロックずつずらして起動する。ピッチ付きのDMAでは、カルキュレートピッチアドレス、ジェネレートアドレス、DMAリクエストの順に、ブロックを1クロックずつずらして起動する。その他の場合には、ジェネレートアドレスとDMAリクエストを1クロックずらして起動する。
【0357】
また、DMAメインコントローラはDMAの終了を判定する。フェッチチェインテーブルがアイドル状態(チェーンテーブルをすべて読み終わったか、あるいは起動されていない)かつ、カルキュレートピッチアドレスがアイドル状態(全ライン終わったか、あるいは起動されていない)でのジェネレートアドレスのNextAddreReq信号のアサート(レングスカウンタがゼロになる)、あるいはバスエラー、stopDMA信号のアサート(レジスタによるDMA強制終了)を検出すると、DMAメインコントローラが各ブロックに、stopDMAReq信号をアサートする。すべてのブロックがアイドル状態になった時点で、DMAの終了と判定する(endDMAをアサートする)。
【0358】
[フェッチチェインテーブル]
フェッチチェインテーブルは、メモリ上のテーブルをフェッチするブロックで、チェーンテーブルを使わない場合は起動されない。チェーンテーブルを指すメモリアドレスのためのチェインテーブルポインタアドレスカウンタ、チェーンテーブルの残りのエントリ数を示すチェインテーブルエントリカウンタ、チェーンテーブルからフェッチしたアドレスとレングスを記憶するネクストアドレスレジスタ、ネクストレンクスレジスタ、およびこれらを制御するフェッチチェインテーブルコントローラから成る。
【0359】
DMAメインコントローラから起動されると、レジスタの内容がチェインテーブルポインタアドレスとチェインテーブルエントリカウンタにロードされる。chainReq信号により、BBusコントローラにアドレスchainAddress[31:2]のフェッチを要求する。BBusコントローラからのchainDone信号(正常終了)で、読み出した内容をネクストアドレスレジスタにラッチし、チェインテーブルポインタアドレスカウンタをインクリメントする。BBusコントローラから、ChainRtry信号(リトライ)が返ってくれば、再び、同じ要求をBBusコントローラに対して発行する。
【0360】
ネクストアドレスレジスタのラッチ後に、BBusコントローラにアドレスchain Address[31:2]のフェッチを要求する。ChainDone信号で、読み出した内容をネクストレンクスレジスタにラッチし、チェインテーブルポインタアドレスカウンタをインクリメントし、チェインテーブルエントリカウンタをデクリメントする。同時に、nextAddrValid信号をアサートし、チェーンテーブルからアドレスとレングスを読み出したことを、ジェネレートアドレスブロックに伝える。
【0361】
もし、ネクストレンクスレジスタのラッチ時のデータがゼロである場合には、ネクストアドレスレジスタの内容がチェインテーブルポインタアドレスカウンタにロードされる。
【0362】
nextAddrValid信号のアサート中に、ジェネレートアドレスブロックからNextAddrReq信号がアサートされるとジェネレートアドレスブロックが、チェーンテーブルからのアドレス、レングスを受け取ったと判断し、nextAddrValid信号をネゲートする。
【0363】
次に、チェインテーブルエントリカウンタをチェックし、ゼロでなければ、再度チェーンテーブルのフェッチを続け、ゼロであればアイドル状態へ戻る。
【0364】
chainBErr信号(バスエラー)を受け取ると、直ちにアイドル状態へ戻る。 DMAメインコントローラからstopDMAReqを受け取った場合、BBusコントローラに要求を出していれば、その終了を待って、そうでなければ直ちにアイドル状態へ戻る。
【0365】
チェーンテーブルを使わないモードの時には、起動されないので、アイドル状態を保ち、nextAddrValid信号はネゲートされたままである。
【0366】
[ジェネレートアドレス]
ジェネレートアドレスブロックは、メモリに対する転送アドレスを格納するトランスファメモリアドレスカウンタと、転送すべき転送長を格納するトランスファレンクスカウンタと、転送したバイト数を記憶するトランスファカウンタと、これら3つのカウンタを制御するジェネレートアドレスコントローラと、転送アドレスと転送長からGBus/BBusに対して要求するモードを判定するCheckGBusReq及びCheckBBusReqブロック(CheckG/BBusReqと総称する)を有する。
【0367】
(チェーンテーブルを使う場合)
DMAメインコントローラから起動されると、トランスファカウンタをクリアし、フェッチチェインテーブルからのnextValidAddrCT信号待ちに入る。nextValidAddrCT信号がアサートされると、チェーンテーブルのアドレスとレングスが、それぞれトランスファメモリアドレスカウンタとトランスファレンクスカウンタにロードされる。
【0368】
両カウンタの内容で、CheckG/BBusReqは転送できるモードを判定する。
【0369】
CheckG/BBusReqからDMAリクエストブロックにG/BBusの転送モードを伝え(転送不可の時にはg/b Valid信号がネゲートされている)、DMAリクエストブロックは、GBus優先で各バスコントローラに転送要求を発行する。
【0370】
GBusでの転送では、gMDone信号(GBus転送終了信号)とその時の転送モードにより、一度にトランスファメモリアドレスカウンタ、トランスファカウンタのインクリメントとトランスファレンクスカウンタのデクリメントを行う。BBusでの転送では、FIFOのアクセス信号により、トランスファメモリアドレスカウンタのインクリメントとトランスファレンクスカウンタのデクリメントを行う。
【0371】
トランスファレンクスカウンタがゼロになった時、フェッチチェインテーブルからのnextValidAddrCT信号がネゲートされていれば、アサートを待って、次のチェーンテーブルの内容をトランスファメモリアドレスカウンタとトランスファレンクスカウンタにロードし、そうでなければ、直ちにロードする。そして、次の転送に入る。
【0372】
チェーンテーブルの最後の部分の転送が終わってトランスファレンクスカウンタがゼロになった時には、フェッチチェインテーブルはアイドル状態で、nextValidAddrCT信号はネゲートされている。DMAメインコントローラはDMAの終了を検出するので、ジェネレートアドレスに対してstopDMAReq信号をアサートする。これによりジェネレートアドレスはアイドル状態となる。
【0373】
(ピッチ付きのDMAを使う場合)
DMAメインコントローラから起動されると、トランスファカウンタをクリアし、カルキュレートピッチアドレスからのnextValidAddrPA信号待ちに入る。nextValidAddrPA信号がアサートされると、スタートアドレスとピッチから計算されたアドレスとレングスが、それぞれトランスファメモリアドレスカウンタとトランスファレンクスカウンタにロードされる。
【0374】
チェーンテーブルを使う時と同様に、トランスファメモリアドレスカウンタ、トランスファカウンタのインクリメントとトランスファレンクスカウンタのデクリメントが行われる。
【0375】
トランスファレンクスカウンタがゼロになった時、カルキュレートピッチアドレスからのnextValidAddrPA信号がネゲートされていれば、アサートを待って、次のチェーンテーブルの内容をトランスファメモリアドレスカウンタとトランスファレンクスカウンタにロードし、そうでなければ直ちにロードする。そして次の転送に入る。
【0376】
最後のラインの転送が終わってトランスファレンクスカウンタがゼロになった時には、カルキュレートピッチアドレスはアイドル状態で、nextValidAddrPA信号はネゲートされている。DMAメインコントローラはDMAの終了を検出するので、ジェネレートアドレスに対してstopDMAReq信号をアサートする。これによりジェネレートアドレスはアイドル状態となる。
【0377】
(対I/ODMAの場合)
DMAメインコントローラから起動されると、トランスファカウンタがクリアされ、データ長を格納したGBIDMA転送長レジスタの内容がトランスファレンクスカウンタにロードされる。CheckGBusReq/CheckBBusReq各ブロックは、対I/OのDMAアドレスを格納したGBIDMAGBusI/Oアドレスレジスタ/GBIDMABBusI/Oアドレスレジスタの内容をそれぞれ用いる。
【0378】
上と同様に、トランスファカウンタのインクリメントとトランスファレンクスカウンタのデクリメントが行われる。
【0379】
トランスファレンクスカウンタがゼロになった時、フェッチチェインテーブルとカルキュレートピッチアドレスは起動されていないので、アイドル状態で、nextValidAddr信号はネゲートされている。DMAメインコントローラはDMAの終了を検出するので、ジェネレートアドレスに対してstopDMAReq信号をアサートする。これによりジェネレートアドレスはアイドル状態となる。
【0380】
(リバースモード)
対I/ODMA以外はリバースモードをサポートする。チェーンテーブルDMAの1ブロック、ピッチ付きのDMAの1ラインを、アドレスの大きい方から小さい方へアクセスする。ブロックあるいはライン単位の逆方向の指示は、チェーンテーブルDMAではチェーンテーブルを逆になるように作る。ピッチ付きのDMAの場合は、ピッチの値を負の値(2の補数)を設定する。
【0381】
リバースモードでは、トランスファメモリアドレスカウンタに値をロードする際に、転送レングスを用いて、最後尾のアドレスを計算してロードする。トランスファメモリアドレスカウンタのインクリメントの代わりにデクリメントする。
【0382】
CheckBBusReqブロックではシングル転送のみを要求する。CheckGBusReqブロックでは4ビートバースト転送のみを要求する。Fifoユニットで、32ビット単位で逆順にして、機能ブロックに送られる(現状では、チャネル1のみ対応する)。
【0383】
(GBus要求のチェック)
CheckGBusReqブロックではGBus要求のチェックが行われる。信号useGBusがアクティブでなければ常に信号gValidはネゲートされている。
【0384】
トランスファメモリアドレスのビット6以下がすべてゼロで、かつトランスファレンクスが128以上の時、信号gValidがアサート、g4Not16Req=’0’となり、トランスファメモリアドレスのビット4以下がすべてゼロで、かつトランスファレンクスが32以上の時、信号gValidがアサート、g4Not16Req=’1’となる。それ以外では、信号gValidはネゲートされる。
【0385】
データバス64ビットのGBusでは、4ビートバースト転送(32バイト)と16ビートバースト転送(128バイト)のみをサポートする。信号gValidがアサートされるのは、これらのバースト転送が可能なときだけである。信号g4Not16Reqは、4ビートバースト転送と16ビートバースト転送を識別するためのものである。
【0386】
(BBus要求のチェック)
CheckBBusReqブロックではBBus要求のチェックが行われる。信号useBBusがアクティブでなければ常に信号bValidはネゲートされている。
【0387】
トランスファメモリアドレスのビット4以下がすべてゼロで、かつトランスファレンクスが29以上の時、信号bValidがアサート、bBurstReq=’1’、b4Not8Req=’0’となり、トランスファメモリアドレスのビット3以下がすべてゼロで、かつトランスファレンクスが13以上の時、bValidがアサート、信号bBurstReq=’1’、b4Not8Req=’1’となる。それ以外では、bValidがアサート、bBurstReq=’0’となる。
【0388】
データバス32ビットのBBusでは、シングル転送(bByteEnを制御して1〜4バイト)、4ビートバースト転送(最終ワード転送時のbByteEnを制御して13〜16バイト)をサポートする。信号bValidがアサートされるのは、これらの転送が可能なときである。bBurstReqとb4Not8Reqは、これらの転送を識別するための信号である。ただし、信号useBBusがアクティブであれば、常にシングル転送は可能である。
【0389】
(DMAリクエスト)
DMAメインコントローラから起動されると、ジェネレートアドレスブロックからのGBus/BBusに対する要求を、信号gValidと信号bValidとを基にチェックする。G/BBusの両方の要求がある場合には、常にGBusが優先となる。これはmBBusに比べ、GBusのほうが使用効率が良い(転送速度が早い)ためである。BBusのみが要求されるのは、信号useGBusがアクティブでないか、トランスファメモリアドレスのバウンダリが半端か、あるいはトランスファレングスが短いために、GBusが使用不可能なときである。逆に言えば、このようなときには、GBusを使用せず、BBusを用いる。このGBus/BBusの要求に従い、GBusコントローラかBBusコントローラに転送要求を発行し、応答を待つ。応答は、g/bMDone、g/bMRtryあるいは、g/bMBErrのいずれかの信号である。
【0390】
g/bMDoneの場合は転送の正常終了であり、次のジェネレートアドレスからのGBus/BBusに対する要求をチェックする。
【0391】
g/bMRtryの場合は同じバスコントローラに再度転送要求を発行する。
【0392】
g/bMBErrの場合には直ちにアイドル状態に戻る。
【0393】
最後の転送が終了した時には、DMAリクエストブロックは、ジェネレートアドレスからのGBus/BBusに対して要求待ち状態となる。DMAメインコントローラがDMA終了を検出して、DMAリクエストに対してstopDMAReqが発行されるので、それにより、DMARequestはアイドル状態に戻る。
【0394】
また、チェーンテーブルフェッチ時のバスエラーやレジスタによるDMA強制終了の場合も、DMAメインコントローラから、stopDMAReqが発行されるが、バスコントローラに転送要求をしている時は、転送終了を待って、要求していない時は直ちにアイドル状態に戻る。
【0395】
(レジスタユニット)
内部レジスタユニット内には、各チャネルに対応するレジスタユニットが存在する。各ユニットは、デコードするアドレスが異なる以外は同じである。レジスタユニットは図97に示すように、レジスタユニット0とレジスタユニット1とを有する。
【0396】
各レジスタユニットは、レジスタI/F、アクションコントローラ、割り込みコントローラとパワーステータスの各ブロックから構成される、GBIの各ブロックに設定地値を供給するほか、割り込みコントローラによって割り込みを制御し、パワーステータスにより省電力可能なブロックを制御している。
【0397】
[パワーステータス]
GBIにおいて省電力モード可能なユニットは、DMAコントローラとFIFOユニットである。省電力モードはfifoInSleep信号、dmaInSleep信号により、各ブロックのクロックをマスクすることで実現する。リセット時は、ともに省電力モードに入る。DMAコントローラは、マスタモードで起動をかけると自動的に起動し、GBIFIFOスリープレジスタのライトでスリープに入る。
【0398】
パワーステータスブロックから出力されるパワーマネージメントステータス信号(pmState[1:0])は、各チャネルで、
となる。
【0399】
DoEngineにおいては、スキャナコントローラ(Scc)やプリンタコントローラ(Prc)が接続されるGBIは、1のチャネルしかないので上のようになるが、2チャネル含む場合は各チャネルの値を合計し、次のように4段階に縮退させる。
【0400】
pmState[1:0] 00 level0
(両チャネルのFIFO、DMAがともに停止)
01 level1
(1チャネルのFIFOのみ動作)
10 level2
(両チャネルのFIFOが動作、DMAは両方停止)
11 level3
(両チャネルのFIFOが動作、DMAは1つは動作)
となる。
【0401】
パワーマネージメントステータス信号(pmState[1:0])は、IFBusを介して機能ブロックへ送られる。機能ブロックでは、この信号と機能ブロック自身の動作状態を基に、パワーマネージメントユニットへのパワーマネージメントステータス信号を生成する。
【0402】
(GBIの動作モード)
以上、GBIを構成する各部について説明した。ここで、GBIの動作についてまとめておく。GBIの動作モードには、大きく分けて以下のものがある。
【0403】
1.スレーブモード
2.マスタモード
マスタモードにおけるDMAの方式は、
A.対メモリ
B.対I/O(アドレス固定)
があり、対メモリDMAでは、
a.連続物理アドレス
b.不連続物理アドレス(転送先メモリがメモリ管理のページ単位で分割されていることを想定)
のメモリに対して転送を行う。また、対メモリDMAでは、逆方向モードもサポートする(チャネル1のみ)。
【0404】
連続物理アドレスに対するDMAは、先頭アドレス、一行の長さ、次の行までのピッチ、及び行数を指定する、いわゆる2次元DMAである。1次元の場合は行数を1とすることで実現する。
【0405】
不連続物理に対するDMAは、分割された各メモリブロックの先頭アドレスと長さをメモリ上に配置し、それを参照しながら、転送先のアドレスを計算し、DMAを行う。この先頭アドレスと長さの組をチェーンテーブルと呼ぶことにする。チェーンテーブルの一例を図98に示す。不連続物理アドレスに対するDMAでは、チェーンテーブルを配置したメモリアドレスとアドレス・長さの組の数を指定する。もちろん、チェーンテーブル自体は連続アドレスに配置しなければならないが、もし、全チェーンテーブルが連続領域に置けない場合には、先頭のアドレスの代わりに次のチェーンテーブルのアドレスを、長さに0を設定することで、チェーンテーブルをつなぐことができる。
【0406】
逆方向モードは、チェーンテーブルDMAの1ブロック、2次元DMAの1ラインをアドレスの大きい方から、小さい方へアクセスする。ブロックあるいはライン単位の逆方向の指示は、チェーンテーブルDMAでは、チェーンテーブルを逆になるように作る。ピッチ付きのDMAの場合は、ピッチの値を負の値(2の補数)を設定する。
【0407】
(割り込み制御)
次に割り込みの制御について説明する。DBIからの割り込みは、以下の条件で発生する。
【0408】
[マスタモード]
1.DMA正常終了
2.GBusでのDMA転送中のバスエラーの検出
3.BBusでのDMA転送中のバスエラーの検出
4.チェーンDMAモードでのチェーンテーブルリード中のバスエラーの検出
GBI停止レジスタによる強制終了の場合、DMAコントローラが各バスのコントローラに要求中の転送が正常に終了した時点で、正常終了となる。もし、要求中の転送がバスエラーとなった場合には、バスエラーによる異常終了となる。
【0409】
チャネル0では、機能ブロックがGBI内のFIFOに全データを書き込んだ時点で終了する(割り込みを発生する)が、FIFOにデータが残っている。GBIはFIFOのデータを転送した時に、DMA終了となるので、これをもって転送終了と判断する。
【0410】
チャネル1では、GBIはGBI内のFIFOに全データを書き込んだ時点で終了する(割り込みを発生する)が、FIFOにデータが残っている。機能ブロックはFIFOのデータを転送した時に、終了となるので、これをもって転送終了と判断する。
【0411】
[スレーブモード]
5.FIFOイリーガルアクセス
GBIに按続された機能ブロックとマスタとのデータの転送は、GBIのFIFOを介して行われる。
【0412】
GBus/BBusの両方使用する場合(DoEngineでは、GBus/BBusの両方使用可能なマスタはGBIのみ)には、両方のバスからの同時アクセスに対して、どちらのバスが最初にFIFOをアクセスするかを知る方法がない。マスタはGBus/BBusに対して、排他的に転送要求を行う必要がある(GBIのマスタモードでは排他的に転送要求している)。もし、GBus/BBusの両方が同時にFIFOにアクセスした場合には、FIFOイリーガルアクセスとなる。
【0413】
上記の1から5のいずれかが起こり、かつ対応する割り込み許可ビットが、”1”にセットされている場合に割り込みが発生する。
【0414】
(コアインターフェース)
図99に、GBIと、BBus/GBus/機能ブロックとのインターフェースをまとめたコアインターフェースの図を示す。GBIは、BBusスレーブ動作でバスエラーを発行しないので、bError(Func)Out_Lはない。また、GBIはBBusスレーブ動作でbInstNotData信号をチェックしないので、(func)bInstNotData_inはなく、(func)bInstNotData_outは、常に”0”をドライブする。
【0415】
また、GBIはGBusスレーブ動作でバスエラーを発行しないので、(func)gErr_L_outはない。
【0416】
なお、図99におけるGBIの信号名中のFunc(func)には、接続される機能ブロック、すなわちscc(スキャナコントローラ)あるいはprc(プリンタコントローラ)の名前を入れる。
【0417】
また、DoEngineでは、機能ブロックとして、スキャナコントローラのScc(scc)と、プリンタコントローラのPrc(prc)がある。いずれの場合もデータの流れが双方向でないので、不要なFIFO、DMAコントローラ、レジスタを削除した形でインプリメントする。
【0418】
(プリンタコントローラコアインターフェース)
図86は、プリンタコントローラ4303における、上述した各ブロックを含むコア部分と、外部バスやスキャナとの間で入出力される信号をまとめた図である。このように、プリンタコントローラ4303は、システムバスブリッジ402との間をGバスにより接続され、IOデバイスやパワーマネジメントデバイス及びシステムバスブリッジとの間をBバスにより接続され、プリンタコントローラとの間をCPバスで接続され、Gバス/BバスI/Fユニットとの間をI/Fバスにより接続されている。
【0419】
2.10.電力管理ユニット
図87は、電力管理ユニット409のブロック図である。
【0420】
DoEngineはCPUを内蔵した大規模なASICである。このため、内部のロジックが全部同時に動作してしまうと、大量の熱を発生し、チップ自体が破壊されてしまう恐れがある。これを防ぐために、DoEngineは、ブロック毎の電力の管理、すなわちパワーマネジメントを行ない、更にチップ全体の消費電力量の監視を行なう。
【0421】
パワーマネージメントは、それぞれのブロックが各自個別に行なう。各ブロックの消費電力量の情報は、パワーマネージメントレベルとして、電力管理ユニット(PMU)409に集められる。PMU409では、各ブロックの消費電力量を合計し、その値が限界消費電力を超えないように、DoEngineの各ブロックの消費電力量を一括して監視する。
【0422】
(動作)
電力管理ブロックの動作は次の通りである。
・各ブロックは、4段階のパワーマネジメントレベルを持つ。
・PMUは、それぞれのレベルにおける消費電力の値をレジスタとして持つ。このレベル構成及び消費電力の値は、PM構成レジスタ5401に保持される。
・PMUは、各ブロックからパワーマネジメントレベルを2ビットのステータス信号として受け取り(後述)、レジスタ5401に設定された値と照合させて各ブロックの消費電力を知る。
・PMUは各ブロックの消費電力を加算器5403で加算し、DoEngine全体の消費電力量をリアルタイムに計算する。
・算出された消費電力量は、構成レジスタ5401に設定された消費電力のリミット値(PMリミット)と比較器5404で比較され、これを超えた場合には割込発生器5405から割り込み信号を発行する。
・このリミット値は2段階設定することができる。1段階目は、本当の限界から少し余裕を持たせた値を設定しておく。この値を超えると、通常の割込み信号が発行される。ソフトウェアはこれを受けて、新たにブロックを起動するような転送は始めないようにする。ただ、2段階目のリミット値に達しない範囲内では、ソフトウェアの管理の元で、新たなブロックを起動することができる。2段階目のリミット値は、デバイスが破壊される恐れのある値を設定しておく。万が一、この値を超えてしまった時には、NMI(割込マスクが設定できない割り込み)を発行して安全のためにシステムを停止させる。
・割込み信号は、PMUの状態レジスタ5402をリードすることで解除される。この状態レジスタ5402をリードした時点からタイマカウントを始め、タイマがエクスパイアするまで消費電力量が戻らなければ、再び割込み信号を発行する。このタイマの値の設定はPMUの構成レジスタ5401に設定される。
【0423】
(各ブロックのパワーマネージメント)
各ブロックのパワーマネージメント制御は、ブロック毎に自由に構成してよい。構成例の例を示す。
【0424】
(構成例1)
この例では、内部ロジックへのクロックをオン/オフすることにより、パワーマネジメントを行なっているので、消費電力のレベルは2段階しか持っていない。このレベルをステータス信号として電力管理ユニット409に送る。図88にバスエージェントのブロック図を示す。
・バスエージェント5501は、各ユニット毎の内部ロジック5502、アドレスをデコードするデコーダ5503、クロックコントロール部5504、クロックゲート5505を含む。
・デコーダ5503とクロックコントロール部5504は常に動作しており、パワーマネージメントコントロールとして、バスのアクティビティーの監視、内部ロジックへのクロックのゲーティングを行なっている。
【0425】
(クロックコントロール)
・バスエージェントは、バスのアクティビティーを検出し、クロックのオン/オフを自動で行なう。
・バスエージェントには、Sleep, Wake Up, Waitの3つのステートがある。
・Sleepはバスエージェントにアクティビティーがなく、クロックゲートクロックを停止させている状態である。
・Sleepの状態でも、デコーダ部5503、クロックコントロール部5504は動作しており、バスをモニタリングして、要求を待っている。
・デコーダ5503が自分のアドレスを検出すると、クロックゲート5505を開き、内部ロジックのクロックを動作させ、バスの要求に応える。ステートはWake Upに移行する。また、この状態を電力管理ユニット409に通知する。・データ転送が終了すると、Waitステートに移行し、次の要求を待つ。この時クロックは動作したままである。要求があれば、Wake Upステートに戻り、転送を行なう。また、要求を待っている間はタイマによりカウントを行ない、要求がないままカウンタがタイムアップした場合は、Sleepステートへ移り、クロックを停止させる。この状態も電力管理ユニット409に通知される。
【0426】
以上のようにして、消費電力が所定値を越えないように管理している。
【0427】
(コピー動作)
上述の構成により、スキャナから読み込んだ画像データをそのままプリンタへ転送して、プリンタで画像形成する動作をコピー動作を行うことができる。本実施形態のDo Engineを用いたスキャナ/プリンタシステムでは、以下に示す3種類のコピーの方式がそのシステム構成に応じて選択される。
【0428】
(方式1)
第1の方式は、スキャナによる画像入力の垂直・水平タイミングと、プリンタによる画像出力の水平・垂直タイミングがそれぞれ一致していて、ビデオデータの転送速度も一致している組み合わせのシステムにおける方式である。
【0429】
垂直同期信号(VSYNC)はプリンタから出力されて、プリンタコントローラ(PRC)に入力される。このVSYNC信号は、プリンタコントローラ(PRC)からCPバスを介してスキャナコントローラ(SCC)に入力される。そして、スキャナコントローラ(SCC)からスキャナに対して出力される。これにより、プリンタとスキャナの垂直同期がとられる。水平同期についても、垂直同期信号VSYNCと同様に、水平同期信号(HSYNC)がプリンタから出力され、プリンタコントローラ,CP−バス,スキャナコントローラを介してスキャナに入力される。これによりスキャナとプリンタとの水平同期がとられる。このように、垂直方向及び水平方向の同期がとられてスキャナとプリンタが動作する。ビデオデータは同期用のビデオクロックとともにスキャナから出力される。出力されたビデオクロックとビデオデータはスキャナコントローラ(SCC)に入力され、CPバスを介して、プリンタコントローラ(PRC)に入力される。そして、プリンタコントローラ(PRC)からプリンタに出力される。プリンタではビデオクロックに同期してビデオデータを受け取り、画像出力をおこなう。
【0430】
このコピー動作は、図89に示す構成により行われる。このコピー動作ではGバスおよびBバスを使用せずにコピー動作がおこなわれる。
【0431】
このコピー動作中、画像データはCPバスを介してスキャナからプリンタへ直接転送されるが、同時にスキャナコントローラ(SCC)からGバスのDMA転送によってSDRAMへ書き込むことが可能である。コピー動作と同時にSDRAMに書き込まれた画像データは、必要に応じて画像データとして格納すること等が可能となる。また、SDRAM上の画像データをプリンタへ出力することにより、スキャナで読み取った画像データを複数部の出力することが、スキャナの動作なしに可能となる。
【0432】
(方式2)
第2の方式は、スキャナによる画像入力の水平タイミングと、プリンタによる画像出力の水平タイミングとが一致しており、垂直タイミングとビデオデータの転送速度がそれぞれ一致していない組み合わせのシステムにおける方式である。
【0433】
この場合のコピー動作を図90で説明する。スキャナが画像を読み取り始めると、垂直同期信号(VSYNC)、水平同期信号(HSYNC)、ビデオクロックという3つのタイミング信号がスキャナコントローラ(SCC)に入力される。ビデオクロックに同期してビデオデータもスキャナコントローラ(SCC)に入力される。上記タイミング信号に同期して、スキャナコントローラ(SCC)はビデオデータを内部のFIFO(FIFO_SCC)に取り込む。FIFO_SCCに画像データが入り始めると同時に、FIFO_SCCから、スキャナのGバス/BバスI/Fユニット4301A(GBI_SCC)のFIFO(FIFO_GBI_SCC)にデータ転送が開始される。スキャナからの画像データは、FIFO_SCCを介して順次FIFO_GBI_SCCに転送される。FIFO_GBI_SCCにデータが入り始めると、プリンタのGバス/BバスI/Fユニット4301B(GBI_PRC)がマスターで、スキャナのGバス/BバスI/Fユニット4301A(GBI_SCC)がスレーブとなるDMA転送が開始される。この時のバスは、Gバスが空いていればそちらを利用するが、空いていなければBバスであっても良い。
【0434】
このDMA転送により、FIFO_SCCの画像データはGBI_PRC内のFIFO(FIFO_GBI_PRC)へ転送される。FIFO_GBI_PRCの画像データは、順次プリンタコントローラ(PRC)のFIFO(FIFO_PRC)へ転送される。FIFO_PRCに画像データが入り始めると、プリンタコントローラ(PRC)はプリンタに垂直同期信号(VSYNC)を入力する。プリンタからは、VSYNCのタイミングにより、水平同期信号(HSYNC)とビデオクロックを出力しはじめる。プリンタコントローラ(PRC)は水平同期信号HSYNCで水平同期をとり、ビデオクロックに同期して、ビデオデータをFIFO_PRCから出力する。そのビデオデータをプリンタが画像出力する。
【0435】
このコピー動作の場合、画像データは、スキャナ, スキャナコントローラのFIFO(FIFO_SCC), Gバス/BバスI/FユニットのFIFO(FIFO_GBI_SCC),Gバス/BバスI/FユニットのFIFO(FIFO_GBI_PRC),プリンタコントローラのFIFO(FIFO_PRC), プリンタの順で転送されて、画像コピー動作がなされる。水平同期の間隔はスキャナとプリンタとで同一であるので、画像データの転送速度の違いは各FIFOにより緩衝される。
【0436】
(方式3)
第3の方式は、スキャナとプリンタの垂直同期タイミング、水平同期タイミング、ビデオデータの転送速度がそれぞれすべて異なる組み合わせのシステムにおける方式である。
【0437】
この場合のコピー動作を図91により説明する。スキャナで画像の読み取りが開始すると、スキャナは垂直同期信号(VSYNC)、水平同期信号(HSYNC)、ビデオクロックをスキャナコントローラ(SCC)に出力する。これらのタイミング信号に同期して画像データが出力される。スキャナコントローラ(SCC)は上記タイミング信号に同期して画像データを取り込む。取り込まれた画像データはGBI_SCCにより、DMA転送でメモリコントローラ(MC)403へ転送される。MC403では、DMA転送された画像データをSDRAMに書き込む。SDRAMに書き込まれた画像データの量が、スキャナとプリンタの画像データ転送速度の差を緩衝できる量に達すると、プリンタへの画像データ転送が開始される。この画像データ量の判定は、スキャナからのデータ転送時間による判定、SDRAMに書き込まれるアドレスによる判定、GBI_SCCにおけるDMA転送量の判定等、種々の方式がある。
【0438】
プリンタへの画像データ転送はプリンタコントローラ(PRC)により行われる。プリンタコントローラ(PRC)は、GBI_PRCのDMA転送により、SDRAMに書き込まれた画像データを順次内部のFIFOへ入力する。同時にプリンタへ垂直同期信号(VSYNC)を出力する。その後、プリンタからは水平同期信号(HSYNC)とビデオクロックを入力する。このHSYNCとビデオクロックと同期して、プリンタコントローラ(PRC)は内部のFIFOから画像データをプリンタへと出力する。上記画像データの流れにより、スキャナで読み取られた画像データをプリンタから出力するコピー動作がおこなわれる。この場合の画像データの流れは、スキャナ,スキャナコントローラ, スキャナのGバス/BバスI/Fユニット(GBI_SCC),メモリコントローラ(MC),SDRAM,メモリコントローラ(MC),プリンタのGバス/BバスI/Fユニット(GBI_PRC),プリンタコントローラ(RRC),プリンタの順となる。このように、一旦メモリに格納し、それをスキャナとプリンタとの間の緩衝メモリとして、スキャナからプリンタへと画像データを転送し、コピーを行う。
【0439】
本システムは上記3方式のコピー動作機能を有する。(方式1)、(方式2)、(方式3)の順でコピー動作時に動作する内部ブロックが多くなる。内部ブロックの使用率が増加すると、システム全体のパフォーマンスが効率を低下させる要因となりうる。本システムは接続されるデバイス(プリンタ・スキャナ)に応じて、システム全体が最も効率的なコピー動作方式を選択することが可能である。
【0440】
コピー方式を選択する方法としては、例えば次のようなものがある。
▲1▼UART等を介して指定するコピー方式そのものを入力させ、指定された方式でコピー動作を行う。
▲2▼プリンタとスキャナのデータ転送速度や水平・垂直同期周波数等、必要なパラメタをUART等から入力させ、それらの値に応じて上記3通りの方式からCPU401がひとつを選択し、その方式でコピー動作を行わせる。
▲3▼プリンタコントローラがプリンタのデータ転送速度や水平・垂直同期周波数等、必要なパラメタを読取り、スキャナコントローラがスキャナからデータ転送速度や水平・垂直同期周波数等、必要なパラメタを読取り、それらをCPU401により比較判定してコピー動作の方式を決定する。
【0441】
上記▲1▼〜▲3▼の方法で決定された、あるいは選択されたコピー方式はCPUからプリンタコントローラ及びスキャナコントローラに知らされ、その方式でプリンタコントローラ及びスキャナコントローラ等によりコピーを行わせる。
【0442】
次に、上記▲3▼の方式でコピー方式を決定する手順を説明する。
【0443】
図100は、CPU401による、3通りのコピー方式からシステムで使用するコピー方式を選択する手順のフローチャートである。この動作はシステムの電源立ち上げ時、ステップS1から開始される。
【0444】
ステップS2では、プリンタの種別の判定が行われる。CPU401はプリンタコントローラ4303を介して、プリンタビデオI/Fに含まれるコマンド/ステータスラインを通じて、プリンタから種別を示すIDを取得する。このコマンド/ステータスラインは、プリンタコントローラとプリンタとが1対1にコマンド/ステータスのやりとりができるシリアル通信ラインである。
【0445】
ステップS3では、同様にCPUがスキャナコントローラ4302を介して、スキャナビデオI/Fに含まれるコマンド/ステータスラインを通じ、スキャナから種別を示すIDを取得する。
【0446】
ステップS4では、ステップS2とS3で判定された、スキャナとプリンタの組み合わせに適したコピー経路の判定が行われる。スキャナとプリンタの組み合わせに適したコピー経路の判定は、あらかじめテーブルの形式で、例えば、フラッシュROM等のCPUが参照可能なメモリに準備されている。各コピー経路に適したスキャナとプリンタの組み合わせは次のようなものがある。 (方式1)スキャナとプリンタの水平、垂直タイミングが同期していて、ビデオデータの転送速度も同期している組み合わせ
(方式2)スキャナとプリンタの水平同期タイミングの速度が同一で、垂直タイミングとビデオデータの転送速度は同期していない組み合わせ
(方式3)スキャナとプリンタの垂直同期タイミング、水平同期タイミング、ビデオデータの転送速度がそれぞれ異なる組み合わせ
CPUは、あらかじめ用意されたテーブル参照において、上記3方式から適切なコピー方式を選択する。
【0447】
ステップS5では、ステップS4で選択されたコピー方式に応じたモード設定がスキャナコントローラ4302に対してなされる。このモード設定は、CPUがBBusを介して行う。
【0448】
図101は、スキャナコントローラ4302内部のデータバスの切り換え回路を示す図である。なお、データバスセレクタは、図44のスキャナデバイスI/F4401に含まれる。また、データバスの切り替えの説明に不用なスキャナビデオクロックユニット等は省略した。
【0449】
レジスタ1には、データバスのモードが設定される。CPUは、図100のステップS4において選択したコピー方式に応じたモードをレジスタ1に設定する。セレクト制御信号4は、モード設定レジスタ1に設定されたモードに応じてデータパスを選択するための信号である。スキャナビデオバス2は、スキャナからのビデオデータのバスである。バス5は、スキャナからのビデオデータをFIFO_SCC6に転送するバスである。CPビデオバス7は、(方式1)のコピー動作を行う場合に使用されるバスである。スキャンビデオバスからのビデオデータは(方式1)の場合はCPビデオバス7に出力するようにデータパスがセレクトされる。(方式2)、(方式3)の場合にはバス5にビデオデータが出力されて、FIFO_SCC4407に転送される。
【0450】
図100で、次にステップS6に移行する。ステップS6では、GBI_sccの動作モード設定を行う。このモード設定はCPUがステップS4で選択したコピー方式に基づいて行う。(方式1)では、GBI_sccは非動作指定される。(方式2)では、DMA転送のマスター指定がなされ、DMAの転送先にはGBI_prcが設定される。(方式3)ではDMA転送のマスター指定がなされ、DMAの転送先にはSDRAMが設定される。
【0451】
次にステップS7では、GBI_prcの動作モード設定を行う。このモード設定はCPUがステップS4で選択したコピー方式に基づいて行う。(方式1)では、GBI_prcは非動作指定がなされる。(方式2)ではDMA転送のスレーブ指定がなされる。(方式3)では、DMA転送のマスター指定がなされ、DMA転送の読み出しもとはSDRAMが設定される。
【0452】
次にステップS8では、プリンタコントローラのモード設定がなされる。このモード設定はステップS4で選択されたコピー方式に基づいてCPUが行う。
【0453】
図102は、プリンタコントローラ4303内部のデータバスの切り換え回路を示す図である。レジスタ11には、データバスのモードが設定される。CPUは、図100のステップS4において選択したコピー方式に応じたモードをレジスタ11に設定する。セレクト制御信号14は、モード設定レジスタ11に設定されたモードに応じてデータバスのセレクトを行う信号である。バス15は、FIFO_PRC16から出力されるデータのバスである。バス12は、プリンタへのビデオデータバスである。CPビデオバス17は、(方式1)のコピー動作を行う場合に使用する。プリンタへのビデオデータは(方式1)の場合はCPビデオバスのデータがセレクトされ、出力される。(方式2)、(方式3)の場合にはバス15からのデータがプリンタビデオバス12に出力される。
【0454】
ステップS9で、電源立ち上げ時のコピー方式選択のフローが終了する。以上のようにして、CPUはスキャナ及びプリンタの種別に応じたコピー方式を決定することができる。
【0455】
なお、上述の手順はスキャナ及びプリンタの垂直同期タイミング、水平同期タイミング、ビデオデータの転送速度に基づいて、コピー動作の方式を決定する手順であるが、単なるコピーでなく、画像の加工が加わる場合にはこの限りではない。すなわち、図100のステップ2の前に、画像データを加工するか否かを判定し、画像データを加工する場合には、スキャナ及びプリンタの仕様に関わりなく、方式3を選択し、ステップS5〜S8における設定では、データの径路が方式3になるよう各ブロックの設定を行う。こうすることで、画像データを加工する場合には読み込んだ画像データはいったんメモリに格納されるため、そこで画像データに対して必要な加工を施すことができる。
【0456】
また、方式2あるいは方式3ではバスを使用する。この際、GバスあるいはBバスのいずれを使用するかは、各バスの使用状況により決定される。すなわち、Gバス/Bバスともにアイドル状態であれば、バス幅の広いGバスを使用する。いずれかが使用中であれば、未使用の方を使用する。
【0457】
以上説明したように、DoEngineにおいては、スキャナは、スキャナコントローラ4302及びGBI_SCC4301Aを介してバス(Gバス及びBバス)に接続されている。スキャナコントローラ4302及びGBI_SCC4301Aは、それぞれFIFOを介して互いに画像データを転送するように接続されている。このように、それぞれがFIFOを有しているために、GBIは、64ビット幅で動作クロックが100MHzという非常に高速なGバスに接続されているにも関わらず、比較的低速なスキャナから読み込まれた画像データを効率的に転送することができる。これは、プリンタコントローラに関しても同様である。
【0458】
さらに、スキャナとプリンタそれぞれの同期信号の一致・不一致に応じて、コピー時のデータ経路を選択することで、スキャナ及びプリンタの仕様がどのようなものであろうとも、可能な限り速いデータ転送を用いてコピーを行うことができる。
【0459】
すなわち、上述のスキャナコントローラ及びプリンタコントローラ及びそれぞれのGBIを用いてスキャナ及びプリンタをDoEngineのバスに接続することで、スキャナ及びプリンタの仕様からのDoEngineの独立性をより高めることが可能となった。
[その他の構成例]
図9及び図10で示したキャッシュの動作手順は、図103及び図104のようなものであってもよい。
【0460】
図103においては、MCバスよりデータ転送が開始されると、その最初にMCバスで示されるmTType[60:0]によってその転送をキャッシュオンで行うかオフで行うか判断される。ここでは、転送がバースト転送の時、そのバースト転送データ量がキャッシュの1ラインのデータ量より大か小かによって判断する。なお、キャッシュの1ラインは256ビット=4バースト分である。
【0461】
図103において、メモリコントローラは転送の開始でmTType[3:0]をチェックし、mTTypeが示すバースト長が1/2/4であれば、キャッシュオンで動作し、6/8/16/2×16/3×16/4×16の場合はキャッシュオフで動作する。キャッシュオンあるいはオフ後の動作は、図9及び図10と同様である。
【0462】
また、図105及び図106のように、デバイスによってキャッシュのオンオフを切り替えることもできる。図105において、メモリコントローラは転送の開始でmTType[6:4]をチェックすることにより転送要求デバイスを識別し、そのデバイスの転送要求をキャッシュオンで動作するか、オフで動作するかを判断するために、あらかじめ設定されている構成レジスタの値を参照し、キャッシュオンで動作するか、オフで動作するか決定する。キャッシュオンあるいはオフ後の動作は、図9及び図10と同様である。構成レジスタの設定は、ハードウエア的に決定(変更不可)していも良いし、ソフトウエアで書換え可能にしてもよい。
【0463】
【発明の効果】
以上説明したように、本発明では、高速な画像データの転送と画像データのバウンダリに合わせた画像データの転送とを両立することができる。このため、転送した量のデータを、転送したいメモリアドレスに、高速に転送することが可能となった。また、2次元DMAに関しても高速な画像データの転送と画像データのバウンダリに合わせた画像データの転送とが両立され、高速な2次元DMAによるデータ転送が可能となった。
【図面の簡単な説明】
【図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】Bバスインターフェースのブロック図である。
【図22】Gバスインターフェース2006のブロック図である。
【図23】仮想メモリマップ、物理メモリマップ、Gバスのアドレス空間でのメモリマップ、Bバスのアドレス空間でのメモリマップの図である。
【図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】Bバスアービタ407のブロック図である。
【図41】同期ユニット4001のブロック図である。
【図42】同期ユニット内の一つコンペアユニットの図である。
【図43】スキャナ/プリンタコントローラのブロック図である。
【図44】スキャナコントローラ4302のブロック図である。
【図45】スキャナデバイスI/F4401のブロック図である。
【図46】スキャナビデオクロックユニット4402のブロック図である。
【図47】スキャナビデオデータマスク4601のブロック図である。
【図48】スキャナビデオデータマスク4602のブロック図である。
【図49】スキャナビデオデータ幅コンバータ4603のブロック図である。
【図50】RGB各8ビットのカラー画像データ(24ビット格納モード)のメモリ上でのならびを示す図である。
【図51】RGB各8ビットのカラー画像データ(32ビット格納モード)のメモリ上でのならびを示す図である。
【図52】8ビットの白黒画像データのメモリ上でのならびを示す図である。
【図53】2値の白黒画像データのメモリ上でのならびを示す図である。
【図54】BW8パッキングユニット4901により、多値8ビットの白黒画像データを64ビット幅に変換する際のタイミング図である。
【図55】シフトレジスタ4902により2値白黒画像データを64ビット幅に変換する際の画像データ入力のタイミング図である。
【図56】RGBパッキングユニット4903により、RGB各8ビット(全24ビット)の画像データを64ビット幅に変換する際のタイミング図である。
【図57】RGBパッキングユニット4903のブロック図である。
【図58】スキャナ画像データ転送FIFOコントローラ4403のブロック図である。
【図59】スキャナコントローラコントロールレジスタ4404のブロック図である。
【図60】 IRQコントローラ4406のブロック図である。
【図61】メモリフィルモードコントローラ4405のブロック図である。
【図62】スキャナコントローラ4302からデータを読み出してDMA転送する際のタイミング図である。
【図63】スキャナコントローラ4302の内部レジスタに対して読み出しあるいは書き込みを行うタイミング図である。
【図64】信号sccDmaPmStateの値及びクロックの状態と信号sccPmStateの値との関係を示す図である。
【図65】スキャナコントローラ4302における、各ブロックを含むコア部分と外部バスやスキャナとの間で入出力される信号をまとめた図である。
【図66】プリンタコントローラ4303のブロック図である。
【図67】プリンタデバイスI/F6601のブロック図である。
【図68】プリンタビデオクロックユニット6602のブロック図である。
【図69】プリンタビデオデータマスク6801のブロック図である。
【図70】プリンタビデオ同期コントロールユニット6802のブロック図である。
【図71】ビデオデータ幅コンバータ6803のブロック図である。
【図72】RGB各8ビットのカラー画像データ(24ビット格納モード)のメモリ上でのならびを示す図である。
【図73】RGB各8ビットのカラー画像データ(32ビット格納モード)のメモリ上でのならびを示す図である。
【図74】8ビットの白黒画像データのメモリ上でのならびを示す図である。
【図75】2値の白黒画像データのメモリ上でのならびを示す図である。
【図76】 RGBoutユニット7101のブロック図である。
【図77】プリンタ画像データ転送FIFOコントローラ6603のブロック図である。
【図78】プリンタコントローラコントロールレジスタ6604のブロック図である。
【図79】IRQコントローラ6605のブロック図である。
【図80】IRQコントローラ6605のブロック図である。
【図81】プリンタコマンド/ステータスコントロールユニット6606のブロック図である。
【図82】オプションコントローラコントロールユニット6607のブロック図である。
【図83】プリンタコントローラ4303へデータをDMA転送する際のタイミング図である。
【図84】プリンタコントローラ4303の内部レジスタに対して読み出しあるいは書き込みを行うタイミング図である。
【図85】信号pscDmaPmStateの値及びクロックの状態と信号prcPmStateの値との関係を示す図である。
【図86】プリンタコントローラ4303における、各ブロックを含むコア部分と外部バスやスキャナとの間で入出力される信号をまとめた図である。
【図87】電力管理ユニット409のブロック図である。
【図88】バスエージェントのブロック図である。
【図89】スキャナコントローラからプリンタコントローラへと直接画像データを転送してコピーする画像のコピー方式で使用されるブロックを示す図である。
【図90】スキャナコントローラからプリンタコントローラへと、FIFOを介して画像データを転送してコピーする画像のコピー方式で使用されるブロックを示す図である。
【図91】スキャナコントローラからプリンタコントローラへと、メモリを介して画像データを転送してコピーする画像のコピー方式で使用されるブロックを示す図である。
【図92】GBIのブロック図である。
【図93】FIFOユニットのブロック図である。
【図94】GBusコントローラのブロック図である。
【図95】BBusコントローラのブロック図である。
【図96】DMAコントローラのブロック図である。
【図97】レジスタユニットのブロック図である。
【図98】チェインテーブルの構成例を示す図である。
【図99】GBIのコアインターフェースを示す図である。
【図100】コピー方式を選択する手順のフローチャートである。
【図101】スキャナコントローラ4302内部のデータバスの切り換え回路を示す図である。
【図102】プリンタコントローラ4303内部のデータバスの切り換え回路を示す図である。
【図103】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図104】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図105】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図106】MCバスよりメモリリード/ライト転送が要求された場合のキャッシュの動作の他の例を示すフローチャートである。
【図107】PCIのコンフィグレーションを判定する機構の一例を示す図である。
【符号の説明】
401 CPU
402 バスブリッジ
403 メモリ
404 Gバス
405 Bバス
406 Gバスアービタ
407 Bバスアービタ
4301A Gバス/Bバスインターフェース(スキャナ)
4301B Gバス/Bバスインターフェース(プリンタ)
4302 スキャナコントローラ
4303 プリンタコントローラ
Claims (6)
- 画像データを転送するためのバス制御装置であって、
画像データを入力する入力手段と、
メモリに接続され、入力された画像データをバースト転送モードで前記メモリに転送するための第1のデータバスと、
前記メモリに接続され、入力された画像データをシングル転送モードで前記メモリに転送するための第2のデータバスと、
転送される画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致しているか否か判定する判定手段と、
前記判定手段により画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致していると判定された場合、前記画像データを前記第1のデータバスによりバースト転送モードで転送し、画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致していないと判定された場合、前記画像データを前記第2のデータバスによりシングル転送モードで転送する制御手段と
を備えることを特徴とするバス制御装置。 - 前記制御手段は、所定サイズのメモリ空間に画像データを転送する2次元DMA転送を行うことを特徴とする請求項1に記載のバス制御装置。
- 前記制御手段は、半導体基板上に集積されていることを特徴とする請求項1または2に記載のバス制御装置。
- 画像データを転送するための制御装置であって、
メモリに接続され、前記メモリに格納された画像データをバースト転送モードで出力部に転送するための第1のデータバスと、
前記メモリに接続され、前記メモリに格納された画像データをシングル転送モードで前記出力部に転送するための第2のデータバスと、
転送される画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致しているか否か判定する判定手段と、
前記判定手段により画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致していると判定された場合、前記画像データを前記第1のデータバスによりバースト転送モードで転送し、画像データのバウンダリがバースト転送モードで転送されるデータのバウンダリと一致していないと判定された場合、前記画像データを前記第2のデータバスによりシングル転送モードで転送する制御手段と
を備えることを特徴とする制御装置。 - 前記制御手段は、所定サイズのメモリ空間に画像データを転送する2次元DMA転送を行うことを特徴とする請求項4に記載のバス制御装置。
- 前記制御手段は、半導体基板上に集積されていることを特徴とする請求項4または5に記載のバス制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05595399A JP3976927B2 (ja) | 1999-01-25 | 1999-01-25 | バス制御装置 |
US09/492,518 US6708236B1 (en) | 1999-01-25 | 2000-01-27 | Bus control apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05595399A JP3976927B2 (ja) | 1999-01-25 | 1999-01-25 | バス制御装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000215155A JP2000215155A (ja) | 2000-08-04 |
JP2000215155A5 JP2000215155A5 (ja) | 2005-10-13 |
JP3976927B2 true JP3976927B2 (ja) | 2007-09-19 |
Family
ID=13013450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05595399A Expired - Fee Related JP3976927B2 (ja) | 1999-01-25 | 1999-01-25 | バス制御装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6708236B1 (ja) |
JP (1) | JP3976927B2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6850995B1 (en) * | 1999-01-25 | 2005-02-01 | Canon Kabushiki Kaisha | Control unit selectively connected with a first bus and a second bus for controlling a displaying process in parallel with a scanning process |
JP3740379B2 (ja) * | 2000-04-19 | 2006-02-01 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
US7315388B2 (en) * | 2001-01-24 | 2008-01-01 | Canon Kabushiki Kaisha | Image input/output control apparatus, image processing apparatus, image processing method, data communication apparatus, and data communication method |
US7058779B1 (en) * | 2001-03-05 | 2006-06-06 | Advanced Micro Devices, Inc. | Computer system initialization via boot code stored in a non-volatile memory having an interface compatible with synchronous dynamic random access memory |
ATE367610T1 (de) * | 2001-12-07 | 2007-08-15 | Renesas Technology Europ Ltd | Busbrücke mit einem burst-übertragungsmodebus und einem einzel-übertragungsmodebus |
US7130072B2 (en) * | 2002-02-08 | 2006-10-31 | Canon Kabushiki Kaisha | Multifunction system, image processing method, computer program and memory medium |
JP4054598B2 (ja) | 2002-04-25 | 2008-02-27 | キヤノン株式会社 | メモリ制御回路、dma要求ブロック及びメモリアクセスシステム |
JP4144395B2 (ja) * | 2003-03-25 | 2008-09-03 | ブラザー工業株式会社 | 画像処理装置およびそれを備えた画像形成装置 |
JP4069078B2 (ja) * | 2004-01-07 | 2008-03-26 | 松下電器産業株式会社 | Dram制御装置およびdram制御方法 |
JP4748077B2 (ja) * | 2007-02-14 | 2011-08-17 | セイコーエプソン株式会社 | 画素データ転送制御装置及び画素データ転送制御方法 |
CN101996390B (zh) * | 2010-10-20 | 2013-11-06 | 中兴通讯股份有限公司 | 一种图像拷贝的方法和装置 |
CN109062850B (zh) * | 2018-08-09 | 2021-10-15 | 广州麦芮声电子有限公司 | 一种单片机的数据发送和接收方法 |
CN113722251B (zh) * | 2020-05-26 | 2023-12-26 | 上海汽车变速器有限公司 | 用于功能安全监控的双线spi通信系统及方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179663A (en) * | 1988-02-19 | 1993-01-12 | Hitachi, Ltd. | Data transfer controller |
JPH05165762A (ja) * | 1991-12-13 | 1993-07-02 | Toshiba Corp | Dmaコントローラ |
JP3490131B2 (ja) * | 1994-01-21 | 2004-01-26 | 株式会社ルネサステクノロジ | データ転送制御方法、データプロセッサ及びデータ処理システム |
US5628026A (en) * | 1994-12-05 | 1997-05-06 | Motorola, Inc. | Multi-dimensional data transfer in a data processing system and method therefor |
US5748921A (en) * | 1995-12-11 | 1998-05-05 | Advanced Micro Devices, Inc. | Computer system including a plurality of multimedia devices each having a high-speed memory data channel for accessing system memory |
US6006289A (en) * | 1996-11-12 | 1999-12-21 | Apple Computer, Inc. | System for transferring data specified in a transaction request as a plurality of move transactions responsive to receipt of a target availability signal |
US6145028A (en) * | 1997-12-11 | 2000-11-07 | Ncr Corporation | Enhanced multi-pathing to an array of storage devices |
JP2000211216A (ja) | 1999-01-25 | 2000-08-02 | Canon Inc | 複合機器の情報処理方法及びシステム |
-
1999
- 1999-01-25 JP JP05595399A patent/JP3976927B2/ja not_active Expired - Fee Related
-
2000
- 2000-01-27 US US09/492,518 patent/US6708236B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6708236B1 (en) | 2004-03-16 |
JP2000215155A (ja) | 2000-08-04 |
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 | |
JP4500373B2 (ja) | 一体化システムメモリおよび改良されたバス同時実行性を有するコンピュータシステム | |
US8117359B2 (en) | Memory control apparatus and method | |
US6697898B1 (en) | Information processing system for composite appliance | |
JP3976927B2 (ja) | バス制御装置 | |
US6347202B1 (en) | Control device and control method for composite appliance | |
US6480916B1 (en) | Information processing method and system for composite appliance | |
KR19990044934A (ko) | 데이타처리시스템 및 마이크로컴퓨터 | |
EP1001606B1 (en) | Image input/output control system | |
US6604151B1 (en) | Control apparatus for composite appliance | |
JP7468112B2 (ja) | インタフェース回路およびインタフェース回路の制御方法 | |
JP2004046851A (ja) | バス管理装置及びそれを有する複合機器の制御装置 | |
JP4136163B2 (ja) | データ入出力装置およびデータ入出力装置のコントローラ | |
JP2000215157A (ja) | バス制御装置 | |
JP2004030672A (ja) | バス管理装置及びそれを有する複合機器の制御装置及びバス管理方法 | |
JP2000215156A (ja) | 複合機器の情報処理システム | |
JP2000211215A (ja) | 複合機器の制御装置 | |
JP5094050B2 (ja) | メモリ制御装置、メモリ制御方法および組み込みシステム | |
JP2004062887A (ja) | 電力管理装置及びそれを有する複合機器の制御装置 | |
JP3206656B2 (ja) | バス上でのプリフェッチ装置およびプリフェッチ方法 | |
JPH11212903A (ja) | データ処理システム、周辺装置及びマイクロコンピュータ | |
JP2007108882A (ja) | メモリコントローラ及びメモリ制御方法と情報処理装置 | |
JP3669616B2 (ja) | マイクロコンピュータ及びデータ処理システム | |
JP2004220486A (ja) | メモリ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050610 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050610 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7426 Effective date: 20050610 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20050610 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070530 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070611 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070620 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100629 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110629 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120629 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120629 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130629 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |