(57)【要約】【課題】シフト演算器において、タイミング上のペナルティを抑えながら回路規模を比較的小さくし、電力を比較的小さくすることを目的とする。【解決手段】入力シフト量のうち３ビット以下のシフト量に基づいてデータ幅がＮビットの入力データに対して左右選択信号に応じた０〜３ビットの右シフトを実行する右シフタ及び左シフトを実行する左シフタを有するシフタ部と、入力シフト量のうち４ビット以上のシフト量に基づいて前記シフタ部の出力データに対して前記左右選択信号に応じた０〜Ｎ−４ビットの右ローテートシフト又は左ローテートシフトを実行するローテータ部と、マスク信号に基づいて前記ローテータ部の出力データに対して４ビット単位のマスク処理を施すマスク回路を備えるようにする。【選択図】図１４
2011013920.tif 000002
【特許請求の範囲】
【請求項１】
入力シフト量のうち３ビット以下のシフト量に基づいて、データ幅がＮビットの入力データに対して左右選択信号に応じた０〜３ビットの右シフトを実行する右シフタ及び左シフトを実行する左シフタを有する第１のシフタ手段と、
入力シフト量のうち４ビット以上のシフト量に基づいて、前記シフタ手段の出力データに対して前記左右選択信号に応じた０〜Ｎ−４ビットの右ローテートシフト又は左ローテートシフトを実行するローテータ手段と、
マスク信号に基づいて、前記ローテータ手段の出力データに対して４ビット単位のマスク処理を施すマスク手段を備えた、シフト演算器。
【請求項２】
前記ローテータ手段は、前記４ビット以上のシフト量に基づいて前記マスク信号を生成する、請求項１記載のシフト演算器。
【請求項３】
算術右シフトを実行する場合に４ビット以上の右シフトの符号の拡張を前記マスク処理と並行して行う手段を更に備えた、請求項１又は２記載のシフト演算器。
【請求項４】
前記マスク手段は、データがパリティで保護されている場合にパリティに対してマスク処理を施す、請求項１乃至３のいずれか１項記載のシフト演算器。
【請求項５】
Ｎ＝６４であり、
前記ローテータ手段は、
０，４，８，１２ビットのデータの右ローテートシフトを実行するローテータを有する第２のシフタ手段と、
０，１６，３２，４８ビットのデータの右ローテートシフトを実行するローテータを有する第３のシフタ手段を有する、請求項１乃至４のいずれか１項記載のシフト演算器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シフト演算器に係る。
【背景技術】
【０００２】
シフト演算器は、論理シフトや算術シフトを行う際に使用される。例えば入出力データ幅が６４ビットでシフト量が０〜６３ビットのシフト演算器は、右シフト機能と左シフト機能を有し、論理シフトと算術シフトを実行する。図１は０〜６３ビットの論理右シフト、図２は０〜６３ビットの算術右シフト、図３は０〜６３ビットの論理左シフトを説明する図である。図１〜図３中、ＳＡはシフト量を示し、０≦ＳＡ≦６３である。算術右シフトと論理右シフトの違いは、符号ＳＩＧＮの拡張の有無である。算術右シフトの場合、シフトインする部分に「０」ではなく符号ＳＩＧＮ（＝入力データの左端ビット）を設定する。図２中、Ｓは符号ＳＩＧＮのビット（ビット６３）を示す。又、シフト対象としてパリティで保護される場合も想定しているため、入出力データとしてはバイト（８ビット）パリティを想定している。パリティ保護に関しては、パリティの伝播を前提としているので、入力データと入力パリティが不一致の場合には、シフト後のどこかの出力データと出力パリティも不一致である必要がある。
【０００３】
図４は、従来の６４ビットの左右シフタの構成の一例を示す図である。図４に示す左右シフタ１は、６４ビットの右シフタ２、６４ビットの左シフタ３、及びセレクタ４を有する。シフタ２，３には、６４ビットの入力データと、６ビットのシフト量が入力される。セレクタ４は、シフタ２，３のうち一方のシフト結果を選択信号に応じて選択し、６４ビットの出力データとして出力する。
【０００４】
図５は、右シフタ２の構成の一例を示す図である。右シフタ２は、２ビットのシフト量が入力される右シフタ２−１，２−２，２−３を有する。右シフタ２−１は０，１，２，３ビットの幅でシフトし、右シフタ２−２は０，４，８，１２ビットの幅でシフトし、右シフタ２−３は０，１６，３２，４８ビットの幅でシフトする。
【０００５】
図６は、左シフタ３の構成の一例を示す図である。左シフタ３は、２ビットのシフト量が入力される左シフタ３−１，３−２，３−３を有する。左シフタ３−１は０，１，２，３ビットの幅でシフトし、左シフタ３−２は０，４，８，１２ビットの幅でシフトし、左シフタ３−３は０，１６，３２，４８ビットの幅でシフトする。
【０００６】
尚、シフタ２，３は、回転シフタ（ローテータ（Rotator））により形成することも可能である。
【０００７】
図７は、２τ周期で動作する左右シフタの構成の一例を示す図である。図７に示す左右シフタ１１は、例えば動作周波数の比較的高いマイクロプロセッサ等で使用される。左右シフタ１１は、基本的には図４のシフタ１と同様の動作原理を用いるものであるが、３段で形成されたシフタを２分割し、２分割されたシフタの間にラッチ回路を設けている。
【０００８】
左右シフタ１１は、１バイトのパリティを４ビットのパリティに変換する変換回路１２、第１〜第３の右シフタ１３−１〜１３−３、第１〜第３の左シフタ１４−１〜１４−３、セレクタ１５、６４＋１６ビットのラッチ回路１６、４ビットのパリティを１バイトのパリティに変換する変換回路１７、セレクタ１８、１ビットのラッチ回路１９，２０、及び４ビットのラッチ回路２１を有する。図７において、ＳＲＡは算術右シフトを示す信号、Ｄ［６３：０］は入力データ、ＤＰ［７：０］は入力パリティ、ＳＥＬＲは左右選択信号、ＳＡはシフト量を示す信号、ＲＳＧＮは符号ＳＩＧＮのビットを示す。ＳＡ２は２τ目のシフト量を示し、シフト量ＳＡの上位４ビットをラッチ回路２１でラッチしたものであり、ＲＳＧＮ２は１τ目で生成した符号ＳＩＧＮのビットＲＳＧＮをラッチ回路１９でラッチしたビットを示す。
【０００９】
ラッチ回路１６のビット数を少なくするために、第１のシフタ１３−１，１４−１で１τ目のシフトが終わった時点で左右選択信号ＳＥＬＲに応答して第１のシフタ１３−１，１４−１のシフト結果をセレクタ１５で選択してラッチ回路１６に格納する。このように、１τ目には第１のシフタ１３−１，１４−１を用いて０，１，２，３ビットの右シフト及び左シフトを行う。又、２τ目には第２及び第３のシフタ１３−２，１４−２，１３−３，１４−３を用いて４ビット単位で０〜６０ビットの右シフト及び左シフトを行う。つまり、２τ目には第２のシフタ１３−２，１４−２により０，４，８，１２ビットの右シフト及び左シフトを行い、第３のシフタ１３−３，１４−３により０，１６，３２，４８ビットの右シフト及び左シフトを行い、左右選択信号ＳＥＬＲに応答して第３のシフタ１３−３，１４−３のシフト結果をセレクタ１８で選択して出力する。
【００１０】
左右選択信号ＳＥＬＲ、算術右シフト信号ＳＲＡ及び符号ＳＩＧＮのビットＲＳＧＮは、シフト条件に応じて表１のような関係を満足する。
【００１１】
【表１】
2011013920.tif 000003
【００１２】
図８及び図９は、第１のシフタ１３−１及び１４−１の構成の一例を示す回路図である。説明の便宜上、図８及び図９は、入力データＤに関係する信号のみを示す。第１のシフタ１３−１，１４−１は、図８に示す如く接続された２個のインバータ１３１及び４個のアンド回路１３２を有する回路部により２ビットのシフト量ＳＡ［１：０］から選択信号Ｓ０〜Ｓ３を生成する。又、第１のシフタ１３−１には、図９（ａ）に示す如き４個のアンド回路１３３と１個のオア回路１３４を有するアンド・オア回路を使った４対１セレクタが６４個設けられており、第１のシフタ１４−１には、図９（ｂ）に示す如き４個のアンド回路１４３と１個のオア回路１４４を有するアンド・オア回路を使った４対１セレクタが６４個設けられている。ＲＲは第１の右シフタ１３−１による論理又は算術右シフト（０，１，２，３ビットの右シフト）の結果を示し、ＬＲは第１の左シフタ１４−１による論理左シフト（０，１，２，３ビットの左シフト）の結果を示す。
【００１３】
図１０及び図１１は、第２のシフタ１３−２及び１４−２の構成の一例を示す回路図である。説明の便宜上、図１０及び図１１は、ラッチ回路１６の出力データＳＤに関係する信号のみを示す。第２のシフタ１３−２，１４−２は、図１０に示す如く接続された２個のインバータ１３５及び４個のアンド回路１３６を有する回路部により２ビットのシフト量ＳＡ２［１：０］から選択信号Ｓ０，Ｓ４，Ｓ８，Ｓ１２を生成する。又、第２のシフタ１３−２には、図１１（ａ）に示す如き４個のアンド回路１３７と１個のオア回路１３８を有するアンド・オア回路を使った４対１セレクタが６４個設けられており、第２のシフタ１４−２には、図１１（ｂ）に示す如き４個のアンド回路１４７と１個のオア回路１４８を有するアンド・オア回路を使った４対１セレクタが６４個設けられている。Ｒ２Ｄは第２の右シフタ１３−２による論理又は算術右シフト（０，４，８，１２ビットの右シフト）の結果を示し、Ｌ２Ｄは第２の左シフタ１４−２による論理左シフト（０，４，８，１２ビットの左シフト）の結果を示す。
【００１４】
図１２及び図１３は、第３のシフタ１３−３及び１４−３の構成の一例を示す回路図である。説明の便宜上、図１２及び図１３は、第２のシフタ１３−２，１４−２の出力データＲ２Ｄ，Ｌ２Ｄに関係する信号のみを示す。第３のシフタ１３−３，１４−３は、図１２に示す如く接続された２個のインバータ１３９及び４個のアンド回路１４０を有する回路部により２ビットのシフト量ＳＡ２［３：２］から選択信号Ｓ０，Ｓ１６，Ｓ３２，Ｓ４８を生成する。又、第３のシフタ１３−３には、図１３（ａ）に示す如き４個のアンド回路１４１と１個のオア回路１４２を有するアンド・オア回路を使った４対１セレクタが６４個設けられており、第３のシフタ１４−３には、図１３（ｂ）に示す如き４個のアンド回路１５１と１個のオア回路１５２を有するアンド・オア回路を使った４対１セレクタが６４個設けられている。Ｒ３Ｄは第３の右シフタ１３−３による論理又は算術右シフト（０，１６，３２，４８ビットの右シフト）の結果を示し、Ｌ３Ｄは第３の左シフタ１４−３による論理左シフト（０，１６，３２，４８ビットの左シフト）の結果を示す。
【００１５】
パリティについては、１τ目には０，１，２，３ビットの右シフト及び左シフトを実行した場合の４ビットパリティを夫々生成しておき、図９にあるようなアンド・オア回路を使った４対１セレクタで選択することでシフトしたデータに対応する４ビットパリティを得る。ここで、任意の１バイトについての右シフト４ビットパリティＲＰ［１：０］及び左シフト４ビットパリティＬＰ［１：０］は、データＤ［７：０］とバイトパリティＤＰ（Ｄ［７：０］の排他的論理和（ＥＯＲ：Exclusive-OR））から次のように求められる。
【００１６】
右シフトの場合の右シフト４ビットパリティＲＰ［１：０］：
【００１７】
【数１】
2011013920.tif 000004
【００１８】
左シフトの場合の左シフト４ビットパリティＬＰ［１：０］：
【００１９】
【数２】
2011013920.tif 000005
【００２０】
ここで、０〜３ビットのシフト量はＳＡ［１：０］、対象となる１バイトより上位側１バイトのデータはＤＨ［７：０］、下位側１バイトのデータはＤＬ［７：０］で示す。
又、２τ目には、０，４ビットの右シフト及び左シフトを実行した場合のバイトパリティをラッチ回路１６からの４ビットパリティから生成し、第２及び第３のシフタ１３−２，１３−３，１４−２，１４−３によりシフトすることでシフトしたデータに対応したバイトパリティを得る。
【００２１】
先ず、データの０，４，８，１２ビットの右シフトに対応するパリティのシフトは、０ビットの右シフトの時のバイトパリティをＲ０ＢＰ［７：０］、４ビットの右シフトの時のバイトパリティをＲ４ＢＰ［７：０］とすると、次のように求められる。
【００２２】
【数３】
2011013920.tif 000006
【００２３】
８ビットの右シフトの時のバイトパリティは０，Ｒ０ＢＰ［７：１］の８ビットに等しく、１２ビットの右シフトの時のバイトパリティは０，Ｒ４ＢＰ［７：１］の８ビットに等しいので、第２の右シフタ１３−２はＲ０ＢＰ［７：０］とＲ４ＢＰ［７：０］を選択すれば良い。
【００２４】
又、データの０，１６，３２，４８ビットの右シフトに対応するパリティのシフトは、バイト（８ビット）パリティのシフトであるため、８ビットのデータを０，２，４，６ビットシフトするのと同じである。第３の右シフタ１３−３でのシフト後のパリティをＲＢＰ［７：０］とすると、例えばＲＢＰ［２：１］は表２のようになる。
【００２５】
【表２】
2011013920.tif 000007
【００２６】
次に、データの０，４，８，１２ビットの左シフトに対応するパリティのシフトは、０ビットの左シフトの時のバイトパリティをＬ０ＢＰ［７：０］、４ビットの左シフトの時のバイトパリティをＬ４ＢＰ［７：０］とすると、次のように求められる。
【００２７】
【数４】
2011013920.tif 000008
【００２８】
８ビットの左シフトの時のバイトパリティはＬ０ＢＰ［６：０］，０の８ビットに等しく、１２ビットの左シフトの時のバイトパリティはＬ４ＢＰ［６：０］，０の８ビットに等しいので、第２の左シフタ１４−２はＬ０ＢＰ［７：０］とＬ４ＢＰ［７：０］を選択すれば良い。
【００２９】
又、データの０，１６，３２，４８ビットの左シフトに対応するパリティのシフトは、バイト（８ビット）パリティのシフトであるため、８ビットのデータを０，２，４，６ビットシフトするのと同じである。第３の左シフタ１４−３でのシフト後のパリティをＬＢＰ［７：０］とすると、例えばＬＢＰ［７：６］は表３のようになる。
【００３０】
【表３】
2011013920.tif 000009
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開昭６０−２３３７２９号公報
【特許文献２】特開昭６２−１１５５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００３２】
従来のシフト演算器は、右シフト用の回路及び左シフト用の回路が複数段設けられているため、回路規模が大きくなると共に、スタンバイ（又は、スタティック）電力が大きくなるという問題があった。更に、右シフト用の回路及び左シフト用の回路を持つ場合に右シフト又は左シフトの結果しか使用しない場合は使用しない側の回路動作によりアクティブ（又は、ダイナミック）電力を無駄に消費するという問題があった。又、特許文献１に記載されたようにローテータで構成する方法もあるが、入力から出力までの論理段数が多く、タイミング上のペナルティが大きくなるという問題があった。
【００３３】
そこで、本発明は、タイミング上のペナルティを抑えながら、回路規模が比較的小さく、スタンバイ（又は、スタティック）電力及びアクティブ（又は、ダイナミック）電力が比較的小さいシフト演算器を提供することを目的とする。
【課題を解決するための手段】
【００３４】
本発明の一観点によれば、入力シフト量のうち３ビット以下のシフト量に基づいて、データ幅がＮビットの入力データに対して左右選択信号に応じた０〜３ビットの右シフトを実行する右シフタ及び左シフトを実行する左シフタを有する第１のシフタ手段と、入力シフト量のうち４ビット以上のシフト量に基づいて、前記シフタ手段の出力データに対して前記左右選択信号に応じた０〜Ｎ−４ビットの右ローテートシフト又は左ローテートシフトを実行するローテータ手段と、マスク信号に基づいて前記ローテータ手段の出力データに対して４ビット単位のマスク処理を施すマスク手段を備えたシフト演算器が提供される。
【発明の効果】
【００３５】
開示のシフト演算器によれば、タイミング上のペナルティを抑えながら、回路規模を比較的小さくし、スタンバイ（又は、スタティック）電力及びアクティブ（又は、ダイナミック）電力を比較的小さくすることが可能となる。
【図面の簡単な説明】
【００３６】
【図１】０〜６３ビットの論理右シフトを説明する図である。
【図２】０〜６３ビットの算術右シフトを説明する図である。
【図３】０〜６３ビットの論理左シフトを説明する図である。
【図４】従来の６４ビットの左右シフタの構成の一例を示す図である。
【図５】右シフタの構成の一例を示す図である。
【図６】左シフタの構成の一例を示す図である。
【図７】２τ周期で動作する左右シフタの構成の一例を示す図である。
【図８】第１のシフタの一部の構成の一例を示す回路図である。
【図９】第１のシフタの一部の構成の一例を示す回路図である。
【図１０】第２のシフタの一部の構成の一例を示す回路図である。
【図１１】第２のシフタの一部の構成の一例を示す回路図である。
【図１２】第３のシフタの一部の構成の一例を示す回路図である。
【図１３】第３のシフタの一部の構成の一例を示す回路図である。
【図１４】本発明の第１実施例におけるシフト演算器を示す図である。
【図１５】第２のシフタを形成するローテータの一部の構成の一例を示す回路図である。
【図１６】第３のシフタを形成するローテータの一部の構成の一例を示す回路図である。
【図１７】マスク回路内の選択信号生成回路の構成の一例を示す回路図である。
【図１８】マスク回路内のマスク信号生成回路の一部の構成の一例を示す回路図である。
【図１９】マスク回路内のマスク信号生成回路の一部の構成の一例を示す回路図である。
【図２０】マスク回路内のデータ出力選択回路の構成の一例を示す回路図である。
【図２１】マスク回路内のパリティ出力選択回路の構成の一例を示す回路図である。
【図２２】０〜１２７ビットの論理右シフトを説明する図である。
【図２３】０〜１２７ビットの算術右シフトを説明する図である。
【図２４】０〜１２７ビットの論理左シフトを説明する図である。
【図２５】本発明の第２実施例におけるシフト演算器を示す図である。
【図２６】第４のシフタを形成するローテータの一部の構成の一例を示す回路図である。
【発明を実施するための形態】
【００３７】
開示のシフト演算器は、入力シフト量のうち３ビット以下のシフト量に基づいて、データ幅がＮビットの入力データに対して左右選択信号に応じた０〜３ビットの右シフトを実行する右シフタ及び左シフトを実行する左シフタと、入力シフト量のうち４ビット以上のシフト量に基づいて、右シフタ又は左シフタの出力データに対して左右選択信号に応じた０〜Ｎ−４ビットの右ローテートシフト又は左ローテートシフトを実行するローテータ部と、マスク信号に基づいてローテータ部の出力データに対して４ビット単位のマスク処理を施すマスク回路を有する。
【００３８】
開示のシフト演算器回路は、規模が比較的小さく、スタンバイ（又は、スタティック）電力及びアクティブ（又は、ダイナミック）電力が比較的小さい。
【００３９】
以下に、本発明のシフト演算器の各実施例を図面と共に説明する。
【実施例】
【００４０】
図１４は、本発明の第１実施例におけるシフト演算器を示す図である。図１４中、図７と同一部分には同一符号を付し、その説明は省略する。
【００４１】
図１４に示すシフト演算器３１は、１バイトのパリティを４ビットのパリティに変換する変換回路１２、第１の右シフタ１３−１、第１の左シフタ１４−１、セレクタ１５、６４＋１６ビットのラッチ回路１６、４ビットのパリティを１バイトのパリティに変換する変換回路３７、第２のシフタを形成するローテータ３２、第３のシフタを形成するローテータ３３、マスク回路３４、１ビットのラッチ回路１９，２０、４ビットのラッチ回路２１、演算回路３５、及びセレクタ３６を有する。図１４において、ＳＲＡは算術右シフトを示す信号、Ｄ［６３：０］は入力データ、ＤＰ［７：０］は入力パリティ、ＳＥＬＲは左右選択信号、ＳＡはシフト量を示す信号、ＲＳＧＮは符号ＳＩＧＮのビット（即ち、符号を示す信号）を示す。ＳＡ２は２τ目のシフト量を示し、１τ目に入力されるシフト量ＳＡの上位４ビットから演算回路３５、セレクタ３６により生成したものをラッチ回路２１でラッチしたものであり、ＲＳＧＮ２は１τ目で生成した符号ＳＩＧＮのビットＲＳＧＮをラッチ回路１９でラッチしたビットを示す。又、ＳＤ［６３：０］はラッチ回路１６の出力データ、ＳＤＰ［１５：０］はラッチ回路１６の出力パリティを示す。
【００４２】
本実施例では、ローテータ３３の出力を２τ目のシフト量ＳＡ２から生成したマスク信号に応じてマスク回路３４でマスクすることで、６４ビットのデータの右シフト及び左シフトを実行する。シフト量をＳＡ［５：０］、２τ目のシフト量ＳＡ２をＳＡ２［３：０］とすると、図７の従来例の場合はＳＡ２［３：０］＝ＳＡ［５：２］であるが、本実施例では次のように定義して演算回路３５、セレクタ３６及びラッチ回路２１により実現する。
【００４３】
ＳＥＬＲ＝０  ：  ＳＡ２［３：０］＝１６（２進数で１００００）−ＳＡ［５：２］
ＳＥＬＲ＝１  ：  ＳＡ２［３：０］＝ＳＡ［５：２］
【００４４】
ローテータ３２，３３を２段組み合わせることで、４ビット単位で０〜６０ビットのデータの右ローテートシフトを実行する。ローテータ３２は、０，４，８，１２ビットのデータの右ローテートシフトを実行し、ローテータ３３は、０，１６，３２，４８ビットのデータの右ローテートシフトを実行する。
【００４５】
図１５は、ローテータ３２の一部の構成の一例を示す回路図である。説明の便宜上、図１５は、ラッチ回路１６の出力データＳＤに関係する信号のみを示す。ローテータ３２は、図１５に示す如く接続された２個のインバータ３２１、４個のアンド回路３２２、及び６４個の4対1セレクタ３２５を有する。各４対１セレクタ３２５は、４個のアンド回路３２３と１個のオア回路３２４を有するアンド・オア回路により実現されている。２個のインバータ３２１及び４個のアンド回路３２２を有する回路部により２ビットのシフト量ＳＡ２［１：０］から選択信号Ｓ０，Ｓ４，Ｓ８，Ｓ１２を生成する。選択信号Ｓ０，Ｓ４，Ｓ８，Ｓ１２は、夫々０，４，８，１２ビットのローテートシフトを示す。尚、図１４のＲ２Ｄ，Ｒ２Ｐはローテータ３２によるデータ及びパリティに対する右ローテートシフト（０，４，８，１２ビットの右ローテートシフト）の結果を示す。
【００４６】
図１６は、ローテータ３３の一部の構成の一例を示す回路図である。説明の便宜上、図１６は、ローテータ３２の出力データＲ２Ｄに関係する信号のみを示す。Ｒ２Ｄ［６３：０］は、ローテータ３２における０，４，８，１２ビットの右ローテートシフトの結果に対応する。ローテータ３３は、図１６に示す如く接続された２個のインバータ３３１、４個のアンド回路３３２、及び６４個の４対１セレクタ３３５を有する。各４対１セレクタ３３５は、４個のアンド回路３３３と１個のオア回路３３４を有するアンド・オア回路により実現されている。２個のインバータ３３１及び４個のアンド回路３３２を有する回路部により２ビットのシフト量ＳＡ２［３：２］から選択信号Ｓ０，Ｓ１６，Ｓ３２，Ｓ４８を生成する。選択信号Ｓ０，Ｓ１６，Ｓ３２，Ｓ４８は、夫々０，１６，３２，４８ビットのローテートシフトを示す。尚、図１４のＲ３Ｄ，Ｒ３Ｐはローテータ３３によるデータ及びパリティに対する右ローテートシフト（０，１６，３２，４８ビットの右ローテートシフト）の結果を示す。
【００４７】
上記の如く４ビット単位のシフトが実行されるので、マスク回路３４は４ビット毎にマスク処理を実行すれば良い。本実施例では、入力データＤのデータ幅は６４ビットなので、１６個のマスク（０）〜（１５）を生成する。右ローテートシフトでマスクが０になる条件は、次のようになる。このような条件を満足するように論理回路を形成することで、マスク回路３４によるマスク処理が可能となる。
【００４８】
【数５】
2011013920.tif 000010
【００４９】
次に、右ローテートシフトでマスクが１となる条件で作成したマスク回路３４の構成の一例を、図１７〜図１９と共に説明する。図１７は、マスク回路３４内の選択信号生成回路の構成の一例を示す回路図であり、図１８及び図１９は、マスク回路３４内のマスク信号生成回路の一部の構成の一例を示す回路図である。
【００５０】
図１７において、第１の選択信号生成回路は、アンド回路３４１、バッファ回路３４２、及びオア回路３４３を有し、２ビットのシフト量ＳＡ２［３：２］から選択信号Ｓ４８，Ｓ３２，Ｓ１６を生成する。選択信号Ｓ４８，Ｓ３２，Ｓ１６は、夫々４８ビットのシフト、３２ビット以上のシフト、及び１６ビット以上のシフトを示す。又、第２の選択信号生成回路は、アンド回路３４１、バッファ回路３４２、及びオア回路３４３を有し、２ビットのシフト量ＳＡ２［１：０］から選択信号Ｓ１２，Ｓ８，Ｓ４を生成する。選択信号Ｓ１２，Ｓ８，Ｓ４は、夫々１２ビットのシフト、８ビット以上のシフト、及び４ビット以上のシフトを示す。尚、選択信号Ｓ４８，Ｓ３２，Ｓ１２，Ｓ８，Ｓ４はマスク回路３４用の信号であり、図１５及び図１６と共に説明した選択信号とは異なることは言うまでもない。
【００５１】
図１８は、マスク（１５）〜マスク（８）を生成する回路ブロックＢＫ１５〜ＢＫ８を示す。回路ブロックＢＫ１５は２個のインバータ及び１個のアンド回路を有し、選択信号Ｓ１６，Ｓ４に基づいてマスク（１５）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（１４）は２個のインバータ及び１個のアンド回路を有し、選択信号Ｓ１６，Ｓ８に基づいてマスク（１４）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（１３）は２個のインバータ及び１個のアンド回路を有し、選択信号Ｓ１６，Ｓ１２に基づいてマスク（１３）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（１２）は、１個のインバータを有し、選択信号Ｓ１６に基づいてマスク（１２）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（１１）は２個のインバータ及び２個のナンド回路を有し、選択信号Ｓ１６，Ｓ３２，Ｓ４に基づいてマスク（１１）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（１０）は２個のインバータ及び２個のナンド回路を有し、選択信号Ｓ１６，Ｓ３２，Ｓ８に基づいてマスク（１０）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（９）は２個のインバータ及び２個のナンド回路を有し、選択信号Ｓ１６，Ｓ３２，Ｓ１２に基づいてマスク（９）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（８）は１個のインバータを有し、選択信号Ｓ３２に基づいてマスク（８）に相当するマスク信号ｍａｓｋを生成する。
【００５２】
図１９は、マスク（７）〜マスク（１）を生成する回路ブロックＢＫ７〜ＢＫ１を示す。回路ブロックＢＫ（７）は２個のインバータ及び２個のナンド回路を有し、選択信号Ｓ３２，Ｓ４８，Ｓ４に基づいてマスク（７）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（６）は２個のインバータ及び２個のナンド回路を有し、選択信号Ｓ３２，Ｓ４８，Ｓ８に基づいてマスク（６）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（５）は２個のインバータ及び２個のナンド回路を有し、選択信号Ｓ３２，Ｓ４８，Ｓ１２に基づいてマスク（５）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（４）は１個のインバータを有し、選択信号Ｓ４８に基づいてマスク（４）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（３）は１個のナンド回路を有し、選択信号Ｓ４８，Ｓ４に基づいてマスク（３）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（２）は１個のナンド回路を有し、選択信号Ｓ４８，Ｓ８に基づいてマスク（２）に相当するマスク信号ｍａｓｋを生成する。回路ブロックＢＫ（１）は１個のナンド回路を有し、選択信号Ｓ４８，Ｓ１２に基づいてマスク（１）に相当するマスク信号ｍａｓｋを生成する。
【００５３】
次に、左ローテートシフトでマスクが０になる条件について説明する。本実施例ではローテータ３２，３３を用いているので、左ローテートシフトでマスクが０になる条件は、右ローテートシフトでマスクが０になる条件の反転であれば良い。ただし、２τ目のシフト量ＳＡ２は（１６−ＳＡ［５：２］）の下位４ビットの結果であるため、ＳＡ２［３：０］＝００００の時の反転は不要である。つまり、左ローテートシフトのマスクは、ＳＡ２［３：０］＝００００の時を除き右ローテートシフトのマスクの反転から生成することができる。
【００５４】
マスク処理時に符号拡張をサポートするために、データ出力は表４のように選択する。ＭＡＳＫは、ローテータ３３の出力を右シフト又は左シフトの結果とするためのマスク信号、ＳＥＬＲは左右選択信号、ＲＳＧＮ２は１τ目で生成した符号ＳＩＧＮのビットＲＳＧＮをラッチ回路１９でラッチしたビット、即ち、算術右シフトを示す信号ＳＲＡ＝１の時の入力ビット６３）を示す。
【００５５】
【表４】
2011013920.tif 000011
【００５６】
図２０及び図２１は、マスク回路３４内の選択回路の構成の一例を示す回路図である。図２０はデータ出力選択回路を示し、図２１はパリティ出力選択回路を示す。
【００５７】
図２０に示すデータ出力選択回路は、１個のアンド回路３４４、１個のインバータ３４５、及び４個の２対１セレクタ３４６を有する。各２対１セレクタ回路３４６は、２個のアンド回路と１個のオア回路を有するアンド・オア回路により実現されている。このデータ出力選択回路は、ローテータ３３による右ローテートシフトの結果である４ビット分のデータＲ３Ｄに対する選択処理を行う。
【００５８】
図２１に示すパリティ出力選択回路は、１個のオア回路３４７及び１個のアンド回路３４８を有する。このパリティ出力選択回路も、上記データ出力選択回路と同様に、ローテータ３３による右ローテートシフトの結果である１ビット分のパリティＲ３Ｐに対する選択処理を行う。
【００５９】
ここで、ローテータ３２，３３におけるパリティの右ローテートシフトについて説明するが、基本的な考え方はデータの場合と同じである。
【００６０】
先ず、ローテータ３２で実施するデータの０，４，８，１２ビットの右ローテートシフトに対応するパリティのシフトについて説明する。この場合、０ビットの右ローテートシフト時のバイトパリティをＲ０ＢＰ［７：０］、４ビットの右ローテートシフト時のバイトパリティをＲ４ＢＰ［７：０］とすると、パリティＲ０ＢＰ［７］〜Ｒ０ＢＰ［０］及びパリティＲ４ＢＰ［７］〜Ｒ４ＢＰ［０］はラッチ回路１６の出力パリティＳＤＰ［１５：０］により次のように表される。
【００６１】
【数６】
2011013920.tif 000012
【００６２】
８ビットの右ローテートシフト時のパリティはＲ０ＢＰ［０］，Ｒ０ＢＰ［７：１］の８ビットと等しく、１２ビットの右ローテートシフト時のパリティはＲ４ＢＰ［０］，Ｒ４ＢＰ［７：１］の８ビットと等しいので、バイトパリティＲ０ＢＰ［７：０］とバイトパリティＲ４ＢＰ［７：０］を図１５に示す４対１セレクタ３２５と同様のセレクタで選択すれば良い。尚、ＳＤＰ［１５：０］からＲ０ＢＰ［７：０］、Ｒ４ＢＰ［７：０］への変換は図１４の変換回路３７で行われる。
【００６３】
次に、ローテータ３３で実施するデータの０，１６，３２，４８ビットの右ローテートシフトに対応するパリティのシフトについて説明する。この場合、バイト（８ビット）パリティのシフトであるため、８ビットのデータに対して０，２，４，６ビットの右ローテートシフトを実行するのと同じである。シフト後のパリティをＲＢＰ［７：０］とすると、例えばパリティＲＢＰ［２：１］は表５のようになる。
【００６４】
【表５】
2011013920.tif 000013
【００６５】
ローテータ３３のローテートシフト結果から右シフト又は左シフトの結果を得るマスク処理では、出力パリティがバイトパリティであるためバイト単位のマスクを生成する必要がある。そこで、ＢＭＡＳＫ［０］＝ＭＡＳＫ［１］｜ＭＡＳＫ［０］のように４ビット単位のマスクのオア演算（論理和）によりマスクを生成する。しかし、ローテータ３３が４ビット単位で形成されているため、４ビット単位のマスクで見た時の一方の４ビットはＭＡＳＫ＝０、他方の４ビットはＭＡＳＫ＝１という状況が境界条件として発生し得る。例えば、２０ビットの右シフトの場合、４ビット単位のマスクと８ビット単位のマスクは次のようになり、「？」の部分が上記境界条件として発生し得る状況である。
【００６６】
４ビット単位のマスク：  ０００００１１１１１１１１１１１
８ビット単位のマスク：   ０  ０  ？  １  １  １  １  １
８ビットマスクとしては、オア演算により「１」とすることで、バイトパリティの生成時に境界条件を考慮すれば良い。つまり、境界部分のパリティを４ビットが「０」として生成しておく。境界部分となるのは、４ビット単位のローテータ３３の先頭のパリティである。そこで、パリティＲ４ＢＰ［７］を前述の式（数６）ではＲ４ＢＰ［７］＝ＳＤＰ［０］＾ＳＤＰ［１５］の排他的論理和で求めていたところを、Ｒ４ＢＰ［７］＝ＳＥＬＲ？（０＾ＳＤＰ［１５］）：（ＳＤＰ［０］＾０）、即ち、次のように求めれば良い。尚、「＾」は排他的論理和を表す。
【００６７】
ＳＥＬＲ＝１の時：  Ｒ４ＢＰ［７］＝ＳＤＰ［１５］
ＳＥＬＲ＝０の時：  Ｒ４ＢＰ［７］＝ＳＤＰ［０］
【００６８】
本実施例では、３ビット以下のシフト量に基づいてデータ幅がＮ（＝６４）ビットの入力データに対して左右選択信号に応じた０〜３ビットの右シフトを実行する右シフタ及び左シフトを実行する左シフタを有する第１のシフタ手段がシフタ１３−１，１４−１により形成される。又、４ビット以上のシフト量に基づいて前記シフタ手段の出力データに対して前記左右選択信号に応じた０〜Ｎ−４ビットの右ローテートシフト又は左ローテートシフトを実行するローテータ手段がローテータ３２，３３により形成される。更に、マスク信号に基づいて前記ローテータ手段の出力データに対して４ビット単位のマスク処理を施すマスク手段がマスク回路３４により形成される。
【００６９】
このように、本実施例では、２τ目のシフトを右シフトベースのローテータ３２，３３及びマスク回路３４のマスク処理で実現することで、図７の従来例では必要である左シフタ１４−２，１４−３及びセレクタ１８が不要となると共に、変換回路１７にある左シフタ１４−２，１４−３に対応する回路も削減できる。代わりに必要となるマスク回路３４においてマスク処理を実行する回路はセレクタ等の比較的簡単な回路で形成可能であり、比較的少ないトランジスタ数で実現可能である。このため、シフト演算器３１の回路規模を比較的小さくし、実装面積を比較的小さくすることができると共に、スタンバイ（又は、スタティック）電力を比較的小さくすることが可能となる。
【００７０】
尚、２τ目のシフトをローテータ３２，３３で実行することで、一部の配線長が多少増加する。しかし、本実施例において、２τ目のデータの入力やシフト量の入力からシフト結果の出力までの論理段数は、図７の従来例の場合と殆ど変わらない。又、従来例では２τ目の右シフトと左シフトを別々に実行しているが、本実施例ではローテータ３２，３３により実行するため、総配線長で見ると従来例より減少させることができるので、その分アクティブ（又は、ダイナミック）電力を削減することができる。アクティブ電力は、容量負荷の充放電が主な要因で配線長が長くなると大きくなる。更に、総配線長が従来例より減少するので、信号遅延の問題も軽減される。
【００７１】
次に、本発明の第２実施例におけるシフト演算器について説明する。上記第１実施例では入力データのデータ幅が６４ビットであるが、本実施例では入力データのデータ幅が１２８ビットである。
【００７２】
シフト演算器は、論理シフトや算術シフトを行う際に使用される。例えば入出力データ幅が１２８ビットでシフト量が０〜１２７ビットのシフト演算器は、右シフト機能と左シフト機能を有し、論理シフトと算術シフトを実行する。図２２は０〜１２７ビットの論理右シフト、図２３は０〜１２７ビットの算術右シフト、図２４は０〜１２７ビットの論理左シフトを説明する図である。図２２〜図２４中、ＳＡはシフト量を示し、０≦ＳＡ≦１２７である。算術右シフトと論理右シフトの違いは、符号ＳＩＧＮの拡張の有無である。算術右シフトの場合、シフトインする部分に「０」ではなく符号ＳＩＧＮ（＝入力データの左端ビット）を設定する。図２３中、Ｓは符号ＳＩＧＮのビット（ビット１２７）を示す。又、シフト対象としてパリティで保護される場合も想定しているため、入出力データとしてはバイト（８ビット）パリティを想定している。パリティ保護に関しては、パリティの伝播を前提としているので、入力データと入力パリティが不一致の場合には、シフト後のどこかの出力データと出力パリティも不一致である必要がある。
【００７３】
図２５は、本発明の第２実施例におけるシフト演算器を示す図である。図２５中、図１４と実質的に同じ部分には同一符号に添え字Ａを付し、その説明は省略する。シフト演算器３１Ａの各部は、図１４に示すシフト演算器３１の対応する部分とビット数が異なるが、各部の基本的動作はシフト演算器３１の対応する部分と同様である。又、図２５において、ＳＤ［１２７：０］はラッチ回路１６Ａの出力データ、ＳＤＰ［３１：０］はラッチ回路１６Ａの出力パリティ、ＳＡ２は２τ目のシフト量を示し、ＲＳＧＮ２は１τ目で生成した符号ＳＩＧＮのビットＲＳＧＮをラッチ回路１９Ａでラッチしたビットを示す。
【００７４】
本実施例では、ローテータ４３４の出力を２τ目のシフト量ＳＡ２から生成したマスク信号に応じてマスク回路３４Ａでマスクすることで、１２８ビットのデータの右シフト及び左シフトを実行する。シフト量をＳＡ［６：０］、２τ目のシフト量ＳＡ２をＳＡ２［４：０］とすると、図７の従来例の場合はＳＡ２［３：０］＝ＳＡ［５：２］であるが、本実施例では次のように定義して演算回路３５Ａ、セレクタ３６Ａ及びラッチ回路２１Ａにより実現する。
【００７５】
ＳＥＬＲ＝０  ：  ＳＡ２［４：０］＝３２（２進数で１０００００）−ＳＡ［６：２］
ＳＥＬＲ＝１  ：  ＳＡ２［４：０］＝ＳＡ［６：２］
【００７６】
図２６は、ローテータ４３４の一部の構成の一例を示す回路図である。ローテータ４３４は、図２６に示す如く接続された３個のインバータ４３４１、１２８個の２対１セレクタ４３４５、及び１６個の２対１セレクタ４３４８を有する。各２対１セレクタ４３４５は、２個のアンド回路４３４２及び１個のオア回路４３４３を有するアンド・オア回路により実現されている。又、各２対１セレクタ４３４８は、２個のアンド回路４３４６及び１個のオア回路４３４７を有するアンド・オア回路により実現されている。３個のインバータ４３４１を有する回路部により４ビットのシフト量ＳＡ２［３：０］から選択信号Ｓ０，Ｓ６４を生成する。選択信号Ｓ０，Ｓ６４は、夫々０，６４ビットのローテートシフトを示す。Ｒ４Ｄ，Ｒ４Ｐはローテータ４３４によるデータ及びパリティに対するローテート右シフト（０，６４ビットの右シフト）の結果を示す。
【００７７】
ローテータ３２Ａ，３３Ａを２段の４：１セレクタのように用いると共に、ローテータ４３４を１段の２：１セレクタのように用いることで、４ビット単位で０〜１２４ビットのデータの右ローテートシフトを実行する。ローテータ３２Ａは、０，４，８，１２ビットのデータの右ローテートシフトを実行し、ローテータ３３Ａは、０，１６，３２，４８ビットのデータの右ローテートシフトを実行し、第４のシフタを形成するローテータ４３４は、０，６４ビットのデータの右ローテートシフトを実行する。
【００７８】
上記の如く４ビット単位のシフトが実行されるので、マスク回路３４Ａは４ビット毎にマスク処理を実行すれば良い。本実施例では、入力データＤのデータ幅は１２８ビットなので、３２個のマスク（０）〜（３１）を生成する。右ローテートシフトでマスクが０になる条件は、次のようになる。このような条件を満足するように論理回路を形成することで、マスク回路３４Ａによるマスク処理が可能となる。
【００７９】
【数７】
2011013920.tif 000014
【００８０】
次に、右ローテートシフトでマスクが１となる条件で作成したマスク回路３４Ａの構成は、上記第１実施例のマスク回路３４の構成からも容易に理解されよう。
【００８１】
次に、左ローテートシフトでマスクが０になる条件について説明する。本実施例ではローテータ３２Ａ，３３Ａ，４３４を用いているので、左ローテートシフトでマスクが０になる条件は、右ローテートシフトでマスクが０になる条件の反転であれば良い。ただし、２τ目のシフト量ＳＡ２は（３２−ＳＡ［６：２］）の下位５ビットの結果であるため、ＳＡ２［４：０］＝０００００の時の反転は不要である。つまり、左ローテートシフトのマスクは、ＳＡ２［４：０］＝０００００の時を除き右ローテートシフトのマスクの反転から生成することができる。
【００８２】
マスク処理時に符号拡張をサポートするために、データ出力は上記第１実施例と同様の方法で選択すれば良い。
【００８３】
又、パリティについてもデータと同様にローテータ３２Ａ，３３Ａ，４３４によるローテート処理の結果に対してマスク回路３４Ａでマスク処理を施すことで、右シフト又は左シフトの結果を得ることができる。
【００８４】
ここで、データの０，４，８，１２ビットの右ローテートシフトに対応するパリティのシフトについて説明する。この場合、０ビットの右ローテートシフト時のバイトパリティをＲ０ＢＰ［１５：０］、４ビットの右ローテートシフト時のバイトパリティをＲ４ＢＰ［１５：０］とすると、パリティＲ０ＢＰ［１５］〜Ｒ０ＢＰ［０］及びパリティＲ４ＢＰ［１５］〜Ｒ４ＢＰ［０］はラッチ回路１６Ａの出力パリティＳＤＰ［３１：０］により次のように表される。
【００８５】
【数８】
2011013920.tif 000015
【００８６】
８ビットの右ローテートシフト時のパリティはＲ０ＢＰ［０］，Ｒ０ＢＰ［１５：１］の１６ビットと等しく、１２ビットの右ローテートシフト時のパリティはＲ４ＢＰ［０］，Ｒ４ＢＰ［１５：１］の１６ビットと等しいので、バイトパリティＲ０ＢＰ［１５：０］とバイトパリティＲ４ＢＰ［１５：０］を図１５に示す４対１セレクタ３２５と同様のセレクタで選択すれば良い。
【００８７】
次に、データの０，１６，３２，４８ビットの右ローテートシフトに対応するパリティのシフトについて説明する。この場合、バイト（８ビット）パリティのシフトであるため、１６ビットのデータに対して０，２，４，６ビットの右ローテートシフトを実行するのと同じである。シフト前のバリティをＲ２Ｐ［１５：０］、シフト後のパリティをＲ３Ｐ［１５：０］とすると、例えばパリティＲ３Ｐ［１０：９］は表６のようになる。
【００８８】
【表６】
2011013920.tif 000016
【００８９】
次に、データの０，６４ビットの右ローテートシフトに対応するパリティのシフト方法について説明する。この場合、バイト（８ビット）パリティのシフトであるため、１６ビットのデータに対して０，８ビットの右ローテートシフトを実行するのと同じである。シフト後のパリティをＲ４Ｐ［８：７］とすると、例えばパリティＲ４Ｐ［８：７］は表７のようになる。
【００９０】
【表７】
2011013920.tif 000017
【００９１】
ローテータ４３４のローテートシフト結果から右シフト又は左シフトの結果を得るマスク回路３４Ａにおけるマスク処理は、上記第１実施例の場合と同様の方法で行えば良い。１６ビットマスクとしては、オア演算により「１」とすることで、バイトパリティの生成時に境界条件を考慮すれば良い。つまり、境界部分のパリティを４ビットが「０」として生成しておく。境界部分となるのは、４ビット単位のローテータ４３４の先頭のパリティである。そこで、パリティＲ４ＢＰ［１５］を前述の式（数８）ではＲ４ＢＰ［１５］＝ＳＤＰ［０］＾ＳＤＰ［３１］の排他的論理和で求めていたところを、Ｒ４ＢＰ［１５］＝ＳＥＬＲ？（０＾ＳＤＰ［３１］）：（ＳＤＰ［０］＾０）、即ち、次のように求めれば良い。尚、「＾」は排他的論理和を表す。
【００９２】
ＳＥＬＲ＝１の時：  Ｒ４ＢＰ［１５］＝ＳＤＰ［３１］
ＳＥＬＲ＝０の時：  Ｒ４ＢＰ［１５］＝ＳＤＰ［０］
【００９３】
本実施例では、３ビット以下のシフト量に基づいてデータ幅がＮ（＝１２８）ビットの入力データに対して左右選択信号に応じた０〜３ビットの右シフトを実行する右シフタ及び左シフトを実行する左シフタを有する第１のシフタ手段がシフタ１３−１，１４−１により形成される。又、４ビット以上のシフト量に基づいて前記シフタ手段の出力データに対して前記左右選択信号に応じた０〜Ｎ−４ビットの右ローテートシフト又は左ローテートシフトを実行するローテータ手段がローテータ３２Ａ，３３Ａ，４３４により形成される。更に、マスク信号に基づいて前記ローテータ手段の出力データに対して４ビット単位のマスク処理を施すマスク手段がマスク回路３４Ａにより形成される。
【００９４】
このように、本実施例では、２τ目のシフトを右シフトベースのローテータ３２，３３，４３４及びマスク回路３４Ａのマスク処理で実現することで、図７の従来例を入力データのデータ幅が１２８ビットの場合に適用した例では必要である左シフタ１４−２，１４−３、セレクタ１８及び（１２８ビットになった事で必要な）０、６４ビット左シフタが不要となる。又、その不要となった左シフタに対応する回路も変換回路１７より削減できる。代わりに必要となるマスク回路３４Ａにおいてマスク処理を実行する回路はセレクタ等の比較的簡単な回路で形成可能であり、マスク回路３４Ａは比較的少ないトランジスタ数で実現可能である。このため、シフト演算器３１Ａの回路規模を比較的小さくし、実装面積を比較的小さくすることができると共に、スタンバイ（又は、スタティック）電力を比較的小さくすることが可能となる。
【００９５】
尚、２τ目のシフトをローテータ３２Ａ，３３Ａ，４３４で実行することで、一部の配線長が多少増加する。しかし、本実施例において、２τ目のデータの入力やシフト量の入力からシフト結果の出力までの論理段数は、図７の従来例を入力データのデータ幅が１２８ビットの場合に適用した例と殆ど変わらない。又、従来例を入力データのデータ幅が１２８ビットの場合に適用した例では２τ目の右シフトと左シフトを別々に実行するが、本実施例ではローテータ３２Ａ，３３Ａ，４３４により実行するため、総配線長で見ると従来例より減少させることができるので、その分アクティブ（又は、ダイナミック）電力を削減することができる。アクティブ電力は、容量負荷の充放電が主な要因で配線長が長くなると大きくなる。更に、総配線長が従来例を入力データのデータ幅が１２８ビットの場合に適用した例より減少するので、信号遅延の問題も軽減される。
【００９６】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
入力シフト量のうち３ビット以下のシフト量に基づいて、データ幅がＮビットの入力データに対して左右選択信号に応じた０〜３ビットの右シフトを実行する右シフタ及び左シフトを実行する左シフタを有する第１のシフタ手段と、
入力シフト量のうち４ビット以上のシフト量に基づいて、前記シフタ手段の出力データに対して前記左右選択信号に応じた０〜Ｎ−４ビットの右ローテートシフト又は左ローテートシフトを実行するローテータ手段と、
マスク信号に基づいて前記ローテータ手段の出力データに対して４ビット単位のマスク処理を施すマスク手段を備えた、シフト演算器。
（付記２）
前記ローテータ手段は、前記４ビット以上のシフト量に基づいて前記マスク信号を生成する、付記１記載のシフト演算器。
（付記３）
算術右シフトを実行する場合に４ビット以上の右シフトの符号の拡張を前記マスク処理と並行して行う手段を更に備えた、付記１又は２記載のシフト演算器。
（付記４）
前記マスク手段は、データがパリティで保護されている場合にパリティに対してマスク処理を施す、付記１乃至３のいずれか１項記載のシフト演算器。
（付記５）
Ｎ＝６４であり、
前記ローテータ手段は、
０，４，８，１２ビットのデータの右ローテートシフトを実行するローテータを有する第２のシフタ手段と、
０，１６，３２，４８ビットのデータの右ローテートシフトを実行するローテータを有する第３のシフタ手段を有する、付記１乃至４のいずれか１項記載のシフト演算器。
（付記６）
Ｎ＝１２８であり、
前記ローテータ手段は、
０，４，８，１２ビットのデータの右ローテートシフトを実行するローテータを有する第２のシフタ手段と、
０，１６，３２，４８ビットのデータの右ローテートシフトを実行するローテータを有する第３のシフタ手段と、
０，６４ビットのデータの右ローテートシフトを実行するローテータを有する第４のシフタ手段を有する、付記１乃至４のいずれか１項記載のシフト演算器。
（付記７）
前記左右選択信号をラッチして前記マスク手段に供給するラッチ回路を更に備えた、付記１乃至６のいずれか１項記載のシフト演算器。
（付記８）
符号を示す信号をラッチして前記マスク手段に供給するラッチ回路を更に備えた、付記３記載のシフト演算器。
（付記９）
前記シフト演算器は２τ周期で動作し、
前記第１のシフタ手段によるシフトを１τ目で実行し、前記ローテータ手段によるシフトを２τ目に実行する、付記１乃至８のいずれか１項記載のシフト演算器。
（付記１０）
入力シフト量の４ビット以上のシフト量から前記ローテータ手段の４ビット以上のシフト量を求めて前記ローテータ手段及び前記マスク手段に供給する演算手段を更に備えた、付記１乃至９のいずれか１項記載のシフト演算器。
【００９７】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【００９８】
１２，１２Ａ，１７，１７Ａ，３７，３７Ａ      変換回路
１３−１，１３−１Ａ，１４−１，１４−１Ａ      シフタ
１５，１５Ａ，３６，３６Ａ      セレクタ
１６，１６Ａ，１９〜２１，２１Ａ      ラッチ回路
３１，３１Ａ      シフト演算器
３２，３２Ａ，３３，３３Ａ，４３４      ローテータ
３４，３４Ａ      マスク回路
３５，３５Ａ      演算回路
【図１】
2011013920.tif 000018
【図２】
2011013920.tif 000019
【図３】
2011013920.tif 000020
【図４】
2011013920.tif 000021
【図５】
2011013920.tif 000022
【図６】
2011013920.tif 000023
【図７】
2011013920.tif 000024
【図８】
2011013920.tif 000025
【図９】
2011013920.tif 000026
【図１０】
2011013920.tif 000027
【図１１】
2011013920.tif 000028
【図１２】
2011013920.tif 000029
【図１３】
2011013920.tif 000030
【図１４】
2011013920.tif 000031
【図１５】
2011013920.tif 000032
【図１６】
2011013920.tif 000033
【図１７】
2011013920.tif 000034
【図１８】
2011013920.tif 000035
【図１９】
2011013920.tif 000036
【図２０】
2011013920.tif 000037
【図２１】
2011013920.tif 000038
【図２２】
2011013920.tif 000039
【図２３】
2011013920.tif 000040
【図２４】
2011013920.tif 000041
【図２５】
2011013920.tif 000042
【図２６】
2011013920.tif 000043