JPH0736155B2 - 高速cpuにおけるマイクロ命令スタックのアドレス指定方法および装置 - Google Patents
高速cpuにおけるマイクロ命令スタックのアドレス指定方法および装置Info
- Publication number
- JPH0736155B2 JPH0736155B2 JP1188709A JP18870989A JPH0736155B2 JP H0736155 B2 JPH0736155 B2 JP H0736155B2 JP 1188709 A JP1188709 A JP 1188709A JP 18870989 A JP18870989 A JP 18870989A JP H0736155 B2 JPH0736155 B2 JP H0736155B2
- Authority
- JP
- Japan
- Prior art keywords
- stack
- bus
- microinstruction
- address
- memory
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/264—Microinstruction selection based on results of processing
- G06F9/265—Microinstruction selection based on results of processing by address selection on input of storage
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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)
- Advance Control (AREA)
- Exchange Systems With Centralized Control (AREA)
Description
マイクロ命令メモリのアドレス指定装置および方法に関
する。
が、Sudhindra N.Mishraによる「The VAX8800Micro-arc
hitecture」,Digital Techhnical Journal,1987年2月
号,20〜33頁に記載されている。この形式のCPUでは、パ
イプライン化されたマイクロ命令を用いて実行動作およ
びメモリ管理動作を制御しており、マシンサイクル毎に
新たなマイクロ命令をアサートして、最小のストール若
しくはノー・オペレイションで最大の性能と実行性が得
られるよう努力がなされている。マシンサイクル毎に新
たなマイクロ命令を実行するというこの目的は、当然の
ことながら、クロック速度が増加したり、マイクロコー
ドが複雑化して多くのCall、Returnタイプのマイクロ命
令が必要となるにつれより困難なものとなる。このよう
なCall、Returnタイプのマイクロ命令では、マイクロア
ドレスがセーブされ回復される。
ク操作に対するプッシュとそれに次ぐReturn実行時のス
タック操作からのポップとによってマイクロアドレスを
セーブするためスタックがしばしば使用される。しかし
ながら、高度にパイプライン化されたCPUアーキテクチ
ャでは、高速のクロックで実行するため、従来使用され
てきた幾つかのスタック構造によってはCall、Returnマ
イクロ命令を連続的に実施することができない。これ
は、マイクロ命令の解読や、スタックポインタの増分、
減分、スタックの読出し、書込み等に時間を要するため
である。
ライン化CPUにおいて、マイクロ命令をアドレス指定す
るための改良方法を提供することにある。本発明の別の
目的は、高速動作を行うことができる改良されたスタッ
ク・メモリ形態を提供することにある。また別の目的
は、高速CPU若しくはそのようなものにおけるマイクロ
命令実行時に、Call、Returnタイプの命令を実行するた
めの改良方法を提供することにある。また更に別の目的
は、特にマイクロ命令アドレス・スタックにおける待ち
時間を除くことによって、スタックプッシュ、ポップ動
作を実行するための改良方法を提供することにある。
おけるマイクロ命令のアドレス指定の際に改良されたス
タック・メモリが使用されるため、パイプラインを通し
てマイクロ命令のステッピングに遅延を生じさせること
なく、Call、Return命令は実行される。この改良スタッ
クは、先入れ先出し式メモリである。このメモリは、読
出のためにあるレジスタを指定し且つ書込のために次に
高位のレジスタを指定するよう接続されたポインタを用
いて構成されており、読出および書込は、マイクロサイ
クル毎に、Call若しくはReturnの可能性が解読される前
に行われる。解読されたマイクロ命令がCall若しくはRe
turnであることが明かとなった場合にのみ、読み出され
たデータが使用され、若しくは、書き込まれたデータが
有効と判断されて、増分若しくは減分が実施される。こ
の方法では、スタックを使用しているマイクロ命令が存
在する場合であっても、解読やそれに次ぐ増分あるいは
減分のためになんらの遅延も生じない。
が、発明そのもの並びに他の特徴および利点は、添付図
面と関連しつつある特別な実施例の詳細な説明を参照す
ることによって最も良く理解されるだろう。
特徴を使用し得るCPU、即ち中央演算処理装置10が示さ
れている。好ましい実施例では、CPU10は単一の集積回
路として構成されるが、集積回路チップセットであって
もよいし、1つまたはそれ以上の回路板上に実装された
標準の論理回路あるいはゲート・アレイを用いて実施さ
れるものであってもよい。本発明はパイプライン化CPU
のいづれにも有用であるが、ここに掲げた例はVAX命令
セットを実行するものであり、また、本出願人によって
以前に販売されたVAXコンピュータのアーキテクチャに
ほぼ適合するようなものである。図示実施例において、
CPU10は、システム・データ・バス11(例えば、64ビッ
トの双方向バス)、27ビット・システムアドレス・バス
12、システム制御バス13に接続されており、これらのバ
ス11、12、13は、システム・メモリ15に接続されてい
る。システム・メモリ15は詳細には示されていないが、
通常は、キャッシュとキャッシュ・コントローラを包含
する。これらのバスは、種々のI/O機器にアクセスを行
う。
実行用に解読する機能を備えた命令ユニット20(「I−
ボックス」と呼ぶ)と、命令実行のデータ操作部分を実
施する実行ユニット21(「E−ホックス」と呼ぶ)と、
を含む。CPU10は、マイクロコードタイプであって、制
御記憶装置22を使用する。この制御記憶装置22は、おそ
らくは1Kまたは2Kワードのマイクロ命令を含むROM(ま
たはEPROM等)から成るものであり、各ワードは本実施
例では50ビット幅である。制御記憶装置は、マイクロシ
ーケンサ23によってアドレス指定される。このマイクロ
シーケンサは、11ビット・ディスパッチ・バス25によっ
て命令ユニット20から受け取られたエントリポイントア
ドレス若しくはディパッチ・アドレスに基づいて、制御
記憶装置22の11ビット・アドレス入力部24に一連のマイ
クロアドレスを発生する。制御記憶装置22からの出力部
はマイクロ命令バス26(本実施例では50ビット幅)であ
り、バス26のうちの16ビットは、マイクロシーケンサ23
の入力部27に再び接続されて、エントリポイントをたど
るような順序でマイクロ命令のアドレスを与えるととも
に、マイクロ記憶装置アドレス指定の制御を行う。マイ
クロ命令バス26の残りの34ビットは、実行ユニット21お
よびCPU10の他の部分への制御入力28として用いられ
る。
レスを物理アドレスに変換するのにメモリ管理ユニット
30(M−ボックスとも呼ぶ)を用いる。このユニット
は、命令ユニット20のための命令フェッチの調停も行
う。メモリ管理ユニットは、マイクロ命令バスからの34
ビット制御入力28ならびに他の信号によって制御され
る。ユニット30は、出力部32を経て30ビット内部アドレ
ス・バス31に接続されており、また、メモリ管理ユニッ
トからアドレス・レジスタを読み出すために、32ビット
ALU AAバス33によって実行ユニット21に接続されてい
る。メモリ管理ユニット30と実行ユニット間の他の接続
部として、32ビットALU出力バス34と32ビット書込デー
タ・バス35があり、これらのバス33、34、35の機能は実
行ユニット21の内部構造に触れたときに説明する。ユニ
ット30は、メモリ動作とワード長を定めるために実行ユ
ニットからライン36を経て制御ビットを受け取る。ライ
ン36上のこれらの制御ビットは命令ユニット20で発生さ
れるものであり、制御バス38の一部として実行ユニット
21に送られる。メモリ管理ユニット30ならびに実行ユニ
ット21は、マイクロテストと呼ばれる制御信号を生成
し、これらの制御信号は3ビット・バス39を経てマイク
ロシーケンサ23の入力部に送られる。これは、実行ユニ
ット21またはメモリ管理ユニット30内の事象で決定され
るマイクロ命令分岐動作のための条件付データである。
備えた2Kバイトの高速RAMである一次キャッシュ40
(「P−キャッシュ」とも呼ばれる)を包含する。な
お、メモリデータは命令であってもよいしデータであっ
てもよい。キャッシュ40は、30ビット内部アドレス・バ
ス31に接続され、また、32ビット内部データ・バス41に
接続される。内部データ・バス41は、命令ユニット30に
よってフェッチされた命令を伝送し、また、実行ユニッ
ト21へのあるいは実行ユニット21からのオペランドを伝
送する。
びにクロックや他の制御ビットに基づいて、CPU10の種
々の内部バスとシステム・バス11、12、13間の接続を制
御、若しくは調停する。
ランドあるいはアドレスは、バス41によって命令ユニッ
ト20にロードされる。これらのオペランドは32ビット・
バス43によってレジスタにロードするため実行ユニット
21に伝送される。
4つの位相、P1、P2、P3、P4を定める4つの位相出力
(phi−1〜phi−4)を生成する。例えば、クロックレ
ートが24MHzの場合は、40nsのマシンサイクルを生成す
る。
ット21が更に詳細に示されている。このユニットは、AA
バス33からの32ビット幅A入力とABバス46からの32ビッ
ト幅B入力とを有する32ビットALU45を含む。ALU45は、
加算、減算、OR等を実施する。これらの操作は、バス28
からの現在使用されているマイクロ命令のフィールドに
よって定められるようなものであり、CPUの命令セット
を指示するのに必要とされる。ALUの出力は、常にリザ
ルト・バス47、従って、書込バス35に送られる。リザル
ト・バス35へのデータ源はALUとバレルシフタ48の2つ
だけである。バレルシフタ48は、命令シフト動作を実施
する64ビットイン・32ビットアウト・シフタ・ユニット
である。バス28を経て送られてきたマイクロ命令のフィ
ールド制御下で、0〜32ビットの右シフトと0〜32ビッ
トの左シフトを実施することができる。リザルト・バス
47上のデータは、バイパスのためにAAバス33若しくはAB
バス46にロードされ、あるいは書込バス35ならびにメモ
リ管理ユニット30に通じるALU出力バス34にロードされ
得る。
ができる。レジスタ・ファイルは、15個の汎用レジスタ
と、18個の一時レジスタと、8個のメモリ・データ・レ
ジスタとを含んだ一組の51個の32ビット・レジスタであ
る。これらのレジスタは、現在使用されているオペラン
ドやアドレスを含み、また、レジスタ・ファイルへの書
込みそこからの読出は、現在のマイクロ命令の制御下で
行われる。レジスタ・ファイルの出力のみが、32ビット
出力部51、52によってAAバス33若しくはABバス46へ送ら
れる。内部データバス41は、ローテータ53を介して、マ
イクロ命令による決定通りに、レジスタファイルのうち
のあるレジスタに書込を行うことができる。内部データ
・バスは、レジスタ・ファイルをパイパスし、入力部54
を経てAAバス、ABバスに直接的に書込を行うことができ
る。これは、内部データ・バスがレジスタ・ファイルに
書き込まれつつあるときや、同じサイクル内でALU入力
としても使用されているときに行われる。
フト・カウンタを提供し、サイクルをカウントするため
にも作用する(通常、これは乗算や除算で有用であ
る)。カウンタ55は32ビット・レジスタであり、マイク
ロ命令の制御下で、書込データ・バス35からロードさ
れ、若しくは、AAバス若しくはABバスへロードされ得
る。
ち、PC56は、レジスタ・セットの一部でもある。PC56
は、実行中の命令のアドレスを含む。命令(操作コー
ド、オペランド指定子バイト、指定子拡張部分を含む)
が命令ユニット20で解析されると、PC56は更新され、パ
ス38上の命令ユニットからのデルタ−PCビットによって
アドレスを追跡する。プログラム・カウンタの出力は、
書込バス35からもロードされ得る。プログラム・カウン
タ56の出力57は、AAバスに送られ、アドレスは、このAA
バスからALU45を通じて通常はバス34を介してメモリ管
理ユニットに送られる。
は、その入力59をABバス46から受け取って、AAバス33に
出力60を生成する。この回路は、ABバスにロードされた
2進ワードに設定されているビット数をカウントすると
共に、このビットカウントに等しい二進値を発生するよ
う作用する。ポピュレーション・カウンタ58は、セーブ
・マスク(その各設定ビットが、セーブの必要があるレ
ジスタに対応するような2進ワード)内のビット数をカ
ウントために使用され、この2進値は、手続きCALL、RE
TURN、プッシュ・レジスタ、若しくはポップ・レジスタ
にセーブされなければならないようなレジスタファイル
50若しくはレジスタ・セットからのレジスタ数を決定す
るのに使用される。
のセットに含まれる。この状態レジスタは、キャリィ、
オーバーフロー、ゼロ、ネガティブのようなALU状態ビ
ットと共に、割り込み優先レベルや追跡ペンディング等
の他の状態ビットを含む。状態レジスタは、マイクロ命
令の制御下でAAバス33に読出しを行ったり、書込バス35
を介して書込を行うことができる。
たはABバスにロードするための定数を発生する。マイク
ロ命令は、バス28のフィールドに8ビット定数(「マイ
クロ命令リテラル」)を含む。このバイトは、定数ジェ
ネレータ62によって32ビットワード長のいずれかの4バ
イト位置にロードされ、この位置は現在のマイクロ命令
の他の2ビットフィールドによって決定される。このジ
ェネレータはライン38上のデータ長DL制御ビットの値に
応答して1、2、4または8の定数を発生することもで
きる。この定数は処理されるべきオペランド内のバイト
数を表しており、出力部64を介してABバス46にロードさ
れる。定数ジェネレータは符号拡張データのためのシフ
タと共に使用される。
の間のI/Oインタフェースであり、実行ユニットのレジ
スタやバスにロードされたときにロングワード境界上の
データを位置合わせしたり、実行ユニット21からメモリ
へ向かうデータを意図したバイト位置に再格納するよう
作用する。これらの変換を行うために、アドレスの2つ
の最下位ビットとデータ長(バス38上のDL制御ビット)
がローテータ53によって使用される。
シーケンサ23がより詳しく示されている。このマイクロ
シーケンサは、マシンサイクル毎に制御記憶装置22に11
ビット・アドレスを生成し、次のサイクルの冒頭で、バ
ス26に50ビットのラッチ出力を発生する。そのうちの16
ビットは、バス27によってアドレスと制御のためにマイ
クロシーケンサに戻される。これらの16ビットは、次の
マイクロ命令のためのアドレスを制御情報と共に含んで
いる。第3図は、バス27上の16ビット・データのフォー
マットを示し、ここでは、2タイプのアドレスと制御情
報とがジャンプとブランチになっていることがわかる。
ジャンプは11ビット・ジャンプ・アドレス(ビット0〜
10)と3ビット・マックス制御フィールド(ビット12〜
14)を含んでいるが、ビット15はジャンプに関しては常
に「0」である(ブランチに関しては常に「1」であ
る)。ビット11は、いずれかのタイプのマイクロサブル
ーチン制御用である。ブランチ・フォーマットは、7ビ
ット・オフセット(ビット0〜6)と4ビット・ブラン
チ状態セレクタ・フィールドを含む。
サ20で使用され、多数の入力から1つの出力71を発生さ
せるマルチプレクサ70を制御する。マルチプレクサ70へ
の1つの入力72は、バス27からのジャンプ・アドレス・
フィールド(ビット0〜10)であり、勿論、もう1つは
命令ユニット20からのディスパッチ・アドレス25であ
る。出力26のマイクロ命令がルーチン若しくはマイクロ
フローの最後のものである場合は、「デコーダ・ネクス
ト」出力がアサートされ、I−ボックス20に新たなディ
スパッチを生成させる。「デコーダ・ネクスト」はデコ
ーダに対する信号であって、次の命令を解読のために利
用できることをデコーダに知らせる。
ク75からの出力74(スタック読出バス)である。マイク
ロ・スタック75はプッシュ・ダウンスタックであり、バ
ス24上に現れている、従って、スタックのために入力書
き込みバス76に現れている、11ビット・アドレスのうち
の8ビットまでを記憶する。スタック・ポインタ77は、
TOS、即ち、スタックの最上部を指示する。このポイン
タは、スタック制御デコーダ79に接続されたときに、バ
ス27上の制御情報のビット11〜15から制御することによ
り、PUSH若しくはPOPスタック操作のために増分若しく
は減分される。CALLが解読された場合は、入力76上の11
ビット・アドレスがスタック75にプッシュされ、RETURN
が解読された場合は、TOSがマルチプレクサ70の入力と
して選択されてポインタ77を減分させることによってス
タックがポップされる。
の入力81を与える。このサイロは3つのレジスタを有す
るFIFOメモリであって、アドレス・バス24からの最後に
使用された3つの11ビット・アドレスを入力82を介して
記憶する。このサイロは、ストールやトラップが信号に
よって知らされたとき以外は各マシンサイクルによって
順方向に計時されるような、シフト・レジスタとして構
成されている。ストール等が知らされると、トラップが
終了するまで、即ち、最後の3つのアドレスが回復マイ
クロルーチンへジャンプすることによって使用されると
きまで、サイロ内の3つのアドレスはセーブされ、この
とき、回復マイクロルーチンは、バス27を経たマルチプ
レクサへの適当なコードによってサイロ入力81を使用す
るだろう。
ス・ジェネレータ84からの出力83である。多数の異なる
タイプのトラップ・マイクロルーチン、従って、これら
のマイクロルーチンを始動するためのアドレスを利用す
ることができる。
ランチ・アドレスは、マイクロプログラム・カウンタ85
内に組み込まれた3つの部分からなる。11ビット・ブラ
ンチ・アドレスのビット7〜10は、現在のマイクロ命令
(即ち、カウンタ85内に現在既にあるもの)からコピー
され、ビット0,4〜6は、入力72によってマイクロ命令
からコピーされ、ビット1〜3は、入力72上のマイクロ
命令のゲート86を経ての論理ORと3ビット・マイクロテ
スト・バス39の内容である。即ち、「ブランチ」タイプ
のマイクロ命令(マイクロブランチ命令)は、マイクロ
テスト制御ロジック87によってマイクロ命令バス28上で
検出される。マイクロブランチ命令を検出すると、制御
ロジック87は、マイクロテスト・バス39に存在する状態
をORゲートに進め、それと同時に、MUX制御ロジック88
は、マイクロ命令バス27上のマイクロブランチ命令を検
出し、更に、マイクロブランチバス39上の状態と、マル
チプレクサ70への入力として付与されたマイクロブラン
チ命令からの所定ビットのOR操作に基づいて、マイクロ
プログラム・カウンタ85にブランチデスティネーション
アドレスを計算させる。
ト、特に、制御記憶装置の出力でバス28上に現れる34ビ
ット部分が示されている。Basic、Constant、Shift、Sp
ecialと呼ばれる4つの汎用タイプのマイクロ命令が使
用される。各マイクロ命令に関してビット16〜33は同じ
である。各マイクロ命令は、実行ユニットのAAバス33の
ソースを選択するための6ビット「A」フィールド(ビ
ット6〜21)と、ディスティネーション、即ち、書込バ
ス35が書き込まれる場所、例えばレジスタファイル50の
レジスタの1つのようなもの、を選択するための6ビッ
ト「W」フィールド(ビット28〜33)と、を含む。ビッ
ト27は、プロセッサ状態レジスタ61のための状態コード
制御である。雑フィールド、即ち、ビット22〜26が解読
されて実施すべき特別の動作を決定する。Basic、Shif
t、Specialタイプは、全て、ABバス46、即ち、ALU B
入力上のデータのソースを選択するような「B」フィー
ルド(ビット34〜37)を有する。Shiftタイプは、シフ
タ48で実施するシフト機能とシフト値(ゼロから32ビッ
トまでのビット数)を定めるフィールド(ビット38〜4
6)を有する。Constantタイプのマイクロ命令・フォー
マットは、定数ジェネレータ62を経由してAAバスにロー
ドされるマイクロ命令リテラル動作に関する定数値(ビ
ット34〜41)と、定数位置を定める位置フィールド(ビ
ット42〜43)を含む。ALU45によって実施される機能
(例えば、Add、Substract、AND、Pass等)は、Basicフ
ォーマットのビット44〜48若しくはConstantフォーマッ
トのビット44〜46によって決定される。Basicのビット3
8はデータ・ワード長制御であり、ビット39〜43はメモ
リ・リクエスト機能を定める。
令は内部データバス41から先取りキュー90へロードされ
る。この先取りキュー90は、4つの32ビットロングワー
ド(4つの4バイト命令とオペランド・ワード)を保持
する一組の高速レジスタとして構成されたFIFOである。
命令は可変長であり、1若しくは2バイトの操作コード
が続く可変数のオペランドと指定子を有する。この命令
はワード境界に整列されることがないため、先取りキュ
ー90は、次の命令若しくはオペランドをパージング及び
解読するのに必要な情報を直ちにアクセスできるように
するような働きを持つ。先取りキューは、1つのマシン
サイクルで2つのロングワードまでシフトすることがで
き、先取りキュー90が満杯でなくしかも他のシステム・
プロセスがデータパスを要求していないときにはいつで
も、先取りキュー90の入力に命令ストリーム・データが
付与される。先取りマルチプレクサ91は、ポインタ92か
ら先取り4ビット・アドレス情報を受け取って、操作コ
ードで始まる次期の6つの有効バイトを表す6つのバイ
トを先取りキュー90から出力部93に生じさせる。操作コ
ードはロングワード境界上に存在しないため、出力93
は、操作コードバイト93aと、指定子バイト93bと、指定
子拡張フィールドの4つのバイト93cを含む。これらの
バイトは、キューのいずれかのバイト位置で開始するよ
うなマルチプレクサ91によってキュー90から選択され
る。これら6つのバイトのうちの2つのバイトは、操作
コード・デコーダと指定子デコーダ95を包含する一組の
デコーダ、即ちPLAに接続される。
4は、幾つかのサクセスタイプビットとデータ長制御ビ
ット(AT/DL制御と呼ばれる)の組を出力部96に発生す
る。この命令に使用する各オペランド毎に、これらのう
ちの一組が対応する。マルチプレクサ97は、この出力96
を受け取って、既定の通りに各オペランドに一つの組を
選択する。マルチプレクサ97の出力は、ラッチ98に保持
されており、実行ユニット21へ送られる制御バス38のAT
/DT部分はここから取得される。
ンサ23に送られるディスパッチ・アドレスを、命令デコ
ーダ94からの実行ディスパッチ、指定子バイト・デコー
ダ95からの指定子ディスパッチ、若しくはストール・デ
ィスパッチのうちのいずれかに選定する。実行ディスパ
ッチ若しくは指定子ディスパッチを定めるのに充分なバ
イトが先取りキュー90に存在しないときは、常に、スト
ール・ディスパッチが生成される。このストール・ディ
スパッチは、単に、フェィスパッチ・アドレスをマイク
ロシーケンサに送ってマイクロ命令をアドレス指定する
だけである。このマイクロ命令は、I−ボックスへ戻る
ような「デコーダ・ネクスト」リクエストを発行する以
外には何も行わない。この結果、無動作サイクルが導入
されることになり、I−ボックスをPFOで満たすことが
可能となる。このマルチプレクサ100からの11ビット・
アドレス出力は、ディスパッチ・アドレス・ラッチ101
にラッチされるため、サイロ動作のために利用できる。
指定子拡張データのうち、キュー90からの出力93c上の
4つのバイトまではラッチ102に付与され、ここからフ
ォーマッタ103を通過する。フォーマッタ103は、存在す
る可能性のある任意の指定子拡張データを符号拡張し且
つ右寄せする。これら4つのバイトは、その後、別のラ
ッチ104に付与されて、このラッチ104から、このデータ
は32ビットバス43によって実行ユニット21に接続され
る。
る。デルタPC値は、E−ボックスPC56が次の操作コード
若しくは指定子を指し示すようにPC56を増加すべき量を
表示するものであって、これは現在処理されつつある操
作コードと指定子におけるバイト数に基礎を置く。ラッ
チ105のデルタPC値はPLAによって変換され、次のマシン
サイクルでE−ボックスがバス38を経てそれを利用する
ことができるようラッチ106にロードされる。更に、I
−ボックスは、ラッチ107に4ビットのRNフィールドを
生成する。このフィールドは、レジスタファイル50の16
個の汎用レジスタのうちの1つを指定するものであり、
指定されたレジスタが、現在の指定子若しくは実行マイ
クロフローに対して使用される。このRNフィールドは、
指定個バイトのレジスタ・フィールドから引き出され
る。更に、現在の指定子フローの結果を記憶するのに使
用するレジスタ・ファイル50のメモリ・データ・レジス
タを指定するため、3ビットのSNフィールドがラッチ10
8に生成される。ラッチ108の値はPLAで変換されて第2
のサイクルでラッチ109にロードされ、第3のサイクル
でバス38を通じてE−ボックスで使用する準備が整う。
データの読出若しくは書込のための任意のアドレスが32
ビット仮想アドレスバス110に現れる。このアドレスは
翻訳バッファ111で使用され、内部アドレス・バス31に
向かうバス32に現れる物理アドレス、即ち、実際のアド
レスを発生する。仮想アドレスは、実行ユニット21のAL
U45の出力部に発生されて、ALU出力バス34によって仮想
アドレス・バス110に付与されるか、若しくは、3つの
レジスタ、即ち、仮想アドレス・レジスタ114、仮想ア
ドレス・プライム(VAP)レジスタ114、仮想命令バッフ
ァ・アドレス(VIBA)レジスタ115、から出力部112を経
て、バス110にロードされてもよい。これらの3つのレ
ジスタ113、114、115により、実行ユニットの主データ
経路やALUを用いることなく、多くのアドレスを発生す
ることが可能とされる。各レジスタは、マイクロ命令の
W、Aフィールドの制御下で、書込バス35から入力116
を介して書き込んだり、また出力部117とAAバス33を介
して読み出すことができる。VAレジスタ113は、書込動
作のためのアドレスを発生し、また、メモリ・リクエス
ト毎にバス110からの仮想アドレスをラッチする。従っ
て、メモリ管理例外が生じた場合、マイクロ命令は常に
VAレジスタ113の故障アドレスにアクセスすることがで
きる。VAPレジスタ114は常に、VAバス110+4をラッチ
しており、従って、次の順位のロングワードのアドレス
を含んでいることになる。このレジスタは、多数のロン
グワードにアクセスしたり、また、不整合メモリ基準
(つまり、完了するのに第2の基準を必要とするような
メモリ基準)のロングワードをアクセスするため、マイ
クロ命令によって使用される。VIBAレジスタ115は、マ
イクロ命令がプログラム・カウンタ56のフラッシュ、ロ
ードを実施するときはいつでもロードされる。次いで、
VIBAレジスタは、先取りキュー90を満たすため、メモリ
からの命令ストリーム・データのロングワードを先取り
するために使用され、各命令ストリーム・ロングワード
が取り出された後に4だけ増分される。増分器は、レジ
スタ114と115を4だけ増分する機能を持つ。
メモリであって、各記憶場所は、最近成功した翻訳のタ
グをこのタグに対するページ・テーブル・エントリと共
に含む。翻訳バッファによってバス110から受け取られ
た各仮想アドレスのページ・アドレス(ビット9〜31)
は、64個のエントリの全ての23ビット・タグと比較さ
れ、それらが整合した場合は、整合したタグに対応する
PTEがバス119(21ビット)に出力される。仮想アドレス
・バス110の下位30個のビットはバス120に現れる。この
バスから、ビット0〜8はライン121を経て内部アドレ
ス・バス32に直接送られて1ページ内のバイト・アドレ
スを構成し、VAバス110からの21個のビット9〜29はバ
ス120を経てマルチプレクサ122へまとめて入力され、翻
訳バッファからの21ビットPTEはバス119を経て他の入力
となる。従って、バス32を経て内部アドレス・バス31に
送られるアドレスの上位21ビット部分は、VAバスから直
接のものであるか、若しくはバッフア11およびPTEを経
て翻訳されたものである。即ち、マイクロ命令制御によ
って内部アドレス・バス31に送られるアドレスは、CVA
バス110からの直接のものであってもよいし、また、翻
訳バッファ111を用いて翻訳されたアドレスであっても
よいものとされる。
のタグの中に存在せず、翻訳アドレスが指定されている
場合は、故障状態が告知される。これがTB故障である。
マイクロシーケンサ23は、あるルーチンに対する開始ド
レスを生成する。このルーチンは、メモリ15、即ちキャ
ッシュに保持されたテーブルのページアドレスをオペレ
ーティングシステムによってルックアップすることを可
能とする。この開始アドレスの生成を達成するために
は、勿論、多数のマイクロ命令サイクルが必要であろ
う。
に説明するように)でユニット30の各セグメントについ
て現在主張されているマイクロ命令に応答して、内部指
令バス125上にバス・インタフェース・ユニット42の動
作を定める指令を生成する。
P−キャッシュ40が一層詳しく示してある。このキャッ
シュは、内部アドレス・バス31によってアドレス指定さ
れ且つこのアドレス・バス31から書込まれるような2Kバ
イト高速メモリ130を包含する。メモリ130は64行に配置
されており、各行は、4つのカットワード(64ビット若
しくは8バイト)QW0、QW1、QW2、QW3を、各カットワー
ドに1つずつ設けられた4つの対応するタグTag0、Tag
1、Tag2、Tag3と共に有する。行デコーダ132は、内部ア
ドレス・バス31からのライン133上の6ビット、3〜8
に基づいて、64行のうちの1行を選択する。この行は、
データのための桁デコーダ134とタグのための桁デコー
ダ135にロードされる。ここで、4つのうちの1つを選
ぶ選択は、IAバス31からのライン136上の2つのビット
9〜10に基づいて行われる。こうして、1つのタグ(20
ビット)と1つのカットワード(64ビット若しくは8バ
イト)がP−キャッシュ内のデータ・タグI/Oバス137、
138で選択される。データ・バス137はセンス増幅器139
によって読み出され、また、書込増幅器140によって書
き込まれる。ここで、2つのうちの1つを選ぶ別の選択
が、IAバス31からのライン141上のビット2に基づいて
行われる。こうして、タグヒットが存在する場合には、
32ビッット若しくは4バイトが内部データ・バス41にロ
ードされ、若しくは、ここから伝送される。キャッシュ
・メモリ130内の所定のロケーションから読み出された
タグは、比較器43で、IAバス31からライン144を経てき
た18個のビット11〜28と比較される。全てのビットが同
じであれば、ヒットがライン145に信号によって知らさ
れる。I/O参照に関連するデータはけっしてキャッシュ
されることがないため、ライン149を経てきたIAバス31
のビット29によって参照がI/Oスペースに対してのもの
であることが表示されない場合には、ミス・ロジック14
6は、ライン145からライン147上にP−キャッシュヒッ
ト出力を生成する。キャッシュ130が満たされてしまっ
たときにタグをロードするため、タグI/Oバス138に対し
ても書込増幅器150が設けられている。
42は、27ビット・システム・アドレス・バス12を内部ア
ドレス・バス31上の30ビットの物理アドレス・バスに基
づいて駆動する。この差は、バス31上の30ビット・アド
レスはバイト・アドレスであるのに対して、バス12上の
27ビット・アドレスはシステム・データ・バス11のカッ
ドワード(64ビット)幅に対応してカッドワード(8バ
イト)に対して整合されていることから生じる。この変
換を可能とし、また、整合若しくは不整合を問わずに種
々のデータ長を可能とするため、制御バス13は、8つの
可能なバイト位置の各々に対して1ビットを有するよう
な8ビットマスクフィールドを含んでおり、また、バス
インタフェースのコントローラ155は、メモリ管理ユニ
ットで発生され且つライン156によってバスインターフ
ェイスに接続された内部4ビット・マスクに基づいてシ
ステム制御バスに付与するように8ビット・マスクを発
生する。メモリ管理ユニットは、ライン36上のデータ長
DL制御ビットを使用する。制御ビットは、バス38を経て
のI−ボックス20内の操作コードとオペランド指定子の
デコードで発生される。勿論、バス31のアドレスの低位
ビット0〜2は、開始アドレスを規定する。こうして、
32ビット内部データ・バス41と64ビット・システム・デ
ータ・バスの間と、30ビット内部アドレス・バスと27ビ
ット・システム・アドレス・バスの間で、変換がなされ
る。
4ビット・バス指令は、バス・インターフェイス・ユニ
ット42のコントローラ155によって駆動され、若しく
は、それによって受け取られる。このバス指令はシステ
ム・バスでどのような動作が行われているか、つまり、
CPU10によるメモリ15からの命令ストリーム・カッドワ
ードの読出し、CPU10によるデータ・ストリーム・カッ
ドワードの読出し、CPU10によるメモリ15への書込み、
等を規定する。この4ビット指令は、制御バス13の別の
ラインであるアドレス・ストロープと一緒に主張され、
全システムを実施するために必要とされ得るReady、Rea
d、DMA Request、Interrupt、Haltに対するラインを含
み、その他、コプロセッサ制御器も含む。
二重アウトラッチ159によって内外に伝送される。各ラ
ッチは、64ビット・データ・レジスタ160、27ビット・
アドレス・レジスタ161およびバス指令レジスタ162を含
む。こうして、インラッチ158は、1サイクルでバス11
から64ビット・カッドワードを受取り、2サイクルで内
部バス41へ2つの32ビット・ロングワードを伝送するこ
とができる。同様に、各アウトラッチ159は、2サイク
ルで2つの32ビット・ロングワードをロードすることが
でき、それ故、1サイクルで1つの64ビット・カッドワ
ードをシステム・バス11に伝送することができる。2つ
の同形のアウトラッチを設けた理由は、CPU10のメモリ
への書込を高速化することにある。外部バス11、12、13
でのメモリの書込動作には3つのサイクルを要するが、
2つのアウトラッチを用いることにより、第1のアウト
ラッチがシステム・データ・バス11を経てメモリに書込
を行っている間に、第2のアウトラッチはロードを行う
ことができるからである。
30からの信号に従って内部指令バス125がメモリ読出を
表示したときに、バス・インターフェイス・ユニット42
によって実施される。この信号は、メモリ管理ユニット
が内部アドレスバス31上へ駆動された物理アドレスによ
って指定されたデータを要求しているときに生じる。こ
のアドレスが一次キャッシュ40タグ記憶装置で発見され
た場合、キャッシュ40は内部データ・バス41をこのデー
タで駆動し、問題の受け取り側(I−ボックス20若しく
はE−ボックス21)がデータ・バス41からデータをラッ
チする。一次キャッシュのタグ比較器でタグの比較に失
敗した場合、ライン147上のタグ・ヒット信号のアサー
トは無効とされ、ライン125上の読出指令とバス41上の
物理アドレスがアウトラッチ159にロードされると共
に、システム・バスが次の2、3のサイクルで利用でき
るときにはいつでも、コントローラ155がこの読み出し
要求を引継ぎ、実行する。要求されたデータが受け取ら
れ、インラッチ158にラッチされるまで、M−ボックス3
0から更に指令が送られてくることはない。ユニット42
は、インラッチからバス41上へ、したがって、意図した
目的地、I−ボックス、E−ボックス、P−キャッシュ
へ、データを送る。一例として、一次キャッシュがミス
したためにデータを主メモリ15から取り出さなければな
らない場合には、読み出しトランザクションによって6
つのマシンサイクルが占められ、その間、CPUのパイプ
ラインはストールされる。
部指令バス125上にアサートされている書き込み指令で
開始され、このとき、M−ボックスは、ライン156上に
内部バイト・マスクも駆動する。キャッシュ40は「ライ
トスルー」方式であるから、全てのメモリ書き込みがキ
ャッシュで「試行される」と共に、主メモリでも実行さ
れる。こうして、書き込み指令が内部指令バス125上に
あるとき、P−キャッシュ40はバス31上のアドレスをそ
のタグ・アレイと比較する。参照がヒットした場合は、
IDバス41上のデータはキャッシュRAM130に書き込まれ、
タグ比較がミスした場合は、データはP−キャッシュに
よって無視される。いずれにしても、IAバス31、IDバス
41、内部指令バス125、およびバイトマスク上のデータ
は、全て、アウトラッチにロードされ、その結果、外部
書き込みシーケンスを主メモリに(使用しているなら
ば、バックアップキャッシュにも)書き込むことができ
る。
り、命令実行時の事象は多くのマシンサイクルにわたる
ことから、多数の命令部分の実行が互いに重なり合って
いる、つまり、同時に生じている。このCPUは、第9図
に大雑把に示すような5セグメントのパイプラインを使
用しており、ここでは、サイクル1中にセグメントs1で
命令I1がその実行を開始し、サイクル5におけるセグメ
ントの実行へ継続している。命令I2は、命令I1がセグメ
ントs2に存在するときに、サイクル2でセグメントs1の
実行を開始し、同様に、サイクル6におけるセグメント
s5の実行へ継続している。サイクル5で、また、その後
も、5つの異なる命令部分がパイプラインの5つのセグ
メントで並列に実行される。勿論、第9図は、正確に5
つのセグメントで全ての命令が実行されると仮定した理
想的な状況を示しており、ストールも例外も全て存在し
ない。この理想的な場合には、平均実行率はマシンサイ
クル毎に1命令である。
トで生じる実際の事象を、第10図により完全に示してあ
る。第11図の参照にあたって先ず注目すべきは、等しい
長さの4つの位相P1、P2、P3、P4を各マシンサイクルで
発生するために、CPU10がクロック・ジェネレータ44に
よって計時されているということである。これらのクロ
ック位相は、本実施例において、CPU10を構成するのに
使用するCMOS回路を駆動するために用いられる。
取りキュー90に存する有効な命令とオペランド指定子と
を位相P1中に有する場合、この情報はP2、P3中にデコー
ダ94、95で解読され、この結果、ディスパッチ・マルチ
プレクサ100の出力はP4で利用可能となり、また、ラッ
チ101にディスパッチ・アドレスがロードされる。ラッ
チ102には、命令ストリーム・データの一部である、P4
で解析された指定子拡張部がロードされる。
中にバス25上に送られ、P2、P3中に制御記憶装置22がア
クセスされる。次のサイクルのP1で実行ユニットの制御
要素の第1レベルまでロードする準備を整えるべく、こ
のセグメントのP4中にマイクロ命令で出力部26で利用可
能とされる。また、このセグメント−2において、ラッ
チ102からフォーマッタ103を通じてラッチ104に送られ
る際に指定子拡張部がフォーマットされ、Sn、Rnのよう
なデータが計算およびラッチされ、更に、AT/DL情報が
ラッチされ、この結果、実行ユニット21は、これらのデ
ータおよび制御情報を次のサイクルの開始時にバス38を
介して利用することができる。
トはCS0セグメントとも呼ばれるのであるが、実行ユニ
ット21は、種々のレジスタ若しくはバスにアクセスする
と共に、バス28を介してロードされた34ビットCS0ラッ
チ165で利用可能なマイクロ命令のA、B制御フィール
ドに基づいて、操作すべきデータをAAバス33、ABバス46
に配置する。レジスタ・ファイル50、内部データ・バス
41、即時データ・バス43は、プログラム・カウンタ30や
メモリ管理ユニット30のアドレスレジスタ113、114、11
5等を含むレジスタ・セットの残部と同様に、セグメン
トでAAバス、ABバスにロードされるオペランドの全ての
ソースである。これらは全て、このサイクルのP4で読み
出され得るよう設定される。また、実行ユニットは、こ
のセグメントのP1中にバス38上の制御ビットを受ける。
いて、マイクロ命令のALU機能部によって指定された動
作が第4図に見られるようなBASIC若しくはCONSTANTタ
イプの場合には、ALU45で実施され、また、マイクロ命
令がShiftである場合には、マイクロ命令のShift関数や
Shift値フィールドによって指定された動作がシフタ48
で実施される。制御記憶装置22は各サイクル中に新たな
マイクロ命令を生成するため、同じマイクロ命令をセグ
メント−3で使用する場合には、最後のサイクルからの
マイクロ命令を記憶しておく必要がある。この目的で、
制御記憶装置から利用できるマイクロ命令出力がCS0ラ
ッチ165にラッチされると共に、このラッチの出力はセ
グメント−3で実施される動作にも使用され、その後、
実行ユニット21がセグメント−4でそのマイクロ命令を
利用することができるよう、サイクルの終わりに第3図
に示されているような他のCS1ラッチ166中へラッチされ
る。また、このラッチ166の出力は、セグメント−5で
使用するため、セグメント−4の終わり(この命令につ
いての4番目のクロックサイクル)に同様のCS2ラッチ1
67に記憶される。
プライン・セグメントと並列に発生する。バス28からの
マイクロ命令は、セグメント−3で、第6図に示された
異なるCS0ラッチ168中にラッチされ、次いで、第4図に
示されたマイクロ命令メモリ要求フィールドが必要なと
きに利用できるよう、セグメント−4で別のCS1ラッチ1
69にラッチされる。セグメント−4のマシンサイクルの
P2中、ユニット30はバスを要求しようとする場合にバス
インターフェイス・ユニット42にリクエストを送る。ユ
ニット30は、CS1ラッチ169のマイクロ命令によって決定
されたアドレスソースを、ALU出力バス34、VAレジスタ1
13等の可能なソースの中から決定し、仮想アドレス・バ
ス110はP4中に利用できる所定アドレスを有し、翻訳バ
ッファ111はタグルックアップを形成する。故障若しく
は例外によって遅延が生じていなければ、セグメント−
4の終わりにマイクロ命令がCS1ラッチ169からCS2ラッ
チ170へマルチプレクサ171を通じて伝送される。
行ユニット21のシフタ48出力によって駆動され、CS2ラ
ッチ167のマイクロ命令のWフィールドによって決定さ
れた目的地に書き込みを行う。可能な目的地として、レ
ジスタファイル50の所定のレジスタやレジスタセットの
他のレジスタ、ローテータ53を経た内部データバス41、
バイパス用のAAバス、ABバス、若しくは、メモリ管理ユ
ニットの仮想アドレス・バス110が含まれる。セグメン
ト−5のP1中にメモリ管理ユニット30内でPTEがバス119
に読み出され、更に、翻訳バッファ11が整合を発見した
場合には、バス32を介して内部アドレスバス31上に読み
出される。第1キャッシュ40の行デコーダは、IAバス31
からP2中にアドレスを受け取って、P2の終わりまでにデ
ータとタグをアクセスし、その後、タグ比較器143がP3
でタグ比較を行う。整合している場合には、読み出しが
実施されているのならばP3の終わりに内部データバス41
上でデータを利用することができ、書き込みであればP4
でキャッシュメモリ130にデータが書き込まれる。タグ
整合が存在しない場合には、ミスがP3でライン147上に
信号によって知らされる。メモリ管理ユニットにおいて
は、翻訳バッファ111がタグ整合を検出しない場合は、
セグメント−5のP2によって例外が検出されると共に、
物理アドレスを発生するためのページ番号を検索するル
ーチンが実施され得るようその例外が信号によって知ら
される。
は、マイクロフローCall若しくはReturnを1つのマイク
ロ命令サイクルで実行できるよう、本発明の特徴に従っ
て構成されている。この目的からスタックは独特の形態
とされている。
ロセッサで使用する本発明によるスタック75の詳細な図
が示されている。スタックは、多数の同形のレジスタ17
1、この場合には8つのレジスタであるが、を包含し、
各レジスタ171は、本例では、並列に11ビットを含む
が、スタックのレジスタは、CPUのアーキテクチャや他
の実施例でスタックが何のために使用されるかというこ
とに依存して、例えば、16、若しくは32ビットを含む。
レジスタ171に使用されるようなレジスタの各ビット
は、通常はDフリップ・フロップのようなもので構成さ
れている。第3図で説明したように、スタック75の全て
のレジスタ171の全てに2つのバス、即ち、書き込みバ
ス76と読み出しバス74とが接続してある。各バスは11本
(他の実施例では16本、若しくは32本)からなり、各バ
スの各ラインがレジスタ171のそれぞれのビットに接続
してある。各レジスタ171は、読み出し制御入力部172と
書き込み制御入力部173を有し、各レジスタのこれらの
制御部はレジスタの11個のビットまたはステージの全て
に接続してあり、読み出し制御入力部172が作動された
ときはレジスタ171の全てのビットが読み出しバス74に
接続され、同様に、書き込み制御入力部173が作動され
たときはレジスタ171の全てのビットが書き込みバス76
に接続される。読み出し、書き込み制御部172、173は、
スタック・ポインタに接続され、それによって作動され
る。このポインタは、従来回路の多数の同形のシフト・
レジスタ・ステージ176から成る。スタック・ポインタ
は、双方向シフト・カウンタ、若しくはコミュテータで
あって、いずれの時においても「1」に設定されたビッ
トは1つしか有しておらず、他のビットは全て「0」で
ある。スタック・ポインタ77は、制御器79から受け取っ
た増分入力77と減分入力178によって制御される。従っ
て、増分入力177が計時されるか若しくは作動される
と、ポインタ77内の設定ビット(即ち「1」)はある方
向へ1つの位置(1ビット)だけ移動し、減分入力178
が計時されるか若しくは作動されると、ポインタ77のビ
ットは他の方向へ1つの位置だけ移動する。本発明によ
れば、スタック・ポインタ77の各ビット176からの出力1
80は、スタック75の1つのレジスタ171の読み出し入力1
72に接続され、次の隣接するレジスタ171の書き込み入
力にも接続される。プロセッサの各マシンサイクル中、
スタック75は、無条件で読み出しバス74によって読み出
される。即ち、スタックポインタ77は、スタック75のた
めに出力180を介して読み出し制御入力172を作動させて
おり、このスタック75のある1つのレジスタ171の内容
は無条件で読み出しバス74にロードされる。また、読み
出しデータが読み出しバス74にロードされると同時に、
次のレジスタ171が無条件で書き込みバスに書き込ま
れ、若しくは、そこから読み出される。これは、あるレ
ジスタ171の読み出し制御ユニット172を作動させている
ポインタ77の同じステージ176が、同時に次のレジスタ1
71の書き込み制御部173を作動させるためである。
在のデータ・ソースをスタックの頂部に書き込んで、先
行する全てのデータを1位置だけ「押し下げる」という
ことから成り、通常の構成において、これは、次に利用
できるレジスタを指し示すようスタックポインタを増分
し、この新たなレジスタに書き込みを行うことを意味す
る。論理的には、PoPは、スタック頂部の内容を読み出
してより古い全てのデータを1位置だけ上に移動させる
ことから成り、通常、これは、スタックポインタが指し
示す位置を読み出してそのポインタを減分することを意
味する。第3図および第12図の実施例において、スタッ
クは常にマシンサイクル毎にPush若しくはPoPのいづれ
かを実施する状態にあり、マイクロ命令を解読してPush
若しくはPoPのいづれかが実行されつつあることを発見
するのになんら遅延を生じさせない。マイクロ命令がPu
shの場合、書き込みバス76上のデータは既にに次のレジ
スタ171(スタックポインタ+1)に書き込まれている
ことになるから、スタックポインタが増分されたときに
動作は完了する。この場合、バス74上の読み出しデータ
は、破棄されるか、あるいは使用されない。一方、命令
がPoPの場合には、ポインタ77によってアドレス指定さ
れたレジスタ171からのデータはすでに読み出しバス74
上に存在しており、マイクロ命令が解読されたときにポ
インタ77は減分入力178によって減分される。ここで、
書き込みバス76から「スタックポインタ+1」に書き込
まれたデータは、このレジスタは未使用であることか
ら、なんの結果も生じさせない。マイクロ命令がPushで
もPoPでもない、つまりスタック操作でない場合には、
入力177若しくは出力178上に増分若しくは減分制御は存
在せず、バス76、74を経ての無条件読み出しおよび書き
込みはなんの結果をも生じさせず、「スタックポインタ
+1」への書き込みはなんの害も受けず、また、読み出
しは非破壊読み出しであり、データも使用されないこと
から、勿論、ポインタ位置からの読み出しも無害であ
る。
2で実行するマイクロ命令XおよびYを考える。ここ
で、Xは「Call Y」、Yは「CallX」である。Xに対
するアドレスは、サイクル−1のP2中にマイクロPC85の
出力部に現れるが、サイクル−1のP4までは、コントロ
ーラ79、87、88、89で解読されない。この時点で回路は
Callを検出し、Xに対するマイクロアドレスを(X+1
まで増分された低位ビットを用いて)スタック75の上に
Pushする。サイクル−2のP2において、Yに対するマイ
クロアドレスがマイクロPC85の出力部に現れ、P4でRetu
rnが解読される。しかしながら、Returnアドレス、X+
1は、サイクル−3のP1でマルプレクサによって選定さ
れるよう、P4でセットアップされなければならない。こ
のシーケンスは従来のスタック形態を用いてもできない
ことはないが、非常に困難なことであった。
ルのP4中に、スタックポインタ77から選択された位置に
無条件の読み出しおよび書き込みが実行される。読み出
し値は、マルチプレクサの入力に向かうライン74上に配
置され、書き込み値は常に1だけ増分されたマイクロPC
85の出力である。
ンタ172はレジスタ171−2を選択し、書き込みポインタ
173はレジスタ171−3を選択し、この結果、潜在的なCa
llアドレスがレジスタ171−3に書き込まれ、またた、
潜在的なReturnアドレスがレジスタ171−2から読み出
される。後続サイクルのP3において、ポインタは、Call
若しくはReturnのP4における解読に基づいて、条件付き
で増分若しくは減分される。Call、Returnのいづれも解
読されない場合は、ポインタ77は増分も減分もされず、
読み出しおよび書き込みは使用されない。
説明に限定という意味はない。この説明を参照すれば、
当業者ならば、本発明の他の実施例と共に開示実施例の
種々の変更に気付くだろう。従って、特許請求の範囲
は、本発明の範囲内に存在するこのような変更若しくは
実施例のいずれをもカバーするものである。
コンピュータ装置のブロック図である。 第2図は、第1図のCPUの実行ユニットのブロック図で
ある。 第3図は、第1のCPUのマイクロ・シーケンサのブロッ
ク図である。 第4図は、第3図の制御記憶装置に含まれるマイクロ命
令のフォーマットの図である。 第5図は、第1図のCPUの命令ユニットのブロック図で
ある。 第6図は、第1図のCPUのメモリ管理ユニットのブロッ
ク図である。 第7図は、第1図のCPUの一次キャッシュ若しくはP−
キャッシュ・メモリのブロック図である。 第8図は、第1図のCPUのバス・インタフェース・ユニ
ットのブロック図である。 第9図は、第1図のパイプライン化したCPUにおいて連
続したマシンサイクルで発生する事象を示す図である。 第10図は、第1〜8図のCPUにおける命令実行の詳細を
示す事象対時間のタイミング図である。 第11図は、第1図のCPUのクロック・ジェネレータによ
って発生した4位相出力クロックのタイミング図であ
る。 第12図は、第3図のマイクロシーケンサで使用する本発
明の一実施例によるメモリスタックの概略ブロック図で
ある。 第13図は、第12図のマイクロアドレス・スタックの動作
における事象対時間を示すタイミング図である。 図面において、10……中央演算処理装置、11……システ
ム・データ・バス、12……システム・アドレス・バス、
13……システム制御バス、15……システム・メモリ、20
……命令ユニット、21……実行ユニット、22……制御記
憶装置、23……マイクロシーケンサ、25……ディスパッ
チ・バス、26……マイクロ命令バス、30……メモリ管理
ユニット、31……内部アドレス・バス、34……ALU出力
バス、35……書き込みデータ・バス、40……一次キャッ
シュ、41……内部データ・バス、42……バス・インター
フェイス・ユニット、44……クロック・ジェネレータ、
45……ALU、50……レジスタ・ファイル、55……シフト
・カウンタ・レジスタ、56……プログラム・カウンタ、
58……カウンタ回路、61……プロセッサ状況レジスタ、
62……定数ジェネレータ、70……マルチプレクサ、80…
…マイクロアドレス・サイロ、90……先取りキュー、10
0……ディスパッチ・マチチプレクサ、111……翻訳バッ
ファ
Claims (20)
- 【請求項1】複数のレジスタを有し、増分若しくは減分
され得るスタックポインタを有するような形式のメモリ
を動作させる方法において、 前記スタックポインタ+1によって指示された前記スタ
ックのレジスタに書き込みバスから無条件で書き込みを
行う段階と、 前記スタックポインタによって指示された前記スタック
のレジスタの内容を読み出しバスに無条件でコピーする
段階と、 その後、条件付きで、前記スタックポインタを増分若し
くは減分させるか、あるいは、前記スタックポインタを
増分も減分もさせない段階と、 を備えることを特徴とする方法。 - 【請求項2】請求項1記載の方法において、前記スタッ
クポインタを増分若しくは減分させるか、あるいは、前
記スタックポインタを増分も減分もさせない前記段階
は、命令若しくはマイクロ命令の複数のビットを解読す
る段階に応答して実施される方法。 - 【請求項3】請求項1記載の方法において、前記スタッ
クポインタは、スタック操作が実施される場合には条件
付きで増分若しくは減分され、スタック操作が実施され
ない場合には減分も増分もされない方法。 - 【請求項4】請求項3記載の方法において、前記スタッ
ク操作はPUSH若しくはPOPである方法。 - 【請求項5】請求項1記載の方法において、前記メモリ
スタックはマシンサイクルを有するコンピュータ装置の
一部であり、請求項1記載の前記段階の全てが前記マシ
ンサイクルのうちの1つの時間内に実施される方法。 - 【請求項6】請求項5記載の方法において、請求項1の
前記段階の全てが常に前記マシンサイクルのそれぞれの
マシンサイクルの間に実施される方法。 - 【請求項7】請求項6記載の方法において、前記マシン
サイクルの1つ1つが複数の位相を含み、請求項1記載
の前記段階の全てが、前記マシンサイクルのうちの所定
のマシンサイクルの終わり付近で始まって次のマシンサ
イクルの終わり前に終わるような幾つかの位相によって
占有された時間内に実施される方法。 - 【請求項8】請求項1記載の方法において、前記スタッ
クは、Call若しくはReturnマイクロ命令が実行されたと
きに、パイプライン化CPUにマイクロ命令のアドレスを
記憶するために使用される方法。 - 【請求項9】複数のレジスタを有し、増分若しくは減分
され得るスタックポインタを有するような形式のメモリ
スタックにおいて、 前記スタックポインタ+1によって指示された前記スタ
ックのレジスタに書き込みバスから無条件で書き込みを
行う手階と、 前記スタックポインタによって指示された前記スタック
のレジスタの内容を読み出しバスに無条件でコピーする
手段と、 その後、条件付きで、前記スタックポインタを増分若し
くは減分させるか、あるいは、前記スタックポインタを
増分も減分もさせない手段と、 を備えることを特徴とするメモリスタック。 - 【請求項10】請求項9記載のメモリスタックにおい
て、前記スタックポインタを増分若しくは減分させる
か、あるいは、前記スタックポインタを増分も減分もさ
せない前記手段は、命令若しくはマイクロ命令の複数の
ビットを解読する手段に応答して実施されるメモリスタ
ック。 - 【請求項11】請求項9記載のメモリスタックにおい
て、前記スタックポインタは、スタック操作が実施され
る場合には条件付きで増分若しくは減分され、スタック
操作が実施されない場合には減分も増分もされないメモ
リスタック。 - 【請求項12】請求項9記載のメモリスタックにおい
て、前記スタック操作はPUSH若しくはPOPであるメモリ
スタック。 - 【請求項13】請求項9記載のメモリスタックにおい
て、前記メモリスタックはマシンサイクルを有するコン
ピュータ装置の一部であり、前記手段の全てが前記マシ
ンサイクルのうちの1つの時間内で作動され得るメモリ
スタック。 - 【請求項14】請求項13記載のメモリスタックにおい
て、前記手段の全てが常に前記マシンサイクルのそれぞ
れのマシンサイクルの間に作動される方法。 - 【請求項15】請求項13記載のメモリスタックにおい
て、前記マシンサイクルの1つ1つが複数の位相を含
み、前記手段の全てが常に、前記マシンサイクルのうち
の所定のマシンサイクルの終わり付近で始まって次のマ
シンサイクルの終わり前に終わるような幾つかの位相に
よって占有された時間間隔内で作動される方法。 - 【請求項16】請求項9記載のメモリスタックにおい
て、前記スタックは、Call若しくはReturnマイクロ命令
が実行されるときに、パイプライン化CPUにマイクロ命
令のアドレスを記憶するメモリスタック。 - 【請求項17】マイクロ命令記憶装置をアドレス指定す
る方法において、 (a) 各マシンサイクルで、1アドレスだけ増分され
たスタックポインタの値によって指示されたスタックの
記憶位置に、前記マイクロ命令記憶装置のアドレス入力
部に付与されたアドレスを無条件に書き込む段階と、 (b) 前記スタックポインタによって指示された前記
スタックの前記記憶位置の内容を読み出して、各マシン
シクルで、前記内容を前記マイクロ命令記憶装置のアド
レスとして条件付きで使用する段階と、 (c) マイクロ命令を各マシンサイクルで解読し、前
記スタックポインタを増分若しくは減分するか、また
は、増分も減分も行わないかを決定する段階と、 を備えることを特徴とする方法。 - 【請求項18】請求項17記載の方法において、前記ポイ
ンタはCallマイクロ命令が解読されたときに増分され、
Returnマイクロ命令が解読されたときに減分される方
法。 - 【請求項19】マイクロ命令記憶装置と、このマイクロ
命令記憶装置をアドレス指定する手段と、を有するCPU
において、 (a) 1アドレスだけ増分されたスタックポインタの
値によって指示されたスタックの記憶位置に、前記マイ
クロ命令記憶装置のアドレス入力部に付与されたアドレ
スを、各マシンサイクルで、条件付きで書き込む手段
と、 (b) 前記スタックポインタによって指示された前記
スタックの前記記憶位置の内容を読み出して、前記内容
を前記マイクロ命令記憶装置のアドレスとして、各マシ
ンシクルで、条件付きで使用する手段と、 (c) マイクロ命令を各マシンサイクルで解読し、前
記スタックポインタを増分若しくは減分するか、また
は、増分も減分も行わないかを決定する手段と、 を備えることを特徴とするCPU。 - 【請求項20】請求項19記載の方法において、前記ポイ
ンタはCallマイクロ命令が解読されたときに増分され、
Returnマイクロ命令が解読されたときに減分される方
法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US221946 | 1988-07-20 | ||
| US07/221,946 US5023828A (en) | 1988-07-20 | 1988-07-20 | Microinstruction addressing in high-speed CPU |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02140830A JPH02140830A (ja) | 1990-05-30 |
| JPH0736155B2 true JPH0736155B2 (ja) | 1995-04-19 |
Family
ID=22830096
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1188709A Expired - Lifetime JPH0736155B2 (ja) | 1988-07-20 | 1989-07-20 | 高速cpuにおけるマイクロ命令スタックのアドレス指定方法および装置 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US5023828A (ja) |
| EP (1) | EP0352082B1 (ja) |
| JP (1) | JPH0736155B2 (ja) |
| AT (1) | ATE145291T1 (ja) |
| CA (1) | CA1323939C (ja) |
| DE (1) | DE68927451T2 (ja) |
Families Citing this family (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2655191B2 (ja) * | 1989-07-05 | 1997-09-17 | 三菱電機株式会社 | 演算処理装置 |
| JP2509344B2 (ja) * | 1989-09-19 | 1996-06-19 | 富士通株式会社 | デ―タ処理装置 |
| JPH03180933A (ja) * | 1989-12-08 | 1991-08-06 | Matsushita Electric Ind Co Ltd | スタックメモリ |
| JP3035828B2 (ja) * | 1989-12-28 | 2000-04-24 | 甲府日本電気株式会社 | 情報処理装置 |
| CA2045756C (en) * | 1990-06-29 | 1996-08-20 | Gregg Bouchard | Combined queue for invalidates and return data in multiprocessor system |
| US5249280A (en) * | 1990-07-05 | 1993-09-28 | Motorola, Inc. | Microcomputer having a memory bank switching apparatus for accessing a selected memory bank in an external memory |
| KR0181471B1 (ko) * | 1990-07-27 | 1999-05-15 | 윌리암 피.브레이든 | 컴퓨터 데이타 경로배정 시스템 |
| US5301345A (en) * | 1991-05-03 | 1994-04-05 | Motorola, Inc. | Data processing system for performing a shifting operation and a constant generation operation and method therefor |
| US5452423A (en) * | 1991-06-13 | 1995-09-19 | Chips And Technologies, Inc. | Two-ROM multibyte microcode address selection method and apparatus |
| US5448707A (en) * | 1991-10-29 | 1995-09-05 | Intel Corporation | Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns |
| US5335332A (en) * | 1991-12-24 | 1994-08-02 | International Business Machines Corporation | Method and system for stack memory alignment utilizing recursion |
| US5398330A (en) * | 1992-03-05 | 1995-03-14 | Seiko Epson Corporation | Register file backup queue |
| US5463748A (en) * | 1993-06-30 | 1995-10-31 | Intel Corporation | Instruction buffer for aligning instruction sets using boundary detection |
| US5515521A (en) * | 1994-02-08 | 1996-05-07 | Meridian Semiconductor, Inc. | Circuit and method for reducing delays associated with contention interference between code fetches and operand accesses of a microprocessor |
| JPH08329261A (ja) * | 1995-05-31 | 1996-12-13 | Canon Inc | パラメータ曲線発生器 |
| US6148376A (en) | 1996-05-10 | 2000-11-14 | Apple Computer, Inc. | Method and apparatus for an improved stack arrangement and operations thereon |
| US5958039A (en) * | 1997-10-28 | 1999-09-28 | Microchip Technology Incorporated | Master-slave latches and post increment/decrement operations |
| US6154865A (en) * | 1998-11-13 | 2000-11-28 | Credence Systems Corporation | Instruction processing pattern generator controlling an integrated circuit tester |
| US6345353B2 (en) * | 1999-07-20 | 2002-02-05 | Microchip Technology Incorporated | Stack pointer with post increment/decrement allowing selection from parallel read/write address outputs |
| US7231511B2 (en) * | 2001-12-20 | 2007-06-12 | Intel Corporation | Microinstruction pointer stack including speculative pointers for out-of-order execution |
| US7818722B2 (en) * | 2006-06-09 | 2010-10-19 | International Business Machines Corporation | Computer implemented method and system for accurate, efficient and adaptive calling context profiling |
| US11977890B2 (en) * | 2021-12-30 | 2024-05-07 | Advanced Micro Devices, Inc. | Stateful microcode branching |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3942163A (en) * | 1974-06-21 | 1976-03-02 | Burroughs Corporation | CCD stack memory organization |
| JPS5255446A (en) * | 1975-10-31 | 1977-05-06 | Toshiba Corp | Information transfer control system |
| US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
| JPS5569855A (en) * | 1978-11-20 | 1980-05-26 | Panafacom Ltd | Data processing system |
| US4394729A (en) * | 1980-10-16 | 1983-07-19 | Ncr Corporation | Jump return stack |
| US4586127A (en) * | 1982-11-03 | 1986-04-29 | Burroughs Corp. | Multiple control stores for a pipelined microcontroller |
| DE3321325A1 (de) * | 1983-06-13 | 1984-12-13 | Siemens AG, 1000 Berlin und 8000 München | Kellerspeicher |
| US4586130A (en) * | 1983-10-03 | 1986-04-29 | Digital Equipment Corporation | Central processing unit for a digital computer |
| US4674032A (en) * | 1984-04-02 | 1987-06-16 | Unisys Corporation | High-performance pipelined stack with over-write protection |
| US4600986A (en) * | 1984-04-02 | 1986-07-15 | Sperry Corporation | Pipelined split stack with high performance interleaved decode |
| ATE162896T1 (de) * | 1984-05-08 | 1998-02-15 | Advanced Micro Devices Inc | Mikroprogrammablaufsteuerung |
-
1988
- 1988-07-20 US US07/221,946 patent/US5023828A/en not_active Expired - Lifetime
-
1989
- 1989-07-19 DE DE68927451T patent/DE68927451T2/de not_active Expired - Fee Related
- 1989-07-19 EP EP89307295A patent/EP0352082B1/en not_active Expired - Lifetime
- 1989-07-19 AT AT89307295T patent/ATE145291T1/de not_active IP Right Cessation
- 1989-07-19 CA CA000606105A patent/CA1323939C/en not_active Expired - Fee Related
- 1989-07-20 JP JP1188709A patent/JPH0736155B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| EP0352082A3 (en) | 1993-01-07 |
| DE68927451D1 (de) | 1996-12-19 |
| US5023828A (en) | 1991-06-11 |
| EP0352082A2 (en) | 1990-01-24 |
| JPH02140830A (ja) | 1990-05-30 |
| CA1323939C (en) | 1993-11-02 |
| ATE145291T1 (de) | 1996-11-15 |
| EP0352082B1 (en) | 1996-11-13 |
| DE68927451T2 (de) | 1997-06-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5019967A (en) | Pipeline bubble compression in a computer system | |
| US5006980A (en) | Pipelined digital CPU with deadlock resolution | |
| US4875160A (en) | Method for implementing synchronous pipeline exception recovery | |
| US5321823A (en) | Digital processor with bit mask for counting registers for fast register saves | |
| JPH0736155B2 (ja) | 高速cpuにおけるマイクロ命令スタックのアドレス指定方法および装置 | |
| US5293592A (en) | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline | |
| US5235686A (en) | Computer system having mixed macrocode and microcode | |
| US5113515A (en) | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer | |
| US5142631A (en) | System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register | |
| JP3628379B2 (ja) | 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置 | |
| KR940003383B1 (ko) | 파이프라인 처리 방식으로 동작하는 프리디코더 유니트 및 주 디코더 유니트를 구비한 마이크로프로세서 | |
| EP0465321B1 (en) | Ensuring data integrity in multiprocessor or pipelined processor system | |
| US5944841A (en) | Microprocessor with built-in instruction tracing capability | |
| US5222223A (en) | Method and apparatus for ordering and queueing multiple memory requests | |
| US5826074A (en) | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register | |
| US5509137A (en) | Store processing method in a pipelined cache memory | |
| US5218711A (en) | Microprocessor having program counter registers for its coprocessors | |
| GB2231181A (en) | Stack method and circuitry | |
| JPH04309131A (ja) | 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置 | |
| US5812809A (en) | Data processing system capable of execution of plural instructions in parallel | |
| JPS6339931B2 (ja) | ||
| US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
| US5469551A (en) | Method and apparatus for eliminating branches using conditional move instructions | |
| JP2010501913A (ja) | 可変長命令セット内の分岐命令の最後の粒度(granularity)と関連付けられたキャッシュ分岐情報 | |
| JPH07120284B2 (ja) | データ処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090419 Year of fee payment: 14 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090419 Year of fee payment: 14 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100419 Year of fee payment: 15 |
|
| EXPY | Cancellation because of completion of term | ||
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100419 Year of fee payment: 15 |