(57)【要約】  プロセッサのためのブロック・ノーマル・キャッシュ割り当て（BNCA）が定義される。BNCAモードにおいて、キャッシュエントリは予め決められた命令によってのみ割り当てられる。ノーマルメモリアクセス命令（例えば、割込コードの部分として）が実行し、キャッシュミスの場合はメインメモリからデータを検索する。しかし、これらのノーマルメモリアクセス命令はキャッシュエントリの割り当てを許されない。前記の予め決められた命令（例えば、ロックされたキャッシュエントリの確立のために使用される命令）だけがキャッシュエントリを割り当てることができる。ロックされたエントリが確立されると、プロセッサはBNCAモードを抜け、いかなるメモリアクセス命令もキャッシュエントリを割り当てることができる。BNCAモードは、構成レジスタ中の１ビットをセットすることによって指示できる。【選択図】    図３
2009525552.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ中の割り当てを制限する方法であって、
前記方法は、
制限されたモードにおいて、予め決められた命令セットだけにキャッシュエントリの割り当てを許可することと、
無制限のモードにおいて、任意のメモリアクセス命令にキャッシュエントリの割り当てを許可することと、
を備える。
【請求項２】
前記制限されたモードは、ブロック・ノーマル・キャッシュ割り当て(BNCA)指標のセットによって開始され、前記BNCA指標のリセットによって終了される、請求項1に記載の方法。
【請求項３】
前記 BNCA指標は構成レジスタ中の１ビットである、請求項2に記載の方法。
【請求項４】
前記予め決められた命令セットは、前記キャッシュへのデータをロードし、置き換えに対抗してキャッシュエントリをロックするように作用する命令を含む、請求項１に記載の方法。
【請求項５】
別々の命令が命令キャッシュとデータキャッシュのエントリをロードし、ロックするように作用する、請求項4に記載の方法。
【請求項６】
前記制限されたモードと前記無制限のモードは、１つのデータキャッシュと１つの命令キャッシュに個別に適用可能である、請求項1に記載の方法。
【請求項７】
前記キャッシュは2つ以上のバンクに分割され、前記制限されたモードと無制限のモードは前記バンクのそれぞれに個別に適用可能である、請求項1に記載の方法。
【請求項８】
前記キャッシュはセットアソシアティブキャッシュであり、前記制限されたモードと無制限のモードは前記セットアソシアティブキャッシュの各セットに個別に適用可能である、請求項1に記載の方法。
【請求項９】
キャッシュを管理する方法であって、
前記方法は、
予め決められた命令だけがキャッシュエントリを割り当てることができる、制限されたモードに入ることと、
前記予め決められた命令を使用して前記キャッシュエントリを割り当てることと、
前記制限されたモードを出て、任意のメモリアクセス命令でキャッシュエントリを割り当てることと、
を備える。
【請求項１０】
前記予め決められた命令を使用した前記キャッシュエントリの割り当ての後、置き換えに対抗して、前記割り当てられたキャッシュエントリをロックすることをさらに含む、請求項9に記載の方法。
【請求項１１】
前記制限されたモード中に受け取った割込みを処理することと、
割込コード中のメモリアクセス命令でいかなるキャッシュエントリの割り当ても行わず、前記割込コード中のメモリアクセス命令でメモリアクセスを実行することとをさらに備えた、請求項9に記載の方法。
【請求項１２】
構成レジスタにブロック・ノーマル・キャッシュ割り当て(BNCA)ビットをセットすることを備え、また、前記制限されたモードを出ることは、前記BNCAビットをクリアすることを備えた、請求項9に記載の方法。
【請求項１３】
キャッシュメモリと、
ブロック・ノーマル・キャッシュ割り当て(BNCA)ビットを有する構成レジスタと、
メモリアクセス命令による前記キャッシュ中のエントリの割り当てをコントロールするように作用し、さらに、前記BNCAビットがセットされるときに、予め決められた命令セットでの割り当て以外の割り当てを却下するように作用するキャッシュコントローラと、
を備えたプロセッサ。
【請求項１４】
前記予め決められた命令セットは、割り当て命令をロックすることを含む、請求項13に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にプロセッサ分野に関し、特に、ノーマル割り当てからの干渉がないキャッシュロックの方法に関する。
【背景技術】
【０００２】
マイクロプロセッサは、携帯用電子機器を含む種々様々のアプリケーションで計算上のタスクを実行する。プロセッサ性能の最大化は、携帯電子デバイスや他のアプリケーションにおいて実行されるべき、より多くの機能や特徴を可能にするために望ましい。
【０００３】
コンピュータプログラム中の共通の空間的・時間的局所特性により、ある任意の時間に処理されている命令とデータは、統計的に非常に近い将来必要とされ、それらは迅速に利用可能な高速キャッシュメモリに保存される。メモリアクセス命令は、タグとして知られている(仮想もしくは物理的な)アドレスの一部をキャッシュ中のCAM構造に提供し、そこで、キャッシュのRAM中に保存された命令の対応アドレスビットおよび／またはデータと比較される。(ここではCAMとRAMのコンテンツをまとめてキャッシュエントリと呼ぶ。）タグが一致した場合、つまり「ヒット」した場合は、希望する命令および／またはデータを含むキャッシュラインが返される。(あるいは、セットアソシアティブキャッシュの場合は、複数のキャッシュラインが返され、１つはインデックスとして知られているアドレスの異なる部分によって選択される。)もし、タグがどのCAMエントリとも一致しない場合、つまり「ミス」した場合は、メモリアクセス命令はメインメモリから所望の命令あるいはデータのアクセスを始める。
【０００４】
全体的なキャッシュヒットレートの最大化、すなわち、待ち時間を発生させ、パイプラインを遅らせ、余計の電力を消耗させる可能性があるメインメモリへのオフチップアクセスの最小化が望ましい。さらに、いくつかのアプリケーションでは、少数の重大もしくは頻繁に使われる命令および／またはデータが知られており、この情報は、キャッシュの全体的な性能にかかわらず、キャッシュ中に維持されてもよい。いくつかの命令セットアーキテクチャは、キャッシュエントリを「ロックする」手段を提供する。その結果、エントリはノーマルキャッシュミス処理中には置き換えられない。ある場合には、ロックされたエントリのノーマルキャッシュ割り当てアルゴリズムへの影響を最小化するために、ロックするキャッシュエントリの選択は明示的かつ正確である。
【０００５】
図1は、キャッシュエントリをロックする1つの代表的な手段を示す機能ブロック図である。キャッシュ1(それは命令キャッシュ、データキャッシュあるいはユニファイドキャッシュを含んでもよい)は、番号が0からn-1までのn個のエントリを備える。
【０００６】
フロアレジスタ2は、キャッシュの「フロア」を表わすエントリナンバー、あるいはノーマル割り当てに利用可能な最低のキャッシュエントリを保持する。フロアより下のキャッシュエントリは置き換えに利用できず、従って「ロック」される。エントリがロックされない場合フロアレジスタは０（ゼロ）で、キャッシュ置換アルゴリズムはキャッシュの全体にわたって作動する。もし、図1に示されるように下段の3つのエントリがロックされると、プロセッサはフロアレジスタを3（再割り当てに利用可能な最初のキャッシュエントリ）にインクリメントする。この場合、ノーマルキャッシュ再割り当てアルゴリズムは、キャッシュの部分中で、「フロア」つまり３からキャッシュのトップn-1へと作動する。
【０００７】
ロックされたキャッシュエントリの1つの場所におけるグループ化は、置換アルゴリズムを単純化する。例えば、キャッシュエントリがラウンドロビン方式で交換される場合、「ロールオーバー」ポイントだけがロックされたエントリによって影響される。(つまり、過去のn-1をインクリメントする場合、次のエントリは0ではなく、フロアレジスタ2によって示されたエントリである)ラウンドロビン割り当てにより、キャッシュスペース中に分散された「飛び越えられる」に違いない、不連続でロックされたエントリは存在しない。キャッシュエントリをグループ化してロックするフロア方式は単に代表例であって、これに限定されるものではない。キャッシュエントリは一緒にグループ化され、広く様々な方法による再割り当てに対してロックされてもよい。
【０００８】
一般に、割込はプロセッサの外部の事象によって生成され、本質的に不確実である。したがって、割込は、ロックされたキャッシュエントリを慎重に整えることを試みるコードの実行期間中に発生するかも知れない。割込操作コードはメモリアクセス命令を含むことができ、それはおそらくキャッシュ中でミスし、メインメモリへのアクセスを引き起こす。これらのメモリアクセスは、通常、キャッシュ中の割り当てを生成する。すなわち、割込を処理するためにフェッチされた命令とデータは、いくつかのキャッシュラインを置き換える。ロックされたキャッシュエントリの処理が開始された後であって、ロックされたエントリが確立され整えられる前に割込が発生する場合は、ロックされる予定であったキャッシュエントリは再び割り当てられる。さらに、ロックされていないキャッシュエントリは、フロアレジスタより下のようなロックされたエントリを意図した領域で割り当てられてもよい。これは、ラウンドロビンのようないくつかのキャッシュ置換アルゴリズムに重要な負担を課して、不連続のロックされたエントリを結果として生じる。
【発明の開示】
【概要】
【０００９】
1つ以上の実施例において、ブロック・ノーマル・キャッシュ割り当て(Block Normal Cache Allocation)(BNCA)モードが定義される。プロセッサがBNCAモードに入ると、キャッシュエントリは予め決められた命令によって単に割り当てられる。ノーマルメモリアクセス命令(例えば割込コードの一部として)が実行され、キャッシュミスの場合にはメインメモリからデータが検索される。しかしながら、これらの命令はキャッシュ中でのエントリの割り当ては許されない。予め決められた命令だけ(例えばロックされたキャッシュエントリを確立するために使用されるものだけ)が、キャッシュ中のエントリを割り当てる。ロックされたエントリが確立されると、プロセッサはBNCAモードを出て、いかなるメモリアクセス命令もキャッシュエントリを割り当てることができる。BNCAモードは構成レジスタ中の１ビットをセットすることにより示されてもよい。
【００１０】
1つの実施例はキャッシュ中の割り当てを制限する方法に関する。制限されたモードにおいては、予め決められた命令セットだけがキャッシュエントリの割り当てを許される。制限のないモードにおいては、いかなるメモリアクセス命令もキャッシュエントリを割り当てることができる。
【００１１】
他の実施例はキャッシュを管理する方法に関する。予め決められた命令だけがキャッシュエントリの割り当てができる、制限されたモードが入れられる。キャッシュエントリは、予め決められた命令を使用して割り当てられる。制限されたモードを出ると、任意のメモリアクセス命令でキャッシュエントリが割り当てられる。
【００１２】
他の実施例はプロセッサに関する。プロセッサはキャッシュメモリと、ブロック・ノーマル・キャッシュ割り当て(BNCA)ビットを持っている構成レジスタ(configuration register)を含む。加えて、プロセッサは、メモリアクセス命令によるキャッシュ中のエントリの割り当てを制御し、さらに、BNCAビットがセットされる場合に、予め決められた命令セットを除いて前記割り当てを却下するように作用するキャッシュコントローラを含む。
【詳細な説明】
【００１３】
図2は、パイプライン方式と階層的記憶構造の両方を使用した代表的なプロセッサ10の機能ブロック図である。プロセッサ10は、制御ロジック14に従って命令実行パイプライン12中の命令を実行する。制御ロジック14には構成レジスタ15が含まれており、それは、以下に詳述されるブロック・ノーマル・キャッシュ割当て(BNCA)ビット16を含む。パイプラインは、パイプステージで構成される種々のレジスタあるいはラッチ17及び1つ以上の算術論理演算ユニット(ALU)18を含む。汎用レジスタ(GPR)ファイル20は、メモリ階層のトップを含むレジスタを提供する。
【００１４】
パイプラインは、命令サイド変換索引バッファ(Instruction-side Translation Lookaside Buffer)(ITLB)24によって管理されたメモリアドレッシングとパーミッションと共に、命令キャッシュ(Iキャッシュ)22から命令をフェッチする。データは、メイン変換索引バッファ(TLB)28によって管理されたメモリアドレッシングとパーミッションと共にデータキャッシュ(Dキャッシュ)26からアクセスされる。様々な実施例では、ITLB 24は、TLB 28の一部のコピーを備えてもよい。あるいは、ITLB 24およびTLB 28は統合されてもよい。同様に、プロセッサ10の様々な実施例では、Iキャッシュ22およびDキャッシュ26は統合されてもよく、あるいは一体化されてもよい。Iキャッシュ22および／またはDキャッシュ26でのミスは、メモリインタフェース30の管理の下で、メイン(オフチップ)メモリ32へのアクセスを引き起こす。
【００１５】
プロセッサ10は様々な周辺デバイス36へのアクセスをコントロールするインプット・アウトプット(I/O)インターフェース34を含んでもよい。当業者はプロセッサ10の多くの変形が可能であることを認識するであろう。例えば、プロセッサ10は、Iキャッシュ22とDキャッシュ26のいずれかまたは両方のために第2のレベル(L2)のキャッシュを含んでもよい。さらに、プロセッサ10の中で示された機能ブロックの1つ以上は、特定の実施例から省略されてもよい。
【００１６】
一般に命令セットは、パイプラインに命令またはデータを読み込まずに、単にキャッシュエントリを割り当てるだけのメモリアクセス命令を含めて構成される。例えば、PLD(preload；プレロード)命令はメインメモリ中のアドレスを読む。もしPLDが、関連するキャッシュ中でミスする場合、メモリからのデータは既存のキャッシュエントリを置き換えて、キャッシュに読み込まれ、ロードされる。PLD命令は、後に続く命令および／またはデータが適切なキャッシュ22、26でヒットすることを保証するために、ある重大な命令および／またはデータをIキャッシュ22および／またはDキャッシュ26にプレロードするようにプログラムで使用されてもよい。プログラムは、キャッシュ22、26にプリロードされたエントリを他のメモリアクセス動作による置き換えに対抗してロックするために、PLD命令をフロアレジスタ（もしくは他のロックメカニズム）への書き込みと関連して使用することができる。しかしながら、この処理中に受け取られた割込は、所望のプレローディングやキャッシュエントリのロック動作を混乱させる。
【００１７】
1つ以上の実施例によれば、プロセッサ10は、予め決められた命令だけがキャッシュエントリを割り当てるモードに入る。モードは、例えば、構成レジスタ15中のようなブロック・ノーマル・キャッシュ割り当て(BNCA)ビット16を書くことによって始められてもよい。BNCA指標16がセットされ、あるいはアクティブの場合、共通メモリアクセス命令は、キャッシュ22および26中のエントリの割り当て(例えば、置き換え）を妨げられる。選択され予め決められた命令だけがキャッシュエントリを割り当てることができる。これらの命令は、例えば、パイプラインにデータを読み込むことなくキャッシュエントリを割り当てるためのPLD命令を含むことができる。そのような命令は、恐らく割込処理コード(interrupt handling code)によって実行されず、従って、割込コードは、BNCAモードで実行されるプレローディングやキャッシュエントリのロッキング動作を混乱させないであろう。あるいは、明示的なキャッシュロッキングを準備する命令セットアーキテクチャ、例えばLPLD(ロッキングプレロード)命令においては、BNCAモード中のキャッシュ割り当ては、そのようなロッキングキャッシュ割り当て命令に制限されてもよい。
【００１８】
割込みがBNCAモード中(すなわちキャッシュプレローディングおよびロッキングオペレーション中)に生じる場合は、いかなるメモリアクセス命令も適切に実行され、それらは単にキャッシュエントリの割り付けを妨げられるだけである。すなわち、メモリアクセス命令がキャッシュ22、26でミスすれば、メインメモリアクセスが実行され、命令もしくはデータがパイプラインに返される。しかしながら、キャッシュミス処理はキャッシュエントリを割り当てることができない。従って、同じかあるいは近くの命令またはデータへのアクセスが続いて試みられるならば、それは再びキャッシュ中でミスし、メインメモリから命令またはデータを検索するであろう。これは、繰り返し、長いメモリアクセス待ち時間を招き、割込みルーチンの実行性能を低下させる。しかしながら、割込みルーチンは短く、かつまれであると仮定される。他方では、割込コードの一部として実行するメモリアクセス命令によって、正確なロックされたキャッシュエントリが障害なく確立できることを保証することにより、相当の性能の向上と設計の単純化が達成される。
【００１９】
1つの実施例によるロックされたキャッシュエントリの確立プロセスは、図3のフローダイアグラムを参照して記述される。BNCAビット16(あるいは他のBNCAモード標識)がセットされる(ブロック40)。これは、Iキャッシュ22およびDキャッシュ26をコントロールする回路に、ある予め決められた命令(例えばPLD)だけがキャッシュエントリを割り当てることができることを示す(ブロック42)。これは、プロセッサ10が、ノーマルキャッシュ割り当て手順を最適化するように配置された正確かつ固定されたキャッシュエントリの確立を可能にする。割り込みがBNCAモード中に生じる場合は割込コードが実行され、全てのメモリアクセス命令(予め決められた命令以外の)はキャッシュエントリの割り付けを却下される（ブロック44）。割込コードが完了すると、プロセッサ10はキャッシュエントリのプレローディングおよびロッキングを継続する。全ての所望のロックされたキャッシュエントリが確立されると（ブロック46）、プロセッサ10はBNCAモードを出て、BNCAビット16(あるいは他のBNCAモード標識)をクリアする（ブロック48）。プロセッサ10は、その後、実行を継続し、任意のメモリアクセス命令がノーマル割り当てプロトコルごとにキャッシュエントリを割り当てることを許容する（ブロック50）。このように、正確でロックされたキャッシュエントリの確立は、割込コードメモリアクセス命令による混乱から保護される。
【００２０】
1つの実施例では、単一のBNCAビット16がすべてのキャッシュ22、26のためにBNCAモードをコントロールする。他の実施例によれば、個別のBNCAビット16が、Iキャッシュ22およびDキャッシュ26のために別々にBNCAモードをコントロールする。
【００２１】
さらに他の実施例では、Iキャッシュ22およびDキャッシュ26のいずれか又は両方が、2つ以上のバンクに分割されてもよく、そして、対応するBNCAAビット16に従って、各キャッシュバンクが独立してBNCAモードを入力してもよい。さらに他の実施例では、n-wayセットアソシアティブキャッシュ22および26の各セットが、対応するBNCAビット16に従って、独立してBNCAモードの入出力を持ってもよい。一般に、当業者は、ここに示された1つ以上の実施例の教示が多くの代替の実施に適用されてもよいことを容易に認識するであろう。
【００２２】
本開示の実施例はここではその特別の性能、態様および実施例に関して記述されたが、本教示の広い範囲内で多くの変形、変更およびその他の実施例が可能であることは明白であろう。したがって、本実施例は全ての面で例示的であって限定的でないものとして解釈されるべきであり、また、添付された請求項の意味および均等範囲内に入る全ての変更はそこに包含されるように意図される。
【図面の簡単な説明】
【００２３】
【図１】図1はキャッシュメモリおよびフロアレジスタの機能ブロック図である。
【図２】図2はプロセッサの機能ブロック図である。
【図３】図3はキャッシュエントリをロックする方法のフローダイアグラムである。
【図１】
2009525552.tif 000003
【図２】
2009525552.tif 000004
【図３】
2009525552.tif 000005
【国際調査報告】
2009525552.tif 000006
2009525552.tif 000007