JPH04302329A - マイクロ処理システム - Google Patents

マイクロ処理システム

Info

Publication number
JPH04302329A
JPH04302329A JP33354091A JP33354091A JPH04302329A JP H04302329 A JPH04302329 A JP H04302329A JP 33354091 A JP33354091 A JP 33354091A JP 33354091 A JP33354091 A JP 33354091A JP H04302329 A JPH04302329 A JP H04302329A
Authority
JP
Japan
Prior art keywords
risc
address
instruction
bit
processor
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.)
Withdrawn
Application number
JP33354091A
Other languages
English (en)
Inventor
Daniel Davies
ダニエル ディヴィス
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.)
Xerox Corp
Original Assignee
Xerox 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 Xerox Corp filed Critical Xerox Corp
Publication of JPH04302329A publication Critical patent/JPH04302329A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は縮小命令セットコンピュ
ータ内で処理を行なう複合命令セットコンピュータをエ
ミュレートするための装置及び方法に関する。
【0002】
【従来の技術】複合命令セットコンピュータ(CISC
)は大量の情報をコード化する命令を有す。CISC命
令セットにより、簡潔であり且つメモリ内包性(int
ensive) の少ないコンピュータプログラムの開
発が可能になる。ところが、CISC命令の実行には、
極めて複雑な、または比較的遅い、またはその両方であ
るプロセッサを必要とすることがしばしばある。
【0003】縮小命令セットコンピュータ(RISC)
が、CISC命令セット及びプロセッサに代わるものと
して開発されている。RISC命令セットは比較的少数
の簡単な命令を有しており、その各々は比較的大きな一
様数のビットにコード化されてるい。RISCマシンは
、簡単且つ高速であるという利点を有す。しかし、RI
SC命令にコード化されるプログラムは、個々の命令が
大きいため、及び、その対照物であるCISC命令より
も多数の前記簡単な命令を或る与えられたタスクに対し
て必要とするため、比較的多量のメモリスペースを必要
とする。RISCプロセッサはまたメモリ内のデータの
整列を制限し、使用しないパッドとなるスペースのため
にコード及びデータファイルの大きさが大きくなる。 これら制限のため、より大きなメモリキャッシュ、大き
な主メモリ、より大形のディスクドライブ、及びこれら
全ての装置間のより大きな転送帯域幅が必要となる。個
々の構成要素の価格は低落を続けているが、現在のアプ
リケーションにおいて使用されるコード及びデータの量
は増大を続けている。従って、RISCコンピュータ装
置は、益々大きくなる周辺メモリ装置が必要となるため
、計数的には効率的であるが、経済的には非効率的であ
る。
【0004】種々のコンピュータハードウェアプラット
フォームが増加するので更に問題が生ずる。アプリケー
ション開発者は、CISC命令セットの簡単性とRIS
Cコンピュータの速度及び性能との間で選択を行なわな
ければならない場合がしばしばある。開発者が、CIS
C及びRISCコンピュータ利用者の両方に対する共通
のソフトウェアを設計とようとすると、既に開発されて
いるソフトウェアシステムをすっかり設計し直さなけれ
ばならなくなる。個々のソフトウェアアプリケーション
には多年にわたる開発時間のかかる場合がしばしばある
ので、単に異なるプラットフォームに対するアプリケー
ションを実施するために設計し直しすることは時間及び
技術者の多大の浪費となる。
【0005】RISCプロセッサは、データを操作する
仕方で、その対照物たるCISCと異なる場合がしばし
ばある。RISCコンピュータは内部レジスタをほとん
ど専用に用いており、一方CISCコンピュータは、デ
ータがそれへ「プッシユ」(push)され及びデータ
がそれから「ポップ」(pop) される1つまたは複
数のスタックを実施する場合が極めて多い。基本データ
操作に差異があるため、プラットフォームを横切ってプ
ログラムを翻訳する際に更に労力及び時間が費やされる
【0006】
【発明が解決しようとする課題】コンピュータ技術者は
、一つのコンピュータ環境に対して書かれたアプリケー
ションを他のコンピュータ環境へ転送することを容易に
して性能を改善するため、移行をより容易にする方法に
ついて従来から努力している。一つの試みとしてソフト
ウェアエミュレーションを採用し、ある特定のコンピュ
ータハードウェアプラットフォームと他のハードウェア
プラットフォームに対して書かれたアプリケーションと
の間にソフトウェアエミュレーションコードを介在させ
た。このエミュレーションソフトウェアコードは第2の
ハードウェアプラットフォームのオペレーションを模擬
し、アプリケーションプログラムを実行する。ソフトウ
ェアエミュレーションという試みは、マシンの処理時間
のうちの多くが他のマシンのオペレーションをエミュレ
ートすることに費やされるので、速度及び効率について
難点がある。CISCコンピュータ環境からRISCコ
ンピュータ環境へのアプリケーションの円滑な移植を、
ソフトウェアコードの多大の改訂の必要なしに、及びエ
ミュレーションのためのプロセッサ時間の大きな部分を
必要とせずに行なうことのできる装置が開発されれば、
これは大きな成果である。かかる装置は、理想的には、
固有の未改訂のCISCコードを変更RISC処理シス
テムのメモリにロードし、そしてオペレータの介入なし
に走行することを可能にするものである。より簡潔なC
ISCコードがメモリ内に未変更状態で存在することを
許すことにより、キャッシュ、主メモリ、ディスクドラ
イブ及び他の周辺装置に対する必要条件が低減されるで
あろう。簡潔な複合CISCコードと効率的な高速RI
SCプロセッサとの整合を許すように改善された装置が
開発されれば、コンピュータ技術及びソフトウェア界に
長い間あった要望が満たされるであろう。
【0007】本発明は、RISCコンピュータシステム
において用いるために非RISC命令として書き込まれ
たコンピュータソフトウェアを簡単且つ効率的に翻訳す
るための新規な装置を提供することを目的とする。
【0008】
【課題を解決するための手段】本発明においては、バイ
トコードインタプリタ及び専用制御記憶メモリを通例の
CISC処理装置とそのメモリ領域との間に介装する。 このバイトコードインタプリタは、RISC処理システ
ムに、標準RISCプログラムが走行する「固有」モー
ドと、事前翻訳または「オンザフライ」なしに非RIS
C(本実施例においてはCISC)命令セットをRIS
Cオプコードルーチンに翻訳及び実行する「エミュレー
ション」モードとの間で円滑に乗り換えることを許す。
【0009】バイトコードインタプリタは非RISCか
らRISCへの翻訳を実行するためのいくつかの機能を
提供する。第1に、内部RISC  CPUレジスタの
集まりを具備するエミュレートスタックが、仮想スタッ
ク上のデータの操作を許す。バイトコードインタプリタ
は、エミュレートスタックに対してポインタのセットを
保持し、基本スタックオペレーションに備える。第2に
、バイトコード及びデータの可変シーケンスを具備する
非RISCプログラムを取り出してディスパッチするこ
とができる。各非RISCバイトコードは、一連のマイ
クロ命令を具備するルーチンによってエミュレートされ
る。本発明の各マイクロ命令は、通例のRISCオプコ
ードとビットの幅が同じであり、広がったデータチャネ
ル、別個のメモリ領域または特殊な変換ハードウェアな
しにRISC  CPUへの円滑な転送を許す。制御記
憶メモリが、これらエミュレーションルーチンの各々を
保持し、各バイトコードを翻訳しながら簡単且つ効率的
なアクセスを提供する。第3に、各マイクロ命令は、次
のアドレス情報、オペランドとして必要な定数、スタッ
クにアドレスしてスタックオペレーションを行なうため
の命令、及び次の非RISCバイトコードをディスパッ
チすることの必要を指示する情報(現在のバイトコード
をエミュレートするマイクロ命令の現在のシーケンスが
終わりつつあるならば)を含み、非RISCプログラム
ルーチンを正しく複製するのに必要なコード化済み情報
を包含する。第4に、各マイクロ命令を制御記憶装置か
らRISCプロセッサへの通路上で修飾し、これをRI
SCオプコードに変換する。バイトコードインタプリタ
は、RISCチップ外部の個別ロジック内に具備するこ
と、またはRISCプロセッサとともにチップ上に集積
することが可能である。
【0010】前述したように、各エミュレーションマイ
クロ命令をRISCプロセッサへの途中で修飾すること
ができる。この修飾はスタックポインタの現在値を挿入
することができる(このスタックポインタはRISC 
 CPUのレジスタのうちの一つを指示する)。このス
タックポインタ値を若干数だけオフセットすることがで
きる。他の修飾は、非RISC命令ストリームの次のバ
イトからのデータを最終RISCオプコードの適切なフ
ィールドに挿入することができる。例えば、スタックの
最上位の2つの要素を追加する命令は、現在スタックポ
インタから1を減じたものを原始及び宛先レジスタフィ
ールドに挿入し、及び、現在スタックポインタを他の原
始レジスタフィールドに挿入する。そこで、RISCプ
ロセッサはオペレーションを行なう。CISC命令は、
一般に、バイトコード命令ストリーム内の次のバイトを
ブランチ変位として用いるから、本発明の修飾装置は、
前記次のバイトコードを適正なRISC変位定数として
挿入することにより、RISC命令を修飾することがで
きる。
【0011】制御記憶装置に記憶されているエミュレー
ションルーチンの音声及び相対容易性を増すため、非R
ISCバイトコード自体がその適切なエミュレーション
シーケンスを選択する。各バイトコードは、制御記憶内
のそのマイクロ命令のシーケンスを呼び出すための個別
のメモリアドレスを提供する。一実施例においては、各
エミュレーションシーケンスは、通例、長さが16マイ
クロ命令よりも長くない。これらシーケンスを制御記憶
に注意深く入れることにより、若干数のビットだけ片寄
った各バイトコードの2進数は、そのそれぞれのシーケ
ンスの第1のマイクロ命令に一意的アドレスを提供する
ことができる。これにより、各非RISCバイトコード
は明示的にディスパッチされ、通例、RISC  CP
Uによって提供される全ての命令を無視する。
【0012】本発明装置は3つの個別モードで動作する
。固有モードは、RISCプロセッサに、それ自体のマ
イクロ命令を、メモリからまたは特別の制御記憶から取
り出して実施することを許す。エミュレーションモード
はRISCプロセッサの内部プログラムカウンタを用い
て順次続く非RISCバイトコードを指し示し、別々の
4ビットマイクロ命令アドレスプログラムカウンタが各
バイトコードエミュレーションルーチンの実施を管理す
る。エミュレーションモード最中は、16マイクロ命令
よりも長いマイクロ命令エミュレーションシーケンスは
ない。どれかの非CISCバイトコードが16よりも長
いマイクロ命令を要求する場合には、マシンはハイブリ
ッドモードへ飛び越すことができる。ハイブリッドモー
ド最中は、RISCプロセッサはそれ自体のプログラム
カウンタでマイクロ命令制御記憶にアドレスする。RI
SCプログラムカウンタの前の内容は、ハイブリッドモ
ードへ飛び越すと、RISCレジスタに記憶される。 ハイブリッドモードから出ると、前記内容は復元され、
非RISCバイトコードシーケンスの実施が更に継続す
ることを許す。RISCレジスタはまた、固有RISC
オペレーションとエミュレーションモードとの間で切り
替わるときに、プログラムカウンタを記憶する。
【0013】エミュレーションモード最中は、消費され
た非CISCバイトコードの数がマイクロ命令の数に等
しくなると、RISCプログラムカウンタは単にインク
リメントされてシーケンス内の次のバイトコードを指示
する。しかし、大部分のバイトコードは、普通にインク
リメントされたRISCプログラムカウンタがもはや次
のバイトコードを指し示さないように、もっと長いシー
ケンスのマイクロ命令を要求する。本発明は、プログラ
ムカウンタを、これから適切な数を減算することによっ
て補正するため、各マイクロ命令ルーチンの終わりにブ
ランチを追加することによってこの問題を解決する。本
発明のバイトコードインタプリタ装置は内部RISCプ
ログラムカウンタを用い、他のもっと遅い外部ハードウ
ェアカウンタを追加する代わりに、非RISCバイトコ
ードを指示することによって非RISCプログラム実行
のトラックを保持する。
【0014】迅速なアクセスを許すため、バイトコード
を先取りして命令バッファに記憶する。命令バッファの
一つのバンクが、その最後のバイトコードが取り出され
て解釈されて空になると、メモリアドレス指定装置が、
RISCプログラムカウンタ内に提供されるアドレスを
用いて前記バンクを満たす。しかし、命令バッファは若
干数の順次続く未実行バイトコードを保持しているので
、RISCプログラムカウンタは現在バイトコードアド
レスから適当に片寄って保持される。そこで、RISC
カウンタからのアドレスは、命令バッファにロードされ
るべき次のセットのバイトコードを適正に指示する。 命令バッファの内部にある第2の小プログラムカウンタ
が、このバッファからディスパッチされるべき次のバイ
トコードのトラックを保持する。
【0015】RISC処理システム内の非RISCプロ
グラムを翻訳及び実行する本発明の独特の方法はコンピ
ュータソフトウェアの開発者及びユーザに多大の柔軟性
を提供する。特定のソフトウェア成果のみを特定のハー
ドウェアプラットフォームと整合させるということに制
限される必要はもはやない。本発明は、1つのコンピュ
ータシステムにおけるRISC及び非RISCアプリケ
ーションの完全な統合及び実行を許す。アプリケーショ
ン開発者は、複合命令セットコンピュータに対して既に
書き込まれているプログラムを、多大の再開発なしに、
RISCプラットフォーム上で容易且つ簡単に実行する
ことができる。末端ユーザは、互換性の点をきびしく問
題とすることなしに、特徴の点からアプリケーションを
選択する自由を持つ。通例は遅いCISCコンピュータ
に対して書き込まれたアプリケーションは、大きな追加
費用なしに、RISC  CPUの速度及び能力を利用
することができる。
【0016】本発明の実施例について図面を参照して行
なう以下の詳細な説明から、本発明の前記及び他の目的
が明らかになり、また本発明のより完全な理解が得られ
る。
【0017】
【実施例】図1は本発明を示すブロック線図10である
。RISC中央処理装置(CPU)12、キャッシュメ
モリ装置(CMU)26と64KバイトスタティックR
AMアレイ具備のキャッシュメモリブロック28、メモ
リ制御装置20、主メモリ14、入出力プロセッサイン
タフェース(IOP)24、及び特殊化出力装置ディス
プレイ制御装置22を備えている従来の典型的なRIS
Cプロセッサ構成において、本発明システムは、バイト
コードインタプリタブロック16、及び他の64Kバイ
トスタティックRAMアレイ具備の専用エミュレータ制
御記憶装置18を有す。本実施例のRISCプロセッサ
即ち処理装置12は、米国のサイプレス・セミコンダク
(Cypress Semiconductor)社製
のサイプレス(Cypress) CY7C601  
SPARC型プロセッサを具備している。このサイプレ
スSPARCマシンの演算及びプログラミング特徴は、
サイプレス・セミコンダク社(A Cypress S
emiconductor Company)発行でロ
ス・テクノロジー社(Ross Technology
, Inc.) 編集の「SPARC  RISC使用
者手引き」(SPARC RISC User’s G
uide)(1990年2月発行)に記載されている。 正規RISC命令11(「CPU命令」と呼ぶ場合もあ
る)、及び非RISC命令13(「非CPU命令」また
はCISC命令と呼ぶ場合もある)は、一緒に命令17
の組合せセットを構成しており、主メモリ14に記憶及
びこれからアクセスすることができる。本実施例におい
ては、一セットのエミュレータマイクロ命令15(「マ
イクロ命令」または「中間命令」と呼ぶ場合がある)を
制御記憶18に記憶する。
【0018】図2はバイトコードインタプリタ16を示
すブロック線図である。アドレス空間識別子(ASI)
バス回線(pASI.[5..0] )がRISC  
CPU12からASIデコードブロック30へ通じてい
る。本明細書においては若干の慣用省略語を用いる。小
文字「p」はプロセッサCPU12に対して出入りする
1つまたは複数のバス回線を示し、小文字「c」はCM
U26及びキャッシュメモリ28に対して出入りするバ
ス回線を示し、小文字「cs」は制御記憶メモリCS1
8に対して出入りするバス回線を示す。大文字「A」は
アドレスバス回線を示し、大文字「D」はデータバス回
線を示す。バス回線に対し、[x..y]はyからxま
でのビットを示し、「,,」はビットの連結を示す。他
の省略語も適当に用いる。ASIバス(cASI.[5
..0] )がASIデコードブロック30からCMU
26まで通じている。アドレスバス回線pA.[31.
.0]が、CPU12から、キャッシュアドレス選択選
択ブロック32及び制御装置アドレス選択ブロック34
まで、通じている。14ビットアドレス回線cA.[1
3..0]が、キャッシュアドレス選択ブロック34か
ら、CMU26及びキャッシュメモリ28まで、通じて
いる。32ビットアドレス回線csA.[31..0]
 が制御記憶アドレス選択から制御記憶メモリ18まで
通じている。退避マイクロ命令アドレス(savedM
A) ブロック36が制御記憶アドレスブロック34に
対して接続されている。
【0019】データバスpD.[31..0]が、RI
SCプロセッサ12を、バイトコードインタプリタ内の
及び一般にコンピュータ内のメモリの種々のソースに、
接続している。データバスpD.[31..0]に接続
されたキャッシュトランシーバ42がキャッシュデータ
バスcD.[31..0]に沿ってプロセッサ12に及
びこれから情報を中継し、このキャッシュデータバスは
命令バッファ(IB)38に接続している。命令バッフ
ァ38はまた制御記憶アドレス選択ブロック34に接続
している。
【0020】制御記憶トランシーバ44はまたプロセッ
サデータバスpD.[31..0]に接続しており、制
御記憶データバスcsD.[31..0]に沿って制御
記憶18へ及びこれから情報を中継する。制御記憶デー
タバスcsD.[31..0] はまた命令修飾ブロッ
ク46に接続し、またプロセッサデータバスpD.[3
1..0]にている。データバスpD.[31..0]
はバイトコードインタプリタレジスタトランシーバブロ
ック48に接続しており、このブロックは、CPU12
から、バイトコードインタプリタ16内に配置されてい
る全てのレジスタへの、アクセスを提供する。
【0021】トランシーバブロック48は、退避プログ
ラムカウンタ(savedPC)アレイ40、スタック
ポインタレジスタ(stack PTR)50、退避ス
タックポインタアレイ(savedStack Ptr
 Array)52、インタバルタイマブロック54、
及び入出力プロセッサ通信レジスタ(IOP Comm
 Reg) 56に接続している。IOPComm R
eg56は、マイクロプロセッサ割込みIOP(MPI
ntIOP) 回線及びリセットマイクロプロセッサボ
ード(ResetMPB 、即ち全装置をしセットする
)回線を介してIOPインタフェース装置24に接続し
ている。割込みジェネレータブロック58が、RISC
割込み回線60a及びメモリ例外回線60bを介してC
PU12に接続している。 バイトコードインタプリタ 機能的には、図2に示すバイトコードインタプリタ16
ハードウェアは8つの部分を有す。即ち、(1)マイク
ロ命令アドレス、非RISCバイトコードアドレス、及
びRISCアドレス間で、キャッシュ及び制御記憶内の
データにアクセスすることを選択する、(2)非RIS
Cバイトコードをエミュレーションマイクロ命令に変換
するため、マイクロ命令アドレスを発生する、(3)主
メモリまたはキャッシュからバイトコードを先取りする
、(4)非RISC評価スタックポインタを保持する、
(5)エミュレータマイクロ命令をRISCオプコード
に変更する、(6)データ及び非エミュレータ命令をR
ISC  CPU、キャッシュ、及び制御記憶間に送る
、(7)割込み操作に備える、及び(8)雑I/Oレジ
スタを提供する。これら機能領域はバイトコードインタ
プリタ内の種々の論理ブロックとオーバラップする。
【0022】バイトコードインタプリタのこれら機能部
分の各々について次に説明する。本発明において必要と
なるエミュレーション及びスイッチングのオペレーショ
ンのうちの多くのものは、RISC  CPU12とバ
イトコードインタプリタ16内に配置された種々のレジ
スタとの間のアクセスを提供することを必要とする。こ
れらレジスタは、特殊メモリアドレスを用いることによ
り、バイトコード(BI)レジスタブロック48を介し
てアクセスされる。本実施例のサイプレスRISCプロ
セッサのアドレス回線は2つの部分に分割される。第1
に、主32ビットアドレスバスを図2にpA.[31.
.0]として示す。第2に、6ビットアドレス空間識別
子回線pASI.[5..0] がまた、どこでメモリ
にアクセスするかを決定する。表1に、各バイトコード
インタプリタレジスタに対する各アドレス空間識別子(
ASI)コードの結合を示す。例えば、ASI番号31
は、退避スタックポインタ(savedStackPo
inter) レジスタ52を指示する。RISC命令
とデータパイプラインと例外ロジックとの間のインタラ
クションを操作するため、本発明においてはsaved
StackPointer 52及びsavedPC 
40のレジスタの3つのバージョンを使用する。これら
レジスタに対するサブレジスタは、表2に示すようにア
ドレスされ、スタックポインタ及び命令バッファのセク
ションにおいてそれぞれ説明される。これらサブレジス
タにアクセスするため、前記表に示すように、pA.[
3..0] の下位の4ビットを用いる。インタバルタ
イマ54に対する更に他のアドレスを表3に示す。特殊
ASIアドレスはサイプレスRISCの一つの結果であ
って些細な問題であり、バイトアドレスマシン及びバイ
トコードレジスタは32ビット(4バイト)データバス
の最小有効端に結びつけられる。
【0023】ASIデコードブロック30は、上部アド
レス回線pASI.[5..0] をモニタし、2セッ
トのオペレーションを行なう。第1に、ASIデコード
ブロック30は、特殊な条件の下で、pASI制御をc
ASI制御に変更するために介入する。第2に、ASI
デコードブロック30はまた、前述し、また表1、表2
及び表3に記載してあるように、BIレジスタトランシ
ーバブロック48を介して種々のバイトコードインタプ
リタレジスタの読出及び書込を可能にする。表4には、
本発明における種々の重要なアドレスと制御回線と演算
モードとアクティビティとの間の関係を記載してある。 pDXFE 回線は、RISCプロセッサから始まって
おり、データ転送(命令取出しとは異なって)が行なわ
れるであろうという信号を送る。表4の上方の行におい
て、pDXFE は0に等しく、その動作は命令を取り
出す。下方の行においては、pDXFE は1に等しく
、その動作はデータ転送を含む。入力側(ASIでコー
ドブロック30に対する入力)の次の列はアドレス回線
pA.[31..30]の上の2ビットから成っている
。これら2つの回線により、種々のオペレーションモー
ド間の弁別が可能になる。これら回線ついては下に更に
説明する。pASI.[5..0] アドレスは、図示
のように、適切なcASI.[5..0] アドレスに
変換する。前記表を通じて、2ビットアドレスよりも多
いアドレスまたはデータ値は、他に指示してないかぎり
、通例16進表記法で示してある。ASIでコードブロ
ック30からのmiNULL回線は、制御記憶18から
のマイクロ命令アドレス指定最中は、CMU26をディ
スエーブルする。CMU26を停止させる他の方法は、
cASIの上の2ビットを3HEXにセットすることで
あり、これは表4のいくつかの行において用いてある。 cSIZE 回線は、検索すべきデータの大きさ(2バ
イトブロックとなっている)を指示し、そして、正規モ
ードRISCデータアクセス及びバイトコードインタプ
リタレジスタアクセスを除き、全ての動作に対してプリ
セットされ、値は、プロセッサにより、そのpSIZE
 回線を介して与えられる。これらの回線は図2には明
示してない。
【0024】
【表1】
【0025】
【表2】
【0026】
【表3】
【0027】
【表4】
【0028】制御記憶装置及びキャッシュアドレスセク
ション 本実施例のSPARC  RISKプロセッサ12はス
テージ命令パイプラインを有す。このパイプラインは、
連続命令の結果の取出し、デコード、実行及び書込みを
同時に行なうことができる。アドレス選択ブロック32
及び34の立場からみると、プロセッサ12は、通例、
1クロックサイクル内で、RISC命令を取出し、及び
次のRISC命令のアドレスを生成する。
【0029】サイプレスRISCプロセッサは異常バス
インタフェースを有し、これは、一つのクロックサイク
ルの始まりにアドレスを生成し、次のクロックサイクル
の始まりにデータを受け取ることができる。しかし、受
け取られたデータが有効であるかどうかを前記プロセッ
サが知ることのできるのは後続サイクルの中間において
のみである。エミュレータマイクロ命令ルーチン(以下
、「エミュレータ」という)が正規メモリキャッシュ2
8に入れられるならば、受信データのみに基づく状態変
更は、少なくとも1/2クロックサイクル中は行なわれ
ない。例えば、本発明においては、値をスタック上に押
し上げることを受信マイクロ命令が指示するので、スタ
ックポインタ50をインクリメントすることができない
。データ検証のこの遅延のため、状態更新のバックアウ
トを行なうことのできるハードウェアが極めて複雑にな
り、そして、このような複雑なインプリメンテーション
はたたみこみ実行誤りの大きな原因となる。それで、本
発明においては、キャッシュ失敗をすることのないよう
に、エミュレータを専用メモリ(制御記憶18)内に配
置する。この制御記憶18は、上の2つのアドレスビッ
トpA.[31..30] を11にセットすることに
より、該記憶装置からの読出しまたはこれへの書込みが
可能になる。命令は、これら上の2つのアドレスビット
が01、10または11となるときに制御記憶18から
取出される。制御記憶18にアクセスするとき、ハード
ウェアは、通例、30の16進数と与えられたASIコ
ードとの論理和演算を行ない、その結果、CMU26に
よる正規アクセスを抑制する特殊コードである38(ユ
ーザフェッチ)または39(スーパバイザフェッチ)が
得られる。エミュレーションモードでマイクロ命令を取
出すとき、前記ハードウェアはmiNULLを表明する
。さこで、キャッシュメモリ装置26は全ての制御記憶
アクセスを無視する。
【0030】キャッシュ28及び制御記憶18は2つの
別々のアドレス選択ブロック32及び34をそれぞれ有
す。キャッシュメモリ28及び制御記憶メモリ18は別
々のアドレス回線及び制御ロジックを有するので、これ
らはまた別々のデータ回線cA.[13..0]及びc
sA.[31..0] を有す。制御記憶18及びキャ
ッシュ28に対する読出し及び書込みには、トランシー
バチップの数を増すことが必要である。しかし、別々の
データ回線を持つことは、マイクロ命令取出しを命令バ
ッファ38補充サイクルとオーバラップさせる。その結
果の性能改善は追加のハードウェアをほとんど必要とし
ない。
【0031】RISCプロセッサ12は、キャッシュ2
8へ行く全てのアドレスを供給する。キャッシュアドレ
スブロック32はこれらアドレスを途中で2ビットだけ
右へシフトすることができる。制御記憶18のアドレス
は、RISCプロセッサ12、命令バッファ38、及び
退避マイクロ命令アドレスレジスタ(savedMA)
 36から来る。前述したように、RISCアドレスの
特殊動作への翻訳は表4に示してある。この表において
、pAまたはpASIは、RISCプロセッサ12によ
って提供されるアドレスを示し、cASIは、ASI3
0からCMU26へ送られるアドレスを示し、pSIZ
E 及びcSIZE は、RISCプロセッサ12から
送られるとき、及びCMU26へ送られるときのデータ
/バイトコード転送の大きさをそれぞれ示す。キャッシ
ュ及び制御記憶へ送られるアドレスの構造を表5に示す
【0032】
【表5】
【0033】アドレスビットを2だけシフトすることは
、非RISCプログラム及びオペレーティングシステム
を本実施例のサイプレスプロセッサのようなRISC 
 CPUと整合させる際の重大な問題を解決する。本実
施例の実施において、「ゼロックスのオペレーションの
MESA原理」(XEROX’s MESA Prin
ciples of Operations)命令セッ
トをサイプレスSPARCプロセッサ上でエミュレート
した。種々のCISC命令セットのように、MESAは
、線形メモリ空間内で0から順番号付けしてある16ビ
ット語を選択する。例えば一つのMESAアプリケーシ
ョンは、2番及び3番のバイトから成る語番号1を選択
する。しかし、サイプレスSPARCは、多くのRIS
Cマシンのように、検索されるデータに対して厳しい境
界を主張する。16ビット語は16ビット境界内に落ち
ることになる。SPARC  RISC  CPUは他
の負荷に対して同様の境界を有す。16ビット境界は、
バイト0及び1、バイト2及び3、等を含む。この未シ
フト形式において、語1に対するMESAアドレスは、
RISCプロセッサにより、バイト1のアドレスと翻訳
される。即ち、MESAが、バイト2及び3から成る1
6ビット語1を要求するとき、これは、RISCプロセ
ッサにとっては、一つの語境界とオーバラップして、バ
イト1及び2が要求されているように見える。SPAR
Cプロセッサは、この「誤り」を自動的にトラップし、
そのアドレスの使用を阻止することとなる。この問題を
補正するため、このアドレスを1だけ左へシフトし、C
PU内のレジスタに記憶してメモリにアクセスするよう
にする。しかし、16ビット語のこのようなシフトは、
通例、最上位ビットを失う。即ち、シフトされると、全
ての負荷は32ビット負荷となり、データの有意部分に
触れない。しかし、ここでも、RISCプロセッサは厳
しい32ビット境界を主張し、全ての32ビットデータ
アドレスの下位の3ビットは0となることになる。それ
で、本実施例においては、RISCプロセッサによって
記憶及び使用される全てのアドレスを32ビット語とし
て記憶し、この32ビット語においては、有意非RIS
C(ここではMESA)アドレスは3ビットだけ左へシ
フトされる。データがこのアドレスからアクセスされる
と、このアドレスは2ビットだけ右へシフトされ、デー
タをロードするための1だけシフトされた正しいアドレ
スを提供する。即ち、MESAコードが16ビット語1
を選択すると、このシフト済みアドレスが、バイト2で
始まる2つのバイトを正しく選択する。
【0034】表4に、キャッシュ28へ送られるcAS
Iビットがどのようにして生成されるかを示す。cAS
Iが30から3Fまでのとき、またはCMUのMULL
(空)ピンのうちの一つが生きているとき、CMUチッ
プ26はアクセスを無視する。本発明においては、キャ
ッシュメモリ28の代わりにPointerASIまた
はLoadAddressASIアクセスを行なうとき
、caASI の上の2つのビットを00にする。本発
明においては、これらを、ハイブリッドモード命令アク
セス、制御記憶からの正規RISCアクセス、バイトコ
ードインタプリタ16レジスタアクセス、または制御記
憶18アクセス最中に、11にする。正規RISCアク
セス、エミュレータデータアクセス、またはエミュレー
ションマイクロ命令アクセスを行なっているとき、cA
SI値はpASI値を追跡する。大部分のマイクロ命令
取出しを無視することをCMUに告げるための他の方法
がないとすると、エミュレーションアクセスは困難を生
じさせる。CMUは、RISCプロセッサ及び追加され
た全ての浮動小数点装置(FFU)によって通例用いら
れるサイクルINULL 及びFNULL を無効にす
るために用いられる2つの入力端子を有す。RISCプ
ロセッサのpINLL 及び浮動小数点のfNULL 
信号は、通例、CMUのINULL 及びFNULL 
入力端子に与えられる。本発明においては、これと異な
り、pINULL及びfFNULLを結合してpfNU
LLとなし、結果をCMUのINULL 入力端子に与
える。これはまたmiNULLをCMUのFNULL 
入力端子に与え、これも補充サイクルではない制御記憶
18からの全てのマイクロ命令アクセス最中は、CMU
動作を無効にする。
【0035】CMUチップは、アクセスの度ごとにsS
IZE ビットをモニタして2重(64ビット)転送を
検出する。cSIZE ビット=11である場合には、
CMUチップ26は、2つのデータ転送がある、と想定
する。そして、該CMUチップは、第1のアドレスを無
視するようにセットされているならば、第2のアドレス
をも無視することになる。即ち、cSIZE ビットは
他のなんらかの値にセットされ、全ての制御記憶(単一
(16ビット)語アクセスである)及びバイトコードイ
ンタプリタレジスタアクセスに対する非2重語転送を指
示する。
【0036】表4に示すように、下記のリストの条件は
キャッシュメモリアドレスを生成する。各条件は、その
下の条件に対して優先権を有す。 1.RISCプロセッサ12によって生成されるアドレ
スが、正規RISC命令取出し(pDXFER=0&A
SI.31=0(アドレスビット=0を意味する)、ま
たは、正規データアクセス(pDXFER =1&AS
I.31=0&(ASI≠3x(HEXで))である場
合には、RISCプロセッサのアドレスを未修飾で用い
る。特に、トラップアドレスは正規RISCアドレスで
あり、従ってトラップは他のものに優先する。
【0037】2.アドレスが制御記憶装置18からのエ
ミュレータデータアクセスを表している場合には(pD
XFER =1&(A[31..30]=10またはA
SI=3x)、このアドレスは使用前に2ビットだけ右
へシフトする。ASI値を3xにセットすると、アクセ
スを無視するようにCMU26に告げられる。これは、
全ての制御記憶装置及び内部レジスタアクセスに対して
生ずる。しかし、PointerASI及びLoadA
ddressASI(表1に示す)を用いるとき、cA
SI値を、3Bではなしに、OB(スーパバイザデータ
取出し)にセットとすることが必要である。これらAS
I値のいずれかを使用するとき、フラグエミュレータデ
ータアクセスモードの第1の方法を用いることが必要で
ある。
【0038】3.命令バッファのバンクを補充すべき時
である場合には、アドレスは、その使用前に、2ビット
だけ右へシフトする。この場合、2つのジョブがある。 その一つは、キャッシュ28への途中でアドレスビット
をシフトすることである。他のジョブは、キャッシュ2
8がそれらを使用すべきかどうかということを決定する
。本発明においては、全てのエミュレーションアドレス
を、これらが補充アドレスである場合、2ビットだけ右
へシフトする。シフト命令は( pDXFER =0&
A [31..30] =0)である。第2のジョブを
実行するため、本発明においては miNULL を主
張することによってアクセスを無視すべきことをキャッ
シュ28に告げる。 これはより多くのロジックをASI生成ブロックに追加
するのであり、これについては、命令バッファの節にお
いて後で説明する。
【0039】表6に示す各制御記憶アドレスを、2つの
部分、即ち上位の2ビット、及び下位の12ビットに分
割することができる。これにより、16Kマイクロ命令
語(64KB)の潜在的アドレス空間が提供される。表
5及び表6において、「x」は、ビットを無視すること
を示し、「z」は、ビットを0にすることを意味し、「
B」は、後述の入出力プロセッサ24と通信するのに用
いられる特殊レジスタであるIOP通信レジスタ56内
の第3のビット(IOPCommReg3)である。前
のとおり、「pA」はRISCアドレス回線内のビット
であり、「IB」は命令バッファ38内の次のバイトで
あり、「 savedMA」ビットは退避マイクロアド
レスバッファ60内のビットであり、「nMA」は次の
マイクロ命令アドレスであり、そして通例は save
dMAアドレスに1を加えたものであり、エミュレーシ
ョン実行中に用いられる。 savedMAは、「 c
learMA」をIOP通信レジスタ56内にセットす
ることによってクリアされる。
【0040】
【表6】
【0041】各制御記憶アドレスにおいて、上位の2つ
のビットは、エミュレーションモードになっているとき
、 0,,IOPCommReg3にセットされる。こ
れにより、2つの異なる非RISC命令セットの別々の
エミュレーションに対して制御記憶18内に2つのデイ
スパッチ表が得られる。完全エミュレーションモードに
なっていないとき、表6の最上アドレスに示すように、
対応のRISCビットは通過させられる。
【0042】下記の条件は制御記憶アドレスの下の12
ビットを生成する。ここでも、各条件はその下の条件に
対する優先権を有す。メモリアドレスを計算するほかに
、受信データ語がエミュレーションモードで取出された
マイクロ命令である場合(エミュレーションアドレスを
用いて取出されたものであり、 pINULL は偽で
あり、fFNULL は偽であり、 cMHOLDはク
ロックの前の立下がり縁において偽であった)、下記に
示す適切な次のエミュレーションアドレスを計算して 
savedMAレジスタ60内に退避させる。
【0043】1.RISCプロセッサによって生成され
るアドレスが、ハイブリッドモードマイクロ命令取出し
( pDXFER =0& A.[31..30] =
11)、または正規モードRISCオプコード取出し(
 pDXFER =0& A.[31..30]=01
)、または制御記憶データアクセス( pDXFER 
=1& A.[31..30]=11)である場合、表
6の最上の制御記憶アドレスに示すように、RISCプ
ロセッサのアドレスを未修飾で用いる。 本発明においては、個々のバイトを起動する論理がない
。従って、マイクロコーダが、32ビット語の単位での
み制御記憶命令を書き込むことになる。
【0044】2.これがエミュレーション命令取出しで
あり、そして受信マイクロ命令が、有効であって、装置
が次の命令バッファ(IB)38においてバイトをデイ
スパッチするということを請求する場合、次のバイトを
用いて命令バッファからアドレスを生成する。前述した
ように、処理を簡単にするため、命令バッファ38内に
ある非RISCバイトコードは制御記憶18内の16番
目ごとの語を直接指示する。第2の制御記憶アドレスに
示すように、IB内容は csA.[11..4]にロ
ードされてこの自動アドレス指定を提供する。
【0045】非RISCバイトコード境界に割込むため
、プロセッサ12またはIOP  24は takeT
rap ビットをIOP通信レジスタ56にセットする
。IOP割込み回線、IOPIntMP* ならびにi
bBank0Empty 及びibBank1Empt
y 回線も、下記の割込み生成についての節において説
明するように、 stackPtr レジスタのビット
[6..4]において見られる。(星印「* 」を付し
てある全ての回線は、低レベルのときに生きる回線を示
す。) takeTrap の存在は、IB  38回
路をして、第2の後続サイクルにおいて pMHOLD
 及びpMEXC をRISCプロセッサへ送らせる。 トラップハンドラは、 stackPtr レジスタ5
0を見ることにより、何をなすべきかを決定する。
【0046】本発明においては、補充が要求されると同
時に命令バッファバイトに対してディスパッチすること
ができる。そうであると、両方が同時に行なわれる。R
ISCプロセッサ12が補充サイクル中に pINUL
L を主張すると、補充は中止となり、そして次のエミ
ュレーションサイクルにおいて再び試みる(命令バッフ
ァの節を参照)。次のバイトはその時までに命令バッフ
ァから取出されており、そして、 savedMAレジ
スタ60内に安全に保持されている。
【0047】3.アドレスがエミュレーションマイクロ
命令取出しであり、そして受信データがエミュレーショ
ン命令でない場合(正規RISCアクセス、ハイブリッ
ドモードマイクロ命令、データ取出し、または中止補充
サイクルであった)、 savedMAの内容を使用し
、処理を、それが中止したところから開始することを許
す。これを表6において第3のアドレスに示してある。
【0048】4.エミュレーションモードにおいて外に
何も起こらなかった場合、 savedMAブロック3
6によって供給されるアドレスをインクリメントして使
用する。第4のアドレスにおいて示されるnMA(次の
マイクロアドレス)を下位の4ビッcsA.[3  .
.0]に追加する。サイプレスRISCプロセッサ12
は、エミュレーションモードになっているときは分岐す
ることができない。エミュレーションモードにおいて、
ブランチを用いてRISCプログラムカウンタ(PC)
(非RISC  PC+4に対応する)を調整すること
ができるが、このブランチはエミュレーションマイクロ
命令実行のコースに影響を与えず、このマイクロ命令実
行は、それ自体の暗示カウンタsavedMA36の下
で進行する。バイトコード翻訳ルーチンが内部ブランチ
を要求する場合には、ハイブリッドモードまたは正規R
ISCモードに入ることが必要である。レジスタ(r0
),及び1で拡張した変位符号を用いて単にJMPLを
行なうことによってハイブリッドモードに入る。これら
の命令については前掲の「SPARK使用者手引き」を
参照されたい。この命令はRISC  PC内容をRI
SCレジスタ内に退避させる。これは非RISC  P
Cに対するアクセスを提供する。ハイブリッドマイクロ
モードは、非退避RISC  PC値を、及び要すれば
オフセットを用いてLMPLを実行することによってエ
ミュレーションモードへ戻る。本発明においては、通例
、バイトコード翻訳ルーチンにおいて中止した場所で取
り上げる。RISC  PCの最大有効2ビットが2進
法10に等しくなると、バイトコードインタプリタはエ
ミュレーションモードに入る。これは、次いで、ハード
ウェア savedMAレジスタからのマイクロ命令ア
ドレスを用いる。これは、通例、エミュレーション実行
が再開する場合のマイクロ命令のアドレスに影響を与え
ることがない。この例外については、下記の「次のアド
レス生成」の節を参照されたい。
【0049】CMU26が命令取出しまたはデータ読出
しに応答してRISCプロセッサ12を保持すると、R
ISCプロセッサ12は、この保持状態中、次のアクセ
スのためのアドレス及び制御信号を発する。これらのア
ドレス及び制御信号はキャッシュアドレス及び制御記憶
アドレスのブロックに与えられ、これらブロックは次の
アドレスに従ってデータバッファをイネーブルする。し
かし、RISC提供アドレスは、CMU26によって実
際に取出されるデータに対して間違っている場合がしば
しばある。例えば、キャッシュ失敗を引き起こす命令取
出しのあとに書込みサイクルが続く。この書込みサイク
ルは、全てのデータバッファにRISCプロセッサから
離れたところを指示させ、CMUによって取出される命
令をロードすることを不可能にする。本発明においては
、データバッファをイネーブルするのに用いられる制御
信号を、その使用後、1クロックサイクルにわたって保
持する。CMU26がRISCプロセッサ12を保持す
るとき、これら保持された信号を、RISCプロセッサ
12によって現在主張されているアドレスからデコード
される信号に代わって、使用する。 次アドレスの生成 退避マイクロ命令アドレス( savedMA)ブロッ
ク36は、本発明装置がエミュレーションモードになっ
ているときに機能するのみであり、エミュレータマイク
ロ命令15に対する順次アクセスを提供する。正規RI
SCプロセッサまたはハイブリッドモードにおいて、R
ISCプロセッサはそれ自身の命令11(またはマイク
ロ命令15)アドレスを計算する。
【0050】通例、各エミュレーションマイクロ命令ア
ドレスは、前のマイクロ命令アドレスNOD16に単に
1を加えることによって計算される。前のマイクロ命令
アドレスは savedMAレジスタ36内にある。制
御記憶アドレス選択ブロック34は、 savedMA
内容をいつ使用するかを直接に、及びこのオフセットバ
ージョン(nMA)と呼ばれる)を何時使用するかを知
る。表6に、どのようにして savedMA及びnM
Aを結合するかを示してある。
【0051】エミュレート非RISCプロセッサをブー
トまたはデバッグするとき、エミュレーション実行を任
意の制御記憶アドレスで開始することが必要である。こ
の時、入出力プロセッサ(IOP)24は、エミュレー
ションマイクロ命令アドレスを savedMA内にシ
フトし、そしてRISCプロセッサを、そのPC内の適
切な値をもって、エミュレーションモードに入らせる。  savedMAレジスタをRISCバス上に配置して
もよいが、これは savedMAレジスタの正常の動
作を過度に複雑にする可能性がある。
【0052】しばしばあることとして、マイクロ命令を
、これが中断した所で、例えば、割込み操作中に実行パ
スが不意に変更するというような所で、実行を継続して
はいけないという場合がある。しかし、この場合、RI
SCプロセッサが制御記憶内のランダムな点で継続する
という必要はない。ただし、インタプリタは新しいバイ
トコードに対してディスパッチ可能であることが必要で
ある(これはエミュレーションモードにおいてのみ可能
である)。これを可能にするため、RISCプロセッサ
は、「 clearMA」ビットをIOP通信レジスタ
56内にセットすることにより、 savedMAレジ
スタ36を完全に0にセットする。そこで、エミュレー
タは、制御記憶18内の位置0においてバイトコードに
対してディスパッチするためのコードを持つことになる
【0053】バイトコード取出し及び命令バッファ本発
明における主要な機能は非RISC(この場合はMES
A)バイトコードの実行である。RISCソフトウェア
を用いてこれを行なうとすると、これは極めて非効率的
である。事実、純粋なソフトウェアエミュレータは、そ
の時間の大部分を、バイトコード取出し、非RISC 
 PCのインクリメント及び退避、バイトコードに対す
るディスパッチ、及びこれらをデータとして供給するこ
とに費やす。前記ソフトウェアエミュレータは、比較的
少量の時間を、有用な仕事を実際に行なうことに費やす
。本発明においては、複雑さを減じ、及び性能を高める
ため、命令バッファ38を、大部分は、ハードウェア内
に設けた。実行すべき2つの事、即ち、エミュレート非
RISCプログラムカウンタ(PC)、及び命令バッフ
ァ38自体がある。先ずエミュレート非RISC  P
Cについて説明し、次に命令バッファについて説明する
【0054】本発明実施例においては、少なくとも2つ
のプログラムカウンタ、即ちエミュレート非RISC 
 PC及びマイクロ命令PCを実現する。実際には、本
発明はまた savedPC40(オプコード開始のア
ドレス)を含み、更にまた、RISCプロセッサがオプ
コードを先取りする次の位置に対するポインタを含む場
合もある。全ての非RISC飛越しは savedPC
40を基礎とする。 savedPC40はまた、故障
に対する再始動アドレスを保持し、サブルーチン呼出し
、割込み、及びプロセススワップによって用いられる。 実際には、本発明においては、例外処理とRISCプロ
セッサパイプラインとの間のインタラクションを操作す
るために複数の savedPC40が必要である。
【0055】RISCプロセッサ12はそれ自体のプロ
グラムカウンタを有す。このプログラムカウンタは、例
外が生ずると退避させられる。本発明においては、エミ
ュレート非RISC  PCをRISCのPC内に保持
する際にあるいくつかの複雑性を解決する。RISCプ
ロセッサは、1、2または3MOD4に等しいアドレス
から命令を取出そうとするとトラップするから、エミュ
レート非RISC  PCの最小有効ビットをRISC
  PCのビット2内に保持することが必要である。し
かし、第2のビットは、常にRISC  PC12によ
ってインクリメントされるビットである。
【0056】単一サイクル中に命令バッファ(IB)3
8から命令内にバイトを挿入するため、及び/又は命令
バッファバイトコードディスパッチ(IBDisps)
 を行なうため、マイクロ命令は、取出されつつある間
に、IB38からバイトを捕捉することができることが
必要である。簡単にするため、RISC  PCによっ
て指示されるIBバイトを取るのがよいであろう。しか
し、これは、マイクロコードを書き込む方法に厄介な制
限を加えることになる。RISCPCがたまたま指示し
ているときにオペランドバイトを読み出すことができる
だけであるならば、RISCプロセッサは、バイトコー
ド翻訳ルーチンの第1のマイクロ命令内の第1のオペラ
ンドを読み出し、そして第2のマイクロ命令内の第2の
バイトを読み出す、ということになる。これは、オペラ
ンドバイトが2つの独立のニブルを含んでいる場合、特
に不便である。即ち、このバイトを2回読出ししたくな
る。それで、本発明においては、命令バッファ38内に
小プログラムカウンタLPCを含み、プログラム飛越し
の度ごとにこれをロードする。このLPCカウンタは、
バイトが命令バッファ38からアドレスされる度ごとに
インクリメントされ、一連のイネーブル回線 selI
B(Bank#)(Byte#)を含んでいる。例えば
、 selIB02は次のバイトが、IBバンク0、バ
イト番号2から選択される、ということを示す。即ち、
LPCカウンタは順次続く命令バッファ38バイトにア
ドレスする。
【0057】命令バッファ38を補充するためのアドレ
スを生成する方法が少なくとも2つある。内部RISC
  PC程度の大きさのハードウェアカウンタは価格が
高く且つ遅い。しかし、RISCカウンタは、それ自体
のPCを、これが読み出し中のバイトを指示していない
と、使用することができない。それで、本発明において
は、内部RISC  PCを非RISCバイトコード境
界に整合させて保持し、全ての補充をこの境界において
行なうようにする。
【0058】本発明においては補充はバイトコード境界
においてのみ行なわれるので、RISCプロセッサは、
常にバイトコードを通過することができるということが
必要である。本実施例において用いるMESA非RIS
Cバイトコードは、3バイト、即ち、バイトコード自体
に2つのオペランドバイトを加えたもの、よりも大きい
ものを消費しない。キャッシュに至るデータバスは幅が
4バイトである。それで、本発明においては、常にデー
タを4バイト単位で取出す。本発明においては、8バイ
ト、即ち、各々が4バイトである2つのバンク、の直線
的命令バッファ38を用いる。
【0059】本発明においては補充は現在のエミュレー
ト非RISC  PCの正面の位置から行なわれるので
、別個のRefillPC、またはRISC  PCか
らのオフセットを発生させる何らかの方法が必要である
ように見える。これら方法のいずれも、少なくともエミ
ュレート非RISC  PCをハードウェアに入れる程
度に、装置のオペレーションが遅い。これに対して、本
発明においては、同じ結果を得るために特殊の手法を用
いる。エミュレーションモードにおいては、本発明によ
れば4つのバイトを4バイト境界から取出すので、命令
バッファ38を補充するとき、バイトコードインタプリ
タはRIS  CPCの下位の2ビットを無視すること
ができる。現在のエミュレート非RISC  PC値を
RISC  PC内に保持することがマイクロコーダに
要求されず、マイクロコーダはエミュレート非RISC
  PC+4をRISC  PC内に保持する。例えば
、命令バッファ38のバンク0内のバイトは位置0から
取り出され、バンク1内のバイトはn+4から取り出さ
れる。非RISCバイトコードのマイクロコードエミュ
レーションがバンク0内のバイトを使い尽くすと、エミ
ュレート非RISC  PCはバイトコードの終わりの
レンジ〔n+4..n+6〕内にあることになる。従っ
て、RISCPCはレンジ〔n+8..n+10〕内に
あることになる。アドレス生成は下位の2ビットを無視
するので、バイトコードインタプリタはバンク0を補充
するための適切なアドレスを持ち、これはn+8である
。LPCは、飛越し中に適正な初期値をロードされた。 従って、これはRISC  PCのオフセットを無視す
る。
【0060】飛越しに最初に命令バッファ38バンクを
充填させるため、本発明においては特殊の命令Forc
eRefill を用いる。ForceRefill 
句は、補充サイクルのために補充ロジックにRISC 
 PCを用いさせる。RISC  PC4(RISC 
 PCの第4のビット)によって指定された命令バッフ
ァ38バンクは充填され、一方、他のバンクの空フラグ
は起動される。LPCはアドレスビット〔4..2〕を
ロードされる。マイクロコーダは、+3の変位を持つ無
条件分岐をもって、その後に従い、(エミュレート非R
ISC  PC+4に達するため)、そして単純(pl
ain) なIBDisp を用いて始動する。これに
より、他のバンクに対する他の補充サイクルが生ずる。 飛越しについては以下において詳細に説明する。
【0061】RISCプロセッサ12によって与えられ
るアドレスは各サイクルの途中で変化する。エミュレー
ションモード最中は、RISCのアドレスビットは、命
令バッファ38を補充するときに重要であるだけである
。補充は、IBDisp マイクロ命令が取り出された
ときに行なわれる。しかし、RISCプロセッサがこの
マイクロ命令を見る時には既に、マイクロ命令を取り出
す代わりに補充サイクルを行なうには遅すぎる。それで
、IBDisp を取り出すために与えられたアドレス
を用いると、性能を害する可能性がある。これに対し、
補充回路は、次に可能な時に補充サイクルを行なうべき
手がかりとしてIBDisp を用いる。RISCプロ
セッサが次にエミュレーションアドレスを与えるとき、
このアドレスを用いて命令バッファ38を補充する。こ
れは、補充を行なうように論理を準備しておくことが必
要であるということを意味する。即ち、受信マイクロ命
令はIBDispを含んでおって次のアドレスはエミュ
レーションアドレスであるからであり、または、若干時
間前に補充を行なおうとしたのであるが、それができた
のは今であるからである。命令バッファ38から制御記
憶18へバイトコードをディスパッチしながら命令バッ
ファにバイトを補充する際の複雑さのため、別個のキャ
ッシュアドレス選択ブロック32及び制御記憶アドレス
選択ブロック34を設けた。
【0062】ForceRefill を取り出すため
に用いたアドレスの直後のに生成されたアドレスが命令
(データではなく)アドレスであるかどうかを、システ
ムは知ることがない。本発明においては、ForceR
efillの後に現われる次のエミュレーションアドレ
スが補充アドレスである、ということが必要であるだけ
である。この論理は、INULL(放棄)サイクル及び
データアクセスを、これらは正常実行の途中で生ずるの
で、無視することが可能であるということになる。補充
アドレスをRISCPCにロードしたブランチ、飛越し
または復帰の直後にForceRefill を置くこ
とをマイクロコーダに要求することにより、Force
Refill の後の最初のエミュレーションアドレス
が補充アドレスとなるということを保証することができ
る。
【0063】飛越しの後に常に従うということは命令的
である。MESA Bytecode JZB (これ
は、飛越しゼロバイト( Jump Zero Byt
e ) 、または、スタックの最上位の語が0に等しい
場合にのみ飛び越してバイトコードストリームにおける
次のバイトからの飛越しに対するオフセットを取る、と
いうことを意味する)及びタイミングチャートを図3に
示す。比較のため、図4に正規補充サイクルを示す。オ
フセットを除去し、( ba−5ステップ)、そして場
合によってはなんらかの条件を試験した後( orcc
 TOS, TOS, rO )、マイクロコーダは、
(条件付き)ブランチ命令を用いて、dと呼ばれる宛先
アドレスをRISC  PCにロードする。換言すれば
、命令バッファ38内の次のバイトコード(IBバイト
で示す)によって与えられるアドレスへマシンが飛越し
を行なうか、またはブランチが取られず、及びプログラ
ムカウンタは1つのマイクロ命令によって単に更新され
る。ブランチのすぐ後にForceRefill 命令
が続く。ForceRefill が取り出されるサイ
クルをサイクル( Cycle )0という。Cycl
e 0の終わりに、バイトコードインタプリタはLPC
にRISCアドレスのビット[4..2]をロードする
。Cycle 1の始まりに、RISC  Addr[
29..2]がビット[27..0]としてメモリへ送
られる(即ち、2だけ右へシフトされる)。Cycle
 1の終わりに、飛越しの宛先を含む4バイト語がメモ
リから到着し、命令バッファに記憶される。この時点で
、IBDisp マイクロ命令が次の検索済みバイトコ
ードのエミュレーションを開始する。ブランチが取られ
たならば、これは新しいバイトコードである。ブランチ
が取られなかったならば、これはブランチなしでディス
パッチされたバイトコードとなる。
【0064】図3の2つの場合を比較すると解るように
、dが3MOD4に等しいか等しくないかにより、異な
る補充タイミングが生ずる。第1の補充は、現在命令バ
ッファバンクを複製するか、または、これを、飛越しア
ドレスによって与えられる新しいバンクで置き換える。 第2の補充はIBDisp 命令のゆえに生ずるのであ
り、これは第2のバンクを、おそらくは新しいバイトコ
ードで充填するためである。下の例においては、現在バ
ンクが到達されておって( d=3MOD4)、IBD
isp 命令によって直ちに用いられるので、第2の補
充はもっと早く生ずる。
【0065】補充は次のマイクロ命令取出しとオーバラ
ップしたので、Cycle 2において pMHOLD
 をRISCへ送る必要がない。MHOLD は SP
ARC RISK ピンであり、これはプロセッサクロ
ックを停止させる。正常オペレーションにおいて、デー
タバス上のおそらくは正しくないデータを取り替えるた
め、CMU  26は、 cMHOLD をセットし、
正しいデータを取り出してロードし、MDS(またはメ
モリデータストローブ)を主張して前記データを取り替
え、次いで cMHOLD を解除することができる。 補充とオーバラップすることができないとすると、取り
出されたバイトコードを無視することをRISCプロセ
ッサに告げるために pMHOLD が要求される。補
充がオーバラップしているので、RISCプロセッサは
、補充がキャッシュ失敗になったとしても、適正なマイ
クロ命令をとる。これが生ずると、CMUチップは C
ycle2において cMHOLD を主張し、これは
直接RISCプロセッサへ行く。CMUからの cMH
OLD は、これが未だバイトコードを持っていないと
いうことを Refill 回路に告げる。これはまた
RISCプロセッサにバイトコードを待機させる。CM
Uが cMHOLD を解除すると直ちに Refil
l 回路は cMHOLD をRISCプロセッサに対
して解除する。MDSは、既に適正なマイクロ命令を取
り出しておって変更されることがないので、この場合、
RISCプロセッサへ送られることはない。
【0066】Cycle 1において、RISCプロセ
ッサはまた、要求された「ba[+4]」マイクロ命令
を取り出す。ブランチはRISC  PCをエミュレー
ト非RISCPC+4  に等しくする。Cycle 
2において、RISCプロセッサはIBDispを取り
出す。通例(下記参照)、これにより、ハードウェアは
 Cycle3を費やし、装置が宛先ルーチンの第1の
マイクロ命令を取り出している間に他の補充サイクルを
行なう。
【0067】ForceRefill を行なうときの
2つの場合がある。即ち、ターゲットアドレスが3MO
D4に等しいか、等しくないかである。ターゲットが3
MOD4に等しくない場合、第2の補充サイクルは、R
ISC  PC=エミュレート非RISCPC+4  
となる。即ち、次のバンクを指示するときの Cycl
e2まで待機する。RISCプロセッサがいつもこれを
行なったならば、ターゲットアドレスが3MOD4に等
しくなると、第2の補充サイクルは1つの適正なバイト
を取るであろう。IBDisp は命令バッファ38か
らバイトを取り、命令バッファ38を空にして残すであ
ろう。Cycle3において、ハードウェアは、命令バ
ッファ38に対する若干のバイトを取ろうとしていると
同時に宛先バイトコードの第1のマイクロ命令を取出し
つつあるであろう。この第1のマイクロ命令が命令バッ
ファ38からのバイトを必要としたとしても、このバイ
トはレディ状態となっていないであろう。
【0068】従って、ターゲットアドレスが3MOD4
に等しくなると、命令バッファ38は直ちに第2の補充
サイクルを行なう。この場合、d+1は新しいバンクを
指示し、それで、第2の Cycle2において正しい
アドレスがRISCプロセッサ12から出て来つつある
。このようにして、命令バッファ38は、第1のマイク
ロ命令が新しいデータを必要とするときまでにこの新し
いデータを持つことになる。
【0069】図4に示す正規補充サイクルにおいて、命
令バッファ38は、必要とされるときに補充を単に行い
、この時、ディスパッチされつつあるバイトコードはプ
ログラムカウンタnに落ち、nMOD4=0となる。 LLOからのメモリ読出しサイクルが、補充をトリガし
たIBDisp のすぐ後の続いておったならば、補充
は、SLOバイトコードがアドレスnにある時のように
、エミュレーションアクセスが生ずるまで遅延させられ
たであろう。
【0070】時として、RISCプロセッサは、補充を
行なうべき時にエミュレーションアクセスを開始し、次
いでINULL を主張してサイクルを止めることがで
きる。 RISCプロセッサは前へ進んで補充サイクルを行なう
としている。しかし、システムは、RISCプロセッサ
がどのアドレスを送り出したかが解らないので、補充を
放棄することになる。これは有効補充アドレスでなかっ
たのであろう。適切な命令バッファ38バンクの空フラ
グセットを単に保持することにより、補充は放棄される
【0071】装置は、いくつかの方法で補充サイクルを
行なうことを決定する。バイトコード境界において、本
発明においては、マイクロコーダに依存して、RISC
  PC=エミュレート非RISC  PC+4  で
あることを保証する。補充ロジックは10の信号、即ち
、受信データビット csD. 31、csD.[13
..11]、IBBank0Empty 、IBBan
k1Empty 、 selIB03* 、 selI
B13* 、 pA.4及びrefill0ppを見る
。受信マイクロ命令が ForceRefill (c
sD.[31,,13..11]=1,,111)を求
めるならば、装置は補充サイクルを行なおうと試みる。 受信マイクロ命令がIBDisp ( cD.(31,
,12]=1,,1)を求め、そして命令バッファバン
クが空(IBBank0Empty )または(IBB
ank1Empty )であり、または1つだけのバイ
ト( selB03または selB13)を含んでい
るならば、これはまた補充サイクルの試みをトリガする
。これら条件のうちのどれかが真であったが次のサイク
ルがエミュレーションマイクロ命令取出しでなかったな
らば(または、補充サイクルが INULL、FNUL
L または MHOLDによって取り消されるならば)
、refill0ppのみがセットされる。refil
l0ppがセットされ、そしてバイトコードインタプリ
タがエミュレーションアドレスを見ると、これは補充サ
イクルを行なう。
【0072】ForceRefill はまた両方のI
BBankxEmpty フラグをセットさせる。補充
サイクルが予期どおりに完了すると、 pA.4によっ
て指定されるIBBankxEmpty 信号がリセッ
トされる。補充がキャッシュ失敗を生成すると、システ
ムは前述したように待機する。この失敗が例外を生成す
ると、適切なIBBankxEmpty 信号が再びセ
ットされる。IBDisp が空の命令バッファ38バ
ンクから試みられると、装置はメモリ例外を生成する。 システムが新しいページ内への先取りに失敗すると、こ
れは各バイトコード境界において引き続いて試みる。こ
れは極めて希な場合である。それで、反復先取りについ
ての性能罰金は無視されるべきである。
【0073】システムが、空のIBBank からのI
BDisp を行なおうとする場合、該システムは直ち
にメモリ例外を戻す。即値メモリ例外が、IBDisp
 を含んでいるマイクロ命令は不当であったのであって
これは真でない、ということをRISCプロセッサ12
に告げるであろう。これに対して、システムは次のエミ
ュレーションアクセスを通り過ぎて1サイクル待機し、
例外を信号で知らせる。同じ手続きがIOP  24か
らの割込みに対して適用される。
【0074】RISCプロセッサが空のIBBank 
からオペランドを読み出そうとすると、実際に取り出さ
れたマイクロ命令は不当な命令バッファ38バイトを含
んでいたので、次のサイクルにおいてメモリ例外が信号
で知らされる。トラッピング前には空の命令バッファ3
8から何かを実際に取り出すまで待機するということが
システムに対して大切である。モジュールが正確にペー
ジ境界上で終わるということがあると、補充ハードウェ
アはおそらくは失敗するが、補充中のトラツプは極めて
面倒になるであろう。次の仮想アドレスはどのプロセス
にも割り当てられることがないであろう。オペレーショ
ンシステムは、非実在アドレスから実行しようとする試
みを誤りとして処理する。プロセッサは、類似的にトラ
ップしないということを確実にする。
【0075】前述は、エミュレート非RISC  PC
及び命令バッファ38の正常オペレーションを説明する
ものである。システムが何らかの理由で障害または例外
を受けるとき、反則的な非RISCバイトコードを識別
して再始動させることが可能にあることが必要である。 従って、システムは savedPC40および sa
vedStackPtr52( savedSP)レジ
スタの4つの複写を有す。最至近バイトコードに対する
値は savedSP(3)及び savedPC(3
)内に保持される。最も古いバイトコードに対する値は
 savedSP(0)及び savedPC(0)内
にある。バイトコードが開始される度ごとに、スタック
ポインタ及び非RISCプログラムカウンタの新しい値
が savedSP(3)及び savedPC(3)
にロードされ、前の値は savedSP(0)及びs
avedPC(0)へ向かって後へシフトされる。
【0076】また、若干のマイクロコード制限に従うこ
とが必要である。潜在的障害を、メモリ参照、トラップ
命令、または命令バッファの読出し(IB、IBLow
またはIBHigh )として定義するならば、下記の
ようになる。即ち、1.ハイブリッドモードまたは正規
RISCモードで潜在的故障を持ち、1よりも少ないマ
イクロ命令が、潜在的故障の終わりと、バイトコードの
終わりを信号で知らせるIBDisp の始まりとの間
で実行される、というようになることは違法である。即
ち、PotentialFault ...IBDis
p は合法である。しかしPotentialFaul
t IBDisp は合法でない。
【0077】2.潜在的障害がエミュレーション非RI
SCバイトコードルーチンの3つのマイクロ命令のうち
の一つであるならば、この潜在的障害の後に続いてマイ
クロ命令を取り出すきのRISC  PC同報通信の値
は、前記ルーチンの最初のマイクロ命令を取り出のに用
いる値よりも厳格に大きく(即ち、バイトコードのメモ
リアドレスよりも大きい)、且つ、次のバイトコードの
最初のマイクロ命令を取り出すのに用いる値よりも小さ
いかまたはこれに等しい(即ち、次のバイトコードのア
ドレスよりも小さいかまたはこれに等しい)。これは、
むしろ些細な制限を表す。
【0078】3.ハイブリッドモードからエミュレーシ
ョンモードへ戻るためにJMPLまたはRETTを用い
た後、マイクロコーダは少なくとも2つのマイクロ命令
をエミュレーションモードで実行することが必要である
。例えば、 !バイトコードxに対するハイブリッドモードコード>
> Code << jmpl[Link 0]  !エミュレーションモー
ドへ戻るDalay−Slot−Microinstr
uction!残りのエミュレーションモードコードS
econd−To−Last−Microinstru
ctionIBDisp は合法である。しかし !バイトコードxに対するハイブリツドモードコード>
> Code << jmpl[Link 0]  !エミュレーションモー
ドへ戻るDelay−Slot−Microinstr
uction!残りのエミュレーションモードコードI
BDispは合法でない。
【0079】この制限が存在するのは、LMPLの後に
続く第2のマイクロ命令が取り出された後、JMPLが
間違いアドレスをもってNULLメモリサイクルを生成
するからである。第2の場合において、NULLサイク
ルはIBDisp の取出しの後に続く。IBDisp
 は、次のエミュレーションアドレスを savedP
C40アレイ内に退避させる。NULLサイクルのトラ
ッシュ( trash )アドレスはエミュレーション
アドレスのように見える可能性があり、そのため、 s
avedPC40内に取り込まれる可能性がある。一旦
 savedPC40アレイに入ると、その上に書き込
む、またはこれを取り戻す方法はない。もっと悪いこと
には、次のサイクルにおいて出て来る正しいエミュレー
ションアドレスが無視される可能性がある。これらの問
題を避けるため、システムは、JMPLとIBDisp
 との間にもう1つのマイクロ命令を要求する。これに
より、IBDisp はNULLサイクル後に移動させ
られ、そこで正しく働く。NULLサイクルはまた、記
憶(データアクセスがマイクロ命令アクセスでないので
、無視され、従ってIBDisp を導入することがで
きない)、インタロックを持つロード(同じ理由で無視
される)、トラップ(無視されないが、NULLサイク
ルの始まりにおいてRISCプロセッサから出てくるア
ドレスは次のバイトコードのアドレスでなく、従ってこ
れはファインである)、及び割込み( savedPC
40はいずれにしても誤り)によって作られる。
【0080】これらの制限を与えられると、下記のアル
ゴリズムは障害のあるバイトコードを識別する。命令バ
ッファ38が、これがデータ(IB、IBHigh 、
IBLow)に対して読み出されるときに空である場合
には、ハードウェアはこのマイクロ命令に対して障害を
生成する。しかし、システムが空の命令バッファ38上
でIBDisp を実行する場合には、ハードウェアは
、例外を信号で知らせる前にもう1サイクル待つ。これ
は、システムが、古いルーチンの最後のマイクロ命令に
対してではなく、新しいルーチンの最初のマイクロ命令
に対して命令アクセス例外を取るということを保証する
【0081】A.システムが命令またはデータ例外を取
っており、そして退避PCが正規RISCまたはハイブ
リッドモードを指示するならば、 savedPC(3
)及び savedSP(3)を使用しなさい。前記の
第1の制限は、例外が認められる前にシステムが新しい
バイトコードへ達することができない、ということを保
証する。 B.システムが命令またはデータ例外をエミュレーショ
ンモードで取ったならば、 savedPC(3)から
始めて、nPCの退避値を savedPC40レジス
タの各々と比較しなさい。退避nPCが savedP
C(i)よりも大きいならば、 savedPC(i)
及び savedSP(i)を使用しなさい。メモリ参
照がバイトコードルーチンの終わりから3マイクロ命令
を越えるものである場合には、システムは、状態が s
avedPC(3)に対して真である、ということを知
る。メモリ参照がバイトコードルーチンの最後の3つの
マイクロ命令のうちの一つである場合には、前記の第2
の制限は、システムがこれを正しく識別する、というこ
とを保証する。 PotentialFault 及び
IBDisp が同じマイクロ命令内にある場合を処理
するための4つの savedPC40及び save
dSP52レジスタがある。この場合、システムはIB
Disp によって記憶されたPC値の前のPC値にお
いて再始動する。前記前の値は、2つの後続IBDis
p により、 savedPC(0)へ押し戻される。
【0082】プログラムカウンタPC及びスタツクポイ
ンタSPを何時退避させるかを決定する回路はForc
eRefill とIBDisp とを識別しない。こ
のことは、各ForceRefill もまた次のPC
及びSPを退避させる、ということを意味する。しかし
、これは問題ではない。補充が障害を生じさせるならば
、この障害は、後続のIBDisp まではシステムへ
送られない。IBDisp が実行されるとき、正しい
PC及びSPが、間違い値の後に書き込まれる。前述の
アルゴリズムを用いると、これら後者の値は、使用すべ
き適正な値として識別される。
【0083】マイクロコーダは、退避PC  40(ま
たは、この問題に対してはスタックポインタ50または
 savedSP52)を読み出すとき、RISCプロ
セッサのパイプラインを知っていることが必要である。 マイクロ命令nが、 savedPC40を読み出すこ
とを命ずるならば、 savedPC40が実際に読み
出される前に、マイクロ命令n+1及びn+2が取り出
される。 savedPC40(及び savedSP
52及びSP  50)は、受信マイクロ命令に応答し
て変化することが時折ある。従って、マイクロコーダは
、マイクロ命令n+1及びn+2が、読み出し中のレジ
スタを変化させない、ということに注意することが必要
である。 savedPC40の場合、これは、これら
マイクロ命令のいずれにおいてもIBDisp を持っ
ていないことを意味する。 スタック、スタックポインタ及びマイクロ命令書式ME
SA  CISCプロセッサは、全てのオペレーション
が、メモリから明示的にロードされているデータに対し
て生ずるという点において、若干RISC様である。 レジスタのセットの代わりに、MESAプロセッサは極
めて小さい(14語)評価スタックを用いる。本実施例
においては、システムはRISCプロセッサの14の連
続レジスタを用いて評価スタックを保持する。スタック
ポインタのジョブは、このスタックの最上位の要素を保
持するレジスタのアドレスを保持することである。
【0084】スタックポインタ自体を説明する前に、評
価スタックデータがRISCプロセッサレジスタ内で書
式化される書式を定義する。MESAマシンは16ビッ
トデータを用いる。RISCは32ビットレジスタを有
す。メモリ内の16ビット語(バイトではない)を指示
するためにスタックデータがしばしば用いられる。前述
したように、RISCプロセッサは、16ビットアクセ
ス最中に最小有効アドレスビットがセットされるのが解
ると、トラップする。
【0085】従って、現在の設計においては、システム
はスタックデータをRISCレジスタのビット[18.
.3]として保持する。エミュレート非RISCPCは
、語ではなしにバイトを指示するので、ビット[27.
.2]として保持される。システムは、RISCプロセ
ッサ12に、32ビットの読出し及び書込みを行なうこ
とを常に告げ、これが適正ビット[15..0]よりも
多いものに注意を払うようにする。アドレス選択ブロッ
ク32及び34は、スタックデータからの、またはエミ
ュレート非RISC  PCからの全ての非RISC 
 PC(MESA)アドレスを、メモリへの途中で、2
ビットだけ右へシフトさせる。語アドレスビット(RI
SCプロセッサアドレスにおいてはビット3、しかしメ
モリアドレスにおいてはビット1)が0であるならば、
データトランシーバ44及び46はRISCデータビッ
ト[18..3]をいずれかのメモリビット[31..
16]に接続する。語アドレスビットが1であるならば
、データトランシーバ44及び46はRISCビット[
18..3]をメモリデータビット[15..0]に接
続する。これは、16ビットメモリを32ビットメモリ
でシミュレートするのに最も矛盾のない方法であると思
われる。RISCデータビット[31..19]及び[
2..0]は、読出し中に0にセットされ、書込み中に
は無視される。
【0086】スタックポインタ50は4つのビットを有
す。このスタックポインタは、前述し及び表1及び表2
に示すように、StackPointerASIとのメ
モリアクセスを用いてRISCプロセッサ12によって
読出し及び書込みされる。スタックポインタ50データ
はRISCデータ語の最小有効4ビットとしてアクセス
される。ibBank1Empty* 、ibBank
0Empty* 及びtakeTrap* ビットは、
表7に示すように、スタックポインタのビット[6..
4]内にある。
【0087】
【表7】
【0088】非RISC命令が障害、例えばページ障害
を経験するときには、バイコード翻訳ルーチンを初めか
ら再始動することが必要である。この理由で、システム
は各バイトコードルーチンの始まりにおいてマシンの状
態を退避させることが必要である。前掲の命令バッファ
についての節において説明したように、システムは、事
実、4つの savedStackapointer 
52レジスタのアレイを有し、最後4つのバイトコード
の各々に対して1つのレジスタがある。これは、システ
ムに、RISCプロセッサのパイプラインとその例外論
理との間のインタラクションを操作させる。適正な s
avedStackapointer を見付けるのに
用いられるアルゴリズムについては命令バッファ38に
ついての節において説明する。
【0089】スタックポインタ50が0000に等しい
とき、スタックは空である。スタックポインタが111
0に等しいとき、スタックは一杯である。任意選択とし
て、スタックは、RISCレジスタ31からレジスタ1
8へ下方へ成長する。即ち、スタックポインタ50が0
001に等しくなるとき、スタック内の唯一の要素はR
ISCレジスタ31内にある。エミュレーション命令が
プッシュとのアクセスを指定するとき、スタックポイン
タはインクリメントされる。若干の飛越し命令がスタッ
クから2要素を効率的にポップすることが必要であり、
従って、マイクロ命令内のASI.6(「p」ビット)
の存在はスタックを2だけポップする。スタックは、エ
ミュレータがポップでスタックにアクセスするときデク
リメントされるだけである。表8に、CALL命令、S
ETHI 命令、条件付ブランチ命令、及び他の全ての
演算命令に対する書式を示す。a、op2、op3及び
opフィールドは、それらの対照物である SPARK
 RISC と同じである。以下に、及び命令修飾の節
において、種々のフィールドについて説明する。
【0090】
【表8】
【0091】「b」ビットは、ブランチ命令において、
ブランチ変位のために用いる定数を何処から受け取るか
を指示する。b=0ならば、マイクロ命令において与え
られる変位を用いる。b=1ならば、命令バッファ38
からの次のバイトを検索し、オフセットとして挿入する
。「d」ビットは、d=1のとき、次のバイトコードに
対するディスパッチングを示す。換言すれば、現在のマ
イクロ命令ルーチンは停止し、次のバイトコードが検索
され、そしてそのエミュレーションが開始される。 「p」ビットは、1に等しいとき、エミュレートスタッ
クの倍ポップ、及びスタックポインタの2だけのデクリ
メントを示す。「i」ビットは、包含されている定数を
どのようにして解釈するかを示す。i=00ならば、定
数フィールドの符号拡張バージョン imm[9..0
]を用いる。i=01ならば、命令バッファバイトの上
の4ビットを用いる(IB[7..4])。同様に、i
=11ならば、命令バッファバイトの下位の4ビットを
用い、i=10ならば、命令バッファ内の全バイトを含
める。後述するように、ForceRefill 命令
は、d=1及びi=1x をセットすることによって指
示される。
【0092】rDest 、 rSrc1及び rSr
c2フイールドは全て、スタックアクセス及びスタック
ポインタ修飾を指定することができる。 rDest 
フイールドは、RISCプロセッサの記憶整数命令が宛
先フィールドをデータの源始として用いるので(源始フ
ィールドはアドレスを供給する)、ポップアクセスを指
定する。データをスタックからメモリへ移動させるには
ポップが必要であり、利用可能な唯一のフィールドは 
rDest である。データをスタックから内部レジス
タへ移動させるとき、 rDest はスタックを指示
する。従って、これにもポップアクセスが必要である。 データをスタックへ移動させるとき、 rDest は
常にスタックを指示する。従って、 rDest フィ
ールドはプッシュオプションを必要とする。
【0093】命令修飾ブロック46はスタックポインタ
の3つのバージョン、即ち、aTOS(スタックの頂上
の上の位置)、TOS(スタックの頂上、スタック上の
最高値)及びbTOS(スタック上の第2の値)を生成
する。スタックポインタは、事実、aTOSを指示する
。TOSは StackPointer−1に等しく、
bTOSはStackPointer −2に等しい。
【0094】StackPointer50は、事実、
使用の後に続くサイクルの最中に状態を変化させる。即
ち、単一サイクル内でカウントアップ、カウントダウン
、ロードまたは何もしない、及び動作の実施をするかど
うかを決定することはあまりに困難であるからである。 Stack Ptr内のデコードロジックはサイクルの
終わりまでに状態を決定し、カウンタロジックは次のサ
イクルの最中に実際のカウントを行なう。
【0095】オペレーションのMESA原理は、コード
がスタックポインタを違法な値に調整しようとする場合
に用いるべき StackTrapを定義する。正当な
コードがこれを行なうことはない。トラップは間違いの
ブランチまたは重ね書きされたコードによってトリガさ
れる。これは、エミュレータシステムがデバツクされて
いる時に生ずる可能性がある。ランダムなバイトコード
の実行は、結局、スタックのアンダフローまたはオーバ
フローを生じさせる。従って、本実施例においては、ス
タックポインタが15に到達した場合に(これはまた−
1と等価である)ハードウェアを追加してスタックトラ
ップを生じさせる。このスタックトラップの結果は、R
ISCプロセッサ12へ送られるレベル8における割込
みである。 この割込みは、更に2つのマイクロ命令が取り出された
後、RISCプロセッサによって検出される。これが非
RISCバイトコードの途中で生ずるよい機会がある。 バイトコードの途中でトラップを取ったのちに再始動す
ることは不可能である。従って、スタック障害は回復可
能である。
【0096】マイクロコーダは、スタックポインタ(S
P)50または退避スタックポインタ( savedS
P)52(または、この問題に対する退避PC)からの
読出しを命令するとき、RISCプロセッサのパイプラ
インを知っていることが必要である。マイクロ命令nが
スタックポインタ50を読み出すことを命令する場合、
SP50が実際に読み出される前に、マイクロ命令n+
1及びn+2が取り出される。SP  50(及び s
avedSP52及び savedPC40)は受信命
令に応答して変化する。従って、マイクロコーダは、マ
イクロ命令n+1及びn+2がSPまたは saved
SPを変化させないように注意することが必要である。 どのプッシュまたはポップもSP  50を変化させる
。IBDisp も savedSP52を変化させる
【0097】SPARK RISC プロセッサ12が
障害または割込みを取るとき、これは新しいレジスタウ
ィンドウを取り、そして、PC及び次のPC(nPC)
をこのウィンドウのレジスタ17及び18内にそれぞれ
退避させる。他のRISCプロセッサは異なる動作をな
す。通例、レジスタ18はスタック要素14であるが、
トラッブ/障害は新しいレジスタウィンドウを用いるの
で、オーバラップはない。レジスタ18にアクセスする
ために正規RISCモードに転換すること、またはスタ
ックポインタに気を使うことは不便であるので、ハード
ウェアは、マイクロコーダが、もっぱらスタックを介す
ることをせずに、直接にこれを読み出し及び書き込みす
ることを許す。事実、マイクロコーダはレジスタ18及
び19を直接に読み出し及び書き込みすることができる
。 命令修飾 命令修飾ブロック46は、表8に示すエミュレータマイ
クロ命令をRISCオプコードに変換する。このブロッ
クの一層の論理降伏を図5に示す。変換は、マイクロ命
令が制御記憶18からプロセッサ12への途中にあると
きに生ずる。
【0098】区切り点について後述する場合を除き、オ
ペレーションフィールドは変換されない。即ち、op、
op2及びop3フィールドはマイクロ命令及びRIS
Cオプコードにおいて同一である。変換処理は、 rD
est 、 rSrc1、 rSrc2及び即値(CA
LLに対して30ビット、ブランチに対して22ビット
、定数に対して13ビット)フィールドにおいて見いだ
される値を翻訳する。この処理はまた、b、d、p及び
iマイクロ命令フィールドによって占められるRISC
オプコードフィールドの余白を満たす。これは、通例、
定数を符号拡張することによって行なわれる。例えば、
前記フィールドによって占められるビットは21ビット
変位の最大有効ビットの複写で満たされる。
【0099】マイクロ命令の翻訳はさして難しくはない
が、システムはこれに対する約10の nSecを許す
だけである。本実施例における論理の多くを、AMD及
びMMI製のもののようなプログラマブルアレイ論理(
PAL)で構成した。翻訳が単一PALに対して余りに
複雑である場合には、並列の多重PALが負荷を共用す
ることができる。例えば、単一PALが、 rDest
 、 rSrc1または rSrc2フィールドの全て
の組合せを操作することができない場合、システムは各
一つに対していくつかのPALを必要とする。これらの
PALを図5における「xlate 」ボックス内に一
括してある。
【0100】命令修飾ブロック46はRISCのCAL
L及びSETHI 命令を無変更で通過させる。CAL
L命令を用い、RISCのPC内に残っているバージョ
ンを修飾しながらエミュレート非RISC  PCの複
写をレジスタ内に退避させることができる。SETHI
 を無変化で通過させることは、評価スタックレジスタ
の上の22ビットをセットすることができないというこ
とを意味する。 最後に、命令修飾ブロック46は、ブランチ命令を、D
.[31..30,,23]=00,,1付きのものと
してデコードする。これは、op2= x1x を意味
し、2、3、6及び7を含む。3のop2値は、 CY
7C601 SPARC RISC において不定であ
り、マイクロアセンブラによって生成すべきものではな
い。
【0101】どのようにしてデコード機能を実際に実施
するかについて次に説明する。 rDest デコーダ
を行なう最も簡単な方法は、マイクロ命令データをその
ままで通過させるか(D31=0またはD31=1及び
 rDest <18)、または rDestの最小有
効2ビットを StackPointer に加算する
ことである。しかし、通例の加算器のための十分な時間
がない。この加算器は7つの積項のうちの6つを使いき
り、そして加算が行なわれる2つの条件がある( rD
est.4=1&( rDest.3=1 OR  e
Dest.2=1)。従って、システムは、各条件に対
して1つずつ、2つのPALを必要とする。前記PAL
の一方のものはまた、 rDest <16ならば、デ
ータをそのまま通過させる。他方ものは、15< rD
est <20ならば、データをそのまま通過させる。 最後のPALは、D.31=0ならば、データをそのま
ま通過させる。データは修飾されないのであるが、シス
テムは、バッファのセットをイネーブルするPALの遅
延を許す余裕がない。
【0102】受信ビツトop及びop3は、有効マイク
ロ命令取出し最中にRISCCプロセッサに対してゲー
トされる。この状態はまた、他の全ての命令修飾ブロッ
ク46翻訳プログラムをイネーブルする。b翻訳プログ
ラムは、op=01、op=1x または(op=00
及びop2.1=0)ならば、ビット21を入力部から
出力部へ通過させる。op=00及びop2.1=1で
ある場合、翻訳プログラムは、b=0ならばビット20
を、b=1ならば(IB−1)の最大有効ビットを、通
過させる。
【0103】rSrc1翻訳プログラムは、 rDes
t 翻訳プログラムよりも若干簡単である。スタックオ
フセットを生成するための唯一の条件は、D31=1、
 rSrc. 4=1及び rSrc.2=1である。 しかし、これは、翻訳プログラムは条件付きブランチに
対するIB符号拡張を考慮することが必要であるので、
もっと複雑である。 いずれにしても、これは3PALを取って終わりとなる
【0104】M翻訳プログラムは、op=1xまたはo
p=01または(op=00及びop2.1=0)また
は(op=00及びop2.1=1及びb=0)ならば
、ビット13を通過させる。op=00及びop2.1
=1及びb=1であるならば、これはIB−1の最大有
効ビットを送る。シフト即値( simm ) 翻訳プ
ログラム記述を表9に示す。システムは、(1)符号拡
張IBの上部を欲すること、(2)シフト済み定数を欲
すること、または(3)命令バッファ38(IB)から
の次のバイト(の或る部分)を欲すること、がない限り
、入力を出力部へ送る。 simm 翻訳プログラムは
2セットのPALを用いる。その一方は通過及び定数の
場合に対するものであり、他方は、後述するように、I
Bに対するものである。
【0105】
【表9】
【0106】境界誤りが下位の3ビット内の1とアドレ
スするときにRISCプロセッサはトラップする、とい
うことに留意することが必要である。従って、定数は、
CPUレジスタに、特に評価スタックに対して、記憶さ
れるとき、通例シフトされる。しかし、シフト命令(S
LL、SRL、SRA)に対しては、絶対定数が必要で
ある。従って、 simm 翻訳プログラムは未シフト
定数を用い、 Tagged Add 及び Subt
ract オペレーションならびにシフト命令のための
オペランドを供給する。
【0107】飛越し及び連係( Link ) オペレ
ーション中、システムは、エキストラマイクロ命令コー
ドの新しい開始アドレスをプログラムカウンタPCに入
れ、及び現在のカウンタを別個のレジスタ内に入れるこ
とにより、ハイブリッドモードマイクロ命令コードを保
持している制御記憶の最後のカドラントへ飛び越す。シ
ステムはまた、JMPL(飛越し及び連係)マイクロ命
令に対するシフト済み定数を用いてハイブリッドモード
入口点の数を最大にする。JMPL定数の10ビットを
9に減ずる。即ち、適切に符号拡張されるには、最上位
のビットは1でなければならないからである(表4に示
すように、ハイブリッドモードへ飛び越すためのマイク
ロ命令は最上位の2ビットにおいて11を有す)。従っ
て、JMPL定数の9ビットは、制御記憶のハイブリッ
ドマイクロ命令部内に512の別々の入口点を提供する
に過ぎない。ハイブリッドモード入口点は、制御記憶の
最後のカドラントを、符号拡張済み定数を用いてアクセ
スされる他のどれかのエミュレータデータ構造と共用す
ることが必要である。
【0108】最後に、命令修飾ブロック46は、下位の
5ビットに対する翻訳プログラム(rs2 xlate
 )を有す。基本的には、前記下の5ビットは、(op
=1x 及びD.13=0)の場合に対して rSrc
1関数を挿入する場合を除き、前述の simm 関数
に等しい。シフト済み定数または命令バッファデータを
用いるとき、下位の3ビットは000である。 sim
m xlate の8ビットの代わりに単に5ビットを
有することにより、利点が得られる。 キャッシュ及び制御記憶データトランシーバ本実施例に
おいて、システムは、制御記憶18アクセスのために命
令修飾ブロック46をバイパスする1セツトの制御記憶
トランシーバチップ44を有す。CSトランシーバ44
は直接32ビットトランザクションを操作するだけであ
る。このセットのトランシーバは、A.[31..30
]=11であるとき、または A. [31..30]
=01であって且つ pDXFER =0であるとき、
起動される(制御記憶から正規RISCプロセッサオプ
コードを取り出す)。
【0109】pASIが30ないし34(通例のように
16進法で)の範囲内になると、構内データバスバイト
コードインタプリタレジスタトランシーバ48がイネー
ブルされる。これらトランシーバは幅16ビットである
。それで、32ビットインタバルタイマ54は半分ずつ
読み出される。16ビットよりも小さい幅の全てのレジ
スタはバスの下のビットに接続される。即ち、各レジス
タの最小有効ビットは構内データバスのビット0に接続
される。
【0110】1セットのキャッシュトランシーバ42を
用いてキャッシュに対するRISCデータを修飾なしに
送受する。( pASI=3x )または( pA.[
31..30]=1x )でない限り、これを用いる。 第1の節は、 PointerASI及び LoadA
ddressASIの使用及び構内データバスアクセス
を含む。第2の節は、全ての制御記憶18アクセス及び
エミュレーション非RISCデータアクセスを含む。こ
れらは、通常の転送を行なってはいけない全ての場合で
ある。
【0111】前述したように、評価スタックデータはR
ISCレジスタのビット[18..3]内に保持される
。評価スタックデータ{( pA.[31..30]=
10及びpDXFER =1)または Pointer
ASI}を読み出しまたは書き込みするとき、RISC
アドレスのビット3は、第2のセットのキャッシュトラ
ンシーバが、RISCデータビット[18..3]を、
メモリデータビット[31..16](ビット3=0)
に接続するか、またはメモリデータビット[14..0
](ビット3=0)に接続するかを決定する。
【0112】マイクロコーダが LoadAddres
sASIを用いて倍長語からエミュレート非RISC(
MESA)アドレスをロードするとき、最後のセットの
キャッシュトランシーバ42を用いる。倍長語が上位及
び下位の語の通常の位置をスワップすることをMESA
命令セットの1つの区画が要求する。MESAアドレス
を作るため、システムは、倍長語内で語をスワップし、
その結果を3だけ右へシフトし、そして2つのMSbi
t を「10」にセットして、(10,,MemDat
a [10..0],,MemData [31..1
6],,000)を与えることが必要である。マイクロ
コーダは、前記アドレスが倍長語内にたしかに存在して
いるということを保証することが必要であるので、 L
oadAddressASIの使用は制限される。 L
oadAddressASIはデータをロードするため
にのみ用いられるから、システムは二方向トランシーバ
の代わりに一方向論理ブロック(バッファ)を用いるこ
とができる。
【0113】トランシーバ42、44、48の方向はR
ISCプロセッサの読出し(RD)出力のラツチ済みバ
ージョンによって制御される。サイクルの始まりにおい
てRD=1であるとき、データは、該サイクルの終わり
においてメモリからRISCプロセッサへ走行している
ことになる。そうでない場合、データは、該サイクル内
でRISCプロセッサからメモリへ走行していることに
なる。
【0114】クロックサイクルの度ごとに、システムは
RISCのCCC.[1..0]ピンへ pD[4..
3]を送る。RISCプロセッサはこれらビットを内部
にラッチする。ロードマイクロ命令の後の2マイクロ命
令で、エミュレータはこれら2つのビットに対して分岐
する。この特長は簡単であり、MESA(または非RI
SC)エミュレータによって保持されているデータ構造
をデコードする際の助けとなる。 割込み生成 本発明において外界から割込みを取ることが必要である
。本実施例の SPARC RISC プロセッサ12
はそのIRL[3..0]ピン上で割込みを感知する。 これらピン上の数が現在の割込みマスクのレベルを越え
る場合、割込みが取られる。しかし、システム設計者の
考えとして、RISCプロセッサは2つのクロツクサイ
クルを取ってこれら入力を同期させる。更に、入力値は
少なくとも2クロックサイクルにわたって継続して認識
される。 最後に、割込みは命令の実行フェーズ最中に認識される
。この命令は割込み後に再始動されるべきものである。 RISCプロセッサ12は、割込み済み命令が取り出さ
れたときに、 savedMA36及び他の状態(スタ
ックポインタ50、 savedPC40、等)がどん
な値を持っていたかを算定する。RISCプロセッサ1
2は、トラップ命令を取り出すときに、その割込み肯定
応答( INTACK ) ピン上にパルスを発生する
。しかし、全ての場合にどのようにして INTACK
 パルスを割込み済み命令に関係させるかは必ずしも明
白でない。それで、再始動可能割込みのみが非RISC
バイトコード境界上に許されることになる。その点で、
マシンの状態は周知であり、再現が比較的簡単である。
【0115】RISCプロセッサのパイプライン及び割
込み待時間は、外部回路が或る特定の命令によって割込
みを起こすことを不可能にする。従って、 takeT
rap ビットは割込みを生じさせることがなく、命令
アクセス例外を生じさせる。命令アクセス例外の源は、
空の命令バッファ38からのデータに対する読出しもし
くはディスパッチ、または takeTrap ビット
である。命令アクセス例外は、表8に示すように、 S
tackPtr レジスタを見て何が起こったかを決定
する。IOPIntMP* が生きているならば、これ
はIOP割込みであったのである。両方のibBank
xEmpty* 回線が生きているならば、命令バッフ
ァ38は空である。
【0116】
【表10】
【0117】本発明においては、表11に示すように、
割込み及び例外の複数の源がある。データアクセス例外
は、空のページにおいてデータを読出しまたは書込みし
ようとすることから生ずる。これは、CMUチップ26
から直接知らされる。前述のアルゴリズムは、バイトコ
ードを再始動させることのできるように、マイクロコー
ダをして、エミュレート非RISC  PC及びスタッ
クの状態を退避及び復元させる。
【0118】命令アクセス例外に対して4つの原因があ
る。第1のものは、システムが空のページから正規RI
SC命令を取り出そうとするときに生ずる。これは非R
ISC(MESA)モードにおいては生じない。第2の
ものはIOP  24からの割込みから生ずる。第3の
ものは、システムのが空の命令バッファ38からデータ
バイトを取り出そうとするときに生ずる。最後の割込み
は、システムが空の命令バッファ38からのバイトに対
してデイスパッチしようとするときに生ずる。IOP割
込み及びバイト例外は、IBDisp に出会った後で
のみ生ずる。長いバイトコード例外ルーチンは、 St
ackPtr レジスタ50を見ることにより、IOP
割込みに対してチェックすることができる。
【0119】
【表11】
【0120】IOP  24はIOPIntMP* の
パルスを発生して takeTrap をセットする。 RISCプロセッサ12は、IOPComm.1に1を
書き込むことによって、 takeTrap をリセッ
トする。 takeTrap がリセットされる前にI
OPがIOPIntMP* を解放しているということ
を保証する明示ハンドシェークはない。IOPIntM
P* のパルスを発生するIOPコードは、割込みがデ
ィスエーブルされた状態で走行する。RISC割込みは
、 takeTrap をリセットする前にできるだけ
長く待つ。これは、実際上、問題なしと思われる。
【0121】区切り点はもう少し複雑である。システム
はソフトウェアトラップとともに区切り点を実施する。 RISCプロセッサ12は、エミュレート非RISC 
 PC、スタック及び他の内部のレジスタがファインと
なるように、トラップを取るときにその全ての状態を極
めて注意深く退避させる。しかし、RISCプロセッサ
12は、通例、トラップ命令後に、トラップを取る前に
、2つの命令を取り出す。RISCプロセッサの外側の
回りのハードウェアは、通例、命令を実行するときでは
なしに、命令が取り出されるときに状態を変化するから
、これは問題を惹起する可能性がある。本発明において
は、マイクロ命令のop3フィールドの、他の状態では
使用しない値を「マイクロ命令区切り点」に変換するこ
とにより、この難点を避ける。この値を、命令修飾ブロ
ック46において、RISCプロセッサトラップオプコ
ードに変換する。この新しいトラップの出現がバイトコ
ードインタプリタの状態をフリーズする。このフリーズ
は、RISCプロセッサ12がトラップを取るとリフト
される。この方法により、バイトコードインタプリタ1
6は、マイクロ命令区切り点に出会った後、そしてこれ
が取られる前に、マイクロ命令を無視することができる
【0122】ユーザが、区切り点を取り、次いで、この
区切り点を所定位置に残しながらその位置から継続する
ことを望む場合がしばしばある。これを行なうには、プ
ロセッサは、「ブロークン」( broken )命令
を実行し、区切り点を後方へ移動し、次いで継続するこ
とが必要である。シングルステップ機能がこれに対して
自然であるが、RISCプロセッサはこれを持っていな
い。しかし、これは、ほとんど同じくらい良いものを持
っている。中断が取られると、RISCプロセッサは、
命令のアドレス(PC内の)だけではなく、更に次の命
令のアドレス(nPC内の)を退避させる。中断Loc
1のアドレス及びnPC内のアドレスLoc2を定義し
なさい。Loc1における中断から継続するには、デバ
ッガは、Loc1の命令を復元し、中断をLoc2にセ
ットし、そしてRISCプロセッサ12に継続すること
を告げる。Loc2中断を取るとき、デバッガは、最初
の中断をLoc1に、そしてマイクロ命令をLoc2に
復元し、次いでLoc2から継続する。この方法は、正
規RISCコードにおいて、及びハイブリッドコードに
おいてりっぱに働く。デバッガがこの方法を行なおうと
する場合、RISCプロセッサPCではなく、 sav
edMAレジスタを用いてLoc1及びLoc2を定義
するように注意することが必要である。
【0123】エミュレーションモードコードに対する同
じ目的を達成する他の方法は、命令をLoc1に復元し
、IOPIntMP* を主張して、そしてRISCプ
ロセッサ12に走行するように告げる、ということをI
OP  24に行なわせることである。RISCプロセ
ッサがバイトコードの終わりに到達すると、これはトラ
ップする。この時点で、デバッガは区切り点を、後方へ
、Loc1に移すことができる。この方法は、Loc1
がバイトコードの終わりの前に再び実行されない限り、
りっぱに働く。全てのエミュレーションバイトコードは
分岐または折り返すことができないので、前記は全ての
エミュレーションバイトコードに対して同様である。
【0124】本発明においては、エミュレーションモー
ド(MESA命令セットをエミュレートする)において
、スタックポインタが常に15に等しいならば(これは
また−1に等しい)、即値 StackFault を
取る。これは、エミュレータがランダムメモリデータを
コードとして解釈し始める場合のみ生ずる。RISCプ
ロセッサ12は任意トラップから再始動することができ
ないので、エミュレータは StackFault か
ら再始動することができない。しかし、 StackF
ault を取るプロセスは極めて厄介なので、これを
再始動させることは良い方法ではない。
【0125】最後に、IOPは、HaltMP* 回線
を用いてプロセッサ12を即時停止させることができる
。ここでも、RISCプロセッサはランダムトラップの
後に状態を復元することができないので、この型の停止
の後に再始動する方法はない。ユーザは、マシンの状態
を解釈しようとすることは自由である。デバッガも、バ
イトコード境界上で停止する丁寧な再始動可能非RIS
C停止を提供する可能性がある。これは一つの型のIO
P割込みとして実施される。 インタバルタイマ オペレーションのMESA原理(本実施例において実施
される非RISC命令セット)は、高速カウンタを必要
とする。これは、性能測定に、及び実時間スケジューリ
ングに用いられる。インタバルタイマASIを用いてプ
ロセッサによって32ビットカウンタに対して読出し及
び書込みを行なうことができる。診断だけがインタバル
タイマに書込みを行なう。インタバルタイマ54は、ク
ロック信号、若干数のパルス(本実施例においては25
6)によってクロック信号を分割するプリスケーラ、及
び現在タイマ信号を記憶するカウンタを具備する。
【0126】インタバルタイマは幅32ビットであり、
バイトコードインタプリタ構内データバス( bD.[
15..0])の幅は16ビットに過ぎないので、タイ
マを半分ずつ読出し及び書込みすることが必要である。 表3に、どのようにしてインタバルタイマにアドレスす
るかを示す。ここでも、奇妙なオフセットは、RISC
プロセッサが大端型( big−endian ) マ
シンであり、そして一方、インタバルタイマがデータバ
スの下端部に接続されている、ということから生じたの
である。信頼性をもってタイマ54から読み出すには、
下半分を読み出し、上半分を読み出し、そして下半分を
再び読み出す。 これら2つの下半分のサンプルが同じであれば、時間は
整合しているのである。これらが整合しない場合には、
タイマがチック( tick ) して上半分と下半分
との値を不整合にしている可能性がある。この場合には
、下半分及び上半分を再び読み出す。最悪のタイミング
バグのために第2の下半分読出しが歪曲されたという極
めて希な偶然のために誤りがあったのなら、下半分を再
び読み出す。 IOP通信 IOP  24及び非RISCエミュレートプロセッサ
は情報の効率的な流れを保持するために割込みを交換す
ることが必要である。IOPは、IOPIntMP* 
信号をRISCプロセッサへ送る(前述の割込み生成の
節を参照されたい)。IOP通信レジスタ56は、非R
ISCプロセッサが割込み MPIntIOP をIO
P  24へ送ることを許す3ビットレジスタである(
表10参照)。この割り込みはレジスタの最小有効ビッ
ト(ビット0)になっている。割込みを生じさせるには
、これを0にセットし、次いで1にセットする。
【0127】IOP通信レジスタ56のビット1は t
akeTrap ビットである。これは、割込み生成の
節において前述したように、割込み処理において用いら
れる。IOP通信レジスタ56のビット2は clea
rMAビットである。これは、次アドレス生成の節にお
いて前述したように、 savedMAレジスタをクリ
アするのに用いられる。 ビット3は制御記憶( csA. 12)アドレスのビ
ット12をエミュレーションモードで供給する。これは
、2つのディスパッチ表、または2つのエミュレーショ
ン(例えば、Smalltalk 及びMESA)に対
する支持を許す。
【0128】本発明においては、短シフトレジスタ、即
ち savedMAレジスタ36を用い、IOP  2
4に、制御記憶の読出し及び書込みを行ない、及びCP
U  12を制御することを許す。IOPはこのレジス
タを読み出し、RISCプロセッサによって実行すべき
次のエミュレーションマイクロ命令を見付ける。IOP
  24はこのレジスタに書込みしてエミュレーション
実行を初期設定する。また、前述したように、dear
MAを主張することによつて savedMAをクリア
することができる。 savedMAレジスタ36は1
2ビットを有す。ビットは、 DATAIN 及びDA
TAOUT 回線を用いて、最小有効から最大有効まで
、レジスタ内にシフトされる。IOPは、1ビットだけ
シフトする度ごとにCLOCK 回線を増す。IOP通
信ブロック24内のハードウェアがCLOCK を同期
させ、正確に1クロックの長さのシフトパルスを生成す
る。 キャッシュ制御装置及びメモリ管理装置本発明において
用いるサイプレス CY7C604型キャッシュメモリ
装置(CMU)チップ26は3つのセクション、即ち、
キャッシュタグ比較装置、キャッシュ制御装置及びメモ
リ管理装置を有す。RISCプロセッサ12がアドレス
を送り出すと、キャッシュタグ比較装置は、アドレスさ
れた項目がスタティックRAMチップ内にあるかどうか
を決定し、メモリ管理装置は、これがRISCプロセッ
サの仮想アドレスに対応する物理アドレスを既に持って
いるかどうかを決定する。前記項目がスタティックRA
M内に既にある場合には、CMU  26は、SRAM
からの取出しが進行することを単に許す。キャッシュが
失敗する場合には、CMU  26は、RISCプロセ
ッサ12に進行を許す前に、主メモリ14から適切なデ
ータを取り出してキャッシュ28に入れる。CMU  
26がその物理アドレスの内部キャッシュ内に適切な物
理アドレスを既に持っている場合には、これは比較的簡
単である。物理アドレスが存在していない場合には、C
MU  26は、表の4レベル階層を用いて仮想から物
理的への翻訳を行なう。
【0129】RISCプロセッサアドレスは2つの部分
、即ち、ASI(アドレス空間識別子)ビット及びA(
アドレス)ビットに分割される。CMU  26はシA
SIビットを用い、RISCプロセッサが、正常アクセ
ス、CMU  26レジスタアクセス、または何かほか
のものを行なっているかどうかを決定する。CMU  
26が応答することのないASI値のレンジがある(3
0ないし3F)。本発明においては、これらを用いてバ
イトコードインタプリタレジスタ及び制御記憶にアクセ
スする。CMU  26チップは6つの最小有効ASI
ビットをデコードするだけであるから、0から3Fまで
のASI値だけが有効である。
【0130】CMU  26は1つの大きさのメモリペ
ージ、即ち4096バイトを支持するだけである。ME
SAマシンはページを512バイトであると定義する。 エミュレートMESAシステムにとっては4Kバイトの
ページを用いることがたぶん可能であろう。しかし、こ
れにはかなりの時間を必要とするであろう。もっと重要
なことには、4Kバイトのページはかなりの量の内部断
片化を引き起こす。多くのアプリケーションはメモリを
4Kバイトよりもはるかに小さいブロックとして使用す
る。実メモリが4Kバイトのユニットとして割り当てら
れるならば、多量の実メモリが無駄になるであろう。メ
モリ消費を減らすことが本発明の主要な目的及び利点の
一つである。従って、本発明においては、CMU  2
6に、512バイトの最初のMESAページ大きさを用
いるようにさせる。
【0131】CMU  26チップは主要ブロックであ
るキャッシュ制御装置を有す。キャッシュ制御装置はア
ドレス空間を32バイト行に分割する。キャッシュRA
Mは一時間に2048までのこれら行を記憶することが
できる。キャッシュ制御装置はアドレスを3つの部分、
即ち、タグ(ビット[31..16])、キャッシュタ
グRAMインデックス(ビット[14..5]、及び行
インデックス(ビット[4..0]に分割する。キャッ
シュRAM自体のほかに、キャッシュ制御装置は内部の
2048x16キャッシュタグRAMを有す。アドレス
が現われると、前記制御装置はキャッシュタグRAMイ
ンデックスを用いてキャッシュタグRAMにアドレスす
る。このアドレスからのタグが構内RAMからのタグと
整合すれば、CMUは、キャッシュRAMがこのアドレ
スに対する正しい行を有しているということを知り、ア
クセスを続行させる。タグが整合しない場合には、キャ
ッシュ制御装置は、RISCプロセッサ12を停止させ
、そして適切なデータを見つける。全キャッシュを使用
するには、RISCプロセッサは行オフセット及びキャ
ッシュタグRAMインデックスの全ての値を生成するこ
とができなければならない。例えば、RISCプロセッ
サが可能なキャッシュRAMインデックス値の2分の1
しか生成することができないならば、該RISCプロセ
ッサはキャッシュの2分の1しか使用することができな
い。
【0132】本発明においてはハードウェアにおける5
12バイトページを下記の制限をもって実行する。即ち
、 1.CY7C604 CMU  26チップは4096
までの異なる32ビット仮想アドレス空間を実行する。 各仮想アドレス空間を別々のUNIXプロセスに割り当
てることができる。システムが512バイトページを用
いる場合には、これは128の異なる仮想アドレス空間
に制限する。この制限は余り重要ではないであろう。
【0133】2.本発明においては、各文脈節を28ビ
ット仮想アドレス空間に制限する。これらはバイトアド
レスであるので、これは27ビット非RISC(MES
A)仮想アドトレス空間と等価である。ここでも、これ
は余り重要ではないであろう。エミュレーションモード
及びIOPに対して仕事を簡単にするため、及びメモリ
マップテーブルが余りに大きなスペースを取らないよう
にするため、システムが使用するのは25ビットまたは
26ビット(24ビットまたは25ビットMESAアド
レス空間に対応する)に止めるべきであろう。
【0134】3.CMU  26チップ内の変換索引バ
ッファ(TLB)上のヒット率は低下する。TLB内の
エントリを用いて翻訳することのできるのは4096ア
ドレスではなしに512アドレスに過ぎない。他方、4
KBページ内のスペースの多くが未使用であっても、こ
れが性能を過度に低下させることはない。以上の制限を
説明したので、以下、ハードウェア及びソフトウェアの
インプリメンテーションについて説明する。非RISC
(MESA)仮想アドレスの2つの書式は下記のように
定義される。即ち、 1.固有書式:ビット[31..29]を無視する。ビ
ット28は、ビット[8..0]におけるページオフセ
ットのビット[27..9],,9ビットにおける仮想
ページ番号の0,,19ビットとなる。
【0135】=xxx,,0,,VA[27..9],
,VA[8..0]2.調整済み書式:ビット[39.
.12],,仮想アドレスビット[15..13]にお
ける仮想ページ番号のビット31,,19ビットにおけ
る0はビット[8..0]におけるページオフセットの
ビット[11..9],,9ビットにおいて反復した。
【0136】 =0,,VA[27..9 ],,VA[15..13
],,VA[8..0]RISCプロセッサ12及びキ
ャッシュRAMチップ26は固有書式を見る。CMU 
 26チップはRISCアドレスに接続し、これにより
、CMUも調整済み書式を見るようにする。本発明にお
いては、キャッシュ制御装置に、全キャッシュを使用す
るが、ページが512バイトしか有していないというこ
とをCMUのメモリマッパに考えさせる、ということを
許す。調整済み書式は、両方の目的が整合するようにア
ドレスビットを単に置換する一つの方法である。メモリ
マッパは、RISCプロセッサ12が4096バイトペ
ージの最初の512バイト(256語)を引用するに過
ぎないということを考えて、調整済み書式アドレスを検
分する。エミュレートMESAマシンが512境界を横
切るとき、けた上げはVA.9(調整済み書式における
ビット12)に入り、これにより、CMU  26チッ
プは、RISCプロセッサが4KB境界を横切りつつあ
って所望の次の仮想ページへ行く、ということを考える
【0137】キャッシュ制御装置は、調整済み書式にお
いて、タグ=0,,VA. [27..13]、及びキ
ャッシュタグRAMインデックス=VA.[12..9
],,VA.[15..13],,VA[8..5]で
あるように、調整済み書式アドレスを検分する。調整済
み書式の重要な特徴は、キャッシュタグRAMインデッ
クスの全ての値が通常の使用において生成されるという
ことである。これは、全キャッシュタグRAMを用いる
ことができ、従って全キャッシュ28も同様である、と
いうことを意味する。
【0138】全アドレスを3ビットだけ左へシフトする
ことはできない。CMU26はデータをキャッシュSR
AMチップに書き込み、また下位のアドレスビットをイ
ンクリメントするので、全アドレスを中央で分割するこ
とが必要である。キャッシュRAMアドレスを確実に正
しく生成させるため、RISCプロセッサ12及びCM
U  26は下位のアドレスビット上で整合することが
必要である。
【0139】仮想アドレスに対して調整済み書式を用い
ることは、調整済み書式の実アドレスをMバス上で主メ
モリへ送ることを意味する。即ち、CMU  26は、
ページオフセットの上位の3ビットであると考えるもの
におけるビット[15..13]の冗長複写を通過させ
るからである。実メモリの7/8を無駄にすることを避
けるため、主メモリ制御装置は、ページ番号を右へ3ビ
ットだけシフトすることにより(エキストラビットを抹
消する)、調整済み書式から固有書式へ戻ることが必要
である。このシフト動作は、メモリ制御装置20の設計
の際に考慮しておくことが必要である。
【0140】CMU  26は、ページ表の4つのレベ
ルにおけるアドレスを調べることにより、仮想から実へ
の翻訳を行なう。このプロセスは、 SPARCRIS
C 使用者手引きに記載されている。エミュレータコー
ドはエントリをこの表に入れる。CMU26はこれら表
のアドレスを生成するので、CMUは、これがメモリへ
送るアドレスのビット[11..9]内に有意味データ
を入れようとしてはいけない。メモリ制御装置20はこ
れらのビットを捨てる。それで、CMU  26がこれ
らビットに依存するならば、システムは困った事態にな
る。これらビットが常に空であるということを確かめる
ため、2つの事を確保することが必要である。第1に、
どのページ表も512バイトよりも長くあってはいけな
い。これにより、CMU  26によって使用される表
オフセットは安全レンジ内に保持される。第2に、表内
のポインタを、これらがメモリ14へ送られるときに正
しい調整が行なわれるように、調整済み書式内にセット
アップすることが必要である。
【0141】第1レベルの表は「文脈節」表である。こ
れは、どの32ビット仮想アドレス空間を用いるかを決
定する。これは512バイトよりも長くなく、そして各
エントリは長さ4バイトであるから、システムは最初の
128(=512/4)の文脈節を用いることができる
のみである。第2レベルの表は最大有効8仮想アドレス
ビットによって索引される。これもまたエントリ当たり
4バイトを有す。CMUは、128エントリを有する表
を操作することができるだけであるから、調整済み書式
内の最大有効仮想アドレスビットは0であることが必要
である。調整済み書式への変換により、3ビットが最上
位からシフトされる。そこで、合計4ビットが仮想アド
レスから失われるから、もう1つのビットが0とならな
ければならない。従って、システムは32ビット仮想機
械(VM)から28ビットVMに縮小される。
【0142】第3及び第4レベルの表は、各々が仮想ア
ドレスの6ビットを用いるだけで索引される。従って、
これについては問題はない。これらの表は64* 4=
256バイトよりも長くなってはいけない。表の最初の
3レベルの内容にはページ表ポインタがある。これは[
31..4]の実アドレスビツト、及び[3..0]の
フラグを有す。実アドレス部はビット[35..8]と
なる。(Mバスは36ビット実アドレスを支持する)。 RISCプロセッサはビット[11..9]がMバス上
で空となることを望むので、これらの表に値を入れると
きにソフトウェアは所望の実ページ番号のビット[29
..9]を左へ3位置だけシフトすることが必要である
ように思われる。メモリ制御装置20はこれら分割済み
実アドレスを一緒に後方へ移すことができなければなら
ない。RISCプロセッサは、256K  x  36
  SIMMを用いて(256  x  4  DRA
Mをもって)メモリの8MBまで、または1M  x3
6  SIMMをもって(1M  x  4  DRA
Mを用いて)32MBまで持つことができる。これはペ
ージ表ポインタ及びページ表エントリが次式のように記
憶されるべきことを意味する。即ち、 PIP=0000,,RealAddress.[28
..9],,xxx,,RealAdress.8,,
00,,ET PTE=0000,,RealAddress.[28
..9],,C,,M,,R,,ACC,,ETメモリ
制御装置20はIOPインタフェース24及びディスプ
レイ制御装置22及びCMU  26に対して同じに働
くべきであるから、IOPインタフェース及びディスプ
レイ制御装置はアドレスをMバス上に調整済み書式で置
くことが必要である。IOPインタフェースまたはディ
スプレイ制御装置が調整済み書式アドレスを生成してい
るとき、これらはビットMAD.[11..9]上に何
を置いてもよい。即ち、これらビットは捨てられるから
である。
【0143】CMY7C604  CMU  26は複
数の内部レジスタ及びかなり大量の内部メモリを有す。 これらの位置には、診断のために、及び通常のオペレー
ション最中に、アクセスすることができる。固有書式か
ら調整済み書式へ変換する際に、ハードウェアは、ビッ
ト[28..9]を左へ3だけシフトし、及びビット[
15..13]を、今は空のビット[11..9]内に
複製する。
【0144】内部CY7C604 アドレスのどれも、
16ビットよりも大きいビットを要求するものはない。 この制限された場合において、固有書式から調整済み書
式への変換を、ビット[15..13]とビット[12
..9]とのスワップと考えることができる。従って、
内部CY7C604 位置に対するアドレスを生成する
とき、このアドレスのビット[15..13]及びビッ
ト[12..9]をソフトウェア内で事前スワップし、
CY7C604 によって見られるときにこれらが誤り
なく出て来るようにすることが必要である。例えば、キ
ャッシュタグエントリ60010は、通例、アドレス4
BOx(HEX)(x=do not care ) 
または0100  10110000  xxxxを用
いてアドレスされる。本発明においてこのエントリにア
ドレスするには、ビット[15..13]をビット[1
2..9]とスワップし、0101  0101  0
000  xxxxまたは550x(HEX)を与える
。多くの診断ルーチンが全ての位置を試験する。アドレ
スビットをスワップすることは、位置を試験する順序に
影響を与えるだけである。順序が重要でないならば、ア
ドレスのスワップを無視することができる。通常オペレ
ーション中にチェックすることが必要であるCMU  
26レジスタは、スワップを考慮に入れて定義される定
数を用いてアドレスされる。
【0145】RISCプロセッサに対する命令の簡潔コ
ード化のための前述の方法及び装置は、一つのハードウ
ェアプラットフォームから他のハードウェアプラットフ
ォームへ転送される全てのコンピュータアプリケーショ
ンに適用可能である。詳細に述べると、本実施例は、R
ISC中央処理装置に対して実行するCISC命令セッ
ト(特にMESA命令セット)に書き込まれるプログラ
ムについて説明したものであるが、同じ手続きを他の非
RISC命令セット及び/又は他の非RISCコンピュ
ータハードウェア装置に簡単に適用することができる。 更にまた、他の改善及び追加を前述の装置に対して行な
うことができる。プロセッサのスループット及び実行速
度を高めるため、浮動小数点及び他のコプロセッサシス
テムを含ませることができる。エミュレータマイクロ命
令を特別の制御装置メモリ領域に保持する必要がない。 エミュレータマイクロ命令を、制御記憶内に保持する代
わりにキャッシュするならば、各プログラムは、標準エ
ミュレータに対して私的に定義した追加、または完全に
私的なエミュレータを含むことができる。前述のインプ
リメンテーションは、バイトコードインタプリタがRI
SCプロセッサから完全に分離している状態でのもので
ある。これは、極めてモジュール的な設計を許すという
利点がある。しかし、バイトコードインタプリタをRI
SCプロセッサと併合することにより、データ整列及び
RISCプロセッサパイプライン遅延に対する料金を含
む種々の難点を軽減することができる。
【図面の簡単な説明】
【図1】本発明にかかるバイトコードインタプリタを具
備するRISCコンピュータシステムの論理ブロック線
図である。
【図2】図1に示すバイトコードインタプリタの論理ブ
ロック線図である。
【図3】非RISC飛越しゼロバイト(JZB)命令の
ためのRISCオプコード及び命令バッファ補充のタイ
ミングの説明図である。
【図4】一連の3つの非RISC命令のためのRISC
オプコード及び命令バッファ補充のタイミングの説明図
である。
【図5】適切なRISCオプコードへの変換のための、
マイクロ命令のフィールド上の命令修飾ブロックのオペ
レーションを示す線図である。
【符号の説明】
11  正規RISC命令 12  RISC中央処理装置 13  非RISC命令 14  主メモリ 15  エミュレータマイクロ命令 16  バイトコードインタプリタブロック17  命
令の組合せセット 18  専用エミュレータ制御記憶 34  制御記憶アドレス選択ブロック36  退避マ
イクロ命令アドレスブロック38  命令バッファ 46  命令修飾ブロック

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  一セットのCPU命令(11)を電子
    的に処理するための処理手段(12)を備え、前記セッ
    トのCPU命令(11)の各命令は前記処理手段(12
    )によって処理可能であり、更に、前記セットのCPU
    命令(11)及び一セットの非CPU命令(13)の組
    合せセット(17)を記憶するための記憶手段(14)
    を備え、前記セットの非CPU命令(13)の各命令は
    前記処理手段(12)によって処理不可能であり、更に
    、前記CPU及び前記非CPU命令(11、13)を解
    釈するための解釈手段(16)を備えて成り、前記解釈
    手段(16)は前記処理手段と前記記憶手段との間に接
    続され、前記解釈手段は前記記憶手段(14)に記憶さ
    れている前記セットのCPU命令(11)及び前記セッ
    トの非CPU命令(13)の前記組合せセット(17)
    から命令を検索することが可能であり、前記解釈手段は
    前記検索済み命令を前記処理手段(12)へ送ることが
    可能であり、前記解釈手段(16)は、一セットの中間
    命令(15)を記憶するための中間命令セット記憶手段
    (18)を含んでおり、前記中間命令(15)の各々は
    前記CPU命令(11)と同じビット幅を有し、更に、
    前記セットの非CPU命令(13)の各命令を前記中間
    命令(15)のシーケンスに変換するための第1の翻訳
    手段(34、36、38)と、前記中間命令(15)の
    前記シーケンスの各命令を、前記処理手段(12)によ
    って処理されることが可能な前記CPU命令(11)の
    シーケンスに翻訳するための第2の翻訳手段(46)と
    を含んでいることを特徴とするマイクロ処理システム。
JP33354091A 1990-12-26 1991-12-17 マイクロ処理システム Withdrawn JPH04302329A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US63425090A 1990-12-26 1990-12-26
US07/634250 1990-12-26

Publications (1)

Publication Number Publication Date
JPH04302329A true JPH04302329A (ja) 1992-10-26

Family

ID=24543012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33354091A Withdrawn JPH04302329A (ja) 1990-12-26 1991-12-17 マイクロ処理システム

Country Status (1)

Country Link
JP (1) JPH04302329A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606743B1 (en) 1996-11-13 2003-08-12 Razim Technology, Inc. Real time program language accelerator
JP2004511041A (ja) * 2000-10-05 2004-04-08 エイアールエム リミテッド 変換した命令の再始動
JP2013521551A (ja) * 2010-03-05 2013-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーション マシン状態に基づいた命令の分割

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606743B1 (en) 1996-11-13 2003-08-12 Razim Technology, Inc. Real time program language accelerator
JP2004511041A (ja) * 2000-10-05 2004-04-08 エイアールエム リミテッド 変換した命令の再始動
JP2013521551A (ja) * 2010-03-05 2013-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーション マシン状態に基づいた命令の分割

Similar Documents

Publication Publication Date Title
US5937193A (en) Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US7873814B1 (en) Microcode based hardware translator to support a multitude of processors
US6298434B1 (en) Data processing device for processing virtual machine instructions
US9195786B2 (en) Hardware simulation controller, system and method for functional verification
JP3552443B2 (ja) 2つのアーキテクチャ間でプログラム制御を転送する方法及びシステム
US6606743B1 (en) Real time program language accelerator
US5857094A (en) In-circuit emulator for emulating native clustruction execution of a microprocessor
KR0185988B1 (ko) 멀티프로세서 또는 파이프 라인식 프로세서 시스템에서 데이타의 보존을 확실히 하는 방법
US5321823A (en) Digital processor with bit mask for counting registers for fast register saves
US6230259B1 (en) Transparent extended state save
US20050216701A1 (en) Automatic configuration of a microprocessor
US6718539B1 (en) Interrupt handling mechanism in translator from one instruction set to another
KR20040007562A (ko) 다중 명령어 세트를 사용한 데이터 처리
JPH0564815B2 (ja)
US6691306B1 (en) Use of limited program space of general purpose processor for unlimited sequence of translated instructions
US7089539B2 (en) Program instruction interpretation
JPH0736155B2 (ja) 高速cpuにおけるマイクロ命令スタックのアドレス指定方法および装置
US4734849A (en) Information-processing system having a single chip arithmetic control unit with means for prefetching instructions
IE970146A1 (en) A data processing system having a self-aligning stack¹pointed and method therefor
US6990567B1 (en) Use of internal general purpose registers of a processor as a Java virtual machine top of stack and dynamic allocation of the registers according to stack status
GB2564130A (en) An apparatus and method for controlling execution of instructions
US4812971A (en) Central processing unit for a digital computer
US5404471A (en) Method and apparatus for switching address generation modes in CPU having plural address generation modes
US5537627A (en) Microprogrammable processor capable of accessing unused portions of control store as fast data memory
JPH04302329A (ja) マイクロ処理システム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990311