説明

データ供給装置、キャッシュ装置、データ供給方法、キャッシュ方法およびプログラム

【課題】 データ供給装置において、受信の際に必要となる記憶領域(受信領域)が大きい。またノンブロッキング動作のときに受信領域からデータを保持する記憶領域への転送が必要となる。データを保持する記憶領域(データ領域)と受信領域とを一体化し、受信領域からデータ領域への転送をなくし、装置全体の回路規模を抑制するための技術を提供する。
【解決手段】 フェッチ手段に備えられたデータを保持する記憶領域の一部に受信領域を割り当て、プリフェッチ手段の出力する情報に従い、受信領域の割り当てを更新してデータを取得しフェッチ手段からデータを供給する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・システムにおけるノンブロッキング動作を実現するためのデータ供給技術に関する。
【背景技術】
【0002】
近年、さまざまな機器において処理性能の向上と、より一層のコスト削減の両立が求められている。これらの機器には、ある種のコンピュータ・システムが搭載されており、コンピュータ・システムの製造コストあたりの処理性能は、機器の良否を決定する要因の一つと言える。
一般的にコンピュータ・システムにはアプリケーションを実行するプロセッサやデータ処理回路と、プログラムや処理対象となるデータを記憶するメモリ等の記憶装置で構成される。プロセッサやデータ処理回路が使用するプログラムやデータのすべてが、各々のプロセッサやデータ処理回路から高速に読み書きできる記憶装置を具備することが理想である。例えば、記憶装置としてはSRAM等のアクセス・レイテンシの比較的短いメモリ手段を、プロセッサやデータ処理回路の各々に専用のローカルメモリとして具備できれば、処理性能の向上を実現し易い。
しかしながら、機器を低コスト化するためには、多くのプロセッサやデータ処理回路で単一の記憶装置を共有し、搭載する記憶装置の個数を削減することが望ましい。また、搭載する記憶装置としてメモリを採用する場合、その時々で普及している安価なDRAMを使用することが多い。ただし安価なDRAMを使用すると前述のSRAMよりアクセス・レイテンシは長くなる。また多くのプロセッサやデータ処理回路で互いに単一の記憶装置を共有する場合、各々のプロセッサやデータ処理回路から記憶装置への読み書きが競合し、各々のアクセスを調停するため、プロセッサやデータ処理回路からのアクセス・レイテンシは長くなる。その結果、各々のプロセッサやデータ処理回路の処理性能は低下する。
前述のプロセッサやデータ処理回路の性能低下を抑えるために、各々のプロセッサやデータ処理回路と記憶装置との間にキャッシュ装置を設けることが多い。各々のプロセッサやデータ処理回路は、組み込んだキャッシュ装置から所望のデータが読み出せる間は、記憶装置にアクセス(データ要求)することはない。これにより各々のプロセッサやデータ処理回路からのアクセス(データ要求)の頻度が減り、必要となるアクセス帯域の総量を減らすことができる。当然、キャッシュ装置を設けることで回路規模は増加するが、上記のようにローカルメモリを専用に設けるよりは、回路規模は少なくてよい。このようにコンピュータ・システムに最適なキャッシュ装置を設けることで、機器を実現する際に求められる処理性能と低コストを両立することが可能となる。
キャッシュ装置に所望のデータが存在する場合(キャッシュヒットと言う)、記憶装置までアクセス(データ要求)する必要はなく、各々のプロセッサやデータ処理回路からのアクセス・レイテンシは短くなる。一方、キャッシュ装置に所望のデータが存在しない場合(キャッシュミスと言う)、当然ながら各々のプロセッサやデータ処理回路は記憶装置に所望のデータをアクセス(データ要求)する。このとき、アクセス・レイテンシはキャッシュ装置を設けない場合と同じである。一般的には、各々のプロセッサやデータ処理回路はデータを順番に処理するため、キャッシュミス時に記憶装置から所望なデータを読み出すまでの間、各々のプロセッサやデータ処理回路は一時停止する。当然ながら、プロセッサやデータ処理回路は、この一時停止により処理性能が低下する。このような動作をブロッキング動作という。またキャッシュミスのときに、データを読み出す行為をリフィル、読み出したデータをリフィル・データ、一度に読み出す単位をリフィル長、読み出す期間をリフィル・レイテンシという。
さらに処理性能を向上するため特許文献1は、上記のリフィル・レイテンシを隠蔽できるキャッシュ機構のデータ供給装置について言及している。特許文献1のパイプライン・プロセッサは、所定のパイプライン・ステージで行う処理のために必要なデータに対し、まず所定のパイプライン・ステージの前段(前処理)でキャッシュミスを評価する。そしてキャッシュミスのときは、この前段(前処理)で必要なデータを要求してリフィルを実行する。このとき、特許文献1のパイプライン・プロセッサは、リフィル・レイテンシより長い中間待ち行列(FIFO)をパイプライン・プロセッサ内部に備える。 そして特許文献1のパイプライン・プロセッサは、リフィル中の処理を含む後続の処理を、この中間待ち行例(FIFO)に順次格納していく。このように特許文献1のパイプライン・プロセッサは、この中間待ち行例(FIFO)に格納しながら次の処理のキャッシュミス/ヒットの評価を続けられるので前述のブロッキング動作のように、キャッシュミスの度に一時停止する必要がない。
一方、特許文献1のパイプライン・プロセッサは、キャッシュミスの度に必要とするデータを記憶装置から読み出し、キャッシュメモリに更新する前に、一旦 リフィル・データをフィルFIFOに格納することが必須となる。中間待ち行列(FIFO)の中にはキャッシュミスのデータ処理に先行する、キャッシュヒットのデータ処理があり、それらの処理を所定のパイプライン・ステージで終えなければ、キャッシュメモリを更新することはできない。そのため、特許文献1のパイプライン・プロセッサには、上記のフィルFIFOを必ず備える。このように中間待ち行例(FIFO)を用いて次のデータ処理のキャッシュミス/ヒット評価を行うような動作をノンブロッキング動作という。データ処理を行うコマンドは、中間待ち行列(FIFO)の中で遅延する。この遅延の間にリフィルが完了し、キャッシュミス時のリフィル・データがフィルFIFOにあれば、データ処理に際しフィルFIFOからリフィル・データを供給し、データ処理を実行できる。つまり、特許文献1のキャッシュ機構のデータ供給装置は、上記のような仕組みでキャッシュミス時のリフィル・レイテンシを隠蔽して一時停止することなくデータ処理を続けられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3846638号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら特許文献1の技術では、キャッシュメモリとは別に動作するリフィル・データを一旦、格納するためのフィルFIFOが必要となる。
本発明の目的は、処理性能を維持しながら、回路規模を削減することである。
【課題を解決するための手段】
【0005】
上記目的を達成するため、本発明に係るデータ供給装置は、出力手段と、前記出力手段にデータを保持する記憶領域を備え、前記出力手段に当該記憶領域のデータを供給するフェッチ手段と、前記出力手段がデータを要求する前に、前記出力手段に供給すべきデータを外部に要求するプリフェッチ手段と、を備えるデータ供給装置であって、前記フェッチ手段は、前記記憶領域の一部を外部より供給されるデータを受信領域に格納し、前記プリフェッチ手段の要求に応じて当該要求に対応するデータを保持している受信領域を送信領域として割り当て、前記出力手段は前記フェッチ手段によって送信領域として割り当てられた領域のデータを出力することを特徴とする。
【発明の効果】
【0006】
本発明によれば、ノンブロッキング動作で動作する装置にデータを供給するデータ供給装置について、処理性能を維持しつつフィルFIFOを削減し回路規模を低減できる。
【図面の簡単な説明】
【0007】
【図1】第1実施形態の処理装置の一例を示すブロック図である。
【図2】第1実施形態のキャッシュ判定部の一例を示すブロック図である。
【図3】第1実施形態のデータ取得部の処理の一例を示すフローチャートである。
【図4】第1実施形態のキャッシュメモリの動作の一例を示す遷移図である。
【図5】第2実施形態のキャッシュ判定部の一例を示すブロック図である。
【図6】第2実施形態のデータ供給装置の一例を示すブロック図である。
【図7】第2実施形態のキャッシュメモリの一例を示すブロック図である。
【図8】第2実施形態のデータ取得部の処理の一例を示すフローチャートである。
【図9】ブロッキング動作をする処理装置の一例を示すブロック図である。
【発明を実施するための形態】
【0008】
まず、前述の特許文献1について説明を補足する。特許文献1の技術では、キャッシュメモリとは別に動作するリフィル・データを一旦、格納するためのフィルFIFOが必要となる。
【0009】
前述のようにキャッシュデータの読み書き先である記憶装置には、安価なDRAMを搭載する。一般的にDRAMへの読み書きは、ある程度の連続した記憶領域を一度にデータ要求(バースト・アクセス)する方がメモリ帯域の効率が良い。そのため、DRAMへのアクセス単位は、このバースト・アクセスによる読み書き単位が望ましい。DRAMを製造するときの半導体プロセスの微細化と製品ニーズから、DRAMは製造世代と共に内部動作周波数は年々高くなっている。当然、このバースト・アクセスによる読み書きの単位も、年々大きくなる傾向がある。高性能を要求する製品ニーズから、今後もDRAMの読み書きの単位が大きくなり続けると予想される。
【0010】
キャッシュ装置では、1つのキャッシュタグ(キャッシュアドレス)に対応するキャッシュデータ(キャッシュライン)を、このバースト・アクセスによる読み書き単位の整数倍に合わせることが多い。1つのキャッシュミスに対応する、前記リフィル・データの読み書き単位(リフィル長)は、当然ながら、このキャッシュラインと同容量となる。例えば、上記のDRAMとの関係でリフィル・データの読み書き単位は32バイト〜128バイトに及ぶ。
【0011】
前述のフィルFIFOは、先の中間待ち行列(FIFO)の中にある、キャッシュミスのコマンド数に対応したリフィル・データを十分格納する容量が必要となる。組み込み機器では、前記リフィル・レイテンシは数十サイクルから数百サイクルに及ぶので、中間待ち行列(FIFO)の段数もそれに準ずる。例えば、キャッシュヒット率が75%の場合、中間待ち行列(FIFO)の25%はキャッシュミスとなる。中間待ち行列(FIFO)が128段なら、フィルFIFOは、128段の25%である32段が必要となる。先ほどのリフィル・データの読み出し単位を考慮するとフィルFIFOは1Kバイト〜4Kバイトの容量となり、組込み機器において無視してよいほど小さいとは言えない。
【0012】
特許文献1の技術のキャッシュ装置では、
1)プリフェッチ論理でキャッシュヒット/ミス評価で使用するキャッシュタグの記憶領域、
2)中間待ち行列(FIFO)の記憶領域、
3)フェッチ論理のフィルFIFOの記憶領域、
4)フェッチ論理のキャッシュデータを格納するキャッシュメモリの記憶領域、
が必要となる。前述の説明の通り、このうち回路規模に大きな影響を与えるのは、リフィル長の大きな「3)フィルFIFO」と、「4)キャッシュメモリ」であり、特許文献1のように「3)フィルFIFO」と、「4)キャッシュメモリ」が別のハードウエア構成として存在すると回路規模が増加してしまう。なお、「2)中間待ち行列」は、FIFO段数は多いものの、キャッシュヒット/ミス評価結果のフラグとキャッシュメモリの格納先のアドレスを伝搬するだけでよく、後述するようにFIFOそのもののデータ長は、リフィル長に比べ非常に小さい。
【0013】
<第1実施形態>
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【0014】
キャッシュ装置を組み込んだ処理装置と、このキャッシュ装置について詳細説明する。
【0015】
(処理装置)
図1は、第1実施形態による処理装置の全体構成の一例を示すブロック図である。処理装置には、CPU160、外部の記憶装置(外部メモリ)であるDRAM165、DRAMコントローラ166とシステムバス164が含まれる。また、DRAM165に対するデータの読み書きのために、データ読み出し用のDMAC(Direct Memory Access Controller)であるRDMAC162とデータ書き込み用のWDMAC163も含まれる。また処理装置には、画像処理などのデータ処理を行うデータ処理装置101と、本発明のキャッシュ装置110が含まれる。なおデータ処理装置に含める処理装置の数は任意であり、処理装置の各々は、高速に固定処理するパイプライン回路で構成されていてもよいし、低速ではあるが、柔軟に処理内容を変更可能なプロセッサとプログラムで構成されていてもよい。
【0016】
CPU160は、制御バス161を介してRDMAC162、WDMAC163、データ処理装置101を制御し、処理装置全体を統括制御する。CPU160の指示によりRDMAC162は、システムバス164、DRAMコントローラ166を介してDRAM165に格納された画像やプログラムなどのデータを読み出し、データ処理装置101に入力する。データ処理装置101は、所望のデータ処理を行い、処理結果の画像などのデータをWDMAC163に送り出す。このとき、WDMAC163は予めCPU160から指示されており、データ処理装置101から受け取ったデータをシステムバス164、DRAMコントローラ166を介してDRAM165に格納する。処理装置は、前述の一連の動作を実行することにより画像処理等のデータ処理を実施するのである。
【0017】
前述のデータ処理の過程で、データ処理装置101は、接続されたキャッシュ装置110を介して、DRAM165から各種必要な対象データ(画像、映像、設定値、テーブル、属性情報など)を読み出してデータ処理に使用できる。またデータ処理装置101がプロセッサとプログラムで構成されている場合、キャッシュ装置110を介してプログラムを逐次的に読み出して処理を実行することも可能である。
【0018】
(データ供給装置)
次にデータ供給装置(キャッシュ装置)の動作について詳細説明する。前述のデータ処理装置101は、データ供給装置(キャッシュ装置)を介してDRAM165からデータを読み出すときに、DRAM165上のデータの格納アドレス113を、I/F112を介してキャッシュ判定部120に入力する。そして入力された格納アドレス113をもとにキャッシュ判定部120でキャッシュヒットもしくはキャッシュミスが判定される。
【0019】
(キャッシュ判定部)
さらに図2を用いて図1記載の処理装置のキャッシュ判定部120の回路構成の一例について詳細説明する。第1実施形態では、連想(ライン選択)方式がフルアソシアティブ方式のキャッシュ装置について説明する。
【0020】
前述の格納アドレス113がキャッシュ判定部120へ入力される。キャッシュ判定部120には、8個のキャッシュタグ230が記憶されており、8ノードのフルアソシアティブ方式のキャッシュ装置となる。また8個のキャッシュタグ230には、[0]〜[7]の番号が予め定められており、対応するキャッシュメモリの「相対」キャッシュライン番号を示している。「相対」番号である理由は後述する。入力された格納アドレス113と8個のキャッシュタグ230は、8個の比較器220で、「一致」が判定される。そして比較器220から8個の比較結果228が判定器250に出力される。
【0021】
8個の比較結果228のうち、1つでも「一致」であれば、キャッシュヒットと評価される。8個の比較結果228のうち、いずれも「一致」でなければ、キャッシュミスと評価される。評価結果はキャッシュミス・フラグ240として、キャッシュ判定部120から出力される。
【0022】
評価結果がキャッシュヒットの場合、「一致」したキャッシュタグの「相対」ライン番号が、ライン番号245としてキャッシュ判定部120から出力される。
【0023】
また評価結果が、キャッシュミスの場合(分岐255のYES)、入力された格納アドレス113がキャッシュタグ230へ書き込まれ、キャッシュタグが更新される。キャッシュタグ230は、シフトレジスタで構造された記憶領域である。評価結果がキャッシュミスの場合、シフト動作によりキャッシュタグの値が下流のキャッシュタグに移動する。つまり、キャッシュタグ[0]にはキャッシュタグ[1]の値が、キャッシュタグ[1]にはキャッシュタグ[2]の値が各々書き込まれる。同様の書き込みが繰り返され、キャッシュタグ[6]にはキャッシュタグ[7]の値が書き込まれる。そして最後にキャッシュタグ[7]に格納アドレス113の値が書き込まれる。評価結果がキャッシュミスの場合、上記のようなキャッシュタグの更新が行われ、ライン番号245としてライン[7]の値がキャッシュ判定部120から出力される。
【0024】
このように必ず古いキャッシュタグ[0]のタグ情報が破棄される、キャッシュタグのリプレイス手法を、「FIFO方式(ラウンドロビン方式)」という。フルアソシアティブ方式のキャッシュ装置では、装置を簡単に実現できるので、リプレイス手法として「FIFO方式(ラウンドロビン方式)」を採用することが多い。
【0025】
最後にキャッシュ判定部120は、上記のように求めたキャッシュミス・フラグ240とライン番号245に、入力された格納アドレス113を合わせてキャッシュ判定結果125として出力する。
【0026】
本実施形態の処理装置では、キャッシュミス時のペナルティであるリフィル・レイテンシを隠蔽するためにノンブロッキングのキャッシュ機構を採用している。これは、たとえキャッシュ判定結果125がキャッシュミスと判定されても、後に必要となる情報「ライン番号、キャッシュミス・フラグ」135を中間待ち行列(FIFO)140に退避する。そして、キャッシュミスのキャッシュデータをDRAM165から読み出し、キャッシュメモリ190へ格納する処理が完了する前に、次のデータのキャッシュ判定処理を先行して実行する。このような処理を行うことでキャッシュミスのキャッシュデータをDRAM165からキャッシュメモリ190へリフィルしている間にも、続くデータに対するキャッシュ判定処理を行うことができる。したがって、キャッシュのキャッシュミス時の性能低下を抑制することが可能となる。
【0027】
なお「アクセス調停部」の説明で後述するように、アクセス調停部130は、キャッシュミスのときにキャッシュ判定結果125の中から格納アドレス113に相当する格納アドレス132を取り出し送信FIFO150へ順次記憶する。DRAMコントローラ166は、この送信FIFO150から格納アドレス132を受け取り、所望のデータ(リフィル・データ)をDRAM165から読み出して、キャッシュメモリ190へ書き込んでいく。データ取得部180は、中間待ち行列(FIFO)140から「キャッシュミス・フラグ」を取り出して、キャッシュ判定の結果がキャッシュミスであったかキャッシュヒットであったかを特定する。データ取得部180は、キャッシュ判定の結果がキャッシュヒットのとき、キャッシュデータ185をキャッシュメモリ190から直接読み出してI/F116へ送り出す。一方、キャッシュ判定の結果がキャッシュミスのとき、「データ取得部」で後述するように、所望のキャッシュデータを更新する。そして、このキャッシュデータ185をI/F116へ送り出す。このようなキャッシュミスしたキャッシュデータをDRAM165から読み出して、キャッシュメモリ190に更新する、一連の処理が前述のリフィルである。
【0028】
(アクセス調停部)
アクセス調停部130は入力されたキャッシュ判定結果125が有効のとき動作し、それ以外は待機する。そしてアクセス調停部130は、キャッシュ判定の結果「キャッシュミス・フラグ」が有効/無効に応じて以下の処理を行う。
・キャッシュ判定の結果「キャッシュミス・フラグ」が有効(キャッシュミス)のとき、まず接続される2つのFIFOである、送信FIFO150、中間待ち行列(FIFO)140の格納領域の空き状態を評価する。さらにデータ取得部180からのプリフェッチ許可信号181の状態を評価する。2つのFIFOすべてに空き領域があり、プリフェッチ許可信号181の状態が「許可」である場合、「ライン番号、キャッシュミス・フラグ」135を中間待ち行列(FIFO)140に書き込む。また同時に、格納アドレス132を送信FIFO150に書き込む。2つのFIFOに空き領域がない、もしくはプリフェッチ許可信号181の状態が「許可」でない場合は、キャッシュ判定部120を停止(ストール)する。そして、2つのFIFOの格納領域が空き、かつ、プリフェッチ許可信号181の状態が「許可」になるまで待機する。
・キャッシュ判定の結果「キャッシュミス・フラグ」が無効(キャッシュヒット)のとき、中間待ち行列(FIFO)140の空き状態を評価する。そして記憶領域に空きがあれば、「ライン番号、キャッシュミス・フラグ」135を中間待ち行列(FIFO)140に書き込む。記憶領域に空きがなければ、キャッシュ判定部120を停止(ストール)し、格納領域が空くまで待機する。本実施形態の一例では、中間待ち行列(FIFO)140に格納する、「キャッシュミス・フラグ」は1ビット信号であり、「ライン番号」は3ビット信号でよいため、中間待ち行列(FIFO)140のデータ長は高々4ビット長となる。たとえ中間待ち行列(FIFO)140が128段あったとしても64バイトの容量でよく、大きな記憶容量とは言えない。それ故、フルアソシアティブ方式のキャッシュタグのノード数や中間待ち行列(FIFO)の段数を増やすことは容易であり、中間待ち行列(FIFO)140が制約となることはない。
【0029】
なお、上記で説明した「キャッシュ判定部」と「アクセス調停部」は、これから説明する「データ取得部」に対応したプリフェッチ構成(装置/回路/論理)となっている。そして、「キャッシュ判定部」と「アクセス調停部」は、データを必要とする所定のパイプライン・ステージに対し、先行するパイプライン・ステージと繋がり、所定のパイプライン・ステージに対する前処理にある。
【0030】
(データ取得部)
データ取得部180は中間待ち行列(FIFO)140の格納領域に処理すべきデータがあるかどうかを評価する。中間待ち行列(FIFO)140が空の場合は処理すべきキャッシュ判定結果がないため、データ取得部180は当然ながら待機する。データ取得部180は、中間待ち行列(FIFO)140から処理すべきキャッシュ判定の評価結果である「ライン番号、キャッシュミス・フラグ」を取り出す(S305)。そして評価結果であるキャッシュミス・フラグの値に応じて次のキャッシュデータの取得動作を行う。図3(a)にデータ取得部180のキャッシュデータの取得動作の一例を示す。図4(a)に示すように本発明のキャッシュメモリ190は、「データ領域(送信領域、キャッシュ領域)」と「受信領域」を含んで構成される。そして、受信領域を管理する情報(受信ポインタ)と、データ領域を管理する情報(データポインタ)とをデータ取得部に備える。
・キャッシュミス・フラグが無効(キャッシュヒット)のときは、中間待ち行列(FIFO)140から同時に取り出したライン番号とキャッシュメモリ190の受信ポインタとデータポインタからキャッシュデータの格納アドレスを算出する。そして、その格納アドレスをもとに記憶済みのデータをキャッシュメモリ190からリードデータ192として読み出す(S360)。そして、要求されたキャッシュデータ185を、I/F116を介して処理装置101に送出する(S365)。なお、格納アドレスの算出方法については後述する。
【0031】
キャッシュミス・フラグが有効(キャッシュミス)のとき、データ取得部180は受信ポインタとデータポインタの差を確認する(S340)。両ポインタに差がない(0の値)のとき(S340のNO)、DRAM165からの要求されているリフィル・データがキャッシュメモリ190に届いていないと評価し、リフィル・データが届くまで待機する(S345)。両ポインタに差がある(0ではない値)のとき(S340のYES)、DRAM165からの要求されているリフィル・データがキャッシュメモリ190に格納済みのためデータポインタを更新する(S350)。ここからキャッシュデータ185の出力までの手順は、前記のキャッシュミス・フラグが無効(キャッシュヒット)の手順と同様となる。
【0032】
データ取得部180では、前述のキャッシュデータの取得動作とは並行して、要求されたリフィル・データの受信動作を行っている。図3(b)にデータ取得部180のリフィル・データの受信動作の一例を示す。DRAM165からの要求されているリフィル・データがデータ取得部180に届いた場合(S380のYES)、受信ポインタを更新する(S385)。次にデータ取得部180は受信ポインタとデータポインタの差を確認する(S390)。両ポインタに差が予め定められた受信の閾値と同数であるとき(S390のYES)、これ以上、リフィル・データを受信することができないので、プリフェッチ許可信号181を「禁止」にする(S394)。両ポインタに差が予め定められた受信の閾値より小さいとき(S390のNO)、DRAM165からリフィル・データを受け取ることができるので、プリフェッチ許可信号181は「許可」のままでよい(S392)。
【0033】
回路実装では、アクセス調停部130の方がデータ取得部180より前段にある。それ故、データ取得部180からのプリフェッチ許可信号181を受け取ってから、アクセス調停部130でDRAMへのアクセス(データ要求)を止めても遅いケースがある。このような回路の位置関係からくるレイテンシの違いを考慮して、前記の受信の閾値を、予め記憶できる受信段数より少なく設定してもよい。また、より厳密な手法としては、リフィル待ち数を新たに定義し、このリフィル待ち数を用いてプリフェッチ許可信号181を生成してもよい。新たに定義するリフィル待ち数とは、0から開始し、アクセス調停部130でキャッシュミスの度に1を加算し、データ取得部にリフィル・データが到着する度に1を減算した数とする。
【0034】
つまり、リフィル待ち数とは、データ要求を行ったが、まだフェッチ構成に到達していないリフィル・データの数を表している。そして、受信済みのリフィル・データ数(受信ポインタとデータポインタの差)とリフィル待ち数の合計値が将来受信するリフィル・データ数となる。この将来受信する数が受信の閾値より小さい場合、プリフェッチ許可信号181は「許可」とし、将来受信する数が受信の閾値と同じ数であればプリフェッチ許可信号181は「禁止」とするのである。
【0035】
(データ取得部とキャッシュメモリの動作例)
図4(b)を用いてキャッシュメモリ調停回路180とキャッシュメモリ190の具体的な動作の一例について説明する。
【0036】
まず、状態[0]はリセット直後の初期状態を示している。初期状態では受信領域の開始を示す受信ポインタは「0」の値である。またデータ領域の上端を示すデータポインタは「0」での値である。この動作の一例では、受信領域は4段、データ領域は8段となっている。キャッシュメモリ190は合計12段の記憶領域となっている。記憶領域には図面の下側から上側に向かて「0」から「11」の番号が記載されており、キャッシュメモリ190のアドレスを示している。また記憶領域の1段は、1回のDRAMアクセス(データ要求)に対応するリフィル・データ(リフィル長)を格納できる記憶領域であり、1キャッシュラインに相当する。
【0037】
次にアクセス調停部130で1回のミスヒット評価による1回のリフィル要求があり、そのリフィル・データがデータ取得部180に届いたとき([A]リフィル・データを1つ受信)、キャッシュメモリ190は状態[1]になる。状態[1]では、図3(b)の動作手順に従い、1つのリフィル・データがキャッシュメモリに格納される。そして、受信ポインタが「1」の値となる。データポインタは「0」の値のままであり、受信ポインタとデータポインタの差は「1」の値となる。この差は受信数を表しており、受信領域は4段であったので残りの受信領域は3段となる。
【0038】
次に中間待ち行列(FIFO)140を介してキャッシュミスのデータがキャッシュ調停部180に入力され([B]キャッシュミスが1回発生)、キャッシュメモリ190は状態[2]となる。状態[2]では、図3(a)の動作手順に従い、1つのキャッシュデータが有効となる。そして、データポインタが「1」の値となる。データポインタはデータ領域の上限を示しており、データポインタの位置は仮想的にデータ領域のライン番号「8」に相当すると定義する。データポインタが「1」となった状態[2]のケースでは、有効化されたキャッシュデータはキャッシュメモリ190のアドレス「0」の領域にある。データポインタの指し示す「1」がライン番号「8」に相当するのに対応して、このアドレス「0」の領域は、ライン番号「7」(=8−1)を指示している。前述の「キャッシュ判定部」の説明で判定の結果がキャッシュミスのときのライン番号が「7」になると説明した動作に合致している。このとき、前述のリフィル・データを受け取った受信領域の一部が、データ領域に置き換わることとなる。
【0039】
キャッシュメモリ190はリング式FIFOと同様に、アドレス「11」とアドレス「0」に連続していると考える。アドレス「0」の領域がライン番号「7」に対応している規則と同様に、アドレス「11」の領域はライン番号「6」を示している。 さらにアドレス「10」の領域はライン番号「5」を示している。同様の規則を繰り返し、アドレス「5」の領域がライン番号「0」を示している。データ領域はアドレス「5」からアドレス「11」を経てアドレス「0」の領域までとなる。
【0040】
そして残りのアドレス「1」からアドレス「4」までの領域が受信領域となる。状態[2]では、受信ポインタとデータポインタの値が同一となり、受信済みのリフィル・データが格納済みのキャッシュデータに変わることで受信領域が1段回復している。つまり、受信領域の一部とデータ領域の一部が置き換わり(交換され)、キャッシュメモリに対する受信領域の割り当てが更新されている。
【0041】
さらにアクセス調停部130で4回のミスヒット評価が連続し、4回のリフィル要求の後、その4つのリフィル・データがデータ取得部180に届いたとき([C]リフィル・データを4つ受信)、キャッシュメモリ190は状態[3]になる。状態[3]では、4つのリフィル・データがキャッシュメモリに格納される。そして、受信ポインタが「5」の値となる。データポインタは「1」の値のままであり、受信ポインタとデータポインタの差は「4」の値となる。この差は受信数を表しており、受信領域は4段であったので残りの受信領域は0段となる。説明を簡単にするために前述の受信の閾値は、受信領域の数「4」と同じ設定とする。このとき、受信数と受信の閾値は同じ値であるので、これ以上、リフィル・データを受け取ることはできない。そのため、キャッシュ調停部180は、プリフェッチ許可信号181を「禁止」にしてアクセス調停部130に通知し、ノンブロッキング・アクセスを一旦、停止する。プリフェッチ構成は、記憶装置へのデータ要求を止めることとなる。
【0042】
さらに、4つのキャッシュミスのデータがキャッシュ調停部180に連続して入力され([D]キャッシュミスが連続4回発生)、キャッシュメモリ190は状態[4]となる。状態[4]では、4つのキャッシュデータが有効となる。そして、データポインタが「5」の値となる。データ領域は残り3段となる。
【0043】
さらに、[E]リフィル・データを4つ受信し、状態[5]を経て、[F]キャッシュミスが連続4回発生し、状態[6]となる。状態[6]では、受信ポインタとデータポインタは共に「9」の値であり、データ領域はアドレス「1」から「8」までとなり、受信領域はアドレス「9」からアドレス「11」を経てアドレス「0」までとなる。状態[5]から状態[6]に至るまでの過程で、データ領域の残りは0段となっており、これ以降、データ領域の8段すべてには何かしら有効なキャッシュデータが格納されている。また状態[6]では、状態[2]でアドレス「0」に格納されていたキャッシュデータは、データ領域の外側の受信領域に存在することになる。このキャッシュデータはもともと最も古く、状態[5]から状態[6]までの一連の動作の過程で、データ領域から破棄されたことになる。古いキャッシュデータから順に置き換えられるのでFIFO方式(ラウンドロビン方式)のリプレイス手法と合致する。 このように受信領域の一部がデータ領域に置き換わり、データ領域の一部が受信領域に置き換わり(交換され)、結果として受信領域の割り当てが更新されている。
【0044】
これまで説明した動作と同様により、キャッシュメモリ190は、動作[G]、動作[H]に対応して状態[7]、状態[8]へと遷移する。
【0045】
なお、図4(b)の状態[3]において、受信数が受信の閾値となったためノンブロッキング動作を停止すると説明した。しかしながら、状態[0](初期状態)から状態[3]までの間は、データ領域には有効なキャッシュデータが保持されているわけではない。つまり、状態[0](初期状態)からすべてのデータ領域が一度有効なキャッシュデータで埋まるまでの間は、受信の閾値を4段ではなく12段とし、初期状態の受信領域を増加させる。このような工夫により、初期時のノンブロッキング動作の停止を抑制し、性能をさらに向上することができる。このようなことができるのは、受信領域とデータ領域を一体化したからに他ならない。
【0046】
以上、説明した「データ取得部」は要求されたデータを取得する、フェッチ構成(装置/回路/論理)となっている。そして、取得したデータを所定のパイプライン・ステージにデータ供給する。
【0047】
本実施形態のキャッシュ装置によれば、簡単な構成によって、ノンブロッキング動作のフルアソシアティブ方式のキャッシュ装置を実現できる。また従来技術では、ノンブロッキング動作のためにキャッシュメモリとは別に受信用のフィルFIFOを備える必要があったが、本発明の手法ではキャッシュメモリの領域の一部を受信領域に割り当てることでフィルFIFOを備える必要がない。一般的に、ある記憶領域を内蔵SRAMで実現するとき、同容量の記憶領域に対して1つの内蔵SRAMで構成する場合より、複数の内蔵SRAMに分割して構成する方が回路規模は増大する。本発明の手法では、従来技術で言うところのフィルFIFOとキャッシュメモリを1つの内蔵SRAMで構成できるのでキャッシュ装置の回路規模を小さく抑えることができる。
【0048】
また従来技術では、キャッシュミス時にリフィル・データをフィルFIFOに一旦書き込み、さらにフィルFIFOから読み出してキャッシュメモリに再び書き込み、キャッシュデータとして利用する。従来技術では少なくとも、フィルFIFOとキャッシュメモリに2回の書き込みと1回の読み出しが必要となる。本発明の方法では、データ受信とデータ保持が一つの記憶領域に統合されているので、キャッシュミス時に記憶領域に対し、1回の書き込みと1回の読み出しでよい。本発明の手法をハードウエアで実現する場合、内蔵SRAMの制御回路も簡易化が可能である。また本発明の手法をソフトウエアで実現したとしても、記憶領域へのアクセス回数が少なくてよいので、処理の高速化が可能となる。
【0049】
本発明の主旨は、キャッシュメモリに受信領域を統合して、キャッシュメモリへのアクセス回数を削減することである。そのため、本実施形態のように受信ポインタとデータポインタを用いてキャッシュメモリと受信領域を関係付ける方法である必要はなく、キャッシュメモリと受信領域を関係付けるための対応表(リンクテーブル)を別途記憶し、プリフェッチ手段の情報に従い、対応表(リンクテーブル)を更新する関連付け方法でも良い。
【0050】
また、本実施形態はFIFO方式(ラウンドロビン方式)を採用しているフルアソシアティブ方式のキャッシュ装置にも適用できる。
【0051】
<第2実施形態>
(データ供給装置)
次にフルアソシアティブ方式とは異なる連想(ライン選択)方式である、ダイレクトマップ方式やセットアソシアティブ方式に本発明のデータ供給方法を適用した場合の動作について詳細説明する。第1実施形態ではフルアソシアティブ方式の連想(ライン選択)方式を採用していたため、一般的な実装方法ではキャッシュタグをレジスタで構成することになる。そのため、あまり大きな数のキャッシュタグ数に対応するとキャッシュタグの回路規模が大きくなる課題がある。ダイレクトマップ方式やセットアソシアティブ方式の利点は、キャッシュタグをSRAM等の記憶装置(タグメモリ)で構成することで回路規模を抑えられる点にある。もちろんダイレクトマップ方式やセットアソシアティブ方式においてもキャッシュタグをレジスタで構成できることは言うまでもない。
【0052】
なお、第1実施形態と本実施形態との主な違いである「キャッシュ判定部」と「データ取得部」について詳細説明し、第1実施形態と同様の動作については以降での説明を割愛する。
【0053】
(ダイレクトマップ方式のキャッシュ判定部)
図5(a)を用いて図1記載の処理装置のキャッシュ判定部120の回路構成の一例について詳細説明する。
【0054】
前述の格納アドレス113がキャッシュ判定部120へ入力される。キャッシュ判定部120には、N個のキャッシュタグ530がタグメモリ(SRAM)に記憶されており、Nラインのダイレクトマップ方式のキャッシュ装置となる。またN個のキャッシュタグ530には、[0]〜[N−1]の番号が予め定められており、対応するキャッシュメモリのキャッシュライン番号を示している。まず格納アドレス113のうち、前述のキャッシュタグ[0]〜[N−1]の番号に対応する信号を抜き出し、下位アドレス515とする。そして残りの値を表現できる信号を抜き出し、上位アドレス512とする。次に下位アドレス515を用いてキャッシュタグ530から対応するキャッシュタグ[k]535を読み出す。そして比較器520を用いて上位アドレス512とキャッシュタグ535の「一致」を判定する。比較器520から1個の比較結果528が判定器550に出力される。比較結果528が「一致」であれば、キャッシュヒットと評価される。比較結果528が「一致」でなければ、キャッシュミスと評価される。評価結果はキャッシュミス・フラグ240として、キャッシュ判定部120から出力される。
【0055】
また評価結果が、キャッシュミスの場合(分岐555のYES)、格納アドレス113がキャッシュタグ530へ書き込まれ、キャッシュタグが更新される。なお、ダイレクトマップ方式の場合、キャッシュタグは1個しかないため、リプレイス手法について考える必要はない。第1実施形態とは異なり、評価結果がキャッシュヒットの場合もキャッシュミスの場合も下位アドレス515の値がライン番号245としてキャッシュ判定部120から出力される。
【0056】
以上の説明から明らかなようにキャッシュ判定部120には一般的なダイレクトマップ方式のキャッシュ判定構成(装置/回路/論理)を用いて差し支えない。
【0057】
(セットアソシアティブ方式のキャッシュ判定部)
同様に図5(b)を用いて図1記載の処理装置のキャッシュ判定部120の回路構成の一例について詳細説明する。多くの動作は前述のダイレクトマップ方式のキャッシュ判定部と同じである。図5(b)は4ウェイ・セットアソシアティブ方式の一例であり、ダイレクトマップ方式と異なる点について言及する。
【0058】
キャッシュ判定部120には、4×N個のキャッシュタグ530がタグメモリ(SRAM)に記憶されており、Nラインの4ウェイ・セットアソシアティブ方式のキャッシュ装置となる。またN個のキャッシュタグ530には、[0][*]〜[N−1][*]の番号が予め定められており、対応するキャッシュメモリのキャッシュライン番号を示している。また[*]はウェイ番号を示し、本実施形態では4ウェイのため[*]には[0]から[3]の値が入る。下位アドレス515を用いてキャッシュタグ530から対応する4個のキャッシュタグ[k][0]〜[k][3]535を読み出す。そして4個の比較器520を用いて上位アドレス512と4個のキャッシュタグ[k][0]〜[k][3]535の各々について「一致」を判定する。4個の比較器520から、4個の比較結果528が判定器550に出力される。4個の比較結果528のうち1つでも「一致」であれば、キャッシュヒットと評価される。また4個の比較結果528が何れも「一致」でなければ、キャッシュミスと評価される。評価結果はキャッシュミス・フラグ240として、キャッシュ判定部120から出力される。
【0059】
また評価結果が、キャッシュミスの場合(分岐555のYES)、FIFO方式(ラウンドロビン方式)のリプレイス手法を用いて最も古いウェイ番号を選択する。そして、そのウェイ番号のキャッシュタグのみ格納アドレス113と差し換え、その他のウェイ番号のキャッシュタグはそのままの値で、キャッシュタグ530が更新される。
【0060】
以上の説明から明らかなようにキャッシュ判定部120には、一般的なセットアソシアティブ方式のキャッシュ判定構成(装置/回路/論理)を用いて差し支えない。
【0061】
(データ取得部)
まず、図6を用いて第1実施形態と異なる本実施形態のデータ供給装置(キャッシュ装置)の特徴について言及する。本実施形態では、キャッシュミスで記憶装置に所望のデータを要求する際、ライン番号用の中間待ち行列(FIFO)645にキャッシュミス時のライン番号を格納する。そして、データ取得部180は、この中間待ち行例(FIFO)645を介し、キャッシュミス時のリフィル・データのキャッシュメモリへの格納先を示すライン番号を取得する。なお、この中間待ち行列(FIFO)645に空きがない場合、当然ながらアクセス調停部130は停止(ストール)する。
【0062】
また図7を用いて本実施形態のキャッシュメモリ190の一例について説明する。この一例では同容量の記憶領域を、ダイレクトマップ方式に対応した場合(図7(a)記載)と、4ウェイ・セットアソシアティブ方式に対応した場合(図7(b)記載)の2種の連想(ライン選択)方式に対応できることを説明している。この一例では、1つのキャッシュラインに対して8個の格納先が予め割り当てられている。ダイレクトマップ方式では7個の受信領域と1個のデータ領域が割り当てられており、4ウェイ・セットアソシアティブ方式では4個の受信領域と4個のデータ領域が割り当てられている。本実施形態のキャッシュメモリは、必ず1つのキャッシュラインに対して複数の格納先を持ち、データ取得部180への外部からのレジスタ設定等により、複数の格納先を受信領域とデータ領域に分配できる仕組みを持つ。一例では、まず、ダイレクトマップ方式のデータ領域は格納先1個とし、4ウェイ・セットアソシアティブ方式のデータ領域は格納先4個のように、アドレス1つにつき連想するキャッシュタグの数に合わせてデータ領域の格納先を割り当てる。 そして残りの格納先を受信領域とする。このように受信領域とデータ領域の分配を変更することで、同一のキャッシュメモリを異なる連想(ライン選択)方式に対応させている。キャッシュ判定部120を、連想(ライン選択)方式の異なる種々の判定回路に置き換えても、データ取得部180とキャッシュメモリ190は変更することなく使用できる。なお、記憶領域から連想(ライン選択)方式に応じたデータ領域を割り当てるが、残りの記憶領域に対しては、少なくとも1つの記憶先を受信領域に割り当てればよい。必ずしも残りの記憶領域すべてを受信領域に割り当てる必要はなく、受信ポインタとデータポインタの算出を工夫して、余った格納先を別用途で使用してもよい。
【0063】
次にデータ取得部180のキャッシュデータの取得動作の一例を図8(a)に示し、リフィル・データの受信動作の一例を図8(b)に示す。まず図7に示すように、本実施形態のデータ取得部180はキャッシュライン毎に受信ポインタとデータポインタを備える。そこで、データ取得動作やリフィル・データ受信動作において、最初に関連するライン番号から、対応する受信ポインタとデータポインタを選択する必要がある。例えば、データ取得動作においてデータ取得部180は、中間待ち行列(FIFO)140から処理すべきキャッシュ判定結果である「ライン番号、キャッシュミス・フラグ」を取り出す(S805)。そして、ライン番号を基に対応する受信ポインタとデータポインタを取得する(S802)。また、リフィル・データ受信動作においてデータ取得部180は、キャッシュミスに関するライン番号用の中間待ち行列(FIFO)645から関連するライン番号を取り出す(S882)。そして、そのライン番号を基に対応する受信ポインタ取り出し、更新する(S885)。
【0064】
対応する受信ポインタとデータポインタを選択した後のデータ取得動作やリフィル・データ受信動作は、第1実施形態と同様の動作でよい。
【0065】
(データ取得部とキャッシュメモリの動作例)
上記のような手法でライン番号が取り出され、キャッシュメモリ上の記憶領域がライン番号により定まった後は、アドレス算出を始め、受信ポインタやデータポインタの関係など第1実施形態と同様の動作でよい。
【0066】
なお、データ取得部180からアクセス調停部130へのプリフェッチ許可信号681は、すべてのキャッシュラインに対応した受信ポインタとデータポインタから算出される1ビットの許可信号をキャッシュライン分、束ねた信号となる。この点が、第1実施形態とは異なるため注意が必要である。
【0067】
なお、セットアソシアティブ方式の連想(ライン選択)方式は、第1実施形態と同様にFIFO(ラウンドロビン)方式のリプレイス手法となる。しかしながら、ダイレクトマップ方式の連想(ライン選択)方式は、連想数が1個であるため、FIFO(ラウンドロビン)方式のリプレイス手法とは呼ばない。 ダイレクトマップ方式の連想(ライン選択)方式は、この点が他の連想(ライン選択)方式と異なるため注意が必要である。
以上、説明した「データ取得部」は、ダイレクトマップ方式やセットアソシアティブ方式の連想(ライン選択)方式に対応して、要求されたデータを取得する、フェッチ構成(装置/回路/論理)となっている。
【0068】
本実施形態のデータ供給装置(キャッシュ装置)によれば、非常に簡単な構成において、ノンブロッキング動作のダイレクトマップ方式やセットアソシアティブ方式のキャッシュ装置を実現できる。また従来技術では、ノンブロッキング動作のためにキャッシュメモリとは別に受信用のフィルFIFOを備える必要があったが、本発明の手法ではキャッシュメモリの領域の一部を受信領域に割り当てることでフィルFIFOを備える必要がない。またプリフェッチ構成にあるダイレクトマップ方式やセットアソシアティブ方式のキャッシュ判定回路を所望する連想数に合わせて差し替えることができる。 そしてフェッチ構成にあるデータ取得部とキャッシュメモリは、設定により記憶領域の中での受信領域とデータ領域の容量を変更すればよい。このように本実施形態のデータ供給装置(キャッシュ装置)を用いれば、設計工数を軽減しつつ、幅広い連想数のキャッシュ装置(方法)に対応することができる。
【0069】
<第3実施形態>
これまでキャッシュ装置において本発明のデータ供給方法を適用してきたが、キャッシュ装置以外にも適用できることは明らかである。キャッシュ装置は入力された格納アドレスに対し、キャッシュ判定部120にてキャッシュヒット/キャッシュミスを評価し、対応するキャッシュデータをキャッシュメモリから読み出す。これに対しデータ処理装置101が、キャッシュ判定部120を経由せず(構成としてキャッシュ判定部120を含めず)、直接アクセス調停部130へ格納アドレスのデータを要求してもよい。このときデータ処理装置101は、例えばシーケンサ回路等により予め決められたパターンで、記憶装置への更新データの要求(キャッシュミスに相当)と、既に記憶装置からリフィル済みのデータの再要求(キャッシュヒットに相当)を繰り返す。データ取得部180は、この予め決められたパターンでリフィル・データを受け取りつつ、データバッファ(キャッシュメモリに相当)にデータを更新し、要求された記憶装置のデータを更新しながらデータ処理装置101へ供給し続ければよい。
【0070】
本実施形態のデータ供給装置によれば、非常に簡単な構成において、ノンブロッキング動作のデータ取得とデータバッファへのデータ更新を実現できる。また従来技術では、ノンブロッキング動作のためにキャッシュメモリとは別に受信用のフィルFIFOを備える必要があったが、本発明の手法ではデータバッファの領域の一部を受信領域に割り当てることでフィルFIFOを備える必要がない。
【0071】
<その他の実施形態>
また、上述までの説明では性能向上を目的とし、ノンブロッキング動作を前提に装置の動作を説明してきた。しかしながら本発明の装置は、例え中間待ち行列(FIFO)を備えないブロッキング動作においても適用できることは明らかである。例えば図9に中間待ち行列(FIFO)を備えない処理装置の一例を示す。アクセス調停部からデータ取得部へ直接「ライン番号、キャッシュミス・フラグ」935を送出する。またデータ取得部からアクセス調停部にフェッチ許可信号981を返すことでブロッキング動作を実現する。
【0072】
キャッシュミス・フラグがキャッシュミスのとき受信領域に要求したデータがリフィルされるまでプリフェッチ許可信号981を「禁止」にし、アクセス調停部のプリフェッチ動作を停止すればよい。一方、キャッシュミス・フラグがキャッシュヒットのときはプリフェッチ許可信号981を「許可」のままとし、アクセス調停部のプリフェッチ動作を継続すればよい。要求したデータがリフィルされるまで受信ポインタとデータポインタの差は「0」のままであるためデータ取得部は図3を用いて説明した処理フローに従い、「待機」となる。前述までの説明と矛盾することなくブロッキング動作に対応できる。ブロッキング動作の場合は、受信領域がたとえ0段であっても対応できるのではあるが、本発明の趣旨に沿うにはリフィル・データを1段の受信領域に受けてから、キャッシュデータとして有効化するという手順を守る。これによりデータ取得部を動作に合わせて作り直す必要はなくなる。
【0073】
また、上述までの説明では本発明の特徴である、受信領域を管理する情報(受信ポインタ)と、データ領域を管理する情報(データポインタ)とをデータ取得部に備えた。それによりキャッシュ判定部には、一般的なキャッシュ判定構成(装置/回路/論理)を使用することができる。しかしながら、これらの管理情報をキャッシュ判定部にキャッシュタグと並んで格納してもよい。そしてデータ取得部で行っていたキャッシュデータの格納先アドレスの算出や受信ポインタとデータポインタの差の算出を予めキャッシュ判定部にて行う。そして算出結果を中間待ち行列(FIFO)を介してデータ取得部に送る構成でも何ら問題は生じない。特に第2実施形態の場合、キャッシュライン毎に管理情報を記憶する必要があり、これらをキャッシュ判定部のタグメモリにキャッシュタグと並んで格納することで、キャッシュタグと管理情報の記憶構成を一体化できるという利点がある。
【0074】
また、前述までの説明では、受信領域を管理する情報(受信ポインタ)と、データ領域を管理する情報(データポインタ)を用いて動作説明を行った。しかしながら、必ずしも記憶領域の格納先を指すポインタだけで管理を行う必要はなく、受信領域の状態を示す、受信ポインタと受信数で管理してもよい。この管理では、先のデータポインタは、受信ポインタから受信数を減算した値とすればよい。そして、リフィル・データが届く度に受信数が1つ増え、受信ポインタが更新される。そして、プリフェッチ構成から出力される情報(キャッシュミス・フラグ)に従い、キャッシュミスでは受信数が1つ減り、キャッシュヒットではそのままの受信数となる。この場合の利点は、受信領域の管理情報のみで本発明のデータ供給装置を制御することができるということである。つまり、受信領域の管理情報のみで制御できるという点において、データを記憶する記憶領域に、受信のために必要な受信領域を割り当てるという本発明の趣旨に、より合致していると言える。
【0075】
また、前述の各実施例の処理は、複数のハードウエアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。

