JP2005122343A - キャッシュメモリ制御方法及びキャッシュメモリ制御装置 - Google Patents

キャッシュメモリ制御方法及びキャッシュメモリ制御装置 Download PDF

Info

Publication number
JP2005122343A
JP2005122343A JP2003354640A JP2003354640A JP2005122343A JP 2005122343 A JP2005122343 A JP 2005122343A JP 2003354640 A JP2003354640 A JP 2003354640A JP 2003354640 A JP2003354640 A JP 2003354640A JP 2005122343 A JP2005122343 A JP 2005122343A
Authority
JP
Japan
Prior art keywords
address
branch
cache memory
data
instruction
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.)
Pending
Application number
JP2003354640A
Other languages
English (en)
Inventor
Keisuke Kaneko
圭介 金子
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003354640A priority Critical patent/JP2005122343A/ja
Publication of JP2005122343A publication Critical patent/JP2005122343A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 多段化したパイプライン構造のプロセッサが分岐命令を効率良く実行するために大容量の分岐ターゲットバッファを実装すると、回路規模が増大してしまう。
【解決手段】 CPU101からの命令フェッチにおいて、キャッシュメモリ102のアクセスエントリが変わる場合、先行して分岐ターゲットバッファ104をアクセスし、予測分岐先アドレスに対して予めキャッシュアクセスすることにより、後に分岐命令が実行されて分岐予測が行われた際にキャッシュヒットさせるようにする。これにより、予測分岐先アドレスに対する命令フェッチで分岐命令実行時にキャッシュメモリ102から命令データを読み出すことが可能となり、分岐ターゲットバッファ104に分岐先アドレスの命令データを保持しない、あるいは保持するデータ量を減らすことが可能であり、回路規模を削減できる。
【選択図】 図1

Description

本発明は、キャッシュメモリを搭載し、かつ分岐予測を行うマイクロプロセッサに関するものである。
命令を順次実行するマイクロプロセッサにおいて、処理性能向上のために高周波数動作を実現する多くの改良が行われている。例えば、パイプラインの多段化は、高速動作実現のための一般的な手法として多くのプロセッサで取り入れられている。
パイプライン構造のプロセッサにおいては、単位時間あたりの命令実行数が増加する。ただし、分岐命令実行、特に条件分岐命令の実行時には、条件分岐命令の実行と分岐先命令の実行開始サイクルまでの間、パイプラインに命令が投入されないサイクルである「パイプラインバブル」が発生し、単位時間あたりの命令実行効率が低下する。特に高周波数動作のために多段化したパイプラインを実装するプロセッサでは、このパイプラインバブルによる実行効率の低下の度合いが大きい。
この実行効率の低下を極力抑えるための技術として、分岐ターゲットバッファ(Branch Target Buffer:BTB)又は分岐履歴バッファと呼ばれるものが知られている。この技術は、分岐命令実行時に過去の分岐命令実行の情報から分岐先を予測し、予測した分岐先の命令フェッチを分岐命令の分岐先が確定する前に先行的に開始し、あるいは保持しておいた分岐命令データを先行的に実行するものである。
分岐ターゲットバッファによれば、過去に実行した分岐命令、主に条件分岐命令の実行PC(プログラムカウンタ)、及び、分岐先PC、分岐成立度合いの情報を保持している。同じPCの分岐命令を再度実行した際には、過去の分岐命令実行時の情報から分岐先、分岐成立/不成立を予測し、先行的に命令フェッチ、あるいは命令実行させ、前述のパイプラインの実行効率低下を抑える。
一方で、パイプラインの段数を多段化する高周波数動作のマイクロプロセッサでは、プロセッサの動作周波数に対して外部のメモリアクセスの周波数が大きく異なるため、プロセッサが行うメモリアクセスのペナルティが実行性能に大きく影響する。これを解決するため、一般的にキャッシュメモリを実装する。
また、キャッシュメモリのタグ部に分岐先アドレスと、その有効ビットとを保持する方法がある。しかしながら、肥大化するプログラムに対応する大容量のキャッシュメモリを実装すると、全エントリに対して分岐先アドレスの情報を保持する回路がキャッシュメモリに必要であり、回路規模が増大する欠点がある(特許文献1の図3参照)。
以上のとおり、多段化したパイプラインを持つ高周波数動作のマイクロプロセッサにおいては、分岐ターゲットバッファとキャッシュメモリとを実装するのが一般的である。しかしながら、分岐ターゲットバッファとキャッシュメモリとをともに実装することにより、回路規模が増大する。
分岐ターゲットバッファに分岐元アドレス及び分岐先アドレスのみを保持することとすると回路規模は減少するが、分岐先アドレスがキャッシュヒットしない場合には予測分岐先の命令フェッチのペナルティにより分岐予測の効果が消えてしまう。
また、分岐先アドレスを予測し、予め命令フェッチした場合、キャッシュミスの場合には既にキャッシュメモリにある他の命令データを追い出さなくてはならない。しかしながら、分岐ターゲットバッファの出力である分岐先アドレスは分岐先の予測アドレスであり、実際にプロセッサが分岐元アドレスの命令を実行した場合に予測不成立(分岐予測ミス)になる可能性もある。この場合、従来の方法では、結果として無駄なアクセスによって有効なキャッシュメモリ内のデータを追い出してしまうことになり、後のキャッシュヒット率の低下を招いてしまう。
特開平7−200406号公報
以上のとおり、パイプライン構成のマイクロプロセッサにおいて、キャッシュメモリを実装し、かつ分岐命令実行時の実行効率低下を防ぐために分岐ターゲットバッファを実装する場合、回路規模が増大する。
また、分岐予測を行った際、分岐予測ミスの場合には既にキャッシュメモリ内部に存在する有効なデータを追い出し、実際には実行されない分岐予測ミスした予測アドレスに対するブロックデータをキャッシュにリフィルしてしまう。
本発明の目的は、キャッシュメモリと分岐ターゲットバッファとを搭載したマイクロプロセッサにおける以上の課題を解決することにある。
本発明によれば、キャッシュメモリと分岐ターゲットバッファとを搭載したマイクロプロセッサの命令フェッチにおいて、キャッシュメモリのアクセスエントリが変わるような場合に、キャッシュメモリにアクセスすると同時に分岐ターゲットバッファにもアクセスし、分岐ターゲットバッファの出力により再度キャッシュメモリをアクセスする。これにより予測分岐先の命令を予めキャッシュメモリに取り込むことが可能となる。プロセッサが後にそのエントリのブロックデータ内に存在する分岐命令を実行した際には、分岐先の命令データをキャッシュメモリから短いサイクルで読み出し完了することが可能となる。また、実際にプロセッサが分岐命令を実行し分岐ターゲットバッファをアクセスした際にキャッシュメモリ内に分岐先命令が存在する可能性が高くなる。
また、分岐ターゲットバッファの分岐元アドレスの代わりに、分岐命令が存在する命令キャッシュの位置情報を保持し、検索する場合でもその位置情報により検索する。先の方法に加え、キャッシュメモリと分岐ターゲットバッファを連動させて動作させることにより、分岐元情報としてアドレスをプログラムカウンタの全アドレスビット保持する分岐ターゲットバッファよりも回路規模の縮小が可能である。
また、予測された分岐先アドレスによるキャッシュアクセスにおいて、キャッシュミスの場合に、置き換える命令キャッシュ内のデータを一時バッファに退避しておく。分岐予測が成立しなかった場合、キャッシュメモリ内の元の位置に一時バッファから書き戻すことにより、分岐不成立時の余分なキャッシュデータの置き換えの発生をなくすことが可能となり、分岐予測ミスによるキャッシュヒット率の低下を低減することが可能となる。
本発明によれば、分岐ターゲットバッファを実装する場合に、予測分岐先の命令データを保持する必要がない、あるいは予測分岐先の命令を持つ場合でも少ない容量での実装で分岐実行時の分岐ペナルティ、命令フェッチペナルティを低減することが可能であり、省面積で高効率の分岐命令実行が可能となる。
また、分岐元情報として少ない容量での実装で、一般的な分岐ターゲットバッファと同等の効果を得ることが可能である。
更に、分岐予測が不正解となった場合、予測分岐先アドレスへの先行する命令フェッチによる不必要な命令キャッシュデータの追い出しが発生しないため、全体でのキャッシュヒット率を分岐予測の不正解で低下することを防ぐことが可能である。
以下、図面を参照しながら、本発明の実施の形態を説明する。
《第1の実施形態》
図1は本発明の第1の実施の形態におけるシステム構成図である。図1のシステムは、命令を順次実行するCPU101と、CPU101の命令を格納するキャッシュメモリ102と、キャッシュメモリ102の制御を行うキャッシュ制御部103と、分岐ターゲットバッファ104と、分岐ターゲットバッファ制御部105と、主記憶からデータを読み出すBCU(バスコントロールユニット)106とからなる。
CPU101は、1命令2バイト(16ビット)長の命令セットアーキテクチャに基づくプロセッサであり、命令供給不足による実行ペナルティを低減するために8バイトの命令バッファ(IB)107を装備している。デコーダ136には、デコードデータセレクタ137により命令バッファ107内の命令データからのみではなく、命令フェッチデータバス134上のデータも直接入力可能である。
キャッシュメモリ102は、4Kバイトの2ウェイセットアソシアティブ構成である。すなわち、キャッシュメモリ102は1ウェイにつき128エントリのラインメモリで構成され、CPU101からのアドレスのビット10からビット4の7ビットでエントリ指定される。例えばアドレスが「00000010」の場合、エントリアドレスは「01」である。
分岐ターゲットバッファ104は、分岐命令実行によりアドレスが現在までのPCから連続的に変化しない場合(一般的には分岐成立側)のアドレスを保持し、その情報を元に分岐予測を行う。
CPU101が命令フェッチを行う場合、まず命令アドレス生成部108により命令フェッチを行うアドレスが生成され、フェッチアドレスバス111にアドレスが出力される。同時にキャッシュ制御部103にキャッシュ要求135が出力される。フェッチアドレスバス111は32ビットのアドレスバスである。
ここで、分岐命令以外の命令を実行しているものとする。命令フェッチにおいて、フェッチアドレスバス111のフェッチアドレスは、タグ入力セレクタ112を通り、かつ、エントリを示すアドレスフィールドであるビット10からビット4のみタグアドレス113としてタグメモリ114に入力される。
タグアドレス113により指定されたエントリのタグデータは、タグデータ出力バス115を通じて比較器116に入力される。フェッチアドレスバス111上のアドレスデータが比較器入力セレクタ117を通り、そのうちのタグフィールドが比較アドレス118として比較器116に入力される。キャッシュメモリ102は1ウェイが128エントリのキャッシュメモリであるので、比較アドレス(タグデータ)118はアドレスのビット31からビット11の値である。
比較器116は、比較アドレス118とタグデータ出力バス115上のタグデータとを比較し、一致した場合にヒット信号119をキャッシュ制御部103に出力する。ここでヒット信号119はウェイ毎、つまり2ビットの信号で出力され、どのウェイにヒットしたかもキャッシュ制御部103は判断することができる。例えば、ウェイ0にヒットした場合には「01」が、ウェイ1にヒットした場合には「10」が出力され、「00」の場合にはどのウェイにもヒットしなかった、つまりキャッシュミスであったことを示す。
キャッシュ制御部103は、ヒット信号119が「00」である場合、すなわちキャッシュミスの場合には、不図示の主記憶からキャッシュメモリ102へのブロックデータの転送(リフィル)を行うため、BCU106にリフィル要求信号120を出力する。
ヒット信号119が「01」又は「10」の場合はキャッシュヒットであり、キャッシュメモリ102内のデータメモリ121からキャッシュリードデータバス132に命令データを出力し、命令フェッチデータバス134を通じて命令バッファ107に命令データを格納し、あるいはデコードデータセレクタ137を通してデコーダ136に命令データを入力する。
キャッシュデータメモリ121は、フェッチアドレスバス111上のアドレスに該当するデータを含む64ビットの命令データをキャッシュリードデータバス132に出力する。すなわち、図1のシステムは、キャッシュヒットの場合に1回の命令フェッチで64ビットの命令データをフェッチすることが可能なシステムである。
また、キャッシュライトデータバス138は32ビット幅であり、キャッシュメモリ102のリフィルはアドレスを1つ指定し、連続した4回のデータ転送で実施する。例えば、エントリ「00」へのリフィルの場合には、アドレスとして「00」を指定し、連続した4サイクルでデータを書き込むことでリフィルが完了する。
図2に、動作のフローチャートを示す。まず、CPU101の命令フェッチが発生するとフェッチするアドレスが生成され、フェッチアドレスバス111に出力される(ステップS1)。
出力されたアドレスはエントリアドレスバッファ122に入力され、キャッシュメモリ102のエントリアドレスを指定するフィールド部分であるビット10からビット4までのデータがエントリアドレスバッファ122に格納される(ステップS2)。保持される期間は次のキャッシュアクセスが発生するまでである。
同時に、フェッチアドレスはフェッチアドレスバス111を介してエントリアドレス比較器123にも入力される。エントリアドレスバッファ122が保持している値はエントリアドレス保持データ124としてエントリアドレス比較器123に入力され、エントリアドレス比較器123は入力されているフェッチアドレスバス111のエントリ部と、エントリアドレス保持データ124とを比較する(ステップS3)。一致する場合には今のキャッシュアクセスと以前のキャッシュアクセスのアクセスエントリ先は同じであり、異なる場合には連続して命令フェッチを行っているシーケンスにおいて命令フェッチ先のブロックデータが異なるところにアクセスすることを意味する。
キャッシュ制御部103は、フェッチアドレスバス111上のアドレスでキャッシュメモリ102をアクセスしたサイクルで、エントリアドレス比較器123からエントリ一致信号125を受け取る。エントリ一致信号125が「不一致」である場合、キャッシュ制御部103は分岐ターゲットバッファ制御部105に検索要求(CH)126を出力する(ステップS4)。一致である場合、処理は終了する(ステップS5)。
分岐ターゲットバッファ制御部105は、CPU101からの検索要求127なのか、あるいはキャッシュ制御部103からの検索要求126なのかを判断し(ステップS6)、検索モード信号128を出力する。
この検索モード信号128は、フェッチアドレスバス111上のアドレスデータのエントリアドレス部分以下のビット(ビット3からビット0)を除くフィールドが一致する分岐元アドレスを検索するのか、全ビット比較するのかを指定する信号であり、「1」の場合にはアドレスのビット4以上のフィールドが一致する分岐元アドレスを検索するものとする。この信号128は、検索要求(CH)126が入力されたときに「1」が(ステップS7)、検索要求(CPU)127が入力されたときには「0」が出力される(ステップS8)。
分岐ターゲットバッファ104は、分岐元アドレス保持部129内でフェッチアドレスバス111上のアドレスのエントリアドレス以上(ビット4以上)のフィールドが一致する分岐元アドレスを検索し(ステップS9)、分岐先アドレス保持部130から対応する分岐先アドレスを予測分岐先アドレスバス131に出力する(ステップS11)。なお、検索要求(CPU)127の場合には、アドレスが一致する分岐元アドレスを検索する(ステップS10)。
予測分岐先アドレスバス131は、キャッシュメモリ102の比較器116に入力され、予測分岐先アドレスバス131上のアドレスで指定されるエントリのタグデータと、予測分岐先アドレスバス131上のデータのタグフィールドとが比較器116で比較される(ステップS12)。ここで「一致」である場合、予測分岐先は既にキャッシュメモリ102内に存在することになり終了する(ステップS13)。
「不一致」である場合、分岐先アドレスはキャッシュメモリ102内に存在しないので、BCU106にリフィル要求信号120を出力し、予測分岐先アドレスのブロックデータのリフィルを開始する(ステップS14)。
以上のフローにより、実際にCPU101が分岐命令をパイプラインに投入する前に、予め予測される分岐先アドレスの分岐命令を転送することができる。
次に、図3、図4を用いて、詳細なシーケンスを説明する。図3に、実行するプログラムを示す。アドレス「0000」からアドレス「002E」及び「1020」から「1028」までの命令を実行する。図3には本実施形態の説明で必要な命令のみ示している。また、CPU101は32ビットのアドレスデータを扱うが、ここでは下位16ビットのみの表記としている(上位アドレスは全て0とする)。
アドレス「0000」から「000E」までは、キャッシュメモリ102のエントリアドレスが「00」であるエントリに格納される。同様に、アドレス「0010」からアドレス「001E」まではエントリアドレスが「01」、アドレス「0020」からアドレス「002E」まではエントリアドレスが「02」、アドレス「1020」から「1028」まではエントリアドレスが「02」の各エントリに格納される。
CPU101内の命令バッファ107は8バイト(64ビット)すなわち4命令を格納することが可能であり、かつ、3命令消費すると、次の64ビット分の命令データを含む命令フェッチのアドレスを命令アドレス生成部108が生成し、キャッシュメモリ102へのフェッチアクセスを開始する。
実行する命令は各命令1サイクルで実行されるものとし、アドレス「0018」にある「inst4」命令がアドレス「1020」への条件分岐命令であるものとする。
CPU101は、一般的な6段のパイプライン構造のCPUであり、IF、DEC0,DEC1,EX0,EX1,WBの6ステージで構成される。IFステージは命令をフェッチするステージ、DEC0は命令のデコードの第1処理であり、DEC1は第2処理である。分岐命令であるか否かはDEC0ステージにおいて判定される。EX0は第1実行ステージ、EX1は第2実行ステージである。条件分岐命令が実行されるとき、分岐条件の成立・不成立はEX0ステージで判定され、分岐先アドレスはEX1ステージで計算される。WBはライトバックステージである。
更に、アドレス「0000」、「0010」、「0020」のブロックデータは既にキャッシュメモリ102内に存在し、アドレス「0000」から「001E」までの命令をフェッチする場合にはキャッシュヒットになるものとする。また、アドレス「1020」以降の命令はまだキャッシュメモリ102内に存在せず、アドレス「1020」へのアクセスはキャッシュミスとなるものとする。
図4に本実施形態のタイミング図を示す。サイクル201からサイクル203まで、命令バッファ107にはアドレス「0008」から「000E」までの命令が入っており、CPU101は順次命令を実行しているものとする。サイクル202では次の命令フェッチのアドレスである「0010」が命令アドレス生成部108により生成され、キャッシュアクセスが開始される。タグアドレス113は「01」となる。このアクセスはキャッシュヒットであり、サイクル203でキャッシュリードデータバス132として命令inst0,inst1,inst2,inst3を含む64ビットのデータ(図中211)が読み出され、サイクル204に命令バッファ107に格納される。
サイクル204から4サイクルの間、CPU101は命令を順次命令バッファ107から取り込み実行していく。サイクル204では、同時にフェッチアドレスバス111のエントリアドレスデータがエントリアドレスバッファ122のエントリアドレス保持データ124と比較される。図4中に示すように、エントリアドレスバッファ122はサイクル202で「00」である。今、フェッチアドレスは「0010」であり、エントリアドレスは「01」のため不一致であり、エントリ一致信号125は0が出力され、キャッシュ制御部103は分岐ターゲットバッファ制御部105に検索要求(CH)126を出力する。分岐ターゲットバッファ制御部105は、サイクル202で分岐ターゲットバッファ104へ検索モード信号128として「1」を出力する。分岐ターゲットバッファ104は、フェッチアドレスバス111上のアドレスデータのエントリアドレスとタグアドレスとが一致する分岐元アドレスを検索し、対応する分岐先アドレスを予測分岐先アドレス131としてサイクル203で出力する。サイクル203で出力されるのは「1020」である。
更に、予測分岐先アドレス131はサイクル203でキャッシュメモリ102に入力され、サイクル204で比較器116によりアドレス「1020」がキャッシュヒットか否かを判定する。
アドレス「1020」はまだキャッシュメモリ102内に存在してないためキャッシュミスとなり、BCU106にアドレス「1020」のブロックデータのリフィル要求信号120をサイクル204で出力する。
BCU106からのリフィルのデータ転送は、リフィル要求信号120を受けてから3サイクル目で最初のデータ転送が行われ、連続して4サイクルの転送サイクルにより完了する。図4においては、サイクル206からサイクル209でキャッシュライトデータバス138にアドレス「1020」のブロックデータ212が出力されリフィルが実行される。
CPU101は順次命令を実行し続けている。サイクル207では条件分岐命令である「inst4」命令がパイプラインのIFステージに入り、条件分岐命令が実行開始される。次のサイクル208ではDEC0ステージに「inst4」命令が入り、このサイクルで条件分岐命令と判定される。
サイクル208では同時にDEC0の命令のPC(図1中の分岐命令PC109)がフェッチアドレスバス111に出力され、分岐ターゲットバッファ104を検索するため、検索要求(CPU)127が分岐ターゲットバッファ制御部105に出力され、分岐ターゲットバッファ制御部105から検索モード信号128として「0」が出力される。
分岐ターゲットバッファ104は、フェッチアドレスバス111上の値、すなわちDEC0ステージのPCの値に対応する予測分岐先アドレスをアドレスバス131へ出力し、キャッシュメモリ102内に予測分岐先アドレスのブロックデータがあるかどうかを検索する。
予測分岐先アドレスである「1020」のデータは、サイクル202における分岐ターゲットバッファ104の先行的なアクセスにより、サイクル204から既にキャッシュメモリ102へのブロックデータ転送の準備が開始している。サイクル208ではキャッシュメモリ102内にアドレス「1020」のデータが存在するため、キャッシュヒットとして読み出し可能である(図4中のデータ213)。
つまり、サイクル209では、予測分岐先アドレス131の命令はキャッシュヒットとして命令バッファ107に格納されると同時に命令デコーダ136に入力され、分岐先アドレスの命令データである「inst t0」はサイクル209で直ちにパイプラインに投入可能となる。したがって、条件分岐命令の実行によるパイプラインバブルは、図4中に214で示すように2サイクルのペナルティで済む。
本実施形態によれば、予測分岐先の命令データを分岐ターゲットバッファ104に持たずに、分岐元アドレスと、分岐先アドレスと、分岐先アドレスの命令データとを保持する従来の分岐ターゲットバッファと同じ又は1サイクル増加のサイクル数となる。つまり、従来と同様のパイプライン効率を、より少ない回路規模で実現できる。
《第2の実施形態》
図5には、第2の実施形態でのシステム構成を示す。これは、図1のシステムに、エントリアドレス保持データ124と予測分岐先アドレスバス131上のアドレスデータのエントリアドレスとを比較する第2エントリアドレス比較器501と、アクセス続行信号502とが追加されたシステムである。
図6に、第2の実施形態における動作のフローを示す。図2に示すフローとステップS11までは同じであるため、図6ではステップS11に続くステップS21から示す。
前記ステップS11において分岐ターゲットバッファ104が出力した予測分岐先アドレス131と、今アクセスしている命令フェッチアドレスとのエントリ比較を第2エントリアドレス比較器501で行う(ステップS21)。このエントリアドレス比較において、予測分岐先アドレスのエントリアドレスが一致する場合は処理を終了する(ステップS24)。一致しない場合には、アクセス続行要求502をキャッシュ制御部103に出力し(ステップS22)、第1の実施形態と同様、分岐先アドレスのリフィルを開始する。図6のステップS23〜S25は、図2中のステップS12〜S14と同様である。
なお、図6のステップS21においては一致するか否かを判定したが、あるアドレス範囲を設定し、分岐先アドレスと今のキャッシュアクセスアドレスとのエントリが所定のアドレス範囲以上離れている場合に続行するような判定を行ってもよい。アドレスの範囲は予め回路的に固定するのもよいし、CPU101からアクセス可能なレジスタに設定して反映させてもよい。
一般的にキャッシュメモリはプログラムの参照の局所性を利用しており、現在命令フェッチしているアドレスに対するキャッシュアクセスがキャッシュヒットである場合、その近傍のエントリアドレスに対するキャッシュアクセスはキャッシュヒットとなる可能性が高い。逆にエントリアドレスが今アクセスしているアドレスのエントリアドレスから離れるにつれ、キャッシュミスする可能性が高くなるのである。
《第3の実施形態》
図7に、第3の実施形態のシステム構成図を示す。図7のシステムでは、図1のシステムに加え、キャッシュメモリ102の任意のエントリのタグデータを一時的に保持するタグ一時バッファ301と、そのエントリのブロックデータを保持するデータ一時バッファ302とを有する。
タグ一時バッファ301のデータはタグ一時バッファ出力バス303を経由してタグメモリ114に書き込みが可能であり、データ一時バッファ302のデータはデータ一時バッファ出力バス304をライトデータセレクタ305で選択することにより、データメモリ121に書き込み可能である。
タグ一時バッファ301及びデータ一時バッファ302のデータは、CPU101による分岐予測の正解・不正解の結果、及び、分岐ターゲットバッファ104の予測分岐先アドレスを保持している予測アドレスバッファ306のアドレスと、現在分岐ターゲットバッファ104が出力している予測分岐先アドレスとの比較結果から復帰判定を行う復帰判定器307の復帰要求308により、復帰処理が行われる。
図8に、第3の実施形態における動作のフローを示す。第3の実施形態では図2、及び、図6のステップS12までは同じフローであるので、以降のフローについてのみ図示している。
前記ステップS12においてキャッシュミスと判定されると、キャッシュリフィルの開始(ステップS14)と並行し、キャッシュリフィル先のウェイを決定する(ステップS31)。更にキャッシュリフィルするアドレス(予測分岐先アドレス)を保持させる(ステップS34)。
次に、リフィル先に決定したウェイの予測分岐先アドレスで指定されるエントリ、すなわち予測分岐先アドレスのリフィルによってキャッシュメモリ102から追い出されるブロックデータ(タグデータと命令データ)をタグ一時バッファ301及びデータ一時バッファ302に退避させる(ステップS32、S33)。
次に、実際に分岐命令がCPU101によって実行された時点で分岐ターゲットバッファ104の検索、予測分岐先アドレスの出力が行われる(ステップS35)。
次に、ステップS11での予測分岐先アドレス(先行予測分岐先アドレス)と、分岐命令実行時の予測分岐先アドレスとが一致するかどうかを調べる(ステップS36)。これと並行して、分岐先アドレスのフェッチを行う(ステップS41)。
ステップS36の判定では、ステップS34で保持しておいたアドレスデータと今行っている予測に係る分岐先アドレスとが一致するかどうかを判定する。一致しない場合にはリフィルのデータ転送が既にキャッシュメモリ102内に格納されたかどうかの判定を行い(ステップS40)、まだ格納されていない場合はリフィルを中断(ステップS41)して終了する(ステップS43)。ステップS40において既に格納済みと判断した場合には、ステップS31での予測分岐先アドレスのブロックデータをリフィルしたキャッシュメモリ102のエントリにタグ一時バッファ301、データ一時バッファ302のデータの書き戻しを行う(ステップS38、S39)。
ステップS36、S40、S41と並行して、分岐命令がEX0ステージに入ると分岐予測が正解か不正解かの分岐予測判定をする(ステップS37)。正解の場合には処理を終了する(ステップS43)。不正解の場合にはステップS36の判定の不一致時と同様のフローにて、予測分岐先アドレスのブロックデータをリフィルしたキャッシュメモリ102のエントリにタグ一時バッファ301、データ一時バッファ302のデータの書き戻しを行う(ステップS38、S39)。
図9には、第3の実施形態におけるタイミング図を示す。図9のサイクル402までは図4中のサイクル203までと同じである。また、サイクル401での分岐ターゲットバッファ104の先行的なアクセスによる予測分岐先アドレスはサイクル407でのCPU101による分岐ターゲットバッファ104のアクセスによる予測分岐先アドレスと同じアドレスであるものとし、かつ、サイクル407でのCPU101による分岐ターゲットバッファ104の分岐予測は不正解になるものとする。
今、キャッシュリフィルにおいて最初のデータが転送されてくるまでに最低3サイクルかかるシステムを想定する。第3の実施形態ではこの3サイクル内で次の動作を行う。
まず、サイクル402においてキャッシュミスと判定されると、サイクル403で予測分岐先アドレスのブロックデータを格納するキャッシュメモリ102内のデータを、タグ一時バッファ301、データ一時バッファ302に退避開始する。この動作において、ブロックデータを退避させるデータのアドレスをキャッシュ制御部103から出力することにより、データアドレス141を変化させる。
本実施形態においては、キャッシュリフィルでウェイ0をリフィルの対象に選択するものとし、ウェイ0のエントリ「2」のオフセット「0」から64ビットを読み出すのに「020」(図中420)、同エントリのオフセット8のデータを読み出すのに「028」(図中421)をデータアドレス141に出力する。
データメモリ121は1回のアクセスで64ビットの読み出しが可能であるため、1ブロックデータを読み出すには2サイクルあればよい。図9に示すようにサイクル403、サイクル404において、データアドレス141を「020」(図中420)、「028」(図中421)と変化させ、データ一時バッファ302にデータを退避させる。この結果、図9中に示すようにタグ一時バッファ301はサイクル405からタグデータ出力115の値を保持開始、データ一時バッファ302の下位64ビットはサイクル405から、上位64ビットはサイクル406からキャッシュリードデータ132の値を保持する。
第3の実施形態のシステムでは、サイクル406から先のリフィル要求に対するブロックデータ転送が開始される(図中212は、リフィルの転送データ)。
なお、キャッシュリフィルの最初のデータの転送までにタグ一時バッファ301、データ一時バッファ302への転送を行うことができない場合、これら一時バッファ301,302への転送を行った後にリフィル要求信号120を出力すればよい。
次に、分岐命令が実際にCPU101で実行され、サイクル407、サイクル408では第1の実施形態の図4中のサイクル208、サイクル209と同様の分岐予測が行われる。
サイクル408において、サイクル402で先行的に予測した分岐先アドレスと、サイクル408での予測分岐先アドレスとが一致するかどうかを判定する。「inst4」命令、すなわち分岐(branch)命令の実行において、分岐予測がはずれ分岐不成立となった場合には、分岐不成立側のアドレスの命令フェッチを再開し、先に退避したデータをキャッシュメモリ102内に書き戻す。ただし、この説明では「一致する」ものとする。
分岐不成立側の命令フェッチ、本実施形態の場合、「inst5」命令の命令フェッチであるため、フェッチアドレスとしてアドレス「001A」を生成してキャッシュアクセスを開始する(サイクル409)。このアドレスはキャッシュヒットとなるためサイクル410で命令データを読み出し可能であり、「inst5」命令はサイクル410でパイプラインに投入される。
次にタグ一時バッファ301、データ一時バッファ302に退避したデータをキャッシュメモリ102に復帰させる(サイクル411〜サイクル412)。図9において、425、426、427、428がデータ一時バッファ302からのライトデータである。
サイクル408で不一致の場合には、サイクル410からの復帰処理をサイクル408から行う。
以上の手法により、分岐予測が外れた場合でも分岐予測の不正解による命令キャッシュ102内のデータの無駄な追い出しが発生しなくなる。結果として、分岐予測が正解の場合には分岐予測側のデータがキャッシュメモリ102内に格納され、不正解の場合には元のキャッシュメモリ102の状態とすることが可能であり、分岐予測の不正解によるキャッシュヒット率の低下を抑えることが可能となる。
なお、本実施形態では分岐ターゲットバッファ104に分岐元アドレスと分岐先アドレスとを保持するものとし、サイクル401において先行的に分岐ターゲットバッファ104を検索する例を示したが、従来の分岐ターゲットバッファを用いたシステムにおいて、サイクル401での先行的な分岐ターゲットバッファアクセスを行わず、サイクル407でのCPU101の分岐ターゲットバッファアクセス時に同様のタグ一時バッファ、データ一時バッファへの退避処理を行ってもよい。従来の分岐ターゲットバッファを用いた場合でも、不必要なキャッシュデータの追い出しによるキャッシュヒット率の低減が可能である。
《第4の実施形態》
図10は、第4の実施形態のシステム構成図である。図1のシステムに対して、図11に示す分岐ターゲットバッファ601を有し、キャッシュメモリ102のヒットしたウェイ情報を保持するヒットウェイバッファ602を有するシステムである。また、キャッシュメモリ102にアクセスしたフェッチアドレスのエントリアドレスより下位のアドレス(オフセットアドレス)を保持する下位アドレスバッファ605も有し、分岐ターゲットバッファ601にその保持データが入力される。
図11の分岐ターゲットバッファ601は、有効ビット1000に加えて、分岐元情報としてウェイ番号1001と、エントリアドレス1002と、オフセットアドレス1003とを保持し、かつ対応する分岐先アドレス1004を保持する。すなわち、CPU101がフェッチしたあるアドレスに対して、キャッシュメモリ102内でヒットとなる場合に、当該キャッシュメモリ102からヒットした位置情報としてウェイ番号、あるいは相当する情報を出力させ、ウェイ番号、エントリアドレス及びオフセットアドレスが一致するものに対応する分岐先アドレスを予測分岐先アドレスとして出力するのである。
通常、キャッシュメモリ102が有効な状態でCPU101が分岐命令を実行する場合、実際に分岐命令がIFステージ以降で実行状態にある場合には、その分岐命令自身はキャッシュメモリ102内に存在する。なぜなら、IFステージではキャッシュメモリ102から実行している分岐命令を読み出しているからである。つまり、分岐命令の読み出しをキャッシュメモリ102からのみ行っている場合には、分岐命令実行中に再度自命令のアドレスでキャッシュメモリ102をアクセスした場合、必ずキャッシュヒットとなる。
さて、図10のシステムにおいて、検索モード信号128が「1」の場合は、エントリアドレス保持データ124と分岐ターゲットバッファ601内の分岐元情報であるエントリアドレス1002とが一致するエントリを検索する。「0」の場合には、「1」の検索条件に加え、ヒットウェイバッファ602のヒットウェイ保持データ603と分岐ターゲットバッファ601内のウェイ番号1001とが一致し、かつ下位アドレス出力606とオフセットアドレス1003とが一致する分岐元情報を検索する。
まず、分岐ターゲットバッファ601へ分岐元情報と分岐先情報とをセットする動作を説明する。
CPU101が分岐命令を含む命令データをキャッシュメモリ102から読み出す。この読み出し時点においてキャッシュヒットであっても、ミスであっても命令バッファ107に分岐命令を含む命令データが格納された時点ではキャッシュメモリ102にはその分岐命令を含むブロックデータが存在している。
次に、実際に分岐命令がCPU101により実行され、分岐成立、不成立が確定したサイクルに、確定した分岐先が現在実行中の命令のラインアドレスと異なる場合、すなわちPCが非連続変化する場合に、CPU101から分岐先命令のフェッチアドレスが出力された後に分岐命令のPCの値をフェッチアドレスバス111に出力し、キャッシュメモリ102をアクセスする。
また、同時に分岐命令PCバッファ604に分岐命令のPCを格納する。分岐命令PCバッファ604は、分岐ターゲットバッファ601に予測分岐先アドレスとして書き込みが行われるまでデータを保持する。
比較器116から出力されるヒット信号119は、エントリアドレス保持データ124とともに分岐ターゲットバッファ601に入力される。分岐先情報としては分岐命令PCバッファ604の値を格納する。
図12は、分岐ターゲットバッファ601への分岐元情報及び分岐先情報のセット時の動作タイミングチャートである。実行する命令列は、図3に示す命令列である。図12において、アドレス「0018」の「inst4」命令(分岐命令)の分岐情報は、分岐ターゲットバッファ601内にまだ存在していないものとする。また、キャッシュのヒット、ミス状態は第1の実施形態と同じであるものとする。
サイクル701において、「inst4」命令がパイプラインのIFステージに入る。この「inst4」命令の分岐方向及び分岐先アドレスが実際に確定するのはサイクル702である。このサイクル702で確定した分岐先アドレスがフェッチアドレスバス111に出力され、キャッシュメモリ102へのアクセスが行われる。
分岐先であるアドレス「1020」がキャッシュヒットである場合、サイクル703で命令データが読み出される。一方、キャッシュミスである場合、サイクル704でリフィル要求信号120が出力され、分岐先アドレス「1020」のキャッシュリフィルが行われる。図12はキャッシュミスの場合のタイミング図である。
サイクル702で分岐先アドレスのキャッシュアクセスが行われ、次のサイクル703で分岐ターゲットバッファ601への書き込みのためのキャッシュアクセスが行われる。
サイクル702において、「inst4」命令のPCがフェッチアドレスバス111に出力され、「inst4」命令のキャッシュメモリ102内のヒットミスが判定される。本実施形態において、「inst4」命令はキャッシュウェイ0に存在しているとしているので、サイクル704でヒット信号119として「01」が出力され、ヒットウェイバッファ602に入力される。
同時に分岐命令PCバッファ604に「inst4」命令のPCが格納され、エントリアドレスバッファ122は分岐命令のPCのエントリアドレスである「01」となり、この値が分岐ターゲットバッファ601に入力される(図中710、711)。これらの値がサイクル704に分岐ターゲットバッファ601に書き込まれ、分岐元情報としてセットされる。
つまり、アドレス「0018」に対応して、「ウェイ0、エントリ1、下位アドレス8」が分岐元情報として、分岐先アドレス「1020」が分岐先情報としてそれぞれ分岐ターゲットバッファ601に登録される。
次に、既に分岐ターゲットバッファ601内に「inst4」命令に対する分岐情報が存在している場合の「inst4」分岐命令実行時の動作を説明する。
図13は、この場合の動作タイミング図である。まず、サイクル801でアドレス「0010」への命令フェッチが開始される。「inst0」命令を含む命令データはキャッシュヒットであり、サイクル802ではヒット信号119として「01」が出力される。
サイクル802ではアドレス「0010」の命令データの出力が行われると同時に、ヒット信号119とエントリアドレス保持データ124とが分岐ターゲットバッファ601に入力され、キャッシュ制御部103から分岐ターゲットバッファ601に検索要求(CH)126が出力され、分岐先アドレスの予測が行われる。サイクル802での検索はキャッシュ制御部103からの検索であるために検索モードは「1」である。
サイクル803では検索アドレスが出力され、再度キャッシュメモリアクセスが行われ、予測分岐先アドレスがキャッシュヒットするかミスするかが判定される。ここでキャッシュヒットの場合は何も行わない。ミスの場合は第1及び第2の実施形態と同様の処理が行われる。
図13には、キャッシュミス時の動作を示している。第1及び第2の実施形態と同様に、分岐先アドレスのキャッシュヒットミス判定サイクル803においてBCU106にリフィル要求信号120が出力され、予測分岐先アドレスのリフィルが行われる。
次に「inst4」命令がパイプラインに入った時点での分岐予測動作を説明する。まず、サイクル804で「inst4」命令がDEC0ステージに入った時点で、CPU101から分岐命令のPCであるアドレス「0018」がフェッチアドレスバス111に出力される。このアドレスでキャッシュメモリ102をアクセスする。また、同時にエントリアドレスバッファ122にエントリアドレスである「01」が、下位アドレス保持部605に下位アドレスである「8」がそれぞれ格納される。
サイクル805では「inst4」命令を含む命令データがキャッシュメモリ102内に必ず存在するため、アドレス「0018」のキャッシュアクセスはキャッシュヒットとなり、ヒット信号119として「01」が出力され分岐ターゲットバッファ601に入力される。
サイクル805では検索要求(CH)126がキャッシュ制御部103から分岐ターゲットバッファ601に出力される。分岐ターゲットバッファ制御部105にはサイクル804で既に検索要求(CPU)127が入力されているため、サイクル805の検索要求(CH)126はCPU101の分岐予測の検索と判断し、検索モード128として「0」を出力する。
サイクル805では、分岐ターゲットバッファ601を検索し、ヒット信号119とウェイ情報1001、エントリアドレス保持データ124とエントリアドレス1002、下位アドレス出力606とオフセットアドレス1003をそれぞれ比較し、全てが一致する分岐元情報を検索して、対応する分岐先アドレス1004をサイクル806で出力する。
図10で示したように分岐ターゲットバッファ601にはアドレス「0018」のキャッシュアクセス情報、「ウェイ0、エントリ1、下位アドレス8」に対応する分岐先アドレスとして「1020」が格納されているため、サイクル806では予測分岐先アドレスバス131にアドレス「1020」が出力され、分岐先アドレスのキャッシュアクセスが行われる。
サイクル807では予測分岐先アドレス「1020」の命令データが読み出される。サイクル807では「inst4」命令は既にEX0ステージを終えて、分岐方向が確定しているため、分岐予測が正解か不正解かの判定が可能である。
分岐予測が正解の場合、読み出したアドレス「1020」の命令をデコーダ136に入力し、命令実行を続行する。不正解の場合には分岐不成立側の命令フェッチをやり直す。
本実施形態では、アドレス「0018」の分岐命令実行によるパイプラインバブルは図中808に示すように3サイクルとなる。
以上の方法を用いれば、分岐ターゲットバッファ601内に分岐元情報としてアドレスの全てのフィールドを保持した場合と比較して、1サイクルのペナルティ増加のみとなる。一般的にプロセッサは実施形態で示すように全ての命令が1サイクルで動作することは少なく、何らかの実行ペナルティが入り、この1サイクルのペナルティ増加は全体の性能にあまり影響がない。一方、分岐元情報としては、ウェイ情報の2ビットと、エントリアドレス7ビット、下位アドレス4ビットの計13ビットである。一般的な32ビットのマイクロプロセッサの分岐ターゲットバッファのように、32ビット全てのアドレスを保持する場合と比較し、分岐ターゲットバッファの回路構成を低減可能である。分岐ターゲットバッファとして多くのエントリを持つ場合に本発明を用いると、従来の方法に比べてパイプライン実行効率は同等の効果で分岐ターゲットバッファの面積削減が可能となる。
なお、第2の実施形態と同様に、第2エントリアドレス比較器501とアクセス続行要求502とを装備し、分岐先アドレスによって先行する分岐先アドレスへのキャッシュアクセスをするか否かを判定し、その後の処理を行ってもよい。
また、第4の実施形態でも、第3の実施形態と同様にタグ一時バッファ301、データ一時バッファ302を装備し、第3の実施形態でのこれらバッファ制御と同様の制御を行ってもよい。
以上説明してきたとおり、本発明に係るキャッシュメモリ制御は、省面積で高効率の分岐命令実行が可能となるので、キャッシュメモリを搭載しかつ分岐予測を行うマイクロプロセッサ等として有用である。
第1の実施形態のシステム構成図である。 第1の実施形態でのフローチャートである。 実行命令列を示す図である。 第1の実施形態でのタイミング図である。 第2の実施形態でのシステム構成図である。 第2の実施形態でのフローチャートである。 第3の実施形態でのシステム構成図である。 第3の実施形態でのフローチャートである。 第3の実施形態でのタイミング図である。 第4の実施形態でのシステム構成図である。 第4の実施形態での分岐ターゲットバッファである。 第4の実施形態での分岐ターゲットバッファのセットのタイミング図である。 第4の実施形態での全体タイミング図である。
符号の説明
101 CPU
102 キャッシュメモリ
103 キャッシュ制御部
104 分岐ターゲットバッファ
105 分岐ターゲットバッファ制御部
106 BCU
107 命令バッファ
108 命令アドレス生成部
109 分岐命令PC
123 エントリアドレス比較器
124 エントリアドレス保持データ
125 エントリ一致信号
128 検索モード信号
301 タグ一時バッファ
302 データ一時バッファ
307 復帰判定器
308 復帰要求
309 CPU復帰要求
501 第2エントリアドレス比較器
502 アクセス続行要求
601 分岐ターゲットバッファ
602 ヒットウェイバッファ
603 ヒットウェイ保持データ
604 分岐命令PCバッファ
605 下位アドレスバッファ
606 下位アドレス出力
1000 有効ビット
1001 ウェイ番号
1002 エントリアドレス
1003 オフセットアドレス
1004 分岐先アドレス

Claims (14)

  1. 中央処理装置(CPU)と、前記CPUが実行する命令を格納するキャッシュメモリと、分岐ターゲットバッファとを有する情報処理システムにおけるキャッシュメモリ制御方法であって、
    前記CPUから第1のアドレスで前記キャッシュメモリへアクセスする第1のステップと、
    前記CPUから第2のアドレスで前記キャッシュメモリへアクセスする第2のステップと、
    前記第1のアドレスの前記キャッシュメモリに対するエントリアドレス部分である第1のエントリアドレスと、前記第2のアドレスの前記キャッシュメモリに対するエントリアドレス部分である第2のエントリアドレスとを比較する第3のステップと、
    前記第3のステップにおいて一致しないと判定した場合に前記分岐ターゲットバッファ内に前記キャッシュメモリに対するエントリアドレス部分及びタグアドレス部分が、前記第2のアドレスのタグアドレス及びエントリアドレスと一致する分岐元アドレスが存在するか否かを判定する第4のステップと、
    前記第4のステップにおいて存在すると判定した場合に、前記分岐ターゲットバッファから前記分岐元アドレスに対応する分岐先アドレスを出力する第5のステップと、
    前記分岐先アドレスへの分岐が成立するか否かを予測する第6のステップと、
    前記第6のステップにおいて分岐成立と予測した場合に前記分岐先アドレス又は前記分岐先アドレス以降のアドレスで前記キャッシュメモリをアクセスし、前記分岐先アドレスのデータ又は前記分岐先アドレス以降のアドレスのデータが前記キャッシュメモリ内に存在するか否かを判定する第7のステップと、
    前記第7のステップにおいて存在しないと判定された場合に前記第7のステップでアクセスしたアドレスのブロックデータを前記キャッシュメモリに転送する第8のステップとを備えたことを特徴とするキャッシュメモリ制御方法。
  2. 請求項1記載のキャッシュメモリ制御方法において、
    前記第7のステップにて、前記分岐先アドレスの前記キャッシュメモリに対するエントリアドレスと前記第2のエントリアドレスとが一致しない場合に、前記キャッシュメモリにアクセスすることを特徴とするキャッシュメモリ制御方法。
  3. 請求項1記載のキャッシュメモリ制御方法において、
    前記第7のステップにて、前記分岐先アドレスの前記キャッシュメモリに対するエントリアドレスと前記第2のエントリアドレスとが任意のアドレス以上離れている場合に、前記キャッシュメモリをアクセスすることを特徴とするキャッシュメモリ制御方法。
  4. 請求項1記載のキャッシュメモリ制御方法において、
    前記第7のステップにて存在しないと判定した場合には、前記キャッシュメモリ内の前記分岐先アドレスのブロックデータを転送するエントリのアドレスデータとブロックデータとを一時バッファに転送する第9のステップと、
    前記分岐先アドレスのブロックデータを前記キャッシュメモリ内に転送する第10のステップと、
    前記第2のアドレスより以降のアドレスである第3のアドレスの分岐命令を前記CPUが実行した際に分岐予測が不正解な場合に分岐先アドレスのブロックデータが前記キャッシュメモリ内に格納されたか否かを判定する第11のステップと、
    前記第11のステップで格納されていないと判定した場合には処理を中断し、格納されたと判定された場合には、前記一時バッファ内の前記アドレスデータ及び前記ブロックデータを、前記分岐先アドレスのブロックデータを格納した前記キャッシュメモリ内の前記エントリに書き戻す第12のステップとを更に備えたことを特徴とするキャッシュメモリ制御方法。
  5. 請求項4記載のキャッシュメモリ制御方法において、
    前記第7のステップにて、前記分岐先アドレスの前記キャッシュメモリに対するエントリアドレスと前記第2のエントリアドレスとが一致しない場合に、前記キャッシュメモリにアクセスすることを特徴とするキャッシュメモリ制御方法。
  6. 請求項4記載のキャッシュメモリ制御方法において、
    前記第7のステップにて、前記分岐先アドレスの前記キャッシュメモリに対するエントリアドレスと前記第2のエントリアドレスとが任意のアドレス以上離れている場合に、前記キャッシュメモリをアクセスすることを特徴とするキャッシュメモリ制御方法。
  7. 中央処理装置(CPU)と、前記CPUが実行する命令を格納するキャッシュメモリと、前記キャッシュメモリの制御装置と、分岐ターゲットバッファと、前記分岐ターゲットバッファの制御装置と、前記CPUから前記キャッシュメモリへのアクセスアドレスのエントリアドレス部分を保持するエントリアドレスバッファと、前記CPUから前記キャッシュメモリへのアクセスアドレスのエントリアドレス部分と前記エントリアドレスバッファ内の値とを比較するエントリアドレス比較器とを有する情報処理システムにおけるキャッシュメモリ制御装置であって、
    前記エントリアドレス比較器による比較結果が一致しない場合に、前記キャッシュメモリ制御装置は前記分岐ターゲットバッファの制御装置に検索要求を出力することを特徴とするキャッシュメモリ制御装置。
  8. 請求項7記載のキャッシュメモリ制御装置において、
    前記キャッシュメモリへのアクセスアドレスと、前記検索要求による前記分岐ターゲットバッファからの予測分岐先アドレスとを比較し、前記予測分岐先アドレスによる前記キャッシュメモリへのアクセスを行うか否かの判定を行うことを特徴とするキャッシュメモリ制御装置。
  9. 中央処理装置(CPU)と、前記CPUが実行する命令を格納するキャッシュメモリと、分岐ターゲットバッファとを有する情報処理システムにおけるキャッシュメモリ制御方法であって、
    前記CPUは、前記分岐ターゲットバッファ内の情報を用いて分岐予測を行うCPUであり、
    前記CPUが分岐予測を行う第1のステップと、
    前記第1のステップでの予測結果である予測分岐先アドレス又は当該予測分岐先アドレス以降のアドレスにより前記キャッシュメモリをアクセスする第2のステップと、
    前記キャッシュメモリ内に前記第2のステップでアクセスしたアドレスのブロックデータが存在するか否かを判定する第3のステップと、
    前記第3のステップで存在しないと判定した場合に前記第2のステップでアクセスしたアドレスのデータを含むブロックデータを前記キャッシュメモリに転送するエントリの前記キャッシュメモリ内のアドレスデータとブロックデータとを一時バッファに転送する第4のステップと、
    前記第2のステップでアクセスしたアドレスのデータを含むブロックデータの主記憶から前記キャッシュメモリへの転送を行う第5のステップと、
    前記分岐予測が正解か不正解かを判定する第6のステップと、
    前記第6のステップにより不正解と判定された場合、前記主記憶から前記キャッシュメモリへの転送による前記第2のステップでアクセスしたアドレスのブロックデータが前記キャッシュメモリ内に格納されたか否かを判定する第7のステップと、
    前記第7のステップで格納されていないと判定した場合には処理を中断し、格納したと判定した場合には前記一時バッファから前記キャッシュメモリへ前記アドレスデータと前記ブロックデータとを書き戻す第8のステップとを備えたことを特徴とするキャッシュメモリ制御方法。
  10. 分岐元情報と分岐先情報とを格納する分岐ターゲットバッファであって、
    前記分岐元情報は、分岐命令のキャッシュメモリ内での格納位置情報であることを特徴とする分岐ターゲットバッファ。
  11. 中央処理装置(CPU)と、キャッシュヒットした位置情報を出力するキャッシュメモリと、分岐元情報と分岐先情報とを格納する分岐ターゲットバッファとを有する情報処理システムにおけるキャッシュメモリ制御方法であって、
    前記分岐元情報は、分岐命令の前記キャッシュメモリ内での格納位置情報であり、
    前記CPUから前記キャッシュメモリにアクセスする第1のステップと、
    前記第1のステップにおいてキャッシュヒットである場合に命令データを出力するとともに、ヒットした位置情報を出力する第2のステップと、
    前記第2のステップによって出力された命令データ内の分岐命令を前記CPUが実行した場合に分岐成立か否かを判断する第3のステップと、
    前記位置情報が前記分岐ターゲットバッファ内に存在するか否かを検索する第4のステップと、
    前記第4のステップにおいて前記位置情報が前記分岐ターゲットバッファ内に存在しないと判断した場合に前記位置情報を前記分岐ターゲットバッファ内に格納する第5のステップとを備えたことを特徴とするキャッシュメモリ制御方法。
  12. 中央処理装置(CPU)と、キャッシュヒットした位置情報を出力するキャッシュメモリと、分岐元情報と分岐先情報とを格納する分岐ターゲットバッファとを有する情報処理システムにおけるキャッシュメモリ制御方法であって、
    前記分岐元情報は、分岐命令の前記キャッシュメモリ内での格納位置情報であり、
    前記CPUから前記キャッシュメモリにアクセスする第1のステップと、
    前記第1のステップにおいてキャッシュヒットである場合に前記分岐ターゲットバッファへ前記キャッシュメモリのキャッシュヒットした位置情報と前記キャッシュメモリに対するエントリアドレスとを入力する第2のステップと、
    前記分岐ターゲットバッファ内に位置情報及びエントリアドレスが一致する分岐元情報があるか否かを検索する第3のステップと、
    前記第3のステップにおいて一致する分岐元情報がある場合に対応する分岐先アドレスを出力する第4のステップと、
    前記分岐先アドレスへの分岐が成立するか否かを予測する第5のステップと、
    前記分岐先アドレス又は前記分岐先アドレス以降のアドレスのブロックデータが前記キャッシュメモリ内に存在するか否かを判定する第6のステップと、
    前記第6のステップにおいて存在しないと判定した場合に前記分岐先アドレス又は前記分岐先アドレス以降のアドレスのブロックデータを前記キャッシュメモリ内に転送する第7のステップとを備えたことを特徴とするキャッシュメモリ制御方法。
  13. 請求項12記載のキャッシュメモリ制御方法において、
    前記第6のステップにて存在しないと判断した場合、前記分岐先アドレスのブロックデータを格納する前記キャッシュメモリ内のアドレスデータとブロックデータとを一時バッファに退避する第8のステップと、
    前記分岐先アドレスのブロックデータを転送する第9のステップと、
    前記分岐元アドレスの分岐命令実行により分岐予測不成立の場合に前記第9のステップで退避した前記アドレスデータと前記ブロックデータとを前記キャッシュメモリ内に書き戻す第10のステップとを備えたことを特徴とするキャッシュメモリ制御方法。
  14. 請求項12記載のキャッシュメモリ制御方法において、
    前記第1のステップでのアクセスアドレスが、前記第1のステップより1回前の前記キャッシュメモリへのアクセスエントリアドレスと異なる場合に、前記第3のステップを行うことを特徴とするキャッシュメモリ制御方法。
