JP5580660B2 - 情報処理装置、回路、情報処理方法、及びプログラム - Google Patents

情報処理装置、回路、情報処理方法、及びプログラム Download PDF

Info

Publication number
JP5580660B2
JP5580660B2 JP2010116699A JP2010116699A JP5580660B2 JP 5580660 B2 JP5580660 B2 JP 5580660B2 JP 2010116699 A JP2010116699 A JP 2010116699A JP 2010116699 A JP2010116699 A JP 2010116699A JP 5580660 B2 JP5580660 B2 JP 5580660B2
Authority
JP
Japan
Prior art keywords
data
pipeline
node
information processing
cache
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
JP2010116699A
Other languages
English (en)
Other versions
JP2011008773A (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 JP2010116699A priority Critical patent/JP5580660B2/ja
Publication of JP2011008773A publication Critical patent/JP2011008773A/ja
Application granted granted Critical
Publication of JP5580660B2 publication Critical patent/JP5580660B2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、相互接続されたノードを含む2方向パイプラインで相互に逆方向に移動するデータ要素を処理/管理する技術に関する。
複数のノードを有する2つのデータ・ストリームにおいて、2つのデータ・ストリーム間でそれぞれのデータ・ストリームの各ノードで保持するデータ要素を比較する処理を実行するための回路やアプリケーションがある。例えば、複数のデータを有する第1のデータ・ストリームの要素について、第2のデータ・ストリームの要素の少なくとも1つと一致するかどうかを判定する際に総当りで比較する処理を実行する。このような処理では、一方の方向にデータ要素を移動させる第1のデータ・ストリームの有するデータ要素と、他の方向にデータ要素を移動(もしくは停止)させる第2のデータ・ストリームの有するデータ要素を比較する。しかしながら後述するように、相互に逆の方向にデータ要素を移動させる場合、各ノードにおけるデータ要素の比較が正しく行われないことがある。
特許文献1には、相互に逆の方向にデータ要素を移動させるパイプライン(データストリーム)において、パイプラインの各ステージで夫々のデータ要素を比較する2方向パイプライン技術(カウンターフロー・パイプライン技術)が記載されている。この技術は、規則正しい経路に沿った逆方向への不規則なデータ・フローを提供して、2つのデータ・セットを対称的に扱い、簡単で規則正しい構造を形成している。その結果、一般的なRISC(Reduced Instruction Set Computer)プロセッサ特有の複雑なバイパス回路を不要にしている。この技術では、前述のバイパス回路を介して直接通信せずに、パイプライン中の各ステージはそのステージの前後のステージとだけ通信し、データ要素は使用される前にいくつかのステージを通過する。このため、データ送信の遅延を最小限に抑えるという特徴を有している。
また、一般的な同期パイプラインは、ステージ間のハンドシェーク・プロトコルによって動作する。そのようなハンドシェーク・プロトコルでは、受信側が新しいデータ要素を収容するための空間があることを送信側に示し、データ要素が利用可能な場合、送信側はそのデータ要素を取得するべきであることを受信側に示してからデータ要素を送信する。したがって、このような一般的な同期パイプラインのハンドシェーク・プロトコルでは、データをいつ転送すべきかを決定するのは送信側であり、「バブル(データ・ストリーム中のデータの空き)」が発生する可能性が向上して処理効率が落ちる場合がある。この技術では、あるステージのデータ要素がいつ次のステージに移動できるかを、同一のパイプラインで隣接するステージが異なるパイプラインと相互に決定している。
さらに、この従来技術は、データ要素が送られる際に通過する特定のステージやデータ要素に対して実行される予定の動作に応じて、データ要素を不規則なスケジュールで移動させる構成を有している。この構成により、相互に逆の方向にデータ要素を移動させるデータ・ストリームにおいて、各ノードにおけるデータ要素の比較が正しく行われない問題を抑制している。
そこで、まず図9を用いてこのアプリケーションのデータ要素の比較が正しく動作しないケースについて詳細に説明する。図9には互いに逆方向にデータ要素を移動させる2つのパイプライン回路の一部が記載されている。下側にある第1パイプラインは「上手」である図面上の左側から「下手」である図面上の右側に向かってデータ要素が移動する。一方、上側にある第2パイプラインは「上手」である図面上の右側から「下手」である図面上の左側に向かってデータ要素が移動する。図9(a)は、前述の問題が発生しないケースであり、第1パイプラインが動作(データ要素が移動)し、第2パイプラインが停止(データ要素が移動しない)しているケースを示している。図9(a−1)は、時刻[T]の状態を示し、図9(a−2)は、時刻[T]のある一定時間後の時刻[T+1]の状態を示し、図9(a−3)は、時刻[T+1]のさらに一定時間後の時刻[T+2]の状態を示している。その結果、第1パイプラインは動作し、「上手」である図面上の左側から「下手」である図面上の右側にパイプライン・ステージに保持されているデータ要素W、A(0)、A(1)、A(2)、B,Cが移動している。ここでA(0)、A(1)、A(2)は説明の為に括弧書きで表記することで区別しているだけであって、実際は同等と判定されるべきデータである。第1パイプラインと第2パイプラインの対応する各ステージは、判定(比較)回路で互いに接続されている。
図9(a−1)の時刻[T]のとき、各ステージの判定結果は第1パイプラインの「下手」から順に以下のようになる。まず第1パイプラインの一番下手のステージでは、データ要素WとAの比較となって一致しないので、判定(比較)回路は<偽>と判定する。以降のステージについても、データ要素A(0)とZと、データ要素A(1)とYと、データ要素A(2)とXと、を夫々比較して<偽>と判定する。
次に時間が経過し、図9(a−2)の時刻[T+1]のとき、第1パイプラインのデータ要素は1ステージだけ「下手」に移動する。各ステージの判定結果は第1パイプラインの「下手」から順に以下のようになる。まず、データ要素A(0)とAの比較となり、判定(比較)回路は<真>と判定する。以降のステージでは、データ要素A(1)とZの比較と、データ要素A(2)とYと、データ要素BとXと、を夫々比較して<偽>と判定される。
さらに時間が経過し、図9(a−3)の時刻[T+2]のとき、第1パイプラインのデータ要素は1ステージだけさらに「下手」に移動する。各ステージの判定結果は第1パイプラインの「下手」から順に以下のようになる。まず、データ要素A(1)とAの比較となり、判定(比較)回路は<真>と判定する。以降のステージでは、データ要素A(2)とZの比較と、データ要素BとYと、データ要素CとXと、を夫々比較し<偽>と判定する。
以上のように、第1パイプラインのデータ要素は時間の経過とともにステージを移動するが、第2パイプラインの「上手」にあるデータ要素Aとの比較は、第1パイプラインのデータ要素A(0)、A(1)共に正しく比較される。このように第1パイプラインと第2パイプラインで一方が動作し、一方が停止しているケースでは、データ要素の比較は正しく動作する。
次に、第1パイプラインと第2パイプラインの両方が動作するケースを図9(b)に示す。図9(b−1)〜(b−3)は夫々、図9(a−1)〜(a−3)と同様の時刻における状態を示している。第1パイプラインは、図9(a)と同様に動作するので説明を省略する。一方、第2パイプラインは、図9(a)とは異なり、「上手」である図面上の右側から「下手」である図面上の左側にパイプライン・ステージに保持されているデータ要素X、Y、Z、A、B、Cも移動している。
以下、図9(a)同様に、第1パイプラインと第2パイプラインの対応する各ステージにおける判定(比較)回路の判定結果を説明する。図9(b−1)の時刻[T]のとき、各ステージの判定結果は第1パイプラインの「下手」から順に、以下のようになる。まず第1パイプラインの一番下手の判定(比較)回路は、データ要素WとAとを比較し、一致しないので<偽>と判定する。以降のステージでも判定(比較)回路は、データ要素A(0)とZと、データ要素A(1)とYと、データ要素A(2)とXと、を夫々比較し<偽>と判定する。
次に時間が経過し、図9(b−2)の時刻[T+1]のとき、第1パイプラインのデータ要素と第2パイプラインのは1ステージだけ夫々の下手に移動する。各ステージの判定結果は第1パイプラインの「下手」から順に以下のようになる。まず、判定(比較)回路は、データ要素A(0)とBとを比較し<偽>と判定する。次のステージでは、判定(比較)回路はデータ要素A(1)とAとを比較し<真>と判定する。以降のステージでは判定(比較)回路は、データ要素A(2)とZと、データ要素BとYと、を夫々比較して<偽>と判定する。
さらに時間が経過し、図9(b−3)の時刻[T+2]のとき、第1パイプラインのデータ要素と第2パイプラインのデータ要素は1ステージだけ夫々の「下手」に移動する。各ステージの判定結果は第1パイプラインの「下手」から順に以下のようになる。まず判定(比較)回路は、データ要素A(1)とCとを比較し、一致しないので<偽>と判定する(ただし、A(1)は図9(b−2)のときに判定(比較)回路で<真>と判定済みである)。以降のステージで判定(比較)回路は、データ要素A(2)とBと、データ要素BとAと、データ要素CとZと、を夫々比較して<偽>と判定する。
以上のように、第2パイプラインの「上手」にあるデータ要素Aと第1パイプラインのデータ要素A(1)は比較されたが、データ要素A(0)とA(2)は比較されることがなかった。例えば、第1パイプラインの夫々のデータ要素が第2パイプラインの夫々のデータ要素の少なくとも1つと一致する時に、この一致した第1パイプラインのデータ要素を一致すると判定する場合、図9(b−1)〜(b−c)の処理では正しい判定ができていない。これは、第1パイプラインと第2パイプラインの両方が逆方向に移動するため、両パイプラインの相対移動速度が2倍になることに由来する。具体的には、時刻[T]〜時刻[T+2]の間に、図9(a)のケースでは第1パイプラインのデータ要素W、A(0)、A(1)の比較が完了するだけである。これに対して、図9(b)のケースでは第1パイプラインのデータ要素W、A(0)、A(1)、A(2)、Bの比較が完了している。このように図9(b)のケースは図9(a)のケースと比較して判定時間が短くなる代わりに、データ要素の比較漏れが発生してしまう。
前述のように、特許文献1に記載の技術はデータ要素が移動する際に通過する特定のステージおよびデータ要素に対し、実行予定の動作に応じてデータ要素を不規則なスケジュールで移動させることで、上記問題を解決している。具体的には、第1パイプラインと第2パイプラインの各ステージにおいてステージ状態を監視している。上記の問題が起こるケースの特定ステージにおいては、2方向のパイプラインの両ステージを停止し、比較が完了してから、その特定ステージのデータ要素の移動を許可するのである。この工夫により比較の完了前に2方向のパイプライン上の関連するデータ要素が通り過ぎることを防いでいる。
特許第3588487号公報
しかしながら、特許文献1の構成では、特定ステージにおいてステートマシーンによって、停止、比較の完了、データ要素の移動という動作状態を確認してからデータ要素を移動させるようにするため、スループットの向上は妨げられる。
したがって、本発明の目的は、移動するデータ要素をパイプラインの各ステージで確実かつ高速に相互作用させるための技術を提供することである。すなわち、処理もしくは管理対象のデータ要素数の増加に伴うレイテンシの増加を抑制できるような性能を有するデータ処理・管理技術を提供することを目的とする。
上記目的を達成するため、本発明によれば、
複数の第1ノードを有し、当該第1ノードの保持する第1データを第1方向に位置する隣のノードへ移動させる第1パイプラインと、
前記第1パイプラインの第1ノードの各々に対応する複数の第2ノードを有し、当該第2ノードの保持する第2データを前記第1方向と逆の第2方向に位置する隣のノードへ移動させる第2パイプラインと、
前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードに保持されている第2データと、を比較する第1比較手段と、
前記着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードより前記第2方向について1つ上手又は下手の第2ノードに保持されている第2データと、を比較する第2比較手段とを備えることを特徴とする情報処理装置が提供される。
また、本発明によれば、
複数の第1ノードを順に流れる第1データと前記第1データと逆方向の順で複数の第2ノードを流れる第2データとを扱うカウンターフロー・パイプライン構成の回路であって、
前記第1ノードの保持するデータと当該第1ノードに対応する第2ノードの保持するデータと少なくとも当該第2ノードの前及び後の第2ノードの保持するデータとを参照する参照手段を有することを特徴とする回路が提供される。
本発明によれば、移動するデータ要素をパイプラインの各ステージで確実かつ高速に相互作用させるための技術を提供することができる。
データ処理装置の基本構成を示すブロック図。 データ処理装置の回路構成を示すブロック図。 データ処理装置の基本構成を示すブロック図。 データ処理装置の回路構成を示すブロック図。 データ処理装置を適用した画像処理装置の一例を示すブロック図。 データ処理装置を適用したキャッシュ判定装置を示すブロック図。 データ処理装置を適用したキャッシュ装置のアクセス調停部の処理フローを示すフローチャート。 データ処理装置を適用したキャッシュ装置のキャッシュ・メモリ調停部の処理フローを示すフローチャート。 従来技術の動作例を説明する図。 データ処理装置の基本構成を示すブロック図。
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
<<第1実施形態>>
(基本構成)
図1は、第1実施形態による情報処理装置(以降、データ処理装置と称す)の基本構成の一例を示すブロック図である。第1パイプライン100は複数のノード(第1ノード)を有し、第1ノードの夫々は自身から第1方向へ1つ下手の第1ノードへ自身の保持するデータ要素(第1データ)を移動させる。また、第1パイプライン100には、外部から、
・データ要素の有効信号である「valid[l−1]」112。
・データ信号である「data[l−1]」114。
・データ信号の処理結果である処理結果信号「tag_id[l−1]」116。
が入力される。この一連の入力信号は、種々のデータ処理を行うデータ処理回路120で処理された後、パイプライン・レジスタ110にて一時記憶される。
このパイプライン・レジスタ110は駆動信号である、「enable」102が有効(アサート状態)であるときにデータ処理後のデータ要素を一時記憶して、以前に記憶したデータ要素を更新する。ただし、「enable」102が無効(ディアサート状態)であるときは、このパイプライン・レジスタ110は、データ処理後のデータ要素を記憶せずに、以前に記憶したデータ要素をそのまま保持し、データ要素の更新は行わない。入力からパイプライン・レジスタ110に一時記憶されるまでの区間をステージ(第1ステージ)と呼ぶ。
次にパイプライン・レジスタ110から、
・データ要素の有効信号「valid[l]」132。
・データ信号「data[l]」134。
・処理結果信号「tag_id[l]」136。
が出力され、第1ステージと同様にデータ処理回路140で種々のデータ処理が行われる。そして処理後のデータ要素が第2パイプライン・レジスタ130にて一時記憶されるが、この記憶動作は第1ステージと同様である。パイプライン・レジスタ110からのデータ要素がパイプライン・レジスタ130に一時記憶されるまでの区間を第2ステージと呼ぶ。
さらにパイプライン・レジスタ130からデータ要素の
・有効信号「valid[l+1]」152。
・データ信号「data[l+1]」154。
・処理結果信号「tag_id[l+1]」156。
が出力される。このような動作により、第1パイプライン100では、データ要素(有効信号「valid」とデータ信号「data」と処理結果信号「tag_id」)が「上手」である図面上の左側から「下手」である図面上の右側に移動する。
一方、本実施形態では、第1パイプライン以外に第2パイプラインが存在する。この第2パイプラインは複数のノード(第2ノード)を有し、第2ノードの夫々は自身から第2方向へ1つ下手の第2ノードへ自身の保持するデータ要素(第2データ)を移動させる。本実施形態では第1ノードと第2ノードは1対1の関係である(第1ノードと第2ノードは1対複数の関係でもよい)。第2方向は第1方向と論理的に逆方向であることを示し、必ずしも回路上で逆方向に流れる必要はない。図1において、この第2パイプライン160は「上手」である図面上の右側から「下手」である図面上の左側に向けてデータ要素を移動させる。第2パイプライン160には、データ要素の有効信号である「tag_valid[i+2]」172と、データ信号である「tag_data[i+2]」174が外部から入力される。これらの入力信号は、前述のデータ処理回路140で使用される。その後、パイプライン・レジスタ170にて一時記憶される。なお、図1に示すフリップフロップの夫々には不図示のクロック生成回路から動作クロックが供給される。
このパイプライン・レジスタ170は、駆動信号である「shift」162が有効(アサート状態)であるとき、一連の入力信号である
・有効信号「tag_valid[i+2]」172。
・データ信号「tag_data[i+2]」174。
を一時記憶し、以前に記憶したデータ要素を更新する。一方、駆動信号「shift」162が無効(ディアサート状態)であるときは、一連の入力信号を記憶せずに、以前に記憶したデータ要素をそのまま保持し、データ要素を更新しない。入力からパイプライン・レジスタ170に一時記憶されるまでの区間をステージ(第1ステージ)と呼ぶ。
次にパイプライン・レジスタ170から、データ要素の有効信号「tag_valid[i+1]」182とデータ信号「tag_data[i+1]」184が出力され、第1ステージと同様にデータ処理回路120に入力される。そして、データ処理後に第2のパイプライン・レジスタ180にて一時記憶されるが、この記憶動作は第1ステージと同様である。パイプライン・レジスタ170からデータ要素がパイプライン・レジスタ180に一時記憶されるまでの区間を第2ステージと呼ぶ。
さらに、パイプライン・レジスタ180からデータ要素の有効信号「tag_valid[i]」192とデータ信号「tag_data[i]」194が出力される。このような動作により第2パイプライン160では、データ要素である、有効信号「tag_valid」とデータ信号「tag_data」が、「上手」である図面上の右側から「下手」である図面上の左側に移動する。
(データ処理回路)
次にデータ処理回路120および140について詳細を説明する。本実施形態のデータ処理では、
・第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードに保持されている第2データと、を比較する第1比較処理。
・着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードより第2方向について1つ上手の第2ノードに保持されている第2データと、を比較する第2比較処理。
を実行する。具体的には、2方向のデータ要素の「data」と「tag_data」を比較し、もし等しければ、そのときの「tag_data」の格納番号(前述の“[i]”、“[i+1]”、“[i+2]”)を「tag_id」として記憶する。そして「tag_id」は、第1パイプラインのデータ処理結果として、「data」と同期して「上手」である図面上の左側から「下手」である図面上の右側に移動する。このようにして、「tag_id[l]」136には、第1パイプライン100のl番目のデータ要素「data[l]」134と値が等しい第2パイプライン160のデータ要素の格納番号が設定されることになる。
具体的には、まずデータ処理回路120は、有効信号「tag_valid[i]」192が有効のときに、データ信号「data[l−1]」114と「tag_data[i]」194を参照手段としての比較回路122で比較する。そして比較結果が等しければ、セレクタ126は「tag_data[i]」194の格納番号である、「Node=i」を選択する。この選択された値は、第1パイプライン100の「data[l−1]」114と値が等しい第2パイプライン160のデータ要素の格納番号として、「tag_id[l−1]」116に設定される。
前述の通り、第1パイプライン100と第2パイプライン160が同時に動作する場合、比較に失敗するケースがある。これに対処するためにデータ処理回路120は、さらに有効信号「tag_valid[i+1]」182が有効のときに、データ信号「data[l−1]」114と「tag_data[i+1]」184を比較回路124で比較する。そして比較結果が等しければ、セレクタ126は「tag_data[i+1]」184の格納番号である、「Node=i+1」を選択する。
またセレクタ126は、上記2種類の比較結果がどちらも等しくないときは、入力された処理結果信号「tag_id[l−1]」116を選択する。外部からの駆動信号「shift」162が有効(アサート状態)であり、第2パイプライン160が動作する場合は、データ要素は「下手」である図面上の左側に移動する。したがって、この場合は「tag_data」の格納番号も1つだけ左の格納番号を指すことが正しい。そこでセレクタ126の選択結果からデクリメンタ(減算器)128を用いて格納番号を1だけ減算することで調整する。
ここで格納番号の選択手法について補足説明しておく。格納番号は「Node=i」、「Node=i+1」、「tag_id[l−1]」116のいずれかが選択されるが、その選択基準は、例えば「数の大きいものを優先的に選択する」という単純なものでよい。例えば、データ信号「data[l−1]」114と「tag_data[i+1]」184が等しいときに、外部からの駆動信号「shift」162が有効の場合を考える。この場合、前述の比較に失敗するケースの問題を回避するために「Node=i+1」を選択することが重要であるが、この動作は「数の大きいものを優先的に選択する」という手法に合致している。一方、外部からの駆動信号「shift」162が無効の場合は、前述の比較に失敗するケースの問題を回避する必要がなく、「Node=i+1」を選択する必要はない。しかしながら「Node=i+1」の選択の有無に関わらず、第1パイプラインの下手ステージである、第2ステージでもう一度データ信号「data[l]」134と「tag_data[i+1]」184の比較が再評価される。このため、外部からの駆動信号「shift」162が無効の場合の第1ステージの「tag_data[i+1]」184との比較は、どちらでもよい。逆に言えば、「数の大きいものを優先的に選択する」という手法で選択しても何ら差し支えがないことになる。このようにして選択された値は、「data[l−1]」114と値が等しい第2パイプライン160のデータ要素の格納番号を示す「tag_id[l−1]」116に設定されることになる。
図1はあくまで一例であり、もちろんセレクタ126に駆動信号「shift」162を代入して、外部からの駆動信号「shift」162が無効の場合、「Node=i+1」は選択しないという制御を行ってもよい。第1実施形態の一例では、比較回路122と比較回路124の両方ともが<偽>であったとき、入力データ信号「tag_id[l−1]」116を選択している。ここでは、外部からの駆動信号「shift」162が有効の場合、格納場所が「下手」に移動することに対処するため、格納番号を1だけ減算する調整をいずれにしても行う必要がある。このため、「Node=i+1」は選択しないという制御は行わず、「Node=i+1」を選択してから、格納番号を1だけ減算する調整を改めて行っている。
データ処理回路140についても同様である。まず、有効信号「tag_valid[i+1]」182が有効のときに、データ信号「data[l]」134と「tag_data[i+1]」184を比較回路142で比較する。そして比較結果が等しければ、セレクタ146は、「tag_data[i+1]」184の格納番号である「Node=i+1」を選択する。第2パイプライン160の動作に備え、データ処理回路140は、さらに有効信号「tag_valid[i+2]」172が有効のときに、データ信号「data[l]」134と「tag_data[i+2]」174とを比較回路144で比較する。そして比較結果が等しければ、セレクタ146は「tag_data[i+2]」174の格納番号である、「Node=i+2」を優先的に選択する。またセレクタ146は、上記2種類の比較結果がどちらも等しくないときは、処理結果信号「tag_id[l]」136を選択する。外部から駆動信号「shift」162が有効であり、第2パイプライン160が動作する場合、「tag_data」の格納番号は1つだけ「下手」である図面上の右側に移動する。このため、セレクタ146の選択結果からデクリメンタ(減算器)148を用いて格納番号を1だけ減算する。このように、一致検出結果を調整し、簡易な処理により正確で高速なデータ処理を実現することができる。
以上のように本実施形態では、互に逆方向に移動させるデータ要素をパイプラインの各ステージで確実かつ高速に比較することが可能である。
本実施形態のデータ処理回路120および140の各々は、第1パイプライン100の1つのデータ要素につき、第2パイプライン160の比較対象であるデータ要素との比較回路を持っている。さらに、データ処理回路120および140の各々は、第2パイプライン160が動作することを想定して第2パイプライン160の比較対象であるデータ要素に対し第2パイプライン160の「上手」のデータ要素との比較回路を新たに設けている。これにより、特許文献1の構成で生じる、特定ステージ毎にインターロック(内部ストール)が発生するという問題は回避できるので、常にデータ処理を停止することなく、高処理性能を実現することができる。
また、本実施形態では、2つのデータ要素が等しいときの格納場所を算出するために、データ処理回路120および140の各々は、第2パイプライン160が動作することを想定し、処理結果を1だけ減算するためのデクリメンタ(減算器)を備えている。そして、第2パイプラインのデータ要素の格納番号は、第2パイプラインの「下手」から「上手」に向けて「0、1、2、・・・、i、i+1、i+2、・・・、N−1(i、Nは正の数、i<N)」と増加するように予め割り振られている。このように割り振る利点については、後述する第3実施形態において説明する。また格納番号が逆順に割り振られている場合は、デクリメンタは当然、1だけ加算するためのインクリメンタになることは言うまでもない。
また本実施形態では、データ処理として、2方向に移動するデータ要素の比較と、比較結果が等しいときの格納場所の算出を行う場合の例を説明したが、データ処理の内容はこれに限られない。例えば、2方向に移動するデータ要素の比較の結果と、比較結果が等しいときに、この2方向に移動するデータ要素の四則計算の結果とをデータ処理結果としてもよい。図10はこのような処理を行う回路の一例を示す図である。図10の構成については<<その他の実施形態>>で補足する。また、2方向に移動するデータ要素の大小関係をデータ処理結果としてもよい。データ処理回路の構成により、削除、大小関係、交換(スワップ)など、様々な計算が実行できることは言うまでもない。
また図1の基本構成を組み合せて、合計8区間(8ステージ)のデータ処理装置の構成の一例を図2に記載する。図2の例では、第1パイプラインと第2パイプラインの8個のデータ要素を比較している。図2のTagSlot[0]〜TagSlot[7]の各々は、図1記載の第2パイプラインのパイプライン・レジスタ170や180に対応する。DataSlot[0]〜DataSlot[7]の各々は、図1記載の第1パイプラインのパイプライン・レジスタ110や130に対応する。Judge[0]〜Judge[7]の各々は、図1記載のデータ処理回路120や140に対応する。このように、基本構成を連結することで多くのデータ要素をパイプライン動作で並列に分散比較することが可能となる。図2のデータ処理装置の構成の一例では、8個のデータ要素との比較を8ステージのパイプラインで実現している。ここでは、さらに外部からの駆動信号「shift」が有効であり、第2パイプラインが「下手」へ移動しても、処理性能を低下させることなく、安定した比較処理を実現できる。
一方、上記のような技術を用いた場合の適用例としては、例えば、多くのデータ要素をカウンターフロー・パイプライン構成で高速にデータ処理するような用途が考えられる。そのようなデータ処理を行う分野として画像処理分野やグラフィックス処理分野があげられる。このような分野では製品の高画質化や機能強化のために種々な画像処理が行われており、複数コンテンツ(画像、映像)を時分割多重で同時並行的に画像処理したり、半透明のテクスチャデータを複数枚、重ね合わせて表示したりする。このような画像処理の場合、DRAMなどの外部メモリから適宜、必要な画像や映像を取り出して処理するが、外部メモリからのデータ取得を、キャッシュ装置を介して行うことが一般的である。
しかしながら、時分割多重の画像処理や半透明テクスチャを複数枚重ね合わせたりすると、様々な画像や映像を同時並行的に処理することになり、一つの画像や映像は細切れに外部メモリから取得される。一般的なキャッシュ技術の実装で、様々な画像や映像を細切れに外部メモリから取得すると、キャッシュ競合が頻発してキャッシュ性能を著しく低下させてしまう。一方、キャッシュ競合を回避するため、キャッシュ・タグのウェイ数を増やすことができるが、一般的なキャッシュ技術の実装では、非常に多いウェイ数に対応したときに判定回路のセレクタの論理段数が多くなり、タイミング収束が難しい。このため、高い動作周波数で動作することができなくなってしまう。同時にウェイ数を増やすことにより、キャッシュ競合時の置き換え制御も複雑となり、キャッシュ技術の実装が難しくなる。
例えば特許文献1に記載の技術では、処理対象となるデータ要素の数が増えるにつれて、パイプラインのステージ数が増えることになり、装置全体のレイテンシが長くなる。これは一方向のパイプライン上の1つのデータ要素と、他方向のパイプライン上のすべてのデータ要素とを、総当りで比較を行うときの判定時間が長くなることを意味する。
そこで、本実施例のデータ処理装置をキャッシュ技術として実装することで、高度な画像処理用途に使用可能な、キャッシュ・データを管理するための高速のフルアソシアティブ方式のキャッシュ装置を実現することができる。
また、上記と同様の処理をコンピュータにおいて2組のデータ列を用いてデータ処理する際に適用してもよい。すなわち、第1データ列から1つのデータ要素を取得(第1の取得)し、第2データ列から連続する2つのデータ要素を取得(第2の取得)する。次に、第2データ列の2つのデータ要素の各々について、第1データ列のデータ要素と第2データ列のデータ要素とをデータ処理する。ここで、第2データ列の先頭に新規データ要素が1つ追加された場合に、2つのデータ処理の結果のうち、第2データ列の先頭に近いデータ要素を用いたデータ処理の結果を出力する。このように処理を行うことで、互に逆方向に移動するデータ要素を確実かつ高速に相互作用させることができる。
<<第2実施形態>>
図3は、第2実施形態によるデータ処理装置の基本構成の一例を示すブロック図である。図3において、第1パイプライン300は図の「上手」である左側から「下手」である図面上の右側に向けてデータが移動する。また第2パイプライン360は「上手」である図面上の右側から「下手」である図面上の左側に向けてデータが移動しており、第1実施形態と同様に第1パイプライン300とはデータ要素の移動する向きが逆である。なお、図3における各種の信号の名称や意味は、図1を用いて説明した第1実施形態と同様であり、その説明をここでは割愛する。第2実施形態では、データ処理回路が第1実施形態と異なるため、データ処理回路について詳細説明する。なお図1のデータ処理回路とそこに含まれる回路要素が、図3では、比較回路321〜329と選択および減算回路320(セレクタ346とデクリメンタ328を含む)とに分かれている。
本実施形態では、2方向の一方(第1パイプライン)のデータ要素である1つのデータ信号「data」と、他方(第2パイプライン)のデータ要素である複数のデータ信号「tag_data」とを同時に比較する。もし1つでも等しい「tag_data」がある場合、そのときの「tag_data」の格納番号を「tag_id」として記憶する。等しい「tag_data」が複数ある場合は、最も「数の大きいものを優先的に選択する」などとしてよい。
まず「data[l]」334を9個の比較回路321〜329の各々に入力する。このとき、少なくとも「data[l]」334と比較する「tag_data」の数(第2のノードの数に相当する)より1だけ多い比較回路を用意する必要がある。そして、9個の比較回路321〜329の各々に、比較対象である以下の組を接続する。
・有効信号「tag_valid[i]」とデータ信号「tag_data[i]」の組。
・有効信号「tag_valid[i+1]」とデータ信号「tag_data[i+1]」の組。
・有効信号「tag_valid[i+2]」とデータ信号「tag_data[i+2]」の組。
・有効信号「tag_valid[i+3]」とデータ信号「tag_data[i+3]」の組。
・有効信号「tag_valid[i+4]」とデータ信号「tag_data[i+4]」の組。
・有効信号「tag_valid[i+5]」とデータ信号「tag_data[i+5]」の組。
・有効信号「tag_valid[i+6]」とデータ信号「tag_data[i+6]」の組。
・有効信号「tag_valid[i+7]」とデータ信号「tag_data[i+7]」の組。
・有効信号「tag_valid[i+8]」とデータ信号「tag_data[i+8]」の組。
比較回路321〜329の各々の動作は、第1実施形態と同様であり、その9本の比較結果がセレクタ346に入力される。そしてセレクタ346は、比較結果が等しい「tag_data」の格納番号である、「Node=i」から「Node=i+8」のいずれかを選択する。またセレクタ346は、上記9種類の比較結果がいずれも等しくないときは、入力された処理結果信号「tag_id[l]」336を選択する。
第1実施形態同様に格納番号は「数の大きいものを優先的に選択する」という方法で選択する。そして、外部から駆動信号「shift」362が有効の場合、セレクタ346の選択結果からデクリメンタ(減算器)348を用いて格納番号を1だけ減算することで調整する。
第2実施形態では、第1実施形態の図2で示していた8区間(8ステージ)のパイプラインを1区間(1ステージ)で実現しており、1つの入力データに対する比較完了までのレイテンシが8から1に削減されている。また図2から分かるように第1実施形態では、比較回路が合計2×8個必要であったのに対して第2実施形態では比較回路の数は9個でよく、16個から9個に削減されている。装置全体では、デクリメンタ(減算器)やパイプライン・レジスタの数も削減されるため、処理性能を低下することなく、レイテンシを縮めて応答性を高め、全体の回路規模も削減できている。
また、本実施形態では、カウンターフロー・パイプラインにおいて第1パイプラインの1つのデータ要素と第2パイプラインの複数のデータ要素とを漏れなく高速に比較できる。
また図1と図3の基本回路を組み合わせて、接点338_1〜338_9にパイプライン・レジスタを導入し、各々に図1のセレクタやデクリメンタ(減算器)を設けてもよい。この場合、セレクタ346の論理段数を分散し、回路全体のレイテンシを削減しつつ、さらに動作周波数を向上するような回路構成も実現可能である。
また図3の基本構成を組み合わせて、合計8区間(8ステージ)のデータ処理装置の構成の一例を図4に記載する。図4の一例では、第1パイプラインと第2パイプラインの64個のデータ要素を比較している。図4のTagSlot[0]からTagSlot[63]の各々は、図3記載の第2パイプラインのパイプライン・レジスタ380や381などに対応している。DataSlot[0]から[7]の各々は、図1記載の第1パイプラインのパイプライン・レジスタ310や330などに対応し、Sel&Dcr[0]〜Sel&Dcr[7]の各々は、図3記載の選択および減算回路320などに対応している。基本構成を連結することで多くのデータ要素をパイプライン動作で並列に分散比較することが可能となる。図4の構成例では、64個のデータ要素との比較を8ステージのパイプラインで実現し、さらに外部からの駆動信号「shift」が有効であり、第2パイプラインが「下手」へ移動しても、処理性能を低下させることなく、安定した比較処理を実現できる。
もちろん、上記の回路をコンピュータで仮想的に実現してもよい。これにより、2方向パイプラインにおいて移動するデータ要素をハード的に比較しても比較漏れを抑制することができる。
<<第3実施形態>>
(画像処理装置)
図5は、第3実施形態による画像処理装置の全体構成の一例を示すブロック図である。本実施形態の画像処理装置は、第1実施形態(図2)や第2実施形態(図4)で説明したデータ処理装置をフルアソシアティブ方式のキャッシュ判定装置として応用している。
ディスプレイなどの表示デバイスにメモリに格納された画像を回転したり、拡大・縮小したり、歪めたりして描画するような画像(映像)処理がある。また同様の処理をグラフィックス分野においては、テクスチャ・マッピング処理を用いて実現する。第3実施形態の画像処理装置の一例は、このテクスチャ・マッピング処理に用いてキャッシュデータを管理するためのキャッシュ装置を包含する。
図5記載の外部メモリであるDRAM565には、キャッシュ対象データとしての画像データ568が予め格納されている。最終的にはラスタライズ結果502のような画像を表示デバイスのフレームバッファに描画する。ラスタライズ結果502に記載されている点線で囲まれた正方形は、表示デバイスの1画素を表している。画像処理装置では、ラスタライズ結果502の左上の画素から水平方向に1画素ずつ順に画像処理を行い、右上の画素まで処理した後、次の行の左画素から水平方向に1画素ずつ順に画像処理を行う(ラスタス走査の画像処理)。
アクセス対象の画素504(処理対象として要求されるデータ)に対応するテクスチャ座標505がラスタライズ装置(不図示)からアドレス算出部510へ入力される。次にテクスチャ座標505はアドレス算出部510にてアドレス515に変換される。
次にアドレス515は、キャッシュ判定部520でキャッシュ・ヒットもしくはキャッシュ・ミス(ミスヒット)が判定される。キャッシュ判定部520は、第1実施形態(図2)や第2実施形態(図4)で説明したデータ処理装置をフルアソシアティブ方式のキャッシュ判定装置として応用したものである。キャッシュ判定部520では、入力されたアドレス515をもとにキャッシュ判定結果525が生成される。
本実施形態の画像処理装置では、キャッシュのミス時のペナルティであるリフィル・レイテンシを隠蔽するためにノンブロッキングのキャッシュ機構を採用している。これは、たとえキャッシュ判定結果525がミスと判定されても、後に必要となる情報「tag_id、miss_hit_flag」528をTag_idFIFO540に退避する。そして、キャッシュ・ミスのキャッシュ・データをDRAM565から読み出し、キャッシュ・メモリ(FIFO)590へ格納する処理が完了する前に、次の画素のキャッシュ判定処理を先行して実行する。このような処理を行うことでキャッシュ・ミスのキャッシュ・データをDRAM565からキャッシュ・メモリ590(FIFO)へリフィルしている間にも、続く画素に対するキャッシュ判定を行うことができる。したがって、キャッシュ・ミス時の性能低下を抑制することが可能になる。
なお、後述するように、キャッシュがミスしたデータのアドレスは、アクセス調停部530によりアドレス送信FIFO550へ順次格納される。DRAMコントローラ560はこのアドレス送信FIFO550を参照し、キャッシュ・ミスしたデータのアドレスが書き込まれている場合は、そのデータをDRAM565から読み出して、テクスチャデータ受信FIFO570へ書き込んでいく。このようにして、ミスしたデータをDRAM565から読み出してテクスチャデータ受信FIFO570へ書き込む一連の処理をリフィルという。後述するように、キャッシュメモリ調停部580は、Tag_idFIFO540を参照し、miss_hit_flagが有効、すなわちキャッシュ・ミスしたデータを特定する。そして、当該データをテクスチャデータ受信FIFO570から読み出して、キャッシュ・メモリ590へ書き込む。キャッシュメモリ調停部580は、キャッシュヒットしたデータについてはキャッシュ・メモリ590から直接読み出して出力するが、キャッシュ・ミスしたデータについては、リフィルされたデータを外部へ出力することになる(585)。
(アクセス調停部)
アクセス調停部530は接続される3つのFIFOである、アドレス送信FIFO550、テクスチャデータ受信FIFO570、Tag_idFIFO540のすべてに格納領域の空きがあるかどうかを判断する。この判断は、各FIFOから入力される信号「full」552、「full」542、「full」572をもとに行う。
アクセス調停部530は、キャッシュ判定結果525の「valid」が有効であることを条件に、キャッシュヒットを判定し、Tag_idFIFO540、アドレス送信FIFO550への書き込みを行う。具体的には、キャッシュ判定部520からのキャッシュ判定結果525の受信に応じて、tag_idと、キャッシュ判定結果を示すmiss_hit_flag等をtag_idFIFO540に書き込んでいく。さらに、キャッシュのキャッシュ・ミスを示す結果を受信した場合は、キャッシュ・ミスしたデータのアドレス(miss_hit_address)をアドレス送信FIFO550に書き込む。
以下、図7の処理フロー700を用いて、アクセス調停部530の処理を説明する。まず、アクセス調停部530は、入力されたキャッシュ判定結果525の有効信号である「valid」が有効(アサート状態)であるか否かを判定する(S710)。有効の場合(S710でYES)はS720へ進み、有効でない場合(S710でNO)は処理を終了する。
S720では、アクセス対象のデータに係るキャッシュ判定結果がミスである、つまり「miss_hit_flag」525が有効(アサート状態)であるか否かを判定する。有効の場合(S720でYES)はS750へ進み、有効でない場合(S750でNO)はS730へ進む。
S750では、上記3つの全てのFIFOの格納領域に空きがあるか否かを判定する。空きがある場合(S750でYES)はS760へ進み、空きがない場合(S750でNO)はS755へ進む。
S760では、キャッシュ判定結果525のうち「tag_id、miss_hit_flag」528をTag_idFIFO540へ書き込む。さらに、アドレス送信FIFO550へキャッシュ判定結果525のうち「miss_hit_address」525を書き込む。そして処理を終了する。
一方、S755では、上記3つのFIFOのいずれかの格納領域に空きがない場合、駆動信号である「enable」を無効(ディアサート状態)にして前段部を停止(ストール)し、格納領域が空くまで待機する。そして、3つのFIFOの全ての格納領域に空きができたら(S750でYES)、ステップS760へ進む。
また、キャッシュ判定結果がヒット(S720でNO)の場合は、S730でTag_idFIFO540の格納領域に空きがあるか否かを判定する。空きがある場合(S730でYES)はS740へ進み、空きがない場合(S730でNO)はS735へ進む。
S740では、キャッシュ判定結果525のうち「tag_id、miss_hit_flag」528をTag_idFIFO540へ書き込む。そして、処理を終了する。
一方、S730でTag_idFIFO540の格納領域に空きがないと判定された場合(S730でNO)は、S735において、駆動信号「enable」を無効(ディアサート状態)にして前段部を停止(ストール)し、格納領域が空くまで待機する。格納領域が空いた場合(730でYES)はS740へ進む。
(キャッシュ・メモリ調停部)
キャッシュ・メモリ調停部580は、Tag_idFIFO540に格納されたmiss_hit_flagを参照して、キャッシュがヒットしているか否かに応じて、次の処理を行う。
・キャッシュされているデータはキャッシュ・メモリ(FIFO)590から読み出して出力する(585)。
・キャッシュされていないデータはテクスチャデータ受信FIFO570から読み出して、キャッシュ・メモリ590へ書き込むとともに、テクスチャデータとして出力する(585)。
図8のキャッシュ・メモリ調停部580の処理フロー800を用いて説明する。キャッシュ・メモリ調停部580は、まずTag_idFIFO540から処理すべきキャッシュ判定結果「tag_id、 miss_hit_flag」を取り出す(S810)。Tag_idFIFO540が空の場合は処理すべきキャッシュ判定結果がないため、キャッシュ・メモリ調停部580は当然何もせず待機する。
次に、S820において、キャッシュ判定結果「miss_hit_flag」が有効(アサート状態)か否かを判定する。有効の場合(S820でYES)はS840へ進み、無効の場合(S820でNO)はS830へ進む。
S820で無効(ディアサート状態)のときは、キャッシュがヒットしているので、S830において、同時に取り出した「tag_id」とキャッシュ・メモリ(FIFO)590のライト・ポインタからアドレスを算出する。さらに、キャッシュ・メモリ590から「read_data」592を読み出し、テクスチャデータとする。そして、S890へ進む。
S890では、有効信号である「valid」を付加して、「texture_data、valid」585を出力する。そして、処理を終了する。画像処理装置では、このテクスチャデータをもとにフィルタ処理(不図示)を施し、表示デバイスのフレームバッファ(不図示)にフィルタ処理結果を書き出すことになる。
また、S820でキャッシュ判定結果「miss_hit_flag」が有効(アサート状態)のときは、キャッシュがミスしている。このため、S840において、キャッシュ・メモリ調停部580はDRAM565からの更新すべきテクスチャデータがテクスチャデータ受信FIFO570にリフィル済みかどうかを確認する。リフィルされていない場合は、リフィルされるまで待機する(S850)。
リフィル後、テクスチャデータ受信FIFO570からリフィル済みのデータを更新すべきテクスチャデータとして取り出す(S860)。次に、キャッシュ・メモリ(FIFO)590のライト・ポインタの指す格納領域に取り出したテクスチャデータを「write_data」582として書き込む(S870)。そしてキャッシュ・メモリ590のライト・ポインタをインクリメントする(S880)。そして有効信号である「valid」を付加して、「texture_data,valid」585を出力する(S890)。
(フルウェイ・キャッシュ判定部)
さらに図6を用いて図5記載の画像処理装置のキャッシュ判定部520の回路構成の一例について詳細説明する。キャッシュ判定部520は、比較結果とキャッシュ・タグ数の大小関係を調べて、キャッシュのヒットを判定する。キャッシュ判定部520は第1実施形態(図2)の複数接続されたデータ処理装置200とキャッシュ判定装置600とを有するように構成される。またデータ処理装置200の替わりに第2実施形態(図4)のデータ処理装置を用いても構わない。
データ処理装置200は、前述のように8個の「tag_data」を持ち、この8個の「tag_data」にキャッシュ・タグ情報が記憶される。データ処理装置200の場合は、8ノードのフルアソシアティブ方式のキャッシュ装置となる。また、第2パイプラインの「上手」から順に0番から7番までの格納場所が一筆書きの決められた順路で予め決められており、駆動信号「shift」が有効(アサート状態)のときに「下手」にデータ要素が移動するシフト構造を有している。このシフト構造により最も古いキャッシュ・タグは格納場所0番の「tag_data」に格納されており、最も新しいキャッシュ・タグは格納場所7番の「tag_data」に格納されている。キャッシュのミスが起こる度にキャッシュ・タグは格納場所7番から格納場所0番の「tag_data」へ順番に移動(シフト)され、やがて第2パイプラインから掃き出されてしまう。第3実施形態のキャッシュ判定装置は非常に単純な機構ながら、常に最も古いキャッシュ・タグやキャッシュ・データから順番に捨てられ、一般的なキャッシュ機構の複雑な置き換え(リプレイス)制御を行う必要がない。
(キャッシュのヒット判定)
次に、キャッシュのヒット/ミスヒット判定の手順を説明する。ヒット/ミスヒット判定はキャッシュ判定装置600で行われる。キャッシュがミスヒットしたかどうかは、データ処理装置200から出力される処理結果信号「tag_id」(2の補数表記)の1ビットの符号ビットを調べることで判定する。データ処理装置200の出力である有効信号「valid」が有効(アサート状態)であり、かつ符号ビットが1であるとき、「tag_id」は負の値であり、キャッシュ判定はミスヒットとする。また符号ビットが0であるとき、「tag_id」は正の値であり、キャッシュ判定はヒットとする。
データ処理装置200の出力であるデータ信号「data」がキャッシュ判定装置600に「tag_id」と同期して入力される。上記によりキャッシュ・ミスと判定された場合、このデータ信号「data」がミスヒット時のアドレスである「miss_hit_address」となる。そしてキャッシュ判定装置600ではミスヒットのときに駆動信号「shift」を有効(アサート状態)にし、ミスヒット時のアドレスである「miss_hit_address」をデータ処理装置200のデータ信号「tag_data」として入力する。キャッシュがミスヒットする度に駆動信号「shift」が有効となり、第1、第2実施形態で説明したように処理結果「tag_id」は減算されていく。
処理結果「tag_id」の初期値を「−1」とし、その後にキャッシュ・ヒットして処理結果「tag_id」に正の値が保持されていても、ミスヒットが繰り返されると第2パイプラインがシフトされ、キャッシュ・タグを表す「tag_data」が第2パイプラインから掃き出されることもある。この掃き出されるときの処理結果「tag_id」の値は、最も古いキャッシュ・タグの格納番号が0であることから、負の値であることは明らかである。前述のキャッシュ判定で「tag_id」の符号を調べるだけでよいのは、これに由来する。すなわち、第1、第2実施形態の例のように、最も古いキャッシュ・タグが0番、最も新しいキャッシュ・タグがN−1番となるように、格納場所の番号の割り振り方を工夫している。これにより、キャッシュ判定は最終ステージのデータ処理結果の符号を判別するだけでよい。したがって、本実施形態によれば、キャッシュ判定が非常に簡単である。
また格納番号を第2パイプラインの「上手」から「下手」に0番からN−1番に割り振った場合は、「tag_id」の値が第2パイプラインの要素数であるNより、小さいかどうかでキャッシュ判定できることは言うまでもない。
また前述のように常に最も古いキャッシュ・データから順番に捨てる機構のため第3実施形態の一例のキャッシュ・メモリはリング式FIFOを用いればよい。この場合、キャッシュ判定部520とキャッシュ・メモリ(FIFO)590との同期が容易となる。
なお、キャッシュ判定がヒットの場合は、「tag_id」が指し示す位置のキャッシュ・メモリに所望のテクスチャデータが格納されていることとなる。
<<その他の実施形態>>
また、図10は、演算処理として、第1実施形態のような比較演算ではなく、ALUを用いて演算処理するときの基本回路の一例を示している。図10では第1実施形態の図1と異なり、第1パイプラインには「data2」が、第2パイプラインには「tag_data2」が追加されている。第1実施形態と同様に「data[l−1]」と「tag_data[i]」が等しいときには「tag_data2[i]」を選択し、「data2[l−1]」と演算処理して結果を「tag_id[l]」に記憶する。「data[l−1]」と「tag_data[i+1]」が等しいときには「tag_data2[i+1]」を選択し、「data2[l−1]」と演算処理して結果を「tag_id[l]」に記憶する。また「tag_data[i]」と「tag_data[i+1]」のいずれも等しくない場合は、演算処理を行わず入力されたtag_id[l−1]を選択して「tag_id[l]」に記憶する。このように第1パイプラインと第2パイプラインのデータとデータ処理1100の構成により、様々な演算処理(四則演算や大小比較)を実現することができる。
また、様々な演算処理結果に応じて第1パイプラインや第2パイプラインの有効信号である「valid」や「tag_valid」をディアサートして有効から無効に切り替えてもよい。この場合、特定のデータ要素の「data」や「tag_data」を削除することができる。また、様々な演算処理結果に応じて第1パイプラインや第2パイプラインの特定のデータ要素の「data」と「tag_data」を交換(スワップ)することもできる。このように上記構成の一態様によれば、第1実施形態の比較以外の様々な演算を用いたデータ処理を実現できることは言うまでもない。
また図3および図4で示した各区間(ステージ)のデータ処理を別々のプロセッサにソフトウェア実装し、各プロセッサ間で駆動信号「shift」で同期を取りながら、「data」と「tag_data」を入れ替えてもよい。この場合、第2実施形態のデータ処理をソフトウェアにより並列分散処理することができる。また、この場合、各プロセッサで取り扱うデータ要素数は図3の例のような8要素ではなく、プロセッサがアクセスできるメモリ上に展開された膨大な数でよい。このとき、「tag_data」の移動はそのメモリ上のポインタの原点を移動することにより実現することができる。このように上記構成の一態様を用いれば、ソフトウェア処理に応用できることは言うまでもない。
以上、実施形態を詳述したが、本発明は、例えば、コンピュータ、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用してもよい。
上記のように、データ処理装置は第1パイプラインと第2パイプラインを有し、第1パイプラインと第2パイプラインは相互に逆方向にデータ要素が移動する。ここで、第1パイプラインの各ノードは、接続された第2パイプラインのノードに対し、「上手」にあるノードとも接続されている。そして、第1パイプラインのデータと第2パイプラインのデータが同時に次ノードに移動するときに、「上手」ノードとのデータ処理の結果を選択する。これにより、特定ステージのデータ要素が不規則なスケジュールで処理され、データ要素の処理が高速でないという課題が解決される。
また、データ処理装置は第1パイプラインと第2パイプラインを有し、第1パイプラインと第2パイプラインは相互に逆方向にデータ要素が移動する。ここで、第1パイプラインの各ノードで処理するデータ要素と同一データを取り扱う複製ノードを新たに設けて第1パイプラインの総ノード数を増やしている。さらに、第2パイプラインの各ノードを第1パイプラインのノードに分配接続する。これにより、パイプラインのレイテンシがデータ処理対象のデータ要素の数に応じて長くなるという課題が解決される。
また、キャッシュ装置は第1パイプラインと第2パイプラインを有し、第1パイプラインでアドレスを管理し、第2パイプラインでキャッシュ・タグを管理する。ここで、第1パイプラインと第2パイプラインは相互に逆方向にアドレスとキャッシュ・タグを移動させながら一致検出を行う。このため、非常にノード数が多いことから、キャッシュ競合の確率が低いという従来のキャッシュ装置の課題が解決される。
上記の各構成によれば、互に逆方向に移動するデータ要素がパイプラインの各ステージで確実に相互作用できると共にカウンターフロー・パイプライン構成を用いた場合の最良の性能を引き出すことができる。また処理または管理対象のデータ要素数の増加に伴うレイテンシの増加を抑制でき、これによりデータ要素の処理または管理のためのトータルの判定時間を短くすることができる。
以上のように本実施形態のキャッシュ装置によれば、ノード数の多いフルアソシアティブ方式のキャッシュ装置を実現することができる。これにより複数コンテンツを時分割多重で画像処理する場合や半透明のテクスチャデータを複数枚、重ね合わせた画像処理を行う場合でも、キャッシュ競合の確率を低減できる。また一般的なキャッシュ装置の実装方法では、ウェイ数を多くしたときに判定回路のセレクタの論理段数が増えることによりタイミング収束が難しくなり、高い動作周波数で動作させることが困難である。これに対して、上記キャッシュ装置の判定回路はカウンターフロー・パイプライン構成で判定するために、高い動作周波数で動作させることも容易である。また上記フルアソシアティブ方式の判定回路では、古いデータから順番に自動削除されるため、キャッシュ競合時の複雑な置き換え制御を行う必要がない。これに伴い、キャッシュ・メモリもFIFOを用いるだけで良好なヒット判定をすることができる。
なお、上述の各実施形態では各回路の構成要素に同一の動作クロックを供給して動作させるように構成(不図示)しているが、第1パイプラインや第2パイプラインには動作クロックとは別のタイミング信号を供給し、データ要素をシフトさせるようにしてもよい。また、第2データが第1データに比べて少ない場合などに、第2パイプラインに第2データを充填させた後に第2パイプラインを停止させ、第1パイプラインだけを動作させて相互処理をするようにしてもよい。この場合、第2ノードへの動作クロック(駆動信号、タイミング信号)の供給を停止させることによって第2パイプラインを停止させる。また、上述の各実施形態では第1ノードの1つを着目ノードとして、着目ノードとこの着目ノードに対応するノードから第2方向について1つ上手の第2ノードとを比較する比較回路を設けているが、着目ノードとこの着目ノードに対応するノードから第2方向について1つ下手の第2ノードとを比較する比較回路を設けても本発明の効果は変わらない。
110 パイプライン・レジスタ
120 データ処理回路
122 比較回路
124 比較回路
126 セレクタ
128 デクリメンタ

Claims (19)

  1. 複数の第1ノードを有し、当該第1ノードの保持する第1データを第1方向に位置する隣のノードへ移動させる第1パイプラインと、
    前記第1パイプラインの第1ノードの各々に対応する複数の第2ノードを有し、当該第2ノードの保持する第2データを前記第1方向と逆の第2方向に位置する隣のノードへ移動させる第2パイプラインと、
    前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードに保持されている第2データと、を比較する第1比較手段と、
    前記着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードより前記第2方向について1つ上手又は下手の第2ノードに保持されている第2データと、を比較する第2比較手段とを備えることを特徴とする情報処理装置。
  2. 駆動信号が有効である場合に、前記第2パイプラインは複数の第2ノードが保持する夫々の第2データを前記第2方向に1つ下手にある第2ノードへ移動させ、
    前記第2比較手段は、前記駆動信号が有効である場合に比較処理を実行し、前記駆動信号が無効である場合に比較処理を実行しないことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1、第2比較手段は、前記第1パイプラインを移動する前記第1データと、前記第2パイプラインを移動する前記第2データとの一致を判定することを特徴とする請求項1又は2に記載の情報処理装置。
  4. キャッシュデータを管理する情報処理装置であって、
    前記第1パイプラインは、アドレスを前記第1データとして移動させ、前記第2パイプラインは、前記キャッシュデータのキャッシュ・タグを前記第2データとして移動させ、
    前記第1、第2比較手段は前記第1パイプラインを移動する前記アドレスと前記第2パイプラインを移動する前記キャッシュ・タグとの一致を判定することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記第1パイプラインと前記第2パイプラインとがカウンターフロー・パイプラインであることを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 処理装置から要求されたデータのキャッシュヒットを判定する情報処理装置であって、
    複数の第1ノードを有し、当該第1ノードに対して第1方向に位置する隣のノードへ当該第1ノードが保持する前記要求されたデータのアドレスを移動させる第1パイプライン手段と、
    前記第1パイプラインの第1ノードの各々に対応する複数の第2ノードを有し、当該第2ノードに対して前記第1方向と逆の第2方向に位置する隣のノードへ当該第2ノードが保持するキャッシュ・タグを移動させる第2パイプラインと、
    前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードに保持されている第2データと、を比較する第1比較手段と、
    前記着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードより前記第2方向について1つ上手の第2ノードに保持されている第2データと、を比較する第2比較手段と、
    前記第1比較手段と前記第2比較手段の結果に基づいて前記要求されたデータのキャッシュがヒットしたか否かを判定する判定手段と
    を有することを特徴とする情報処理装置。
  7. 前記要求されたデータのキャッシュがヒットしなかったと前記判定手段が判定した場合、前記第1データのアドレスを前記キャッシュ・タグとして入力する入力手段をさらに備えることを特徴とする請求項6に記載の情報処理装置。
  8. 前記第1パイプラインと前記第2パイプラインは複数のフリップフロップを有し、夫々のフリップフロップには同一の駆動信号が供給されることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
  9. 前記第1ノードと前記第2ノードは1対1の関係で対応していることを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 前記第1ノードと前記第2ノードは1対複数の関係で対応していることを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  11. 前記第1パイプラインと前記第2パイプラインは夫々の保持するデータを同時にシフトさせることを特徴とする請求項1乃至10のいずれか1項に記載の情報処理装置。
  12. 第1方向へデータを流す複数のフリップフロップを有する第1パイプラインと、
    第2方向へデータを流す複数のフリップフロップを有する第2パイプラインと、
    前記第1パイプラインのフリップフロップの少なくとも1つについて、当該フリップフロップに入力されるデータと当該フリップフロップに対応する前記第2パイプラインのフリップフロップに入力されるデータ及び当該フリップフロップから出力されるデータとを参照する参照手段と
    を有することを特徴とする情報処理装置。
  13. 前記フリップフロップの夫々は同一の駆動信号を参照して動作することを特徴とする請求項12の情報処理装置。
  14. 前記第2パイプラインのフリップフロップに供給するクロックを停止させることで前記第2パイプラインのデータの流れを停止させることを特徴とする請求項13に記載の情報処理装置。
  15. 複数の第1ノードを順に流れる第1データと前記第1データと逆方向の順で複数の第2ノードを流れる第2データとを扱うカウンターフロー・パイプライン構成の回路であって、
    前記第1ノードの保持するデータと当該第1ノードに対応する第2ノードの保持するデータと少なくとも当該第2ノードの前及び後の第2ノードの保持するデータとを参照する参照手段を有することを特徴とする回路。
  16. 複数の第1ノードについて、当該第1ノードの保持する第1データを第1方向に位置する隣のノードへ移動させる第1パイプライン工程と、
    前記第1パイプラインの第1ノードの各々に対応する複数の第2ノードについて、当該第2ノードの保持する第2データを前記第1方向と逆の第2方向に位置する隣のノードへ移動させる第2パイプライン工程と、
    前記第1パイプラインの第1ノードの1つを着目ノードとして、当該着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードに保持されている第2データと、を比較する第1比較工程と、
    前記着目ノードに保持されている第1データと、当該着目ノードに対応する第2ノードより前記第2方向について1つ上手又は下手の第2ノードに保持されている第2データと、を比較する第2比較工程と
    を備えることを特徴とする情報処理方法。
  17. 複数の第1ノードを順に流れる第1データと前記第1データと逆方向の順で複数の第2ノードを流れる第2データとを扱うカウンターフロー・パイプライン構成の回路による情報処理方法であって、
    前記第1ノードの保持するデータと当該第1ノードに対応する第2ノードの保持するデータと少なくとも当該第2ノードの前及び後の第2ノードの保持するデータとを参照する参照工程を有することを特徴とする情報処理方法。
  18. 第1方向へデータを流す複数のフリップフロップを有する第1パイプラインと、第2方向へデータを流す複数のフリップフロップを有する第2パイプラインとを有するカウンターフロー・パイプライン構成の回路を有する情報処理装置を用いる情報処理方法であって、
    前記第1パイプラインのフリップフロップの少なくとも1つについて、当該フリップフロップに入力されるデータと当該フリップフロップに対応する第2パイプラインのフリップフロップに入力されるデータ及び当該フリップフロップから出力されるデータとを参照する参照工程を有することを特徴とする情報処理方法。
  19. コンピュータを、請求項1乃至14のいずれか1項に記載の情報処理装置の有する各手段として機能させることを特徴とするプログラム。
JP2010116699A 2009-05-22 2010-05-20 情報処理装置、回路、情報処理方法、及びプログラム Active JP5580660B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010116699A JP5580660B2 (ja) 2009-05-22 2010-05-20 情報処理装置、回路、情報処理方法、及びプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009124723 2009-05-22
JP2009124723 2009-05-22
JP2010116699A JP5580660B2 (ja) 2009-05-22 2010-05-20 情報処理装置、回路、情報処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2011008773A JP2011008773A (ja) 2011-01-13
JP5580660B2 true JP5580660B2 (ja) 2014-08-27

Family

ID=42394991

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010116699A Active JP5580660B2 (ja) 2009-05-22 2010-05-20 情報処理装置、回路、情報処理方法、及びプログラム

Country Status (4)

Country Link
US (1) US8452944B2 (ja)
EP (1) EP2254040B1 (ja)
JP (1) JP5580660B2 (ja)
CN (1) CN101894012B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5650441B2 (ja) * 2010-06-07 2015-01-07 キヤノン株式会社 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
JP5627330B2 (ja) 2010-08-02 2014-11-19 キヤノン株式会社 情報処理装置、キャッシュ装置およびデータ処理方法
KR102061069B1 (ko) 2013-02-28 2020-01-02 삼성전자주식회사 텍스쳐 맵핑 파이프라인을 위한 논블로킹 방식의 텍스쳐 캐쉬 메모리 시스템 및 논블로킹 방식의 텍스쳐 캐쉬 메모리의 동작 방법
US9715461B2 (en) * 2014-03-03 2017-07-25 Kabushiki Kaisha Toshiba Cache memory control circuit and processor
JP6979777B2 (ja) 2017-03-22 2021-12-15 キヤノン株式会社 インターフェース装置およびその制御方法
JP7278067B2 (ja) 2018-12-20 2023-05-19 キヤノン株式会社 データ処理装置及びその制御方法及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04178755A (ja) * 1990-11-13 1992-06-25 Toshiba Corp データ統合装置
EP0650116B1 (en) * 1993-10-21 1998-12-09 Sun Microsystems, Inc. Counterflow pipeline processor
DE69430352T2 (de) 1993-10-21 2003-01-30 Sun Microsystems Inc., Mountain View Gegenflusspipeline
US5713025A (en) * 1993-10-21 1998-01-27 Sun Microsystems, Inc. Asynchronous arbiter using multiple arbiter elements to enhance speed
US6205538B1 (en) * 1994-08-24 2001-03-20 Sun Microsystems, Inc. Instruction result labeling in a counterflow pipeline processor
US6085316A (en) * 1998-07-28 2000-07-04 Sun Microsystems, Inc. Layered counterflow pipeline processor with anticipatory control
US6862670B2 (en) * 2001-10-23 2005-03-01 Ip-First, Llc Tagged address stack and microprocessor using same
JP2010039625A (ja) * 2008-08-01 2010-02-18 Renesas Technology Corp 並列演算装置

Also Published As

Publication number Publication date
EP2254040A2 (en) 2010-11-24
CN101894012A (zh) 2010-11-24
CN101894012B (zh) 2014-02-19
EP2254040A3 (en) 2011-04-27
US8452944B2 (en) 2013-05-28
US20100299498A1 (en) 2010-11-25
JP2011008773A (ja) 2011-01-13
EP2254040B1 (en) 2013-09-04

Similar Documents

Publication Publication Date Title
JP5580660B2 (ja) 情報処理装置、回路、情報処理方法、及びプログラム
US9417875B2 (en) Cooperative thread array reduction and scan operations
US8868838B1 (en) Multi-class data cache policies
US8405670B2 (en) Rolling texture context data structure for maintaining texture data in a multithreaded image processing pipeline
US8244984B1 (en) System and method for cleaning dirty data in an intermediate cache using a data class dependent eviction policy
US6831653B2 (en) Graphics pixel packing for improved fill rate performance
US6426753B1 (en) Cache memory for high latency and out-of-order return of texture data
US8135926B1 (en) Cache-based control of atomic operations in conjunction with an external ALU block
TWI474279B (zh) 繪圖處理系統、快取系統以及資料處理方法
US8108610B1 (en) Cache-based control of atomic operations in conjunction with an external ALU block
US8595437B1 (en) Compression status bit cache with deterministic isochronous latency
US8949541B2 (en) Techniques for evicting dirty data from a cache using a notification sorter and count thresholds
US8060700B1 (en) System, method and frame buffer logic for evicting dirty data from a cache using counters and data types
TW200933524A (en) Memory systems, memory accessing methods and graphic processing systems
US20110320719A1 (en) Propagating shared state changes to multiple threads within a multithreaded processing environment
US8131931B1 (en) Configurable cache occupancy policy
JP5627330B2 (ja) 情報処理装置、キャッシュ装置およびデータ処理方法
TW201337750A (zh) 多層指令快取預先擷取
JP4545242B2 (ja) ノンブロッキング・パイプライン・キャッシュ
US8539130B2 (en) Virtual channels for effective packet transfer
US8504773B1 (en) Storing dynamically sized buffers within a cache
US8234478B1 (en) Using a data cache array as a DRAM load/store buffer
JP5650441B2 (ja) 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
US8321618B1 (en) Managing conflicts on shared L2 bus
US8656093B1 (en) Supporting late DRAM bank hits

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130516

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 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140521

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: 20140613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140711

R151 Written notification of patent or utility model registration

Ref document number: 5580660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151