JPH04188326A - スタック領域管理方式 - Google Patents

スタック領域管理方式

Info

Publication number
JPH04188326A
JPH04188326A JP2318860A JP31886090A JPH04188326A JP H04188326 A JPH04188326 A JP H04188326A JP 2318860 A JP2318860 A JP 2318860A JP 31886090 A JP31886090 A JP 31886090A JP H04188326 A JPH04188326 A JP H04188326A
Authority
JP
Japan
Prior art keywords
stack area
cache
routine
area
stack
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
JP2318860A
Other languages
English (en)
Inventor
Masaaki Tamaru
田丸 雅紹
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2318860A priority Critical patent/JPH04188326A/ja
Publication of JPH04188326A publication Critical patent/JPH04188326A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は電子計算機システムにおけるスタック領域管理
方式に関するものである。
〔従来の技術〕
プログラムの実行において、あるルーチンで他のルーチ
ンをコールする場合、それまで動作していたルーチンは
一時停止し、他のルーチンに制御が移るので、元のルー
チンのレジスタ等の状態を退避しておく必要があり、他
のルーチンからリターンした場合にはその退避した情報
に基づいて回復を行うことになる。また、ルーチン間で
引数の受け渡しを行うための領域や、ルーチン内で使用
するローカル変数のための領域も必要となる。
このようなルーチンのコール、リターンに伴つレジスタ
の退避・回復、引数の受け渡しおよびローカル変数のア
クセスは、従来より、主記憶装置上のスタック領域を用
いて行われている。なお、スタック領域とは、順次に積
み重ねるように書き込みを行い、読め込みは新しい方か
ら行うようにした記憶領域であり、最新のスタック領域
の位置(ベースアドレス)はスタックポインタによって
示されるようになっている。
一方、主記憶装置へのアクセスの高速化を図るためにキ
ャッシュを用いることは周知であるが、」二記のスタッ
ク領域も主記憶装置上の領域であるため、一般のデータ
と同様にキャッシュによって高速化を図ることができ、
そのようにしたものもある。
〔発明が解決しようとする課題] 上述したように、従来の電子計算機システムにおいては
、ルーチンのコール、リターンに際して、レジスタの退
避、引数の受け渡しおよびローカル変数のアクセスのた
めにスタック領域に度々アクセスをすることになり、キ
ャンシュを使用した場合にはある程度の高速化を図るこ
とができたが、一般のデータと同様にキャンシュの制御
が行われるため、主記憶装置への無用な書き戻しが行わ
れ、CPU(中央処理装置)と主記憶装置との間のデー
タ転送の回数が多くなり、高速化を妨げるという欠点が
あった。すなわち、−Cのデータについては、キャッシ
ュに新たにデータを格納するために既に格納されている
テークを追い出す場合、主記憶装置に書き戻す処理を行
う必要があるが、スタック領域はリターンした後は再度
参照されることがないという特殊性があり、リターン後
の書き戻し処理は無意味な処理となるからである。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、CPUと主記憶装置との間のデータ
転送の回数を減らし、処理の高速化を図ることのできる
スタック領域管理方式を提供することにある。
[課題を解決するだめの手段] 本発明は上記の目的を達成するため、ルーチンのコール
、リターンに伴うレジスタの退避・回復、引数の受け渡
しおよびローカル変数のアクセスを主記憶装置上のスタ
ック領域を用いて行う電子計算機システムにおいて、 スタック領域内のデータを一時的に記憶し、高速にアク
セス可能なスタック領域専用キャッシュと、 ルーチンからリターンした後に不要になったスタック領
域に対応するスタック領域専用キャッシュの該当エント
リを無効にするキャッシュ制御手段とを備えるようにし
ている。
〔作用〕
本発明のスクンク領域管理方弐にあっては、ルーチンの
コール、リターンに伴うレジスタの退避・回復、引数の
受け渡しおよびローカル変数のアクセスを主記憶装置上
のスタック領域を用いて行うに際し、スタック領域専用
キャッシュがスタック領域内のデータを一時的に記憶し
、ルーチンからリターンした後に不要になったスタック
領域に対応するスタック領域専用キャンシュの該当エン
トリをキャッシュ制御手段が無効にする。
〔実施例] 以下、本発明の実施例δこっき図面を参照して説明する
第1図は本発明のスタック領域管理方式の一実施例を示
す構成閲である。
第1図において、本実施例は、大きく分けて、CPUI
と、主記憶装置2とから構成されている。
CPUIには、スタックポインタ11とスタック領域ア
クセス手段12とアドレス生成手段]3と主記憶装置ア
クセス手段14とキャッシュ制御手段15とスタック領
域専用キャッシュ16と命令実行手段17とが設けられ
、主記憶装置2には引数域211.レジスタ退避域21
2.ローカル変数域213を含むスタック領域21とプ
ログラム領域22とが設けられζいる。なお、各部の機
能等については、重複を避けるため、以下の動作を通し
て説明することとする。
以下、上記の実施例の動作を場合を分けて説明する。
(1)ルーチンをコールする際の処理 この場合の処理は第2図に示すような手順で行われる。
プログラム領域22のあるルーチンにおいて他のルーチ
ンをコールする際、コールする例のルーチンは命令実行
手段17に対してスタック領域21へのアクセスを要求
し、ローカル変数域213(コールする側のルーチンは
、コールを行う前においては、自己のルーチン内で使用
するローカル変数をこのローカル変数域213に割り当
ててアクセスしていた。)の次の番地から始まる領域を
、コールするルーチンの引数域として引数を設定する(
ステップSl)。
ここで、スタック領域21に対してデータ(引数)を書
き込む処理は第5図のような手順で行われる。すなわち
、命令実行手段17がスタック領域アクセス手段12に
書き込み要求を出すと(ステップ515)、スタック領
域アクセス手段12はキャッシュ制御手段15に空きエ
ントリの有無を問い合わせ、キャッシュ制御手段15は
スタック領域専用キャッシュ16に空きエントリがある
か否かを判断する(ステップ516)。空きエントリが
ある場合にはスタック領域専用キャッシュ16にデータ
を書き込み(ステップ31B)、処理を終了する。また
、空きエントリがない場合には、スタック領域専用キャ
ッシュ16内で最もアクセスの可能性の低いデータを主
記憶装置アクセス手段14を介して主記憶装置2のスタ
ック領域21に書き出して空きエントリを作り(ステッ
プ517)、スタック領域専用キャッシュ16にデータ
を書き込んで(ステップ518)、処理を終了する。
第2図に戻り、引数の設定の後、ステップS1で確保し
た引数域の次を新たなレジスタ退避域とし、そこにスタ
ックポインタ11の値およびリターン時に必要な情報を
退避し、スタックポインタ11の値をその新たなレジス
タ退避域の次の番地を示すように更新する(ステップS
2)。なお、本処理はコールの一環として行われる。ま
た、スタック領域21のレジスタ退避域へのデータの書
き込みは前述した第5図と同しである。
次いで、他のルーチンをコールする(ステップS3)。
コールされた他のルーチンは、コールした側のルーチン
内で使用するレジスタをステップS2で確保したレジス
タ退避域に退避する(ステップS4)。なお、コールさ
れた側のルーチンがコールした側のルーチンのレジスタ
の退避を行うのは、退避すべきレジスタを最小限に留め
るためであり、コールされたルーチンが使用することに
より内容が破壊されるレジスタのみを退避の対象とする
ことで無駄が省ける。また、スタック領域21のレジス
タ退避域へのデータの書き込みは前述した第5図と同じ
である。
以上の処理で他のルーチンのコールが完了し、コールさ
れたルーチンの処理が行われる。そして、そのルーチン
の処理において、自己のルーチン内で使用するローカル
変数はステップS2で確保したレジスタ退避域に続くロ
ーカル変数域に割り当てて使用する。
なお、上述のようにしてコールされたルーチンにおいて
更に他のルーチンをコールすることも当然に可能であっ
て、処理は同しであり、スタック領域21に引数域、レ
ジスタ退避域、ローカル変数域が順次に積み重ねられて
行く(第1図では下方向に領域が確保されて行く。)。
(2)ルーチンからリターンする際の処理この場合の処
理は第3図に示すような手順で行われる。
プログラム領域22のあるルーチンから自己をコールし
た元のルーチンにリターンする際、リターンする側のル
ーチンは、そのルーチンのコール時に退避したレジスタ
の値をスタック領域21のレジスタ退避域から回復する
(ステップS5)。
ここで、スタック領域21から回復のためにデータを読
み込む処理は第4図のような手順で行われる。すなわち
、命令実行手段17がスタック領域アクセス手段12に
読み込み要求を出すと(ステップS9)、スタック領域
アクセス手段12はキャッシュ制御手段15に要求され
たデータがスタック領域専用キャッシュ16内にあるか
否かを問い合わせ、キャッシュ制御手段15はスタック
領域専用キャッシュ16に要求されたデータがあるか否
かを判断する(ステップ5IO)。データがある場合に
はスタック領域専用キヤ、シュ16からデータを取り出
して命令実行手段17に転送しくステップ514)、処
理を終了する。また、データがない場合には、キャッシ
ュ制御手段15はスタック領域専用キャッシュ16Lこ
空きエントリがあるか否かを判断しくステップ311)
、、空きエントリがある場合には、要求されたデータを
主起t=装置2のスタック領域21からスフツク領域専
用キャッシュ16にデータを読み込み(ステップ513
)、このスタン)!領域専用キャッシュ16からデータ
を取り出して命令実行手段17に転送しくステップ51
4)、処理を終了する。なお、主記憶装置2のスフツク
領域21からデータを読め込む際の主記憶装置2上のア
ドレスは、スタックポインタ11の値を基にアドレス生
成手段13が生成する。一方、空きエントリがない場合
には、スタック領域専用キャッシュトG内で最もアクセ
スの可能性の低いデータを主記憶装置アクセス手段14
を介して主記憶装置2のスタック領域21に書き出して
空きエントリを作り(ステップ512)、要求されたデ
ータを主記憶装置2のスフツク領域21からスフ、り領
域専用キャッシュ16にデータを読み込み(ステップ5
13)、このスタック領域専用キャッシュ16からデー
タを取り出しで命令実行手段】7に転送しくステップS
 1.4 ) ”処理を終了する。
第3図に戻り、レジスフの値の退避の後、コール時に退
避した情報を利用して他のルーチンからリターンする(
ステップS6)。なお、この情報は第2図のステップS
2において退避した情報であるが、スフツクポインタ1
1の値は以後の処理で使用するため、スフツクポインタ
11の回復はこの時点では行わない。また、スタック領
域21のレジスタ退避域からのデータの読み込みは前述
した第4図と同じである。
次いで、リターン後のルーチンは、リターンにより不要
になったスフツク領域21に対応するスタック領域専用
キャッシュ16の該当エントリを無効にする(ステップ
S7)。
スフ・ンク領域専用キャッシュ16の該当エントリの無
効の処理は第6図のような手順で行われる。
すなわち、命令実行手段17がクリアする境のアドレス
を伴ってクリア要求をキャッシュ制御手段]5に対して
出すと(ステップ519)、キャッシュ制御手段15は
スタック領域専用キャッシュ16内の該当エントリを無
効にする(ステップ520)。
次いで、第3図に戻り、スタックポインタ11の値を回
復しくステップS8)、処理を終了する。
〔発明の効果] 以上説明したように、本発明のスタック領域管理方式に
あっては、スタック領域専用キャンシュのデータの主記
憶装置への無用な書き戻しを行わないため、CPUと主
記憶装置との間のデータ転送の回数を減らずことができ
、処理時間の短縮により一層の高速化を図ることができ
るという効果がある。
【図面の簡単な説明】
第1図は本発明のスフツク領域管理方式の一実施例を示
す構成図、 第2図はルーチンをコールする処理のフローチャート、 第3図はルーチンからリターンする処理のフローチャー
ト、 第4図はスタック領域からデータを読み込む処理のフロ
ーチャ=1・、 第5図はスタック領域にデータを書き込む処理のフロー
チャートおよび、 第6図はスタック領域専用キャンシュの一部をクリアす
る処理のフローチャートである。 図において、 1・・・・・・・・・CPU 11・・・・・・スタックポインタ 12・・・・・スタック領域アクセス手段13・・・・
・・アドレス生成手段 14・・・・・・主記憶装置アクセス手段15・・・・
・・キャッシュ制御手段 16・・・・・・スタック領域専用キャッシュ17・・
・・・・命令実行手段 2・・・・・・・・・主記憶装置 2I・・・・・・スタンク領域 211・・・引数域 212・・・レジスタ退避域 213・・・ローカル変数域 22・・・・・・プログラム領域

Claims (2)

    【特許請求の範囲】
  1. (1)ルーチンのコール、リターンに伴うレジスタの退
    避・回復、引数の受け渡しおよびローカル変数のアクセ
    スを主記憶装置上のスタック領域を用いて行う電子計算
    機システムにおいて、 スタック領域内のデータを一時的に記憶し、高速にアク
    セス可能なスタック領域専用キャッシュと、 ルーチンからリターンした後に不要になったスタック領
    域に対応するスタック領域専用キャッシュの該当エント
    リを無効にするキャッシュ制御手段とを備えたことを特
    徴とするスタック領域管理方式。
  2. (2)プログラム領域のプログラムの命令に基づいて動
    作する命令実行手段によりスタック領域専用キャッシュ
    への記憶およびキャッシュ制御手段の制御を行うことを
    特徴とする請求項1記載のスタック領域管理方式。
JP2318860A 1990-11-22 1990-11-22 スタック領域管理方式 Pending JPH04188326A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2318860A JPH04188326A (ja) 1990-11-22 1990-11-22 スタック領域管理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2318860A JPH04188326A (ja) 1990-11-22 1990-11-22 スタック領域管理方式

Publications (1)

Publication Number Publication Date
JPH04188326A true JPH04188326A (ja) 1992-07-06

Family

ID=18103765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2318860A Pending JPH04188326A (ja) 1990-11-22 1990-11-22 スタック領域管理方式

Country Status (1)

Country Link
JP (1) JPH04188326A (ja)

Similar Documents

Publication Publication Date Title
KR100233205B1 (ko) 체크 포인트 처리 가속 장치
JP3289661B2 (ja) キャッシュメモリシステム
US6711650B1 (en) Method and apparatus for accelerating input/output processing using cache injections
EP0766179A2 (en) Information handling system including non-disruptive command and data movement between storage and one or more auxiliary processors
JPH02141845A (ja) マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法
EP0777183A1 (en) Computer cache system
KR101858597B1 (ko) 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템
GB2271653A (en) Multi-level cache system
JP2004206424A (ja) データ処理装置及びデータ処理装置におけるデータ転送方法
JPH04188326A (ja) スタック領域管理方式
JPH0354649A (ja) バッファ記憶制御方式
JPS6032220B2 (ja) 情報処理装置
JPH02189658A (ja) キャッシュメモリ
JP3378270B2 (ja) マルチプロセッサシステム
JPH10507550A (ja) メモリ・データを処理する方法と装置及びこの装置を含む通信装置
JPH01251248A (ja) スタックデータ構造用キャッシュ制御方式
JPH0447350A (ja) 主記憶読み出し応答制御方式
US7840757B2 (en) Method and apparatus for providing high speed memory for a processing unit
JPH0728701A (ja) 計算機システム
JPH04291642A (ja) キャッシュ制御方式
JPH04264641A (ja) キャッシュメモリ方式
JPS62197843A (ja) フアイルアクセス方式
JPH0526216B2 (ja)
JPH04251351A (ja) 磁気ディスクキャッシュ制御方式
JPS63153653A (ja) バツフアメモリ制御方式