以下、本発明を適用した実施の形態について図面を参照して説明する。ただし、本発明は以下の実施の形態に限定されるものではない。また、本発明は、以下の内容を自由に組み合わせたものを含むものとする。
以下、本発明を適用した信号処理プロセッサについて説明する。
図1は、本実施の形態の信号処理プロセッサの構成を示す機能ブロック図である。なお、本実施形態の信号処理プロセッサは、図1の構成要素(各部)を全て含む必要はなく、その一部を省略した構成としてもよい。
本実施の形態の信号処理プロセッサは半導体装置102として実現することが出来る。
本実施の形態の信号処理プロセッサ100は、プログラムメモリ(メモリ200の一部に設けられていても良い)から命令コードを読み出し、読み出した命令コードをフェッチレジスタ182に格納するフェッチ部180を含む。命令コードには、例えば、命令実行部130がメモリ200に記憶されるデータに対する演算を行うためのデータ演算命令や、命令実行部130がアドレス・レジスタ122に記憶されるアドレスデータに対する演算を行うためのアドレス演算命令がある。データ演算命令は、メモリオペランドを含む命令とすることができる。
本実施の形態の信号処理プロセッサ100は、フェッチレジスタ182にフェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号112、114を生成するデコード部110を含む。
メモリ200は、演算対象のデータ又は演算結果のデータが格納される主記憶装置として機能するもので、半導体装置102の外部に設けられ、バスによって半導体装置102と接続される外部メモリとして構成してもよい。
本実施の形態の信号処理プロセッサ100は、ホストプロセッサ240との通信インターフェイスとして機能するホストインターフェイス部190を含んでいてもよい。ホストプロセッサ240は、ホストインターフェイス部190を介して情報保持部120に保持される情報を書き換えることができる。
本実施の形態の信号処理プロセッサ100は、レジスタ等で構成される情報保持部120を含む。
情報保持部120は、メモリ200にアクセスするためのアドレスデータを記憶するアドレス・レジスタ122と含む。
情報保持部120は、前記アドレスデータに基づくメモリアクセスの対象となるデータの属性情報を、アドレス・レジスタに関連付けて記憶する属性情報保持部124を含む。
属性情報は、例えばメモリ200から読み出されるデータ又はメモリ200に書き出されるデータのデータサイズを識別する情報を含んでいてもよい。
情報保持部120は、ビットリバース処理においてビット入れ替え対象となる所与の範囲のビット数を特定するための入れ替え対象ビット数情報を含むビットリバース制御情報が記憶されたビットリバース制御情報保持部126を含む。
前記アドレスレジスタを複数含んでもよい。また、属性情報保持部は複数のアドレスレジスタのそれぞれに関連づけられた属性情報を記憶してもよい。
また、ビットリバース制御情報保持部126は、少なくとも2つ以上のアドレスレジスタについて共通のビットリバース制御情報を記憶してもよい。
また、ビットリバース制御情報保持部126は、少なくとも2つ以上のアドレスレジスタの各アドレスレジスタについて前記ビットリバース処理の有無を特定するためのビットリバース有無制御情報を記憶してもよい。
本実施の形態の信号処理プロセッサ100は、デコード信号112、114及び図示しないレジスタに記憶されている情報に基づきフェッチ部にフェッチされた命令コードの実行を行う命令実行部130とを含む。
命令実行部130は、デコード信号114に基づき、読み出し処理部140によって読み出されたデータ142を受け取り、所与の演算処理を行う演算処理部150を含む。
また、命令実行部130は、デコード信号114と、前記アドレス・レジスタ122に記憶されるアドレスデータに基づいてアクセスアドレスを生成し、メモリ200にアクセスするメモリアクセス部170を含む。
メモリアクセス部170は、メモリ200に接続されたバスに対してデータの読み出し処理を行う読み出し処理部140を含むことができる。また、メモリアクセス部170は、演算処理部150の演算結果152を受け取り、メモリ200に接続されたバスに対して出力する書き出し処理部160を含むことができる。
読み出し処理部140は、情報保持部120から、アドレス・レジスタ122に記憶されるアドレスデータ1221と、属性情報保持部124に記憶される属性情報1241とを受け取り、読み出しアドレス201(アクセスアドレスの一例)を生成する。読み出し処理部140は、読み出しアドレス201をバスに対して出力し、メモリ200からバスを介してデータ202を受け取ることにより読み出し処理を行う。ことのとき、属性情報保持部124に記憶される属性情報1241を、読み出すデータ202のサイズ情報としてバスに出力することにより、メモリ200から読み出すデータのサイズを制御することも可能である。
読み出し処理部140は、所与のデータ演算命令に基づいてアドレス・レジスタ122からアドレスデータを読み出す際に、所与のアドレス変位値をアドレスデータに加算するアドレス更新処理を行うようにしてもよい。ここで所与のアドレス変位値を属性情報保持部124に記憶される属性情報1241に基づいて制御してもよい。
読み出し処理部140は、アドレス更新処理後のアドレスを出力信号1223として情報保持部120へ出力し、アドレス・レジスタ122に記憶されるアドレスデータを更新してもよい。
また、読み出し処理部140は、前記アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部141を含む。ビットリバース処理部141は、アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部141を含む。
書き出し処理部160は、アドレス・レジスタ122に記憶されるアドレスデータ1222と、属性情報保持部124に記憶される属性情報1242を受け取り、書き出しアドレス205(アクセスアドレスの一例)を生成してバスに対して出力し、メモリ200にバスを介してデータ204を出力することにより書き出し処理(メモリに書き込むための出力処理)を行う。ことのとき、属性情報保持部124に記憶される属性情報1242を、書き出すデータ204のサイズ情報としてバスに出力することにより、メモリ200から書き出すデータのサイズを制御することも可能である。
また、書き出し処理部160は、所与のデータ演算命令に基づいて、書き出し処理部160がアドレス・レジスタ122からデータを読み出す際に、所与のアドレス変位値をアドレスデータに加算するアドレス更新処理を行うようにしてもよい。ここで所与のアドレス変位値を属性情報保持部124に記憶される属性情報1242に基づいて制御することも可能である。書き出し処理部160は、アドレス更新処理後のアドレスを出力信号1224として情報保持部120へ出力し、アドレス・レジスタ122に記憶されるアドレスデータを更新してもよい。
また、書き出し処理部160は、前記アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部161を含む。
ビットリバース処理部141、161は、アクセスアドレスに対応した前記アドレス・レジスタに関連付けて記憶されている前記属性情報(属性情報保持部124に記憶されている属性情報)に基づいて、ビット入れ替え対象となる前記所与の範囲を制御することが出来る。
また、ビットリバース処理部141、161は、属性情報に基づき、アクセスアドレスのビット入れ替え対象とならない下位ビット範囲またはビット入れ替え対象となる所与の範囲の最も下位のビットの位置を制御するようにしてもよい。
また、ビットリバース処理部141、161は、前記ビットリバース制御情報(ビットリバース制御情報保持部126に記憶されているビットリバース制御情報)及び前記属性情報(属性情報保持部124に記憶されている属性情報)に基づき、ビット入れ替え対象となる所与の範囲を制御してもよい。
前記デコード部110は、命令コードに基づいて前記アドレス・レジスタの1つを選択した場合には、ビットリバース処理部141、161は、記属性情報として選択された前記アドレス・レジスタに関連付けて記憶されている前記属性情報を用いて、選択されたアドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース処理を行うようにしてもよい。
また、前記ビットリバース処理部141、161は、少なくとも2つ以上のアドレスレジスタについては、前記共通のビットリバース制御情報を用いて前記ビットリバース処理を行うようにしてもよい。
また、ビットリバース処理部141、161は、ビットリバース制御情報保持部126に記憶されているビットリバース有無制御情報に基づいて、各アドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース制処理の有無を制御してもよい。
前記ビットリバース処理部141、161は、所与の範囲のビットの下位と上位を入れ替えるビットリバース処理を行う構成でもよいし、所与の範囲のビットをローテーションして入れ替えるビットリバース処理を行う構成でもよい。
図11、図12は、本実施の形態のビットリバース処理の一例であるリバースモードにおけるビットリバースについて説明するための図である。
リバースモードでは、例えば指定した範囲のアドレスビットの下位と上位を入れ替える一般的なビットリバースアドレッシングに対応したビットリバース処理が行われる。例えば図11に示すようにアクセスアドレスの所定の範囲810においてアドレスビットの下位と上位を入れ替える処理が行われる。ここにおいて、ビット入れ替え対象となる所定の範囲810のビット数は入れ替え対象ビット数情報BRCxの値によって決定される。入れ替え対象ビット数情報BRCxは、ビットリバース制御情報保持部(例えば図3のビットリバース制御情報レジスタ(BRC0、BRC1)341)に保持された値を用いることが出来る。
図12は、ビット数情報BRCxの値によってアドレスビットがどのように交換されるのかの一例を示している。すなわち入力ビット0〜15が出力ビットのどの位置に来るかを示している。
BRCxの値が’0’の場合は822に示すように入力ビットがそのまま出力ビットとなっている(ビットリバース変換がおこなわない)。
BRCxの値が’1’より大きい場合には、それぞれBRCxの値+1のビット数の範囲がビット入れ替え対象となり、この範囲でアドレスビットの下位と上位を入れ替える処理が行われる。
例えばBRCxの値が’7’の場合は824に示すように8ビットの範囲のアドレスビットの下位と上位を入れ替える処理が行われる。すなわち入力ビット1が出力ビット8に、入力ビット2が出力ビット7に、入力ビット3が出力ビット6に、入力ビット4が出力ビット5に、入力ビット6が出力ビット3に、入力ビット7が出力ビット2に、入力ビット8が出力ビット1に入れ替えられている。
図13、図14は、本実施の形態のビットリバース処理の一例であるローテーションモードにおけるビットリバースについて説明するための図である。
ローテーションモードでは、例えば指定した範囲の指定した範囲のアドレスビットについてローテーション制御(指定した範囲の上位の所定ビットを下位の所定ビットにし、指定した範囲の上位の所定ビット以外のビットをずらしてセットするローテーションアドレッシングに対応したビットリバース処理が行われる。例えば図13に示すようにアクセスアドレスの所定の範囲810において、指定した範囲の上位の所定ビットを下位の所定ビットにし、指定した範囲の上位の所定ビット以外のビットをずらしてセットする処理が行われる。830は、上位から下位にローテーションされるビット数に応じて設定される範囲である。
ローテーションモードではビット入れ替え対象となる範囲810を設定するための制御値(ここではCBCx)と上位から下位にローテーションされる範囲830を設定するための制御値(ここではBRCx)を用いる。従ってそれぞれの範囲を設定するための制御値CBCx、BRCxを入れ替え対象ビット数情報としてビットリバース制御情報保持部に保持するようにしてもよい。
図14は、ビット入れ替え対象となる範囲810が6ビットの場合(CBCx=6の場合)、制御値BRCxの値によってアドレスビットがどのように交換されるのかの一例を示している。すなわち入力ビット0〜15が出力ビットのどの位置に来るかを示している。
BRCxの値が’16’の場合は842に示すように入力ビットがそのまま出力ビットとなっている(ビットリバース変換がおこなわない)。
BRCxの値が’17’より大きい場合には、842〜850に示すようにそれぞれBRCxから一義的に導かれるビット数(ここではBRCx−16)の範囲のビットが上位から下位にローテーションされる処理が行われる。
図15はアドレスビットのビット入れ替え対象となる範囲810と属性情報の関係の一例を示す図である。
図15において、「R」はビット入れ替え対象となるアドレスビット、「O」はビット入れ替え対象とならないアドレスビットである。
属性情報に基づき、アクセスアドレスのビット入れ替え対象とならない下位ビット範囲またはビット入れ替え対象となる所与の範囲の最も下位のビットの位置を制御することが出来る。
例えば属性情報が’0’又は’4’である場合(データ型が「char型(符号付1バイト)」又は「unsighned char型(符号なし1バイト)」に対応する属性情報を受け取った場合)には、最下位1ビットの範囲(0ビット)はビット入れ替え対象とならないように制御してもよい。
データ型が示すデータ長が1バイトである場合には、後述するように高速フーリエ変換(FFT)のバタフライ演算等で1バイトの実数部と1バイトの虚数部からなる2バイトのデータをひとかたまりとして扱う場合がある。図16(A)に示すようにバイト単位でアドレスが振られている構成において2バイト単位で連続して配置されたデータエリアD2(0)、D2(1)、D2(2)、・・・がある場合、データエリアD2(0)、D2(1)、D2(2)、・・のアドレス860の最下位ビット862は変化しない。従って、データ長が1バイトのデータを取り扱う演算において、ビットリバース変換を行う場合に最下位ビット762は変化しないように構成することで2バイト単位で連続して配置されたデータエリアに効率よくアクセスすることが出来る。
また、属性情報が’1’又は’5’である場合(データ型が「short型(符号付2バイト)」又は「unsighned short型(符号なし2バイト)」に対応する属性情報24を受け取った場合)には、最下位から2ビットの範囲(0ビット、1ビット)はビット入れ替え対象とならないように制御してもよい。
データ型が示すデータ長が2バイトである場合には、後述するように高速フーリエ変換(FFT)のバタフライ演算等で2バイトの実数部と2バイトの虚数部からなる4バイトのデータをひとかたまりとして扱う場合がある。図16(B)に示すようにバイト単位でアドレスが振られている構成において4バイト単位で連続して配置されたデータエリアD4(0)、D4(1)、D4(2)、・・・がある場合、データエリアD4(0)、D4(1)、D4(2)、・・のアドレス870の最下位から2ビットの範囲872は変化しない。従って、データ長が2バイトのデータを取り扱う演算において、ビットリバース変換を行う場合に最下位から2ビットの範囲872は変化しないように構成することで4バイト単位で連続して配置されたデータエリアに効率よくアクセスすることが出来る。
また、属性情報が’2’又は’6’である場合(データ型が「long型(符号付4バイト)」又は「unsighned long型(符号なし4バイト)」に対応する属性情報24を受け取った場合)には、最下位から3ビットの範囲(0ビット、1ビット、2ビット)はビット入れ替え対象とならないように制御してもよい。
データ型が示すデータ長が4バイトである場合には、後述するように高速フーリエ変換(FFT)のバタフライ演算等で4バイトの実数部と4バイトの虚数部からなる8バイトのデータをひとかたまりとして扱う場合がある。図16(C)に示すようにバイト単位でアドレスが振られている構成において8バイト単位で連続して配置されたデータエリアD8(0)、D8(1)、D8(2)、・・・がある場合、データエリアD8(0)、D8(1)、D8(2)、・・のアドレス880の最下位から3ビットの範囲882は変化しない。従って、データ長が4バイトのデータを取り扱う演算において、ビットリバース変換を行う場合に最下位から3ビットの範囲882は変化しないように構成することで8バイト単位で連続して配置されたデータエリアに効率よくアクセスすることが出来る。
例えばプログラマがリバースモードにおいてアドレスビットのビット入れ替え対象となる範囲を8ビットに設定したい場合にはビットリバース制御情報(BRCx)を’7’に設定する。ビットリバース制御情報(BRCx)が’7’に対応するビットリバース制御情報を受け取ったビットリバース処理部141、161は、データ型が「char型(符号付1バイト)」又は「unsighned char型(符号なし1バイト)」に対応する属性情報を受け取った場合には、最下位1ビットの範囲(0ビット)はビット入れ替え対象とならないようにして、1ビットから8ビットまでをビット入れ替え対象としてもよい。また、データ型が「short型(符号付2バイト)」又は「unsighned short型(符号なし2バイト)」に対応する属性情報を受け取った場合には、最下位から2ビットの範囲(0ビット、1ビット)はビット入れ替え対象とならないようにして、2ビットから9ビットまでをビット入れ替え対象としてもよい。また、データ型が「long型(符号付4バイト)」又は「unsighned long型(符号なし4バイト)」に対応する属性情報を受け取った場合には、最下位から3ビットの範囲(0ビット、1ビット、2ビット)はビット入れ替え対象とならないようにして、3ビットから10ビットまでをビット入れ替え対象としてもよい。
このように属性情報に基づいてビット入れ替え対象を制御することにより、プログラマがデータ型の違いを注意深く意識しなくとも、ビットリバースアドレッシングを行うことができる。
図17〜図19は高速フーリエ変換(FFT)のバタフライ演算等で行われるアドレッシングについて説明するための図である。
図17は高速フーリエ変換(FFT)のバタフライ演算におけるシグナルフロー(N=8の場合)であり、図18はライン番号890を2進数で表した表である。ライン番号0〜7を2進数で表してビットを逆順に並べ替えるとこの表をえることが出来る。この規則性により何番のラインにどのxを入力すればよいかわかる例えば1番のラインにはx(4)を入力すればよい。
図19は高速フーリエ変換(FFT)において4バイトの実数部と4バイトの虚数部からなる8バイトのデータをひとかたまりとして扱い、8バイト単位で連続して配置されたデータエリアにデータX(0)〜X(7)が記憶される様子をしめす。8バイト単位なので、910に示すようにアドレスの下位3ビット(0ビット、1ビット、2ビット)は固定される。また、取り扱うデータが8個なので、920に示すように3ビットから5ビットの3ビットが入れ替え対象(ビットリバース)となる。
ここでX(0)のアドレスをA0=’00000000’として8バイトでインクリメントすると、次のデータX(1)のアドレス’00001000’となる。これについて3ビットから5ビットをビットリバースすると’00100000’となり、X(4)のデータのアドレスを示す。
次にX(1)のアドレス’00001000’を再び8バイトでインクリメントするとX(2)のアドレス’00010000’となる。これについて3ビットから5ビットをビットリバースすると’00100000’となり、X(2)のデータのアドレスを示す。
このようにアドレスの更新とビットリバース変換を行うことにより高速フーリエ変換(FFT)のシグナルフローに従ったアクセスアドレスを生成することが出来る。
図2は、本実施の形態の信号処理プロセッサ100のハードウエア構成の一例を示す回路ブロック図である。
本実施の形態の信号処理プロセッサ100は、フェッチ部180とデコード部110として機能する命令フェッチ/デコード回路10、情報保持部120として機能するレジスタ・ファイル20、演算処理部150として機能する演算回路30、アクセス処理部170として機能するXバスリード回路40及びYバス・リード回路50及びZバス・ライト回路60、ホストインターフェイス部190として機能するホストインターフェイス回路70を含む。
レジスタ・ファイル20は、命令実行に使用するアドレス、データ、制御情報の少なくとも1つを記憶するレジスタとして機能する。
図3は本実施の形態の信号処理プロセッサ100のレジスタ・ファイル20のレジスタ構成の一例について説明する図である。
本実施の形態の信号処理プロセッサ100は、アドレス・レジスタ群310、データ・レジスタ群320、演算制御レジスタ群330、特殊アドレス制御レジスタ群340を含んで構成されている。
アドレス・レジスタ群310は複数のアドレス・レジスタ(A0〜YR)311を含んでもよい。アドレス・レジスタ(A0〜YR)311は、その一部(上位の所定ビット又は下位の所定ビット)に属性情報(long型、short型、char型等)を保持するための所定ビット(ここでは3ビット)の属性情報保持フィールド350(属性情報保持部124に対応)を設けても良い。この場合実際のアドレスデータはフィールド350を除いたアドレス情報保持フィールド352に記憶される。
なおアドレス・レジスタ群310はデータ兼用レジスタ(DR)312を含んでもよい。そしてデータ兼用レジスタ(DR)312の一部(上位の所定ビット又は下位の所定ビット)に属性情報(long型、short型、char型等)を保持するための所定ビット(ここでは3ビット)の属性情報保持フィールド350を設けてもよい。
属性情報保持フィールド350に保持される属性情報と、対応するデータ型との関係は、例えば図10に示す表に示すように設定することができる。
なお、上記例では、属性情報保持部124として属性情報保持フィールド350がアドレス・レジスタの一部のフィールドに設けられている例であるが、属性情報保持部124は、アドレス・レジスタのフィールドの一部に設けた構成に限られず、アドレス・レジスタと一義的に対応する場所(レジスタ・ファイルのいずれか)に設けられていればよい。
データ・レジスタ320は、メモリ200から読み出されたデータや演算回路30の出力値が格納されるレジスタである。演算制御レジスタ330は、演算回路30で行われる種々の演算処理において必要に応じて使用されるレジスタである。
特殊アドレス制御レジスタ群340は、ビットリバース制御情報保持部126として機能する。特殊アドレス制御レジスタ群340は、ビットリバース処理において入れ替え対象となるビット数を特定するため入れ替え対象ビット数情報を含むビットリバース制御情報が記憶されたビットリバース制御情報レジスタ(BRC0、BRC1)341を含んで構成してもよい。ここでビットリバース制御情報レジスタ(BRC0、BRC1)341は、少なくとも2つ以上のアドレスレジスタについて共通のビットリバース制御情報を記憶するようにしてもよい。
また、特殊アドレス制御レジスタ群340は、少なくとも2つ以上のアドレスレジスタの各アドレスレジスタについてビットリバース制御の有無を特定するためのビットリバース有無制御情報レジスタ(CBREF0、CBREF1)342を含んで構成してもよい。
ビットリバース制御情報レジスタ(BRC0、BRC1)341は、アドレス・レジスタと1対1に対応するように構成することも可能である。
また、1つのビットリバース制御情報レジスタと所定の複数のアドレス・レジスタとが対応するように構成することも可能である。例えば、ビットリバース制御情報レジスタBRC0をアドレス・レジスタA0〜A2に、ビットリバース制御情報レジスタBRC1をアドレス・レジスタXR〜ZRに対応するように構成することも可能である。
また、ビットリバース有無制御情報レジスタ(CBREF0、CBREF1)は、例えば図20に示すようにフラグ0(CBREF0)にアドレス・レジスタA0〜A2のON・OFF(ビットリバース有無)の組合せによって0〜7のいずれかの値をセットし、フラグ1(CBREF1)にアドレス・レジスタXR〜ZRのON・OFF(ビットリバース有無)の組合せによって0〜7のいずれかの値をセットするようにしても良い。ここでは「○」をON、「×」をOFFとしている。
このように構成することにより、ビットリバース処理部141,161は、少なくとも2つ以上のアドレスレジスタについて、前記共通のビットリバース制御情報を用いてビットリバース処理を行うことが出来る。
命令フェッチ/デコード回路10は、命令アドレス11を出力してメモリ200に記憶されている命令コード12を受け取り、受け取った命令コードをデコードして、後述する各種信号を出力する。例えば、命令フェッチ/デコード回路10は、データ演算命令に基づいて、使用するアドレス・レジスタを選択するアドレス・レジスタ選択信号13を出力する。
また、命令フェッチ/デコード回路10は、所与の命令に基づいて設定信号14を出力し、属性情報(例えば属性情報保持フィールド350の値)を設定したり変更したりする属性情報設定処理を行うように構成することも可能である。属性情報設定処理を行う命令は、汎用的なレジスタ書き込み命令である場合でもよいし、レジスタ・ファイルの属性情報保持部に属性情報を設定するための専用命令である場合でもよい。
さらに、命令フェッチ/デコード回路10は、所与の命令に基づいて設定信号14を出力し、ビットリバース制御情報(例えばビットリバース制御情報レジスタ(BRC0、BRC1)341の値)を設定したり変更したりするビットリバース制御情報設定処理を行うように構成することも可能である。ビットリバース制御情報設定処理を行う命令は、汎用的なレジスタ書き込み命令である場合でもよいし、レジスタ・ファイルのビットリバース制御情報保持部にビットリバース制御情報を設定するための専用命令である場合でもよい。
加えて、命令フェッチ/デコード回路10は、所与の命令に基づいて設定信号14を出力し、ビットリバース有無制御情報(例えばビットリバース有無制御情報レジスタ(CBREF0、CBREF1)の値)を設定したり変更したりするビットリバース有無制御情報設定処理を行うように構成することも可能である。ビットリバース有無制御情報設定処理を行う命令は、汎用的なレジスタ書き込み命令である場合でもよいし、レジスタ・ファイルの制御情報保持部にビットリバース有無制御情報を設定するための専用命令である場合でもよい。
演算回路30は、Xバス・リード回路40の出力であるXデータ45、Yバス・リード回路の出力であるYデータ55を受け取り、命令フェッチ/デコード回路10から出力されるデコード信号31に基づき演算処理を行い、演算結果をZデータ35として出力する。
Xバスリード回路40は、命令フェッチ/デコード回路10からXリード・リクエスト27やXアドレス変位値16を、レジスタ・ファイル20からXリード・アドレス21やX属性情報24やX制御情報(X範囲制御情報32やXビットリバース制御情報35)を受け取り、Xアドレス41、Xデータサイズ42、Xリードリクエスト43をXバスに出力し、XバスからXリードデータ44を受け取り、演算回路30にXデータ45を、レジスタ・ファイル20にX更新アドレス46をそれぞれ出力する。
Xバスリード回路40は、図示しないビットリバース処理回路(図4〜図5の410)を含み、必要に応じてビットリバース処理回路においてビットリバース変換処理等を行いXアドレス41(アクセスアドレス)を生成することが出来る。
Yバスリード回路50は、命令フェッチ/デコード回路10からYリード・リクエスト28やYアドレス変位値17を、レジスタ・ファイル20からYリード・アドレス22やY属性情報25やY制御情報(Y範囲制御情報33やYビットリバース制御情報36)を受け取り、Yアドレス51、Yデータサイズ52、Yリードリクエスト53をYバスに出力し、YバスからYリードデータ54を受け取り、演算回路30にYデータ55を、レジスタ・ファイル20にY更新アドレス56をそれぞれ出力する。
Yバスリード回路50は、図示しないビットリバース処理回路を含み、必要に応じてビットリバース処理回路においてビットリバース変換処理等を行いYアドレス51(アクセスアドレス)を生成することが出来る。
Zバスライト回路60は、演算回路30から受け取った演算結果であるZデータ35を、命令フェッチ/デコード回路10からZリード・リクエスト29やZアドレス変位値18を、レジスタ・ファイル20からZライト・アドレス23やZ属性情報26やZ制御情報(Z範囲制御情報34やZビットリバース制御情報37)を受け取り、Zアドレス61、Zデータサイズ62、Zライトリクエスト63、Zライトデータ64をZバスに、Z更新アドレス66をレジスタ・ファイル20にそれぞれ出力する。
Zバスライト回路60は、図示しないビットリバース処理回路(図7〜図9の610)を含み、必要に応じてビットリバース処理回路においてビットリバース変換処理等を行いZアドレス61(アクセスアドレス)を生成することが出来る。
ホストインターフェイス回路70は、ホストライトデータ71、ホストアドレス72を受け取りレジスタ・ファイル20のアドレスデータや属性情報やその他の情報を設定する。また、レジスタ・ファイル20からデータを読み出しホストリードデータ73としてホストプロセッサ240に出力する。
ホストインターフェイス回路70は、例えばホストプロセッサ240から、アドレス・レジスタの属性情報を受け取り、属性情報保持部(例えばレジスタ・ファイル20のアドレス情報保持フィールド352)に設定するようにしてもよい。
また、ホストインターフェイス回路70は、例えばホストプロセッサ240から、ビットリバース制御情報を受け取り、ビットリバース制御情報保持部(例えばレジスタ・ファイル20のビットリバース制御情報レジスタ(BRC0、BRC1)341)に設定するようにしてもよい。さらに、ホストインターフェイス回路70は、例えばホストプロセッサ240から、制御有無情報を受け取り、ビットリバース制御情報保持部(例えばレジスタ・ファイル20のビットリバース有無制御情報レジスタ(CBREF0、CBREF1)342)に設定するようにしてもよい。
例えば本実施の形態の信号処理プロセッサ100は、メモリオペランドとして、入力となるXソース、Yソース、出力となるディスティネーションZのアドレス・レジスタを選択する情報有するデータ演算命令を命令セットに有している場合、命令フェッチ/デコード回路10は、上記データ演算命令をデコードすると、Xソース、Yソース、出力となるディスティネーションZに対応するアドレス・レジスタ(例えば図3のアドレス・レジスタ群310のA0〜A2)を選択するアドレス・レジスタ選択信号13をレジスタ・ファイルに対しデコード信号として出力する。
また、上記演算命令でXソース、Yソース、出力となるディスティネーションZに対しXアドレス変位値、Yアドレス変位値、Zアドレス変位値が設定されている場合には、Xアドレス変位値16をXバス・リード回路40に、Yアドレス変位値17をYバス・リード回路50に、Zアドレス変位値18をZバス・ライト60にそれぞれ出力する。
図4は本実施の形態のXバス・リード回路40の一例を示す回路ブロック図である。なお、Yバス・リード回路50の構成も、Xバス・リード回路40と同様である。
図4に示す例では、アドレス更新処理部400が、命令フェッチ/デコード回路10でデコードされたデータ演算命令とレジスタ・ファイル20に記憶される属性情報に基づいてアドレス変位値を制御している。また、アドレス更新処理部400は、命令フェッチ/デコード回路10でデコードされたデータ演算命令とレジスタ・ファイル20に記憶される属性情報に基づいてアドレス更新処理の有無も含めて制御してもよい。
なお図4に示す例では、アドレス更新処理部400は、命令フェッチ・デコード回路10でデコードされたデータ演算命令とレジスタ・ファイル20に記憶される属性情報に基づいて、Xバス・リード回路40が、データ演算命令に基づいてメモリ200にアクセスするごとにアドレス更新処理を行っている。
図4に示すXバス・リード回路40は、パイプライン・レジスタ401〜404、データ拡張処理回路405、シフタ406、加算器407、マルチプレクサ408、ビットリバース処理回路410を含んで構成されている。
パイプライン・レジスタ401〜404は、後述するパイプライン処理における1クロックサイクル(パイプライン処理の1ステージに対応)に相当する時間だけ信号を遅延させる。図4においては、説明を簡潔にするために各信号線上に1段ずつのパイプライン・レジスタを示しているが、必要に応じて増減することができる。
Xバス・リード回路40は、レジスタ・ファイル20からXリード・アドレス21を受け取り、ビットリバース処理回路410、パイプライン・レジスタ401を介して、Xアドレス41としてバスに出力する。
ビットリバース処理回路410は、レジスタ・ファイル20からX属性情報24とXビットリバース制御情報35を受けとり、これらに基づきアクセスアドレス(ここではXリード・アドレス21)の所与の範囲のビットを所定の規則に従ってビット入れ替え対象となる前記所与の範囲を制御してビットリバース処理を行う。
図21はビットリバース処理回路の構成の一例を示す図である。ビットリバース処理回路410は、ビットリバース変換回路412とセレクタ414を含んで構成してもよい。ビットリバース変換回路412は、レジスタファイルの属性情報保持フィールド350に保持される属性情報に基づき生成されるX属性情報24とレジスタファイルのビットリバース制御情報レジスタ(BRC0、BRC1)に基づき生成されるXビットリバース制御情報35(ここでは変換対象ビット数の情報)を受け取り、X属性情報24とXビットリバース制御情報35(ここでは変換対象ビット数の情報)基づき図11〜図15で説明したようにアクセスアドレス416のビット入れ替え対象となる範囲を制御してビットリバース変換を行い変換結果413を出力する。
セレクタ414はアクセスアドレス416とビットリバース変換後のアクセスアドレスをうけとり、レジスタファイルのビットリバース有無制御情報レジスタ(CBREF0、CBREF1)に基づき生成されるXビットリバース制御情報35(ここでは各レジスタのビットリバース変換有無の情報)を受け取り、Xビットリバース制御情報35がビットリバース変換有りを示している場合にはビットリバース変換後のアクセスアドレス413をXアドレス41として出力する。Xビットリバース制御情報35がビットリバース変換無しを示している場合にはアクセスアドレス416をXアドレス41として出力する。
なおアクセスアドレスは、図4の場合レジスタファイルから受け取ったXリード・アドレス21である。また、後述する図5の場合アドレス更新処理部400のマルチプレクサ408の出力する更新アドレスである。また、後述する図6の場合セレクタ409の出力するアドレスである。
後述するZバス・ライト回路のビットリバース処理回路610の構成も同様である。
また、Xバス・リード回路40は、レジスタ・ファイル20からX属性情報24を受け取り、パイプライン・レジスタ402を介して、Xデータ・サイズ42としてバスに出力する。さらに、Xバス・リード回路40は、命令フェッチ/デコード回路10からXリード・リクエスト27を受け取り、パイプライン・レジスタ403を介して、Xリード・リクエスト43としてバスに出力する。
Xバス・リード回路40は、Xリード・データ44に対してデータ拡張処理を行うデータ拡張処理回路405を含んでいてもよい。データ拡張処理回路405は、X属性情報24に基づいて特定されるデータ拡張処理規則にしたがって、Xリード・データ44に対してデータ拡張処理を行う。
属性情報と、対応するデータ拡張規則との関係は、例えば図10に示す表に示すように設定することができる。図10に示す例は、Xリード・データ44を4バイトに拡張する例である。
図10において、「バイト符号拡張」とは、「char型(符号付1バイト)」のデータを「long型(符号付4バイト)」に符号拡張するデータ拡張規則である。「2バイト符号拡張」とは、「short型(符号付2バイト)」のデータを「long型(符号付4バイト)」に符号拡張するデータ拡張規則である。「バイトゼロ拡張」とは、「unsighned char型(符号なし1バイト)」のデータを「unsighned long型(符号なし4バイト)」にゼロ拡張するデータ拡張規則である。「2バイトゼロ拡張」とは、「unsighned short型(符号なし2バイト)」のデータを「unsighned long型(符号なし4バイト)」にゼロ拡張するデータ拡張規則である。「拡張なし」とは、リード・データをそのまま出力するデータ拡張規則である。
このように、データ拡張処理回路405を設けることにより、演算回路30は予め設定したデータ型のデータのみを受け取ることができる。
Xバス・リード回路40は、シフタ406、加算器407、マルチプレクサ408を含んで構成されるアドレス更新処理部400を含む。アドレス更新処理部400は、Xバス・リード回路がアドレス・レジスタ311からXリード・アドレス21を読み出す際に、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部400は、所与の変位値を属性情報に基づいて制御することも可能である。
また、アドレス更新処理部400は、マルチプレクサ408により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行うようにしてもよい。また、アドレス更新処理部400は、マルチプレクサ408により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
図4に示す例では、シフタ406は、命令フェッチ/デコード回路10からXアドレス変位値16を、レジスタ・ファイル20からX属性情報24を受け取り、X属性情報24に基づいて決定されるアドレス変位のシフトをXアドレス変位値16対して行い、Xアドレス変位値を補正する。加算器407は、Xリード・アドレス21に補正後のXアドレス変位値を加算し、X加算アドレス47として出力する。
属性情報と、対応するアドレス変位のシフトとの関係は、例えば図10に示す表に示すように設定することができる。
図10において、「<<1」とは、アドレス変位値に対して左に1ビットだけシフトすることを示す。「<<2」とは、アドレス変位値に対して左に2ビットだけシフトすることを示す。「なし」とは、アドレス変位値をそのまま出力することを示す。
つまり、図10に示す例では、アドレス更新処理部400は属性情報に基づきデータの語長(サイズ)に比例したアドレス変位値となるように制御している。
マルチプレクサ408は、レジスタ・ファイル20からX属性情報24とX制御情報(ここではX範囲制御情報32)を受け取りアドレス範囲を設定する。そしてマルチプレクサ408は、レジスタ・ファイル20からXリード・アドレス21を、加算器407からX加算アドレス47を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにX更新アドレス46を生成し、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータを更新するようにしてもよい。
図4に示す例では、アドレス更新処理部400は、Xバス・リード回路40が、データ演算命令に基づいてメモリ200にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成例であったが、メモリ200にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とすることも可能である。
図5は本実施の形態のXバス・リード回路40の他の一例を示す回路ブロック図である。なお、Yバス・リード回路50の構成も、Xバス・リード回路40と同様である。また、図4に示すXバス・リード回路40と同一の構成には同一の符号を付し、その詳細な説明を省略する。
図5に示すXバス・リード回路40は、レジスタ・ファイル20からX属性情報24を受け取り、パイプライン・レジスタ402を介して、Xデータ・サイズ42としてバスに出力する。さらに、Xバス・リード回路40は、命令フェッチ/デコード回路10からXリード・リクエスト27を受け取り、パイプライン・レジスタ403を介して、Xリード・リクエスト43としてバスに出力する。
Xバス・リード回路40は、シフタ406、加算器407、マルチプレクサ408を含んで構成されるアドレス更新処理部400を含む。アドレス更新処理部400は、Xバス・リード回路がアドレス・レジスタ311からXリード・アドレス21を読み出す際に、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部400は、所与の変位値を属性情報に基づいて制御することも可能である。
また、アドレス更新処理部400は、マルチプレクサ408により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行う。さらに、アドレス更新処理部400は、マルチプレクサ408により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
図5に示す例では、シフタ406は、命令フェッチ/デコード回路10からXアドレス変位値16を、レジスタ・ファイル20からX属性情報24を受け取り、X属性情報24に基づいて決定されるアドレス変位のシフトをXアドレス変位値16対して行い、Xアドレス変位値を補正する。加算器407は、Xリード・アドレス21に補正後のXアドレス変位値を加算してX加算アドレス47として出力する。
マルチプレクサ408は、レジスタ・ファイル20からX属性情報24とX制御情報32を受け取りアドレス範囲を設定する。そしてマルチプレクサ408は、レジスタ・ファイル20からXリード・アドレス21を、加算器407からX加算アドレス47を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにX更新アドレス46を生成し、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータを更新する。
Xバス・リード回路40は、アドレス更新後のアドレスデータであるX更新アドレス46を、ビットリバース処理回路410、パイプライン・レジスタ401を介して、Xアドレス41としてバスに出力する。
なお、Xバス・リード回路40は、図6に示す例のようにセレクタ409を含み、命令フェッチ/デコード回路10から受け取るアドレッシング・モード選択信号48に基づき、メモリ200にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成と、メモリ200にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とを切替え可能な構成とすることもできる。
図7は本実施の形態のZバス・ライト回路60の一例を示す回路ブロック図である。
図7に示す例では、アドレス更新処理部600が、命令フェッチ/デコード回路10でデコードされたデータ演算命令とレジスタ・ファイル20に記憶される属性情報に基づいてアドレス変位値を制御している。また、アドレス更新処理部600は、命令フェッチ/デコード回路10でデコードされたデータ演算命令とレジスタ・ファイル20に記憶される属性情報に基づいてアドレス更新処理の有無も含めて制御してもよい。
なお図7に示す例では、アドレス更新処理部600は、命令フェッチ・デコード回路10でデコードされたデータ演算命令とレジスタ・ファイル20に記憶される属性情報に基づいて、Zバス・ライト回路60が、データ演算命令に基づいてメモリ200にアクセスするごとにアドレス更新処理を行っている。
また、アドレス更新処理部600は、属性情報として、命令フェッチ/デコード回路10からのアドレス・レジスタ選択信号13により選択されたアドレス・レジスタに関連付けられた属性情報を用い、アドレス・レジスタ選択信号13により選択されたアドレス・レジスタに対してアドレス更新範囲制御処理を行っている。また、アドレス更新処理部600は、命令フェッチ/デコード回路10でデコードされたデータ演算命令とレジスタ・ファイル20に記憶される属性情報に基づいてアドレス更新範囲制御処理の有無も含めて制御してもよい。
図7に示すZバス・ライト回路60は、パイプライン・レジスタ601〜603、シフタ605、加算器606、マルチプレクサ607、ビットリバース処理回路610を含んで構成されている。
パイプライン・レジスタ601〜603は、後述するパイプライン処理における1クロックサイクル(パイプライン処理の1ステージに対応)に相当する時間だけ信号を遅延させる。図5においては、説明を簡潔にするために各信号線上に1段ずつのパイプライン・レジスタを示しているが、必要に応じて増減することができる。
Zバス・ライト回路60は、レジスタ・ファイル20からZライト・アドレス23を受け取り、ビットリバース処理回路610、パイプライン・レジスタ601を介して、Zアドレス61としてバスに出力する。
ビットリバース処理回路410は、レジスタ・ファイル20からX属性情報24とXビットリバース制御情報35を受けとり、これらに基づきアクセスアドレス(ここではXリード・アドレス21)の所与の範囲のビットを所定の規則に従ってビット入れ替え対象となる前記所与の範囲を制御してビットリバース処理を行う。
また、Zバス・ライト回路60は、レジスタ・ファイル20からZ属性情報27を受け取り、パイプライン・レジスタ602を介して、Zデータ・サイズ62としてバスに出力する。さらに、Zバス・ライト回路60は、命令フェッチ/デコード回路10からZライト・リクエスト29を受け取り、パイプライン・レジスタ603を介して、Zライト・リクエスト63としてバスに出力する。
また、Zバス・ライト回路60は、演算回路30からZデータ35を受け取り、Zライト・データ64としてバスに出力する。
Zバス・ライト回路60は、シフタ605、加算器606、マルチプレクサ607を含むアドレス更新処理部600を含む。アドレス更新処理部600は、Zバス・ライト回路60がアドレス・レジスタ311からZライト・アドレス23を読み出す際に、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部600は、所与の変位値を属性情報に基づいて制御することも可能である。
また、アドレス更新処理部600は、マルチプレクサ607により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行う。さらに、アドレス更新処理部600は、マルチプレクサ607により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
図7に示す例では、シフタ605は、命令フェッチ/デコード回路10からZアドレス変位値18を、レジスタ・ファイル20からZ属性情報26を受け取り、Z属性情報26に基づいて決定されるアドレス変位のシフトをZアドレス変位値18対して行い、Z加算アドレス67として出力する。
属性情報と、対応するアドレス変位のシフトとの関係は、例えば図10に示す表に示すように設定することができる。このようにすることでアドレス更新処理部600は属性情報に基づきデータの語長(サイズ)に比例したアドレス変位値となるように制御している。
マルチプレクサ607は、レジスタ・ファイル20からZ属性情報26とZ制御情報34を受け取りアドレス範囲を設定する。そしてマルチプレクサ607は、レジスタ・ファイル20からZライト・アドレス23を、加算器606からZ加算アドレス67を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにZ更新アドレス66を生成し、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータを更新する。
図7に示す例では、アドレス更新処理部600は、Zバス・ライト回路60が、データ演算命令に基づいてメモリ200にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成例であったが、メモリ200にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とすることも可能である。
図8は本実施の形態のZバス・ライト回路60の他の一例を示す回路ブロック図である。また、図7に示すZバス・ライト回路60と同一の構成には同一の符号を付し、その詳細な説明を省略する。
図8に示すZバス・ライト回路60は、レジスタ・ファイル20からZ属性情報26を受け取り、パイプライン・レジスタ602を介して、Zデータ・サイズ62としてバスに出力する。さらに、Zバス・ライト回路60は、レジスタ・ファイル20からZライト・リクエスト29を受け取り、パイプライン・レジスタ603を介して、Zライト・リクエスト63としてバスに出力する。
また、Zバス・ライト回路60は、演算回路30からZデータ35を受け取り、Zライト・データ64としてバスに出力する。
図8に示すZバス・ライト回路60は、シフタ605と加算器606を含むアドレス更新処理部600を含む。アドレス更新処理部600は、Zバス・ライト回路60がアドレス・レジスタ311からZライト・アドレス23を読み出し、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部600は、所与の変位値を属性情報に基づいて制御することも可能である。
また、アドレス更新処理部600は、マルチプレクサ607により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行う。さらに、アドレス更新処理部600は、マルチプレクサ607により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
図8に示す例では、シフタ605は、命令フェッチ/デコード回路10からZアドレス変位値18を、レジスタ・ファイル20からZ属性情報26を受け取り、Z属性情報26に基づいて決定されるアドレス変位のシフトをXアドレス変位値18対して行い、Z加算アドレス67として出力する。
マルチプレクサ607は、レジスタ・ファイル20からZ属性情報26とZ制御情報34を受け取りアドレス範囲を設定する。そしてマルチプレクサ607は、レジスタ・ファイル20からZライト・アドレス23を、加算器606からZ加算アドレス67を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにZ更新アドレス66を生成し、レジスタ・ファイル20内のアドレス・レジスタ311に保持されるアドレスデータを更新する。
Zバス・ライト回路60は、アドレス更新後のアドレスデータであるZ更新アドレス66をビットリバース処理回路610、パイプライン・レジスタ601を介して、Zアドレス61としてバスに出力する。
なお、Zバス・ライト回路60は、図9に示す例のようにセレクタ608を含み、命令フェッチ/デコード回路10から受け取るアドレッシング・モード選択信号68に基づき、メモリ200にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成と、メモリ200にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とを切替え可能な構成とすることもできる。
図22は、本実施の形態の信号処理プロセッサ100のパイプラインステージの一例について説明するための図である。本実施の形態の信号処理プロセッサ100は、700に示すように8段のパイプライン構成となっている。
IF(701)はフェッチ部180(図2の命令フェッチ/デコード回路10)が命令フェッチを行うステージであり、DE(702)はデコード部110(図2の命令フェッチ/デコード回路10)が命令デコード、アドレス計算を行うステージであり、MA(703)は読み出し処理部140(図2のXバス・リード回路40、Yバス・リード回路50)が、Xバス、Yバスのメモリアクセスを行うステージであり、DR(704)は読み出し処理部140(図2のXバス・リード回路40、Yバス・リード回路50)が、Xバス、Yバスのデータ・リードを行うステージであり、E1(705)は演算処理部150(図2の演算回路30)が乗算を行うステージであり、E2(706)は演算処理部150(図2の演算回路30)が加減算やアキュミュレーションを行うステージであり、E3(707)は図示しない飽和処理部がシフトや飽和処理を行うステージであり、WB(708)は、書き出し処理部160(図2のZバス・ライト回路60)がZバス・ライトを行うステージである。
なお、本発明は本実施の形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
本発明は、実施の形態で説明した構成と実質的に同一の構成(例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成)を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
1 命令フェッチ/デコード回路、20 レジスタ・ファイル、30 演算回路、40 Xバス・リード回路、50 Yバス・リード回路、60 Zバス・リード回路、70 ホストインターフェイス回路、100 信号処理プロセッサ、102 半導体装置、110 デコード部、120 情報保持部、122 アドレス・レジスタ、124 属性情報保持部、126 制御情報保持部、140 読み出し処理部、141 ビットリバース処理部、150 演算処理部、160 書き出し処理部、161 ビットリバース更新処理部、170 メモリアクセス部、180 フェッチ部、182 フェッチレジスタ、190 ホストインターフェイス部、200 メモリ、240 ホストプロセッサ、310 アドレス・レジスタ群、311 アドレス・レジスタ、320 データ・レジスタ群、330 演算制御レジスタ群、340 特殊アドレス制御レジスタ群、341 ビットリバース制御レジスタ、342 フラグレジスタ、350 属性情報保持フィールド、352 アドレス情報保持フィールド、400 アドレス更新処理部、401〜404 パイプライン・レジスタ、405 データ拡張回路、406 シフタ、407 加算器、408 マルチプレクサ、409 セレクタ、410 ビットリバース処理回路、600 アドレス更新処理部、601〜603 パイプライン・レジスタ、605 シフタ、606 加算器、607 マルチプレクサ、608セレクタ、610 ビットリバース処理回路