(57)【要約】オペランド・ローテータ（１００）及びオペランドを回転させる方法が開示される。オペランド・ローテータ（１００）は、オペランド・サイズのうちの１つを指示するオペランド・サイズを受け取る第１の入力と、回転量信号を受け取る第２の入力と、複数の制御信号を与える制御出力とを含む。オペランド・ローテータ（１００）はまた、第１のデコーダ（１０２）の制御出力に結合された第１の入力と、データ・エレメントを受け取る第２の入力と、回転されたデータを与える出力とを有するローテータ（１０４）を含む。ローテータ（１０４）は、複数の制御信号に応答して、複数のオペランド・サイズのうちの１つに対応するデータ・エレメントの一部を、回転量信号に対応する量だけ回転させる。
2009512090.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペランド・サイズのうちの１つを指示するオペランド・サイズを受け取る第１の入力と、回転量信号を受け取る第２の入力と、複数の制御信号を与える制御出力とを有する第１のデコーダと、
前記第１のデコーダの制御出力に結合された第１の入力と、データ・エレメントを受け取る第２の入力と、出力とを有するローテータと、を備え、
前記ローテータが、前記複数の制御信号に応答して、前記複数のオペランド・サイズのうちの１つに対応するデータ・エレメントの一部を、前記回転量信号に対応する量だけ回転させる、オペランド・ローテータ。
【請求項２】
前記第１のデコーダが更に、シフト・タイプを受け取る第３の入力を有し、
前記第１のデコーダが更に、前記シフト・タイプに応答して、前記複数の制御信号を与える
請求項１記載のオペランド・ローテータ。
【請求項３】
前記ローテータが更に、前記複数の制御信号に応答して、回転されたデータ・エレメントに対してマスキング・オペレーションを実行して、シフトされたデータを前記ローテータの出力に与える請求項２記載のオペランド・ローテータ。
【請求項４】
前記オペランド・サイズを受け取る第１の入力と、シフト量信号を受け取る第２の入力と、複数のマスキング制御信号を与える制御出力とを有する第２のデコーダと、
前記第２のデコーダの制御出力に結合された第１の入力と、前記ローテータの出力に結合された第２の入力と、シフトされたデータを与える出力とを有するマスキング・モジュールと、を更に備え、
前記マスキング・モジュールが、前記複数のマスキング制御信号に応答して、前記複数のオペランド・サイズのうちの１つに対応するデータ・エレメントの一部を、前記シフト量信号に対応する量だけシフトさせる
請求項１記載のオペランド・ローテータ。
【請求項５】
前記第１のデコーダが、前記回転量信号の第１の部分を復号する第１の復号ロジックと、前記回転量信号の第２の部分を復号する第２の復号ロジックとを含む請求項１記載のオペランド・ローテータ。
【請求項６】
前記ローテータが、前記第１の復号ロジックの出力に結合された第１の入力を有する第１段のマルチプレクサを含み、
前記第１段のマルチプレクサが、前記データ・エレメントを部分的にシフトさせる
請求項５記載のオペランド・ローテータ。
【請求項７】
前記ローテータが、前記第２の復号ロジックの出力に結合された第１の入力と、前記第１段のマルチプレクサの出力に結合されて前記の部分的にシフトされたデータ・エレメントを受け取る第２の入力とを有する第２段のマルチプレクサを含み、
前記第２段のマルチプレクサが、前記の回転されたデータを与える
請求項６記載のオペランド・ローテータ。
【請求項８】
前記複数のオペランド・サイズが、バイト・サイズ、ハーフ・ワード・サイズ及び１ワード・サイズを含む請求項１記載のオペランド・ローテータ。
【請求項９】
前記複数のオペランド・サイズが、ダブル・ワード・サイズを含む請求項１記載のオペランド・ローテータ。
【請求項１０】
前記ローテータが、前記複数の制御信号に応答して、ベクトル・データの一部を左方向又は右方向へ回転させる請求項１記載のオペランド・ローテータ。
【請求項１１】
複数のオペランド・サイズのうちの１つを指示するオペランド・サイズを受け取る第１の入力と、回転量信号を受け取る第２の入力と、複数の制御信号を与える制御出力とを有するデコーダと、
前記デコーダの制御出力に結合された第１の入力と、データ・エレメントを受け取る第２の入力と、回転又はシフトされたデータを与える出力とを有するローテータ及びマスク・ロジック回路と、を備え、
前記ローテータ及びシフタが、前記複数の制御信号に応答して、前記複数のオペランド・サイズのうちの１つに対応するデータ・エレメントの一部を、前記回転量信号に対応する量だけ回転又はシフトさせる、オペランド・ローテータ。
【請求項１２】
前記ローテータ及びシフタが、前記複数の制御信号の第１の部分に応答して、前記データ・エレメントを部分的に回転又はシフトさせる第１段のマルチプレクサを含む請求項１１記載のオペランド・ローテータ。
【請求項１３】
前記ローテータ及びシフタが更に、前記の部分的に回転されたデータ・エレメントを受け取って前記の部分的に回転又はシフトされたデータ・エレメントを与え且つ前記データ・エレメントを更に回転又はシフトさせる第２段のマルチプレクサを含む請求項１２記載のオペランド・ローテータ。
【請求項１４】
前記第１段のマルチプレクサが、符号拡張入力を含み、
前記第１段のマルチプレクサが、前記のシフト・タイプ信号に応答して、前記データ・エレメントを前記符号拡張入力に基づいてシフトさせる
請求項１２記載のオペランド・ローテータ。
【請求項１５】
データ・ユニットを回転させる方法であって、
第１のデコーダで第１回に複数のオペランド・サイズのうちの１つを指示する第１のオペランド・サイズを受け取るステップと、
前記第１のデコーダで回転量信号を受け取るステップと、
複数の制御信号を前記第１のデコーダからローテータへ与えるステップと、
前記第１のオペランド・サイズに対応する第１のデータ・エレメントの一部を、前記回転量信号に対応する量だけ回転させるステップと
を備える方法。
【請求項１６】
前記第１のデコーダで第２回に複数のオペランド・サイズのうちの１つを指示する第２のオペランド・サイズを受け取るステップと、
前記第２のオペランド・サイズに対応する第２のデータ・エレメントの一部を、前記回転量信号に対応する量だけ回転させるステップと
を更に備える請求項１５記載の方法。
【請求項１７】
前記第１のデコーダでシフト量信号を受け取るステップと、
前記複数のオペランド・サイズのうちの１つに対応するベクトル・データの一部を、前記シフト量信号に対応する量だけシフトさせるステップと
を更に備える請求項１５記載の方法。
【請求項１８】
前記ベクトル・データの一部が、代数的右シフト・オペレーションに相当する要領でシフトされる請求項１７記載の方法。
【請求項１９】
前記複数のオペランド・サイズが、バイト・サイズ、ハーフ・ワード・サイズ及びワード・サイズを含む請求項１５記載の方法。
【請求項２０】
前記複数のオペランド・サイズが、ダブル・ワード・サイズを含む請求項１５記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［開示の分野］
本発明は、一般的に、演算回路に関し、詳細には、集積回路においてオペランドを回転及びシフタさせるシステムに関する。
【０００２】
［背景］
データ・プロセッサは、その命令セットを実行するため様々なシフト・オペレーションを必要とする。シフト・オペレーションは、左シフト、右シフト、及び回転を含み得る。シフトは、算術的又は論理的であることができ、それは、どのようにオペランドのいずれの端部でのビットが処理されるかを決定する。各シフト又は回転オペレーションは、可変長を有する。どのビットが所与のビット位置にシフトされるかは、シフト・オペレーションのタイプ及び回転量により決定される。
【０００３】
幾つかの種類のシフタがある。単純なシフト・レジスタは、入力オペランドを並列に格納し、次いでそのオペランドを各クロック・サイクルに１ビット位置だけ逐次にシフトさせる。オペランドが所望のビット数だけシフトされたとき、その結果が、シフト・レジスタから並列に読み出される。別のタイプのシフタは、バレル・シフタである。バレル・シフタは、ソース・オペランドの各ビットからデスティネーション・オペランドの各ビットへの接続を含む。従って、バレル・シフタは、シフト命令を任意のビット位置数だけ実行することができる。バレル・シフタは、都合のよいことには、２つのレジスタを含み、当該２つのレジスタのそれぞれは、方向に応じてシフト・オペレーションのソース・レジスタ又はデスティネーション・レジスタのいずれかとして機能する。ソース・レジスタ及びデスティネーション・レジスタは、シフト・アレイに結合され、そのシフト・アレイは、本質的に、Ｍ×Ｍマトリックスのトランジスタである（なお、Ｍはオペランド・サイズである。）。バレル・シフタは、速いが、しかし大きい回路面積を必要とする。
【０００４】
データ・プロセッサはまた、ベクトル・オペレーション（これは単一命令多重データ（ＳＩＭＤ）として知られている。）をサポートすることを要求される。そのようなオペレーションをサポートするため、データ・プロセッサは、ベクトル・オペランドに対するシフト及び回転オペレーションを含む算術及び論理演算を実行することを要求される。ベクトル・オペランドは、変化するサイズであることができる。ベクトル・プロセッサでシフトを実行する１つの既知の技術は、それぞれの可能性のあるベクトル・サイズをサポートする複数のシフタを並列に有する技術である。しかしながら、この技術は、複数のバレル・シフタ及び大きい回路面積を必要とする。
【０００５】
この開示が、添付の図面を参照することにより、一層良く理解され、そしてその多数の特徴及び利点が、当業者に明らかにされるであろう。
【０００６】
同じ参照番号の異なる図面での使用は、類似又は同一の構成要素を示す。
【発明を実施するための最良の形態】
【０００７】
オペランドを回転させるシステム及び方法が、開示される。本システムは、複数のオペランド・サイズのうちの１つを指示するオペランド・サイズを受け取る第１の入力と、回転量信号を受け取る第２の入力と、複数の制御信号を与える制御出力とを含む。本システムはまた、第１のデコーダの制御出力に接続された第１の入力と、データ・エレメントを受け取る第２の入力と、回転されたデータを与える出力とを有するローテータを含む。ローテータが、複数の制御信号に応答して、複数のオペランド・サイズのうちの１つに対応するデータ・エレメントの一部を、回転量信号に対応する量だけ回転させる。
【０００８】
特定の局面において、第１のデコーダが更に、シフト・タイプを受け取る第３の入力を有し、そして更にシフト・タイプに応答して複数の制御信号を与える。別の特定の局面において、ローテータが更に、複数の制御信号に応答して、回転されたデータ・エレメントに対してマスキング・オペレーションを実行して、シフトされたデータをローテータの出力に与える。
【０００９】
別の特定の局面において、本システムは、オペランド・サイズを受け取る第１の入力と、シフト量信号を受け取る第２の入力と、複数のマスキング制御信号を与える制御出力とを有する第２のデコーダを含む。本システムはまた、第２のデコーダの制御出力に結合された第１の入力と、ローテータ・モジュールの出力に結合された第２の入力と、シフトされたデータを与える出力とを有するマスキング・モジュールを含む。マスキング・モジュールは、複数のマスキング制御信号に応答して、複数のオペランド・サイズのうちの１つに対応するデータ・エレメントの一部を、シフト量信号に対応する量だけシフトさせる。
【００１０】
別の特定の局面において、第１のデコーダは、回転量信号の第１の部分を復号する第１の復号ロジックと、回転量信号の第２の部分を復号する第２の復号ロジックとを含む。
【００１１】
特定の局面において、ローテータは、第１の復号ロジックの出力に結合された第１の入力を有する第１段のマルチプレクサを含み、当該第１段のマルチプレクサは、データ・エレメントを部分的にシフトさせる。別の特定の局面において、ローテータは、第２の復号ロジックの出力に結合された第１の入力と、第１段のマルチプレクサの出力に結合されて、部分的にシフトされたデータ・エレメントを受け取る第２の入力とを有する第２段のマルチプレクサを含み、当該第２段のマルチプレクサが、前記の回転されたデータを与える。更に別の特定の局面において、デコーダは、回転量の第３の部分を復号する第３の復号ロジックを含み、そしてローテータは、第３段のマルチプレクサを含む。
【００１２】
更に別の特定の局面において、複数のオペランド・サイズは、バイト・サイズ、ハーフ・ワード・サイズ及びワード・サイズを含む。別の特定の局面において、複数のオペランド・サイズは、ダブル・ワード・サイズ、又は他の倍数のワード・サイズを含む。
【００１３】
特定の局面において、ローテータは、複数の制御信号に応答して、ベクトル・データの一部を左方向又は右方向へ回転させる。
【００１４】
特定の局面において、本システムは、複数のオペランド・サイズのうちの１つを指示するオペランド・サイズを受け取る第１の入力と、回転量信号を受け取る第２の入力と、複数の制御信号を与える制御出力とを有するデコーダを含む。本システムはまた、デコーダの制御出力に結合された第１の入力と、データ・エレメントを受け取る第２の入力と、回転又はシフトされたデータを与える出力とを有するローテータ及びマスク・ロジック回路を含み、当該ローテータ及びシフタは、複数の制御信号に応答して、複数のオペランド・サイズのうちの１つに対応するデータ・エレメントの一部を、回転量信号又はシフト量信号に対応する量だけ回転又はシフトさせる。
【００１５】
特定の局面において、ローテータ及びシフタは、複数の制御信号の第１の部分に応答して、データ・エレメントを部分的に回転又はシフトさせる第１段のマルチプレクサを含む。別の特定の局面において、ローテータ及びシフタは更に、部分的に回転されたデータ・エレメントを受け取り、部分的に回転又はシフトされたデータ・エレメントを与え、且つデータ・エレメントを更に回転又はシフトさせる第２段のマルチプレクサを含む。
【００１６】
特定の局面において、第１段のマルチプレクサは、符号拡張入力を含み、そして第１段のマルチプレクサは、符号拡張入力に応答してデータ・エレメントをシフトさせる。
【００１７】
本方法は、第１のデコーダで第１回に複数のオペランド・サイズのうちの１つを指示する第１のオペランド・サイズを受け取るステップと、第１のデコーダで回転量信号を受け取るステップとを含む。本方法はまた、複数の制御信号を前記第１のデコーダからローテータへ与えるステップと、複数のオペランド・サイズの１つに対応する第１のデータ・エレメントの一部を、回転量信号に対応する量だけ回転させるステップとを含む。
【００１８】
特定の局面において、本方法は更に、第１のデコーダで第２回に第１のオペランド・サイズとは異なる第２のオペランド・サイズを受け取るステップを含む。この局面において、本方法はまた、第２のオペランド・サイズに対応するデータ・エレメントの一部を、回転量信号に対応する量だけ回転させるステップを含む。
【００１９】
別の特定の局面において、本方法は、第１のデコーダでシフト量信号を受け取るステップと、複数のオペランド・サイズのうちの１つに対応するベクトル・データの一部を、シフト量信号に対応する量だけシフトさせるステップとを含む。更に別の特定の局面において、ベクトル・データの一部が、代数的右シフト・オペレーションに相当する要領でシフトされる。更に別の特定の局面において、複数のオペランド・サイズは、バイト・サイズ、ハーフ・ワード・サイズ及びワード・サイズを含む。特定の局面において、複数のオペランド・サイズは、ダブル・ワード・サイズ、又は他の倍数のワード・サイズを含む。
【００２０】
図１を参照すると、本発明に従ったオペランド・ローテータ１００が示されている。オペランド・ローテータ１００は、第１のデコーダ１０２、ローテータ１０４、第２のデコーダ１０６、及びマスキング・モジュール１０８を含む。第１のデコーダ１０２は、「Ａｍｗ」、「Ａｍｈ」及び「Ａｍｂ」とラベルを付されたシフト量信号を受け取る第１の制御入力端子と、「Ｂ／Ｈ／Ｗ」とラベルを付されたオペランド・サイズ信号を受け取る第２の制御入力端子と、複数の制御出力端子を有する。ローテータ１０４は、「ＶＡ［０：３１］」とラベルを付された入力オペランドを受け取るデータ入力と、第１のデコーダ１０２の制御出力端子のうちの対応の複数のものに接続された１組の制御入力端子と、回転されたデータ信号を与えるデータ出力端子とを有する。第２のデコーダ１０６は、シフト量信号Ａｍｗ、Ａｍｈ及びＡｍｂを受け取る第１の制御入力端子と、「Ｒｏｔ／Ｓｈｆ」とラベルを付されたシフト・タイプ信号を受け取る第２の制御入力端子とを有する。「Ｒｏｔ／Ｓｈｆ」とラベルを付されたシフト・タイプ信号は、オペレーションがシフト又は回転オペレーション、左シフト又は右シフト・オペレーション、及び論理的シフト又は算術的シフト・オペレーションであるべきかどうかを指示する演算コードを含む。第２のデコーダ１０６はまた、複数の制御出力端子を含む。マスキング・モジュール１０８は、「最終結果」とラベルを付されたデータ出力信号を与えるデータ出力端子を有する。
【００２１】
動作において、オペランド・ローテータ１００は、異なるベクトル・フォーマットで表されることが可能であるオペランドに対して回転及びシフト・オペレーションを実行することが可能であるベクトル・ローテータである。図１に示される実施形態においては、オペランド・ローテータ１００は、８ビット、１６ビット及び３２ビット（即ち、バイト、ハーフ・ワード、及びワード）に対するシフト又は回転をサポートする。ダブル・ワード・サイズ又は他の倍数のワード・サイズのような他のオペランド・サイズが、代替実施形態においてサポートされることができる。
【００２２】
その上、オペランド・ローテータ１００は、ベクトル・オペランドの異なる部分を異なる量だけ回転させることが可能である。例えば、３２ビット・オペランドについては、オペランド・ローテータ１００は、ベクトル・オペランドの第１のハーフ・ワードを第１の量だけ、そしてベクトル・オペランドの第２のハーフ・ワードを第２の量だけシフトさせ得る。
【００２３】
オペランド・ローテータ１００は、シフトを実行し、そして２ステップで動作する。第１のステップで、ビットが、ローテータ１０４により回転オペレーションで回転される。第２のステップで、或る一定のビット位置が、マスキング・モジュール１０８によりマスキングされて、境界条件を処理して、単純な回転オペレーションを命令により決定されるような算術的シフト又は論理的シフトに変換される。回転オペレーションを実行するため、第１のデコーダ１０２は、制御信号Ａｍｗ、Ａｍｈ及びＡｍｂ並びにベクトル・サイズＢ／Ｈ／Ｗを復号する。復号された制御信号に基づいて、ローテータ１０４は、ベクトル・オペランドの各部分を適切な量だけ回転させる。
【００２４】
オペランド・ローテータ１００は、第２のデコーダ１０６及びマスキング・モジュール１０８を用いることにより単純な回転オペレーションをシフト・オペレーションに変換する。マスキング・モジュール１０８は、制御信号Ａｍｗ、Ａｍｈ及びＡｍｂ並びにシフト・タイプ信号Ｒｏｔ／Ｓｈｆに応答して、実行されるべきシフトのタイプ及びシフトの境界条件を決定する。マスキング・モジュール１０８は、マスクを適用して、算術的シフト・オペレーション後の符号ビットのような、空けられたビット位置の中へ挿入されるべき値を決定する。
【００２５】
回転量及びベクトル・サイズの両方を用いて追加の復号を実行することにより、ローテータ１００は、制御信号を単一の３２×３２マトリックスで発生して、全てのサポートされたシフト量及びベクトル・サイズを処理することができる。従って、第１のデコーダ１０２が匹敵するバレル・シフタのそれより多少大きいとはいえ、ローテータ１０４のマトリックスは、３２×３２バレル・シフタに関して用いられるシフト・アレイとほぼ同じサイズである。更に、オペランド・ローテータ１００は、それが全てのサポートされたベクトル・サイズのため用いられることができるので、ベクトル・プロセッサにおいて回路面積のかなりの大きさを節約し、そして特定のオペランドの異なる部分を独立にシフト又は回転し得る。その上、オペランド・ローテータ１００は、電力を節約し、そして一部の他の解法より速い。
【００２６】
図２を参照すると、オペランド・ローテータ２００の代替実施形態が示されている。オペランド・ローテータ２００は、デコーダ２０２、ローテータ及びマスキング・モジュール２０４を備える。デコーダ２０２は、「Ａｍｗ」、「Ａｍｈ」及び「Ａｍｂ」とラベルを付されたシフト量信号を受け取る第１の制御入力端子と、「Ｂ／Ｈ／Ｗ」とラベルを付されたオペランド・サイズ信号を受け取る第２の制御入力端子と、「Ｒｏｔ／Ｓｈｆ」とラベルを付されたシフト・タイプ信号を受け取る第３の制御入力端子と、複数の制御出力端子とを含む。ローテータ及びマスキング・モジュール２０４は、「ＶＡ［０：３１］」とラベルを付された入力オペランドを受け取るデータ入力と、デコーダ２０２の制御出力端子のうちの対応の複数のものに接続された１組の制御入力端子と、「最終結果」とラベルを付されたデータ出力信号を与えるデータ出力端子とを有する。
【００２７】
動作において、オペランド・ローテータ２００は、異なるベクトル・フォーマットで表すことが可能であるオペランドに対して回転及びシフト・オペレーションを実行することが可能であるベクトル・ローテータである。オペランド・ローテータ１００についてのように、オペランド・ローテータ２００は、８ビット、１６ビット及び３２ビット（即ち、バイト、ハーフ・ワード及びワード）のベクトル・オペランドについてのシフト及び回転をサポートするが、しかしダブル・ワード・サイズのような他のオペランド・サイズが、代替実施形態でサポートされることができる。
【００２８】
回転オペレーションを実行するため、デコーダ２０２は、制御信号Ａｍｗ、Ａｍｈ及びＡｍｂ並びに制御信号Ｂ／Ｈ／Ｗ及びＲｏｔ／Ｓｈｆを復号する。復号された制御信号に基づいて、ローテータ及びマスキング・モジュール２０４は、ベクトル・オペランドの各部分を適切な量だけ回転させ、そしてマスキングを実行して、様々なサポートされたシフト・オペレーションについての境界条件を処理する。
【００２９】
図１のオペランド・ローテータ１００の利点に加えて、オペランド・ローテータ２００は、回転及びマスキング機能を単一の回路の中に統合化し、従って、追加の回路面積及び追加の電力を節約し、そして追加の速度を与える。
【００３０】
図３は、図２のデコーダ２０２及びローテータ及びマスキング・モジュール２０４の一部を形成する回路３００をブロック図の形式で示す。回路３００は、第１のデコーダ３０２と、第２のデコーダ３０４と、第１のマルチプレクサ３０６、第２のマルチプレクサ３０８、第３のマルチプレクサ３１０及びマルチプレクサ３１２を含む第１段のマルチプレクサとを含む。このシステムは更に、符号拡張モジュール３１４、第５のマルチプレクサ３１６、第６のマルチプレクサ３１８、第７のマルチプレクサ３２０、及び第８のマルチプレクサ３２２を含む。システムはまた、出力レジスタ３２４、及び入力レジスタ３２６、３２８及び３３０を含む。
【００３１】
第１のデコーダ３０２は、第２の入力レジスタ３２８に格納されている「Ｉ１ ＲＳ−ＯＰ」とラベルを付されたシフト・タイプ信号を受け取る第１の制御入力端子と、第３の入力レジスタ３３０に格納されている「Ｉ１ＲＳ−ＶＢ」とラベルを付されたシフト量信号を受け取る第２の制御入力端子と、複数の制御出力端子とを有する。第２のデコーダ３０４はまた、「Ｉ１ＲＳ−ＯＰ」とラベルを付されたシフト量信号を受け取る第１の制御入力端子と、「Ｉ１ ＲＳ−ＶＢ」とラベルを付されたシフト量信号を受け取る第２の制御入力端子と、複数の制御出力端子とを有する。符号拡張モジュール３１４は、「Ｉ１ＲＳ−ＯＰ」とラベルを付されたシフト・タイプ信号を受け取る制御入力と、「Ｉ１ ＲＳ−ＶＡ」とラベルを付された４ビットの入力オペランドを受け取るデータ入力と、データ出力端子とを含む。
【００３２】
マルチプレクサ３０６、３０８、３１０及び３１２はそれぞれ、「Ｍ０Ａ」、「Ｍ０Ｂ」、「Ｍ１Ａ」、「Ｍ１Ｂ」、「Ｍ２Ａ」、「Ｍ２Ｂ」、「Ｍ３Ａ」及び「Ｍ３Ｂ」のそれぞれのラベルを付された２つのマルチプレクサから成る。マルチプレクサ３０６、３０８、３１０及び３１２のそれぞれは、「Ｉ１ＲＳ−ＶＡ」とラベルを付された入力オペランドを受け取る第１のデータ入力と、符号拡張モジュール３１４のデータ出力端子に対応する第２のデータ入力と、第１のデコーダ３０２の制御出力端子のうちの対応の複数のものに接続された複数の制御入力端子とを有する。第１のマルチプレクサ３０６は、「Ｍ０＿ｒｅｓ［０：１５］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。第２のマルチプレクサ３０８は、「Ｍ１＿ｒｅｓ［０：１５］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。第３のマルチプレクサ３１０は、「Ｍ２＿ｒｅｓ［０：１５］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。第４のマルチプレクサ３１２は、「Ｍ３＿ｒｅｓ［０：１５］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。
【００３３】
マルチプレクサ３１６、３１８、３２０及び３２２はそれぞれ、マルチプレクサ３０６、３０８、３１０及び３１２のそれぞれの対応のデータ出力を受け取る第１のデータ入力と、第２のデコーダ３０４の制御出力端子のうちの対応の複数のものに接続された複数の制御入力端子とを有する。第５のマルチプレクサ３１６は、「Ｒ［０：７］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。第６のマルチプレクサ３１８は、「Ｒ［８：１５］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。第７のマルチプレクサ３２０は、「Ｒ［１６：２３］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。第８のマルチプレクサ３２２は、「Ｒ［２４：３１］」とラベルを付されたデータ出力信号を与えるデータ出力端子を含む。
【００３４】
動作中に、第１のデコーダ３０２は、回転量信号、オペランド・サイズ及びシフト・タイプ信号のより高い即ち上位ビットを受け取る。第１のデコーダ３０２は、これらの受け取られたビットを復号して、制御信号を第１段のマルチプレクサに与える。第１段のマルチプレクサ３０６、３０８、３１０及び３１２は、第１のデコーダ３０２により与えられる制御信号に基づいて符号拡張モジュール３１４からのベクトル・データ・エレメント及び符号拡張信号を受け取り、そして上記の受け取られたデータ・エレメントに基づいて、シフトされた出力を与える。
【００３５】
第１段のマルチプレクサは、粗いシフト・オペレーションを実行する。詳細には、第１段のマルチプレクサは、データ・エレメントの粗い部分に対してシフト・オペレーションを実行するよう動作する。例えば、データ・エレメントが３２ビット長である場合、第１段のマルチプレクサは、データ・エレメントを備える各バイト又はワードをシフトさせる。
【００３６】
その上、マルチプレクサは、データを符号拡張モジュール３１４から受け取る。符号拡張モジュール３１４を用いて、マスキング又はシフト・オペレーションを第１段のマルチプレクサに適用する。例えば、符号拡張モジュール３１４を用いて、回転オペレーションをシフト・オペレーションに変更するためマスキング・オペレーションをデータ・エレメントに対して実行するように１又は０をデータ・エレメントに置くことができる。
【００３７】
第２のデコーダ３０４は、回転量の下位３ビットを復号する。第２のデコーダ３０４はまた、オペランド・サイズ及びシフト・タイプを受け取る。これらの入力に基づいて、第２のデコーダ３０４は、制御信号を第２段のマルチプレクサ３１６、３１８、３２０及び３２２を与える。
【００３８】
第２段のマルチプレクサは、第１段のマルチプレクサの出力を受け取る。次いで、第２段のマルチプレクサは、第１段のマルチプレクサの出力を、第２のデコーダ３０４により与えられる制御信号に基づいて回転させる。第２段のマルチプレクサは、「微細な」シフト・オペレーションを実行する。詳細には、マルチプレクサ３１６、３１８、３２０、３２２のそれぞれは、１６ビットを第１段のマルチプレクサから受け取り、そしてその受け取られたビットに対してシフト又は回転オペレーションを実行する。ビットが回転された後で、その回転されたビットは、出力レジスタ３２４で単一のオペランドの中に統合化される。次いで、出力レジスタ３２４は、上記の回転及びシフトされた結果を格納する。
【００３９】
図示されるように「粗い」及び「微細な」構成で２つの段のマルチプレクサを使用することにより、オペランドの個々の部分が、独立に且つ異なる回転量だけ回転される。その上、符号拡張モジュール３１４の使用は、オペランドの統合化されたマスキングを可能にする。これは、ローテータにより必要とされる回路面積量を低減する。更に、回路３００は、異なる回転及びシフト量をサポートし、回転及びシフト・オペレーションのため必要とされる全体の回路を低減し、その結果、より少ない電力しか用いないでしかもより高速である回路をもたらすことが可能である。
【００４０】
他のマルチプレクサの形態が可能である。例えば、回転及びシフト・オペレーションは、単一段のマルチプレクサを用いて実行され得る。また、３段以上の段数のマルチプレクサを用いることもできる。更に、マルチプレクサは、第１及び第２のデコーダを逆にするように構成してもよい。
【００４１】
図４は、図３の回路３００をより詳細に示す回路４００をブロック図形式で示す。回路４００を用いて、図３の回転回路３００を実現することができる。回路４００は、第１のデコーダ・モジュール４０２、第２のデコーダ・モジュール４０６、及び符号拡張モジュール４０４を含む。このシステムはまた、マルチプレクサ４０８、４１０、４１２、４１４、４１６、４１８、４２０及び４２２から成る第１段のマルチプレクサを含む。システム４００は更に、マルチプレクサ４２４、４２６、４２８及び４３０から成る第２段のマルチプレクサを含む。
【００４２】
第１のデコーダ・モジュール４０２は、「ＶＢ［１２，２７：２８］」とラベルを付されたシフト量信号を受け取る第１の制御入力端子と、「Ｓｈｆ／Ｒｏｔ」とラベルを付されたシフト・タイプ信号を受け取る第２の制御入力端子と、「バイト」、「ハーフ」及び「ワード」とラベルを付されたオペランド・サイズを受け取る第３の制御入力端子と、「左／右」とラベルを付されたシフト方向信号を受け取る第４の制御入力端子とを含む。第１のデコーダ・モジュール４０２は更に、制御信号を与える複数の制御出力を含む。第２のデコーダ・モジュール４０６は、「ＶＢ［５：７，１３：１５，２１：２３，２９：３１］」とラベルを付されたシフト量信号を受け取る第１の制御入力端子と、「バイト」、「ハーフ」及び「ワード」とラベルを付されたオペランド・サイズを受け取る第２の制御入力端子と、「左／右」とラベルを付されたシフト方向信号を受け取る第３の制御入力端子とを含む。第２のデコーダ・モジュール４０６は更に、制御信号を与える複数の制御出力を含む。
【００４３】
システム４００は、「ＶＡ［０：３１］」とラベルを付された入力オペランドを受け取る。マルチプレクサ４０８、４１０、４１２、４１４、４１６、４１８、４２０及び４２２を含む第１段のマルチプレクサのそれぞれは、入力オペランドに基づいて複数のデータ入力を受け取る。例えば、マルチプレクサ４０８は、それぞれが入力オペランドを備えるビットの一部分を含む複数のデータ入力を受け取る。従って、図示されるように、マルチプレクサ４０８は、入力オペランドのビット０ないし７から成る「０：７」とラベルを付されたデータ入力を受け取る。第１段のマルチプレクサに含まれる他のマルチプレクサは、類似のデータ入力を受け取る。
【００４４】
その上、符号拡張モジュール４０４は、「ＶＡ［０，８，１６，２４］」とラベルを付された複数の符号ビットを受け取る第１のデータ入力と、「Ｓｈｆ＿Ｌｏｇ／Ｓｈｆ＿Ａｒｉ」とラベルを付されたシフト・タイプ信号を受け取る第１の制御入力と、「Ｂ／Ｈ／Ｗ」とラベルを付されたオペランド・サイズを受け取る第２の制御入力端子とを含む。符号拡張モジュール４０４はまた、「Ｓ０」、「Ｓ１」、「Ｓ２」及び「Ｓ３」とラベルを付された複数のデータ出力を含む。第１段のマルチプレクサのそれぞれは、符号拡張モジュール４０４のデータ出力のうちの対応の１つに接続されたデータ入力を含む。従って、マルチプレクサ４０８及び４１０のそれぞれは、符号拡張モジュール４０４の「Ｓ０」データ出力に対応するデータ入力を含む。同様に、マルチプレクサ４１２及び４１４のそれぞれは、符号拡張モジュール４０４の「Ｓ１」データ出力に対応するデータ入力を含み、マルチプレクサ４１６及び４１８のそれぞれは、符号拡張モジュール４０４の「Ｓ２」データ出力に対応するデータ入力を含み、そしてマルチプレクサ４２０及び４２２のそれぞれは、符号拡張モジュール４０４の「Ｓ３」データ出力に対応するデータ入力を含む。更に、第１段のマルチプレクサのそれぞれは、第１のデコーダ・モジュール４０２の制御出力のうちの対応の複数のものに接続されている複数の制御入力を含む。第１段のマルチプレクサのそれぞれはまた、データ出力を含む。
【００４５】
マルチプレクサ４２４、マルチプレクサ４２６、マルチプレクサ４２８及びマルチプレクサ４３０を含む第２段のマルチプレクサのそれぞれは、第１段のマルチプレクサの１又はそれより多いマルチプレクサのデータ出力に基づいた複数のデータ入力を含む。従って、マルチプレクサ４２４のデータ入力は、マルチプレクサ４０８及びマルチプレクサ４１０のデータ出力に接続される。図示されるように、マルチプレクサ４０８及び４１０のデータ出力は、「Ｒ０［０：１５］」とラベルを付された１６ビット・ハーフ・ワードを形成する。マルチプレクサ４２４への入力は、或る一定ビットのハーフ・ワードＲ０［０：１５］に基づいている。例えば、図示されるように、マルチプレクサ４２４の第１の入力は、ハーフ・ワードＲ０［０：１５］のビット０：７から成り、一方第２の入力は、ハーフ・ワードＲ０［０：１５］のビット１：８から成る。マルチプレクサ４２６、４２８及び４３０は、第１段のマルチプレクサの異なる出力に基づいて、類似の要領で構成されている。また、第２段のマルチプレクサのそれぞれは、第２のデコーダ・モジュール４０６の制御出力の対応の複数のものに接続された複数の制御入力を含む。
【００４６】
更に、第２段のマルチプレクサのそれぞれは、データ出力を含む。例えば、マルチプレクサ４２４は、「ＲＯＴ ＲＥＳ［０：７］」とラベルを付されたデータ出力を与える。マルチプレクサ４２４、４２６、４２８及び４３０のそれぞれの出力は、３２ビット・レジスタに置かれるような、適切な要領で統合化されて、回転結果を生成する。
【００４７】
動作中に、第１のデコーダ・モジュール４０２は、受け取られたシフト量、シフト・タイプ、オペランド・サイズ及びシフト方向の信号を復号して、第１段のマルチプレクサのための制御信号を生成する。これらの制御信号に基づいて、第１段のマルチプレクサのそれぞれは、複数の入力のうちの１つを選択して、出力として与える。従って、例えば、マルチプレクサ４１４は、入力０：７、８：１５、１６：２３及び２３：３１のいずれかを選択して、出力として与えることができる。このようにして、第１段のマルチプレクサのそれぞれは、入力オペランドＶＡ［０：３１］に対して粗いシフトを実行する。その上、符号拡張モジュール４０４は、データを第１段のマルチプレクサに、その符号拡張モジュール４０４に与えられた制御信号に基づいて与える。符号拡張モジュール４０４により与えられたデータは、第１段のマルチプレクサの各マルチプレクサにより選択されて、シフト・タイプ、シフト方向及び他の制御信号に従って適切な境界条件を適用する。従って、第１段のマルチプレクサのそれぞれの出力は、各マルチプレクサに与えられた複数の入力及び符号拡張モジュール４０４により与えられたデータのうちの１つに基づく。
【００４８】
第２のデコーダ・モジュール４０６は、受け取られたシフト量、オペランド・サイズ及びシフト方向の信号を復号して、第２段のマルチプレクサのための制御信号を生成する。これらの制御信号に基づいて、第２段のマルチプレクサのそれぞれは、上記の複数の入力のうちの１つを選択して、出力として与える。従って、例えば、マルチプレクサ４２４は、入力０：７、１：８、２：９、３：１０、４：１１、５：１２、６：１３、７：１４及び８：１５のうちのいずれかを選択して出力として与えることができる。このようにして、第２段のマルチプレクサのそれぞれは、第１段のマルチプレクサの対応の出力に対して微細なシフトを実行する。第２段のマルチプレクサの出力は、統合化されて、回転又はシフトされた最終結果を形成する。
【００４９】
上記で説明したように、「粗い」回転段及び「微細な」回転段の使用は、より小さく、より高速で且つ電力の使用のより少ない回路をもたらす。その上、より少ない或いはより多い段数のマルチプレクサが、様々な応用に用いられることができる。
【００５０】
図４のシステムがベクトル・エレメントに対するオペレーションに関連して説明されたが、このシステムはまた、スカラ・エレメントに対するオペレーションを実行するよう構成されることができる。その場合、スカラ・オペランドは常に同じサイズであると仮定して、デコーダは、オペランド・サイズを与えられない。更に、別のデータ入力が、第２段のマルチプレクサのそれぞれに与えられる。これらのデータ入力は、ビットを符号拡張モジュール又は他の適切なソースから注入して、第２のマスキング・オペレーションを実行する。この第２のマスキング・オペレーションは、システムが「注入されたマスキング」オペレーション又は他のオペレーションを実行して、スカラ命令セットのため適切なシフトを実行する。この構成においては、新しいデータ入力に適応するため、第２段のマルチプレクサは、図４に示されるそれより大きくなるが、しかし第１段は、単純化され、そして図４で用いられるマルチプレクサの半分プラス１だけを有することができる。
【００５１】
本発明の原理が特定の装置に関係して上記で説明したが、この説明は、単に例示してのみで、本発明の範囲を限定しないものとして行われていることが明らかに理解される筈である。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明に従ったローテータ・システムのブロック図である。
【図２】図２は、本発明の別の実施形態に従ったローテータ・システムのブロック図である。
【図３】図３は、図２のデコーダとローテータ及びマスキング・モジュールの一部を形成する回路をブロック図形式で示す。
【図４】図４は、図３の回路３００をより詳細に示す回路４００をブロック図形式で示す。
【図１】
2009512090.tif 000003
【図２】
2009512090.tif 000004
【図３】
2009512090.tif 000005
【図４】
2009512090.tif 000006
【国際調査報告】
2009512090.tif 000007