JPH03206523A - デジタルコンピユータにおいてデータをメモリ内のスタツク上にプツシユする方法およびパイプラインされる命令とメモリを有するデジタルコンピユータにおいてスタツクオペレーシヨンを実行する回路 - Google Patents

デジタルコンピユータにおいてデータをメモリ内のスタツク上にプツシユする方法およびパイプラインされる命令とメモリを有するデジタルコンピユータにおいてスタツクオペレーシヨンを実行する回路

Info

Publication number
JPH03206523A
JPH03206523A JP2091999A JP9199990A JPH03206523A JP H03206523 A JPH03206523 A JP H03206523A JP 2091999 A JP2091999 A JP 2091999A JP 9199990 A JP9199990 A JP 9199990A JP H03206523 A JPH03206523 A JP H03206523A
Authority
JP
Japan
Prior art keywords
stack
stack pointer
bus
register
clock cycle
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
JP2091999A
Other languages
English (en)
Inventor
Avtar Saini
アブタル・セイニ
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JPH03206523A publication Critical patent/JPH03206523A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はデジタルコンピュータにおけるスタック動作の
分野に関するものである。更に、詳しくいえば、本発明
はパイプライン化された命令を用いるデジタルコンピュ
ータにかけるスタック動作の性能を向上させることに関
するものである。
〔従来の技術〕
コンピュータアーキテクチャにおいては、スタックとい
うのは、最後に格納された値が最初に検索されるような
データ構造である。頭文字LIFO(後入れ先出し)は
スタック動作を記述するものである。
アメリカ合衆国カリフォルニア州サンタ・クララ( S
anta Clara )所在のインテル・コーポレー
ション( Intel Corporation )に
より販売されている80386 32ビットCHMOS
は、スpックを用いる従来のデジタルコンピュータの一
例である。80386マイクロプロセッサはセグメンテ
ーションと呼ばれるメモリアドレッシング技術を用いる
。そのメモリアドレッシング技術においては、メモリ空
間が、セグメントと呼ばれる1つまたは複数の別々の直
線領域に分割される。メモリアドレスは2つの部分、す
なわち、セグメントを識別するセグメント部分と、セグ
メント内でバイトオフセットを与えるオフセット部分と
で構威される。セグメントとオフセットは全てのメモリ
参照のために指定せねばならない。コンパイラが1つの
セグメントをスタックセグメントとして定める。
第1図は従来の80386マイクロプロセッサのスタッ
クメモリ構戒を簡略化して示すものである。
80386マイクロプロセッサにおいては、スタックは
低い力のアドレスへ向って成長し、したがってスタック
は下方へ向って成長するように見える。
80386マイクロプロセッサにおいては、スタックに
格納されるデータの場所はペースレジスタのアドレスプ
ラスオフセットにより定められる。80386マイクロ
プロセッサにおいては、ペースレジスタに含1れている
ベース値プラスレジスタにー24− 含會れているオフセットESPはスタックのトップであ
るメモリ場所を識別する。80386マイクロプロセッ
サについては、スタックの「トップ」は、データが現在
格納されているスタック内の最低アドレスを有するメモ
リ場所である。
2つの基本的なスタック動作はプッシュとポップである
。プッシュ動作は新しい要素をスタックに付加し、ポッ
プ動作は最後にプッシュされた要素をスタックから除去
する。最後にプッシュされたデータ値はスタックの1ト
ップ」におけるメモリ場所内にある。
別の従来のやシ方においては、スタックへ最後にプッシ
ュされたデータを含んでいるメモリ場所に続く次のメモ
リ場所をレジスタが指す。
スタック動作は実際には1つの動作中の2つの別々の動
作である。たとえば、プッシュ動作は外部メモリへの動
きと、スタックポインタの減少である。ポップ動作は外
部メモリからの動きと、スタックポインタの増加である
スタック動作への従来のやシ方においては、プツシュレ
ジスタ命令が与えられるとスタックポインタは語長だけ
減少させられ、それからこの新しい値を用いてアドレス
が作威される。次に、指定されたレジスタの内容がその
新しいアドレスに書込まれる。従来のポップレジスタ命
令に対しては、スタックポインタ内の値を用いてデータ
がメモリからフエツチされる。メモリから到達したデー
タはレジスタヘ書込lれ、スタックポインタが増加させ
られる。従来のやb方は80386マイクロプロセッサ
にかいて見出され、マイクロプロセッサがプッシュレジ
スタ命令を2クロツクで行うことを許し、ポップレジス
タ命令を4クロツクで行うことを許す。
〔発明が解決しようとする課題〕
スタック動作を実行するためのこの従来のやシカの1つ
の欠点は、多数のクロックサイクルが求められるものと
すると、比較的時間がかかることである。したがって、
この従来のやυ方は、とくに、ある与えられたコンピュ
ータプログラム内に数多くのスタックプッシュ命令およ
びスタックポツプ命令が現われることがあることにかん
がみて、相対的な性能低下をもたらすことである。
したがって、本発明の目的は、スタック動作を行うため
に求められるクロツクサイクルの数を減少させる方法と
回路を得ることである。
本発明の別の目的は、1クロツクサイクルでスタックプ
ッシュ動作を実行する方法と回路を得ることである。
本発明の別の目的は、1クロツクサイクルでスタックポ
ップ動作を実行する方法と回路を得ることである。
本発明の更に別の目的は、パイプライン制御命令を有す
るコンピュータに釦いて背中合わせのスタック動作を実
行する方法と回路を得ることである。
〔課題を解決するための手段〕
本発明のそれらの目的およびその他の目的は、デジタル
コンピュータに釦けるメモリ内のスタックへデータをプ
ッシュするための方法と回路により達成される。第1の
クロックサイクル中に、スタックプッシュ動作を要求す
る命令が復号される。
スタックプッシュ動作を要素する制御指示子も発生され
る。第2のクロツクサイクル中の相1の間K、(a)j
lのスタックポインタレジスタに格納されているスタッ
クポインタ値が第1のバスヘ書込會れ、(b)第1のス
タックポインタレジスタに格納されているスタックポイ
ンタ値がスタックポインタ加算器の入力ラッチヘ書込會
れる。第2のクロツクの相2の間に、(a)第1のバス
上のスタックポインタ値を用いてスタックメモリアドレ
スが形成され、Ilb)スタックポインタ加算器の入力
ラッチに格納されているスタックポインタ値がデルタ量
だけ減少させられて更新されたスタックポインタ値を形
成し、(c)更新されたスタックポインタ値は出力ラッ
チに格納される。第3のクロツクサイクルの相1の間に
、(a)出力ラッチに格納されている更新されたスタ・
ツクポインタ値は第2のバスへ書込まれ、(b)第2の
バス上の更新されたスタックポインタ値は格納のために
第2のスタックポインタレジスタへ書込まれる。第3の
クロ=28− ツクサイクルの相2の間に、(a)スタックメモリアド
レスにより示されているメモリ場所に格納するためにデ
ータがメモリヘ書込1れ、(b)第2のスタックポイン
タレジスタからの更新されたスタックポインタ値が格納
のために第1のスタックポインタレジスタへ書込まれる
本発明の前記目的釦よびその他の目的は、デジタルコン
ピュータのメモリ内のスタックをボツプオフする方法と
回路によっても達成される。第1のクロツクサイクル中
に、(a)スタックポップ動作を要求する命令が復号さ
れ、Cb)スタックポップ動作を要素する制御指示子が
発生される。第2のクロツクサイクル中の相1の間に、
(a)第1のスタックポインタレジスタに格納されてい
るスタックポインタ値が第1のバスへ書込まれ、(b)
第1のスタックポインタレジスタに格納されているスタ
ックポインタ値がスタックポインタ加算器の入力ラツチ
へ書込まれる。第2のクロツクサイクルの相2の間に、
(a)第1のバス上のスタックポインタ値を用いてスタ
ックメモリアドレスが形成され、(b)スタックポイン
タ加算器の入力ラッチに格納されているスタックポイン
タ値がデルタ量だけ増加させられて更新されたスタック
ポインタ値を形成し、(c)更新されたスタックポイン
タ値は出力ラッチに格納される。第3のクロツクサイク
ルの相1の間に、(a〉  出力ラッチに格納されてい
る更新されたスタックポインタ値は第2のバスへ書込ま
れ、(b)第2のバス上の更新されたスタックポインタ
値は格納のために第2のスタックポインタレジスタへ書
込まれる。第3のクロツクサイクルの相2の間に、(a
)  スタックメモリアドレスにより示されているメモ
リ場所に格納されているデータが読出され、(b)第2
のスタックポインタレシスタからの更新されたスタック
ポインタ値が格納のために第1のスタックポインタレジ
スタへ書込まれる。
〔実施例〕
以下、図面を参照して本発明を詳しく説明する。
第2図は、整数実行データ路装置76を含む32ビット
マイクロプロセッサ60のアーキテクチャ31 のブロック図である。
データ路装置76は、パイプラインされたスタック動作
を1クロツク当ジ1命令の速さで(キャッシュミスまた
はページの障害がなければ)受け容れるために、スタッ
クポインタ論理を含む。このスタックポインタ論理につ
いては後で詳しく説明する。スタックポインタ論理はス
タックポインタ更新のために専用のスタックポインタ加
算器を含み、別々のバス、すなわち、Jバスを用いる。
スタックポインタ論理については後で詳しく説明する。
データ路装置76は算術論理装置( 1’−*LuJ 
)と、レジスタファイルト、ハレルシフタト、コンスタ
ントROMと、マシン状態語( rMsWJ )と、フ
ラッグも含む。
マイクロプロセッサ60は次のようにして構威される。
バスインターフエイス装置62が外部メモリ装置(図示
せず)からデータをフエツチする。
したがって、インターフエイス装置62は、メモリへの
書込みがある時に外部メモリの更新も行う。
−32− インターフエイス装置62はXAバス61と、XBバス
63と、キャッシュ装置68と、プリフエツチャ装置6
4との間のインターフエイスを行う。
バスインターフエイスit 6 2 ハKBAハ7. 
6 5 (!:K BWR ハス67を介してキャッシ
ュ装置66へ結合される。KBAバスは双方向アドレス
バスである。
キャッシュ装t68データをKBW’Rバス67を介し
てバスインターフエイス装口62へ送る。バスインター
フエイス装置はKBRDバス69t−介Lてプリフエツ
チャ装置64ヘデータを送る。
Mバス138と、Rバス140と、LAバス89とはマ
イクロプロセッサ60のための主データ路を構威する。
Mバス138はキャッシュ装置66をデータバス装置7
6と浮動小数点装置78へ結合する。Rバス140はキ
ャッシュ装置66をセグメンテーション装置74と、デ
ータ路装置76と、浮動小数点装置78とへ結合する。
LAバス89はキャッシュ装置66をページング装置T
2とセグメンテーション装置74へ結合スル。
セグメンテーション装置74は全体のメモリ管理モデル
のセグメンテーション部分を実現する。
■バス90はデータ路装置T6をセグメンテーション装
置T4へ結合する。バスK2Q73がプリフエツチャ装
置64をセグメンテーション装置79へ結合する。その
バスK2Q73は32ビットバスである。
ヘーシング装置72は全体のメモリ管理モデルの低レベ
ル機構を実現する。OAバス75はぺ−ジング装置72
をキャッシュ装置66へ結合する32ビットバスである
浮動小数点装置T8は、マイクロプロセッサ60に関連
する浮動小数点命令セットを実行する論理を含む。
ブリフエツチャ装置64は生のコードデータをKIOバ
ス71を介して命令復号装置68へ供給する。
命令復号装置68はマイクロプロセッサ60への入来命
令を復号する。命令復号装置68は、ROM70を制御
するために、IWORDバス77とエントリ点バス79
を介して結合される。
マイクロプロセッサ60はパイプライン命令を用いる。
命令パイプラインは(1)プリフエツチ段階と、(2)
第1の復号段階と、(3)第2の復号段階と、(4)実
行段階と、(5)書戻し段階とを含む。
パイプライン制御により命令が実行段階に達すると、命
令復号段階を次の命令のために開始できる。
命令復号装置68は2つの命令復号スキームを有する。
第1の段階復号器91(rDIJ)は実行すべきオペレ
ーションの種類と、使用するレジスタを定める。第1の
段階復号器91はマイクロコードシーケンスを開始させ
るエントリ点も発生する。第2の段階復号器9 3 (
 rD2j )は移動データと直接データを捕えること
を取扱う。第2の段階復号器93は早期開始マイクロ命
令も統合し、適切々直線アドレス計算を確実に終らせる
。2つの段階復号器91と92は実行クロツクとともに
、入来命令のための三深さパイプラインを形成する。
命令復号装置68の第1の段階復号器91は「igpv
al J 制御指示子を発生する。この制御指示子は多
ビット制御信号である。「igpvalJ 制御指示子
は第1の段階復号器91から線99を介してデータ路装
置76へ送られる。「ispvalJ信号は2ビット信
号すなわち2ピット指示子であって、現在の早期開始マ
イクロ命令がスタックプッシュ命令か、スタックポップ
命令か、筐たはいずれでもないかを示す。「ispva
l J信号すなわち指示子00(ベース2)は、現在の
早期開始マイクロ命令がプッシュ命令でも、ポップ命令
でもないことを示す。「iipval J指示子10(
ベス2)は、早期開始マイクロ命令がスタックプッシュ
命令であることを示す。「impval J信号すなわ
ち指示子11(ベース2)は早期開始マイクロ命令がス
タックポップ命令であることを示す。
命令復号装置68は1ビットl irptrq J繰返
えし擬求制御信号も発生する。この「irptrq J
繰返えし要求制御信号は命令復号装f68から制御線9
9を介してデータ路装置76へ送られる。
r irptrq J繰返えし要求制御信号手段は早期
開始要求を繰返えす。これは、現在格納されたマイクロ
命令が最後の時刻から繰返見されること、か35 よび以下に説明するように、スタック命令に対してスタ
ックポインタを強化すべきことを知らせる。
制御装置70はマイクロプロセッサ60のマイクロコー
ドエンジンである。制御装置70はマイクロコード化さ
れた制御ROM92と、マイクロプロセッサ60の、デ
ータ路装置76を含めて、他の装置の動作を指揮する制
御論理を含む。命令復号装置68はエントリ点情報をエ
ントリ点バス79を介してマイクロコード化された制御
ROM92へ送シ、実行すべき1つまたは複数のマイク
ロ命令群の最初のマイクロ命令の制御ROM92内の場
所を指示する。与えられたエントリ点のために実行すべ
きマイクロ命令の数を制御装置70が決定するために、
マイクロ命令自体が情報を制御装置70へ供給する。
制御ROMマイクロ命令は、ひとたび実行されると、マ
イクロプロセッサ60とデータ路装置76を制御する。
制御装置70はマイクロ命令をバス第1と83を介して
セグメンテーション装置74へ送る。制−36= 御装置70はマイクロ命令をバス第1と85を介してデ
ータ路装置76へ送る。制御装置70はマイクロ命令を
バス85と87を介して浮動小数点装置78へ送る。
第3甲はデータ路装置T6を構成する機能装置および回
路のブロック図である。スタックポインタ加算器114
とスタックポインタラツチ112が、スタックポインタ
および繰返えしカウンタ(I−DITSPJ)のための
機能ブロック318に含まれている。
機能ブロックDREG316はレジスタファイルと、コ
ンスタントROM339と、レジスタ復号器314と、
短絡器および交差器317とを含む。機能ブロックDR
E0316スタックポインタレジスタE8P122と、
SSP12Gと、スタックポインタ回路110のA8P
124とを更に含む。
機能ブロックDBCNTR333  は、データ路中の
バス短絡器かよび交差器のための制御信号を発生するラ
ンダム論理と、データ路装置76内に固定できない種々
の復号および論理を含むバス制御機能ブロックである。
MバスとIバスの間に短絡器184(第4図参照があシ
、MバスとJバスの間に短絡器182(第4図参照)、
任意の2本のバスの間の短絡器を可能一状態にすること
により1それら2本のバスを論理的に等しくできる。マ
イクロプロセッサ60においては、宛先レジスタへの書
戻しは次の命令のレジスタ転送(すなわち、ソ=シング
)に重なB合うことがある。このために同時刻に同じレ
ジスタへ書込むこと、および同じレジスタから読出すこ
とが可能にされる。同時刻に同じレジスタへのこの書込
み釦よび同じレジスタからの読出しはレジスタ衝突と呼
ばれる。トソフトな」衝突状況においては、データ路装
置T6はソースバスがレジスタファイルから駆動される
ことが禁止される。それは適切な短絡器を起動させるこ
とによりバス上で新しい値を得る。
MバスとIバスの間の短絡器184は一方向短絡器であ
って、MバスをIバスへ対してのみ短絡する。Mバスと
Jバスの間の短絡器182もただ1つ) 3q の向きの短絡器であって、MバスをJバスに対して短絡
する。
スタックポインタおよび繰返えしカウンタ制御回路31
0 (, rDITsPRJ )  は線217Kよシ
(1)スタックポインタおよび繰返えしカウンタ回路3
18へ結合され、線217により機能ブロックDREG
316へ結合される。バス制御機能ブロックDBCNR
Tが線217によりブロックDREG316へ結合され
る。
DITSPR制御回路310とバス制御回路DBCNT
R333は制御信号をスタックポインタ論理110(第
4図)へ供給する。DITSPR制御論理310から線
217を介してスタックポインタ回路110へ送ラれた
制御信号は、スタック動作中におけるエバスとJバスへ
の値の送bを制御する。線217を介して送られた制御
信号は、スタックの動作中にスタックポインタ加算器1
14(第4図)を制御するために用いられる。DITS
PR制御回路310はスタックポインタ回路110内の
スタックポインタレジスタへも制御信号を与える。制御
回路DBCNTR333はあるスタック動作中に制御信
号を線211を介して短絡器182へ加える。
DITSPR制御回路310は命令復号装置68(第2
図)から制御線99を介して制御信号を受ける。
データ路装置16は全てのALUオペレーションを行う
。ALUは機能ブロックDALUブロック322に含ま
れる。機能ブロックDALUR 304はいくつかのA
LUフラッグのセットに使用する制御論理を含む。機能
ブロックDOPR302はALU復号用の論理を含む。
機能ブロックDBS 320はデータ路装置T6のため
のバレルシフタを含む。機能ブロックDBSR30B 
ハDB8 320内のバレルシフタ用のランダム論理を
含む。
機能ブロックDFLAGR306はユーザが見ることが
できるフラッグとマシン状態語フラッグを含む。
第4図はスタックポインタ論理回路110のブロック図
である。上記のように、回路110のうちブロックDI
TSP 31Bに含まれる部分(スタックボインク加算
器114のような)と、ブロックDREG316内の他
の部分(短絡器182と184およびレジスタESP1
22、ASP124、S S P 1 20のような)
がある。制御回路DBCNTR3 3は制御信号を、あ
るスタック動作中に、線217を介して短絡器182と
184へ送る。
第4図は、スタック動作命令の実行中にスタックポイン
タを更新するための専用スタックポインタ加算器( r
sPAdderJ )114を示す。SPAdder1
14は制御信号をスタックポインタおよび繰返えしカウ
ンタ制御回路310(第3図)から線217を介して受
ける。SPAdder 114への入力Aはスタックポ
インタ゛入力ラッチ118から線131を介して加えら
れる。SPAdder 314への入力Bはマルチプレ
クサ116から線133を介して加えられる。SPAd
der314の出力端子は線129を介してスタックポ
インタ出力ラッチ(SPLATCH)112へ結合され
る。
SPLATCH112は制御信号を繰返えしカウンタお
よびスタックポインタ制御回路310(第3図)から線
217を介して受ける。SPLATCH112の1つの
出力端子は線127を介して■バス90へ結合され、別
の出力端子は線125を介してJバス147へ結合され
る。
Jバスはデータ路装置T6用の内部バスであって、スタ
ックポインタ更新専用である。■バス90はアドレス作
成のためのデータ用の別のバスである。■バス90はデ
ータ路装置76とセグメンテーション装t74(第2図
)の間に設けられる。
第2図を参照して説明したように、Mバス138はマイ
クロプロセッサ60の主データ路の一部である。
短絡器182はデータをMバス13BからJバス147
へ転送するための短絡器である。本発明の好適な実施例
においては、短絡器182は、Mバス13BからJバス
147への向きにだけデータを転送して、Jバス147
からMバス138へは転送しない一方向短絡器である。
短絡器182が可能状態にされると、Jバス147はM
バス138と論理的に等しくされる。短絡器182はC
MOSゲートで構威される。短絡器182はDBCNT
R制御回路333(第3図)から線217を介して制御
される。短絡器184はMバス138と■バス90の間
の一方向短絡器であって、Mバス138から■バス90
へだけデータを転送できるようにして、■バス90から
Mバス138へはデータを転送できないようにする。短
絡器138もCMOSゲートで構威され、DBCNTR
制御回路333から線217を介して制御される。短絡
器182が可能状態にされると、■バス90はMバス1
38と論理的に等しくされる。
短絡器182と184は短絡器訃よび交差機能ブロック
317に含まれる。それは第3図に示されているレジス
タ機能ブロック316の一部である。短絡器182は機
能ブロック311内のMバス138とJバス147をア
クセスし、短絡器184は機能ブロック317内のIバ
ス90とMバス138をアクセスする。
レジスタESP122と、SSP120と、ASP 1
24とは、1実行クロツクを要するプッシュ命令とポッ
プ命令をサポートするために用いられる3つのスタック
ポインタレジスタである。レジスタESP−43 122、SSP12G、ASP 124はかのおの32
ビットレジスタである。
本発明の好適な実施例にかいては、マイクロプロセッサ
60はセグメンテーションメモリアドレッシング技術を
用いる。この技術においてはメモリ空間は別々の直線セ
グメントに分割される。したがって、各メモリアドレス
は2つの部分で構或される。1つのセグメント部分はセ
グメン}R別部分であシ、別の部分はセグメント内でノ
くイトオフセットを行うオフセット部分である。
スタックレジスタESP122、SSP120、ASP
124は種々のオフセットをスタックメモリアドレスに
格納するレジスタである。セグメンテーションユニット
74(第2図)Jd Iバス90へ結合サれ、■バス9
0から受けたオフセット値と、セグメンテーションユニ
ツ}74内の1組の記述子レジスタに格納されているベ
ースアドレスとを基にして直線アドレスを作成するため
に用いられる。
本発明の好適な実施例においては、マイクロプロセッサ
60は下位アドレスへ向って戊長ずるス−44 タックを用いる。スタック内に格納されるデータの位置
はペースレジスタのアドレスプラスオフセットによって
定められる。
レジスタESP122はユーザが見ることができるスタ
ックポインタレジスタである。1つの命令に対してパイ
プラインが終ると、スタックペースレジスタに格納され
ているベース値に、レジスタESP122に含tれてい
るオフセット値を加えたものは、メモリ内のスタックの
「トップ」であるメモリ場所を識別する。スタックの「
トップ」は、スタックへ最後にプッシュされたデータを
含んでいるメモリ場所である。
レジスタSSP120は命゛令再スタートのために用い
られるシャドウスタックポインタレジスタである。レジ
スタESP 122に格納されているオフセット値は、
スタックのプッシュ動作とポップ動作のための実行クロ
ツクサイクルの相1において、線137を介してレジス
タSSP120へ送られて、そこに格納される。
レジスタASP124は進みスタックポインタレジスタ
である。このレジスタは、現在の命令がそれの実行段階
に達し、レジスタESP 122を更新する条件が満さ
れるまで、スタックオフセットの更新された値を格納す
るための場所として、データ路装置T6により用いられ
る。いずれにしても、レジスタASP124に格納され
ている更新されたオフセット値は、スタックのプッシュ
動作とポップ動作のための実行クロックサイクルの相2
の間に、レジスタESP122へ送られて格納される。
各レジスタESP 122、SSP 120、ASP 
124  はスタックポインタおよび繰返えしカウンタ
制御回路310から線217を介して制御される。
ユーザが見ることができるスタックポインタレジスタK
SP 122は線165によりIバス90へ結合される
。レジスタESPは線161によりJバス147へ結合
される。レジスタESP122は線167KIMバス1
38へも結合される。レジスタEspハ線137により
レジスタSSP120へ結合される。更に、レジスタE
SP 122は線139によりレジスタASP124へ
結合される。
進みスタックポインタレジスタASP124は線163
によりIバス90−、結合される。レジスタASPは線
141によpJバス147へも結合される。
入力ラツチ118は線135によfiJバス147ヘ結
合される。ラッチ118はスタックポインタおよび繰返
えしカウンタ制御回路310により、線217を介して
制御される。
スタックプッシュ動作またはスタックポップ動作のため
の第2の復号段階の相1中に、Jバス147上(Df−
1’B、D I TS PR制御回路31017)制御
の下に、線135を介してラッチ118に保持される。
バイトカウント0が入力として線153を介してマルチ
プレクサ116へ供給される。プラスマイナス2のバイ
トカウントが入力として線151を介してマルチフレク
サ116へ与えられる。プラスマイナス4のバイトカウ
ントが入力として線149を介してマルチプレクサ11
6へ与えられる。マルチプレクサ116の出力は線13
3にょ9 SPAddsr 114の入力端子Bへ結合
される。マルチプレクサ116−47− は線217を介してDITSPR制御回路310により
制御される。
01プラスマイナス2およびプラスマイナス4のバイト
カウントはマルチブレクサ116へ入力として与えられ
る。それらのバイトカウントは、それにより現在のスタ
ックポインタ値をスタックポインタ加算器114によっ
て増加壕たは減少できる可能なバイトカウントである。
たとえば、マイナス2のバイトカウントが線133を介
してマルチプレクサ116を通ってSPAddar 1
14の入力端子Bへ送られる。このことは、入力ラッチ
118に保持されて、スタックポインタ加算器114の
入力端子Aへ加えられる現在のスタックポインタを2バ
イトだけ減少すべきことを意味する。これとは対照的に
、プラス4のバイトカウントがマルチプレクサ116と
線133を介してSPAddsr114の入力端子Bへ
加えられると、これは、入力ラッチ118に保持されて
、入力Aとしてスタックポインタ加算器114へ加えら
れる現在のスタックポインタ値を、4バイトだけ増加せ
ねばならないことを意味する。
48ー マイクロプロセッサ60のためのスタックがよう低いア
ドレスへ向って戊長ずるものとすると、現在または既存
のスタックポインタ値はスタックプッシュ動作に対して
減少させられ、現在のまたは既存のスタックポインタ値
がスタックポップ動作に対して増加させられることにな
る。
DITSPR回路310からの制御信号すなわち指示子
「spdelJ が、スタックポインタ加算器114の
入力ラッチ118内の値が零バイト、2バイト、1たは
4バイトだけ増加させられ、または2バイトあるいは4
バイトだけ減少させられる。零バイトはデフォールトで
ある。DITSPR回路310からの制御信号すなわち
指示子「speyinJが、2バイ}−1たは4バイト
だけの減少が存在する時に、スタックポインタ加算器1
14に対するけた上げである。
第5図は並べられた3つのスタックプッシュ動作のタイ
ミング図であって、各スタックプッシュ動作に関連する
事象列を示す。
各列601 , 602 , Ei03 , 604 
, 605の左側はそれぞれのクロツクサイクルの相1
を表す。同様に、各列601〜605の右側はそれぞれ
の各クロツクサイクルの相2を表す。
最初のプッシュレジスタ命令に対しては、列601の左
側は第1の復号段階D1の相1を表し、右側は第1の復
号段階D1の相2を表す。また、最初のプッシュ動作に
対しては、列602の左側は第2の復号段階D2の相1
を表し、右側は第2の復号段階D2の相2を表し、列6
03の左側は実行段階の相1を表し、右側は実行段階す
なわち実行クロツクサイクルの相2を表す。
第2のプッシュレジスタ命令に対して、最初の復号段階
が列602に示され、第2の復号段階が列603ニ示さ
れ、実行クロツクサイクルすなわち段階が列604に示
されている。
第3のプッシュレジスタ命令に対しては、最初の復号段
階が列603に示され、第2の復号段階が列604に示
され、第2のプッシュレジスタ命令に対する実行段階は
列605に示されている。
各命令に対する命令パイプラインのプリフエツチ段階は
第5図には示されていない。プリフエツチ段階は、パイ
プライン内のそれぞれの各命令に対する最初の復号段階
の前に起る。
マイクロプロセッサ60に対しては、命令パイプライン
のブリフエツチ段階中に、命令がメモリからバスインタ
ーフエイス6 2(!:、KBRD/<X69と、プリ
フエツテヤ64と、KIQバス71とを介してブリフエ
ツチされる。それから命令は命令復号装置68(第2図
)へ送られる。スタックのプッシュ動作κ対しては、プ
ッシュ動作を求める命令がブリフエツチ段階中にメモリ
からプリフエツチされる。
最初の復号段階の相1中に、メモリからの命令プリフエ
ツチが命令復号装置68の第1の復号段階91において
復号される。第5図における最初のプッシュレジスタ動
作に対しては、これは列601の行501におけるDI
PLAにより示されている。
第1の命令に対する第1の復号段階の相2の間に、命令
復号器68の復号装置第1が制御指示子−51− rispvalJを線99を介してデータ路装置T6の
DITSPR制御器310へ送υ出す。制御指示子「i
apvalJは2ピット信号である。プッシュ動作に対
しては指示子rispvalJは10(ペース2)であ
る。これは、現在の早期開始マイクロ命令がプッシュ命
令であることをデータ路装置76へ指示する。第1の復
号段階の相2に3ける制御指示子JiapvalJが第
5図の列601の行503にrIsPVAL 1Jとし
て示されている。ISPVALに続く数字1は、これが
プッシュ動作列の最初のプッシュ動作であることを第5
図において示す。
DITSPR制御回路310は線99を介して送られた
「iapvalJ信号を読取)、プッシュ動作を行わせ
ることを決定する。DITSPR回路310は、プッシ
ュ動作のためκ現在のスタックボイ/タを減少させるバ
イトカウントも知る。バイトカウントは2または4だけ
減少させられる。
第3図のDITSPR制御回路310は、現在のプッシ
ュ命令が以前のスタック動作(すなわち、以前のプッシ
ュ動作またはポップ動作)のすぐ後に−52 続くかどうかた判定する状態マシン392を含む。
DITSPR310の状態マシン392は次のように動
作する。状態1はアイドル状態である。スタック動作が
行われると、状態マシン392は状態2になる。状態マ
シン392は、スタック動作が他の動作を1つ右に追従
し続けるものとすると、状態マシン392は状態2に留
まる。しかし、現在のプッシュ動作筐たはポップ動作の
すぐ後に続くプッシュ動作iたはポップ動作がないとす
ると、状態マシン382は状態1へ戻る。
DITSPR制御回路310の状態マシン392は、第
2の復号段階の相1中に、どのレジスタESP122と
A8P124がそれの内容をIバス90に置くかを決定
する。制御回路DITSPR310の状態マシン392
は信号「spselJを線217を介してレジスタES
P122またはレジスタASP124へ送って、それら
のレジスタのどれがデータを!バス90に置くかを示す
。状態マシン392が状態lにあるものとすると、レジ
スタB8P122内のスタックポインタオフセット値が
Iバス90に置かれる。他方、状態マシン392が状態
2にあると、レジスタASP124内のスタックポイン
タオフセット値が代bにエバス90に置かれる。このこ
とは、前のスタック動作のすぐ後に続かないスタック動
作に対しては、レジスタESP122内のスタックポイ
ンタオフセット値が第2の復号段階の第1の相の間に■
バス90に置かれる。しかし、スタック動作が前のスタ
ック動作のすぐ後に続くものとすると、レジスタASP
124内のスタックポインタオフセットイ直がIバス9
0に置かれ、レジスタESP122内のオフセット値は
、第2の復号段階の第1の相の間にはIバス90には置
かれない。
DITSPR制御回路310の状態マシン392回路は
、第5図の最初のスタックプッシュ動作は前のスタック
動作のすぐ後に続くことはない。したがって、第2の復
号段階の相1の間は、ユーザが見ることができるスタッ
クポインタレジスタESP122に格納されているスタ
ックポインタオフセット値が線165を介して■バス9
0に書込まれる。
これは第5図の列602、行503と504に「ESP
」−FtF+ で示され、矢印がrIBU8J を指している。
上記のように、このプッシュ動作は前のスタック動作の
すぐ後に続かないことを制御回路DIT8PR310が
知っているから、レジスタESP122に格納されてい
るオフセット値が線161を介してJバス147に書込
まれる。レジスタESP122からJバス147に書込
まれたスタックポインタオフセット値は、次に、第1の
プッシュレジスタ命令の第2の復号段階の同じ相1の間
に、線135を介して入力ラツチ118へ書込まれる。
ラツチ118に格納されているこの値はスタックポイン
タ加算器114への入力Aになる。
最初のプッシュ動作のための第2の復号段階の相1の間
に、制御信号「gde IJがDITSPR制御回路3
10から線217を介してスタックポインタ論理回路1
10のマルチプレクサ116へ送られる。
1’−gdelJ値がOであることは、2バイトの増加
または減少を行うことを意味し、gdel値1は4バイ
トの増加または減少を行うべきことを意味する。
「gdelJ 信号tD送D ld第5 Fiu)列5
06、行602に「GDELIJで示されている。
第1のプッシュスタック動作の第2の復号段階の相2の
間に、セグメンテーション装置74(第2図)が直線ア
ドレスを形成し、それをLAバス89に置く。セグメン
テーション装置74は、EsPレジスタ122からIバ
ス9oに置かれた現在のスタックポインタオフセット値
を受けることにょシ、その直線アドレスを形成する。セ
グメンテーショ/装置74は、■バス90に受けたオフ
セット値を、制御信号「gdslJo値に応じて、2バ
イト筐たは4バイトだけ減少させる直線アドレス加算器
(図示せず)を含む。「gdelJがOであると、オフ
セット値は2バイトだけ減少させられる。「gdelJ
が1で’lzると、■バス9o上のオフセット値ハ4バ
イトだけ減少させられる。それから、セグメンテーショ
ン装置74は減少させられた結果のオフセット値をスタ
ックに対するペースアドレスに加える。そのペースアド
レスは、セグメンテーション装置74内のスタックのた
めのベースアドレスレジスタに格納される。
第2の復号段階の同じ相2の間に、セグメンテション装
置T4によってそのようにして形成された直線アドレス
がLAバス89に置かれ、ぺ一ジング装置72とキャッ
シュ装置66へ送られる。
直線アドレスの形成、およびそれをLAバス89に置く
ことが第5図の行503と列602に「LAADDJに
より示されている。
第5図の行505と列602に示されている「RGDC
DJは、第2の復号段階の相2の間に、現在のマイクロ
命令からの情報が復合されて、マイクロプロセッサのど
のレジスタがそれの内容をデータとしてスタックにプッ
シュして格納するかを決定することを示す。
また、第1の命令に対する第2の復号段階の相2の間に
スタックポインタ加算器114が、マルチプレクサ11
6と線133を介して8PAdder 114の入力端
子Bへ送られる値に応じて、入力ラッチ118に格納さ
れているスタックポインタオフセット値を2バイトまた
は4バイト減少させる。制御回路DISTR310から
線217を介してマルチプレクサ116へ送られる制御
信号gde 1  は、減少を上記のように2バイトま
たは4バイト減少させるかを決定する( 「gdelJ
が0は2バイトを示し、1は4バイトを示す)。スタッ
ク動作がプッシュ動作であることは、スタックポインタ
加算器114が、ラッチ118に格納されている値を増
加するのではなくて、その値を減少させることを示す。
その結果として減少させられオフセットスタックポイン
タ値がSPAdder 114 から線129を介して
SPLateh112(出力ラッチ112とも呼ばれる
)へ、第1のスタック命令に対する第2の復号段階の同
じ相2中に、転送されて格納される。SPAddsr1
14によるスタックポインタオフセット値の減少と、減
少させられた結果としての値のSPLatch出力11
2への格納は第5図の行506、列602 K rsp
*DDJで示されている。
第1のプッシュ動作に対する実行クロックサイクルの相
1の間は、ページング装置T2はLAバス89上の直線
アドレスを受ける。ページング装172はそのベージン
グ装置内の遷移ルックアサぺq一 ?ドバツファ(TLB)(図示せず)を用いて22ビッ
トページングアドレスを形成する。そのアドレスはPA
バス75に置かれてからキャッシュ装置66へ送られる
。遷移ルックアサイドバッファは四方セット連想ページ
テーブルキャッシュである。そのバツファは、最も一般
的に用いられるぺ−ジテーブルエントリをマイクロプロ
セ■ッサ60内に自動的に保持する。実行段階のその同
じ相1の間は、10ビット直線アドレスがI,Aバス8
9に存在し続ける。そのLAバスはキャッシュ装t60
へも結合される。ページングアド1/スが第5図の行5
02、列603にrT L BJにより示されている。
格納しているデータをスタックヘプッシュシタレジスタ
からのデータが、第1のプッシュ動作に対する実行段階
のこの同じ相1の間にRバス140へ転送される。デー
タ転送は第5図の行504、列603に「RGXTR」
で示されている。
捷た、第1のプッシュ動作に対する実行段階の相1の間
に、スタックポインタ出力ラッチ112に格納されてい
るスタックポインタオフセットの更新された値が、SP
Latch 112から線125を介してJ ハス14
7へ書込まれる、すなわち転送される。
J ハス147へ転送されを更新されたスタックポイン
タオフセット値はそれから線141を介して進みスタッ
クポインタレジスタASP124へ転送される。
このステップが第5図の行506、列603にIASP
1により示されている。矢印はIA 8 PJへ向けら
れている。
第1のブロシュ命令の実効段階の相1の間に、ESPレ
ジスタ122に格納されているスタックポインタオフセ
ット値が、シャドウイングステップの部分として、シャ
ドウスタックポインタレジスタSSP120へ転送すな
わち書込まれる。このシャドウイングステップはページ
障害またはキャッシュミスの場合に用いられる。これに
ついては後で説明する。レジスタS8P120へのシャ
ドウイングが第5図の行507、列603にJS 8 
PJで示されている。矢印はIs S PJ を指す。
第1のプッシュ命令に対する実行段階の相2の一60 間に、格納しているデータをスタックヘプツシュしたレ
ジスタからのデータがマイクロプロセッサ60のキャッ
シュ66へ転送され、そのキャッシュの、PAバス75
上のページングアドレストLAバス89上の直線アドレ
スで構或されたメモリアドレスに格納される。そのメモ
リアドレスの最も左側のビットはPAバス89上の22
ビットで構威される。そのメモリアドレスの最も右側の
10ビットはLAバス89上の10ビットである。デー
タはキャッシュ装置66と、KBAバス65と、KBW
Rバス67と、バスインターフエイス62と、XAバス
61と、XDバス63とを介してメモリへ転送される。
このようにしてデータはメモリ内のスタックへプッシュ
される。メモリへのデータのこの転送は第5図の行50
2、列603のrcAcHEJにより表される。
第1のプッシュ命令の実行段階のその同じ相2の間に、
進みスタックポインタレジスタASP124に格納され
ている更新されたスタックポインタオフセット値が、A
SPレジスタ124からユーザが見ることができるスタ
ックポインタレジスタESP122へ線139を介して
転送される。これは、第5図に行507、列603に「
ESP」で示されているステップである。矢印は「ES
P」を指す。
第5図の列604内のクロツクサイクル4は、第1のプ
ッシュ動作用のパイプラインに対する書戻し段である。
しかし、列603における実行段階の相2の終シ1でに
データはスタックヘプッシュされており、第1のプッシ
ュ動作の目的は達成された。
第5図は第1のプッシュ動作のすぐ後に続く第2のプッ
シュ動作も示す。第2のプッシュのための第1の復号段
階(D1)は第2のクロックサイクルで開始される。そ
れは第5図に列602として示されている。したがって
、第2のプッシュ動作のための第1の復号段階は、第1
のプッシュ動作のための第2の復号段階と時間的に一致
する。同様に、第2のプッシュ動作に対する第2の復号
段階は第3のクロックサイクルで起る。この第3のクロ
ツクサイクルは第1のプッシュ動作の実行段階63 と同じクロツクサイクルである。第2のプッシュ動作の
ための実行段階は第4のクロツクサイクル中に起る。そ
のクロツクサイクルは第1のプッシュ動作のための書戻
し段階と同じである。第2のプッシュ動作のための書戻
し段階はクロツクサイクル5の間に行われる。それは列
605である。
第5図に示されている第2のプッシュ動作のパイプライ
ンのステップは、第5図における第1のプッシュ動作の
ステップに類似する。第2のプッシュ動作のための第1
の復号段階は第2のクロツクサイクルで始まる。第2の
プッシュ動作に対しては、DITSPR制御回路310
内の状態マシン392は第2の状態にある。その理由は
、第2のプッシュ動作は前のスタックプッシュ動作にす
ぐ続くからである。したがって、DITSPR310に
より発生され、線217によりスタックポインタ回路1
10へ加えられる制御傷号は、第2の復号段階の相1中
にIバス90に置くべきスタックポインタ値を、ESP
レジスタ122ではなくてASPレジスタ124から取
出すべきことを示す。これは第5図の行510と511
、列603に「ASPJにより示されている。矢印はr
IBUsJを指している。したがって、レジスタASP
124内のデータは、第3のクロックサイクルの第1の
相中にIバス90に置かれる。それは、SPLateh
 112内のスタックポインタ値が第1のプッシュ動作
のためにJバス147に置かれる時でもある。更に、第
3のクロツクサイクルの同じ第1の相中に、Jバス14
7上のスタックポインタ値が、第1のスタックプッシュ
動作のために、線141を介してA8Pレジスタ124
へ転送される。したがって、第2のプッシュ動作に対し
ては、第3のクロツクサイクルの相1にIバス90に置
かれるASPレジスタ124からの値は、第3のクロツ
クサイクルの同じ第1の相中にスタックポインタ出力ラ
ツチ112からJバス147に置かれたのと同じ値であ
る。
したがって、スタック動作が前のスタック動作にすぐ続
くと、最後に更新されたスタックポインタ値はASPレ
ジスタ124に格納されるから、第2の復号段階の第1
の相中に、ESPレジスタ122ではなくて、ASPレ
ジスタ124がデータをIバス90に置くために用いら
れる。こうなるのは、第5図における第1のプッシュ動
作に対する第2の復号段階の第2の相中に、ラッチ11
8に格納されているスタックポインタ値がスタックポイ
ンタ加算器114により減少させられ、その値がSPL
atchl12に格納されるからである。
第5図は第2のプッシュ動作の直後に行われる第3のプ
ッシュ動作も示す。第3のプッシュの第1の復号段階は
第3のクロツク段階中に起る。それは列603である。
第3のプッシュ動作に対する第2の復号段階は第4のク
ロツク段階中に起る。
それは列604である。第3のプッシュ動作のための実
行相は第5のクロツクサイクル中に起る。それは列60
5である。
第3のプッシュ動作に対しては、DIT8PR回路31
0の状態マシンは、前のスタック動作の直後に第3のプ
ッシュ動作が行われるならば、状態2にもある。したが
って、第3のプッシュ動作のプッシュ動作の第2の復号
段階の第1の相においては、Iバス90に置かれるスタ
ックポインタ値ハ、ESPレジスタ122からではなく
てASPレジスタ124から取出される。あるスタック
動作が第3のプッシュスタック動作の直後に行われない
とすると、DITSPR回路310内の状態マシン39
2は状態1へ戻る。このことは、未来の任意のスタック
動作の第1のスタック動作はESPレジスタ122から
スタックポインタ値を取出し、そのスタック動作の第2
の復号段階の第1の相中にその値をIバスに置く。
第5図の行523〜525に示されているポインタ更新
図は、どのレジスタがそれの内容を次の相1(會たは次
のクロックサイクル)中にIバス90へ転送するかを示
す。DITSPR回路310の状態マシンは、ASPレ
ジスタ124とESPレジスタ122のどれがそれの内
容を転送したかを判定する。状態1から状態2へ、3よ
び状態2から状態1への状態マシン392の遷移は、そ
れが起るのであれば、相2において起る。制御指示子「
ispvalJは、別のスタック動作が受けられたかど
うかを状態マシ?392へ知らせる。
第3のクロツクサイクルにおける第1のスタック動作に
対してページが障害を起したシ、キャツシャがミスを犯
した場合には、ESPレジスタ122はSSPレジスタ
120に格納されている値を回復する。いいかえると、
ESPレジスタ122はそれの前の値をSSPレジスタ
120から検索する。キャッシュ66の場所が空の時に
キャッシュ■スが生ずる。
ページがディスクからメモリへ壕だロードされていない
時にページ障害が起る。ページ障害またはキャッシュミ
スがあるものとすると、第1のスタック命令がその命令
の実行段階からを出るまで、第2の命令の第2の復号段
階が終った時に第2のスタックプッシュ動作は凍結され
る。第3の命令はそれの第2の復号段階にも入らない。
したがって、第3の命令に対する第1の復号段階要求は
第4のクロツクサイクルにおいて繰返見され、それが繰
返えし要求であることをデータ路装置T6は知らされる
ページ障害やキャッシュミスがないとすると、−67 各プッシュ命令をちょうど1クロックサイクルで実行で
きることが第5図からわかる。セグメンテーション装置
74の直線アドレス加算器に加えて専用スタックポイン
タ加算器114を使用すると、性能利得を一般に生ずる
類似の結果が生ずる。
スタックポップ動作のための命令パイプラインはプッシ
ュ動作のための命令パイプラインに類似する。しかし差
異もある。たとえば、ポップ動作に対する第2の復号段
階のある相中に、直線アドレスがセグメンテーション装
置74により直線アドレスが形成され、LAバス89に
置かれる。セグメンテーション装置74の直線アドレス
加算器が、■バス90上のスタックポインタオフセット
[−、セグメンテーション装t74内のペースレジスタ
に格納されているベースアドレスへ加エることによって
簡単に形成される。セグメンテーション装置T4は■バ
ス90に格納されているスタックポインタオフセット値
を増加會たは減少することはない。しかし、これとは対
照的に、スタックポップ動作に対して、ラッチ118 
K格納されて68 いる値を、マルチプレクサ116を通ってスタックポイ
ンタ加算器入力端子Bに達するバイト量だけ、減少では
たくで、増加させる。
ポップ動作に対する実行クロックサイクルの相2の間に
別の違いが起る。ポップ動作に対しては、データはメモ
リへ書込まれるのではなくて、メモリから読出される。
(PAバス75上のページングアドレスの22ビットで
構威された最も左側のヒットト、LAハス89上の直線
アドレスの10ビットで構威された最も右側のビットと
を有するメモリアドレスからデータ語は読出される。)
更に、ポップ動作の書戻し段階中に、メモリから読出さ
れたデータがデータレジスタに格納される。
第5図を参照して先に述べたスタックポインタ更新法は
、ある行中の2つまたはそれ以上のスタック動作が存在
する場合に応用できる。それらのスタック動作は、たと
えば、プッシュ、ポップ、それからプッシュとすること
ができる。プッシュトポップのスタック動作の別の組合
わせもカバーされ、1行中に4つ以上のスタック動作が
含會れる。たとえば、1行中に4つのポップ動作を設け
ることができ、または6つのプッシュ動作と、それに続
く1つのポップ動作を設けることができる。
本発明の別の実施例にかいては、スタック動作は、たと
えば、(1)MOV ESPXX回の動作、(2)  
ADD ESP,6回の動作、(3)レジスタE8P1
22が宛先レジスタで、Mバス13Bが動作中に用いら
れる場合の算術その他の演算、に続くことができる。
第6図は1つ咬たは複数の動作がすぐ続くスタックポイ
ンタレジスタ動作への書込みを含む動作の状況を示す。
とくに、第6図は、行中の2つのスタックポップ動作が
すぐ続く動き動作のための命令パイプラインを示す。M
OV ESP,(ESP十N)動作は (1)  ES
Pレジスタ122に格納されている値を取DN(2) 
 アドレスを形成するためにその値へ値Nを加え、(3
)そのアドレスに格納されているデータを検索し、それ
から(4)そのデータをE8Pレジスタ122に格納す
る、ことを含む。
第6図の動き命令に対して、命令がメモリからプリフエ
ツチされるブリフエツチ段階は示されていない。
第6図に示されている動き命令に対する第1の復号段階
の相1中に命令復号器68が動き命令を復号する。
この命令復号が第6図の行101、列801にシけるD
IPLA により命令復号が示されている。動き命令に
対する第1の復号段階の相2中に、命令復号器68は、
ユーザが見ることができるスタックポインタレジスタE
SP122への書込みを含む動作に対する要求を送る。
これは第6図の行702、列801にIIBSで示され
ている。動き動作のM2の復号段階の相1中に、レジス
タESP122に格納されているスタックポインタオフ
セット値が■バス90へ転送される。
動き動作に対する第2の復号段階は第2のクロツクサイ
クルに入る。直後のポップ命令に対する第1の復号段階
も第2のクロックサイクルに入る。
第2のクロツクサイクルの相1中に、命令復号器68が
第1のポップ命令を復号する。これは第6−71 図の行γ07,列802にDIPLAにより示されてい
る。
動き動作に対して、第1の復号段階は第1のクロックサ
イクルに入シ、第2の復号段階は第2のクロツクサイク
ルに入b1実行相は第3のクロツクサイクルに入シ、書
戻し相は第4のクロツクサイクルに入る。
直後のポップ命令に対しては、M1の復号段階は第2の
クロツクサイクルに入b1第2の復号段階は第3のクロ
ツクサイクルに入シ、第2の復号段階は第4のクロツク
サイクル内で繰返見され、第5のクロツクサイクル中に
実行相が起る。
第2のポップ命令に対しては、第3のクロツクサイクル
中に第1の復号段階が生じ、第4のクロックサイクル中
に第1の復号段階が繰返えされ、第5のクロツクサイク
ル中に第2の復号段階が起シ、第5のクロツクサイクル
中に実行段階が生ずる。
動き命令に対して、第2のクロツクサイクルの相2中に
、セグメンテーション装置74はIバス72一 90上のスタックポインタ値を用いて、ベースアドレス
とともに直線アドレスを形成し、その直線アドレスをL
Aバス89に置く。これは第6図の行708、列802
に「SPvL1」で示されている。
動き命令に対する第3のクロックサイクルの相1中に、
ページング装置T2はLAバス89上の直線アドレスを
受ける。それからページング装置はそれのルックアサイ
ドバッファを用いてページングアドレスを形成し、その
アドレスをPAバス75に置く。これは第6図の行T0
3、列803に「TLB」で示されている。
CIMDは、第6図にかける命令に対する書戻しクロツ
ク中にどのレジスタへ書込まれるかを示す情報を含むマ
イクロ命令フィールドである。動き動作に対するCIM
Dは、書戻し段階中にESP  レジスタ122に書込
まれることを示す。CIMDは第6図の第3のクロツク
サイクルの相1中に現われる。
また、ポップ命令に対する第3のクロックサイクルの第
1の相において、ESPレジスタ122に格納されてい
るスタックポインタオフセットがIバス90に置かれる
。これは第6図の行7o9、列710κ示されている。
第3のクロツクサイクルの第1の相においては、必要な
ポップ増分値に対するバイトサイズを示す1−gdel
J信号がDITSPR制御回路310から線217を介
してマルチブレクサ116へ送られる。これは第6図の
行712、列803にrGDEL IJ で示されてい
る。筐た、第3のクロックサイクル中の相1にかいて、
ESPレジスタ122に格納されているスタックポイン
タオフセット値がJバス147へ書込筐れ、それから線
135を介してラッチ118へ書込筐れる。
更に、第3のクロツクサイクルのこの第1の相(これは
第1のポップ命令に対する第2の復号相である)の間に
、命令復号装置68の第2の復号器93が衝突を検出す
る。
衝突は、第3のクロックサイクルの相2において、第1
のポップ命令が直線アドレス加算LAADD動作を行い
、それが、第3のクロツクサイクルの相1において!バ
ス90に置かれた、ESPレジスタ122に格納されて
いる既存の値を用いる、という事実から起るものである
。しかし、ESPレジスタ122の内容は第4のクロツ
クサイクルの来るべき相1において更新すべきである。
したがって、ESPレジスタ122に格納すべき更新さ
れた値を直線アドレス加算LAADDが用いないのであ
ればLAADDは誤シを生ずる。いいかえると、第3の
クロックサイクルの相2中に直線アドレス加算を実行す
べきESPソースレジスタ122が第4のクロツクサイ
クルの相1に釦いて更新されるから、衝突が起る。
更に、第3のクロツクサイクルの相1中に、命令復号器
68は第2のポップ命令を復号する。これが第6図の行
714、列803に示されている。
第3のクロツクサイクルの相2中に、マイクロプロセッ
サのメモリの、PAバス75上のページングアドレスと
LAバス89の直線アドレスで構成されているメモリア
ドレスを有するメモリ場所からデータが読出される。こ
れは第6図の行703、列803に「CACHEJで示
されている。
−75− 第6図の行705、列803におけるI−RGDCDJ
は「cIM1]がクロツクサイクルの相2で復号される
ことを示す。CIMDの復号によ,6、gspレジスタ
122が、動き命令の書戻し段階中κ書込筐れるレジス
タであることが判明する。
第3のクロツクサイクルの相2中に、命令復号器6.8
は、ポップ命令が復号されたことを示す別の「ispv
alJ信号をデータ路装置76へ送る。これは第6図の
行708、列803に「IsPVALIJで示されてい
る。
第3のクロツクサイクルの相2中に、セグメンテーショ
/装置74は、■バス90に置かれているスタックポイ
ンタオフセット値を基にして直線アドレスを形成する。
その直線アドレスはLAバス89に置かれる。この直線
アドレスは、動き命令に従く第1のポップ命令に対する
パイプライン中に形成される。したがって、セグメンテ
ーション装置74は直線アドレス加算器を用いて、■バ
ス90上のオフセット値を、セグメンテーション装置7
4内のベースアドレスレジスタに格納され76− ているベースアドレスへ加えることにより直線アドレス
は形成される。これは第6図の行109、列803のr
L A A D DJにより示されている。
第3のクロツクサイクルの相2においては、命令復号器
68の第2の復号器93が、繰返えレ要求制御信号を線
99を介してデータ路装置79へ送る。これは第6図の
行710、列803にある「PRTRQJ で示されて
いる。これは、データ路装置76が第1のポップ命令の
第2の復号段の部分を繰返えさねばならないことを示す
データ路装置76はCIMDフィールドとの「ソフトな
」衝突を検出する。
第3のクロツクサイクルの相2中に、第2のポップ命令
のためのパイプライン中に泡が置かれる。
いいかえると、第4のクロツクサイクルの第2の相まで
、第2のポップ命令のためのパイプラインが凍る。
第4のクロツクサイクルは動き命令のための書戻しクロ
ツクサイクルである。第4のクロツクサイクルの相1中
に、Mバス138に現われるデータは、ユーザが見るこ
とができるスタックポインタレジスタESP122へ線
167を介して書込會れる。
筐た、第4のクロツクサイクルの相1中に、Mバス13
8をJバス147へ短絡するために短絡器182が用い
られる。また、第4のクロツクサイクルの相1中に、M
バス138をIバス90へ短絡するために短絡器184
が用いられる。したがって、Jバス147とIバス90
ぱMバス138に論理的に等しくなるようにされ、Jバ
ス147と、Mバス138と、■バス90とにおけるデ
ータは同じに々る。Jバス147へのMバス138への
短絡が第6図の行709、列804に示されている。■
バス90へのMバスの短絡が第6図の行710、列80
4に示されている。
第4のクロックサイクルの相2中に、セグメンテーショ
ン装置74を用いて直線アドレスを形成する。その直線
アドレスはLAバス89に置かれる。これは第6図に釦
ける第1のポップ命令に対して起るから、セグメンテー
ション装置74中のペースレジスタ内のベースアドレス
に1バス90上のオフセット値を加えることにより直線
アドレスは形成される。
!た、第4のクロツクサイクルの相2の間に、ラッチ1
1Bの値が、マルチプレクサ116を通ってSPAdd
er 114の入力端子Bへ加えられたバイト量だけ、
SPAdder 114  によジ増加させられる。
1た、第4のクロツクサイクルの相2の間に、第2のポ
ップ命令が生じていることを示す信号を命令復号器68
はデータ路装置76へ送る。
第5のクロツクサイクルの相1中に、ページング装置T
2はLAバス89上に直線アドレス値を受ける。ベージ
ング装置72はそれの遷移ルックアサイドバツファを用
いてページングアドレスを形成し、それをPAバス75
に置く。これは第6図に行709、列805の「T L
 BJにより示されている。
第4のクロツクサイクルの相1においてデータはJバス
147へ短絡され、それから8PAdder114を介
してラツチ114に保持される。次に、第4のクロツク
サイクルの相2にかいてSPLatch79− がJバス147に置かれる。それから、第5のクロツク
サイクルの相1中に、ASPレジスタ124はJバス1
47から値を得る。
第5のクロツクサイクルの相1中に、スタックALPレ
ジスタ124に格納されているポインタオフセット値が
Iバス9ロヘ書込まれる。これが第6図の行716 ,
 717 ,列805に示されている。
また、第5のクロツクサイクルの相1中に、信号rc 
D E LJがDITSPR制御回路310から線21
7を介してマルチプレクサ116へ送られる。
第5のクロツクサイクルの相2中に、メモリのスタック
メモリ場所からポップ命令に対するデータが読出される
。これが第6図の行709、列805に「CACHE−
1で示されている。
また、第5のクロツクサイクルの相2中に、AsPレジ
スタ124内のオフセット値がESPレジスタ122へ
書込まれる。
第5のクロツクサイクルの相2の間に、セグメンテーシ
ョン装置74は直線アドレスも発生し、それをLAバス
89に置く。この直線アドレス発80 生は第2のポップ命令のためである。したがって、■バ
ス90上のオフセット値をセグメンテーション装置74
内のペースレジスタに格納されているペースアドレスに
加え合わせることにより形成される。これは第6図に行
716、列805の「LAADD−1により示されてい
る。
第5のクロツクサイクルの第2の相にかいては、ラッチ
118内のスタックポインタ値は、ポップ命令であると
仮定すると、マルチプレクサ116を通ってスタックポ
インタ加算器114に加えられたバイト量だけ増加させ
られる。これは第6図の行718、805のrsPAD
DJにより示されている。
第6図に示されている第2のポップ命令に対する第6の
クロツクサイクルにおいては、ベージング装置T2はペ
ージングアドレスを形成して、それをPAバス15に置
く。更に、スタックポインタラツチ112内の更新され
たスタックポインタ値が線125を介してJバス147
に書込1れる。Jバス147におけるその更新された値
は線141を介して進みスタックポインタレジスタAS
P124 に書込まれる。1た、ESPレジスタ内のオ
フセット値がシャドウスタックポインタレジスタ120
に書込まれる。
第6のクロックサイクルの相2の間に、メモリに格納さ
れているデータがスタックメモリアドレスから読出され
る。更に、ASPレジスタ124に格納されているデー
タがESPレジスタ122に格納される。
第6のクロツクサイクルの相2の間に、メモリに格納さ
れているデータがスタックメモリアドレスから読出され
る。更に、ASPレジスタ124に格納されているデー
タがESPレジスタ122に格納される。
第6図において、行722 , 723 , 724に
おけるボイ/タ更新は、要求された時に次の相1の間に
どのレジスタがそれの内容を■バス90へ転送したかを
矢印で示す。
【図面の簡単な説明】
第1図はスタック状の従来のメモリ編或の線図、第2図
はマイクロプロセッサのアーキテクチャのブロック図、
第3図はマイクロプロセッサの整数実行データ路のブロ
ック図、第4図はマイクロプロセッサのスタックポイン
タ回路のブロック図、第5図は一連のスタック動作につ
いてのマイクロプロセッサのタイミング図、第6図はス
タックポインタレジスタへの書込みと、それに続く2つ
のスタック動作とを含む動作に対するマイクロプロセッ
サのタイミング図である。 60・・・・マイクロプロセッサ、62・・・●バスイ
ンターフエイス、66・●●●キャッシュ装置、68・
・・・命令復号器、T2・・・・ページング装置、74
・・●●セグメンテーション装置、76・・・・データ
路装置、93・・・・復号器、110・●●・スタック
ポインタ回路、118 , 120●●●・ラッチ、1
16●・●●マルチブレクサ、122 , 124・・
・・レジスタ、310・・・・制御回路、392・・・
・状態マシン。