【特許請求の範囲】
【請求項1】
出力手段と、データを保持する記憶領域を備え前記出力手段に当該記憶領域のデータを供給するフェッチ手段と、前記出力手段がデータを要求する前に前記出力手段に送信すべきデータを外部に要求するプリフェッチ手段と、を有するデータ供給装置であって、
前記フェッチ手段は、外部より受信するデータを前記記憶領域の一部である受信領域に格納し、前記プリフェッチ手段の要求に応じて当該要求に対応するデータを保持している受信領域を送信領域として割り当て、前記出力手段は前記フェッチ手段によって送信領域として割り当てられた領域のデータを出力することを特徴とするデータ供給装置。
【請求項2】
前記フェッチ手段は、前記記憶領域の一部を前記受信領域として割り当て、外部より供給されるデータを当該受信領域に格納し、前記プリフェッチ手段の要求に応じて当該要求に対応するデータを保持している受信領域を送信領域として再び割り当てることを特徴とする請求項1に記載のデータ供給装置。
【請求項3】
複数のステージを有するパイプライン手段を更に有し、前記フェッチ手段は前記複数のステージのうちの1つにデータを供給し、前記プリフェッチ手段は前記フェッチ手段がデータを供給するステージに先行するステージの動作に応じてデータを要求することを特徴とする請求項1又は2に記載のデータ供給装置。
【請求項4】
前記プリフェッチ手段で要求されたデータが前記フェッチ手段に届いたときに前記受信領域を管理する管理情報を更新することを特徴とする請求項1乃至3のいずれか1項に記載のデータ供給装置。
【請求項5】
前記記憶領域に対する前記受信領域の容量を変更することを特徴とする請求項1乃至4のいずれか1項に記載のデータ供給装置。
【請求項6】
前記受信領域の管理情報に基づいて前記プリフェッチ手段のデータ要求を停止することを特徴とする請求項4に記載のデータ供給装置。
【請求項7】
前記受信領域の管理情報に基づいて前記フェッチ手段からのデータ供給を待機することを特徴とする請求項4又は6に記載のデータ供給装置。
【請求項8】
前記プリフェッチ手段と前記フェッチ手段との間に中間待ち行列を備えることを特徴とする請求項1乃至7のいずれか1項に記載のデータ供給装置。
【請求項9】
請求項1乃至8のいずれか1項に記載のデータ供給装置と、キャッシュ判定手段とを備え、前記フェッチ手段の前記記憶領域に前記キャッシュ判定手段に対応するキャッシュデータを格納することを特徴とするキャッシュ装置。
【請求項10】
ラウンドロビン方式のリプレイス手法を用いることを特徴とする請求項9に記載のキャッシュ装置。
【請求項11】
連想(ライン選択)方式がフルアソシアティブ方式であることを特徴とする請求項9に記載のキャッシュ装置。
【請求項12】
連想(ライン選択)方式がセットアソシアティブ方式であることを特徴とする請求項9に記載のキャッシュ装置。
【請求項13】
連想(ライン選択)方式がダイレクトマップ方式であることを特徴とする請求項9に記載のキャッシュ装置。
【請求項14】
前記フェッチ手段は前記受信領域を示す受信ポインタと前記送信領域を示すデータポインタとを管理し、当該受信ポインタ又はデータポインタを更新することによって、前記受信領域又は前記送信領域の割り当てを変更することを特徴とする請求項1乃至8のいずれか1項に記載のデータ供給装置。
【請求項15】
出力手段と、前記出力手段が要求する前に前記出力手段に送信すべきデータを要求するプリフェッチ手段と、データを保持する記憶領域と、を有するデータ供給装置によるデータ供給方法であって、
外部より受信するデータを前記記憶領域の一部である受信領域に格納し、前記プリフェッチ手段の要求に応じて当該要求に対応するデータを保持している受信領域を送信領域として割り当て、前記出力手段は前記フェッチ手段によって送信領域として割り当てられた領域のデータを出力することを特徴とするデータ供給方法。
【請求項16】
出力手段と、前記出力手段が要求する前にキャッシュ判定により前記出力手段に送信すべきデータを要求するプリフェッチ手段と、データを保持する記憶領域と、を有するデータ供給装置を有するキャッシュ装置のキャッシュ方法であって、
外部より受信するデータを前記記憶領域の一部である受信領域に格納し、前記プリフェッチ手段の要求に応じて当該要求に対応するデータを保持している受信領域をキャッシュ領域として割り当て、前記出力手段は前記フェッチ手段によってキャッシュ領域として割り当てられた領域のデータを出力することを特徴とするキャッシュ方法。
【請求項17】
出力手段と、前記出力手段が要求する前に前記出力手段に送信すべきデータを要求するプリフェッチ手段と、データを保持する記憶領域と、を有するデータ供給装置に以下の手順を動作させるプログラムであって、
外部より受信するデータを前記記憶領域の一部である受信領域に格納し、前記プリフェッチ手段の要求に応じて当該要求に対応するデータを保持している受信領域を送信領域として割り当て、前記出力手段は前記フェッチ手段によって送信領域として割り当てられた領域のデータを出力することを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate