説明

データ処理装置、描画装置及びピクセルパッカ

任意のパターンをピクセル単位で高速に描画できるプロセッサを提供する。カラーモードを3ビット/ピクセルとする。ピクセルNは、バイトアドレス[29:3]及びビットアドレス[2:0]により指定される描画位置に書き込まれる。次のピクセルN+1は、ピクセルNのすぐ後から書き込まれる。次のピクセルN+2は、ピクセルN+1のすぐ後から、バイトに跨って書き込まれる。ピクセルデータは、バイト内及びバイト間において、隙間なく敷き詰められる。この場合のピクセルデータの書き込み、つまり、描画は、ワード単位やバイト単位ではなく、ピクセル単位で行われる。しかも、キャッシュ制御により高速な描画を実現する。


【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュを用いた描画処理を実行するデータ処理装置及びその関連技術に関する。
【背景技術】
【0002】
図14は、特開平8−167038号公報(図1、図2、図4、図5)に開示されている従来のパターン描画装置のブロック図である。図14に示すように、パターン描画装置において、パターン格納領域1006には、予め複数の異なるパターンが所定の大きさで設定されている。パターンロード制御部1003は、前回に描画したパターンデータのパターン格納領域1006上の先頭アドレスを保持し、そのアドレスと今回描画するパターンデータのパターン格納領域1006上の先頭アドレスとの比較を行い、不一致の場合にはパターンデータがパターンキャッシュメモリ1002に存在しないと判断して今回描画するパターンデータをパターン格納領域1006から読み出してパターンキャッシュメモリ1002に書込む。描画制御部1001はパターンキャッシュメモリ1002からパターンデータを読み出して描画領域1005に書込む。
【0003】
ここで、パターンキャッシュメモリ1002と描画領域1005は同一系でなく分離したバス上にある。つまり、パターンキャッシュメモリ1002のアドレス/データは描画領域1005とは別のバスを用いる。このため、パターンデータのパターンキャッシュメモリ1002からの読み出し及び描画領域1005への書込みを同時に行うことができる。このこと及びパターンキャッシュメモリ1002の利用により、描画時間の短縮を図っている。
【0004】
また、描画制御部1001は、パターンにビット単位でオフセットをかけて描画する場合は、書き込む1ワード分のデータを作るために、連続性のある2ワードのパターンデータをパターンキャッシュメモリ1002から読み込み、バレルシフタ等によって1ワード分の書き込みデータを選び出し、描画領域1005に書き込む。
【0005】
しかしながら、上記パターン描画装置では、描画領域1005やパターンキャッシュメモリ1002への書き込みは、1ワード単位で行われる。しかも、パターン格納領域1006に予め格納されたパターンデータを、描画領域1005に書き込めるにすぎない。
【0006】
つまり、予め定められたパターンデータのワード単位での書き込みだけが可能である。これでは、任意のパターンを、しかもピクセル単位で描画することはできない。
【発明の開示】
【0007】
そこで、本発明の目的は、任意のパターンをピクセル単位で高速に描画できるデータ処理装置及びその関連技術を提供することである。
【0008】
本発明の他の目的は、メモリの1ワードを構成するビット数を意識することなく、カラーモードを任意の値に設定できるデータ処理装置及びその関連技術を提供することである。
【0009】
本発明のさらに他の目的は、ピクセル単位で描画を行う際の、バイト内でのビット位置の計算を不要として、処理の高速化及びプログラミングの簡素化を図ることができるデータ処理装置及びその関連技術を提供することである。
【0010】
本発明の第1の形態によると、データ処理装置は、1ピクセルの表示色をMビット(Mは1以上の整数)で表したピクセルデータの書き込みを実行するデータ処理装置であって、描画領域としてのメモリと、プログラムに従った演算処理を実行する演算処理手段と、前記演算処理手段が生成した、描画位置を示すアドレス情報に従って、前記演算処理手段からピクセル単位で与えられた前記ピクセルデータの書き込みを実行する描画手段と、を備え、前記描画手段は、前記メモリ内のブロックが動的にマッピングされ、そのブロックと同じ論理アドレス上に配置されるキャッシュと、前記メモリの1ワードをNビット(Nは2以上の整数)としたときに、N/MおよびM/Nが整数か否かに関係なく、ピクセル単位で前記キャッシュに前記ピクセルデータを書き込むキャッシュ制御手段と、を含む。
【0011】
この構成によれば、メモリの1ワードを構成するビット数を意識することなく、カラーモード(Mビット/ピクセル)を任意の値に設定できる。一般に、ビットマップイメージでは、N/MまたはM/Nが整数になるように、つまり、M≦Nであればピクセルデータが常にメモリの2ワードに跨らないように、またM>Nであればピクセルデータがメモリの複数ワードに丁度収まるようにカラーモードの値が設定され、カラーモード選択の幅が狭い。ただし、本発明の適用は、ビットマップイメージの描画に限定されない。
【0012】
また、描画手段は、演算処理手段を介したピクセルデータをキャッシュに書き込む。つまり、特開平8−167038号公報に示した従来のように、描画手段が、メモリに直接アクセスして、ピクセルデータを取得し、描画を行うのではない。演算処理手段がピクセルデータを用意するので、描画対象となるパターンデータは、予め用意された固定のパターンデータでもよいし、圧縮されたパターンデータでもよいし、ユーザが入力手段(例えば、タブレット等)を使って入力したパターンデータでもよい。加えて、キャッシュを利用しているので、高速な描画が可能である。以上の結果、任意のパターンをピクセル単位で高速に描画できる。
【0013】
上記データ処理装置は、バスをさらに備え、前記メモリ、前記演算処理手段、及び前記描画手段は、前記バスに接続され、前記演算処理手段及び前記描画手段は、それぞれバスマスタになりうる。
【0014】
この構成によれば、描画手段はバスマスタとして自律して動作可能であるため、描画手段による描画中であっても、演算処理手段(例えば、CPU等)は他の処理を実行できる。従って、データ処理装置全体として効率的な処理を実現できる。また、描画処理をバスマスタとしての描画手段に任せることができるので、演算処理手段に実行させるプログラムの作成負担を軽減できる。
【0015】
一般に、演算処理手段がメモリに描画する場合は、メモリのワード単位での描画を行うので、ピクセル単位での描画を実行しようとすると、リード・モディファイ・ライトを演算処理手段が行わなければならず、演算処理手段の負荷が大きくなり、また、プログラミングも煩雑となる。ところが、本発明では、描画手段がバスマスタになるので、リード・モディファイ・ライトは、描画手段に行わせればよく、その間、演算処理手段は他の処理を実行できるし、また、プログラミングの際にもリード・モディファイ・ライトを意識する必要がなく、プログラミングの負担を軽減できる。
【0016】
また、描画手段はバスマスタであり、メモリを演算処理手段と共用できるので、描画専用のメモリ及びバスを設ける必要もなく、コストの削減ができる。つまり、描画手段がバスマスタでない場合は、自律的にバスにアクセスできないので、描画専用のメモリ及びバスを設けなければならず、コストが上がるが、この構成によるデータ処理装置においてはこれらが不要となる。
【0017】
本発明の第2の形態によると、データ処理装置は、1ピクセルの表示色をMビット(Mは1以上の整数)で表したピクセルデータの書き込みを実行するデータ処理装置であって、描画領域としてのメモリと、プログラムに従った演算処理を実行し、描画位置を示すアドレス情報を生成する演算処理手段と、前記演算処理手段からピクセル単位で与えられた前記ピクセルデータの書き込みを実行する描画手段と、を備え、前記描画手段は、前記メモリ内のブロックが動的にマッピングされ、そのブロックと同じ論理アドレス上に配置されるキャッシュと、前記演算処理手段が生成した前記アドレス情報に従って、ピクセル単位で前記キャッシュに前記ピクセルデータを書き込むキャッシュ制御手段と、を含み、描画位置を示す前記アドレス情報は、描画対象のピクセルデータの描画先頭ビットを含むバイトを示すバイトアドレス、及び、前記描画先頭ビットのバイト内におけるビット位置を示すビットアドレス、により構成される。
【0018】
この構成によれば、描画手段に対して、描画位置がバイトアドレスだけでなく、ビットアドレスでも指定できるため、演算処理手段は、ピクセル単位の描画を行う際の、バイト内でのビット位置の計算が不要となり、処理の高速化及びプログラミングの簡素化を図ることができる。一般に、アドレス情報は、バイトアドレスであるため、1ピクセルのビット数がメモリの1ワードに満たず、かつピクセル単位で描画を行う場合は、バイト内でのビット位置の計算が必要となる。
【0019】
本発明の第3の形態によると、描画装置は、描画領域として使用されるメモリ内のブロックが動的にマッピングされ、そのブロックと同じ論理アドレス上に配置されるキャッシュと、前記メモリの1ワードをNビット(Nは2以上の整数)とし、1ピクセルの表示色をMビット(Mは1以上の整数)のピクセルデータで表すとき、N/MおよびM/Nが整数か否かに関係なく、描画位置を示すアドレス情報に従って、ピクセル単位で、前記キャッシュに描画対象のピクセルデータを書き込むキャッシュ制御手段と、を備える。
【0020】
この構成によれば、メモリの1ワードを構成するビット数を意識することなく、カラーモード(Mビット/ピクセル)を任意の値に設定できる。一般に、ビットマップイメージでは、N/MまたはM/Nが整数になるように、つまり、M≦Nであればピクセルデータが常にメモリの2ワードに跨らないように、またM>Nであればピクセルデータがメモリの複数ワードに丁度収まるように、カラーモードの値Mが設定され、カラーモード選択の幅が狭い。ただし、本発明の適用は、ビットマップイメージの描画に限定されない。
【0021】
また、キャッシュを利用しているので、高速な描画が可能である。
【0022】
上記描画装置において、描画位置を示す前記アドレス情報は、描画対象のピクセルデータの描画先頭ビットを含むバイトを示すバイトアドレス、及び、前記描画先頭ビットのバイト内におけるビット位置を示すビットアドレス、により構成され、前記キャッシュ制御手段は、前記バイトアドレスに基づいて、ヒット/ミスヒットを判断し、ヒットした場合に、前記バイトアドレス及び前記ビットアドレス、並びに、ピクセルデータのビット数M、に基づいて、前記キャッシュから読み込んだブロックデータを描画対象のピクセルデータで更新して、前記キャッシュに書き込む。
【0023】
この構成によれば、描画位置がバイトアドレスだけでなく、ビットアドレスでも指定できるため、ピクセル単位の描画を行う際の、バイト内でのビット位置の計算が不要となり、処理の高速化を図ることができる。
【0024】
上記描画装置において、前記キャッシュは、前記メモリ内の複数のブロックが動的にマッピングされる複数のブロックを含み、前記キャッシュの前記ブロックは、前記メモリ上の対応する前記ブロックと同じ論理アドレス上に配置され、前記キャッシュ制御手段は、前記更新の際、前記バイトアドレスが示すブロックに格納されたブロックデータのうち、前記ビットアドレスが示す描画位置を始点としたMビットを、描画対象のピクセルデータで更新し、描画対象のピクセルデータが2つのブロックに跨る場合は、前記バイトアドレスが示すブロックに格納されたブロックデータ、及び、そのバイトアドレスを1つ進めたバイトアドレスが示すブロックに格納されたブロックデータ、について、描画位置を始点としたMビットを、描画対象のピクセルデータで更新する。
【0025】
この構成によれば、キャッシュは複数のブロックを有しているので、描画対象のピクセルデータが、メモリのワード境界に跨るような場合でも、キャッシュ中の対応する2つのブロックに格納されたブロックデータを更新するだけで、容易に描画を実行できる。
【0026】
上記描画装置において、前記キャッシュ制御手段は、読出対象となるピクセルデータの読出先頭ビットを含むバイトを示すバイトアドレス(以下、読出バイトアドレス、という)に基づいて、ヒット/ミスヒットを判断し、ヒットした場合に、前記読出バイトアドレス及び前記読出先頭ビットのバイト内におけるビット位置を示すビットアドレス(以下、読出ビットアドレス、という)、並びに、ピクセルデータのビット数M、に基づいて、前記キャッシュから読み込んだブロックデータから読出対象のピクセルデータを取り出す。
【0027】
この構成によれば、読出位置がバイトアドレスだけでなく、ビットアドレスでも指定できるため、ピクセル単位の読み出しを行う際の、バイト内でのビット位置の計算が不要となり、ピクセル単位の読み出し処理の高速化を図ることができる。
【0028】
上記描画装置において、前記キャッシュは、前記メモリ内の複数のブロックが動的にマッピングされる複数のブロックを含み、前記キャッシュの前記ブロックは、前記メモリ上の対応する前記ブロックと同じ論理アドレス上に配置され、前記キャッシュ制御手段は、前記キャッシュから読出対象のピクセルデータを取り出す際、前記読出先頭ビットを始点としたMビットを、読出対象のピクセルデータとして取り出し、読出対象のピクセルデータが2つのブロックに跨る場合は、前記読出バイトアドレスが示すブロックに格納されたブロックデータ、及び、その読出バイトアドレスを1つ進めたバイトアドレスが示すブロックに格納されたブロックデータから、読出位置を始点としたMビットを、読出対象のピクセルデータとして取り出す。
【0029】
この構成によれば、キャッシュは複数のブロックを有しているので、読出対象のピクセルデータが、メモリのワード境界に跨るような場合でも、キャッシュ中の対応する2つのブロックに格納されたブロックデータから、書込対象のピクセルデータを取り出すことにより、容易に読み出しが可能となる。
【0030】
上記描画装置において、前記キャッシュは、前記メモリ内の2つのブロックがマッピングされる2つのブロックを含む。
【0031】
この構成によれば、最小限の構成で、ワード境界に跨るような描画/読み出しを効率的に行うことができる。
【0032】
上記描画装置において、前記キャッシュの前記ブロックは、レジスタにより構成される。
【0033】
この構成によれば、キャッシュをRAMで構成する場合と比較して、より高速な描画/読み出しが可能となる。また、キャッシュを構成する総ビット数が比較的少ない場合には、RAMで構成されたキャッシュと比べて半導体チップ上での面積が小さくなる場合がある。
【0034】
上記描画装置において、前記メモリ内のブロックの前記キャッシュへのマッピングは、ダイレクトマップ方式である。
【0035】
この構成によれば、回路構成が簡単になるというダイレクトマップ方式の利点を活かしながらも、同一キャッシュブロックに割り付けられる複数のメモリブロックへのアクセスが競合する場合にヒット率が減少するというダイレクトマップ方式の欠点は、描画位置が連続している場合が多いので、ほとんど問題とならない。
【0036】
上記描画装置において、前記メモリと前記キャッシュとの間のデータのコヒーレンシの維持は、ライトバック方式により行われるとともに、前記キャッシュから前記メモリへ強制的にデータを書き戻すフラッシュ手段をさらに備える。
【0037】
この構成によれば、メモリアクセスを抑制できるというライトバック方式の利点を活かしながらも、コヒーレンシが常に維持されているというわけではないというライトバック方式の欠点は、他の手段(例えば、CPU等)の指示に応じてキャッシュからメモリへと強制的にデータを書き戻すフラッシュ手段をさらに備えることにより解消できる。
【0038】
上記描画装置において、前記キャッシュ制御手段は、コヒーレンシを維持するためにライトデータを出力する際に、前記メモリのワード単位あるいはバイト単位でライトデータを出力する。
【0039】
この構成によれば、ピクセル単位でライトデータを出力する場合と比較して、バスアクセスの回数を抑制できる。
【0040】
上記描画装置において、前記キャッシュ制御手段は、メモリ処理に係わるアドレスが、その時のキャッシングの範囲を外れたときの、このアドレスからのデータのリードは、前記メモリのワード単位あるいはバイト単位で行う。
【0041】
この構成によれば、ピクセル単位でデータをリードする場合と比較して、バスアクセスの回数を抑制できる。
【0042】
上記描画装置は、今回の描画/読出し位置を示すアドレス情報に基づいて、次回の描画/読出し位置を示すアドレス情報を算出する描画/読出位置算出手段をさらに備える。
【0043】
この構成によれば、自動的にアドレスが更新されるので、連続したピクセルデータの描画/読出しを高速に実行できる。つまり、描画/読み出しの度に、外部(例えば、CPU等)でアドレス情報を生成して、描画装置に与える必要はない。
【0044】
上記描画装置において、前記描画/読出位置算出手段は、今回の描画/読出し位置に、ピクセルデータのビット数Mを加算して、次回の描画/読出し位置を示すアドレス情報を算出する。
【0045】
この構成によれば、アドレスの自動更新を簡易に行うことができる。
【0046】
上記描画装置は、前記メモリが接続されるバスに接続され、バスマスタになりうる。
【0047】
この構成によれば、描画装置はバスマスタとして自律して動作可能であるため、描画装置による描画中であっても、他の処理手段(例えば、CPU等)は別の処理を実行できる。
【0048】
また、描画装置はバスマスタであり、メモリを他の処理手段(例えば、CPU等)と共用できるので、描画専用のメモリ及びバスを設ける必要もなく、コストの削減を図ることができる。つまり、描画装置がバスマスタでない場合は、自律的にバスにアクセスできないので、描画専用のメモリ及びバスを設けなければならず、コストが上がるが、これらが不要となる。
【0049】
本発明の第4の形態によると、データ処理装置は、アドレス空間へのアクセスを提供するアドレスバスと、前記アドレスバスにより前記アドレス空間のアドレスを指定してデータの転送を行うデータバスと、前記アドレスバス及び前記データバスに接続され、前記アドレスバス及び前記データバスを介してデータの読み出しと書き込み処理を行う中央演算処理装置と、前記アドレスバス及び前記データバスに接続され、前記アドレス空間の一部に格納されているデータのキャッシングを行うキャッシュシステムと、を備え、前記キャッシュシステムは、前記中央演算処理装置によってデータの書き込みがなされる制御レジスタを備えると共に、前記アドレスバス及び前記データバスのバスマスタとして機能し、前記中央演算処理装置は、前記アドレスバスと前記データバスを通じて前記キャッシュシステムを介さずに読み出しと書き込み処理を行うと共に、前記制御レジスタへの書き込みを行うことにより、前記キャッシュシステムに対して、バスマスタとして、前記アドレスバス及び前記データバスによる読み出しと書き込み処理の実行指示を行うことが可能であり、前記中央演算処理装置は、前記キャッシュシステムに対して、前記アドレスバス及び前記データバスによる読み出し又は書き込みの指示を行った後、別の処理を行うことが可能である。
【0050】
この構成によれば、キャッシュシステムはバスマスタとして自律して動作可能であるため、キャッシュシステムによるメモリ処理中であっても、中央演算処理装置は別の処理を実行できる。
【0051】
1つの好ましい実施形態では、前記データ処理装置は、更に前記アドレスバス及び前記データバスよりも高速なデータ転送速度を持つ通信路を備え、前記中央演算処理装置による前記制御レジスタへの書き込みは、この通信路により行われる。
【0052】
この構成によれば、キャッシュシステムが前記アドレスバス及び前記データバス(ここでは、後述の第2バス33のアドレスバスとデータバス)にてメモリ処理を行う場合、前記データ処理装置による対応するキャッシュシステムへの指示は、より高速の通信路(ここでは、後述の第1バス31のデータバスとアドレスバス)で速やかに行うことが出来る。
【0053】
更に、1つの好ましい実施形態では、前記アドレスバス及び前記データバスは、前記アドレス空間に物理記憶領域を提供する外部メモリとの通信に用いられ、前記通信路は、前記中央演算処理装置を含む内部デバイス間の通信に用いられる。
【0054】
本発明の第5の形態による描画装置は、ピクセルを描画領域にプロットする描画装置であって、前記描画領域を含むアドレス空間へのアクセスを提供するアドレスバスと、前記アドレスバスにより前記アドレス空間のアドレスを指定してデータの転送を行うデータバスと、が接続されるバスインターフェイスと、前記バスインターフェイスに接続したデータ格納装置であって、前記バスインターフェイスが、前記アドレス空間における画像データのアドレスを前記アドレスバスへ出力することにより、前記画像データを前記データバスから前記データ格納装置へ転送し、また、前記アドレス空間における前記画像データのアドレスを前記アドレスバスへ出力することにより、前記データ格納装置に格納されているデータを前記データバスへ出力する、データ格納装置と、前記描画領域にプロットすべきピクセルのデータを格納するプロットカラーレジスタと、ピクセルのビット数としてカラーモードを格納するカラーモードレジスタと、前記画像データを指示するアドレスをバイトアドレスとして格納し、このバイトアドレスで指示されたバイト内のビット位置をビットアドレスとして格納し、前記バイトアドレスと前記ビットアドレスは、ビット単位でプロット位置を指示するものであり、ピクセルをプロットした後、前記カラーモードレジスタに格納されたカラーモードに対応するビット数だけこのプロット位置をインクリメントするプロットロケーションカウンタと、前記プロットカラーレジスタ、前記カラーモードレジスタ、前記プロットロケーションカウンタ及び前記データ格納装置に接続し、前記データ格納装置に転送された前記画像データに対して、前記プロットカラーレジスタに格納された前記ピクセルデータのビット位置を、前記プロットロケーションカウンタで示されたプロット位置にビット単位で揃え、前記ピクセルデータを、前記カラーモードレジスタに格納されたカラーモードに対応するビット数に基づいて、前記データ格納装置に転送された前記画像データのプロット位置に書き込むピクセルパッカと、を備えている。
【0055】
この構成によれば、ピクセル単位で描画領域にプロットするプログラムの作成が容易となる。
【0056】
1つの好ましい実施形態では、前記プロットロケーションカウンタ及び前記データ格納装置に接続し、前記データ格納装置に転送された前記画像データから、前記プロットロケーションカウンタで示されたビット位置に存在するピクセルデータを入力し、このピクセルデータをバイト内の先頭位置としたデータを出力するピクセルアンパッカを更に備えている。
【0057】
更に、1つの好ましい実施形態では、前記ピクセルアンパッカは、更に、前記カラーモードレジスタに接続し、前記カラーモードレジスタに格納されたカラーモードに対応するビット数に基づいて、前記ピクセルデータをゼロ拡張して出力する。
【0058】
本発明の第6の形態によるピクセルパッカは、ピクセルデータビットである下位ビットと不使用の残りの上位ビットから夫々構成される複数のピクセルデータをまとめるピクセルパッカであって、所定のビット長のデータを記憶する記憶手段と、前記所定のビット長を持つ出力ポートを備え、逐次ピクセルデータを入力し、第1のビット位置に合わせてシフトし、前記出力ポートから出力するシフタと、前記記憶手段と前記シフタに接続され、シフトされた前記ピクセルデータを、前記シフタから前記記憶手段へ転送するデータ転送手段とからなり、前記第1のビット位置は、データ転送の後、前記ピクセルデータの下位ビットの長さだけシフトすることによって更新され、前記ピクセルデータの転送は、前回の前記第1のビット位置に対応し、前回のピクセルデータが格納されている前記記憶手段の記憶領域を変化させないように行われる。
【0059】
この構成によれば、ピクセルデータは、そのサイズに係わらず、不使用の上位ビットを持つバイトデータやワードデータとして用意すればよく、また、そのピクセルデータは隙間無くまとめられるので、ピクセルデータを作成するプログラムの作成が容易となり、このピクセルパッカを用いることでピクセルデータの格納に要するメモリ領域が最小となる。
【0060】
1つの好ましい実施形態では、前記第1のビット位置のシフトは、前記所定のビット長の巡回シフトである。
【発明を実施するための最良の形態】
【0061】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、本明細書及び図面において、信号のどのビットかを示す必要があるときは、信号名の後に、[a:b]あるいは[a]を付する。[a:b]は、その信号の第a番目のビットから第b番目のビットを意味し、[a]は、その信号の第a番目のビットを意味する。また、真理値表を使用して説明することもあるが、その場合、「1」は「真」、「0」は「偽」、「X」は「don'tcare」または不定を示す。
【0062】
図1は、本発明の実施の形態によるデータ処理装置としてのプロセッサ100の全体構成を示すブロック図である。図1に示すように、このプロセッサ100は、中央演算処理装置(CPU)1、グラフィックスプロセッサ3、ピクセルプロッタ5、サウンドプロセッサ7、DMA(direct memory access)コントローラ9、第1バスアービタ13、第2バスアービタ14、バックアップコントロール回路15、メインメモリ17、タイマ回路19、ADコンバータ(ADC)20、入出力制御回路21、外部メモリインタフェース回路23、クロックドライバ29、PLL(phase−locked loop)回路27、低電圧検出回路25、第1バス31、及び第2バス33を含む。
【0063】
ここで、本実施の形態では、メインメモリ17及び外部メモリ45を区別して説明する必要がないときは、「メモリMEM」と表記する。
【0064】
CPU1は、メモリMEMに格納されたプログラムに従い、各種演算やシステム全体の制御を行う。CPU1は、第1バス31及び第2バス33のバスマスタであり、それぞれのバスに接続された資源にアクセスが可能である。
【0065】
グラフィックスプロセッサ3は、第1バス31及び第2バス33のバスマスタであり、メモリMEMに格納されたデータをグラフィックデータに変換し、このグラフィックデータを基にテレビジョン受像機(図示せず)に合わせたビデオ信号VDを生成する。
【0066】
ここで、グラフィックデータは、バックグラウンドスクリーンとスプライトとビットマップスクリーンとから合成される。バックグラウンドスクリーンは、二次元配列からなり、テレビジョン受像機のスクリーンを全て覆う大きさを持つ。そして、各配列要素は、矩形の画素集合からなる。スプライトは、テレビジョン受像機のスクリーンのいずれの位置にでも配置可能な1つの矩形の画素集合からなる。ビットマップスクリーンは自由に大きさと位置を設定可能な二次元画素配列からなる。
【0067】
また、グラフィックスプロセッサ3は、第1バス31を通じて、CPU1により制御され、また、CPU1に対して、割込み要求信号INRQを発行する機能を有する。
【0068】
本発明の特徴の1つであるピクセルプロッタ5は、第1バス31を通じて、CPU1により制御され、CPU1から与えられたピクセルデータの描画を実行する。この場合、ピクセル単位での描画が可能である。ピクセルデータは、1ピクセルの表示色をMビットで表したデータである(Mは1以上の整数でありMビット/ピクセルのカラーモードに対応)。本実施の形態では、M=1〜8の例を挙げる。なお、本実施の形態では、カラーパレットを通じて表示色が指定される間接指定方式を採用している。
【0069】
また、ピクセルプロッタ5は、キャッシュシステムにより、高速な描画と効率的なバス(第1バス31及び第2バス33)の使用を実現している。さらに、ピクセルプロッタ5は、第1バス31及び第2バス33のバスマスタであり、後述のキャッシュ590からメモリMEMへのライト及びメモリMEMからキャッシュ590へのライトを自律的に行うことができる。ピクセルプロッタ5については、後で詳細に説明する。
【0070】
サウンドプロセッサ7は、第1バス31及び第2バス33のバスマスタであり、メモリMEMに格納されたデータをサウンドデータに変換し、このサウンドデータを基にオーディオ信号AUを生成して出力する。
【0071】
サウンドデータは、基本の音色となるPCM(パルスコードモジュレーション)データに対し、ピッチ変換及び振幅変調を行い合成される。振幅変調では、CPU1によって指示されるボリューム制御の他に、楽器の波形を再現するための機能が用意される。
【0072】
また、サウンドプロセッサ7は、第1バス31を通じて、CPU1により制御され、また、CPU1に対して、割込み要求信号INRQを発行する機能を有する。
【0073】
DMAコントローラ9は、外部バス43に接続された外部メモリ45から、メインメモリ17へのデータ転送を司る。外部メモリ45として、例えば、SRAM(static random access memory)、DRAM(dynamic randomaccess memory)、若しくはROM(read only memory)等、任意のメモリを用いることができるし、その数も問わない。また、DMAコントローラ9は、データ転送の完了を通知するために、CPU1に対する割込み要求信号INRQを発行する機能を有する。さらに、DMAコントローラ9は、第1バス31及び第2バス33のバスマスタであり、また、第1バス31を通じてCPU1により制御される。
【0074】
メインメモリ17は、マスクROM、SRAM、及び、DRAMのうち、必要なものを備える。本実施の形態では、メインメモリ17をSRAMで構成する例を挙げる。
【0075】
バックアップコントロール回路15は、後述の低電圧検出回路25が低電圧を検知した場合に、メインメモリ17を非活性化する。そして、メインメモリ17には、バッテリ41から電源電圧が供給される。従って、電源電圧Vcc0及びVcc1の供給が停止された場合でも、SRAMたるメインメモリ17のデータが保持される。
【0076】
第1バスアービタ13は、第1バス31の各バスマスタからの第1バス使用要求信号を受け付け、調停を行って、1つのバスマスタに対して第1バス使用許可信号を発行する。具体的には、第1バス31の使用に関して各バスマスタに割り当てられた優先順位を定めた優先順位情報が複数用意され、第1バスアービタ13は、その複数の優先順位情報から1つの優先順位情報を順次的かつ巡回的に選択し、選択した優先順位情報に基づいて調停を行う。
【0077】
各バスマスタは、第1バス使用許可信号を受領することによって第1バス31に対するアクセスが許可される。ここで、第1バス使用要求信号及び第1バス使用許可信号は、図1では、第1バス調停信号FABとして示されている。
【0078】
第1バス31は、例えば、8ビットのデータバス、15ビットのアドレスバス、及びコントロールバスを含む。
【0079】
第2バスアービタは、第2バス33の各バスマスタからの第2バス使用要求信号を受け付け、調停を行い、1つのバスマスタへ第2バス使用許可信号を発行する。具体的には、第2バス33の使用に関して各バスマスタに割り当てられた優先順位を定めた優先順位情報が複数用意され、第2バスアービタ14は、その複数の優先順位情報から1つの優先順位情報を順次的かつ巡回的に選択し、選択した優先順位情報に基づいて調停を行う。
【0080】
各バスマスタは、第2バス使用許可信号を受領することによって第2バス33に対するアクセスが許可される。ここで、第2バス使用要求信号及び第2バス使用許可信号は、図1では、第2バス調停信号SABとして示されている。
【0081】
第2バス33は、16ビットのデータバス、27ビットのアドレスバス、及びコントロールバスを含む。
【0082】
タイマ回路19は、設定された時間間隔に基づき、CPU1に対する割込み要求信号INRQを発行する機能を有する。時間間隔等の設定は、第1バス31を介してCPU1によって行われる。
【0083】
ADC20は、アナログ入力信号をデジタル信号に変換する。このデジタル信号は、第1バス31を介してCPU1によってリードされる。また、ADC20は、CPU1に対して、割込み要求信号INRQを発行する機能を有する。なお、外部からのアナログ信号は、例えば、6つのアナログポートAIN0〜5を介して、ADC20へ入力される。
【0084】
入出力制御回路21は、外部入出力装置や外部の半導体素子との通信を、入出力信号を介して行う。入出力信号は、第1バス31を介して、CPU1からリード/ライトされる。また、入出力制御回路21は、CPU1に対して、割込み要求信号INRQを発行する機能を有する。なお、入出力信号は、例えば、プログラマブルな入出力ポートIO0〜IO23を介して入出力される。
【0085】
低電圧検出回路25は、電源電圧Vcc0及びVcc1を監視し、そのいずれかが、それぞれについて定められた電圧以下になったときに、PLL回路27のリセット信号、その他のシステム全体のリセット信号RSETを発行する。
【0086】
電源電圧Vcc0は、例えば、+2.5Vであり、主にプロセッサ内のデジタル回路に供給される。また、電源電圧Vcc1は、例えば、+3.3Vであり、主にプロセッサ内のアナログ回路に供給される。
【0087】
PLL回路27は、水晶振動子37より得られる正弦波信号を逓倍した高周波クロック信号を生成する。
【0088】
クロックドライバ29は、PLL回路27より受け取った高周波クロック信号を、十分な信号強度へ増幅して、内部クロックICLKとして、各ブロックへ供給する。
【0089】
外部メモリインタフェース回路23は、第2バス33を外部バス43に接続するための機能を有する。
【0090】
図1のプロセッサにおけるデータの転送経路を説明する。例えば、バスマスタたるCPU1が、バススレイブとして第1バス31に接続されている他の機能ブロック(グラフィックスプロセッサ3、ピクセルプロッタ5、サウンドプロセッサ7、DMAコントローラ9、第1バスアービタ13、第2バスアービタ14、等)を制御する場合は、これら機能ブロックの制御レジスタへのライトデータは、第1バスアービタ13へ与えられ、調停後に、第1バス31から、各機能ブロックに与えられ、一方、これら機能ブロックの制御レジスタからのリードデータは、調停後に、第1バス31及び第1バスアービタ13を介して、CPU1に与えられる。但し、グラフィックスプロセッサ3、ピクセルプロッタ5、サウンドプロセッサ7、DMAコントローラ9は、第1バス31のバスマスタとして、第1バスアービタ13へバスアクセス要求を行う機能を備える。
【0091】
バスマスタが、メインメモリ17に対してアクセスする場合は、ライトデータは、第1バスアービタ13に与えられ、調停後に、第1バス31から、メインメモリ17に与えられ、一方、リードデータは、調停後に、第1バス31及び第1バスアービタ13を介して、バスマスタに与えられる。また、バスマスタが、外部メモリ45に対してアクセスする場合は、ライトデータは、第2バスアービタ14に与えられ、調停後に、第2バス33から、外部メモリインタフェース回路23及び外部バス43を介して、外部メモリ45に与えられ、一方、リードデータは、調停後に、外部バス43、外部メモリインタフェース回路23、第2バス33及び第2バスアービタ14を介して、バスマスタに与えられる。
【0092】
ここで、本実施の形態では、メモリMEMが描画領域として使用される。このメモリMEMが複数のバスマスタで共用され、かつ、キャッシュ590が1つのバスマスタに占有され、かつ、ライトバック方式を採用している場合、常にコヒーレンシが維持されているとは限らない。それ故、メモリMEMとキャッシュ590内のデータが一致していない場合、CPU1からの制御によってキャッシュ590内のデータをメモリMEMに書き出すフラッシュ動作を実装し、コヒーレンシの維持を図る。
【0093】
次に、ピクセルプロッタ5の動作を簡単に説明する。描画を行う前に、CPU1により、カラーモード及び描画位置が、ピクセルプロッタ5の対応する制御レジスタに設定される。本実施の形態では、上記のように、カラーモードは、1ビット/ピクセル(2色モード)〜8ビット/ピクセル(256色)の8通りが用意される。
【0094】
描画位置は、描画対象のピクセルのバイトアドレスとビットアドレスとにより指定される。本実施の形態では、例えば、描画位置は、30ビットのアドレスにより指定し、上位27ビットがバイトアドレス[29:3]、下位3ビットがビットアドレス[2:0]である。
【0095】
つまり、バイトアドレス[29:3]は、描画対象のピクセルデータの先頭ビットを含むバイトを指し示すアドレスであり、ビットアドレス[2:0]は、描画対象のピクセルデータの先頭ビットのバイト内におけるビット位置を示すアドレスである。
【0096】
ピクセルデータは、カラーモードに関係なく、小さいバイトアドレスから大きいバイトアドレスへ隙間なく敷き詰められる。この場合、ピクセルデータは、バイト内でも、カラーモードに関係なく、LSB(least significant bit)側からMSB(most significant bit)側へ、隙間なく敷き詰められる。この点を具体例を挙げて説明する。
【0097】
図2は、図1のピクセルプロッタ5の動作説明の例示図である。図2では、カラーモードが、3ビット/ピクセルの例を挙げている。図2に示すように、ピクセルNは、バイトアドレス[29:3]及びビットアドレス[2:0]により指定される描画位置に書き込まれる。次のピクセルN+1は、ピクセルNのすぐ後から書き込まれる。さらに次のピクセルN+2は、ピクセルN+1のすぐ後から、バイトに跨って書き込まれる。このように、ピクセルデータは、バイト内及びバイト間において、隙間なく敷き詰められる。この場合のキャッシュ590に対するピクセルデータの書き込み、つまり、描画は、ワード単位やバイト単位ではなく、ピクセル単位で行われる。
【0098】
次に、ピクセルプロッタ5の詳細を説明する。
【0099】
図3は、図1のピクセルプロッタ5に対する入出力信号の説明図である。図3に示すように、内部アドレスIADRは、各機能ブロックの制御レジスタやメモリが配置される第1バス31のアドレスを示す信号であり、本実施の形態では、例えば、15ビットの信号とする。つまり、第1バス31に含まれるアドレスバスのバス幅は15ビットとする。この内部アドレスIADRは、バスマスタから第1バスアービタ13を介して第1バス31に与えられる。ピクセルプロッタ5に対しては、CPU1がピクセルプロッタ5の制御を行う際には、バスマスタとなったCPU1が、第1バスアービタ13及び第1バス31を介して与える。
【0100】
第1バス31領域には、CPU1(制御レジスタ)、サウンドプロセッサ7(ローカルメモリ及び制御レジスタ)、グラフィックスプロセッサ3(制御レジスタ、パレットメモリ、スプライトメモリ)、メインメモリ17、及びピクセルプロッタ5(制御レジスタ)等が配置される。一方、第2バス33領域には、外部メモリ45などが配置される。
【0101】
内部リード/ライト信号IRWは、ピクセルプロッタ5内に配置された制御レジスタ等に対してアクセスする際のアクセスの種類を示す信号であり、第1バスアービタ13および第1バス31を介してCPU1から与えられる。例えば、内部リード/ライト信号IRWが、ハイレベルのときはリードを示し、ローレベルのときはライトを示す。
【0102】
内部データIDAIは、ピクセルプロッタ5に対して、バスマスタとなったCPU1から、第1バスアービタ13及び第1バス31を経由して与えられるデータである。
【0103】
内部データIDAOは、バスマスタとなったCPU1に対して、ピクセルプロッタ5から、第1バス31及び第1バスアービタ13を経由して与えられるデータである。
【0104】
本実施の形態では、例えば、内部データIDAI及びIDAOは、それぞれ8ビットのデータとする。つまり、第1バス31に含まれるデータバスのバス幅を8ビットする。
【0105】
内部クロックICLKは、例えば、約43MHzのクロック信号であり、クロックドライバ29から与えられる。ピクセルプロッタ5の全論理回路は、内部クロック信号ICLKに同期して動作する。内部クロック信号ICLKは、ピクセルプロッタ5内部の同期レジスタに入力されるが、図示を省略している。
【0106】
リセット信号RSETは、ピクセルプロッタ5の全論理回路をリセットする信号であり、リセットボタン(図示せず)が押下されたときや低電圧検出回路25が低電圧を検出したときに与えられる信号である。ピクセルプロッタ5の初期値付き制御レジスタは、このリセット信号RSETによって初期値へと戻される。
【0107】
プロットアドレスPADRは、ピクセルプロッタ5がメモリMEMに対してアクセスを行う際のバイトアドレスであり、リード/ライトの対象であるバイトデータの格納位置を示す。プロットアドレスPADRは、第1バスアービタ13または第2バスアービタ14を介して、第1バス31または第2バス33に一旦与えられ、それらからメモリMEMへ与えられる。本実施の形態では、例えば、プロットアドレスPADRを、27ビットの信号とする。第1バス31へのアクセスでは、プロットアドレスPADRの下位15ビットが有効となる。
【0108】
プロットリード/ライト信号PRWは、ピクセルプロッタ5がメモリMEMに対してアクセスする際のアクセスの種類を示す信号である。例えば、プロットリード/ライト信号PRWが、ローレベルのときはリードを示し、ハイレベルのときはライトを示す。プロットリード/ライト信号PRWは、第1バスアービタ13または第2バスアービタ14を介して、第1バス31または第2バス33に一旦与えられ、それらからメモリMEMへ与えられる。
【0109】
ライトデータWDAは、ピクセルプロッタ5によるメモリMEMへのライト対象のデータである。本実施の形態では、第1バス31に含まれるデータバスのバス幅を8ビットとしているので、メインメモリ17へのライトの際は、ライトデータWDAのサイズは1バイトであり、一方、第2バス33に含まれるデータバスのバス幅は16ビットとしたので、外部メモリ45へのライトの際は、ライトデータWDAのサイズとして1バイトあるいは2バイトである。ライトデータWDAは、第1バスアービタ13または第2バスアービタ14を介して、第1バス31または第2バス33に一旦与えられ、それらからメモリMEMへ与えられる。
【0110】
サイズ信号SIZは、ピクセルプロッタ5が、メモリMEMに対してリード/ライトするデータのサイズを示す信号である。本実施の形態では、例えば、サイズ信号SIZは、5ビットの信号とする。例えば、サイズが1バイトのときは、「00001」とし、2バイトのときは、「00010」とする。サイズ信号SIZは、第1バスアービタ13及び第2バスアービタ14に与えられる。
【0111】
第1バス使用要求信号FREQは、第1バスアービタ13に対して第1バス31の使用要求を行う信号である。第1バス使用要求信号FREQがアサートされ、プロットリード/ライト信号PRWがリードを示しているときは、メインメモリ17へのリード要求を示す。一方、第1バス使用要求信号FREQがアサートされ、プロットリード/ライト信号PRWがライトを示しているときは、メインメモリ17へのライト要求を示す。
【0112】
第2バス使用要求信号SREQは、第2バスアービタ14に対して第2バス33の使用要求を行う信号である。第2バス使用要求信号SREQがアサートされ、プロットリード/ライト信号PRWがリードを示しているときは、外部メモリ45へのリード要求を示す。一方、第2バス使用要求信号SREQがアサートされ、プロットリード/ライト信号PRWがライトを示しているときは、外部メモリ45へのライト要求を示す。
【0113】
内部ライト受諾信号IWACは、ライトの第1バス31使用要求が受け付けられたことを示す信号であり、第1バスアービタ13から与えられる。
【0114】
外部ライト受諾信号EWACは、ライトの第2バス33使用要求が受け付けられたことを示す信号であり、第2バスアービタ14から与えられる。
【0115】
内部リード許可信号IRGRは、リードの第1バス31使用要求が許可され、メインメモリ17からデータをリード可能であることを示す信号であり、第1バスアービタ13から与えられる。
【0116】
外部下位バイトリード許可信号ERGLは、外部メモリ45からリード外部データREDAの下位バイトを通じてデータをリード可能であることを示す信号であり、第2バスアービタ14から与えられる。
【0117】
外部上位バイトリード許可信号ERGUは、外部メモリ45からリード外部データREDAの上位バイトを通じてデータをリード可能であることを示す信号であり、第2バスアービタ14から与えられる。
【0118】
なお、第1バス使用要求信号FREQ、内部ライト受諾信号IWAC、及び内部リード許可信号IRGRは、図1の第1バス調停信号FABに含まれる。また、第2バス使用要求信号SREQ、外部ライト受諾信号EWAC、外部下位バイトリード許可信号ERGL、及び外部上位バイトリード許可信号ERGUは、図1の第2バス調停信号SABに含まれる。
【0119】
リード内部データRIDAは、メインメモリ17から第1バス31を介して第1バスアービタ13に与えられ、そこからピクセルプロッタ5に与えられる。但し、リード内部データRIDAには他のバスマスタのリードデータも含まれているので、ピクセルプロッタ5は内部リード許可信号IRGRがアサートされている期間にリード内部データRIDAの値をフェッチすることにより、正しい値を取得できる。
【0120】
リード外部データREDAは、外部メモリ45から第2バス33を介して第2バスアービタ14に与えられ、そこからピクセルプロッタ5に与えられる。但し、リード外部データREDAには他のバスマスタのリードデータも含まれているので、ピクセルプロッタ5は外部下位バイトリード許可信号ERGLがアサートされている期間にリード外部データREDAの下位バイトの値をフェッチし、外部上位バイトリード許可信号ERGUがアサートされている期間にリード外部データREDAの上位バイトの値をフェッチすることにより、正しい値を取得できる。
【0121】
図4は、図3のピクセルプロッタ5の内部構成を示すブロック図である。図4に示すように、ピクセルプロッタ5は、アドレスデコーダ51、プロットアクティブレジスタ52、キャッシュフラッシュレジスタ53、プロットビットレジスタ54、プロットロケーションカウンタ55、プロットカラーレジスタ56、マルチプレクサ57、ピクセルキャッシュユニット58、及びバスアービタインタフェース59を含む。
【0122】
ピクセルキャッシュユニット58は、ダイレクトマップ方式のキャッシュ590(後述の図6参照)およびその周辺回路を含む。キャッシュ590は、メモリMEM上の2つのブロック(以下、本実施の形態において、「メモリブロック」と呼ぶ。)が動的にマッピングされる2つのブロック(以下、本実施の形態において、「キャッシュブロック」と呼ぶ。)RG0及びRG1を含み、本実施の形態では、それぞれを16ビットとしている。つまり、16ビット × 2エントリのキャッシュ590を採用している。詳細は後述する。
【0123】
アドレスデコーダ51は、CPU1が発行した内部アドレスIADRをデコードして、各制御レジスタ52,53,54,56、マルチプレクサ57、及びカウンタ55の選択信号を出力する。このようにして、CPU1は、各制御レジスタ52,53,54,56、及びカウンタ55を制御できるとともに、マルチプレクサ57を通じて各制御レジスタ52,53,54,56、及びカウンタ55の現在値をリードできる。
【0124】
プロットアクティブレジスタ52は、プロットアクティブビットPACTを保持する。プロットアクティブビットPACTは、描画処理の動作/非動作を示すビットであり、「真」であれば描画処理が動作状態であることを示し、「偽」であれば描画処理が非動作状態であることを示す。プロットアクティブビットPACTは、ピクセルキャッシュユニット58及びプロットロケーションカウンタ55に与えられる。
【0125】
アドレスデコーダ51におけるデコード結果として、内部アドレスIADRがプロットカラーレジスタ56を示し、かつ、内部リード/ライト信号IRWがライトを示しているときに、プロットアクティブビットPACTは「真」となり、ピクセルキャッシュユニット58からのキャッシュヒット信号CHHTが「真」を示しているときに、プロットアクティブビットPACTは「偽」となる。
【0126】
つまり、描画のために、プロットカラーレジスタ56に描画対象データPCOLがセットされたときに、プロットアクティブビットPACTが「真」になる。なお、ここでは、描画対象データは、キャッシュにこれから描画されるデータを意味し、後述の描画データはキャッシュにすでに描画されているデータを意味する。
【0127】
また、キャッシュヒット信号CHHTが「真」になったということは、キャッシュ590に対する描画が終了したことを意味するから、この場合に、プロットアクティブビットPACTを「偽」にする。
【0128】
キャッシュフラッシュレジスタ53は、キャッシュフラッシュビットCHFLを保持する。キャッシュフラッシュビットCHFLが「真」のときに、キャッシュユニット58のキャッシュ590に保持されている全データが、メモリMEMに書き出される。キャッシュフラッシュビットCHFLは、ピクセルキャッシュユニット58に与えられる。
【0129】
アドレスデコーダ51におけるデコードの結果、内部アドレスIADRがキャッシュフラッシュレジスタ53を示し、かつ、内部リード/ライト信号IRWがライトを示しているときに、キャッシュフラッシュビットCHFLが「真」になる。一方、ダーティビットDTY0およびDTY1の双方が「偽」のときに、キャッシュフラッシュビットCHFLが「偽」になる。
【0130】
ここで、キャッシュフラッシュビットCHFLの必要性を簡単に説明する。メモリMEMへの描画(書き込み)あるいはメモリMEMからの読み込みが、キャッシングの範囲を外れたとき、キャッシュ590中の全データが、メモリMEMへライトバックされる。従って、描画を停止あるいは終了した時点では、キャッシュ590にデータが残ったままであり、メモリMEMとのコヒーレンシが維持されていない状態が発生する。このような事態を避けるために、CPU1が、キャッシュフラッシュビットCHFLを「真」にする制御をして、キャッシュ590中の全データを、メモリMEMに書き出すようにしている。
【0131】
ダーティビットDTY0は、キャッシュブロックRG0中のデータと、メモリMEM上のデータと、の間でコヒーレンシが維持されているか否かを示す。コヒーレンシが維持されていない場合は、ダーティビットDTY0は、「真」になる。
【0132】
ダーティビットDTY1は、キャッシュブロックRG1中のデータと、メモリMEM上のデータと、の間でコヒーレンシが維持されているか否かを示す。コヒーレンシが維持されていない場合は、ダーティビットDTY1は、「真」になる。
【0133】
プロットビットレジスタ54は、プロットビットPBTを保持する。プロットビットPBTは、描画のカラーモードを設定するビットである。上記のように、カラーモードは、1ピクセルの表示色をMビットで表す(Mビット/ピクセル)。例えば、「M」は、1〜8の任意の値を取ることができ、プロットビットPBTを3ビットする。この場合、プロットビットPBTが示す0〜7の値は、それぞれ1〜8ビット/ピクセルを示す。プロットビットPBTは、ピクセルキャッシュユニット58、プロットロケーションカウンタ55、及び、マルチプレクサ57に与えられる。
【0134】
内部アドレスIADRがプロットビットレジスタ54を示しており、かつ、内部リード/ライト信号IRWがライトを示しているときに、アドレスデコーダ51は、プロットビットレジスタ54に選択信号を出力する。プロットビットレジスタ54は、この選択信号が入力されたときに、内部データIDAIとして与えられたカラーモードの情報を保持する。
【0135】
プロットロケーションカウンタ55は、描画(書き込み)あるいは読み出しを行うピクセル位置を示すピクセルアドレスPLOCを生成する。ピクセルアドレスPLOCは、バイトアドレス27ビット(PLOC[29:3])と、ビットアドレス3ビット(PLOC[2:0])と、で構成される。さらに、バイトアドレスPLOC[29:3]は、その上位25ビット(PLOC[29:5])がキャッシュ590に対するタグフィールドに相当する部分であり、下位2ビット(PLOC[4:3])がキャッシュ590に対するインデックスフィールドに相当する部分である。
【0136】
インデックスフィールドPLOC[4]によって、キャッシュブロックRG0あるいはRG1が選択される。タグフィールドPLOC[29:5]は、後述するタグアドレスTGAD0及びTGAD1と比較される部分である。これらについては、後で詳述する。
【0137】
以上のようなピクセルアドレスPLOCは、ピクセルキャッシュユニット58及びマルチプレクサ57に与えられる。プロットロケーションカウンタ55については、後で詳述する。
【0138】
プロットカラーレジスタ56は、描画対象データPCOLを設定するレジスタであり、カラーモードに応じたピクセルデータがLSB詰めで保持される。ただし、描画対象データPCOLは1ピクセル分のピクセルデータのみにより構成される。つまり、描画対象データPCOLに、2ピクセル以上のピクセルデータが含まれることはない。このように、描画対象データPCOLをピクセル単位で設定する。本実施の形態では、例えば、プロットカラーレジスタ56を8ビットとする。この場合に、カラーモードが例えば3ビット/ピクセルとすると、描画対象データPCOLの下位3ビットがピクセルデータであり、残り5ビットは「0」に設定される。描画対象データPCOLは、ピクセルキャッシュユニット58及びマルチプレクサ57に与えられる。
【0139】
内部アドレスIADRがプロットカラーレジスタ56を示しており、かつ、内部リード/ライト信号IRWがライトを示しているときに、アドレスデコーダ51は、プロットカラーレジスタ56に選択信号を出力する。プロットカラーレジスタ56は、この選択信号が入力されたときに、内部データIDAIとして与えられた描画対象データPCOLを保持する。
【0140】
マルチプレクサ57は、アドレスデコーダ51からの選択信号に従って、プロットビットPBT、ピクセルアドレスPLOC、描画対象データPCOL、及び、描画データPVALのうちのいずれか1つを選択して、内部データIDAOとして出力する。
【0141】
アドレスデコーダ51は、内部リード/ライト信号IRWがリードを示しているときに、内部アドレスIADRのデコード結果に応じて、プロットビットPBT、ピクセルアドレスPLOC、描画対象データPCOL、及び、描画データPVALのうちのいずれか1つを選択する選択信号をマルチプレクサ57に出力する。この場合、ピクセルアドレスPLOCの30ビットは、8ビット単位に分割されて選択される。なぜなら、第1バス31のバス幅を8ビットとしているからである。
【0142】
描画データPVALは、現在描画されているピクセルデータ(キャッシュ590中の現在のデータ)であり、カラーモードに応じたピクセルデータがLSB詰めで配置されている。ただし、描画データPVALは1ピクセル分のピクセルデータのみにより構成される。つまり、描画データPVALに、2ピクセル以上のピクセルデータが含まれることはない。従って、CPU1は、現在描画されているピクセルデータをピクセル単位で読み出すことができる。
【0143】
なお、描画対象データPCOLは、プロットカラーレジスタ56に現在保持されているデータ(次に描画されるデータ)である。
【0144】
バスアービタインタフェース59は、プロットアドレスPADR、プロットリード/ライト信号PRW、サイズ信号SIZ、第1バス使用要求信号FREQ、及び第2バス使用要求信号SREQを生成する。詳細には次の通りである。
【0145】
バスアービタインタフェース59は、ピクセルキャッシュユニット58から与えられたリードリクエスト信号RREQがアサートされているときは、ピクセルキャッシュユニット58から与えられたリードアドレス(バイトアドレス)RADRを、プロットアドレスPADRとして出力する。
【0146】
一方、バスアービタインタフェース59は、ピクセルキャッシュユニット58から与えられたライトリクエスト信号WREQがアサートされているときは、ピクセルキャッシュユニット58から与えられたライトアドレス(バイトアドレス)WADRを、プロットアドレスPADRとして出力する。
【0147】
プロットアドレスPADRのLSBは、ピクセルキャッシュユニット58へも出力される。プロットアドレスPADRのLSBは、キャッシュブロックRG0あるいはRG1において、上位8ビットあるいは下位8ビットのいずれかを示す。つまり、プロットアドレスPADRのLSBが、「0」のときは、下位8ビットを示しており、「1」のときは、上位8ビットを示している。
【0148】
また、バスアービタインタフェース59は、リードリクエスト信号RREQがアサートされているときは、リードアドレスRADRをデコードして、第1バス31領域あるいは第2バス33領域のいずれへの要求かを判断して、第1バス使用要求信号FREQ及び第2バス使用要求信号SREQのアサート/ネゲートを制御する。
【0149】
一方、バスアービタインタフェース59は、ライトリクエスト信号WREQがアサートされているときは、ライトアドレスWADRをデコードして、第1バス31領域あるいは第2バス33領域のいずれへの要求かを判断して、第1バス使用要求信号FREQ及び第2バス使用要求信号SREQのアサート/ネゲートを制御する。
【0150】
さらに、バスアービタインタフェース59は、サイズ信号SIZが示すサイズを2バイトとする。ただし、リードリクエストRREQが入力されたときのLSBが「1」のリードアドレスRADRあるいはライトリクエストWREQが入力されたときのLSBが「1」のライトアドレスWADRが示す位置からアクセスが開始されるときは、その時のサイズ信号SIZが示すサイズを1バイトとする。なぜなら、このようなアクセスのときは、下位バイトのリード/ライトは無駄だからである。
【0151】
図5は、図4のプロットロケーションカウンタ55の内部構成を示すブロック図である。図5に示すように、プロットロケーションカウンタ55は、加算器551,552、マルチプレクサ553、AND回路554、マルチプレクサ555〜558、及びアドレスレジスタ559を含む。
【0152】
アドレスレジスタ559には、30ビットのピクセルアドレスPLOCが保持される。CPU1は、このアドレスレジスタ559に、バイト単位でアクセスすることができる。具体的には次の通りである。
【0153】
CPU1からの内部アドレスIADRがピクセルアドレスPLOC[29:24]を示しており、かつ、内部リード/ライト信号IRWがライトを示しているときに、アドレスデコーダ51は、選択信号PLSL3をアサートする。すると、マルチプレクサ555は、CPU1から内部データIDAIとして与えられたピクセルアドレスPLOC[29:24]を、アドレスレジスタ559の該当位置へ出力する。同様に、マルチプレクサ556〜558の各々は、対応する選択信号PLSL2〜PLSL0に従って、対応するピクセルアドレスPLOC[23:16]〜PLOC[7:0]を、アドレスレジスタ559の該当位置へ出力する。
【0154】
さて、一方、描画処理が動作状態のときは、キャッシュ590に対する描画(書き込み)/読み出しが行われるたびに、ピクセルアドレスPLOCに、プロットビットPBTが示すカラーモード(Mビット/ピクセル)の値が加算されて、次の描画/読み出し位置を示すピクセルアドレスPLOCが新たに生成される。具体的には次の通りである。
【0155】
アドレスレジスタ559から出力されたピクセルアドレスPLOCは、マルチプレクサ553の一方入力に与えられるとともに、加算器551にも与えられる。この加算器551は、入力されたピクセルアドレスPLOCに、プロットビットレジスタ54からのプロットビットPBTを加算し、その加算結果を加算器552に出力する。なぜなら、ピクセル単位で描画/読み出しが行われため、次の描画/読み出し位置は、現在の描画/読み出しの対象となっているピクセルデータの先頭ビットから1ピクセルデータ分先になるからである。例えば、プロットビットPBTにより表されるカラーモードが、3ビット/ピクセルのときは、次の描画/読み出し位置は、現在の描画/読み出しの対象となっているピクセルデータの先頭ビットから3ビット先である(図2参照)。
【0156】
次に、加算器552は、加算器551による加算結果に、「1」を加算して、その加算結果を、マルチプレクサ553の他方入力に与える。加算器552による加算結果が、次の描画/読み出し位置を示すピクセルアドレスPLOCである。つまり、プロットビットPBTが「j(jは整数)」を示すときは、カラーモードは(j+1)ビット/ピクセルとなるからである。例えば、プロットビットPBTが「0」を示すときは、カラーモードは1ビット/ピクセルである。
【0157】
さて、マルチプレクサ553は、AND回路554から出力された選択信号SELTに従って、加算器552から与えられた新たなピクセルアドレスPLOCあるいはアドレスレジスタ559から直接与えられたピクセルアドレスPLOCのいずれかを選択して、マルチプレクサ555〜558に出力する。この場合、ピクセルアドレスPLOC[29:24]〜PLOC[7:0]のそれぞれは、対応するマルチプレクサ555〜558に与えられる。
【0158】
AND回路554には、プロットアクティブビットPACT及びキャッシュヒット信号CHHTが与えられる。キャッシュヒット信号CHHTは、メモリMEMに対する描画/読み出しが、キャッシュ590にヒットしたときにアサートされる信号である。プロットアクティブビットPACT及びキャッシュヒット信号CHHTの双方がアサートされたときに、選択信号SELTがアサートされる。つまり、描画処理が動作状態であり、かつ、キャッシュ590にヒットしたときに、選択信号SELTがアサートされる。
【0159】
従って、マルチプレクサ553は、描画処理が動作状態であり、かつ、キャッシュ590にヒットしたときに、加算器552から与えられた新たなピクセルアドレスPLOCをマルチプレクサ555〜558に与え、それ以外のときは、アドレスレジスタ559から直接与えられたピクセルアドレスPLOCをマルチプレクサ555〜558に与える。
【0160】
そして、マルチプレクサ555〜558の各々は、与えられる選択信号PLSL0〜PLSL3がネゲートされているときに、マルチプレクサ553からの対応するピクセルアドレスPLOC[29:24]〜PLOC[7:0]を、アドレスレジスタ559の該当位置に出力する。
【0161】
以上のようにして、プロットロケーションカウンタ55は、描画処理が動作状態のときは、キャッシュ590に対する描画/読み出しが行われるたびに、現在のピクセルアドレスPLOCに、プロットビットPBTが示すカラーモード(Mビット/ピクセル)の値を加算して、次の描画/読み出し位置を示すピクセルアドレスPLOCを新たに算出する。
【0162】
図6は、図4のピクセルキャッシュユニット58の内部構成を示すブロック図である。図6に示すように、ピクセルキャッシュユニット58は、ダーティコントロール回路581、キャッシュセレクタ582、アドレスカリキュレータ583、有効ビットコントロール回路584、マルチプレクサコントロール回路585、マルチプレクサMU0L,MU0U,MU1L,MU1U、ピクセルパッカ560、ピクセルアンパッカ586、キャッシュ590、アドレスコンパレータAC0,AC1、タグレジスタTG0,TG1、有効ビットレジスタVR0,VR1、AND回路AN0,AN1、及びリード/ライトコントロール回路589を含む。
【0163】
キャッシュ590は、キャッシュブロックRG0及びRG1を含む。キャッシュブロックRG0及びRG1のそれぞれは、レジスタにより構成される。
【0164】
上記のように、ダイレクトマップ方式により、2つのキャッシュブロックRG0及びRG1には、2つのメモリブロック(メモリMEM上の2つのブロック)が動的にマッピングされる。また、キャッシュ590とメモリMEMとの間のコヒーレンシの維持(メモリMEMの更新)は、ライトバック方式により行われる。なお、本実施の形態では、キャッシュブロックRG0及びRG1のそれぞれが16ビット(16ビット × 2エントリ)の例を挙げている。
【0165】
まず、図中の各信号について簡単に説明する。ただし、既に説明した信号については説明を省略する。ライトリクエスト信号WRQ0は、キャッシュブロックRG0中のデータをメモリMEMにライトバックする際に「真」に設定される信号である。ライトリクエスト信号WRQ1は、キャッシュブロックRG1中のデータをメモリMEMにライトバックする際に「真」に設定される信号である。
【0166】
リードリクエスト信号RRQ0は、ピクセルアドレスPLOCがキャッシングの範囲を外れたときに、メモリMEMのデータをリードして、キャッシュブロックRG0に書き込む際に「真」に設定される信号である。図示していないが、リードリクエスト信号RRQ1は、ピクセルアドレスPLOCがキャッシングの範囲を外れたときに、メモリMEMのデータをリードして、キャッシュブロックRG1に書き込む際に「真」に設定される信号である。
【0167】
イネーブルビットENA0は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCにより位置が示されるピクセルデータの一部のビットあるいは全部のビットが、キャッシュブロックRG0中に存在する場合に、「真」に設定されるビットである。イネーブルビットENA1は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCにより位置が示されるピクセルデータの一部のビットあるいは全部のビットがキャッシュブロックRG1中に存在する場合に、「真」に設定されるビットである。
【0168】
従って、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCにより位置が示されるピクセルデータが、キャッシュブロックRG0及びRG1に跨っているときは、イネーブルビットENA0及びENA1の双方が「真」に設定される。
【0169】
バイトアドレスPAD0[26:2]は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOC[29:0]のインデックスフィールドPLOC[4:3]がキャッシュブロックRG0を示しているときのタグフィールドPLOC[29:5]である。バイトアドレスPAD1[26:2]は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOC[29:0]のインデックスフィールドPLOC[4:3]がキャッシュブロックRG1を示しているときのタグフィールドPLOC[29:5]である。
【0170】
有効ビット制御信号VCON0は、タグレジスタTG0及び有効ビットレジスタVR0を制御する信号である。有効ビット制御信号VCON1は、タグレジスタTG1及び有効ビットレジスタVR1を制御する信号である。
【0171】
タグアドレスTGAD0[26:2]は、キャッシュブロックRG0に現在マッピングされているメモリブロックのバイトアドレス27ビット中の上位25ビットである。タグアドレスTGAD1[26:2]は、キャッシュブロックRG1に現在マッピングされているメモリブロックのバイトアドレス27ビット中の上位25ビットである。
【0172】
ヒット制御信号HCON0は、バイトアドレスPAD0[26:2]とタグアドレスTGAD0[26:2]とが一致したときに、「真」に設定される信号である。ヒット制御信号HCON1は、バイトアドレスPAD1[26:2]とタグアドレスTGAD1[26:2]とが一致したときに、「真」に設定される信号である。
【0173】
有効ビットVLD0は、キャッシュブロックRG0中のデータの有効/無効を示す信号であり、有効な期間中「真」にされ、無効なときに「偽」にされる。有効ビットVLD1は、キャッシュブロックRG1中のデータの有効/無効を示す信号であり、有効な期間中「真」にされ、無効なときに「偽」にされる。
【0174】
ヒット信号HT0は、メモリMEMに対する描画(書き込み)/読み出しが、キャッシュブロックRG0にヒットしたときに「真」に設定される信号である。ヒット信号HT1は、メモリMEMに対する描画(書き込み)/読み出しが、キャッシュブロックRG1にヒットしたときに「真」に設定される信号である。
【0175】
選択信号MSL0L,MSL0U,MSL1L,MSL1Uは、それぞれマルチプレクサMU0L,MU0U,MU1L,MU1Uを制御する信号である。
【0176】
次に、各機能ブロックについて説明する。ダーティコントロール回路581は、ダーティビットDTY0及びDTY1を制御する。この点を図面を用いて詳細に説明する。
【0177】
図7Aは、図6のダーティビットDTY0の真理値表を示す図、図7Bは、図6のダーティビットDTY1の真理値表を示す図である。図7Aに示すように、ダーティコントロール回路581は、ライトリクエスト信号WRQ0が「真」、かつ、内部ライト受諾信号IWACが「真」、かつ、ピクセルアドレスPADRのLSBが「1」のときに、次の内部クロック信号ICLKの「立ち下がり」で、ダーティビットDTY0を「偽」(キャッシュ590とメモリMEMとの間でコヒーレンシが維持されている状態)にする。
【0178】
ここで、プロットアドレスPADR[26:0]は、バイトアドレスであり、そのLSB(プロットアドレスPADR[0])は、キャッシュブロックRG0及びRG1の各々において、上位バイトあるいは下位バイトのいずれかを示す。本実施の形態では、プロットアドレスPADR[0]が「0」ときは下位バイトを示し、「1」のときは上位バイトを示す。ライトバックは、キャッシュ590のブロック単位で行われるため、第1バス31に接続されたメモリ17に対するライトバックにおいては、プロットアドレスPADR[0]が「1」になったことを、ダーティビットDTY0を「偽」にする条件の1つとしている。
【0179】
また、ダーティコントロール回路581は、ライトリクエスト信号WRQ0が「真」、かつ、外部ライト受諾信号EWACが「真」のときに、次の内部クロック信号ICLKの「立ち下がり」で、ダーティビットDTY0を「偽」(キャッシュ590とメモリMEMとの間でコヒーレンシが維持されている状態)にする。
【0180】
ここで、外部バス43及び外部メモリインタフェース回路23を介して第2バス33に接続されたメモリ45に対するライトバックは、プロットアドレスPADR[0]が「0」のときは2バイト同時のライト要求を発行し、プロットアドレスPADR[0]が「1」のときは1バイトのみのライト要求を発行するので、プロットアドレスPADR[0]の状態は、ダーティビットDTY0を「偽」にする条件に含まれない。
【0181】
一方、ダーティコントロール回路581は、プロットアクティブビットPACTが「真」、かつ、キャッシュヒット信号CHHTが「真」、かつ、イネーブルビットENA0が「真」のときに、ダーティビットDTY0を「真」(キャッシュ590とメモリMEMとの間でコヒーレンシが維持されていない状態)にする。
【0182】
なぜなら、この場合は、キャッシュブロックRG0への描画が発生することを意味し、従って、その時点で、キャッシュ590とメモリMEMとの間でコヒーレンシが乱れるからである。
【0183】
同様に、ダーティコントロール回路581は、図7Bに示す真理値表に従って、ダーティビットDTY1を制御する。
【0184】
図6に戻って、キャッシュセレクタ582は、イネーブルビットENA0及びENA1を制御する。詳細には次の通りである。
【0185】
キャッシュセレクタ582は、ピクセルアドレスPLOCを基に、描画(書き込み)/読み出しの先頭ビットの位置が、キャッシュブロックRG0あるいはRG1のいずれかを判断し、先頭ビットが位置するキャッシュブロックRG0あるいはRG1に対応するイネーブルビットENA0あるいはENA1を「真」にする。
【0186】
さらに、キャッシュセレクタ582は、ピクセルアドレスPLOC及びプロットビットPBTを基に、描画/読み出しの最後尾のビットの位置を判断して、その最後尾のビットが位置するキャッシュブロックRG0あるいはRG1に対応するイネーブルビットENA0あるいはENA1を「真」にする。この処理は、描画/読み出しのピクセルデータが、キャッシュブロックRG0及びRG1の双方に跨っている場合に対処するための処理である。従って、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCにより示される位置のピクセルデータが、キャッシュブロックRG0及びRG1の双方に跨っている場合は、イネーブルビットENA0及びENA1の双方を「真」に設定する。
【0187】
一方、キャッシュセレクタ582は、描画/読み込みの先頭ビットあるいは最後尾ビットのいずれも位置しないブロックRG0及び/又はRG1に対応するイネーブルビットENA0及び/又はENA1を「偽」にする。
【0188】
アドレスカリキュレータ583は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCを基に、バイトアドレスPAD0あるいはPAD1のいずれかを生成する。詳細には次の通りである。
【0189】
アドレスカリキュレータ583は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOC[29:0]のインデックスフィールドPLOC[4:3]がキャッシュブロックRG0を示しているとき、つまり、インデックスフィールドPLOC[4]が「0」であるとき、そのときのタグフィールドPLOC[29:5]を、バイトアドレスPAD0[26:2]として、リード/ライトコントロール回路589、アドレスコンパレータAC0、及び、タグレジスタTG0に出力するとともに、描画の初回位置をキャッシュブロックRG0にするため、タグフィールドPLOC[29:5]を、バイトアドレスPAD1[26:2]として、リード/ライトコントロール回路589、アドレスコンパレータAC1、及び、タグレジスタTG1に出力する。
【0190】
一方、アドレスカリキュレータ583は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOC[29:0]のインデックスフィールドPLOC[4:3]がキャッシュのブロックRG1を選択しているとき、つまり、インデックスフィールドPLOC[4]が「1」であるとき、そのときのタグフィールドPLOC[29:5]を、バイトアドレスPAD1[26:2]として、リード/ライトコントロール回路589、アドレスコンパレータAC1、及び、タグレジスタTG1に出力するとともに、描画の初回位置をキャッシュブロックRG1にするため、タグフィールドPLOC[29:5]に「1」を加えた値を、バイトアドレスPAD0[26:2]として、リード/ライトコントロール回路589、アドレスコンパレータAC0、及び、タグレジスタTG0に出力する。
【0191】
有効ビットコントロール回路584は、キャッシュブロックRG0中のデータの有効/無効を示す有効ビットVLD0、及び、キャッシュブロックRG1中のデータの有効/無効を示す有効ビットVLD1を制御する。また、有効ビットコントロール回路584は、タグレジスタTG0及びTG1の更新を制御する。この点を真理値表を用いて詳細に説明する。
【0192】
図8Aは、図6の有効ビットコントロール回路584が出力する有効ビット制御信号VCON0及びIVCN0の真理値表を示す図、図8Bは、図6の有効ビットコントロール回路584が出力する有効ビット制御信号VCON1及びIVCN1の真理値表を示す図、である。
【0193】
図8Aに示すように、有効ビットコントロール回路584は、キャッシュフラッシュビットCHFLが「偽」、かつ、リードリクエスト信号RRQ0が「真」、かつ、プロットアドレスPADRのLSBが「1」、かつ、内部リード許可信号IRGAが「真」のとき、あるいは、キャッシュフラッシュビットCHFLが「偽」、かつ、リードリクエスト信号RRQ0が「真」、かつ、外部リード許可信号ERGUが「真」のとき、有効ビット制御信号VCON0を「真」にする。
【0194】
一方、有効ビットコントロール回路584は、キャッシュフラッシュビットCHFLが「真」のときに、有効ビット制御信号IVCN0を「真」にする。
【0195】
ここで、キャッシュ590中のデータの有効/無効の判断は、キャッシュ590のブロック単位で行われ、しかも、書き込みは、キャッシュブロックRG0の下位バイト側から行われる。このため、有効ビット制御信号VCON0を「真」にする条件の1つとして、プロットアドレスPADR[0]が「1」であることを挙げている。
【0196】
一方、リードリクエスト信号RRQ0が「真」のときに、第2バス33の上位バイトの使用を許可する外部リード許可信号ERGUが「真」になれば、キャッシュブロックRG0への書き込みは終了しているため、この場合は、真理値表にてプロットアドレスPADR[0]を「X」としている。
【0197】
同様に、有効ビットコントロール回路584は、図8Bに示す真理値表に従って、有効ビット制御信号VCON1及びIVCN1を制御する。この場合、内部リード許可信号IRGAあるいは外部リード許可信号ERGUが「真」であり、しかも、リードリクエスト信号RRQ0が「偽」ということは、リードリクエスト信号RRQ1が「真」であることを意味する。
【0198】
有効ビットレジスタVR0は、有効ビットVLD0を保持する。この有効ビットレジスタVR0の値は、有効ビット制御信号VCON0が「真」であるときに、次の内部クロック信号ICLKの「立ち下り」で、「真」(キャッシュブロックRG0のデータが有効)に書き換えられ、有効ビット制御信号IVCN0が「真」であるときに、次の内部クロック信号ICLKの「立ち下り」で、「偽」(キャッシュブロックRG0のデータが無効)に書き換えられる。
【0199】
同様に、有効ビットレジスタVR1は、有効ビットVLD1を保持し、その値は、有効ビット制御信号VCON1が「真」であるときに、次の内部クロック信号ICLKの「立ち下り」で、「真」(キャッシュブロックRG1のデータが有効)に書き換えられ、有効ビット制御信号IVCN1が「真」であるときに、次の内部クロック信号ICLKの「立ち下り」で、「偽」(キャッシュブロックRG1のデータが無効)に書き換えられる。
【0200】
図6に戻って、タグレジスタTG0は、タグアドレスTGAD0を保持する。タグレジスタTG0の値は、有効ビット制御信号VCON0が「真」であるときに、次の内部クロック信号ICLKの「立ち下り」で、その時入力されているバイトアドレスPAD0に書き換えられる。タグアドレスTGA0は、アドレスコンパレータAC0及びリード/ライトコントロール回路589に出力される。
【0201】
タグレジスタTG1は、タグアドレスTGAD1を保持する。タグレジスタTG1の値は、有効ビット制御信号VCON1が「真」であるときに、次の内部クロック信号ICLKの「立ち下り」で、その時入力されているバイトアドレスPAD1に書き換えられる。タグアドレスTGA1は、アドレスコンパレータAC1及びリード/ライトコントロール回路589に出力される。
【0202】
アドレスコンパレータAC0は、バイトアドレスPAD0と、タグアドレスTGAD0と、を比較して、一致しているか否かを判定し、一致しているときに、ヒット制御信号HCON0を「真」にする。つまり、両者が一致しているということは、キャッシュブロックRG0に現在マッピングされているメモリブロックのバイトアドレスと、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCに含まれるバイトアドレスPLOC[29:5]と、が一致しているということを意味する。
【0203】
同様に、アドレスコンパレータAC1は、バイトアドレスPAD1と、タグアドレスTGAD1と、を比較して、一致しているか否かを判定し、一致しているときに、ヒット制御信号HCON1を「真」にする。
【0204】
AND回路AN0は、ヒット制御信号HCON0が「真」、及び、有効ビットVLD0が「真」のときに、ヒット信号HT0を「真」(メモリMEMに対する描画(書き込み)/読み出しがキャッシュブロックRG0にヒット)にする。AND回路AN1は、ヒット制御信号HCON1が「真」、及び、有効ビットVLD1が「真」のときに、ヒット信号HT1を「真」(メモリMEMに対する描画(書き込み)/読み出しがキャッシュブロックRG1にヒット)にする。
【0205】
ピクセルパッカ560は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCが指し示す位置にピクセルデータを書き込む際に、書き込み対象のピクセルデータで、キャッシュ590中のデータを更新して出力する。つまり、ピクセルパッカ560は、プロットビットPBT及びピクセルアドレスPLOC[4:0]に従って、プロットカラーレジスタ56に格納されたピクセルデータPCOLで、現在のキャッシュブロックRG0及びRG1に格納されたブロックデータCHDA1及びCHDA0を更新して、更新データPDA0[7:0]、PDA0[15:8]、PDA1[7:0]、及びPDA1[15:8]をそれぞれ、マルチプレクサMU0L、MU0U、MU1L、及びMU1Uに出力する。詳細は後述する。
【0206】
マルチプレクサMU0Lは、マルチプレクサコントロール回路585からの選択信号MSL0Lに従って、リード内部データRIDA[7:0]、リード外部データREDA[7:0]、ブロックデータCHDA0[7:0]、および、更新データPDA0[7:0]、のいずれかを選択して、キャッシュブロックRG0の下位8ビットに出力する。マルチプレクサMU0Uは、マルチプレクサコントロール回路585からの選択信号MSL0Uに従って、リード内部データRIDA[7:0]、リード外部データREDA[15:8]、ブロックデータCHDA0[15:8]、および、更新データPDA0[15:8]、のいずれかを選択して、キャッシュブロックRG0の上位8ビットに出力する。
【0207】
マルチプレクサMU1Lは、マルチプレクサコントロール回路585からの選択信号MSL1Lに従って、リード内部データRIDA[7:0]、リード外部データREDA[7:0]、ブロックデータCHDA1[7:0]、および、更新データPDA1[7:0]、のいずれかを選択して、キャッシュブロックRG1の下位8ビットに出力する。マルチプレクサMU1Uは、マルチプレクサコントロール回路585からの選択信号MSL1Uに従って、リード内部データRIDA[7:0]、リード外部データREDA[15:8]、ブロックデータCHDA1[15:8]、および、更新データPDA1[15:8]、のいずれかを選択して、キャッシュブロックRG1の上位8ビットに出力する。
【0208】
マルチプレクサコントロール回路585は、プロットアクティブビットPACT、キャッシュヒット信号CHHT、リードリクエストRRQ0、プロットアドレスPADR[0]、内部リード許可信号IRGR、外部上位バイトリード許可信号ERGU、及び外部下位バイトリード許可信号ERGLに基づいて、マルチプレクサMU0L,MU0U,MU1L,MU1Uを制御する選択信号MSL0L,MSL0U,MSL1L,MSL1Uを生成する。真理値表を用いて詳細を説明する。
【0209】
図9は、図6のマルチプレクサコントロール回路585が生成する選択信号MSL1U,MSL1L,MSL0U,MSL0Lに基づいてマルチプレクサMU0L,MU0U,MU1L,MU1Uの出力データがどのようになるかを示す真理値表である。図9に示すように、マルチプレクサコントロール回路585は、リードリクエスト信号RRQ0が「真」、プロットアドレスPADRのLSBが「0」、及び、内部リード許可信号IRGRが「真」、のときに、リード内部データRIDA[7:0]を選択する選択信号MSL0Lを生成する。また、このとき、マルチプレクサコントロール回路585は、ブロックデータCHDA0[15:8]、ブロックデータCHDA1[7:0]およびブロックデータCHDA1[15:8]を選択する選択信号MSL0U、MSL1L、及びMSL1Uを生成する。
【0210】
同様に、図9の真理値表に従って、マルチプレクサコントロール回路585は、リード内部データRIDA[7:0]を選択する選択信号MSL0U,MSL1L,MSL1U、リード外部データREDA[7:0]を選択する選択信号MSL0L,MSL1L、及び、リード外部データREDA[15:8]を選択する選択信号MSL0U,MSL1U、を生成する。
【0211】
一方、マルチプレクサコントロール回路585は、プロットアクティブビットPACTが「真」、キャッシュヒット信号CHHTが「真」であるときは、更新データPDA0[7:0]、PDA0[15:8]、PDA1[7:0]およびPDA1[15:8]を選択する選択信号MSL0L、MSL0U、MSL1L、及びMSL1Uを生成する。
【0212】
また、上述の組み合わせ以外の入力信号が与えられた場合、マルチプレクサコントロール回路585は、ブロックデータCHDA0[7:0],CHDA0[15:8]、CHDA1[7:0]およびCHDA1[15:8]を選択する選択信号MSL0L、MSL0U、MSL1L、及びMSL1Uを生成する。すなわち、キャッシュブロックRG0及びRG1のデータはそのまま保持される。
【0213】
図6に戻って、ピクセルアンパッカ586は、プロットロケーションカウンタ55が現在出力しているピクセルアドレスPLOCが指し示すピクセルデータを読み出す際に、キャッシュブロックRG0及びRG1のデータを、ピクセル単位のデータに分解して出力する。つまり、ピクセルアンパッカ586は、プロットビットPBT及びピクセルアドレスPLOC[4:0]に従って、現在のキャッシュブロックRG0中のブロックデータCHDA0及びキャッシュブロックRG1中のブロックデータCHDA1を、ピクセル単位のデータに分解して出力する。詳細は後述する。
【0214】
リード/ライトコントロール回路589は、プロットアクティブビットPACTが「真」のときに、必要に応じて、ライトリクエスト信号WREQ、ライトアドレスWADR、リードリクエスト信号RREQ、リードアドレスRADR、キャッシュヒット信号CHHT、リードリクエスト信号RRQ0、ライトリクエスト信号WRQ0、及び/又は、ライトリクエスト信号WRQ1を生成する。詳細は次の通りである。
【0215】
リード/ライトコントロール回路589は、ライトリクエスト信号WRQ0あるいはライトリクエスト信号WRQ1が「真」になったときに、ライトリクエスト信号WREQをアサートする。
【0216】
図10は、図6のライトリクエスト信号WRQ0を生成する回路の回路図である。この回路は、リード/ライトコントロール回路589に含まれ、AND回路5890、OR回路5891、及びAND回路5892を含む。
【0217】
AND回路5890には、プロットアクティブビットPACT、イネーブルビットENA0、及び、反転したヒット信号HT0が入力される。OR回路5891には、AND回路5890の出力信号及びキャッシュフラッシュビットCHFLが入力される。AND回路5892には、ダーティビットDTY0及びOR回路5891の出力信号が入力される。
【0218】
図から明らかなように、キャッシュフラッシュビットCHFLが「真」、かつ、ダーティビットDTY0が「真」のとき、ライトリクエスト信号WRQ0がアサートされる。あるいは、プロットアクティブビットPACTが「真」、かつ、イネーブルビットENA0が「真」、かつ、ヒット信号HT0が「偽」、かつ、ダーティビットDTY0が「真」のとき、ライトリクエスト信号WRQ0がアサートされる。
【0219】
なお、ライトリクエスト信号WRQ1を生成する回路も、リード/ライトコントロール回路589に含まれ、その回路構成は図10と同様である。
【0220】
図11は、図6のリードリクエスト信号RREQを生成する回路の回路図である。この回路は、リード/ライトコントロール回路589に含まれ、AND回路5893,5894及びOR回路5895を含む。
【0221】
AND回路5893には、プロットアクティブビットPACT、イネーブルビットENA0、反転したヒット信号HT0、及び反転したダーティビットDTY0が入力される。そして、AND回路5893は、プロットアクティブビットPACTが「真」、かつ、イネーブルビットENA0が「真」、かつ、ヒット信号HT0が「偽」、かつ、ダーティビットDTY0が「偽」のときに、リードリクエスト信号RRQ0を「真」にする。
【0222】
ここで、ダーティビットDTY0の「偽」を条件としたのは、コヒーレンシの維持の必要から、メモリMEMへのライトバックの終了後に、必要なデータをリードしてくる必要があるからである。なお、ダーティビットDTY0の「真」は、コヒーレンシが維持されていないこと、つまり、リード前にライトバックが必要であることを意味する。
【0223】
AND回路5894には、プロットアクティブビットPACT、イネーブルビットENA1、ヒット信号HT1、及びダーティビットDTY1が入力される。そして、AND回路5894は、プロットアクティブビットPACTが「真」、かつ、イネーブルビットENA1が「真」、かつ、ヒット信号HT1が「偽」、かつ、ダーティビットDTY1が「偽」のときに、リードリクエスト信号RRQ1を「真」にする。
【0224】
OR回路5895は、リードリクエスト信号RRQ0あるいはRRQ1が「真」のとき、リードリクエスト信号RREQを「真」にする。
【0225】
図6に戻って、リード/ライトコントロール回路589は、イネーブルビットENA0のみが「真」の場合は、キャッシュブロックRG0のヒット信号HT0が「真」のときに、キャッシュヒット信号CHHTをアサートし、イネーブルビットENA1のみが「真」の場合は、キャッシュブロックRG1のヒット信号HT1が「真」のときに、キャッシュヒット信号CHHTをアサートし、イネーブルビットENA0及びENA1の双方が「真」の場合は、キャッシュブロックRG0のヒット信号HT0及びキャッシュブロックRG1のヒット信号HT1の双方が「真」のときに、キャッシュヒット信号CHHTをアサートする。それら以外のときは、キャッシュヒット信号CHHTはネゲートされる。
【0226】
リード/ライトコントロール回路589は、リードリクエスト信号RREQがアサートされたときに、リードアドレスRADR[26:0]を生成する。具体的には次の通りである。
【0227】
リード/ライトコントロール回路589は、リードリクエスト信号RRQ0が「真」のときは、バイトアドレスPADR[0]をリードアドレスRADR[0]とし、リードアドレスRADR[1]を「0」とし、バイトアドレスPAD0[26:2]をリードアドレスRADR[26:2]とする。
【0228】
一方、リード/ライトコントロール回路589は、リードリクエスト信号RRQ1が「真」のときは、バイトアドレスPADR[0]をリードアドレスRADR[0]とし、リードアドレスRADR[1]を「1」とし、バイトアドレスPAD1[26:2]をリードアドレスRADR[26:2]とする。
【0229】
ただし、リード/ライトコントロール回路589は、リードリクエスト信号RRQ0,RRQ1の双方が「真」のときは、リードリクエスト信号RRQ0を優先させて、リードアドレスRADR[26:0]を生成し、その後、リードリクエスト信号RRQ1に基づく、リードアドレスRADR[26:0]を生成する。
【0230】
リード/ライトコントロール回路589は、ライトリクエスト信号WREQがアサートされたとき、ライトアドレスWADR[26:0]を生成する。具体的には次の通りである。
【0231】
リード/ライトコントロール回路589は、メインメモリ17へライトするときは、ライトアドレスWADR[0]に対して、「0」と「1」とを交互に設定する。また、外部メモリ45へライトするときは、ライトデータWDAを2バイトで第2バスアービタ14に出力するので、ライトアドレスWADR[0]を「0」に設定する。後のアドレスの制御は、第2バスアービタ14が行う。
【0232】
また、リード/ライトコントロール回路589は、ライトリクエスト信号WRQ0が「真」のときは、ライトアドレスWADR[1]を「0」とし、タグアドレスTGAD0[26:2]を、ライトアドレスWADR[26:2]とする。
【0233】
一方、リード/ライトコントロール回路589は、ライトリクエスト信号WRQ1が「真」のときは、ライトアドレスWADR[1]を「1」とし、タグアドレスTGAD1[26:2]を、ライトアドレスWADR[26:2]とする。
【0234】
ただし、リード/ライトコントロール回路589は、ライトリクエスト信号WRQ0,WRQ1の双方が「真」のときは、ライトリクエスト信号WRQ0を優先させて、ライトアドレスWADR[26:0]を生成し、その後、ライトリクエスト信号WRQ1に基づくライトアドレスWADR[26:0]を生成する。
【0235】
ここで、リードアドレスRADRの生成には、バイトアドレスPAD0,PAD1を用いている。なぜなら、リードリクエスト信号RREQがアサートされたときは、キャッシュブロックRG0,RG1にこれから書き込もうとするデータをメモリMEMからリードしてくる必要があるからである。
【0236】
一方、ライトアドレスWADRの生成には、タグアドレスTGAD1を用いている。なぜなら、ライトリクエスト信号WREQがアサートされたときは、コヒーレンシを維持するために、キャッシュブロックRG0,RG1に現在保持されているデータをメモリMEMにライトする必要があるからである。
【0237】
リード/ライトコントロール回路589は、ライトリクエスト信号WRQ0がアサートされたときに、キャッシュブロックRG0のデータCHDA0[15:0]をライトデータWDA0[15:0]として出力する。また、リード/ライトコントロール回路589は、ライトリクエスト信号WRQ1がアサートされたときに、キャッシュブロックRG1のデータCHDA1[15:0]をライトデータWDA[15:0]として出力する。
【0238】
図12は、図6のピクセルパッカ560の回路図である。図12に示すように、このピクセルパッカ560は、シフタ5601、デコーダ5602、マルチプレクサm0−0〜m0−15、及びマルチプレクサm1−0〜m1−15を含む。シフタ5601は、巡回シフタであり、シフトアウトした上位ビットは、下位ビットとして戻される。
【0239】
シフタ5601からのビット信号b0〜b15は、それぞれマルチプレクサm0−0〜m0−15の一方入力に与えられ、シフタ5601からのビット信号b16〜b31は、それぞれマルチプレクサm1−0〜m1−15の一方入力に与えられる。
【0240】
マルチプレクサm0−0〜m0−15の他方入力には、それぞれキャッシュブロックRG0中のビットCHDA0[0]〜CHDA0[15]が与えられ、マルチプレクサm1−0〜m1−15の他方入力には、それぞれキャッシュブロックRG1中のビットCHDA1[0]〜CHDA1[15]が与えられる。
【0241】
マルチプレクサm0−0〜m0−7の出力B0〜B7は、マルチプレクサMU0Lの入力に与えられる。マルチプレクサm0−8〜m0−15の出力B8〜B15は、マルチプレクサMU0Uの入力に与えられる。マルチプレクサm1−0〜m1−7の出力B0〜B7は、マルチプレクサMU1Lの入力に与えられる。マルチプレクサm1−8〜m1−15の出力B8〜B15は、マルチプレクサMU1Uの入力に与えられる。
【0242】
デコーダ5602は、キャッシュブロックRG0及びRG1を連続した32ビットとみなし、ピクセルアドレスPLOC[4:0]をデコードして、描画対象データPCOLに含まれるピクセルデータの先頭ビット(つまり、描画対象のピクセルデータの先頭ビット)の32ビット内におけるビット位置を求める。さらに、デコーダ5602は、描画対象のピクセルデータの先頭ビットのビット位置とプロットビットPBT[2:0]とから、描画対象のピクセルデータの最後尾ビットのビット位置を求める。
【0243】
デコーダ5602は、以上の結果に基づいて、選択信号s0〜s31を制御する。選択信号s0〜s31は、対応するマルチプレクサm0−0〜m1−15に与えられ、各マルチプレクサm0−0〜m1−15の2つの入力のうちのいずれか1つを選択する信号である。
【0244】
ここで、マルチプレクサm0−0〜m1−15、ビット信号b0〜b31、ビット信号CHDA0[0]〜CHDA1[15]、及び選択信号s0〜s31の各々を包括して表現するときは、マルチプレクサm、ビット信号b、ビット信号CHDA、及び選択信号sと表記する。
【0245】
具体的には、デコーダ5602は、描画対象のピクセルデータの先頭ビットの位置から最後尾ビットの位置に対応するマルチプレクサmに対しては、シフタ5601からのビット信号bを選択する選択信号sを、それら以外のマルチプレクサmに対しては、キャッシュブロックRG0,RG1からのビット信号CHDAを選択する選択信号sを生成する。
【0246】
一方、シフタ5601は、入力された描画対象データPCOLに含まれるピクセルデータの先頭ビット(つまり、描画対象のピクセルデータの先頭ビット)が、ピクセルアドレスPLOC[4:0]が示すビット位置に来るように、描画対象データPCOLを所定ビットシフトし、ビット信号b0〜b31として、対応するマルチプレクサm0−0〜m1−15に与える。
【0247】
各マルチプレクサm0−0〜m1−15は、対応する選択信号s0〜s31に従って、2入力のうちの1つを選択し、対応するマルチプレクサMU0L,MU0U,MU1L,MU1Uに出力する。その結果、キャッシュブロックRG0,RG1中のデータCHDA0[0]〜CHDA1[15]が、描画対象のピクセルデータで更新され、更新後のデータPDA0[0]〜PDA1[15]が、マルチプレクサMU0L,MU0U,MU1L,MU1Uに与えられる。
【0248】
以上の点を具体例を挙げて説明する。例えば、ピクセルアドレスPLOC[4:0]が示す描画開始のビット位置をキャッシュブロックRG0の第16番目のビットとし、プロットビット[2:0]が示すカラーモードを3ビット/ピクセルとする。従って、この場合、描画対象のピクセルデータの最後尾ビットのビット位置は、キャッシュブロックRG1の第2番目のビットとなる。
【0249】
その結果、マルチプレクサm0−0〜m0−14は、ビット信号CHDA0[0]〜CHDA0[14]を選択して出力し、マルチプレクサm0−15,m1−0,m1−1は、ビット信号b15,b16,b17を選択して出力し、マルチプレクサm1−2〜m1−15は、ビット信号CHDA1[2]〜CHDA1[15]を選択して出力する。
【0250】
図13は、図6のピクセルアンパッカ586の回路図である。図13に示すように、ピクセルアンパッカ586は、ファネルシフタ5861、デコーダ5862、及びマルチプレクサM1〜M7を含む。
【0251】
ファネルシフタ5861には、キャッシュブロックRG0中のブロックデータCHDA0[15:0]及びキャッシュブロックRG1中のブロックデータCHDA1[15:0]が与えられる。そして、ファネルシフタ5861は、ピクセルアドレスPLOC[4:0]に従って、入力されるブロックデータCHDA0[15:0],CHDA1[15:0]から8ビットbt0〜bt7を選択して出力する。この場合、ファネルシフタ5861は、選択した8ビットbt0〜bt7のうち、ビットbt1〜bt7は、対応するマルチプレクサM1〜M7の一方入力に出力する。
【0252】
具体的には、ファネルシフタ5861は、キャッシュブロックRG0及びRG1を連続した32ビットとみなし、ピクセルアドレスPLOC[4:0]に基づいて、読出対象のピクセルデータの先頭ビットの32ビット内におけるビット位置を求め、そこを始点とした8ビットbt0〜bt7を出力する。
【0253】
各マルチプレクサM1〜M7の他方入力には、「0」を示す信号が与えられる。各マルチプレクサM1〜M7は、対応する選択信号S1〜S7に従って、2入力のうちの1つを選択して、描画データPVAL[1]〜PVAL[7]として出力する。ファネルシフタ5861が出力したビットbt0は、そのまま描画データPVAL[0]となる。なぜなら、プロットビットPBT[2:0]により、カラーモードは必ず設定されており、ピクセルデータは、ファネルシフタ5861の出力する8ビット中に、少なくとも1ビットは含まれているからである。
【0254】
ここで、マルチプレクサM1〜M7、選択信号S1〜S7及びビットbt1〜bt7の各々を包括して表現するときは、マルチプレクサM、選択信号S及びビットbtと表記する。
【0255】
デコーダ5862は、プロットビットPBT[2:0]をデコードして、読出対象のピクセルデータの最後尾ビットのビット位置を求め、その結果に応じて、選択信号Sを生成する。つまり、デコーダ5862は、読出対象のピクセルデータの最後尾ビットのビット位置より上位のビットに対応するマルチプレクサMに対しては、「0」を選択する選択信号Sを出力し、他のマルチプレクサMに対しては、ビットbtを選択する選択信号Sを出力する。
【0256】
例えば、プロットビットPBT[2:0]が示すカラーモードが、3ビット/ピクセルの場合、デコーダ5862は、マルチプレクサM1,M2には、ビットbt1,bt2を選択する選択信号S1,S2を与え、マルチプレクサM3〜M7には、「0」を選択する選択信号S3〜S7を与える。
【0257】
以上のようにして、1つのピクセルデータを含む描画データPVAL[7:0]が出力される。つまり、CPU1は、キャッシュ590から、ピクセル単位でデータを読み出すことができる。
【0258】
さて、以上のように、本実施の形態によれば、メモリMEMの1ワードを構成するビット数Nを意識することなく、カラーモード(Mビット/ピクセル)を設定できる。一般に、ビットマップイメージでは、N/Mが整数になるように、つまり、ピクセルデータが常にメモリの2ワードに跨らないように、あるいは、M/Nが整数になるように、つまり、ピクセルデータが常にメモリの複数ワードに丁度収まるように、カラーモードの値Mが設定され、カラーモード選択の幅が狭い。ただし、本発明の適用は、ビットマップイメージの描画に限定されない。
【0259】
また、ピクセルプロッタ5は、CPU1が用意したピクセルデータをキャッシュ590に書き込む。つまり、ピクセルプロッタ5が、メモリMEMに直接アクセスして、ピクセルデータを取得し、描画を行うのではない。CPU1がピクセルデータを用意するので、描画対象となるパターンデータは、予め用意された固定のパターンデータでもよいし、圧縮されたパターンデータでもよいし、ユーザが入力装置(例えば、タブレット等)を使って入力したパターンデータでもよい。加えて、キャッシュ590を利用しているので、高速な描画が可能である。以上の結果、任意のパターンをピクセル単位で高速に描画できる。
【0260】
さらに、ピクセルプロッタ5はバスマスタとして自律して動作可能であるため、ピクセルプロッタ5による描画中であっても、CPU1は他の処理を実行できる。従って、プロセッサ100全体として効率的な処理を実現できる。また、描画処理をバスマスタとしてのピクセルプロッタ5に任せることができるので、CPU1に実行させるプログラムの作成負担を軽減できる。
【0261】
一般に、CPUがメモリに描画する場合は、バイト単位、またはCPUの扱うワード単位での描画を行うので、ビット単位での描画を実行しようとすると、リード・モディファイ・ライトをCPUが行わなければならず、CPUの負荷が大きくなり、また、プログラミングも煩雑となる。ところが、本発明では、ピクセルプロッタ5がバスマスタになるので、リード・モディファイ・ライトは、ピクセルプロッタ5に行わせればよく、その間、CPU1は他の処理を実行できるし、また、プログラミングの際にもリード・モディファイ・ライトを意識する必要がなく、プログラミングの負担を軽減できる。
【0262】
さらに、ピクセルプロッタ5はバスマスタであり、メモリMEMをCPU1等の他のバスマスタと共用できるので、描画専用のメモリ及びバスを設ける必要もなく、コストの削減ができる。つまり、ピクセルプロッタ5がバスマスタでない場合は、自律的にバス(第1バス31、第2バス33)にアクセスできないので、描画専用のメモリ及びバスを設けなければならず、コストが上がるが、本実施の形態においてはこれらが不要となる。
【0263】
さらに、描画位置を示すピクセルアドレスPLOC[29:0]は、描画対象のピクセルデータの先頭ビットを含むバイトに対してバイト単位で割り当てられたバイトアドレスPLOC[29:3]、及び、描画対象のピクセルデータの先頭ビットのバイト内におけるビット位置を示すビットアドレスPLOC[2:0]、により構成される。同様に、読出し位置を示すピクセルアドレスPLOC[29:0]も、読出し対象のピクセルデータの先頭ビットを含むバイトに対してバイト単位で割り当てられたバイトアドレスPLOC[29:3]、及び、読出し対象のピクセルデータの先頭ビットのバイト内におけるビット位置を示すビットアドレスPLOC[2:0]、により構成される。
【0264】
このように、ピクセルプロッタ5に対して、描画/読出し位置が、バイトアドレスだけでなく、ビットアドレスにより指定できるため、CPU1は、ピクセル単位の描画/読出しを行う際の、バイト内でのビット位置の計算が不要となり、処理の高速化及びプログラミングの簡素化を図ることができる。一般に、使用されるアドレスは、バイトアドレスであるため、1ピクセルのビット数がメモリの1ワードに満たず、かつ、ピクセル単位で描画を行う場合は、バイト内でのビット位置の計算が必要となる。
【0265】
さらに、キャッシュ590は、メモリMEM内の2つのメモリブロックがマッピングされる2つのキャッシュブロックRG0,RG1により構成される。このように、必要最小限の構成により、メモリMEMのワード境界に跨るような描画/読み出しを効率的に行っている。
【0266】
さらに、キャッシュブロックRG0及びRG1は、それぞれレジスタにより構成される。従って、キャッシュ590をRAMで構成する場合と比較して、より高速な描画/読み出しが可能となる。また、キャッシュを構成する総ビット数が比較的少ない場合には、RAMで構成されたキャッシュと比べて半導体チップ上での面積が小さくなる場合がある。
【0267】
さらに、メモリMEM内の2つのメモリブロックのキャッシュ590へのマッピングは、ダイレクトマップ方式である。本実施の形態では、回路構成が簡単になるというダイレクトマップ方式の利点を活かしながらも、同一キャッシュブロックに割り付けられる複数のメモリブロックへのアクセスが競合する場合にヒット率が減少するというダイレクトマップ方式の欠点は、描画位置が連続している場合が多いので、ほとんど問題とならない。
【0268】
さらに、メモリMEMとキャッシュ590との間のデータのコヒーレンシの維持は、ライトバック方式により行われる。本実施の形態では、メモリアクセスを抑制できるというライトバック方式の利点を活かしながらも、コヒーレンシが常に維持されているというわけではないというライトバック方式の欠点は、CPU1の指示に応じてキャッシュ590からメモリMEMへと強制的にデータを書き戻すキャッシュフラッシュを行うことにより解消できる。
【0269】
さらに、CPU1からの描画/読出しはピクセル単位で行われるが、リード/ライトコントロール回路589は、メモリMEMのワード単位あるいはバイト単位でライトデータWDAを出力する。従って、ピクセル単位でライトデータを出力する場合と比較して、バスアクセスの回数を抑制できる。
【0270】
同様に、キャッシングの範囲を外れたときの、メモリMEMからのデータのリードは、メモリMEMのワード単位あるいはバイト単位で行われる。従って、ピクセル単位でデータをリードする場合と比較して、バスアクセスの回数を抑制できる。
【0271】
さらに、プロットロケーションカウンタ55は、自動的に描画/読出しアドレスを更新するので、連続したピクセルデータの描画/読出しを高速に実行できる。つまり、描画の度に、CPU1でアドレスを生成して、ピクセルプロッタ5に与える必要はない。
【0272】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0273】
上記の実施の形態では、メモリMEM内の2つのメモリブロックのキャッシュ590へのマッピングは、ダイレクトマップ方式としている。しかし、メモリMEM内の2つのメモリブロックのキャッシュ590へのマッピングとして、よりヒット率の高いフル・アソシエイティブ方式とすることもできる。この場合、タグレジスタTG0及びTG1は、26ビットのレジスタで構成し、夫々、任意のアドレスを示す26ビットのタグアドレスTGAD0[26:1]及びTGAD1[26:1]を格納可能となる。
【0274】
また、キャッシュブロックRG0,RG1を、単独の32ビットレジスタとして、常にメモリMEM内の連続した32ビットのデータを保持するものとして、キャッシュ590を1ラインのみのキャッシュとしてもよい。この場合、上記の実施の形態で2つのキャッシュブロックRG0、RG1の夫々に設けた要素、つまりタグレジスタTG0及びTG1、有効ビットレジスタVR0及びVR1、アドレスコンパレータAC0、AC1や、幾つかの1対の制御信号は、その一方を省略できる。このような構成は、要求される処理が比較的単純であるような場合に、ハードウエア量を縮小する目的で効果的である。
【0275】
更に、また、メモリMEM内の2つのメモリブロックのキャッシュ590へのマッピングとして、セット・アソシエイティブ方式とすることもできる。この場合、例えば、上記の実施の形態で設けられている2つのキャッシュブロックとタグレジスタと、同じ2つのキャッシュブロックとタグレジスタをもう1セット設けて、ヒットしたキャッシュブロックについて、上記の処理を行うようにする。当業者にとって、上記の開示に基づいて、ダイレクトマップ方式のキャッシュ590に代えて、セット・アソシエイティブ方式のキャッシュを用いて本発明の実施の形態を設計することは容易である。
【0276】
前述した実施例の説明は、例示説明の目的のために提示された。それは、説明された厳密な形式に発明を限定することを意図しておらず、上記教示を踏まえた変形が可能である。実施例は、発明の原理を最も明瞭に説明するために選択され、それによって当業者は、その現実的な適用が可能になり、意図された特定使用に向けられた様々な変形と形態で発明を最も効果的に利用することができる。
【図面の簡単な説明】
【0277】
付随する図面を使用した好ましい実施例の下記説明を参照することによって、本発明の前述の及び他の特徴と目的並びにそれらの達成方法は、より明らかになり、そして、その発明そのものも、最も良く理解できるであろう。
【図1】図1は、本発明の実施の形態によるプロセッサの全体構成を示すブロック図である。
【図2】図2は、図1のピクセルプロッタの動作説明の例示図である。
【図3】図3は、図1のピクセルプロッタへの入出力信号の説明図である。
【図4】図4は、図3のピクセルプロッタの内部構成を示すブロック図である。
【図5】図5は、図4のプロットロケーションカウンタの内部構成を示すブロック図である。
【図6】図6は、図4のピクセルキャッシュユニットの内部構成を示すブロック図である。
【図7】図7Aは、図6のダーティビットDTY0の真理値表を示す図である。図7Bは、図6のダーティビットDTY1の真理値表を示す図である。
【図8】図8Aは、図6の有効ビットコントロール回路が出力する有効ビット制御信号VCON0及びIVCN0の真理値表を示す図である。図8Bは、図6の有効ビットコントロール回路が出力する有効ビット制御信号VCON1及びIVCN1の真理値表を示す図である。
【図9】図9は、図6のマルチプレクサコントロール回路が生成する選択信号MSL1L,MSL1U,MSL0L,MSL0Uの説明図である。
【図10】図10は、図6のライトリクエスト信号WRQ0を生成する回路の回路図である。
【図11】図11は、図6のリードリクエスト信号RREQを生成する回路の回路図である。
【図12】図12は、図6のピクセルパッカの回路図である。
【図13】図13は、図6のピクセルアンパッカの回路図である。
【図14】図14は、従来のパターン描画装置のブロック図である。

【特許請求の範囲】
【請求項1】
1ピクセルの表示色をMビット(Mは1以上の整数)で表したピクセルデータの書き込みを実行するデータ処理装置であって、
描画領域としてのメモリと、
プログラムに従った演算処理を実行する演算処理手段と、
前記演算処理手段が生成した、描画位置を示すアドレス情報に従って、前記演算処理手段からピクセル単位で与えられた前記ピクセルデータの書き込みを実行する描画手段と、を備え、
前記描画手段は、
前記メモリ内のブロックが動的にマッピングされ、そのブロックと同じ論理アドレス上に配置されるキャッシュと、
前記メモリの1ワードをNビット(Nは2以上の整数)としたときに、N/MおよびM/Nが整数か否かに関係なく、ピクセル単位で前記キャッシュに前記ピクセルデータを書き込むキャッシュ制御手段と、を含む、データ処理装置。
【請求項2】
バスをさらに備え、
前記メモリ、前記演算処理手段、及び前記描画手段は、前記バスに接続され、
前記演算処理手段及び前記描画手段は、それぞれバスマスタになりうる、請求項1記載のデータ処理装置。
【請求項3】
1ピクセルの表示色をMビット(Mは1以上の整数)で表したピクセルデータの書き込みを実行するデータ処理装置であって、
描画領域としてのメモリと、
プログラムに従った演算処理を実行し、描画位置を示すアドレス情報を生成する演算処理手段と、
前記演算処理手段からピクセル単位で与えられた前記ピクセルデータの書き込みを実行する描画手段と、を備え、
前記描画手段は、
前記メモリ内のブロックが動的にマッピングされ、そのブロックと同じ論理アドレス上に配置されるキャッシュと、
前記演算処理手段が生成した前記アドレス情報に従って、ピクセル単位で前記キャッシュに前記ピクセルデータを書き込むキャッシュ制御手段と、を含み、
描画位置を示す前記アドレス情報は、描画対象のピクセルデータの描画先頭ビットを含むバイトを示すバイトアドレス、及び、前記描画先頭ビットのバイト内におけるビット位置を示すビットアドレス、により構成される、データ処理装置。
【請求項4】
描画領域として使用されるメモリ内のブロックが動的にマッピングされ、そのブロックと同じ論理アドレス上に配置されるキャッシュと、
前記メモリの1ワードをNビット(Nは2以上の整数)とし、1ピクセルの表示色をMビット(Mは1以上の整数)のピクセルデータで表すとき、N/MおよびM/Nが整数か否かに関係なく、描画位置を示すアドレス情報に従って、ピクセル単位で、前記キャッシュに描画対象のピクセルデータを書き込むキャッシュ制御手段と、を備える、描画装置。
【請求項5】
描画位置を示す前記アドレス情報は、描画対象のピクセルデータの描画先頭ビットを含むバイトを示すバイトアドレス、及び、前記描画先頭ビットのバイト内におけるビット位置を示すビットアドレス、により構成され、
前記キャッシュ制御手段は、前記バイトアドレスに基づいて、ヒット/ミスヒットを判断し、ヒットした場合に、前記バイトアドレス及び前記ビットアドレス、並びに、ピクセルデータのビット数M、に基づいて、前記キャッシュから読み込んだブロックデータを描画対象のピクセルデータで更新して、前記キャッシュに書き込む、請求項4記載の描画装置。
【請求項6】
前記キャッシュは、前記メモリ内の複数のブロックが動的にマッピングされる複数のブロックを含み、前記キャッシュの前記ブロックは、前記メモリ上の対応する前記ブロックと同じ論理アドレス上に配置され、
前記キャッシュ制御手段は、前記更新の際、前記バイトアドレスが示すブロックに格納されたブロックデータのうち、前記ビットアドレスが示す描画位置を始点としたMビットを、描画対象のピクセルデータで更新し、描画対象のピクセルデータが2つのブロックに跨る場合は、前記バイトアドレスが示すブロックに格納されたブロックデータ、及び、そのバイトアドレスを1つ進めたバイトアドレスが示すブロックに格納されたブロックデータ、について、描画位置を始点としたMビットを、描画対象のピクセルデータで更新する、請求項5記載の描画装置。
【請求項7】
前記キャッシュ制御手段は、読出対象となるピクセルデータの読出先頭ビットを含むバイトを示すバイトアドレス(以下、読出バイトアドレス、という)に基づいて、ヒット/ミスヒットを判断し、ヒットした場合に、前記読出バイトアドレス及び前記読出先頭ビットのバイト内におけるビット位置を示すビットアドレス(以下、読出ビットアドレス、という)、並びに、ピクセルデータのビット数M、に基づいて、前記キャッシュから読み込んだブロックデータから読出対象のピクセルデータを取り出す、請求項5記載の描画装置。
【請求項8】
前記キャッシュは、前記メモリ内の複数のブロックが動的にマッピングされる複数のブロックを含み、前記キャッシュの前記ブロックは、前記メモリ上の対応する前記ブロックと同じ論理アドレス上に配置され、
前記キャッシュ制御手段は、前記キャッシュから読出対象のピクセルデータを取り出す際、前記読出先頭ビットを始点としたMビットを、読出対象のピクセルデータとして取り出し、読出対象のピクセルデータが2つのブロックに跨る場合は、前記読出バイトアドレスが示すブロックに格納されたブロックデータ、及び、その読出バイトアドレスを1つ進めたバイトアドレスが示すブロックに格納されたブロックデータから、読出位置を始点としたMビットを、読出対象のピクセルデータとして取り出す、請求項7記載の描画装置。
【請求項9】
前記キャッシュは、前記メモリ内の2つのブロックがマッピングされる2つのブロックを含む、請求項6記載の描画装置。
【請求項10】
前記キャッシュの前記ブロックは、レジスタにより構成される、請求項9記載の描画装置。
【請求項11】
前記メモリ内のブロックの前記キャッシュへのマッピングは、ダイレクトマップ方式である、請求項4記載の描画装置。
【請求項12】
前記メモリと前記キャッシュとの間のデータのコヒーレンシの維持は、ライトバック方式により行われるとともに、前記キャッシュから前記メモリへ強制的にデータを書き戻すフラッシュ手段をさらに備える、請求項4記載の描画装置。
【請求項13】
前記キャッシュ制御手段は、コヒーレンシを維持するためにライトデータを出力する際に、前記メモリのワード単位あるいはバイト単位でライトデータを出力する、請求項4記載の描画装置。
【請求項14】
前記キャッシュ制御手段は、メモリ処理に係わるアドレスが、その時のキャッシングの範囲を外れたときの、このアドレスからのデータのリードは、前記メモリのワード単位あるいはバイト単位で行う、請求項4記載の描画装置。
【請求項15】
今回の描画/読出し位置を示すアドレス情報に基づいて、次回の描画/読出し位置を示すアドレス情報を算出する描画/読出位置算出手段をさらに備える請求項4記載の描画装置。
【請求項16】
前記描画/読出位置算出手段は、今回の描画/読出し位置に、ピクセルデータのビット数Mを加算して、次回の描画/読出し位置を示すアドレス情報を算出する、請求項15記載の描画装置。
【請求項17】
前記描画装置は、前記メモリが接続されるバスに接続され、
前記描画装置はバスマスタになりうる、請求項4記載の描画装置。
【請求項18】
アドレス空間へのアクセスを提供するアドレスバスと、
前記アドレスバスにより前記アドレス空間のアドレスを指定してデータの転送を行うデータバスと、
前記アドレスバス及び前記データバスに接続され、前記アドレスバス及び前記データバスを介してデータの読み出しと書き込み処理を行う中央演算処理装置と、
前記アドレスバス及び前記データバスに接続され、前記アドレス空間の一部に格納されているデータのキャッシングを行うキャッシュシステムと、を備え、
前記キャッシュシステムは、前記中央演算処理装置によってデータの書き込みがなされる制御レジスタを備えると共に、前記アドレスバス及び前記データバスのバスマスタとして機能し、
前記中央演算処理装置は、前記アドレスバスと前記データバスを通じて前記キャッシュシステムを介さずに読み出しと書き込み処理を行うと共に、前記制御レジスタへの書き込みを行うことにより、前記キャッシュシステムに対して、バスマスタとして、前記アドレスバス及び前記データバスによる読み出しと書き込み処理の実行指示を行うことが可能であり、
前記中央演算処理装置は、前記キャッシュシステムに対して、前記アドレスバス及び前記データバスによる読み出し又は書き込みの指示を行った後、別の処理を行うことが可能であるデータ処理装置。
【請求項19】
更に前記アドレスバス及び前記データバスよりも高速なデータ転送速度を持つ通信路を備え、前記中央演算処理装置による前記制御レジスタへの書き込みは、この通信路により行われる、請求項18記載のデータ処理装置。
【請求項20】
前記アドレスバス及び前記データバスは、前記アドレス空間に物理記憶領域を提供する外部メモリとの通信に用いられ、前記通信路は、前記中央演算処理装置を含む内部バスデバイス間の通信に用いられる、請求項19記載のデータ処理装置。
【請求項21】
ピクセルを描画領域にプロットする描画装置であって、
前記描画領域を含むアドレス空間へのアクセスを提供するアドレスバスと、前記アドレスバスにより前記アドレス空間のアドレスを指定してデータの転送を行うデータバスと、が接続されるバスインターフェイスと、
前記バスインターフェイスに接続したデータ格納装置であって、前記バスインターフェイスが、前記アドレス空間における画像データのアドレスを前記アドレスバスへ出力することにより、前記画像データを前記データバスから前記データ格納装置へ転送し、また、前記アドレス空間における前記画像データのアドレスを前記アドレスバスへ出力することにより、前記データ格納装置に格納されているデータを前記データバスへ出力する、データ格納装置と、
前記描画領域にプロットすべきピクセルのデータを格納するプロットカラーレジスタと、
ピクセルのビット数としてカラーモードを格納するカラーモードレジスタと、
前記画像データを指示するアドレスをバイトアドレスとして格納し、このバイトアドレスで指示されたバイト内のビット位置をビットアドレスとして格納し、前記バイトアドレスと前記ビットアドレスは、ビット単位でプロット位置を指示するものであり、ピクセルをプロットした後、前記カラーモードレジスタに格納されたカラーモードに対応するビット数だけこのプロット位置をインクリメントするプロットロケーションカウンタと、
前記プロットカラーレジスタ、前記カラーモードレジスタ、前記プロットロケーションカウンタ及び前記データ格納装置に接続し、前記データ格納装置に転送された前記画像データに対して、前記プロットカラーレジスタに格納された前記ピクセルデータのビット位置を、前記プロットロケーションカウンタで示されたプロット位置にビット単位で揃え、前記ピクセルデータを、前記カラーモードレジスタに格納されたカラーモードに対応するビット数に基づいて、前記データ格納装置に転送された前記画像データのプロット位置に書き込むピクセルパッカと、を備えた描画装置。
【請求項22】
前記プロットロケーションカウンタ及び前記データ格納装置に接続し、前記データ格納装置に転送された前記画像データから、前記プロットロケーションカウンタで示されたビット位置に存在するピクセルデータを入力し、このピクセルデータをバイト内の先頭位置としたデータを出力するピクセルアンパッカを更に備えた請求項21記載の描画装置。
【請求項23】
前記ピクセルアンパッカは、更に、前記カラーモードレジスタに接続し、前記カラーモードレジスタに格納されたカラーモードに対応するビット数に基づいて、前記ピクセルデータをゼロ拡張して出力する、請求項22記載の描画装置。
【請求項24】
ピクセルデータビットである下位ビットと不使用の残りの上位ビットから夫々構成される複数のピクセルデータをまとめるピクセルパッカであって、
所定のビット長のデータを記憶する記憶手段と、
前記所定のビット長を持つ出力ポートを備え、逐次ピクセルデータを入力し、第1のビット位置に合わせてシフトし、前記出力ポートから出力するシフタと、
前記記憶手段と前記シフタに接続され、シフトされた前記ピクセルデータを、前記シフタから前記記憶手段へ転送するデータ転送手段とからなり、
前記第1のビット位置は、データ転送の後、前記ピクセルデータの下位ビットの長さだけシフトすることによって更新され、前記ピクセルデータの転送は、前回の前記第1のビット位置に対応し、前回のピクセルデータが格納されている前記記憶手段の記憶領域を変化させないように行われることを特徴とするピクセルパッカ。
【請求項25】
前記第1のビット位置のシフトは、前記所定のビット長の巡回シフトである請求項24記載のピクセルパッカ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公表番号】特表2008−501126(P2008−501126A)
【公表日】平成20年1月17日(2008.1.17)
【国際特許分類】
【出願番号】特願2006−543301(P2006−543301)
【出願日】平成17年5月20日(2005.5.20)
【国際出願番号】PCT/JP2005/009702
【国際公開番号】WO2005/116982
【国際公開日】平成17年12月8日(2005.12.8)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】