JP2002182927A - 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi - Google Patents
異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsiInfo
- Publication number
- JP2002182927A JP2002182927A JP2000378801A JP2000378801A JP2002182927A JP 2002182927 A JP2002182927 A JP 2002182927A JP 2000378801 A JP2000378801 A JP 2000378801A JP 2000378801 A JP2000378801 A JP 2000378801A JP 2002182927 A JP2002182927 A JP 2002182927A
- Authority
- JP
- Japan
- Prior art keywords
- execution environment
- program
- execution
- argument
- task
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】異なった実行環境で実行させるプログラムを開
発するときに、実行環境差異吸収プログラムを呼出すと
きの汎用レジスタの割当てを考慮することにより、メモ
リの使用効率を良くし、しかも、実行速度が低下しない
ようにする。 【解決手段】異種実行環境におけるレジスタの割当て方
法において、実行環境差異吸収プログラムに制御を渡す
ときのパラメータの数を、メモリに引数格納集合部を作
り、汎用レジスタにその引数格納集合部をポイントさせ
ることにより、コンパイラが予約する引数用途格納用レ
ジスタの数を越えない様に調整する。また、共通化関数
の引数の数を、コンパイラが予約する引数用途格納用レ
ジスタの数を越えない様にする。
発するときに、実行環境差異吸収プログラムを呼出すと
きの汎用レジスタの割当てを考慮することにより、メモ
リの使用効率を良くし、しかも、実行速度が低下しない
ようにする。 【解決手段】異種実行環境におけるレジスタの割当て方
法において、実行環境差異吸収プログラムに制御を渡す
ときのパラメータの数を、メモリに引数格納集合部を作
り、汎用レジスタにその引数格納集合部をポイントさせ
ることにより、コンパイラが予約する引数用途格納用レ
ジスタの数を越えない様に調整する。また、共通化関数
の引数の数を、コンパイラが予約する引数用途格納用レ
ジスタの数を越えない様にする。
Description
【0001】
【発明の属する技術分野】本発明は、異種実行環境にお
けるレジスタの割当て方法、および、異種実行環境にお
けるソフトウェア開発方法に係り、CPUを異なった環
境で実行させるときに、移植が容易で、しかも、メモリ
の使用効率が良く、実行速度を低下させることのない異
種実行環境におけるレジスタの割当て方法、および、異
種実行環境におけるソフトウェア開発方法に関する。
けるレジスタの割当て方法、および、異種実行環境にお
けるソフトウェア開発方法に係り、CPUを異なった環
境で実行させるときに、移植が容易で、しかも、メモリ
の使用効率が良く、実行速度を低下させることのない異
種実行環境におけるレジスタの割当て方法、および、異
種実行環境におけるソフトウェア開発方法に関する。
【0002】
【従来の技術】従来、異なった環境でコンピュータシス
テムを実行させるために、開発や移植を容易におこなう
ための技術が提案されている。
テムを実行させるために、開発や移植を容易におこなう
ための技術が提案されている。
【0003】このような技術の例として、特開平8―6
3363号公報の「仮想実行環境システム」がある。
3363号公報の「仮想実行環境システム」がある。
【0004】以下では、図6を用いてこの仮想実行環境
システムについて説明する。
システムについて説明する。
【0005】図6は、特開平8―63363号公報の
「仮想実行環境システム」のシステム概要図である。
「仮想実行環境システム」のシステム概要図である。
【0006】ユーザ(プログラマ)が作成するアプリケ
ーションソフトウェアのソースコードとしては、プログ
ラム本体11と置換情報記述部12がある。
ーションソフトウェアのソースコードとしては、プログ
ラム本体11と置換情報記述部12がある。
【0007】プログラム本体は、アプリケーションソフ
トウェアの目的ごとに異なるソースコードであり、置換
情報記述部12は、プログラム本体11中に記述された
情報を、仮想実行環境が実現される既存オペレーティン
グ・システム60の機種毎に対応して適切な情報に置換
える部分である。
トウェアの目的ごとに異なるソースコードであり、置換
情報記述部12は、プログラム本体11中に記述された
情報を、仮想実行環境が実現される既存オペレーティン
グ・システム60の機種毎に対応して適切な情報に置換
える部分である。
【0008】オペレーティング・システム60で実行す
るためには、これらのプログラム本体11と置換情報記
述部12に記述された置換情報を、既存オペレーティン
グ・システム用コンパイラを利用して、実行可能プログ
ラム30にし、それを実行部22が実行する。翻訳部2
1は、そのための仮想実行環境上で実行可能な実行可能
プログラムに翻訳する部分である。
るためには、これらのプログラム本体11と置換情報記
述部12に記述された置換情報を、既存オペレーティン
グ・システム用コンパイラを利用して、実行可能プログ
ラム30にし、それを実行部22が実行する。翻訳部2
1は、そのための仮想実行環境上で実行可能な実行可能
プログラムに翻訳する部分である。
【0009】その際に、ソースプログラムをC言語で記
述するときには、置換情報記述部12は、コンパイラの
プリプロセッサとして処理されるマクロ定義を利用する
ことができる。
述するときには、置換情報記述部12は、コンパイラの
プリプロセッサとして処理されるマクロ定義を利用する
ことができる。
【0010】このようにして、アプリケーションソフト
ウェア10のプログラム本体11を変更する事無く、様
々な環境用に作成された実行可能プログラム30を既存
オペレーティング・システム60上で動作させることが
可能となる。
ウェア10のプログラム本体11を変更する事無く、様
々な環境用に作成された実行可能プログラム30を既存
オペレーティング・システム60上で動作させることが
可能となる。
【0011】
【発明が解決しようとする課題】上記従来技術は、様々
な実行環境を想定し、それらでプログラムの移植や開発
を容易にすることを目的としている。
な実行環境を想定し、それらでプログラムの移植や開発
を容易にすることを目的としている。
【0012】しかしながら、上記従来技術は、実行可能
プログラムが実行されるときのメモリの使用効率や実行
速度について考慮されていない。
プログラムが実行されるときのメモリの使用効率や実行
速度について考慮されていない。
【0013】以下、図7ないし図9を用いて従来技術の
課題について説明する。
課題について説明する。
【0014】図7は、異なった実行環境でソフトウェア
開発をおこなうときの概念図である。
開発をおこなうときの概念図である。
【0015】図8は、計算機システム上で実行プログラ
ムが実行されるときの呼出し関係を示した図である。
ムが実行されるときの呼出し関係を示した図である。
【0016】図9は、実行環境差異吸収プログラム−A
を呼出すときのレジスタの割当てを示す図である。
を呼出すときのレジスタの割当てを示す図である。
【0017】ここでは、従来技術をシステム上に実装し
たときの構成をより詳細に説明して、その問題点を明ら
かにすることにしよう。
たときの構成をより詳細に説明して、その問題点を明ら
かにすることにしよう。
【0018】システムとして、図7の様に計算機システ
ム−A105a、計算機システム−B105bがあり、
そこでプログラムを実行する環境を実行環境−A104
a、実行環境−B104bと言うことにする。実行環境
−A104aは、具体的には、ハードウェア−A106
aと、ハードウェアを制御しアプリケーションプログラ
ムとハードウェアの仲立ちをするOS−A107aであ
る。
ム−A105a、計算機システム−B105bがあり、
そこでプログラムを実行する環境を実行環境−A104
a、実行環境−B104bと言うことにする。実行環境
−A104aは、具体的には、ハードウェア−A106
aと、ハードウェアを制御しアプリケーションプログラ
ムとハードウェアの仲立ちをするOS−A107aであ
る。
【0019】アプリケーション本体100は、ユーザが
個々のアプリケーションを記述するソースコードであ
り、システムから機能の提供を受けるときには、共通化
関数102を呼出す。ここで、注意することは、アプリ
ケーション本体100を記述するユーザは、共通化関数
インタフェース101を意識すればよく、個々の環境に
よってコーディングを変えなくても良いことである。し
たがって、アプリケーション本体100は、ソースレベ
ルでの互換性が保たれることになる。
個々のアプリケーションを記述するソースコードであ
り、システムから機能の提供を受けるときには、共通化
関数102を呼出す。ここで、注意することは、アプリ
ケーション本体100を記述するユーザは、共通化関数
インタフェース101を意識すればよく、個々の環境に
よってコーディングを変えなくても良いことである。し
たがって、アプリケーション本体100は、ソースレベ
ルでの互換性が保たれることになる。
【0020】共通化関数102、開発用ライブラリ関数
として提供され、ユーザには、共通化関数インタフェー
スが公開されることになる。共通化関数は、この様に環
境に依らない統一したインタフェースをユーザに提供す
るためのものである。
として提供され、ユーザには、共通化関数インタフェー
スが公開されることになる。共通化関数は、この様に環
境に依らない統一したインタフェースをユーザに提供す
るためのものである。
【0021】そして、ユーザが記述したソースをコンパ
イル・リンク作業をおこなって、実行形式を作成するこ
とになるが、実行環境−A104aで実行させるときに
は、図7に示される様に、コンパイラ−A108aでコ
ンパイルし、実行環境−B104bで実行させるときに
は、コンパイラ−B108bでコンパイルする。
イル・リンク作業をおこなって、実行形式を作成するこ
とになるが、実行環境−A104aで実行させるときに
は、図7に示される様に、コンパイラ−A108aでコ
ンパイルし、実行環境−B104bで実行させるときに
は、コンパイラ−B108bでコンパイルする。
【0022】また、同様に実行環境−A用のリンカA1
09aにより、実行環境プログラム−A103aをリン
クする。実行環境プログラム−A103aは、実行環境
−A104aで実行させるためのプログラムであり、こ
のなかで、OS−A107aのシステムコールがコール
されることになる。実行環境−B104bについても同
様である。
09aにより、実行環境プログラム−A103aをリン
クする。実行環境プログラム−A103aは、実行環境
−A104aで実行させるためのプログラムであり、こ
のなかで、OS−A107aのシステムコールがコール
されることになる。実行環境−B104bについても同
様である。
【0023】ユーザのソースコードであるアプリケーシ
ョン本体100に対して、コンパイル、リンクがおこな
われ、この例では、実行環境−A104aと実行環境−
B104b用に、それぞれ実行プログラム−A110a
と、実行プログラム−B110bが生成される。
ョン本体100に対して、コンパイル、リンクがおこな
われ、この例では、実行環境−A104aと実行環境−
B104b用に、それぞれ実行プログラム−A110a
と、実行プログラム−B110bが生成される。
【0024】そして、共通化関数102をコンパイルし
たモジュールと、実行環境プログラム−A103a、実
行環境プログラム−B103bは、コンパイル・リンク
の作業を経て、それぞれの固有の実行環境で実行可能な
実行環境差異吸収プログラム−A111aと実行環境差
異吸収プログラム−B111bになる。
たモジュールと、実行環境プログラム−A103a、実
行環境プログラム−B103bは、コンパイル・リンク
の作業を経て、それぞれの固有の実行環境で実行可能な
実行環境差異吸収プログラム−A111aと実行環境差
異吸収プログラム−B111bになる。
【0025】次に、図8を用いてこのような実行環境で
プログラムを実行させたときの制御の流れについて説明
する。どちらでも同じになるので、以降では実行環境−
Aを例にとって説明していくことにする。
プログラムを実行させたときの制御の流れについて説明
する。どちらでも同じになるので、以降では実行環境−
Aを例にとって説明していくことにする。
【0026】実行環境−A104aで実行プログラム−
A110aに制御を移すと、実行プログラム−A110
aでは、共通化関数インターフェースにより、共通化関
数102を呼出す。共通化関数102が呼出されると、
実行環境差異吸収プログラム−A111aに制御が移る
ことになる。
A110aに制御を移すと、実行プログラム−A110
aでは、共通化関数インターフェースにより、共通化関
数102を呼出す。共通化関数102が呼出されると、
実行環境差異吸収プログラム−A111aに制御が移る
ことになる。
【0027】実行環境差異吸収プログラム−A111a
は、システムコールにより、OS−A107aの機能を
呼出して利用する。また、OS−A107aは、必要な
らハードウェア−A106aの機能を利用する。
は、システムコールにより、OS−A107aの機能を
呼出して利用する。また、OS−A107aは、必要な
らハードウェア−A106aの機能を利用する。
【0028】そして、呼出し元に返り、最後に、実行プ
ログラム−A110aに制御が戻ることになる。
ログラム−A110aに制御が戻ることになる。
【0029】実行形式にして実行するときには、関数間
で受け渡される引数は、実行プログラム−A110aに
対して、ハードウェア−A106aの有するレジスタや
メモリにより受け渡されることになる。また、関数の戻
り値も同様にレジスタやメモリにより受け渡される。
で受け渡される引数は、実行プログラム−A110aに
対して、ハードウェア−A106aの有するレジスタや
メモリにより受け渡されることになる。また、関数の戻
り値も同様にレジスタやメモリにより受け渡される。
【0030】そして、共通化関数インタフェース101
の引数が、実行環境差異吸収プログラム−A111aに
渡されるときのレジスタやメモリにより受け渡される。
の引数が、実行環境差異吸収プログラム−A111aに
渡されるときのレジスタやメモリにより受け渡される。
【0031】以下では、それらの様子について図9を用
いて説明し、そこで発生する問題点について指摘するこ
とにしよう。
いて説明し、そこで発生する問題点について指摘するこ
とにしよう。
【0032】一般に、コンパイラが、CPUの汎用レジ
スタをデータや引数に割り付けるときには、大別してユ
ーザに対してある関数を呼出した前後の値の存在を保証
して、ユーザが使用しても良いとする(すなわち、アセ
ンブラでレジスタの値を直接操作をしても良い)レジス
タと、システム上で利用する汎用レジスタがある。この
汎用レジスタは、ユーザに対しては、ある関数を呼出し
た前後の値の存在は保証していない。また、後者のシス
テム上で利用するレジスタは、ユーザの記述した引数を
渡すためのレジスタも含まれる。
スタをデータや引数に割り付けるときには、大別してユ
ーザに対してある関数を呼出した前後の値の存在を保証
して、ユーザが使用しても良いとする(すなわち、アセ
ンブラでレジスタの値を直接操作をしても良い)レジス
タと、システム上で利用する汎用レジスタがある。この
汎用レジスタは、ユーザに対しては、ある関数を呼出し
た前後の値の存在は保証していない。また、後者のシス
テム上で利用するレジスタは、ユーザの記述した引数を
渡すためのレジスタも含まれる。
【0033】汎用レジスタが、他のモジュールに値を受
け渡す方法としては、汎用レジスタの中に値を直接代入
するいわゆる直接形式と、メモリ上に値を格納し、汎用
レジスタには、その値のアドレスを代入するいわゆる間
接形式がある。また、メモリ上のエリアを一定の領域を
確保し、それをスタックとし、汎用レジスタには、その
ポインタを代入する方法もある。
け渡す方法としては、汎用レジスタの中に値を直接代入
するいわゆる直接形式と、メモリ上に値を格納し、汎用
レジスタには、その値のアドレスを代入するいわゆる間
接形式がある。また、メモリ上のエリアを一定の領域を
確保し、それをスタックとし、汎用レジスタには、その
ポインタを代入する方法もある。
【0034】ここで、実行プログラム−A110aに制
御が渡されるときの使用される汎用レジスタは、図9に
示される様に汎用レジスタ141〜149であるとす
る。また、それらの汎用レジスタは、以下の用途により
使われるものと仮定する。
御が渡されるときの使用される汎用レジスタは、図9に
示される様に汎用レジスタ141〜149であるとす
る。また、それらの汎用レジスタは、以下の用途により
使われるものと仮定する。
【0035】汎用レジスタ144〜146は、呼び出さ
れたC関数の引数の格納のために使用される。これら
は、システムで利用するレジスタであるため、ユーザに
対しては、値の存在は保証されない。また、これらの汎
用レジスタ144〜146を、引数格納用途汎用レジス
タ集合150と呼ぶことにする。
れたC関数の引数の格納のために使用される。これら
は、システムで利用するレジスタであるため、ユーザに
対しては、値の存在は保証されない。また、これらの汎
用レジスタ144〜146を、引数格納用途汎用レジス
タ集合150と呼ぶことにする。
【0036】汎用レジスタ142〜143は、呼び出さ
れたC関数の局所変数や一時的に使用される変数のため
に予約されるレジスタである。これらもシステムで利用
するレジスタであるため値の保存は保証されない。
れたC関数の局所変数や一時的に使用される変数のため
に予約されるレジスタである。これらもシステムで利用
するレジスタであるため値の保存は保証されない。
【0037】汎用レジスタ141は、戻り値格納用途に
ために予約されるレジスタである。これもシステムで利
用するレジスタであり、値の保存は保証されない。な
お、このレジスタは、戻り値が汎用レジスタの値に収ま
るときには、戻り値格納用として利用され、収まらない
ときには、その他の局所変数や一時的変数のために使用
される。
ために予約されるレジスタである。これもシステムで利
用するレジスタであり、値の保存は保証されない。な
お、このレジスタは、戻り値が汎用レジスタの値に収ま
るときには、戻り値格納用として利用され、収まらない
ときには、その他の局所変数や一時的変数のために使用
される。
【0038】汎用レジスタ147〜148は、ユーザが
利用可能なレジスタである。これらに対しては、当然、
あるC関数を呼出した前後での値の存在を保証してい
る。
利用可能なレジスタである。これらに対しては、当然、
あるC関数を呼出した前後での値の存在を保証してい
る。
【0039】汎用レジスタ149は、スタックポインタ
用途に予約されるレジスタである。このレジスタは、R
AM−A151上に実装されているスタックメモリ15
2内をポイントするためのものである。このレジスタ
は、関数の呼出し前後で、値の保存は保証されている。
用途に予約されるレジスタである。このレジスタは、R
AM−A151上に実装されているスタックメモリ15
2内をポイントするためのものである。このレジスタ
は、関数の呼出し前後で、値の保存は保証されている。
【0040】さらに、コンパイラ−A108aは、RA
M−A151上に、ヒープメモリ153とスタックメモ
リ152に分割し、それぞれのエリアを確保する。
M−A151上に、ヒープメモリ153とスタックメモ
リ152に分割し、それぞれのエリアを確保する。
【0041】実行プログラム−A110aから実行環境
差異吸収プログラム−A111aに制御が渡されるとき
に、共通化関数インターフェースに記述された引数の値
が、引数格納用途汎用レジスタ集合150内の汎用レジ
スタ144〜146のそれぞれに順に格納される。
差異吸収プログラム−A111aに制御が渡されるとき
に、共通化関数インターフェースに記述された引数の値
が、引数格納用途汎用レジスタ集合150内の汎用レジ
スタ144〜146のそれぞれに順に格納される。
【0042】そして、用意している引数格納用途汎用レ
ジスタ集合150に収まりきらなかったときには、汎用
レジスタ144〜146で格納できなかった共通化関数
インターフェースに記述された残り全ての引数の値は、
スタックメモリ152の実行プログラム−A使用スタッ
クフレーム154上に引数格納スタック155として積
まれることになる。
ジスタ集合150に収まりきらなかったときには、汎用
レジスタ144〜146で格納できなかった共通化関数
インターフェースに記述された残り全ての引数の値は、
スタックメモリ152の実行プログラム−A使用スタッ
クフレーム154上に引数格納スタック155として積
まれることになる。
【0043】さらに、共通化関数の戻り値が汎用レジス
タ141のサイズよりも大きい値の場合には、実行プロ
グラム−A使用スタックフレーム154内部に戻り値格
納用途スタック156を確保し、その戻り値格納スタッ
ク156のアドレスをポイントする戻り値アドレススタ
ック157をスタックメモリ152上に積む。
タ141のサイズよりも大きい値の場合には、実行プロ
グラム−A使用スタックフレーム154内部に戻り値格
納用途スタック156を確保し、その戻り値格納スタッ
ク156のアドレスをポイントする戻り値アドレススタ
ック157をスタックメモリ152上に積む。
【0044】その後、ハードウェア−A106aに搭載
のPC(プログラムカウンタ)レジスタ158で指され
ているROM−A159上のプログラムアドレスにジャ
ンプして、実行環境差異吸収プログラム−A111aの
命令を実行する。その際、実行環境差異吸収部−A11
1aの命令に従って順々に、実行環境差異吸収プログラ
ム−A使用スタックフレーム160がスタックメモリ1
52に格納されていく。
のPC(プログラムカウンタ)レジスタ158で指され
ているROM−A159上のプログラムアドレスにジャ
ンプして、実行環境差異吸収プログラム−A111aの
命令を実行する。その際、実行環境差異吸収部−A11
1aの命令に従って順々に、実行環境差異吸収プログラ
ム−A使用スタックフレーム160がスタックメモリ1
52に格納されていく。
【0045】最終的に、PCプログラムカウンタレジス
タ158が実行環境差異吸収プログラム−A111aか
ら実行プログラム−Aに戻る命令を指す直前には、実行
環境差異吸収プログラム−A使用スタックフレーム16
0は、スタックメモリ152からは解放されることにな
る。
タ158が実行環境差異吸収プログラム−A111aか
ら実行プログラム−Aに戻る命令を指す直前には、実行
環境差異吸収プログラム−A使用スタックフレーム16
0は、スタックメモリ152からは解放されることにな
る。
【0046】なお、実行プログラム−A使用スタックフ
レーム154と実行環境差異吸収部−A使用スタックフ
レーム160で使われているスタックフレームとは、呼
び出されたC関数の局所変数の値を一時的に格納するた
めのスタックメモリの集合体であり、コンパイラが予め
スタックメモリ上に予約する領域である。
レーム154と実行環境差異吸収部−A使用スタックフ
レーム160で使われているスタックフレームとは、呼
び出されたC関数の局所変数の値を一時的に格納するた
めのスタックメモリの集合体であり、コンパイラが予め
スタックメモリ上に予約する領域である。
【0047】ところで、このような従来技術について
は、共通化関数を呼出すときの共通化関数インタフェー
スの引数の数と、実行環境差異吸収プログラム−Aに制
御を渡すときの引数格納用途汎用レジスタ集合150内
の汎用レジスタ144〜146の数との関係については
考慮されていない。
は、共通化関数を呼出すときの共通化関数インタフェー
スの引数の数と、実行環境差異吸収プログラム−Aに制
御を渡すときの引数格納用途汎用レジスタ集合150内
の汎用レジスタ144〜146の数との関係については
考慮されていない。
【0048】すなわち、共通化関数インターフェース1
01の引数の数が、引数格納用途汎用レジスタ集合15
0内の汎用レジスタの数を下回る場合には良いが、引数
格納用途汎用レジスタ集合150内の汎用レジスタの数
を上回る場合には、コンパイラによって格納できない引
数のデータを、スタックメモリ152内の引数格納スタ
ック155に積むようなコードが展開される。
01の引数の数が、引数格納用途汎用レジスタ集合15
0内の汎用レジスタの数を下回る場合には良いが、引数
格納用途汎用レジスタ集合150内の汎用レジスタの数
を上回る場合には、コンパイラによって格納できない引
数のデータを、スタックメモリ152内の引数格納スタ
ック155に積むようなコードが展開される。
【0049】そのため、実行プログラム−A110aか
ら実行環境差異吸収プログラム−A111aに制御を渡
すときには、スタックメモリ152内の引数格納スタッ
ク155に積む処理が余分に入り、実行速度が遅くなる
という問題点があった。
ら実行環境差異吸収プログラム−A111aに制御を渡
すときには、スタックメモリ152内の引数格納スタッ
ク155に積む処理が余分に入り、実行速度が遅くなる
という問題点があった。
【0050】スタックメモリ152の使用効率の観点か
らしても、汎用レジスタ144〜146に格納できなか
った引数の数だけ、スタックメモリ152に格納し、積
み上げる分、RAM151の容量が増加し、RAMの使
用効率も悪くなるという問題点もあった。
らしても、汎用レジスタ144〜146に格納できなか
った引数の数だけ、スタックメモリ152に格納し、積
み上げる分、RAM151の容量が増加し、RAMの使
用効率も悪くなるという問題点もあった。
【0051】本発明は、上記問題点を解決するためにな
されたもので、その目的は、異なった実行環境で実行さ
せるプログラムを開発するときに、実行環境差異吸収プ
ログラムを呼出すときの汎用レジスタの割当てを考慮す
ることにより、メモリの使用効率が良く、しかも、実行
速度が低下しない異種実行環境におけるレジスタの割当
て方法、異種実行環境におけるソフトウェア開発方法、
および、それを実行するプログラムが組み込まれたLS
Iを提供することにある。
されたもので、その目的は、異なった実行環境で実行さ
せるプログラムを開発するときに、実行環境差異吸収プ
ログラムを呼出すときの汎用レジスタの割当てを考慮す
ることにより、メモリの使用効率が良く、しかも、実行
速度が低下しない異種実行環境におけるレジスタの割当
て方法、異種実行環境におけるソフトウェア開発方法、
および、それを実行するプログラムが組み込まれたLS
Iを提供することにある。
【0052】
【課題を解決するための手段】本発明では、共通化関数
の引数の数を減らし、実行環境差異吸収プログラム−A
に制御が渡るときに、メモリ上に引数情報集合部を作っ
て、これを汎用レジスタにポイントさせるようにする。
の引数の数を減らし、実行環境差異吸収プログラム−A
に制御が渡るときに、メモリ上に引数情報集合部を作っ
て、これを汎用レジスタにポイントさせるようにする。
【0053】このようにすれば、実行時にスタックメモ
リ152の引数格納スタック155にデータを積む処理
が省略できるため、実行時の関数呼出しによるオーバヘ
ッドが軽減される。
リ152の引数格納スタック155にデータを積む処理
が省略できるため、実行時の関数呼出しによるオーバヘ
ッドが軽減される。
【0054】また、従来技術で引数格納スタック155
を利用する場合には、スタックの使用量が増加する恐れ
があったが、本発明では、RAM上に連続した引数情報
集合部を作るので、メモリの使用効率を良くすることも
できる。
を利用する場合には、スタックの使用量が増加する恐れ
があったが、本発明では、RAM上に連続した引数情報
集合部を作るので、メモリの使用効率を良くすることも
できる。
【0055】このためには、共通化関数の引数の数は、
コンパイラが引数格納用として予約する引数格納用途汎
用レジスタ集合150の数より越えないようにしておく
必要がある。
コンパイラが引数格納用として予約する引数格納用途汎
用レジスタ集合150の数より越えないようにしておく
必要がある。
【0056】
【発明の実施の形態】〔開発環境とハードウェア〕先
ず、図1および図2を用いて本発明に係る異種実行環境
におけるレジスタの割当て方法のソフトウェア開発環境
と、それを動作させるためのハードウェアについて説明
する。なお、本実施形態では、ソースプログラムの記述
を、C言語でおこなった場合を想定するものとする。
ず、図1および図2を用いて本発明に係る異種実行環境
におけるレジスタの割当て方法のソフトウェア開発環境
と、それを動作させるためのハードウェアについて説明
する。なお、本実施形態では、ソースプログラムの記述
を、C言語でおこなった場合を想定するものとする。
【0057】図1は、本発明に係る異種実行環境におけ
るレジスタの割当て方法のソフトウェア開発環境の処理
の流れを説明するための図である。
るレジスタの割当て方法のソフトウェア開発環境の処理
の流れを説明するための図である。
【0058】図2は、本発明に係る異種実行環境におけ
るレジスタの割当て方法を実行するためのハードウェア
構成図である。
るレジスタの割当て方法を実行するためのハードウェア
構成図である。
【0059】本発明は、複数の異なったOSでの開発環
境180を前提としている。
境180を前提としている。
【0060】ソフトウェアの開発者は、アプリケーショ
ンのプログラムが記述したアプリケーション本体100
と、共通化関数のソースコードを入力して、通常の開発
手順の通り、プリプロセッサ181、Cコンパイラ18
2、アセンブラ183、リンカ184と言うソフトウェ
アツールにより、実行プログラムを作成する。
ンのプログラムが記述したアプリケーション本体100
と、共通化関数のソースコードを入力して、通常の開発
手順の通り、プリプロセッサ181、Cコンパイラ18
2、アセンブラ183、リンカ184と言うソフトウェ
アツールにより、実行プログラムを作成する。
【0061】プリプロセッサ181は、条件によって加
工したり、読み飛ばしたり、他プログラムを組み込んだ
りマクロ定義処理などをおこなうCコンパイラに入る前
の前処理のためのツールである。Cコンパイラ182
は、記述されたテキストコードに対して、構文解析・意
味解析などをおこなった、適当なアセンブラコードを生
成するものである。アセンブラ183は、アセンブラコ
ードをCPU200で実行させる機械語に変換するツー
ルである。リンカ184は、ライブラリ190から適当
なプログラムを選び、数種のプログラムファイルを結合
して最終的にハードウェア上で実行させる実行プログラ
ムを作成する。このライブラリ190には、実効環境に
依存する実行環境プログラムが含まれていて、機能に応
じてリンカ184により適当なプログラムが取りこまれ
て結合される。
工したり、読み飛ばしたり、他プログラムを組み込んだ
りマクロ定義処理などをおこなうCコンパイラに入る前
の前処理のためのツールである。Cコンパイラ182
は、記述されたテキストコードに対して、構文解析・意
味解析などをおこなった、適当なアセンブラコードを生
成するものである。アセンブラ183は、アセンブラコ
ードをCPU200で実行させる機械語に変換するツー
ルである。リンカ184は、ライブラリ190から適当
なプログラムを選び、数種のプログラムファイルを結合
して最終的にハードウェア上で実行させる実行プログラ
ムを作成する。このライブラリ190には、実効環境に
依存する実行環境プログラムが含まれていて、機能に応
じてリンカ184により適当なプログラムが取りこまれ
て結合される。
【0062】OSコンフィグレータ191は、アプリケ
ーションソフトウェア開発者に、ターゲットとするOS
107の諸機能を選択および設定させカスタマイズ化さ
れたOS107のプログラムコードを作成するソフトウ
ェアツールである。
ーションソフトウェア開発者に、ターゲットとするOS
107の諸機能を選択および設定させカスタマイズ化さ
れたOS107のプログラムコードを作成するソフトウ
ェアツールである。
【0063】ハードウェア106は、CPU200、D
evice201、ワーキングメモリ202から構成さ
れている。
evice201、ワーキングメモリ202から構成さ
れている。
【0064】最終的にCPU200上で実行する実行プ
ログラムとOS107は、ワーキングメモリ202に配
置される。
ログラムとOS107は、ワーキングメモリ202に配
置される。
【0065】本実施形態のソフトウェア開発環境は、メ
インフレーム、パーソナルコンピュータやワークステー
ション等の汎用計算機上に実装することが可能である。
インフレーム、パーソナルコンピュータやワークステー
ション等の汎用計算機上に実装することが可能である。
【0066】最終的に実行プログラムを動作させること
のできるハードウェア106を作成する手順を示すと以
下の様になる。
のできるハードウェア106を作成する手順を示すと以
下の様になる。
【0067】すなわち、アプリケーションソフトウェア
開発者は、汎用計算機上に定義されているターゲットの
OS107に対応するOS別プログラム開発環境180
を選択する。そして、選択されたOS別プログラム開発
環境180に付随しているOSコンフィグレータ191
を用いてカスタマイズしたOS107のプログラムコー
ドを作成する。
開発者は、汎用計算機上に定義されているターゲットの
OS107に対応するOS別プログラム開発環境180
を選択する。そして、選択されたOS別プログラム開発
環境180に付随しているOSコンフィグレータ191
を用いてカスタマイズしたOS107のプログラムコー
ドを作成する。
【0068】次に、そのOS107のプログラムコード
と実行プログラム110と実行環境差異吸収プログラム
111をリンクしてできあがったプログラムコード全体
をワーキングメモリ202に組み込む。また、予めOS
107のプログラムコードが搭載されたワーキングメモ
リ202に、後から実行プログラム110と実行環境差
異吸収プログラム111をリンクしてできあがったプロ
グラムコードを組み込むようにしても良い。
と実行プログラム110と実行環境差異吸収プログラム
111をリンクしてできあがったプログラムコード全体
をワーキングメモリ202に組み込む。また、予めOS
107のプログラムコードが搭載されたワーキングメモ
リ202に、後から実行プログラム110と実行環境差
異吸収プログラム111をリンクしてできあがったプロ
グラムコードを組み込むようにしても良い。
【0069】ここで、ハードウェア106は、実行プロ
グラムを実行できるような機構を備えていれば良いが、
本実施形態では、主にプログラムをワーキングメモリに
組み込んだシステムLSIなどを想定している。
グラムを実行できるような機構を備えていれば良いが、
本実施形態では、主にプログラムをワーキングメモリに
組み込んだシステムLSIなどを想定している。
【0070】以下、図2を用いてこのハードウェア10
6の構成の例について詳細に説明する。
6の構成の例について詳細に説明する。
【0071】CPU200は、命令を実行し、計算をお
こなうハードウェア106のメインのコンポーネントで
あり、図9で説明したような汎用レジスタ141〜14
9を備えている。
こなうハードウェア106のメインのコンポーネントで
あり、図9で説明したような汎用レジスタ141〜14
9を備えている。
【0072】RAM202aは、いつでも書き込みが可
能なメモリエリアである。ROM202bは、通常は書
きこむことができず、読みだし専用のメモリエリアであ
る。例えば、LSIの製造時にのみ情報を書きこみ、通
常の実行時には、このメモリエリアからは、情報を読む
だけである。上記の実行プログラムとOS107は、R
AM202aかROM202bに配置され、CPU20
0に読み出されて実行される。
能なメモリエリアである。ROM202bは、通常は書
きこむことができず、読みだし専用のメモリエリアであ
る。例えば、LSIの製造時にのみ情報を書きこみ、通
常の実行時には、このメモリエリアからは、情報を読む
だけである。上記の実行プログラムとOS107は、R
AM202aかROM202bに配置され、CPU20
0に読み出されて実行される。
【0073】デバイス201は、各種機能を持つハード
ウェア106のコンポーネントであり、ハードウェア1
06がシステムLSIの場合には、LSI上に構成され
る特殊機能の処理回路である。具体的には、I/O(In
put/Output),ASIC(Application Specific Integ
rated Circuits),FPGA(Field Programmable Gat
e Arrays),DSP(Digital Signal Processor)など
が考えられる。
ウェア106のコンポーネントであり、ハードウェア1
06がシステムLSIの場合には、LSI上に構成され
る特殊機能の処理回路である。具体的には、I/O(In
put/Output),ASIC(Application Specific Integ
rated Circuits),FPGA(Field Programmable Gat
e Arrays),DSP(Digital Signal Processor)など
が考えられる。
【0074】I/Oは、例えば、A/D変換器、D/A
変換器、RS232−C処理回路、SCSI処理回路で
ある。ASICは、例えば、MPEG Video符号
器、MP3復号器等の専用処理回路である。FPGA
は、ハードウェア構成を可変にできるICを言う。DS
Pは、ディジタル信号処理専用のICである。
変換器、RS232−C処理回路、SCSI処理回路で
ある。ASICは、例えば、MPEG Video符号
器、MP3復号器等の専用処理回路である。FPGA
は、ハードウェア構成を可変にできるICを言う。DS
Pは、ディジタル信号処理専用のICである。
【0075】これらのコンポーネントは、信号の共通の
通り道であるバス203により、情報のやり取りをす
る。 〔汎用レジスタの割当て方法〕次に、従来技術の説明の
所で述べたことを前提として、図3を用いて本発明に係
る汎用レジスタの割当て方法について説明する。
通り道であるバス203により、情報のやり取りをす
る。 〔汎用レジスタの割当て方法〕次に、従来技術の説明の
所で述べたことを前提として、図3を用いて本発明に係
る汎用レジスタの割当て方法について説明する。
【0076】図3は、本発明に係る汎用レジスタの割当
て方法による実行環境差異吸収プログラム−Aを呼出す
ときのレジスタの割当てを示す図である。
て方法による実行環境差異吸収プログラム−Aを呼出す
ときのレジスタの割当てを示す図である。
【0077】従来技術では、図9で示したように実行環
境差異吸収プログラム111に制御が渡される際の渡す
べき引数、具体的には、共通化関数の引数の数が、引数
格納用途汎用レジスタ集合150の数を越えるときに、
スタックメモリ152内の引数格納スタック155に積
まれることで問題が生じることを指摘した。
境差異吸収プログラム111に制御が渡される際の渡す
べき引数、具体的には、共通化関数の引数の数が、引数
格納用途汎用レジスタ集合150の数を越えるときに、
スタックメモリ152内の引数格納スタック155に積
まれることで問題が生じることを指摘した。
【0078】そこで、本発明では、図3に示されるよう
に、実行環境差異吸収プログラム−A111aを呼出す
ときに、RAM151上に引数情報集合部161を作
り、そこをポイントするようにして、引数格納スタック
155には、データを積まない様に工夫する。このよう
にすれば、引数情報集合部161には、実行環境差異吸
収プログラム−A111aを呼出した時点で、引数の値
が設定されているため、実行プログラム−A110aが
おこなうスタックメモリ152への引数格納スタック1
55の積み上げとそれを解放する作業をおこなわなくて
も良くなり、実行時のオーバヘッドを低減することがで
きる。また、連続した領域のデータを間接的にポイント
するようなインタフェースにしているためRAMの使用
効率も向上する。 〔汎用レジスタの割当て方法のコーディングをふまえた
具体例〕次に、図4および図5を用いて本発明の汎用レ
ジスタの割当て方法を、C言語のコーディングをした場
合の具体例を、より詳細に説明する。
に、実行環境差異吸収プログラム−A111aを呼出す
ときに、RAM151上に引数情報集合部161を作
り、そこをポイントするようにして、引数格納スタック
155には、データを積まない様に工夫する。このよう
にすれば、引数情報集合部161には、実行環境差異吸
収プログラム−A111aを呼出した時点で、引数の値
が設定されているため、実行プログラム−A110aが
おこなうスタックメモリ152への引数格納スタック1
55の積み上げとそれを解放する作業をおこなわなくて
も良くなり、実行時のオーバヘッドを低減することがで
きる。また、連続した領域のデータを間接的にポイント
するようなインタフェースにしているためRAMの使用
効率も向上する。 〔汎用レジスタの割当て方法のコーディングをふまえた
具体例〕次に、図4および図5を用いて本発明の汎用レ
ジスタの割当て方法を、C言語のコーディングをした場
合の具体例を、より詳細に説明する。
【0079】図4は、本発明の汎用レジスタの割当て方
法を用いる場合のC言語によるコーディングの具体例を
示す図である。
法を用いる場合のC言語によるコーディングの具体例を
示す図である。
【0080】図5は、図4のコーディングをした場合の
実行環境差異吸収プログラム−Aを呼出すときのレジス
タの割当てを示す図である。
実行環境差異吸収プログラム−Aを呼出すときのレジス
タの割当てを示す図である。
【0081】本実施形態で説明するC言語によるコーデ
ィングの共通化関数102の例は、WRP_Task_Create2
29である。この関数は、タスクを生成する関数である
とする。そして、この関数の中で、タスクルーチン関数
Routine223が呼ばれているものとする。この関数に
は、タスク処理そのものが記述される。
ィングの共通化関数102の例は、WRP_Task_Create2
29である。この関数は、タスクを生成する関数である
とする。そして、この関数の中で、タスクルーチン関数
Routine223が呼ばれているものとする。この関数に
は、タスク処理そのものが記述される。
【0082】共通化関数WRP_Task_Create229の引数
は、4つである。また、戻り値は、Er237と言う変数
用のRAM151に格納される。
は、4つである。また、戻り値は、Er237と言う変数
用のRAM151に格納される。
【0083】第一の引数250は、TSKID型のtid231
のアドレスであり、タスク識別子のポインタが渡され
る。タスク識別子は、OS107が生成するタスクを識
別するために用いる。tid231には、OS107がタ
スクを生成した際に生成されるタスク識別子が格納され
る。
のアドレスであり、タスク識別子のポインタが渡され
る。タスク識別子は、OS107が生成するタスクを識
別するために用いる。tid231には、OS107がタ
スクを生成した際に生成されるタスク識別子が格納され
る。
【0084】第二の引数251は、void型の関数のRout
ine233というタスクルーチンのアドレスであり、タ
スクルーチンポインタが渡される。なお、引数に関数の
関数名を書くことにより、その関数のアドレスを渡すと
言うのがC言語の言語仕様である。
ine233というタスクルーチンのアドレスであり、タ
スクルーチンポインタが渡される。なお、引数に関数の
関数名を書くことにより、その関数のアドレスを渡すと
言うのがC言語の言語仕様である。
【0085】第三の引数252は、int型のPriority2
32であり、タスク優先度が渡される。
32であり、タスク優先度が渡される。
【0086】第四の引数253は、ENV_INFO型のデータ
environment230のアドレスであり、共通化関数に渡
すための環境情報へのポインタである。
environment230のアドレスであり、共通化関数に渡
すための環境情報へのポインタである。
【0087】以下、この環境情報について詳細に説明す
る。
る。
【0088】図4に示したCコーディング300では、
typedef文で、ENV_INFO型構造体に定義されている。
typedef文で、ENV_INFO型構造体に定義されている。
【0089】TSK_ATRB型のAttribution222は、タス
ク属性値である。タスク属性値は、アプリケーション本
体100がC言語で記述されているのか、アセンブラ言
語で記述されているのか、および、浮動小数点演算プロ
セッサ、ディジタル信号処理プロセッサを使用するの
か、しないのか等の設定するを値である。
ク属性値である。タスク属性値は、アプリケーション本
体100がC言語で記述されているのか、アセンブラ言
語で記述されているのか、および、浮動小数点演算プロ
セッサ、ディジタル信号処理プロセッサを使用するの
か、しないのか等の設定するを値である。
【0090】int型のQuantum223は、プロセッサ上限
時間値である。プロセッサ上限時間値は、タスクがCP
U200を占有する上限の時間幅を設定する値である。
時間値である。プロセッサ上限時間値は、タスクがCP
U200を占有する上限の時間幅を設定する値である。
【0091】int型のStackSize224は、スタックサイ
ズである。スタックサイズは、タスクを実行させる際に
最低限必要となるスタックメモリ152のサイズであ
る。
ズである。スタックサイズは、タスクを実行させる際に
最低限必要となるスタックメモリ152のサイズであ
る。
【0092】void*型のStackBasePtr225は、スタッ
クベースポインタである。スタックベースポインタは、
タスクの初期化時のスタックアドレス値である。
クベースポインタである。スタックベースポインタは、
タスクの初期化時のスタックアドレス値である。
【0093】int型のCPU_Mode226は、CPUモード
値である。CPUモード値は、生成されるタスクにおい
て、CPU200がマルチメディア命令を使用するかし
ないかを設定する値である。
値である。CPUモード値は、生成されるタスクにおい
て、CPU200がマルチメディア命令を使用するかし
ないかを設定する値である。
【0094】char*型のName227は、タスク名称格納
先アドレスである。タスク名称格納先アドレスは、生成
するタスクの名称となる文字列の格納先のアドレスの値
である。
先アドレスである。タスク名称格納先アドレスは、生成
するタスクの名称となる文字列の格納先のアドレスの値
である。
【0095】void*型のTo_Task228は、タスク情報ア
ドレスである。タスク情報アドレスは、OS107がタ
スクを生成するときに渡される情報のアドレスの値であ
る。
ドレスである。タスク情報アドレスは、OS107がタ
スクを生成するときに渡される情報のアドレスの値であ
る。
【0096】図のCコーディング300では、ENV_INFO
型データとして、environment230という変数を定義
している。特に、OS107間でアプリケーション本体
100を再利用したり、移植したりする際には、OS別
プログラム開発環境180やハードウェア106毎に、
ENV_INFO型構造体221内の定義情報を変更すれば、容
易に異なるOS107やハードウェア106上でアプリ
ケーション本体100を実装できる。
型データとして、environment230という変数を定義
している。特に、OS107間でアプリケーション本体
100を再利用したり、移植したりする際には、OS別
プログラム開発環境180やハードウェア106毎に、
ENV_INFO型構造体221内の定義情報を変更すれば、容
易に異なるOS107やハードウェア106上でアプリ
ケーション本体100を実装できる。
【0097】また、タスクルーチンであるRoutine23
3には、To_Task228と言う引数を渡すことを示して
いる。
3には、To_Task228と言う引数を渡すことを示して
いる。
【0098】このソースコードをコンパイルして、実行
プログラムを作成し、それを適当なOS107で実行さ
せると、実行環境差異吸収プログラムに、共通化関数2
39で記述した4つのデータが渡される。すなわち、タ
スク識別子へのポインタ、タスクルーチンへのポイン
タ、タスク優先度、環境情報へのポインタである。
プログラムを作成し、それを適当なOS107で実行さ
せると、実行環境差異吸収プログラムに、共通化関数2
39で記述した4つのデータが渡される。すなわち、タ
スク識別子へのポインタ、タスクルーチンへのポイン
タ、タスク優先度、環境情報へのポインタである。
【0099】実行環境差異吸収プログラム−A111a
の中で、OS107aのシステムコールを呼び出してO
Sやハードウェアの機能を利用することになる。この例
では、生成するタスクルーチンのポインタを渡し、タス
クを生成するシステムコールを呼出すことになる。
の中で、OS107aのシステムコールを呼び出してO
Sやハードウェアの機能を利用することになる。この例
では、生成するタスクルーチンのポインタを渡し、タス
クを生成するシステムコールを呼出すことになる。
【0100】次に、図5により共通化関数を呼びしたと
きの実行プログラムがハードウェア資源を占有している
状態を説明する。
きの実行プログラムがハードウェア資源を占有している
状態を説明する。
【0101】ここで、CPU200の引数格納用途汎用
レジスタ集合150内の汎用レジスタの数が予め4つで
あるとする。
レジスタ集合150内の汎用レジスタの数が予め4つで
あるとする。
【0102】このときには、共通化関数WPR_Task_Creat
e229の引数は、図5の様にレジスタ350〜353
に順に格納される。すなわち、上から順に、タスク識別
子ポインタ350、タスクルーチンポインタ351、タ
スク優先度値352である。
e229の引数は、図5の様にレジスタ350〜353
に順に格納される。すなわち、上から順に、タスク識別
子ポインタ350、タスクルーチンポインタ351、タ
スク優先度値352である。
【0103】環境情報ポインタ353は、RAM上の環
境情報をポイントしていて、ENV_INFO型の構造体で定義
した情報が、RAM上の450〜456に上ら順に格納
される。すなわち、上から順に、タスク属性値450、
プロセッサ上限時間値451、スタックサイズ452、
スタックベースポインタ453、CPUモード値45
4、タスク名称格納先ポインタ455、タスク情報格納
先ポインタ456である。
境情報をポイントしていて、ENV_INFO型の構造体で定義
した情報が、RAM上の450〜456に上ら順に格納
される。すなわち、上から順に、タスク属性値450、
プロセッサ上限時間値451、スタックサイズ452、
スタックベースポインタ453、CPUモード値45
4、タスク名称格納先ポインタ455、タスク情報格納
先ポインタ456である。
【0104】このエリアは、図3で説明したところの引
数情報集合部に該当する。
数情報集合部に該当する。
【0105】このように、引数情報集合部のエリアを作
ることにより、引数格納用途汎用レジスタ集合150に
引数を収めることができるため、引数格納スタック15
5を使用することがない。
ることにより、引数格納用途汎用レジスタ集合150に
引数を収めることができるため、引数格納スタック15
5を使用することがない。
【0106】
【発明の効果】本発明によれば、異なった実行環境で実
行させるプログラムを開発するときに、実行環境差異吸
収プログラムを呼出すときの汎用レジスタの割当てを考
慮することにより、メモリの使用効率が良く、しかも、
実行速度が低下しない異種実行環境におけるレジスタの
割当て方法、異種実行環境におけるソフトウェア開発方
法、および、それを実行するプログラムが組み込まれた
LSIを提供することができる。
行させるプログラムを開発するときに、実行環境差異吸
収プログラムを呼出すときの汎用レジスタの割当てを考
慮することにより、メモリの使用効率が良く、しかも、
実行速度が低下しない異種実行環境におけるレジスタの
割当て方法、異種実行環境におけるソフトウェア開発方
法、および、それを実行するプログラムが組み込まれた
LSIを提供することができる。
【図1】本発明に係る異種実行環境におけるレジスタの
割当て方法のソフトウェア開発環境の処理の流れを説明
するための図である。
割当て方法のソフトウェア開発環境の処理の流れを説明
するための図である。
【図2】本発明に係る異種実行環境におけるレジスタの
割当て方法を実行するためのハードウェア構成図であ
る。
割当て方法を実行するためのハードウェア構成図であ
る。
【図3】本発明に係る汎用レジスタの割当て方法による
実行環境差異吸収プログラム−Aを呼出すときのレジス
タの割当てを示す図である。
実行環境差異吸収プログラム−Aを呼出すときのレジス
タの割当てを示す図である。
【図4】本発明の汎用レジスタの割当て方法を用いる場
合のC言語によるコーディングの具体例を示す図であ
る。
合のC言語によるコーディングの具体例を示す図であ
る。
【図5】図4のコーディングをした場合の実行環境差異
吸収プログラム−Aを呼出すときのレジスタの割当てを
示す図である。
吸収プログラム−Aを呼出すときのレジスタの割当てを
示す図である。
【図6】特開平8―63363号公報の「仮想実行環境
システム」のシステム概要図である。
システム」のシステム概要図である。
【図7】異なった実行環境でソフトウェア開発をおこな
うときの概念図である。
うときの概念図である。
【図8】計算機システム上で実行プログラムが実行され
るときの呼出し関係を示した図である。
るときの呼出し関係を示した図である。
【図9】実行環境差異吸収プログラム−Aを呼出すとき
のレジスタの割当てを示す図である。
のレジスタの割当てを示す図である。
10…アプリケーションソフトウェア 11…プログラム本体 12…置換情報記述部 20…仮想実行環境実現システム 21…翻訳部既存OS用コンパイラ 22…実行部 30…実行可能プログラム 50…既存CPU 60…既存OS 100…アプリケーション本体 101…共通化関数 102…共通化インターフェース 103…実行環境プログラム 104…実行環境 105…計算機システム 106…ハードウェア 107…OS 108…コンパイラ 109…リンカ 110…実行プログラム 111…実行環境差異吸収プログラム 121…システムコール 141〜149…汎用レジスタ 150…引数格納用途汎用レジスタ集合 151…RAM 152…スタックメモリ 153…ヒープメモリ 154…実行プログラム使用スタックフレーム 155…引数格納スタック 156…戻り値格納スタック 157…戻り値アドレススタック 158…PCレジスタ 159…ROM 160…実行環境差異吸収プログラムスタックフレーム 161…引数情報集合部 180…OS別プログラム開発環境 181…プリプロセッサ 182…Cコンパイラ 183…アセンブラ 184…リンカ 190…ライブラリ 191…OSコンフィグレータ 200…CPU 201…デバイス 202…ワーキングメモリ 202a…RAM 202b…ROM 203…バス 221…ENV_INFO型構造体 222…Attribution(タスク属性値) 223…Quantum(プロセッサ上限時間値) 224…StackSize(スタックサイズ) 225…StackBasePtr(スタックベースポインタ) 226…CPU_Mode(CPUモード値) 227…Name(タスク名称格納先アドレス) 228…To_Task(タスク情報アドレス) 229…WR_Task_Create(タスク作成用途共通化関数) 230…environment(ENV_INFO型データ) 231…tid(タスク識別子) 232…priority(タスク優先度) 233…Routine(タスクルーチン) 235…タスクルーチンポインタ 237…変数 250〜253…共通化関数に渡す第一ないし第四引数 300…Cコーディング 350…タスク識別子ポインタ 351…タスクルーチンポインタ 352…タスク優先度値 353…環境情報ポインタ 450…タスク属性値 451…プロセッサ上限時間値 452…スタックサイズ 453…スタックベースポインタ 454…CPUモード値 455…タスク名称格納先ポインタ 456…タスク情報格納先ポインタ
フロントページの続き (72)発明者 在塚 俊之 東京都国分寺市東恋ヶ窪一丁目280番地 株式会社日立製作所中央研究所内 Fターム(参考) 5B081 CC25
Claims (8)
- 【請求項1】 計算機システムの異なった実行環境で実
行させる際のCPU内の汎用レジスタにデータを割当て
る方法において、 この計算機システムは、ハードウェアと、そのハードウ
ェア上で実行させるオペレティングシステムとを持ち、 そのオペレティングシステム上で実行させる実行プログ
ラムとしては、ユーザ固有の機能からなる実行プログラ
ムと、異なった実行環境の差異を吸収する実行環境差異
吸収プログラムとからなり、 前記実行環境差異吸収プログラムに制御を渡すときのパ
ラメータのために用いられるレジスタの数を、 前記ハードウェア内のメモリに引数格納集合部を作り、 前記汎用レジスタにその引数格納集合部をポイントさせ
ることにより、 コンパイラが予約する引数用途格納用レジスタの数を越
えない様に調整することを特徴とする異種実行環境にお
けるレジスタの割当て方法。 - 【請求項2】 前記実行環境差異吸収プログラムは、 共通化関数をコンパイルしたモジュールと、それぞれの
実行環境に固有のプログラムとからなり、 前記共通化関数の引数として、コンパイラが予約する引
数用途格納用レジスタの数を越えない様に調整したソー
スコードを、コンパイラに入力することを特徴とする請
求項1記載の異種実行環境におけるレジスタの割当て方
法。 - 【請求項3】 前記共通化関数の引数として、 前記オペレーティングシステム上で動作させるタスクに
関する情報を渡すときに、 その引数として、 前記タスクの制御および管理に用いる識別子を格納する
メモリのアドレス値と、 前記タスクの実行ルーチンの先頭アドレス値と、 前記タスクが前記ハードウェアを占有する優先度の値
と、 前記異種環境を記述するための引数情報集合部を格納す
る先頭のメモリのアドレス値であることを特徴とする請
求項2記載の異種実行環境におけるレジスタの割当て方
法。 - 【請求項4】 前記引数情報集合部が、 前記タスクのタスク属性値と、 前記タスクが、前記ハードウェアを占有する上限時間値
と、 前記タスクが、必要とする合計のスタックサイズと、 前記タスク起動時のスタックのアドレスであるスタック
ベースポインタと、 前記タスクが、前記ハードウェアに装備のマルチメディ
ア命令を使用するか否かの値を設定するCPUモード値
と、 前記タスク名称の格納先であるメモリのアドレス値と、 前記タイク起動時に受け渡すためのタスク情報を格納す
るメモリの先頭アドレス値であることを特徴する請求項
3記載の異種実行環境におけるレジスタの割当て方法。 - 【請求項5】 計算機システムの異なった実行環境で実
行させる際の異種実行環境におけるソフトウェア開発方
法において、 この計算機システムは、ハードウェアと、そのハードウ
ェア上で実行させるオペレティングシステムとを持ち、 そのオペレティングシステム上で実行させる実行プログ
ラムとしては、ユーザ固有の機能からなる実行プログラ
ムと、異なった実行環境の差異を吸収する実行環境差異
吸収プログラムとからなり、 前記実行環境差異吸収プログラムに制御を渡すときのパ
ラメータのために用いられるレジスタの数を、 前記ハードウェア内のメモリに引数格納集合部を作り、 前記汎用レジスタにその引数格納集合部をポイントさせ
ることにより、 コンパイラが予約する引数用途格納用レジスタの数を越
えない様に調整するような実行プログラムを生成するこ
とを特徴とする異種実行環境におけるソフトウェア開発
方法 - 【請求項6】 前記実行環境差異吸収プログラムは、 共通化関数をコンパイルしたモジュールと、それぞれの
実行環境に固有のプログラムとからなり、 前記共通化関数の引数として、コンパイラが予約する引
数用途格納用レジスタの数を越えない様に調整したソー
スコードを、コンパイラに入力することを特徴とする請
求項5記載の異種実行環境におけるソフトウェア開発方
法。 - 【請求項7】 異なった実行環境で動作させるLSIに
おいて、 このLSIは、ハードウェアと、そのハードウェア上で
実行させるオペレティングシステムとを持ち、 前記ハードウェアとしては、 汎用レジスタを含むCPUと、 メモリと、 専用機能からなるデバイスとからなり、 前記オペレティングシステム上で実行させる実行プログ
ラムとしては、ユーザ固有の機能からなる実行プログラ
ムと、異なった実行環境の差異を吸収する実行環境差異
吸収プログラムとからなり、 前記実行環境差異吸収プログラムに制御を渡すときのパ
ラメータのために用いられるレジスタの数を、 前記メモリに引数格納集合部を作り、 前記汎用レジスタにその引数格納集合部をポイントさせ
ることにより、 コンパイラが予約する引数用途格納用レジスタの数を越
えない様に調整するような実行プログラムを前記メモリ
上に組み込んだことを特徴とする異種実行環境で動作さ
せるLSI。 - 【請求項8】 前記実行環境差異吸収プログラムは、 共通化関数をコンパイルしたモジュールと、それぞれの
実行環境に固有のプログラムとからなり、 前記共通化関数の引数として、コンパイラが予約する引
数用途格納用レジスタの数を越えない様に調整したソー
スコードを、コンパイラに入力することを特徴とする請
求項7記載の異種実行環境で動作させるLSI。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000378801A JP2002182927A (ja) | 2000-12-13 | 2000-12-13 | 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi |
US10/006,304 US20020073133A1 (en) | 2000-12-13 | 2001-12-10 | Register allocation method and software development method for various execution environments and LSI for executing developed software |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000378801A JP2002182927A (ja) | 2000-12-13 | 2000-12-13 | 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002182927A true JP2002182927A (ja) | 2002-06-28 |
Family
ID=18847300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000378801A Pending JP2002182927A (ja) | 2000-12-13 | 2000-12-13 | 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi |
Country Status (2)
Country | Link |
---|---|
US (1) | US20020073133A1 (ja) |
JP (1) | JP2002182927A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010160594A (ja) * | 2009-01-07 | 2010-07-22 | Meidensha Corp | ソフトウェアの開発支援システム、開発支援方法およびプログラム |
JP2017039057A (ja) * | 2016-12-02 | 2017-02-23 | 株式会社ソフイア | 遊技機 |
JP2017077481A (ja) * | 2016-11-25 | 2017-04-27 | 株式会社ソフイア | 遊技機 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484643B2 (en) * | 2003-03-31 | 2013-07-09 | Fujitsu Limited | CPU usage time counting method and job control system using this CPU usage time |
US9003377B2 (en) * | 2010-01-07 | 2015-04-07 | Microsoft Technology Licensing, Llc | Efficient resumption of co-routines on a linear stack |
JP6409638B2 (ja) * | 2015-03-20 | 2018-10-24 | 富士通株式会社 | コンパイラ、コンパイル装置、および、コンパイル方法 |
US9703603B1 (en) * | 2016-04-25 | 2017-07-11 | Nxp Usa, Inc. | System and method for executing accelerator call |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4047161A (en) * | 1976-04-30 | 1977-09-06 | International Business Machines Corporation | Task management apparatus |
JPS6151243A (ja) * | 1984-08-20 | 1986-03-13 | Toshiba Corp | レジスタ式演算処理装置 |
US4777588A (en) * | 1985-08-30 | 1988-10-11 | Advanced Micro Devices, Inc. | General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance |
US5197138A (en) * | 1989-12-26 | 1993-03-23 | Digital Equipment Corporation | Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching |
EP0676691A3 (en) * | 1994-04-06 | 1996-12-11 | Hewlett Packard Co | Device for saving and restoring registers in a digital computer. |
US5960212A (en) * | 1996-04-03 | 1999-09-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Universal input/output controller having a unique coprocessor architecture |
US5946673A (en) * | 1996-07-12 | 1999-08-31 | Francone; Frank D. | Computer implemented machine learning and control system |
US6651248B1 (en) * | 2000-09-01 | 2003-11-18 | International Business Machines Corporation | Method and apparatus for efficient interface method dispatch |
-
2000
- 2000-12-13 JP JP2000378801A patent/JP2002182927A/ja active Pending
-
2001
- 2001-12-10 US US10/006,304 patent/US20020073133A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010160594A (ja) * | 2009-01-07 | 2010-07-22 | Meidensha Corp | ソフトウェアの開発支援システム、開発支援方法およびプログラム |
JP2017077481A (ja) * | 2016-11-25 | 2017-04-27 | 株式会社ソフイア | 遊技機 |
JP2017039057A (ja) * | 2016-12-02 | 2017-02-23 | 株式会社ソフイア | 遊技機 |
Also Published As
Publication number | Publication date |
---|---|
US20020073133A1 (en) | 2002-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2358010C (en) | Data processing system and operating system | |
Goldstein et al. | Lazy threads: Implementing a fast parallel call | |
EP0911726B1 (en) | Mixed execution stack and exception handling | |
US7219329B2 (en) | Systems and methods providing lightweight runtime code generation | |
EP1138001B1 (en) | Reconfigurable programmable logic device computer system | |
JP2005004737A (ja) | 動的ランタイム環境でタグ付き型を用いるシステム及び方法 | |
US7856618B2 (en) | Adaptively generating code for a computer program | |
JP2013524386A (ja) | ランスペース方法、システムおよび装置 | |
Lee et al. | HiPEC: high performance external virtual memory caching | |
JP3355184B1 (ja) | エミュレーションシステム上における複数の回路設計の同時エミュレーションのための方法及び装置 | |
US20030041312A1 (en) | Program processing method utilizing dynamically reconfigurable hardware to enable faster processing, and program to execute same processing method | |
JPH11110194A (ja) | 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体 | |
Taura et al. | Fine-grain multithreading with minimal compiler support—a cost effective approach to implementing efficient multithreading languages | |
JP2002182927A (ja) | 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi | |
US8056061B2 (en) | Data processing device and method using predesignated register | |
Pétrot et al. | On mpsoc software execution at the transaction level | |
Abramov et al. | OpenTS: an outline of dynamic parallelization approach | |
Wakeling | Compiling lazy functional programs for the Java Virtual Machine | |
JP4755371B2 (ja) | 計算機システム | |
Brooks et al. | L-a common lisp for embedded systems | |
Engel et al. | Using a low-level virtual machine to improve dynamic aspect support in operating system kernels | |
Harris | An extensible virtual machine architecture | |
Tierney | Compiling R: A preliminary report | |
Beuche et al. | Streamlining object-oriented software for deeply embedded applications | |
Ferrari | Process state capture and recovery in high-performance heterogeneous distributed computing systems |