(57)【要約】  命令処理回路は、命令ソース（１０）に結合された命令入力と、実行回路（１２４）の制御入力に結合された制御出力とを有する、命令デコーダ（１２０、１２１、１２２）を備える。命令デコーダ（１２０、１２１、１２２）は、命令入力に結合された入力と、それぞれの並列サブデコーダ１２２に供給を行うフリーズ回路（１２１）の制御入力に結合された出力とを有する、複数のプリレコード回路（１２０）を備える。プレレコード回路（１２０）は、供給された命令が属する命令のタイプを検出し、検出されたタイプに応じて、供給された命令から導出された命令情報が、どのサブデコーダ回路（１２２）に渡されるかと、以前に供給された命令から導出された命令情報の供給が、どのサブデコーダ回路（１２２）に対してフリーズされるかを制御する。通常、プリデコード回路（１２０）は、パイプライン化された命令サイクル内において、その命令サイクルにおけるプリデコードの後で、デコード段の前のパイプライン・レジスタ（１００）からの信号の効果がサブデコーダ回路（１２２）に到達する前に、フリーズ回路（１２１）をフリーズとパッシングとの間で切り替える。
2008503827.tif 000002
【特許請求の範囲】
【請求項１】
命令処理回路であって、
連続した命令を作成するための命令ソースと、
前記命令によって選択されたオペランドを受け取るためのオペランド入力、および、
前記オペランドに適用されたオペレーションの実行を制御するための制御入力を有する、実行回路と、
前記命令ソースに結合された命令入力、および、前記実行回路の前記制御入力に結合された制御出力を有する、命令デコーダと、を備え、
前記命令デコーダは、前記命令のそれぞれの制御下で前記制御出力において連続した制御信号を生成するように構成され、
前記命令デコーダは、
前記命令入力と前記制御出力との間に並行して結合された複数のサブデコーダ回路であって、各々が、それぞれのタイプの命令のための制御信号を生成するための複数のサブデコーダ回路と、
各々が、前記命令入力と前記サブデコーダ回路のそれぞれとの間に結合された入力フリーズ回路であって、各フリーズ回路は、制御入力を有し、各フリーズ回路は、その制御入力の制御下で、前記サブデコーダ回路の当該のそれぞれに対して、命令信号をフリーズするまたは渡すように構成された、入力フリーズ回路と、
前記命令入力に結合された入力、および、前記フリーズ回路の前記制御入力に結合された出力を有する、プリデコード回路であって、供給された命令が属する命令のタイプを検出し、前記検出されたタイプに応じて、前記供給された命令から導出された命令情報が、どの前記サブデコーダ回路に渡されるか、および、以前に供給された命令から導出された命令情報の供給が、どの前記サブデコーダ回路に対してフリーズされるかを制御するように構成された、プリデコード回路とを備える、命令処理回路。
【請求項２】
請求項１に記載の命令処理回路であって、パイプダイン段と、連続したパイプライン段の対の間に結合されたパイプライン・レジスタと、連続した命令サイクルを制御するための、前記パイプライン・レジスタに結合されたタイミング回路とを備え、連続したパイプライン段は、連続した命令の処理のそれぞれの部分を並行して実行し、前記パイプライン段は、前記実行回路を備える実行段と、デコーダ段とを含み、前記デコーダ段は、前記プリデコード回路の少なくとも部分と、前記入力フリーズ回路と、前記サブデコーダ回路の少なくとも部分とを備え、前記入力フリーズ回路は、命令サイクル内において、その命令サイクルにおけるプリデコードの後で、前記デコード段の前の前記パイプライン・レジスタからの信号の効果が前記サブデコーダ回路に到達する前に、フリーズとパッシングとの間で切り替わるように構成された、命令処理回路。
【請求項３】
請求項１に記載の命令処理回路であって、少なくとも１つの前記フリーズ回路は、入力および出力を有するフリーズ・レジスタと、マルチプレクサとを備え、前記マルチプレクサは、前記命令ソースに結合された第１の入力と、前記フリーズ・レジスタの前記出力に結合された第２の入力と、前記フリーズ・レジスタの前記入力、および、前記フリーズ回路に結合された前記サブデコーダ回路に、結合された出力と、前記プリデコーダ回路に結合された制御入力とを有する、命令処理回路。
【請求項４】
請求項１に記載の命令処理回路であって、パイプダイン段と、連続したパイプライン段の対の間に結合されたパイプライン・レジスタと、連続した命令サイクルを制御するための、前記パイプライン・レジスタに結合されたタイミング回路とを備え、連続したパイプライン段は、連続した命令の処理のそれぞれの部分を並行して実行し、前記パイプライン段は、前記プリデコード回路の少なくとも部分を含む第１の段と、前記サブデコーダ回路の少なくとも部分を備える第２の段とを含み、前記第１および第２の段の間の前記パイプライン段は、前記サブデコーダのそれぞれに結合されたそれぞれのサブレジスタを備え、各サブレジスタは、命令サイクルの終了において更新を選択的に有効にするための更新有効化入力を有し、前記プリデコード回路は、フリーズおよびパッシングを制御するために前記更新有効化入力に結合された、命令処理回路。
【請求項５】
請求項１に記載の命令処理回路であって、前記実行回路の前記制御入力は、前記検出されたタイプの命令に応じて、代替的に前記サブデコーダのそれぞれによって駆動される、制御入力を含む、命令処理回路。
【請求項６】
請求項５に記載の命令処理回路であって、第１の前記サブデコーダによってサブデコードされる第１のタイプの命令は、絶対アドレスを有するメモリ・アクセス命令を含み、第２の前記サブデコーダによってサブデコードされる第２のタイプの命令は、インデックス・アドレスを有するメモリ・アクセス命令を含み、前記実行回路の前記制御入力は、前記第１および第２の前記サブデコーダの両方に結合されたアドレス入力を含む、命令処理回路。
【請求項７】
請求項１に記載の命令処理回路であって、
前記実行回路に結合されたオペランド・ソースを備え、前記実行回路は、ＡＬＵ回路を備え、前記ＡＬＵ回路は、
前記命令に応じて選択された複数ビットの算術および論理演算をそれぞれ実行するように構成された算術部分および論理部分を備え、前記命令処理回路は、
前記オペランド・ソースと前記算術部分との間、ならびに前記オペランド・ソースと前記論理部分との間にそれぞれ結合された第１および第２のオペランド・フリーズ回路であって、算術命令が実行されるか論理命令が実行されるかに応じて、オペランドを選択的にフリーズするかまたは渡すように動作する第１および第２のオペランド・フリーズ回路を備える、命令処理回路。
【請求項８】
命令のプログラムを処理する方法であって、
一連の命令を取り出すこと、
前記命令をデコードすることであって、各命令の前記デコードの第１の部分は、前記一連の命令のすべてについて共通のプリデコーダによって行われ、第２の部分は、前記命令のタイプに応じて前記プレデコーダによって選択された複数の並列後続デコーダのうちで選択された１つによって行われる、デコードすること、
前記後続デコーダの少なくとも１つの使用されていない１つに供給される先行の命令情報を、前記命令情報が前記後続デコーダの別の１つによってデコードされるために渡されるとともに、フリーズすること、および、
前記後続デコーダからのデコードされた命令情報を、前記命令の実行のために実行ユニットに供給することを含む、方法。
【請求項９】
請求項８に記載の命令のプログラムを処理する方法であって、前記命令は、連続した命令サイクルにおいてパイプライン様式で処理され、前記渡すことは、命令サイクルにおける前記命令のプリデコードの後で、前記命令サイクル内で開始される、方法。
【請求項１０】
請求項８に記載の命令のプログラムを処理する方法であって、他のいくつかの前記後続デコーダによるさらなるデコードの結果が、同一の命令実行回路によって使用される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令処理回路、かかる命令処理回路における命令のデコード、および、命令処理方法に関する。
【背景技術】
【０００２】
コンピュータは、一般に、命令のプログラムを実行するように設計され、各命令は、コンピュータによって実行されるべきである少なくとも１つのオペレーション（例えば、加算、メモリからのロード）と、そのオペレーションが適用されるべきである１つまたは複数のオペランドとを指定する。これらの命令を処理するために、コンピュータは、オペレーションをオペランドに適用する実行回路を含む。実行回路は、そのオペランドを処理するやり方を制御するための制御入力を有し、例えば、実行回路が、オペランドを加算または減算するか、論理積、論理和、またはシフト演算のようなビット単位の論理演算をオペランドに適用するか、あるいは、オペランドをメモリに格納するかなどを制御する。
【０００３】
命令デコーダは、命令を、実行回路に対する制御信号に変換するために使用される。通常、最近の命令プロセッサは、パイプライン化された設計を有し、それにより、先行の命令に応じて、オペランドを処理するのと同時に、命令のデコードが行われることを可能とする。この場合、命令プロセッサは、パイプライン・レジスタによって結合されたいくつかの段と、各パイプライン・レジスタが、前段の出力を取り込み、その出力を入力として後段に適用するようにする、タイミング回路とを含む。このタイプのパイプライン回路では、デコーダ段が、命令デコーダを含み、実行段が、実行回路を含む。
【０００４】
電力消費の低減は、プロセッサの設計のために、ますます重要になっている課題である。電力消費の低減の多くの手法では、オペランド・データの不必要なコピーの防止を目指している。Hema Kapadia,Giovanni de Micheli and Luca Beniniによる「Reducing Switching Activity on Datapath Buses with Control-Signal Gating」と題する論文は、いくつかの手法を説明している。例えば、クロックゲーティングは、一般的な手法であり、クロック信号の適用を阻止することにより、データがレジスタにロードされるのを防止する。このことは、電力を節約するが、その理由は、第１には、レジスタにデータをロードするための電力が必要とされないからであり、第２には、レジスタからデータを受け取る回路内の（一般に「トグリング」と呼ばれる）論理遷移（ｌｏｇｉｃ  ｔｒａｎｓｉｔｉｏｎ）が回避されるからである。別の手法は、ガード付き評価（ｇｕａｒｄｅｄ  ｅｖａｌｕａｔｉｏｎ）の使用であり、ガード付き評価は、有効にされたトランスペアレント・ラッチを、選択的にオフにされてもよいデータ処理モジュールの入力に配置する。さらに他の手法は、制御信号ゲーティングの使用であり、制御信号ゲーティングは、例えば、出力における信号が不要な場合に、データが出力に渡される元の入力をマルチプレクサが変更するのを防止することによって、不必要なデータ変更をもたらす制御信号遷移を無効にする。同様の手法は、「バスセクショニング（ｂｕｓ−ｓｅｃｔｉｏｎｉｎｇ）」を含み、バスセクショニングは、データ・バスをセクションに分割し、データが本当に必要とされるセクションのみへ、データにおける変更が伝搬することを可能とする。
【０００５】
通常、プロセッサによって実行される命令は、クロックゲーティング、ガード付き評価、制御信号ゲーティングバスセクショニングなどによって、オペランド・データのコピーがどこで防止されるかを制御する。この命令から、オペランド・データが必要とされないデータ処理回路が決定され、これらの回路におけるトグリングが防止される。各新しい命令ごとに、この目的のために新しいデータ処理回路が選択されてもよい。
【０００６】
命令デコードは、通常は命令ごとに必要とされる。上述の手法はいずれも、命令デコードに関わる電力消費に対処していない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、特に、命令デコードによる電力消費を低減することである。
【課題を解決するための手段】
【０００８】
本発明による命令プロセッサは、請求項１に示される。本発明によれば、命令デコーダを、命令のそれぞれのタイプごとに、いくつかの並列サブデコーダ・ブランチにグループ分けし、新しい命令情報が、命令のタイプに応じてプリデコーダによって選択されたサブデコーダへ移動することができないように、選択されたサブデコーダの入力をフリーズすることによって、電力が節約される。通常、複数のサブデコーダが、実行回路の同一の入力に結合され、命令のタイプに応じて、選択されたサブデコーダが、実行回路の入力を制御するためにアクティブである。
【０００９】
パイプライン・プロセッサが使用される一実施形態では、パイプライン化された命令サイクル内において、その命令サイクルにおけるプリデコードの後で、デコード段の前のパイプライン・レジスタからの信号の効果がサブデコーダ回路に到達する前に、フリーズ回路が、フリーズとパッシングとの間で切り替えられる。このように、フリーズのために、追加のパイプライン段が必要とされない。しかし、代替実施形態では、別個のパイプライン段が使用され、フリーズ回路が、パイプライン・レジスタを効果的に形成する。
【００１０】
さらに他の実施形態では、フリーズ回路は、入力から、またはマルチプレクサの出力を取り込みフリーズするフィードバック・レジスタからのデータを渡す、マルチプレクサを備える。このように、追加のレジスタをクリティカル・パスに導入することなく、フリーズがデコーダにおいて実現される。
【００１１】
一実施形態では、第１のサブデコーダによってサブデコードされる第１のタイプの命令は、絶対アドレスを有するメモリ・アクセス命令を含み、第２のサブデコーダによってサブデコードされる第２のタイプの命令は、インデックス・アドレスを有するメモリ・アクセス命令を含む。これらのタイプの命令のデコードの部分は、同じ処理を伴うが、アドレス計算は、電力消費が、これらのデコーダの１つだけを選択的にアクティブにすることによって低減されうるように、異なるサブデコーダによって行われる。
【００１２】
別の実施形態では、実行回路は、算術部分および論理部分を有するＡＬＵ回路と、第１および第２のオペランド・フリーズ回路（４６）とを備え、オペランド・ソース間で結合される（算術部分および論理部分はそれぞれ、算術命令が実行されるか論理命令が実行されるかに応じて、オペランドを選択的にフリーズするかまたは渡すように動作する。算術論理と論理回路は、ほぼ独立していることが分かっているので、上記は、算術および論理回路における信号遷移に応じる不必要なオペランドが回避されうるため、電力消費を軽減することが分かる。
【００１３】
本発明のこれらおよび他の目的ならびに有利な側面は、以降の図面を使用して非限定的な例によって、より詳細に説明される。
【発明を実施するための最良の形態】
【００１４】
図１は、命令ソース１０と、タイミング回路１１と、デコーダ段１２と、実行段１４と、書込み段１６と、レジスタ・ファイル１８とを備えた命令処理回路を示す。命令ソース１０は、デコーダ段１２に結合された命令出力を有する。デコーダ段１２は、レジスタ・ファイル１８に結合されたオペランド選択出力と、実行段１４に結合されたデコード出力とを有する。レジスタ・ファイル１８は、実行段１４に結合されたオペランド出力を有する。実行段１４は、書込み段１６に結合された結果出力を有する。書込み段１６は、レジスタ・ファイル１８の書込みポートに結合された出力を有する。タイミング回路１１は、命令ソース１０と、デコーダ段１２と、実行段１４と、書込み段１６とに結合されたタイミング制御出力を有する。
【００１５】
命令ソース１０は、通常、命令メモリ（図示せず）と、命令メモリにおいて命令をアドレス指定するためのプログラムカウンタ（図示せず）とを含む。この場合、命令は、命令メモリからデコーダ段１２に供給される。
【００１６】
デコーダ段１２は、複数の並行化デコーダブランチに結合された、プリデコーダ１２０を含み、各ブランチは、フリーズ回路１２１と、後続デコーダ１２２とを含む。後続デコーダ１２２の出力は、多重化回路１２４を介して、実行段１４の入力に結合される。このような多重化回路は、例えば、選択された入力から信号のコピーを出力する論理回路として、あるいは、非アクティブの後続デコーダ１２４の出力での論理レベルが予測されうる場合に、後続デコーダ１２２から入力を受け取るＡＮＤまたはＯＲ回路として、あるいはさらに、トライステート出力が後続デコーダ１２４に使用される場合に、実行段１４の共通入力への、後続エンコーダ１２２の出力の直接接続として、実装されてもよい。
【００１７】
動作の際、命令ソース１０は、命令を作成し、それらの命令を、デコーダ段１２に連続的に適用する。デコーダ１２は、命令からオペランド・レジスタ・アドレスを抽出し、それらを、レジスタ・ファイル１８に適用する。デコーダ段１２はまた、命令をデコードし、デコーダされた情報を、実行段１４に適用する。実行段１４は、レジスタ・ファイル１８から受け取られたオペランドを使用して、命令によって選択されたオペレーションを実行し、書込み段１６に適用される結果を作成する。書込み段１６は、命令によって指定されたレジスタ内のレジスタ・ファイル１８に、その結果を書き込む。回路は、パイプライン様式で動作し、段は、並行してそれぞれの機能を実行し、それぞれの機能は、それぞれの連続した命令に適用される。この目的のために、タイミング回路１１は、命令ソース１０と、デコーダ段１２と、実行段１４と、書込み段１６とをクロック制御して、実行サイクルの終了の度に、それらの段の入力で、新しい情報を実質的に同時にレジスタ（図示せず）にロードするようにする。
【００１８】
図１ａは、例えば、パイプライン・レジスタ１００と、機能回路１０２と、オペランド・レジスタ１０４とを有する実行段に使用されることがある、パイプダイン段の構造体の例を示す。パイプライン・レジスタ１００は、命令から導出された制御データを受け取り、このデータを機能回路１０２に渡す。制御データの一部分（例えば、結果レジスタのアドレス）は、次のパイプライン段に直接渡されてもよい。オペランド・レジスタ１０４は、オペランド・データを受け取り、このデータを機能回路１０２に渡す。機能回路１０２は、結果データを作成し、オプションで、後段に対するデータを制御する。パイプライン・レジスタ１００およびオペランド・レジスタ１０４は、データをロードする時間を選択する、パイプライン段のクロック信号ＣＬＫを用いて、クロック制御される。同様の構造体は、各パイプライン段に使用されてもよいが、段のタイプに応じて、オペランド・レジスタ１００４は、省略されることがあり、また、あるタイプの段は制御データを作成し、他のタイプの段は制御データを作成しないことが理解されるであろう。
【００１９】
後続デコーダ１２２は、サブデコーダとして機能して、命令のデコードの一部分を実行し、各後続デコーダが、あるタイプの命令のための部分のみを実行し、そのタイプの命令は、デコードのその部分を必要とする。
【００２０】
デコーダ段１２の一部分だけが、命令をデコードするためにアクティブである。プリデコーダ１２０は、各命令から、命令の後続（サブ）デコードを実行するために、ブランチ１２１、１２２のいずれが使用されるべきであるかを決定する。プリデコーダ１２０は、（オプションで、命令からプリデコードされた）命令からの情報を、ブランチ１２１、１２２に供給する。しかし、後続デコーダ１２２の入力に先行の命令からの情報を置き換える前に、プリデコーダ１２０は、命令をデコードするためにどのブランチが使用されるべきであるかを決定する。後で、プリデコーダ１２０は、他のブランチに供給された情報が変更されず以前に供給された情報と等しいように維持するために、他のブランチのフリーズ回路１２１に信号を送る。選択されたブランチのフリーズ回路１２１のみが、先行の命令に関して変更を渡すことを可能とされる。プリデコーダ１２０の別個の出力が、フリーズ回路１２１に接続されているように示されているが、異なる後続デコーダ１２２が同じ制御データを必要とするとき、実際には、フリーズ回路１２１の一部または全部が、後続デコーダ１２２に対する制御データのための共有された入力を有してもよいことが理解されるべきである。
【００２１】
図２は、フリーズ回路１２１の一実施形態を示す。この例では、フリーズ回路１２１は、マルチプレクサ２０とレジスタ２２とを含む。マルチプレクサ２０は、プリデコーダ１２０（図示せず）の選択出力に結合された選択入力２４と、プリデコーダ１２０の命令情報出力に結合された第１のデータ入力と、レジスタ２２の出力に結合された第２のデータ入力とを有する。マルチプレクサ２０は、フリーズ回路１２１が属するブランチの後続デコーダ１２２（図示せず）とレジスタ２２の入力とに結合された出力を有する。
【００２２】
動作の際、マルチプレクサ２０は、命令情報がフリーズされるべきでないとプリデコーダ１２０が信号を送る場合、プリデコーダ１２０（図示せず）からの命令情報を、後続デコーダ１２２（図示せず）に渡し、情報がフリーズされるべきであるとプリデコーダ１２０が信号を送る場合、レジスタ２２からの情報を、後続デコーダ１２２（図示せず）に渡す。
【００２３】
レジスタ２２は、通常、新しい情報をロードするために、タイミング回路１１が、段１２、１４、１６をクロック制御するとき、実行サイクルの終了において、レジスタ２２の入力から情報をロードするために、タイミング回路１１からクロック信号を受け取る。このように、データを渡す段におけるレジスタ２２のコンテンツのみが変化する。
【００２４】
しかし、代替実施形態では、異なるロードの時点が使用されてもよい（異なるロードの時点は、例えば、どの後続デコーダ１２２が使用されるかを決定するために必要な時間に対応する遅延時間によって、デコーダ段の入力のクロック信号を遅延することによって、求められてよい）、または、レジスタ２２への新しいデータのロードが、データがフリーズされるフリーズ回路において完全に抑制されてもよいことは理解されるべきである。同様に、図２の回路の代わりに、例えば、トランスペアレント／保持ラッチ（ｔｒａｎｓｐａｒｅｎｔ／ｈｏｌｄ  ｌａｔｃｈ）などが使用されてもよく、トランスペアレント／保持ラッチは、以降の後続デコーダ１２２が使用されない場合、保持モードに維持され、以降の後続デコーダが使用される場合、トランスペアレント・モードに切り替えられる。しかし、この解決策は、通常、図２の回路より若干遅く、したがって、より長い命令サイクル時間を必要とすることがある。
【００２５】
プリデコーダ１２０は、実行サイクルにおいて最初に、情報をフリーズするための信号が、フリーズ回路１２１に供給されるように構成される。プリデコーダ１２０が、ブランチ１２１、１２２のいずれが命令情報を渡すべきであるかを決定すると、プリデコーダ１２０は、そのブランチのフリーズ回路１２１の制御信号を変更して、新しい情報が渡されることを可能とする。通常、このことは、実行サイクルの開始後にいくらか遅延を伴って、実行サイクルの終了のいくらか前に、発生する。このように、他のブランチにおける電力損が低減される。
【００２６】
多重化回路１２４は、次の実行サイクルにおける実行の際に使用するために、選択されたブランチからのデコードされた命令情報を、実行段１４に渡す。
【００２７】
デコードが単一のパイプダイン段で行われる例が示されたが、本発明から逸脱することなく、命令の連続したデコード・ステップが、連続したデコード段で連続した実行サイクルにおいて行われるように、複数段デコーダが使用されてもよいことは、理解されるべきである。この場合、フリーズ回路１２１は、デコード段の内部にあってもよく、すなわち、同じデコード段の先行部分が、どのブランチが使用されるべきであるかを決定できた後、実行サイクルの開始からの遅延を伴って、フリーズ回路が、フリーズからパッシングに切り替えられてよい。
【００２８】
代替として、デコーダ段の入力または出力におけるフリーズ回路は、先行段の制御下で、フリーズまたはパッシングが、命令サイクルの開始において実質的に行われるように、使用されてもよい。この場合、フリーズ回路１２１は、後続デコーダ１２２の前にパイプライン・レジスタを効果的に形成する。図２のフリーズ回路の代わりに、従来のレジスタが使用されてもよく、フリーズ・レジスタは、他のパイプライン・レジスタと一緒にクロック制御されてもよい。従来のパイプライン・レジスタとの違いは、フリーズ回路の部分の更新が、プリデコードの結果に応じて無効にされること、および、フリーズ回路の次の後続デコーダ１２２が同じ制御データを必要とする場合に、同じ制御データがアクティブな後続デコーダ１２２に渡されるとともに、アクティブになる必要がない後続デコーダ１２２に対して選択的にその制御データのフリーズを有効にするために、１つまたは複数のフリーズ回路が、共用された入力を有してもよいことである。しかし、このことは、ブランチの選択のより低い柔軟性を提供する。
【００２９】
本発明の適用の例では、命令は、メモリ回路にアクセスすることによって実行段１４によって実行される、メモリ・アクセス命令を含む。メモリ・アクセス命令は、通常、ＬＯＡＤおよびＳＴＯＲＥ命令を含み、データがロードされるまたは格納されるメモリ回路におけるアドレスを指定する。異なるアクセス命令は、例えば、命令に含まれるリテラル・アドレス（絶対アドレス指定と呼ばれる）として、または、アドレスを含むレジスタに対する参照によって（インデックス・アドレス指定と呼ばれる）、あるいは、レジスタに対する参照と、アドレスを取得するためにレジスタのコンテンツに追加されるべきであるリテラル・アドレスとの組み合わせで、異なるようにアクセスを指定してもよい。
【００３０】
図３は、メモリ・アクセス命令をサポートする命令実行回路を示す。図１と比較すると、実行段１４に結合されたメモリ回路３０が追加されている。レジスタ・ファイル１８の出力は、後続デコーダ１２２のうちの１つに結合されていて、別個のパイプライン段３２は、プリデコードの部分を実行するために、命令ソース１０とデコード段１２との間に挿入されている。
【００３１】
動作の際、メモリ・アクセス命令が供給される場合、回路は、アドレス指定のタイプに応じて、メモリ・アクセス命令が絶対アドレス指定を使用するかインデックス・アドレス指定を使用するかを決定し、１つの後続デコーダ１２２または別のものが使用され、その他の後続デコーダ１２２へのデコードされた命令情報の入力は、電力消費を低減するためにフリーズされる。インデックス・アドレス指定が使用される場合、対応する後続デコーダ１２２は、レジスタ・ファイル１８からデータを受け取り、そのデータからアドレスを取り出し、そのアドレスを実行段１４に供給する。絶対アドレス指定が使用される場合、対応する後続デコーダ１２２は、命令からアドレス情報を受け取り、そのアドレス情報からアドレスを取り出し、そのアドレスを実行段１４に供給する。
【００３２】
図４は、実行段、あるいは実行段の少なくとも算術／論理部分を示す。実行段は、算術ユニット４０と論理ユニット４２とを含む。算術ユニット４０および論理ユニット４２は、オペランド・フリーズ回路４６のそれぞれの対を介して、一対のオペランド入力４５に結合される。算術ユニット４０および論理ユニット４２の出力は、多重化回路４８を介して実行段の結果出力に結合される。デコードされた命令の入力４３は、オペランド・フリーズ回路４６、算術ユニット４０、論理ユニット４２、および多重化回路４８の制御入力、ならびに、実行段の結果レジスタ・アドレス出力に結合される。
【００３３】
算術ユニット４０は、少なくとも加算を、好ましくは複数ビットの結果を作成する減算および／または他の算術演算を実行するように構成され、複数ビットの結果において、１つまたは複数のビットが、典型的には異なる有意水準のビット間の桁上げまたは借りの結果として、各入力オペランドからの２ビット以上に依存する。論理ユニット４２は、各結果ビットが各入力オペランドからの１入力ビットのみに依存する結果を作成する、ビット単位のＡＮＤまたはビット単位のＯＲなどの論理演算を、実行するように構成される。
【００３４】
動作に際して、オペランド・フリーズ回路４６は、算術命令が実行されるか論理命令が実行されるかに応じて算術ユニット４０または論理ユニット４２のオペランド入力をフリーズするための制御信号を受け取る。このことは、電力消費を低減する。算術ユニット４０または論理ユニット４２は、実行されるべきである命令（例えば、加算または減算、ビット単位のＡＮＤまたはビット単位のＯＲ）を選択するための制御選択信号を受け取る。好ましくは、いずれも命令サイクルにおいて使用されない算術ユニット４０または論理ユニット４２に供給された命令信号もまた、よりさらに電力消費を低減するために、命令サイクルにおいてフリーズされる。理解されうるように、フリーズまたはパッシングの選択は、簡素なタイミング設計を提供するために、実行段の実行サイクルの開始において発生するように構成されてもよい。別の実施形態では、オペランドの供給のフリーズの解除（ｕｎｆｒｅｅｚｉｎｇ）、および／または算術ユニット４０と論理ユニット４２とから選択された１つへの命令は、実行段における前処理を可能とするように、実行段の命令サイクルの開始に対して遅延を伴い発生してもよい。
【００３５】
本発明は、特定の実施形態を使用して説明されたが、本発明は、これらの実施形態に限定されないことが理解されるべきである。例えば、本発明は、パイプライン・プロセッサに関して説明されたが、フリーズはまた、オペレーションがパイプライン化されていないプロセッサ、または、ハンドシェイク通信を使用する非同期式プロセッサのような中央でクロック制御されないプロセッサにおいて適用されてもよいことが理解されるであろう。同様に、算術ユニットおよび論理ユニットの前の別個のオペランド・フリーズは、好ましくは、命令情報のフリーズと組み合わせて使用されるが、前者は、後者なしに使用されてもよいことは理解されるべきである。
【００３６】
さらに、異なる後続デコーダ１２２からのデコードされた情報が実行段１４の同一の入力に供給されるように多重化回路１２４が使用される例が与えられたが、代替的に、異なる後続デコーダ１２２が、実行段の異なる部分にデコード結果を供給してもよいことが理解されるべきである。異なる後続デコーダ１２２からのデコードされた情報を実行段１４の同一の入力に供給することは、実行段１４における同じハードウェアの使用を必要とする（異なる後続デコーダ１２２を使用して部分的にデコードされる）異なるタイプの命令について、電力が節約されうるという利点を有する。絶対アドレス指定およびインデックス・アドレス指定された命令の事例は、このような命令の一例に過ぎない。他の例は、異なる種類の複合算術命令（例えば、複素演算命令）を含む。後続デコーダの一部または全部からの情報は、実行段１４の同一の入力に供給されてもよい。
【図面の簡単な説明】
【００３７】
【図１】命令処理回路を示す図である。
【図１ａ】パイプライン段の構造体を示す図である。
【図２】フリーズ回路を示す図である。
【図３】さらに他の命令処理回路を示す図である。
【図４】命令実行回路を示す図である。
【図１】
2008503827.tif 000003
【図１ａ】
2008503827.tif 000004
【図２】
2008503827.tif 000005
【図３】
2008503827.tif 000006
【図４】
2008503827.tif 000007
【国際調査報告】
2008503827.tif 000008
2008503827.tif 000009
2008503827.tif 000010