(57)【特許請求の範囲】
【請求項１】
プログラムを実行中の命令の位置を示すプログラムカウンタと、
前記プログラムを命令の列として格納するプログラムメモリと、
前記プログラムメモリから読み出された前記プログラムカウンタが示す位置の命令を解釈するデコーダと、
前記プログラム実行中で使用される演算数、被演算数及び変数を格納する複数の可変レジスタと、
定数データを格納する複数の定数レジスタと、
前記複数の可変レジスタの代わりに前記複数の定数レジスタを参照するか否かを選択する選択情報を格納する選択情報格納部と、
前記選択情報がある場合に前記複数の定数レジスタを選択し前記選択情報がない場合に前記複数の可変レジスタを選択することにより被演算数を出力する選択部と、
前記デコーダで解釈されたデコード結果に基づき前記複数の可変レジスタからの演算数と前記選択部からの被演算数とを用いて演算を行う演算ユニットと、
を備えることを特徴とする演算処理装置。
【請求項２】
前記複数の可変レジスタは、第１の複数の可変レジスタと第２の複数の可変レジスタからなり、前記第１の複数の可変レジスタ及び前記第２の複数の可変レジスタのそれぞれは、前記複数の定数レジスタと同数からなり、
前記選択情報は、前記第１の複数の可変レジスタ又は前記第２の複数の可変レジスタを選択する第１選択情報と、選択された複数の可変レジスタの代わりに前記複数の定数レジスタを参照するか否かを選択する第２選択情報とを有することを特徴とする請求項１記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置の技術に関し、特に、デジタル制御電源向けマイクロコンピュータに内蔵するデジタル・シグナル・プロセッサ（ＤＳＰ：Digital Signal Processor）などの演算処理装置に関する。
【背景技術】
【０００２】
図４は、従来の演算処理装置のプロセッサの構成を示す図である。図４に示すデジタル・シグナル・プロセッサＤＳＰ０において、コントロールユニットＣＵは、プロセッサ全体の動作制御を行う。コントロールレジスタＣＲは、プロセッサの動作を制御するためのレジスタ群からなり、プログラムを実行中の命令の位置を示すプログラムカウンタ（ＰＣ）等を有する。プログラムメモリＰＭは、プログラムを命令の列として格納するもので、プログラムを１６ビット×３２ワード（最大１２８ワード）で格納する。
【０００３】
レジスタファイルＲＦは、１６本の１６ビット汎用レジスタＲ０−Ｒ１５から構成され、プログラム実行中で使用する変数や定数データを格納する。
【０００４】
演算器群ＥＵは、除算器ＤＩＶ、乗算器ＭＵＬ、演算ユニットＡＬＵ、アキュムレータＡＣＣ、バレルシフタＳＦＴを有する。除算器ＤＩＶは、レジスタファイルＲＦのＲｎ，Ｒｍのデータを読み出し、Ｒｎ（１６ビット精度）／Ｒｍ（１６ビット精度）→１６ビット精度×（１／１６ビット精度）→１６ビット精度×１６ビット精度→３２ビット精度という演算を行う。
【０００５】
乗算器ＭＵＬは、レジスタファイルＲＦのＲｎ，Ｒｍのデータを読み出し、１６ビット×１６ビット→３２ビットの乗算を行う。演算ユニットＡＬＵは、３６ビット＋３６ビット→３６ビットの加算演算を行う。アキュムレータＡＣＣは、１本の３６ビット長からなり、除算器ＤＩＶ、乗算器ＭＵＬ、演算ユニットＡＬＵの演算結果を一時保存するレジスタからなる。バレルシフタＳＦＴは、０〜１５ビットからなり、アキュムレータＡＣＣからのデータを右シフトさせてシフト結果をレジスタファイルＲＦの指定したレジスタへ格納する。
【０００６】
このように構成されたプロセッサは、以下の手順で命令（プログラム）を実行する。
【０００７】
まず、プログラムカウンタＰＣは、プログラムメモリアドレスを示し、そのアドレスに格納されている命令をフェッチ（読み込む）する（ステップＳ１）。次に、フェッチした命令をデコード（解釈）する（ステップＳ２）。
【０００８】
次に、デコード結果からそれに対応した演算を行う（ステップＳ３）。次に、プログラムカウンタＰＣを更新する（ステップＳ４）。即ち、ジャンプ命令の場合には、命令中のnextPC,それ以外はカウント値に１を加算する。以上のステップＳ1〜Ｓ４を繰り返す。
【０００９】
図５は、従来の演算処理装置のプロセッサが持つ命令セットを示す図である。図５において、命令コード表には、命令フォーマット（Instruction Format）、命令種別（Instruction）、動作内容（Operation）、実行サイクル（Exec.Cycle）の情報が記録されている。命令形式には、最上位ビットＭＳＢ（ビット１５）から最下位ビット（ビット０）までの１６ビットに、命令停止フラグ（ＴＲＩＧ＿ＷＡＩＴ）、ビット・フィールド（ＴＲＩＧ＿ＷＨＡＴ）、イベント・ビット（ＥＶＥＮＴ）、オペレーションコード（ＯＰＣＯＤＥ）、命令フィールドＡ（ＦＩＥＬＤＡ）、命令フィールドＢ（ＦＩＥＬＤＢ）の情報がある。
【００１０】
命令長は１６ビット固定である。オペレーションコード（ＯＰＣＯＤＥ）は３ビット固定である。Ｒｍ／Ｒｎは１６ビットレジスタ指定フィールドであり、ｍ，ｎ=０〜１５である。
【００１１】
ここで、プロセッサの問題点を述べるにあたり、プロセッサの構成及び命令セットの特徴を述べる。プロセッサは、乗算、除算器を搭載する、いわゆるＤＳＰに分類される。命令長は１６ビット固定である。演算対象は被演算数及び演算数としてレジスタに格納されているデータのみである。
【００１２】
上記構成のプロセッサにおいては、演算（ＭＵＬ，ＭＡＣ，ＤＩＶ）を行う際のオペランドは、レジスタＲｎ／Ｒｍのみであり、演算対象に直接、データ値を参照できない。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１３−２５５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記プロセッサのターゲットアプリケーションでは、１、−１などの定数を用いた演算が必要な場合が多々ある。上記プロセッサでは、定数データはレジスタＲ０〜Ｒ１５に割り当てる必要がある。定数データが多くなると、変数として使用可能なレジスタが減ってしまう。
【００１５】
このような構成のプロセッサにおいては、データ格納領域が不足する傾向にある。定数データを、変数として使用可能な複数のレジスタＲ０〜Ｒ１５に割り当ててしまうのは非効率的である。定数データと変数との演算は、このプロセッサのターゲットアプリケーションでは頻繁に行われる演算であり、変数として使用可能な複数のレジスタへの定数データの格納を減らすことが望まれていた。
【００１６】
本発明の課題は、変数として使用可能な複数のレジスタへの定数データの格納を減らすことで複数のレジスタを他の演算に使用可能とする演算処理装置を提供することにある。
【課題を解決するための手段】
【００１７】
本発明に係る演算処理装置は、プログラムを実行中の命令の位置を示すプログラムカウンタと、前記プログラムを命令の列として格納するプログラムメモリと、前記プログラムメモリから読み出された前記プログラムカウンタが示す位置の命令を解釈するデコーダと、前記プログラム実行中で使用される演算数、被演算数及び変数を格納する複数の可変レジスタと、定数データを格納する複数の定数レジスタと、前記複数の可変レジスタの代わりに前記複数の定数レジスタを参照するか否かを選択する選択情報を格納する選択情報格納部と、前記選択情報がある場合に前記複数の定数レジスタを選択し前記選択情報がない場合に前記複数の可変レジスタを選択することにより被演算数を出力する選択部と、前記デコーダで解釈されたデコード結果に基づき前記複数の可変レジスタからの演算数と前記選択部からの被演算数とを用いて演算を行う演算ユニットとを備えることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、複数の可変レジスタの代わりに複数の定数レジスタを参照するか否かを選択する選択情報がある場合に、選択部は、複数の定数レジスタを選択することにより被演算数を出力するので、演算ユニットは、複数のレジスタからの演算数と選択部からの被演算数とを用いて演算を行うことができる。
【００１９】
従って、変数として使用可能な複数のレジスタへの定数データの格納を減らすことで複数のレジスタを他の演算に使用できる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施例に係る演算処理装置の定数レジスタ参照方式の全体構成を示す図である。
【図２】本発明の実施例に係る演算処理装置の定数レジスタ参照方式の実施例の第１選択処理を示す図である。
【図３】本発明の実施例に係る演算処理装置の定数レジスタ参照方式の実施例の第２選択処理を示す図である。
【図４】従来の演算処理装置のプロセッサの構成を示す図である。
【図５】従来の演算処理装置のプロセッサが持つ命令セットを示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、従来の演算処理装置と同一構成には、従来技術で使用した符号と同じ符号を付しその説明は省略する。
【実施例】
【００２２】
まず、本発明の演算処理装置の概念について説明する。本発明の演算処理装置は、新たに定数データ専用レジスタＣｎ（例えば、ｎ＝０〜７）を設ける。以下、定数データ専用レジスタＣｎを定数レジスタＣｎと略称する。
【００２３】
定数レジスタＣｎを各命令のオペランドとして指定するには、各命令のフィールドＡ及びフィールドＢ（図５に示すＦＩＥＬＤＡ，ＦＩＥＬＤＢ）で指定する必要がある。
【００２４】
しかし、フィールドＡ及びフィールドＢは４ビットであるが、可変レジスタＲ０〜Ｒ１５の指定に４ビットコードを使いきっている。このため、このままでは定数レジスタＣｎを各命令のフィールドＡ及びフィールドＢで指定することができない。このため、例えば、命令長を長くしてフィールドＡ及びフィールドＢを拡張すれば定数レジスタＣｎを指定可能である。
【００２５】
しかし、命令長を長くすると、１命令当たりに必要なビット幅が大きくなり、プログラムメモリサイズが大きくなる。さらに、以前作成したプログラムとの互換性も失われる。そこで、実施例は、フィールドＡ及びフィールドＢを拡張することなく、定数レジスタＣｎをオペランドとして参照できる方法を提案する。
【００２６】
まず、定数が必要とされる演算（ＤＩＶ、ＭＵＬ、ＭＡＣ）を整理する。
１）ＤＩＶ  Ｒｍ，Ｒｎ  （ＡＣＣ＝Ｒｎ／Ｒｍ）の場合
Ｒｍ＝定数，Ｒｎ＝定数の場合には、Ｒｎ／Ｒｍの結果自体を定数として持てば演算は必要ない。Ｒｍ＝定数，Ｒｎ＝変数の場合には、Ｒｍの逆数を定数として持てば乗算に置き換えることができる。Ｒｍ＝変数，Ｒｎ＝変数の場合には、演算は必要である。
２）ＭＵＬ，Ｒｍ，Ｒｎ  （ＡＣＣ＝Ｒｍ×Ｒｎ）及びＭＡＣ  Ｒｍ，Ｒｎ（ＡＣＣ＋＝Ｒｍ×Ｒｎ）の場合
Ｒｍ＝定数，Ｒｎ＝定数の場合には、Ｒｎ／Ｒｍの結果自体を定数として持てば演算は必要ない。Ｒｍ＝定数，Ｒｎ＝変数又はＲｍ＝変数，Ｒｎ＝定数の場合には、演算は必要である。
【００２７】
ＭＵＬ及びＭＡＣの場合、２つのオペランドＲｍ及びＲｎのどちらか一方が定数であれば良いことと、ＤＩＶの場合、被除数に相当するＲｎ側が定数を参照できれば良いことから、Ｒｎに定数レジスタＣｎを参照できる構成を設ける。ＭＡＣ及びＭＵＬも同様である。
【００２８】
以下、オペランドＲｎに定数レジスタＣｎを参照できる構成を説明する。図１は、本発明の実施例に係る演算処理装置の定数レジスタ参照方式の全体構成を示す図である。
【００２９】
図１に示す演算処理装置は、フェッチユニット１０、デコーダ２０、演算ユニット３０、マッピング情報部４０、可変レジスタファイルＶＲＦ、定数レジスタファイルＣＲＦ、セレクタＳＬ、プログラムメモリＰＭを有している。可変レジスタファイルＶＲＦは、１６本の１６ビット可変レジスタＲ０〜Ｒ１５から構成されており、プログラム実行中で使用される被演算数、演算数及び変数を格納する。
【００３０】
定数レジスタファイルＣＲＦは、定数データを格納する複数の定数レジスタＣ０〜Ｃ７からなる。
【００３１】
プログラムメモリＰＭは、プログラム（演算処理シーケンス）を命令の列として格納する。フェッチユニット１０は、プログラムを実行中の命令の位置を示すプログラムカウンタＰＣを有し、プログラムメモリＰＭからプログラムカウンタＰＣが示す位置の命令をフェッチしてデコーダ２０に出力する。
【００３２】
デコーダ２０は、フェッチユニット１０からの命令を解釈して演算ユニット３０に出力する。演算ユニット３０は、除算器ＤＩＶ、乗算器ＭＵＬを有するとともに、図示しないが演算ユニットＡＬＵ、アキュムレータＡＣＣ、バレルシフタＳＦＴを有する。
【００３３】
演算ユニット３０は、デコーダ２０で解釈されたデコード結果に基づき複数の可変レジスタＲ０〜Ｒ１５からの演算数とセレクタＳＬから出力されてくる定数レジスタＣ０〜Ｃ７からの被演算数又は複数の可変レジスタＲ０〜Ｒ１５からの被演算数とを用いて除算、乗算などの演算を行う。
【００３４】
マッピング情報部４０（本発明の選択情報格納部に対応）は、複数の可変レジスタＲ0〜Ｒ１５の代わりに複数の定数レジスタＣ０〜Ｃ７を参照するか否かを選択するマッピング情報（本発明の選択情報に対応）を格納する。
【００３５】
マッピング情報としては、複数の可変レジスタＲ0〜Ｒ１５の代わりに複数の定数レジスタＣ０〜Ｃ７を参照する場合には、複数の可変レジスタＲ0〜Ｒ１５と複数の定数レジスタＣ０〜Ｃ７とを対応付けした情報が格納されている。複数の可変レジスタＲ0〜Ｒ１５の代わりに複数の定数レジスタＣ０〜Ｃ７を参照しない場合には、マッピング情報はない。
【００３６】
セレクタＳＬは、各命令のオペランドフィールド情報とマッピング情報部４０からのマッピング情報に基づき、定数レジスタＣ０〜Ｃ７又は可変レジスタＲ0〜Ｒ１５を選択することにより被演算数をＲｎとして乗算器ＭＵＬ及び除算器ＤＩＶに出力する。セレクタＳＬは、マッピング情報がある場合に複数の定数レジスタＲ０〜Ｒ７を選択して、マッピング情報がない場合に複数の可変レジスタＲ０〜Ｒ１５を選択する。
【００３７】
このように構成された実施例の演算処理装置によれば、除算器ＤＩＶ、乗算器ＭＵＬ及びＭＡＣ命令のオペランドフィールドＡ（図５に示す）により可変レジスタＲ０〜Ｒ１５が選択されて、可変レジスタＲ０〜Ｒ１５からの演算数がＲｍとして乗算器ＭＵＬ及び除算器ＤＩＶへ入力される。
【００３８】
また、命令のオペランドフィールドＢとマッピング情報部４０からのマッピング情報に基づき、セレクタＳＬは、可変レジスタＲ０〜Ｒ１５又は定数レジスタＣ０〜Ｃ７を選択して、選択されたレジスタからの被演算数をＲｎとして乗算器ＭＵＬ及び除算器ＤＩＶへ出力する。
【００３９】
例えば、図５に示すフィールドＢ＝Ｒ０、マッピング情報がＣ０→Ｒ０（Ｒ０の代わりにＣ０を参照）とした場合、Ｒ０はＣ０となる。マッピング情報がないレジスタは、Ｒｍと同様に、フィールドＢに従って、可変レジスタＲ０〜Ｒ１５が選択される。マッピング情報がないレジスタは、変数と変数との演算が可能となる。マッピング情報があるレジスタも、Ｒｍ側である場合、変数（Ｒ０〜Ｒ１５）として参照可能である。
【００４０】
次に、より具体的な実施例について説明する。図２は、本発明の実施例に係る演算処理装置の定数レジスタ参照方式の実施例の第１選択処理を示す図である。図３は、本発明の実施例に係る演算処理装置の定数レジスタ参照方式の実施例の第２選択処理を示す図である。
【００４１】
図２及び図３に示す演算処理装置は、セレクタＳＬ１，ＳＬ２、可変レジスタファイルＶＲＦ、定数レジスタファイルＣＲＦを有している。可変レジスタＲ０〜Ｒ１５の一方の出力端子（セレクト情報Ｓ〔０〕〜Ｓ〔７〕＝０側）は、セレクタＳＬ１に接続され、セレクタＳＬ１の出力は、Ｒｍとして乗算器ＭＵＬ等に出力される。
【００４２】
可変レジスタＲ０〜Ｒ１５の他方の出力端子は、セレクタＳＬ２に接続され、セレクタＳＬ２の出力は、Ｒｎとして乗算器ＭＵＬ等に出力される。
【００４３】
複数の可変レジスタＲ０〜Ｒ１５は、第１の複数の可変レジスタＲ０〜Ｒ７と第２の複数の可変レジスタＲ８〜Ｒ１５からなり、第１の複数の可変レジスタＲ０〜Ｒ７及び第２の複数の可変レジスタＲ８〜Ｒ１５のそれぞれは、複数の定数レジスタＣ０〜Ｃ７と同数からなる。
【００４４】
定数レジスタＣ０〜Ｃ７は、可変レジスタＲ０〜Ｒ１５へマッピングが行われる。マッピング情報として、第１の複数の可変レジスタＲ０〜Ｒ７又は第２の複数の可変レジスタＲ８〜Ｒ１５を選択するためのコントロールセレクト情報（本発明の第１選択情報に対応）ＣＮＴＳＥＬと、コントロールセレクト情報ＣＮＴＳＥＬにより選択された複数の可変レジスタの代わりに複数の定数レジスタを参照するか否かを選択するためのセレクト情報Ｓ〔０〕〜Ｓ〔７〕（本発明の第２選択情報に対応）とが設けられている。
【００４５】
コントロールセレクト情報とセレクト情報Ｓ〔０〕〜Ｓ〔７〕は、プロセッサのプログラムと同様に、そのプログラムに最適な設定がプロセッサを搭載する上位システムによって与えられている。
【００４６】
コントロールセレクト情報ＣＮＴＳＥＬが“０”のときには、図２に示すように、定数レジスタＣ０は可変レジスタＲ８、Ｃ１はＲ９、Ｃ２はＲ１０、Ｃ３はＲ１１、Ｃ４はＲ１２、Ｃ５はＲ１３、Ｃ６はＲ１４、Ｃ７はＲ１５にマッピングされる。
【００４７】
さらに、セレクト情報Ｓ〔０〕〜Ｓ〔７〕は、定数レジスタＣ０〜Ｃ７に対応して設けられ、可変レジスタＲ８〜Ｒ１５の代わりに定数レジスタＣ０〜Ｃ７を参照するか否かを選択する。Ｓ〔０〕＝１の場合に可変レジスタＲ８の代わりに定数レジスタＣ０が参照される。Ｓ〔７〕＝１の場合に可変レジスタＲ１５の代わりに定数レジスタＣ７が参照される。
【００４８】
なお、Ｓ〔０〕＝０の場合には、可変レジスタＲ８の定数レジスタＣ０への置き換えは行われない。Ｓ〔１〕〜Ｓ〔７〕＝１の場合には、Ｓ〔０〕＝１の場合と同様に、可変レジスタＲ９〜Ｒ１５の代わりに定数レジスタＣ１〜Ｃ７が参照される。
【００４９】
コントロールセレクト情報ＣＮＴＳＥＬが“１”のときには、図３に示すように、定数レジスタＣ０は可変レジスタＲ０、Ｃ１はＲ１、Ｃ２はＲ２、Ｃ３はＲ３、Ｃ４はＲ４、Ｃ５はＲ５、Ｃ６はＲ６、Ｃ７はＲ７にマッピングされる。
【００５０】
セレクト情報Ｓ〔０〕〜Ｓ〔７〕は、可変レジスタＲ０〜Ｒ７の代わりに定数レジスタＣ０〜Ｃ７を参照するか否かを選択する。Ｓ〔０〕＝１の場合に可変レジスタＲ０の代わりに定数レジスタＣ０が参照される。Ｓ〔７〕＝１の場合に可変レジスタＲ７の代わりに定数レジスタＣ７が参照される。
【００５１】
なお、Ｓ〔０〕＝０の場合には、可変レジスタＲ０の定数レジスタＣ０への置き換えは行われない。Ｓ〔１〕〜Ｓ〔７〕＝１の場合には、Ｓ〔０〕＝１の場合と同様に、可変レジスタＲ１〜Ｒ７の代わりに定数レジスタＣ１〜Ｃ７が参照される。
【００５２】
このように本発明の実施例に係る演算処理装置によれば、複数の可変レジスタＲ０〜Ｒ１５の代わりに複数の定数レジスタＣ０〜Ｃ７を参照するか否かを選択するマッピング情報がある場合に、セレクタＳＬは、複数の定数レジスタＣ０〜Ｃ７を選択することにより被演算数を出力するので、演算ユニット３０は、複数の可変レジスタＲ０〜Ｒ１５からの演算数とセレクタＳＬからの被演算数とを用いて演算を行うことができる。
【００５３】
従って、変数として使用可能な複数の可変レジスタＶＲＦへの定数データの格納を減らすことで複数の可変レジスタＶＲＦを他の演算に使用できる。
【符号の説明】
【００５４】
ＰＭ  プログラムメモリ
ＰＣ  プログラムカウンタ
ＶＲＦ  可変レジスタファイル
ＣＲＦ  定数レジスタファイル
Ｒ０〜Ｒ１５  可変レジスタ
Ｃ０〜Ｃ７  定数レジスタ
ＤＳＰ０  デジタル・シグナル・プロセッサ
ＣＵ  コントロールユニット
ＣＲ  コントロールレジスタ
ＥＵ  演算器群ＥＵ
ＤＩＶ  除算器
ＭＵＬ  乗算器
ＡＬＵ  演算ユニット
ＡＣＣ  アキュムレータ
ＳＦＴ  バレルシフタ
１０  フェッチユニット
２０  デコーダ
３０  演算ユニット
４０  マッピング情報部
ＳＬ，ＳＬ１，ＳＬ２  セレクタ
【図１】
0006484957.tif 000002
【図２】
0006484957.tif 000003
【図３】
0006484957.tif 000004
【図４】
0006484957.tif 000005
【図５】
0006484957.tif 000006