JP2001195302A - 命令ループ・バッファ - Google Patents

命令ループ・バッファ

Info

Publication number
JP2001195302A
JP2001195302A JP2000362477A JP2000362477A JP2001195302A JP 2001195302 A JP2001195302 A JP 2001195302A JP 2000362477 A JP2000362477 A JP 2000362477A JP 2000362477 A JP2000362477 A JP 2000362477A JP 2001195302 A JP2001195302 A JP 2001195302A
Authority
JP
Japan
Prior art keywords
cache
loop
instruction
fetch
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.)
Pending
Application number
JP2000362477A
Other languages
English (en)
Inventor
Timothy D Anderson
ディ、アンダーソン ティモシイ
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2001195302A publication Critical patent/JP2001195302A/ja
Pending 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

(57)【要約】 【課題】 1次のプログラム・キャッシュ・メモリおよ
び命令バッファ・サブシステム40を有する、ディジタ
ル信号プロセッサのような命令プログラマブル・プロセ
ッサを含む電子システムを提供する。 【解決手段】 サブシステム40は、タグRAM54お
よびタグ比較器52と組み合わせたプログラム・データ
RAM60と、RAM60と並列なループ・キャッシュ
・サブシステム62とを含む。命令フェッチ・ユニット
10は、フェッチ番地をタグ比較器52およびサブシス
テム62に供給する。サブシステム62は、基準番地か
ら始まるフェッチ番地のシーケンスに対応する命令オプ
コードを記憶するための分岐キャッシュ・レジスタ・フ
ァイル76を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、集積回路の分野に
関し、更に詳細には、マイクロプロセッサおよびディジ
タル信号プロセッサのアーキテクチャに関する。
【0002】
【従来の技術】当該分野では良く知られているように、
集積回路製造技術の進歩および回路設計ならびに回路ア
ーキテクチャの進歩は、広範囲の電子システムにおいて
命令プログラマブル論理装置の幅広い展開を可能にして
きた。最近のディジタル・システムの範囲は、寸法の点
では無線電話やパーソナル・ディジタル・アシスタント
(PDA)のようなハンドヘルド・システムから大型コ
ンピュータ・システムまで広がり、機能の点では埋込み
型制御デバイスからスーパーコンピュータ応用製品まで
広がっている。そのようなシステムに含まれるプログラ
マブル論理装置は、マイクロプロセッサのような汎用装
置か、ディジタル信号プロセッサ(DSP)のようなあ
る種の命令を実行するのに特に適した装置である。以下
の説明では、これらのタイプの装置は、一般的に、中央
処理ユニットすなわちCPUとして参照される。
【0003】当該分野では基本であるように、CPU
は、データ・オペランドおよび結果を記憶するための、
また、所望のデータ処理を命令するプログラム命令を記
憶するためのランダム・アクセス・メモリ(RAM)と
関連づけて実現される。比較的大型で複雑なシステムで
は、必要とされるメモリ資源は、オンチップ・メモリ資
源が必然的に限られることを考慮に入れて、(CPUに
関連して)外部RAMを利用することを要求する。もち
ろん、外部メモリの使用は、一般的に、外部メモリ・ア
クセスに必要なオーバーヘッド動作のために、また、外
部メモリとCPUとの間のデータの通信における帯域幅
制約のために、性能を低下させる。また、外部メモリの
使用に消費される電力は、一般的に、CPUのオンチッ
プ・メモリによって必要とされるものよりも遙かに大き
い。これは、主として、チップ間信号駆動で必要とされ
るためである。
【0004】この結果、多くの最近のマイクロプロセッ
サおよびDSPアーキテクチャは、性能を改善するとと
もにシステム全体の電力消費を減少するためにキャッシ
ュ・メモリ・システムを用いる。基本的には、キャッシ
ュ・メモリは、物理的にも(すなわち、オンチップか、
「バックサイド」キャッシュ・バスのような特別な短距
離バスによって接続される)、論理的にも(すなわち、
汎用インタフェース回路,バス・マスタリングなどの使
用が必要でない)、CPUに「より近い」小型高速メモ
リによって実現される。キャッシュ・メモリは、ある仮
定に基づいて、CPUがそれに関してアクセスの比較的
高い頻度を有するようなデータおよび命令コードを記憶
する。例えば、多くのキャッシュ・メモリは、データ・
オペランドおよび命令オプコード(opcode)がしばしば
逐次的にアクセスされるという仮定に基づいている。こ
の場合、関連するCPUは、フェッチされたメモリ番地
に基づいてブロック(すなわち、キャッシュ・ライン)
単位でキャッシュ・メモリをロードする。キャッシュへ
のアクセスは、一般的に、フェッチされるべきデータ・
オペランドまたは命令のメモリ番地をキャッシュの現在
エントリの番地と比較してフェッチの対象がキャッシュ
から取り出されるべきかその代わりに外部メモリからア
クセスされるべきかを決定するCPUによって、実行さ
れる。キャッシュ・メモリの多重レベルへの割り当てと
ともにキャッシュ・メモリの記憶,アクセスおよび更新
に関する多くのやり方が、当業者によく知られている。
【0005】多くの最近のCPUアーキテクチャ、特
に、データとプログラムのメモリとが互いに分離してい
るハーバード・アーキテクチャ・クラスのものは、、デ
ータ用と命令用とで別のキャッシュ・メモリを含んでい
る。事実、ハーバード・アーキテクチャという用語は、
今では、1個のメイン・メモリを有するが別々のデータ
および命令キャッシュを有するCPUに関してしばしば
用いられる。データおよび命令キャッシュのこの分離
は、異なるデータ・パスと命令パイプラインの多分異な
るポイントとを活用しており、それらを介して命令およ
びデータ・オペランドがフェッチされ、したがって、少
なくともより低レベル(例えば、レベル1キャッシュ)
での効率的なキャッシュ利用を提供する。
【0006】
【発明が解決しようとする課題】分離命令キャッシュを
提供する場合でも、命令キャッシュにどの命令を記憶す
べきかの決定は、キャッシュ・「ヒット」率(すなわ
ち、そのキャッシュから行われるフェッチのパーセンテ
ージ)を最大化する方向への努力で変わる。もちろん、
高いキャッシュ・ヒット率はCPUの性能およびシステ
ムの電力効率を向上させる。しかし、キャッシュ・ヒッ
ト率以外の他の因子はこれに関して重要である。例え
ば、メモリからキャッシュへの再ロードが頻繁に行われ
れば大きな電力が消費される。
【0007】背景として、従来のCPUは、その命令セ
ットに「反復ブロック」命令を含み、それに応答して、
CPUは指定されたブロックで命令ループ・バッファを
ロードする。そのような従来のCPUの一例は、テキサ
ス・インスツルメンツ社から市販されているディジタル
信号プロセッサの320C54xファミリーである。
【0008】命令キャッシュを利用する別の従来方式が
米国特許第5,579,493号に述べられており、そ
こでは、CPUによって実行されるプログラムは繰り返
し実行されるべきプログラムのモジュールを指定する
「反復」命令を含む。この米国特許第5,579,49
3号では、反復される命令ブロックは命令バッファに記
憶され、指定された命令がメモリからではなく命令バッ
ファからフェッチできるようになっており、それにより
電力を節約している。しかし、この方式でも特別な命令
(「反復」命令)の使用が必要であり、このことは、も
ちろん、この機能の使用をプログラマに対して不透明に
している。
【0009】更なる背景として、別の従来の命令キャッ
シュ方式が米国特許第4,626,988号に述べられ
ている。この方式は、各フェッチされた命令を命令フェ
ッチ・ルックアサイド(look-aside)・バッファに記憶
する。ループの実行時には、命令フェッチ・ユニットは
ループ・モードに入って、そこでは、命令はバッファか
らフェッチされる。しかし、各フェッチされた命令は、
ループ・モードに入る可能性を考慮して、バッファに記
憶される必要がある。
【0010】本発明の目的は、命令メモリへのアクセス
回数が最小化された、マイクロプロセッサやディジタル
信号プロセッサのような命令プログラマブル論理装置用
のアーキテクチャを提供することにある。
【0011】本発明の他の目的は、オンチップ命令バッ
ファが小型プログラム・ループ用の命令の記憶に効率的
に使用されるそのような装置を提供することにある。
【0012】本発明の別の目的は、そのような命令バッ
ファがプログラマに透明であるやり方で自動的に使用さ
れるそのような装置を提供することにある。
【0013】本発明のさらに別の目的は、ネストされた
プログラム・ループ用に命令バッファを使用できるその
ような装置を提供することにある。
【0014】本発明のその他の目的および利点について
は、以下の説明を図面と一緒に参照することによって当
業者には明らかとなろう。
【0015】
【課題を解決するための手段】本発明は、好ましくは中
央処理ユニット(CPU)とオンチップに組み込まれ、
最下位レベル命令キャッシュ・メモリと並列になったル
ープ・キャッシュによって実現される。そのループ・キ
ャッシュでは、基準番地レジスタは、命令が分岐キャッ
シュ・レジスタ・ファイルのエントリに記憶される一連
のフェッチ番地の基準番地を記憶する。有効ビットは、
対応するレジスタ・ファイル・エントリが有効な命令を
含むかどうかを示すために、分岐キャッシュ・レジスタ
・ファイルの各エントリに対して保持される。命令フェ
ッチを実行する際には、マルチプレクサは、フェッチさ
れた命令が分岐キャッシュ・レジスタ・ファイルに有効
に存在するかどうかに依存して、命令キャッシュ・メモ
リの出力および分岐キャッシュ・レジスタ・ファイルの
出力のいずれかを選択し、制御論理も分岐キャッシュ・
レジスタ・ファイルのそれに関する命令キャッシュ・メ
モリからの読出しを禁止(ディスエーブル)する。本発
明の一態様によれば、分岐キャッシュ・レジスタ・ファ
イルは、命令レジスタ・ファイルの現在の内容をミスす
る逆方向分岐の場合にロードされる。本発明の別の態様
によれば、分岐キャッシュ・レジスタ・ファイルは、介
在する逆方向分岐なしに二度引き続いて発生する逆方向
分岐から始まるループに対してロードされる。
【0016】
【発明の実施の形態】以下の説明を参照することによっ
て当業者には明らかなように、本発明は、幅広い命令プ
ログラマブル論理装置およびそのような論理装置を含む
システムに関連して実現される。そのような論理装置の
一例はディジタル信号プロセッサ(DSP)であり、そ
れに関連して本発明の好適な実施の形態について説明す
る。しかし、当業者には容易に理解されるように、本発
明は、汎用マイクロプロセッサやその他の特定用途向け
プロセッサ(例えば、グラフィック・プロセッサおよび
命令プログラマブル・カスタム論理機能など)にも有利
に実現される。もちろん、本発明は、以下に請求される
ように、それらおよびその他の代替実現を含むのに十分
広いスコープを有している。
【0017】図1は、本発明の好適な実施の形態に従っ
て構築されたディジタル信号プロセッサ(DSP)2を
含めた電子システム1の構成を示すブロック図である。
この例では、DSP2は、二重データ・パスの中央処理
ユニット3を含めた32ビット・8ウエイ・VLIWパ
イプライン方式プロセッサとして実現されている。
【0018】中央処理ユニット3は、2つのデータ・パ
ス上に、パイプライン方式で同時命令実行を開始し制御
するための命令フェッチ・ユニット10,命令ディスパ
ッチ・ユニット11および命令デコード・ユニット12
を含む。機能的には、命令フェッチ・ユニット10,命
令ディスパッチ・ユニット11および命令デコード・ユ
ニット12は、プログラム・メモリから命令を呼び出し
(以下に詳述する)、それらの命令をデコードし、制御
信号をデータ・パスの機能ユニットに分配して、それら
の命令を実行させる。8個の32ビット命令が各命令サ
イクルで実行され、中央処理ユニット3の2つのデータ
・パスの各々で同時に処理が発生する。
【0019】中央処理ユニット3の第1のデータ・パス
は、この例ではL1ユニット22,S1ユニット23,
M1ユニット24およびD1ユニット25と名付けられ
た4個の機能実行ユニットを含む。これらの実行ユニッ
ト22,23,24,25はそれぞれレジスタ・ファイ
ル21と関連して動作可能である。第2のデータ・パス
も同様に構成されており、それぞれレジスタ・ファイル
31に結合された、L2ユニット32,S2ユニット3
3,M2ユニット34およびD2ユニット35と名付ら
れけた4個の機能実行ユニットを含む。この例でのレジ
スタ・ファイル21,31はそれぞれ16個の32ビッ
ト汎用レジスタを含み、それらは命令に依存してデータ
用としてデータ番地ポインタとしてまたは条件レジスタ
として使用できる。
【0020】本発明のこの例示の実施の形態では、L機
能ユニット22,32は、32ビットおよび40ビット
の演算および比較動作とビットおよび正規化カウントと
32ビット論理演算とのような動作を実行するための演
算および論理ユニットである。S機能ユニット23,3
3は、32ビットの演算および論理動作とシフトおよび
ビット・フィールド操作と定数発生と分岐と制御レジス
タ13との間でのレジスタ転送とを実行するための演算
および論理ユニットである。M機能ユニット24,34
は16×16ビット乗算器であり、それらは、乗算およ
び累算を含むディジタル信号処理動作において特に有用
である。D機能ユニット25,35は、32ビットの加
算および減算と32ビットの線形および環状番地計算と
を実行するための演算ユニットである。また、図1で示
唆されるように、中央処理ユニットは、L1ユニット2
2,S1ユニット23およびM1ユニット24がレジス
タ・ファイル31からオペランドを受け取ることを許可
するとともにL2ユニット32,S2ユニット33およ
びM2ユニット34がレジスタ・ファイル21からオペ
ランドを受け取ることを許可する交差レジスタ・パスを
含む。
【0021】中央処理ユニット3は、それの構成および
動作を制御する制御レジスタ13および制御論理14を
さらに含む。中央処理ユニット3は、それらの従来の機
能を制御するための、試験論理15,エミュレーション
論理16および割込論理17のような特殊な機能も含
む。
【0022】中央処理ユニット3は、本発明の好適な実
施の形態に従って構築されたL1Iキャッシュおよび命
令バッファ・システム38によって、プログラム・メモ
リ(「命令メモリ」とも呼ばれる。)に結合されてい
る。特に、この例では、命令フェッチ・ユニット10
は、L1Iキャッシュおよび命令バッファ・システム3
8に1つ以上の32ビット番地を供給し、(例えば、2
56ビットの命令バス上で)それらから対応命令コード
を受け取って、命令フェッチ動作を完成させる。本発明
の好適な実施の形態によるL1Iキャッシュおよび命令
バッファ・システム38の特別な構成については、以下
に詳細に説明する。図1のDSP2では、L1Iキャッ
シュおよび命令バッファ・システム38は、L2メモリ
およびユニファイド(unified)・キャッシュ40に双
方向的に結合されている。命令コードは、L1Iキャッ
シュおよび命令バッファ・システム38に存在しない場
合には、L2メモリおよびユニファイド・キャッシュ4
0から(または、を介して)フェッチされる。
【0023】データ側では、中央処理ユニット3の2つ
のデータ・パスはそれぞれ、データ用の1次キャッシュ
として動作するL1Dデータ・キャッシュ36に双方向
的に結合される。本発明の好適な実施の形態によれば、
L1Dデータ・キャッシュ36は、例えば32バイトの
ライン・サイズを有する2ウエイ・セット・アソシアテ
ィブ(associative)・キャッシュとして構成される。
次に、L1Dデータ・キャッシュ36はL2メモリおよ
びユニファイド・キャッシュ40に双方向的に結合され
る。L1Dデータ・キャッシュ36でミスが発生した場
合には、L1Dデータ・キャッシュ36はL2メモリお
よびユニファイド・キャッシュ40から1キャッシュ・
ラインのデータを要求する。
【0024】本発明の好適な実施の形態によるDSP2
のL2メモリおよびユニファイド・キャッシュ40は、
中央処理ユニット3とオンチップに実現され、この例で
は、ソフトウエア構成されたユニファイド・メモリであ
る。選択可能な構成は、L2メモリおよびユニファイド
・キャッシュ40内のメモリ・マップされたランダム・
アクセス・メモリ(RAM)・セクターの寸法対2次ユ
ニファイド(すなわち、プログラムおよびデータ)・キ
ャッシュの寸法を画定する。L2メモリおよびユニファ
イド・キャッシュ40の構成は、例えば、制御レジスタ
13で制御ビットをセットすることによって、定義され
る。キャッシュとして構成される限り、L2メモリおよ
びユニファイド・キャッシュ40は、付加的メモリ場所
内容とともに、L1Iキャッシュおよび命令バッファ3
8とL1Dデータ・キャッシュ36とに記憶されたもの
と同じメモリ場所を同時に記憶する。この例では、L2
メモリおよびユニファイド・キャッシュ40は、L1D
データ・キャッシュ36を「スヌープ(snoop)」し
て、それ自身のメモリ場所の内容の修正版をそれが含ん
でいるかどうかを判定することによって、キャッシュ整
合性を確認する。
【0025】中央処理ユニット3によるキャッシュまた
はRAMアクセスがL2メモリおよびユニファイド・キ
ャッシュ40に関してミスである場合には、L2メモリ
およびユニファイド・キャッシュ40は、要求されたメ
モリ番地を拡張DMAコントローラ5に送る。拡張DM
Aコントローラ5は、DSP2の外部メモリ・インタフ
ェース4を介して、同期式SRAM,非同期式SRAM
または同期式DRAMの形である外部ランダム・アクセ
ス・メモリ(RAM)42の必要な読出しまたは書込み
アクセスを実行する。続いて、アクセスされたメモリ場
所が、L2メモリおよびユニファイド・キャッシュ40
に書き込まれ、また、適当なより低次のキャッシュに書
き込まれる。マルチチャンネル・バッファード・シリア
ル・ポート80,81を介して、拡張DMAコントローラ
5はまた、入力/出力装置440,441に関して、L2
メモリおよびユニファイド・キャッシュ40との間、し
たがって、中央処理ユニット3との間のデータの通信を
制御する。ホスト・ポート・インタフェース7も拡張D
MAコントローラ5に結合されており、それを介してホ
スト中央処理ユニット50はDSP2と通信する。
【0026】その他の機能も必要に応じてDSP2内に
存在する。この例では、パワー・ダウン論理6が設けら
れており、中央処理ユニット活動,周辺機器活動および
位相ロック・ループ(PLL)・クロック同期活動を停
止して、電力消費を低減する。プログラマブル・タイマ
ー410,411もこの例では設けられており、DSP2
がコントローラのような機能を実行することを許可す
る。
【0027】図2を参照して、本発明の好適な実施の形
態によるL1Iキャッシュおよび命令バッファ38の構
成について詳細に説明する。もちろん、L1Iキャッシ
ュおよび命令バッファ38の構成の代替的な実現がこの
明細書を参照することによって当業者に明らかになるこ
とが考えられ、したがって、これらおよび他の実現方法
も本発明のスコープに包含されることが理解される。
【0028】本発明の好適な実施の形態による図2の例
では、L1Iキャッシュおよび命令バッファ38は、ル
ープ・キャッシュ62と並列に従来の1次プログラム・
キャッシュとして配置されている。1次プログラム・キ
ャッシュ側において、L1IタグRAM54は、L1I
キャッシュおよび命令バッファ38のL1IデータRA
M60に内容が含まれるメモリ番地の部分を記憶するた
めのキャッシュ・タグ・メモリである。L1IタグRA
M54はタグ比較器52に結合されている。タグ比較器
52は、別の入力で中央処理ユニット3の命令フェッチ
・ユニット10からのフェッチ番地を受信する。タグ比
較器52は、命令フェッチ・ユニット10から受信され
たフェッチ番地をL1IタグRAM54の現在の内容と
比べて、フェッチ番地がL1IタグRAM54に記憶さ
れたタグの1つと一致する(すなわち、L1IデータR
AM60のキャッシュ・「ヒット」に対応する)かどう
かを判断する。タグ比較器52は、この比較の結果をL
1Iキャッシュおよび命令バッファ38のL1I制御論
理に提供する。L1I制御論理はそれに従ってL1Iデ
ータRAM60の動作を制御する。
【0029】L1IデータRAM60は、専用プログラ
ム・キャッシュ・メモリであり、この例ではL1Iタグ
RAM54に記憶されたタグ番地に対応するメモリ場所
の内容を含む。L1IデータRAM60の特別な命令お
よび構成は、マルチプル・ウエイ・セット・アソシアテ
ィブ・キャッシュ構成を含む任意の従来のキャッシュ・
メモリ・アーキテクチャに対応してもよい。しかし、本
発明の好適な実施の形態によれば、また、主としてディ
ジタル信号プロセッサの命令キャッシュとしてのそれの
使用のため、L1IデータRAM60はダイレクト・マ
ッピングされたキャッシュである。稀に「スラッシュ
(thrash)する」小さなタイト(tight)なプログラム
・ループから構成されるというDSPコードの傾向のた
め、ダイレクト・マッピングされた構成はDSPアーキ
テクチャで特に有用である。例えば、L1IデータRA
M60は4kバイト容量を持ち、各々が64バイトの6
4キャッシュ・ラインとして構成されている。この場合
には、L1IタグRAM54は、64個のタグ・エント
リ(L1IデータRAM60の各キャッシュ・ラインに
対して1個)を含み、好ましくは、L1IタグRAM5
4は、キャッシュ・エントリの各々に対して1つの有効
ビットも含む。ただし、有効ビットは、もし必要であれ
ば、(例えば、L1IデータRAM60やL1I制御論
理58のような)別の場所に位置されてもよい。
【0030】L1IデータRAM60は、L2メモリお
よびユニファイド・キャッシュ40に結合されたポート
も含む。この接続は、L1IタグRAM54でそれらの
タグを「ミス」した命令フェッチ番地に対応するキャッ
シュ・ラインでL2メモリおよびユニファイド・キャッ
シュ40からL1IデータRAM60に再ロードするこ
とを許す。このローディングは、L1I制御論理58の
制御下で、L2メモリおよびユニファイド・キャッシュ
40に(および、このレベルで「ミス」が発生すれば、
外部メモリ・インタフェース4を介して外部RAM42
に)メモリ番地を発行することによって、行われる。そ
れに応答して、メモリ場所の内容がL1IデータRAM
60に書き込まれる。
【0031】本発明の好適な実施の形態によれば、キャ
ッシュ・ミスおよびキャッシュ・ヒットの両方の場合に
フェッチ・ユニット10からのフェッチ番地に応答して
命令オプコードを提供するL1IデータRAM60の出
力が、マルチプレクサ64の1つの入力に供給される。
【0032】上述したように、ループ・キャッシュ62
は、L1IデータRAM60と並列にL1Iキャッシュ
および命令バッファ38に提供される。本発明のこの好
適な実施の形態によれば、ループ・キャッシュ62は、
小さなプログラム・ループのような繰り返しアクセスさ
れている命令フェッチ番地に対応するメモリ場所の内容
を記憶するための命令バッファ・サブシステムである。
重要な利点を提供するために、ループ・キャッシュ62
は、それに対するアクセスがL1IデータRAM60へ
のアクセス(および、もちろん、L2メモリおよびユニ
ファイド・キャッシュ40へのアクセスと、もちろん、
外部メモリ42へのアクセス)を含む、他のプログラム
・メモリへのアクセスよりも大幅に少ない電力を消費す
るように、構築される。これに関して、ループ・キャッ
シュ62の容量は、好ましくは、比較的小さく、また、
それの記憶構成は、好ましくは、インデックスされたア
クセスがなされるレジスタ・ファイルの形である。本発
明の好適な実施の形態によるループ・キャッシュ62の
詳細な構造については、以下に更に詳しく説明する。
【0033】その一般的構成では、ループ・キャッシュ
62は、中央処理ユニット3の命令フェッチ・ユニット
10からのフェッチ番地および対応制御信号を受信する
ように接続された入力を有する。そのような制御信号
は、例えば、フェッチ番地が有効であることを表示する
信号を含む。ループ・キャッシュ62は、L1Iデータ
RAM60にラインRD上の読出し制御信号を供給す
る。ループ・キャッシュ62は、マルチプレクサ64の
1つの入力に、それへの「ヒット」が発生した場合にフ
ェッチ番地に対応する命令オプコードを提供するための
出力も有する。ループ・キャッシュ62は、ラインSE
Lを駆動する制御信号出力、したがって、マルチプレク
サ64の選択制御入力も有し、フェッチ番地とループ・
キャッシュ62に記憶された番地との比較に応答して、
フェッチ・ユニット10に供給するためにL1Iデータ
RAM60の出力およびループ・キャッシュ62自身の
出力のいずれを選択するかを制御する。また、ループ・
キャッシュ62は、L1IデータRAM60の出力に結
合されたデータ入力を有し、それによってループ・キャ
ッシュ62はメモリ場所の内容をロードされる。
【0034】それの一般動作では、本発明の好適な実施
の形態によれば、ループ・キャッシュ62は、フェッチ
・ユニット10からフェッチ番地を受信し、ループ・キ
ャッシュ62が対応内容を現時点で含んでいるある範囲
の番地とこのフェッチ番地を事実上比較する。フェッチ
番地が一致すれば、ループ・キャッシュ62は、ループ
・キャッシュ62自身がフェッチされた命令オプコード
をマルチプレクサ64に提供することとマルチプレクサ
64を制御してフェッチ・ユニット10への供給のため
にこの出力を選択させることとを捨てて、L1Iデータ
RAM60にラインRD上の読出し禁止信号を供給して
それの動作を排除する(したがって、電力を節約す
る)。また、ループ・キャッシュ62は、制御信号をL
1IタグRAM54に供給してフェッチ番地によるルー
プ・キャッシュ62のヒット時にタグ読出しを禁止す
る。一方、フェッチ番地がループ・キャッシュ62内に
記憶された番地の範囲内になければ、ループ・キャッシ
ュ62は、L1IデータRAM60にラインRD上の読
出し許可信号をアサートするとともに(内容が、現在、
L1IデータRAM60かL2メモリおよびユニファイ
ド・キャッシュ40か外部RAM42かに記憶されてい
るかどうか)、マルチプレクサ64を制御してフェッチ
・ユニット10への供給のためにL1IデータRAM6
0の出力を選択させる。
【0035】上述したように、L1IデータRAM60
のデータ出力は、ループ・キャッシュ62の入力へも供
給される結果、ループ・キャッシュ62の記憶場所はメ
モリ場所の内容をロードされる。いつループ・キャッシ
ュ62をロードするかの決定およびどのメモリ場所から
ロードするかの決定について、本発明の好適な実施の形
態に関連しながら説明する。
【0036】本発明の第1の好適な実施の形態によれ
ば、ループ・キャッシュ62は、ここでは「ループ・フ
ロント・キャッシュ」と呼ぶ方法に従って動作する。
「ループ・フロント・キャッシュ」では、ループ・キャ
ッシュ62に対してミスである任意の逆方向分岐が発生
した場合にループ・キャッシュ62のレジスタ・ファイ
ルがロードされ、そのフェッチに続いて、それらはL1
IデータRAM60よりもループ・キャッシュ62にア
クセスする。本発明の第1の好適な実施の形態では、ル
ープ・フロント・キャッシュ法は、ネストされたループ
を含むプログラム・シーケンスにおいても、大幅な電力
節約をもたらす。
【0037】図3に注目し、この図を用いて本発明のこ
の第1の好適な実施の形態によるループ・フロント・キ
ャッシュの動作について、キャッシュ・ラインのシーケ
ンスとして構成された命令のシーケンスの一例のメモリ
・マップ表現に関連して説明する(各キャッシュ・ライ
ンが多数の命令を含む可能性があることを理解された
い)。図3の例では、外側ループ66が内側ループ68
を囲んでおり、内側ループ68より先行する外側ループ
・コードの部分がプロローグ66pで示され、また、内
側ループ68より後ろの外側ループ・コードの部分がエ
ピローグ66eで示されている。ループ・キャッシュ6
2の容量C62が図3に示されており、プロローグ66
p,内側ループ68およびエピローグ66eの一部を含
む多数の連続したキャッシュ・ラインをカバーしてい
る。
【0038】本発明のこの第1の実施の形態によれば、
上述したように、ループ・キャッシュ62は、ミスであ
る各逆方向分岐が発生するとロードされる。図3の例で
は、ループ・キャッシュは、最初に、エピローグ66e
の終わりから逆方向分岐の最初の発生時に、容量C62
よって示される内容をロードされる。これは内側ループ
68の全体を含む。この結果、図2も参照すると、プロ
ローグ66p内および内側ループ68内(エピローグ6
6eの上部部分内も)の各命令のフェッチがL1Iデー
タRAM60からではなくループ・キャッシュ62から
行われることによって、特にループ66,68について
ループ・カウントが大きい場合に、各アクセスに関して
大幅な電力が節約される。
【0039】図4を参照しながら、ループ・フロント・
キャッシュを実現する本発明のこの第1の好適な実施の
形態によるループ・キャッシュ62の構成について詳細
に説明する。ループ・キャッシュ62は、フェッチ・ユ
ニット10からフェッチ番地を受信するデータ入力と、
ループ・キャッシュ制御論理74によって駆動される制
御入力とを有する基準番地レジスタ70を含む。基準番
地レジスタ70は、ループ・キャッシュ62の動作に関
して以下に説明するように、単一のエントリ・キャッシ
ュ・タグ・メモリとして事実上動作する。基準番地レジ
スタ70のデータ出力およびフェッチ・ユニット10か
らのフェッチ番地は、現在のフェッチ番地と基準番地レ
ジスタ70の現在の内容との差に対応するラインIND
X上のディジタル出力を発生する加算器72の相補入力
に供給され、キャッシュ・ライン当たりのバイト数によ
って除される。キャッシュ・ライン当たりのバイト数が
2のべき乗(例えば、32)である好適なケースでは、
この除算は単に加算器72による減算の出力の最上位ビ
ットを選択することによって実行される。このインデッ
クス(指標)値を運ぶラインINDXは、ループ・キャ
ッシュ制御論理74に供給され、また、分岐キャッシュ
・レジスタ・ファイル76へのアドレス入力としても供
給される。
【0040】本発明のこの第1の好適な実施の形態によ
るループ・キャッシュ62の分岐キャッシュ・レジスタ
・ファイル76は、N個のレジスタのインデックスされ
たセットとして構成され、その各々は、命令オプコード
のキャッシュ・ラインを記憶する。ここで、値Nはルー
プ・フロント・キャッシュの深さを示している。本発明
によるループ・キャッシュ62の最適深さNは、それに
よって実行されるべきコードの性質のほかに、キャッシ
ュ・アーキテクチャの仕様に依存するであろう。電力効
率の目的には、Nを比較的小さく(例えば、32以下)
保つことが望ましく、4エントリのような場合には顕著
な利益が得られる。いずれにしろ、Nの値は2のべき乗
に対応する必要はない。分岐キャッシュ・レジスタ・フ
ァイル76の番地入力は加算器72からのインデックス
値を受信し、それに応答して、分岐キャッシュ・レジス
タ・ファイル76のレジスタの1つが、ループ・キャッ
シュ制御論理74によって生成されるとともに分岐キャ
ッシュ・レジスタ・ファイル76の制御入力R/Wに供
給された制御信号の状態に依存して、読出しまたは書込
みアクセスのために選択される。データ入力Dは、L1
IデータRAM60からデータを受信し、書込みアクセ
ス中にその選択されたレジスタに記憶する。また、デー
タ出力Qは、マルチプレクサ64に供給されて、読出し
アクセスにその選択されたレジスタの内容を提供する。
【0041】ループ・キャッシュ制御論理74は、加算
器72によってラインINDX上に提供されたインデッ
クス値に応答して、また、現在のフェッチ番地が逆方向
分岐であるかどうかを示すラインBW上に提供された制
御信号に応答して、ループ・キャッシュ62の動作を制
御する。ループ・キャッシュ制御論理74の動作は、分
岐キャッシュ・レジスタ・ファイル76のエントリに対
応する有効ビットの状態にも依存する。そのような有効
ビットは、ループ・キャッシュ制御論理74自身内のレ
ジスタ75に記憶されている。
【0042】図4に示された本発明のこの第1の好適な
実施の形態の例によれば、ラインBW上の制御信号はル
ープ・キャッシュ62自身内の逆方向分岐検出論理78
によって生成される。この例では、逆方向分岐検出論理
78は、前のフェッチ番地を記憶するラスト・フェッチ
・レジスタ79を含む。動作時には、ラスト・フェッチ
・レジスタ79は、前のフェッチ番地に対応するそれの
現在の内容を比較器80の1つの入力に供給しながら、
フェッチ・ユニット10からの現在のフェッチ番地を記
憶する。比較器80の他の入力は、図4に示すようにフ
ェッチ・ユニット10から現在のフェッチ番地を受信し
て、現在のフェッチ番地がラスト・フェッチ・レジスタ
79に記憶された前のフェッチ番地よりも小さいか等し
いかに応じてラインBW上に信号をアサートする。
【0043】あるいは、ラインBWは、中央処理ユニッ
ト3の命令フェッチ・ユニット10自身によって生成さ
れるとともに現在のフェッチ番地が逆方向分岐に対応す
ることを示す制御信号を運ぶこともできる。この場合に
は、もちろん、逆方向分岐検出論理78は、ループ・キ
ャッシュ62内には存在しないが、その代わりに中央処
理ユニット3内に設けられるであろう。
【0044】ループ・キャッシュ制御論理74は、上述
したように、ラインBW上の制御信号に応答し、ライン
INDX上の加算器72によって提供された値に応答
し、レジスタ75の有効ビットの状態に応答して、ルー
プ・キャッシュ62の動作を制御する。この制御は、分
岐キャッシュ・レジスタ・ファイル76の制御入力R/
Wに供給された制御信号とマルチプレクサ64(図2)
の選択入力に供給されたラインSEL上の制御信号とに
よって実行される。また、ループ・キャッシュ制御論理
74は、ラインRD上の制御信号によってL1Iデータ
RAM60からの読出しを許可(イネーブル)および禁
止(ディスエーブル)する。この明細書を参照した当業
者は、例えば、次に述べるループ・キャッシュ62の動
作を実行するのに適した組合せまたは逐次論理によって
ループ・キャッシュ制御論理74が容易に実現されるこ
とを理解するであろう。
【0045】次に、図5を参照しながら、本発明のこの
第1の好適な実施の形態によるループ・キャッシュ制御
論理74の制御下でのループ・キャッシュ62の動作に
ついて詳細に説明する。図5に示すように、ループ・キ
ャッシュ62の動作は、工程81において、(基準番地
に対応する)インデックス値“0”に対するレジスタ7
5の有効ビットをクリアすることによって開始される。
工程82では、ループ・キャッシュ62は、中央処理ユ
ニット3の命令フェッチ・ユニット10から新しいフェ
ッチ番地を受信する。
【0046】工程82で新しいフェッチ番地を受信する
と、ループ・キャッシュ制御論理74は、まず、判定8
3を実行して、そのフェッチ番地がループ・キャッシュ
62に対して「ヒット」であるかどうかを事実上決定す
る。判定83は、基準番地レジスタ70の現在の内容
(これは、分岐キャッシュ・レジスタ・ファイル76に
現在記憶されている最も低いメモリ番地に対応する)と
工程82で受信されるとともにキャッシュ・ライン当た
りのバイト数で除されたフェッチ番地との差に対応する
ディジタル値をラインINDX上に発生する加算器72
によって実行される。ループ・キャッシュ制御論理74
は、ラインINDX上のこの値をゼロおよびループ・キ
ャッシュ62の深さNと比べて、そのフェッチ番地がル
ープ・キャッシュ62に記憶されている番地の範囲内に
あるかどうかを判定する。また、ループ・キャッシュ制
御論理74は、レジスタ75でインデックス値“0”に
対する有効ビットを調べて、分岐キャッシュ・レジスタ
・ファイル76が基準番地レジスタ70の内容に対応す
るそれの初期エントリに記憶された有効命令コードを有
するかどうかを判定する。そうでなければ、分岐キャッ
シュ・レジスタ・ファイル76はいかなる有効命令オプ
コードを含まず、したがって、フェッチ番地はループ・
キャッシュ62のヒットに対応することができない。以
上のことから明らかなように、ループ・キャッシュ62
は、非逐次的なタグ番地を有するキャッシュ・ラインよ
りもキャッシュ・ラインの逐次的なセットを記憶する。
【0047】フェッチ番地がループ・キャッシュ62を
ミス(すなわち、判定83が否定)すれば、ループ・キ
ャッシュ制御論理74は、次に、判定85を実行して、
現在のフェッチ番地が逆方向分岐を指しているかどうか
を判定する。判定85は、現在のフェッチ番地をラスト
・フェッチ・レジスタ79の内容と比較するとともにそ
れに従ってラインBW上に信号を発生する逆方向分岐判
定論理78の動作によって実行されてもよい。あるい
は、判定85は、中央処理ユニット3自身によって実行
されてもよく、その結果はラインBW上をループ・キャ
ッシュ制御論理74に送信される。現在のフェッチ番地
が「ミス」でありかつ逆方向分岐でもない場合(判定8
5が否定)には、ループ・キャッシュ制御論理74は、
ラインRD上に信号をアサートすることによってL1I
データRAM60からの所望の命令オプコードの読出し
を許可し、また、マルチプレクサ64を制御してライン
SEL上の適当な信号によってL1IデータRAM60
の出力を選択させる。これらの動作は図5に工程86と
して示されている。次に、制御は工程82へ戻って命令
フェッチ・ユニット10からの次のフェッチ番地の受信
を待つ。
【0048】他方、上述したように、ループ・キャッシ
ュ62は、キャッシュ・ミスであるが逆方向分岐に対応
するフェッチの場合には、分岐キャッシュ・レジスタ・
ファイル82をローディングことを開始するように動作
する。図5に戻って、現在のフェッチ番地がループ・キ
ャッシュ62をミスしている(すなわち、判定83が否
定)が逆方向分岐に対応する(判定85が肯定)場合に
は、ループ・キャッシュ制御論理74は、工程88を実
行して分岐キャッシュ・レジスタ・ファイル76のロー
ディングを開始する。工程88では、ループ・キャッシ
ュ制御論理74は、基準番地レジスタ70に制御信号を
発行して、それに現在のフェッチ番地を基準番地として
記憶させる。また、ループ・キャッシュ制御論理74
は、インデックス値“0”に対する有効ビットをセット
するとともに、レジスタ75のその他のすべての有効ビ
ットをクリアする。ループ・キャッシュ制御論理74
は、次に、ラインRD上に信号をアサートしてL1Iデ
ータRAM60から所望の命令オプコードの読出しを許
可することによって、また、マルチプレクサ64を制御
してL1IデータRAM60の出力を選択させることに
よって、工程90を実行する。さらに、ループ・キャッ
シュ制御論理74は分岐キャッシュ・レジスタ・ファイ
ル76の制御入力R/Wに書込み制御信号を発行し、そ
の結果、L1IデータRAM60の出力に、したがっ
て、分岐キャッシュ・レジスタ・ファイル76のD入力
に提供されたオプコードがそれのエントリ[0](すな
わち、基準番地に対応し、インデックス値“0”を有す
る)にロードされる。次に、制御は工程82へ戻って次
のフェッチ番地を待つ。
【0049】判定83へ戻って、基準番地レジスタ70
に記憶された基準番地の範囲N内にあるフェッチ番地を
受信すると(すなわち、判定83が肯定)、ループ・キ
ャッシュ制御論理74は、次に、判定91を実行して、
ラインINDX上のディジタル値(すなわち、フェッチ
番地と基準番地との差)に対応する有効ビットがセット
されているかどうかを判定する。そうでなければ(判定
91が否定)、ラインINDX上の現在のインデックス
値に対応するエントリは正しいオプコードではない。次
に、(ラインRDを介した)L1IデータRAM60か
らの所望の命令オプコードの読出しを許可することによ
って、また、ラインINDX上の現在のインデックス値
に対応するそれのエントリでL1IデータRAM60の
出力を分岐キャッシュ・レジスタ・ファイル76にロー
ドすることによって、工程92がループ・キャッシュ制
御論理74の制御下でループ・キャッシュ62によって
実行される。次に、ループ・キャッシュ制御論理74
は、現在のインデックス値に対応するレジスタ75に有
効ビットをセットする。また、ループ・キャッシュ制御
論理74は、マルチプレクサ64を制御してラインSE
L上の適当な信号を用いてL1IデータRAM60の出
力を選択させ、それにより、所望の命令オプコードを中
央処理ユニット3に送る。
【0050】他方、ラインINDX上の現在のインデッ
クス値に対してレジスタ75の有効ビットがセットされ
れば(判定91が肯定)、ループ・キャッシュ62は、
実際に、工程82で受信されたフェッチ番地によって指
定された命令に対する現在の有効オプコードを記憶して
いる。ループ・キャッシュ制御論理74は、次に、工程
94を実行して、分岐キャッシュ・レジスタ・ファイル
76の制御入力R/Wに読出し制御信号を供給すること
によって、ラインINDX上のインデックス値によって
指示される分岐キャッシュ・レジスタ・ファイル76の
エントリからオプコードをフェッチする。分岐キャッシ
ュ・レジスタ・ファイル76のこの読出しは、ラインR
D上に禁止信号を供給するループ・キャッシュ制御論理
74によって、L1IデータRAM60を除外して実行
される。L1IデータRAM60の読出しアクセスのこ
の禁止は大幅に電力を節約し、本発明の重要な利点の1
つを提供する。上述したように、判定91が肯定である
結果の場合には、ループ・キャッシュ制御論理74によ
ってL1IタグRAM54も禁止されて、ループ・キャ
ッシュ62のヒットに対してタグ番地読出しを阻止する
ことによって付加的な電力節約がなされる。工程94で
は、ループ・キャッシュ制御論理74が、ラインSEL
上の信号を用ることによってマルチプレクサ64を制御
して、それの出力に供給するためのループ・キャッシュ
62を選択させ、その結果、分岐キャッシュ・レジスタ
・ファイル76に記憶されたオプコードが命令フェッチ
・ユニット10に提供される。
【0051】図5に示されるようなループ・キャッシュ
62の動作方法に従えば、ループ・キャッシュ62は、
ループ・キャッシュ62に対してミスである逆方向分岐
に応答して命令オプコードをロードされる。このローデ
ィングは、逆方向分岐によるミスをまず検出する判定8
3,85(判定83,85がそれぞれ否定および肯定で
ある)によって発生する。次に、分岐キャッシュ・レジ
スタ・ファイル76の第1のエントリは工程90で基準
番地のオプコードをロードされ、基準番地レジスタ70
が基準番地を記憶し、第1のエントリを除くレジスタ7
5のすべての有効ビットが工程88でクリアされる。次
に続く逐次命令フェッチは、分岐キャッシュ・レジスタ
・ファイル76の最後に到達するまで、判定83(肯
定),判定91(否定)および工程92の動作を経てオ
プコードを分岐キャッシュ・レジスタ・ファイル76に
ロードする。ループ・キャッシュ62の「ヒット」が発
生する(判定83が肯定)それ以降の任意の時点で、レ
ジスタ75の有効ビットが工程92の繰り返しですべて
セットされているので、命令オプコードはL1Iデータ
RAM60よりもむしろ分岐キャッシュ・レジスタ・フ
ァイル76から(工程94において)読み出され、した
がって、さもなければそのようなアクセスから生じたで
あろう電力消費が節約される。この動作は、プロローグ
66pおよび内側ループ68のフェッチ番地の各々がル
ープ・キャッシュ62の「ヒット」に対応すること(判
定83および判定91がどちらも肯定)を考慮して、図
3に示されるように、ネストされたループの場合にも続
けられる。内側ループ68の最後における逆方向分岐命
令は、この逆方向分岐命令もヒットであるため、分岐キ
ャッシュ・レジスタ・ファイル76の再ローディングを
引き起こさない。
【0052】この動作状態と分岐キャッシュ・レジスタ
・ファイル76の内容とは、分岐キャッシュ・レジスタ
・ファイル76のメモリ場所の1つに対応しない目的場
所を有する次の逆方向分岐命令のフェッチまで、言い換
えれば、与えられたフェッチ命令に対して判定83が否
定で判定85が肯定になるまで、そのまま残る。図3の
例では、分岐キャッシュ・レジスタ・ファイル76に記
憶されていない(すなわち、それに対する判定83が否
定)外側ループのエピローグ66eの最後近くのそれら
の命令フェッチは、それらの命令が逆方向分岐ではない
(すなわち、各々の場合で判定85が否定である)た
め、分岐キャッシュ・レジスタ・ファイル76の再ロー
ディングを引き起こさない。工程86で、エピローグ6
6eのこの末端部分に対するオプコードがL1Iデータ
RAM60から単に読み出される。エピローグ66eの
最後の命令に続く逆方向分岐のフェッチは実際に逆方向
分岐であるが、このフェッチがループ・キャッシュ62
の「ヒット」であるため、判定83は肯定であり、工程
94を経た分岐キャッシュ・レジスタ・ファイル76か
らのフェッチは継続される。
【0053】本発明のこの第1の好適な実施の形態は、
このように、小さくタイトなプログラム・ループ内にあ
る命令に対する1次のプログラム・キャッシュ・メモリ
にアクセスする必要性を排除することによって、電力消
費を削減するという重要な利点を提供する。そのような
ループが主流であるDSPルーチンのような応用では、
全体的な電力節約をかなりのものとする。また、本発明
のこの好適な実施の形態の動作は、特別な命令やプログ
ラムの変更を必要とせず、また、すべての命令オプコー
ドが自動的にフェッチされロードされることもない。
【0054】本発明のこの第1の好適な実施の形態によ
るこのループ・フロント・キャッシュ方式は、ループの
命令オプコードがループを通る最初のリターン・パスの
間にループ・キャッシュ62にロードされるというやり
方で、電力消費を削減するというこの利点を提供する
が、ループ・フロント・キャッシュ方式は一定の制限も
提供する。図3を参照しながら、ネストされたループの
例について述べると、プロローグ66pおよび内側ルー
プ68に対して必要とされるキャッシュ・ラインの合計
がループ・キャッシュ容量C62を超えると、内側ループ
68の命令がループ・キャッシュ62に存在しないこと
になって、ネストされたループ・サイクルの主要部分に
対する全体的な利点が減少する(すなわち、mを内側ル
ープ68のループ・カウントとした場合に、内側ループ
68の命令と同じ頻度のたった1/mをアクセスされる
にも拘わらず、プロローグ66p命令はループ・キャッ
シュ62にある)。また、プロローグ66p自身がルー
プ・キャッシュ容量C62を超えれば、ループ・キャッシ
ュ62は内側ループ68の先頭と外側ループ66の先頭
との間で「スラッシ」するであろう。さらに、多くのフ
ェッチ・パケットがループ・キャッシュ62に記憶され
ることになるが、一度しか実行されず、いくつかの状況
では電力節約を悪化させるかもしれない。
【0055】ここでは「ループ・テール・キャッシュ」
と名付けた本発明の第2の好適な実施の形態は、ループ
・キャッシュにロードされる前に1次プログラム・キャ
ッシュ・メモリから2度実行するように各ループに要求
することを犠牲にして、これらの制限に取り組んでい
る。一般に、ループ・テール・キャッシュ方式は、ルー
プ・キャッシュをミスした逆方向分岐に対して(ループ
・フロント・キャッシュと同じように)ループ・キャッ
シュをロードするが、逆方向分岐ミスが続けて2度発生
した場合のみである。「続けて2度」という用語は、間
に他の逆方向分岐フェッチが起こらない2度の同じ逆方
向分岐のフェッチを意味する。
【0056】図6を参照すると、図3に関して既に述べ
た命令のシーケンスが再び示されているが、外側ループ
66は内側ループ68よりも進んだプロローグ66pと
内側ループ68より遅れたエピローグ66eとを有す
る。本発明のこの第2の好適な実施の形態のループ・テ
ール・キャッシュによれば、ループ・キャッシュの先頭
は外側ループ66の先頭よりも内側ループ68の先頭に
対応する。これは、内側ループ68の先頭への逆方向分
岐が続けて2度発生することから生じるが、(内側ルー
プ68の逆方向分岐の1以上の事象が必ず外側ループ6
6の引き続く逆方向分岐の間に発生するので)外側ルー
プ66の先頭への逆方向分岐は続けて2度発生しない。
したがって、本発明のこの第2の実施の形態によるルー
プ・キャッシュ62’の内容は、図7の容量C62'を占
有するが、常に内側ループ68で始まりそれを含むが、
エピローグ66eの一部または全部も含むことができる
(さらに、外側ループ66を超える命令も含むことさえ
できる)。
【0057】図7を参照しながら、本発明のこの第2の
好適な実施の形態によるループ・キャッシュ62’の構
成について説明する。以下の説明から明らかになるよう
に、ループ・キャッシュ62’は、上で述べたように、
ループ・キャッシュ62内に含まれるものと類似したい
くつかの要素を含む。
【0058】ループ・キャッシュ62’は、中央処理ユ
ニット3の命令フェッチ・ユニット10から受信された
現在のフェッチ番地に依存して分岐キャッシュ・レジス
タ・ファイル176の(読出しまたは書込み)エントリ
にアクセスするように動作する。本発明の上述した実施
の形態におけるように、この例での分岐キャッシュ・レ
ジスタ・ファイル176は、N個のレジスタのインデッ
クスされたセットであり、各レジスタ場所またはエント
リが命令オプコードの完全な1キャッシュ・ラインを記
憶する。値Nは、ループ・キャッシュ62’によって実
施されるループ・テール・キャッシュの深さを意味す
る。本発明のこの第2の好適な実施の形態によれば、分
岐キャッシュ・レジスタ・ファイル176は、インデッ
クス・レジスタ182からインデックス値を受信するよ
うに結合された番地入力を有する。それに応答して、ル
ープ・キャッシュ制御論理174によってそれの制御入
力R/Wに供給される信号の制御下で、分岐キャッシュ
・レジスタ・ファイル176の1つのエントリが読出し
または書込みアクセスとして選ばれる。前と同じよう
に、分岐キャッシュ・レジスタ・ファイル176のデー
タ入力DはL1IデータRAM60からのオプコード・
データを受信し、また、分岐キャッシュ・レジスタ・フ
ァイル176のデータ出力Qはマルチプレクサ64の入
力へ供給され、それによって、選ばれたエントリの内容
が中央処理ユニット3へ提供される。
【0059】ループ・キャッシュ62’の次候補番地レ
ジスタ168は、フェッチ・ユニット10からフェッチ
番地を受信するデータ入力を有するとともに、比較器1
73の1つの入力および基準番地レジスタ170のデー
タ入力に結合された出力を有する。基準番地レジスタ1
70は、比較器172の入力に接続された出力を有す
る。次候補番地レジスタ168および基準番地レジスタ
170はそれぞれ、ループ・キャッシュ制御論理174
によって駆動される制御入力を有する(そのような接続
は図7には示されていない。)。比較器172,173
はそれぞれ、フェッチ・ユニット10からフェッチ番地
を直接受信する第2の入力を有する。したがって、比較
器172は現在のフェッチ番地を基準番地レジスタ17
0の現在の内容と比較し、他方、比較器173は現在の
フェッチ番地を次候補番地レジスタ168の現在の内容
と比較する。比較器172,173の出力は、ラインE
QF,EQN上をループ・キャッシュ制御論理174に
送られる。
【0060】フェッチ・ユニット10からの現在のフェ
ッチ番地は、現在のフェッチ番地が逆方向分岐であるか
どうかを判断する逆方向分岐検出論理178によっても
受信される。この判断の結果はラインBW上をループ・
キャッシュ制御論理174に送られる。逆方向分岐検出
論理178は、上述したように、図4のループ・キャッ
シュ62の逆方向分岐検出論理78と同様に構成され
る。あるいは、ラインBW上の信号は中央処理ユニット
3自身のフェッチ・ユニット10によっても発生され、
このことはループ・キャッシュ62’に逆方向分岐検出
論理178の必要性を排除するであろう。
【0061】以下に説明するように、ループ・キャッシ
ュ62’は、フェッチ・ユニット10からの現在のフェ
ッチ番地が前のフェッチ番地に対して順番になっている
かどうかに応答しても動作する。したがって、本発明の
この好適な実施の形態によれば、ループ・キャッシュ6
2’は、この決定を行うための逐次フェッチ検出論理1
80を含み、また、現在のフェッチ番地が前のフェッチ
番地からの順番で次にあたる場合には、ループ・キャッ
シュ制御論理174に供給される信号をラインSEQ上
にアサートする。逐次フェッチ検出論理180は、前の
フェッチ番地を記憶するためのレジスタを含み、そのレ
ジスタの内容と“1”だけ異なる現在のフェッチ番地
(すなわち、シーケンスになっている)との差に応答し
てラインSEQ上に信号を発生する組合せ論理を含むよ
うに、構築される。事実上は、逐次フェッチ検出論理1
80は次の関係の真に応答して信号をアサートする。 A−B=1 ここで、Aは現在のフェッチ番地を意味し、Bは前のフ
ェッチ番地を意味する。この式は、この比較を分かり易
くするために、次のように変形できる。 A+(−B)=1 ここで、−Bは、符号ビットを含む表現での前のフェッ
チ番地の2の補数(すなわち、算術的相補)である。も
ちろん、ディジタル値の負号を付けた2の補数表現は、
その値のビット的な補数とは“1”だけ異なる。言い換
えれば、この関係を次のように表すことができる。 A+(〜B+1)=1 ここで、〜Bは、前のフェッチ番地の1の補数(すなわ
ち、ビット的な補数)である。もちろん、この関係は次
のように変形できる。 A+〜B=0 言い換えれば、現在のフェッチ番地に前のフェッチ番地
のビット的な補数を加えたものがゼロ(すなわち、すべ
て“1”で表現された場合の負のゼロの2の補数)であ
る場合は、現在のフェッチ番地は前のフェッチ番地の次
に続く逐次番地である。1997年2月4日発行の本出
願と共通に譲渡されここに引用によって取り込まれる米
国特許第5,600,583号は、2つのディジタル値
の和がゼロに等しいかどうかを効率的に決定するための
論理回路について述べている。本発明のこの好適な実施
の形態による逐次フェッチ検出論理180は、この比較
を実行するように、上記米国特許第5,600,583
号で述べられたように構築されてもよい。
【0062】あるいは、中央処理ユニット3はそれ自身
でラインSEQ上へ信号を発生し、その信号は、ループ
・キャッシュ制御論理174に送られて、現在のフェッ
チ番地が前のフェッチ番地からのシーケンスで次の順番
であることを示す。
【0063】本発明のこの実施の形態によるループ・キ
ャッシュ62’は、ラインLD0上のループ・キャッシ
ュ制御論理174からのリセット入力を受信するインデ
ックス・レジスタ182をさらに含む。インデックス・
レジスタ182は、分岐キャッシュ・レジスタ・ファイ
ル176の番地入力に供給されるとともにその内容の問
合せのためにループ・キャッシュ制御論理174にも供
給される出力を有する。インデックス・レジスタ182
のこの出力は、加算器183の1つの入力にも提供され
る。加算器183は、その他方の入力に供給されたハー
ド配線された“1”(hardwired “1”)を有し、ま
た、インデックス・レジスタ182の入力に結合された
出力を有する。その結果、加算器183の各動作は、イ
ンデックス・レジスタ182の内容をインクリメントし
て、その内容を次のフェッチ番地動作に備えて更新す
る。ループ・キャッシュ制御論理174からの制御信号
(不図示)は、インデックス・レジスタ182における
値の記憶を制御する。
【0064】本発明のこの好適な実施の形態によるルー
プ・キャッシュ制御論理174は、分岐キャッシュ・レ
ジスタ・ファイル176の各エントリに関連する有効ビ
ットを記憶するための有効ビット・レジスタ175を含
む。各有効ビットは、セットされた場合に、分岐キャッ
シュ・レジスタ・ファイル176の関連するエントリの
内容が関連フェッチ番地に対する有効なオプコードを含
むことを示す。ループ・キャッシュ制御論理174はフ
ラグLFLAGも含む。フラグLFLAGは、セットさ
れた場合、基準番地レジスタ170に現在記憶されてい
る番地の最近のフェッチがループ・キャッシュ62’に
対する「ヒット」であったことを示す。
【0065】前と同じように、ループ・キャッシュ制御
論理174は、分岐キャッシュ・レジスタ・ファイル1
76の制御入力R/Wに供給される制御信号によって、
マルチプレクサ64(図2)の選択入力に供給されるラ
インSEL上の制御信号によって、また、次候補番地レ
ジスタ168,基準番地レジスタ170およびインデッ
クス・レジスタ182への値の記憶を制御することによ
って、ループ・キャッシュ62’の動作を制御する。上
述したループ・キャッシュ62の場合と同じように、ル
ープ・キャッシュ制御論理174はまた、ラインRD上
に制御信号を発行することによってL1IデータRAM
60の読出しを許可および禁止する。ループ・キャッシ
ュ制御論理174は、本明細書を参照した当業者によっ
て、例えば図8に関して説明するようにループ・キャッ
シュ62’の動作を実行するのに適した組合せ論理また
は逐次論理を用いて容易に実現できることが考えられ
る。
【0066】この説明の目的のために、ループ・キャッ
シュ62’の動作について、レジスタ175において有
効ビットがすべてクリアされるとともにフラグLFLA
Gもクリアされた初期状態から説明する。この状態は、
分岐キャッシュ・レジスタ・ファイル176に有効なオ
プコードが何も記憶されておらず、また、例えばリセッ
ト後の第1のプログラムの最初の実行において逆方向分
岐命令がまだ実行されていない状態に対応する。以下の
説明から明らかなように、この状態は、事実上、ループ
から脱出して再び入らないであろう状態に対応する。ル
ープ・キャッシュ62’の動作についての以下の説明
は、分岐キャッシュ・レジスタ・ファイル176のロー
ディングとそれに続く分岐キャッシュ・レジスタ・ファ
イル176からの命令の実行とを含む1つの例示シーケ
ンスについて行う。
【0067】工程184では、新しいフェッチ番地が、
中央処理ユニット3の命令フェッチ・ユニット10から
ループ・キャッシュ62’によって受信される。図7に
示すように、この新しいフェッチ番地は、次候補番地レ
ジスタ168によって(しかし、それには未だロードさ
れない)、比較器172の1つの入力によって、(中央
処理ユニット3自身が逆方向分岐および逐次フェッチ制
御信号をラインBW,SEQ上にそれぞれ発生しないこ
の例では)逆方向分岐検出論理178および逐次フェッ
チ検出論理180によって、受信される。
【0068】次に、ループ・キャッシュ62’は、逆方
向分岐検出論理178の動作を通して、または、中央処
理ユニット3からラインBW上の信号を受信することに
よって判定185を実行して、現在のフェッチ番地が逆
方向分岐を表しているかどうかを判定する。そうでなけ
れば(判定185が否定)、ループ・キャッシュ制御論
理174によって受信されるラインBW上の不活動(in
active)信号によって示されるように、制御は判定18
7に移動する。比較器172は、現在のフェッチ番地を
基準番地レジスタ170の現在の内容と比較し、2つの
番地が等しければラインEQF上に活動(active)信号
をアサートする。ループ・キャッシュ制御論理174
は、レジスタ175のエントリ“0”に関連する有効ビ
ットの状態とともに、比較器172からのラインEQF
の状態を調べる。ラインEQFが不活動であるかエント
リ“0”に対する有効ビットがクリアであれば(判定1
87が否定)、現在のフェッチ番地は、それの内容が有
効である分岐キャッシュ・レジスタ・ファイル176の
基準番地に対応していない。この場合には、制御は判定
189に移動する。
【0069】上述したように、逐次フェッチ検出論理1
80は、現在のフェッチ番地を受信するとともに、その
フェッチ番地が前のフェッチ番地と順番になっているか
どうかを判断し、そうであればラインSEQをアサート
する。判定189は、逐次フェッチ検出論理180から
(または、中央処理ユニット3によって発生されるので
あれば、そこから)のラインSEQの状態を問合せする
ループ・キャッシュ制御論理174によって、また、フ
ラグLFLAGの状態およびインデックス・レジスタ1
82の内容を問合せすることによって、実行される。現
在のフェッチ番地が逐次フェッチでない(ラインSEQ
が不活動)か、フラグLFLAGがクリアであるか、イ
ンデックス・レジスタ182の内容が分岐キャッシュ・
レジスタ・ファイル176の容量Nよりも大きいか等し
ければ、判定189は否定の結果を戻す。これは、ルー
プ・キャッシュ62’のキャッシュ・ミスの事象に対応
する。次に、工程190が、ラインRD上の活動信号を
介してL1IデータRAM60の読出しを許可するルー
プ・キャッシュ制御論理174によって実行される。ル
ープ・キャッシュ制御論理174は、ラインSEL上に
適当な信号を発行することによって、マルチプレクサ6
4にL1IデータRAM60の出力をフェッチされたオ
プコードとして使用させる。ループ・キャッシュ制御論
理174は、フラグLFLAG177をクリアして、最
後のフェッチ番地がミスに対応したことを表示する。次
に、制御は、次のフェッチ番地を受信する工程184に
戻る。
【0070】逆方向分岐であるフェッチ番地を受信する
と(判定185が肯定)、ループ・キャッシュ制御論理
174は、判定191を実行して、現在のフェッチ番地
が基準番地170の内容に等しいかどうかを判断すると
ともに、レジスタ175の有効ビットがインデックス値
“0”(すなわち、基準番地)に対してセットされてい
るかどうかを判断する。これらの条件のいずれかが成立
しなければ(すなわち、判定191が否定)、制御は判
定193に進む。説明のために、上述したように、本発
明のこの第2の好適な実施の形態によるループ・キャッ
シュ62’によって実現されるループ・テール・キャッ
シュ法は、事実上、ループを通る二度目のパスによって
のみ分岐キャッシュ・レジスタ・ファイル176をロー
ドする。図8に示す動作方法では、判定191は、判定
185によって判定された逆方向分岐の第1および第2
の事象のそれぞれに対して否定の結果を戻し、また、以
下の説明から明らかなように、この逆方向分岐の第3お
よび後続の事象に対して肯定の結果を戻す。
【0071】図7を参照すると、比較器173は、次候
補番地レジスタ168の内容を現在のフェッチ番地と比
較して、2つの値が等しいときにはラインEQN上に活
動信号を発行する。ラインEQNの状態は判定193
(図8)においてループ・キャッシュ制御論理174に
よって調べられる。現在のフェッチ番地によって示され
る逆方向分岐が初めて発生する場合には、現在のフェッ
チ番地は次候補番地レジスタ168の内容とは等しくな
く、したがって、判定193は否定の結果を戻す。次
に、制御は工程194へ進み、そこでは、ループ・キャ
ッシュ制御論理174は次候補番地レジスタ168に現
在のフェッチ番地を記憶させる。これは、事実上、(ル
ープが二番目に実行されれば)分岐キャッシュ・レジス
タ・ファイル176にそれのシーケンスを記憶できる候
補として現在のフェッチ番地を確立する。現在のフェッ
チ番地に対する命令オプコードはラインRD,SEL上
への信号のアサートによってL1IデータRAM60か
ら読み出されてフェッチ・ユニット10に供給されるこ
とを許され、また、フラッグLFLAGもクリアされ
る。これらはいずれも工程194において行われる。次
に、制御は、再び工程184に進み、次のフェッチ番地
を待つ。
【0072】候補のフェッチ番地に続く介在番地が順番
にフェッチされる限り、フェッチは(工程190を介し
て)L1IデータRAM60から行われ続けるであろ
う。逆方向分岐の二番目の引き続く事象が受信されると
(判定185が肯定)、それに対するフェッチ番地はま
だ基準番地に等しくないが(判定191が否定)、次候
補番地レジスタ168の内容に等しく、比較器173は
ラインEQN上に活動信号を発行し、その場合、判定1
93は肯定の結果を戻す。次に、制御は工程196へ進
み、そこでは、ループ・キャッシュ制御論理174がこ
の逆方向分岐の二番目の事象のフェッチに応答する。も
ちろん、逆方向分岐の第1の事象と第2の事象との間で
異なる逆方向分岐が検出されたとすると、介在する逆方
向分岐フェッチ番地は次候補番地レジスタ168に記憶
されるので、二番目の事象はそれが最初の事象であるか
のように扱われる(判定193は否定を戻す)。
【0073】工程196では、ループ・キャッシュ制御
論理174が、次候補番地レジスタ168の内容に等し
い現在のフェッチ番地を基準番地レジスタ170に記憶
させる。ループ・キャッシュ制御論理174はまた、ラ
インLD0上に活動信号を発行し、インデックス・レジ
スタ182の内容をゼロにリセットする(そして、ゼロ
・インデックス値を分岐キャッシュ・レジスタ・ファイ
ル176の番地入力に供給する)。レジスタ175で
は、エントリ“0”に対する有効ビットがセットされ
(それの内容は正しいオプコードとともに書き込まれる
であろう)、その他すべてのエントリに対する有効ビッ
トはクリアされる。L1IデータRAM60の現在のフ
ェッチ番地に対応するメモリ場所が読み出され(ライン
RDは活動的)、それの内容は制御入力R/Wにおける
読出し制御信号と一緒に分岐キャッシュ・レジスタ・フ
ァイル176のデータ入力に供給され、このオプコード
は分岐キャッシュ・レジスタ・ファイル176の0番目
のエントリに記憶される。ループ・キャッシュ制御論理
174は、ラインSEL上へ適当な信号を発行すること
によって、マルチプレクサ64にL1IデータRAM6
0の出力をフェッチされたオプコードとして使用させ
る。フラグLFLAGがセットされ、このループが今は
ループ・キャッシュ62’のヒットに対応するであろう
ことを表す。次に、加算器183は、工程184におけ
る次のフェッチ番地に備えてインデックス・レジスタ1
82の内容をインクリメントする。
【0074】二度受信された逆方向分岐への逐次命令に
対する(すなわち、ループ内のそれらの命令に対する)
フェッチ番地を受信すると、判定185,187は否定
の結果を戻し(それらの番地は、逐次的であるが、基準
番地レジスタ170に現在記憶されている番地(逆方向
分岐番地)ではない)。しかし、(工程196から)フ
ラグLFLAGがセットされたままループのそれらのフ
ェッチ番地は順番になっている(ラインSEQは活動的
である)ので、フェッチ番地が分岐キャッシュ・レジス
タ・ファイル176の容量内にある限り(インデックス
・レジスタ182の内容はNよりも小さい)、判定18
9は肯定結果を戻すであろう。次に、ループ・キャッシ
ュ制御論理174は、判定199で、現在のインデック
ス値に対応するレジスタ175の有効ビットを問い合せ
て、分岐キャッシュ・レジスタ・ファイル176の対応
するエントリが現在のフェッチ番地に対する有効なオプ
コードを含んでいるかどうかを判定する。ループを通る
この二度目のパスの場合のようにそうでなければ(判定
199が否定)、制御は工程200に進み、そこでは、
現在のインデックス値に対するレジスタ175の有効ビ
ットがセットされる。現在のフェッチ番地に対応するL
1IデータRAM60の内容が読み出されて(ラインR
Dは活動的)、中央処理ユニット3に供給され(ライン
SELがマルチプレクサ64にL1IデータRAM60
を選択させる)、分岐キャッシュ・レジスタ・ファイル
176の対応するエントリにロードされる。次に、イン
デックス・レジスタ182は、工程184で受信された
次のフェッチ番地に備えて、加算器183によってイン
クリメントされる。
【0075】次に、このシーケンスは、非逐次フェッチ
によってか分岐キャッシュ・レジスタ・ファイル176
の容量を超えるループ長によってループを脱出する(す
なわち、判定189が否定)まで、または、逆方向分岐
命令が検出される(判定185が肯定)まで、ループの
残りに対して繰り返され、分岐キャッシュ・レジスタ・
ファイル176にオプコードをロードする。逆方向分岐
が検出され、検出された分岐が分岐キャッシュ・レジス
タ・ファイル176にループが記憶された逆方向分岐と
同じ逆方向分岐である場合には、セットされた有効ビッ
ト“0”に対する基準番地レジスタ170の内容と等し
い現在のフェッチ番地によって決まるように、判定19
1は肯定結果を戻す。次に、制御は工程198に進み、
そこでは、次候補番地レジスタ168が現在のフェッチ
番地値をロードする(または、場合によっては再ロード
する)。この動作は、2つの引き続く異なる逆方向分岐
を除いて分岐キャッシュ・レジスタ・ファイル176の
再ロードを排除する。また、現在の逆方向分岐が再び先
頭から始まるので、インデックス・レジスタ182はゼ
ロにリセットされて、ループの先頭におけるフェッチの
ために正しい番地を分岐キャッシュ・レジスタ・ファイ
ル176に提供する。次に、制御入力R/Wでの読出し
制御信号のアサートによって分岐キャッシュ・レジスタ
・ファイル176のこの0番目のエントリが読み出さ
れ、それの出力がマルチプレクサ64に供給されて、ル
ープ・キャッシュ制御論理174からのラインSEL上
の信号の制御下で選択される。電力消費を節約するため
に、ループ・キャッシュ制御論理174は、ラインRD
をデアサート(deassert)することによってL1Iデー
タRAM60の読出し動作を禁止する。また、必要であ
れば、L1IタグRAM54にも同様な禁止信号を供給
して、それに対する読出しを阻止することによって付加
的な電力を節約する。工程174は、フラグLFLAG
が(それまでにセットされていなければ)セットされる
とともに、工程184で受信される次のフェッチ番地に
備えて加算器183がインデックス・レジスタ182の
内容をインクリメントすることによって、終了する。
【0076】次に、記憶されたループでの命令の引き続
くフェッチは、L1IデータRAM60でなくて分岐キ
ャッシュ・レジスタ・ファイル176から行なわれる。
これらのフェッチは逆方向分岐ではなく(判定185が
否定)、また、ループの先頭からでもない(判定187
が否定)が、フラグLFLAGがセットされた逐次フェ
ッチであるので、フェッチが分岐キャッシュ・レジスタ
・ファイル176の容量内にある限り、判定189は肯
定の結果を戻す。分岐キャッシュ・レジスタ・ファイル
176はレジスタ175の有効ビットがセットされたそ
れらの命令をロードされるため、判定199は肯定の結
果を戻し、制御は工程202に進む。この場合、ループ
・キャッシュ制御論理174は、インデックス・レジス
タ182の現在の内容に対応するエントリから分岐キャ
ッシュ・レジスタ・ファイル176からのオプコードの
読出しを実行する一方で、L1IデータRAM60が読
み出しを行うことを禁止する。マルチプレクサ64も、
中央処理ユニット3にオプコードを供給するために分岐
キャッシュ・レジスタ・ファイル176の出力を選択す
るように制御される。インデックス・レジスタ182の
内容は再びインクリメントされて、工程184での次の
フェッチ番地を待つ。
【0077】本発明のこの第2の好適な実施の形態によ
るループ・キャッシュ62’の動作はまた、1つのルー
プが少なくとも2度実行された場合に分岐キャッシュ・
レジスタ・ファイル176からの命令のフェッチを許可
するが、次には逐次モードに入る(そして、逆方向分岐
からではなく、否定の結果を戻す判定185から)。こ
れは、レジスタ175のエントリ“0”に対する有効ビ
ットがセットされた基準番地レジスタ170の内容に等
しいフェッチ番地の任意の命令に対して制御を工程19
8に渡して逆方向分岐からループに入ったものでない場
合でも分岐キャッシュ・レジスタ・ファイル176から
のオプコードのフェッチを実行する判定187の動作に
よって、発生する。動作はこの時点から上述した方法で
順方向に続く。
【0078】本発明の第1の実施の形態によるループ・
キャッシュ62の場合のように、本発明のこの第2の好
適な実施の形態によるループ・キャッシュ62’の動作
は、ディジタル信号プロセッサやマイクロプロセッサの
ようなプログラマブル論理装置の動作に大きな利点を提
供する。特に、オプコード・フェッチが高次のキャッシ
ュ・メモリからではなくてレジスタ・ファイルから行な
われる点で、ループの実行時に顕著な電力削減が得られ
ることが考えられる。また、オプコードを含むレジスタ
・ファイルは適当な時点でロードされるだけでよく、特
別な反復ブロック命令は必要でない。
【0079】また、本発明のこの第2の好適な実施の形
態によるループ・テール・キャッシュは、本発明の第1
の好適な実施の形態のループ・フロント・キャッシュ方
式に従って発生できる「スラッシング(thrashing)」
(すなわち、ループ・キャッシュの反復および非効率的
再ロード)の可能性を低減する。さらに、分岐キャッシ
ュ・レジスタ・ファイルは一度実行されるだけのループ
に対するオプコードをロードされない。もちろん、ルー
プ・テール・キャッシュは、分岐キャッシュ・レジスタ
・ファイルをロードするためにループを通る付加的パス
を必要とするが、多くのコード・シーケンス(特に、D
SPによって実行されるそれら)は多数回実行されるル
ープを利用すると考えられており、したがって、この付
加的パスが本発明の利点を大幅に制約することはないと
考えられる。
【0080】したがって、本発明はプログラマブル装置
に重要な電力節約を提供すると考えられる。例えば、一
組のDSPベンチマークに従うシミュレーションによれ
ば、ループ・フロント・キャッシュに従う32キャッシ
ュ・ライン・エントリ・レジスタ・ファイルに対するヒ
ット率は平均で85%程度であり、他方、ループ・テー
ル・キャッシュに対するヒット率は平均で80%程度で
あり、ループ・テール・キャッシュがより小型のレジス
タ・ファイルに対するより高いヒット率を示すことが分
かった。
【0081】本発明はそれの好適な実施の形態に従って
説明されたが、これらの実施の形態に対する修正および
代替が可能であることが考えられる。本明細書を添付図
面と一緒に参照すれば、本発明の特徴および利点を得る
ためのそのような修正や代替が当業者には明らかであろ
う。そのような修正および代替は本発明の特許請求の範
囲に請求する本発明のスコープに包含されると理解され
るべきである。
【0082】以上の説明に関して更に以下の項を開示す
る。 (1)命令プログラマブル・プロセッサであって、命令
オプコードを記憶するためのプログラム・メモリと、中
央処理ユニットであって、データ処理命令を実行するた
めの1以上の実行ユニットを含み、前記プログラム・メ
モリにフェッチ番地を供給して該フェッチ番地に対応す
る命令オプコードをそこからフェッチするための命令フ
ェッチ・ユニットを含む、中央処理ユニットと、前記命
令フェッチ・ユニットに結合されたループ・キャッシュ
であって、基準フェッチ番地を記憶するための基準番地
レジスタと、分岐キャッシュ・レジスタ・ファイルであ
って、前記基準フェッチ番地から始まるフェッチ番地の
シーケンスに対応する命令コードを記憶するための複数
の記憶場所を有し、データ出力を有する、分岐キャッシ
ュ・レジスタ・ファイルと、マルチプレクサであって、
前記プログラム・メモリの出力に結合された第1の入力
を有し、前記分岐キャッシュ・レジスタ・ファイルの前
記データ出力に結合された第2の入力を有し、選択入力
を有し、前記中央処理ユニットの前記命令フェッチ・ユ
ニットに結合された出力を有する、マルチプレクサと、
ループ・キャッシュ制御論理であって、前記プログラム
・メモリの制御入力に結合された第1の制御出力を有
し、前記マルチプレクサの前記選択入力に結合された第
2の制御出力を有し、前記分岐キャッシュ・レジスタ・
ファイルに記憶されている前記命令コードの1つに対応
する前記フェッチ番地に応答して、前記分岐キャッシュ
・レジスタ・ファイルの出力を選択するように前記マル
チプレクサを制御し前記プログラム・メモリの読出しを
禁止する、ループ・キャッシュ制御論理と、を含む、ル
ープ・キャッシュと、を具備する、命令プログラマブル
・プロセッサ。
【0083】(2)前記ループ・キャッシュ制御論理
が、前記分岐キャッシュ・レジスタ・ファイルに結合さ
れた、それへの書込みおよびそれからの読出しを制御す
るための第3の制御出力を有し、前記プログラム・メモ
リの出力が、前記分岐キャッシュ・レジスタ・ファイル
のデータ入力にも結合されており、前記ループ・キャッ
シュ制御論理が、フェッチ番地が逆方向分岐に対応する
ことを示す逆方向分岐信号を受信するための入力も有
し、前記ループ・キャッシュ制御論理が、前記分岐キャ
ッシュ・レジスタ・ファイルに記憶された前記命令コー
ドの1つに対応しない前記フェッチ番地と組み合わせて
逆方向分岐信号を受信することに応答して前記プログラ
ム・メモリからそれのデータ入力で受信された命令コー
ドを記憶するように前記分岐キャッシュ・レジスタ・フ
ァイルを制御する、第1項記載のプロセッサ。
【0084】(3)逆方向分岐検出論理であって、前の
フェッチ番地を記憶するためのラスト・フェッチ・レジ
スタと、現在のフェッチ番地を前記ラスト・フェッチ・
レジスタの内容と比較するための比較器とを含み、該比
較器が、前記前のフェッチ番地によりも小さいか等しい
前記現在のフェッチ番地に応答して前記逆方向分岐信号
を発生するための出力を有する、逆方向分岐検出論理を
さらに具備する、第2項記載のプロセッサ。
【0085】(4)インデックス比較器であって、前記
基準番地レジスタに結合された第1の入力を有し、前記
命令フェッチ・ユニットに結合されてそこから前記フェ
ッチ番地を受信するための第2の入力を有し、前記分岐
キャッシュ・レジスタ・ファイルの番地入力および前記
ループ・キャッシュ制御論理に結合された出力を有し、
前記フェッチ番地と前記基準フェッチ番地との差に対応
するインデックス値を提供する、インデックス比較器を
さらに具備する、第2項記載のプロセッサ。
【0086】(5)有効ビット・レジスタであって、複
数のビット位置を含み、該複数のビット位置の各々が、
前記分岐キャッシュ・レジスタ・ファイルの前記記憶場
所の1つに関連し、前記分岐キャッシュ・レジスタ・フ
ァイルのそれに関連する記憶場所の内容が有効な命令コ
ードを含むかどうかを示す、有効ビット・レジスタをさ
らに具備する、第4項記載のプロセッサ。
【0087】(6)前記分岐キャッシュ・レジスタ・フ
ァイルに記憶された前記命令コードの1つに対応しない
前記フェッチ番地と組み合わせて逆方向分岐信号を受信
する前記ループ・キャッシュ制御論理に応答してフェッ
チ番地を記憶するための次候補レジスタをさらに具備
し、前記基準番地レジスタが、前記次候補レジスタに結
合され、該次候補レジスタの内容に対応する前記フェッ
チ番地と組み合わせて逆方向分岐信号を受信する前記ル
ープ・キャッシュ制御論理に応答して前記次候補レジス
タの内容を基準フェッチ番地として記憶し、前記ループ
・キャッシュ制御論理が、前記次候補レジスタの内容に
対応する前記フェッチ番地と組み合わせて逆方向分岐信
号を受信することに応答して、前記プログラム・メモリ
からそれのデータ入力で受信された命令コードを記憶す
るように前記分岐キャッシュ・レジスタ・ファイルを制
御する、第2項記載のプロセッサ。
【0088】(7)インデックス・レジスタであって、
前記分岐キャッシュ・レジスタ・ファイルの番地入力に
結合された出力を有し、前記ループ・キャッシュが各フ
ェッチ番地を受信すると前記インデックス・レジスタの
内容をインクリメントするためのインクリメンターに結
合された、インデックス・レジスタと、有効ビット・レ
ジスタであって、複数のビット位置を含み、該複数のビ
ット位置の各々が、前記分岐キャッシュ・レジスタ・フ
ァイルの前記記憶場所の1つに関連し、前記分岐キャッ
シュ・レジスタ・ファイルのそれに関連する記憶場所の
内容が有効な命令コードを含むかどうかを示す、有効ビ
ット・レジスタと、をさらに具備し、前記ループ・キャ
ッシュ制御論理が、前記命令フェッチ・ユニットからの
前記フェッチ番地が前のフェッチ番地と順番になってい
ることを示す逐次フェッチ信号を受信するための入力も
有し、前記ループ・キャッシュ制御論理が、前記逐次フ
ェッチ信号を受信するのに応答して、また、前記インデ
ックス・レジスタの内容に対応する前記記憶場所が有効
な命令コードを含まないことを示す前記有効ビット・レ
ジスタの前記ビット位置に応答して、前記インデックス
・レジスタの内容によって指示される記憶場所に、前記
プログラム・メモリからそれのデータ入力で受信された
命令コードを記憶するように前記分岐キャッシュ・レジ
スタ・ファイルを制御する、第6項記載のプロセッサ。
【0089】(8)前記ループ・キャッシュ制御論理
が、前記逐次フェッチ信号を受信することに応答して、
また、前記インデックス・レジスタの内容に対応する前
記記憶場所が有効な命令コードを含むことを示す前記有
効ビット・レジスタの前記ビット位置に応答して、前記
インデックス・レジスタの内容によって指示される記憶
場所の内容をそれの出力で提供するように前記分岐キャ
ッシュ・レジスタ・ファイルを制御する、第7項記載の
プロセッサ。
【0090】(9)前記プログラム・メモリが、1次の
命令メモリであって、前記ループ・キャッシュ制御論理
に結合された読出し制御入力を有し、前記マルチプレク
サに結合されたデータ出力を有する、1次の命令メモリ
と、該1次の命令メモリが命令コードを記憶するメモリ
場所に対応するタグ番地を記憶するための1次のタグ・
メモリと、1次のタグ比較器であって、前記フェッチ命
令ユニットから前記フェッチ番地を受信するための入力
を有し、前記1次のタグ・メモリに結合された入力を有
し、前記フェッチ番地を前記タグ番地と比較して前記1
次の命令メモリが有効な命令コードを記憶するメモリ場
所に前記フェッチ番地が対応するかどうかを判断する、
1次のタグ比較器と、を含む、第1項記載のプロセッ
サ。
【0091】(10)前記プログラム・メモリが、前記
1次の命令メモリに結合された、命令コードを記憶する
ための2次のキャッシュをさらに含む、第9項記載のプ
ロセッサ。 (11)前記プログラム・メモリおよび前記2次のキャ
ッシュが、前記中央処理ユニットと同じ集積回路上に位
置されている、第9項記載のプロセッサ。
【0092】(12)1次のプログラム・キャッシュ・
メモリおよび命令バッファ・サブシステムを有する、デ
ィジタル信号プロセッサのような命令プログラマブル・
プロセッサを含む電子システムが、開示されている。1
次のプログラム・キャッシュ・メモリおよび命令バッフ
ァ・サブシステムは、タグRAM(54)およびタグ比
較器(52)と組み合わせたプログラム・データ・ラン
ダム・アクセス・メモリ(RAM)(60)と、プログ
ラム・データRAM(60)と並列なループ・キャッシ
ュ・サブシステム(62)とを含む。命令フェッチ・ユ
ニットは、フェッチ番地をタグ比較器(52)およびル
ープ・キャッシュ・サブシステム(62)に供給する。
ループ・キャッシュ・サブシステム(62)は、基準番
地から始まるフェッチ番地のシーケンスに対応する命令
オプコードを記憶するための分岐キャッシュ・レジスタ
・ファイルを含む。命令フェッチ・ユニットによって発
行されたフェッチ番地がループ・キャッシュ・サブシス
テム(62)に対してヒットであれば、ループ・キャッ
シュ制御論理は、分岐キャッシュ・レジスタ・ファイル
へのアクセスすることを捨ててプログラム・データRA
M(60)からの読出しを禁止する。1つの開示された
実施の形態によれば、分岐キャッシュ・レジスタ・ファ
イルは、分岐キャッシュ・レジスタ・ファイルに対して
ミスである各逆方向分岐から始まるオプコードをロード
される。開示された別の実施の形態によれば、分岐キャ
ッシュ・レジスタ・ファイルは、分岐キャッシュ・レジ
スタ・ファイルに対してミスであるとともに引き続いて
二度実行された逆方向分岐から始まるオプコードをロー
ドされる。
【図面の簡単な説明】
【図1】本発明の好適な実施の形態に従って構築された
ディジタル信号プロセッサ・ベース・システムの電気回
路ブロック図である。
【図2】本発明の好適な実施の形態による図1のディジ
タル信号プロセッサの1次命令キャッシュおよび命令バ
ッファ機能の電気回路ブロック図である。
【図3】本発明の第1の好適な実施の形態による図2の
1次命令キャッシュおよび命令バッファ機能の分岐キャ
ッシュ・レジスタ・ファイル内に含まれるプログラム・
メモリの部分を示す命令シーケンスのメモリ・マップで
ある。
【図4】本発明の第1の好適な実施の形態によるループ
・キャッシュの構成を示す電気回路ブロック図である。
【図5】本発明の第1の好適な実施の形態による図4の
ループ・キャッシュの動作を示すフロー図である。
【図6】本発明の第2の実施の形態による図2の1次命
令キャッシュおよび命令バッファ機能の分岐キャッシュ
・レジスタ・ファイル内に含まれるプログラム・メモリ
の部分を示す命令シーケンスのメモリ・マップである。
【図7】本発明の第2の好適な実施の形態によるループ
・キャッシュの構成を示す電気回路ブロック図である。
【図8】本発明の第2の好適な実施の形態による図7の
ループ・キャッシュの動作を示すフロー図である。
【符号の説明】
2 ディジタル信号プロセッサ 3 中央処理ユニット 5 拡張DMAコントローラ 6 パワーダウン論理 8 マルチチャンネル・バッファード・シリアル・ポー
ト 7 ホスト・ポート・インタフェース 10 命令フェッチ・ユニット 11 命令ディスパッチ・ユニット 12 命令デコード・ユニット 13 制御レジスタ 14 制御論理 15 試験論理 16 エミュレーション論理 17 割込論理 22〜25 機能実行ユニット 32〜35 機能実行ユニット 36 L1Iデータ・キャッシュ 38 命令バッファ・システム 40 L1Iキャッシュおよび命令バッファ・システム 41 プログラマブル・タイマー 42 外部RAM 44 入出力デバイス 52 タグ比較器 54 L1IタグRAM 58 L1I制御論理 60 L1IデータRAM 62 ループ・キャッシュ 64 マルチプレクサ 66 外側ループ 68 内側ループ 70 基準番地レジスタ 72 加算器 74 ループ・キャッシュ制御論理 75 レジスタ 76 分岐キャッシュ・レジスタ・ファイル 78 逆方向分岐検出論理 79 ラスト・フェッチ・レジスタ 168 次候補番地レジスタ 170 基準番地レジスタ 172 比較器 173 比較器 174 ループ・キャッシュ制御論理 176 分岐キャッシュ・レジスタ・ファイル 178 逆方向分岐検出論理 180 逐次フェッチ検出論理 182 インデックス・レジスタ 183 加算器

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 命令プログラマブル・プロセッサであっ
    て、 命令オプコードを記憶するためのプログラム・メモリ
    と、 中央処理ユニットであって、データ処理命令を実行する
    ための1以上の実行ユニットを含み、前記プログラム・
    メモリにフェッチ番地を供給して該フェッチ番地に対応
    する命令オプコードをそこからフェッチするための命令
    フェッチ・ユニットを含む、中央処理ユニットと、 前記命令フェッチ・ユニットに結合されたループ・キャ
    ッシュであって、 基準フェッチ番地を記憶するための基準番地レジスタ
    と、 分岐キャッシュ・レジスタ・ファイルであって、前記基
    準フェッチ番地から始まるフェッチ番地のシーケンスに
    対応する命令コードを記憶するための複数の記憶場所を
    有し、データ出力を有する、分岐キャッシュ・レジスタ
    ・ファイルと、 マルチプレクサであって、前記プログラム・メモリの出
    力に結合された第1の入力を有し、前記分岐キャッシュ
    ・レジスタ・ファイルの前記データ出力に結合された第
    2の入力を有し、選択入力を有し、前記中央処理ユニッ
    トの前記命令フェッチ・ユニットに結合された出力を有
    する、マルチプレクサと、 ループ・キャッシュ制御論理であって、前記プログラム
    ・メモリの制御入力に結合された第1の制御出力を有
    し、前記マルチプレクサの前記選択入力に結合された第
    2の制御出力を有し、前記分岐キャッシュ・レジスタ・
    ファイルに記憶されている前記命令コードの1つに対応
    する前記フェッチ番地に応答して、前記分岐キャッシュ
    ・レジスタ・ファイルの出力を選択するように前記マル
    チプレクサを制御し前記プログラム・メモリの読出しを
    禁止する、ループ・キャッシュ制御論理と、を含む、ル
    ープ・キャッシュと、 を具備する、命令プログラマブル・プロセッサ。
