以下、図面に基づいて本発明の実施形態を詳細に説明する。図1は本発明の第1実施形態に係る情報処理装置1の構成を示すブロック図である。情報処理装置1はCPU3、メインメモリ5、第1のチップ7、第2のチップ9及びDRAM11(メモリの一例)を備える。情報処理装置1は例えばデジタル複合機に搭載することができる。
CPU3、メインメモリ5、第1のチップ7及び第2のチップ9はバス13によって接続されている。メインメモリ5は例えばDRAMである。第1のチップ7及び第2のチップ9は例えば画像処理用のASICであり、バス15によって接続されている。第2のチップ9はバス17によってDRAM11と接続されている。DRAM11から読み出されたデータは第1のチップ7又は第2のチップ9で処理されて、DRAM11に書き込まれる。
第1のチップ7及び第2のチップ9について説明する。図2は第1のチップ7の構成を示すブロック図であり、図3は第2のチップ9の構成を示すブロック図である。第1のチップ7は機能ブロック31A,31B,31C(第1の機能ブロック)を含み、第2のチップ9は機能ブロック31D,31E,31F(第2の機能ブロック)を含む。これらの機能ブロックを区別しない場合は機能ブロック31と記載する。機能ブロック31は回路ブロックであり、DRAM11から読み出されたデータを処理する。データは画像データ、アドレス情報及び制御情報を含む。アドレス情報は画像データが記憶されるDRAM11のメモリセルのアドレスを示す情報である。制御情報はDRAM11に画像データを書き込む命令を示す情報である。
機能ブロック31はDMA(Direct Memory Access)コントローラを有しており、バスマスタとして機能する。機能ブロック31は図示しないバスアービタによってバス15,17の使用権が調停される。
DRAM11には第1のチップ7(機能ブロック31A,31B,31C)で処理されてバス15及び第2のチップ9を経由して転送されてきたデータ、及び第2のチップ9(機能ブロック31D,31E,31F)で処理されて転送されてきたデータが書き込まれる。各機能ブロック31で処理されたデータをDRAM11に書き込むために、データをDRAM11に転送する際に、第1のチップ7又は第2のチップ9の配線上でアクセスが競合すれば、どのデータを優先して転送させるかを調停しなければならない。
そこで、データをDRAM11に転送する際の優先度を「低優先度」、「中優先度」、「高優先度」の三つに分けている。機能ブロック31A,31Dは低優先度が割り当てられているデータを処理し、機能ブロック31B,31Eは中優先度が割り当てられているデータを処理し、機能ブロック31C,31Fは高優先度が割り当てられているデータを処理する。すなわち、本実施形態では、データをDRAM11に転送する際にアクセスが競合した場合の優先度が機能ブロック31の単位で分けられている。機能ブロック31A,31B,31Cはそれぞれ異なる優先度が割り当てられているデータを処理する複数の第1の機能ブロックとなる。機能ブロック31D,31E,31Fはそれぞれ異なる優先度が割り当てられているデータを処理する複数の第2の機能ブロックとなる。各機能ブロック31においては同じ優先度が割り当てられているデータを処理する(例えば機能ブロック31Aは低優先度が割り当てられているデータを処理する)。
従って、機能ブロック31C,31Fで処理されたデータが機能ブロック31A,31B,31D,31Eで処理されたデータよりも優先してDRAM11に転送され、機能ブロック31B,31Eで処理されたデータが機能ブロック31A,31Dで処理されたデータよりも優先してDRAM11に転送される調停がされる。優先度はDRAM11に書き込まれるデータに含まれるアドレス情報を基にして割り当てられる。
図4はDRAM11のアドレス空間を示す図である。DRAM11のアドレス空間は32ビットのアドレス空間である。アドレス情報は16進数で示されている。DRAM11は優先度毎に分けられたアドレス空間を有する。優先度はアドレス情報の上位ビット(本実施形態では上位4ビット(16進数の上位一桁))を基にして分けられており、例えば、16進数の上位一桁が「4」〜「5」は低優先度、「6」〜「8」は中優先度、「9」〜「B」は高優先度が割り当てられているアドレス空間である。
第1のチップ7について説明する。図2に示すように第1のチップ7は機能ブロック31A,31B,31C、調停部33a,33b及びチップインターフェース35を含む。図1のバス13と接続するインターフェースについては図示を省略している。機能ブロック31A,31B,31Cは上述した通りである。以下に説明するように、機能ブロック31A,31B,31Cで処理されたデータは第1の調停部(調停部33a,33b)において調停の対象となる。第1の調停部は第1のチップ7で処理されたデータであって、異なる優先度が割り当てられているデータどうしがDRAM11に転送される際にアクセスが競合すれば調停をする。
調停部33aは第1の調停部を構成する要素であり、機能ブロック31Aで処理されたデータと機能ブロック31Bで処理されたデータをDRAM11に書き込むためにこれらのデータをDRAM11に転送する際に、第1のチップ7の配線上でアクセスが競合すれば調停をする。調停部33aではDRAM11に転送する際の優先度が異なるデータについて調停をする。
調停部33aはバッファ37a,39a、セレクタ41a及びセレクタ制御回路43aを含む。バッファ37aには機能ブロック31Aで処理されたデータが一時記憶され、バッファ39aには機能ブロック31Bで処理されたデータが一時記憶される。セレクタ制御回路43aはバッファ37a,39aにデータが記憶されているか否かに基づいて、セレクタ41aを制御する。図5は調停部33aでの調停結果を示す図である。
一方のバッファにデータが記憶されており、かつ他方のバッファにデータが記憶されていない場合(1、2)、すなわち、第1のチップ7の配線上でアクセスが競合していない場合、セレクタ制御回路43aはデータを記憶しているバッファからデータが出力されるようにセレクタ41aを制御する。
二つのバッファにデータが記憶されている場合(3)、すなわち、第1のチップ7の配線上でアクセスが競合する場合、セレクタ制御回路43aはバッファ39aに記憶されているデータが出力されるようにセレクタ41aを制御する。これにより、機能ブロック31Bで処理されたデータは機能ブロック31Aで処理されたデータよりも優先してDRAM11に転送される。
セレクタ41aで選択されたデータは調停部33bに送られる。調停部33bはセレクタ41aで選択されたデータと機能ブロック31Cで処理されたデータをDRAM11に書き込むためにこれらのデータをDRAM11に転送する際に、第1のチップ7の配線上でアクセスが競合すれば調停をする。調停部33bは調停部33aと同様に、DRAM11に転送する際の優先度が異なるデータについて調停をする。
調停部33bはバッファ37b,39b、セレクタ41b及びセレクタ制御回路43bを含む。バッファ37bにはセレクタ41aで選択されたデータが一時記憶され、バッファ39bには機能ブロック31Cで処理されたデータが一時記憶される。セレクタ制御回路43bはバッファ37b,39bにデータが記憶されているか否かに基づいて、セレクタ41bを制御する。
調停部33bでの調停結果は図5に示す調停部33aでの調停結果と同様である。第1のチップ7の配線上でアクセスが競合していない場合(1、2)、セレクタ制御回路43bはデータを記憶しているバッファからデータが出力されるようにセレクタ41bを制御する。第1のチップ7の配線上でアクセスが競合する場合(3)、セレクタ制御回路43bはバッファ39bに記憶されているデータが出力されるようにセレクタ41bを制御する。これにより、機能ブロック31A,31Bよりも機能ブロック31Cで処理されたデータが優先してDRAM11に転送される。
セレクタ41bで選択されたデータはチップインターフェース35に送られる。チップインターフェース35はバス15によって第2のチップ9に接続されている。
第2のチップ9について説明する。図3に示すように第2のチップ9は、機能ブロック31D,31E,31F、調停部33c,33d,33e,33f,33g、チップインターフェース51、デコーダ53、FIFO(First In, First Out)部55,57、DRAMコントローラ59及び配線61,63,65を含む。図1のバス13と接続するインターフェースについては図示を省略している。機能ブロック31D,31E,31Eは上述した通りである。以下に説明するように、機能ブロック31A,31B,31Cで処理されたデータ及び機能ブロック31D,31E,31Fで処理されたデータは、第2の調停部(調停部33c,33d,33e,33f,33g)において調停の対象となる。
なお、第1の調停部(調停部33a,33b)及び第2の調停部(33c〜33g)において、データはトランザクションの単位で調停される。
チップインターフェース51はバス15に接続されている。チップインターフェース35,51は例えばPCIエキスプレス規格のインターフェースである。図6はPCIエキスプレスでのトランザクション層のパケット101の構成を示している。パケット101はヘッダ103とペイロード105を含む。図2に示すセレクタ41bで選択されたデータのうち、画像データがペイロード105に格納され、アドレス情報及び制御情報がヘッダ103に格納される。
パケット101はバス15を伝送して、チップインターフェース51に送られる。パケット101はチップインターフェース51でデータ(画像データ、アドレス情報、制御情報)に戻されて、デコーダ53に送られる。
デコーダ53は第1のデコーダの一例であり、第1のチップ7で処理されてバス15を経由して転送されてきたデータに対して、そのデータに含まれるアドレス情報をデコードして、配線61,63,65(複数の第1の配線)の中でそのデータに割り当てられている優先度に対応する配線を選択する。
デコーダ53はデータに含まれるアドレス情報の上位4ビット(16進数の上位一桁)をデコードして、配線61,63,65のいずれかを選択する。具体的には、図4に示すように、16進数の上位一桁が「4」〜「5」であれば配線61を選択し、16進数の上位一桁が「6」〜「8」であれば配線63を選択し、16進数の上位一桁が「9」〜「B」であれば配線65を選択する。従って、図2に示す第1のチップ7の機能ブロック31Aで処理された低優先度のデータには配線61が割り当てられ、機能ブロック31Bで処理された中優先度のデータには配線63が割り当てられ、機能ブロック31Cで処理された高優先度のデータには配線65が割り当てられる。
調停部33cはデコーダ53で選択された配線61を用いて転送されてきたデータと、機能ブロック31Dで処理されたデータとがDRAM11に転送される際に、第2のチップ9の配線上でアクセスが競合すれば調停をする。
調停部33cはバッファ37c,39c、セレクタ41c及びセレクタ制御回路43cを含む。バッファ37cには機能ブロック31Dで処理されたデータが一時記憶され、バッファ39cには配線61を用いて転送されてきたデータが一時格納される。配線61とバッファ39cとの間には、FIFO部55(第1のFIFO部)が設けられている。第1のチップ7の機能ブロック31Aで処理されたデータは、機能ブロック31B,31Cで処理されたデータよりも、DRAM11に転送する際の優先度が低いので、DRAM11に転送されるのが遅れる可能性が大きい。従って、バッファ39cにデータが一時記憶された状態で、機能ブロック31Aで処理されたデータが配線61を流れて連続してバッファ39cに転送されてくれば、バッファ39cからデータが溢れてしまうおそれがある。これを防止するためにFIFO部55を設けている。
セレクタ制御回路43cはバッファ37c,39cにデータが記憶されているか否かに基づいて、セレクタ41cを制御する。図7は調停部33cでの調停結果を示す図である。一方のバッファにデータが記憶されており、かつ他方のバッファにデータが記憶されていない場合(1、2)、すなわち、第2のチップ9の配線上でアクセスが競合していない場合、セレクタ制御回路43cはデータが記憶されているバッファからデータが出力されるようにセレクタ41cを制御する。
二つのバッファにデータが記憶されている場合(3)、すなわち、第2のチップ9の配線上でアクセスが競合する場合、セレクタ制御回路43cは例えばバッファ37c,39cに記憶されているデータが交互に出力されるようにセレクタ41cを制御する。このように制御するのは機能ブロック31Aで処理されたデータと機能ブロック31Dで処理されたデータはDRAM11に転送される優先度が同じだからである。
調停部33dは、デコーダ53で選択された配線63を用いて転送されてきたデータと、機能ブロック31Eで処理されたデータとがDRAM11に転送される際に、第2のチップ9の配線上でアクセスが競合すれば調停をする。調停部33dはバッファ37d,39d、セレクタ41d及びセレクタ制御回路43dを含む。バッファ37dには機能ブロック31Eで処理されたデータが一時記憶され、バッファ39dには配線63を用いて転送されてきたデータが一時記憶される。配線63とバッファ39dとの間に、FIFO部57(第1のFIFO部)が設けられている。この理由はFIFO部55が設けられている理由と同じである。
FIFO部55,57は複数の第1のFIFO部である。FIFO部55,57は機能ブロック31A,31B,31C(複数の第1の機能ブロック)で処理されたデータの中で高い優先度以外の優先度が割り当てられているデータに対してそれぞれ割り当てられ、それらのデータが調停部33c,33dに転送される前に、一時格納される。
セレクタ制御回路43dはバッファ37d,39dにデータが記憶されているか否かに基づいて、セレクタ41dを制御する。調停部33dでの調停結果は図7に示す調停部33cでの調停結果と同様である。第2のチップ9の配線上でアクセスが競合していない場合(1、2)、セレクタ制御回路43dはデータを記憶しているバッファからデータが出力されるようにセレクタ41dを制御する。第2のチップ9の配線上でアクセスが競合する場合(3)、セレクタ制御回路43dは例えばバッファ37d,39dに記憶されているデータが交互に出力されるようにセレクタ41dを制御する。
調停部33eはセレクタ41cで選択されたデータとセレクタ41dで選択されたデータをDRAM11に転送する際に、第2のチップ9の配線上でアクセスが競合すれば調停をする。調停部33eのバッファ37eにはセレクタ41cで選択されたデータが一時記憶され、バッファ39eにはセレクタ41dで選択されたデータが一時記憶される。セレクタ制御回路43eはバッファ37e,39eにデータが記憶されているか否かに基づいて、セレクタ41eを制御する。調停部33eでの調停結果は図5に示す調停部33aでの調停結果と同様である。
調停部33fはセレクタ41eで選択されたデータと機能ブロック31Fで処理されたデータをDRAM11に転送する際に、第2のチップ9の配線上でアクセスが競合すれば調停をする。調停部33fのバッファ37fには機能ブロック31Fで処理されたデータが一時記憶され、バッファ39fにはセレクタ41eで選択されたデータが一時記憶される。セレクタ制御回路43fはバッファ37f,39fにデータが記憶されているか否かに基づいて、セレクタ41fを制御する。調停部33fでの調停結果は図5に示す調停部33aでの調停結果と同様である。
調停部33gは配線65を用いて転送されてきたデータとセレクタ41fで選択されたデータをDRAM11に転送する際に、第2のチップ9の配線上でアクセスが競合すれば調停をする。調停部33gのバッファ37gにはセレクタ41fで選択されたデータが一時記憶され、バッファ39gには配線65を用いて転送されてきたデータが一時記憶される。セレクタ制御回路43gはバッファ37g,39gにデータが記憶されているか否か及び調停部33fのセレクタ制御回路43fから出力された信号に基づいて、セレクタ41gを制御する。
セレクタ制御回路43fから出力された信号とは、バッファ37gに転送したデータがバッファ37fからのデータであるか、又はバッファ39fからのデータであるかを示す信号である。この信号を基にしてセレクタ制御回路43gは、バッファ37gに記憶されているデータがバッファ37fからのデータ、又はバッファ39fからのデータかを判断する。
図8は調停部33gでの調停結果を示す図である。一方のバッファにデータが記憶されており、かつ他方のバッファにデータが記憶されていない場合(1、2)、すなわち、第2のチップ9の配線上でアクセスが競合していない場合、セレクタ制御回路43gはデータが記憶されているバッファからデータが出力されるようにセレクタ41gを制御する。
バッファ37g,39gのいずれにもデータがある場合(3、4)、すなわち、第2のチップ9の配線上でアクセスが競合する場合、次のように制御される。バッファ37gのデータがバッファ39fからのデータであれば、DRAM11に転送される優先度が異なる機能ブロックで処理されたデータが競合していることになる。バッファ39fからのデータとは、図2の機能ブロック31A,31B、図3の機能ブロック31D,31Eで処理されたデータであり、バッファ39gに記憶されるデータは図2の機能ブロック31Cで処理されたデータである。従って、バッファ39gに記憶されるデータはバッファ39fからのデータよりも優先度が高いので、セレクタ制御回路43gはバッファ39gに記憶されているデータが出力されるようにセレクタ41gを制御する。
一方、バッファ37gのデータがバッファ37fからのデータであれば、優先度が同じ機能ブロックで処理されたデータなので、セレクタ制御回路43gは例えばバッファ37g,39gに記憶されているデータが交互に出力されるようにセレクタ41gを制御する。
セレクタ41gで選択されたデータはDRAMコントローラ59に送られる。DRAMコントローラ59はそのデータに含まれるアドレス情報で示されるアドレスのメモリセルに画像データを書き込む。
以上説明したように第2の調停部(調停部33c〜33g)は次の(1)〜(4)の調停をする。
(1)デコーダ53(第1のデコーダ)で選択された配線61,63,65(第1の配線)を用いて転送されてきたデータ(トランザクション)と、そのデータと同じ優先度が割り当てられ機能ブロック31D,31E,31Fで処理されたデータ、すなわち第2のチップ9で処理されたデータ(トランザクション)とが、DRAM11に転送される際にアクセスが競合すれば調停をする。この調停は調停部33c,33d,33gで実行される。
(2)デコーダ53で選択された配線61,63,65を用いて転送されてきたデータ(トランザクション)と、そのデータと異なる優先度が割り当てられ機能ブロック31D,31E,31Fで処理されたデータ(トランザクション)とが、DRAM11に転送される際にアクセスが競合すれば調停をする。この調停は調停部33e,33f,33gで実行される。
(3)機能ブロック31D,31E,31Fで処理されたデータであって、異なる優先度が割り当てられているデータ(トランザクション)どうしが、DRAM11に転送される際にアクセスが競合すれば調停をする。この調停は調停部33e,33fで実行される。
(4)デコーダ53で選択された配線61,63,65を用いて転送されてきたデータ(機能ブロック31A,31B,31Cで処理されたデータ)であって、異なる優先度が割り当てられているデータ(トランザクション)どうしが、DRAM11に転送される際にアクセスが競合すれば調停をする。この調停は調停部33e,33gで実行される。
第1実施形態の主な効果について、図9に示す第2のチップ19と比較して説明する。第2のチップ19は図2の調停部33a、33b並びに図3のチップインターフェース51、機能ブロック31D,31E,31F及びDRAMコントローラ59を備える。第2のチップ19はさらに、調停部67及び配線69を備える。
調停部33aは機能ブロック31Dで処理されたデータと機能ブロック31Eで処理されたデータをDRAM11に転送する際にアクセスが競合すれば調停をする。調停部33bは調停部33aで選択されたデータと機能ブロック31Fで処理されたデータをDRAM11に転送する際にアクセスが競合すれば調停をする。
配線69はチップインターフェース51と調停部67を接続する。図2の第1のチップ7からバス15を経由して転送されてきたデータは、配線69を用いて調停部67に転送される。また、調停部67には調停部33bで選択されたデータが転送される。従って、調停部67は、図2に示す第1のチップ7の機能ブロック31A,31B,31Cで処理され、優先度が調停されて転送されてきたデータと、第2のチップ19の機能ブロック31D,31E,31Fで処理され、優先度が調停されて転送されてきたデータとについて、アクセスが競合すれば調停をする。
しかし、調停部67では第1のチップ7の機能ブロック31A,31B,31Cで処理されたデータの優先度を判断することができないので、調停部67で正しい調停をすることができない。仮に判断することができても次の問題が生じる。
例えば、第1のチップ7の機能ブロック31A(低優先度)で処理されたデータと、第2のチップ19の機能ブロック31E(中優先度)で処理されたデータとが競合した場合を考える。調停部67は機能ブロック31Eで処理されたデータを選択するので、機能ブロック31Aで処理されたデータは調停部67のバッファに一時記憶された状態が継続される。この状態で、第1のチップ7の機能ブロック31C(高優先度)で処理されたデータが調停部67に送られても、機能ブロック31Aで処理されたデータのために、機能ブロック31C(高優先度)で処理されたデータは、調停部67のバッファに一時記憶された状態が継続される。よって、第2のチップ19で調停された低い優先度のデータ(この例では機能ブロック31Eで処理されたデータ)が調停部67で選択されることによって、第1のチップ7で調停された高い優先度のデータ(この例では機能ブロック31Cで処理されたデータ)についてDRAM11に転送されるのが遅れることになる。これでは、第1のチップ7で調停した意味がなくなってしまう。
そこで、DRAM11へのアクセス帯域(言い換えればアクセス数)を第1のチップ7で処理されたデータ、第2のチップ19で処理されたデータにそれぞれ割り当てる手法(帯域制限手法)が考えられる。帯域制限手法では、例えば、第1のチップ7で処理されたデータの転送を優先させる場合、「第1のチップ7で処理されたデータに許可されるアクセス帯域=DRAM11の実効帯域−第2のチップ19で処理されたデータに必要なアクセス帯域」の関係を用いて、アクセス帯域が割り当てられる。しかし、帯域制限手法には以下の問題がある。
第1のチップ7で処理されたデータに対してアクセス帯域を固定して制限すると、第2のチップ19でデータが処理されておらず、従って、DRAM11の実効帯域に空きがある場合でも、第1のチップ7で処理されたデータに対してアクセスが制限されてしまう。
第1のチップ7に割り当てられたアクセス帯域と第2のチップ19に割り当てられたアクセス帯域の合計が、DRAM11の実効帯域を超える場合、第1のチップ7で処理されたデータを優先させれば、第2のチップ19に対して十分なアクセス帯域を割り当てることができない。
帯域制限手法では、アクセス帯域の制限値がシステムのユースケースによって最適値が変わる可能性が高いので、ソフトウェアの制御が複雑となる。また、アクセス帯域の制限値は動的に変化するので、検証が困難であり、その結果、システムの品質を低下させるおそれがある。さらに、アクセス帯域の制限値とDRAM11の実効帯域を比較した結果を用いて、第1のチップ7に割り当てるアクセス帯域を制限するので、DRAM11の実効帯域を測定するシステムが必要となる。
なお、PCIエキスプレスではバーチャルチャネル(Virtual Channel)を利用することができるので、データを転送する優先度に応じてバーチャルチャネルを割り当てることができる。しかし、バーチャルチャネルを利用する場合、第1のチップ7及び第2のチップ19の両方がバーチャルチャネルを利用できる規格にしなければならない。また、バーチャルチャネルを1つ増やす毎に回路規模が増大するので、DRAM11にデータを転送する優先度毎にバーチャルチャネルを設定すれば、回路規模が非常に増大し、その結果、第1のチップ7及び第2のチップ19のコストが上昇する。
これに対して、第1実施形態によれば、デコーダ53は第1のチップ7で調停されてバス15及び第2のチップ9を経由してDRAM11に転送されるデータ(機能ブロック31A,31B,31Cで処理されたデータ)に対して、第2のチップ9上の配線61,63,65の中でそのデータに割り当てられている優先度に対応する配線を選択する。そして、第2のチップ9に設けられた第2の調停部(調停部33c〜33g)は、上記(1)〜(4)の調停をする。
これにより、第1のチップ7で処理されたデータと第2のチップ9で処理されたデータとに対して、第2のチップ9において、DRAM11に転送する優先度が同じデータを調停し、かつDRAM11に転送する優先度が異なるデータを調停することができる。従って、第1実施形態によれば、第1のチップ7で処理されたデータが第2のチップ9を経由してDRAM11に転送される場合に、第1のチップ7で処理されたデータと第2のチップ9で処理されたデータとのアクセスが競合すれば、DRAM11に転送する優先度が高いデータから順にDRAM11に転送することができる。なお、調停部33a〜33gにおいて、データはトランザクションの単位で調停される。
また、第1実施形態によれば、機能ブロック31A,31B,31Cで処理されたデータの中で、高い優先度以外の優先度が割り当てられているデータが第2のチップ9で溢れることを防止できる。詳細に説明すると、上述したように機能ブロック31A,31B,31Cで処理されたデータは第2のチップ9で調停の対象となる。このため、機能ブロック31A,31B,31Cで処理されたデータの中で、高い優先度以外の優先度が割り当てられているデータについてはDRAM11への転送が遅れる可能性がある。従って、それらのデータが第2のチップ9からDRAM11に転送される前に、同じ優先度が割り当てられているデータが第1のチップ7から第2のチップ9に連続して転送されてくれば、第2のチップ9でデータが溢れてしまうおそれがある。第2のチップ9にFIFO部55,57(複数の第1のFIFO部)を備える第1実施形態によれば、機能ブロック31A,31B,31Cで処理されたデータの中で、高い優先度以外の優先度が割り当てられているデータが第2のチップ9で溢れることを防止できる。
次に第2実施形態を説明する。第2実施形態については第1実施形態との相違点を中心に説明し、共通点については説明を省略する。図10は第2実施形態に係る情報処理装置に備えられる第1のチップ21の構成を示すブロック図であり、図11は第2実施形態に係る情報処理装置に備えられる第2のチップ23の構成を示すブロック図である。
第2実施形態では、機能ブロック31Aと調停部33aとの間に帯域制限ブロック89aが配置され、機能ブロック31Bと調停部33aとの間に帯域制限ブロック89bが配置されている。
第2のチップ23のFIFO部55,57(第1のFIFO部)のいずれかがデータでフルになった状態で、そのFIFO部に格納されるデータが第1のチップ21から送信され続けると、そのFIFO部でデータが溢れてしまう。第2実施形態では帯域制限ブロック89a、89bを用いて、データがFIFO部で溢れることを防止する。これについてFIFO部55を例に説明する。
FIFO部55はデータでフルになると、それを示す信号(フル信号S1)をチップインターフェース51に送る。チップインターフェース51はFIFO部55がフルであることを示す情報を、PCIエキスプレスのトランザクションの1つであるメッセージ信号割り込み(MSI:Message Signaled Interrupt)を利用して第1のチップ21に送る。メッセージ信号割り込みのトランザクションのパケットには32ビットのフィールドがあるので、フルになったFIFO部がFIFO部55であることを示す情報も併せて送られる。
MSIのトランザクションのパケットがバス15を経由して第1のチップ21のチップインターフェース35に到達すると、チップインターフェース35は帯域制限ブロック89aを有効にする信号S2を帯域制限ブロック89aに送る。これにより、トランザクションの発行がマスクされるので(言い換えれば、機能ブロック31Aからの送信パスがマスクされるので)、機能ブロック31Aで処理されたデータが調停部33aに転送されるのを止めることができる。なお、機能ブロック31AのDMAコントローラにはバッファが設けられているので、機能ブロック31Aで処理されたデータが帯域制限ブロック89aによって転送できなくても、バッファに一時記憶されるので、機能ブロック31Aは動作を続けることができる。
チップインターフェース51がMSIを送信するタイミングは、チップインターフェース51でのMSI送信遅延、PCIエキスプレスでの転送遅延、及びチップインターフェース35が信号S2を送信してから帯域制限ブロック89aが有効になるまでの時間等を考慮して決める。これにより、FIFO部55でデータが溢れることをより確実に防止する。
FIFO部55に予め定められた空きが生じれば、FIFO部55はチップインターフェース51にそれを示す信号を送る。チップインターフェース51はFIFO部55に空きが生じたことを示す情報を、上記MSIを利用して第1のチップ21のチップインターフェース35に送る。チップインターフェース35は帯域制限ブロック89aを無効にする信号を送る。これにより機能ブロック31Aで処理されたデータの調停部33aへの転送が再開される。
FIFO部55がフルになった場合で説明したが、FIFO部57がフルになった場合は帯域制限ブロック89bにより同様の処理がされる。また、FIFO部55はデータがフルになれば、フルであることを示す信号S1をチップインターフェース51に送る例で説明したが、フルに近くなった場合に信号S1を送るようにしてもよい。
以上説明したように第2実施形態によれば、FIFO部55,57のいずれかがフルになった場合、フルになったFIFO部に格納されるデータに割り当てられている優先度と同じ優先度が割り当てられているデータを処理する機能ブロックにおいて、その機能ブロックで処理されたデータの転送が帯域制限ブロック89a,89bにより止められる。従って、FIFO部55,57がフルになっても、第2のチップ23でデータが溢れることを防止できる。
次に第3実施形態を説明する。第3実施形態については第1及び第2実施形態との相違点を中心に説明し、共通点については説明を省略する。図12は第3実施形態に係る情報処理装置に備えられる第2のチップ25の構成を示すブロック図である。第3実施形態に係る情報処理装置に備えられる第1のチップは、図10に示す第1のチップ21と同じ構成を有する。第3実施形態において、第2のチップ25はFIFO部71、デコーダ73、配線75,77及び切換部79,81を備える。
FIFO部71は第2のFIFO部として機能し、FIFO部55,57のいずれかがフルになった場合に、待避用のFIFO部となる。
配線75,77(複数の第2の配線)はFIFO部55,57に対応して設けられ、対応するFIFO部に接続されている。
FIFO部71に格納されたデータはデコーダ73に送られる。デコーダ73は第2のデコーダとして機能し、FIFO部71から転送されてきたデータに対して、そのデータに含まれるアドレス情報をデコードして、配線75,77(複数の第2の配線)の中でそのデータに割り当てられている優先度に対応する配線を選択する。
デコーダ73はデコーダ53と同様に、データに含まれるアドレス情報の上位4ビット(16進数の上位一桁)をデコードして、配線75,77のいずれかを選択する。具体的には、図4に示すように、16進数の上位一桁が「4」〜「5」であれば配線75を選択し、16進数の上位一桁が「6」〜「8」であれば配線77を選択する。
切換部79には配線61を用いて転送されてきたデータが入力される。切換部79はFIFO部55からのフル信号S1が入力可能にされている。切換部79にフル信号S1が入力されていなければ、配線61を用いて転送されてきたデータはFIFO部55に転送される。切換部79にフル信号S1が入力されていれば、配線61を用いて転送されてきたデータはFIFO部71に転送される。
切換部81には配線63を用いて転送されてきたデータが入力される。切換部81はFIFO部57からのフル信号S1が入力可能にされている。切換部81にフル信号S1が入力されていなければ、配線63を用いて転送されてきたデータはFIFO部57に転送される。切換部81にフル信号S1が入力されていれば、配線63を用いて転送されてきたデータはFIFO部71に転送される。
以上のように切換部79,81により構成される切換部は、FIFO部55,57のいずれかがフルになった場合、デコーダ53で選択された配線を用いて転送されるデータの中でフルになったFIFO部に転送されるデータを、FIFO部71に転送する切り換えをする。
第3実施形態では第2実施形態と同様に、FIFO部55がフルになれば帯域制限ブロック89aが有効となることにより、機能ブロック31Aで処理されたデータの転送を止めることができ、FIFO部57がフルになれば帯域制限ブロック89bが有効となることにより、機能ブロック31Bで処理されたデータの転送を止めることができる。これにより、第2のチップ25でデータが溢れることを防止している。しかし、FIFO部55,57がフルになってから帯域制限ブロック89a,89bが有効になるまでの時間を決定できない場合がある。この場合、FIFO部55,57がフルになる前に信号S1をチップインターフェース51に送ったとしても、フルになったFIFO部55,57に機能ブロック31A,31Bで処理されたデータが転送されてくる可能性がある。その結果、第2のチップ25でデータが溢れることになる。
第3実施形態によれば、FIFO部55,57(複数の第1のFIFO部)のいずれかがフルになった場合、フルになったFIFO部に転送されるデータを、FIFO部71(第2のFIFO部)に転送されるように切り換えて、FIFO部71に待避させている。これにより、フルになったFIFO部に空きができる時間を稼ぐことができる。そして、FIFO部71から転送されてきた、フルになったFIFO部に転送されるデータに含まれるアドレス情報をデコードして、FIFO部55,57の中で対応するFIFO部(すなわち、フルになっていFIFO部)に戻している。以上のように、FIFO部55,57のいずれかがフルになっても、フルになったFIFO部に転送されるデータをFIFO部71に待避させているので、第2のチップ25でデータが溢れることを防止できる。帯域制限ブロック89a,89bを設けても、FIFO部55,57がフルになってから帯域制限ブロック89a,89bが有効になるまでの時間を決定できない場合があり、このような場合に有効となる。また、FIFO部55,57の容量を大きくすることなく、第2のチップ25でデータが溢れることを防止できる。
第3実施形態の変形例として、図2に示す第1のチップ7と図12に示す第2のチップ25の組み合わせた態様でもよい。この態様では第1のチップ7が帯域制限ブロックを備えないので、第2のチップ25において、FIFO部55,57からチップインターフェース51に信号S1を送る配線を不要となる。
次に第4実施形態を説明する。第4実施形態については第1〜第3実施形態との相違点を中心に説明し、共通点については説明を省略する。図13は第4実施形態に係る情報処理装置に備えられる第1のチップ27の構成を示すブロック図である。図14は第4実施形態に係る情報処理装置に備えられる第2のチップ29の構成を示すブロック図である。
チップインターフェース85は第1のチップ27で処理されたデータが第2のチップ29に転送される前に一時格納されるFIFO部85(第3のFIFO部)を有する。チップインターフェース51は第1のチップ27から第2のチップ29に転送されてきたデータがデコーダ53(第1のデコーダ)に転送される前に一時格納されるFIFO部87(第4のFIFO部)を有する。
第1のチップ27には帯域制限ブロックが設けられていないので、第2のチップ29にはFIFO部55,57からチップインターフェース51に信号S1を送る配線が設けられていない。
第1のチップ27において、機能ブロック31A,31B,31Cで処理されたデータがチップインターフェース35に送られると、FIFO部85で一時格納された後、チップインターフェース35でパケット101(図6)にされる。パケット101はバス15を伝送して、第2のチップ29のチップインターフェース51に送られる。パケット101はチップインターフェース51でデータ(画像データ、アドレス情報、制御情報)に戻され、FIFO部87に一時格納された後、デコーダ53に送られる。
FIFO部85,87はバッファとして機能する。これにより、チップインターフェース35でのデータ受信量、チップインターフェース51でのデータ送信量、チップインターフェース35,51でのパケット処理量の差を吸収する。
第4実施形態では第3実施形態と同様に、第1のチップ27において機能ブロック31A,31Bで処理されたデータ(すなわち、比較的低い優先度が割り当てられたデータ)によりFIFO部55,57のいずれかがフルになれば、フルになったFIFO部に転送されるデータをFIFO部71に転送されるように切り換えている。従って、フルになったFIFO部に転送されるデータがFIFO部85,87に滞留することを防止することが可能となる。この結果、FIFO部55,57のいずれかがフルになった状態で、機能ブロック31Cで処理されたデータ(すなわち、比較的高い優先度が割り当てられているデータ)がFIFO部85に転送されてきても、そのデータをFIFO部85,87で滞留させることなく、フルになったFIFO部に転送されるデータを追い越して、DRAM11に転送することができる。
特に、第2のFIFO部71の容量が第3のFIFO部85及び第4のFIFO部87の容量と少なくとも同じであれば、フルになったFIFO部に転送されるデータによってFIFO部85及びFIFO部87がフルになった状態で、機能ブロック31Cで処理されたデータがFIFO部85に転送されてきても、FIFO部85,87に格納されているデータ(フルになったFIFO部に転送されるデータ)の全てをFIFO部71に転送することができる。従って、フルになったFIFO部に転送されるデータによってFIFO部85,87がフルになっても、これらのデータを追い越して、フルになったFIFO部に転送されるデータ以外のデータ(例えば機能ブロック31Cで処理されたデータ)をDRAM11に転送させることができる。
第4実施形態の変形例として、第1のチップ27が図10に示す第1のチップ21と同様に、機能ブロック31Aと調停部33aの間に帯域制限ブロック89a、及び、機能ブロック31Bと調停部33aの間に帯域制限ブロック89bを備える態様でもよい。この態様では、第1のチップが帯域制限ブロックを備えるので、第2のチップ29において、FIFO部55,57からチップインターフェース51に信号S1を送る配線が必要となる。
第1〜第4実施形態では、DRAM11から読み出されたデータを機能ブロック31で処理し、処理したデータをDRAM11に書き込む例で説明した。ラインセンサから出力されたデータを機能ブロック31で処理し、処理したデータをDRAM11に書き込む場合でも第1〜第4実施形態を適用できる。