JP2014056446A - マイクロプロセッサ及びプログラムのコンパイル処理方法 - Google Patents

マイクロプロセッサ及びプログラムのコンパイル処理方法 Download PDF

Info

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
Application number
JP2012201009A
Other languages
English (en)
Other versions
JP5965262B2 (ja
Inventor
Hideaki Ikeura
秀明 池浦
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.)
Hitachi Information and Telecommunication Engineering Ltd
Original Assignee
Hitachi Information and Telecommunication Engineering 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 Hitachi Information and Telecommunication Engineering Ltd filed Critical Hitachi Information and Telecommunication Engineering Ltd
Priority to JP2012201009A priority Critical patent/JP5965262B2/ja
Publication of JP2014056446A publication Critical patent/JP2014056446A/ja
Application granted granted Critical
Publication of JP5965262B2 publication Critical patent/JP5965262B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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

本発明は、マイクロプロセッサ及びプログラムのコンパイル処理方法に関するものである。
RISC(Reduced Instruction Set Computer)型のマイクロプロセッサは個々の命令を簡略化することによりパイプライン処理(並行して複数の命令を処理する方式)の効率を高め、処理性能の向上をはかっている。また低速な記憶装置へのアクセスを極力へらすため高速なレジスタを多数備え、レジスタ間での処理をすることで、処理性能の向上をはかっている。しかし、命令を簡略化したことにより、命令実行数が増えコンパイル後のアセンブラ命令数が増大した。さらに近年プログラムの複雑化、大容量化に伴い、記憶装置の大容量化が必要となり、マイクロプロセッサのチップ面積の増大化を招いている。また低速な記憶装置をアクセスすることが多くなったことで、パイプライン中にCPUがストールしなければならないことも多く、パイプラインによる処理速度の向上も難しくなってきている。
図6は、従来のマイクロプロセッサの一構成例を示す図である。図示のように、マイクロプロセッサ690は、CPU600、記憶装置601および入出力制御装置602を含む。CPU600は、記憶装置601および入出力制御装置602と内部バス603を介して接続され、セレクタ604、アドレス加算器605、演算及び命令実行制御装置608、キャッシュ装置609、命令デコーダ612および命令レジスタ616を備える。また、周辺装置650は、CPU600と独立に動作できる装置であり、内部バス603を介してCPU600と接続することができる。たとえば計時タイマ装置等である。また装置構成上周辺装置650はなくても良い。クロック生成装置651は、クロックを生成してチップ全体へ送り出す装置である。
ここで、CPU600は、中央処理装置で命令実行制御及び演算を行う装置である。記憶装置601は、RAMやROMなどの低速記憶装置である。入出力制御装置602は、装置外部からのデータやプログラムの入出力制御を行う装置である。内部バス603は、CPU600と記憶装置601や入出力制御装置602との間でデータのやり取りを行うための内部バスである。セレクタ604は、アドレス選択のためのセレクタである。アドレス加算器605は、命令アドレスに命令長の加算を行う。命令は固定長である。キャッシュ装置609は、データ及び命令をキャッシュするための高速記憶装置である。命令デコーダ612は、命令のデコードを行い演算及び命令実行制御装置608の処理回路の実行制御信号を作成する。演算及び命令実行制御装置608は、命令実行のための初期アドレス生成、アドレス更新タイミング生成、データ取り込みタイミング生成を行うとともに、セレクタ604、アドレス加算器605、キャッシュ装置609、命令デコーダ612の制御を行い、また演算を実行する装置である。
上記記憶装置601には、ソースプログラムをコンパイル処理したアセンブラコードのプログラムが格納されている。以下、従来のコンパイル処理について述べる。
図12は、ソースプログラムをコンパイル処理する従来の処理例を示す図である。図中の左側のソースコードを含むソースプログラム1200をコンパイルすると、コンパイル後1201に示すようにアセンブラコードが配置されるが、そこには冗長な命令列が多数存在する。
図2は、従来のマイクロプロセッサにおけるパイプライン処理例を示す図である。
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等の記憶装置の使用効率が悪い。
上述のように、RISC型マイクロプロセッサ(LSI)において、プログラムの複雑化に伴い低速な記憶装置(ROM,RAM)が増大化傾向にあり、チップコストに大きな影響を与えている。またRISC型マイクロプロセッサでは1命令を単純な動作にしているため、所望の処理を実現するためには多くの命令を必要とする。このため低速なROM、RAMにアクセスする回数がふえ、パイプライン制御にCPUのストール等の影響がでるおそれがある。そこで、低速記憶装置の容量を減らし、低速記憶装置へのアクセス回数を減らすことが課題となってきた。その解決方法の1つとして、記憶装置に入れるプログラムを圧縮して容量を減らすことで低速記憶装置へのアクセスを減らし、記憶容量を減らすことが考えられる。
図11は、圧縮命令に係る従来のマイクロプロセッサの一構成例を示す図である。図中のマイクロプロセッサ1190において、CPU1100、記憶装置1101、入出力制御装置1102、内部バス1103、セレクタ1104、アドレス加算器1105、演算及び命令実行制御装置1108、キャッシュ装置1109、命令デコーダ1112、命令レジスタ1116、周辺装置1150およびクロック生成装置1151は、上述した図6のマイクロプロセッサ690における同名の構成要素に対応する。
図11のマイクロプロセッサ1190が、図6のマイクロプロセッサ690と異なる点は、圧縮命令に係る圧縮伸張器1130を備える点である。圧縮伸張器1130は、圧縮命令を読解し、命令を圧縮命令が置かれているメモリから命令フェッチするものである。
図10は、圧縮命令に係る従来のマイクロプロセッサにおけるパイプライン処理例を示す図である。
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に記載されている。
特開2001−318788号公報
従来のような圧縮命令を用いる場合、圧縮命令の伸張に伴う命令フェッチ、および圧縮命令の読解によりパイプラインにペナルティがある。また、圧縮命令の伸張のための命令およびデータの格納メモリが必要となる。上記特許文献1のものは、プログラム中の命令および命令列をより短い仮命令で置き換えて記憶装置に格納し、実行時にこの仮命令を対象となる命令および命令列に置き換えて実行するものである。しかし、この場合、仮命令と命令および命令列を同じ記憶装置内に格納しておくため、命令置き換え時、仮命令デコード後に、記憶装置へのアクセスが必要で、仮命令と通常命令の切り替え時パイプラインが乱れ、性能が悪化する。また、命令置き換えには、複雑な計算(圧縮された命令を伸張する回路等)を有するため、論理回路が複雑になる等の問題がある。
ところで、RISC型マイクロプロセッサのプログラムコンパイル後のアセンブラ命令列を小さな単位で見ると、同じ様な命令列が存在する。小さな同様の命令列を1命令で置き換えることができれば、ROM、RAMの使用量を減らすことができ、チップサイズを小さくできる。またプログラムサイズを小さくすることは、ROM、RAMへのアクセスが少なくなることを意味し、キャッシュにない場合のペナルティが減ることになる。ただし、小さな同様の命令列を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)に記載のプログラムのコンパイル処理方法。
本発明によれば、通常ケースと同等の性能を有し、プログラムの使用するメモリ容量を減らすことができる。具体的には、ダミー命令をレジスタ内にある共通の処理に置き換える。本発明では、本来の共通化コードをそのまま実行した場合とほぼ同様の処理時間で実行する効果がある。また本発明では、共通処理をダミー命令で置き換えたことにより記憶装置のアセンブラコード量を削減する効果がある。さらに、製品全体から見ると、本発明では、小規模な論理追加・変更でチップの面積増加を抑える効果がある。また本発明では、アセンブラコード量の削減により低速な記憶装置へのアクセスを減らすことができ、結果としてスループットを向上させる効果がある。さらに、本発明により、アセンブラコード削減により記憶装置の使用量を減らすことができる。同じ処理を行う場合なら記憶装置の実装容量を減らすことができチップ面積を減らす効果がある。記憶装置の実装容量が同じであるならコードの削減効果によりより多くの処理を入れ込むことができる効果がある。
このような効果が得られる理由は次のとおりである。すなわち、数命令の命令列をダミー命令1命令に置き換えることによりプログラムをコンパイルした時のコード量を削減できるからである。共通化命令列をサブ記憶レジスタに記憶していることで、ダミー命令の命令フェッチが完了(命令が確定)した時点でダミー命令の命令コード(固定値)と命令開始位置から命令デコーダに送る命令の選択をキャッシュ装置側からサブ記憶レジスタ側へ切り替え、ダミー命令の次主命令アドレスを次主命令アドレスレジスタに記憶する。ダミー命令の命令コードと命令開始位置からサブ記憶レジスタ内に格納されている共通化命令列を選択し、この選択した共通化命令列をデコード装置に送り、以降セットされたアドレスに従い命令を実行してゆく。一方命令列の終了アドレスはダミー命令の命令数フィールドより作成され実行アドレスと比較器において比較される。比較器においては、アドレスが一致した場合は命令フェッチアドレスを次命令アドレスに切り替えるための信号を出力する。アドレス切り替え信号により先行命令フェッチアドレスを次主命令アドレスレジスタの値に切り替え、命令の先行フェッチを行う。これによりダミー命令から共通化命令列に切り替え、共通化命令からダミー命令の次命令への切り替えがパイプラインを乱すことなく行える。以上により共通化命令列をダミー命令で置き換えて実行してもほぼ同等の実行時間を維持でき、共通化命令列をダミー命令で置き換え記憶装置内のコード量を削減することにより、記憶装置の容量を削減しチップ面積を小さくできる。例えば、御用マイクロコンピュータのチップ面積を小さくできる。
本発明に係るマイクロプロセッサの一構成例を示す図である。 従来のマイクロプロセッサにおけるパイプライン処理例を示す図である。 本発明に係るマイクロプロセッサにおけるパイプライン処理例を示す図である。 本発明におけるダミー命令のフォーマットの一例を示す図である。 ソースプログラムをアセンブラコードにコンパイル処理する本発明の処理例を示す図である。 従来のマイクロプロセッサの一構成例を示す図である。 アセンブラコードのメモリ配置の一例を示す図である。 x番地に格納された命令列と対応するダミー命令を示す図である。 命令共通化コンパイラ処理の一例を説明するためのフローチャートである。 圧縮命令に係る従来のマイクロプロセッサにおけるパイプライン処理例を示す図である。 圧縮命令に係る従来のマイクロプロセッサの一構成例を示す図である。 ソースプログラムをコンパイル処理する従来の処理例を示す図である。
図1は、本発明に係るマイクロプロセッサの一構成例を示す図である。図示のように、マイクロプロセッサ190は、CPU100、記憶装置101および入出力制御装置102を含む。CPU100は、記憶装置101および入出力制御装置102と内部バス103を介して接続され、セレクタ104、アドレス加算器105、次主命令アドレスレジスタ107、演算及び命令実行制御装置108、キャッシュ装置109、レジスタ110、比較器111、命令デコーダ112、セレクタ113、サブ記憶レジスタ114、アドレス生成器115、命令レジスタ116、およびカウンタ117を備える。また、周辺装置150は、CPU100と独立に動作できる装置であり、内部バス103を介してCPU100と接続することができる。たとえば計時タイマ装置等である。また装置構成上周辺装置150はなくても良い。クロック生成装置151は、クロックを生成してチップ全体へ送り出す装置である。
ここで、CPU100は、中央処理装置で命令実行制御及び演算を行う装置である。記憶装置101は、RAMやROMなどの低速記憶装置である。入出力制御装置102は、装置外部からのデータやプログラムの入出力制御を行う装置である。内部バス103は、CPU100と記憶装置101や入出力制御装置102との間でデータのやり取りを行うための内部バスである。セレクタ104は、アドレス選択のためのセレクタである。アドレス加算器105は、命令アドレスに命令長の加算を行う。命令は固定長である。キャッシュ装置109は、データ及び命令をキャッシュするための高速記憶装置である。これは、本例では記憶装置101から内部バス103を介して命令やデータを次処理装置に送るための中継装置となっているが、構成によってはキャッシュ装置を通らず次処理装置に命令及びデータを送るパスとキャッシュ装置経由で命令及びデータを送る並列なパスが存在してもよい。
命令デコーダ112は、命令のデコードを行い演算及び命令実行制御装置108の処理回路の実行制御信号を作成する。命令レジスタ116は、実行する命令を保持するレジスタである。演算及び命令実行制御装置108は、命令実行のための初期アドレス生成、アドレス更新タイミング生成、データ取り込みタイミング生成を行うとともに、セレクタ104、アドレス加算器105、キャッシュ装置109、命令デコーダ112の制御を行い、また演算を実行する装置である。さらにこれは実行命令を送出する。レジスタ110は、ダミー命令時、ダミー命令の命令数を保持するレジスタである。アドレス生成器115は、サブ記憶レジスタ114の先頭アドレス+命令開始位置×命令長で計算されるアドレスを生成する。
カウンタ117は、演算及び命令実行制御装置108から送られる命令更新信号をトリガとするカウンタである。これは比較一致信号を検出するか命令レジスタ116から送出されるダミー命令の命令コードを検出すると初期化される。比較器111は、レジスタ110とカウンタ117の比較を行う比較器である。これはレジスタ110とカウンタ117が一致した場合一致信号を出力する。セレクタ113に出力される一致信号はセレクタ104に出力される信号より1サイクル遅い信号となるようフリップフロップを通した信号になっている。次主命令アドレスレジスタ107は、戻り先命令アドレスを格納するレジスタである。これはサブ記憶レジスタ114以外のアドレス時に更新され、サブ記憶レジスタ114のアドレス時はデータが保持される構造となっている。サブ記憶レジスタ114は、共通化命令列及びその共通化命令列で使用されるデータを格納するレジスタである。これは内部バス103を介して読み書きされる。
このように、本マイクロプロセッサは、ダミー命令を含むアセンブラコードが格納される記憶装置101と、内部バス103を介して記憶装置101に接続されるCPU(中央処理装置)100とを備える。ここで、CPU100は、演算及び命令実行制御を行う演算及び命令実行制御装置108と、実行すべき命令を保持する命令レジスタ116と、ダミー命令に対応する複数の命令からなる共通化命令列を格納するサブ記憶レジスタ114と、命令レジスタ116またはサブ記憶レジスタ114から出力される命令のデコードを行い演算及び命令実行制御装置108への制御信号を作成する命令デコーダ112とを有する。この命令デコーダ112は、命令レジスタ116にダミー命令以外の命令が取り込まれたときは命令レジスタ116から出力される命令のデコードを行い、命令レジスタ116にダミー命令が取り込まれたときはサブ記憶レジスタ114から出力される命令のデコードを行う。また、ダミー命令中の命令数を保持するレジスタ110と、演算及び命令実行制御装置108から送られる命令更新信号をトリガとするカウンタ117とを有しており、レジスタ110とカウンタ117の一致信号が出力されると、ダミー命令の次の命令が命令レジスタ116に取り込まれる。
本発明と従来のものとを比較すると、従来の圧縮命令方式では命令を圧縮して実行時に伸張するのに対して、本発明では命令列自体をレジスタに格納しておく点で異なる。また本発明では伸長回路が不要である。さらに本発明では伸張のための辞書に相当するデータも不要であるためCPUよりも低速な記憶装置にアクセスも発生しない。
上述のように記憶装置101には、ソースプログラムをコンパイル処理したダミー命令を含むアセンブラコードのプログラムが格納される。以下、そのコンパイル処理方法について説明する。
図5は、ソースプログラムをアセンブラコードにコンパイル処理する本発明の処理例を示す図である。図において、ソースコードを含むソースプログラム500をコンパイルすると、コンパイル後:共通化前510に示すようなアセンブラコードが配置される。さらに命令列を共通化した共通化後には、コンパイル後:共通化後550に示すようなアセンブラコードが配置される。
図5において、ソースプラグラム500は、共通化対象外にしたいソースプログラム領域を共通化除外開始コンパイラ指示501と共通化除外終了コンパイラ指示502で挟み込む。本例では共通化対象外の領域が一ヶ所であるが数ヶ所あっても構わない。ソースプラグラムをコンパイルした後のアセンブラコードのうち、共通化除外開始指示511,551と共通化除外終了指示512,552で挟まれたアセンブラコード513とアセンブラコード553は共通化対象外であり、コンパイル後:共通化前510とコンパイル後:共通化後550で両者のアセンブラコードに変化はない。ここでコンパイラ共通化除外が必要な理由は、その部分のプログラムを用いて共通化処理を実行するためである。例えば、図5の右下に記載のようなx番地520から配置されている共通化命令列521及びデータをサブ記憶レジスタ114に最初に書き込むときの処理等を実行するための処理プログラムが必要となるからである。
ここで、コンパイル後:共通化前510はコンパイル実行途中を示しており、共通化除外開始指示511と共通化除外終了指示512を有する点で従来のコンパイラ結果と異なる。以下に、コンパイル後:共通化前510からコンパイル後:共通化後550への命令共通化コンパイラ処理方法について説明する。
図9は、命令共通化コンパイラ処理の一例を説明するためのフローチャートである。図示のように、処理910にて、コンパイル後:共通化前510のアセンブラコード514に対し命令共通化コンパイルを開始する。処理911にて、アセンブラコード514の領域の探索が終了したかどうかを判定する。探索が終了していない場合、次の処理912を実行する。処理912にて、冗長な命令列を探索する。ここで冗長な命令列とは、特定の命令列(例えば命令1と命令2の命令列)が複数回出現する命令列をいう。処理913にて、t回以上冗長な命令列が見つかった場合、その出現回数を記録し、ダミー命令と対応付けし記録する。なお出現条件tはコンパイル時変数指定する。以下、冗長な命令列とダミー命令との対応付けについて説明する。
図7は、アセンブラコードのメモリ配置の一例を示す図である。図において、配置710は、本例におけるアセンブラコード514の命令配置を表す。配置750は、本例におけるアセンブラコード554の命令配置を表す。配置730は、本例における共通化命令列521の命令配置を表す。本例では、アセンブラコード514の命令配置において、アセンブラコード711には、命令1と命令2の命令列=j個、命令1と命令2と命令7の命令列=y個、命令4と命令5の命令列=z個(j>y>z>=t)が存在し、その他の冗長命令はないものとする。本例では、図7に示すように、命令1と命令2の命令列をダミー命令1と対応付け、また命令1と命令2と命令7の命令列をダミー命令2と対応付け、さらに命令4と命令5の命令列をダミー命令3と対応付ける。
図9に戻って説明する。処理913が終了したら処理911に戻り、処理911から処理913を繰り返す。処理911にてアセンブラコード514の領域の探索が終了したら処理914に移行する。処理914にて、図7右下の配置730に示すように、記録していた命令列を頻出順にx番地の弱番から配置する。図7において、配置730は共通化命令列521の命令列の最終的な配置の詳細を示す。本例の場合、上述のように冗長な命令列の個数の関係が「j>y>z>=t」であることから、命令1と命令2の命令列が最も多く、次に命令1と命令2と命令7の命令列が多く、命令4と命令5の命令列は最も少ない。このため、配置730には、x番地から命令1、命令2、命令7、命令4、命令5のように配置される。命令5以降は空である。また、命令1と命令2の命令列と命令1と命令2と命令7の命令列の重複部分(命令1と命令2)はまとめられる。このように冗長な命令列は共通化され、共通化命令列521が生成される。そして処理915にて、図7中の曲線矢印に示すように、最も長い命令列である命令1と命令2と命令7の命令列をダミー命令2に、次に命令1と命令2の命令列をダミー命令1に、命令4と命令5の命令列をダミー命令3に置き換え、その他の命令を再配置する。図7において、配置750はダミー命令に置き換え後、その他の命令を含め命令およびデータの再配置を行った結果である。本例では命令のみ記載してあるが、命令で使用するオペランドデータが配置750に混じっていてもよい。その後、処理916にてコンパイル処理終了となる。
このように、マイクロプロセッサ190の記憶装置101に格納されるダミー命令を含むアセンブラコードを生成するためのプログラムのコンパイル処理方法は、第1のソースプログラム領域と第2のソースプログラム領域を有するソースプラグラムをコンパイルするためのコンパイル処理と、ソースプラグラムのコンパイル後、第1のソースプログラム領域に対応するアセンブラコード(共通化除外部分)を用いて、第2のソースプログラム領域に対応するアセンブラコード(共通化処理部分)中の冗長な命令列を共通化するための共通化処理とを含む。この共通化処理は、冗長な命令列を探索する処理と、t回以上冗長な命令列が見つかった場合その出現回数を記録しダミー命令と対応付けする処理と、記録した命令列を順に配置して命令列を共通化する処理と、共通化された命令列を対応する前記ダミー命令に置き換え、その他の命令を再配置する処理とを有する。ここで、記録した命令列を順に配置する場合、上述のように記録した命令列を頻出順にx番地の弱番から配置することができる。
図4は、本発明におけるダミー命令のフォーマットの一例を示す図である。ダミー命令は、固定長命令セットであり、命令コード、命令開始位置および命令数を含む。命令長はシステムによる。命令開始位置は、命令列の開始位置を表し、サブ記憶レジスタの開始番号に対応する。命令数は、命令列の終了条件を示し、命令実行数−1の値である。例えば命令実行数=2のとき、命令数のフィールドには「1」が設定される。このように、ダミー命令は、命令コード、サブ記憶レジスタの開始番号に対応する命令開始位置、およびダミー命令に対応する複数の命令の命令実行数から1を引いた値である命令数を含む。
図8は、x番地に格納された命令列と対応するダミー命令を示す図である。これは、図7の配置750:アセンブラコード554の命令配置におけるダミー命令1、ダミー命令2、およびダミー命令3を図4に示すダミー命令のフォーマットの形式で表したものである。ダミー命令1は、図7の配置730:共通化命令列521の命令配置から命令コード810となり、ダミー命令2は命令コード820となり、ダミー命令3は命令コード830となる。以上より、図7の配置750:アセンブラコード554の命令配置において、アセンブラコード514における命令1と命令2のj個の命令列がダミー命令1に置き換えられ、また命令1と命令2と命令7のy個の命令列がダミー命令2に置き換えられ、さらに命令4と命令5のz個の命令列がダミー命令3に置き換えられることから、各命令の命令長を2バイトとすると、(2j−j)×2バイト+(3y−y)×2バイト+(2z−z)×2バイトの領域を、命令共通化前の配置710:アセンブラコード514の命令配置に比べ少なくできる。なお本例では、命令長を2バイトの固定長にしたが命令長は2バイト以上で可変長でも構わない。
図3は、本発明に係るマイクロプロセッサにおけるパイプライン処理例を示す図である。マイクロプロセッサ起動後、共通化対象外のアセンブラコードまたは外部から入出力制御装置102の制御のもと内部バス103を通して共通化命令列をサブ記憶レジスタ114に格納しておく。本例では、命令2と命令3を共通化命令とする。
ST1(ステージ1)では、演算及び命令実行制御装置108が初期アドレスをセットし、命令1を命令フェッチする(IF1)。
ST2(ステージ2)では、命令レジスタ116が出力する命令1をデコードする(ID1)。命令2に関し、ダミー命令を命令フェッチする(IF5)。キャッシュ装置109が出力するダミー命令を命令レジスタ116に取り込む。アドレス生成器115は、キャッシュ装置109が出力するダミー命令の命令コード及び命令開始位置情報からサブ記憶レジスタ114の実行アドレスを生成する。キャッシュ装置109が出力するダミー命令の命令コードよりセレクタ104はアドレス生成器115が出力するアドレスを選択し出力する。セレクタ113は、セレクタ104で示される命令アドレスに従いサブ記憶レジスタ114内の共通化命令2を命令デコーダ112に送る。このようにダミー命令の命令コードおよび命令開始位置に基づいて、サブ記憶レジスタ114に格納された対応する共通化命令列の命令が選択される。アドレス加算器105は、セレクタ104の出力するアドレスに命令長を加算する。キャッシュ109が出力するダミー命令の命令コードからカウンタ117に初期値をセットする。キャッシュ109が出力するダミー命令の命令コードを検出したため、命令数(実行命令数−1の値が入っている)をレジスタ110にセットする。本例の場合、2つの命令の共通化命令を実行するので1がセットされる。
ST3(ステージ3)では、命令1を実行して(EX1)、命令1の処理を終了する。命令2に関し、サブ記憶レジスタ114が出力する共通化命令2をデコードする(ID2)。命令3に関し、共通化命令3を選択する(IS3)。セレクタ113は、セレクタ104で示される命令アドレスに従い、サブ記憶レジスタ114内の共通化命令3を命令デコーダ112に送る。演算及び命令実行制御装置108より命令実行信号が出力されカウンタ117に1が加算される。
ST4(ステージ4)では、命令2に関し、共通化命令2を実行して(EX2)、共通化命令2の処理を終了する。命令3に関し、共通化命令3をデコードする(ID3)。命令4を命令フェッチする(IF4)。比較器111においてレジスタ110が示す値とカウンタ117が一致し、一致信号が出力される。セレクタ104では、比較器111の一致信号から次主命令アドレスレジスタ107のアドレスを選択し、キャッシュ装置109に送出する。キャッシュ装置109では、セレクタ104の値に従いダミー命令の次命令である命令4を送出する。キャッシュ装置109が送出した命令4を命令レジスタ116に取り込む。セレクタ104は、命令レジスタ116が出力する命令4の命令コードより、アドレス加算器105の値を出力する。セレクタ113は、セレクタ104で示される命令アドレスに従い、命令レジスタ116の命令4を命令デコーダ112に送出する。セレクタ104から出力されたアドレスにアドレス加算器105で命令長が加算されセレクタ104に出力される。
ST5(ステージ5)では、命令3に関し、共通化命令3を実行して(EX3)、共通化命令3の処理を終了する。命令4に関し、命令レジスタ116が出力する命令4をデコードする(ID4)。
ST6(ステージ6)では、命令4を実行して(EX4)、命令4の処理を終了する。
以上のように本発明によれば、命令の切り替えがパイプラインを乱すことなく実行できる。なお、サブ記憶レジスタの使用方法として、大規模なループを1つだけ入れて使用する例がある。この場合、常時キャッシュインと同じ効果を生む。
100 CPU
101 記憶装置
102 入出力制御装置
103 内部バス
104 セレクタ
105 アドレス加算器
107 次主命令アドレスレジスタ
108 演算及び命令実行制御装置
109 キャッシュ装置
110 レジスタ
111 比較器
112 命令デコーダ
113 セレクタ
114 サブ記憶レジスタ
115 アドレス生成器
116 命令レジスタ
117 カウンタ
150 周辺装置
151 クロック生成装置
190 マイクロプロセッサ

Claims (7)

  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に記載のプログラムのコンパイル処理方法。
JP2012201009A 2012-09-12 2012-09-12 マイクロプロセッサ及びプログラムのコンパイル処理方法 Expired - Fee Related JP5965262B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 プログラム圧縮装置及びプログラム実行装置及びプログラム

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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