JP2014056446A - マイクロプロセッサ及びプログラムのコンパイル処理方法 - Google Patents
マイクロプロセッサ及びプログラムのコンパイル処理方法 Download PDFInfo
- Publication number
- JP2014056446A JP2014056446A JP2012201009A JP2012201009A JP2014056446A JP 2014056446 A JP2014056446 A JP 2014056446A JP 2012201009 A JP2012201009 A JP 2012201009A JP 2012201009 A JP2012201009 A JP 2012201009A JP 2014056446 A JP2014056446 A JP 2014056446A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- dummy
- sequence
- instructions
- 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.)
- Granted
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】 CPU(中央処理装置)100は、演算及び命令実行制御装置108と、命令レジスタ116と、ダミー命令に対応する複数の命令からなる共通化命令列を格納するサブ記憶レジスタ114と、演算及び命令実行制御装置108への制御信号を作成する命令デコーダ112とを有する。命令デコーダ112は、命令レジスタ116にダミー命令以外の命令が取り込まれたときは命令レジスタ116から出力される命令のデコードを行い、命令レジスタ116にダミー命令が取り込まれたときはサブ記憶レジスタ114から出力される命令のデコードを行う。
【選択図】 図1
Description
図12は、ソースプログラムをコンパイル処理する従来の処理例を示す図である。図中の左側のソースコードを含むソースプログラム1200をコンパイルすると、コンパイル後1201に示すようにアセンブラコードが配置されるが、そこには冗長な命令列が多数存在する。
ST1(ステージ1)では、演算及び命令実行制御装置608が初期アドレスをセットし、命令1を命令フェッチする(IF1)。キャッシュ装置609が出力する命令1を命令レジスタ616に取り込む。
ST2(ステージ2)では、命令レジスタ616が出力する命令1をデコードする(ID1)。また、命令2を命令フェッチする(IF2)。キャッシュ装置609が出力する命令2を命令レジスタ616に取り込む
ST3(ステージ3)では、命令1を実行して(EX1)、命令1の処理を終了する。また、命令レジスタ616が出力する命令2をデコードする(ID2)。さらに、命令3を命令フェッチする(IF3)。キャッシュ装置609が出力する命令3を命令レジスタ616に取り込む。
ST4(ステージ4)では、命令2を実行して(EX2)、命令2の処理を終了する。また、命令レジスタ616が出力する命令3をデコードする(ID3)。さらに、命令4を命令フェッチする(IF4)。キャッシュ装置609が出力する命令4を命令レジスタ616に取り込む。
ST5(ステージ5)では、命令3を実行して(EX3)、命令3の処理を終了する。また、命令レジスタ616が出力する命令4をデコードする(ID4)。
ST6(ステージ6)では、命令4を実行して(EX4)、命令4の処理を終了する。
命令が続く場合は上述のステージが繰り返され命令実行が進んで行く。この場合、冗長なコードが多数あるということは、同種の命令列の各命令に対してそれぞれ命令フェッチが行われるため、例えばRAM等の記憶装置の使用効率が悪い。
図11のマイクロプロセッサ1190が、図6のマイクロプロセッサ690と異なる点は、圧縮命令に係る圧縮伸張器1130を備える点である。圧縮伸張器1130は、圧縮命令を読解し、命令を圧縮命令が置かれているメモリから命令フェッチするものである。
ST1(ステージ1)では、演算及び命令実行制御装置1108が初期アドレスをセットし、命令1を命令フェッチする(IF1)。キャッシュ装置1109が出力する命令1を命令レジスタ1116に取り込む。
ST2(ステージ2)では、命令レジスタ1116が出力する命令1をデコードする(ID1)。圧縮命令を命令フェッチする(IF6)。
ST3(ステージ3)では、命令1を実行して(EX1)、命令1の処理を終了する。圧縮命令を圧縮伸張器1130で読解し(ID6)、命令2を圧縮命令が置かれているメモリから命令フェッチする(IF2)。キャッシュ装置1109が出力する命令2を命令レジスタ1116に取り込む。
ST4(ステージ4)では、命令レジスタ1116が出力する命令2をデコードする(ID2)。命令3を命令フェッチする(IF3)。キャッシュ装置1109が出力する命令3を命令レジスタ1116に取り込む。
ST5(ステージ5)では、命令2を実行して(EX2)、命令2の処理を終了する。命令レジスタ1116が出力する命令3をデコードする(ID3)。命令4を命令フェッチする(IF4)。キャッシュ装置1109が出力する命令4を命令レジスタ1116に取り込む。
ST6(ステージ6)では、命令3を実行して(EX3)、命令3の処理を終了する。命令レジスタ1116が出力する命令4をデコードする(ID4)。
ST7(ステージ7)では、命令4を実行して(EX4)、命令4の処理を終了する。
命令が続く場合は上述のステージが繰り返され命令実行が進んで行く。
この種の方式は、例えば特許文献1に記載されている。
(1)ダミー命令を含むアセンブラコードが格納される記憶装置と、内部バスを介して前記記憶装置に接続される中央処理装置とを備え、
前記中央処理装置は、演算及び命令実行制御を行う演算及び命令実行制御装置と、実行すべき命令を保持する命令レジスタと、前記ダミー命令に対応する複数の命令からなる共通化命令列を格納するサブ記憶レジスタと、前記命令レジスタまたは前記サブ記憶レジスタから出力される命令のデコードを行い前記演算及び命令実行制御装置への制御信号を作成する命令デコーダとを有し、
前記命令デコーダは、前記命令レジスタに前記ダミー命令以外の命令が取り込まれたときは前記命令レジスタから出力される命令のデコードを行い、前記命令レジスタに前記ダミー命令が取り込まれたときは前記サブ記憶レジスタから出力される命令のデコードを行うことを特徴とするマイクロプロセッサ。
(2)前記ダミー命令は、命令コード、前記サブ記憶レジスタの開始番号に対応する命令開始位置、および前記ダミー命令に対応する複数の命令の命令実行数から1を引いた値である命令数を含むことを特徴とする上記(1)に記載のマイクロプロセッサ。
(3)前記ダミー命令中の命令数を保持するレジスタと、前記演算及び命令実行制御装置から送られる命令更新信号をトリガとするカウンタとを有し、前記レジスタと前記カウンタの一致信号が出力されると、前記ダミー命令の次の命令が前記命令レジスタに取り込まれることを特徴とする上記(2)に記載のマイクロプロセッサ。
(4)前記ダミー命令の命令コードおよび命令開始位置に基づいて、前記サブ記憶レジスタに格納された対応する共通化命令列の命令が選択されることを特徴とする上記(2)または(3)に記載のマイクロプロセッサ。
(5)前記サブ記憶レジスタにおける共通化命令列は、前記内部バスを介して読み書きされることを特徴とする上記(1)から(4)のいずれか1項に記載のマイクロプロセッサ。
(6)上記(1)から(5)のいずれか1項に記載のマイクロプロセッサの記憶装置に格納されるダミー命令を含むアセンブラコードを生成するためのプログラムのコンパイル処理方法であって、
第1のソースプログラム領域と第2のソースプログラム領域を有するソースプラグラムをコンパイルするためのコンパイル処理と、前記ソースプラグラムのコンパイル後、前記第1のソースプログラム領域に対応するアセンブラコードを用いて、前記第2のソースプログラム領域に対応するアセンブラコード中の冗長な命令列を共通化するための共通化処理とを含み、
前記共通化処理は、冗長な命令列を探索する処理と、t回以上冗長な命令列が見つかった場合その出現回数を記録しダミー命令と対応付けする処理と、前記記録した命令列を順に配置して命令列を共通化する処理と、前記共通化された命令列を対応する前記ダミー命令に置き換え、その他の命令を再配置する処理とを有することを特徴とするプログラムのコンパイル処理方法。
(7)前記記録した命令列を順に配置する場合、前記記録した命令列を頻出順にx番地の弱番から配置することを特徴とする上記(6)に記載のプログラムのコンパイル処理方法。
本発明と従来のものとを比較すると、従来の圧縮命令方式では命令を圧縮して実行時に伸張するのに対して、本発明では命令列自体をレジスタに格納しておく点で異なる。また本発明では伸長回路が不要である。さらに本発明では伸張のための辞書に相当するデータも不要であるためCPUよりも低速な記憶装置にアクセスも発生しない。
図5は、ソースプログラムをアセンブラコードにコンパイル処理する本発明の処理例を示す図である。図において、ソースコードを含むソースプログラム500をコンパイルすると、コンパイル後:共通化前510に示すようなアセンブラコードが配置される。さらに命令列を共通化した共通化後には、コンパイル後:共通化後550に示すようなアセンブラコードが配置される。
ST1(ステージ1)では、演算及び命令実行制御装置108が初期アドレスをセットし、命令1を命令フェッチする(IF1)。
ST6(ステージ6)では、命令4を実行して(EX4)、命令4の処理を終了する。
以上のように本発明によれば、命令の切り替えがパイプラインを乱すことなく実行できる。なお、サブ記憶レジスタの使用方法として、大規模なループを1つだけ入れて使用する例がある。この場合、常時キャッシュインと同じ効果を生む。
101 記憶装置
102 入出力制御装置
103 内部バス
104 セレクタ
105 アドレス加算器
107 次主命令アドレスレジスタ
108 演算及び命令実行制御装置
109 キャッシュ装置
110 レジスタ
111 比較器
112 命令デコーダ
113 セレクタ
114 サブ記憶レジスタ
115 アドレス生成器
116 命令レジスタ
117 カウンタ
150 周辺装置
151 クロック生成装置
190 マイクロプロセッサ
Claims (7)
- ダミー命令を含むアセンブラコードが格納される記憶装置と、内部バスを介して前記記憶装置に接続される中央処理装置とを備え、
前記中央処理装置は、演算及び命令実行制御を行う演算及び命令実行制御装置と、実行すべき命令を保持する命令レジスタと、前記ダミー命令に対応する複数の命令からなる共通化命令列を格納するサブ記憶レジスタと、前記命令レジスタまたは前記サブ記憶レジスタから出力される命令のデコードを行い前記演算及び命令実行制御装置への制御信号を作成する命令デコーダとを有し、
前記命令デコーダは、前記命令レジスタに前記ダミー命令以外の命令が取り込まれたときは前記命令レジスタから出力される命令のデコードを行い、前記命令レジスタに前記ダミー命令が取り込まれたときは前記サブ記憶レジスタから出力される命令のデコードを行うことを特徴とするマイクロプロセッサ。 - 前記ダミー命令は、命令コード、前記サブ記憶レジスタの開始番号に対応する命令開始位置、および前記ダミー命令に対応する複数の命令の命令実行数から1を引いた値である命令数を含むことを特徴とする請求項1に記載のマイクロプロセッサ。
- 前記ダミー命令中の命令数を保持するレジスタと、前記演算及び命令実行制御装置から送られる命令更新信号をトリガとするカウンタとを有し、前記レジスタと前記カウンタの一致信号が出力されると、前記ダミー命令の次の命令が前記命令レジスタに取り込まれることを特徴とする請求項2に記載のマイクロプロセッサ。
- 前記ダミー命令の命令コードおよび命令開始位置に基づいて、前記サブ記憶レジスタに格納された対応する共通化命令列の命令が選択されることを特徴とする請求項2または3に記載のマイクロプロセッサ。
- 前記サブ記憶レジスタにおける共通化命令列は、前記内部バスを介して読み書きされることを特徴とする請求項1から4のいずれか1項に記載のマイクロプロセッサ。
- 請求項1から5のいずれか1項に記載のマイクロプロセッサの記憶装置に格納されるダミー命令を含むアセンブラコードを生成するためのプログラムのコンパイル処理方法であって、
第1のソースプログラム領域と第2のソースプログラム領域を有するソースプラグラムをコンパイルするためのコンパイル処理と、前記ソースプラグラムのコンパイル後、前記第1のソースプログラム領域に対応するアセンブラコードを用いて、前記第2のソースプログラム領域に対応するアセンブラコード中の冗長な命令列を共通化するための共通化処理とを含み、
前記共通化処理は、冗長な命令列を探索する処理と、t回以上冗長な命令列が見つかった場合その出現回数を記録しダミー命令と対応付けする処理と、前記記録した命令列を順に配置して命令列を共通化する処理と、前記共通化された命令列を対応する前記ダミー命令に置き換え、その他の命令を再配置する処理とを有することを特徴とするプログラムのコンパイル処理方法。 - 前記記録した命令列を順に配置する場合、前記記録した命令列を頻出順にx番地の弱番から配置することを特徴とする請求項6に記載のプログラムのコンパイル処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012201009A JP5965262B2 (ja) | 2012-09-12 | 2012-09-12 | マイクロプロセッサ及びプログラムのコンパイル処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012201009A JP5965262B2 (ja) | 2012-09-12 | 2012-09-12 | マイクロプロセッサ及びプログラムのコンパイル処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014056446A true JP2014056446A (ja) | 2014-03-27 |
JP5965262B2 JP5965262B2 (ja) | 2016-08-03 |
Family
ID=50613704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012201009A Expired - Fee Related JP5965262B2 (ja) | 2012-09-12 | 2012-09-12 | マイクロプロセッサ及びプログラムのコンパイル処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5965262B2 (ja) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62162143A (ja) * | 1986-01-10 | 1987-07-18 | Nec Corp | 情報処理装置 |
JPH0475138A (ja) * | 1990-07-18 | 1992-03-10 | Nec Corp | プログラムサイズ圧縮装置 |
JPH04370832A (ja) * | 1991-06-19 | 1992-12-24 | Nec Corp | プロセッサ回路 |
JP2000267848A (ja) * | 1999-01-13 | 2000-09-29 | Toshiba Corp | 情報処理装置 |
JP2002318686A (ja) * | 2001-04-19 | 2002-10-31 | Sony Corp | プロセッサ |
JP2003022180A (ja) * | 2001-07-09 | 2003-01-24 | Mitsubishi Electric Corp | マイクロコンピュータおよびその動作方法 |
JP2008129851A (ja) * | 2006-11-21 | 2008-06-05 | Matsushita Electric Ind Co Ltd | 演算処理装置 |
JP2011243134A (ja) * | 2010-05-21 | 2011-12-01 | Mitsubishi Electric Corp | プログラム圧縮装置及びプログラム実行装置及びプログラム |
-
2012
- 2012-09-12 JP JP2012201009A patent/JP5965262B2/ja not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62162143A (ja) * | 1986-01-10 | 1987-07-18 | Nec Corp | 情報処理装置 |
JPH0475138A (ja) * | 1990-07-18 | 1992-03-10 | Nec Corp | プログラムサイズ圧縮装置 |
JPH04370832A (ja) * | 1991-06-19 | 1992-12-24 | Nec Corp | プロセッサ回路 |
JP2000267848A (ja) * | 1999-01-13 | 2000-09-29 | Toshiba Corp | 情報処理装置 |
JP2002318686A (ja) * | 2001-04-19 | 2002-10-31 | Sony Corp | プロセッサ |
JP2003022180A (ja) * | 2001-07-09 | 2003-01-24 | Mitsubishi Electric Corp | マイクロコンピュータおよびその動作方法 |
JP2008129851A (ja) * | 2006-11-21 | 2008-06-05 | Matsushita Electric Ind Co Ltd | 演算処理装置 |
JP2011243134A (ja) * | 2010-05-21 | 2011-12-01 | Mitsubishi Electric Corp | プログラム圧縮装置及びプログラム実行装置及びプログラム |
Non-Patent Citations (1)
Title |
---|
JPN6016013657; 中西恒夫,中野猛,福田晃: '辞書式コード圧縮支援機構の遺伝的アルゴリズムによる最適化' 情報処理学会研究報告 第2001巻,第39号,(2001-ARC-143), 20010511, Pages:31〜36, 社団法人情報処理学会 * |
Also Published As
Publication number | Publication date |
---|---|
JP5965262B2 (ja) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6043374B2 (ja) | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 | |
JP3842129B2 (ja) | データ処理装置およびその制御方法 | |
JP4841861B2 (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
CN101957744B (zh) | 一种用于微处理器的硬件多线程控制方法及其装置 | |
JP2006146953A (ja) | プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体 | |
JP2003099248A (ja) | プロセッサ、コンパイル装置及びコンパイル方法 | |
JP2010066893A (ja) | データプロセッサ | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
WO2003034214A1 (en) | Processors and compiling methods for processors | |
US8108843B2 (en) | Hybrid mechanism for more efficient emulation and method therefor | |
JP5712295B2 (ja) | 次命令タイプフィールド | |
JP3805314B2 (ja) | プロセッサ | |
JP2001273138A (ja) | プログラム変換装置および方法 | |
US7228528B2 (en) | Building inter-block streams from a dynamic execution trace for a program | |
KR101077425B1 (ko) | 효율적 인터럽트 리턴 어드레스 저장 메커니즘 | |
KR101497346B1 (ko) | 명령으로서 데이터 값을 평가하기 위한 시스템 및 방법 | |
JP5965262B2 (ja) | マイクロプロセッサ及びプログラムのコンパイル処理方法 | |
JP4800582B2 (ja) | 演算処理装置 | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
JP5068529B2 (ja) | 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング | |
US20040268100A1 (en) | Apparatus to implement mesocode | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
US20040268326A1 (en) | Multiple instruction set architecture code format | |
Kumar et al. | A variable vector length SIMD architecture for HW/SW co-designed processors | |
US20100153688A1 (en) | Apparatus and method for data process |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150703 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160324 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160412 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160603 |
|
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: 20160621 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160701 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5965262 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |