(57)【要約】  データを一方向にシフトあるいは回転させる単一方向回転子を有するプロセッサが開示される。プロセッサは、また、レジスタードベースの反対方向のシフト／回転命令によって指定されたシフト値を変更するためのロジックを有する制御ユニットを含み、変更されたシフト値は回転子による一方向へのシフト／回転のために使用され、それによって、回転子中のデータがあたかもレジスタードベースのシフト／回転命令によって元々指定されたシフト値だけ反対方向にシフト／回転されたと同様の結果を生み出す。制御ユニットは、さらに、レジスタベースの命令によってデータを一方向にシフト／回転するために指定されたシフト値を、ロジックをバイパスして回転子に供給するように構成される。【選択図】    図１
2009525551.tif 000002
【特許請求の範囲】
【請求項１】
データを一方向にシフト／回転させるように構成された単一方向回転子と、
レジスタードベースのシフト／回転命令によって指定された反対方向へのシフト値を変更するように構成されたロジックを有し、前記ロジックによって変更されたシフト値は前記データを前記一方向にシフト／回転するために前記回転子によって使用可能で、それによってあたかも前記回転子のデータが前記レジスタードベースの命令によって元々指定されたシフト値だけ前記反対方向にシフト／回転されたと同じ結果を生成する制御ユニットと、
を備え、
前記制御ユニットは、さらに、レジスタベースの命令によって前記データを前記一方向にシフト／回転させるために指定されたシフト値を、前記ロジックをバイパスして前記回転子に供給するように構成された、
プロセッサ。
【請求項２】
パイプライン化された実行ユニットをさらに備え、前記制御ユニットはさらに前記レジスタードベースの命令によって指定された前記シフト値を前記パイプラインの出力ステージ以外のステージから回復するように構成された、請求項１に記載のプロセッサ。
【請求項３】
汎用レジスタファイルをさらに備え、前記制御ユニットは、前記レジスタベースの命令に応じて前記汎用レジスタファイルもしくは前記パイプラインのいずれかから前記シフト値を選択するマルチプレクサをさらに備えた、請求項２に記載のプロセッサ。
【請求項４】
前記マルチプレクサは、さらに、前記レジスタベースの命令に応じた前記汎用レジスタファイルからのシフト値、前記レジスタベースの命令に応じた前記パイプラインからのシフト値、インストラクションベースのシフト／回転命令によって指定されたシフト値のうちのいずれかを選択するように構成された、請求項３に記載のプロセッサ。
【請求項５】
前記インストラクションベースのシフト／回転命令が前記反対方向である場合、前記インストラクションベースのシフト／回転命令によって指定されたシフト値は前記マルチプレクサに供給される前に前記制御ユニットによって変更され、前記インストラクションベースのシフト／回転命令のための前記変更されたシフト値は前記回転子によって前記データを前記一方向にシフト／回転するために使用可能で、それによってあたかも前記回転子のデータが前記インストラクションベースのシフト／回転命令によって元々指定されたシフト値だけ前記反対方向にシフト／回転されたと同じ結果を生成する、請求項５に記載のプロセッサ。
【請求項６】
前記制御ユニットは、さらに、前記レジスタベースの前記一方向のシフト／回転命令に対する前記マルチプレクサによって選択された前記シフト値を前記回転子に供給し、また、前記レジスタベースの前記反対方向のシフト／回転命令に対する前記マルチプレクサによって選択された前記シフト値を前記ロジックに供給するように構成された、請求項３に記載のプロセッサ。
【請求項７】
前記ロジックによって生成された変更後の前記シフト値は前記マルチプレクサに戻され、前記マルチプレクサは、前記汎用ファイルレジスタもしくは前記パイプラインのいずれかから前記シフト値を選択し、または、前記変更後のシフト値を前記回転子に供給するように構成された、請求項６に記載のプロセッサ。
【請求項８】
前記マルチプレクサに結合された入力と前記ロジック及び前記回転子に結合された出力とを有するラッチをさらに備えた、請求項７に記載のプロセッサ。
【請求項９】
データを一方向にシフト／回転させるように構成されたnビットの単一方向回転子と、
レジスタードベースのシフト／回転命令によって指定された反対方向へのシフト値mを変更するように構成されたロジックを有し、前記ロジックによって変更されたシフト値は前記データを前記一方向に(n-m)だけシフト／回転するために前記回転子によって使用可能である制御ユニットと、
を備え、
前記制御ユニットは、さらに、レジスタベースの命令によって前記一方向にシフト／回転させるために指定されたシフト値を、前記ロジックをバイパスして前記回転子に供給するように構成された、
プロセッサ。
【請求項１０】
パイプライン化された実行ユニットをさらに備え、前記制御ユニットはさらに前記レジスタードベースの命令によって指定された前記シフト値を前記パイプラインの出力ステージ以外のステージから回復するように構成された、請求項９に記載のプロセッサ。
【請求項１１】
汎用レジスタファイルをさらに備え、前記制御ユニットは、前記レジスタベースの命令に応じて前記汎用レジスタファイルもしくは前記パイプラインのいずれかから前記シフト値を選択するマルチプレクサをさらに備えた、請求項１０に記載のプロセッサ。
【請求項１２】
前記マルチプレクサは、さらに、前記レジスタベースの命令に応じた前記汎用レジスタファイルからのシフト値、前記レジスタベースの命令に応じた前記パイプラインからのシフト値、インストラクションベースのシフトもしくは回転命令によって指定されたシフト値のうちのいずれかを選択するように構成された、請求項１１に記載のプロセッサ。
【請求項１３】
前記インストラクションベースのシフト／回転命令が前記反対方向である場合、前記インストラクションベースのシフト／回転命令によって指定されたシフト値は、前記マルチプレクサに供給される前に前記制御ユニットによって変更され、前記インストラクションベースのシフト／回転命令のための前記変更されたシフト値は前記回転子によって前記データを前記一方向にシフト／回転するために使用可能で、それによってあたかも前記回転子のデータが前記インストラクションベースのシフト／回転命令によって元々指定されたシフト値だけ前記反対方向にシフト／回転されたと同じ結果を生成する、請求項１２に記載のプロセッサ。
【請求項１４】
前記制御ユニットは、さらに、前記レジスタベースの前記一方向のシフト／回転命令のために前記マルチプレクサによって選択された前記シフト値を前記回転子に供給し、また、前記レジスタベースの前記反対方向のシフト／回転命令のために前記マルチプレクサによって選択された前記シフト値を前記シフト修正ロジックに供給するように構成された、請求項１１に記載のプロセッサ。
【請求項１５】
前記ロジックによって生成された変更後の前記シフト値は前記マルチプレクサに戻され、前記マルチプレクサは前記汎用ファイルレジスタもしくは前記パイプラインのいずれかから前記シフト値を選択し、または、前記変更後のシフト値を前記回転子に供給する、請求項１４に記載のプロセッサ。
【請求項１６】
前記マルチプレクサに結合された入力と前記ロジック及び前記回転子に結合された出力とを有するラッチをさらに備えた、請求項１５に記載のプロセッサ。
【請求項１７】
データを一方向にシフト／回転するように構成された単一方向回転子と、レジスタードベースの反対方向のシフト／回転命令によって指定されたシフト値を変更するように構成されたロジックとを使用し、かつ、変更された前記シフト値は前記回転子のデータを前記一方向にシフト／回転するために使用可能で、それによってあたかも前記回転子中のデータが前記レジスタードベースの命令によって元々指定されたシフト値だけ反対方向にシフト／回転されたと同じ結果を生みだすシフト／回転動作の実行方法であって、
前記方法は、
レジスタードベースの一方向のシフト／回転命令によって指定されたシフト値を検索することと、
前記ロジックをバイパスして、前記検索されたシフト値を前記回転子に供給することと、
を備える。
【請求項１８】
前記レジスタードベースの前記一方向のシフト／回転命令のシフト値は、前記回転子を含む実行ユニット中のパイプラインの出力ステージ以外のステージから検索される、請求項１７に記載の方法。
【請求項１９】
前記レジスタードベースの前記一方向のシフト／回転命令のシフト値は、汎用ファイルレジスタから検索される、請求項１７に記載の方法。
【請求項２０】
前記レジスタードベースの前記一方向のシフト／回転命令のシフト値を前記汎用ファイルレジスタから検索するか、前記回転子を含む実行ユニット中のパイプラインの出力ステージ以外のステージから検索するかを決定することをさらに備えた、請求項１７に記載の方法。
【請求項２１】
その後に続くレジスタベースの一方向のシフト／回転命令のシフト値を検索することと、前記その後に続くレジスタベースの命令に先行するレジスタベースの反対方向のシフト／回転命令に応答して、前記ロジックによって変更されたシフト値を前記回転子に供給するように決定することと、をさらに含む、請求項１７に記載の方法。
【請求項２２】
データを一方向にシフト／回転するように構成されたnビットの単一方向回転子と、レジスタードベースの反対方向のシフト／回転命令によって指定されたシフト値mを変更するように構成されたロジックとを使用し、かつ、変更された前記シフト値は前記回転子のデータを前記一方向に(n-m)だけシフト／回転するために使用可能であるシフト／回転動作の実行方法であって、
前記方法は、
レジスタードベースの前記一方向のシフト／回転命令によって指定されたシフト値を検索することと、
前記ロジックをバイパスして前記検索されたシフト値を前記回転子に供給することと、
を備える。
【請求項２３】
前記レジスタードベースの前記一方向のシフト／回転命令のシフト値は、前記回転子を含む実行ユニット中のパイプラインの出力ステージ以外のステージから検索される、請求項２２に記載の方法。
【請求項２４】
前記レジスタードベースの前記一方向のシフト／回転命令のシフト値は、汎用ファイルレジスタから検索される、請求項２２に記載の方法。
【請求項２５】
前記レジスタードベースの前記一方向のシフト／回転命令のシフト値を前記汎用ファイルレジスタから検索するか、前記回転子を含む実行ユニット中のパイプラインの出力ステージ以外のステージから検索するかを決定することをさらに備えた、請求項２２に記載の方法。
【請求項２６】
その後に続くレジスタベースの一方向のシフト／回転命令のシフト値を検索することと、前記その後に続くレジスタベースの命令に先行するレジスタベースの反対方向のシフト／回転命令に応じて、前記ロジックによって変更されたシフト値を前記回転子に供給するように決定することとをさらに含む、請求項２２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にプロセッサに関し、より具体的には、単一方向回転子のためのレジスタベースのシフトに関する。
【背景技術】
【０００２】
プロセッサは、今日、ほとんどすべての電子応用において広く使用されている。
【０００３】
プロセッサは、プログラム命令、算術機能、およびメモリや周辺装置へのアクセスの実行をコントロールする。最も単純な形では、プロセッサはメモリに保存されたデータ上で1つ以上の算術機能を遂行することによりプログラム命令を実行する。プロセッサによって遂行される算術機能は、特定のアプリケーションに依存して変化する。プロセッサによって一般に遂行される算術機能の１つのタイプは、シフト(shifting)あるいは回転(rotating)演算(operation)である。シフトあるいは回転演算は、回転子とそれに関連するロジックによって遂行される。回転子は、シフト演算を要求するプログラム命令に応じてデータが完全にシフトされるように、それらの入力と出力が互いに接続されたマルチプレクサ要素の１つの配列である。
【０００４】
プログラム命令によって要求される特定のシフト演算は種々ある。例えば、プログラム命令は、データを個々のビット位置数だけ移動し、超過ビットは廃棄し、結果はゼロで埋めるよう論理シフト(logical shift)を要求することができる。算術シフト(arithmetic shift)は、右シフト動作中に符号ビット(sign bit)が左まで延長されて左シフト動作中に低位ビット位置にゼロが加えられる以外は、論理シフトに類似する。
【０００５】
回転子もまた、回転演算を要求するプログラム命令を実行するために使用される。
【０００６】
回転演算は、それが循環的である以外は、シフト演算に類似する。回転命令が実行されるとき、回転子の1つの端でシフトアウトされたビットは他方の端に返される。シフト命令と同様、回転命令は、左回転あるいは右回転の命令であり得る。
【０００７】
シフト演算、回転演算のためのプログラム命令が双方向であり得るため、いくつかのプロセッサは個別に左回転子と右回転子を組込む。しかしながら、両方を組込むことは、より多くの電力を消費し、また、より多くの面積あるいは空間を要求する。従って、この技術分野において、左右いずれの方向にもシフトあるいは回転の命令を実行させることができる、プロセッサベースの回転子が必要とされている。プロセッサベースの回転子は、シフト演算や回転演算の待ち時間(latencies)を最小化するように構成されるべきである。
【発明の開示】
【概要】
【０００８】
プロセッサの1つの態様が示される。プロセッサは、データを一方向にシフトあるいは回転するように構成された単一方向回転子と、反対方向のレジスタベースのシフト命令あるいは回転命令で指定されたシフト値を変更するように構成されたロジックを有する制御ユニットとを含み、変更されたシフト値は、回転子によって一方向でデータをシフトあるいは回転させるために使用可能である。そしてそのために、あたかもレジスタベースの命令で指定された元々のシフト値を使って回転子中のデータが反対方向にシフトあるいは回転されたのと同じ結果を生成する。制御ユニットは、さらに、ロジックをバイパスし、レジスタベースでの命令によって指定されたシフト値を回転子に供給し、一方向でデータをシフトあるいは回転するように構成される。
【０００９】
プロセッサの他の態様が示される。プロセッサは、データを一方向にシフトあるいは回転させるように構成されたnビットの単一方向回転子と、反対方向のレジスタベースのシフト命令あるいは回転命令でmと指定されたシフト値を変更するように構成されたロジックを有する制御ユニットとを含み、変更されたシフト値は、回転子によって一方向で（n−m）だけデータをシフトあるいは回転させるために使用可能である。制御装置は、さらに、ロジックをバイパスし、一方向でのレジスタベースのシフト／回転命令で指定されたシフト値を回転子に供給するように構成される。
【００１０】
一方向でデータをシフト／回転させるように構成された単一方向回転子を使用してシフトあるいは回転演算を実行する1つの方法が開示される。その方法は、レジスタベースでの一方向のシフト／回転命令によって指定されたシフト値を検索することと、ロジックをバイパスして、検索されたシフト値を回転子に供給することとを含む。ロジックは、レジスタベースでの反対方向のシフト／回転命令で指定されたシフト値を変更するように構成され、変更されたシフト値は、回転子によって一方向でのデータのシフト／回転に使用される。その結果、あたかも回転子中のデータがレジスタベースの命令で指定された元々のシフト値で反対方向にシフト／回転されたのと同じ結果を生成する。
【００１１】
一方向でデータをシフト／回転させるように構成されたnビットの単一方向回転子を使用してシフトあるいは回転演算を実行する他の方法が開示される。その方法は、レジスタベースでの一方向のシフト／回転命令によって指定されたシフト値を検索することと、ロジックをバイパスして、検索されたシフト値を回転子に供給することとを含む。ロジックは、レジスタベースでの反対方向のシフト／回転命令で指定されたシフト値を変更するように構成され、変更されたシフト値は、回転子によって一方向でのデータを（n−m）だけシフト／回転するために使用される。
【００１２】
例示としてそのいくつかを示した以下の詳細な記述から、当業者において本開示の他の実施例は容易に明白となるであろう。理解されるように、他の、そして異なる実施例が可能であり、また、ここに含まれたいくつかの詳細は本開示の精神と範囲から外れることなく、様々な他の点で変更が可能である。従って、図面および詳細な記述は、限定的なものとしてではなく、本質を例示するものとしてみなされるべきである。
【００１３】
これらは、他の特徴と同様に、以下の実施例の詳細な記述および添付の図面から明らかになるであろう。
【詳細な説明】
【００１４】
添付の図面に関連して以下に述べられた詳細な記述は、本開示の様々な実施例の記述として意図され、本開示が実行され得るただそれだけの実施例を表わすようには意図されない。詳細な記述は本開示についての完全な理解を提供する目的で特定の詳細を含んでいる。しかしながら、本開示がこれらの特定の詳細なしで実行されてもよいことは当業者にとって明白であろう。いくつかの場合、よく知られた構成や要素は本開示の概念を不明瞭にしないようにするためにブロック図の形で示される。
【００１５】
図1はプロセッサ100あるいは、情報の処理、検索および格納が可能な他の計算体系の例を示す簡略ブロック図である。プロセッサ100はスタンドアロンのコンポーネントでもよく、あるいは、コンピュータ、無線電話、携帯情報端末（ＰＤＡ）、ディジタルカメラ、ゲーム機あるいは他の計算デバイスのようなデバイス中に組み込まれることもできる。プロセッサ100はマイクロプロセッサあるいは他の処理構成であり得る。１つの実施例では、プロセッサ100は埋込み型ＲＩＳＣマイクロプロセッサである。
【００１６】
プロセッサ100の主機能は、データ上で多数のオペレーションを実行することにより、プログラム命令を実行することである。データは検索され、プロセッサ100内の汎用メモリ中のレジスタファイル102に保存される。レジスタファイル102は、外部メモリからのデータを一時的に格納するために使用される高速レジスタである。それらは、プロセッサ100によって要求される、データへの高速アクセスを提供する。レジスタ102の数（一般に総体として汎用レジスタファイルと呼ばれる）は、プロセッサアーキテクチャによって指定される。それぞれのレジスタは実行ユニット104によってアクセス可能であり、プロセッサ100が1つ以上の選択されたレジスタからデータを読み、データ上で実行しその結果を選択されたレジスタに書き込む。
【００１７】
実行ユニット104は、プロセッサ100の全ての数学的演算を実行するために、ＡＬＵ(算術/論理演算ユニット)あるいは他の計算上の構成を使用する。それは、一般的に、加算、減算、乗算、除算および他の計算を含む様々な機能を実行する複雑な回路類で構成される。実行ユニット104は、また、データをシフトあるいは回転させるために使用される。シフトおよび回転の機能は、実行ユニット104中の単一方向回転子106とそれに関連するロジック(図示せず）で実行される。
【００１８】
図１中で示される回転子106は、データを右に任意のビット数だけシフトあるいは回転させることができる単一方向回転子として示される。当業者は、この開示の全体にわたって記述された回転子106の機能性が、データを左にシフト／回転させる単一方向回転子まで及ぶことを容易に認識するであろう。
【００１９】
回転子の動作は図２Ａ〜２Ｃに関連して示される。図２Ａでは、8ビットの回転子202の内容が示される。8ビット回転子中のデータは右に２ビットだけ循環され、図２Ｂで示す結果となる。図２Ｂおよび２Ｃを参照すると、２ビットの右回転動作が６ビットの左回転動作と同じ結果を生むことが容易に分かる。言い換えれば、一方向にデータを回転させることができる回転子は、反対方向でのデータの回転をエミュレートするために使用することができる。したがって、nビットの単一方向回転子中のmビットの左回転動作は、データを(n-m)ビット右回転させることにより実行することができる。
【００２０】
シフト動作は、回転子中で最初に適正量だけデータを回転させておき、次に、適切なビットを廃棄することにより実行されてもよい。占有されていないビット位置はゼロを埋め込んでもよい。あるいは、算術右シフト動作においては、符号ビットが、占有されていないビット位置中に左に延長されてもよい。例えば、mビットの左シフト動作は、回転子中のデータを右に(n-m)ビット回転し、m-LSBを廃棄し、m-LSBビット位置にゼロを埋め込むことで実行できる。mビットの右シフト動作は、回転子中のデータを右にmビット回転させて、m-MSBを廃棄し、m-MSBビット位置にゼロを埋め込むことにより実行できる。算術右シフト動作の場合には、符号ビットが回転子中でm-MSBビット位置中に左に延長されてもよい。
【００２１】
図1に返って、実行ユニット104の動作は命令キャッシュ108に格納されたプログラム命令によって制御される。命令キャッシュ108は、プロセッサ100上の小さな高速メモリである。それは、外部メモリからフェッチされたプログラム命令のための一時的な高速蓄積装置を提供する。プログラム命令はデコーダ110に供給され、また、デコードされた命令は、数学的演算を実行するために実行ユニット104の活性化に使用される。
【００２２】
プログラム命令は、一般に、オペレーションコードとオペランドフィールドの２つの部分から構成される。オペレーションコードは、実行ユニット104によって実行される加算、減算、格納、回転、シフトのようなオペレーションを指定する。オペランドフィールドは、オペレーションコードによって指定されたオペレーションに関するより多くの詳細を提供する。例えば、シフト演算の場合には、オペランドフィールドは、シフトされるべきデータを汎用レジスタファイル102中のどのレジスタが保有しているか、シフトの方向、そしてデータをシフトするためのビット位置の数を示す。この例において、オペランドフィールドは、第１のレジスタ中のデータをmビット右にシフトするよう要求してもよい。あるいは、オペランドフィールドは、第１のレジスタのデータを第２のレジスタで指定された量だけシフトするよう要求してもよい。前のプログラム命令は一般に「インストラクションベースのシフト」("instruction-based shift")として引用され、また、後のプログラム命令は「レジスタベースのシフト」("register-based shift")として引用される。
【００２３】
制御ユニット(図示せず）が、プロセッサ内のプログラム命令とデータの流れを管轄する。制御ユニットの多くの機能のうちの1つは、算術命令のオペランドフィールド中で指定されたデータを実行ユニット104に提供することである。データはプロセッサのアーキテクチャに依存する任意のソースから提供されてもよい。例えば、データは、汎用レジスタファイル102、キャッシュあるいは他のメモリにあってもよい。いくつかの場合では、データは実行ユニット104のパイプライン122中に存在する。したがって、制御ユニットによって検索し、実行ユニット104の入力にフィードバックされなくてはならない。
【００２４】
制御ユニットは、パイプライン122中の任意のステージからデータを早期に回復することを可能にする何がしかのロジックを使用してもよい。制御ユニットは、一般に、デコーダ、マルチプレクサおよび関連するロジックの複合配置で実行される。図1において、デコーダ110、マルチプレクサ112、118、ラッチ114およびシフト修正ロジック116が制御ユニットの一部を形式する。
【００２５】
実行ユニット104へのデータの流れのコントロールに加えて、制御ユニットは、また、命令キャッシュ108中のプログラム命令のオペレーションコードを実行ユニット104中のマルチプレクサ118に供給する役割を負う。マルチプレクサ118は、制御ユニットが汎用レジスタファイル102に結果を格納する前に、回転子106の出力あるいは他の計算機能120を切り替えてパイプライン122に送るために使用される。インストラクションベースのシフトあるいは回転命令の場合は、オペランドフィールドはマルチプレクサ112を通過して回転子106に供給され、データを何ビット位置シフトするかを伝える。デコーダ110、あるいは他の構成は、シフト量を(n-m)だけ変更することによって左シフト／回転を右シフト／回転の命令に変換するために使用される。
【００２６】
今記述されたデコード機能は、インストラクションベースのシフトあるいは回転によく適している。なぜなら、プロセッサ100による実行に十分先立って、命令キャッシュ108内で命令が利用できるからである。しかしながら、レジスタベースのシフト／回転の場合は、もし現在のシフト／回転命令のためにシフト量を指定したデータが汎用ファイルレジスタ102に存在せず、実行ユニット104のパイプライン122のどこかに存在していると、ある時間遅れが経験される。
【００２７】
プロセッサ100の少なくとも1つの実施例では、制御ユニットは、レジスタードベースのシフト／回転命令を効率的に処理するよう構成される。例えば、シフト／回転命令のシフト値を変更する機能は、レジスタードベースのシフト／回転の場合は、デコーダ110ではなく、制御ユニットによって実行される。より具体的には、レジスタードベースのシフト／回転命令のためのオペランドフィールドは、制御ユニットに供給される。制御ユニットは、オペランドフィールドによって指定されたシフト値を汎用ファイルレジスタ102もしくは実行ユニットのパイプライン122のいずれかに配置し、そのシフト値をマルチプレクサ112を介してラッチ114の入力に送る。一旦、データがラッチ114の入力に送られれば、制御ユニットは次のクロックサイクルで実行ユニット104にデータをロードするか、それともまずシフト値を変更するかを決定する。
【００２８】
シフト／回転命令のためにシフト値を実行ユニットに送る処理について、図1および図3を参照して説明する。制御ユニットは、ステップ302で、命令がレジスタードベースかインストラクションベースかを決定する。もし制御ユニットが命令はインストラクションベースであると決定する場合は、シフト値はブロック304中の実行ユニット104に供給され、実行ユニット104はブロック305で回転子中のデータをシフト値によって指定された量だけ右にシフト／回転させる。インストラクションベースのシフト／回転命令が左方向であった場合は、シフト値はデコーダ110あるいは他の構成によって前もって変更されていてもよい。
【００２９】
もし制御ユニットがレジスタードベースの命令であると決定する場合は、制御ユニットは、ブロック306で、レジスタードベースの命令が右へのシフト／回転を要求しているか、それとも左へのシフト／回転を要求しているかを決定する。もし制御ユニットが、命令は右シフト／回転を要求していると決定する場合は、シフト値はブロック304で実行ユニット104に供給され、実行ユニット104はブロック305で回転子中のデータをシフト値によって指定された量だけ右にシフト／回転させる。
【００３０】
もし制御ユニットが、命令は左へのレジスタードベースの命令であると決定する場合は、シフト値はブロック307でシフト修正ロジック116に供給される。ブロック308でシフト値が(n-m)だけ変更される。ここで、nは回転子106のサイズで、mはシフト値である。変更されたシフト値はブロック304で実行ユニット104に供給され、実行ユニット104はブロック305で回転子中のデータをシフト値によって指定された量だけ右に回転させる。
【００３１】
ここに示された実施例に関係して記述された様々な例示の論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）あるいは他のプログラマブルロジックデバイス、ディスクリートゲート、トランジスタロジック、個別のハードウェア構成要素、あるいはここに記述された機能を実行するために設計されたそれらの任意の組合せによって実施することができる。汎用プロセッサはマイクロプロセッサであってよいが、代替として任意の従来のプロセッサ、コントローラ、マイクロコントローラあるいはステートマシンであってもよい。また、プロセッサは、計算デバイスの組み合わせ（例えばＤＳＰとマイクロプロセッサの組合せ）、複数のマイクロプロセッサ、ＤＳＰコアと協働する１つ以上のマイクロプロセッサあるいは他のそのような構成として実施することができる。
【００３２】
ここに示された実施例に関係して記述された方法またはアルゴリズムは、ハードウェア、プロセッサによって実行されるソフトウェアモジュールあるいはそれら２つの組合せに直接組み込まれてもよい。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ-ＲＯＭあるいはこの技術分野で既知の記憶媒体の他の形態中に存在してもよい。記憶媒体はプロセッサと結合され、プロセッサは記録媒体から情報を読み出し、また記録媒体に情報を書き込む。代替として、記憶媒体はプロセッサと一体であってもよい。プロセッサと記憶媒体はＡＳＩＣ中に存在してもよい。ＡＳＩＣはターミナルあるいはその他のところに存在してもよい。代替として、プロセッサと記憶媒体はターミナルあるいはその他のところに個別部品として存在してもよい。
【００３３】
開示された実施例についての先の記述は、当業者が本発明を実施することを可能にするために提供されている。これらの実施例のついての様々な変更は当業者にとって容易に明白であり、ここに定義された包括的な原理は、本開示の精神あるいは範囲から外れずに他の実施例に適用されてもよい。したがって、本発明は、ここに開示示された実施例に制限されるようには意図されず、請求項と一致する十分な範囲を与えられるべきものであり、単数での要素の言及は、特にそのように明示されない限り「ただ１つのみ」を意味するようには意図されておらず、むしろ「１つ以上」を意図している。この開示を通して記述された様々な実施例の要素についての、当業者によって既に知られ、あるいは後に知られるようになる全ての構造的・機能的な均等物は、参照によってここに明白に組込まれ、また、請求項によって包含されるように意図される。さらに、ここに開示されたいかなるものも、そのような開示が請求項で明示的に記載されるか否かにかかわらず、公共に捧げられるようには意図されない。要素が明確に「means for」、あるいは方法クレームの場合は「step for」を使って記述されていない限り、請求項の要素は米国特許法第１１２条第６パラグラフの下で解釈されるべきではない。
【図面の簡単な説明】
【００３４】
【図１】図1はプロセッサの例を示す簡略ブロック図。
【図２】図2A-2Cはプロセッサ中で回転子のオペレーションを示す図。
【図３】図3は、プロセッサ中の制御ユニットのオペレーションを示すフローチャート・ダイアグラム。
【図１】
2009525551.tif 000003
【図２】
2009525551.tif 000004
【図３】
2009525551.tif 000005
【国際調査報告】
2009525551.tif 000006
2009525551.tif 000007