JP2003354640A 2003-10-15 2003-10-15 キャッシュメモリ制御方法及びキャッシュメモリ制御装置 Pending JP2005122343A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003354640A JP2005122343A (ja) 2003-10-15 2003-10-15 キャッシュメモリ制御方法及びキャッシュメモリ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003354640A JP2005122343A (ja) 2003-10-15 2003-10-15 キャッシュメモリ制御方法及びキャッシュメモリ制御装置

Publications (1)

Publication Number Publication Date
JP2005122343A true JP2005122343A (ja) 2005-05-12

Family

ID=34612486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003354640A Pending JP2005122343A (ja) 2003-10-15 2003-10-15 キャッシュメモリ制御方法及びキャッシュメモリ制御装置

Country Status (1)

Country Link
JP (1) JP2005122343A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108062279A (zh) * 2016-11-07 2018-05-22 三星电子株式会社 用于处理数据的方法和设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108062279A (zh) * 2016-11-07 2018-05-22 三星电子株式会社 用于处理数据的方法和设备
CN108062279B (zh) * 2016-11-07 2023-06-06 三星电子株式会社 用于处理数据的方法和设备

Similar Documents

Publication Publication Date Title
US7493480B2 (en) Method and apparatus for prefetching branch history information
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US6216206B1 (en) Trace victim cache
JP3542020B2 (ja) 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理を実行するプロセッサ装置およびプロセッサ制御方法
US5790823A (en) Operand prefetch table
US5381533A (en) Dynamic flow instruction cache memory organized around trace segments independent of virtual address line
US7657726B2 (en) Context look ahead storage structures
US6230260B1 (en) Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6055621A (en) Touch history table
US9367471B2 (en) Fetch width predictor
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
JP3502592B2 (ja) 分岐予測装置
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
US5297281A (en) Multiple sequence processor system
JPH08234980A (ja) 分岐先バッファを用いた分岐予測システム
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP2008107983A (ja) キャッシュメモリ
JP2001290702A (ja) 記憶装置
US20080120468A1 (en) Instruction Cache Trace Formation
WO2001042927A9 (fr) Dispositif d'acces memoire et methode utilisant une table d'historique des traductions d'adresses
JP3577049B2 (ja) 分岐予測回路
JP2005122343A (ja) キャッシュメモリ制御方法及びキャッシュメモリ制御装置
JPH07200406A (ja) キャッシュシステム
JP4111645B2 (ja) キャッシュミスした後のメモリバスアクセス制御方式
US11797308B2 (en) Fetch stage handling of indirect jumps in a processor pipeline