JP2001504969A - スタック向きデータ処理装置 - Google Patents
スタック向きデータ処理装置Info
- Publication number
- JP2001504969A JP2001504969A JP51295299A JP51295299A JP2001504969A JP 2001504969 A JP2001504969 A JP 2001504969A JP 51295299 A JP51295299 A JP 51295299A JP 51295299 A JP51295299 A JP 51295299A JP 2001504969 A JP2001504969 A JP 2001504969A
- Authority
- JP
- Japan
- Prior art keywords
- stack
- unit
- register
- instruction
- data processing
- 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.)
- Ceased
Links
- 238000000034 method Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Classifications
-
- 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
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)
Abstract
(57)【要約】
2つのスタックを維持するデバイス処理装置である。情報の基本単位の長さが各スタックごとに相違する。ポップ及びプッシュがスタックポインタに変化を生じさせ、この変化はどちらのスタックが使用されるかに応じて相違する。種々の命令がスタック上の種々の位置を、スタックの先頭に対し基本単位の数のオフセットで規定されるレジスタとして参照する。実施例では、レジスタの参照は通常は一組のレジスタ(スタックレジスタの先頭を含む)のうちのプッシュ又はポップを含まない1つのレジスタの参照として解釈されるが、1つのレジスタの参照をプッシュ又はポップを含むスタックの先頭の参照と解釈する。
Description
【発明の詳細な説明】
スタック向きデータ処理装置
本発明は、第1及び第2スタックを維持する手段と、それぞれ第1及び第2ス
タックのプッシュ及び/又はポップを生じさせる第1及び第2命令を含む命令セ
ットを有する命令実行ユニットとを具えるデータ処理装置に関するものである。
このようなデータ処理装置はフィリップスセミコンダクタ社により出版された
1996データハンドブックの第33−36頁に発表されたフィリップス80C
51XAプロセッサの総覧に記載されている。
スタックは例えばメモリアドレスポインタを格納するスタックポインタレジス
タにより維持することができる。プッシュ操作時に、メモリアドレスポインタが
インクリメントされ、情報がメモリアドレスポインタが指すメモリ位置に格納さ
れる。従って、連続するプッシュ操作により情報は一連の連続メモリ位置に書き
込まれる。この情報はメモリ位置をスタックの先頭に対しアドレス指定すること
により読み出すことができる。
ポップ操作はプッシュ動作の逆である。ポップ操作時に情報はメモリアドレス
ポインタが指すメモリ位置から読み出されるとともにメモリアドレスポインタが
デクリメントされる。
80C51XAプロセッサはこのようなスタックメカニズムを支援する。その
理由は、このプロセッサは、メモリアドレスポインタを含むレジスタを参照する
ことによりアドレスを表わすアドレッシングモードを実行する命令を有するため
である。この命令は、レジスタを参照し、このレジスタ内のメモリアドレスポイ
ンタをオペランドのソースとして又は結果のデスティネーションとして使用すべ
きメモリ位置を指すポインタとして識別する。いくつかのレジスタをこのように
使用することができ、従って各々をスタックポインタとして使用することができ
る。また、80C51XAプロセッサは特にプロシージャコール及び割込みから
の復帰のためにユーザスタック及びシステムスタックを規定することができる。
これらのスタックに対するスタックポインタは通常のレジスタの一つにマップす
る。
命令が実行時に参照するレジスタを暗黙的に命令の機能操作と一緒にインクリ
メント又はデクリメントさせるアドレッシングモードがある。インクリメント又
はデクリメントは16ビットワードアドレスの単位であり、即ちレジスタの内容
が一時に2バイトアドレスづつインクリメント又はデクリメントされる。
スタックは、特に高水準言語により規定されたプログラムを実行するのに使用
するとき、パワフルな情報管理メカニズムを提供する。これは、多数の項目がス
タックに格納され、スタックがかなり多量のランダムアクセスメモリスペースを
使用することを意味する。
本発明の目的は、特に、情報のスタック処理に少量のメモリスペースを必要と
するデータ処理装置を提供することにある。
本発明の他の目的は、スタックを使用するプログラムの格納に必要とされるメ
モリスペースの量を低減することにある。
本発明の更に他の目的は、パワフルなスタック処理命令セットを命令を過度に
大きくすることなく提供することにある。
本発明は、第1及び第2スタックを維持する手段と、それぞれ第1及び第2ス
タックのプッシュ及び/又はポップを生じさせる第1及び第2命令を含む命令セ
ットを有する命令実行ユニットとを具えるデータ処理装置において、前記第1及
び第2スタックを維持する手段が情報を第1及び第2スタックに、それぞれ互い
に等しくなく且つ互いに整数倍でない第1の長さの基本単位及び第2長さの基本
単位でプッシュ及び/又はポップすることを特徴とする。
第1スタックは、例えば種々の算術論理演算命令内にオペランドとして使用さ
れる数値データ用に使用することができ、この場合には基本単位は例えば16ビ
ットワードとする。第2スタックはこのような算術論理演算命令内にオペランド
のアドレスとして使用されるアドレス用に使用することができ、この場合には基
本単位は例えば24ビットワードとする。
このように、基本単位の長さは第1及び第2スタックに対しそれぞれ例えば1
6ビット及び24ビットである。その結果として、第1及び第2スタックポイン
タをバイト単位でアドレスされるメモリを指すものとして使用する場合、第1ス
タックポインタはプッシュ及び/又はポップの結果として2バイトアドレスづつ
変化し、第2スタックポインタはプッシュ及び/又はポップの結果として3バイ
トアドレスづつ変化する。第1スタックは種々の算術論理演算命令内のオペラン
ドとして使用される数値データ用に使用することができ、第2スタックはこのよ
うな算術論理演算命令内のオペランドのアドレスとして使用されるアドレス用に
使用することができる。
データ値及びアドレスの基本長さは、これらの2つのタイプの情報の異なる使
用のために一般に相違する。本発明と異なり、両タイプの情報をスタックするの
に1つの基本単位長さのみを使用する場合、このことはスタックの格納スペース
が無駄な命令に浪費されることになることを意味する。本発明によれば、スタッ
クを異なる長さの基本スタック単位
で使用するためにこのような格納スペースの浪費が避けられる。本発明はアドレ
ス及びデータに制限されない。本発明は異なる有意長を有する2つのタイプの情
報を使用する任意の環鏡の下で使用することもできる。
本発明データ処理装置の実施例では、命令セットは第1及び第2スタックの先
頭に対するオフセットに基づいて格納位置を指定する第1及び第2アドレッシン
グモードを使用し、オフセットは関連するスタックに対する基本単位の数で表わ
されることを特徴とする。この実施例では、命令を短く維持することができる。
その理由は、命令は関連するスタックに適合する単位でオフセットをアドレスし
、このオフセットをこのスタック内の小さな差を表わすものとすることにより命
令スペースの浪費が避けられるためである。
本発明の他の実施例は請求項4及び5に記載されている。これらの実施例では
、スタックの先頭に対し指定することができるオフセット、好ましくは最大オフ
セットの小量を犠牲にしてプッシュ及びポップを符号化する。
本発明データ処理装置のこれらの利点及び他の利点は図面を用いて以下に説明
するが、本発明はこれに限定されるものではない。図面において、
図1は本発明の原理を実証する簡略化したデータ処理装置を示し、
図2a,bはデータ処理装置の命令セットの一部分を示し、
図3は専用スタックキャッシュ/バッファを具えるデータ処理装置を示す。
図1は本発明の原理を実証する簡略化したデータ処理装置を示す。この装置は
命令実行ユニット10と、データバス14a及びアドレスバス14bに接続され
たメモリ12とを含む。この装置は更に第1及び第2スタック制御ユニット16
、18を含み、これらの制御ユニットは命令実行ユニット10に結合された制御
インタフェース及びアドレスバス14bに結合された出力端子を有する。
第1スタック制御ユニット16はオフセット減算器163に結合された出力端
子を有するスタックポインタレジスタ160を含む。実効ユニット10に対する
制御インタフェースはシフトユニット162を経てオフセット減算器163の入
力端子に結合されたオフセット入力端子を含む。オフセット減算器163の出力
端子をバスインタフェースユニット164を経てアドレスバス14bに結合する
。スタックポインタレジスタの出力端子はインクリメント/デクリメントユニッ
ト169を経てマルチプレクサ165の第1入力端子にも結合する。マルチプレ
クサ165の第2入力端子は命令実行ユニット10のスタックプリセット出力端
子に結合する。マルチプレクサ165の出力端子をスタックポインタレジスタ1
60の入力端子に結合する。マルチプレクサ165、スタックボインタレジスタ
160及びバスインタフェースユニット164の制御入力端子を制御インタフェ
ースを経て命令実行ユニット10に結合する。
第2スタック制御ユニット18は第2スタックポインタ180を含み、オフセ
ット入力端子181が乗算回路186を経てオフセット減算器183に結合され
ている点を除いて第1のスタック制御ユニット16と同一である。乗算回路18
6はシフトユニット182と加算器187を含む。オフセット入力端子181を
加算器187の2つの入力端子に直接結合するとともにシフトユニット182を
経て結合する。加算器187の出力端子をオフセット減算器183の入力端子に
結合する。
図2a,bは命令実行ユニット10の命令セットからの種々の可能な命令を示
す表である。命令セットは主として2つのタイプのレジスタ:24ビットのA(
アドレス)レジスタ及び16ビットのD(データ)レジスタを使用する。図1の簡
略化データ処理装置においてはこれらの“レジスタ”は実際にはメモリ12内の
記憶場所に対応する。
命令セットはメモリからレジスタへ及びレジスタからメモリへ情報をロードし
、格納するロード(Ld)及び格納(St)操作を含む。これらの命令には、例
えば必要とするソース又はデスティネーションレジスタ(例えばアドレスレジス
タ又はデータレジスタ)及びロードすべきデータのタイプ(例えばフルワード又
はハーフワード)に応じて種々のバージョン(例えばLdA,LdB,LdD)
がある。更に、命令セットは種々の算術論理演算を実行する命令、例えばAdd
(加算),Sub(減算),Shl,Shr(左シフト、右シフト)及びOr,Xo
r(排他的論理和)、Not(論理反転)を含む。更に、命令セットはBr(ブラ
ンチ)、J(ジャンプ)等のような制御操作を含む。
算術論理演算のソースオペランドは一般にDレジスタから到来するか、対応す
る命令内に直接規定される。ロード操作のソースオペランド及び格納操作のデス
ティネーションオペランドのアドレスは一般に命令内にメモリアドレスにより直
接規定されるか、命令が参照するAレジスタに記憶されたアドレスにより間接的
に規定される。更に、複数のAレジスタに対しAdd命令がある。
多くの命令には、オペランドの処理に使用するアドレッシングモードが相違す
る以外は同一の操作を規定する複数のバージョンがある。例えば、LdAに対す
る命令には2つのメインバージョンがあり、第1のメインバージョンはレジスタ
とオフセットを指定する。オペランドは、指定されたレジスタの内容にオフセッ
トを加算することにより得られるメモリアドレスに位置する。第1メインバージ
ョンのそれぞれのバージョンでは、オフセットはそれぞれ5ビット長又は13ビ
ット長であり、命令全体はそれぞれ16ビット長又は28ビット長である(第2
バージョンの方がオペコードが長い)。第2のメインバージョンはオペランド値
を直接指定する。第2のメインバージョンのそれぞれのバージョンでは、オペラ
ンドはそれぞれ8ビット又は24ビット長であり、命令はそれぞれ20ビット又
は36ビット長である。
図2a,bには、マシン命令が装置用のアセンブラ命令の記述で示されている
。アセンブラ命令はファンクションコードの後にオペランド記述を含む。表の第
1列はファクションコードのニーモニック記号を示す。第2列は同一のニーモニ
ックを有する命令の種々のバージョンを数える数である。第3列はオペランド記
述
のフォーマットを記述する。第4列から第8列はマシン命令のファンクションコ
ード(opcode)及び第1、第2、第3及び第4オペランド(もしあれば)にそれ
ぞれ使用されるビット数を示す。最終列は命令の全長を4ビットニブル単位で示
す。
第3列に記載するフォーマットにおいて、命令の種々のオペランドはコンマで
分離されている。通常、第1オペランドは命令の結果を格納すべき位置を示し、
第2オペランド及び後続のオペランド(もしあれば)はファンクションの実行時
に使用される引数を示す。LdB及びShr(右シフト)の場合には、他のオペ
ランドの前に、符号拡張を生じさせるべきかを示す“s”オペランドが置かれる
。St操作の場合には、第1オペランドはソースのアドレスに関連し、第2オペ
ランドはデスティネーションのアドレスに関連する。
“An”を含むオペランドに対するエントリは、このオペランドが複数の“A
”レジスタのうちの選択可能な1つを参照することを示す。“Dn”は、このオ
ペランドが複数の“D”レジスタのうちの選択可能な1つを参照することを示す
。レジスタの前及び後の“+”、“−”、及び“*”符号の使用については後述
する。レジスタの参照を括弧“(”“)”内に置くと、これは参照されるレジスタ
の内容がオペランドに対するアドレスとして使用されることを示す。括弧内のレ
ジスタの参照の後に“+”符号及びワード“offset(オフセット)”が続く場合に
は、このアセンブラ命令はオペランドのアドレスを得るためにレジスタの内容に
加算すべきオフセット値を含むことを意味する。ワード“オフセット”の後に当
該命令内のオペランドに対し使用されるビット数を示す数が続く。
多くの命令には、ファンクションに対するパラメータとして使用すべき値が明
示的に含まれる。これは括弧なしの“offset(オフセット)”又は“#”符号に続
くワード“immediate(イミディエイト)”又は“imm”により種々に示される。各
場合においてこれらのワードの後に、値の符号化のために命令に使用されるビッ
ト数を示す数を置くことができる。命令の他の詳細については後に説明する。
動作中、命令実行ユニット10はメモリ12から命令に対応するマシンコード
を連続的にロードし、命令を実行する。これは命令実行ユニット10が命令のア
ドレスをアドレスバス14bに送出するとき開始する。これに応答して、メモリ
12が命令(少なくともその第1部分)を返送し、次いでこれが復号される。ロー
ドされた部分から命令がまだ完全でないことが明らかな場合には(命令は互いに
異なる長さを有し得るため)、実効ユニット10は命令の残部もロードする。演
算命令の場合には、命令実行ユニット10はオペランドを選択し、それらを演算
ユニット(命令実行ユニット内にあるが図示してない)に送り、演算ユニットに
よる演算結果をデスティネーションレジスタに格納する。ロード/格納操作の場
合には、命令実行ユニットはアドレスを計算し、メモリからそのアドレスの情報
を取り出し又はメモリのそのアドレスに情報を格納する。
Dレジスタ及びAレジスタの一部分はそれぞれ個別のDスタック及びAスタッ
クとして編成される。情報はDスタックに2バイト(16ビット)単位で格納され
、Aスタックに3バイト(24ビット)単位で格納される。図1の簡略化データ処
理システムでは、各スタックの内容をメモリ12に格納し、第1及び第2スタッ
ク制御ユニット16、18内のスタックポインタ160、180はそれぞれDス
タックの先頭及びAスタックの先頭を保持するメモリ位置を指すアドレスを含む
。命令実行ユニット10は命令内の3つのレジスタD0,D1及びD2等の参照
をどれぞれDスタックの先頭の位置、Dスタックの先頭から1ワード下の位置及
びDスタックの先頭から2ワード下の位置の参照と解釈する。同様に、命令実行
ユニット10は命令内の3つのレジスタA0,A1及びA2等の参照をそれぞれ
Aスタックの先頭の位置、Aスタックの先頭から1ワード下の位置及びAスタッ
クの先頭から2ワード下の位置の参照と解釈する。LdD命令の1つのバージョ
ン(第7バージョン)では、ソースオペランドはDn_extとして示され、3ビット
で符号化されている。LdD命令のこのバージョンでは、Dn_extフィールド内
の値は8つの値を取ることができ、これらの値はLdD命令によりD0にロード
することができるスタックの先頭から数えた種々の基本単位の位置とみなせる。
命令実行ユニット10は命令内にDスタック内の位置に対応するDレジスタの
参照を見つけると、第1スタック制御ユニット16に、このレジスタがDスタッ
クの先頭に対応するレジスタに対しオフセットされているレジスタの数を表わす
コードを送る。シフトユニット162がこの数を1ビットだけ上位にシフトさせ
、実際上2倍にする。オフセット減算器163がその結果をスタックポインタレ
ジ
スタ160の内容から減算する。命令実行ユニット10の制御の下で、オフセッ
ト減算器の出力をメモリ12のアドレス入力端子に供給し、情報をアドレス位置
に書き込む又は読み出し、これは参照Dレジスタの読出し又は書込みに相当する
。
説明を簡単にするために、メモリへのデータパスはスタックにおける情報の基
本単位に対し十分な幅を有するものとするとともに、使用し得るアドレスに対し
何の制限もないものとする。この仮定が満足されない場合には、バスインタフエ
ースユニット164は情報転送を2以上のメモリサイクルに分割し、例えば1ワ
ードを構成する順次のバイトを転送することができ、またワード境界に位置しな
いためにワード転送操作においてアドレスし得ない基本単位の初期部分を最初に
転送することができる。
命令実行ユニット10は命令内にAスタック内の位置に対応するレジスタの参
照を見つけると、第2スタック制御ユニット18を第1スタック制御ユニット1
6とほぼ同一に使用する。しかし、この場合には、このレジスタがAスタックの
先頭に対応するレジスタに対しオフセットされているレジスタ数にこの数自身を
1桁上位に1シフトさせたものを加算してこの数を実際上3倍にする。
こうして、スタックの先頭に位置するメモリ位置に対する算出オフセットはス
タックに格納される基本単位の長さ倍され、図1では2倍に又は3倍にされ、ス
タックのタイプに適応するものとなるが、スタックが使用される情報のタイプに
応じて他の任意の倍数を使用することができる。
命令実行ユニット10はDスタック又はAスタックに1項目をプッシュする又
はポップするコマンドを受信すると、メモリ12内のスタック位置の先頭をアド
レスする。命令実行ユニット10の制御の下で、インクリメント/デクリメント
ユニット169、189が基本単位の長さだけインクリメント又はデクリメント
されたスタックポインタレジスタ160及び180からのスタックポインタを計
算する。その結果を用いてスタックポインタレジスタ160、180を更新する
。Dスタック用の第1スタック制御ユニット16の場合にはこのインクリメント
又はデクリメントは2である。Aスタック用の第2スタック制御ユニット18の
場合にはこのインクリメント又はデクリメントは3である。即ち、各場合おいて
スタックに格納される基本ユニットの長さだけインクリメント又はデクリメント
さ
れる。
図2a,bに示す命令セットにおいて、いくつかの命令は命令実行ユニットに
ポップ又はプッシュを実行させると同時にスタックの先頭をオペランドアドレス
又はデスティネーションアドレスとして使用させる。この場合には、プッシュは
A0又はD0の前の“+”で示し、ポップはA0又はD0の後の“−”で示す。
いくつかの命令では、プッシュ及びポップは暗黙であり、この場合にはプッシュ
及びポップの符号化のために別個のビットがマシン命令に必要とされない。この
場合には図2a,bのアセンブラ命令における+/-及びA0/D0はリマインダー
として作用するのみである。他の命令ではプッシュ又はポップはオプションであ
る。この場合には+/-は括弧“[”“]”内に挿入され、プッシュを実行すべきか
ポップを実行すべきかを選択するために1ビットがマシン命令に使用される。
以上の説明において、スタックポインタはプッシュ時にインクリメントされ、
ポップ時にデクリメントされ、且つスタックポインタは最後にプッシュされた情
報の位置を指すものと仮定した。これは一例にすぎず、その代わりにプッシュ時
にスタックポインタをデクリメントすることができること勿論であり、この場合
にはスタックポインタに対するオフセットを計算し、得られたオフセットをスタ
ックポインタに加える。また、スタックポインタはスタックの先頭に対し一定の
関係を有する任意のメモリ位置、例えば次の情報がプッシュに応答して書き込ま
れる位置を指すようにすることもできる。
ポップ時にスタックポインタが同一の方向に変化する必要もない。例えば,D
スタックに対するスタックポインタはポップ時にインクリメントされるが、Aス
タックに対するスタックポインタはポップ時にデクリメントされる、またはその
逆とすることができる。この場合には、両スタックに対し単一のメモリアドレス
範囲を使用することができ、一方のスタックはこのアドレス範囲の底から上に、
他方のスタックはこの範囲の先頭から下に、互いに出会うまで成長するものとす
ることができる。このようにすると、最大のスペースを必要するスタックが共通
のスタックスペースを使用することができ、他のスタックに使用し得るスペース
を犠牲にすることがない。この場合には、処理ユニットに、衝突検出器又はAス
タックに対するスタックポインタとBスタックに対するスタックポインタが出会
うときこれを検出する検出器を含めるのが好ましい。この衝突検出器はスタック
オーバーフローエラー割込みを発生し、一方のスタックからのデータ又はアドレ
スが他方のスタックからのアドレス又はデータをオーバーライトするのを阻止さ
せる。
本発明から逸脱することなく、スタックポインタはスタックベースポインタ及
びスタックに格納された情報の基本単位数を表わすカウンタ値として維持するこ
ともできる。この場合には、スタックアドレスの先頭はカウンタ値に関連するス
タックにおける基本単位の長さを乗算することにより計算することができる(基
本単位は固定長であため、この乗算はたかだか数回の加算を必要とするだけであ
る)。この積とスタックベースとの和がスタックポインタとなる。スタックの先
頭から所定数の単位だけ下にある基本単位のメモリアドレスは同様にカウンタ値
からこの所定数を減算することにより計算することができる。
簡単のため、図1のスタック制御ユニット16、18は完全に別個のユニット
として示されているが、実際にはこれらのスタック制御ユニットのいくつかの機
能は共通の回路により実行することができる。例えば、オフセット減算器163
、183及び/又はバスインタフェースユニット164は一時に一つのスタック
がアクセスされるのみであるから両スタック制御ユニットに共有させることがで
きる。
オペランドレジスタの識別に2ビットを使用する場合、実際には4つのレジス
タ、即ちスタック上の基本単位の4つの位置をアドレスすることができる。本発
明の有利な実施例では、命令実行ユニット10は一方のスタック上の第4レジス
タD3又はA3の参照を、D0又はA0と同様に、スタックの先頭の参照として
処理するが、D3又はA3が使用される場合には、A3又はD3の参照がそれぞ
れオペランドのソース又はデスティネーションとして使用される場合にスタック
へのアクセスの後にデクリメントが、又はスタックへのアクセスの前にインクリ
メントが行われる。これは実際上PUSH(プッシュ)又はPOP(ポップ)操
作である。このようなレジスタ参照を用いてPUSH又はPOPを実行ユニット
10に信号することにより、殆どのPUSH及びPOP操作は追加の別個の命令
を必要とせず、またD3又はA3を参照する命令は命令セットの多数を占めない
。
従ってプログラム格納用に必要とされるメモリスペースを最小にすることができ
る。図2a,bでは、この可能性が選択した数の命令に対し、関連するオペラン
ドを“*”でマークすることにより示されている。この種のオペランド処理はレ
ジスタを参照する全ての命令に適用することができ、またこの処理は選択した命
令にのみ適用して他の命令が第4レジスタに対し通常A3又はD3を使用するよ
うにすることができる。
4つのレジスタD0,D1,D2,D3及び4つのレジスタA0,A1,A2
,A3は命令内において2ビットで符号化するのが好ましい。スタックを参照す
るもっと多数のレジスタが必要とされる場合には一般にnビットを使用すること
ができ、即ちスタックの先頭に対する種々のオフセット及びプッシング又はポッ
ピングを意味する1つの値を参照する2*n−1を使用することができる。
命令実行ユニットは追加のレジスタA4,A5,A6,A7の参照をスタック
の状態と無関係の同一の局部格納位置を参照する局部レジスタの参照と解釈する
ことができる。例えば、レジスタA4はAスタックポインタ180とすることが
でき、レジスタA5はDスタックポインタ160とすることができ、レジスタA
7はプログラムカウンタとすることができ、且つレジスタA6はプロシージャコ
ールからのリターンに使用すべきプログラムカウンタとすることができる。これ
らのレジスタはすべて24ビットのアドレスを格納し、従ってAレジスタという
。
原理的には、サブルーチンからのリターンアドレスもアドレススタックに格納
することができる。しかし、命令実行ユニット10は割込み情報からのリターン
用にJSR(サブルーチンへジャンプ)命令、RT(サブルーチンからのリター
ン)命令、RTI(割込みからのリターン)命令等に使用されるリターンアドレ
スを格納するために酸くなくとの1つの他のスタックを維持するのが好ましい。
間接Aスタック参照を有する命令、即ちAスタックに格納されたアドレスを用
いてメモリ位置をアドレスする命令は命令セット内のロード命令及び格納命令に
のみ使用され、例えば算術論理演算には使用されない。これにより2つのスタッ
クを1サイクルにつき1命令を実行し得るRISCのようなアーキテクチャに高
い効率で組合せることができる。
図2a,bの命令セットはいくつかの特別の命令、例えばA及びDスタックか
らのオプショナルポップ(2ビットに符号化される)とともにサブルーチンから
のリターンを生じさせる2ビットのパラメータを有するRETを含む。Siはソ
フトウエア割込み命令であり、Trはトラップ命令である。
実際上、図1に示す簡略化したデータ処理装置は低速である。その理由は,A
スタック及びDスタックの参照ごとにメモリ12をアクセスする必要があるため
である。この点は、スタック内に存在する情報をキャッシングすることにより本
発明から逸脱することなく改善することができる。キャッシングには、汎用キャ
ッシュを使用することができ、また各スタックに対し専用キャッシュを使用する
ことができる。スタック管理方法は、命令を明示的に参照しうるスタック位置が
即時に必要とされるのみであること及びスタックは通常逐次にアクセスされるこ
とが既知であるため、最適にすることができる。キャッシュとメモリとの一致は
、スタック機構によらずにスタック上のメモリ位置をアクセスすることを控える
ことがプログラマにまかされる場合には、厳密に維持する必要はない。
図3は専用スタックキャッシュを具えるデータ処理装置を示す。本例装置はア
ドレスバス34a及びデータバス34bにより接続された命令実行ユニット30
とメモリ32を含む。本例装置は第1及び第2スタック制御ユニット36、38
を含む。第1スタック制御ユニット36は各々1基本スタックユニットを格納す
るのに十分な大きさの複数のレジスタを有するレジスタファイル360と、レジ
スタ管理ユニット362と、スタックポインタユニット364と、インタフェー
スユニット366とを含む。レジスタ管理ユニット362は命令実行ユニット3
0に結合されたレジスタ選択入力端子及びレジスタファイル360に結合された
レジスタ選択出力端子を有する。レジスタファイル360はデュアルポート化さ
れ、命令実行ユニット30及びインタフェースユニット366に接続されたアド
レスポートを有する。スタックポインタユニット364はレジスタ管理ユニット
362に結合された制御入力端子、命令実行ユニット30に結合された書込み入
力端子及び命令実行ユニット30及びインタフェースユニット366に結合され
た出力端子を有する。レジスタ管理ユニット362とインタフェースユニット3
66トランジスタの間に制御接続が存在する。インタフェースユニット366は
更にアドレスバス34a及びデータバス34bに接続する。
動作中、レジスタファイル360内のレジスタは1つのスタック、例えばAス
タックの上部に格納されている情報の各単位を格納する。レジスタ管理ユニット
362はスタック上の各位置とレジスタファイル内の各レジスタとの対応を保持
する。この一致はランダムに適応させることができ、また例えば周期的な関係を
使用することもできる。命令がスタックの先頭に対する位置を参照するものであ
る場合には、命令実行ユニット30はこの参照をレジスタ管理ユニット362に
出力し、レジスタ管理ユニット362がこの参照に対応するレジスタファイル3
60内のレジスタを選択する。次いで直ちにこのレジスタが情報の基本単位の読
出し又は書込みのために命令実行ユニット30に接続される。
原理的には、レジスタ管理ユニット362はレジスタファイル360内の1つ
のレジスタをプッシュされた情報を受信できるレディー状態に維持する。命令が
スタックへのプッシュ操作を命令する場合には、レジスタ管理ユニット362が
このレジスタを選択して命令実行ユニット30が情報の基本単位をこのレジスタ
に格納する。更にレジスタ管理ユニット362はスタックポインタユニット36
4に命令してスタックポインタの値を情報の1基本単位の長さだけ増大させる。
レジスタ管理ユニット362はレジスタとスタック上の位置との間の一致を、こ
のレジスタがスタックの先頭に対応し、他の各レジスタがプッシュ前よりスタッ
クの先頭から1位置だけ更に離れた位置に対応するように更新する。
次いで直ちに、レジスタ管理ユニット362がインタフェースユニット366
に命令してスタックの先頭から最も遠くにある情報の基本単位をレジスタファイ
ル360からメモリ32に、スタックのその位置に対応するメモリ位置に転送さ
せる。このメモリ位置はインタフェースユニット366がスタックポインタの値
から所定数の基本長さを減算することにより計算することができる。こうして、
スタックの先頭から最も遠くにある情報の基本単位を含むレジスタファイル36
0内のレジスタが次にプッシュされる情報を受信できるレディー状態に維持され
たレジスタとして得ることができる。
従って、スタックの先頭に対し選択された情報が常にメモリ32への格納に必
要とされる遅延を生ずることなく命令実行ユニットに得られる。
命令がスタックへのポップ操作を命令する場合には、レジスタ管理ユニット3
62がスタックの先頭に対応するレジスタファイル360内のレジスタを選択し
て命令実行ユニット30がこのレジスタを読み出すことができるようにする。更
にレジスタ管理ユニット362はスタックポインタユニット364に命令してス
タックポインタを1基本単位の長さだけ減少させる。エミッタr管理ユニット3
62はレジスタとスタック上の位置との間の一致を、このレジスタがプッシュ操
作前のスタックの先頭に対応し、他の各レジスタがプッシュ操作前よりスタック
の先頭に1位置だけ近い位置に対応するように更新する。また、レジスタ管理ユ
ニット362はインタフェースユニット366に命令してレジスタファイル36
0内にない情報の最高位の基本単位をメモリ32からフェッチさせる。インタフ
ェースユニット366はスタックポインタの値から所定数の基本長さを減算する
ことによりこの基本単位のアドレスを計算することができる。この基本単位が次
にプッシュされる情報を受信できるレディー状態に維持されているレジスタに格
納されるとともに、スタックの先頭にないレジスタが次にプッシュされる情報を
受信できるレディー状態に維持されたレジスタとなる。ポップ操作の前にプッシ
ュ操作がポップを介挿することなく行われる場合には、関連する情報がレディー
状熊に維持されたレジスタに既に存在するため、メモリフェッチは不要であり、
省略することができる。
従って、スタックの先頭に対し選択された情報が常にメモリからのフェッチに
必要とされる遅延を生ずることなく命令実行ユニット30に得られる。
このように、レジスタファイル360内のレジスタの数は、1に、明示的に参
照することができるスタックの先頭に対する位置の数を加えた数を必要とするの
みである。しかし、本発明から逸脱することなく、もっと多数のレジスタを使用
することができる。もっと多数のレジスタを使用する場合には、レジスタ管理ユ
ニット362はフリーレジスタがある限りプッシュ命令後のメモリ32への書込
み操作の命令を延期させることができる。これにより、フリーレジスタが存在し
なくなる前に、スタックの先頭がポップされるときに多数の書込み操作が必要と
されるのが避けられる。
スタックポインタユニット364及びレジスタ管理ユニット362は最大及び
最小スタックポインタ値を追跡して書込み、読出し、プッシュ又はポップ操作が
これらの最大値及び最小値を超えて発生するのを避けることができ、且つ、必要
に応じ、これが発生する場合には通常の命令実行の割込みを発生させることがで
きる。スタックが同一のメモリ範囲を互いに反対方向に成長する場合には、その
代わりに2つのスタックが衝突しないことをテストすることができる。
基本単位の長さがバスの幅より大きい場合には、インタフェースユニット36
6はスタック情報の基本単位を転送するのに2以上のバスサイクルを使用する。
基本単位の長さLがバスの幅Wの整数倍でない場合には、基本単位はRビットの
超過を有する(L=N*W+R,Nは整数、N<R<W、例えばW=16、L=
24及びR=8)。この場合には、メモリへの書込み時に、インタフェースユニ
ット366は各メモリ単位のRビットの超過の書込みを延期させ、これらの超過
ビットをスタック情報の次の基本単位と組み合わせて書き込むために、又は各基
本単位をメモリ32からフェッチするときにこの基本単位の残部と再組み合わせ
るためにこれらの超過ビットを保持することができる。同様に、メモリ32から
のフェッチ時に、インタフェースユニット366は次の基本単位のフェッチで使
用するために超過ビットと一緒にフェッチする必要があるW−Rビットを保持し
て、2つ以上の基本単位からの情報を格納するメモリ32内のワードを1基本単
位のみからの情報を格納するワードごとに2回アクセスする必要がないようにす
ることができる。或いは又、インタフェースユニット366は2つ以上(M個)
の基本単位を、これらの基本単位が相まってバス幅の整数倍(M*L=N*W)
になるように、一時にフェッチ又は書き込むこともできる。
各スタックごとに異なるメモリを使用するとともに個々のスタックの基本単位
の長さに適応する異なるバス幅を使用するアーキテクチュアを使用すると、装置
を一層効率的にすることができる。しかし、装置のプログラマはこのことを知る
必要はない。その理由は、この場合には命令セットを変更する必要がないためで
ある。一つのアーキテクチャに対するプログラムを他のアーキテクチャに容易に
接続することができる。
第2スタック制御ユニット38は、異なる長さの基本単位を使用する点を除い
て、第1スタック制御ユニット36と同様に動作する。図1のスタック制御ユニ
ットを使用することもできる。
装置は、プログラムカウンタの最上位部分(例えば24ビットプログラムカウ
ンタの場合には15最上位ビット)から導出されるアドレスに対するオフセット
によりアドレスし得るメモリ12、32のブロックを使用する追加のアドレッシ
ングモードに備えることができる。例えば、このアドレッシングモードを使用す
る命令はNビットのオフセットを含む。命令実行ユニットはこの命令を、オフセ
ットのNビットを最下位ビットとして有するとともにプログラムカウンタ(Mビ
ットを含む)のM−N最上位ビットを最上位ビットとして有するアドレスのメモ
リ位置を参照するものとして解釈する。従って、オフセットのために使用する比
較的短い命令長さで隣接する位置の複数の命令に対する共通のデータを参照する
ことができるとともに、サブルーチン命令へのジャンプ後に、共通データをオー
バヘッドを生ずることなくサイケ呈することができる。
場合によっては、タイプコードをデータアイテムと関連させ、例えばデータア
イテムが個別の16ビットワードであるのか、32ビットワードの一部分である
のか(ワードの残部は論理的に隣接するメモリ位置又は論理的に隣接するレジス
タに格納される)を指示するのが望ましい。他の例では、タイプコードは、デー
タアイテムが浮動小数点変数を表わすのか、固定小数点変数を表わすのかを指示
するものとすることができる。タイプコードがデータアイテムと関連する場合に
は、命令実行ユニットは、データアイテムがオペランドとみなされるとき、デー
タアイテムのタイプコードに対応する操作のタイプの実行時選択を行うことがで
きる。これは、タイプの相違ごとに異なる明示命令バージョンが不用になること
を意味する。その結果として、種々の操作の区別のために必要とされる命令バー
ジョンが少数になる。これは、種々の操作の区別に短いマシン命令コードを使用
することができ、命令に必要とされるメモリ容量を低減することができる利点を
もたらす。
タイプコードを有するデータアイテムの使用を実現するために、命令実行ユニ
ットは入来オペランドのタイプを検出する回路と、このタイプ検出回路により制
御され、検出されたタイプに対応する算術論理演算の実行を選択する切換え可能
算術論理演算ユニットとを含む。更に、命令実行ユニットはデータアイテムを一
つのタイプから他のタイプに変換する命令を有する。
タイプをオペランド(特にDオペランド)と関連させるこのような命令実行ユ
ニットを使用する場合には、スタックボインタのインクリメント及びデクリメン
トをスタックの先頭の基本単位のタイプコードの制御の下で調整可能にする必要
がある。例えば、スタックの先頭のアイテムのタイプコードが16ビットワード
を指示する場合、ポップの場合には、スタック制御ユニットがスタックポインタ
を2バイトアドレスづつ(又は1ワードアドレスづつ)減少させ、またスタック
の先頭のアイテムのタイプコードが32ビットワードを指示する場合、ポップの
場合には、スタック制御ユニットがスタックポインタを4バイトアドレスづつ(
又は2ワードアドレスづつ)減少させる。同様に、プッシュの場合には、命令実
行ユニットがプッシュされるデータアイテムのタイプコードを検査し、スタック
制御ユニットにおいて、タイプコードがスタックに16ビットワードを格納する
のか32ビットワードを格納するのかに応じてスタックポインタを2バイト又は
4バイトアドレスづつ増大させる。
この場合には、タイプコードはスタックされるアイテムごとに記憶する必要が
ある。これは、例えば、対応するスタックがプッシュ又はポップされるときに自
動的にプッシュ又はポップされるタイプコードの追加のスタックを維持すること
により実現することができる。
図示の装置は単一集積回路チップデバイスとして実現することができる。本発
明は代表的なプログラムに必要とされるメモリ容量、従ってチップ面積を低減す
るため、この場合に特に有利である。しかし、メモリの少なくとも一部分は集積
チップデバイスの外部メモリとすることもできる。しかし、本発明の装置はメモ
リを有する又は有しない数個の集積回路チップを組み合わせて構成することもで
きる。
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,CY,
DE,DK,ES,FI,FR,GB,GR,IE,I
T,LU,MC,NL,PT,SE),JP
Claims (1)
- 【特許請求の範囲】 1. 第1及び第2スタックを維持する手段と、それぞれ第1及び第2スタック のプッシュ及び/又はポップを生じさせる第1及び第2命令を含む命令セットを 有する命令実行ユニットとを具えるデータ処理装置において、前記第1及び第2 スタックを維持する手段は情報を第1及び第2スタックに、それぞれ互いに等し くなく且つ互いに整数倍でない第1の長さの基本単位及び第2長さの基本単位で プッシュ及び/又はポップすることを特徴とするデータ処理装置。 2. 命令セットは第1及び第2スタックの先頭に対するオフセットに基づいて 格納位置を指定する第1及び第2アドレッシングモードを使用し、オフセットは 関連するスタックに対する基本単位の数で表わされることを特徴とする請求項1 に記載ので処理装置。 3. 第1及び第2スタックを維持する手段と、それぞれ第1及び第2スタック のプッシュ及び/又はポップを生じさせる第1及び第2命令を含む命令セットを 有する命令実行ユニットとを具えるデータ処理装置において、前記第1及び第2 スタックを維持する手段は情報を第1及び第2スタックに、それぞれ互いに等し くない第1の長さの基本単位及び第2長さの基本単位でプッシュ及び/又はポッ プし、且つ命令セットは第1及び第2スタックの先頭に対するオフセットに基づ いて格納位置を指定する第1及び第2アドレッシングモードを使用し、オフセッ トは関連するスタックに対する基本単位の数で表わされることを特徴とするデー タ処理装置。 4. ソースオペランドに対するオフセットを一群のビットを用いて符号化し、 前記ビットの値の第1の所定の組合せが命令実行ユニットによりスタックの先頭 の読出しとともに関連するスタックからのポッピングを行わせ、前記ビットの値 の第2の組合せが命令実行ユニットによりスタックの先頭の読出しを関連するス タックを変化させることなく行わせ、前記ビットの値の他の組合せが命令実行ユ ニットにより関連するスタックの先頭に対しオフセットされた格納位置の読出し を行わせることを特徴とする請求項2又は3記載のデータ処理装置。 5. 結果デスティネーションに対するオフセットを一群のビットを用いて符号 化し、前記ビットの値の第1の所定の組合せが命令実行ユニットにより関連する スタックのプッシングとともにスタックの先頭への書込みを行わせ、前記ビット の値の第2の組合せが命令実行ユニットによりスタックの先頭への書込みをプッ シングを生ずることなく行わせ、前記ビットの値の他の組合せが命令実行ユニッ トにより関連するスタックの先頭に対しオフセットされた格納位置の書込みを行 わせることを特徴とする請求項2又は3記載のデータ処理装置。 6. 第1スタック及び第2スタックからの情報を基本単位で交互に格納し得る 複数の位置を有するメモリ範囲を具え、第1スタックがこのメモリ範囲の先頭か ら成長し、第2スタックがこのメモリ範囲の底から成長することを特徴とする請 求項1−3の何れかに記載のデータ処理装置。 7. 第1スタックがデータスタックであり、第2スタックがアドレススタック であり、命令セット内の命令が第2スタックからの情報を使用してオペランド及 び/又は結果のメモリ位置をアドレスするとともに第1スタックからの情報自身 をオペランド及び/又は結果として使用することを特徴とする請求項1−3の何 れかに記載のデータ処理装置。 8. プログラムの命令の実行中におけるサブルーチンコール及び/又は割込み のためのリターン情報用の第3のスタックを処理する手段を具えていることを特 徴とする請求項1−3の何れかに記載のデータ処理装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP97202530.8 | 1997-08-18 | ||
EP97202530 | 1997-08-18 | ||
EP97202638 | 1997-08-28 | ||
EP97202638.9 | 1997-08-28 | ||
PCT/IB1998/001038 WO1999009469A1 (en) | 1997-08-18 | 1998-07-06 | Stack oriented data processing device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001504969A true JP2001504969A (ja) | 2001-04-10 |
Family
ID=26146789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51295299A Ceased JP2001504969A (ja) | 1997-08-18 | 1998-07-06 | スタック向きデータ処理装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US6502183B2 (ja) |
EP (1) | EP0931286B1 (ja) |
JP (1) | JP2001504969A (ja) |
DE (1) | DE69816775T2 (ja) |
WO (1) | WO1999009469A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
EP1383039B1 (en) | 2002-07-19 | 2011-05-11 | STMicroelectronics Srl | A process and device for managing system stacks during the interrupt stage |
US7660985B2 (en) * | 2003-04-30 | 2010-02-09 | At&T Corp. | Program security through stack segregation |
DE10329680A1 (de) | 2003-07-01 | 2005-02-10 | Universität Stuttgart | Prozessorarchitektur für exakte Zeigeridentifizierung |
US20070074013A1 (en) * | 2003-08-25 | 2007-03-29 | Lonnie Goff | Dynamic retention of hardware register content in a computer system |
GB2418272A (en) * | 2004-09-17 | 2006-03-22 | Marconi Comm Ltd | Processor arrangement having a stack memeory |
US7797505B2 (en) * | 2005-04-25 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | Program stack handling |
US7647482B2 (en) * | 2006-03-31 | 2010-01-12 | Intel Corporation | Methods and apparatus for dynamic register scratching |
US8055886B2 (en) * | 2007-07-12 | 2011-11-08 | Texas Instruments Incorporated | Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction |
US8860715B2 (en) * | 2010-09-22 | 2014-10-14 | Siemens Corporation | Method and system for evaluation using probabilistic boosting trees |
GB2486738B (en) * | 2010-12-24 | 2018-09-19 | Qualcomm Technologies Int Ltd | Instruction execution |
FR3013869B1 (fr) * | 2013-11-22 | 2016-01-01 | Thales Sa | Procede de detection des debordements de pile et processeur pour la mise en oeuvre d'un tel procede |
DE102016202378B4 (de) | 2016-02-17 | 2020-04-23 | Continental Automotive Gmbh | Anordnung zur Erfassung der Winkelposition eines drehbaren Bauteils |
US11126657B2 (en) * | 2018-06-11 | 2021-09-21 | Alibaba Group Holding Limited | Efficient in-memory representation of computation graph for fast serialization and comparison |
US11782871B2 (en) | 2021-04-27 | 2023-10-10 | Microchip Technology Inc. | Method and apparatus for desynchronizing execution in a vector processor |
WO2022231649A1 (en) * | 2021-04-27 | 2022-11-03 | Microchip Technology Inc. | System of multiple stacks in a processor devoid of an effective address generator |
CN113721809B (zh) * | 2021-09-08 | 2023-07-04 | 遨博(江苏)机器人有限公司 | 一种窗口展示方法及系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3786432A (en) * | 1972-06-20 | 1974-01-15 | Honeywell Inf Systems | Push-pop memory stack having reach down mode and improved means for processing double-word items |
US4325120A (en) * | 1978-12-21 | 1982-04-13 | Intel Corporation | Data processing system |
DE3587591T2 (de) * | 1984-11-21 | 1994-04-28 | Harris Corp | Mikroprozessor für Forth-ähnliche Sprache. |
GB8602964D0 (en) * | 1986-02-06 | 1986-03-12 | Metaforth Computer Systems Ltd | Computer architecture |
JPH0337723A (ja) * | 1989-07-05 | 1991-02-19 | Hitachi Ltd | 情報処理装置 |
US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
JPH03206525A (ja) * | 1990-01-09 | 1991-09-09 | Seiko Instr Inc | シングルチップマイコンのスタック方式 |
US5335332A (en) * | 1991-12-24 | 1994-08-02 | International Business Machines Corporation | Method and system for stack memory alignment utilizing recursion |
US5634046A (en) * | 1994-09-30 | 1997-05-27 | Microsoft Corporation | General purpose use of a stack pointer register |
US5903899A (en) * | 1997-04-23 | 1999-05-11 | Sun Microsystems, Inc. | System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks |
US6058457A (en) * | 1997-06-23 | 2000-05-02 | Sun Microsystems, Inc. | Method for storing method frames in multiple stacks |
-
1998
- 1998-07-06 JP JP51295299A patent/JP2001504969A/ja not_active Ceased
- 1998-07-06 EP EP98928490A patent/EP0931286B1/en not_active Expired - Lifetime
- 1998-07-06 WO PCT/IB1998/001038 patent/WO1999009469A1/en active IP Right Grant
- 1998-07-06 DE DE69816775T patent/DE69816775T2/de not_active Expired - Fee Related
- 1998-08-03 US US09/128,150 patent/US6502183B2/en not_active Expired - Fee Related
-
2001
- 2001-03-07 US US09/801,081 patent/US6557093B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO1999009469A1 (en) | 1999-02-25 |
US6557093B2 (en) | 2003-04-29 |
US20010010071A1 (en) | 2001-07-26 |
US20020002665A1 (en) | 2002-01-03 |
DE69816775D1 (de) | 2003-09-04 |
DE69816775T2 (de) | 2004-05-27 |
US6502183B2 (en) | 2002-12-31 |
EP0931286B1 (en) | 2003-07-30 |
EP0931286A1 (en) | 1999-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2001504969A (ja) | スタック向きデータ処理装置 | |
US10514922B1 (en) | Transfer triggered microcontroller with orthogonal instruction set | |
US7558944B2 (en) | Microcomputer | |
US8650386B2 (en) | Data processor including an operation unit to execute operations in parallel | |
KR100328162B1 (ko) | 정보처리회로와마이크로컴퓨터와전자기기 | |
US5966514A (en) | Microprocessor for supporting reduction of program codes in size | |
KR100314484B1 (ko) | 정보 처리기 | |
KR19990037573A (ko) | 사용가능한 연산코드를 최대화하고 다양한 어드레싱 모드를 실행하는 프로세서 구조 및 명령 세트 | |
JP3344316B2 (ja) | ディジタル信号処理装置及び信号処理システム | |
EP0915415A2 (en) | Stack pointer with post increment/decrement operation | |
US6345353B2 (en) | Stack pointer with post increment/decrement allowing selection from parallel read/write address outputs | |
US5649229A (en) | Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage | |
JP2001043082A (ja) | 情報処理装置並びに命令コーディング方法及び命令デコーディング方法 | |
CA1232075A (en) | Method of handling machine-coded instruction words and data processor for carrying out the method | |
JP3199604B2 (ja) | プロセッサ | |
EP0650614B1 (en) | Digital signal processor architecture | |
US6697938B1 (en) | Microcomputer executing an ordinary branch instruction and a special branch instruction | |
JP3124361B2 (ja) | メモリデータロード装置 | |
JP3060917B2 (ja) | プロセッサ | |
JP2002082799A (ja) | ディジタル信号処理装置及び信号処理システム | |
JPH10207708A (ja) | プログラマブルコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050704 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060328 |
|
A313 | Final decision of rejection without a dissenting response from the applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A313 Effective date: 20060814 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060919 |