(57)【特許請求の範囲】
【請求項１】
データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ装置であって、
データの記憶を行い、番号付けされた複数のバッファと、
バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、
前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択するプライオリティセレクト部と、
を備えてなるデータバッファ装置。
【請求項２】
請求項１に記載のデータバッファ装置において、
マスクされていない、かつ未使用のバッファが無くなった場合に、前記マスクビットベクタがリセットされることを特徴とするデータバッファ装置。
【請求項３】
データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ装置であって、
データの記憶を行い、番号付けされた複数のバッファと、
バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、
前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択する第１プライオリティセレクト部と、
未使用のバッファの中から最若番のバッファを選択する第２プライオリティセレクト部と、
前記第１プライオリティセレクト部が選択したバッファと前記第２プライオリティセレクト部が選択したバッファのいずれかを選択するセレクタと、
を備えてなるデータバッファ装置。
【請求項４】
リクエストの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するキャッシュ装置であって、
リクエストの記憶を行い、番号付けされた複数のバッファと、
バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、
前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択するプライオリティセレクト部と、
前記バッファに記憶されたリクエストを順次処理するリクエスト処理部と、
前記リクエスト処理部の処理するリクエストに応じてデータの読み出しや書き込みを行うデータ部と、
を備えてなるキャッシュ装置。
【請求項５】
データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ制御方法であって、
バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクステップと、
前記マスクステップによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択するプライオリティセレクトステップと、
を備えてなるデータバッファ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの残留性と使用頻度の均一性を向上させるデータバッファ装置、キャッシュ装置、データバッファ制御方法に関するものである。
【背景技術】
【０００２】
ＲＩＲＯ（Random In Random Out）型データバッファでは、プライオリティセレクト方式を用いる制御が一般的である。プライオリティセレクト方式で制御されるＲＩＲＯでは、リリースするバッファはランダムに選択されるが、使用するバッファは必ず最若番から選択される。図１４Ａ、図１４Ｂ、図１４Ｃは、従来のプライオリティセレクト方式によるバッファ制御の具体的な動作の一例を示す図である。それぞれの図は順に、第１の状態から第３の状態までを示す。バッファの数は４とし、バッファ番号は１〜４とする。バッファ番号毎にバッファの状態として、未使用（空白）、使用中、または残留しているデータの識別子（ａ）のいずれかを示す。【０００３】
まず、図１４Ａに示す第１の状態のように、バッファ１とバッファ２とバッファ３を使用中とする。次に、図１４Ｂに示す第２の状態に示すように、バッファ２がリリースされた場合、バッファ２にはデータａが残留する。次に、図１４Ｃに示す第３の状態のように、バッファが使用された場合、一番若く、空いているバッファが使用される。従って、使ったばかりのバッファ２のデータは、すぐに上書きされ、失われる。【０００４】
上述したように、従来のプライオリティセレクト方式では若番バッファの使用頻度が高く、過去のデータが残らない。さらに、個々のバッファの使用頻度が偏るために、老番バッファに動作不良が存在する場合、その検出が遅れる可能性もある。【０００５】
この問題を解決するために、ＦＩＦＯ（First In First Out）型データバッファで、カウンタによるバッファ制御が一般的によく用いられる。図１５Ａ、図１５Ｂ、図１５Ｃは、従来のＦＩＦＯのカウンタによるバッファ制御の具体的な動作の一例を示す図である。それぞれの図は順に、第１の状態から第３の状態までを示す。バッファの数は４とし、バッファ番号は１〜４とする。バッファ番号毎にバッファの状態として、未使用（空白）、使用中、または残留しているデータの識別子（ａ）のいずれかを示す。ＦＩＦＯは、バッファの他に、書き込みを行うバッファ番号を示すｉｎカウンタと、読み出しを行うバッファ番号を示すｏｕｔカウンタを備える。【０００６】
まず、図１５Ａに示す第１の状態のように、初期状態はすべてのバッファが未使用であり、ｉｎカウンタとｏｕｔカウンタの値は１である。次に、図１５Ｂに示す第２の状態のように、ｉｎカウンタの示すバッファ１を使用すると、ｉｎカウンタが加算される。次に、図１５Ｃに示す第３の状態のように、ｏｕｔカウンタが示すバッファからの読み出しを行うと、ｏｕｔカウンタが加算され、バッファがリリースされる。データは、バッファが一巡するまで残っているが、ランダムに取り出すことはできない。【０００７】
しかし、ＲＩＲＯ型において、このようなカウンタによる制御を行うと、歯抜けになった部分が再び使用されるのは、カウンタがその歯抜け部分を指した時であるため、バッファの使用効率が非常に悪化してしまう。【０００８】
また、厳密な順序制御としては、ＰＭ（Precedence Matrix）やＬＲＵ（Least Recently Used）が用いられる。ここでは、ＰＭ方式について説明する。使用時において、バッファは自分が最新であることを記録する。また、リリース時において、バッファは、使用中のバッファよりも自分が古いことを記録する。【０００９】
図１６Ａ、図１６Ｂ、図１６Ｃ、図１７Ｄ、図１７Ｅ、図１７Ｆ、図１８Ｇ、図１８Ｈ、図１８Ｉは、従来のＰＭ方式によるバッファ制御の具体的な動作の一例を示す図である。それぞれの図は順に、第１の状態から第９の状態までを示す。バッファの数は４とし、バッファ番号は１〜４とする。バッファの状態を４×４の行列で表し、列方向のバッファ番号をｘ（１〜４）、行方向のバッファ番号をｙ（１〜４）とするとき、ｘがｙより古い場合の状態を”１”で表す。また、４×４の行列の右には、バッファ番号毎にバッファの状態として、未使用（空白）、使用中、または残留しているデータの識別子（ａ、ｂ、ｃ、ｄ）を示す。【００１０】
まず、図１６Ａに示す第１の状態のように、初期状態はすべてのバッファが未使用であり、状態はすべて”０”である。初期状態での使用順は任意であるが、ここでは若番から使用するものとする。次に、図１６Ｂに示す第２の状態のように、バッファ１が使用された場合、ｙ＝１の状態がすべて”１”になり、バッファ１が最新であることを表す。次に、図１６Ｃに示す第３の状態のように、バッファ２、バッファ３、バッファ４が順番に使用された場合、バッファ４よりもバッファ３、バッファ３よりもバッファ２、バッファ２よりもバッファ１が古いことを表す。次に、図１７Ｄに示す第４の状態のように、バッファ３がリリースされた場合、バッファ３に残留するデータａが最古であることを表す。次に、図１７Ｅに示す第５の状態のように、バッファ１がリリースされた場合、バッファ１に残留するデータｂがデータａの次に古いことを表す。【００１１】
つまり、あるバッファ番号の列の状態に”１”が多いほど、そのバッファに残留するデータが古いことを表し、次の格納対象となる。次に、図１７Ｆに示す第６の状態のように、バッファ４がリリースされた場合、次に格納対象となるのはバッファ３であることを表す。次に、図１８Ｇに示す第７の状態のように、バッファ３が使用された場合、バッファ３の列はリセットされる。次に、図１８Ｈに示す第８の状態のように、バッファ２がリリースされた場合、次に格納対象となるのはバッファ１であることを表す。次に、図１８Ｉに示す第９の状態のように、バッファ１が使用された場合、次に格納対象となるのはバッファ４であることを表す。【００１２】
しかし、上述したＰＭ方式は、順序制御を厳密に行える利点の一方、論理的な複雑さに加え、ｎ個のバッファの制御に（ｎ＾２）−ｎ個のラッチが必要となるため、指数関数的な回路規模の増大を招いていた。【００１３】
なお、本発明の関連ある従来技術として、例えば、下記に示す特許文献１が知られている。
【特許文献１】特開２００３−８４９９９号公報  （第３−５頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【００１４】
従来のデータバッファを用いた機器において、設計検証、障害調査に要する時間の肥大化が問題となっている。これらは、必要十分な情報が得られない、もしくは失われていることも一因である。また、上述したようなＲＩＲＯ型のデータバッファでは、構成上、使用頻度にばらつきが発生する事がある。このため、使用頻度の低い部位に不良があるものがパスしてしまい、ランニングテスト等の検査に漏れることがある。【００１５】
本発明は上述した問題点を解決するためになされたものであり、検証・調査時に必要な情報を残し、且つ使用頻度を均一化することにより、試験効率を向上させるデータバッファ装置、キャッシュ装置、データバッファ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決するため、本発明は、データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ装置であって、データの記憶を行い、番号付けされた複数のバッファと、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択するプライオリティセレクト部とを備えたものである。【００１７】
また、本発明に係るデータバッファ装置において、マスクされていない、かつ未使用のバッファが無くなった場合に、前記マスクビットベクタがリセットされることを特徴とするものである。【００１８】
また、本発明は、データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ装置であって、データの記憶を行い、番号付けされた複数のバッファと、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択する第１プライオリティセレクト部と、未使用のバッファの中から最若番のバッファを選択する第２プライオリティセレクト部と、前記第１プライオリティセレクト部が選択したバッファと前記第２プライオリティセレクト部が選択したバッファのいずれかを選択するセレクタとを備えたものである。【００１９】
また、本発明に係るデータバッファ装置において、すべてのバッファがマスクされた場合に、前記マスクビットベクタがリセットされることを特徴とするものである。【００２０】
また、本発明は、データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ装置であって、データの記憶を行い、番号付けされた複数のバッファと、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択する第１プライオリティセレクト部と、前記第１プライオリティセレクト部がバッファを選択しなかった場合に、未使用のバッファの中から最若番のバッファを選択する第２プライオリティセレクト部とを備えたものである。【００２１】
また、本発明は、リクエストの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するキャッシュ装置であって、リクエストの記憶を行い、番号付けされた複数のバッファと、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択するプライオリティセレクト部と、前記バッファに記憶されたリクエストを順次処理するリクエスト処理部と、前記リクエスト処理部の処理するリクエストに応じてデータの読み出しや書き込みを行うデータ部とを備えたものである。【００２２】
また、本発明は、リクエストの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するキャッシュ装置であって、リクエストの記憶を行い、番号付けされた複数のバッファと、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択する第１プライオリティセレクト部と、未使用のバッファの中から最若番のバッファを選択する第２プライオリティセレクト部と、前記第１プライオリティセレクト部が選択したバッファと前記第２プライオリティセレクト部が選択したバッファのいずれかを選択するセレクタと、前記バッファに記憶されたリクエストを順次処理するリクエスト処理部と、前記リクエスト処理部の処理するリクエストに応じてデータの読み出しや書き込みを行うデータ部とを備えたものである。【００２３】
また、本発明は、リクエストの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するキャッシュ装置であって、リクエストの記憶を行い、番号付けされた複数のバッファと、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクビットベクタと、前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択する第１プライオリティセレクト部と、前記第１プライオリティセレクト部がバッファを選択しなかった場合に、未使用のバッファの中から最若番のバッファを選択する第２プライオリティセレクト部と、前記バッファに記憶されたリクエストを順次処理するリクエスト処理部と、前記リクエスト処理部の処理するリクエストに応じてデータの読み出しや書き込みを行うデータ部とを備えたものである。【００２４】
また、本発明は、データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ制御方法であって、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクステップと、前記マスクステップによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択するプライオリティセレクトステップとを備えたものである。【００２５】
また、本発明に係るデータバッファ制御方法において、さらに、マスクされていない、かつ未使用のバッファが無くなった場合にすべてのマスクビットをリセットするマスクリセットステップを備えることを特徴とするものである。【００２６】
また、本発明は、データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ制御方法であって、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクステップと、前記マスクステップによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択する第１プライオリティセレクトステップと、未使用のバッファの中から最若番のバッファを選択する第２プライオリティセレクトステップと、前記第１プライオリティセレクトステップが選択したバッファと前記第２プライオリティセレクトステップが選択したバッファのいずれかを選択する選択ステップとを備えたものである。【００２７】
また、本発明に係るデータバッファ制御方法において、さらに、すべてのバッファがマスクされた場合に、すべてのマスクビットをリセットするリセットステップを備えることを特徴とするものである。【００２８】
また、本発明は、データの残留性と使用頻度の均一性を向上するために、バッファを選択して使用するデータバッファ制御方法であって、データの記憶を行い、番号付けされた複数のバッファと、バッファ毎にマスクするマスクビットを備え、リリースしたバッファのマスクビットをセットするマスクステップと、前記マスクビットベクタによってマスクされていない、かつ未使用のバッファの中から最若番のバッファを選択する第１プライオリティセレクト部と、前記第１プライオリティセレクト部がバッファを選択しなかった場合に、未使用のバッファの中から最若番のバッファを選択する第２プライオリティセレクト部とを備えたものである。【００２９】
なお、複数のバッファとは、実施の形態におけるＲＥＱ＿ＱＵＥＵＥのことである。
【図面の簡単な説明】
【００３０】
【図１】実施の形態１に係るキャッシュ装置の構成の一例を示すブロック図である。
【図２】実施の形態１に係るデータバッファ装置の動作の一例を示すフローチャートである。
【図３】実施の形態１に係る第１プライオリティセレクト部の動作の一例を示すフローチャートである。
【図４】実施の形態１に係る第１プライオリティセレクト部によるバッファの選択の動作の一例を示すフローチャートである。
【図５】実施の形態１に係る第２プライオリティセレクト部によるバッファの選択の動作の一例を示すフローチャートである。
【図６Ａ】本発明に係るデータバッファ装置の具体的な動作の一例のうち第１の状態を示す図である。
【図６Ｂ】本発明に係るデータバッファ装置の具体的な動作の一例のうち第２の状態を示す図である。
【図６Ｃ】本発明に係るデータバッファ装置の具体的な動作の一例のうち第３の状態を示す図である。
【図６Ｄ】本発明に係るデータバッファ装置の具体的な動作の一例のうち第４の状態を示す図である。
【図６Ｅ】本発明に係るデータバッファ装置の具体的な動作の一例のうち第５の状態を示す図である。
【図７Ｆ】本発明に係るデータバッファ装置の具体的な動作の一例のうち第６の状態を示す図である。
【図７Ｇ】本発明に係るデータバッファ装置の具体的な動作の一例のうち第７の状態を示す図である。
【図８Ａ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第１の状態を示す図である。
【図８Ｂ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第２の状態を示す図である。
【図８Ｃ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第３の状態を示す図である。
【図８Ｄ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第４の状態を示す図である。
【図８Ｅ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第５の状態を示す図である。
【図９Ｆ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第６の状態を示す図である。
【図９Ｇ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第７の状態を示す図である。
【図９Ｈ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第８の状態を示す図である。
【図９Ｉ】実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第９の状態を示す図である。
【図１０】実施の形態２に係るキャッシュ装置の構成の一例を示すブロック図である。
【図１１】実施の形態２に係るデータバッファ装置の動作の一例を示すフローチャートである。
【図１２Ａ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第１の状態を示す図である。
【図１２Ｂ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第２の状態を示す図である。
【図１２Ｃ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第３の状態を示す図である。
【図１２Ｄ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第４の状態を示す図である。
【図１２Ｅ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第５の状態を示す図である。
【図１３Ｆ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第６の状態を示す図である。
【図１３Ｇ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第７の状態を示す図である。
【図１３Ｈ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第８の状態を示す図である。
【図１３Ｉ】実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例のうち第９の状態を示す図である。
【図１４Ａ】従来のプライオリティセレクト方式によるバッファ制御の具体的な動作の一例のうち第１の状態を示す図である。
【図１４Ｂ】従来のプライオリティセレクト方式によるバッファ制御の具体的な動作の一例のうち第２の状態を示す図である。
【図１４Ｃ】従来のプライオリティセレクト方式によるバッファ制御の具体的な動作の一例のうち第３の状態を示す図である。
【図１５Ａ】従来のＦＩＦＯのカウンタによるバッファ制御の具体的な動作の一例における第１の状態を示す図である。
【図１５Ｂ】従来のＦＩＦＯのカウンタによるバッファ制御の具体的な動作の一例のうち第２の状態を示す図である。
【図１５Ｃ】従来のＦＩＦＯのカウンタによるバッファ制御の具体的な動作の一例のうち第３の状態を示す図である。
【図１６Ａ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第１の状態を示す図である。
【図１６Ｂ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第２の状態を示す図である。
【図１６Ｃ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第３の状態を示す図である。
【図１７Ｄ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第４の状態を示す図である。
【図１７Ｅ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第５の状態を示す図である。
【図１７Ｆ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第６の状態を示す図である。
【図１８Ｇ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第７の状態を示す図である。
【図１８Ｈ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第８の状態を示す図である。
【図１８Ｉ】従来のＰＭ方式によるバッファ制御の具体的な動作の一例のうち第９の状態を示す図である。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施の形態について図面を参照しつつ説明する。【００３２】
実施の形態１．
まず、データバッファ装置を備えたキャッシュ装置の構成について説明する。【００３３】
図１は、実施の形態１に係るキャッシュ装置の構成の一例を示すブロック図である。このキャッシュ装置は、データバッファ装置１、リクエスト処理部２、データ部３を備える。このキャッシュ装置は、例えば、ＣＰＵの２次キャッシュブロックとして用いられる。また、データバッファ装置１は、ＲＥＱ＿ＱＵＥＵＥ１１、マスクビットベクタ１２、第１プライオリティセレクト部１３、第２プライオリティセレクト部１４、セレクタ１５を備える。【００３４】
ＲＥＱ＿ＱＵＥＵＥ１１は、ｎ個（ｎは整数）のバッファで構成され、ＣＰＵからのリクエストを格納する。格納されたリクエストは、順次、リクエスト処理部２へ投入され、データ部３により主記憶装置との間でリクエストに応じてデータの読み出しや書き込みが行われる。処理が完了したものはＲＥＱ＿ＱＵＥＵＥ１１から消去される。インタロック等により処理が完了しなかった場合、再びＲＥＱ＿ＱＵＥＵＥ１１からリクエスト処理部２に投入され、自動的に再実行が行われる。この時、処理の完了はリクエストの投入順とは無関係に行われるため、ＲＥＱ＿ＱＵＥＵＥ１１はＲＩＲＯ型のバッファで構成される。【００３５】
マスクビットベクタ１２は、ｎ個のマスクビットを備え、バッファリリース時に、リリースしたバッファをマスクする。すなわちリリースしたバッファに対応するマスクビットを”１”にする。本実施の形態において、マスクビットベクタ１２は、すべてのバッファがマスクされた場合、すなわちマスクビットベクタがａｌｌ”１”となった場合に、リセットされ、ａｌｌ”０”となる。【００３６】
第１プライオリティセレクト部１３は、マスクビットベクタによってマスクされた残りのバッファの中から最若番の空きバッファを選択する。第２プライオリティセレクト部１４は、すべてのバッファの中から最若番の空きバッファを選択する。セレクタ１５は、まず、第１プライオリティセレクト部１３が選択したバッファを選択する。第１プライオリティセレクト部１３が選択するバッファが存在しない場合、第２プライオリティセレクト部１４が選択したバッファを選択する。【００３７】
次に、データバッファ装置の動作について説明する。【００３８】
図２は、実施の形態１に係るデータバッファ装置の動作の一例を示すフローチャートである。ここで、ＲＥＱ＿ＱＵＥＵＥ１１におけるバッファの数ｎは５とし、バッファ番号は０〜４とする。ＲＥＱ＿ＱＵＥＵＥ１１は、バッファ番号毎にバッファの状態Ｖを持つ。バッファが使用中（Ｖａｌｉｄ）の場合に、Ｖ＝１となる。また、マスクビットベクタ１２は、バッファ番号毎にマスクビットの状態Ｍを持つ。バッファがマスクされた場合に、Ｍ＝１となる。【００３９】
まず、ＲＥＱ＿ＱＵＥＵＥ１１は、リクエストを受信したか否かの判断を行う（Ｓ１）。リクエストを受信していない場合（Ｓ１，Ｎ）、処理Ｓ１へ戻る。次に、セレクタ１５は、第１プライオリティセレクト部（第１ＰＳ部）１３がバッファを選択したか否かの判断を行う（Ｓ２）。第１プライオリティセレクト部１３によるバッファの選択の動作については後述する。第１プライオリティセレクト部１３がバッファを選択した場合、セレクタ１５は、第１プライオリティセレクト部１３が選択したバッファにリクエストをセットし（Ｓ３）、このフローを終了する。【００４０】
一方、第１プライオリティセレクト部１３がバッファを選択しなかった場合（Ｓ２，Ｎ）、セレクタ１５は、第２プライオリティセレクト部（第２ＰＳ部）１４がバッファを選択したか否かの判断を行う（Ｓ４）。第２プライオリティセレクト部１４によるバッファの選択の動作については後述する。第２プライオリティセレクト部１４がバッファを選択した場合、セレクタ１５は、第２プライオリティセレクト部１４が選択したバッファにセットし（Ｓ５）、このフローを終了する。一方、第２プライオリティセレクト部１４がバッファを選択しなかった場合（Ｓ４，Ｎ）、エラー処理を行い（Ｓ６）、このフローを終了する。【００４１】
図３は、実施の形態１に係る第１プライオリティセレクト部の動作の一例を示すフローチャートである。まず、第１プライオリティセレクト部１３は、バッファがリリースされたか否かの判断を行う（Ｓ１１）。バッファがリリースされた場合（Ｓ１１，Ｙ）、マスクビットベクタ１２の対応するマスクビットをセットする（Ｓ１２）。次に、第１プライオリティセレクト部１３は、すべてのバッファがマスクされたか否かの判断を行う。すなわち、マスクビットベクタ１２がａｌｌ”１”となったか否かの判断を行う（Ｓ１３）。すべてのバッファがマスクされていれば（Ｓ１３，Ｙ）、マスクビットベクタ１２をリセットする（Ｓ１４）。次に、第１プライオリティセレクト部１３は、バッファの選択を行い（Ｓ１５）、このフローを終了する。【００４２】
図４は、実施の形態１に係る第１プライオリティセレクト部によるバッファの選択の動作の一例を示すフローチャートである。第１プライオリティセレクト部１３は、まず、バッファ０においてＶ＋Ｍ＝０であるか否かの判断を行う（Ｓ２１）。すなわち、バッファ０がマスクされていない、かつ未使用か否かの判断を行う。【００４３】
Ｖ＋Ｍ＝０であれば（Ｓ２１，Ｙ）、バッファ０を選択し（Ｓ２２）、このフローを終了する。Ｖ＋Ｍ＝０でなければ（Ｓ２１，Ｎ）、バッファ１においてＶ＋Ｍ＝０であるか否かの判断を行う（Ｓ２３）。Ｖ＋Ｍ＝０であれば（Ｓ２３，Ｙ）、バッファ１を選択し（Ｓ２４）、このフローを終了する。Ｖ＋Ｍ＝０でなければ（Ｓ２３，Ｎ）、バッファ２においてＶ＋Ｍ＝０であるか否かの判断を行う（Ｓ２５）。Ｖ＋Ｍ＝０であれば（Ｓ２５，Ｙ）、バッファ２を選択し（Ｓ２６）、このフローを終了する。Ｖ＋Ｍ＝０でなければ（Ｓ２５，Ｎ）、バッファ３においてＶ＋Ｍ＝０であるか否かの判断を行う（Ｓ２７）。Ｖ＋Ｍ＝０であれば（Ｓ２７，Ｙ）、バッファ３を選択し（Ｓ２８）、このフローを終了する。Ｖ＋Ｍ＝０でなければ（Ｓ２７，Ｎ）、バッファ４においてＶ＋Ｍ＝０であるか否かの判断を行う（Ｓ２９）。Ｖ＋Ｍ＝０であれば（Ｓ２９，Ｙ）、バッファ４を選択し（Ｓ３０）、このフローを終了する。Ｖ＋Ｍ＝０でなければ（Ｓ２９，Ｎ）、いずれのバッファも選択せずに、このフローを終了する。【００４４】
図５は、実施の形態１に係る第２プライオリティセレクト部１４によるバッファの選択の動作の一例を示すフローチャートである。第２プライオリティセレクト部１４は、まず、バッファ０においてＶ＝０であるか否かの判断を行う（Ｓ３１）。すなわち、バッファ０が未使用であるか否かの判断を行う。【００４５】
Ｖ＝０であれば（Ｓ３１，Ｙ）、バッファ０を選択し（Ｓ３２）、このフローを終了する。Ｖ＝０でなければ（Ｓ３１，Ｎ）、バッファ１においてＶ＝０であるか否かの判断を行う（Ｓ３３）。Ｖ＝０であれば（Ｓ３３，Ｙ）、バッファ１を選択し（Ｓ３４）、このフローを終了する。Ｖ＝０でなければ（Ｓ３３，Ｎ）、バッファ２においてＶ＝０であるか否かの判断を行う（Ｓ３５）。Ｖ＝０であれば（Ｓ３５，Ｙ）、バッファ２を選択し（Ｓ３６）、このフローを終了する。Ｖ＝０でなければ（Ｓ３５，Ｎ）、バッファ３においてＶ＝０であるか否かの判断を行う（Ｓ３７）。Ｖ＝０であれば（Ｓ３７，Ｙ）、バッファ３を選択し（Ｓ３８）、このフローを終了する。Ｖ＝０でなければ（Ｓ３７，Ｎ）、バッファ４においてＶ＝０であるか否かの判断を行う（Ｓ３９）。Ｖ＝０であれば（Ｓ３９，Ｙ）、バッファ４を選択し（Ｓ４０）、このフローを終了する。Ｖ＝０でなければ（Ｓ３９，Ｎ）、バッファ０を選択し（Ｓ４１）、このフローを終了する。【００４６】
次に、データバッファ装置の動作の具体例について説明する。【００４７】
図６Ａ、図６Ｂ、図６Ｃ、図６Ｄ、図６Ｅ、図７Ｆ、図７Ｇは、本発明に係るデータバッファ装置の具体的な動作の一例を示す図である。それぞれの図は順に、第１の状態から第７の状態までを示す。ここでも、ＲＥＱ＿ＱＵＥＵＥ１１におけるバッファの数ｎは５とし、バッファ番号は０〜４とする。バッファ番号毎に、バッファの状態Ｖ、マスクビットの状態Ｍ、残留しているデータの識別子Ｄ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇのいずれか）を示す。まず、図６Ａに示す第１の状態のように、データバッファ装置は初期状態とする。ＶとＭはすべて”０”であり、Ｄはすべて空である。【００４８】
次に、図６Ｂに示す第２の状態のように、１個のリクエストが到着した場合、バッファを１つ使用する。第１プライオリティセレクト部１３は、マスクされていない、かつ未使用の最若番のバッファを選択する。ここでは、バッファ０が選択されてＶ＝１となる。【００４９】
次に、図６Ｃに示す第３の状態のように、バッファ０の処理が完了した場合、このバッファをリリースし、Ｖ＝０となる。リリースされると、Ｍ＝１にする。バッファ０のデータａが残留している。【００５０】
次に、図６Ｄに示す第４の状態のように、１個のリクエストが到着した場合、バッファを１つ使用する。第１プライオリティセレクト部１３は、マスクされていない、かつ未使用の最若番のバッファであるバッファ１を選択する。【００５１】
次に、図６Ｅに示す第５の状態のように、２個のリクエストが到着した場合、バッファを２つ使用する。第１プライオリティセレクト部１３は、マスクされていない、かつ未使用の最若番のバッファであるバッファ２とバッファ３を選択する。【００５２】
次に、図７Ｆに示す第６の状態のように、バッファ２の処理が完了した場合、このバッファをリリースし、Ｍ＝１にする。バッファ２のデータｂが残留する。【００５３】
次に、図７Ｇに示す第７の状態のように、１個のリクエストが到着した場合、バッファを１つ使用する。第１プライオリティセレクト部１３は、マスクされていない、かつ未使用の最若番のバッファであるバッファ４を選択する。【００５４】
図８Ａ、図８Ｂ、図８Ｃ、図８Ｄ、図８Ｅ、図９Ｆ、図９Ｇ、図９Ｈ、図９Ｉは、実施の形態１に係るマスクビットベクタのリセットに関する具体的な動作の一例を示す図である。それぞれの図は順に、第１の状態から第９の状態までを示す。表記方法は図６Ａなどと同様である。まず、図８Ａに示す第１の状態は、図６Ａから図７Ｆまでの動作を経た後の状態であり、図７Ｇと同じ状態を表す。【００５５】
次に、図８Ｂに示す第２の状態のように、バッファ１とバッファ３の処理が完了した場合、これらのバッファをリリースし、Ｍ＝１にする。バッファ１のデータｃ、バッファ３のデータｄが残留する。【００５６】
次に、図８Ｃに示す第３の状態のように、１個のリクエストが到着した場合、マスクされていない、かつ未使用のバッファが無いため、第２プライオリティセレクト部１４は、未使用の最若番であるバッファ０を選択する。【００５７】
次に、図８Ｄに示す第４の状態のように、１個のリクエストが到着した場合、マスクされていない、かつ未使用のバッファが無いため、第２プライオリティセレクト部１４は、未使用の最若番であるバッファ１を選択する。【００５８】
次に、図８Ｅに示す第５の状態のように、バッファ１の処理が完了した場合、このバッファをリリースし、Ｍ＝１にする。バッファ１のデータｅが残留する。【００５９】
次に、図９Ｆに示す第６の状態のように、バッファ０の処理が完了した場合、このバッファをリリースし、Ｍ＝１にする。バッファ０のデータｆが残留する。【００６０】
次に、図９Ｇに示す第７の状態のように、バッファ４の処理が完了した場合、このバッファをリリースし、Ｍ＝１にする。バッファ４のデータｇが残留する。【００６１】
次に、図９Ｈに示す第８の状態のように、マスクビットベクタ１２がａｌｌ”１”となった場合、マスクビットベクタ１２をリセットする。すなわち、すべてのＭを”０”にする。【００６２】
次に、図９Ｉに示す第９の状態のように、１個のリクエストが到着した場合、バッファを１つ使用する。第１プライオリティセレクト部１３は、マスクされていない、かつ未使用の最若番のバッファであるバッファ０を選択する。【００６３】
なお、本実施の形態においては、第１プライオリティセレクト部１３がバッファを選択しなかった場合に、第２プライオリティセレクト部１４が選択したバッファを、セレクタ１５が選択する構成としたが、セレクタ１５を省き、第１プライオリティセレクト部１３がバッファを選択しなかった場合に、第２プライオリティセレクト部１４が選択する構成としても良い。【００６４】
実施の形態２．
まず、データバッファ装置を備えたキャッシュ装置の構成について説明する。【００６５】
論理的に空きバッファの存在を保証できる場合は、上述した第２プライオリティセレクト部１４とセレクタ１５は必須でない。図１０は、実施の形態２に係るキャッシュ装置の構成の一例を示すブロック図である。図１０において、図１と同一符号は図１に示された対象と同一又は相当物を示しており、ここでの説明を省略する。このキャッシュ装置は、図１におけるデータバッファ装置１の代わりにデータバッファ装置１０１を備える。データバッファ装置１０１は、データバッファ装置１におけるマスクビットベクタ１２の代わりにマスクビットベクタ１１２を備え、第１プライオリティセレクト部１３の代わりに第１プライオリティセレクト部１１３を備える。また、データバッファ装置１０１は、データバッファ装置１における第２プライオリティセレクト部１４とセレクタ１５を省く。【００６６】
本実施の形態において、マスクビットベクタ１１２は、マスク後のバッファに空きがなくなった場合に、リセットされる。【００６７】
次に、データバッファ装置の動作について説明する。【００６８】
図１１は、実施の形態２に係るデータバッファ装置の動作の一例を示すフローチャートである。まず、第１プライオリティセレクト部１１３は、バッファがリリースされたか否かの判断を行う（Ｓ５１）。バッファがリリースされた場合（Ｓ５１，Ｙ）、マスクビットベクタ１１２の対応するマスクビットをセットする（Ｓ５２）。次に、ＲＥＱ＿ＱＵＥＵＥ１１は、リクエストを受信したか否かの判断を行う（Ｓ５３）。リクエストを受信していなければ（Ｓ５３，Ｎ）、処理Ｓ５１へ戻る。次に、第１プライオリティセレクト部１１３は、未使用のバッファがあるか否かの判断を行う（Ｓ５４）。未使用のバッファがなければ（Ｓ５４，Ｎ）、エラー処理を行い（Ｓ５５）、このフローを終了する。【００６９】
未使用のバッファがあれば（Ｓ５４，Ｙ）、第１プライオリティセレクト部１１３は、マスク後のバッファに未使用のバッファがあるか否かの判断を行う（Ｓ５６）。マスク後のバッファに未使用のバッファがなければ（Ｓ５６，Ｎ）、マスクビットベクタ１１２をリセットする（Ｓ５７）。次に、第１プライオリティセレクト部１１３は、バッファの選択を行い（Ｓ５８）、選択したバッファにリクエストをセットし（Ｓ５９）、このフローを終了する。第１プライオリティセレクト部１１３によるバッファの選択は、上述した実施の形態１における図４と同様の動作を行う。【００７０】
次に、データバッファ装置の動作の具体例について説明する。【００７１】
図１２Ａ、図１２Ｂ、図１２Ｃ、図１２Ｄ、図１２Ｅ、図１３Ｆ、図１３Ｇ、図１３Ｈ、図１３Ｉは、実施の形態２に係るマスクビットベクタのリセットに関する具体的な動作の一例を示す図である。それぞれの図は順に、第１の状態から第９の状態までを示す。表記方法は図６Ａなどと同様である。まず、図１２Ａに示す第１の状態は、図６Ａから図７Ｆまでの動作を経た後の状態であり、図７Ｇと同じ状態を表す。【００７２】
次に、図１２Ｂに示す第２の状態のように、バッファ１とバッファ３の処理が完了した場合、これらのバッファをリリースし、Ｍ＝１にする。バッファ１のデータｃ、バッファ３のデータｄが残留する。【００７３】
次に、図１２Ｃに示す第３の状態のように、マスクされていない、かつ未使用のバッファがなくなったため、マスクビットベクタをリセットする。すなわち、すべてのＭを０にする。【００７４】
次に、図１２Ｄに示す第４の状態のように、１個のリクエストが到着した場合、第１プライオリティセレクト部１１３は、マスクされていない、かつ未使用の最若番のバッファであるバッファ０を選択する。【００７５】
次に、図１２Ｅに示す第５の状態のように、１個のリクエストが到着した場合、第１プライオリティセレクト部１１３は、マスクされていない、かつ未使用の最若番のバッファであるバッファ１を選択する。【００７６】
次に、図１３Ｆに示す第６の状態のように、バッファ１の処理が完了した場合、これらのバッファをリリースし、Ｍ＝１にする。バッファ１のデータｅが残留する。【００７７】
次に、図１３Ｇに示す第７の状態のように、バッファ０の処理が完了した場合、これらのバッファをリリースし、Ｍ＝１にする。バッファ０のデータｆが残留する。【００７８】
次に、図１３Ｈに示す第８の状態のように、バッファ４の処理が完了した場合、これらのバッファをリリースし、Ｍ＝１にする。バッファ４のデータｇが残留する。【００７９】
次に、図１３Ｉに示す第９の状態のように、１個のリクエストが到着した場合、第１プライオリティセレクト部１１３は、マスクされていない、かつ未使用の最若番のバッファであるバッファ２を選択する。【００８０】
実施の形態１における図９Ｉの状態と実施の形態２図１３Ｉの状態を比較して分かるように、実施の形態２においては、リセット時のペナルティが実施の形態１と比べて小さくなり、データの残留性が向上する。【００８１】
上述したデータバッファ装置により、回路規模の増加を極力抑えつつ、過去にバッファしたデータの残留性の向上、及びバッファの使用率の均一化を実現する。
【産業上の利用可能性】
【００８２】
ｎ段のバッファに対しｎ個のラッチという極めて少ない回路で実現でき、必ずしも古い順に消去されるわけではないものの、著しいデータ残留性の向上が見込める。また、バッファの使用率が均一化することから、スクリーニング等の試験においては、バッファを全て使用するまでの時間が決定的となるとともに、プログラムパターンの作成も容易となり、試験効率が向上する。
【図１】
0004456123.tif 000002
【図２】
0004456123.tif 000003
【図３】
0004456123.tif 000004
【図４】
0004456123.tif 000005
【図５】
0004456123.tif 000006
【図６Ａ】
0004456123.tif 000007
【図６Ｂ】
0004456123.tif 000008
【図６Ｃ】
0004456123.tif 000009
【図６Ｄ】
0004456123.tif 000010
【図６Ｅ】
0004456123.tif 000011
【図７Ｆ】
0004456123.tif 000012
【図７Ｇ】
0004456123.tif 000013
【図８Ａ】
0004456123.tif 000014
【図８Ｂ】
0004456123.tif 000015
【図８Ｃ】
0004456123.tif 000016
【図８Ｄ】
0004456123.tif 000017
【図８Ｅ】
0004456123.tif 000018
【図９Ｆ】
0004456123.tif 000019
【図９Ｇ】
0004456123.tif 000020
【図９Ｈ】
0004456123.tif 000021
【図９Ｉ】
0004456123.tif 000022
【図１０】
0004456123.tif 000023
【図１１】
0004456123.tif 000024
【図１２Ａ】
0004456123.tif 000025
【図１２Ｂ】
0004456123.tif 000026
【図１２Ｃ】
0004456123.tif 000027
【図１２Ｄ】
0004456123.tif 000028
【図１２Ｅ】
0004456123.tif 000029
【図１３Ｆ】
0004456123.tif 000030
【図１３Ｇ】
0004456123.tif 000031
【図１３Ｈ】
0004456123.tif 000032
【図１３Ｉ】
0004456123.tif 000033
【図１４Ａ】
0004456123.tif 000034
【図１４Ｂ】
0004456123.tif 000035
【図１４Ｃ】
0004456123.tif 000036
【図１５Ａ】
0004456123.tif 000037
【図１５Ｂ】
0004456123.tif 000038
【図１５Ｃ】
0004456123.tif 000039
【図１６Ａ】
0004456123.tif 000040
【図１６Ｂ】
0004456123.tif 000041
【図１６Ｃ】
0004456123.tif 000042
【図１７Ｄ】
0004456123.tif 000043
【図１７Ｅ】
0004456123.tif 000044
【図１７Ｆ】
0004456123.tif 000045
【図１８Ｇ】
0004456123.tif 000046
【図１８Ｈ】
0004456123.tif 000047
【図１８Ｉ】
0004456123.tif 000048