(57)【要約】【課題】シフトを行う回路部分を簡素化し、回路規模の小さいシフト回路を提供する。【解決手段】シフト回路１は、複数の出力ビット群の出力ビット位置に対応して設けられた複数のシフト部１１〜１８を有する。複数のシフト部１１〜１８のそれぞれは、第１セレクタ２１と、第２セレクタ２２と、を有する。第１セレクタ２１は、入力ビット列から、シフト部の出力ビット位置から出力する対象入力ビット群及び対象入力ビット群に隣接する隣接ビット群を含むサブビット列を、サブビット列の一方の端がシフト部の出力ビット位置の一方の端に一致するように選択する。第２セレクタ２２は、第１セレクタ２１が選択したサブビット列に含まれる対象入力ビット群を、対象入力ビット群の一方の端がシフト部の出力ビット位置の一方の端に一致するように、第１方向に１ビット単位でシフトする。【選択図】図１３
2015207203.tif 000002
【特許請求の範囲】
【請求項１】
所定ビット数の入力ビット列に含まれる複数の入力ビット群を、ビット群単位で並び替えて、前記所定ビット数の出力ビット列に含まれる複数の出力ビット群として出力するシフト回路であって、
前記複数の出力ビット群の出力ビット位置に対応して設けられた複数のシフト部を有し、
前記複数のシフト部のそれぞれは、
前記入力ビット列から、該シフト部の前記出力ビット位置から出力する対象入力ビット群及び前記対象入力ビット群に隣接する隣接ビット群を含むサブビット列を、前記サブビット列の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように選択する第１セレクタと、
前記第１セレクタが選択した前記サブビット列に含まれる前記対象入力ビット群を、前記対象入力ビット群の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように、第１方向に１ビット単位でシフトする第２セレクタと、を有する、ことを特徴とするシフト回路。
【請求項２】
前記第１セレクタは、
シフト方向を示すシフト方向信号が、前記シフト部の前記出力ビット位置に対して上位ビット側と下位ビット側の何れか一方の側に位置する前記対象入力ビット群を前記第１方向にシフトすること示す第１方向シフト時には、前記対象入力ビット群及び前記隣接ビット群を含む前記サブビット列を、前記第１方向にシフトし、
前記シフト方向信号が、前記対象入力ビット群を前記第１方向と逆の第２方向にシフトすること示す第２方向シフト時には、前記対象入力ビット群及び前記隣接ビット群を含む前記サブビット列を、前記第２方向にシフトし、
前記第１方向シフト時に、前記シフト部により前記第１方向にシフトされた前記対象入力ビット群の一方の端が前記シフト部の前記出力ビット位置の一方の端に一致する場合に、前記隣接ビット群は、前記対象入力ビット群の前記第２方向側に位置し、
前記第２方向シフト時に、前記シフト部により前記第２方向にシフトされた前記対象入力ビット群の一方の端が前記シフト部の前記出力ビット位置の一方の端に一致する場合に、前記隣接ビット群は、前記対象入力ビット群の前記第１方向側に位置する、
ように前記サブビット列を選択する、請求項１に記載のシフト回路。
【請求項３】
前記第２セレクタは、
前記第１方向シフト時に、前記対象入力ビット群の位置と前記前記シフト部の前記出力ビット位置の差を、前記入力ビット群のビット数の１／２で除算した剰余ビット数分前記入力ビット群を前記第１方向にシフトし、
前記第２方向シフト時に、前記対象入力ビット群の位置と前記前記シフト部の前記出力ビット位置の差を、前記入力ビット群のビット数の１／２で除算した剰余ビット数の２の補数分前記入力ビット群をシフトする、請求項２に記載のシフト回路。
【請求項４】
前記入力ビット群及び前記出力ビット群は、連続した偶数ビットを含み、
前記隣接ビット群のビット数は、前記入力ビット群及び前記出力ビット群のビット数の半分である、請求項１〜３の何れか１項に記載のシフト回路。
【請求項５】
前記第１セレクタは、前記入力ビット列からＮ／２ビット分を選択する３個の第１シフトセレクタを有し、合わせて３Ｎ／２ビット分を選択し、
前記第２セレクタは、前記第１セレクタの出力する３Ｎ／２ビットからＮビットを選択する第１シフトセレクタを有する、請求項４に記載のシフト回路。
【請求項６】
所定ビット数の入力ビット列に含まれる複数のデータを並び替えて前記所定ビット数の出力ビット列として出力するシフト回路と、
前記シフト回路の出力する前記出力ビット列に含まれる並び替えられた前記複数のデータを処理する演算回路と、を有する演算装置であって、
前記シフト回路は、前記複数のデータに対応する複数の入力ビット群を、ビット群単位で並び替えて、前記出力ビット列に含まれる複数の出力ビット群として出力し、
前記シフト回路は、前記複数の出力ビット群の出力ビット位置に対応して設けられた複数のシフト部を有し、
前記複数のシフト部のそれぞれは、
前記入力ビット列から、該シフト部の前記出力ビット位置から出力する対象入力ビット群及び前記対象入力ビット群に隣接する隣接ビット群を含むサブビット列を、前記サブビット列の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように選択する第１セレクタと、
前記第１セレクタが選択した前記サブビット列に含まれる前記対象入力ビット群を、前記対象入力ビット群の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように、第１方向に１ビット単位でシフトする第２セレクタと、を有する、ことを特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シフト回路及び演算装置に関する。
【背景技術】
【０００２】
演算装置が処理するデータのデータ量が増加すると共に、演算装置が処理するデータのデータフォーマットの種類が多様化している。種々のフォーマットのデータを高速で処理にするために、データを形成するビット列に含まれる複数のビット群をビット群単位で並び替えると共に、複数のビット群をビット単位で双方向にシフトさせるシフト回路を演算装置に搭載することが知られている。
【０００３】
一例では、シフト回路は、第１レジスタと、第２レジスタと、複数のバイトシフトマルチプレクサと、複数のビットシフトマルチプレクサとを有する。第１レジスタはシフトさせる入力データの上位側ビット列を記憶し、第２レジスタはシフトさせる入力データの下位側ビット列を記憶する。各バイトシフトマルチプレクサは、出力ビット位置に対応して設けられ、第１レジスタ及び第２レジスタから並列に入力されるビット群の指定された何れか１つを選択することにより、バイトシフトを行う。各ビットシフトマルチプレクサは、バイトシフトマルチプレクサに対応して設けられ、バイトシフトされたビット群を更にビットシフトする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−２１２０５３号公報
【特許文献２】特開平１０−５５２６２号公報
【特許文献３】特開２００８−１０８２２０号公報
【特許文献４】特開平８−７６９７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のシフト回路では、各ビットシフトマルチプレクサは、２個のバイトシフトマルチプレクサから出力された２つのビット群を２方向にビットシフトする。したがって、上記のシフト回路は、回路規模が大きいという課題を有する。
【０００６】
実施形態によれば、ビット列に含まれる複数のビット群をビット群毎に並び替えると共にシフトするときに、シフトを行う回路部分を簡素化し、回路規模の小さいシフト回路を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様のシフト回路は、所定ビット数の入力ビット列に含まれる複数の入力ビット群を、ビット群単位で並び替えて、所定ビット数の出力ビット列に含まれる複数の出力ビット群として出力するシフト回路である。シフト回路は、複数の出力ビット群の出力ビット位置に対応して設けられた複数のシフト部を有する。複数のシフト部のそれぞれは、第１セレクタと、第２セレクタと、を有する。第１セレクタは、入力ビット列から、シフト部の出力ビット位置から出力する対象入力ビット群及び対象入力ビット群に隣接する隣接ビット群を含むサブビット列を、サブビット列の一方の端がシフト部の出力ビット位置の一方の端に一致するように選択する。第２セレクタは、第１セレクタが選択したサブビット列に含まれる対象入力ビット群を、対象入力ビット群の一方の端がシフト部の出力ビット位置の一方の端に一致するように、第１方向に１ビット単位でシフトする。
【発明の効果】
【０００８】
実施形態では、ビット列に含まれる複数のビット群をビット群毎に並び替えると共にシフトするときに、シフトを行う回路部分を簡素化し、回路規模の小さいシフト回路を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】関連するシフト回路の一例の回路ブロック図である。
【図２】図１に示すシフト回路の第５シフト回路の回路ブロック図である。
【図３】（ａ）は図２に示す第５シフト回路の第１左シフトセレクタの内部回路ブロック図であり、（ｂ）は（ａ）に示す第１左シフトセレクタの入力データの分割状態を示す図であり、（ｃ）は（ａ）に示す第１左シフトセレクタの第１左デジットセレクタの内部ブロック図である。
【図４】図２に示す第５シフト回路の第２左シフトセレクタの内部回路ブロック図である。
【図５】（ａ）は図２に示す第５シフト回路の左シフト部の処理の一例を示す図であり、（ｂ）は図２に示す第５シフト回路の左シフト部の処理の他の例を示す図である。
【図６】（ａ）は図２に示す第５シフト回路の右シフト部の処理の一例を示す図であり、（ｂ）は図２に示す第５シフト回路の右シフト部の処理の他の例を示す図である。
【図７】図２に示す第５シフト回路の処理フローを示すフローチャートである。
【図８】図１に示すシフト回路によるシフトの一例を示す図である。
【図９】第１実施形態に係るシフト回路の回路ブロック図である。
【図１０】図９に示すシフト回路の第５シフト回路の回路ブロック図である。
【図１１】（ａ）は図１０に示す第５シフト回路の第１シフトセレクタの内部回路ブロック図であり、（ｂ）は（ａ）に示す第１シフトセレクタの入力データの分割状態を示す図であり、（ｃ）は（ａ）に示す第１シフトセレクタの第１デジットセレクタの内部ブロック図である。
【図１２】図１０に示す第５シフト回路の第２シフトセレクタの内部回路ブロック図である。
【図１３】図１０に示す第５シフト回路のシフト制御部による第２シフトセレクタのビットシフトを示す図であり、（ａ）は左シフトを示す図であり、（ｂ）は右シフトを示す図である。
【図１４】図１０に示す第５シフト回路の処理フローを示すフローチャートである。
【図１５】左シフトと右シフトでのデジットの選択とビットシフトの違いを説明する図である。
【図１６】（ａ）は図１０に示す第５シフト回路のシフト部による左シフト処理の一例を示す図であり、（ｂ）は図１０に示す第５シフト回路のシフト部による左シフト処理の他の例を示す図である。
【図１７】（ａ）は図１０に示す第５シフト回路のシフト部による右シフト処理の一例を示す図であり、（ｂ）は図１０に示す第５シフト回路のシフト部による右シフト処理の他の例を示す図である。
【図１８】第２実施形態に係るシフト回路の回路ブロック図である。
【図１９】図１８に示すシフト回路の第５シフト回路の回路ブロック図である。
【図２０】（ａ）は図１９に示す第５シフト回路の第１シフトセレクタの内部回路ブロック図であり、（ｂ）は（ａ）に示す第１シフトセレクタの第１デジットセレクタの内部ブロック図である。
【図２１】図１９示す第５シフト回路のパリティ選択回路の内部回路ブロック図である。
【図２２】図９に示すシフト回路を搭載した演算装置の一例の内部回路ブロック図である。
【発明を実施するための形態】
【００１０】
以下図面を参照して、シフト回路及び演算装置について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明との均等物に及ぶ点に留意されたい。
【００１１】
実施形態に係るシフト回路について説明する前に、実施形態に係るシフト回路の技術的特徴をより明確にするために、実施形態に係るシフト回路に関連するシフト回路について説明する。関連するシフト回路は、６４ビットのビット列である入力データＤ［６３：０］に含まれるそれぞれが１バイトの８つのビット群をビット群毎に並び替えると共に、上位ビット方向又は下位ビット方向にシフトするものである。例えば、関連するシフト回路は、入力データＤ［６３：０］に含まれる１バイトのビット群Ｄ［４８：４１］を下位ビット方向に１７ビットシフトして、出力データＲ［３１：２４］として出力する。また、関連するシフト回路は、６４ビットのビット列である入力データＤ［６３：０］に含まれる１バイトのビット群Ｄ［１２：５］を上位ビット方向に４３ビットシフトして、出力データＲ［５５：４８］として出力する。関連するシフト回路は、１バイトのビット群のそれぞれをビット群毎に並び替えると同時にビット群を上位ビット方向又は下位ビット方向にシフトする８つのシフト部により形成される。
【００１２】
図１は、関連するシフト回路の回路ブロック図である。
【００１３】
シフト回路９００は、第１シフト回路９０１〜第８シフト回路９０８を有する。第１〜第８シフト回路のそれぞれは、６４ビットの入力データＤ［６３：０］が入力され、入力データＤ［６３：０］の何れか１バイトの一連のビット群を上位ビット方向又は下位ビット方向にシフトしたビット群を、出力データとしてそれぞれ出力する。本明細書では、上位ビット方向へのシフトを左シフトと称し、下位ビット方向へのシフトを右シフトと称する。
【００１４】
第１シフト回路９０１は、第１シフト量制御信号ｓａ０［５：０］及び第１シフト方向制御信号ｄｉｒ０に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［７：０］として出力する。第２シフト回路９０２は、第２シフト量制御信号ｓａ１［５：０］及び第２シフト方向制御信号ｄｉｒ１に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［１５：８］として出力する。第３シフト回路９０３は、第３シフト量制御信号ｓａ２［５：０］及び第３シフト方向制御信号ｄｉｒ２に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［２３：１６］として出力する。第４シフト回路９０４は、第４シフト量制御信号ｓａ３［５：０］及び第４シフト方向制御信号ｄｉｒ３に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［３１：２４］として出力する。第５シフト回路９０５は、第５シフト量制御信号ｓａ４［５：０］及び第５シフト方向制御信号ｄｉｒ４に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［３９：３２］として出力する。第６シフト回路９０６は、第６シフト量制御信号ｓａ５［５：０］及び第６シフト方向制御信号ｄｉｒ５に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［４７：４０］として出力する。第７シフト回路９０７は、第７シフト量制御信号ｓａ６［５：０］及び第７シフト方向制御信号ｄｉｒ６に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［５５：４８］として出力する。第８シフト回路９０８は、第８シフト量制御信号ｓａ７［５：０］及び第８シフト方向制御信号ｄｉｒ７に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［６３：５６］として出力する。言い換えれば、第１〜第８シフト回路は、出力データＲ［６３：０］の１バイト毎の出力ビット位置に対応づけられている。
【００１５】
以下、第５シフト回路９０５を例として、第１シフト回路９０１〜第８シフト回路９０８の構成及び機能について説明する。
【００１６】
図２は、第５シフト回路９０５の内部回路ブロック図である。
【００１７】
第５シフト回路９０５は、左シフト部９１０と、右シフト部９２０と、左右シフトセレクタ９３０と、シフト制御部９４０と、を有する。
【００１８】
左シフト部９１０は、第１左シフトセレクタ９１１と、第２左シフトセレクタ９１２とを有する。第１左シフトセレクタ９１１は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、デジット単位、すなわち４ビット単位で左シフトした３デジットのサブビット列である第１左シフトデータＤｓｌ１［１１：０］を入力データＤ［６３：０］から生成する。サブビット列である第１左シフトデータＤｓｌ１［１１：０］は、出力データとして選択されるビット群と、ビット群に隣接するビットである隣接ビット群とを含む。第２左シフトセレクタ９１２は、第１左シフトセレクタ９１１が生成した第１左シフトデータＤｓｌ１［１１：０］に含まれる１バイトのビット群をビット単位で左シフトして第２左シフトデータＤｓｌ２［７：０］を生成する。
【００１９】
右シフト部９２０は、第１右シフトセレクタ９２１と、第２右シフトセレクタ９２２とを有する。第１右シフトセレクタ９２１は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、入力データＤ［６３：０］をデジット単位で右シフトした３デジットのサブビット列である第１右シフトデータＤｓｒ１［１１：０］を生成する。サブビット列である第１右シフトデータＤｓｒ１［１１：０］は、出力データとして選択されるビット群と、ビット群に隣接するビットである隣接ビット群とを含む。第２右シフトセレクタ９２２は、第１右シフトセレクタ９２１が生成した第１右シフトデータＤｓｒ１［１１：０］に含まれる１バイトのビット群をビット単位で右シフトした第２右シフトデータＤｓｒ２［７：０］を生成する。
【００２０】
左右シフトセレクタ９３０は、第５シフト方向制御信号ｄｉｒ４が「０」のとき第２左シフトデータＤｓｌ２［７：０］を、第５シフト方向制御信号ｄｉｒ４が「１」のとき第２右シフトデータＤｓｒ２［７：０］を、出力データＲ［３９：３２］として出力する。
【００２１】
シフト制御部９４０は、第５シフト量制御信号ｓａ４［５：２］からデジットシフト信号ｓｅｌ４ａ［１５：０］を生成し、第５シフト量制御信号ｓａ４［１：０］からビットシフト信号ｓｅｌ４ｂ［３：０］を生成する。
【００２２】
図３（ａ）は第１左シフトセレクタ９１１の内部回路ブロック図であり、図３（ｂ）は入力データの分割状態を示す図であり、図３（ｃ）は第１左デジットセレクタの内部ブロック図である。
【００２３】
第１左シフトセレクタ９１１は、第１左デジットセレクタ９１４と、第２左デジットセレクタ９１５と、第３左デジットセレクタ９１６とを有する。
【００２４】
図３（ｂ）に示すように、入力データＤ［６３：０］は、１６個のデジットデータである第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］に分割される。１６個のデジットデータのそれぞれの最上位ビット、最上位ビットの１ビット下位のビット、最上位ビットの２ビット下位のビット及び最下位ビットのそれぞれが、１６ビットの一群のデータとなる。すなわち、入力データＤ［６３、５９、・・・、３］が１つの１６ビットのデータとなり、入力データＤ［６２、５８、・・・、２］が１つの１６ビットのデータとなる。また、入力データＤ［６１、５７、・・・、１］が１つの１６ビットのデータとなり、入力データＤ［６０、５６、・・・、０］が１つの１６ビットのデータとなる。以下、本明細書では、最上位ビットをＭＳＢ（Most Significant Bit）とも称し、最下位ビットをＬＳＢ（Least Significant Bit）とも称する。
【００２５】
図３（ｃ）に示すように、第１左デジットセレクタ９１４は、第１セレクタ９１４１〜第４セレクタ９１４４を有する。第１セレクタ９１４１〜第４セレクタ９１４４のそれぞれは、１７：１セレクタである。第１セレクタ９１４１は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＭＳＢのデータ又は「０」を第１左シフトデータＤｓｌ１［１１］として選択し、出力する。第２セレクタ９１４２は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＭＳＢの１ビット下位のビットのデータ又は「０」を第１左シフトデータＤｓｌ１［１０］として選択し、出力する。第３セレクタ９１４３は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＭＳＢの２ビット下位のビットのデータ又は「０」を第１左シフトデータＤｓｌ１［９］として選択し、出力する。第４セレクタ９１４４は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＬＳＢのデータ又は「０」を第１左シフトデータＤｓｌ１［８］として選択し、出力する。
【００２６】
第１左デジットセレクタ９１４は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１左シフトデータＤｓｌ１［１１：０］の上位デジットである第１左シフトデータＤｓｌ１［１１：８］を選択し、出力する。デジットシフト信号ｓｅｌ４ａ［１５：０］が示す左シフトが大きく、第１左デジットセレクタ９１４が選択するデジットがない場合、第１左デジットセレクタ９１４は「００００」を第１左シフトデータＤｓｌ１［１１：８］として出力する。
【００２７】
第２左デジットセレクタ９１５は、第１左デジットセレクタ９１４と同一の構成を有する。第２左デジットセレクタ９１５は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１左デジットセレクタ９１４が選択したデジットの１デジット下位のデジットを選択し、第１左シフトデータＤｓｌ１［７：４］として出力する。デジットシフト信号ｓｅｌ４ａ［１５：０］が示す左シフトが大きく、第２左デジットセレクタ９１５が選択するデジットがない場合は、第２左デジットセレクタ９１５は、「００００」を第１左シフトデータＤｓｌ１［７：４］として出力する。
【００２８】
第３左デジットセレクタ９１６は、第１左デジットセレクタ９１４と同一の構成を有する。第３左デジットセレクタ９１６は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１左デジットセレクタ９１４が選択したデジットの２デジット下位のデジットを選択し、第１左シフトデータＤｓｌ１［３：０］として出力する。デジットシフト信号ｓｅｌ４ａ［１５：０］が示す左シフトが大きく、第３左デジットセレクタ９１６が選択するデジットがない場合は、第２左デジットセレクタ９１５は、「００００」を第１左シフトデータＤｓｌ１［３：０］として出力する。
【００２９】
右シフト部９２０の第１右シフトセレクタ９２１は、第１左シフトセレクタ９１１と同様の構成を有し、デジットシフト信号ｓｅｌ４ａ［１５：０］に応じて選択するデジットが異なる。
【００３０】
表１に、第５シフト量制御信号ｓａ４［５：２］、デジットシフト信号ｓｅｌ４ａ［１５：０］、第１左シフトデータＤｓｌ１［１１：０］、第１右シフトデータＤｓｒ１［１１：０］の関係を示す真理値表を示す。
【００３１】
【表１】
2015207203.tif 000003
【００３２】
表１において、「Ｌ」が第１左シフトデータＤｓｌ１［１１：０］を、「Ｒ」が第１右シフトデータＤｓｒ１［１１：０］を示す。Ｄｓｌ１［１１：８］が第１左デジットセレクタ９１４の出力であり、Ｄｓｌ１［７：４］が第２左デジットセレクタ９１５の出力であり、Ｄｓｌ１［３：０］が第３左デジットセレクタ９１６の出力である。
【００３３】
表１に示すように、左シフト時、ｓａ４［５：２］が「００００」の時、デジットシフト信号ｓｅｌ４ａ［０］が「１」で、Ｄｓｌ１［１１：８］〜Ｄｓｌ１［３：０］は、第１０デジットＤ［３９：３６］〜第８デジットＤ［３１：２８］となる。また、左シフト時、ｓａ４［５：２］が「００００」の時、デジットシフト信号ｓｅｌ４ａ［１］が「１」で、Ｄｓｌ１［１１：８］〜Ｄｓｌ１［３：０］は、第９デジットＤ［３５：３２］〜第７デジットＤ［２７：２４］となる。これに対して、右シフト時、ｓａ４［５：２］が「００００」の時、デジットシフト信号ｓｅｌ４ａ［０］が「１」で、Ｄｓｒ１［１１：８］〜Ｄｓｒ１［３：０］は、第１１デジットＤ［４３：４０］〜第９デジットＤ［３５：３２］となる。また、右シフト時、ｓａ４［５：２］が「０００１」の時、デジットシフト信号ｓｅｌ４ａ［１］が「１」で、Ｄｓｒ１［１１：８］〜Ｄｓｒ１［３：０］は、第１２デジットＤ［４７：４４］〜第１０デジットＤ［３９：３６］となる。
【００３４】
図４は、第２左シフトセレクタ９１２の内部回路ブロック図である。
【００３５】
第２左シフトセレクタ９１２は、それぞれが４：１セレクタである第１セレクタ９１２１〜第８セレクタ９１２８を有する。第１セレクタ９１２１〜第８セレクタ９１２８のそれぞれは、ビットシフト信号ｓｅｌ４ｂ［３：０］に応じて４つのデータから１つのデータを選択する。第１セレクタ９１２１は、第１左シフトデータＤｓｌ１［１１：８］から何れか１つを選択する。第２セレクタ９１２２は、第１左シフトデータＤｓｌ１［１０：７］から何れか１つを選択する。第３セレクタ９１２３は、第１左シフトデータＤｓｌ１［９：６］から何れか１つを選択する。第４セレクタ９１２４は、第１左シフトデータＤｓｌ１［８：５］から何れか１つを選択する。第５セレクタ９１２５は、第１左シフトデータＤｓｌ１［７：４］から何れか１つを選択する。第６セレクタ９１２６は、第１左シフトデータＤｓｌ１［６：３］から何れか１つを選択する。第７セレクタ９１２７は、第１左シフトデータＤｓｌ１［５：２］から何れか１つを選択する。第８セレクタ９１２８は、第１左シフトデータＤｓｌ１［４：１］から何れか１つを選択する。
【００３６】
第２右シフトセレクタ９２２は、第２左シフトセレクタ９１２と同じ構成を有し、入力が異なるのみである。
【００３７】
表２に、第５シフト方向制御信号ｄｉｒ４、第５シフト量制御信号ｓａ４［１：０］、ビットシフト信号ｓｅｌ４ｂ［３：０］、及び左右シフトセレクタ９３０が選択するデータとの関係を示す真理値表を示す。
【００３８】
【表２】
2015207203.tif 000004
【００３９】
表２において、「Ｌ」が左シフトの場合を、「Ｒ」が右シフトの場合を示す。
次に、処理例を具体的に説明する。
【００４０】
図５（ａ）は左シフト部９１０の処理の一例を示す図であり、図５（ｂ）は左シフト部９１０の処理の他の例を示す図である。図５（ａ）は、ビット群Ｄ［１３：６］を２６ビット左シフトして第２左シフトデータＤｓｌ２［７：０］として左シフト部９１０が出力する処理を示す図である。図５（ｂ）は、ビット群Ｄ［７：０］を３５ビット左シフトして第２左シフトデータＤｓｌ２［７：０］として左シフト部９１０が出力する処理を示す図である。
【００４１】
２６ビット左シフトする場合、第１左シフトセレクタ９１１が６デジット左シフトした後に、第２左シフトセレクタ９１２が２ビット左シフトする。第１左シフトセレクタ９１１は、［６］が「１」であり他のビットのデータが「０」であるデジットシフト信号ｓｅｌ４［１５：０］が入力され、第１左シフトデータＤｓｌ１［１１：０］として入力データＤ［１５：４］を選択する。すなわち、第１左デジットセレクタ９１４はＤ［１５：１２］を選択し、第２左デジットセレクタ９１５はＤ［１１：８］を選択し、第１左デジットセレクタ９１４はＤ［７：４］を選択する。次いで、第２左シフトセレクタ９１２は、［２］が「１」であり他のビットのデータが「０」であるビットシフト信号ｓｅｌ４［３：０］が入力され、入力データＤ［１３：６］を第２左シフトデータＤｓｌ２［７：０］として選択する。
【００４２】
３５ビット左シフトする場合、第１左シフトセレクタ９１１が８デジット左シフトした後に、第２左シフトセレクタ９１２が３ビット左シフトする。第１左シフトセレクタ９１１は、［８］が「１」であり他のビットのデータが「０」であるデジットシフト信号ｓｅｌ４［１５：０］が入力され、第１左シフトデータＤｓｌ１［１１：４］として入力データＤ［７：０］を選択する。すなわち、第１左デジットセレクタ９１４はＤ［７：４］を選択し、第２左デジットセレクタ９１５はＤ［３：０］を選択する。第１左シフトデータＤｓｌ１［１１：０］の中間デジットとして最下位デジットである第１デジットＤ［３：０］を選択したので、第１左シフトデータＤｓｌ１［１１：０］の下位デジットは空欄になる。このとき、第３左デジットセレクタ９１６は、「００００」を第１左シフトデータＤｓｌ１［１１：０］の下位デジットＤｓｌ１［３：０］として出力する。次いで、第２左シフトセレクタ９１２は、［３］が「１」であり他のビットのデータが「０」であるビットシフト信号ｓｅｌ４［３：０］が入力され、第２左シフトデータＤｓｌ２［７：３］として入力データＤ［４：０］を選択する。また、第２左シフトセレクタ９１２は、第２左シフトデータＤｓｌ２［２：０］のそれぞれのデータとして「０」を選択する。
【００４３】
図６（ａ）は右シフト部９２０の処理の一例を示す図であり、図６（ｂ）は右シフト部９２０の処理の他の例を示す図である。図６（ａ）は、ビット群Ｄ［６１：５４］を２２ビット右シフトして第２右シフトデータＤｓｒ２［８：０］として右シフト部９２０が生成する処理を示す図である。図６（ｂ）は、ビット群Ｄ［６３：５６］を２５ビット右シフトして第２右シフトデータＤｓｒ２［８：０］として右シフト部９２０が生成する処理を示す図である。
【００４４】
２２ビット右シフトする場合、第１右シフトセレクタ９２１が５デジット右シフトした後に、第２右シフトセレクタ９２２が２ビット右シフトする。第１右シフトセレクタ９２１は、［５］が「１」であり他のビットのデータが「０」であるデジットシフト信号ｓｅｌ４［１５：０］が入力され、第１右シフトデータＤｓｒ１［１１：０］として入力データＤ［６３：５２］を選択する。すなわち、第１右デジットセレクタ９２４はＤ［６３：６０］を選択し、第２右デジットセレクタ９２５はＤ［５９：５６］を選択し、第１右デジットセレクタ９２４はＤ［５５：５２］を選択する。次いで、第２右シフトセレクタ９２２は、［２］が「１」であり他のビットのデータが「０」であるビットシフト信号ｓｅｌ４［３：０］が入力され、入力データＤ［６１：５４］を第２右シフトデータＤｓｒ２［７：０］として選択する。
【００４５】
２５ビット右シフトする場合、第１右シフトセレクタ９２１が６デジット右シフトした後に、第２右シフトセレクタ９２２が１ビット右シフトする。第１右シフトセレクタ９２１は、［６］が「１」であり他のビットのデータが「０」であるデジットシフト信号ｓｅｌ４［１５：０］が入力され、第１右シフトデータＤｓｒ１［７：０］として入力データＤ［６３：５６］を選択する。すなわち、第２右デジットセレクタ９２５はＤ［６３：５６］を選択し、第３右デジットセレクタ９２６はＤ［５５：５２］を選択する。第１右シフトデータＤｓｒ１［１１：０］の中間デジットとして最上位デジットである第１６デジットＤ［６３：６０］を選択したので、第１右シフトデータＤｓｒ１［１１：０］の上位デジットＤｓｒ１［１１：８］は空欄になる。このとき、第１右デジットセレクタ９２４は、「００００」を第１右シフトデータＤｓｒ１［１１：０］の上位デジットＤｓｒ１［１１：８］として出力する。次いで、第２右シフトセレクタ９２２は、［１］が「１」であり他のビットのデータが「０」であるビットシフト信号ｓｅｌ４［３：０］が入力され、第２右シフトデータＤｓｒ２［６：０］として入力データＤ［６３：５７］を選択する。また、第２右シフトセレクタ９２２は、第２右シフトデータＤｓｒ２［７］のＭＳＢのデータとして「０」を選択する。
【００４６】
図７は、第５シフト回路９０５の処理フローを示すフローチャートである。
【００４７】
まず、ステップＳ１０１において、第５シフト量制御信号ｓａ４［５：０］がシフト制御部９４０に入力されると共に、第５シフト方向制御信号ｄｉｒ４が左右シフトセレクタ９３０に入力される。シフト制御部９４０は、第５シフト量制御信号ｓａ４［５：０］が入力されると、第５シフト量制御信号ｓａ４［５：２］に応じたデジットシフト信号ｓｅｌ４ａ［１５：０］を生成し、第１左シフトセレクタ９１１及び第１右シフトセレクタ９２１に出力する。また、シフト制御部９４０は、第５シフト量制御信号ｓａ４［１：０］に応じたビットシフト信号ｓｅｌ４ｂ［３：０］を生成し、第２左シフトセレクタ９１２及び第２右シフトセレクタ９２２に出力する。
【００４８】
次いで、ステップＳ１０２において、６４ビットのビット列である入力データＤ［６３：０］が第１左シフトセレクタ９１１及び第１右シフトセレクタ９２１に入力される。
【００４９】
次いで、ステップＳ１０３及びＳ１０４において、第１左シフトセレクタ９１１及び第１右シフトセレクタ９２１は、入力されたデジットシフト信号ｓｅｌ４ａ［１５：０］に応じてデジット単位でシフトした３デジットのサブビット列を生成し、出力する。第１左シフトセレクタ９１１は、左シフトした３デジットのサブビット列を生成し、第１左シフトデータＤｓｌ１［１１：０］として出力する。また、ステップＳ１０４において、第１右シフトセレクタ９２１は、右シフトした３デジットのサブビット列を生成し、第１右シフトデータＤｓｒ１［１１：０］として出力する。
【００５０】
次いで、ステップＳ１０５及びＳ１０６において、第２左シフトセレクタ９１２及び第２右シフトセレクタ９２２は、入力されたビットシフト信号ｓｅｌ４ｂ［３：０］に応じてビット単位でシフトした１バイトのビット群を生成し、出力する。ステップＳ１０５において、第２左シフトセレクタ９１２は、第１左シフトデータＤｓｌ１［１１：０］から１バイトのビット群を生成し、第２左シフトデータＤｓｌ２［７：０］として出力する。また、ステップＳ１０６において、第２右シフトセレクタ９２２は、第１右シフトデータＤｓｒ１［１１：０］から１バイトのビット群を生成し、第２右シフトデータＤｓｒ２［７：０］として出力する。
【００５１】
そして、ステップＳ１０７において、左右シフトセレクタ９３０は、入力された第５シフト方向制御信号ｄｉｒ４に応じて第２左シフトデータＤｓｌ２［７：０］又は第２右シフトデータＤｓｒ２［７：０］を選択し、出力データＲ［３９：３２］として出力する。
【００５２】
第１シフト回路９０１〜第４シフト回路９０４及び第６シフト回路９０６〜第８シフト回路９０８のそれぞれは第５シフト回路９０５と対応する構成を有するため、構成及び機能の詳細な説明は省略する。
【００５３】
第１シフト回路９０１〜第８シフト回路９０８のそれぞれは、第１シフト量制御信号ｓａ０［５：２］〜第８シフト量制御信号ｓａ７［５：２］に応じて入力データＤ［６３：０］に含まれるサブビット列をデジット単位でシフトする。第１シフト回路９０１〜第８シフト回路９０８のそれぞれは、第１シフト量制御信号ｓａ０［１：０］〜第８シフト量制御信号ｓａ７［１：０］に応じて入力データＤ［６３：０］に含まれるビット群をビット単位でシフトする。第１シフト回路９０１〜第８シフト回路９０８のそれぞれは、第１シフト方向制御信号ｄｉｒ１〜第８シフト方向制御信号ｄｉｒ７に応じて入力データＤ［６３：０］に含まれるビット群をシフトするシフト方向を選択する。シフト回路９００は、入力データＤ［６３：０］に含まれるビット群を左シフト又は右シフトすることができる。
【００５４】
図８は、シフト回路９００によるデータシフトの一例を示す図である。
【００５５】
図８では、入力データＤ［６３：０］の最上位バイトがビット群「Ａ０」であり、最上位バイトから２バイト目がビット群「Ｂ０」であり、最上位バイトから３バイト目がビット群「Ａ１」であり、最上位バイトから４バイト目がビット群「Ｂ１」である。また、入力データＤ［６３：０］の最上位バイトから５バイト目がビット群「Ａ２」であり、最上位バイトから６バイト目がビット群「Ｂ２」であり、最上位バイトから７バイト目がビット群「Ａ３」であり、最下位バイトがビット群「Ｂ３」である。第１シフト回路９０１は入力データＤ［７：０］に位置するビット群「Ｂ３」をシフトせずに出力データＲ［７：０］として出力する。第２シフト回路９０２〜第８シフト回路９０８についても同様である。
【００５６】
シフト回路９００は、６４ビットのビット列である入力データＤ［６３：０］を３段のシフト回路により双方向にシフト可能である。シフト回路９００は、同一の構成を有するシフト回路である第１シフト回路９０１〜第８シフト回路９０８により形成されるので、構成素子間の配線が比較的簡明になる。しかしながら、シフト回路９００は、左シフト用の左シフト部９１０及び右シフト用の右シフト部９２０の２つのシフト回路を有しているため、回路面積が大きくなる。また、シフト回路９００は、入力データＤ［６３：０］を入力するための配線が左シフト部９１０及び右シフト部９２０の双方に分かれて配線されるため配線面積も大きくなるので、自動配置配線ツールで配置配線したときに集積度が低くなるおそれがある。
【００５７】
シフト回路では、上記問題を解決し、シフト回路９００よりも回路面積が小さく且つ自動配置配線ツールで配置配線したときに集積度を比較的高くすることが好ましい。
【００５８】
実施形態に係るシフト回路では、第２シフトセレクタは、第１シフトセレクタがシフトしたサブビット列に含まれる対象入力ビット群を、対象入力ビット群の一方の端がシフト部の出力ビット位置の一方の端に一致するように、一方向に１ビット単位でシフトする。実施形態に係るシフト回路では、一方向のビットシフト回路で双方向シフトを実現しているため、左シフト部と右シフト部の２つのシフト回路を有する関連するシフト回路９００と比較して回路面積を小さくすることができる。
【００５９】
図９は、第１実施形態に係るシフト回路の回路ブロック図である。
【００６０】
シフト回路１は、第１シフト回路１１〜第８シフト回路１８を有する。第１シフト回路１１〜第８シフト回路１８のそれぞれは、６４ビットの入力データＤ［６３：０］が入力され、入力データＤ［６３：０］の何れか１バイトの一連のビット群を上位方向又は下位方向にシフトしたビット群を出力データとしてそれぞれ出力する。
【００６１】
第１シフト回路１１は、第１シフト量制御信号ｓａ０［５：０］及び第１シフト方向制御信号ｄｉｒ０に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［７：０］として出力する。第２シフト回路１２は、第２シフト量制御信号ｓａ１［５：０］及び第２シフト方向制御信号ｄｉｒ１に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［１５：８］として出力する。第３シフト回路１３は、第３シフト量制御信号ｓａ２［５：０］及び第３シフト方向制御信号ｄｉｒ２に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［２３：１６］として出力する。第４シフト回路１４は、第４シフト量制御信号ｓａ３［５：０］及び第４シフト方向制御信号ｄｉｒ３に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［３１：２４］として出力する。第５シフト回路１５は、第５シフト量制御信号ｓａ４［５：０］及び第５シフト方向制御信号ｄｉｒ４に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［３９：３２］として出力する。第６シフト回路１６は、第６シフト量制御信号ｓａ５［５：０］及び第６シフト方向制御信号ｄｉｒ５に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［４７：４０］として出力する。第７シフト回路１７は、第７シフト量制御信号ｓａ６［５：０］及び第７シフト方向制御信号ｄｉｒ６に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［５５：４８］として出力する。第８シフト回路１８は、第８シフト量制御信号ｓａ７［５：０］及び第８シフト方向制御信号ｄｉｒ７に基づいて入力データＤ［６３：０］の何れか１バイトのビット群をシフトして出力データＲ［６３：５６］として出力する。
【００６２】
以下、第５シフト回路１５を例として、第１シフト回路１１〜第８シフト回路１８の構成及び機能について説明する。
【００６３】
図１０は、第５シフト回路１５の内部回路ブロック図である。
【００６４】
第５シフト回路１５は、シフト部２０と、シフト制御部３０とを有する。
【００６５】
シフト部２０は、第１シフトセレクタ２１と、第２シフトセレクタ２２とを有する。第１シフトセレクタ２１は、デジットシフト信号ｓｅｌ４ａ［１７：０］に基づいて、入力データＤ［６３：０］の何れか３デジットのサブビット列をデジット単位で左シフト又は右シフトした３デジットの第１シフトデータＤｓ１［１１：０］を生成する。サブビット列である第１シフトデータＤｓ１［１１：０］は、出力データとして選択されるビット群と、ビット群に隣接するビットである隣接ビット群とを含む。第２シフトセレクタ２２は、第１シフトセレクタ２１が生成した第１シフトデータＤｓ１［１１：０］に含まれる１バイトのビット群をビット単位で左シフトして出力データＲ［３９：３２］を生成する。
【００６６】
シフト制御部３０は、第５シフト方向制御信号ｄｉｒ４と、第５シフト量制御信号ｓａ４［５：０］とに応じて、デジットシフト信号ｓｅｌ４ａ［１７：０］及びビットシフト信号ｓｅｌ４ｂ［４：０］を生成する。シフト制御部３０は、第５シフト方向制御信号ｄｉｒ４が「０」のとき、第１シフトセレクタ２１が入力データＤ［６３：０］の何れかのサブビット列を左シフトして第１シフトデータとして出力するデジットシフト信号ｓｅｌ４ａ［１７：０］を生成する。シフト制御部３０は、第５シフト方向制御信号ｄｉｒ４が「１」のとき、第１シフトセレクタ２１が入力データＤ［６３：０］の何れかのサブビット列を右シフトして第１シフトデータとして出力するデジットシフト信号ｓｅｌ４ａ［１７：０］を生成する。
【００６７】
シフト制御部３０は、第５シフト方向制御信号ｄｉｒ４が「０」のとき、第１シフトデータに含まれるビット群を第５シフト量制御信号ｓａ４［１：０］に応じて左シフトして出力データとして生成するビットシフト信号ｓｅｌ４ｂ［４：０］を生成する。例えば、第５シフト量制御信号ｓａ４［１：０］が「０１」のとき、シフト制御部３０は、第２シフトセレクタ２２がビット群を１ビット左シフトする信号を生成する。
【００６８】
シフト制御部３０は、第５シフト方向制御信号ｄｉｒ４が「１」のとき、第１シフトデータに含まれるビット群を第５シフト量制御信号ｓａ４［１：０］の２の補数に応じて左シフトして出力データとして生成するビットシフト信号ｓｅｌ４ｂ［４：０］を生成する。例えば、第５シフト量制御信号ｓａ４［１：０］が「１０」のとき、シフト制御部３０は、第２シフトセレクタ２２が「１０」の２の補数である「１０」に対応する２ビット、ビット群を左シフトする信号を生成する。
【００６９】
シフト制御部３０が生成するデジットシフト信号ｓｅｌ４ａ［１７：０］及びビットシフト信号ｓｅｌ４ｂ［４：０］と、ビッド群のシフトについては後述する。
【００７０】
図１１（ａ）は第１シフトセレクタ２１の内部回路ブロック図であり、図１１（ｂ）はデジットデータを示す図であり、図１１（ｃ）は図１１（ａ）に示す第１デジットセレクタの内部ブロック図である。
【００７１】
第１シフトセレクタ２１は、第１デジットセレクタ２４と、第２デジットセレクタ２５と、第３デジットセレクタ２６と、を有する。
【００７２】
図１１（ｂ）に示すように、入力データＤ［６３：０］は、１６個のデジットデータである第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］に分割され、４つの１６ビットのデータとなる。これは、図３（ｂ）で説明したものと同様である。
【００７３】
図１１（ｃ）に示すように、第１デジットセレクタ２４は、第１セレクタ２４１と、第２セレクタ２４２と、第３セレクタ２４３と、第４セレクタ２４４とを有する。第１セレクタ２４１、第２セレクタ２４２、第３セレクタ２４３及び第４セレクタ２４４のそれぞれは、１７：１セレクタであり、第５シフト方向制御信号ｄｉｒ４及びデジットシフト信号ｓｅｌ４ａ［１５：０］が入力される。第１セレクタ２４１は、これらの信号に基づいて、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＭＳＢのデータ又は「０」を第１シフトデータＤｓ１［１１］として選択し、出力する。第２セレクタ２４２は、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＭＳＢの１ビット下位のビットのデータ又は「０」を第１シフトデータＤｓ１［１０］として選択し、出力する。第３セレクタ２４３は、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＭＳＢの２ビット下位のビットのデータ又は「０」を第１シフトデータＤｓ１［９］として選択し、出力する。第４セレクタ２４４は、第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］のＬＳＢのデータ又は「０」を第１シフトデータＤｓ１［８］として選択し、出力する。
【００７４】
第１デジットセレクタ２４は、第５シフト方向制御信号ｄｉｒ４及びデジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて、第１シフトデータＤｓ１［１１：０］の上位デジットである第１シフトデータＤｓ１［１１：８］を選択し、出力する。デジットシフト信号ｓｅｌ４ａ［１５：０］が示すシフトが大きく、第１デジットセレクタ２４が選択するデジットがない場合、第１デジットセレクタ２４は、「００００」を第１シフトデータＤｓ１［１１：８］として出力する。
【００７５】
第２デジットセレクタ２５は、第１デジットセレクタ２４と同一の構成を有する。第２デジットセレクタ２５には、第５シフト方向制御信号ｄｉｒ４及びデジットシフト信号ｓｅｌ４ａ［１６：１］が入力される。第２デジットセレクタ２５は、これらの信号に基づいて、第１デジットセレクタ２４が選択したデジットの１デジット下位のデジットを選択し、第１シフトデータＤｓ１［７：４］として出力する。デジットシフト信号ｓｅｌ４ａ［１６：１］が示すシフトが大きく、第２デジットセレクタ２５が選択するデジットがない場合、第２デジットセレクタ２５は、「００００」を第１シフトデータＤｓ１［７：４］として出力する。後述するように、デジットシフト信号ｓｅｌ４ａ［１７：０］は、何れか１ビットが「１」で、他が「０」の信号であり、第１デジットセレクタ２４に入力される信号に対して１ビットずれた信号であり、これにより、選択するデジットの位置が異なる。これは、第３デジットセレクタ２６についても同様である。
【００７６】
第３デジットセレクタ２６は、第１デジットセレクタ２４と同一の構成を有する。第３デジットセレクタ２６には、第５シフト方向制御信号ｄｉｒ４及びデジットシフト信号ｓｅｌ４ａ［１７：２］が入力される。第３デジットセレクタ２６は、これらの信号に基づいて、第１デジットセレクタ２４が選択したデジットの２デジット下位のデジットを選択し、第１シフトデータＤｓ１［３：０］として出力する。デジットシフト信号ｓｅｌ４ａ［１７：２］が示すシフトが大きく、第３デジットセレクタ２６が選択するデジットがない場合、第３デジットセレクタ２６は「００００」を第１シフトデータＤｓ１［３：０］として出力する。
【００７７】
表３に、第５シフト方向制御信号ｄｉｒ４、第５シフト量制御信号ｓａ４［５：２］、デジットシフト信号ｓｅｌ４ａ［１７：０］、第１シフトデータＤｓ１［１１：０］の関係を示す真理値表を示す。
【００７８】
【表３】
2015207203.tif 000005
【００７９】
表３において、「Ｌ」が左シフト時を、「Ｒ」が右シフト時を示す。Ｄｓ１［１１：８］が第１デジットセレクタ２４の出力であり、Ｄｓ１［７：４］が第２デジットセレクタ２５の出力であり、Ｄｓ１［３：０］が第３デジットセレクタ２６の出力である。
【００８０】
表３に示すように、第５シフト方向制御信号ｄｉｒ４が「０」、ｓａ４［５：２］が「００００」の時、デジットシフト信号ｓｅｌ４ａ［９］が「１」で、それ以外のｓｅｌ４ａ［１７］−［１０］及び［８］−［０］は「０」となる。これに応じて、第１デジットセレクタ２４−２６は、第１０デジットＤ［３９：３６］〜第８デジットＤ［３１：２８］を選択して、Ｄｓｌ１［１１：８］〜Ｄｓｌ１［３：０］として出力する。また、ｓａ４［５：２］が「０００１」の時、デジットシフト信号ｓｅｌ４ａ［８］が「１」で、Ｄｓｌ１［１１：８］〜Ｄｓｌ１［３：０］は、第９デジットＤ［３５：３２］〜第７デジットＤ［２７：２４］となる。これに対して、第５シフト方向制御信号ｄｉｒ４が「１」、ｓａ４［５：２］が「００００」の時、デジットシフト信号ｓｅｌ４ａ［１０］が「１」で、それ以外のｓｅｌ４ａ［１７］−［１１］及び［９］−［０］は「０」となる。これに応じて、第１デジットセレクタ２４−２６は、第１１デジットＤ［４３：４０］〜第９デジットＤ［３５：３２］を選択して、Ｄｓｌ１［１１：８］〜Ｄｓｌ１［３：０］として出力する。このように、デジットシフト量が同じであっても、左シフトと右シフトで、選択するデジットが異なる。
【００８１】
図１２は、第２シフトセレクタ２２の内部回路ブロック図である。
【００８２】
第２シフトセレクタ２２は、５：１セレクタである第１セレクタ２２１〜第８セレクタ２２８を有する。第１セレクタ２２１〜第８セレクタ２２８のそれぞれは、ビットシフト信号ｓｅｌ４ｂ［４：０］に応じて５つのデータから１つのデータを選択する。第１セレクタ２２１は、第１シフトデータＤｓ１［１１：７］から何れか１つを選択して出力データＲ［３９］として出力する。第２セレクタ２２２は、第１シフトデータＤｓ１［１０：６］から何れか１つを選択して出力データＲ［３８］として出力する。第３セレクタ２２３は、第１シフトデータＤｓ１［９：５］から何れか１つを選択して出力データＲ［３７］として出力する。第４セレクタ２２４は、第１シフトデータＤｓ１［８：４］から何れか１つを選択して出力データＲ［３６］として出力する。第５セレクタ２２５は、第１シフトデータＤｓ１［７：３］から何れか１つを選択して出力データＲ［３５］として出力する。第６セレクタ２２６は、第１シフトデータＤｓ１［６：２］から何れか１つを選択して出力データＲ［３４］として出力する。第７セレクタ２２７は、第１シフトデータＤｓ１［５：１］から何れか１つを選択して出力データＲ［３３］として出力する。第８セレクタ２２８は、第１シフトデータＤｓ１［４：０］から何れか１つを選択して出力データＲ［３２］として出力する。表４に、ビットシフト信号ｓｅｌ４ｂ［４：０］と第１セレクタ２２１〜第８セレクタ２２８が選択するデータとの関係を示す真理値表を示す。
【００８３】
【表４】
2015207203.tif 000006
【００８４】
図１３は、シフト制御部３０の生成したビットシフト信号ｓｅｌ４ｂ［４：０］による第２シフトセレクタ２２におけるビットシフトを示す図である。図１３（ａ）は第５シフト方向制御信号ｄｉｒ４が「０」である左シフトを示す図であり、図１３（ｂ）は第５シフト方向制御信号ｄｉｒ４が「１」である右シフトを示す図である。図１３（ａ）では、説明を簡単にするため、第１シフトセレクタ２１におけるデジットシフト量は０としている。すなわち、第５シフト量制御信号ｓａ４［５：２］は「００００」であり、左シフトのときはデジットシフト信号ｓｅｌ４ａ［９］が「１」であり、右シフトのときはデジットシフト信号ｓｅｌ４ａ［１０］が「１」である。左シフトのときは、サブビット列Ｄ［３９：２８］が第１データシフトデータ［１１：０］として出力され、右シフトのときは、サブビット列Ｄ［４０：３２］が第１データシフトデータ［１１：０］として出力される。
【００８５】
第５シフト方向制御信号ｄｉｒ４が左シフトを示すとき、シフト制御部３０は、第５シフト量制御信号ｓａ４［１：０］に応じて第１データシフトデータ［１１：０］に含まれるビット群を左シフトするビットシフト信号ｓｅｌ４ｂ［４：０］を生成する。第５シフト方向制御信号ｄｉｒ４が右シフトを示すとき、シフト制御部３０は、第５シフト量制御信号ｓａ４［１：０］の２の補数に応じて第２シフトセレクタ２２がビット群を左シフトするようなビットシフト信号ｓｅｌ４ｂ［４：０］を生成する。
【００８６】
図１４は第５シフト回路１５の処理フローを示すフローチャートである。
【００８７】
まず、ステップＳ３０１において、シフト制御部３０は、入力される第５シフト量制御信号ｓａ４［５：０］及び第５シフト方向制御信号ｄｉｒ４に応じたデジットシフト量及びビットシフト量を決定する。シフト制御部３０は、決定したデジットシフト量に対応するデジットシフト信号ｓｅｌ４ａ［１７：０］を第１シフトセレクタ２１に、決定したビットシフト量に対応するビットシフト信号ｓｅｌ４ｂ［４：０］を第２シフトセレクタ２２に出力する。
【００８８】
次いで、ステップＳ３０２において、第１シフトセレクタ２１は、デジットシフト信号ｓｅｌ４ａ［１７：０］に応じてデジット単位でシフトしたサブビット列である第１シフトデータＤｓ１［１１：０］を生成し、第２シフトセレクタ２２に出力する。
【００８９】
そして、ステップＳ３０３において、第２シフトセレクタ２２は、ビットシフト信号ｓｅｌ４ｂ［４：０］に応じてビット単位でシフトした１バイトのビット群を出力データＲ［３９：３２］として生成し、出力する。
【００９０】
図１５は、左シフトと右シフトでのデジットの選択とビットシフトの違いを説明する図である。
【００９１】
図１５では、例えば、入力データ列のビット群［３９：３２］を選択し、出力データＲ［３９：３２］として出力される。言い換えれば、デジットシフト量及びビットシフト量が共に「０」の場合であるが、左シフトまたは右シフトされる場合も同様である。図１５において、（１）は、対象となる入力データの範囲を示す。また、（２）は左シフトのときに第１シフトデータＤｓ１［１１：０］として選択される入力データの範囲を示し、（３）は右シフトのときに第１シフトデータＤｓ１［１１：０］として選択される入力データの範囲を示す。
【００９２】
図１５において、（４）は第１シフトデータＤｓ１［１１：０］のビットと選択される入力データＤ［６３：０］との対応関係を示す。左シフトで且つデジットシフト量が「０」のとき、第１シフトデータＤｓ１［１１：０］としてサブビット列Ｄ［３９：２８］が選択される。一方、右シフトで且つデジットシフト量が「０」のとき、第１シフトデータＤｓ１［１１：０］としてサブビット列Ｄ［４３：３２］が選択される。このように、第１０デジットＤ［３９：３６］が上位デジットになるように選択する場合でも、左シフトの場合は、第１０デジットＤ［３９：３６］は上位デジットで、右シフトの場合は、第１０デジットＤ［３９：３６］は中間デジットで選択される。なお、ビット群［３８：３１］〜［３６：２９］を選択する場合も、サブビット列Ｄ［３９：２８］が選択される。また、ビット群［４２：３５］〜［４０：３３］を選択する場合も、サブビット列Ｄ［４３：３２］が選択される。
【００９３】
図１５において、（５）〜（８）のそれぞれは、左シフトのときの第２シフトセレクタ２２におけるビットシフトを示す。左シフトのとき、第２シフトセレクタ２２は、シフトさせるビット数に応じたビットシフト量で第１シフトデータＤｓ１［１１：０］に含まれるビット群を左シフトして出力データＲ［３９：３２］として出力する。
【００９４】
図１５において、（９）〜（１２）のそれぞれは、右シフトのときの第２シフトセレクタ２２におけるビットシフトを示す。右シフトのとき、第２シフトセレクタ２２は、シフトさせるビット数の２の補数に応じたビットシフト量で第１シフトデータＤｓ１［１１：０］に含まれるビット群を左シフトする。
【００９５】
図１５において、（１３）〜（１６）は、第２シフトセレクタ２２における左シフト及び右シフトをまとめて示す。まず、左シフト時について説明する。第２シフトセレクタ２２は、第１シフトデータＤｓ１［１１：０］に含まれるビット群［３９：３２］を０ビット左シフトして出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］をビットシフトしない。以下同様に、ビット群［３８：３１］を出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］を１ビット左シフトする。ビット群［３７：３０］を出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］を２ビット左シフトする。ビット群［３６：２９］を出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］を３ビット左シフトする。
【００９６】
次に、右シフト時について説明する。第２シフトセレクタ２２は、第１シフトデータＤｓ１［１１：０］に含まれるビット群［３９：３２］を０ビット右シフトして出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］を４ビット左シフトする。第２シフトセレクタ２２がビット群［３９：３２］左シフトするビット数である４ビットは、「００」の２の補数に対応する。以下同様に、ビット群［４０：３３］を出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］を「０１」の２の補数に対応する３ビット左シフトする。ビット群［４１：３４］を出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］を「１０」の２の補数に対応する２ビット左シフトする。ビット群［４２：３５］を出力データＲ［３９：３２］として出力するとき、第１シフトデータＤｓ１［１１：０］を「１１」の２の補数に対応する１ビット左シフトする。
【００９７】
図１６（ａ）は第５シフト回路１５の左シフト処理の一例を示す図であり、図１６（ｂ）は第５シフト回路１５の左シフト処理の他の例を示す図である。図１６（ａ）は、ビット群Ｄ［１３：６］を２６ビット左シフトして出力データＲ［３９：３２］として第５シフト回路１５が出力する処理を示す図である。図１６（ｂ）は、ビット群Ｄ［４：０］を３５ビット左シフトして出力データＲ［３９：３２］として第５シフト回路１５が出力する処理を示す図である。
【００９８】
２６ビット左シフトする場合、６デジット左シフトし２ビット左シフトするので、シフト制御部３０は、第５シフト量制御信号ｓａ４［５：０］として「０１１０１０」が入力されると共に第５シフト方向制御信号ｄｉｒ４として「０」が入力される。シフト制御部３０は、［３］が「１」であり他のビットが「０」であるデジットシフト信号ｓｅｌ４ａ［１７：０］を生成し、第１シフトセレクタ２１に出力する。シフト制御部３０は、［２］が「１」であり他のビットが「０」であるビットシフト信号ｓｅｌ４ｂ４［４：０］を生成し、第２シフトセレクタ２２に出力する。第１シフトセレクタ２１は、第１左シフトデータＤｓ１［１１：０］として入力データＤ［１５：４］を選択する。次いで、第２シフトセレクタ２２は、入力データＤ［１３：６］を出力データＲ［３９：３２］として選択する。
【００９９】
３５ビット左シフトする場合、８デジット左シフトし３ビット左シフトするので、シフト制御部３０は、第５シフト量制御信号ｓａ４［５：０］として「１０００１１」が入力されると共に第５シフト方向制御信号ｄｉｒ４として「０」が入力される。シフト制御部３０は、［１］が「１」であり他のビットが「０」であるデジットシフト信号ｓｅｌ４ａ［１７：０］を生成し、第１シフトセレクタ２１に出力する。シフト制御部３０は、［３］が「１」であり他のビットが「０」であるビットシフト信号ｓｅｌ４ｂ４［４：０］を生成し、第２シフトセレクタ２２に出力する。第１シフトセレクタ２１は、第１左シフトデータＤｓ１［１１：４］として入力データＤ［７：０］を選択し、第１左シフトデータＤｓ［３：０］のそれぞれのデータとして「０」を選択する。次いで、第２左シフトセレクタ２２は、第２シフトデータ出力データＲ［３９：３５］として入力データＤ［４：０］を選択し、出力データＲ［３４：３２］のそれぞれのデータとして「０」を選択する。
【０１００】
図１７（ａ）は第５シフト回路１５の右シフト処理の一例を示す図であり、図１７（ｂ）は第５シフト回路１５の右シフト処理の他の例を示す図である。図１７（ａ）は、ビット群Ｄ［６１：５４］を２２ビット右シフトビット群出力データＲ［３９：３２］として第５シフト回路１５が出力する処理を示す図である。図１７（ｂ）は、ビット群Ｄ［６３：５７］を２５ビット右シフトして出力データＲ［３９：３２］として第５シフト回路１５が出力する処理を示す図である。
【０１０１】
２２ビット右シフトする場合、５デジット右シフトし２ビット右シフトするので、シフト制御部３０は、第５シフト量制御信号ｓａ４［５：０］として「０１０１１０」が入力されると共に第５シフト方向制御信号ｄｉｒ４として「１」が入力される。シフト制御部３０は、［１５］が「１」であり他のビットが「０」であるデジットシフト信号ｓｅｌ４ａ［１７：０］を生成し、第１シフトセレクタ２１に出力する。シフト制御部３０は、［２］が「１」であり他のビットが「０」であるビットシフト信号ｓｅｌ４ｂ４［４：０］を生成し、第２シフトセレクタ２２に出力する。第１シフトセレクタ２１は、第１シフトデータＤｓ１［１１：０］として入力データＤ［６３：５２］を選択する。次いで、第２シフトセレクタ２２は、入力データＤ［６１：５４］を出力データＲ［３４：３２］として選択する。
【０１０２】
２５ビット右シフトする場合、４デジット右シフトし１ビット右シフトするので、シフト制御部３０は、第５シフト量制御信号ｓａ４［５：０］として「０１１００１」が入力されると共に第５シフト方向制御信号ｄｉｒ４として「１」が入力される。シフト制御部３０は、［１６］が「１」であり他のビットが「０」であるデジットシフト信号ｓｅｌ４ａ［１７：０］を生成し、第１シフトセレクタ２１に出力する。シフト制御部３０は、［３］が「１」であり他のビットが「０」であるビットシフト信号ｓｅｌ４ｂ４［４：０］を生成し、第２シフトセレクタ２２に出力する。第１シフトセレクタ２１は、第１シフトデータＤｓ１［７：０］として入力データＤ［６３：５６］を選択し、第１シフトデータＤｓ１［１１：８］のそれぞれのデータとして「０」を選択する。次いで、第２シフトセレクタ２２は、出力データＲ［３８：３２］として入力データＤ［６３：５７］を選択し、出力データＲ［３９］のデータとして「０」を選択する。
【０１０３】
第１シフト回路１１〜第４シフト回路１４及び第６シフト回路１６〜第８シフト回路１８のそれぞれは第５シフト回路１５と対応する構成を有するため、構成及び機能の詳細な説明は省略する。
【０１０４】
以上説明したように、シフト回路１は、入力データＤ［６３：０］に含まれるバイト長を跨ぐビット群を左シフト又は右シフトすることができるので、ビット群単位で並び替えが可能である。
【０１０５】
さらに、シフト回路１は、一方向のビットシフト回路で双方向シフトを実現しているため、左シフト部と右シフト部の２つのシフト回路を有する関連するシフト回路９００と比較して回路面積を小さくすることができる。特許文献１に記載されたシフト回路も同様に、左ビットシフトと右ビットシフトを別々の行っていると考えられるので、シフト回路１は、特許文献１に記載されたシフト回路に比べて回路面積を小さくすることができる。
【０１０６】
また、シフト部２０は、２段のシフト回路で形成されるので、３段のシフト回路で形成される関連するシフト回路９００よりも高速で双方向シフトを実現できる。また、シフト回路１では、第１シフト回路１１〜第８シフト回路１８は、同じ回路構成で実現できるため、回路設計が容易である。このため、シフト回路１は、２つのシフト回路を有する関連するシフト回路９００と比較して自動配置配線ツールで配置配線したときに集積度が高くなる。
【０１０７】
図１８は、第２実施形態に係るシフト回路の回路ブロック図である。
第２実施形態のシフト回路は、６４ビットの入力データ列に４ビットごとに１ビットのパリティが追加された８０ビットのデータ列が入力される。第２実施形態のシフト回路では、各シフト回路が８ビットのビット群および対応する２ビットのパリティビットを選択し、選択した８ビットのビット群にパリティプリディクションの結果を付加して出力することが第１実施形態と相違する。
【０１０８】
第２実施形態のシフト回路２は、第１シフト回路３１〜第８シフト回路３８を有する。第１〜第８シフト回路３１〜３８のそれぞれは、入力パリティデータＤ［１５：０］が入力され、出力する８ビットのデータに対応する２ビットのパリティビットを選択する。したがって、シフト回路２は、並び替えた出力データＲ［６３：０］及び出力パリティデータＲＤＰ［１５：０］を出力する。
【０１０９】
以下、第５シフト回路３５を例として、第１シフト回路３１〜第８シフト回路３８の構成及び機能について説明する。
【０１１０】
図１９は、第５シフト回路３５の内部回路ブロック図である。
【０１１１】
第５シフト回路３５は、シフト部４０と、シフト制御部３０と、を有する。シフト制御部３０は、第１実施形態のものと同じである。シフト部４０は、第１シフトセレクタ４１と、第２シフトセレクタ２２と、パリティ回路４３と、パリティ選択回路４７と、を有する。第２シフトセレクタ２２は、第１実施形態のものと同じである。第１シフトセレクタ４１は、第１実施形態と同様に３デジットのデータ群を選択すると共に、選択するデータ群に対応する３ビットのパリティビットを入力パリティデータＤ［１５：０］から選択する。第１シフトセレクタ４１は、選択した３デジットのデータ群および３ビットのパリティビットを、第１シフトデータＤｓ１「１１：０」及び第１シフトパリティデータＤｓｐ［２：０］として出力する。パリティ回路４３は、第１シフトデータＤｓ１「１１：０」、第１シフトパリティデータＤｓｐ［２：０］及び第５シフト方向制御信号ｄｉｒ４とを使用してパリティプリディクションを実行する。パリティ回路４３は、第２０シフトパリティＤｓｐ０［１：０］〜第２４シフトパリティＤｓｐ４［１：０］を実行したパリティプリディクションの結果として生成する。パリティ選択回路４７は、第５シフト方向制御信号ｄｉｒ４に基づいて第２０シフトパリティＤｓｐ０［１：０］〜第２４シフトパリティＤｓｐ４［１：０］の１つを選択して出力パリティデータＲＤＰ［９：８］を出力する。
【０１１２】
図２０（ａ）は第１シフトセレクタ４１の内部回路ブロック図であり、図２０（ｂ）は図２０（ａ）に示す第１デジットセレクタの内部ブロック図である。
【０１１３】
第１シフトセレクタ４１は、第１デジットセレクタ４４〜第３デジットセレクタ４６を有する。第１デジットセレクタ４４〜第３デジットセレクタ４６は、３デジットのデータ群と共に、入力パリティデータＤ［１５：０］から３ビットのパリティビットを選択する。
【０１１４】
第１デジットセレクタ４４は、デジットシフト信号ｓｅｌ４ａ［１５：０］に基づいて第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］の何れか、及び対応するパリティ用データ又は「０」を選択する。第１デジットセレクタ４４は、選択したデジットを第１シフトデータＤｓ１［１１：８］として、選択したパリティ用データ又は「０」をシフトパリティデータＤｓｐ［２］として出力する。例えば、第１デジットセレクタ４４は、デジットシフト信号ｓｅｌ４ａ［１５：０］が第１デジットＤ［３：０］を選択することを示すとき、第１デジットＤ［３：０］のパリティプリディクション用データを選択する。第１デジットセレクタ４４が選択するデジットがなく第１シフトデータＤｓ１［１１：８］として「００００」が出力される場合、第１デジットセレクタ４４は、「０」をシフトパリティデータＤｓｐ［２］として出力する。
【０１１５】
第２デジットセレクタ４５は、第１デジットセレクタ４４と同一の構成を有する。第２デジットセレクタ４５は、デジットシフト信号ｓｅｌ４ａ［１６：１］に基づいて第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］の何れか、及び対応するパリティ用データ又は「０」を選択する。第２デジットセレクタ４５は、選択したデジットを第１シフトデータＤｓ１［７：４］として、選択したパリティ用データ又は「０」をシフトパリティデータＤｓｐ［１］として出力する。
【０１１６】
第３デジットセレクタ４６は、第１デジットセレクタ４４と同一の構成を有する。第３デジットセレクタ４６は、デジットシフト信号ｓｅｌ４ａ［１７：２］に基づいて第１デジットＤ［３：０］〜第１６デジットＤ［６３：６０］の何れか、及び対応するパリティ用データ又は「０」を選択する。第３デジットセレクタ４６は、選択したデジットを第１シフトデータＤｓ１［３：０］として、選択したパリティ用データ又は「０」をシフトパリティデータＤｓｐ［０］として出力する。
【０１１７】
以上の通り、第１シフトセレクタ４１は、第１シフトデータＤｓ１［１１：０］の上位デジットＤｓ１［１１：８］、中間デジットＤｓ１［７：８］及び下位デジットＤｓ１［３：０］のパリティプリディクションの結果としてシフトパリティデータＤｓｐ［２：０］を出力する。
【０１１８】
前述のように、パリティ回路４３は、第１シフトセレクタ４１から入力される第１シフトデータＤｓ１［１１：０］と、シフトパリティデータＤｓｐ［２：０］と、第５シフト方向制御信号ｄｉｒ４とを使用してパリティプリディクションを実行する。パリティ回路４３は、第２シフトセレクタ２２におけるビットシフトに応じて５つのパリティプリディクション結果である第２０シフトパリティデータＤｓｐ０［１：０］〜第２４シフトパリティＤｓｐ４［１：０］を生成する。
【０１１９】
第２０シフトパリティＤｓｐ０［１：０］は、第２シフトセレクタ２２においてビットシフトしなかったときの出力データＲ［３９：３２］の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第２１シフトパリティデータＤｓｐ１［１：０］は、第２シフトセレクタ２２において１ビット左シフトしたときの出力データＲ［３９：３２］の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第２２シフトパリティＤｓｐ２［１：０］は、第２シフトセレクタ２２において２ビット左シフトしたときの出力データＲ［３９：３２］の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第２３シフトパリティＤｓｐ３［１：０］は、第２シフトセレクタ２２において３ビット左シフトしたときの出力データＲ［３９：３２］の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第２４シフトパリティＤｓｐ４［１：０］は、第２シフトセレクタ２２において４ビット左シフトしたときの出力データＲ［３９：３２］の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。
【０１２０】
図２１は、パリティ選択回路４７の内部回路ブロック図である。
【０１２１】
パリティ選択回路４７は、第１セレクタ４７１と、第２セレクタ４７２とを有する。第１セレクタ４７１及び第２セレクタ４７２のそれぞれは、ビットシフト信号ｓｅｌ４ｂ［４：０］に応じて５つのデータから１つのデータを選択する。ビットシフト信号ｓｅｌ４ｂ［４：０］がビットシフトしないことを示すとき、第１セレクタ４７１及び第２セレクタ４７２のそれぞれは、第２０シフトパリティＤｓｐ０［１：０］を出力パリティデータＲＤＰ［９：８］として出力する。ビットシフト信号ｓｅｌ４ｂ［４：０］が１ビット左シフトを示すとき、第１セレクタ４７１及び第２セレクタ４７２のそれぞれは、第２１シフトパリティＤｓｐ１［１：０］を出力パリティデータＲＤＰ［９：８］として出力する。ビットシフト信号ｓｅｌ４ｂ［４：０］が２ビット左シフトを示すとき、第１セレクタ４７１及び第２セレクタ４７２のそれぞれは、第２２シフトパリティＤｓｐ２［１：０］を出力パリティデータＲＤＰ［９：８］として出力する。ビットシフト信号ｓｅｌ４ｂ［４：０］が３ビット左シフトを示すとき、第１セレクタ４７１及び第２セレクタ４７２のそれぞれは、第２３シフトパリティＤｓｐ３［１：０］を出力パリティデータＲＤＰ［９：８］として出力する。ビットシフト信号ｓｅｌ４ｂ［４：０］が４ビット左シフトを示すとき、第１セレクタ４７１及び第２セレクタ４７２のそれぞれは、第２４シフトパリティＤｓｐ４［１：０］を出力パリティデータＲＤＰ［９：８］として出力する。
【０１２２】
シフト回路２では、シフト部４０の第１シフトセレクタ４１でシフトされた第１シフトデータＤｓ１［１１：０］に対応する第１シフトパリティＤｓｐ［２：０］を使用して、パリティ回路４３がパリティプリディクションを実行する。シフト回路２では、入力データＤ［６３：０］から選択可能な１バイトのシフト信号の全てについてパリティプリディクションを実行するのではなく、第１シフトデータＤｓ１［１１：０］から選択可能な１バイトのシフト信号についてのみパリティプリディクションを実行する。シフト回路２では、パリティプリディクションを実行する１バイトのシフト信号の数を少なくすることができるので、パリティ回路４３の回路規模を削減できる。
【０１２３】
以上、第１実施形態のシフト回路１及び第２実施形態のシフト回路について説明した。実施形態のシフト回路は、６４ビットのビット列である入力データＤ［６３：０］に含まれる１バイトのビット群をシフトさせている。しかしながら、実施形態のシフト回路は、６４ビットより大きいビット列又は６４ビットよりも小さいビット列に含まれるビット群をシフトさせる構成としてもよい。
【０１２４】
シフト回路１及び２では、第１シフトセレクタ２１でシフトされるサブビット列である第１シフトデータＤｓ１［１１：０］のビット量は、出力データとして出力される１バイトのビット群に１デジットの隣接ビット群を付加して生成される。しかしながら、サブビット列で付加される隣接ビット群のビット量は、ビット群のビット量に応じて、１デジットよりも多くてもよく、１デジットよりも少なくてもよい。例えば、実施形態のシフト回路は、６４ビットのビット列を１バイトよりも大きいビット群ごと又は１バイトよりも小さいビット群ごとにシフトさせる構成としてもよい。実施形態のシフト回路１は、第１シフトセレクタが選択するサブビット列として３デジットの第１シフトデータＤｓ１［１１：０］が使用されるが、３デジットよりも長いサブビット列又は３デジットよりも短いサブビット列が選択される構成としてもよい。例えば、６４ビットのビット列に含まれる２バイトのビット群をシフトさせる場合、第１シフトセレクタが３バイトのサブビット列を選択する構成とすることができる。
【０１２５】
また、シフト回路１は、左方向にビット単位でビット群をシフトさせるシフト回路として第２シフトセレクタ２２が配置されるが、第２シフトセレクタが右方向にビット単位でビット群をシフトさせる構成としてもよい。第２シフトセレクタが右方向にビット単位でビット群をシフトさせる場合、右シフトするときはシフトさせたい量に応じてビット群をシフトさせるが、左シフトするときはシフトさせたい量の２の補数に応じてビット群をシフトさせる構成となる。
【０１２６】
また、シフト回路１は、第１シフト回路１１〜第８シフト回路１８のそれぞれがシフト制御部３０を有するが、第１シフト回路１１〜第８シフト回路１８のそれぞれにシフト量制御信号を出力する単一のシフト制御部を有する構成としてもよい。
【０１２７】
シフト回路１及び２は、ＣＰＵ（Central Processing Unit、中央演算処理装置）等の演算装置に搭載することができる。シフト回路１及び２を搭載する演算装置は、種々のデータフォーマットのデータを高速に演算するためにデータの配列を並び替えることが可能になる。
【０１２８】
図２２は、シフト回路１を搭載した演算装置の一例を示す図である。
図２２の例では、データは、２バイト単位で処理される。
【０１２９】
演算装置５０は、シフト回路１と、ラッチ回路５１と、演算回路５２と、制御回路５３とを有する。
【０１３０】
シフト回路１は、第１〜第８シフト量制御信号及び第１〜第８シフト方向制御信号に応じて、入力データＤ［６３：０］内の２バイトデータをシフトすると共に２バイト毎にビットを並び替えて出力データＲ［６３：０］として出力する。
【０１３１】
ラッチ回路５１は、第１ラッチ部５１１と、第２ラッチ部５１２と、第３ラッチ部５１３と、第４ラッチ部５１４とを有する。第１ラッチ部５１１はシフト回路１の出力信号Ｒ［１５：０］をラッチし、第２ラッチ部５１２はシフト回路１の出力信号Ｒ［３１：１６］をラッチする。第３ラッチ部５１３はシフト回路１の出力信号Ｒ［４７：３２］をラッチし、第４ラッチ部５１４はシフト回路１の出力信号Ｒ［６３：４８］をラッチする。
【０１３２】
演算回路５２は、第１演算部５２１と、第２演算部５２２と、第３演算部５２３と、第４演算部５２４とを有する。第１演算部５２１は、第１ラッチ部５１１でラッチされた出力信号Ｒ［１５：０］に所定の演算処理を実行する。第２演算部５２２は、第２ラッチ部５１２でラッチされた出力信号Ｒ［３１：１６］に所定の演算処理を実行する。第３演算部５２３は、第３ラッチ部５１３でラッチされた出力信号Ｒ［４７：３２］に所定の演算処理を実行する。第４演算部５２４は、第４ラッチ部５１４でラッチされた出力信号Ｒ［６３：４８］に所定の演算処理を実行する。
【０１３３】
制御回路５３は、演算回路５２で実行される演算処理に応じて、シフト回路１の入力データＤ［６３：０］を２バイトのビット群毎にビット群を並び替えると共にシフトするように第１〜第８シフト量制御信号及び第１〜第８シフト方向制御信号を出力する。
【０１３４】
演算装置５０では、シフト回路１は、８バイトの入力データＤ［６３：０］を２バイトのビット群毎にビット群を並び替えると共にビット群毎にシフトして、第１演算部５２１〜第４演算部５２４に演算処理用のデータとしてそれぞれ出力する。
【符号の説明】
【０１３５】
１、２    シフト回路
１１〜１８、３１〜３８    第１シフト回路〜第８シフト回路
２０    シフト部
２１、４１    第１シフトセレクタ（第１セレクタ）
２２    第２シフトセレクタ（第２セレクタ）
３０    シフト制御部
【図１】
2015207203.tif 000007
【図２】
2015207203.tif 000008
【図３】
2015207203.tif 000009
【図４】
2015207203.tif 000010
【図５】
2015207203.tif 000011
【図６】
2015207203.tif 000012
【図７】
2015207203.tif 000013
【図８】
2015207203.tif 000014
【図９】
2015207203.tif 000015
【図１０】
2015207203.tif 000016
【図１１】
2015207203.tif 000017
【図１２】
2015207203.tif 000018
【図１３】
2015207203.tif 000019
【図１４】
2015207203.tif 000020
【図１５】
2015207203.tif 000021
【図１６】
2015207203.tif 000022
【図１７】
2015207203.tif 000023
【図１８】
2015207203.tif 000024
【図１９】
2015207203.tif 000025
【図２０】
2015207203.tif 000026
【図２１】
2015207203.tif 000027
【図２２】
2015207203.tif 000028