JP4057114B2 - キャッシュを有するデータ処理システムおよびそのための方法 - Google Patents
キャッシュを有するデータ処理システムおよびそのための方法 Download PDFInfo
- Publication number
- JP4057114B2 JP4057114B2 JP30959897A JP30959897A JP4057114B2 JP 4057114 B2 JP4057114 B2 JP 4057114B2 JP 30959897 A JP30959897 A JP 30959897A JP 30959897 A JP30959897 A JP 30959897A JP 4057114 B2 JP4057114 B2 JP 4057114B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- cache
- loop
- instructions
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 35
- 238000000034 method Methods 0.000 title description 10
- 230000015654 memory Effects 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 230000004913 activation Effects 0.000 claims description 3
- 230000009849 deactivation Effects 0.000 claims 1
- 230000008859 change Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、一般的にデータ処理に関し、更に特定すれば、データ処理システムにおけるキャッシュおよびそのための方法に関するものである。
【0002】
【従来の技術】
マイクロプロセッサおよびマイクロコントローラの設計における電力消費削減は、携帯用およびハンドへルド用途の幅広い普及のために、重要性を獲得している。典型的な埋め込み制御システムは、通常、中央演算装置(CPU),ならびに多種多様のメモリおよび周辺素子を含む。異なるタイプのメモリが、マイクロコントローラを有する集積回路外部、および/または同一集積回路上に設けられることがあり、キャッシュ・メモリ,ROM(リード・オンリ・メモリ),および種々のSRAM(スタティック・ランダム・アクセス・メモリ)素子を含むことができる。
【0003】
大容量の外部メイン・メモリにアクセスするには、大量のエネルギおよび時間を必要とする。したがって、時にはキャッシュと呼ばれる、より小型、高速かつ効率的なメモリを集積回路上で用いれば、メイン・メモリへのアクセス回数を減らすことができる。また、集積回路のサイズをできるだけ小さく保つためには、集積回路上に含ませるメモリは必要十分なものだけにする。
【0004】
キャッシュTAGは、キャッシュの処理能力を高めるために頻繁に用いられている。キャッシュTAGは、マイクロプロセッサによって供給されるTAGアドレスを受信し、要求された命令および/またはデータがキャッシュ・メモリ内にあるか否かについて判定を行う。要求された命令がキャッシュ内にない場合、マイクロプロセッサはメイン・メモリからその命令を読み出さなければならない。命令をキャッシュに書き込む際、この命令のアドレスの上位ビットは、TAGアレイに格納される。また、キャッシュTAGは、プロセッサが発生したアドレスをTAGアドレスと比較する比較器を有する。TAGアドレスおよびプロセッサが発生したアドレスが同じ場合、キャッシュ「ヒット」が得られ、キャッシュTAGによって一致信号が供給され、要求されたデータがキャッシュ・メモリ内に位置することを示す。プロセッサが発生したアドレスとTAGアドレスが同一でない場合、キャッシュ「ミス」が発生し、一致信号は、要求されたデータがキャッシュ・メモリ内に位置しないことを示す。加えて、TAGアドレスの一部として有効ビットをセットし、キャッシュの比較サイクルの間、格納されたTAGアドレスの有効なヒットを評価することも可能である。
【0005】
尚、William C. Moyer et al. による、"DISTRIBUTED TAG CACHE MEMORY SYSTEM AND METHOD FOR STORING DATA IN THE SAME" と題し、弁理士整理番号SC09334Aを有する関連出願が本願と同時に出願され、同一譲受人に譲渡されている。
【0006】
【発明が解決しようとする課題】
高性能マイクロプロセッサのメモリ・システムには、いくつかのレベルの階層を設け、命令およびデータ読み出し効率を高める場合がある。CPUが命令およびデータを読み出すために消費する電力は、典型的に、メモリ・システムの別のレベルから命令およびデータを取り込む場合に多くなる。したがって、メモリの他のレベルへのメモリ取り込み回数を減らすことが、電力消費削減、特に、電池給電式機器の用途では望ましい。
【0007】
また、用途によっては、実行時間の大部分を小さなプログラム・ループ上でしばしば費やすものがある。かかる用途の一例は、デジタル信号処理用フィルタの実施であろう。これらの命令の全てまたは一部のためにメイン・メモリに繰り返しアクセスする必要がある場合、電力消費および実行速度双方に悪影響を与えることになる。したがって、繰り返しメイン・メモリにアクセスする必要性を回避しつつ、同時にキャッシュを実施するために必要な表面積を縮小することによって、かかる小ループの実行に伴う電力消費を削減し、実行速度を上昇させることが望ましい。
【0008】
【課題を解決するための手段】
概して言えば、本発明は、キャッシュを有するデータ処理システムを提供する。キャッシュは「TAGレス(TAGless) 」であり、即ち、従来のキャッシュのようにTAGアドレスを格納するためのTAGアレイを用いない。また、現命令に対する有効ビットを以前の命令と関連付ける有効ビット・アレイを備え、キャッシュの読み取りの間、次の命令に対する有効ビットを、現命令を読み取るために用いるのと同じインデックスを用いてチェックすることによって、TAGレス・キャッシュのための簡単な先取り機構(look ahead feature)を提供する。
一実施例によれば、このキャッシュは、フロー変化( COF) 命令に応答して、キャッシュをアクティブ状態に遷移させるために状態機械を用いる。フロー変化命令は、所定の変位未満の短い後方分岐(SBB:short backward branch)である。所定の変位は、キャッシュ内のエントリ数未満であるので、キャッシュに全体的に収容可能なループをプログラムが実行している限り、キャッシュはアクティブ状態であり続けることができる。本発明によるキャッシュ・メモリは、例えば、通信用途におけるフィルタ機能のように、時間の切れ目なく膨大な回数繰り返される短いループを有するプログラムに有用である。キャッシュは「TAGレス」であるので、TAGアレイおよび比較器は不要となり、集積回路上に必要な表面積が縮小する。
【0009】
【発明の実施の形態】
図1ないし図4を参照しながら、本発明について更に詳しく説明する。尚、「アサート」および「ニゲート」という用語は、それぞれ、信号,ステータス・ビット,または同様の機構をその論理真または論理虚状態にすることに言及する場合に用いる。論理真状態がデジタル論理レベル1である場合、論理虚状態はデジタル論理レベル0となる。また、論理真状態がデジタル論理レベル0である場合、デジタル虚状態はデジタル論理レベル1となる。
【0010】
図1は、本発明によるデータ処理システム20をブロック図形状で示す。データ処理システム20は、中央演算装置(CPU)22,メイン・メモリ24,TAGレス・ループ・キャッシュ26,マルチプレクサ28,および状態機械30を含む。通常、CPU22は複数の命令アドレスを発生する。命令アドレスは、メイン・メモリ24およびループ・キャッシュ26に供給される。各命令アドレスはMビットから成り、Mは整数である。M−Pで示すように、Mビットの一部のみがループ・キャッシュ26に供給される。ここで、PはMより小さい整数であり、命令アドレスの大域TAG部分(global TAG portion)を表わし、M−PはINDEX部分である。大域TAG部分は、TAGアレイを有する従来のキャッシュ・メモリにおいて用いられるTAGアドレスと同様である。
【0011】
状態機械30を用いて、メイン・メモリ24またはループ・キャッシュ26のどちらが命令をCPU22に供給するのかを判定し制御する。命令アドレスに応答して、メイン・メモリ24またはループ・キャッシュ26は、命令アドレスMに対応して、マルチプレクサ28を通じてCPU22に命令を供給する。メイン・メモリ24が命令をCPU22に供給する場合、"DATA IN" と称する命令もループ・キャッシュ26に供給される。命令がループ・キャッシュ26によって供給されると状態機械30が判定した場合、命令アドレスM−Pに対応する、"DATA"と称する命令がCPU22に供給される。尚、他の実施例では、ループ・キャッシュ26は、例えば、CPU22の代わりに、別のデータ処理または格納ユニットに命令を供給する場合もあることを注記しておく。
【0012】
どこから命令を読み出すべきかを判定するために、状態機械30は”COF”(change of flow:流れの変化)と称する制御信号,および”SBBI”(short backward branch instruction:短後方分岐命令) と称する制御信号を受信する。CPU22は、ある命令アドレスが一連の命令アドレス内における非連続命令アドレスであるとの判定に応答して、制御信号COFを状態機械に供給する。ループ・キャッシュ26は2つの制御ビットを状態機械30に供給する。制御ビットの一方は"TRIGGERING SBB"と称し、他方の制御ビットは"VALID BIT" と称する。また、状態機械30は、ループ・キャッシュ・ヒット信号,およびマルチプレクサ28を制御するための"LOOP CACHE HIT AND ACTIVE" と称するアクティブ化信号も供給する。状態機械30は、ループ・キャッシュ26へのアクセスのタイプを制御するためのリード信号やライト信号のように、"CONTROL" と称する他の制御信号を供給する。
【0013】
ループ・キャッシュ26は、アクティブおよびインアクティブという2つの状態を有する。ループ・キャッシュ26がアクティブ状態にある場合、データをループ・キャッシュ26から読み出し、マルチプレクサ28を介してCPU22に供給することができる。ループ・キャッシュ26がインアクティブ状態にある場合、データはマルチプレクサ28を介してメイン・メモリ24からCPU22に供給され、同時に、データをメイン・メモリ24から供給し、ループ・キャッシュ26に書き込むことができる。ループ・キャッシュ26が機能し、種々の信号に応答する態様については、図2ないし図4を参照しながら後に更に詳しく説明する。
【0014】
状態機械30は、制御信号COFおよびSBBIを用いてループ・キャッシュ26を制御することにより、TAGアドレスを格納するためのTAGアレイを有する必要性をなくした。データ処理システム20は、通信システムにおけるフィルタ機能、またはその他の計算集約的なデジタル信号処理機能を与える命令のように、多数回反復されるループを含む命令を実行する場合が最も効率的となる。ループ・キャッシュ26は、ループの命令全てを含む程大きいので、ループはループ・キャッシュ26内部から完全に実行可能である。CPU22がループ・キャッシュ26内に納まるループを検出した場合、ループを判定する命令に、トリガリングSBBビットを用いて、印を付ける、即ち、この命令を示す。その時点で、次の命令をTAGレス・ループからCPU22に供給する。命令アドレスのINDEX部分(M−P)のみがループ・キャッシュ26に供給され、トリガリングSBBが、CPU22がループ・キャッシュ内部から命令を実行していることを判定するので、TAGアドレスおよび別個のTAGアレイは、データ処理システム20内には不要となる。また、各命令を読み出す毎のTAG比較サイクルも不要となる。図示した実施例によれば、メイン・メモリ24は、ループ内にない命令のためにアクセスされるので、ループ・キャッシュ26は、ループ・キャッシュ26内部から完全に実行可能な、時間の切れ目がないループ(tight loop)内で実行時間の殆どを費やすような用途において最も有用である。
【0015】
TAGアレイを用いずにデータ処理システム内にキャッシュを実施することによって、集積回路の表面積が縮小されるので、集積回路のコスト低減および複雑度減少も得ることができる。加えて、TAGアレイへのアクセスが全くなくなるので、データ処理システムにおける電力消費も減少する。
【0016】
図2は、図1のループ・キャッシュ26を更に詳細に示す。ループ・キャッシュ26は、図2では、3つの部分、即ち、"DATA IN" と称する命令を格納するための第1部分32,第1部分32に収容された命令各々に対応する有効ビットを格納するための第2部分34,および状態機械30から受信された短後方分岐(SBB) ビットを格納するための第3部分36を有するものとして図示されている。また、ループ・キャッシュ26は、ラッチ38およびマルチプレクサ40も含む。ラッチ38は、命令アドレスのINDEX 部分を受信するための複数の入力端子と、マルチプレクサ40の複数の第1入力端子に結合されている複数の出力端子とを有する。また、マルチプレクサ40の複数の第2入力端子もINDEX 部分を受信する。マルチプレクサ40の複数の出力端子は、第2部分34にアドレスするために用いられる。
【0017】
第2部分34は、マルチプレクサ40の出力からINDEX を受信したことに応答してVALID BIT を供給するための出力端子を有する。第1部分32は、メイン・メモリからの命令を受信するための複数の入力端子と、INDEX の受信に応答して命令を供給する複数の出力端子とを有する。第1部分32は、"1" ないし"N+1" で示された複数のエントリを有する。各エントリは1つ以上の命令を含んでもよいことを注記しておく。しかしながら、第1部分32内のエントリ数は、本発明を説明する目的のためには重要ではなく、特定の用途に対して適切な数であればいずれでも可能であることも注記しておく。第2部分34および第3部分36は、第1部分32のエントリ数に対応する数のエントリを有する。第2部分34は有効ビットを格納し、先に述べたように、有効ビットは、第1部分32に格納された命令に対する先取り機能を実行するために用いられる。第1部分32内の各エントリに対応して、第2部分34内に有効ビットがある。この有効ビットは、対応する命令が有効な場合にアサートされ、逆に、対応する命令が無効の場合、有効ビットはニゲートされる。
【0018】
先取り機能を実行するために、各INDEX は、ループ・キャッシュ26へのライト処理の間にラッチ38にラッチされる。ライト信号はマルチプレクサ40を制御し、状態機械30によって供給される。ライト処理の間、第2部分34は、ラッチ38内に格納されているINDEX によってアドレスされる。先取り機能を与えるために、ラッチに格納されているINDEX は、一連の命令における直前の命令であり、次のINDEX を用いて第1部分32にアドレスするのと同時に供給される。一例として、インデックスが、図2に示すように、ライト動作の間にN+1 で示すエントリにアドレスする場合、第2部分34のエントリN を指し示す、"WRITE" で示す破線によって示すように、マルチプレクサ40の出力は、エントリN に対応するエントリにアドレスする。
【0019】
ループ・キャッシュ26のリード処理の間、状態機械30からのライト制御信号WRITE がニゲートされ、第1部分32,第2部分34,および第3部分36のエントリN+1 における実線の矢印を用いて図2に示すように、次のインデックスを用いて第1部分32,第2部分34,および第3部分36にアドレスする。読み出される命令は、現命令アドレスに対応し、一方、次の連続命令アドレスに対応する有効ビットが、同じINDEX と同時に読み出される。こうして、データ処理システム20のTAGレス・ループ・キャッシュに対する命令の有効性判断のために、先取り機構を設ける。
【0020】
尚、この先取り機構は、有効ビット・アレイを有するいかなるキャッシュとでも使用可能であることを注記しておく。この際、キャッシュがTAGアレイを有するタイプであるか否かは無関係である。これによって、図1に示すメイン・メモリ24のように、メモリ・システムにおける次のレベルの階層の選択的アクティブ化が可能となり、アクセス毎に次のレベルを自動的にアクティブ化する必要性を回避する。その結果、データ処理システムの電力消費の大幅な削減が可能となる。また、先取り機構は、従来の先取り機構のない主要キャッシュによって誘発される、命令ストリームにおける失速(stall) もなくすことができる。なぜなら、従来のキャッシュは、それがメモリ・システム内の次のレベルの階層にアクセスしなければならないか否かを決定する前に、当該命令が有効であるか否かを調べるために待つ必要があるからである。
【0021】
要求された命令がループ・キャッシュ26内に格納されていない場合、メイン・メモリへのアクセスを行う。命令がCPU22に供給されるのと同時に、ループ・キャッシュ26にも命令は書き込まれる。エントリが第1部分32のある位置に書き込まれると、対応する有効ビットがアサートされ、当該エントリが有効であり、第2部分34の以前の位置に対応する位置に配置されたことを示す。トリガリングSBBは、「取り込まれた(taken) 」SBBIであり、ループ・キャッシュ26をアクティブ化する。トリガリングSBBが検出された場合、SBBI命令に対応するSBB エントリが第3部分36においてセットされる。
【0022】
第1部分32において一度に1つのエントリのみに、トリガリングSBBを用いて印する(mark)ことができる。この単一のトリガリングSBBビットは、図1ではTRIGGERING SBBと示されている。
【0023】
図3は、図1の状態機械30の動作を説明するための状態図である。図3に示すように、状態機械30は2つの動作状態、即ち、(1)データをメイン・メモリ24から供給すべきことを示すインアクティブ状態、および(2)データをループ・キャッシュ26からCPU22に供給可能であることを示すアクティブ状態を有する。また、図3には、状態機械30が一方の状態から他方の状態に遷移するため、または状態機械30がその現状態に留まるために、満足しなければならない条件も示されている。状態機械30がインアクティブ状態40からアクティブ状態42に遷移するためには、CPU22からの制御ビットCOFをアサートし、CPU22からのSBBIビットをアサートする。状態機械30は、トリガリングSBBおよびアサートされたCOFがある場合、またはニゲートされたCOFがある場合、ループ・キャッシュ26をアクティブ状態に維持する。状態機械30は、トリガリングSBBビットおよびニゲートされたCOFがある場合、またはCOFがアサートされ、第2部分34にトリガリングSBBビットがない場合に、ループ・キャッシュ26をアクティブ状態42からインアクティブ状態40に遷移させる。状態機械30は、COFがニゲートされているか、あるいはSBBIがニゲートされている場合、ループ・キャッシュ26をインアクティブ状態40に維持する。
【0024】
図4は、図1のループ・キャッシュ26にアクセスするためのフロー・チャートを示す。ステップ43において、第2部分34の有効ビット全てをニゲートすることによって、ループ・キャッシュを無効化する。ステップ44において、CPU22は次の命令アドレスを計算する。ステップ46において、ループ・キャッシュ26がアクティブ状態にあるか否かについて判定を行う。ループ・キャッシュ26がアクティブ状態にある場合、判断ステップ46からYES経路を取り、判断ステップ48に進む。判断ステップ48において、以前の命令が、CPU22によって供給される一連の命令においてフローの変化(COF )を発生させたか否かについて判定を行う。フローの変化があった場合、判断ステップ48からYES経路を取り、判断ステップ50に進む。判断ステップ50において、COFがトリガリングSBBであるか否かについて判定を行う。フローの変化が、所定変位未満の後方分岐命令によって生じた場合、判断ブロック50からYES経路を取り、判断ステップ52に進む。判断ステップ52において、次の命令に対応する有効ビットを見ることにより、次のアドレスに対応する次の命令が有効な命令であるか否かについて判定を行う。次の命令に対する有効ビットがアサートされている場合、判断ステップ52からYES経路を取り、ステップ54に進む。ステップ54において、キャッシュ・メモリからCPU22命令を供給し、実行する。
【0025】
しかしながら、判断ステップ52において、次の命令に対する有効ビットがアサートされていない場合、判断ステップ52からNO経路を取り、ステップ70に進む。ステップ70において、メイン・メモリから次の命令をループ・キャッシュ26にロードし、次の命令の有効性を判断し、次の命令をCPU22に供給し、実行する。ループ・キャッシュに命令がロードされたときはいつでも、対応する有効ビットがセットされる点注意すべきである。
【0026】
再び判断ステップ50を参照し、判断ステップ48から判定されたフロー変化命令がトリガリングSBBでなかった場合、NO経路を取ってステップ68に進む。ステップ68において、有効ビット・アレイである第2部分34(図2)を無効化し、次の命令をメイン・メモリからCPU22に供給し、ループ・キャッシュ26にロードする。また、ループ・キャッシュ26をインアクティブ状態40(図3)に遷移させる。ステップ68において、フローはステップ44の開始に戻り、次の命令アドレスをCPU22によって計算する。
【0027】
再び判断ステップ48を参照し、直前の命令がフロー変化命令でなかった場合、NO経路を取って、判断ステップ66に進む。判断ステップ66において、直前の命令が所定の変位の後方分岐(トリガリングSBB)を発生し、キャッシュ・メモリをアクティブ化させたか否かについて判定を行う。命令がトリガリングSBBでなかった場合、判断ステップ66からNO経路を取り、判断ステップ52に進む。直前の命令がトリガリングSBBである場合、判断ステップ66からYES経路を取ってステップ68に進み、前述のようにフローはステップ68から続けられる。
【0028】
再び、判断ステップ46を参照し、NO経路を取って、ループ・キャッシュ26がインアクティブ状態にあることを示した場合、判断ステップ56において、フローの変化があったか否かについて判定を行う。判断ステップ56において、直前のアドレスにフローの変化がなかった場合、NO経路を取ってステップ62に進む。ステップ62において、次の命令がメイン・メモリからCPU22に供給される間に、ループ・キャッシュ26に次の命令がロードされる。ステップ62の後、フローは再びステップ44から続けられる。
【0029】
再び判断ステップ56を参照し、直前の命令がフローの変化であった場合、YES経路を取って判断ステップ58に進む。判断ステップ58において、短後方分岐命令(SBBI )がCPU22によってアサートされ、状態機械30に供給されたか否かについて判定を行う。SBBIがアサートされなかった場合、NO経路を取ってステップ64に進み、ループ・キャッシュ26は無効化され、ループ・キャッシュ26およびCPU22には、メイン・メモリ24から次の命令が供給される。ステップ64の後、プログラム・フローは再びステップ44から続けられる。
【0030】
再び判断ステップ58を参照し、命令が短後方分岐命令であることが示された場合、YES経路を取ってステップ60に進む。ステップ60において、ループ・キャッシュ26をアクティブ化し、SBBビットがトリガ分岐命令(triggering branch instruction) に対しセットされる。また、ループ・キャッシュ26からCPU22に次の命令を供給する。ステップ60の後、プログラム・フローは再びステップ44から続けられる。これらのステップは、命令アドレスがもはやなくなり、プログラム・フローが停止するときまで、次の命令アドレス毎に繰り返される。
【0031】
以上、好適実施例の関連において本発明を説明したが、本発明は、多数の方法で変更が可能であり、先に具体的に詳述した実施例以外にも多数の実施例が想定可能であることは、当業者には明白であろう。したがって、本発明の真の精神および範囲に該当する本発明の変更は全て特許請求の範囲に含まれることを意図するものである。
【図面の簡単な説明】
【図1】本発明によるデータ処理システムを示すブロック図。
【図2】図1のループ・キャッシュを示すブロック図。
【図3】図1の状態機械の状態図。
【図4】本実施例による無TAGキャッシュ・メモリをアクティブ化する方法のフロー・チャート。
【符号の説明】
20 データ処理システム
22 中央演算装置(CPU)
24 メイン・メモリ
26 TAGレス・ループ・キャッシュ
28 マルチプレクサ
30 状態機械
32 第1部分
34 第2部分
36 第3部分
38 ラッチ
40 マルチプレクサ
Claims (1)
- データ処理システム(20)であって:
命令アドレスを発生し、命令を処理し、該命令の1つが前記命令アドレスの1つに対応する中央演算装置(22);
前記中央演算装置(22)に結合され、命令を供給および受信するメイン・メモリ(24);
前記中央演算装置(22)および前記メイン・メモリ(24)に結合され、前記命令を受信するキャッシュ・メモリ(26)であって:
命令を格納する第1部分(32);および
有効ビットを格納する第2部分(34);
を備え、前記第1部分(32)内に格納されている現命令の有効ビットが、以前の命令の命令アドレスの前記第2部分(34)に格納され、前記有効ビットは前記現命令が前記キャッシュ・メモリまたは前記メイン・メモリから供給されるべきか否かを判定するために用いられる前記キャッシュ・メモリ(26);ならびに
前記中央演算装置(22)および前記キャッシュ・メモリ(26)に結合され、前記キャッシュ・メモリのアクティブ化およびインアクティブ化を制御する状態機械(30)であって、該状態機械(30)は制御信号を受け、かつ該制御信号に応じて、前記キャッシュ・メモリ(26)をアクティブ化し、アドレス比較機能を用いることなく、前記中央演算装置(22)に命令を供給する状態機械(30);
を具備することを特徴とするデータ処理システム(20)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US748855 | 1985-06-26 | ||
US08/748,855 US5893142A (en) | 1996-11-14 | 1996-11-14 | Data processing system having a cache and method therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10154098A JPH10154098A (ja) | 1998-06-09 |
JP4057114B2 true JP4057114B2 (ja) | 2008-03-05 |
Family
ID=25011219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30959897A Expired - Fee Related JP4057114B2 (ja) | 1996-11-14 | 1997-10-24 | キャッシュを有するデータ処理システムおよびそのための方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5893142A (ja) |
JP (1) | JP4057114B2 (ja) |
KR (1) | KR100492041B1 (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5983310A (en) * | 1997-02-13 | 1999-11-09 | Novell, Inc. | Pin management of accelerator for interpretive environments |
US5956746A (en) * | 1997-08-13 | 1999-09-21 | Intel Corporation | Computer system having tag information in a processor and cache memory |
US6055610A (en) * | 1997-08-25 | 2000-04-25 | Hewlett-Packard Company | Distributed memory multiprocessor computer system with directory based cache coherency with ambiguous mapping of cached data to main-memory locations |
US6401196B1 (en) * | 1998-06-19 | 2002-06-04 | Motorola, Inc. | Data processor system having branch control and method thereof |
US6598155B1 (en) * | 2000-01-31 | 2003-07-22 | Intel Corporation | Method and apparatus for loop buffering digital signal processing instructions |
US6519684B1 (en) * | 1999-11-23 | 2003-02-11 | Motorola, Inc. | Low overhead method for selecting and updating an entry in a cache memory |
EP1107110B1 (en) * | 1999-11-30 | 2006-04-19 | Texas Instruments Incorporated | Instruction loop buffer |
US6963965B1 (en) | 1999-11-30 | 2005-11-08 | Texas Instruments Incorporated | Instruction-programmable processor with instruction loop cache |
US6567895B2 (en) * | 2000-05-31 | 2003-05-20 | Texas Instruments Incorporated | Loop cache memory and cache controller for pipelined microprocessors |
US20040088682A1 (en) * | 2002-11-05 | 2004-05-06 | Thompson Ryan C. | Method, program product, and apparatus for cache entry tracking, collision detection, and address reasignment in processor testcases |
US7249248B2 (en) * | 2002-11-25 | 2007-07-24 | Intel Corporation | Method, apparatus, and system for variable increment multi-index looping operations |
EP1665007A2 (en) * | 2003-09-16 | 2006-06-07 | Koninklijke Philips Electronics N.V. | Power saving operation of an apparatus with a cache memory |
AT500858B8 (de) * | 2004-08-17 | 2007-02-15 | Martin Schoeberl | Instruction cache für echtzeitsysteme |
US20060190710A1 (en) * | 2005-02-24 | 2006-08-24 | Bohuslav Rychlik | Suppressing update of a branch history register by loop-ending branches |
US20090055589A1 (en) * | 2007-08-24 | 2009-02-26 | Arm Limited | Cache memory system for a data processing apparatus |
JP5159258B2 (ja) * | 2007-11-06 | 2013-03-06 | 株式会社東芝 | 演算処理装置 |
US9398033B2 (en) | 2011-02-25 | 2016-07-19 | Cavium, Inc. | Regular expression processing automaton |
US9344366B2 (en) | 2011-08-02 | 2016-05-17 | Cavium, Inc. | System and method for rule matching in a processor |
US9203805B2 (en) * | 2011-11-23 | 2015-12-01 | Cavium, Inc. | Reverse NFA generation and processing |
US9753733B2 (en) | 2012-06-15 | 2017-09-05 | Apple Inc. | Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer |
US9557999B2 (en) | 2012-06-15 | 2017-01-31 | Apple Inc. | Loop buffer learning |
US9507563B2 (en) | 2013-08-30 | 2016-11-29 | Cavium, Inc. | System and method to traverse a non-deterministic finite automata (NFA) graph generated for regular expression patterns with advanced features |
US9426165B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for compilation of finite automata |
US9426166B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for processing finite automata |
US9183155B2 (en) * | 2013-09-26 | 2015-11-10 | Andes Technology Corporation | Microprocessor and method for using an instruction loop cache thereof |
US9419943B2 (en) | 2013-12-30 | 2016-08-16 | Cavium, Inc. | Method and apparatus for processing of finite automata |
US9544402B2 (en) | 2013-12-31 | 2017-01-10 | Cavium, Inc. | Multi-rule approach to encoding a group of rules |
US9275336B2 (en) | 2013-12-31 | 2016-03-01 | Cavium, Inc. | Method and system for skipping over group(s) of rules based on skip group rule |
US9667446B2 (en) | 2014-01-08 | 2017-05-30 | Cavium, Inc. | Condition code approach for comparing rule and packet data that are provided in portions |
US9904630B2 (en) | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
US9602532B2 (en) | 2014-01-31 | 2017-03-21 | Cavium, Inc. | Method and apparatus for optimizing finite automata processing |
US9471322B2 (en) | 2014-02-12 | 2016-10-18 | Apple Inc. | Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold |
US10110558B2 (en) | 2014-04-14 | 2018-10-23 | Cavium, Inc. | Processing of finite automata based on memory hierarchy |
US10002326B2 (en) | 2014-04-14 | 2018-06-19 | Cavium, Inc. | Compilation of finite automata based on memory hierarchy |
US9438561B2 (en) * | 2014-04-14 | 2016-09-06 | Cavium, Inc. | Processing of finite automata based on a node cache |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4763253A (en) * | 1986-09-26 | 1988-08-09 | Motorola, Inc. | Microcomputer with change of flow |
JPH0452741A (ja) * | 1990-06-14 | 1992-02-20 | Toshiba Corp | キャッシュメモリ装置 |
JPH06318174A (ja) * | 1992-04-29 | 1994-11-15 | Sun Microsyst Inc | キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法 |
US5513335A (en) * | 1992-11-02 | 1996-04-30 | Sgs-Thomson Microelectronics, Inc. | Cache tag memory having first and second single-port arrays and a dual-port array |
JPH06243036A (ja) * | 1993-02-12 | 1994-09-02 | Hitachi Ltd | キャッシュ制御システム |
US5479641A (en) * | 1993-03-24 | 1995-12-26 | Intel Corporation | Method and apparatus for overlapped timing of cache operations including reading and writing with parity checking |
JP2701703B2 (ja) * | 1993-09-03 | 1998-01-21 | 日本電気株式会社 | キャッシュメモリ |
US5666505A (en) * | 1994-03-11 | 1997-09-09 | Advanced Micro Devices, Inc. | Heuristic prefetch mechanism and method for computer system |
US5749090A (en) * | 1994-08-22 | 1998-05-05 | Motorola, Inc. | Cache tag RAM having separate valid bit array with multiple step invalidation and method therefor |
US5535360A (en) * | 1994-08-31 | 1996-07-09 | Vlsi Technology, Inc. | Digital computer system having an improved direct-mapped cache controller (with flag modification) for a CPU with address pipelining and method therefor |
US5822755A (en) * | 1996-01-25 | 1998-10-13 | International Business Machines Corporation | Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache |
-
1996
- 1996-11-14 US US08/748,855 patent/US5893142A/en not_active Expired - Fee Related
-
1997
- 1997-10-24 JP JP30959897A patent/JP4057114B2/ja not_active Expired - Fee Related
- 1997-11-11 KR KR1019970059182A patent/KR100492041B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US5893142A (en) | 1999-04-06 |
KR100492041B1 (ko) | 2005-08-25 |
JPH10154098A (ja) | 1998-06-09 |
KR19980042268A (ko) | 1998-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4057114B2 (ja) | キャッシュを有するデータ処理システムおよびそのための方法 | |
US5632038A (en) | Secondary cache system for portable computer | |
US5822755A (en) | Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache | |
JP3289661B2 (ja) | キャッシュメモリシステム | |
US7356717B2 (en) | Information processing apparatus with central processing unit and main memory having power saving mode, and power saving controlling method | |
JP2004178016A (ja) | Cpuおよびこれを備えた情報処理装置、cpuの制御方法 | |
JP2007011580A (ja) | 情報処理装置 | |
KR100470516B1 (ko) | 분포된태그캐시메모리시스템및그것에데이터를저장하기위한시스템 | |
JPH04242848A (ja) | 走行モード別キャッシュメモリ制御方式 | |
RU2400804C2 (ru) | Способ и система для предоставления энергетически эффективного регистрового файла | |
US7577791B2 (en) | Virtualized load buffers | |
JP2002196981A (ja) | データ処理装置 | |
JP4791714B2 (ja) | ダイナミック周波数スケーリングキャッシュメモリの休止時間を利用する方法、回路及びシステム | |
US5926841A (en) | Segment descriptor cache for a processor | |
WO1997034229A9 (en) | Segment descriptor cache for a processor | |
US6049852A (en) | Preserving cache consistency in a computer system having a plurality of memories with overlapping address ranges | |
US8539159B2 (en) | Dirty cache line write back policy based on stack size trend information | |
JP2000187616A (ja) | キャッシュラインをクリーンな状態に保つメモリシステム | |
US6694408B1 (en) | Scalable replacement method and system in a cache memory | |
JP2004094807A (ja) | 命令キャッシュおよびマイクロプロセッサとその設計方法 | |
US5761736A (en) | Apparatus and method for implementing multiple scaled states in a state machine | |
JPH0784879A (ja) | キャッシュメモリ装置 | |
JP3112863B2 (ja) | キャッシュメモリ制御方式 | |
JP3147456B2 (ja) | キャッシュメモリシステム | |
JPH1055308A (ja) | キャッシュメモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041018 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041018 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20041018 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20041217 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050722 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070326 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070410 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070704 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070724 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071018 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071113 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071213 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101221 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101221 Year of fee payment: 3 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D03 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111221 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131221 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |