(57)【特許請求の範囲】
【請求項１】
待ち時間の相対的に長い第１のタイプの命令と待ち時間の相対的に短い第２のタイプの命令を実行可能なプロセッサにおいて実現される方法であって、
前記プロセッサは第１のモードと第２のモードにより動作可能であり、
前記方法は、
前記プロセッサにおいて実行されるコードにおける前記第１のタイプの命令の個数をカウントするカウントステップと、
前記カウントステップによりカウントされた前記第１のタイプの命令の個数が閾値未満である場合に、前記プロセッサを前記第１のモードで動作させ、前記第１のモードにおいては、前記プロセッサのサイクル周波数を、前記第２のモードにおける前記プロセッサのサイクル周波数よりも高いものとし、かつ、前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数を、前記第２のモードにおける前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数よりも大きいものとする、第１モードステップと、
前記カウントステップによりカウントされた前記第１のタイプの命令の個数が閾値以上である場合に、前記プロセッサを前記第２のモードで動作させ、前記第２のモードにおいては、前記プロセッサのサイクル周波数を、前記第１のモードにおける前記プロセッサのサイクル周波数よりも低いものとし、かつ、前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数を、前記第１のモードにおける前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数よりも小さいものとする、第２モードステップと、
を含む方法。
【請求項２】
待ち時間の相対的に長い第１のタイプの命令と待ち時間の相対的に短い第２のタイプの命令を実行可能なプロセッサを備えるデータ処理システムであって、
前記プロセッサは、第１のモードと第２のモードにより動作可能であり、
前記プロセッサは、
前記プロセッサにおいて実行されるコードにおける前記第１のタイプの命令の個数をカウントするカウント手段と、
前記カウント手段によりカウントされた前記第１のタイプの命令の個数が閾値未満である場合に、前記プロセッサを前記第１のモードで動作させ、前記第１のモードにおいては、前記プロセッサのサイクル周波数を、前記第２のモードにおける前記プロセッサのサイクル周波数よりも高いものとし、かつ、前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数を、前記第２のモードにおける前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数よりも大きいものとする、第１モード設定手段と、
前記カウント手段によりカウントされた前記第１のタイプの命令の個数が閾値以上である場合に、前記プロセッサを前記第２のモードで動作させ、前記第２のモードにおいては、前記プロセッサのサイクル周波数を、前記第１のモードにおける前記プロセッサのサイクル周波数よりも低いものとし、かつ、前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数を、前記第１のモードにおける前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数よりも小さいものとする、第２モード設定手段と、
を備えるものである、データ処理システム。
【請求項３】
待ち時間の相対的に長い第１のタイプの命令と待ち時間の相対的に短い第２のタイプの命令を実行可能なプロセッサであって、
第１のモードと第２のモードにより動作可能であり、
前記プロセッサにおいて実行されるコードにおける前記第１のタイプの命令の個数をカウントするカウント手段と、
前記カウント手段によりカウントされた前記第１のタイプの命令の個数が閾値未満である場合に、前記プロセッサを前記第１のモードで動作させ、前記第１のモードにおいては、前記プロセッサのサイクル周波数を、前記第２のモードにおける前記プロセッサのサイクル周波数よりも高いものとし、かつ、前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数を、前記第２のモードにおける前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数よりも大きいものとする、第１モード設定手段と、
前記カウント手段によりカウントされた前記第１のタイプの命令の個数が閾値以上である場合に、前記プロセッサを前記第２のモードで動作させ、前記第２のモードにおいては、前記プロセッサのサイクル周波数を、前記第１のモードにおける前記プロセッサのサイクル周波数よりも低いものとし、かつ、前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数を、前記第１のモードにおける前記第１のタイプの命令を前記プロセッサが実行する際に用いるサイクル数よりも小さいものとする、第２モード設定手段と、
を備えるプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ・プロセッサに関し、とりわけ、プロセッサ実行周波数に関する命令スループットの改善に関する。
【背景技術】
【０００２】
関連出願
本出願は、本願譲受人に譲渡された、「Ａｄａｐｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ  Ｆｒｅｑｕｅｎｃｙ  Ｃｏｎｔｒｏｌ  Ｍｅｔｈｏｄ  Ｆｏｒ  Ｅｎｈａｎｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｔｈｒｏｕｇｈｐｕｔ」という名称の、同時に出願された、同時係属の米国特許出願（譲受人整理番号第ＲＰＳ９２００７００４８ＵＳ１号）の主題に関する。
【０００３】
命令実行スループットは、プロセッサ効率の重要な尺度である。このスループットは、中央処理ユニット（ＣＰＵ）がその上で実行中の命令を処理することが可能な周波数に直接相関する。従来のＣＰＵコアは、通常、高周波数で実行するように設計されるが、実行周波数を指示するクリティカル・サブユニットによって、実際の実行周波数において制限される。すなわち、ＣＰＵコアは、クリティカル・サブユニットによってサポートされる最高周波数で命令を実行し、これは通常、プロセッサの最高設計周波数よりも低い。これらのサブユニットは、周波数制限動作である、乗算動作などの特定タイプの動作を実行する、プロセッサ・パイプラインの実行ステージを含む。サブユニットは、特定タイプの動作の実行をより高いプロセッサ周波数で完了することができないため、ＣＰＵの最高周波数動作を制限する。一部のプロセッサ設計では、特定タイプの動作でのこうしたより高い周波数での実行を試みると、実行パスにエラーあるいは停止またはその両方を生じさせることになり、事実上、プロセッサ・スループットが低下する。
【０００４】
周波数制限動作（一連の乗算命令などの）は、命令実行ストリーム内ではほとんど実行されないが、特にこれらの命令が命令ストリーム内で実行される場合、プロセッサの周波数およびスループットを下限値まで低下させる。たとえば、乗算命令は完了するために３つのサイクルを実行する可能性があり、スループットが８０％しか与えられず、周波数の効果が制限される。これらの乗算命令に対処するために、常にプロセッサ動作をスループットの８０％に制限し、すべての命令に対する処理シーケンス全体が８０％で実行される。一例として、実行パイプにおける乗算動作が（現在の設計に基づいて）８００ＭＨｚに制限される。プロセッサの周波数が１０００ＭＨｚであれば、乗算動作は高周波数実行に対する制限要素となる。
【０００５】
これらのサブユニットによって導入される周波数制限に対処するために、一定の機能強化が実施または提案されている。たとえば一設計では、実行パイプ内に追加のステージが導入される。乗算サブユニットにステージを追加することは、周波数を増加させるための１つの方法であるが、このステージの追加は待ち時間を悪化させ、チップ面積を増加させる。他の設計では、一定量の並列処理が提供され、周波数制限要素をより高速に処理させるために追加のトランジスタが導入される。しかしながら、これらの提案はどちらもプロセッサ・ダイ上のかなり多くのハードウェアに関連し、結果としてより大きな面積要件、より多くの電力消費、および関連するコストの増加を発生させる。
【０００６】
こうした提案は、高密度のシステム・オン・チップ（ＳｏＣ）に望ましい設計からは正反対の設計オプションにつながる。現在のＳｏＣ設計では、チップ上の面積を低減させることおよび電力効率の良い設計を作成することに焦点が当てられてきている。電圧アイランド、適合電圧制御、ソフトウェア電圧制御、適合周波数制御などの最新の方法は、すべて、電力効率、あるいは、最高レベルの性能を維持しながら特定用途向け集積回路（ＡＳＩＣ）／ＳｏＣの電力を低下させるための努力、またはその両方に焦点が当てられている。
【０００７】
ＰＰＣ４ｘｘ  ＣＰＵコアは、３２ビット汎用マイクロプロセッサ領域での、性能／電力能力に関する業界における主要なＣＰＵコアの１つである。９０ｎｍ、６５ｎｍ、および４５ｎｍへの技術の出現により、ＡＳＩＣ電力密度は、最も重要な設計障害の１つになっている。ＣＰＵコアはＡＳＩＣの主要機能の一部であり、いずれの他の機能構成要素よりも高速で実行するように設計されるため、ＣＰＵ／マイクロプロセッサ・コアは、ＡＳＩＣの電力効率および性能を向上させる上での主な焦点である。ＣＰＵコア内には多数の機能構築ブロックがあり、それぞれが専用の電力／性能属性を備える。したがって、コア内のユニットまたはサブユニットの小規模セットが、これらユニットの性能属性を制限する動作制約を有することは珍しくない。これらユニットは、周波数制限動作を処理する実行ステージ内のそうしたユニットであるという傾向がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって前述のように、これらユニットが、ＣＰＵ全体の総合的な性能（すなわちスループット）に影響を与えるか、または、所望の性能を達成するために電力効率を犠牲にして構成要素を追加して設計される可能性がある。
【課題を解決するための手段】
【０００９】
周波数制限動作（一連の乗算命令など）を実行する場合に、プロセッサ内の機能ユニットの実行周波数を適応的および選択的に制御することによって、プロセッサのスループットを向上させるための、方法、システム、およびコンピュータ・プログラム製品が開示される。第１の実施形態では、プロセッサ・レベル（周波数）制御システムが、従来の周波数制限動作である（すなわち、プロセッサ周波数にかなりの速度低下を生じさせる）、様々な算術演算および論理演算に関するプロセッサの（クロック）周波数を選択的に変更する。プロセッサ・レベル周波数制御システムは、コンパイル済み実行コードを監視し、たとえば乗算動作の事前設定数などの一連の特定タイプの命令／動作が、プロセッサによる実行のためにキューに入れられるタイミングを認識する、ユーティリティまたは論理／回路を提供する。周波数制御システムは、最高の乗算動作スループットを可能にするために、プロセッサの周波数を、より高位の（通常の）周波数から事前に確立されたより低位の最適周波数へと、動的に調整する。その後、周波数制御システムは、一連の（乗算）動作が完了すると、プロセッサ周波数をより高位の周波数へと再調整する。一実施形態では、周波数制御システムは、プロセッサの動作周波数を設定するプロセッサに関連付けられたクロックおよび電力管理ユニットをトリガすることによって、プロセッサ周波数を調整する。
【００１０】
他の実施形態では、パイプライン・ステージ・レベルのモード制御システムが実装される。パイプライン・ステージ・レベルのモード制御システムは、実行パイプラインの特定ステージで一連の特定タイプの動作を実行する場合、プロセッサのクロック周波数の代わりにハードウェア制御可能サイクルを導入する。モード制御システムは、プロセッサ内に統合可能であり、プロセッサの特定の実行パイプライン・ステージに関連付けることが可能な、１つ以上の命令サイクル管理（ＩＣＭ）論理／回路を含む。モード制御システムは、プロセッサによる実行に関してスケジューリングされた、特定タイプ（たとえば乗算動作）の連続動作の数をカウントする。特定タイプの動作の数が一定の閾値カウントを超える場合、モード制御システムはＩＣＭ論理に対して、命令当たりの（プロセッサ周波数とは無関係な）追加サイクルを、特定の実行パイプライン・ステージで発生する動作に挿入するように指示する。ＩＣＭ論理は、単一の「命令当たりサイクル」動作モードから、事前に定義された「命令当たり複数サイクル」モードに変更し、これによってそれぞれの特定タイプ動作を完了するために必要なサイクル数が増加する。したがって、これら特定タイプ動作のスループットを向上させるために、「命令当たりサイクル」（すなわち動作当たりのサイクル数）周波数が増加する。特定タイプ動作の数が閾値未満であれば、モード制御システムは、サイクル周波数を、標準タイプ動作に関する通常の命令当たり１サイクルで維持する（またはサイクル周波数をこのサイクルに戻す）。
【００１１】
周波数／モード制御システムは、基本周波数での標準動作に関する命令待ち時間および命令当たりスループットを動的にサポートする一方で、ＣＰＵ性能に大きな影響を与えることなく、ＣＰＵスループットを向上させ、ＣＰＵ動的電力使用量を低減させるために、より高位の命令当たりサイクルまたはより下位の最適な周波数で、特定タイプ命令を実行する。
【００１２】
本発明の前述ならびに追加の目的、特徴、および利点は、以下の詳細に記述された説明で明らかとなろう。
【００１３】
本発明それ自体、ならびにその好ましい使用モード、他の目的、および利点は、例示的な実施形態の以下の詳細な説明を添付の図面に関して参照することにより、最も良く理解されるであろう。
【発明を実施するための最良の形態】
【００１４】
本発明は、データ・プロセッサにおける実行周波数、動作当たりのサイクル、および機能ユニットの電力使用量を適応的に制御するための方法、システム、およびコンピュータ・プログラム製品を提供する。本明細書では、本発明の２つの主な実装、すなわちプロセッサ・レベルの実装およびパイプライン・ステージ・レベルの実装について説明する。
【００１５】
プロセッサ・レベルの実装では、（周波数）制御システムが、様々な算術演算および論理演算に関するプロセッサの（クロック）周波数を選択的に変更する、ソフトウェア制御可能サイクルを実施する。プロセッサ・レベルの周波数制御システムは、ソフトウェア・ベース／制御または論理ベースとすることができる。どちらの方法も、コンパイル済み実行コードを監視し、たとえば乗算動作の事前設定数などの一連の特定タイプの命令／動作がプロセッサによる実行のためにキューに入れられるタイミングを認識する。周波数制御システムは、最高の乗算動作スループットを可能にするために、プロセッサの周波数を、より高位の（通常の）周波数から事前に確立されたより低位の周波数へと、動的に調整する。その後、周波数制御システムは、一連の（乗算）動作が完了すると、プロセッサ周波数をより高位の周波数へと再調整する。さらに周波数制御システムは、ＣＰＵ性能に大きな影響を与えることなく、プロセッサの動的電力を減少させるために、通常の命令待ち時間および命令当たりスループットをサポートする。
【００１６】
パイプライン・ステージ・レベルの実装は、プロセッサ周波数全体に影響を与えることなく、プロセッサの実行パイプライン内の特定ステージでハードウェアを介して実装されるモード制御システムを提供する。パイプライン・ステージ・レベルのモード制御システムは、実行パイプラインの特定ステージで一連の特定タイプの動作を実行する場合、プロセッサのクロック周波数の代わりにハードウェア制御可能サイクルを導入する。モード制御システムは、プロセッサ内に統合可能であり、プロセッサの特定の実行パイプライン・ステージに関連付けることが可能な、１つ以上の命令サイクル管理（ＩＣＭ）論理／回路を含む。モード制御システムは、プロセッサによる実行に関してスケジューリングされた、特定タイプ（たとえば乗算動作）の連続動作の数をカウントする。特定タイプの動作の数が一定の閾値カウントを超える場合、モード制御システムはＩＣＭ論理に対して、命令当たりの（プロセッサ周波数とは無関係な）追加サイクルを、特定の実行パイプライン・ステージで発生する動作に挿入するように指示する。ＩＣＭ論理は、単一の「命令当たりサイクル」動作モードから、事前に定義された「命令当たり複数サイクル」モードに変更し、これによってそれぞれの特定タイプ動作を完了するために必要なサイクル数が増加する。特定タイプの動作の数が閾値数を下回る場合、モード制御システムは、サイクル周波数が標準タイプ動作に関する通常のサイクル周波数であるか、またはこのサイクル周波数に戻ることを保証する。
【００１７】
ソフトウェア実装およびハードウェア実装の説明を明確に区別できるようにするために、本明細書には副題が提供される。また、ソフトウェア・ベースの周波数制御システムの諸実施形態は図２、図１０、図１１、および図１２に示され、ハードウェア・ベースのモード制御システムは図３、図４、および図５に示される。
【００１８】
本発明の例示的諸実施形態の以下の詳細な説明では、本発明が実施可能な特定の例示的諸実施形態が、当業者が本発明を実施できるように十分詳細に説明され、他の諸実施形態が使用可能であること、ならびに、論理、アーキテクチャ、プログラム、機械、電気、およびその他における変更が、本発明の趣旨または範囲を逸脱することなく実行可能であることを理解されよう。したがって以下の詳細な説明は限定的な意味で行われるのではなく、本発明の範囲は添付の特許請求の範囲によってのみ画定される。
【００１９】
図面の記述において、同様の要素には以前の図面のものと同様の名前および参照番号が与えられる。後出の図面が、異なるコンテキストにおける要素または異なる機能を備えた要素を使用する場合、その要素には図面番号を表す異なる先行数字が与えられる（たとえば、図１の場合は１ｘｘ、図２の場合は２ｘｘ）。要素に割り当てられた特定の数字は、説明に役立つためにのみ与えられるものであって、本発明に対するいかなる（構造上または機能上の）制限をも示唆するものではない。
【００２０】
特定のパラメータ名を使用することは、単なる例示のためであって、本発明に対するいかなる制限をも示唆するものではない。したがって本発明は、制限なしに、上記パラメータを説明するために使用される異なる命名法／用語で実施可能であることも理解されよう。本明細書で使用される頭字語および他の用語、ならびにそれらの意味／定義のリストを、以下に示す。
ＣＰＵ：中央処理ユニット
ＳｏＣ：システム・オン・チップ
ＡＳＩＣ：特定用途向け集積回路
ＰｏｗｅｒＰＣ４４０：ＩＢＭ  ＰｏｗｅｒＰＣアーキテクチャ・ベースの３２ビット組み込みプロセッサの１つ
ＭＡＣ：乗累算クラス命令
Ｌパイプ：ＰｏｗｅｒＰＣ４４０プロセッサ内の、ロードまたは格納クラス命令の実行パイプ
Ｉパイプ：ＰｏｗｅｒＰＣ４４０プロセッサ内の、乗算あるいは除算またはその両方の命令を含む、単純あるいは複雑またはその両方の整数クラス命令の実行パイプ
Ｊパイプ：ＰｏｗｅｒＰＣ４４０プロセッサ内の、単純整数クラス命令の実行パイプ
ＩＦＴＨステージ：命令フェッチ・ステージ
ＰＤＣＤステージ：事前復号ステージ、ＰＤＣＤ０およびＰＤＣＤ１がある
ＤＩＳＳステージ：復号および発行ステージ、ＤＩＳＳ０、ＤＩＳＳ１、ＤＩＳＳ２、ＤＩＳＳ３がある
ＬＲＡＣＣステージ：Ｌパイプ登録アクセス・ステージ
ＩＲＡＣＣステージ：Ｉパイプ登録アクセス・ステージ
ＡＧＥＮステージ：Ｌパイプ・アドレス生成ステージ
ＣＲＤステージ：Ｌパイプ・データ・キャッシュ読み取りステージ
ＬＷＢステージ：Ｌパイプ書き戻しステージ
ＩＥＸＥ１ステージ：Ｉパイプ実行ステージ１
ＩＥＸＥ２ステージ：Ｉパイプ実行ステージ２
ＩＷＢステージ：Ｉパイプ書き戻しステージ
ＪＥＸＥ１ステージ：Ｊパイプ実行ステージ１
ＪＥＸＥ２ステージ：Ｊパイプ実行ステージ２
ＪＷＢステージ：Ｊパイプ書き戻しステージ
ＭＭＵ：メモリ管理ユニット
ＴＬＢ：仮想アドレスから実アドレスへのページ変換に関するテーブル索引バッファ
ＤＰＳ：データ処理システム
ＵＳＢ：ユニバーサル・シリアル・バス
Ｉキャッシュ：命令キャッシュ
Ｄキャッシュ：データ・キャッシュ
ＡＰＵ：補助プロセッサ・ユニット
ＡＩＸ  ＯＳ：拡張対話式エグゼクティブ・オペレーティング・システム
Ｌｏｇ：論理演算
ＩＮＶ：インバータ
ＣＣＲ１：ハードウェア構成制御レジスタ１
Ｉｅｘｅ１ＭｕｌｔＵｎｉｔＥｎＬ２：ラッチされたＩＥＸＥ１乗算実行ユニット使用可能制御
Ｉｅｘｅ１ＭａｃＵｎｉｔＥｎＬ２：ラッチされたＩＥＸＥ１  ＭＡＣ実行ユニット使用可能制御
Ｉｅｘｅ１ＭｕｌｔＭａｃＵｎｉｔＥｎ：ＩＥＸＥ１乗算およびＭＡＣ実行ユニット使用可能制御
Ｉｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２：ラッチされたＩＥＸＥ１乗算およびＭＡＣ実行指定子
Ｉｅｘｅ２ＭｕｌｔＵｎｉｔＥｎＬ２：ラッチされたＩＥＸＥ２乗算実行ユニット使用可能制御
Ｉｅｘｅ２ＭａｃＵｎｉｔＥｎＬ２：ラッチされたＩＥＸＥ２  ＭＡＣ実行ユニット使用可能制御
Ｉｅｘｅ２ＭｕｌｔＭａｃＵｎｉｔＥｎ：ＩＥＸＥ２乗算およびＭＡＣ実行ユニット使用可能制御
Ｉｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２：ラッチされたＩＥＸＥ２乗算およびＭＡＣ実行指定子
ＩｗｂＭｕｌｔＯｒＭａｃＥ１：ＩＷＢステージ乗算またはＭＡＣオペランド・ラッチ１使用可能
ＥＵ＿ｍｕｌｔユニットＩｅｘｅ２：実行ユニットにおける乗算ユニットのＩＥＸＥ２ステージ
Ｉｅｘｅ２ＭｕｌｔＨｏｌｄ：乗算動作ホールド制御のＩＥＸＥ２ステージ
ＳＰＲ：専用レジスタ
ＧＰＲ：汎用レジスタ
【００２１】
次に図面を参照すると、図１は、本発明の機構を内部で有利に実装可能なＰｏｗｅｒ  ＰＣ４４０組み込みコアを示す。コア１００は、中央処理ユニット（ＣＰＵ）１０２、メモリ管理ユニット（ＭＭＵ）１０４、およびキャッシュ・ユニット１０５を備える。コア１００に関連付けられるのがサポート論理１１０である。ＣＰＵ  １０２は、（１）ロード／ストア・パイプ（Ｌパイプ）１０６、（２）単純整数パイプ１０７（Ｊパイプ）、および（３）複雑整数パイプ１０８（Ｉパイプ）という、３つの別個の実行パイプをさらに備える。この３つの実行パイプは、以下に記載される図３を用いて、さらに例示および説明される。一実施形態では、ＣＰＵ  １０２は、クロック当たり２命令を複数の実行ユニットおよびオプションの補助プロセッサ・ユニット（ＡＰＵ）にディスパッチすることが可能な、２重発行（dual issue）、７ステージ・パイプライン内の命令上で動作する。
【００２２】
ＣＰＵ  １０２は、汎用レジスタ（ＧＰＲ）１０９も含む。概念上、ＧＰＲ  １０９は３２ビットの汎用レジスタからなる。ＧＰＲ  １０９は、それぞれが３つの書き込みポートおよび３つの読み取りポートを含む３２ビット・レジスタを備える、２つの６ポート・アレイ（１つのアレイはＬパイプ・レジスタ・アクセス（ＬＲＡＣＣ）用、１つはＩパイプ・レジスタ・アクセス（ＩＲＡＣＣ）用）として実装される。すべてのＧＰＲ更新命令で、ファイルのコンテンツを同じく維持するために、適切なＧＰＲ書き込みポートが書き込まれる。しかしながらＧＰＲ読み取り時には、ＧＰＲ読み取りポートは、関連付けられたパイプのＲＡＣＣステージにディスパッチされる命令専用である。
【００２３】
ＭＭＵ  １０４は、複数の（メモリ）ページ・サイズならびに様々なストレージ保護の属性およびオプションをサポートする。複数ページ・サイズにより、変換検索バッファ（ＴＬＢ）の効率が上昇し、ＴＬＢミスの数が最小限に抑えられる。ＰＰＣ４４０は、１ＫＢ、４ＫＢ、１６ＫＢ、６４ＫＢ、２５６ＫＢ、１ＭＢ、１６ＭＢ、２５６ＭＢ、または１ＧＢの可能なページ・サイズの任意の組み合わせをＴＬＢ内で同時に使用するための柔軟性を、プログラマに与える。極端に大きなページ・サイズを有することで、ユーザが最低数のＴＬＢエントリでシステム・メモリを定義できるようにし、それによって、ＴＬＢの割り振りおよび置換を簡略化する。小さなページ・サイズは、データの小規模な実メモリ・スペースの割り振り、あるいは多くのユーザへのスペースの割り振り、またはその両方の場合に、より効率の良いメモリの使用を可能にする。
【００２４】
メモリ・アクセスは、プロセッサ・ローカル・バス（ＰＬＢ）インターフェースを介して、どちらもキャッシュ・ユニット１０５に含まれた命令キャッシュ（Ｉキャッシュ）１２０またはデータ・キャッシュ（Ｄキャッシュ）１２２との間で実行される。キャッシュ・ユニットに対してこれらの独立したバス・インターフェースを有することで、システム・スループットを最適化するための設計に最高の柔軟性をもたらす。キャッシュ内でヒットするメモリ・アクセス（ロード／ストア）は、単一サイクルのスループットを達成する。ＰＰＣ４４０は、８ワード（３２バイト）キャッシュ・ラインを備えた別の命令およびデータ・キャッシュを有する。キャッシュ・ユニット１０５は、低電力動作および高速ヒット／ミス決定を容易にするように、特別に編成される。
【００２５】
ＰＰＣ４４０コアは、ＰｏｗｅｒＰＣ  ４００ファミリのメンバとして、ＩＢＭ  ＰｏｗｅｒＰＣ  Ｅｍｂｅｄｄｅｄ  Ｔｏｏｌｓ（ＴＭ）プログラムによってサポートされる。ＰＰＣ４４０向けの開発ツールは、Ｃ／Ｃ＋＋コンパイラ、デバッガ、バス機能モデル、ハードウェア／ソフトウェア・コシミュレーション（co-simulation）環境、およびリアルタイム・オペレーティング・システムを含む。サポート論理１１０は、ＰｏｗｅｒＰＣ  Ｅｍｂｅｄｄｅｄ  Ｔｏｏｌｓ（ＴＭ）プログラムへのアクセスを容易にする。
【００２６】
次に図２を参照すると、本発明の機構を内部で有利に実装可能な、データ処理システムのブロック図が示されている。データ処理システム（ＤＰＳ）２００は、システム・バス／相互接続２０９を介してメモリ２１０に結合されたコア２０１（図１のコア１００と同様な場合がある）を備える。コア２０１には中央処理ユニット（ＣＰＵ）１０２が含まれる。図１と同様に、コア２０１はＪＴＡＧ、トレース、およびタイマ用のレジスタ２０３を含む。コア２０１は、ＭＭＵ  １０４、Ｄキャッシュ２０５、およびＩキャッシュ２０６も含む。Ｄキャッシュ２０５およびＩキャッシュ２０６は、キャッシュ・ユニット１０５（図１）の構成要素である。加えて、キャッシュ・ユニット（２０５／２０６）およびＭＭＵ  １０４の説明は、図１のキャッシュ・ユニット１０５の例示も備える。
【００２７】
コア２０１のある種の特定機能に結合され、これを制御するのが、ＡＰＵ  ２０７、割り込みコントローラ２０８、ならびに、クロックおよび電力管理（ＣＰＭ）ユニット２３０である。説明された実施形態によれば、ＣＰＭユニット２３０は、とりわけ、命令処理中のプロセッサの動作／実行周波数の制御の責務を負う。本発明のソフトウェア・ベースの実装の一実施形態は、実行コード（すなわち命令ストリーム）内での一定条件（または命令タイプ）の検出に基づいて、プロセッサの動作周波数を通常の（高い）周波数から低周波数へと変更するために、周波数制御システムがＣＰＭユニット２０８をトリガできるようにするものである。
【００２８】
さらにシステム・バス２０９に結合されるのが、いくつかの入力デバイスによるアクセスを制御する入力／出力コントローラ（Ｉ／Ｏコントローラ）２１５であり、この入力デバイスの中では、マウス２１６およびキーボード２１７が例示されている。Ｉ／Ｏコントローラ２１５は出力デバイスへのアクセスも制御し、この出力デバイスの中ではディスプレイ２１８が例示されている。取り外し可能ストレージ・メディアの使用をサポートするために、Ｉ／Ｏコントローラ２１５は、１つ以上のＵＳＢポート２２１、および、読み取り／書き込みコンパクト・ディスク（ＣＤＲＷ）またはデジタル・ビデオ・ディスク（ＤＶＤ）ドライブなどのメディア・ドライブ２１８をサポートすることができる。
【００２９】
ＤＰＳ  ２００は、ＤＰＳ  ２００が（ネットワーク・コントローラ２２２を介して）外部デバイスまたはネットワーク（インターネットなど）に接続し、これらと通信する際に使用できる、ネットワーク・インターフェース・デバイス（ＮＩＤ）２２５をさらに備える。ＮＩＤ  ２２５はモデムまたはネットワーク・アダプタとすることが可能であり、たとえば無線トランシーバ・デバイスとすることも可能である。
【００３０】
当業者であれば、図２に示されたハードウェアが変更可能であることを理解されよう。たとえば、図示されたハードウェアに加えて、またはこれに代えて、他のデバイスを使用することもできる。したがって、図示された例は、本発明に関してアーキテクチャ上の制限を示すことを意味するものではない。図２に図示されたデータ処理システムは、たとえば、Ａｄｖａｎｃｅ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ）オペレーティング・システムまたはＬＩＮＵＸオペレーティング・システムを実行する、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシンズ・コーポレーションの製品であるＩＭＢ  ｅＳｅｒｖｅｒ  ｐＳｅｒｉｅｓシステムとすることができる。
【００３１】
Ａ．プロセッサ・レベルの実行周波数制御システム
プロセッサ・レベルの周波数制御は、以下の２つの実施形態のうちの１つで実施可能である。（１）「オン・デマンド」周波数制御がＣＰＵクロック周波数およびアプリケーション・コードの構造（周波数制限動作の数）に依存する、ソフトウェア・ベース制御。この第１の制御方法は、ＣＰＵ周波数、または周波数制限動作のスループットを最大限にする低減された最適実行周波数に等しい、通常の実行周波数を提供する。（２）スケジューリングされているプログラム・コード内の周波数制限動作の数を検出し、閾値数と比較するために、ＣＰＵ内で単純論理回路が実装される、ハードウェア・ベース回路。閾値を満たす場合、その論理回路は、（実行周波数の）モードを通常のＣＰＵ周波数から低減された最適実行周波数へと切り替えるために使用される。
【００３２】
いずれの手法の場合も、使用される方法は、既存の乗算ユニットを使用するため、および８００Ｍｈｚ制限を超えるクロッキング周波数を必要とするアプリケーションの場合に乗算ユニットをハーフ・クロッキングする（half-clock）ためのものである。１０００ＭＨｚのＣＰＵ周波数では、ユニットのスループットは、たとえば半分の速度、または５００ＭＨｚに等しい速度で動作するユニットに基づく。乗算動作の数が閾値制限未満のアプリケーションの場合、プロセッサは乗算動作の全クロッキングを完了することができる。プログラム・コード全体に存在する乗算動作の数が制限されるため、ハーフ・クロッキングによる性能「低下」はこれらの制限された乗算動作の実行中にのみ認識され、処理動作全体ではかなり高い性能およびスループットが享受される。
【００３３】
ソフトウェア・ベースの実装では、本発明の様々な特徴が、メモリ２１０または他のストレージ内に格納され、ＣＰＵ  １０２によって実行される、ソフトウェア／ファームウェア・コードとして提供される。中でもソフトウェア・コードは、以下で説明する「周波数制御」機能を実行可能にするためのコードである（通常モード（高い）の周波数動作および第２モード（低い）の周波数動作と一致するための「モード」制御とも呼ばれる）。話を簡単にするために、本明細書では、周波数制御機能を実行可能にする（ファームウェアおよび論理を含む）コードの集合体はモード制御ユーティリティと呼ばれる。
【００３４】
したがって図２に示されるように、データ処理システム２００は、前述のハードウェア構成要素に加えて、オペレーティング・システム（ＯＳ）２１１（たとえば、マイクロソフト社の商標であるＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）、またはＦｒｅｅ  Ｓｏｆｔｗａｒｅ  ＦｏｕｎｄａｔｉｏｎおよびＬｉｎｕｘ  Ｍａｒｋ  Ｉｎｓｔｉｔｕｔｅの登録商標であるＧＮＵ（Ｒ）／Ｌｉｎｕｘ（Ｒ））および１つ以上のソフトウェア・アプリケーション２１４を含む、いくつかのソフトウェア構成要素をさらに備える。データ処理システム２００は、モード制御ユーティリティ２１２および関連する制御レジスタ２１３も備える。具体的に言えば、モード制御ユーティリティ２１２および関連する制御レジスタ２１３はメモリ２１０内に常駐する。制御レジスタ２１３は、事前に定義されたタイプの（連続）命令数のカウントを、プロセッサ・コア２０１による実行用にスケジューリングされているアプリケーション（たとえばアプリケーション２１４）の実行ストリーム内で維持する。
【００３５】
本明細書で使用される場合、ＯＳ  ２１１は、標準のオペレーティング・システム・コード、あるいは、制御ユーティリティ２１２と通信するファームウェアまたはハイパーバイザ・コード、またはその両方を表すことができる。制御ユーティリティ２１２は、コンパイル済みコードのスケジューリングを監視し、コンパイル済みコード内の事前に定義された特徴の観察結果、すなわち、実行用にスケジューリングされたコンパイル済みコード内における閾値数の周波数制限動作の有無、に基づいて、プロセッサ周波数における変化をトリガする。具体的に言えば、制御ユーティリティ２１２は、コンパイル済みコード内の乗算動作の数が事前に定義された閾値数を超えるかどうかを判別する。その後、制御ユーティリティ２１２は、ＯＳ  ２１１をトリガして、プロセッサの動作周波数を高周波数（たとえば１０００ＭＨｚ）から、プロセッサが特定タイプの動作を最大スループットで実行できるより低い最適周波数（たとえば８００ＭＨｚ）へと切り替えるように、ＣＰＭ  ２３０に信号を送信する。一実施形態では、制御ユーティリティ２１２がこの信号を生成し、ＣＰＭ  ２００へと転送する。
【００３６】
実装の際、ＯＳ  ２１１およびモード制御ユーティリティ２１２の実行可能コードは、ＣＰＵ  １０２で実行される。例示的実施形態によれば、ＣＰＵ  １０２がモード制御ユーティリティ２１２を実行する場合、モード制御ユーティリティ２１２は、（１）連続する周波数制限動作の数が、実行周波数の変更が望ましい事前に定義された閾値制限を超えた場合の判別、（２）実行周波数を、ＣＰＵサイクル周波数から周波数制限動作向けのより低い最適実行周波数へ、およびその逆へ、切り替える／変更するための、ＯＳまたはＣＰＭ  ２３０のトリガ、ならびに、以下で説明する他の特徴／機能を含む、一連の機能プロセスを、ＣＰＵ  １０２が完了できるようにする。
【００３７】
代替の実施形態では、（図１および図２のサポート論理１１０を介してアクセス可能な）拡張ソフトウェア・コンパイラが、（事前に定義された閾値を超える）乗算クラス命令集中動作を備えた複数のアプリケーションが実行のためにキューに入れられることを検出し、このコンパイラが、プロセッサの周波数を、最高の乗算動作スループットを実行可能にする事前に設定されたより低い周波数に調節するために、ＣＰＭをトリガする。次にＯＳユーティリティは、キューに入れられた乗算集中アプリケーションのセットが完了すると、実行周波数を通常の値（すなわち通常のプロセッサ周波数）へと再調節する。
【００３８】
本発明をより明白に理解できるように、以下で説明される諸実施形態では、１０００ＭＨｚの最高動作周波数を備え、通常タイプの動作（たとえば加算および減算）を最高動作周波数で実行する、プロセッサ例について言及する。加えてこのプロセッサは、本明細書で説明される発明の特徴を実施せずに特定タイプの動作が実行された場合、これらの動作を、異なる、より低い周波数（たとえば５００ＭＨｚ）でも実行する。説明における一貫性を保つために、特定タイプの動作または周波数制限動作は、主に乗算動作と呼ばれ、モード制御機能は、事前に設定された数の乗算動作が、プロセッサによる実行用にスケジューリングされた（されている）コンパイル済みコード内で（連続して）発生するのが検出された場合に、活動化される。しかしながら本発明は、他のタイプの周波数制限動作に適用可能であり、乗算動作への言及は、単に諸実施形態の説明を助けるためである。
【００３９】
前述の例を使用すると、（本発明で説明される諸実施形態の機能を使用しない）通常の動作時に、乗算動作が単一サイクルで完了する他の動作とは異なり、完了するために複数のサイクル（たとえば３サイクル）を必要とすることから、乗算動作は最速のスループット時に５００ＭＨｚの有効サイクル時間を有する。より高速のアプリケーションは、大部分の動作が周波数制限動作でないアプリケーションであるため、プロセッサはほとんどの命令を最高周波数で実行することができる。これらのより高速なアプリケーションを使用する場合、乗算動作は完了するために２倍の長さ（すなわち２倍のサイクル数）がかかるため、周波数制限動作（乗算動作）は、乗算動作の待ち時間を変更することによって処理される。乗算動作当たりのサイクル数を２倍にすることによって、乗算動作についての有効サイクル時間は５００ＭＨｚとなる。全体のスループットが影響を受けるが、プロセッサ全体はこの時点で８００ＭＨｚ周波数制限より上で実行可能であるため、高速で実行するアプリケーションにとってはより高速のスループットにつながる。これらの高速アプリケーションの場合、これは受け入れ可能なトレードオフを表す。
【００４０】
しかしながら、より低速のアプリケーション（たとえば８００ＭＨｚ未満で実行するアプリケーション）の場合、乗算動作は好ましくは（アプリケーションが８００ＭＨｚを超えて実行している場合の、動作当たり２サイクルではなく）単一サイクルで実行される。たとえばこうした低速のアプリケーションでは、８００ＭＨｚの０．５のみを利用し、プロセッサは４００ＭＨｚのみの最大周波数スループットを達成する。コアには、コアが閾値制限を超えて実行している場合を特定する、周波数検出器が提供される。コアが閾値制限を超えて実行している場合、コントローラは、動作当たりのサイクル数を増やすために、多重サイクル乗算器を導入する。これにより、半分のプロセッサ速度、２倍の待ち時間で、動作を実行できるように（または実行されるように）することによって、あるいは、乗算動作に関して最適化されたプロセッサ周波数で動作を実行できるようにすることによって、[TK1]（term）が効果的に除去される。
【００４１】
実行中のアプリケーションが増加したサイクル速度で実行したくない場合、モード制御ユーティリティは、アプリケーションをアクセス当たり単一サイクルに強制的に戻す。モード制御システムを導入することにより、どの周波数でどのコード・セグメントが実行されるか、および通常の速度対低速のサイクル速度でいつアプリケーションを実行するか、を動的に制御することができる。有効スループットは通常の範囲内で高いままとなり、より低速で実行するアプリケーション（たとえば多数の乗算動作を伴うアプリケーション）は、それらのアプリケーションを単一のサイクル周波数で実行させることによって不利にはならない。
【００４２】
モード制御ユーティリティ２１２は、様々な論理構成要素を実装／制御して、実行用にスケジューリングされているコンパイル済みソフトウェア・コード内の乗算動作を監視および検出する。実行のためにキューに入れられた乗算動作が多数ある場合、アプリケーションが低周波数アプリケーションとして最適に実行されることを示し、モード制御ユーティリティはＣＰＭ  ２３０を自動的にトリガして、単一のサイクル処理を介して乗算動作の処理に対処するために、プロセッサ周波数を８００ＭＨｚまで低下させる。これらの乗算動作が処理を完了すると、モード制御ユーティリティはＣＰＭをトリガして、プロセッサ周波数をその通常の高周波数動作（１０００ＭＨｚ）に戻す。高周波数動作中に検出／遭遇した乗算動作の数が閾値未満である間／場合、モード制御ユーティリティは何も実行しないようにプログラミングされ、乗算動作は強制的に２プロセッサ・サイクル内で完了され、プロセッサの有効動作周波数はこれらの乗算動作について５００ＭＨｚ周波数まで低減されるが、他のすべての（タイプの）動作は１０００ＭＨｚで処理される。
【００４３】
別のソフトウェア・ベースの実装として説明されるが、実際の実装では、モード制御ユーティリティのいくつかの機構は、論理構成要素を使用して実装される／可能である。図１０〜図１２は、ソフトウェア・ベースの周波数制御システムの機構を実装するかまたは実装を支援することが可能であり、ならびにハードウェア・ベースの実装も提供することが可能な、論理例を示す。
【００４４】
図１０は、本発明の一実施形態に従った、（乗算）動作制御のためのＣＰＵ周波数制御論理を示すブロック図である。周波数制御論理回路７００は、最適な動作周波数を動的に（オンザフライで）決定するために実装可能な、カウンタ・ベースの検出論理回路である。周波数論理回路７００は、カウンタ７０２に接続されたＣＰＵブロック７０１を備える。周波数検出論理回路７００は、タイマ・クロック７０３、割り込み（進行中）インジケータ７０６、およびレジスタ７０７も含み、これらはすべてコンパレータ／コントロール７０４に接続される。カウンタ７０２もコンパレータ／コントロール７０４に接続される。周波数検出論理回路７００には、データ・ローディング用のＣＰＵデータ・バス７０８が含まれる。コンパレータ／コントロール７０４の出力は、Ｍｕｌｔ−ＯＰ（乗算動作命令）実行時間コントロール７０５として示された制御信号である。
【００４５】
カウンタ７０２は、本来はプロセッサの実行パイプ内のキューに入れられた乗算動作の数をカウントし、その数をコンパレータ／コントロール７０４に提供する、プロセッサ内に統合される回路のセットを備え、コンパレータ／コントロール７０４は、この乗算動作の数を、メモリ内のモード制御ユーティリティ（または図２のモード制御レジスタ２１２）から取り出された事前に定義／事前に設定された閾値数と比較する。コンパレータ／コントロール７０４を使用することによって、モード制御論理回路７００は、プロセッサの周波数が、プロセッサ動作周波数のスロットリングがトリガされる閾値周波数よりも上であるかどうかを判別する。周波数が、プロセッサ動作周波数をスロットリングするための閾値周波数よりも上である場合、モード制御論理は、乗算動作のために最適な周波数（たとえば８００ＭＨｚ）まで周波数を低減させる。乗算動作の数が閾値数よりも下の場合、モード制御論理回路７００は、周波数を最高限度（周波数がすでにそこにある場合）で維持するか、または周波数を最高周波数に設定する。乗算動作は、その数が閾値を超えるまで、複数サイクルを介して処理される。閾値は設計パラメータであり、乗算動作（または他の周波数制限動作）を含むことができるプログラム・コードの実行中に、動作の最大スループットを実行可能なように選択される。ユーザは、ＳｏＣ実装に基づいてこの設計パラメータを決定する。
【００４６】
周波数制御論理回路７００は、乗算動作サイクル・カウントを設定する機能も含む。この機能は、オペレータが静的に設定する構成レジスタ（レジスタ７０７内）として対処するか、または動的に設定されるレジスタとすることができる。構成レジスタは、利用するプロセッサ周波数を決定するために使用される。
【００４７】
Ｍｕｌｔｉ−Ｏｐ実行コントロール７０５は、特権コード（ハイパーバイザまたはＯＳ）によってのみ切り替えまたはプログラミング可能であり、乗算動作が規則正しく制御されるように、割り込み（割り込み（進行中）インジケータ７０６として示される）またはコンテキスト同期化動作として、モード制御ユーティリティにモード制御を要求するために使用されることになる。
【００４８】
次に図１１を見ると、命令デコード構成要素を示すＣＰＵブロック７０１の内部図を備えた、図１０の周波数制御論理の他の実施形態が示される。図１０および図１１の記述では、同じかまたは同様の構成要素が同様の参照番号で示される。したがって、周波数制御論理８００によって示されるように、制御論理８００の乗算命令カウンタ８０２は、ＣＰＵの命令デコード／発行回路８０１の出力を監視する。命令デコード／発行回路８０１は、命令のデコードおよび発行動作を生成するためにコンパイル済みプログラム・コードをデコードする、ＤＩＳＳ０  ３０４およびＤＩＳＳ１  ３０５（たとえば２つが示される）を含む。デコードされた命令はＩＲＡＣＣ  ３０７に渡され、これが実行のために命令を転送／ディスパッチする。
【００４９】
一実施形態では、実行パイプラインに命令がディスパッチされるのに先立って、「タイプ」特徴がデコード済み命令から取り出され、乗算命令カウンタ８０２に転送される。とりわけ一実施では、命令のタイプがＣＰＵ内で評価され、命令が乗算命令である場合のみ、（ＣＰＵ論理によって）信号が生成されて乗算命令カウンタ８０２に伝送される。乗算命令カウンタ８０２によって信号が受信されるごとに、乗算命令カウント（レジスタ）が１つずつ増加する。
【００５０】
他の実施形態では、すべての命令タイプが自動的に検出され、（ａ）受信されたタイプ信号が乗算命令に関するものであるかどうかを判別するため、および（ｂ）タイプが乗算命令である場合、カウンタ値を１つだけ更新するため、の追加の論理を含む、乗算命令カウンタに渡される。カウンタが更新されるごとに、そのカウンタ値がコンパレータ／コントロール論理７０４に渡され、ここでプロセッサ周波数の変更をトリガするために、検出された乗算命令の数が事前に設定された閾値と比較される。その閾値に達している場合（コンパレータ／コントロール論理７０４によって判別された場合）コンパレータ／コントロール論理７０４は、ＣＰＭにＣＰＵの実行／動作周波数を事前に設定されたより低い周波数に変更させるために、割り込み要求を発行し、より低い周波数は多数の乗算動作を含むコードを実行するために最適である。
【００５１】
図１１からの処理の続きが図１２に示され、この図は、周波数制御ユーティリティ／論理によって制御されるＣＰＭの動作、および並行して動作するプロセッサ実行ユニットからの入力の、論理流れ図を提供する。具体的に言えば、図１２は、周波数制御ユーティリティ／論理による判別に基づいて、実行周波数の修正を完了／実施するために、論理構成要素が周波数制御論理によってトリガされる際に使用されるプロセスを示す。モード制御動作は破線の右側に示され、プロセッサ実行動作は破線の左側に示される。図に示されるように、モード制御プロセスはブロック９０１で開始され、ここでアプリケーション・プログラム要求が開始される（すなわち、プログラム・コードがデコードされ、命令がＣＰＵの実行ユニットに転送される）。ブロック９０３で、モード制御ユーティリティ／論理は、アプリケーション・プログラムが、事前に確立された周波数切り替え閾値より大きいいくつかの乗算命令を含むかどうかを判別する。アプリケーションが閾値を超える乗算命令を含まない場合、ブロック９０５に示されるように、プロセッサの動作周波数は通常の最適な周波数に設定される（またはこの周波数で維持される）。この通常の最適な周波数（最大周波数の場合もある）は、（閾値よりも）少ない数の乗算動作が、半分のクロック周波数の複数サイクルで実行できるようにする。
【００５２】
ブロック９０３で、アプリケーション・プログラムが周波数切り替え閾値よりも多数の乗算動作を含む場合、モード制御ユーティリティ／論理はＣＰＭをトリガして、プロセッサ周波数を、通常の最適周波数よりも低い乗算最適周波数に変更する。現在実行パイプライン内にあるすべての命令は、第１に、通常の周波数で完了することができる。次にプロセッサ周波数は、ブロック９０７で示されるように、乗算最適周波数に設定される。これによって乗算動作は、より低い半分の周波数ではなく、乗算動作に関する最高処理周波数の単一サイクルで完了することが可能となる。これに続いて、ブロック９０９に示されるように、乗算命令の実行はこの乗算最適周波数で開始され、プロセスは終了（完了）ブロック９１１で終了する。
【００５３】
動作周波数モードの実際の切り替えの完了は、割り込みハンドラ９１５（または図１の割り込みコントロール２０８）で、（図１１からの）モード変更割り込み要求を受信することによってトリガされる。次に、図１２の左側を見ると、割り込みハンドラ９１５はプロセッサに対するすべての他の割り込み、ならびにモード制御割り込み要求を受信する。割り込みハンドラは、ブロック９１７で、モード変更要求に関する割り込みが受信されたかどうかを判別する。モード変更要求が受信された場合、割り込みハンドラはモード変更信号をプロセッサのモード制御実行論理に送信する。受信されない場合、ブロック９１９に示されるように、検出された割り込みは他の割り込みのカテゴリに入り、動作周波数に影響を与えることなく完了される。他の割り込みの完了に続いて、ブロック９２１に示されるように、プロセッサは、現在プロセッサに対して設定されている周波数モードを使用するプログラム実行に戻る。
【００５４】
前述の諸実施形態は、モード制御ユーティリティ（またはモード制御論理）が、多数の乗算動作（より低速のアプリケーション・プログラム）を実行する場合に、スループットと周波数との関係を最大限にすることができる。前述のソフトウェア・ベースの実装の場合、実行パイプライン深さは維持され、使用される電力量は維持されるかまたは従来の方法よりも削減される。単一サイクル設計の低周波数アプリケーションは、命令当たり単一サイクルのアプリケーションとして動作を続行し、最終的に電力を保持する。周波数の変更は、より高速のアプリケーション用の通常のアプリケーション・ストリーム内では稀な特定タイプの動作に制限されているため、モード制御ユーティリティによって提供される機構の実装により、プロセッサに対していかなる制限も追加することなしに、あるいは、従来の実装のように多くの電力消費が必要となる実行ステージに構成要素を追加することなしに、あるいはその両方で、最良のスループットおよび最高の動作周波数が（経時的に）与えられる。したがってモード制御ユーティリティ２１２は、実行アプリケーションに最適な動作周波数に応じて、（オン・デマンドまたは「オンザフライ」で）ＣＰＵコアの動的電力使用量を（ソフトウェア制御可能論理を使用して）制御／削減する。
【００５５】
Ｂ．パイプライン・ステージ・レベルの実行サイクル制御システム
次に図３を参照すると、かなり多くの（乗算動作などの）周波数制限動作を処理する場合、ＣＰＵのスループットを向上させるために、動作周波数制御ではなく動作当たりのサイクル制御を可能にするための特定ハードウェア論理が、特定パイプライン・ステージで提供される、パイプライン・ステージ・レベル実装の一実施形態が示される。この実施形態では、モード制御ユーティリティ２１２（図２）あるいはモード制御論理回路７００（図７）、またはその両方に起因する機能上の特徴を使用して、実行コード内に閾値数よりも多い乗算動作が存在する場合を検出することができる。しかしながら、この条件が検出されると、ＣＰＵの動作周波数を変更することなくスループットの向上を可能にするように、動作当たりのサイクル処理を調整するために、特定の変更が実行パイプラインのステージに投入される。
【００５６】
図３は、本発明の例示的実施形態に従った、ＰＰＣ４４０パイプライン構造を示すブロック図である。パイプライン３００は、第１の事前デコード（ＰＤＣＤ０）３０２および第２の事前デコード（ＰＤＣＤ１）３０３に接続された、命令フェッチ（ＩＦＴＨ）３０１を備える。ＰＤＣＤ０  ３０２は第１のデコード／発行（ＤＩＳＳ０）３０４および第２のデコード／発行（ＤＩＳＳ１）３０５に接続される。ＰＤＣＤ１  ３０３は第１のデコード／発行（ＤＩＳＳ０）３０４および第２のデコード／発行（ＤＩＳＳ１）３０５に接続される。プロセッサ内には４つのデコード／発行ユニットが存在可能であるが、これらのユニットは本実施形態の機能上の特徴の説明に関連しないため、パイプライン３００の命令流れを例示するために２つのみが示されている。次にＤＩＳＳ０  ３０４は、ロード／ストア・パイプ（「Ｌパイプ」）第１レジスタ・アクセス（ＬＲＡＣＣ）３０６と、整数パイプ（「Ｉパイプ」）第２レジスタ・アクセス（ＩＲＡＣＣ）３０７との、両方に接続される。同様に、ＤＩＳＳ１  ３０５は、Ｌパイプ（第１）レジスタ・アクセス（ＬＲＡＣＣ）３０６と、Ｉパイプ（第２）レジスタ・アクセス（ＩＲＡＣＣ）３０７との、両方に接続される。
【００５７】
パイプライン３００は、ロード／ストア・パイプ（「Ｌパイプ」）、単純整数パイプ（「Ｊパイプ」）、および複雑整数パイプ（「Ｉパイプ」）という、３つの実行パイプを含む。ＬパイプおよびＪパイプの命令は、ＬＲＡＣＣ  ３０６からディスパッチされる。Ｉパイプ命令はＩＲＡＣＣ  ３０７からディスパッチされる。さらにパイプライン３００は、ＬＲＡＣＣ  ３０６が、Ｌパイプ３０８のアドレス生成（ＡＧＥＮ）３０９と、Ｊパイプ実行ステージ１（ＪＥＸＥ１）３１１とに接続されることを示す。ＩＲＡＣＣ  ３０７はＩパイプ実行ステージ１（ＩＥＸＥ１）３１３に接続される。次にＡＧＥＮ  ３０９は、キャッシュ読み取り（ＣＲＤ）３１５に接続され、さらにＣＲＤ  ３１５はＬパイプ書き戻し（ＬＷＢ）３１８に接続される。ＪＥＸＥ１  ３１１はＪパイプ実行ステージ２（ＪＥＸＥ２）３１６に接続され、さらにＪＥＸＥ２  ３１６はＪパイプ書き戻し（ＪＷＢ）３１９に接続される。ＩＥＸＥ１  ３１３はＩパイプ実行ステージ２（ＩＥＸＥ２）  ３１７に接続され、さらにＩＥＸＥ２  ３１７はＩパイプ書き戻し（ＩＷＢ）３２０に接続される。Ｉパイプ実行ステージ３１２は、モード制御論理３２２からの入力を受信する。
【００５８】
ＩＦＴＨ  ３０１は、７ステージの命令パイプラインのうちの第１ステージである。ＩＦＴＨ  ３０１で、命令は命令キャッシュ（Ｉキャッシュ）からフェッチされる。パイプラインの第２ステージを備える、第１の事前デコード（ＰＤＣＤ０）３０２および第２の事前デコード（ＰＤＣＤ１）３０３は、部分命令デコードの責務を負う。第１のデコード／発行（ＤＩＳＳ０）３０４および第２のデコード／発行（ＤＩＳＳ１）３０５は、レジスタ・アクセス（ＲＡＣＣ）ステージへの最終のデコードおよび発行の責務を負う。ＬＲＡＣＣ  ３０６およびＩＲＡＣＣ  ３０７は第４ステージを備え、ここでは命令（データ）がマルチポートの汎用レジスタ（ＧＰＲ）ファイルから読み取られる。
【００５９】
パイプライン３００では、ロード／ストア・パイプ（「Ｌパイプ」）が、ステージ５でＡＧＥＮ  ３０９、ステージ６でＣＲＤ  ３１５、ステージ７でＬＷＢ  ３１８を備える。ＡＧＥＮ  ３０９はロード／ストア・アドレスの生成の責務を負う。ＣＲＤ  ３１５はデータ・キャッシュ・アクセスの責務を負う。ＬＷＢ  ３１８は、整数動作またはロード動作からの結果をＧＰＲファイル（図示せず）に書き込む責務を負う。
【００６０】
単純整数パイプ（「Ｊパイプ」）３１０は、ステージ５でＪＥＸＥ１  ３１１、ステージ６でＪＥＸＥ２  ３１６、ステージ７でＪＷＢ  ３１９を備える。ＪＥＸＥ１  ３１１は、単純な算術が完了される実行ステージ１ユニットである。ＪＥＸＥ２  ３１６は、他の実行パイプライン内の１つ以上の実行ステージ１ユニットからの結果が、ＧＰＲファイルに書き込むための準備として多重化される、実行ステージ２ユニットである。ＪＷＢ  ３１９で、Ｊパイプの結果がＧＰＲファイルに書き込まれる。
【００６１】
複雑整数パイプ（「Ｉパイプ」）３１２は、ステージ５でＩＥＸＥ１  ３１３、ステージ６でＩＥＸＥ２  ３１７、ステージ７でＩＷＢ  ３２０を備える。ＩＥＸＥ１  ３１３は、複雑な算術が完了される実行ステージ１である。ＪＥＸＥ２  ３１７は、他の実行パイプライン内の１つ以上の実行ステージ１ユニットからの結果が、ＧＰＲファイルに書き込むための準備として多重化される、実行ステージ２ユニットである。ＩＷＢ  ３２０で、Ｉパイプの結果がＧＰＲファイルに書き込まれる。
【００６２】
パイプライン３００は、（ａ）乗算動作に関する命令スループットを増加させるため、および（ｂ）乗算動作を処理する場合のＣＰＵコアの動的電力使用量を制御／低減するため、に使用される、モード制御論理３２２も含む（またはモード制御論理３２２からの入力も受信する）。一実施形態では、ＣＰＵコアの動的電力使用量は、ＣＰＵ周波数を変更することなく、実行パイプラインの待ち時間／周波数のうちの１つを制御するために、ＣＰＵ周波数検出論理／回路を使用するハードウェアによって低減される。
【００６３】
一般に、ＲＩＳＣ（またはスーパースカラ）プロセッサは、プロセッサ内に設計された多くの実行ユニットを有する。ＰＰＣ４４０は、多重機能（実行）ユニットを有するスーパースカラＲＩＳＣプロセッサの一例である。スーパースカラＲＩＳＣ  ＣＰＵでは、ほとんどの命令が他のパイプで実行可能であるため、この命令ベースの制御はＣＰＵ全体の性能に影響を与えない。たとえばＣＰＵクロック周波数が変更されないため、頻繁に使用されるロード／ストアのスループットおよび待ち時間、多くの単純な算術および論理演算に影響が与えられない。
【００６４】
図３に示されたように、モード制御論理３２２は、すべてＣＰＵの性能（周波数など）に大きな影響を与えることなく、スループットを増加させ、ＣＰＵの動的電力使用量を低減させるために、命令待ち時間および命令ベース（選択された命令）当たりのスループットをサポートする。モード制御論理３２２は、パイプラインの構造および制御を変更することなく、ならびにＣＰＵクロック周波数を変更することなく、ＰＰＣ４４０コア内の機能ユニットのうちの１つ以上の実行時間（または使用量）を制御する。モード制御論理３２２は、乗算動作の完了のタイミングをとるために、通常のＣＰＵクロック周波数の代わりに、ソフトウェア制御可能サイクルの追加を可能にする。モード制御論理３２２は、最も低速のサブ・アセンブリ／構成要素に制限されることなく、最高周波数ならびにプロセッサ設計の最高の作業負荷／スループットを利用することが可能である。
【００６５】
モード制御論理３２２は、データ・ステージ化レジスタまたは拡張コントロールを追加することなく、選択された命令の実行時間を制御するように設計される。従来の設計では、ＣＰＵ命令の発行速度が維持される場合、命令実行回数／スループットを調整するために、データ・ステージ化レジスタあるいは対応するコントロールまたはその両方が必要である。しかしながら、本発明のモード制御論理３２２を使用すると、ＣＰＵ命令発行速度は維持されるが、選択された命令ステージ実行回数は（組み込みソフトウェアまたは他の制御ソフトウェアを備えた）ハードウェアによって制御される。したがって、パイプラインの特定セクションを使用する特定タイプの命令だけに影響を与えるステージ・ベースの制御に比べて、同じパイプラインを使用する他のすべての命令の実行回数には影響が与えられない。
【００６６】
動作周波数またはＣＰＵ周波数は変更されないが、ステージは、「ハーフ・クロッキング」周波数と等価のあらゆる他のサイクルが実行可能である。モード制御論理３２２は、実行ストリーム内で検出された事前に定義された閾値数（たとえば４）の乗算動作に基づいて、乗算動作を完了するために必要なサイクル数を変調する。乗算動作の数が閾値数に等しいかまたはこれより大きい場合、乗算動作当たりのサイクル数がある因数倍（たとえば、命令当たりのサイクル数を倍にする２という因数）増加される。この変更／修正により、１ＧＨｚプロセッサ上の有効スループットは実行パイプ内の他のすべての動作に関して１ＧＨｚのままである。
【００６７】
次に図４に進むと、本発明の例示的実施形態に従った、乗算動作（および乗累算（ＭＡＣ）動作）のための実行ステージ１ユニット（Ｉｅｘｅ１）に関する第１ステージ・モード制御論理４００を示すブロック図が示されている。Ｉｅｘｅ１  ４００では、Ｉｅｘｅ１Ｍｕｌｔ  ４０１およびＩｅｘｅ１Ｍａｃ  ４０２がＯＲゲート４０３への入力である。ＯＲゲート４０３の出力は、ＡＮＤゲート４０４への第１の入力である。次にＡＮＤゲート４０４の出力は遅延延長論理４０５によって受信され、遅延延長論理４０５の出力がＩｅｘｅ１ＭｕｌｔＨｏｌｄ  ４０６である。Ｉｅｘｅ１ＭｕｌｔＨｏｌｄ  ４０６は、自由実行ラッチであるラッチ４０７に印加される入力であり、その出力がＩｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２  ４０８である。Ｉｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２  ４０８はＭＵＸ  ４１２への第１の入力である。加えて、Ｉｅｘｅ１ＭｕｌｔＵｎｉｔＥｎＬ２  ４１１はＭＵＸ  ４１２への第２の入力であり、ＣＣＲ１＿Ｆｉｎｅ  ４０９はＭＵＸ  ４１２への選択入力である。Ｉｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２  ４０８はインバータであるＩｎｖ  ４１０によって反転され、反転された出力は第２の入力としてＡＮＤゲート４０４に提供される。最後に、Ｉｅｘｅ１ＭｕｌｔＭａｃＵｎｉｔＥｎ４１３はＭＵＸ  ４１２の出力である。
【００６８】
Ｉｅｘｅ１ＭｕｌｔＭａｃＵｎｉｔＥｎ  ４１３は、調整／選択されたタイミング特徴を使用して、パイプライン内の実行ステージ１でＩｅｘｅ１ＭｕｌｔＵｎｉｔＥｎＬ２  ４０１を置き換える。Ｉｅｘｅ１ＭｕｌｔＭａｃＵｎｉｔＥｎ  ４１３は、パイプラインの実行ステージ２で、Ｉｅｘｅ２ＭｕｌｔＯｒＭａｃＥ１を導出するためにも使用される。ＣＣＲ１＿Ｆｉｎｅがアサート解除された場合、遅延制御信号４０８が選択される。しかしながら、ＣＣＲ１＿Ｆｉｎｅがアサートされた場合、Ｉｅｘｅ１ＭｕｌｔＭａｃＵｎｉｔＥｎを制御するために、Ｉｅｘｅ１ＭｕｌｔＵｎｉｔＥｎｔＬ２である非遅延制御が選択される。この信号は、乗算ステージのＩｅｘｅ２ステージを導出するために使用される。
【００６９】
Ｉｅｘｅ１  ４００は、複雑な命令実行のために設計された実行ユニットである。Ｉｅｘｅ１  ４００は、論理関数、加算、減算、乗算、および除算を含む、いくつかの関数を処理するように構成される。加えて、遅延延長論理４０５は、待ち時間が実行ステージに追加された場合にパイプラインを延長することができる。遅延延長論理４０５は、モード制御ユーティリティのハードウェア実装の１つ以上の構成要素を表すことができる。ＣＣＲ１＿Ｆｉｎｅ  ４０９は、ＣＣＲ１＿Ｆｉｎｅ  ４０９によって選択された入力に基づいてＭＵＸ  ４１２の出力を決定する、コア構成レジスタ（ＣＣＲ）からの選択ビットまたはビット・セットを表す。パイプラインの延長および待ち時間の導入は、図６、図７、図８、および図９のタイミング図からも明らかである。
【００７０】
図５は、本発明の例示的実施形態に従った、乗算およびＭＡＣ動作のための実行ステージ２ユニット（Ｉｅｘｅ２）に関する第２ステージ・モード制御論理を示す。Ｉｅｘｅ２  ４２０では、ＩｗｂＭｕｌｔｏｒＭａｃＥ１  ４２１がＡＮＤゲート４２２への第１の入力である。ＡＮＤゲート４２２の出力は第１の遅延延長論理４２３によって受信される。次に第１の遅延延長論理４２３の出力は自由実行ラッチであるラッチ４２４に印加され、その出力がＩｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２  ４２５である。Ｉｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２  ４２５は第２のＭＵＸ  ４２９への第１の入力であり、この第２のＭＵＸ  ４２９は第２の入力としてＩｗｂＭｕｌｔｏｒＭａｃＥ１  ４２８を受信し、選択入力としてＣＣＲ１＿Ｆｉｎｅ  ４２６を受信する。ＩｗｂＭｕｌｔＯｒＭａｃＥ１Ｏｕｔ  ４３０はＭＵＸ  ４２９の出力である。Ｉｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２  ４２５はインバータであるＩｎｖ  ４２７によって反転され、反転された出力は第２の入力としてＡＮＤゲート４２２に提供される。
【００７１】
Ｉｅｘｅ２  ４２０では、Ｉｅｘｅ２ＭｕｌｔＵｎｉｔＥｎＬ２  ４３１およびＩｅｘｅ２ＭａｃＵｎｉｔＥｎＬ２  ４３２がＯＲゲート４３３への入力である。ＯＲゲート４３３の出力は、ＡＮＤゲート４３４への第１の入力である。Ｉｎｖ  ４２７の（反転された）出力はＡＮＤゲート４３４への第２の入力である。最後に、ＡＮＤゲート４３４の出力は第２の遅延延長論理４３５によって受信され、この第２の遅延延長論理４３５が出力としてＩｅｘｅ２ＭｕｌｔＨｏｌｄ  ４３６を引き出す。
【００７２】
Ｉｅｘｅ２  ４２０では、ＩｗｂＭｕｌｔＯｒＭａｃＥ１  ４２１は、ＩＷＢステージにおいて乗算またはＭＡＣの結果が第１に使用可能な信号である。しかしながら、乗算またはＭＡＣ動作は実行ステージ２におけるものである。この図に示されるように、「Ｉｗｂ」は、この動作／信号が、Ｉｅｘｅ２ステージとＩｗｂステージとの間の制御ハンドシェークである、ＩＷＢステージ実行可能制御に関するものであることを単に示す。第１の遅延延長論理４２３はパイプライン（４２０）の延長を可能にする。第２の遅延延長論理４３５は、追加のパイプライン延長機能を提供する。第１の遅延延長論理４２３および第２の遅延延長論理４３５は、モード制御メカニズムのハードウェア実装の諸構成要素を表すことができる。
【００７３】
図６は、本発明の例示的実施形態に従った、一例として乗算器パイプライン（３１２）の実行ステージ１（３１３）において乗算命令当たり１サイクル待ち時間遅延が追加される、連続乗算動作に関する例示的タイミング図を示す。タイミング図５００は、ＣＰＵクロック波形５０１およびＭｕｌｔ−ｏｐ  ｉｅｘｅ１波形５０２を含む。Ｍｕｌｔ−ｏｐ  ｉｅｘｅ１波形５０２は、実行パイプライン内に３つの乗算動作が存在することを示す。第１の乗算動作の後に他の（非乗算）パイプ動作が続く。この非乗算パイプ動作の後に第２の乗算動作が続く。最後に、第２の乗算動作の直後に第３の乗算動作が続く。Ｉｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２波形５０３は、Ｉパイプ・レジスタ・ホールドのアサーションおよび新規の実行ステージ１ホールド５０５のアサーションの後に続く、出力Ｉｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２  ４０８に関する、結果として生じるタイミング波形である。乗算命令当たり単一の遅延サイクルを追加する結果として、各乗算命令が実行用の２つのサイクルを有する、６つの実行サイクルが提供される。Ｉｅｘｅ２ステージ実行可能Ｅ１  ５０４は、実行ステージ１の直後に実行ステージ２処理が実施できるようにする。Ｉｅｘｅ１ステージ５０６は、乗算器パイプラインの実行ステージ１に関する、結果として生じる延長されたタイミング波形である。
【００７４】
図７は、本発明の例示的実施形態に従った、一例として乗算器パイプラインの実行ステージ２において乗算ステージ当たり１サイクル待ち時間遅延が追加される、連続乗算動作に関する例示的タイミング図を示す。図７は図６の続きを表す。Ｉｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２波形５１１は、Ｉパイプ実行ステージ１ホールドのアサーションおよび新規の実行ステージ２ホールド５１２のアサーションの後に続く、出力Ｉｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２  ４０８に関するタイミング波形である。結果として生じる実行ステージ２に関するタイミング波形が、Ｉｅｘｅ２ステージ５１３によって示される。図に示されるように、ここで各乗算動作に完了のための２つのサイクルが割り振られる。Ｉｗｂステージ実行可能Ｅ１波形５１４は、実行ステージ２における処理の後に、以前の動作からの結果がＧＰＲファイルに書き込まれる準備が整ったことを実証する。Ｉｗｂステージ５１５は、ＧＰＲファイルへの実際の結果書き込みに関するタイミング波形である。
【００７５】
図８は、本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ１および実行ステージ２における単一の乗算動作に関する例示的タイミング図を示す。タイミング図６００は、ＣＰＵ波形６０１およびＭｕｌｔ−ｏｐ  ｉｅｘｅ１波形６０２を含む。Ｍｕｌｔ−ｏｐ  ｉｅｘｅ１波形６０２は、実行パイプラインにおける乗算動作を示す。Ｉｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２波形６０４は、たとえばＩパイプ・レジスタ・ホールドのアサーションの後に続く、（図４のラッチ４０７の）出力Ｉｅｘｅ１ＭｕｌｔＭａｃＤｅｓＬ２  ４０８に関するタイミング波形である。Ｉパイプ・レジスタ・ホールドのタイミング波形は、Ｉｅｘｅ１ホールド６０３によって示される。Ｉｅｘｅ１ステージ６０５は、乗算器パイプラインの実行ステージ１に関する、結果として生じる延長されたタイミング波形である。Ｉｅｘｅ２ステージ実行可能Ｅ１  ６０６は、実行ステージ１の直後に実行ステージ２処理が実施できるようにする。
【００７６】
図９は、本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ２および書き戻しステージにおける単一の乗算動作に関する例示的タイミング図を示す。実行ステージ２ホールドであるＩｅｘｅ２ホールド６０７は、実行ステージ２が２サイクルの実行ステージとなることを可能にする。実行ステージ２に関するタイミングの結果として生じる波形は、Ｉｅｘｅ２ステージ６１２によって示される。Ｉｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２  ６１１は、たとえばＩパイプ実行ホールドのアサーションの後に続く、（図５のラッチ４２４の）出力Ｉｅｘｅ２ＭｕｌｔＭａｃＤｅｓＬ２  ４２５に関するタイミング波形である。Ｉｗｂステージ実行可能Ｅ１波形６１３は、実行ステージ２における処理の後に、ＧＰＲファイルに書き込まれることになる以前の動作からの結果を準備する。Ｉｗｂステージ６１４は、ＧＰＲファイルへの実際の結果書き込みに関するタイミング波形である。Ｉパイプ上での他の書き戻し（ＷＢ）動作に関するタイミング波形は、他の後続の非乗算命令完了の例である、他のＯＰ−ｉｗｂ  ６１５によって示される。
【００７７】
図６、図７、図８、および図９のタイミング波形では、あらゆる他のクロック・サイクルで乗算機能を実行することができる。ＩＥＸＥ１、ＩＥＸＥ２、およびＩＷＢは、ソフトウェアによって、または別の方法ではハードウェアによって、モード制御ユーティリティ２１２がアサート解除された場合、「ホールド」のアサーションによって２サイクルが延長される。多くの既知のベンチマーク・テストでは乗算命令の混合がむしろ少ないという事実により、（延長された）２サイクル実行回数の結果から生じるいかなる性能上の欠点も最小限に抑えられる。加えて、モード制御ユーティリティ２１２によってトリガされる（乗算動作当たりの）２サイクル実行ステージ回数により、ＣＰＵコアの動的電力消費およびＣＰＵコアの面積を低減させる。
【００７８】
本発明について、主として乗算動作である特定タイプの動作の観点から説明したが、提供された説明および機能強化は、ソフトウェアまたは別の方法としてハードウェアによって、本発明に合致した様式で実行回数を制御することが可能な、様々な他の算術および論理演算に適用可能であることを理解されよう。
【００７９】
一般に本発明は、命令パイプライン内でより長い待ち時間命令を実行するプロセッサにおいて命令スループットを増加させるための、方法、システム、およびプロセッサを提供する。特定タイプの命令を実行する責務を負った実行パイプラインの特定ステージに関連付けられた論理は、少なくとも閾値数の特定タイプの命令がいつ実行されるようにスケジューリングされるかを決定する。次にこの論理は、特定パイプライン・ステージの実行サイクル周波数を、第１のサイクル周波数から、特定タイプの命令のより効率の良い実行およびより高い実行スループットを実行可能にする、第２の事前に確立されたより高いサイクル周波数へと、自動的に変更する。１つ以上のみの機能ステージのサイクル周波数が、プロセッサ・パイプライン内の他の機能ステージのサイクル周波数に依存しないより高いサイクル周波数に切り替えられる。さらにこの論理は、スケジューリングされた数の第１タイプの命令が実行を完了した場合、特定パイプライン・ステージの実行サイクル周波数を、第２のサイクル周波数から第１のサイクル周波数へと、再度自動的に切り替える。
【００８０】
最終的に、本発明の例示的実施形態について、ソフトウェアがインストールされた完全に機能するコンピュータ・システムとの関連においてこれまで説明し、さらに引き続き説明するが、本発明の例示的実施形態のソフトウェアの諸態様は様々な形のプログラム製品として配布可能であること、ならびに実際に配布を実施するために使用される特定タイプの信号搬送媒体にかかわらず本発明の例示的実施形態が等しく適用されることを、当業者であれば理解されるであろう、ということに留意されたい。信号搬送媒体の例には、フロッピィ・ディスク、ハード・ディスク・ドライブ、ＣＤ  ＲＯＭなどの記録可能タイプ・メディア、および、デジタルおよびアナログの通信リンクなどの伝送タイプ・メディアが含まれる。
【００８１】
以上、本発明について、好ましい実施形態を参照しながら具体的に図示および説明してきたが、当業者であれば、その形式および細部において本発明の趣旨および範囲を逸脱することなく様々な変更が実行可能であることを理解されよう。
【００８２】
優先権主張の基礎となる出願（米国１１／７７６２２１）の当初クレーム訳を参考のために記載する。
（Ａ１）
複数の機能ステージを伴うプロセッサ・パイプラインを有するデータ処理システムにおいて、
ある閾値の第１タイプの命令が実行されるスケジュールを決定するステップと、
前記機能ステージのうちの１つ以上の機能ステージの実行サイクル周波数を、第１のサイクル周波数から、前記第１のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第２のサイクル周波数へと、自動的に変更するステップと、
を含む方法。
（Ａ２）
前記スケジューリングされた数の第１タイプの命令の実行が完了したことに応答して、前記１つ以上の機能ステージの前記実行サイクル周波数を、前記第２のサイクル周波数から前記第１のサイクル周波数へと、再度自動的に切り替えるステップをさらに含む、Ａ１に記載の方法。
（Ａ３）
前記第１タイプの命令が、単一サイクル待ち時間で実行される通常タイプの命令よりも長い待ち時間で実行される命令であり、
前記決定するステップが、
前記プロセッサ・パイプラインに関連付けられた論理回路を介して、事前に設定された時間間隔内で前記１つ以上の機能ステージによって実行されるようにスケジューリングされた第１タイプの命令の数が、前記閾値数を超えた場合を評価するステップと、
前記スケジューリングされた前記第１タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記第２のサイクル周波数への前記実行サイクル周波数の増分を動的にトリガするステップと、
をさらに含む、Ａ１に記載の方法。
（Ａ４）
前記動的にトリガするステップが、さらに前記１つ以上の機能ステージでの前記第１タイプの命令の実行を遅延させるため、前記論理回路に追加のサイクル待ち時間を投入するステップをさらに含む、Ａ３に記載の方法。
（Ａ５）
前記１つ以上の機能ステージへのサイクル遅延の追加をトリガするために、所与の間隔でのある数の連続する第１タイプの命令に関する下限として、閾値を格納するステップをさらに含み、
前記決定するステップが、前記間隔内の前記連続する第１タイプの命令の数が少なくとも前記閾値である場合、自動切り替えがトリガされるように、命令ストリーム内で検出された前記連続する第１タイプの命令の数を前記閾値と比較するステップを含む、
Ａ１に記載の方法。
（Ａ６）
前記第１タイプの命令が、乗算命令を含む複雑な算術命令であり、
前記１つ以上の機能ステージが複雑な実行パイプライン内のステージを含む、
Ａ１に記載の方法。
（Ａ７）
前記第２のサイクル周波数が、前記第１のサイクル周波数の整数倍である、Ａ６に記載の方法。
（Ａ８）
複数の機能ステージを含む実行パイプラインを有するプロセッサと、
前記機能ステージのうちの１つ以上の機能ステージに関連付けられた処理論理回路と、
を備える、データ処理システムであって、
前記処理論理回路は、
前記１つ以上の機能ステージ内で実行される命令のシーケンスをフェッチする命令フェッチ・メカニズムと、
ある閾値の第１タイプの命令が実行されるスケジュールを決定するスケジュール決定・メカニズムと、
前記１つ以上の機能ステージの実行サイクル周波数を、第１のサイクル周波数から、前記第１のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第２のサイクル周波数へと、自動的に変更する周波数変更・メカニズムとを備える、
データ処理システム。
（Ａ９）
前記処理論理回路が、
前記スケジューリングされた第１タイプの命令の実行が完了したことに応答して、前記１つ以上の機能ステージの前記実行サイクル周波数を、前記第２のサイクル周波数から前記第１のサイクル周波数へと、再度自動的に切り替える周波数再変更・メカニズムをさらに備える、Ａ８に記載のデータ処理システム。
（Ａ１０）
前記第１タイプの命令が、単一サイクル待ち時間で実行される通常タイプの命令よりも長い実行待ち時間で実行される命令であり、
前記スケジュール決定・メカニズムが、
前記プロセッサ・パイプラインに関連付けられた論理回路を介して、事前に設定された時間間隔内で前記１つ以上の機能ステージによって実行されるようにスケジューリングされた第１タイプの命令の数が、前記閾値数を超えた場合を評価するメカニズム、および
前記スケジューリングされた前記第１タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記第２のサイクル周波数への前記実行サイクル周波数の増分を動的にトリガするメカニズム、
をさらに備える、Ａ８に記載のデータ処理システム。
（Ａ１１）
前記動的にトリガするメカニズムが、さらに前記１つ以上の機能ステージでの前記第１タイプの命令の実行を遅延させるため、前記実行論理回路に追加のサイクル待ち時間を投入するメカニズムをさらに備える、Ａ１０に記載のデータ処理システム。
（Ａ１２）
前記処理論理回路が、
前記１つ以上の機能ステージへのサイクル遅延の追加をトリガするために、所与の間隔でのある数の連続する第１タイプの命令に関する下限として、閾値を格納するためのメカニズムをさらに備え、
前記スケジュール決定・メカニズムが、前記間隔内の前記連続する第１タイプの命令の数が少なくとも前記閾値である場合、自動切り替えがトリガされるように、命令ストリーム内で検出された前記連続する第１タイプの命令の数を前記閾値と比較するメカニズムを備える、
Ａ８に記載のデータ処理システム。
（Ａ１３）
前記第１タイプの命令が、乗算命令を含む複雑な算術命令であり、
前記１つ以上の機能ステージが複雑な実行パイプライン内のステージを含む、
Ａ８に記載のデータ処理システム。
（Ａ１４）
前記第２のサイクル周波数が、前記第１のサイクル周波数の整数倍である、Ａ１３に記載のデータ処理システム。
（Ａ１５）
様々なタイプの命令を実行するための複数の実行ステージを有する実行パイプラインと、
前記複数の実行ステージのうちの１つ以上内で実行される命令のシーケンスをフェッチする命令フェッチ・メカニズムと、
前記機能ステージのうちの１つ以上の機能ステージに関連付けられた処理論理回路と
を備える、プロセッサであって、
前記処理論理回路は、
ある閾値の第１タイプの命令が実行されるスケジュールを決定するスケジュール決定・メカニズムと、
前記１つ以上の機能ステージの実行サイクル周波数を、第１のサイクル周波数から、前記第１のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第２のサイクル周波数へと、自動的に変更する周波数変更・メカニズムと、
前記スケジューリングされた第１タイプの命令の実行が完了したことに応答して、前記１つ以上の機能ステージの前記実行サイクル周波数を、前記第２のサイクル周波数から前記第１のサイクル周波数へと、再度自動的に切り替える周波数再変更・メカニズムを備える
プロセッサ。
（Ａ１６）
前記第１タイプの命令が、単一サイクル待ち時間で実行される通常タイプの命令よりも長い実行待ち時間で実行される命令であり、
前記スケジュール決定・メカニズム
前記プロセッサ・パイプラインに関連付けられた論理回路を介して、事前に設定された時間間隔内で前記１つ以上の機能ステージによって実行されるようにスケジューリングされた第１タイプの命令の数が、前記閾値数を超えた場合を評価するメカニズム、および
前記スケジューリングされた前記第１タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記第２のサイクル周波数への前記実行サイクル周波数の増分を動的にトリガするメカニズム、
をさらに備える、Ａ１５に記載のプロセッサ。
（Ａ１７）
前記動的にトリガするメカニズムが、さらに前記１つ以上の機能ステージでの前記第１タイプの命令の実行を遅延させるため、前記実行論理回路に追加のサイクル待ち時間を投入するメカニズムをさらに備える、Ａ１６に記載のプロセッサ。
（Ａ１８）
前記処理論理回路が、
前記１つ以上の機能ステージへのサイクル遅延の追加をトリガするために、所与の間隔でのある数の連続する第１タイプの命令に関する下限として、閾値を格納するためのメカニズムをさらに備え、
前記スケジュール決定・メカニズムが、前記間隔内の前記連続する第１タイプの命令の数が少なくとも前記閾値である場合、自動切り替えがトリガされるように、命令ストリーム内で検出された前記連続する第１タイプの命令の数を前記閾値と比較するメカニズムを備える、
Ａ１５に記載のプロセッサ。
（Ａ１９）
前記第１タイプの命令が、乗算命令を含む複雑な算術命令であり、
前記１つ以上の機能ステージが複雑な実行パイプライン内のステージを含む、
Ａ１５に記載のプロセッサ。
（Ａ２０）
前記第２のサイクル周波数が、前記第１のサイクル周波数の整数倍である、Ａ１５に記載のプロセッサ。
【００８３】
優先権主張の基礎となる出願（米国１１／７７６２２２）の当初クレーム訳を参考のために記載する。
（Ｂ１）
プログラム命令を処理する命令プロセッサにおいて実行される方法であり、
ある数の第１タイプの命令が実行されるスケジュールを決定するステップと、
前記命令プロセッサの実行周波数を、他のタイプの命令を処理するのに好適な第１の周波数から、前記第１の周波数よりも低く、前記第１タイプの命令を処理するのに好適な第２の周波数へと、自動的に切り替えるステップと、
を含む、方法。
（Ｂ２）
前記数の第１タイプの命令の実行が完了したことを条件に、前記第２の周波数から、前記第１の周波数へと、自動的に再度切り替えるステップをさらに含む、Ｂ１に記載の方法。
（Ｂ３）
前記決定するステップが、
事前に定義された閾値数の前記第１タイプの命令が、実行プログラム・コード内でいつ実行するようにスケジュールされるかを評価するステップと、
前記実行に関してスケジュールされた第１タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記実行周波数を前記第２の周波数へと切り替えるために前記プロセッサをトリガするステップと、
をさらに含む、Ｂ１に記載の方法。
（Ｂ４）
前記評価するステップが、
前記プロセッサの実行スケジューラに発行される前記第１タイプの命令の数をカウントするステップと、
前記第１タイプの命令の数と事前に設定された閾値数とを比較するステップと、
前記プロセッサで前記第２周波数への前記実行周波数の変更を実施するための割り込み信号を自動的に発行するステップと、
を含む、Ｂ１に記載の方法。
（Ｂ５）
前記自動的に発行するステップが、前記割り込み信号を、前記プロセッサに関連付けられたクロックおよび電力管理（ＣＰＭ）ユニットへと転送するステップを含み、前記ＣＰＭユニットが、前記割り込み信号を受信したことに応答して、前記実行周波数を設定および更新する、Ｂ４に記載の方法。
（Ｂ６）
前記実行周波数を切り替えるために前記プロセッサをトリガするステップが、前記プロセッサが以前にスケジューリングされた他のタイプの命令の実行を完了した後に、前記実行周波数を前記第２の周波数に切り替えるステップを含む、Ｂ３に記載の方法。
（Ｂ７）
前記評価するステップがソフトウェア・コンパイラを介して完了され、前記ソフトウェア・コンパイラは、プログラム命令のコンパイル時に前記プログラム命令内の命令のシーケンスを監視し、前記第１タイプの命令の数が閾値数を超えることを条件に、前記実行周波数を前記第２の周波数へ変更するために割り込みを発行する、Ｂ２に記載の方法。
（Ｂ８）
前記評価するステップがハードウェア論理回路回路を介して完了され、前記ハードウェア論理回路は、前記プロセッサでの命令スケジューリング時に前記プログラム命令内の命令のシーケンスを監視し、スケジューリング用に発行された前記第１タイプの命令の数が閾値数を超えることを条件に、前記実行周波数を前記第２の周波数へ変更するために割り込みを発行する、Ｂ２に記載の方法。
（Ｂ９）
前記プロセッサ周波数の前記自動切り替えをトリガするために、所与の間隔でのある数の連続する第１タイプの命令に関する下限として、閾値を格納するステップをさらに含み、
前記決定するステップが、前記間隔内の前記第１タイプの動作の数が少なくとも前記閾値であることを条件に、自動切り替えが活動化されるように、前記第１タイプの動作の数を前記閾値と比較するステップを含む、
Ｂ１に記載の方法。
（Ｂ１０）
前記第１の周波数は、前記他のタイプの命令に対して最大のプロセッサ命令スループットを提供し、前記第１タイプの命令に対してはより低いプロセッサ命令スループットを提供する周波数であり、
前記第１タイプの命令は、乗算動作を含む算術および論理動作の命令である、
Ｂ１に記載の方法。
（Ｂ１１）
プログラム命令を処理するためのプロセッサと、
前記プロセッサ内での実行のために命令のシーケンスをフェッチするための前記プロセッサ内の命令フェッチ・メカニズムと、
前記プロセッサに関連付けられた処理論理回路とを備える、
データ処理システムであって、
前記処理論理回路は、
ある数の第１タイプの命令が実行されるスケジュールを決定する論理回路と、
前記命令プロセッサの実行周波数を、他のタイプの命令を処理するのに好適な第１の周波数から、前記第１の周波数よりも低く、前記第１タイプの命令を処理するのに好適な第２の周波数へと、自動的に切り替える論理回路と、
前記数の第１タイプの命令の実行が完了したことを条件に、前記第２の周波数から前記第１の周波数へと、自動的に再度切り替える論理回路を備える、
データ処理システム。
（Ｂ１２）
前記決定する論理回路が、
事前に定義された閾値数の前記第１タイプの命令が、実行プログラム・コード内でいつ実行するようにスケジュールされるかを評価する論理回路、および
前記実行に関してスケジュールされた第１タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記実行周波数を前記第２のより低い実行周波数へと切り替えるために前記プロセッサをトリガする論理回路を
さらに備え、
前記プロセッサをトリガすることが、前記プロセッサが以前にスケジューリングされた他のタイプの命令の実行を完了した後に、前記実行周波数を前記第２の周波数に切り替えることを含む、
Ｂ１１に記載のデータ処理システム。
（Ｂ１３）
前記評価する論理回路が、
前記プロセッサの実行スケジューラに発行される前記第１タイプの命令の数をカウントする論理回路と、
前記第１タイプの命令の数と前記事前に設定された閾値数とを比較する論理回路と、
前記プロセッサで前記第２周波数への前記実行周波数の変更を実施するための割り込み信号を自動的に発行する論理回路と
をさらに備え、
前記自動的に発行することが、前記割り込み信号を、前記プロセッサに関連付けられたクロックおよび電力管理（ＣＰＭ）ユニットへと転送することを含み、前記ＣＰＭユニットが、前記割り込み信号を受信したことに応答して、前記実行周波数を設定および更新する、Ｂ１１に記載のデータ処理システム。
（Ｂ１４）
前記評価する論理回路が、
ソフトウェア・コンパイラであって、プログラム命令のコンパイル時に前記プログラム命令内の命令のシーケンスを監視し、前記第１タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第２の周波数へ変更するために割り込みを発行する、ソフトウェア・コンパイラと、
ハードウェア論理回路であって、前記プロセッサでの命令スケジューリング時に前記プログラム命令内の命令のシーケンスを監視し、スケジューリング用に発行された前記第１タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第２の周波数へ変更するために割り込みを発行する、ハードウェア論理回路と、
のうちの１つを介して完了される、Ｂ１２に記載のデータ処理システム。
（Ｂ１５）
前記プロセッサ周波数の前記自動切り替えをトリガするために、所与の間隔でのある数の連続する第１タイプの命令に関する下限として、閾値を格納するための論理回路をさらに含み、
前記決定することが、前記間隔内の前記第１タイプの動作の数が少なくとも前記閾値であることを条件に、自動切り替えが活動化されるように、前記第１タイプの動作の数を前記閾値と比較することを含む、
Ｂ１１に記載のデータ処理システム。
（Ｂ１６）
前記第１の周波数は、前記他のタイプの命令に対して最大のプロセッサ命令スループットを提供し、前記第１タイプの命令に対してはより低いプロセッサ命令スループットを提供する周波数であり、
前記第１タイプの命令は、乗算動作を含む算術および論理動作の命令である、
Ｂ１１に記載のデータ処理システム。
（Ｂ１７）
（ａ）第１の周波数で実行されることでより高いプロセッサ命令スループットを提供する通常タイプの命令と、（ｂ）乗算動作を含む算術および論理動作命令を含み、前記１の周波数よりも低い第２の周波数で実行されることでより低いプロセッサ命令スループットを提供する第１のタイプの命令と、を含む、様々なタイプのプログラム命令を実行するための実行パイプラインと、
前記プロセッサに関連付けられた処理メカニズムとを備える、プロセッサであって、
前記処理メカニズムは、
ある数の第１タイプの命令が実行されるスケジュールを決定するメカニズムと、
前記命令プロセッサの実行周波数を、他のタイプの命令を処理するために好適な第１の周波数から、前記第１の周波数よりも低く、前記第１タイプの命令を処理するために好適な第２の周波数へと、自動的に切り替えるメカニズムと、
前記数の第１タイプの命令の実行が完了したことを条件に、前記第２の周波数から前記第１の周波数へと、自動的に再度切り替えるメカニズムとを備える、
プロセッサ。
（Ｂ１８）
前記決定するメカニズムが、
事前に定義された閾値数の前記第１タイプの命令が、実行プログラム・コード内でいつ実行するようにスケジュールされるかを評価するメカニズム、および
前記実行に関してスケジュールされた第１タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記実行周波数を前記第２のより低い実行周波数へと切り替えるために前記プロセッサをトリガするメカニズムを、
さらに備え、
前記プロセッサをトリガすることが、前記プロセッサが以前にスケジューリングされた他のタイプの命令の実行を完了した後に、前記実行周波数を前記第２の実行周波数に切り替えることを含む、
Ｂ１７に記載のプロセッサ。
（Ｂ１９）
前記評価するメカニズムが、
前記プロセッサ周波数の前記自動切り替えをトリガするために、所与の間隔でのある数の連続する第１タイプの命令に関する下限として、閾値を格納するメカニズムと、
前記プロセッサの実行スケジューラに発行される前記第１タイプの命令の数をカウントするメカニズムと、
前記間隔内の前記第１タイプの動作の数が少なくとも前記閾値であることを条件に、前記自動切り替えが活動化されるメカニズムと、
前記第１タイプの命令の数と前記事前に設定された閾値数とを比較するメカニズムと、
前記プロセッサで前記第２周波数への前記実行周波数の変更を実施するための割り込み信号を自動的に発行するメカニズムとを更に備え、
前記自動的に発行することが、前記割り込み信号を、前記プロセッサに関連付けられたクロックおよび電力管理（ＣＰＭ）ユニットへと転送することを含み、前記ＣＰＭユニットが、前記割り込み信号を受信したことに応答して、前記実行周波数を設定および更新する、Ｂ１７に記載のプロセッサ。
（Ｂ２０）
前記評価する論理メカニズムが、
ソフトウェア・コンパイラであって、プログラム命令のコンパイル時に前記プログラム命令内の命令のシーケンスを監視し、前記第１タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第２の周波数へ変更するために割り込みを発行する、ソフトウェア・コンパイラと、
ハードウェア論理回路であって、前記プロセッサでの命令スケジューリング時に前記プログラム命令内の命令のシーケンスを監視し、スケジューリング用に発行された前記第１タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第２の周波数へ変更するために割り込みを発行する、ハードウェア論理回路と、
のうちの１つを介して完了される、Ｂ１８に記載のプロセッサ。
【図面の簡単な説明】
【００８４】
【図１】本発明の機構を内部で有利に実装可能な、Ｐｏｗｅｒ  ＰＣ４４０組み込みコアを示す図である。
【図２】本発明の機構を内部で有利に実装可能な、例示的データ処理システムを示すブロック図である。
【図３】本発明の例示的実施形態に従った、ハードウェア制御可能な動作当たりのサイクルを伴う、ＰＰＣ４４０パイプライン構造を示すブロック図である。
【図４】本発明の例示的実施形態に従った、乗算動作（および乗累算（ＭＡＣ）動作）当たりの実行サイクルを制御するための、実行ステージ１のモード制御（または実行回数制御）システムを示すブロック図である。
【図５】本発明の例示的実施形態に従った、乗算動作（およびＭＡＣ動作）当たりの実行サイクルを制御するための、実行ステージ２のモード制御（または実行回数制御）システムを示すブロック図である。
【図６】本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ１および実行ステージ２における連続乗算動作を示す例示的タイミング図である。
【図７】本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ２および書き戻しステージにおける連続乗算動作を示す例示的タイミング図である。
【図８】本発明の例示的実施形態に従った、障害状況によるホールドを有する乗算器パイプラインの実行ステージ１および実行ステージ２における乗算動作を示す例示的タイミング図である。
【図９】本発明の例示的実施形態に従った、障害状況を有する乗算器パイプラインの実行ステージ２および書き戻しステージにおける乗算動作を示す例示的タイミング図である。
【図１０】本発明の例示的実施形態に従った、ソフトウェア・ベースの周波数制御システムに関するＣＰＵ周波数検出および制御論理を示すブロック図である。
【図１１】本発明の例示的実施形態に従った、実行用にスケジューリングされた乗算動作の数をカウントするために命令デコードおよび発行論理に結合された、ソフトウェア・ベースの周波数制御システムを示す他の図である。
【図１２】本発明の一実施形態に従った、プロセッサの実行周波数をいつ変更するかを決定するために、図１１に従ったソフトウェア・ベースの周波数制御システムによって検出された周波数制限命令カウントの使用を示す論理流れ図である。
【符号の説明】
【００８５】
１００    Ｐｏｗｅｒ  ＰＣ４４０組み込みコア
１０２    ４４０  中央処理ユニット（ＣＰＵ）
１０４    メモリ管理ユニット（ＭＭＵ）
１０５    キャッシュ・ユニット
１０６    ロード・ストア・パイプ
１０７    単純整数パイプ
１０８    複雑整数パイプ
１１０    サポート論理
１２０    Ｉキャッシュ・アレイ（構成可能）
１２２    Ｄキャッシュ・アレイ（構成可能）
これでＯＫです。他も同様です。
【図１】
0005270240.tif 000002
【図２】
0005270240.tif 000003
【図３】
0005270240.tif 000004
【図４】
0005270240.tif 000005
【図５】
0005270240.tif 000006
【図６】
0005270240.tif 000007
【図７】
0005270240.tif 000008
【図８】
0005270240.tif 000009
【図９】
0005270240.tif 000010
【図１０】
0005270240.tif 000011
【図１１】
0005270240.tif 000012
【図１２】
0005270240.tif 000013