JP2000347936A - プログラム実行システム - Google Patents

プログラム実行システム

Info

Publication number
JP2000347936A
JP2000347936A JP11158594A JP15859499A JP2000347936A JP 2000347936 A JP2000347936 A JP 2000347936A JP 11158594 A JP11158594 A JP 11158594A JP 15859499 A JP15859499 A JP 15859499A JP 2000347936 A JP2000347936 A JP 2000347936A
Authority
JP
Japan
Prior art keywords
function code
copy
memory
program
function
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
Application number
JP11158594A
Other languages
English (en)
Inventor
Mamoru Sakamoto
守 坂本
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 Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP11158594A priority Critical patent/JP2000347936A/ja
Priority to US09/440,933 priority patent/US6279079B1/en
Publication of JP2000347936A publication Critical patent/JP2000347936A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 キャッシュメモリ1002内にプログラムコ
ードの複製を作成するためハードウエアが複雑になると
いう課題があった。 【解決手段】 関数コード毎に高速メモリ4内に複製を
作成し、関数コードの呼出時、高速メモリ4内に複製が
存在するかどうかをデコーダを含むCPU1がチェック
する。また、既に関数コードが格納されたブロックを解
放し、そこに新たな関数コードの複製を作成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、メモリに格納さ
れたプログラムを実行するプログラム実行システムに関
し、特に、CPUが実行するプログラムの関数コード
を、高速で動作するメモリ内に効率よく複製し実行する
プログラム実行システムに関するものである。
【0002】
【従来の技術】一般に、コンピュータシステム等のプロ
グラム実行システムによるプログラムの実行速度は、演
算装置(以下、CPUとする)とプログラムを格納する
メモリ(以下、プログラムメモリとも呼ぶ。)との間に
おけるデータ転送速度の影響を大きく受ける。例えば、
このデータ転送速度が低い場合には、CPUの演算能力
が高い場合であっても、CPUの性能を充分に発揮する
ことができない。一方、データ転送速度の高いバスシス
テムや高速メモリは、一般に通常のメモリよりも高価で
あり、また、システムに搭載可能なメモリ容量が少ない
場合がある。
【0003】このように、従来では、CPUとプログラ
ムメモリとの間のデータ転送速度を向上するために高速
メモリをコンピュータシステム内に組み込み、プログラ
ムを格納する通常のメモリと高速メモリとを併用し、高
速メモリの性質をうまく利用して、プログラム実行速度
を高速化していた。
【0004】上記した特徴を持つ従来技術として、例え
ば図40に示すような、高速メモリとしてキャッシュメ
モリを組み込んだシステムがある。図40は従来のコン
ピュータシステムの構成を示すブロック図であり、図に
おいて、1001はCPU、1002はキャッシュメモ
リ、1003は通常のメモリである。ここで、通常と
は、動作速度がキャッシュメモリ1002と比較して遅
いが、メモリサイズが大きいメモリをいう。
【0005】図40に示す従来のコンピュータシステム
では、高速メモリとしてのキャッシュメモリ1002
は、プログラムを格納した通常のメモリ1003とCP
U1001との間に置かれ、通常のメモリ1003内に
格納されているプログラムコードの複製を一時的に格納
するための場所として使用される。
【0006】CPU1001が、通常のメモリ1003
内に格納されているプログラムを実行する場合、通常の
メモリ1003をアクセスする毎に、アクセス対象のプ
ログラムコードの複製がキャッシュメモリ1002内に
存在するか、即ち、キャッシュメモリ1002内に格納
されているか否かのチェックを行う。
【0007】アクセス対象のプログラムコードがキャッ
シュメモリ1002内に存在している場合には、その複
製を使用し、存在しない場合には、通常のメモリ100
3内に格納しているアクセス対象のプログラムコードを
読み出し、かつ、キャッシュメモリ1002内にそのプ
ログラムコードを複製した後に、アクセス対象のプログ
ラムコードを実行する。
【0008】また、CPU1001がアクセスするプロ
グラムコードのすべてが、キャッシュメモリ1002内
に格納できない場合、CPU1001は、キャッシュメ
モリ1002内に既に格納しているプログラムコードを
解放し、新たなプログラムコードをキャッシュメモリ1
002内に格納するといった制御を実行する。
【0009】キャッシュメモリ1002に関する従来の
課題としては、通常メモリ1003内のアクセス対象の
プログラムコードの複製が、キャッシュメモリ1002
内に存在するかどうかの判定を高速に実行する必要があ
る。この判定は、CPU1001が通常のメモリ100
3をアクセスしようとする度に、即ち、CPU1001
が実行する命令毎に行われるので、この判定速度がCP
U1001の命令実行速度と比較して、無視できる程度
に高速で実行される必要がある。何故なら、高速メモリ
であるキャッシュメモリ1002は、そのアクセス速度
が高速であるという点に特徴があり、もし、判定速度が
遅い場合、キャッシュメモリ1002からプログラムコ
ードの複製を読み出す速度が高速であっても、キャッシ
ュメモリ1002を設けるメリットが得られないからで
ある。
【0010】
【発明が解決しようとする課題】従来のプログラム実行
システムは以上のように構成されているので、上記した
判定動作に加え、キャッシュメモリ1002の動作に関
するすべての制御をハードウエアによって行っているた
め、キャッシュメモリ1002を組み込んだ従来のコン
ピュータシステムは、ハードウエア回路が複雑になり、
またハードウエアを含むキャッシュメモリ1002の制
御が複雑で困難であるといった課題があった。
【0011】また、高速メモリであるキャッシュメモリ
1002は高速で動作できるという利点があるが、その
反面、高価でかつメモリ容量の制限があり、通常メモリ
1003内のすべてのプログラムコードをキャッシュメ
モリ1002内に複製することは不可能である。従っ
て、プログラムの一部のみを、処理の流れに沿ってCP
U1001およびキャッシュメモリ1002のコントロ
ーラが判定してキャッシュメモリ1002内に複製して
いた。
【0012】この発明は上記のような課題を解決するた
めになされたもので、キャッシュメモリ等の高速メモリ
の動作を制御するハードウエアを複雑化することなく、
高速メモリのメモリ容量を越えるようなプログラムであ
っても、関数コードを高速メモリ中に効率良く複製し配
置することで、関数コードの実行速度を高速化すること
ができるプログラム実行システムを得ることを目的とす
る。
【0013】
【課題を解決するための手段】この発明に係るプログラ
ム実行システムは、メモリ空間中に配置された固有のア
ドレスを有し、アクセス速度の早い第1記憶手段と、前
記メモリ空間中に配置された固有のアドレスを有し、前
記第1記憶手段と比較してアクセス速度の遅い第2記憶
手段と、プログラムをデコードし、デコード結果を命令
実行手段へ出力する制御手段とを備えている。さらに、
前記制御手段は、前記プログラムの関数呼出し時に、関
数コードの複製が第1記憶手段内に存在しているか否か
を判定するヒット判定手段と、前記第1記憶手段内に、
関数コードの複製を格納するための空きブロックを割当
てるメモリ割当て手段と、前記第1記憶手段内に作成さ
れたブロックを解放し、空きブロックを作成するメモリ
解放手段と、前記第1記憶手段内に割当てられた前記空
きブロック内に、前記関数コードを複製して再配置する
コード複製手段と、前記第1記憶手段内に複製された関
数コードが解放可能か否かを判定する解放可否判定手段
と、前記解放可否判定手段により、解放可能と判定され
た前記第1記憶手段内に複製されている関数コードのい
ずれを解放するかを決定する解放決定手段とを有するも
のである。そして、前記制御手段は、前記プログラムの
関数呼出し時に、前記関数コードの複製が既に前記第1
記憶手段内に存在している場合、前記第1記憶手段内に
複製されている関数コードを読出して実行し、また前記
関数コードの複製が前記第1記憶手段内に存在しない場
合、前記関数コードを前記第1記憶手段内に複製した
後、前記命令実行手段で前記関数コードを実行するよう
に制御し、前記第1記憶手段内で、解放可能な前記関数
コードを解放し、新たに呼出される関数コードの複製を
格納可能な空きブロックを確保する等のメモリ管理動作
を実行することを特徴とするものである。
【0014】この発明では、制御手段が、第1記憶手段
内に複製されている関数コードの実行順序を記憶する手
段をさらに備えている。これにより、制御手段内の解放
決定手段が、最も過去に実行された関数コードを複製し
ているブロックから順に解放して空きブロックを作成す
るように制御することを特徴とするものである。
【0015】この発明では、制御手段が、第1記憶手段
内に複製された関数コードを移動し再配置する手段をさ
らに備えている。これにより、制御手段におけるメモリ
割当て手段により解放可能と判定された関数コードに関
するブロック群の一部のブロックを解放し、他のブロッ
クを移動して、前記第1記憶手段内に分散する未使用領
域を一箇所に集合させて新たな未使用のブロック領域を
生成するように制御することを特徴とするものである。
【0016】この発明では、制御手段が、関数コード毎
に対応させたロックフラグに所定値を設定する手段をさ
らに備えている。これにより、制御手段における解放可
否判定手段が、複製元である第2記憶手段内の関数コー
ドに対応した前記ロックフラグを参照し、前記ロックフ
ラグ内に前記所定値が設定されている場合、前記関数コ
ードの複製を第1記憶手段内から解放しないように制御
することを特徴とするものである。
【0017】この発明では、制御手段が、プログラムの
関数毎に設けられた複製フラグに所定値を設定し、およ
び前記所定値を解除する手段をさらに備えている。これ
により、制御手段が、関数コードの呼出し時に、前記関
数コードに対応する前記複製フラグの値を参照して、前
記複製フラグに前記所定値が設定されている場合にの
み、前記関数コードを第1記憶手段内に複製して実行す
るように制御することを特徴とするものである。
【0018】この発明では、制御手段が、関数コードの
呼出し回数をカウントする手段をさらに備えている。こ
れにより、制御手段が、呼出し回数が予め設定した所定
回数以内の場合、プログラムを格納している第2記憶手
段から読出した関数コードをそのまま実行し、呼出し回
数が前記所定回数を越えた場合のみ、前記関数コードを
第1記憶手段内に複製した後に実行することを特徴とす
るものである。
【0019】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.図1は、この発明の実施の形態1による
プログラム実行システムを示すブロック図であり、図に
おいて、1はデコーダ等を含む中央演算処理装置(制御
手段,ヒット判定手段,メモリ割当て手段,メモリ解放
手段,コード複製手段,解放可否判定手段,解放決定手
段)としてのCPUである。4は高速に動作する高速メ
モリ(第1記憶手段)であり、例えばキャッシュメモリ
として用いられる。5は通常のメモリ(第2記憶手段)
である。このプログラム実行システムは、図1の右側に
示すように、高速メモリ4と通常のメモリ5とがアドレ
ス空間内で連続に配置されている。従ってCPU1は、
両メモリ4,5を直接アドレス可能である。
【0020】尚、以下で説明するこの発明の実施の形態
1〜7のプログラム実行システムは、例えば、RAMや
ROM等の通常のメモリ5内に格納されたプログラムを
CPU1が読み出し、所定の手順に基づいて高速メモリ
4内へ関数コードの複製を効率良く行い、かつ該命令を
デコーダでデコードし、デコードされた命令を、例え
ば、メモリアクセスユニット(図示せず)、整数演算ユ
ニット(図示せず)等の複数の命令実行手段(図示せ
ず)へ出力して、該命令を実行するものである。
【0021】図2は、図1に示したプログラム実行シス
テムにおける関数呼出し手順を示しており、高速メモリ
4内に複製されるデータの構造を示す説明図である。図
において、21は、高速メモリ4内に関数コードが複製
され格納された場合のデータブロックの構造である。こ
のデータブロック21は、使用中フラグが1の場合、そ
のブロックが使用中であることを示している。また、次
のブロックアドレスを示すポインタ領域があり、図の最
初のブロックでは、未使用ブロックのアドレスを指して
いる。
【0022】ポインタ領域の次に、複製元の関数コード
のアドレスを格納する領域がある。この領域へは、関数
コードが格納されている通常のメモリ5内のメモリ領域
のアドレスを格納する。次に、実行カウント領域があ
り、さらにその次に、複製された関数コードを格納する
領域がある。高速メモリ4内のデータブロックの構造
は、上記した構造を持つブロックが複数個生成される。
【0023】実施の形態1のプログラム実行システムで
は、各関数コードのサイズが同一であり、高速メモリ4
内に複製される関数コードのブロックサイズは同一であ
るとする。
【0024】次に動作について説明する。図3は、実施
の形態1のプログラム実行システムによる関数呼出し処
理、実行中判定処理、実行中マーク解除処理の各動作を
示すフローチャートである。図4は、実施の形態1のプ
ログラム実行システムによるヒット判定処理の動作を示
すフローチャートである。図5は、実施の形態1のプロ
グラム実行システムによるメモリ割当て処理の動作を示
すフローチャートである。図6は、実施の形態1のプロ
グラム実行システムによるコード複製処理の動作を示す
フローチャートである。
【0025】図7は、実施の形態1のプログラム実行シ
ステムによるリターン処理の動作を示すフローチャート
である。図8は、実施の形態1のプログラム実行システ
ムによる空きメモリ割当て処理の動作を示すフローチャ
ートである。図9は、実施の形態1のプログラム実行シ
ステムによるパージ処理の動作を示すフローチャートで
ある。図10は、実施の形態1のプログラム実行システ
ムによるメモリ解放処理の動作を示すフローチャートで
ある。
【0026】図11は、実施の形態1のプログラム実行
システムが動作するプログラム例である。図12は、実
施の形態1のプログラム実行システムが、図11のプロ
グラムを実行した場合に、図3〜図10に示したフロー
チャートに示す各動作に基づいて実行する場合の、高速
メモリ4内の各ブロックに構築される関数コードの複製
の状態を示す説明図である。
【0027】図12はこの手順に従って図11に示した
プログラムを実行する場合に、高速メモリ4内に関数コ
ードの複製が作成されていく状態を示したものである。
図12に示すように、高速メモリ4内に複写される関数
コードは、模式的に示されているが、各関数コードは、
図2に示す構造に従って複写される。尚、図12に示す
各関数ブロックの括弧内の数字は、実行カウント数であ
る。
【0028】図11に示すように、プログラムは、関数
コードF1が高速メモリ4内に複製された後に実行され
る。複製の方法は、図3のフローチャートに示す手順に
沿って行われる。
【0029】先ず、図3のステップST31−1でヒッ
ト判定処理(ヒット判定手段)が実行される。このヒッ
ト判定処理は、図4のヒット判定処理のサブルーチンで
実行される。次のステップST31−2で、ステップS
T31−1で実行したヒット判定処理の結果を参照し、
対象の関数コードF1が高速メモリ4内に格納されてい
るかをチェックする。
【0030】関数コードF1が高速メモリ4内に格納さ
れている場合、つまりヒットした場合は、図4に示すス
テップST44で、ヒットしたことを示す値(例えば、
値1)が変数Xへ代入され、かつ、高速メモリ4内に複
製されている関数コードF1の格納されたブロックのア
ドレスが変数Cへ代入され、処理の流れは図3のステッ
プST32へ進む。ステップST32では、ヒットした
関数コードF1を変数Cへ代入し、処理の流れはステッ
プST35−1の実行中マーク設定処理へ進む。
【0031】ステップST31−2の判定で、ヒットし
なかったことが判明した場合、ステップST33−1で
メモリ割当て処理(メモリ割当て手段)が実行される。
このメモリ割当て処理は、図5に示すサブルーチンで実
行される。
【0032】図5に示すメモリ割当て処理では、高速メ
モリ4内へ複製しようとする関数コードF1のために、
高速メモリ4内の空きエリアを割当てる処理がなされ
る。図5のフローチャートの最初のステップST51で
は、図8に示す空きメモリ割当て処理(メモリ割当て手
段)が実行される。その結果、空きメモリの割当てがで
きた場合、処理の流れはステップST53に進む。
【0033】ステップST53で、割当てられた空きブ
ロックを変数Pへ代入し、割当てられたことを示す値を
(例えば、値1)変数Xへ代入する。そして、処理の流
れは図3のステップST33−2に進む。
【0034】次に、図8に示した空きメモリ割当て処理
の結果、空きメモリの割当てが出来なかった場合、処理
は、図5のステップST54へ進む。ここでは、パージ
処理(メモリ解放手段)が実行される。このパージ処理
は、図9に示すサブルーチンのパージ処理で実行され
る。このサブルーチンのパージ処理では、高速メモリ4
内に空きブロックを作成するため、現在使用されている
ブロックのパージ処理が行われる。図9のパージ処理で
は、先頭アドレスの値をアドレス変数であるポインタP
へ代入する(ステップST91)。そして、ポインタP
の示す高速メモリ4内のブロック内の使用中フラグの値
が“1”か否かをチェックする(ステップST92)。
ポインタPの示す高速メモリ4内のブロックの使用中フ
ラグの値が“1”でない場合、処理の流れは、ステップ
ST95へ進み、次のブロックのアドレスをポインタP
に代入する((ステップST95)。その後、ポインタ
Pが高速メモリ4内の最終アドレスを指していない場
合、処理の流れはステップST92へ戻り、上記の動作
を繰り返す。一方、ステップST92で、ポインタPの
示す高速メモリ4内のブロックの使用中フラグの値が
“1”である場合、ポインタPに指すブロックが実行中
か否かを判定する(ステップST93)。そのブロック
が実行中でない場合、処理の流れはステップST94−
2へ進み、図10に示すメモリ解放処理を実行する。図
10は、高速メモリ4内のブロックの解放処理、即ち、
メモリ解放処理を示すフローチャートである。図10に
示すメモリ解放処理では、ポインタPの示す高速メモリ
4内のブロックの使用中フラグの値を“0”に設定する
(ステップST101)。そして、ポインタPの直前の
メモリブロックのアドレスをアドレス変数Qへ代入し、
そのブロックの使用中フラグの値が“0”か否かをチェ
ックする(ステップST103)。使用中フラグの値が
“0”の場合は、ステップST104−1、ST104
−2の処理を行い使用中フラグの値が“0”のブロック
を解放し、ステップST105へ進む。使用中フラグの
値が“1”の場合は、処理の流れはステップST105
へ進む。ステップST105では、ポインタPが示すブ
ロックの次のブロックのアドレスをアドレス変数Rへ代
入する。そして、アドレス変数Rの示すアドレスのブロ
ック内の使用中フラグの値が“0”の場合、アドレス変
数Rが示すブロックの次のブロックのアドレスを、ポイ
ンタPの示すブロックの次のブロックを示すアドレスと
して設定する(ステップST107)。上述したよう
に、図10に示すメモリ解放処理は、ポインタPが示す
ブロックに隣接するブロックも、使用中フラグの値が
“0”であれば解放して大きな空きブロックを作成する
ものである。メモリ解放処理が終了すると、図9に示す
パージ処理へ戻り、処理の流れはステップST94−3
へ進む。
【0035】図9で得られたパージ処理の結果を、図5
に示すステップST55でチェックする。パージ処理が
実行された場合、高速メモリ4内に空きブロックが確保
されたことを意味するので、処理の流れはステップST
51へ戻り、メモリ割当て処理を繰り返す。
【0036】パージ処理が実行できなかった場合は、高
速メモリ4内に空きブロックが確保できなかったことを
意味するので、処理の流れは図5のステップST56か
ら、図3のステップST33−2、そしてステップST
36へ進む。ステップST36では、関数コードF1を
変数へ代入し、次のステップST37で関数コードF1
を実行するサブルーチンをコールする。その後、処理の
流れは図3のステップST38のリターン処理へ進む。
ステップST38では、リターン処理が実行される。リ
ターン処理の詳細は、図7のサブルーチンのフローチャ
ートに示されている。
【0037】ところで、図3のステップST33−2に
おいて、ステップST33−1で実行されたメモリ割当
て処理の結果、メモリ割当てが実行された場合、処理の
流れはステップST34−1へ進む。ステップST34
−1では、コード複製処理(コード複製手段)が実行さ
れる。このコード複製処理は、図6に示すサブルーチン
で処理される。図6に示すコード複製処理では、高速メ
モリ4内に割当てられたブロック内に、図2に示すメモ
リブロックのデータ構造に従って、関数コードF1の複
製が作成される。
【0038】その後、図3に示すステップST34−2
で、複製された関数コードF1が変数Cへ代入され、処
理の流れはステップST35−1へ進む。ステップST
35−1では、実行中マークの設定処理が行われる。こ
れは、図2に示すブロック内の実行カウント値が、+1
インクリメントされる。
【0039】その後、処理の流れは、ステップST35
−2において、変数Cに関するサブルーチンコールを行
う。ここでの処理は、ステップST37と同じである。
その後、ステップST35−3において、実行中マーク
解除処理が実行される。これは、図2に示すデータ構造
のブロック内の実行カウント値が、1デクリメントされ
る。
【0040】その後、処理の流れはステップST38へ
進み、リターン処理が実行される。リターン処理の詳細
は、図7のフローチャートに示されている。
【0041】図2〜図10のフローチャートに示した手
順に基づいて、実施の形態1のプログラム実行システム
が図11に示すプログラムを実行した場合、例えば、図
12に示す(3)および(4)に示すように、関数コー
ドF2の複製が高速メモリ4内に存在するため、高速メ
モリ4内の複製が使用されていることを示している。
【0042】尚、図12における(7)では、高速メモ
リ4内の関数コードF3が解放されて(即ち、図10に
示すメモリ解放処理の実行により、(6)内の関数コー
ドF3を格納したブロックが解放されて)、関数コード
F4が高速メモリ4内に複製されていることが分かる。
【0043】以上のように、この実施の形態1によれ
ば、プログラム実行システムが実行するプログラム内の
関数毎に、高速メモリ4内に構築されたブロックに関数
コードの複製を作成し、関数の実行時に、高速メモリ4
内に関数コードの複製が存在するか否かをチェックし、
もし、関数コードの複製が存在すればその複製を読み出
して実行するように構成されているので、高速メモリ4
内の複製の存在の有無をチェックするために必要とされ
る時間が、CPUの命令実行速度と比較して問題となら
ない。従って、従来のようなハードウエアを複雑化する
ことなくソフトウエアのみで実現でき、ハードウエアコ
ストを削減できる。さらに、実行するプログラム全体の
サイズより、記憶サイズの小さい高速メモリ4であって
も、既に関数コードが格納されたブロックを解放して、
そこに新たな関数コードの複製を作成するので、一部の
関数コードの実行が遅延することはない。
【0044】実施の形態2.図13は、実施の形態2に
よるプログラム実行システムの高速メモリ4内に作成さ
れる関数コードのブロックの構造であり、図において、
131,133および134は使用中のブロックであ
り、132は未使用ブロックである。各ブロックは、使
用中フラグ、次のブロックのアドレス、複製元の関数コ
ードのアドレス、複製されたコードの各領域から構成さ
れている。
【0045】実施の形態2のプログラム実行システム
は、図1に示す実施の形態1の構成と同じなので、ここ
では、同一の参照符号を用い、それらの説明を省略す
る。 尚、実施の形態2の説明では、高速メモリ4内に
複製する関数コードのサイズは、実施の形態1と同様に
同じサイズであると仮定する。
【0046】次に動作について説明する。図14は、関
数呼出しリストの構造を示す説明図である。図15は、
実行中マーク設定処理を示すフローチャートである。こ
の実行中マーク設定処理は、図3に示す実施の形態1に
おける実行中マーク設定処理に代わって実行される。
【0047】図16は、実行中マーク解除処理および実
行中判定処理を示すフローチャートである。この実行中
マーク解除処理および実行中判定処理は、図3に示す実
施の形態1における実行中マーク解除処理および実行中
判定処理に代わって実行される。
【0048】図17は、実施の形態2のプログラム実行
システムが実行するプログラムの例である。図18は、
実施の形態2のプログラム実行システムが、図17に示
すプログラムを実行した場合に、高速メモリ4内に構築
される関数コードの複製の状態を示す説明図である。
【0049】実施の形態2のプログラム実行システムで
は、実施の形態1で用いた図3〜図10の各処理を実行
する。ただし、図3に示した実施の形態1の実行中マー
ク設定処理は、上記したように、図15のフローチャー
トで示される実行中マーク設定処理に従う。また、図3
に示した実施の形態1の実行中判定処理および実行中マ
ーク解除処理は、上記したように、図16のフローチャ
ートに示す実行中判定処理および実行中マーク解除処理
に行う。
【0050】図14に示すように、実施の形態2のプロ
グラム実行システムでは、図3のステップST35−1
で実行される実行中マーク設定処理は、図15に示すサ
ブルーチンの動作を示すフローチャートに従って処理さ
れる。従って、関数コードが高速メモリ4内のブロック
から読み出された場合(キャッシュヒット)あるいは、
高速メモリ4内にブロックが割当てられ、関数コードの
複製を作成した後に、図14に示す関数呼出しリスト内
に関数コードを追加する(図15のプッシュ処理)。従
って、図14に示すように、最後に読み出された関数コ
ードFnの呼出しレベルが一番高い。
【0051】また、図3のステップST35−3に示し
た実行中マーク解除処理の動作は、図16に示すサブル
ーチン実行中マーク解除処理のフローチャートに従って
処理される。この場合、関数コードが、図14に示す関
数呼出しリストから削除される。また、図16に示す実
施の形態2における実行中判定処理は、実施の形態1で
説明した図9に示すパージ処理内のステップST93で
実行される。図16に示す実行中判定処理は、関数コー
ドが関数呼出しリスト内にある場合、その関数コードは
実行中であるとして設定され、処理の流れは図9のステ
ップST95へ進む。
【0052】図18の(7)において、関数コードF5
の複製を高速メモリ4内に複製するため、(6)に示す
関数コードF3の複製を高速メモリ4から解放してい
る。(7)は、関数コードF5が関数コードF3のブロ
ックに複製されたことを示している。同様に、(15)
では、関数コードF5の複製を高速メモリ4内に複製す
るため、(14)に示す関数コードF3の複製を高速メ
モリ4から解放している(解放可否判定手段、解放決定
手段)。(15)は、関数コードF5が関数コードF3
のブロックに複製されたことを示している。
【0053】以上のように、この実施の形態2によれ
ば、高速メモリ4内のブロックに格納されている実行の
完了した関数コードの複製は、必要に応じて解放される
ため、実行しようとするプログラム全体のサイズより小
さい記憶サイズの高速メモリ4を搭載したシステムであ
っても、高速メモリ4内に格納されている関数コードを
複製したブロックを解放し、新たな関数コードの複製を
そのブロック内に作成するので関数コードの実行が遅延
することはない。
【0054】実施の形態3.図19は、実施の形態3に
よるプログラム実行システムの高速メモリ4内に作成さ
れる関数コードのブロックのデータ構造のうち、使用中
ブロックについて示したものである。このデータ構造
は、使用中フラグ、次のブロックアドレス、複製元の関
数コードのアドレス、実行カウント、実行歴カウント、
複製されたコードの各領域から構成されている。実行歴
カウントHは、すべての関数コードを通じての呼出しを
カウントするための変数である。
【0055】実施の形態3のプログラム実行システム
は、図1に示す実施の形態1の構成と同じなので、ここ
では、同一の参照符号を用い、それらの説明を省略す
る。尚、実施の形態3の説明では、高速メモリ4内に複
製する関数コードのサイズは同一とする。
【0056】次に動作について説明する。図20は、実
施の形態3によるプログラム実行システムでのパージ処
理を示すフローチャートである。このパージ処理は、図
9に示す実施の形態1のパージ処理に代えて実行され
る。また、図21は、実施の形態3によるプログラム実
行システムでのリターン処理を示すフローチャートであ
る。このリターン処理は、図7に示す実施の形態1のリ
ターン処理に代えて実行される。それ以外の動作は、実
施の形態1で説明した図3〜図6,図8,図10,図1
1の各処理を示すサブルーチンの動作と同じである。
【0057】図22は、実施の形態3のプログラム実行
システムが実行するプログラム例である。図23は、実
施の形態3のプログラム実行システムが、図22に示す
プログラムを実行した場合に、高速メモリ4内に構築さ
れる関数コードの複製の状態を示す説明図である。図2
4は、図22に示すプログラムを実施の形態1および2
のプログラム実行システムが実行した場合の、高速メモ
リ4内に複製される関数コードの状態を示す説明図であ
る。
【0058】実施の形態3のプログラム実行システムの
動作は、実施の形態1および実施の形態2のものと基本
的に同じであるが、パージ処理に関しては図20に示す
ように、高速メモリ4内に複製された関数コードの実行
歴カウント数をチェックし、実行歴カウント値の最小の
ものから順にブロックの解放処理を行う。
【0059】従って、図23と図24に示される高速メ
モリ4内の状態を比較すると、実施の形態1および2の
プログラム実行システムが、図22に示すプログラムを
実行した場合、図24内の(9)に示すように、関数コ
ードF6の複製を作成するため、(8)に示す関数コー
ドF5を解放している。同様に、(13)に示すよう
に、関数コードF6の複製を作成するため、(12)に
示す関数コードF5を解放している。
【0060】一方、実施の形態3のプログラム実行シス
テムでは、図19に示したデータ構造、および図20,
21に示したパージ処理およびリターン処理の各サブル
ーチンの処理手順に従って実行されるので、図23に示
すように、(9)に示すように関数コードF6の複製を
高速メモリ4内に作成するため、(8)に示す関数コー
ドF4の複製が高速メモリ4から解放されているのみで
ある。
【0061】以上のように、この実施の形態3によれ
ば、図20に示すパージ処理において、高速メモリ4内
の関数コードの各ブロック内の実行歴カウント領域を参
照して、最も以前に複製された関数コードのブロックか
ら、優先して解放するように構成したので、実施の形態
1および2の特徴に加え、高速メモリ4内への関数コー
ドの複製回数を低減できる効果がある。
【0062】実施の形態4.図25は、実施の形態4に
よるプログラム実行システムが実行するメモリ割当て処
理の動作を示すフローチャートである。図25に示すメ
モリ割当て処理は、図5に示した実施の形態1における
メモリ割当て処理に代えて実行される。
【0063】図26は、実施の形態4によるプログラム
実行システムが実行するコンパクション処理の動作を示
すフローチャートである。図26に示すコンパクション
処理は、図25に示したメモリ割当て処理内のステップ
ST252で実行される。その他の処理は実施の形態1
と同じである。
【0064】尚、実施の形態4のプログラム実行システ
ムは、図1に示す実施の形態1の構成と同じなので、こ
こでは、同一の参照符号を用い、それらの説明を省略す
る。
【0065】次に動作について説明する。以下の説明に
おいて、実施の形態4のプログラム実行システムが実行
するプログラム例は、実施の形態3の説明で用いた図2
2のプログラムを使用する。
【0066】上記した実施の形態1〜3の説明では、高
速メモリ4内に複製する関数コードのサイズは同一であ
ると仮定していた。しかしながら、実施の形態4では、
関数コードのサイズが異なる場合についても処理を行
う。
【0067】関数コードのサイズが異なる場合、空きブ
ロック領域が充分ある場合は、高速メモリ4内に複製さ
れる各関数コードのブロックを、順に、作成すればよ
い。しかし、空きブロック領域が無くなった場合、呼出
し回数の少ない関数コードの複製を格納したブロックを
解放して空き領域を作成する。その後、新しい関数コー
ドの複製をその空きブロック領域に作成してゆく。
【0068】しかしながら、複製しようとする関数コー
ドのサイズが、既に解放した関数コードのサイズと異な
る場合、つまり、新たに複製しようとする関数コードの
サイズが、空きブロック領域より大きい場合、あるいは
逆に、空きブロック領域より小さい場合がある。例え
ば、新しく複製する関数コードのサイズが空きブロック
領域より小さい場合、関数コードを複製した後には、未
使用の領域が残る。そして、解放処理、複製処理が繰り
返された場合、未使用領域が高速メモリ4内に分散する
ことになる。この場合、未使用領域が高速メモリ4内に
分散しているので、高速メモリ4の領域を有効に活用で
きない。
【0069】この課題を解決するため、実施の形態4の
プログラム実行システムでは、図25のステップST2
51−2に示すように、高速メモリ4内の空きメモリ領
域への割当てが失敗に終わった場合、ステップST25
2に示すコンパクション処理を実行する。
【0070】このコンパクション処理は、図26のステ
ップST262−7に示すPとQとの合体処理およびス
テップST262−8に示すPからQまでのコンパクシ
ョン処理により、高速メモリ4内の空きブロック領域を
1つにまとめて、大きな空きブロック領域を作成する。
これにより、高速メモリ4内への関数コードの再配置処
理、つまり、入れ替え回数を低減でき、入れ替えにかか
る処理時間を削減できる。
【0071】図27は、図22に示すプログラムを実施
の形態4のプログラム実行システムが実行した場合の、
高速メモリ内に複製される関数コードの状態を示す説明
図であり、図28は、図22に示すプログラムを実施の
形態1および2のプログラム実行システムが実行した場
合の、高速メモリ4内に複製される関数コードの状態を
示す説明図である。
【0072】図28に示す高速メモリ4の状態では、
(9)において、関数コードF6の複製を作成するた
め、(8)に示す関数コードF5の複製を解放してい
る。しかしながら、関数コードF5と関数コードF6と
のサイズが異なるので、(9)に示す関数コードF6と
既に複製されている関数コードF4との間に未使用領域
が発生している。その結果、図22に示すプログラムを
実行する場合、高速メモリ4への関数コードの複製は合
計8回実行される。
【0073】これに対して、実施の形態4のプログラム
実行システムでは、図27の(9)で示すように、関数
コードF6の複製を作成する場合、(8)における関数
コードF4の複製が関数コードF5のブロックの後に移
動された結果(コンパクション処理)、(9)の関数コ
ードF6に示すように未使用領域が無くなり、関数コー
ドF4の後に関数コードF6の複製が形成されている。
従って、図22に示すプログラムを実施の形態4のプロ
グラム実行システムが実行する場合、高速メモリ4への
関数コードの複製処理は合計6回で済んでいる。
【0074】以上のように、この実施の形態4によれ
ば、関数コードのサイズが異なる場合であっても、プロ
グラム実行システムが、高速メモリ4内の空きブロック
領域を1つにまとめて大きな空きブロック領域を作成す
るように構成したので、実施の形態1および2の特徴に
加えて、高速メモリ4内への関数コードの再配置処理、
つまり、入れ替え回数を低減でき、入れ替えにかかる処
理時間を削減できる。
【0075】実施の形態5.図29は、実施の形態5に
よるプログラム実行システムが実行するパージ処理の動
作を示すフローチャートである。図29に示すパージ処
理は、図9に示した実施の形態1におけるパージ処理に
代えて実行される。
【0076】図30は、実施の形態5によるプログラム
実行システムが実行するロック処理およびロック解除処
理の動作を示すフローチャートである。その他の処理は
実施の形態1と同じである。図30に示すように、実施
の形態5のプログラム実行システムでは、関数コード毎
に所定値、具体的には、1か0かの値をロックフラグテ
ーブル内に設定しておく。例えば、重要である関数コー
ドに関しては、パージ処理の際に高速メモリ4からその
関数コードを複製したブロックを解放、つまり削除でき
ないように所定値1を設定しておく。
【0077】尚、実施の形態5のプログラム実行システ
ムは、図1に示す実施の形態1の構成と同じなので、こ
こでは、同一の参照符号を用い、それらの説明を省略す
る。
【0078】次に動作について説明する。図31は、実
施の形態5のプログラム実行システムが実行するプログ
ラムの例を示す説明図である。図32は、図31に示す
プログラムを実施の形態5のプログラム実行システムが
実行した場合の高速メモリ4内に複製される関数コード
の状態を示す説明図(上部)、および実施の形態1、2
のプログラム実行システムが実行した場合の高速メモリ
4内に複製される関数コードの状態(下側)を示す説明
図である。
【0079】図32の上側の(6)に示すように、実施
の形態5のプログラム実行システムでは、関数コードF
4の複製を高速メモリ4内に作成する場合、(5)で示
される関数コードF2の複製のブロックを高速メモリ4
から削除する際に、図29のステップST291−5に
示すように、関数コードF2の複製ブロックがロックさ
れているか否かをチェックしている。
【0080】チェックの結果、関数コードF2のブロッ
クがロックされていることが分かる。一方、(5)に示
す関数コードF3のロックは設定されていないので、関
数コードF3に関するブロックを削除し、削除したブロ
ック内に関数コードF4の複製を作成している。従っ
て、図31に示すプログラムを実行した場合、実施の形
態5のプログラム実行システムにおける高速メモリ4へ
の複製の回数は合計4回のみ実行されることになる。
【0081】図29に示すフローチャートにおいて、ス
テップST291−7での高速メモリ4内のブロックの
解放処理は、図10に示したサブルーチンで処理され
る。また、ステップST291−5のロック中か否かの
判定は、図30に示すように、ロックフラグの値が0か
否かで判断する。
【0082】また、図30に示すように、ロックフラグ
の設定は、関数コードに対応するロックフラグを1に設
定すれば良く、ロックフラグの解除は、関数コードに対
応するロックフラグを0に設定すれば良い。
【0083】一方、図32の下側の(6)に示すよう
に、実施の形態1,2のプログラム実行システムでは、
関数コードF4の複製を高速メモリ4内に作成するた
め、(5)に示すように、関数コードF2の複製のブロ
ックを、高速メモリ4から削除している。従って、図3
1に示すプログラムを実行した場合、高速メモリ4への
複製の回数は合計5回実行される。
【0084】以上のように、この実施の形態5によれ
ば、予め重要であると予測可能な関数コードに対してロ
ックフラグを用いてロック設定し、ロックフラグに基づ
いて高速メモリ4内に複製を作成し、また高速メモリ4
から削除できないように設定するように構成したので、
実施の形態1および2の特徴に加えて、高速メモリ4内
への関数コードの再配置処理、つまり、入れ替え回数を
低減でき、入れ替えにかかる処理時間を削減できる。
【0085】実施の形態6.図33は、実施の形態6に
よるプログラム実行システムが実行する関数呼出し手順
の動作を示すフローチャートである。図33に示す関数
呼出し処理は、図3に示した実施の形態1における関数
呼出し処理に代えて実行される。
【0086】図34は、実施の形態6によるプログラム
実行システムが実行する複製作成判定処理を示すフロー
チャートである。この複製作成判定処理では、関数コー
ド毎に値が設定された複製作成テーブルを参照する。図
34に示すように、実施の形態6のプログラム実行シス
テムでは、関数コード毎に1か0かの値を複製作成テー
ブル内に設定しておく。例えば、重要でない関数コード
に関しては高速メモリ4内に複製を作成しないように、
予め、複製作成判定テーブル内に値1を設定しておく。
その他の処理は実施の形態1と同じである。
【0087】尚、実施の形態6のプログラム実行システ
ムは、図1に示す実施の形態1の構成と同じなので、こ
こでは、同一の参照符号を用い、それらの説明を省略す
る。
【0088】次に動作について説明する。実施の形態6
のプログラム実行システムが実行するプログラムの例
は、図22に示したプログラムと同一である。図35
は、図22に示すプログラムを実施の形態6のプログラ
ム実行システムが実行した場合の、高速メモリ4内に複
製される関数コードの状態を示す説明図である。
【0089】尚、実施の形態6で使用する複製作成判定
テーブルや複製作成判定処理を実行しない場合におけ
る、高速メモリ4内に複製される関数コードの状態は、
図24に示している。
【0090】実施の形態6のプログラム実行システムが
実行する図33の関数呼出し処理では、ステップST3
31−1およびステップST331−2におけるヒット
判定処理の後で、ステップST331−3において、複
製するか否かを判定する複製作成判定処理を実行する。
この複製作成判定処理は、関数コードを高速メモリ4内
に複製するか否かを、複製作成判定テーブルを元に判断
するものであり、図34に示すフローチャートに従って
実行される。
【0091】次に、ステップST331−3における複
製作成判定処理の結果を、ステップST331−4でチ
ェックする。複製する場合、処理の流れはステップST
331−5のメモリ割当て処理へ進み、一方、複製しな
い場合、その後の処理はステップST333−1へ進
み、その後の動作は、実施の形態1と同じである。
【0092】実施の形態6における複製作成判定処理を
実行した結果、図35に示すように、実施の形態6のプ
ログラム実行システムでは、関数コードの複製を高速メ
モリ4内に作成する回数がわずか4回である。一方、図
24に示すように、実施の形態3のプログラム実行シス
テムでは、関数コードの複製を高速メモリ4内に作成す
る回数は合計8回実行される。
【0093】以上のように、この実施の形態6によれ
ば、予め重要でない予測可能な関数コードに対して複製
作成判定テーブル内に所定値を設定し、高速メモリ4内
に複製を作成しないように構成したので、実施の形態1
および2の特徴に加えて、高速メモリ4内への関数コー
ドの再配置処理、つまり、入れ替え回数を低減でき、入
れ替えにかかる処理時間を削減できる。
【0094】実施の形態7.図36は、実施の形態7の
プログラム実行システムが実行する複製作成判定処理の
動作を示すフローチャートである。実施の形態7の複製
作成判定処理は、実施の形態6の複製作成判定処理に代
わって実行される。尚、その他の動作は、実施の形態1
および6と同様であり、また、実施の形態7のプログラ
ム実行システムの構成は、図1に示す実施の形態1の構
成と同じなので、ここでは、同一の参照符号を用い、そ
れらの説明を省略する。
【0095】次に動作について説明する。図36に示す
ように、実施の形態7のプログラム実行システムでは、
関数コード毎に、呼出し回数、および複製までの呼出し
回数の値を複製作成判定テーブル内に設定しておく。例
えば、図36においては、関数コードF1は、呼出し回
数が0であり、複製を実行するまでに必要な呼出し回数
がC1である。その他の処理は実施の形態1の場合と同
じである。
【0096】図37は、実施の形態7のプログラム実行
システムが実行するプログラム例である。実施の形態7
のプログラム実行システムが、図37に示したプログラ
ムを実行し、関数コードを高速メモリ4内に複製する場
合、図36の複製作成判定処理におけるステップST3
61で、関数コードに対応する複製処理判定テーブル内
の呼出し回数を+1インクリメントする。
【0097】次に、図36に示すステップST362に
おいて、関数コードの呼出し回数が、予め設定されてい
る複製までの呼出し回数より多いか否かを判定する。判
定の結果、予め設定されている複製までの呼出し回数の
所定値より越えた場合、つまり、プログラムを実行した
場合の関数コードの呼出し回数が所定値より多いと判断
された場合、ステップST364に示すように高速メモ
リ4内への複製処理を実行する。
【0098】逆に、予め設定されている複製までの呼出
し回数より、プログラムを実行した場合の呼出し回数が
小さい場合、ステップST363に示すように高速メモ
リ4内への複製処理を実行しない。その他の動作は、実
施の形態1の場合と同様である。
【0099】図38は、実施の形態7のプログラム実行
システムが図37に示すプログラムを実行した場合に、
高速メモリ4内に複製される関数コードの状態を示す説
明図である。また図39は、実施の形態1および2のプ
ログラム実行システムが図37に示すプログラムを実行
した場合に、高速メモリ内に複製される関数コードの状
態を示す説明図である。
【0100】図38に示すように、実施の形態7のプロ
グラム実行システムが、図37のプログラムを実行した
場合、関数コードの高速メモリ4内への複製処理は、2
回のみである。これに対して、実施の形態1または2の
プログラム実行システムが図37のプログラムを実行し
た場合、高速メモリ4内への関数コードの複製処理は、
図39に示すように10回となる。
【0101】以上のように、この実施の形態7によれ
ば、関数コード毎に、呼出し回数および予め設定されて
いる複製までの呼出し回数を、複製処理判定テーブル内
に格納し、これをもとに、呼出し回数が所定値より少な
い関数コードに関しては、高速メモリ4内に複製しない
ように制御し、逆に、呼出し回数の多い関数コード、即
ち、呼出し回数が予め設定された所定値を越えた関数コ
ードのみを高速メモリ4内に複製するように構成したの
で、実施の形態1および2の特徴に加えて、実行回数の
多い関数コードほど高速に実行でき、結果として、プロ
グラムの実行時間を削減できる。
【0102】
【発明の効果】以上のように、この発明によれば、関数
コード毎に高速メモリ内に複製を作成し、関数コードの
呼出しのときだけに、高速メモリ内に複製が存在するか
どうかをチェックするように構成したので、高速メモリ
内の複製の存在の有無をチェックするために必要とされ
る時間が、CPUの命令実行速度と比較して問題となら
ない。従って、従来のようなハードウエアを複雑化する
ことなくソフトウエアのみで実現でき、ハードウエアコ
ストを削減できる効果がある。さらに、実行しようとす
るプログラム全体のサイズより、記憶サイズの小さい高
速メモリであっても、既に関数コードが格納されたブロ
ックを解放して、そこに新たな関数コードの複製を作成
するので、一部の関数コードの実行の遅延が発生するこ
とはないという効果がある。
【0103】この発明によれば、最近に呼出された関数
コードは再びすぐ呼び出されることが多いという一般的
なプログラムの性質に基づいて、各ブロック内の実行歴
カウント領域を設け、最近使用された関数コードを高速
メモリ内に残すように構成したので、高速メモリ内の複
製の入れ替え回数を低減でき、入替えにかかる時間を削
減できるという効果がある。
【0104】この発明によれば、関数コードのサイズが
異なる場合であっても、高速メモリ内の複数の空き領域
を、1つの大きなブロック領域にまとめるように構成し
たので、高速メモリ内の関数コードの複製の入替え回数
を低減でき、入替えにかかる時間を削減できるという効
果がある。
【0105】この発明によれば、ロックフラグを導入
し、予め重要であると予測可能な関数コードに対して用
いてロック設定するようにして高速メモリから複製を解
放できないように構成したので、高速メモリ内の複製の
入替え回数を低減でき、入替えにかかる時間を削減でき
るという効果がある。
【0106】この発明によれば、複製作成判定テーブル
を導入し、予め重要でないと予測可能な関数コードに対
して高速メモリ内に複製を作成しないように構成したの
で、高速メモリ内の複製の入替え回数を低減でき、入替
えにかかる時間を削減できるという効果がある。また、
重要な関数コードを多く高速メモリ内に格納することが
できるので、全体のプログラム実行時間を短縮すること
ができるという効果がある。
【0107】この発明によれば、複製処理判定テーブル
を導入し、関数コード毎に呼出し回数および予め設定さ
れている複製までの呼出し回数を設定し、これをもと
に、呼出し回数が所定値より少ない関数コードに関して
は、高速メモリ内に複製しないようにして、逆に、呼出
し回数の多い関数コード、即ち、呼出し回数が予め設定
された所定値を越えた関数コードのみを高速メモリ内に
複製するように構成したので、実行回数の多い関数コー
ドほど高速に実行でき、結果として、プログラムの実行
時間を削減できるという効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるプログラム実
行システムを示すブロック図である。
【図2】 高速メモリ内で構築されるデータの構造を示
す説明図である。
【図3】 実施の形態1のプログラム実行システムによ
る関数呼出し処理、実行中判定処理、実行中マーク解除
処理の各動作を示すフローチャートである。
【図4】 実施の形態1のプログラム実行システムによ
るヒット判定処理の動作を示すフローチャートである。
【図5】 実施の形態1のプログラム実行システムによ
るメモリ割当て処理の動作を示すフローチャートであ
る。
【図6】 実施の形態1のプログラム実行システムによ
るコード複製処理の動作を示すフローチャートである。
【図7】 実施の形態1のプログラム実行システムによ
るリターン処理の動作を示すフローチャートである。
【図8】 実施の形態1のプログラム実行システムによ
る空きメモリ割当て処理の動作を示すフローチャートで
ある。
【図9】 実施の形態1のプログラム実行システムによ
るパージ処理の動作を示すフローチャートである。
【図10】 実施の形態1のプログラム実行システムに
よるメモリ解放処理の動作を示すフローチャートであ
る。
【図11】 実施の形態1のプログラム実行システムが
動作するプログラム例である。
【図12】 高速メモリ内に複製される関数コードの状
態を示す説明図である。
【図13】 実施の形態2のプログラム実行システムで
使用されるところの、高速メモリ内で構築されるデータ
構造を示す説明図である。
【図14】 関数読み出しリストの構造を示す説明図で
ある。
【図15】 実行中マーク設定処理を示すフローチャー
トである。
【図16】 実行中マーク解除処理および実行中判定処
理を示すフローチャートである。
【図17】 実施の形態2のプログラム実行システムが
実行するプログラム例である。
【図18】 高速メモリ内に構築される関数コードの複
製の状態を示す説明図である。
【図19】 実施の形態3によるプログラム実行システ
ムが使用する高速メモリ内に複製される関数コードのブ
ロックのデータ構造である。
【図20】 実施の形態3によるプログラム実行システ
ムでのパージ処理の動作を示すフローチャートである。
【図21】 実施の形態3によるプログラム実行システ
ムでのリターン処理の動作を示すフローチャートであ
る。
【図22】 実施の形態3のプログラム実行システムが
実行するプログラム例である。
【図23】 図22に示すプログラムを実施の形態1お
よび2のプログラム実行システムが実行した場合の、高
速メモリ内に複製される関数コードの状態を示す説明図
である。
【図24】 図22に示すプログラムを実施の形態3の
プログラム実行システムが実行した場合の、高速メモリ
内に複製される関数コードの状態を示す説明図である。
【図25】 実施の形態4によるプログラム実行システ
ムが実行するメモリ割当て処理の動作を示すフローチャ
ートである。
【図26】 実施の形態4によるプログラム実行システ
ムが実行するコンパクション処理の動作を示すフローチ
ャートである。
【図27】 図22に示すプログラムを実施の形態4の
プログラム実行システムが実行した場合の、高速メモリ
内に複製される関数コードの状態を示す説明図である。
【図28】 図22に示すプログラムを実施の形態1お
よび2のプログラム実行システムが実行した場合の、高
速メモリ内に複製される関数コードの状態を示す説明図
である。
【図29】 実施の形態5によるプログラム実行システ
ムが実行するパージ処理の動作を示すフローチャートで
ある。
【図30】 実施の形態5によるプログラム実行システ
ムが実行するロック処理およびロック解除処理の動作を
示すフローチャートである。
【図31】 実施の形態5のプログラム実行システムが
実行するプログラムの例を示す説明図である。
【図32】 図31に示すプログラムを実施の形態5の
プログラム実行システムが実行した場合、および実施の
形態1、2のプログラム実行システムが実行した場合の
高速メモリ内に複製される関数コードの状態を示す説明
図である。
【図33】 実施の形態6によるプログラム実行システ
ムが実行する関数読出し手順の動作を示すフローチャー
トである。
【図34】 実施の形態6によるプログラム実行システ
ムが実行する複製作成判定処理を示すフローチャートで
ある。
【図35】 実施の形態6によるプログラム実行システ
ムが、図22に示すプログラムを実行した場合の高速メ
モリ内に複製される関数コードの状態を示す説明図であ
る。
【図36】 実施の形態7のプログラム実行システムが
実行する複製作成判定処理の動作を示すフローチャート
である。
【図37】 実施の形態7のプログラム実行システムが
実行するプログラム例である。
【図38】 実施の形態7のプログラム実行システムが
図38に示すプログラムを実行した場合の、高速メモリ
内に複製される関数コードの状態を示す説明図である。
【図39】 実施の形態1および2のプログラム実行シ
ステムが図38に示すプログラムを実行した場合に、高
速メモリ内に複製される関数コードの状態を示す説明図
である。
【図40】 従来のプログラム実行システムを示すブロ
ック図である。
【符号の説明】
1 CPU(制御手段,ヒット判定手段,メモリ割当て
手段,メモリ解放手段,コード複製手段,解放可否判定
手段,解放決定手段)、4 高速メモリ(第1記憶手
段)、5 通常のメモリ(第2記憶手段)。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 メモリ空間中に配置された固有のアドレ
    スを有し、アクセス速度の早い第1記憶手段と、前記メ
    モリ空間中に配置された固有のアドレスを有し、前記第
    1記憶手段と比較してアクセス速度の遅い第2記憶手段
    と、プログラムをデコードし、デコード結果を命令実行
    手段へ出力する制御手段とを備え、 前記制御手段は、前記プログラムの関数呼出し時に、関
    数コードの複製が第1記憶手段内に存在しているか否か
    を判定するヒット判定手段と、前記第1記憶手段内に、
    関数コードの複製を格納するための空きブロックを割当
    てるメモリ割当て手段と、前記第1記憶手段内に作成さ
    れたブロックを解放し、空きブロックを作成するメモリ
    解放手段と、前記第1記憶手段内に割当てられた前記空
    きブロック内に、前記関数コードを複製して再配置する
    コード複製手段と、前記第1記憶手段内に複製された関
    数コードが解放可能か否かを判定する解放可否判定手段
    と、前記解放可否判定手段により、解放可能と判定され
    た前記第1記憶手段内に複製されている関数コードのい
    ずれを解放するかを決定する解放決定手段とを有し、 前記制御手段は、前記プログラムの関数呼出し時に、前
    記関数コードの複製が既に前記第1記憶手段内に存在し
    ている場合、前記第1記憶手段内に複製されている関数
    コードを読出して実行し、また前記関数コードの複製が
    前記第1記憶手段内に存在しない場合、前記関数コード
    を前記第1記憶手段内に複製した後、前記命令実行手段
    で前記関数コードを実行するように制御し、前記第1記
    憶手段内で、解放可能な前記関数コードを解放し、新た
    に呼出される関数コードの複製を格納可能な空きブロッ
    クを確保する等のメモリ管理動作を実行することを特徴
    とするプログラム実行システム。
  2. 【請求項2】 制御手段は、第1記憶手段内に複製され
    ている関数コードの実行順序を記憶する手段をさらに備
    え、解放決定手段は、最も過去に実行された関数コード
    を複製しているブロックから順に解放して空きブロック
    を作成するように制御することを特徴とする請求項1記
    載のプログラム実行システム。
  3. 【請求項3】 制御手段は、第1記憶手段内に複製され
    た関数コードを移動し再配置する手段をさらに備え、メ
    モリ割当て手段により解放可能と判定された関数コード
    に関するブロックにおける一部のブロックを解放し、他
    のブロックを移動して、前記第1記憶手段内に分散する
    未使用領域を一箇所に集合させて新たな未使用のブロッ
    ク領域を生成するように制御することを特徴とする請求
    項1記載のプログラム実行システム。
  4. 【請求項4】 制御手段は、関数コード毎に対応させた
    ロックフラグに所定値を設定する手段をさらに備え、解
    放可否判定手段が、複製元である第2記憶手段内の関数
    コードに対応した前記ロックフラグを参照し、前記ロッ
    クフラグ内に前記所定値が設定されている場合、前記関
    数コードの複製を第1記憶手段内から解放しないように
    制御することを特徴とする請求項1記載のプログラム実
    行システム。
  5. 【請求項5】 制御手段は、プログラムの関数毎に設け
    られた複製フラグに所定値を設定し、および前記所定値
    を解除する手段をさらに備え、関数コードの呼出し時
    に、前記関数コードに対応する前記複製フラグの値を参
    照して、前記複製フラグに前記所定値が設定されている
    場合にのみ、前記関数コードを第1記憶手段内に複製し
    て実行するように制御することを特徴とする請求項1記
    載のプログラム実行システム。
  6. 【請求項6】 制御手段は、関数コードの呼出し回数を
    カウントする手段をさらに備え、呼出し回数が予め設定
    した所定回数以内の場合、プログラムを格納している第
    2記憶手段から読出した関数コードをそのまま実行し、
    呼出し回数が前記所定回数を越えた場合のみ、前記関数
    コードを前記第1記憶手段内に複製した後に実行するこ
    とを特徴とする請求項1記載のプログラム実行システ
    ム。
JP11158594A 1999-06-04 1999-06-04 プログラム実行システム Pending JP2000347936A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP11158594A JP2000347936A (ja) 1999-06-04 1999-06-04 プログラム実行システム
US09/440,933 US6279079B1 (en) 1999-06-04 1999-11-16 Program execution system with efficient code duplication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11158594A JP2000347936A (ja) 1999-06-04 1999-06-04 プログラム実行システム

Publications (1)

Publication Number Publication Date
JP2000347936A true JP2000347936A (ja) 2000-12-15

Family

ID=15675107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11158594A Pending JP2000347936A (ja) 1999-06-04 1999-06-04 プログラム実行システム

Country Status (2)

Country Link
US (1) US6279079B1 (ja)
JP (1) JP2000347936A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009077959A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 超音波画像診断装置およびその制御プログラム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3141836B2 (ja) * 1998-01-26 2001-03-07 日本電気株式会社 言語処理方法、言語処理装置及び言語処理プログラムを記録した記憶媒体
JP2002169696A (ja) 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
JP2002318696A (ja) * 2001-04-23 2002-10-31 Mitsubishi Electric Corp プログラム実行装置および方法
US8549487B2 (en) * 2008-10-29 2013-10-01 International Business Machines Corporation Automated identification of redundant method calls
US9892053B2 (en) * 2015-03-24 2018-02-13 Intel Corporation Compaction for memory hierarchies
US11334663B2 (en) * 2017-07-19 2022-05-17 International Business Machines Corporation Determining whether two programs are identical
US11847207B2 (en) * 2019-03-04 2023-12-19 Microsoft Technology Licensing, Llc Security-adaptive code execution

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0795307B2 (ja) 1989-12-04 1995-10-11 日本電気株式会社 キャッシュメモリ制御回路
JPH04205535A (ja) 1990-11-30 1992-07-27 Fujitsu Ltd コピーオンライト方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009077959A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 超音波画像診断装置およびその制御プログラム

Also Published As

Publication number Publication date
US6279079B1 (en) 2001-08-21

Similar Documents

Publication Publication Date Title
KR100289628B1 (ko) 멀티태스킹 기능의 정보처리시스템을 위한 자원관리방법및 그 장치
JP5894496B2 (ja) 半導体装置
JPH10232785A (ja) 不連続な実行時スタックを動的にサイジングするための方法及び装置
JP2004295882A (ja) マルチスレッド・コンピュータにおけるコンピュータ・データの割振り解除
GB2248327A (en) Fixed protection key for real storage memory
JPH11505653A (ja) 単一アドレス空間で保護ドメインと共に用いるためのオペレーティングシステム
US6473842B1 (en) Virtual memory managing system for managing swap-outs by page units and a batch swap-out by task units
JP2002342163A (ja) マルチスレッドプロセッサ用キャッシュ制御方式
JP2003167737A (ja) スタック使用方法
US20050256913A1 (en) System and method for regeneration of methods and garbage collection of unused methods
JP2000347936A (ja) プログラム実行システム
US5179685A (en) Information processing apparatus
US5678024A (en) Method and system for dynamic performance resource management within a computer based system
EP0730237A1 (en) Multi-processor system with virtually addressable communication registers and controlling method thereof
JP3991443B2 (ja) タスク切り替え方法及びデータ処理装置
JP2006079338A (ja) プログラムセクションレイアウト方法およびレイアウト処理プログラム
JP3019317B2 (ja) プロセススケジューリング方法
JP2004110240A (ja) キャッシュメモリ装置
US5684995A (en) Segment division management system
JP2005071141A (ja) スタック管理方法及び装置並びにスタック管理プログラム
JPH06110759A (ja) ファイルシステム
JP2007265143A (ja) 情報処理方法、情報処理システム、情報処理装置、マルチプロセッサ、情報処理プログラム及び情報処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP2003167747A (ja) モジュール実行方式及びモジュール実行方法
JP2020123263A (ja) 情報処理装置、情報処理方法、プログラム
JP2000163309A (ja) メモリ管理方法およびメモリ管理装置、並びに記録媒体

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees