(57)【要約】【課題】処理部を互いに接続するインタフェース装置における、一方の処理部から他方の処理部へのデータ転送処理を効率化する。【解決手段】複数の処理部の共有キャッシュとして働くインタフェース装置。複数の処理部に含まれる第１の処理部からデータを取得する。第１の処理部から取得したデータを複数の処理部に含まれる第２の処理部に出力する。第１の処理部から取得したデータをキャッシュする。書き込まれたデータをライトバックするか否かを、第２の処理部から取得した情報に基づいて制御する。【選択図】図５
2020144856.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理部の共有キャッシュとして働くインタフェース装置であって、
前記複数の処理部に含まれる第１の処理部からデータを取得する第１のポートと、
前記第１の処理部から取得したデータを前記複数の処理部に含まれる第２の処理部に出力する第２のポートと、
前記第１の処理部から取得したデータをキャッシュするキャッシュ手段と、
前記キャッシュ手段に書き込まれたデータを前記キャッシュ手段とは異なる記憶手段にライトバックするか否かを、前記第２の処理部から取得した情報に基づいて制御する制御手段と、
を備えることを特徴とするインタフェース装置。
【請求項２】
前記第１のポートは、前記第１の処理部から、データ群に含まれるデータを第１の順序で取得し、
前記第２のポートは、前記第２の処理部へと、前記データ群に含まれるデータを前記第１の順序とは異なる第２の順序で出力する
ことを特徴とする、請求項１に記載のインタフェース装置。
【請求項３】
前記第２の処理部から取得した情報は、前記第２の処理部が要求したデータを前記キャッシュ手段から前記記憶手段にライトバックする必要がないことを示すことを特徴とする、請求項１又は２に記載のインタフェース装置。
【請求項４】
前記制御手段は、前記第１の処理部から取得した情報にさらに基づいて、前記キャッシュ手段に書き込まれたデータをライトバックするか否かを制御することを特徴とする、請求項１から３のいずれか１項に記載のインタフェース装置。
【請求項５】
前記第１の処理部から取得した情報は、前記データが前記第２の処理部に転送されるデータであることを示すことを特徴とする、請求項４に記載のインタフェース装置。
【請求項６】
前記制御手段は、前記キャッシュ手段に書き込まれている前記データに関連付けて、前記第１の処理部から取得した情報、前記第２の処理部から取得した情報、又は前記第１の処理部から取得した情報と前記第２の処理部から取得した情報との演算結果を格納することを特徴とする、請求項４又は５に記載のインタフェース装置。
【請求項７】
前記制御手段は、
前記キャッシュ手段に書き込まれている前記データが、前記記憶手段から取得されたものではなく、
前記データが前記第２の処理部に転送されるデータであることを前記第１の処理部から取得した情報が示しており、かつ
前記第２の処理部が要求したデータを前記キャッシュ手段から前記記憶手段にライトバックする必要がないことを前記第２の処理部から取得した情報が示している場合に、
前記キャッシュ手段に書き込まれている前記データを前記記憶手段にライトバックせずに破棄することを特徴とする、請求項４から６のいずれか１項に記載のインタフェース装置。
【請求項８】
前記制御手段は、前記キャッシュ手段に書き込まれている前記データを破棄する際に、少なくとも前記第２の処理部から取得した情報に基づいて、破棄する前記データをライトバックするか否かを切り替えることを特徴とする、請求項１から７のいずれか１項に記載のインタフェース装置。
【請求項９】
前記キャッシュ手段はフルアソシアティブ方式に従うキャッシュ動作を行うことを特徴とする、請求項１から８のいずれか１項に記載のインタフェース装置。
【請求項１０】
前記記憶手段はＤＲＡＭであることを特徴とする、請求項１から９のいずれか１項に記載のインタフェース装置。
【請求項１１】
前記データは画像データであることを特徴とする、請求項１から１０のいずれか１項に記載のインタフェース装置。
【請求項１２】
請求項１から１１のいずれか１項に記載のインタフェース装置と前記第２の処理部とを有する第１のチップを備え、前記第１のチップとは異なる第２のチップが有する前記第１の処理部に接続されることを特徴とする、請求項１から１１のいずれか１項に記載のインタフェース装置。
【請求項１３】
前記第１の処理部と、前記第２の処理部と、請求項１から１２のいずれか１項に記載のインタフェース装置と、を備えることを特徴とするデータ処理装置。
【請求項１４】
前記第１の処理部は、入力データに対する第１のデータ処理によりデータ群を生成し、
前記第２の処理部は、前記データ群に対する第２のデータ処理を行うことにより、前記入力データに対して前記第１のデータ処理及び前記第２のデータ処理を行って得られる処理結果を生成する
ことを特徴とする、請求項１３に記載のデータ処理装置。
【請求項１５】
前記第１の処理部は、画像に設定された、第１のサイズを有する複数のタイル領域のそれぞれに含まれるデータを、タイル領域ごとに前記インタフェース装置に送信し、
前記第２の処理部は、前記画像に設定された、前記第１のサイズとは異なる第２のサイズを有する複数のタイル領域のそれぞれに含まれるデータを、タイル領域ごとに前記インタフェース装置から受信する
ことを特徴とする、請求項１３又は１４に記載のデータ処理装置。
【請求項１６】
前記第２の処理部は、前記インタフェース装置に対しデータを要求する際に、前記データを後の処理で再度要求するか否かを判定し、再度要求しないとの判定に応じて、要求するデータを前記キャッシュ手段から前記記憶手段にライトバックする必要がないことを示す情報を前記インタフェース装置に送信することを特徴とする、請求項１３から１５のいずれか１項に記載のデータ処理装置。
【請求項１７】
前記第２の処理部は、画像に設定された複数のタイル領域のそれぞれに含まれるデータを、タイル領域ごとに前記インタフェース装置から受信し、
前記インタフェース装置に対してタイル領域に含まれるデータを要求する際に、前記データが他のタイル領域に含まれるか否かに応じて、前記インタフェース装置に送信される、前記第２の処理部が要求したデータを前記キャッシュ手段から前記記憶手段にライトバックする必要性を示す情報を制御することを特徴とする、請求項１３から１５のいずれか１項に記載のデータ処理装置。
【請求項１８】
前記データ処理装置は、ネットワークと、前記ネットワークに接続された前記記憶手段と、をさらに備え、
前記データ処理装置は前記ネットワークに接続され、
前記データ処理装置は前記ネットワークを介さずに前記第１の処理部及び前記第２の処理部に接続されている
ことを特徴とする、請求項１３から１７のいずれか１項に記載のデータ処理装置。
【請求項１９】
複数の処理部の共有キャッシュとして働くインタフェース装置であって、前記複数の処理部に含まれる第１の処理部からデータを取得する第１のポートと、前記第１の処理部から取得したデータを前記複数の処理部に含まれる第２の処理部に出力する第２のポートと、前記第１の処理部から取得したデータをキャッシュするキャッシュ手段と、を備える、インタフェース装置が行うキャッシュ制御方法であって、
前記キャッシュ手段に書き込まれたデータを前記キャッシュ手段とは異なる記憶手段にライトバックするか否かを、前記第２の処理部から取得した情報に基づいて制御する工程を有することを特徴とする、キャッシュ制御方法。
【請求項２０】
コンピュータを、請求項１から１２のいずれか１項に記載のインタフェース装置の制御手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はインタフェース装置、データ処理装置、キャッシュ制御方法、及びプログラムに関し、特に共有キャッシュメモリに関する。
【背景技術】
【０００２】
近年、１つの製品が様々な機能を実現することが求められている。例えば、複数のデータ処理部を有する製品において、アプリケーションに応じて使用するデータ処理部を組み合わせて用いることにより、様々な機能を実現する手法が知られている。
【０００３】
このような構成においては、データ処理部の間でのデータ転送を効率化することにより、処理速度を向上できる。例えば特許文献１は、共有キャッシュメモリ装置を介して２つのプロセッサを接続する方法を開示している。特許文献１の方法によれば、共有キャッシュメモリ装置は、第１プロセッサによるデータの書き込みを監視し、第２プロセッサにより要求されたデータが書き込まれると、このデータを第２プロセッサに転送する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−４３０３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ処理部は様々な考え方に従って製造され、また、様々なメーカーによって製造される。このため、それぞれのデータ処理部が有する、データ処理の処理単位などの、データ処理の仕様又は制約は、互いに異なっていることが多い。このため、前段のデータ処理部と後段のデータ処理部とを接続する装置は、前段のデータ処理部から受け取ったデータをただちに後段のデータ処理部に転送できないことが多い。したがって、前段のデータ処理部から受け取ったデータを少なくとも一時的に何らかの記憶部に格納する必要がある。このような処理は、追加の回路を必要とし、又は追加の処理負荷を必要とする。
【０００６】
本発明は、処理部を互いに接続するインタフェース装置における、一方の処理部から他方の処理部へのデータ転送処理を効率化することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の目的を達成するために、例えば、本発明のインタフェース装置は以下の構成を備える。すなわち、
複数の処理部の共有キャッシュとして働くインタフェース装置であって、
前記複数の処理部に含まれる第１の処理部からデータを取得する第１のポートと、
前記第１の処理部から取得したデータを前記複数の処理部に含まれる第２の処理部に出力する第２のポートと、
前記第１の処理部から取得したデータをキャッシュするキャッシュ手段と、
前記キャッシュ手段に書き込まれたデータを前記キャッシュ手段とは異なる記憶手段にライトバックするか否かを、前記第２の処理部から取得した情報に基づいて制御する制御手段と、
を備えることを特徴とするインタフェース装置。
【発明の効果】
【０００８】
処理部を互いに接続するインタフェース装置において、一方の処理部から他方の処理部へのデータ転送処理を効率化することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係るデータ処理装置の構成例を示すブロック図。
【図２】一実施形態に係る前段処理と後段処理の接続例を示すブロック図。
【図３】データ転送動作を説明する図。
【図４】タイル走査を説明する図。
【図５】一実施形態に係るインタフェース装置の構成例を示すブロック図。
【図６】キャッシュ判定部４１２の構成例を示すブロック図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１１】
［実施形態１］
（データ処理装置の構成例）
図１は、実施形態１に係るインタフェース装置を適用可能なデータ処理装置の構成例を示すブロック図である。データ処理装置の処理対象は特に限定されないが、図１には画像データに対する画像処理を行う画像処理装置が示されている。図１に示すデータ処理装置は、ＣＰＵ回路部１００、画像読取部１２０、画像入力部１３０、画像処理部１５０、及び画像表示部１６０を備える。
【００１２】
画像読取部１２０は、レンズ１２４、ＣＣＤセンサ１２６、及び信号処理部１２７を有する。原稿１１０の画像は、レンズ１２４を介してＣＣＤセンサ１２６に結像する。そして、ＣＣＤセンサ１２６は画像を示すアナログ電気信号を生成する。信号処理部１２７は、Ｒ、Ｇ、Ｂの色ごとに補正処理を行い、さらにアナログ／デジタル変換を行うことでフルカラーのデジタル画像信号（画素値）を生成する。こうして生成されたデジタル画像信号は、画像入力部１３０に入力される。以下では、１枚の画像に含まれる複数の画素についてのデジタル画像信号（画素値）の集合を、画像データと呼ぶ。
【００１３】
画像処理部１５０は、画像入力部１３０に入力された画像データに対する画像処理を行う。画像処理としては、センサ素子の個体差を補償する処理、入力ガンマ補正などの色補正処理、空間フィルタ処理、色空間変換処理、濃度補正処理、及び中間調処理などが挙げられるが、これらには限定されない。画像処理部１５０は、例えば画像を印刷するための画像処理を行うことにより、印刷用の画像データを作成することができる。なお、画像処理部１５０は、複数フレームの画像データを含む映像データに対する画像処理を行ってもよい。
【００１４】
画像表示部１６０は、画像処理部１５０による画像処理後の画像データの表示を行う。画像表示部１６０は、画像処理後の映像をディスプレイなどの画像表示装置に表示してもよい。また、画像表示部１６０の代わりに、又はこれに加えて、データ処理装置が画像印刷部１７０を有していてもよい。画像印刷部１７０は、画像処理部１５０による画像処理後の画像データに従う印刷を行う。画像印刷部１７０は、インクジェットヘッド又はサーマルヘッドなどを備え、画像データのデジタル画像信号に基づいて記録紙上に画像を記録するプリンタであってもよい。
【００１５】
ＣＰＵ回路部１００は、演算制御用のプロセッサであるＣＰＵ１０２、固定データ又はプログラムを格納するメモリであるＲＯＭ１０４、データ又はプログラムが一時的にロードされるメモリであるＲＡＭ１０６、及び外部記憶装置１０８などを備える。ＣＰＵ回路部１００は、画像読取部１２０、画像処理部１５０、画像表示部１６０、及び画像印刷部１７０等を制御することにより、データ処理装置が行う処理のシーケンスを統括的に制御することができる。外部記憶装置１０８は、データ処理装置が使用するパラメータ、プログラム、及び補正データを記憶することができる、ディスクなどの記憶媒体である。データやプログラムなどが外部記憶装置１０８からＲＡＭ１０６へとロードされてもよい。
【００１６】
上記のように、画像入力部１３０、画像処理部１５０、画像表示部１６０、及び画像印刷部１７０の間では、データの転送が行われる。このデータの転送は、ＲＡＭ１０６又は外部記憶装置１０８を介して行われることがある。例えば、ＷＤＭＡＣ１９２(Write Direct Memory Access Controller)は、画像入力部１３０に入力されたデジタル画像信号を出力する。ＷＤＭＡＣ１９２は、画像データを、共有バス１９０を介してＲＡＭ１０６又は外部記憶装置１０８などに格納することができる。同様に、ＷＤＭＡＣ１９６も、画像処理部１５０からの画像データをＲＡＭ１０６又は外部記憶装置１０８などに格納することができる。
【００１７】
また、ＲＤＭＡＣ１９４(Read Direct Memory Access Controller)は、共有バス１９０を介してＲＡＭ１０６又は外部記憶装置１０８などに記憶された画像データを読み出し、処理対象となる画素のデジタル画像信号を画像処理部１５０に入力することができる。同様に、ＲＤＭＡＣ１９８も、ＲＡＭ１０６又は外部記憶装置１０８から読み出した画像データを画像表示部１６０又は画像印刷部１７０に入力することができる。
【００１８】
ＣＰＵ１０２、画像入力部１３０、画像処理部１５０、画像表示部１６０、及び画像印刷部１７０は、このようなＷＤＭＡＣ１９２，１９６、及びＲＤＭＡＣ１９４，１９８の動作を設定したり、これらを起動したりすることができる。
【００１９】
（前段処理と後段処理の接続）
以上のように、画像入力部１３０、画像処理部１５０、画像表示部１６０、及び画像印刷部１７０の間では、データの転送が行われる。しかしながら、これらの処理部の間では、データ処理の仕様又は制約が異なっているかもしれない。実施形態１に係るインタフェース装置は、処理部間でのデータ処理の仕様又は制約の違いを緩衝（吸収）しながら、処理部間を接続することができる。
【００２０】
以下の説明において、実施形態１に係るインタフェース装置は、複数の処理部の共有キャッシュとして働くインタフェース装置である。このインタフェース装置は、複数の処理部に含まれる前段処理部（第１の処理部）からデータを取得して複数の処理部に含まれる後段処理部（第２の処理部）に出力する。図２（Ａ）は、実施形態１に係るデータ処理装置の一部を示す。図２（Ａ）に示すように、本実施形態に係るインタフェース装置である共有キャッシュＩ／Ｆ２５０（以下、単にＩ／Ｆ２５０と呼ぶ）は、前段処理ブロック２２０と後段処理ブロック２３０とを接続している。以下、前段処理ブロック２２０のことを単に前段処理２２０と、後段処理ブロック２３０のことを単に後段処理２３０と、それぞれ呼ぶ。
【００２１】
前段処理２２０に含まれる処理部２２４は、例えば画像処理部１５０であってもよい。この場合、ＲＤＭＡＣ２２２及びＷＤＭＡＣ２２６は、それぞれＲＤＭＡＣ１９４及びＷＤＭＡＣ１９６である。また、後段処理２３０に含まれる処理部２３４は、例えば画像表示部１６０であってもよい。この場合、ＲＤＭＡＣ２３２はＲＤＭＡＣ１９８である。ＲＤＭＡＣ２２２とＷＤＭＡＣ２３６の少なくとも一方は省略されてもよい。
【００２２】
この例において、前段処理２２０は、入力データに対する第１のデータ処理によりデータ群を生成する。そして、後段処理２３０は、このデータ群に対する第２のデータ処理を行うことにより、入力データに対して第１のデータ処理及び第２のデータ処理を行って得られる処理結果を生成する。
【００２３】
実施形態１に係るインタフェース装置は、図１に示される他の処理部の間を接続してもよい。なお、処理部がデータ処理によりデータを生成又は修正することは必須ではない。例えば、前段処理２２０は画像入力部１３０であってもよく、この画像入力部１３０は受け取ったデータをそのまま出力してもよい。また、後段処理２３０は画像表示部１６０であってもよく、この画像表示部１６０は受け取ったデータをそのまま出力してもよい。また、実施形態１に係るインタフェース装置が接続する処理部の種類は、図１に示したものには限定されない。これらの処理部は、パイプライン回路などのハードウェアで実現されてもよいし、プロセッサ及びプログラム（ソフトウェア）の組み合わせにより実現されてもよい。
【００２４】
それぞれの処理部が処理対象データに対するデータ処理を行う場合、処理対象データに含まれる部分データに対して順次処理を行うことができる。例えば、画像データに対する画像処理を行う場合には、ラスタ走査順に各画素について処理を行うことができる。一方で、画像データを領域分割し、それぞれの領域について順に処理を行うこともできる。
【００２５】
例えば、画像データの領域分割手法として、画像データの２次元分割を用いることができる。この場合、画像データは複数のタイル領域（以下、単にタイル又はブロックと呼ぶことがある）へと分割される。ここで、１つのタイルにおける画像のことを部分画像と呼ぶ。以下、タイルごとに行うデータ処理について説明する。以下の例において、処理単位（又は処理粒度）は部分画像である。以下のようなタイルごとのデータ処理のことは、タイル処理又はブロック処理と呼ぶことができる。なお、１つのタイルは１画素に対応していてもよい。
【００２６】
画像データに対する画像処理を行う場合、処理前の画像データが読み込まれ、そして処理後の画像データが生成される。図３（Ａ）には、前段処理２２０において生成された画像データ３００の例が示されている。画像データ３００は複数のタイルに分割されており、図３（Ａ）には複数のタイルのうちのタイル３０２〜３０８が示されている。図４（Ａ）はこのようなタイルの例を示す。それぞれのタイルの大きさは特に限定されず、長さＴＬ及び高さＴＨは任意の画素数であってもよい。図３（Ａ）において、１つのタイルは５画素×５画素の矩形領域である。
【００２７】
前段処理２２０においては、タイル単位で部分画像が生成される（タイル走査又はブロック走査とも呼ばれる）。ここで、部分画像の各画素のデータは、タイル３０２に示す矢印の順番で順次生成される。すなわち、前段処理２２０においてはタイル３０２、タイル３０４、タイル３０６、及びタイル３０８が順に生成され、こうして処理後の画像データが得られる。また、前段処理２２０からはタイル単位で部分画像が出力される。すなわち、前段処理２２０からは、タイル３０２、タイル３０４、タイル３０６、及びタイル３０８が順に出力される。部分画像の各画素のデータは、タイル３０２に示す矢印の順番で順次出力される。このとき、画像全体における走査されている画素の座標は、画像全体中でのタイルの位置と、タイル中の走査位置から、算出することができる。
【００２８】
図３（Ａ）にはまた、後段処理２３０において参照される画像データ３００の例が示されている。前段処理２２０において生成された画像データと後段処理２３０において参照される画像データは同一であるが、後段処理２３０においてはラスタ走査順に画像データ３００が参照される。すなわち、後段処理２３０では、ライン３１２、ライン３１４、ライン３１６の順に各画素のデータを参照することにより、画像全体に対する処理が行われる。この例において、後段処理２３０では、画像データ３００のライン３１２を参照して、画像データ３００に対する画像処理により得られる画像データにおける対応するラインのデータが生成されてもよい。
【００２９】
このように、前段処理２２０から出力された画像データを用いて後段処理２３０は画像処理を行う。しかしながら、前段処理２２０からの各画素のデータの出力順序と、各画素のデータの後段処理２３０による参照順序とは異なる。このような、接続される２つの処理部間の仕様又は制約の違いのために、前段処理２２０からデータが出力されてから、後段処理２３０にこのデータが入力されるまでの間に、データは一時的に何らかのバッファに保持される。Ｉ／Ｆ２５０はこのようなバッファを提供することができる。例えば、前段処理２２０は、画像に設定された、第１のサイズを有する複数のタイルのそれぞれに含まれるデータを、タイルごとにＩ／Ｆ２５０に送信することができる。また、後段処理２３０は、画像に設定された、第１のサイズとは異なる第２のサイズを有する複数のタイルのそれぞれに含まれるデータを、タイルごとにＩ／Ｆ２５０から受信することができる。
【００３０】
（インタフェース装置の構成例）
図５に示すように、前段処理２２０と後段処理２３０とを接続する本実施形態に係るＩ／Ｆ２５０は、前段処理２２０から取得したデータをキャッシュするキャッシュメモリ４３４を有している。また、Ｉ／Ｆ２５０はさらにキャッシュ判定部４１２を有している。キャッシュ判定部４１２は、キャッシュメモリ４３４に書き込まれたデータをキャッシュメモリ４３４とは異なる記憶部にライトバックするか否かを、後段処理２３０から取得した情報に基づいて制御することができる。このように、キャッシュ判定部４１２はＩ／Ｆ２５０におけるキャッシュ制御を実現できる。
【００３１】
以下では、ＲＡＭ１０６又は外部記憶装置１０８のような、キャッシュメモリ４３４とは異なる記憶部に確保した転送データの格納先を、以下ではグローバルバッファと総称する。グローバルバッファとしては例えばＤＲＡＭを用いることができる。また、キャッシュメモリ４３４は、例えばＳＲＡＭなどのオンチップメモリであり、グローバルバッファと比較して高速な読み書きが可能なメモリである。
【００３２】
通常のキャッシュメモリにおいては、データの不整合を防ぐために、キャッシュメモリにデータを書き込む際に同じデータが主記憶にも書き込まれる（ライトスルー）。あるいは、キャッシュメモリに書き込まれたデータは、破棄される前に主記憶へと書き込まれる（ライトバック）。しかしながら、Ｉ／Ｆ２５０は、キャッシュメモリ４３４に書き込まれたデータをグローバルバッファに書き込んでからこのデータを破棄するか、このデータをグローバルバッファに書き込まずにこのデータを破棄するか、を制御できる。
【００３３】
このような構成を有するＩ／Ｆ２５０を用いることにより、前段処理２２０から後段処理２３０へのデータ転送処理を効率化することができる。より具体的には、前段処理２２０から出力された画像データの全体をグローバルバッファ２４０に書き出す場合と比較して、処理速度を向上させ、及び消費電力を減少させることができる。すなわち、前段処理２２０により得られた画像データ全体をグローバルバッファ２４０に書き込み、及びグローバルバッファ２４０から読み出した場合、２つの画像のデータ量に対応するメモリアクセスが発生する。本実施形態では前段処理２２０から取得したデータの一部はグローバルバッファ２４０に書き込まれないため、メモリアクセスの増加に従うアクセス速度の低下及び消費電力の増加を抑制できる。
【００３４】
また、このような構成を有するＩ／Ｆ２５０を用いる場合、キャッシュメモリ４３４の容量を小さくすることができる。すなわち、前段処理２２０から出力された画像データの全体を格納可能なキャッシュメモリを設けることが不要になる。このような、回路規模が大きいことが多いキャッシュメモリの容量を小さくすることにより、製品の製造コストを減らすことができる。
【００３５】
図４は、Ｉ／Ｆ２５０の構成の一例を示すブロック図である。Ｉ／Ｆ２５０は、前段処理２２０からデータを取得する第１のポートであるライトポート４０２と、前段処理２２０から取得したデータを後段処理２３０に出力する第２のポートであるリードポート４０４とを備える。また、Ｉ／Ｆ２５０はＮｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ２１０（以下、ＮｏＣ２１０と呼ぶ）に接続されている。ＮｏＣ２１０にはグローバルバッファ２４０も接続されており、Ｉ／Ｆ２５０はＮｏＣ２１０を経由してグローバルバッファ２４０との間でデータを入出力するアクセスポート４０６を備えている。図２（Ａ）に示されるように、Ｉ／Ｆ２５０は、アクセスポート４０６と、ＮｏＣ２１０と、例えばＤＲＡＭコントローラのようなコントローラ２４５とを介して、グローバルバッファ２４０にアクセスできる。図５に示すように、Ｉ／Ｆ２５０は、ＮｏＣ２１０を介さずに、前段処理２２０及び後段処理２３０に接続されている。
【００３６】
さらに、Ｉ／Ｆ２５０は、前段処理２２０から取得したデータをキャッシュするキャッシュメモリ４３４を有する。また、Ｉ／Ｆ２５０は、キャッシュメモリ４３４に書き込まれたデータをグローバルバッファ２４０にライトバックするか否かを、後段処理２３０から取得した情報に基づいて制御するキャッシュ判定部４１２と、を有している。
【００３７】
以下、図５を参照して、Ｉ／Ｆ２５０の具体的な構成例を説明する。この例において、Ｉ／Ｆ２５０は、ライトポート４０２及びリードポート４０４への要求を同時に受け付けることが可能な、マルチポートの共有キャッシュである。
【００３８】
ライトポート４０２を介して、Ｉ／Ｆ２５０にはライト要求、同期情報、及びライトデータが入力される。ライトデータは前段処理２２０から入力される画素のデータである。また、ライト要求は、前段処理２２０から取得した、ライトデータの受け取りを要求することを示す情報である。ライト要求は、ライトデータを特定する情報を含むことができる。以下の例では、ライト要求は、ライトデータが格納されるグローバルバッファ２４０のメモリアドレスを示す（ただし、後述するように、ライトデータはグローバルバッファ２４０に格納されないかもしれない）。一方で、ライト要求が、ライトデータに対応する画素の画素位置を示していてもよい。同期情報は、前段処理２２０から取得した情報（第１の情報）である。このデータは、ライトデータが後段処理２３０に転送されるデータであることを示すことができる。詳細については後述する。
【００３９】
また、リードポート４０４を介して、Ｉ／Ｆ２５０にはリード要求及び同期情報が入力され、Ｉ／Ｆ２５０からリードデータが出力される。リードデータは後段処理２３０に入力される画素のデータである。リードデータは、前段処理２２０から入力されたライトデータであり、キャッシュメモリ４３４又はグローバルバッファ２４０に格納されている。リード要求は、後段処理２３０から取得した、リードデータの受け取りを要求することを示す情報である。リード要求は、リードデータを特定する情報を含むことができる。以下の例では、リード要求は、リードデータが格納されているグローバルバッファ２４０のメモリアドレスを示す（ただし、後述するように、リードデータはグローバルバッファ２４０に格納されていないかもしれない）。一方で、リード要求が、リードデータに対応する画素の画素位置を示していてもよい。同期情報は、後段処理２３０から取得した情報（第２の情報）である。この情報は、例えば、リードデータをキャッシュメモリ４３４からグローバルバッファ２４０にライトバックする必要がないことを示すことができる。詳細については後述する。
【００４０】
なお、本実施形態において、ライトデータとリードデータのデータ量は同じであり、ライト要求とリード要求のアドレス指定方法も同じである。また、ライトデータとリードデータのデータ量は特に制限されない。例えば、ライトデータ及びリードデータが、１画素のデータであってもよいし、所定サイズ（例えば縦１画素×横８画素）の画素ブロックに含まれる画素のデータであってもよい。また、上述のとおり、前段処理２２０からの各画素のデータの出力順序と、各画素のデータの後段処理２３０による参照順序とは異なるかもしれない。すなわち、ライトポート４０２は、前段処理２２０から、画像データのようなデータ群に含まれるデータを第１の順序で取得することができる。一方でリードポート４０４は、後段処理２３０へと、データ群に含まれるデータを第１の順序とは異なる第２の順序で出力することができる。
【００４１】
Ｉ／Ｆ２５０は、プリフェッチ部４１０、中間ＦＩＦＯ４２０、及びフェッチ部４３０を有している。プリフェッチ部４１０は、キャッシュ判定及びプリフェッチ動作を行うことができる。本実施形態においてプリフェッチ部４１０は、ライトポート４０２へのライト要求及びリードポート４０４へのリード要求を受け付ける。そして、プリフェッチ部４１０は、プリフェッチ部４１０が有するキャッシュ判定部４１２を用いて、それぞれの要求に対するキャッシュ判定を行う。すなわちキャッシュ判定部４１２は、キャッシュヒット又はキャッシュミスの判定を行うことができる。具体的には、キャッシュ判定部４１２は、ライト要求において指定されたグローバルバッファ２４０のメモリアドレスに対応するデータがキャッシュメモリ４３４に格納されていると判断した場合、キャッシュヒットの判定を行う。一方でキャッシュ判定部４１２は、このデータが格納されていないと判断した場合、キャッシュミスの判定を行う。また、キャッシュ判定部４１２は、リード要求において指定されたリードデータがキャッシュメモリ４３４に格納されていると判断した場合、キャッシュヒットの判定を行い、格納されていないと判断した場合、キャッシュミスの判定を行う。
【００４２】
ライト要求に対するキャッシュ判定結果、ライト要求、及びライトデータは、プリフェッチ部４１０から、中間ＦＩＦＯ４２０を介して、フェッチ部４３０が有するデータ取得部４３２へと送られる。データ取得部４３２は、ライトデータをキャッシュメモリ４３４に格納する。
【００４３】
通常のライト要求に対して、データ取得部４３２は、通常のキャッシュメモリへの書き込み時に行われる動作を行うことができる。例えば、プリフェッチ部４１０がライト要求に対してキャッシュヒットの判定を行った場合、キャッシュメモリ４３４には、ライト要求において指定されたアドレスのデータが格納されている。このため、フェッチ部４３０は、プリフェッチ部４１０からデータ取得部４３２へ送られたライトデータを、キャッシュメモリ４３４に上書きする。また、プリフェッチ部４１０がライト要求に対してキャッシュミスの判定を行った場合、キャッシュメモリ４３４には、ライト要求において指定されたアドレスのデータが格納されていない。この場合、プリフェッチ部４１０は、アクセスポート４０６を介して、グローバルバッファ２４０に対するリード要求を発行する。そしてフェッチ部４３０は、グローバルバッファ２４０から受け取ったデータにライトデータを上書きし、得られたデータをキャッシュメモリ４３４に格納する。
【００４４】
一方で本実施形態において、前段処理２２０は、後段処理２３０に転送するデータをＩ／Ｆ２５０に転送する場合、プリロード命令を指定してＩ／Ｆ２５０に対するライト要求を行う。この場合、プリフェッチ部４１０は、ライト要求に対してキャッシュミスの判定を行った場合であっても、グローバルバッファ２４０へのリード要求を発行しない。この場合、データ取得部４３２は、ライト要求と同期して入力されたライトデータを、キャッシュメモリ４３４に格納する。
【００４５】
また、リード要求に対するキャッシュ判定結果及びリード要求も、プリフェッチ部４１０から中間ＦＩＦＯ４２０を介してデータ取得部４３２へと送られる。リード要求に対して、データ取得部４３２は、通常のキャッシュメモリへの書き込み時に行われる動作を行うことができる。
【００４６】
例えば、プリフェッチ部４１０がリード要求に対してキャッシュヒットの判定を行った場合、キャッシュメモリ４３４には、リード要求において指定されたアドレスのデータが格納されている。このため、プリフェッチ部４１０がグローバルバッファ２４０に対するリード要求を発行する必要はない。データ取得部４３２は、リード要求がフェッチ部４３０に届いたときに、キャッシュメモリ４３４からリード要求に示されるデータを取り出し、リードデータとしてリードポート４０４に転送する。
【００４７】
一方、プリフェッチ部４１０がリード要求に対してキャッシュミスの判定を行った場合、キャッシュメモリ４３４には、リード要求において指定されたアドレスのデータが格納されていない。このためプリフェッチ部４１０は、アクセスポート４０６を介して、グローバルバッファ２４０に対するリード要求を発行する。するとフェッチ部４３０には、リード要求に対してキャッシュミスの判定が行われた場合と同様、リード要求において指定されたメモリアドレスのデータを含むデータが入力される。データ取得部４３２は、リード要求がフェッチ部４３０に届いたときに、グローバルバッファ２４０からのデータを受信してキャッシュメモリ４３４に格納する。そして、データ取得部４３２は、リード要求に示されるデータを、リードデータとしてリードポート４０４に転送する。
【００４８】
以上のようにＩ／Ｆ２５０は、ライト要求及びリード要求に対して適切な処理を行うことができる。
【００４９】
次に図６を参照してキャッシュ判定部４１２の構成について説明する。以下の例において、連想（ライン選択）方式としてはフルアソシアティブ方式が用いられ、Ｉ／Ｆ２５０はフルアソシアティブ方式に従うキャッシュ動作を行う。Ｉ／Ｆ２５０はマルチポートの共有キャッシュであるため、キャッシュ判定部４１２には複数のポートからの要求が入力される。図６には、複数のポートとして、ポート［０］５１２、ポート［１］５１４、・・・、及びポート［Ｎ−１］５１６が示されている。上述のライトポート４０２及びリードポート４０４は、これらのポートのいずれかである。
【００５０】
選択回路５１８は、各ポート５１２〜５１６から入力された要求を選択する。選択されたリード要求又はライト要求に示されるアドレスは、アドレスレジスタ５２１に記憶される。また、ライトポート４０２又はリードポート４０４に入力された同期情報は、同期情報レジスタ５３０に記憶される。
【００５１】
キャッシュ判定部４１２は、８個のキャッシュタグ４１４を記憶することができる。この例において、Ｉ／Ｆ２５０は８ノードのフルアソシアティブ方式のキャッシュ装置となる。また８個のキャッシュタグ４１４のそれぞれには、予め定められた番号（［０］〜［７］）が付されており、これらの番号は、対応するキャッシュメモリの「相対」キャッシュライン番号を示す。図６の例において、キャッシュメモリ４３４は８個のキャッシュラインを有しており、８個のキャッシュラインにはＦＩＦＯ方式に従ってデータが格納される。なお、キャッシュラインの数、及びそれぞれのキャッシュラインの容量は特に限定されず、適宜設定することができる。
【００５２】
またキャッシュ判定部４１２は、８個の同期情報５３２を記憶することができる。それぞれの同期情報５３２は８個のキャッシュタグ４１４のうちの１つに対応し、同じ番号（［０］〜［７］）が付されている。同期情報５３２は、ライトポート４０２に入力された同期情報、リードポート４０４に入力された同期情報、又はこれらの演算結果を示すことができる。以下の例において、同期情報５３２は、ライトポート４０２に入力された同期情報、又はこれとリードポート４０４に入力された同期情報との演算結果である。
【００５３】
以下では最も古いデータが格納されているキャッシュラインの「相対」キャッシュライン番号は［０］であり、最も新しいデータが格納されているキャッシュラインの「相対」キャッシュライン番号は［７］である。また、キャッシュミスと判定されると、これから新しいデータが格納される（破棄されるデータが格納されている）キャッシュラインの「相対」キャッシュライン番号が［７］となる。
【００５４】
キャッシュ判定部４１２は８個の比較器５２３を有し、それぞれの比較器５２３は８個のキャッシュタグ４１４のうちの１つに対応する。比較器５２３は、対応するキャッシュタグ４１４に格納されたアドレスと、アドレスレジスタ５２１に格納されたアドレスと、の比較を行い、アドレス同士が「一致」するか否かを示す比較結果５２４を判定器５２５へと出力する。
【００５５】
ここで、８個の比較器５２３から出力された８個の比較結果５２４のうち、１つでも「一致」を示す場合、判定器５２５はキャッシュヒットと判定する。一方で、８個の比較結果５２４のうちいずれも「一致」を示していない場合、判定器５２５はキャッシュミスと判定する。
【００５６】
キャッシュミスと判定された場合（分岐５２６でＹＥＳ）、アドレスレジスタ５２１に保持されているアドレスを値として有するように、キャッシュタグ４１４が更新される。図６においてキャッシュタグ４１４は、シフトレジスタを有する記憶領域に格納される。判定結果がキャッシュミスである場合、シフト動作が行われ、キャッシュタグの値は下流のキャッシュタグに移動する。すなわち、キャッシュタグ［０］の値はキャッシュタグ［１］の値に変化し、キャッシュタグ［１］の値はキャッシュタグ［２］の値に変化する。同様に移動が繰り返され、キャッシュタグ［６］の値はキャッシュタグ［７］の値に変化する。そして、キャッシュタグ［７］の値は、アドレスレジスタ５２１に格納されているアドレスの値に変化する。
【００５７】
このように、図６の例では、古いキャッシュタグ［０］の値が破棄される、「ＦＩＦＯ方式（ラウンドロビン方式）」のキャッシュタグのリプレイス手法が用いられている。このような方式を、フルアソシアティブ方式のキャッシュ装置において採用することにより、装置を簡略化することができる。
【００５８】
また、キャッシュミスと判定された場合、同期情報レジスタ５３０に格納されている値を保持するように、同期情報５３２が更新される。図６の例において同期情報５３２は、キャッシュタグ４１４と同様に、シフトレジスタを有する記憶領域に格納される。キャッシュミスと判定された場合、キャッシュタグ４１４と同様に、同期情報５３２のシフト動作が行われ、同期情報の値は下流の同期情報に移動する。すなわち、同期情報レジスタ５３０に格納されている値は同期情報［７］に書き込まれ、古い同期情報［０］の値は破棄される。
【００５９】
一方で、キャッシュヒットと判定された場合、このようなキャッシュタグ４１４及び同期情報５３２の更新は行われない。その一方で、キャッシュヒットと判定された場合、修正器５３５は、キャッシュヒットと判定されたキャッシュタグ４１４に対応する同期情報５３２の修正を行う。すなわち、修正器５３５は、アドレスレジスタ５２１に格納されたアドレスと一致する値を有しているキャッシュタグ４１４の番号（［０］〜［７］）と、同じ番号を有する同期情報５３２の値を修正する。
【００６０】
判定器５２５は、以上のようなキャッシュヒット又はキャッシュミスを示すキャッシュ判定結果を、キャッシュミスフラグ５２８として出力する。また、判定結果がキャッシュヒットである場合、判定器５２５は、アドレスレジスタ５２１に格納されたアドレスと一致する値を有しているキャッシュタグ４１４の番号（［０］〜［７］）を、ライン番号５２７として出力する。一方で、判定結果がキャッシュミスである場合、判定器５２５は、７（すなわちキャッシュタグ［７］の番号）をライン番号５２７として出力する。さらにキャッシュ判定部４１２は、キャッシュミスの判定を行った場合、シフト動作により破棄されるキャッシュタグ［０］の値５４０、及び破棄される同期情報［０］の値５４２も、キャッシュ判定結果として出力する。これらの情報に従って、プリフェッチ部４１０及びフェッチ部４３０は上述の動作を行うことができる。
【００６１】
なお、キャッシュヒットと判定された場合、ライト要求を受信したフェッチ部４３０は、ライン番号５２７により示されるキャッシュラインにライトデータを格納する。また、リード要求を受信したフェッチ部４３０は、ライン番号５２７により示されるキャッシュラインからリードデータを読み出す。
【００６２】
一方、キャッシュミスと判定された場合、フェッチ部４３０は、ライン番号５２７により示されるキャッシュライン［７］に格納されていたデータを、同期情報［０］の値５４２に従って破棄し、又はグローバルメモリにライトバックする。ライトバックを行う場合、フェッチ部４３０は、グローバルメモリのキャッシュタグの値５４０により示されるアドレスに対してライトバックを行う。また、ライト要求を受信したフェッチ部４３０は、ライン番号５２７により示されるキャッシュライン［７］にライトデータを格納する。さらに、リード要求を受信したフェッチ部４３０は、ライン番号５２７により示されるキャッシュライン［７］に、グローバルバッファ２４０から受信したデータを書き込む。
【００６３】
（動作例）
本実施形態において、Ｉ／Ｆ２５０は前段処理２２０の処理結果を後段処理２３０に転送し、また転送できない処理結果をグローバルバッファ２４０に退避する。このような処理制御は、例えば、以下のように同期情報を使用することにより実現できる。
【００６４】
本実施形態において、前段処理２２０が処理結果を後段処理２３０に転送する場合、前段処理２２０はプリロード命令を用いてＩ／Ｆ２５０に対するライト要求を行う。図６の例において前段処理２２０は、プリロード命令を行う際に、値が「１」である同期情報をＩ／Ｆ２５０に入力する。
【００６５】
上述のとおり、キャッシュ判定部４１２はプリロード命令が入力された場合、キャッシュミスの判定を行う。すなわち、上述の通り、キャッシュタグにアドレスを書き込み、前段処理から入力された同期情報の値である「１」を保持するように、同期情報５３２を更新する。また、上述の通り、この場合プリフェッチ部４１０はグローバルバッファ２４０へのリード要求を発行せず、前段処理２２０の処理結果であるライトデータがキャッシュメモリ４３４に格納される。
【００６６】
一方で後段処理２３０は、前段処理２２０の処理結果を取得するために、Ｉ／Ｆに対するリード要求を行う。図６の例において後段処理２３０は、リード要求を行う際に、値が「１」である同期情報をＩ／Ｆ２５０に入力する。上述の通り、キャッシュ判定部４１２はリード要求に示されるアドレスに従ってキャッシュ判定を行い、キャッシュヒットと判定された場合、修正器５３５は同期情報５３２を修正する。本実施形態において修正器５３５は、キャッシュヒットと判定されたキャッシュタグ４１４に対応する同期情報５３２と、同期情報レジスタ５３０の値と、のＸＯＲ(Exclusive-OR）演算を行う。そして、ＸＯＲ演算により得られた値で、キャッシュヒットと判定されたキャッシュタグ４１４に対応する同期情報５３２を更新する。本実施形態の場合、プリロード命令により前段処理２２０からのデータがキャッシュメモリ４３４に格納されると、対応する同期情報５３２の値は上記の通り「１」となる。一方、リード要求を受けた際の同期情報レジスタ５３０の値は上記の通り「０」である。したがって、キャッシュメモリ４３４に格納されたデータに対するリード要求が行われると、対応する同期情報５３２の値は「１」から「０」になる。
【００６７】
前段処理２２０及び後段処理２３０の処理が進むにつれて、キャッシュタグが更新されていき、上記のように一部のキャッシュタグはキャッシュ判定部４１２から破棄される。このとき、破棄されるキャッシュタグの値５４０、破棄される同期情報の値５４２、及びライン番号５２７が、フェッチ部４３０に入力される。
【００６８】
入力された同期情報の値５４２が「０」である場合、キャッシュタグの値５４０が示すアドレスに対応する前段処理２２０からのデータは、後段処理２３０からのリード要求に従って後段処理２３０に転送されている。このため、このデータをグローバルバッファ２４０に待避させる必要はない。このデータは、プリロード命令により、キャッシュメモリ４３４のライン番号５２７に対応するキャッシュラインに格納されている。このため、入力された同期情報の値５４２が「０」である場合、フェッチ部４３０は、キャッシュメモリ４３４が有する、ライン番号５２７に対応するキャッシュラインのデータを破棄する。
【００６９】
一方、入力された同期情報の値５４２が「１」である場合、キャッシュタグの値５４０が示すアドレスに対応する前段処理２２０からのデータは、後段処理２３０からのリード要求がないため後段処理２３０に転送されていない。このデータは、プリロード命令により、キャッシュメモリ４３４のライン番号５２７に対応するキャッシュラインに格納されている。このため、入力された同期情報の値５４２が「１」である場合、フェッチ部４３０は、キャッシュメモリ４３４が有する、ライン番号５２７に対応するキャッシュラインに格納されているデータを、グローバルバッファ２４０に待避させる。具体的にはフェッチ部４３０は、このデータをキャッシュタグの値５４０が示すグローバルバッファ２４０のアドレスに格納（ライトバック）する。
【００７０】
以上のように、前段処理２２０からのライト要求により、ライトデータはキャッシュメモリに一時記憶される。そして、このライトデータをグローバルバッファ２４０にライトバックするかどうかは、後段処理２３０からのリード要求によって制御される。このように、前段処理２２０が送信したライトデータに対するライトバック動作を実行するか否かは、データを受信する後段処理２３０が決定する。より具体的には、後段処理２３０から得られた、リードデータをキャッシュメモリ４３４からグローバルバッファ２４０にライトバックする必要がないことを示す、リードポート４０４に入力された同期情報が参照される。そして、このような同期情報に少なくとも従って、破棄するデータをライトバックするか否かが切り替えられている。以上の例では、キャッシュメモリ４３４に書き込まれているデータを破棄する際に、このような同期情報に従って、ライトバックの有無が切り替えられている。
【００７１】
上記の具体例においては、プリロード命令を用いることによりライトデータが後段処理２３０に転送されるデータであることが示されている場合、キャッシュメモリ４３４に格納されたデータに関連付けて、同期情報の値５４２として「１」が格納される。この同期情報は、前段処理２２０から得られた、ライトデータが後段処理２３０に転送されるデータであることを示している。また、こうしてキャッシュメモリ４３４に格納されたデータは、グローバルバッファ２４０から取得されたものではなく、前段処理２２０から直接取得したものである。一方で、こうしてキャッシュメモリ４３４に格納されたデータを要求する場合、後段処理２３０は、リードポート４０４に同期情報として「０」を入力することができる。この同期情報は、後段処理２３０から得られた、リードデータをキャッシュメモリ４３４からグローバルバッファ２４０にライトバックする必要がないことを示している。これらの情報に従って、フェッチ部４３０は、キャッシュメモリ４３４に書き込まれているデータをグローバルバッファ２４０にライトバックせずに破棄した。
【００７２】
このようにフェッチ部４３０は、前段処理２２０から得られた同期情報と、後段処理２３０から得られた同期情報と、の双方に基づいて、キャッシュメモリ４３４に書き込まれているデータをグローバルバッファ２４０にライトバックするか否かを制御している。とりわけ、上記の例においては、前段処理２２０から得られた同期情報と、後段処理２３０から得られた同期情報の演算結果である「０」が、同期情報の値５４２として格納されている。そして、この同期情報の値５４２に従って、ライトバックの制御が行われた。一方で、このような構成は一例にすぎない。例えば、同期情報の値５４２として、前段処理２２０から得られた同期情報と、後段処理２３０から得られた同期情報と、のそれぞれが格納されてもよい。
【００７３】
（後段処理でタイル走査が行われる場合の動作例）
実施形態１のようなＩ／Ｆ２５０を用いることにより、前段処理２２０及び後段処理２３０で用いられる走査順序にかかわらず、このような動作を実現することができる。実施形態１では、例えば図３（Ａ）に示すように、前段処理２２０でタイル走査が行われ、後段処理２３０でラスタ走査が行われていたが、前段処理２２０及び後段処理２３０はこれに限定されない。例えば、前段処理２２０で所定サイズのタイルに従うタイル走査が行われ、後段処理２３０で異なる大きさのタイルに従うタイル走査が行われる場合にも、実施形態１の方法は有効である。このような場合、後段処理２３０は、例えば、１つのタイル内の各画素の画素データをＩ／Ｆ２５０から取得し、取得した画素データを用いた処理を行い、このタイル内の各画素の処理後の画素データを生成することができる。後段処理２３０は、このようなタイルごとの処理をそれぞれのタイルについて繰り返すことにより、処理後の画像データを生成することができる。この場合もＩ／Ｆ２５０は、上記のように、後段処理２３０に要求されたデータをキャッシュメモリ４３４から出力し、又はグローバルバッファ２４０から取得して出力することができる。
【００７４】
一方、このような１つのタイルについての処理において、タイル外の画素の画素データが参照されることがある。例えば、後段処理２３０が画像データに対してＦＩＲフィルタのようなフィルタ処理を行う場合、ある画素の画素データを算出するために、周辺画素の画素データが参照されることがある。このような場合、後段処理２３０は、１つのタイル内の各画素の画素データに加えて、このタイルの周辺画素を含む、より大きなタイルの画素データをＩ／Ｆ２５０から取得する。
【００７５】
図４（Ｂ）〜（Ｅ）の例では、後段処理２３０は、１つ目のタイルを処理する際に、より大きなタイルである領域３９１内のデータを取得し、同様に２〜４つ目のタイルを処理する際に、より大きなタイルである領域３９２〜３９４内のデータを取得する。図４（Ｂ）〜（Ｅ）において、後段処理２３０によって画素のデータが２回以上取得される領域は、ハッチングで示されている。以下、このような領域のことをオーバーラップ領域と呼ぶ。例えば、後段処理２３０において、処理対象画素を中心とする縦５画素×横５画素の計２５画素を参照するフィルタ処理を行う場合、オーバーラップ領域の幅は２画素となる。
【００７６】
以下、このようなオーバーラップ領域が存在する場合の、本実施形態に係るインタフェース装置の動作例について、図３（Ｂ）を参照して説明する。図３（Ｂ）で後段処理２３０は、領域３５０の画像データをＩ／Ｆ２５０から取得しようとしている。後段処理２３０は、領域３５０のうち、領域３５１のデータに対するリード要求を行う際には、図３（Ａ）の場合と同様に、リード要求の際に同期情報として「１」を設定する。ここで、領域３５１はオーバーラップ領域ではない領域であり、すなわち後続するタイルの処理において参照されない領域である。この場合、上述の通り、キャッシュヒットした場合は、キャッシュメモリ４３４に格納されているデータがライトバックされずに破棄される。
【００７７】
このように、後段処理２３０は、Ｉ／Ｆ２５０に対しデータを要求する際に、データを後の処理で再度要求するか否かを判定することができる。また、再度要求しないとの判定に応じて、要求するデータをキャッシュメモリ４３４からグローバルバッファ２４０にライトバックする必要がないことを示す同期情報（「１」）を、Ｉ／Ｆ２５０に対して送信することができる。
【００７８】
一方で後段処理２３０は、領域３５０のうち、領域３５２のデータに対するリード要求する際には、リード要求の際に同期情報として「０」を設定する。ここで、領域３５２はオーバーラップ領域であり、すなわち後続するタイルの処理において参照される領域である。この場合、キャッシュヒットしたとしても、ＸＯＲ演算の結果、キャッシュメモリ４３４に格納されているデータに対応する同期情報５３２の値は「１」のままとなる。このため、キャッシュヒットしたとしても、キャッシュメモリ４３４に格納されているデータはグローバルバッファ２４０にライトバックされる。この結果として、後続するタイルの処理時に、参照する領域のデータをグローバルバッファ２４０から取得することが可能となる。
【００７９】
このように、Ｉ／Ｆ２５０に送信される、後段処理２３０が要求したデータをキャッシュメモリ４３４からグローバルバッファ２４０にライトバックする必要性を示す同期情報を制御することができる。後段処理２３０は、このような制御を、Ｉ／Ｆ２５０に対してタイル領域に含まれるデータを要求する際に、データが他のタイル領域に含まれるか否か（すなわちオーバーラップ領域に含まれるか否か）に応じて行うことができる。
【００８０】
なお、本実施形態に係るインタフェース装置の動作は、上記のものに限定されない。例えば、図３（Ｃ）の例で、後段処理２３０は、１つのタイルを処理する際に領域３６０のデータを取得する。ここで、図３（Ｃ）の例では行３８１の読み込みが終わった後に行３８２の読み込みが行われる。このため、別のタイルを処理するために領域３７５のデータを読み込む際には、領域３６０の下端にある領域３６４のデータがキャッシュメモリから破棄されている可能性が高い。このため、領域３６４のデータをグローバルバッファ２４０に待避させるために、後段処理２３０は領域３６４のデータに対するリード要求を行う際に同期情報として「０」を設定する。
【００８１】
一方で、図３（Ｃ）の例では領域３６０のデータの読み込みが終わった後に領域３７０のデータの読み込みが行われる。したがって、領域３７０は領域３６２を含んでいるが、領域３７０のデータを読み込む際に領域３６２のデータはキャッシュヒットする。すなわち、領域３６２のデータをグローバルバッファ２４０に待避させる必要はないため、後段処理２３０は領域３６４のデータに対するリード要求を行う際に同期情報として「１」を設定してもよい。
【００８２】
後段処理２３０の種類は特に限定されず、後段処理２３０が解像度変換（任意変倍処理）のような画像の大きさを変更する処理を行う場合にも、本実施形態を適用できる。タイル処理のような領域分割手法を用いて解像度変換を行う場合、変倍率によっては、処理において参照される領域の大きさ、又は処理により出力される領域の大きさが、画像中のタイルの位置によって変動する場合がある。一方で、後段処理２３０はこのような参照する領域の大きさの変動を検知できるため、領域の大きさの変化に応じてリード要求の数を変えることにより、処理に必要なデータを得ることができる。また、後段処理２３０は、参照する領域の大きさの変化と、出力される領域の大きさの変化とを検知することができるため、上述したオーバーラップ領域の変化も検知できる。このため、後段処理２３０は、上述のように同期情報の値を変更することで、ライトバック動作を行うかどうかを制御することができる。
【００８３】
以上のように本実施形態によれば、Ｉ／Ｆ２５０は、前段処理２２０による処理後のデータの少なくとも一部を、グローバルバッファ２４０への一時保存を行わずに、後段処理２３０に直接転送することができる。また、Ｉ／Ｆ２５０は、このように直接転送できなかったデータのみをグローバルバッファ２４０に待避させる。このように、Ｉ／Ｆ２５０を用いて前段処理２２０と後段処理２３０とを直結することにより、グローバルバッファ２４０に待避することなく後段処理２３０に直接転送されるデータと、グローバルバッファ２４０に待避するデータと、を選り分けることができる。このため、前段処理２２０から出力された画像データの全体をグローバルバッファ２４０に書き出す場合と比較して、処理速度を向上させ、及び消費電力を減少させることができる。このように、Ｉ／Ｆ２５０を用いることにより、前段処理２２０から後段処理２３０へのデータ転送処理を効率化することができる。
【００８４】
Ｉ／Ｆ２５０はキャッシュメモリ４３４の大きさに応じてこのような選り分け動作を行うことができる。前段処理２２０から後段処理２３０に直接データを転送するためには、データがグローバルバッファ２４０に待避する前に後段処理２３０がリード要求を行う必要がある。このため、キャッシュメモリ４３４の容量が大きいほど、直接データを転送するためのリード要求のタイミリミットが遅くなる。直接のデータ転送が行われると、その後Ｉ／Ｆ２５０はこのデータをグローバルバッファ２４０にライトバックせずにキャッシュメモリ４３４から破棄するため、グローバルバッファ２４０へのアクセス量が減少する。このため、キャッシュメモリの大きさと、グローバルバッファ２４０へのアクセス量と、のバランスを調整することができる。キャッシュメモリ４３４の容量が大きいほど、前段処理２２０と後段処理２３０とを疎結合化でき、Ｉ／Ｆ２５０のシステム上での動作がより安定になる。
【００８５】
［実施形態２］
実施形態１では、１つのチップ内にある前段処理２２０と後段処理２３０とが接続された。しかしながら、前段処理２２０と後段処理２３０が別々のチップに搭載されていてもよい。実施形態２においては、図２（Ｂ）に示されるようにチップ２６５（チップＢ）は、Ｉ／Ｆ２５０と、後段処理２３０とを有している。Ｉ／Ｆ２５０は実施形態１と同様の機能を持ち、チップ２６５とは異なるチップ２６０（チップＡ）が有している前段処理２２０と接続されている。前段処理２２０のＷＤＭＡＣ２２６は、チップ２６５のグローバルバッファ２４０のアドレスへの、処理部２２４による処理結果のライト要求を発行する。図２（Ｂ）ではチップ間のインタフェースの一例としてＰＣＩｅが用いられており、チップ２６０のＰＣＩｅ２２８はライト要求をＰＣＩｅの転送プロトコルに変換してチップ２６５に転送する。チップ２６５のＰＣＩｅ２３８は、チップ２６０からの転送データを受信し、Ｉ／Ｆ２５０にライト要求を行う。チップ２６５の後段処理２３０、ＮｏＣ２１０、コントローラ２４５、及びグローバルバッファ２４０の機能は、実施形態１と同様である。
【００８６】
このような構成により、複数のチップ間にまたがって、処理部間でのデータ処理の仕様又は制約の違いを吸収しながら、処理部間でのデータ転送を行うことができる。この例において、前段処理２２０から出力するデータ量以上のデータを転送する必要はない。また、この例において後段処理２３０を有するチップ２６５がＩ／Ｆ２５０及びグローバルバッファ２４０を有している。したがって、この構成によれば、チップ２６５におけるキャッシュメモリの大きさと、グローバルバッファ２４０へのアクセス量と、のバランスを調整することができる。チップ２６０の前段処理２２０は、チップ間インタフェースを介して実施形態１と同様に予め定められた同期情報を転送することができる。また、チップ２６５のＩ／Ｆ２５０は、前段処理２２０から受け取った同期情報を、実施形態１と同様に後段処理２３０から受け取った同期情報で修正することができる。
【００８７】
［実施形態１，２の変形例］
以下、実施形態１，２における同期情報の修正についてさらに詳細に説明する。実施形態１と同様の方式を用いる場合、同期情報の修正は以下のように行うことができる。すなわち、ライトポート４０２へライト要求とともに入力される同期情報と、リードポート４０４へリード要求とともに入力される同期情報とを用いて、所望のキャッシュラインについての同期情報を演算することができる。そして、キャッシュミスが生じると、最も古いキャッシュライン［０］についての同期情報［０］はＩ／Ｆ２５０から破棄される。このとき、破棄される同期情報［０］の値が１である場合には、グローバルバッファ２４０（例えばＤＲＡＭ）にキャッシュデータをライトバックすることができる。
【００８８】
一方、実施形態２のようにチップ間でデータを送受信するような場合など、優先的にライトポートからのデータをリードポートに伝達したいことがある。このような場合には、上記のようなライトバックを行わない動作を用いることができる。例えば、ライトポート４０２からの入力をストール（一時停止）し、リードポート４０４からのリード要求を優先的に処理することができる。そして、最も古いキャッシュライン［０］に対するリード要求が入力され、同期情報［０］の値が１から０になり、キャッシュライン［０］のキャッシュデータが破棄可能となった時に、ライトポート４０２の入力ストール（一時停止）を解除することができる。
【００８９】
このような実施形態によれば、ライトポート４０２からのデータ受信より、リードポート４０４へのデータ送信を優先的に行うことにより、グローバルバッファ２４０へのデータの書き戻し量を抑制することができる。また、グローバルバッファ２４０からのデータの再読み出し量も抑制されるため、グローバルバッファ２４０（例えばＤＲＡＭ）へのアクセス帯域を削減し、ライトポート４０２からリードポート４０４への伝達レイテンシを短くすることができる。
【００９０】
さらに、同期情報を用いた制御手法について詳細に説明する。実施形態１の方式では、同期情報は１ビットのフラグであり、ライトポート４０２から受信するデータと、リードポート４０４に送信するデータと、の間のデータ転送比は１対１であった。一方で、同期情報はＮビット（Ｎは１以上）のカウント値であってもよい。例として、ライトポート４０２からの受信データを、リードポート４０４から７回読み出す場合について説明する。この場合、ライトポート４０２へとライト要求とともに入力される同期情報の値を７にすることができる。こうして入力された同期情報（値＝７）は、キャッシュライン［７］についての同期情報［７］として書き込まれる。そして、リードポート４０４へのリード要求がキャッシュヒットするたびに、対応するキャッシュラインについての同期情報から１が減算される。そして、最も古いキャッシュライン［０］からキャッシュデータが破棄されるときに、対応する同期情報［０］の値が０であればライトバックは行われず、１以上であればグローバルバッファ２４０（例えばＤＲＡＭ）への書き戻しが行われる。この場合、ライトポート４０２からリードポート４０４へのデータ転送比を１：７に制御することができる。
【００９１】
また、同期情報の使い方を工夫することにより、ライトポート４０２から受信するデータと、リードポート４０４に送信するデータと、のデータ転送比が予め確定していない場合であっても、データ転送比を制御できる。例えば、８ビットの同期情報を用い、前段処理２２０は、ライト要求とともに値として０ｘＦＦ（無限倍）を持つ同期情報を、ライトポート４０２からＩ／Ｆ２５０に書き込むことができる。このとき、前段処理２２０は、送信データが後段処理２３０でどのように利用されるかを知る必要は必ずしもない。データ転送比をどのような大きさにするかは、データを利用する後段処理２３０が決めることができる。この場合も、リードポート４０４へリード要求とともに入力される同期情報の値と、キャッシュヒットしたキャッシュラインについての同期情報と、の演算により、キャッシュラインのキャッシュデータをライトバックするか破棄するかを定めることができる。
【００９２】
例えば、後段処理２３０は、リードポート４０４へのリード要求により、必要な回数だけ所望のキャッシュデータを読み出すことができる。キャッシュメモリに所望のデータがない場合、グローバルバッファ２４０（例えばＤＲＡＭ）から再読み出しされたデータ及び同期情報が、リードポート４０４に送信される。そして、リードポート４０４へのリード要求により、所望のデータを最後に読み出すときに、キャッシュラインについての同期情報を強制的に０の値で上書きすることができる。このようなキャッシュラインのキャッシュデータは、グローバルバッファ２４０に書き戻されることなく、キャッシュメモリから廃棄される。後段処理２３０は、リードポート４０４へリード要求とともに入力する同期情報を用いて、このような同期情報の上書きを行うことができる。
【００９３】
このような実施形態によれば、前段処理２２０の送信データと後段処理２３０の受信データとのデータ転送比を容易に制御することができる。とりわけ、上述の実施形態のように、後段処理２３０が同期情報を制御することにより、柔軟なデータ転送比を実現することがきる。この場合、前段処理２２０はデータを単純に送信すればよい。
【００９４】
［実施形態３］
上述の実施形態においては、画像データを異なる走査順序で送受信したり、フィルタ処理のオーバーラップ領域を考慮したりするために、大きなキャッシュメモリを用いることが望ましい。キャッシュメモリが大きいほど、グローバルバッファ（例えばＤＲＡＭ）へのデータ退避及び再読み出しのためのアクセスを抑制することができるため、グローバルバッファへのアクセス帯域を削減できる。
【００９５】
このため、キャッシュメモリとして、従来のＳＲＡＭの代わりに、spin-transfer torque magnetic RAM（ＳＴＴ−ＭＲＡＭ）のような、次世代の不揮発性メモリを用いることができる。また、次世代のメモリと呼ばれる、ＦＲＡＭ（登録商標）、ＲｅＲＡＭ、ＰＣＭなどを用いることもできる。例えば、ＳＴＴ−ＭＲＡＭは、ＳＲＡＭに比べて回路素子が小さいため、４倍以上の容量を有することが容易である。このため、キャッシュメモリの容量を大きくすることができる。また、ＳＴＴ−ＭＲＡＭの消費電力は、ＳＲＡＭと比べて、リードアクセスについては約１／６０の大きさでありうるが、ライトアクセスについては約１．６倍の大きさとなりうる。しかしながら、上記の変形例のように、本発明の一実施形態に係るインタフェース装置は、前段処理２２０によるライト１回に対する後段処理２３０によるリード回数、すなわちデータ転送比を容易に制御できる。このため、ＳＴＴ−ＭＲＡＭを用いることによる消費電力の抑制効果を活用することができる。
【００９６】
以上のように、キャッシュメモリとしてＳＴＴ−ＭＲＡＭなどの次世代メモリ又は不揮発性メモリを用いることにより、キャッシュ容量を大きくし、データ伝送の効率を向上することができる。また、ライトポートに対するリードポートのデータ転送比が大きいとき、ＳＴＴ−ＭＲＡＭを用いることで効果的に消費電力を抑制できる。
【００９７】
［実施形態４］
前段処理２２０は、撮像センサなどのセンシングデバイスであってもよい。例えば、撮像センサは単純なラスタ走査順で撮像データを送信することが多い。また、後段処理２３０は、撮像データに対する高画質化処理であってもよい。上述の実施形態によれば、省メモリ化が可能なタイル領域単位の画像処理を用いるための走査変換、及びフィルタ処理のためのオーバーラップ領域の制御を行うことができる。そして、上述の実施形態によれば、前段処理２２０は単純にデータ送信を行うことができ、後段処理２３０が同期情報を制御することにより多彩な方式のデータ受信を行うことができる。したがって、上述の実施形態は、撮像センサなどのセンシングデバイスが共有キャッシュＩ／Ｆに対する単純なデータ送信を行い、複雑な画像処理を行う後段処理２３０がその機能及び動作に応じたデータ受信を行うように使用可能である。
【００９８】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９９】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【０１００】
２２０：前段処理、２３０：後段処理、２５０：共有キャッシュＩ／Ｆ、４０２：ライトポート、４０４：リードポート、４１０：プリフェッチ部、４３０：フェッチ部
【図１】
2020144856.tif 000003
【図２】
2020144856.tif 000004
【図３】
2020144856.tif 000005
【図４】
2020144856.tif 000006
【図５】
2020144856.tif 000007
【図６】
2020144856.tif 000008