JPH01169538A - 命令事前取出し装置 - Google Patents
命令事前取出し装置Info
- Publication number
- JPH01169538A JPH01169538A JP63263008A JP26300888A JPH01169538A JP H01169538 A JPH01169538 A JP H01169538A JP 63263008 A JP63263008 A JP 63263008A JP 26300888 A JP26300888 A JP 26300888A JP H01169538 A JPH01169538 A JP H01169538A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- cache
- instruction
- address
- row
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
A、産業上の利用分野
本発明は、−殻内に、データ処理システム中のキャッシ
ュに関し、より詳しくは、分岐履歴テーブルを使ってキ
ャッシュに事前取出しすることにより、キャッシュの性
能を改善する装置及び方法に関する。
ュに関し、より詳しくは、分岐履歴テーブルを使ってキ
ャッシュに事前取出しすることにより、キャッシュの性
能を改善する装置及び方法に関する。
B、従来技術
高性能コンピュータ処理装置のパイプライン化の利用が
始まった時から、処理すべきコード内の条件付き分岐の
処理が高性能に対する主要な阻害因子であることが知ら
れて来た。パイプライン化の使用に先立ち、 1、命令を取り出す。
始まった時から、処理すべきコード内の条件付き分岐の
処理が高性能に対する主要な阻害因子であることが知ら
れて来た。パイプライン化の使用に先立ち、 1、命令を取り出す。
2、命令を復号する。
3、当該のレジスタにアクセスし、適当な計算を実行し
て、入力オペランドのアドレスを決定する。
て、入力オペランドのアドレスを決定する。
4、当該の入力オペランドを取り出す。
5、入力オペランドを使って、命令によって指定される
処理を実行する。
処理を実行する。
6、処理の結果を記憶する。
という6個の事象シーケンスにより、デジタル式コンピ
ュータの処理を記述するのが、最も好都合と思われる。
ュータの処理を記述するのが、最も好都合と思われる。
非パイプライン式のマシンは、これらのステップを実行
し、次いで、次の命令を取り出して、シーケンスを繰り
返す。
し、次いで、次の命令を取り出して、シーケンスを繰り
返す。
パイプライン式マシンでは、これらの各ステップを、並
列な別々のハードウェア装置として物理的に実施する。
列な別々のハードウェア装置として物理的に実施する。
次のように、一連の命令で全装置が同時に動作する。あ
る命令がその最終結果を記憶する間に、次の命令が機能
的処理を実行し、その次の命令が入力オペランドを取り
出し、次の命令がオペランドのアドレスを計算し、次の
命令が復号され、次の命令がメモリから取り出される。
る命令がその最終結果を記憶する間に、次の命令が機能
的処理を実行し、その次の命令が入力オペランドを取り
出し、次の命令がオペランドのアドレスを計算し、次の
命令が復号され、次の命令がメモリから取り出される。
命令を処理する順序がわかっていれば、1サイクルに1
個の速度で命令を取り出し、次いでその命令をパイプラ
インに送り込むことが可能である。
個の速度で命令を取り出し、次いでその命令をパイプラ
インに送り込むことが可能である。
つまり、1命令当たり理論上の6サイクルを必要とする
のでなく、1マシン・サイクルの間に、各命令が実行で
きる。
のでなく、1マシン・サイクルの間に、各命令が実行で
きる。
このシナリオは、厳密に順次的な命令の場合には非常に
有効であるものの、命令が順次実行されない場合にはあ
まり有効でない。分岐命令によって非順次処理が生じる
。分岐命令は、コンピュータにその利用可能なデータに
基づいて判断を下させるものであり、事実、この機能が
現代のコンピュータの威力の大きな源泉である。分岐が
選ばれる場合の効果は、順序通りならその分岐の次にく
るはずの命令の復号を中断して、メモリ中の別の記憶位
置から命令を復号し始めることである。
有効であるものの、命令が順次実行されない場合にはあ
まり有効でない。分岐命令によって非順次処理が生じる
。分岐命令は、コンピュータにその利用可能なデータに
基づいて判断を下させるものであり、事実、この機能が
現代のコンピュータの威力の大きな源泉である。分岐が
選ばれる場合の効果は、順序通りならその分岐の次にく
るはずの命令の復号を中断して、メモリ中の別の記憶位
置から命令を復号し始めることである。
条件付き命令とは、ある条件(通常、分岐命令の直前に
ある命令の結果)のとき命令実行のこの転移(分岐)を
実行するだけの分岐命令である。
ある命令の結果)のとき命令実行のこの転移(分岐)を
実行するだけの分岐命令である。
すなわち、分岐命令が復号される時点では、分岐を取る
かどうか、及びどこへ分岐するか(分岐先)が一般には
不明なので、分岐命令はパイプライン処理の円滑な順序
付けを中断する。従来技術では、分岐のためにパイプラ
イン式マシンが受ける不利益を軽減するために、様々の
試みが行なわれてきた。本発明は、分岐予知機構によっ
て提供される情報を使って、いわゆるキャッシュ・ミス
の影響を軽減する。
かどうか、及びどこへ分岐するか(分岐先)が一般には
不明なので、分岐命令はパイプライン処理の円滑な順序
付けを中断する。従来技術では、分岐のためにパイプラ
イン式マシンが受ける不利益を軽減するために、様々の
試みが行なわれてきた。本発明は、分岐予知機構によっ
て提供される情報を使って、いわゆるキャッシュ・ミス
の影響を軽減する。
キャッシュは、コンピュータの主記憶装置よりも通常は
るかに小さく、かつはるかに高速のローカル・メモリで
ある。はぼすべての高性能デジタル式コンピュータがキ
ャッシュを使用し、市販のマイクロプロセッサにもロー
カル・キャッシュを有するものがある。直列式プロセッ
サを数個の並列パイプライン段に分割すると、1段当た
りの処理時間が単一命令の全体的処理時間よりも著しく
少なくなるので、パイプライン化の採用によりキャッシ
ュ使用の根拠が一部、動機付けられる。
るかに小さく、かつはるかに高速のローカル・メモリで
ある。はぼすべての高性能デジタル式コンピュータがキ
ャッシュを使用し、市販のマイクロプロセッサにもロー
カル・キャッシュを有するものがある。直列式プロセッ
サを数個の並列パイプライン段に分割すると、1段当た
りの処理時間が単一命令の全体的処理時間よりも著しく
少なくなるので、パイプライン化の採用によりキャッシ
ュ使用の根拠が一部、動機付けられる。
したがって、パイプライン式マシンは、当然のこととし
て、サイクル時間がはるかに短い。したがって、アクセ
ス時間が一定しているメモリでは、アクセスを実行する
のに、長い非パイプライン・サイクルで必要となるより
も、より短いパイプライン・サイクルがより多く必要と
なる。メモリへのアクセス時間がプロセッサのサイクル
数の割に増大スルことが、マシンをパイプライン化する
ことの副作用である。
て、サイクル時間がはるかに短い。したがって、アクセ
ス時間が一定しているメモリでは、アクセスを実行する
のに、長い非パイプライン・サイクルで必要となるより
も、より短いパイプライン・サイクルがより多く必要と
なる。メモリへのアクセス時間がプロセッサのサイクル
数の割に増大スルことが、マシンをパイプライン化する
ことの副作用である。
キャッシュが開発されたのは、パイプラインに相応した
サイクル時間で動作できるきわめて大きなメモリを妥当
なコストで作成することは不可能であったが、パイプラ
インに遅れずに動作できる小型メモリを作成することは
可能であったためである。キャッシュ中には、プロセッ
サが最も最近に参照した項目(命令及びデータ)を記憶
する。
サイクル時間で動作できるきわめて大きなメモリを妥当
なコストで作成することは不可能であったが、パイプラ
インに遅れずに動作できる小型メモリを作成することは
可能であったためである。キャッシュ中には、プロセッ
サが最も最近に参照した項目(命令及びデータ)を記憶
する。
プロセッサがその項目を再び参照する場合、パイプライ
ン・サイクル時間で、キャッシュからその項目を得るこ
とができる。こうした参照は、キャッシュ・ヒツトと呼
ばれる。キャッシュにない項目を参照する場合、プロセ
ッサは、より低速の主記憶装置からその項目を得なけれ
ばならない。いわゆるキャッシュ・ミスによって、主記
憶装置への参照が必要となる。
ン・サイクル時間で、キャッシュからその項目を得るこ
とができる。こうした参照は、キャッシュ・ヒツトと呼
ばれる。キャッシュにない項目を参照する場合、プロセ
ッサは、より低速の主記憶装置からその項目を得なけれ
ばならない。いわゆるキャッシュ・ミスによって、主記
憶装置への参照が必要となる。
一度参照された項目(命令またはデータ)は、近い将来
に再び参照されることがあり得ることが認められている
。この特徴は「参照の時間的局在性」と呼ばれ、最も最
近に参照された項目をキャッシュ内に保存しておく理論
的根拠である。また、ある項目が参照される場合、参照
される項目に物理的に近接している他の項目も参照され
る可能性の高いことが経験的に認められる。この第2の
特徴は、「参照の空間的局在性」と呼ばれ、連続する項
目のブロックであるキャッシュ行を保存しておく理論的
根拠である。
に再び参照されることがあり得ることが認められている
。この特徴は「参照の時間的局在性」と呼ばれ、最も最
近に参照された項目をキャッシュ内に保存しておく理論
的根拠である。また、ある項目が参照される場合、参照
される項目に物理的に近接している他の項目も参照され
る可能性の高いことが経験的に認められる。この第2の
特徴は、「参照の空間的局在性」と呼ばれ、連続する項
目のブロックであるキャッシュ行を保存しておく理論的
根拠である。
上記で論じたように、通常のコンピュータは、大型の主
記憶装置と、ローカル・キャッシュ付きのパイプライン
式プロセッサを含んでいる。概念的に述べると、プロセ
ッサは、そのキャッシュから命令を取り出し、この命令
を復号し、そのキャッシュからオペランドを取り出し、
命令を実行する。
記憶装置と、ローカル・キャッシュ付きのパイプライン
式プロセッサを含んでいる。概念的に述べると、プロセ
ッサは、そのキャッシュから命令を取り出し、この命令
を復号し、そのキャッシュからオペランドを取り出し、
命令を実行する。
実際上は、通常、キャッシュとプロセッサの間に、近い
将来に復号される命令を保持する中間のバッファ段が存
在する。これは、命令バッファと呼ばれている。
将来に復号される命令を保持する中間のバッファ段が存
在する。これは、命令バッファと呼ばれている。
キャッシュと同様に、(はるかに小規模なことを除き)
命令バッファは連続する命令ブロックを保持する。ただ
し、1キャッシュ行は通常64バイトまたは128バイ
トであるが、命令バッファ中の1ブロツクは通常8バイ
トである。本体コンピュータでは、平均して、8バイト
のブロックで2個の命令を保持する。したがって、キャ
ッシュからの命令取出しが行なわれるごとに、おそらく
2個の有用な命令が命令バッファに転送される。
命令バッファは連続する命令ブロックを保持する。ただ
し、1キャッシュ行は通常64バイトまたは128バイ
トであるが、命令バッファ中の1ブロツクは通常8バイ
トである。本体コンピュータでは、平均して、8バイト
のブロックで2個の命令を保持する。したがって、キャ
ッシュからの命令取出しが行なわれるごとに、おそらく
2個の有用な命令が命令バッファに転送される。
このため、キャッシュに課される帯域幅要件がいくらか
緩和され、このことが命令バッファの第1の重要な目的
である。命令バッファの第2の重要な目的は、パイプラ
インの復号装置に命令を正しい順序で転送できるように
ブロックをシフトさせることのできる制御を内蔵するこ
とである。
緩和され、このことが命令バッファの第1の重要な目的
である。命令バッファの第2の重要な目的は、パイプラ
インの復号装置に命令を正しい順序で転送できるように
ブロックをシフトさせることのできる制御を内蔵するこ
とである。
命令バッファがキャッシュと相違する主な点は、サイズ
が小さいことと再使用がないことである。
が小さいことと再使用がないことである。
命令バッファのサイズは通常8ないし32バイトの範囲
にあり、キャッシュのサイズは通常64にないし256
にバイトである。キャッシュは主記憶装置をそっくりそ
のままエミュレートしなければならず、キャッシュへの
アドレスはすべて実アドレスで行なわれる。一方、命令
ブロックを命令バッファに入れる場合は、仮想アドレス
に基づいて認識されるにすぎない。命令バッファは小型
で、(関連する実アドレスを識別するための)ディレク
トリをもたないので、バッファ中の項目は一度使用され
ると廃棄される。つまり、命令バッファに1命令ブロツ
クが入れられると、分岐に達するまで、プロセッサは、
単に順次命令を復号していく。分岐が選ばれる場合には
、命令バッファに新しい命令ブロックが転送され、復号
が再開される。
にあり、キャッシュのサイズは通常64にないし256
にバイトである。キャッシュは主記憶装置をそっくりそ
のままエミュレートしなければならず、キャッシュへの
アドレスはすべて実アドレスで行なわれる。一方、命令
ブロックを命令バッファに入れる場合は、仮想アドレス
に基づいて認識されるにすぎない。命令バッファは小型
で、(関連する実アドレスを識別するための)ディレク
トリをもたないので、バッファ中の項目は一度使用され
ると廃棄される。つまり、命令バッファに1命令ブロツ
クが入れられると、分岐に達するまで、プロセッサは、
単に順次命令を復号していく。分岐が選ばれる場合には
、命令バッファに新しい命令ブロックが転送され、復号
が再開される。
「事前取出し」という用語をキャッシュ事前取出しに関
して使用する場合、命令バッファ中に命令を取り出すこ
とに関して使用する場合と意味が異なることに留意され
たい。
して使用する場合、命令バッファ中に命令を取り出すこ
とに関して使用する場合と意味が異なることに留意され
たい。
命令バッファに関して使用する場合の「事前取出し」は
、単に、命令を復号する前に(事前に取り出した命令が
復号されることに疑問の余地はないが)命令をバッファ
に入れることを意味するにすぎない。キャッシュに関し
て使用する場合の「事前取出し」は、常に、メモリ中の
特定の行が使用されるものと推測し、この行がプロセッ
サに参照されることが確実にわかる前にその行をキャッ
シュに転送することを意味する。したがって、命令バッ
ファへの事前取出しに特別な機構が必要でないこともあ
る。すなわち、この形式の事前取出しは、厳密に要求に
応じてほとんど制御なしに行なうことができる。ただし
、キャッシュへの事前取出しには、はとんど常に、実際
の要求取出しに末梢的にしか関係しない事象に基づいて
取出しを開始する、ある種の巧妙な機構が必要である。
、単に、命令を復号する前に(事前に取り出した命令が
復号されることに疑問の余地はないが)命令をバッファ
に入れることを意味するにすぎない。キャッシュに関し
て使用する場合の「事前取出し」は、常に、メモリ中の
特定の行が使用されるものと推測し、この行がプロセッ
サに参照されることが確実にわかる前にその行をキャッ
シュに転送することを意味する。したがって、命令バッ
ファへの事前取出しに特別な機構が必要でないこともあ
る。すなわち、この形式の事前取出しは、厳密に要求に
応じてほとんど制御なしに行なうことができる。ただし
、キャッシュへの事前取出しには、はとんど常に、実際
の要求取出しに末梢的にしか関係しない事象に基づいて
取出しを開始する、ある種の巧妙な機構が必要である。
本明細書に記載するようなメモリ階層では、様々な形の
取出しがすべて同時に行なわれる。各機構は、その設計
対象となる取出しの種類に基づいて、自身のアドレス・
レジスタを使用する。プロセッサ中の命令復号段で、い
わゆる「プログラム・カウンタJ (PC)を使って
、命令バッファから個々の命令を取り出す。プログラム
・カウンタは、復号すべき命令のアドレスを含む。
取出しがすべて同時に行なわれる。各機構は、その設計
対象となる取出しの種類に基づいて、自身のアドレス・
レジスタを使用する。プロセッサ中の命令復号段で、い
わゆる「プログラム・カウンタJ (PC)を使って
、命令バッファから個々の命令を取り出す。プログラム
・カウンタは、復号すべき命令のアドレスを含む。
マシンの状態、すなわち、マシンが論理的に取っている
プログラム中の位置がハーフワード・アドレスで表わさ
れるように、ハーフワード(2バイト)境界上に命令が
位置合わせされる。ダブルワード(8バイト)ブロック
を命令バッファ中に取り出す機構は、いわゆる「バッフ
ァ取出しアドレス」を使用する。これは、要求に基づい
て発生させることのできるダブルワード・アドレスであ
り、または分岐予知機構により発生させることができる
。
プログラム中の位置がハーフワード・アドレスで表わさ
れるように、ハーフワード(2バイト)境界上に命令が
位置合わせされる。ダブルワード(8バイト)ブロック
を命令バッファ中に取り出す機構は、いわゆる「バッフ
ァ取出しアドレス」を使用する。これは、要求に基づい
て発生させることのできるダブルワード・アドレスであ
り、または分岐予知機構により発生させることができる
。
最後に、行をキャッシュ中に取り出すのに使用されるア
ドレスは、要求取出しに基づいて、または 。
ドレスは、要求取出しに基づいて、または 。
キャッシュ事前取出し機構に基づいて、キャッシユ・ミ
スによって発生させる。
スによって発生させる。
分岐命令のようなものが存在しない場合には、どんな命
令または命令ブロックまたはキャッシュ行を取り出すべ
きかについて、疑問の余地はない。
令または命令ブロックまたはキャッシュ行を取り出すべ
きかについて、疑問の余地はない。
プロセッサは単に順次命令を連続的に命令バッファから
取り出し、命令バッファ取出し機構は、順次ブロックを
連続的にキャッシュから取り出し、キャッシュ・ミス機
能は主記憶装置から順次行を連続的に取り出す。したが
って、どの命令取出し過程でも、分岐が不確定性の唯一
の原因である。
取り出し、命令バッファ取出し機構は、順次ブロックを
連続的にキャッシュから取り出し、キャッシュ・ミス機
能は主記憶装置から順次行を連続的に取り出す。したが
って、どの命令取出し過程でも、分岐が不確定性の唯一
の原因である。
当技術分野で既知の分岐予知機構が3種ある。取出し過
程に関して、それぞれがどのように異なっているか理解
しやすくするために、これらの機構について説明する。
程に関して、それぞれがどのように異なっているか理解
しやすくするために、これらの機構について説明する。
使用されている機構のうち2つは、いわゆる「復号時間
」機構の変形である。最後の機構は、「取出し時間」機
構と呼ばれる。復号時間機構は、分岐が復号されるとき
に分岐の結果を予知する機構である。取出し時間機構は
、分岐を含む命令ブロックがキャッシュから命令バッフ
ァに転送されるときに分岐の結果を予知する機構である
。
」機構の変形である。最後の機構は、「取出し時間」機
構と呼ばれる。復号時間機構は、分岐が復号されるとき
に分岐の結果を予知する機構である。取出し時間機構は
、分岐を含む命令ブロックがキャッシュから命令バッフ
ァに転送されるときに分岐の結果を予知する機構である
。
当技術分野で既知の最も簡単な復号時間機構は、「静的
予知機構」と呼ばれる。この機構は、単に、復号された
分岐の種類に基づき(すなわち、静的情報に基づき)、
分岐の結果を推測する。−例を挙げると、この機構はカ
ウント分岐(BCT)命令はすべて採用するが、高指標
分岐(BXH)命令は採用しないものと推定する。すな
わち、この機構は、BXHはプログラムの他の部分に制
御を渡さないと自動的に推測するので、デコーダがBX
Hを復号したとき、デコーダに順次命令を復号し続けさ
せる。デコーダがBCTを復号したとき、この機構は、
常に、制御がプログラムの他の部分に渡されると推測す
るので、常にデコーダに復号をストップさせる。
予知機構」と呼ばれる。この機構は、単に、復号された
分岐の種類に基づき(すなわち、静的情報に基づき)、
分岐の結果を推測する。−例を挙げると、この機構はカ
ウント分岐(BCT)命令はすべて採用するが、高指標
分岐(BXH)命令は採用しないものと推定する。すな
わち、この機構は、BXHはプログラムの他の部分に制
御を渡さないと自動的に推測するので、デコーダがBX
Hを復号したとき、デコーダに順次命令を復号し続けさ
せる。デコーダがBCTを復号したとき、この機構は、
常に、制御がプログラムの他の部分に渡されると推測す
るので、常にデコーダに復号をストップさせる。
BCTの場合、命令はまずパイプラインに入り、アドレ
ス計算を行なって分岐先命令のアドレスを決定し、次い
で分岐先ブロックをキャッシュから命令バッファ中に取
り出す。バッファ中でブロックが位置合わせされ(分岐
先命令がデコーダに渡され、そこで復号が再開される。
ス計算を行なって分岐先命令のアドレスを決定し、次い
で分岐先ブロックをキャッシュから命令バッファ中に取
り出す。バッファ中でブロックが位置合わせされ(分岐
先命令がデコーダに渡され、そこで復号が再開される。
分岐を取らないことが正しく予知された場合、静的予知
機構はパイプラインの流れが中断されるのを妨げること
に留意されたい。分岐を取る場合には、流れが中断され
て、分岐先アドレスを計算することができ、分岐先命令
を取り出すことができるようになる。
機構はパイプラインの流れが中断されるのを妨げること
に留意されたい。分岐を取る場合には、流れが中断され
て、分岐先アドレスを計算することができ、分岐先命令
を取り出すことができるようになる。
ただし、分岐命令が実際に実行される前に、復号を再開
できる。したがって、分岐を取ることが正しく予知され
た場合、静的予知機構は、プロセ、ツサ・サイクルを保
管する。
できる。したがって、分岐を取ることが正しく予知され
た場合、静的予知機構は、プロセ、ツサ・サイクルを保
管する。
ロスク(Losq)等の米国特許第4477872号明
細書及びIBMテクニカル・ディスクロージャ・プルテ
ン、第25巻、第5号に所載の°“復号分岐履歴テーブ
ル(Decode Branch 1listoryT
able) ’“と題する論文で、「復号履歴テーブル
」(DHT)と呼ばれる他のより精巧な復号時間機構が
論じられている。これらは、静的予知機構と全く同じ方
式でパイプラインに作用するが、さらに履歴情報を使っ
てより高い予知精度を得る機Ff4である。復号履歴テ
ーブル(DHT)は、命令が復号されるときに分岐命令
に関連するハーフワード・アドレス(プログラム・カウ
ンタ)を用いて各ビット項目にアクセスするという、ビ
ットのテーブルである。このテーブルは、分岐を実行す
るとき、履歴情報、すなわちその分岐が前に取られたか
否かを記録するのに使われる。同じ分岐を後で実行する
とき、このテーブルから前回の結果に関する情報も得ら
れ、その分岐が前回の実行時と同じ挙動を示すとの推測
が行なわれる。
細書及びIBMテクニカル・ディスクロージャ・プルテ
ン、第25巻、第5号に所載の°“復号分岐履歴テーブ
ル(Decode Branch 1listoryT
able) ’“と題する論文で、「復号履歴テーブル
」(DHT)と呼ばれる他のより精巧な復号時間機構が
論じられている。これらは、静的予知機構と全く同じ方
式でパイプラインに作用するが、さらに履歴情報を使っ
てより高い予知精度を得る機Ff4である。復号履歴テ
ーブル(DHT)は、命令が復号されるときに分岐命令
に関連するハーフワード・アドレス(プログラム・カウ
ンタ)を用いて各ビット項目にアクセスするという、ビ
ットのテーブルである。このテーブルは、分岐を実行す
るとき、履歴情報、すなわちその分岐が前に取られたか
否かを記録するのに使われる。同じ分岐を後で実行する
とき、このテーブルから前回の結果に関する情報も得ら
れ、その分岐が前回の実行時と同じ挙動を示すとの推測
が行なわれる。
復号時間機構は、分岐を正確に予知できる点ではパイプ
ラインに役立つとはいえ、分岐を取ることが正しく推測
された場合にそれを完全に利用することはできない。す
なわち、分岐が正しく推測される場合は、その分岐に関
連するパイプライン遅延のいくらかが節減されるものの
、分岐先アドレスが算出されて分岐先命令が取り出され
るまで、パイプラインは待たなければならない。取出し
時間機構は、分岐命令が取り出される時点で分岐の結果
を予知し、次いで分岐を取ると予知した場合には、分岐
先命令を直ちに取り出す機構である。
ラインに役立つとはいえ、分岐を取ることが正しく推測
された場合にそれを完全に利用することはできない。す
なわち、分岐が正しく推測される場合は、その分岐に関
連するパイプライン遅延のいくらかが節減されるものの
、分岐先アドレスが算出されて分岐先命令が取り出され
るまで、パイプラインは待たなければならない。取出し
時間機構は、分岐命令が取り出される時点で分岐の結果
を予知し、次いで分岐を取ると予知した場合には、分岐
先命令を直ちに取り出す機構である。
すなわち、取出し時間機構は、正しく予知した分岐を取
るための全パイプライン遅延を解消させる。
るための全パイプライン遅延を解消させる。
取出し時間機構は、一般に、「分岐履歴テーブルJ
(BIT)と呼ばれる。分岐履歴テーブルは、ズッセン
グート(Sussenguth )の米国特許第355
9183号明細書及びギュントナー(Guenthne
r)等の米国特許第4594859号明細書で論じられ
ており、そこでは「転送及び間接予知テーブル」と呼ば
れている。分岐履歴テーブルは、過去の履歴を記憶する
点で、復号履歴テーブルに似ているものの、2つの重要
な点で異なっている。
(BIT)と呼ばれる。分岐履歴テーブルは、ズッセン
グート(Sussenguth )の米国特許第355
9183号明細書及びギュントナー(Guenthne
r)等の米国特許第4594859号明細書で論じられ
ており、そこでは「転送及び間接予知テーブル」と呼ば
れている。分岐履歴テーブルは、過去の履歴を記憶する
点で、復号履歴テーブルに似ているものの、2つの重要
な点で異なっている。
第1に、キャッシュから命令バッファに分岐命令を取り
出すときに(すなわち、分岐命令を復号するより前に)
、分岐の結果を予知しなければならないので、(復号履
歴テーブルと一緒に使用されるようなプログラム・カウ
ンタでなく)ダブルワード・バッファ取出しアドレスと
の突合せに基づいて分岐があることを認識しなければな
らない。
出すときに(すなわち、分岐命令を復号するより前に)
、分岐の結果を予知しなければならないので、(復号履
歴テーブルと一緒に使用されるようなプログラム・カウ
ンタでなく)ダブルワード・バッファ取出しアドレスと
の突合せに基づいて分岐があることを認識しなければな
らない。
第2の相違点は、分岐履歴テーブルは、分岐命令が復号
されるより前に、分岐先命令の命令取出しを開始しなけ
ればならないので、過去の分岐先ならびに過去の分岐の
挙動を記憶しておかなければならないことから生じる。
されるより前に、分岐先命令の命令取出しを開始しなけ
ればならないので、過去の分岐先ならびに過去の分岐の
挙動を記憶しておかなければならないことから生じる。
したがって、分岐履歴テーブルは、最近に取られた分岐
の分岐先命令のアドレスを含むテーブルである。分岐履
歴テーブルは、バッファ取出しアドレスによって、次の
ように駆動される。命令ブロックが命令バッファに転送
されるとき、バッファ取出しアドレスを使って分岐履歴
テーブルにアクセスする。その命令ブロックに含まれる
分岐命令の入口が分岐履歴テーブルにある場合、その入
口によって分岐先アドレスが供給され、分岐先命令を含
む命令ブロックが命令バッファに転送され始める。次い
で、分岐先命令のアドレスを使って、分岐府歴テーブル
が探索され、処理が続行する。
の分岐先命令のアドレスを含むテーブルである。分岐履
歴テーブルは、バッファ取出しアドレスによって、次の
ように駆動される。命令ブロックが命令バッファに転送
されるとき、バッファ取出しアドレスを使って分岐履歴
テーブルにアクセスする。その命令ブロックに含まれる
分岐命令の入口が分岐履歴テーブルにある場合、その入
口によって分岐先アドレスが供給され、分岐先命令を含
む命令ブロックが命令バッファに転送され始める。次い
で、分岐先命令のアドレスを使って、分岐府歴テーブル
が探索され、処理が続行する。
したがって、分岐履歴テーブルで駆動される機械では、
バッファ取出しアドレスを使用する命令バッファが分岐
履歴テーブルによって駆動され、デコーダは、プログラ
ム・カウンタを使って独立に稼動する。命令バッファ中
への転送はダブルワードごとに1サイクル当たり1ダブ
ルワードの速度で実行され、かつこのような転送のたび
ごとに分岐履歴テーブルを探索しなければならないので
、分岐履歴テーブルは、個々のハーフワード及び分岐先
アドレスを認識しなければならないものの、ダブルワー
ドごとに編成しなければならない。
バッファ取出しアドレスを使用する命令バッファが分岐
履歴テーブルによって駆動され、デコーダは、プログラ
ム・カウンタを使って独立に稼動する。命令バッファ中
への転送はダブルワードごとに1サイクル当たり1ダブ
ルワードの速度で実行され、かつこのような転送のたび
ごとに分岐履歴テーブルを探索しなければならないので
、分岐履歴テーブルは、個々のハーフワード及び分岐先
アドレスを認識しなければならないものの、ダブルワー
ドごとに編成しなければならない。
タテノの米国特許第4561052号明細書には、メモ
リ、処理エレメント、及び命令バッファを備えた簡単な
処理システムが記載されている。
リ、処理エレメント、及び命令バッファを備えた簡単な
処理システムが記載されている。
このメモリ・システムはある1サイクルでちょうど1つ
の要求に応じることができ、すなわち、1サイクルでち
ょうど1個の命令、またはちょうど1個のデータ・オペ
ランドのどちらか一方だけを、取り出すことが可能であ
る。上記の特許には、あるサイクルが命令を取り出すの
に使われるか、それともデータを取り出すのに使われる
かを決定するのに必要な論理機構の概要が記載されてい
る。
の要求に応じることができ、すなわち、1サイクルでち
ょうど1個の命令、またはちょうど1個のデータ・オペ
ランドのどちらか一方だけを、取り出すことが可能であ
る。上記の特許には、あるサイクルが命令を取り出すの
に使われるか、それともデータを取り出すのに使われる
かを決定するのに必要な論理機構の概要が記載されてい
る。
この論理機構は、命令バッファが空のとき、あるいは現
在実行中の命令がオペランド取出しを必要としないとき
、命令を取り出させる。この特許ではキャッシュを使用
せず、分岐やその予知については何も言及していない。
在実行中の命令がオペランド取出しを必要としないとき
、命令を取り出させる。この特許ではキャッシュを使用
せず、分岐やその予知については何も言及していない。
ポタシ5 (Potash )の米国特許第44357
56号明細書には、復号時間分岐予知が記載されている
。ただし、キャッシュ・ミスや分岐履歴テーブルは論じ
られていない。
56号明細書には、復号時間分岐予知が記載されている
。ただし、キャッシュ・ミスや分岐履歴テーブルは論じ
られていない。
ヒユーズ(Ilughes )等の米国特許第4200
927号明細書には、事前取出し機構が記載されている
。この特許では、3個の命令バッファを記載し、静的予
知を使用している。条件付き分岐に出会うと、1個のバ
ッフ1が「直通」経路に沿って命令を受け取り、もう1
個のバッファが分岐を取った経路に沿って命令を受け取
る。静的予知機構が、2つのストリームのどちらを事前
に実行するかを選択する。選択した経路に沿ってもう1
つの条件に出会う場合、静的予知機構を使って、後続の
経路のうち1つだけを第3の命令バッファ中に取り出す
。
927号明細書には、事前取出し機構が記載されている
。この特許では、3個の命令バッファを記載し、静的予
知を使用している。条件付き分岐に出会うと、1個のバ
ッフ1が「直通」経路に沿って命令を受け取り、もう1
個のバッファが分岐を取った経路に沿って命令を受け取
る。静的予知機構が、2つのストリームのどちらを事前
に実行するかを選択する。選択した経路に沿ってもう1
つの条件に出会う場合、静的予知機構を使って、後続の
経路のうち1つだけを第3の命令バッファ中に取り出す
。
リャン(Ryan)等の米国特許第4551799号明
細書には、命令用とデータ用に別々のキャッシュを有す
る分離キャッシュが記載されている。
細書には、命令用とデータ用に別々のキャッシュを有す
る分離キャッシュが記載されている。
ただし、分岐履歴テーブルを使ってキャッシュ事前取出
しを手助けすることは教示していない。
しを手助けすることは教示していない。
IBMテクニカル・ディスクロージャ・プルテン、第2
8巻、第8号(1988年1月)、3510ページに記
載の”ページ可能分岐履歴テーブルを使用する事前取出
しくPrefetchihg tlsing aPag
eable Branch 1listory Tab
le)″と題する論文は、分岐履歴テーブルを使ってキ
ャッシュ行を取り出すことを教示している。そのために
、分岐先アドレスならびに行出ロアドレスを含む分岐履
歴テーブルが提案されている。このテーブルで分岐入口
が見つかると、命令バッフTが分岐先アドレスによって
制御され、行出ロアドレスを使ってキャッシュ行の事前
取出しが行なわれる。ある行から出るとき(すなわち、
制御の流れがその行を離れるとき)、指定されていない
ハードウェアまたはソフトウェアによって出口解析が行
なわれ、将来使用できるように出口解析に基づき行出ロ
アドレスが更新される。本発明では、入口解析が行なわ
れる。すなわち、行に入る直前または入った時点で、解
析が行なわれる。本発明では、事前取出しを行なう時間
である入口で解析が行なわれるので、分岐履歴テーブル
中に行出ロアドレスの必要はない。さらに、本発明のよ
うな分岐解析を行なう機構は教示されていない。
8巻、第8号(1988年1月)、3510ページに記
載の”ページ可能分岐履歴テーブルを使用する事前取出
しくPrefetchihg tlsing aPag
eable Branch 1listory Tab
le)″と題する論文は、分岐履歴テーブルを使ってキ
ャッシュ行を取り出すことを教示している。そのために
、分岐先アドレスならびに行出ロアドレスを含む分岐履
歴テーブルが提案されている。このテーブルで分岐入口
が見つかると、命令バッフTが分岐先アドレスによって
制御され、行出ロアドレスを使ってキャッシュ行の事前
取出しが行なわれる。ある行から出るとき(すなわち、
制御の流れがその行を離れるとき)、指定されていない
ハードウェアまたはソフトウェアによって出口解析が行
なわれ、将来使用できるように出口解析に基づき行出ロ
アドレスが更新される。本発明では、入口解析が行なわ
れる。すなわち、行に入る直前または入った時点で、解
析が行なわれる。本発明では、事前取出しを行なう時間
である入口で解析が行なわれるので、分岐履歴テーブル
中に行出ロアドレスの必要はない。さらに、本発明のよ
うな分岐解析を行なう機構は教示されていない。
IBMテクニカル・ディスクロージャ・プルテン、第2
2巻、第12号(1980年5月)、5539ページに
所載の”分岐履歴テーブルを使ったキャッシュ行の事前
取出しくUsing a Branchllistor
y Table to Prefetch Cache
Lines) ”と題する論文は、分岐履歴テーブル
がキャッシュ中にない行に分岐先アドレスを発生させる
場合、その行をキャッシュ中に事前に取り出すのがおそ
らく適切であることを教示している。ただし、キャッシ
ュ行に基づいて分岐履歴テーブルを編成することも、キ
ャッシュ・ミスを予測するためにある行のすべての分岐
入口を解析することも教示していない。
2巻、第12号(1980年5月)、5539ページに
所載の”分岐履歴テーブルを使ったキャッシュ行の事前
取出しくUsing a Branchllistor
y Table to Prefetch Cache
Lines) ”と題する論文は、分岐履歴テーブル
がキャッシュ中にない行に分岐先アドレスを発生させる
場合、その行をキャッシュ中に事前に取り出すのがおそ
らく適切であることを教示している。ただし、キャッシ
ュ行に基づいて分岐履歴テーブルを編成することも、キ
ャッシュ・ミスを予測するためにある行のすべての分岐
入口を解析することも教示していない。
IBMテクニカル・ディスクロージャ・プルテン、第2
3巻、第2号(1980年7月)、853ページに所載
の”分岐履歴テーブル機械におけるキャッシュ・ミスの
減少法(Reducing CacheMisses
in a Branch 1listory Tabl
e Machine) ”と題する論文は、キャッシュ
・ミスを利用して分岐履歴テーブル側での誤予知を識別
することを教示している。条件分岐レジスタ(BCR)
は、主として、サブルーチンから戻るのに使用されてい
る。サブルーチンは異なる多くの位置から呼び出される
ので、過去の分岐先アドレスが現在の分岐先アドレスで
はないことが、BCRが誤予知される主な理由である。
3巻、第2号(1980年7月)、853ページに所載
の”分岐履歴テーブル機械におけるキャッシュ・ミスの
減少法(Reducing CacheMisses
in a Branch 1listory Tabl
e Machine) ”と題する論文は、キャッシュ
・ミスを利用して分岐履歴テーブル側での誤予知を識別
することを教示している。条件分岐レジスタ(BCR)
は、主として、サブルーチンから戻るのに使用されてい
る。サブルーチンは異なる多くの位置から呼び出される
ので、過去の分岐先アドレスが現在の分岐先アドレスで
はないことが、BCRが誤予知される主な理由である。
したがって、本発明とは対照的に、分岐履歴テーブルが
キャッシュ中にない行に分岐先アドレスを発生させる場
合、及び基礎となる分岐がBCRである場合には、分岐
履歴テーブルがおそらく誤っており、事前取出しを抑制
すべきである。
キャッシュ中にない行に分岐先アドレスを発生させる場
合、及び基礎となる分岐がBCRである場合には、分岐
履歴テーブルがおそらく誤っており、事前取出しを抑制
すべきである。
IBMテクニカル・ディスクロージャ・プルテン、第2
8巻、第4号(1985年9月)、1737ページに所
載の論文”小型キャッシュを使った分岐履歴テーブル(
BHT)の防MVJ (Using aSmall C
ache to Iledge f’or a B H
T ) ”には、分岐履歴テーブル側での誤予知に関連
する不利益を最小にする方法が提案されている。この論
文では、分岐を取らないと分岐履歴テーブルが推測する
ときでも、分岐先命令を命令バッファ中に取り出すこと
が提案されている。取らないと推測された分岐が取られ
た場合には、分岐先命令が命令バソノア中にあるので、
取られた経路に沿って直ちに復号が開始できる。
8巻、第4号(1985年9月)、1737ページに所
載の論文”小型キャッシュを使った分岐履歴テーブル(
BHT)の防MVJ (Using aSmall C
ache to Iledge f’or a B H
T ) ”には、分岐履歴テーブル側での誤予知に関連
する不利益を最小にする方法が提案されている。この論
文では、分岐を取らないと分岐履歴テーブルが推測する
ときでも、分岐先命令を命令バッファ中に取り出すこと
が提案されている。取らないと推測された分岐が取られ
た場合には、分岐先命令が命令バソノア中にあるので、
取られた経路に沿って直ちに復号が開始できる。
IBMテクニカル・ディスクロージャ・プルテン、第2
2巻、第8A号(1980年1月)、3437ページに
所載の1′分岐履歴テーブルを使用する動的分岐予知(
Dynamic Branch Prediction
tlsing Branch l1istory Ta
ble)″と題する論文は)キャッシュの挙動と分岐履
歴テーブルの関係を論じている。分岐履歴テーブルより
も多くの履歴を記憶しているキャッシュの場合、一連の
キャッシュ・ミスは、新しいまたは未記憶のコードが実
行され始め、分岐履歴テーブルによって生じる予知が新
しいコードにまず無関係であるらしいことを示す。した
がって、一連のキャッシュ・ミスの後、分岐履歴テーブ
ルによる予知は無視され、分岐を取った経路も取らなか
った経路も取り出してどちらの結果にも備える。
2巻、第8A号(1980年1月)、3437ページに
所載の1′分岐履歴テーブルを使用する動的分岐予知(
Dynamic Branch Prediction
tlsing Branch l1istory Ta
ble)″と題する論文は)キャッシュの挙動と分岐履
歴テーブルの関係を論じている。分岐履歴テーブルより
も多くの履歴を記憶しているキャッシュの場合、一連の
キャッシュ・ミスは、新しいまたは未記憶のコードが実
行され始め、分岐履歴テーブルによって生じる予知が新
しいコードにまず無関係であるらしいことを示す。した
がって、一連のキャッシュ・ミスの後、分岐履歴テーブ
ルによる予知は無視され、分岐を取った経路も取らなか
った経路も取り出してどちらの結果にも備える。
C1発明が解決しようとする問題点
したがって、本発明の目的は、分岐履歴を利用してキャ
ッシュへの事前取出しを行なうことにある。
ッシュへの事前取出しを行なうことにある。
本発明のもう1つの目的は、ある行の全分岐入口を解析
してキャッシュ・ミスを予測することにある。
してキャッシュ・ミスを予測することにある。
D0問題点を解決するための手段
分岐履歴情報に基づいて将来のキャッシュ・ミスを推論
する分岐解析機構を使用して、分岐履歴テーブルに含ま
れる情報を使って、キャッシュ・ミスを予測し命令行の
キャッシュへの事前取出しを行なう装置が述べられる。
する分岐解析機構を使用して、分岐履歴テーブルに含ま
れる情報を使って、キャッシュ・ミスを予測し命令行の
キャッシュへの事前取出しを行なう装置が述べられる。
分岐履歴テーブルは、本発明が適用されるキャッシュ行
の取出し段に適合するように、行ごとに編成される。
の取出し段に適合するように、行ごとに編成される。
本発明の別の実施例では、ある行への入口点に基づいて
その行中の分岐を実施する順序を決定する手段を使って
、どの出口点を使うか決定する。
その行中の分岐を実施する順序を決定する手段を使って
、どの出口点を使うか決定する。
E、実施例
ここで、本発明の全体的ブロック図を示した第1図を参
照する。プロセッサ10は゛、復号、アドレス生成、キ
ャッシュ、実行の諸機能を実行する並列パイプライン式
装置を含んでいる。命令バッファ11は、上記の機能を
実行するレジスタである。キャッシュ12は、プロセッ
サ10が使用する命令及びデータを供給し、メモリ13
もプロセッサ10が使用するデータ及び命令を供給する
。
照する。プロセッサ10は゛、復号、アドレス生成、キ
ャッシュ、実行の諸機能を実行する並列パイプライン式
装置を含んでいる。命令バッファ11は、上記の機能を
実行するレジスタである。キャッシュ12は、プロセッ
サ10が使用する命令及びデータを供給し、メモリ13
もプロセッサ10が使用するデータ及び命令を供給する
。
上記のように、命令またはデータ、あるいはその両方が
キャッシュ12中にない場合、プロセッサはそれをメモ
リ13中で見つけようとする。メモリ13は、ディレク
トリ(図示せず)を内蔵している。ディレクトリは、キ
ャッシュ12中に行として記憶されているメモリ・ブロ
ックの索引である。別の実施例では、ディレクトリがキ
ャッシュの一部になっている。キャッシュ12は、行ご
とに編成され、通常は64にないし128にバイトの記
憶装置である。
キャッシュ12中にない場合、プロセッサはそれをメモ
リ13中で見つけようとする。メモリ13は、ディレク
トリ(図示せず)を内蔵している。ディレクトリは、キ
ャッシュ12中に行として記憶されているメモリ・ブロ
ックの索引である。別の実施例では、ディレクトリがキ
ャッシュの一部になっている。キャッシュ12は、行ご
とに編成され、通常は64にないし128にバイトの記
憶装置である。
キャッシュ12は、命令バッファ11に、ダブルワード
(メインフレームでは1ワードは4バイトであり、した
がってダブルワードは8バイトに等しい)を転送し、命
令バッファ11は、プロセッサ10が処理できるように
ダブルワードを保持する。
(メインフレームでは1ワードは4バイトであり、した
がってダブルワードは8バイトに等しい)を転送し、命
令バッファ11は、プロセッサ10が処理できるように
ダブルワードを保持する。
ローカル分岐履歴テーブル(BHT)15は、ダブルワ
ードごとに編成され、上記及び従来技術で周知の分岐履
歴テーブルの機能を実行する。バッファ取出しアドレス
・レジスタ14は、キャッシュ12から命令バッファ1
1に転送されるダブルワードのアドレスを保持するレジ
スタである。このアドレスは、要求に応じてプロセッサ
10が生成することも、あるいは分岐予知機構が生成す
ることもできる。この図の場合、キャッシュ12から命
令バッファ11にダブルワードが移動するときに、ダブ
ルワード・アドレスを使って、線14Bを介してBHT
15を探索する。BHT 15によって分岐が予知され
た場合、線14A上の分岐先アドレスを反映するように
、バッファ取出しアドレス・レジスタ14が更新される
。上記の諸要素は、当技術分野で周知の通常の計算機シ
ステムの要素である。ただし、第1図に示した残りの要
素、すな ′わち次行アドレス・レジスタ201広帯
域BHT21、及び事前取出し機構22は、新しい本発
明独自の要素である。
ードごとに編成され、上記及び従来技術で周知の分岐履
歴テーブルの機能を実行する。バッファ取出しアドレス
・レジスタ14は、キャッシュ12から命令バッファ1
1に転送されるダブルワードのアドレスを保持するレジ
スタである。このアドレスは、要求に応じてプロセッサ
10が生成することも、あるいは分岐予知機構が生成す
ることもできる。この図の場合、キャッシュ12から命
令バッファ11にダブルワードが移動するときに、ダブ
ルワード・アドレスを使って、線14Bを介してBHT
15を探索する。BHT 15によって分岐が予知され
た場合、線14A上の分岐先アドレスを反映するように
、バッファ取出しアドレス・レジスタ14が更新される
。上記の諸要素は、当技術分野で周知の通常の計算機シ
ステムの要素である。ただし、第1図に示した残りの要
素、すな ′わち次行アドレス・レジスタ201広帯
域BHT21、及び事前取出し機構22は、新しい本発
明独自の要素である。
次行アドレス・レジスタ2oは、次に参照される行のア
ドレスを保持するレジスタである。このレジスタは、事
前取出し機構22ならびにバッファ取出しアドレス・レ
ジスタ14から入力を受け取り、アドレスすべき次行を
決定する。また、キャッシュ12と同じ基準で編成され
ている広帯域BHT21に、次に参照される新しい行の
アドレスを与える。つまり、キャッシュ12が128バ
イトの行を利用する場合、広帯域BIT21も128バ
イトの行を利用する。事前取出し機構22は(メモリ1
3中のディレクトリで指示されるように)、キャッシュ
12中にもう行がない場合に、命令シーケンス中の分岐
命令に基づいて、どの行をキャッシュ事前取出しすべき
かを決定する機構を内蔵している。
ドレスを保持するレジスタである。このレジスタは、事
前取出し機構22ならびにバッファ取出しアドレス・レ
ジスタ14から入力を受け取り、アドレスすべき次行を
決定する。また、キャッシュ12と同じ基準で編成され
ている広帯域BHT21に、次に参照される新しい行の
アドレスを与える。つまり、キャッシュ12が128バ
イトの行を利用する場合、広帯域BIT21も128バ
イトの行を利用する。事前取出し機構22は(メモリ1
3中のディレクトリで指示されるように)、キャッシュ
12中にもう行がない場合に、命令シーケンス中の分岐
命令に基づいて、どの行をキャッシュ事前取出しすべき
かを決定する機構を内蔵している。
より一般的に言うと、次行アドレス・レジスタ20は実
際に項目の待ち行列となることができる。
際に項目の待ち行列となることができる。
こうすると、将来の数行の解析が容易になり、新しい行
に入ると直ちに事前取出しが開始できる。
に入ると直ちに事前取出しが開始できる。
新しい行に入るとき、スタック中の最も古い項目をバッ
ファ取出しアドレス・レジスタ14と比較することによ
り、過去の事前取出しの確認を行なう。
ファ取出しアドレス・レジスタ14と比較することによ
り、過去の事前取出しの確認を行なう。
広帯域BHT2i中の項目は、幅が広く、ローカルBH
T15の場合のようなダブルワードではなく、行特有で
ある。すなわち、行アドレスによって合同(congr
uence )クラスを選択し、項目中の高位ビットで
比較をさらに行なって、どの項目が所与の行に特有であ
るかを決定する。また、各項目中で、その行内部のハー
フワード・アドレスを指定しなければならない。ダブル
ワードで編成されているBITにとって一般に2方向セ
ット結合性で十分なので、64バイトの行で編成されて
いるBITには8方向セット結合性で十分なはずである
。
T15の場合のようなダブルワードではなく、行特有で
ある。すなわち、行アドレスによって合同(congr
uence )クラスを選択し、項目中の高位ビットで
比較をさらに行なって、どの項目が所与の行に特有であ
るかを決定する。また、各項目中で、その行内部のハー
フワード・アドレスを指定しなければならない。ダブル
ワードで編成されているBITにとって一般に2方向セ
ット結合性で十分なので、64バイトの行で編成されて
いるBITには8方向セット結合性で十分なはずである
。
上記の各パラメータは、通常の本体コンピュータに関連
性がある。ただし、この実施例の残りの部分では、より
小さな寸法を使って、本発明の教示をより簡単に説明し
やすくする。以下では、命令バッファ11はダブルワー
ドを含み、ローカルBHT15はダブルワードごとに編
成されているものと仮定する。さらに、キャッシュ行は
カッドワード(ダブルワード2個)であり、広帯域BI
T21はカッドワードごとに編成されているものと仮定
する。最後に、ローカルBHT15は2方向セット結合
性であり、16個の合同クラスを有し、広帯域BIT2
1は4方向セット結合性であり、1024個の合同クラ
スを有するものと仮定する。したがって、ローカルBH
T 15は32個の項目を含み、広帯域BIT21は4
096個の項目を含む。
性がある。ただし、この実施例の残りの部分では、より
小さな寸法を使って、本発明の教示をより簡単に説明し
やすくする。以下では、命令バッファ11はダブルワー
ドを含み、ローカルBHT15はダブルワードごとに編
成されているものと仮定する。さらに、キャッシュ行は
カッドワード(ダブルワード2個)であり、広帯域BI
T21はカッドワードごとに編成されているものと仮定
する。最後に、ローカルBHT15は2方向セット結合
性であり、16個の合同クラスを有し、広帯域BIT2
1は4方向セット結合性であり、1024個の合同クラ
スを有するものと仮定する。したがって、ローカルBH
T 15は32個の項目を含み、広帯域BIT21は4
096個の項目を含む。
上記のことをさらに理解するため、第2A図及び第2B
図を参照する。本体コンピュータ中の分岐アドレスは、
31ビツトを含んでいる。3o及び34で示した最下位
ビット(バイト・オフセット)はOビットであり、本発
明では無視される。
図を参照する。本体コンピュータ中の分岐アドレスは、
31ビツトを含んでいる。3o及び34で示した最下位
ビット(バイト・オフセット)はOビットであり、本発
明では無視される。
32で示した4ビツトは、ローカルBHT中の合同クラ
スを選択するのに使用され、36で示した10ビツトは
、広帯域BHT中の合同クラスを選択するのに使用され
る。33及び37は、当該BIT中の高位アドレス・ビ
ットを示し、31及び35は、それぞれ、ダブルワード
内部及びカッドワード内部のハーフワード・オフセラト
ラ示ス。
スを選択するのに使用され、36で示した10ビツトは
、広帯域BHT中の合同クラスを選択するのに使用され
る。33及び37は、当該BIT中の高位アドレス・ビ
ットを示し、31及び35は、それぞれ、ダブルワード
内部及びカッドワード内部のハーフワード・オフセラト
ラ示ス。
したがって、広帯域BIT21は、17個の高位ビット
37、カッドワード35内のハーフワード・オフセット
、それに、後で詳しく説明する分岐先アドレス(T A
+ )を保持する。ローカルBHT15は、対応する
フィールド33及び31と分岐先アドレス(TAi)を
保持し、従来技術の教示に従って動作する。
37、カッドワード35内のハーフワード・オフセット
、それに、後で詳しく説明する分岐先アドレス(T A
+ )を保持する。ローカルBHT15は、対応する
フィールド33及び31と分岐先アドレス(TAi)を
保持し、従来技術の教示に従って動作する。
4方向セット結合性の例では、広帯域BIT21内に4
個のこのようなルックアップ・テーブルがあり、各ルッ
クアップ・テーブル中の個々のアドレスが10桁の合同
クラス選択ビット36によって選択される。次いで、比
較を行なって、高位ビット37が要求した行のそれと合
致するかどうかを決定することができる。合致する場合
、次行アドレス・レジスタ20中のアドレスにヒツトす
る。
個のこのようなルックアップ・テーブルがあり、各ルッ
クアップ・テーブル中の個々のアドレスが10桁の合同
クラス選択ビット36によって選択される。次いで、比
較を行なって、高位ビット37が要求した行のそれと合
致するかどうかを決定することができる。合致する場合
、次行アドレス・レジスタ20中のアドレスにヒツトす
る。
実行されるキャッシュ行の実際のシーケンスがアドレス
A及びBを有するものと仮定する。Aのアドレスをバッ
ファ取出しアドレス・レジスタ14を介して次行アドレ
ス・レジスタ20に入れ、次いで、そこから広帯域BI
T21に供給する。
A及びBを有するものと仮定する。Aのアドレスをバッ
ファ取出しアドレス・レジスタ14を介して次行アドレ
ス・レジスタ20に入れ、次いで、そこから広帯域BI
T21に供給する。
次に、広帯域BIT21が、アドレスAによって生じた
すべてのヒツトをローカルBHT15及び事前取出し機
構22に同報通信する。次いで、ローカルBHT15が
、従来技術の教示に従って、命令バッファ11を制御す
る。事前取出し機構22は、その解析を実行し、行Bの
アドレスを生成して次行アドレス・レジスタ20及びメ
モリ13中のキャッシュ・ディレクトリに送る。もし、
キャッシュ12中に現われている行Bがディレクトリに
リストされていない場合は、キャッシュ事前取出し機構
がアドレスBををする行をメモリから事前取出しする。
すべてのヒツトをローカルBHT15及び事前取出し機
構22に同報通信する。次いで、ローカルBHT15が
、従来技術の教示に従って、命令バッファ11を制御す
る。事前取出し機構22は、その解析を実行し、行Bの
アドレスを生成して次行アドレス・レジスタ20及びメ
モリ13中のキャッシュ・ディレクトリに送る。もし、
キャッシュ12中に現われている行Bがディレクトリに
リストされていない場合は、キャッシュ事前取出し機構
がアドレスBををする行をメモリから事前取出しする。
第3図及び第4図を参照すると、事前取出し機構22の
動作が理解できる。第3図は、事前取出し機構22の構
成図である。第4図は、BHT21中の行Aを示す。こ
の説明では、行A(100)は8個のハーフワードO−
7を有するものとする。
動作が理解できる。第3図は、事前取出し機構22の構
成図である。第4図は、BHT21中の行Aを示す。こ
の説明では、行A(100)は8個のハーフワードO−
7を有するものとする。
実線101.102.103.104は、行100で取
られる分岐を示す。すなわち、行Aのハーフワード3の
ところに101で表わされる行AのハーフワードOに向
かう分岐がある。分岐102は、ハーフワード6からハ
ーフワード1に向かう分岐を表わす。分岐103は、行
Aのハーフワード4のところにあり、新しい行Bのハー
フワード3に進む。分岐104は、新しい行Cのハーフ
ワード5に進む。分岐99が、この行のハーフワード5
に入る。この分岐は、概略的に示すように、次行アドレ
ス・レジスタ20から受け取る。
られる分岐を示す。すなわち、行Aのハーフワード3の
ところに101で表わされる行AのハーフワードOに向
かう分岐がある。分岐102は、ハーフワード6からハ
ーフワード1に向かう分岐を表わす。分岐103は、行
Aのハーフワード4のところにあり、新しい行Bのハー
フワード3に進む。分岐104は、新しい行Cのハーフ
ワード5に進む。分岐99が、この行のハーフワード5
に入る。この分岐は、概略的に示すように、次行アドレ
ス・レジスタ20から受け取る。
行Aについての項目シーケンスを下記の第1表にまとめ
て示す。
て示す。
[第 I 表]
分岐アドレス 分岐先アドレス I/E (内部二〇)
B A o ” A + 6 T A o = A
+ 1 0B A r = A + 4 T
A r = B + 3 1B A 2 = A
+ 7 T A 2 = C+ 5 1B
A 3 = A + 3 T A 3 = A +
’0 0第I表を参照すると、分岐99で行Aの
位置5に入る場合、項目が順次実行されるときに出会う
最初の分岐アドレス(BAoで示す)はA+6である。
B A o ” A + 6 T A o = A
+ 1 0B A r = A + 4 T
A r = B + 3 1B A 2 = A
+ 7 T A 2 = C+ 5 1B
A 3 = A + 3 T A 3 = A +
’0 0第I表を参照すると、分岐99で行Aの
位置5に入る場合、項目が順次実行されるときに出会う
最初の分岐アドレス(BAoで示す)はA+6である。
これは、第工表に示すように、A+1という分岐先アド
レス(T A o )を有する。内部/外部(I/E)
ビットは、ゼロにセットされ、この行内の内部分岐を示
す。A+4にある分岐アドレス1 (BAI)は、その
分岐先アドレスとして、行B中のB+3で示されるアド
レスを有する(TA I= B + 3 )。このアド
レスは行Aの外部のアドレスなので、工/Eビットは1
にセットされる。
レス(T A o )を有する。内部/外部(I/E)
ビットは、ゼロにセットされ、この行内の内部分岐を示
す。A+4にある分岐アドレス1 (BAI)は、その
分岐先アドレスとして、行B中のB+3で示されるアド
レスを有する(TA I= B + 3 )。このアド
レスは行Aの外部のアドレスなので、工/Eビットは1
にセットされる。
分岐アドレス2(BA2)はA+7に等しく、別の外部
行Cのハーフワード5へ分岐し、したがってTA2はC
+5に、またI/Eビットは1にセットされる。第1表
の第4の項目は、BA3がA+3に等しく、A+0とい
う分岐先アドレス(TA 3)を有することを示してい
る。これは行A内の内部分岐なので、■/Eビットはゼ
ロにセットされる。
行Cのハーフワード5へ分岐し、したがってTA2はC
+5に、またI/Eビットは1にセットされる。第1表
の第4の項目は、BA3がA+3に等しく、A+0とい
う分岐先アドレス(TA 3)を有することを示してい
る。これは行A内の内部分岐なので、■/Eビットはゼ
ロにセットされる。
第1図を再度参照すると、第1表に示す項目が線31.
32.33.34を介して回報通信される。すなわち、
BAoはTAoと共に線31を介し、BAI及びTAI
は線32を介し、BA2及びTA2は線33を介し、B
Aa及びTA3は線34を介し、I/Eビットに対する
当該の項目と共に同報通信される。
32.33.34を介して回報通信される。すなわち、
BAoはTAoと共に線31を介し、BAI及びTAI
は線32を介し、BA2及びTA2は線33を介し、B
Aa及びTA3は線34を介し、I/Eビットに対する
当該の項目と共に同報通信される。
第3図を再度参照する。エントリ・レジスタ20は、実
際には次行アドレスのカッドワード内部に、マツプ・テ
ーブル40にアドレスするためのハーフワードを含んで
いるだけでよい。エントリ・レジスタ20には、最初に
、新しい行への入口点がロードされる。行Aの場合、こ
れは99を介し、入口点は5である。本発明の動作の流
れを利用し理解する際、第3図中の様々なレジスタ、テ
ーブルなどに現われる項目は括弧に入れたレジスタに隣
接し、順次動作の結果を示すためセミコロンで分離しで
ある。
際には次行アドレスのカッドワード内部に、マツプ・テ
ーブル40にアドレスするためのハーフワードを含んで
いるだけでよい。エントリ・レジスタ20には、最初に
、新しい行への入口点がロードされる。行Aの場合、こ
れは99を介し、入口点は5である。本発明の動作の流
れを利用し理解する際、第3図中の様々なレジスタ、テ
ーブルなどに現われる項目は括弧に入れたレジスタに隣
接し、順次動作の結果を示すためセミコロンで分離しで
ある。
どの入口点についても、マツプ・テーブル40は次の事
柄を示す。これは、実際の入口点でライン中に走査を進
めて出会うことになる最初に取った分岐に対応する入口
点を正規化し、1)正規化入口点を内部で取る場合には
、正規化入口点に対応する分岐を取った後で出会う次に
取った分岐の内部アドレス、または2)正規化入口点分
岐を外部へ取る場合には、新しい行の中への入口点、ま
たは3)取った分岐で正規化過程に出会わない場合には
、次の順次行のアドレスを与える。
柄を示す。これは、実際の入口点でライン中に走査を進
めて出会うことになる最初に取った分岐に対応する入口
点を正規化し、1)正規化入口点を内部で取る場合には
、正規化入口点に対応する分岐を取った後で出会う次に
取った分岐の内部アドレス、または2)正規化入口点分
岐を外部へ取る場合には、新しい行の中への入口点、ま
たは3)取った分岐で正規化過程に出会わない場合には
、次の順次行のアドレスを与える。
第4図を再度参照すると、行Aのアドレス5に入って、
アドレス人口6で入口1に分岐し、その後、順に進んで
、入口3で次の分岐が起こる。すなわち、値5を使って
マツプ・テーブルにアクセスすると、マツプ・テーブル
は値3を出力し、I/E標識をゼロにセットするはずで
ある。
アドレス人口6で入口1に分岐し、その後、順に進んで
、入口3で次の分岐が起こる。すなわち、値5を使って
マツプ・テーブルにアクセスすると、マツプ・テーブル
は値3を出力し、I/E標識をゼロにセットするはずで
ある。
第■表は、マツプ・テーブル4oの内容のサンプルを示
すもので、具体的には、行A(100)に従って、8個
の位置と各位置の内容を示している。たとえば、入口0
ないし3は、次に取られる分岐の内部アドレスを含み、
かつそれが行A中の位置を通って前方に順次走査するこ
とによって得られる内部分岐であることの指示も含んで
いることに留意されたい。入口4で、新しい行への外部
分岐B+3がある。したがって、以上の通り、入口点分
岐は外部に向かっているので、この入口は新しい行への
入口点である。残りの入口も同様に決定される。
すもので、具体的には、行A(100)に従って、8個
の位置と各位置の内容を示している。たとえば、入口0
ないし3は、次に取られる分岐の内部アドレスを含み、
かつそれが行A中の位置を通って前方に順次走査するこ
とによって得られる内部分岐であることの指示も含んで
いることに留意されたい。入口4で、新しい行への外部
分岐B+3がある。したがって、以上の通り、入口点分
岐は外部に向かっているので、この入口は新しい行への
入口点である。残りの入口も同様に決定される。
[第 ■ 表コ
位 置 内 容
03、■
13、I
23、I
33、■
4B+3、E
53、I
63、I
7C+5、E
このマツプ・テーブルは、出力を入力に戻して循環させ
ることにより、連続サイクルで探索される。これは、外
部行が見つかるまで、または、分岐が見つからなくなる
までこのサイクルを続け、分岐が見つからない場合は、
次行が次の順次行となる。4方向セット結合性広帯域B
HTの場合、このプロセスは4サイクル以下で終了する
。各ルックアップの後、4個のレジスタ5L 52.5
3.54のうちの1個に結果を記憶する。ルックアップ
の結果が前回のルックアップの結果と一致することが判
明した場合、内部分岐サイクルが見っがったことがわか
る。この場合、過去のすべてのルックアップの最大値が
(分岐サイクルを通過するように)増分され、その結果
次の入口点が得られる。
ることにより、連続サイクルで探索される。これは、外
部行が見つかるまで、または、分岐が見つからなくなる
までこのサイクルを続け、分岐が見つからない場合は、
次行が次の順次行となる。4方向セット結合性広帯域B
HTの場合、このプロセスは4サイクル以下で終了する
。各ルックアップの後、4個のレジスタ5L 52.5
3.54のうちの1個に結果を記憶する。ルックアップ
の結果が前回のルックアップの結果と一致することが判
明した場合、内部分岐サイクルが見っがったことがわか
る。この場合、過去のすべてのルックアップの最大値が
(分岐サイクルを通過するように)増分され、その結果
次の入口点が得られる。
この最大(max)機能は最大(max)回路60で実
行される。
行される。
第4図のキャッシュ行と第■表のマツプ・テーブルの例
を参照すると、事前取出し機構の動作がより詳細に理解
できる。キャッシュ行の入口点は5にあり、したがって
、エントリ・レジスタ2゜は最初、5に設定される。こ
のため、マツプ・テーブル40はその次の分岐位置を指
す3の出力を生成し、■/Eは工に設定される。この出
力は選択回路65に送られる。選択回路65はマツプ・
テーブル40または加算器66のいずれかから入力を選
択する。加算器66は、最大(max)回路60の出力
に1を加える。選択は、OR回路70または線71上の
I/Eビットのいずれかの制御下で行なわれる。3の出
力は、マツプ・テーブル40から各レジスタ51.52
.53.54にも転送される。これらのレジスタはカウ
ンタ72に結合される。カウンタ72は発明ではモジュ
ーロ4のカウンタであり、各レジスタ5L 52.53
.54を使用可能にする。カウンタ72はクロック発生
器80からクロック信号を受け取るが、この同じクロッ
ク信号がエントリ・レジスタ20にも送られることに留
意されたい。事前取出し機構が外部分岐を見つける仕事
を完了すると、レジスタ51.52.53.54及びカ
ウンタ72がリセットされ(95)、新しい行への入口
点がエントリ・レジスタ20に記憶される。この例では
、行Aへ入る時の事前取出し機構の初期状態は、エンI
−IJ・レジスタ20が値5を含み、レジスタ5L52
、53.54がすべて値Oを含むという状態である。
を参照すると、事前取出し機構の動作がより詳細に理解
できる。キャッシュ行の入口点は5にあり、したがって
、エントリ・レジスタ2゜は最初、5に設定される。こ
のため、マツプ・テーブル40はその次の分岐位置を指
す3の出力を生成し、■/Eは工に設定される。この出
力は選択回路65に送られる。選択回路65はマツプ・
テーブル40または加算器66のいずれかから入力を選
択する。加算器66は、最大(max)回路60の出力
に1を加える。選択は、OR回路70または線71上の
I/Eビットのいずれかの制御下で行なわれる。3の出
力は、マツプ・テーブル40から各レジスタ51.52
.53.54にも転送される。これらのレジスタはカウ
ンタ72に結合される。カウンタ72は発明ではモジュ
ーロ4のカウンタであり、各レジスタ5L 52.53
.54を使用可能にする。カウンタ72はクロック発生
器80からクロック信号を受け取るが、この同じクロッ
ク信号がエントリ・レジスタ20にも送られることに留
意されたい。事前取出し機構が外部分岐を見つける仕事
を完了すると、レジスタ51.52.53.54及びカ
ウンタ72がリセットされ(95)、新しい行への入口
点がエントリ・レジスタ20に記憶される。この例では
、行Aへ入る時の事前取出し機構の初期状態は、エンI
−IJ・レジスタ20が値5を含み、レジスタ5L52
、53.54がすべて値Oを含むという状態である。
サイクルOで、マツプ・テーブル40は値3、■を出力
する。この値3がレジスタ51.52.53.54の入
力及び選択回路65の入力に送られる。カウンタ回路7
2は、レジスタ51を使用可能にさせ、レジスタ51は
値3を出力する。比較回路90.91.92.93は、
エントリ・レジスタ20中の値を、それぞれレジスタ5
1ないし54の出力と比較する。この場合、比較回路9
0は値5と3を比較し、その他の全ての比較回路91な
いし93は値5とOを比較する。そのどれも等しくなら
ないので、OR回路70は、選択回路65に影響しない
値Oを出力する。一方、マツプ・テーブル40からの信
号Iは、選択回路65に値3をその出力にまで送らせる
。最大回路60はレジスタ51ないし54中に保持され
ている最大値、この場合には3を決定する。この値に、
増分器66が1を加え、4を得る。
する。この値3がレジスタ51.52.53.54の入
力及び選択回路65の入力に送られる。カウンタ回路7
2は、レジスタ51を使用可能にさせ、レジスタ51は
値3を出力する。比較回路90.91.92.93は、
エントリ・レジスタ20中の値を、それぞれレジスタ5
1ないし54の出力と比較する。この場合、比較回路9
0は値5と3を比較し、その他の全ての比較回路91な
いし93は値5とOを比較する。そのどれも等しくなら
ないので、OR回路70は、選択回路65に影響しない
値Oを出力する。一方、マツプ・テーブル40からの信
号Iは、選択回路65に値3をその出力にまで送らせる
。最大回路60はレジスタ51ないし54中に保持され
ている最大値、この場合には3を決定する。この値に、
増分器66が1を加え、4を得る。
サイクル1では、クロック発生器80が、エントリ・レ
ジスタ20に選択回路65の出力からの値3をロードさ
せる。マツプ・テーブル40は、再び値3、工を出力す
る。値3はレジスタ51ないし54の入力に送られ、カ
ウンタ回路72がレジスタ52を使用可能にする。比較
回路9o及び91は、今度はレジスタ51と52の両方
がエントリ・レジスタ20と同じ値を含むことを見つけ
る。OR回路70が値1を出力し、このため、選択回路
65は増分器66の出力をエントリ・レジスタ20に送
り戻す。この場合、最大回路60は値3を出力し、その
結果、増分器66、したがって選択回路65も値4を出
力する。
ジスタ20に選択回路65の出力からの値3をロードさ
せる。マツプ・テーブル40は、再び値3、工を出力す
る。値3はレジスタ51ないし54の入力に送られ、カ
ウンタ回路72がレジスタ52を使用可能にする。比較
回路9o及び91は、今度はレジスタ51と52の両方
がエントリ・レジスタ20と同じ値を含むことを見つけ
る。OR回路70が値1を出力し、このため、選択回路
65は増分器66の出力をエントリ・レジスタ20に送
り戻す。この場合、最大回路60は値3を出力し、その
結果、増分器66、したがって選択回路65も値4を出
力する。
サイクル2では、クロック発生器80が、レジスタ20
に選択回路65の出力からの値4をロードさせる。マツ
プ・テーブル40は、値B+3、Eを出力する。信号E
は解析の終了を表わし、選択回路65に新しい行アドレ
スB及び新しいハーフワードの入口点3を出力させ、さ
らに、レジスタ51ないし54を値Oにリセットする。
に選択回路65の出力からの値4をロードさせる。マツ
プ・テーブル40は、値B+3、Eを出力する。信号E
は解析の終了を表わし、選択回路65に新しい行アドレ
スB及び新しいハーフワードの入口点3を出力させ、さ
らに、レジスタ51ないし54を値Oにリセットする。
第3図に示したマツプ・テーブル40は、後で第4図な
いし第10図で説明する部分回路から構成される。マツ
プ・テーブルは直接アドレス可能なテーブルであり、そ
の入力は行内部のハーフワード・アドレスで、出力は上
記の通りである。マツプ・テーブル40のマツプ機能の
実施態様は、次の通りである。
いし第10図で説明する部分回路から構成される。マツ
プ・テーブルは直接アドレス可能なテーブルであり、そ
の入力は行内部のハーフワード・アドレスで、出力は上
記の通りである。マツプ・テーブル40のマツプ機能の
実施態様は、次の通りである。
次に、第5図に構成を示した第5A図及び第5B図を参
照する。Aなどの行内部の分岐BA+ごとに、BA+°
が決定される。これは、BAIが外部分岐の場合は、分
岐先アドレスTA、であり、BAIが内部分岐の場合に
は、最小のBAIすなわち、≧T A +である。この
機能は第5A図及び第5B図の回路で、実行される。第
1図からの線31.32.33.34が、レジスタ10
5.106.107.108に結合され、分岐アドレス
項目(BAI)、分岐先アドレス(TA+)、及びI/
Eビットの設定をそれらのレジスタに転送する。
照する。Aなどの行内部の分岐BA+ごとに、BA+°
が決定される。これは、BAIが外部分岐の場合は、分
岐先アドレスTA、であり、BAIが内部分岐の場合に
は、最小のBAIすなわち、≧T A +である。この
機能は第5A図及び第5B図の回路で、実行される。第
1図からの線31.32.33.34が、レジスタ10
5.106.107.108に結合され、分岐アドレス
項目(BAI)、分岐先アドレス(TA+)、及びI/
Eビットの設定をそれらのレジスタに転送する。
上述例によると、レジスタ105はBAo”6、TAo
=A+1、I/E=Oを含み、レジスタ106はBA、
=4、TA+=B+3、I/E=1を含み、レジスタ1
07はBA2=7、T A2 = C+5、I/E=1
を含む。最後に、レジスタ108は、第1表により、B
A3=3、T A 3= A + O1I/E=Oを含
む。広帯域BIT21から線31.32.33.34を
介して新しい行に対する順次の値を受け取る。
=A+1、I/E=Oを含み、レジスタ106はBA、
=4、TA+=B+3、I/E=1を含み、レジスタ1
07はBA2=7、T A2 = C+5、I/E=1
を含む。最後に、レジスタ108は、第1表により、B
A3=3、T A 3= A + O1I/E=Oを含
む。広帯域BIT21から線31.32.33.34を
介して新しい行に対する順次の値を受け取る。
比較回路110ないし125は、その両人力線に供給さ
れた情報の比較を行なって、BA入力≧TA入力の場合
、BA大入力出力線に渡す。そうでない場合、出力は表
現可能な最大数に1を加えた値にセットされる。この例
では、この値は、「ダミー」高次ビットを作成すること
によって得られる2進数1000である。
れた情報の比較を行なって、BA入力≧TA入力の場合
、BA大入力出力線に渡す。そうでない場合、出力は表
現可能な最大数に1を加えた値にセットされる。この例
では、この値は、「ダミー」高次ビットを作成すること
によって得られる2進数1000である。
比較回路110ないし125は、分岐アドレスを分岐先
アドレスと比較するが、この説明では4個ずつのグルー
プとして配列されている。比較回路110ないし113
は、一方の入力としてレジスタ105からの分岐アドレ
スを有し、それをレジスタ105.106.107.1
08から得られる4個の分岐先アドレスのそれぞれと比
較する。
アドレスと比較するが、この説明では4個ずつのグルー
プとして配列されている。比較回路110ないし113
は、一方の入力としてレジスタ105からの分岐アドレ
スを有し、それをレジスタ105.106.107.1
08から得られる4個の分岐先アドレスのそれぞれと比
較する。
残りの比較回路114ないし125も、同様に、すべて
の分岐アドレスとすべての分岐先アドレスが4個ずつの
グループで比較されるように配列されている。次いで、
これらの比較の結果が最小選択回路130.131.1
32.133に供給される。これらの選択回路は、その
入力線に印加された任意の値の最小値を比較して選択し
、その値をその出力線で供給するように構成されている
。
の分岐アドレスとすべての分岐先アドレスが4個ずつの
グループで比較されるように配列されている。次いで、
これらの比較の結果が最小選択回路130.131.1
32.133に供給される。これらの選択回路は、その
入力線に印加された任意の値の最小値を比較して選択し
、その値をその出力線で供給するように構成されている
。
これらの選択回路は、同じ分岐先アドレスを比較してい
る比較回路の出力がすべて同じ最小選択回路に供給され
るように結合されている。つまり、たとえば、レジスタ
105からの分岐先アドレスをそれぞれ入力とする比較
回路110,114.118.122の出力が、最小選
択回路130に供給される。同様に、最小選択回路13
1は、それぞれレジスタ102からの分岐先アドレスを
比較する比較回路111.115.119.123の出
力線からその入力を取る。最小選択回路132及び13
3も、その入力が同様にして選択される。
る比較回路の出力がすべて同じ最小選択回路に供給され
るように結合されている。つまり、たとえば、レジスタ
105からの分岐先アドレスをそれぞれ入力とする比較
回路110,114.118.122の出力が、最小選
択回路130に供給される。同様に、最小選択回路13
1は、それぞれレジスタ102からの分岐先アドレスを
比較する比較回路111.115.119.123の出
力線からその入力を取る。最小選択回路132及び13
3も、その入力が同様にして選択される。
最小選択回路130.131.132.133の出力線
は、次にそれぞれ選択回路140.141.142.1
43に結合される。選択回路1401141.142.
143は、2つの入力のうち1つを選択して、その入力
をその出力線に供給する。上記のように、一方の入力は
最小選択回路130ないし133から導かれ、もう一方
の入力は1つのレジスタの分岐先アドレス部分から導か
れる。これらの選択回路は、選択回路140.141.
142.143がその第2人力をそれぞれレジスタ10
5.106.107.108から導くように配列されて
いる。この選択は、当該の各レジスタ105.106.
107.108中のI/Eビットによって制御される。
は、次にそれぞれ選択回路140.141.142.1
43に結合される。選択回路1401141.142.
143は、2つの入力のうち1つを選択して、その入力
をその出力線に供給する。上記のように、一方の入力は
最小選択回路130ないし133から導かれ、もう一方
の入力は1つのレジスタの分岐先アドレス部分から導か
れる。これらの選択回路は、選択回路140.141.
142.143がその第2人力をそれぞれレジスタ10
5.106.107.108から導くように配列されて
いる。この選択は、当該の各レジスタ105.106.
107.108中のI/Eビットによって制御される。
I/E=0の場合、結果として得られるBA+°出力は
最小選択アドレスであり、そうでない場合には分岐先ア
ドレスTAIを指定する。
最小選択アドレスであり、そうでない場合には分岐先ア
ドレスTAIを指定する。
第5A図及び第5B図に示すように、行A(100)用
のレジスタ105は、BAo=6、TA。
のレジスタ105は、BAo=6、TA。
=l、I/Eビット=Oの値をとる。この値は、第工表
にも載っており、第4図から導かれる。残りのレジスタ
も、上記のように同様にセットされる。つまり、比較回
路110は、6と1の入力を受け取り、6を出力する。
にも載っており、第4図から導かれる。残りのレジスタ
も、上記のように同様にセットされる。つまり、比較回
路110は、6と1の入力を受け取り、6を出力する。
同様に、比較回路114は、4と1の入力を受け取って
4の出力を生成し、比較回路118は、7と1の入力を
受け取って7の出力を生成し、比較回路122は、3と
1の入力を受け取って3の出力を生成する。これらの出
力はそれぞれ最小選択回路130に供給され、その結果
、ここでこれら4個の値の最小値として3が選択され、
次いで、この値がレジスタ105からの分岐先アドレス
の値1(実際にはA+1)と−緒に、選択回路140に
供給される。I/EビットはOにセットされているので
、選択が行なわれて、3の値を選択し、BAo’出力と
して供給される。
4の出力を生成し、比較回路118は、7と1の入力を
受け取って7の出力を生成し、比較回路122は、3と
1の入力を受け取って3の出力を生成する。これらの出
力はそれぞれ最小選択回路130に供給され、その結果
、ここでこれら4個の値の最小値として3が選択され、
次いで、この値がレジスタ105からの分岐先アドレス
の値1(実際にはA+1)と−緒に、選択回路140に
供給される。I/EビットはOにセットされているので
、選択が行なわれて、3の値を選択し、BAo’出力と
して供給される。
最小選択回路131は選択回路111.115.119
.123から入力を受け取ることに留意されたい。この
例では、最小値は3であるが、106からのI/Eビッ
トが1にセットされているので、選択回路141は単に
、レジスタ106からB+3の分岐先アドレスを選択す
る。BA “に■ 対する出力として、B+3ならびに1の外部ビットが供
給される。残りの出力BA ’及びBA ’も、同
様にして計算できる。
.123から入力を受け取ることに留意されたい。この
例では、最小値は3であるが、106からのI/Eビッ
トが1にセットされているので、選択回路141は単に
、レジスタ106からB+3の分岐先アドレスを選択す
る。BA “に■ 対する出力として、B+3ならびに1の外部ビットが供
給される。残りの出力BA ’及びBA ’も、同
様にして計算できる。
次に、第6図を参照する。第5A図及び第5B図の回路
での上記の動作と平行して、マツプ・テーブルは、ある
行中の各ハーフワードごとに、その行の任意のハーフワ
ードより後でいくつの分岐が起こるかを確定する。これ
を実施する回路が、第6図に示されている。分岐数は、
任意のハーフワード・アドレスより大きいかまたはそれ
に等しいBAlの数の簡単な加算によって求められる。
での上記の動作と平行して、マツプ・テーブルは、ある
行中の各ハーフワードごとに、その行の任意のハーフワ
ードより後でいくつの分岐が起こるかを確定する。これ
を実施する回路が、第6図に示されている。分岐数は、
任意のハーフワード・アドレスより大きいかまたはそれ
に等しいBAlの数の簡単な加算によって求められる。
この例で、行A中での所望の出力を第3表に示す。
[第 3 表コ
ハーフワード・アドレス 分 岐HW7
1 HW6 2 HW5 2 HW4 3 HW3 4 HW2 4 HWI 4 HWO4 これらの値は、第4図を見ると明白である。たとえば、
ハーフワード3に注目すると、ハーフワード3から行端
まで順次の前方向走査で出会う分岐が4個あることが認
められ、したがって、ハーフワード3に関連する値は4
である。ハーフワード4については、行の前方向走査で
3個の分岐に出会うことがわかり、したがって、値はH
W4=3と指定される。
1 HW6 2 HW5 2 HW4 3 HW3 4 HW2 4 HWI 4 HWO4 これらの値は、第4図を見ると明白である。たとえば、
ハーフワード3に注目すると、ハーフワード3から行端
まで順次の前方向走査で出会う分岐が4個あることが認
められ、したがって、ハーフワード3に関連する値は4
である。ハーフワード4については、行の前方向走査で
3個の分岐に出会うことがわかり、したがって、値はH
W4=3と指定される。
第6図の回路は、次のように動作する。デコーダ150
ないし153は、当該の線31ないし34上で、BIT
21からの適当な入力BA+から2進数を受け取る。各
デコーダ150ないし153は1個の入力を有し、この
例では0と7の間のいずれかの2進数を受け取り、複数
の出力線上にその入力を指示する。各出力は、ある所与
の入力2進数に対して、その入力2進数に等しいかまた
はそれより小さな値を存するすべての出力が1に指定さ
れるような、ある特定のビット位置に割り当てられる。
ないし153は、当該の線31ないし34上で、BIT
21からの適当な入力BA+から2進数を受け取る。各
デコーダ150ないし153は1個の入力を有し、この
例では0と7の間のいずれかの2進数を受け取り、複数
の出力線上にその入力を指示する。各出力は、ある所与
の入力2進数に対して、その入力2進数に等しいかまた
はそれより小さな値を存するすべての出力が1に指定さ
れるような、ある特定のビット位置に割り当てられる。
入力2進数よりも大きな値を割り当てられているすべて
の場所は、0となる。つまり、デコーダ153上のBA
a線を参照すると、6が入力された場合、位置Oないし
6はすべて1の値をとり、ビット位置7は0の値をとる
。同様に、他のすべてのデコーダも、そこに供給された
データを復号する。したがって、次いで、デコーダの出
力が結合され、選定されたすべてのビット位置が同じ加
算器に結合されるようにする。つまり、たとえば、15
0.151.152.153からのビット位置7がすべ
て加算器(ADD)IE30に結合される。同様に、加
算器(ADD)161ないし167はそれぞれ位置6な
いしOをその入力とする。加算器160ないし167は
、当技術分野で周知の加算器であり、単に4個の入力を
加え、入力の加算に対応する値をとる2進数の出力を有
する。−例を挙げると、ハーフワード4を受け持つ加算
器163は、デコーダ153からOを受け取るが、デコ
ーダ150ないし152からは1を受け取る。これは、
上記の第3表中の所望値と一致する。
の場所は、0となる。つまり、デコーダ153上のBA
a線を参照すると、6が入力された場合、位置Oないし
6はすべて1の値をとり、ビット位置7は0の値をとる
。同様に、他のすべてのデコーダも、そこに供給された
データを復号する。したがって、次いで、デコーダの出
力が結合され、選定されたすべてのビット位置が同じ加
算器に結合されるようにする。つまり、たとえば、15
0.151.152.153からのビット位置7がすべ
て加算器(ADD)IE30に結合される。同様に、加
算器(ADD)161ないし167はそれぞれ位置6な
いしOをその入力とする。加算器160ないし167は
、当技術分野で周知の加算器であり、単に4個の入力を
加え、入力の加算に対応する値をとる2進数の出力を有
する。−例を挙げると、ハーフワード4を受け持つ加算
器163は、デコーダ153からOを受け取るが、デコ
ーダ150ないし152からは1を受け取る。これは、
上記の第3表中の所望値と一致する。
第7図にデコーダ150ないし153を詳しく示す。
デコーダ200は、標準のディジタル論理要素を使って
実現することができる。デコーダ200は、2進コード
化入力を復号して、8個の互いに排他的な出力のうちの
1個にする。デコーダ200の各出力は、行中の特定の
ハーフ・アドレスに対応している。このような復号器及
びデマルチプレクサは当技術分野で周知である。次いで
、デコーダの出力は、それぞれ、ORゲート201ない
し208に適宜結合される。8個の出力を有するデコー
ダの例かられかるように、ORゲート208は各出力に
結合されている。ORゲー)208は、デコーダ200
のゼロ位置に対するデータを運ぶ。
実現することができる。デコーダ200は、2進コード
化入力を復号して、8個の互いに排他的な出力のうちの
1個にする。デコーダ200の各出力は、行中の特定の
ハーフ・アドレスに対応している。このような復号器及
びデマルチプレクサは当技術分野で周知である。次いで
、デコーダの出力は、それぞれ、ORゲート201ない
し208に適宜結合される。8個の出力を有するデコー
ダの例かられかるように、ORゲート208は各出力に
結合されている。ORゲー)208は、デコーダ200
のゼロ位置に対するデータを運ぶ。
つまり、たとえば、デコーダ200中への入力値が6の
場合、その線6がハイとなって1の値をとり、他のすべ
ての線は0の値をとる。線6はORゲート202ないし
208に結合されているので、これらの各ゲートも1の
出力値をとる。つまり、デコーダ150はその線7上で
0の出力値をとるが、出力0ないし6は、すべて1とな
る。
場合、その線6がハイとなって1の値をとり、他のすべ
ての線は0の値をとる。線6はORゲート202ないし
208に結合されているので、これらの各ゲートも1の
出力値をとる。つまり、デコーダ150はその線7上で
0の出力値をとるが、出力0ないし6は、すべて1とな
る。
第8図に構成を示す第8A図及び第8B図は、BA+と
BA+’の間の対応関係がどのようにマツプ・テーブル
に入力されるかを示している。第8A図及び第8B図の
回路は、BIT21から線31ないし34を介して、B
A+入力を受け取る。
BA+’の間の対応関係がどのようにマツプ・テーブル
に入力されるかを示している。第8A図及び第8B図の
回路は、BIT21から線31ないし34を介して、B
A+入力を受け取る。
BAD’入力は第5A図及び第5B図の対応回路から受
け取り、HWOないしHW7の入力は第6図のカウンタ
回路から受け取る。
け取り、HWOないしHW7の入力は第6図のカウンタ
回路から受け取る。
比較ブロック210は、BAI入力を受け取って配列し
、かつ、BAD’入力を受け取るスイッチ・ブロック2
20を制御する。実際の配列されたBA+項目は、マツ
プ・テーブルベの入口には使われないが、この配列はB
A+“項目を配列し直すのに使われる。
、かつ、BAD’入力を受け取るスイッチ・ブロック2
20を制御する。実際の配列されたBA+項目は、マツ
プ・テーブルベの入口には使われないが、この配列はB
A+“項目を配列し直すのに使われる。
比較ブロック210は、2個の入力を取り、これをその
最小出力と最大出力で配列し、2個の入力が交換された
かどうかを示す出力も供給する、最小最大比較機構(C
OMP)211ないし215を含んでいる。つまり、最
小最大比較機構211は、211Aと211Bで値を比
較し、その比較結果の指示を2110に供給する。今、
考察している例では、最小最大比較機構211は、その
入力でBAoとBA+を受け取って配列し直し、BA
o =6かつB A 1= 4のとき、最小出力211
AにBA+入力、最大出力211BにBAo入力が現わ
れるようにする。次いで、再配列の指示が2110に供
給される。これは、211Cからの信号に応答して、入
力の順序を交換すべきかどうかを決定するスイッチ22
1に結合されている。残りのスイッチ及びスイッチ・ブ
ロック220も同様に動作し、比較ブロック210中の
当該の最小最大比較機構と対になっている。つまり、比
較機構212は結果信号をスイッチ222に供給し、比
較機構213.214.215はそれぞれの結果をスイ
ッチ223.224.225に供給する。
最小出力と最大出力で配列し、2個の入力が交換された
かどうかを示す出力も供給する、最小最大比較機構(C
OMP)211ないし215を含んでいる。つまり、最
小最大比較機構211は、211Aと211Bで値を比
較し、その比較結果の指示を2110に供給する。今、
考察している例では、最小最大比較機構211は、その
入力でBAoとBA+を受け取って配列し直し、BA
o =6かつB A 1= 4のとき、最小出力211
AにBA+入力、最大出力211BにBAo入力が現わ
れるようにする。次いで、再配列の指示が2110に供
給される。これは、211Cからの信号に応答して、入
力の順序を交換すべきかどうかを決定するスイッチ22
1に結合されている。残りのスイッチ及びスイッチ・ブ
ロック220も同様に動作し、比較ブロック210中の
当該の最小最大比較機構と対になっている。つまり、比
較機構212は結果信号をスイッチ222に供給し、比
較機構213.214.215はそれぞれの結果をスイ
ッチ223.224.225に供給する。
スイッチ・ブロック220の出力は、次に、選択回路2
30ないし237に供給される。選択回路230ないし
237は、その選択入力に入力された値に応じて、4つ
の入力のうちのひとつを選択する。つまり、たとえば、
ハーフワードO上で4が選択回路230に供給される場
合、その入力からの値である4がその出力に供給される
。この例では、行中の分岐アドレスとして3の値、I/
Eビットの状況としてI/E=0がその人力4に現われ
、この値がその出力、すなわち、INO出力で供給され
る。次いで、各選択回路からの出力がテーブル250に
供給され、そこに記憶される。
30ないし237に供給される。選択回路230ないし
237は、その選択入力に入力された値に応じて、4つ
の入力のうちのひとつを選択する。つまり、たとえば、
ハーフワードO上で4が選択回路230に供給される場
合、その入力からの値である4がその出力に供給される
。この例では、行中の分岐アドレスとして3の値、I/
Eビットの状況としてI/E=0がその人力4に現われ
、この値がその出力、すなわち、INO出力で供給され
る。次いで、各選択回路からの出力がテーブル250に
供給され、そこに記憶される。
次に第9図には、テーブル250の内部動作と構成が示
されている。テーブル250は、レジスタ(REG)3
00ないし307を含んでいる。
されている。テーブル250は、レジスタ(REG)3
00ないし307を含んでいる。
この各レジスタ300ないし307は、それぞれ第8A
図及び第8B図の回路から受け取った入力INOないし
IN7に結合されている。すべてのレジスタは入力線3
08によって、並列にロードされる。つまり、レジスタ
300ないし307は、記憶バッファとして働く。選択
回路310は、レジスタ300ないし307に結合され
たその入力から任意の値を選択することができる。これ
らの入力は、エントリ・レジスタ20から得られる入口
アドレスによって、320で選択される。選択回路31
0の出力322は、読取り人力321によって使用可能
となる。
図及び第8B図の回路から受け取った入力INOないし
IN7に結合されている。すべてのレジスタは入力線3
08によって、並列にロードされる。つまり、レジスタ
300ないし307は、記憶バッファとして働く。選択
回路310は、レジスタ300ないし307に結合され
たその入力から任意の値を選択することができる。これ
らの入力は、エントリ・レジスタ20から得られる入口
アドレスによって、320で選択される。選択回路31
0の出力322は、読取り人力321によって使用可能
となる。
第10図は、たとえば第3図の60及び第5B図の13
0で使用される最小最大比較回路(G。
0で使用される最小最大比較回路(G。
MP)を示している。4人力の最小最大回路400は、
5個の2人力最小最大回路401ないし405を含んで
いる。この4人力最小最大回路は、第8A図のブロック
210と同じであり、それと同様の方式で動作する。こ
の回路を単純に反復拡大して、任意の数の入力に対応さ
せることもできる。これは、当技術分野で周知のように
、2ト一ン式の実施態様である。
5個の2人力最小最大回路401ないし405を含んで
いる。この4人力最小最大回路は、第8A図のブロック
210と同じであり、それと同様の方式で動作する。こ
の回路を単純に反復拡大して、任意の数の入力に対応さ
せることもできる。これは、当技術分野で周知のように
、2ト一ン式の実施態様である。
F1発明の効果
本発明により、分岐履歴を利用してキャッシュ・ミスを
予測しながらキャッシュへの事前取出しを行なうことが
できる装置が実現された。
予測しながらキャッシュへの事前取出しを行なうことが
できる装置が実現された。
第1図は、本発明の全体的ブロック図である。
第2A図は、ローカル分岐履歴テーブルの大きさに応じ
た分岐アドレスの論理的区分けを示す図である。 第2B図は、広帯域分岐履歴テーブルの大きさに応じた
分岐アドレスの論理的区分けを示す図である。 第3図は、事前取出し機構の構成図である。 第4図は、分岐の指示を伴うキャッシュ行の概略図であ
る。 第5図は、第5A図と第5B図の結合様式を示す図であ
り、第5A図と第5B図は、実行中に分岐命令に出会う
ごとに分岐命令相互間の対応関係を確立する回路を示す
図である。 第6図は、キャッシュ行中の分岐をカウントする回路の
図である。 第7図は、以上(≧)デコーダの図である。 第8図は、第8A図と第8B図の結合様式を示す図であ
り、第8A図と第8B図は、マツプ・テーブルに対応関
係を入力する回路の図である。 第9図は、テーブルの実施態様の図である。 第10図は、最小最大回路の図である。 10・・・・プロセッサ、11・・・・命令ハ、ソファ
、12・・・・キャッシュ、13・・・・メモリ、14
・・・・バッファ取出しアドレス・レジスタ、15・・
・・ローカルBIT (分岐履歴テーブル)、20・・
・・次行アドレス・レジスタ、21・・・・広帯域BI
T、22・・・・事前取出し機構。 出願人 インターナショナル・ビジネス・マシーンズ
優コーポレーション 代理人 弁理士 頓 宮 孝 −(外1名) 〜 の
た分岐アドレスの論理的区分けを示す図である。 第2B図は、広帯域分岐履歴テーブルの大きさに応じた
分岐アドレスの論理的区分けを示す図である。 第3図は、事前取出し機構の構成図である。 第4図は、分岐の指示を伴うキャッシュ行の概略図であ
る。 第5図は、第5A図と第5B図の結合様式を示す図であ
り、第5A図と第5B図は、実行中に分岐命令に出会う
ごとに分岐命令相互間の対応関係を確立する回路を示す
図である。 第6図は、キャッシュ行中の分岐をカウントする回路の
図である。 第7図は、以上(≧)デコーダの図である。 第8図は、第8A図と第8B図の結合様式を示す図であ
り、第8A図と第8B図は、マツプ・テーブルに対応関
係を入力する回路の図である。 第9図は、テーブルの実施態様の図である。 第10図は、最小最大回路の図である。 10・・・・プロセッサ、11・・・・命令ハ、ソファ
、12・・・・キャッシュ、13・・・・メモリ、14
・・・・バッファ取出しアドレス・レジスタ、15・・
・・ローカルBIT (分岐履歴テーブル)、20・・
・・次行アドレス・レジスタ、21・・・・広帯域BI
T、22・・・・事前取出し機構。 出願人 インターナショナル・ビジネス・マシーンズ
優コーポレーション 代理人 弁理士 頓 宮 孝 −(外1名) 〜 の
Claims (1)
- 【特許請求の範囲】 メモリとデータ行についての一時高速記憶を提供するキ
ャッシュとを有するコンピュータにおいて、前記データ
行を前記メモリから前記キャッシュへ事前取出しする命
令事前取出し装置であって、前記データ行のアドレスを
生成する手段と、分岐に関する項目を記憶して提供する
広帯域分岐履歴テーブル手段と、 前記広帯域分岐履歴テーブル手段によって提供される前
記項目を受け取って前記キャッシュからの命令の取出し
を制御するローカル分岐履歴テーブル手段と、 次データ行アドレスを計算して、前記次データ行アドレ
スにより指示される次データ行が前記キャッシュに記憶
されていないなら、前記次データ行を前記メモリから前
記キャッシュへ事前取出しする事前取出し手段と、 を備えた前記装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/128,008 US4943908A (en) | 1987-12-02 | 1987-12-02 | Multiple branch analyzer for prefetching cache lines |
| US128008 | 1987-12-02 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01169538A true JPH01169538A (ja) | 1989-07-04 |
Family
ID=22433137
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63263008A Pending JPH01169538A (ja) | 1987-12-02 | 1988-10-20 | 命令事前取出し装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US4943908A (ja) |
| EP (1) | EP0318778A3 (ja) |
| JP (1) | JPH01169538A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04233632A (ja) * | 1990-07-27 | 1992-08-21 | Internatl Business Mach Corp <Ibm> | デイジタルデータプロセツサ作動方法及び分岐履歴テーブル |
Families Citing this family (70)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01271838A (ja) * | 1988-04-22 | 1989-10-30 | Fujitsu Ltd | マイクロプログラム分岐方法 |
| US6092153A (en) * | 1988-11-14 | 2000-07-18 | Lass; Stanley Edwin | Subsettable top level cache |
| JPH0778735B2 (ja) * | 1988-12-05 | 1995-08-23 | 松下電器産業株式会社 | キャッシュ装置と命令読出し装置 |
| JP2570859B2 (ja) * | 1989-05-25 | 1997-01-16 | 日本電気株式会社 | データ処理装置 |
| US5353418A (en) * | 1989-05-26 | 1994-10-04 | Massachusetts Institute Of Technology | System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread |
| EP0473714A1 (en) * | 1989-05-26 | 1992-03-11 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
| 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 |
| US5093777A (en) * | 1989-06-12 | 1992-03-03 | Bull Hn Information Systems Inc. | Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack |
| EP0404068A3 (en) * | 1989-06-20 | 1991-12-27 | Fujitsu Limited | Branch instruction executing device |
| US5230068A (en) * | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
| WO1991013402A1 (en) * | 1990-02-26 | 1991-09-05 | Nexgen Microsystems | Two-level branch prediction cache |
| US5093778A (en) * | 1990-02-26 | 1992-03-03 | Nexgen Microsystems | Integrated single structure branch prediction cache |
| US5226130A (en) * | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
| US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
| EP0449369B1 (en) * | 1990-03-27 | 1998-07-29 | Koninklijke Philips Electronics N.V. | A data processing system provided with a performance enhancing instruction cache |
| DE69128741T2 (de) * | 1990-05-18 | 1998-07-16 | Koninkl Philips Electronics Nv | Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür |
| JP2560889B2 (ja) * | 1990-05-22 | 1996-12-04 | 日本電気株式会社 | マイクロプロセッサ |
| JPH0820950B2 (ja) * | 1990-10-09 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチ予測型分岐予測機構 |
| US5430850A (en) * | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
| JP2881049B2 (ja) * | 1991-07-30 | 1999-04-12 | 株式会社日立製作所 | プリフェッチバッファ |
| JPH0628184A (ja) * | 1991-08-26 | 1994-02-04 | Internatl Business Mach Corp <Ibm> | ブランチ予測方法及びブランチプロセッサ |
| US5305389A (en) * | 1991-08-30 | 1994-04-19 | Digital Equipment Corporation | Predictive cache system |
| US5495591A (en) * | 1992-06-30 | 1996-02-27 | Bull Hn Information Systems Inc. | Method and system for cache miss prediction based on previous cache access requests |
| US5423048A (en) * | 1992-08-27 | 1995-06-06 | Northern Telecom Limited | Branch target tagging |
| JP3254019B2 (ja) * | 1992-11-30 | 2002-02-04 | 富士通株式会社 | データ先読み制御装置 |
| JPH06180669A (ja) * | 1992-12-14 | 1994-06-28 | Nec Niigata Ltd | キャッシュシステム |
| US5566324A (en) * | 1992-12-24 | 1996-10-15 | Ncr Corporation | Computer apparatus including a main memory prefetch cache and method of operation thereof |
| US5367703A (en) * | 1993-01-08 | 1994-11-22 | International Business Machines Corporation | Method and system for enhanced branch history prediction accuracy in a superscalar processor system |
| DE4345028A1 (de) * | 1993-05-06 | 1994-11-10 | Hewlett Packard Co | Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen |
| US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
| US5544342A (en) * | 1993-06-30 | 1996-08-06 | International Business Machines Corporation | System and method for prefetching information in a processing system |
| JP2596712B2 (ja) * | 1993-07-01 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 |
| US5721854A (en) * | 1993-11-02 | 1998-02-24 | International Business Machines Corporation | Method and apparatus for dynamic conversion of computer instructions |
| IE940855A1 (en) * | 1993-12-20 | 1995-06-28 | Motorola Inc | Data processor with speculative instruction fetching and¹method of operation |
| US7467137B1 (en) | 1994-09-02 | 2008-12-16 | Wolfe Mark A | System and method for information retrieval employing a preloading procedure |
| US7103594B1 (en) | 1994-09-02 | 2006-09-05 | Wolfe Mark A | System and method for information retrieval employing a preloading procedure |
| US5805855A (en) * | 1994-10-05 | 1998-09-08 | International Business Machines Corporation | Data cache array having multiple content addressable fields per cache line |
| US5850542A (en) * | 1995-09-15 | 1998-12-15 | International Business Machines Corporation | Microprocessor instruction hedge-fetching in a multiprediction branch environment |
| US5815700A (en) * | 1995-12-22 | 1998-09-29 | Intel Corporation | Branch prediction table having pointers identifying other branches within common instruction cache lines |
| US5742805A (en) * | 1996-02-15 | 1998-04-21 | Fujitsu Ltd. | Method and apparatus for a single history register based branch predictor in a superscalar microprocessor |
| US5794024A (en) * | 1996-03-25 | 1998-08-11 | International Business Machines Corporation | Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction |
| DE69715280T2 (de) * | 1996-03-25 | 2003-08-07 | Sun Microsystems, Inc. | Verfahren zur Sprungvorhersage in einem mehrstufigen Cachespeichersystem |
| US5842008A (en) * | 1996-06-18 | 1998-11-24 | Intel Corporation | Method and apparatus for implementing a branch target buffer cache with multiple BTB banks |
| US5764940A (en) * | 1996-11-27 | 1998-06-09 | International Business Machines Corporation | Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch |
| US6064818A (en) * | 1997-04-10 | 2000-05-16 | International Business Machines Corporation | Straight path optimization for compilers |
| US5923898A (en) * | 1997-05-14 | 1999-07-13 | International Business Machines Corporation | System for executing I/O request when an I/O request queue entry matches a snoop table entry or executing snoop when not matched |
| US8626763B1 (en) | 1997-05-22 | 2014-01-07 | Google Inc. | Server-side suggestion of preload operations |
| US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
| US7257604B1 (en) | 1997-11-17 | 2007-08-14 | Wolfe Mark A | System and method for communicating information relating to a network resource |
| US6209062B1 (en) * | 1997-11-24 | 2001-03-27 | Intel Corporation | Method for holding cache pages that are not invalidated within normal time duration for a second access or that are likely to be accessed again soon |
| US6016533A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
| US6223280B1 (en) | 1998-07-16 | 2001-04-24 | Advanced Micro Devices, Inc. | Method and circuit for preloading prediction circuits in microprocessors |
| US6230260B1 (en) | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
| US6611910B2 (en) * | 1998-10-12 | 2003-08-26 | Idea Corporation | Method for processing branch operations |
| JP2000293373A (ja) * | 1999-04-12 | 2000-10-20 | Hitachi Ltd | 分岐予測装置 |
| US6223257B1 (en) | 1999-05-12 | 2001-04-24 | Rise Technology Company | Instruction cache address generation technique having reduced delays in fetching missed data |
| US6948051B2 (en) * | 2001-05-15 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width |
| AU2002342040A1 (en) | 2001-10-10 | 2003-04-22 | Sony Computer Entertainment America Inc. | Dynamically loaded game software for smooth play. |
| JP3798998B2 (ja) * | 2002-06-28 | 2006-07-19 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
| US6965983B2 (en) * | 2003-02-16 | 2005-11-15 | Faraday Technology Corp. | Simultaneously setting prefetch address and fetch address pipelined stages upon branch |
| US20050050278A1 (en) * | 2003-09-03 | 2005-03-03 | Advanced Micro Devices, Inc. | Low power way-predicted cache |
| US7117290B2 (en) * | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
| WO2005103886A1 (ja) * | 2004-04-21 | 2005-11-03 | Fujitsu Limited | 分岐予測装置、その方法、及びプロセサ |
| US7447885B2 (en) * | 2005-04-20 | 2008-11-04 | Arm Limited | Reading prediction outcomes within a branch prediction mechanism |
| US7797520B2 (en) * | 2005-06-30 | 2010-09-14 | Arm Limited | Early branch instruction prediction |
| US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
| CN102169428A (zh) * | 2010-06-22 | 2011-08-31 | 上海盈方微电子有限公司 | 一种动态可配置的指令访问加速器 |
| KR102069857B1 (ko) | 2013-02-28 | 2020-01-23 | 삼성전자주식회사 | 자체-학습을 통해 원래 이미지를 회전하는 방법과 상기 방법을 수행할 수 있는 장치들 |
| JP6767319B2 (ja) * | 2017-07-31 | 2020-10-14 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびファイルコピー方法 |
| WO2019191742A1 (en) * | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6027945A (ja) * | 1983-07-27 | 1985-02-13 | Nec Corp | 命令取出装置 |
| JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
| JPS60168238A (ja) * | 1984-02-10 | 1985-08-31 | Hitachi Ltd | パイプラインデータ処理装置 |
| JPS61250738A (ja) * | 1985-04-29 | 1986-11-07 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 分岐活動記録テ−ブル |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3559183A (en) * | 1968-02-29 | 1971-01-26 | Ibm | Instruction sequence control |
| US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
| JPS5848146A (ja) * | 1981-09-18 | 1983-03-22 | Toshiba Corp | 命令先取り方式 |
| US4435756A (en) * | 1981-12-03 | 1984-03-06 | Burroughs Corporation | Branch predicting computer |
| US4477872A (en) * | 1982-01-15 | 1984-10-16 | International Business Machines Corporation | Decode history table for conditional branch instructions |
| US4594659A (en) * | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Method and apparatus for prefetching instructions for a central execution pipeline unit |
| US4551799A (en) * | 1983-02-28 | 1985-11-05 | Honeywell Information Systems Inc. | Verification of real page numbers of stack stored prefetched instructions from instruction cache |
| EP0150177A1 (en) * | 1983-07-11 | 1985-08-07 | Prime Computer, Inc. | Data processing system |
| US4764861A (en) * | 1984-02-08 | 1988-08-16 | Nec Corporation | Instruction fpefetching device with prediction of a branch destination for each branch count instruction |
| US4691277A (en) * | 1984-10-24 | 1987-09-01 | International Business Machines Corp. | Small instruction cache using branch target table to effect instruction prefetch |
| JPH0769818B2 (ja) * | 1984-10-31 | 1995-07-31 | 株式会社日立製作所 | デ−タ処理装置 |
| US4761731A (en) * | 1985-08-14 | 1988-08-02 | Control Data Corporation | Look-ahead instruction fetch control for a cache memory |
| US4730249A (en) * | 1986-01-16 | 1988-03-08 | International Business Machines Corporation | Method to operate on large segments of data in a virtual memory data processing system |
-
1987
- 1987-12-02 US US07/128,008 patent/US4943908A/en not_active Expired - Fee Related
-
1988
- 1988-10-20 JP JP63263008A patent/JPH01169538A/ja active Pending
- 1988-11-21 EP EP19880119281 patent/EP0318778A3/en not_active Withdrawn
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6027945A (ja) * | 1983-07-27 | 1985-02-13 | Nec Corp | 命令取出装置 |
| JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
| JPS60168238A (ja) * | 1984-02-10 | 1985-08-31 | Hitachi Ltd | パイプラインデータ処理装置 |
| JPS61250738A (ja) * | 1985-04-29 | 1986-11-07 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 分岐活動記録テ−ブル |
| US4679141A (en) * | 1985-04-29 | 1987-07-07 | International Business Machines Corporation | Pageable branch history table |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04233632A (ja) * | 1990-07-27 | 1992-08-21 | Internatl Business Mach Corp <Ibm> | デイジタルデータプロセツサ作動方法及び分岐履歴テーブル |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0318778A2 (en) | 1989-06-07 |
| US4943908A (en) | 1990-07-24 |
| EP0318778A3 (en) | 1992-01-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4943908A (en) | Multiple branch analyzer for prefetching cache lines | |
| US5276882A (en) | Subroutine return through branch history table | |
| JP3542021B2 (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
| US4847753A (en) | Pipelined computer | |
| US4200927A (en) | Multi-instruction stream branch processing mechanism | |
| US5423011A (en) | Apparatus for initializing branch prediction information | |
| KR880002660B1 (ko) | 중앙 처리장치 | |
| US5136696A (en) | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions | |
| EP0380859B1 (en) | Method of preprocessing multiple instructions | |
| US5687349A (en) | Data processor with branch target address cache and subroutine return address cache and method of operation | |
| US6367001B1 (en) | Processor including efficient fetch mechanism for L0 and L1 caches | |
| EP0227892B1 (en) | Updates to branch history table in a pipeline processing system | |
| US5790823A (en) | Operand prefetch table | |
| US5136697A (en) | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache | |
| US5421020A (en) | Counter register implementation for speculative execution of branch on count instructions | |
| US5845323A (en) | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time | |
| US6081887A (en) | System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction | |
| US5935238A (en) | Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles | |
| EP0586057B1 (en) | Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations | |
| US20080034187A1 (en) | Method and Apparatus for Prefetching Non-Sequential Instruction Addresses | |
| US5961638A (en) | Branch prediction mechanism employing branch selectors to select a branch prediction | |
| EP0394624B1 (en) | Multiple sequence processor system | |
| US5964869A (en) | Instruction fetch mechanism with simultaneous prediction of control-flow instructions | |
| KR20080023723A (ko) | 분기 명령들을 예측하기 위한 방법 및 장치 | |
| US6192462B1 (en) | Superscalar microprocessor including a load/store unit, decode units and a reorder buffer to detect dependencies between access to a stack cache and a data cache |