(57)【要約】【課題】複数のデータ語長への飽和処理を効率良く行える信号処理プロセッサ及び半導体装置を提供すること。【解決手段】デコード部１１０とレジスタ部と命令実行部１３０とを含む信号処理プロセッサ１００であって、命令実行部１３０は、読み出し処理部１４０と、演算部１５０と、飽和処理部１６０と、書き出し処理部１７０と、を含みレジスタ部は、飽和処理において飽和させる語長を特定する飽和語長調情報１２４を含む飽和情報が保持された飽和情報保持部１２０を含み、飽和処理部１６０は、飽和語長情報１２４によって特定される語長に対応した飽和処理を行う。【選択図】図１
2010020625.tif 000002
【特許請求の範囲】
【請求項１】
フェッチ部にフェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号を生成するデコード部と、
命令実行に使用するアドレス、データ、制御情報の少なくとも１つを記憶するレジスタ部と、
前記デコード信号及びレジスタ部に記憶されている情報に基づきに基づきフェッチ部にフェッチされた命令コードの実行を行う命令実行部と、を含む信号処理プロセッサであって、
前記命令実行部は、
メモリからのデータの読み出し処理を行う読み出し処理部と、
読み出し処理部によって読み出されたデータを受け取り演算を行う演算部と、
演算部の演算結果を受け取り、前記演算結果に対して所与の語長に対応した飽和処理を行う飽和処理部と、
飽和処理部の出力したデータをメモリに出力する書き出し処理部と、を含み、
前記レジスタ部は、
前記飽和処理において飽和させる語長を特定する飽和語長調情報を含む飽和情報が保持された飽和情報保持部を含み、
前記飽和処理部は、
前記飽和語長情報によって特定される語長に対応した飽和処理を行う信号処理プロセッサ。
【請求項２】
請求項１において、
前記レジスタ部は、
前記飽和情報として、前記飽和処理の有無を特定する飽和有無情を保持し、
前記飽和処理部は、
前記飽和有無情報が飽和有を示している場合に飽和処理を行う信号処理プロセッサ。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記メモリへのアクセスアドレスを保持する複数のアドレスレジスタを含み、
飽和情報保持部は、
各アドレスレジスタに格納されるアドレスに対応するデータの語長情報を含む属性情報を、各アドレスレジスタに関連づけて保持するアドレスレジスタ属性情報保持部を含み、
前記飽和処理部は、
演算結果のライトアドレスが記憶されている前記アドレスレジスタに関連づけて保持されている前記属性情報によって特定される語長に対応した飽和処理を行う信号処理プロセッサ。
【請求項４】
請求項３において、
前記飽和情報保持部は、
メモリへアクセスする語長に自動的に飽和させるモードであることを示す自動語長選択モード情報を保持し、
前記飽和処理部は、
前記自動語長選択モード情報が自動語長選択モードであることを示している場合には、演算結果のライトアドレスが記憶されている前記アドレスレジスタに関連づけて保持されている前記属性情報によって特定される語長に対応した語長で飽和処理を行う信号処理プロセッサ。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記デコード部は、
フェッチ部にフェッチされた命令コードが飽和情報を飽和情報保持部に設定するための飽和情報設定命令であると判断した場合には、命令コードから特定される飽和情報を飽和情報保持部に設定する信号処理プロセッサ。
【請求項６】
請求項１乃至５のいずれかにおいて、
ホストプロセッサからの飽和情報制御信号を受信した場合には、前記飽和情報制御信号に基づき、飽和情報保持部に飽和情報を設定するホストインターフェース部と、を含む信号処理プロセッサ。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記飽和情報保持部は、
所定の語長に強制的に飽和させるモードであることを示す強制飽和モード情報を保持し、
前記飽和処理部は、
前記強制飽和モード情報が強制飽和モードであることを示している場合には、前記演算結果を書き込むメモリ又はレジスタの語長にかかわらず、所定の語長に対応した飽和処理を行う信号処理プロセッサ。
【請求項８】
フェッチ部にフェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号を生成するデコード部と、
命令実行に使用するアドレス、データ、制御情報の少なくとも１つを記憶するレジスタ部と、
前記デコード信号及びレジスタ部に記憶されている情報に基づきに基づきフェッチ部にフェッチされた命令コードの実行を行う命令実行部と、を含む信号処理プロセッサであって、
前記デコード部は、
主記憶や内部レジスタにアクセスする命令をデコードし、アクセスするデータの語長情報に基づき、前記デコード信号として飽和語長特定信号を生成し、
前記命令実行部は、
メモリからのデータの読み出し処理を行う読み出し処理部と、
読み出し処理部によって読み出されたデータを受け取り演算を行う演算部と、
演算部の演算結果を受け取り、前記演算結果に対して、所与の語長に対応した飽和処理を行う飽和処理部と、
飽和処理部の出力したデータをメモリに出力する書き出し処理部と、を含み、
前記レジスタ部は、
前記飽和処理の有無を特定する飽和有無情報を含む飽和情報が保持された飽和情報保持部を含み、
前記飽和処理部は、
前記飽和有無情報が飽和有を示している場合には前記飽和語長特定信号によって特定される語長に対応した飽和処理を行う信号処理プロセッサ。
【請求項９】
請求項１乃至８のいずれかに記載の信号処理プロセッサを含む半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信号処理プロセッサ及び半導体装置に関する。
【背景技術】
【０００２】
数値演算を目的としたデジタル信号処理プロセッサは、数値演算回路と数値演算回路への入力及び出力を一時的に格納しておく回路とをひとまとめにした命令実行ブロックと、数値演算の結果が格納される主記憶装置が、それぞれバスに接続されている構成のものが一般的である。かかるデジタル信号処理プロセッサにおいては、数値演算の結果の語長の方が主記憶装置の語長より長い場合がおおく、飽和処理が必要となってくる。
【０００３】
しかしたとえば飽和操作を、各命令信号に応じてレジスタに書き込んだ後に読みだしてメモリに書き込むという処理で実現すると、命令実行に時間がかかってしまう。
【特許文献１】特開平９−１８５４８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
飽和処理の有無の設定をモードレジスタに持たせる構成は、上記文献に開示されているが、主記憶のデータ語長より小さい語長の演算をした場合に、飽和処理を行うことが出来ないという問題点があった。
【０００５】
また数値演算を目的としたデジタル信号処理プロセッサでは、数値演算そのものと飽和操作を一体にした手続をいかに短い時間で実行し終えるかが重要な課題となる。
【０００６】
また複数のデータ語長を扱う演算装置では、各語長に対応した飽和処理を効率よく行うことが好ましい。
【０００７】
本発明の目的は、上記課題に鑑みてなされたものであり、複数のデータ語長への飽和処理を効率良く行える信号処理プロセッサ及び半導体装置を提供することである。
【課題を解決するための手段】
【０００８】
（１）本発明は、
フェッチ部にフェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号を生成するデコード部と、
命令実行に使用するアドレス、データ、制御情報の少なくとも１つを記憶するレジスタ部と、
前記デコード信号及びレジスタ部に記憶されている情報に基づきに基づきフェッチ部にフェッチされた命令コードの実行を行う命令実行部と、を含む信号処理プロセッサであって、
前記命令実行部は、
メモリからのデータの読み出し処理を行う読み出し処理部と、
読み出し処理部によって読み出されたデータを受け取り演算を行う演算部と、
演算部の演算結果を受け取り、前記演算結果に対して所与の語長に対応した飽和処理を行う飽和処理部と、
飽和処理部の出力したデータをメモリに出力する書き出し処理部と、を含み、
前記レジスタ部は、
前記飽和処理において飽和させる語長を特定する飽和語長調情報を含む飽和情報が保持された飽和情報保持部を含み、
前記飽和処理部は、
前記飽和語長情報によって特定される語長に対応した飽和処理を行う信号処理プロセッサである。
【０００９】
たとえばバスを介してメモリに接続されている場合には、読み出し処理部は、メモリに接続されたバスに対してデータの読み出し処理を行い、書き出し処理部は、飽和処理部の出力したデータをメモリに接続されたバスに対して出力する構成でもよい。メモリは外部メモリでもよい。
【００１０】
語長に対応した飽和処理とは、語長に応じて決定される数値の上限と下限にたいして、演算結果がその値を超えた場合は演算値を上限値又は下限値にする処理を意味する。数値の上限と下限は語長（データのサイズとデータの符号の有無）によって決まってくる。
【００１１】
飽和処理部は、演算結果が格納される領域の語長または演算結果に対して要求される語長に応じて決定される上限値、下限値に対して、演算結果が大きい場合には演算結果を上限値にする処理、演算結果が小さい場合に演算結果を下限値にする処理を行う。
【００１２】
飽和情報保持部は、演算制御に関する情報を保持する内部レジスタを用いて実現することも出来るし、アドレスレジスタ等の一部（たとえば上位の所定ビットのフィールド）に設けることもできる。
【００１３】
本発明によれば、演算処理後にメモリ（記憶装置）に書き戻す信号処理プロセッサにおいて、異なる語長に対応した飽和処理をモードの切り替え等の煩雑な処理を行うことなしに効率よく行うことが出来るため、処理パフォーマンスが向上するともに、プログラムのコード数も削減することが出来る。
【００１４】
（２）この信号処理プロセッサは、
前記レジスタ部は、
前記飽和情報として、前記飽和処理の有無を特定する飽和有無情を保持し、
前記飽和処理部は、
前記飽和有無情報が飽和有を示している場合に飽和処理を行うようにしてもよい。
【００１５】
（３）この信号処理プロセッサは、
前記メモリへのアクセスアドレスを保持する複数のアドレスレジスタを含み、
飽和情報保持部は、
各アドレスレジスタに格納されるアドレスに対応するデータの語長情報を含む属性情報を、各アドレスレジスタに関連づけて保持するアドレスレジスタ属性情報保持部を含み、
前記飽和処理部は、
演算結果のライトアドレスが記憶されている前記アドレスレジスタに関連づけて保持されている前記属性情報によって特定される語長に対応した飽和処理を行うようにしてもよい。
【００１６】
（４）この信号処理プロセッサは、
前記飽和情報保持部は、
メモリへアクセスする語長に自動的に飽和させるモードであることを示す自動語長選択モード情報を保持し、
前記飽和処理部は、
前記自動語長選択モード情報が自動語長選択モードであることを示している場合には、演算結果のライトアドレスが記憶されている前記アドレスレジスタに関連づけて保持されている前記属性情報によって特定される語長に対応した語長で飽和処理を行うようにしてもよい。
【００１７】
（５）この信号処理プロセッサは、
前記デコード部は、
フェッチ部にフェッチされた命令コードが飽和情報を飽和情報保持部に設定するための飽和情報設定命令であると判断した場合には、命令コードから特定される飽和情報を飽和情報保持部に設定するようにしてもよい。
【００１８】
飽和情報設定命令は、汎用的なレジスタ書き込み命令（飽和情報保持部は内部レジスタのいずれかの場所に設けられている）である場合でもよいし、内部レジスタの飽和情報保持部に飽和情報を設定するための専用命令である場合でもよい。
【００１９】
（６）この信号処理プロセッサは、
ホストプロセッサからの飽和情報制御信号を受信した場合には、前記飽和情報制御信号に基づき、飽和情報保持部に飽和情報を設定するホストインターフェース部と、を含むようにしてもよい。
【００２０】
本発明の信号処理プロセッサは、ホストプロセッサに対するアクセラレータやＤＳＰ（Digital Signal Processor）として使用することもできる。このような場合ホストプロセッサから飽和情報を設定するようにしてもよい。
【００２１】
（７）この信号処理プロセッサは、
前記飽和情報保持部は、
所定の語長に強制的に飽和させるモードであることを示す強制飽和モード情報を保持し、
前記飽和処理部は、
前記強制飽和モード情報が強制飽和モードであることを示している場合には、前記演算結果を書き込むメモリ又はレジスタの語長にかかわらず、所定の語長に対応した飽和処理を行うようにしてもよい。
【００２２】
飽和情報保持部は、複数の異なる語長の各語長たいして語長毎に強制飽和モードが設定出来るようにしてもよい。この場合飽和処理部は、前記演算結果を書き込むメモリ又はレジスタの語長にかかわらず、強制飽和モードに対応した語長に語長に飽和する処理を行うようにしてもよい。
【００２３】
（８）本発明は、
フェッチ部にフェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号を生成するデコード部と、
命令実行に使用するアドレス、データ、制御情報の少なくとも１つを記憶するレジスタ部と、
前記デコード信号及びレジスタ部に記憶されている情報に基づきに基づきフェッチ部にフェッチされた命令コードの実行を行う命令実行部と、を含む信号処理プロセッサであって、
前記デコード部は、
主記憶や内部レジスタにアクセスする命令をデコードし、アクセスするデータの語長情報に基づき、前記デコード信号として飽和語長特定信号を生成し、
前記命令実行部は、
メモリからのデータの読み出し処理を行う読み出し処理部と、
読み出し処理部によって読み出されたデータを受け取り演算を行う演算部と、
演算部の演算結果を受け取り、前記演算結果に対して、所与の語長に対応した飽和処理を行う飽和処理部と、
飽和処理部の出力したデータをメモリに出力する書き出し処理部と、を含み、
前記レジスタ部は、
前記飽和処理の有無を特定する飽和有無情報を含む飽和情報が保持された飽和情報保持部を含み、
前記飽和処理部は、
前記飽和有無情報が飽和有を示している場合には前記飽和語長特定信号によって特定される語長に対応した飽和処理を行う。
【００２４】
（９）本発明は、
上記のいずれかに記載の信号処理プロセッサを含む半導体装置である。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を適用した実施の形態について図面を参照して説明する。ただし、本発明は以下の実施の形態に限定されるものではない。また、本発明に係る信号処理プロセッサ及び半導体装置は、以下の実施の形態及び変形例を自由に組み合わせたものを含むものとする。
【００２６】
以下、本発明を適用した信号処理プロセッサについて説明する。
【００２７】
図１は、本実施の形態の信号処理プロセッサの構成を示す機能ブロック図である。なお、本実施形態の信号処理プロセッサは、図１の構成要素（各部）を全て含む必要はなく、その一部を省略した構成としてもよい。
【００２８】
本実施の形態の信号処理プロセッサは半導体装置（ＩＣ１０２）として実現することが出来る。
【００２９】
本実施の形態の信号処理プロセッサ１００は、プログラムメモリ（メモリ２００の一部に設けられていても良い）から命令コードを読み出し、読み出した命令コードをフェッチレジスタ１８２に格納するフェッチ部１８０を含む。
【００３０】
本実施の形態の信号処理プロセッサ１００は、フェッチレジスタ１８２にフェッチされた命令コードをデコードしてデコード結果に基づき命令実行に必要なデコード信号１１２、１１４を生成するデコード部１１０を含む。
【００３１】
本実施の形態の信号処理プロセッサ１００は、飽和させる語長を特定する飽和語長調情報１２４を含む飽和情報が保持された飽和情報保持部１２０を含む。飽和情報は１２０は、命令実行に使用するアドレス、データ、制御情報の少なくとも１つを記憶するレジスタ部に設けられた、演算制御に関する情報を保持する内部レジスタに保持することが出来る。
【００３２】
飽和語長情報はデータサイズの情報でもよいし、データサイズとデータの符号の有無の情報を含む情報でもよい。また飽和語長情報は、演算で扱うデータの語長やレジスタの種類や演算結果を書き込む領域の語長に関わらず飽和する語長が設定されている構成でもよいし、演算結果を書き込む領域に応じて異なる語長が設定されている構成でもよい。
【００３３】
本実施の形態の信号処理プロセッサ１００は、デコード信号１１２、１１４及び図示しないレジスタに記憶されている情報に基づきに基づきフェッチ部にフェッチされた命令コードの実行を行う命令実行部１３０とを含む。命令実行部１３０は、メモリ２００に接続されたバスに対してデータの読み出し処理を行う読み出し処理部１４０を含む。命令実行部１３０は、読み出し処理部１４０によって読み出されたデータ１４２を受け取り演算を行う演算部１５０を含む。命令実行部１３０は、演算部１５０の演算結果１５２を受け取り、前記演算結果に対して所与の語長に対応した飽和処理を行う飽和処理部１６０を含む。命令実行部１３０は、飽和処理部１６０の出力したデータ１６２をメモリ２００に接続されたバスに対して出力する書き出し処理部１７０を含む。
【００３４】
メモリ２００は、演算対象のデータ又は演算結果のデータが格納される主記憶装置として機能するもので、ＩＣ１０２の外部に設けられ、バスによってＩＣ１０２と接続される外部メモリとして構成でもよい。
【００３５】
飽和処理部１６０は、前記飽和語長情報１２４によって特定される語長に対応した飽和処理を行う。語長に対応した飽和処理とは、語長に応じて決定される数値の上限と下限にたいして、演算結果がその値を超えた場合は演算値を上限値又は下限値にする処理を意味する。数値の上限と下限は語長（データのサイズとデータの符号の有無）によって決まってくる。飽和処理部１６０は、演算結果が格納される領域の語長または演算結果に対して要求される語長に応じて決定される上限値、下限値に対して、演算結果が大きい場合には演算結果を上限値にする処理、演算結果が小さい場合に演算結果を下限値にする処理を行う。
【００３６】
飽和処理部１６０は、演算部１５０の出力する演算結果１５２に対して、第１の語長に対応した第１の飽和処理及び第１の語長とは異なる語長である第２の語長に対応した第２の飽和処理を含む複数の飽和処理が実行可能に構成されており、演算結果が格納される領域の語長または演算結果に対して要求される語長に応じていずれかの飽和処理を、前記飽和語長情報１２４に応じて選択的に実行出来るように構成してもよい。
【００３７】
飽和情報保持部１２０は、前記飽和情報として、前記飽和処理の有無を特定する飽和有無情１２２を保持し、飽和処理部は、１６０は飽和有無情報１２２が飽和有を示している場合に飽和処理を行うようにしてもよい。飽和処理部１６０は、飽和有無情報１２２が飽和無しを示している場合には前記演算結果に対して飽和処理を行わず外部メモリ又は内部レジスタに出力してもよい。
【００３８】
なお飽和情報保持部１２０は、図７〜図８で説明するように演算制御に関する情報を保持する内部レジスタを用いて実現することも出来るし、図６で説明するようにアドレスレジスタ等の一部（たとえば上位の所定ビットのフィールド）に設けることもできる。
【００３９】
なお図６に示すように前記メモリへのアクセスアドレスを保持する複数のアドレスレジスタを有する場合には、各アドレスレジスタに格納されるアドレスに対応するデータの語長情報を含む属性情報を、各アドレスレジスタに関連づけて保持するアドレスレジスタ属性情報保持部を設け、飽和情報保持部として機能させてもよい。このような場合記飽和処理部１６０は、演算結果のライトアドレスが記憶されている前記アドレスレジスタに関連づけて保持されている属性情報によって特定される語長に対応した飽和処理を行うように構成することができる。
【００４０】
アドレスレジスタ属性情報保持部はアドレスレジスタから対応付け可能な内部レジスタのいずれかの場所に設定されていればよい。たとえばアドレスレジスタ毎に当該アドレスレジスタに対応した属性情報レジスタを設けても良いし、図６に示すようにアドレスレジスタの一部のフィールド３５０を属性情報保持部として使用してもよい。
【００４１】
このようにすれば主記憶にアクセスする語長に対応した飽和処理を、命令コードによって語長指定等を行うことなしに実現することが出来る。
【００４２】
また飽和情報保持部１２０は、図７、図８で説明するように８メモリへアクセスする語長に自動的に飽和させるモードであることを示す自動語長選択モード情報を保持し、飽和処理部１６０は、自動語長選択モード情報が自動語長選択モードであることを示している場合には、演算結果のライトアドレスが記憶されている前記アドレスレジスタに関連づけて保持されている属性情報によって特定される語長に対応した語長で飽和処理を行うようにしてもよい。
【００４３】
このようにすると主記憶にアクセスする語長に自動的に飽和させるモードを設定することができる。
【００４４】
また飽和情報保持部１２０は、図７、図８で説明するように所定の語長に強制的に飽和させるモードであることを示す強制飽和モード情報を保持し、飽和処理部１６０は、強制飽和モード情報が強制飽和モードであることを示している場合には、前記演算結果を書き込むメモリ又はレジスタの語長にかかわらず、所定の語長に対応した飽和処理を行うようにしてもよい。
【００４５】
なお飽和情報保持部は、複数の異なる語長の各語長たいして其れ其れ語長毎に強制飽和モードが設定出来るようにしてもよい。この場合飽和処理部は、前記演算結果を書き込むメモリ又はレジスタの語長にかかわらず、強制飽和モードに対応した語長に飽和する処理を行うようにしてもよい。
【００４６】
飽和情報保持部１２０の飽和情報は、飽和情報設定命令によって設定されるようにしてもよい。たとえば本実施の形態の信号処理プロセッサの命令セットとして飽和情報保持部（たとえば飽和情報設定レジスタ）１２０に飽和情報値を書き込む飽和情報設定命令を用意し、飽和情報設定命令によって飽和情報保持部（たとえば飽和情報設定レジスタ）に飽和有無情報１２２や前記飽和語長情報１２４を設定してもよい。
【００４７】
デコード部１１０は、フェッチ部１８０にフェッチされた命令コードが飽和情報を飽和情報保持部に設定するための飽和情報設定命令であると判断した場合には、命令コードから特定される飽和情報を飽和情報保持部１２０に設定するようにしてもよい。
【００４８】
飽和情報設定命令は、汎用的なレジスタ書き込み命令（飽和情報保持部は内部レジスタのいずれかの場所に設けられている）である場合でもよいし、内部レジスタの飽和情報保持部に飽和情報を設定するための専用命令である場合でもよい。
【００４９】
デコード部１１０は、デコード結果に基づきフェッチレジスタ１８２にフェッチされた命令コードが飽和情報設定命令であると判断した場合には、命令コードから特定される飽和情報を飽和情報保持部１２０に設定するようにしてもよい。
【００５０】
また飽和情報保持部（たとえば飽和情報設定レジスタ）１２０の値は、図示しないホストプロセッサからの飽和情報制御信号２１２によって設定されるようにしてもよい。本実施の形態の信号処理プロセッサ１００は、ホストプロセッサ２１０からの飽和情報制御信号２１２を受信した場合には、飽和情報制御信号２１２に基づき、飽和情報保持部（たとえば飽和情報設定レジスタ）１２０に飽和情報を設定するするホストインターフェース部１９０を含むように構成してもよい。
【００５１】
本発明の信号処理プロセッサは、ホストプロセッサに対するアクセラレータやＤＳＰ（Digital Signal Processor）として使用することもできる。このような場合ホストプロセッサから飽和情報を設定するようにしてもよい。
【００５２】
図２は本実施の形態の信号処理プロセッサの他の構成を示す機能ブロック図である。図１と同様の構成については同じ符号を付しており、説明を省略する。この信号処理プロセッサ１００’は、飽和語長が演算命令コードに含まれている場合の構成を示している。飽和語長が演算命令コードに含まれている場合とは演算命令の命令コードから飽和語長が判別可能な場合であり、たとえば演算命令の命令コードのオペランドに飽和語長を特定する情報が含まれている場合でもよいし、演算命令の命令コードのオペコード自体から飽和語長を特定可能な場合（たとえば書き出す語長によって異なるオペコードが用意されている場合）でもよい。
【００５３】
この信号処理プロセッサ１００’は、飽和情報保持部１２０’は前記飽和処理の有無を特定する飽和有無情報１２２を含む飽和情報を保持すればよく、飽和語長情報は保持しなくても良い。
【００５４】
デコード部１１０’は、主記憶（メモリ２００）や内部レジスタにアクセスする命令をデコードし、アクセスするデータの語長情報に基づき、前記デコード信号として飽和語長特定信号１１６を生成する。デコード部１１０’は、演算命令の命令コードのオペランドやオペコードの種類に基づき、飽和語長を判断し、飽和語長特定信号１１６を生成してもよい。
【００５５】
飽和処理部１６０’は、前記飽和有無情報１２２が飽和有を示している場合には、演算結果１５２に対して飽和語長特定信号１１６によって特定される語長に対応した飽和処理を行う。
【００５６】
飽和処理部１６０’演算部１５０の出力する演算結果１５２に対して、第１の語長に飽和させる第１の語長飽和処理、及び第１の語長とは異なる語長である第２の語長に飽和させる第２の語長飽和処理を、飽和語長特定信号１１６に応じて選択的に実行出来るように構成してもよい。また飽和処理部１６０’は、飽和有無情報１２２が飽和無しを示している場合には、演算結果１５２に対して飽和処理を行わずメモリ（ここでは外部メモリ）２００は又は内部レジスタに出力してもよい。
【００５７】
図３は、本実施の形態の信号処理プロセッサ１００のハードウエア構成の一例を示す図である。
【００５８】
本実施の形態の信号処理プロセッサ１００は、命令フェッチ／デコード回路１０、レジスタファイル２０、演算回路３０、飽和回路４０，Ｘバスリード回路５０、Ｙバス・リード回路６０、Ｚバス・ライト回路７０、ホストＩ／Ｆ回路８０を含む。
【００５９】
レジスタファイル２０は、命令実行に使用するアドレス、データ、制御情報の少なくとも１つを記憶するレジスタ部として機能する。
【００６０】
図６は本実施の形態の信号処理プロセッサ１００のレジスタファイル２０のレジスタ構成の一例について説明する図である。
【００６１】
本実施の形態の信号処理プロセッサ１００は、アドレス・レジスタ３１０、データ・レジスタ３２０、演算制御レジスタ３３０を含む。アドレス・レジスタ３１０は複数のアドレス専用レジスタ（A0〜YR）３２２とデータ兼用レジスタ（DR）３２４を含んでもよい。アドレス専用レジスタ（A0〜YR）３２２は、その一部（上位の所定ビット又は下位の所定ビット）にアドレス属性（long型、short型、char型等）を保持するための所定ビット（ここでは２ビット）のフィールド３５０を設けても良い。この場合実際のアクセスアドレスはフィールド３５０をのぞいたフィールド３５２に記憶される。なおアドレス・レジスタ３１０はデータ兼用レジスタ（DR）３２４を含んでもよい。そしてデータ兼用レジスタ（DR）３２４の一部（上位の所定ビット又は下位の所定ビット）にアドレス属性（long型、short型、char型等）を保持するための所定ビット（ここでは２ビット）のフィールドであるアドレス属性情報保持部３５０を設けても良い。上記例はアドレス属性情報保持部３５０は、アドレスレジスタの一部のフィールドに設けられている例であるが、アドレス属性情報保持部３５０は、前記複数の各アドレスレジスタのフィールドの一部に設けられている構成に限られず、アドレスレジスタと一義的に対応する場所（レジスタファイルのいずれか）に設けられていればよい。
【００６２】
データ・レジスタ３２０はＴＺ、ＸＤＲ、ＹＤＲ、ＺＤＲ、ＡＣＲを含む。ＸＤＲ、ＹＤＲは演算回路の入力となるレジスタであり、ＸＤＲはＸバスを介してメモリから読み出されたデータ又は演算回路の出力値（ＴＺが格納された値）が格納される。ＹＤＲはＹバスを介してメモリから読み出されたデータが格納される。ＴＺは演算回路から出力された演算結果が格納されるレジスタで、ＴＺに格納された値は再び演算回路の入力とすることが出来るように構成してもよい。ＺＤＲはＺバスを介してメモリに書き出されるデータが格納される。ＡＣＲはアキュミュレータである。
【００６３】
演算制御レジスタ３３０は、飽和処理部が行う飽和処理の有無及び飽和語長を決定する値（飽和モード特定情報という）が保持された飽和情報フィールド（ここでは２ビットのフィールド）３３２を含む。飽和情報フィールドは、たとえば、主記憶にアクセスする語長に自動的に飽和させる場合には’００’を設定、語長1への飽和（例えば符号付8bit）させる場合には’０１’を設定、語長２への飽和（例えば符号付き16bit）させる場合には’１０’を設定、語長３への飽和（例えば符号付き32bit）させる場合には’１１’を設定してもよい。
【００６４】
このような構成の場合飽和情報フィールド３３２に’００’に設定が設定される場合には、演算結果を書き出すアドレス情報が設定されたアドレスレジスタ３２２のアドレス属性情報保持部３５０に基づき、飽和語長を決定することが出来る。たとえばアドレス属性としてlong型が指定されていれば語長を符号付き32bitに飽和させてもよい。またアドレス属性としてshort型が指定されていれば語長を符号付き16bitに飽和させてもよい。またアドレス属性としてchar型が指定されていれば語長を符号付８bitに飽和させてもよい。
【００６５】
命令フェッチ／デコード回路１０は、図１のフェッチ部１８０及びデコード部１１０として機能するもので、命令アドレス１１を出力してプログラムメモリ（内部メモリ又は外部メモリ）に記憶されている命令コード１２を受け取り、受け取った命令コードをデコードしてデコード信号１１〜１７を出力する。
【００６６】
演算回路３０は、図１の演算部１５０として機能する回路であり、Ｘデータ（Ｘバスリード回路の出力）５４’、Ｙデータ（Ｙバスリード回路の出力）６４’を受け取り演算結果を出力する。
【００６７】
飽和回路４０は、図１の飽和処理部１６０として機能する回路であり、演算回路３０の出力（演算結果）を受け取り、レジスタファイル２０に記憶された飽和情報（ここでは演算結果の出力先アドレスが格納されたアドレスレジスタの属性情報保持部３５０に保持された属性情報や飽和情報フィールド３３２に格納された飽和モード特定情報）に基づき飽和処理を行う。
【００６８】
Ｘバスリード回路５０は、図１の読み出し部１４０として機能する回路であり、デコード回路から受け取ったデコード信号やレジしたファイルから受け取ったＸリードアドレス（Ｘデータのアドレスと属性情報を含む）を受け取り、Ｘアドレス５１、Ｘデータサイズ５２，Ｘリードリクエスト５３をＸバスに出力し、ＸバスからＸリードデータ５４を受け取り、Ｘデータ５４’を出力する。
【００６９】
Ｙバスリード回路５０は、図１の読み出し部１４０として機能する回路であり、デコード回路から受け取ったデコード信号やレジしたファイルから受け取ったＹリードアドレス（Ｙデータのアドレスと属性情報を含む）を受け取り、Ｙアドレス６１、Ｙデータサイズ６２，Ｙリードリクエスト６３をＹバスに出力し、ＹバスからＹリードデータ６４を受け取り、Ｙデータ６４’を出力する。
【００７０】
Ｚバスライト回路７０は、図１の書き出し部１７０として機能する回路であり、飽和回路４０から受け取った演算結果４２を、デコード信号やレジスタファイル２０からＺライトアドレスアドレス（Ｚデータの書き出し先のアドレスと属性情報を含む）を受け取り、Ｚアドレス７１、Ｚデータサイズ７２，Ｚライトリクエスト７３、Ｚライトデータ６４をＺバスに出力する。
【００７１】
ホストＩ／Ｆ回路８０は、図１のホストＩ／Ｆ部１９０として機能する回路であり、ホストライトデータ８１、ホストアドレス８２を受け取りレジスタファイル２０にデータやアドレスや制御情報を設定する。またレジスタファイル２０からデータを読み出しホストリードデータ８３としてホストに出力する。
【００７２】
ホストＩ／Ｆ回路８０は、たとえばホストから、前記飽和情報制御信号としてアドレスレジスタの属性情報や飽和モード特定情報を受けとり、レジスタファイル２０のアドレスレジスタのアドレス属性情報保持部や飽和情報フィールドに設定するようにしてもよい。
【００７３】
たとえば本実施の形態の信号処理プロセッサ１００は、メモリオペランドとして、入力となるＸソース、Ｙソース、出力となるディスティネーションＺのアドレスレジスタ有するデータ演算命令を命令セットに有している場合、命令フェッチ／デコード回路１０は、上記データ演算命令をデコードすると、Ｘソース、Ｙソース、出力となるディスティネーションＺに対応するアドレスレジスタ（たとえば図６のＡ０アドレスレジスタ３１０のＡ１〜Ａ２）を選択するアドレスレジスタ選択信号１３〜１４をレジスタファイルに対しデコード信号として出力する。
【００７４】
また上記演算命令でＸソース、Ｙソース、出力となるディスティネーションＺにたいしＸアドレス変位値、Ｙアドレス変位値、Ｚアドレス変位値が設定されている場合にはそれらの値を、それぞれＸバスリードユニット、Ｙバスリードユニット、Ｚバスライトユニットに出力する。
【００７５】
図４は、本実施の形態の信号処理プロセッサ１００のパイプラインステージについて説明するための図である。本実施の形態の信号処理プロセッサ１００は、６００に示すように８段のパイプライン構成となっている。
【００７６】
ＩＦ（６０１）はフェッチ部（図３の命令フェッチ／デコード回路１０）が命令フェッチを行うステージであり、ＤＥ（６０２）はデコード部（図３の命令フェッチ／デコード回路１０）が命令デコード、アドレス計算を行うステージであり、ＭＡ（６０３）は読み出し処理部（図３のＸバスリード回路５０、Ｙバスリード回路６０）がＸ−ｂｕｓ、Ｙ−ｂｕｓのメモリ・アクセスを行うステージであり、ＤＲ（６０３）は読み出し処理部（図３のＸバスリード回路５０、Ｙバスリード回路６０）が、Ｘ−ｂｕｓ、Ｙ−ｂｕｓのデータ・リードを行うステージであり、Ｅ１（６０５）は演算部（図３の演算回路３０）が乗算を行うステージであり、Ｅ２（６０６）は演算部（図３の演算回路３０）が加減算やアキュミュレーションを行うステージであり、Ｅ３（６０７）は飽和処理部（図３の飽和回路４０）がシフトや飽和処理を行うステージであり、ＷＢ（６０８）は、書き出し処理部（書き出し回路１７０）がＺ−ｂｕｓライトを行うステージである。
【００７７】
図５は、演算回路３０、飽和回路４０の構成の一例とＥ１ステージ、Ｅ２ステージ、Ｅ３ステージにおけるデータの流れを示す図である。
【００７８】
メモリ２００に格納されたデータや内部レジスタに格納されたデータや即値で与えられたデータに対して算術演算を行い、演算結果をメモリ２００や内部レジスタに書き出すタイプのデータ演算命令（加算、減算、乗算、積和、マイナス積和等の算術演算命令等）の実行する際のデータの流れの一例について説明する。
【００７９】
ＤＲステージ（６０３）おいてＸバス、Ｙバスを介してメモリから読み出されたデータは、それぞれデータレジスタＸＤＲ、ＹＤＲに格納されている。
【００８０】
Ｅ１ステージにおいては、Ｘ入力セレクタ７１０はレジスタＸＤＲ、ＺＤＲ、ＴＺの値を入力し、いずれかの値を乗算器７１４に入力されるデータ（Ｘデータ）として選択して出力するとともに、レジスタ７１８にも出力する。またＹ入力セレクタ７１２はレジスタＹＤＲ、ＸＤＲの値を入力し、いずれかの値を乗算器７１４に入力されるデータ（Ｙデータ）として選択して出力する。乗算器７１４はＸ入力セレクタ７１０及びＹ入力セレクタ７１０の出力を受け取り乗算結果を出力する。加算機入力セレクタＡ（７１６）は、乗算器７１４の出力、Ｙ入力セレクタ７１２を受け取りいずれかの値をレジスタ７２０に出力する。
【００８１】
Ｅ２ステージにおいては、加算機入力セレクタＢ（７２２）はレジスタ７１８のデータ、所定の制御データ７４０、レジスタＴＺのデータを受け取りずれかの値を加算機７２４に出力する。加算機７２４は加算機入力セレクタＢ（７２２）の出力、レジスタ７２０の値を受け取り加算結果をレジスタＡＣＲに出力する。
【００８２】
Ｅ３ステージにおいては、シフト回路７２８はレジスタＡＣＲのデータを受け取り所定の制御情報７３０に従ってシフト処理を行う。飽和回路７３２は、シフト回路７２８の出力を受け取り、演算制御レジスタ３３０の飽和情報フィールド３３２に設定されている飽和モード特定情報に基づき決定される語長への飽和処理を行い、飽和処理結果をレジスタＤＺＲ、ＴＺに格納する。レジスタＤＺＲに格納されたデータは、書き出し処理部（書き出し回路１７０）がＺ−ｂｕｓライトが行われメモリに格納される。レジスタＴＺに格納されたデータは、Ｘ入力セレクタ７１０の入力となる。
【００８３】
ここで飽和モード特定情報（演算制御レジスタ３３０の飽和情報フィールド３３２に設定されている値）が、’０１’である場合には語長1への飽和（例えば符号付8bit）させ、’１０’である場合には語長２への飽和（例えば符号付き16bit）させ、’１１’である場合には語長３への飽和（例えば符号付き32bit）させる処理をおこなってもよい。また飽和モード特定情報（演算制御レジスタ３３０の飽和情報フィールド３３２に設定されている値）が’００’である場合には、主記憶にアクセスする語長に自動的に飽和させる処理を行うために、図示しないＺアドレス（主記憶への書き出し先アドレス）が格納されているアドレスレジスタの上位２ビット（属性情報保持部）の値を受けとり、属性情報としてlong型が指定されていれば語長を符号付き32bitに飽和させ、属性情報としてshort型が指定されていれば語長を符号付き16bitに飽和させ、属性情報としてchar型が指定されていれば語長を符号付き８ビットに飽和させる処理を行っても良い。
【００８４】
図７は、本実施の形態における飽和情報の設定例について説明するための図である。
【００８５】
本実施の形態の飽和情報は、たとえば丸め処理の有無を示すビット（Ｒ）、飽和処理の有無を示すビット（Ｓ）、語長１への飽和を指示するビット（１）、語長２への飽和を指示するビット（２）、語長３への飽和を指示するビット（３）、書き込み語長への飽和を指示するビット（４）で構成し、それらをそれぞれレジスタＲ（８１０）、レジスタＳ（８１２）、レジスタ１（８１４）、レジスタ２（８１６）、レジスタ３（８１８）、レジスタ４（８２０）に格納するようにしてもよい。
【００８６】
レジスタＲ（８１０）、レジスタＳ（８１２）、レジスタ１（８１４）、レジスタ２（８１６）、レジスタ３（８１８）、レジスタ４（８２０）はレジスタファイルの演算制御レジスタの一部に設けても良い。以下、これらのレジスタを飽和モードレジスタとよぶ。
【００８７】
次に図８、図９を用いて本実施の形態の飽和処理例について説明する。
【００８８】
前提条件として、演算回路３０の出力は符号付の４０ビットとし、語長１は３２ビット，語長２は１６ビット、語長３は８ビットとする。また飽和処理の有無にかかわらず、書き込みの最大語長は語長１（３２ビット）とする。
【００８９】
飽和モードレジスタによって特定される飽和処理の形態は５通りあり、モード１からモード５とする。
【００９０】
モード１は、丸め処理無し、飽和無し（この場合飽和レジスタ１〜４の設定は無視される。）の飽和処理を行うモードである。モード２は、丸め処理無し、語長１での飽和処理を行うモードである。モード３は、丸め処理無し、語長２での飽和処理を行うモードである。モード４は、丸め処理無し、語長３での飽和処理を行うモードである。モード５は丸め処理無し、書き込み語長での飽和処理行うモードである。
【００９１】
８３０は飽和モードレジスタＲ、Ｓ、１〜４に設定されている値と各モードとの対応関係を示す図である。
【００９２】
図９は、演算回路の出力値と飽和結果について説明するための図である。
【００９３】
モード１の場合演算回路出力（符号付の４０ビット）の下位から最大語長（３２ビット）を符号拡張して出力する（符号ビットを３２ビットにして、３１ビットをセットする）。
【００９４】
モード２の場合、演算回路出力を符号付３２ビットに飽和処理する。たとえば演算回路出力Ａの場合（４０ビットとして８４２のデータ出力された場合）、符号付３２ビットの最大値である値（８５２）に飽和させる。また演算回路出力Ｂの場合（４０ビットとして８４４のデータ出力された場合）、符号付３２ビットの最小値である値（８５４）に飽和させる。また演算回路出力Ｃの場合（４０ビットとして８４６のデータ出力された場合）、そのまま出力する。
【００９５】
モード３の場合、演算回路出力を符号付１６ビットに飽和処理する。たとえば演算回路出力Ａの場合（４０ビットとして８４２のデータ出力された場合）、符号付１６ビットの最大値である値（８６２）に飽和させる。また演算回路出力Ｂの場合（４０ビットとして８４４のデータ出力された場合）、符号付１６ビットの最小値である値（８６４）に飽和させる。また演算回路出力Ｃの場合（４０ビットとして８４６のデータ出力された場合）、そのまま出力する。
【００９６】
モード４の場合、演算回路出力を符号付８ビットに飽和処理する。たとえば演算回路出力Ａの場合（４０ビットとして８４２のデータ出力された場合）、符号付８ビットの最大値である値（８７２）に飽和させる。また演算回路出力Ｂの場合（４０ビットとして８４４のデータ出力された場合）、符号付８ビットの最小値である値（８７４）に飽和させる。また演算回路出力Ｃの場合（４０ビットとして８４６のデータ出力された場合）、符号付８ビットの最大値である値（８７６）に飽和させる。
【００９７】
次にモード５の時の各書き込み語長に対する飽和処理例について説明する。以下の書き込み語長はたとえばライトアドレスが格納されたレジスタに対応して設定されている属性情報の値によって決定することが出来る。
【００９８】
属性情報が書き込み語長１（符号付３２ビット）である場合、演算回路出力を符号付３２ビットに飽和処理する。たとえば演算回路出力Ａの場合（４０ビットとして８４２のデータ出力された場合）、符号付３２ビットの最大値である値（８５２）に飽和させる。また演算回路出力Ｂの場合（４０ビットとして８４４のデータ出力された場合）、符号付３２ビットの最小値である値（８５４）に飽和させる。また演算回路出力Ｃの場合（４０ビットとして８４６のデータ出力された場合）、そのまま出力する。
【００９９】
属性情報が書き込み語長２（符号付１６ビット）である場合、演算回路出力を符号付１６ビットに飽和処理する。たとえば演算回路出力Ａの場合（４０ビットとして８４２のデータ出力された場合）、符号付１６ビットの最大値である値（８６２）に飽和させる。また演算回路出力Ｂの場合（４０ビットとして８４４のデータ出力された場合）、符号付１６ビットの最小値である値（８６４）に飽和させる。また演算回路出力Ｃの場合（４０ビットとして８４６のデータ出力された場合）、そのまま出力する。
【０１００】
属性情報が書き込み語長３（符号付８ビット）である場合、演算回路出力を符号付８ビットに飽和処理する。たとえば演算回路出力Ａの場合（４０ビットとして８４２のデータ出力された場合）、符号付８ビットの最大値である値（８７２）に飽和させる。また演算回路出力Ｂの場合（４０ビットとして８４４のデータ出力された場合）、符号付８ビットの最小値である値（８７４）に飽和させる。また演算回路出力Ｃの場合（４０ビットとして８４６のデータ出力された場合）、符号付８ビットの最大値である値（８７６）に飽和させる。
【０１０１】
飽和処理は書き出し先のメモリ又はレジスタの語長に飽和させるのが一般的であるが、本実施の形態によれば前記演算結果を書き込むメモリ又はレジスタの語長にかかわらず強制的に所定の語長対応した飽和処理を行うことが出来る。従ってたとえば書き出し先の語長が符号付きの３２ビットでも符号付きの１６ビットや符号付きの８ビット対応した飽和処理を行うことが出来る。
【０１０２】
本発明は、上述の実施の形態に限定されるものではなく、種々の変形が可能である。本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【図面の簡単な説明】
【０１０３】
【図１】本実施の形態の信号処理プロセッサの構成を示す機能ブロック図。
【図２】本実施の形態の信号処理プロセッサの他の構成を示す機能ブロック図。
【図３】本実施の形態の信号処理プロセッサのハードウエア構成の一例を示す図。
【図４】本実施の形態の信号処理プロセッサのパイプラインステージについて説明するための図。
【図５】演算回路、飽和回路の構成の一例とデータの流れを示す図。
【図６】本実施の形態の信号処理プロセッサのレジスタ構成の一例について説明する図。
【図７】本実施の形態における飽和情報の設定例について説明するための図。
【図８】本実施の形態の飽和処理例について説明する図。
【図９】本実施の形態の飽和処理例について説明する図。
【符号の説明】
【０１０４】
１００  信号処理プロセッサ、１０２  半導体装置（ＩＣ）、１１０  デコード部、１１２、１１４  デコード信号、１２０  飽和情報保持部、１２２  飽和有無情報、１２４  飽和語長情報、１３０  命令実行部、１４０  読み出し回路、１４０  飽和処理部、１７０  書き出し回路、１８０  フェッチ部、１８２  フェッチレジスタ、１９０  ホストＩ／Ｆ部、２００  メモリ、２１０  ホストプロセッサ、３１０  アドレスレジスタ、３５０  アドレス属性情報保持部、３３０  演算制御レジスタ、３３２  飽和情報フィールド
【図１】
2010020625.tif 000003
【図２】
2010020625.tif 000004
【図３】
2010020625.tif 000005
【図４】
2010020625.tif 000006
【図５】
2010020625.tif 000007
【図６】
2010020625.tif 000008
【図７】
2010020625.tif 000009
【図８】
2010020625.tif 000010
【図９】
2010020625.tif 000011