JP2001356916A - メモリブロック化コンパイラ及びプログラム実行方法 - Google Patents
メモリブロック化コンパイラ及びプログラム実行方法Info
- Publication number
- JP2001356916A JP2001356916A JP2000177341A JP2000177341A JP2001356916A JP 2001356916 A JP2001356916 A JP 2001356916A JP 2000177341 A JP2000177341 A JP 2000177341A JP 2000177341 A JP2000177341 A JP 2000177341A JP 2001356916 A JP2001356916 A JP 2001356916A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- program
- stored
- block
- compiler
- 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.)
- Withdrawn
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】コンピュータ用プログラムをプログラム実行用
メモリに記憶する場合、大きな連続領域を不要とし、複
数のプログラムの実行、終了を繰り返しても、再利用で
きないような小さなメモリ領域の発生を防止し、メモリ
を効率的に利用できるようにする。 【解決手段】例えばハードディスク等の大容量メモリに
記憶しているコンピュータ用プログラムをコンパイラ
(compiler)によりコンパイル(compile)し、プログ
ラム実行用メモリ(RAM)10に記憶して実行する場
合、予めメモリ10を多数のブロック1、2、…、Nに
分割しておき、空いているブロックを探してそのブロッ
クにデータを記憶し、そのブロックが一杯になったら、
次に空いているブロックを探して同様に記憶していく。
メモリに記憶する場合、大きな連続領域を不要とし、複
数のプログラムの実行、終了を繰り返しても、再利用で
きないような小さなメモリ領域の発生を防止し、メモリ
を効率的に利用できるようにする。 【解決手段】例えばハードディスク等の大容量メモリに
記憶しているコンピュータ用プログラムをコンパイラ
(compiler)によりコンパイル(compile)し、プログ
ラム実行用メモリ(RAM)10に記憶して実行する場
合、予めメモリ10を多数のブロック1、2、…、Nに
分割しておき、空いているブロックを探してそのブロッ
クにデータを記憶し、そのブロックが一杯になったら、
次に空いているブロックを探して同様に記憶していく。
Description
【0001】
【発明の属する技術分野】本発明は、制御装置のマイク
ロコンピュータあるいは一般的なコンピュータのプログ
ラム実行時におけるメモリブロック化コンパイラ及びプ
ログラム実行方法に関する。
ロコンピュータあるいは一般的なコンピュータのプログ
ラム実行時におけるメモリブロック化コンパイラ及びプ
ログラム実行方法に関する。
【0002】
【従来の技術】一般にコンピュータのプログラムは、実
行を開始する際、まずプログラム実行用メモリに対して
連続領域を確保し、その後、このメモリ上にプログラム
をロードし、実行終了後、メモリの連続領域を解放する
という手順で実行される。
行を開始する際、まずプログラム実行用メモリに対して
連続領域を確保し、その後、このメモリ上にプログラム
をロードし、実行終了後、メモリの連続領域を解放する
という手順で実行される。
【0003】例えばプログラムAの実行終了後、プログ
ラムBが動作する場合、もしプログラムAよりプログラ
ムBの方が小さければ、終了したプログラムAのメモリ
の連続領域を使ってプログラムBを動作させることがで
きる。しかし、逆にプログラムBの方が大きければ、プ
ログラムAのメモリに入りきらないので、新たに大きな
メモリの連続領域を確保して、ここでプログラムBを動
作させる。
ラムBが動作する場合、もしプログラムAよりプログラ
ムBの方が小さければ、終了したプログラムAのメモリ
の連続領域を使ってプログラムBを動作させることがで
きる。しかし、逆にプログラムBの方が大きければ、プ
ログラムAのメモリに入りきらないので、新たに大きな
メモリの連続領域を確保して、ここでプログラムBを動
作させる。
【0004】
【発明が解決しようとする課題】上記の従来の方法を繰
り返すと、大きなメモリの空き連続領域が無くなってい
き、小さなメモリの空き連続領域があちこちに散らばっ
ている状態となる。従って空きメモリの合計では余裕が
あるはずなのに、大きなプログラムを動作させることが
できなくなる。これは一般にメモリの分断化(メモリフ
ラグメンテーション)と呼ばれている。
り返すと、大きなメモリの空き連続領域が無くなってい
き、小さなメモリの空き連続領域があちこちに散らばっ
ている状態となる。従って空きメモリの合計では余裕が
あるはずなのに、大きなプログラムを動作させることが
できなくなる。これは一般にメモリの分断化(メモリフ
ラグメンテーション)と呼ばれている。
【0005】本発明は上記の課題を解決するためになさ
れたもので、コンピュータ用プログラムをプログラム実
行用メモリに記憶する場合、大きな連続領域を不要と
し、複数のプログラムの実行、終了を繰り返しても、再
利用できないような小さなメモリ領域の発生を防止して
メモリを効率的に利用することができるメモリブロック
化コンパイラ及びプログラム実行方法を提供することを
目的とする。
れたもので、コンピュータ用プログラムをプログラム実
行用メモリに記憶する場合、大きな連続領域を不要と
し、複数のプログラムの実行、終了を繰り返しても、再
利用できないような小さなメモリ領域の発生を防止して
メモリを効率的に利用することができるメモリブロック
化コンパイラ及びプログラム実行方法を提供することを
目的とする。
【0006】
【課題を解決するための手段】第1の発明に係るメモリ
ブロック化コンパイラは、大容量メモリに格納されてい
るコンピュータ用プログラムをコンパイルしてプログラ
ム実行用メモリに記憶するコンパイラにおいて、上記プ
ログラム実行用メモリを予め複数のブロックに分割して
おき、プログラムを上記プログラム実行用メモリに記憶
する際、空いているブロックを探して順次記憶するよう
にしたことを特徴とする。
ブロック化コンパイラは、大容量メモリに格納されてい
るコンピュータ用プログラムをコンパイルしてプログラ
ム実行用メモリに記憶するコンパイラにおいて、上記プ
ログラム実行用メモリを予め複数のブロックに分割して
おき、プログラムを上記プログラム実行用メモリに記憶
する際、空いているブロックを探して順次記憶するよう
にしたことを特徴とする。
【0007】第2の発明は、第1の発明に係るメモリブ
ロック化コンパイラにおいて、上記プログラム実行用メ
モリに記憶するプログラムを予め小データに分割し、こ
の各小データに次の小データへの番地を示すポインタを
付けたことを特徴とする。
ロック化コンパイラにおいて、上記プログラム実行用メ
モリに記憶するプログラムを予め小データに分割し、こ
の各小データに次の小データへの番地を示すポインタを
付けたことを特徴とする。
【0008】第3の発明は、第1の発明に係るメモリブ
ロック化コンパイラにおいて、プログラムを終了する
際、プログラム実行用メモリをブロック単位で解放する
ことを特徴とする。
ロック化コンパイラにおいて、プログラムを終了する
際、プログラム実行用メモリをブロック単位で解放する
ことを特徴とする。
【0009】第4の発明に係るプログラム実行方法は、
大容量メモリに格納されているコンピュータ用プログラ
ムを読出し、プログラム実行用メモリに記憶して実行す
るプログラム実行方法において、上記プログラム実行用
メモリを予め複数のブロックに分割しておき、大容量メ
モリから読出したプログラムを上記プログラム実行用メ
モリに記憶する際、空いているブロックを探して順次記
憶することを特徴とする。
大容量メモリに格納されているコンピュータ用プログラ
ムを読出し、プログラム実行用メモリに記憶して実行す
るプログラム実行方法において、上記プログラム実行用
メモリを予め複数のブロックに分割しておき、大容量メ
モリから読出したプログラムを上記プログラム実行用メ
モリに記憶する際、空いているブロックを探して順次記
憶することを特徴とする。
【0010】
【発明の実施の形態】以下、図面を参照して本発明の一
実施形態を説明する。図1は、本実施形態に係わるコン
ピュータのメモリの一部を示したものである。本実施形
態は、例えばハードディスク等の大容量メモリに記憶し
ているコンピュータ用プログラムをコンパイラ(compil
er)によりコンパイル(compile)し、プログラム実行
用メモリ(RAM)10に記憶して実行する場合、予め
メモリ10を多数のブロック1、2、…、Nに分割して
おき、空いているブロックを探してそのブロックにデー
タを記憶し、そのブロックが一杯になったら、次に空い
ているブロックを探して同様に記憶していくことを特徴
とする。なお、メモリブロック1、2、…、Nは、必ず
しも同じ大きさにする必要はなく、大きさが異なる場合
はブロック毎にその大きさを示す情報を持たせておく。
また、プログラム実行用メモリ10は、データ処理用の
メモリと共用することが可能である。
実施形態を説明する。図1は、本実施形態に係わるコン
ピュータのメモリの一部を示したものである。本実施形
態は、例えばハードディスク等の大容量メモリに記憶し
ているコンピュータ用プログラムをコンパイラ(compil
er)によりコンパイル(compile)し、プログラム実行
用メモリ(RAM)10に記憶して実行する場合、予め
メモリ10を多数のブロック1、2、…、Nに分割して
おき、空いているブロックを探してそのブロックにデー
タを記憶し、そのブロックが一杯になったら、次に空い
ているブロックを探して同様に記憶していくことを特徴
とする。なお、メモリブロック1、2、…、Nは、必ず
しも同じ大きさにする必要はなく、大きさが異なる場合
はブロック毎にその大きさを示す情報を持たせておく。
また、プログラム実行用メモリ10は、データ処理用の
メモリと共用することが可能である。
【0011】コンピュータ用プログラムは一般に、デー
タ(記憶領域)と命令コード(操作する指令内容)の2
種に大別されるが、具体的にはデータと命令コードを次
に示すようして記憶させる。
タ(記憶領域)と命令コード(操作する指令内容)の2
種に大別されるが、具体的にはデータと命令コードを次
に示すようして記憶させる。
【0012】データをメモリブロックに割り当てていく
場合、小さいデータはそのまま割り付ければ良いが、配
列や構造体のように大きなデータが問題となる。このよ
うな大きなデータに付いては、図2に示すように小さい
データをポインタで結ぶリスト構造としておくことによ
り、メモリブロック間が大きく離れている場合でも対応
できる。
場合、小さいデータはそのまま割り付ければ良いが、配
列や構造体のように大きなデータが問題となる。このよ
うな大きなデータに付いては、図2に示すように小さい
データをポインタで結ぶリスト構造としておくことによ
り、メモリブロック間が大きく離れている場合でも対応
できる。
【0013】図2は、プログラムデータをメモリ10の
ブロックに割り付ける方法を示している。大きなデータ
に付いては予め小データに分割し、この小データに必ず
ポインタを付け、このポインタが次の小データへの番地
を指すようにしておく。なお、図2では、メモリブロッ
ク17からメモリブロック32にデータが続く場合の例
を示したもので、メモリブロック17の最終ポインタ及
びデータの番地が[255]、メモリブロック32の最
初のポインタ及びデータの番地が[256]となってい
る。上記ポインタを使って小データをたどれば、全デー
タをたどることができる。従って、あるメモリブロック
から次のメモリブロックまでが離れている場合でも、ポ
インタは次のブロック中の小データを指すことができる
ので、全データをたどることができる。
ブロックに割り付ける方法を示している。大きなデータ
に付いては予め小データに分割し、この小データに必ず
ポインタを付け、このポインタが次の小データへの番地
を指すようにしておく。なお、図2では、メモリブロッ
ク17からメモリブロック32にデータが続く場合の例
を示したもので、メモリブロック17の最終ポインタ及
びデータの番地が[255]、メモリブロック32の最
初のポインタ及びデータの番地が[256]となってい
る。上記ポインタを使って小データをたどれば、全デー
タをたどることができる。従って、あるメモリブロック
から次のメモリブロックまでが離れている場合でも、ポ
インタは次のブロック中の小データを指すことができる
ので、全データをたどることができる。
【0014】なお、小データは必ずしも同じ大きさであ
る必要はなく、大きさが異なる場合は小データ毎の大き
さの情報を持たせておけば良い。また、最後の小データ
のポインタは、最後であることを示す特別な値、例えば
「0」に設定する。なお、ポインタは図2に示したよう
な順方向だけでなく、順方向と逆方向の両方を持つよう
にしても良い。
る必要はなく、大きさが異なる場合は小データ毎の大き
さの情報を持たせておけば良い。また、最後の小データ
のポインタは、最後であることを示す特別な値、例えば
「0」に設定する。なお、ポインタは図2に示したよう
な順方向だけでなく、順方向と逆方向の両方を持つよう
にしても良い。
【0015】図3は、命令コードをメモリブロックに割
り付ける方法を示している。あるメモリブロックから次
のメモリブロックまで離れている場合は、コンパイラが
自動的にジャンプ命令(例えばJMP)を挿入する。な
お、図3では、メモリブロック45からメモリブロック
53にジャンプする場合の例を示している。また、実行
する経路が複数ある場合は、この複数の経路に対してジ
ャンプ文を挿入する。命令コードは本来連続的に配置す
る必要があるが、あるブロックから次に見つけたブロッ
クまで離れている場合には、上記のようにそのブロック
から次のブロックへジャンプ命令(JMP)で飛ぶよう
にしておくことにより、命令を続行することができる。
り付ける方法を示している。あるメモリブロックから次
のメモリブロックまで離れている場合は、コンパイラが
自動的にジャンプ命令(例えばJMP)を挿入する。な
お、図3では、メモリブロック45からメモリブロック
53にジャンプする場合の例を示している。また、実行
する経路が複数ある場合は、この複数の経路に対してジ
ャンプ文を挿入する。命令コードは本来連続的に配置す
る必要があるが、あるブロックから次に見つけたブロッ
クまで離れている場合には、上記のようにそのブロック
から次のブロックへジャンプ命令(JMP)で飛ぶよう
にしておくことにより、命令を続行することができる。
【0016】上記したようにコンピュータ用プログラム
をプログラム実行用メモリに記憶する場合、プログラム
をメモリブロックの大きさに合わせて細分化して当て嵌
めていくことにより、大きな連続領域は不要となる。ま
た、メモリを解放する場合、必ずブロック単位で解放さ
れるので、再利用できないような小さなメモリ領域が発
生することはなく、必ず解放したメモリブロックを再利
用することができる。このため複数のプログラムの実
行、終了を繰り返しても、再利用できないようなメモリ
領域が増加することはなく、メモリを効率的に利用する
ことができる。
をプログラム実行用メモリに記憶する場合、プログラム
をメモリブロックの大きさに合わせて細分化して当て嵌
めていくことにより、大きな連続領域は不要となる。ま
た、メモリを解放する場合、必ずブロック単位で解放さ
れるので、再利用できないような小さなメモリ領域が発
生することはなく、必ず解放したメモリブロックを再利
用することができる。このため複数のプログラムの実
行、終了を繰り返しても、再利用できないようなメモリ
領域が増加することはなく、メモリを効率的に利用する
ことができる。
【0017】
【発明の効果】以上詳記したように本発明によれば、コ
ンピュータ用プログラムをコンパイルしてプログラム実
行用メモリに記憶する場合、予めメモリを複数のブロッ
クに分割しておき、空いているブロックを探してそのブ
ロックに記憶させ、そのブロックが一杯になったら次に
空いているブロックを探して記憶するようにしたので、
大きな連続領域は不要となる。また、プログラム実行用
メモリを解放する場合、メモリは必ずブロック単位で解
放されるので、再利用できないような小さなメモリ領域
が発生することはなく、必ず解放されたメモリブロック
を再利用することができる。このため複数のプログラム
の実行、終了を繰り返しても、再利用できないようなメ
モリ領域が増加することはなく、メモリを効率的に利用
することができる。
ンピュータ用プログラムをコンパイルしてプログラム実
行用メモリに記憶する場合、予めメモリを複数のブロッ
クに分割しておき、空いているブロックを探してそのブ
ロックに記憶させ、そのブロックが一杯になったら次に
空いているブロックを探して記憶するようにしたので、
大きな連続領域は不要となる。また、プログラム実行用
メモリを解放する場合、メモリは必ずブロック単位で解
放されるので、再利用できないような小さなメモリ領域
が発生することはなく、必ず解放されたメモリブロック
を再利用することができる。このため複数のプログラム
の実行、終了を繰り返しても、再利用できないようなメ
モリ領域が増加することはなく、メモリを効率的に利用
することができる。
【図1】本発明の一実施形態に係るコンピュータのメモ
リの一部を複数のブロックに分割した状態を示す図。
リの一部を複数のブロックに分割した状態を示す図。
【図2】同実施形態におけるメモリブロックにデータを
リスト構造にして割り付けた状態を示す図。
リスト構造にして割り付けた状態を示す図。
【図3】同実施形態におけるメモリブロックに命令コー
ドを割り付けた状態を示す図。
ドを割り付けた状態を示す図。
10 メモリ
Claims (4)
- 【請求項1】 大容量メモリに格納されているコンピュ
ータ用プログラムをコンパイルしてプログラム実行用メ
モリに記憶するコンパイラにおいて、上記プログラム実
行用メモリを予め複数のブロックに分割しておき、プロ
グラムを上記プログラム実行用メモリに記憶する際、空
いているブロックを探して順次記憶するようにしたこと
を特徴とするメモリブロック化コンパイラ。 - 【請求項2】 請求項1記載のメモリブロック化コンパ
イラにおいて、上記プログラム実行用メモリに記憶する
プログラムを予め小データに分割し、この各小データに
次の小データへの番地を示すポインタを付けたことを特
徴とするメモリブロック化コンパイラ。 - 【請求項3】 請求項1記載のメモリブロック化コンパ
イラにおいて、プログラムを終了する際、プログラム実
行用メモリをブロック単位で解放することを特徴とする
メモリブロック化コンパイラ。 - 【請求項4】 大容量メモリに格納されているコンピュ
ータ用プログラムを読出し、プログラム実行用メモリに
記憶して実行するプログラム実行方法において、上記プ
ログラム実行用メモリを予め複数のブロックに分割して
おき、大容量メモリから読出したプログラムを上記プロ
グラム実行用メモリに記憶する際、空いているブロック
を探して順次記憶することを特徴とするプログラム実行
方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000177341A JP2001356916A (ja) | 2000-06-13 | 2000-06-13 | メモリブロック化コンパイラ及びプログラム実行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000177341A JP2001356916A (ja) | 2000-06-13 | 2000-06-13 | メモリブロック化コンパイラ及びプログラム実行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001356916A true JP2001356916A (ja) | 2001-12-26 |
Family
ID=18678953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000177341A Withdrawn JP2001356916A (ja) | 2000-06-13 | 2000-06-13 | メモリブロック化コンパイラ及びプログラム実行方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001356916A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009169565A (ja) * | 2008-01-15 | 2009-07-30 | Yamaha Corp | 信号処理装置 |
JP2009205586A (ja) * | 2008-02-29 | 2009-09-10 | Sony Computer Entertainment Inc | コンパイラおよびプログラム分割方法 |
JP2011134288A (ja) * | 2009-01-19 | 2011-07-07 | Fujitsu Ltd | コード生成装置及びコード生成方法 |
JP2013140606A (ja) * | 2013-02-18 | 2013-07-18 | Yamaha Corp | 信号処理装置 |
-
2000
- 2000-06-13 JP JP2000177341A patent/JP2001356916A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009169565A (ja) * | 2008-01-15 | 2009-07-30 | Yamaha Corp | 信号処理装置 |
JP2009205586A (ja) * | 2008-02-29 | 2009-09-10 | Sony Computer Entertainment Inc | コンパイラおよびプログラム分割方法 |
US8645910B2 (en) | 2008-02-29 | 2014-02-04 | Sony Corporation | Compiler capable of partitioning program and program partitioning method |
JP2011134288A (ja) * | 2009-01-19 | 2011-07-07 | Fujitsu Ltd | コード生成装置及びコード生成方法 |
JP2013140606A (ja) * | 2013-02-18 | 2013-07-18 | Yamaha Corp | 信号処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2502960B2 (ja) | マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法 | |
US3735363A (en) | Information processing system employing stored microprogrammed processors and access free field memories | |
FI78993C (fi) | Oevervakare av driftsystem. | |
US6996821B1 (en) | Data processing systems and method for batching tasks of the same type in an instruction cache | |
US6446258B1 (en) | Interactive instruction scheduling and block ordering | |
JP3109054B2 (ja) | エラー回復サブシステムおよびエラー回復方法 | |
US20040003377A1 (en) | Converting byte code instructions to a new instruction set | |
CN105051680A (zh) | 使用硬件指针的simd核心中的发散分支解决方案 | |
US3701977A (en) | General purpose digital computer | |
KR100883655B1 (ko) | 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법 | |
CN101847096A (zh) | 包含栈变量函数的优化方法 | |
EP1760580A1 (en) | Processing operation information transfer control system and method | |
JP2008522277A (ja) | 優先度の付けられたタスク間の効率的な切り換え | |
US6959430B2 (en) | Specialized heaps for creation of objects in object-oriented environments | |
CN109656868B (zh) | 一种cpu与gpu之间的内存数据转移方法 | |
CN101236489B (zh) | 虚拟硬件系统及其指令执行方法、以及虚拟机 | |
CN103140834A (zh) | 用于填充存储器区域的处理器支持 | |
JP2001356916A (ja) | メモリブロック化コンパイラ及びプログラム実行方法 | |
EP1481320B1 (en) | Two tier clusters for representation of objects in java programming environments | |
US6907601B1 (en) | Method and apparatus for inserting more than one allocation instruction within a routine | |
EP1544731A1 (en) | Information processing method and program and recording medium for implementing the method | |
JP2729795B2 (ja) | 並列計算機及びその制御方法 | |
KR100654477B1 (ko) | 프로세서 동작 방법 | |
KR20130111027A (ko) | 임베디드 시스템에서의 동적 메모리 관리방법 | |
US20030225973A1 (en) | Two area stack |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20070904 |