以下に、図面を参照しながら本発明の実施の形態を説明する。
図1には、本発明の実施の形態に係るデータ処理システム10の概略構成を示している。このデータ処理システム10は、中央演算装置であるCPU12及び、データやプログラムなどを記憶する記憶媒体であるメモリ14を備えている。また、データ処理システム10では、データ伝送路の一例とするデータバス、アドレスバス及びコントロールバスによって形成されるPCIバス(Peripheral Component Interconnect Bus)16が設けられており、このPCIバス16にCPU12及びメモリ14が接続されている。
このデータ処理システム10では、PCIバス16に、PCIボード、各種のデバイス、周辺機器など(以下、総称して周辺機器18とする)が接続されている。なお、図1では、一例として2台の周辺機器18A、18Bが接続された構成を図示している。
また、データ処理システム10には、ダイレクトメモリアクセスコントローラ(DMAC:Direct Memory Access Controller)を構成要素とするメモリコントローラ20とする)が設けられており、メモリ14は、メモリコントローラ20を介してPCIバス16に接続されている。このメモリコントローラ20は、CPU12、周辺機器18などからのアクセス要求に基づいたデータ転送と、メモリ14へのデータの書き込み及びデータの読出しを制御する。すなわち、データ処理システム10では、PCIバス16を介して、CPU12及び周辺機器18とメモリ14との間でのデータ転送が可能となっている。
なお、本実施の形態では、データ伝送路としてPCIバス16を例に説明するが、本発明はこれに限るものではなく、データ転送が管理される任意のデータ伝送路に適用することができる。
また、メモリ14としては、半導体記憶素子を用いて良いが、これに限らず、記憶されているデータの読出し又はデータの読出し及び書き込みが可能な任意の記憶媒体を用いることができる。
このようなデータ処理システム10は、CPU12によって各種の処理や制御を行う電子機器に設けることができ、CPU12は、例えば、画像データなどの情報に対して、作成、加工、編集などの処理を行い、これにより得られた情報(以下、データとする)をメモリ14に格納する。データ処理システム10では、メモリコントローラ20を設けることにより、メモリ14に格納したデータに対して、PCIバス16に接続された周辺機器18からのデータ転送が可能となる。
すなわち、データ処理システム10では、CPU12、周辺機器18とメモリ14との間でPCIバス16を介したデータ転送が可能となっている。このとき、データ処理システム10では、CPU12、周辺機器18及びメモリコントローラ20のそれぞれがバスマスタとなって、メモリ14へのアクセス要求、メモリ14から読み出したデータ転送を制御する。
これにより、データ処理システム10では、周辺機器18のそれぞれが、PCIバス16を介してメモリ14にアクセスして、メモリ14との間でデータの転送を行なうDMA(Direct Memory Access)転送が可能となっている。
また、データ処理システム10が設けられる電子機器としては、周辺装置18として、画像データ(例えばラスタデータ)に基づいて記録紙等の画像記録媒体に画像を形成する印刷出力装置などの画像形成手段を設けた画像形成装置に適用することができる。
このときには、例えば画像データが入力されることにより、CPU12で所定の画像処理を行うと共に、画像形成用のデータとしてラスタデータを生成し、このラスタデータをメモリ14に格納する。印刷出力装置として設けられる周辺機器18は、このラスタデータをメモリ14から読み出して、ラスタデータに基づいた画像形成処理を実行する。
ところで、メモリコントローラ20には、アクセス要求保持回路22が設けられている。このアクセス要求保持回路22は、CPU12、周辺機器18からのメモリ14に対するデータ書込み要求、データ読出し要求等(以下、総称してアクセス要求とする)を順に蓄積して保持する。メモリコントローラ20は、アクセス要求保持回路22に保持されたアクセス要求を、蓄積した順に読み出して、アクセス要求に基づいたデータ転送処理等を行うようにしている。すなわち、アクセス要求保持回路22は、メモリコントローラ20内でFIFO(First in First out)型のキュー(Queue)を形成している。
なお、アクセス要求保持回路22では、所定量のアクセス要求を蓄積して保持可能となっており、メモリコントローラ20では、アクセス要求保持回路22に保持されたアクセス要求が前記所定量に達すると、新たなアクセス要求を行ったCPU12又は周辺機器18に対して、リトライを要求し、新たなアクセス要求の蓄積に先立って、アクセス要求保持回路22に保持されているアクセス要求に対する処理を実行するようにしている。
一方、データ処理システム10には、CPU12、周辺機器18及びメモリコントローラ20がデータ転送を行なうときのPCIバス16の使用権(アービトレーション)を調停する調停手段としてPCIバスアービタ24が設けられている。
このPCIバスアービタ24には、CPU12、各周辺機器18及びメモリコントローラ20の間で、優先順位が設定されており、この優先順位に基づいて、ラウンドロビン方式でCPU12、周辺機器18及びメモリコントローラ20に、PCIバス16の使用権を付与する。
データ処理システム10では、PCIバスアービタ24と、CPU12、周辺機器18A、18B及びメモリコントローラ20のそれぞれとの間に、信号線26が設けられ、PCIバスアービタ24と、CPU12、周辺機器18A、18B及びメモリコントローラ20が信号線26によって接続されている。
PCIバスアービタ24は、PCIバス16の使用権を付与するデバイスに対して信号線26を介してアービトレーション信号を出力する。CPU12、周辺機器18及びメモリコントローラ20は、アービトレーション信号を受信することにより、PCIバス16の使用権が付与されたことを認識可能となっている。
ここで、本実施の形態の作用として、先ず、アクセス要求保持回路22を設けたメモリコントローラ20の動作を説明する。
メモリコントローラ20は、CPU12、周辺機器18A、18Bなどのメモリ14に対する要求元からのアクセス要求があると、このアクセス要求をアクセス要求保持回路22に蓄積して保持しながら、アクセス要求に対する処理を行い、処理が終了すると、該当アクセス要求を削除(消去)する。また、メモリコントローラ20は、アクセス要求に対する処理を行っているときに、新たなアクセス要求を受信すると、受信したアクセス要求をアクセス要求保持回路22に順に蓄積して保持する。
一方、周辺機器18がメモリ14に格納されているデータを取得するときに、データ読込み要求を行うと、メモリ14から読み出されたデータが要求元の周辺機器18に転送されるまで、要求元がPCIバス16を占有することになる。
これに対して、データ書込み要求を用いて、メモリ14に記憶されているデータを読み出すようにした場合、PCIバス16の占有時間を短くすることができる。なお、以下では、一例としてPCIバス16を32bit/66MHzとして、CPU12、周辺機器18及びメモリコントローラ20のそれぞれは、32Byteのデータをバースト転送するものとして説明する。
図2(A)には、データ読込み要求(Data Read)によって32Byteのデータをバースト転送によって読み込む(8バーストリード)時のPCIバス16上の信号状態の概略を示しており、データ読込み要求を行うと、メモリコントローラ20がメモリ14にアクセスする時間が必要となり、少なくとも18サイクル(clk)のPCIバス16の占有が必要となる。なお、Addはアドレスデータを示し、D0〜D7はデータを示す。
図2(B)には、データ書込み要求によって32Byteのデータを、例えば、メモリコントローラ20から周辺機器18へバースト転送して書き込む(8バーストライト)時のPCIバス16上の信号状態の概略を示しており、10clkのPCIバス16の占有が必要となる。
また、図2(C)に示されるように、CPU12などがメモリコントローラ20へデータ書込み要求コマンド(コマンドライト:Command Write)を書き込むときには5clkを要する。なお、CMD0〜CMD2は、メモリコントローラ20への処理を指示するデータ(処理内容を指示するコマンド、例えば、転送元のアドレス、転送先のアドレス、転送サイズなど)を示している。また、図2(D)に示されるように、再実行要求(リトライ)は、3clkとなる。
これにより、例えば、周辺機器18が、データ読込み要求を行う場合、18clkで32Byte(32B/18clk)のデータ転送が行なわれるのに対して、周辺機器18がデータ書込み要求コマンドを発行し、これに基づいてメモリコントローラ20が周辺機器18へデータ書込みでデータ転送を行なうときには、5clk+10clkで32Byte(32B/10clk)のデータ転送が可能となる。また、周辺機器18からのデータ書込み要求コマンドと、メモリコントローラ20のデータ書込みの間は、PCIバス16が開放されるので、この間に、メモリ14への別のアクセス要求の送信が可能となる。
ここから、データ処理システム10では、メモリ14に記憶されているデータを読み出すときに、メモリコントローラ20に対してデータ書込み要求コマンドを送信して、送信を終了するとPCIバス16が開放されるようにしている。すなわち、メモリコントローラ20は、周辺機器18からデータの書込み要求コマンドを受信すると該当データをメモリ14から読み出し、PCIバス16が使用可能となると、読み出したデータを要求元の周辺機器18に転送する。
また、データ処理システム10では、メモリコントローラ22にアクセス要求保持回路22が設けられることにより、PCIバス16が空いているときに、周辺機器18からのデータ書込み要求コマンドを受信して蓄積することができる。
ここで、アクセス要求保持回路22を備えたメモリコントローラ20の処理の一例を、図3を参照しながら説明する。この図3では、例えば、周辺機器18(18A、18B)からメモリ14に記憶しているデータを要求するデータ要求コマンドA、データ要求コマンドBを送信し、メモリコントローラ20が、データ要求コマンドAに対応するデータをメモリ14から読み出して要求元へデータ転送(応答A、応答B)を行なうときの処理の流れを示している。なお、データ要求コマンドとしてデータをコマンドの書込み要求(CW)を用いることにより、要求送信後に、PCIバス16を開放することができるようにしている。
メモリコントローラ20では、アクセス要求保持回路22に何も保持されていない状態で、周辺機器18(例えば周辺機器18A)からデータ要求コマンドAが送信されると(ステップ100)、このデータ要求コマンドAを受信し、このデータ要求コマンドAを、アクセス要求保持回路22に保持する(ステップ102)。
メモリコントローラ20は、アクセス要求保持回路22にデータ要求コマンドAが保持されると、保持されたデータ要求コマンドAを読み出し、データ要求コマンドAに基づいて、メモリ14からのデータの読出しを開始する(ステップ104)。これにより、メモリ14からデータを読み出すメモリリード動作が実行される(ステップ106)。
また、アクセス要求保持回路22にデータ要求コマンドAが保持されている状態で、例えば、周辺機器18Bからデータ要求コマンドBが送信されると(ステップ108)、メモリコントローラ20は、このデータ要求コマンドBを受信して、アクセス要求保持回路22に保持する(ステップ110)。これにより、アクセス要求保持回路22には、データ要求コマンドA、Bが保持される。
メモリコントローラ20では、データ要求コマンドAに基づいたデータをメモリ14から読み出すと(ステップ112)、読み出したデータを、データ要求コマンドAに基づいてデータ転送を開始する(ステップ114)。
一方、メモリコントローラ20では、データ要求コマンドAに基づいたデータ転送を開始すると、アクセス要求保持回路22からデータ要求コマンドAが消去される(ステップ116)と共に、次のデータ要求コマンドBが読み出され、このデータ要求コマンドBに基づいたメモリリード動作を開始する(ステップ118)。これにより、メモリリード動作が実行され(ステップ120)、メモリ14からデータを読み出すと(ステップ122)、読み出したデータを転送し(ステップ124)、アクセス要求保持回路22に保持されていたデータ要求コマンドBを消去する(ステップ126)。
このように、メモリコントローラ20では、アクセス要求保持回路22に、アクセス要求(アクセス要求コマンド)を順に蓄積して保持することにより、連続的にメモリ14にアクセスして、メモリリード動作等を実行する。
次に、PCIバスアービタ24を用いたデータ転送処理を説明する。データ処理システム10では、PCIバスアービタ24によってPCIバス16の使用権が付与されることより、CPU12、周辺機器18及びメモリコントローラ20のそれぞれがバスマスタとしてPCIバス16を使用し、データの転送要求及び転送要求に基づいたデータ転送が行なわれる。
図4には、一般的な優先順位(プライオリティ)の設定の一例を示している。この優先順位の設定では、例えば、周辺機器18Aが、プリンタの印刷出力デバイスなどのように多量のデータ転送を要求するために広い帯域を必要とするときに、この周辺機器18Aに対して、CPU12、周辺器18B及びメモリコントローラ20よりも優先順位を高く設定する。
例えば、CPU12、周辺機器18B及びメモリコントローラ20の優先順位を同じにし、CPU12、周辺機器18B、メモリコントローラ20の間で、1:1:1の比率でPCIバス16の使用権が設定されるようにしている。また、このグループと、周辺機器18Aに1:1の比率で優先順位が付与されるように設定している。なお、以下では、周辺機器18A、18Bを区別して図示するときには、周辺機器18AをP−A として示し、周辺機器18BをP−Bとして示す。
これにより、PCIバスアービタ24では、周辺機器18Aが優先順位の高いHighプライオリティとされ、CPU12、周辺機器18B及びメモリコントローラ20がこれより優先順位の低いLoプライオリティとされて、2レベルのラウンドロビン方式で使用権の調停を行なう。
データ処理システム10では、メモリコントローラ20にアクセス要求保持回路20を設けることにより、PCIバスアービタ24によってCPU12、周辺機器18A、18B及びメモリコントローラ20の間で、順にPCIバス18の使用権が設定される。
一方、メモリコントローラ20にアクセス要求保持回路22が設けられていない場合、すなわち、メモリコントローラ20が一つのアクセス要求のみしか保持できない場合、PCIバスアービタ24による調停効果が得られなくなってしまう。
図5には、このときの一例を示している。なお、図5では、前記した2レベルのラウンドロビン方式でPCIバス16の使用権を付与するようにしている。また、本実施の形態の以下の説明では、周辺機器18A、18BをP−A、P−B、メモリコントローラ20をMCとして図示すると共に、それぞれの処理において、DRがData Read(データ読込み)、Data Write(データ書込み)、CWがCommand Write(コマンド書込み)として図示する。
PCIバスアービタ24では、ステップ130で周辺機器18Aに使用権を付与すると、ステップ132では、メモリコントローラ20に使用権を付与する。また、ステップ134では、周辺機器18AにPCIバス16の使用権を付与する。さらに、PCIバスアービタ24は、ステップ136、138、140、142、144で、周辺機器18B、周辺機器18A、CPU12、周辺機器18A、メモリコントローラ20の順でPCIバス16の使用権を付与する。
ここで、ステップ130で周辺機器18Aに使用権を付与することにより、周辺機器18Aが、メモリ14からデータを読み出す要求を、データ書込み要求コマンド(CW)としてメモリコントローラ20へ送出すると、メモリコントローラ20は、この要求に基づいてメモリ14からデータを読み出し、ステップ132で使用権が付与されると、周辺機器18Aにデータ書込みとしてデータ転送を行う。
また、ステップ134で周辺機器18Aに使用権が付与されると、周辺機器18Aでは、新たな要求をメモリコントローラ20へ送出し、メモリコントローラ20は、この要求を受信することにより、要求に応じたデータ読出しを行なうためにメモリ14へのアクセスを実行する。
このときに、ステップ136で周辺機器18Bに使用権が付与されて、周辺機器18Bがデータ書込み要求コマンド(CW)を発行しようとするが、メモリコントローラ20はステップ134で受信した周辺機器18Aからの要求が完了していないために新たなアクセス要求を受け付けられないのでリトライ要求を行う。また、メモリコントローラ20では、使用権が付与されるまで、ステップ134で受信したアクセス要求を保持しているので、ステップ138〜142で使用権が付与された周辺機器18A、CPU12に対しても、メモリコントローラ20は、リトライ応答を行い、ステップ144で使用権が付与されて、周辺機器18Aへデータ転送を行なって初めて、次のアクセス要求の受付が可能となる。
このときに、次のステップ144では、周辺機器18Aに使用権が付与されるので、再度、周辺機器18Aからの要求を受け付けることになる。
これにより、PCIバス16の使用権が、1周するには、27clkを要するが、この間では、周辺機器18Aからの要求に基づいたデータ転送が一回のみとなってしまう。
したがって、周辺機器18Aに対しては、データ転送レートは、(32B×1)/27clkから、79.0MB/secとなり、PCIバス16の転送レートも79.0MB/secとなってしまう。また、優先権がHighプライオリティに設定された周辺機器18Aに対してのみの処理を行ってしまうことになるために、データ処理システムとしては、破綻をきたしてしまうことになる。
このような現象は、メモリコントローラ20のアクセス要求保持回路22に保持されるデータ書込み要求コマンドが、アクセス要求保持回路22が保持可能な量に達することにより生じる可能性がある。
ここで、データ処理システム10で適用されるPCIバス16の使用権の設定を、実施例1から実施例3として説明する。
〔実施例1〕
実施例1では、データ処理システム10に設けているPCIバスアービタ24が、アクセス要求保持回路22に保持されたアクセス要求が所定量に達すると、メモリコントローラ20に優先的にPCIバス16の使用権を付与するようにしている。
すなわち、メモリコントローラ20は、アクセス要求保持回路22に保持されたアクセス要求が所定量(例えば、満杯状態)に達すると、PCIバスアービタ24に、アクセス要求保持回路22に保持したアクセス要求が所定量に達したことを示すステータス信号を出力する。PCIバスアービタ24は、メモリコントローラ20から、このステータス信号が入力されることよりメモリコントローラ20へのデータの入出力が可能となるように、PCIバス16の使用権の付与先をメモリコントローラ20に変更する。
図6(A)〜図6(C)には、このときの処理の一例を示している。なお、図6(A)では、PCIバス使用権が付与されるデバイスを示し、図6(B)では、図6(A)で使用権が付与されたデバイスの処理の内容を示し、図6(C)では、図6(B)の処理によってアクセス要求保持回路22に保持されたデータ要求コマンドを示している。また、図6(C)で示す、「CPU」はCPU12からのデータ要求、「P−A」は周辺機器18Aからのデータ要求、「P−B」は周辺機器18Bからのデータ要求であることを示し、図6(A)に対応する図6(B)、図6(C)では、図6(A)と同一のステップ番号を付与している。
図6(A)に示されるように、PCIバスアービタ24は、例えば、ステップ150で周辺機器18Aに使用権を付与すると、次のステップ152では、周辺機器18Bに使用権を付与する。
図6(B)に示されるように、周辺機器18Aは、ステップ150でPCIバス使用権が付与されることにより、メモリ14のデータ要求のためにメモリコントローラ20に対してコマンド書込み(CW)を送出し、周辺機器18Bは、ステップ152でPCIバス使用権が付与されると、メモリ14からのデータ要求のためにメモリコントローラ20に対してコマンド書込みを送出する。
これにより、図6(C)のステップ152に示されるように、アクセス要求保持回路22には、周辺機器18A、18Bからの要求を、順に蓄積して保持する。このとき、メモリコントローラ20では、アクセス要求保持回路22に保持しているアクセス要求の中で最も古い要求(図6(C)で最下段の要求、ここでは、ステップ152以前の周辺機器18Bからの要求としている)を実行している。
ここで、ステップ152で周辺機器18Bからの要求を受信することにより、アクセス要求保持回路22に保持しているデータ要求が所定値に達する(Full状態となる)と、メモリコントローラ20は、アクセス要求保持回路22に保持したデータ要求が所定量に達したことを示すステータス信号を、PCIバスアービタ24へ送出する。
これにより、図6(A)に示されるように、PCIバスアービタ24では、ステップ154でメモリコントローラ20へPCIバス16の使用権を付与する。すなわち、本来は、周辺機器18Aに使用権を付与するべきときに、メモリコントローラ20に使用権を付与し、次のステップ156で、本来の周辺機器18A使用権を付与する。
メモリコントローラ20は、ステップ154で使用権が付与されると、実行待ちとなっている周辺機器18Bへのデータ転送を実行し、これにより、アクセス要求保持回路22から、最も古いデータ要求が削除され、新たなデータ要求の受付が可能となる。また、メモリコントローラ20は、アクセス要求保持回路22に保持している次のデータ要求(ここでは、周辺機器18Aからの要求)に基づいた処理を開始する。
また、メモリコントローラ20は、ステップ156で周辺機器18Aからのデータ要求を受信すると、受信したデータ要求をアクセス要求保持回路22に保持し、これにより、データ要求が所定量に達することにより、PCIバスアービタ24へデータ要求が所定量に達したことを示すステータス信号を出力する。
PCIバスアービタ24は、CPU12への使用権の付与に先立って、ステータス信号の受信によって、ステップ158でメモリコントローラ20にPCIバス使用権を付与し、CPU12へのPCIバス使用権の付与を、ステップ160へと変更する。
メモリコントローラ20は、ステップ158で使用権が付与されると、実行中の処理である周辺機器18Aへのデータ転送を実行し、ステップ160で、CPU12から送出されるデータ要求を受信して、アクセス要求保持回路22に保持すると共に、先のCPU12からのデータ要求に基づいた処理を実行する。
また、メモリコントローラ20は、ステップ160でCPU12からのデータ要求を受信することによりアクセス要求保持回路22に保持されたデータ要求が所定量に達するため、PCIバスアービタ24へデータ要求が所定量に達したことを示すステータス信号を送出する。
これにより、PCIバスアービタ24は、ステップ162でメモリコントローラ20にPCIバス使用権を付与し、周辺機器18Aへの使用権の付与を、次のステップ164で行なう。なお、本実施例においてPCIバスアービタ24は、メモリコントローラ20へのPCIバス使用権の付与はステータス信号の有無にかかわらず行うようにしているため、ステップ166ではメモリコントローラ20にPCIバス使用権が付与され、次のステップ168では、優先順位に沿って周辺機器18AにPCIバス使用権を付与する。
また、メモリコントローラ20では、ステップ168で周辺機器18Aから送出されたデータ要求を受信して、アクセス要求保持回路22に保持されたデータ要求が所定量に達することによりPCIバスアービタ24へデータ要求が所定量に達したことを示すステータス信号を送出し、これにより、PCIバスアービタ24が次のステップ170でメモリコントローラ20へPCIバス使用権を付与し、周辺機器18Bへの使用権の付与を次のステップ172で実行されるようにし、ステップ170でメモリコントローラ20にPCIバス使用権が付与されることにより、メモリコントローラ20が周辺機器18Aへのデータ転送を実行する。
これにより、ステップ152で周辺機器18Bに使用権が付与されてから、ステップ172で、再度、周辺機器18Bに使用権が付与される前までの1周の期間は、75clkとなり、この間に、PCIバス16を用いた周辺機器18Aへは3回のデータ転送と、CPU12と周辺機器18Bへは各1回ずつのデータ転送が行なわれる。
したがって、周辺機器18Aへのデータ転送レートは、(32B×3)/75clkなので85.3MB/sec、CPU12と周辺機器18Bへのデータ転送レートは、それぞれ(32B×1)/75clkなので28.4MB/secとなり、PCIバス16のスループット(データ転送レート)は、142.2MB/secとなる。
〔実施例2〕
前記した実施例1では、メモリコントローラ20からPCIバスアービタ24へステータス信号を送出し、このステータス信号に基づいてPCIバスアービタ24が、メモリコントローラ20へPCIバス16の使用権を付与するようにしたが、PCIバスアービタ24での優先順位の設定で、データ転送効率の改善を図ることも可能となり、これを実施例2として説明する。
図7には、実施例2に係る優先順位の設定の一例を示している。図7に示される優先順位では、メモリコントローラ20の優先順位を、Highプライオリティの周辺機器18Aよりも高い優先順位(ここでは、Topプライオリティとしている)に設定する。
すなわち、LowプライオリティとHighプライオリティの間では、1:1でPCIバス16のPCIバス使用権が付与され、Lowプライオリティ及びHighプライオリティとTopプライオリティの間では、1:1でPCIバス使用権が付与される3レベルのラウンドロビン方式としている。
これにより、メモリコントローラ20からの要求によって最高で2回に1回の割合でメモリコントローラ20へPCIバス16の使用権が付与されるようにしている。
図8(A)〜図8(C)には、このときの処理の流れの一例を示している。なお、図8(A)には、PCIバス16の使用権が付与されたデバイスの動作を示し、図8(B)には、そのときのアクセス要求保持回路22に保持されるデータ要求を示している。また、図8(C)には、メモリコントローラ20が要求された処理を実行して、データ転送が可能となったときに信号線26を介して発するPCIバス16の使用要求信号を示し、PCIバス使用要求時にLベルとなるように示している。
ここで、アクセス要求保持回路22にアクセス要求が保持されていない状態で、CPU12、周辺機器18A、18BがPCIバス16の使用権を要求すると、PCIバスアービタ24は、先ず、ステップ180で周辺機器18AにPCIバス使用権を付与し、これにより、周辺機器18Aが送出するデータ書込み要求コマンドがアクセス要求保持回路22に保持される。また、次のステップ182で周辺機器18BにPCIバス使用権が付与されることによりメモリ14に対するデータ要求を行うと、このデータ要求がアクセス要求保持回路22に保持される。
一方、メモリコントローラ20は、ステップ180で周辺機器18Aの要求を受信すると、この要求に基づいてメモリ14にアクセスしてデータ読出しを行い、周辺機器18Aへのデータ転送が可能となると、ステップ184で、PCIバスアービタ24に対してPCIバス16の使用要求を行う。
これにより、PCIバスアービタ24は、ステップ186でメモリコントローラ20にPCIバス使用権を付与し、PCIバス使用権が付与されたメモリコントローラ20は、周辺機器18Aへ要求されたデータ転送を行い、次の要求(周辺機器18Bからの要求)に対する処理を実行し、データ転送が可能となることによりPCIバス16の使用要求を行う(ステップ188)。
PCIバスアービタ24は、メモリコントローラ20へPCIバス使用権を付与しているときに、メモリコントローラ20からPCIバス使用要求があると、先ず、ステップ190で周辺機器18AにPCIバス使用権を付与し、次のステップ192でメモリコントローラ20へPCIバス使用権を付与する。
これにより、メモリコントローラ20は、ステップ190で周辺機器18Aからのデータ要求をアクセス要求保持回路22に保持し、メモリコントローラ20がPCIバス16を使用可能となると(ステップ192)、周辺機器18Bへデータ転送を行ない、アクセス要求保持回路22に保持されている次のデータ要求に対する処理を行う。データ要求に基づいてメモリ14からデータ読出しを行なって、データ転送が可能となるとPCIバスアービタ24に対してPCIバス16の使用要求を行う(ステップ194)。
PCIバスアービタ24は、ステップ194でメモリコントローラ20からの使用要求を受信すると、ステップ196でCPU12にPCIバス使用権を付与し、次のステップ198でメモリコントローラ20へPCIバス使用権を付与し、メモリコントローラ20は、周辺機器18Aへデータ転送を行う。
また、PCIバスアービタ24は、ステップ200でメモリコントローラ20から使用要求があると、ステップ202で周辺機器18AにPCIバス使用権を付与した後、ステップ204でメモリコントローラ20へPCIバス使用権を付与し、メモリコントローラ20へPCIバス使用権を付与しているときに、メモリコントローラ20からPCIバス使用要求があると(ステップ206)、ステップ208で周辺機器18BにPCIバス使用権を付与した後、ステップ210でメモリコントローラ20へPCIバス使用権を付与する。
これにより、CPU12、周辺機器18A、18B及びメモリコントローラ20の全てに少なくとも1回の使用権を付与した1周内(例えば、ステップ182〜ステップ204)では、メモリコントローラ20から周辺機器18Aに2回のデータ転送が行われ、周辺機器18BとCPU12とにはメモリコントローラ20から各1回のデータ転送が行なわれる。
この間(優先順位の1周分)は、60clkとなっており、周辺機器18Aへのデータ転送レートは、(32B×2)/60clkなので71.0MB/sec、CPU12と周辺機器18Bへのデータ転送レートは、それぞれ(32B×1)/60clkなので35.6MB/secとなり、PCIバス16のスループット(データ転送レート)は、142.2MB/secとなる。
〔実施例3〕
前記した実施例2では、最も広い帯域が得られるようにしたい周辺機器18Aのデータ転送レートが実施例1よりも低下している。そこで、実施例3では、周辺機器18Aの転送効率の向上を可能とする優先順位の一例を示す。
図9には、実施例3で適用する優先順位の設定の一例を示している。図9に示す優先順位では、周辺機器18Aの優先順位として、Highプライオリティに加え、Lowプライオリティの2箇所に設定している。
図10(A)〜図10(C)には、この優先順位に基づいた処理の流れの一例を示している。なお、図10(A)には、PCIバス16の使用権が付与されたデバイスの動作を示し、図10(B)には、そのときのアクセス要求保持回路22に保持されるデータ要求を示している。また、図10(C)には、メモリコントローラ20が要求された処理を実行して、データ転送が可能となったときに発するPCIバス16の使用要求信号を示している。
ここで、アクセス要求保持回路22にデータ要求が保持されていない状態で、CPU12、周辺機器18A、18BがPCIバス16の使用権を要求すると、PCIバスアービタ24は、先ず、ステップ220で周辺機器18AにPCIバス使用権が付与され、ステップ222で周辺機器18BにPCIバス使用権が付与される。これにより、メモリコントローラ20のアクセス要求保持回路22には、周辺機器18Aからのデータ要求が保持された後、周辺機器18Bからのアクセス要求が保持される。
また、メモリコントローラ20は、周辺機器18Aからのデータ要求が保持されると、このデータ要求に基づいてメモリ14からのデータ読出しを開始し、読み出したデータのデータ転送が可能となると、ステップ224で、PCIバスアービタ24に対してPCIバス16の使用要求を行う。
PCIバスアービタ24は、メモリコントローラ20からPCIバス16の使用要求を受信すると、ステップ226でメモリコントローラ20に対してPCIバス使用権を付与する。
メモリコントローラ20はPCIバス使用権が付与されると(ステップ226)、周辺機器18Aへ要求されたデータ転送を行い、次に、周辺機器18Bからのデータ要求に対する処理を実行し、データ転送が可能となるとPCIバス16の使用要求を行う(ステップ228)。
PCIバスアービタ24は、ステップ226でメモリコントローラ20へPCIバス使用権を付与しているときに、ステップ228でメモリコントローラ20からPCIバス使用要求があると、ステップ230で周辺機器18AにPCIバス使用権を付与し、次のステップ232でメモリコントローラ20へPCIバス使用権を付与する。
これにより、メモリコントローラ20は、ステップ230で周辺機器18Aからのデータ要求をアクセス要求保持回路22に保持し、PCIバス16の使用が可能となると(ステップ232)、周辺機器18Bへデータ転送を行い、アクセス要求保持回路22に保持されている次のアクセス要求に対する処理を行う。また、データ要求に基づいてメモリ14からデータ読出しを行なって、データ転送が可能となるとPCIバス16の使用要求を行う(ステップ234)。
ここで、PCIバスアービタ24は、ステップ230で周辺機器18AにPCIバス使用権を付与し、次のステップ232でメモリコントローラ20にPCIバス使用権を付与すると、ステップ236では、再度、周辺機器18AにPCIバス使用権を付与した後、ステップ238でメモリコントローラ20にPCIバス使用権を付与する。
また、PCIバスアービタ24は、ステップ240でメモリコントローラ20からPCIバス使用要求があると、ステップ242で周辺機器18AにPCIバス使用権を付与した後、ステップ244でメモリコントローラ20にPCIバス使用権を付与する。
すなわち、周辺機器18Aに対する優先順位を、HighプライオリティとLowプライオリティの双方に設定することにより、Topプライオリティのメモリコントローラ20を除いたときに、周辺機器18Aに対してPCIバス16の使用権を連続して付与可能となるようにしている。
この後、PCIバスアービタ24では、メモリコントローラ20からPCIバス使用要求があると(ステップ246)、CPU12にPCIバス使用権を付与した(ステップ248)後、メモリコントローラ20にPCIバス使用権を付与し(ステップ250)、このときに、メモリコントローラ20からPCIバス使用要求があると(ステップ252)、ステップ254で周辺機器18AにPCIバス使用権を付与した後、ステップ256でメモリコントローラ20にPCIバス使用権を付与する。
さらに、PCIバスアービタ24は、ステップ258でメモリコントローラ20からPCIバス使用要求があると、ステップ260で周辺機器18BにPCIバス使用権を付与した後、ステップ262でメモリコントローラ20にPCIバス使用権を付与する。
このようにして、優先順位の1周分(例えば、ステップ222〜ステップ256)には、90clkを要する。
この優先順位の1周内では、メモリコントローラ20から周辺機器18Aに4回のデータ転送が行われ、周辺機器18BならびにCPU12にはメモリコントローラ20から各1回のデータ転送が行なわれる。
これにより、周辺機器18Aへのデータ転送レートは、(32B×4)/90clkなので94.8MB/sec、CPU12と周辺機器18Bへのデータ転送レートは、それぞれ(32B×1)/90clkなので23.7MB/secとなり、PCIバス16のスループット(データ転送レート)は、142.2MB/secとなる。
以上説明したように本実施の形態に適用したデータ処理システム10では、周辺装置18がメモリ14に記憶されているデータを読み取るときに、データ書込み要求を用いるときに、アクセス要求保持回路22を設けることにより、PCIバス16の効率的な利用を図ることができる。
このときに、メモリコントローラ20が、アクセス要求保持回路22に保持したデータ要求を、最も古いものから読み出して処理することにより、データ要求順を守ることが可能となり、メモリコントローラ20へのデータ要求コマンド発行順序によって、データ転送帯域を制御することが可能となる。
また、データ処理システム10では、PCIバスアービタ24を設けて、CPU12、周辺機器18A、18B及びメモリコントローラ20に、予め設定された優先順位でPCIバス16の使用権を付与することにより、CPU12、周辺機器18A、18B及びメモリコントローラ20が干渉して、それぞれの処理が滞るのを防止することができる。
また、メモリコントローラ20の使用要求を優先してメモリコントローラ20に対するPCIバス16の使用権を設定するか、メモリコントローラ20の優先順位を最も高くすることにより、メモリコントローラ20の処理が滞り、このために、データ処理システム10の機能が停滞したり、周辺機器18A、18Bの処理が停滞してしまうのを防止することができる。
さらに、最も広い帯域を付与したい周辺装機器18に対して、例えば、LowプライオリティとHighプライオリティなどのように複数段階で優先順位を設定することにより、PCIバス16の転送効率を低下させることなく、該当周辺機器18に対するデータ転送効率を大幅に向上させることができる。
このようなデータ処理システム10を、プリンタ、複写機又はファクシミリ機能などの通信機能を含む複合機などの画像形成装置に設けることにより、画像形成装置での円滑な画像形成処理を可能とすることができる。このときに、画像形成手段とする印刷出力装置に対して、最も広い帯域が得られるように優先順位を設定することにより、画像形成を行なう時の処理能力の向上を図ることができる。
なお、以上説明した本実施の形態は、本発明の構成を限定するものではない。例えば、本実施の形態では、データ処理手段としてCPU12及び周辺機器18A、18Bを例に説明したが、PCIバス16に接続される周辺機器18は、1台であっても良く、3台以上であっても良い。
また、周辺機器18としては、PCIバス16を介してデータ転送を行なうものであれば、それぞれが一つの装置、ユニットを形成する周辺機器のみでなく、半導体素子を含む任意のデバイスの適用が可能である。
また、本実施の形態では、データ伝送路としてPCIバス16を例に説明したが、データ伝送路はこれに限るものではなく、例えば、ネットワークなどを形成するときの通信線路など、データ転送に用いられると共に、使用が管理される任意のデータ伝送路を適用することができる。
さらに、本実施の形態では、メモリコントローラ20と別にPCIバスアービタ24を設けたが、これに限らず、例えば、メモリコントローラ20とPCIバスアービタ24を一体にしたものであっても良く、このときには、ASIC(Application Specific Integrated Circuit)として一つのチップ(半導体素子)に形成して用いることができる。
また、本発明は、プリンタ、複写機又は複合機などに限らず、CPU12で処理したデータ(画像データ)に基づいた画像をCRT、LCDなどの表示手段に表示する表示装置などの任意の画像形成装置に適用することができる。