JPH08255476A - データ処理システムにおけるメモリ拡張スタック装置および方法 - Google Patents

データ処理システムにおけるメモリ拡張スタック装置および方法

Info

Publication number
JPH08255476A
JPH08255476A JP7350435A JP35043595A JPH08255476A JP H08255476 A JPH08255476 A JP H08255476A JP 7350435 A JP7350435 A JP 7350435A JP 35043595 A JP35043595 A JP 35043595A JP H08255476 A JPH08255476 A JP H08255476A
Authority
JP
Japan
Prior art keywords
stack
hardware
memory
counter
value
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
JP7350435A
Other languages
English (en)
Inventor
Paul Marino
ポール・マリノ
Zvika Rozenshein
ズビカ・ローゼンシェイン
Philippe Sixou
フィリップ・シクソウ
David Hass
デビッド・ハアス
Elkana Ben-Sinai
エルカナ・ベン−シナイ
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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Publication of JPH08255476A publication Critical patent/JPH08255476A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements 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/785Arrangements 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 ハードウエア・スタック71の有効サイズを
拡張し、ハードウエア・スタック71内でプログラムを
実行させ続け、処理の高速化を図るメモリ拡張スタック
80を提供する。 【解決手段】 メモリ拡張スタック80がイネーブルさ
れ、ハードウエア・スタック71がほぼ満杯のとき、デ
ータ処理システム20内の選択されたランダム・アクセ
ス・メモリ位置にメモリ拡張スタック80を形成する。
ハードウエア・スタック71がほぼ満杯のとき、ハード
ウエア・スタック71内で実行中のプログラムに移動命
令を挿入して、ハードウエア・スタック71の最後部か
らエントリをメモリ拡張スタック80に移動する。ハー
ドウエア・スタック71がほぼ空のとき、移動命令をプ
ログラムに挿入して、メモリ拡張スタック80からのエ
ントリをハードウエア・スタック71の最後部に移動す
る。移動命令は、自動的にプログラムに挿入される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にデータ処理シ
ステムに関し、更に特定すれば、データ処理システム内
にメモリ拡張スタック(memory extension stack)を実施
する装置および方法に関するものである。
【0002】
【従来の技術】デジタル信号処理とは、規則的な間隔で
サンプリングされデジタル化されたリアルタイム信号の
算術演算処理のことである。デジタル信号プロセッサ
(DSP)は、データのフィルタ処理、混合、および比
較のようなデジタル信号処理機能を実行する。データ処
理システムの中には、デジタル信号処理の内ルーチン・
タスク(chores)を扱うために、DSPがホストプロセッ
サと共に含まれているものもある。また、ホスト・プロ
セッサは、例えば、マイクロコンピュータたまたはマイ
クロプロセッサを含むものもある。
【0003】デジタル信号処理において共通して用いら
れている命令にDO命令がある。DO命令は、所定の命
令を所定回数繰り返して実行するループ命令である。D
SPにおいては、DO命令はハードウエアで実施するこ
とができる。また、ネスト状DOループや、DOループ
内のDOループもあり得る。命令を素早く実行するため
に、データ処理システムの中には、最初に命令オペラン
ドをハードウエア・スタック、即ち、後入れ先出し(L
IFO:last in, first out)メモリにロードするものが
ある。スタックは、データ処理システムにおいて一般的
に用いられており、当技術では公知である。スタック・
ポインタを用いて、スタックの先頭を示し、またスタッ
ク・カウンタを用いて、当該スタック内に有効なエント
リがいくつあるか、およびいつスタックが空または満杯
になるかを判定する。命令オペランドおよび/またはデ
ータは、「プッシュ(push)」動作によって、スタックの
「先頭」に加えられ、この命令オペランドおよび/また
はデータは、「ポップ(pop)」動作によってスタックの
先頭から除去される。ハードウエア・スタックに加え
て、ランダム・アクセス・メモリ(RAM)においてス
タックをエミュレートすることもできる。エミュレート
されたスタックは、スタック・ポインタとしてグローバ
ル・アドレス・レジスタ(global address register)を
用いる。
【0004】ハードウエア・スタックは典型的に非常に
高速であるが、ハードウエア・スタックは比較的小さ
く、アプリケーションによっては小さ過ぎる場合もあ
る。一方、エミュレートされたスタックはほぼ無限のサ
イズを有することができるが、例えば、DO命令、JS
R(サブルーチンへジャンプ(jump to subroutine)命
令、またはRTS(サブルーチンから戻る(return from
subroutine))命令を含む、デジタル信号処理アプリケ
ーションには、処理が遅すぎる。通常、ハードウエア・
スタックのほうがエミュレートされたスタックよりも大
幅に処理が速い。
【0005】命令は、C言語のような高級プログラム言
語で書かれるのが常である。コンピュータ・プログラム
は、かかる高級プログラム言語を機械語に変換する。デ
ータ処理システムで特別にハードウエアの制限がある場
合は、これをコンパイラにプログラムされなければなら
ない。例えば、データ処理システムのハードウエア・ス
タックが十分大きくない場合、プログラムを終了させる
か、またはコンパイラはこのハードウエア・スタックを
用いないようにすることさえある。代わりに、コンパイ
ラはエミュレートされたスタックを「構築」すればよ
い。加えて、コンパイラは、ネスト状のDOループが存
在するか否か、またはいくつネスト状のDOループがあ
るかが分からないことがあり、これが原因となってコン
パイラがハードウエア・スタックを放棄したり、プログ
ラムを終了させてしまうこともある。処理速度を最大に
高めるためには、コンパイラをハードウエア・スタック
内に常駐させ、命令を実行させることが重要である。コ
ンパイラをハードウエア・スタック内に常駐させる1つ
の方法は、スタックを用いる命令の数を、ハードウエア
・スタック内の全エントリ数未満に制限することであ
る。しかしながら、例えば、Cコンパイラを用いる場
合、プログラマがプログラム内の命令数を制限すること
はできない。
【0006】
【発明が解決しようとする課題】従来技術のシステムに
は、スタックをセクタに分割したものがある。プログラ
ムがサブルーチンにジャンプする毎に、スタックが「回
転(rotates)」し、新たなスタックが使用可能となる。
しかしながら、全セクタを用いてしまい新たなセクタが
必要となった場合、セクタ全体をメモリにセーブするこ
とになる。セクタをメモリにセーブすることに伴う問題
は、貴重なメモリ空間が非効率的に使用される可能性が
あることである。加えて、新たなセクタがメモリにセー
ブされている際、比較的長い時間期間にわたってプログ
ラムを停止しなければならない。
【0007】
【課題を解決するための手段】したがって、一形態で
は、ハードウエア・スタックと、スタック・カウンタ
と、制御論理回路とを有するデータ処理システムを提供
する。ハードウエア・スタックは、N個のエントリの二
進情報を、後入れ先出し方式に基づいて記憶する。ここ
で、Nは整数である。スタック・カウンタはハードウエ
ア・スタックに結合され、N個のエントリの内満杯にな
っているものの数を数える。制御論理回路はハードウエ
ア・スタックとスタック・カウンタとに結合され、N個
の内所定数のエントリが満杯になったときを検出する。
N個の内所定数のエントリが満杯になったとき、第1エ
ントリをハードウエア・スタックからメモリ拡張スタッ
クへ移動する。また、制御論理回路は、N個の内所定数
のエントリが空になったときを検出する。N個の内所定
数のエントリが空になったとき、第2エントリをメモリ
拡張スタックからハードウエア・スタックに移動させ
る。
【0008】他の実施例では、データ処理システムは、
ハードウエア・スタックとスタック・カウンタとを有
し、ハードウエア・スタックのプッシュ動作を実行する
方法を含む。この方法は、スタック・カウンタ内の値を
増分する段階と、スタック・カウンタ内の値を監視し、
スタック・カウンタ内の値が所定値未満の場合ハードウ
エア・スタック内のエントリをメモリ拡張スタックに移
動し、スタック内の値が所定値以上の場合ハードウエア
・スタックからエントリを移動する段階とを含む。
【0009】これらのおよびその他の特徴および利点
は、添付図面に関連付けて記載した以下の詳細な説明か
ら、より明確に理解されよう。
【0010】
【実施例】概して言えば、本発明は、データ処理システ
ムにおいてランダム・アクセス・メモリの選択された位
置に形成されるメモリ拡張スタックを提供するものであ
る。このメモリ拡張スタックは、データ処理システム内
のハードウエア・スタックがほぼ満杯またはほぼ空にな
ったときにイネーブルされる。ハードウエア・スタック
がほぼ満杯の場合、実行中のプログラムに移動命令を挿
入することによって、ハードウエア・スタックの最後部
からエントリをメモリ拡張スタックに移動させる。ハー
ドウエア・スタックがほぼ空の場合、プログラムに移動
命令を挿入することによって、メモリ拡張スタックから
エントリをハードウエアの最後部に移動させる。移動命
令は、ユーザがこの移動命令を書き込むかのように、自
動的にプログラムに挿入される。これによって、プログ
ラムはハードウエアを実行させ続けることができ、ハー
ドウエア・スタックの高速処理を利用しつつ、ハードウ
エア・スタックの有効なサイズを増大させ、しかも使用
可能なメモリ空間の効果的な使用を図ることができる。
【0011】尚、信号、ステータス・ビット、または同
様の装置(apparatus)をその論理真または論理虚の状態
にすることを意味する場合、「アサート」および「ニゲ
ート」という用語を、それぞれ用いることにする。論理
正状態がデジタル論理レベル1の場合、論理虚状態はデ
ジタル論理レベル0となる。また、論理正状態がデジタ
ル論理レベル0の場合、論理虚状態はデジタル論理レベ
ル1となる。また、データ、アドレス、制御、またはス
テータスのような1つ以上の種々の情報を転送するため
に用いられる複数の信号を意味する場合に、「バス」と
いう用語を用いることにする。
【0012】これより図1ないし図5を参照しながら、
本発明をより詳細に説明する。図1、図2、図5に示す
各ブロックは回路を表わす。また、図3、図5に示す各
ブロックは、フロー・チャートの1つ以上のステップを
表わす。図1は、本発明によるデータ処理システム20
をブロック図形状で示す。図1に示す実施例では、デー
タ処理システム20はデジタル信号プロセッサ(DS
P)であり、単一の集積回路上に配置されている。他の
実施例では、データ処理システム20は、例えば、マイ
クロコンピュータまたはマイクロプロセッサとすること
もできる。データ処理システム20は、タイマ22、ホ
スト・インターフェース24、改良型直列同期インター
フェース(ESSI)26、直列非同期インターフェー
ス(SCI)28、プログラムRAM(ランダム・アク
セス・メモリ)および命令キャッシュ30、Xメモリ3
2、Yメモリ34、アドレス発生器/直接メモリ・アク
セス(DMA)コントローラ36、外部アドレス・バス
・スイッチ38、内部データ・バス・スイッチ40、D
RAM(ダイナミック・ランダム・アクセス・メモリ)
およびSRAM(スタティック・ランダム・アクセス・
メモリ)バス・インターフェースおよび命令キャッシュ
制御部42、外部データ・バス・スイッチ44、プログ
ラム制御部(PCU)46、ならびにデータ算術処理部
(ALU)54を含む。プログラム制御部46は、プロ
グラム割り込みコントローラ48、プログラム・デコー
ド・コントローラ50、およびプログラム・アドレス発
生器52を含む。
【0013】「YAB」と表記されたアドレス・バス5
6、「XAB」と表記されたアドレス・バス57、「PAB」
と表記されたプログラム・アドレス・バス58、「DA
B」と表記されたアドレス・バス59が、アドレス発生
器/DMAコントローラ36と外部アドレス・バス・ス
イッチ38との間に結合されている。「DDB」と表記さ
れたデータ・バス60が、ホスト・インターフェース2
4と外部データ・バス・スイッチ44との間に結合され
ている。「YDB」と表記されたデータ・バス61、「XD
B」と表記されたデータ・バス62、「PDB」と表記され
たプログラム・データ・バス63、および「GDB」と表
記されたプログラム・データ・バス64が、内部プログ
ラム・データ・バス64と外部データ・バス・スイッチ
44との間に結合されている。
【0014】タイマ22は、内部または外部タイミング
を用いることができる3個のタイマを含み、データ処理
システム20に割り込みをかけたり、あるいは外部装置
に通知することができる。加えて、タイマ22は、指定
された回数の事象が生じた後にDMA転送を通知するた
めに用いることもできる。3個のタイマの各々は、単一
の双方向ピン即ち端子に結合されている。加えて、タイ
マ22の各タイマは、バス57、バス59、プログラム
割り込みコントローラ48、およびバス60に結合され
ている。
【0015】ホスト・インターフェース24は、データ
処理システム20と、マイクロコンピュータ、マイクロ
プロセッサ、またはDMAコントローラのような他の素
子との間の通信のために、双方向インターフェースを提
供する。また、ホスト・インターフェース24は、バス
60を介して外部データ・バス・スイッチ44に双方向
結合され、更にバス57,59を介して、グローバル・
データ・バス64、プログラム割り込みコントローラ4
8、アドレス発生器/DMAコントローラ36、および
外部アドレス・バス・スイッチ38に双方向結合されて
いる。加えて、ホスト・インターフェース24は、双方
向データ転送、アドレス・レジスタの選択、およびホス
ト・プロセッサからの制御通信のために、50本の外部
ピン即ち端子に双方向結合されている。
【0016】改良型直列同期インターフェース(ESS
I)26は、12本の双方向外部ピンに結合され、例え
ば、1つ以上の業界標準コデック、DSP(デジタル信
号プロセッサ)、またはマイクロプロセッサを含む外部
直列素子との直列通信を提供する。ESSI26は、バ
ス57、バス59、およびバス60に結合された端子も
有する。
【0017】直列通信インターフェース(SCI)28
は、2本の双方向外部ピンに結合され、外部装置との直
列通信を提供する。SCI28は、バス57、バス5
9、およびバス60に結合された端子も有する。
【0018】図1に示すデータ処理システム20の実施
例は、プログラムおよび命令キャッシュ30、Xメモリ
33、およびYメモリ34という3カ所のメモリ空間を
有する。他の実施例では、メモリ空間の数は、これより
多くても少なくてもよい。プログラムRAMおよび命令
キャッシュ30は、アドレス・バス58とデータ・バス
63とに結合されている。Xメモリ32は、アドレス・
バス57、アドレス・バス59、データ・バス60、お
よびデータ・バス62に結合されている。Yメモリ34
は、アドレス・バス56、アドレス・バス59、データ
・バス60、およびデータ・バス61に結合されてい
る。
【0019】アドレス発生器/DMAコントローラ36
は、アドレス・バス56,57,58,59に結合され
ている。アドレス発生器/DMAコントローラ36は、
タイマ22、ホスト・インターフェース24、ESSI
26、SCI28、プログラムRAMおよび命令キャッ
シュ30、Xメモリ32、Yメモリ34、外部アドレス
・バス・スイッチ38、ならびにDRAMおよびSRA
Mバス・インターフェースおよび命令キャッシュ制御部
42に、メモリ・アドレスを供給する。好適実施例で
は、DMAコントローラは、6個のチャネルを有する。
【0020】DRAMおよびSRAMバス・インターフ
ェースならびに命令キャッシュ制御部42は、プログラ
ム・アドレス・バス58と、14本の双方向外部ピンと
に結合されている。DRAMおよびSRAMバス・イン
ターフェースならびに命令キャッシュ制御部42の命令
キャッシュは、外部メイン・メモリ(図示せず)とプロ
グラム制御部46との間で、バッファ・メモリとして機
能する。命令キャッシュは、頻繁に用いられるプログラ
ム命令を記憶するものである。プログラムによって要求
される命令ワードをキャッシュ内で得られるようにして
おけば、メモリ位置にアクセスするのに要する時間が不
要となるので、結果的に性能の向上を図ることができ
る。
【0021】内部データ・バス・スイッチ40は、デー
タ・バス60、データ・バス61、データ・バス62、
プログラム・データ・バス63、およびグローバル・デ
ータ・バス64に結合されている。外部データ・バス・
スイッチ44は、データ・バス60、データバス61、
データ・バス62、プログラム・データ・バス63、お
よびグローバル・データ・バス64を介して内部データ
・バス・スイッチ40に結合されている。加えて、外部
データ・バス・スイッチ44は、タイマ22、ホスト・
インターフェース24、ESSI26、およびSCI2
8に、データ・バス60を介して結合されている。内部
データ・バス・スイッチ40は、バス間転送のために用
いられる。内部データ・バス・スイッチ40によって、
いずれか2本のバスを共に接続することができる。外部
アドレス・バス・スイッチ38と外部データ・バス・ス
イッチ44は、外部バス(図示せず)を、いずれかの内
部アドレス・バスおよびいずれかの内部データ・バスに
それぞれ結合する。
【0022】プログラム制御部46では、プログラム割
り込みコントローラ38は割り込み要求間の仲裁を行
い、タイマ22、ホスト・インターフェース24、ES
SI26、およびSCI28に結合されている。また、
プログラム割り込みコントローラ48は、グローバル・
データ・バス64およびプログラム・デコード・コント
ローラ50に、双方向結合されている。プログラム・デ
コード・コントローラ50は、各24ビット命令をデコ
ードするものであり、プログラム割り込みコントローラ
48とプログラム・アドレス発生器52とに双方向結合
されている。プログラム・アドレス発生器52は、プロ
グラム・アドレスの発生、システム・スタック、および
ループ制御に必要な全ハードウエアを含む。加えて、プ
ログラム・アドレス発生器52は、プログラム・アドレ
ス・バス58とプログラム・データ・バス63とに結合
されている。
【0023】データ算術演算論理部(ALU)54は、
プログラム・データ・バス63、データ・バス61、お
よびデータ・バス62に結合されている。データALU
54は、データ・オペランド上の算術演算および論理演
算の全てを行う。データALU54はレジスタを含み、
これらはバス61,62を通じて、読み出しおよび書き
込みが可能である。データALU54は、バス63とバ
ス60とにも結合されている。
【0024】クロック発生回路(図示せず)は、図1に
示すブロック全てにクロック信号を供給する。図1には
示していないが、データ処理システム20には検査回路
も含まれている。
【0025】図2は、図1のプログラム制御部46の一
部70を、ブロック図形形状で示す。部分70は、通
常、プログラム・アドレス発生器52内に配置され、ハ
ードウエア・スタック71、パイプライン・レジスタ9
0,91,92、制御論理回路106、スタック・ポイ
ンタ・レジスタ・ビット・フィールド94、外部ポイン
タ・レジスタ・ビット・フィールド96、動作モード・
レジスタ104、スタック・サイズ・レジスタ・ビット
・フィールド102、スタック・カウンタ・レジスタ・
ビット・フィールド100、およびカウンタ108,1
10,112を含む。ハードウエア・スタック71は、
N個のエントリを含む。Nは整数である。N個のエント
リの各々は、二進情報を記憶するための2個の24ビッ
ト・レジスタを含む。例えば、エントリ0はレジスタ7
2,73を含み、ハードウエア・スタック71の最後部
にある。エントリ1はレジスタ74,75を含み、エン
トリ2はレジスタ76,77を含み、エントリN−1は
レジスタ78,79を含み、ハードウエア・スタック7
1の先頭にある。レジスタ73,75,77,79はハ
ードウエア・スタック71の「STACK HIGH」ビットを形
成し、レジスタ72,74,76,78はハードウエア
・スタック71の「STACK LOW」ビットを形成する。ハ
ードウエア・スタック71内に記憶される情報は、プロ
グラム命令またはデータを含むことができる。しかしな
がら、ハードウエア・スタック71に記憶される情報の
性質は、本発明を説明する目的にとっては重要ではな
く、命令、データ、またはそれらの双方を含むことがで
きる。
【0026】メモリ拡張スタック・モードがイネーブル
され、かつハードウエア・スタック71がほぼ満杯のと
き、データ処理システム20内の選択されたメモリ位置
にメモリ拡張スタック80が形成される。例えば、メモ
リ拡張スタック80は、Xメモリ32またはYメモリ3
4、あるいはデータ処理システム20の他に使用可能な
いずれかのメモリ空間に形成することができる。例示の
目的のために、メモリ拡張スタック80は、それぞれ0
〜6と付番された、24ビットのエントリ81〜87を
含むものとする。他の実施例では、メモリ拡張スタック
80内の各エントリのビット数は24より多くても少な
くてもよい。潜在的に、メモリ拡張スタック80内のエ
ントリ数は、使用可能なメモリ空間のサイズによっての
み制限される。
【0027】制御論理回路106は、カウンタ108,
110,112に双方向結合されている。カウンタ10
8はスタック・ポインタ・ビット・フィールド94に双
方向結合され、スタック・ポインタ・ビット・フィール
ドを1増分または減分するために用いられる。カウンタ
110は外部ポインタ・ビット・フィールド96に双方
向結合され、拡張ポインタ・ビット・フィールド86を
1増分または減分するために用いられる。カウンタ11
2はスタック・カウンタ・ビット・フィールド100に
双方向結合され、スタック・カウンタ・ビット・フィー
ルド100を1増分または減分するために用いられる。
制御論理回路106は、スタック・サイズ・ビット・フ
ィールド102、パイプライン・レジスタ90〜92、
および動作モード・レジスタ104にも双方向結合され
ている。制御論理回路106は、メモリ拡張スタック・
モードを含む、部分70の動作を制御する。
【0028】スタック・ポインタ・レジスタ・ビット・
フィールド94、拡張ポインタ・レジスタ・ビット・フ
ィールド96、動作モード・レジスタ104、スタック
・サイズ・レジスタ・ビット・フィールド102、およ
びスタック・カウンタ・レジスタ・ビット・フィールド
100は全て、データ処理システム20のプログラマ・
モデル(progurammer's model)の一部である。データ処
理システム20では、スタック・ポインタ・レジスタ・
ビット・フィールド94は、24ビットを有するスタッ
ク・ポインタ・レジスタ内に配置されている。スタック
・ポインタ・レジスタ・ビット・フィールド94は、D
O命令またはジャンプ命令のような命令によって暗示的
に参照される。スタック・ポインタ・レジスタ・ビット
・フィールド94内の値は、ハードウエア・スタック7
1内で最後に使用された位置、言い換えれば、スタック
の先頭を指し示すために用いられる。
【0029】拡張ポインタ・レジスタ・ビット・フィー
ルド96は、24ビット・レジスタ内に配置されてい
る。拡張ポインタ・レジスタ・ビット・フィールド96
は、DO命令またはJSR命令のような命令によって暗
示的に参照され、または移動命令によって直接参照され
る。メモリ拡張スタック80への移動動作またはメモリ
拡張スタック80からの移動動作が必要なときはいつで
も、拡張ポインタ・レジスタ・ビット・フィールド96
内の値は、メモリ拡張スタック80内の位置を指し示し
ている。
【0030】動作モード・レジスタ104にはスティキ
・ビット(sticky bit)161が含まれており、これは図
5に示されている。スティキ・ビット161は、メモリ
拡張スタック80がアクセスされたときはいつでもアサ
ートされる。スティキ・ビット161は、プログラム開
発の間プログラマを補佐するものとして有用であり、メ
モリ拡張スタック80が使用されているときをプログラ
マに知らせることができる。「スティキ・ビット」は、
データ処理では一般的に用いられており、「ラップ・ビ
ット(wrap bit)」と呼ばれることもある。
【0031】スタック・サイズ・レジスタ・ビット・フ
ィールド102は、24ビット・レジスタ内に配置さ
れ、スタック拡張がイネーブルされたときに、ハードウ
エア・スタックのサイズを決定する値を記憶する。スタ
ック・サイズ・レジスタ・ビット・フィールド102
は、スタック・ポインタ・レジスタ・ビット・フィール
ド94が、スタック・サイズ・レジスタ・ビット・フィ
ールド102内の値に達したときに、動作モード・レジ
スタ104にオーバーフロー・フラグを発生するために
も用いられる。
【0032】スタック・カウンタ・レジスタ・ビット・
フィールド100は5ビットを用い、5ビット・レジス
タに含まれている。スタック・カウンタ・レジスタ・ビ
ット・フィールド100は、ハードウエア・スタック7
1内で実際に使用されているエントリの数を監視する。
動作モード・レジスタ104は、スタック拡張イネーブ
ル・ビット、スティキ・ビット161、スタック拡張オ
ーバーフロー・フラグ、スタック拡張アンダーフロー・
フラグ、およびスタック拡張空間選択ビットを含む。動
作モード・レジスタ104については、後に図5の検討
の際に更に説明する。
【0033】パイプライン・レジスタ90,91は、ハ
ードウエア・スタック71とバス58,64との間に結
合されている。パイプライン・レジスタ92は、メモリ
拡張スタック80とバス62との間に結合されている。
パイプライン・レジスタ90〜92は、パイプライン処
理を容易にするためにデータ処理システム20内に含ま
れているが、他の実施例では含まれていなくてもよい。
パイプライン・レジスタ90〜92は、データ処理シス
テム20のためのプログラマ・モデルには含まれないこ
とに注意されたい。上述のように、内部データ・バス・
スイッチ40によって、バス61,62,63,64の
いずれか2本のバスを共に接続することができる。内部
データ・バス・スイッチ40は図2にも示されており、
メモリ拡張スタックの動作説明を補佐するために、バス
64に結合されている。
【0034】メモリ拡張スタックの動作について、図3
および図4のフロー・チャートを参照しながら説明す
る。図3は、本発明の一実施例によるメモリ拡張スタッ
ク80を利用して、ハードウエア・スタック71のプッ
シュ動作を実行するために必要なステップをフロー・チ
ャート形状で示す。菱形ボックス123は判断ステップ
を表わし、矩形ボックス120,121,122,12
3,124,125,126,127,128,129
は、プッシュ動作において実行されるステップを表わ
す。
【0035】MOVEのような明示命令(explicit inst
ruction)によって、またはサブルーチンへジャンプのよ
うな暗示命令(implicit insturction)によって、データ
がハードウエア・スタック71にプッシュされるとき、
まずスタック・ポインタおよびスタック・カウンタを増
分し、次に新たなスタック・ポインタ位置にデータを書
き込む。スタック・カウンタ・レジスタ・ビット・フィ
ールド内の値が所定数に達し、ハードウエア・スタック
71がほぼ満杯であることが示された場合、ハードウエ
ア・スタックに書き込む代わりに、プログラムは2サイ
クルの間停止し、ハードウエア・スタック71からメモ
リ拡張スタック80への特殊移動を2回実行する。
【0036】図2および図3の双方を参照する。プッシ
ュ動作を開始するために、ステップ120において、ス
タック・ポインタ・レジスタ・ビット・フィールド94
内の値を、カウンタ108によって1増分する。ステッ
プ121において、スタック・カウンタ・レジスタ・ビ
ット・フィールド94内の値を、カウンタ112によっ
て1増分する。ステップ122において、値SPによっ
て指し示されたハードウエア・スタック71内の位置に
データを書き込む。判断ステップ123において、ハー
ドウエア・スタック71がほぼ満杯か否かを判定する。
好適実施例では、「ほぼ満杯」は、ハードウエア・スタ
ック71内の空の即ち未使用のエントリが2個しかない
ことを意味する。これは、スタック・カウンタ・レジス
タ・ビット・フィールド100の値がN−2より大きい
ことによって示される。Nはハードウエア・スタック7
1のエントリの総数を表わす整数である。好適実施例で
は、Nは16である。他の実施例では、「ほぼ満杯」の
とき、空のエントリは2個より多くても少なくてもよ
い。実際には、エントリが空になることはなく、単に他
の情報を上書き可能となるだけであることを注記してお
く。スタック・カウンタ・ビット・フィールド100内
の値がN−2以下の場合、ステップ123から「NO」
経路が選択され、ハードウエア・スタック71へのアク
セスは終了する。スタック・カウンタ・レジスタ・ビッ
ト・フィールド100の値がN−2より大きい場合、ス
テップ123からステップ124へ「YES」経路が選
択される。
【0037】ステップ124において、SP−SC+1
によって定義されるように、ハードウエア・スタック7
1の「STACK LOW]側の「最終」エントリから、データを
移動する。ここで、SPはスタック・ポインタ・レジス
タ・ビット・フィールド94の値であり、SCはスタッ
ク・カウンタ・レジスタ・ビット・フィールド100の
値である。ハードウエア・スタック71内のエントリか
らメモリ拡張スタック80に48ビットが移動され、メ
モリ拡張スタックの各エントリは24ビットを含むの
で、移動動作が2回必要となる。「STACK LOW」側の最
終エントリにおけるデータを、メモリ拡張スタック80
に移動する。これは、Xメモリ32またはYメモリ34
(図1)のような、RAM内の指定された位置である。
拡張ポインタ・レジスタ・ビット・フィールド96の値
は、データを受けるために選択されたメモリ拡張スタッ
ク80内の位置を指し示す。ステップ125において、
拡張ポインタ・ビット・フィールド96の値を増分す
る。ステップ126において、ハードウエア・スタック
71の「STACK HIGH」側の最終エントリのデータを、メ
モリ拡張スタック80の次の位置に移動する。拡張ポイ
ンタ・レジスタ・ビット・フィールド96は、データを
受けるために選択されたメモリ拡張スタック80内の位
置を指し示す。ステップ127において、拡張ポインタ
・レジスタ・ビット・フィールド96の値を再び1増分
する。各移動の後に、拡張ポインタ・レジスタ・ビット
・フィールド96の値EPを1増分する。ステップ12
8において、スタック・カウンタ・レジスタ・ビット・
フィールド100の値を1減分する。
【0038】ステップ129において、メモリ拡張スタ
ック80への以前のアクセスによってスティキ・ビット
(sticky bit)161が既にアクセスされていなければ、
スティキ・ビット161をアサートし、メモリ拡張スタ
ック80へのアクセスが発生したことを記録する。上述
のように、メモリ拡張スタック・モードがイネーブルさ
れた場合、プログラムを2サイクルの間停止し、2ワー
ドをハードウエア・スタック71からまたはハードウエ
ア・スタック71へ移動する。2サイクル余分にかかる
ことによって、アプリケーションによっては、結果の到
達が遅すぎる場合がある。アプリケーションを開発中の
プログラマは、時間に厳しい動作(timecritical operat
ion)において、結果が得られる最新時間を知らなければ
ならない場合がある**。例えば、DOループは重要な
動作であり得る。プログラム開発の間、プログラマはス
ティキ・ビット161をチェックして、これがDOルー
プの内部でアサートされているかを確かめることができ
る。スティキ・ビット161がアサートされている場
合、スタック拡張を支援するために、制御論理回路10
6によって少なくとも移動動作が2回挿入されたことに
なる。
【0039】データ処理システム20はパイプライン構
成となっているので、プッシュの実行が追加されること
もあり、それが制御論理回路106によって検出される
前に、スタック・カウンタ・レジスタ・ビット・フィー
ルド100内の値を再び増分する。この場合、ハードウ
エア・スタック71からメモリ拡張スタック80にエン
トリを2個移動するので、合計4個の移動命令が必要と
なる。少なくとも2個のエントリを常に自由にしておく
ことによって、DO命令を正しく実行することができ
る。したがって、判断ステップ123へのリターンが実
行される。判断ステップ123において、スタック・カ
ウンタ・レジスタ・ビット・フィールド100の値を再
度チェックする。SCが未だN−2よりも大きい場合、
ステップ123からステップ124への「YES」経路
が選択され、ステップ124ないしステップ129を上
述のように繰り返す。スタック・カウンタ・レジスタ・
ビット・フィールド100の値がN−2より小さい場
合、ステップ129から「NO」経路を選択し、ハード
ウエア・スタック71の少なくとも2個のエントリが空
であることを示す。
【0040】一例として、SPが17に等しく、SCが
15に等しく、EPが4に等しい(メモリ拡張スタック
80のエントリ85)場合、ハードウエア・スタック7
1の最後部は、エントリ17−15+1=3となる。レ
ジスタ74,75の内容をメモリ拡張スタック80に移
動するために、移動動作が2回必要となる。最初の移動
動作では、レジスタ74の内容を、メモリ拡張スタック
80内のエントリ85に移動する。値EPを5に増分
し、レジスタ75の値をメモリ拡張スタック80のエン
トリ86に移動する。値EPを6に増分し、レジスタ7
5の内容を、メモリ拡張スタック80のエントリ86に
移動する。
【0041】図4は、本発明の一実施例にしたがって、
メモリ拡張スタック80を利用して、ハードウエア・ス
タック71のポップ動作を実行するために必要なステッ
プを、フロー・チャート形状で示す。菱形ボックス14
3は判断ステップを示し、矩形ボックス140,14
1,142,144,145,146,147,14
8,149は、ポップ動作において実行されるステップ
を表わす。
【0042】MOVE命令のような明示命令によって、
またはRTS命令のような暗示動作によって、ハードウ
エア・スタック71からデータをポップする場合、スタ
ック・ポインタ位置からこのデータを読み取り、スタッ
ク・ポインタとスタック・カウンタとを減分する。スタ
ック・カウンタ・レジスタ・ビット・フィールド100
の値が所定値に達し、ハードウエア・スタック71が
「ほぼ空」であることを示す場合、ハードウエア・スタ
ック71からの読み取りの代わりに、プログラムは、メ
モリ拡張スタック80内の選択された位置からハードウ
エア・スタック71への特殊移動を2回実行する。
【0043】図2および図4の双方を参照する。ポップ
動作を開始する際、ステップ143において、スタック
・ポインタ・レジスタ・ビット・フィールド94内の値
SPによって指し示されるハードウエア・スタック71
内の位置から、データを読み出す。ステップ141にお
いて、スタック・ポインタ・レジスタ・ビット・フィー
ルド94の値を、カウンタ108によって1減分する。
ステップ142において、スタック・カウンタ・レジス
タ・ビット・フィールド94の値を、カウンタ112に
よって1減分する。判断ステップ143において、ハー
ドウエア・スタック71がほぼ空か否か判断する。好適
実施例では、「ほぼ空」とは、ハードウエア・スタック
71のエントリが2個だけ用いられていることを意味す
る。SCがM未満の場合、ハードウエア・スタック71
はほぼ空である。Mは「ほぼ空」を規定するN未満の整
数である。好適実施例では、Nは16に等しく、Mは2
に等しい。他の実施例では、「ほぼ空」を表わす使用中
のエントリ数は2より多くても少なくてもよい。スタッ
ク・カウンタ・レジスタ・ビット・フィールド100の
値がM以上の場合、ステップ143から「NO」経路を
選択し、ポップ動作が完了する。スタック・カウンタ・
レジスタ・ビット・フィールド100の値がM未満の場
合、ステップ143からステップ144の「YES」経
路を選択する。
【0044】ステップ144において、拡張ポインタ・
レジスタ・ビット・フィールド96の値を減分する。ス
テップ145において、SP−SCによって指し示され
る、ハードウエア・スタック71のSTACK HIGH側の「最
終」エントリへ、データを移動する。ここで、SPはス
タック・ポインタ・レジスタ・ビット・フィールド94
の値であり、SCはスタック・カウンタ・レジスタ・ビ
ット・フィールド100の値である。メモリ拡張スタッ
ク80内のエントリから48ビット幅のハードウエア・
スタック71内のエントリに24ビットを移動するの
で、移動動作が2回必要となる。STACK HIGH側の最終エ
ントリのデータを、ハードウエア・スタック71に移動
する。拡張ポインタ・レジスタ・ビット・フィールド9
6の値は、転送すべきエントリを保持しているメモリ拡
張スタック80内の位置を指し示す。ステップ146に
おいて、拡張ポインタ・レジスタ・ビット・フィールド
96の値を再び1減分する。ステップ147において、
値EPによって指し示されたメモリ拡張スタック80の
位置から、ハードウエア・スタック71のSTACK LOW側
の最終エントリへデータを移動する。ステップ148に
おいて、スタック・カウンタ・レジスタ・ビット・フィ
ールド100の値を1増分する。ステップ149におい
て、以前のメモリ拡張スタック80へのアクセスによっ
てスティキ・ビット161が既にアサートされていない
なら、スティック・ビット161をアサートして、メモ
リ拡張スタック80へのアクセスが発生したことを記録
する。
【0045】データ処理システム20はパイプライン構
成であるので、他でもポップを実行する可能性もある
が、この場合は、制御論理回路106がそれを検出する
前に、スタック・カウンタ・レジスタ・ビット・フィー
ルド100の値を再び減分すればよい。この場合、メモ
リ拡張スタック80からハードウエア・スタック71に
エントリを2個移動するので、移動動作が合計4回必要
となる。DO命令の終了動作を実行するために、少なく
とも2個のエントリを常に満杯にしておく。DO動作の
終了時に、ハードウエア・スタック71からエントリを
2個ポップする。したがって、ステップ149の後に、
判断ステップ143へのリターンを実行し、スタック・
カウンタ・ビット・フィールド100の値を再度チェッ
クする。SCがM以上の場合、ステップ143から「N
O」経路を選択し、ポップ動作を完了する。スタック・
カウンタ・レジスタ・ビット・フィールド100がM未
満の場合、ステップ143から「YES」経路を選択
し、ステップ144ないしステップ149を繰り返す。
【0046】一例として、SPが3に等しく、SCが1
に等しく、EPが4に等しい(エントリ85を指し示
す)場合、ハードウエア・スタック71の最終エントリ
は、エントリ3−1=2となる。エントリ85,84の
内容をハードウエア・スタック71のエントリ2(レジ
スタ77,76)に移動するために、移動動作が2回必
要となる。最初の移動動作で、レジスタ85の内容をエ
ントリ85のレジスタ77に移動する。EPを3に減分
し(エントリ84を指し示す)、エントリ84の内容を
ハードウエア・スタック71のエントリ2のレジスタ7
6に移動する。
【0047】図5は、図2の部分20の動作モード・レ
ジスタ104をブロック図形状で示す。動作モード・レ
ジスタ104は、ビット160〜164を示す。「SE
N」と表記されたスタック・イネーブル・ビット160
は、アサートされたときにメモリ拡張スタック・モード
をイネーブルし、ニゲートされたときにメモリ拡張スタ
ック・モードをディゼーブルする。ビット160は、ハ
ードウエア・リセットによってニゲートされる。
【0048】「WRP」と表記されたスティキ・ビット1
61は、メモリ拡張スタック80にまたはメモリ拡張ス
タック80からエントリが移動されるときアサートされ
る。スティキ・ビット161は、ソフトウエアを実施し
たアルゴリズムの評価および高速化の手段として、ソフ
トウエア・アプリケーション・プログラムのデバッグ処
理の間に用いることもできる。「スティキ・ビット」を
クリアする唯一の方法は、ハードウエア・リセットまた
は動作モード・レジスタ104への明示的な移動動作に
よってのみである。
【0049】「EOV」と表記されたビット162は、メ
モリ拡張スタック・モードがイネーブルされており(ビ
ット160がアサートされている)、ハードウエア・ス
タック71のオーバーフローが発生したときにアサート
される。拡張ハードウエア・スタックのオーバーフロー
は、SPがスタック・サイズ・レジスタ102の値に等
しいときにプッシュ動作が要求された場合に認識され
る。ビット162もスティキ・ビットであり、スタック
・エラーの例外の原因となる。ビット162は、ハード
ウエア・リセットまたは動作モード・レジスタ104へ
の明示的移動動作によってクリアされる。
【0050】「EUN」と表記されたビット163は、ハ
ードウエア・スタック71がメモリ拡張スタック・モー
ド(ビット160がアサートされている)で動作中のと
きに、スタック・アンダーフローがハードウエア・スタ
ック71内で発生した場合にアサートされる。スタック
・アンダーフローは、ポップ動作が要求され、SPが0
に等しい場合に認識される。ビット163もスティキ・
ビットであり、スタック・エラーの例外の原因となる。
ビット162は、ハードウエア・リセット、または動作
モード・レジスタ104への明示的移動動作によってク
リアされる。
【0051】「XYS」と表記されたビット164は、メ
モリ拡張スタックをXメモリ32に割り当てるのか、ま
たはYメモリ34に割り当てるのかを判断する。ビット
164がニゲートされている場合、メモリ拡張スタック
をXメモリ32に割り当て、ビット164がアサートさ
れている場合、メモリ拡張スタックをYメモリ34に割
り当てる。ビット164は、ハードウエア・リセットに
よってクリアされる。
【0052】本発明のメモリ拡張スタックは、実際は、
仮想的にサイズが無限のハードウエア・スタックを提供
するものである。アプリケーションは、ハードウエア・
スタックのサイズによる制約を受けることなく、ハード
ウエア・スタックを用いてDO命令のような強力な命令
の実行が可能となる。メモリ拡張スタックを実施して
も、プログラムに与える影響は、移動命令をプログラム
に挿入することのみである。スタック拡張構造をイネー
ブルしたとき、移動命令は制御論理回路106によって
自動的に挿入されるので、ハードウエア・スタック71
内でプログラムの動作は維持される。エントリをメモリ
拡張スタック80からハードウエア・スタック71に移
動するのは、それが必要なときのみである。これによっ
て、より高速のハードウエア・スタックを利用し、ハー
ドウエア・スタックの有効サイズを増大しつつ、ハード
ウエア・スタック内でプログラムを実行させ続けること
ができる。
【0053】以上好適実施例に沿って本発明を説明して
きたが、本発明は多数の方法で変更可能であり、先に具
体的に開示し説明した実施例以外にも多くの実施例が想
定可能であることは、当業者には明白であろう。例え
ば、図示の実施例では、ハードウエア・スタック71と
特定組織のために、移動命令を2回プログラムに挿入し
て、ハードウエア・スタック71からメモリ拡張スタッ
ク80へエントリを移動した。他の実施例では、ハード
ウエア・スタックおよびメモリ拡張スタックの特定組織
にしたがって、移動命令のプログラムへの挿入は、1回
のみ、または2回以上とすることもできる。したがっ
て、本発明の真の精神および範囲に該当する本発明の変
更は全て、特許請求の範囲の記載に含まれることを意図
するものである。
【図面の簡単な説明】
【図1】本発明によるデータ処理システムを示すブロッ
ク図。
【図2】図1のプログラム制御部の一部を示すブロック
図。
【図3】本発明によるプッシュ動作を示すフロー・チャ
ート。
【図4】本発明によるポップ動作を示すフロー・チャー
ト。
【図5】図2の動作モード・レジスタを示すブロック
図。
【符号の説明】
20 データ処理システム 22 タイマ 24 ホスト・インターフェース 26 改良直列同期インターフェース 28 直列非同期インターフェース 30 プログラムRAMおよび命令キャッシュ 32,34 データ・メモリ 36 アドレス発生器/直接メモリ・アクセス・コント
ローラ 38 外部アドレス・バス・スイッチ 40 内部データ・バス・スイッチ 42 DRAMおよびSRAMバス・インターフェース
/命令キャッシュ制御部 44 外部データ・バス・スイッチ 46 プログラム制御部 48 プログラム割り込みコントローラ 50 プログラム・デコード・コントローラ 52 ログラム・アドレス発生器 54 データ算術演算部 56,57 アドレス・バス 58 プログラム・アドレス・バス 59 アドレス・バス 61,62 データ・バス 63,64 プログラム・データ・バス 71 ハードウエア・スタック 72,73,74,75,76,77,78,79 レ
ジスタ 80 メモリ拡張スタック 90,91,92 パイプライン・レジスタ 94 スタック・ポインタ 96 拡張ポインタ 100 スタック・カウンタ・レジスタ・ビット・フィ
ールド 106 制御論理回路 108,110,112 カウンタ 161 スティキ・ビット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 フィリップ・シクソウ イスラエル国エルサレム、ピスガット・ゼ エブ・ミズラッチ、ハイム・トレン・スト リート43 (72)発明者 デビッド・ハアス イスラエル国サビオン、マガル・ストリー ト10(エー) (72)発明者 エルカナ・ベン−シナイ イスラエル国ラマト−ギャン、ハカバイ ム・ストリート15/13

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】データ処理システム(20)であって:N
    個の二進情報エントリを、後入れ先出し方式で記憶する
    ハードウエア・スタック(70)(ただし、Nは整
    数);前記ハードウエア・スタック(70)に結合さ
    れ、N個のエントリの内いくつが満杯かを計数するスタ
    ック・カウンタ(100);および前記ハードウエア・
    スタック(70)と前記スタック・カウンタ(100)
    とに結合され、N個のエントリの内所定数がいつ満杯と
    なったかを検出する、制御論理回路(106)であっ
    て、前記N個のエントリの内所定数が満杯になったと
    き、第1エントリをハードウエア・スタック(70)か
    らメモリ拡張スタック(80)に移動し、更に、前記N
    個のエントリの内前記所定数がいつ空になったかを検出
    し、前記N個のエントリの内所定数が空になったとき、
    第2エントリを前記メモリ拡張スタック(80)から前
    記ハードウエア・スタック(70)に移動する、前記制
    御論理回路(106);から成ることを特徴とするデー
    タ処理システム(20)。
  2. 【請求項2】ハードウエア・スタック(70)とスタッ
    ク・カウンタ(100)とを有するデータ処理システム
    (20)において、前記ハードウエア・スタック(7
    0)のプッシュ動作を実行する方法であって:前記スタ
    ック・カウンタ(100)の値を増分する段階;および
    前記スタック・カウンタ(100)の値を監視し、該ス
    タック・カウンタ(100)の値が所定値より小さい場
    合、前記ハードウエア・スタック(70)内のエントリ
    を前記メモリ拡張スタック(80)に移動させ、前記ス
    タック・カウンタ(100)内の値が前記所定値以上の
    場合、前記ハードウエア・スタック(70)からエント
    リを移動させる段階;から成ることを特徴とする方法。
  3. 【請求項3】ハードウエア・スタック(70)とスタッ
    ク・カウンタ(100)とを有するデータ処理システム
    (20)において、前記ハードウエア・スタック(7
    0)のポップ動作を実行する方法であって:前記スタッ
    ク・カウンタ(100)の値を減分する段階;および前
    記スタック・カウンタ(100)の値を監視し、該スタ
    ック・カウンタ(100)の値が所定値より小さい場
    合、前記メモリ拡張スタック(80)内のエントリを前
    記ハードウエア・スタック(70)に移動させ、前記ス
    タック・カウンタ(100)内の値が前記所定値以上の
    場合、前記ハードウエア・スタック(70)からエント
    リを移動させる段階;から成ることを特徴とする方法。
JP7350435A 1994-12-27 1995-12-22 データ処理システムにおけるメモリ拡張スタック装置および方法 Pending JPH08255476A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US36385094A 1994-12-27 1994-12-27
US363850 1994-12-27

Publications (1)

Publication Number Publication Date
JPH08255476A true JPH08255476A (ja) 1996-10-01

Family

ID=23432004

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7350435A Pending JPH08255476A (ja) 1994-12-27 1995-12-22 データ処理システムにおけるメモリ拡張スタック装置および方法

Country Status (3)

Country Link
EP (1) EP0720087A1 (ja)
JP (1) JPH08255476A (ja)
KR (1) KR960024985A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6040049A (en) * 1996-10-21 2000-03-21 Gen Maintenance Technology Inc. Composite film and method of manufacturing surface coating material

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0992881A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. A processor
DE10040974A1 (de) * 2000-08-22 2002-03-14 Giesecke & Devrient Gmbh Verfahren zur virtuellen Vergrößerung des Stacks eines tragbaren Datenträgers
FR2817362B1 (fr) * 2000-11-29 2003-01-24 St Microelectronics Sa Microprocesseur comprenant des moyens de sauvegarde de donnees contextuelles lors d'un basculement dans un programme de test
KR100928865B1 (ko) * 2008-02-28 2009-11-30 주식회사 안철수연구소 컴퓨터 시스템에서의 스택 확장 및 보호 방법과 그 장치
US9910823B2 (en) 2011-05-16 2018-03-06 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) having an instruction set optimized to minimize memory fetch
US9588881B2 (en) * 2011-05-16 2017-03-07 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) for code space and a portion of the stack memory space having an instruction set optimized to minimize processor stack accesses
GB2516091A (en) * 2013-07-11 2015-01-14 Ibm Method and system for implementing a dynamic array data structure in a cache line

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5128888A (en) * 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. Arithmetic unit having multiple accumulators
JPH05250161A (ja) * 1992-03-06 1993-09-28 Matsushita Electric Ind Co Ltd マイクロコンピュータ装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6040049A (en) * 1996-10-21 2000-03-21 Gen Maintenance Technology Inc. Composite film and method of manufacturing surface coating material

