(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6372250
(24)【登録日】2018年7月27日
(45)【発行日】2018年8月15日
(54)【発明の名称】演算処理装置
(51)【国際特許分類】
G06F 9/312 20060101AFI20180806BHJP
G06F 9/302 20060101ALI20180806BHJP
【FI】
G06F9/312 L
G06F9/302 F
【請求項の数】3
【全頁数】9
(21)【出願番号】特願2014-170322(P2014-170322)
(22)【出願日】2014年8月25日
(65)【公開番号】特開2016-45759(P2016-45759A)
(43)【公開日】2016年4月4日
【審査請求日】2017年6月5日
(73)【特許権者】
【識別番号】000106276
【氏名又は名称】サンケン電気株式会社
(74)【代理人】
【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和
(74)【代理人】
【識別番号】100100712
【弁理士】
【氏名又は名称】岩▲崎▼ 幸邦
(74)【代理人】
【識別番号】100101247
【弁理士】
【氏名又は名称】高橋 俊一
(74)【代理人】
【識別番号】100095500
【弁理士】
【氏名又は名称】伊藤 正和
(74)【代理人】
【識別番号】100098327
【弁理士】
【氏名又は名称】高松 俊雄
(72)【発明者】
【氏名】美馬 和大
(72)【発明者】
【氏名】雪山 裕貴
(72)【発明者】
【氏名】山崎 尊永
【審査官】
清木 泰
(56)【参考文献】
【文献】
米国特許第07269710(US,B1)
【文献】
米国特許出願公開第2014/0013084(US,A1)
【文献】
国際公開第2010/029794(WO,A1)
【文献】
米国特許出願公開第2013/0205123(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30− 9/355
G06F 9/38
G06F15/16−15/177
G06F17/10−17/18
G06F15/78
G06F 8/00− 8/77
G06F 9/44− 9/445
G06F 9/451
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
実行中のプログラムにおける命令の位置を示すプログラムカウンタと、
前記プログラムを命令の列として格納するプログラムメモリと、
前記プログラム実行中で使用される被演算数、演算数及び変数を格納する複数のレジスタと、
前記プログラムメモリから読み出された前記プログラムカウンタが示す位置の命令を解釈するデコーダと、
前記デコーダで解釈されたデコード結果に基づき前記複数のレジスタからの被演算数、演算数を用いて演算を行う演算ユニットと、
アドレスに対応付けて定数データを格納するデータメモリと、
前記定数データが格納されているアドレスを示すロードデータアドレスポインタを有し、前記デコーダからのロード命令のオペランドで指定するアドレスに対応する定数データを前記データメモリからロードして前記複数のレジスタの内の特定のレジスタに格納させ、前記ロードデータアドレスポインタのアドレスを更新するロードユニットと、
を備えることを特徴とする演算処理装置。
【請求項2】
前記ロードユニットは、前記特定のレジスタが演算命令により参照されたとき、前記ロードアドレスポインタが示すアドレスに対応する定数データを前記データメモリからロードして前記特定のレジスタに格納させ、前記ロードデータアドレスポインタのアドレスを更新することを特徴とする請求項1記載の演算処理装置。
【請求項3】
同じメモリを、前記プログラムメモリとしても、前記データメモリとしても用いることを特徴とする請求項1又は請求項2記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置の技術に関し、特に、デジタル制御電源向けマイクロコンピュータに内蔵するデジタル・シグナル・プロセッサ(DSP:Digital Signal Processor)などの演算処理装置に関する。
【背景技術】
【0002】
図4は、従来の演算処理装置のプロセッサの構成を示す図である。
図4に示すデジタル・シグナル・プロセッサDSP0において、コントロールユニットCUは、プロセッサ全体の動作制御を行う。コントロールレジスタCRは、プロセッサの動作を制御するためのレジスタ群からなり、プログラムを実行中の命令の位置を示すプログラムカウンタ(PC)等を有する。プログラムメモリPMは、プログラムを命令の列として格納するもので、プログラムを16ビット×32ワード(最大128ワード)で格納する。
【0003】
レジスタファイルRFは、16本の16ビット汎用レジスタR0−R15から構成され、プログラム実行中で使用する変数や定数データを格納する。
【0004】
演算器群EUは、除算器DIV、乗算器MUL、演算ユニットALU、アキュムレータACC、バレルシフタSFTを有する。除算器DIVは、レジスタファイルRFのRn,Rmのデータを読み出し、Rn(16ビット精度)/Rm(16ビット精度)→16ビット精度×(1/16ビット精度)→16ビット精度×16ビット精度→32ビット精度という演算を行う。
【0005】
乗算器MULは、レジスタファイルRFのRn,Rmのデータを読み出し、16ビット×16ビット→32ビットの乗算を行う。演算ユニットALUは、36ビット+36ビット→36ビットの加算演算を行う。アキュムレータACCは、1本の36ビット長からなり、除算器DIV、乗算器MUL、演算ユニットALUの演算結果を一時保存するレジスタからなる。バレルシフタSFTは、0〜15ビットからなり、アキュムレータACCからのデータを右シフトさせてシフト結果をレジスタファイルRFの指定したレジスタへ格納する。
【0006】
このように構成されたプロセッサは、以下の手順で命令(プログラム)を実行する。
【0007】
まず、プログラムカウンタPCは、プログラムメモリアドレスを示し、そのアドレスに格納されている命令をフェッチ(読み込む)する(ステップS1)。次に、フェッチした命令をデコード(解釈)する(ステップS2)。
【0008】
次に、デコード結果からそれに対応した演算を行う(ステップS3)。次に、プログラムカウンタPCを更新する(ステップS4)。即ち、ジャンプ命令の場合には、命令中のnextPC,それ以外は現在のプログラムカウンタPCの値に1を加算する。以上のステップS1〜S4を繰り返す。
【0009】
図5は、従来の演算処理装置のプロセッサが持つ命令セットを示す図である。
図5において、命令コード表には、命令フォーマット(Instruction Format)、命令種別(Instruction)、動作内容(Operation)、実行サイクル(Exec.Cycle)の情報が記録されている。命令形式には、最上位ビットMSB(ビット15)から最下位ビット(ビット0)までの16ビットに、命令停止フラグ(TRIG_WAIT)、ビット・フィールド(TRIG_WHAT)、イベント・ビット(EVENT)、オペレーションコード(OPCODE)、命令フィールドA(FIELDA)、命令フィールドB(FIELDB)の情報がある。
【0010】
命令長は16ビット固定である。オペレーションコード(OPCODE)は3ビット固定である。Rm/Rnは16ビットレジスタ指定フィールドであり、m,n=0〜15である。
【0011】
ここで、プロセッサの問題点を述べるにあたり、プロセッサの構成及び命令セットの特徴を述べる。プロセッサは、乗算、除算器を搭載する、いわゆるDSPに分類される。命令長は16ビット固定である。演算対象は被演算数及び演算数としてレジスタに格納されているデータのみである。
【0012】
上記構成のプロセッサにおいては、演算(MUL,MAC,DIV)を行う際のオペランドは、レジスタRn/Rmのみであり、演算対象に直接、データ値を参照できない構造である。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2013−25590号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、この構成のプロセッサにおいて、データ格納領域は不足する傾向にある。定数データを、変数として使用可能なR0−R15に割り当ててしまうのは非効率である。定数データと変数の演算はこのプロセッサのターゲットアプリケーションでは頻繁に行われる演算であり、対策が必要である。
【0015】
上記問題を回避する一般的な方法は、演算命令のオペランドに定数値を直接指定可能にすることや、定数値を格納しているメモリアドレスを指定し、演算命令が使用する定数値をメモリから読み出す方法が考えられる。
【0016】
しかし、これらの方法はオペランドに定数値またはメモリアドレスを指定する必要があり、現在の16ビット固定長の命令ではオペランド指定のビット数が不足する。
【0017】
これを回避するために、命令長を例えば24ビットに拡張し、拡張分を使用して定数値またはメモリアドレスを指定することも可能である。しかし、命令長の拡張を行うと、プログラムサイズは増大するため、必要なプログラムメモリサイズも大きくなる。さらに以前作成したプログラムの互換性がなくなる問題がある。
【0018】
一方、命令長を必要な命令のみ拡張を行い、可変長命令にすることでプログラムサイズの抑制が期待できる。しかし、可変長命令は、命令デコード時に当該命令の命令長を把握しつつ命令フェッチを行わなければならないため、デコード部の回路が複雑になる。
【0019】
本発明の課題は、変数として使用可能な複数のレジスタへの定数データの格納を減らすことで複数のレジスタを他の演算に使用可能とする演算処理装置を提供することにある。
【課題を解決するための手段】
【0020】
本発明に係る演算処理装置は、
実行中の
プログラムにおける命令の位置を示すプログラムカウンタと、前記プログラムを命令の列として格納するプログラムメモリと、前記プログラム実行中で使用される被演算数、演算数及び変数を格納する複数のレジスタと、前記プログラムメモリから読み出された前記プログラムカウンタが示す位置の命令を解釈するデコーダと、前記デコーダで解釈されたデコード結果に基づき前記複数のレジスタからの被演算数、演算数を用いて演算を行う演算ユニットと、
アドレス
に対応付けて
定数データを格納するデータメモリと、前記定数データが格納されているアドレスを示すロードデータアドレスポインタを有し、前記デコーダからのロード命令のオペランドで指定するアドレスに対応する定数データを前記データメモリからロードして前記複数のレジスタの内の特定のレジスタに格納させ、前記ロードデータアドレスポインタのアドレスを更新するロードユニットとを備えることを特徴とする。
【発明の効果】
【0021】
本発明によれば、ロードユニットがデコーダからのロード命令のオペランドで指定するアドレスに対応する定数データをデータメモリからロードして複数のレジスタの内の特定のレジスタに格納させ、ロードデータアドレスポインタのアドレスを更新するので、変数として使用可能な複数のレジスタへの定数データの格納を減らすることで複数のレジスタを他の演算に使用できる。
【図面の簡単な説明】
【0022】
【
図1】本発明の実施例に係る演算処理装置の全体構成を示す図である。
【
図2】本発明の実施例に係る演算処理装置内のロードユニットの動作を説明する図である。
【
図3】本発明の実施例に係る演算処理装置のシーケンシャルロード機構を示す図である。
【
図4】従来の演算処理装置のプロセッサの構成を示す図である。
【
図5】従来の演算処理装置のプロセッサが持つ命令セットを示す図である。
【発明を実施するための形態】
【0023】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、従来の演算処理装置と同一構成には、従来技術で使用した符号と同じ符号を付しその説明は省略する。
【実施例1】
【0024】
図1は、本発明の実施例に係る演算処理装置の全体構成を示す図である。
図1に示す演算処理装置は、フェッチユニット10、デコーダ20、演算ユニット30、ロードユニット40、レジスタファイルRF、プログラムメモリPM、データメモリDMを有している。
【0025】
プログラムメモリPMは、プログラム(演算処理シーケンス)を命令の列として格納する。フェッチユニット10は、プログラムを実行中の命令の位置を示すプログラムカウンタPCを有し、プログラムメモリPMからプログラムカウンタPCが示す位置の命令をフェッチしてデコーダ20に出力する。
【0026】
デコーダ20は、フェッチユニット10からの命令を解釈して演算ユニット30に出力する。演算ユニット30は、
図4に示すような除算器DIV、乗算器MUL、演算ユニットALU、アキュムレータACC、バレルシフタSFTを有し、デコーダ20で解釈されたデコード結果に基づき複数のレジスタR0〜R15からの被演算数、演算数を用いて演算を行う。
【0027】
レジスタファイルRFは、16本の16ビット汎用レジスタR0−R15から構成されており、プログラム実行中で使用される被演算数、演算数及び変数を格納する。
(実施例の特徴的な構成)
次に、実施例の演算処理装置の特徴的な構成を説明する。命令長は、プログラムの互換性を維持可能とするために、16ビットとする。データメモリDMは、定数データとアドレスとを対応付けて格納する。実施例では、データメモリDMをプログラムメモリPMとは独立して設けたが、プログラムメモリPMとデータメモリDMとを共有化してそこにプログラムと定数データを格納してもよい。
【0028】
ロードユニット40は、データメモリDMに格納されているアドレスを示すロードデータアドレスポインタLDADRを有し、デコーダ20からのロード命令(LDD命令)のオペランドで指定するアドレスに対応する定数データをデータメモリDMからロードして複数のレジスタR0〜R15の内の特定のレジスタ、例えばレジスタR15に格納させ、ロードデータアドレスポインタLDADRのアドレスを1だけインクリメントする。
【0029】
図2は、本発明の実施例に係る演算処理装置内のロードユニットの動作を説明する図である。
図2(a)において、データメモリDMは、アドレス(Addr)とデータ(Data)とを対応付けて格納しており、例えば、Addr0x00にはData00が格納されている。レジスタファイルRFのレジスタR0〜R15にはデータDataR0〜DataR15が格納されている。
【0030】
図2(a)は、“LDD 0x00”を実行した際の動作を示している。ロードユニット40は、
図2(a)に示すように、LDD命令のオペランド0x00をメモリアドレスとしてデータメモリDMのAddr0x00からData00をロードしてセレクタSLを介してレジスタR15に格納する。即ち、
図2(b)に示すように、レジスタR15に記憶されたDataR15がData00に書き換えられる。
【0031】
また、ロードユニット40は、
図2(b)に示すように、LDD命令の実行と同時にロードデータアドレスポインタLDADRに次のデータアドレス(0x00+1=0x01)を格納する。ロードデータアドレスポインタLDADRは、レジスタR15に格納されているデータの次に参照したいデータメモリアドレスを指している。
【0032】
また、ロードユニット40は、特定のレジスタR15が演算命令により参照されたとき、ロードアドレスポインタLDADRが示すアドレスに対応する定数データをデータメモリDMからロードして特定のレジスタR15に格納させるとともに、ロードデータアドレスポインタLDADRのアドレスを1だけインクリメントする。
【0033】
即ち、ロードユニット40は、デコーダ20からロードユニット40に再度のLDD命令が入力されなくても、デコーダ20から任意の命令のオペランドが指定されてレジスタR15が参照されたとき、自動的にデータメモリDMのアドレスの順番にデータをロードするシーケンシャルロード機構からなる。
【0034】
図3は、本発明の実施例に係る演算処理装置のシーケンシャルロード機構を示す図である。
図3では、ロードアドレスポインタLDADRに格納されているメモリアドレスからレジスタR15へデータをロードし、同時にロードアドレスポインタLDADRのアドレスを1だけインクリメントする。
【0035】
図3(a)に示すように、レジスタR15に格納されているDataR15がオペランドとして参照されたとき、これと同時に、同サイクルで、ロードアドレスポインタLDADRが指すメモリアドレス(0x02)のデータ(Data02)をロードしてレジスタR15に格納する(
図3(b))。このデータロードと同時にロードアドレスポインタLDADRのアドレスを1だけインクリメントして、(0x02+1=0x03)する。
【0036】
以上、説明したロードユニット40の機能により、定数データ格納にレジスタR8〜R14を使用する必要がなくなり、レジスタR8〜R14を他の演算に使用可能となる。
【0037】
また、定数データをロードする毎に、いちいちLDD命令を出す必要がなくなり、DSPの処理速度を向上することができる。
【0038】
このように本発明の実施例1によれば、ロードユニット40がデコーダ20からのロード命令のオペランドで指定するアドレスに対応する定数データをデータメモリDMからロードして複数のレジスタR0〜R15の内の特定のレジスタR15に格納させ、ロードデータアドレスポインタLDADRのアドレスを更新するので、変数として使用可能な複数のレジスタR0〜R14への定数データの格納を減らすことで複数のレジスタR0〜R14を他の演算に使用できる。
【符号の説明】
【0039】
PM プログラムメモリ
PC プログラムカウンタ
DM データメモリ
RF レジスタファイル
LDADR ロードアドレスポインタ
R0〜R15 レジスタ
DSP0 デジタル・シグナル・プロセッサ
CU コントロールユニット
CR コントロールレジスタ
EU 演算器群EU
DIV 除算器
MUL 乗算器
ALU 演算ユニット
ACC アキュムレータ
SFT バレルシフタ
10 フェッチユニット
20 デコーダ
30 演算ユニット
40 ロードユニット