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
Application number
JP2000177341A
Other languages
English (en)
Inventor
Masanobu Soga
正信 曽我
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Heavy Industries Ltd
Original Assignee
Mitsubishi Heavy Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Heavy Industries Ltd filed Critical Mitsubishi Heavy Industries Ltd
Priority to JP2000177341A priority Critical patent/JP2001356916A/ja
Publication of JP2001356916A publication Critical patent/JP2001356916A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】コンピュータ用プログラムをプログラム実行用
メモリに記憶する場合、大きな連続領域を不要とし、複
数のプログラムの実行、終了を繰り返しても、再利用で
きないような小さなメモリ領域の発生を防止し、メモリ
を効率的に利用できるようにする。 【解決手段】例えばハードディスク等の大容量メモリに
記憶しているコンピュータ用プログラムをコンパイラ
(compiler)によりコンパイル(compile)し、プログ
ラム実行用メモリ(RAM)10に記憶して実行する場
合、予めメモリ10を多数のブロック1、2、…、Nに
分割しておき、空いているブロックを探してそのブロッ
クにデータを記憶し、そのブロックが一杯になったら、
次に空いているブロックを探して同様に記憶していく。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、制御装置のマイク
ロコンピュータあるいは一般的なコンピュータのプログ
ラム実行時におけるメモリブロック化コンパイラ及びプ
ログラム実行方法に関する。
【0002】
【従来の技術】一般にコンピュータのプログラムは、実
行を開始する際、まずプログラム実行用メモリに対して
連続領域を確保し、その後、このメモリ上にプログラム
をロードし、実行終了後、メモリの連続領域を解放する
という手順で実行される。
【0003】例えばプログラムAの実行終了後、プログ
ラム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は、データ処理用の
メモリと共用することが可能である。
【0011】コンピュータ用プログラムは一般に、デー
タ(記憶領域)と命令コード(操作する指令内容)の2
種に大別されるが、具体的にはデータと命令コードを次
に示すようして記憶させる。
【0012】データをメモリブロックに割り当てていく
場合、小さいデータはそのまま割り付ければ良いが、配
列や構造体のように大きなデータが問題となる。このよ
うな大きなデータに付いては、図2に示すように小さい
データをポインタで結ぶリスト構造としておくことによ
り、メモリブロック間が大きく離れている場合でも対応
できる。
【0013】図2は、プログラムデータをメモリ10の
ブロックに割り付ける方法を示している。大きなデータ
に付いては予め小データに分割し、この小データに必ず
ポインタを付け、このポインタが次の小データへの番地
を指すようにしておく。なお、図2では、メモリブロッ
ク17からメモリブロック32にデータが続く場合の例
を示したもので、メモリブロック17の最終ポインタ及
びデータの番地が[255]、メモリブロック32の最
初のポインタ及びデータの番地が[256]となってい
る。上記ポインタを使って小データをたどれば、全デー
タをたどることができる。従って、あるメモリブロック
から次のメモリブロックまでが離れている場合でも、ポ
インタは次のブロック中の小データを指すことができる
ので、全データをたどることができる。
【0014】なお、小データは必ずしも同じ大きさであ
る必要はなく、大きさが異なる場合は小データ毎の大き
さの情報を持たせておけば良い。また、最後の小データ
のポインタは、最後であることを示す特別な値、例えば
「0」に設定する。なお、ポインタは図2に示したよう
な順方向だけでなく、順方向と逆方向の両方を持つよう
にしても良い。
【0015】図3は、命令コードをメモリブロックに割
り付ける方法を示している。あるメモリブロックから次
のメモリブロックまで離れている場合は、コンパイラが
自動的にジャンプ命令(例えばJMP)を挿入する。な
お、図3では、メモリブロック45からメモリブロック
53にジャンプする場合の例を示している。また、実行
する経路が複数ある場合は、この複数の経路に対してジ
ャンプ文を挿入する。命令コードは本来連続的に配置す
る必要があるが、あるブロックから次に見つけたブロッ
クまで離れている場合には、上記のようにそのブロック
から次のブロックへジャンプ命令(JMP)で飛ぶよう
にしておくことにより、命令を続行することができる。
【0016】上記したようにコンピュータ用プログラム
をプログラム実行用メモリに記憶する場合、プログラム
をメモリブロックの大きさに合わせて細分化して当て嵌
めていくことにより、大きな連続領域は不要となる。ま
た、メモリを解放する場合、必ずブロック単位で解放さ
れるので、再利用できないような小さなメモリ領域が発
生することはなく、必ず解放したメモリブロックを再利
用することができる。このため複数のプログラムの実
行、終了を繰り返しても、再利用できないようなメモリ
領域が増加することはなく、メモリを効率的に利用する
ことができる。
【0017】
【発明の効果】以上詳記したように本発明によれば、コ
ンピュータ用プログラムをコンパイルしてプログラム実
行用メモリに記憶する場合、予めメモリを複数のブロッ
クに分割しておき、空いているブロックを探してそのブ
ロックに記憶させ、そのブロックが一杯になったら次に
空いているブロックを探して記憶するようにしたので、
大きな連続領域は不要となる。また、プログラム実行用
メモリを解放する場合、メモリは必ずブロック単位で解
放されるので、再利用できないような小さなメモリ領域
が発生することはなく、必ず解放されたメモリブロック
を再利用することができる。このため複数のプログラム
の実行、終了を繰り返しても、再利用できないようなメ
モリ領域が増加することはなく、メモリを効率的に利用
することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るコンピュータのメモ
リの一部を複数のブロックに分割した状態を示す図。
【図2】同実施形態におけるメモリブロックにデータを
リスト構造にして割り付けた状態を示す図。
【図3】同実施形態におけるメモリブロックに命令コー
ドを割り付けた状態を示す図。
【符号の説明】
10 メモリ

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 大容量メモリに格納されているコンピュ
    ータ用プログラムをコンパイルしてプログラム実行用メ
    モリに記憶するコンパイラにおいて、上記プログラム実
    行用メモリを予め複数のブロックに分割しておき、プロ
    グラムを上記プログラム実行用メモリに記憶する際、空
    いているブロックを探して順次記憶するようにしたこと
    を特徴とするメモリブロック化コンパイラ。
  2. 【請求項2】 請求項1記載のメモリブロック化コンパ
    イラにおいて、上記プログラム実行用メモリに記憶する
    プログラムを予め小データに分割し、この各小データに
    次の小データへの番地を示すポインタを付けたことを特
    徴とするメモリブロック化コンパイラ。
  3. 【請求項3】 請求項1記載のメモリブロック化コンパ
    イラにおいて、プログラムを終了する際、プログラム実
    行用メモリをブロック単位で解放することを特徴とする
    メモリブロック化コンパイラ。
  4. 【請求項4】 大容量メモリに格納されているコンピュ
    ータ用プログラムを読出し、プログラム実行用メモリに
    記憶して実行するプログラム実行方法において、上記プ
    ログラム実行用メモリを予め複数のブロックに分割して
    おき、大容量メモリから読出したプログラムを上記プロ
    グラム実行用メモリに記憶する際、空いているブロック
    を探して順次記憶することを特徴とするプログラム実行
    方法。
JP2000177341A 2000-06-13 2000-06-13 メモリブロック化コンパイラ及びプログラム実行方法 Withdrawn JP2001356916A (ja)

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)

* Cited by examiner, † Cited by third party
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 信号処理装置

Cited By (5)

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