Also Published As

Publication number Publication date
KR960024985A (ko) 1996-07-20
EP0720087A1 (en) 1996-07-03

Similar Documents

Publication Publication Date Title
JP4883824B2 (ja) デ―タ・プロセッサにおいて後続の命令処理に影響を及ぼす方法および装置
JP2834837B2 (ja) プログラマブルコントローラ
US5375216A (en) Apparatus and method for optimizing performance of a cache memory in a data processing system
US4648034A (en) Busy signal interface between master and slave processors in a computer system
US4729094A (en) Method and apparatus for coordinating execution of an instruction by a coprocessor
US6959367B2 (en) System having read-modify-write unit
KR100309615B1 (ko) 고속프로그램가능로직컨트롤러(plc)
KR20010030587A (ko) 데이터 처리장치
JP2003085000A (ja) トレース情報生成装置およびその方法
US4731736A (en) Method and apparatus for coordinating execution of an instruction by a selected coprocessor
US6401197B1 (en) Microprocessor and multiprocessor system
US4750110A (en) Method and apparatus for executing an instruction contingent upon a condition present in another data processor
JPH05204709A (ja) プロセッサ
EP0777877A2 (en) Processing system, processor, memory storing instruction stream and compiler
EP0523758B1 (en) A method and apparatus for coordinating execution of an instruction by a coprocessor
US4821231A (en) Method and apparatus for selectively evaluating an effective address for a coprocessor
US4758950A (en) Method and apparatus for selectively delaying an interrupt of a coprocessor
JPH08255476A (ja) データ処理システムにおけるメモリ拡張スタック装置および方法
US4914578A (en) Method and apparatus for interrupting a coprocessor
US4758978A (en) Method and apparatus for selectively evaluating an effective address for a coprocessor
JPH0384632A (ja) データ処理装置
JP3520372B2 (ja) メモリ制御ユニット並びに入出力制御ユニットの動作におけるクリティカル・パスの削除
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JP2007018497A (ja) Riscマイクロプロセッサ優先ベクトル割り込みシステム
EP0633521A1 (en) Microprocessor including circuit for generating signal used for tracing executed instruction stream