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