JP3079090B2 - プロセッサ及びプログラム変換装置 - Google Patents
プロセッサ及びプログラム変換装置Info
- Publication number
- JP3079090B2 JP3079090B2 JP10348012A JP34801298A JP3079090B2 JP 3079090 B2 JP3079090 B2 JP 3079090B2 JP 10348012 A JP10348012 A JP 10348012A JP 34801298 A JP34801298 A JP 34801298A JP 3079090 B2 JP3079090 B2 JP 3079090B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- stack
- subroutine
- processor
- data
- 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.)
- Expired - Fee Related
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
サ及びプログラミング言語コンパイラに関し、特に、サ
ブルーチン呼出し/復帰及びそれに伴うレジスタの退避
/復元を高速化する技術に関する。
グの普及に伴い、マイクロプロセッサ(以下、単に「プ
ロセッサ」という。)が実行する機械語命令列にはサブ
ルーチンが多く含まれるようになってきた。サブルーチ
ン呼出しにおいては、その直後において、プロセッサが
有する複数のレジスタの値をスタックメモリ(データメ
モリ上のスタック領域(以下、単に「スタック」ともい
う。))に退避(push)しておく必要がある。そして、
サブルーチンからの復帰においては、それら退避してい
た値を元のレジスタに復元(pop)する必要がある。
パイラ(以下、単に「コンパイラ」という。)が生成し
た機械語命令列のリストであり、サブルーチン呼出しと
復帰に関する部分が示されている。図38は、図37に
示されたリストで用いられている機械語命令のオペレー
ションを説明するテーブルである。図39は、図37に
示された機械語命令列が従来のプロセッサによって実行
された場合におけるスタックの内容・大きさ及びスタッ
クポインタSPの値の変化を示す。
ぞれ、プロセッサが有するプログラムカウンタ、サブル
ーチンからの復帰アドレスを格納しておくための復帰レ
ジスタ、第n番目の汎用レジスタ、スタックポインタを
意味し、Memは外部メモリ(スタックも含まれる)を
意味し、op1、op2は、それぞれ、ソースオペラン
ド、デスティネーションオペランドを意味する。また、
図38の動作欄に示された表記は、プロセッサによって
1つのマシンサイクル(以下、単に「サイクル」とい
う。)で同時並列に実行されるオペレーション(異なる
タイミングであっても1つのサイクル内に終了するオペ
レーションも含まれる)を示している。例えば、プロセ
ッサは、サブルーチン呼出し命令「call label」の実行
においては、1サイクルで、プログラムカウンタPCを
4だけインクリメントする動作と、呼出し先labelをプ
ログラムカウンタPCに格納する動作とを実行する。
テップS3301)、その直後におけるスタックの確保
(ステップ3302、3304、3306、330
8)、レジスタの退避(ステップ3303、3305、
3307)、サブルーチンからの復帰の直前におけるス
タックの解放(ステップ3309、3311、331
3、3315)、退避していた値のレジスタへの復元、
及び、サブルーチンfからの復帰(ステップ3316)
が示されている。
使用(への格納)に先立ち必要量だけスタック領域を広
げておくこと(具体的には、スタックポインタSPを減
算しておくこと)をいい、一方、スタックの解放とは、
使用済みとなったスタックの領域を狭めること(具体的
には、スタックポインタSPを増加させること)をい
う。また、レジスタの退避とは、レジスタの格納値を退
避するためにスタックに格納することを意味し、レジス
タの復元とは、スタックに退避されていたデータを読み
出して元のレジスタに格納することを意味する。
(サブルーチンの実行の前後において同一内容であるこ
とを保証しなければならないレジスタ)を退避するため
のもの(ステップ3302、3304、3306)と、
ローカル領域(サブルーチン内でのみ有効なローカル変
数のためのスタック領域)を確保するためのもの(ステ
ップ3308)とがある。同様に、スタックの解放は、
ローカル領域の解放に伴うもの(ステップ3309)
と、非破壊レジスタの復元に伴うもの(ステップ331
1、3313、3315)とがある。
37に示された機械語命令列の前半部(ステップ330
1〜3308)及び後半部(ステップ3309〜331
6)におけるプロセッサの実行動作をサイクルごとに示
すタイミングチャートである。本図から分かるように、
従来技術によれば、前半部において、サブルーチンfへ
の分岐、2個の非破壊レジスタR2、R3の退避、復帰
レジスタLRの退避及びローカル領域の確保のために8
サイクルを要し、同様に後半部において、ローカル領域
の解放、復帰レジスタLRの復元、2個の非破壊レジス
タR2、R3の復元及びサブルーチンfからの復帰のた
めに8サイクルを要している。
ーチンの先頭位置に、スタックを確保する命令とレジス
タを退避する命令との組を必要な数だけ繰り返し生成し
たり、サブルーチンの最終位置に、スタックを解放する
命令とレジスタを復元する命令との組を必要な数だけ繰
り返し生成することによって、非破壊レジスタの退避や
ローカル領域の確保を実現している。
来のコンパイラやプロセッサは、近年のプロセッサ応用
製品に対する高機能化や処理の高速化という厳しい要求
に十分に応える技術とは言えなくなってきた。特に、プ
ロセッサ組み込み製品や制御機器等のリアルタイム性の
要求されるソフトウェア開発において、C言語のような
関数型言語を用いようとした場合には、処理速度の点で
性能を満足することが極めて困難なときが多い。
なされたものであり、サブルーチンの実行に伴う処理を
高速実行するプロセッサ及びそのようなプロセッサを対
象とするコンパイラを提供することを目的とする。具体
的には、上記図図40(a)及び(b)に示されるよう
なサブルーチンへの分岐及び復帰に伴う定型処理につい
ては、もっと少ないサイクルで実行することが可能なプ
ロセッサ及びコンパイラを提供する。
に本発明は、メモリをスタック領域として使用するプロ
セッサであって、サブルーチンを呼び出す場合に、サブ
ルーチン呼出しと並列してスタックポインタを固定値分
更新してスタック領域を確保したのち、前記スタックポ
インタが指すスタック領域へのデータ退避と並列してさ
らにスタックポインタを固定値分更新してスタック領域
を確保する手段を備えることを特徴とするプロセッサ。
械語命令列に変換するプログラム変換装置であって、前
記ソースプログラム中にサブルーチン呼出し命令を検出
すると、サブルーチン呼出しスタック確保命令を生成す
るサブルーチン呼出しスタック確保命令生成手段と、プ
ロセッサに記憶されたデータであって前記サブルーチン
の実行に先立って退避すべきデータが存在するか否か判
断するデータ退避判断手段と、退避すべきデータが存在
すると判断された場合に、データ退避スタック確保命令
を生成するデータ退避スタック確保命令生成手段とを備
え、前記サブルーチン呼出しスタック確保命令は、以下
のオペレーション(a)及び(c)をプロセッサに並列に実行
させる機械語命令であり、前記データ退避スタック確保
命令は、以下のオペレーション(b)及び(c)を前記プロセ
ッサに並列に実行させる機械語命令であるとすることも
できる。(a)実行順序を前記サブルーチンに分岐させ
る。(b)退避すべき前記データをスタックポインタが指
すメモリのスタック領域に退避する。(c)スタックポイ
ンタを固定値分更新してスタック領域をメモリに確保す
る。
が有する手段に対応するステップを含むプログラムが記
録されたコンピュータ読み取り可能な記録媒体とした
り、上記機械語命令を含む機械語プログラムが記録され
たコンピュータ読み取り可能な記録媒体とすることもで
きる。
びコンパイラの実施の形態について図面を参照しながら
説明する。 [プロセッサ]図1は、本実施の形態のプロセッサ10
の構成を示すブロック図である。このプロセッサ10
は、32ビット(4バイト)を基本語長(1ワード)と
し、32ビット固定長の命令を逐次実行するマイクロプ
ロセッサであり、レジスタファイル(GR)11、スタ
ックポインタ(SP)12、復帰レジスタ(LR)1
3、ALU14、プログラムカウンタ(PC)15、イ
ンクリメンタ(INC)16、デコーダ(Dec)1
8、固定値(「+4」20、「−4」21)、加算器2
2、内部バス(Abus33、Bbus34、Cbus
35、Dbus36)、オペランドアドレスバッファ
(OAB)26、オペランドデータバッファ(ODB)
27、命令アドレスバッファ(IAB)28、命令デー
タバッファ(IDB)29、セレクタ30〜32から構
成される。なお、これら構成要素は、デコーダ18から
出力される制御信号によって制御され、図示されていな
い内部クロックに同期して動作する。また、データメモ
リ38及び命令メモリ39は、本プロセッサ10に接続
された外部メモリであり、それぞれ、スタック等の一時
的なデータを記憶しておくための記憶領域及び機械語命
令列が予め格納された記憶領域である。
の集まりである。SP12は、次に格納又は参照するデ
ータメモリ38上のスタックのアドレス(スタックトッ
プ)を示すポインタレジスタである。固定値「+4」2
0及び固定値「−4」21は、それぞれ、値「+4」及
び「−4」を示す32ビットデータ(信号線の固定的な
配線)である。セレクタ32は、それら固定値20、2
1のいずれかを選択して加算器22に出力する。加算器
22は、SP12の値とセレクタ32からの値(+4又
は−4)を加算してSP12に格納する。これら構成要
素20〜22、32は、SP12専用のインクリメンタ
及びデクリメンタとして機能する。
場合に復帰すべき命令メモリ39上の機械語命令列のア
ドレス(復帰アドレス)を格納しておくアドレスレジス
タである。ALU14は、2入力1出力の算術論理演算
器である。PC15は、次にIDB29にフェッチすべ
き命令メモリ39上の機械語命令のアドレスを示す命令
フェッチ用PC(FPC)15aと、デコーダ18によ
って解読され実行されている命令のアドレスを示す実行
用PC(EPC)15bとからなる。INC16は、F
PC15a及びEPC15bを4だけインクリメントす
る加算器である。なお、LR13とFPC15a及びE
PC15bとはDbus36によって直接に接続され、
直接的なデータ転送が可能になっている。
れた機械語命令を解読し、その機械語命令に対応する制
御信号を各構成要素に出力する。このデコーダ18は、
本プロセッサ10が解読実行する全ての機械語命令につ
いてのマイクロコード(制御信号に対応するデータ)を
格納したマイクロプログラム格納部(μROM)18a
と、IDB29から送られてくる機械語命令に従ってμ
ROM18aから出力すべきマイクロコードのアドレス
を指定するシーケンサ(SEQ)18bからなる。
s35に出力されたデータのいずれかを選択してOAB
26に出力する。セレクタ31は、Bbus32及びC
bus35に出力されたデータのいずれかを選択してO
DB27に出力する。OAB26は、本プロセッサ10
とデータメモリ38間でデータ(オペランドデータ)転
送を行う場合における転送先/転送元となる1つのオペ
ランドアドレスをデータメモリ38に出力するバッファ
であり、ODB27は、そのような1つのオペランドデ
ータをデータメモリ38に出力/入力するバッファであ
る。
ェッチすべき機械語命令のアドレスを命令メモリ39に
出力するバッファであり、IDB29は、フェッチされ
た1つの機械語命令を一時的に保持するバッファであ
る。なお、本プロセッサ10は、IDB29による命令
フェッチステージ、デコーダ18による命令解読ステー
ジ、及び、デコーダ18からの制御信号に基づいて各構
成要素が動作する実行ステージからなるパイプライン構
成を有している。
実行する機械語命令(命令セット)のうち特徴的なもの
(及びそれらと関連するもの)のオペレーションを説明
するテーブルである。ここで、動作欄に示された角ブラ
ケットは、それらオペレーションが1つのサイクルで同
時並列に実行されるオペレーション(異なるタイミング
であっても1つのサイクル内に終了するオペレーション
も含まれる)を示している。なお、これらオペレーショ
ンを実現する制御手順は、μROM18aに格納された
マイクロコードとして実現されている。以下、各機械語
命令のオペレーション、即ち、各機械語命令がデコーダ
18によって解読され制御信号が出力された場合におけ
る各構成要素の動作を説明する。 (a)サブルーチン呼出しスタック確保命令「call- l
abel」 labelから始まるサブルーチンに分岐すると共に、
先行して1ワード分のスタックを確保する命令であり、
次の3つのオペレーションが1サイクルで実行される。
この命令は、図38に示されたサブルーチン呼出し命令
「call label」にスタックを確保するオペレーション
が追加されたものに等しい(サイクル数は変わらな
い)。
R13に格納する。具体的には、FPC15aの値が読
み出され、INC16において4だけ加算され、その結
果がLR13に格納される。 (ii)分岐先アドレスをFPC15aに格納する。具体
的には、IDB29に格納されていたオペランドlab
elがFPC15aに格納される。
る。具体的には、SP12から読み出された値と、セレ
クタ32によって選択された固定値「−4」とが加算器
22で加算され、その結果が再びSP12に格納され
る。このスタック確保は、後のスタックの使用に備える
ためである。 (b)サブルーチン復帰スタック解放命令「rts+」 サブルーチンからの復帰のために分岐すると共に、直前
に使用済みとなったスタックを解放する命令であり、次
の2つのオペレーションが1サイクルで実行される。こ
の命令は、図38に示された従来のサブルーチン復帰命
令「rts」にスタックを解放するオペレーションが追加
されたものに等しい(サイクル数は変わらない)。
る。具体的には、LR13の値がDbus36を介して
FPC15aに転送され格納される。 (ii)1ワード分のスタックを解放する。具体的には、
SP12から読み出された値と、セレクタ32によって
選択された固定値「+4」とが加算器22で加算され、
その結果が再びSP12に格納される。このスタック解
放は、使用済みとなったスタックを新たな使用のために
解放するためである。 (c)複数レジスタストア命令「stm [R0,…,Rn]」 オペランドで指定された全てのレジスタR0〜Rn(GR
11の一部又は全部)の値をスタック領域に退避する命
令であり、次のオペレーション(i)と(ii)との組が
n回(i=0〜n−1)繰り返された(nサイクルで実
行された)後、最後に(iii)のオペレーションが1回
だけ(1サイクルで)実行される。
のレジスタRiを退避する。具体的には、SP12の値
がAbus33、セレクタ30を経てOAB26に格納
され、その値がオペランドアドレスとしてデータメモリ
38に出力されると共に、第i番目のレジスタRiの値
がBbus34、セレクタ31を経てODB27に格納
され、その値がオペランドデータとしてデータメモリ3
8に格納される。
具体的な動作は、上記(a)の(iii)と同じである。 (iii)SP12が指すスタックに最後(第n+1番
目)のレジスタRnを退避する。具体的な動作は、上記
(c)の(i)と同じである。 (d)複数レジスタストアスタック確保命令「stm- [R
0,…,Rn]」 オペランドで指定された全てのレジスタR0〜Rnの値を
スタック領域に退避する命令であり、上記複数レジスタ
ストア命令「stm [R0,…,Rn]」におけるオペレーション
(i)と(ii)との組がn+1回(i=0〜n)繰り返
される。なお、この命令は、上記複数レジスタストア命
令「stm [R0,…,Rn]」の最後のオペレーションにおいて
スタックを確保するオペレーションが追加されたものに
等しい(サイクル数は変わらない)。最後にスタックを
確保しているのは、後のスタックの使用に備えるためで
ある。 (e)復帰レジスタストア命令「st LR」 LR13に格納されている復帰アドレスを退避する命令
であり、次のオペレーションが1サイクルで実行され
る。なお、この命令自体は図37及び図38に示される
ように、本プロセッサ10に特有の機械語命令ではない
が、後述するように、コンパイラによって次の機械語命
令(f)と択一的に用いられる点に特徴がある。
の値を退避する。具体的には、SP12の値がAbus
33、セレクタ30を経てOAB26に格納され、その
値がオペランドアドレスとしてデータメモリ38に出力
されると共に、LR13の値がBbus34、セレクタ
31を経てODB27に格納され、その値がオペランド
データとしてデータメモリ38に格納される。 (f)復帰レジスタストアスタック確保命令「st- L
R」 LR13に格納されている復帰アドレスを退避すると共
に、先行して1ワード分のスタックを確保する命令であ
り、次の2つのオペレーションが1サイクルで実行され
る。この命令は、上記復帰レジスタストア命令「st L
R」にスタックを確保するオペレーションが追加された
ものに等しい(サイクル数は変わらない)。
の値を退避する。具体的な動作は、上記(e)の(i)
と同じである。 (ii)1ワード分のスタックを確保する。具体的な動作
は、上記(a)の(iii)と同じである。このスタック
確保は、後のスタックの使用に備えるためである。 (g)複数レジスタロード命令「ldm [R0,…,Rn]」 オペランドで指定された全てのレジスタR0〜Rn(GR
11の一部又は全部)をスタック領域に退避されていた
データで復元する命令であり、次のオペレーション
(i)と(ii)との組がn回(i=n〜1)繰り返され
た(nサイクルで実行された)後、最後に(iii)のオ
ペレーションが1回だけ(1サイクルで)実行される。
なお、この命令は、上記複数レジスタストア命令「stm
[R0,…,Rn]」とは逆方向にデータ転送を行うものに等し
い。
ていたデータで第i番目のレジスタRiを復元する。具
体的には、SP12の値がAbus33、セレクタ30
を経てOAB26に格納され、その値がオペランドアド
レスとしてデータメモリ38に出力されると共に、デー
タメモリ38からODB27に読み出されたデータがC
bus35を経てレジスタRiに格納される。
具体的な動作は、上記(b)の(ii)と同じである。 (iii)SP12が指すスタックに退避されていたデー
タでレジスタR0を復元する。具体的な動作は、上記
(g)の(i)と同じである。 (h)複数レジスタロードスタック解放命令「ldm+ [R
0,…,Rn]」 オペランドで指定された全てのレジスタR0〜Rn(GR
11の一部又は全部)をスタック領域に退避されていた
データで復元する命令であり、上記複数レジスタロード
命令「ldm [R0,…,Rn]」におけるオペレーション(i)
と(ii)との組がn+1回(i=n〜0)繰り返され
る。なお、この命令は、上記複数レジスタロード命令
「ldm [R0,…,Rn]」の最後のオペレーションにおいてス
タックを解放するオペレーションが追加されたものに等
しい(サイクル数は変わらない)。最後にスタックを解
放しているのは、使用済みとなったスタックを新たな使
用のために解放するためである。 (i)復帰レジスタロード命令「ld LR」 LR13をスタックに退避されていた復帰アドレスで復
元する命令であり、次のオペレーションが1サイクルで
実行される。なお、この命令自体は図37及び図38に
示されるように、本プロセッサ10に特有の機械語命令
ではないが、後述するように、コンパイラによって次の
機械語命令(j)と択一的に用いられる点に特徴があ
る。
ていたデータでLR13を復元する。具体的には、SP
12の値がAbus33、セレクタ30を経てOAB2
6に格納され、その値がオペランドアドレスとしてデー
タメモリ38に出力されると共に、データメモリ38か
らODB27に読み出されたデータがCbus35を経
てLR13に格納される。 (j)復帰レジスタロードスタック解放命令「ld+ L
R」 LR13をスタックに退避されていた復帰アドレスで復
元する命令であり、次の2つのオペレーションが1サイ
クルで実行される。この命令は、上記復帰レジスタロー
ド命令「ld LR」にスタックを解放するオペレーション
が追加されたものに等しい(サイクル数は変わらな
い)。
ていたデータでLR13を復元する。具体的には、上記
(i)の(i)と同じである。 (ii)1ワード分のスタックを解放する。具体的な動作
は、上記(b)の(ii)と同である。このスタック解放
は、使用済みとなったスタックを新たな使用のために解
放するためである。 [コンパイラ]図4は、図1に示されたプロセッサ10
をターゲットプロセッサするコンパイラ50の構成を示
す機能ブロック図である。このコンパイラ50は、C言
語等の関数型言語で記述されたソースプログラム40を
上記プロセッサ10が解読実行できる機械語プログラム
41に翻訳する言語プロセッサであり、具体的には、汎
用のパーソナルコンピュータで実行されるプログラムと
して実現される。
来のコンパイラが有するものと同一の機能ブロック(前
置処理部51、一般命令生成部58)と、本発明と関連
する特有の機能ブロック(サブルーチン呼出し復帰命令
生成部52、ローカル領域使用判断部53、スタック確
保解放命令生成部54、サブルーチン呼出し検出部5
5、非破壊レジスタ使用判断部56、スタック退避復帰
命令生成部57、コード出力部59)とから構成され
る。
等に格納されたソースプログラム40を読み出して、構
文解析、シンボルテーブルの作成、関数単位の中間言語
プログラムの生成、資源割付(変数のレジスタへのマッ
ピング等)等の前置処理、即ち、具体的な機械語命令に
変換する直前までの一般的な前処理を行う。一般命令生
成部58は、前置処理部51が生成した中間言語プログ
ラムのうちサブルーチン呼出し/復帰やレジスタ退避/
復元とは関連しない一般的な処理部分について翻訳す
る、言い換えれば、プロセッサ10が有する命令セット
のうち図2及び図3には示されていない機械語命令(例
えば、図38に示される機械語命令等)を生成する。
は、前置処理部51で生成された中間言語プログラムに
おける関数単位を検出し、それらの関数への入口と出口
に対応する命令、具体的には、サブルーチン呼出しスタ
ック確保命令「call-」とサブルーチン復帰スタック解
放命令「rts+」との組を生成しコード出力部59に渡
す。
部51で生成された中間プログラムの関数毎にローカル
領域が必要とされるかを判断する。具体的には、関数内
で宣言されているローカル変数の数(ワード数)を計数
し、その結果をスタック確保解放命令生成部54に通知
する。スタック確保解放命令生成部54は、スタック確
保解放命令生成部54から通知されたワード数nがゼロ
でない場合には、そのワード数n分のスタックを一度に
確保する命令「sub 4*n , SP」と、一度に解放する命
令「add 4*n , SP」とを生成しコード出力部59に渡
す。
理部51で生成された中間プログラムの関数毎に、関数
内にサブルーチン呼出し(関数呼出し)が存在するかを
判断しその結果を非破壊レジスタ使用判断部56に通知
する。具体的には、着目する関数の定義中に関数が記述
されているか判断する。非破壊レジスタ使用判断部56
は、サブルーチン呼出し検出部55から通知された関数
について、その関数内で非破壊レジスタ(この例では、
予め決定されているレジスタR2とR3)の少なくとも一
つを使用(破壊)する必要があるかを判断し、その結果
とサブルーチン呼出し検出部55からの通知結果とを併
せてスタック退避復帰命令生成部57に通知する。例え
ば、非破壊レジスタ使用判断部56は、その関数内に、
3個以上の変数を一度に演算する式(3個以上の変数が
右辺に置かれた算術論理演算式)が存在する場合に、非
破壊レジスタの少なくとも一つを使用する必要があると
判断する。
ルーチン呼出し検出部55での検出結果と非破壊レジス
タ使用判断部56での判断結果との組み合わせに基づい
て、予め定められた機械語命令セットを生成しコード出
力部59に渡す。具体的には、サブルーチンは検出され
たが非破壊レジスタは使用されないと判断された場合に
は、復帰レジスタストア命令「st LR」と復帰レジスタ
ロード命令「ld LR」とを生成し、サブルーチンは検出
されないが非破壊レジスタは使用される判断された場合
には、複数レジスタストア命令「stm [使用する非破
壊レジスタ]」と複数レジスタロード命令「ldm [使
用する非破壊レジスタ]」とを生成し、サブルーチンが
検出され、かつ、非破壊レジスタも使用されると判断さ
れた場合には、複数レジスタストアスタック確保命令
「stm- [使用する非破壊レジスタ]」と復帰レジスタ
ストア命令「st LR」と復帰レジスタロードスタック確
保命令「ld+ LR」と複数レジスタロード命令「ldm
[使用する非破壊レジスタ]」とを生成する。
生成部52、54、57、58で生成された場合の機械
語命令を受け取り、それらを内部に有する一時記憶領域
の所定位置に配置する(並べ換える)ことにより関数単
位の機械語命令列に組み立て、機械語プログラム41と
して補助記憶装置やメモリ等に出力する。例えば、一つ
の関数について4つの命令生成部52、54、57、5
8で機械語命令が生成された場合には、先頭から順に、
サブルーチン呼出しスタック確保命令「call-」、非破
壊レジスタを退避する命令「stm」又は「stm-」、復帰
レジスタスを退避する命令「st」、ローカル領域のため
のスタックを確保する命令「sub」、一般命令、ローカ
ル領域のためのスタックを解放する命令「add」、復帰
レジスタを復元する命令「ld」又は「ld+」、非破壊レ
ジスタを復元する命令「ldm」、サブルーチン復帰スタ
ック解放命令「rts+」となるよう並べて出力する。
動作手順のうち特徴的な部分を示すフローチャートであ
る。前置処理部51はソースプログラム40を関数単位
の中間言語プログラムに変換するので(ステップS10
0)、それら関数毎に以下の処理が行われる(ステップ
S101〜109)。まず、サブルーチン呼出し復帰命
令生成部52は、着目する関数を呼び出すためのサブル
ーチン呼出しスタック確保命令「call-」と、その関数
から復帰するためのサブルーチン復帰スタック解放命令
「rts+」を生成する(ステップS101)。
の関数が少なくとも1回はサブルーチン(関数)を呼び
出しているか判断し(ステップS102)、続いて、非
破壊レジスタ使用判断部56はその関数が少なくとも1
個の非破壊レジスタR2、R3を使用しているか判断する
(ステップS103、S104)。その結果、着目する
関数が少なくとも1回はサブルーチンを呼び出し、か
つ、少なくとも1個の非破壊レジスタR2、R3を使用し
ていると判断された場合には(ステップS102、S1
03)、それらを効率的に退避し復元するための機械語
命令セット、即ち、複数レジスタストアスタック確保命
令「stm- [使用する非破壊レジスタ]」と復帰レジス
タストア命令「st LR」と復帰レジスタロードスタック
確保命令「ld+ LR」と複数レジスタロード命令「ldm
[使用する非破壊レジスタ]」とを生成する(ステップ
S105)。
ブルーチンを呼び出しているが、非破壊レジスタR2、
R3を使用していないと判断された場合には(ステップ
S102、S103)、復帰レジスタだけを効率的に退
避し復元するための機械語命令セット、即ち、復帰レジ
スタストア命令「st LR」と復帰レジスタロード命令
「ld LR」とを生成する(ステップS106)。
び出していないが、少なくとも1個の非破壊レジスタR
2、R3を使用していると判断された場合には(ステップ
S102、S104)、非破壊レジスタを効率的に退避
し復元するための機械語命令セット、即ち、複数レジス
タストア命令「stm [使用する非破壊レジスタ]」と
複数レジスタロード命令「ldm [使用する非破壊レジ
スタ]」とを生成する(ステップS107)。
する関数においてローカル領域が必要とされるか判断し
(ステップS108)、必要な場合にのみ、スタック確
保解放命令生成部54は、必要なサイズ分のスタックを
一度に確保する命令「sub(必要サイズ) , SP」と一度
に解放する命令「add (必要サイズ) , SP」とを生成
する(ステップS109)。
終えると、一般命令生成部58は、着目する関数の本体
部分の処理、即ち、サブルーチン呼出し/復帰やレジス
タ退避/復元とは関連しない処理部分について対応する
一般的な機械語命令を生成する(ステップS110)。
最後に、コード出力部59は、上記ステップS101、
S105〜S107、S109、S110で生成された
全ての機械語命令を上述した所定順序に並び換えたもの
を一つの関数を構成する機械語プログラム41として補
助記憶装置等に出力する(ステップS111)。
10及びコンパイラ50の動作について、8種類の具体
的なソースプログラム40及び機械語プログラム41を
用いて説明する。なお、8種類のソースプログラム40
は、そのプログラム中で定義されている関数fの性質が
異なり、少なくとも1回はサブルーチンを呼び出してい
るか否か、少なくとも1個の非破壊レジスタR2、R3を
使用しているか否か、ローカル領域を使用しているか否
か、についての全ての組み合わせに対応する。
ラム40の第1の例を示すプログラムリストであり、少
なくとも1回はサブルーチンを呼び出し、かつ、少なく
とも1個の非破壊レジスタR2、R3を使用し、かつ、ロ
ーカル領域を使用する関数fが呼び出される場合の例で
ある。このソースプログラム40では、5つのグローバ
ル変数i0〜i3、jと、関数fを呼び出すメイン関数m
ainと、関数fとが定義され、関数fでは、4つのロ
ーカル変数l0〜l3が宣言され、グローバル変数i0〜
i3の値がローカル変数l0〜l3に代入された後に、そ
れらの和が算出されてグローバル変数jに代入され、最
後に、関数gが呼び出されている。
40がコンパイラ50によって翻訳された場合に生成さ
れる機械語プログラム41のリストを示す。サブルーチ
ン呼出し復帰命令生成部52は、図6に示されたソース
プログラム40のメイン関数mainが関数fを呼び出
していることから、その関数fを呼び出すためのサブル
ーチン呼出しスタック確保命令「call- f」121と、
その関数fから復帰するためのサブルーチン復帰スタッ
ク解放命令「rts+」129を生成する(ステップS10
1)。
は、図6に示されたソースプログラム40の関数fが関
数gを呼び出していること、及び、4個の変数を扱う加
算式(j=l0+l1+l2+l3)が存在することから、LR13
及び非破壊レジスタR2、R3を効率的に退避し復元する
ための機械語命令セット、即ち、複数レジスタストアス
タック確保命令「stm- [R2、R3]」122と復帰レ
ジスタストア命令「stLR」123と復帰レジスタロード
スタック確保命令「ld+ LR」127と複数レジスタロ
ード命令「ldm [R2、R3]」128とを生成する
(ステップS105)。
は、図6に示されたソースプログラム40の関数fにお
いて4個のローカル変数が宣言されていることから、4
ワード分のローカル領域(スタック)を一度に確保する
命令「sub 16 , SP」124と一度に解放する命令「ad
d 16 , SP」126とを生成する(ステップS10
9)。
れたソースプログラム40の関数fにおいて4つのグロ
ーバル変数i0〜i3の値がローカル変数l0〜l3に代入
されていること、及び、それらの和が算出されてグロー
バル変数jに代入されていること、及び、関数gが呼び
出されていることから、それらに対応する一般的な機械
語命令列125を生成する(ステップS110)。
41をプロセッサ10が実行した場合におけるスタック
の内容・大きさ及びSP12の値の変化を示す。図9
(a)及び(b)は、それぞれ、図7に示された機械語
命令列の前半部(ステップ121〜124)及び後半部
(ステップ126〜129)におけるプロセッサ10の
実行動作をサイクルごとに示すタイミングチャートであ
る。
タック確保命令「call- f」121を解読すると、1サ
イクルで、(i)復帰アドレスを算出しLR13に格納
し、(ii)分岐先アドレスfをFPC15aに格納し、
(iii)1ワード分のスタックを確保するオペレーショ
ンを実行する。これによって、分岐と同時に1ワード分
のスタックが先行して確保され、スタックは図8に示さ
れる第1の状態201となる。
トアスタック確保命令「stm- [R2、R3]」122を
解読すると、1つ目のサイクルで、(i)SP12が指
すスタックにレジスタR2を退避し、(ii)1ワード分
のスタックを確保し、2つ目のサイクルで、(iii)S
P12が指すスタックにレジスタR3を退避し、(iv)
1ワード分のスタックを確保するオペレーションを実行
する。これによって、2つの非破壊レジスタR2、R3が
退避されると共に、最後に、1ワード分のスタックが先
行して確保され、スタックは図8に示される第2の状態
202となる。
トア命令「st LR」123を解読すると、1サイクル
で、SP12が指すスタックにLR13の値を退避する
オペレーションを実行する。これによって、復帰アドレ
スが退避され、スタックは図8に示される第3の状態2
03となる。次に、プロセッサ10は、スタックを一度
に確保する命令「sub 16 , SP」124を解読すると、
1サイクルで、SP12の値をALU14で16だけ減
算し再びSP12に格納するオペレーションを実行す
る。これによって、4ワード分のスタックが確保され、
スタックは図8に示される第4の状態204となる。
命令列125を解読実行するが、これによってスタック
が変化することはない。次に、プロセッサ10は、スタ
ックを一度に解放する命令「add 16 , SP」126を解
読すると、1サイクルで、SP12の値をALU14で
16だけ加算し再びSP12に格納するオペレーション
を実行する。これによって、4ワード分のスタックが確
保され、スタックは図8に示される第5の状態205と
なる。
ードスタック確保命令「ld+ LR」127を解読する
と、1サイクルで、(i)SP12が指すスタックに退
避されていたデータでLR13を復元すると共に、(i
i)1ワード分のスタックを解放するオペレーションを
実行する。これによって、復帰アドレスが復元されると
共に1ワード分のスタックが解放され、スタックは図8
に示される第6の状態206となる。
ードスタック解放命令「ldm [R2、R3]」128を
解読すると、1つ目のサイクルで、(i)SP12が指
すスタックでレジスタR3を復元し、(ii)1ワード分
のスタックを解放し、2つ目のサイクルで、(iii)S
P12が指すスタックでレジスタR2を復元し、(iv)
1ワード分のスタックを解放するオペレーションを実行
する。これによって、2つの非破壊レジスタR2、R3が
復元され、スタックは図8に示される第7の状態207
となる。
復帰スタック解放命令「rts+」129を解読すると、1
サイクルで、(i)復帰アドレスをPC15に格納し、
(ii)1ワード分のスタックを解放するオペレーション
を実行する。これによって、1ワード分のスタックが解
放され、スタックは図8に示される第8の状態208と
なる。
における図40(a)及び(b)とを比較して分かるよ
うに、本コンパイラ50及びプロセッサ10によれば、
従来と同じ内容の処理を実行するのに要する時間が短縮
されている。具体的には、サブルーチンfへの分岐、2
個の非破壊レジスタR2、R3の退避、復帰レジスタL
Rの退避及びローカル領域の確保のためのオペレーショ
ンは、図9(a)では第1〜5サイクルで実行されてい
るが、従来の図40(a)では第1〜8サイクルで実行
されており、3サイクルだけ時間が短縮されている。同
様に、ローカル領域の解放、復帰レジスタLRの復元、
2個の非破壊レジスタR2、R3の復元及びサブルーチ
ンfからの復帰のためのオペレーションは、図9(b)
では第(l−4)〜lサイクルで実行されているが、従
来の図40(b)では第(n−7)〜nサイクルで実行
されており、やはり3サイクルだけ時間が短縮されてい
る。
て)実行されていたスタックの確保及び解放のオペレー
ションが、本コンパイラ50及びプロセッサ10によっ
て、サブルーチン呼出しやレジスタ退避のオペレーショ
ンに吸収(並列化)されたからである。具体的には、サ
ブルーチン呼出しスタック確保命令「call-」にスタッ
クを確保するオペレーションが並列化されて組み込まれ
たことにより1サイクル分の高速化が実現され、複数レ
ジスタストアスタック確保命令「stm-」にスタックを2
回確保するオペレーションが並列化されて組み込まれた
ことにより2サイクル分の高速化が実現されている。同
様に、復帰レジスタロードスタック確保命令「ld+」、
複数レジスタロード命令「ldm」及びサブルーチン復帰
スタック解放命令「rts+」それぞれにスタックを確保す
るオペレーションが並列化されて組み込まれたことによ
り各1サイクル分の高速化が実現されている 以上のように、本実施の形態のコンパイラ50により、
ソースプログラム40は並列性の高い機械語命令列に変
換され、本実施の形態のプロセッサ10により、その機
械語命令列は従来よりも少ないサイクルで高速実行され
る。
例を示すプログラムリストであり、図6に示された第1
の例と異なる点は、関数fが関数(サブルーチン)gを
呼び出していない点である。図11は、図10に示され
たソースプログラム40がコンパイラ50によって翻訳
された場合に生成される機械語プログラム41のリスト
を示し、図12は、図11に示された機械語プログラム
41をプロセッサ10が実行した場合におけるスタック
の内容・大きさ及びSP12の値の変化を示す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」と複数レジスタストアスタック確保
命令「stm-」、後半部分には復帰レジスタロードスタッ
ク確保命令「ld+」と複数レジスタロード命令「ldm」と
サブルーチン復帰スタック解放命令「rts+」)が生成さ
れているので、本プロセッサ10がこの機械語プログラ
ム41を実行した場合には、従来と比べて、関数fの呼
び出し及び復帰において夫々3サイクルだけ実行時間が
短縮される。
例を示すプログラムリストであり、図6に示された第1
の例と異なる点は、関数fがローカル領域を使用してい
ない点である。図14は、図13に示されたソースプロ
グラム40がコンパイラ50によって翻訳された場合に
生成される機械語プログラム41のリストを示し、図1
5は、図14に示された機械語プログラム41をプロセ
ッサ10が実行した場合におけるスタックの内容・大き
さ及びSP12の値の変化を示す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」と複数レジスタストアスタック確保
命令「stm-」、後半部分には復帰レジスタロードスタッ
ク確保命令「ld+」と複数レジスタロード命令「ldm」と
サブルーチン復帰スタック解放命令「rts+」)が生成さ
れているので、本プロセッサ10がこの機械語プログラ
ム41を実行した場合には、従来と比べて、関数fの呼
び出し及び復帰において夫々3サイクルだけ実行時間が
短縮される。
例を示すプログラムリストであり、図6に示された第1
の例と異なる点は、関数fが関数(サブルーチン)gを
呼び出していないこととローカル領域を使用していない
点である。図17は、図16に示されたソースプログラ
ム40がコンパイラ50によって翻訳された場合に生成
される機械語プログラム41のリストを示し、図18
は、図17に示された機械語プログラム41をプロセッ
サ10が実行した場合におけるスタックの内容・大きさ
及びSP12の値の変化を示す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」と複数レジスタストア命令「stm」、
後半部分には複数レジスタロード命令「ldm」とサブル
ーチン復帰スタック解放命令「rts+」)が生成されてい
るので、本プロセッサ10がこの機械語プログラム41
を実行した場合には、従来と比べて、関数fの呼び出し
及び復帰において夫々2サイクルだけ実行時間が短縮さ
れる。
例を示すプログラムリストであり、図6に示された第1
の例と異なる点は、関数fが関数(サブルーチン)gを
呼び出していないことと非破壊レジスタR2、R3を使用
していない点である。図20は、図19に示されたソー
スプログラム40がコンパイラ50によって翻訳された
場合に生成される機械語プログラム41のリストを示
し、図21は、図20に示された機械語プログラム41
をプロセッサ10が実行した場合におけるスタックの内
容・大きさ及びSP12の値の変化を示す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」、後半部分にはサブルーチン復帰ス
タック解放命令「rts+」)が生成されているので、本プ
ロセッサ10がこの機械語プログラム41を実行した場
合には、従来と比べて、関数fの呼び出し及び復帰にお
いて夫々1サイクルだけ実行時間が短縮される。
例を示すプログラムリストであり、図6に示された第1
の例と異なる点は、非破壊レジスタR2、R3を使用して
いない点である。図23は、図22に示されたソースプ
ログラム40がコンパイラ50によって翻訳された場合
に生成される機械語プログラム41のリストを示し、図
24は、図23に示された機械語プログラム41をプロ
セッサ10が実行した場合におけるスタックの内容・大
きさ及びSP12の値の変化を示す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」、後半部分にはサブルーチン復帰ス
タック解放命令「rts+」)が生成されているので、本プ
ロセッサ10がこの機械語プログラム41を実行した場
合には、従来と比べて、関数fの呼び出し及び復帰にお
いて夫々1サイクルだけ実行時間が短縮される。
例を示すプログラムリストであり、図6に示された第1
の例と異なる点は、関数fがローカル領域及び非破壊レ
ジスタR2、R3を使用していない点である。図26は、
図25に示されたソースプログラム40がコンパイラ5
0によって翻訳された場合に生成される機械語プログラ
ム41のリストを示し、図27は、図26に示された機
械語プログラム41をプロセッサ10が実行した場合に
おけるスタックの内容・大きさ及びSP12の値の変化
を示す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」、後半部分にはサブルーチン復帰ス
タック解放命令「rts+」)が生成されているので、本プ
ロセッサ10がこの機械語プログラム41を実行した場
合には、従来と比べて、関数fの呼び出し及び復帰にお
いて夫々1サイクルだけ実行時間が短縮される。
例を示すプログラムリストであり、図6に示された第1
の例と異なる点は、関数fが関数(サブルーチン)gを
呼び出していないこととローカル領域及び非破壊レジス
タR2、R3を使用していない点である。図29は、図2
8に示されたソースプログラム40がコンパイラ50に
よって翻訳された場合に生成される機械語プログラム4
1のリストを示し、図30は、図29に示された機械語
プログラム41をプロセッサ10が実行した場合におけ
るスタックの内容・大きさ及びSP12の値の変化を示
す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」、後半部分にはサブルーチン復帰ス
タック解放命令「rts+」)が生成されているので、本プ
ロセッサ10がこの機械語プログラム41を実行した場
合には、従来と比べて、関数fの呼び出し及び復帰にお
いて夫々1サイクルだけ実行時間が短縮される。 [コンパイラの変形例]次に、上記コンパイラ50の変
形例を説明する。具体的には、上記コンパイラ50のス
タック退避復帰命令生成部57は、着目する関数がサブ
ルーチンを呼び出しており、かつ、非破壊レジスタを使
用している場合には、複数レジスタストアスタック確保
命令「stm-」と復帰レジスタストア命令「st」と復帰レ
ジスタロードスタック確保命令「ld+」と複数レジスタ
ロード命令「ldm」とを生成したが、これに換えて、こ
れら機械語命令セットと等価な別の機械語命令セット、
即ち、復帰レジスタストアスタック確保命令「st-」と
複数レジスタストア命令「stm」と複数レジスタロード
スタック確保命令「ldm+」と復帰レジスタロード命令
「ld」とを生成してもよい。
令生成部52、54、57、58で生成された機械語命
令に対して、先頭から順に、サブルーチン呼出しスタッ
ク確保命令「call-」、復帰レジスタスを退避する命令
「st」又は「st-」、非破壊レジスタを退避する命令「s
tm」、ローカル領域のためのスタックを確保する命令
「sub」、一般命令、ローカル領域のためのスタックを
解放する命令「add」、非破壊レジスタを復元する命令
「ldm」又は「ldm+」、復帰レジスタを復元する命令「l
d」、サブルーチン復帰スタック解放命令「rts+」とな
るよう並べて出力するものとする。
手順のうち特徴的な部分を示すフローチャートであり、
図5に示されたコンパイラ50のフローチャートと異な
る点は、着目する関数がサブルーチンを呼び出しており
(ステップS122)、かつ、非破壊レジスタを使用し
ている場合(ステップS123)に生成される機械語命
令セット(ステップS125)の内容である。
ム40が変形例に係るコンパイラによって翻訳された場
合に生成される機械語プログラム41のリストを示し、
上記コンパイラ50における図7に対応する。図33
は、図32に示された機械語プログラム41をプロセッ
サ10が実行した場合におけるスタックの内容・大きさ
及びSP12の値の変化を示す。図34(a)及び
(b)は、それぞれ、図32に示された機械語命令列の
前半部(ステップ221〜224)及び後半部(ステッ
プ226〜229)におけるプロセッサ10の実行動作
をサイクルごとに示すタイミングチャートである。
(b)とを比較して分かるように、この変形例に係るコ
ンパイラは、上記コンパイラ50とは異なる機械語命令
列を生成するが、実行サイクル数の合計は同じである。
つまり、この変形例に係るコンパイラは、従来のものと
比べて、サブルーチンの呼び出し及び復帰において各3
サイクルだけ短縮された機械語プログラムを生成する。
ラム40が変形例に係るコンパイラによって翻訳された
場合に生成される機械語プログラム41のリストを示
し、上記コンパイラ50における図14に対応する。図
36は、図35に示された機械語プログラム41をプロ
セッサ10が実行した場合におけるスタックの内容・大
きさ及びSP12の値の変化を示す。
1には、本プロセッサ10に特有の機械語命令(関数f
が呼び出される前半部にはサブルーチン呼出しスタック
確保命令「call-」と復帰レジスタストアスタック確保
命令「st-」と複数レジスタストア命令「stm」、後半部
分には複数レジスタロードスタック確保命令「ldm+」と
サブルーチン復帰スタック解放命令「rts+」)が生成さ
れているので、本プロセッサ10がこの機械語プログラ
ム41を実行した場合には、従来と比べて、関数fの呼
び出し及び復帰において夫々3サイクルだけ実行時間が
短縮される。
10及びコンパイラ50並びに変形例に係るコンパイラ
によれば、サブルーチンの呼び出しに伴うスタックの確
保という定型的なオペレーションは、サブルーチンの呼
び出しやレジスタの退避と並列化されて実行され、ま
た、サブルーチンの復帰に伴うスタックの解放という定
型的なオペレーションは、レジスタの復元やサブルーチ
ンからの復帰と並列化されて実行される。これによっ
て、スタックの確保と解放のための実行時間は見かけ上
不要となり、サブルーチンの呼び出しと復帰における実
行時間は短縮される。このような実行速度の向上は、機
械語プログラムに含まれるサブルーチンの数が多い程、
また、サブルーチンの呼び出しに伴って退避すべきレジ
スタの数が多い程、大きな効果が発揮される。
イラについて、実施の形態及びその変形例に基づいて説
明したが、本発明はこれらに限定されないのは言うまで
もない。例えば、本実施の形態のプロセッサ10は、復
帰アドレスを保持する専用のレジスタLR13を有し、
そのLR13を扱う専用の命令を実行したが、本発明
は、これらLR13や専用命令を有する必要はない。復
帰アドレスをプロセッサ内部ではなく、常にスタックに
格納するタイプのプロセッサであってもよい。LR13
は非破壊レジスタの一つと言えるので、退避及び復元に
関してGR11と同じ扱いをすることができる。
破壊レジスタ使用判断部56は、関数内に3個以上の変
数が右辺に置かれた算術論理演算式が存在するか否かで
非破壊レジスタの使用を判断したが、このような判断基
準に限られず、例えば、前置処理部51における資源割
付の結果(必要とされるレジスタの個数が2を越えるか
否)から、非破壊レジスタの使用を判断してもよい。
変形例は、汎用のコンピュータシステム上で実行される
プログラムとして実現されるので、このようなコンパイ
ラをCD−ROMや通信回線等の記録・伝送媒体を介し
て流通させることができるのは言うまでもない。
に係るプロセッサは、スタック領域のためのデータメモ
リと予め命令が記憶された命令メモリとに接続されて用
いられるマイクロプロセッサであって、実行順序をサブ
ルーチンに分岐させるサブルーチン呼出し手段と、後の
使用のための新たなスタック領域を前記データメモリに
確保するスタック確保手段と、前記命令メモリから命令
をフェッチする命令フェッチ手段と、フェッチされた命
令が第1命令である場合に、前記サブルーチン呼出し手
段による分岐と前記スタック確保手段による確保とを並
列に実行させる第1命令実行手段とを備えることを特徴
とする。
プログラムを機械語命令列に変換するコンパイラであっ
て、前記ソースプログラム中にサブルーチン呼出し命令
を検出すると、サブルーチン呼出しスタック確保命令を
生成するサブルーチン呼出しスタック確保命令生成手段
を備え、前記サブルーチン呼出しスタック確保命令は、
以下のオペレーションをマイクロプロセッサに並列に実
行させる機械語命令であることを特徴とする。(a)実行
順序を前記サブルーチンに分岐させる。(b)後の使用の
ための新たなスタック領域をデータメモリに確保する。
行した場合には、同一のマシンサイクルでサブルーチン
への分岐と後の使用のための新たなスタック領域の確保
とが並列に行われるので、サブルーチン分岐とスタック
確保とを順次に実行する従来に比べ、実行時間が短縮さ
れる。ここで、前記マイクロプロセッサはさらに、サブ
ルーチンからそのサブルーチンを呼び出したメインルー
チンに実行順序を復帰させる際の復帰先となる復帰アド
レスを格納するための記憶領域を有する復帰アドレス記
憶手段と、前記復帰アドレス記憶手段に復帰アドレスを
格納する復帰アドレス格納手段とを備え、前記第1命令
実行手段は、フェッチされた命令が第1命令である場合
に、前記サブルーチン呼出し手段による分岐と前記スタ
ック確保手段による確保とに加えて、前記復帰アドレス
格納手段による格納を並列に実行させてもよい。同様
に、前記コンパイラにおいて、前記サブルーチン呼出し
スタック確保命令は、前記オペレーションに加えて以下
のオペレーションを前記マイクロプロセッサに並列に実
行させる機械語命令であってもよい。(c)前記サブルー
チンからそのサブルーチンを呼び出したメインルーチン
に実行順序を復帰させる際の復帰先となる復帰アドレス
を前記マイクロプロセッサが有する復帰アドレス記憶手
段に格納する。
行した場合には、同一のマシンサイクルでサブルーチン
への分岐と後の使用のための新たなスタック領域の確保
と復帰アドレスの復帰アドレス記憶手段への格納とが並
列に行われるので、サブルーチン分岐とスタック確保と
復帰アドレスの格納を順次に実行する従来に比べ、実行
時間がさらに短縮される。
前記復帰アドレス記憶手段に格納された復帰アドレスを
既に確保された前記データメモリのスタック領域に退避
する復帰アドレス退避手段を備えてもよい。同様に、前
記コンパイラはさらに、前記サブルーチン中にサブルー
チン呼出し命令を検出すると、復帰アドレス退避命令を
生成する復帰アドレス退避命令生成手段を備え、前記復
帰アドレス退避命令は、以下のオペレーションを前記マ
イクロプロセッサに実行させる機械語命令であってもよ
い。(a)前記復帰アドレス記憶手段に格納された復帰ア
ドレスを既に確保された前記データメモリのスタック領
域に退避する。
行したことによって先行確保されたスタックは、復帰ア
ドレスの退避のために有効活用され得るので、そのサブ
ルーチンから他のサブルーチンに分岐するために復帰ア
ドレスを退避する必要がある場合には、復帰アドレスの
退避のための独立したスタック確保は不要となり、実行
時間が短縮される。
前記命令フェッチ手段によってフェッチされた命令が第
2命令である場合に、前記復帰アドレス退避手段による
退避と前記スタック確保手段による確保とを並列に実行
させる第2命令実行手段を備えてもよい。同様に、前記
コンパイラにおいて、前記復帰アドレス退避命令は、前
記オペレーションに加えて以下のオペレーションを前記
マイクロプロセッサに並列に実行させる機械語命令であ
ってもよい。(b)後の使用のための新たなスタック領域
を前記データメモリに確保する。
行した場合には、同一のマシンサイクルで復帰アドレス
の退避と後の使用のための新たなスタック領域の確保と
が並列に行われるので、復帰アドレスの退避とスタック
確保とを順次に実行する従来に比べ、実行時間が短縮さ
れる。また、前記マイクロプロセッサはさらに、前記デ
ータメモリのスタック領域に退避された復帰アドレスを
前記復帰アドレス記憶手段に読み出す復帰アドレス復元
手段を備えてもよい。同様に、前記コンパイラはさら
に、前記サブルーチン中にサブルーチン呼出し命令を検
出すると、復帰アドレス復元命令を生成する復帰アドレ
ス復元命令生成手段を備え、前記復帰アドレス復元命令
は、以下のオペレーションを前記マイクロプロセッサに
実行させる機械語命令であってもよい。(a)前記データ
メモリのスタック領域に退避された復帰アドレスを前記
復帰アドレス記憶手段に読み出す。
の復帰アドレスが復元されるので、サブルーチンのネス
ト構造等によって復帰アドレスが破壊されてしまうこと
が回避される。また、前記マイクロプロセッサはさら
に、前記復帰アドレス復元手段によって読み出された復
帰アドレスが退避されていた前記データメモリのスタッ
ク領域を新たな使用のために解放するスタック解放手段
と、前記命令フェッチ手段によってフェッチされた命令
が第3命令である場合に、前記復帰アドレス復元手段に
よる読み出しと前記スタック解放手段による解放とを並
列に実行させる第3命令実行手段とを備えてもよい。同
様に、前記コンパイラにおいて、前記復帰アドレス復元
命令は、前記オペレーションに加えて以下のオペレーシ
ョンを前記マイクロプロセッサに並列に実行させる機械
語命令であってもよい。(b)前記復帰アドレスが格納さ
れていた前記データメモリのスタック領域を新たな使用
のために解放する。
行した場合には、同一のマシンサイクルで復帰アドレス
の復元と使用済みとなったスタック領域の解放とが並列
に行われるので、復帰アドレスの復元とスタック解放と
を順次に実行する従来に比べ、実行時間が短縮される。
また、前記マイクロプロセッサはさらに、サブルーチン
からそのサブルーチンを呼び出したメインルーチンに実
行順序を復帰させるサブルーチン復帰手段と、直前に使
用された前記データメモリのスタック領域を新たな使用
のために解放するスタック解放手段と、前記命令フェッ
チ手段によってフェッチされた命令が第4命令である場
合に、前記サブルーチン復帰手段による復帰と前記スタ
ック解放手段による解放とを並列に実行させる第4命令
実行手段とを備えてもよい。同様に、前記コンパイラは
さらに、サブルーチン復帰スタック解放命令を生成する
サブルーチン復帰スタック解放命令生成手段を備え、前
記サブルーチン復帰スタック解放命令は、以下のオペレ
ーションを前記マイクロプロセッサに並列に実行させる
機械語命令であってもよい。(a)前記サブルーチンから
そのサブルーチンを呼び出したメインルーチンに実行順
序を復帰させる。(b)直前に使用された前記データメモ
リのスタック領域を新たな使用のために解放する。
行した場合には、同一のマシンサイクルでサブルーチン
からの復帰と使用済みとなったスタック領域の解放とが
並列に行われるので、サブルーチンからの復帰とスタッ
ク解放とを順次に実行する従来に比べ、実行時間が短縮
される。また、前記マイクロプロセッサはさらに、サブ
ルーチンからそのサブルーチンを呼び出したメインルー
チンに実行順序を復帰させる際の復帰先となる復帰アド
レスを記憶している復帰アドレス記憶手段を備え、前記
サブルーチン復帰手段は、前記復帰アドレス記憶手段に
記憶されている復帰アドレスが示す前記メインルーチン
の位置に実行順序を復帰させてもよい。同様に、前記コ
ンパイラにおいて、前記サブルーチン復帰スタック確保
命令は、前記マイクロプロセッサが有する復帰アドレス
記憶手段に記憶されている復帰アドレスが示す前記メイ
ンルーチンの位置に実行順序を復帰させる機械語命令で
あってもよい。
納された復帰アドレスを参照してサブルーチン復帰を実
行するアーキテクチャをとるプロセッサに対応したプロ
セッサ又はコンパイラが実現される。また、前記マイク
ロプロセッサはさらに、退避すべきデータを記憶してい
るデータ記憶手段と、前記データ記憶手段に記憶された
データを前記データメモリのスタック領域に退避するデ
ータ退避手段と、前記命令フェッチ手段によってフェッ
チされた命令が第5命令である場合に、前記データ退避
手段による退避と前記スタック確保手段による確保とを
並列に実行させる第5命令実行手段とを備えてもよい。
同様に、前記コンパイラはさらに、前記マイクロプロセ
ッサに記憶されたデータであって前記サブルーチンの実
行に先立って退避すべきデータが存在するか否か判断す
るデータ退避判断手段と、退避すべきデータが存在する
と判断された場合に、データ退避スタック確保命令を生
成するデータ退避スタック確保命令生成手段とを備え、
前記データ退避スタック確保命令は、以下のオペレーシ
ョンを前記マイクロプロセッサに並列に実行させる機械
語命令であってもよい。(a)退避すべき前記データを前
記データメモリのスタック領域に退避する。(b)後の使
用のための新たなスタック領域を前記データメモリに確
保する。
行した場合には、同一のマシンサイクルでレジスタ等の
退避と後の使用のための新たなスタック領域の確保とが
並列に行われるので、レジスタ退避とスタック確保とを
順次に実行する従来に比べ、実行時間が短縮される。ま
た、前記プロセッサにおいて、前記データ記憶手段は、
退避すべき複数のデータを記憶しており、前記第5命令
実行手段は、前記データ記憶手段に記憶された複数のデ
ータそれぞれについて、前記データ退避手段による退避
と前記スタック確保手段による確保とを並列に繰り返し
実行させてもよい。同様に、前記コンパイラにおいて、
前記データ退避スタック確保命令は、前記マイクロプロ
セッサに前記2つのオペレーション(a),(b)を複数回繰
り返させる機械語命令であってもよい。
行した場合には、退避すべきレジスタの数だけ、レジス
タの退避とスタック領域の確保という並列動作が繰り返
されるので、レジスタ退避とスタック確保とを順次に繰
り返す従来に比べ、実行時間が短縮される。また、前記
マイクロプロセッサはさらに、復元すべきデータを格納
するための記憶領域を有するデータ記憶手段と、前記デ
ータメモリのスタック領域に退避されたデータを前記デ
ータ記憶手段に読み出すデータ復元手段と、前記データ
復元手段によって読み出されたデータが退避されていた
前記データメモリのスタック領域を新たな使用のために
解放するスタック解放手段と、前記命令フェッチ手段に
よってフェッチされた命令が第6命令である場合に、前
記データ復元手段による読み出しと前記スタック解放手
段による解放とを並列に実行させる第6命令実行手段と
を備えてもよい。同様に、前記コンパイラはさらに、デ
ータ復元スタック解放命令を生成するデータ復元スタッ
ク解放命令生成手段を備え、前記データ復元スタック解
放命令は、以下のオペレーションを前記マイクロプロセ
ッサに並列に実行させる機械語命令であってもよい。
(a)前記データメモリのスタック領域に退避されたデー
タを前記マイクロプロセッサが有するデータ記憶手段に
読み出す。(b)読み出された前記データが格納されてい
た前記データメモリのスタック領域を新たな使用のため
に解放する。
復元すべきデータを格納するための記憶領域を有するデ
ータ記憶手段と、前記データメモリのスタック領域に退
避されたデータを前記データ記憶手段に読み出すデータ
復元手段と、前記データ復元手段によって読み出された
データが退避されていた前記データメモリのスタック領
域を新たな使用のために解放するスタック解放手段と、
前記命令フェッチ手段によってフェッチされた命令が第
6命令である場合に、前記データ復元手段による読み出
しと前記スタック解放手段による解放とを並列に実行さ
せる第6命令実行手段とを備えてもよい。同様に、前記
コンパイラはさらに、データ復元スタック解放命令を生
成するデータ復元スタック解放命令生成手段を備え、前
記データ復元スタック解放命令は、以下のオペレーショ
ンを前記マイクロプロセッサに並列に実行させる機械語
命令であってもよい。(a)前記データメモリのスタック
領域に退避されたデータを前記マイクロプロセッサが有
するデータ記憶手段に読み出す。(b)読み出された前記
データが格納されていた前記データメモリのスタック領
域を新たな使用のために解放する。
行した場合には、同一のマシンサイクルでレジスタ等の
復元と使用済みとなったスタック領域の解放とが並列に
行われるので、レジスタ復元とスタック解放とを順次に
実行する従来に比べ、実行時間が短縮される。また、前
記プロセッサにおいて、前記データ記憶手段は、復元す
べき複数のデータを格納するための記憶領域を有してお
り、前記第6命令実行手段は、前記データ記憶手段が有
する複数の記憶領域それぞれに対して、前記データ復元
手段による読み出しと前記スタック解放手段による解放
とを並列に繰り返し実行させてもよい。同様に、前記コ
ンパイラにおいて、前記データ復元スタック解放命令
は、前記マイクロプロセッサに前記2つのオペレーショ
ン(a),(b)を複数回繰り返させる機械語命令であっても
よい。
行した場合には、復元すべきレジスタの数だけ、レジス
タの復元とスタック領域の解放という並列動作が繰り返
されるので、レジスタ復元とスタック解放とを順次に繰
り返す従来に比べ、実行時間が短縮される。また、本発
明は、上記コンパイラが有する手段に対応するステップ
を含むプログラムが記録されたコンピュータ読み取り可
能な記録媒体とすることもできる。上記コンパイラは、
汎用のコンピュータで実行されるプログラムとして実現
することができるからである。
令)を含む機械語命令列が記録されたコンピュータ読み
取り可能な記録媒体とすることもできる。本発明の技術
的思想の本質は、上記命令(第1〜6命令)の如く、サ
ブルーチンの実行に伴う処理をプロセッサに高速実行さ
せる効率的な命令を考案した点にあると言えるからであ
る。
ような関数型言語を用いることによる処理速度の低下が
回避され、特に、プロセッサ組み込み製品や制御機器等
のリアルタイム性の要求される製品の開発において関数
型の高級言語を用いることによる弊害が除去され、その
実用的効果は極めて大きい。
図である。
一部を示す。
他の一部を示す。
ック図である。
ートである。
を示す。
を示す。
P12の値の変化を示す。
た機械語命令列の前半部及び後半部におけるプロセッサ
10の実行動作をサイクルごとに示すタイミングチャー
トである。
トを示す。
トを示す。
SP12の値の変化を示す。
トを示す。
トを示す。
SP12の値の変化を示す。
トを示す。
トを示す。
SP12の値の変化を示す。
トを示す。
トを示す。
SP12の値の変化を示す。
トを示す。
トを示す。
SP12の値の変化を示す。
トを示す。
トを示す。
SP12の値の変化を示す。
トを示す。
トを示す。
SP12の値の変化を示す。
ローチャートである。
例に係るコンパイラによって翻訳された場合に生成され
る機械語プログラム41のリストを示す。
ロセッサ10が実行した場合におけるスタックの内容・
大きさ及びSP12の値の変化を示す。
された機械語命令列の前半部及び後半部におけるプロセ
ッサ10の実行動作をサイクルごとに示すタイミングチ
ャートである。
形例に係るコンパイラによって翻訳された場合に生成さ
れる機械語プログラム41のリストを示す。
ロセッサ10が実行した場合におけるスタックの内容・
大きさ及びSP12の値の変化を示す。
リストを示す。
械語命令のオペレーションを説明するテーブルである。
セッサによって実行された場合におけるスタックの内容
・大きさ及びスタックポインタSPの値の変化を示す。
された機械語命令列の前半部及び後半部におけるプロセ
ッサの実行動作をサイクルごとに示すタイミングチャー
トである。
Claims (24)
- 【請求項1】 メモリをスタック領域として使用するプ
ロセッサであって、 サブルーチンを呼び出す場合に、サブルーチン呼出しと
並列してスタックポインタを固定値分更新してスタック
領域を確保したのち、前記スタックポインタが指すスタ
ック領域へのデータ退避と並列してさらにスタックポイ
ンタを固定値分更新してスタック領域を確保する手段を
備えることを特徴とするプロセッサ。 - 【請求項2】 前記プロセッサはさらに、 サブルーチンから復帰する場合に、サブルーチン復帰と
並列してスタックポインタを固定値分更新してスタック
領域を開放する手段を備えることを特徴とする請求項1
記載のプロセッサ。 - 【請求項3】 前記プロセッサはさらに、 前記スタックポインタが指すスタック領域からのデータ
復帰と並列してスタックポインタを固定値分更新してス
タック領域を開放する手段を備えることを特徴とする請
求項1記載のプロセッサ。 - 【請求項4】 前記プロセッサはさらに、 サブルーチンからそのサブルーチンを呼び出したメイン
ルーチンに実行順序を復帰させる際の復帰先となる復帰
アドレスを格納するための記憶領域を有し、 前記サブルーチン呼出し及び前記スタック確保と並列し
てさらに、前記サブルーチンからの復帰先となる復帰ア
ドレスを前記記憶領域に格納することを特徴とする請求
項1記載のプロセッサ。 - 【請求項5】 前記プロセッサはさらに、 前記記憶領域に格納された復帰アドレスを前記スタック
ポインタが指す既に確保されたスタック領域に退避する
手段を備えることを特徴とする請求項4記載のプロセッ
サ。 - 【請求項6】 前記プロセッサは、前記復帰アドレスの
退避と並列してスタックポインタを固定値分更新してス
タック領域を確保することを特徴とする請求項5記載の
プロセッサ。 - 【請求項7】 前記プロセッサはさらに、 スタック領域に退避された復帰アドレスを前記記憶領域
に読み出す手段を備えることを特徴とする請求項5記載
のプロセッサ。 - 【請求項8】 前記プロセッサは、前記復帰アドレスの
前記記憶領域への読み出しと並列してスタックポインタ
を固定値分更新してスタック領域を開放することを特徴
とする請求項7記載のプロセッサ。 - 【請求項9】 スタック領域のためのデータメモリと予
め命令が記憶された命令メモリとに接続されて用いられ
るプロセッサであって、 前記命令メモリ中の一つの記憶領域を示すアドレスを記
憶するプログラムカウンタと、 前記データメモリ中の一つの記憶領域を示すアドレスを
記憶するスタックポインタと、 サブルーチンの先頭アドレスを前記プログラムカウンタ
に格納するサブルーチン呼出し手段と、 前記スタックポインタに格納されているアドレスを固定
値分減少するよう更新するスタック確保手段と、 前記プログラムカウンタに格納されたアドレスが示す記
憶領域に記憶された命令を前記命令メモリからフェッチ
する命令フェッチ手段と、 フェッチされた命令がサブルーチンの先頭アドレスを含
むサブルーチン呼出し命令である場合に、前記サブルー
チン呼出し手段による格納と前記スタック確保手段によ
る更新とを並列に実行させるサブルーチン呼出し命令実
行手段と、退避すべきデータを記憶しているデータ記憶手段と、 前記データ記憶手段に記憶されたデータを前記スタック
ポインタに格納されているアドレスが示す前記データメ
モリ中の一つの記憶領域に格納するデータ退避手段と、 前記命令フェッチ手段によってフェッチされた命令がデ
ータ退避命令である場合に、前記データ退避手段による
格納と前記スタック確保手段による更新とを並列に実行
させるデータ退避命令実行手段とを備えることを特徴と
するプロセッサ。 - 【請求項10】 前記プロセッサはさらに、 サブルーチンからそのサブルーチンを呼び出したメイン
ルーチンに実行順序を復帰させる際の復帰先となる復帰
アドレスを前記プログラムカウンタに格納するサブルー
チン復帰手段と、 前記スタックポインタに格納されているアドレスを固定
値分増加するよう更新するスタック解放手段と、 前記命令フェッチ手段によってフェッチされた命令がサ
ブルーチン復帰命令である場合に、前記サブルーチン復
帰手段による格納と前記スタック解放手段による更新と
を並列に実行させるサブルーチン復帰命令実行手段とを
備えることを特徴とする請求項9記載のプロセッサ。 - 【請求項11】 前記プロセッサはさらに、 前記スタックポインタに格納されているアドレスが示す
前記データメモリ中の一つの記憶領域に格納されている
データを前記データ記憶手段に読み出すデータ復元手段
と、 前記スタックポインタに格納されているアドレスを固定
値分増加するよう更新するスタック解放手段と、 前記命令フェッチ手段によってフェッチされた命令がデ
ータ復元命令である場合に、前記データ復元手段による
読み出しと前記スタック解放手段による更新とを並列に
実行させるデータ復元命令実行手段とを備えることを特
徴とする請求項9記載のプロセッサ。 - 【請求項12】 前記プロセッサはさらに、 サブルーチンからそのサブルーチンを呼び出したメイン
ルーチンに実行順序を復帰させる際の復帰先となる復帰
アドレスを格納するための記憶領域を有する復帰アドレ
スレジスタと、 前記復帰アドレスレジスタに復帰アドレスを格納する復
帰アドレス格納手段とを備え、 前記サブルーチン呼出し命令実行手段は、フェッチされ
た命令がサブルーチン呼出し命令である場合に、前記サ
ブルーチン呼出し手段による格納と前記スタック確保手
段による更新とに加えて、前記復帰アドレス格納手段に
よる格納を並列に実行させることを特徴とする請求項9
記載のプロセッサ。 - 【請求項13】 前記プロセッサはさらに、 前記復帰アドレスレジスタに格納された復帰アドレス
を、前記スタックポインタに格納されているアドレスが
示す前記データメモリ中の一つの記憶領域に格納する復
帰アドレス退避手段を備えることを特徴とする請求項1
2記載のプロセッサ。 - 【請求項14】 前記プロセッサはさらに、 前記命令フェッチ手段によってフェッチされた命令が復
帰アドレス退避命令である場合に、前記復帰アドレス退
避手段による格納と前記スタック確保手段による更新と
を並列に実行させる復帰アドレス退避命令実行手段を備
えることを特徴とする請求項13記載のプロセッサ。 - 【請求項15】 前記プロセッサはさらに、 前記スタックポインタに格納されているアドレスが示す
前記データメモリ中の一つの記憶領域に格納されている
復帰アドレスを前記復帰アドレスレジスタに読み出す復
帰アドレス復元手段を備えることを特徴とする請求項1
3記載のプロセッサ。 - 【請求項16】 前記プロセッサはさらに、 前記スタックポインタに格納されているアドレスを固定
値分増加するよう更新するスタック解放手段と、 前記命令フェッチ手段によってフェッチされた命令が復
帰アドレス復元命令である場合に、前記復帰アドレス復
元手段による読み出しと前記スタック解放手段による更
新とを並列に実行させる復帰アドレス復元命令実行手段
とを備えることを特徴とする請求項15記載のプロセッ
サ。 - 【請求項17】 ソースプログラムを機械語命令列に変
換するプログラム変換装置であって、 前記ソースプログラム中にサブルーチン呼出し命令を検
出すると、サブルーチン呼出しスタック確保命令を生成
するサブルーチン呼出しスタック確保命令生成手段と、 プロセッサに記憶されたデータであって前記サブルーチ
ンの実行に先立って退避すべきデータが存在するか否か
判断するデータ退避判断手段と、 退避すべきデータが存在すると判断された場合に、デー
タ退避スタック確保命令を生成するデータ退避スタック
確保命令生成手段とを備え、 前記サブルーチン呼出しスタック確保命令は、以下のオ
ペレーション(a)及び(c)をプロセッサに並列に実行させ
る機械語命令であり、 前記データ退避スタック確保命令は、以下のオペレーシ
ョン(b)及び(c)を前記プロセッサに並列に実行させる機
械語命令であることを特徴とするプログラム変換装置。 (a)実行順序を前記サブルーチンに分岐させる (b)退避すべき前記データをスタックポインタが指すメ
モリのスタック領域に退避する (c)スタックポインタを固定値分更新してスタック領域
をメモリに確保する - 【請求項18】 前記プログラム変換装置はさらに、 サブルーチン復帰スタック解放命令を生成するサブルー
チン復帰スタック解放命令生成手段を備え、 前記サブルーチン復帰スタック解放命令は、以下のオペ
レーション(a)及び(b)を前記プロセッサに並列に実行さ
せる機械語命令であることを特徴とする請求項17記載
のプログラム変換装置。 (a)前記サブルーチンからそのサブルーチンを呼び出し
たメインルーチンに実行順序を復帰させる (b)スタックポインタを固定値分更新してメモリのスタ
ック領域を解放する - 【請求項19】 前記プログラム変換装置はさらに、 データ復元スタック解放命令を生成するデータ復元スタ
ック解放命令生成手段を備え、 前記データ復元スタック解放命令は、以下のオペレーシ
ョン(a)及び(b)を前記プロセッサに並列に実行させる機
械語命令であることを特徴とする請求項17記載のプロ
グラム変換装置。 (a)スタックポインタが指すメモリのスタック領域に退
避されたデータを前記プロセッサが有するデータ記憶手
段に読み出す (b)スタックポインタを固定値分更新してメモリのスタ
ック領域を解放する - 【請求項20】 前記サブルーチン呼出しスタック確保
命令は、前記オペレーション(a)及び(c)に加えて以下の
オペレーション(d)を前記プロセッサに並列に実行させ
る機械語命令であることを特徴とする請求項17記載の
プログラム変換装置。 (d)前記サブルーチンからそのサブルーチンを呼び出し
たメインルーチンに実行順序を復帰させる際の復帰先と
なる復帰アドレスを前記プロセッサが有する復帰アドレ
ス記憶手段に格納する - 【請求項21】 プロセッサによって実行される機械語
命令列が記録されたコンピュータ読み取り可能な記録媒
体であって、 前記機械語命令列にサブルーチン呼出しスタック確保命
令とデータ退避スタック確保命令とが含まれ、 前記サブルーチン呼出しスタック確保命令は、以下のオ
ペレーション(a)及び(c)を前記プロセッサに並列に実行
させる機械語命令であり、 前記データ退避スタック確保命令は、以下のオペレーシ
ョン(b)及び(c)を前記プロセッサに並列に実行させる機
械語命令であ ることを特徴とする記録媒体。 (a)実行順序を前記サブルーチンに分岐させる(b)前記サブルーチンの実行に先立って退避すべきデー
タをスタックポインタが指すメモリのスタック領域に退
避する (c)スタックポインタを固定値分更新して スタック領域
をメモリに確保する - 【請求項22】 前記機械語命令列にはさらにサブルー
チン復帰スタック解放命令が含まれ、 前記サブルーチン復帰スタック解放命令は、以下のオペ
レーション(a)及び(b)を前記プロセッサに並列に実行さ
せる機械語命令であることを特徴とする請求項21記載
の記録媒体。 (a)前記サブルーチンからそのサブルーチンを呼び出し
たメインルーチンに実行順序を復帰させる (b)スタックポインタを固定値分更新してメモリのスタ
ック領域を解放する - 【請求項23】 前記機械語命令列にはさらにデータ復
元スタック解放命令が含まれ、 前記データ復元スタック解放命令は、以下のオペレーシ
ョン(a)及び(b)を前記プロセッサに並列に実行させる機
械語命令であることを特徴とする請求項21記載の記録
媒体。 (a)スタックポインタが指すスタック領域に退避された
データを前記プロセッサが有するデータ記憶手段に読み
出す (b)スタックポインタを固定値分更新してメモリのスタ
ック領域を解放する - 【請求項24】 前記サブルーチン呼出しスタック確保
命令は、前記オペレーション(a)及び(c)に加えて以下の
オペレーション(d)を前記プロセッサに並列に実行させ
る機械語命令であることを特徴とする請求項21記載の
記録媒体。(d) 前記サブルーチンからそのサブルーチンを呼び出し
たメインルーチンに実行順序を復帰させる際の復帰先と
なる復帰アドレスを前記プロセッサが有する復帰アドレ
ス記憶手段に格納する
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP10348012A JP3079090B2 (ja) | 1997-12-10 | 1998-12-08 | プロセッサ及びプログラム変換装置 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP33966997 | 1997-12-10 | ||
| JP9-339669 | 1997-12-10 | ||
| JP10348012A JP3079090B2 (ja) | 1997-12-10 | 1998-12-08 | プロセッサ及びプログラム変換装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH11242595A JPH11242595A (ja) | 1999-09-07 |
| JP3079090B2 true JP3079090B2 (ja) | 2000-08-21 |
Family
ID=26576488
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10348012A Expired - Fee Related JP3079090B2 (ja) | 1997-12-10 | 1998-12-08 | プロセッサ及びプログラム変換装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3079090B2 (ja) |
-
1998
- 1998-12-08 JP JP10348012A patent/JP3079090B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH11242595A (ja) | 1999-09-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3180075B2 (ja) | 異なる命令コード相互間の動的変換装置及び方法 | |
| US6282708B1 (en) | Method and processor for structuring a multi-instruction computer program in an internal directed acyclic graph | |
| JP3842474B2 (ja) | データ処理装置 | |
| EP0312764A2 (en) | A data processor having multiple execution units for processing plural classes of instructions in parallel | |
| US7552313B2 (en) | VLIW digital signal processor for achieving improved binary translation | |
| JP2002333978A (ja) | Vliw型プロセッサ | |
| US4539635A (en) | Pipelined digital processor arranged for conditional operation | |
| JP2011096254A (ja) | 乗累算演算を実行するための装置および方法 | |
| JPH09212361A (ja) | データ処理装置およびデータ処理方法 | |
| JPH01237837A (ja) | データ処理装置 | |
| US6212630B1 (en) | Microprocessor for overlapping stack frame allocation with saving of subroutine data into stack area | |
| KR100316078B1 (ko) | 파이프라인방식프로세서 | |
| US5226128A (en) | Horizontal computer having register multiconnect for execution of a loop with a branch | |
| US6101326A (en) | Method and apparatus for frame elimination for simple procedures with tail calls | |
| JP2987311B2 (ja) | プロセッサ及び翻訳装置 | |
| US20010037441A1 (en) | Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (CLIW) | |
| JP4502532B2 (ja) | データ処理装置 | |
| JP3079090B2 (ja) | プロセッサ及びプログラム変換装置 | |
| JP2556182B2 (ja) | デ−タ処理装置 | |
| JP2538053B2 (ja) | 制御装置 | |
| US6115805A (en) | Non-aligned double word fetch buffer | |
| JP3335735B2 (ja) | 演算処理装置 | |
| JP2797833B2 (ja) | 並列命令実行制御方式 | |
| JPH01271840A (ja) | マイクロコンピュータ | |
| Maurer | Mapping the Data Flow Model of Computation into an Enhanced Von Neumann Processor. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080616 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090616 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100616 Year of fee payment: 10 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100616 Year of fee payment: 10 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110616 Year of fee payment: 11 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 12 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 12 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130616 Year of fee payment: 13 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |