(57)【特許請求の範囲】
【請求項１】
原画像をワープまたは回転させて表示する装置であって、
前記原画像の複数の画素行をそれぞれ格納する複数の第１のメモリと、
これら第１のメモリに格納された前記画素行を読み出し、これら画素行を組み合わせて画素ブロックとするブロック格納制御装置であって、各画素ブロックが前記原画像の隣接する水平画素および垂直画素を含み、第２のメモリ中の連続するメモリ位置に格納されるブロック格納制御装置と、
表示装置上の出力画素位置に対応する出力座標を生成する出力座標生成器と、
前記原画像の画素位置に対応する入力座標に前記出力座標をマッピングするエンジンと、
前記入力座標を、この入力座標を有する画素を含む画素ブロックが格納された第２のメモリの対応するバンク、行、および列のアドレスに変換することで、この画素ブロックが格納された前記第２のメモリのメモリ位置を識別するブロック要求変換器と、
前記識別された画素ブロックを要求するブロック要求生成器と、
前記要求された画素ブロックを前記第２のメモリから取り出すメモリコントローラと、
最新の取り出された画素ブロックのアドレスを記録するブロック要求キャッシュと、
前記入力座標を有する画素の値を出力して対応する出力画素位置に表示する表示コントローラと、を備え、
前記メモリコントローラは、前記ブロック要求キャッシュが記録したアドレスを参照して、前記ブロック要求生成器により要求された画素ブロックが前記第２のメモリからの要求または取り出しがあったばかりの画素ブロックである場合には、この画素ブロックを取り出さない
ことを特徴とする装置。
【請求項２】
前記第２のメモリはＳＤＲＡＭを備え、各画素ブロックが前記ＳＤＲＡＭの連続する列にわたって格納され、前記ブロック要求変換器が、前記入力座標を変換することで、この入力座標を有する画素を含む前記画素ブロックが格納された前記ＳＤＲＡＭの対応するバンク、行、および列のアドレスを識別する
ことを特徴とする請求項１記載の装置。
【請求項３】
前記原画像の隣接する画素ブロックがグループ化されてより大型の画素ブロックとなり、これらのグループ化されたより大型の各画素ブロックが前記ＳＤＲＡＭの同じ行に格納される
ことを特徴とする請求項２記載の装置。
【請求項４】
前記出力座標生成器によって生成された出力座標を受信して、オフセットされていない前記出力座標から垂直方向にオフセットされた複数のオフセット出力座標を生成するとともに、オフセットされていない前記出力座標および前記各オフセット出力座標を前記エンジンに提供する垂直オフセット生成エンジンをさらに備えた
ことを特徴とする請求項１ないし３いずれか一記載の装置。
【請求項５】
データ値のフィールドをそれぞれ有する複数の入力座標エントリを格納するシフトレジスタ構成と、
このシフトレジスタ構成の入力座標と任意に取り出した画素ブロックの画素の入力座標とを比較して、一致がある場合は、前記一致した画素のデータ値のフィールドを埋めるポピュレータと、をさらに備えた
ことを特徴とする請求項１ないし４いずれか一記載の装置。
【請求項６】
識別された第２のメモリのメモリ位置を前記ブロック要求変換器から受信し、前記識別された第２のメモリのメモリ位置から内部画素ブロックＩＤを生成するＩＤ生成器と、
このＩＤ生成器から前記画素ブロックＩＤを受信して遅延させるＩＤ遅延ラインと、
このＩＤ遅延ラインから前記画素ブロックＩＤを受信して、一致する画素ブロックＩＤを有する画素ブロックをキャッシュから取り出すルックアップエンジンと、をさらに備えた
ことを特徴とする請求項１ないし５いずれか一記載の装置。
【請求項７】
使用されていない画素ブロックＩＤのリストを格納するＩＤリストと、
次に使用可能なブロックＩＤ値を指し示す読み出しポインタと、
再利用されたブロックＩＤを指し示す書き込みポインタと、をさらに備えた
ことを特徴とする請求項６記載の装置。
【請求項８】
前記識別された第２のメモリのメモリ位置を前記ブロック要求変換器から受信し、新しく識別されたブロックの第２のメモリのメモリ位置と比較して、一致がある場合は、前記一致するメモリ位置を有する画素ブロックのブロックＩＤを再利用し、一致がない場合は、前記識別された画素ブロックに新しいブロックＩＤを使用するブロックＩＤ比較器をさらに備えた
ことを特徴とする請求項６または７記載の装置。
【請求項９】
前記メモリコントローラが、取り出された画素ブロックをキャッシュに格納する
ことを特徴とする請求項１ないし８いずれか一記載の装置。
【請求項１０】
前記メモリコントローラが、前記画素ブロックの隣接する画素を前記キャッシュの異なる領域に格納する
ことを特徴とする請求項９記載の装置。
【請求項１１】
前記キャッシュは連想メモリを備える
ことを特徴とする請求項９または１０記載の装置。
【請求項１２】
前記出力座標生成器が、ある出力画素周波数で前記出力座標を生成する同期パルス生成器を備えた
ことを特徴とする請求項１ないし１１いずれか一記載の装置。
【請求項１３】
前記エンジンが前記出力座標を非整数座標にマッピングした場合に双線形補間を行う補間器をさらに備え、
前記ブロック要求変換器が、前記非整数座標に寄与する前記原画像の画素の入力座標を識別するとともに、前記寄与画素を含む前記画素ブロックが格納された前記第２のメモリのメモリ位置を識別し、
前記ブロック要求生成器が、前記識別された画素ブロックを要求し、
前記メモリコントローラが、前記要求された画素ブロックを前記第２のメモリから取り出し、
前記補間器が、前記非整数座標に対応する出力画素の補間出力値を決定し、
前記表示コントローラが、前記補間値を出力して対応する出力画素位置に表示する
ことを特徴とする請求項１ないし１２いずれか一記載の装置。
【請求項１４】
原画像をワープまたは回転させて表示する方法であって、
前記原画像をその複数の画素行に分割する工程と、
前記画素行を組み合わせて画素ブロックとする工程であって、各画素ブロックが前記原画像の隣接する水平画素および垂直画素を含み、さらに各画素ブロックを第２のメモリ中の連続するメモリ位置に格納する工程と、
前記原画像の座標に対して前記連続する第２のメモリ中の固定された位置を割り当てる工程と、
表示装置上の出力画素位置に対応する出力座標を生成する工程と、
前記原画像の画素位置に対応する入力座標に前記出力座標をマッピングする工程と、
前記入力座標を有する画素を含む画素ブロックが格納された第２のメモリでのメモリ位置を識別する工程と、
前記識別された画素ブロックを要求する工程と、
前記要求された画素ブロックを前記第２のメモリから取り出す工程と、
前記入力座標を有する前記画素の値を出力して対応する出力画素位置に表示する工程と、
ブロック要求キャッシュ中の最新の要求された画素ブロックの前記メモリ位置を記録する工程と、
を備え、
前記要求された画素ブロックを前記第２のメモリから取り出す工程では、前記ブロック要求キャッシュが記録した前記メモリ位置を参照して、前記第２のメモリからの要求または取り出しがあったばかりの画素ブロックが要求された場合には、この画素ブロックを取り出さない
ことを特徴とする方法。
【請求項１５】
原画像をワープまたは回転させて表示するコンピュータプログラムであって、
前記原画像をその複数の画素行に分割するステップと、
前記画素行を組み合わせて画素ブロックとするステップであって、各画素ブロックが前記原画像の隣接する水平画素および垂直画素を含み、さらに各画素ブロックを第２のメモリ中の連続するメモリ位置に格納するステップと、
前記原画像の座標に対して前記連続する第２のメモリ中の固定された位置を割り当てるステップと、
表示装置上の出力画素位置に対応する出力座標を生成するステップと、
前記原画像の画素位置に対応する入力座標に前記出力座標をマッピングするステップと、
前記入力座標を有する画素を含む画素ブロックが格納された第２のメモリでのメモリ位置を識別するステップと、
前記識別された画素ブロックを要求するステップと、
前記要求された画素ブロックを前記第２のメモリから取り出すステップと、
前記入力座標を有する前記画素の値を出力して対応する出力画素位置に表示するステップと、
ブロック要求キャッシュ中の最新の要求された画素ブロックの前記メモリ位置を記録するステップと、
を備え、
前記要求された画素ブロックを前記第２のメモリから取り出すステップでは、前記ブロック要求キャッシュが記録した前記メモリ位置を参照して、前記第２のメモリからの要求または取り出しがあったばかりの画素ブロックが要求された場合には、この画素ブロックを取り出さない
ことを特徴とするコンピュータプログラム。
【請求項１６】
請求項１５記載のコンピュータプログラムが、コンピュータ読み取り可能に記録された
コンピュータプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原画像をワープまたは回転させて表示する装置、方法、そのコンピュータプログラムおよびそれを記録した記録媒体に関する。
【背景技術】
【０００２】
コンピュータまたは専用の映像処理ハードウェアで処理された映像は、個々の静止画の連続と考えることができる。各画像は、通常は矩形のアレイまたはマトリクスに配列された多数の画素で構成されている。また、画像中の如何なる画素であっても、それが位置する画像中の水平ライン（または行）および垂直ライン（または列）を識別することによって、その座標を決定することができる。
【０００３】
ほとんどの映像スケーラアーキテクチャでは、画像を構成する個々の画素の到着順に、入力映像信号をメモリに格納する。したがって、映像を構成する最初の画像の最上行については、当該行の左端の画素から右端の画素へとその全体が格納される。その後、これらの画素は、ひとつのユニットとしてメモリに格納される。この処理は、２番目の行以降も、画像を構成するすべての画素が格納されるまで繰り返される。そして、映像を構成するすべての画像に対してこの処理が繰り返される。
【０００４】
このように映像データを格納するには、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ：Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）チップが特に好適である。ＳＤＲＡＭでは、データがバンク、行、および列に格納される。ＳＤＲＡＭチップの構成を視覚化する場合、ＳＤＲＡＭメモリの各バンクを、行方向および列方向に多数の引き出しを有する大型のファイルキャビネットと見なす方法がある。各引き出しは、一定量の情報を格納し、それが位置する特定のファイルキャビネットの特定行および特定列を指定することによって識別することができる。
【０００５】
ＳＤＲＡＭ内のアドレスとして使用される行および列と画像を構成する行および列との混同を避けるため、本明細書では、後者を一般的に「水平ライン」および「垂直ライン」とそれぞれ称するものとする。
【０００６】
一実施態様において、各画素には２４ビットの情報が含まれる。これは、各画素が２２４＝１６，７７７，２１６の色値のうちの１つを表すことが可能であることを意味する。４８ビット幅のデータバスであれば４８ビットを格納可能であるが、これは、各画素が２４ビット長であることから２画素分の情報に相当する。この２画素分の情報は、「データワード」と称することが多い。ダブルデータレート同期ダイナミックランダムアクセスメモリ（ＤＤＲ２  ＳＤＲＡＭ：Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）チップでは、クロックサイクルごとに２つのデータワードを転送する。これは、各クロックサイクルに４画素分の情報を格納可能であることを意味する。したがって、８つのデータワードに相当する１６画素分の格納には、４回のクロックサイクルを要する。
【０００７】
図１は、８０００  ２，Ｆｅｄｅｒａｌ  Ｗａｙ，Ｐ．Ｏ．Ｂｏｘ６，Ｂｏｉｓｅ，ＩＤ  ８３７０７−００６，ＵＳＡに本社を置くＭｉｃｒｏｎ  Ｔｅｃｈｎｏｌｏｇｙ社またはそのウェブサイトｈｔｔｐ：／／ｄｏｗｎｌｏａｄ．ｍｉｃｒｏｎ．ｃｏｍ／ｐｄｆ／ｄａｔａｓｈｅｅｔｓ／ｄｒａｍ／ｄｄｒ２／２５６ＭｂＤＤＲ２．ｐｄｆより入手可能なＭｉｃｒｏｎ  ２５６Ｍｂ  ＤＤＲ２のデータシートから取得したタイミングチャートである。
【０００８】
図１は、標準的なＤＤＲ２  ＳＤＲＡＭにおける順次列アクセスを示す。順次列アクセスは、ＳＤＲＡＭメモリの特定行の任意の列にアクセスすることを意味する。時刻Ｔ０では、ＲＥＡＤコマンドの発行により、ＳＤＲＡＭメモリの特定バンクにおける特定行から列ｎが読み出される。その後の時刻Ｔ２では、別のＲＥＡＤコマンドの発行により、同じバンクおよび行の異なる列ｂが読み出される。時刻Ｔ３では、列ｎに含まれるすべてのデータが返される。図１に見られるように、列ｎからデータが返されるまでには、Ｔ０とＴ３との間にクロックサイクル３回分の遅れが生じている。ＳＤＲＡＭに対するこれら各ＲＥＡＤコマンドは、４つのデータワードに相当する。すなわち、２回のクロックサイクルで、ＳＤＲＡＭの関連する列から「ＤＱ」が取り出される。したがって、クロック２回のデータ転送では、８画素分の画像データに相当する４つのＤＱが取り出される。
【０００９】
Ｔ２では、最初の４つのＤＱが実際に取り出される前に２番目のＲＥＡＤコマンドが発行されている。これは「パイプライン方式」と称し、ＲＥＡＤコマンドが連続的に発行されていなくても１つの行からアクセスされているデータストリームに空白が生じないようにするためのものである。
【００１０】
時刻Ｔ３以降は、クロックサイクルごとに２つのデータワードが取り出し可能である。これは、一度オープンとなった行の異なる列からは、１回のクロックサイクルで２つのデータワードが読み出されることを意味する。
【００１１】
図２は、同じＭｉｃｒｏｎ  ２５６  Ｍｉｃｒｏｎ  ２５６Ｍｂ  ＤＤＲ２のデータシートから取得したタイミングチャートである。この図２は、標準的なＤＤＲ２  ＳＤＲＡＭにおける順次行アクセスを示す。図２は、同じ行の異なる列に順次アクセスする代わりに異なる行に順次アクセスする点で図１とは異なる。順次行アクセスは、たとえば９０°回転に必要である。
【００１２】
最初にアクセスする行（ここでは行Ａ）は、時刻Ｔ１のＡＣＴ（ＡＣＴｉｖａｔｅ）コマンドの発行によりアクティブとなる。そして、時刻Ｔ４のＲＥＡＤコマンドの発行により、行Ａから所要列（列ｎ）が読み出される。異なる行からデータを読み出したい場合は、対応する列からの読み出しであろうがなかろうが、まずは行Ａを「プリチャージ」すなわちクローズしなければならない。時刻Ｔ６にＰＲＥコマンドが発行され、３回のクロックサイクル（ｔＲＰ）が経過すると、時刻Ｔ９では行Ａがクローズとなって別のＡＣＴコマンドが発行可能となる。
【００１３】
１つの行の連続する列を順次読み出すのとは対照的に、異なる行からの順次読み出しには８回のクロックサイクルを要する。これは、次の行の読み出しが可能になる前に、各行のオープンおよびクローズを行わなければならないためである。要約すれば、連続する行の読み出しは、同じ行の連続する列の読み出しの８倍遅くなる。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
一部のデータ処理構成、特に画像処理構成においては、データ処理に際して順次行アクセスを頻繁に行う必要があり、データ処理時間が長くなるとともにシステムリソースが集中的に使用されることになる。そして、入力画像を非矩形にマッピングする画像のワープ処理には、ランダム行アクセスが必要である。これらおよび他の映像ベースのデータアクセスに関する特徴により、映像データの処理および使用が課題となっている。
【課題を解決するための手段】
【００１５】
本発明は、多数の実施形態および適用例として例示するが、その一部を以下に概説する。
【００１６】
本発明の種々の実施形態は、上述の問題のほか、特に映像データまたは画像データの処理に適するその他の問題にも対応する。本発明は、種々の実施形態において、順次行アクセスが必要な場合のデータ処理オーバーロードに対応する。
【００１７】
本発明の第１の態様によれば、原画像をワープまたは回転させて表示する装置であって、原画像の複数の画素行をそれぞれ格納する複数の第１のメモリと、これら第１のメモリに格納された画素行を読み出し、これら画素行を組み合わせて画素ブロックとするブロック格納制御装置であって、各画素ブロックが原画像の隣接する水平画素および垂直画素を含み、第２のメモリ中の連続するメモリ位置に格納されるブロック格納制御装置と、表示装置上の出力画素位置に対応する出力座標を生成する出力座標生成器と、原画像の画素位置に対応する入力座標に出力座標をマッピングするエンジンと、入力座標を、この入力座標を有する画素を含む画素ブロックが格納された第２のメモリの対応するバンク、行、および列のアドレスに変換することで、この画素ブロックが格納された第２のメモリのメモリ位置を識別するブロック要求変換器と、上記識別された画素ブロックを要求するブロック要求生成器と、上記要求された画素ブロックを第２のメモリから取り出すメモリコントローラと、最新の取り出された画素ブロックのアドレスを記録するブロック要求キャッシュと、入力座標を有する画素の値を出力して対応する出力画素位置に表示する表示コントローラと、を備え、メモリコントローラが、ブロック要求キャッシュが記録したアドレスを参照して、ブロック要求生成器により要求された画素ブロックが前記第２のメモリからの要求または取り出しがあったばかりの画素ブロックである場合には、この画素ブロックを取り出さないことを特徴とする装置が提供される。
【００１８】
この装置では、アレイをブロックに分割することによって、処理能力をより効率的に使用可能である。このことは、データのマッピングまたは変形が必要な状況において特に都合が良い。本明細書における「ブロック」という用語は、すべての画素が同じ水平ラインまたは垂直ラインに位置するのとは異なり、入力画像の隣接する水平ラインおよび垂直ラインに位置する隣接画素の任意のグループまたはサブユニットを意味する。たとえば、ブロックは、好ましくは矩形アレイまたは単純なＬ字形状であってもよいが、その他の形状のブロックについてもこの用語の範囲内である。そして、不必要なメモリアクセスは最小限に抑えられる。
【００１９】
上記第２のメモリがＳＤＲＡＭを備え、各画素ブロックが当該ＳＤＲＡＭの連続する列にわたって格納され、上記ブロック要求変換器が、入力座標を変換することで、この入力座標を有する画素を含む上記所要の画素ブロックが格納されたＳＤＲＡＭの対応するバンク、行、および列のアドレスを識別してもよい。ＳＤＲＡＭへのアクセスでは通常、入力画像のマッピングに順次行アクセスが必要となってしまう。入力画像を構成する画素がブロックに格納されていれば、ＳＤＲＡＭへのアクセス量が少なくなる可能性がある。
【００２０】
上記原画像の隣接する画素ブロックがグループ化されてより大型の画素ブロック（依然、単一行内に存在）となり、これらのグループ化されたより大型の各画素ブロックがＳＤＲＡＭの同じ行に格納されてもよい。このようにバンクをインターリーブすると、より大型の画素ブロックに含まれる画素へのアクセスが高速化可能となる。
【００２１】
上記装置は、上記出力座標生成器によって生成された出力座標を受信して、オフセットされていない当該出力座標からそれぞれ垂直方向にオフセットされた複数のオフセット出力座標を生成するとともに、オフセットされていない出力座標および各オフセット出力座標を上記エンジンに提供する垂直オフセット生成エンジンをさらに備えていてもよい。このようにして、入力座標の複数のラインを生成可能である。
【００２２】
上記装置は、データ値のフィールドをそれぞれ有する複数の入力座標エントリを格納するシフトレジスタ構成と、シフトレジスタ構成の入力座標と任意に取り出した画素ブロックの画素の入力座標とを比較して、一致がある場合は、当該一致した画素のデータ値のフィールドを埋めるポピュレータと、をさらに備えていてもよい。このシフトレジスタ構成は、メモリから所要の画素値を取り出す際の遅延を補完するために使用可能である。
【００２３】
上記装置は、識別された第２のメモリのメモリ位置を上記ブロック要求変換器から受信し、当該識別された第２のメモリのメモリ位置から内部画素ブロックＩＤを生成するＩＤ生成器と、ＩＤ生成器から上記画素ブロックＩＤを受信して遅延させるＩＤ遅延ラインと、このＩＤ遅延ラインから上記画素ブロックＩＤを受信して、一致する画素ブロックＩＤを有する画素ブロックをキャッシュから取り出すルックアップエンジンと、をさらに備えていてもよい。このＩＤ生成器は、特定の画素ブロックを識別する際の有用なエンジンを提供する。また、ＩＤ遅延は、第２のメモリから画素情報を取り出す際の遅延を補完するために使用可能である。
【００２４】
上記装置は、使用されていない画素ブロックＩＤのリストを格納するＩＤリストと、次に使用可能なブロックＩＤ値を指し示す読み出しポインタと、再利用されたブロックＩＤを指し示す書き込みポインタと、をさらに備えていてもよい。このＩＤリストは、正しい画素ブロックに正しいＩＤが割り当てられるようにするために使用可能である。
【００２５】
上記装置は、識別された第２のメモリのメモリ位置を上記ブロック要求変換器から受信し、新しく識別されたブロックの第２のメモリのメモリ位置と比較して、一致がある場合は、当該一致するメモリ位置を有する画素ブロックのブロックＩＤを再利用し、一致がない場合は、上記識別された画素ブロックに新しいブロックＩＤを使用するブロックＩＤ比較器をさらに備えていてもよい。このブロックＩＤ比較器は、装置の動作を簡素化するブロックＩＤの使用を管理するためのものである。
【００２６】
上記メモリコントローラが、取り出された画素ブロックをキャッシュに格納してもよい。このように、不必要なメモリアクセスは最小限に抑えられる。
【００２７】
上記メモリコントローラが、上記画素ブロックの隣接する画素を上記キャッシュの異なる領域に格納してもよい。これにより、双線形補間が容易になる。
【００２８】
上記キャッシュが連想メモリを備えていてもよい。これにより、画素の読み返しに使用するメモリを少なくすることができる。
【００２９】
上記出力座標生成器が、ある出力画素周波数で上記出力座標を生成する同期パルス生成器を備えていてもよい。
【００３０】
上記装置は、上記エンジンが出力座標を非整数座標にマッピングした場合に双線形補間を行う補間器をさらに備え、上記ブロック要求変換器が、非整数座標に寄与する原画像の画素の入力座標を識別するとともに、当該寄与画素を含む画素ブロックが格納された第２のメモリのメモリ位置を識別し、上記ブロック要求生成器が、上記識別された画素ブロックを要求し、上記メモリコントローラが、上記要求された画素ブロックを第２のメモリから取り出し、上記補間器が、非整数座標に対応する出力画素の補間出力値を決定し、上記表示コントローラが、当該補間値を出力して対応する出力画素位置に表示してもよい。これによって、より正確な出力を提供する双線形補間が容易になる。
【００３１】
本発明の第２の態様によれば、原画像をワープまたは回転させて表示する方法であって、原画像をその複数の画素行に分割する工程と、画素行を組み合わせて画素ブロックとする工程であって、各画素ブロックが原画像の隣接する水平画素および垂直画素を含み、さらに各画素ブロックを第２のメモリ中の連続するメモリ位置に格納する工程と、原画像の座標に対して連続する第２のメモリ中の固定された位置を割り当てる工程と、表示装置上の出力画素位置に対応する出力座標を生成する工程と、原画像の画素位置に対応する入力座標に出力座標をマッピングする工程と、入力座標を有する画素を含む画素ブロックが格納された第２のメモリでのメモリ位置を識別する工程と、上記識別された画素ブロックを要求する工程と、上記要求された画素ブロックを第２のメモリから取り出す工程と、入力座標を有する画素の値を出力して対応する出力画素位置に表示する工程と、ブロック要求キャッシュ中の最新の要求された画素ブロックのメモリ位置を記録する工程と、を含み、要求された画素ブロックを第２のメモリから取り出す工程では、ブロック要求キャッシュが記録したメモリ位置を参照して、第２のメモリからの要求または取り出しがあったばかりの画素ブロックが要求された場合には、この画素ブロックを取り出さない方法が提供される。
【００３２】
本発明のその他の態様によれば、実行により上記方法をデータ処理装置に行わせる命令を含むコンピュータプログラム、当該コンピュータプログラムを含むコンピュータ可読媒体が提供される。
【００３３】
一実施例に関連して、データ処理装置は、受信器回路、メモリコントローラ回路、およびポピュレータ回路を具備する。受信器回路は、水平ラインおよび垂直ラインに配列されたデータ要素アレイの形式でデータを受信する。メモリコントローラ回路は、（たとえばメモリの制御等によって）アレイの隣接する各水平ラインおよび各垂直ラインのデータ要素サブセットを含むアレイのサブユニットをメモリ位置に格納する。ポピュレータ回路は、当該メモリ位置からサブユニットを取り出して処理する。これらの各回路は、たとえば指示された機能を実行するようにプログラムされたコンピュータとして実装してもよい。また、この用途に対して、以下の例をさらに実装してもよい。
【００３４】
別の実施例に関連して、映像データ処理装置は、受信器回路、複数のラインバッファ回路、メモリコントローラ回路、およびポピュレータ回路を具備する。受信器回路は、水平ラインおよび垂直ラインに配列された、画像を表す画素アレイの形式でデータを受信する。ラインバッファ回路は、受信したアレイの異なる画素ラインをそれぞれ保持する。メモリコントローラ回路は、少なくとも２つのラインバッファからの画素サブセットを含むアレイのサブブロックを単一のメモリ位置に格納する。この場合、各画素サブセットには、各ラインのすべての画素が含まれるわけではない。また、各画素ブロックは、画像のサブポーションを表す。ポピュレータ回路は、当該メモリ位置からサブブロックを取り出して処理する。
【００３５】
別の実施例は、水平ラインおよび垂直ラインに配列されたデータ要素アレイの形式でデータを受信する工程と、アレイの隣接する各水平ラインおよび各垂直ラインのデータ要素サブセットを含むアレイのサブユニットをメモリ位置に格納する工程と、当該メモリ位置からサブユニットを取り出して処理する工程と、を行わせる命令を実行するプログラマブルコンピュータによる実装方法に関する。
【００３６】
本発明の別の態様例によれば、データ処理装置は、水平ラインおよび垂直ラインに配列されたデータ要素アレイの形式でデータを受信する受信器と、アレイの隣接する水平ラインおよび垂直ラインのデータ要素を含むアレイのサブユニットをメモリ位置に格納するメモリコントローラと、当該メモリ位置からサブユニットを取り出して処理するポピュレータとを具備する。
【００３７】
この装置では、１本のみの水平ラインではなくアレイの隣接する水平ラインおよび垂直ラインのデータ要素を含むサブユニットにアレイを分割することによって、処理能力をより効率的に使用可能である。このことは、データのマッピングまたは変形が必要な状況において特に適用可能である。
【００３８】
上記装置は、受信器で受信したアレイのデータ要素数を少なくするダウンスケーラを備えていてもよい。このダウンスケーラは、たとえばデータ要素の一部が実際には処理する必要がない場合に、データ処理要求全体のオーバーヘッドを低減するために使用可能である。
【００３９】
上記装置は、アレイの異なる水平ラインのデータ要素をそれぞれ保持する複数のラインバッファを備えていてもよい。
【００４０】
上記装置は、２つ以上のラインバッファからの異なる水平ラインのデータ要素を同じメモリ位置のサブユニットとしてメモリコントローラに格納させる格納コントローラを備えていてもよい。
【００４１】
上記装置は、出力座標を生成する出力座標生成器を備えていてもよい。また、この出力座標生成器は、同期パルス生成器であってもよい。
【００４２】
上記装置は、出力座標を所要データ要素の元のデータ座標に変換するマッパーを備えていてもよい。この所要データ要素は、情報を対応する出力座標に提供するメモリに格納されたデータ要素である。また、マッパーは、ルックアップテーブルを用いて変換してもよい。この変換の数学的変形を定義するのが困難または不可能な場合は、ルックアップテーブルが特に有用である。あるいは、マッパーは、数学的変形を用いて変換してもよい。
【００４３】
上記装置は、所要データ要素の元のデータ座標を受信して、当該所要のデータ要素を含むメモリに格納されたデータ要素のサブユニットのメモリ位置を決定する変換器を備えていてもよい。
【００４４】
上記装置は、新たに要求されたサブユニットのメモリ位置をキャッシュするキャッシュを備えていてもよい。
【００４５】
上記装置は、所要データ要素の元のデータ座標を対応するデータ値とともに格納するシフトレジスタを備えていてもよい。
【００４６】
上記装置は、シフトレジスタに保持された元のデータ座標と第２のメモリから取り出されたサブユニットの元のデータ座標とを一致させることにより、データ要素の当該サブユニットを用いてデータ値を書き込むポピュレータを備えていてもよい。
【００４７】
上記装置は、複数のシフトレジスタおよび補間器を備え、元のデータ座標が非整数値座標である場合は、整数値の元のデータ座標を有する隣接データ要素のデータ値を取り出すように上記ポピュレータが構成され、整数の元のデータ座標の取り出された各データ値に対する重み付けがなされた寄与から成る出力を提供するように上記補間器が構成されていてもよい。これにより、たとえば非整数値の座標がありそうな場合に、データの複雑なマッピングが提供される。
【００４８】
上記出力座標生成器は、同期パルス生成器を構成する代わりに、あるメモリ周波数で出力データ座標セットを生成するメモリ側出力データ座標生成器およびある表示周波数で出力表示座標を生成する表示装置側出力座標生成器を備えていてもよい。
【００４９】
上記装置は、メモリ側出力データ座標生成器から出力データ座標を受信して、出力データ座標の別のラインに対応する別の出力データ座標セットを生成するオフセット構成を備えていてもよい。
【００５０】
上記装置は、上記別の出力データ座標セットを受信して元のデータ座標に変換するマッパーを備えていてもよい。
【００５１】
上記装置は、元のデータ座標を受信して、当該元のデータ座標のデータ要素が位置するサブユニットまたはユニットの第２のメモリのメモリ位置を示すメモリアドレスに変換する変換器を備えていてもよい。このアドレスには、サブユニットが位置する第２のメモリのバンク、行、および列と、当該サブユニットの特定の所要データ要素を示すオフセット値とが含まれていてもよい。
【００５２】
上記装置は、アドレスを用いて内部ＩＤ値を生成するＩＤ生成器を備えていてもよい。この内部ＩＤ値には、バンク、行、および列の各アドレスの下位ビットが含まれていてもよい。これにより、多数のデータ要素に対して一意に有効な小サイズのＩＤ値が得られる。
【００５３】
上記装置は、新たに要求されたサブユニットを格納するキャッシュを備えていてもよい。
【００５４】
上記装置は、元の座標を保持する遅延器を備えていてもよい。
【００５５】
上記装置は、ＩＤ値を用いてキャッシュ内を探索し、同じＩＤ値を有するデータ要素の関連サブユニットを取り出して、ラインバッファにおける対応する元のデータ座標のデータエントリを書き込むルックアップエンジンを備えていてもよい。
【００５６】
上記装置は、複数のラインバッファを備え、メモリ側出力座標生成器によって生成された出力座標が一部のラインバッファに書き込まれ、その他のラインバッファから対応するデータ値が読み出し可能であってもよい。
【００５７】
上記装置は、映像スケーラを備えていてもよい。
【００５８】
上記装置は、メモリ位置を含むメモリを備えていてもよい。このメモリ位置には、ＳＤＲＡＭにおける位置が含まれていてもよい。ＳＤＲＡＭは、ＳＲＡＭ等の他の形式のメモリよりも若干安い可能性があるため、装置の全体コストが低減される。ＳＤＲＡＭは、ＤＤＲ２  ＳＤＲＡＭを構成していてもよい。
【００５９】
処理するデータには、映像データが含まれていてもよい。データ要素のアレイには、画像が含まれていてもよい。また、データ要素には、画像の画素が含まれていてもよい。上記装置は、映像データの処理に特に好適である。
【００６０】
本発明の別の態様によれば、水平ラインおよび垂直ラインに配列されたデータ要素アレイの形式でデータを受信する工程と、アレイの隣接する水平ラインおよび垂直ラインのデータ要素を含むアレイのサブユニットを第２のメモリのメモリ位置に格納する工程と、当該メモリ位置からサブユニットを取り出して処理する工程と、を含むデータ処理方法が提供される。
【００６１】
特に、メモリがＳＤＲＡＭメモリである場合、この方法は、ＳＤＲＡＭメモリの１つのバンクのメモリ位置にサブアレイを格納する工程と、ＳＤＲＡＭメモリの異なるバンクにアレイの隣接するサブユニットを格納する工程と、を含んでいてもよい。この方法は、ＳＤＲＡＭのバンクのインターリーブに使用可能であり、データ処理要求を低減可能である。
【００６２】
本発明の別の態様によれば、実行により上記データ処理方法をデータ処理装置に行わせる命令を含むコンピュータプログラムが提供される。コンピュータ可読媒体は、コンピュータプログラムを含んでいてもよい。
【００６３】
上記発明の概要は、本発明の例示された各実施形態またはすべての実施態様を説明するためのものではない。
【図面の簡単な説明】
【００６４】
本発明は、添付の図面に関連して種々の実施形態の詳細な説明を考慮すれば、より完全に理解可能である。
【図１】図１は、隣接列にデータ要素を含むサブアレイへのアクセスに関して種々の実施例の態様を適用可能なＤＤＲ２  ＳＤＲＡＭにおける順次列アクセスのタイミングチャートである。
【図２】図２は、隣接行にデータ要素を含むサブアレイへのアクセスに関して種々の実施例の態様を適用可能なＤＤＲ２  ＳＤＲＡＭにおける順次行アクセスのタイミングチャートである。
【図３】図３は、本発明の１または複数の実施例に係る、第１データ処理構成の概略図である。
【図４】図４は、本発明の１または複数の実施例に係る、ＳＤＲＡＭのバンクのインターリーブを視覚的に表した図である。
【図５】図５は、本発明の１または複数の実施例に係る、入力画像を示した図である。
【図６】図６は、本発明の１または複数の実施例に係る、ラインに基づいて格納された入力画像を示した図である。
【図７】図７は、本発明の１または複数の実施例に係る、ブロックに基づいて格納された入力画像を示した図である。
【図８】図８は、本発明の１または複数の実施例に係る、図５に示した入力画像に対応する時計回りに９０°回転された出力画像を示した図である。
【図９】図９は、本発明の１または複数の実施例に係る、第２データ処理構成の概略図である。
【図１０】図１０は、本発明の１または複数の実施例に係る、第３データ処理構成の概略図である。
【図１１】図１１は、本発明の１または複数の実施例に係る、第４データ処理構成の概略図である。
【図１２】図１２は、本発明の１または複数の実施例に係る、図１１に示した第４データ処理構成の下位構成の概略図である。
【図１３】図１３は、本発明の１または複数の実施例に係る、出力ストライプを視覚的に表した図である。
【図１４】図１４は、本発明の１または複数の実施例に係る、入力ストライプを視覚的に表した図である。
【図１５】図１５は、本発明の別の実施例に係る、図１１に示した第４データ処理構成のアンチエイリアシングまたはスムージングのための下位構成の概略図である。
【図１６】図１６は、別の実施例に係る、ＳＤＲＡＭにデータを格納する構成を示した図である。
【図１７】図１７は、別の実施例に係る、連想メモリ（ＣＡＭ：Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）での増強を行った構成を示した図である。
【図１８】図１８は、本発明の１または複数の実施例に係る、第５データ処理構成の概略図である。
【図１９】図１９は、別の実施例に係る、ブロックＩＤを視覚的に表した図である。
【図２０】図２０は、別の実施例に係る、ＩＤリストを視覚的に表した図である。
【図２１】図２１は、別の実施例に係る、双線形補間を視覚的に表した図である。
【図２２】図２２は、別の実施例に係る、隣接画素の異なるキャッシュ領域への格納を視覚的に表した図である。
【図２３】図２３は、本発明の１または複数の実施例に係る、第６データ処理構成の概略図である。
【発明を実施するための形態】
【００６５】
本発明は、様々な異なる種類のデータ処理デバイス、構成、および方法に適用可能と考えられる。また、映像データ等のデータ処理を含む用途において特に有用であることが分かっている。本発明は、必ずしもこのような方法には限定されず、その種々の態様は、このような背景および他の背景の種々の事例を論じることによって理解可能である。
【００６６】
種々の実施例に関連して、本明細書における「サブユニット」という用語は、（たとえば、すべてのデータ要素が同じ水平ラインまたは垂直ラインに位置する場合に関して）、隣接する水平ラインおよび垂直ラインに位置する隣接データ要素（画素等）の任意のグループを意味する。たとえば、サブユニットは、好ましくは矩形アレイまたは単純なＬ字形状であってもよいが、その他の形状のサブユニットについてもこの用語の範囲内である。また、サブユニットは、データ要素のブロックを構成していてもよい。ブロックは、サブユニットの有用な形状を提供し、すべての方向のデータ要素への近似的なランダムアクセスを可能とする。種々の実施例に関連して、このようなサブユニットへのアクセスには、隣接する水平ラインおよび垂直ラインのデータ要素への同時アクセスを伴ってもよい。これらデータ要素は、（サブユニットとしてのグループ化を行わなければ）水平ラインアクセスまたは垂直ラインアクセスを介した同時アクセスが不可能である。
【００６７】
種々の実施形態において、サブユニットは、アレイの隣接する垂直ラインおよび水平ラインのデータ要素で構成された４×４のアレイを含む。これにより、特に効率的な方法で１６個のデータ要素を処理することができる。
【００６８】
ここで図面を参照して、図３は、データ（この例では、映像データまたは画像データ）の格納およびアクセスのためのデータ処理構成３００を示している。この構成３００は、インターネット等の通信ネットワークまたは映像を記録したソースから直接、入力映像信号を受信する入力映像信号受信器３０２を有する。
【００６９】
入力映像信号には、ダウンスケーラ３０４によるダウンスケーリングが任意で行われる。ダウンスケーラ３０４は、構成３００で処理する画素の数を少なくする。ダウンスケーリングは、処理される画素の総数を少なくすることによって、構成３００の後段で必要となる処理量を制限するのに有用である。このことは、入力映像の解像度（画素数）が、それが表示されるデバイスによってサポートされるであろう解像度よりも著しく高い場合に役立つ可能性がある。この場合、入力映像信号のすべての画素を処理する必要はない。
【００７０】
構成３００においては、所定数のラインが蓄積されるまで、入力映像信号のいくつかの画素ラインがラインバッファ３０６に保持される。この例では、入力映像信号の画素ライン全体をそれぞれ格納する４つのラインバッファ３０６が存在する。４つのラインバッファ３０６がいっぱいになったら、ラインバッファ３０６から１６個の画素が読み出され、ブロック格納制御装置３０８に渡される。ブロック格納制御装置３０８は、これら４つのラインからの画素を、画素１６個の４×４のブロックとしてＳＤＲＡＭメモリの連続する列に格納する。これは、このようなブロック格納制御装置３０８を有さない従来の画像格納方法と対照的である。その後、画素ブロックは、ＳＤＲＡＭコントローラ３１０に送信されて、ＳＤＲＡＭメモリ３１２の特定のバンク、および当該バンクの特定行および複数の列のアドレスに格納される。
【００７１】
構成３００は、格納された画像データブロックにアクセスして表示するため、同期パルス生成器（ＳＰＧ：Ｓｙｎｃ  Ｐｕｌｓｅ  Ｇｅｎｅｒａｔｏｒ）３１４を具備する。ＳＰＧ３１４は、水平パルスおよび垂直パルスの形式で標準的な映像タイミング信号を生成するものであって、画面に表示する出力画像の画素の出力Ｘ座標およびＹ座標または位置（ＯＸ、ＯＹ）を生成する際に使用する。すなわち、ＳＰＧ３１４は、表示画面上の左端最上部の画素（ＯＸ、ＯＹ）＝（０、０）に対応するパルスを生成した後、そのすぐ右側の画素（ＯＸ、ＯＹ）＝（１、０）に対応するパルスを生成し、右端最下部の画素まで同様に画面上を走査する。表示画面上の画素位置を識別するための座標（ＯＸ、ＯＹ）は、本明細書では「出力」座標または位置と称する。これは、以下に説明する入力画像すなわち原画像の「元の」座標または位置（ＷＸ、ＷＹ）と対照的である。
【００７２】
出力座標（すなわち表示座標（ＯＸ、ＯＹ））は、マッパーすなわちマッピングエンジン３１６に供給される。マッパー３１６は、出力映像信号中のどの画素が入力映像中のどの画素に対応するかを決定するためのものである。すなわち、入力画像からどの画素を取り出して表示装置上に出力画像を表示する必要があるのかを決定するためのものである。これを行うため、マッパー３１６は、数学的変形を用いて座標（ＷＸ、ＷＹ）に出力座標（ＯＸ、ＯＹ）をマッピングするようにしてもよい。あるいは、マッパー３１６は、ルックアップテーブルを用いて座標（ＷＸ、ＷＹ）を生成してもよい。後者の方法では、たとえば数学的変形による定義が困難または不可能な場合に、出力画素（ＯＸ、ＯＹ）と元の（ＷＸ、ＷＹ）画素間の対応付けまたはマッピングをこのテーブルにより指し示してもよい。その一例としては、元の画像の「ジャンブル」がマッピングに含まれる場合が挙げられる。
【００７３】
従来の映像スケーラでは、入力画像の水平画素ラインを単位として画素が格納されていることによりそれら画素へのすべてのアクセスが制限されているため、複雑なマッピングは効率的でない。直ちに利用できる「マッピング」は、水平方向または垂直方向の「フリップ」のみである。水平方向のフリップ（すなわち垂直軸周りの回転）は、出力画像の第１水平ラインのすべての画素が元の画像の第１水平ラインに含まれ、順序が逆になるだけであるため、従来のスケーラの範疇である。同様に、垂直方向のフリップについても、出力画像の第１水平ラインのすべての画素が入力画像の最下水平画素ラインの対応位置に存在するため、従来のスケーラの範疇である。当然のことながら、従来のスケーラは、数学的変形またはルックアップテーブルの使用が制限され、入力座標（ＷＸ、ＷＹ）と同じ座標（ＯＸ、ＯＹ）を出力するか、または、出力座標（ＯＸ、ＯＹ）に単純なスケーリングファクタを適用して元の座標（ＷＸ、ＷＹ）を決定するだけの「通常」の入力／出力マッピングに好適である。
【００７４】
前述の通り、マッパー３１６により決定された元の座標（ＷＸ、ＷＹ）は、入力映像信号の関連する画素座標を指定し、これにより、ＳＤＲＡＭメモリ３１２から関連する画素が取り出される。元の座標（ＷＸ、ＷＹ）はブロック要求変換器３１８に渡され、そこで元の座標（ＷＸ、ＷＹ）は、当該画素を含むブロックが格納されたＳＤＲＡＭメモリ３１２の対応するバンク、行、および列のアドレスに変換される。すなわち、ブロック要求変換器３１８は、元の画素座標（ＷＸ、ＷＹ）を、ＳＤＲＡＭメモリ３１２の所望の画素を含む複数の画素が格納された単一のブロックのアドレスに変換する。
【００７５】
画素の順次アクセスではしばしば、結果的に、元の画像の隣接する水平ラインおよび垂直ラインの画素をＳＤＲＡＭメモリ３１２から取得する必要があるため、ブロック要求キャッシュ３２０を採用して新たに要求されたブロックを記憶するようにする。このキャッシュ３２０は、ブロック自体の内容を格納するのではなく、アクセスがあったという事実のみを格納する。要求ブロックが取り出されたばかりの場合、ブロック要求キャッシュ３２０を用いれば、ＳＤＲＡＭメモリ３１２から当該特定のブロックを取り出すようメモリコントローラ３１０に別の指令を発行する必要がなくなる。これは、当該ブロックが既にオープン状態となっているか、またはＳＤＲＡＭコントローラ３１０によるフェッチが実行中となるためである。
【００７６】
ＳＤＲＡＭメモリ３１２から特定のブロックが取り出されると、当該ブロックの画素情報が出力画像の空の画素にポピュレートされる。これを行うため、ポピュレータすなわちマッチ／フィルエンジン３２２は、シフトレジスタ３２４と通信を行って、出力画像の画素にポピュレートする。シフトレジスタ３２４は、マッパー３１６から出力されてＳＤＲＡＭメモリ３１２から取り出される元の座標（ＷＸ、ＷＹ）を格納するために採用されている。このシフトレジスタ３２４は、その長さを任意とすることで、入力映像からの所要の元の画素に関連する元の座標（ＷＸ、ＷＹ）の、マッパー３１６による初期計算と、ＳＤＲＡＭメモリ３１２からの当該画素の実際の受信との間の遅延を可能とする。この遅延は、関連する元の画素が要求された後のセミランダムな時点となる。特定の画素またはブロックの要求とＳＤＲＡＭメモリ３１２からの当該ブロックの実際の取り出しとの間の遅延が長い場合は、より長いシフトレジスタを用いてもよい。
【００７７】
シフトレジスタ３２４は、マッパー３１６によって新しい座標（ＷＸ、ＷＹ）が生成されるとシフトする。当該画素は値が未知であるために最初は空であるが、シフトレジスタ３２４には、その画素の画素値またはデータ値（Ｄ）のフィールドが含まれる。ブロック要求が達成されてＳＤＲＡＭメモリ３１２から画素ブロックが取り出されると、ブロックとシフトレジスタ３２４の全エントリとを比較することにより、当該ブロックのいずれかの画素情報をシフトレジスタ３２４のいずれかの空エントリに書き込みできるか否かの確認が行なわれる。その一例としては、取り出されたブロックの画素の座標（ＷＸ、ＷＹ）がシフトレジスタ３２４に既存の別の座標（ＷＸ、ＷＹ）と一致する場合が挙げられる。各ブロックにはいくつかの画素（この例では１６個の画素）が取り出されているため、既に生成済みであれば、取り出された単一のブロックでシフトレジスタの複数の位置が満たされてもよい。
【００７８】
一致がある場合、すなわちシフトレジスタ３２４の座標（ＷＸ、ＷＹ）がＳＤＲＡＭメモリ３１２から取り出されたブロックの同じ画素（ＷＸ、ＷＹ）に対応する場合は、対応する画素データＤがシフトレジスタ３２４の対応するデータ位置（ＷＸ、ＷＹ）に格納される。
【００７９】
シフトレジスタ３２４が最初から最後までシフトし終えるまでに、その各座標（ＷＸ、ＷＹ）には、ポピュレータ３２２によってデータ値Ｄが格納されているべきである。このデータ値Ｄは、シフトレジスタ３２４の長さだけ遅延された、所与の出力画素座標（ＯＸ、ＯＹ）に対する所要の出力画素値である。この遅延は、ＳＰＧ３１４で生成された出力座標（ＯＸ、ＯＹ）を進めることによって実現可能である。
【００８０】
シフトレジスタ３２４が完全にポピュレートされると、たとえばＴＶ、ＰＣモニタ、またはプロジェクタ等の表示デバイスに対応する画像が出力される（符号３２６）。
【００８１】
このプロセス全体は、ＳＤＲＡＭメモリ３１２のバンクのインターリーブによって高速化可能である。元の画像の隣接する画素ブロックの格納には、ＳＤＲＡＭの異なるバンクを利用できるためである。図４に示すように、入力画像の各画素ブロックは、このように、ＳＤＲＡＭのバンク０、１、２、３に格納されたブロックによって囲まれている。バンクのオープンまたはクローズ中に別のバンクの読み出しが可能であるため、データ処理全体に要する時間は短くなる。
【００８２】
図５は、１６個の画素またはデータ要素｛ａ００、ａ０１、・・・、ａ３３｝で構成された４×４のアレイを示しており、全体として入力映像信号の元の画像を表している。各データ要素ａ００、ａ０１、・・・、ａ３３は、１６画素の元の画像中の１つの画素に対応し、関連する値Ｄ００、Ｄ０１、・・・、Ｄ３３を有している。データ要素または画素ａｉｊは、元の画像の第ｉ行および第ｊ列（ｊ＝０、１、・・・）に存在する。実際のところ、ほとんどの画像には画素が１６個以上含まれるが、ここでは本発明の初期理解を助けるため、少ない画素数を使用している。
【００８３】
図６は、元の画像を４本の水平画素ライン｛ａ００、ａ０１、ａ０２、ａ０３｝、｛ａ１０、ａ１１、ａ１２、ａ１３｝、｛ａ２０、ａ２１、ａ２２、ａ２３｝、｛ａ３０、ａ３１、ａ３２、ａ３３｝に分割する従来の方法を示している。各水平ラインには、４つの画素が含まれる。従来、これらのラインは、たとえばＳＤＲＡＭメモリ３１２等に順次格納されていた（図３）。
【００８４】
メモリから特定の画素を取り出すため、従来は、当該画素を含む水平ラインが要求され、ＳＤＲＡＭメモリから取り出されていた。従来のこの動作では、当該水平ラインの４つの画素がすべて取り出されていた。したがって、たとえば画素ａ２１を取り出す指令を出すと、従来は、画素ａ２０、ａ２１、ａ２２、ａ２３を含む３番目の水平ラインが取り出されていた。
【００８５】
これに対して、図７は、アレイを２×２の４つのサブユニットまたはブロック｛ａ００、ａ０１、ａ１０、ａ１１｝、｛ａ０２、ａ０３、ａ１２、ａ１３｝、｛ａ２０、ａ２１、ａ３０、ａ３１｝、｛ａ２２、ａ２３、ａ３２、ａ３３｝に分割して格納する改善された方法を示している。各サブユニットには４つの画素が含まれる。画素の数は図６の方法と同じであるが、格納される画素の境界が異なる。
【００８６】
図８は、図５の元の画像を時計回りに９０°（すなわちπ／２ラジアン）回転処理またはマッピングした出力画像を示している。上記と同じ命名法を採用して、図５のアレイは「元の」アレイと称し、図８の回転アレイは「出力アレイ」と称する。これは、ＳＰＧ３１４が表示用の出力画素位置（ＯＸ、ＯＹ）を生成し、それらが処理によって、元の原画像の対応する画素位置（ＷＸ、ＷＹ）に戻されるためである。左端最上部の画素すなわち「元の画素」ａ３０は、出力アレイでは（ＯＸ、ＯＹ）＝（０、０）と表されるが、元のアレイ中では左端最下部の画素であって、元の画像中での座標は（ＷＸ、ＷＹ）＝（３、０）である。出力アレイにおける元の画素のすぐ右側の画素ａ２０は、出力座標（ＯＸ、ＯＹ）＝（１、０）を有するが、元のアレイ中では左端最下部の画素のすぐ上側にあって、元の座標は（ＷＸ、ＷＹ）＝（２、０）である。それ以外の画素についても同様である。
【００８７】
表示用の出力画素座標（ＯＸ、ＯＹ）のＳＰＧ３１４（図３）からの出力は、元の画素（ＯＸ、ＯＹ）＝（０、０）から始まり、最上水平ライン（ＯＸ、ＯＹ）＝（１、０）、（２、０）、（３、０）に沿って水平に動作した後、２番目の水平ラインの左端の画素（ＯＸ、ＯＹ）＝（０、１）に移動して、右端最下部の画素（ＯＸ、ＯＹ）＝（３、３）である最終画素の出力座標がレンダリングまたは生成されるまで続けられる。
【００８８】
出力画像における元の画素の座標（ＯＸ、ＯＹ）＝（０、０）は、マッパー３１６（図３）に渡されて、この出力座標に対し、元の座標（ＷＸ、ＷＹ）＝（３、０）へのマッピングが行われる。したがって、メモリから最初に読み出す必要がある画素はａ３０である。ＳＤＲＡＭコントローラ３１０（図３）は、ＳＤＲＡＭメモリ３１２（図３）から、画素ａ３０を含む特定の画素ブロックを要求する。このブロックには、画素ａ２０、ａ２１、ａ３０、ａ３１が含まれる。ＳＤＲＡＭメモリ３１２（図３）からは、このブロック全体が取り出されて、画素ａ３０へのアクセスが可能となる。
【００８９】
出力画像で次に必要な画素の出力座標は、（ＯＸ、ＯＹ）＝（１、０）である。この出力座標は、マッパー３１６（図３）に供給されて、座標（ＷＸ、ＷＹ）＝（２、０）に変換される。これは、画素ａ２０が必要であることを意味するが、この画素もＳＤＲＡＭメモリ３１２（図３）から取り出されたばかりの画素ａ３０と同じブロックに位置する。したがって、この画素は直ちに使用可能であり、ＳＤＲＡＭメモリ３１２（図３）から別のブロックを取り出して画素ａ２０を取得する必要がない。
【００９０】
出力画像で次に必要な２つの画素ａ１０、ａ００は、前に取り出されたブロックには位置していないため、別のブロックを取り出さなくてはならい。しかしながら、両画素とも、画素ａ００、ａ０１、ａ１０、ａ１１が位置するブロックに含まれるため、この２番目のブロックをいったん取り出せば、画素ａ１０、ａ００を実質的に同時にレンダリングすることができる。
【００９１】
出力座標（ＯＸ、ＯＹ）＝（０、１）、（１、１）、（２、１）、（３、１）を有し、ａ３１、ａ２１、ａ１１、ａ０１と表される出力画像の２番目の水平画素ラインについても、取り出されたばかりの２つのブロックに位置するため、これら２つの画素ブロックにアクセスするだけで、同じようなプロセスにより画素のレンダリングが続く。
【００９２】
これは、ブロックを単位とするのではなく従来のように水平ラインを単位として画素が格納されている場合に時計回りに９０°回転させる従来の手順とは対照的である。出力画像のレンダリングに必要な出力画素位置（ＯＸ、ＯＹ）＝（０、０）、（１、０）、（２、０）、（３、０）を有する最初の４つの画素すなわち画素ａ３０、ａ２０、ａ１０、ａ００はすべて、元の画像での水平ラインが異なるため（図６参照）、ＳＤＲＡＭメモリ３１２（図３）の異なる位置に存在する。したがって、出力画像の１番目の水平ラインをレンダリング可能とする前に、元の画像を構成する４本の水平画素ラインすべてをＳＤＲＡＭメモリ３１２（図３）から順次取り出す必要がある。
【００９３】
そして、出力画像の２番目の水平ラインをレンダリングするには、画素ａ３１、ａ２１、ａ１１、ａ０１をＳＤＲＡＭメモリ３１２（図３）から取り出す必要がある。再び図６を参照すると、これらの画素も、ＳＤＲＡＭメモリ３１２（図３）の異なる位置に位置している。
【００９４】
この例から、ブロックに基づく処理方法では、従来のラインに基づく方法の２倍の速さで時計回りに９０°回転可能であることが分かる。この２倍の高速化は、メモリアクセス速度が従来のたった半分でよいことを意味する。
【００９５】
２５６個の画素を含む１６×１６の画像（不図示）を時計回りに９０°回転させる場合、ラインに基づく従来の方法では、出力画像の１番目の水平ラインをレンダリング可能とする前に、１６個の画素で構成された１６本の水平ライン（の１番目の画素）をすべてＳＤＲＡＭメモリ３１２（図３）から読み出す必要がある。全体として、出力画像を完全にポピュレートするには、２５６個のメモリ位置にアクセスする必要がある。
【００９６】
しかしながら、１６個の画素をそれぞれ含む１６個の４×４ブロックとして元の画像が格納されている場合は、（元の画像の１番目の垂直ラインの画素を含む）４つの画素ブロックを取り出すだけで、出力画像の１番目の水平ラインがポピュレートされる。出力画像の２番目の水平ラインをポピュレートする場合にも、同じ４つのブロックを再度取り出す必要がある。全体として、出力画像を完全にポピュレートするために取り出す必要のあるブロックは、６４個だけである。
【００９７】
この例は、ブロックに基づく方法が、ラインに基づく従来の格納方法の４倍速いことを意味する。実際のところ、従来は、１６個の画素で構成されたラインを取り出して当該ラインの１つの画素のみを利用するのに、１０回のクロックサイクルを要していた。これは、図２を参照すると、１６画素分に相当する８つのＤＱを取り出す場合、４つのＤＱを取り出すのに８回のクロックサイクル（Ｔ１〜Ｔ９の間）を要し、さらに４つのＤＱを追加で取り出すのに２回のクロックサイクル（Ｔ９〜Ｔ１１の間）を別途要するためである。
【００９８】
ブロックに基づく方法では、１６個の画素で構成されたブロック全体を取り出すのに１０回のサイクルを要するが、このうちの４つの画素が実質的に同時に使用されることになる。
【００９９】
ブロックを単位として画素を格納することには、ブロック内の画素の順次読み出しが水平方向または対角方向と垂直方法とで同じ長さになるという利点があるが、この方法にもある程度の非効率性が存在することが分かる。ほとんどの映像処理の場合、同じ行の画素のみが順次アクセスされるためである。これは、１６個の画素のうちの１２個が使われない可能性が高いことを意味する。しかしながら、何らかのマッピング形式が必要な場合は、ブロックに基づく方法の方が、大いに有効である。
【０１００】
上記構成３００は、整数の座標値を有する位置（ＷＸ、ＷＹ）の個々の画素を取り出すのに適している。しかしながら、たとえば特殊な角度の回転においては、元の入力画像の画素に対して、座標位置（ＷＸ、ＷＹ）の非整数値がマッパー３１６（図３）によって付与されることが頻繁にある。
【０１０１】
図９は、このような場合に適用可能な改善された構成９００を示している。図９は図５に類似しているが、簡潔化のため、構成９００のアクセス側のみを示している。同様の構成要素には、図３中の対応する符号を付しているが、先頭のみ「３」を「９」に変更している。
【０１０２】
図９に見られるように、ＳＰＧ９１４は、表示用の出力座標（ＯＸ、ＯＹ）を生成し、マッパー９１６にて、出力座標（ＯＸ、ＯＹ）は、入力映像の所要画素の元の座標（ＷＸ、ＷＹ）に変換される。この座標（ＷＸ、ＷＹ）は、ブロック要求変換器９１８によって、ＳＤＲＡＭメモリ（図９には図示せず）内の対応するバンク、行、および列のアドレスに変換される。当該位置（ＷＸ、ＷＹ）の画素を含む関連ブロックは、メモリから取り出されて、図３に示したように、ポピュレータ９２２によって利用される。これは、ブロック要求キャッシュ９２０を確認して当該ブロックが要求されたばかりであるか否かを判定する対象となる。
【０１０３】
ただし、単一のシフトレジスタ（図３の符号３２４）ではなく、複数のシフトレジスタ９２４を採用している。
【０１０４】
元の画像の非整数位置（ＷＸ、ＷＹ）が取り出されるようにするため、元の画像に含まれる複数の整数の隣接画素位置からの寄与を用いて、出力画像の対応する画素値を生成することができる。これらの寄与は、元の画像の関連する各隣接画素の寄与を重み付けするとともに、各寄与を合算することによって得られる。
【０１０５】
たとえば、出力画素位置を（ＯＸ、ＯＹ）＝（２、１）として元の画像が垂直方向に２倍に拡大されている場合のように、元の画像の非整数座標（ＷＸ、ＷＹ）＝（０．５、２）が要求された場合は、位置（ＷＸ、ＷＹ）＝（２、０）の画素からの５０％寄与を位置（ＷＸ、ＷＹ）＝（２、１）の画素からの５０％寄与に加算して用いることにより、関連する出力画素値を得ることができる。この結果、元の画像の使用可能な２つの整数位置間に補間画素が設けられる。したがって、図５の用語を採用して、（出力画像が８×４のアレイとなるように）当該入力画像が垂直方向に２倍に拡大されている場合は、出力画像の（ＯＸ、ＯＹ）＝（２、１）の画素を０．５×Ｄ（ａ２０）＋０．５×Ｄ（ａ２１）と表すことができる。ここで、Ｄ（ａｉｊ）は、元の画像の位置（ｉ、ｊ）におけるエントリａの値Ｄである。
【０１０６】
これら寄与画素の両者は、メモリに格納された同じ画素ブロックに位置している可能性が非常に高いため、ＳＤＲＡＭへのアクセスを別途行わなくても、この補間を容易化することができる。実際のところ、上記例を用いれば、両画素ａ２０、ａ２１がメモリの同じブロック｛ａ２０、ａ３０、ａ２１、ａ３１｝（図７参照）ひいては同じ位置に位置する。従来は、メモリ内の異なる水平ライン（図６参照）ひいては異なる位置に格納されていた。
【０１０７】
補間に必要となるのは、元の画像の多くとも４つの隣接画素である。たとえば、（ＷＸ、ＷＹ）＝（２．２、６．９）等の非整数位置を探索する場合は、（ＷＸ、ＷＹ）＝（２、６）、（ＷＸ、ＷＹ）＝（２、７）、（ＷＸ、ＷＹ）＝（３、６）、および（ＷＸ、ＷＹ）＝（３、７）の画素からの寄与それぞれに対し、所定のスキームに従って決定した重み付けを施して使用してもよい。この重み付けは、理想的には、元の画像中の寄与する整数位置に対する非整数座標位置の近さによって決定してもよい。したがって、この例では、（ＷＸ、ＷＹ）＝（２、７）における元の画素が（ＷＸ、ＷＹ）＝（３、６）における元の画素よりも大きく寄与する。
【０１０８】
非整数画素に寄与する元の画像の整数画素は隣接しているため、すべて同じ画素ブロックに位置する可能性が非常に高い。この場合は、ＳＤＲＡＭへのアクセスを別途行わなくても補間が可能である。あるいは、ＳＤＲＡＭメモリからのアクセス直後またはアクセス直前の隣接ブロックに含まれる可能性が非常に高い。これにより、ＳＤＲＡＭのアクティビティが増える可能性が低くなる。
【０１０９】
非整数位置の構成を考慮に入れるため、シフトレジスタ９２４と映像出力用表示装置９２６との間には、補間器９２８が設けられている。補間器９２８は、重み付け係数を決定し、各寄与画素からの画素値情報Ｄをそれぞれの重み付け係数に乗じた後、これら値を合算して最終的な出力画素値に到達する。
【０１１０】
上記説明において、マッパー３１６、９１６は、ＳＰＧ３１４、９１４によって生成された各出力画素位置（ＯＸ、ＯＹ）に対して、整数であろうが非整数であろうが、単一の画素位置（ＷＸ、ＷＹ）を生成する。しかしながら、図１０に示すように、変更されたマッパー１０１６であれば、ＳＰＧ１０１４によって生成された単一の出力画素位置（ＯＸ、ＯＹ）に対応して、出力画像の次のライン用に元の画像の複数の座標（ＷＸ、ＷＹ）を生成するようにも構成することができる。メモリから取り出された各画素ブロックには、元の画像のいくつかの画素ライン（この例では、４本の画素ライン）が含まれるため、複数の出力ラインを実質的に同時にポピュレート可能である。これは、出力画像の後続ラインの対応する元の位置（ＷＸ、ＷＹ）が、ある出力ラインと次の出力ラインとでわずかしか違わないことで、メモリ内の同じ画素ブロックに位置する可能性が高いためである。
【０１１１】
したがって、ＳＰＧ１０１４が出力座標（ＯＸ、ＯＹ）を生成する場合、マッパー１０１６は、当該出力座標（ＯＸ、ＯＹ）に対応する座標（ＷＸ、ＷＹ）を生成可能であるだけでなく、出力座標（ＯＸ、ＯＹ＋１）、（ＯＸ、ＯＹ＋２）、および（ＯＸ、ＯＹ＋３）に対応する座標（ＷＸ’、ＷＹ’）、（ＷＸ’’、ＷＹ’’）、および（ＷＸ’’’、ＷＹ’’’）も生成可能である。これらの出力座標は、水平方向の出力座標値は同じであるが、垂直方向の出力座標値はオフセットしている。たとえば、ＳＰＧ１０１４が出力原点座標（ＯＸ、ＯＹ）＝（０、０）を生成するとき、オフセットした出力座標（ＯＸ、ＯＹ＋１）＝（０、１）、（ＯＸ、ＯＹ＋２）＝（０、２）、および（ＯＸ、ＯＹ＋３）＝（０、３）も生成されるため、４つの座標がそれぞれ同時に生成されることとなる。
【０１１２】
（ＯＸ、ＯＹ）＝（０、０）→（ＷＸ、ＷＹ）
（ＯＸ、ＯＹ＋１）＝（０、１）→（ＷＸ’、ＷＹ’）
（ＯＸ、ＯＹ＋２）＝（０、２）→（ＷＸ’’、ＷＹ’’）
（ＯＸ、ＯＹ＋３）＝（０、３）→（ＷＸ’’’、ＷＹ’’’）
【０１１３】
４×４の画素ブロックを使用する例では、図１０に示すように、４本の水平出力ラインがマッパー１０１６によって同時に生成可能である。この際、ポピュレータ１０２２およびシフトレジスタ１０２４は、適宜拡張されている。したがって、ＳＤＲＡＭメモリ（図１０には図示せず）から取り出された４×４画素の単一ブロックを用いることにより、４本の出力ラインＯＹ、ＯＹ＋１、ＯＹ＋２、ＯＹ＋３のすべてに対して、一度に画素データを書き込むことができる。
【０１１４】
シフトレジスタ１０２４の後にはラインバッファ１０３０を追加して、出力映像信号を作成する際に、正しい順序で追加ラインが処理できるようにしている。
【０１１５】
このような構成により、出力信号または画像を生成する際に必要となるＳＤＲＡＭの負荷が大幅に低減される。しかしながら、この構成には、４つのマッピングエンジン１０１６が必要なため、回路の複雑化という代償を伴う。
【０１１６】
上記構成３００、９００、１０００によれば、特定の画像マッピングの処理時間が大幅に短縮されるが、ポピュレータ３２２、９２２、１０２２については、以下に説明する別の構成によって置き換え可能である。
【０１１７】
図１１および図１２は、画像データを処理する別の構成１１００を示している。出力ＸＹ生成器１１０２は、ＳＤＲＡＭ周波数で動作することにより、出力座標（ＯＸ、ＯＹ）を生成する。これは、左端最上部の画素からそのすぐ右側の画素まで走査し、右端最下部の画素の座標が生成されるまですべての水平ラインの走査を進める従来の方法の範疇である。ＳＰＧ３１４、９１４、１０１４が表示装置の周波数すなわち出力画素周波数で動作していたのに対して、出力ＸＹ生成器１１０２は、ＳＤＲＡＭ周波数で動作する。
【０１１８】
Ｙオフセット生成器１１０４は、出力画像の所定数の水平ライン座標に対してＹオフセットを生成する。この例では、所定数は４である。したがって、Ｙオフセット生成器１１０４は、４本の水平ラインに対応するＹオフセット値０、１、２、３を生成して、ＸＹ生成器１１０２から単一の出力座標（ＯＸ、ＯＹ）を受信するＹオフセット加算器１１０６にこれらオフセット値を提供する。したがって、ＸＹ生成器１１０２から出力された各出力座標（ＯＸ、ＯＹ）に対して、さらに３つの座標（ＯＸ、ＯＹ＋１）、（ＯＸ、ＯＹ＋２）、および（ＯＸ、ＯＹ＋３）が生成される。構成１１００のこの部分からの出力は、｛（０、０）、（０、１）、（０、２）、（０、３）｝、｛（１、０）、（１、１）、（１、２）、（１、３）｝・・・が一例として考えられる。
【０１１９】
これらの出力座標は、４画素幅の出力画素ストリップを左から右へと走査した後、出力画像に含まれる次のストリップ（水平ライン４〜７）を走査する。単一のマッパー１１０８は、これら出力座標（ＯＸ、ＯＹ）のストリップを受信し、元の入力画像における画素位置に関連して、対応する座標（ＷＸ、ＷＹ）のストリップを生成する。これら座標（ＷＸ、ＷＹ）は、画素がブロックに格納されていることによりＳＤＲＡＭメモリ内の類似位置を共有するため、後続のマッピング座標（ＷＸ、ＷＹ）は、記憶装置内の同じブロックまたは隣接するブロックに含まれる可能性が非常に高い。
【０１２０】
図１３および図１４はそれぞれ、出力画像を水平方向に走査する「出力ストリップ」および元の入力画像を対角方向に走査する「元のストリップ」を示している。出力映像が元の映像を回転させたものである場合、元の各画素位置（ＷＸ、ＷＹ）が、概してこの画素位置に非常に近接する画素にアクセスする格納ブロックセットを一掃することが分かる。元の画像は水平ラインではなく画素ブロックを単位として格納されているため、ＳＤＲＡＭメモリへ頻繁にアクセスする必要がなく、このため、処理の全体的な速度は向上する。
【０１２１】
図１１および図１２に戻って、元の座標（ＷＸ、ＷＹ）は、マッパー１１０８によりひとたび生成されると、ＢＲＣ変換器１１１０に渡される。このＢＲＣ変換器１１１０は、元の各座標（ＷＸ、ＷＹ）をＳＤＲＡＭメモリのバンク、行、列、およびオフセットのアドレスに変換する。すなわち、バンク、行、および列のアドレスは、所要画素を含むブロックが位置するＳＤＲＡＭメモリの特定のバンクにおける行および列位置を指し示す。この特定バンクの行および列へのアクセスにより、１６画素のブロックを取り出して処理することができる。オフセット値は、当該特定ブロックにおける特定の画素を示す。したがって、４×４の画素ブロックのオフセット値は、０〜１５の間の値を有する。１〜１６の値ではなく０〜１５の値を使用するのが好ましい。１６までを表すには５ビットを要するのに対し、１５までであれば４ビットで表すことができるためである。
【０１２２】
ＳＤＲＡＭメモリの各バンクには、たとえば８１９２行および１２８列等、多数の行および列が存在する可能性があるため、ＳＤＲＡＭメモリに格納された個々の画素を一意に識別するには、非常に大きなＢＲＣ値（オフセットを含む）が必要となる場合がある。これを克服するため、ブロック要求／ＩＤ生成器１１１２は、当該バンク、行、および列の値の内部ＩＤ値を生成する。これは、たとえばバンク、行、および列のアドレスの下位の有効２ビットのみを合わせて構成される６ビットのアドレスである。下位ビットの数は、特定の状況に応じて１や３等に変更してもよい。これにより、ＳＤＲＡＭメモリの２６（＝６４）個のメモリ位置を、それらが位置するバンクおよび当該特定バンクにおける行および列に基づいて識別可能となる。
【０１２３】
図１４を参照して説明したように、元の座標（ＷＸ、ＷＹ）は、４×４のメモリブロックにわたって掃引または走査を行うことが多いため、少なくとも４つのバンクと４つの行または４つの列のいずれかとは、同じＩＤの新しいＢＲＣ値が発生する前に帳消しとなる。これは、丸々６４画素分に相当するから、ＩＤ値が少なくとも６４画素に対して一意に有効となることを意味する。行および列の要求の重複するカテゴリが除外され、作業負荷が軽くなる。座標（ＷＸ、ＷＹ）の掃引特性を考えると、メモリ内の同じブロックの画素が要求されることになるため、これら要求のエントリが重複する可能性は非常に高い。
【０１２４】
新しいブロック要求の検出には、最新のブロック要求のローカルキャッシュを利用する。新しいＢＲＣ値が要求されると、ＳＤＲＡＭコントローラ１１１６は、ＳＤＲＡＭメモリから当該特定ブロックを取り出す。なお、６ビットのＩＤ値については、当該ＩＤ値がＳＤＲＡＭコントローラ１１１６ではＳＤＲＡＭメモリのアドレスとは認識されない内部値であるため、使用しない。ＳＤＲＡＭコントローラ１１１６では、当該画素ブロックが格納されたＳＤＲＡＭ内の正しい位置をＢＲＣアドレス全体で一意に識別できるようにする必要がある。ＩＤ値は、この例では６４個の値の１つに過ぎないが、全ＢＲＣ値を格納する６４の位置メモリのアドレスとして使用する。したがって、同じＩＤの新しいＢＲＣ値が検出された場合であっても、要求はＳＤＲＡＭコントローラ１１１６に到達して、メモリから当該ブロックが取得される。
【０１２５】
上記特定の位置（ＷＸ、ＷＹ）に対して生成されたＩＤ値（オフセット値を含む。この場合は、１６画素ブロック内の特定画素の０〜１５の間の値）は、遅延発生器１１１８に渡されて、ＳＤＲＡＭコントローラ１１１６がＳＤＲＡＭメモリから所要の画素ブロックを取り出すのに十分な時間を確保できるようにしている。一方、ＳＤＲＡＭコントローラ１１１６は、関連するＢＲＣアドレスにおけるブロック内に含まれる要求ＢＲＣデータを６４のエントリキャッシュに格納している。
【０１２６】
ルックアップエンジン１１２０は、遅延されたＩＤ値およびオフセットを用いてキャッシュ１１１４を探索し、取り出された値を大容量のラインバッファメモリ１１２４に格納する。この例では、少なくとも４つのラインバッファ１１２４に情報を書き込むことができる。取り出されたデータ値には、上述のように補間を施してもよい。遅延出力画素座標（ＯＸ、ＯＹ）は、構成１１００の出力座標（ＯＸ、ＯＹ）および座標（ＷＸ、ＷＹ）を生成する部位１１０２、１１０４、１１０６とラインバッファ１１２４との間に位置する遅延器１１２２に保持されている。この遅延出力座標（ＯＸ、ＯＹ）は、ラインバッファ１１２４のどの位置にデータを格納するかを指し示すポインタとして使用する。
【０１２７】
構成１１００の画素クロック側では、出力画素周波数クロックで動作しＹオフセットを加算してストリップとするのではなく通常は出力位置（ＯＸ、ＯＹ）をカウントする別の出力ＸＹ生成器１１２６が、ラインバッファ１１２４から出力画素を読み出して送出することにより別途使用可能としている。
【０１２８】
ラインバッファ１１２４がアクセスされる直前に書き込まれるように、画素クロック側およびＳＤＲＡＭクロック側は、部分的に同期させる必要がある。ダブルバッファ法を用いて、画素クロック側が前のラインにアクセスしている間にＳＤＲＡＭクロック側が次のデータラインにアクセスするようにしてもよい。すなわち、ＳＤＲＡＭクロックロジックおよび画素クロックロジックは、画素側の出力ＸＹロジック１１２５がラインバッファ１１２４の半分を読み出している間にＳＤＲＡＭ側の出力ＸＹ生成器１１０２がラインバッファ１１２４の残りの半分に書き込みを行うように、同期させる必要がある。その後、ラインバッファ１１２４の半分ずつを交換して、ラインバッファ１１２４への書き込みが読み出しを追い越すことのないように簡単なダブルバッファシステムを構成する。
【０１２９】
また、ブロック要求／遅延／キャッシング構成１１１２、１１１４、１１１８、１１２０（図１１においてパターン背景を施した構成要素）の複数の事例により、出力画像のアンチエイリアシングまたはスムージングを実現することも可能である。出力座標（ＯＸ、ＯＹ）の小数部から作成されたデータを用いて、後で統合される追加座標（ＷＸ、ＷＹ）を導入することができる。ブロック要求器１１１２では、ＢＲＣキャッシュ１５０４が１つで済むように、多対１ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）１５０２（図１５参照）が必要になる。ＳＤＲＡＭコントローラ１１１６からのデータは、ブロック要求器１１１２から送られた遅延ＩＤから取り出されたデータとともに、複数のキャッシュエントリまたは単一のマルチポートメモリに格納される。そして、このデータは、上述の補間と類似の方法で、小数値を用いて単一の画素に統合され、ラインバッファ１１２４に格納される。
【０１３０】
複数の入力ソースを用いる場合は、ＳＤＲＡＭメモリ１１１６内の異なる位置に格納可能である。また、要求された座標（ＷＸ、ＷＹ）をマッパー１１０８が再生成してＳＤＲＡＭメモリ１１１６内の異なるソースを指し示す前または後のいずれかに、ソースマッピング機能を実施することができる。マッパー１１０８によるマッピングの前にソースマッピングを行うこととすれば、個々のウィンドウを別々にマッピング可能となる。マッパー１１０８によるマッピングの後にソースマッピングを行うこととすれば、マッパー１１０８によるマッピングを一度に複数のウィンドウに適用可能となる。
【０１３１】
図１６は、別の実施例に係る、ＳＤＲＡＭにデータを格納する構成を示している。図４を参照すると、隣接する４×４の画素ブロックは、同じＳＤＲＡＭメモリ内の異なるバンクに格納される。しかしながら、図１６では、６４個の４×４画素ブロックは、ＳＤＲＡＭメモリ内の１つのバンクの同じ行に格納される。ＳＤＲＡＭの各行は通常、５１２個の列アドレスで構成され、前述の通り、各列アドレスには２画素分の画像データを格納できる。したがって、ＳＤＲＡＭの各行には１０２４画素分の情報を格納できる。１６個の画素で構成される４×４の各ブロックには８つの列アドレスが必要であって、これは、６４個の４×４ブロックをＳＤＲＡＭの各行に格納可能であることを意味する。これら６４個のブロックは、１６画素のブロックの８×８アレイとして格納される。この結果、ＳＤＲＡＭメモリの単一のバンクの単一のＳＤＲＡＭ行には、合計３２×３２（＝１０２４）個の画素が含まれることになる。
【０１３２】
隣接する３２×３２の画素アレイは、アレイごとにＳＤＲＡＭの１つの行が必要であるが、ＳＤＲＡＭメモリの同じバンクの異なる行ではなく、異なるバンクに格納される。異なるバンクへは高速なアクセスが可能であるため、このようにすることで、隣接する画素アレイ間の移動を速くすることができる。
【０１３３】
このように画素を格納することにより、ＳＤＲＡＭから画素が取り出されると、ＳＤＲＡＭの同じ行が（たとえば、図４に示す構成と比較して）長期間にわたってアクティブな状態を維持する。これは、ＳＤＲＡＭの同じ行に、より多くの隣接画素が位置するためである。この結果、前述の通り、ＳＤＲＡＭの各行のオープンおよびクローズを頻繁に行う必要がなくなるため、処理時間が短縮される。ＳＤＲＡＭメモリ内のすべてのバンクは同時にオープン可能なため、この格納構成によれば、４０９６個の画素に相当する１６×１６個の４×４画素ブロックに対して、実質的に瞬時にアクセス可能となる。
【０１３４】
図１７は、別の実施例に係る、連想メモリ（ＣＡＭ：Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）での増強を行った構成を示している。ＣＡＭでの増強により、画素の読み返し中に使用されるメモリ量を減らすことができる。これは、ＣＡＭが、新たに使用された４×４画素ブロックのランダムアクセスキャッシュを保持できるためである。このキャッシュには、全表示ライン分のブロックを格納可能である。
【０１３５】
前述の通り、標準的なＳＤＲＡＭでは、ＳＤＲＡＭからデータを取り出すためのメモリアドレスが必要である。一方、連想メモリでは、所要の特定データを格納する位置を決定する。画像の回転またはワープ処理では、近い位置のランダムアドレス（予測不可能）をＳＤＲＡＭから取得する必要があるため、最新のブロック要求のキャッシュ１１１４（図１１）が最終的な表示解像度と同じ大きさである必要がある。たとえば９０°回転を行う場合、表示幅が２０４８画素であれば、２０４８×２０４８画素分のキャッシュが必要となる。
【０１３６】
本実施形態では、ＣＡＭが４×４の画素データとともにブロック位置（たとえば、元の原画像の左上ブロックの位置である（０、０）、その右隣の（１、０）等）を格納する。ブロック要求があると、ＣＡＭに対する一致ブロックの特定ブロック位置の問い合わせが行われる。当該ブロックがＣＡＭに存在しない場合は、要求がＳＤＲＡＭに送られて、当該ブロックの取り出しが行われる。また、当該ブロックがＣＡＭに存在する場合は、ＣＡＭ位置が既知であるとともに４×４の画素データを有することから、ＣＡＭ内のアドレスを用いて当該所要のブロックをＣＡＭから容易に取得することができる。
【０１３７】
一実施態様において、ＣＡＭは、上述のように元のブロック位置を格納する。この際、ＣＡＭのアドレスは、当該ブロックの４×４個の画素を含む通常のメモリキャッシュアドレス（ＩＤ）となっている。これは、ＣＡＭに格納するデータが少ないため容量を減らすことができ、複雑化およびコストの問題に対処可能であることを意味する。
【０１３８】
ＣＡＭを使用する場合は、図１２を参照して説明したようにバンク、行、および列のアドレスの下位の有効２ビットからＩＤ（キャッシュ位置）値が生成されることはない。その代わりに、当該特定ブロックをＣＡＭ内で探索して見つかったＣＡＭアドレス位置、すなわち一致するＢＲＣアドレスを有するメモリ位置がＩＤ値となる。ＣＡＭのどこにもブロック位置（バンク、行、列）データが見つからない場合、すなわち当該ブロック位置を有するブロックが以前に取り出されていない場合は、次の位置ＩＤを有する新しい次のＣＡＭメモリ位置がカウンタにより生成され、要求されたＢＲＣアドレスはその位置に格納される。その後、同じＢＲＣに対して要求があれば、このＣＡＭアドレスが生成される。これが構成するＩＤは、遅延ラインの後、図１１に示した４×４の画素キャッシュ１１１４に渡される。
【０１３９】
この方法によれば、ＳＤＲＡＭメモリは、方向や角度、またはどのワープ機能によるかに関わらず読み出し可能となる。また、ＣＡＭには、ＳＤＲＡＭの位置に関係なく、最新のブロック要求が記憶される。これに関連する図１２に示す方法では、正方グリッドの隣接画素のローカルキャッシュが格納されるのに対して、ＣＡＭを用いる方法では画素を如何なる形状にも格納可能である。
【０１４０】
一例として、２０４８×２０４８画素の出力解像度では、各ＣＡＭ位置に４画素分の情報を格納できることから、全画素ラインを網羅するのに少なくとも５１２個のＣＡＭ位置が必要となる。また、各ＣＡＭ位置のアドレスは、１８ビット幅（バンクに２ビット、列に６ビット、行に１０ビット）であってもよい。したがって、ビット単位でのＣＡＭサイズは、５１２×１８＝９２１６ビットとなる。この値は、比較的小さく見えるかもしれないが、ＦＰＧＡ内に当該所要データを配置するには、およそ１０，０００個以上のロジックセルが必要となる。通常のＦＰＧＡでは、総数およそ２０，０００個のロジックセルを要するため、多すぎて実用化できない可能性がある。したがって、外部ＣＡＭを使用しない場合、この方法はＡＳＩＣ用として、より適している。
【０１４１】
ＣＡＭの使用を伴う場合、図１１に示した複数のラインバッファ１１２４が削除され、どの時点においても、（たとえば複数のラインではなく）１ラインごとに処理が行われる実施形態もある。
【０１４２】
上述の例（各ラインの最後にデータが保存されるため、ＣＡＭ法は除く）においては、単一の大容量マルチブロックキャッシュが用いられる。この大容量マルチブロックキャッシュには、通常、サイズが４×４または４×２画素のより小さなブロックが含まれており、より小さなブロックはそれぞれ、１回のＳＤＲＡＭバーストでアクセス可能となっている。
【０１４３】
このキャッシュは、「ウィンドウ」が原画像を横切って移動する画像の比較的小さな部分にのみ使用する。このキャッシュの保存はラインごとではないため、出力が１本の出力ラインを走査して次のラインに進む場合は、キャッシュを再ポピュレートする必要がある。この際、前回の出力ラインと同じデータを用いることが多い。
【０１４４】
効率改善のため、Ｙオフセット生成器により、出力側で左から右へと走査している間に、複数の出力ラインを一度に処理してもよい。複数の出力ラインは隣接する原ラインから生成されるため、同じキャッシュデータが複数回再利用されることになり、同じＳＤＲＡＭアクセスで、より多くの画素が得られることになる。
【０１４５】
上記例示したアーキテクチャをさらに改善するには、主に３つの分野が挙げられる。
【０１４６】
第１に、表示装置上で複数の画像が隣同士にワープ処理される場合、上記例示した大容量のキャッシュでは画像のデータを区別できないため、原画像ごとに別々のキャッシュが必要となる。これは、画面上のウィンドウ数に対応する追加キャッシュが必要となって、必要なＦＰＧＡリソースが増大することを意味する。
【０１４７】
第２に、一度に別々のラインとして生成された複数のラインを分けるには、複数のラインバッファが必要である。これは、ＦＰＧＡのサイズアップおよび複雑化を招く。
【０１４８】
第３に、出力画素周波数およびＳＤＲＡＭ周波数という２つの周波数に跨ってシステムが分かれているため、設計が若干複雑になる。
【０１４９】
さらに、図１６を再び参照して、ＳＤＲＡＭには、１回のＳＤＲＡＭバーストで容易にアクセスできるように、より小さな４×４の画素ブロックが格納されている。このサイズは、ＳＤＲＡＭのデータ幅に応じて、４×４、４×２、２×４、２×２、８×４等であってもよい。そして、より小さな多数のブロック（図１６の例では１６個）がより大きな３２×３２の画素ブロックを構成し、これらすべてのブロックがＳＤＲＡＭの同じ行に格納されている。これにより、ＳＤＲＡＭは、異なる行を頻繁に「プリチャージ」（クローズ）および「アクティベート」（オープン）することなく、元の画像すなわち原画像の画素を如何なる方向にでも高速にアクセス可能である。この結果、処理時間を短縮することができる。隣接する３２×３２ブロックは、ＳＤＲＡＭの異なるバンクに格納されているため、元の画像への画素アクセスが行の境界を越える場合、すなわち、より大きな異なる３２×３２画素ブロックから原画素を探索する場合は、ＳＤＲＡＭアクセスが新たなバンクに切り替わるため、高速アクセスが維持される。
【０１５０】
図１８は、別のアーキテクチャ１８００を示している。
【０１５１】
この別のアーキテクチャ１８００において、キャッシュには、より小さな画素ブロックで構成された大きなマルチブロックが格納されない代わりに、新たに使用したブロックが記憶される。新たに使用した各ブロックは、別々のブロックキャッシュエントリに格納される。一度に走査されるのは１本の出力ラインだけであるため、アーキテクチャ１８００が簡素化される。この結果、ラインバッファブロックは不要となる。さらには、ＳＤＲＡＭコントローラを除くその他すべての構成要素がＳＤＲＡＭ周波数ではなく出力画素周波数で動作する。
【０１５２】
ＳＰＧ１８０２は、一対の出力座標（ＯＸ、ＯＹ）を生成する。これらは、すべての標準的な映像システムと同じく、また上述したように、左から右、上から下へと走査したものである。
【０１５３】
出力座標（ＯＸ、ＯＹ）は、エンジン１８０４によって処理され、座標（ＷＸ、ＷＹ）が生成される。座標（ＷＸ、ＷＹ）は、上述のように、元の原画像における所望の画素位置を示している。
【０１５４】
（ＷＸ、ＷＹ）画素は、計算が行われると、ブロック要求変換器１８０６によって原ブロックのＳＤＲＡＭ位置に変換される。メモリ位置は、ブロックＢＲＣ（バンク、行、および列）の形式である。これは、所要の（ＷＸ、ＷＹ）画素を含む４×４画素ブロックのメモリ位置である。
【０１５５】
このブロックのＳＤＲＡＭ位置は、比較器１８０８によって、隣接する出力画素すなわち同じラインの前回の画素（ＯＸ−１、ＯＹ）および直前のラインの隣接画素（ＯＸ−１、ＯＹ−１）、（ＯＸ、ＯＹ−１）、（ＯＸ＋１、ＯＹ−１）から生成されたＳＤＲＡＭの元の画素の位置と比較される。これらは、以下に詳述するライン遅延によって得られる。
【０１５６】
現在のＳＤＲＡＭ位置は、出力画面上で１画素しか離れていない出力画素位置（ＯＸ、ＯＹ）に対応する別のＳＤＲＡＭ位置と比較されるため、これらは一致する可能性が非常に高い。言い換えれば、現在探索中の画素は、ＳＤＲＡＭから取り出し済みの画素ブロックに見つかる可能性が高いことを意味する。結果として、このデータは新しく取り出されたばかりであるため、システムによりＳＤＲＡＭに対して再度要求する必要はない。
【０１５７】
ＢＲＣの一致がある場合は、当該前回の一致ブロックのＩＤがコピーされ、ライン遅延１８１０に渡される。
【０１５８】
一致がない場合は、次に使用可能なＩＤナンバーが使用され、ライン遅延１８１０に渡される。ＳＤＲＡＭコントローラ１８１２には要求が送られ、ＳＤＲＡＭから所要の画素ブロックが取り出されるとともに、当該位置（ＩＤ）の画素ブロックキャッシュ１８１４に格納される。
【０１５９】
ＩＤおよび現在の位置（ＷＸ、ＷＹ）をライン遅延１８１０に渡す目的は２つある。第１に、ＳＤＲＡＭコントローラ１８１２に、所要の画素ブロックを取り出すのに十分な時間が提供されるためである。第２に、前の工程で説明した比較、すなわち位置（ＷＸ、ＷＹ）に対応するＢＲＣと前回の出力ラインのＢＲＣとの比較を可能にするためである。
【０１６０】
ライン遅延１８１０からの出力は、次の出力画素ラインが処理された場合の比較に利用できるように、上述のブロック比較器１８０８にフィードバックされる。また、ライン遅延１８１０からの出力は、ＩＤ値を用いて画素ブロックキャッシュ１８１４から現在の所要画素を取り出すのにも使用される。
【０１６１】
画素ブロックキャッシュ１８１４からは、ＩＤ値を用いて（ＷＸ、ＷＹ）値の下位ビットに基づくことにより、正しい画素が取り出される。その後、表示装置に出力される。
【０１６２】
この例では、真に必要な場合にしかＳＤＲＡＭアクセスは生じない。通常のワープ画像または回転画像の場合、隣接する原画素（ＷＸ、ＷＹ）は、出力画像（ＯＸ、ＯＹ）においても近い関係を維持するため、ＳＤＲＡＭメモリに格納された同じ画素ブロックに存在する可能性が高い。上述の比較すなわち「隣接性」確認によれば、ＳＤＲＡＭから取り出された画素ブロックキャッシュ１８１４の任意の前回ブロックが可能な限り再利用されることが確実となる。
【０１６３】
図１９は、画素ブロックキャッシュに格納された画素ブロックの再利用の例を示している。図１９中の矢印は、元の原画像における画素の走査経路を示している。矢印はわずかな角度で、出力ラインごとに１ラインずつ下がっている。
【０１６４】
予想されることではあるが、１番目の出力ラインに関しては、画素ブロックキャッシュが空でありライン遅延に位置（ＷＸ、ＷＹ）が存在しないことから、すべての所要画素ブロックがＳＤＲＡＭメモリ自体からアクセスされる必要がある。しかしながら、前回のラインで使用された同じブロックを矢印が横切るため、後続の各出力ラインに関しては、ＳＤＲＡＭから取り出される必要のあるブロックが少なくなる。実際のところ、この例の２番目、３番目、および４番目の出力ラインでは、新しいブロックが１つだけＳＤＲＡＭから取り出され、画素を探索するその他５つの画素ブロックについては、画素ブロックキャッシュに格納済みとなっている。
【０１６５】
上記ブロックキャッシュは、わずか１本の映像データラインを保持するのに十分な容量があればよい。これは、１本の出力ラインに必要なブロックが次の出力ラインで使用される場合に備えておく必要があるためである。
【０１６６】
たとえば、１９２０×１０８０の出力解像度の場合、非回転マッピングであれば、およそ５１２個の４×４ブロックを格納できる画素ブロックキャッシュが必要となる。これは、４×５１２＝２０４８となって、水平出力ラインの１９２０個の画素を網羅するのに十分だからである。
【０１６７】
９０°回転の場合は、表示装置の水平方向に１０８０個しか画素が出力されないため、必要なブロック数はより少なくなる。
【０１６８】
４５°回転の場合は、１９２０×１０８０の三角形の斜辺が２２０２画素であるため、表示装置に出力される斜め方向の画素数が増えることから、１本の水平出力ラインを表示するのにより多くのブロックが必要となる場合がある。
【０１６９】
データのキャッシングの実施は、一般的には容易である。しかしながら、この場合、ＩＤ生成器は、どのＩＤが使用可能か、どのＩＤが使用中であるために利用不可能かを追跡する必要がある。この実施態様では、ＩＤは画素ブロックキャッシュのアドレスすなわち画素ブロックキャッシュ内のどこに格納されているかに対応する。一部の画素ブロックは、フレーム全体にわたって、他のブロックよりも再利用される回数が多い。これは特に、特殊なワープの場合に該当し、また一部の回転においても該当する。したがって、ＩＤ生成器は、最大のＩＤ値が割り当てられている場合（たとえば、０〜５１１、０〜５１１等）は、単にＩＤ値を順番に発行して再び先頭に戻るということはできない。
【０１７０】
画素ブロックキャッシュは、多数のライン（おそらくは画像全体にわたって）ＩＤの繰り返し利用回数が最大となるように、十分な容量を有する必要がある。あるいは、どのＩＤが再使用可能か否かを把握する必要がある。
【０１７１】
したがって、ブロックキャッシュは、使用中の（すなわち、現在の出力ラインに必要な）ブロックキャッシュ（ＩＤ）エントリを上書きせず、また、不要となった（すなわち、前回のラインの出力には使用されたが、現在の出力ラインには使用されていない）ブロックキャッシュ（ＩＤ）エントリを再利用することを理解できる程度のインテリジェンスを備えている必要がある。これをＦＰＧＡに実装するのは比較的困難である。
【０１７２】
図２０は、このインテリジェンスをＦＰＧＡに実装可能な構成を示している。
【０１７３】
メモリには、ＩＤリスト２０００が格納される。ＩＤリストは、メモリアドレスに対応して、キャッシュされた各画素ブロックの位置を有しており、理想的には各フレームの最上部でリセットされて、５１２ブロックのキャッシュすなわち５１２個のメモリ位置を有するキャッシュの場合に、すべてのＩＤを順番に（０、１、２、３、４・・・５１０、５１１）リストアップするものである。
【０１７４】
また、０から始まる読み出しポインタ２００２および０から始まる書き込みポインタ２００４が作成される。読み出しポインタ２００２は、次に使用可能なＩＤ値を指し示す。書き込みポインタ２００４は、任意の解放ＩＤ値すなわち再利用ＩＤ値の書き戻し位置を指し示す。新しいＩＤ値が必要な場合は、次に使用可能なＩＤ値を読み出しポインタ２００２が指し示すので、これが読み出しポインタ２００２から読み出される。
【０１７５】
１番目の出力ラインの場合は、次に使用可能なＩＤ値が有効となるため、読み出しポインタ２００２が１ずつインクリメントされる。その後、読み出しポインタ２００２は、次に使用可能なＩＤ値をいつでもＩＤリスト２０００から出力可能となる。１番目の出力ラインではＳＤＲＡＭから新しいデータを取り出す必要があるため、読み出しポインタ２００２は、この時点でかなり大きな値を指し示すことになる。たとえば、１９２０×１０８０の出力解像度の場合は、４８０という数を指し示すことがある。これは、４８０個の４画素幅のブロックがそれぞれの一意のＩＤ値とともに要求される可能性があるためである。この時点で、任意の解放ＩＤ値すなわち再利用ＩＤ値の書き戻し位置を指し示す書き込みポインタ２００４は、ＩＤ値が一切解放すなわち再利用されていないため、０のままである。
【０１７６】
２番目の出力ラインの画素を計算している際、１番目の出力ラインで使用されなかったＩＤの一部は依然として使用可能であるが、一部は１番目の出力ラインと一致したＳＤＲＡＭブロック位置を有する。
【０１７７】
１番目のラインのＩＤ値が再利用されていることが分かると、当該ＩＤが循環中であることから、ＩＤリスト２０００に変更は行われない。しかしながら、１番目のラインのＩＤ値が再利用されていないことが分かると、当該ＩＤ値は書き込みポインタ２００４の位置でＩＤリスト２０００に書き戻され、書き込みポインタ２００４はインクリメントされる。これにより、当該ＩＤは循環から引き出されてＩＤリスト２０００に戻され、その後いつでも使用可能となる。
【０１７８】
このように、２番目のラインで再利用されない１番目のラインの任意のＩＤ値は、ＩＤリスト２０００に書き戻される。ＩＤ値は、読み出しと同じ順序でＩＤリスト２０００に書き戻されることが多いが、これは、関連するワープまたは回転によって異なる。このプロセスは、後続の各出力ラインに対して継続され、次に使用可能なＩＤ値がＩＤリスト２０００から読み出されるとともに、読み出しポインタ２００２がインクリメントされる。これと同時に、任意の非使用ＩＤがＩＤリスト２０００に書き戻されるとともに、書き込みポインタ２００４がインクリメントされる。
【０１７９】
これにより、再利用の頻度が高いＩＤはＩＤリスト２０００に書き戻されないため、特定のＩＤが何度再利用されても上書きされることはなく、その代り、不要となるまで１ライン遅延で循環し続け、不要となった時点でＩＤリスト２０００に書き戻される。一部のワープでは、上から下まですべての出力ラインに関して１つのＩＤ値が使用される可能性がある。
【０１８０】
（使用可能なＩＤの）ＩＤリスト２０００と１ライン遅延で「循環中」のＩＤとを組み合わせた場合は常に、重複も省略もない完全なＩＤリストが得られるべきである。このリストを作成して維持する際に使用されるロジックは、ＩＤが画素番号Ｎでいったん再利用された場合は、当該ＩＤが画素Ｎ＋１、Ｎ＋２、Ｎ＋３等においても再使用可能であることを保証するものでなくてはならない。ただし、異なるＩＤすなわちＩＤリストからの新しいＩＤ、または前回のラインからの異なるＩＤが事前に必要となっていない場合に限る。
【０１８１】
たとえば、最初の画素ラインで以下のＩＤが使用されるものとし、
ライン１：０  ０  ０  ０  １  １  １  １  ２  ２  ２  ・・・
次のラインで以下のように再利用しようとする場合（「５０」は新しいＩＤの要求）、
ライン２  ０  ０  ０  ０  １  ５０  ５０  １  ２  ２  ２  ・・・
ＩＤ「１」が新たなＩＤ要求によって「分割」されていることが分かる。そして、以下のラインが生成されると、
ライン３  ０  ０  ０  ０  ５０  ５０  ５０  ５０  ２  ２  ２  ・・・
この場合は、ライン２の両ＩＤ「１」がＩＤリストに戻されることになるため、ＩＤリストで重複が起こり、最終画像が破損してしまう。
【０１８２】
これを解決するには、前回のラインからのＩＤを継続的に再使用可能とするしかない。そうすれば、上記の代わりに以下のようなラインが生成される。  
ライン１  ０  ０  ０  ０  １  １  １  １  ２  ２  ２  ・・・
ライン２  ０  ０  ０  ０  １  ５０  ５０  ５１  ２  ２  ２  ・・・
ライン３  ０  ０  ０  ０  ５０  ５０  ５０  ５０  ２  ２  ２  ・・・
【０１８３】
ＩＤ「１」は、使用を不連続とすることによって、２回目の使用がなされないようにして再利用不可能となったため、代わりに新しいＩＤ「５１」が生成されている。これによって、ＳＤＲＡＭから当該同じ画素ブロックが新たに要求される。言い換えれば、ＩＤ「１」および「５１」には同じ画素ブロックが保持される。このような若干の非効率性はまれにしか発生せず、ＩＤリストの破損を防止するために必要である。
【０１８４】
図２１は、双線形補間を示している。双線形補間は、非整数の原画素位置（ＷＸ、ＷＹ）を整数の原画素位置の値および乗算値のセットに変換する際に使用する。その考え方は、中間の画素値を周囲の画素に基づいて補間する方法として周知である。
【０１８５】
図２１の黒円は、ＳＤＲＡＭメモリに存在する既知の値を有する整数画素座標を示している。中空円は、非整数の画素位置（ＷＸ、ＷＹ）＝（ｆｘ、ｆｙ）を示しており、その値は、周囲の整数画素値の寄与を重み付けして決定される。この非整数画素値を生成するには、周知の簡単な計算が使用可能である。
【０１８６】
Ｄ（ｆｘ、ｆｙ）＝Ｐ（０、０）＊（１−ｆｘ）＊（１−ｆｙ）＋Ｐ（１、０）＊ｆｘ＊（１−ｆｙ）＋Ｐ（０、１）＊（１−ｆｘ）＊ｆｙ＋Ｐ（１、１）＊ｆｘ＊ｆｙ
【０１８７】
したがって、図示の例（ＷＸ、ＷＹ）＝（ｆｘ、ｆｙ）＝（０．２５、０．５）の場合、非整数画素の値Ｄは以下のように求められる。
【０１８８】
Ｄ（０．２５、０．５）＝Ｐ（０、０）＊（１−０．２５）＊（１−０．５）＋Ｐ（１、０）＊０．２５＊（１−０．５）＋Ｐ（０、１）＊（１−０．２５）＊０．５＋Ｐ（１、１）＊０．２５＊０．５
＝Ｐ（０、０）＊０．３７５＋Ｐ（１、０）＊０．１２５＋Ｐ（０、１）＊０．３７５＋Ｐ（１、１）＊０．１２５
【０１８９】
双線形補間を行うには、隣接する４つの画素に同時にアクセスする必要がある。
【０１９０】
上記から、非整数座標（ＷＸ、ＷＹ）について双線形補間を用いて取り扱い可能であることが思い起こされる。図２２は、これを実現するための画素キャッシュを用いた１つの可能な方法を示しており、画素ブロックキャッシュを同時に読み出し可能な複数の部位に分割している。図２２に示すように、画素ブロックキャッシュへのデータの格納は、隣接する画素が４つの異なるキャッシュ領域（０、１、２、３）のうちの１つに格納されるように行われる。
【０１９１】
図２２には、それぞれ１６個の画素を含む４つの異なる４×４画素ブロックを示している。画素の格納には４つの異なるメモリ領域が使用される。画素上の番号は、その画素が格納される領域を示している。このように、メモリ領域０は偶数ＷＸおよび偶数ＷＹの座標（たとえば（０、０））に対応し、メモリ領域１は奇数ＷＸおよび偶数ＷＹの座標（たとえば（１、０））に対応し、メモリ領域２は偶数ＷＸおよび奇数ＷＹの座標（たとえば（０、１））に対応し、メモリ領域３は奇数ＷＸおよび奇数ＷＹの座標（たとえば（１、１））に対応する。
【０１９２】
４×４の各画素ブロックには、キャッシュ領域が１つしかない場合と同じく、同じＩＤ値が割り当てられている。しかしながら、各４×４ブロックの１６個の画素は、４つの異なるメモリ領域（０、１、２、３）に散在している。これにより、隣接する４つの画素のいずれか１つが各メモリ０、１、２、３に存在することになるため、どの画素にも同時にアクセス可能となる。
【０１９３】
所要の画素が図２２に示される４つの中央画素であって、４つの異なる４×４ブロックおよびＩＤ値に跨っていても、これら４つのメモリ領域は依然として上記の効果を奏する。ただし、４つの中央画素は異なる４×４画素ブロックおよびキャッシュ位置に存在するため、各領域は異なるＩＤ値を受け取る。
【０１９４】
図２３は、このような方法で双線形補間を可能にするデータ処理アーキテクチャ２３００を、どのようにして適応させられるかを示している。
【０１９５】
非整数（ＷＸ、ＷＹ）値は、変換器２３０２によって、双線形補間を行うために必要な隣接する４つの整数座標に変換される。これら各整数座標は、その整数座標画素が位置する画素ブロックのＳＤＲＡＭ位置（バンク、行、および列）を識別するために変換される。
【０１９６】
これらのＢＲＣ値は、比較器によって、前回の出力画素の４つのＢＲＣ値セットのほか、その上の出力ラインにおける３つの隣接画素の４つのＢＲＣ値セットと比較される。一致がある場合、すなわちＢＲＣ値が要求済みである場合は、対応するＩＤが再利用される。一致がない場合、すなわちＢＲＣ値が未要求の場合は、４つのＩＤリストのうちの１つによって次に必要なＩＤが生成され、それに伴うＳＤＲＡＭ要求によって、そのメモリから関連する画素ブロックが取り出される。各ＩＤリストは、双線形補間回路の４つの所要画素が４つのブロック間の境界を跨ぐ場合のように、最大４つまでの異なるブロックが一度にアクセス可能となるように、異なるブロックパターンに割り当てられている。
【０１９７】
４つのＩＤおよび座標（ＷＸ、ＷＹ）は、１ライン遅延２３０６に供給される。これらの値は、後続の出力ラインを処理する際の比較のため比較器に戻され、各キャッシュメモリ領域（０、１、２、３）で必要な４つの整数座標画素を取り出すためにキャッシュ読み出し部に渡される。そして、これら４つの整数画素値を用いることにより、補間器２３０８で双線形補間を行って、最終的に補間された単一の画素を生成することができる。
【０１９８】
以上、複数の具体的な実施例を参照して本発明の特定の態様を説明したが、当業者であれば、本発明の趣旨と範囲から逸脱することなく、本発明に対する多くの変更が可能であることが分かるであろう。たとえば、様々な方法に関連して、種々の回路、メモリ、および関連する構成要素を実装してもよく、１または複数のコンピュータ、プログラマブル回路、実行により工程をコンピュータに行わせる命令を含むプロセッサ可読媒体等が挙げられる。本発明の態様は、以下の特許請求の範囲にて規定される。
【図１】
0005663009.tif 000002
【図２】
0005663009.tif 000003
【図３】
0005663009.tif 000004
【図４】
0005663009.tif 000005
【図５】
0005663009.tif 000006
【図６】
0005663009.tif 000007
【図７】
0005663009.tif 000008
【図８】
0005663009.tif 000009
【図９】
0005663009.tif 000010
【図１０】
0005663009.tif 000011
【図１１】
0005663009.tif 000012
【図１２】
0005663009.tif 000013
【図１３】
0005663009.tif 000014
【図１４】
0005663009.tif 000015
【図１５】
0005663009.tif 000016
【図１６】
0005663009.tif 000017
【図１７】
0005663009.tif 000018
【図１８】
0005663009.tif 000019
【図１９】
0005663009.tif 000020
【図２０】
0005663009.tif 000021
【図２１】
0005663009.tif 000022
【図２２】
0005663009.tif 000023
【図２３】
0005663009.tif 000024