(57)【要約】【課題】エンディアン変換回路のような専用回路を別途備えなくとも、エンディアン変換を行う情報処理装置を提供する。【解決手段】情報処理装置１００は、双方向１ビットシフタ１１０〜双方向２４ビットシフタ１４０を直列に接続することによって構成されたバレルシフタと、シフト演算処理とエンディアン変換処理とのいずれかを示すエンディアン変換制御信号ＳＥを出力する制御部１０３と、双方向８ビットシフタ１３０、双方向２４ビットシフタ１４０においてシフト演算を行って得られたデータを使用してエンディアン変換処理を行うことによってデータを生成するエンディアン変換部１０５と、エンディアン変換制御信号ＳＥがシフト演算処理を示す信号である場合は、双方向２４ビットシフタ１４０から出力されたデータを選択し、エンディアン変換処理を示す信号である場合は、エンディアン変換部１０５から出力されたデータを選択するセレクタ１０６とを備える。【選択図】図１
2009230591.tif 000002
【特許請求の範囲】
【請求項１】
複数のビットシフタをデータの流れる方向に直列に接続することによって構成されたバレルシフタと、
データをビットシフトする第１の演算処理とデータを第１のエンディアンから第２のエンディアンに変換する第２の演算処理とのいずれかを示す制御信号を出力する制御部と、
前記バレルシフタのいずれかのビットシフタにおいてシフト演算を行って得られたデータを使用して前記第２の演算処理を行うことによってデータを生成するエンディアン変換部と、
前記制御信号が前記第１の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータを出力し、前記制御信号が前記第２の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータを出力するセレクタと
を備えることを特徴とする情報処理装置。
【請求項２】
前記バレルシフタは、３２ビットの第１のデータが入力する側から、双方向１ビットシフタ、双方向３ビットシフタ、双方向８ビットシフタ、双方向２４ビットシフタの順に直列に接続することによって構成されたものであり、
前記双方向１ビットシフタは、前記第１のデータに対してシフト演算を行って３４ビットの第２のデータを生成するものであり、
前記双方向３ビットシフタは、前記第２のデータに対してシフト演算を行って３８ビットの第３のデータを生成するものであり、
前記双方向８ビットシフタは、前記第１のデータに対してシフト演算を行って５４ビットの第４のデータを生成するものであり、
前記双方向２４ビットシフタは、前記第４のデータに対してシフト演算を行って３２ビットの第５のデータを生成するものであり、
前記エンディアン変換部は、前記第５のデータにおける１バイト目のデータ、前記第４のデータから両側の１１ビットを除いた部分における２バイト目のデータ、前記第５のデータにおける３バイト目のデータ、前記第４のデータから両側の１１ビットを除いた部分における４バイト目のデータの順に配列した第６のデータを生成するものであり、
前記セレクタは、前記制御信号が前記第１の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第５のデータを出力し、前記制御信号が前記第２の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第６のデータを出力するものである
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、
前記デコーダは、
前記制御信号が前記第２の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、
前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、
前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、
前記双方向８ビットシフタに右ローテートとした結果を第４のデータとして出力させ、
前記双方向２４ビットシフタに右ローテートとした結果を第５のデータとして出力させ、
前記制御信号が前記第２の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、
前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、
前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、
前記双方向８ビットシフタに左ローテートとした結果を第４のデータとして出力させ、
前記双方向２４ビットシフタに左ローテートとした結果を第５のデータとして出力させるものである
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記バレルシフタは、３２ビットの第１のデータが入力する側から、双方向１ビットシフタ、双方向３ビットシフタ、双方向８ビットシフタ、双方向１９ビットシフタの順に直列に接続することによって構成されたものであり、
前記双方向１ビットシフタは、前記第１のデータに対してシフト演算を行って３４ビットの第２のデータを生成するものであり、
前記双方向３ビットシフタは、前記第２のデータに対してシフト演算を行って３８ビットの第３のデータを生成するものであり、
前記双方向８ビットシフタは、前記第３のデータに対してシフト演算を行って４４ビットの第４のデータを生成するものであり、
前記双方向１９ビットシフタは、前記第４のデータに対してシフト演算を行って３２ビットの第５のデータを生成するものであり、
前記エンディアン変換部は、前記第４のデータから両側の６ビットを除いた部分における３バイト目のデータ、２バイト目のデータ、１バイト目のデータ、４バイト目のデータの順に配列した第６のデータを生成するものであり、
前記セレクタは、前記制御信号が前記第１の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第５のデータを出力し、前記制御信号が前記第２の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第６のデータを出力するものである
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、
前記デコーダは、
前記制御信号が前記第２の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、
前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、
前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、
前記双方向８ビットシフタに右ローテートとした結果を第４のデータとして出力させ、
前記双方向１９ビットシフタにシフトしなかった結果を第５のデータとして出力させ、
前記制御信号が前記第２の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、
前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、
前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、
前記双方向８ビットシフタに左ローテートとした結果を第４のデータとして出力させ、
前記双方向１９ビットシフタにシフトしなかった結果を第５のデータとして出力させるものである
ことを特徴とする請求項４に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バレルシフタを使用してシフト演算とエンディアン変換とを行う情報処理装置に関する。
【背景技術】
【０００２】
従来、１ワードが複数バイトで構成されるデータをメモリ上に配置する方式として、ビッグエンディアン、リトルエンディアンなどが知られている。一般に普及しているコンピュータは、これらのいずれかが採用されている。
【０００３】
ここで、ビッグエンディアンとは、１ワードが複数バイトで構成されるデータを、データの上位バイトから所定のサイズずつ、メモリに並べる方式である。また、リトルエンディアンとは、１ワードが複数バイトで構成されるデータを、データの下位バイトから所定のサイズずつ、メモリに並べる方式である。
【０００４】
このため、ビッグエンディアンを採用するシステムからリトルエンディアンを採用するシステムに移行する場合、または、その逆の場合において、データの並びに伴う問題が生じる。例えば、ロング・ワード・アクセス等でアクセスするデータ並び、およびアドレス並びに問題が生じる。そのため、エンディアンの違いによるバイト並びの変換（以下、エンディアン変換と呼称する。）を行う必要がある（例えば、特許文献１参照。）。
【０００５】
＜構成＞
以下、従来の技術におけるエンディアン変換を行うエンディアン変換回路について説明する。
【０００６】
図８に示されるように、エンディアン変換回路１０は、データの入れ替えを行うセレクタ１１，１２，１３，１４を備える。各セレクタは、制御信号に応じて入力源を選択する。そして、各エンディアン変換モード（００，０１，１０）に応じた制御信号が各セレクタに入力すると、そのモードで選択されるデータ部分（Ｄ［３１：２４］，Ｄ［２３：１６］，Ｄ［１５：８］，Ｄ［７：０］）が各セレクタから出力される。これによって、エンディアン変換が実現される。
【特許文献１】特開２０００−３０５８９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来において、ＣＰＵ等の情報処理装置でエンディアン変換を行うためには、エンディアン変換回路１０のような専用回路を、情報処理装置に別途備える必要がある。さらに、エンディアン変換の種類ごとに専用回路を備える必要がある。
【０００８】
そこで、本発明は、上記問題に鑑みてなされたものであり、エンディアン変換回路のような専用回路を別途備えなくとも、エンディアン変換を行う情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明に係わる情報処理装置は、下記に示す特徴を備える。
（ａ）（ａ１）複数のビットシフタをデータの流れる方向に直列に接続することによって構成されたバレルシフタと、（ａ２）データをビットシフトする第１の演算処理とデータを第１のエンディアンから第２のエンディアンに変換する第２の演算処理とのいずれかを示す制御信号を出力する制御部と、（ａ３）前記バレルシフタのいずれかのビットシフタにおいてシフト演算を行って得られたデータを使用して前記第２の演算処理を行うことによってデータを生成するエンディアン変換部と、（ａ４）前記制御信号が前記第１の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータを出力し、前記制御信号が前記第２の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータを出力するセレクタとを備える。
【００１０】
これによって、ＣＰＵなどの情報処理装置において、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを制御して、シフト演算とエンディアン変換とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【００１１】
さらに、（ｂ）（ｂ１）前記バレルシフタは、３２ビットの第１のデータが入力する側から、双方向１ビットシフタ、双方向３ビットシフタ、双方向８ビットシフタ、双方向２４ビットシフタの順に直列に接続することによって構成されたものであり、（ｂ２）前記双方向１ビットシフタは、前記第１のデータに対してシフト演算を行って３４ビットの第２のデータを生成するものであり、（ｂ３）前記双方向３ビットシフタは、前記第２のデータに対してシフト演算を行って３８ビットの第３のデータを生成するものであり、（ｂ４）前記双方向８ビットシフタは、前記第１のデータに対してシフト演算を行って５４ビットの第４のデータを生成するものであり、（ｂ５）前記双方向２４ビットシフタは、前記第４のデータに対してシフト演算を行って３２ビットの第５のデータを生成するものであり、（ｂ６）前記エンディアン変換部は、前記第５のデータにおける１バイト目のデータ、前記第４のデータから両側の１１ビットを除いた部分における２バイト目のデータ、前記第５のデータにおける３バイト目のデータ、前記第４のデータから両側の１１ビットを除いた部分における４バイト目のデータの順に配列した第６のデータを生成するものであり、（ｂ７）前記セレクタは、前記制御信号が前記第１の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第５のデータを出力し、前記制御信号が前記第２の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第６のデータを出力するものであるとしてもよい。
【００１２】
これによって、左３１ビット〜右３１ビットのシフト演算と、３２ビットのデータに対するエンディアン変換とを択一的に実行することができる。
さらに、（ｃ）（ｃ１）前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、（ｃ２）前記デコーダは、（ｃ２−１）前記制御信号が前記第２の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、（ｃ２−１ａ）前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｃ２−１ｂ）前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｃ２−１ｃ）前記双方向８ビットシフタに右ローテートとした結果を第４のデータとして出力させ、（ｃ２−１ｄ）前記双方向２４ビットシフタに右ローテートとした結果を第５のデータとして出力させ、（ｃ２−２）前記制御信号が前記第２の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、（ｃ２−２ａ）前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｃ２−２ｂ）前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｃ２−２ｃ）前記双方向８ビットシフタに左ローテートとした結果を第４のデータとして出力させ、（ｃ２−２ｄ）前記双方向２４ビットシフタに左ローテートとした結果を第５のデータとして出力させるものであるとしてもよい。
【００１３】
これによって、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
または、（ｄ）（ｄ１）前記バレルシフタは、３２ビットの第１のデータが入力する側から、双方向１ビットシフタ、双方向３ビットシフタ、双方向８ビットシフタ、双方向１９ビットシフタの順に直列に接続することによって構成されたものであり、（ｄ２）前記双方向１ビットシフタは、前記第１のデータに対してシフト演算を行って３４ビットの第２のデータを生成するものであり、（ｄ３）前記双方向３ビットシフタは、前記第２のデータに対してシフト演算を行って３８ビットの第３のデータを生成するものであり、（ｄ４）前記双方向８ビットシフタは、前記第３のデータに対してシフト演算を行って４４ビットの第４のデータを生成するものであり、（ｄ５）前記双方向１９ビットシフタは、前記第４のデータに対してシフト演算を行って３２ビットの第５のデータを生成するものであり、（ｄ６）前記エンディアン変換部は、前記第４のデータから両側の６ビットを除いた部分における３バイト目のデータ、２バイト目のデータ、１バイト目のデータ、４バイト目のデータの順に配列した第６のデータを生成するものであり、（ｄ７）前記セレクタは、前記制御信号が前記第１の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第５のデータを出力し、前記制御信号が前記第２の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第６のデータを出力するものであるとしてもよい。
【００１４】
これによって、左３１ビット〜右３１ビットのシフト演算と、３２ビットのデータに対するエンディアン変換とを択一的に実行することができる。
さらに、（ｅ）（ｅ１）前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、（ｅ２）前記デコーダは、（ｅ２−１）前記制御信号が前記第２の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、（ｅ２−１ａ）前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｅ２−１ｂ）前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｅ２−１ｃ）前記双方向８ビットシフタに右ローテートとした結果を第４のデータとして出力させ、（ｅ２−１ｄ）前記双方向１９ビットシフタにシフトしなかった結果を第５のデータとして出力させ、（ｅ２−２）前記制御信号が前記第２の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、（ｅ２−２ａ）前記双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｅ２−２ｂ）前記双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｅ２−２ｃ）前記双方向８ビットシフタに左ローテートとした結果を第４のデータとして出力させ、（ｅ２−２ｄ）前記双方向１９ビットシフタにシフトしなかった結果を第５のデータとして出力させるものであるとしてもよい。
【００１５】
これによって、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【発明の効果】
【００１６】
本発明によれば、ＣＰＵなどの情報処理装置において、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを制御して、シフト演算とエンディアン変換とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。また、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【発明を実施するための最良の形態】
【００１７】
（実施の形態１）
以下、本発明に係わる実施の形態１について説明する。
＜概要＞
本実施の形態における情報処理装置は、下記（ａ）〜（ｃ）に示す特徴を備える。
【００１８】
（ａ）（ａ１）複数のビットシフタをデータの流れる方向に直列に接続することによって構成されたバレルシフタと、（ａ２）データをビットシフトする第１の演算処理とデータを第１のエンディアンから第２のエンディアンに変換する第２の演算処理とのいずれかを示す制御信号を出力する制御部と、（ａ３）バレルシフタのいずれかのビットシフタにおいてシフト演算を行って得られたデータを使用して第２の演算処理を行うことによってデータを生成するエンディアン変換部と、（ａ４）制御信号が第１の演算処理を示す信号である場合は、バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータを出力し、制御信号が第２の演算処理を示す信号である場合は、エンディアン変換部において生成されたデータを出力するセレクタとを備える。
【００１９】
（ｂ）（ｂ１）バレルシフタは、３２ビットの第１のデータが入力する側から、双方向１ビットシフタ、双方向３ビットシフタ、双方向８ビットシフタ、双方向２４ビットシフタの順に直列に接続することによって構成されたものであり、（ｂ２）双方向１ビットシフタは、第１のデータに対してシフト演算を行って３４ビットの第２のデータを生成するものであり、（ｂ３）双方向３ビットシフタは、第２のデータに対してシフト演算を行って３８ビットの第３のデータを生成するものであり、（ｂ４）双方向８ビットシフタは、第１のデータに対してシフト演算を行って５４ビットの第４のデータを生成するものであり、（ｂ５）双方向２４ビットシフタは、第４のデータに対してシフト演算を行って３２ビットの第５のデータを生成するものであり、（ｂ６）エンディアン変換部は、第５のデータにおける１バイト目のデータ、第４のデータから両側の１１ビットを除いた部分における２バイト目のデータ、第５のデータにおける３バイト目のデータ、第４のデータから両側の１１ビットを除いた部分における４バイト目のデータの順に配列した第６のデータを生成するものであり、（ｂ７）セレクタは、制御信号が第１の演算処理を示す信号である場合は、バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして第５のデータを出力し、制御信号が第２の演算処理を示す信号である場合は、エンディアン変換部において生成されたデータとして第６のデータを出力するものである。
【００２０】
（ｃ）（ｃ１）情報処理装置は、制御部から出力された制御信号に応じて、バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、（ｃ２）デコーダは、（ｃ２−１）制御信号が第２の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、（ｃ２−１ａ）双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｃ２−１ｂ）双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｃ２−１ｃ）双方向８ビットシフタに右ローテートとした結果を第４のデータとして出力させ、（ｃ２−１ｄ）双方向２４ビットシフタに右ローテートとした結果を第５のデータとして出力させ、（ｃ２−２）制御信号が第２の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、（ｃ２−２ａ）双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｃ２−２ｂ）双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｃ２−２ｃ）双方向８ビットシフタに左ローテートとした結果を第４のデータとして出力させ、（ｃ２−２ｄ）双方向２４ビットシフタに左ローテートとした結果を第５のデータとして出力させるものである。
【００２１】
以上の点を踏まえて本実施の形態について、図面を参照しながら説明する。
＜構成＞
まず、本実施の形態における情報処理装置の構成について説明する。
【００２２】
図１に示されるように、情報処理装置１００は、ＣＰＵなどの情報処理装置である。そして、ＣＰＵなどの情報処理装置に備わるバレルシフタを共用することで、データをビットシフトするシフト演算処理とデータを第１のエンディアンから第２のエンディアンに変換するエンディアン変換処理とを択一的に実行することができる。ただし、シフト演算処理とエンディアン変換処理とを同時に実行することはできない。
【００２３】
ここでは、一例として、情報処理装置１００は、入力データ記憶部１０１、出力データ記憶部１０２、制御部１０３、デコーダ１０４、エンディアン変換部１０５、セレクタ１０６、双方向１ビットシフタ１１０、双方向３ビットシフタ１２０、双方向８ビットシフタ１３０、双方向２４ビットシフタ１４０などを備える。また、取り扱うデータサイズは３２ビットとする。
【００２４】
なお、双方向１ビットシフタ１１０、双方向３ビットシフタ１２０、双方向８ビットシフタ１３０、双方向２４ビットシフタ１４０の順に直列に接続したものがバレルシフタである。このバレルシフタは、左３１ビット〜右３１ビットのシフト演算を行うことができる。
【００２５】
また、双方向１ビットシフタ１１０、双方向３ビットシフタ１２０、双方向８ビットシフタ１３０、双方向２４ビットシフタ１４０のそれぞれは、デコーダ１０４から出力されたセレクタ制御信号Ｃ０，Ｃ１，Ｃ２，Ｃ３によって制御されている。これによって、バレルシフタは、シフト量制御信号ＳＱによって指定されたシフト量だけ入力データＩをシフトすることができる。
【００２６】
＜入力データ記憶部１０１＞
入力データ記憶部１０１は、少なくとも３２ビットのデータを記憶することができる記憶装置である。
【００２７】
＜出力データ記憶部１０２＞
出力データ記憶部１０２は、少なくとも３２ビットのデータを記憶することができる記憶装置である。
【００２８】
＜制御部１０３＞
制御部１０３は、エンディアン変換の種類に応じて、シフト方向とシフト量を示す６ビットのシフト量制御信号ＳＱと、エンディアン変換の有無と種類を示す２ビットのエンディアン制御信号ＳＥを出力する。
【００２９】
なお、制御部１０３は、回路によって実現されるとしてもよいし、情報処理装置１００において実行されたプログラムによって実現されるとしてもよい。
＜デコーダ１０４＞
デコーダ１０４は、制御部１０３から出力されたシフト量制御信号ＳＱとエンディアン制御信号ＳＥとに応じて、セレクタ制御信号Ｃ０，Ｃ１，Ｃ２，Ｃ３を生成し、生成したセレクタ制御信号Ｃ０，Ｃ１，Ｃ２，Ｃ３を出力する。
【００３０】
ここで、セレクタ制御信号Ｃ０は、双方向１ビットシフタ１１０におけるセレクタ１１４を制御する２ビットの信号である。セレクタ制御信号Ｃ１は、双方向３ビットシフタ１２０におけるセレクタ１２４を制御する２ビットの信号である。セレクタ制御信号Ｃ２は、双方向８ビットシフタ１３０におけるセレクタ１３６を制御する３ビットの信号である。セレクタ制御信号Ｃ３は、双方向２４ビットシフタ１４０におけるセレクタ１４６を制御する３ビットの信号である。
【００３１】
＜エンディアン変換部１０５＞
エンディアン変換部１０５は、配線の引き回しによって、データ｛Ｓ８［４２：３５］，Ｓ８［２６：１９］｝と、データ｛Ｓ２４［２３：１６］，Ｓ２４［７：０］｝とから、３２ビットのデータを生成し、生成した３２ビットのデータを出力する。
【００３２】
このとき、エンディアン変換部１０５は、下位バイトから、データＳ２４［７：０］、データＳ８［２６：１９］、データＳ２４［２３：１６］、データＳ８［４２：３５］の順に配列した３２ビットのデータ｛Ｓ８［４２：３５］，Ｓ２４［２３：１６］，Ｓ８［２６：１９］，Ｓ２４［７：０］｝を生成する。
【００３３】
ここで、データ｛Ｓ８［４２：３５］，Ｓ８［２６：１９］｝とは、セレクタ１３６から出力された５４ビットのデータＳ８から、４２ビット目から３５ビット目までの部分（Ｓ８［４２：３５］）と、２６ビット目から１９ビット目までの部分（Ｓ８［２６：１９］）とを取り出した１６ビットのデータである。データ｛Ｓ２４［２３：１６］，Ｓ２４［７：０］｝とは、セレクタ１４６から出力された３２ビットのデータＳ２４から、２３ビット目から１６ビット目までの部分（Ｓ２４［２３：１６］）と、７ビット目から０ビット目までの部分（Ｓ２４［７：０］）とを取り出した１６ビットのデータである。
【００３４】
＜セレクタ１０６＞
セレクタ１０６は、制御部１０３から出力されたエンディアン制御信号ＳＥから取り出されたエンディアン制御信号ＳＥ［１］に応じて、双方向２４ビットシフタ１４０、エンディアン変換部１０５のいずれかを入力源として選択し、選択した入力源から出力された３２ビットのデータを出力する。
【００３５】
＜双方向１ビットシフタ１１０＞
双方向１ビットシフタ１１０は、シフタ１１１，１１２，１１３、セレクタ１１４を備える。入力データ記憶部１０１から出力された３２ビットのデータから３４ビットのデータを生成し、生成した３４ビットのデータを出力する。
【００３６】
このとき、シフタ１１１は、入力データ記憶部１０１から出力された３２ビットのデータをシフトせずに両側に１ビットずつ（計２ビット）追加する。これによって、３４ビットのデータを生成する。
【００３７】
また、シフタ１１２は、入力データ記憶部１０１から出力された３２ビットのデータを１ビット左シフトする。これによって、３４ビットのデータを生成する。
また、シフタ１１３は、入力データ記憶部１０１から出力された３２ビットのデータを１ビット右シフトする。これによって、３４ビットのデータを生成する。
【００３８】
そして、セレクタ１１４は、デコーダ１０４から出力されたセレクタ制御信号Ｃ０に応じてシフタ１１１，１１２，１１３のいずれかを入力源として選択し、選択した入力源で生成された３４ビットのデータを出力する。
【００３９】
例えば、セレクタ１１４は、セレクタ制御信号Ｃ０が“シフト無”を示す信号である場合は、シフタ１１１を入力源として選択する。セレクタ制御信号Ｃ０が“左シフト”を示す信号である場合は、シフタ１１２を入力源として選択する。セレクタ制御信号Ｃ０が“右シフト”を示す信号である場合は、シフタ１１３を入力源として選択する。
【００４０】
＜双方向３ビットシフタ１２０＞
双方向３ビットシフタ１２０は、シフタ１２１，１２２，１２３、セレクタ１２４を備える。双方向１ビットシフタ１１０から出力された３４ビットのデータから３８ビットのデータを生成し、生成した３８ビットのデータを出力する。
【００４１】
このとき、シフタ１２１は、セレクタ１１４から出力された３４ビットのデータをシフトせずに両側に２ビットずつ（計４ビット）追加する。これによって、３８ビットのデータを生成する。
【００４２】
また、シフタ１２２は、セレクタ１１４から出力された３４ビットのデータを３ビット左シフトする。これによって、３８ビットのデータを生成する。
また、シフタ１２３は、セレクタ１１４から出力された３４ビットのデータを３ビット右シフトする。これによって、３８ビットのデータを生成する。
【００４３】
そして、セレクタ１２４は、デコーダ１０４から出力されたセレクタ制御信号Ｃ１に応じてシフタ１２１，１２２，１２３のいずれかを入力源として選択し、選択した入力源で生成された３８ビットのデータを出力する。
【００４４】
例えば、セレクタ１２４は、セレクタ制御信号Ｃ１が“シフト無”を示す信号である場合は、シフタ１２１を入力源として選択する。セレクタ制御信号Ｃ１が“左シフト”を示す信号である場合は、シフタ１２２を入力源として選択する。セレクタ制御信号Ｃ１が“右シフト”を示す信号である場合は、シフタ１２３を入力源として選択する。
【００４５】
＜双方向８ビットシフタ１３０＞
双方向８ビットシフタ１３０は、シフタ１３１，１３２，１３３，１３４，１３５、セレクタ１３６を備える。双方向３ビットシフタ１２０から出力された３８ビットのデータから５４ビットのデータを生成し、生成した５４ビットのデータを出力する。
【００４６】
このとき、シフタ１３１は、セレクタ１２４から出力された３８ビットのデータをシフトせずに両側に８ビットずつ（計１６ビット）追加する。これによって、５４ビットのデータを生成する。
【００４７】
また、シフタ１３２は、セレクタ１２４から出力された３８ビットのデータを８ビット左シフトする。これによって、５４ビットのデータを生成する。
また、シフタ１３３は、セレクタ１２４から出力された３８ビットのデータを８ビット右シフトする。これによって、５４ビットのデータを生成する。
【００４８】
また、シフタ１３４は、セレクタ１２４から出力された３８ビットのデータにおいて両側の３ビットを除いた部分（３２ビットのデータ）に対してのみ８ビット左ローテートする。これによって、５４ビットのデータを生成する。
【００４９】
また、シフタ１３５は、セレクタ１２４から出力された３８ビットのデータにおいて両側の３ビットを除いた部分（３２ビットのデータ）に対してのみ８ビット右ローテートする。これによって、５４ビットのデータを生成する。
【００５０】
そして、セレクタ１３６は、デコーダ１０４から出力されたセレクタ制御信号Ｃ２に応じてシフタ１３１，１３２，１３３，１３４，１３５のいずれかを入力源として選択し、選択した入力源で生成された５４ビットのデータを出力する。
【００５１】
例えば、セレクタ１３６は、セレクタ制御信号Ｃ２が“シフト無”を示す信号である場合は、シフタ１３１を入力源として選択する。セレクタ制御信号Ｃ２が“左シフト”を示す信号である場合は、シフタ１３２を入力源として選択する。セレクタ制御信号Ｃ２が“右シフト”を示す信号である場合は、シフタ１３３を入力源として選択する。セレクタ制御信号Ｃ２が“左ローテート”を示す信号である場合は、シフタ１３４を入力源として選択する。セレクタ制御信号Ｃ２が“右ローテート”を示す信号である場合は、シフタ１３５を入力源として選択する。
【００５２】
なお、シフタ１３１は、生成した５４ビットのデータを、セレクタ１３６以外に、双方向２４ビットシフタ１４０におけるシフタ１４１，１４２にも出力する。
＜双方向２４ビットシフタ１４０＞
双方向２４ビットシフタ１４０は、シフタ１４１，１４２，１４３，１４４，１４５、セレクタ１４６を備える。双方向８ビットシフタ１３０から出力された５４ビットのデータから３２ビットのデータを生成し、生成した３２ビットのデータを出力する。
【００５３】
このとき、シフタ１４１は、シフタ１３１から出力された５４ビットのデータにおいて両側の１１ビットを除いた部分（３２ビットのデータ）に対してのみ２４ビット左ローテートして両側から１１ビットずつ（計２２ビット）削除する。これによって、３２ビットのデータを生成する。
【００５４】
また、シフタ１４２は、シフタ１３１から出力された５４ビットのデータにおいて両側の１１ビットを除いた部分（３２ビットのデータ）に対してのみ２４ビット右ローテートして両側から１１ビットずつ（計２２ビット）削除する。これによって、３２ビットのデータを生成する。
【００５５】
また、シフタ１４３は、セレクタ１３６から出力された５４ビットのデータをシフトせずに両側から１１ビットずつ（計２２ビット）削除する。これによって、３２ビットのデータを生成する。
【００５６】
また、シフタ１４４は、セレクタ１３６から出力された５４ビットのデータを２４ビット左シフトして両側から１１ビットずつ（計２２ビット）削除する。これによって、３２ビットのデータを生成する。
【００５７】
また、シフタ１４５は、セレクタ１３６から出力された５４ビットのデータを８ビット右シフトして両側から１１ビットずつ（計２２ビット）削除する。これによって、３２ビットのデータを生成する。
【００５８】
そして、セレクタ１４６は、デコーダ１０４から出力されたセレクタ制御信号Ｃ３に応じてシフタ１４１，１４２，１４３，１４４，１４５のいずれかを入力源として選択し、選択した入力源で生成された３２ビットのデータを出力する。
【００５９】
例えば、セレクタ１４６は、セレクタ制御信号Ｃ３が“左ローテート”を示す信号である場合は、シフタ１４１を入力源として選択する。セレクタ制御信号Ｃ３が“右ローテート”を示す信号である場合は、シフタ１４２を入力源として選択する。セレクタ制御信号Ｃ３が“シフト無”を示す信号である場合は、シフタ１４３を入力源として選択する。セレクタ制御信号Ｃ３が“左シフト”を示す信号である場合は、シフタ１４４を入力源として選択する。セレクタ制御信号Ｃ３が“右シフト”を示す信号である場合は、シフタ１４５を入力源として選択する。
【００６０】
＜動作＞
これによって、入力データ記憶部１０１で記憶されている３２ビットのデータ（入力データＩ）が、双方向１ビットシフタ１１０、双方向３ビットシフタ１２０、双方向８ビットシフタ１３０、双方向２４ビットシフタ１４０、セレクタ１０６を通過することによってシフト演算処理とエンディアン変換処理とのいずれかが行われる。シフト演算処理とエンディアン変換処理とのいずれかが行われて得られた３２ビットのデータ（出力データＯ）が出力データ記憶部１０２で記憶される。
【００６１】
＜バレルシフタ＞
次に、情報処理装置１００に備わるバレルシフタについて説明する。
情報処理装置１００に備わるバレルシフタにおいては、右シフトと左シフトを組み合わせることで、所要のデータが得られる。ただし、ビットシフタにおいては、シフトアウトされるデータも残して次のビットシフタに出力する必要がある。このため、ビットシフタから出力されるデータには、余分なビット（以下、追加ビットと呼称する。）が含まれる。
【００６２】
例えば、バレルシフタにおいては、下記（１）〜（４）のように動作させることで右１３ビットシフトしたデータが得られる。
（１）双方向１ビットシフタ１１０は、シフトしない。
【００６３】
（２）双方向３ビットシフタ１２０は、左３ビットシフトする。
（３）双方向８ビットシフタ１３０は、左８ビットシフトする。
（４）双方向２４ビットシフタ１４０は、右２４ビットシフトする。
【００６４】
この例では、左に１１ビットシフトしてから右に２４ビットシフトするので、左側１１ビットを残す必要がある。このため、双方向３ビットシフタ１２０においては、入力側に対して出力側を左側に３ビット拡張する必要がある。また、双方向８ビットシフタ１３０においては、入力側に対して出力側を左側に１１ビット拡張する必要がある。
【００６５】
なお、左３１ビット〜右３１ビットのシフトを行うためには、下記（１）〜（３）のとおりである。
（１）双方向１ビットシフタ１１０においては、入力側に対して、出力側を両側に１ビット拡張する。
【００６６】
（２）双方向３ビットシフタ１２０においては、入力側に対して、出力側を両側に４ビット拡張する。
（３）双方向８ビットシフタ１３０においては、入力側に対して、出力側を両側に１１ビット拡張する。
【００６７】
この場合において、各ビットシフタから出力されたデータにおいて３２ビットのデータ（入力データＩ）に対応する部分は、下記（１）〜（４）のとおりである。
（１）双方向１ビットシフタ１１０から出力されたデータには追加ビット（両側の１ビット）が含まれる。このため、双方向１ビットシフタ１１０から出力されたデータにおいて該当する部分は、追加ビット（両側の１ビット）を除いたデータ［３２：１］である。
【００６８】
（２）双方向３ビットシフタ１２０から出力されたデータには追加ビット（両側の４ビット）が含まれる。このため、双方向３ビットシフタ１２０から出力されたデータにおいて該当する部分は、追加ビット（両側の４ビット）を除いたデータ［３５：４］である。
【００６９】
（３）双方向８ビットシフタ１３０から出力されたデータには追加ビット（両側の１１ビット）が含まれる。このため、双方向８ビットシフタ１３０から出力されたデータにおいて該当する部分は、追加ビット（両側の１１ビット）を除いたデータ［４２：１１］である。
【００７０】
（４）双方向２４ビットシフタ１４０から出力されたデータには追加ビットが含まれない。このため、双方向２４ビットシフタ１４０から出力されたデータにおいて該当する部分は、データ［３１：０］である。
【００７１】
＜真理値表＞
次に、情報処理装置１００の動作を示したオペレーションに対する各種制御信号の真理値表について説明する。
【００７２】
なお、図２には、ハーフワードデータのエンディアン変換（以下、ハーフワードエンディアン変換と呼称する。）、ワードデータのエンディアン変換（以下、ワードエンディアン変換と呼称する。）、右３１ビット〜左５ビットシフトに対する各種制御信号の真理値表が示されている。また、図３には、左６ビット〜左３１ビットシフトに対する各種制御信号の真理値表が示されている。
【００７３】
なお、シフト量制御信号ＳＱにおける各真理値については、−３１〜３１の値が一意に割り当てられている。ここで、負の数は右シフトを示し、正の数は左シフトを示す。
図２、図３に示されるように、セレクタ制御信号Ｃ０，Ｃ１において、“００”は“シフト無”、“０１”は“左シフト”、“１０”は“右シフト”を示す。セレクタ制御信号Ｃ２，Ｃ３において、“０００”は“シフト無”、“００１”は“左シフト”、“０１０”は“右シフト”、“１０１”は“左ローテート”、“１１０”は“右ローテート”を示す。エンディアン制御信号ＳＥにおいて、“１１”は“ハーフワードエンディアン変換”、“１０”は“ワードエンディアン変換”を示す。
【００７４】
例えば、制御部１０３は、シフト演算処理を行う場合は、エンディアン制御信号ＳＥ（００）を出力する。エンディアン変換処理を行う場合は、エンディアン制御信号ＳＥ（１０または１１）を出力する。
【００７５】
このとき、ワードエンディアン変換を行う場合は、制御部１０３は、エンディアン制御信号ＳＥ（１０）をデコーダ１０４に出力する。これに伴い、デコーダ１０４は、セレクタ制御信号Ｃ２（１１０）を双方向８ビットシフタ１３０に出力する。右８ビットローテートのデータを双方向８ビットシフタ１３０に出力させる。また、デコーダ１０４は、セレクタ制御信号Ｃ３（１１０）を双方向２４ビットシフタ１４０に出力する。右２４ビットローテートのデータを双方向２４ビットシフタ１４０に出力させる。
【００７６】
また、ハーフワードエンディアン変換を行う場合は、制御部１０３は、エンディアン制御信号ＳＥ（１１）をデコーダ１０４に出力する。これに伴い、デコーダ１０４は、セレクタ制御信号Ｃ２（１０１）を双方向８ビットシフタ１３０に出力する。左８ビットローテートのデータを双方向８ビットシフタ１３０に出力させる。また、デコーダ１０４は、セレクタ制御信号Ｃ３（１０１）を双方向２４ビットシフタ１４０に出力する。左２４ビットローテートのデータを双方向２４ビットシフタ１４０に出力させる。
【００７７】
なお、セレクタ１０６は、エンディアン制御信号ＳＥ［１］の値が“０”である場合は、双方向２４ビットシフタ１４０を入力源として選択する。エンディアン制御信号ＳＥ［１］の値が“１”である場合は、エンディアン変換部１０５を入力源として選択する。
【００７８】
＜エンディアン変換＞
次に、情報処理装置１００におけるエンディアン変換について説明する。
まず、エンディアン変換部１０５には、双方向８ビットシフタ１３０から出力されたデータから追加ビット（両側の１１ビット）を除いた３２ビットのデータＳ８[３７：６]における４バイト目（Ｓ８[４２：３５]）と２バイト目（Ｓ８[２６：１９]）とが入力される。また、双方向２４ビットシフタ１４０から出力された３２ビットのデータＳ２４[３１：０]における３バイト目（Ｓ２４[２３：１６]）と１バイト目（Ｓ２４[７：０]）とが入力される。
【００７９】
これに伴い、エンディアン変換部１０５は、入力したこれらのデータを、下位バイトから、データＳ２４の１バイト目（Ｓ２４[７：０]）、データＳ８の２バイト目（Ｓ８[２６：１９]）、データＳ２４の３バイト目（Ｓ２４[２３：１６]）、データＳ８の４バイト目（Ｓ８[４２：３５]）の順に配列したデータを生成する。
【００８０】
これによって、エンディアン変換部１０５からは、データ｛Ｓ８［４２：３５］，Ｓ２４［２３：１６］，Ｓ８［２６：１９］，Ｓ２４［７：０］｝が出力される。
＜ワードエンディアン変換＞
このとき、ワードエンディアン変換を行う場合は、図４（ａ）に示されるように、下記（１）〜（４）のように変換される。
【００８１】
（１）入力データＩにおける４バイト目のデータが出力データＯにおける１バイト目のデータとして配置される。
（２）入力データＩにおける３バイト目のデータが出力データＯにおける２バイト目のデータとして配置される。
【００８２】
（３）入力データＩにおける２バイト目のデータが出力データＯにおける３バイト目のデータとして配置される。
（４）入力データＩにおける１バイト目のデータが出力データＯにおける４バイト目のデータとして配置される。
【００８３】
例えば、入力データＩで表記すれば、データ｛Ｉ［７：０］，Ｉ［１５：８］，Ｉ［２３：１６］，Ｉ［３１：２４］｝がエンディアン変換部１０５から出力される。すなわち、入力データＩをワードエンディアン変換した結果が得られる。
【００８４】
＜ハーフワードエンディアン変換＞
また、ハーフワードエンディアン変換を行う場合は、図４（ｂ）に示されるように変換される。
【００８５】
（１）入力データＩにおける２バイト目のデータが出力データＯにおける１バイト目のデータとして配置される。
（２）入力データＩにおける１バイト目のデータが出力データＯにおける２バイト目のデータとして配置される。
【００８６】
（３）入力データＩにおける４バイト目のデータが出力データＯにおける３バイト目のデータとして配置される。
（４）入力データＩにおける３バイト目のデータが出力データＯにおける４バイト目のデータとして配置される。
【００８７】
例えば、入力データＩで表記すれば、データ｛Ｉ［２３：１６］，Ｉ［３１：２４］，Ｉ［７：０］，Ｉ［１５：８］｝がエンディアン変換部１０５から出力される。すなわち、入力データＩをハーフワードエンディアン変換した結果が得られる。
【００８８】
＜まとめ＞
以上、本実施の形態によれば、情報処理装置１００は、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを、制御部１０３、デコーダ１０４、セレクタ１０６によって制御して、シフト演算処理とエンディアン変換処理とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。また、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【００８９】
（実施の形態２）
以下、本発明に係わる実施の形態２について説明する。
＜概要＞
本実施の形態における情報処理装置は、下記（ｄ），（ｅ）に示す特徴を備える。
【００９０】
（ｄ）（ｄ１）バレルシフタは、３２ビットの第１のデータが入力する側から、双方向１ビットシフタ、双方向３ビットシフタ、双方向８ビットシフタ、双方向１９ビットシフタの順に直列に接続することによって構成されたものであり、（ｄ２）双方向１ビットシフタは、第１のデータに対してシフト演算を行って３４ビットの第２のデータを生成するものであり、（ｄ３）双方向３ビットシフタは、第２のデータに対してシフト演算を行って３８ビットの第３のデータを生成するものであり、（ｄ４）双方向８ビットシフタは、第３のデータに対してシフト演算を行って４４ビットの第４のデータを生成するものであり、（ｄ５）双方向１９ビットシフタは、第４のデータに対してシフト演算を行って３２ビットの第５のデータを生成するものであり、（ｄ６）エンディアン変換部は、第４のデータから両側の６ビットを除いた部分における３バイト目のデータ、２バイト目のデータ、１バイト目のデータ、４バイト目のデータの順に配列した第６のデータを生成するものであり、（ｄ７）セレクタは、制御信号が第１の演算処理を示す信号である場合は、バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして第５のデータを出力し、制御信号が第２の演算処理を示す信号である場合は、エンディアン変換部において生成されたデータとして第６のデータを出力するものである。
【００９１】
（ｅ）（ｅ１）情報処理装置は、制御部から出力された制御信号に応じて、バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、（ｅ２）デコーダは、（ｅ２−１）制御信号が第２の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、（ｅ２−１ａ）双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｅ２−１ｂ）双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｅ２−１ｃ）双方向８ビットシフタに右ローテートとした結果を第４のデータとして出力させ、（ｅ２−１ｄ）双方向１９ビットシフタにシフトしなかった結果を第５のデータとして出力させ、（ｅ２−２）制御信号が第２の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、（ｅ２−２ａ）双方向１ビットシフタにシフトしなかった結果を第２のデータとして出力させ、（ｅ２−２ｂ）双方向３ビットシフタにシフトしなかった結果を第３のデータとして出力させ、（ｅ２−２ｃ）双方向８ビットシフタに左ローテートとした結果を第４のデータとして出力させ、（ｅ２−２ｄ）双方向１９ビットシフタにシフトしなかった結果を第５のデータとして出力させるものである。
【００９２】
以上の点を踏まえて、本実施に形態について、図面を参照しながら説明する。なお、実施の形態１における構成要素と同一の構成要素については、同一の参照符号を付して説明を省略する。
【００９３】
＜構成＞
まず、本実施の形態における情報処理装置の構成について説明する。
図５に示されるように、情報処理装置２００は、実施の形態１における情報処理装置１００と比べて、下記の点が異なる。
【００９４】
情報処理装置２００は、デコーダ１０４、エンディアン変換部１０５、セレクタ１０６、双方向１ビットシフタ１１０、双方向３ビットシフタ１２０、双方向８ビットシフタ１３０、双方向２４ビットシフタ１４０の代わりに、デコーダ２０４、エンディアン変換部２０５、セレクタ２０６、双方向１ビットシフタ２１０、双方向３ビットシフタ２２０、双方向８ビットシフタ２３０、双方向１９ビットシフタ２４０を備える。
【００９５】
なお、双方向１ビットシフタ２１０、双方向３ビットシフタ２２０、双方向８ビットシフタ２３０、双方向１９ビットシフタ２４０の順に直列に接続したものがバレルシフタである。このバレルシフタは、左３１ビット〜右３１ビットのシフト演算を行うことができる。
【００９６】
また、双方向１ビットシフタ２１０、双方向３ビットシフタ２２０、双方向８ビットシフタ２３０、双方向１９ビットシフタ２４０のそれぞれは、デコーダ２０４から出力されたセレクタ制御信号Ｃ０，Ｃ１，Ｃ２，Ｃ３によって制御されている。これによって、バレルシフタは、シフト量制御信号ＳＱによって指定されたシフト量だけ入力データＩをシフトすることができる。
【００９７】
＜デコーダ２０４＞
デコーダ２０４は、制御部１０３から出力されたシフト量制御信号ＳＱとエンディアン制御信号ＳＥとに応じて、セレクタ制御信号Ｃ０，Ｃ１，Ｃ２，Ｃ３を生成し、生成したセレクタ制御信号Ｃ０，Ｃ１，Ｃ２，Ｃ３を出力する。
【００９８】
ここで、セレクタ制御信号Ｃ０は、双方向１ビットシフタ２１０におけるセレクタ２１４を制御する２ビットの信号である。セレクタ制御信号Ｃ１は、双方向３ビットシフタ２２０におけるセレクタ２２４を制御する２ビットの信号である。セレクタ制御信号Ｃ２は、双方向８ビットシフタ２３０におけるセレクタ２３６を制御する３ビットの信号である。セレクタ制御信号Ｃ３は、双方向１９ビットシフタ２４０におけるセレクタ２４４を制御する２ビットの信号である。
【００９９】
＜エンディアン変換部２０５＞
エンディアン変換部２０５は、配線の引き回しによって、データＳ８［３７：６］から、３２ビットのデータを生成し、生成した３２ビットのデータを出力する。
【０１００】
このとき、エンディアン変換部２０５は、データＳ８［３７：６］を、下位バイトから、データＳ８の３バイト目（Ｓ８［２９：２２］）、２バイト目（Ｓ８［２１：１４］）、１バイト目（Ｓ８［１３：６］）、４バイト目（Ｓ８［３７：３０］）の順に配列した３２ビットのデータ｛Ｓ８［３７：３０］，Ｓ８［１３：６］，Ｓ８［２１：１４］，Ｓ８［２９：２２］｝を生成する。
【０１０１】
ここで、データＳ８［３７：６］とは、セレクタ２３６から出力された４４ビットのデータＳ８から、３７ビット目から６ビット目までの部分（Ｓ８［３７：６］）を取り出した３２ビットのデータである。
【０１０２】
＜セレクタ２０６＞
セレクタ２０６は、制御部１０３から出力されたエンディアン制御信号ＳＥから取り出されたエンディアン制御信号ＳＥ［１］に応じて、双方向１９ビットシフタ２４０、エンディアン変換部２０５のいずれかを入力源として選択し、選択した入力源から出力された３２ビットのデータを出力する。
【０１０３】
＜双方向１ビットシフタ２１０＞
双方向１ビットシフタ２１０は、シフタ２１１，２１２，２１３、セレクタ２１４を備える。入力データ記憶部１０１から出力された３２ビットのデータから３４ビットのデータを生成し、生成した３４ビットのデータを出力する。
【０１０４】
このとき、シフタ２１１は、入力データ記憶部１０１から出力された３２ビットのデータをシフトせずに両側に１ビットずつ（計２ビット）追加する。これによって、３４ビットのデータを生成する。
【０１０５】
また、シフタ２１２は、入力データ記憶部１０１から出力された３２ビットのデータを１ビット左シフトする。これによって、３４ビットのデータを生成する。
また、シフタ２１３は、入力データ記憶部１０１から出力された３２ビットのデータを１ビット右シフトする。これによって、３４ビットのデータを生成する。
【０１０６】
そして、セレクタ２１４は、デコーダ２０４から出力されたセレクタ制御信号Ｃ０に応じてシフタ２１１，２１２，２１３のいずれかを入力源として選択し、選択した入力源で生成された３４ビットのデータを出力する。
【０１０７】
例えば、セレクタ２１４は、セレクタ制御信号Ｃ０が“シフト無”を示す信号である場合は、シフタ２１１を入力源として選択する。セレクタ制御信号Ｃ０が“左シフト”を示す信号である場合は、シフタ２１２を入力源として選択する。セレクタ制御信号Ｃ０が“右シフト”を示す信号である場合は、シフタ２１３を入力源として選択する。
【０１０８】
＜双方向３ビットシフタ２２０＞
双方向３ビットシフタ２２０は、シフタ２２１，２２２，２２３、セレクタ２２４を備える。双方向１ビットシフタ２１０から出力された３４ビットのデータから３８ビットのデータを生成し、生成した３８ビットのデータを出力する。
【０１０９】
このとき、シフタ２２１は、セレクタ２１４から出力された３４ビットのデータをシフトせずに両側に２ビットずつ（計４ビット）追加する。これによって、３８ビットのデータを生成する。
【０１１０】
また、シフタ２２２は、セレクタ２１４から出力された３４ビットのデータを３ビット左シフトする。これによって、３８ビットのデータを生成する。
また、シフタ２２３は、セレクタ２１４から出力された３４ビットのデータを３ビット右シフトする。これによって、３８ビットのデータを生成する。
【０１１１】
そして、セレクタ２２４は、デコーダ２０４から出力されたセレクタ制御信号Ｃ１に応じてシフタ２２１，２２２，２２３のいずれかを入力源として選択し、選択した入力源で生成された３８ビットのデータを出力する。
【０１１２】
例えば、セレクタ２２４は、セレクタ制御信号Ｃ１が“シフト無”を示す信号である場合は、シフタ２２１を入力源として選択する。セレクタ制御信号Ｃ１が“左シフト”を示す信号である場合は、シフタ２２２を入力源として選択する。セレクタ制御信号Ｃ１が“右シフト”を示す信号である場合は、シフタ２２３を入力源として選択する。
【０１１３】
＜双方向８ビットシフタ２３０＞
双方向８ビットシフタ２３０は、シフタ２３１，２３２，２３３，２３４，２３５、セレクタ２３６を備える。双方向３ビットシフタ２２０から出力された３８ビットのデータから４４ビットのデータを生成し、生成した４４ビットのデータを出力する。
【０１１４】
このとき、シフタ２３１は、セレクタ２２４から出力された３８ビットのデータをシフトせずに両側に３ビットずつ（計６ビット）追加する。これによって、４４ビットのデータを生成する。
【０１１５】
また、シフタ２３２は、セレクタ２２４から出力された３８ビットのデータを８ビット左シフトする。これによって、４４ビットのデータを生成する。
また、シフタ２３３は、セレクタ２２４から出力された３８ビットのデータを８ビット右シフトする。これによって、４４ビットのデータを生成する。
【０１１６】
また、シフタ２３４は、セレクタ２２４から出力された３８ビットのデータにおいて両側の３ビットを除いた部分（３２ビットのデータ）に対してのみ８ビット左ローテートする。これによって、４４ビットのデータを生成する。
【０１１７】
また、シフタ２３５は、セレクタ２２４から出力された３８ビットのデータにおいて両側の３ビットを除いた部分（３２ビットのデータ）に対してのみ８ビット右ローテートする。これによって、４４ビットのデータを生成する。
【０１１８】
そして、セレクタ２３６は、デコーダ２０４から出力されたセレクタ制御信号Ｃ２に応じてシフタ２３１，２３２，２３３，２３４，２３５のいずれかを入力源として選択し、選択した入力源で生成された４４ビットのデータを出力する。
【０１１９】
例えば、セレクタ２３６は、セレクタ制御信号Ｃ２が“シフト無”を示す信号である場合は、シフタ２３１を入力源として選択する。セレクタ制御信号Ｃ２が“左シフト”を示す信号である場合は、シフタ２３２を入力源として選択する。セレクタ制御信号Ｃ２が“右シフト”を示す信号である場合は、シフタ２３３を入力源として選択する。セレクタ制御信号Ｃ２が“左ローテート”を示す信号である場合は、シフタ２３４を入力源として選択する。セレクタ制御信号Ｃ２が“右ローテート”を示す信号である場合は、シフタ２３５を入力源として選択する。
【０１２０】
＜双方向１９ビットシフタ２４０＞
双方向１９ビットシフタ２４０は、シフタ２４１，２４２，２４３、セレクタ２４４を備える。双方向８ビットシフタ２３０から出力された４４ビットのデータから３２ビットのデータを生成し、生成した３２ビットのデータを出力する。
【０１２１】
このとき、シフタ２４１は、セレクタ２３６から出力された４４ビットのデータをシフトせずに両側から６ビットずつ（計１２ビット）削除する。これによって、３２ビットのデータを生成する。
【０１２２】
また、シフタ２４２は、セレクタ２３６から出力された４４ビットのデータを１９ビット左シフトして両側から６ビットずつ（計１２ビット）削除する。これによって、３２ビットのデータを生成する。
【０１２３】
また、シフタ２４３は、セレクタ２３６から出力された４４ビットのデータを１９ビット右シフトして両側から６ビットずつ（計１２ビット）削除する。これによって、３２ビットのデータを生成する。
【０１２４】
そして、セレクタ２４４は、デコーダ２０４から出力されたセレクタ制御信号Ｃ３に応じてシフタ２４１，２４２，２４３のいずれかを入力源として選択し、選択した入力源で生成された３２ビットのデータを出力する。
【０１２５】
例えば、セレクタ２４４は、セレクタ制御信号Ｃ３が“シフト無”を示す信号である場合は、シフタ２４１を入力源として選択する。セレクタ制御信号Ｃ３が“左シフト”を示す信号である場合は、シフタ２４２を入力源として選択する。セレクタ制御信号Ｃ３が“右シフト”を示す信号である場合は、シフタ２４３を入力源として選択する。
【０１２６】
＜動作＞
これによって、入力データ記憶部１０１で記憶されている３２ビットのデータ（入力データＩ）が、双方向１ビットシフタ２１０、双方向３ビットシフタ２２０、双方向８ビットシフタ２３０、双方向１９ビットシフタ２４０、セレクタ２０６を通過することによってシフト演算処理とエンディアン変換処理とのいずれかが行われる。シフト演算処理とエンディアン変換処理とのいずれかが行われて得られた３２ビットのデータ（出力データＯ）が出力データ記憶部１０２で記憶される。
【０１２７】
＜バレルシフタ＞
次に、情報処理装置２００に備わるバレルシフタについて説明する。
情報処理装置２００に備わるバレルシフタにおいては、右シフトと左シフトを組み合わせることで、所要のデータが得られる。ただし、ビットシフタにおいては、シフトアウトされるデータも残して次のビットシフタに出力する必要がある。このため、ビットシフタから出力されるデータには、余分なビット（以下、追加ビットと呼称する。）が含まれる。
【０１２８】
なお、バレルシフタで左３１ビット〜右３１ビットのシフトを行うためには、下記（１）〜（３）のとおりである。
（１）双方向１ビットシフタ２１０においては、入力側に対して、出力側を両側に１ビット拡張する。
【０１２９】
（２）双方向３ビットシフタ２２０においては、入力側に対して、出力側を両側に４ビット拡張する。
（３）双方向８ビットシフタ２３０においては、入力側に対して、出力側を両側に６ビット拡張する。
【０１３０】
この場合において、各ビットシフタから出力されたデータにおいて３２ビットのデータ（入力データＩ）に対応する部分は、下記（１）〜（４）のとおりである。
（１）双方向１ビットシフタ２１０から出力されたデータには追加ビット（両側の１ビット）が含まれる。このため、双方向１ビットシフタ２１０から出力されたデータにおいて該当する部分は、追加ビット（両側の１ビット）を除いたデータ［３２：１］である。
【０１３１】
（２）双方向３ビットシフタ２２０から出力されたデータには追加ビット（両側の４ビット）が含まれる。このため、双方向３ビットシフタ２２０から出力されたデータにおいて該当する部分は、追加ビット（両側の４ビット）を除いたデータ［３５：４］である。
【０１３２】
（３）双方向８ビットシフタ２３０から出力されたデータには追加ビット（両側の６ビット）が含まれる。このため、双方向８ビットシフタ２３０から出力されたデータにおいて該当する部分は、追加ビット（両側の６ビット）を除いたデータ［３７：６］である。
【０１３３】
（４）双方向１９ビットシフタ２４０から出力されたデータには追加ビットが含まれない。このため、双方向１９ビットシフタ２４０から出力されたデータにおいて該当する部分は、データ［３１：０］である。
【０１３４】
＜真理値表＞
次に、情報処理装置２００の動作を示したオペレーションに対する各種制御信号の真理値表について説明する。
【０１３５】
なお、図６には、ハーフワードデータのエンディアン変換（以下、ハーフワードエンディアン変換と呼称する。）、ワードデータのエンディアン変換（以下、ワードエンディアン変換と呼称する。）、右３１ビット〜左５ビットシフトに対する各種制御信号の真理値表が示されている。図７には、左６ビット〜左３１ビットシフトに対する各種制御信号の真理値表が示されている。
【０１３６】
なお、シフト量制御信号ＳＱにおける各真理値については、−３１〜３１の値が一意に割り当てられている。ここで、負の数は右シフトを示し、正の数は左シフトを示す。
図６、図７に示されるように、セレクタ制御信号Ｃ０，Ｃ１，Ｃ３において、“００”は“シフト無”、“０１”は“左シフト”、“１０”は“右シフト”を示す。セレクタ制御信号Ｃ２において、“０００”は“シフト無”、“００１”は“左シフト”、“０１０”は“右シフト”、“１０１”は“左ローテート”、“１１０”は“右ローテート”を示す。エンディアン制御信号ＳＥにおいて、“１１”は“ハーフワードエンディアン変換”、“１０”は“ワードエンディアン変換”を示す。
【０１３７】
例えば、制御部１０３は、シフト演算処理を行う場合は、エンディアン制御信号ＳＥ（００）を出力する。エンディアン変換処理を行う場合は、エンディアン制御信号ＳＥ（１０または１１）を出力する。
【０１３８】
このとき、ワードエンディアン変換を行う場合は、制御部１０３は、エンディアン制御信号ＳＥ（１０）をデコーダ２０４に出力する。これに伴い、デコーダ２０４は、セレクタ制御信号Ｃ２（１１０）を双方向８ビットシフタ２３０に出力する。右８ビットローテートのデータを双方向８ビットシフタ２３０に出力させる。
【０１３９】
また、ハーフワードエンディアン変換を行う場合は、制御部１０３は、エンディアン制御信号ＳＥ（１１）をデコーダ２０４に出力する。これに伴い、デコーダ２０４は、セレクタ制御信号Ｃ２（１０１）を双方向８ビットシフタ２３０に出力する。左８ビットローテートのデータを双方向８ビットシフタ２３０に出力させる。
【０１４０】
なお、セレクタ２０６は、エンディアン制御信号ＳＥ［１］の値が“０”である場合は、双方向１９ビットシフタ２４０を入力源として選択する。エンディアン制御信号ＳＥ［１］の値が“１”である場合は、エンディアン変換部２０５を入力源として選択する。
【０１４１】
＜エンディアン変換＞
次に、情報処理装置２００におけるエンディアン変換について説明する。
まず、エンディアン変換部２０５には、双方向８ビットシフタ２３０から出力されたデータＳ８から追加ビット（両側の６ビット）を除いた３２ビットのデータＳ８[３７：６]が入力される。
【０１４２】
これに伴い、エンディアン変換部２０５は、入力した３２ビットのデータＳ８[３７：６]を、下位バイトから、データＳ８の３バイト目（Ｓ８[２９：２２]）、２バイト目（Ｓ８[２１：１４]）、１バイト目（Ｓ８［１３：６］）、４バイト目（Ｓ８[３７：３０]）の順に配列したデータを生成する。
【０１４３】
これによって、エンディアン変換部２０５からは、データ｛Ｓ８[３７：３０]，Ｓ８［１３：６］，Ｓ８[２１：１４]，Ｓ８[２９：２２]｝が出力される。
このとき、ワードエンディアン変換を行う場合は、入力データＩで表記すれば、データ｛Ｉ［７：０］，Ｉ［３１：２４］，Ｉ［２３：１６］，Ｉ［１５：８］｝がエンディアン変換部２０５に入力する。入力したデータ｛Ｉ［７：０］，Ｉ［３１：２４］，Ｉ［２３：１６］，Ｉ［１５：８］｝がデータ｛Ｉ［７：０］，Ｉ［１５：８］，Ｉ［２３：１６］，Ｉ［３１：２４］｝にエンディアン変換部２０５で変換される。変換されて得られたデータ｛Ｉ［７：０］，Ｉ［１５：８］，Ｉ［２３：１６］，Ｉ［３１：２４］｝がエンディアン変換部２０５から出力される。すなわち、入力データＩをワードエンディアン変換した結果が得られる。
【０１４４】
一方、ハーフワードエンディアン変換を行う場合は、入力データＩで表記すれば、データ｛Ｉ［２３：１６］，Ｉ［１５：８］，Ｉ［７：０］，Ｉ［３１：２４］｝がエンディアン変換部２０５に入力する。入力したデータ｛Ｉ［２３：１６］，Ｉ［１５：８］，Ｉ［７：０］，Ｉ［３１：２４］｝がデータ｛Ｉ［２３：１６］，Ｉ［３１：２４］，Ｉ［７：０］，Ｉ［１５：８］｝にエンディアン変換部２０５で変換される。変換されて得られたデータ｛Ｉ［２３：１６］，Ｉ［３１：２４］，Ｉ［７：０］，Ｉ［１５：８］｝がエンディアン変換部２０５から出力される。すなわち、入力データＩをハーフワードエンディアン変換した結果が得られる。
【０１４５】
＜まとめ＞
以上、本実施の形態によれば、情報処理装置２００は、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを、制御部１０３、デコーダ２０４、セレクタ２０６によって制御して、シフト演算処理とエンディアン変換処理とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。また、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【０１４６】
（その他）
なお、本発明に係わる情報処理装置は、フルカスタムＬＳＩ（Large Scale Integration）によって実現されるとしてもよい。また、ＡＳＩＣ（Application Specific Integrated Circuit）等のようなセミカスタムＬＳＩによって実現されるとしてもよい。また、ＦＰＧＡ（Field Programmable Gate Array）、ＣＰＬＤ（Complex Programmable Logic Device）等のようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
【０１４７】
さらに、本発明に係わる情報処理装置を構成する１以上の機能を、これ等のＬＳＩに形成する設計データは、ＶＨＤＬ（Very high speed integrated circuit Hardware Description Language）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣ等のようなハードウェア記述言語によって記述されたプログラム（以下、ＨＤＬプログラムと呼称する。）であるとしてもよい。また、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストであるとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報であるとしてもよい。また、寸法、タイミング等が規定されたマスクデータであるとしてもよい。
【０１４８】
さらに、設計データは、コンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み取り可能な記録媒体に記録されているとしてもよい。さらに、記録媒体を介して他のハードウェアシステムに読み取られた設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。これによって、本発明に係わる情報処理装置を他のハードウェアシステムに実現することができる。ここで、ハードウェアシステムに読み取り可能な記録媒体としては、光学記録媒体（例えば、ＣＤ−ＲＯＭなど。）、磁気記録媒体（例えば、ハードディスクなど。）、光磁気記録媒体（例えば、ＭＯなど。）、半導体メモリ（例えば、メモリカードなど。）などがある。
【０１４９】
また、設計データは、インターネット、ローカルエリアネットワークなどのようなネットワークに接続されているハードウェアシステムに保持されているとしてもよい。さらに、ネットワークを介して他のハードウェアシステムに取得された設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。これによって、本発明に係わる情報処理装置を他のハードウェアシステムに実現することができる。ここで、ネットワークとして、地上放送網、衛星放送網、ＰＬＣ（Power Line Communication）、移動電話網、有線通信網（例えば、ＩＥＥＥ８０２．３など。）、無線通信網（例えば、ＩＥＥＥ８０２．１１など。）がある。
【０１５０】
また、論理合成、配置、配線された設計データは、シリアルＲＯＭに記録されているとしてもよい。そして、シリアルＲＯＭに記録された設計データが、通電時に、直接、ＦＰＧＡにダウンロードされるとしてもよい。
【産業上の利用可能性】
【０１５１】
本発明は、バレルシフタを使用してシフト演算とエンディアン変換とを行う情報処理装置などとして利用することができる。
【図面の簡単な説明】
【０１５２】
【図１】実施の形態１における情報処理装置の構成を示すブロック図である。
【図２】実施の形態１における情報処理装置を制御する各種制御信号の真理値表を示す第１の図である。
【図３】実施の形態１における情報処理装置を制御する各種制御信号の真理値表を示す第２の図である。
【図４】（ａ）は、ワードエンディアン変換の概要を示す図であり、（ｂ）は、ハーフワードエンディアン変換の概要を示す図である。
【図５】実施の形態２における情報処理装置の構成を示すブロック図である。
【図６】実施の形態２における情報処理装置を制御する各種制御信号の真理値表を示す第１の図である。
【図７】実施の形態２における情報処理装置を制御する各種制御信号の真理値表を示す第２の図である。
【図８】従来の技術におけるエンディアン変換回路の構成を示すブロック図である。
【符号の説明】
【０１５３】
１０  エンディアン変換回路
１１，１２，１３，１４  セレクタ
１００  情報処理装置
１０１  入力データ記憶部
１０２  出力データ記憶部
１０３  制御部
１０４  デコーダ
１０５  エンディアン変換部
１０６  セレクタ
１１０  双方向１ビットシフタ
１１１，１１２，１１３  シフタ
１１４  セレクタ
１２０  双方向３ビットシフタ
１２１，１２２，１２３  シフタ
１２４  セレクタ
１３０  双方向８ビットシフタ
１３１，１３２，１３３，１３４，１３５  シフタ
１３６  セレクタ
１４０  双方向２４ビットシフタ
１４１，１４２，１４３，１４４，１４５  シフタ
１４６  セレクタ
２００  情報処理装置
２０４  デコーダ
２０５  エンディアン変換部
２０６  セレクタ
２１０  双方向１ビットシフタ
２１１，２１２，２１３  シフタ
２１４  セレクタ
２２０  双方向３ビットシフタ
２２１，２２２，２２３  シフタ
２２４  セレクタ
２３０  双方向８ビットシフタ
２３１，２３２，２３３，２３４，２３５  シフタ
２３６  セレクタ
２４０  双方向１９ビットシフタ
２４１，２４２，２４３  シフタ
２４４  セレクタ
【図１】
2009230591.tif 000003
【図２】
2009230591.tif 000004
【図３】
2009230591.tif 000005
【図４】
2009230591.tif 000006
【図５】
2009230591.tif 000007
【図６】
2009230591.tif 000008
【図７】
2009230591.tif 000009
【図８】
2009230591.tif 000010