(57)【要約】【課題】複数のデータ語長に対応したビットリバース処理を効率良く行える信号処理プロセッサ及び半導体装置を提供すること。【解決手段】本信号処理プロセッサ１００は、アドレス・レジスタ１２２と、アドレスデータに基づくメモリアクセスの対象となるデータの属性情報をアドレス・レジスタに関連付けて記憶する属性情報保持部１２４と前記デコード信号と、前記アドレス・レジスタに記憶されるアドレスデータに基づいてアクセスアドレスを生成し、メモリにアクセスするメモリアクセス部１７０を含み、メモリアクセス部１７０は、アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部１４１、１６１を含み、前記アクセスアドレスに対応した前記アドレス・レジスタに関連付けて記憶されている前記属性情報に基づいて、ビット入れ替え対象となる前記所与の範囲を制御する。【選択図】図１
2010044515.tif 000002
【特許請求の範囲】
【請求項１】
フェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号を生成するデコード部と、
前記デコード信号に基づきにフェッチされた命令コードの実行を行う命令実行部と、を含む信号処理プロセッサにおいて、
アドレスデータを記憶するアドレス・レジスタと、
前記アドレスデータに基づくメモリアクセスの対象となるデータの属性情報を、アドレス・レジスタに関連付けて記憶する属性情報保持部を含み、
前記命令実行部は、
前記デコード信号と、前記アドレス・レジスタに記憶されるアドレスデータに基づいてアクセスアドレスを生成し、メモリにアクセスするメモリアクセス部を含み、
前記メモリアクセス部は、
前記アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部を含み、
前記ビットリバース処理部は、
前記アクセスアドレスに対応した前記アドレス・レジスタに関連付けて記憶されている前記属性情報に基づいて、ビット入れ替え対象となる前記所与の範囲を制御すること特徴とする信号処理プロセッサ。
【請求項２】
請求項１において、
前記ビットリバース処理部は、
前記属性情報に基づき、アクセスアドレスのビット入れ替え対象とならない下位ビット範囲またはビット入れ替え対象となる所与の範囲の最も下位のビットの位置を制御することを特徴とする信号処理プロセッサ。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記ビットリバース処理においてビット入れ替え対象となる所与の範囲のビット数を特定するための入れ替え対象ビット数情報を含むビットリバース制御情報が記憶されたビットリバース制御情報保持部を含み、
前記ビットリバース処理部は、
前記ビットリバース制御情報及び前記属性情報に基づき、ビット入れ替え対象となる前記所与の範囲を制御することを特徴とする信号処理プロセッサ。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記アドレスレジスタを複数含み、
前記属性情報保持部は、
前記アドレスレジスタのそれぞれに関連づけられた属性情報を記憶し、
前記デコード部は、
前記命令コードに基づいて前記アドレス・レジスタの１つを選択し、
前記ビットリバース処理部は、
前記属性情報として選択された前記アドレス・レジスタに関連付けて記憶されている前記属性情報を用いて、選択されたアドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース処理を行うことを特徴とする信号処理プロセッサ。
【請求項５】
請求項２に従属する請求項４において、
前記ビットリバース制御情報保持部は、
少なくとも２つ以上のアドレスレジスタについて共通のビットリバース制御情報を記憶し、
前記ビットリバース処理部は、
前記少なくとも２つ以上のアドレスレジスタについては、前記共通のビットリバース制御情報を用いて前記ビットリバース処理を行うことを特徴とする信号処理プロセッサ。
【請求項６】
請求項５において、
前記ビットリバース制御情報保持部は、
前記少なくとも２つ以上のアドレスレジスタの各アドレスレジスタについて前記ビットリバース処理の有無を特定するためのビットリバース有無制御情報を記憶し、
前記ビットリバース処理部は、
前記ビットリバース有無制御情報に基づいて、各アドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース制処理の有無を制御することを特徴とする信号処理プロセッサ。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記属性情報保持部は、
関連付けられた前記アドレス・レジスタの一部に設けられていることを特徴とする特徴とする信号処理プロセッサ。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記属性情報は、
アドレスレジスタに記憶されたアドレスデータに対応して前記メモリに記憶されるデータのデータサイズ情報を含むことを特徴とする信号処理プロセッサ。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記ビットリバース処理は、
前記所与の範囲のビットの下位と上位を入れ替えるビットリバース処理を含むことを特徴とする信号処理プロセッサ。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記ビットリバース処理は、
前記所与の範囲のビットをローテーションして入れ替えるビットリバース処理を含むことを特徴とする信号処理プロセッサ。
【請求項１１】
請求項１乃至１０のいずれかに記載の信号処理プロセッサを含む半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信号処理プロセッサ及び半導体装置等に関する。
【背景技術】
【０００２】
特定の演算処理を高速に行うことを目的とし、デジタル信号処理に特化したデジタル信号処理プロセッサ（ＤＳＰ；digital signal processor）が開発されている。
【０００３】
このようなデジタル信号処理プロセッサは、高速フーリエ変換等のバタフライ演算等を行うものも多い。
【特許文献１】特開２０００−２６７８５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
デジタル信号処理プロセッサでは、バタフライ演算用のビットリバースアドレッシング回路を設けることで、高速フーリエ変換等のバタフライ演算等を効率化を図っている。
【０００５】
ここで複数のデータ語長を扱う演算装置では、データの型に応じてビットリバースのビット入れ替え対象となるビット範囲が異なってくるので各語長に対応したビットリバースアドレッシングを行うことが必要になる。
【０００６】
扱うデータ語長の種類が増えると、データ語長に応じてビット入れ替え対象となるビット範囲の指定をプログラマ自身が行うのは大変であった。
【０００７】
また、数値演算を目的としたデジタル信号処理プロセッサでは、数値演算をいかに短い時間で実行し終えるかが重要であるため、複数のデータ語長を扱う演算装置では、各語長に対応したビットリバースアドレッシングを効率よく短時間で行うことが好ましい。
【０００８】
本発明の目的は、上記課題に鑑みてなされたものである。本発明のいくつかの態様によれば、複数のデータ語長に対応したビットリバース処理を効率良く行える信号処理プロセッサ及び半導体装置を提供することができる。
【課題を解決するための手段】
【０００９】
（１）本発明は、
フェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号を生成するデコード部と、
前記デコード信号に基づきにフェッチされた命令コードの実行を行う命令実行部と、を含む信号処理プロセッサにおいて、
アドレスデータを記憶するアドレス・レジスタと、
前記アドレスデータに基づくメモリアクセスの対象となるデータの属性情報を、アドレス・レジスタに関連付けて記憶する属性情報保持部を含み、
前記命令実行部は、
前記デコード信号と、前記アドレス・レジスタに記憶されるアドレスデータに基づいてアクセスアドレスを生成し、メモリにアクセスするメモリアクセス部を含み、
前記メモリアクセス部は、
前記アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部を含み、
前記ビットリバース処理部は、
前記アクセスアドレスに対応した前記アドレス・レジスタに関連付けて記憶されている前記属性情報に基づいて、ビット入れ替え対象となる前記所与の範囲を制御すること特徴とする。
【００１０】
前記命令実行部は、前記デコード信号に基づき、前記メモリアクセス部により読み出されたデータに対して所与の演算処理を行う演算処理部を含むように構成してもよい。
【００１１】
メモリアクセス部は、前記デコード信号と、前記アドレス・レジスタに記憶されるアドレスデータに基づいて読み出しアドレス（アクセスアドレス）を生成し、読み出しアドレスに基づいてメモリからデータを読み出す読み出し部として機能するようにしてもよい。
【００１２】
また、メモリアクセス部は、前記デコード信号と、前記アドレス・レジスタに記憶されるアドレスデータに基づいて、書き出しアドレス（アクセスアドレス）を生成し、書き出しアドレスに基づき前記演算処理部による前記演算処理後のデータをメモリに書き出すようにしてもよい。
【００１３】
前記アクセスアドレスに対応した前記アドレス・レジスタとはアクセスアドレスを生成する際に参照したアドレスレジスタでもよい。
【００１４】
ビットリバース処理は、例えば指定した範囲のアドレスビットの下位と上位を入れ替える一般的なビットリバースアドレッシングに対応したビットリバース処理でもよいし、例えば指定した範囲のアドレスビットについてローテーション制御（指定した範囲の上位の所定ビットを下位の所定ビットにし、指定した範囲の上位の所定ビット以外のビットをずらしてセットするローテーションアドレッシングに対応したビットリバース処理でもよい。
【００１５】
例えば入れ替え対象となる所与の範囲のビット数がレジスタ等に設定されている場合には、当該ビット数及び属性情報に基づきで入れ替え対象となる所与の範囲のビット位置を特定してもよい。
【００１６】
例えば入れ替え対象となるビット数が固定されている場合には属性情報のみで、入れ替え対象となる所与の範囲のビット位置を特定してもよい。
（２）この信号処理プロセッサは、
前記ビットリバース処理部は、
前記属性情報に基づき、アクセスアドレスのビット入れ替え対象とならない下位ビット範囲またはビット入れ替え対象となる所与の範囲の最も下位のビットの位置を制御してもよい。
（３）この信号処理プロセッサは、
前記ビットリバース処理においてビット入れ替え対象となる所与の範囲のビット数を特定するための入れ替え対象ビット数情報を含むビットリバース制御情報が記憶されたビットリバース制御情報保持部を含み、
前記ビットリバース処理部は、
前記ビットリバース制御情報及び前記属性情報に基づき、ビット入れ替え対象となる前記所与の範囲を制御するしてもよい。
【００１７】
ビット入れ替え対象となる所与の範囲は、所与の範囲のビット数と所与の範囲の最も下位のビット位置によって特定することが出来るので、ビットリバース制御情報に基づいて所与の範囲のビット数を制御してもよい。
（４）この信号処理プロセッサは、
前記アドレスレジスタを複数含み、
前記属性情報保持部は、
前記アドレスレジスタのそれぞれに関連づけられた属性情報を記憶し、
前記デコード部は、
前記命令コードに基づいて前記アドレス・レジスタの１つを選択し、
前記ビットリバース処理部は、
前記属性情報として選択された前記アドレス・レジスタに関連付けて記憶されている前記属性情報を用いて、選択されたアドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース処理を行ってもよい。
（５）この信号処理プロセッサは、
前記ビットリバース制御情報保持部は、
少なくとも２つ以上のアドレスレジスタについて共通のビットリバース制御情報を記憶し、
前記ビットリバース処理部は、
前記少なくとも２つ以上のアドレスレジスタについては、前記共通のビットリバース制御情報を用いて前記ビットリバース処理を行ってもよい。
（６）この信号処理プロセッサは、
前記ビットリバース制御情報保持部は、
前記少なくとも２つ以上のアドレスレジスタの各アドレスレジスタについて前記ビットリバース処理の有無を特定するためのビットリバース有無制御情報を記憶し、
前記ビットリバース処理部は、
前記ビットリバース有無制御情報に基づいて、各アドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース制処理の有無を制御してもよい。
（７）この信号処理プロセッサは、
前記属性情報保持部は、
関連付けられた前記アドレス・レジスタの一部に設けられていてもよい。
（８）この信号処理プロセッサは、
前記属性情報は、
アドレスレジスタに記憶されたアドレスデータに対応して前記メモリに記憶されるデータのデータサイズ情報を含んでもよい。
（９）この信号処理プロセッサは、
前記ビットリバース処理は、
前記所与の範囲のビットの下位と上位を入れ替えるビットリバース処理を含んでもよい。
（１０）この信号処理プロセッサは、
前記ビットリバース処理は、
前記所与の範囲のビットをローテーションして入れ替えるビットリバース処理を含むんでもよい。
（１１）本発明は、
上記のいずれかに記載の信号処理プロセッサを含む半導体装置である。
【発明を実施するための最良の形態】
【００１８】
以下、本発明を適用した実施の形態について図面を参照して説明する。ただし、本発明は以下の実施の形態に限定されるものではない。また、本発明は、以下の内容を自由に組み合わせたものを含むものとする。
【００１９】
以下、本発明を適用した信号処理プロセッサについて説明する。
【００２０】
図１は、本実施の形態の信号処理プロセッサの構成を示す機能ブロック図である。なお、本実施形態の信号処理プロセッサは、図１の構成要素（各部）を全て含む必要はなく、その一部を省略した構成としてもよい。
【００２１】
本実施の形態の信号処理プロセッサは半導体装置１０２として実現することが出来る。
【００２２】
本実施の形態の信号処理プロセッサ１００は、プログラムメモリ（メモリ２００の一部に設けられていても良い）から命令コードを読み出し、読み出した命令コードをフェッチレジスタ１８２に格納するフェッチ部１８０を含む。命令コードには、例えば、命令実行部１３０がメモリ２００に記憶されるデータに対する演算を行うためのデータ演算命令や、命令実行部１３０がアドレス・レジスタ１２２に記憶されるアドレスデータに対する演算を行うためのアドレス演算命令がある。データ演算命令は、メモリオペランドを含む命令とすることができる。
【００２３】
本実施の形態の信号処理プロセッサ１００は、フェッチレジスタ１８２にフェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号１１２、１１４を生成するデコード部１１０を含む。
【００２４】
メモリ２００は、演算対象のデータ又は演算結果のデータが格納される主記憶装置として機能するもので、半導体装置１０２の外部に設けられ、バスによって半導体装置１０２と接続される外部メモリとして構成してもよい。
【００２５】
本実施の形態の信号処理プロセッサ１００は、ホストプロセッサ２４０との通信インターフェイスとして機能するホストインターフェイス部１９０を含んでいてもよい。ホストプロセッサ２４０は、ホストインターフェイス部１９０を介して情報保持部１２０に保持される情報を書き換えることができる。
【００２６】
本実施の形態の信号処理プロセッサ１００は、レジスタ等で構成される情報保持部１２０を含む。
【００２７】
情報保持部１２０は、メモリ２００にアクセスするためのアドレスデータを記憶するアドレス・レジスタ１２２と含む。
【００２８】
情報保持部１２０は、前記アドレスデータに基づくメモリアクセスの対象となるデータの属性情報を、アドレス・レジスタに関連付けて記憶する属性情報保持部１２４を含む。
【００２９】
属性情報は、例えばメモリ２００から読み出されるデータ又はメモリ２００に書き出されるデータのデータサイズを識別する情報を含んでいてもよい。
【００３０】
情報保持部１２０は、ビットリバース処理においてビット入れ替え対象となる所与の範囲のビット数を特定するための入れ替え対象ビット数情報を含むビットリバース制御情報が記憶されたビットリバース制御情報保持部１２６を含む。
【００３１】
前記アドレスレジスタを複数含んでもよい。また、属性情報保持部は複数のアドレスレジスタのそれぞれに関連づけられた属性情報を記憶してもよい。
【００３２】
また、ビットリバース制御情報保持部１２６は、少なくとも２つ以上のアドレスレジスタについて共通のビットリバース制御情報を記憶してもよい。
【００３３】
また、ビットリバース制御情報保持部１２６は、少なくとも２つ以上のアドレスレジスタの各アドレスレジスタについて前記ビットリバース処理の有無を特定するためのビットリバース有無制御情報を記憶してもよい。
【００３４】
本実施の形態の信号処理プロセッサ１００は、デコード信号１１２、１１４及び図示しないレジスタに記憶されている情報に基づきフェッチ部にフェッチされた命令コードの実行を行う命令実行部１３０とを含む。
【００３５】
命令実行部１３０は、デコード信号１１４に基づき、読み出し処理部１４０によって読み出されたデータ１４２を受け取り、所与の演算処理を行う演算処理部１５０を含む。
【００３６】
また、命令実行部１３０は、デコード信号１１４と、前記アドレス・レジスタ１２２に記憶されるアドレスデータに基づいてアクセスアドレスを生成し、メモリ２００にアクセスするメモリアクセス部１７０を含む。
【００３７】
メモリアクセス部１７０は、メモリ２００に接続されたバスに対してデータの読み出し処理を行う読み出し処理部１４０を含むことができる。また、メモリアクセス部１７０は、演算処理部１５０の演算結果１５２を受け取り、メモリ２００に接続されたバスに対して出力する書き出し処理部１６０を含むことができる。
【００３８】
読み出し処理部１４０は、情報保持部１２０から、アドレス・レジスタ１２２に記憶されるアドレスデータ１２２１と、属性情報保持部１２４に記憶される属性情報１２４１とを受け取り、読み出しアドレス２０１（アクセスアドレスの一例）を生成する。読み出し処理部１４０は、読み出しアドレス２０１をバスに対して出力し、メモリ２００からバスを介してデータ２０２を受け取ることにより読み出し処理を行う。ことのとき、属性情報保持部１２４に記憶される属性情報１２４１を、読み出すデータ２０２のサイズ情報としてバスに出力することにより、メモリ２００から読み出すデータのサイズを制御することも可能である。
【００３９】
読み出し処理部１４０は、所与のデータ演算命令に基づいてアドレス・レジスタ１２２からアドレスデータを読み出す際に、所与のアドレス変位値をアドレスデータに加算するアドレス更新処理を行うようにしてもよい。ここで所与のアドレス変位値を属性情報保持部１２４に記憶される属性情報１２４１に基づいて制御してもよい。
【００４０】
読み出し処理部１４０は、アドレス更新処理後のアドレスを出力信号１２２３として情報保持部１２０へ出力し、アドレス・レジスタ１２２に記憶されるアドレスデータを更新してもよい。
【００４１】
また、読み出し処理部１４０は、前記アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部１４１を含む。ビットリバース処理部１４１は、アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部１４１を含む。
【００４２】
書き出し処理部１６０は、アドレス・レジスタ１２２に記憶されるアドレスデータ１２２２と、属性情報保持部１２４に記憶される属性情報１２４２を受け取り、書き出しアドレス２０５（アクセスアドレスの一例）を生成してバスに対して出力し、メモリ２００にバスを介してデータ２０４を出力することにより書き出し処理（メモリに書き込むための出力処理）を行う。ことのとき、属性情報保持部１２４に記憶される属性情報１２４２を、書き出すデータ２０４のサイズ情報としてバスに出力することにより、メモリ２００から書き出すデータのサイズを制御することも可能である。
【００４３】
また、書き出し処理部１６０は、所与のデータ演算命令に基づいて、書き出し処理部１６０がアドレス・レジスタ１２２からデータを読み出す際に、所与のアドレス変位値をアドレスデータに加算するアドレス更新処理を行うようにしてもよい。ここで所与のアドレス変位値を属性情報保持部１２４に記憶される属性情報１２４２に基づいて制御することも可能である。書き出し処理部１６０は、アドレス更新処理後のアドレスを出力信号１２２４として情報保持部１２０へ出力し、アドレス・レジスタ１２２に記憶されるアドレスデータを更新してもよい。
【００４４】
また、書き出し処理部１６０は、前記アクセスアドレスの所与の範囲のビットを所定の規則に従って入れ替えるビットリバース処理を行うビットリバース処理部１６１を含む。
【００４５】
ビットリバース処理部１４１、１６１は、アクセスアドレスに対応した前記アドレス・レジスタに関連付けて記憶されている前記属性情報（属性情報保持部１２４に記憶されている属性情報）に基づいて、ビット入れ替え対象となる前記所与の範囲を制御することが出来る。
【００４６】
また、ビットリバース処理部１４１、１６１は、属性情報に基づき、アクセスアドレスのビット入れ替え対象とならない下位ビット範囲またはビット入れ替え対象となる所与の範囲の最も下位のビットの位置を制御するようにしてもよい。
【００４７】
また、ビットリバース処理部１４１、１６１は、前記ビットリバース制御情報（ビットリバース制御情報保持部１２６に記憶されているビットリバース制御情報）及び前記属性情報（属性情報保持部１２４に記憶されている属性情報）に基づき、ビット入れ替え対象となる所与の範囲を制御してもよい。
【００４８】
前記デコード部１１０は、命令コードに基づいて前記アドレス・レジスタの１つを選択した場合には、ビットリバース処理部１４１、１６１は、記属性情報として選択された前記アドレス・レジスタに関連付けて記憶されている前記属性情報を用いて、選択されたアドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース処理を行うようにしてもよい。
【００４９】
また、前記ビットリバース処理部１４１、１６１は、少なくとも２つ以上のアドレスレジスタについては、前記共通のビットリバース制御情報を用いて前記ビットリバース処理を行うようにしてもよい。
【００５０】
また、ビットリバース処理部１４１、１６１は、ビットリバース制御情報保持部１２６に記憶されているビットリバース有無制御情報に基づいて、各アドレス・レジスタに対応して生成されるアクセスアドレスのビットリバース制処理の有無を制御してもよい。
【００５１】
前記ビットリバース処理部１４１、１６１は、所与の範囲のビットの下位と上位を入れ替えるビットリバース処理を行う構成でもよいし、所与の範囲のビットをローテーションして入れ替えるビットリバース処理を行う構成でもよい。
【００５２】
図１１、図１２は、本実施の形態のビットリバース処理の一例であるリバースモードにおけるビットリバースについて説明するための図である。
【００５３】
リバースモードでは、例えば指定した範囲のアドレスビットの下位と上位を入れ替える一般的なビットリバースアドレッシングに対応したビットリバース処理が行われる。例えば図１１に示すようにアクセスアドレスの所定の範囲８１０においてアドレスビットの下位と上位を入れ替える処理が行われる。ここにおいて、ビット入れ替え対象となる所定の範囲８１０のビット数は入れ替え対象ビット数情報ＢＲＣｘの値によって決定される。入れ替え対象ビット数情報ＢＲＣｘは、ビットリバース制御情報保持部（例えば図３のビットリバース制御情報レジスタ（ＢＲＣ０、ＢＲＣ１）３４１）に保持された値を用いることが出来る。
【００５４】
図１２は、ビット数情報ＢＲＣｘの値によってアドレスビットがどのように交換されるのかの一例を示している。すなわち入力ビット０〜１５が出力ビットのどの位置に来るかを示している。
【００５５】
ＢＲＣｘの値が’０’の場合は８２２に示すように入力ビットがそのまま出力ビットとなっている（ビットリバース変換がおこなわない）。
【００５６】
ＢＲＣｘの値が’１’より大きい場合には、それぞれＢＲＣｘの値＋１のビット数の範囲がビット入れ替え対象となり、この範囲でアドレスビットの下位と上位を入れ替える処理が行われる。
【００５７】
例えばＢＲＣｘの値が’７’の場合は８２４に示すように８ビットの範囲のアドレスビットの下位と上位を入れ替える処理が行われる。すなわち入力ビット１が出力ビット８に、入力ビット２が出力ビット７に、入力ビット３が出力ビット６に、入力ビット４が出力ビット５に、入力ビット６が出力ビット３に、入力ビット７が出力ビット２に、入力ビット８が出力ビット１に入れ替えられている。
【００５８】
図１３、図１４は、本実施の形態のビットリバース処理の一例であるローテーションモードにおけるビットリバースについて説明するための図である。
【００５９】
ローテーションモードでは、例えば指定した範囲の指定した範囲のアドレスビットについてローテーション制御（指定した範囲の上位の所定ビットを下位の所定ビットにし、指定した範囲の上位の所定ビット以外のビットをずらしてセットするローテーションアドレッシングに対応したビットリバース処理が行われる。例えば図１３に示すようにアクセスアドレスの所定の範囲８１０において、指定した範囲の上位の所定ビットを下位の所定ビットにし、指定した範囲の上位の所定ビット以外のビットをずらしてセットする処理が行われる。８３０は、上位から下位にローテーションされるビット数に応じて設定される範囲である。
【００６０】
ローテーションモードではビット入れ替え対象となる範囲８１０を設定するための制御値（ここではＣＢＣｘ）と上位から下位にローテーションされる範囲８３０を設定するための制御値（ここではＢＲＣｘ）を用いる。従ってそれぞれの範囲を設定するための制御値ＣＢＣｘ、ＢＲＣｘを入れ替え対象ビット数情報としてビットリバース制御情報保持部に保持するようにしてもよい。
【００６１】
図１４は、ビット入れ替え対象となる範囲８１０が６ビットの場合（ＣＢＣｘ＝６の場合）、制御値ＢＲＣｘの値によってアドレスビットがどのように交換されるのかの一例を示している。すなわち入力ビット０〜１５が出力ビットのどの位置に来るかを示している。
【００６２】
ＢＲＣｘの値が’１６’の場合は８４２に示すように入力ビットがそのまま出力ビットとなっている（ビットリバース変換がおこなわない）。
【００６３】
ＢＲＣｘの値が’１７’より大きい場合には、８４２〜８５０に示すようにそれぞれＢＲＣｘから一義的に導かれるビット数（ここではＢＲＣｘ−１６）の範囲のビットが上位から下位にローテーションされる処理が行われる。
【００６４】
図１５はアドレスビットのビット入れ替え対象となる範囲８１０と属性情報の関係の一例を示す図である。
【００６５】
図１５において、「Ｒ」はビット入れ替え対象となるアドレスビット、「Ｏ」はビット入れ替え対象とならないアドレスビットである。
【００６６】
属性情報に基づき、アクセスアドレスのビット入れ替え対象とならない下位ビット範囲またはビット入れ替え対象となる所与の範囲の最も下位のビットの位置を制御することが出来る。
【００６７】
例えば属性情報が’０’又は’４’である場合（データ型が「ｃｈａｒ型（符号付１バイト）」又は「ｕｎｓｉｇｈｎｅｄ  ｃｈａｒ型（符号なし１バイト）」に対応する属性情報を受け取った場合）には、最下位１ビットの範囲（０ビット）はビット入れ替え対象とならないように制御してもよい。
【００６８】
データ型が示すデータ長が１バイトである場合には、後述するように高速フーリエ変換（ＦＦT）のバタフライ演算等で１バイトの実数部と1バイトの虚数部からなる２バイトのデータをひとかたまりとして扱う場合がある。図１６（Ａ）に示すようにバイト単位でアドレスが振られている構成において２バイト単位で連続して配置されたデータエリアＤ２（０）、Ｄ２（１）、Ｄ２（２）、・・・がある場合、データエリアＤ２（０）、Ｄ２（１）、Ｄ２（２）、・・のアドレス８６０の最下位ビット８６２は変化しない。従って、データ長が１バイトのデータを取り扱う演算において、ビットリバース変換を行う場合に最下位ビット７６２は変化しないように構成することで２バイト単位で連続して配置されたデータエリアに効率よくアクセスすることが出来る。
【００６９】
また、属性情報が’１’又は’５’である場合（データ型が「ｓｈｏｒｔ型（符号付２バイト）」又は「ｕｎｓｉｇｈｎｅｄ  ｓｈｏｒｔ型（符号なし２バイト）」に対応する属性情報２４を受け取った場合）には、最下位から２ビットの範囲（０ビット、１ビット）はビット入れ替え対象とならないように制御してもよい。
【００７０】
データ型が示すデータ長が２バイトである場合には、後述するように高速フーリエ変換（ＦＦT）のバタフライ演算等で２バイトの実数部と２バイトの虚数部からなる４バイトのデータをひとかたまりとして扱う場合がある。図１６（Ｂ）に示すようにバイト単位でアドレスが振られている構成において４バイト単位で連続して配置されたデータエリアＤ４（０）、Ｄ４（１）、Ｄ４（２）、・・・がある場合、データエリアＤ４（０）、Ｄ４（１）、Ｄ４（２）、・・のアドレス８７０の最下位から２ビットの範囲８７２は変化しない。従って、データ長が２バイトのデータを取り扱う演算において、ビットリバース変換を行う場合に最下位から２ビットの範囲８７２は変化しないように構成することで４バイト単位で連続して配置されたデータエリアに効率よくアクセスすることが出来る。
【００７１】
また、属性情報が’２’又は’６’である場合（データ型が「ｌｏｎｇ型（符号付４バイト）」又は「ｕｎｓｉｇｈｎｅｄ  ｌｏｎｇ型（符号なし４バイト）」に対応する属性情報２４を受け取った場合）には、最下位から３ビットの範囲（０ビット、１ビット、２ビット）はビット入れ替え対象とならないように制御してもよい。
【００７２】
データ型が示すデータ長が４バイトである場合には、後述するように高速フーリエ変換（ＦＦT）のバタフライ演算等で４バイトの実数部と４バイトの虚数部からなる８バイトのデータをひとかたまりとして扱う場合がある。図１６（Ｃ）に示すようにバイト単位でアドレスが振られている構成において８バイト単位で連続して配置されたデータエリアＤ８（０）、Ｄ８（１）、Ｄ８（２）、・・・がある場合、データエリアＤ８（０）、Ｄ８（１）、Ｄ８（２）、・・のアドレス８８０の最下位から３ビットの範囲８８２は変化しない。従って、データ長が４バイトのデータを取り扱う演算において、ビットリバース変換を行う場合に最下位から３ビットの範囲８８２は変化しないように構成することで８バイト単位で連続して配置されたデータエリアに効率よくアクセスすることが出来る。
【００７３】
例えばプログラマがリバースモードにおいてアドレスビットのビット入れ替え対象となる範囲を８ビットに設定したい場合にはビットリバース制御情報（ＢＲＣｘ）を’７’に設定する。ビットリバース制御情報（ＢＲＣｘ）が’７’に対応するビットリバース制御情報を受け取ったビットリバース処理部１４１、１６１は、データ型が「ｃｈａｒ型（符号付１バイト）」又は「ｕｎｓｉｇｈｎｅｄ  ｃｈａｒ型（符号なし１バイト）」に対応する属性情報を受け取った場合には、最下位１ビットの範囲（０ビット）はビット入れ替え対象とならないようにして、１ビットから８ビットまでをビット入れ替え対象としてもよい。また、データ型が「ｓｈｏｒｔ型（符号付２バイト）」又は「ｕｎｓｉｇｈｎｅｄ  ｓｈｏｒｔ型（符号なし２バイト）」に対応する属性情報を受け取った場合には、最下位から２ビットの範囲（０ビット、１ビット）はビット入れ替え対象とならないようにして、２ビットから９ビットまでをビット入れ替え対象としてもよい。また、データ型が「ｌｏｎｇ型（符号付４バイト）」又は「ｕｎｓｉｇｈｎｅｄ  ｌｏｎｇ型（符号なし４バイト）」に対応する属性情報を受け取った場合には、最下位から３ビットの範囲（０ビット、１ビット、２ビット）はビット入れ替え対象とならないようにして、３ビットから１０ビットまでをビット入れ替え対象としてもよい。
【００７４】
このように属性情報に基づいてビット入れ替え対象を制御することにより、プログラマがデータ型の違いを注意深く意識しなくとも、ビットリバースアドレッシングを行うことができる。
【００７５】
図１７〜図１９は高速フーリエ変換（ＦＦT）のバタフライ演算等で行われるアドレッシングについて説明するための図である。
【００７６】
図１７は高速フーリエ変換（ＦＦT）のバタフライ演算におけるシグナルフロー（Ｎ＝８の場合）であり、図１８はライン番号８９０を２進数で表した表である。ライン番号０〜７を２進数で表してビットを逆順に並べ替えるとこの表をえることが出来る。この規則性により何番のラインにどのｘを入力すればよいかわかる例えば１番のラインにはｘ（４）を入力すればよい。
【００７７】
図１９は高速フーリエ変換（ＦＦT）において４バイトの実数部と４バイトの虚数部からなる８バイトのデータをひとかたまりとして扱い、８バイト単位で連続して配置されたデータエリアにデータＸ（０）〜Ｘ（７）が記憶される様子をしめす。８バイト単位なので、９１０に示すようにアドレスの下位３ビット（０ビット、１ビット、２ビット）は固定される。また、取り扱うデータが８個なので、９２０に示すように３ビットから５ビットの３ビットが入れ替え対象（ビットリバース）となる。
【００７８】
ここでＸ（０）のアドレスをＡ０＝’００００００００’として８バイトでインクリメントすると、次のデータＸ（１）のアドレス’００００１０００’となる。これについて３ビットから５ビットをビットリバースすると’００１０００００’となり、Ｘ（４）のデータのアドレスを示す。
【００７９】
次にＸ（１）のアドレス’００００１０００’を再び８バイトでインクリメントするとＸ（２）のアドレス’０００１００００’となる。これについて３ビットから５ビットをビットリバースすると’００１０００００’となり、Ｘ（２）のデータのアドレスを示す。
【００８０】
このようにアドレスの更新とビットリバース変換を行うことにより高速フーリエ変換（ＦＦT）のシグナルフローに従ったアクセスアドレスを生成することが出来る。
【００８１】
図２は、本実施の形態の信号処理プロセッサ１００のハードウエア構成の一例を示す回路ブロック図である。
【００８２】
本実施の形態の信号処理プロセッサ１００は、フェッチ部１８０とデコード部１１０として機能する命令フェッチ／デコード回路１０、情報保持部１２０として機能するレジスタ・ファイル２０、演算処理部１５０として機能する演算回路３０、アクセス処理部１７０として機能するＸバスリード回路４０及びＹバス・リード回路５０及びＺバス・ライト回路６０、ホストインターフェイス部１９０として機能するホストインターフェイス回路７０を含む。
【００８３】
レジスタ・ファイル２０は、命令実行に使用するアドレス、データ、制御情報の少なくとも１つを記憶するレジスタとして機能する。
【００８４】
図３は本実施の形態の信号処理プロセッサ１００のレジスタ・ファイル２０のレジスタ構成の一例について説明する図である。
【００８５】
本実施の形態の信号処理プロセッサ１００は、アドレス・レジスタ群３１０、データ・レジスタ群３２０、演算制御レジスタ群３３０、特殊アドレス制御レジスタ群３４０を含んで構成されている。
【００８６】
アドレス・レジスタ群３１０は複数のアドレス・レジスタ（Ａ０〜ＹＲ）３１１を含んでもよい。アドレス・レジスタ（Ａ０〜ＹＲ）３１１は、その一部（上位の所定ビット又は下位の所定ビット）に属性情報（ｌｏｎｇ型、ｓｈｏｒｔ型、ｃｈａｒ型等）を保持するための所定ビット（ここでは３ビット）の属性情報保持フィールド３５０（属性情報保持部１２４に対応）を設けても良い。この場合実際のアドレスデータはフィールド３５０を除いたアドレス情報保持フィールド３５２に記憶される。
【００８７】
なおアドレス・レジスタ群３１０はデータ兼用レジスタ（ＤＲ）３１２を含んでもよい。そしてデータ兼用レジスタ（ＤＲ）３１２の一部（上位の所定ビット又は下位の所定ビット）に属性情報（ｌｏｎｇ型、ｓｈｏｒｔ型、ｃｈａｒ型等）を保持するための所定ビット（ここでは３ビット）の属性情報保持フィールド３５０を設けてもよい。
【００８８】
属性情報保持フィールド３５０に保持される属性情報と、対応するデータ型との関係は、例えば図１０に示す表に示すように設定することができる。
【００８９】
なお、上記例では、属性情報保持部１２４として属性情報保持フィールド３５０がアドレス・レジスタの一部のフィールドに設けられている例であるが、属性情報保持部１２４は、アドレス・レジスタのフィールドの一部に設けた構成に限られず、アドレス・レジスタと一義的に対応する場所（レジスタ・ファイルのいずれか）に設けられていればよい。
【００９０】
データ・レジスタ３２０は、メモリ２００から読み出されたデータや演算回路３０の出力値が格納されるレジスタである。演算制御レジスタ３３０は、演算回路３０で行われる種々の演算処理において必要に応じて使用されるレジスタである。
【００９１】
特殊アドレス制御レジスタ群３４０は、ビットリバース制御情報保持部１２６として機能する。特殊アドレス制御レジスタ群３４０は、ビットリバース処理において入れ替え対象となるビット数を特定するため入れ替え対象ビット数情報を含むビットリバース制御情報が記憶されたビットリバース制御情報レジスタ（ＢＲＣ０、ＢＲＣ１）３４１を含んで構成してもよい。ここでビットリバース制御情報レジスタ（ＢＲＣ０、ＢＲＣ１）３４１は、少なくとも２つ以上のアドレスレジスタについて共通のビットリバース制御情報を記憶するようにしてもよい。
【００９２】
また、特殊アドレス制御レジスタ群３４０は、少なくとも２つ以上のアドレスレジスタの各アドレスレジスタについてビットリバース制御の有無を特定するためのビットリバース有無制御情報レジスタ（ＣＢＲＥＦ０、ＣＢＲＥＦ１）３４２を含んで構成してもよい。
【００９３】
ビットリバース制御情報レジスタ（ＢＲＣ０、ＢＲＣ１）３４１は、アドレス・レジスタと１対１に対応するように構成することも可能である。
【００９４】
また、１つのビットリバース制御情報レジスタと所定の複数のアドレス・レジスタとが対応するように構成することも可能である。例えば、ビットリバース制御情報レジスタＢＲＣ０をアドレス・レジスタＡ０〜Ａ２に、ビットリバース制御情報レジスタＢＲＣ１をアドレス・レジスタＸＲ〜ＺＲに対応するように構成することも可能である。
【００９５】
また、ビットリバース有無制御情報レジスタ（ＣＢＲＥＦ０、ＣＢＲＥＦ１）は、例えば図２０に示すようにフラグ０（ＣＢＲＥＦ０）にアドレス・レジスタＡ０〜Ａ２のＯＮ・ＯＦＦ（ビットリバース有無）の組合せによって０〜７のいずれかの値をセットし、フラグ１（ＣＢＲＥＦ１）にアドレス・レジスタＸＲ〜ＺＲのＯＮ・ＯＦＦ（ビットリバース有無）の組合せによって０〜７のいずれかの値をセットするようにしても良い。ここでは「○」をＯＮ、「×」をＯＦＦとしている。
【００９６】
このように構成することにより、ビットリバース処理部１４１，１６１は、少なくとも２つ以上のアドレスレジスタについて、前記共通のビットリバース制御情報を用いてビットリバース処理を行うことが出来る。
【００９７】
命令フェッチ／デコード回路１０は、命令アドレス１１を出力してメモリ２００に記憶されている命令コード１２を受け取り、受け取った命令コードをデコードして、後述する各種信号を出力する。例えば、命令フェッチ／デコード回路１０は、データ演算命令に基づいて、使用するアドレス・レジスタを選択するアドレス・レジスタ選択信号１３を出力する。
【００９８】
また、命令フェッチ／デコード回路１０は、所与の命令に基づいて設定信号１４を出力し、属性情報（例えば属性情報保持フィールド３５０の値）を設定したり変更したりする属性情報設定処理を行うように構成することも可能である。属性情報設定処理を行う命令は、汎用的なレジスタ書き込み命令である場合でもよいし、レジスタ・ファイルの属性情報保持部に属性情報を設定するための専用命令である場合でもよい。
【００９９】
さらに、命令フェッチ／デコード回路１０は、所与の命令に基づいて設定信号１４を出力し、ビットリバース制御情報（例えばビットリバース制御情報レジスタ（ＢＲＣ０、ＢＲＣ１）３４１の値）を設定したり変更したりするビットリバース制御情報設定処理を行うように構成することも可能である。ビットリバース制御情報設定処理を行う命令は、汎用的なレジスタ書き込み命令である場合でもよいし、レジスタ・ファイルのビットリバース制御情報保持部にビットリバース制御情報を設定するための専用命令である場合でもよい。
【０１００】
加えて、命令フェッチ／デコード回路１０は、所与の命令に基づいて設定信号１４を出力し、ビットリバース有無制御情報（例えばビットリバース有無制御情報レジスタ（ＣＢＲＥＦ０、ＣＢＲＥＦ１）の値）を設定したり変更したりするビットリバース有無制御情報設定処理を行うように構成することも可能である。ビットリバース有無制御情報設定処理を行う命令は、汎用的なレジスタ書き込み命令である場合でもよいし、レジスタ・ファイルの制御情報保持部にビットリバース有無制御情報を設定するための専用命令である場合でもよい。
【０１０１】
演算回路３０は、Ｘバス・リード回路４０の出力であるＸデータ４５、Ｙバス・リード回路の出力であるＹデータ５５を受け取り、命令フェッチ／デコード回路１０から出力されるデコード信号３１に基づき演算処理を行い、演算結果をＺデータ３５として出力する。
【０１０２】
Ｘバスリード回路４０は、命令フェッチ／デコード回路１０からＸリード・リクエスト２７やＸアドレス変位値１６を、レジスタ・ファイル２０からＸリード・アドレス２１やＸ属性情報２４やＸ制御情報（Ｘ範囲制御情報３２やＸビットリバース制御情報３５）を受け取り、Ｘアドレス４１、Ｘデータサイズ４２、Ｘリードリクエスト４３をＸバスに出力し、ＸバスからＸリードデータ４４を受け取り、演算回路３０にＸデータ４５を、レジスタ・ファイル２０にＸ更新アドレス４６をそれぞれ出力する。
【０１０３】
Ｘバスリード回路４０は、図示しないビットリバース処理回路（図４〜図５の４１０）を含み、必要に応じてビットリバース処理回路においてビットリバース変換処理等を行いＸアドレス４１（アクセスアドレス）を生成することが出来る。
【０１０４】
Ｙバスリード回路５０は、命令フェッチ／デコード回路１０からＹリード・リクエスト２８やＹアドレス変位値１７を、レジスタ・ファイル２０からＹリード・アドレス２２やＹ属性情報２５やＹ制御情報（Ｙ範囲制御情報３３やＹビットリバース制御情報３６）を受け取り、Ｙアドレス５１、Ｙデータサイズ５２、Ｙリードリクエスト５３をＹバスに出力し、ＹバスからＹリードデータ５４を受け取り、演算回路３０にＹデータ５５を、レジスタ・ファイル２０にＹ更新アドレス５６をそれぞれ出力する。
【０１０５】
Ｙバスリード回路５０は、図示しないビットリバース処理回路を含み、必要に応じてビットリバース処理回路においてビットリバース変換処理等を行いＹアドレス５１（アクセスアドレス）を生成することが出来る。
【０１０６】
Ｚバスライト回路６０は、演算回路３０から受け取った演算結果であるＺデータ３５を、命令フェッチ／デコード回路１０からＺリード・リクエスト２９やＺアドレス変位値１８を、レジスタ・ファイル２０からＺライト・アドレス２３やＺ属性情報２６やＺ制御情報（Ｚ範囲制御情報３４やＺビットリバース制御情報３７）を受け取り、Ｚアドレス６１、Ｚデータサイズ６２、Ｚライトリクエスト６３、Ｚライトデータ６４をＺバスに、Ｚ更新アドレス６６をレジスタ・ファイル２０にそれぞれ出力する。
【０１０７】
Ｚバスライト回路６０は、図示しないビットリバース処理回路（図７〜図９の６１０）を含み、必要に応じてビットリバース処理回路においてビットリバース変換処理等を行いＺアドレス６１（アクセスアドレス）を生成することが出来る。
【０１０８】
ホストインターフェイス回路７０は、ホストライトデータ７１、ホストアドレス７２を受け取りレジスタ・ファイル２０のアドレスデータや属性情報やその他の情報を設定する。また、レジスタ・ファイル２０からデータを読み出しホストリードデータ７３としてホストプロセッサ２４０に出力する。
【０１０９】
ホストインターフェイス回路７０は、例えばホストプロセッサ２４０から、アドレス・レジスタの属性情報を受け取り、属性情報保持部（例えばレジスタ・ファイル２０のアドレス情報保持フィールド３５２）に設定するようにしてもよい。
【０１１０】
また、ホストインターフェイス回路７０は、例えばホストプロセッサ２４０から、ビットリバース制御情報を受け取り、ビットリバース制御情報保持部（例えばレジスタ・ファイル２０のビットリバース制御情報レジスタ（ＢＲＣ０、ＢＲＣ１）３４１）に設定するようにしてもよい。さらに、ホストインターフェイス回路７０は、例えばホストプロセッサ２４０から、制御有無情報を受け取り、ビットリバース制御情報保持部（例えばレジスタ・ファイル２０のビットリバース有無制御情報レジスタ（ＣＢＲＥＦ０、ＣＢＲＥＦ１）３４２）に設定するようにしてもよい。
【０１１１】
例えば本実施の形態の信号処理プロセッサ１００は、メモリオペランドとして、入力となるＸソース、Ｙソース、出力となるディスティネーションＺのアドレス・レジスタを選択する情報有するデータ演算命令を命令セットに有している場合、命令フェッチ／デコード回路１０は、上記データ演算命令をデコードすると、Ｘソース、Ｙソース、出力となるディスティネーションＺに対応するアドレス・レジスタ（例えば図３のアドレス・レジスタ群３１０のＡ０〜Ａ２）を選択するアドレス・レジスタ選択信号１３をレジスタ・ファイルに対しデコード信号として出力する。
【０１１２】
また、上記演算命令でＸソース、Ｙソース、出力となるディスティネーションＺに対しＸアドレス変位値、Ｙアドレス変位値、Ｚアドレス変位値が設定されている場合には、Ｘアドレス変位値１６をＸバス・リード回路４０に、Ｙアドレス変位値１７をＹバス・リード回路５０に、Ｚアドレス変位値１８をＺバス・ライト６０にそれぞれ出力する。
【０１１３】
図４は本実施の形態のＸバス・リード回路４０の一例を示す回路ブロック図である。なお、Ｙバス・リード回路５０の構成も、Ｘバス・リード回路４０と同様である。
【０１１４】
図４に示す例では、アドレス更新処理部４００が、命令フェッチ／デコード回路１０でデコードされたデータ演算命令とレジスタ・ファイル２０に記憶される属性情報に基づいてアドレス変位値を制御している。また、アドレス更新処理部４００は、命令フェッチ／デコード回路１０でデコードされたデータ演算命令とレジスタ・ファイル２０に記憶される属性情報に基づいてアドレス更新処理の有無も含めて制御してもよい。
【０１１５】
なお図４に示す例では、アドレス更新処理部４００は、命令フェッチ・デコード回路１０でデコードされたデータ演算命令とレジスタ・ファイル２０に記憶される属性情報に基づいて、Ｘバス・リード回路４０が、データ演算命令に基づいてメモリ２００にアクセスするごとにアドレス更新処理を行っている。
【０１１６】
図４に示すＸバス・リード回路４０は、パイプライン・レジスタ４０１〜４０４、データ拡張処理回路４０５、シフタ４０６、加算器４０７、マルチプレクサ４０８、ビットリバース処理回路４１０を含んで構成されている。
【０１１７】
パイプライン・レジスタ４０１〜４０４は、後述するパイプライン処理における１クロックサイクル（パイプライン処理の１ステージに対応）に相当する時間だけ信号を遅延させる。図４においては、説明を簡潔にするために各信号線上に１段ずつのパイプライン・レジスタを示しているが、必要に応じて増減することができる。
【０１１８】
Ｘバス・リード回路４０は、レジスタ・ファイル２０からＸリード・アドレス２１を受け取り、ビットリバース処理回路４１０、パイプライン・レジスタ４０１を介して、Ｘアドレス４１としてバスに出力する。
【０１１９】
ビットリバース処理回路４１０は、レジスタ・ファイル２０からＸ属性情報２４とＸビットリバース制御情報３５を受けとり、これらに基づきアクセスアドレス（ここではＸリード・アドレス２１）の所与の範囲のビットを所定の規則に従ってビット入れ替え対象となる前記所与の範囲を制御してビットリバース処理を行う。
【０１２０】
図２１はビットリバース処理回路の構成の一例を示す図である。ビットリバース処理回路４１０は、ビットリバース変換回路４１２とセレクタ４１４を含んで構成してもよい。ビットリバース変換回路４１２は、レジスタファイルの属性情報保持フィールド３５０に保持される属性情報に基づき生成されるＸ属性情報２４とレジスタファイルのビットリバース制御情報レジスタ（ＢＲＣ０、ＢＲＣ１）に基づき生成されるＸビットリバース制御情報３５（ここでは変換対象ビット数の情報）を受け取り、Ｘ属性情報２４とＸビットリバース制御情報３５（ここでは変換対象ビット数の情報）基づき図１１〜図１５で説明したようにアクセスアドレス４１６のビット入れ替え対象となる範囲を制御してビットリバース変換を行い変換結果４１３を出力する。
【０１２１】
セレクタ４１４はアクセスアドレス４１６とビットリバース変換後のアクセスアドレスをうけとり、レジスタファイルのビットリバース有無制御情報レジスタ（ＣＢＲＥＦ０、ＣＢＲＥＦ１）に基づき生成されるＸビットリバース制御情報３５（ここでは各レジスタのビットリバース変換有無の情報）を受け取り、Ｘビットリバース制御情報３５がビットリバース変換有りを示している場合にはビットリバース変換後のアクセスアドレス４１３をＸアドレス４１として出力する。Ｘビットリバース制御情報３５がビットリバース変換無しを示している場合にはアクセスアドレス４１６をＸアドレス４１として出力する。
【０１２２】
なおアクセスアドレスは、図４の場合レジスタファイルから受け取ったＸリード・アドレス２１である。また、後述する図５の場合アドレス更新処理部４００のマルチプレクサ４０８の出力する更新アドレスである。また、後述する図６の場合セレクタ４０９の出力するアドレスである。
【０１２３】
後述するＺバス・ライト回路のビットリバース処理回路６１０の構成も同様である。
【０１２４】
また、Ｘバス・リード回路４０は、レジスタ・ファイル２０からＸ属性情報２４を受け取り、パイプライン・レジスタ４０２を介して、Ｘデータ・サイズ４２としてバスに出力する。さらに、Ｘバス・リード回路４０は、命令フェッチ／デコード回路１０からＸリード・リクエスト２７を受け取り、パイプライン・レジスタ４０３を介して、Ｘリード・リクエスト４３としてバスに出力する。
【０１２５】
Ｘバス・リード回路４０は、Ｘリード・データ４４に対してデータ拡張処理を行うデータ拡張処理回路４０５を含んでいてもよい。データ拡張処理回路４０５は、Ｘ属性情報２４に基づいて特定されるデータ拡張処理規則にしたがって、Ｘリード・データ４４に対してデータ拡張処理を行う。
【０１２６】
属性情報と、対応するデータ拡張規則との関係は、例えば図１０に示す表に示すように設定することができる。図１０に示す例は、Ｘリード・データ４４を４バイトに拡張する例である。
【０１２７】
図１０において、「バイト符号拡張」とは、「ｃｈａｒ型（符号付１バイト）」のデータを「ｌｏｎｇ型（符号付４バイト）」に符号拡張するデータ拡張規則である。「２バイト符号拡張」とは、「ｓｈｏｒｔ型（符号付２バイト）」のデータを「ｌｏｎｇ型（符号付４バイト）」に符号拡張するデータ拡張規則である。「バイトゼロ拡張」とは、「ｕｎｓｉｇｈｎｅｄ  ｃｈａｒ型（符号なし１バイト）」のデータを「ｕｎｓｉｇｈｎｅｄ  ｌｏｎｇ型（符号なし４バイト）」にゼロ拡張するデータ拡張規則である。「２バイトゼロ拡張」とは、「ｕｎｓｉｇｈｎｅｄ  ｓｈｏｒｔ型（符号なし２バイト）」のデータを「ｕｎｓｉｇｈｎｅｄ  ｌｏｎｇ型（符号なし４バイト）」にゼロ拡張するデータ拡張規則である。「拡張なし」とは、リード・データをそのまま出力するデータ拡張規則である。
【０１２８】
このように、データ拡張処理回路４０５を設けることにより、演算回路３０は予め設定したデータ型のデータのみを受け取ることができる。
【０１２９】
Ｘバス・リード回路４０は、シフタ４０６、加算器４０７、マルチプレクサ４０８を含んで構成されるアドレス更新処理部４００を含む。アドレス更新処理部４００は、Ｘバス・リード回路がアドレス・レジスタ３１１からＸリード・アドレス２１を読み出す際に、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部４００は、所与の変位値を属性情報に基づいて制御することも可能である。
【０１３０】
また、アドレス更新処理部４００は、マルチプレクサ４０８により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行うようにしてもよい。また、アドレス更新処理部４００は、マルチプレクサ４０８により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
【０１３１】
図４に示す例では、シフタ４０６は、命令フェッチ／デコード回路１０からＸアドレス変位値１６を、レジスタ・ファイル２０からＸ属性情報２４を受け取り、Ｘ属性情報２４に基づいて決定されるアドレス変位のシフトをＸアドレス変位値１６対して行い、Ｘアドレス変位値を補正する。加算器４０７は、Ｘリード・アドレス２１に補正後のＸアドレス変位値を加算し、Ｘ加算アドレス４７として出力する。
【０１３２】
属性情報と、対応するアドレス変位のシフトとの関係は、例えば図１０に示す表に示すように設定することができる。
【０１３３】
図１０において、「＜＜１」とは、アドレス変位値に対して左に１ビットだけシフトすることを示す。「＜＜２」とは、アドレス変位値に対して左に２ビットだけシフトすることを示す。「なし」とは、アドレス変位値をそのまま出力することを示す。
【０１３４】
つまり、図１０に示す例では、アドレス更新処理部４００は属性情報に基づきデータの語長（サイズ）に比例したアドレス変位値となるように制御している。
【０１３５】
マルチプレクサ４０８は、レジスタ・ファイル２０からＸ属性情報２４とＸ制御情報（ここではＸ範囲制御情報３２）を受け取りアドレス範囲を設定する。そしてマルチプレクサ４０８は、レジスタ・ファイル２０からＸリード・アドレス２１を、加算器４０７からＸ加算アドレス４７を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにＸ更新アドレス４６を生成し、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータを更新するようにしてもよい。
【０１３６】
図４に示す例では、アドレス更新処理部４００は、Ｘバス・リード回路４０が、データ演算命令に基づいてメモリ２００にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成例であったが、メモリ２００にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とすることも可能である。
【０１３７】
図５は本実施の形態のＸバス・リード回路４０の他の一例を示す回路ブロック図である。なお、Ｙバス・リード回路５０の構成も、Ｘバス・リード回路４０と同様である。また、図４に示すＸバス・リード回路４０と同一の構成には同一の符号を付し、その詳細な説明を省略する。
【０１３８】
図５に示すＸバス・リード回路４０は、レジスタ・ファイル２０からＸ属性情報２４を受け取り、パイプライン・レジスタ４０２を介して、Ｘデータ・サイズ４２としてバスに出力する。さらに、Ｘバス・リード回路４０は、命令フェッチ／デコード回路１０からＸリード・リクエスト２７を受け取り、パイプライン・レジスタ４０３を介して、Ｘリード・リクエスト４３としてバスに出力する。
【０１３９】
Ｘバス・リード回路４０は、シフタ４０６、加算器４０７、マルチプレクサ４０８を含んで構成されるアドレス更新処理部４００を含む。アドレス更新処理部４００は、Ｘバス・リード回路がアドレス・レジスタ３１１からＸリード・アドレス２１を読み出す際に、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部４００は、所与の変位値を属性情報に基づいて制御することも可能である。
【０１４０】
また、アドレス更新処理部４００は、マルチプレクサ４０８により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行う。さらに、アドレス更新処理部４００は、マルチプレクサ４０８により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
【０１４１】
図５に示す例では、シフタ４０６は、命令フェッチ／デコード回路１０からＸアドレス変位値１６を、レジスタ・ファイル２０からＸ属性情報２４を受け取り、Ｘ属性情報２４に基づいて決定されるアドレス変位のシフトをＸアドレス変位値１６対して行い、Ｘアドレス変位値を補正する。加算器４０７は、Ｘリード・アドレス２１に補正後のＸアドレス変位値を加算してＸ加算アドレス４７として出力する。
【０１４２】
マルチプレクサ４０８は、レジスタ・ファイル２０からＸ属性情報２４とＸ制御情報３２を受け取りアドレス範囲を設定する。そしてマルチプレクサ４０８は、レジスタ・ファイル２０からＸリード・アドレス２１を、加算器４０７からＸ加算アドレス４７を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにＸ更新アドレス４６を生成し、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータを更新する。
【０１４３】
Ｘバス・リード回路４０は、アドレス更新後のアドレスデータであるＸ更新アドレス４６を、ビットリバース処理回路４１０、パイプライン・レジスタ４０１を介して、Ｘアドレス４１としてバスに出力する。
【０１４４】
なお、Ｘバス・リード回路４０は、図６に示す例のようにセレクタ４０９を含み、命令フェッチ／デコード回路１０から受け取るアドレッシング・モード選択信号４８に基づき、メモリ２００にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成と、メモリ２００にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とを切替え可能な構成とすることもできる。
【０１４５】
図７は本実施の形態のＺバス・ライト回路６０の一例を示す回路ブロック図である。
【０１４６】
図７に示す例では、アドレス更新処理部６００が、命令フェッチ／デコード回路１０でデコードされたデータ演算命令とレジスタ・ファイル２０に記憶される属性情報に基づいてアドレス変位値を制御している。また、アドレス更新処理部６００は、命令フェッチ／デコード回路１０でデコードされたデータ演算命令とレジスタ・ファイル２０に記憶される属性情報に基づいてアドレス更新処理の有無も含めて制御してもよい。
【０１４７】
なお図７に示す例では、アドレス更新処理部６００は、命令フェッチ・デコード回路１０でデコードされたデータ演算命令とレジスタ・ファイル２０に記憶される属性情報に基づいて、Ｚバス・ライト回路６０が、データ演算命令に基づいてメモリ２００にアクセスするごとにアドレス更新処理を行っている。
【０１４８】
また、アドレス更新処理部６００は、属性情報として、命令フェッチ／デコード回路１０からのアドレス・レジスタ選択信号１３により選択されたアドレス・レジスタに関連付けられた属性情報を用い、アドレス・レジスタ選択信号１３により選択されたアドレス・レジスタに対してアドレス更新範囲制御処理を行っている。また、アドレス更新処理部６００は、命令フェッチ／デコード回路１０でデコードされたデータ演算命令とレジスタ・ファイル２０に記憶される属性情報に基づいてアドレス更新範囲制御処理の有無も含めて制御してもよい。
【０１４９】
図７に示すＺバス・ライト回路６０は、パイプライン・レジスタ６０１〜６０３、シフタ６０５、加算器６０６、マルチプレクサ６０７、ビットリバース処理回路６１０を含んで構成されている。
【０１５０】
パイプライン・レジスタ６０１〜６０３は、後述するパイプライン処理における１クロックサイクル（パイプライン処理の１ステージに対応）に相当する時間だけ信号を遅延させる。図５においては、説明を簡潔にするために各信号線上に１段ずつのパイプライン・レジスタを示しているが、必要に応じて増減することができる。
【０１５１】
Ｚバス・ライト回路６０は、レジスタ・ファイル２０からＺライト・アドレス２３を受け取り、ビットリバース処理回路６１０、パイプライン・レジスタ６０１を介して、Ｚアドレス６１としてバスに出力する。
【０１５２】
ビットリバース処理回路４１０は、レジスタ・ファイル２０からＸ属性情報２４とＸビットリバース制御情報３５を受けとり、これらに基づきアクセスアドレス（ここではＸリード・アドレス２１）の所与の範囲のビットを所定の規則に従ってビット入れ替え対象となる前記所与の範囲を制御してビットリバース処理を行う。
【０１５３】
また、Ｚバス・ライト回路６０は、レジスタ・ファイル２０からＺ属性情報２７を受け取り、パイプライン・レジスタ６０２を介して、Ｚデータ・サイズ６２としてバスに出力する。さらに、Ｚバス・ライト回路６０は、命令フェッチ／デコード回路１０からＺライト・リクエスト２９を受け取り、パイプライン・レジスタ６０３を介して、Ｚライト・リクエスト６３としてバスに出力する。
【０１５４】
また、Ｚバス・ライト回路６０は、演算回路３０からＺデータ３５を受け取り、Ｚライト・データ６４としてバスに出力する。
【０１５５】
Ｚバス・ライト回路６０は、シフタ６０５、加算器６０６、マルチプレクサ６０７を含むアドレス更新処理部６００を含む。アドレス更新処理部６００は、Ｚバス・ライト回路６０がアドレス・レジスタ３１１からＺライト・アドレス２３を読み出す際に、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部６００は、所与の変位値を属性情報に基づいて制御することも可能である。
【０１５６】
また、アドレス更新処理部６００は、マルチプレクサ６０７により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行う。さらに、アドレス更新処理部６００は、マルチプレクサ６０７により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
【０１５７】
図７に示す例では、シフタ６０５は、命令フェッチ／デコード回路１０からＺアドレス変位値１８を、レジスタ・ファイル２０からＺ属性情報２６を受け取り、Ｚ属性情報２６に基づいて決定されるアドレス変位のシフトをＺアドレス変位値１８対して行い、Ｚ加算アドレス６７として出力する。
【０１５８】
属性情報と、対応するアドレス変位のシフトとの関係は、例えば図１０に示す表に示すように設定することができる。このようにすることでアドレス更新処理部６００は属性情報に基づきデータの語長（サイズ）に比例したアドレス変位値となるように制御している。
【０１５９】
マルチプレクサ６０７は、レジスタ・ファイル２０からＺ属性情報２６とＺ制御情報３４を受け取りアドレス範囲を設定する。そしてマルチプレクサ６０７は、レジスタ・ファイル２０からＺライト・アドレス２３を、加算器６０６からＺ加算アドレス６７を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにＺ更新アドレス６６を生成し、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータを更新する。
【０１６０】
図７に示す例では、アドレス更新処理部６００は、Ｚバス・ライト回路６０が、データ演算命令に基づいてメモリ２００にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成例であったが、メモリ２００にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とすることも可能である。
【０１６１】
図８は本実施の形態のＺバス・ライト回路６０の他の一例を示す回路ブロック図である。また、図７に示すＺバス・ライト回路６０と同一の構成には同一の符号を付し、その詳細な説明を省略する。
【０１６２】
図８に示すＺバス・ライト回路６０は、レジスタ・ファイル２０からＺ属性情報２６を受け取り、パイプライン・レジスタ６０２を介して、Ｚデータ・サイズ６２としてバスに出力する。さらに、Ｚバス・ライト回路６０は、レジスタ・ファイル２０からＺライト・リクエスト２９を受け取り、パイプライン・レジスタ６０３を介して、Ｚライト・リクエスト６３としてバスに出力する。
【０１６３】
また、Ｚバス・ライト回路６０は、演算回路３０からＺデータ３５を受け取り、Ｚライト・データ６４としてバスに出力する。
【０１６４】
図８に示すＺバス・ライト回路６０は、シフタ６０５と加算器６０６を含むアドレス更新処理部６００を含む。アドレス更新処理部６００は、Ｚバス・ライト回路６０がアドレス・レジスタ３１１からＺライト・アドレス２３を読み出し、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータに、所与の変位値を加算するアドレス更新処理を行う。アドレス更新処理部６００は、所与の変位値を属性情報に基づいて制御することも可能である。
【０１６５】
また、アドレス更新処理部６００は、マルチプレクサ６０７により、属性情報に基づいて、アドレス範囲を設定し当該設定されたアドレス範囲内でアドレス更新処理を行うアドレス更新範囲制御処理を行う。さらに、アドレス更新処理部６００は、マルチプレクサ６０７により、範囲制御情報と属性情報に基づいてアドレス更新範囲制御処理を行うことも可能である。
【０１６６】
図８に示す例では、シフタ６０５は、命令フェッチ／デコード回路１０からＺアドレス変位値１８を、レジスタ・ファイル２０からＺ属性情報２６を受け取り、Ｚ属性情報２６に基づいて決定されるアドレス変位のシフトをＸアドレス変位値１８対して行い、Ｚ加算アドレス６７として出力する。
【０１６７】
マルチプレクサ６０７は、レジスタ・ファイル２０からＺ属性情報２６とＺ制御情報３４を受け取りアドレス範囲を設定する。そしてマルチプレクサ６０７は、レジスタ・ファイル２０からＺライト・アドレス２３を、加算器６０６からＺ加算アドレス６７を受け取り、アドレス更新処理後のアドレスデータが設定されたアドレス範囲内で循環するようにＺ更新アドレス６６を生成し、レジスタ・ファイル２０内のアドレス・レジスタ３１１に保持されるアドレスデータを更新する。
【０１６８】
Ｚバス・ライト回路６０は、アドレス更新後のアドレスデータであるＺ更新アドレス６６をビットリバース処理回路６１０、パイプライン・レジスタ６０１を介して、Ｚアドレス６１としてバスに出力する。
【０１６９】
なお、Ｚバス・ライト回路６０は、図９に示す例のようにセレクタ６０８を含み、命令フェッチ／デコード回路１０から受け取るアドレッシング・モード選択信号６８に基づき、メモリ２００にアクセスするアドレスを生成した後に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成と、メモリ２００にアクセスするアドレスを生成する前に、アドレス変位値をアドレスデータに加算するアドレス更新処理を行う構成とを切替え可能な構成とすることもできる。
【０１７０】
図２２は、本実施の形態の信号処理プロセッサ１００のパイプラインステージの一例について説明するための図である。本実施の形態の信号処理プロセッサ１００は、７００に示すように８段のパイプライン構成となっている。
【０１７１】
ＩＦ（７０１）はフェッチ部１８０（図２の命令フェッチ／デコード回路１０）が命令フェッチを行うステージであり、ＤＥ（７０２）はデコード部１１０（図２の命令フェッチ／デコード回路１０）が命令デコード、アドレス計算を行うステージであり、ＭＡ（７０３）は読み出し処理部１４０（図２のＸバス・リード回路４０、Ｙバス・リード回路５０）が、Ｘバス、Ｙバスのメモリアクセスを行うステージであり、ＤＲ（７０４）は読み出し処理部１４０（図２のＸバス・リード回路４０、Ｙバス・リード回路５０）が、Ｘバス、Ｙバスのデータ・リードを行うステージであり、Ｅ１（７０５）は演算処理部１５０（図２の演算回路３０）が乗算を行うステージであり、Ｅ２（７０６）は演算処理部１５０（図２の演算回路３０）が加減算やアキュミュレーションを行うステージであり、Ｅ３（７０７）は図示しない飽和処理部がシフトや飽和処理を行うステージであり、ＷＢ（７０８）は、書き出し処理部１６０（図２のＺバス・ライト回路６０）がＺバス・ライトを行うステージである。
【０１７２】
なお、本発明は本実施の形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１７３】
本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【図面の簡単な説明】
【０１７４】
【図１】本実施の形態の信号処理プロセッサの構成を示す機能ブロック図。
【図２】本実施の形態の信号処理プロセッサのハードウエア構成の一例を示す回路ブロック図。
【図３】本実施の形態の信号処理プロセッサのレジスタ・ファイルのレジスタ構成の一例。
【図４】本実施の形態のＸバス・リード回路の一例を示す回路ブロック図。
【図５】本実施の形態のＸバス・リード回路の他の一例を示す回路ブロック図。
【図６】本実施の形態のＸバス・リード回路の他の一例を示す回路ブロック図。
【図７】本実施の形態のＺバス・ライト回路の一例を示す回路ブロック図。
【図８】本実施の形態のＺバス・ライト回路の他の一例を示す回路ブロック図。
【図９】本実施の形態のＺバス・ライト回路の他の一例を示す回路ブロック図。
【図１０】属性情報とデータ型、データ拡張規則、アドレス変位のシフトとの関係の一例を示す表。
【図１１】リバースモードにおけるビットリバースについて説明するための図。
【図１２】リバースモードにおけるビットリバースについて説明するための図。
【図１３】ローテーションモードにおけるビットリバースについて説明するための図。
【図１４】ローテーションモードにおけるビットリバースについて説明するための図。
【図１５】アドレスビットのビット入れ替え対象となる範囲と属性情報の関係の一例を示す図。
【図１６】図１６（Ａ）〜（Ｃ）は、データ長とアドレスビットの関係を説明する図。
【図１７】高速フーリエ変換（ＦＦT）のバタフライ演算等で行われるアドレッシングについて説明するための図。
【図１８】高速フーリエ変換（ＦＦT）のバタフライ演算等で行われるアドレッシングについて説明するための図。
【図１９】高速フーリエ変換（ＦＦT）のバタフライ演算等で行われるアドレッシングについて説明するための図。
【図２０】ビットリバース有無制御情報の構成の一例を示す図。
【図２１】ビットリバース処理回路の構成の一例を示す図。
【図２２】本実施の形態の信号処理プロセッサのパイプラインステージの一例について説明するための図。
【符号の説明】
【０１７５】
１  命令フェッチ／デコード回路、２０  レジスタ・ファイル、３０  演算回路、４０  Ｘバス・リード回路、５０  Ｙバス・リード回路、６０  Ｚバス・リード回路、７０  ホストインターフェイス回路、１００  信号処理プロセッサ、１０２  半導体装置、１１０  デコード部、１２０  情報保持部、１２２  アドレス・レジスタ、１２４  属性情報保持部、１２６  制御情報保持部、１４０  読み出し処理部、１４１  ビットリバース処理部、１５０  演算処理部、１６０  書き出し処理部、１６１  ビットリバース更新処理部、１７０  メモリアクセス部、１８０  フェッチ部、１８２  フェッチレジスタ、１９０  ホストインターフェイス部、２００  メモリ、２４０  ホストプロセッサ、３１０  アドレス・レジスタ群、３１１  アドレス・レジスタ、３２０  データ・レジスタ群、３３０  演算制御レジスタ群、３４０  特殊アドレス制御レジスタ群、３４１  ビットリバース制御レジスタ、３４２  フラグレジスタ、３５０  属性情報保持フィールド、３５２  アドレス情報保持フィールド、４００  アドレス更新処理部、４０１〜４０４  パイプライン・レジスタ、４０５  データ拡張回路、４０６  シフタ、４０７  加算器、４０８  マルチプレクサ、４０９  セレクタ、４１０  ビットリバース処理回路、６００  アドレス更新処理部、６０１〜６０３  パイプライン・レジスタ、６０５  シフタ、６０６  加算器、６０７  マルチプレクサ、６０８セレクタ、６１０  ビットリバース処理回路
【図１】
2010044515.tif 000003
【図２】
2010044515.tif 000004
【図３】
2010044515.tif 000005
【図４】
2010044515.tif 000006
【図５】
2010044515.tif 000007
【図６】
2010044515.tif 000008
【図７】
2010044515.tif 000009
【図８】
2010044515.tif 000010
【図９】
2010044515.tif 000011
【図１０】
2010044515.tif 000012
【図１１】
2010044515.tif 000013
【図１２】
2010044515.tif 000014
【図１３】
2010044515.tif 000015
【図１４】
2010044515.tif 000016
【図１５】
2010044515.tif 000017
【図１６】
2010044515.tif 000018
【図１７】
2010044515.tif 000019
【図１８】
2010044515.tif 000020
【図１９】
2010044515.tif 000021
【図２０】
2010044515.tif 000022
【図２１】
2010044515.tif 000023
【図２２】
2010044515.tif 000024