(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-23
(45)【発行日】2024-01-31
(54)【発明の名称】参照画像キャッシュメモリ、データ要求方法及びコンピュータプログラム
(51)【国際特許分類】
H04N 19/433 20140101AFI20240124BHJP
H04N 19/436 20140101ALI20240124BHJP
【FI】
H04N19/433
H04N19/436
(21)【出願番号】P 2020124424
(22)【出願日】2020-07-21
【審査請求日】2022-07-28
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(74)【代理人】
【識別番号】110001634
【氏名又は名称】弁理士法人志賀国際特許事務所
(72)【発明者】
【氏名】大森 優也
(72)【発明者】
【氏名】中村 健
(72)【発明者】
【氏名】小林 大祐
(72)【発明者】
【氏名】岩崎 裕江
(72)【発明者】
【氏名】佐藤 雅之
(72)【発明者】
【氏名】江川 隆輔
(72)【発明者】
【氏名】小林 広明
【審査官】岩井 健二
(56)【参考文献】
【文献】特開2016-143940(JP,A)
【文献】特開2015-119282(JP,A)
【文献】特開2013-157681(JP,A)
【文献】特開2012-195703(JP,A)
【文献】特開平11-328369(JP,A)
【文献】特開平11-215509(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
画像を符号化する際に用いられる参照画像キャッシュメモリであって、
データを記憶するキャッシュメモリと、
キャッシュミスが発生した際に前記キャッシュメモリに格納されているデータの一部を外部メモリに保存されているデータと置き換えるキャッシュ置換部と、
画像空間上で参照される可能性が高い画素領域をプリフェッチするプリフェッチ部と、
を備え、
前記プリフェッチ部は、前記画像空間上で参照される可能性が高い画素領域を優先度に応じて少なくとも優先度の高い第1の領域と、優先度の低い第2の領域とに分割し、前記キャッシュミスが発生したことに応じて前記外部メモリにデータを要求するためのキャッシュミスデータ送信要求がある場合、前記第1の領域に対応するデータを前記外部メモリに要求するための第1のデータ送信要求を前記外部メモリに送信した後に前記キャッシュミスデータ送信要求を前記外部メモリに送信し、前記キャッシュミスデータ送信要求の送信後に前記第2の領域に対応するデータを前記外部メモリに要求するための第2のデータ送信要求を前記外部メモリに送信する参照画像キャッシュメモリ。
【請求項2】
前記画像空間上で参照される可能性が高い画素領域は、符号化対象ブロックから所定の距離範囲内に位置する領域である、
請求項1に記載の参照画像キャッシュメモリ。
【請求項3】
前記符号化の処理はパイプライン処理で実行され、
前記プリフェッチ部は、パイプラインステージが更新されたことを示すパイプライン更新信号が入力されると、前記パイプライン更新信号に基づいて、符号化対象のブロックのフレーム内座標位置を算出し、算出した前記符号化対象のブロックのフレーム内座標位置に基づいて前記画像空間上で参照される可能性が高い画素領域を決定する、
請求項1又は2に記載の参照画像キャッシュメモリ。
【請求項4】
データを記憶するキャッシュメモリを備える、画像を符号化する際に用いられる参照画像キャッシュメモリが行うデータ要求方法であって、
キャッシュミスが発生した際にキャッシュメモリに格納されているデータの一部を外部メモリに保存されているデータと置き換えるキャッシュ置換ステップと、
画像空間上で参照される可能性が高い画素領域をプリフェッチするプリフェッチステップと、
を有し、
前記プリフェッチステップにおいて、前記画像空間上で参照される可能性が高い画素領域を優先度に応じて少なくとも優先度の高い第1の領域と、優先度の低い第2の領域とに分割し、前記キャッシュミスが発生したことに応じて前記外部メモリにデータを要求するためのキャッシュミスデータ送信要求がある場合、前記第1の領域に対応するデータを前記外部メモリに要求するための第1のデータ送信要求を前記外部メモリに送信した後に前記キャッシュミスデータ送信要求を前記外部メモリに送信し、前記キャッシュミスデータ送信要求の送信後に前記第2の領域に対応するデータを前記外部メモリに要求するための第2のデータ送信要求を前記外部メモリに送信するデータ要求方法。
【請求項5】
データを記憶するキャッシュメモリを備える、画像を符号化する際に用いられる参照画像キャッシュメモリとして機能するコンピュータに実行させるためのコンピュータプログラムであって、
キャッシュミスが発生した際にキャッシュメモリに格納されているデータの一部を外部メモリに保存されているデータと置き換えるキャッシュ置換ステップと、
画像空間上で参照される可能性が高い画素領域をプリフェッチするプリフェッチステップと、
をコンピュータに実行させ、
前記プリフェッチステップにおいて、前記画像空間上で参照される可能性が高い画素領域を優先度に応じて少なくとも優先度の高い第1の領域と、優先度の低い第2の領域とに分割し、前記キャッシュミスが発生したことに応じて前記外部メモリにデータを要求するためのキャッシュミスデータ送信要求がある場合、前記第1の領域に対応するデータを前記外部メモリに要求するための第1のデータ送信要求を前記外部メモリに送信した後に前記キャッシュミスデータ送信要求を前記外部メモリに送信し、前記キャッシュミスデータ送信要求の送信後に前記第2の領域に対応するデータを前記外部メモリに要求するための第2のデータ送信要求を前記外部メモリに送信するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、参照画像キャッシュメモリ、データ要求方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
映像符号化の技術には、MPEG(Moving Picture Experts Group)-2、MPEG-4、MPEG-4/AVC等の映像符号化方式が多く用いられている。最近では、次世代の映像符号化規格であるHEVC(High Efficiency Video Coding)が規格化され、今後の普及が見込まれている。HEVCは、従来の映像符号化方式であるMPEG-4/AVCの約2倍の符号化効率を達成する。符号化効率の向上に伴い、4K(3840画素×2160ライン)・8K(7680画素×4320ライン)といった空間解像度の高い映像についても符号化処理として扱われるようになっている。
【0003】
HEVC等の符号化規格では、別フレームとの動きを探索・推定し、補償するフレーム間符号化を行うことで符号化効率向上を図っている。フレーム間符号化では、入力画像と参照画像(特定フレームの符号化済画像)との間で、画素単位での差分累積値等が最も小さくなる座標を探索モジュールにおいて探索して動きベクトルを決定する。映像符号化装置では、決定された動きベクトルにしたがって、動きベクトル先の参照画像を用いて現符号化対象ブロックの画像を生成する動き補償処理を実行する。
【0004】
動き探索処理や動き補償処理で必要となる参照画像は、過去の符号化済みの画像群であるため全データサイズが非常に大きい。このため、映像符号化用LSI(Large-Scale Integrated circuit;大規模集積回路)の場合、LSIの内部に全ての参照画像データを格納することはできず、外部のメインメモリにデータを格納する必要がある。一方で、外部メインメモリは、LSIの演算処理に比べて高速動作性能に劣るため、データリクエスト時のアクセスのレイテンシが符号化演算性能に影響を与えうる。このため、LSIと外部のメインメモリとの性能差を埋めるべく、キャッシュメモリと呼ばれる小容量の高速動作が可能な一時記憶装置を、LSI内部に実装することが考えられる。
【0005】
参照画像データ専用のキャッシュメモリをLSI内部に実装することで、将来再利用されうる参照画像データを事前にキャッシュメモリに保持し、メモリアクセスレイテンシを隠蔽することが可能となる(例えば、非特許文献1参照)。動き探索処理や動き補償処理等の各機能ブロックが参照画像データを要求する場合、参照画像用のキャッシュメモリ内に要求データがあるか否か判定される。一般的に、参照画像用のキャッシュメモリ内に要求データがある場合にはヒットと呼ばれ、参照画像用のキャッシュメモリ内に要求データがない場合にはミスと呼ばれる。ヒットした場合は、キャッシュメモリから直接要求データを転送可能なため、外部メインメモリにアクセスする必要がなくアクセスレイテンシが隠蔽される。
【0006】
キャッシュメモリの構成方式として様々なものが提案されているが、その一つとしてLRU(Least Recently Used)アルゴリズムを用いたセットアソシアティブキャッシュが代表的である。セットアソシアティブキャッシュとは、キャッシュミス時にキャッシュメモリ内のラインを置換する際に、置換先候補をキャッシュ上のn通りの候補にのみ限定する方式であり、n-wayセットアソシアティブキャッシュと呼ばれる。LRUとは、n通りの置換先候補の中で、アクセスされてから最も長い時間経ったものを置換するアルゴリズムである。
【0007】
このようなキャッシュメモリ構成方式においては、キャッシュミスした場合のみ、メインメモリに対して新規データの要求信号が送信され、上記アルゴリズムに従って既存のラインが置換される。LRUアルゴリズムによって、データの時間的局所性がキャッシュメモリに反映される。時間的局所性とは、ある時点で参照されたリソースが近い将来にも再び参照される可能性が高いといった性質である。ラインサイズを一定の大きさにとることで、アドレスがアクセスデータと近いデータも同時にキャッシュへと格納され、データのアドレス空間上の局所性が反映される。
【先行技術文献】
【非特許文献】
【0008】
【文献】“Cache (computing)”、[online]、[令和2年6月9日検索]、インターネット<URL: https://en.wikipedia.org/wiki/Cache_(computing) >
【発明の概要】
【発明が解決しようとする課題】
【0009】
一方で、参照画像データのみが格納されるキャッシュメモリの場合、一般的な時間的局所性やアドレス空間上の局所性に並んで、フレーム内の座標位置による幾何学的空間局所性が非常に高い。幾何学的空間局所性とは、あるリソースが参照されたとき、その近傍のリソースが参照される可能性が高いといった性質である。特に、符号化対象の自ブロックの座標と、参照先のブロックの座標(以下「座標」を省略する)と、の座標間の幾何学的な距離関係はデータ再利用率と高い相関があり、自ブロックとの距離が近い参照画像の画素は動き探索・動き補償の対象になる傾向がある。そのため、データとしてアクセスされる可能性が高い。アドレス空間上の近さは、フレーム内座標位置としての幾何学的な近さとは一致しないため、キャッシュメモリのラインサイズの拡大では幾何学的空間局所性が反映されない。このため、従来のキャッシュメモリ構成では、参照画像データに固有の高い局所性を考慮することができない。その結果、自ブロックとの距離が近い参照画像データであってもキャッシュメモリ内に存在しない可能性がある。そのため、参照画像データ用キャッシュのヒット率が低下してしまうという問題があった。
【0010】
上記事情に鑑み、本発明は、参照画像データ用キャッシュのヒット率を向上させることができる技術の提供を目的としている。
【課題を解決するための手段】
【0011】
本発明の一態様は、画像を符号化する際に用いられる参照画像キャッシュメモリであって、データを記憶するキャッシュメモリと、キャッシュミスが発生した際に前記キャッシュメモリに格納されているデータの一部を外部メモリに保存されているデータと置き換えるキャッシュ置換部と、画像空間上で参照される可能性が高い画素領域をプリフェッチするプリフェッチ部と、を備える参照画像キャッシュメモリである。
【0012】
本発明の一態様は、データを記憶するキャッシュメモリを備える、画像を符号化する際に用いられる参照画像キャッシュメモリが行うデータ要求方法であって、キャッシュミスが発生した際にキャッシュメモリに格納されているデータの一部を外部メモリに保存されているデータと置き換えるキャッシュ置換ステップと、画像空間上で参照される可能性が高い画素領域をプリフェッチするプリフェッチステップと、を有するデータ要求方法である。
【0013】
本発明の一態様は、データを記憶するキャッシュメモリを備える、画像を符号化する際に用いられる参照画像キャッシュメモリとして機能するコンピュータに実行させるためのコンピュータプログラムであって、キャッシュミスが発生した際にキャッシュメモリに格納されているデータの一部を外部メモリに保存されているデータと置き換えるキャッシュ置換ステップと、画像空間上で参照される可能性が高い画素領域をプリフェッチするプリフェッチステップと、をコンピュータに実行させるためのコンピュータプログラムである。
【発明の効果】
【0014】
本発明により、参照画像データ用キャッシュのヒット率を向上させることが可能となる。
【図面の簡単な説明】
【0015】
【
図1】実施形態における映像符号化装置の内部構成を表す構成図である。
【
図2】第1の実施形態における外部メモリデータ要求部の機能構成を表すブロック図である。
【
図3】第1の実施形態におけるプリフェッチ用データ要求部の処理を説明するための図である。
【
図4】第1の実施形態におけるプリフェッチ用データ要求部の処理を説明するための図である。
【
図5】第1の実施形態におけるプリフェッチ用データ要求部の処理を説明するための図である。
【
図6】第1の実施形態における参照画像データ用キャッシュメモリの処理の流れを示すフローチャートである。
【
図7】第2の実施形態における外部メモリデータ要求部の機能構成を表すブロック図である。
【
図8】第2の実施形態におけるプリフェッチ用データ要求部の処理を説明するための図である。
【発明を実施するための形態】
【0016】
以下、本発明の一実施形態を、図面を参照しながら説明する。
(基本構成)
図1は、実施形態における映像符号化装置10の内部構成を表す構成図である。以下で用いる「符号化ブロック」については、MPEG-2やH.264/AVC規格ではマクロブロックの事を示し、HEVCについてはコーディングユニット(CU)又はプレディクションユニット(PU)の事を指し示すものとする。
【0017】
映像符号化装置10は、映像符号化LSI50及び外部メモリ900を備える。映像符号化LSI50と外部メモリ900とはバスを介して接続される。
映像符号化LSI50は、符号化対象の映像原信号を符号化規格に則って符号化処理を行う。
外部メモリ900は、映像符号化LSI50において用いられる参照画像データを始めとした各種データを格納する。外部メモリ900内の各種データのアドレス情報は映像符号化LSI50と共有されている。
【0018】
映像符号化LSI50は、符号化演算部100及び参照画像データ用キャッシュメモリ200を備える。
符号化演算部100は、動き探索や動き補償等の符号化演算処理を行う。符号化演算部100は、並列動作する複数のコア(core_1,・・・,core_M)で構成される。Mは、2以上の整数である。各コアは、少なくとも事前動き探索処理部、動き探索処理部、マージ探索処理部及び動き補償処理部等の符号化演算処理を行う機能部である。各コアの符号化演算処理は、パイプライン処理されている。処理中に参照画像データが必要となるコア(以下「参照画像利用コア」という。)の場合、参照画像利用コアは参照画像データ用キャッシュメモリ200に接続されている。
【0019】
各参照画像利用コアは、必要となる参照画像データに関して、参照先のフレーム番号、参照先の色空間YUVの指定及び参照先のフレーム内の位置座標等の情報をアドレス情報へと変換し、参照画像データ用キャッシュメモリ200にデータリクエストを行う。符号化演算部100は、各参照画像利用コアから並列に送信される情報を逐次的に変換し、要求データのアドレス情報(以下「要求アドレス情報」という。)を参照画像データ用キャッシュメモリ200に順番に出力する。符号化演算部100は、パイプライン処理の各ステージの開始時に、ステージ更新を表すパイプライン更新信号を参照画像データ用キャッシュメモリ200に送信する。
【0020】
参照画像データ用キャッシュメモリ200は、n-wayセットアソシエイティブキャッシュメモリである。参照画像データ用キャッシュメモリ200は、キャッシュメモリ部300、データ決定部400、データ置換制御部500及び外部メモリデータ要求部600を備える。参照画像データ用キャッシュメモリ200は、符号化演算部100から要求されるアドレス情報にしたがって、要求されたデータがキャッシュメモリ部300に存在するか否かを判定する。要求アドレスは、上位ビットのタグと、下位ビットのインデックスに分離される。インデックスは、キャッシュメモリ部300内のどのセットに要求データが存在する可能性があるかを示す。タグは、インデックスで示されたある特定のセット(N-wayセットアソシエイティブの場合n個のラインデータ)の中に要求データが存在するかどうかを検索するためのキーとして使用される。
【0021】
キャッシュメモリ部300は、データアレイ310と、タグアレイ320とで構成される。データアレイ310は、実際のラインデータを格納している。このラインデータは、符号化対象ブロックが参照する参照領域を示す情報である。タグアレイ320は、データアレイ310内の各ラインデータに対応するタグデータを格納している。データアレイ310及びタグアレイ320の中の特定のラインを指定するために、インデックスが用いられる。インデックスはアドレスデコーダによって変換され、データアレイ310及びタグアレイ320内のアドレス指定として用いられる。N-wayの場合、同一のインデックスアドレスを持つラインがn個存在する。
【0022】
データ決定部400は、データ選択部410とタグ比較部420とで構成される。タグ比較部420は、タグアレイ320から読み出されたn個のタグと、要求アドレスのタグとを比較し、n個の各セット内のどのwayにヒットしたか、あるいは全てミスしたか、の比較結果情報をデータ選択部410、データ置換制御部500及び外部メモリデータ要求部600に出力する。データ選択部410は、タグ比較部420から出力されたwayのラインデータを、符号化演算部100に出力する。データ選択部410から出力されたラインデータは、要求元のコアへと伝達される。
【0023】
データ置換制御部500は、キャッシュミスが生じて外部メモリ900から該当する要求データを転送する際に、データアレイ310のどのラインデータを要求データで置換するかを決定する。N-wayの場合、データ置換制御部500は、n個の各セット内のどのwayを置換するかを決定する。LRUアルゴリズムの場合は、各セットのn個のラインデータが使用された順番を示す履歴情報が、データ置換制御部500の内部データにセット数分保存される。そのため、データ置換制御部500は、各セットのn個のラインデータにおいて、いずれのラインデータが直近で使用され、どのラインデータが最も使用されていないのかを認識することができる。
【0024】
データ置換制御部500は、ヒット時にはどのwayがヒットしたかを示す比較結果情報をタグ比較部420から受け取り、要求アドレスのインデックスも合わせて受け取ることで、内部データ更新を行っていく。ミスした場合、データ置換制御部500は、該当セットのn個のうち使用履歴順が最も古い値であるwayを、置換先のway番号として決定する。このように、データ置換制御部500は、キャッシュミスが発生した際にキャッシュメモリ部300に格納されているキャッシュの一部を、外部メモリ900に保存されているデータと置き換える。
【0025】
外部メモリデータ要求部600は、外部メモリに対してデータ要求を行う。符号化演算部100から入力される要求アドレス情報と、タグ比較部420から入力される比較結果情報とを入力とする。外部メモリデータ要求部600は、パイプライン更新信号についても入力とする。外部メモリデータ要求部600は、要求アドレス情報と、データ要求の指示とを含むデータ送信要求を外部メモリ900に対して出力する。これにより、外部メモリ900から要求アドレス情報に対応するデータが参照画像データ用キャッシュメモリ200に入力され、データアレイ310の1つのラインデータが上書きされる。
【0026】
上記が実施形態における映像符号化装置10の基本的な構成の説明である。本発明では、実施形態における映像符号化装置10の外部メモリデータ要求部600が、キャッシュミス時における外部メモリ900へのデータ要求に加えて、符号化対象ブロック近傍のデータを予めキャッシュメモリ部300へプリフェッチしておく。符号化対象ブロック近傍のデータは、処理が進むにつれて画像空間上で参照される可能性が高い画素領域のデータである。これにより、画像データの幾何学的空間局所性を考慮したキャッシュメモリを構成してキャッシュヒット率を向上させることを可能にする。以下、詳細について説明する。
【0027】
(第1の実施形態)
図2は、第1の実施形態における外部メモリデータ要求部600の機能構成を表すブロック図である。
第1の実施形態における外部メモリデータ要求部600は、キャッシュミス用データ要求部610、プリフェッチ用データ要求部620及びデータ要求調整部630を備える。外部メモリデータ要求部600において、キャッシュミス用データ要求部610とプリフェッチ用データ要求部620の2つから並行してデータ要求が行われる。
【0028】
キャッシュミス用データ要求部610は、従来手法と同様にデータ送信要求を行う機能部である。キャッシュミス用データ要求部610は、比較結果情報を参照し、キャッシュミスであった場合についてのみ、外部メモリ900に対するデータ送信要求を行う。キャッシュミスであった場合、キャッシュミス用データ要求部610は、符号化演算部100から入力される要求アドレス情報をキャッシュミス用要求アドレス情報として、キャッシュミス用要求アドレス情報と、データ要求の指示とを含むデータ送信要求を生成する。キャッシュミス用データ要求部610は、生成したデータ送信要求をデータ要求調整部630に出力する。
【0029】
プリフェッチ用データ要求部620は、符号化対象ブロック近傍のデータをプリフェッチするために、符号化対象ブロック近傍のデータに対応する要求アドレス情報をプリフェッチ用要求アドレス情報として、プリフェッチ用要求アドレス情報と、データ要求の指示とを含むデータ送信要求を生成する。プリフェッチ用データ要求部620は、生成したデータ送信要求をデータ要求調整部630に出力する。
【0030】
具体的には、まずプリフェッチ用データ要求部620は、パイプライン更新信号に基づいて、符号化演算部100の各コアが現在符号化している符号化対象ブロックのフレーム内座標位置を算出する。次に、プリフェッチ用データ要求部620は、算出した符号化対象ブロックの座標位置に基づいて、画像空間で参照される可能性が高い画素領域を特定する。そして、プリフェッチ用データ要求部620は、特定した画素領域をプリフェッチするために、符号化対象ブロック近傍のデータに対応する要求アドレス情報をプリフェッチ用要求アドレス情報として、プリフェッチ用要求アドレス情報と、データ要求の指示とを含むデータ送信要求を生成する。これにより、プリフェッチ用データ要求部620は、プリフェッチ用のデータ送信要求を行う。
【0031】
データ要求調整部630は、キャッシュミス用データ要求部610から出力されるデータ送信要求と、プリフェッチ用データ要求部620から出力されるデータ送信要求とを入力する。データ要求調整部630は、入力したデータ送信要求に含まれる要求アドレス情報に応じて、外部メモリ900に対して逐次的に要求アドレス情報に応じたデータを外部メモリ900に要求する。
【0032】
次に、
図3~
図5を用いて、第1の実施形態におけるプリフェッチ用データ要求部620の具体的な処理について説明する。
図3には、あるタイミングにおける符号化処理のフレーム700内の位置関係が示されている。符号化演算部100では、core_1からcore_MまでのM個の各コアが同時に符号化関連処理を行っているとする。フレーム700において、符号化処理が行われている領域を処理領域701とし、処理領域702近傍の領域を近傍領域702とする。近傍領域702は、処理領域701で符号化処理が行われた場合に、将来参照される可能性の高い領域である。参照される可能性の高い領域とは、符号化処理が行われているフレーム内の座標位置による幾何学的空間局所性が非常に高い領域である。
図2では、近傍領域702をハッチングで示している。
【0033】
各コアの符号化演算処理はパイプライン処理されており、パイプラインステージの単位がCTUであるとする。core_1、core_2、・・・、core_Mの順にパイプライン処理が進んでいく場合、最終パイプラインステージを担当するcore_Mが処理しているCTUのインデックスをxとする。この場合、
図3に示すように、同じタイミングでCore_(M-1)が処理しているCTUインデックスが(x+1)、Core_2が処理しているCTUインデックスが(x+M-2)、core_1が処理しているCTUインデックスが(x+M-1)となる。このときのパイプラインステージのステージ番号をPとする。
【0034】
映像符号化処理においては、符号化対象ブロックとの幾何学的位置が近い参照画像データは、その後のデータ参照可能性やデータ参照頻度が高い傾向にある。さらに、動き探索における探索範囲設定などの要因で、幾何学的距離が符号化対象ブロックから大きくなるにつれて参照可能性・参照頻度がなだらかに減少していくのではなく、符号化対象ブロックから一定距離の範囲内かどうかで参照可能性・参照頻度がドラスティックに変化することが起こりうる。これは、符号化対象画像に撮影されている被写体の観点で見ると、一定距離の範囲内に撮影されているものは同じテクスチャである可能性が高いためである。そこで、本発明では、符号化対象画像に撮影されている被写体の同じテクスチャ又は近隣の近しい特徴を持つテクスチャに対応する領域をプリフェッチするために、符号化対象ブロックから一定距離の範囲内か否かを判定する。符号化対象CTUの上下H(pixel)以内、かつ、左右W(pixel)以内の範囲が参照可能性の高い領域である場合、パイプラインステージPにおける符号化演算部100からの参照可能性の高い領域が
図3で示されている。CTUサイズがS(pixel)×S(pixel)とすると、MS(pixel)×S(pixel)の処理領域に対して上下H(pixel)以内、かつ、左右W(pixel)以内である、(MS+2W)(pixel)×(S+2H)(pixel)の範囲が、符号化演算部100からの参照可能性の高い領域となる。
【0035】
図4には、
図3に示すパイプラインステージPから1つ進んだパイプラインステージ(P+1)のタイミングにおける符号化処理のフレーム710内の位置関係が示されている。そのため、フレーム710においては、符号化演算部100の処理領域711と、符号化演算部100からの参照可能性の高い近傍領域712が、右側にCTUの横幅S(pixel)だけ移動する。パイプラインステージが1つ進むことで、新たに参照可能性が高くなる領域が、符号化演算部100からの参照可能性の高い領域の内で最も右端のS(pixel)×(S+2H)(pixel)の領域となる。この領域の参照画像データは、前パイプラインステージPではアクセスされていない可能性が高い。そのため、通常のキャッシュメモリ機構ではパイプラインステージ(P+1)のタイミングにおいてはデータアレイ310にデータが存在しない可能性が高い。このため、パイプラインステージ更新後にキャッシュミスが多く発生する可能性があり、符号化効率の低下やリアルタイム処理の破綻へと繋がる場合がある。
【0036】
本発明では、映像符号化処理においてキャッシュミス発生率の高い上記領域をプリフェッチすることで、キャッシュメモリのヒット率の向上を行う。
図5には、パイプラインステージPのタイミングにおけるプリフェッチ領域703が示されている。プリフェッチ領域703は、現在のパイプラインステージでの被参照高確率領域の右側に隣接する、S(pixel)×(S+2H)(pixel)の領域である。プリフェッチ用データ要求部620は、符号化演算部100からパイプライン更新信号を取得することでパイプラインステージの更新を判断する。そして、プリフェッチ用データ要求部620は、パイプラインステージがPになったタイミング後から、
図5のプリフェッチ領域に相当する参照画像データについて、プリフェッチ用要求アドレス情報と、データ要求の指示とを含むデータ送信要求を生成して逐次的にデータ要求調整部630に出力する。上記のような処理によって、パイプラインステージが更新された場合においても、常に被参照高確率領域の全領域がデータアレイ310に存在することとなり、画像データの幾何学的空間局所性が反映されることでキャッシュヒット率の向上を見込める。
【0037】
次に、データ要求調整部630の具体的な処理について説明する。キャッシュミス用要求アドレス情報と、プリフェッチ用要求アドレス情報とはそれぞれ独立に出力される。そのため、データ要求調整部630は、入力された要求アドレス情報に応じて逐次的にデータを要求する。プリフェッチ用要求アドレス情報を含むデータ送信要求は、キャッシュミス用要求アドレス情報を含むデータ送信要求が存在しない場合に外部メモリ900へ送信される。
【0038】
一方で、キャッシュミス用要求アドレス情報を含むデータ送信要求が存在する場合、データ要求調整部630はプリフェッチ用要求アドレス情報を含むデータ送信要求をデータバッファに順次ストアしていく。そして、データ要求調整部630は、キャッシュミス用要求アドレス情報を含むデータ送信要求が外部メモリ900へ全て送信し終わった後に、データバッファにストアしたプリフェッチ用要求アドレス情報を含むデータ送信要求を外部メモリ900へと順次送信する。
【0039】
キャッシュミスによって外部メモリ900からデータアレイ310へと送信されるデータは、データアレイ310によって必ず使用される一方で、プリフェッチ用に外部メモリ900からデータアレイ310へと送信されるデータは、今後の参照可能性が高いが必ずしも使用されるわけではない。そこで、本実施形態のようなアルゴリズムとすることで、全体としてより重要と考えられるキャッシュミスのデータ送信要求を、プリフェッチ用のデータ送信要求よりも常に優先することが可能となる。
【0040】
図6は、第1の実施形態における参照画像データ用キャッシュメモリ200の処理の流れを示すフローチャートである。
外部メモリデータ要求部600は、各種情報を取得する(ステップS101)。例えば、外部メモリデータ要求部600は、符号化演算部100から入力された要求アドレス情報を取得する。例えば、外部メモリデータ要求部600は、タグ比較部420から入力された比較結果情報を取得する。例えば、外部メモリデータ要求部600は、符号化演算部100から入力されたパイプライン更新信号を取得する。
【0041】
キャッシュミス用データ要求部610は、取得した情報に基づいてキャッシュミスがあるか否かを判定する(ステップS102)。具体的には、キャッシュミス用データ要求部610は、比較結果情報に基づいてキャッシュミスがあるか否かを判定する。キャッシュミス用データ要求部610は、比較結果情報を参照し、比較結果情報にキャッシュミスであったことを示す情報が含まれている場合に、キャッシュミスがあると判定する。比較結果情報にキャッシュミスであったことを示す情報が含まれる場合とは、符号化演算部100から要求された参照画像データがキャッシュメモリ部300に記憶されていない場合である。一方、キャッシュミス用データ要求部610は、比較結果情報を参照し、比較結果情報にキャッシュヒットであったことを示す情報が含まれている場合に、キャッシュミスがないと判定する。
【0042】
キャッシュミスがあった場合(ステップS102-YES)、キャッシュミス用データ要求部610は入力された要求アドレス情報をキャッシュミス用要求アドレス情報として、キャッシュミス用要求アドレス情報と、データ要求の指示とを含むデータ送信要求を生成する(ステップS103)。キャッシュミス用データ要求部610は、生成したデータ送信要求をデータ要求調整部630に出力する。
【0043】
データ要求調整部630は、プリフェッチ用のデータ送信要求があるか否かを判定する(ステップS104)。具体的には、データ要求調整部630は、プリフェッチ用データ要求部620からデータ送信要求が得られた場合にプリフェッチ用のデータ送信要求があると判定する。一方、データ要求調整部630は、プリフェッチ用データ要求部620からデータ送信要求が得られていない場合にプリフェッチ用のデータ送信要求がないと判定する。
【0044】
ステップS102の処理でキャッシュミスがあると判定され、かつ、プリフェッチ用のデータ送信要求があると判定された場合(ステップS104-YES)、データ要求調整部630にはキャッシュミス用のデータ送信要求と、プリフェッチ用のデータ送信要求とが入力されていることになる。この場合、データ要求調整部630は、プリフェッチ用のデータ送信要求を不図示のデータバッファにストアする(ステップS105)。その後、データ要求調整部630は、キャッシュミス用のデータ送信要求を外部メモリ900に送信する。この処理により、データ要求調整部630は、キャッシュミス用のデータを外部メモリ900に要求する(ステップS106)。その結果、要求したキャッシュ用のデータが外部メモリ900から送信されて、キャッシュメモリ部300に格納される。
【0045】
データ要求調整部630は、キャッシュミス用のデータ送信要求を全て外部メモリ900に送信した後のタイミングで、データバッファにストアしていたプリフェッチ用のデータ送信要求を外部メモリ900に送信する。この処理により、データ要求調整部630は、プリフェッチ用のデータを外部メモリ900に要求する(ステップS107)。その結果、要求したプリフェッチ用のデータが外部メモリ900から送信されて、キャッシュメモリ部300に格納される。
【0046】
ステップS102の処理でキャッシュミスがあると判定され、かつ、ステップS104の処理においてプリフェッチ用のデータ送信要求がないと判定された場合(ステップS104-NO)、データ要求調整部630にはキャッシュミス用のデータ送信要求が入力されていることになる。データ要求調整部630は、キャッシュミス用のデータ送信要求を外部メモリ900に送信する。この処理により、データ要求調整部630は、キャッシュミス用のデータを外部メモリ900に要求する(ステップS108)。
【0047】
ステップS102の処理においてキャッシュミスがなかった場合(ステップS102-NO)、データ要求調整部630はプリフェッチ用のデータ送信要求があるか否かを判定する(ステップS109)。プリフェッチ用のデータ送信要求がある場合(ステップS109-YES)、データ要求調整部630にはプリフェッチ用のデータ送信要求が入力されていることになる。データ要求調整部630はプリフェッチ用のデータ送信要求を外部メモリ900に送信する。
一方、プリフェッチ用のデータ送信要求がなかった場合(ステップS109-NO)、データ要求調整部630にはデータ要求が入力されていないことになる。そのため、参照画像データ用キャッシュメモリ200は
図6の処理を終了する。
【0048】
以上のように構成された映像符号化装置10によれば、参照画像データ用キャッシュのヒット率を向上させることが可能になる。具体的には、映像符号化装置10は、キャッシュミス時における外部メモリ900へのデータ要求に合わせて、画像空間上で参照される可能性が高い画素領域である符号化対象ブロック近傍のデータを予めキャッシュメモリ部300へプリフェッチする。これにより、画像データの幾何学的空間局所性を考慮したキャッシュメモリを構成することができる。その結果、キャッシュヒット率を向上させることが可能になる。
【0049】
(第2の実施形態)
第2の実施形態では、プリフェッチ用データ要求部が、プリフェッチ領域を優先領域(第1の領域)と非優先領域(第2の領域)との複数の領域に分けて、データ要求調整部が優先度に応じてプリフェッチ領域におけるデータ送信要求を外部メモリ900に行う点で第1の実施形態と異なる。プリフェッチ領域を、優先領域と非優先領域とに分ける理由は、プリフェッチ領域内において動きベクトル先になる可能性の高いフレーム位置と,動きベクトル先になる可能性がそこまで高くないフレーム位置があることが考えられるためです。すなわち、符号化対象の被写体の観点からみれば、優先領域は動きベクトル先になる可能性が最も高いと想定されるフレーム位置であり、非優先領域は動きベクトル先になる可能性が優先領域ほど高くないフレーム位置である。そして、プリフェッチされない領域は、プリフェッチ領域に比べて動きベクトル先になる可能性が非常に低いフレーム位置である。このように、第2の実施形態では、今後すぐに使われることが想定される参照画像領域を優先領域として最優先で確保しておき、使われるか使われないか不明ではあるが今後使われる可能性があることが想定される参照画像領域を非優先領域として確保を後回しにする処理を行う。
【0050】
図7は、第2の実施形態における外部メモリデータ要求部600aの機能構成を表すブロック図である。
第2の実施形態における外部メモリデータ要求部600aは、キャッシュミス用データ要求部610、プリフェッチ用データ要求部620a及びデータ要求調整部630aを備える。外部メモリデータ要求部600aは、プリフェッチ用データ要求部620及びデータ要求調整部630に代えて、プリフェッチ用データ要求部620a及びデータ要求調整部630aを備える点で外部メモリデータ要求部600と構成が異なる。外部メモリデータ要求部600aの他の構成は、外部メモリデータ要求部600と同様である。そのため、プリフェッチ用データ要求部620a及びデータ要求調整部630aについてのみ説明する。
【0051】
プリフェッチ用データ要求部620aは、プリフェッチ用データ要求部620と同様の処理を行う。プリフェッチ用データ要求部620aは、算出した符号化対象ブロックの座標位置に基づいてプリフェッチ用のデータ送信要求を行う。この際、プリフェッチ用データ要求部620aは、プリフェッチ領域を、優先領域と、非優先領域とに分ける。プリフェッチ用データ要求部620aは、プリフェッチ領域において優先領域及び非優先領域を、符号化対象ブロックからの幾何学的距離に応じて決定する。そして、プリフェッチ用データ要求部620aは、プリフェッチ用の優先領域の要求アドレス情報及び非優先領域の要求アドレス情報を含むデータ送信要求をデータ要求調整部630aに出力する。プリフェッチ用の優先領域の要求アドレス情報は、符号化対象ブロック近傍のデータのうち優先領域に含まれるデータに対応するアドレス情報である。非優先領域の要求アドレス情報は、符号化対象ブロック近傍のデータのうち非優先領域に含まれるデータに対応するアドレス情報である。
【0052】
データ要求調整部630aは、キャッシュミス用データ要求部610から出力されるキャッシュミス用要求アドレス情報を含むデータ送信要求と、プリフェッチ用データ要求部620aから出力されるプリフェッチ用の優先領域の要求アドレス情報及び非優先領域の要求アドレス情報を含むデータ送信要求とを入力する。データ要求調整部630aは、入力したデータ送信要求に含まれる要求アドレス情報の優先度に応じて、外部メモリ900に対して逐次的に要求アドレス情報に応じたデータを外部メモリ900に要求する。例えば、データ要求調整部630aは、優先領域の要求アドレス情報を含むデータ送信要求、キャッシュミス用要求アドレス情報を含むデータ送信要求、非優先領域の要求アドレス情報を含むデータ送信要求の順にデータを外部メモリ900に要求する。
【0053】
図8は、第2の実施形態におけるプリフェッチ用データ要求部620aの具体的な処理について説明する。
図8には、パイプラインステージPのタイミングにおけるプリフェッチ領域703が示されている。
図8に示すプリフェッチ領域703は、プリフェッチ用データ要求部620aによって優先領域704と、非優先領域705とに分けられる。優先領域704は、最優先で外部メモリ900にデータ要求される領域である。非優先領域705は、最も優先度が低く、優先領域におけるデータ要求及びキャッシュミス用のデータ送信要求が完了した後に外部メモリ900にデータ要求される領域である。
【0054】
プリフェッチ領域703の中でも、幾何学的距離が符号化対象ブロックから大きくなるにつれて参照可能性・参照頻度がなだらかに減少していくのではなく、符号化対象ブロックとの距離によって参照可能性・参照頻度がドラスティックに変化することが起こりうる。このため、プリフェッチ領域703内の一部の領域は、今後の参照可能性が非常に高くかつ参照される頻度も非常に多いことが考えられる。そのため、そのような領域を確実にデータアレイ310に格納しておくことが今後のキャッシュヒット率向上へ繋がる場合が多い。そこで、第2の実施形態では、優先領域704における特に重要なデータのプリフェッチ要求を最優先した上で、キャッシュミス用のデータ送信要求を非優先領域705におけるプリフェッチ用のデータ送信要求より優先する。
【0055】
以上のように、キャッシュミス用のデータ送信要求は、プリフェッチ優先領域用のデータ送信要求が送信された後に、外部メモリ900へ送信される。非優先領域705のデータ送信要求は、プリフェッチ優先領域用のデータ送信要求及びキャッシュミス用のデータ送信要求が送信された後に、外部メモリ900へ送信される。一方で、プリフェッチ優先領域のデータ送信要求は、キャッシュミス用のデータ送信要求よりも優先されて外部メモリ900へ送信される。
【0056】
以上のように構成された第2の実施形態における映像符号化装置10によれば、第1の実施形態と同様の効果を得ることができる。
第2の実施形態における映像符号化装置10は、今後の参照可能性が非常に高くかつ参照される頻度も非常に多いことが考えられる符号化対象となっている領域により近い領域のデータを優先的にデータアレイ310に格納する。これにより、参照画像データ用キャッシュのヒット率を向上させることが可能になる。
【0057】
(変形例)
プリフェッチ領域の分け方は、3つ以上であってもよい。
【0058】
上述した実施形態における映像符号化装置10及び参照画像データ用キャッシュメモリ200をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
【0059】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【0060】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【産業上の利用可能性】
【0061】
本発明は、映像符号化における参照画像データを格納するキャッシュに適用可能である。
【符号の説明】
【0062】
10…映像符号化装置, 50…映像符号化LSI, 100…符号化演算部, 200…参照画像データ用キャッシュメモリ(参照画像キャッシュ), 300…キャッシュメモリ部, 310…データアレイ, 320…タグアレイ, 400…データ決定部, 410…データ選択部, 420…タグ比較部, 500…データ置換制御部, 600、600a…外部メモリデータ要求部(プリフェッチ部), 610…キャッシュミス用データ要求部, 620、620a…プリフェッチ用データ要求部, 630、630a…データ要求調整部, 900…外部メモリ