JPH0199130A - コンピュータのスタック制御装置 - Google Patents
コンピュータのスタック制御装置Info
- Publication number
- JPH0199130A JPH0199130A JP63195917A JP19591788A JPH0199130A JP H0199130 A JPH0199130 A JP H0199130A JP 63195917 A JP63195917 A JP 63195917A JP 19591788 A JP19591788 A JP 19591788A JP H0199130 A JPH0199130 A JP H0199130A
- Authority
- JP
- Japan
- Prior art keywords
- stack
- register
- registers
- memory
- address
- 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
- 230000003247 decreasing effect Effects 0.000 claims abstract description 5
- 230000015654 memory Effects 0.000 claims description 86
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 25
- 210000003127 knee Anatomy 0.000 description 19
- 230000008901 benefit Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000002269 spontaneous effect Effects 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/78—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
- G06F7/785—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Exchange Systems With Centralized Control (AREA)
- Control Of The Air-Fuel Ratio Of Carburetors (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
産業上の利用分野
本発明はコンピュータに関し、特にデータスタックの制
御に関する。
御に関する。
従来の技術及び発明が解決しようとする問題点スタック
は新しいデータがその一端に追加又は削除されるデータ
構造である。ブロック志向高級プログラム言語(PLl
、PASCAL、MO−DULA−2及びADA)では
スタック(ランタイムスタックと称する)を使ってサブ
ルーチンの呼出しくコール)の際のパラメータの受渡し
、及び呼出しに後続する呼出されたサブルーチン中の新
しい世代の局所変数の形成がなされる。この新たなスタ
ックの世代はアクチベーションレコード又はスタックフ
レームと称する。受渡されたパラメータは新たなスタッ
ク世代中で局所変数としてフレームポインタFPを基準
にアドレスできる。
は新しいデータがその一端に追加又は削除されるデータ
構造である。ブロック志向高級プログラム言語(PLl
、PASCAL、MO−DULA−2及びADA)では
スタック(ランタイムスタックと称する)を使ってサブ
ルーチンの呼出しくコール)の際のパラメータの受渡し
、及び呼出しに後続する呼出されたサブルーチン中の新
しい世代の局所変数の形成がなされる。この新たなスタ
ックの世代はアクチベーションレコード又はスタックフ
レームと称する。受渡されたパラメータは新たなスタッ
ク世代中で局所変数としてフレームポインタFPを基準
にアドレスできる。
このために前の命令カウンタPC,前のフレームポイン
タFC,及び状態レジスタSRの内容がスタックポイン
タSPで指定されるアドレスに記憶される(その際SP
は増加する)。
タFC,及び状態レジスタSRの内容がスタックポイン
タSPで指定されるアドレスに記憶される(その際SP
は増加する)。
スタックポインタSPはスタックフレームの終りを指示
する。このスタックポインタは新たに起動されたスタッ
クフレームにより(フレーム命令を介して)そのスタッ
クフレームで必要な局所変数の数だけ増加させることが
できる。必要に応じてフレームポインタFPは引継いだ
パラメータの最初の点にまで減少させられることもある
。
する。このスタックポインタは新たに起動されたスタッ
クフレームにより(フレーム命令を介して)そのスタッ
クフレームで必要な局所変数の数だけ増加させることが
できる。必要に応じてフレームポインタFPは引継いだ
パラメータの最初の点にまで減少させられることもある
。
次いで前の状態への復帰(リターン)が(リターン命令
を介して)なされる。これらの過程の典型的な例を第1
a図〜第1d図に示した。その際、全体のスタックはメ
モリ中に保持される・。
を介して)なされる。これらの過程の典型的な例を第1
a図〜第1d図に示した。その際、全体のスタックはメ
モリ中に保持される・。
かかる過程は、
1)パラメータをスタック上に記憶させるのに呼出し側
ブOグラムが必要でありまたパラメータをスタックから
元に復元するのに呼出されたサブルーチンを必要とし、
メモリの読み書きのためのトラヒックが倍増してしまう
; 2)通常、呼出し側のレジスタの多くがスタック上に呼
出側プログラムによりあるいは呼出されたサブルーチン
によりセーブされると同時に後で元の状態に復元される
必要があるため、これに伴うメモリトラヒックが時間の
無駄になる等の問題点を有する。
ブOグラムが必要でありまたパラメータをスタックから
元に復元するのに呼出されたサブルーチンを必要とし、
メモリの読み書きのためのトラヒックが倍増してしまう
; 2)通常、呼出し側のレジスタの多くがスタック上に呼
出側プログラムによりあるいは呼出されたサブルーチン
によりセーブされると同時に後で元の状態に復元される
必要があるため、これに伴うメモリトラヒックが時間の
無駄になる等の問題点を有する。
あるいは上記方法のかわりに以下の過程が単独で又は組
合わされて使われることもあるがその場合でも上記と同
じ問題点が生じる。
合わされて使われることもあるがその場合でも上記と同
じ問題点が生じる。
1) スタックを降順方向にアドレスする。
2)内部サブルーチンを呼ぶ際には状態レジスタSRは
記憶(セーブ)されない。
記憶(セーブ)されない。
3) フレームポインタFPは減少せず、そのかわり引
渡されたパラメータをFPに対して負方向へずらすこと
によりアドレスする。
渡されたパラメータをFPに対して負方向へずらすこと
によりアドレスする。
4)SR,PC及びFPの内容はセーブされ、任意のシ
ーケンスに従って復元される。
ーケンスに従って復元される。
5)スタックポインタSPは最初の不使用アドレスでは
なく最も後の有効値を指示する。
なく最も後の有効値を指示する。
6)局部変数及び渡されたパラメータはFPを基準にア
ドレスされるのではなくSPを基準にアドレスされる。
ドレスされるのではなくSPを基準にアドレスされる。
この、場合FPは全く不要である。しかし、この方法は
SPの変更(−時的な結果の記憶のための)により相対
的にアドレスが変化してしまう問題点を有する。
SPの変更(−時的な結果の記憶のための)により相対
的にアドレスが変化してしまう問題点を有する。
7)スタックポインタSPは呼出されたサブルーチン中
のフレーム命令により新しい値に設定されるのではなく
サブルーチン自体をコールすることによりコールされた
サブルーチンで必要とされている値に設定される。この
方法は呼出し側ルーチンにおいては呼出されたルーチン
のためのスタックフレームの長さを逐次的に調整しなけ
ればならないため、あ゛らかしめコンパイルされたサブ
ルーチンを再コンパイルすることなく呼出側ルーチンに
リンクすることができない大きな問題点を有している。
のフレーム命令により新しい値に設定されるのではなく
サブルーチン自体をコールすることによりコールされた
サブルーチンで必要とされている値に設定される。この
方法は呼出し側ルーチンにおいては呼出されたルーチン
のためのスタックフレームの長さを逐次的に調整しなけ
ればならないため、あ゛らかしめコンパイルされたサブ
ルーチンを再コンパイルすることなく呼出側ルーチンに
リンクすることができない大きな問題点を有している。
以下の方法もまた従来の技術であり、「メモリ内スタッ
ク」の問題点を回避するものである。
ク」の問題点を回避するものである。
1)全スタックをCPLJ中のレジスタのII(例えば
チップ上の)の形に形成する。しかし、この方法はスタ
ックの最大サイズが使用できるレジスタの数で制限され
てしまうため使われることはほとんどない。また複数タ
スク環境では複数のスタックが必要であるが、これらの
スタックはメモリへ移す(変換する)か別のレジスタ組
中に保持するかしなければならない。
チップ上の)の形に形成する。しかし、この方法はスタ
ックの最大サイズが使用できるレジスタの数で制限され
てしまうため使われることはほとんどない。また複数タ
スク環境では複数のスタックが必要であるが、これらの
スタックはメモリへ移す(変換する)か別のレジスタ組
中に保持するかしなければならない。
2) スタックをメモリ部及びレジスタ部に分割する。
この場合、スタックの頂部、すなわち新しい又は最新の
スタックフレームのみがレジスタ中にて保持される一方
、古いスタックフレームはスタックのメモリ部中に保持
される。新しいスタックフレームを形成する際にレジス
タ組中に十分なスペースがなかった場合、一番古いレジ
スタスタックフレームのレジスタ内容がスタックのメモ
リ部中に記憶される。これにより記憶されたレジスタの
数は新たなスタックフレームについて余計に必要になっ
たレジスタの数に少くとも等しくなる。
スタックフレームのみがレジスタ中にて保持される一方
、古いスタックフレームはスタックのメモリ部中に保持
される。新しいスタックフレームを形成する際にレジス
タ組中に十分なスペースがなかった場合、一番古いレジ
スタスタックフレームのレジスタ内容がスタックのメモ
リ部中に記憶される。これにより記憶されたレジスタの
数は新たなスタックフレームについて余計に必要になっ
たレジスタの数に少くとも等しくなる。
記憶されるレジスタのメモリアドレス(スタックのメモ
リ部のit位の空いたアドレス)はメモリポイントMP
中に保持される。MPはそのレジスタが記憶されると増
加させられる。
リ部のit位の空いたアドレス)はメモリポイントMP
中に保持される。MPはそのレジスタが記憶されると増
加させられる。
この方法は実質的には第1a図〜第1d図に示した標準
的な方法の実行と同じであるが以下の問題点を有する: メモリワードの語長(例えば32ビット)を有する3つ
のワード(SR,PC及びFP)を呼出し命令により戻
り情報としてスタックレジスタ中に記憶させ、またリタ
ーン命令により対応する特殊なレジスタ(SR,PC,
FP)中に復元する必要がある。費用の問題により(単
一のALUを使う)通常1サイクル当り1ワードしか転
送できず、このため3サイクルが必要になる。
的な方法の実行と同じであるが以下の問題点を有する: メモリワードの語長(例えば32ビット)を有する3つ
のワード(SR,PC及びFP)を呼出し命令により戻
り情報としてスタックレジスタ中に記憶させ、またリタ
ーン命令により対応する特殊なレジスタ(SR,PC,
FP)中に復元する必要がある。費用の問題により(単
一のALUを使う)通常1サイクル当り1ワードしか転
送できず、このため3サイクルが必要になる。
この場合、変形例6)でFPを省略することはできなく
なる。これはFPが、リターン命令が与えられた場合ス
タックのレジスタ部のアンダー70−をチェックするの
に必要なためである。
なる。これはFPが、リターン命令が与えられた場合ス
タックのレジスタ部のアンダー70−をチェックするの
に必要なためである。
この方法では別のハードウェアにより制御されるスタッ
クポインタが必要であるが、最も新しい(FPに対して
)スタックフレームはレジスタと同様にアドレスされ扱
うことができる。レジスターレジスタアーキテクチュア
では中間結果(括弧計算やループ)の計算のためのスタ
ックは必要ない。これは中間結果がスタックの頂部に記
憶されるのでなく明確に指定された(コンパイル時に)
レジスタ中に記憶されるためである。
クポインタが必要であるが、最も新しい(FPに対して
)スタックフレームはレジスタと同様にアドレスされ扱
うことができる。レジスターレジスタアーキテクチュア
では中間結果(括弧計算やループ)の計算のためのスタ
ックは必要ない。これは中間結果がスタックの頂部に記
憶されるのでなく明確に指定された(コンパイル時に)
レジスタ中に記憶されるためである。
3)別の方法ではスタックは(方法2と同様に)メモリ
とレジスタ部とに分割されるが単一のスタックフレーム
は固定された長さを有している。すなわち、受渡しされ
るパラメータ及び変数の数は固定されていて実際に必要
な数と昼無関係である。
とレジスタ部とに分割されるが単一のスタックフレーム
は固定された長さを有している。すなわち、受渡しされ
るパラメータ及び変数の数は固定されていて実際に必要
な数と昼無関係である。
このため制御は容易でフレームポインタは単に増加する
か(呼出時)又は単に減少するか(戻り時)で、記憶さ
れる必要がない。スタックポインタSPも不要で省略で
きる。
か(呼出時)又は単に減少するか(戻り時)で、記憶さ
れる必要がない。スタックポインタSPも不要で省略で
きる。
このニレガントかつ簡素な方法の問題点は員重なレジス
タリソースが無駄になることである。場合によっては使
用可能なレジスタの数が実際に必要な数より多かったり
少なかったりする。平均すると50%のレジスタが使用
されないままである。
タリソースが無駄になることである。場合によっては使
用可能なレジスタの数が実際に必要な数より多かったり
少なかったりする。平均すると50%のレジスタが使用
されないままである。
この方法は文献上では頻繁に論じられるが実際に使われ
ることはほとんどない。方法2)及び3)は相互に排他
的であるように見えるが、本発明は方法2の利点−スタ
ックフレームが可変長−と方法3の利点−簡素さとスタ
ックポインタの省略−とを問題点を受けつぐことなく結
合する方法を開示する。
ることはほとんどない。方法2)及び3)は相互に排他
的であるように見えるが、本発明は方法2の利点−スタ
ックフレームが可変長−と方法3の利点−簡素さとスタ
ックポインタの省略−とを問題点を受けつぐことなく結
合する方法を開示する。
問題点を解決するための手段
本発明は一部がランタイムスタック(以下スタックと称
する)として使われる一又は複数のメモリを備えた特に
マイクロプロセッサ構成を有するコンピュータのスタッ
ク制御装置であって、該スタックはさらにレジスタ部と
メモリ部とに分割され、スタックの最上部はレジスタの
組の形に形成され、後の世代のあるいは最も後の世代の
スタックがこのレジスタ組中に保持され、メモリ中に押
込まれる第1のレジスタのメモリアドレス−すなわちメ
モリ中のスタックの最上部の空いたアドレス空間−は、
スタックレジスタの押込みの際に値を増加され又は引出
しの際にその値を減少させられる(あるいは逆も可能な
)メモリポインタMP中に保持され、コンビl−夕の最
後の状態が状態レジスタSR中に保持され、復帰アドレ
スを有するプログラムカウンタPC中の先の状態がサブ
プログラム呼出しの際スタックのレジスタ部中にセーブ
され、 スタックのレジスタ部中のスタック世代の最初のレジス
タアドレスをアドレスする世代(フレーム)ポインタF
Pがサブプログラム呼出しの際にセーブされ、サブプロ
グラム呼出しの前に有効であった世代ポインタは状態レ
ジスタSRの一部をなし同じサイクル中の呼出命令に際
しても状態レジスタSRと共にセーブされて同じ有効状
態を保ち、サブプログラムから戻る際は世代ポインタF
Pは状態ワードの一部として状態レジスタSRへ戻され
ることを特徴とする装置を提供する。
する)として使われる一又は複数のメモリを備えた特に
マイクロプロセッサ構成を有するコンピュータのスタッ
ク制御装置であって、該スタックはさらにレジスタ部と
メモリ部とに分割され、スタックの最上部はレジスタの
組の形に形成され、後の世代のあるいは最も後の世代の
スタックがこのレジスタ組中に保持され、メモリ中に押
込まれる第1のレジスタのメモリアドレス−すなわちメ
モリ中のスタックの最上部の空いたアドレス空間−は、
スタックレジスタの押込みの際に値を増加され又は引出
しの際にその値を減少させられる(あるいは逆も可能な
)メモリポインタMP中に保持され、コンビl−夕の最
後の状態が状態レジスタSR中に保持され、復帰アドレ
スを有するプログラムカウンタPC中の先の状態がサブ
プログラム呼出しの際スタックのレジスタ部中にセーブ
され、 スタックのレジスタ部中のスタック世代の最初のレジス
タアドレスをアドレスする世代(フレーム)ポインタF
Pがサブプログラム呼出しの際にセーブされ、サブプロ
グラム呼出しの前に有効であった世代ポインタは状態レ
ジスタSRの一部をなし同じサイクル中の呼出命令に際
しても状態レジスタSRと共にセーブされて同じ有効状
態を保ち、サブプログラムから戻る際は世代ポインタF
Pは状態ワードの一部として状態レジスタSRへ戻され
ることを特徴とする装置を提供する。
本発明はまた、一部がフンタイムスタック(以下スタッ
クと称する)として使われる一又は複数のメモリを備え
た特にマイクロプロセッサ構成のコンピュータのスタッ
ク制御装置であって、該スタックはさらにレジスタ部と
メモリ部とに分割され、スタックの最上部はレジスタの
組の形に形成され、後の世代のあるいは最も後の世代の
スタックがこのレジスタ組中に保持され、メモリ中に押
込まれる第1のレジスタのメモリアドレス−すなわちメ
モリ中のスタックの最上部の空いたアドレス空間−は、
スタックレジスタの押込みの際に値を増加され引出しの
際にその値を減少させられる(あるいは逆も可能な)メ
モリポインタMP中に保持され、コンピュータの最後の
状態が状態レジスタSR中に保持され、復帰アドレスを
有するプログラムカウンタPC中の先の状態がサブプロ
グラム呼出しの際スタックのレジスタ部中にセーブされ
、サブプログラムの呼出しがなされる場合、後続される
新しいスタック世代の長さは後のスタック世代の最大長
ではなくて実際の現在長に等しくされ、これによりスタ
ックポインタが省略されることを特徴とする装置を提供
する。
クと称する)として使われる一又は複数のメモリを備え
た特にマイクロプロセッサ構成のコンピュータのスタッ
ク制御装置であって、該スタックはさらにレジスタ部と
メモリ部とに分割され、スタックの最上部はレジスタの
組の形に形成され、後の世代のあるいは最も後の世代の
スタックがこのレジスタ組中に保持され、メモリ中に押
込まれる第1のレジスタのメモリアドレス−すなわちメ
モリ中のスタックの最上部の空いたアドレス空間−は、
スタックレジスタの押込みの際に値を増加され引出しの
際にその値を減少させられる(あるいは逆も可能な)メ
モリポインタMP中に保持され、コンピュータの最後の
状態が状態レジスタSR中に保持され、復帰アドレスを
有するプログラムカウンタPC中の先の状態がサブプロ
グラム呼出しの際スタックのレジスタ部中にセーブされ
、サブプログラムの呼出しがなされる場合、後続される
新しいスタック世代の長さは後のスタック世代の最大長
ではなくて実際の現在長に等しくされ、これによりスタ
ックポインタが省略されることを特徴とする装置を提供
する。
作用
本発明は以下の特徴を有する。
a)FPをMPと比較する計算モードにおいて、FPは
スタックのレジスタ部中のレジスタの数の2倍の範囲の
整数をあられしさえすればよい。例えばレジスタの数が
64である場合、FPはO〜127の間の整数をあられ
しさえすればよく、この範囲の整数は7ビットの2進数
であられせる。
スタックのレジスタ部中のレジスタの数の2倍の範囲の
整数をあられしさえすればよい。例えばレジスタの数が
64である場合、FPはO〜127の間の整数をあられ
しさえすればよく、この範囲の整数は7ビットの2進数
であられせる。
FPの長さが7ビットに減少する結果、以下の利点が得
られる。FP自体が状態レジスタSRの一部を構成し得
る。その結果、FPはSRと共に呼出し命令により記憶
できまたSRと共にリターン命令により復元することが
できるようになる。
られる。FP自体が状態レジスタSRの一部を構成し得
る。その結果、FPはSRと共に呼出し命令により記憶
できまたSRと共にリターン命令により復元することが
できるようになる。
すなわち、方法2)と比較すると1サイクル及びFPの
セーブ用のレジスタ全部(SRはFPを含む)が省略で
きる。これにより制御が簡単になると同時にユーザプロ
グラムのために1スタック当り1つ余分にレジスタが使
用可能になる。これはスタックフレーム中の制御される
レジスタの33%の節約になる。FPを短くすることの
別の利点は、FPの増加(呼出命令の際の)又はFPの
減少(復帰命令の際の)に既存のレジスタアドレス計算
ユニットを自在に使える一方、32ビットのALtJを
並列に作動させることができる点にある。
セーブ用のレジスタ全部(SRはFPを含む)が省略で
きる。これにより制御が簡単になると同時にユーザプロ
グラムのために1スタック当り1つ余分にレジスタが使
用可能になる。これはスタックフレーム中の制御される
レジスタの33%の節約になる。FPを短くすることの
別の利点は、FPの増加(呼出命令の際の)又はFPの
減少(復帰命令の際の)に既存のレジスタアドレス計算
ユニットを自在に使える一方、32ビットのALtJを
並列に作動させることができる点にある。
この並列動作によりさらにサイクルを節約できる。
フレーム、リターン及びセットスタックアドレス命令に
関する説明の個所で様々な計算モードをMPとFPの関
係に関連して説明する。セットスタックアドレス命令に
おいてFPのメモリアドレスはたった7ビットの長さの
FPから計算できる。
関する説明の個所で様々な計算モードをMPとFPの関
係に関連して説明する。セットスタックアドレス命令に
おいてFPのメモリアドレスはたった7ビットの長さの
FPから計算できる。
b)スタックポインタが不要になる。これはレジスター
レジスタアーキテクチャにおいて実質的な簡素化になる
。すなわち、たった一つのレジスタ命令(及びメモリ命
令)を実行するだけですむ。
レジスタアーキテクチャにおいて実質的な簡素化になる
。すなわち、たった一つのレジスタ命令(及びメモリ命
令)を実行するだけですむ。
スタック命令(ブツシュダウン及びポツプアップ)は不
要になる。このように命令組が非常に小さくなるため非
常に簡単な制御が可能になるがこれは高速の縮少命令数
コンピュータ(RISG)で必要とされるものである。
要になる。このように命令組が非常に小さくなるため非
常に簡単な制御が可能になるがこれは高速の縮少命令数
コンピュータ(RISG)で必要とされるものである。
スタックポインタの、中間結果を追跡する機能はいずれ
の場合でもレジスターレジスタアーキテクチャから省略
される。他の機能、すなわち新しいスタックフレームの
始動アドレスの評価は本発明では別の簡単な方法で解決
される。
の場合でもレジスターレジスタアーキテクチャから省略
される。他の機能、すなわち新しいスタックフレームの
始動アドレスの評価は本発明では別の簡単な方法で解決
される。
フレーム命令は実際のスタックフレームの最大長のみを
決定し、呼出し命令は一般に最新のスタックフレームの
最大長よりも短い新たなスタックフレームを後続させる
が、呼出し命令は新たなスタックフレームの開始位置を
その近辺のスタックフレームの限界内で決定する。
決定し、呼出し命令は一般に最新のスタックフレームの
最大長よりも短い新たなスタックフレームを後続させる
が、呼出し命令は新たなスタックフレームの開始位置を
その近辺のスタックフレームの限界内で決定する。
この本発明による新規な方法を従来技術による方法7)
と混同してはならない。ここでは新たなスタック形成の
際の長さは呼ばれたサブルーチンの必要に従って呼出命
令により決定されていた。
と混同してはならない。ここでは新たなスタック形成の
際の長さは呼ばれたサブルーチンの必要に従って呼出命
令により決定されていた。
スタックポインタの省略以外の本発明による新規な方法
の利点は新たなスタックフレームが実際に使われる変数
(及び任意に引渡されたパラメータ)に隣接して結合さ
れることである。普通、新しいスタックの世代は最大長
よりも実質的に短い長さのスタックの世代に後続させら
れる。
の利点は新たなスタックフレームが実際に使われる変数
(及び任意に引渡されたパラメータ)に隣接して結合さ
れることである。普通、新しいスタックの世代は最大長
よりも実質的に短い長さのスタックの世代に後続させら
れる。
特徴a)及びb)を組合わせることにより、たった64
個のレジスタを経済的に使って従来の方法と同じあるい
は2倍の数のレジスタ組を使ったのと同等の効果を生じ
るスタックレジスタ組を得ることができる。これはシリ
コンチップ上の大きな面積を節約できると共にレジスタ
の読出し/書込み時間を短縮でき(容量の減少により)
、実質的にサイクル時間を減少させることができるのを
意味する。本発明方法によればレジスタの読取り、処理
及び結果のレジスタへの再書込みはただ1回の非常に短
いサイクルにて実行できる。従来の構成ではレジスタの
数が多くそれに伴ってレジスタの読出し及び書込みサイ
クルが長くなるためかかる過程はいくつかのサイクルに
分割されるのが普通であった。
個のレジスタを経済的に使って従来の方法と同じあるい
は2倍の数のレジスタ組を使ったのと同等の効果を生じ
るスタックレジスタ組を得ることができる。これはシリ
コンチップ上の大きな面積を節約できると共にレジスタ
の読出し/書込み時間を短縮でき(容量の減少により)
、実質的にサイクル時間を減少させることができるのを
意味する。本発明方法によればレジスタの読取り、処理
及び結果のレジスタへの再書込みはただ1回の非常に短
いサイクルにて実行できる。従来の構成ではレジスタの
数が多くそれに伴ってレジスタの読出し及び書込みサイ
クルが長くなるためかかる過程はいくつかのサイクルに
分割されるのが普通であった。
スタックフレーム当りのレジスタの数を減少させること
に伴う別の利点はタスク変更の際スタックのメモリ部と
して記憶されまた後続復元されるレジスタの数が少くて
すむことである。
に伴う別の利点はタスク変更の際スタックのメモリ部と
して記憶されまた後続復元されるレジスタの数が少くて
すむことである。
実施例
第3図に本発明を使用する32ビットコンピユータを示
す。図中、本発明に関係のある部分だけが示されている
。個々の部分は以下の機能を有している。
す。図中、本発明に関係のある部分だけが示されている
。個々の部分は以下の機能を有している。
スタックレジスタ組:
レジスタO〜63はスタックのレジスタ部を形成する。
これらはフレームポインタFPのビット5〜Oに関連し
てアドレスされる。換言すれば、実際のスタックフレー
ム(最大16レジスタ)は命令のレジスタコードを介し
てローカルレジスタ(LO−最大L15)としてアドレ
スされる。絶対スタックアドレスは次式 絶対アドレスニー(FP+レジスタコード)sodul
o64に従って求められる。これは絶対アドレスOが絶
対アドレス63の直後に続く(回り込み)ことを意味し
、従って相対アドレスは順次上昇すると考えることがで
きる。
てアドレスされる。換言すれば、実際のスタックフレー
ム(最大16レジスタ)は命令のレジスタコードを介し
てローカルレジスタ(LO−最大L15)としてアドレ
スされる。絶対スタックアドレスは次式 絶対アドレスニー(FP+レジスタコード)sodul
o64に従って求められる。これは絶対アドレスOが絶
対アドレス63の直後に続く(回り込み)ことを意味し
、従って相対アドレスは順次上昇すると考えることがで
きる。
グローバルレジスタ:
19個のグローバルレジスタが使われる。GO〜G15
は命令のレジスタコードによりアドレスされる。G16
〜G18は特別な命令(倍長語移動)によりアドレスさ
れる。以下のレジスタは特別な機能を有する。
は命令のレジスタコードによりアドレスされる。G16
〜G18は特別な命令(倍長語移動)によりアドレスさ
れる。以下のレジスタは特別な機能を有する。
プログラムカウンタPC:
G1はプログラムカウンタである。これは制御ユニット
により次の命令のアドレスへ(分岐がない場合)更新さ
れ、あるいは分岐目標アドレス(分岐時)がロードされ
る。
により次の命令のアドレスへ(分岐がない場合)更新さ
れ、あるいは分岐目標アドレス(分岐時)がロードされ
る。
メモリポインタMP:
G16はメモリポインタMPである。メモリポインタM
Pはスタック中のメモリ部の最初の空いたロケーション
(メモリスタックの頂部)のアドレスを含む。このアド
レスはスタックのレジスタ部にオーバーフローが生じた
場合にフレーム命令により第7のスタックレジスタ(M
Pのビット7〜2により絶対的にアドレスされる)をセ
ーブするためのものである。
Pはスタック中のメモリ部の最初の空いたロケーション
(メモリスタックの頂部)のアドレスを含む。このアド
レスはスタックのレジスタ部にオーバーフローが生じた
場合にフレーム命令により第7のスタックレジスタ(M
Pのビット7〜2により絶対的にアドレスされる)をセ
ーブするためのものである。
スタック下限LB:
G17はスタック下限LBである。LBはメモリスタッ
クの最下位ロケーションのアドレスを含む。これはリタ
ーン命令によりスタックのアンダーフローを抑止するの
に使われる。
クの最下位ロケーションのアドレスを含む。これはリタ
ーン命令によりスタックのアンダーフローを抑止するの
に使われる。
スタック上限UB:
G18はスタック上限USである。UBはメモリスタッ
クの最上位ロケーションのアドレスを含む。これはフレ
ーム命令によりスタックのオーバーフローを抑止するの
に使われる。
クの最上位ロケーションのアドレスを含む。これはフレ
ーム命令によりスタックのオーバーフローを抑止するの
に使われる。
状態レジスタSR:
Goは状態レジスタSRである。ビット20〜0は本発
明には関係のない、例えば条件ビット(C,Z、V、N
)やいくつかのモードビット、及び最後に実行された命
令の長さ(1〜3半語)をあられす命令長カウンタIL
C(ビット20〜19)を含む。SRのビット31〜2
5は7ビットフレームポインタFPを含む。FPの最下
位6ビットは現在のスタックフレームの開始点、すなわ
ちローカルレジスタLOを指示する。[:Pはメモリス
タックアドレスの8〜2ビットに等しく、スタックのメ
モリ部ヘプッシユされた場合このアドレスにLOの内容
が記憶される。SRのビット24〜21は最大フレーム
長FLを含む。FLはこのフレームで使用可能なローカ
ルレジスタの最大数(引渡されたパラメータ、復帰SR
及び復帰PCを含む)を保持する。FL=Oは常にFL
−16と解釈される。
明には関係のない、例えば条件ビット(C,Z、V、N
)やいくつかのモードビット、及び最後に実行された命
令の長さ(1〜3半語)をあられす命令長カウンタIL
C(ビット20〜19)を含む。SRのビット31〜2
5は7ビットフレームポインタFPを含む。FPの最下
位6ビットは現在のスタックフレームの開始点、すなわ
ちローカルレジスタLOを指示する。[:Pはメモリス
タックアドレスの8〜2ビットに等しく、スタックのメ
モリ部ヘプッシユされた場合このアドレスにLOの内容
が記憶される。SRのビット24〜21は最大フレーム
長FLを含む。FLはこのフレームで使用可能なローカ
ルレジスタの最大数(引渡されたパラメータ、復帰SR
及び復帰PCを含む)を保持する。FL=Oは常にFL
−16と解釈される。
差カウンタに:
には内部9ビットカウンタである。ビット8〜0のみが
カウンタビットとして使われビット31〜9はKが読取
られる際は常に符号ビット8に等しく設定される。ビッ
ト1〜0は常に0である。
カウンタビットとして使われビット31〜9はKが読取
られる際は常に符号ビット8に等しく設定される。ビッ
ト1〜0は常に0である。
K[8〜2]はスタックレジスタワードの否定数を有し
、フレーム命令によりメモリスタック上へ押込まれると
共に復帰命令によりメモリスタックから引出される。
、フレーム命令によりメモリスタック上へ押込まれると
共に復帰命令によりメモリスタックから引出される。
算術論理ユニットALU :
32ビットALUはソース(Y)オペランド及びあて先
(X)オペランドをシフトを含め算術的又は論理的に処
理する。結果はあて先(X)レジスタに再記憶される。
(X)オペランドをシフトを含め算術的又は論理的に処
理する。結果はあて先(X)レジスタに再記憶される。
X及びYアドレスユニット:
Y及びXレジスタアドレスの双方について−のアドレス
加算/減算器及びこれに記憶されたY又はXアドレスレ
ジスタ(AYR及びAXR)が協働する。レジスタアド
レスはデータ処理(実行)サイクルに先行するデコード
サイクル中で評価されAYR又はAXR中に記憶される
。
加算/減算器及びこれに記憶されたY又はXアドレスレ
ジスタ(AYR及びAXR)が協働する。レジスタアド
レスはデータ処理(実行)サイクルに先行するデコード
サイクル中で評価されAYR又はAXR中に記憶される
。
Y及びXレジスタ:
Yレジスタはソース(Y)オペランドの一時メモリであ
る。Xレジスタはあて先(X)オペランドの一時メモリ
である。
る。Xレジスタはあて先(X)オペランドの一時メモリ
である。
第2の書込み路を介してデータワードはメモリからロー
カル及びグローバルレジスタへ直接に転送される。
カル及びグローバルレジスタへ直接に転送される。
以下の説明及び図面では以下の定義が使われるニーレジ
スタ又はメモリ中のワードは32ビットの語長を有し、
ビットOが最下位ビット、ビット31が最上位ビットで
ある。
スタ又はメモリ中のワードは32ビットの語長を有し、
ビットOが最下位ビット、ビット31が最上位ビットで
ある。
一オペランド[x、、y]はオペランドのビットX−ビ
ットyをあられす。
ットyをあられす。
例:MP [8,,2]はMPのビット8〜2をあられ
す。
す。
一記号4は式の値によりアドレスされたオペランドをあ
られす。すなわち、式の値がアドレスとして使われる。
られす。すなわち、式の値がアドレスとして使われる。
文脈に応じて式はメモリロケーション又はローカルレジ
スタをアドレスする。
スタをアドレスする。
−記号:−は代入記号であり「〜により置換える」と読
む。
む。
一記号>、>s+a、<は「〜より大」、「〜以上」及
び「〜未満」の関係をあられす。
び「〜未満」の関係をあられす。
呼出しくコール)命令(サブルーチンへのジャンプ)
ジャンプ先アドレスがプログラムカウンタPCに設定さ
れ、XレジスタコードがFL中にロードされる。
れ、XレジスタコードがFL中にロードされる。
古い状態レジスタSRの内容が(FP+FL)a+od
ulo64でアドレスされるスタックレジスタ中にロー
ドされ、古いプログラムカウンタPCの内容が(FP+
FL+1 )Ilodulo64t’7t’l、zスサ
れるスタックレジスタ中にロードされる。古いSR及び
PCは命令の開始時の状態、すなわちFLがXレジスタ
コードにより上書きされたりPCがジャンプアドレスに
より上書きされる萌の状態をあられす。古い内容はレジ
スタ中に保持される。すなわちレジスタはSR及びPC
の命令開始時の内容のコピーを常に保持する。
ulo64でアドレスされるスタックレジスタ中にロー
ドされ、古いプログラムカウンタPCの内容が(FP+
FL+1 )Ilodulo64t’7t’l、zスサ
れるスタックレジスタ中にロードされる。古いSR及び
PCは命令の開始時の状態、すなわちFLがXレジスタ
コードにより上書きされたりPCがジャンプアドレスに
より上書きされる萌の状態をあられす。古い内容はレジ
スタ中に保持される。すなわちレジスタはSR及びPC
の命令開始時の内容のコピーを常に保持する。
PCの古い内容はリターン命令により使われる復帰先ア
ドレスを含む。SRの古い内容は特に現在のスタックフ
レームのFP及びFLの復帰状態を回復するのに必要な
全ての情報を含んでいる。
ドレスを含む。SRの古い内容は特に現在のスタックフ
レームのFP及びFLの復帰状態を回復するのに必要な
全ての情報を含んでいる。
次いでフレームポインタFPはFLの値だけ増加され(
FL−0はFL=16と解釈される)フレーム長Fしは
6に設定される。このようにして新しいスタックフレー
ムが形成される。セーブされたSRは新しいスタックフ
レームからローカルレジスタLOとしてアドレスされセ
ーブされたPCはローカルレジスタ[1としてアドレス
される。
FL−0はFL=16と解釈される)フレーム長Fしは
6に設定される。このようにして新しいスタックフレー
ムが形成される。セーブされたSRは新しいスタックフ
レームからローカルレジスタLOとしてアドレスされセ
ーブされたPCはローカルレジスタ[1としてアドレス
される。
FLは6に設定されるため、残りのレジスタし2〜L5
は空いており、任意に使用できる。Xレジスタコードの
値(Oは16と解釈される)は現在のスタックフレーム
のFL値を超えてはならない。
は空いており、任意に使用できる。Xレジスタコードの
値(Oは16と解釈される)は現在のスタックフレーム
のFL値を超えてはならない。
これを超えてしまうと新たなスタック世代が現在のスタ
ックフレームのFLで指定された最大長を超えた所で後
続させられることになり、レジスタ部の開始点が誤って
上書きされてしまう可能性がある。
ックフレームのFLで指定された最大長を超えた所で後
続させられることになり、レジスタ部の開始点が誤って
上書きされてしまう可能性がある。
呼出し命令はスタックレジスタのオーバーフローはチェ
ックせず、従ってフレーム命令により別の呼出し命令を
先行させる必要がある。また、スタックフレームを再構
成す、る必要がある場合フレーム命令を実行しなければ
ならない(FPを減少させて引渡されたパラメータ、F
Lの新しい最大長等をアクセスする、フレーム命令を参
照)。
ックせず、従ってフレーム命令により別の呼出し命令を
先行させる必要がある。また、スタックフレームを再構
成す、る必要がある場合フレーム命令を実行しなければ
ならない(FPを減少させて引渡されたパラメータ、F
Lの新しい最大長等をアクセスする、フレーム命令を参
照)。
普通、呼出し命令により設定されるFL−6の長さは新
たなスタックフレームで必要な最大長と等しくない。
たなスタックフレームで必要な最大長と等しくない。
パラメータが引渡されてなく別のサブルーチンも呼出さ
れていない場合、フレーム命令は実行されずFL−6は
最大長の適切な平均値になる。
れていない場合、フレーム命令は実行されずFL−6は
最大長の適切な平均値になる。
FLの省略時の長さが大きい場合、リザーブされるスタ
ックレジスタの数が多くなりすぎ従ってメモリスタック
上に余計なレジスタが不必要にセーブされることになる
。
ックレジスタの数が多くなりすぎ従ってメモリスタック
上に余計なレジスタが不必要にセーブされることになる
。
言語RASCALではこれに対応する表現はPC:=飛
越し先アドレス FLニーXレジスタコード 八 。
越し先アドレス FLニーXレジスタコード 八 。
レジスタ(FP+FL) 、=SR(旧)−一呼出命
令以前のS Rの状態 Δ 。
令以前のS Rの状態 Δ 。
レジスタ(FP+FL+1) 、−PC(旧)−一戻
りアドレス FP ニーFP+FL : FLニー6 呼出し命令は3サイクルにわたり実行される。
りアドレス FP ニーFP+FL : FLニー6 呼出し命令は3サイクルにわたり実行される。
トラップ命令ニ
ドラツブ命令は呼出命令と同様に実行される。
呼出命令と異りSRは(FP+FL)modulo64
によりアドレスされたスタックレジスタ中にロードされ
る一方PCは(FP+FL+1 )modul。
によりアドレスされたスタックレジスタ中にロードされ
る一方PCは(FP+FL+1 )modul。
64によりアドレスされたスタックレジスタ中にロード
される。これは使えるレジスタアドレスがないためであ
る。
される。これは使えるレジスタアドレスがないためであ
る。
FLは6に設定される。サブプログラムへの飛越しがな
される場合、サブプログラム入口アドレス(アドレスバ
イトにより指定される)がプログラムカウンタPC中に
設けられ、スーパバイザモードフラグ(本発明には関係
なし)が状態レジスタSR中にセットされる。
される場合、サブプログラム入口アドレス(アドレスバ
イトにより指定される)がプログラムカウンタPC中に
設けられ、スーパバイザモードフラグ(本発明には関係
なし)が状態レジスタSR中にセットされる。
対応するPASCAL表現は以下のようになる。
pcニー人ロアドレスーー表入口へ飛越し△ 。
レジスタ(FP+FL) 、−8R(旧)二一−トラ
ップ命令前のSRの状態 △ 。
ップ命令前のSRの状態 △ 。
レジスタ(FP+FL+1) 、−PC(旧);−一
戻りアドレス FPニーFP−1−FL; FL ニー6 ; スーパバイザモードビットニー1゜ トラップ命令は3サイクルで行なわれるフレーム命令: フレーム命令は以下の代入を行なうニ ーFPをローカルレジスタのアドレス範囲内の引渡され
たパラメータが含まれるように減少させる。
戻りアドレス FPニーFP−1−FL; FL ニー6 ; スーパバイザモードビットニー1゜ トラップ命令は3サイクルで行なわれるフレーム命令: フレーム命令は以下の代入を行なうニ ーFPをローカルレジスタのアドレス範囲内の引渡され
たパラメータが含まれるように減少させる。
一フレーム長FLを現在のスタックフレームで必要なレ
ジスタの実際の数に合わせてリセットする。
ジスタの実際の数に合わせてリセットする。
−10の予備レジスタを確保して別の呼出し命令あるい
はトラップ命令を実行する。
はトラップ命令を実行する。
フレームポインタFLはYレジスタコードの値だけ減少
され、FLの値はXレジスタコードの値により置換えら
れる。
され、FLの値はXレジスタコードの値により置換えら
れる。
次いで差、即ち、
空いたレジスター(必要なレジスタ+10)が計算され
差カウンタK[8,,2]へ置かれK[1,、O]はO
とされる。差が負でない場合、ローカルレジスタに必要
な数に予備のレジスタ10を加えた数のレジスタがスタ
ックのレジスタ部で必要であり、フレーム命令は完了す
る。
差カウンタK[8,,2]へ置かれK[1,、O]はO
とされる。差が負でない場合、ローカルレジスタに必要
な数に予備のレジスタ10を加えた数のレジスタがスタ
ックのレジスタ部で必要であり、フレーム命令は完了す
る。
差が負の場合は一時的メモリポインタMP、。1が式、
MP −−MP−K
te僧p。
に従りて計算される(差の値が負であるため、MPto
IIII)はMPよりも大きくなる)。次いでMPto
IIlpはメモリスタックの上限UBと比較される。M
PtoOlpがLJBよりも大きい場合、すなわちスタ
ックレジスタをセーブする際にメモリスタックの上限が
超過されるような場合、FP及びFLは元の値にリセッ
トされ、MPの現在値(古い値)は不変に保たれ特別な
エラー処理サブプログラム(フレームエラー)へのトラ
ップがなされる。
IIII)はMPよりも大きくなる)。次いでMPto
IIlpはメモリスタックの上限UBと比較される。M
PtoOlpがLJBよりも大きい場合、すなわちスタ
ックレジスタをセーブする際にメモリスタックの上限が
超過されるような場合、FP及びFLは元の値にリセッ
トされ、MPの現在値(古い値)は不変に保たれ特別な
エラー処理サブプログラム(フレームエラー)へのトラ
ップがなされる。
上限が超過されない場合はK[8,,2]中の負値を有
する差の推定値に等しいスタックレジスタ数をスタック
のメモリ部中に記憶することがまずMPのビット7〜2
によりアドレスされた第1のスタックレジスタの内容を
MPによりアドレスされたロケーションへ記憶すること
で開始される。
する差の推定値に等しいスタックレジスタ数をスタック
のメモリ部中に記憶することがまずMPのビット7〜2
によりアドレスされた第1のスタックレジスタの内容を
MPによりアドレスされたロケーションへ記憶すること
で開始される。
MPは次いで4バイト(−3,2ビットワード)だけ連
続的に増加され、続くスタックレジスタの内容が増加し
たMPの値によりアドレスされたロケーションに記憶さ
れる。差カウンタにはそれぞれ4バイトだけ増加させら
れる。Kが0まで増加するとループは終了する。
続的に増加され、続くスタックレジスタの内容が増加し
たMPの値によりアドレスされたロケーションに記憶さ
れる。差カウンタにはそれぞれ4バイトだけ増加させら
れる。Kが0まで増加するとループは終了する。
予備の10個のレジスタは以下のように使われる。
一呼出し又はトラップ命令が6個のレジスタを使肌
一例外的な事態により生じるサブプログラム後の飛越し
により別の2つのレジスタが使われる(FLは2にセッ
トされる)。
により別の2つのレジスタが使われる(FLは2にセッ
トされる)。
一例外条件ハンドラ中でフレーム命令を実行する際に生
じた「フレームエラー」により残り2つのレジスタが使
われる。
じた「フレームエラー」により残り2つのレジスタが使
われる。
対応するPASCALでの表現は
FPニーFP−Yレジスタコード;
FLニーXレジスタコード:
K [8,,2]−MP [8,,2]+ (64−1
0)−(FP+FL):K[1,,01ニー0ニー−6
4−スタックレジスタの数、1〇−予備 K>=Oならば次の命令を実行; 一−Kが負でなければ命令を完了 MP °−MP−にニー−には負であるのでte慴
p。
0)−(FP+FL):K[1,,01ニー0ニー−6
4−スタックレジスタの数、1〇−予備 K>=Oならば次の命令を実行; 一−Kが負でなければ命令を完了 MP °−MP−にニー−には負であるのでte慴
p。
MP、。□>MP
MP>USならば
FPニー古いFP;
FLニー古いFLニ
ドラップ→フレームエラ一二一一一スタックのメモリ部
オーバーフロー くりかえし、 メモリMPAニースタックレジスタMP [7゜、2]
。
オーバーフロー くりかえし、 メモリMPAニースタックレジスタMP [7゜、2]
。
−一スタックレジスタセーブ→スタックのメモリ部
MPニーMP+4;
K : −に+4 ;
をに−0まで実行。
リターン命令:
リターン命令は制御をサブプログラムから戻す。
Yレジスタコードによりアドレスされたレジスタの内容
が状態レジスタSRにロードされ、続くレジスタの内容
がプログラムカウンタPC中にロードされる。
が状態レジスタSRにロードされ、続くレジスタの内容
がプログラムカウンタPC中にロードされる。
次いで復元されたスタックフレームがスタックのレジス
タ部中に完全に含まれるか否かがチェックされる。これ
は32ビットに拡張されたフレームポインタFPの内容
がMPの内容よりも小でなければ、換言すれば拡張され
たFPの内容がメモリスタックのロケーションを指示し
なければ真である。MPと拡張されたFPとの差は最大
で64(スタックレジスタの数で)であるのでMPのビ
ット86.2をFPと比較すれば十分である。
タ部中に完全に含まれるか否かがチェックされる。これ
は32ビットに拡張されたフレームポインタFPの内容
がMPの内容よりも小でなければ、換言すれば拡張され
たFPの内容がメモリスタックのロケーションを指示し
なければ真である。MPと拡張されたFPとの差は最大
で64(スタックレジスタの数で)であるのでMPのビ
ット86.2をFPと比較すれば十分である。
従って差FP−MP [8,,2]はKEY、。
2]へ格納されK [1,、O]はゼロとなる。差が負
でなければ現在のスタックフレームはスタックのレジス
タ部に完全に含まれリターン命令は終了する。
でなければ現在のスタックフレームはスタックのレジス
タ部に完全に含まれリターン命令は終了する。
K [8,,2]中の差の値が負であればこの値はスタ
ックのメモリ部からロードされるべきレジスタの数をあ
られす。
ックのメモリ部からロードされるべきレジスタの数をあ
られす。
Kを使って一時的メモリポインタMPto、llpが式
%式% により計算される。
%式% により計算される。
次いでMPt(3IIipはメモリスタックの下限LB
と比較される。MPtolIipがLBよりも小である
場合、換言すればメモリスタックの下限が越えられる場
合、MPの元の値は不変で特別なエラー処理サブプログ
ラムへのトラップ(レンジエラー)が生じる。
と比較される。MPtolIipがLBよりも小である
場合、換言すればメモリスタックの下限が越えられる場
合、MPの元の値は不変で特別なエラー処理サブプログ
ラムへのトラップ(レンジエラー)が生じる。
MPがLBよりも小である場合、MPt811ipはM
P中中口ロードれる。多数の32ビットワードがK[8
,,2]中の差の値に従ってスタックレジスタ中に、ま
ずMPtea。によりアドレスされた第1ワードをレジ
スタアドレスがMPtempのビット7〜2で指示され
るスタックレジスタ中へ記憶させることを手はじめとし
て記憶される。MPt81は次いで4バイトだけ増加さ
せられ、またさらにワード転送がなされる。差カウンタ
にもそれぞれ4バイトだけ増加させられ、Kがゼロまで
増加するとループは終了する。
P中中口ロードれる。多数の32ビットワードがK[8
,,2]中の差の値に従ってスタックレジスタ中に、ま
ずMPtea。によりアドレスされた第1ワードをレジ
スタアドレスがMPtempのビット7〜2で指示され
るスタックレジスタ中へ記憶させることを手はじめとし
て記憶される。MPt81は次いで4バイトだけ増加さ
せられ、またさらにワード転送がなされる。差カウンタ
にもそれぞれ4バイトだけ増加させられ、Kがゼロまで
増加するとループは終了する。
対応するRASCAL表現は、
PCニーYレジスタの次のレジスタ;
SR: −Yレジスタ
K [8,,2] :=FP−MP [8,,2] :
K[1,、O]−0: K〉−0ならば次の命令を実行; 一−Kが負でなければ命令終了 MP ’−MPtoIl、+にニー−には負なので
temp ” MPt81.ip<MP MP<UBならばトラップ→レンジエラー;MP :
−MPt、IR,: くりかえし、 △ ・ MPtemp ・ m−スタックのメモリ部ロード→スタックレジスタ MP ”−MPtomp+4 :temp ” KニーK −ト 4 : をに−0まで実行する。
K[1,、O]−0: K〉−0ならば次の命令を実行; 一−Kが負でなければ命令終了 MP ’−MPtoIl、+にニー−には負なので
temp ” MPt81.ip<MP MP<UBならばトラップ→レンジエラー;MP :
−MPt、IR,: くりかえし、 △ ・ MPtemp ・ m−スタックのメモリ部ロード→スタックレジスタ MP ”−MPtomp+4 :temp ” KニーK −ト 4 : をに−0まで実行する。
スタックアドレスセット命令ニ
スタックアドレスセット命令はフレームポインタFPを
メモリポインタMPまで拡張し、結果をXレジスタコー
ドでアドレスされたレジスタ中に格納する。FP自体は
不変である。
メモリポインタMPまで拡張し、結果をXレジスタコー
ドでアドレスされたレジスタ中に格納する。FP自体は
不変である。
拡張されたFPアドレスはローカルレジスタLOがメモ
リスタック中に記憶されているアドレスである。
リスタック中に記憶されているアドレスである。
このアルゴリズムは拡張されたFPアドレスがO〜63
までの32ビットワードの範囲に含まれるMP中のアド
レスに等しいかそれよりも大きいことを前提としている
。拡張されたFPアドレスを演算するため、MPの31
〜9ビット、FP。
までの32ビットワードの範囲に含まれるMP中のアド
レスに等しいかそれよりも大きいことを前提としている
。拡張されたFPアドレスを演算するため、MPの31
〜9ビット、FP。
及び2つのゼロビットが連結されて単一の32ビットア
ドレスが形成される。MPのビット8が1に等しくMP
のビット6(最高ビット)がOに等しい場合、このアド
レスのビット9にけた上げが加えられて修正がなされる
。
ドレスが形成される。MPのビット8が1に等しくMP
のビット6(最高ビット)がOに等しい場合、このアド
レスのビット9にけた上げが加えられて修正がなされる
。
対応する方程式は次のようになる。
Xレジスタ: =MP [31,,9]//FP10O
+ビット9へのけた上げ m−ビット9へのけた上げニー (MP [8]=1及
びFP [6] =O) 一一//は連結をあられす。
+ビット9へのけた上げ m−ビット9へのけた上げニー (MP [8]=1及
びFP [6] =O) 一一//は連結をあられす。
このように、スタックアドレスセット命令は現在のスタ
ックフレームのスタックアドレスを計算する。スタック
フレームのスタックアドレスが例えばグローバルレジス
タ中にセーブされた場合、このスタック中の任意のデー
タを、侵から形成されたスタックフレームからでも、セ
ーブされたアドレスを使って、データがスタックのメモ
リ部にあるかレジスタ部にあるかに関りなくアドレスす
ることが可能になる。
ックフレームのスタックアドレスを計算する。スタック
フレームのスタックアドレスが例えばグローバルレジス
タ中にセーブされた場合、このスタック中の任意のデー
タを、侵から形成されたスタックフレームからでも、セ
ーブされたアドレスを使って、データがスタックのメモ
リ部にあるかレジスタ部にあるかに関りなくアドレスす
ることが可能になる。
ロード及び記憶命令では、これは特別なスタックアドレ
スモードにより行われる。この場合、有効アドレスはス
タックアドレスにメモリ命令中に与えられた変位量を加
えることにより計算される。
スモードにより行われる。この場合、有効アドレスはス
タックアドレスにメモリ命令中に与えられた変位量を加
えることにより計算される。
次いで有効スタックアドレスはメモリポインタMPと比
較される。有効スタックアドレスがMPの値よりも小で
ある場合、アドレスされるロケーションはスタックのメ
モリ部中にありメモリのアクセスがなされる。それ以外
の場合はアドレスされるロケーションは有効スタックア
ドレスのビット7〜2によりアドレスされるスタックレ
ジスタ中に存在する。
較される。有効スタックアドレスがMPの値よりも小で
ある場合、アドレスされるロケーションはスタックのメ
モリ部中にありメモリのアクセスがなされる。それ以外
の場合はアドレスされるロケーションは有効スタックア
ドレスのビット7〜2によりアドレスされるスタックレ
ジスタ中に存在する。
第1図は従来のメモリスタックの構成を示す図、第2図
は本発明によるレジスタ組中のスタック及びメモリの構
成を示す図、第3図は本発明を使用する32ビットコン
ピユータの一部を示す図である。 LO−115・・・ローカルレジスタ、GO〜゛G18
・・・グローバルレジスタ、FP・・・フレームボイン
ク、MP・・・メモリポインタ、LB・・・スタック下
限、LIB・・・スタック上限、SR・・・状態レジス
タ、ILC・・・命令長カウンタ、FL・・・フレーム
長、PC・・・プログラムカウンタ、K・・・差カウン
タ、MPtollip・・・−時的メモリポインタ。 特許出願人 オツトー ミューラ− 手続ネ甫正書(自発) 特許庁長官 古 1)文 毅 殿 1、事件の表示 昭和63年 特許願 第195917号2、発明の名称 コンピュータのスタック制御装置 a 補正をする者 事件との関係 特許出願人 住所 ドイツ連邦共和国 デー−7750コンスタンツ
16 アム グッケンピュール 10番地氏名 オツト
ー ミューラー 4、代理人 住所 〒102 東京都千代田区麹町5丁目7番地6
、 補正の対象 図面及び委任状。 7、補正の内容 (1)図面の浄書(内容に変更なし)を別紙のとおり補
充する。 ■ 委任状及びその訳文各1通を別紙のとおり補充する
。 以 上
は本発明によるレジスタ組中のスタック及びメモリの構
成を示す図、第3図は本発明を使用する32ビットコン
ピユータの一部を示す図である。 LO−115・・・ローカルレジスタ、GO〜゛G18
・・・グローバルレジスタ、FP・・・フレームボイン
ク、MP・・・メモリポインタ、LB・・・スタック下
限、LIB・・・スタック上限、SR・・・状態レジス
タ、ILC・・・命令長カウンタ、FL・・・フレーム
長、PC・・・プログラムカウンタ、K・・・差カウン
タ、MPtollip・・・−時的メモリポインタ。 特許出願人 オツトー ミューラ− 手続ネ甫正書(自発) 特許庁長官 古 1)文 毅 殿 1、事件の表示 昭和63年 特許願 第195917号2、発明の名称 コンピュータのスタック制御装置 a 補正をする者 事件との関係 特許出願人 住所 ドイツ連邦共和国 デー−7750コンスタンツ
16 アム グッケンピュール 10番地氏名 オツト
ー ミューラー 4、代理人 住所 〒102 東京都千代田区麹町5丁目7番地6
、 補正の対象 図面及び委任状。 7、補正の内容 (1)図面の浄書(内容に変更なし)を別紙のとおり補
充する。 ■ 委任状及びその訳文各1通を別紙のとおり補充する
。 以 上
Claims (15)
- (1)一部がランタイムスタック(以下スタックと称す
る)として使われる一又は複数のメモリを備えた特にマ
イクロプロセッサ構成を有するコンピュータのスタック
制御装置であつて、該スタックはさらにレジスタ部とメ
モリ部とに分割され、スタックの最上部はレジスタの組
の形に形成され、後の世代のあるいは最も後の世代のス
タックがこのレジスタ組中に保持され、メモリ中に押込
まれる第1のレジスタのメモリアドレス−すなわちメモ
リ中のスタックの最上部の空いたアドレス空間−は、ス
タックレジスタの押込みの際に値を増加され又は引出し
の際にその値を減少させられる(あるいは逆も可能な)
メモリポインタMP中に保持され、コンピュータの最後
の状態が状態レジスタSR中に保持され、復帰アドレス
を有するプログラムカウンタPC中の先の状態がサブプ
ログラム呼出しの際スタックのレジスタ部中にセーブさ
れ、 スタックのレジスタ部中のスタック世代の最初のレジス
タアドレスをアドレスする世代(フレーム)ポインタF
Pがサブプログラム呼出しの際にセーブされ、サブプロ
グラム呼出しの前に有効であった世代ポインタは状態レ
ジスタSRの一部をなし同じサイクル中の呼出命令に際
しても状態レジスタSRと共にセーブされて同じ有効状
態を保ち、サブプログラムから戻る際は世代ポインタF
Pは状態ワードの一部として状態レジスタSRへ戻され
ることを特徴とする装置。 - (2)一部がランタイムスタック(以下スタックと称す
る)として使われる一又は複数のメモリを備えた特にマ
イクロプロセッサ構成のコンピュータのスタック制御装
置であつて、該スタックはさらにレジスタ部とメモリ部
とに分割され、スタックの最上部はレジスタの組の形に
形成され、後の世代のあるいは最も後の世代のスタツク
がこのレジスタ組中に保持され、メモリ中に押込まれる
第1のレジスタのメモリアドレス−すなわちメモリ中の
スタックの最上部の空いたアドレス空間−は、スタック
レジスタの押込みの際に値を増加され引出しの際にその
値を減少させられる(あるいは逆も可能な)メモリポイ
ンタMP中に保持され、コンピュータの最後の状態が状
態レジスタSR中に保持され、復帰アドレスを有するプ
ログラムカウンタPC中の先の状態がサブプログラム呼
出しの際スタックのレジスタ部中にセーブされ、 サブプログラムの呼出しがなされる場合後続する新しい
スタック世代の長さは後のスタック世代の最大長ではな
くて実際の現在長に等しくされ、これによりスタックポ
インタが省略されることを特徴とする装置。 - (3)世代ポインタFPはレジスタ組のアドレス域を保
持するのに必要なよりも少くとも1ビット長いが全メモ
リアドレスのアドレス域例えば32ビットよりも短いこ
とを特徴とする請求項1又は2記載の装置。 - (4)スタックレジスタ部のレジスタをアドレスする世
代ポインタFPは以下の式 スタックアドレス:=MP[31..9]//FP//
0+ビット9へのけた上げ、 −−ビット9へのけた上げ:=MP[8]=1及びFP
[6]=0(スタックアドレスはメモリ部中に押込まれ
る際にアドレスされるのと同じくスタックのメモリ部と
スタックのレジスタ部の両方のアドレスを含む)に従っ
て32ビットスタックアドレスまで拡張されることを特
徴とする請求項1ないし3のうちいずれか一項記載の装
置。 - (5)世代ポインタFPはALU中における他の値(例
えば32ビットオペランド)の計算と同時にアドレス計
算ユニットにより増減させられることを特徴とする請求
項1ないし4のうちいずれか一項記載の装置。 - (6)フレーム命令の実行の際使用可能な空いたスタッ
クレジスタの数が十分か否かが判定され、否であれば少
くとも不足している数のスタックレジスタがスタックの
メモリ部中に押込まれることを特徴とする請求項1ない
し5のうちいずれか一項記載の装置。 - (7)フレーム命令は請求項6において押込まれたレジ
スタに加えて多数の別のレジスタを押込み、これにより
呼出し命令及び別の2つの例外トラップで必要な予備の
レジスタが形成されることを特徴とする請求項6記載の
装置。 - (8)フレーム命令によるスタックレジスタの押込みと
同時にスタックの上限がオーバーフローの発生を検出す
べくチェックされることを特徴とする請求項1ないし7
のうちいずれか一項記載の装置。 - (9)オーバーフローの可能性がある場合、レジスタは
セーブされずコンピュータはエラー処理サブプログラム
へ分岐することを特徴とする請求項8記載の装置。 - (10)リターン命令の実行の際、メモリポインタMP
を復元されたスタックフレームの世代ポインタFPと比
較することにより復元されたスタックフレームがスタッ
クレジスタ中に完全に含まれているか否かについて判定
がなされ、スタックフレームがスタックレジスタ中に完
全に含まれない場合足りないスタックレジスタがスタッ
クのメモリ部からロードされることを特徴とする請求項
1ないし9のうちいずれか一項記載の装置。 - (11)リターン命令によるスタックレジスタのロード
に一致してスタック下限がオーバーフローの検出のため
チェックされることを特徴とする請求項1ないし10の
うちいずれか一項記載の装置。 - (12)アンダーフローの可能性のある場合、スタック
レジスタは復元されずコンピュータはエラー処理サブプ
ログラムへ分岐することを特徴とする請求項11記載の
装置。 - (13)状態レジスタSRは最大フレーム長FLを含み
、FLは現在のスタック世代で使用可能なローカルレジ
スタの最大数(すなわち引渡されたパラメータの数+ロ
ーカル変数の数+引渡される予定のパラメータの数)を
含むことを特徴とする請求項1ないし12のうちいずれ
か一項記載の装置。 - (14)FLの値がゼロである状態はFLの値が16で
ある状態に等しいと見なされることを特徴とする請求項
13記載の装置。 - (15)最大フレーム長FLは新しいスタックフレーム
がサブプログラムの呼出しによってではなく例外ないし
トラップにより形成される場合に局部レジスタアドレス
FP+FLにおける新たなスタック世代の開始点を決定
するのに使われ、この場合にのみ最大フレーム長が最大
に使われることを特徴とする請求項12又は13記載の
装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19873726192 DE3726192A1 (de) | 1987-08-06 | 1987-08-06 | Stacksteuerung |
DE3726192.4 | 1987-08-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0199130A true JPH0199130A (ja) | 1989-04-18 |
Family
ID=6333220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63195917A Pending JPH0199130A (ja) | 1987-08-06 | 1988-08-05 | コンピュータのスタック制御装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US4969091A (ja) |
EP (1) | EP0303868B1 (ja) |
JP (1) | JPH0199130A (ja) |
KR (1) | KR920003274B1 (ja) |
AT (1) | ATE102718T1 (ja) |
DE (2) | DE3726192A1 (ja) |
HK (1) | HK62195A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103575438A (zh) * | 2012-07-18 | 2014-02-12 | 天地科技股份有限公司 | 煤矿超前支承压力分布特征监测方法 |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02187825A (ja) * | 1989-01-13 | 1990-07-24 | Mitsubishi Electric Corp | コンピュータ |
US5107457A (en) * | 1989-04-03 | 1992-04-21 | The Johns Hopkins University | Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack |
DE3914195A1 (de) * | 1989-04-28 | 1990-10-31 | Siemens Ag | Stapelspeicheranordnung |
JP2655191B2 (ja) * | 1989-07-05 | 1997-09-17 | 三菱電機株式会社 | 演算処理装置 |
US5640582A (en) * | 1992-05-21 | 1997-06-17 | Intel Corporation | Register stacking in a computer system |
JP3211423B2 (ja) * | 1992-10-13 | 2001-09-25 | ソニー株式会社 | 分岐命令実行方法および分岐命令実行装置 |
US5893148A (en) * | 1994-03-03 | 1999-04-06 | International Business Machines Corporation | System and method for allocating cache memory storage space |
EP0676691A3 (en) * | 1994-04-06 | 1996-12-11 | Hewlett Packard Co | Device for saving and restoring registers in a digital computer. |
US5655132A (en) * | 1994-08-08 | 1997-08-05 | Rockwell International Corporation | Register file with multi-tasking support |
US6185597B1 (en) * | 1995-06-07 | 2001-02-06 | Microsoft Corporation | Method and system for expanding a buried stack frame |
US5664120A (en) * | 1995-08-25 | 1997-09-02 | International Business Machines Corporation | Method for executing instructions and execution unit instruction reservation table within an in-order completion processor |
DE19640316A1 (de) * | 1996-09-30 | 1998-04-02 | Siemens Ag | Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher |
US5835958A (en) * | 1996-10-29 | 1998-11-10 | Sun Microsystems, Inc. | Method and apparatus for dynamically sizing non-contiguous runtime stacks |
US6219783B1 (en) * | 1998-04-21 | 2001-04-17 | Idea Corporation | Method and apparatus for executing a flush RS instruction to synchronize a register stack with instructions executed by a processor |
KR100319746B1 (ko) * | 1998-11-16 | 2002-02-19 | 오길록 | 칠컴파일러의실행시간스택프레임구성방법 |
US7117342B2 (en) * | 1998-12-03 | 2006-10-03 | Sun Microsystems, Inc. | Implicitly derived register specifiers in a processor |
US7114056B2 (en) * | 1998-12-03 | 2006-09-26 | Sun Microsystems, Inc. | Local and global register partitioning in a VLIW processor |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US7225436B1 (en) | 1998-12-08 | 2007-05-29 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
US20050149694A1 (en) * | 1998-12-08 | 2005-07-07 | Mukesh Patel | Java hardware accelerator using microcode engine |
GB2367654B (en) | 2000-10-05 | 2004-10-27 | Advanced Risc Mach Ltd | Storing stack operands in registers |
GB2367653B (en) | 2000-10-05 | 2004-10-20 | Advanced Risc Mach Ltd | Restarting translated instructions |
US20020069402A1 (en) * | 2000-10-05 | 2002-06-06 | Nevill Edward Colles | Scheduling control within a system having mixed hardware and software based instruction execution |
EP1197847A3 (en) * | 2000-10-10 | 2003-05-21 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
GB2369464B (en) | 2000-11-27 | 2005-01-05 | Advanced Risc Mach Ltd | A data processing apparatus and method for saving return state |
US7076771B2 (en) | 2000-12-01 | 2006-07-11 | Arm Limited | Instruction interpretation within a data processing system |
GB2376100B (en) * | 2001-05-31 | 2005-03-09 | Advanced Risc Mach Ltd | Data processing using multiple instruction sets |
GB2376099B (en) * | 2001-05-31 | 2005-11-16 | Advanced Risc Mach Ltd | Program instruction interpretation |
GB2376097B (en) | 2001-05-31 | 2005-04-06 | Advanced Risc Mach Ltd | Configuration control within data processing systems |
GB2376098B (en) * | 2001-05-31 | 2004-11-24 | Advanced Risc Mach Ltd | Unhandled operation handling in multiple instruction set systems |
US8769508B2 (en) | 2001-08-24 | 2014-07-01 | Nazomi Communications Inc. | Virtual machine hardware for RISC and CISC processors |
JP2003271448A (ja) * | 2002-03-18 | 2003-09-26 | Fujitsu Ltd | スタック管理方法及び情報処理装置 |
US7082455B2 (en) * | 2002-04-23 | 2006-07-25 | International Business Machines Corporation | Method and apparatus of parameter passing of structured data for stored procedures in a content management system |
US6938050B2 (en) | 2002-04-23 | 2005-08-30 | International Business Machines Corporation | Content management system and methodology employing a tree-based table hierarchy which accomodates opening a dynamically variable number of cursors therefor |
US6944627B2 (en) * | 2002-04-23 | 2005-09-13 | International Business Machines Corporation | Content management system and methodology employing a tree-based table hierarchy featuring arbitrary information retrieval from different locations in the hierarchy |
US7035854B2 (en) * | 2002-04-23 | 2006-04-25 | International Business Machines Corporation | Content management system and methodology employing non-transferable access tokens to control data access |
US6950815B2 (en) * | 2002-04-23 | 2005-09-27 | International Business Machines Corporation | Content management system and methodology featuring query conversion capability for efficient searching |
US6947948B2 (en) * | 2002-04-23 | 2005-09-20 | International Business Machines Corporation | Version-enabled, multi-typed, multi-targeting referential integrity relational database system and methodology |
US6999966B2 (en) * | 2002-04-23 | 2006-02-14 | International Business Machines Corporation | Content management system and methodology for implementing a complex object using nested/recursive structures |
DE10228758A1 (de) * | 2002-06-27 | 2004-04-22 | Infineon Technologies Ag | Verfahren und Schaltungsanordnung zur Zuordnung von verfügbarem Speicherbereich innerhalb eines Schreib-Lese-Speichers |
US20040003377A1 (en) * | 2002-06-28 | 2004-01-01 | Di Loreto Michael A. | Converting byte code instructions to a new instruction set |
US7131118B2 (en) * | 2002-07-25 | 2006-10-31 | Arm Limited | Write-through caching a JAVA® local variable within a register of a register bank |
US7299343B2 (en) * | 2002-09-27 | 2007-11-20 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | System and method for cooperative execution of multiple branching instructions in a processor |
US7493478B2 (en) * | 2002-12-05 | 2009-02-17 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
US7392246B2 (en) * | 2003-02-14 | 2008-06-24 | International Business Machines Corporation | Method for implementing access control for queries to a content management system |
GB2399897B (en) * | 2003-03-26 | 2006-02-01 | Advanced Risc Mach Ltd | Memory recycling in computer systems |
US7467386B2 (en) * | 2004-01-16 | 2008-12-16 | International Business Machines Corporation | Parameter passing of data structures where API and corresponding stored procedure are different versions/releases |
GB2412192B (en) * | 2004-03-18 | 2007-08-29 | Advanced Risc Mach Ltd | Function calling mechanism |
US7802080B2 (en) | 2004-03-24 | 2010-09-21 | Arm Limited | Null exception handling |
US7930526B2 (en) | 2004-03-24 | 2011-04-19 | Arm Limited | Compare and branch mechanism |
FR2896600B1 (fr) * | 2006-01-24 | 2008-03-28 | Atmel Nantes Sa Sa | Dispositif de traitement en notation polonaise inversee pour la manipulation de tableau, et circuit integre electronique comprenant un tel dispositif de traitement |
US8151031B2 (en) * | 2007-10-31 | 2012-04-03 | Texas Instruments Incorporated | Local memories with permutation functionality for digital signal processors |
US8769233B2 (en) * | 2011-06-14 | 2014-07-01 | International Business Machines Corporation | Adjusting the amount of memory allocated to a call stack |
US10205640B2 (en) | 2013-04-11 | 2019-02-12 | Oracle International Corporation | Seasonal trending, forecasting, anomaly detection, and endpoint prediction of java heap usage |
US9239801B2 (en) * | 2013-06-05 | 2016-01-19 | Intel Corporation | Systems and methods for preventing unauthorized stack pivoting |
US11327797B2 (en) | 2016-05-09 | 2022-05-10 | Oracle International Corporation | Memory usage determination techniques |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5543136U (ja) * | 1978-09-13 | 1980-03-21 | ||
JPS5843043A (ja) * | 1981-09-08 | 1983-03-12 | Oki Electric Ind Co Ltd | デ−タ処理装置の呼び出し命令方式 |
JPS6149696A (ja) * | 1984-08-17 | 1986-03-11 | Yokogawa Hokushin Electric Corp | パルスモ−タ駆動装置 |
JPS6252637A (ja) * | 1985-08-30 | 1987-03-07 | アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド | デジタルプロセツサ制御 |
JPS62154143A (ja) * | 1985-12-27 | 1987-07-09 | Matsushita Electric Ind Co Ltd | マイクロコンピユ−タ |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3889243A (en) * | 1973-10-18 | 1975-06-10 | Ibm | Stack mechanism for a data processor |
FR2253425A5 (ja) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4217638A (en) * | 1977-05-19 | 1980-08-12 | Tokyo Shibaura Electric Co., Ltd. | Data-processing apparatus and method |
JPS5474651A (en) * | 1977-11-28 | 1979-06-14 | Toshiba Corp | Stack control system |
JPS5616248A (en) * | 1979-07-17 | 1981-02-17 | Matsushita Electric Ind Co Ltd | Processing system for interruption |
US4313161A (en) * | 1979-11-13 | 1982-01-26 | International Business Machines Corporation | Shared storage for multiple processor systems |
US4524416A (en) * | 1980-04-15 | 1985-06-18 | Honeywell Information Systems Inc. | Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system |
DE3270597D1 (en) * | 1981-06-30 | 1986-05-22 | Fujitsu Ltd | Data processing system |
US4399507A (en) * | 1981-06-30 | 1983-08-16 | Ibm Corporation | Instruction address stack in the data memory of an instruction-pipelined processor |
JPS58103043A (ja) * | 1981-12-15 | 1983-06-18 | Matsushita Electric Ind Co Ltd | スタック形成方法 |
CA1187200A (en) * | 1982-02-24 | 1985-05-14 | David R. Ditzel | Computer with automatic mapping of memory contents into machine registers |
US4724517A (en) * | 1982-11-26 | 1988-02-09 | Inmos Limited | Microcomputer with prefixing functions |
US4704679A (en) * | 1985-06-11 | 1987-11-03 | Burroughs Corporation | Addressing environment storage for accessing a stack-oriented memory |
-
1987
- 1987-08-06 DE DE19873726192 patent/DE3726192A1/de not_active Withdrawn
-
1988
- 1988-07-28 DE DE3888259T patent/DE3888259T2/de not_active Expired - Lifetime
- 1988-07-28 EP EP88112251A patent/EP0303868B1/en not_active Expired - Lifetime
- 1988-07-28 AT AT88112251T patent/ATE102718T1/de not_active IP Right Cessation
- 1988-08-04 US US07/228,528 patent/US4969091A/en not_active Expired - Lifetime
- 1988-08-05 JP JP63195917A patent/JPH0199130A/ja active Pending
- 1988-08-06 KR KR1019880010112A patent/KR920003274B1/ko not_active IP Right Cessation
-
1995
- 1995-04-27 HK HK62195A patent/HK62195A/xx not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5543136U (ja) * | 1978-09-13 | 1980-03-21 | ||
JPS5843043A (ja) * | 1981-09-08 | 1983-03-12 | Oki Electric Ind Co Ltd | デ−タ処理装置の呼び出し命令方式 |
JPS6149696A (ja) * | 1984-08-17 | 1986-03-11 | Yokogawa Hokushin Electric Corp | パルスモ−タ駆動装置 |
JPS6252637A (ja) * | 1985-08-30 | 1987-03-07 | アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド | デジタルプロセツサ制御 |
JPS62154143A (ja) * | 1985-12-27 | 1987-07-09 | Matsushita Electric Ind Co Ltd | マイクロコンピユ−タ |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103575438A (zh) * | 2012-07-18 | 2014-02-12 | 天地科技股份有限公司 | 煤矿超前支承压力分布特征监测方法 |
Also Published As
Publication number | Publication date |
---|---|
DE3888259T2 (de) | 1994-09-08 |
DE3888259D1 (de) | 1994-04-14 |
EP0303868A2 (en) | 1989-02-22 |
ATE102718T1 (de) | 1994-03-15 |
KR890004236A (ko) | 1989-04-20 |
KR920003274B1 (ko) | 1992-04-27 |
HK62195A (en) | 1995-05-05 |
EP0303868B1 (en) | 1994-03-09 |
US4969091A (en) | 1990-11-06 |
DE3726192A1 (de) | 1989-02-16 |
EP0303868A3 (en) | 1989-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0199130A (ja) | コンピュータのスタック制御装置 | |
JP5680679B2 (ja) | 例外イベントを取り扱うための装置および方法 | |
US5713038A (en) | Microprocessor having register file | |
US20020144093A1 (en) | Method and apparatus for restoring registers after cancelling a multi-cycle instruction | |
US5249148A (en) | Method and apparatus for performing restricted modulo arithmetic | |
JP2002503370A (ja) | コプロセッサ・データ・アクセス制御 | |
JP2012530315A (ja) | データ処理装置および方法 | |
US5438669A (en) | Data processor with improved loop handling utilizing improved register allocation | |
US7080239B2 (en) | Loop control circuit and loop control method | |
KR20010040919A (ko) | 동일한 논리 공간을 점유하는 다중 레지스터 파일을포함하는 마이크로프로세서 | |
JP2850808B2 (ja) | データ処理装置およびデータ処理方法 | |
US7100029B2 (en) | Performing repeat string operations | |
US5729723A (en) | Data processing unit | |
US6772292B2 (en) | Two area stack | |
JP3490191B2 (ja) | 計算機 | |
EP0448058A2 (en) | Microprocessor capable of transferring data without intermediary of execution unit | |
JPH011033A (ja) | コンピュ−タ装置 | |
JPS6051947A (ja) | 仮想記憶計算機における命令先取方式 | |
KR930003410B1 (ko) | 스택영역의 데이터참조를 고속으로 행하는 데이터처리장치 | |
KR100654477B1 (ko) | 프로세서 동작 방법 | |
JP3341847B2 (ja) | データ処理装置 | |
JPH0219495B2 (ja) | ||
EP0634717B1 (en) | Data processing unit | |
JPS61100836A (ja) | 移動命令論理比較命令処理方式 | |
JPH0248935B2 (ja) |