Claims (1)

  1. 【特許請求の範囲】 (1)、(1)第1のクロックサイクル中に、スタック
    プッシュ動作を求めている命令を復号し、スタックプッ
    シュ動作を求めている制御指示子を発生する過程と、 (2)第2のクロックサイクルの相1中に、 (a)第1のスタックポインタレジスタに格納されてい
    るスタックポインタ値を第1のバスに書込む過程と、 (b)第1のスタックポインタレジスタに格納されてい
    るスタックポインタ値をスタックポインタ加算器の入力
    ラッチに書込む過程と、 (3)第2のクロックサイクル中に、 (a)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成する過程と、 (b)スタックポインタ加算器の入力ラッチに格納され
    ているスタックポインタ値をデルタ量だけ減少して更新
    されたスタックポインタ値を形成する過程と、 (c)更新されたスタックポインタ値を出力ラッチに格
    納する過程と、を備える過程を実行する過程と、 (4)第3のクロックサイクルの相1中に、 (a)出力ラッチに格納されている更新されたスタック
    値を第2のバスに書込む過程と、(b)第2のバス上の
    更新されたスタックポインタ値を格納のために第2のス
    タックポインタレジスタに書込む過程と、 (5)第3のクロックサイクルの相2中に、 (a)スタックメモリアドレスにより示されているメモ
    リ場所に格納するためにデータをメモリへ書込む過程と
    、 (b)第2のスタックポインタレジスタからの更新され
    たスタックポインタ値を格納するために第1のスタック
    ポインタレジスタに書込む過程と、を備えるスタックを
    実行する過程と、 を備えることを特徴とするデジタルコンピュータにおい
    てデータをメモリ内のスタック上にプッシュする方法。 (2)、(1)第1のクロックサイクル中に、スタック
    ポップ動作を求めている命令を復号し、スタックポップ
    動作を求めている制御指示子を発生する過程と、 (2)第2のクロックサイクルの相1中に、 (a)第1のスタックポインタレジスタに格納されてい
    るスタックポインタ値を第1のバスに書込む過程と、 (b)第1のスタックポインタレジスタに格納されてい
    るスタックポインタ値をスタックポインタ加算器の入力
    ラッチに書込む過程と、 (3)第2のクロックサイクル中に、 (a)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成する過程と、 (b)スタックポインタ加算器の入力ラッチに格納され
    ているスタックポインタ値をデルタ量だけ増加して更新
    されたスタックポインタ値を形成する過程と、 (c)更新されたスタックポインタ値を出力ラッチに格
    納する過程と、を備える過程を実行する過程と、 (4)第3のクロックサイクルの相1中に、 (a)出力ラッチに格納されている更新されたスタック
    ポインタ値を第2のバスに書込む過程と、 (b)第2のバス上の更新されたスタックポインタ値を
    格納のために第2のスタックポインタレジスタに書込む
    過程と、 (5)第3のクロックサイクルの相2中に、 (a)スタックメモリアドレスにより示されているメモ
    リ場所からデータを読出す過程と、 (b)第2のスタックポインタレジスタからの更新され
    たスタックポインタ値を格納するために第1のスタック
    ポインタレジスタに書込む過程と、を備えるスタックを
    実行する過程と、 を備えることを特徴とするデジタルコンピュータにおい
    てデータをメモリ内のスタックからポップオフする方法
    。 (3)、(1)第1のクロックサイクル中に、スタック
    プッシュ動作を求めている命令を号済し、スタックプッ
    シュ動作を求めている制御指示子を発生する過程と、 (2)第2のクロックサイクルの相1中に、 (a)スタックプッシュ動作が前のスタック動作にすぐ
    続かないとすると、 (i)第1のスタックポインタに格納されているスタッ
    クポインタ値を第1のバスに書込む過程と、 (ii)第1のスタックポインタレジスタに格納されて
    いるポインタ値をスタックポインタ加算器の入力ラッチ
    に書込む過程と、 (b)スタックプッシュ動作が前のスタック動作にすぐ
    続くとすると、 (i)第2のスタックポインタレジスタに格納されてい
    るスタックポインタ値を第1のバスに書込む過程と、 (ii)第1のスタックポインタレジスタに格納されて
    いるスタックポインタ値をスタックポインタ加算器の入
    力ラッチに書込む過程と、 (3)第2のクロックサイクルの相2中に、 (a)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成する過程と、 (b)スタックポインタ加算器の入力ラッチに格納され
    ているスタックポインタ値をデルタ量だけ減少して更新
    されたスタックポインタ値を形成する過程と、 (c)更新されたスタックポインタ値をラッチに格納す
    る過程と、 を備える過程を実行する過程と、 (4)第3のクロックサイクルの相1中に、 (a)出力ラッチに格納されている更新されたスタック
    ポインタ値を第2のバスに書込む過程と、 (b)第2のバス上の更新されたスタックポインタ値を
    格納のために第2のスタックポインタレジスタに書込む
    過程と、 (5)第3のクロックサイクルの相2中に、 (a)スタックメモリアドレスにより示されているメモ
    リ場所に格納するためにデータをメモリへ書込む過程と
    、 (b)第2のスタックポインタレジスタからの更新され
    たスタックポインタ値を格納するために第1のスタック
    ポインタレジスタに書込む過程と、を備えるスタックを
    実行する過程と、 を備えることを特徴とするデジタルコンピュータにおい
    てデータをメモリ内のスタック上にプッシュする方法。 (4)、(1)第1のクロックサイクル中に、スタック
    ポップ動作を求めている命令を復号し、スタックポップ
    動作を求めている制御指示子を発生する過程と、 (2)第2のクロックサイクルの相1中に、 (a)スタックプッシュ動作が前のスタック動作にすぐ
    続かないとすると、 (i)第1のスタックポインタレジスタに格納されてい
    るスタックポインタ値を第1のバスに書込む過程と、 (ii)第1のスタックポインタレジスタに格納されて
    いるスタックポインタ値をスタックポインタ加算器の入
    力ラッチに書込む過程と、 (b)スタックプッシュ動作が前のスタック動作にすぐ
    続くとすると、 (i)第2のスタックポインタレジスタに格納されてい
    るスタックポインタ値を第1のバスに書込む過程と、 (ii)第1のスタックポインタレジスタに格納されて
    いるスタックポインタ値をスタックポインタ加算器の入
    力ラッチに書込む過程と、 (3)第2のクロックサイクルの相2中に、 (a)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成する過程と、 (b)スタックポインタ加算器の入力ラッチに格納され
    ているスタックポインタ値をデルタ量だけ減少して更新
    されたスタックポインタ値を形成する過程と、 (c)更新されたスタックポインタ値を出力ラッチに格
    納する過程と、を備える過程を実行する過程と、 (4)第3のクロックサイクルの相1中に、 (a)出力ラッチに格納されている更新されたスタック
    ポインタ値を第2のバスに書込む過程と、 (b)第2のバス上の更新されたスタックポインタ値を
    格納のために第2のスタックポインタレジスタに書込む
    過程と、 を備えるスタックを実行する過程と、 (5)第3のクロックサイクルの相2中に、 (a)スタックメモリアドレスにより示されているメモ
    リ場所からデータを読出す過程と、 (b)第2のスタックポインタレジスタからのスタック
    ポインタ値を格納するために第1のスタックポインタレ
    ジスタに書込む過程と、 を備えるスタックを実行する過程と、 を備えることを特徴とするパイプライン化された命令を
    有するデジタルコンピュータにおいてメモリ内のスタッ
    クからデータをポップオフする方法。 (5)、(1)第1のクロックサイクル中に、第3のバ
    スから第1のスタツクポインタレジスタへの書込みを求
    めている命令を復号する過程と、 (2)第2のクロックサイクルの相1中に、 (a)第1のスタックポインタレジスタに格納されてい
    るスタックポインタ値を第1のバスに書込む過程と、 (b)スタック動作を求めている命令を復号する過程と
    、 (3)第2のクロックサイクル中に第1のバス上のスタ
    ックポインタ値を用いることによりスタックメモリアド
    レスを形成する過程と、 (4)第3のクロックサイクルの相1中に、 (a)第1のスタックポインタレジスタに格納されてい
    る既存のスタックポインタ値を第1のバスに書込む過程
    と、 (b)更新された値が第1のスタックポインタレジスタ
    に格納される前に第1のスタックポインタレジスタに格
    納されている既存のスタックポインタ値にスタック動作
    が依存するであろうことを命令が求めていることを検出
    して、近づきつつある衝突を示す過程と、 (5)第3のクロックサイクルの相2中に、 (a)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成する過程と、 (b)スタック動作の一部を繰返えすために繰返えし要
    求制御信号を発生する過程と、 (6)第3のクロックサイクルの相1中に、 (a)第3のバスからの第1の更新されたスタックポイ
    ンタ値を第1のスタックポインタレジスタに書込む過程
    と、 (b)第3のバス上の第1の更新されたスタックポイン
    タ値が第2のバスへ書込まれるように第3のバスを第2
    のバスへ短絡する過程、と、 (c)第3のバス上の第1の更新されたスタックポイン
    タ値が第1のバスへ書込まれるように第3のバスを第1
    のバスへ短絡する過程と、 (d)第1の更新されたスタックポインタ値を第2のバ
    スからスタックポインタ加算器の入力ラツチへ書込む過
    程と、 を備える過程を実行する過程と、 (7)第4のクロックサイクルの相2中に、 (a)第1のバス上の第1の更新されたスタックポイン
    タ値を用いることによりスタックメモリアドレスを形成
    する過程と、 (b)スタック動作がプッシュ動作であるならば、スタ
    ックポインタ加算器の入力ラッチ内の第1の更新された
    スタックポインタ値をデルタ量だけ減少して第2の更新
    されたスタックポインタ値を形成し、第2の更新された
    値を出力ラッチに格納する過程と、 (c)スタック動作がポインタ動作であるならば、スタ
    ックポインタ加算器内の第1の更新されたスタックポイ
    ンタ値をデルタ量だけ増加して第3の更新されたスタッ
    クポインタ値を形成し、第3の更新された値を出力ラッ
    チに格納する過程と、を備えるスタックを実行する過程
    と、 (8)第5のクロックサイクルの相1中に、 (a)出力ラッチに格納されている更新された値を第2
    のバスに書込む過程と、 (b)第2のバス上の更新された値を格納のために第2
    のスタックポインタレジスタに書込む過程と、 を備える過程を実行する過程と、 (9)第5のクロックサイクルの相2中に、 (a)スタック動作がプッシュ動作であるならば、スタ
    ックメモリアドレスにより示されているメモリ場所に格
    納するためにデータをメモリへ書込む過程と、 (b)スタック動作がポップ動作であるならば、スタッ
    クメモリアドレスにより示されているメモリ場所からデ
    ータを読出す過程と、 (c)第2のスタックポインタレジスタからの更新され
    た値を格納するために第1のスタックポインタレジスタ
    に書込む過程と、 を備えるスタックを実行する過程と、 を備えることを特徴とするパイプライン化された命令を
    有するデジタルコンピュータにおいて第3のバスから第
    1のスタツクポインタレジスタへ書込むことを求めてい
    る動作にすぐ続いてスタック動作を実行する方法。 (6)、(1)スタック動作を求める命令を復号し、制
    御指示子を発生する回路と、 (2)第1のバスと、 (3)第2のバスと、 (4)第1のバスと第2のバスへ結合される第1のスタ
    ックポインタレジスタと、 (5)第1のバスと、第2のバスと、第1のスタツクポ
    インタレジスタへ結合される第2のスタックポインタレ
    ジスタと、 (6)入力ラッチが第2のバスへ結合されるスタックポ
    インタ加算器と、 (7)(a)入力端子がスタックポインタ加算器の出力
    端子へ結合され、 (b)出力端子が第1のバスへ結合され、 (c)出力端子が第2のバスへ結合されたスタックポイ
    ンタ出力ラッチと、 (8)復号回路から制御指示子を受け、スタック動作が
    前のスタック動作にすぐ続くか否かを判定する状態マシ
    ンと、 (9)スタックメモリアドレスを形成するアドレス回路
    と、 (10)データをメモリへ書込む手段と、 (11)復号回路から制御指示子を受けるために結合さ
    れ、かつ状態マシンから出力を受けるために結合される
    制御回路と、 を備え、(a)第2のクロックサイクルの相1中に、 (i)スタックプッシュ動作が前のスタック動作にすぐ
    続かないことを状態マシンが示したとすると、 (A)第1のスタックポインタレジスタに 格納されているスタックポインタ値を第1のバスに書込
    み、 (B)第1のスタックポインタレジスタに 格納されているスタックポインタ値をスタックポインタ
    加算器の入力ラッチに書込む、 ために制御回路が制御信号を発生し、 (ii)スタック動作が前のスタック動作にすぐ続くこ
    とを状態マシンが示したとすると、 (A)第2のスタックポインタレジスタに格納されてい
    るスタックポインタ値を第1のバスに書込み、 (B)第2のスタックポインタレジスタに格納されてい
    るスタックポインタ値をスタックポインタ加算器の入力
    ラッチに書込む、 ために制御回路が制御信号を発生し、 (b)第2のクロックサイクルの相2中に、 (i)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成するアドレス回路
    を有し、 (ii)スタック動作がプッシュ動作であるならば、ス
    タックポインタ加算器の入力ラッチに格納されているス
    タックポインタ値をデルタ量だけ減少して更新されたス
    タックポインタ値を形成し、 (iii)スタック動作がポツプ動作であるならば、ス
    タックポインタ加算器の入力ラッチに格納されているス
    タックポインタ値をデルタ量だけ増加して更新されたス
    タックポインタ値を形成し、 (iv)スタックポインタ出力ラッチ内に更新されたス
    タックポインタ値を格納する、 ために制御回路は制御信号を発生し、 (c)第3のクロックサイクルの相1中に、 (i)スタックポインタ出力ラッチに格納されている更
    新されたスタックポインタ値を第2のバスに書込み、 (ii)第2のバス上の更新されたスタックポインタ値
    を格納のために第2のスタックポインタレジスタに書込
    む、 ために制御回路は制御信号を発生し、 (d)第3のクロックサイクルの相2中に、 (i)スタック動作がプッシュ動作であるならば、スタ
    ックメモリアドレスにより示されているメモリ場所に格
    納するためにデータをメモリに書込み、 (ii)スタック動作がプッシュ動作であるならば、ス
    タックメモリアドレスにより示されているメモリ場所か
    らデータを読出し、 (iii)第2のスタックポインタレジスタからの更新
    されたスタックポインタ値を格納するために第1のスタ
    ックポインタレジスタに書込む、ために制御回路は制御
    信号を発生することを特徴とするパイプライン化された
    命令とメモリを有するデジタルコンピュータにおいて、
    スタック動作を実行する回路。 (7)、(1)スタック動作を求める命令を復号し、制
    御指示子を発生する回路と、 (2)第1のバスと、 (3)第2のバスと、 (4)第1のバスと第2のバスへ結合される第1のスタ
    ックポインタレジスタと、 (5)第1のバスと、第2のバスと、第1のスタツクポ
    インタレジスタへ結合される第2のスタックポインタレ
    ジスタと、 (6)入力ラッチが第2のバスへ結合されるスタックポ
    インタ加算器と、 (7)(a)入力端子がスタックポインタ加算器の出力
    端子へ結合され、 (b)出力端子が第1のバスへ結合され、 (c)出力端子が第2のバスへ結合されたスタックポイ
    ンタ出力ラッチと、 (8)復号回路から制御指示子を受け、スタック動作が
    前のスタック動作にすぐ続くか否かを判定する状態マシ
    ンと、 (9)第3のバスから第1のスタツクポインタレジスタ
    へ書込むことを求める命令のすぐ後に続くスタック動作
    が、更新された値が第1のスタックポインタレジスタに
    書込まれる前に第1のスタックポインタレジスタに格納
    されて存在するスタックポインタ値に依存することを検
    出して、衝突するおそれがあることを指示する回路と、 (10)第3のバスを第1のバスへ短絡する短絡器と、 (11)スタックメモリアドレスを形成するアドレス回
    路と、 (12)データをメモリへ書込む手段と、 (13)(a)復号回路から制御指示子を受けるため、 (b)状態マシンから出力を受けるため、 (c)衝突検出回路から出力を受けるため、に結合され
    る制御回路と、 を備え、 (a)第2のクロックサイクルの相1中に、 (i)第1のスタックポインタレジスタに格納されて存
    在するスタックポインタ値を第1のバスへ書込み、 (ii)スタック動作を求める命令を復号する、ために
    制御回路が制御信号を発生し、 (b)第2のクロックサイクルの相2中に、第1のバス
    に存在しているスタックポインタ値を用いることにより
    スタックメモリをアドレス回路に形成させるために、制
    御回路が制御信号を発生し、 (c)第3のクロックサイクルの相1中に、 (i)第1のスタックポインタレジスタに格納されてい
    る存在するスタックポインタ値を第1のバスに書込み、 (ii)第3のバスから第1のスタツクポインタレジス
    タへ書込むことを求める命令のすぐ後に続くスタック動
    作が、更新された値が第1のスタックポインタレジスタ
    に書込まれる前に第1のスタックポインタレジスタに格
    納されて存在するスタックポインタ値に依存することを
    検出して、衝突するおそれがあることを指示する ために制御回路は制御信号を発生し、 (d)第3のクロックサイクルの相2中に、 (i)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成するアドレス回路
    を有し、 (ii)スタック動作の一部を繰返えすために繰返えし
    要求制御信号を発生、 するために制御回路は制御信号を発生し、 (e)第4のクロックサイクルの相1中に、 (i)第1の更新されたスタックポインタ値を第3のバ
    スから第1のレジスタへ書込み、(ii)第3のバス上
    の第1の更新されたスタックポインタ値が第2のバスへ
    書込まれるように第3のバスを第2のバスへ短絡し、 (iii)第3のバス上の第1の更新されたスタックポ
    インタ値が第1のバスへ書込まれるように第3のバスを
    第1のバスへ短絡し、 (iv)第1の更新されたポインタ値を第2のバスから
    スタックポインタ加算器へ書込む、ために制御回路が制
    御信号を発生し、 (f)第4のクロックサイクルの相2中に、 (i)第1のバス上のスタックポインタ値を用いること
    によりスタックメモリアドレスを形成するアドレス回路
    を有し、 (ii)スタック動作がプッシュ動作であるならば、ス
    タックポインタ加算器の入力ラッチに格納されている値
    をデルタ量だけ減少して第2の更新された値を形成して
    、第2の更新された値をスタックポインタ出力ラッチに
    格納し、 (iii)スタック動作がポップ動作であるならば、ス
    タックポインタ加算器の入力ラッチに格納されている値
    をデルタ量だけ増加して更新された第3の更新された値
    を形成して、その第3の更新された値をスタックポイン
    タ出力ラッチに格納する、 ために制御回路が制御信号を発生し、 (g)第5のクロツクサイクルの相1中に、 (i)スタックポインタ出力ラッチに格納されている更
    新された値を第2のバスに書込み、 (ii)第2のバス上の更新された値を格納のために第
    2のスタックポインタレジスタに書込む、ために制御回
    路は制御信号を発生し、 (h)第5のクロックサイクルの相2中に、 (i)スタック動作がプッシュ動作であるならば、スタ
    ックメモリアドレスにより示されているメモリ場所に格
    納するためにデータをメモリに書込み、 (ii)スタック動作がポップ動作であるならば、スタ
    ックメモリアドレスにより示されているメモリ場所から
    データを読出し、 (iii)第2のスタックポインタレジスタからの更新
    されたスタックポインタ値を格納するために第1のスタ
    ックポインタレジスタに書込む、ために制御回路は制御
    信号を発生することを特徴とするパイプライン化された
    命令とメモリを有するデジタルコンピュータにおいて、
    第3のバスから第1のスタツクポインタレジスタへの書
    込みを求めている動作のすぐ後でスタック動作を実行す
    る回路。
JP2091999A 1989-04-07 1990-04-06 デジタルコンピユータにおいてデータをメモリ内のスタツク上にプツシユする方法およびパイプラインされる命令とメモリを有するデジタルコンピユータにおいてスタツクオペレーシヨンを実行する回路 Pending JPH03206523A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/334,920 US5142635A (en) 1989-04-07 1989-04-07 Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
US334920 1989-04-07

Publications (1)

Publication Number Publication Date
JPH03206523A true JPH03206523A (ja) 1991-09-09

Family

ID=23309448

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2091999A Pending JPH03206523A (ja) 1989-04-07 1990-04-06 デジタルコンピユータにおいてデータをメモリ内のスタツク上にプツシユする方法およびパイプラインされる命令とメモリを有するデジタルコンピユータにおいてスタツクオペレーシヨンを実行する回路

Country Status (6)

Country Link
US (1) US5142635A (ja)
JP (1) JPH03206523A (ja)
FR (1) FR2645663B1 (ja)
GB (1) GB2231181B (ja)
HK (1) HK56395A (ja)
IE (1) IE63907B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009080827A (ja) * 1995-10-06 2009-04-16 Patriot Scientific Corp マイクロプロセッサシステム

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH036735A (ja) * 1989-06-05 1991-01-14 Matsushita Electric Ind Co Ltd データ処理装置
JP2504235B2 (ja) * 1989-11-16 1996-06-05 三菱電機株式会社 デ―タ処理装置
JPH0546407A (ja) * 1991-08-12 1993-02-26 Toshiba Corp スタツク管理システム
US5283874A (en) * 1991-10-21 1994-02-01 Intel Corporation Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee
US5412782A (en) * 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5564023A (en) * 1994-06-30 1996-10-08 Adaptec, Inc. Method for accessing a sequencer control block by a host adapter integrated circuit
US5625800A (en) * 1994-06-30 1997-04-29 Adaptec, Inc. SCB array external to a host adapter integrated circuit
US5842004A (en) * 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US6256041B1 (en) 1995-08-04 2001-07-03 Sun Microsystems, Inc. Decompression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US6215500B1 (en) 1995-08-04 2001-04-10 Sun Microsystems, Inc. Compression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US6747644B1 (en) 1995-08-04 2004-06-08 Sun Microsystems, Inc. Decompression of surface normals in three-dimensional graphics data
US5687336A (en) * 1996-01-11 1997-11-11 Exponential Technology, Inc. Stack push/pop tracking and pairing in a pipelined processor
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
JP3634379B2 (ja) * 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
US6009499A (en) * 1997-03-31 1999-12-28 Sun Microsystems, Inc Pipelined stack caching circuit
US6289418B1 (en) * 1997-03-31 2001-09-11 Sun Microsystems, Inc. Address pipelined stack caching method
US6167488A (en) * 1997-03-31 2000-12-26 Sun Microsystems, Inc. Stack caching circuit with overflow/underflow unit
US6131144A (en) * 1997-04-01 2000-10-10 Sun Microsystems, Inc. Stack caching method with overflow/underflow control using pointers
US6092152A (en) * 1997-06-23 2000-07-18 Sun Microsystems, Inc. Method for stack-caching method frames
US6067602A (en) * 1997-06-23 2000-05-23 Sun Microsystems, Inc. Multi-stack-caching memory architecture
US6058457A (en) * 1997-06-23 2000-05-02 Sun Microsystems, Inc. Method for storing method frames in multiple stacks
US6138210A (en) * 1997-06-23 2000-10-24 Sun Microsystems, Inc. Multi-stack memory architecture
US5958039A (en) * 1997-10-28 1999-09-28 Microchip Technology Incorporated Master-slave latches and post increment/decrement operations
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6275903B1 (en) 1998-04-22 2001-08-14 Sun Microsystems, Inc. Stack cache miss handling
US6170050B1 (en) 1998-04-22 2001-01-02 Sun Microsystems, Inc. Length decoder for variable length data
US6108768A (en) * 1998-04-22 2000-08-22 Sun Microsystems, Inc. Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system
US6237086B1 (en) 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US7028163B2 (en) * 1998-06-22 2006-04-11 Samsung Electronics, Co., Ltd. Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors
US6253312B1 (en) * 1998-08-07 2001-06-26 Ip First, L.L.C. Method and apparatus for double operand load
US6349383B1 (en) * 1998-09-10 2002-02-19 Ip-First, L.L.C. System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution
US6418518B1 (en) * 1998-09-18 2002-07-09 National Semiconductor Corporation Decoupled address and data access to an SDRAM
US6209082B1 (en) 1998-11-17 2001-03-27 Ip First, L.L.C. Apparatus and method for optimizing execution of push all/pop all instructions
US6654871B1 (en) 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
AU766816B2 (en) * 2000-03-29 2003-10-23 Canon Kabushiki Kaisha Apparatus for stack capable of multiple push or pop operations in one clock cycle
US6631452B1 (en) * 2000-04-28 2003-10-07 Idea Corporation Register stack engine having speculative load/store modes
US7496734B1 (en) * 2000-04-28 2009-02-24 Stmicroelectronics, Inc. System and method for handling register dependency in a stack-based pipelined processor
US7472259B2 (en) * 2000-12-06 2008-12-30 Analog Devices, Inc. Multi-cycle instructions
US6961803B1 (en) * 2001-08-08 2005-11-01 Pasternak Solutions Llc Sliced crossbar architecture with no inter-slice communication
US7080236B2 (en) * 2002-09-30 2006-07-18 Intel Corporation Updating stack pointer based on instruction bit indicator without executing an update microinstruction
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7290153B2 (en) * 2004-11-08 2007-10-30 Via Technologies, Inc. System, method, and apparatus for reducing power consumption in a microprocessor
US7685406B2 (en) * 2007-03-22 2010-03-23 Advanced Micro Devices, Inc. Determination of current stack pointer value using architectural and speculative stack pointer delta values
JP2008299501A (ja) * 2007-05-30 2008-12-11 Sanyo Electric Co Ltd プロセッサ
CA2690599A1 (en) * 2009-01-16 2010-07-16 Plastpro 2000, Inc. Trimmable composite door
CN114816566B (zh) * 2022-04-08 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 一种指令搬移方法、系统、设备以及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
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
US3889243A (en) * 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
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
US4984151A (en) * 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
US4890221A (en) * 1988-04-01 1989-12-26 Digital Equipment Corporation Apparatus and method for reconstructing a microstack
US5006980A (en) * 1988-07-20 1991-04-09 Digital Equipment Corporation Pipelined digital CPU with deadlock resolution

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009080827A (ja) * 1995-10-06 2009-04-16 Patriot Scientific Corp マイクロプロセッサシステム

