次に、本発明の第1の実施の形態について図面を参照して詳細に説明する。図1は、第1の実施の形態の構成を示すブロック図である。図1を参照すると、第1の実施の形態のストア制御装置100は、ストアバッファ部101、および、ストアバッファ制御部102を含む。
ストアバッファ制御部102は、プロセッサ、および、ストアバッファ部101と接続される。ストアバッファ制御部102は、ストアバッファ部101の制御を行う。ストアバッファ部101は、ストアバッファ制御部102、および、主記憶装置と接続される。ストアバッファ部101は、プロセッサから主記憶装置にストアされる(書き込まれる)ストアデータを一時的に格納する。
ストアバッファ制御部102は、プロセッサからリクエストによりブロック単位(連続する複数バイト)のストアデータを受け取り、ストアバッファ部101に格納する。また、ストアバッファ制御部102は、ストアバッファ部101からライン単位(連続する複数ブロック)のストアデータを取り出し(追い出し)、主記憶装置へ出力させる。
また、ストアバッファ部101のラインに少なくとも1つのブロックが存在する場合に、リクエストによりプロセッサからのそのラインに対応するストアデータ(ブロック単位)を受け取ると、マージして格納する。また、マージが少なくとも1回発生すると、そのラインは、マージ中と呼ぶ。また、ラインのすべてのブロックが存在していると、そのラインは、マージ完了と呼ぶ。
ストアバッファの方式として、複数のway(ウェイ)を備える方式(たとえば、セットアソシアティブ方式等)が適用される。ここで、各wayに格納される情報の単位をエントリと称する。
次に、第1の実施の形態の動作について図面を参照して説明する。図2は、第1の実施の形態の動作を示すフローチャートである。図2を参照すると、ストアデータを主記憶装置に追い出す契機が発生すると(ステップS1/Y)、ストアバッファ制御部102は、ライン内のすべてのブロックがストアバッファ部101内に存在する(すなわち、マージ完了の)wayを優先してストアデータを追い出す指示を出力する(ステップS2)。
ここで、契機とは、たとえば、ストアバッファ部101のリクエストのアドレス(中位)に対応するすべてのwayのエントリ(ライン)にストアデータが格納されており、新たなストアデータをいずれかのwayのエントリ(ライン)に格納する場合等である。
次に、ストアバッファ部101は、ストアバッファ制御部102からの指示にしたがい、ストアデータを追い出して主記憶装置に出力する(ステップS3)。
次に、第1の実施の形態の効果について説明する。
第1の実施の形態は、ライン内のすべてのブロックがストアバッファ部101内に存在する(マージ完了の)wayから優先してストアデータを追い出す構成である。
したがって、第1の実施の形態は、たとえば、特許文献1記載の技術のタイマ、ライトバッファに格納されているデータの数を示す回路等が不要となり、追い出しの制御が簡単になるという効果をもつ。
したがって、また、第1の実施の形態は、たとえば、追い出しアルゴリズムに、LRU(Least Recently Used)を用いる構成に比べて、ハードウェア量が減少するという効果をもつ。
また、第1の実施の形態は、主記憶装置114へのアクセスの回数を減少させ、ストアバッファ部101を効率的に利用できるという効果をもつ。
その理由は、マージ完了のラインには、新たなマージが発生する確率が低いので、マージ完了のラインを追い出し、マージの発生する確率の高いラインをストアバッファ部101に格納する構成をとるからである。
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。図3は、第2の実施の形態の構成を示すブロック図である。図3を参照すると、第2の実施の形態の情報処理装置110は、プロセッサ111、ストア制御装置100、および、主記憶装置114を含む。
ストア制御装置100は、第1の実施の形態のストア制御装置100の一例であり、ストアバッファ部101、および、ストアバッファ制御部102を含む。ストアバッファ制御部102は、マージ回路112、エントリフル検出回路115、および、追い出し制御回路116を含む。
プロセッサ111は、マージ回路112、および、主記憶装置114と接続される。プロセッサ111は、リクエスト(ロード、ストア)、および、主記憶装置114に書き込むためのストアデータをマージ回路112へ出力する。また、プロセッサ111は、主記憶装置114からロードデータ(読み出しデータ)を受け取る。
マージ回路112は、プロセッサ111、および、ストアバッファ部101と接続される。マージ回路112は、プロセッサ111からのリクエスト、および、ストアデータをストアバッファ部101へ出力する。また、マージ回路112は、ストアバッファ部101からのライン単位のストアデータとプロセッサ111からのストアデータとのマージ処理を行いストアバッファ部101へ出力する。
ストアバッファ部101は、マージ回路112、主記憶装置114、エントリフル検出回路115、および、追い出し制御回路116と接続される。ストアバッファ部101は、ロードリクエストのアドレスと、ストアバッファ部101内のストアリクエストのアドレスとを比較し、一致した場合に、対応するストアデータを追い出し(読み出し)、ストアリクエストと共に主記憶装置114へ出力する。
また、ストアバッファ部101は、ストアデータを読み出してマージ回路112に出力し、マージ回路112の出力であるマージ後のストアデータを元の格納場所(元のエントリ)に格納する。
また、ストアバッファ部101は、エントリ情報(エントリ内の情報)の一部、および、最新way番号をエントリフル検出回路115へ出力し、追い出し制御回路116の指示にしたがいストアデータを主記憶装置114へ出力する。
主記憶装置114は、プロセッサ111、および、ストアバッファ部101と接続される。主記憶装置114は、ストアバッファ部101からのリクエストにしたがい、データの読み出し(ロード)、および、書き込み(ストア)を行う。主記憶装置114は、読み出したデータをロードデータとしてプロセッサ111に出力する。
エントリフル検出回路115は、ストアバッファ部101、および、追い出し制御回路116と接続される。エントリフル検出回路115は、ストアバッファ部101からエントリ情報の一部を受け取ってエントリフルの判定を行い、エントリフル情報、エントリ情報の一部、および、最新way番号を追い出し制御回路116へ出力する。
追い出し制御回路116は、ストアバッファ部101、および、エントリフル検出回路115と接続される。追い出し制御回路116は、エントリフル検出回路115からのエントリフル情報とエントリ情報の一部とに基づきストアデータの追い出し判定を行い、追い出し指示、および、追い出しway番号をストアバッファ部101に出力する。
次に、ストアバッファ部101の詳細な構成について説明する。図4、図5は、ストアバッファ部101の構成を示すブロック図である。図4、図5において、丸で囲まれた同一の数字の部分は接続される。
図4、図5を参照すると、ストアバッファ部101は、アドレスアレイ301、データアレイ302、エントリ選択回路303、エントリ情報更新回路304、レジスタ305、セレクタ306、セレクタ307、セレクタ308、比較回路309、アドレスアレイ制御回路310、および、データアレイ制御回路311を含む。
ストアバッファ部101は、マージ回路112からリクエスト、および、ストアデータを、追い出し制御回路116から、追い出し指示、および、追い出しway番号を受け取る。
アドレスアレイ301は、エントリ情報を格納する。図6は、エントリ情報の内容を示す説明図である。図6を参照すると、エントリ情報は、エントリ有効情報、マージ完了情報、マージ中情報、アドレス(上位)、および、有効ブロック情報を含む。
エントリ有効情報は、当該エントリが有効であるかどうかを示す、すなわち、データアレイ302のエントリに有効なストアデータが存在するかどうかを示す。有効ブロック情報は、当該データアレイ302のラインのうち、有効なブロックを示す。
マージ中情報は、セットされていると、当該エントリのデータアレイ302内のストアデータにマージが発生したことを示す。マージ完了情報は、セットされていると、当該エントリのデータアレイ302内のラインのすべてのブロックが有効であることを示す。すなわち、当該エントリの有効ブロック情報がすべてのブロックの有効を示す場合に、マージ完了情報が、セットされている。
以下の説明において、わかりやすくするために、エントリ有効情報、マージ完了情報、および、マージ中情報は、‘1’にセットされている場合に、それぞれ、エントリが有効、マージが完了、および、マージ中であることを示すとする。
また、アドレスアレイ301は、リクエストに含まれるアドレス(中位)(以降、indexと呼ぶ)ごとに最新way番号を格納する。また、アドレスアレイ301は、indexに対応するすべてのwayのエントリ情報の一部、および、最新way番号をエントリフル検出回路115に出力する。最新way番号は、最近に、アクセス(登録、追い出しを伴う格納、マージ)されたwayを示す。
また、アドレスアレイ301は、indexに対応するすべてのwayのエントリ情報をエントリ選択回路303に出力する。また、アドレスアレイ301は、indexに対応するすべてのwayのエントリ情報内のアドレス(上位)、および、エントリ有効情報を比較回路309に出力する。
データアレイ302は、アドレスアレイ301のエントリに対応する格納位置(エントリ)にストアデータを格納する。また、データアレイ302は、indexに対応するすべてのwayのストアデータをセレクタ307、および、セレクタ308に出力する。
比較回路309は、indexに対応するすべてのwayのエントリ情報内のアドレス(上位)と、リクエストに含まれるアドレス上位とを比較し、一致するかどうかを示す比較結果を出力する。なお、比較回路309は、エントリ情報内のエントリ有効情報が有効を示していなければ、比較結果を不一致とする。
セレクタ307は、エントリ情報更新回路304の制御にしたがってストアデータを選択し、主記憶装置114に出力する。セレクタ308は、比較回路309からの比較結果にしたがって一致を示すwayのストアデータを選択し、マージ回路112に出力する。
エントリ選択回路303は、ロードリクエストの場合には、比較回路309の比較結果にしたがって、追い出すwayのエントリ情報を選択する。また、エントリ選択回路303は、ストアリクエストの場合には、追い出し制御回路116からの追い出し指示、および、追い出しway番号にしたがって、追い出すwayのエントリ情報を選択する。また、エントリ選択回路303は、エントリ情報更新回路304に、エントリ情報、追い出し指示、追い出しway番号等を出力する。
エントリ情報更新回路304は、ロードリクエストの場合には、エントリ選択回路303からの追い出し対象のエントリのエントリ情報を更新し、セレクタ307の選択信号を生成する。エントリ情報更新回路304は、ストアリクエストの場合には、比較回路309からの比較結果、エントリ選択回路303からのエントリ情報、および、追い出し指示にしたがって、エントリの登録、マージ、または、追い出しの判定を行い、エントリ情報、および、最新way番号を更新する。また、エントリ情報更新回路304は、セレクタ307の選択信号を生成する。
アドレスアレイ制御回路310は、アドレスアレイ301のエントリ情報更新回路304により指定されたwayに対し、更新された(または、新規の)エントリ情報、および、更新された最新way番号を格納する。データアレイ制御回路311は、エントリ情報更新回路304の出力にしたがい、指定されたwayのエントリにストアデータを格納、または、更新する。
レジスタ305は、ロードリクエストを一時的に退避(格納)する。セレクタ306は、ロードリクエストによる追い出しが発生した場合に、追い出し対象のエントリ情報を選択し、主記憶装置114に出力し、さらに、レジスタ305から退避されているロードリクエストを主記憶装置114に出力する。
次に、エントリフル検出回路115の詳細な構成について説明する。図7は、エントリフル検出回路115の構成を示すブロック図である。図7を参照すると、エントリフル検出回路115は、ストアバッファ部101のアドレスアレイ301から、indexに対応する全wayのエントリ情報内のエントリ有効情報、マージ完了情報、および、マージ中情報を受け取る。また、エントリフル検出回路115は、ストアバッファ部101のアドレスアレイ301から、indexに対応する最新way番号を受け取る。
エントリフル検出回路115は、論理積回路401により、全wayのエントリ有効情報がすべて有効であることを示すエントリフル情報を生成し、追い出し制御回路116に出力する。また、エントリフル検出回路115は、受け取った全wayのエントリ情報内のマージ完了情報、および、マージ中情報と、最新way番号とを追い出し制御回路116に出力する。
次に、追い出し制御回路116の詳細な構成について説明する。図8は、追い出し制御回路116の構成を示すブロック図である。図9は、追い出し制御回路116の論理を示す説明図である。図9において、「−」は、‘0’、‘1’どちらでもよいことを示す。
図8、図9を参照すると、追い出し制御回路116は、エントリフル検出回路115からエントリフル情報、マージ完了情報(全wayの)、マージ中情報(全wayの)、および、最新way番号を受け取る。追い出し制御回路116は、エンコード回路601、エンコード回路602、エンコード回路603、および、セレクタ604を含む。
エンコード回路601は、マージ完了情報が、‘1’であるwayのway番号を生成する。ただし、‘1’であるマージ完了情報が複数存在する場合には、最新way番号の次のway番号から順次検索し、マージ完了情報が、‘1’であるwayのway番号を生成する。次のway番号とは、最新way番号に1を加算した番号である。ただし、最新way番号が、最大のway番号(=N)であると、次のway番号は、最小のway番号(=0)である。
エンコード回路602は、マージ中情報が、‘1’であるwayのway番号を生成する。ただし、‘1’であるマージ中情報が複数存在する場合には、最新way番号の次のway番号から順次検索し、マージ中情報が、‘1’であるwayのway番号を生成する。
エンコード回路603は、最新way番号の次のway番号を生成する。
セレクタ604は、‘1’であるマージ完了情報が1つでも存在すれば、エンコード回路601からのway番号を、追い出しway番号として選択する。また、セレクタ604は、‘1’であるマージ完了情報が存在せず、‘1’であるマージ中情報が1つでも存在すれば、エンコード回路602からのway番号を、追い出しway番号として選択する。また、セレクタ604は、‘1’であるマージ完了情報も、‘1’であるマージ中情報も存在しない場合に、エンコード回路603からのway番号を、追い出しway番号として選択する。
追い出し制御回路116は、ストアバッファ部101に、セレクタ604からの追い出しway番号を出力し、また、エントリフル検出回路115からのエントリフル情報を追い出し指示として出力する。
次に、マージ回路112の詳細な構成について説明する。図10は、マージ回路112の構成を示すブロック図である。図10を参照すると、マージ回路112は、プロセッサ111からリクエスト、および、ブロック単位のストアデータを受け取り、ストアバッファ部101からライン単位のストアデータを受け取る。
マージ回路112は、デコード回路510、ブロック単位のセレクタ500、セレクタ501、・・・、および、セレクタ50Nを含む。
セレクタ500〜セレクタ50Nは、リクエスト内のアドレス(下位)により示される個数存在する。たとえば、アドレス(下位)が4ビットであれば、ブロック単位のセレクタは16個である。
デコード回路510は、リクエスト内のアドレス(下位)により指定されたブロックのみプロセッサ111からのストアデータを選択し、他のブロックに関しては、ストアバッファ部101からのストアデータを選択する選択信号を生成する。
セレクタ500〜セレクタ50Nは、選択信号にしたがいストアデータを選択する。たとえば、アドレス(下位)=‘0001’とすると、16個のうち、1番目(0オリジン)のセレクタ501のみが、プロセッサ111からのストアデータを選択する。
そして、マージ回路112は、選択したライン単位のストアデータ、および、プロセッサ111からのリクエストをストアバッファ部101に出力する。
次に、本発明の第2の実施の形態の動作について図面を参照して説明する。説明をわかりやすくするために、以下、1ラインを128[B](バイト)、1ブロックを8[B](バイト)とする。すなわち、1ライン=16ブロックとする。以下の説明において、ストアバッファ部101にラインが存在するとは、そのラインに属する少なくとも1ブロックのストアデータが存在することを意味する。
また、ストアバッファ部101は、たとえば、way−0〜way−N(Nは1,3,7等の整数)を持つN+1wayのセットアソシアティブ方式のキャッシュ構成であるとして説明する。
ここで、リクエストの詳細について説明する。図11は、リクエストの内容を示す説明図である。図11を参照すると、リクエストは、コマンド、アドレス(上位)、アドレス(中位)、アドレス(下位)、および、優先指定情報を含む。
コマンドは、ロードリクエスト、ストアリクエスト等の種別を示す。アドレス(上位)は、ストアバッファ部101のアドレスアレイ301のエントリ情報の一部となる。アドレス(中位)は、アドレスアレイ301、および、データアレイ302を索引するindexである。
アドレス(下位)は、8[B]単位であり、ロード/ストアデータが、ライン内のどのブロックに該当するのかを示す。優先指定情報は、リクエスト内のアドレスで指定されるエントリを優先的に追い出すことを指示する。ストア制御装置100は、ストアリクエストの優先指定情報がオンであると、当該ライン内のブロックがすべて存在するかどうかにかかわらず、エントリフル情報を‘1’にセットする。
図12は、第2の実施の形態の動作を示す概略フローチャートである。図12を参照すると、ストア制御装置100は、ロードリクエストを受け取ると(ステップS11/ロード)、リクエスト内のアドレスに対応するラインがストアバッファ部101に存在するかどうかを調べる(ステップS12)。これは、ブロック単位ではなく、ライン単位の存在を調べる。
当該ラインが存在する場合(ステップS12/Y)、ストア制御装置100は、ストアバッファ部101内の当該ラインのストアデータを主記憶装置114に出力し(追い出し)、当該エントリを削除する(ステップS13)。次に、ストア制御装置100は、受け取ったロードリクエストを主記憶装置114に出力する(ステップS14)。
当該ラインが存在しない場合(ステップS12/N)、ストア制御装置100は、受け取ったロードリクエストを主記憶装置114に出力する(ステップS14)。
ストア制御装置100は、ストアリクエストを受け取ると(ステップS11/ストア)、リクエスト内のアドレスに対応するラインがストアバッファ部101に存在するかどうかを調べる(ステップS15)。
当該ラインが存在する場合(ステップS15/Y)、ストア制御装置100は、ストアリクエストに付随するストアデータを当該ラインのストアデータとマージしてストアバッファ部101に格納する(ステップS16)。
当該ラインが存在しない場合(ステップS15/N)、ストア制御装置100は、リクエスト内のアドレス(index)に対応するすべてのwayにラインが存在するか(すなわち、エントリフルか)どうかを調べる(ステップS17)。
エントリフルでなければ(ステップS17/N)、ストア制御装置100は、空いているwayのエントリにストアデータを格納(登録)する(ステップS18)。
エントリフルであると(ステップS17/Y)、ストア制御装置100は、追い出し制御回路116の論理に基づいて、ストアリクエストと共に、1つのwayのエントリのストアデータ(ライン単位)を主記憶装置114に出力する(追い出す)(ステップS19)。次に、ストア制御装置100は、追い出し対象のエントリに受け取ったリクエストに付随するストアデータを格納する(ステップS20)。
次に、ロードリクエストに対する動作について、さらに詳細に説明する。
プロセッサ111からのロードリクエストは、マージ回路112を経由してストアバッファ部101で受け取られる。マージ回路112は、ロードリクエストを、そのままストアバッファ部101に出力する。
ストアバッファ部101は、ロードリクエスト内のアドレス(中位)(index)によりアドレスアレイ301を索引し、すべてのwayの対応するエントリからエントリ情報を読み出す。次に、ストアバッファ部101は、比較回路309により、読み出したエントリ情報内のアドレス(上位)がロードリクエスト内のアドレス(上位)と一致するかどうかの比較を行う。
アドレス(上位)が一致しなければ、ストアバッファ部101は、セレクタ306を経由してロードリクエストをそのまま主記憶装置114に出力する。
アドレス(上位)が一致し、かつ、エントリ有効情報が有効を示していると、ストアバッファ部101は、ロードリクエストをレジスタ305に格納(待避)する。
次に、ストアバッファ部101は、エントリ選択回路303により、比較回路309で一致が検出されたwayのエントリ情報を選択する。
また、ストアバッファ部101は、ロードリクエスト内のアドレス(中位)(index)によりデータアレイ302を索引し、すべてのwayの対応するエントリからストアデータを読み出す。そして、ストアバッファ部101は、セレクタ307により、比較回路309で一致が検出されたwayのストアデータを選択する。
次に、ストアバッファ部101は、ストアコマンドを生成する。ストアバッファ部101は、ストアコマンド、エントリ選択回路303からのエントリ情報内のアドレス(上位)、有効ブロック情報、ロードリクエストからのアドレス(中位)をストアリクエストとして、セレクタ306を経由で主記憶装置114に出力する。また、そのとき、ストアバッファ部101は、セレクタ307からのストアデータ(128[B])を主記憶装置114に出力する。
次に、ストアバッファ部101は、主記憶装置114に出力したエントリ情報をエントリ情報更新回路304により削除する。すなわち、エントリ情報更新回路304は、当該エントリのエントリ情報のエントリ有効情報を無効を示すようにリセットする。そして、当該エントリは、空きとなる。このとき、エントリ情報更新回路304は、最新way番号を更新しない。また、エントリ情報更新回路304は、当該有効ブロック情報をすべてのブロックが無効を示す値にする。
また、ストアバッファ部101は、レジスタ305に格納しておいたロードリクエストをセレクタ306経由で主記憶装置114に出力する。主記憶装置114は受け取ったロードリクエスト内のアドレスに対応するロードデータ(128[B])を読み出してプロセッサ111に出力する。
次に、ストアリクエストに対する動作について、さらに詳細に説明する。
まず、リクエストで指定されたラインのストアデータがエントリに存在せず、indexで示されるエントリに空きがある場合について説明する。この場合、追い出し、マージは実施されない。
ストアバッファ制御部102のマージ回路112は、ストアリクエストをそのまま、出力する。また、マージ回路112は、リクエスト内のアドレス(下位)により指定されたブロックのみプロセッサ111からのストアデータを選択し、他のブロックに関しては、ストアバッファ部101からのストアデータを選択し、128[B]として出力する。
ストアバッファ部101は、ストアリクエスト内のアドレス(中位)(index)によりアドレスアレイ301を索引し、すべてのwayの対応するエントリからエントリ情報を読み出す。次に、ストアバッファ部101は、比較回路309により、読み出したエントリ情報内のアドレス(上位)がストアリクエスト内のアドレス(上位)と一致するかどうかの比較を行う。
この場合、アドレス(上位)が一致しないので、ストアバッファ部101のエントリ選択回路303は、追い出し制御回路116からの追い出し指示が、追い出しを示しているかどうかを調べる。この場合、追い出し指示は、追い出しを示していない(すなわち、空きエントリが存在する)。したがって、エントリ情報更新回路304は、エントリ選択回路303からの各wayのエントリ有効情報を参照し、ストアデータを格納(登録)するwayを示す格納way番号(空きである)を生成する。
また、エントリ情報更新回路304は、エントリ有効情報を有効を示す値(‘1’)にし、マージ完了情報をマージ完了でない値(‘0’)に、マージ中情報を、マージ中でない値(‘0’)にする。また、エントリ情報更新回路304は、有効ブロック情報をリクエストからのアドレス(下位)から生成し、格納way番号を最新way番号とする。
そして、エントリ情報更新回路304は、リクエストからのアドレス(上位)、格納way番号、エントリ有効情報、マージ完了情報、マージ中情報、有効ブロック情報、および、最新way番号を出力する。
アドレスアレイ制御回路310は、エントリ情報更新回路304の出力にしたがい、アドレスアレイ301のindexに対応した最新way番号の更新を行う。また、アドレスアレイ制御回路310は、アドレスアレイ301のindexに対応し、かつ、格納way番号で指定されたwayのエントリに対し、エントリ情報の登録を行う。
また、データアレイ制御回路311は、エントリ情報更新回路304の出力にしたがい、アドレスアレイ301のindexに対応し、かつ、格納way番号で指定されたwayのエントリに対し、マージ回路112からのストアデータの登録(格納)を行う。
なお、ストアリクエスト登録の際に、リクエスト内の優先指定情報が優先を指定する値(‘1’)の場合には、マージ完了情報を‘1’に、マージ中情報を‘0’にして登録する。これにより、追い出し動作の際に、このエントリが優先的に追い出される。
次に、ストアリクエストで指定されたラインのストアデータがエントリに存在する場合について説明する。この場合、追い出しは実施されず、マージは実施される。
ストアバッファ制御部102のストアバッファ部101は、ストアリクエスト内のアドレス(中位)(index)によりアドレスアレイ301を索引し、すべてのwayの対応するエントリからエントリ情報を読み出す。次に、ストアバッファ部101は、比較回路309により、読み出したエントリ情報内のアドレス(上位)がストアリクエスト内のアドレス(上位)と一致するかどうかの比較を行う。
この場合、アドレス(上位)が一致する。セレクタ308は、比較回路309の出力にしたがい、データアレイ302の一致が検出されたwayからのストアデータを選択し、マージ回路112に出力する。
マージ回路112は、ストアリクエストをそのまま、出力する。また、マージ回路112は、リクエスト内のアドレス(下位)により指定されたブロックのみプロセッサ111からのストアデータを選択し、他のブロックに関しては、セレクタ308からのストアデータを選択し、128[B]として出力する。
また、エントリ情報更新回路304は、比較回路309の出力にしたがって、アドレス(上位)が一致したwayの番号を格納way番号として生成する。この格納way番号で示されるwayにストアデータが格納(マージ)される。
また、エントリ情報更新回路304は、エントリ有効情報をそのままの値(‘1’)にし、マージ中情報を、マージ中の値(‘1’)にする。エントリ情報更新回路304は、リクエストからのアドレス(下位)から生成した有効ブロック情報をいままでの有効ブロック情報にマージする。
また、エントリ情報更新回路304は、マージした有効ブロック情報がすべてのブロックの有効を示すと、マージ完了情報をマージ完了の値(‘1’)にする。また、エントリ情報更新回路304は、格納way番号を最新way番号とする。
そして、エントリ情報更新回路304は、リクエストからのアドレス(上位)、格納way番号、エントリ有効情報、マージ完了情報、マージ中情報、有効ブロック情報、および、最新way番号を出力する。
アドレスアレイ制御回路310は、エントリ情報更新回路304の出力にしたがい、アドレスアレイ301のindexに対応し、かつ、格納way番号で指定されたwayのエントリに対し、エントリ情報の格納(更新)、および、最新way番号の更新を行う。
また、データアレイ制御回路311は、エントリ情報更新回路304の出力にしたがい、アドレスアレイ301のindexに対応し、かつ、格納way番号で指定されたwayのエントリに対し、マージ回路112からのストアデータの格納(更新)を行う。
なお、リクエスト内の優先指定情報が優先を指定する値(‘1’)の場合には、マージ完了情報を‘1’に、マージ中情報をそのままにして登録する。これにより、追い出し動作の際に、このエントリが優先的に追い出される。
次に、ストアリクエストで指定されたラインのストアデータがエントリに存在せず、indexで示されるエントリに空きがない場合について説明する。この場合、追い出しが実施され、マージは実施されない。
ストアバッファ部101は、ストアリクエスト内のアドレス(中位)(index)によりアドレスアレイ301を索引し、すべてのwayの対応するエントリからエントリ情報を読み出し出力する。
ストアバッファ制御部102のエントリフル検出回路115は、ストアバッファ部101のアドレスアレイ301からのエントリ有効情報に基づき、エントリフル情報を生成し出力する。この場合、すべてのwayのエントリ有効情報が有効を示すので、エントリフル情報は、エントリフルを示す。また、エントリフル検出回路115は、マージ完了情報、マージ中情報、および、最新way番号を出力する。
次に、ストアバッファ制御部102の追い出し制御回路116は、マージ完了情報、マージ中情報、最新way番号に基づいて、追い出しway番号を生成し出力する。追い出しway番号の生成の論理は、前述の図8、図9の説明のとおりである。
ここで、追い出し動作の一例について図面を参照して詳細に説明する。図13は、追い出し動作の一例を示す説明図である。図中、マージ未とは、マージ完了でも、マージ中でもないことを示す。
図13を参照すると、index=‘00’のエントリに関しては、マージ完了情報が‘1’であるのは、way−0のみである。したがって、way−0のエントリが追い出されるエントリである。
また、index=‘01’のエントリに関しては、マージ完了情報が‘1’であるエントリは存在しない。マージ中情報が、‘1’であるエントリは、way−0、way−1、way−3、way−4、way−5、および、way−6の複数存在する。最新way番号は、‘1’であり、way−1を示す。したがって、way−1の次のway−2、way−3と順次検索され、マージ中情報が‘1’であるway−3のエントリが追い出されるエントリとなる。
さらに、追い出し制御回路116は、エントリフル情報がエントリフルを示すと、追い出しを指示する追い出し指示を出力する。
また、ストアバッファ部101は、比較回路309により、読み出したエントリ情報内のアドレス(上位)がストアリクエスト内のアドレス(上位)と一致するかどうかの比較を行う。
この場合、アドレス(上位)が一致しないので、ストアバッファ部101のエントリ選択回路303は、追い出し制御回路116からの追い出し指示が、追い出しを示しているかどうかを調べる。この場合、追い出し指示は、追い出しを示している(すなわち、空きエントリが存在しない)。
そして、エントリ選択回路303は、追い出し制御回路116からの追い出しway番号で指定されたwayのエントリ情報を選択する。
また、ストアバッファ部101は、ロードリクエスト内のアドレス(中位)(index)によりデータアレイ302を索引し、すべてのwayの対応するエントリからストアデータを読み出す。そして、ストアバッファ部101は、セレクタ307により、追い出しway番号で指定されたwayのストアデータを選択する。追い出し制御回路116で生成された追い出しway番号は、エントリ選択回路303を経由し、エントリ情報更新回路304に受け取られる。エントリ情報更新回路304は、この場合、追い出しway番号に基づいてセレクタ307の選択信号を生成する。
次に、ストアバッファ部101は、ストアコマンドを生成する。そして、ストアバッファ部101は、ストアコマンド、エントリ選択回路303からのエントリ情報内のアドレス(上位)、有効ブロック情報、ストアリクエストからのアドレス(中位)をストアリクエストとして、セレクタ306を経由で主記憶装置114に出力する。また、そのとき、ストアバッファ部101は、セレクタ307からのストアデータ(128[B])を主記憶装置114に出力する。
次に、エントリ情報更新回路304は、エントリ選択回路303からの追い出しway番号を格納way番号として生成する。また、エントリ情報更新回路304は、エントリ有効情報を有効を示す値(‘1’)にし、マージ完了情報をマージ完了でない値(‘0’)に、マージ中情報を、マージ中でない値(‘0’)にする。また、エントリ情報更新回路304は、有効ブロック情報をリクエストからのアドレス(下位)から生成し、格納way番号を最新way番号とする。
そして、エントリ情報更新回路304は、リクエストからのアドレス(上位)、格納way番号、エントリ有効情報、マージ完了情報、マージ中情報、有効ブロック情報、および、最新way番号を出力する。
アドレスアレイ制御回路310は、エントリ情報更新回路304の出力にしたがい、アドレスアレイ301のindexに対応し、かつ、格納way番号で指定されたwayのエントリに対し、エントリ情報の格納、および、最新way番号の更新を行う。
また、データアレイ制御回路311は、エントリ情報更新回路304の出力にしたがい、アドレスアレイ301のindexに対応し、かつ、格納way番号で指定されたwayのエントリに対し、マージ回路112からのストアデータの格納を行う。
なお、リクエスト内の優先指定情報が優先を指定する値(‘1’)の場合には、マージ完了情報を‘1’に、マージ中情報を‘0’にして格納する。
第2の実施の形態においては、パイプライン方式の制御のために、適宜、情報を格納するパイプラインステージ対応のレジスタを設ける構成が可能である。また、ストア制御装置100と主記憶装置114との間にキャッシュを設ける構成が可能である。
次に、第2の実施の形態の効果について説明する。
第2の実施の形態は、第1の実施の形態のストア制御装置100を含み、マージ完了情報、マージ中情報、および、最新way番号から追い出しwayを決定する構成である。したがって、第1の実施の形態と同一の効果をもつ。
また、第2の実施の形態は、マージ完了情報、または、マージ完了情報のセットされたwayが複数存在する場合には、最新way番号の次のway番号から順次検索し、マージ完了情報、または、マージ中情報がセットされているwayを追い出し対象のwayとする構成である。したがって、最近アクセスのあったwayが追い出し対象にならない。よって、第2の実施の形態は、後続のリクエストによるマージの可能性が向上し、主記憶装置114に対するストア動作が減少し、性能が向上するという効果をもつ。
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。図14は、第3の実施の形態の構成を示すブロック図である。
図14を参照すると、プロセッサ111は、ストア制御装置100に対し、コア障害情報を出力する。ストア制御装置100のストアバッファ部101は、コア障害情報を受け取る。図15は、リクエストの内容を示す説明図である。図15を参照すると、第3の実施の形態のリクエストは、第2の実施の形態のリクエストにコア番号が追加されている。
図16は、エントリ情報の内容を示す説明図である。図16を参照すると、第3の実施の形態のエントリ情報は、第2の実施の形態のエントリ情報にコア番号が追加されている。図17、図18は、第3の実施の形態のストアバッファ部101の構成を示すブロック図である。図17、図18において、丸で囲まれた同一の数字の部分は接続される。図17、図18を参照すると、第2の実施の形態に追い出し指示差し替え回路320が追加されている。
以下、第2の実施の形態と相異する動作について説明する。
プロセッサ111は、複数のコアで構成されており、それぞれのコアがリクエストを出力する。それぞれのコアは、リクエストに固有のコア番号を含めて出力する。
ストア制御装置100は、リクエスト内のコア番号をエントリ情報に含めてストアバッファ部101のアドレスアレイ301に格納する。
プロセッサ111は、コアに障害が発生すると、コア障害情報に障害が発生したコアを示すコア番号を含めて出力する。ストアバッファ部101は、ストアリクエストにより、追い出しが発生すると、コア障害情報で示されるコア番号を含むエントリを優先して追い出し対象とする。
詳細には、追い出し指示差し替え回路320は、アドレスアレイ301からのすべてのwayのエントリ情報内のコア番号、プロセッサ111からのコア障害情報を受け取る。そして、追い出し指示差し替え回路320は、追い出し制御回路116から追い出し指示、追い出しway番号を受け取ると、コア障害情報で示されるコア番号とエントリ情報内のコア番号とを比較する。
比較で一致した場合、追い出し指示差し替え回路320は、その一致したコア番号を含むエントリ情報を格納しているwayを示す番号を追い出しway番号とする。比較で一致しない場合、追い出し指示差し替え回路320は、追い出し制御回路116からの追い出しway番号を、そのまま、追い出しway番号とする。
追い出し指示差し替え回路320は、追い出し指示、および、追い出しway番号をエントリ選択回路303に出力する。以降の動作は、第2の実施の形態と同一である。
次に、第3の実施の形態の効果について説明する。
第3の実施の形態は、第2の実施の形態の構成を含むので、第2の実施の形態と同一の効果をもつ。
また、第3の実施の形態は、障害の発生したコアに対応するストアデータを優先して追い出す構成である。したがって、障害の発生したコアのエントリ情報、ストアデータを長期間、ストアバッファ部101に格納することがなく、ストアバッファ部101を効率的に利用できるという効果をもつ。
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
[付記1]
ブロック単位のストアデータを伴うストアリクエストを受け取り、ストアデータを複数のブロックを含むライン単位で格納する複数wayを含むストアバッファ部と、
前記ストアバッファ部のライン内のすべてのブロックが前記ストアバッファ部内に存在するwayを優先してストアデータを追い出す制御を行うストアバッファ制御部と、
を含むことを特徴とするストア制御装置。
[付記2]
前記ストアバッファ部のライン内のすべてのブロックが存在するwayが複数存在する場合、最新way番号の次のway番号から順次検索し、ライン内のすべてのブロックが存在するwayを優先してストアデータを追い出す制御を行う前記ストアバッファ制御部を含むことを特徴とする付記1のストア制御装置。
[付記3]
前記ストアバッファ部のライン内のすべてのブロックが存在するwayが存在しない場合、マージが実施されたブロックが存在するwayを優先してストアデータを追い出す制御を行う前記ストアバッファ制御部を含むことを特徴とする付記2のストア制御装置。
[付記4]
前記ストアバッファ部のライン内のすべてのブロックが存在するwayが存在せず、マージが実施されたブロックが存在するwayが複数存在する場合、最新way番号の次のway番号から順次検索し、マージが実施されたブロックが存在するwayを優先してストアデータを追い出す制御を行う前記ストアバッファ制御部を含むことを特徴とする付記3のストア制御装置。
[付記5]
優先指定情報を含むストアリクエストを受け取ると、ストアデータを前記ストアバッファ部に格納し、そのストアデータを格納したライン内のすべてのブロックが前記ストアバッファ部内に存在するとして制御を行う前記ストアバッファ制御部を含むことを特徴とする付記4のストア制御装置。
[付記6]
コア番号を含むリクエストを受け取ると、コア番号を前記ストアバッファ部に格納し、コア障害情報を受け取ると、コア障害情報に含まれるコア番号と、前記ストアバッファ部内のコア番号の一致を調べ、一致したコア番号を含むwayのストアデータを優先して追い出す制御を行うことを特徴とする付記5のストア制御装置。
[付記7]
付記1、2、3、4、5、または、6の前記ストア制御装置と、
ブロック単位のストアデータを伴うストアリクエストを前記ストア制御装置に出力するプロセッサと、
前記ストア制御装置から追い出されたストアデータを格納する主記憶装置と、
を含むことを特徴とする情報処理装置。
[付記8]
ブロック単位のストアデータを伴うストアリクエストを受け取り、ストアデータを複数のブロックを含むライン単位で格納する複数wayを含むストアバッファ部に対し、ライン内のすべてのブロックが前記ストアバッファ部内に存在するwayを優先してストアデータを追い出すことを特徴とするストア制御方法。
[付記9]
前記ストアバッファ部のライン内のすべてのブロックが存在するwayが複数存在する場合、最新way番号の次のway番号から順次検索し、ライン内のすべてのブロックが存在するwayを優先してストアデータを追い出すことを特徴とする付記8のストア制御方法。
[付記10]
前記ストアバッファ部のライン内のすべてのブロックが存在するwayが存在しない場合、マージが実施されたブロックが存在するwayから優先してストアデータを追い出すことを特徴とする付記9のストア制御方法。
[付記11]
前記ストアバッファ部のライン内のすべてのブロックが存在するwayが存在せず、マージが実施されたブロックが存在するwayが複数存在する場合、最新way番号の次のway番号から順次検索し、マージが実施されたブロックが存在するwayを優先してストアデータを追い出すことを特徴とする付記10のストア制御方法。
[付記12]
優先指定情報を含むストアリクエストを受け取ると、ストアデータを前記ストアバッファ部に格納し、そのストアデータを格納したライン内のすべてのブロックが前記ストアバッファ部内に存在するとして処理することを特徴とする付記11のストア制御方法。
[付記13]
コア番号を含むリクエストを受け取ると、コア番号を前記ストアバッファ部に格納し、コア障害情報を受け取ると、コア障害情報に含まれるコア番号と、前記ストアバッファ部内のコア番号の一致を調べ、一致したコア番号を含むwayのストアデータを優先して追い出す付記12のストア制御方法。