(57)【要約】      （修正有）【課題】カウンタフロー・パイプラインを用いて、データを確実且つ柔軟に比較する。【解決手段】複数の第１ノードを有し、第１方向にある第１ノードへ当該第１ノードの保持する第１データを移動させる第１パイプラインと、第１パイプラインの第１ノードの各々に対応する複数の第２ノードを有し、第１方向と逆の第２方向にある第２ノードへ当該第２ノードの保持する第２データを移動させる第２パイプラインと、第１ノードの１つを着目ノードとして、当該着目ノードに保持されている第１データと、第２ノードに保持されている第２データと、を比較する比較手段と、を有するデータ処理装置を複数備える演算装置において、外部装置から第１データと第２データとを取得する取得手段と、第１データを複製して第１パイプラインへ入力する第１入力手段と、第２データを第２パイプラインへ入力する第２入力手段と、を更に備え、複数のデータ処理装置を直列に接続する。【選択図】図１
2011257880.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１ノードを有し、当該第１ノードに対して第１方向にある第１ノードへ当該第１ノードの保持する第１データを移動させる第１パイプラインと、
前記第１パイプラインの第１ノードの各々に対応している複数の第２ノードを有し、当該第２ノードに対して前記第１方向と逆の第２方向にある第２ノードへ当該第２ノードの保持する第２データを移動させる第２パイプラインと、
前記第１パイプラインの第１ノードの１つを着目ノードとして、当該着目ノードに保持されている第１データと、当該着目ノードに対応する第２ノードに保持されている第２データと、を比較する比較手段と、
を有するデータ処理装置を複数備える演算装置であって、
外部装置から第１データと第２データとを取得する取得手段と、
前記取得した第１データを複製して前記複数のデータ処理装置の第１パイプラインのそれぞれへ入力する第１入力手段と、
前記取得した第２データを前記複数のデータ処理装置のうちの１つの第２パイプラインへ入力する第２入力手段と、
を更に備え、
前記複数のデータ処理装置の第２パイプラインが直列に接続されていることを特徴とする演算装置。
【請求項２】
前記複数のデータ処理装置は複数のグループにグループ分けされており、
前記第２入力手段は、前記グループごとに、前記グループのうちの１つのデータ処理装置の第２パイプラインへ前記第２データを入力し、
前記グループごとに、前記複数のデータ処理装置の第２パイプラインが直列に接続されていることを特徴とする請求項１に記載の演算装置。
【請求項３】
前記グループ分けを動的に変更する手段をさらに備えることを特徴とする請求項２に記載の演算装置。
【請求項４】
複数の第１ノードを有し、当該第１ノードに対して第１方向にある第１ノードへ当該第１ノードの保持するアドレスを移動させる第１パイプラインと、
前記第１パイプラインの第１ノードの各々に対応している複数の第２ノードを有し、当該第２ノードに対して前記第１方向と逆の第２方向にある第２ノードへ当該第２ノードの保持するキャッシュタグを移動させる第２パイプラインと、
前記第１パイプラインの第１ノードの１つを着目ノードとして、当該着目ノードに保持されているアドレスと、当該着目ノードに対応する第２ノードに保持されているキャッシュタグと、を比較して一致するか否かを判定する比較手段と、
を有するデータ処理装置を複数備えるキャッシュ装置であって、
外部記憶装置に格納されているデータの一部を記憶するキャッシュメモリと、
処理装置からデータの要求を取得する取得手段と、
前記取得したデータのアドレスを複製して前記複数のデータ処理装置の第１パイプラインのそれぞれへ入力する第１入力手段と、
前記キャッシュメモリに記憶されるデータのキャッシュタグを前記複数のデータ処理装置のうちの１つの第２パイプラインへ入力する第２入力手段と、
前記比較手段による比較結果が一致すると判定された場合に前記取得したデータがキャッシュヒットすると判定する判定手段と
を更に備え、
前記複数のデータ処理装置の第２パイプラインは直列に接続されていることを特徴とするキャッシュ装置。
【請求項５】
前記複数のデータ処理装置は複数のグループにグループ分けされており、
前記第２入力手段は、前記グループごとに、前記グループのうちの１つのデータ処理装置の第２パイプラインへ前記キャッシュタグを入力し、
前記複数のデータ処理装置の第２パイプラインは、前記グループごとに直列に接続されていることを特徴とする請求項４に記載のキャッシュ装置。
【請求項６】
前記グループ分けを動的に変更する手段をさらに備えることを特徴とする請求項５に記載のキャッシュ装置。
【請求項７】
前記キャッシュメモリは前記複数のデータ処理装置のそれぞれに対応するように分割されており、
前記複数のグループのいずれにも含まれないデータ処理装置に対応する前記キャッシュメモリの部分は停止される
ことを特徴とする請求項５又は６に記載のキャッシュ装置。
【請求項８】
駆動信号が有効である場合に、前記第１パイプラインは複数の第１ノードの保持するそれぞれのデータを前記第１方向に１つ下手にある第１ノードへ移動させ、
前記駆動信号が有効であり、且つ前記判定手段がキャッシュヒットしないと判定した場合に、前記第２パイプラインは複数の第２ノードの保持するそれぞれの第２データを前記第２方向に１つ下手にある第２ノードへ移動させる
ことを特徴とする請求項４乃至７のいずれか１項に記載のキャッシュ装置。
【請求項９】
前記第２入力手段は、前記判定手段がキャッシュヒットしないと判定した場合に、前記第１パイプラインから出力されたアドレスをキャッシュタグとして前記第２パイプラインへ入力することを特徴とする請求項４乃至８のいずれか１項に記載のキャッシュ装置。
【請求項１０】
前記処理装置からのデータの要求は前記外部記憶装置へのデータの書き込み要求であり、
前記キャッシュ装置は、前記第２パイプラインから出力されるキャッシュタグを用いて前記書き込みが要求されたデータを前記キャッシュメモリに書き込む手段をさらに備えることを特徴とする請求項４乃至９のいずれか１項に記載のキャッシュ装置。
【請求項１１】
複数の第１ノードを有し、当該第１ノードに対して第１方向にある第１ノードへ当該第１ノードの保持するアドレスを移動させる第１パイプラインと、
前記第１パイプラインの第１ノードの各々に対応している複数の第２ノードを有し、当該第２ノードに対して前記第１方向と逆の第２方向にある第２ノードへ当該第２ノードの保持するキャッシュタグを移動させる第２パイプラインと、
前記第１パイプラインの第１ノードの１つを着目ノードとして、当該着目ノードに保持されているアドレスと、当該着目ノードに対応する第２ノードに保持されているキャッシュタグと、を比較して一致するか否かを判定する比較手段と、
を有するデータ処理装置を複数備えるキャッシュ装置の制御方法であって、
外部記憶装置に格納されているデータの一部をキャッシュメモリに記憶する工程と、
取得手段が、処理装置からデータの要求を取得する取得工程と、
第１入力手段が、前記取得したデータのアドレスを複製して前記複数のデータ処理装置の第１パイプラインのそれぞれへ入力する第１入力工程と、
第２入力手段が、前記キャッシュメモリに記憶されるデータのキャッシュタグを前記複数のデータ処理装置のうちの１つの第２パイプラインへ入力する第２入力工程と、
判定手段が、前記比較手段による比較結果が一致すると判定された場合に前記取得したデータがキャッシュヒットすると判定する判定工程と
を有し、
前記複数のデータ処理装置の第２パイプラインは直列に接続されていることを特徴とする制御方法。
【請求項１２】
コンピュータを請求項４乃至１０のいずれか１項に記載のキャッシュ装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算装置、キャッシュ装置、その制御方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
第１データ群に含まれるそれぞれのデータが、第２データ群の少なくとも何れかと一致するか否かを判定することを要求するアプリケーションが多く存在する。特許文献１は、このような判定を行うために、カウンタフロー・パイプライン技術を提案する。図１１を用いてカウンタフロー・パイプライン技術について説明する。カウンタフロー・パイプライン技術は、２つのパイプラインである第１パイプライン１１１０と第２パイプライン１１２０とを用いる。第１パイプライン１１１０は複数の第１ノード１１１１を有しており、それぞれの第１ノード１１１１はある時点で第１データ群のデータＡ［０］〜Ａ［３］を記憶している。第１パイプライン１１１０は右方向にデータをシフトさせる。データのシフトの結果、例えばＡ［２］を記憶していた第１ノード１１１１はＡ［３］を記憶するようになる。第２パイプライン１１２０は複数の第２ノード１１１２を有しており、それぞれ第２ノード１１２１はある時点で第２データ群のデータＢ［０］〜Ｂ［３］を記憶している。第２パイプライン１１２０は左方向にデータをシフトさせる。判定部１１３０は第１ノード１１１１と第２ノード１１２１とに接続されており、それぞれのノードに記憶されているデータが一致しているか否かを判定する。カウンタフロー・パイプライン技術では、２つのパイプライン内のデータをそれぞれ逆方向にシフトさせることによって、第１データ群のデータと第２データ群のデータとを総当りで比較する。
【０００３】
カウンタフロー・パイプラインによる演算を高速に行うために、両方のパイプラインを独立にシフトさせることになる。しかしながら、第１パイプライン１１１０と第２パイプライン１１２０とが同時にシフトされてしまうと、比較されないデータが生じてしまう。例えば、図１１に示される時点においてＡ［２］はＢ［１］と比較される。第１パイプラインと第２パイプラインとが同時にシフトされると、Ａ［２］は次にＢ［３］と比較されることになる。従って、Ａ［２］はＢ［２］と比較されることはない。特許文献１はこのようなデータの比較漏れを抑制するために、第１パイプライン１１１０と第２パイプライン１１２０の各ノードの状態を監視している。データの比較漏れが発生する状態の場合には、両パイプラインを停止し、比較が完了してからデータの移動を許可する。さらに、特許文献１に記載されたカウンタフロー・パイプラインでは、データを１対１に比較するだけであり、１つのデータを複数のデータと同時に比較することや、１つのデータに対して同時に比較されるデータの個数を動的に変更することができない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３５８８４８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このように、特許文献１に記載されたカウンタフロー・パイプラインでは、データを確実且つ柔軟に比較することが難しかった。そこで、本発明は、カウンタフロー・パイプラインを用いて、データを確実且つ柔軟に比較するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題に鑑みて、本発明の１つの側面に係る演算装置は、複数の第１ノードを有し、当該第１ノードに対して第１方向にある第１ノードへ当該第１ノードの保持する第１データを移動させる第１パイプラインと、前記第１パイプラインの第１ノードの各々に対応している複数の第２ノードを有し、当該第２ノードに対して前記第１方向と逆の第２方向にある第２ノードへ当該第２ノードの保持する第２データを移動させる第２パイプラインと、前記第１パイプラインの第１ノードの１つを着目ノードとして、当該着目ノードに保持されている第１データと、当該着目ノードに対応する第２ノードに保持されている第２データと、を比較する比較手段と、を有するデータ処理装置を複数備える演算装置であって、外部装置から第１データと第２データとを取得する取得手段と、前記取得した第１データを複製して前記複数のデータ処理装置の第１パイプラインのそれぞれへ入力する第１入力手段と、前記取得した第２データを前記複数のデータ処理装置のうちの１つの第２パイプラインへ入力する第２入力手段と、を更に備え、前記複数のデータ処理装置の第２パイプラインが直列に接続されていることを特徴とする。
【発明の効果】
【０００７】
上記手段により、カウンタフロー・パイプラインを用いて、データを確実且つ柔軟に比較するための技術が提供される。
【図面の簡単な説明】
【０００８】
【図１】基本構成の画像処理装置１００の全体構成図。
【図２】基本構成のキャッシュ判定部１２０の回路構成図。
【図３】基本構成のデータ処理装置２００の回路構成図。
【図４】第１実施形態のキャッシュ判定部４００の回路構成図。
【図５】第２実施形態のキャッシュ判定部５００の回路構成図。
【図６】第２実施形態のデコーダ５５２を詳細に説明する図。
【図７】第２実施形態のパーティション情報テーブルのフォーマット。
【図８】第２実施形態のパーティション情報テーブルの具体例。
【図９】第２実施形態のキャッシュメモリ９００を説明する図。
【図１０】第２実施形態の別の変形例を説明する図。
【図１１】従来のカウンタフロー・パイプライン技術を説明する図。
【発明を実施するための形態】
【０００９】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。まず、各実施形態のキャッシュ装置の基本構成を以下に説明する。
【００１０】
〔画像処理装置１００〕
図１は、キャッシュ装置１１０を含む画像処理装置１００の全体構成の一例を示すブロック図である。キャッシュ装置１１０は、後述するデータ処理装置をフルアソシアティブ方式のキャッシュ判定部１２０として応用している。
【００１１】
画像処理装置１００は、ＣＰＵ１６０、外部記憶装置であるＤＲＡＭ１６５、ＤＲＡＭコントローラ１６６及びシステムバス１６４を含む。また、画像処理装置１００は、ＤＲＡＭ１６５に対するデータの読み書きのために、データ読み出し用のＤＭＡＣ（Ｄｉｒｅｃｔ Ｍｅｍｏｒｙ Ａｃｃｅｓｓ Ｃｏｎｔｒｏｌｌｅｒ）であるＲＤＭＡＣ１６２とデータ書き込み用のＷＤＭＡＣ１６３を含む。画像処理装置１００はさらに、画像処理などの処理を行う処理装置Ａ１０１〜処理装置Ｄ１０４とキャッシュ装置１１０とを含み、複数の処理装置がキャッシュ装置１１０を共有している。すなわち、キャッシュ装置１１０は共有キャッシュ装置であるといえる。画像処理装置１００に含まれる処理装置の数は任意であり、処理装置の各々は高速に固定処理するパイプライン回路で構成されていてもよいし、低速ではあるが柔軟に処理内容を変更可能なプロセッサとプログラムとで構成されていてもよい。
【００１２】
ＣＰＵ１６０は、制御バス１６１を介してＲＤＭＡＣ１６２、ＷＤＭＡＣ１６３、処理装置Ａ１０１〜処理装置Ｄ１０４を制御し、画像処理装置１００全体を統括制御する。ＣＰＵ１６０の指示によりＲＤＭＡＣ１６２は、システムバス１６４、ＤＲＡＭコントローラ１６６を介してＤＲＡＭ１６５に格納された画像データを読み出し、処理装置Ａ１０１に入力する。処理装置Ａ１０１は、所望の画像処理を行い、処理結果の画像データを処理装置Ｂ１０２へ送り出す。処理装置Ｂ１０２、処理装置Ｃ１０３、処理装置Ｄ１０４も処理装置Ａ１０１と同様に各種の画像処理を行い、処理結果の画像データを後段の処理装置に送り出す。処理装置Ｄ１０４は、ＷＤＭＡＣ１６３に処理結果の画像データを送り出す。ＷＤＭＡＣ１６３はＣＰＵ１６０からの指示に従って、処理装置Ｄ１０４から受け取った画像データをシステムバス１６４、ＤＲＡＭコントローラ１６６を介してＤＲＡＭ１６５に格納する。画像処理装置１００は、前述の一連の動作を実行することにより画像処理を実施する。
【００１３】
前述の画像処理の過程で、処理装置Ａ１０１〜処理装置Ｄ１０４は、共有されたキャッシュ装置１１０を介して、ＤＲＡＭ１６５から各種必要なデータ（設定、テーブル、属性情報など）を読み出して画像処理に使用できる。また処理装置の何れかがプロセッサとプログラムとで構成されている場合に、キャッシュ装置１１０を介してプログラムを逐次的に読み出して処理を実行することも可能である。
【００１４】
〔キャッシュ装置１１０〕
続いてキャッシュ装置１１０の構成と動作について詳細説明する。前述の処理装置Ａ１０１から処理装置Ｄ１０４は、キャッシュ装置１１０を介してＤＲＡＭ１６５からデータを読み出す際に、ＤＲＡＭ１６５上のデータの格納アドレスをＩ／Ｆ１１２に送り出す。キャッシュ装置１１０は、ＤＲＡＭ１６５上のデータの格納アドレスを伝達するために、アクセス要求用のリングバス１１１を含む。そして処理装置の各々に対応したＩ／Ｆ１１２は、このリングバス１１１で互いに接続されている。処理装置の各々から送出した格納アドレス１１３は、Ｉ／Ｆ１１２とリングバス１１１を介してキャッシュ判定部１２０に入力される。そして入力された格納アドレス１１３をもとにキャッシュ判定部１２０がキャッシュヒットするか否かを判定する。
【００１５】
〔キャッシュ判定部１２０〕
図２を参照してキャッシュ判定部１２０の回路構成の一例について詳細に説明する。キャッシュ判定部１２０はデータ処理装置２００とキャッシュ判定装置２８０とを含む。
【００１６】
キャッシュ判定部１２０へ入力（第１入力）される格納アドレス１１３には、
・アドレスの有効信号である「ｖａｌｉｄ」、
・アドレス信号である「ｄａｔａ」、
・処理装置１０１〜１０４の識別信号である「ＩＤ」、
が含まれ、これらの信号がデータ処理装置２００へ入力される。
【００１７】
〔データ処理装置２００〕
図３を参照してデータ処理装置２００の回路構成の一例について詳細に説明する。図３はデータ処理装置２００の一部に注目した図である。第１パイプライン３００は複数のノード（第１ノード）を有する。この中の１つを着目ノード（例えばノード３１０）とすると、着目ノードから第１方向（図１の右方向）へ１つ下手の第１ノード（例えばノード３３０）へデータ要素（第１データ）を移動させる。第１パイプライン３００には、図２に示すように、データ処理装置２００の外部から、
・アドレスの有効信号である「ｖａｌｉｄ」、
・アドレス信号である「ｄａｔａ」、
・アドレス信号の処理結果である処理結果信号「ｔａｇ＿ｉｄ」、
・処理装置の識別信号である「ＩＤ」、
が入力される。「ｖａｌｉｄ」、「ｄａｔａ」及び「ＩＤ」は格納アドレス１１３に含まれるものであり、「ｔａｇ＿ｉｄ」は例えばデフォルト値である。
【００１８】
再び図３を参照して、例えばノード３１０へは、
・アドレスの有効信号である「ｖａｌｉｄ［ｌ−１］」３１２、
・アドレス信号である「ｄａｔａ［ｌ−１］」３１４、
・処理装置の識別信号である「ＩＤ［ｌ−１］」、
が入力される。図３では簡略化のため「ｖａｌｉｄ」と「ＩＤ」とを１本の信号線で表している。また、データ処理回路３２０へは、
・アドレス信号である「ｄａｔａ［ｌ−１］」３１４、
・アドレス信号の処理結果である処理結果信号「ｔａｇ＿ｉｄ［ｌ−１］」３１６、
が入力される。データ処理回路３２０はこれらの入力信号に対して後述の処理を行って、処理結果をノード３１０へ出力する。
【００１９】
パイプライン・レジスタを含むノード３１０は駆動信号である「ｅｎａｂｌｅ」１２１が有効（アサート状態）である場合に、上手側のノード及びデータ処理回路３２０から入力されているデータ要素を用いて、それまでに記憶していたデータ要素を更新する。一方、「ｅｎａｂｌｅ」１２１が無効（ディアサート状態）である場合に、ノード３１０は、上手側から入力されているデータ要素を無視して、以前から記憶しているデータ要素をそのまま保持し、データ要素を更新しない。説明のために、第１パイプライン３００のうち、１つのノードとそのノードへ処理結果信号を入力するデータ処理回路とを含む区間をステージと呼ぶ。特に図３において、ノード３１０とデータ処理回路３２０とを含む区間を第１ステージと呼ぶ。
【００２０】
ノード３１０は記憶しているデータ、すなわち
・アドレスの有効信号「ｖａｌｉｄ［ｌ］」３３２、
・アドレス信号「ｄａｔａ［ｌ］」３３４、
・処理結果信号「ｔａｇ＿ｉｄ［ｌ］」３３６、
・識別信号「ＩＤ［ｌ］」、
を下手側のノード３３０及びデータ処理回路３４０へ出力する。図３において、第１パイプライン３００のうち、ノード３３０とデータ処理回路３４０とを含む区間を第２ステージと呼ぶ。第１ステージと同様に第２ステージでも種々のデータ処理が行われる。そして処理後のデータ要素がノード３３０にて一時記憶されるが、この記憶動作は第１ステージと同様である。
【００２１】
さらにノード３３０は、
・アドレスの有効信号「ｖａｌｉｄ［ｌ＋１］」３５２、
・アドレス信号「ｄａｔａ［ｌ＋１］」３５４、
・処理結果信号「ｔａｇ＿ｉｄ［ｌ＋１］」３５６、
・識別信号「ＩＤ［ｌ＋１］」、
を出力する。このような動作により、第１パイプライン３００では、データ要素（有効信号「ｖａｌｉｄ」、アドレス信号「ｄａｔａ」、処理結果信号「ｔａｇ＿ｉｄ」、識別信号「ＩＤ」）が「上手」である図面の左側から「下手」である図面の右側へ移動する。
【００２２】
データ処理装置２００は、第１パイプライン３００に加えて第２パイプライン３６０を含む。この第２パイプライン３６０は複数のノード（第２ノード）を有し、この第２ノード内のパイプライン・レジスタが保持するデータ要素（第２データ）を第１パイプラインと逆方向（第２方向）にあるノードへ移動させる。詳細には、この第２パイプライン３６０は「上手」である図面の右側から「下手」である図面の左側に向けてデータ要素を移動させる。図２に示すように、第２パイプライン３６０には、アドレスの有効信号である「ｔａｇ＿ｖａｌｉｄ」と、アドレス信号である「ｔａｇ＿ｄａｔａ」とがデータ処理装置２００の外部から入力（第２入力）される。
【００２３】
図３に戻り、ノード３７０には、アドレスの有効信号である「ｔａｇ＿ｖａｌｉｄ[ｉ＋２]」３７２と、アドレス信号である「ｔａｇ＿ｄａｔａ[ｉ＋２]」３７４が上手側から入力される。これらの入力信号は、前述のデータ処理回路３４０で使用される。
【００２４】
ノード３７０は、駆動信号である「ｓｈｉｆｔ」３６２が有効（アサート状態）である場合に、上手側のノードから入力されているデータ要素を用いて、それまでに記憶していたデータ要素を更新する。一方、駆動信号「ｓｈｉｆｔ」３６２が無効（ディアサート状態）である場合に、上手側から入力されているデータ要素を無視して、以前から記憶しるデータ要素をそのまま保持し、データ要素を更新しない。第２パイプライン３６０のうち、１つのノードを含む区間をステージと呼ぶ。特に図３において、ノード３７０を含む区間を第１ステージと呼ぶ。
【００２５】
ノード３７０は、パイプライン・レジスタに記憶されているアドレスの有効信号「ｔａｇ＿ｖａｌｉｄ［ｉ＋１]」３８２とアドレス信号「ｄａｔａ［ｉ＋１］」３８４とをノード３８０とデータ処理回路３２０、３４０とへ出力する。さらに、ノード３８０は有効信号「ｔａｇ＿ｖａｌｉｄ[ｉ]」３９２とアドレス信号「ｔａｇ＿ｄａｔａ[ｉ]」３９４とを下手側へ出力する。このような動作により第２パイプライン３６０では、データ要素である有効信号「ｔａｇ＿ｖａｌｉｄ」とアドレス信号「ｔａｇ＿ｄａｔａ」が、「上手」である図面の右側から「下手」である図面の左側へ移動する。
【００２６】
〔データ処理回路〕
続いて、データ処理回路３２０、３４０について詳細に説明する。データ処理回路は、２方向のアドレス信号「ｄａｔａ」と「ｔａｇ＿ｄａｔａ」とを比較（第１比較）し、等しい場合に「ｔａｇ＿ｄａｔａ」の格納番号（前述の“［ｉ］”、“［ｉ＋１］”、“［ｉ＋２］”）を「ｔａｇ＿ｉｄ」として記憶する。そして「ｔａｇ＿ｉｄ」は、第１パイプライン３００のデータ処理結果として、「ｄａｔａ」と同期して「上手」である図面の左側から「下手」である図面の右側へ移動する。このようにして、「ｔａｇ＿ｉｄ［ｌ］」３３６には、第１パイプライン３００のｌ番目のデータ要素「ｄａｔａ［ｌ］」３３４と値が等しい第２パイプライン３６０のデータ要素の格納番号が設定されることになる。
【００２７】
具体的には、データ処理回路３２０は、有効信号「ｔａｇ＿ｖａｌｉｄ[ｉ]」３９２が有効である場合に、アドレス信号「ｄａｔａ［ｌ−１］」３１４とアドレス信号「ｔａｇ＿ｄａｔａ［ｉ］」３９４とを比較回路３２２で比較する。比較結果が等しい場合に、セレクタ３２６は「ｔａｇ＿ｄａｔａ［ｉ］」３９４の格納番号である「Ｎｏｄｅ＝ｉ」を選択する。この選択された値は、第１パイプライン３００の「ｄａｔａ［ｌ−１］」３１４と値が等しい第２パイプライン３６０のデータ要素の格納番号として「ｔａｇ＿ｉｄ［ｌ−１］」３１６に設定される。
【００２８】
前述の通り、第１パイプライン３００と第２パイプライン３６０とが同時に動作する場合に、比較漏れが生じるケースがある。これに対処するためにデータ処理回路３２０は、有効信号「ｔａｇ＿ｖａｌｉｄ[ｉ＋１]」３８２が有効の場合に、アドレス信号「ｄａｔａ［ｌ−１］」３１４とアドレス信号「ｔａｇ＿ｄａｔａ［ｉ＋１］」３８４とを比較回路３２４で比較（第２比較）する。比較結果が等しい場合に、セレクタ３２６は「ｔａｇ＿ｄａｔａ［ｉ＋１］」３８４の格納番号である「Ｎｏｄｅ＝ｉ＋１」を優先的に選択する。
【００２９】
またセレクタ３２６は、上記２種類の比較結果がどちらも等しくない場合に、入力された処理結果信号「ｔａｇ＿ｉｄ［ｌ−１］」３１６を選択する。駆動信号「ｓｈｉｆｔ」３６２が有効（アサート状態）であり、第２パイプライン３６０が動作する場合に、第２パイプライン３６０のデータ要素は「下手」である図面の左側に移動する。したがって、この場合は「ｔａｇ＿ｄａｔａ」の格納番号も１つだけ左の格納番号を指すことが正しい。そこでセレクタ３２６の選択結果からデクリメンタ（減算器）３２８を用いて格納番号を１だけ減算することで調整する。
【００３０】
ここで格納番号の選択手法について補足する。格納番号は「Ｎｏｄｅ＝ｉ」、「Ｎｏｄｅ＝ｉ＋１」、「ｔａｇ＿ｉｄ［ｌ−１］」３１６のいずれか１つが選択されるが、その選択基準は、例えば「数の大きいものを優先的に選択する」という単純なものでよい。例えば、データ信号「ｄａｔａ［ｌ−１］」３１４と「ｔａｇ＿ｄａｔａ［ｉ＋１］」３８４が等しく、且つ駆動信号「ｓｈｉｆｔ」３６２が有効の場合を考える。この場合に、前述の比較漏れを回避するために「Ｎｏｄｅ＝ｉ＋１」を選択することが重要であるが、この動作は「数の大きいものを優先的に選択する」という手法に合致している。一方、駆動信号「ｓｈｉｆｔ」３６２が無効の場合は、前述の比較漏れを回避する必要がなく、「Ｎｏｄｅ＝ｉ＋１」を選択する必要はない。しかしながら「Ｎｏｄｅ＝ｉ＋１」の選択の有無に関わらず、第１パイプライン３００の下手ステージである、第２ステージでもう一度アドレス信号「ｄａｔａ［ｌ］」３３４とアドレス信号「ｔａｇ＿ｄａｔａ［ｉ＋１］」３８４との比較が再評価される。このため、駆動信号「ｓｈｉｆｔ」３６２が無効の場合の第１ステージの「ｔａｇ＿ｄａｔａ［ｉ＋１］」３８４との比較はどちらでもよい。逆に言えば、「数の大きいものを優先的に選択する」という手法で選択しても何ら差し支えがない。このようにして選択された値は、「ｄａｔａ［ｌ−１］」３１４と値が等しい第２パイプライン３６０のデータ要素の格納番号を示す「ｔａｇ＿ｉｄ［ｌ−１］」３１６に設定される。
【００３１】
図３を参照して説明した例はあくまで一例であり、セレクタ３２６に駆動信号「ｓｈｉｆｔ」３６２を代入して、駆動信号「ｓｈｉｆｔ」３６２が無効の場合に「Ｎｏｄｅ＝ｉ＋１」を選択しないという制御を行ってもよい。比較回路３２２と比較回路３２４との両方の比較結果がともに＜偽＞であった場合に、入力データ信号「ｔａｇ＿ｉｄ［ｌ−１］」３１６を選択している。ここでは、駆動信号「ｓｈｉｆｔ」３６２が有効の場合に、格納場所が「下手」に移動することに対処するため、格納番号を１だけ減算する調整をいずれにしても行う必要がある。このため、「Ｎｏｄｅ＝ｉ＋１」は選択しないという制御は行わず、「Ｎｏｄｅ＝ｉ＋１」を選択してから、格納番号を１だけ減算する調整を改めて行っている。
【００３２】
データ処理回路３４０についても同様である。まず、有効信号「ｔａｇ＿ｖａｌｉｄ[ｉ＋１]」３８２が有効の場合に、アドレス信号「ｄａｔａ［ｌ］」３３４とアドレス信号「ｔａｇ＿ｄａｔａ［ｉ＋１］」３８４とを比較回路３４２で比較する。比較結果が等しい場合に、セレクタ３４６は、「ｔａｇ＿ｄａｔａ［ｉ＋１］」３８４の格納番号である「Ｎｏｄｅ＝ｉ＋１」を選択する。第２パイプライン３６０の動作に備え、データ処理回路３４０は、有効信号「ｔａｇ＿ｖａｌｉｄ[ｉ＋２]」３７２が有効の場合に、データ信号「ｄａｔａ［ｌ］」３３４と「ｔａｇ＿ｄａｔａ［ｉ＋２］」３７４とを比較回路３４４で比較する。そして比較結果が等しい場合に、セレクタ３４６は「ｔａｇ＿ｄａｔａ［ｉ＋２］」３７４の格納番号である「Ｎｏｄｅ＝ｉ＋２」を優先的に選択する。またセレクタ３４６は、上記２種類の比較結果がどちらも等しくない場合に、処理結果信号「ｔａｇ＿ｉｄ［ｌ］」３３６を選択する。駆動信号「ｓｈｉｆｔ」３６２が有効であり、それにより第２パイプライン３６０が動作する場合に、「ｔａｇ＿ｄａｔａ」の格納番号は１つだけ「下手」である図面の左側に移動する。このため、セレクタ３４６の選択結果からデクリメンタ（減算器）３４８を用いて格納番号を１だけ減算する。このように一致検出結果を調整し、簡易な処理により正確で高速なデータ処理を実現することができる。このように、データ処理装置２００では、互に逆方向に移動させるデータ要素をパイプラインの各ステージで確実かつ高速に比較することができる。
【００３３】
上述のデータ処理回路３２０および３４０の各々は、第１パイプライン３００の１つのデータ要素につき、第２パイプライン３６０の比較対象であるデータ要素との比較回路を持っている。さらに、データ処理回路３２０および３４０の各々は、第２パイプライン３６０が動作することを想定して第２パイプライン３６０の比較対象であるデータ要素に対して第２パイプライン３６０の「上手」のデータ要素との比較回路を新たに設けている。これにより、特許文献１の構成で生じる特定ステージ毎にインターロック（内部ストール）が発生するという問題は回避できるので、常にデータ処理を停止することなく、高処理性能を実現することができる。
【００３４】
また、データ処理装置２００では、２つのデータ要素が等しい場合の格納場所を算出するために、データ処理回路３２０および３４０の各々が、第２パイプライン３６０が動作することを想定して、処理結果を１だけ減算するためのデクリメンタを備えている。そして、第２パイプラインのデータ要素の格納番号は、第２パイプラインの「下手」から「上手」に向けて「０、１、２、・・・、ｉ、ｉ＋１、ｉ＋２、・・・、Ｎ−１（ｉ、Ｎは正の数、ｉ＜Ｎ）」と増加するように予め割り振られている。このように割り振る利点については後述する。また格納番号が逆順に割り振られている場合は、デクリメンタは当然、１だけ加算するためのインクリメンタになる。
【００３５】
再び図２を参照して、データ処理装置２００の構成を説明する。データ処理装置２００は第１パイプライン３００、第２パイプライン３６０ともに８つのステージを備える。図２のＤａｔａＳｌｏｔ［０］〜ＤａｔａＳｌｏｔ［７］の各々は、図３の第１パイプライン３００のノード３１０、３３０に対応する。図２のＴａｇＳｌｏｔ[０]〜ＴａｇＳｌｏｔ[７]の各々は、図３の第２パイプライン３６０のノード３７０、３８０に対応する。Ｊｕｄｇｅ［０］〜Ｊｕｄｇｅ［７］の各々は、図３のデータ処理回路３２０、３４０に対応する。このように、複数のステージを備えることで、データ処理装置２００は多くのデータ要素をパイプライン動作で並列に分散比較することが可能となる。
【００３６】
格納アドレス１１３はデータ処理装置２００の第１パイプライン３００のＤａｔａＳｌｏｔにより移動する。データ処理装置２００は８個の「ｔａｇ＿ｄａｔａ」を同時に記憶でき、この８個の「ｔａｇ＿ｄａｔａ」にキャッシュタグ情報が記憶される。データ処理装置２００の一例を用いたキャッシュ装置は、８ノードのフルアソシアティブ方式のキャッシュ装置となる。また、第２パイプライン３６０の「下手」から順に０番から７番までの格納場所が直列に定められており、駆動信号「ｓｈｉｆｔ」３６２が有効（アサート状態）の場合に「下手」にデータ要素が移動するシフト構造を有している。このシフト構造により最も古いキャッシュタグは格納場所０番の「ｔａｇ＿ｄａｔａ」に格納されており、最も新しいキャッシュタグは格納場所７番の「ｔａｇ＿ｄａｔａ」に格納されている。キャッシュミスが起こる度にキャッシュタグは格納場所７番から格納場所０番の「ｔａｇ＿ｄａｔａ」へ順番に移動（シフト）され、やがて第２パイプライン３６０から掃き出される。キャッシュ判定部１２０は非常に単純な機構ながら、常に最も古いキャッシュタグやキャッシュデータから順番に捨てられる。これにより、一般的なキャッシュ機構の複雑な置き換え（リプレイス）制御を行う必要はない。
【００３７】
〔キャッシュヒット判定〕
続いて、キャッシュヒット判定の手順を説明する。キャッシュヒット判定とは、格納アドレス１１３で指定されたデータがキャッシュメモリ１９０に記憶されているか否かを判定することである。キャッシュメモリ１９０に記憶されている場合にキャッシュヒットと判定され、キャッシュメモリ１９０に記憶されていない場合にキャッシュミスと判定される。キャッシュヒット判定はキャッシュ判定装置２８０で行われる。キャッシュ判定装置２８０は、キャッシュヒットかどうかを、データ処理装置２００から出力される処理結果信号「ｔａｇ＿ｉｄ」（２の補数表記）の１ビット長の符号ビットを調べることで判定する。データ処理装置２００の出力である有効信号「ｖａｌｉｄ」が有効（アサート状態）であり、且つその符号ビットが「１」である場合に、「ｔａｇ＿ｉｄ」は負の値であり、キャッシュ判定装置２８０はキャッシュミスであると判定する。また、有効信号「ｖａｌｉｄ」が有効（アサート状態）であり、且つその符号ビットが「０」であるとき、「ｔａｇ＿ｉｄ」は正の値であり、キャッシュ判定装置２８０はキャッシュヒットであると判定する。有効信号「ｖａｌｉｄ」が無効（ディアサート状態）である場合に、キャッシュ判定装置２８０は判定を行わない。また、アクセス調停部１３０からの「ｅｎａｂｌｅ」が（ディアサート状態）である場合にも、キャッシュ判定装置２８０は判定を行わない。
【００３８】
データ処理装置２００の出力であるアドレス信号「ｄａｔａ」、有効信号「ｖａｌｉｄ」及び識別信号「ＩＤ」がキャッシュ判定装置２８０に「ｔａｇ＿ｉｄ」と同期して入力される。上記によりキャッシュミスと判定された場合に、このアドレス信号「ｄａｔａ」がキャッシュミス時のアドレスである「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ」としてキャッシュ判定装置から出力される。キャッシュ判定装置２８０はキャッシュミスの場合に、駆動信号「ｓｈｉｆｔ」３６２を有効（アサート状態）にし、キャッシュミス時のアドレスである「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ」をキャッシュタグ「ｔａｇ＿ｄａｔａ」として出力する。キャッシュミスする度に駆動信号「ｓｈｉｆｔ」３６２が有効となり、前述で説明したように処理結果「ｔａｇ＿ｉｄ」は減算されていく。
【００３９】
始めのうちは処理結果「ｔａｇ＿ｉｄ」に正の値が保持されていても、キャッシュミスが繰り返されると第２パイプライン３６０がシフトされ、キャッシュタグ「ｔａｇ＿ｄａｔａ」が第２パイプライン３６０から掃き出されることもある。この掃き出された処理結果「ｔａｇ＿ｉｄ」の値は、最も古いキャッシュタグの格納番号が０であることから、負の値であることは明らかである。前述のキャッシュ判定で「ｔａｇ＿ｉｄ」の符号を調べるだけでよいのは、これに由来する。すなわち、最も古いキャッシュタグが０番、最も新しいキャッシュタグがＮ−１番となるように、格納場所の番号の割り振り方を工夫している。これにより、キャッシュヒット判定は第１パイプライン３００の最終ステージのデータ処理結果の符号を判別するだけでよい。したがって、キャッシュ判定は非常に簡単に行われる。また格納番号を第２パイプライン３６０の「上手」から「下手」に０番からＮ−１番に割り振った場合は、「ｔａｇ＿ｉｄ」の値が第２パイプラインの要素数であるＮよりも小さいかどうかでキャッシュヒット判定できる。
【００４０】
また前述のように常に最も古いキャッシュデータから順番に捨てる機構のため本実施形態の一例のキャッシュメモリ１９０はリング式ＦＩＦＯを用いればよい。この場合、キャッシュ判定部１２０とキャッシュメモリ１９０との同期が容易となる。なお、キャッシュ判定がキャッシュヒットの場合は、「ｔａｇ＿ｉｄ」が指し示す位置のキャッシュメモリに所望のキャッシュデータが格納されていることになる。
【００４１】
以上の処理により、キャッシュ判定部１２０から、入力された格納アドレス１１３に基づいた判定結果１２５として
・アドレスの有効信号「ｖａｌｉｄ」、
・キャッシュミス時のＤＲＡＭ１６５のデータ格納先であるアドレス信号「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ」、
・処理装置の識別信号である「ＩＤ」、
・キャッシュデータの格納先である「ｔａｇ＿ｉｄ」、
・キャッシュ判定結果である「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」、
がアクセス調停部１３０へ出力される。
【００４２】
〔アクセス調停部１３０〕
続いて、図１を参照してアクセス調停部１３０の動作を説明する。アクセス調停部１３０は判定結果１２５内の有効信号「ｖａｌｉｄ」が有効（アサート状態）である場合に動作し、それ以外の場合は待機する。アクセス調停部１３０は、判定結果１２５内のキャッシュ判定結果「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」の有効（アサート状態）／無効（ディアサート状態）に応じて以下の処理を行う。
【００４３】
・キャッシュ判定結果「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」が有効の場合に、アクセス調停部１３０は、送信キュー１５０、受信キュー１７０及び待ち合せキュー１４０のそれぞれの格納領域の空き状態を評価する。そして３つのキューすべてに空き領域がある場合に、アクセス調停部１３０は、「ＩＤ、ｔａｇ＿ｉｄ、ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」１３５を待ち合せキュー１４０にエンキューする。それとともに、アクセス調停部１３０は、アドレス信号「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ」１３２を送信キュー１５０にエンキューする。空き領域がない場合に、アクセス調停部１３０は、駆動信号である「ｅｎａｂｌｅ」１２１を無効（ディアサート状態）にしてキャッシュ判定部１２０を停止（ストール）し、格納領域が空くまで待機する。
【００４４】
・キャッシュ判定結果「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」が無効の場合に、アクセス調停部１３０は、待ち合せキュー１４０の空き状態を評価する。そして空き領域があれば、アクセス調停部１３０は、「ＩＤ、ｔａｇ＿ｉｄ、ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」１３５を待ち合せキュー１４０にエンキューする。空き領域がない場合に、アクセス調停部１３０は、駆動信号である「ｅｎａｂｌｅ」１２１を無効（ディアサート状態）にしてキャッシュ判定部１２０を停止（ストール）し、格納領域が空くまで待機する。
【００４５】
〔キャッシュメモリ調停部１８０〕
続いて、キャッシュメモリ調停部１８０の動作を説明する。キャッシュメモリ調停部１８０は受信キュー１７０及び待ち合せキュー１４０の各々の格納領域にデータがあるかどうかを評価する。キャッシュメモリ調停部１８０は、待ち合せキュー１４０から処理すべきキャッシュ判定結果である「ＩＤ、ｔａｇ＿ｉｄ、ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」をデキューする。待ち合せキュー１４０が空の場合は処理すべきキャッシュ判定結果がないため、キャッシュメモリ調停部１８０は何もせず待機する。次に、キャッシュメモリ調停部１８０は、キャッシュ判定結果「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」が無効（ディアサート状態）か有効（アサート状態）かに応じて、以下の処理を行う。
【００４６】
・キャッシュ判定結果「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」が無効（ディアサート状態）の場合は、キャッシュヒットであることを意味する。そこで、キャッシュメモリ調停部１８０は、待ち合せキュー１４０からデキューしたデータ要素内の「ｔａｇ＿ｉｄ」と、ＦＩＦＯ方式のキャッシュメモリ１９０のライトポインタとに基づいてキャッシュメモリ１９０の格納アドレスを算出する。キャッシュメモリ調停部１８０は、その格納アドレスをもとにキャッシュされているデータをキャッシュメモリ１９０から「ｒｅａｄ＿ｄａｔａ」１９２として読み出す。そして、キャッシュメモリ調停部１８０は、キャッシュデータ「ｖａｌｉｄ、ＩＤ、ｃａｃｈｅ＿ｄａｔａ」１８５としてＩ／Ｆ１１６へ送出する。
【００４７】
・キャッシュ判定結果「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」が有効（アサート状態）の場合は、キャッシュミスであることを意味する。キャッシュメモリ調停部１８０は、キャッシュメモリ１９０に記憶されていないデータがＤＲＡＭ１６５から受信キュー１７０へ届いているかどうかを確認する。届いていない場合は、キャッシュメモリ調停部１８０は届くまで待機する。届いていれば、キャッシュメモリ調停部１８０は受信キュー１７０から更新すべきキャッシュデータをデキューする。そして、キャッシュメモリ調停部１８０は、キャッシュメモリ１９０のライトポインタの指す格納領域に取り出したデータを「ｗｒｉｔｅ＿ｄａｔａ」１８２として書き込む。それととともに、キャッシュメモリ調停部１８０は、キャッシュデータ「ｖａｌｉｄ、ＩＤ、ｃａｃｈｅ＿ｄａｔａ」１８５としてＩ／Ｆ１１６へ送出する。次に、キャッシュメモリ調停部１８０はキャッシュメモリ１９０のライトポインタをインクリメントする。ＦＩＦＯの容量を越えた場合に、キャッシュメモリ調停部１８０はライトポインタを０に戻す。
【００４８】
キャッシュ装置１１０は、上記の過程で得たキャッシュデータを処理装置１０１〜１０４の各々に分配する。キャッシュ装置１１０は、キャッシュデータを分配するためのリングバス１１５を含む。そして処理装置の各々に対応したＩ／Ｆ１１６は、このリングバス１１５で互いに接続されている。処理装置の各々に接続された各Ｉ／Ｆ１１６は、キャッシュメモリ調停部１８０の出力であるキャッシュデータ「ｖａｌｉｄ、ＩＤ、ｃａｃｈｅ＿ｄａｔａ」１８５を受け取る。そして、各Ｉ／Ｆ１１６は、受け取ったキャッシュデータの識別信号「ＩＤ」と、接続された処理装置の識別信号が同じであれば、キャッシュデータを処理装置に送出する。各Ｉ／Ｆ１１６は、識別信号が同じでなれば、受け取ったキャッシュデータをリングバス１１５を介して後段に位置する別のＩ／Ｆ１１６へ送る。
【００４９】
キャッシュ装置１１０は、キャッシュミス時のペナルティであるリフィル・レイテンシを隠蔽するためにノンブロッキングのキャッシュ機構を採用している。これは、たとえ判定結果１２５がキャッシュミスであっても、後に必要となる情報「ＩＤ、ｔａｇ＿ｉｄ、ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」１３５を待ち合せキュー１４０に退避する。そして、キャッシュ装置１１０は、キャッシュミスしたデータをＤＲＡＭ１６５から読み出してキャッシュメモリ１９０へ格納する処理が完了する前に、次の画素のキャッシュ判定処理を先行して実行する。このような処理を行うことで、キャッシュ装置１１０は、キャッシュミスしたデータをＤＲＡＭ１６５からキャッシュメモリ１９０へリフィルしている間にも、続く画素に対するキャッシュ判定を行うことができる。したがって、キャッシュミス時の性能低下を抑制することが可能になる。
【００５０】
キャッシュ装置１１０は、非常に簡単な機構において、複数の処理装置間で共有可能なフルアソシアティブ方式のキャッシュ装置を実現できる。複数の処理装置間で１つのキャッシュ装置１１０を共有すると、キャッシュ判定部１２０には相関性の低いアドレスが連続して入力される。一般的なダイレクトマップ方式のキャッシュ判定部では、アドレスの下位ビットからキャッシュタグを管理するタグメモリの格納先を算出するため、このような相関性の低いアドレスに対しては、容易にキャッシュ競合を引き起こしてしまう。処理装置の数に応じて、セット・アソシアティブ方式のノード数を増やしていくことが、このキャッシュ競合の確率を低減させるための１つの解決策となる。しかしながら、処理装置の数が非常に多くなると非常に多いノード数に対応することとなり、一般的なキャッシュ装置の実装方法では、キャッシュ判定部のセレクタの論理段数が多くてタイミング収束が難しくなり、高い動作周波数で動作させることができない。これに対し、キャッシュ判定部１２０はパイプライン構成で判定するために、非常に高い動作周波数で動作する。またキャッシュ判定部１２０は、古いデータから順番に自動削除され、従来技術で必要なキャッシュ競合時の複雑な置き換え（リプレイス）制御は不要である。そのため、キャッシュ判定部１２０とキャッシュメモリ調停部１８０との同期も非常に簡単な機構で実現でき、キャッシュメモリもＦＩＦＯを使用すればよい。そのためキャッシュ装置１１０の動作周波数を向上する上で有利となる。何より、キャッシュ装置１１０はフルアソシアティブ方式であり、アドレスの下位ビットが同一であることが原因でキャッシュ競合を起こすことは無い。
【００５１】
＜第１実施形態＞
図４を参照して本実施形態に係るキャッシュ装置について説明する。図４は本実施形態に係るキャッシュ判定部４００の回路構成の一例を説明する図である。キャッシュ判定部４００は図１のキャッシュ装置１１０のキャッシュ判定部１２０の代わりに用いられる。上述したキャッシュ装置１１０の基本構成と同様の部分の説明は繰り返さない。キャッシュ判定部４００は複製装置４１０、演算装置４３０及びキャッシュ判定装置４８０を備える。演算装置４３０は複数のデータ処理装置２００＿１〜２００＿Ｎを備え、データ処理装置２００＿１〜２００＿Ｎのそれぞれは図２で説明したデータ処理装置２００と同じ構成を有している。このように、キャッシュ判定部４００は上述のデータ処理装置を複数備えることで、同時に比較できるデータ要素の数を増やしている。本実施形態に係るキャッシュ判定部４００は基本となるデータ処理装置を複数備えることで設計・検証済みのデータ処理装置を再利用でき、開発効率を向上できるという利点がある。
【００５２】
キャッシュ判定部４００に含まれる各ＤａｔａＳｌｏｔは図３のノード３１０、３３０と同じであり、「ｅｎａｂｌｅ」１２１が有効（アサート状態）である場合に、データ要素を用いて、それまでに記憶していたデータ要素を更新する。ノード４１１にはＩ／Ｆ１１２からの格納アドレス１１３が入力される。前述のように、格納アドレス１１３は有効信号「ｖａｌｉｄ」、アドレス信号「ｄａｔａ」及び識別信号「ＩＤ」を含む。複製装置４１０は４２０で示すようにこの格納アドレス１１３を複製して、ノード４１２＿１〜ノード４１２＿Ｎでリタイミングする。ノード４１２＿１〜ノード４１２＿Ｎはそれぞれ記憶しているデータ要素を対応するデータ処理装置２００＿１〜２００＿Ｎの第１パイプライン３００へ出力する。このように、各データ処理装置の第１パイプライン３００へは同一の格納アドレス１１３が複製されて同タイミングで並列に入力される。
【００５３】
演算装置４３０にはまた、キャッシュ判定装置４８０のデコーダ４５２が出力する「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」４４４が駆動信号「ｓｈｉｆｔ」として入力され、駆動信号「ｓｈｉｆｔ」は各データ処理装置２００＿１〜２００＿Ｎに入力される。これにより、すべてのデータ処理装置２００＿１〜２００＿Ｎの第２パイプライン３６０のデータ要素は同期して移動する。キャッシュ判定装置４８０が出力する「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」と「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ」は、データ処理装置（１）２００＿１の第２パイプライン３６０への「ｔａｇ＿ｖａｌｉｄ」と「ｔａｇ＿ｄａｔａ」として入力される。データ処理装置（１）の第２パイプライン３６０が出力する「ｔａｇ＿ｖａｌｉｄ」と「ｔａｇ＿ｄａｔａ」は、データ処理装置（２）２００＿２の第２パイプライン３６０に「ｔａｇ＿ｖａｌｉｄ」と「ｔａｇ＿ｄａｔａ」として入力される（４４０＿１）。以降も同様（４４０＿２、４４０＿Ｎ）である。データ処理装置（ｉ）の第２パイプライン３６０が出力する「ｔａｇ＿ｖａｌｉｄ」と「ｔａｇ＿ｄａｔａ」は、データ処理装置（ｉ＋１）の第２パイプライン３６０に「ｔａｇ＿ｖａｌｉｄ」と「ｔａｇ＿ｄａｔａ」として入力される。このように、演算装置４３０において、あるデータ処理装置の第２パイプラインの出力「ｔａｇ＿ｖａｌｉｄ、ｔａｇ＿ｄａｔａ」を次段のデータ処理装置の第２パイプラインの入力に直列に繋がるように逐次的に接続される。
【００５４】
キャッシュ判定装置４８０には、すべてのデータ処理装置２００＿１〜２００＿Ｎから処理結果「ｔａｇ＿ｉｄ（１）、ｔａｇ＿ｉｄ（２）、・・・、ｔａｇ＿ｉｄ（Ｎ）」４５０が入力される。キャッシュ判定装置４８０にはさらに、データ処理装置２００＿１〜２００＿Ｎのうち何れか１つの第１パイプライン３００から出力された「ｖａｌｉｄ、ｄａｔａ」が入力される。デコーダ４５２は、まず有効信号「ｖａｌｉｄ」４５３が有効（アサート状態）であり且つ「ｅｎａｂｌｅ」１２１が有効であることを確認する。どちらも有効である場合に、キャッシュ判定装置４８０は、Ｎ個の処理結果「ｔａｇ＿ｉｄ（１）、ｔａｇ＿ｉｄ（２）、・・・、ｔａｇ＿ｉｄ（Ｎ）」４５０の各々の符号ビット４５１をデコーダ４５２を用いて確認する。デコーダ４５２は、各々の符号ビット４５１のうち１つでも「０」があればキャッシュ判定をキャッシュヒットとし、「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」４４４として「０」を出力する。デコーダ４５２は、各々の符号ビット４５１のすべてが「１」であればキャッシュ判定をキャッシュミスとし、「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」４４４として「１」を出力する。キャッシュヒットの場合に、デコーダ４５２はセレクタ４５４へ符号ビットのうち「０」であるデータ処理装置の番号４５６を出力する。セレクタ４５４は、番号４５６で示されるデータ処理装置の「ｔａｇ＿ｉｄ」を処理結果「ｔａｇ＿ｉｄ（１）、ｔａｇ＿ｉｄ（２）、・・・、ｔａｇ＿ｉｄ（Ｎ）」４５０から選択して、「ｔａｇ＿ｉｄ」４５８として出力する。ノード４６０は「ｅｎａｂｌｅ」１２１が有効（アサート状態）である場合に、入力されたデータ要素を用いて、それまでに記憶していたデータ要素を更新する。そして、ノード４６０は自身の記憶しているデータ要素を判定結果１２５としてアクセス調停部１３０へ出力する。
【００５５】
以上のように、本実施形態のキャッシュ装置では、各データ処理装置において、同一のアドレス信号「ｄａｔａ」が相異なる複数のアドレス信号「ｔａｇ＿ｖａｌｉｄ」と同時に比較される。それにより、さらにノード数が多いフルアソシアティブ方式のキャッシュ装置が容易に実現される。本実施形態のキャッシュ装置は、基本構成のデータ処理装置を複数備え、それぞれのデータ処理装置の第１パイプライン３００と第２パイプライン３６０を接続するだけである。そのため、設計・検証済みのデータ処理装置の再利用が可能となる。それにより、例えばフルアソシアティブ方式のキャッシュ装置のノード数を増減するような開発において開発効率を向上できる。また、キャッシュ判定部４００はパイプライン構成でデータ処理を行い、すべての符号ビットの論理積を算出するだけでキャッシュミスを判定できる。これにより、従来のキャッシュ装置に比べて本実施形態のキャッシュ装置は非常に高い動作周波数で動作できる。
【００５６】
〔変形例〕
キャッシュミスの場合には、最も後段に位置するデータ処理装置（Ｎ）２００＿Ｎの第２パイプライン３６０の出力として、「ｔａｇ＿ｄａｔａ、ｔａｇ＿ｖａｌｉｄ」が掃き捨てられる場合がある。この掃き捨てられたデータ要素はノード４６０へ出力され、ノード４６０はこれらのデータ要素を「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ、ｓｗｅｅｐ＿ａｄｄｒｅｓｓ＿ｖａｌｉｄ」として判定結果１２５に含めてアクセス調停部１３０へ出力してもよい。このデータ要素を用いてライトバック・キャッシュ装置を実現できる。
【００５７】
ライトバッグ・キャッシュ装置では、キャッシュメモリ１９０に一時記憶されたキャッシュデータが、処理装置Ａ１０１〜処理装置Ｄ１０４の書き出すライトデータにより置き換わる。このため、キャッシュメモリ１９０に一時記憶されたデータを最終的には外部メモリであるＤＲＡＭ１６５に退避する必要がある。ライトバッグ・キャッシュ装置に対応するため、処理装置Ａ１０１〜処理装置Ｄ１０４は書き込み動作をできるように、送出する格納アドレス１１３に、
・書き込みフラグである「ｗｒｉｔｅ＿ｅｎａｂｌｅ」
・書き込みデータである「ｗｒｉｔｅ＿ｄａｔａ」
を含める。書き込みフラグである「ｗｒｉｔｅ＿ｅｎａｂｌｅ」が有効（アサート状態）である場合に、キャッシュメモリ１９０の格納先に書き込みデータである「ｗｒｉｔｅ＿ｄａｔａ」が書き込まれる。書き込みフラグである「ｗｒｉｔｅ＿ｅｎａｂｌｅ」が無効（ディアサート状態）である場合は、前述の実施形態で説明したリード・キャッシュ装置の動作が行われる。そして、「ｗｒｉｔｅ＿ｅｎａｂｌｅ」と「ｗｒｉｔｅ＿ｄａｔａ」は、格納アドレス１１３を構成する他のデータ要素と同期して、キャッシュ判定部４００内のそれぞれのデータ処理装置２００＿１〜２００＿Ｎの第１パイプライン３００を移動する。データ処理装置（Ｎ）２００＿Ｎは他のデータ要素と同期して「ｗｒｉｔｅ＿ｅｎａｂｌｅ」と「ｗｒｉｔｅ＿ｄａｔａ」をノード４６０に出力し、ノード４６０はこれらのデータを判定結果１２５に含めてアクセス調停部１３０へ出力する。すなわち、この変形例の判定結果１２５には、
・キャッシュミス時のＤＲＡＭのデータ格納先であるアドレス信号「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ」、
・処理装置の識別信号である「ＩＤ」、
・キャッシュデータの格納先である「ｔａｇ＿ｉｄ」、
・キャッシュ判定結果である「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」、
・書き込みフラグである「ｗｒｉｔｅ＿ｅｎａｂｌｅ」、
・書き込みデータである「ｗｒｉｔｅ＿ｄａｔａ」、
・掃き捨てられたアドレス信号「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ」、
・掃き捨てられたアドレスの有効信号「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ＿ｖａｌｉｄ」、
が含まれる。
【００５８】
判定結果１２５は待ち合せキュー１４０を経てキャッシュメモリ調停部１８０に到達する。キャッシュメモリ調停部１８０は先程と同様にして「ＩＤ、ｔａｇ＿ｉｄ」を用いてキャッシュメモリ１９０の格納先を算出する。キャッシュ判定結果である「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」が無効（ディアサート状態）の場合に、キャッシュヒットしているので、キャッシュメモリ調停部１８０はキャッシュメモリ１９０の格納先に書き込みデータである「ｗｒｉｔｅ＿ｄａｔａ」を書き込む。一方、キャッシュ判定結果である「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」が有効（アサート状態）の場合に、キャッシュミスなので、キャッシュメモリ調停部１８０は直ぐに書き込みデータである「ｗｒｉｔｅ＿ｄａｔａ」をキャッシュメモリ１９０に書き込めない。また、掃き捨てられたアドレスの有効信号「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ＿ｖａｌｉｄ」が有効（アサート状態）の場合には、キャッシュメモリ１９０の格納先に一時記憶されたデータが上書きされてしまう。そこで、キャッシュメモリ調停部１８０は格納先のキャッシュデータをキャッシュメモリ１９０から読み出して、ＤＲＡＭ１６５の掃き捨てられたアドレス信号「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ」が指し示す領域にこのキャッシュデータを退避する。その後、キャッシュメモリ調停部１８０は外部メモリであるＤＲＡＭ１６５のアドレス信号「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ」が指し示す領域のデータをキャッシュメモリ１９０にリフィルする。このとき、キャッシュメモリ調停部１８０はＤＲＡＭ１６５から読み出したデータに書き込みデータである「ｗｒｉｔｅ＿ｄａｔａ」を上書きしてキャッシュメモリ１９０の格納先に一時記憶する。読み出したデータと「ｗｒｉｔｅ＿ｄａｔａ」とが同じ大きさ（バイト数）の場合に、キャッシュメモリ調停部１８０はこのリフィル動作は省略してもよい。また、掃き捨てられるアドレスの有効信号「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ＿ｖａｌｉｄ」が無効（ディアサート状態）の場合に、キャッシュメモリ１９０の格納先には一時記憶された有効なキャッシュデータが存在しない。したがって、キャッシュメモリ調停部１８０はキャッシュメモリ１９０の格納先に一時記憶されたキャッシュデータを退避する必要はない。この場合に、キャッシュメモリ調停部１８０は必要であれば前述のリフィル動作を行いつつ、「ｗｒｉｔｅ＿ｄａｔａ」をキャッシュデータとしてキャッシュメモリ１９０の格納先へ一時記憶すればよい。
【００５９】
以上の変形例ではライトバッグ・キャッシュ装置を容易に実現することができる。キャッシュ装置のキャッシュ判定部４００は、ライトバック・キャッシュの場合もリードキャッシュと同様の利点を有する。特に、古いデータから順番に自動削除され、キャッシュ競合時の複雑な置き換え（リプレイス）制御を行う必要はない。そして、その古いデータから順番にキャッシュメモリに一時記憶されたキャッシュデータを、外部メモリであるＤＲＡＭ１６５に順番に退避するだけでよい。このように、ライトバック・キャッシュ装置特有のライトバッグ制御も非常に単純な方法で実現される。
【００６０】
＜第２実施形態＞
図５を参照して本実施形態に係るキャッシュ装置について説明する。図５は本実施形態に係るキャッシュ判定部５００の回路構成の一例を説明する図である。キャッシュ判定部５００は図１のキャッシュ装置１１０のキャッシュ判定部１２０の代わりに用いられる。上述したキャッシュ装置１１０の基本構成と同様の部分の説明は繰り返さない。また、第１実施形態で説明した変形例は本実施形態に対しても適用可能である。
【００６１】
キャッシュ判定部５００は複製装置５１０、演算装置５３０及びキャッシュ判定装置５８０を備える。演算装置５３０は複数のデータ処理装置２００＿１〜２００＿Ｎを備え、データ処理装置２００＿１〜２００＿Ｎのそれぞれは図２で説明したデータ処理装置２００と同じ構成を有している。このように、第１実施形態で説明したキャッシュ判定部４００と同様に、キャッシュ判定部５００は上述のデータ処理装置を複数備えることで、同時に比較できるデータ要素の数を増やしている。さらに、キャッシュ判定部５００は、複数の処理装置Ａ１０１〜処理装置Ｄ１０４でキャッシュ装置１１０を共有する場合に、各処理装置が専有するキャッシュ容量（ノード数）を処理装置ごとに切り替えられる。このように処理装置ごとの専有割り当てを切り替えることで、優先度の高い画像処理に多くのキャッシュ容量（ノード数）を割り当てることができる。すなわち画像処理を実施する際に、画像処理の目的に応じて適応的にキャッシュ容量（ノード数）の専有割り当てを切り替え、所望の効率で画像処理が実行される。
【００６２】
本実施形態の複製装置５１０は、パーティション情報テーブル５１５を備える点で第１実施形態の複製装置４１０と異なる。従って、複製装置４１０との共通部分の説明は省略し、以下にパーティション情報テーブル５１５について説明する。パーティション情報テーブル５１５には、処理装置ごとに専有するキャッシュ容量（ノード数）の割り当てを切り替えるために、ＣＰＵ１６０により、予めパーティション情報が設定されている。パーティション情報とは各処理装置が専有するデータ処理装置２００＿１〜２００＿Ｎの割り当て（グループ分け）を表す情報である。図７と図８を参照してパーティション情報テーブル５１５について詳細に説明する。パーティション情報テーブル５１５は、図７に示すフォーマット７００のように、処理装置の識別信号ＩＤ７０２ごとにパーティション情報７０４を設定できるテーブルである。処理装置がＭ個であり、演算装置５３０内のデータ処理装置２００がＮ個である場合に、識別信号ＩＤ７０２が１〜Ｍの各々に対して、Ｎビットのパーティション情報７０４を格納する。Ｎビットのパーティション情報７０４は、上位から１ビットずつ、指し示すデータ処理装置２００について使用するか否かを表すフラグになっており、「１」の場合は指し示すデータ処理装置の＜使用＞を表し、「０」の場合は＜不使用＞を表す。
【００６３】
続いて、図８を用いてパーティション情報テーブル５１５の具体例８００を説明する。具体例８００では、４つの識別信号ＩＤ７０２の１〜４の各々に対して、８ビットのパーティション情報７０４が格納されている。この４つの識別信号ＩＤ７０２は、図１の４つの処理装置Ａ１０１〜処理装置Ｄ１０４に各々関連付けられている。そして、８ビットのパーティション情報７０４の各１ビットは、上位ビットから順に、図５のデータ処理装置（１）２００＿１からデータ処理装置（Ｎ）２００＿Ｎに関連付けられている。例えば、処理装置Ａ１０１のパーティション情報は“１０００００００”であり、処理装置Ａ１０１はデータ処理装置（１）を使用する（８２０）が、残りのデータ処理装置（２）〜（８）を使用しない設定となる。また、処理装置Ｂ１０２のパーティション情報は“０１１１００００”であり、処理装置Ｂ１０２はデータ処理装置（２）〜（４）を使用する（８２２）が、残りのデータ処理装置（１）とデータ処理装置（５）〜（８）を使用しない設定となる。同様に、処理装置Ｃ１０３はデータ処理装置（５）と（７）を使用し、残りを使用しない設定となる。処理装置Ｄ１０４はデータ処理装置（６）〜（８）を使用し、残りを使用しない設定となる。この具体例８００では、処理装置Ａ１０１はデータ処理装置（１）を、処理装置Ｂ１０２はデータ処理装置（２）〜（４）を、処理装置Ｃ１０３はデータ処理装置（５）と（７）を、処理装置Ｄ１０４はデータ処理装置（６）と（８）を専有することになる。パーティション情報７０４の設定は、複数の処理装置間で排他であればよく、処理装置Ｃ１０３や処理装置Ｄ１０４のようにデータ処理装置が不連続に割り当てられていてもよい（８２４）。
【００６４】
図５に戻り、複製装置５１０は、入力された識別信号「ＩＤ」を用いてパーティション情報テーブル５１５から、この識別信号「ＩＤ」に対応するパーティション情報「ｐａｒｔｉｔｉｏｎ」５１８を読み出してノード５１１に入力する。そして、ノード５１１は、第１実施形態と同様に、入力有効信号「ｖａｌｉｄ」と入力データ信号「ｄａｔａ、ＩＤ、ｐａｒｔｉｔｉｏｎ」を複製してノード５１２＿１〜５１２＿Ｎへ出力する。ノード５１２＿１〜５１２＿Ｎはそれぞれ、対応するデータ処理装置２００＿１〜２００＿Ｎの第１パイプライン３００へ自身が記憶しているデータ要素を出力する。このように、複製装置５１０はデータ要素をデータ処理装置２００の数だけ複製してリタイミングする。
【００６５】
〔第２パイプライン３６０の接続切り替え〕
本実施形態の演算装置５３０において、各データ処理装置の第２パイプライン３６０は破線部５４０のように接続される。この第２パイプライン３６０の接続は、データ処理装置（Ｎ）２００＿Ｎから出力されるパーティション情報「ｐａｒｔｉｔｉｏｎ」５３５に応じて自動的に切り替わる。演算装置５３０は、デコーダ５５２が出力する「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」５４４と、データ処理装置（Ｎ）が出力するパーティション情報「ｐａｒｔｉｔｉｏｎ」５３５のデータ処理装置（１）〜（Ｎ）に対応する各１ビットとの論理積を各々算出する。そして、演算装置５３０は、算出した論理積を、対応するデータ処理装置の駆動信号「ｓｈｉｆｔ」として入力する（５４４＿１、５４４＿２、・・・、５４４＿Ｎ）。これにより、すべてのデータ処理装置のうちで、パーティション情報で＜使用＞に設定されたデータ処理装置に対してのみ、第２パイプライン３６０のデータ要素が同期して移動することになる。
【００６６】
次に演算装置５３０は、第２パイプライン３６０の接続切り替えのために必要なデータ要素を取りまとめる。各データ処理装置（１）〜（Ｎ）の第２パイプライン３６０の出力のデータ要素（５３２＿１〜５３２＿Ｎ）と「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」５４４、「ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ（ｄａｔａ）」５５５とがバス５４２に束ねられる。そして各データ処理装置（１）〜（Ｎ）の第２パイプライン３６０への入力を選択するためのセレクタ５４５＿１、５４５＿２、・・・、５４５＿Ｎにバス５４２からデータが入力される。セレクタ５４５＿１、５４５＿２、・・・、５４５＿Ｎは、パーティション情報「ｐａｒｔｉｔｉｏｎ」５３５をもとに対応するデータ要素を選択して、各データ処理装置（１）〜（Ｎ）の第２パイプライン３６０に入力する。また、キャッシュミスの際に掃き捨てられたデータ要素を出力するためのセレクタ５４８を備えてもよい。パーティション情報「ｐａｒｔｉｔｉｏｎ」５３５をもとにバス５４２から掃き捨てられたデータ要素を選択して「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ、ｓｗｅｅｐ＿ａｄｄｒｅｓｓ＿ｖａｌｉｄ」として出力する。上述のように、このデータ要素はライトバック・キャッシュ装置としてキャッシュ装置１１０が用いられる場合に使用される。
【００６７】
例えば、具体例８００の第２パイプラインへの入力選択方法は、以下のようになる。データ処理装置（Ｎ）の第１パイプライン３００から出力された識別番号「ＩＤ」が「１」の場合に、具体例８００から、パーティション情報の設定は“１０００００００”であることがわかる。「ＩＤ」が「１」のデータ要素に関するキャッシュ判定結果がキャッシュミスであった場合に、データ処理装置（１）の第２パイプライン３６０がシフトされる。そこで、データ処理装置（１）の第２パイプラインの入力は、バス５４２のデータから「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ５４４、ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ（ｄａｔａ）５５５」が選択される。また、掃き捨てられたデータ要素である「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ、ｓｗｅｅｐ＿ａｄｄｒｅｓｓ＿ｖａｌｉｄ」として、データ処理装置（１）の第２パイプライン３６０からの出力５３２＿１が選択される。また、データ処理装置（Ｎ）の第１パイプライン３００から出力された識別番号「ＩＤ」が「２」の場合に、具体例８００から、パーティション情報の設定は“０１１１００００”でことがわかる。「ＩＤ」が「２」のデータ要素に関するキャッシュ判定結果がキャッシュミスであった場合に、データ処理装置（２）〜（４）の第２パイプラインがシフトされる。そこで、データ処理装置（２）の第２パイプライン３６０への入力は、バス５４２のデータから「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ５４４、ｃａｃｈｅ＿ｍｉｓｓ＿ａｄｄｒｅｓｓ（ｄａｔａ）５５５」が選択される。データ処理装置（３）の第２パイプラインへの入力は、データ処理装置（２）の第２パイプラインからの出力５３２＿２が選択される。データ処理装置（４）の第２パイプラインへの入力は、データ処理装置（３）の第２パイプラインからの出力が選択される。また、掃き捨てられたデータ要素である「ｓｗｅｅｐ＿ａｄｄｒｅｓｓ、ｓｗｅｅｐ＿ａｄｄｒｅｓｓ＿ｖａｌｉｄ」として、データ処理装置（４）の第２パイプラインからの出力が選択される。また、「ＩＤ」が「３」や「４」のデータ要素に関する第２パイプラインの接続の切り替えも同様である。パーティション情報の設定が具体例８００の８２４のように不連続であっても、データ処理装置の装置番号の小さい方から順に接続する。つまり、パーティション情報「ｐａｒｔｉｔｉｏｎ」５３５の設定に応じて使用するデータ処理装置間の第２パイプラインからの出力を、次に使用するデータ処理装置の第２パイプラインへの入力に直列に繋げばよい。
【００６８】
キャッシュ判定装置５８０には、すべてのデータ処理装置２００＿１〜２００＿Ｎの処理結果「ｔａｇ＿ｉｄ（１）、ｔａｇ＿ｉｄ（２）、・・・、ｔａｇ＿ｉｄ（Ｎ）」５５０が入力される。また、キャッシュ判定装置５８０には、データ処理装置２００＿１〜２００＿Ｎのうち何れか１つから「ｖａｌｉｄ、ｄａｔａ、ＩＤ、ｐａｒｔｉｔｉｏｎ」が入力される。図５ではデータ処理装置（Ｎ）２００＿Ｎから入力されているが、他のデータ処理装置から入力されてもよい。デコーダ５５２は、第１実施形態のデコーダ４５２と異なり、パーティション情報「ｐａｒｔｉｔｉｏｎ」５３５が入力される。図６を参照してデコーダ５５２を詳細に説明する。デコーダ５５２は、以下の４つの信号（それぞれ１ビット）の論理積を算出する。
【００６９】
・有効信号「ｖａｌｉｄ」５５３、
・データ処理装置（１）から（Ｎ）の処理結果「ｔａｇ＿ｉｄ」の符号ビットを反転した信号（符号ビット５５１の何れか１ビットの反転）、
・パーティション情報「ｐａｒｔｉｔｉｏｎ」５３５のデータ処理装置（１）から（Ｎ）に対応する１ビット信号、
・駆動信号「ｅｎａｂｌｅ」１２１。
【００７０】
そして、デコーダ５５２は、各論理積のうち１つでも「１」であれば、キャッシュ判定結果をキャッシュヒットとし、すべて「０」であればキャッシュ判定結果をキャッシュミスとする。すべて「０」の場合に、デコーダ５５２は「ｃａｃｈｅ＿ｍｉｓｓ＿ｆｌａｇ」５４４を有効（アサート状態）として出力する。そしてデコーダ５５２は、キャッシュヒットの場合に各論理積のうち、「１」となっているデータ処理装置の装置番号（１からＮの何れか）５５６をセレクタ５５４へ出力する。キャッシュ判定装置５８０はキャッシュヒット時の装置番号５５６をもとに複数の処理結果「ｔａｇ＿ｉｄ（１）〜ｔａｇ＿ｉｄ（Ｎ）」５５０からキャッシュヒット時の「ｔａｇ＿ｉｄ」５５８をセレクタ５５４を用いて選択し、ノード５６０へ出力する。
【００７１】
続いて、本実施形態のキャッシュ装置のキャッシュメモリ調停部１８０の動作とキャッシュメモリ９００の構成とを説明する。図９を参照して本実施形態に係るキャッシュメモリ９００について説明する。キャッシュメモリ９００は図１のキャッシュメモリ１９０の代わりに用いられる。キャッシュメモリ９００もＦＩＦＯで構成される。キャッシュメモリ９００はデータ処理装置（１）〜（Ｎ）に対応する領域に分割される。そしてパーティション情報の設定に応じて、ＩＤの各々についてＦＩＦＯの基準となるベースポインタと領域のライン数が定まる。具体例８００の８２４のように領域が不連続な場合であっても、前述の第２パイプラインの接続切り替え器の機能により、使用する領域は連続して確保される。これは、９０１に示すのようにデータ処理装置（６）と（７）は入れ替えてキャッシュメモリ９００に確保されることを意味する。そして、これにより、「ＩＤ」が「３」と「４」の場合でも、「ＩＤ」が「１」と「２」の場合と同様の簡単なＦＩＦＯ制御でキャッシュメモリ９００へのデータアクセスが実現できる。キャッシュメモリ調停部１８０は、取り出した「ＩＤ」に応じた前述のベースポインタとライン数とＩＤごとのライトポインタを取得する。キャッシュヒットしている場合に、キャッシュメモリ調停部１８０は、同時に取り出した「ｔａｇ＿ｉｄ」とキャッシュメモリ９００のベースポインタとライトポインタからアドレスを算出する。そして、キャッシュメモリ調停部１８０は、キャッシュメモリ９００のベースポインタとライトポインタの合計値の指す格納領域に取り出したキャッシュデータを「ｗｒｉｔｅ＿ｄａｔａ」１８２として書き込む。
【００７２】
以上のように、本実施形態に係るキャッシュ判定部５００はパイプライン構成でデータ処理する。そして、データ処理装置の各々に対応する出力の符号ビットの反転とパーティション情報の高々１ビットの論理積を算出するだけでキャッシュヒットを判定できる。これにより、従来のキャッシュ装置に比べて、非常に高い動作周波数で動作できる。また、本実施形態でも古いデータから順番に自動で削除されるため、キャッシュ競合時の複雑な置き換え（リプレイス）制御を行う必要がない。そして、キャッシュメモリも予め定められた領域ごとにリング式でＦＩＦＯ動作するだけである。キャッシュメモリ９００を実現するためには、ライトポインタを複数備えたマルチバンクのＦＩＦＯを用いるだけでよい。キャッシュメモリ９００は複数のＦＩＦＯを用いても実現できる。本実施形態では、パーティション情報をテーブル化して、処理装置ごとに切り替える例を説明した。しかしながら、処理装置の処理内容（動作状況）ごとに、各処理装置がパーティション情報を指定しても実現できる。
【００７３】
〔変形例〕
本実施形態では、図５に記載された複数のデータ処理装置（１）〜（Ｎ）の第１パイプライン３００と第２パイプライン３６０の各ノードは１系統のクロック信号（不図示）により動作している。しかしながら、複数のデータ処理装置（１）〜（Ｎ）の各々に、同相ではあるが、異なる系統のクロック信号を入力してデータ処理装置（１）〜（Ｎ）の各々を動作させてもよい。そして消費電力の削減を優先する場合においては、データ処理装置（１）から（Ｎ）の何れかのクロック信号を停止し、そのデータ処理装置を停止させる。例えば、前述の具体例８００において、処理装置Ａ１０１のみを動作させ、処理装置Ｂ１０２から処理装置Ｄ１０４を停止する場合に、パーティション情報テーブル５１５の「ＩＤ」が「２」から「４」のパーティション情報に“００００００００”を設定する。そして、データ処理装置（１）以外の他のデータ処理装置を停止させる。また、消費電力の削減を優先しつつ、低速ながらも処理装置Ａ１０１から処理装置Ｄ１０４を動作させるためには、「ＩＤ」が「１」〜「４」のパーティション情報に“１０００００００”を設定する。これにより、データ処理装置（１）は、処理装置Ａ１０１〜処理装置Ｄ１０４のすべてで共有される。そして、他のデータ処理装置は使用されていないので、これを停止させることができる。また、キャッシュメモリ９００を、データ処理装置（１）〜（Ｎ）の領域ごとに異なるＳＲＡＭで実現する。そして、上述のデータ処理装置の停止に合せて、不使用のＳＲＡＭのクロック信号（または電源）の供給を止める。これにより、さらなる消費電力の削減が可能となる。
【００７４】
図１０は本実施形態の別の変形例を説明する図である。、Ｍ個の処理装置（１）〜（Ｍ）と、Ｎ個のデータ処理装置（１）〜（Ｎ）との接続の一例であり、これまで説明したリングバスを介した接続ではなく、クロスバースイッチ１０２０、１０６０を介した接続となっている。複数の処理装置がデータ処理装置の各々を排他的に使用するために、データ処理装置の前後にパーティション情報「ｐａｒｔｉｔｉｏｎ」によって切り替わるクロスバースイッチ１０２０、１０６０が挿入されている。この構成では、複数の処理装置が複数のデータ処理装置を並行して使用できる。このような処理の並列化により、複数の処理装置の高速化を実現できる。
【００７５】
＜他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011257880.tif 000003
【図２】
2011257880.tif 000004
【図３】
2011257880.tif 000005
【図４】
2011257880.tif 000006
【図５】
2011257880.tif 000007
【図６】
2011257880.tif 000008
【図７】
2011257880.tif 000009
【図８】
2011257880.tif 000010
【図９】
2011257880.tif 000011
【図１０】
2011257880.tif 000012
【図１１】
2011257880.tif 000013