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