(57)【特許請求の範囲】
【請求項１】
命令の組で動作し得るマイクロプロセッサを含むディジタル・システムを動作させる方法において、
命令デコーダを複数個の区画に分割する工程であって、前記命令デコーダの各区画が、前記マイクロプロセッサの前記命令の組のサブセットをデコードするように動作し得る、工程と、
命令メモリから命令バッファに一連の命令をフェッチする工程と、
前記命令バッファにフェッチされた前記一連の命令内の繰り返し可能な命令ブロックを識別する局所繰り返し命令を検出する工程と、
対応する繰り返し可能な命令ブロックをデコードするために必要とされない前記命令デコーダの区画を示す繰り返しプロファイル・パラメータを前記局所繰り返し命令に関係付ける工程と、
前記一連の命令内の前記繰り返し可能な命令ブロックを繰り返して実行する工程と、
を含み、
前記実行する工程が、
前記命令バッファから前記繰り返し可能な命令ブロックの命令を読み出す工程と、
前記命令デコーダを用いて、読み出した前記繰り返し可能な命令ブロックの命令をデコードする工程であって、前記繰り返しプロファイル・パラメータによって示されるように前記繰り返し可能な命令ブロックをデコードするために必要とされない前記命令デコーダの区画に電力供給しない、工程と、
を含む、
方法。
【請求項２】
命令の組で動作し得るマイクロプロセッサのための一連の命令を作成するためソースコード・プログラムをアセンブルする方法であって、前記マイクロプロセッサが複数個の区画に分割される命令デコーダを含み、前記の命令デコーダの各区画が前記マイクロプロセッサの前記命令の組のサブセットをデコードするように動作し得る、方法において、
前記マイクロプロセッサにより実行可能な命令の組の各命令に対して項目を有する命令表を作成する工程であって、各項目がその命令をデコードするために必要とされる前記命令デコーダの区画を識別する、工程と、
前記ソースコードを一連のマシン読み取り可能命令に変換する工程と、
繰り返し可能な命令ブロックを判定する工程と、
前記繰り返し可能な命令ブロックの命令を識別する局所繰り返し命令を形成する工程と、
前記命令表及び前記繰り返し可能な命令ブロックから、前記繰り返し可能な命令ブロックの何れの命令にも用いられない前記命令デコーダの区画を示す繰り返しプロファイル・パラメータを形成する工程と、
前記繰り返しプロファイル・パラメータを対応する繰り返し可能な命令ブロックの前記局所繰り返し命令と関係付ける工程と、
を含む、方法。
【請求項３】
命令の組で動作し得るマイクロプロセッサを含むディジタル・システムにおいて、
命令メモリから読み出される複数の命令をストアするよう動作し得る命令バッファと、
複数個の区画に分割される命令デコーダであって、前記命令デコーダの各区画が、前記マイクロプロセッサの前記命令の組のサブセットをデコードするように動作し得る、前記命令デコーダと、
前記命令バッファにストアされる繰り返し可能な命令ブロックを識別するブロック繰り返し命令と、対応する繰り返し可能な命令ブロックをデコードするために必要とされない前記命令デコーダの区画を示す、対応する繰り返しプロファイル・パラメータとに応答するブロック繰り返し制御回路と、
を含み、
前記ブロック繰り返し制御回路が、
前記命令バッファから前記繰り返し可能な命令ブロックの次の命令を読み出し、
前記繰り返しプロファイル・パラメータによって示されるように前記繰り返し可能な命令ブロックをデコードするために必要とされない前記命令デコーダの区画に電力供給せず、
前記繰り返し可能な命令ブロックの前記読み出された命令をデコードのため前記命令デコーダに供給する、
ことによって、前記繰り返し可能な命令ブロックの繰り返し実行を制御する、
ディジタル・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はディジタル・マイクロプロセッサに関係し、特に専用ではないが、プログラム流れを繰返すよう設定可能なマイクロプロセッサに関係している。
【０００２】
【従来の技術】
多数の異なる型式のマイクロプロセッサが公知であり、中でもマイクロプロセッサは１例である。例えば、ディジタル信号プロセッサ（ＤＳＰ）は、特にモバイル処理応用のような特定の応用に広範囲に使用されている。ＤＳＰは、関連する応用の性能を最適化するよう標準的に構成され、これを実施するためより特殊化された実行装置と命令組を使用している。専用ではないが、特にモバイル電気通信応用のような応用例では、電力消費を出来る限り低くしつつＤＳＰ性能をさらに増強して提供することが望ましい。
【０００３】
ＤＳＰ又はマイクロプロセッサでは、プログラム・メモリに記憶されたマシン読取り可能命令は、プロセッサが演算又は機能を実行するためプロセッサにより連続的に実行される。マシン読取り可能命令の列は「プログラム」と呼ばれる。プログラム命令は連続的に実行されるのが標準であるが、ある種の命令はプログラム順序を中断させ、プログラム流れが命令のブロックを繰返すことを可能とする。このような命令ブロックの繰返しは「ルーピング」として知られ、命令のブロックは「ループ」又は「ブロック」として知られている。
【０００４】
電力消費を減少するため、多くのプロセッサは、非活動時にクロックが低下する、又はある種の周辺装置を不要の時にオフにする低電力モードを備える。割込みが発生して全動作を再開するまでプロセッサは「アイドル」モード又は「スリープ」モードに入る。
【０００５】
【発明が解決しようとする課題】
本発明の教示はディジタル・システムと、例えば専用ではないが、ディジタル信号プロセッサのようなマイクロプロセッサによる電力消費をさらに減少するための、ディジタル・システムの操作方法を開示する。
【０００６】
【課題を解決するための手段】
特に、マイクロプロセッサを含むディジタル・システムを操作する方法を開示する。マイクロプロセッサの一部が複数個の区画に区分される。マイクロプロセッサはマイクロプロセッサの命令パイプライン内で一連の命令を実行し、一連の命令内の命令のブロックを繰返し実行する。複数個の区画の内の少なくとも１つが命令のブロックを実行するために必要ないことが決定される。電力消散を減少するため、命令のブロックが繰返し実行されている間不要な区画の動作は禁止される。
【０００７】
命令のブロックを実行するのに必要ない区画を示す繰返しプロファイル・パラメータが与えられる。繰返しプロファイル・パラメータは命令のブロックの前に実行される命令により与えられることが望ましい。繰返しプロファイル・パラメータは、命令のブロックの最初の繰返しの実行を監視し、これにより繰返しプロファイル・パラメータを得ることにより決定してもよい。内部ループと外部ループに別々の繰返しプロファイル・パラメータを与えてもよい。
【０００８】
ＩＳＲの実行時にマイクロプロセッサの全ての区画が付勢されるよう区画禁止をマスクし、ＩＳＲの実行を完了した後命令のブロックの繰返し実行に復帰した時区画禁止のアンマスクを発生させる割込みが命令のブロックの実行時に与えられることが望ましい。
【０００９】
マイクロプロセッサの各種の部分が区画分け可能であり、命令のブロックの実行時に部分的に禁止される。例えば、命令デコーダは命令の群に従って区画分けされる。命令レジスタは各種の命令長に従って区画分けされる。命令パイプラインは並列命令実行に従って区画分けされる。マイクロプロセッサの一部はデータ型式に従って区画分けされる。アドレス発生回路はアドレス・モードに従って区画分けされる。命令のブロックの実行時に不要な場合、状態回路は禁止される。
【００１０】
一連の命令を作成するためソースコード・プログラムをアセンブルする方法も開示される。一連の命令は、最初の命令と最後の命令を含む命令の繰返し可能なブロックを有する。各命令の項目がその命令を含む命令群を定義する群パターンを含むように、選択したマイクロプロセッサにより実行可能な各命令に対して項目を有する命令表が作成される。ソースコードは一連の命令に変換され、プロローグ命令と関係する命令の繰返しブロックに対して最初の命令と最後の命令が決定される。命令のブロック中の各命令を表す命令表から選択された複数個の群パターンを組合せて繰返しプロファイル・パラメータを形成し、繰返しプロファイル・パラメータは一連の命令のプロローグ命令に関係付けられる。
【００１１】
いくつかの命令群に対する命令デコーダの区画分けは、命令ループの実行時に１つ以上のデコーダ区画をアイドルのままにすることを可能とする。結果として、マイクロプロセッサによる電力消費の対応した減少がある。
【００１２】
それ故、本願の教示は無線通信装置のような、携帯装置での使用に特に適している。標準的にこれらの無線通信装置は、液晶表示又はＴＦＴ表示部のような表示部と、通信装置へデータを入力するキーパッド又はキーボードを含むユーザー・インターフェースを含む。さらに、無線通信装置はまた、無線電話網等と無線通信するアンテナも含む。
一例として、添付図面に図示した例示実施例を参照として、本発明を詳細に説明する。
【００１３】
【発明の実施の形態】
本願の教示は、例えば応用特定集積回路（ＡＳＩＣ）に実装された、ディジタル信号プロセッサ（ＤＳＰ）に特定の応用を見出すが、これらの教示はその他の形式のマイクロプロセッサにも応用例を見出してもよい。
【００１４】
図１はディジタル信号プロセッサ（「ＤＳＰ」）であるマイクロプロセッサ１０のブロック線図である。明瞭にするため、図１は本願の教示に適切なマイクロプロセッサ１０の部分のみを図示している。ＤＳＰの一般的構成の詳細は公知であり、他で容易に見出されるであろう。例えば、フレデリック・ボートー他に発行された米国特許第5,072,418号はＤＳＰを詳細に記載している。ゲーリー・スウォボダ他に発行された米国特許第5,329,471号はＤＳＰを如何に検査しエミュレートするかを詳細に記載している。本願により開示される実施例に適切なマイクロプロセッサ１０の部分の詳細は、マイクロプロセッサ技術の当業者がこれらを作成し使用可能とするよう以下に十分詳細に説明されている。
【００１５】
プロセッサの部分の区画分けは、命令ループの実行時に１つ以上の区画がアイドルのままでいることを可能とする。結果として、マイクロプロセッサによる電力消費に対応する減少がある。それ故、開示の実施例は、無線通信装置のような携帯装置の使用に特に適している。本教示の特徴から恩恵を受けるいくつかの例示システムは、米国特許第5,072,418号、特に米国特許第5,072,418号の図２−１８と関連して説明される。電力消費を減少するため本教示の特徴を含むマイクロプロセッサは、米国特許第5,072,418号に記載されたシステムをさらに改良するために使用可能である。前記のシステムは、以下には限定されないが、産業プロセス制御。自動車システム、モーター制御、ロボット制御システム、衛星電気通信システム、エコー抑止システム、モデム、ビデオ映像システム、音声認識システム、暗号化付きボコーダ・モデム・システム、等を含む。
【００１６】
図２は、一体化キーボード１２と表示部１４付きの移動電話のような、移動電気通信装置で本教示の特徴を使用するディジタル・システムの例示実装を図示する。本教示の特徴を実施したディジタル信号プロセッサ１０は、適切な場合にはキーボード・アダプタ（図示せず）を介してキーボード１２に、また適切な場合には表示アダプタ（図示せず）を介して表示部１４に、さらに無線周波数（ＲＦ）回路１６に接続された集積回路４０にパッケージ化される。ＲＦ回路１６はアンテナ１８に接続される。集積回路４０は表面実装用の複数個の接点を有する。しかしながら、集積回路はその他の構成、例えば零挿入力ソケットに取付けるための回路の底面の複数個のピン、又は実際任意のその他の適切な構成を含み得る。
【００１７】
本教示によるプロセッサの例の基本アーキテクチャを以下に説明する。
【００１８】
ここで再び図１を参照すると、マイクロプロセッサ１０は中央処理装置（ＣＰＵ）１００とプロセッサ・バックプレーン２０を含む。本実施例では、プロセッサは応用特定集積回路（ＡＳＩＣ）に実装されたディジタル信号プロセッサ（ＤＳＰ）である。
【００１９】
図１に示すように、中央処理装置１００はプロセッサ・コア１０２とプロセッサ・コア１０２をプロセッサ・コア外部のメモリ装置とインターフェースするメモリ・インターフェース、又は管理装置１０４を含む。
【００２０】
プロセッサ・バックプレーン２０は、マイクロプロセッサのメモリ管理装置１０４が接続されるバックプレーン・バス２２を含む。バックプレーン・バス２２には、命令キャッシュ・メモリ２４、周辺装置２６及び外部インターフェース２８も接続される。
【００２１】
その他の実施例では、別の実装例が異なる構成及び／又は異なる技術を使用してもよいことも認められる。例えば、ＣＰＵ１００単独でプロセッサ１０を構成し、プロセッサ・バックプレーン２０をこれから分離することも可能である。例えば、ＣＰＵ１００は、バックプレーン・バス２２、周辺及び外部インターフェースをサポートするバックプレーン２０から分離して取付けたＤＳＰも可能である。例えば、マイクロプロセッサ１００はＤＳＰ以外のマイクロプロセッサも可能で、ＡＳＩＣ以外の技術で実装することも可能である。処理エンジンを含むマイクロプロセッサ、又はプロセッサは１個以上の集積回路に実装可能である。
【００２２】
図３は処理コア１０２の実施例の基本構造を図示する。図示したように、処理コア１０２は４つの要素、すなわち命令バッファ装置（Ｉ装置）１０６と３個の実行装置とを含む。実行装置は、命令バッファ装置（Ｉ装置）１０６からデコードされた命令を実行し、プログラム流れを制御監視する、プログラム流れ装置（Ｐ装置）１０８、アドレス・データ流れ装置（Ａ装置）１１０及びデータ計算装置（Ｄ装置）１１２である。
【００２３】
図４は処理コア１０２のＰ装置１０８、Ａ装置１１０及びＤ装置１１２をさらに詳細に図示し、処理コア１０２の各種要素を接続するバス構造を示す。Ｐ装置１０８は、例えば、ループ制御回路、ＧｏＴｏ／分岐制御回路および繰返しカウンタ・レジスタや割込みマスク、フラッグ又はベクトル・レジスタのようなプログラム流れを制御し監視する各種のレジスタを含む。Ｐ装置１０８は汎用データ書込みバス（ＥＢ、ＦＢ）１３０、１３２、データ読取りバス（ＣＢ、ＤＢ）１３４、１３６及びアドレス定数バス（ＫＡＢ）１４２に結合される。さらに、Ｐ装置１０８はＣＳＲ、ＡＣＢ及びＲＧＤとラベル付けした各種のバスを介してＡ装置１１０とＤ装置１１２内の副装置に結合される。
【００２４】
図４に図示するように、本実施例では、Ａ装置１１０はレジスタファイル３０、データアドレス発生副装置（ＤＡＧＥＮ）３２及び算術論理装置（ＡＬＵ）３４を含む。Ａ装置レジスタファイル３０は各種のレジスタを含み、この中には１６ビット・ポインタ・レジスタ（ＡＲ０−ＡＲ７）とアドレス発生と共にデータ流れにも使用してもよいデータ・レジスタ（ＤＲ０−ＤＲ３）がある。さらに、レジスタファイルは１６ビット環状バッファ・レジスタと７ビット・データページ・レジスタを含む。汎用バス（ＥＢ、ＦＢ、ＣＢ、ＤＢ）１３０、１３２、１３４、１３６と共に、データ定数バス１４０とアドレス定数バス１４２がＡ装置レジスタファイル３０に結合される。Ａ装置レジスタファイル３０は、各々反対方向に動作する単方向バス１４４と１４６によりＡ装置ＤＡＧＥＮ装置３２に結合される。ＤＡＧＥＮ装置３２は、例えばマイクロプロセッサ１００内のアドレス発生を制御し監視する１６ビットＸ／Ｙレジスタと係数及びスタックポインタ・レジスタを含む。
【００２５】
Ａ装置１１０はまた、加算、減算及びＡＮＤ、ＯＲ及びＸＯＲ論理演算のようなＡＬＵと標準的に関係する機能と共にシフタ機能を含むＡＬＵ３４も含む。ＡＬＵ３４も汎用バス（ＥＢ、ＤＢ）１３０、１３６と命令定数データバス（ＫＤＢ）１４０に結合される。Ａ装置ＡＬＵはＰ装置１０８レジスタファイルからレジスタ内容を受取るＰＤＡバスによりＰ装置１０８に結合される。ＡＬＵ３４はまたアドレス及びデータ・レジスタ内容を受取るためバスＲＧＡとＲＧＢにより、かつレジスタファイル３０のアドレス及びデータ・レジスタを転送するためバスＲＧＤによりＡ装置レジスタファイル３０にも結合される。
【００２６】
図示したように、Ｄ装置１１２はＤ装置レジスタファイル３６、Ｄ装置ＡＬＵ３８、Ｄ装置シフタ４０及び２個の乗算及びアキュムレート装置（ＭＡＣ１、ＭＡＣ２）４２と４４を含む。Ｄ装置レジスタファイル３６、Ｄ装置ＡＬＵ３８及びＤ装置シフタ４０はバス（ＥＢ、ＦＢ、ＣＢ、ＤＢ及びＫＤＢ）１３０、１３２、１３４、１３６及び１４０に結合され、ＭＡＣ装置４２と４４はバス（ＣＢ、ＤＢ、ＫＤＢ）１３４、１３６、１４０とデータ読取りバス（ＢＢ）１４４に結合される。Ｄ装置レジスタファイル３６は４０ビット・アキュムレータ（ＡＣ０−ＡＣ３）と１６ビット転移レジスタを含む。Ｄ装置１１２は４０ビット・アキュムレータに加えてソース又は目的地レジスタとしてＡ装置１１０中の１６ビット・ポインタ及びデータレジスタも利用可能である。Ｄ装置レジスタファイル３６はアキュムレータ書込みバス（ＡＣＷ０、ＡＣＷ１）１４６、１４８を通してＤ装置ＡＬＵ３８とＭＡＣ１＆２  ４２、４４から、及びアキュムレータ書込みバス（ＡＣＷ１）１４８を通してＤ装置シフタ４０からデータを受取る。データはアキュムレータ読取りバス（ＡＣＲ０、ＡＣＲ１）１５０、１５２を通してＤ装置レジスタファイル・アキュムレータからＤ装置ＡＬＵ３８、Ｄ装置シフタ４０及びＭＡＣ１＆２  ４２、４４へ読取られる。Ｄ装置ＡＬＵ３８とＤ装置シフタ４０もＥＦＣ、ＤＲＢ、ＤＲ２及びＡＣＢとラベル付けした各種のバスを介してＡ装置１０８の副装置に結合される。
【００２７】
ここで図５を参照すると、３２語命令バッファ・キュー（ＩＢＱ）５０２を含む命令バッファ装置１０６が図示されている。ＩＢＱ５０２は８ビット・バイト５０６に論理的に分割される、３２Ｘ１６ビット・レジスタ５０４を含む。命令は３２ビット・プログラム・バス（ＰＢ）１２２を介してＩＢＱ５０２に到着する。命令は局所書込みプログラム・カウンタ（ＬＷＰＣ）５３２により指示された位置へ３２ビット・サイクルでフェッチされる。ＬＷＰＣ５３２はＰ装置１０８に位置するレジスタに含まれる。Ｐ装置１０８は又局所読取りプログラム・カウンタ（ＬＲＰＣ）５３６レジスタ、及び書込みプログラム・カウンタ（ＷＰＣ）５３０と読取りプログラム・カウンタ（ＲＰＣ）５３４レジスタも含む。ＬＲＰＣ５３６は命令デコーダ５１２と５１４にロードされる次ぎの命令又は複数命令のＩＢＱ５０２中の位置を指す。すなわち、ＬＲＰＣ５３４はデコーダ５１２、５１４に現在ディスパッチされている命令のＩＢＱ５０２中の位置を指す。ＷＰＣはパイプライン用の命令コードの次ぎの４バイトの開始のプログラム・メモリ中のアドレスを指す。ＩＢＱへの各フェッチに対して、命令境界に係らずプログラム命令からの次ぎの４バイトがフェッチされる。ＲＰＣ５３４はデコーダ５１２と５１４に現在ディスパッチされている命令のプログラム・メモリ中のアドレスを指す。
【００２８】
命令は４８ビット語に形成されて命令レジスタ５２２にロードされ、それからマルチプレクサ５２０と５２１を介して４８ビット・バス５１６を通して命令デコーダ５１２、５１４にロードされる。命令は４８ビット以外を含む語に形成してもよく、本教示は上述した特定の実施例に限定されないことは通常の当業者には明らかである。
【００２９】
任意の１命令サイクル時に、バスは最大２命令、デコーダ当り１つをロード可能である。命令の組合せは、４８ビット・バス上に適合する、任意の形式の組合せ、８、１６、２４、３２、４０及び４８ビットでよい。１命令のみが１サイクル時にロード可能である場合、デコーダ１、５１２がデコーダ２、５１４に優先してロードされる。次いで各命令は、これを実行し、命令又は演算が実行されるべきデータをアクセスするために各機能装置に転送される。命令デコーダに渡される前に、命令はバイト境界に整合される。整合はそのデコード時に前の命令に得られた形式を基にして行なわれる。バイト境界による命令の整合と関係する多重化はマルチプレクサ５２０と５２１で実行される。
【００３０】
プロセッサ・コア１０２は７段命令実行パイプラインを通して命令を実行し、その各段を以下に図６を参照して説明する。
【００３１】
パイプラインの第１段はＰＲＥ−ＦＥＴＣＨ（Ｐ０）段２０２で、この段ではメモリ・インターフェース又はメモリ管理装置１０４のアドレスバス（ＰＡＢ）１１８上のアドレスをアサートすることにより次ぎのプログラム・メモリ位置がアドレスされる。
【００３２】
次ぎの段、ＦＥＴＣＨ（Ｐ１）段２０４では、プログラム・メモリが読取られ、Ｉ装置１０６はメモリ管理装置１０４からＰＢバス１２２を介して充填される。
【００３３】
ＰＲＥ−ＦＥＴＣＨとＦＥＴＣＨ段時にはパイプラインは割込可能で連続プログラム流れを切断し、例えば分岐命令に対してプログラム・メモリ中の他の命令を指すことが可能であるという点で、ＰＲＥ−ＦＥＴＣＨとＦＥＴＣＨ段はパイプライン段の残りから分離している。
【００３４】
次いで第３段、ＤＥＣＯＤＥ（Ｐ３）２０６で命令バッファの次ぎの命令がデコーダ５１２／５１４にディスパッチされ、ここで命令はデコードされその命令を実行する実行装置、例えばＰ装置１０８、Ａ装置１１０又はＤ装置１１２へディスパッチされる。デコード段２０６は、命令の種類を指示する第１部分、命令の形式を指示する第２部分及び命令のアドレシング・モードを指示する第３部分を含む命令の少なくとも１部をデコードする段階を含む。
【００３５】
次ぎの段はＡＤＤＲＥＳＳ（Ｐ３）２０８であり、ここで命令に使用されるデータのアドレスが計算されるか、又は命令がプログラム分岐又はジャンプを必要とする場合、新たなプログラム・アドレスが計算される。各計算は各々Ａ装置又はＰ装置１０８で発生する。
【００３６】
ＡＣＣＥＳＳ（Ｐ４）段２１０では、読取りオペランドのアドレスが出力され、Ｘｍｅｍ間接アドレシング・モードによりＤＡＧＥＮ  Ｘオペレータでアドレスが発生されたメモリ・オペランドが次いで間接アドレスされたＸメモリ（Ｘｍｅｍ）から読み出される。
【００３７】
パイプラインの次ぎの段はＲＥＡＤ（Ｐ５）段２１２で、ここでＹｍｅｍ間接アドレシング・モードによりＤＡＧＥＮ  Ｙオペレータで、又は係数アドレス・モードによりＤＡＧＥＮ  Ｃオペレータでアドレスが発生された、メモリ・オペランドが読取られる。命令の結果を書込むべきメモリ位置のアドレスが出力される。
【００３８】
２重アクセスの場合、読取りオペランドはＹ路で、書込みオペランドはＸ路でも発生可能である。
【００３９】
最後に、Ａ装置１１０又はＤ装置１１２のどちらかで命令が実行される実行ＥＸＥＣ（Ｐ６）段２１４がある。次いで結果はデータ・レジスタ又はアキュムレータに記憶されるか、又は読取り／変更／書込み又はストア命令でメモリに書込まれる。さらに、ＥＸＥＣ段時にアキュムレータのデータにシフト演算が実行される。
【００４０】
パイプライン・プロセッサの動作の基本原理を図７を参照して以下に説明する。図７から分かるように、第１命令３０２に対して、連続するパイプライン段が時間期間Ｔ1−Ｔ7上で発生する。各時間期間はプロセッサ・マシン・クロックのクロック・サイクルである。期間Ｔ2に第２命令がパイプラインに入ることが可能である、何故なら前の命令は今や次ぎのパイプライン段へ移動しているからである。命令３、３０６に対して、ＰＲＥ−ＦＥＴＣＨ段２０２は時間Ｔ3で発生する。７段パイプラインの図７から分かるように、全体で７命令が同時に処理されてもよい。７命令３０２−３１４全てに対して、図７はこれら全てが時間Ｔ7で処理中であることを示す。このような構造は命令の処理にある形式の並列性を付与する。
【００４１】
図８に示すように、開示実施例は、２４ビット・アドレスバス１１４と両方向１６ビット・データバス１１６とを介して外部メモリ装置（図示せず）に結合されているメモリ管理装置１０４を含む。さらに、メモリ管理装置１０４は２４ビット・アドレスバス１１８と３２ビット両方向データバス１２０とを介してプログラム記憶メモリ（図示せず）に結合される。メモリ管理装置１０４はまた３２ビット・プログラム読取りバス（ＰＢ）１２２を介してプロセッサ・コア１０２のＩ装置１０６にも結合される。Ｐ装置１０８、Ａ装置１１０及びＤ装置１１２はデータ読取り及びデータ書込みバスと対応するアドレスバスとを介してメモリ管理装置１０４に結合される。Ｐ装置１０８はさらにプログラム・アドレスバス１２８にも結合される。
【００４２】
特に、Ｐ装置１０８は２４ビット・プログラム・アドレスバス１２８、２本の１６ビット・データ書込みバス（ＥＢ、ＦＢ）１３０、１３２、及び２本の１６ビット・データ読取りバス（ＣＢ、ＤＢ）１３４、１３６によりメモリ管理装置１０４に結合される。Ａ装置１１０は２本の２４ビット・データ書込みアドレスバス（ＥＡＢ、ＦＡＢ）１６０、１６２、２本の１６ビット・データ書込みバス（ＥＢ、ＦＢ）１３０，１３２、３本のデータ読取りアドレスバス（ＢＡＢ、ＶＡＢ、ＤＡＢ）１６４、１６６、１６８及び２本の１６ビット・データ読取りバス（ＣＢ、ＤＢ）１３４、１３６を介してメモリ管理装置１０４に結合される。Ｄ装置１１２は２本のデータ書込みバス（ＥＢ、ＦＢ）１３０，１３２と３本のデータ読取りバス（ＢＢ、ＣＢ、ＤＢ）１４４、１３４、１３６とを介してメモリ管理装置１０４に結合される。
【００４３】
図８は、例えば分岐命令を転送するため、１２４でＩ装置１０６からＰ装置１０８へ命令の引渡しを表している。さらに、図８は１２６と１２８で各々Ｉ装置１０６からＡ装置１１０へ、そしてＤ装置１１２へのデータの引渡しを表している。
【００４４】
プロセッサの各種の特徴を表１に要約する。
【表１】
0005133476.tif 000002
【００４５】
マイクロプロセッサは、命令のブロックを通して繰り返しルーピングを提供する、局所繰返し命令に応答するよう設定される。局所繰返し命令は１６ビット命令で、演算コード；並列付勢ビット；及びオフセット（６ビット）を含む。演算コードは局所命令として命令を定義し、マイクロプロセッサにオフセットと演算コード拡張を期待するよう促す。記載した実施例では、オフセットは５５の最大値を有する。しかしながら、これはループ寸法が５５バイトに限定されることを意味しない。実際、このオフセットはブロック繰返し終了アドレスと開始アドレスとの間の差を指定し、開始アドレスは第１命令又は命令対のアドレスであり、終了アドレスは最後の命令又は命令対の最後の命令のアドレスである。それ故、最大ループ寸法は（５５＋「最終命令の寸法」）となり、これは６１バイト以下である。他の実施例では、例えば、異なる寸法の命令バッファ・キューに従って、オフセット及びループ寸法を大きく又は小さくしてもよい。
【００４６】
再び図５を参照すると、局所ループ命令がデコードされると、局所ループの開始アドレス、すなわち局所ループ命令アドレス後のアドレスが、例えばＰ装置１０８に配置されているブロック繰返し開始アドレス0（ＲＳＡ0）レジスタに記憶される。ループの最初の通過後に、読取りプログラム・カウント（ＲＰＣ）はループに再入するためＲＳＡ0の内容をロードされる。局所ループの最後の命令の位置はオフセットを用いて計算され、その位置は、例えばＰ装置１０８にこれも配置してもよいブロック繰返し終了アドレス0（ＲＥＡ0）に記憶される。２個の繰返し開始アドレス・レジスタと２個の繰返し終了アドレス・レジスタ（ＲＳＡ0５５０、ＲＳＡ1５５１、ＲＥＡ0、ＲＥＡ1）がネストされたループ用に提供される。２より大きいネスト・レベルに対しては、先行する開始／終了アドレスはスタックレジスタにプッシュされる。これら４個のレジスタに加えて、ブロック繰返し制御回路も２個のブロック繰返しカウント（ＢＲＣ０／ＢＲＣ１）レジスタと関係する制御回路とを含む。
【００４７】
標準的には、ＤＳＰプログラム・コードはループの集中的繰返しに起因する相当量のプロセッサ実行サイクルを生じる。本実施例では、これらのループの大部分は、コードが命令バッファから直接実行され外部メモリからのフェッチは減勢されている「局所繰返し」として管理可能である。これは図１８を参照してより詳細に説明される。これらの局所繰返しループはアルゴリズムの性質により駆動される限定数の命令を含むため、電力消費を最小化するために全機能装置又は機能装置の１つ以上の区画又は制御回路を選択的に減勢する機会がある。これは、コンパイル／アセンブリ過程時又はマイクロプロセッサ内で回路を監視することによるループの第１繰返し時に、命令のブロック繰返し本体をプロファイルすることにより実施可能である。
【００４８】
本発明の実施例のマイクロプロセッサは局所繰返し命令とＩＢＱ内に完全には適合不可能であるブロック用の一般ブロック繰返し命令の両方を有する。大きな繰返しブロックはハードウェア・リソースの限定された組を使用する可能性が小さいため、繰返しループ・プロファイリングは局所繰返し命令と関係する。しかしながら、本発明の特徴は、局所繰返しそれ自体を含まず、例えば一般ブロック繰返し命令のみを有する実施例にも有用である。そのような実施例では、例えばブロック長を決定し短いブロックのみに繰返しプロファイリングを起動するよう検査を実施可能である。
【００４９】
アセンブラがプロファイリングを実行する時、ブロック内の命令の解析を基に繰返しプロファイル・パラメータが形成され、即時オペランドとして局所ブロック命令に添付される。標準的には、減勢可能である選択区画を指定するために余分な１バイトで十分である。
【００５０】
監視ハードウェアがプロファイリングを実施する時、命令のブロックの第１繰り返しの実行から命令のそのブロックを実行するのに必要なハードウェア・リソースが決定される。次いで第２から最後の繰返しまで不用なハードウェアと関係する制御デコード論理部が減勢、又は禁止可能である。
【００５１】
図９はプロセッサの命令組内の群分けの図である。本発明の特徴は、命令デコーダが命令群を基に多数の区画に区画分け可能である点である。例えば、図９では５命令群、９０１−９０５の命令組９００が図示されている。繰返しブロック内で使用される命令に応じて、１つ以上の命令群が表示されなくともよい。例えば、第１繰返しループ時には、命令のブロックは群９０２と９０４内のみの命令から構成される。群９０１、９０３と９０５内の命令は使用されない。それ故、デコードされる必要のないこれらの未使用命令群又はアドレシング・モードと関係するデコード論理部は、それ故命令のこの第１ブロックの繰返し実行時に減勢される。以後の繰返しループは、異なる命令群が表示されない命令のブロックを有することもある。これらの異なる未使用命令群と関係する異なるデコード論理部はそれ故以後の命令のブロックの繰返し実行時に減勢される。この方式は、デコード・ハードウェアにより見られる動的な命令組を最小に保持しつつ、柔軟性とコード寸法最適化をコード化する大規模ＤＳＰ命令組のトレードオフを可能とする。
【００５２】
本発明の実施例のプロセッサ内では、繰返しループ内で使用を許可されていない、goto、call、switch、intr（ソフトウェア割込み）、trap、reset、及びidleを含む、制御流れ命令の組が定義される。局所ループでは本質的に不正である制御流れ命令はループの実行時にはデコードされる必要はない。それ故、この命令組を別の区画に配置するよう命令デコード・ハードウェアを区画分けすることにより、ブロック繰返しプロファイル・パラメータに係らず局所繰返しループ実行時に相当量のゲートを停止可能である。
【００５３】
例えば、本発明の別の実施例は繰返しプロファイル・パラメータのサポートを提供しない；しかしながら、命令がパイプライン中で実行される間命令デコーダの残りの部分が命令のブロックをデコードしている間、命令のブロックを繰返し実行する段階時に命令の本質的に禁止されている群に対応する命令デコーダの区画の動作を禁止することにより、電力消費を減少できる。
【００５４】
表２は、本実施例のプロセッサの局所繰返し命令に添付される繰返しプロファイル・パラメータの命令コード化を図示する。
【表２】
0005133476.tif 000003
表２に記載したように、プログラムを書く人間は繰返しプロファイル・パラメータに責任を負わない。このパラメータは、プログラマからの助け又は指令なしで、本実施例のアセンブラにより、又は別の実施例ではハードウェアを監視することにより決定される。
【００５５】
当業者は繰返し命令に他のコード化を使用可能であることを認識するであろう。本実施例では、繰返しプロファイル・パラメータは繰返し局所命令に添付される。しかしながら、当業者は、繰返しプロファイル・パラメータは繰返しループのプロローグ命令として動作する任意の命令に添付又は関係してもよいことを認める。例えば、他の実施例では繰返しプロファイル・パラメータは、関係繰返しループの実行の前に実行用のアセンブラによりマシン読取り可能命令ストリームに挿入されるロード命令により渡される。
【００５６】
図１０は、命令デコーダの区画を含む、プロセッサ１００の命令実行パイプラインをさらに詳細に図示するブロック線図である。本実施例の命令デコーダは階層的である。命令デコードの第１レベルはＤＥＣＯＤＥパイプライン段と関係し、区画８０２ａ−ｅ、と５１２により表される。命令デコードの第２レベルはＡＤＤＲＥＳＳパイプライン段と関係し、区画８１０ａ−ｃ、８１２ａ−ｃ、８２０ａ−ｃ及び８２２ａ−ｃを有する命令デコード・ハードウェア８０８により表される。各命令デコーダ区画は命令群と関係する。図９に図示した命令群と図１０に図示した区画は図解用に簡略化されている。本発明の各種の実施例は本明細書で図示するものより多少の命令群とデコーダ区画を有してもよい。
【００５７】
前述したように、命令対が命令レジスタ５２２に受取られ次いでデコードされる。ＤＥＣＯＤＥパイプライン段でデコーダ５１２により抽出された命令形式は命令＃１／命令＃２境界と制御マルチプレクサ５２１を定義する。命令＃１と命令＃２は次いで、ＡＤＤＲＥＳＳ段の各形式に従って別々の命令レジスタ８０５、８０６にロードされることにより分離される。ＤＥＣＯＤＥ段で、制御流れ命令は区画８０２ａによりデコードされ、繰返し命令は区画８０２ｂによりデコードされ、ソフト・デュアル命令は区画８０２ｃによりデコードされ、アドレス・モードは区画８０２ｄによりデコードされ、そしてスタック・ポインタ制御命令は区画８０２ｅによりデコードされる。
【００５８】
ＡＤＤＲＥＳＳパイプライン段時に、第２レベル命令デコーダ８０８は、命令対を処理するのにどのデータ装置リソースが必要であるかを決定する。データ装置３８,４０、及び４２が命令対を処理するのに必要である。データ装置３８、４０および４２が図解用に与えられている。各種の実施例は追加の又は少ないデータ装置を有してもよい。電力消費を減少するため現在の命令対実行に不用であると決定されたデータ装置は停止される。これは、制御ハードウェア８３１、８３２、及び／又は８３３のクロックをゲートすることにより前のデータ・オペランド選択と前の演算制御を保持することで実行され、従って不用な装置内では信号転移は発生しない。ＲＥＡＤパイプライン段の不用な装置と関係する局所デコード・ハードウェアも停止される。
【００５９】
都合のよいことに、現在の命令演算コードが前記装置と関係する命令群内にある場合、局所繰返しプロファイリング方式は、与えられたループ実行に不用であるデータ・リソースの予想を可能とし、各段階のデコードを避けられる。繰返し局所命令の即時オペランドとして与えられた繰返しプロファイル・パラメータは繰返しプロファイル・レジスタ８００に記憶される。それ故、命令デコーダ８０８内の識別された区画は関係ループの繰返し実行時に繰返しプロファイル・パラメータに応答して禁止される。
【００６０】
都合のよいことに、局所繰返しプロファイリング方式はまたＤＥＣＯＤＥパイプライン段のデコード・ハードウェアの選択された区画の停止も可能とする。しかしながら、上述したように、局所繰返し本体内では不正である全ての制御流れ（goto、call、…）はデコードする必要はない。それ故、繰返しプロファイル・パラメータが与えられているかどうかに係らず、区画８０２ｃの関係ハードウェアは全ループ実行時に停止可能である。
【００６１】
プロファイルは、ループ本体がネストされた局所ループ繰返し又は単一の繰返し命令を含むかどうか決定可能である。ネストがない時、「局所繰返し＆繰り返し」デコードと関係するハードウェア区画８０２ｂは全ループ実行時に停止可能である。
【００６２】
プロファイルは、ループ本体がスタックポインタ関連命令（push()、pop()…）を含むかどうか決定可能である。スタックポインタ関連命令がない場合、「push()・pop()族」デコードと関係するハードウェア区画８０２ｅは全ループ実行時に停止可能である。
【００６３】
プロファイルは、ループ本体がソフト・デュアル又はビルトイン・デュアル命令を含むかどうか決定可能である。命令抽出ハードウェアとアドレス発生器制御はこの静的構成を利用してゲート活動ハードウェア区画８０２ｃを減少可能である。
【００６４】
図１１は、繰返しプロファイル・レジスタ８００とプロファイル・マスク１１０１を含む、プロセッサのブロック繰返し制御回路１１００をより詳細に図示するブロック線図である。繰返しプロファイル・レジスタ８００は繰返し局所命令により与えられる繰返しプロファイル・パラメータをロードされる。ループ・ネスティングの場合、２つのオプションが可能である。第１オプションでは、プロファイルは外部及び内部ループの両方により必要とされるリソースに従って決定される。第２オプションでは、外部ループと内部ループがそれ自体のプロファイルを有し、レジスタ８００はマスク１１０１に含まれるマルチプレクサ又はその他の手段により選択可能な２つのレジスタを含む。次いでプロファイルは有限ステートマシン（ＦＳＭ）１１０４によりスタックとして管理される。プロファイルはブロック繰返しの能動レベルに従って切替えられる。この方式は良好なグラニュラリティ（granularity）を与えるが、余分なハードウェアを必要とする。
【００６５】
命令のブロックの局所繰返しが完了すると、又はループ実行が割込まれた場合直ちにＦＳＭ１１０４に応答してプロファイルはマスク１１０１によりマスクされる。割込みサービス・ルーチン（ＩＳＲ）からの復帰時に、プロファイルはアンマスクされ能動となる。これによりＩＳＲ時には全命令組が能動に設定される。
【００６６】
さらに図１１を参照すると、選択した区画の動作を禁止するためにマスク回路１１０１からのプロファイル信号１１１０ａ−ｎがマイクロプロセッサの各種ハードウェア区画に与えられる。例えば、プロファイル信号１１１０ａは命令デコーダ区画１１０２ｃに与えられる。同様に、マスク１１０１からのその他のプロファイル信号はＤＥＣＯＤＥ段のその他の区画に与えられる。１１０２ｂのようなある種の区画は、常に付勢されている必要があり、プロファイル信号には応答しない。上述したように、制御流れ区画８０２ａのようなある種の区画は、デコード区画８０２ｂからのデコード信号１１１１により指示される、局所ループが実行されている時は常にプロファイル・パラメータに係らず減勢される。ＦＳＭ１１０４からの禁止信号１１１２はデコード信号１１１１に応答してアサートされる。
【００６７】
デコード・ハードウェア区画分けはプロファイル・パラメータ・ビットにより定義されるグラニュラリティと整合する。禁止、又は停止は、デコード論理の第１段（特別なゲート又は特別な入力）上の各プロファイル信号の特別な信号入力により処理される。この停止制御はループ実行時の静的信号として見ることが可能である。これは不用な転移又はグリッチの論理を通した伝播を避ける。プロファイル情報は他の実施例では、従来の設計ではこれがゲート化クロック付勢信号の速度路を発生するであろうクロック制御によりＤフリップフロップ（ＤＦＦ）又はラッチを停止するよう使用されてもよい。
【００６８】
さらに図１１を参照すると、パイプ遅延レジスタ１１２０はデコーダ８０８のＡＤＤＲＥＳＳ段区画のプロファイル信号のタイミングを保持する。ＡＤＤＲ段で実施される停止は特別な制御なしに読取り段デコーダ区画へ伝播される。また、各種のプロファイル信号は、ゲート１１４０のような論理ゲートにより組合されて、プロファイル信号の組合せと入替を作成して各種のハードウェア区画を禁止してもよい。
【００６９】
図１２は、可変寸法命令語用の命令レジスタ５２２を含む、プロセッサのブロック繰返し制御回路をさらに詳細に図示する本発明の他の実施例のブロック線図である。繰返しプロファイル・レジスタ１２００は繰返し局所命令により与えられる繰返しプロファイル・パラメータをロードされる。命令のブロックの局所繰返しの実行が開始されると直ちにＦＳＭ１２０４に応答してマスク１２０１によりプロファイルはアンマスクされる。命令のブロックの局所繰返しが完了すると、又はループ実行が割込まれた場合に直ちにＦＳＭ１２０４に応答してプロファイルはマスク１２０１によりマスクされる。
【００７０】
プロファイル・レジスタ１２００に記憶されたプロファイル・パラメータはループ本体の最大長命令形式を識別可能である。命令レジスタはいくつかの区画１２３０−１２３５に区画分けされる。次いでハードウェアは不用な命令レジスタ区画を選択的に禁止して命令レジスタ寸法をしかるべく調節可能である。クロック信号ＩＲＬＯＡＤは命令レジスタ５２２にマルチプレクサ５２０により命令バッファ（図５を参照）から選択された新たな命令をロードする。ゲート１２２０−１２２３の各々は、クロック信号ＩＲＬＯＡＤと組合されたマスク１２０１を介してパラメータ・レジスタ１２００からプロファイル信号を受信し、命令のブロックの繰返し実行時に命令レジスタ５２２の選択区画のローディングを禁止する。例えば、与えられたブロック繰返しで実行される全命令の最大長が５バイトであると決定された場合、クロック信号ＩＲＬＯＡＤがＡＮＤゲート１２２０を通過することを禁止され、これにより命令レジスタ区画１２３０のクロックを禁止するようにして、与えられたブロックの実行時にプロファイル信号１２１０ａを低にアサートさせる繰返しプロファイル・パラメータにより区画１２３０が禁止される。同様に、最大命令形式が４バイトであるものと決定された場合、命令の関連ブロックの繰返し実行時にプロファイル信号１２１０ａとプロファイル信号１２１０ｂの両方が低にアサートされて区画１２３０と１２３１のクロックが禁止される。ブロックは少なくとも２バイト命令を常に有しているため、区画１２３４と１２３５は関係する禁止回路を有しない。当業者は、ＡＮＤゲート以外の手段を使用して、繰返しプロファイル・パラメータに応答して選択した区画を禁止可能であると理解できるであろう。
【００７１】
さらに図１２を参照すると、同様な方法で、繰返しプロファイル・パラメータにより指示された最大長命令形式に応答してマルチプレクサ５２０を区画分けし選択区画を禁止可能である。
【００７２】
表２に記載したように、本発明の利点は、プログラムを書く人間が繰返しプロファイル・パラメータに責任を負わなくともよい点である。このパラメータは本実施例のアセンブラにより、又は別の実施例ではハードウェアを監視することにより、プログラマからの助け又は指令なしで決定される。図１１と図１２の実施例を組合せ、１２５０に指示するように、プロファイル・パラメータ・レジスタからのプロファイル信号の適切な選択と接続により、単一の繰返しプロファイル・パラメータが命令デコーダの選択区画とまた命令レジスタの選択区画も禁止するようにしてもよい。
【００７３】
図１３はネストされたループでの２つの繰返しループによるプロセッサ１００の動作を図示するタイミング図である。ループのネスティングの場合、２つのオプションが可能である：（１）外部及び内部ループの両方により必要とされるリソースに従って単一の複合プロファイルが決定される、（２）外部ループと内部ループがそれ自体のプロファイルを有する。プロファイルは次いでスタックとして管理される。プロファイルはブロック繰返しの能動レベルに従って切替えられる。第２オプションは良好なグラニュラリティを与えるが、余分なハードウェアを必要とする。再び図１１を参照すると、２個のプロファイル・レジスタ、ＰＲＯＦＩＬＥ０とＰＲＯＦＩＬＥ１が本実施例の８００内に含まれる。マスク１１０１はＭＡＳＫ０とＭＡＳＫ１を含む。１１０１内のマルチプレクサ回路（図示せず）はＦＳＭ１１０４に応答して動作して、一方がアンマスクされた時にプロファイル信号１１１０ａ−ｎに選択されたプロファイル・パラメータを与える。
【００７４】
ここで図１３を参照すると、時間線１３００は、第１オプションを使用して、ネストされたループ時のプロファイル信号１１１０ａ−ｎ（図１１上）又は１２１０ａ−ｎ（図１２上）の動作を図示する。内部及び外部ループ両方を表す複合繰返しプロファイルが決定され、外部ループと関係するプロローグ命令によりプロファイル・レジスタに記憶される。前述したように、プロローグ命令は時間スロット１３１０時にデコードされたループ命令であるか、又は例えばストア命令でもよい。内部ループの繰返し命令がプロファイル・パラメータを与える場合、これは無視される。ブロックの最初の命令が実行を開始する時刻１３１１までプロファイルはマスクされたままである。ネストされたループの実行の全時間１３０４の間複合プロファイルはアンマスクされたままである。時間１３１２で、外部ループの最後の繰返しが実行される。時刻１３１３で、最後の繰返しの最後の命令が実行され、時間スロット１３０６に指示するように、プロファイルが再びマスクされる。
【００７５】
時間線１３００はまた、単一ブロック繰返しの動作を表し、この場合時間スロット１３０４は命令のブロックの繰返し実行を表し、時間スロット１３１２は命令のブロックの最後の繰返しを表す。
【００７６】
さらに図１３を参照すると、時間線１３４０は、第２オプションを使用した、ネストされたループ時のプロファイル信号１１１０ａ−ｎ（図１１上）又は１２１０ａ−ｎ（図１２上）の動作を図示する。外部ループを表す第１繰り返しプロファイルが決定され、外部ループと関係するプロローグ命令によりプロファイル・レジスタＰＲＯＦＩＬＥ０に記憶される。内部ループを表す第２繰り返しプロファイルが決定され、内部ループと関係するプロローグ命令によりプロファイル・レジスタＰＲＯＦＩＬＥ１に記憶される。前述したように、プロローグ命令は時間スロット１３５０と１３１４時にデコードされた内部及び外部ループ命令でもよいし、又は例えばストア命令でもよい。外部ループの最初の命令が実行を開始する時間１３１１までプロファイルはマスクされたままである。時間スロット１３４３と１３４５により図示する、外部ループの実行時には第１プロファイルはアンマスクされたままである。時間１３１５で、内部ループの最初の命令が実行を開始し、時間スロット１３４４による図示される、内部ループの実行時にＦＳＭ１１０４により第２プロファイルが選択される。実行は内部ループから外部ループへ移動し、又逆も同様であり、対応するプロファイルはＦＳＭ１１０４により選択される。時間線１３４０は明瞭にするため内部ループの単一繰返しのみを図示しているが、当業者は内部及び外部ループの複数繰返しが標準的には発生することを理解できる。時間１３１６時に、内部ループの最後の繰返しが実行される。時間１３５２時に、外部ループの最後の繰返しが実施される。時間１３１３で、最後の繰返しの最終命令が実行され、時間スロット１３４６に指示するように、プロファイルは再びマスクされる。
【００７７】
図１４は繰返しプロファイル・パラメータを用いたプロセッサ１００での命令のブロックを繰返し実行する際に関係する各段階を図示する流れ図である。段階１４００では、命令列の連続実行が実施されている。「連続」という用語はジャンプ、分岐、呼出し、復帰、等を含んでもよいことを理解すべきである。段階１４０２で、未決のループと関係するプロローグ命令によりブロック繰返し制御回路が初期化される。これは例えば、ブロック繰返しカウント・レジスタのロードを含む。これはまた繰返しプロファイル・レジスタのロードを含んでもよい。段階１２０４と１２０６で、繰返し命令がデコードされるまで連続実行が実施される。望ましい実施例では、繰返し命令は、繰返して実行されるべき命令の関連ブロックに対して決定された繰返しプロファイル・パラメータを与える。段階１４０８で、繰返しブロック実行時には本質的に禁止される命令群に対応する命令デコーダの区画が禁止される。
【００７８】
段階１４１０で、プロファイルを受取っていない場合、段階１４１２時に監視回路が命令のブロックの第１繰返しの実行を監視し、プロセッサのどの区画が残りの繰返しに不用であるかを決定する。どちらの場合でも、命令のブロックの実行に不用であるものと決定されたその他のハードウェア区画と共に、段階１４１４で命令デコーダの不用な区画が禁止される。命令のブロックは段階１４１６、１４１８及び１４２２を繰返しループすることにより実行される。段階１４１８で割込みが検出された場合、ＩＳＲの実行時にはプロファイルはマスクされるためＩＳＲは禁止された回路なしで実行可能である。ＩＳＲからの復帰時にプロファイルは再びアンマスクされ、不用な区画を禁止するよう動作する。
【００７９】
段階１４２４で命令のブロックの各完全繰返しが検査される。最後の繰返しを完了した後、プロファイルはマスクされ、段階１４２６で禁止回路区画なしで連続実行が再開される。
【００８０】
図１５はプロセッサ１００による命令のブロックの実行時にプロファイルを決定する監視回路を図示するブロック線図である。回路１５００はプロセッサ１００のハードウェアの一部の区画を表す；これは本実施例では命令デコーダの区画であるが、他の実施例では例えば命令レジスタのようなプロセッサの他の部分の区画を表してもよい。区画１５００は命令レジスタ１５０２から信号を受け取り、区画１５００による活動を表す１つ以上の出力信号を与える。監視回路１５２０は命令のブロックの第１繰返し時に信号１５１０を監視する。命令のブロック内に含まれる１つ以上の命令の間区画１５００が能動である場合、監視回路１５２０はこれに従って設定される。繰返しの終了時に、プロファイル・レジスタ１５３０は監視回路１５２０に従って設定される。命令のブロックの残りの繰返しの間、命令のブロックの最初の繰返し時に区画１５００が使用されなかった場合、プロファイル信号１５３１に応答して、ＡＮＤゲート１５３２は区画１５００を通る信号の伝播を禁止し、これにより電力消費を減少させる。当業者は、ＡＮＤゲート１５３２は区画１５００を禁止する回路の単なる代表であることを認識可能である。本発明の特徴を実施するため禁止回路の各種の実施例が当業者により容易に得られる。
【００８１】
図１６はプロセッサによる命令のブロックの実行時に図１５の監視回路の動作を図示するタイミング図である。時間スロット１６００時に、命令のブロックの第１繰返しが実行される。図１６は３個のハードウェア区画、簡単のため、１６２０の装置ｘ、１６２１の装置ｙ、及び１６２２の装置ｚの動作を図示する。１６２０と１６２１の影付き領域は、第１繰返し時に装置ｘと装置ｙは命令のブロック中の１つ以上の命令により使用されたことを示す。しかしながら、１６２２の影なしは、第１繰返し時に装置ｚは使用されていないことを示す。それ故、第１繰返しの終了時に監視回路の設定は、装置ｘと装置ｙは必要であるが、装置ｚは不用であることを決定する。時間１６１２に、繰返しプロファイル・レジスタは監視回路に応答してプロファイル・パラメータにより設定される。時間スロット１６０２により示される命令のブロックの残りの繰返し時には、プロファイル・パラメータに応答して装置ｚは禁止されて電力消費を減少させる。
【００８２】
図４と図１０を再び参照すると、さらに電力消費を減少するため区画分け可能で命令のブロックの繰返し実行時に選択的に禁止可能なプロセッサ１００のいくつかのその他の部分がある。例えば、１実施例では、ループ本体がＡＤＤＲＥＳＳパイプライン・スロットの初期化又はレジスタファイルのスワップを実行する命令を含むかどうかプロファイルは指示可能である。全ループ実行時に関係するハードウェア（図示せず）は停止可能である。
【００８３】
他の実施例では、ループ本体がデータ係数ポインタと関係する命令を含むかどうかプロファイルは指示可能である。全ループ実行時に関係するハードウェア（図示せず）は停止可能である。
【００８４】
他の実施例では、ループがアドレス装置１１０に含まれる３個の内２個のアドレス発生器のみを必要とする場合、不用なアドレス発生器は停止可能である。
【００８５】
他の実施例では、アルゴリズムが状態更新を気にしない場合、状態更新回路（図示せず）はブロック繰返しの実行時に禁止可能である。
【００８６】
他の実施例では、命令のブロックの実行時に命令並列性が利用不能であると決定された場合、命令レジスタ８０６と全ての関係制御回路が禁止可能である。同様に、例えば、サイクル当り６から８命令がディスパッチ可能であるＶＬＩＷアーキテクチャでは、命令のブロックの繰返し実行時には前記並列性は必ずしも完全に利用可能ではない。局所繰返しプロファイルは実行必要性に従ってハードウェアを調節する手段を有利に提供可能である。例えば、ループ内で並列命令の最大数が４である場合、プロファイルは不用なハードウェアを停止するためループ実行の前にこの情報を渡すことが可能である。
【００８７】
同様の方式がデータ形式にも適用可能である。プロセッサは異なるデータ型式：８ビット、１６ビット、及びデュアル１６ビットをサポートする。その他の実施例は例えば浮動小数点をサポートしてもよい。データ路は切片として区画分けされ、命令のブロックにより必要とされるデータ路区画のみが命令のブロックの繰返し実行時に能動となり得る。
【００８８】
図１７は、アセンブラにより命令のブロックの実行時にどの区画が必要とされるかを決定することにより繰返しプロファイル・パラメータを形成する際に関係する各種の段階を図示する流れ図である。段階１７００では、初期アセンブリ・タスクが実行される。本明細書で使用するように、用語「アセンブラ」は、例えばコンパイルと増分コンパイルを含む、人間が読取り可能なプログラムをマシン読取り可能命令列に変換する任意の手段を意味する。アセンブラ動作は一般的に公知であり本明細書ではこれ以上説明しない。段階１７０２で、各マシン読取り可能命令実行可能形式に対して項目を有する表が作成される。各項目は関係する命令の実行にどの選択可能なハードウェア区画が必要であるかを指示するパターンを含む。例えば、パターンは命令デコーダの区画に対応する特定の命令群を指示してもよい。パターンは選択されたプロセッサとそのプロセッサによりサポートされるハードウェア区画分けに応じて、命令長、アドレス・モード、等を指示してもよい。
【００８９】
段階１７０４で、既知のコンパイル／アセンブリ技術を使用してソースコードは一連のマシン読取り可能命令に変換される。段階１７０６と１７０８で、各マシン読取り可能命令を検査してこれが繰返し命令であるかどうかを決定する。繰返し命令が捜し出されると、段階１７１０で繰返し命令と関係する命令のブロックの最初の命令が識別され、最初の命令の群パターンがアクセスされ初期プロファイル・パラメータとして使用される。段階１７１２と１７１４で、ブロックの各以後の命令が検査され、各々と関係する群パターンが初期繰返しプロファイル・パラメータと組合される。命令のブロックの最後の命令が検査され、その群パターンがプロファイル・パラメータに含まれると、プロファイル・パラメータは命令のブロックと関係するプロローグ命令に関係付けられる。望ましい実施例では、プロファイル・パラメータは表２に示されるように繰返し命令に添付される。
【００９０】
段階１７１８で、一連のマシン読取り可能命令が完全に処理されるまで処理は続行し、命令の追加ブロックと関係するプロファイル・パラメータが形成される。段階１７２０で既知のアセンブリ技術を使用して、アセンブリ処理は完了する。完了したアセンブリ処理は、命令の各繰返し可能ブロックが添付繰返しプロファイル・パラメータ付きの繰返し命令のような、プロローグ命令を有する一連のマシン読み取り可能命令を与える。
【００９１】
ここで図１８を参照し図５を参照すると、望ましい実施例の局所ループ命令流れがさらに詳細に説明されている。局所ループ繰返しは、第１パイプライン・スロット６０２のＤＥＣＯＤＥ段に示したブロック繰返しカウント（ＢＲＣ０／ＢＲＣ１）を局所ループの繰返し数で初期化することにより設定され、次いで次ぎのスロット６０４で局所ループ命令（ＲＰＴＬ）自体がデコードされる。ＢＲＣ０（又はＢＲＣ１）がゼロでない場合ＢＲＣ０／ＢＲＣ１はループの最後の命令の各繰返しで減算される。オプションとして最大繰返し値を定義し、カウンタをゼロに初期化することにより局所ループ繰返しを増加に設定してもよいことは当業者には明らかである。この時カウンタはループの最後の命令の各繰返しで増分可能である。減分又は増分は１以外のステップでもよい。スロット６０２と６０４で、プログラム・カウンタは値「ＰＣ」へ４バイトだけ増加し、さらに２命令語がＩＢＱ５０２にフェッチされ、従ってスロット６０２、６０４当り２命令語がＩＢＱ５０２にフェッチされる。スロット６０２ではＩＢＱ５０２で利用可能な語５０４の数は２で、図１８のＣｏｕｎｔとラベル付けして示されている。ＩＢＱ５０２で利用可能な語数はＬＲＰＣ５３６とＬＷＰＣ５３２との間の差により与えられる、何故ならこれらは現在ディスパッチされている命令とＩＢＱ５０２に次ぎの命令を書込む位置を各々指しているからである。本発明の目的上、ＢＲＣ０／ＢＲＣ１を初期化する命令は例えば１語１６ビット命令であり、ＢＲＣ０／ＢＲＣ１＝ＤＡｘは並列性を含んでいないため、１６ビット初期化命令のみがスロット６０２で第１又は第２命令デコーダ５１２、５１４にディスパッチされる。
【００９２】
次ぎのスロット６０４で、ＷＰＣは値「ＰＣ」へ４だけ増加し、さらに２ｘ１６ビット命令語５０４がＩＢＱ５０２にフェッチされる。ＩＢＱ５０２で利用可能な命令語５０４の数は今や３である、何故なら前のスロット６０２ではＢＲＣ０／ＢＲＣ１を初期化する１語命令のみがディスパッチされたからである。
【００９３】
局所ループの第１繰返しはスロット６０６で開始し、ここで命令Ｌ0、Ｌ1の第１並列対がデコーダ５１２、５１４にディスパッチされる。ＩＢＱ５０２で利用可能である命令語５０４の数は今や４である。これは、本実施例では局所ループ命令は１６ビット命令のみであり、それ故前のスロット６０４で１語５０４のみがデコーダ５１２にディスパッチされたからである。
【００９４】
局所ループの実行を最適化するため、命令は出来る限り並列に実行される。本例では、ループの本体を含む全命令は並列に実行可能であるものと仮定する。これはループの本体の第１パス時に２つの不用スロット、６１０、６１２を生じるが、残りの繰返しに高速度を生じる。
【００９５】
さらに、本例では命令Ｌ0、Ｌ1は並列に実行可能であり、全体で４８ビットを含み、従って３命令語５０４が各デコード段でデコーダ５１２、５１４にディスパッチされる。繰返しブロックの開始、サイクル６０６では、２つの命令Ｌ0とＬ1がデコーダにディスパッチされ、ＬＲＰＣ５３６とＬＷＰＣ５３２との間の差は４である。サイクル６０８で、さらに２命令語がＩＢＱにフェッチされるが、３語がディスパッチされる。
【００９６】
ここでＬＲＰＣ５３６はＩＢＱ５０２に沿って３語を移動し、ＬＷＰＣ５３２はＩＢＱ５０２に沿って次ぎのフェッチ位置へ２語を移動する。従って、ＬＷＰＣ５３２とＬＲＰＣ５３６との間の差は次ぎのスロット６０８用に３へ１つだけ減少される。再び、次ぎの２命令Ｌ2、Ｌ3は並列に実行可能であり、全体で４８ビットを含むものと仮定すると、ＬＲＰＣ５３２は次ぎのスロット６１０用にＩＢＱ５０２に沿って３語を移動する。プログラム・プリフェッチは１スロット、この場合はスロット６０８に対して停止していて、それ故このスロットでは命令語はＩＢＱ５０２にロードされない。従って、スロット６１０ではＬＲＰＣ５３６とＬＷＰＣ５３２は同じＩＢＱ５０２アドレスを指し、Ｃｏｕｎｔ＝０である。ＩＢＱ５０２のディスパッチ用に利用可能ビットがないため、スロット６１０はデコード用に不用なスロットである。しかしながら、スロット６１０時に２命令語がＩＢＱ５０２にフェッチされＬＷＰＣ５３２をＩＢＱに沿って２語だけ移動し、それ故スロット６１２用に利用可能な２命令語がある。しかしながら、次ぎの２命令、Ｌ4、Ｌ5が４８ビットを含む並列命令である場合、スロット６１２ではディスパッチがなく、さらに不用なスロットがある。
【００９７】
スロット６１４では、ＩＢＱ５０２には利用可能な全体で４命令語５０４があり、４８ビットを含む命令Ｌ4、Ｌ5がデコーダ５１２、５１４にディスパッチされる。スロット６１４の間にさらに２命令語５０４がＩＢＱ５０２にフェッチされる。ＷＰＣはここで２ｘ命令語５０４の１６パケットだけ増加され、従ってＩＢＱ５０２はいっぱいで、全てのループ本体がフェッチされる。従って、理解出来るように、スロット６１６のＷＰＣカウントはプリフェッチでＰＣ＋１６に留まり、しかし別の２語５０４がスロット６１４のプリフェッチから生じてＩＢＱ５０２にフェッチされる。
【００９８】
スロット６１６ではループの本体がＩＢＱ５０２にフェッチされて、ＩＢＱには利用可能な３２語がある。これはＩＢＱ５０２の最大寸法であり、従ってループのさらなる繰返しを形成する以後のスロット６１８、６２０ではフェッチはオフされる。
【００９９】
ループの最後の繰返しでは、キューの空隙を避けるようＩＢＱ５０２に注ぎ足すため、スロット６２６でフェッチはオンに切換わる。
【０１００】
従って、ループの本体に対しては、最初と最後の繰返しを除いて、パイプライン・フェッチ段はない。従って、プログラム・メモリアクセスはない。より少ないプログラム・メモリアクセスが実施されるため、従来のループと比較してこれはループ時に電力消費を減少させる。
【０１０１】
従って、本発明の実施例によると、マイクロプロセッサは、全てが命令バッファ・キュー５０２に収められる命令の組による繰返しループを与える局所繰返し命令に応答するよう構成される。再び図５を参照すると、ＩＢＱ５０２は６４バイト長であり３２ｘ１６ビット語に構成される。命令はＩＢＱ５０２に一時に２語づつフェッチされる。さらに、命令デコーダ制御器はパイプラインの各デコード段に対して命令デコーダ５１２と５１４に６プログラムコード・バイトまでのパケットを読取る。ループの開始と終了、すなわち最初と最後の命令は、ＩＢＱ５０２にフェッチされたプログラムコードの４バイト・パケット内の任意のバイト境界に該当してよい。従って、開始（最初）及び終了（最後）命令は必ずしもＩＢＱ５０２の先頭と底部とに共終結する必要はない。例えば、局所ループ命令が４プログラムコードのパケットの境界上の２バイトに跨っている場合、４プログラムコードの両方のパケットをＩＢＱ５０２に保持しなければならない。これを考慮に入れるため、局所ループ命令オフセットは最大５５バイトである。
【０１０２】
局所ループの最初の繰返し時に、ループ本体のプログラムコードはＩＢＱ５０２にロードされ通常のように実行される。しかしながら、以降の繰返しに対しては、フェッチが再開始される最後の繰返しまで、フェッチは生じない。
【０１０３】
他の実施例では局所ループのブロック寸法を最大化するためにマイクロプロセッサはＩＢＱ５０２で命令語を整合するよう設定される。命令語の整合は局所ループの開始及び終了命令を出来る限りＩＢＱ５０２の各境界に近接して配置するよう動作してもよい。アセンブラの実施例はＩＢＱ５０２での命令の整合を設定して局所ループのブロック寸法を最大化する。
【０１０４】
再び図１を参照すると、データ処理装置１０の製造は、半導体基盤に各種の不純物を打ち込み、基盤内の選択深さまで不純物を拡散させてトランジスタ素子を形成する複数段階を含む。不純物の配置を制御するためマスクが形成される。電導材と絶縁材の複数層が蒸着され各素子を相互接続するためにエッチングされる。これらの段階はクリーンルーム環境で実行される。
【０１０５】
データ処理装置を製造するコストの相当部分は検査に関係する。ウェファ形式の間に、個々の素子にバイアスをかけて動作状態にし、基本動作機能性のプローブ検査を行なう。ウェファは次いで、裸のダイとして販売されるか又はパッケージされてもよい別々のダイスに分離される。パッケージ後、完成した部品は動作状態にバイアスされて動作機能性を検査される。
【０１０６】
本発明の新規特徴の別な実施例は、組合せ機能の全体ゲート数を減少するために本明細書で開示した回路と組合されるその他の回路を含んでもよい。当業者はゲート最小化の技術を熟知しているため、このような実施例の詳細は本明細書では説明しない。
【０１０７】
このように、高コード密度と容易なプログラミングを提供する、プログラム可能なディジタル信号プロセッサ（ＤＳＰ）であるプロセッサを説明して来た。アーキテクチャと命令組は、純粋な制御タスクと共に、無線電話のような、ＤＳＰアルゴリズムの低電力消費と高効率実行用に最適化されている。プロセッサは命令バッファ装置と、命令バッファ装置によりデコードされた命令を実行するデータ計算装置とを含む。命令は、暗黙の並列性に応答して又はユーザー定義の並列性に応答して、並列的に実行可能である。
【０１０８】
いくつかの命令群に対する命令デコーダの区画分けは命令ループの実行時に１つ以上のデコーダ区画をアイドルのままにすることを可能とする。結果として、マイクロプロセッサによる電力消費の対応する減少がある。都合のよいことに、プロセッサのその他の部分の区画分けと選択区画の動作の禁止はプロセッサの電力消費をさらに減少する。
【０１０９】
以上の説明から、発明の範囲内で各種の変更を行なってもよいことが当業者には明白である。例えば、ループの本体を含む命令は完全な４８ビット並列命令である必要はなく、又は全く並列命令である必要もない。さらに、ループはＩＢＱの全てを引き受ける必要はなく、上述したものより小さくともよい。他の実施例では、ＩＢＱは設けられない。別の実施例では、命令デコーダは多数のパイプライン段上で区画分けされてもよいし、又は１つのパイプライン段内に完全に含まれてもよい。
【０１１０】
マイクロプロセッサを含むディジタル・システムを操作する方法が提供され、この方法は、マイクロプロセッサの一部を複数個の区画に区画分けする段階と；マイクロプロセッサの命令パイプライン内の一連の命令を実行する段階と；一連の命令内の命令のブロックを繰返し実行する段階と、ここでブロックは最初の命令と最後の命令とを有し；複数個の区画の内の少なくとも１つが命令のブロックを実行するのに必要ないことを決定する段階と；命令のブロックを繰返し実行する段階時に少なくとも一つの区画の動作を禁止する段階と、を含み、これにより電力消散を減少する。
【０１１１】
本方法の別の実施例では、区画分けする段階は、異なる命令長に従ってマクロプロセッサの命令レジスタを区画分けする段階を含み；決定する段階は、命令のブロック内の命令の最大命令長を決定する段階を含み；禁止する段階は、決定した最大命令長に従って１つ以上の命令レジスタ区画のロードを禁止する段階を含む。
【０１１２】
本方法の別の実施例では、区画分けする段階は、並列命令実行に従って命令パイプラインを区画分けする段階を含み；決定する段階は、命令のブロック内の命令の最大命令並列性を決定する段階を含み；禁止する段階は、１つ以上の並列命令実行区画を禁止する段階を含む。
【０１１３】
本方法の別の実施例では、区画分けする段階は、データ型式に従ってマイクロプロセッサの一部を区画分けする段階を含み；決定する段階は、命令のブロック内で使用されない１つ以上のデータ型式を決定する段階を含み；禁止する段階は、１つ以上のデータ型式区画を禁止する段階を含む。
【０１１４】
本方法の別の実施例では、決定する段階は、命令のブロック内で状態回路の更新が必要とされないことを決定する段階を含み；禁止する段階は、状態回路の更新を禁止する段階を含む。
【０１１５】
本方法の別の実施例では、区画分けする段階は、アドレスモードに従ってマイクロプロセッサのアドレス発生回路を複数個の区画に区画分けする段階を含み；決定する段階は、命令のブロック内で使用されない１つ以上のアドレスモードを決定する段階を含み；禁止する段階は、１つ以上のアドレス発生区画を禁止する段階を含む。
【０１１６】
本方法の別の実施例では、決定する段階は、命令のブロックの最初の繰返しの実行をまず監視し、これにより繰返しプロファイル・パラメータを得る段階をさらに含む。
【０１１７】
本方法の別の実施例では、繰返しプロファイル・パラメータを記憶する段階は、内部ループを表す第１繰返しプロファイル・パラメータを記憶する段階と外部ループを表す第２繰返しプロファイル・パラメータを記憶する段階とを含み；禁止する段階は、内部ループの実行時にはマイクロプロセッサの第１区画の動作を禁止する段階と、外部ループの実行時にはマイクロプロセッサの第２区画の動作を禁止する段階とを含む。
【０１１８】
本方法の別の実施例では、命令のブロックを繰返し実行する段階に割込んで割込みサービス・ルーチン（ＩＳＲ）を実行する段階と；マイクロプロセッサの全区画がＩＳＲの実行時には付勢されるよう区画禁止をマスクする段階と；ＩＳＲの実行を完了した後に命令のブロックの繰返し実行に復帰する時区画禁止をアンマスクする段階と、を含む。
【０１１９】
本方法の別の実施例では、区画禁止をマスクする段階は、繰返しプロファイル・パラメータをマスクする段階を含む。
【０１２０】
都合のよいことに、本発明の特徴はプロセッサ内の電力管理の他の技術と組合せてプロセッサの電力消費をさらに減少させてもよい。例えば、ループ中の命令によって機能装置が使用されない場合各種の機能装置をループ実行時に待機モードに置いてもよい。
【０１２１】
本開示の範囲は、これが特許請求された発明と関係するかどうか、又は本発明により指摘された任意の又は全ての問題を緩和するかどうかに係らず、明示的に又は暗黙に又は一般化されてここに開示した新規の特徴又は機能の組合せを含む。
【０１２２】
本明細書で使用したように、用語「印加された」、「接続された」及び「接続」は、別の要素が電気的接続路にある場合も含む、電気的接続を意味する。「関係する」は、関係するポートにより制御されているメモリ・リソースのような、制御関係を意味する。用語、アサート、アサーション、デアサート、デアサーション、ニゲート及びニゲーションは、アクティブ・ハイ及びアクティブ・ローの混合を取扱う時に混乱を避けるために使用される。アサートとアサーションは、信号がアクティブとなっている、又は論理的に真であることを指示するために使用される。デアサート、デアサーション、ニゲート及びニゲーションは、信号が非アクティブとなっている、又は論理的に偽であることを指示するために使用される。
【０１２３】
図示実施例を参照して本発明を記述してきたが、この説明は限定的な意味で解釈される意図のものではない。本発明のその他の各種の実施例はこの説明から当業者には明らかである。例えば、本明細書で記述したように、プロセッサの各種部分を区画の組に区画分け可能である。与えられた実施例では、１組以上の区画を与えて、単一の又は複数繰返しプロファイル・パラメータにより制御可能である。
【０１２４】
以上の説明に関して更に以下の項を開示する。
（１）ディジタル・システムを操作する方法において、
マイクロプロセッサの一部を複数個の区画に区画分けする段階と、
マイクロプロセッサの命令パイプライン内で一連の命令を実行する段階と、
一連の命令内の命令のブロックを繰返し実行する段階であって、ブロックは最初の命令と最後の命令とを有する、前記実行する段階と、
複数個の区画の内の少なくとも１つが命令のブロックを実行するのに必要ないことを決定する段階と、
命令のブロックを繰返し実行する段階時に少なくとも１つの区画の動作を禁止し、これにより電力消散を減少する段階と、
を含むディジタル・システムを操作する方法。
（２）第１項記載の方法において、決定する段階は、命令のブロックを実行するために必要とされない少なくとも１つの区画を指示する繰返しプロファイル・パラメータを記憶する段階を含む方法。
（３）第１項及至第２項のいずれか記載の方法において、
（イ）区画分けする段階は、命令デコーダの各区画が命令群と関係付けられるように、命令デコーダを複数個の区画に区画分けする段階を含み、
（ロ）決定する段階は、命令のブロック内に含まれない少なくとも第１群の命令を指示する繰返しプロファイル・パラメータを記憶する段階を含み、
（ハ）命令デコーダの一部の動作を禁止する段階は、第１群の命令に対応する命令デコーダの区画の動作を禁止する段階をさらに含む、
方法。
（４）第１項及至第３項のいずれか記載の方法において、禁止する段階は、パイプラインの第１段と関係する命令デコーダの第１区画を禁止する段階と命令パイプラインの第２段と関係する命令デコーダの第２区画を禁止する段階とを含む方法。
（５）第１項及至第４項のいずれか記載の方法において、
（イ）区画分けする段階は、命令デコーダの各区画が命令群と関係付けられるように、命令デコーダを複数個の区画に区画分けする段階を含み、
（ロ）決定する段階は、命令のブロックの繰返し実行時に実行されることを本質的に禁止されている命令群を識別する段階を含み、
（ハ）禁止する段階は、命令のブロックを繰返し実行する段階時に命令の禁止群に対応する命令デコーダの区画の動作を禁止する段階を含み、その間命令デコーダの残りの部分は命令がパイプライン中で実行される間命令のブロックをデコードする、
方法。
（６）第１項及至第５項のいずれか記載の方法において、決定する段階は、命令のブロックを繰返し実行する段階の前にプロローグ命令と関係するパラメータとして繰返しプロファイル・パラメータを最初に受取る段階をさらに含む方法。
【０１２５】
（７）第６項記載の方法において、
ソースコード・プログラムをアセンブルして命令のブロック、プロローグ命令及び関係する繰返しプロファイル・パラメータを含む一連の命令を作成する段階をさらに含み、アセンブルする段階は、
（イ）各命令の項目がその命令を含む命令群を定義する群パターンを含むように、選択されたマイクロプロセッサにより実行可能な各命令に対して項目を有する命令表を作成する段階と、
（ロ）ソースコードを一連の命令に変換する段階と、
（ハ）プロローグ命令と関係する命令の繰返しブロックの最初の命令と最後の命令を決定する段階と、
（ニ）命令のブロック中の各命令を表す命令表から選択された複数個の群パターンを組合せて、繰返しプロファイル・パラメータを形成する段階と、
（ホ）繰返しプロファイル・パラメータをプロローグ命令と関係付ける段階と、
を含む方法。
【０１２６】
（８）一連の命令を作成するためソースコード・プログラムをアセンブルする方法において、一連の命令は最初の命令と最後の命令を含む命令の繰返しブロックを有し、
各命令の項目がその命令を含む命令群を定義する群パターンを含むように、選択されたマイクロプロセッサにより実行可能な各命令に対して項目を有する命令表を作成する段階と、
ソースコードを一連の命令に変換する段階と、
第１プロローグ命令と関係する命令の第１繰返しブロックの最初の命令と最後の命令を決定する段階と、
命令の第１ブロック中の各命令を表す命令表から選択された複数個の群パターンを組合せて、第１繰返しプロファイル・パラメータを形成する段階と、
第１繰返しプロファイル・パラメータを一連の命令中の第１プロローグ命令と関係付ける段階と、
を含む方法。
（９）第８項記載の方法において、
第２プロローグ命令と関係する命令の第２繰返しブロックの最初の命令と最後の命令を決定する段階と、
命令の第２ブロック中の各命令を表す命令表から選択された複数個の群パターンを組合せて、第２繰返しプロファイル・パラメータを形成する段階と、
第２繰返しプロファイル・パラメータを一連の命令中の第２プロローグ命令と関係付ける段階と、
を含む方法。
（１０）マイクロプロセッサを含むディジタル・システムにおいて、マイクロプロセッサは、
ディスパッチされた命令を実行する複数個の段を有するパイプラインと、
命令をデコードする命令デコーダであって、パイプラインに制御可能に接続されており、命令デコーダは各複数個の命令群に従って複数個の区画に区画分けされていて、区画の少なくとも一つは禁止入力を有する、前記命令デコーダと、
プロローグ命令に応答して命令のブロックの繰返し実行を開始するブロック繰返し制御回路であって、前記ブロックは最初の命令と最後の命令を含む前記ブロック繰返し制御回路と、を含み、
命令デコーダはある種の命令群をデコードするよう動作可能であり、さらにブロック繰返し回路に応答して少なくとも一つの命令群のデコードを禁止するよう動作可能であり、これにより命令のブロックの繰返し実行時に命令デコーダにより消費される電力を減少する、
ディジタル・システム。
【０１２７】
（１１）第１０項記載のディジタル・システムにおいて、ブロック繰返し制御回路は、
繰返しプロファイル・パラメータを受取るように接続された繰返しプロファイル回路であって、繰返しプロファイル回路の出力は少なくとも１つの命令デコーダ区画の付勢入力に接続されている前記繰返しプロファイル回路と、をさらに含み、
命令デコーダはある種の命令群をデコードするよう動作可能であり、さらに繰返しプロファイル回路の第１繰返しプロファイル・パラメータに応答して少なくとも一つの命令群のデコードを禁止するよう動作可能である、
ディジタル・システム。
（１２）第１０項又は第１１項記載のディジタル・システムにおいて、命令デコーダの第１部分はパイプラインの第１段と関係し、命令デコーダの第２部分はパイプラインの第２段と関係するように、命令デコーダは階層的であり、
命令デコーダの第１部分の少なくとも第１命令デコーダ区画は繰返しプロファイル回路の第１出力に接続された第１禁止入力を有し、命令デコーダの第２部分の少なくとも第２命令デコーダ区画は繰返しプロファイル回路の第２出力に接続された第２禁止入力を有する、
ディジタル・システム。
（１３）第１０項及至第１２項のいずれか記載のディジタル・システムにおいて、繰返しプロファイル回路は命令のブロックのプロローグ命令により与えられる繰返しプロファイル・パラメータを受取るように接続されているディジタル・システム。
（１４）第１０項及至第１３項のいずれか記載のディジタル・システムにおいて、繰返しプロファイル回路は、命令デコーダに結合された監視回路により与えられる繰り返しプロファイル・パラメータを受取るように接続され、監視回路は命令の第１ブロックの第１繰返し時に命令デコーダを監視するよう動作可能であり、これにより命令の第１ブロック内に含まれない少なくとも第１群の命令を指示する第１繰返しプロファイル・パラメータを得るように動作可能である、ディジタル・システム。
【０１２８】
（１５）第１０項及至第１４項のいずれか記載のディジタル・システムにおいて、命令デコーダは、内部ループの実行時に第１命令群のデコードを禁止し、外部ループの実行時に第２命令群のデコードを禁止するよう動作可能であるように、繰返しプロファイル回路は内部ループと外部ループを表す２つの繰返しプロファイル・パラメータを受取るように動作可能であるディジタル・システム。
（１６）第１０項及至第１５項のいずれか記載のディジタル・システムにおいて、
実行装置へのディスパッチの前にそこへ転送された命令のブロックを一時的に記憶する命令バッファと、をさらに含み、
パイプラインは転送用のプログラム・メモリから命令バッファへ命令をフェッチする命令フェッチ段を含み、
ブロック繰返し制御回路はプログラム・メモリから命令バッファへ命令のブロックの最終命令のフェッチ後、命令フェッチ段を禁止するよう動作可能である、ディジタル・システム。
（１７）第１０項及至第１６項のいずれか記載のディジタル・システムにおいて、
命令デコーダによりデコードされる前に各命令を保持する命令レジスタと、をさらに含み、
命令レジスタは命令のブロックの実行時に繰返しプロファイル回路に応答して部分的に禁止されるよう動作可能である、
ディジタル・システム。
（１８）第１７項記載のディジタル・システムにおいて、前記命令は可変長であるディジタル・システム。
（１９）第１０項及至第１８項のいずれか記載のディジタル・システムにおいて、前記システムはセルラ電話を含み、これは、
キーボード・アダプタを介してプロセッサに接続された一体化キーボードと、
表示アダプタを介してプロセッサに接続された、表示部と、
プロセッサに接続された無線周波数（ＲＦ）回路と、
ＲＦ回路に接続されたアンテナと、
を含むディジタル・システム。
【０１２９】
（２０）マイクロプロセッサの一部が複数個の区画に区画分けされているマイクロプロセッサとマイクロプロセッサの操作方法が提供される。一連の命令がマイクロプロセッサの命令パイプライン内で実行される（１４０４、１４０６）。局所繰返し命令に応答して（１４０６）一連の命令内の命令のブロックが繰返し実行される（１４１６、１４２２）。命令のブロックを実行する前（１４１０）か、又はループの第１繰返し時（１４１２）のどちらかで、複数個の区画の内少なくとも１つは命令のブロックを実行するのに必要ないことの決定が行なわれる。電力消散を減少するために命令のブロックの繰返し実行時に少なくとも一つの識別された区画の動作が禁止される（１４１４）。
【図面の簡単な説明】
【図１】プロセッサの概略ブロック線図。
【図２】無線通信装置の概略図。
【図３】プロセッサのコアの概略線図。
【図４】プロセッサのコアの各種実行装置のより詳細な概略ブロック線図。
【図５】プロセッサの命令バッファ・キューと命令デコーダ制御器の概略線図。
【図６】プロセッサのパイプライン段の表示。
【図７】プロセッサのパイプラインの動作例の図式説明図。
【図８】パイプラインの動作を説明するためのプロセッサのコアの概略図。
【図９】プロセッサの命令組内の群分けの図。
【図１０Ａ】命令デコーダの区画を含む、プロセッサの命令実行パイプラインをさらに詳細に図示したブロック線図。
【図１０Ｂ】命令デコーダの区画を含む、プロセッサの命令実行パイプラインをさらに詳細に図示したブロック線図。
【図１１】繰返しプロファイル・レジスタとマスクを含む、プロセッサのブロック繰返し制御回路をさらに詳細に図示するブロック線図。
【図１２】可変寸法命令語の命令レジスタを含む、プロセッサのブロック繰返し制御回路をさらに詳細に図示した別の実施例のブロック線図。
【図１３】プロセッサによるネストされたループの実行時の繰返しプロファイルの動作を図示するタイミング図。
【図１４】繰返しプロファイル・パラメータを用いたプロセッサでの命令のブロックを繰返し実行する際に関係する各種の段階を図示する流れ図。
【図１５】プロセッサによる命令のブロックの実行時にプロファイルを決定する監視回路を図示するブロック線図。
【図１６】プロセッサによる命令のブロックの実行時に図１５の監視回路の動作を図示するタイミング図。
【図１７】命令のブロックの実行時にどの区画を必要とするかを決定することによりアセンブラによって繰返しプロファイル・パラメータを形成する際に関係する各種の段階を図示する流れ図。
【図１８】プロセッサのパイプラインの命令実行で局所ループ命令の実行を図示するタイミング図。
【符号の説明】
１０  マイクロプロセッサ
１００  ＣＰＵ
１０４  メモリ管理装置
１０６  命令バッファ装置
１０８  Ｐ装置
１１０  Ａ装置
１１２  Ｄ装置
８００  繰返しプロファイル・レジスタ
１１００、１２００  ブロック繰返し制御回路
１１０１、１２０１  プロファイル・マスク
１５２０  監視回路
【図１】
0005133476.tif 000004
【図２】
0005133476.tif 000005
【図３】
0005133476.tif 000006
【図４】
0005133476.tif 000007
【図５】
0005133476.tif 000008
【図６】
0005133476.tif 000009
【図７】
0005133476.tif 000010
【図８】
0005133476.tif 000011
【図９】
0005133476.tif 000012
【図１０Ａ】
0005133476.tif 000013
【図１０Ｂ】
0005133476.tif 000014
【図１１】
0005133476.tif 000015
【図１２】
0005133476.tif 000016
【図１３】
0005133476.tif 000017
【図１４】
0005133476.tif 000018
【図１５】
0005133476.tif 000019
【図１６】
0005133476.tif 000020
【図１７】
0005133476.tif 000021
【図１８】
0005133476.tif 000022