Also Published As

Publication number Publication date
IE63907B1 (en) 1995-06-14
IE901209L (en) 1990-10-07
FR2645663B1 (fr) 1994-04-15
GB2231181B (en) 1993-04-21
GB9003475D0 (en) 1990-04-11
GB2231181A (en) 1990-11-07
HK56395A (en) 1995-04-21
FR2645663A1 (fr) 1990-10-12
US5142635A (en) 1992-08-25

Similar Documents

Publication Publication Date Title
JPH03206523A (ja) デジタルコンピユータにおいてデータをメモリ内のスタツク上にプツシユする方法およびパイプラインされる命令とメモリを有するデジタルコンピユータにおいてスタツクオペレーシヨンを実行する回路
JP3871883B2 (ja) 間接分岐ターゲットを計算するための方法
CA1323938C (en) Control of multiple function units with parallel operation in a microcoded execution unit
EP1399824B1 (en) Using type bits to track storage of ecc and predecode bits in a level two cache
EP0320098B1 (en) Jump prediction
EP0415461B1 (en) Central processing unit supporting variable length instructions
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
US6092182A (en) Using ECC/parity bits to store predecode information
US5535350A (en) Cache memory unit including a replacement address register and address update circuitry for reduced cache overhead
JP3760041B2 (ja) 分岐予測する情報処理装置
WO1996012231A1 (en) A translation buffer for detecting and preventing conflicting virtual addresses from being stored therein
CN104978284B (zh) 处理器子程序高速缓冲存储器
JPH01503011A (ja) キャッシュマネッジメントシステムを含むデジタルデータ処理システム用汎用プロセッサユニット
JP2001184211A (ja) 処理システムにおいてスタックのポップおよびプッシュ動作を行なうための装置および方法
EP1053522B1 (en) Microprocessor including multiple register files occupying the same logical space
US6591359B1 (en) Speculative renaming of data-processor registers
JPH08320788A (ja) パイプライン方式プロセッサ
US5404471A (en) Method and apparatus for switching address generation modes in CPU having plural address generation modes
JP2570859B2 (ja) データ処理装置
US6978361B2 (en) Effectively infinite branch prediction table mechanism
US5765221A (en) Method and system of addressing which minimize memory utilized to store logical addresses by storing high order bits within a register
TWI231450B (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
EP1318450A2 (en) Address range checking circuit and method of operation
US4212058A (en) Computer store mechanism
US4853889A (en) Arrangement and method for speeding the operation of branch instructions