JP2000362477A 1999-11-30 2000-11-29 命令ループ・バッファ Pending JP2001195302A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US168260 1988-03-15
US16826099P 1999-11-30 1999-11-30

Publications (1)

Publication Number Publication Date
JP2001195302A true JP2001195302A (ja) 2001-07-19

Family

ID=22610771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000362477A Pending JP2001195302A (ja) 1999-11-30 2000-11-29 命令ループ・バッファ

Country Status (3)

Country Link
EP (1) EP1107110B1 (ja)
JP (1) JP2001195302A (ja)
DE (1) DE60027395T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014013565A (ja) * 2012-06-15 2014-01-23 Apple Inc ループバッファ学習
KR101496009B1 (ko) * 2012-06-15 2015-02-25 애플 인크. 루프 버퍼 패킹
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7360023B2 (en) 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US9772851B2 (en) * 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
US9183155B2 (en) * 2013-09-26 2015-11-10 Andes Technology Corporation Microprocessor and method for using an instruction loop cache thereof
CN108845832B (zh) * 2018-05-29 2023-05-30 西安微电子技术研究所 一种提高处理器主频的流水线细分装置
CN112230992B (zh) * 2019-07-15 2023-05-23 杭州中天微系统有限公司 一种包含分支预测循环的指令处理装置、处理器及其处理方法
CN117524287B (zh) * 2024-01-04 2024-03-22 合肥奎芯集成电路设计有限公司 内存芯片自测试电路和内存芯片自测试方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69718278T2 (de) * 1996-10-31 2003-08-21 Texas Instruments Inc Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US5920890A (en) * 1996-11-14 1999-07-06 Motorola, Inc. Distributed tag cache memory system and method for storing data in the same

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014013565A (ja) * 2012-06-15 2014-01-23 Apple Inc ループバッファ学習
KR101496009B1 (ko) * 2012-06-15 2015-02-25 애플 인크. 루프 버퍼 패킹
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold

Also Published As

Publication number Publication date
DE60027395D1 (de) 2006-05-24
DE60027395T2 (de) 2007-02-01
EP1107110A3 (en) 2003-05-07
EP1107110B1 (en) 2006-04-19
EP1107110A2 (en) 2001-06-13

Similar Documents

Publication Publication Date Title
US7257679B2 (en) Sharing monitored cache lines across multiple cores
KR100260864B1 (ko) 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법
US7430642B2 (en) System and method for unified cache access using sequential instruction information
US5805907A (en) System and method for reducing power consumption in an electronic circuit
JPH10154098A (ja) キャッシュを有するデータ処理システムおよびそのための方法
US20040205326A1 (en) Early predicate evaluation to reduce power in very long instruction word processors employing predicate execution
EP2097809B1 (en) Methods and apparatus for low-complexity instruction prefetch system
EP2495662B1 (en) Configurable cache for a microprocessor
US5920890A (en) Distributed tag cache memory system and method for storing data in the same
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
JP2001195302A (ja) 命令ループ・バッファ
US6823430B2 (en) Directoryless L0 cache for stall reduction
US6963965B1 (en) Instruction-programmable processor with instruction loop cache
KR100977687B1 (ko) 기지의 프로세서 상태에 기초하여 cam 리네이밍레지스터 파일 내의 비교기를 선택적으로 인에이블링하는절전 방법 및 장치
US20040003298A1 (en) Icache and general array power reduction method for loops
US5974505A (en) Method and system for reducing power consumption of a non-blocking cache within a data processing system
US8429383B2 (en) Multi-processor computing system having a JAVA stack machine and a RISC-based processor
US9043507B2 (en) Information processing system
US6963988B2 (en) Fixed point unit power reduction mechanism for superscalar loop execution
US5717891A (en) Digital signal processor with caching of instructions that produce a memory conflict
JPH11184752A (ja) データ処理装置及びデータ処理システム
JP3048979B2 (ja) 電子回路内の電力消費を減少させる方法及びシステム
JP3048978B2 (ja) 電子回路内の電力消費を減少させる方法及びシステム
KR100416858B1 (ko) 명령어 처리장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080513

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080813

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080818

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081107