(57)【要約】【課題】  性能を実質的に劣化させることなしにプロセッサ内のキャッシュアクセスの電力消費を減少させる。【解決手段】  ハードウエアループの実行等の何等顕著な性能ペナルティを発生することのない命令クラスターに対して、プロセッサが単一サイクルアクセスではなく関連するアソシエイティブキャッシュに対してパイプライン型２サイクルアクセスへ自動的に且つ動的にスイッチする。１を超えるサイクルが関与するアクセスは使用するパワーがより少ない。何故ならば、インデックスされたキャッシュライン内の全てのウエイではなく、キャッシュメモリ内のヒットしたウエイのみがアクセスされるに過ぎないからである。性能を維持するために、単一サイクルキャッシュアクセスが全ての残りの命令において使用される。更に、ハードウエアループ内の命令クラスターが完全にプリフェッチバッファ内に当て嵌まる場合には、キャッシュサブシステムは、更に電力消費を減少させるためにハードウエアループの残りの繰返しに対しアイドル状態とされる。【選択図】      図１
2004164622.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ内のキャッシュアクセス命令の実行を制御する装置において、
第一モードか又は前記第一モードよりも増加した待ち時間を有する第二モードのいずれかにおいてアクセス可能な連想キャッシュメモリ、
前記連想キャッシュメモリへ結合している制御器、
を有しており、命令からなるシーケンスの実行期間中に、前記制御器が、
前記命令からなるシーケンスの実行に対して実質的な性能ペナルティを発生させることなしに１つ又はそれ以上のキャッシュアクセス命令を増加した待ち時間で実行させることが可能であるか否かを判別し、
実質的な性能ペナルティを発生させることなしに前記１つ又はそれ以上のキャッシュアクセス命令内の少なくとも１個のキャッシュアクセス命令を増加した待ち時間で実行させることが可能であるとの判別に応答して、前記少なくとも１つのキャッシュアクセス命令に対して前記キャッシュメモリのアクセスを前記第二モードへ動的に設定する、
ことを特徴とする装置。
【請求項２】
請求項１において、前記キャッシュ制御器が前記命令からなるシーケンスの完了後に前記キャッシュメモリのアクセスを前記第一モードへ動的に設定することを特徴とする装置。
【請求項３】
請求項１において、前記キャッシュ制御器が、前記命令からなるシーケンスがハードウエアループを有するか否かを判別することにより、実質的な性能ペナルティを発生させることなしに前記１つ又はそれ以上のキャッシュアクセスメモリを増加した待ち時間で実行させることが可能であるか否かを判別することを特徴とする装置。
【請求項４】
請求項３において、前記キャッシュ制御器が、現在のプログラムカウンタのループ終端アドレスに対する比較か又はループ識別命令の検知のいずれかにより前記命令からなるシーケンスがハードウエアループを有しているか否かを判別することを特徴とする装置。
【請求項５】
請求項３において、前記キャッシュ制御器が、前記命令からなるシーケンスがプリフェッチバッファ内に当て嵌まるハードウエアループを有していることの判別に応答して、前記ハードウエアループの残りの爾後の繰返し期間中にキャッシュサブシステムをアイドル状態とさせることを特徴とする装置。
【請求項６】
請求項１において、前記キャッシュ制御器が、各キャッシュアクセス命令が実質的な性能ペナルティを発生させることなしに増加した待ち時間で実行させることが可能であるか否かを自動的に判別することを特徴とする装置。
【請求項７】
請求項１において、前記第一モードが、前記キャッシュメモリ内のインデックスしたキャッシュラインの全てのウエイが検索される単一サイクルアクセスを有しており、且つ前記第二モードが、１つを超えるサイクルを必要とし且つ前記インデックスしたキャッシュライン内のヒットウエイのみが検索されるアクセスを有していることを特徴とする装置。
【請求項８】
プロセッサにおいて、
命令を実行する１個又はそれ以上の実行ユニット、
前記実行ユニットにより実行するために検索された命令を包含しているプリフェッチバッファ、
前記プリフェッチバッファがそれから命令を検索し、第一モードにおいて又は前記第一モードよりも増加した待ち時間を有する第二モードのいずれかにおいてアクセス可能な連想キャッシュメモリ、
前記連想キャッシュメモリへ結合している制御器、
を有しており、命令からなるシーケンスの実行期間中に、前記制御器が、
前記命令からなるシーケンスの実行に対して実質的な性能ペナルティを発生させることなしに１個又はそれ以上のキャッシュアクセス命令を増加した待ち時間で実行させることが可能であるか否かを判別し、
実質的な性能ペナルティを発生させることなしに前記１個又はそれ以上のキャッシュアクセス命令のうちの少なくとも１つのキャッシュアクセス命令を増加した待ち時間で実行させることが可能であることの判別に応答して、前記少なくとも１つのキャッシュアクセス命令に対して前記キャッシュメモリのアクセスを前記第二モードへ動的に設定する、
ことを特徴とするプロセッサ。
【請求項９】
請求項８において、前記キャッシュ制御器が、前記命令からなるシーケンスの完了後に前記キャッシュメモリのアクセスを前記第一モードへ動的に設定することを特徴とするプロセッサ。
【請求項１０】
請求項８において、前記キャッシュ制御器が、前記命令からなるシーケンスがハードウエアループを有しているか否かを判別することにより、実質的な性能ペナルティを発生させることなしに前記１つ又はそれ以上のキャッシュアクセスメモリを増加した待ち時間で実行させることが可能であるか否かを判別することを特徴とするプロセッサ。
【請求項１１】
請求項１０において、前記キャッシュ制御器が、現在のプログラムカウンタのループ端部アドレスに対する比較か又はループ識別用命令の検知のいずれかにより前記命令からなるシーケンスがハードウエアループを有しているか否かを判別することを特徴とするプロセッサ。
【請求項１２】
請求項１０において、前記命令からなるシーケンスがプリフェッチバッファ内に当て嵌まるハードウエアループを有していることの判別に応答して、前記キャッシュ制御器が前記ハードウエアループの残りの爾後の繰返し期間中にキャッシュサブシステムをアイドル状態とさせることを特徴とするプロセッサ。
【請求項１３】
請求項８において、前記キャッシュ制御器が、実質的な性能ペナルティを発生させることなしに各キャッシュアクセス命令を増加した待ち時間で実行させることが可能であるか否かを自動的に判別することを特徴とするプロセッサ。
【請求項１４】
請求項８において、前記第一モードが、前記キャッシュメモリ内のインデックスしたキャッシュラインの全てのウエイが検索される単一サイクルアクセスを有しており、且つ前記第二モードが、１つを超えるアクセスを必要とし且つ前記インデックスしたキャッシュライン内のヒットウエイのみが検索されるアクセスを有していることを特徴とするプロセッサ。
【請求項１５】
プロセッサ内のキャッシュアクセス命令の実行を制御する方法において、
第一モードか又は前記第一モードより増加した待ち時間を有する第二モードのいずれかにおいてアクセス可能な連想キャッシュメモリへアクセスするための少なくとも１つのキャッシュアクセスメモリを包含する命令からなるシーケンスの実行期間中に、１つ又はそれ以上のキャッシュアクセス命令が前記命令からなるシーケンスの実行に対して実質的な性能ペナルティを発生させることなしに増加した待ち時間で実行させることが可能であるか否かを判別し、
実質的な性能ペナルティを発生させることなしに前記１つ又はそれ以上のキャッシュアクセスメモリ内の少なくとも１つのキャッシュアクセスメモリを増加した待ち時間で実行させることが可能であることの判別に応答して、前記少なくとも１つのキャッシュアクセス命令に対して前記キャッシュメモリのアクセスを前記第二モードへ動的に設定する、
ことを特徴とする方法。
【請求項１６】
請求項１５において、更に、前記命令からなるシーケンスの完了後に前記キャッシュメモリを前記第一モードへ動的に設定することを特徴とする方法。
【請求項１７】
請求項１５において、前記命令からなるシーケンスの実行に対して実質的な性能ペナルティを発生させることなしに１つ又はそれ以上のキャッシュアクセスメモリを増加した待ち時間で実行させることが可能であるか否かを判別する前記ステップが、
前記命令からなるシーケンスがハードウエアループを有しているか否かを判別する、
ことを包含していることを特徴とする方法。
【請求項１８】
請求項１７において、前記命令からなるシーケンスがハードウエアループを有しているか否かを判別する前記ステップが、更に、
現在のプログラムカウンタをループ端部アドレスと比較し、又は、
ループ識別命令を検知する、
ことを包含していることを特徴とする方法。
【請求項１９】
請求項１７において、更に、前記命令からなるシーケンスがプリフェッチバッファ内に当て嵌まるハードウエアループを有していることの判別に応答して、前記ハードウエアループの残りの爾後の繰返し期間中にキャッシュサブシステムの少なくとも一部をアイドル状態とさせる、ことを包含していることを特徴とする方法。
【請求項２０】
請求項１５において、更に、
実質的な性能ペナルティを発生させることなしに各キャッシュアクセス命令を増加した待ち時間で実行させることが可能であるか否かを自動的に判別する、
ことを包含していることを特徴とする方法。
【請求項２１】
請求項１５において、前記第一モードが、前記キャッシュメモリ内のインデックスしたキャッシュラインの全てのウエイが検索される単一サイクルアクセスを包含しており、且つ前記第二モードが、１つを超えるサイクルを必要とし且つ前記インデックスしたキャッシュライン内のヒットウエイのみが検索されるアクセスを包含していることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大略、プロセッサアーキテクチャにおける性能／パワーのトレードオフに関するものであって、更に詳細には、実質的に性能を劣化させることなしにプロセッサ内のキャッシュアクセスの電力消費を減少させる技術に関するものである。
【背景技術】
【０００２】
現在のプロセッサは、通常、性能を改善するためにキャッシュを使用している。キャッシュは、メインメモリへアクセスするために必要とされるよりもより少ないサイクルでデータ及び／又は命令をプリフェッチし且つ実行ユニットに対してアクセス可能なメモリへ格納させることを可能とする。従って、所要のデータ又は命令を検索することに関連する待ち時間（遅延）を減少させることにより性能が改善される。然しながら、レイテンシーが低いことはより高い電力消費であることを意味する。
【０００３】
然しながら、幾つかの適用例においては、プロセッサにより電力消費は重要な考慮事項である。例えば、ＵＳＢ接続を介して使用可能なパワー即ち電力が制限されるユニバーサルシリアルバス（ＵＳＢ）接続を介して電力が供給されるアドバンスト・デジタル・サブスクライバー・ライン（ＡＤＳＬ）通信に対しての加入者宅内装置（ＣＰＥ）に対して電力消費は顕著な懸念事項である場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、実質的に性能を劣化させることなしに電力消費を減少させることによりプロセッサの性能／パワーの比を改善する技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
従来技術の上述した欠点に対処するために、本発明の主要な目的とするところは、ハードウエアループの実行等の著しい性能ペナルティを発生させることのない命令クラスターに対して単一サイクルアクセス待ち時間から関連するセットアソシエイティブキャッシュに対する２サイクルアクセス待ち時間へ自動的に且つ動的にスイッチングするためのメカニズムをプロセッサにおいて使用するために提供することである。１つを超えるサイクルが関与するアクセスはより少ないパワー即ち電力を使用する。何故ならば、インデックスされたキャッシュライン内の全てのウエイ（ｗａｙ）ではなく、キャッシュメモリ内のヒットウエイのみがアクセスされるに過ぎないからである。性能を維持するために、単一サイクルキャッシュアクセスが全ての残りの命令において使用される。更に、ハードウエアループ内の命令クラスターがプリフェッチバッファ内に完全に納まる場合には、キャッシュ制御器は、電力消費を更に減少させるためにハードウエアループの残りの繰返しに対しアイドル状態とされる。
【発明を実施するための最良の形態】
【０００６】
以下に説明する図１乃至４、及び本明細書において本発明の原理を説明するために使用する種々の実施例は、単に例示的なものに過ぎないものであって、本発明の技術的範囲を制限する態様で解釈されるべきものではない。当業者は、本発明の原理が適宜構成された任意の装置において実現することが可能であることを理解するものである。
【０００７】
図１は本発明の１実施例に基づく性能／パワーの改善を実現するプロセッサのハイレベルのブロック図を示している。プロセッサ１００は、１つ又はそれ以上の実行ユニット１０１、及びシステムメモリ（不図示）と実行ユニット１０１との間の少なくとも１つのオンチップレベル１（Ｌ１）キャッシュ１０２を有している。キャッシュ１０２はデータキャッシュ、命令キャッシュ、又は結合型データ及び命令キャッシュとすることが可能である。更に、１つのキャッシュのみ図示してあるが、プロセッサは独立的なデータ及び命令キャッシュを包含することが可能である。例示的実施例においては、キャッシュ１０２は命令（又はプログラム）キャッシュであり、且つプロセッサ１００はＳＴマイクロエレクトロニクス、インコーポレイテッドから入手可能なＳＴ１００ファミリーのプロセッサのうちの１つである。以下に説明する特定の例においては、プロセッサ１００は２つの完全に並列な演算論理ユニット（ＡＬＵ）を有しており、且つ完全なＤＳＰ／ＭＣＵ能力を提供する１６ビット／３２ビットデジタル信号処理／マイクロコントローラユニット（ＤＳＰ／ＭＣＵ）アーキテクチャに基づいたデュアル乗算・累算（ＭＡＣ）ユニットＳＴ１００実現プロセッサコアである。該プロセッサは、４×３２ビットスコアボード（Ｖｅｒｙ）ロング・インストラクション・ワード（ＳＬＩＷ）を使用しており、包括的な３２ビット命令セット（ＧＰ３２）及び高コード密度（ＧＰ１６）及び別の命令モードに向けて指向された１６ビット命令セットに基づいて構築されており、ＤＳＰ演算に対して適した増加したレベルの並列性を提供している。
【０００８】
コアを実現するプロセッサ１００は、又、プログラムメモリ拡張（ＰＭＸ）と呼称されるプログラムメモリキャッシュサブシステムを包含している。ＰＭＸは形態特定可能なレベル１プログラム（命令）キャッシュ及びレベル２プログラムメモリを提供している。レベル１プログラムキャッシュは４ウエイセットアソシエイティブであり、４キロバイト（ＫＢ）乃至３２ＫＢの範囲のキャッシュメモリ寸法をサポートしている。
【０００９】
当業者が理解するように、説明の便宜上、プロセッサ１０２の完全なる構成及び動作についての説明は割愛する。その代わりに、本発明にとって独特であり又は本発明の理解のために必要な範囲でプロセッサ１０２の構成及び動作について説明を行う。
【００１０】
キャッシュ１０２はキャッシュディレクトリー１０３と、キャッシュメモリ１０４と、キャッシュ制御器１０５とを包含するセットアソシエイティブキャッシュである。セットアソシエイティブキャッシュの場合には、複数個のキャッシュライン１０６ａ−１０６ｎ（典型的に、メモリアドレスの一部によりインデックスされる）の各々が複数個のウエイ（ｗａｙ）１０７ａ−１０７ｎを有しており、その中において、対応するインデックスを有する全てのデータ又は命令が格納される。メモリアドレスの残部であるタグは、与えられたインデックスされたキャッシュライン１０６ａ−１０６ｎ内のエントリを区別するためにキャッシュディレクトリー１０３内において使用される。セットアソシエイティブキャッシュについて本明細書において説明するが、本発明は、フルアソシエイティブキャッシュの場合に使用することも可能である。
【００１１】
性能上の理由から、プロセッサは、典型的に、単一サイクルでキャッシュアクセスを実施する。キャッシュインデックスは、キャッシュディレクトリー１０３及びキャッシュメモリ１０４の両方における全体的なキャッシュライン１０６ａ−１０６ｎへアクセスするために使用され、タグ比較がキャッシュディレクトリー１０３内において実施されて適宜のウエイ１０７ａ−１０７ｎを識別し、次いで該タグ比較に基づく最近の選択を使用してキャッシュメモリ１０４から正しいウエイ（ｗａｙ）を出力する。
【００１２】
一方、２つのサイクルのレイテンシー即ち待ち時間でパイプライン型キャッシュアクセスを実施することが可能であり、初期的にキャッシュディレクトリー１０３内もインデックスしたキャッシュラインのみをアクセスし且つタグ比較を実施して正しいウエイを決定し、次いでキャッシュメモリ１０４に対して適切なキャッシュライン内の「ヒット」ウエイのみをアクセスする。このようなキャッシュアクセス処理の分割は、公称的に、レイテンシー即ち待ち時間において付加的なサイクルの性能上のペナルティを発生する。キャッシュメモリ１０４内の全体的なキャッシュラインに属する全てのウエイは単一サイクルキャッシュアクセス期間中に読取られるので、２サイクルキャッシュアクセスにおけるように正しいウエイのみではなく、単一サイクルキャッシュアクセス期間中により多くのパワー即ち電力が消費される。
【００１３】
単一サイクルキャッシュアクセスで達成される性能上の改善のかなりの部分は、１サイクルだけ、正しくない分岐予測と関連するレイテンシー即ち待ち時間である分岐ペナルティの減少が関与する。以下に更に詳細に説明するハードウエアループにおける命令クラスターに対するような、性能ペナルティを発生させることなしに２サイクルキャッシュアクセスを実施することが可能な幾つかのプログラムセグメントが存在している。然しながら、その他のプログラムセグメントに対して良好な性能を維持するために、１サイクルキャッシュアクセスと２サイクルキャッシュアクセスとの間のスイッチングは、ブートアップ、ソフトリセット又はその他のスタートアップシーケンスにおいて固定されているものではなくダイナミック即ち動的なものとすべきである。更に、１サイクルキャッシュアクセスか又は２サイクルキャッシュアクセスのいずれを実施すべきかの判別は、キャッシュアクセス命令を修正することによりプログラマーに任せられるべきではない。何故ならば、このような命令に基づいた特徴はプログラマーにより不使用のままとなることが多々あるからである。
【００１４】
従って、本発明においては、キャッシュ制御器１０５は、キャッシュアクセスを、最も高い性能に対する１サイクルか又は最も低い電力消費に対する２サイクルのいずれかに動的に設定する。２サイクルモードにおいては、キャッシュメモリの選択したウエイのみが活性化され、一方その他の３つのウエイは不活性状態のままであり、顕著な電力の節約となる。単一サイクルアクセスに対する電力消費は２サイクルアクセスのものよりも約３倍高い。電力の節約は、２サイクルアクセスの場合に第一サイクルを使用してキャッシュタグへアクセスし且つウエイ選択のためにヒット信号を発生し、次いで、それを使用してデータを読取るための次のサイクル期間中にキャッシュメモリ１０４内のウエイを選択するという事実に帰着させることが可能である。対照的に、キャッシュディレクトリー１０３内のタグとキャッシュメモリ１０４内の４つのウエイの全ての両方が１サイクルキャッシュアクセスの場合においては同一のサイクル期間中に選択される。３２及び１６ＫＢキャッシュ寸法の両方に対するメガヘルツ当たりのマイクロワット（μＷ／ＭＨｚ）単位における比較電力消費推定値を以下の表１に示してある。
【００１５】
【表１】
2004164622.tif 000003
【００１６】
図２は本発明の１実施例に基づいて性能／パワーを改善するためにキャッシュアクセスレイテンシー（待ち時間）を動的に設定するプロセスに対するハイレベルのフローチャートである。プロセス２００はプロセッサ１００内において実行され、且つ実行のための命令フェッチ要求の受領で開始する（ステップ２０１）。命令フェッチ要求がキャッシュアクセスを包含するか否かに関しての判別が行われ（ステップ２０２）、そうである場合には、実質的な性能ペナルティを発生することなしに増加したレイテンシー即ち待ち時間（即ち、１サイクルではなく２サイクル）で該命令を実行することが可能であるか否かに対する判別が行われる（ステップ２０３）。
【００１７】
実質的な性能上のペナルティを発生することなしにキャッシュアクセスのレイテンシー即ち待ち時間を増加させることが可能である場合には、該キャッシュアクセスは増加したレイテンシー即ち待ち時間でパイプライン型の態様で実行される（ステップ２０４）。そうでない場合には、該キャッシュアクセスは最小のレイテンシー即ち待ち時間で実施される（ステップ２０５）。キャッシュアクセスが実行されると、該プロセスは、別の命令フェッチ要求が実行のために受領されるまでアイドル状態となる（ステップ２０６）。
【００１８】
本明細書に記載した例示的な実施例は１サイクルキャッシュアクセスと２サイクルキャッシュアクセスとの間の動的なスイッチングに関連するものであるが、本発明は１サイクルキャッシュアクセスと１を超えるサイクルのキャッシュアクセスとの間のスイッチングに対しても同じく適用可能である。例えば、フルサイクルではなくタグをマッチさせるために１／２（又は任意の割合的量）サイクルを使用することが可能である。従って、本発明は、１サイクルキャッシュアクセスと１．５サイクルキャッシュアクセスとの間、１サイクルキャッシュアクセスと３サイクルキャッシュアクセスとの間等の間においてスイッチするために使用することが可能である。
【００１９】
図３は本発明の１実施例に基づく単一サイクルキャッシュアクセスと２サイクルキャッシュアクセスの両方に対するパイプラインを示している。図示したパイプラインはデュアルＭＡＣＳＴ１００インプリメンテーション（実現）プロセッサコア内において実現される。明らかなように、単一サイクルアクセスは１サイクルだけ誤って予測された分岐に対する分岐ペナルティを減少させ、性能を改善する。
【００２０】
図３の例示的なパイプラインにおいて、各ボックスはプロセッササイクルを表わしている。命令フェッチがキャッシュ制御器ＰＭＸ内において開始し、その場合に、単一サイクルキャッシュアクセス及び２サイクルキャッシュアクセスの両方に対して少なくとも１つのサイクルＰ１が使用され且つ２サイクルキャッシュアクセスにより２番目のサイクルＰ２も使用される（然しながら、単一サイクルキャッシュアクセスによっては使用されない）。制御ユニットＣＵ内において、アライメント動作ＡＬ及びデコード動作ＤＥの各々が単一プロセッササイクルを消費する。
【００２１】
１つのパス即ち経路において、以下のステージの各々により１つのプロセッササイクルが使用される。即ち、アドレスユニットへのディスパッチステージＤＰAU、アドレスオペランドフェッチステージＡＯＦ、アドレスレジスタ実行ステージＡＲＰである。他方のパス即ち経路において、以下のステージの各々により１つのプロセッササイクルが使用される。即ち、データユニットへのディスパッチステージＤＰDU、データオペランドフェッチステージＤＯＦ、動作に依存して１つ又は２つの実行フェーズＥＸ１及びＥＸ２である。メモリアクセス要求ＭＲＱ及びメモリアクセスＭＥＭは各々単一プロセッササイクルを消費する。
【００２２】
図示したパイプライン内において、キャッシュ制御器ＰＭＸは単一サイクルＰ１において又は２つのサイクルＰ１及びＰ２においてキャッシュアクセスを実施することが可能であり、且つより長いレイテンシー即ち待ち時間に対して実質的な性能ペナルティが発生するか否かに依存してキャッシュアクセスレイテンシー（待ち時間）を動的にスイッチする。
【００２３】
実質的な性能ペナルティなしで増加したレイテンシー即ち待ち時間でキャッシュアクセスを実施することが可能な１つの状況はハードウエアループ内の命令クラスターが関与する場合である。該コアは、ゼロのオーバーヘッド分岐で最大で３つの入れ子型ハードウエアループをサポートする。ハードウエアループに対するゼロのオーバーヘッド分岐は分岐ペナルティがないことを示す。この特徴はデジタル信号処理カーネルにより広範に使用され、そのことはある適用例の最大で８０％を占める場合がある。ハードウエアループが分岐ペナルティを発生することがないので、このようなハードウエアループ内のキャッシュアクセスは単一サイクルか又は２サイクルのいずれかのキャッシュアクセスモードにおいてほぼ同等の性能を与えることが可能である。
【００２４】
コアに対してハードウエアループを表示する既存のメカニズムはハードウエアループ当たり３個のパラメータをプログラミングすることによるものであり、即ち、ループスタートレジスタ（ＬＳＲ）１０８内のハードウエアループの開始アドレス、ループエンドレジスタ（ＬＥＲ）１０９内のハードウエアループの終端アドレス、及びループカウントレジスタ（ＬＣＲ）１１０内のハードウエアループに対するリピートカウントである。これらのアドレス及びカウントはハードウエアループの実行を検知するためにプリフェッチバッファ論理１１１により使用される。更に、ハードウエアループがプリフェッチパイプラインステージにおいて検知され且つ対応するループカウンタが１に等しくない場合には、ハードウエアループ（０，１，２）当たりの個別的なオン／オフビット１１２がセットされ、且つハードウエアループ一貫性エラーが発生する場合、又はバリア命令に起因する強制的再フェッチの場合に、何等かのプログラムの不連続性（分岐、コール、ＩＴ、トラップ等）が発生するや否やクリアされる。
【００２５】
擬似コードで与えられる以下のアルゴリズムは該コアが（多分入れ子型の）ハードウエアループを実行しているか否かを判別するために使用される。
【００２６】
【数１】
2004164622.tif 000004
【００２７】
上述した例の擬似コードリスティングはループエンドアドレスのマッチに基づいてハードウエアループを検知する。別の実施例は、キャッシュレイテンシー制御論理に対してハードウエアループの実行を表示するための明示的命令エンコーディングを使用するか、又はハードウエアループの実行を推測する適宜の論理を具備する分岐予測器を使用して、ループスタートアドレスに基づいてハードウエアループの検知を包含することが可能である。
【００２８】
少なくとも１つのハードウエアループ（多分入れ子型ハードウエアループを包含している）の実行を検知すると、信号「ｉｎＬｏｏｐ２ＰＭＸ」が該コアによりキャッシュ制御器１０５へ駆動される。それに応答して、キャッシュ制御器１０５が継ぎ目のない態様で２サイクルキャッシュアクセスモードへスイッチし且つそれにより電力の節約を与える。ハードウエアループの実行を完了すると、キャッシュ制御器１０５は単一サイクルキャッシュアクセスへ復帰する。従って、モード間のスイッチは、ユーザプログラムによる明示的な表示なしで動的な態様で達成され、プロセッサ１００は非ＤＳＰプログラムセグメントに対しては１サイクルキャッシュアクセスモードで動作し且つＤＳＰカーネル内のハードウエアループに対しては２サイクルキャッシュアクセスモードで動作し、電力消費においての顕著な節約を達成している。
【００２９】
複合ブロック有限インパルス応答（ＣＸＦＩＲ）カーネル及び４基底高速フーリエ変換（Ｒ４ＦＦＴ）カーネルの実行に対する性能ベンチマーク結果を以下の表２に示してあり、一方ハードウエアループを包含するプログラムセグメントに対する電力消費を以下の表３に示してある。
【００３０】
【表２】
2004164622.tif 000005
【００３１】
【表３】
2004164622.tif 000006
【００３２】
明らかなように、ハードウエアループに対する１サイクルキャッシュアクセスと２サイクルキャッシュアクセスとの間の動的スイッチングの性能に与える影響は無視可能なものである。然しながら、動的スイッチングは同一のグループの命令に対して、固定した１サイクルキャッシュアクセスと比較して約２０％の電力消費の全体的な節約を発生する。表３から明らかなように、動的スイッチングはキャッシュのみに対して５０％を超える節約を発生する。
【００３３】
上述したように、プログラムキャッシュに加えて、該コアは最大で４個のＳＬＩＷ命令又は最大で１６個のＧＰ３２命令を保持することが可能な４×１２８ビット内部プリフェッチバッファ１１２を有している。そのために、プリフェッチバッファ１１２内に当て嵌まる小さなハードウエアループに対して付加的な電力節約を達成することが可能である。このような場合において、ＰＭＸ制御論理をアイドル状態とさせることが可能であり、それによりＰＭＸ論理に対する電力消費を最小のものへ減少させる。プリフェッチバッファ管理論理が、ハードウエアループスタート及びエンドアドレスレジスタが該プログラムよりアップデートされる度に、ハードウエアループの寸法を計算する。プリフェッチしたハードウエアループがプリフェッチバッファ１１３内に当てはまる場合には、ＰＭＸ論理に対する要求は回避されＰＭＸ論理はアイドル状態へ送り込まれ、次いで該ループの完了と共に回復される。
【００３４】
図３の例ではループの終端を検知するためにループエンドアドレスを使用しているが、その元となる概念は、ハードウエアループと区別するために明示的なＬＯＯＰ命令を使用するプロセッサアーキテクチャ内の実現のために容易に修正することが可能である。
【００３５】
図４は本発明の１実施例に基づくハードウエアループの実行期間中に付加的な電力の節約のためのループレジスタパイプラインを示している。プリフェッチ論理が、各ハードウエアループがプリフェッチバッファ内において独立したものであるか否か（即ち、プリフェッチバッファの寸法より小さい）を自動的に判別する。そうである場合には、コードメモリに対する全ての更なるアクセスはブロックされ、一方ハードウエアループは実行し、顕著なる付加的な電力の節約を達成する。
【００３６】
パイプラインは、第一キャッシュアクセスサイクルＰ１の開始における次のプログラムカウンタ（ＰＣ）値のアドレスにおけるフェッチで開始する。分岐の場合、プログラムカウンタがジャンプすべき即値（Ｉｍｍ）アドレスか、又は現在のプログラムカウントへ付加すべきプログラムレジスタＰ３又はリンクレジスタＬＫからのアドレスインクリメントのいずれかを受取る。プログラムカウンタフェッチ機能がこれらの値から選択を行い且つ次の命令に対する適宜のプログラムカウンタアドレスを決定する。正しいプログラムカウンタがサイクルＰ１の終りによりプログラムメモリ制御器ＰＭＣ（ＰＭＸキャッシュ制御器の一部）へ転送される。
【００３７】
更に、現在のプログラムカウンタが現在実行中のループに対するループエンドアドレス（ＬＥＡ）と比較（＝）される。ループエンドアドレスのヒット（マッチ）が判別され且つ現在実行中のループ（ｘ＝０，１，２）に対するループカウントレジスタ（ＬＣＲ）が１より大きな値を有している場合には、存在する場合により高いループ（ｗ＝０，１）に対するループスタートレジスタ（ＬＳＲ）内のアドレスがフェッチプログラムカウンタ機能により選択される。
【００３８】
サイクルＰ２期間中に、プログラムメモリ制御器が次の命令をプログラムフェッチバッファ（ＰＦＢ）内へロードし、該命令はサイクルＡＬ期間中に整列されてデコーディングの準備がされた命令ＩＮＳＴＲを生成する。ループスタートレジスタ（ＬＳＲ）内のループスタートアドレス（ＬＳＡ）及びループエンドレジスタ（ＬＥＲ）内のループエンドアドレス（ＬＥＡ）を設定する命令は、ハードウエアレジスタの実行の前に実行される。ループエンドレジスタＬＥＲ内のループエンドアドレスＬＥＡとループスタートレジスタＬＳＲ内のループスタートアドレスＬＳＡとの差異が計算され（ＬＥＡ−ＬＳＡ）、そのループがプリフェッチバッファ内に完全にフィットすることが可能であるか否かを判別する。ループエンドアドレスがフェッチアドレスとマッチする場合のその後の命令フェッチに関し、対応するループカウントは１より大きく、且つ該ループはプリフェッチバッファ内に完全にフィットするものとして特性付けられ、該命令はキャッシュの代わりにプリフェッチバッファからフェッチされ、それにより付加的な電力節約を与える。これらの条件下において、該コアが実行モードのうちのいずれか、即ちＧＰ１６、ＧＰ３２又はＳＬＩＷのいずれかにある場合にプリフェッチバッファを使用することが可能である。
【００３９】
本発明はその他の場合に対してより短いレイテンシー即ち待ち時間を維持しながら、顕著な性能のペナルティが発生することがない場合にキャッシュアクセスのより低いパワーでの実行を可能とさせる。該例示的実施例はデジタル信号プロセッサ／マイクロコントローラ内のハードウエアループの実行に関連するものであるが、セットアソシエイティブキャッシュを具備する異なる命令セットアーキテクチャ（ＩＳＡ）を使用するその他のタイプのプロセッサに対して同様の命令クラスターを識別することが可能である。
【００４０】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【００４１】
【図１】本発明の１実施例に基づく性能／パワーの改善を実現するプロセッサのハイレベルのブロック図。
【図２】本発明の１実施例に基づく性能／パワーを改善するためにキャッシュアクセスレイテンシー（待ち時間）を動的に設定するプロセスを示したハイレベルのフローチャート。
【図３】本発明の１実施例に基づく単一サイクルキャッシュアクセスと２サイクルキャッシュアクセスの両方に対するパイプラインを示した概略図。
【図４】本発明の１実施例に基づいてハードウエアループの実行期間中における付加的な電力の節約に対するループレジスタパイプラインを示した概略図。
【符号の説明】
【００４２】
１００  プロセッサ
１０１  実行ユニット
１０２  レベル１（Ｌ１）キャッシュ
１０３  キャッシュディレクトリー
１０４  キャッシュメモリ
１０５  キャッシュ制御器
１０６  キャッシュライン
１０７  ウエイ
【図１】
2004164622.tif 000007
【図２】
2004164622.tif 000008
【図３】
2004164622.tif 000009
【図４】
2004164622.tif 000010