(57)【特許請求の範囲】
【請求項１】
複数の変換前画素値を記憶するメインメモリと、複数のキャッシュブロックを有するキャッシュメモリとに接続される画像処理装置であって、
所定の実行順に従って変換後座標を決定するカウンタと、
前記変換後座標に対応する変換後画素値の計算に必要な複数の変換前画素値の変換前座標を決定する座標決定部と、
前記メインメモリに記憶された複数の変換前画素値をそれぞれ、前記変換前座標に応じたキャッシュブロックへ転送するメモリコントローラと、
前記複数のキャッシュブロックから、前記変換後画素値の計算に必要な全ての変換前画素値を１回のキャッシュアクセスで読み出すキャッシュアクセス部と、
前記キャッシュアクセス部が読み出した変換前画素値を参照して、前記変換後画素値を計算する画素値計算部と、
前記変換後画素値を出力する出力部と、を備え、
前記キャッシュメモリは、シングルポートのＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であることを特徴とする画像処理装置。
【請求項２】
前記キャッシュブロックは、第１乃至第４キャッシュブロックを備え、
前記メモリコントローラは、水平方向の第１座標値及び垂直方向の第２座標値の偶数及び奇数の組み合わせに基づいて、前記第１乃至第４キャッシュブロックの中から転送先となるキャッシュブロックを決定し、
前記画素値計算部は、前記第１乃至第４キャッシュブロックに記憶された変換前画素値を参照して前記変換後画素値を計算する、請求項１に記載の画像処理装置。
【請求項３】
前記メモリコントローラは、前記第１座標値及び前記第２座標値が偶数である第１変換前画素値を前記第１キャッシュブロックへ転送し、前記第１座標値が奇数且つ前記第２座標値が偶数である第２変換前画素値を前記第２キャッシュブロックへ転送し、前記第１座標値が偶数且つ前記第２座標値が奇数である第３変換前画素値を前記第３キャッシュブロックへ転送し、前記第１座標値及び前記第２座標値が奇数である第４変換前画素値を前記第４キャッシュブロックへ転送する、請求項２に記載の画像処理装置。
【請求項４】
複数の変換前画素値を記憶するメインメモリと、
複数のキャッシュブロックを有するキャッシュメモリと、
所定の実行順に従って変換後座標を決定するカウンタと、
前記変換後座標に対応する変換後画素値の計算に必要な複数の変換前画素値の変換前座標を決定する座標決定部と、
前記メインメモリに記憶された複数の変換前画素値をそれぞれ、前記変換前座標に応じたキャッシュブロックへ転送するメモリコントローラと、
前記複数のキャッシュブロックから、前記変換後画素値の計算に必要な全ての変換前画素値を１回のキャッシュアクセスで読み出すキャッシュアクセス部と、
前記キャッシュアクセス部が読み出した変換前画素値を参照して、前記変換後画素値を計算する画素値計算部と、
前記変換後画素値を出力する出力部と、を備え、
前記キャッシュメモリは、シングルポートのＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であることを特徴とする画像処理システム。
【請求項５】
前記キャッシュブロックは、第１乃至第４キャッシュブロックを備え、
前記メモリコントローラは、水平方向の第１座標値及び垂直方向の第２座標値の偶数及び奇数の組み合わせに基づいて、前記第１乃至第４キャッシュブロックの中から転送先となるキャッシュブロックを決定し、
前記メモリコントローラは、前記第１座標値及び前記第２座標値が偶数である第１変換前画素値を前記第１キャッシュブロックへ転送し、前記第１座標値が奇数且つ前記第２座標値が偶数である第２変換前画素値を前記第２キャッシュブロックへ転送し、前記第１座標値が偶数且つ前記第２座標値が奇数である第３変換前画素値を前記第３キャッシュブロックへ転送し、前記第１座標値及び前記第２座標値が奇数である第４変換前画素値を前記第４キャッシュブロックへ転送する、請求項４に記載の画像処理システム。
【請求項６】
前記メモリコントローラは、前記第１座標値及び前記第２座標値が偶数である第１変換前画素値を前記第１キャッシュブロックへ転送し、前記第１座標値が奇数且つ前記第２座標値が偶数である第２変換前画素値を前記第２キャッシュブロックへ転送し、前記第１座標値が偶数且つ前記第２座標値が奇数である第３変換前画素値を前記第３キャッシュブロックへ転送し、前記第１座標値及び前記第２座標値が奇数である第４変換前画素値を前記第４キャッシュブロックへ転送する、請求項５に記載の画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、画像処理装置、画像処理システム及び画像処理方法に関する。
【背景技術】
【０００２】
従来の画像処理装置は、メインメモリに記憶された変換前画像データの変換前画素値を参照して変換後画素値を計算する。このような画像処理装置は、メインメモリへのアクセス回数を低減するために、変換前画素値を記憶可能なキャッシュメモリを備え、変換後画素値を計算する時に、まずキャッシュメモリに変換前画素値が記憶されているか否かを確認する。変換前画素値が記憶されている場合、画像処理装置は、キャッシュメモリに記憶された変換前画素値を参照して変換後画素値を計算する。一方、変換前画素値が記憶されていない場合、画像処理装置は、変換後画素値の計算に必要な変換前画素値をメインメモリからキャッシュメモリへ転送する。
【０００３】
シングルポートのＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用してキャッシュメモリを構成した場合、複数の変換前画素値がそれぞれ異なるキャッシュラインに記憶されるので、変換後画素値の計算に必要な全ての変換前画素値を読み出すのに複数回のキャッシュアクセスが必要である。その結果、画像処理装置の処理効率が低下する。
【０００４】
これに対して、変換後画素値の計算に必要な全ての変換前画素値を、複数の変換前画素値がそれぞれ異なるキャッシュラインに記憶されていても、１回のキャッシュアクセスで読み出すことができれば、画像処理装置の処理効率が向上する。
【０００５】
例えば、参照する変換前画素値の数に応じたポートを持つマルチポートのＳＲＡＭを使用してキャッシュメモリを構成すれば、１回のキャッシュアクセスで全ての変換前画素値を読み出すことができる。しかしながら、マルチポートのＳＲＡＭの読み出し速度は、シングルポートのＳＲＡＭより遅いので、画像処理装置を構成する回路の動作周波数が低下し、結果として、画像処理装置の処理効率が低下してしまう。また、参照する変換前画素値の数が多い場合（例えば３個以上の場合）には、その数に応じたポートが必要である。一般に、ＳＲＡＭのコストはポートの数に応じて増加するので、変換前画素値の数に応じたポートを持つＳＲＡＭを使用すると、画像処理装置のコストも増加してしまう。
【０００６】
すなわち、ＳＲＡＭを使用してキャッシュメモリを構成すると画像処理装置の処理効率が低下する。また、マルチポートのＳＲＡＭを使用してキャッシュメモリを構成した場合、画像処理装置のコストが増加する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−７２８３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、シングルポートのＳＲＡＭを使用して画像処理装置の処理効率を改善することである。
【課題を解決するための手段】
【０００９】
本実施形態の画像処理装置は、複数の変換前画素値を記憶するメインメモリと、複数のキャッシュブロックを有するキャッシュメモリとに接続される。画像処理装置は、カウンタと、座標決定部と、メモリコントローラと、キャッシュアクセス部と、画素値計算部と、出力部と、を備える。カウンタは、所定の実行順に従って変換後座標を決定する。座標決定部は、変換後座標に対応する変換後画素値の計算に必要な複数の変換前画素値の変換前座標を決定する。メモリコントローラは、メインメモリに記憶された複数の変換前画素値をそれぞれ、変換前座標に応じたキャッシュブロックへ転送する。キャッシュアクセス部は、複数のキャッシュブロックから、変換後画素値の計算に必要な全ての変換前画素値を１回のキャッシュアクセスで読み出す。画素値計算部は、キャッシュアクセス部が読み出した変換前画素値を参照して、変換後画素値を計算する。出力部は、変換後画素値を出力する。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の画像処理システム１のブロック図。
【図２】本実施形態の画像データのデータ構造の概略図。
【図３】本実施形態の画像処理装置１０、キャッシュメモリ２０及びメインメモリ３０のブロック図。
【図４】本実施形態の第１〜第４キャッシュブロック２１〜２４のブロック図。
【図５】本実施形態の第１〜第４キャッシュブロック２１〜２４のキャッシュラインＣＬｉに記憶される変換前画素値の説明図。
【図６】本実施形態の画像処理のフローチャート。
【図７】本実施形態のデータ転送のフローチャート。
【図８】本実施形態の画素値分類の説明図。
【図９】本実施形態の画素値分類の説明図。
【図１０】本実施形態の変換要求発行のフローチャート。
【図１１】本実施形態の第１キャッシュ保証のフローチャート。
【図１２】本実施形態の画像変換のフローチャート。
【図１３】本実施形態の第２キャッシュ保証のフローチャート。
【図１４】本実施形態の変形例の画素値分類の説明図。
【図１５】本実施形態の変形例の画素値分類の説明図。
【発明を実施するための形態】
【００１１】
本実施形態の画像処理システム１の構成について説明する。図１は、本実施形態の画像処理システム１のブロック図である。図２は、本実施形態の画像データのデータ構造の概略図である。
【００１２】
図１の画像処理システム１は、画像処理装置１０と、キャッシュメモリ２０と、メインメモリ３０と、入出力インタフェース４０と、外部バス５１と、内部バス５２と、画像生成装置６０と、ネットワーク７０と、を備える。画像処理装置１０は、複数の画素値を有する画像データに所定の画像処理を施す半導体集積回路である。画像処理装置１０は、外部バス５１を介して、メインメモリ３０及び入出力インタフェース４０に接続され、内部バス５２を介して、キャッシュメモリ２０に接続される。変換パターンは、ユーザによる設定又は画像生成装置６０の機能を実現するアプリケーションによって決められる。キャッシュメモリ２０は、変換前画素値をキャッシュライン単位で記憶する。キャッシュメモリ２０は、例えば、シングルポートのＳＲＡＭである。メインメモリ３０は、画像データを記憶する。メインメモリ３０は、例えば、ＤＲＡＭ（Ｄｉｎａｍｙｃ  Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。入出力インタフェース４０は、画像生成装置６０と、ネットワーク７０と、に接続される。画像生成装置６０は、画像データを生成する半導体集積回路（例えば車載カメラ）である。ネットワーク７０は、例えば有線ネットワーク又は無線ネットワークである。
【００１３】
図２（Ａ）に示すように、画像データは、複数の画素値から構成される。各画素値は、色情報（例えば、色調及び階調を表す情報）を含む。画像処理は、所定の変換パターン（例えば、回転、左右反転、上下反転、拡大、縮小、及び歪み補正）に基づいて、画像の形状を変換する処理である。図２（Ｂ）は、変換前画像データを時計回りに９０°回転させる変換パターンを示す。
【００１４】
本実施形態の画像処理装置１０の構成について説明する。図３は、本実施形態の画像処理装置１０、キャッシュメモリ２０及びメインメモリ３０のブロック図である。画像処理装置１０は、画像処理ブロックと、メモリコントローラ１８と、を備える。画像処理ブロックは、カウンタ１１と、座標決定部１２と、タグチェッカ１３と、バッファ１４と、キャッシュアクセス部１５と、画素値計算部１６と、出力部１７と、を備える。キャッシュメモリ２０は、第１〜第４キャッシュブロック２１〜２４を備える。メインメモリ３０は、第１領域３１と、第２領域３２と、を備える。第１領域３１には、複数の変換前画素を含む変換前画像データがラスタスキャン順に予め記憶されている。第２領域３２には、画像処理装置１０が生成した複数の変換後画素値を含む変換後画像データが記憶される。
【００１５】
メモリコントローラ１８は、メインメモリ３０の第１領域３１に記憶された変換前画素値を変換前座標に応じたキャッシュブロック（第１〜第４キャッシュブロック２１〜２４の何れか）へ転送する。画像処理ブロックは、第１〜第４キャッシュブロック２１〜２４に記憶された変換前画素値を参照して変換後画素値を計算する。メモリコントローラ１８は、画像処理ブロックが計算した変換後画素値をメインメモリ３０の第２領域３２へ転送する。これにより、変換後画像データがメインメモリ３０に記憶される。
【００１６】
本実施形態の第１〜第４キャッシュブロック２１〜２４の構成について説明する。図４は、本実施形態の第１〜第４キャッシュブロック２１〜２４のブロック図である。第１〜第４キャッシュブロック２１〜２４はそれぞれ、複数のキャッシュラインＣＬｉ（ｉ＝１〜ｎ（ｎは２以上の整数））と、複数のタグ領域Ｔｉと、を備える。キャッシュラインＣＬｉには、キャッシュラインサイズ分の変換前画素値が記憶される。キャッシュラインサイズは、偶数個の画素値を格納可能なサイズである。タグ領域Ｔｉには、タグと、キャッシュライン情報とが記憶される。タグは、キャッシュラインＣＬｉに記憶される複数の変換前画素値を特定する情報である。キャッシュライン情報は、キャッシュラインＣＬｉの状態を示す情報である。例えば、キャッシュライン情報は、キャッシュラインＣＬｉがフェッチ中であるか否かと、キャッシュラインＣＬｉに記憶されている変換前画素値が有効である（すなわち、変換後画素値の計算に必要な変換前画素値が記憶されている）か否かと、を示す情報である。
【００１７】
カウンタ１１は、所定の実行順に従って変換後座標を決定する。変換後座標は、第２領域３２のアドレスと１対１に対応する。座標決定部１２は、１個の変換後座標から、その変換後座標と対応する変換前画像における１個の座標（以下、「対応座標」という）を計算し、１個の対応座標から複数の変換前座標を決定する。対応座標は、変換前座標を特定するための基準となる座標であり、小数値をとり得る。変換前座標は、対応座標の周辺に位置する整数値の座標である。変換前座標の数は、画素値計算アルゴリズムに依存する。タグチェッカ１３は、タグ領域Ｔｉをチェックして、変換後画素値の計算を要求する変換要求をバッファ１４に書き込む。バッファ１４は、キャッシュアクセス部１５が参照するまで、変換要求を保持する。キャッシュアクセス部１５は、対応座標に基づいて変換後画素値の計算に必要な変換前画素値の変換前座標を特定し、変換前座標に基づいてタグ領域Ｔｉをチェックして、キャッシュラインＣＬｉに記憶された変換前画素値を読み出す。例えば、キャッシュアクセス部１５は、１個の対応座標から４つの変換前座標を特定する。画素値計算部１６は、変換前画素値を参照して変換後画素値を計算する。出力部１７は、変換後画素値をメモリコントローラ１８へ出力する。メモリコントローラ１８は、第１領域３１に記憶された変換前画素値を第１〜第４キャッシュブロック２１〜２４へ転送する。また、メモリコントローラ１８は、出力部１７が出力した変換後画素値を第２領域３２へ転送する。
【００１８】
本実施形態の第１〜第４キャッシュブロック２１〜２４のキャッシュラインＣＬｉに記憶される変換前画素値について説明する。図５は、本実施形態の第１〜第４キャッシュブロック２１〜２４のキャッシュラインＣＬｉに記憶される変換前画素値の説明図である。第１領域３１には、キャッシュラインサイズ分の変換前画素値（以下、「画素パッケージ」という）が記憶される。
【００１９】
第１キャッシュブロック２１の各キャッシュラインＣＬｉには、変換前画像内で垂直方向（Ｙ方向）に偶数座標、水平方向（Ｘ方向）に偶数座標の変換前画素値が、メインメモリ３０上での並び順でキャッシュラインサイズ分だけ記憶される。この第１キャッシュブロック２１のあるキャッシュラインに格納されうる画素値の集合を、第１画素パッケージＰＡＣ１ｊ（（ｊ＝１〜ｍ（ｍは２以上の整数））とする。
【００２０】
第２キャッシュブロック２２の各キャッシュラインＣＬｉには、変換前画像内で垂直方向（Ｙ方向）に偶数座標、水平方向（Ｘ方向）に奇数座標の画素値が、メインメモリ３０上での並び順でキャッシュラインサイズ分だけ記憶される。この第２キャッシュブロック２２のあるキャッシュラインに格納されうる画素値の集合を、第２画素パッケージＰＡＣ２ｊとする。
【００２１】
第３キャッシュブロック２３の各キャッシュラインＣＬｉには、変換前画像内で垂直方向（Ｙ方向）に奇数座標、水平方向（Ｘ方向）に偶数座標の画素値が、メインメモリ３０上での並び順でキャッシュラインサイズ分だけ記憶される。この第３キャッシュブロック２３のあるキャッシュラインに格納されうる画素値の集合を、第３画素パッケージＰＡＣ３ｊとする。
【００２２】
第４キャッシュブロック２４の各キャッシュラインＣＬｉには、変換前画像内で垂直方向（Ｙ方向）に奇数座標、水平方向（Ｘ方向）に奇数座標の画素値が、メインメモリ３０上での並び順でキャッシュラインサイズ分だけ記憶される。この第４キャッシュブロック２４のあるキャッシュラインに格納されうる画素値の集合を、第４画素パッケージＰＡＣ４ｊとする。
【００２３】
キャシュブロック内のキャッシュラインの数ｎが画素パッケージの数ｍより少ない場合、ある画素パッケージｍは、（ｍ％ｎ）番目のキャッシュラインに格納される。ここで、（ｍ％ｎ）は、ｍをｎで割ったときの余りである。
【００２４】
このため、あるキャッシュラインＣＬｉには複数の画素パッケージＰＡＣｊが記憶され得る。例えば、“ｎ＝５”且つ“ｍ＝１０”の場合、キャッシュラインＣＬ１には、画素パッケージＰＡＣ１又はＰＡＣ６が記憶され、キャッシュラインＣＬ２には、画素パッケージＰＡＣ２又はＰＡＣ７のどちらかが記憶される。この場合、キャッシュラインＣＬｉには２種類の画素パッケージが記憶され得る。
【００２５】
このように、あるキャッシュラインＣＬｉには複数の画素パッケージが記憶され得る。このためタグＴｉに、キャッシュラインＣＬｉに格納されている画素パッケージを特定するタグ（例えば（ｊ／ｎ））が格納される。ここで、（ｊ／ｎ）は、ｊをｎで割ったときの商の小数を切り捨てた値である。
【００２６】
本実施形態の画像処理装置１０の動作について説明する。図６は、本実施形態の画像処理のフローチャートである。画像処理ブロックは、変換要求発行（Ｓ６０２）と、画像変換（Ｓ６１２）と、を並行して実行する。Ｓ６０２は、Ｓ６１２に対して、所定の画素数の分だけ先行して実行される。この所定の画素数は、１キャッシュラインに記憶される画素値の数とほぼ同数であるが、これに限られるものではなく、１〜ｋ（ｋは、バッファ１４に記憶可能な画素値の数）画素であればよい。Ｓ６０２及びＳ６１２は、全ての変換前画素値についてＳ６１２が終了するまで繰り返し実行される（Ｓ６０４−ＮＯ）。全ての変換前画素値についてＳ６１２が終了すると（Ｓ６０４−ＹＥＳ）、画像処理が終了する。
【００２７】
図７は、本実施形態のフェッチ処理のフローチャートである。フェッチ処理は、第１記憶領域３１に記憶された変換前画素を変換前座標に応じた第１〜第４キャッシュブロック２１〜２４へ転送する処理であって、フェッチ要求が発行されたときに実行される。
【００２８】
＜Ｓ７００＞  メモリコントローラ１８は、フェッチ要求により、第１領域３１から２つのキャッシュラインサイズ分の変換前画素値を取得し、取得した複数の変換前画素値を画素パッケージにまとめる。この時、メモリコントローラ１８は、変換前画像の端部から、連続する２つキャッシュラインサイズ分の画素値毎に変換前画像を分割して画像処理ブロックを生成する。画像処理ブロックは、フェッチ要求に含まれる変換前座標に対応する変換前画素値を含み、２つキャッシュラインサイズ分の連続する画素値で構成される。
【００２９】
＜Ｓ７０２＞  メモリコントローラ１８は、変換前座標に応じて変換前画素値を第１〜第４変換前画素値Ｐ１〜Ｐ４に分類する。図８及び９は、本実施形態の画素値分類の説明図である。第１〜第４変換前画素値Ｐ１〜Ｐ４は、それぞれ第１〜第４変換前座標を有する。第１〜第４変換前座標は、それぞれ変換前画像領域の水平方向の第１座標値（以下、「Ｘ座標」という）と、変換前画像領域の垂直方向の第２座標値（以下、「Ｙ座標」という）からなる。例えば、第１変換前画素値Ｐ１の第１変換前座標はＸ座標及びＹ座標が偶数であり、第２変換前画素値Ｐ２の第２変換前座標はＸ座標が奇数且つＹ座標が偶数であり、第３変換前画素値Ｐ３の第３変換前座標はＸ座標が偶数且つＹ座標が奇数であり、第４変換前画素値Ｐ４の第４変換前座標はＸ座標及びＹ座標が奇数である。
【００３０】
＜Ｓ７０４＞  メモリコントローラ１８は、取得した２つキャッシュラインサイズ分の連続する画素値を、変換前座標に応じて、それぞれ第１〜第４画素パッケージＰＡＣ１ｊ〜ＰＡＣ４ｊにまとめる。
【００３１】
＜Ｓ７０６＞  メモリコントローラ１８は、変換前座標に応じて第１〜第４キャッシュブロック２１〜２４を、それぞれ第１〜第４画素パッケージＰＡＣ１ｊ〜ＰＡＣ４ｊの転送先キャッシュブロックとして決定する。 例えば、メモリコントローラ１８は、第１変換前座標を有する複数の第１変換前画素値Ｐ１から構成される第１画素パッケージＰＡＣ１ｊの転送先キャッシュブロックを第１キャッシュブロック２１に決定し、第３変換前座標を有する複数の第３変換前画素値Ｐ３から構成される画素パッケージＰＡＣ３ｊの転送先キャッシュブロックを第３キャッシュブロック２３に決定する。 
＜Ｓ７０２＞  メモリコントローラ１８は、第１〜第４画素パッケージＰＡＣ１ｊ〜ＰＡＣ４ｊを、それぞれ転送先として決定した第１〜第４キャッシュブロック２１〜２４の何れかへ転送する。各画素パッケージが格納されるキャッシュラインの番号ｉは、ｊ％ｎである。ここで、ｎはキャシュブロック内のキャッシュラインの数であり、ｊは画素パッケージの番号であり、ここで、（ｊ％ｎ）は、ｊをｎで割ったときの余りである。これにより、変換前座標に応じた第１〜第４キャッシュブロック２１〜２４に、変換後画素値の計算に必要な変換前画素値が記憶される。
【００３２】
＜Ｓ７０４＞  メモリコントローラ１８は、各画素パッケージの転送先である各キャッシュブロックの各キャッシュラインＣＬｉに関連付けられたタグ領域Ｔｉに、タグ及びキャッシュライン情報を設定する。タグには、キャッシュラインＣＬｉに記憶される複数の変換前画素値（すなわち、画素パッケージ）を特定する情報として、ｊ／ｎが設定される。これにより、キャッシュアクセス部１５が、第１〜第４キャッシュブロック２１〜２４に記憶された第１〜第４変換前画素値Ｐ１〜Ｐ４を参照可能になる。
【００３３】
本実施形態の変換要求発行について説明する。図１０は、本実施形態の変換要求発行のフローチャートである。図１１は、本実施形態の第１キャッシュ保証のフローチャートである。変換要求発行は、変換前座標及び変換後座標を含む変換要求を発行する処理である。第１キャッシュ保証は、変換要求発行において、有効な変換前画素がキャッシュメモリ２０に記憶されていること、又はキャッシュラインＣＬｉがフェッチ中であることを保証する処理である。
【００３４】
＜Ｓ１００１＞  カウンタ１１は、バッファ１４がフルであるか否かを判定する。バッファ１４がフルでない場合（Ｓ１００１−ＮＯ）、すなわち、バッファ１４に空き領域がある場合、Ｓ１００２へ進む。バッファ１４がフルである場合（Ｓ１００１−ＹＥＳ）、バッファ１４に空きができるまで待機する。
【００３５】
＜Ｓ１００２＞  カウンタ１１は、所定の実行順に従って変換後座標を決定する。変換後座標は、第２領域３２のアドレスに１対１に対応するので、変換後座標が決定すると、変換後画素を記憶すべき第２領域３２のアドレスが決定する。実行順は、変換パターンにより決定する。具体的には、カウンタ１１は、入出力インタフェース４０を介して取得した変換パターンに対応する座標計算アルゴリズムを用いて、変換後座標を更新する。すなわち、変換後座標は、変換パターンに応じた実行順に従ってシフトする。
【００３６】
＜Ｓ１００３＞  座標決定部１２は、変換後画素値の計算に必要な変換前画素値（すなわち、有効な変換前画素値）の変換前座標を特定するための、対応座標を計算する。座標決定部１２は、変換パターンに応じた変換後座標から対応座標を求める変換式を使う。座標決定部１２は、例えば、回転、縮小、拡大、及び並行移動等の変換パターンに応じた変換式（例えば、式１）と、変換後座標と、を用いて変換前座標を計算する。式１において、Ｘ１及びＹ１は対応座標であり、Ｘ２及びＹ２は変換後座標である。Ａ〜Ｆは変換パラメータであり、変換パターンにより異なる。そして、座標決定部１２は、対応座標の周囲の整数座標を変換前座標に決定する。
【数１】
0005658612.tif 000002
【００３７】
＜Ｓ１００４＞  タグチェッカ１３は、決定した変換前座標毎に、有効な変換前画素値が第１〜第４キャッシュブロック２１〜２４に記憶されているか否かを確認する。第１キャッシュ保証は、図１１に従って実行される。
【００３８】
＜Ｓ１１００及びＳ１１０２＞  タグチェッカ１３は、Ｓ７００と同様に、チェックすべきキャッシュブロックを決定する（Ｓ１１００）。次に、タグチェッカ１３は、タグ領域Ｔｉのタグに基づいて、有効な変換前画素値が第１〜第４キャッシュブロック２１〜２４に記憶されているか否かを判定する（Ｓ１１０２）。具体的には、参照すべき各変換前画素値の変換前座標に基づいて、キャッシュブロックと、キャッシュブロック内のキャッシュラインＣＬｉとを特定し、そのキャッシュラインＣＬｉと対応するタグ領域Ｔｉのタグ及びキャッシュライン情報に基づいて、有効な変換前画素値がキャッシュブロックに記憶されているか否かを判定する。有効な変換前画素値が記憶されていないと判定されると（Ｓ１１０２−ＮＯ）、Ｓ１１０４へ進む。有効な変換前画素値が記憶されていると判定されると（Ｓ１１０２−ＹＥＳ）、Ｓ１１０８へ進む。
【００３９】
例えば、タグチェッカ１３は、式２を用いて、画素パッケージの番号ｊを計算する。式２において、ｘ及びｙは変換前座標であり、ｗは変換前画像のＸ方向の画素値の数であり、ｐは画素パッケージに含まれる画素値の数であり、ｎはキャッシュブロックに格納されている画素パッケージの数である。その結果、画素パッケージＰＡＣｊが格納されるべきキャッシュブロックのキャッシュラインＣＬｉの番号ｉは、ｊ％ｎとなる。
【数２】
0005658612.tif 000003
【００４０】
そして、タグチェッカ１３は、キャッシュラインＣＬｉに対応するタグＴｉに格納されているタグがｊ／ｎの場合、有効な変換前画素値がキャッシュブロックに記憶されていると判定する。
【００４１】
＜Ｓ１１０４＞  タグチェッカ１３は、タグ領域Ｔｉのキャッシュライン情報に基づいて、第１〜第４キャッシュブロック２１〜２４のキャッシュラインＣＬｉがフェッチ中か否であるかを判定する。キャッシュラインＣＬｉがフェッチ中でない場合（Ｓ１１０４−ＮＯ）、Ｓ１１０６へ進む。キャッシュラインＣＬｉがフェッチ中である場合（Ｓ１１０４−ＹＥＳ）、Ｓ１１０８へ進む。
【００４２】
＜Ｓ１１０６＞  タグチェッカ１３は、第１フェッチ要求を発行する。第１フェッチ要求は、キャッシュライン情報を「フェッチ中」に更新すると同時に、図７のフェッチ処理をメモリコントローラ１８に要求する信号である。メモリコントローラ１８は、フェッチ要求に従ってフェッチ処理を実行し、第１記憶領域３１に記憶された変換前画素値を第１〜第４キャッシュブロック２１〜２４へ転送する。タグチェッカ１３は、第１フェッチ要求を発行すると、メインメモリ３０へのアクセスの終了を待たずに、Ｓ１１０８を実行する。
【００４３】
＜Ｓ１１０８＞  タグチェッカ１３は、変換要求を発行する。変換要求は、Ｓ１００２で決定された変換後座標と、Ｓ１００３で決定された変換前座標と、を含む。変換要求は、変換後座標に対応する変換後画素値の計算を画像処理ブロックに要求する命令である。発行された変換要求は、キャッシュアクセス部１５が読み出すまでバッファ１４に保持される。Ｓ１１０８が終了すると、第１キャッシュ保証が終了し、Ｓ１００５へ進む。
【００４４】
＜Ｓ１００５＞  全ての変換前画素値について第１キャッシュ保証が終了するまで（Ｓ１００５−ＮＯ）、Ｓ１００１〜Ｓ１００４は繰り返し実行される。全ての変換前画素値について第１キャッシュ保証が終了すると（Ｓ１００５−ＹＥＳ）、変換要求発行が終了し、Ｓ６０４へ進む。
【００４５】
次に、本実施形態の画像変換について説明する。図１２は、本実施形態の画像変換のフローチャートである。図１３は、本実施形態の第２キャッシュ保証のフローチャートである。画像変換は、第１〜第４キャッシュブロック２１〜２４に記憶された変換前画素値を参照して変換後画素値を計算する処理である。第２キャッシュ保証は、画像変換において、有効な変換前画素値が第１〜第４キャッシュブロック２１〜２４に記憶されていることを保証する処理である。
【００４６】
＜Ｓ１２０１＞  バッファ１４が空ではない（つまり、バッファ１４に変換要求がある）場合（Ｓ１２０１−ＮＯ）、すなわち、バッファ１４に少なくとも１つの変換要求がある場合、Ｓ１２０２へ進む。バッファ１４が空である（つまり、バッファ１４に要求がない）場合（Ｓ１２０１−ＹＥＳ）、バッファ１４が空ではなくなった後に、Ｓ１２０２へ進む。
【００４７】
＜Ｓ１２０２＞  キャッシュアクセス部１５は、第１キャッシュ保証でバッファ１４に保持された変換要求で参照すべき変換前座標に対応する変換前画素値が第１〜第４キャッシュブロック２１〜２４に記憶されている場合、変換前画素値を第１〜第４キャッシュブロック２１〜２４から読み出す。第２キャッシュ保証は、図１３に従って実行される。
【００４８】
＜Ｓ１３００及びＳ１３０２＞  キャッシュアクセス部１５は、Ｓ７００と同様に、チェックすべきキャッシュブロックを決定する（Ｓ１３００）。次に、キャッシュアクセス部１５は、タグ領域Ｔｉのタグに基づいて、有効な変換前画素値が第１〜第４キャッシュブロック２１〜２４に記憶されているか否かを判定する（Ｓ１３０２）。具体的には、参照すべき各変換前画素値の変換前座標に基づいて、キャッシュブロックと、キャッシュブロック内のキャッシュラインとを特定し、特定したキャッシュラインＣＬｉと対応するタグ領域Ｔｉのタグ及びキャッシュライン情報に基づいて、有効な変換前画素値がキャッシュブロックに記憶されているか否かを判定する。有効な変換前画素値が記憶されていないと判定されると（Ｓ１３０２−ＮＯ）、Ｓ１３０４へ進む。有効な変換前画素値が記憶されていると判定されると（Ｓ１３０２−ＹＥＳ）、Ｓ１３０８へ進む。
【００４９】
＜Ｓ１３０４＞  キャッシュアクセス部１５は、キャッシュライン情報に基づいて、キャッシュラインＣＬｉがフェッチ中か否であるかを判定する。キャッシュラインＣＬｉがフェッチ中でない場合（Ｓ１３０４−ＮＯ）、Ｓ１３０６へ進む。キャッシュラインＣＬｉがフェッチ中である場合（Ｓ１３０４−ＹＥＳ）、Ｓ１３０２へ戻る。
【００５０】
＜Ｓ１３０６＞  キャッシュアクセス部１５は、第２フェッチ要求を発行する。第２フェッチ要求は、キャッシュラインをフェッチ中の状態に更新すると同時に、フェッチ処理をメモリコントローラ１８に要求する信号である。メモリコントローラ１８は、フェッチ処理を実行し、図７のフェッチ処理により第１記憶領域３１に記憶された変換前画素値を、変換前座標に応じた第１〜第４キャッシュブロック２１〜２４の何れかへ転送する。Ｓ１３０６が終了すると、Ｓ１３０２へ戻る。
【００５１】
＜Ｓ１３０８＞  キャッシュアクセス部１５は、１回のキャッシュアクセスで、第１〜第４キャッシュブロック２１〜２４に記憶された第１〜第４変換前画素値Ｐ１〜Ｐ４を読み出す。第１〜第４キャッシュブロック２１〜２４には、１個の変換後座標に対応する１個の対応座標から決定された４個の変換前座標（０，０）、（１，０）、（０，１）及び（１，１）に対応する第１〜第４変換前画素値Ｐ１〜Ｐ４が記憶される。この場合、キャッシュアクセス部１５は、第１キャッシュブロック２１に記憶された第１変換前画素値Ｐ１（０，０）と、第２キャッシュブロック２２に記憶された第２変換前画素値Ｐ２（１，０）と、第３キャッシュブロック２３に記憶された第３変換前画素値Ｐ３（０，１）と、第４キャッシュブロック２４に記憶された第４変換前画素値Ｐ４（１，１）を１回のキャッシュアクセスで読み出す。Ｓ１３０８が終了すると、第２キャッシュ保証が終了し、Ｓ１２０３へ進む。
【００５２】
＜Ｓ１２０３＞  画素値計算部１６は、第１〜第４キャッシュブロック２１〜２４から読み出された第１〜第４変換前画素値Ｐ１〜Ｐ４を参照して、変換後画素値を計算する。具体的には、画素値計算部１６は、入出力インタフェース４０を介して取得した変換パターンに対応する画素値計算アルゴリズムに従って第１〜第４変換前画素値Ｐ１〜Ｐ４を参照して、変換後画素値を計算する。画素値計算アルゴリズムは、例えば加重平均アルゴリズムである。
【００５３】
＜Ｓ１２０４＞  出力部１７は、Ｓ１２０３で計算された変換後画素値をメモリコントローラ１８へ出力する。メモリコントローラ１８は、バッファ１４に保持された変換要求の変換後座標に対応する第２領域３２のアドレスに、出力部１７が出力した変換後画素値を転送する。
【００５４】
＜Ｓ１２０５＞  全ての変換前画素値について第２キャッシュ保証が完了するまで（Ｓ１２０５−ＮＯ）、Ｓ１２０１〜Ｓ１２０４は繰り返し実行される。全ての変換前画素値について第２キャッシュ保証が完了すると（Ｓ１２０５−ＹＥＳ）、画像変換が終了し、Ｓ６０４へ進む。
【００５５】
なお、本実施形態では、４個の変換前画素値を参照して変換後画素値を計算する加重平均法の例について説明したが、本発明の範囲はこれに限られるものではない。本実施形態は、複数の変換前画素値を参照して変換後画素値を計算する任意の方法にも適用可能である。
【００５６】
例えば、Ｘ方向に４個且つＹ方向に４個（すなわち、１６個）の変換前画素値を参照して変換後画素値を計算するバイキュービック法の場合、キャッシュメモリ２０には、８個のキャッシュブロック（第１〜第８キャッシュブロック）が用意される。メモリコントローラ１８は、変換前座標に応じて、変換前画素値を８種類に分類する。図１４及び１５は、本実施形態の変形例の画素値分類の説明図である。例えば、Ｘ方向に４画素且つＹ方向に４画素の変換前画像データの場合、メモリコントローラ１８は、変換前画像データの変換前画素値を、Ｘ座標を１つのキャッシュラインに格納可能な画素数で除した時の商（Ｘ座標／キャッシュラインサイズ分の画素数）の偶数又は奇数と、Ｙ座標をＹ方向の参照画素数で除した時の剰余（Ｙ座標  ＭＯＤ  Ｙ方向の参照画素数）とに応じて、第１〜第８変換前画素値Ｐ１〜Ｐ８の何れかに分類する。例えば、第１、第３、第５、及び第７変換前画素値Ｐ１，Ｐ３，Ｐ５及びＰ７は、それぞれ、Ｘ座標を１つのキャッシュラインに格納可能な画素数で除した時の商が偶数であり、Ｙ座標を除したときの剰余が０〜３である。第２、第４、第６及び第８変換前画素値Ｐ２，Ｐ４，Ｐ６及びＰ８は、それぞれ、Ｘ座標を１つのキャッシュラインに格納可能な画素数で除した時の商が奇数であり、Ｙ座標を除したときの剰余が０〜３である。次に、メモリコントローラ１８は、第１〜第８キャッシュブロックを、それぞれ、第１〜第８変換前画素値Ｐ１〜Ｐ８から構成される画素パッケージの転送先キャッシュブロックとして決定する。
【００５７】
変換後画素値の計算には、Ｘ方向に連続する変換前画素値だけではなく、Ｙ方向に連続する変換前画素値も必要である。仮に、キャッシュラインＣＬｉに記憶される変換前画素値の配列が変換前画像データのＸ方向の配列と同じ場合、キャッシュラインＣＬｉには、Ｘ方向に連続する変換前画素値のみが記憶される。この場合、Ｘ方向に連続するキャッシュラインサイズ分の変換前画素値のみが、１回のキャッシュアクセスで参照可能である。すなわち、１回のキャッシュアクセスでは、変換後画素値の計算に必要な全ての変換前画素値を参照することはできない。
【００５８】
これに対して、本実施形態によれば、メモリコントローラ１８は、Ｘ座標のキャッシュラインサイズ分毎の位置と、Ｙ座標をＹ方向の参照画素数で除したときの剰余とに応じて転送先となるキャッシュブロックを決定する。変換前画素値は、変換前座標に応じたキャッシュブロックのキャッシュラインＣＬｉに記憶される。その結果、各キャッシュブロックのキャッシュラインＣＬｉにはＸ方向にキャッシュライン数分だけ連続する座標を待つ変換前画素値が記憶される。また、Ｙ方向に連続する変換前画素値は、それぞれ、２つおきの異なるキャッシュブロックに格納される。この場合、Ｘ方向にはキャシュラインサイズ分だけＸ方向に連続し、Ｙ方向にはキャッシュブロック数／２の数だけＹ方向に連続した座標を持つ複数の変換前画素値が、１回のキャッシュアクセスで参照可能である。
【００５９】
換言すると、本実施形態のメモリコントローラ１８は、変換前画素値を、複数のキャッシュブロックのキャッシュラインＣＬｉにＸ方向に連続して配列し、複数のキャッシュブロックにＹ方向に連続して配列するように、複数の変換前画素値をキャッシュブロックへ転送する。
【００６０】
なお、本実施形態では、第１キャッシュ保証又は第２キャッシュ保証は、省略可能である。メモリコントローラ１８は、第１キャッシュ保証が省略される場合、第２フェッチ要求が発行されたときだけフェッチ処理を実行し、第２キャッシュ保証が省略される場合、第２フェッチ要求が発行されたときだけフェッチ処理を実行する。
【００６１】
本実施形態の画像処理システム１の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、画像処理システム１の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
【００６２】
また、本実施形態の画像処理システム１の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
【００６３】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６４】
１  画像処理システム
１０  画像処理装置
１１  カウンタ
１２  座標決定部
１３  タグチェッカ
１４  バッファ
１５  キャッシュアクセス部
１６  画素値計算部
１７  出力部
１８  メモリコントローラ
２０  キャッシュメモリ
２１〜２４  第１〜第４キャッシュブロック
３０  メインメモリ
３１  第１領域
３２  第２領域
４０  入出力インタフェース
５１  外部バス
５２  内部バス
６０  画像生成装置
７０  ネットワーク
【図１】
0005658612.tif 000004
【図２】
0005658612.tif 000005
【図３】
0005658612.tif 000006
【図４】
0005658612.tif 000007
【図５】
0005658612.tif 000008
【図６】
0005658612.tif 000009
【図７】
0005658612.tif 000010
【図８】
0005658612.tif 000011
【図９】
0005658612.tif 000012
【図１０】
0005658612.tif 000013
【図１１】
0005658612.tif 000014
【図１２】
0005658612.tif 000015
【図１３】
0005658612.tif 000016
【図１４】
0005658612.tif 000017
【図１５】
0005658612.tif 000018