JP2008269052A - 演算処理回路、半導体集積回路、及びプログラムの変換方法 - Google Patents
演算処理回路、半導体集積回路、及びプログラムの変換方法 Download PDFInfo
- Publication number
- JP2008269052A JP2008269052A JP2007108117A JP2007108117A JP2008269052A JP 2008269052 A JP2008269052 A JP 2008269052A JP 2007108117 A JP2007108117 A JP 2007108117A JP 2007108117 A JP2007108117 A JP 2007108117A JP 2008269052 A JP2008269052 A JP 2008269052A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- sequence
- instruction sequence
- program
- call
- 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.)
- Pending
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】 プログラムのサイズを十分に圧縮することは困難な場合があった。
【解決手段】 演算処理回路113は、第1命令列と第2命令列を含む変換前プログラムのうち、第1命令列と一致又は近似する第2命令列が呼出命令に置換された変換後プログラムを実行する。演算処理回路113は、変換後プログラムの呼出命令の実行に伴って特定された第1命令列の命令を、変換後プログラムが格納されたメモリ21から順次フェッチする。そして、演算処理回路113は、メモリ21からフェッチされた命令を利用して、呼出命令に置換された変換前プログラムの第2命令列の命令を順次実行する。
【選択図】 図1
【解決手段】 演算処理回路113は、第1命令列と第2命令列を含む変換前プログラムのうち、第1命令列と一致又は近似する第2命令列が呼出命令に置換された変換後プログラムを実行する。演算処理回路113は、変換後プログラムの呼出命令の実行に伴って特定された第1命令列の命令を、変換後プログラムが格納されたメモリ21から順次フェッチする。そして、演算処理回路113は、メモリ21からフェッチされた命令を利用して、呼出命令に置換された変換前プログラムの第2命令列の命令を順次実行する。
【選択図】 図1
Description
本発明は、演算処理回路、半導体集積回路、及びプログラムの変換方法に関する。
近年、半導体集積回路(LSI(Large Scale Integration))の高集積化、高機能化の進展が著しい。これに伴い、LSI内でのデータ処理や内部制御のために、LSI内にCPU(Central Processing Unit)を組み込むことが行われている。特に大規模なLSIではCPU本体の他に命令メモリ、データメモリや周辺I/O等も共にLSIに組み込み、1チップでマイクロプロセッサを構成することも行われている。マイクロプロセッサにおいても、処理内容の複雑化、高度化が強く求められている。また、当然ながら、半導体製品の低コスト化の要請も著しい。
マイクロプロセッサの処理内容の高度化を進展させるためには、マイクロプロセッサの動作に用いられるプログラムを大規模なものにする必要がある。しかしながら、プログラムの大規模化は、メモリ容量の増大を伴い、チップ面積の増大を招いてしまう。従って、マイクロプロセッサの設計にあたっては、マイクロプロセッサの機能の高度化を果たしながら、チップ面積の増大を抑制する必要がある。より具体的には、プログラムの高機能化を行いながら、CPU本体、周辺回路、およびメモリサイズの増大を抑制する必要がある。
ここで、図7乃至図9を参照して、特許文献1記載の技術について説明する。図7は、従来のマイクロプロセッサのブロック図である。図8は、従来のマイクロプロセッサのマクロ命令の構成を示す説明図である。図9は、従来のマイクロプロセッサにおける修正を説明するための説明図である。
特開2006−293673号公報
図7に示すように、マイクロプロセッサは、定義メモリ111、内部バス112、CPU113を備える。CPU113は、内部バス112を介して定義メモリ111にアクセスする。
プログラム114は、CPU113が直接実行可能な命令コード(以下、命令という。)、命令セットAまたはBの実行を指示するマクロ命令A、マクロ命令B、マクロ命令AまたはBの直後に配置された修正情報A1、A2、B1を有する。
命令セットAは、CPU113が直接実行可能な複数の命令列である。マクロ命令Aの読み込みによって、命令セットAは実行対象の命令として選択され実行される。CPU113は、命令セットの実行前、マクロ命令A、修正情報A1又はA2に基づいて、命令セットAの一部を修正する。そして、CPU113は、修正された命令セットAを実行する。命令セットBについても同様である。
図8に、従来のマイクロプロセッサにおけるマクロ命令の構成を示す説明図を示す。図8に示すように、マクロ命令は、マクロ命令識別コード121、命令セット識別コード122、修正モード123、PC増加値124を有する。
マクロ命令識別コード121は、マクロ命令を通常の命令と区別するためのコードである。命令セット識別コード122は、定義メモリ111中に格納されている複数の命令セットを識別するためのコードである。修正モード123は、命令セットの具体的な修正方法を指示するコードである。なお、修正モード123には、修正無し(00)、上書きモード(01)、交換モード(10)、コピーモード(11)の4種類がある。
PC増加値124は、マクロ命令実行後のプログラムカウンタの増加分を示す。マクロ命令の直後に配置する修正情報の大きさを表す。
図9に、従来のマイクロプロセッサにおける修正情報の構成の説明図を示す。図9に示すように、修正情報131a〜131cは2ワードで構成されている。上書きモード131aの修正情報は、上書きする命令、上書きする位置からなる。交換モード131bの修正情報は、交換する位置1、交換する位置2からなる。コピーモード131cの修正情報は、コピー元位置、コピー先位置からなる。
図7のマイクロプロセッサは、プログラム114から命令を順次読み込んで、読み込んだ命令に基づいて所定の処理を実行する。
CPU113はマクロ命令を読み込むと、まずプログラムカウンタにPC増加値124を加算し、次の命令のアドレスを求め、これを保持する。次にCPU113は、マクロ命令の直後の修正情報を読み込んで解釈し、マクロ命令の命令識別コード122が指定する定義メモリ111内の命令セットを修正モード123に従い修正する。具体的には、修正モード123が上書きモード01の場合、上書きする位置の命令を上書きする命令に置き換える。修正モード123が交換モード10の場合、交換位置1と交換位置2の命令を入れ替える。修正モード123がコピーモード11の場合、コピー元位置の命令をコピー先位置に上書きする。
CPU113はPC増加値124の示すワード数まで修正情報の読み込みと命令セットの修正を繰り返し行う。修正が完了すると修正された命令セットの命令を順次読み込み処理を実行する。命令セットの実行が終了すると、CPU113は保持したメモリアドレスの次のメモリアドレスをプログラムカウンタに書き戻し、プログラム114から命令を読み込み実行する通常の動作に戻る。
マクロ命令の修正モード123が修正無しである場合には、上記修正動作を行わずに命令識別コード122が指定する命令セットを実行する。命令セットの実行完了後の動作は修正がある場合と同様である。
上述のように、定義メモリに格納された命令セットの内容を適宜修正して実行すれば、メモリ容量の増大を抑制しつつ、多種類の類似した命令列を構成することが可能である。しかしながら、多種類の類似した命令列を構成するためには、前提として修正情報が必要となる。修正情報の比率が増大する場合には、プログラムの縮小効果が相殺され、全体としてプログラムサイズを十分に縮小することができない。命令セットの命令ステップ数が少ない場合、1つのマクロ命令で置き換えられる命令個数に対する修正情報の比率が増大し、プログラムの縮小効果が相殺されてしまう。このように、従来、プログラムのサイズを十分に圧縮することは困難な場合があった。
本発明にかかる演算処理回路は、第1命令列と第2命令列を含む変換前プログラムのうち、前記第1命令列と一致又は近似する前記第2命令列が呼出命令に置換された変換後プログラムを実行する演算処理回路であって、前記変換後プログラムの前記呼出命令の実行に伴って特定された前記第1命令列の命令を、前記変換後プログラムが格納されたメモリから順次フェッチし、前記メモリからフェッチされた前記命令を利用して、前記呼出命令に置換された前記変換前プログラムの前記第2命令列の命令を順次実行する。
本発明にかかる半導体集積回路は、第1命令列と第2命令列を含む変換前プログラムのうち、前記第1命令列と一致又は近似する前記第2命令列が呼出命令に置換された変換後プログラムを実行する半導体集積回路であって、前記変換後プログラムが格納されたメモリと、前記変換後プログラムの前記呼出命令の実行に伴って特定された前記第1命令列の命令を、前記メモリから順次フェッチし、前記メモリからフェッチされた前記命令を利用して、前記呼出命令に置換された前記変換前プログラムの前記第2命令列の命令を順次実行する演算処理回路と、を備える。
本発明にかかるプログラムの変換方法は、コンピュータを利用して、第1命令列と第2命令列を含む変換前プログラムを前記第1命令列と呼出命令を含む変換後プログラムに変換するプログラムの変換方法であって、前記第1命令列と一致又は近似する前記第2命令列を特定し、特定された前記第2命令列を呼出命令に置換し、前記呼出命令に前記第1命令列の命令のアドレス情報を設定し、前記呼出命令に前記第1命令列の命令と前記第2命令列の命令間の更新情報を設定する。
プログラムのサイズを十分に圧縮することができる。
以下、図面を参照しつつ、本発明の実施の形態について説明する。なお、各実施の形態は、説明の便宜上、簡略化されている。図面は簡略的なものであるから、図面の記載を根拠として本発明の技術的範囲を狭く解釈してはならない。図面は、もっぱら技術的事項の説明のためのものであり、図面に示された要素の正確な大きさ等は反映していない。同一の要素には、同一の符号を付し、重複する説明は省略するものとする。
[第1の実施形態]
以下、図1乃至図4を用いて、第1の実施形態について説明する。図1は、マイクロプロセッサの概略的なブロック図である。図2は、プログラムの変換を説明するための説明図である。図3は、call命令の説明図である。図4は、マイクロプロセッサによる変換後プログラムの実行を説明するための説明図である。
以下、図1乃至図4を用いて、第1の実施形態について説明する。図1は、マイクロプロセッサの概略的なブロック図である。図2は、プログラムの変換を説明するための説明図である。図3は、call命令の説明図である。図4は、マイクロプロセッサによる変換後プログラムの実行を説明するための説明図である。
図1に示すように、マイクロプロセッサ10は、CPU113、内部バス20、命令メモリ21、データメモリ22を備える。CPU113、命令メモリ21、データメモリ22は、それぞれ内部バス20に接続される。CPU113と命令メモリ21又はデータメモリ22間の信号等の伝達は、内部バス20を介して実行される。
CPU113は、命令実行部11、プログラムカウンタ(第1プログラムカウンタ)12、プログラムカウンタ(第2プログラムカウンタ)13、擬似サブルーチン実行制御部14、命令修正部15、セレクタ16、内部バスインターフェイス17、演算部18、レジスタ19、を備える。
マイクロプロセッサ10は、モノリシックな半導体チップであって、命令実行部11〜レジスタ19、命令メモリ21、データメモリ22を共通の半導体基板上に有する。
まず、CPU113の構成要素の接続関係について説明する。図1に示すように、内部バスインターフェイス17には、レジスタ19の出力、命令実行部11の出力、セレクタ16の出力、らが接続される。命令修正部15には、内部バスインターフェイス17の出力、擬似サブルーチン実行制御部14の出力が接続される。命令実行部11には、命令修正部15の出力が接続される。プログラムカウンタ12には、命令実行部11の出力、擬似サブルーチン実行制御部14の出力、らが接続される。プログラムカウンタ13には、命令実行部11の出力、擬似サブルーチン実行制御部14の出力、らが接続される。擬似サブルーチン実行制御部14には、命令実行部11の出力が接続される。セレクタ16には、プログラムカウンタ12の出力、プログラムカウンタ13の出力、擬似サブルーチン実行制御部14の出力、らが接続される。演算部18には、命令実行部11の出力が接続される。レジスタ19には、命令実行部11の出力が接続される。演算部18とレジスタ19とは、相互に入出力可能である。同様に、レジスタ19と内部バスインターフェイス17とは、相互に入出力可能である。
上述の命令メモリ21、データメモリ22は、内部バス20を介して、内部バスインターフェイス17に接続される。命令メモリ21には、後述の変換後プログラムが格納される。データメモリ22には、処理対象データ、実行結果、プログラム実行中のレジスタ19の値などが一時的に格納される。データメモリ22は、CPU113がプログラムを実行する上で当然に必要となるものである。命令メモリ21とデータメモリ22は、1つのメモリモジュールとして機能する。
CPU113は、命令メモリ21に格納された変換後プログラムを実行する。後述するように、変換後プログラムは、通常の命令に加えて、call命令30(呼出命令)が含まれる(図3参照)。call命令30がCPU113で実行されると、call命令30によって置換された変換前プログラムの命令列がCPU113で実行される。これによって、プログラムサイズを圧縮しつつ、変換前プログラムの実行を実現することができる。そして、チップ面積の小さなマイクロプロセッサ10を実現することができる。なお、マイクロプロセッサ10の動作について後述する。
なお、call命令30の実行を契機として実行される命令列又は命令を擬似サブルーチンと呼ぶ。これに対応して、call命令30の実行を契機として実行される命令列又は命令以外の命令列又は命令をメインルーチンと呼ぶ。マイクロプロセッサ10の通常動作時は、メインルーチンの実行時と等しい。マイクロプロセッサ10の擬似動作時は、擬似サブルーチンの実行時と等しい。
以下、上述の構成要素、その動作について具体的に説明する。
内部バスインターフェイス17は、内部バス20との間で、命令やデータの転送を実行する。これにより、CPU113−命令メモリ21、CPU113−データメモリ22間の、命令やデータの転送が実現される。
内部バスインターフェイス17は、セレクタ16からの出力信号に基づいて特定されるメモリアドレスにある命令を命令メモリ21からフェッチして命令修正部15に転送する。
命令修正部15は、内部バスインターフェイス17から入力された命令を命令実行部11に転送する。なお、上述の擬似サブルーチンの実行時には、命令修正部15は、擬似サブルーチン実行制御部14からの指示に基づいて内部バスインターフェイスから入力された命令を修正し、修正した命令を命令実行部11に出力する。なお、命令修正部15は、call命令30の修正情報33(図3参照)に基づいて、内部バスインターフェイス17からの入力された命令を修正する。
命令実行部11は、命令修正部15からの命令を解釈し実行する。
命令実行部11は、call命令30を実行するとき、擬似サブルーチンの実行開始を指示する。具体的には、call命令30に格納されたメモリアドレス情報32をプログラムカウンタ13に設定する。また、call命令30に格納された修正情報33を、擬似サブルーチン実行制御部14に転送する。命令実行部11は、call命令30の実行を終えると、命令修正部15から供給される通常の命令の解釈、実行に戻る。
プログラムカウンタ12は、通常動作時に利用されるプログラムカウンタである。プログラムカウンタ12のカウント値は、順次実行される命令の命令メモリ21におけるメモリアドレスに設定される。プログラムカウンタ12のカウント値は、内部バスインターフェイス17が命令メモリ21から命令をフェッチする度に、1ずつ加算される。なお、擬似動作時には、プログラムカウンタ12のカウント値は加算されない。
プログラムカウンタ13は、擬似動作時に利用されるプログラムカウンタである。call命令30が命令実行部11で実行されたとき、プログラムカウンタ13のカウント値は、call命令30に格納されたメモリアドレスに設定される。プログラムカウンタ13のカウント値は、内部バスインターフェイス17が命令メモリ21から命令をフェッチする度に、1づつ加算される。なお、通常動作時には、プログラムカウンタ13のカウント値は加算されない。
セレクタ16は、プログラムカウンタ12から出力された信号S1又はプログラムカウンタ13から出力された信号S2を選択し、選択した信号S1又は信号S2を内部バスインターフェイス17にアドレス信号S3として出力する。セレクタ16から出力されるアドレス信号S3は、プログラムカウンタ12又はプログラムカウンタ13のカウント値と等しい。プログラムカウンタのカウント値に基づいて、フェッチ対象のメモリアドレスの番地が特定される。
call命令30の修正情報33の入力を受けて、擬似サブルーチン実行制御部14は、call命令30のメモリアドレス情報32がカウント値に設定されたプログラムカウンタ13からの信号S2をアドレス信号S3として出力するようにセレクタ16を制御する。換言すると、擬似サブルーチン実行制御部14は、プログラムカウンタ13のカウント値をフェッチ対象のメモリアドレスとして内部バスインターフェイスに出力する。また、擬似サブルーチン実行制御部14は、命令実行部11から転送されたcall命令30に格納された修正情報33を命令修正部15に転送する。また、擬似サブルーチン実行制御部14は、フェッチした命令のステップ数をカウントする。
演算部18は、命令実行部11からの入力に基づいて各種の演算処理を行う。レジスタ19は、プログラム実行中に必要な値を一時的に保持する。内部バス20は、チップ上のバスであり、同一チップ上の他の機能モジュール等と接続されている。
命令メモリ21には、命令実行部11が直接実行可能な命令で構成された変換後プログラムが格納されている。データメモリ22には、プログラム処理対象のデータやプログラム実行結果が格納される。また、データメモリ22は、プログラム実行中のレジスタ19の値の一時保存などにも利用される。内部バス20で接続された別のメモリモジュールを利用できる場合には省略してもよい。
ここで、図2に、プログラムの変換を説明するための説明図を示す。図2(a)に、変換前プログラム40の構成を示す。図2(b)に、本発明の第1の実施形態のマイクロプロセッサ10に供給する変換後プログラム41の構成を示す。
本実施形態においては、所定の規則に基づいてプログラムが変換される。変換後プログラムは、変換前プログラムよりも命令列が少ない。換言すると、変換後プログラムは、変換前プログラムよりも圧縮されている。命令列数の削減により、プログラムサイズは効果的に圧縮される。なお、変換後プログラムは、上述の命令メモリ21に保持され、上述のCPU113によって実行される。
図2(a)に示すように、メモリアドレス1(以下、メモリアドレスをaddrと表示する)の命令a、addr2の命令bを命令列1とする。
次に、命令列1と類似の命令列がaddr3以降にあるかどうかを検索する。
ここでは、図2(a)に示すように、1ステップ目が命令a、2ステップ目が命令bである命令列4がある。従って、命令列4を置換対象の命令列として特定する。
そして、命令列4の2ステップ目の命令から命令列1の2ステップ目の命令を減算し、それらの差分情報を求める。差分情報のビット数が、許容範囲内(call命令30の修正情報33のビット数内(図3参照))であれば、命令列4をcall命令30に置き換える。ここでは、命令列4のステップ目の命令は、命令列1の2ステップ目の命令と同一であり、差分情報は0である。従って、命令列4をcall命令30に置き換える。
続けて、命令列1に類似した命令列の検索を継続する。類似命令列として命令列6がある。命令列6を置換対象の命令列として特定し、上述と同様に、命令列6の2ステップ目の命令と命令列1の2ステップ目の命令を減算し、それらの差分情報を求める。そして、差分情報のビット数が、許容範囲内であれば、命令列6をcall命令30に置換する。命令列6の場合、2ステップ目の命令が命令b2である。命令b2から命令列1の2ステップ目の命令bを引いた差分情報は、call命令30に修正情報33(図3参照)として格納される。
このように、命令列1と類似する命令列の検索と変換をプログラム終端まで行う。そして、命令列1の類似する命令列のcall命令30への変換が完了する。
命令列1についての変換が完了後、他の命令列を設定し、上述と同様の処理を行う。ここでは、addr2の命令b、addr3の命令cを命令列2として設定する。そして、addr4以降に命令列2の類似命令列があるかどうかを検索する。
図2(a)に示すように、1ステップ目が命令b2ステップ目が命令c2である命令列5がある。命令列1と同様に2ステップ目の命令の差分情報が許容範囲内であれば、命令列5をcall命令30に置き換える。
さらに、同様にして、addr3の命令c、addr4の命令dを命令列3として特定し、addr5以降で命令列3の類似命令列について検索、変換を実行する。
さらに、同様にして、addr3の命令c、addr4の命令dを命令列3として特定し、addr5以降で命令列3の類似命令列について検索、変換を実行する。
同様に、次々と命令列および検索の開始アドレスを繰り下げながら命令列の検索と変換を繰り返す。そして、置換できる命令列が無くなるか、または検索開始アドレスがプログラム終端に達すれば、変換完了とし、変換後プログラム41が生成される。
上述の説明から明らかなように、2ステップの命令列が1ステップのcall命令30に置き換えられることでプログラムの命令数が削減され、最終アドレスは addr x > addr mとなる。なお、上述のプログラムの変換は、上述の手順を踏まえ適切に設計されたソフトウェアがコンピュータで実行されることで実現される。
また、図2(b)に示すように、変換前プログラム40の命令列1に対応する変換後プログラム41の命令列を擬似サブルーチン1と呼ぶ。擬似サブルーチン1は、命令1の実行に伴って実行される。同様に、変換前プログラム40の命令列2に対応する変換後プログラム41の命令列を擬似サブルーチン2と呼ぶ。他の命令列と他の擬似サブルーチン間の対応関係についても同様である。
call命令30の実行ステップ数は固定されているので、擬似サブルーチンの区別はアドレス情報のみで行われる。従って、擬似サブルーチン同士は重なりを持つことが可能である。これにより、プログラムの圧縮効果をさらに高めることができる。
後述するように、変換後プログラム41のcall命令30がCPU113で実行されると、実行されたcall命令30のメモリアドレス情報32(図3参照)に基づいて、擬似サブルーチンが特定される。そして、特定された擬似サブルーチンを利用して、変換前プログラム40の削減された命令が復元される。従って、プログラムの変換に伴って命令列数を削減したとしても、変換前プログラム40が有していた情報自体が失われることはない。
なお、1ステップ目の命令が無条件ジャンプの場合、2ステップ目の命令が意味を持たない。従って、そのような命令列は、変換対象外の命令列とすれば良い。また、2ステップの命令列に既に置換されたcall命令30を含む場合も検索対象外とすれば良い。
ところで、所定の命令列がcall命令30に置換される度に、後続の命令は前詰めされる。従って、call命令30のメモリアドレス情報32(図3参照)は、削除された命令列数を考慮して改めて設定されるものとする。
ここで、図3に、上述のcall命令30の構成図を示す。図3に示すように、call命令30はマイクロプロセッサの命令語長1ワード分のビット長の命令である。
オペコード31には、所定のビット数の信号が格納される。命令実行部11は、call命令30のオペコード31により、入力された命令がcall命令30であることを識別する。また、命令実行部11は、オペコード31から、擬似動作時に実行されるステップ数、命令修正位置、命令修正方法等を識別する。なお、擬似動作時に実行されるステップ数は、図2で設定した命令列数と等しく、ここでは2ステップである。命令修正位置は、ここでは、2ステップ目の命令となる。命令修正方法は、加算、減算等が例示されるが、図2で説明したように、ここでは更新情報は差分によって特定されるため、命令修正方法は加算と設定される。
メモリアドレス情報32は、フェッチ対象となるべき命令の命令メモリ21のメモリアドレス(ジャンプ先のアドレスと呼ぶこともある)を示す信号が格納される。具体的には、メモリアドレス情報32には、設定した命令列の1ステップ目の命令のメモリアドレスを示す信号が格納される。メモリアドレス情報32は、ジャンプ先アドレスを指定するに足るビット数を持つ。
修正情報33は、上述の説明からも明らかなように、設定した命令列の2ステップ目の命令と、検索により特定された命令列の2ステップ目の命令との差分情報が格納される。差分情報のビット数が、修正情報33のビット数内の場合、検索により特定された命令列はcall命令30に置換される。命令修正部15は、この差分情報を利用して、命令メモリ21からの命令を修正し、命令実行部11に出力する。
尚、図2で説明した命令列4は、次のようにcall命令30に置換される。オペコード31は、2ステップのcall命令30を表す命令コード(以下call2stepと表記する)に設定される。メモリアドレス情報32は、命令列1の先頭アドレスaddr1が設定される。修正情報33は、命令列1の2ステップ目の命令bと命令列4の2ステップ目の命令bとの差分情報(ここでは、差分0なので0)が設定される。このように設定されたcall命令30が、命令列4と置き換えられる。つまり、変換前プログラム40の命令列4は、変換後プログラム41のcall命令(call2step、addr1、0)(命令1)に置換される。
図2で説明した命令列5は、次のようにcall命令30に置換される。オペコード31は、call2stepが設定される。メモリアドレス情報32は、命令列2の先頭アドレスaddr2が設定される。修正情報33は、命令c2から命令列2の2ステップ目の命令cを引いた差分が設定される。つまり、変換前プログラム40の命令列5は、変換後プログラム41のcall命令 (call2step, addr1, (c2-c))(命令2)に置換される。
また、変換前プログラム40の命令列6は、変換後プログラム41のcall命令(call2step, addr1, (b2-b))(命令3)に変換される。他の場合も同様である。
ここで、図4に、マイクロプロセッサによる変換後プログラム41の実行を説明するための説明図を示す。図4(a)に、変換後プログラム41の構成を示す説明図を示す。図4(b)に、マイクロプロセッサ10の命令実行部11で実行される命令を実行順に上から並べた説明図を示す。なお、セレクタ16から内部バスインターフェイス17に入力されるフェッチ対象となるメモリアドレス(フェッチ対象アドレス)も、図4(b)にあわせて示す。
内部バスインターフェイス17は、図4(a)の50に示すメモリアドレス順で、それぞれのメモリアドレスに格納された変換後プログラム41の命令を順次フェッチする。
図4(a)に示すように、addr1からaddr n-1までは、call命令30は実行されない。通常動作時、マイクロプロセッサ10は次のように動作する。
セレクタ16は、擬似サブルーチン実行制御部14からの指示に従って、プログラムカウンタ12を選択し、プログラムカウンタ12からの信号S1をアドレス信号S3として内部バスインターフェイス17に出力する。尚、信号S1は、プログラムカウンタ12のカウント値と等しい。従って、セレクタ16から出力されるアドレス信号S3は、プログラムカウンタ12のカウント値と等しい。内部バスインターフェイス17は、セレクタ16からのアドレス信号S3に基づいて、フェッチ対象の命令が格納されている命令メモリ21の番地を特定し、特定された番地にある命令を命令メモリ21から読み出す。
命令メモリ21から読み出された命令は、命令修正部15を介して、内部バスインターフェイス17から命令実行部11に転送される。このようにして、命令メモリ21に格納された変換後プログラム41は実行される。なお、プログラムカウンタ12のカウント値は、命令がフェッチされる度に1づつ加算される。
図4(a)に示すように、addr nで最初のcall命令30である命令1が実行される。内部バスインターフェイス17は、命令メモリ21から読み込んだ命令1を、命令修正部15に出力する。命令修正部15は、命令1をそのまま命令実行部11に出力する。命令実行部11は、命令修正部15からの命令1を実行する。なお、上述のように、最初のcall命令30である命令1のアドレスはaddr 1であり、修正情報は0である。
命令実行部11は、call命令30としての命令1を実行する。具体的には、命令実行部11は、call命令30のメモリアドレス情報32をプログラムカウンタ13に設定する。換言すると、プログラムカウンタ13のカウント値をメモリアドレス情報32に基づいて設定する。また、命令実行部11は、call命令30の修正情報33を擬似サブルーチン実行制御部14に転送する。このようにして、擬似サブルーチンの実行が開始される。なお、このような初期設定の後、命令実行部11は、命令修正部15から入力される命令を、通常通り実行する。
擬似サブルーチン実行制御部14は、命令実行部11から修正情報の入力を受けると、プログラムカウンタ13からの信号S2をアドレス信号S3として出力するようにセレクタ16を制御する。なお、この時点では、上述のように、プログラムカウンタ13のカウント値は、call命令30のメモリアドレス情報32に基づいて設定されている。
なお、ここでは、上述のとおり、call命令30のメモリアドレス情報32はaddr 1が設定されており、フェッチ対象アドレスはaddr1となる。
内部バスインターフェイス17は、命令メモリ21のメモリアドレスaddr 1にある擬似サブルーチン1の1ステップ目の命令である命令aをフェッチして命令修正部15に出力する。
プログラムカウンタ13は、擬似サブルーチン実行中に命令をフェッチする度に1ずつ加算していく。なお、擬似サブルーチン実行中、プログラムカウンタ12はメインルーチンの実行アドレスを保持する。つまり、擬似サブルーチン実行中、プログラムカウンタ13は、アドレスaddr nの命令1をフェッチした際、アドレスaddr nに1が加算された値addr n+1を保持する。
擬似サブルーチン実行制御部14は、擬似サブルーチン1の2ステップ目の命令である命令bのフェッチ時に、命令修正部15に命令の修正情報とともに命令の修正指示を出力する。具体的には、擬似サブルーチン実行制御部14は、命令bが命令修正部15に入力される前、命令修正部に命令の修正情報を格納する。
通常動作時、命令修正部15は、内部バスインターフェイス17から入力される命令をそのまま命令実行部11に出力している。命令修正部15は、擬似サブルーチン実行制御部14から命令の修正指示があると、命令に修正情報を加算し、命令実行部11に修正した命令を出力する。
上述のように、命令1の修正情報は0である。従って、擬似サブルーチン1の2ステップ目の命令である命令bは、そのまま命令修正部15から命令実行部11に転送される。なお、擬似サブルーチンの2ステップ目の命令に対する修正情報の加算処理は修正情報の内容に関わらず行われる。
擬似サブルーチン実行制御部14は、擬似サブルーチン1の2ステップ目の命令のフェッチが終了すると、プログラムカウンタ12からの信号S1をアドレス信号S3として出力するようにセレクタ16を制御する。上述のように、プログラムカウンタ12は、擬似サブルーチンの実行中は、実行時の値nを保持している。従って、次のフェッチ対象となるメモリアドレスは、addr n+1となる。
内部バスインターフェイス17は、命令メモリ21のメモリアドレスaddr n+1から命令fをフェッチし、命令修正部15を介して、命令実行部11に転送する。このようにして、マイクロプロセッサ10は、通常通り、変換後プログラム41を実行する。
内部バスインターフェイス17は、その後、図4(b)に示すように、プログラムカウンタ12のカウント値に基づいて、命令メモリ21から命令を順次読み出す。そして、命令実行部11は、内部バスインターフェイス17から転送された命令を順次実行する。
図4(b)に示すように、内部バスインターフェイス17は、addr pで命令2を命令メモリ21から読み出し、命令修正部15を介して、命令実行部11に転送する。
図2で説明したように、命令2のメモリアドレス情報32はaddr2、修正情報33はc2-cである。この場合も、上述の命令1の場合と同様に、マイクロプロセッサ10は、擬似動作状態となり、フェッチ対象アドレスはaddr2に設定される。内部バスインターフェイス17は、addr2のメモリアドレスの命令を命令メモリ21から読み出し、命令修正部15を介して命令実行部11に出力する。
ここでは、修正情報33はc2-cである。従って、命令修正部15は、擬似サブルーチン実行制御部14から修正情報33の内容および修正指示を受けて、擬似サブルーチン2の2ステップ目の命令である命令cに修正情報を加算する。このようにして、命令修正部15は、命令メモリ21からの命令cを命令c2に変更し、変更された命令c2を命令実行部11に出力する。
上述のとおり、修正情報は、命令列1の2ステップ目の命令と、命令列1に基づいて特定された命令列の2ステップの命令列の2ステップ目の命令との差分値である。従って、命令cに、修正情報である(c2-c)を加算すれば、図2(a)の命令列5の2ステップ目の命令である命令c2は復元される。
擬似サブルーチン2の2ステップ目の命令フェッチが終了すると、マイクロプロセッサ10は通常の動作状態に戻る。
上述の説明から明らかなように、擬似サブルーチンは、call命令の実行により呼び出され、特定数のステップ分の命令を実行して自動的にメインルーチンに復帰する動作を意味する。
さらに命令3についても同様の動作で擬似サブルーチンの実行が行われる。命令3の場合、call命令30のメモリアドレス情報32はaddr1である。従って、呼び出される擬似サブルーチンは、擬似サブルーチン1である。なお、図4には示さないが、addr q+1以降でアドレスとしてaddr3を持つcall命令があれば擬似サブルーチン3が同様に実行される。
次に、擬似サブルーチン実行中の相対ジャンプの実行について説明する。
命令実行部11は、擬似サブルーチン実行中に相対ジャンプ命令を認識した場合には、プログラムカウンタ12に相対値を加算又は減算して新しいアドレスを設定し、擬似サブルーチン実行制御部14に擬似サブルーチンの途中終了を指示する。
擬似サブルーチン実行制御部14は、擬似サブルーチン実行中に命令実行部11から擬似サブルーチンの途中終了の指示を受けた場合、予定された擬似サブルーチンの実行ステップ数に到達していなくても、セレクタ16を操作して内部バスインターフェイス17に送るアドレス信号S3を信号S1に設定し、擬似サブルーチンの実行を終了する。上述のようにプログラムカウンタ12はメインルーチンのアドレスを保持しているため、それに対し相対値を加減算することで擬似サブルーチン実行中の相対ジャンプが実行される。
本実施形態においては、上述の説明から明らかなように、修正情報を含むcall命令30を用いて、プログラムを圧縮する。従って、修正情報を新たな命令としてプログラムに組み込む必要はない。従って、ステップ数の小さな命令列においても、プログラム圧縮の効果を十分に享受できる。
また、call命令による擬似サブルーチン化は、一般的なサブルーチン化とは異なり、擬似サブルーチンで実行する命令ステップ数がcall命令により特定されているため、リターン命令を必要としない。そのため、プログラム中の任意の位置の連続命令をその位置に置いたまま擬似サブルーチンとすることができるため、擬似サブルーチンを設定するための特別なメモリ領域を必要としない。
さらに複数の擬似サブルーチンは重なりを持っても良く、別々の擬似サブルーチンで同一の命令列を重複して定義するような無駄も発生しない。従って定義メモリなどの特別な記憶装置を持つ必要が無く、マイクロプロセッサの回路規模の増大をほとんど伴わない。
なお、実装するcall命令のジャンプ先での実行ステップ数は2としたが3ステップ以上のステップ数を実行するcall命令を実装することももちろん可能である。またcall命令の修正情報33は、分割して複数の命令修正に割り当てることももちろん可能である。
また本実施形態ではcall命令の解釈を命令実行部11で行うとしているが、内部バスインターフェイス17で行い、命令フェッチの時点でcall命令を実行することももちろん可能である。
また本実施形態では命令の修正を命令修正部15で行うとしているが、内部バスインターフェイス17で行い、命令フェッチの時点で命令を修正することももちろん可能である。
[第2の実施形態]
以下、図5、図6を用いて、第2の実施形態について説明する。図5は、call命令の説明図である。図6は、マイクロプロセッサによる変換後プログラムの実行を説明するための説明図である。なお、マイクロプロセッサの構成は、第1の実施形態と同様である。従って、以下の説明においては、適宜、図1も参照するものとする。
以下、図5、図6を用いて、第2の実施形態について説明する。図5は、call命令の説明図である。図6は、マイクロプロセッサによる変換後プログラムの実行を説明するための説明図である。なお、マイクロプロセッサの構成は、第1の実施形態と同様である。従って、以下の説明においては、適宜、図1も参照するものとする。
本実施形態では、第1の実施形態とは異なり、3以上の命令をcall命令に置き換えることで、プログラムの変換を実行する。このような場合であっても、第1の実施形態と同様に、プログラムの圧縮を図ることができる。
図5に、本実施形態にかかるcall命令30aの構成図を示す。call命令30aは、マイクロプロセッサの命令語長n/2ワード分の長さを持つ。call命令30は、オペコード31、メモリアドレス情報32、修正情報33に加えて、ステップ34、追加修正情報35を有する。なお、追加修正情報35は、追加修正情報2〜n−1の区分に分割される。なお、nは、図6で説明するように、命令列11の列数に対応する。
ステップ34には、ジャンプ先での実行ステップ数を指定する情報が格納される。追加修正情報35には、擬似サブルーチンの3ステップ目の命令からnステップ目の命令に対応した修正情報が格納される。
追加修正情報35は、1ステップの命令につついて1/2ワードのビット幅を持つ。追加修正情報35は、ステップ34の値に従いビット数が可変される。但し、追加修正情報35に、1ワードに満たないフィールドを付加することは、プログラムの列数の削減効率を劣化させるため、実行ステップ数nは2の倍数としてn/2を設定できるようにするのが好適である。なお、n= 2 の場合、命令長は1ワードとなり、第1の実施形態のcall命令30と同一の動作となる。
次に、プログラムの変換について図6を用いて説明する。図6(a)に、変換前プログラム40の構成を示す。図6(b)に、変換後プログラム41の構成を示す。なお、プログラム中に最初に現れるnステップの命令列を命令列11とする。
図6(b)に示すように、addr n+1以降に命令列11と1ステップ目の命令が同一で、2ステップ目の命令からnステップ目の命令が類似したnステップの命令列があるかを検索する。
1ステップ目の命令が同一で2ステップ目からnステップ目までの命令が類似した命令列12があるため、命令列12を置換対象の命令列として特定する。そして、特定された命令列12の2ステップ目からnステップ目の命令と、これに対応する命令列11の命令との差分情報を求める。ここでは、命令列11と命令列12の2ステップ目の命令は、共に命令bのため差分情報は0となる。3ステップ目はc2-cで、nステップ目はn'-nである。
このように求めた全ての差分情報のビット数が、call命令30aの修正情報、追加修正情報のビット数内の場合、命令列12をcall命令30aに置き換える。また、call命令30aの修正情報33、追加修正情報35には、求めた差分情報を修正情報として設定する。
なお、call命令30aのオペコードは、nステップのcall命令を表す命令コード(以下callnstepと表記する)が設定される。call命令30aのステップは、nが設定される。call命令30aのアドレスは、命令列11の先頭アドレスaddr1が設定される。call命令30aの修正情報としては、命令列11の2ステップ目の命令bと命令列12の2ステップ目の命令bとの差分情報が設定される(ここでは差分0なので0が設定される)。call命令30aの追加修正情報2は、3ステップ目の命令の差分情報である(c2-c)が設定される。call命令30aの(n'-n)追加修正情報n-1は、nステップ目の命令の差分情報である(n'-n)が設定される。
このように生成されたcall命令30aが命令列11と置き換えられる。つまり、変換前プログラム40の命令列12は、call命令(callnstep、n、addr1、0、c2-c、・・、n'-n)命令11に置換される。
なお、第1の実施形態と同様にそれ以降のプログラム内に命令列11と類似の命令列を検索、置換しプログラム終端まで検索が完了すれば命令列11について変換が完了する。
さらに命令列の開始アドレスと検索の開始アドレスを繰り下げながら別のnステップの命令列について検索、置換を実行する。ただし、最終ステップ以外に無条件ジャンプ命令を含む命令列、call命令を含む命令列については検索を行わない。このようにして、変換後プログラム41が生成される。
nステップ(nワード)の命令列がn/2ワードのcall命令30aに置き換えられることでプログラムの命令数(ステップ数)が削減される。
次に、call命令を実行する際のマイクロプロセッサの動作を説明する。本実施形態においては、擬似サブルーチンの2ステップ目の動作をnステップ目まで繰り返す点が第1の実施形態と異なる。
命令実行部11は、call命令30aの実行を開始すると、call命令30aのメモリアドレス情報32の値をプログラムカウンタ13に設定し、擬似サブルーチン実行制御部14に実行ステップ数nと修正情報33を転送する。続いて、命令実行部11は、(n/2)−1ワードの追加修正情報35を命令メモリ21から読み取る(但し、call命令30aのステップ34は3以上であるものとする)。そして、命令実行部11は、命令メモリ21から読み出した追加修正情報35を、擬似サブルーチン実行制御部14に転送する。全ての修正情報の転送が完了した時点で、命令実行部11は、擬似サブルーチン実行制御部14に擬似サブルーチンの実行開始を指示し、通常命令の解釈、実行に戻る。
擬似サブルーチン実行制御部14は、命令実行部11から擬似サブルーチン実行開始の指示を受けると、プログラムカウンタ13からの信号S2を、アドレス信号S3として内部バスインターフェイス17に出力するようにセレクタ16を制御する。また、擬似サブルーチン実行制御部14は、命令フェッチ数のカウントを開始する。
このようにして、フェッチ対象のメモリアドレスは、プログラムカウンタ13のカウント値に切り替わる。そして、内部バスインターフェイス17は、擬似サブルーチンの命令をフェッチし、命令修正部15に転送する。
擬似サブルーチン実行制御部14は、擬似サブルーチンの2ステップ目の命令をフェッチする時に、予め命令修正部15に命令の修正情報33、修正指示を出力する。
本実施形態では、擬似サブルーチンは、nステップの命令列を有する(但し、nは3以上の整数)。従って、擬似サブルーチン実行制御部14は、3ステップ目以降の命令のフェッチ時、予め命令メモリ21から命令修正部15に追加修正情報35を順次出力させ、修正指示を継続する。
擬似サブルーチン実行制御部14は、命令のフェッチ数がnに達した場合、プログラムカウンタ12からの信号S1をアドレス信号S3として内部バスインターフェイス17に出力するようにセレクタ16を制御する。これにより、擬似サブルーチンの実行が終了し、CPU113は、メインルーチンの実行に戻る。
call命令30aの実行ステップ数には、追加修正情報35の読み取りステップが追加される。従って、call命令30aの実行ステップ数は、実行ステップ数nに比例して増加する。しかし、追加修正情報35を含めたcall命令30aのワード数は、実行しようとする擬似サブルーチンの実行ステップ数の1/2に固定されている。従って、実行時間の増加比率は擬似サブルーチンの長さに関わらず一定となる。
以上説明したように、本実施形態では、3以上の命令列をcall命令に圧縮する。換言すると、3以上の命令列の擬似サブルーチン化が可能である。追加修正情報の段数は、擬似サブルーチン化する命令列の段数に比例する。従って、擬似サブルーチンの命令の列数が増加してもプログラム変換率が劣化することは無い。また、call命令の実行ステップ数の増加も擬似サブルーチンのステップ数と比例している。従って、擬似サブルーチンのステップ数による変換率、実行時間の変動が無い。
また本実施形態では、1つのcall命令により擬似サブルーチンの実行ステップ数を2ステップ刻みの任意の長さに指定でき自由度が向上する。さらに変換率や動作速度の劣化が擬似サブルーチンの長さや修正量に左右されないことは、事前に変換後プログラムサイズや性能劣化を容易に予測できる、という効用もある。
なお、特許文献1の場合、修正の実行に伴って追加的なステップの実行が必要となる。従って、プログラムの実行に要する時間が増大する。命令セットの命令ステップ数が小さい場合、命令セットのステップ数に対して命令の修正に要するステップ数の比率が大きくなり、実行時間の大幅な増大を招いてしまう。また、特許文献1の場合、汎用性を持たせるため、ある程度の定義数を用意する必要がある。同様に、ある程度のステップ数を用意する必要がある。このため、マイクロプロセッサの回路規模を著しく増大させてしまう。上述の実施形態によれば、これらの点も回避することができる。
10 マイクロプロセッサ
11 命令実行部
12 プログラムカウンタ
13 プログラムカウンタ
14 擬似サブルーチン実行制御部
15 命令修正部
16 セレクタ
17 内部バスインターフェイス
18 演算部
19 レジスタ
20 内部バス
21 命令メモリ
22 データメモリ
32 メモリアドレス情報
33 修正情報
34 ステップ
35 追加修正情報
40 変換前プログラム
41 変換後プログラム
11 命令実行部
12 プログラムカウンタ
13 プログラムカウンタ
14 擬似サブルーチン実行制御部
15 命令修正部
16 セレクタ
17 内部バスインターフェイス
18 演算部
19 レジスタ
20 内部バス
21 命令メモリ
22 データメモリ
32 メモリアドレス情報
33 修正情報
34 ステップ
35 追加修正情報
40 変換前プログラム
41 変換後プログラム
Claims (17)
- 第1命令列と第2命令列を含む変換前プログラムのうち、前記第1命令列と一致又は近似する前記第2命令列が呼出命令に置換された変換後プログラムを実行する演算処理回路であって、
前記変換後プログラムの前記呼出命令の実行に伴って特定された前記第1命令列の命令を、前記変換後プログラムが格納されたメモリから順次フェッチし、
前記メモリからフェッチされた前記命令を利用して、前記呼出命令に置換された前記変換前プログラムの前記第2命令列の命令を順次実行する、演算処理回路。 - 前記呼出命令は、前記第1命令列に含まれる命令数、前記第1命令列の命令のメモリアドレス、それぞれが対応関係にある前記第1命令列の命令と前記第2命令列の命令間の更新情報を含むものであることを特徴とする請求項1記載の演算処理回路。
- 前記呼出命令の前記更新情報を利用して、入力された前記第1命令列の命令を、当該命令に対応する前記第2命令列の命令に修正し、前記第2命令列の命令を実行することを特徴とする請求項2記載の演算処理回路。
- 前記第1命令列の命令、前記呼出命令、前記第2命令列の命令、を実行する命令実行部と、
前記呼出命令の前記更新情報に基づいて、前記命令実行部による前記呼出命令の実行に伴って前記メモリからフェッチされた前記第1命令列の命令を当該命令に対応する前記第2命令列の命令に修正する命令修正部と、
前記命令実行部による前記呼出命令の実行に伴って前記メモリからフェッチされた前記第1命令列の命令が前記命令修正部に入力される前、予め前記呼出命令の前記更新情報を前記命令修正部に設定する修正制御部と、
を備えることを特徴とする請求項1記載の演算処理回路。 - 少なくとも前記変換後プログラムの前記第1命令列の実行時に利用される第1プログラムカウンタと、
少なくとも前記変換前プログラムの前記第2命令列の実行時に利用される第2プログラムカウンタと、
をさらに備えることを特徴とする請求項4記載の演算処理回路。 - 前記第1プログラムカウンタの出力又は前記第2プログラムカウンタの出力のいずれかを選択し出力するセレクタと、
をさらに備え、
前記修正制御部は、少なくとも前記第1命令列の命令の実行時、前記セレクタに前記第1プログラムカウンタの出力を選択出力させ、
少なくとも前記第2命令列の命令の実行時、前記セレクタに前記第2プログラムカウンタの出力を選択出力させることを特徴とする請求項5記載の演算処理回路。 - 前記第2命令列の命令の列数は、前記第1命令列の命令の列数と同じであり、
前記第2命令列の1列目の命令は、前記第1命令列の1列目の命令と同じであることを特徴とする請求項1記載の演算処理回路。 - 第1命令列と第2命令列を含む変換前プログラムのうち、前記第1命令列と一致又は近似する前記第2命令列が呼出命令に置換された変換後プログラムを実行する半導体集積回路であって、
前記変換後プログラムが格納されたメモリと、
前記変換後プログラムの前記呼出命令の実行に伴って特定された前記第1命令列の命令を、前記メモリから順次フェッチし、前記メモリからフェッチされた前記命令を利用して、前記呼出命令に置換された前記変換前プログラムの前記第2命令列の命令を順次実行する演算処理回路と、
を備える、半導体集積回路。 - 前記呼出命令は、前記第1命令列に含まれる命令数、前記第1命令列の命令のメモリアドレス、それぞれが対応関係にある前記第1命令列の命令と前記第2命令列の命令間の更新情報を含むものであることを特徴とする請求項8記載の半導体集積回路。
- 前記呼出命令の前記更新情報を利用して、入力された前記第1命令列の命令を、当該命令に対応する前記第2命令列の命令に修正し、前記第2命令列の命令を実行することを特徴とする請求項9記載の半導体集積回路。
- 前記第1命令列の命令、前記呼出命令、前記第2命令列の命令、を実行する命令実行部と、
前記呼出命令の前記更新情報に基づいて、前記命令実行部による前記呼出命令の実行に伴って前記メモリからフェッチされた前記第1命令列の命令を当該命令に対応する前記第2命令列の命令に修正する命令修正部と、
前記命令実行部による前記呼出命令の実行に伴って前記メモリからフェッチされた前記第1命令列の命令が前記命令修正部に入力される前、予め前記呼出命令の前記更新情報を前記命令修正部に設定する修正制御部と、
を備えることを特徴とする請求項8記載の半導体集積回路。 - 少なくとも前記変換後プログラムの前記第1命令列の実行時に利用される第1プログラムカウンタと、
少なくとも前記変換前プログラムの前記第2命令列の実行時に利用される第2プログラムカウンタと、
をさらに備えることを特徴とする請求項11記載の半導体集積回路。 - 前記第1プログラムカウンタの出力又は前記第2プログラムカウンタの出力のいずれかを選択し出力するセレクタと、
をさらに備え、
前記修正制御部は、少なくとも前記第1命令列の命令の実行時、前記セレクタに前記第1プログラムカウンタの出力を選択出力させ、
少なくとも前記第2命令列の命令の実行時、前記セレクタに前記第2プログラムカウンタの出力を選択出力させることを特徴とする請求項12記載の半導体集積回路。 - 前記第2命令列の命令の列数は、前記第1命令列の命令の列数と同じであり、
前記第2命令列の1列目の命令は、前記第1命令列の1列目の命令と同じであることを特徴とする請求項8記載の半導体集積回路。 - 前記第2命令列の命令の列数は、前記第1命令列の命令の列数と同じであり、
前記第2命令列の1列目の命令は、前記第1命令列の1列目の命令と同じであることを特徴とする請求項9記載の半導体集積回路。 - コンピュータを利用して、第1命令列と第2命令列を含む変換前プログラムを前記第1命令列と呼出命令を含む変換後プログラムに変換するプログラムの変換方法であって、
前記第1命令列と一致又は近似する前記第2命令列を特定し、
特定された前記第2命令列を呼出命令に置換し、
前記呼出命令に前記第1命令列の命令のアドレス情報を設定し、
前記呼出命令に前記第1命令列の命令と前記第2命令列の命令間の更新情報を設定する、プログラムの変換方法。 - 前記第2命令列の命令の列数は、前記第1命令列の命令の列数と同じであり、
前記第2命令列の1列目の命令は、前記第1命令列の1列目の命令と同じであることを特徴とする請求項16記載のプログラムの変換方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007108117A JP2008269052A (ja) | 2007-04-17 | 2007-04-17 | 演算処理回路、半導体集積回路、及びプログラムの変換方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007108117A JP2008269052A (ja) | 2007-04-17 | 2007-04-17 | 演算処理回路、半導体集積回路、及びプログラムの変換方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008269052A true JP2008269052A (ja) | 2008-11-06 |
Family
ID=40048507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007108117A Pending JP2008269052A (ja) | 2007-04-17 | 2007-04-17 | 演算処理回路、半導体集積回路、及びプログラムの変換方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008269052A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018506761A (ja) * | 2014-11-24 | 2018-03-08 | オベルトゥル テクノロジOberthur Technologies | Apduスクリプトにおける黙示的ファイル生成 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01175632A (ja) * | 1987-12-29 | 1989-07-12 | Nec Corp | マイクロプログラム制御装置 |
JPH0475138A (ja) * | 1990-07-18 | 1992-03-10 | Nec Corp | プログラムサイズ圧縮装置 |
JPH05165640A (ja) * | 1991-12-13 | 1993-07-02 | Toshiba Corp | マイクロプロセッサ |
JP2004220188A (ja) * | 2003-01-10 | 2004-08-05 | Sony Corp | データ処理装置 |
JP2006293673A (ja) * | 2005-04-11 | 2006-10-26 | Toshiba Corp | マイクロプロセッサおよびその制御方法 |
JP2007018254A (ja) * | 2005-07-07 | 2007-01-25 | Toshiba Corp | 言語処理装置 |
-
2007
- 2007-04-17 JP JP2007108117A patent/JP2008269052A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01175632A (ja) * | 1987-12-29 | 1989-07-12 | Nec Corp | マイクロプログラム制御装置 |
JPH0475138A (ja) * | 1990-07-18 | 1992-03-10 | Nec Corp | プログラムサイズ圧縮装置 |
JPH05165640A (ja) * | 1991-12-13 | 1993-07-02 | Toshiba Corp | マイクロプロセッサ |
JP2004220188A (ja) * | 2003-01-10 | 2004-08-05 | Sony Corp | データ処理装置 |
JP2006293673A (ja) * | 2005-04-11 | 2006-10-26 | Toshiba Corp | マイクロプロセッサおよびその制御方法 |
JP2007018254A (ja) * | 2005-07-07 | 2007-01-25 | Toshiba Corp | 言語処理装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018506761A (ja) * | 2014-11-24 | 2018-03-08 | オベルトゥル テクノロジOberthur Technologies | Apduスクリプトにおける黙示的ファイル生成 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7386646B2 (en) | System and method for interrupt distribution in a multithread processor | |
US7543014B2 (en) | Saturated arithmetic in a processing unit | |
JPH09330236A (ja) | マイクロプロセッサ及びその周辺装置 | |
KR100407548B1 (ko) | 트레이스 제어 회로 | |
US7376777B2 (en) | Performing an N-bit write access to an M×N-bit-only peripheral | |
US20060218378A1 (en) | Integrated circuit device | |
JP2008269052A (ja) | 演算処理回路、半導体集積回路、及びプログラムの変換方法 | |
US6889320B1 (en) | Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter | |
US20080307029A1 (en) | Arithmetic device and arithmetic method | |
JP5933685B2 (ja) | マイクロコンピュータおよび不揮発性半導体装置 | |
US20040024992A1 (en) | Decoding method for a multi-length-mode instruction set | |
US7203867B2 (en) | Processor system, processor and arithmetic processing method | |
US6144321A (en) | Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images | |
US6405301B1 (en) | Parallel data processing | |
US6133859A (en) | Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images | |
KR100396189B1 (ko) | 디지털신호 처리장치 및 그 제어방법 | |
JPWO2004025468A1 (ja) | 半導体装置 | |
JP2003067010A (ja) | ビット演算制御装置及びこれを備えるプログラマブルロジックコントローラ | |
US7017033B2 (en) | Arithmetic apparatus and arithmetic method | |
JP2005275703A (ja) | プロセッサ及びコンテキスト切り替え方法 | |
KR100369480B1 (ko) | Dsp 코어를 기반으로 하는 다중 프로그램 실장 아키텍쳐 | |
JP2007188366A (ja) | コンパイル装置 | |
JP5088566B2 (ja) | 割込機能を備えたplc | |
JP4682786B2 (ja) | マイクロコンピュータ | |
KR100204571B1 (ko) | 마아크로 제어기에 의한 이벤트 신호 제어 회로 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100114 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120110 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120508 |