JP2004021896A - キャッシュフィル制御方法及びcpu - Google Patents
キャッシュフィル制御方法及びcpu Download PDFInfo
- Publication number
- JP2004021896A JP2004021896A JP2002179674A JP2002179674A JP2004021896A JP 2004021896 A JP2004021896 A JP 2004021896A JP 2002179674 A JP2002179674 A JP 2002179674A JP 2002179674 A JP2002179674 A JP 2002179674A JP 2004021896 A JP2004021896 A JP 2004021896A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- data
- cache
- subsequent
- fill
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】先行命令のキャッシュミスを契機として先行命令がアクセスするデータを含む1ライン分のデータを複数のブロックに分割して順次メインメモリ2からデータアレイ112に書き込む。キャッシュフィルが行われている間に、上記先行命令と同一のライン上のデータをアクセスする後続命令がキャッシュミスとなった時、後続命令は命令制御部10内の命令バッファに戻される。命令バッファは、後続命令がアクセスするデータを含むブロックがデータアレイ112に書き込まれた段階で上記後続命令を再発行する。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、パイプライン制御を行うCPUにおけるキャッシュフィル制御技術に関し、特に、キャッシュミスした先行命令と同一ライン上のデータをアクセスする後続命令を効率的に実行できるようにするキャッシュフィル制御技術に関する。
【0002】
【従来の技術】
キャッシュの制御においてラインサイズはヒット率と関係がある。一般にラインサイズが長くなるほどヒット率は上昇する。これはプログラムの空間的局所性に関係があり、ある項目が参照された場合、その項目の近くが参照される確率が高いからである。このためラインサイズを長くとる傾向がある。
【0003】
【発明が解決しようとする課題】
しかしながらラインサイズが長くなるにつれキャッシュフィル時間が長くなる問題が発生する。ラインサイズが短い場合はメインメモリからキャッシュに書くキャッシュフィル時間が短いため、キャッシュフィルが完了したのちに同一ラインの後続命令を実行しても性能にそれほど影響がない。ラインサイズが長い場合、キャッシュフィルが完了したのちに同一ラインの後続命令を実行することになるので命令バッファ内に待機する時間が長くなり性能が低下する。
【0004】
そこで、本発明の目的は、データアレイのラインサイズを長くした場合でも、キャッシュミスした先行命令と同一ライン上のデータをアクセスする後続命令を効率的に実行できるようにすることにある。
【0005】
【課題を解決するための手段】
本発明のキャッシュフィル制御方法は、上記目的を達成するため、
キャッシュミスした先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった場合、前記後続命令を命令バッファに戻し再発行するキャッシュフィル制御方法であって、
前記先行命令のキャッシュミスを契機に実行されるキャッシュフィルにおいて前記後続命令がアクセスするデータがデータアレイに書き込まれた段階で前記後続命令を再発行することを特徴とするキャッシュフィル制御方法。
【0006】
より具体的には、本発明のキャッシュフィル制御方法は、
先行命令のキャッシュミスを契機として前記先行命令がアクセスするデータを含む1ライン分のデータを複数のブロックに分割して順次データアレイに書き込み、
前記先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった時、前記後続命令を命令バッファに戻し、
前記後続命令がアクセスするデータを含むブロックが前記データアレイに書き込まれた段階で前記後続命令を再発行する。
【0007】
また、本発明においては、キャッシュフィル開始時に、カウント動作を開始し、1ブロックの転送が行われる毎にカウントアップされるフィルカウンタのカウント値に基づいて、前記後続命令がアクセスするデータを含むブロックが、前記データアレイに書き込まれたか否かを判定するようにすることができる。
【0008】
また、本発明は、1ラインを複数のデータに分割してデータアレイに書き込む際の書き込み順が一定でない場合であっても対応できるようにするため、
先行命令のキャッシュミスを契機として前記先行命令がアクセスするデータを含む1ライン分のデータを複数のデータに分割して任意の順番でデータアレイに書き込み、
前記先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった時、前記後続命令を命令バッファに戻し、
前記後続命令がアクセスするデータを含むブロックが前記データアレイに書き込まれていることをデータ登録TAGに基づいて検出した場合、前記後続命令を再発行する。
【0009】
【作用】
上述した構成によれば、先行命令と同一ライン上でデータをアクセスする後続命令がキャッシュミスとなると、上記後続命令は命令バッファに戻されるが、先行命令のキャッシュミスを契機に実行されるキャッシュフィルにおいて後続命令がアクセスするデータがデータアレイに書き込まれた段階で、後続命令の再発行が行われることになるので、1ライン分のデータが全てデータアレイに書き込まれた後、後続命令を再発行していた従来の技術に比較して、後続命令を効率的に実行することが可能になる。従って、ラインサイズを大きくし、ヒット率を向上させるようにしても、命令を効率的に実行することが可能になる。
【0010】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【0011】
図1は本発明の実施例の全体の構成例を示すブロック図であり、CPU1とメインメモリ2とから構成されている。
【0012】
CPU1は、out−of−order実行を行うものであり、命令制御部10とキャッシュユニット11とを含んでいる。キャッシュユニット11は、キャッシュ制御部110、アドレスアレイ111、データアレイ112及びミスレジスタバッファ113から構成されている。メインメモリ2は、キャッシュユニット11とデータのやりとりを行う。
【0013】
図2は図1の命令制御部10の詳細とその周辺部分とを示したブロック図である。命令制御部10は、大きく以下の6つのステージに分かれている。
【0014】
命令登録ステージ(以下Rステージ)101は、命令を蓄える命令バッファ1010とリオーダバッファ(以下ROB)1011とから構成され、命令バッファ1010に蓄えた命令を、条件がそろった時点において発行する。また、ROB1011に蓄えられた命令は、上記命令の実行が終了し、且つ、それに先行する命令も全て完了してはじめてROB1011から削除される。
【0015】
命令発行ステージ(以下EIステージ)102は、EIステージレジスタ1020と、アドレス計算機1021と、スカラレジスタ1022(以下SR)と、SR1022にアクセスするリードアドレス、ライトアドレスを保持するリードアドレスレジスタ1023、ライトアドレスレジスタ1024とから構成されている。EIステージ102では、命令の発行を行うと共に、SR1022からデータを読み出しアドレス計算を行う。
【0016】
命令実行ステージ(以下EEステージ)103は、EEステージレジスタ1030と、アドレス結果レジスタ1031とを備えている。EEステージ103では、EEステージレジスタ1030が有効になり、アドレス計算機1021の計算結果がアドレス結果レジスタ1031に格納される。
【0017】
キャッシュアクセスステージ(以下ECステージ)104は、ECステージレジスタ1040を備えており、キャッシュヒットの判定を行う。
【0018】
ライトバックステージ(以下EWステージ)105は、EWステージレジスタ1050と、ライトデータレジスタ1051と、同一ラインアドレス判定結果レジスタ1052とから構成される。EWステージ105では、キャッシュユニット11からライトデータレジスタ1051に書くデータを決定する。
【0019】
命令終了ステージ(以下EYステージ)106は、EYステージレジスタ1060と、同一ラインアドレスチェック報告1061と、命令終了報告1062を出力するインヒビットゲート1063とから構成される。EYステージ106では命令が終了したかどうかを判定する。
【0020】
図3は命令バッファ1010および各ステージバッファの構成例を示すブロック図である。命令バッファ1010は、複数のエントリ10100〜10105から構成されている。各エントリ10100〜10105には、エントリ内の命令が有効であることを示す有効ビットVと、エントリ内の命令が命令バッファ1010から発行されたか否かを示す命令未発行Nと、命令が解放可能であるか否かを示す解放報告Fと、先行する命令と同一ラインをアクセスする命令であるか否かを示す同一ラインチェックDと、ミスレジスタバッファ113のどのエントリに登録されている命令と同一ラインのデータをアクセスする命令であるのかを示すエントリ番号Mと、ライン内のチェックポイントを示すフィル番号Rと、ROB1011内のエントリ番号を示すWRB番号WRBと、命令コードOPと、XオペランドXと、YオペランドY、ZオペランドZとが設定される。
【0021】
また各ステージ(EI、EE、EC、EW、EY)のステージレジスタには、各ステージにおける有効ビットV、WRB番号WRB、命令コードOPが設定される。
【0022】
図4はキャッシュユニット11の詳細とその周辺部分のブロック図である。
【0023】
アドレス結果レジスタ1031は、サイズが40bitで、タグアドレス10310 、インデックスアドレス10311及びブロック内アドレス10312を格納する。本実施例では、タグアドレス10310 、インデックスアドレス10311及びブロック内アドレス10312のサイズは、それぞれ25bit、5bit、10bitであるとする。
【0024】
キャッシュ制御部110は、HIT/MISS判定結果レジスタ1100と、エントリ登録制御用のゲート回路1101と、フィル開始報告1102に従ってカウント値「1」からカウント動作を開始し、カウント値が1ラインのブロック数と同一値(本実施例の場合は「4」)となった場合、カウント動作を停止するフィルカウンタ1103と、タグアドレス比較用の比較器1104と、HIT/MISS判定器1105と、ブロック内アドレス10312に対応するフィル番号を出力するデコーダ1106と、同一ラインアドレス比較器1107と、インヒビットゲート1108と、ゲート回路1109と、比較器1110と、フィル終了検出器1111と、フィル実行中であるか否かを表示するレジスタ1112と、1113とから構成されている。尚、フィルカウンタ1103のカウント値を更新させる周期は、1ブロック分のデータをフィルする時間と同一値とする。
【0025】
アドレスアレイ111は、有効ビットV0〜V31とタグアドレス0〜タグアドレス31とから構成される。
【0026】
データアレイ112は、アドレスアレイ111に対応するデータが格納され、インデックスアドレス10311とブロック内アドレス10312により指摘されたデータを出力する。また、データアレイ112は、ライン中のどこにデータを書き込むのかを示すデータ書き込みTAG117に基づいて、キャッシュフィル時にメインメモリ2から送られてくるデータの書き込みを行う。
【0027】
ミスレジスタバッファ113は、4個のエントリ#1〜#4から構成され、各エントリ#1〜#4には、エントリ内の命令が有効であるか否かを示す有効ビットVと、ROB1011内の番号を示すWRB番号WRBと、命令コードOPと、ターゲットアドレスと、4個のフィルチェックビット1,2,3,4とが格納される。フィルチェックビット1,2,3,4は、1ラインを4つのブロックに分割して行われるキャッシュフィルにおいて、どのブロックまでキャッシュフィルが完了したかを表示する。
【0028】
【実施例の動作の説明】
次に本実施例の動作を図2〜図6を参照して詳細に説明する。
【0029】
Rステージ101では命令が命令バッファ1010及びROB1011に登録される。その際、命令バッファ1010には、有効ビットVなども登録される。
【0030】
EIステージ102では、命令バッファ1010からの命令(ロード命令とする)がEIステージレジスタ1020に保持され、EIステージレジスタ1020が有効になる。また、リードアドレスレジスタ1023中のリードアドレスY,Z(上記命令中のY,ZオペランドY,Z)によって読み出されたSR1022のデータ(例えば、ベースアドレスと変位)がアドレス計算機1021に入力され、アドレス計算機1021においてアドレス計算(例えば、ベースアドレスと変位との加算)が行われる。また、命令バッファ1010内の上記命令の命令未発行Nが”0”になり、上記命令が発行されたことを示す。
【0031】
EEステージ103では、EEステージレジスタ1030が有効になり、アドレス計算機1021の演算結果がアドレス結果レジスタ1031に格納される。
【0032】
ECステージ104では、ECステージレジスタ1040が有効になり、アドレス結果レジスタ1031中のアドレスによって示されるデータ(ターゲットデータ)がキャッシュユニット11中に存在するか否かの判定(キャッシュヒットの判定)が行われる。このキャッシュヒットの判定は、キャッシュユニット11内のHIT/MISS判定器1105により行われる。以下に、キャッシュヒットの判定動作について、詳細に説明する。尚、キャッシュヒットの判定動作は、キャッシュフィルが行われている場合と、行われていない場合とで異なるので、以下では場合分けして説明する。
【0033】
A.キャッシュフィルが行われていない場合のキャッシュヒットの判定動作
キャッシュフィルが行われていない場合は、フィル終了検出器1111の出力が”1”になっており、セレクタ1113がキャッシュフィル中でないことを示す”0”を選択している。この結果、キャッシュフィルが行われていない場合には、キャッシュフィル中であるか否かを示すレジスタ1112の値が、キャッシュフィル中でないことを示す”0”になっている。尚、フィル終了検出器1111は、フィルカウンタ1103のカウント値が「4」になってから、1ブロック分のデータのフィル時間が経過した時、その出力を”1”とする。
【0034】
従って、キャッシュフィルが行われていない期間においては、インヒビットゲートIの出力が常時”1”になるので、HIT/MISS判定器1105は、比較器1104によってアドレス結果レジスタ1031中のタグアドレス10310と、アドレス結果レジスタ1031中のインデックスアドレス10311によって示されるアドレスアレイ111中のタグアドレスとが一致すると判定され、且つアンドゲートA1によって上記インデックスアドレス10311によって示されるアドレスアレイ111中の有効ビットVi(図4の例の場合、0≦i≦31)の値が有効を示す”1”であると判定された場合のみ、アンドゲートA2を介してHIT/MISS判定結果レジスタ1100にキャッシュヒットを示す”1”を格納し、それ以外の場合は、キャッシュミスを示す”0”を格納することになる。
【0035】
B.キャッシュフィルが行われている場合のキャッシュヒットの判定動作
キャッシュフィルの開始時には、フィル開始報告1102が”1”となるので、セレクタ1113を介してレジスタ1112にキャッシュフィル中であることを示す値”1”が格納される。
【0036】
従って、キャッシュフィルが行われている期間においては、HIT/MISS判定器1105は、比較器1110によってデコーダ1106から出力されるフィル番号がフィルカウンタ1103の値によって示されるフィル番号よりも小さいと判定され、且つ、比較器1104によってアドレス結果レジスタ1031中のタグアドレス10310と、アドレス結果レジスタ1031中のインデックスアドレス10311によって示されるアドレスアレイ111中のタグアドレスとが一致すると判定され、且つアンドゲートA1によって上記インデックスアドレス10311によって示されるアドレスアレイ111中の有効ビットVi(図4の例の場合、0≦i≦31)の値が有効を示す”1”であると判定された場合のみ、アンドゲートA2を介してHIT/MISS判定結果レジスタ1100にキャッシュヒットを示す”1”を格納し、それ以外の場合は、キャッシュミスを示す”0”を格納することになる。
【0037】
EWステージ105では、HIT/MISS判定結果レジスタ1100に格納されている値が”1”(キャッシュヒット)であるか、”0”(キャッシュミス)であるかによって、異なる動作を行う。先ず、キャッシュヒットした場合の動作について説明する。
【0038】
1.キャッシュヒットした場合の動作
キャッシュヒットした場合、HIT/MISS判定結果レジスタ1100の値が”1”であるので、データアレイ112から読み出されたデータ(アドレス結果レジスタ1031中のインデックスアドレス10311およびブロック内アドレス10312によって特定されるデータ)がセレクタ116によって選択され、ライトデータレジスタ1051に書き込まれる。また、命令は、そのまま、EWステージ105からEYステージ106に進む。
【0039】
EYステージ106では、EYステージレジスタ1060の内容および命令終了報告1062を命令バッファ1010およびROB1011に送る。命令終了報告1062を出力するインヒビットゲート1063は、同一ラインアドレス判定結果レジスタ1052の出力値を反転したものと、EYステージレジスタ1060中の有効ビットVとの論理積を出力するものである。この時点では、同一ラインアドレス判定結果レジスタ1052の出力は、”0”となっているので、有効ビットVの値が命令終了報告1062として出力される。従って、有効な命令の実行が終了した場合は、命令終了報告1062として”1”が命令バッファ1010およびROB1011に送られる。命令バッファ1010は、命令終了報告1062が”1”となると、保持している命令の内、EYステージレジスタ1060から送られてきているWRB番号WRBと同一のWRB番号WRBを含んでいる命令を解放する。また、ROB1011は、上記WRB番号WRBで示される命令を、それに先行する全ての命令が完了していることを条件にして解放する。
【0040】
2.キャッシュミスした場合の動作
キャッシュミスした場合は、同一ラインアドレス比較器1107でタグアドレス10310とミスレジスタバッファ113に登録されているターゲットアドレスとを比較することにより、ECステージレジスタ1040に登録されている命令と同一ラインのデータをアクセスする命令がミスレジスタバッファ113に登録されているかをチェックする。即ち、同一ラインアドレス比較器1107は、ミスレジスタバッファ113中の何れかのエントリにタグアドレス10310と同一のターゲットアドレスが登録されているかを調べ、登録されている場合はその出力信号を”1”にし、登録されていない場合はその出力信号を”0”とする。
【0041】
その後、ECステージレジスタ1040に登録されている命令と同一ラインのデータをアクセスする命令がミスレジスタバッファ113に登録されているか否かによって、次のような動作が行われる。先ず、同一ラインの命令が登録されていない場合の動作を説明する。
【0042】
2−1.同一ラインのデータをアクセスする命令が登録されていない場合の動作登録されていない場合は、同一ラインアドレス比較器1107の出力信号が”0”となるので(このとき、HIT/MISS判定結果レジスタ1100は”0”)、エントリ登録制御用のゲート回路1101の制御により、ミスレジスタバッファ113の空きエントリ(空きエントリが無い場合は最もデータの格納時期が古いエントリ)に、ECステージレジスタ1040に格納されている有効ビットV、WRB番号WRB、命令コードOPが登録されると共に、インヒビットゲート1108を介して上記エントリにタグアドレス10310が登録される。また、これと同時に、同一ラインアドレス判定結果レジスタ1052にゲート回路1109を介して比較器1107の出力である”0”を書き込み、命令終了報告1062を”1”とすると共に、今回書き込んだ命令中のWRB番号WRBを含むミスレジスタ登録報告1055を命令バッファ1010へ送信する。これにより、命令バッファ1010は、保持している命令の内、ミスレジスタ登録報告1055に含まれているWRB番頭WRBと同一のWRB番号WRBを含む命令を解放する。
【0043】
メインメモリ2に対してメモリアクセス指示を出し、メモリアクセスを行い、データをデータアレイ112に書き込む。また、データの書き込み開始時、該当する有効ビットViを”1”とする。データアレイ112に書き込む時に、メインメモリ2からのフィル開始報告1102によりフィルカウンタ1103が動作を開始し、データがどこまでフィルされたかを示すフィルチェックビットをミスレジスタバッファ113の該当するエントリ(命令を登録したエントリと同一エントリ)に書き込む。即ち、1ライン分のデータをデータアレイ112に書き込む際、1ライン分のデータをN個(図4の例ではN=4)のブロックに分割してフィルするが、何番目のブロックまでフィルしたかを示す情報をフィルチェックビットとして書き込む。ターゲットデータがターゲットデータレジスタ114に書き込まれたら、ECステージ104から命令を再開し、EWステージ105、EYステージ106に進み、命令バッファ1010、ROB1011に命令終了報告1062を行う。
【0044】
次に、同一ラインのデータをアクセスする命令が登録されている場合の動作について説明する。
【0045】
2−2.同一ラインのデータをアクセスする命令が登録されている場合の動作
同一ラインのデータをアクセスする命令が登録されている場合は、ゲート回路1109によって、同一ラインアドレス比較器1107の出力である”1”が同一ラインアドレス判定結果レジスタ1052に書き込まれる。これと同時に、デコーダ1106から出力されるフィル番号1054と、同一ラインをアクセスする先行命令が登録されているミスレジスタバッファ113のエントリのエントリ番号および上記エントリ中にWRBとを含むエントリ番号報告1053とが命令バッファ1010に送られる。デコーダ1106は、ブロック内アドレス10312に基づいて、現在処理対象にしている後続の命令がアクセスするデータが、どのブロック中のデータであるのかを示すフィル番号1054を出力するものである。例えば、本実施例のように、4つのブロックに分けてフィルする場合は、ブロック内アドレス10312の上位2ビットをフィル番号1054として出力する。
【0046】
命令バッファ1010は、保持している命令の内の、エントリ番号報告1053中のWRB番号WRBによって示される命令の命令未発行Nを再点灯し(N=”1”)、上記命令を待機させる。また、命令バッファ1010は、上記命令中のフィル番号Rにフィル番号1054を設定すると共に、上記命令のエントリ番号Mに、エントリ番号報告1053に含まれているエントリ番号を設定する。
【0047】
また、キャッシュユニット11から命令バッファ1010へは、フィル完了報告1056として、ミスレジスタバッファ113の各エントリのフィルチェックビットが送られている。
【0048】
命令バッファ1010は、保持している命令の内、エントリ番号Mおよびフィル番号Rが設定されている命令については、エントリ番号M、フィル番号Rおよびフィル完了報告1056に基づいて命令の再発行が可能になったか否かを判断し、再発行可能と判断したら、上記命令を再発行する。再発行後はキャッシュヒットした場合と同じ動きをする。尚、上記命令の再発行時、この命令と同一ラインのデータをアクセスする先行命令の情報は、ミスレジスタバッファ113から削除される。
【0049】
ここで、命令再発行が可能になったか否かをどのようにして判断するのかを具体例を挙げて説明する。今、エントリ番号Mが#3、フィル番号Rが「2」の命令が命令バッファ1010に登録されていたとする。この場合、命令バッファ1010は、上記した命令については、フィル完了報告1056に含まれている各エントリ#1〜#4のフィルチェックビットの内、エントリ番号Mによって示されるエントリ#3に対するフィルチェックビットの値が、フィル番号Rによって示される値「2」以上の値になっているか否かをチェックし、「2」以上になっている場合は、命令の再発行が可能であると判断する。
【0050】
次に、図6及び図7のタイムチャートを参照して本実施例の効果について説明する。
【0051】
図6は、フィルチェックを行わない従来の技術のタイムチャートである。先行のロード命令(LDS)は、キャッシュミスとなり、ミスレジスタバッファ113に登録される。先行するLDSと同一ラインのデータをアクセスする後続のLDSは、キャッシュミスとなった後、先行するLDSがミスレジスタバッファ113に登録されているので、命令バッファ1010に再登録される。後続のLDSは、キャッシュミスとなった先行するLDSがアクセスするラインのキャッシュフィルが終了した段階で再発行される。キャッシュフィルはラインが長くなれば長くなり、また後続命令の必要なデータはキャッシュフィルが終了する前に既にキャッシュに登録されている可能性もある。このためラインの始めの方のデータがほしい場合、データがデータアレイ112に登録されているにもかかわらず再発行ができないままである。
【0052】
図7はキャッシュフィルチェックを行う本実施例のタイムチャートである。先行のLDSがキャッシュミスすると、ミスレジスタバッファ113に登録される。先行するLDSと同一ラインのデータをアクセスする後続のLDSは、ミスレジスタバッファ113に先行するLDS命令が登録されているので、命令バッファ1010に再登録される。図6に示した従来の技術では、1ライン分のキャッシュフィルが完了した後、後続のLDSが再発行されるが、本実施例では、キャッシュフィルチェックがあるので、1ライン分のキャッシュフィルの完了を待つことなく、後続のLDSを再発行することができる。例えば、先行する命令が第1番目にフィルされるブロック中のデータ(フィルチェックの値が「1」の時にフィルされるブロック中のデータ)をアクセスし、後続のLDSが第2番目にフィルされるブロック中のデータ(フィルチェックの値が「2」の時にフィルされるブロック中のデータ)をアクセスするものである場合は、第2番目のキャッシュフィルが行われた時点で後続するLDSを再発行することが可能になる。図6と図7を比べた場合、フィルチェックがついた本実施例の方が4T早く命令を再発行できることになる。尚、図7では、1ブロックのフィルに要する時間を2Tとしている。
【0053】
図8はキャッシュユニットの他の構成例を示すブロック図である。図8に示したキャッシュユニット11aは、ミスレジスタバッファ113の代わりにミスレジスタバッファ113aを備えている点、ゲート回路G1〜G4を備えている点、フィル終了検出器1111の代わりにゲート回路1114を備えている点、比較器1110の代わりに比較器1110aを備えている点及びフィルカウンタ1103を備えていない点が図4に示したキャッシュユニット11と相違している。
【0054】
ミスレジスタバッファ113aは、フィルチェックビット1,2,3,4の代わりにデータ対応Vビットが格納される点がミスレジスタバッファ113と相違している。尚、データ対応V情報の第1ビット〜第3ビット、第4ビット〜第6ビット、第7ビット〜第9ビット、第10ビット〜第12ビットは、それぞれ前述したフィルチェックビット1、2、3、4に対応するものである。データ対応V情報は、1ラインを12個のデータに分割して行われるキャッシュフィルにおいて、どのデータのキャッシュフィルが完了したかを表示するものであり、12ビットから構成される。例えば、12個のデータの内、第1番目及び第12番目のデータのキャッシュフィルが完了した場合には、データ対応V情報は、”100000000001”となり、また、例えば、第1番目及び第3番目のデータのキャッシュフィルが完了した場合には、データ対応V情報は、”101000000000”となる。
【0055】
ゲート回路G1は、4ビット構成のフィル完了情報を出力するものであり、ミスレジスタバッファ113aのエントリ#1に格納されているデータ対応V情報の第1ビット〜第3ビットが全て”1”の場合、フィル完了情報の第1ビットを”1”とし、エントリ#2に格納されているデータ対応V情報の第1ビット〜第3ビットが全て”1”の場合、フィル完了情報の第2ビットを”1”とし、エントリ#3に格納されているデータ対応V情報の第1ビット〜第3ビットが全て”1”の場合、フィル完了情報の第3ビットを”1”とし、エントリ#4に格納されているデータ対応V情報の第1ビット〜第3ビットが全て”1”の場合、フィル完了情報の第4ビットを”1”とする。また、ゲート回路G2、G3、G4は、それぞれエントリ#1〜#4に格納されているデータ対応V情報の第4ビット〜第6ビット、第7ビット〜第9ビット、第10ビット〜第12ビットを対象にして上述したフィル完了情報を出力する。
【0056】
比較器1110aは、デコーダ1106から出力されるフィル番号が「1」の場合は、ゲート回路G1から出力される4ビット構成のフィル完了情報の内の、先行する命令が格納されているエントリに対応するビットが”1”の場合、その出力信号を”1”とする。また、フィル番号が「2」、「3」、「4」の場合は、それぞれゲート回路G2、G3、G4から出力される4ビット構成のフィル完了情報の内の、先行する命令が格納されているエントリに対応するビットが”1”の場合、その出力信号を”1”とする。
【0057】
キャッシュユニット11aは、キャッシュミスが発生し、且つキャッシュミスの発生した命令がミスレジスタバッファ113aに登録されていない場合、前述した実施例と同様に、ミスレジスタバッファ113aの空きエントリに上記命令を登録すると共に、メインメモリ2に対してメモリアクセス指示を出す。これにより、メインメモリ2は、1ラインを12個のブロックに分割し、各ブロックのデータを順次出力すると共に、データを1ラインのどこに書き込むのか、言い換えれば、どのブロックのデータを出力しているのかを示すデータ書き込みTAG117を出力する。
【0058】
キャッシュユニット11aは、メインメモリ2からデータ書き込みTAG117が出力されると、ミスレジスタバッファ113aの上記命令を登録したエントリの、データ対応V情報の該当するビットに”1”を立てる。例えば、命令を登録したエントリが#1で、データ書き込みTAG117が、第5番目のブロックのデータの書き込みを示している場合は、エントリ#1のデータ対応V情報の第5ビットに”1”を立てる。
【0059】
ゲート回路G1〜G4から出力されるフィル完了情報が、フィル完了報告1056として命令バッファ1010に送られる。命令バッファ1010は、フィル番号R、エントリ番号Mが設定されている命令については、エントリ番号M、フィル番号Rによって示されるフィル完了報告1056中のビット(例えば、エントリ番号M=2で、フィル番号R=3である場合は、ゲート回路G3から出力されるフィル完了情報の第2ビット目)が”1”であれば、キャッシュフィルが完了したと判断し、命令を再発行する。
【0060】
【発明の効果】
以上説明したように、本発明は、先行命令のキャッシュミスを契機に実行されるキャッシュフィルにおいて後続命令がアクセスするデータがデータアレイに書き込まれた段階で、後続命令の再発行が行われることになるので、1ライン分のデータが全てデータアレイに書き込まれた後、後続命令を再発行していた従来の技術に比較して、後続命令を効率的に実行することが可能になる。従って、ラインサイズを大きくし、ヒット率を向上させるようにしても、命令を効率的に実行することが可能になる。
【0061】
また、本発明は、後続命令がアクセスするデータを含むブロックがデータアレイに書き込まれていることをデータ登録TAGに基づいて検出した場合、前記後続命令を再発行するので、1ラインを複数のデータに分割してデータアレイに書き込む際の書き込み順が一定でない場合であっても対応できる。
【図面の簡単な説明】
【図1】本発明の実施例の全体の構成例を示すブロック図である。
【図2】命令制御部10の詳細とその周辺部分とを示したブロック図である。
【図3】命令バッファ1010及び各ステージレジスタの構成例を示すブロック図である。
【図4】キャッシュユニット11の詳細とその周辺部分のブロック図である。
【図5】実施例の動作を説明するためのタイムチャートである。
【図6】従来の技術の問題点を説明するためのタイムチャートである。
【図7】本発明の効果を説明するためのタイムチャートである。
【図8】キャッシュユニット11aの詳細とその周辺部分のブロック図である。
【符号の説明】
1…CPU
10…命令制御部
101…命令登録ステージ
1010…命令バッファ
1011…ROB
102…命令発行ステージ
1020…命令発行ステージレジスタ
1021…アドレス計算機
1022…SR
1023…リードアドレスレジスタ
1024…ライトアドレスレジスタ
103…命令実行ステージ
1030…命令実行レジスタ
1031…アドレス結果レジスタ
104…キャッシュアクセスステージ
1040…キャッシュアクセスステージレジスタ
105…ライトバックステージ
1050…ライトバックステージレジスタ
1051…ライトデータレジスタ
1052…同一ラインアドレス判定結果レジスタ
106…命令終了ステージ
1060…命令終了ステージレジスタ
1061…同一ラインアドレスチェック報告
1062…命令終了報告
1063…インヒビットゲート
11…キャッシュユニット
110…キャッシュ制御部
111…アドレスアレイ
112…データアレイ
113…ミスレジスタバッファ
2…メインメモリ
Claims (10)
- キャッシュミスした先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった場合、前記後続命令を命令バッファに戻し再発行するキャッシュフィル制御方法であって、
前記先行命令のキャッシュミスを契機に実行されるキャッシュフィルにおいて前記後続命令がアクセスするデータがデータアレイに書き込まれた段階で前記後続命令を再発行することを特徴とするキャッシュフィル制御方法。 - 先行命令のキャッシュミスを契機として前記先行命令がアクセスするデータを含む1ライン分のデータを複数のブロックに分割して順次データアレイに書き込み、
前記先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった時、前記後続命令を命令バッファに戻し、
前記後続命令がアクセスするデータを含むブロックが前記データアレイに書き込まれた段階で前記後続命令を再発行することを特徴とするキャッシュフィル制御方法。 - 請求項2記載のキャッシュフィル制御方法において、
キャッシュフィル開始時に、カウント動作を開始し、1ブロックの転送が行われる毎にカウントアップされるフィルカウンタのカウント値に基づいて、前記後続命令がアクセスするデータを含むブロックが、前記データアレイに書き込まれたか否かを判定することを特徴とするキャッシュフィル制御方法。 - 先行命令のキャッシュミスを契機として前記先行命令がアクセスするデータを含む1ライン分のデータを複数のデータに分割して任意の順番でデータアレイに書き込み、
前記先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった時、前記後続命令を命令バッファに戻し、
前記後続命令がアクセスするデータを含むブロックが前記データアレイに書き込まれていることをデータ書き込みTAGに基づいて検出した場合、前記後続命令を再発行することを特徴とするキャッシュフィル制御方法。 - 請求項1乃至4記載の何れか1つのキャッシュフィル制御方法において、
前記先行命令及び前記後続命令は、ロード命令であることを特徴とするキャッシュフィル制御方法。 - キャッシュミスした先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった場合、前記後続命令を命令バッファに戻し再発行するCPUであって、
前記先行命令のキャッシュミスを契機に実行されるキャッシュフィルにおいて前記後続命令がアクセスするデータがデータアレイに書き込まれた段階で前記後続命令を再発行する手段を備えたことを特徴とするCPU。 - 先行命令のキャッシュミスを契機として前記先行命令がアクセスするデータを含む1ライン分のデータを複数のブロックに分割して順次データアレイに書き込む手段と、
前記先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった時、前記後続命令を命令バッファに戻す手段と、
前記後続命令がアクセスするデータを含むブロックが前記データアレイに書き込まれた段階で前記後続命令を再発行する手段とを備えたことを特徴とするCPU。 - 請求項7記載のCPUにおいて、
キャッシュフィル開始時に、カウント動作を開始し、1ブロックの転送が行われる毎にカウントアップされるフィルカウンタを備え、且つ、
前記後続命令を再発行する手段が、前記フィルカウンタのカウント値に基づいて前記後続命令がアクセスするデータを含むブロックが、前記データアレイに書き込まれたか否かを判定する構成を有することを特徴とするCPU。 - 先行命令のキャッシュミスを契機として前記先行命令がアクセスするデータを含む1ライン分のデータを複数のデータに分割して任意の順番でデータアレイに書き込む手段と、
前記先行命令と同一ライン上のデータをアクセスする後続命令がキャッシュミスとなった時、前記後続命令を命令バッファに戻す手段、
前記後続命令がアクセスするデータを含むブロックが前記データアレイに書き込まれていることをデータ書き込みTAGに基づいて検出した場合、前記後続命令を再発行する手段とを備えたことを特徴とするCPU。 - 請求項6乃至9記載の何れか1つのCPUにおいて、
前記先行命令及び前記後続命令がロード命令であることを特徴とするCPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002179674A JP3767521B2 (ja) | 2002-06-20 | 2002-06-20 | キャッシュフィル制御方法及びcpu |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002179674A JP3767521B2 (ja) | 2002-06-20 | 2002-06-20 | キャッシュフィル制御方法及びcpu |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004021896A true JP2004021896A (ja) | 2004-01-22 |
JP3767521B2 JP3767521B2 (ja) | 2006-04-19 |
Family
ID=31177021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002179674A Expired - Fee Related JP3767521B2 (ja) | 2002-06-20 | 2002-06-20 | キャッシュフィル制御方法及びcpu |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3767521B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007249914A (ja) * | 2006-03-20 | 2007-09-27 | Nec Corp | データロード方法及びデータ処理装置 |
JP2009128920A (ja) * | 2007-11-19 | 2009-06-11 | Sony Corp | 情報処理装置、及び、情報処理装置の制御方法 |
JP2009211495A (ja) * | 2008-03-05 | 2009-09-17 | Nec Corp | キャッシュ制御装置 |
JP2011530103A (ja) * | 2008-07-29 | 2011-12-15 | フリースケール セミコンダクター インコーポレイテッド | 書戻し割当アルゴリズムを用いてキャッシュモジュールに対する情報をフェッチするためのシステムおよび方法 |
-
2002
- 2002-06-20 JP JP2002179674A patent/JP3767521B2/ja not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007249914A (ja) * | 2006-03-20 | 2007-09-27 | Nec Corp | データロード方法及びデータ処理装置 |
JP2009128920A (ja) * | 2007-11-19 | 2009-06-11 | Sony Corp | 情報処理装置、及び、情報処理装置の制御方法 |
JP2009211495A (ja) * | 2008-03-05 | 2009-09-17 | Nec Corp | キャッシュ制御装置 |
JP2011530103A (ja) * | 2008-07-29 | 2011-12-15 | フリースケール セミコンダクター インコーポレイテッド | 書戻し割当アルゴリズムを用いてキャッシュモジュールに対する情報をフェッチするためのシステムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3767521B2 (ja) | 2006-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100626858B1 (ko) | 단일 적재 워드를 형성하기 위해서 별개의 저장 버퍼 엔트리들로부터의 개별 바이트들의 전송을 적재하는 저장 시스템 | |
KR101461378B1 (ko) | 동기화 simd 벡터 | |
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
US6321326B1 (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
WO2017030692A1 (en) | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor | |
US8954681B1 (en) | Multi-stage command processing pipeline and method for shared cache access | |
US7836253B2 (en) | Cache memory having pipeline structure and method for controlling the same | |
KR20190033084A (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
CN110291507B (zh) | 用于提供对存储器系统的加速访问的方法和装置 | |
US11321097B2 (en) | Super-thread processor | |
JP3407808B2 (ja) | コンピュータシステム | |
US20180203703A1 (en) | Implementation of register renaming, call-return prediction and prefetch | |
JPH02234242A (ja) | 部分書込み制御装置 | |
JP3767521B2 (ja) | キャッシュフィル制御方法及びcpu | |
US7111127B2 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
US20050228951A1 (en) | Virtualized load buffers | |
US7333106B1 (en) | Method and apparatus for Z-buffer operations | |
TWI780521B (zh) | 電子裝置及空間複用方法 | |
JP4799171B2 (ja) | 描画装置及びデータ転送方法 | |
JP2007172456A (ja) | 描画装置 | |
US20220229662A1 (en) | Super-thread processor | |
JP2000029690A (ja) | デ―タ処理の方法および装置 | |
US6775752B1 (en) | System and method for efficiently updating a fully associative array | |
JP3614946B2 (ja) | メモリバッファ装置 | |
JPH05257807A (ja) | キャッシュメモリ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040426 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051017 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051025 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051208 |
|
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: 20060110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060123 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140210 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |