説明

情報処理装置

【課題】エンディアン変換回路のような専用回路を別途備えなくとも、エンディアン変換を行う情報処理装置を提供する。
【解決手段】情報処理装置100は、双方向1ビットシフタ110〜双方向24ビットシフタ140を直列に接続することによって構成されたバレルシフタと、シフト演算処理とエンディアン変換処理とのいずれかを示すエンディアン変換制御信号SEを出力する制御部103と、双方向8ビットシフタ130、双方向24ビットシフタ140においてシフト演算を行って得られたデータを使用してエンディアン変換処理を行うことによってデータを生成するエンディアン変換部105と、エンディアン変換制御信号SEがシフト演算処理を示す信号である場合は、双方向24ビットシフタ140から出力されたデータを選択し、エンディアン変換処理を示す信号である場合は、エンディアン変換部105から出力されたデータを選択するセレクタ106とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バレルシフタを使用してシフト演算とエンディアン変換とを行う情報処理装置に関する。
【背景技術】
【0002】
従来、1ワードが複数バイトで構成されるデータをメモリ上に配置する方式として、ビッグエンディアン、リトルエンディアンなどが知られている。一般に普及しているコンピュータは、これらのいずれかが採用されている。
【0003】
ここで、ビッグエンディアンとは、1ワードが複数バイトで構成されるデータを、データの上位バイトから所定のサイズずつ、メモリに並べる方式である。また、リトルエンディアンとは、1ワードが複数バイトで構成されるデータを、データの下位バイトから所定のサイズずつ、メモリに並べる方式である。
【0004】
このため、ビッグエンディアンを採用するシステムからリトルエンディアンを採用するシステムに移行する場合、または、その逆の場合において、データの並びに伴う問題が生じる。例えば、ロング・ワード・アクセス等でアクセスするデータ並び、およびアドレス並びに問題が生じる。そのため、エンディアンの違いによるバイト並びの変換(以下、エンディアン変換と呼称する。)を行う必要がある(例えば、特許文献1参照。)。
【0005】
<構成>
以下、従来の技術におけるエンディアン変換を行うエンディアン変換回路について説明する。
【0006】
図8に示されるように、エンディアン変換回路10は、データの入れ替えを行うセレクタ11,12,13,14を備える。各セレクタは、制御信号に応じて入力源を選択する。そして、各エンディアン変換モード(00,01,10)に応じた制御信号が各セレクタに入力すると、そのモードで選択されるデータ部分(D[31:24],D[23:16],D[15:8],D[7:0])が各セレクタから出力される。これによって、エンディアン変換が実現される。
【特許文献1】特開2000−305892号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、従来において、CPU等の情報処理装置でエンディアン変換を行うためには、エンディアン変換回路10のような専用回路を、情報処理装置に別途備える必要がある。さらに、エンディアン変換の種類ごとに専用回路を備える必要がある。
【0008】
そこで、本発明は、上記問題に鑑みてなされたものであり、エンディアン変換回路のような専用回路を別途備えなくとも、エンディアン変換を行う情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明に係わる情報処理装置は、下記に示す特徴を備える。
(a)(a1)複数のビットシフタをデータの流れる方向に直列に接続することによって構成されたバレルシフタと、(a2)データをビットシフトする第1の演算処理とデータを第1のエンディアンから第2のエンディアンに変換する第2の演算処理とのいずれかを示す制御信号を出力する制御部と、(a3)前記バレルシフタのいずれかのビットシフタにおいてシフト演算を行って得られたデータを使用して前記第2の演算処理を行うことによってデータを生成するエンディアン変換部と、(a4)前記制御信号が前記第1の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータを出力し、前記制御信号が前記第2の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータを出力するセレクタとを備える。
【0010】
これによって、CPUなどの情報処理装置において、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを制御して、シフト演算とエンディアン変換とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【0011】
さらに、(b)(b1)前記バレルシフタは、32ビットの第1のデータが入力する側から、双方向1ビットシフタ、双方向3ビットシフタ、双方向8ビットシフタ、双方向24ビットシフタの順に直列に接続することによって構成されたものであり、(b2)前記双方向1ビットシフタは、前記第1のデータに対してシフト演算を行って34ビットの第2のデータを生成するものであり、(b3)前記双方向3ビットシフタは、前記第2のデータに対してシフト演算を行って38ビットの第3のデータを生成するものであり、(b4)前記双方向8ビットシフタは、前記第1のデータに対してシフト演算を行って54ビットの第4のデータを生成するものであり、(b5)前記双方向24ビットシフタは、前記第4のデータに対してシフト演算を行って32ビットの第5のデータを生成するものであり、(b6)前記エンディアン変換部は、前記第5のデータにおける1バイト目のデータ、前記第4のデータから両側の11ビットを除いた部分における2バイト目のデータ、前記第5のデータにおける3バイト目のデータ、前記第4のデータから両側の11ビットを除いた部分における4バイト目のデータの順に配列した第6のデータを生成するものであり、(b7)前記セレクタは、前記制御信号が前記第1の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第5のデータを出力し、前記制御信号が前記第2の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第6のデータを出力するものであるとしてもよい。
【0012】
これによって、左31ビット〜右31ビットのシフト演算と、32ビットのデータに対するエンディアン変換とを択一的に実行することができる。
さらに、(c)(c1)前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、(c2)前記デコーダは、(c2−1)前記制御信号が前記第2の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、(c2−1a)前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(c2−1b)前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(c2−1c)前記双方向8ビットシフタに右ローテートとした結果を第4のデータとして出力させ、(c2−1d)前記双方向24ビットシフタに右ローテートとした結果を第5のデータとして出力させ、(c2−2)前記制御信号が前記第2の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、(c2−2a)前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(c2−2b)前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(c2−2c)前記双方向8ビットシフタに左ローテートとした結果を第4のデータとして出力させ、(c2−2d)前記双方向24ビットシフタに左ローテートとした結果を第5のデータとして出力させるものであるとしてもよい。
【0013】
これによって、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
または、(d)(d1)前記バレルシフタは、32ビットの第1のデータが入力する側から、双方向1ビットシフタ、双方向3ビットシフタ、双方向8ビットシフタ、双方向19ビットシフタの順に直列に接続することによって構成されたものであり、(d2)前記双方向1ビットシフタは、前記第1のデータに対してシフト演算を行って34ビットの第2のデータを生成するものであり、(d3)前記双方向3ビットシフタは、前記第2のデータに対してシフト演算を行って38ビットの第3のデータを生成するものであり、(d4)前記双方向8ビットシフタは、前記第3のデータに対してシフト演算を行って44ビットの第4のデータを生成するものであり、(d5)前記双方向19ビットシフタは、前記第4のデータに対してシフト演算を行って32ビットの第5のデータを生成するものであり、(d6)前記エンディアン変換部は、前記第4のデータから両側の6ビットを除いた部分における3バイト目のデータ、2バイト目のデータ、1バイト目のデータ、4バイト目のデータの順に配列した第6のデータを生成するものであり、(d7)前記セレクタは、前記制御信号が前記第1の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第5のデータを出力し、前記制御信号が前記第2の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第6のデータを出力するものであるとしてもよい。
【0014】
これによって、左31ビット〜右31ビットのシフト演算と、32ビットのデータに対するエンディアン変換とを択一的に実行することができる。
さらに、(e)(e1)前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、(e2)前記デコーダは、(e2−1)前記制御信号が前記第2の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、(e2−1a)前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(e2−1b)前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(e2−1c)前記双方向8ビットシフタに右ローテートとした結果を第4のデータとして出力させ、(e2−1d)前記双方向19ビットシフタにシフトしなかった結果を第5のデータとして出力させ、(e2−2)前記制御信号が前記第2の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、(e2−2a)前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(e2−2b)前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(e2−2c)前記双方向8ビットシフタに左ローテートとした結果を第4のデータとして出力させ、(e2−2d)前記双方向19ビットシフタにシフトしなかった結果を第5のデータとして出力させるものであるとしてもよい。
【0015】
これによって、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【発明の効果】
【0016】
本発明によれば、CPUなどの情報処理装置において、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを制御して、シフト演算とエンディアン変換とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。また、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【発明を実施するための最良の形態】
【0017】
(実施の形態1)
以下、本発明に係わる実施の形態1について説明する。
<概要>
本実施の形態における情報処理装置は、下記(a)〜(c)に示す特徴を備える。
【0018】
(a)(a1)複数のビットシフタをデータの流れる方向に直列に接続することによって構成されたバレルシフタと、(a2)データをビットシフトする第1の演算処理とデータを第1のエンディアンから第2のエンディアンに変換する第2の演算処理とのいずれかを示す制御信号を出力する制御部と、(a3)バレルシフタのいずれかのビットシフタにおいてシフト演算を行って得られたデータを使用して第2の演算処理を行うことによってデータを生成するエンディアン変換部と、(a4)制御信号が第1の演算処理を示す信号である場合は、バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータを出力し、制御信号が第2の演算処理を示す信号である場合は、エンディアン変換部において生成されたデータを出力するセレクタとを備える。
【0019】
(b)(b1)バレルシフタは、32ビットの第1のデータが入力する側から、双方向1ビットシフタ、双方向3ビットシフタ、双方向8ビットシフタ、双方向24ビットシフタの順に直列に接続することによって構成されたものであり、(b2)双方向1ビットシフタは、第1のデータに対してシフト演算を行って34ビットの第2のデータを生成するものであり、(b3)双方向3ビットシフタは、第2のデータに対してシフト演算を行って38ビットの第3のデータを生成するものであり、(b4)双方向8ビットシフタは、第1のデータに対してシフト演算を行って54ビットの第4のデータを生成するものであり、(b5)双方向24ビットシフタは、第4のデータに対してシフト演算を行って32ビットの第5のデータを生成するものであり、(b6)エンディアン変換部は、第5のデータにおける1バイト目のデータ、第4のデータから両側の11ビットを除いた部分における2バイト目のデータ、第5のデータにおける3バイト目のデータ、第4のデータから両側の11ビットを除いた部分における4バイト目のデータの順に配列した第6のデータを生成するものであり、(b7)セレクタは、制御信号が第1の演算処理を示す信号である場合は、バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして第5のデータを出力し、制御信号が第2の演算処理を示す信号である場合は、エンディアン変換部において生成されたデータとして第6のデータを出力するものである。
【0020】
(c)(c1)情報処理装置は、制御部から出力された制御信号に応じて、バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、(c2)デコーダは、(c2−1)制御信号が第2の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、(c2−1a)双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(c2−1b)双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(c2−1c)双方向8ビットシフタに右ローテートとした結果を第4のデータとして出力させ、(c2−1d)双方向24ビットシフタに右ローテートとした結果を第5のデータとして出力させ、(c2−2)制御信号が第2の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、(c2−2a)双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(c2−2b)双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(c2−2c)双方向8ビットシフタに左ローテートとした結果を第4のデータとして出力させ、(c2−2d)双方向24ビットシフタに左ローテートとした結果を第5のデータとして出力させるものである。
【0021】
以上の点を踏まえて本実施の形態について、図面を参照しながら説明する。
<構成>
まず、本実施の形態における情報処理装置の構成について説明する。
【0022】
図1に示されるように、情報処理装置100は、CPUなどの情報処理装置である。そして、CPUなどの情報処理装置に備わるバレルシフタを共用することで、データをビットシフトするシフト演算処理とデータを第1のエンディアンから第2のエンディアンに変換するエンディアン変換処理とを択一的に実行することができる。ただし、シフト演算処理とエンディアン変換処理とを同時に実行することはできない。
【0023】
ここでは、一例として、情報処理装置100は、入力データ記憶部101、出力データ記憶部102、制御部103、デコーダ104、エンディアン変換部105、セレクタ106、双方向1ビットシフタ110、双方向3ビットシフタ120、双方向8ビットシフタ130、双方向24ビットシフタ140などを備える。また、取り扱うデータサイズは32ビットとする。
【0024】
なお、双方向1ビットシフタ110、双方向3ビットシフタ120、双方向8ビットシフタ130、双方向24ビットシフタ140の順に直列に接続したものがバレルシフタである。このバレルシフタは、左31ビット〜右31ビットのシフト演算を行うことができる。
【0025】
また、双方向1ビットシフタ110、双方向3ビットシフタ120、双方向8ビットシフタ130、双方向24ビットシフタ140のそれぞれは、デコーダ104から出力されたセレクタ制御信号C0,C1,C2,C3によって制御されている。これによって、バレルシフタは、シフト量制御信号SQによって指定されたシフト量だけ入力データIをシフトすることができる。
【0026】
<入力データ記憶部101>
入力データ記憶部101は、少なくとも32ビットのデータを記憶することができる記憶装置である。
【0027】
<出力データ記憶部102>
出力データ記憶部102は、少なくとも32ビットのデータを記憶することができる記憶装置である。
【0028】
<制御部103>
制御部103は、エンディアン変換の種類に応じて、シフト方向とシフト量を示す6ビットのシフト量制御信号SQと、エンディアン変換の有無と種類を示す2ビットのエンディアン制御信号SEを出力する。
【0029】
なお、制御部103は、回路によって実現されるとしてもよいし、情報処理装置100において実行されたプログラムによって実現されるとしてもよい。
<デコーダ104>
デコーダ104は、制御部103から出力されたシフト量制御信号SQとエンディアン制御信号SEとに応じて、セレクタ制御信号C0,C1,C2,C3を生成し、生成したセレクタ制御信号C0,C1,C2,C3を出力する。
【0030】
ここで、セレクタ制御信号C0は、双方向1ビットシフタ110におけるセレクタ114を制御する2ビットの信号である。セレクタ制御信号C1は、双方向3ビットシフタ120におけるセレクタ124を制御する2ビットの信号である。セレクタ制御信号C2は、双方向8ビットシフタ130におけるセレクタ136を制御する3ビットの信号である。セレクタ制御信号C3は、双方向24ビットシフタ140におけるセレクタ146を制御する3ビットの信号である。
【0031】
<エンディアン変換部105>
エンディアン変換部105は、配線の引き回しによって、データ{S8[42:35],S8[26:19]}と、データ{S24[23:16],S24[7:0]}とから、32ビットのデータを生成し、生成した32ビットのデータを出力する。
【0032】
このとき、エンディアン変換部105は、下位バイトから、データS24[7:0]、データS8[26:19]、データS24[23:16]、データS8[42:35]の順に配列した32ビットのデータ{S8[42:35],S24[23:16],S8[26:19],S24[7:0]}を生成する。
【0033】
ここで、データ{S8[42:35],S8[26:19]}とは、セレクタ136から出力された54ビットのデータS8から、42ビット目から35ビット目までの部分(S8[42:35])と、26ビット目から19ビット目までの部分(S8[26:19])とを取り出した16ビットのデータである。データ{S24[23:16],S24[7:0]}とは、セレクタ146から出力された32ビットのデータS24から、23ビット目から16ビット目までの部分(S24[23:16])と、7ビット目から0ビット目までの部分(S24[7:0])とを取り出した16ビットのデータである。
【0034】
<セレクタ106>
セレクタ106は、制御部103から出力されたエンディアン制御信号SEから取り出されたエンディアン制御信号SE[1]に応じて、双方向24ビットシフタ140、エンディアン変換部105のいずれかを入力源として選択し、選択した入力源から出力された32ビットのデータを出力する。
【0035】
<双方向1ビットシフタ110>
双方向1ビットシフタ110は、シフタ111,112,113、セレクタ114を備える。入力データ記憶部101から出力された32ビットのデータから34ビットのデータを生成し、生成した34ビットのデータを出力する。
【0036】
このとき、シフタ111は、入力データ記憶部101から出力された32ビットのデータをシフトせずに両側に1ビットずつ(計2ビット)追加する。これによって、34ビットのデータを生成する。
【0037】
また、シフタ112は、入力データ記憶部101から出力された32ビットのデータを1ビット左シフトする。これによって、34ビットのデータを生成する。
また、シフタ113は、入力データ記憶部101から出力された32ビットのデータを1ビット右シフトする。これによって、34ビットのデータを生成する。
【0038】
そして、セレクタ114は、デコーダ104から出力されたセレクタ制御信号C0に応じてシフタ111,112,113のいずれかを入力源として選択し、選択した入力源で生成された34ビットのデータを出力する。
【0039】
例えば、セレクタ114は、セレクタ制御信号C0が“シフト無”を示す信号である場合は、シフタ111を入力源として選択する。セレクタ制御信号C0が“左シフト”を示す信号である場合は、シフタ112を入力源として選択する。セレクタ制御信号C0が“右シフト”を示す信号である場合は、シフタ113を入力源として選択する。
【0040】
<双方向3ビットシフタ120>
双方向3ビットシフタ120は、シフタ121,122,123、セレクタ124を備える。双方向1ビットシフタ110から出力された34ビットのデータから38ビットのデータを生成し、生成した38ビットのデータを出力する。
【0041】
このとき、シフタ121は、セレクタ114から出力された34ビットのデータをシフトせずに両側に2ビットずつ(計4ビット)追加する。これによって、38ビットのデータを生成する。
【0042】
また、シフタ122は、セレクタ114から出力された34ビットのデータを3ビット左シフトする。これによって、38ビットのデータを生成する。
また、シフタ123は、セレクタ114から出力された34ビットのデータを3ビット右シフトする。これによって、38ビットのデータを生成する。
【0043】
そして、セレクタ124は、デコーダ104から出力されたセレクタ制御信号C1に応じてシフタ121,122,123のいずれかを入力源として選択し、選択した入力源で生成された38ビットのデータを出力する。
【0044】
例えば、セレクタ124は、セレクタ制御信号C1が“シフト無”を示す信号である場合は、シフタ121を入力源として選択する。セレクタ制御信号C1が“左シフト”を示す信号である場合は、シフタ122を入力源として選択する。セレクタ制御信号C1が“右シフト”を示す信号である場合は、シフタ123を入力源として選択する。
【0045】
<双方向8ビットシフタ130>
双方向8ビットシフタ130は、シフタ131,132,133,134,135、セレクタ136を備える。双方向3ビットシフタ120から出力された38ビットのデータから54ビットのデータを生成し、生成した54ビットのデータを出力する。
【0046】
このとき、シフタ131は、セレクタ124から出力された38ビットのデータをシフトせずに両側に8ビットずつ(計16ビット)追加する。これによって、54ビットのデータを生成する。
【0047】
また、シフタ132は、セレクタ124から出力された38ビットのデータを8ビット左シフトする。これによって、54ビットのデータを生成する。
また、シフタ133は、セレクタ124から出力された38ビットのデータを8ビット右シフトする。これによって、54ビットのデータを生成する。
【0048】
また、シフタ134は、セレクタ124から出力された38ビットのデータにおいて両側の3ビットを除いた部分(32ビットのデータ)に対してのみ8ビット左ローテートする。これによって、54ビットのデータを生成する。
【0049】
また、シフタ135は、セレクタ124から出力された38ビットのデータにおいて両側の3ビットを除いた部分(32ビットのデータ)に対してのみ8ビット右ローテートする。これによって、54ビットのデータを生成する。
【0050】
そして、セレクタ136は、デコーダ104から出力されたセレクタ制御信号C2に応じてシフタ131,132,133,134,135のいずれかを入力源として選択し、選択した入力源で生成された54ビットのデータを出力する。
【0051】
例えば、セレクタ136は、セレクタ制御信号C2が“シフト無”を示す信号である場合は、シフタ131を入力源として選択する。セレクタ制御信号C2が“左シフト”を示す信号である場合は、シフタ132を入力源として選択する。セレクタ制御信号C2が“右シフト”を示す信号である場合は、シフタ133を入力源として選択する。セレクタ制御信号C2が“左ローテート”を示す信号である場合は、シフタ134を入力源として選択する。セレクタ制御信号C2が“右ローテート”を示す信号である場合は、シフタ135を入力源として選択する。
【0052】
なお、シフタ131は、生成した54ビットのデータを、セレクタ136以外に、双方向24ビットシフタ140におけるシフタ141,142にも出力する。
<双方向24ビットシフタ140>
双方向24ビットシフタ140は、シフタ141,142,143,144,145、セレクタ146を備える。双方向8ビットシフタ130から出力された54ビットのデータから32ビットのデータを生成し、生成した32ビットのデータを出力する。
【0053】
このとき、シフタ141は、シフタ131から出力された54ビットのデータにおいて両側の11ビットを除いた部分(32ビットのデータ)に対してのみ24ビット左ローテートして両側から11ビットずつ(計22ビット)削除する。これによって、32ビットのデータを生成する。
【0054】
また、シフタ142は、シフタ131から出力された54ビットのデータにおいて両側の11ビットを除いた部分(32ビットのデータ)に対してのみ24ビット右ローテートして両側から11ビットずつ(計22ビット)削除する。これによって、32ビットのデータを生成する。
【0055】
また、シフタ143は、セレクタ136から出力された54ビットのデータをシフトせずに両側から11ビットずつ(計22ビット)削除する。これによって、32ビットのデータを生成する。
【0056】
また、シフタ144は、セレクタ136から出力された54ビットのデータを24ビット左シフトして両側から11ビットずつ(計22ビット)削除する。これによって、32ビットのデータを生成する。
【0057】
また、シフタ145は、セレクタ136から出力された54ビットのデータを8ビット右シフトして両側から11ビットずつ(計22ビット)削除する。これによって、32ビットのデータを生成する。
【0058】
そして、セレクタ146は、デコーダ104から出力されたセレクタ制御信号C3に応じてシフタ141,142,143,144,145のいずれかを入力源として選択し、選択した入力源で生成された32ビットのデータを出力する。
【0059】
例えば、セレクタ146は、セレクタ制御信号C3が“左ローテート”を示す信号である場合は、シフタ141を入力源として選択する。セレクタ制御信号C3が“右ローテート”を示す信号である場合は、シフタ142を入力源として選択する。セレクタ制御信号C3が“シフト無”を示す信号である場合は、シフタ143を入力源として選択する。セレクタ制御信号C3が“左シフト”を示す信号である場合は、シフタ144を入力源として選択する。セレクタ制御信号C3が“右シフト”を示す信号である場合は、シフタ145を入力源として選択する。
【0060】
<動作>
これによって、入力データ記憶部101で記憶されている32ビットのデータ(入力データI)が、双方向1ビットシフタ110、双方向3ビットシフタ120、双方向8ビットシフタ130、双方向24ビットシフタ140、セレクタ106を通過することによってシフト演算処理とエンディアン変換処理とのいずれかが行われる。シフト演算処理とエンディアン変換処理とのいずれかが行われて得られた32ビットのデータ(出力データO)が出力データ記憶部102で記憶される。
【0061】
<バレルシフタ>
次に、情報処理装置100に備わるバレルシフタについて説明する。
情報処理装置100に備わるバレルシフタにおいては、右シフトと左シフトを組み合わせることで、所要のデータが得られる。ただし、ビットシフタにおいては、シフトアウトされるデータも残して次のビットシフタに出力する必要がある。このため、ビットシフタから出力されるデータには、余分なビット(以下、追加ビットと呼称する。)が含まれる。
【0062】
例えば、バレルシフタにおいては、下記(1)〜(4)のように動作させることで右13ビットシフトしたデータが得られる。
(1)双方向1ビットシフタ110は、シフトしない。
【0063】
(2)双方向3ビットシフタ120は、左3ビットシフトする。
(3)双方向8ビットシフタ130は、左8ビットシフトする。
(4)双方向24ビットシフタ140は、右24ビットシフトする。
【0064】
この例では、左に11ビットシフトしてから右に24ビットシフトするので、左側11ビットを残す必要がある。このため、双方向3ビットシフタ120においては、入力側に対して出力側を左側に3ビット拡張する必要がある。また、双方向8ビットシフタ130においては、入力側に対して出力側を左側に11ビット拡張する必要がある。
【0065】
なお、左31ビット〜右31ビットのシフトを行うためには、下記(1)〜(3)のとおりである。
(1)双方向1ビットシフタ110においては、入力側に対して、出力側を両側に1ビット拡張する。
【0066】
(2)双方向3ビットシフタ120においては、入力側に対して、出力側を両側に4ビット拡張する。
(3)双方向8ビットシフタ130においては、入力側に対して、出力側を両側に11ビット拡張する。
【0067】
この場合において、各ビットシフタから出力されたデータにおいて32ビットのデータ(入力データI)に対応する部分は、下記(1)〜(4)のとおりである。
(1)双方向1ビットシフタ110から出力されたデータには追加ビット(両側の1ビット)が含まれる。このため、双方向1ビットシフタ110から出力されたデータにおいて該当する部分は、追加ビット(両側の1ビット)を除いたデータ[32:1]である。
【0068】
(2)双方向3ビットシフタ120から出力されたデータには追加ビット(両側の4ビット)が含まれる。このため、双方向3ビットシフタ120から出力されたデータにおいて該当する部分は、追加ビット(両側の4ビット)を除いたデータ[35:4]である。
【0069】
(3)双方向8ビットシフタ130から出力されたデータには追加ビット(両側の11ビット)が含まれる。このため、双方向8ビットシフタ130から出力されたデータにおいて該当する部分は、追加ビット(両側の11ビット)を除いたデータ[42:11]である。
【0070】
(4)双方向24ビットシフタ140から出力されたデータには追加ビットが含まれない。このため、双方向24ビットシフタ140から出力されたデータにおいて該当する部分は、データ[31:0]である。
【0071】
<真理値表>
次に、情報処理装置100の動作を示したオペレーションに対する各種制御信号の真理値表について説明する。
【0072】
なお、図2には、ハーフワードデータのエンディアン変換(以下、ハーフワードエンディアン変換と呼称する。)、ワードデータのエンディアン変換(以下、ワードエンディアン変換と呼称する。)、右31ビット〜左5ビットシフトに対する各種制御信号の真理値表が示されている。また、図3には、左6ビット〜左31ビットシフトに対する各種制御信号の真理値表が示されている。
【0073】
なお、シフト量制御信号SQにおける各真理値については、−31〜31の値が一意に割り当てられている。ここで、負の数は右シフトを示し、正の数は左シフトを示す。
図2、図3に示されるように、セレクタ制御信号C0,C1において、“00”は“シフト無”、“01”は“左シフト”、“10”は“右シフト”を示す。セレクタ制御信号C2,C3において、“000”は“シフト無”、“001”は“左シフト”、“010”は“右シフト”、“101”は“左ローテート”、“110”は“右ローテート”を示す。エンディアン制御信号SEにおいて、“11”は“ハーフワードエンディアン変換”、“10”は“ワードエンディアン変換”を示す。
【0074】
例えば、制御部103は、シフト演算処理を行う場合は、エンディアン制御信号SE(00)を出力する。エンディアン変換処理を行う場合は、エンディアン制御信号SE(10または11)を出力する。
【0075】
このとき、ワードエンディアン変換を行う場合は、制御部103は、エンディアン制御信号SE(10)をデコーダ104に出力する。これに伴い、デコーダ104は、セレクタ制御信号C2(110)を双方向8ビットシフタ130に出力する。右8ビットローテートのデータを双方向8ビットシフタ130に出力させる。また、デコーダ104は、セレクタ制御信号C3(110)を双方向24ビットシフタ140に出力する。右24ビットローテートのデータを双方向24ビットシフタ140に出力させる。
【0076】
また、ハーフワードエンディアン変換を行う場合は、制御部103は、エンディアン制御信号SE(11)をデコーダ104に出力する。これに伴い、デコーダ104は、セレクタ制御信号C2(101)を双方向8ビットシフタ130に出力する。左8ビットローテートのデータを双方向8ビットシフタ130に出力させる。また、デコーダ104は、セレクタ制御信号C3(101)を双方向24ビットシフタ140に出力する。左24ビットローテートのデータを双方向24ビットシフタ140に出力させる。
【0077】
なお、セレクタ106は、エンディアン制御信号SE[1]の値が“0”である場合は、双方向24ビットシフタ140を入力源として選択する。エンディアン制御信号SE[1]の値が“1”である場合は、エンディアン変換部105を入力源として選択する。
【0078】
<エンディアン変換>
次に、情報処理装置100におけるエンディアン変換について説明する。
まず、エンディアン変換部105には、双方向8ビットシフタ130から出力されたデータから追加ビット(両側の11ビット)を除いた32ビットのデータS8[37:6]における4バイト目(S8[42:35])と2バイト目(S8[26:19])とが入力される。また、双方向24ビットシフタ140から出力された32ビットのデータS24[31:0]における3バイト目(S24[23:16])と1バイト目(S24[7:0])とが入力される。
【0079】
これに伴い、エンディアン変換部105は、入力したこれらのデータを、下位バイトから、データS24の1バイト目(S24[7:0])、データS8の2バイト目(S8[26:19])、データS24の3バイト目(S24[23:16])、データS8の4バイト目(S8[42:35])の順に配列したデータを生成する。
【0080】
これによって、エンディアン変換部105からは、データ{S8[42:35],S24[23:16],S8[26:19],S24[7:0]}が出力される。
<ワードエンディアン変換>
このとき、ワードエンディアン変換を行う場合は、図4(a)に示されるように、下記(1)〜(4)のように変換される。
【0081】
(1)入力データIにおける4バイト目のデータが出力データOにおける1バイト目のデータとして配置される。
(2)入力データIにおける3バイト目のデータが出力データOにおける2バイト目のデータとして配置される。
【0082】
(3)入力データIにおける2バイト目のデータが出力データOにおける3バイト目のデータとして配置される。
(4)入力データIにおける1バイト目のデータが出力データOにおける4バイト目のデータとして配置される。
【0083】
例えば、入力データIで表記すれば、データ{I[7:0],I[15:8],I[23:16],I[31:24]}がエンディアン変換部105から出力される。すなわち、入力データIをワードエンディアン変換した結果が得られる。
【0084】
<ハーフワードエンディアン変換>
また、ハーフワードエンディアン変換を行う場合は、図4(b)に示されるように変換される。
【0085】
(1)入力データIにおける2バイト目のデータが出力データOにおける1バイト目のデータとして配置される。
(2)入力データIにおける1バイト目のデータが出力データOにおける2バイト目のデータとして配置される。
【0086】
(3)入力データIにおける4バイト目のデータが出力データOにおける3バイト目のデータとして配置される。
(4)入力データIにおける3バイト目のデータが出力データOにおける4バイト目のデータとして配置される。
【0087】
例えば、入力データIで表記すれば、データ{I[23:16],I[31:24],I[7:0],I[15:8]}がエンディアン変換部105から出力される。すなわち、入力データIをハーフワードエンディアン変換した結果が得られる。
【0088】
<まとめ>
以上、本実施の形態によれば、情報処理装置100は、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを、制御部103、デコーダ104、セレクタ106によって制御して、シフト演算処理とエンディアン変換処理とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。また、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【0089】
(実施の形態2)
以下、本発明に係わる実施の形態2について説明する。
<概要>
本実施の形態における情報処理装置は、下記(d),(e)に示す特徴を備える。
【0090】
(d)(d1)バレルシフタは、32ビットの第1のデータが入力する側から、双方向1ビットシフタ、双方向3ビットシフタ、双方向8ビットシフタ、双方向19ビットシフタの順に直列に接続することによって構成されたものであり、(d2)双方向1ビットシフタは、第1のデータに対してシフト演算を行って34ビットの第2のデータを生成するものであり、(d3)双方向3ビットシフタは、第2のデータに対してシフト演算を行って38ビットの第3のデータを生成するものであり、(d4)双方向8ビットシフタは、第3のデータに対してシフト演算を行って44ビットの第4のデータを生成するものであり、(d5)双方向19ビットシフタは、第4のデータに対してシフト演算を行って32ビットの第5のデータを生成するものであり、(d6)エンディアン変換部は、第4のデータから両側の6ビットを除いた部分における3バイト目のデータ、2バイト目のデータ、1バイト目のデータ、4バイト目のデータの順に配列した第6のデータを生成するものであり、(d7)セレクタは、制御信号が第1の演算処理を示す信号である場合は、バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして第5のデータを出力し、制御信号が第2の演算処理を示す信号である場合は、エンディアン変換部において生成されたデータとして第6のデータを出力するものである。
【0091】
(e)(e1)情報処理装置は、制御部から出力された制御信号に応じて、バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、(e2)デコーダは、(e2−1)制御信号が第2の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、(e2−1a)双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(e2−1b)双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(e2−1c)双方向8ビットシフタに右ローテートとした結果を第4のデータとして出力させ、(e2−1d)双方向19ビットシフタにシフトしなかった結果を第5のデータとして出力させ、(e2−2)制御信号が第2の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、(e2−2a)双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、(e2−2b)双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、(e2−2c)双方向8ビットシフタに左ローテートとした結果を第4のデータとして出力させ、(e2−2d)双方向19ビットシフタにシフトしなかった結果を第5のデータとして出力させるものである。
【0092】
以上の点を踏まえて、本実施に形態について、図面を参照しながら説明する。なお、実施の形態1における構成要素と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0093】
<構成>
まず、本実施の形態における情報処理装置の構成について説明する。
図5に示されるように、情報処理装置200は、実施の形態1における情報処理装置100と比べて、下記の点が異なる。
【0094】
情報処理装置200は、デコーダ104、エンディアン変換部105、セレクタ106、双方向1ビットシフタ110、双方向3ビットシフタ120、双方向8ビットシフタ130、双方向24ビットシフタ140の代わりに、デコーダ204、エンディアン変換部205、セレクタ206、双方向1ビットシフタ210、双方向3ビットシフタ220、双方向8ビットシフタ230、双方向19ビットシフタ240を備える。
【0095】
なお、双方向1ビットシフタ210、双方向3ビットシフタ220、双方向8ビットシフタ230、双方向19ビットシフタ240の順に直列に接続したものがバレルシフタである。このバレルシフタは、左31ビット〜右31ビットのシフト演算を行うことができる。
【0096】
また、双方向1ビットシフタ210、双方向3ビットシフタ220、双方向8ビットシフタ230、双方向19ビットシフタ240のそれぞれは、デコーダ204から出力されたセレクタ制御信号C0,C1,C2,C3によって制御されている。これによって、バレルシフタは、シフト量制御信号SQによって指定されたシフト量だけ入力データIをシフトすることができる。
【0097】
<デコーダ204>
デコーダ204は、制御部103から出力されたシフト量制御信号SQとエンディアン制御信号SEとに応じて、セレクタ制御信号C0,C1,C2,C3を生成し、生成したセレクタ制御信号C0,C1,C2,C3を出力する。
【0098】
ここで、セレクタ制御信号C0は、双方向1ビットシフタ210におけるセレクタ214を制御する2ビットの信号である。セレクタ制御信号C1は、双方向3ビットシフタ220におけるセレクタ224を制御する2ビットの信号である。セレクタ制御信号C2は、双方向8ビットシフタ230におけるセレクタ236を制御する3ビットの信号である。セレクタ制御信号C3は、双方向19ビットシフタ240におけるセレクタ244を制御する2ビットの信号である。
【0099】
<エンディアン変換部205>
エンディアン変換部205は、配線の引き回しによって、データS8[37:6]から、32ビットのデータを生成し、生成した32ビットのデータを出力する。
【0100】
このとき、エンディアン変換部205は、データS8[37:6]を、下位バイトから、データS8の3バイト目(S8[29:22])、2バイト目(S8[21:14])、1バイト目(S8[13:6])、4バイト目(S8[37:30])の順に配列した32ビットのデータ{S8[37:30],S8[13:6],S8[21:14],S8[29:22]}を生成する。
【0101】
ここで、データS8[37:6]とは、セレクタ236から出力された44ビットのデータS8から、37ビット目から6ビット目までの部分(S8[37:6])を取り出した32ビットのデータである。
【0102】
<セレクタ206>
セレクタ206は、制御部103から出力されたエンディアン制御信号SEから取り出されたエンディアン制御信号SE[1]に応じて、双方向19ビットシフタ240、エンディアン変換部205のいずれかを入力源として選択し、選択した入力源から出力された32ビットのデータを出力する。
【0103】
<双方向1ビットシフタ210>
双方向1ビットシフタ210は、シフタ211,212,213、セレクタ214を備える。入力データ記憶部101から出力された32ビットのデータから34ビットのデータを生成し、生成した34ビットのデータを出力する。
【0104】
このとき、シフタ211は、入力データ記憶部101から出力された32ビットのデータをシフトせずに両側に1ビットずつ(計2ビット)追加する。これによって、34ビットのデータを生成する。
【0105】
また、シフタ212は、入力データ記憶部101から出力された32ビットのデータを1ビット左シフトする。これによって、34ビットのデータを生成する。
また、シフタ213は、入力データ記憶部101から出力された32ビットのデータを1ビット右シフトする。これによって、34ビットのデータを生成する。
【0106】
そして、セレクタ214は、デコーダ204から出力されたセレクタ制御信号C0に応じてシフタ211,212,213のいずれかを入力源として選択し、選択した入力源で生成された34ビットのデータを出力する。
【0107】
例えば、セレクタ214は、セレクタ制御信号C0が“シフト無”を示す信号である場合は、シフタ211を入力源として選択する。セレクタ制御信号C0が“左シフト”を示す信号である場合は、シフタ212を入力源として選択する。セレクタ制御信号C0が“右シフト”を示す信号である場合は、シフタ213を入力源として選択する。
【0108】
<双方向3ビットシフタ220>
双方向3ビットシフタ220は、シフタ221,222,223、セレクタ224を備える。双方向1ビットシフタ210から出力された34ビットのデータから38ビットのデータを生成し、生成した38ビットのデータを出力する。
【0109】
このとき、シフタ221は、セレクタ214から出力された34ビットのデータをシフトせずに両側に2ビットずつ(計4ビット)追加する。これによって、38ビットのデータを生成する。
【0110】
また、シフタ222は、セレクタ214から出力された34ビットのデータを3ビット左シフトする。これによって、38ビットのデータを生成する。
また、シフタ223は、セレクタ214から出力された34ビットのデータを3ビット右シフトする。これによって、38ビットのデータを生成する。
【0111】
そして、セレクタ224は、デコーダ204から出力されたセレクタ制御信号C1に応じてシフタ221,222,223のいずれかを入力源として選択し、選択した入力源で生成された38ビットのデータを出力する。
【0112】
例えば、セレクタ224は、セレクタ制御信号C1が“シフト無”を示す信号である場合は、シフタ221を入力源として選択する。セレクタ制御信号C1が“左シフト”を示す信号である場合は、シフタ222を入力源として選択する。セレクタ制御信号C1が“右シフト”を示す信号である場合は、シフタ223を入力源として選択する。
【0113】
<双方向8ビットシフタ230>
双方向8ビットシフタ230は、シフタ231,232,233,234,235、セレクタ236を備える。双方向3ビットシフタ220から出力された38ビットのデータから44ビットのデータを生成し、生成した44ビットのデータを出力する。
【0114】
このとき、シフタ231は、セレクタ224から出力された38ビットのデータをシフトせずに両側に3ビットずつ(計6ビット)追加する。これによって、44ビットのデータを生成する。
【0115】
また、シフタ232は、セレクタ224から出力された38ビットのデータを8ビット左シフトする。これによって、44ビットのデータを生成する。
また、シフタ233は、セレクタ224から出力された38ビットのデータを8ビット右シフトする。これによって、44ビットのデータを生成する。
【0116】
また、シフタ234は、セレクタ224から出力された38ビットのデータにおいて両側の3ビットを除いた部分(32ビットのデータ)に対してのみ8ビット左ローテートする。これによって、44ビットのデータを生成する。
【0117】
また、シフタ235は、セレクタ224から出力された38ビットのデータにおいて両側の3ビットを除いた部分(32ビットのデータ)に対してのみ8ビット右ローテートする。これによって、44ビットのデータを生成する。
【0118】
そして、セレクタ236は、デコーダ204から出力されたセレクタ制御信号C2に応じてシフタ231,232,233,234,235のいずれかを入力源として選択し、選択した入力源で生成された44ビットのデータを出力する。
【0119】
例えば、セレクタ236は、セレクタ制御信号C2が“シフト無”を示す信号である場合は、シフタ231を入力源として選択する。セレクタ制御信号C2が“左シフト”を示す信号である場合は、シフタ232を入力源として選択する。セレクタ制御信号C2が“右シフト”を示す信号である場合は、シフタ233を入力源として選択する。セレクタ制御信号C2が“左ローテート”を示す信号である場合は、シフタ234を入力源として選択する。セレクタ制御信号C2が“右ローテート”を示す信号である場合は、シフタ235を入力源として選択する。
【0120】
<双方向19ビットシフタ240>
双方向19ビットシフタ240は、シフタ241,242,243、セレクタ244を備える。双方向8ビットシフタ230から出力された44ビットのデータから32ビットのデータを生成し、生成した32ビットのデータを出力する。
【0121】
このとき、シフタ241は、セレクタ236から出力された44ビットのデータをシフトせずに両側から6ビットずつ(計12ビット)削除する。これによって、32ビットのデータを生成する。
【0122】
また、シフタ242は、セレクタ236から出力された44ビットのデータを19ビット左シフトして両側から6ビットずつ(計12ビット)削除する。これによって、32ビットのデータを生成する。
【0123】
また、シフタ243は、セレクタ236から出力された44ビットのデータを19ビット右シフトして両側から6ビットずつ(計12ビット)削除する。これによって、32ビットのデータを生成する。
【0124】
そして、セレクタ244は、デコーダ204から出力されたセレクタ制御信号C3に応じてシフタ241,242,243のいずれかを入力源として選択し、選択した入力源で生成された32ビットのデータを出力する。
【0125】
例えば、セレクタ244は、セレクタ制御信号C3が“シフト無”を示す信号である場合は、シフタ241を入力源として選択する。セレクタ制御信号C3が“左シフト”を示す信号である場合は、シフタ242を入力源として選択する。セレクタ制御信号C3が“右シフト”を示す信号である場合は、シフタ243を入力源として選択する。
【0126】
<動作>
これによって、入力データ記憶部101で記憶されている32ビットのデータ(入力データI)が、双方向1ビットシフタ210、双方向3ビットシフタ220、双方向8ビットシフタ230、双方向19ビットシフタ240、セレクタ206を通過することによってシフト演算処理とエンディアン変換処理とのいずれかが行われる。シフト演算処理とエンディアン変換処理とのいずれかが行われて得られた32ビットのデータ(出力データO)が出力データ記憶部102で記憶される。
【0127】
<バレルシフタ>
次に、情報処理装置200に備わるバレルシフタについて説明する。
情報処理装置200に備わるバレルシフタにおいては、右シフトと左シフトを組み合わせることで、所要のデータが得られる。ただし、ビットシフタにおいては、シフトアウトされるデータも残して次のビットシフタに出力する必要がある。このため、ビットシフタから出力されるデータには、余分なビット(以下、追加ビットと呼称する。)が含まれる。
【0128】
なお、バレルシフタで左31ビット〜右31ビットのシフトを行うためには、下記(1)〜(3)のとおりである。
(1)双方向1ビットシフタ210においては、入力側に対して、出力側を両側に1ビット拡張する。
【0129】
(2)双方向3ビットシフタ220においては、入力側に対して、出力側を両側に4ビット拡張する。
(3)双方向8ビットシフタ230においては、入力側に対して、出力側を両側に6ビット拡張する。
【0130】
この場合において、各ビットシフタから出力されたデータにおいて32ビットのデータ(入力データI)に対応する部分は、下記(1)〜(4)のとおりである。
(1)双方向1ビットシフタ210から出力されたデータには追加ビット(両側の1ビット)が含まれる。このため、双方向1ビットシフタ210から出力されたデータにおいて該当する部分は、追加ビット(両側の1ビット)を除いたデータ[32:1]である。
【0131】
(2)双方向3ビットシフタ220から出力されたデータには追加ビット(両側の4ビット)が含まれる。このため、双方向3ビットシフタ220から出力されたデータにおいて該当する部分は、追加ビット(両側の4ビット)を除いたデータ[35:4]である。
【0132】
(3)双方向8ビットシフタ230から出力されたデータには追加ビット(両側の6ビット)が含まれる。このため、双方向8ビットシフタ230から出力されたデータにおいて該当する部分は、追加ビット(両側の6ビット)を除いたデータ[37:6]である。
【0133】
(4)双方向19ビットシフタ240から出力されたデータには追加ビットが含まれない。このため、双方向19ビットシフタ240から出力されたデータにおいて該当する部分は、データ[31:0]である。
【0134】
<真理値表>
次に、情報処理装置200の動作を示したオペレーションに対する各種制御信号の真理値表について説明する。
【0135】
なお、図6には、ハーフワードデータのエンディアン変換(以下、ハーフワードエンディアン変換と呼称する。)、ワードデータのエンディアン変換(以下、ワードエンディアン変換と呼称する。)、右31ビット〜左5ビットシフトに対する各種制御信号の真理値表が示されている。図7には、左6ビット〜左31ビットシフトに対する各種制御信号の真理値表が示されている。
【0136】
なお、シフト量制御信号SQにおける各真理値については、−31〜31の値が一意に割り当てられている。ここで、負の数は右シフトを示し、正の数は左シフトを示す。
図6、図7に示されるように、セレクタ制御信号C0,C1,C3において、“00”は“シフト無”、“01”は“左シフト”、“10”は“右シフト”を示す。セレクタ制御信号C2において、“000”は“シフト無”、“001”は“左シフト”、“010”は“右シフト”、“101”は“左ローテート”、“110”は“右ローテート”を示す。エンディアン制御信号SEにおいて、“11”は“ハーフワードエンディアン変換”、“10”は“ワードエンディアン変換”を示す。
【0137】
例えば、制御部103は、シフト演算処理を行う場合は、エンディアン制御信号SE(00)を出力する。エンディアン変換処理を行う場合は、エンディアン制御信号SE(10または11)を出力する。
【0138】
このとき、ワードエンディアン変換を行う場合は、制御部103は、エンディアン制御信号SE(10)をデコーダ204に出力する。これに伴い、デコーダ204は、セレクタ制御信号C2(110)を双方向8ビットシフタ230に出力する。右8ビットローテートのデータを双方向8ビットシフタ230に出力させる。
【0139】
また、ハーフワードエンディアン変換を行う場合は、制御部103は、エンディアン制御信号SE(11)をデコーダ204に出力する。これに伴い、デコーダ204は、セレクタ制御信号C2(101)を双方向8ビットシフタ230に出力する。左8ビットローテートのデータを双方向8ビットシフタ230に出力させる。
【0140】
なお、セレクタ206は、エンディアン制御信号SE[1]の値が“0”である場合は、双方向19ビットシフタ240を入力源として選択する。エンディアン制御信号SE[1]の値が“1”である場合は、エンディアン変換部205を入力源として選択する。
【0141】
<エンディアン変換>
次に、情報処理装置200におけるエンディアン変換について説明する。
まず、エンディアン変換部205には、双方向8ビットシフタ230から出力されたデータS8から追加ビット(両側の6ビット)を除いた32ビットのデータS8[37:6]が入力される。
【0142】
これに伴い、エンディアン変換部205は、入力した32ビットのデータS8[37:6]を、下位バイトから、データS8の3バイト目(S8[29:22])、2バイト目(S8[21:14])、1バイト目(S8[13:6])、4バイト目(S8[37:30])の順に配列したデータを生成する。
【0143】
これによって、エンディアン変換部205からは、データ{S8[37:30],S8[13:6],S8[21:14],S8[29:22]}が出力される。
このとき、ワードエンディアン変換を行う場合は、入力データIで表記すれば、データ{I[7:0],I[31:24],I[23:16],I[15:8]}がエンディアン変換部205に入力する。入力したデータ{I[7:0],I[31:24],I[23:16],I[15:8]}がデータ{I[7:0],I[15:8],I[23:16],I[31:24]}にエンディアン変換部205で変換される。変換されて得られたデータ{I[7:0],I[15:8],I[23:16],I[31:24]}がエンディアン変換部205から出力される。すなわち、入力データIをワードエンディアン変換した結果が得られる。
【0144】
一方、ハーフワードエンディアン変換を行う場合は、入力データIで表記すれば、データ{I[23:16],I[15:8],I[7:0],I[31:24]}がエンディアン変換部205に入力する。入力したデータ{I[23:16],I[15:8],I[7:0],I[31:24]}がデータ{I[23:16],I[31:24],I[7:0],I[15:8]}にエンディアン変換部205で変換される。変換されて得られたデータ{I[23:16],I[31:24],I[7:0],I[15:8]}がエンディアン変換部205から出力される。すなわち、入力データIをハーフワードエンディアン変換した結果が得られる。
【0145】
<まとめ>
以上、本実施の形態によれば、情報処理装置200は、シフト命令、演算命令などの実行時における桁合わせ操作を行うにあたって必要不可欠なバレルシフタを、制御部103、デコーダ204、セレクタ206によって制御して、シフト演算処理とエンディアン変換処理とを択一的に実行することができる。結果、エンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。また、エンディアン変換の種類ごとにエンディアン変換回路を備える必要がなくなり、回路の増加を抑制することができる。
【0146】
(その他)
なお、本発明に係わる情報処理装置は、フルカスタムLSI(Large Scale Integration)によって実現されるとしてもよい。また、ASIC(Application Specific Integrated Circuit)等のようなセミカスタムLSIによって実現されるとしてもよい。また、FPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)等のようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
【0147】
さらに、本発明に係わる情報処理装置を構成する1以上の機能を、これ等のLSIに形成する設計データは、VHDL(Very high speed integrated circuit Hardware Description Language)、Verilog−HDL、SystemC等のようなハードウェア記述言語によって記述されたプログラム(以下、HDLプログラムと呼称する。)であるとしてもよい。また、HDLプログラムを論理合成して得られるゲート・レベルのネットリストであるとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報であるとしてもよい。また、寸法、タイミング等が規定されたマスクデータであるとしてもよい。
【0148】
さらに、設計データは、コンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み取り可能な記録媒体に記録されているとしてもよい。さらに、記録媒体を介して他のハードウェアシステムに読み取られた設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。これによって、本発明に係わる情報処理装置を他のハードウェアシステムに実現することができる。ここで、ハードウェアシステムに読み取り可能な記録媒体としては、光学記録媒体(例えば、CD−ROMなど。)、磁気記録媒体(例えば、ハードディスクなど。)、光磁気記録媒体(例えば、MOなど。)、半導体メモリ(例えば、メモリカードなど。)などがある。
【0149】
また、設計データは、インターネット、ローカルエリアネットワークなどのようなネットワークに接続されているハードウェアシステムに保持されているとしてもよい。さらに、ネットワークを介して他のハードウェアシステムに取得された設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。これによって、本発明に係わる情報処理装置を他のハードウェアシステムに実現することができる。ここで、ネットワークとして、地上放送網、衛星放送網、PLC(Power Line Communication)、移動電話網、有線通信網(例えば、IEEE802.3など。)、無線通信網(例えば、IEEE802.11など。)がある。
【0150】
また、論理合成、配置、配線された設計データは、シリアルROMに記録されているとしてもよい。そして、シリアルROMに記録された設計データが、通電時に、直接、FPGAにダウンロードされるとしてもよい。
【産業上の利用可能性】
【0151】
本発明は、バレルシフタを使用してシフト演算とエンディアン変換とを行う情報処理装置などとして利用することができる。
【図面の簡単な説明】
【0152】
【図1】実施の形態1における情報処理装置の構成を示すブロック図である。
【図2】実施の形態1における情報処理装置を制御する各種制御信号の真理値表を示す第1の図である。
【図3】実施の形態1における情報処理装置を制御する各種制御信号の真理値表を示す第2の図である。
【図4】(a)は、ワードエンディアン変換の概要を示す図であり、(b)は、ハーフワードエンディアン変換の概要を示す図である。
【図5】実施の形態2における情報処理装置の構成を示すブロック図である。
【図6】実施の形態2における情報処理装置を制御する各種制御信号の真理値表を示す第1の図である。
【図7】実施の形態2における情報処理装置を制御する各種制御信号の真理値表を示す第2の図である。
【図8】従来の技術におけるエンディアン変換回路の構成を示すブロック図である。
【符号の説明】
【0153】
10 エンディアン変換回路
11,12,13,14 セレクタ
100 情報処理装置
101 入力データ記憶部
102 出力データ記憶部
103 制御部
104 デコーダ
105 エンディアン変換部
106 セレクタ
110 双方向1ビットシフタ
111,112,113 シフタ
114 セレクタ
120 双方向3ビットシフタ
121,122,123 シフタ
124 セレクタ
130 双方向8ビットシフタ
131,132,133,134,135 シフタ
136 セレクタ
140 双方向24ビットシフタ
141,142,143,144,145 シフタ
146 セレクタ
200 情報処理装置
204 デコーダ
205 エンディアン変換部
206 セレクタ
210 双方向1ビットシフタ
211,212,213 シフタ
214 セレクタ
220 双方向3ビットシフタ
221,222,223 シフタ
224 セレクタ
230 双方向8ビットシフタ
231,232,233,234,235 シフタ
236 セレクタ
240 双方向19ビットシフタ
241,242,243 シフタ
244 セレクタ

