JP6372250B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP6372250B2
JP6372250B2 JP2014170322A JP2014170322A JP6372250B2 JP 6372250 B2 JP6372250 B2 JP 6372250B2 JP 2014170322 A JP2014170322 A JP 2014170322A JP 2014170322 A JP2014170322 A JP 2014170322A JP 6372250 B2 JP6372250 B2 JP 6372250B2
Authority
JP
Japan
Prior art keywords
address
data
instruction
load
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014170322A
Other languages
English (en)
Other versions
JP2016045759A (ja
Inventor
和大 美馬
和大 美馬
裕貴 雪山
裕貴 雪山
山崎 尊永
尊永 山崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanken Electric Co Ltd
Original Assignee
Sanken Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanken Electric Co Ltd filed Critical Sanken Electric Co Ltd
Priority to JP2014170322A priority Critical patent/JP6372250B2/ja
Priority to US14/748,327 priority patent/US10303476B2/en
Publication of JP2016045759A publication Critical patent/JP2016045759A/ja
Application granted granted Critical
Publication of JP6372250B2 publication Critical patent/JP6372250B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)

Description

本発明は、演算処理装置の技術に関し、特に、デジタル制御電源向けマイクロコンピュータに内蔵するデジタル・シグナル・プロセッサ(DSP:Digital Signal Processor)などの演算処理装置に関する。
図4は、従来の演算処理装置のプロセッサの構成を示す図である。図4に示すデジタル・シグナル・プロセッサDSP0において、コントロールユニットCUは、プロセッサ全体の動作制御を行う。コントロールレジスタCRは、プロセッサの動作を制御するためのレジスタ群からなり、プログラムを実行中の命令の位置を示すプログラムカウンタ(PC)等を有する。プログラムメモリPMは、プログラムを命令の列として格納するもので、プログラムを16ビット×32ワード(最大128ワード)で格納する。
レジスタファイルRFは、16本の16ビット汎用レジスタR0−R15から構成され、プログラム実行中で使用する変数や定数データを格納する。
演算器群EUは、除算器DIV、乗算器MUL、演算ユニットALU、アキュムレータACC、バレルシフタSFTを有する。除算器DIVは、レジスタファイルRFのRn,Rmのデータを読み出し、Rn(16ビット精度)/Rm(16ビット精度)→16ビット精度×(1/16ビット精度)→16ビット精度×16ビット精度→32ビット精度という演算を行う。
乗算器MULは、レジスタファイルRFのRn,Rmのデータを読み出し、16ビット×16ビット→32ビットの乗算を行う。演算ユニットALUは、36ビット+36ビット→36ビットの加算演算を行う。アキュムレータACCは、1本の36ビット長からなり、除算器DIV、乗算器MUL、演算ユニットALUの演算結果を一時保存するレジスタからなる。バレルシフタSFTは、0〜15ビットからなり、アキュムレータACCからのデータを右シフトさせてシフト結果をレジスタファイルRFの指定したレジスタへ格納する。
このように構成されたプロセッサは、以下の手順で命令(プログラム)を実行する。
まず、プログラムカウンタPCは、プログラムメモリアドレスを示し、そのアドレスに格納されている命令をフェッチ(読み込む)する(ステップS1)。次に、フェッチした命令をデコード(解釈)する(ステップS2)。
次に、デコード結果からそれに対応した演算を行う(ステップS3)。次に、プログラムカウンタPCを更新する(ステップS4)。即ち、ジャンプ命令の場合には、命令中のnextPC,それ以外は現在のプログラムカウンタPCの値に1を加算する。以上のステップS1〜S4を繰り返す。
図5は、従来の演算処理装置のプロセッサが持つ命令セットを示す図である。図5において、命令コード表には、命令フォーマット(Instruction Format)、命令種別(Instruction)、動作内容(Operation)、実行サイクル(Exec.Cycle)の情報が記録されている。命令形式には、最上位ビットMSB(ビット15)から最下位ビット(ビット0)までの16ビットに、命令停止フラグ(TRIG_WAIT)、ビット・フィールド(TRIG_WHAT)、イベント・ビット(EVENT)、オペレーションコード(OPCODE)、命令フィールドA(FIELDA)、命令フィールドB(FIELDB)の情報がある。
命令長は16ビット固定である。オペレーションコード(OPCODE)は3ビット固定である。Rm/Rnは16ビットレジスタ指定フィールドであり、m,n=0〜15である。
ここで、プロセッサの問題点を述べるにあたり、プロセッサの構成及び命令セットの特徴を述べる。プロセッサは、乗算、除算器を搭載する、いわゆるDSPに分類される。命令長は16ビット固定である。演算対象は被演算数及び演算数としてレジスタに格納されているデータのみである。
上記構成のプロセッサにおいては、演算(MUL,MAC,DIV)を行う際のオペランドは、レジスタRn/Rmのみであり、演算対象に直接、データ値を参照できない構造である。
特開2013−25590号公報
しかしながら、この構成のプロセッサにおいて、データ格納領域は不足する傾向にある。定数データを、変数として使用可能なR0−R15に割り当ててしまうのは非効率である。定数データと変数の演算はこのプロセッサのターゲットアプリケーションでは頻繁に行われる演算であり、対策が必要である。
上記問題を回避する一般的な方法は、演算命令のオペランドに定数値を直接指定可能にすることや、定数値を格納しているメモリアドレスを指定し、演算命令が使用する定数値をメモリから読み出す方法が考えられる。
しかし、これらの方法はオペランドに定数値またはメモリアドレスを指定する必要があり、現在の16ビット固定長の命令ではオペランド指定のビット数が不足する。
これを回避するために、命令長を例えば24ビットに拡張し、拡張分を使用して定数値またはメモリアドレスを指定することも可能である。しかし、命令長の拡張を行うと、プログラムサイズは増大するため、必要なプログラムメモリサイズも大きくなる。さらに以前作成したプログラムの互換性がなくなる問題がある。
一方、命令長を必要な命令のみ拡張を行い、可変長命令にすることでプログラムサイズの抑制が期待できる。しかし、可変長命令は、命令デコード時に当該命令の命令長を把握しつつ命令フェッチを行わなければならないため、デコード部の回路が複雑になる。
本発明の課題は、変数として使用可能な複数のレジスタへの定数データの格納を減らすことで複数のレジスタを他の演算に使用可能とする演算処理装置を提供することにある。
本発明に係る演算処理装置は、行中のプログラムにおける命令の位置を示すプログラムカウンタと、前記プログラムを命令の列として格納するプログラムメモリと、前記プログラム実行中で使用される被演算数、演算数及び変数を格納する複数のレジスタと、前記プログラムメモリから読み出された前記プログラムカウンタが示す位置の命令を解釈するデコーダと、前記デコーダで解釈されたデコード結果に基づき前記複数のレジスタからの被演算数、演算数を用いて演算を行う演算ユニットと、ドレス対応付けて定数データを格納するデータメモリと、前記定数データが格納されているアドレスを示すロードデータアドレスポインタを有し、前記デコーダからのロード命令のオペランドで指定するアドレスに対応する定数データを前記データメモリからロードして前記複数のレジスタの内の特定のレジスタに格納させ、前記ロードデータアドレスポインタのアドレスを更新するロードユニットとを備えることを特徴とする。
本発明によれば、ロードユニットがデコーダからのロード命令のオペランドで指定するアドレスに対応する定数データをデータメモリからロードして複数のレジスタの内の特定のレジスタに格納させ、ロードデータアドレスポインタのアドレスを更新するので、変数として使用可能な複数のレジスタへの定数データの格納を減らすることで複数のレジスタを他の演算に使用できる。
本発明の実施例に係る演算処理装置の全体構成を示す図である。 本発明の実施例に係る演算処理装置内のロードユニットの動作を説明する図である。 本発明の実施例に係る演算処理装置のシーケンシャルロード機構を示す図である。 従来の演算処理装置のプロセッサの構成を示す図である。 従来の演算処理装置のプロセッサが持つ命令セットを示す図である。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、従来の演算処理装置と同一構成には、従来技術で使用した符号と同じ符号を付しその説明は省略する。
図1は、本発明の実施例に係る演算処理装置の全体構成を示す図である。図1に示す演算処理装置は、フェッチユニット10、デコーダ20、演算ユニット30、ロードユニット40、レジスタファイルRF、プログラムメモリPM、データメモリDMを有している。
プログラムメモリPMは、プログラム(演算処理シーケンス)を命令の列として格納する。フェッチユニット10は、プログラムを実行中の命令の位置を示すプログラムカウンタPCを有し、プログラムメモリPMからプログラムカウンタPCが示す位置の命令をフェッチしてデコーダ20に出力する。
デコーダ20は、フェッチユニット10からの命令を解釈して演算ユニット30に出力する。演算ユニット30は、図4に示すような除算器DIV、乗算器MUL、演算ユニットALU、アキュムレータACC、バレルシフタSFTを有し、デコーダ20で解釈されたデコード結果に基づき複数のレジスタR0〜R15からの被演算数、演算数を用いて演算を行う。
レジスタファイルRFは、16本の16ビット汎用レジスタR0−R15から構成されており、プログラム実行中で使用される被演算数、演算数及び変数を格納する。
(実施例の特徴的な構成)
次に、実施例の演算処理装置の特徴的な構成を説明する。命令長は、プログラムの互換性を維持可能とするために、16ビットとする。データメモリDMは、定数データとアドレスとを対応付けて格納する。実施例では、データメモリDMをプログラムメモリPMとは独立して設けたが、プログラムメモリPMとデータメモリDMとを共有化してそこにプログラムと定数データを格納してもよい。
ロードユニット40は、データメモリDMに格納されているアドレスを示すロードデータアドレスポインタLDADRを有し、デコーダ20からのロード命令(LDD命令)のオペランドで指定するアドレスに対応する定数データをデータメモリDMからロードして複数のレジスタR0〜R15の内の特定のレジスタ、例えばレジスタR15に格納させ、ロードデータアドレスポインタLDADRのアドレスを1だけインクリメントする。
図2は、本発明の実施例に係る演算処理装置内のロードユニットの動作を説明する図である。図2(a)において、データメモリDMは、アドレス(Addr)とデータ(Data)とを対応付けて格納しており、例えば、Addr0x00にはData00が格納されている。レジスタファイルRFのレジスタR0〜R15にはデータDataR0〜DataR15が格納されている。
図2(a)は、“LDD 0x00”を実行した際の動作を示している。ロードユニット40は、図2(a)に示すように、LDD命令のオペランド0x00をメモリアドレスとしてデータメモリDMのAddr0x00からData00をロードしてセレクタSLを介してレジスタR15に格納する。即ち、図2(b)に示すように、レジスタR15に記憶されたDataR15がData00に書き換えられる。
また、ロードユニット40は、図2(b)に示すように、LDD命令の実行と同時にロードデータアドレスポインタLDADRに次のデータアドレス(0x00+1=0x01)を格納する。ロードデータアドレスポインタLDADRは、レジスタR15に格納されているデータの次に参照したいデータメモリアドレスを指している。
また、ロードユニット40は、特定のレジスタR15が演算命令により参照されたとき、ロードアドレスポインタLDADRが示すアドレスに対応する定数データをデータメモリDMからロードして特定のレジスタR15に格納させるとともに、ロードデータアドレスポインタLDADRのアドレスを1だけインクリメントする。
即ち、ロードユニット40は、デコーダ20からロードユニット40に再度のLDD命令が入力されなくても、デコーダ20から任意の命令のオペランドが指定されてレジスタR15が参照されたとき、自動的にデータメモリDMのアドレスの順番にデータをロードするシーケンシャルロード機構からなる。
図3は、本発明の実施例に係る演算処理装置のシーケンシャルロード機構を示す図である。図3では、ロードアドレスポインタLDADRに格納されているメモリアドレスからレジスタR15へデータをロードし、同時にロードアドレスポインタLDADRのアドレスを1だけインクリメントする。
図3(a)に示すように、レジスタR15に格納されているDataR15がオペランドとして参照されたとき、これと同時に、同サイクルで、ロードアドレスポインタLDADRが指すメモリアドレス(0x02)のデータ(Data02)をロードしてレジスタR15に格納する(図3(b))。このデータロードと同時にロードアドレスポインタLDADRのアドレスを1だけインクリメントして、(0x02+1=0x03)する。
以上、説明したロードユニット40の機能により、定数データ格納にレジスタR8〜R14を使用する必要がなくなり、レジスタR8〜R14を他の演算に使用可能となる。
また、定数データをロードする毎に、いちいちLDD命令を出す必要がなくなり、DSPの処理速度を向上することができる。
このように本発明の実施例1によれば、ロードユニット40がデコーダ20からのロード命令のオペランドで指定するアドレスに対応する定数データをデータメモリDMからロードして複数のレジスタR0〜R15の内の特定のレジスタR15に格納させ、ロードデータアドレスポインタLDADRのアドレスを更新するので、変数として使用可能な複数のレジスタR0〜R14への定数データの格納を減らすことで複数のレジスタR0〜R14を他の演算に使用できる。
PM プログラムメモリ
PC プログラムカウンタ
DM データメモリ
RF レジスタファイル
LDADR ロードアドレスポインタ
R0〜R15 レジスタ
DSP0 デジタル・シグナル・プロセッサ
CU コントロールユニット
CR コントロールレジスタ
EU 演算器群EU
DIV 除算器
MUL 乗算器
ALU 演算ユニット
ACC アキュムレータ
SFT バレルシフタ
10 フェッチユニット
20 デコーダ
30 演算ユニット
40 ロードユニット


Claims (3)

  1. 行中のプログラムにおける命令の位置を示すプログラムカウンタと、
    前記プログラムを命令の列として格納するプログラムメモリと、
    前記プログラム実行中で使用される被演算数、演算数及び変数を格納する複数のレジスタと、
    前記プログラムメモリから読み出された前記プログラムカウンタが示す位置の命令を解釈するデコーダと、
    前記デコーダで解釈されたデコード結果に基づき前記複数のレジスタからの被演算数、演算数を用いて演算を行う演算ユニットと、
    ドレス対応付けて定数データを格納するデータメモリと、
    前記定数データが格納されているアドレスを示すロードデータアドレスポインタを有し、前記デコーダからのロード命令のオペランドで指定するアドレスに対応する定数データを前記データメモリからロードして前記複数のレジスタの内の特定のレジスタに格納させ、前記ロードデータアドレスポインタのアドレスを更新するロードユニットと、
    を備えることを特徴とする演算処理装置。
  2. 前記ロードユニットは、前記特定のレジスタが演算命令により参照されたとき、前記ロードアドレスポインタが示すアドレスに対応する定数データを前記データメモリからロードして前記特定のレジスタに格納させ、前記ロードデータアドレスポインタのアドレスを更新することを特徴とする請求項1記載の演算処理装置。
  3. 同じメモリを、前記プログラムメモリとしても、前記データメモリとしても用いることを特徴とする請求項1又は請求項2記載の演算処理装置。
JP2014170322A 2014-08-25 2014-08-25 演算処理装置 Active JP6372250B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014170322A JP6372250B2 (ja) 2014-08-25 2014-08-25 演算処理装置
US14/748,327 US10303476B2 (en) 2014-08-25 2015-06-24 Arithmetic processor with load unit for improved register use

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014170322A JP6372250B2 (ja) 2014-08-25 2014-08-25 演算処理装置

Publications (2)

Publication Number Publication Date
JP2016045759A JP2016045759A (ja) 2016-04-04
JP6372250B2 true JP6372250B2 (ja) 2018-08-15

Family

ID=55348378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014170322A Active JP6372250B2 (ja) 2014-08-25 2014-08-25 演算処理装置

Country Status (2)

Country Link
US (1) US10303476B2 (ja)
JP (1) JP6372250B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10571993B2 (en) * 2015-03-20 2020-02-25 Sanken Electric Co., Ltd. Micro controller unit
DE102017200457A1 (de) * 2017-01-12 2018-07-12 Robert Bosch Gmbh Hardwarekonfigurierbare Logikeinheit und Mikrocontroller mit einer derartigen hardwarekonfigurierbaren Logikeinheit

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219779B1 (en) * 1997-06-16 2001-04-17 Matsushita Electric Industrial Co., Ltd. Constant reconstructing processor which supports reductions in code size
US6795908B1 (en) * 2000-02-16 2004-09-21 Freescale Semiconductor, Inc. Method and apparatus for instruction execution in a data processing system
US7269710B1 (en) * 2004-07-23 2007-09-11 Zilog, Inc. Program memory space expansion for particular processor instructions
US7434024B2 (en) * 2004-08-30 2008-10-07 Ati Technologies, Inc. SIMD processor with register addressing, buffer stall and methods
US9524237B2 (en) * 2008-09-12 2016-12-20 Renesas Electronics Corporation Data processing device and semiconductor intergrated circuit device for a bi-endian system
US9348587B2 (en) * 2010-07-09 2016-05-24 Hyperion Core, Inc. Providing code sections for matrix of arithmetic logic units in a processor
CN102681822B (zh) * 2011-03-17 2016-06-15 中兴通讯股份有限公司 一种处理器地址缓冲管理的实现装置及方法
JP5655733B2 (ja) 2011-07-21 2015-01-21 サンケン電気株式会社 演算処理装置およびマイクロコンピュータ
US9201656B2 (en) * 2011-12-02 2015-12-01 Arm Limited Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers

Also Published As

Publication number Publication date
US10303476B2 (en) 2019-05-28
JP2016045759A (ja) 2016-04-04
US20160054999A1 (en) 2016-02-25

Similar Documents

Publication Publication Date Title
US20210026634A1 (en) Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register
US9383999B2 (en) Conditional compare instruction
US9250904B2 (en) Modify and execute sequential instruction facility and instructions therefor
KR100328162B1 (ko) 정보처리회로와마이크로컴퓨터와전자기기
US9009450B2 (en) Mixed operand size instruction processing for execution of indirect addressing load instruction specifying registers for different size operands
RU2012149004A (ru) Увеличение числа доступных для команд регистров общего назначения
JP2005332361A (ja) プログラム命令圧縮装置および方法
CN111782270B (zh) 一种数据处理方法及装置、存储介质
US11048511B2 (en) Data processing device data processing method and recording medium
EP3340037B1 (en) A data processing apparatus and method for controlling vector memory accesses
JP6073392B2 (ja) 命令としてデータ値を評価するシステムおよび方法
JP6372250B2 (ja) 演算処理装置
TW201738734A (zh) 用於在運行時指令的情境向量化的系統及方法
EP3559803B1 (en) Vector generating instruction
JP3599499B2 (ja) 中央処理装置
JP6484957B2 (ja) 演算処理装置
JP3570287B2 (ja) マイクロコンピュータ
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
JP2006302324A (ja) データ処理装置
JP2011170758A (ja) プロセッサ
JP5311008B2 (ja) 信号処理プロセッサ及び半導体装置
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP5866697B2 (ja) 複数のコンディションフラグを有するcpu
JP3060917B2 (ja) プロセッサ
JP2020140290A (ja) 中央演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180615

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180619

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180702

R150 Certificate of patent or registration of utility model

Ref document number: 6372250

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250