JP3072705B2 - スーパースカラ・プロセッサの電力消費を減少させる回路及び方法 - Google Patents

スーパースカラ・プロセッサの電力消費を減少させる回路及び方法

Info

Publication number
JP3072705B2
JP3072705B2 JP07186862A JP18686295A JP3072705B2 JP 3072705 B2 JP3072705 B2 JP 3072705B2 JP 07186862 A JP07186862 A JP 07186862A JP 18686295 A JP18686295 A JP 18686295A JP 3072705 B2 JP3072705 B2 JP 3072705B2
Authority
JP
Japan
Prior art keywords
instruction
prefetch
cache
line
branch
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.)
Expired - Lifetime
Application number
JP07186862A
Other languages
English (en)
Other versions
JPH0877000A (ja
Inventor
ガビィ・ジェイ・セーレム
テリー・リー・ウィークレイ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0877000A publication Critical patent/JPH0877000A/ja
Application granted granted Critical
Publication of JP3072705B2 publication Critical patent/JP3072705B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、概して云えば、マイク
ロプロセッサの設計に関するものであり、詳しく云え
ば、プリフェッチ・バッファ、命令キャッシュ、及びヒ
ストリ・ビットを持ったブランチ・ターゲット・キャッ
シュを有するスーパースカラ・プロセッサによって消費
される電力を、その命令キャッシュへの不必要なプリフ
ェッチ・アクセスを減らすことによって減少させるため
の回路及び方法に関するものである。
【0002】
【従来の技術】パーソナル・コンピュータ・システムは
その分野ではよく知られている。一般に、パーソナル・
コンピュータ・システムは、詳しくは、IBMパーソナ
ル・コンピュータ・システムは、今日の近代科学におけ
る多くの分野にコンピュータ・パワーを提供するための
広範囲の用途を得ている。パーソナル・コンピュータ
は、一般に、デスクトップ・マイクロコンピュータ、床
置き型マイクロコンピュータ、或いはポータブルマイク
ロコンピュータとして定義される。それらは、単一の中
央処理装置(CPU)、すべてのRAM及びBIOS−
ROMを含む関連の揮発性メモリ及び不揮発性メモリ、
システム・モニタ、キーボード、1つ又は複数個のフレ
キシブル・ディスケット・ドライブ、固定ディスク記憶
ドライブ(ハード・ドライブとしても知られている)、
いわゆるマウス指示装置、及びオプショナル・プリンタ
より成る。これらシステムの顕著な特性の1つは、これ
らコンポーネントを電気的に一体に接続するためにマザ
ー・ボード又はシステム・プレーナを使用することであ
る。これらのシステムは、主として、独立した計算パワ
ーを単一のユーザに与えるように設計され、そして個人
或いは小企業による購入のために安価に価格づけされて
いる。そのようなパーソナル・コンピュータ・システム
の例は、IBM社のパーソナル・コンピュータAT(I
BM PC/AT)、パーソナル・システム/1(IB
M PS/1)、パーソナル・システム/2(IBM
PS/2)である。
【0003】パーソナル・コンピュータ・システムは、
一般に、ワード処理、表計算を介したデータの操作、デ
ータベースにおけるデータの収集及び比較、グラフィッ
クスの表示、システム設計ソフトウエアを使用した電気
的又は機械的システムの設計等のような種々のアクティ
ビティを遂行するようソフトウエアを走らせるために使
用される。
【0004】そのようなシステムの心臓部はマイクロプ
ロセッサ又は中央処理装置(CPU)(集合的に「プロ
セッサ」と呼ばれる)である。そのプロセッサは、アプ
リケーション・プログラムを機能させる責任のあるアク
ションの殆どを遂行する。システムの実行能力はCPU
に密接に関連している。CPUがプログラム命令を実行
できる速度が速ければ速いほど、システムは全体として
速く実行することができる。
【0005】初期のプロセッサは、比較的遅いシステム
・メモリからの命令を実行し、しかも1つの命令を実行
するために数クロック・サイクルを必要とした。それら
はメモリから命令を読み取り、その命令をデコードし、
必要なアクティビティを遂行し、そしてその結果をメモ
リに書き戻していた。それらはすべて、達成するために
1乃至数サイクルを必要とした。
【0006】アプリケーションがプロセッサからの更な
るパワーを必要としたので、内部及び外部キャッシュ・
メモリがプロセッサに加えられた。キャッシュ・メモリ
(以後、キャッシュと呼ぶ)は、プロセッサ内に又はプ
ロセッサ外に設けられた、或いは、プロセッサに近接し
て接続された非常に速いメモリのセクションである。命
令のブロックは比較的遅いシステムDRAMから更に速
いキャッシュにコピーされ、そこでそれらはプロセッサ
によって実行される。
【0007】アプリケーションがプロセッサからの更な
るパワーを必要としたので、スーパースカラ・プロセッ
サが開発された。スーパースカラ・プロセッサは、1ク
ロック・サイクル当たり複数個の命令を実行することが
できるプロセッサである。スーパースカラ・プロセッサ
のよく知られた例は、「PENTIUM」という商標で
インテル社によって製造されている。そのPENTIU
Mプロセッサは、プリフェッチ・バッファ、命令キャッ
シュ、及びブランチ・ターゲット・キャッシュを使用し
てメモリに対するフェッチを減少させている。それは、
1クロック・サイクル当たり1命令以下にプロセッサを
低速化する傾向がある。
【0008】命令キャッシュは、プロセッサ内に置かれ
た非常に高速のメモリのセクションである。命令は命令
キャッシュから非常に速く実行される。命令ブロックは
遅いシステム・メモリから命令キャッシュに移動させら
れろ。その場合、プロセッサのバッファ、デコーダ、及
び実行装置は、素早くそれらをアクセスすることができ
る。
【0009】実行されるべき次の命令がそのキャッシュ
内にある場合、命令キャッシュは処理をスピード・アッ
プする。しかし、実行されている現在の命令がそのコー
ドでブランチを生じさせ得る命令である場合、その後の
命令が命令キャッシュ内にある確率は劇的に減少し、キ
ャッシュの外の領域へのブランチは、キャッシュが比較
的遅いDRAMからコード・ブロックをロードされるま
でプロセッサにその遅いDRAMからのコードを実行さ
せるので、プロセッサはかなりスロー・ダウンする。
【0010】ブランチ・ターゲット・バッファとしても
知られたブランチ・ターゲット・キャッシュは、遅いシ
ステムDRAMからの読み出しを生じさせるブランチの
問題に対する1つの一般的な解決策である。ブランチ・
ターゲット回路はその分野ではよく知られている。
【0011】ブランチ・ターゲット・キャッシュは、遅
いシステムDRAMからの望ましくない実行を回避する
場合に有用な情報を保持する。それらは、予測されたタ
ーゲット・アドレス及びヒストリ・ビットのようなデー
タを保持する。そのヒストリ・ビットは、特定の予測さ
れたターゲット・アドレスが過去において取られたかど
うかの表示(PENTIUMプロセッサの場合)、及び
予測されたアドレスにおける最初の数ラインのコードの
表示(アドバンスト・マイクロ・デバイス社により製造
されたAm29000プロセッサの場合)を与える。ブ
ランチ・ターゲット・キャッシュを使用することは、プ
ロセッサがその予測されたターゲット・アドレスにおい
てコードの一部分をフェッチすることを可能にし、その
フェッチの時間がそのメモリ領域の大部分を命令キャッ
シュにロードすることを可能にし、それによって、キャ
ッシュからの連続した実行を可能にすると共に遅いシス
テムDRAMからの不必要な実行を防ぐ。
【0012】プリフェッチ・バッファは、1つ又は複数
個の命令を含む1ラインのコードを記憶するバッファで
ある。キャッシュ・アクセス・サイクル中、次に実行さ
れるべきコードのラインがキャッシュに存在する場合、
それは命令デコーダによりデコードするためにプリフェ
ッチ・バッファに移動する。次に実行されるべきコード
のラインがキャッシュに存在しない場合、命令は遅いシ
ステムDRAMからフェッチされ、命令デコーダによる
デコードのためにプリフェッチ・バッファにロードされ
る。
【0013】これらのコンポーネントを使用して、プロ
セッサは非常に速い実行時間を得る。これらプロセッサ
の処理能力が望ましいものであるほど、それらは大量の
電力を消費する傾向がある。プロセッサは、命令キャッ
シュ及びブランチ・ターゲット・キャッシュを非常に頻
繁にアクセスし、遅いシステムDRAMへの不必要なア
クセスを防いでいる。しかし、キャッシュによって消費
される電力はキャッシュの帯域幅に直接に比例する(そ
の帯域幅は単位時間当たりのアクセスの数、例えば、1
秒当たりのアクセスの数として定義される)。従って、
キャッシュが頻繁にアクセスされればされるほど、プロ
セッサが消費する電力は多くなる。従って、キャッシュ
の使用により生じたパフォーマンスの増加は、プロセッ
サによって消費される電力の増加を伴う。この電力消費
は、プロセッサ全体をオーバーヒートして障害を生じさ
せる可能性を含む多くの有害な影響を持ち、場合によっ
ては、それによって回復不能なデータ喪失を導くことが
ある。
【0014】そのようなプロセッサによって消費される
電力を減少させようとする従来の方法は、プロセッサに
おける或るサブ回路への電力を除去すること又はCPU
クロックを延ばす(正規の場合よりも1クロック・サイ
クル当たりの実行されるべき命令を少なくさせる)こと
に焦点を合わせる傾向がある。そのような技法を使用す
ることによって、製造業者は、それらのパーソナル・コ
ンピュータ・システムが他の同様なシステムよりも少な
い電力エネルギしか消費しないため、それらのコンピュ
ータ・システムが環境的に望ましいものであることを表
す「グリーン」マシーンとしてそのパーソナル・コンピ
ュータ・システムを呼んでいる。消費される電力を減少
させるためのこれらの試みは成功してはいるが、プロセ
ッサ・パフォーマンスを減少させるという損失でもって
電力を減少させるという望ましくない副作用を持ってい
る。
【0015】
【発明が解決しようとする課題】従って、本発明の主た
る目的は、スーパースカラ・プロセッサにより消費され
る電力の量を、プロセッサ・パフォーマンスの同様な減
少なしに減少させることにある。
【0016】
【課題を解決するための手段】本発明によれば、キャッ
シュへの不必要なプリフェッチ・アクセスを減らすこと
により、パフォーマンス能力における大きな減少なしに
スーパースカラ・プロセッサによって消費される電力を
減少させるための回路及び方法が提供される。命令キャ
ッシュ及びブランチ・ターゲット・キャッシュがアクセ
スされる頻度が少なくなればなるほど、プロセッサによ
って消費される電力は小さくなるであろう。
【0017】その回路は、PENTIUMプロセッサの
ようなプロセッサにおける典型的なプリフェッチ・バッ
ファで見られるバッファ長を利用する。各ブランチ命令
に対して、命令キャッシュ及びブランチ・ターゲット・
キャッシュがアクセスされ、予測されたブランチ・ター
ゲットのアドレスがそのブランチ・ターゲット・キャッ
シュ内に存在するかどうか及びそのブランチ・ターゲッ
ト・アドレスにおける命令を含むコード・ブロックがそ
の命令キャッシュ内に存在するかどうかを決定する。こ
れらのアクセスは大量の電力を消費する。本発明の回路
では、ブランチされるべき命令が現在プリフェッチ・バ
ッファ内にある時、キャッシュ・プリフェッチを防ぐた
めの回路を加えることによってプロセッサのパワーにお
ける付随した減少なしに電力が節約される。
【0018】従って、本発明の利点は、命令キャッシュ
の不必要なアクセスを防ぐことである。
【0019】本発明のもう1つの利点は、命令キャッシ
ュからの不必要なプリフェッチを防ぐことによってプロ
セッサにおいて消費される電力を減少させるための回路
及び方法を提供することである。
【0020】本発明の更なる利点は、システム・パフォ
ーマンスの減少なしに、低い電気的エネルギ消費という
環境的に望ましい品質を持ったコンピュータ・システム
を提供することである。
【0021】本発明のこれらの利点及びその他の利点
は、本発明の詳細な説明から更に明らかに成ろう。
【0022】
【実施例】図1を参照すると、本発明の拡張スーパース
カラ・マイクロプロセッサを具体化したマイクロコンピ
ュータが示され、10として全体的に表わされる。その
コンピュータは、関連のモニタ14、キーボード12、
及びプリンタ又はプロッタ16を有する。
【0023】図2を参照すると、コンピュータ10は装
飾的な外側部材20及び内側シールド部材22によって
形成されたカバー18を有する。それら部材はシャーシ
28と共同して、ディジタル・データを処理及び記憶す
るための電気的にパワー供給されるデータ処理コンポー
ネント及び記憶コンポーネントを受けるための密閉され
且つ封止されたボリュームを形成する。これらコンポー
ネントのうちの少なくともいくつかは、シャーシ28上
に装着された多層のプレーナ・ボード26又はマザー・
ボード上に装着され、上記のコンポーネントを含むコン
ピュータ10のコンポーネント及びフロッピ・ディスク
・ドライブ、種々の形式のダイレクト・アクセス記憶装
置、アクセサリ・カード又はボード等のような他の関連
素子を電気的に相互接続するための構造体を与える。後
で更に十分に説明するように、プレーナ・ボード26に
は、マイクロコンピュータの動作素子との間で入力信号
及び出力信号を搬送するための設備が設けられる。
【0024】図2を更に参照すると、シャーシ28は、
24として示されたベース、30として示された前面パ
ネル、及び32として示された後面パネルを有する。前
面パネル30は、磁気ディスク又は光ディスク用ディス
ク・ドライブ、テープ・バックアップ・ドライブ等のよ
うなデータ記憶装置を受けるための少なくとも1つのオ
ープン・ベイ(図示の形式では、4つのベイ)を形成す
る。図示の場合、一対のアッパー・ベイ34、36及び
一対のロア・ベイ38、40が設けられる。アッパー・
ベイの1つ34は第1のサイズの周辺装置ドライブ
(3.5インチ・ドライブのような公知のもの)を受容
するようになっており、一方、もう1つのベイ36は2
つのサイズ(3.5インチ及び5.25インチのような)
のうちの選択されたもののドライブを受容するようにな
っている。ロア・ベイは、唯一のサイズ(3.5イン
チ)のドライブを受容するようになっている。図1に
は、1つのフロッピ・ディスク・ドライブが15として
示され、それは、一般に知られているように、挿入され
たディスケットを受けそしてデータを受領、記憶、及び
配送するために使用することができる取り外し可能媒体
のダイレクト・アクセス記憶装置である。
【0025】上記の構造を本発明に関連付ける前に、パ
ーソナル・コンピュータ・システム10の一般的なオペ
レーションの概要を復習することにする。図3を参照す
ると、本発明に従ってコンピュータ・システム10の種
々のコンポーネントを示すパーソナル・コンピュータ・
システムのブロック図が示され、それはプレーナ・ボー
ド26(図2参照)上に装着されたコンポーネント及び
そのパーソナル・コンピュータ・システムの入出力(I
/O)スロット及び他のハードウエアへのそのプレーナ
の接続を含んでいる。プレーナ・ボード26には、シス
テム・プロセッサ(CPU)42が接続される。図示の
実施例では、CPU42は、インテル社により販売され
ているPENTIUMプロセッサである。CPU42
は、高速CPUホスト・バス44によってキャッシュ/
メモリ・コントローラ及びホスト・ブリッジ46、デー
タ・パス・ユニット50、及び第2レベル・キャッシュ
・メモリ(L2キャッシュ)52に接続される。
【0026】キャッシュ/メモリ・コントローラ及びホ
スト・ブリッジ46はバス54を介してL2キャッシュ
52に接続され、バス56を介してシステム・メモリ4
8に接続される。キャッシュ/メモリ・コントローラ及
びホスト・ブリッジ46はL2キャッシュ52及びシス
テム・メモリ48の制御機能を統合し、ホスト(CPU
42)、システム・メモリ48、及び周辺コンポーネン
ト相互接続(PCI)バス60の間の転送のためのアド
レス・パス及びバス制御を行う。PCIバス60は多数
の周辺コンポーネント及びアド・イン・カードをサポー
トする32ビット・データ・バスを使用する。
【0027】ホスト(CPU42)、システム・メモリ
48、及びPCIバス60の間のバス・オペレーション
時に、キャッシュ/メモリ・コントローラ及びホスト・
ブリッジ46はアドレス・パス及びバス制御を行う。
又、キャッシュ/メモリ・コントローラ及びホスト・ブ
リッジ46はデータ・パス・ユニット50を介してデー
タ・フローを制御する。
【0028】データ・パス・ユニット50は、ホスト
(CPU42)、システム・メモリ48、及びPCIバ
ス60の間のデータ・パス接続を行う。システム・メモ
リ48はデータ・バス58を介してデータ・パス・ユニ
ット50にインターフェースされ、それによって、デー
タがシステム・メモリ48へ及びシステム・メモリ48
から伝送される。キャッシュ/メモリ・コントローラ及
びホスト・ブリッジ46及びデータ・パス・ユニット5
0はシステム・メモリ48への及びPCIバス60から
ホスト(CPU42)への全機能データ・パス接続を行
う。
【0029】PCIバス60は、更に、複数個のPCI
バス拡張スロット62(3つのスロットが示される)、
システムI/Oブリッジ・コントローラ64、及びビデ
オ・コントローラ66に接続される。システムI/Oブ
リッジ・コントローラ64はPCIバス60とインダス
トリ・スタンダード・アーキテクチャ(ISA)バス7
2(又は、エンハンスト・インダストリ・スタンダード
・アーキテクチャ(EISA)バス;図示されていな
い)との間のブリッジを提供し、現在のISA(又は、
EISA)ベースのPCシステムで見られる共通のI/
O機能の多くを統合する。バス67を介してグラフィッ
ク情報を記憶するためのビデオRAM70と関連付けら
れたビデオ・コントローラ66は、高性能グラフィック
スに必要な大量のデータがビデオ・コントローラ66に
素早く伝送されるのを可能にするようにPCIバス60
にインターフェースされる。ビデオ・コントローラ66
によって発生されたビデオ信号はディジタル・アナログ
・コンバータ(DAC)68を介してビデオ・ディスプ
レイ・ターミナル又は他のディスプレイ装置に送られ
る。
【0030】一般には、ISA拡張スロット74(6個
が図示されている)、IDEハード・ディスク・コント
ローラ76、フロッピ・ディスク・コントローラ(FD
C)78、フラッシュPROM(BIOS)80、リア
ル・タイム・クロック(RTC)82、キーボード/マ
ウス・コントローラ84、直列/並列コントローラ8
6、及び音声コントローラ88のような種々の周辺装置
がISAバス72に接続される。
【0031】上記説明は多少の特異性を伴って記述され
ているが、本発明が他のハードウエア構成と関連して使
用可能であることは勿論である。例えば、イーサネット
・コントローラ、マルチメディア・コントローラ、小型
コンピュータ・システム・インターフェース II(S
CSI II)コントローラのような他の周辺コンポー
ネントがPCIバス60に付加可能である。
【0032】本発明の詳細を説明する前に、従来技術の
スーパースカラ・マイクロプロセッサの説明が本発明の
利点を理解する場合に有効であろう。従って、従来技術
のスーパースカラ・マイクロプロセッサ42を示す図4
を参照する。
【0033】典型的な従来技術のスーパースカラ・マイ
クロプロセッサ42は、命令キャッシュ102、命令デ
コーダ106、ブランチ・ターゲット・キャッシュ10
8、プリフェッチ・バッファ104、制御装置110、
実行装置112、マイクロコードROM114、及び選
択的には、浮動小数点装置(FPU)116を含む。シ
ステム・メモリ118は命令キャッシュ102及び実行
装置112と回路コミュニケーション関係にある。
【0034】命令キャッシュ102は、ブランチ・ター
ゲット・キャッシュ108、プリフェッチ・バッファ1
04、及び実行装置112と回路コミュニケーション関
係にある。複数個のプリフェッチ・アドレス線120
は、変換索引バッファ(TLB)121を介して命令キ
ャッシュ102をブランチ・ターゲット・キャッシュ1
08に接続し、特定の命令が命令キャッシュ102に現
在存在するかどうかを決定するためにそのブランチ・タ
ーゲット・キャッシュ108が命令キャッシュ102に
照会するのを可能にする。複数個のプリフェッチ・キャ
ッシュ・バッファ線122は命令キャッシュ102をプ
リフェッチ・バッファ104に接続し、命令キャッシュ
102からプリフェッチ・バッファ104への命令のフ
ェッチを可能にする。複数個のアドレス線142及びデ
ータ線144は、バス装置140を介して命令キャッシ
ュ102をシステム・メモリ118に接続し、システム
・メモリ118から命令キャッシュ102への命令コー
ドのブロックのフェッチを可能にする。又、アドレス線
142及びデータ線144は、実行装置によって要求さ
れたデータの検索のために、バス装置140を介して実
行装置112をシステム・メモリ118に接続する。
【0035】命令デコーダ106はブランチ・ターゲッ
ト・キャッシュ108、制御措置110、プリフェッチ
・バッファ104、及びマイクロコードROM114と
回路コミュニケーション関係にある。複数個の命令ポイ
ンタ線124は制御装置110をブランチ・ターゲット
・キャッシュ108に接続する。それによって、ブラン
チ・ターゲット・キャッシュ108は、システム・メモ
リ118から命令キャッシュ102への命令コードの直
列ブロック転送を指示する。複数個のプリフェッチ命令
デコーダ線126は命令デコーダ106をプリフェッチ
・バッファ104に接続し、プリフェッチ・バッファ1
04に現在記憶されている命令がマイクロコードへのデ
コードのために命令デコーダ106にロードされるのを
可能にする。複数個のデコーダ・制御装置線128a及
び128bは命令デコーダ106を制御装置110に接
続し、マイクロコードROM114に従ってプロセッサ
・アーキテクチャを導入するために遂行されなければな
らないオペレーションのシーケンスを制御装置110が
管理することを可能にする。複数個のデコーダ・マイク
ロコードROM線130は命令デコーダ106をマイク
ロコードROM114に接続し、そのマイクロコードR
OM114に記憶されたルーチンを必要とする複雑な命
令のデコーディングを容易にする。複数個のマイクロコ
ードROM・制御装置線132a及び132bはマイク
コードROM114を制御装置110に接続し、マイク
コードROM114がスーパースカラ・マイクロプロセ
ッサ内のすべてのパイプラインを通して直接制御を行う
ことを可能にする。
【0036】複数個の制御・実行装置線134a及び1
34bは制御装置110を実行装置112に接続し、命
令の更なるデコーディング及びマイクロコードROM1
14が必要とする他のすべてのオペレーションが実行装
置112において行われることを可能にする。複数個の
制御・FPU線135は制御装置110をFPU116
に接続し、浮動小数点数の数学的オペレーションの実施
を可能にする。更に、制御装置110は、すべてのオペ
レーションの適正なタイミング及び管理を容易にするた
めに、周知の方法(図示されてない)ですべてのプロセ
ッサ回路に接続される。
【0037】実行装置112は、更に、FPU116、
ブランチ・ターゲット・キャッシュ108、及びシステ
ム・メモリ118にも接続される。複数個の実行・FP
U線136a及び136bは、乗算、除算、及び加算の
ような浮動小数点数の数学的オペレーションの実行のた
めに実行装置112をFPU116に接続する。複数個
のブランチ検証及びターゲット・アドレス線146は実
行装置112をブランチ・ターゲット・キャッシュ10
8に接続し、ブランチ・ターゲット・キャッシュ108
におけるブランチ・ターゲット予測アルゴリズムにおい
て使用されるヒストリ・ビットの更新を可能にする。
【0038】本発明のオペレーション、利点、及び細部
の理解を容易にするために、従来技術のスーパースカラ
・マイクロプロセッサのオペレーションの検討は復習に
値する。従来技術のスーパースカラ・マイクロプロセッ
サ100のオペレーションはデュアル・パイプライン・
アーキテクチャに基づいている。
【0039】命令キャッシュ102、ブランチ・ターゲ
ット・キャッシュ108、及びプリフェッチ・バッファ
104は生の命令をスーパースカラ・マイクロプロセッ
サ100の実行装置112へ入れるように働く。命令キ
ャッシュ102は、典型的には、256個のライン(又
は、ワード)形式の8キロバイト・メモリを含む。な
お、各ライン(又は、ワード)は32バイトの長さであ
る。一般に、プリフェッチ・バッファ104内にある記
憶バッファは、32バイトの命令キャッシュ102のラ
インの長さと比較される。各32バイト・ライン内に含
まれる命令の数は、そこに存在する命令のタイプで変わ
る。
【0040】命令は命令キャッシュ102から、又はバ
ス装置140及び外部アドレス・バス138a、データ
・バス138b及び制御バス138cを介してシステム
・メモリ118からフェッチされる。ブランチ・ターゲ
ット・キャッシュ108はブランチ・ターゲット・アド
レスを保持し、ブランチが実際にそのターゲット・アド
レスに行われたかどうかに関する情報をヒストリ・ビッ
トの形で記憶する。マイクロコードROM114は、ス
ーパースカラ・マイクロプロセッサ・アーキテクチャを
導入するために遂行されなければならないオペレーショ
ンのシーケンスを制御するマイクロコードを有する。
又、マイクロコードROM114は、スーパースカラ・
マイクロプロセッサにおけるすべてのパイプラインを介
した直接制御も有する。
【0041】各パイプラインは次のような5つのステー
ジより成る。即ち、 (1)プリフェッチ(以下、PFと記す) (2)命令デコード(以下、D1と記す) (3)アドレス発生(以下、D2と記す) (4)実行−ALU及びキャッシュ・アクセス(以下、
EXと記す) (5)書戻し(以下、WBと記す)
【0042】パイプラインの第1ステージはプリフェッ
チ(PF)ステージである。命令は命令キャッシュ10
2又はシステム・メモリ118からプリフェッチされ
る。リクエストされた命令ラインが命令キャッシュ10
2内にない場合、システム・メモリの参照が行われて、
その命令がシステム・メモリ118から取り出される。
PFステージにおいて、ライン・サイズ・プリフェッチ
・バッファの少なくとも2つの独立した対(以下、基本
プリフェッチ・バッファ及び代替プリフェッチ・バッフ
ァと記す;図10参照)がプリフェッチ・バッファ10
4に含まれ、ブランチ・ターゲット・キャッシュ108
と関連して動作する。これは、一組のプリフェッチ・バ
ッファ(即ち、基本プリフェッチ・バッファ)が命令を
順次にプリフェッチすることを可能にし、一方、他のプ
リフェッチ・バッファ(即ち、代替プリフェッチ・バッ
ファ)がブランチ・ターゲット・キャッシュ108に従
ってブランチ予測をプリフェッチする。これらプリフェ
ッチ・バッファは、一方の対が予測されたブランチ命令
をいつもプリフェッチし、他方の対が順次命令をプリフ
ェッチするように、それらのプリフェッチ・パスを交互
に動作させる。
【0043】次のパイプライン・ステージはデコード
(D1)ステージである。命令デコーダ106内にある
2つの並列デコーダ(各パイプラインに対して1つ)が
デコードして、2つの命令を発生しようとする。それら
デコーダは、1つ又は2つの命令が一組の命令組合せル
ール次第で発生可能であるかどうかを決定する。その命
令組合せルールを理解することは本発明にとって本質的
なことではなく、従って、これ以上それを説明しない。
【0044】D1ステージの主要な機能はブランチ予測
である。ブランチ予測は、一般には、予測アルゴリズム
を介してブランチ・ターゲット・キャッシュ108にお
いて実施される。ブランチ・ターゲット・キャッシュ1
08は、ブランチ・ターゲット命令の線形アドレスでも
ってD1ステージでアクセスされる。ブランチ・ターゲ
ット・キャッシュ108は、デコードされた各ブランチ
命令に対して1つの予測されたターゲット・アドレスを
記憶する。ブランチ・ターゲット・キャッシュ108で
は、各ブランチ・ターゲット・アドレスはそれと関連し
た一組のヒストリ・ビットを有し、それらヒストリ・ビ
ットはブランチ・ターゲット・キャッシュ108の予測
アルゴリズムによって使用される。それらヒストリ・ビ
ットは、各予測誤り又は正しいブランチ予測の後、実行
ステージ(後述参照)において更新される。
【0045】D1ステージに続いて第2デコード(D
2)ステージが生じ、メモリに存在するオペランドのア
ドレスが計算される。これらは、変位及び即時アドレス
の両方を含む命令、又はベース及びインデックスアドレ
ス・モードを含む命令を含んでいる。
【0046】パイプラインの実行(EX)ステージは、
ALUオペレーション及びデータ・キャッシュ・アクセ
スの両方に対してプロセッサにより使用される。EXス
テージでは、条件付きブランチを除く第1パイプライン
におけるすべての命令及び第2パイプラインにおけるす
べての命令がブランチ・ターゲット・キャッシュ108
における正しいブランチ予測に関して検証される。
【0047】最終ステージ、即ち、書戻し(WB)ステ
ージは、命令がプロセッサ状態を修正しそして実行を完
了させることを可能にされるステージである。このステ
ージでは、第2パイプライン条件付きブランチがブラン
チ・ターゲット・キャッシュ108における正しいブラ
ンチ予測に関して検証される。
【0048】プリフェッチ命令はスーパースカラ・マイ
クロプロセッサのオペレーションを改良したけれども、
それは最大のエネルギ効率的な態様で実施されたわけで
はなかった。従来のスーパースカラ・マイクロプロセッ
サがプリフェッチを実施する非効率性は下記の2つのシ
ナリオ、即ち、シナリオ(A)及びシナリオ(B)によ
って例示される。それらシナリオは命令キャッシュから
の不必要なプリフェッチを生じる。これら不必要なプリ
フェッチは命令キャッシュの帯域幅(即ち、アクセスの
数)を増加させ、それによって、スーパースカラ・マイ
クロプロセッサによって消費される電力の量を増加させ
る。
【0049】図5及び図6に示されたシナリオ(A)
は、ブランチ命令及びそれのブランチ・ターゲット・ア
ドレスが同じ32バイト・ライン内(図5では147と
して示され、図6では148として示される)にある時
に生じる。このようなシナリオでは、32バイト命令ラ
インは基本プリフェッチ・バッファ又は代替プリフェッ
チ・バッファ(図10参照)にある。一旦ブランチ・タ
ーゲット・アドレスがデコードされると、ブランチ・タ
ーゲット・キャッシュは、ブランチ・ターゲット・アド
レスを含む命令ライン(図5では147として示され、
図6では148として示される)を代替プリフェッチ・
バッファにロードさせる。これは既に基本プリフェッチ
・バッファにある同じ命令ラインであるので、プリフェ
ッチ・バッファは命令キャッシュからの不必要なプリフ
ェッチを行っている。命令キャッシュからのこの不必要
なプリフェッチは電力を浪費するという望ましくない影
響を持つ。
【0050】図7に示されたシナリオ(B)は、1つの
32バイト・ライン152のブランチ命令が先行の32
バイト・ライン150内にあるブランチ・ターゲット・
アドレスを有する時に生じる。このシナリオでは、基本
プリフェッチ・バッファは、先ず、命令ライン150及
び152を含む(前記PFステージの説明参照)。一旦
デコーダがライン境界151aを横切ると、次に続く命
令ライン152aがフェッチされ、基本プリフェッチ・
バッファにおける命令ライン150を置換する。ブラン
チ・ターゲット・アドレスがデコードされた後、ブラン
チ・ターゲット・キャッシュは命令ライン150を、次
に続く命令ライン、即ち、命令ライン152と共に代替
プリフェッチ・バッファにロードさせるであろう(それ
がブランチのターゲットを持っているため)。当初、命
令ライン150は基本プリフェッチ・バッファに存在し
ていたので、そのプリフェッチ・バッファは3つの不必
要なプリフェッチを行っていた。従って、シナリオ
(A)において、命令キャッシュは、既にプリフェッチ
・バッファに存在していた情報を検索するためにアクセ
スされ、シナリオ(B)では、プリフェッチ・バッファ
にそのまま残したい命令ラインを上書きするプリフェッ
チが行われた。シナリオ(B)において、命令ライン1
50が次に続く命令ラインによって上書きされていなか
った場合、必要な命令ラインはプリフェッチ・バッファ
に存在したであろう。従って、プロセッサは、そのプリ
フェッチ・バッファが必要な情報を含んでいた場合、命
令キャッシュからそのプリフェッチ・バッファに情報を
取り出すエネルギを浪費していたことになる。
【0051】本発明の下では、従来技術のスーパースカ
ラ・マイクロプロセッサにおいて、命令キャッシュから
の命令のプリフェッチは、既にそのような命令がプリフ
ェッチ・バッファにある場合、排除されるように修正さ
れる。命令キャッシュへの不必要なアクセスを除くこと
によって、キャッシュ帯域幅(即ち、命令キャッシュ・
アクセスの数)は減少する。キャッシュ帯域幅の減少の
結果、命令キャッシュ・アクセスの数がかなり減少する
ため、スーパースカラ・マイクロプロセッサがオペレー
ション中に消費する電力量が減少する。
【0052】図9を参照すると、プリフェッチ禁止回路
272において本発明の1つの実施例を組み込んだ拡張
スーパースカラ・マイクロプロセッサが278として示
される。本発明の図示の実施例は一般的なスーパースカ
ラ・マイクロプロセッサに組み込まれるので、従来技術
のスーパースカラ・マイクロプロセッサに関して前述し
た接続関係及び動作関係の説明の多くが図示の実施例の
説明に適用可能である。従って、この説明は、図示の実
施例の詳細事項及びそれによって生じた強調事項に焦点
を合わせる。
【0053】図9において、プリフェッチ禁止回路27
2はブランチ・ターゲット・キャッシュ108、プリフ
ェッチ・バッファ104、制御装置100、及び実行装
置112と回路コミュニケーション関係にある。複数個
のプリフェッチ・ターゲット・アドレス線208はプリ
フェッチ禁止回路272をブランチ・ターゲット・キャ
ッシュ108に接続し、それによって、ブランチ・ター
ゲット・アドレスが分析のためにプリフェッチ禁止回路
272に入力される。複数個のバッファ・禁止回路線2
76はプリフェッチ・バッファ104をプリフェッチ禁
止回路272に接続し、それによって、プリフェッチ・
バッファ104の内容がプリフェッチ禁止回路272に
与えられる。複数個のプリフェッチ禁止・制御装置線2
74は制御装置110をプリフェッチ禁止回路272に
接続し、それによって、プリフェッチ禁止回路272に
おけるオペレーションが(後述するように)制御装置1
10における或る信号に応答して行われる。複数個のブ
ランチ検証及びターゲット・アドレス線216は実行装
置112をプリフェッチ禁止回路272に接続し、それ
によって、実行装置112により発生されたブランチ検
証及びターゲット・アドレスが分析のためにプリフェッ
チ禁止回路272に入力される。
【0054】図10には、本発明のプリフェッチ禁止回
路272の実施例の第1部分153の機能的ブロック図
が示される。第1部分153は、次のような場合、命令
キャッシュから不必要なプリフェッチを排除するように
設計される。即ち、(1)順方向ブランチ又は逆方向ブ
ランチが同じ32バイト・ライン内にあるターゲット・
アドレスを有する時(前記シナリオ(A))、及び
(2)順方向ブランチが次に続く32バイト・ライン内
に含まれるターゲット・アドレスを有し、そのラインが
既にプリフェッチ・バッファに与えられている時。
【0055】図10を参照すると、第1部分153は第
1基本プリフェッチ・バッファ154を含み、そのバッ
ファ154は複数個の第1基本プリフェッチ・バッファ
出力線166を介して第1セレクタ162と回路コミュ
ニケーション関係にある。同様に、第1代替プリフェッ
チ・バッファ158は複数個の第1代替プリフェッチ・
バッファ出力線170を介して第1セレクタ162と回
路コミュニケーション関係にある。第2基本プリフェッ
チ・バッファ156は、複数個の第2基本プリフェッチ
・バッファ出力線168を介して第2セレクタ164と
回路コミュニケーション関係にある。同様に、第2代替
プリフェッチ・バッファ160は、複数個の第2代替プ
リフェッチ・バッファ出力線172を介して第2セレク
タ164と回路コミュニケーション関係にある。基本/
代替プリフェッチ・バッファ選択信号174はブランチ
・ターゲット・キャッシュ108を第1セレクタ162
及び第2セレクタ164に接続し、それによって、デー
タ選択が達成される。
【0056】第1比較器178は第1セレクタ162及
びブランチ・ターゲット108と回路コミュニケーショ
ン関係にある。複数個の第1セレクタ出力線182は、
第1セレクタ162によって選択されたデータを第1比
較器178に送る。複数個のブランチ・ターゲット・ア
ドレス線184はブランチ・ターゲット・キャッシュ1
76から第1比較器178にブランチ・ターゲット・ア
ドレスを送る。同様に、第2比較器180は第2セレク
タ164及びブランチ・ターゲット・キャッシュ176
に電気的に接続される。複数個の第2セレクタ出力線1
86は第2セレクタ164によって選択されたデータを
第2比較器180に送る。ブランチ・ターゲット・アド
レスも、複数個のブランチ・ターゲット・アドレス線1
84を介して第2比較器180に送られる。
【0057】2入力ORゲート192は第1比較器出力
線188及び第2比較器出力線190を介して第1比較
器178及び第2比較器180の出力を受ける。禁止キ
ャッシュ選択線194はその2入力ORゲート192の
出力を命令キャッシュ102(図9に示される)及び第
1インバータ・ゲート228(図11に示される)に搬
送する。
【0058】図11には、本発明のプリフェッチ禁止回
路272の第2部分196の概略的ブロック図が示され
る。前述のシナリオ(B)(図7に示される)における
命令キャッシュからの不必要なプリフェッチを除くよう
めに第2部分196は設計される。第2部分196は、
プリフェッチ・ロックがディスエーブルにされるまで、
スーパースカラ・マイクロプロセッサが命令をプリフェ
ッチすることをディスエーブルにするようプリフェッチ
・ロックするという概念を使用する。
【0059】図11を参照すると、第2部分196は、
プリフェッチ・ロック分析回路280、プリフェッチ・
ロック・リセット回路282、プリフェッチ・ロック回
路284、及びR−Sラッチ260を含む。プリフェッ
チ・ロック分析回路280は、比較器198、減算器2
10、比較器214、ANDゲート220、及び種々の
相互接続線(後述する)を含む。プリフェッチ・ロック
・リセット回路282はインバータ・ゲート228、3
入力ANDゲート242、244、246、2入力OR
ゲート254、及びそれらの間の相互接続線(後述す
る)を含む。プリフェッチ・ロック回路284は3入力
ANDゲート262を含む。上記回路及びラッチは図1
1に示されるように相互に接続され、且つ命令キャッシ
ュ102、制御装置110、実行装置112、及びブラ
ンチ・ターゲット・キャッシュ108に相互接続され
る。又、図11には、関連あるパイプライン・ステージ
が示され、そこでは、本発明の拡張スーパースカラ・マ
イクロプロセッサによって種々な機能が達成される。
【0060】以下の動作関連の説明では、すべて、各線
の初期状態は低レベルであり、アドレス線及びバッファ
はすべてエンプティである。又、本発明のオペレーショ
ンの理解を助けるために、正ロジック(正状態又は高レ
ベル状態は「1」の論理レベルに等しく、負状態又は低
レベル状態は「0」の論理レベルに等しい)が使用され
る。正ロジックの使用は限定的に解釈されるべきではな
く、負ロジック(正状態又は高レベル状態は「0」の論
理レベルに等しく、負状態又は低レベル状態は「1」の
論理レベルに等しい)も実施例の説明及び実施において
使用することが可能である。
【0061】図5、図6、及び図8を参照すると、第1
部分153(図10参照)は、次のような場合、命令キ
ャッシュから不必要なプリフェッチを除くように設計さ
れる。即ち、(1)順方向ブランチ又は逆方向ブランチ
が同じ32バイト・ライン内にあるターゲット・アドレ
スを有する時(図5及び図6参照)、及び(2)順方向
ブランチが次に続く32バイト・ラインを指すターゲッ
ト・アドレスを有し且つそのラインが既にプリフェッチ
・バッファに与えられている時。
【0062】図5、図6、及び図10を参照すると、3
2バイト命令ライン147及び148は第1部分153
によって同様に処理され、基本プリフェッチ・バッファ
154及び156又は代替プリフェッチ・バッファ15
8及び160に存在する。従って、命令ライン147が
基本プリフェッチ・バッファ154及び156に存在す
る時に説明の焦点を合わせる。
【0063】一旦命令ライン147がプリフェッチ・バ
ッファに与えられると、それは命令デコーダによってデ
コードされる。命令ライン147は順方向ブランチ命令
を含むので、そのブランチ命令はブランチのターゲット
・アドレスと共にデコードされるであろう。一旦ブラン
チ・ターゲット・アドレスが発生されると、それはブラ
ンチ・ターゲット・キャッシュ108に送られる。基本
プリフェッチ・バッファは現在利用されているので、基
本/代替プリフェッチ・バッファ選択線174は低レベ
ルであり、第1セレクタ162及び第2セレクタ164
の出力は出力線182及び186において基本プリフェ
ッチ・バッファ154及び156の内容を含んでいる
(表1参照)。
【0064】
【表1】
【0065】今や、プリフェッチ・バッファ154及び
156の内容は第1比較器178及び第2比較器180
に入力され、ブランチ・ターゲット・アドレス線184
に存在するブランチ・ターゲット・アドレスに比較され
る。ブランチ・ターゲット・アドレスが基本プリフェッ
チ・バッファ154内に含まれる場合、第1比較器出力
線188が高レベルに駆動され、2入力ORゲート19
2の出力における禁止キャッシュ選択線194を高レベ
ルに駆動させる。ブランチ・ターゲット・アドレスが基
本プリフェッチ・バッファ156内に含まれる場合、第
2比較器出力線190が高レベルに駆動され、2入力O
Rゲート192の出力における禁止キャッシュ選択線1
94を高レベルに駆動させる。禁止キャッシュ選択線1
94は命令キャッシュをディスエーブルするので、プリ
フェッチが生じることはない。
【0066】命令ライン147が代替プリフェッチ・バ
ッファ158及び160内に存在する場合、回路オペレ
ーションは、基本プリフェッチ・バッファに関する前述
の説明と同じである。簡単に云えば、基本プリフェッチ
・バッファ158及び160の内容はセレクタ162及
び164の出力に現れるように選択され(表1参照)、
しかる後、比較器178及び180によってブランチ・
ターゲット・アドレスに比較される。ブランチ・ターゲ
ット・アドレスが代替プリフェッチ・バッファ158又
は160の1つに含まれる場合、2入力ORゲート19
2の出力における禁止キャッシュ選択線194は高レベ
ルに駆動され、それによって如何なるプリフェッチもデ
ィスエーブルする。
【0067】図8及び図10を参照すると、その状況
は、順方向ブランチが次に続く命令ライン157を指す
ターゲットを有し且つライン157が既にプリフェッチ
・バッファに与えられている時に生じる。そのような状
況では、第1部分153は、必要な命令ラインが既にプ
リフェッチ・バッファ内に存在するので、プリフェッチ
をディスエーブルするであろう。そのような状況は、次
のような場合に生じる。即ち、(1)命令ライン155
が基本プリフェッチ・バッファ154に存在し且つ命令
ライン157が既に基本プリフェッチ・バッファ156
に与えられている時、又は(2)命令ライン155が代
替プリフェッチ・バッファ158に存在し且つ命令ライ
ン157が既に代替プリフェッチ・バッファ160に与
えられている時。
【0068】第1部分153は基本プリフェッチ・バッ
ファ及び代替プリフェッチ・バッファを同様な態様で扱
う。従って、本願の説明は基本プリフェッチ・バッファ
に焦点を合わすことにする。プリフェッチは連続した命
令ラインのブロックを命令キャッシュからフェッチする
ことによって達成されるので、命令ライン155は基本
プリフェッチ・バッファ154にロード可能であり、そ
れは次に続く命令ライン157を基本プリフェッチ・バ
ッファ156へロードさせる(プロセッサのプリフェッ
チ・オペレーションに従って)であろう。
【0069】命令ライン155は順方向ブランチ命令を
含むので、そのブランチ命令はブランチのターゲット・
アドレスと共にデコードされるであろう。一旦ブランチ
・ターゲット・アドレスが発生されると、それはブラン
チ・ターゲット・キャッシュ108に送られる。基本プ
リフェッチ・バッファが現在利用されているので、基本
/代替プリフェッチ・バッファ選択線174は下位レベ
ルであり、第1セレクタ162及び第2セレクタ164
の出力はセレクタ出力線182及び186において基本
プリフェッチ・バッファ154及び156の内容を含ん
でいる(表1参照)。
【0070】プリフェッチ・バッファ154及び156
の内容は、今や、第1比較器178及び第2比較器18
0に入力され、そしてブランチ・ターゲット・アドレス
線184におけるブランチ・ターゲット・アドレスに比
較される。ブランチ・ターゲット・アドレスは基本プリ
フェッチ・バッファ156内に含まれるので、第2比較
器出力線190は高レベルに駆動され、2入力ORゲー
ト192の出力における禁止キャッシュ選択線194を
高レベルに駆動させる。今や、プリフェッチはディスエ
ーブルされる。図示の実施例では、禁止キャッシュ選択
線194はプリフェッチ・バッファ装置又は命令キャッ
シュに直接に接続される。
【0071】図7、図10、及び図11を参照すると、
第2部分196は、1つの命令ライン152におけるブ
ランチ命令が先行の命令ライン150内にあるブランチ
・ターゲット・アドレスを有する時、プリフェッチを排
除するように設計される。そのような状況が生じる時、
第2部分196はプリフェッチを禁止し、それによって
エネルギを節約する。
【0072】第2部分193は基本プリフェッチ・バッ
ファ及び代替プリフェッチ・バッファを同じ態様で扱
う。従って、本願の説明は基本プリフェッチ・バッファ
にだけ焦点を合わせることにする。命令ライン150は
基本プリフェッチ・バッファ154にロードされ、しか
る後、次に続く命令ライン152が基本プリフェッチ・
バッファ156にロードされるであろう(表2における
ステップ1参照)。命令ライン150は命令デコーダ
(図示されていない)によってデコードされて実行さ
れ、命令ライン152が続くであろう。プロセッサの正
規のオペレーションの一部分として、デコーダがライン
境界151aを横切る時、次に続く命令ライン152a
に対するプリフェッチがリクエストされ、その命令ライ
ン152aは基本プリフェッチ・バッファ154にロー
ドされ、命令ライン150を置換する(表2におけるス
テップ2参照)。
【0073】命令ライン152は、ターゲット・アドレ
スが先行の命令ライン150に含まれる逆方向ブランチ
命令であるので、第2部分196はこれを検出してブラ
ンチ・ターゲット・キャッシュ内のプリフェッチ・ロッ
ク状態をセットし、又、命令ライン150及び152が
代替プリフェッチ・バッファ158及び160にロード
されるであろう(表2のステップ3参照)。ブランチ・
ターゲット・アドレスはEXステージにおいて実行装置
112により発生され、ターゲット・アドレス・バス2
16を介して比較器214に入力される。
【0074】
【表2】
【0075】現在の命令ライン152のアドレス(代替
プリフェッチ・バッファ160に記憶される)はプリフ
ェッチ・ターゲット・アドレス・バス208上に置かれ
る。そこで、減算器210はそのアドレス値を1だけ減
算し、この値を比較器214に入力する。そのターゲッ
ト・アドレスを含む命令ラインのアドレスが先行の命令
ライン・アドレス(代替プリフェッチ・バッファ158
に現在記憶されている命令ライン)に等しい場合、比較
器214の出力線218は高レベルに駆動され、そして
ANDゲート220に入力される。ターゲット命令ライ
ンへのブランチが実際に行われる場合、実行装置112
はブランチ実行線222を高レベルに駆動し、ANDゲ
ート220に入力させる。出力線218及び222が両
方とも高レベルに駆動される時、ANDゲート220の
出力線224も高レベルに駆動され、ブランチ・ターゲ
ット・キャッシュ108に入力される。
【0076】出力線224が高レベルに駆動される時、
ブランチ・ターゲット・キャッシュ108におけるセッ
ト・プリフェッチ・ロック状態機能がトリがされる。そ
のセット・プリフェッチ・ロック状態機能は、一対のヒ
ストリ・ビットの状態を進めるそのブランチ・ターゲッ
ト・キャッシュにおける単一の状態機械(statem
achine)より成る。プリフェッチ・ロック状態が
存在することを表すようにヒストリ・ビットが所定値に
セットされる前に、前の命令ラインにおけるターゲット
・アドレスへの少なくとも1つの逆方向ブランチが必要
である。
【0077】デコーダは、ライン境界151aを横切る
まで代替プリフェッチ・バッファ158からの命令ライ
ン150を処理し続けるであろう。そして、そのライン
境界151aを横切った時、後続の命令ライン152a
に対して新しいプリフェッチ・リクエストが発生され
る。命令ライン152aは命令ライン150を置換し、
代替プリフェッチ・バッファ158にロードされるであ
ろう(表2のステップ4参照)。デコーダが命令ライン
152における第2時間の間に逆方向ブランチに遭遇す
る時、第2部分196は、ターゲット・アドレスのプリ
フェッチが完了した後にプリフェッチ禁止信号270を
セットするであろう。ヒストリ・ビットはヒストリ・ビ
ット・バス204を介して比較器198に入力され、予
め定義された一定のプリフェッチ・ロック状態値202
に比較される。ヒストリ・ビットはブランチ・ターゲッ
ト・キャッシュ108によってプリフェッチ・ロック状
態値202に等しくセットされているので、比較器19
8は出力線226を高レベルに駆動し、それをプリフェ
ッチ・ロック・リセット回路282及びプリフェッチ・
ロック回路284に入力する。プリフェッチ禁止信号2
70は低レベルであるので、ANDゲート242、24
4、及び246はラッチ260のリセットをブロックし
そしてANDゲート262をイネーブルするであろう。
【0078】ブランチ・ターゲットがプリフェッチされ
る時、比較器198の出力線226は高レベルであり、
そのプリフェッチが完了する時、プリフェッチ完了線2
68は高レベルに駆動され、そしてラッチ260の出力
線(Q')266は高レベルであるので、ANDゲート
262はそれの出力線264を高レベルに駆動し、それ
によって、表3のライン2に示されるようにラッチ26
0を状態変化させる。プリフェッチ禁止信号線(Q)2
70が高レベルである間に、制御装置110におけるプ
リフェッチ・ロック機能が開始され、更なるプリフェッ
チは行われないであろう。プリフェッチ禁止信号線
(Q)270が高レベルである時、出力線(Q')26
6は低レベルに駆動され、それによって、ANDゲート
262に、それの出力線264を低レベルに駆動させ
る。今や、R−Sラッチ260は低レベルであり、プリ
フェッチ禁止信号線(Q)270は高レベルのままであ
る(表3のライン1参照)。ブランチ・ターゲットを持
った命令ライン150は、プリフェッチ・ロック状態が
生じる前に基本プリフェッチ・バッファ152に置かれ
るべき最後のラインである(表2のステップ5参照)。
【0079】
【表3】
【0080】命令キャッシュからの命令のプリフェッチ
は、逆方向の命令ループが終了するまでディスエーブル
されたままであろう。表2のステップ5に示されるよう
に、必要な命令ライン150及び152はプリフェッチ
・バッファ内にあるので、今や、基本プリフェッチ・バ
ッファ及び代替プリフェッチ・バッファはロックされ
る。
【0081】プリフェッチ・ロック・リセット回路28
2は、正規のプリフェッチが再開し得るようにプリフェ
ッチ・ロックがディスエーブルされる時を決定する。プ
リフェッチ・ロックのリセットは、次のような状態のう
ちの何れかの下で生じるであろう。即ち、 (1)ブランチに対するヒストリ・ビットがプリフェッ
チ・ロック状態にセットされ且つブランチが行われなか
ったことを実行装置が決定する。 (2)ブランチが行われることをブランチ・ターゲット
・キャッシュを使用してデコーダが予測し且つターゲッ
トがプリフェッチ・バッファの外にある。 (3)ブランチが行われることを実行装置が決定し且つ
ターゲットがプリフェッチ・バッファの外にある。 プリフェッチ・ロックのリセットは、命令キャッシュか
らの次のリクエストされた命令ラインをプリフェッチ・
バッファにロードさせるであろう。
【0082】第1状態の下でのリセット:ブランチ・タ
ーゲットキャッシュ108からのブランチ・ターゲット
のヒストリ・ビットがプリフェッチ・ロック状態202
に等しい時、比較器198の出力線226は高レベルに
駆動される。出力線226は3入力ANDゲート242
に入力される。ANDゲート242の第2入力は、ラッ
チ260及び制御装置110に接続されたプリフェッチ
禁止信号線270である。ANDゲート242の第3入
力は、実行装置112に接続されたブランチ不実行線2
40である。実行装置110は、ターゲット・アドレス
へのブランチが生じなかった時、ブランチ不実行線24
0を高レベルに駆動し、ANDゲート242に、それの
出力線248を高レベルに駆動させる。出力線248が
高レベルに駆動される時、3入力ORゲート254はそ
の出力線256を高レベルに駆動する。出力線256は
R−Sラッチ260のR入力に接続される。そのR入力
が高レベルに駆動される時、R−Sラッチ260はプリ
フェッチ禁止信号線(Q)270を低レベルに駆動する
(S入力が予め低レベルに駆動されているため)。今
や、プリフェッチ・ロックはディスエーブルされ、命令
のプリフェッチが再開可能である。
【0083】第2状態の下でのリセット:制御装置11
0からのデコード・ブランチ実行信号線271は高レベ
ルに駆動され(命令がブランチを生じさせることを、デ
コーダがブランチ・ターゲット・キャッシュを使用して
予測することを表す)、それを3入力ANDゲート24
4における1つの入力に供給する。
【0084】第1部分153からの禁止キャッシュ選択
線194が低レベルである(プリフェッチが第1部分1
53によってディスエーブルされないことを表す)時、
インバータ・ゲート228はそれの出力線230を高レ
ベルに駆動する。その出力線230は3入力ANDゲー
ト246における1つの入力に接続される。
【0085】プリフェッチ禁止信号線270は高レベル
(プリフェッチ禁止信号のリセットが許されることを表
す)であり、3入力ANDゲート244における第3入
力に接続される。3つの入力すべて(線230、27
0、及び271)が高レベルである時、3入力ANDゲ
ート244はそれの出力線250を高レベルに駆動し、
それによって、3入力ORゲート254の出力線256
を高レベルに駆動させる。出力線256はR−Sラッチ
260のR入力に接続される。そのR入力が高レベルに
駆動される時、R−Sラッチ260はプリフェッチ禁止
信号線(Q)270を低レベルに駆動する(S入力は予
め低レベルに駆動されているため)。今や、プリフェッ
チ・ロックはディスエーブルされ、命令のプリフェッチ
は再開可能である。
【0086】第3状態の下でのリセット:ブランチ実行
線222は3入力ANDゲート246における1つの入
力に接続され、そしてブランチ・ターゲット・アドレス
へのブランチが実際に行われる時、実行装置112によ
って高レベルに駆動される。
【0087】第1部分153からの禁止キャッシュ選択
線194が低レベルである(第1部分153によってプ
リフェッチがディスエーブルされないことを表す)時、
インバータ・ゲート228は、3入力ANDゲート24
6における1つの入力に接続されたそれの出力線230
を高レベルに駆動する。
【0088】プリフェッチ禁止信号線270は高レベル
(プリフェッチ禁止信号のリセットが許されることを表
す)であり、3入力ANDゲート246における第3入
力に接続される。3入力ANDゲート246は、3つの
入力すべて(線222、230、及び270)が高レベ
ルである時、それの出力線252を高レベルに駆動し、
それによって、3入力ORゲート254の出力線256
を高レベルに駆動させる。出力線256はR−Sラッチ
260のR入力に接続される。そのR入力が高レベルに
駆動される時、R−Sラッチ260はプリフェッチ禁止
信号線(Q)270を低レベルに駆動する(S入力は予
め低レベルに駆動されているため)。今や、プリフェッ
チ・ロックがディスエーブルされ、命令のプリフェッチ
が再開可能である。
【0089】本発明はそれの実施例の説明によって例示
され、及びその実施例はかなり詳細に説明されたけれど
も、「特許請求の範囲」の技術的範囲をそのような詳細
事項に制限し或いは何らかの方法で限定することは本出
願人の意図するものではない。更なる利点及び修正点は
当業者にとっては容易に明らかであろう。例えば、32
バイト命令ライン長及びプリフェッチ・バッファの数は
変更可能である。
【0090】
【0091】
【0092】
【発明の効果】本発明によれば、キャッシュへの不必要
なプリフェッチ・アクセスを減らすことによって、パフ
ォーマンスの大きな低下なしに、スーパースカラ・マイ
クロプロセッサによる消費電力を減少させることが可能
である。
【図面の簡単な説明】
【図1】本発明の拡張スーパースカラ・マイクロプロセ
ッサを組み込んだパーソナル・コンピュータの概略図で
ある。
【図2】シャーシ、カバー、電子機械的ダイレクト・ア
クセス記憶装置、及びプレーナ・ボードを含む図1のパ
ーソナル・コンピュータの素子の分解投影図であり、そ
れら素子の間の関係を示すものである。
【図3】図1及び図2のパーソナル・コンピュータにお
けるいくつかのコンポーネントの概略図である。
【図4】従来技術のスーパースカラ・マイクロプロセッ
サのコンポーネント及びそれらの間の相互接続を示すブ
ロックである。
【図5】順方向ブランチ命令を含む32バイト命令ライ
ン及び同じ32バイト命令ラインにおけるブランチ・タ
ーゲットを示す図である。
【図6】逆方向ブランチ命令を含む32バイト命令ライ
ン及び同じ32バイト命令ラインにおけるブランチ・タ
ーゲットを示す図である。
【図7】ブランチ命令を含む第2命令ラインを持った2
つの連続した32バイト命令ライン及び第1命令ライン
に含まれたブランチ・ターゲットを示す図である。
【図8】ブランチ命令を含む第1命令ラインを持った2
つの連続した32バイト命令ライン及び第2命令ライン
に含まれたブランチ・ターゲットを示す図である。
【図9】本発明の拡張サーパースから・マイクロプロセ
ッサに含まれたコンポーネントのブロック図である。
【図10】本発明のプリフェッチ禁止回路の第1部分の
ブロック図である。
【図11】本発明のプリフェッチ禁止回路の第2部分の
ブロック図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 テリー・リー・ウィークレイ アメリカ合衆国フロリダ州、ボカ・ラト ン、ウォーターサイド・ドライブ 22396 (56)参考文献 特開 平4−90027(JP,A) 特開 平4−333929(JP,A) 特開 平4−293124(JP,A) 米国特許5623615(US,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】システム・メモリを持ったコンピュータ・
    システムにおいて使用するマイクロプロセッサであっ
    て、 (a)前記システム・メモリから読み取られた、少なく
    とも1つの命令を含む複数個の命令ラインを記憶するよ
    うに構成された命令キャッシュと、 (b)それぞれが前記命令キャッシュ又は前記システム
    ・メモリからコピーされた少なくとも第1命令ライン及
    び後続の第2命令ラインを記憶するように構成された2
    つのプリフェッチ・バッファと、 (c)前記プリフェッチ・バッファから取り出された命
    令をデコードする命令デコーダと、 (d)ブランチ・ターゲット情報を記憶するように構成
    され、前記プリフェッチ・バッファから取り出された命
    令がブランチ・ターゲットを有するブランチ命令である
    ことを前記命令デコーダが決定したことに応答してブラ
    ンチ・ターゲット情報を供給するように構成されたブラ
    ンチ・ターゲット・キャッシュと、 (e)前記命令デコーダによりデコードされた命令を実
    行する実行回路と、 (f)前記システム・メモリから前記命令キャッシュへ
    の読み取り、及び前記命令キャッシュから前記プリフェ
    ッチ・バッファへのプリフェッチを制御する制御回路で
    あって、前記実行回路により実行される命令が一方のプ
    リフェッチ・バッファ中の第2命令ラインにあるブラン
    チ命令であり、且つそのブランチ・ターゲットが後続の
    命令ラインによって置換されている第1命令ラインにあ
    った場合に、該第1命令ラインを他方のプリフェッチ・
    バッファにプリフェッチして、該他方のプリフェッチ・
    バッファの命令を実行させる制御回路と、 (g)前記第1命令ラインへのブランチが行われると
    き、前記ブランチ・ターゲット・キャッシュにおいてプ
    リフェッチ・ロック状態を設定し、該プリフェッチ・ロ
    ック状態が既に設定されていると、前記命令キャッシュ
    から前記プリフェッチ・バッファへのプリフェッチを禁
    止して前記プリフェッチ・バッファをロックし、更に前
    記プリフェッチ・バッファがロックされているとき、前
    記ブランチ・ターゲットへのブランチが行われないこと
    に応答して、前記ロックを解除するプリフェッチ禁止回
    路と、 を含むマイクロプロセッサ。
  2. 【請求項2】システム・メモリを有するコンピュータ・
    システムにおいて、前記システム・メモリから読み取ら
    れた、少なくとも1つの命令を含む複数個の命令ライン
    を記憶するように構成された命令キャッシュと、それぞ
    れが前記命令キャッシュ又は前記システム・メモリから
    コピーされた少なくとも第1命令ライン及び後続の第2
    命令ラインを記憶するように構成された2つのプリフェ
    ッチ・バッファと、該プリフェッチ・バッファから取り
    出された命令をデコードする命令デコーダ、ブランチ・
    ターゲット情報を記憶するように構成され、前記プリフ
    ェッチ・バッファから取り出された命令がブランチ・タ
    ーゲットを有するブランチ命令であることを前記命令デ
    コーダが決定したことに応答してブランチ・ターゲット
    情報を供給するように構成されたブランチ・ターゲット
    ・キャッシュと、前記システム・メモリから前記命令キ
    ャッシュへの読み取り、及び前記命令キャッシュから前
    記プリフェッチ・バッファへのプリフェッチを制御する
    制御回路とを有するマイクロプロセッサで消費される電
    力を減少させる方法であって、 (a)第1命令ライン及び後続の第2命令ラインを含む
    複数個の命令ラインを前記命令キャッシュから一方のプ
    リフェッチ・バッファにプリフェッチするステップと、 (b)前記第2命令ラインにおいてターゲット命令を持
    ったブランチ命令をデコードするステップと、 (c)デコードしたブランチ命令を前記実行回路で実行
    するステップと、 (d)前記ターゲット命令が前記一方のプリフェッチ・
    バッファにおいて後続の命令ラインによって置換されて
    いる第1命令ラインにあった場合に、前記第1命令ライ
    ンを他方のプリフェッチ・バッファにプリフェッチする
    ステップと、 (e)前記第1命令ラインへのブランチが行われると
    き、前記ブランチ・ターゲット・キャッシュにおいてプ
    リフェッチ・ロック状態を設定し、該プリフェッチ・ロ
    ック状態が既に設定されていると、前記命令キャッシュ
    から前記プリフェッチ・バッファへのプリフェッチを禁
    止して前記プリフェッチ・バッファをロックするステッ
    プと、 (f)ロックされた前記プリフェッチ・バッファにある
    命令を実行するステップと、 (g)前記ターゲット命令へのブランチが行われない場
    合に前記プリフェッチ・バッファのロックを解除するス
    テップと、 を含む方法。
JP07186862A 1994-08-04 1995-07-24 スーパースカラ・プロセッサの電力消費を減少させる回路及び方法 Expired - Lifetime JP3072705B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US285785 1994-08-04
US08/285,785 US5623615A (en) 1994-08-04 1994-08-04 Circuit and method for reducing prefetch cycles on microprocessors

Publications (2)

Publication Number Publication Date
JPH0877000A JPH0877000A (ja) 1996-03-22
JP3072705B2 true JP3072705B2 (ja) 2000-08-07

Family

ID=23095681

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07186862A Expired - Lifetime JP3072705B2 (ja) 1994-08-04 1995-07-24 スーパースカラ・プロセッサの電力消費を減少させる回路及び方法

Country Status (2)

Country Link
US (1) US5623615A (ja)
JP (1) JP3072705B2 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799180A (en) * 1995-10-31 1998-08-25 Texas Instruments Incorporated Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken
US6092186A (en) * 1996-05-07 2000-07-18 Lucent Technologies Inc. Apparatus and method for aborting un-needed instruction fetches in a digital microprocessor device
US5809566A (en) * 1996-08-14 1998-09-15 International Business Machines Corporation Automatic cache prefetch timing with dynamic trigger migration
JPH10124315A (ja) * 1996-10-18 1998-05-15 Hitachi Ltd 分岐処理方法およびそのための情報処理装置
US5983321A (en) * 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US5987599A (en) * 1997-03-28 1999-11-16 Intel Corporation Target instructions prefetch cache
US6122729A (en) 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US5845101A (en) * 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US5951678A (en) * 1997-07-25 1999-09-14 Motorola, Inc. Method and apparatus for controlling conditional branch execution in a data processor
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6253289B1 (en) * 1998-05-29 2001-06-26 Compaq Computer Corporation Maximizing sequential read streams while minimizing the impact on cache and other applications
JP3573980B2 (ja) 1998-11-13 2004-10-06 富士通株式会社 情報処理装置及び情報処理システム
EP1050804A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Execution of instruction loops
EP1160662A1 (en) * 2000-03-10 2001-12-05 Texas Instruments France Processor with pointer tracking to eliminate redundant memory fetches
US7292772B2 (en) * 2000-05-29 2007-11-06 Sony Corporation Method and apparatus for decoding and recording medium for a coded video stream
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US6981169B2 (en) * 2002-02-26 2005-12-27 Sun Microsystems, Inc. Modified glitch latch for use with power saving dynamic register file structures
US6938126B2 (en) * 2002-04-12 2005-08-30 Intel Corporation Cache-line reuse-buffer
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
KR100591769B1 (ko) 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
JP2006059068A (ja) 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
US7685411B2 (en) * 2005-04-11 2010-03-23 Qualcomm Incorporated Multi-mode instruction memory unit
US7461237B2 (en) * 2005-04-20 2008-12-02 Sun Microsystems, Inc. Method and apparatus for suppressing duplicative prefetches for branch target cache lines
US7681188B1 (en) * 2005-04-29 2010-03-16 Sun Microsystems, Inc. Locked prefetch scheduling in general cyclic regions
US9304773B2 (en) * 2006-03-21 2016-04-05 Freescale Semiconductor, Inc. Data processor having dynamic control of instruction prefetch buffer depth and method therefor
US8090934B2 (en) * 2006-07-11 2012-01-03 Cetin Kaya Koc Systems and methods for providing security for computer systems
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム
US8176297B2 (en) * 2008-12-31 2012-05-08 Texas Instruments Incorporated Adaptive fetch advance control for a low power processor
CN102473149B (zh) * 2009-07-20 2015-02-04 飞思卡尔半导体公司 包括缓冲器控制逻辑的信号处理系统、集成电路及其方法
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
US20120079303A1 (en) * 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US9710277B2 (en) * 2010-09-24 2017-07-18 Intel Corporation Processor power management based on class and content of instructions
US8341382B2 (en) * 2010-09-30 2012-12-25 Nxp B.V. Memory accelerator buffer replacement method and system
JP6016689B2 (ja) 2013-03-28 2016-10-26 ルネサスエレクトロニクス株式会社 半導体装置
CN112905237A (zh) * 2019-12-04 2021-06-04 北京百度网讯科技有限公司 指令预取方法、装置、设备和介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4747046A (en) * 1985-06-28 1988-05-24 Hewlett-Packard Company Mechanism for comparing two registers and storing the result in a general purpose register without requiring a branch
US4933837A (en) * 1986-12-01 1990-06-12 Advanced Micro Devices, Inc. Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
EP0371418A3 (en) * 1988-11-30 1991-09-04 National Semiconductor Corporation Apparatus for and method of providing the program counter of a microprocessor external to the device
US5214766A (en) * 1989-04-28 1993-05-25 International Business Machines Corporation Data prefetching based on store information in multi-processor caches
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
JPH0395629A (ja) * 1989-09-08 1991-04-22 Fujitsu Ltd データ処理装置
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
JPH04239323A (ja) * 1991-01-14 1992-08-27 Nec Corp 階層形命令制御における命令キャッシュ方式
JPH04369061A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp キャッシュメモリの制御方式

Also Published As

Publication number Publication date
JPH0877000A (ja) 1996-03-22
US5623615A (en) 1997-04-22

Similar Documents

Publication Publication Date Title
JP3072705B2 (ja) スーパースカラ・プロセッサの電力消費を減少させる回路及び方法
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US7114059B2 (en) System and method to bypass execution of instructions involving unreliable data during speculative execution
JP3871883B2 (ja) 間接分岐ターゲットを計算するための方法
US5826074A (en) Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US5509137A (en) Store processing method in a pipelined cache memory
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
US5940858A (en) Cache circuit with programmable sizing and method of operation
EP0463976A2 (en) Data prefetch instruction in a reduced instruction set processor
EP0465322A2 (en) In-register data manipulation in reduced instruction set processor
US6671762B1 (en) System and method of saving and restoring registers in a data processing system
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US5596735A (en) Circuit and method for addressing segment descriptor tables
US5919256A (en) Operand cache addressed by the instruction address for reducing latency of read instruction
US6065091A (en) Translation look-aside buffer slice circuit and method of operation
US5946718A (en) Shadow translation look-aside buffer and method of operation
JP2575219B2 (ja) データ処理システム及びその命令実行を促進する方法
US6032241A (en) Fast RAM for use in an address translation circuit and method of operation
JPH07120284B2 (ja) データ処理装置
US6301647B1 (en) Real mode translation look-aside buffer and method of operation
US5970509A (en) Hit determination circuit for selecting a data set based on miss determinations in other data sets and method of operation
US6877069B2 (en) History-based carry predictor for data cache address generation
US6829700B2 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
JP2847316B2 (ja) プロセッサ
JP3045959B2 (ja) スーパースカラ・プロセッサ装置内の非アーキテクト命令を選択的にサポートする方法及び装置