【特許請求の範囲】
【請求項1】
複数のビットシフタをデータの流れる方向に直列に接続することによって構成されたバレルシフタと、
データをビットシフトする第1の演算処理とデータを第1のエンディアンから第2のエンディアンに変換する第2の演算処理とのいずれかを示す制御信号を出力する制御部と、
前記バレルシフタのいずれかのビットシフタにおいてシフト演算を行って得られたデータを使用して前記第2の演算処理を行うことによってデータを生成するエンディアン変換部と、
前記制御信号が前記第1の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータを出力し、前記制御信号が前記第2の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータを出力するセレクタと
を備えることを特徴とする情報処理装置。
【請求項2】
前記バレルシフタは、32ビットの第1のデータが入力する側から、双方向1ビットシフタ、双方向3ビットシフタ、双方向8ビットシフタ、双方向24ビットシフタの順に直列に接続することによって構成されたものであり、
前記双方向1ビットシフタは、前記第1のデータに対してシフト演算を行って34ビットの第2のデータを生成するものであり、
前記双方向3ビットシフタは、前記第2のデータに対してシフト演算を行って38ビットの第3のデータを生成するものであり、
前記双方向8ビットシフタは、前記第1のデータに対してシフト演算を行って54ビットの第4のデータを生成するものであり、
前記双方向24ビットシフタは、前記第4のデータに対してシフト演算を行って32ビットの第5のデータを生成するものであり、
前記エンディアン変換部は、前記第5のデータにおける1バイト目のデータ、前記第4のデータから両側の11ビットを除いた部分における2バイト目のデータ、前記第5のデータにおける3バイト目のデータ、前記第4のデータから両側の11ビットを除いた部分における4バイト目のデータの順に配列した第6のデータを生成するものであり、
前記セレクタは、前記制御信号が前記第1の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第5のデータを出力し、前記制御信号が前記第2の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第6のデータを出力するものである
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、
前記デコーダは、
前記制御信号が前記第2の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、
前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、
前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、
前記双方向8ビットシフタに右ローテートとした結果を第4のデータとして出力させ、
前記双方向24ビットシフタに右ローテートとした結果を第5のデータとして出力させ、
前記制御信号が前記第2の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、
前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、
前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、
前記双方向8ビットシフタに左ローテートとした結果を第4のデータとして出力させ、
前記双方向24ビットシフタに左ローテートとした結果を第5のデータとして出力させるものである
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記バレルシフタは、32ビットの第1のデータが入力する側から、双方向1ビットシフタ、双方向3ビットシフタ、双方向8ビットシフタ、双方向19ビットシフタの順に直列に接続することによって構成されたものであり、
前記双方向1ビットシフタは、前記第1のデータに対してシフト演算を行って34ビットの第2のデータを生成するものであり、
前記双方向3ビットシフタは、前記第2のデータに対してシフト演算を行って38ビットの第3のデータを生成するものであり、
前記双方向8ビットシフタは、前記第3のデータに対してシフト演算を行って44ビットの第4のデータを生成するものであり、
前記双方向19ビットシフタは、前記第4のデータに対してシフト演算を行って32ビットの第5のデータを生成するものであり、
前記エンディアン変換部は、前記第4のデータから両側の6ビットを除いた部分における3バイト目のデータ、2バイト目のデータ、1バイト目のデータ、4バイト目のデータの順に配列した第6のデータを生成するものであり、
前記セレクタは、前記制御信号が前記第1の演算処理を示す信号である場合は、前記バレルシフタの全ビットシフタにおいてシフト演算を行って得られたデータとして前記第5のデータを出力し、前記制御信号が前記第2の演算処理を示す信号である場合は、前記エンディアン変換部において生成されたデータとして前記第6のデータを出力するものである
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記情報処理装置は、前記制御部から出力された制御信号に応じて、前記バレルシフタの各ビットシフタにおけるシフト演算を制御するデコーダを備え、
前記デコーダは、
前記制御信号が前記第2の演算処理を示す信号である場合において、ワードデータのエンディアンを変換する場合は、
前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、
前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、
前記双方向8ビットシフタに右ローテートとした結果を第4のデータとして出力させ、
前記双方向19ビットシフタにシフトしなかった結果を第5のデータとして出力させ、
前記制御信号が前記第2の演算処理を示す信号である場合において、ハーフワードデータのエンディアンを変換する場合は、
前記双方向1ビットシフタにシフトしなかった結果を第2のデータとして出力させ、
前記双方向3ビットシフタにシフトしなかった結果を第3のデータとして出力させ、
前記双方向8ビットシフタに左ローテートとした結果を第4のデータとして出力させ、
前記双方向19ビットシフタにシフトしなかった結果を第5のデータとして出力させるものである
ことを特徴とする請求項4に記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−230591(P2009−230591A)
【公開日】平成21年10月8日(2009.10.8)
【国際特許分類】
【出願番号】特願2008−76913(P2008−76913)
【出願日】平成20年3月25日(2008.3.25)
【出願人】(000005821)パナソニック株式会社 (73,050)