JP5650441B2 - 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム - Google Patents

演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム Download PDF

Info

Publication number
JP5650441B2
JP5650441B2 JP2010130447A JP2010130447A JP5650441B2 JP 5650441 B2 JP5650441 B2 JP 5650441B2 JP 2010130447 A JP2010130447 A JP 2010130447A JP 2010130447 A JP2010130447 A JP 2010130447A JP 5650441 B2 JP5650441 B2 JP 5650441B2
Authority
JP
Japan
Prior art keywords
data
cache
pipeline
data processing
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010130447A
Other languages
English (en)
Other versions
JP2011257880A5 (ja
JP2011257880A (ja
Inventor
伊藤 忠幸
忠幸 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2010130447A priority Critical patent/JP5650441B2/ja
Priority to EP11164892.9A priority patent/EP2393004B1/en
Priority to EP11195127.3A priority patent/EP2437159B1/en
Priority to US13/105,062 priority patent/US8812783B2/en
Priority to CN201110145879.5A priority patent/CN102331922B/zh
Publication of JP2011257880A publication Critical patent/JP2011257880A/ja
Publication of JP2011257880A5 publication Critical patent/JP2011257880A5/ja
Application granted granted Critical
Publication of JP5650441B2 publication Critical patent/JP5650441B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

本発明は演算装置、キャッシュ装置、その制御方法及びコンピュータプログラムに関する。
第1データ群に含まれるそれぞれのデータが、第2データ群の少なくとも何れかと一致するか否かを判定することを要求するアプリケーションが多く存在する。特許文献1は、このような判定を行うために、カウンタフロー・パイプライン技術を提案する。図11を用いてカウンタフロー・パイプライン技術について説明する。カウンタフロー・パイプライン技術は、2つのパイプラインである第1パイプライン1110と第2パイプライン1120とを用いる。第1パイプライン1110は複数の第1ノード1111を有しており、それぞれの第1ノード1111はある時点で第1データ群のデータA[0]〜A[3]を記憶している。第1パイプライン1110は右方向にデータをシフトさせる。データのシフトの結果、例えばA[2]を記憶していた第1ノード1111はA[3]を記憶するようになる。第2パイプライン1120は複数の第2ノード1112を有しており、それぞれ第2ノード1121はある時点で第2データ群のデータB[0]〜B[3]を記憶している。第2パイプライン1120は左方向にデータをシフトさせる。判定部1130は第1ノード1111と第2ノード1121とに接続されており、それぞれのノードに記憶されているデータが一致しているか否かを判定する。カウンタフロー・パイプライン技術では、2つのパイプライン内のデータをそれぞれ逆方向にシフトさせることによって、第1データ群のデータと第2データ群のデータとを総当りで比較する。
カウンタフロー・パイプラインによる演算を高速に行うために、両方のパイプラインを独立にシフトさせることになる。しかしながら、第1パイプライン1110と第2パイプライン1120とが同時にシフトされてしまうと、比較されないデータが生じてしまう。例えば、図11に示される時点においてA[2]はB[1]と比較される。第1パイプラインと第2パイプラインとが同時にシフトされると、A[2]は次にB[3]と比較されることになる。従って、A[2]はB[2]と比較されることはない。特許文献1はこのようなデータの比較漏れを抑制するために、第1パイプライン1110と第2パイプライン1120の各ノードの状態を監視している。データの比較漏れが発生する状態の場合には、両パイプラインを停止し、比較が完了してからデータの移動を許可する。さらに、特許文献1に記載されたカウンタフロー・パイプラインでは、データを1対1に比較するだけであり、1つのデータを複数のデータと同時に比較することや、1つのデータに対して同時に比較されるデータの個数を動的に変更することができない。
特許第3588487号公報
このように、特許文献1に記載されたカウンタフロー・パイプラインでは、データを確実且つ柔軟に比較することが難しかった。そこで、本発明は、カウンタフロー・パイプラインを用いて、データを確実且つ柔軟に比較するための技術を提供することを目的とする。
上記課題に鑑みて、本発明の1つの側面に係る演算装置は、複数の第1ノードを有し、各第1ノードの保持する第1データを第1方向に位置する隣のノードへ移動させる第1パイプラインと、前記第1パイプラインの第1ノードの各々に対応している複数の第2ノードを有し、各第2ノードの保持する第2データを前記第1方向と逆の第2方向に位置する隣のノードへ移動させる第2パイプラインと、前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードに保持されている第2データと、を比較する比較手段と、を有するデータ処理装置を複数備える演算装置であって、前記演算装置は、外部装置から第1データと第2データとを取得する取得手段と、前記取得した第1データを複製したデータと前記取得した第1データとを前記複数のデータ処理装置のそれぞれの第1パイプラインへ入力し、前記取得した第2データを前記複数のデータ処理装置のうちの1つの第2パイプラインへ入力して、前記複数のデータ処理装置の第2パイプラインを一続きに移動させる入力手段と、前記複数のデータ処理装置のそれぞれにおける、前記第1パイプラインから掃き出された第1データと、前記第2パイプラインの前記複数の第2ノードのそれぞれに保持された第2データとの比較結果をデコードすることによって、前記複数のデータ処理装置の少なくとも1つにおいて前記掃き出された第1データと一致する第2データが存在したかを判定する判定手段と、を更に備え、前記データ処理装置の第2パイプラインは、前記判定手段において前記掃き出された第1データと一致する第2データが存在しないと判定された場合、各第2ノードの保持する第2データを前記第2方向に位置する隣のノードへ移動させ、あるデータ処理装置の第2パイプラインから掃き出された第2データが別のデータ処理装置の第2パイプラインに前記第2方向に入力されるように一続きに構成され、前記複数のデータ処理装置の前記比較手段において、少なくとも2つの同一の前記取得した第1データは、前記複数のデータ処理装置の第2パイプラインに保持されている互いに異なる第2データに対して比較されることを特徴とする。
上記手段により、カウンタフロー・パイプラインを用いて、データを確実且つ柔軟に比較するための技術が提供される。
基本構成の画像処理装置100の全体構成図。 基本構成のキャッシュ判定部120の回路構成図。 基本構成のデータ処理装置200の回路構成図。 第1実施形態のキャッシュ判定部400の回路構成図。 第2実施形態のキャッシュ判定部500の回路構成図。 第2実施形態のデコーダ552を詳細に説明する図。 第2実施形態のパーティション情報テーブルのフォーマット。 第2実施形態のパーティション情報テーブルの具体例。 第2実施形態のキャッシュメモリ900を説明する図。 第2実施形態の別の変形例を説明する図。 従来のカウンタフロー・パイプライン技術を説明する図。
以下、添付の図面を参照して本発明の好適な実施形態を説明する。まず、各実施形態のキャッシュ装置の基本構成を以下に説明する。
〔画像処理装置100〕
図1は、キャッシュ装置110を含む画像処理装置100の全体構成の一例を示すブロック図である。キャッシュ装置110は、後述するデータ処理装置をフルアソシアティブ方式のキャッシュ判定部120として応用している。
画像処理装置100は、CPU160、外部記憶装置であるDRAM165、DRAMコントローラ166及びシステムバス164を含む。また、画像処理装置100は、DRAM165に対するデータの読み書きのために、データ読み出し用のDMAC(Direct Memory Access Controller)であるRDMAC162とデータ書き込み用のWDMAC163を含む。画像処理装置100はさらに、画像処理などの処理を行う処理装置A101〜処理装置D104とキャッシュ装置110とを含み、複数の処理装置がキャッシュ装置110を共有している。すなわち、キャッシュ装置110は共有キャッシュ装置であるといえる。画像処理装置100に含まれる処理装置の数は任意であり、処理装置の各々は高速に固定処理するパイプライン回路で構成されていてもよいし、低速ではあるが柔軟に処理内容を変更可能なプロセッサとプログラムとで構成されていてもよい。
CPU160は、制御バス161を介してRDMAC162、WDMAC163、処理装置A101〜処理装置D104を制御し、画像処理装置100全体を統括制御する。CPU160の指示によりRDMAC162は、システムバス164、DRAMコントローラ166を介してDRAM165に格納された画像データを読み出し、処理装置A101に入力する。処理装置A101は、所望の画像処理を行い、処理結果の画像データを処理装置B102へ送り出す。処理装置B102、処理装置C103、処理装置D104も処理装置A101と同様に各種の画像処理を行い、処理結果の画像データを後段の処理装置に送り出す。処理装置D104は、WDMAC163に処理結果の画像データを送り出す。WDMAC163はCPU160からの指示に従って、処理装置D104から受け取った画像データをシステムバス164、DRAMコントローラ166を介してDRAM165に格納する。画像処理装置100は、前述の一連の動作を実行することにより画像処理を実施する。
前述の画像処理の過程で、処理装置A101〜処理装置D104は、共有されたキャッシュ装置110を介して、DRAM165から各種必要なデータ(設定、テーブル、属性情報など)を読み出して画像処理に使用できる。また処理装置の何れかがプロセッサとプログラムとで構成されている場合に、キャッシュ装置110を介してプログラムを逐次的に読み出して処理を実行することも可能である。
〔キャッシュ装置110〕
続いてキャッシュ装置110の構成と動作について詳細説明する。前述の処理装置A101から処理装置D104は、キャッシュ装置110を介してDRAM165からデータを読み出す際に、DRAM165上のデータの格納アドレスをI/F112に送り出す。キャッシュ装置110は、DRAM165上のデータの格納アドレスを伝達するために、アクセス要求用のリングバス111を含む。そして処理装置の各々に対応したI/F112は、このリングバス111で互いに接続されている。処理装置の各々から送出した格納アドレス113は、I/F112とリングバス111を介してキャッシュ判定部120に入力される。そして入力された格納アドレス113をもとにキャッシュ判定部120がキャッシュヒットするか否かを判定する。
〔キャッシュ判定部120〕
図2を参照してキャッシュ判定部120の回路構成の一例について詳細に説明する。キャッシュ判定部120はデータ処理装置200とキャッシュ判定装置280とを含む。
キャッシュ判定部120へ入力(第1入力)される格納アドレス113には、
・アドレスの有効信号である「valid」、
・アドレス信号である「data」、
・処理装置101〜104の識別信号である「ID」、
が含まれ、これらの信号がデータ処理装置200へ入力される。
〔データ処理装置200〕
図3を参照してデータ処理装置200の回路構成の一例について詳細に説明する。図3はデータ処理装置200の一部に注目した図である。第1パイプライン300は複数のノード(第1ノード)を有する。この中の1つを着目ノード(例えばノード310)とすると、着目ノードから第1方向(図1の右方向)へ1つ下手の第1ノード(例えばノード330)へデータ要素(第1データ)を移動させる。第1パイプライン300には、図2に示すように、データ処理装置200の外部から、
・アドレスの有効信号である「valid」、
・アドレス信号である「data」、
・アドレス信号の処理結果である処理結果信号「tag_id」、
・処理装置の識別信号である「ID」、
が入力される。「valid」、「data」及び「ID」は格納アドレス113に含まれるものであり、「tag_id」は例えばデフォルト値である。
再び図3を参照して、例えばノード310へは、
・アドレスの有効信号である「valid[l−1]」312、
・アドレス信号である「data[l−1]」314、
・処理装置の識別信号である「ID[l−1]」、
が入力される。図3では簡略化のため「valid」と「ID」とを1本の信号線で表している。また、データ処理回路320へは、
・アドレス信号である「data[l−1]」314、
・アドレス信号の処理結果である処理結果信号「tag_id[l−1]」316、
が入力される。データ処理回路320はこれらの入力信号に対して後述の処理を行って、処理結果をノード310へ出力する。
パイプライン・レジスタを含むノード310は駆動信号である「enable」121が有効(アサート状態)である場合に、上手側のノード及びデータ処理回路320から入力されているデータ要素を用いて、それまでに記憶していたデータ要素を更新する。一方、「enable」121が無効(ディアサート状態)である場合に、ノード310は、上手側から入力されているデータ要素を無視して、以前から記憶しているデータ要素をそのまま保持し、データ要素を更新しない。説明のために、第1パイプライン300のうち、1つのノードとそのノードへ処理結果信号を入力するデータ処理回路とを含む区間をステージと呼ぶ。特に図3において、ノード310とデータ処理回路320とを含む区間を第1ステージと呼ぶ。
ノード310は記憶しているデータ、すなわち
・アドレスの有効信号「valid[l]」332、
・アドレス信号「data[l]」334、
・処理結果信号「tag_id[l]」336、
・識別信号「ID[l]」、
を下手側のノード330及びデータ処理回路340へ出力する。図3において、第1パイプライン300のうち、ノード330とデータ処理回路340とを含む区間を第2ステージと呼ぶ。第1ステージと同様に第2ステージでも種々のデータ処理が行われる。そして処理後のデータ要素がノード330にて一時記憶されるが、この記憶動作は第1ステージと同様である。
さらにノード330は、
・アドレスの有効信号「valid[l+1]」352、
・アドレス信号「data[l+1]」354、
・処理結果信号「tag_id[l+1]」356、
・識別信号「ID[l+1]」、
を出力する。このような動作により、第1パイプライン300では、データ要素(有効信号「valid」、アドレス信号「data」、処理結果信号「tag_id」、識別信号「ID」)が「上手」である図面の左側から「下手」である図面の右側へ移動する。
データ処理装置200は、第1パイプライン300に加えて第2パイプライン360を含む。この第2パイプライン360は複数のノード(第2ノード)を有し、この第2ノード内のパイプライン・レジスタが保持するデータ要素(第2データ)を第1パイプラインと逆方向(第2方向)にあるノードへ移動させる。詳細には、この第2パイプライン360は「上手」である図面の右側から「下手」である図面の左側に向けてデータ要素を移動させる。図2に示すように、第2パイプライン360には、アドレスの有効信号である「tag_valid」と、アドレス信号である「tag_data」とがデータ処理装置200の外部から入力(第2入力)される。
図3に戻り、ノード370には、アドレスの有効信号である「tag_valid[i+2]」372と、アドレス信号である「tag_data[i+2]」374が上手側から入力される。これらの入力信号は、前述のデータ処理回路340で使用される。
ノード370は、駆動信号である「shift」362が有効(アサート状態)である場合に、上手側のノードから入力されているデータ要素を用いて、それまでに記憶していたデータ要素を更新する。一方、駆動信号「shift」362が無効(ディアサート状態)である場合に、上手側から入力されているデータ要素を無視して、以前から記憶しるデータ要素をそのまま保持し、データ要素を更新しない。第2パイプライン360のうち、1つのノードを含む区間をステージと呼ぶ。特に図3において、ノード370を含む区間を第1ステージと呼ぶ。
ノード370は、パイプライン・レジスタに記憶されているアドレスの有効信号「tag_valid[i+1]」382とアドレス信号「data[i+1]」384とをノード380とデータ処理回路320、340とへ出力する。さらに、ノード380は有効信号「tag_valid[i]」392とアドレス信号「tag_data[i]」394とを下手側へ出力する。このような動作により第2パイプライン360では、データ要素である有効信号「tag_valid」とアドレス信号「tag_data」が、「上手」である図面の右側から「下手」である図面の左側へ移動する。
〔データ処理回路〕
続いて、データ処理回路320、340について詳細に説明する。データ処理回路は、2方向のアドレス信号「data」と「tag_data」とを比較(第1比較)し、等しい場合に「tag_data」の格納番号(前述の“[i]”、“[i+1]”、“[i+2]”)を「tag_id」として記憶する。そして「tag_id」は、第1パイプライン300のデータ処理結果として、「data」と同期して「上手」である図面の左側から「下手」である図面の右側へ移動する。このようにして、「tag_id[l]」336には、第1パイプライン300のl番目のデータ要素「data[l]」334と値が等しい第2パイプライン360のデータ要素の格納番号が設定されることになる。
具体的には、データ処理回路320は、有効信号「tag_valid[i]」392が有効である場合に、アドレス信号「data[l−1]」314とアドレス信号「tag_data[i]」394とを比較回路322で比較する。比較結果が等しい場合に、セレクタ326は「tag_data[i]」394の格納番号である「Node=i」を選択する。この選択された値は、第1パイプライン300の「data[l−1]」314と値が等しい第2パイプライン360のデータ要素の格納番号として「tag_id[l−1]」316に設定される。
前述の通り、第1パイプライン300と第2パイプライン360とが同時に動作する場合に、比較漏れが生じるケースがある。これに対処するためにデータ処理回路320は、有効信号「tag_valid[i+1]」382が有効の場合に、アドレス信号「data[l−1]」314とアドレス信号「tag_data[i+1]」384とを比較回路324で比較(第2比較)する。比較結果が等しい場合に、セレクタ326は「tag_data[i+1]」384の格納番号である「Node=i+1」を優先的に選択する。
またセレクタ326は、上記2種類の比較結果がどちらも等しくない場合に、入力された処理結果信号「tag_id[l−1]」316を選択する。駆動信号「shift」362が有効(アサート状態)であり、第2パイプライン360が動作する場合に、第2パイプライン360のデータ要素は「下手」である図面の左側に移動する。したがって、この場合は「tag_data」の格納番号も1つだけ左の格納番号を指すことが正しい。そこでセレクタ326の選択結果からデクリメンタ(減算器)328を用いて格納番号を1だけ減算することで調整する。
ここで格納番号の選択手法について補足する。格納番号は「Node=i」、「Node=i+1」、「tag_id[l−1]」316のいずれか1つが選択されるが、その選択基準は、例えば「数の大きいものを優先的に選択する」という単純なものでよい。例えば、データ信号「data[l−1]」314と「tag_data[i+1]」384が等しく、且つ駆動信号「shift」362が有効の場合を考える。この場合に、前述の比較漏れを回避するために「Node=i+1」を選択することが重要であるが、この動作は「数の大きいものを優先的に選択する」という手法に合致している。一方、駆動信号「shift」362が無効の場合は、前述の比較漏れを回避する必要がなく、「Node=i+1」を選択する必要はない。しかしながら「Node=i+1」の選択の有無に関わらず、第1パイプライン300の下手ステージである、第2ステージでもう一度アドレス信号「data[l]」334とアドレス信号「tag_data[i+1]」384との比較が再評価される。このため、駆動信号「shift」362が無効の場合の第1ステージの「tag_data[i+1]」384との比較はどちらでもよい。逆に言えば、「数の大きいものを優先的に選択する」という手法で選択しても何ら差し支えがない。このようにして選択された値は、「data[l−1]」314と値が等しい第2パイプライン360のデータ要素の格納番号を示す「tag_id[l−1]」316に設定される。
図3を参照して説明した例はあくまで一例であり、セレクタ326に駆動信号「shift」362を代入して、駆動信号「shift」362が無効の場合に「Node=i+1」を選択しないという制御を行ってもよい。比較回路322と比較回路324との両方の比較結果がともに<偽>であった場合に、入力データ信号「tag_id[l−1]」316を選択している。ここでは、駆動信号「shift」362が有効の場合に、格納場所が「下手」に移動することに対処するため、格納番号を1だけ減算する調整をいずれにしても行う必要がある。このため、「Node=i+1」は選択しないという制御は行わず、「Node=i+1」を選択してから、格納番号を1だけ減算する調整を改めて行っている。
データ処理回路340についても同様である。まず、有効信号「tag_valid[i+1]」382が有効の場合に、アドレス信号「data[l]」334とアドレス信号「tag_data[i+1]」384とを比較回路342で比較する。比較結果が等しい場合に、セレクタ346は、「tag_data[i+1]」384の格納番号である「Node=i+1」を選択する。第2パイプライン360の動作に備え、データ処理回路340は、有効信号「tag_valid[i+2]」372が有効の場合に、データ信号「data[l]」334と「tag_data[i+2]」374とを比較回路344で比較する。そして比較結果が等しい場合に、セレクタ346は「tag_data[i+2]」374の格納番号である「Node=i+2」を優先的に選択する。またセレクタ346は、上記2種類の比較結果がどちらも等しくない場合に、処理結果信号「tag_id[l]」336を選択する。駆動信号「shift」362が有効であり、それにより第2パイプライン360が動作する場合に、「tag_data」の格納番号は1つだけ「下手」である図面の左側に移動する。このため、セレクタ346の選択結果からデクリメンタ(減算器)348を用いて格納番号を1だけ減算する。このように一致検出結果を調整し、簡易な処理により正確で高速なデータ処理を実現することができる。このように、データ処理装置200では、互に逆方向に移動させるデータ要素をパイプラインの各ステージで確実かつ高速に比較することができる。
上述のデータ処理回路320および340の各々は、第1パイプライン300の1つのデータ要素につき、第2パイプライン360の比較対象であるデータ要素との比較回路を持っている。さらに、データ処理回路320および340の各々は、第2パイプライン360が動作することを想定して第2パイプライン360の比較対象であるデータ要素に対して第2パイプライン360の「上手」のデータ要素との比較回路を新たに設けている。これにより、特許文献1の構成で生じる特定ステージ毎にインターロック(内部ストール)が発生するという問題は回避できるので、常にデータ処理を停止することなく、高処理性能を実現することができる。
また、データ処理装置200では、2つのデータ要素が等しい場合の格納場所を算出するために、データ処理回路320および340の各々が、第2パイプライン360が動作することを想定して、処理結果を1だけ減算するためのデクリメンタを備えている。そして、第2パイプラインのデータ要素の格納番号は、第2パイプラインの「下手」から「上手」に向けて「0、1、2、・・・、i、i+1、i+2、・・・、N−1(i、Nは正の数、i<N)」と増加するように予め割り振られている。このように割り振る利点については後述する。また格納番号が逆順に割り振られている場合は、デクリメンタは当然、1だけ加算するためのインクリメンタになる。
再び図2を参照して、データ処理装置200の構成を説明する。データ処理装置200は第1パイプライン300、第2パイプライン360ともに8つのステージを備える。図2のDataSlot[0]〜DataSlot[7]の各々は、図3の第1パイプライン300のノード310、330に対応する。図2のTagSlot[0]〜TagSlot[7]の各々は、図3の第2パイプライン360のノード370、380に対応する。Judge[0]〜Judge[7]の各々は、図3のデータ処理回路320、340に対応する。このように、複数のステージを備えることで、データ処理装置200は多くのデータ要素をパイプライン動作で並列に分散比較することが可能となる。
格納アドレス113はデータ処理装置200の第1パイプライン300のDataSlotにより移動する。データ処理装置200は8個の「tag_data」を同時に記憶でき、この8個の「tag_data」にキャッシュタグ情報が記憶される。データ処理装置200の一例を用いたキャッシュ装置は、8ノードのフルアソシアティブ方式のキャッシュ装置となる。また、第2パイプライン360の「下手」から順に0番から7番までの格納場所が直列に定められており、駆動信号「shift」362が有効(アサート状態)の場合に「下手」にデータ要素が移動するシフト構造を有している。このシフト構造により最も古いキャッシュタグは格納場所0番の「tag_data」に格納されており、最も新しいキャッシュタグは格納場所7番の「tag_data」に格納されている。キャッシュミスが起こる度にキャッシュタグは格納場所7番から格納場所0番の「tag_data」へ順番に移動(シフト)され、やがて第2パイプライン360から掃き出される。キャッシュ判定部120は非常に単純な機構ながら、常に最も古いキャッシュタグやキャッシュデータから順番に捨てられる。これにより、一般的なキャッシュ機構の複雑な置き換え(リプレイス)制御を行う必要はない。
〔キャッシュヒット判定〕
続いて、キャッシュヒット判定の手順を説明する。キャッシュヒット判定とは、格納アドレス113で指定されたデータがキャッシュメモリ190に記憶されているか否かを判定することである。キャッシュメモリ190に記憶されている場合にキャッシュヒットと判定され、キャッシュメモリ190に記憶されていない場合にキャッシュミスと判定される。キャッシュヒット判定はキャッシュ判定装置280で行われる。キャッシュ判定装置280は、キャッシュヒットかどうかを、データ処理装置200から出力される処理結果信号「tag_id」(2の補数表記)の1ビット長の符号ビットを調べることで判定する。データ処理装置200の出力である有効信号「valid」が有効(アサート状態)であり、且つその符号ビットが「1」である場合に、「tag_id」は負の値であり、キャッシュ判定装置280はキャッシュミスであると判定する。また、有効信号「valid」が有効(アサート状態)であり、且つその符号ビットが「0」であるとき、「tag_id」は正の値であり、キャッシュ判定装置280はキャッシュヒットであると判定する。有効信号「valid」が無効(ディアサート状態)である場合に、キャッシュ判定装置280は判定を行わない。また、アクセス調停部130からの「enable」が(ディアサート状態)である場合にも、キャッシュ判定装置280は判定を行わない。
データ処理装置200の出力であるアドレス信号「data」、有効信号「valid」及び識別信号「ID」がキャッシュ判定装置280に「tag_id」と同期して入力される。上記によりキャッシュミスと判定された場合に、このアドレス信号「data」がキャッシュミス時のアドレスである「cache_miss_address」としてキャッシュ判定装置から出力される。キャッシュ判定装置280はキャッシュミスの場合に、駆動信号「shift」362を有効(アサート状態)にし、キャッシュミス時のアドレスである「cache_miss_address」をキャッシュタグ「tag_data」として出力する。キャッシュミスする度に駆動信号「shift」362が有効となり、前述で説明したように処理結果「tag_id」は減算されていく。
始めのうちは処理結果「tag_id」に正の値が保持されていても、キャッシュミスが繰り返されると第2パイプライン360がシフトされ、キャッシュタグ「tag_data」が第2パイプライン360から掃き出されることもある。この掃き出された処理結果「tag_id」の値は、最も古いキャッシュタグの格納番号が0であることから、負の値であることは明らかである。前述のキャッシュ判定で「tag_id」の符号を調べるだけでよいのは、これに由来する。すなわち、最も古いキャッシュタグが0番、最も新しいキャッシュタグがN−1番となるように、格納場所の番号の割り振り方を工夫している。これにより、キャッシュヒット判定は第1パイプライン300の最終ステージのデータ処理結果の符号を判別するだけでよい。したがって、キャッシュ判定は非常に簡単に行われる。また格納番号を第2パイプライン360の「上手」から「下手」に0番からN−1番に割り振った場合は、「tag_id」の値が第2パイプラインの要素数であるNよりも小さいかどうかでキャッシュヒット判定できる。
また前述のように常に最も古いキャッシュデータから順番に捨てる機構のため本実施形態の一例のキャッシュメモリ190はリング式FIFOを用いればよい。この場合、キャッシュ判定部120とキャッシュメモリ190との同期が容易となる。なお、キャッシュ判定がキャッシュヒットの場合は、「tag_id」が指し示す位置のキャッシュメモリに所望のキャッシュデータが格納されていることになる。
以上の処理により、キャッシュ判定部120から、入力された格納アドレス113に基づいた判定結果125として
・アドレスの有効信号「valid」、
・キャッシュミス時のDRAM165のデータ格納先であるアドレス信号「cache_miss_address」、
・処理装置の識別信号である「ID」、
・キャッシュデータの格納先である「tag_id」、
・キャッシュ判定結果である「cache_miss_flag」、
がアクセス調停部130へ出力される。
〔アクセス調停部130〕
続いて、図1を参照してアクセス調停部130の動作を説明する。アクセス調停部130は判定結果125内の有効信号「valid」が有効(アサート状態)である場合に動作し、それ以外の場合は待機する。アクセス調停部130は、判定結果125内のキャッシュ判定結果「cache_miss_flag」の有効(アサート状態)/無効(ディアサート状態)に応じて以下の処理を行う。
・キャッシュ判定結果「cache_miss_flag」が有効の場合に、アクセス調停部130は、送信キュー150、受信キュー170及び待ち合せキュー140のそれぞれの格納領域の空き状態を評価する。そして3つのキューすべてに空き領域がある場合に、アクセス調停部130は、「ID、tag_id、cache_miss_flag」135を待ち合せキュー140にエンキューする。それとともに、アクセス調停部130は、アドレス信号「cache_miss_address」132を送信キュー150にエンキューする。空き領域がない場合に、アクセス調停部130は、駆動信号である「enable」121を無効(ディアサート状態)にしてキャッシュ判定部120を停止(ストール)し、格納領域が空くまで待機する。
・キャッシュ判定結果「cache_miss_flag」が無効の場合に、アクセス調停部130は、待ち合せキュー140の空き状態を評価する。そして空き領域があれば、アクセス調停部130は、「ID、tag_id、cache_miss_flag」135を待ち合せキュー140にエンキューする。空き領域がない場合に、アクセス調停部130は、駆動信号である「enable」121を無効(ディアサート状態)にしてキャッシュ判定部120を停止(ストール)し、格納領域が空くまで待機する。
〔キャッシュメモリ調停部180〕
続いて、キャッシュメモリ調停部180の動作を説明する。キャッシュメモリ調停部180は受信キュー170及び待ち合せキュー140の各々の格納領域にデータがあるかどうかを評価する。キャッシュメモリ調停部180は、待ち合せキュー140から処理すべきキャッシュ判定結果である「ID、tag_id、cache_miss_flag」をデキューする。待ち合せキュー140が空の場合は処理すべきキャッシュ判定結果がないため、キャッシュメモリ調停部180は何もせず待機する。次に、キャッシュメモリ調停部180は、キャッシュ判定結果「cache_miss_flag」が無効(ディアサート状態)か有効(アサート状態)かに応じて、以下の処理を行う。
・キャッシュ判定結果「cache_miss_flag」が無効(ディアサート状態)の場合は、キャッシュヒットであることを意味する。そこで、キャッシュメモリ調停部180は、待ち合せキュー140からデキューしたデータ要素内の「tag_id」と、FIFO方式のキャッシュメモリ190のライトポインタとに基づいてキャッシュメモリ190の格納アドレスを算出する。キャッシュメモリ調停部180は、その格納アドレスをもとにキャッシュされているデータをキャッシュメモリ190から「read_data」192として読み出す。そして、キャッシュメモリ調停部180は、キャッシュデータ「valid、ID、cache_data」185としてI/F116へ送出する。
・キャッシュ判定結果「cache_miss_flag」が有効(アサート状態)の場合は、キャッシュミスであることを意味する。キャッシュメモリ調停部180は、キャッシュメモリ190に記憶されていないデータがDRAM165から受信キュー170へ届いているかどうかを確認する。届いていない場合は、キャッシュメモリ調停部180は届くまで待機する。届いていれば、キャッシュメモリ調停部180は受信キュー170から更新すべきキャッシュデータをデキューする。そして、キャッシュメモリ調停部180は、キャッシュメモリ190のライトポインタの指す格納領域に取り出したデータを「write_data」182として書き込む。それととともに、キャッシュメモリ調停部180は、キャッシュデータ「valid、ID、cache_data」185としてI/F116へ送出する。次に、キャッシュメモリ調停部180はキャッシュメモリ190のライトポインタをインクリメントする。FIFOの容量を越えた場合に、キャッシュメモリ調停部180はライトポインタを0に戻す。
キャッシュ装置110は、上記の過程で得たキャッシュデータを処理装置101〜104の各々に分配する。キャッシュ装置110は、キャッシュデータを分配するためのリングバス115を含む。そして処理装置の各々に対応したI/F116は、このリングバス115で互いに接続されている。処理装置の各々に接続された各I/F116は、キャッシュメモリ調停部180の出力であるキャッシュデータ「valid、ID、cache_data」185を受け取る。そして、各I/F116は、受け取ったキャッシュデータの識別信号「ID」と、接続された処理装置の識別信号が同じであれば、キャッシュデータを処理装置に送出する。各I/F116は、識別信号が同じでなれば、受け取ったキャッシュデータをリングバス115を介して後段に位置する別のI/F116へ送る。
キャッシュ装置110は、キャッシュミス時のペナルティであるリフィル・レイテンシを隠蔽するためにノンブロッキングのキャッシュ機構を採用している。これは、たとえ判定結果125がキャッシュミスであっても、後に必要となる情報「ID、tag_id、cache_miss_flag」135を待ち合せキュー140に退避する。そして、キャッシュ装置110は、キャッシュミスしたデータをDRAM165から読み出してキャッシュメモリ190へ格納する処理が完了する前に、次の画素のキャッシュ判定処理を先行して実行する。このような処理を行うことで、キャッシュ装置110は、キャッシュミスしたデータをDRAM165からキャッシュメモリ190へリフィルしている間にも、続く画素に対するキャッシュ判定を行うことができる。したがって、キャッシュミス時の性能低下を抑制することが可能になる。
キャッシュ装置110は、非常に簡単な機構において、複数の処理装置間で共有可能なフルアソシアティブ方式のキャッシュ装置を実現できる。複数の処理装置間で1つのキャッシュ装置110を共有すると、キャッシュ判定部120には相関性の低いアドレスが連続して入力される。一般的なダイレクトマップ方式のキャッシュ判定部では、アドレスの下位ビットからキャッシュタグを管理するタグメモリの格納先を算出するため、このような相関性の低いアドレスに対しては、容易にキャッシュ競合を引き起こしてしまう。処理装置の数に応じて、セット・アソシアティブ方式のノード数を増やしていくことが、このキャッシュ競合の確率を低減させるための1つの解決策となる。しかしながら、処理装置の数が非常に多くなると非常に多いノード数に対応することとなり、一般的なキャッシュ装置の実装方法では、キャッシュ判定部のセレクタの論理段数が多くてタイミング収束が難しくなり、高い動作周波数で動作させることができない。これに対し、キャッシュ判定部120はパイプライン構成で判定するために、非常に高い動作周波数で動作する。またキャッシュ判定部120は、古いデータから順番に自動削除され、従来技術で必要なキャッシュ競合時の複雑な置き換え(リプレイス)制御は不要である。そのため、キャッシュ判定部120とキャッシュメモリ調停部180との同期も非常に簡単な機構で実現でき、キャッシュメモリもFIFOを使用すればよい。そのためキャッシュ装置110の動作周波数を向上する上で有利となる。何より、キャッシュ装置110はフルアソシアティブ方式であり、アドレスの下位ビットが同一であることが原因でキャッシュ競合を起こすことは無い。
<第1実施形態>
図4を参照して本実施形態に係るキャッシュ装置について説明する。図4は本実施形態に係るキャッシュ判定部400の回路構成の一例を説明する図である。キャッシュ判定部400は図1のキャッシュ装置110のキャッシュ判定部120の代わりに用いられる。上述したキャッシュ装置110の基本構成と同様の部分の説明は繰り返さない。キャッシュ判定部400は複製装置410、演算装置430及びキャッシュ判定装置480を備える。演算装置430は複数のデータ処理装置200_1〜200_Nを備え、データ処理装置200_1〜200_Nのそれぞれは図2で説明したデータ処理装置200と同じ構成を有している。このように、キャッシュ判定部400は上述のデータ処理装置を複数備えることで、同時に比較できるデータ要素の数を増やしている。本実施形態に係るキャッシュ判定部400は基本となるデータ処理装置を複数備えることで設計・検証済みのデータ処理装置を再利用でき、開発効率を向上できるという利点がある。
キャッシュ判定部400に含まれる各DataSlotは図3のノード310、330と同じであり、「enable」121が有効(アサート状態)である場合に、データ要素を用いて、それまでに記憶していたデータ要素を更新する。ノード411にはI/F112からの格納アドレス113が入力される。前述のように、格納アドレス113は有効信号「valid」、アドレス信号「data」及び識別信号「ID」を含む。複製装置410は420で示すようにこの格納アドレス113を複製して、ノード412_1〜ノード412_Nでリタイミングする。ノード412_1〜ノード412_Nはそれぞれ記憶しているデータ要素を対応するデータ処理装置200_1〜200_Nの第1パイプライン300へ出力する。このように、各データ処理装置の第1パイプライン300へは同一の格納アドレス113が複製されて同タイミングで並列に入力される。
演算装置430にはまた、キャッシュ判定装置480のデコーダ452が出力する「cache_miss_flag」444が駆動信号「shift」として入力され、駆動信号「shift」は各データ処理装置200_1〜200_Nに入力される。これにより、すべてのデータ処理装置200_1〜200_Nの第2パイプライン360のデータ要素は同期して移動する。キャッシュ判定装置480が出力する「cache_miss_flag」と「cache_miss_address」は、データ処理装置(1)200_1の第2パイプライン360への「tag_valid」と「tag_data」として入力される。データ処理装置(1)の第2パイプライン360が出力する「tag_valid」と「tag_data」は、データ処理装置(2)200_2の第2パイプライン360に「tag_valid」と「tag_data」として入力される(440_1)。以降も同様(440_2、440_N)である。データ処理装置(i)の第2パイプライン360が出力する「tag_valid」と「tag_data」は、データ処理装置(i+1)の第2パイプライン360に「tag_valid」と「tag_data」として入力される。このように、演算装置430において、あるデータ処理装置の第2パイプラインの出力「tag_valid、tag_data」を次段のデータ処理装置の第2パイプラインの入力に直列に繋がるように逐次的に接続される。
キャッシュ判定装置480には、すべてのデータ処理装置200_1〜200_Nから処理結果「tag_id(1)、tag_id(2)、・・・、tag_id(N)」450が入力される。キャッシュ判定装置480にはさらに、データ処理装置200_1〜200_Nのうち何れか1つの第1パイプライン300から出力された「valid、data」が入力される。デコーダ452は、まず有効信号「valid」453が有効(アサート状態)であり且つ「enable」121が有効であることを確認する。どちらも有効である場合に、キャッシュ判定装置480は、N個の処理結果「tag_id(1)、tag_id(2)、・・・、tag_id(N)」450の各々の符号ビット451をデコーダ452を用いて確認する。デコーダ452は、各々の符号ビット451のうち1つでも「0」があればキャッシュ判定をキャッシュヒットとし、「cache_miss_flag」444として「0」を出力する。デコーダ452は、各々の符号ビット451のすべてが「1」であればキャッシュ判定をキャッシュミスとし、「cache_miss_flag」444として「1」を出力する。キャッシュヒットの場合に、デコーダ452はセレクタ454へ符号ビットのうち「0」であるデータ処理装置の番号456を出力する。セレクタ454は、番号456で示されるデータ処理装置の「tag_id」を処理結果「tag_id(1)、tag_id(2)、・・・、tag_id(N)」450から選択して、「tag_id」458として出力する。ノード460は「enable」121が有効(アサート状態)である場合に、入力されたデータ要素を用いて、それまでに記憶していたデータ要素を更新する。そして、ノード460は自身の記憶しているデータ要素を判定結果125としてアクセス調停部130へ出力する。
以上のように、本実施形態のキャッシュ装置では、各データ処理装置において、同一のアドレス信号「data」が相異なる複数のアドレス信号「tag_valid」と同時に比較される。それにより、さらにノード数が多いフルアソシアティブ方式のキャッシュ装置が容易に実現される。本実施形態のキャッシュ装置は、基本構成のデータ処理装置を複数備え、それぞれのデータ処理装置の第1パイプライン300と第2パイプライン360を接続するだけである。そのため、設計・検証済みのデータ処理装置の再利用が可能となる。それにより、例えばフルアソシアティブ方式のキャッシュ装置のノード数を増減するような開発において開発効率を向上できる。また、キャッシュ判定部400はパイプライン構成でデータ処理を行い、すべての符号ビットの論理積を算出するだけでキャッシュミスを判定できる。これにより、従来のキャッシュ装置に比べて本実施形態のキャッシュ装置は非常に高い動作周波数で動作できる。
〔変形例〕
キャッシュミスの場合には、最も後段に位置するデータ処理装置(N)200_Nの第2パイプライン360の出力として、「tag_data、tag_valid」が掃き捨てられる場合がある。この掃き捨てられたデータ要素はノード460へ出力され、ノード460はこれらのデータ要素を「sweep_address、sweep_address_valid」として判定結果125に含めてアクセス調停部130へ出力してもよい。このデータ要素を用いてライトバック・キャッシュ装置を実現できる。
ライトバッグ・キャッシュ装置では、キャッシュメモリ190に一時記憶されたキャッシュデータが、処理装置A101〜処理装置D104の書き出すライトデータにより置き換わる。このため、キャッシュメモリ190に一時記憶されたデータを最終的には外部メモリであるDRAM165に退避する必要がある。ライトバッグ・キャッシュ装置に対応するため、処理装置A101〜処理装置D104は書き込み動作をできるように、送出する格納アドレス113に、
・書き込みフラグである「write_enable」
・書き込みデータである「write_data」
を含める。書き込みフラグである「write_enable」が有効(アサート状態)である場合に、キャッシュメモリ190の格納先に書き込みデータである「write_data」が書き込まれる。書き込みフラグである「write_enable」が無効(ディアサート状態)である場合は、前述の実施形態で説明したリード・キャッシュ装置の動作が行われる。そして、「write_enable」と「write_data」は、格納アドレス113を構成する他のデータ要素と同期して、キャッシュ判定部400内のそれぞれのデータ処理装置200_1〜200_Nの第1パイプライン300を移動する。データ処理装置(N)200_Nは他のデータ要素と同期して「write_enable」と「write_data」をノード460に出力し、ノード460はこれらのデータを判定結果125に含めてアクセス調停部130へ出力する。すなわち、この変形例の判定結果125には、
・キャッシュミス時のDRAMのデータ格納先であるアドレス信号「cache_miss_address」、
・処理装置の識別信号である「ID」、
・キャッシュデータの格納先である「tag_id」、
・キャッシュ判定結果である「cache_miss_flag」、
・書き込みフラグである「write_enable」、
・書き込みデータである「write_data」、
・掃き捨てられたアドレス信号「sweep_address」、
・掃き捨てられたアドレスの有効信号「sweep_address_valid」、
が含まれる。
判定結果125は待ち合せキュー140を経てキャッシュメモリ調停部180に到達する。キャッシュメモリ調停部180は先程と同様にして「ID、tag_id」を用いてキャッシュメモリ190の格納先を算出する。キャッシュ判定結果である「cache_miss_flag」が無効(ディアサート状態)の場合に、キャッシュヒットしているので、キャッシュメモリ調停部180はキャッシュメモリ190の格納先に書き込みデータである「write_data」を書き込む。一方、キャッシュ判定結果である「cache_miss_flag」が有効(アサート状態)の場合に、キャッシュミスなので、キャッシュメモリ調停部180は直ぐに書き込みデータである「write_data」をキャッシュメモリ190に書き込めない。また、掃き捨てられたアドレスの有効信号「sweep_address_valid」が有効(アサート状態)の場合には、キャッシュメモリ190の格納先に一時記憶されたデータが上書きされてしまう。そこで、キャッシュメモリ調停部180は格納先のキャッシュデータをキャッシュメモリ190から読み出して、DRAM165の掃き捨てられたアドレス信号「sweep_address」が指し示す領域にこのキャッシュデータを退避する。その後、キャッシュメモリ調停部180は外部メモリであるDRAM165のアドレス信号「cache_miss_address」が指し示す領域のデータをキャッシュメモリ190にリフィルする。このとき、キャッシュメモリ調停部180はDRAM165から読み出したデータに書き込みデータである「write_data」を上書きしてキャッシュメモリ190の格納先に一時記憶する。読み出したデータと「write_data」とが同じ大きさ(バイト数)の場合に、キャッシュメモリ調停部180はこのリフィル動作は省略してもよい。また、掃き捨てられるアドレスの有効信号「sweep_address_valid」が無効(ディアサート状態)の場合に、キャッシュメモリ190の格納先には一時記憶された有効なキャッシュデータが存在しない。したがって、キャッシュメモリ調停部180はキャッシュメモリ190の格納先に一時記憶されたキャッシュデータを退避する必要はない。この場合に、キャッシュメモリ調停部180は必要であれば前述のリフィル動作を行いつつ、「write_data」をキャッシュデータとしてキャッシュメモリ190の格納先へ一時記憶すればよい。
以上の変形例ではライトバッグ・キャッシュ装置を容易に実現することができる。キャッシュ装置のキャッシュ判定部400は、ライトバック・キャッシュの場合もリードキャッシュと同様の利点を有する。特に、古いデータから順番に自動削除され、キャッシュ競合時の複雑な置き換え(リプレイス)制御を行う必要はない。そして、その古いデータから順番にキャッシュメモリに一時記憶されたキャッシュデータを、外部メモリであるDRAM165に順番に退避するだけでよい。このように、ライトバック・キャッシュ装置特有のライトバッグ制御も非常に単純な方法で実現される。
<第2実施形態>
図5を参照して本実施形態に係るキャッシュ装置について説明する。図5は本実施形態に係るキャッシュ判定部500の回路構成の一例を説明する図である。キャッシュ判定部500は図1のキャッシュ装置110のキャッシュ判定部120の代わりに用いられる。上述したキャッシュ装置110の基本構成と同様の部分の説明は繰り返さない。また、第1実施形態で説明した変形例は本実施形態に対しても適用可能である。
キャッシュ判定部500は複製装置510、演算装置530及びキャッシュ判定装置580を備える。演算装置530は複数のデータ処理装置200_1〜200_Nを備え、データ処理装置200_1〜200_Nのそれぞれは図2で説明したデータ処理装置200と同じ構成を有している。このように、第1実施形態で説明したキャッシュ判定部400と同様に、キャッシュ判定部500は上述のデータ処理装置を複数備えることで、同時に比較できるデータ要素の数を増やしている。さらに、キャッシュ判定部500は、複数の処理装置A101〜処理装置D104でキャッシュ装置110を共有する場合に、各処理装置が専有するキャッシュ容量(ノード数)を処理装置ごとに切り替えられる。このように処理装置ごとの専有割り当てを切り替えることで、優先度の高い画像処理に多くのキャッシュ容量(ノード数)を割り当てることができる。すなわち画像処理を実施する際に、画像処理の目的に応じて適応的にキャッシュ容量(ノード数)の専有割り当てを切り替え、所望の効率で画像処理が実行される。
本実施形態の複製装置510は、パーティション情報テーブル515を備える点で第1実施形態の複製装置410と異なる。従って、複製装置410との共通部分の説明は省略し、以下にパーティション情報テーブル515について説明する。パーティション情報テーブル515には、処理装置ごとに専有するキャッシュ容量(ノード数)の割り当てを切り替えるために、CPU160により、予めパーティション情報が設定されている。パーティション情報とは各処理装置が専有するデータ処理装置200_1〜200_Nの割り当て(グループ分け)を表す情報である。図7と図8を参照してパーティション情報テーブル515について詳細に説明する。パーティション情報テーブル515は、図7に示すフォーマット700のように、処理装置の識別信号ID702ごとにパーティション情報704を設定できるテーブルである。処理装置がM個であり、演算装置530内のデータ処理装置200がN個である場合に、識別信号ID702が1〜Mの各々に対して、Nビットのパーティション情報704を格納する。Nビットのパーティション情報704は、上位から1ビットずつ、指し示すデータ処理装置200について使用するか否かを表すフラグになっており、「1」の場合は指し示すデータ処理装置の<使用>を表し、「0」の場合は<不使用>を表す。
続いて、図8を用いてパーティション情報テーブル515の具体例800を説明する。具体例800では、4つの識別信号ID702の1〜4の各々に対して、8ビットのパーティション情報704が格納されている。この4つの識別信号ID702は、図1の4つの処理装置A101〜処理装置D104に各々関連付けられている。そして、8ビットのパーティション情報704の各1ビットは、上位ビットから順に、図5のデータ処理装置(1)200_1からデータ処理装置(N)200_Nに関連付けられている。例えば、処理装置A101のパーティション情報は“10000000”であり、処理装置A101はデータ処理装置(1)を使用する(820)が、残りのデータ処理装置(2)〜(8)を使用しない設定となる。また、処理装置B102のパーティション情報は“01110000”であり、処理装置B102はデータ処理装置(2)〜(4)を使用する(822)が、残りのデータ処理装置(1)とデータ処理装置(5)〜(8)を使用しない設定となる。同様に、処理装置C103はデータ処理装置(5)と(7)を使用し、残りを使用しない設定となる。処理装置D104はデータ処理装置(6)〜(8)を使用し、残りを使用しない設定となる。この具体例800では、処理装置A101はデータ処理装置(1)を、処理装置B102はデータ処理装置(2)〜(4)を、処理装置C103はデータ処理装置(5)と(7)を、処理装置D104はデータ処理装置(6)と(8)を専有することになる。パーティション情報704の設定は、複数の処理装置間で排他であればよく、処理装置C103や処理装置D104のようにデータ処理装置が不連続に割り当てられていてもよい(824)。
図5に戻り、複製装置510は、入力された識別信号「ID」を用いてパーティション情報テーブル515から、この識別信号「ID」に対応するパーティション情報「partition」518を読み出してノード511に入力する。そして、ノード511は、第1実施形態と同様に、入力有効信号「valid」と入力データ信号「data、ID、partition」を複製してノード512_1〜512_Nへ出力する。ノード512_1〜512_Nはそれぞれ、対応するデータ処理装置200_1〜200_Nの第1パイプライン300へ自身が記憶しているデータ要素を出力する。このように、複製装置510はデータ要素をデータ処理装置200の数だけ複製してリタイミングする。
〔第2パイプライン360の接続切り替え〕
本実施形態の演算装置530において、各データ処理装置の第2パイプライン360は破線部540のように接続される。この第2パイプライン360の接続は、データ処理装置(N)200_Nから出力されるパーティション情報「partition」535に応じて自動的に切り替わる。演算装置530は、デコーダ552が出力する「cache_miss_flag」544と、データ処理装置(N)が出力するパーティション情報「partition」535のデータ処理装置(1)〜(N)に対応する各1ビットとの論理積を各々算出する。そして、演算装置530は、算出した論理積を、対応するデータ処理装置の駆動信号「shift」として入力する(544_1、544_2、・・・、544_N)。これにより、すべてのデータ処理装置のうちで、パーティション情報で<使用>に設定されたデータ処理装置に対してのみ、第2パイプライン360のデータ要素が同期して移動することになる。
次に演算装置530は、第2パイプライン360の接続切り替えのために必要なデータ要素を取りまとめる。各データ処理装置(1)〜(N)の第2パイプライン360の出力のデータ要素(532_1〜532_N)と「cache_miss_flag」544、「cache_miss_address(data)」555とがバス542に束ねられる。そして各データ処理装置(1)〜(N)の第2パイプライン360への入力を選択するためのセレクタ545_1、545_2、・・・、545_Nにバス542からデータが入力される。セレクタ545_1、545_2、・・・、545_Nは、パーティション情報「partition」535をもとに対応するデータ要素を選択して、各データ処理装置(1)〜(N)の第2パイプライン360に入力する。また、キャッシュミスの際に掃き捨てられたデータ要素を出力するためのセレクタ548を備えてもよい。パーティション情報「partition」535をもとにバス542から掃き捨てられたデータ要素を選択して「sweep_address、sweep_address_valid」として出力する。上述のように、このデータ要素はライトバック・キャッシュ装置としてキャッシュ装置110が用いられる場合に使用される。
例えば、具体例800の第2パイプラインへの入力選択方法は、以下のようになる。データ処理装置(N)の第1パイプライン300から出力された識別番号「ID」が「1」の場合に、具体例800から、パーティション情報の設定は“10000000”であることがわかる。「ID」が「1」のデータ要素に関するキャッシュ判定結果がキャッシュミスであった場合に、データ処理装置(1)の第2パイプライン360がシフトされる。そこで、データ処理装置(1)の第2パイプラインの入力は、バス542のデータから「cache_miss_flag544、cache_miss_address(data)555」が選択される。また、掃き捨てられたデータ要素である「sweep_address、sweep_address_valid」として、データ処理装置(1)の第2パイプライン360からの出力532_1が選択される。また、データ処理装置(N)の第1パイプライン300から出力された識別番号「ID」が「2」の場合に、具体例800から、パーティション情報の設定は“01110000”でことがわかる。「ID」が「2」のデータ要素に関するキャッシュ判定結果がキャッシュミスであった場合に、データ処理装置(2)〜(4)の第2パイプラインがシフトされる。そこで、データ処理装置(2)の第2パイプライン360への入力は、バス542のデータから「cache_miss_flag544、cache_miss_address(data)555」が選択される。データ処理装置(3)の第2パイプラインへの入力は、データ処理装置(2)の第2パイプラインからの出力532_2が選択される。データ処理装置(4)の第2パイプラインへの入力は、データ処理装置(3)の第2パイプラインからの出力が選択される。また、掃き捨てられたデータ要素である「sweep_address、sweep_address_valid」として、データ処理装置(4)の第2パイプラインからの出力が選択される。また、「ID」が「3」や「4」のデータ要素に関する第2パイプラインの接続の切り替えも同様である。パーティション情報の設定が具体例800の824のように不連続であっても、データ処理装置の装置番号の小さい方から順に接続する。つまり、パーティション情報「partition」535の設定に応じて使用するデータ処理装置間の第2パイプラインからの出力を、次に使用するデータ処理装置の第2パイプラインへの入力に直列に繋げばよい。
キャッシュ判定装置580には、すべてのデータ処理装置200_1〜200_Nの処理結果「tag_id(1)、tag_id(2)、・・・、tag_id(N)」550が入力される。また、キャッシュ判定装置580には、データ処理装置200_1〜200_Nのうち何れか1つから「valid、data、ID、partition」が入力される。図5ではデータ処理装置(N)200_Nから入力されているが、他のデータ処理装置から入力されてもよい。デコーダ552は、第1実施形態のデコーダ452と異なり、パーティション情報「partition」535が入力される。図6を参照してデコーダ552を詳細に説明する。デコーダ552は、以下の4つの信号(それぞれ1ビット)の論理積を算出する。
・有効信号「valid」553、
・データ処理装置(1)から(N)の処理結果「tag_id」の符号ビットを反転した信号(符号ビット551の何れか1ビットの反転)、
・パーティション情報「partition」535のデータ処理装置(1)から(N)に対応する1ビット信号、
・駆動信号「enable」121。
そして、デコーダ552は、各論理積のうち1つでも「1」であれば、キャッシュ判定結果をキャッシュヒットとし、すべて「0」であればキャッシュ判定結果をキャッシュミスとする。すべて「0」の場合に、デコーダ552は「cache_miss_flag」544を有効(アサート状態)として出力する。そしてデコーダ552は、キャッシュヒットの場合に各論理積のうち、「1」となっているデータ処理装置の装置番号(1からNの何れか)556をセレクタ554へ出力する。キャッシュ判定装置580はキャッシュヒット時の装置番号556をもとに複数の処理結果「tag_id(1)〜tag_id(N)」550からキャッシュヒット時の「tag_id」558をセレクタ554を用いて選択し、ノード560へ出力する。
続いて、本実施形態のキャッシュ装置のキャッシュメモリ調停部180の動作とキャッシュメモリ900の構成とを説明する。図9を参照して本実施形態に係るキャッシュメモリ900について説明する。キャッシュメモリ900は図1のキャッシュメモリ190の代わりに用いられる。キャッシュメモリ900もFIFOで構成される。キャッシュメモリ900はデータ処理装置(1)〜(N)に対応する領域に分割される。そしてパーティション情報の設定に応じて、IDの各々についてFIFOの基準となるベースポインタと領域のライン数が定まる。具体例800の824のように領域が不連続な場合であっても、前述の第2パイプラインの接続切り替え器の機能により、使用する領域は連続して確保される。これは、901に示すのようにデータ処理装置(6)と(7)は入れ替えてキャッシュメモリ900に確保されることを意味する。そして、これにより、「ID」が「3」と「4」の場合でも、「ID」が「1」と「2」の場合と同様の簡単なFIFO制御でキャッシュメモリ900へのデータアクセスが実現できる。キャッシュメモリ調停部180は、取り出した「ID」に応じた前述のベースポインタとライン数とIDごとのライトポインタを取得する。キャッシュヒットしている場合に、キャッシュメモリ調停部180は、同時に取り出した「tag_id」とキャッシュメモリ900のベースポインタとライトポインタからアドレスを算出する。そして、キャッシュメモリ調停部180は、キャッシュメモリ900のベースポインタとライトポインタの合計値の指す格納領域に取り出したキャッシュデータを「write_data」182として書き込む。
以上のように、本実施形態に係るキャッシュ判定部500はパイプライン構成でデータ処理する。そして、データ処理装置の各々に対応する出力の符号ビットの反転とパーティション情報の高々1ビットの論理積を算出するだけでキャッシュヒットを判定できる。これにより、従来のキャッシュ装置に比べて、非常に高い動作周波数で動作できる。また、本実施形態でも古いデータから順番に自動で削除されるため、キャッシュ競合時の複雑な置き換え(リプレイス)制御を行う必要がない。そして、キャッシュメモリも予め定められた領域ごとにリング式でFIFO動作するだけである。キャッシュメモリ900を実現するためには、ライトポインタを複数備えたマルチバンクのFIFOを用いるだけでよい。キャッシュメモリ900は複数のFIFOを用いても実現できる。本実施形態では、パーティション情報をテーブル化して、処理装置ごとに切り替える例を説明した。しかしながら、処理装置の処理内容(動作状況)ごとに、各処理装置がパーティション情報を指定しても実現できる。
〔変形例〕
本実施形態では、図5に記載された複数のデータ処理装置(1)〜(N)の第1パイプライン300と第2パイプライン360の各ノードは1系統のクロック信号(不図示)により動作している。しかしながら、複数のデータ処理装置(1)〜(N)の各々に、同相ではあるが、異なる系統のクロック信号を入力してデータ処理装置(1)〜(N)の各々を動作させてもよい。そして消費電力の削減を優先する場合においては、データ処理装置(1)から(N)の何れかのクロック信号を停止し、そのデータ処理装置を停止させる。例えば、前述の具体例800において、処理装置A101のみを動作させ、処理装置B102から処理装置D104を停止する場合に、パーティション情報テーブル515の「ID」が「2」から「4」のパーティション情報に“00000000”を設定する。そして、データ処理装置(1)以外の他のデータ処理装置を停止させる。また、消費電力の削減を優先しつつ、低速ながらも処理装置A101から処理装置D104を動作させるためには、「ID」が「1」〜「4」のパーティション情報に“10000000”を設定する。これにより、データ処理装置(1)は、処理装置A101〜処理装置D104のすべてで共有される。そして、他のデータ処理装置は使用されていないので、これを停止させることができる。また、キャッシュメモリ900を、データ処理装置(1)〜(N)の領域ごとに異なるSRAMで実現する。そして、上述のデータ処理装置の停止に合せて、不使用のSRAMのクロック信号(または電源)の供給を止める。これにより、さらなる消費電力の削減が可能となる。
図10は本実施形態の別の変形例を説明する図である。、M個の処理装置(1)〜(M)と、N個のデータ処理装置(1)〜(N)との接続の一例であり、これまで説明したリングバスを介した接続ではなく、クロスバースイッチ1020、1060を介した接続となっている。複数の処理装置がデータ処理装置の各々を排他的に使用するために、データ処理装置の前後にパーティション情報「partition」によって切り替わるクロスバースイッチ1020、1060が挿入されている。この構成では、複数の処理装置が複数のデータ処理装置を並行して使用できる。このような処理の並列化により、複数の処理装置の高速化を実現できる。
<他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (14)

  1. 複数の第1ノードを有し、各第1ノードの保持する第1データを第1方向に位置する隣のノードへ移動させる第1パイプラインと、
    前記第1パイプラインの第1ノードの各々に対応している複数の第2ノードを有し、各第2ノードの保持する第2データを前記第1方向と逆の第2方向に位置する隣のノードへ移動させる第2パイプラインと、
    前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードに保持されている第2データと、を比較する比較手段と、
    を有するデータ処理装置を複数備える演算装置であって
    記演算装置は、
    外部装置から第1データと第2データとを取得する取得手段と、
    前記取得した第1データを複製したデータと前記取得した第1データとを前記複数のデータ処理装置のそれぞれの第1パイプラインへ入力し、前記取得した第2データを前記複数のデータ処理装置のうちの1つの第2パイプラインへ入力して、前記複数のデータ処理装置の第2パイプラインを一続きに移動させる入力手段と、
    前記複数のデータ処理装置のそれぞれにおける、前記第1パイプラインから掃き出された第1データと、前記第2パイプラインの前記複数の第2ノードのそれぞれに保持された第2データとの比較結果をデコードすることによって、前記複数のデータ処理装置の少なくとも1つにおいて前記掃き出された第1データと一致する第2データが存在したかを判定する判定手段と、
    を更に備え、
    前記データ処理装置の第2パイプラインは、前記判定手段において前記掃き出された第1データと一致する第2データが存在しないと判定された場合、各第2ノードの保持する第2データを前記第2方向に位置する隣のノードへ移動させ、あるデータ処理装置の第2パイプラインから掃き出された第2データが別のデータ処理装置の第2パイプラインに前記第2方向に入力されるように一続きに構成され、
    前記複数のデータ処理装置の前記比較手段において、少なくとも2つの同一の前記取得した第1データは、前記複数のデータ処理装置の第2パイプラインに保持されている互いに異なる第2データに対して比較されることを特徴とする演算装置。
  2. 前記複数のデータ処理装置は複数のグループにグループ分けされており、
    記入力手段は、前記グループごとに、前記グループのうちの1つのデータ処理装置の第2パイプラインへ前記第2データを入力し、
    前記グループごとに、前記複数のデータ処理装置の第2パイプラインが直列に接続されることを特徴とする請求項1に記載の演算装置。
  3. 前記グループ分けを動的に変更する手段をさらに備えることを特徴とする請求項2に記載の演算装置。
  4. 前記複数の第1ノードのうちのある第1ノードに保持された第1データ及び前記複数の第2ノードのうちのある第2ノードに保持された第2データを用いた比較の結果と、別の第1ノードに保持された第1データ及び別の第2ノードに保持された第2データを用いた比較の結果とをデコードするデコード手段を更に備えることを特徴とする請求項1乃至3の何れか1項に記載の演算装置。
  5. 前記複製した第1データ及び前記取得した第1データは、前記入力手段によって異なるタイミングに入力された2つ以上の第2データに対して前記比較手段によって同時に比較されることを特徴とする請求項1乃至4の何れか1項に記載の演算装置。
  6. 複数の第1ノードを有し、各第1ノードの保持するアドレスを当該第1ノードに対して第1方向にある第1ノードへ移動させる第1パイプラインと、
    前記第1パイプラインの第1ノードの各々に対応している複数の第2ノードを有し、各第2ノードの保持するキャッシュタグを当該第2ノードに対して前記第1方向と逆の第2方向にある第2ノードへ移動させる第2パイプラインと、
    前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されているアドレスと、当該着目ノードに対応する第2ノードに保持されているキャッシュタグと、を比較して一致するか否かを判定する比較手段と、
    を有するデータ処理装置を複数備えるキャッシュ装置であって
    記キャッシュ装置は、
    外部記憶装置に格納されているデータの一部を記憶するキャッシュメモリと、
    処理装置からデータの要求を取得する取得手段と、
    前記取得したデータのアドレスを複製したアドレスと前記取得したデータのアドレスとを前記複数のデータ処理装置のそれぞれの第1パイプラインへ入力し、前記キャッシュメモリに記憶されるデータのキャッシュタグを前記複数のデータ処理装置のうちの1つの第2パイプラインへ入力して、前記複数のデータ処理装置の第2パイプラインを一続きに移動させる入力手段と、
    前記複数のデータ処理装置のそれぞれにおける、前記第1パイプラインから掃き出されたアドレスと、前記第2パイプラインの前記複数の第2ノードのそれぞれに保持されたキャッシュタグとの比較結果をデコードすることによって、前記取得したデータがキャッシュヒットするかを判定する判定手段と
    を更に備え、
    前記データ処理装置の第2パイプラインは、前記判定手段においてキャッシュヒットしないと判定された場合、各第2ノードの保持するキャッシュタグを前記第2方向に位置する隣のノードへ移動させ、あるデータ処理装置の第2パイプラインから掃き出されたキャッシュタグが別のデータ処理装置の第2パイプラインに前記第2方向に入力されるように一続きに構成され、
    前記複数のデータ処理装置の前記比較手段において、少なくとも2つの同一の前記取得したデータのアドレスは、前記複数のデータ処理装置の第2パイプラインに保持されている互いに異なるキャッシュタグに対して比較されることを特徴とするキャッシュ装置。
  7. 前記複数のデータ処理装置は複数のグループにグループ分けされており、
    記入力手段は、前記グループごとに、前記グループのうちの1つのデータ処理装置の第2パイプラインへ前記キャッシュタグを入力し、
    前記複数のデータ処理装置の第2パイプラインは、前記グループごとに直列に接続されることを特徴とする請求項6に記載のキャッシュ装置。
  8. 前記グループ分けを動的に変更する手段をさらに備えることを特徴とする請求項7に記載のキャッシュ装置。
  9. 前記キャッシュメモリは前記複数のデータ処理装置のそれぞれに対応するように分割されており、
    前記複数のグループのいずれにも含まれないデータ処理装置に対応する前記キャッシュメモリの部分は停止される
    ことを特徴とする請求項7又は8に記載のキャッシュ装置。
  10. 駆動信号が有効である場合に、前記第1パイプラインは複数の第1ノードの保持するそれぞれのデータを前記第1方向へ移動させ、
    前記駆動信号が有効であり、且つ前記判定手段がキャッシュヒットしないと判定した場合に、前記第2パイプラインは複数の第2ノードの保持するそれぞれの第2データを前記第2方向へ移動させる
    ことを特徴とする請求項6乃至9のいずれか1項に記載のキャッシュ装置。
  11. 記入力手段は、前記判定手段がキャッシュヒットしないと判定した場合に、前記第1パイプラインから出力されたアドレスをキャッシュタグとして前記第2パイプラインへ入力することを特徴とする請求項6乃至10のいずれか1項に記載のキャッシュ装置。
  12. 前記処理装置からのデータの要求は前記外部記憶装置へのデータの書き込み要求であり、
    前記キャッシュ装置は、前記第2パイプラインから出力されるキャッシュタグを用いて前記書き込みが要求されたデータを前記キャッシュメモリに書き込む手段をさらに備えることを特徴とする請求項6乃至11のいずれか1項に記載のキャッシュ装置。
  13. 複数の第1ノードを有し、各第1ノードの保持するアドレスを当該第1ノードに対して第1方向にある第1ノードへ移動させる第1パイプラインと、
    前記第1パイプラインの第1ノードの各々に対応している複数の第2ノードを有し、各第2ノードの保持するキャッシュタグを当該第2ノードに対して前記第1方向と逆の第2方向にある第2ノードへ移動させる第2パイプラインと、
    前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されているアドレスと、当該着目ノードに対応する第2ノードに保持されているキャッシュタグと、を比較して一致するか否かを判定する比較手段と、
    を有するデータ処理装置を複数備えるキャッシュ装置の制御方法であって
    記制御方法は、
    外部記憶装置に格納されているデータの一部をキャッシュメモリに記憶する工程と、
    取得手段が、処理装置からデータの要求を取得する取得工程と、
    入力手段が、前記取得したデータのアドレスを複製したアドレスと前記取得したデータのアドレスとを前記複数のデータ処理装置のそれぞれの第1パイプラインへ入力し、前記キャッシュメモリに記憶されるデータのキャッシュタグを前記複数のデータ処理装置のうちの1つの第2パイプラインへ入力して、前記複数のデータ処理装置の第2パイプラインを一続きに移動させる入力工程と、
    判定手段が、前記複数のデータ処理装置のそれぞれにおける、前記第1パイプラインから掃き出されたアドレスと、前記第2パイプラインの前記複数の第2ノードのそれぞれに保持されたキャッシュタグとの比較結果をデコードすることによって、前記取得したデータがキャッシュヒットするかを判定する判定工程と
    を有し、
    前記データ処理装置の第2パイプラインは、前記判定工程においてキャッシュヒットしないと判定された場合、各第2ノードの保持するキャッシュタグを前記第2方向に位置する隣のノードへ移動させ、あるデータ処理装置の第2パイプラインから掃き出されたキャッシュタグが別のデータ処理装置の第2パイプラインに前記第2方向に入力されるように一続きに構成され、
    前記複数のデータ処理装置の前記比較手段において、少なくとも2つの同一の前記取得したデータのアドレスは、前記複数のデータ処理装置の第2パイプラインに保持されている互いに異なるキャッシュタグに対して比較されることを特徴とする制御方法。
  14. コンピュータを請求項6乃至12のいずれか1項に記載のキャッシュ装置の各手段として機能させるためのコンピュータプログラム。
JP2010130447A 2010-06-07 2010-06-07 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム Active JP5650441B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2010130447A JP5650441B2 (ja) 2010-06-07 2010-06-07 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
EP11164892.9A EP2393004B1 (en) 2010-06-07 2011-05-05 Cache apparatus and control method thereof
EP11195127.3A EP2437159B1 (en) 2010-06-07 2011-05-05 Apparatus for data comparison and control method thereof
US13/105,062 US8812783B2 (en) 2010-06-07 2011-05-11 Operation apparatus, cache apparatus, and control method thereof
CN201110145879.5A CN102331922B (zh) 2010-06-07 2011-06-01 运算装置、高速缓存装置及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010130447A JP5650441B2 (ja) 2010-06-07 2010-06-07 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム

Publications (3)

Publication Number Publication Date
JP2011257880A JP2011257880A (ja) 2011-12-22
JP2011257880A5 JP2011257880A5 (ja) 2013-07-25
JP5650441B2 true JP5650441B2 (ja) 2015-01-07

Family

ID=44352182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010130447A Active JP5650441B2 (ja) 2010-06-07 2010-06-07 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム

Country Status (4)

Country Link
US (1) US8812783B2 (ja)
EP (2) EP2393004B1 (ja)
JP (1) JP5650441B2 (ja)
CN (1) CN102331922B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862702B2 (en) * 2012-07-18 2014-10-14 Accedian Networks Inc. Systems and methods of installing and operating devices without explicit network addresses
JP2015013429A (ja) * 2013-07-05 2015-01-22 キヤノン株式会社 画像処理装置及びその制御方法、並びにプログラム
CN107016008B (zh) * 2016-06-06 2020-06-09 阿里巴巴集团控股有限公司 信息处理方法和装置及动态信息的显示方法和装置
JP7278067B2 (ja) 2018-12-20 2023-05-19 キヤノン株式会社 データ処理装置及びその制御方法及びプログラム
CN113672286B (zh) * 2021-07-30 2024-10-01 奇点微(上海)光电科技有限公司 一种流水线求值器、移动轨迹分析处理装置、方法及设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163142A (en) * 1988-10-28 1992-11-10 Hewlett-Packard Company Efficient cache write technique through deferred tag modification
JPH04178755A (ja) * 1990-11-13 1992-06-25 Toshiba Corp データ統合装置
US5353424A (en) * 1991-11-19 1994-10-04 Digital Equipment Corporation Fast tag compare and bank select in set associative cache
US5386527A (en) * 1991-12-27 1995-01-31 Texas Instruments Incorporated Method and system for high-speed virtual-to-physical address translation and cache tag matching
JPH05324468A (ja) * 1992-05-21 1993-12-07 Fujitsu Ltd 階層化キャッシュメモリ
DE69430352T2 (de) * 1993-10-21 2003-01-30 Sun Microsystems Inc., Mountain View Gegenflusspipeline
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
US5710905A (en) * 1995-12-21 1998-01-20 Cypress Semiconductor Corp. Cache controller for a non-symetric cache system
US5905680A (en) * 1996-04-30 1999-05-18 Texas Instruments Incorporated Self-timed comparison circuits and systems
JPH10190744A (ja) * 1996-12-26 1998-07-21 Toshiba Corp 情報記憶装置
US5748539A (en) * 1997-03-05 1998-05-05 Sun Microsystems, Inc. Recursive multi-channel interface
JP3623082B2 (ja) * 1997-09-26 2005-02-23 日本電信電話株式会社 連想メモリモジュール
US6825848B1 (en) * 1999-09-17 2004-11-30 S3 Graphics Co., Ltd. Synchronized two-level graphics processing cache
US6862670B2 (en) 2001-10-23 2005-03-01 Ip-First, Llc Tagged address stack and microprocessor using same
US6754772B2 (en) * 2001-11-15 2004-06-22 Micron Technology, Inc. Distributed cache
CN1879092B (zh) * 2003-11-12 2010-05-12 松下电器产业株式会社 高速缓冲存储器及其控制方法
US7689772B2 (en) * 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
US7546405B2 (en) * 2006-09-26 2009-06-09 Sony Computer Entertainment Inc. Methods and apparatus for dynamic grouping of requestors of resources in a multi-processor system
US7991960B2 (en) * 2006-10-11 2011-08-02 Arm Limited Adaptive comparison control in a data store
JP4595029B2 (ja) * 2007-06-20 2010-12-08 富士通株式会社 キャッシュメモリ装置、演算処理装置及びその制御方法
US7913007B2 (en) * 2007-09-27 2011-03-22 The University Of North Carolina Systems, methods, and computer readable media for preemption in asynchronous systems using anti-tokens
JP2010102623A (ja) * 2008-10-27 2010-05-06 Nec Electronics Corp キャッシュメモリ及びその制御方法
US8271728B2 (en) * 2008-11-13 2012-09-18 International Business Machines Corporation Spiral cache power management, adaptive sizing and interface operations
US8539185B2 (en) * 2008-11-13 2013-09-17 International Business Machines Corporation Systolic networks for a spiral cache
US8051337B2 (en) * 2009-01-22 2011-11-01 Taiwan Semiconductor Manufacturing Company, Ltd. System and method for fast cache-hit detection
US8452944B2 (en) * 2009-05-22 2013-05-28 Canon Kabushiki Kaisha Information processing apparatus and information processing method
JP5627330B2 (ja) * 2010-08-02 2014-11-19 キヤノン株式会社 情報処理装置、キャッシュ装置およびデータ処理方法

Also Published As

Publication number Publication date
EP2393004B1 (en) 2018-10-31
EP2437159A1 (en) 2012-04-04
US20110302373A1 (en) 2011-12-08
EP2393004A1 (en) 2011-12-07
US8812783B2 (en) 2014-08-19
CN102331922B (zh) 2015-07-15
JP2011257880A (ja) 2011-12-22
CN102331922A (zh) 2012-01-25
EP2437159B1 (en) 2018-10-31

Similar Documents

Publication Publication Date Title
US10210117B2 (en) Computing architecture with peripherals
US9755994B2 (en) Mechanism for tracking age of common resource requests within a resource management subsystem
US20190129849A1 (en) Cache self-clean engine
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
JP5118199B2 (ja) マルチスレッドおよびマルチコア・システムのためのキャッシュ、および、その方法
US9836325B2 (en) Resource management subsystem that maintains fairness and order
JP5650441B2 (ja) 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
US10095548B2 (en) Mechanism for waking common resource requests within a resource management subsystem
JP5730126B2 (ja) データ供給装置、キャッシュ装置、データ供給方法、キャッシュ方法およびプログラム
US6877056B2 (en) System with arbitration scheme supporting virtual address networks and having split ownership and access right coherence mechanism
JP5627330B2 (ja) 情報処理装置、キャッシュ装置およびデータ処理方法
JP2004252985A (ja) メモリ要求の動的並べ替え
US8452944B2 (en) Information processing apparatus and information processing method
CN113791892B (zh) 数据通路仲裁方法、数据通路仲裁装置及芯片
JP3876033B2 (ja) 順不同に命令を実行するコンピュータのためのシステム
EP1936514B1 (en) Apparatus and method for controlling issue of requests to another operation processing device
JP5428653B2 (ja) メモリアクセス処理装置及び方法
CN118467418A (zh) 一种存储访问系统以及存储访问调度方法
JPH0749809A (ja) キャッシュメモリ制御装置
NZ716954B2 (en) Computing architecture with peripherals

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130607

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140521

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140917

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141113

R151 Written notification of patent or utility model registration

Ref document number: 5650441

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151