JPS58191044A - 汎用計算機のエミユレ−シヨン方式 - Google Patents

汎用計算機のエミユレ−シヨン方式

Info

Publication number
JPS58191044A
JPS58191044A JP58063117A JP6311783A JPS58191044A JP S58191044 A JPS58191044 A JP S58191044A JP 58063117 A JP58063117 A JP 58063117A JP 6311783 A JP6311783 A JP 6311783A JP S58191044 A JPS58191044 A JP S58191044A
Authority
JP
Japan
Prior art keywords
chip
instruction
instructions
processor
microprocessor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP58063117A
Other languages
English (en)
Inventor
パ−マ−・ライト・アグニユ−
ジヨセフ・パトリツク・ブオノモ
スチ−ブン・レイ・ホ−タレン
アン・シエイラ・ケラ−マン
レイモンド・エリソン・ロシンガ−
ジエ−ムズ・ウイリアム・ヴアラシナス
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS58191044A publication Critical patent/JPS58191044A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔発明の分野〕 本発明は汎用計算機の命令セットを複数のマイクロプロ
セッサによって実行することができるように該命令セッ
トを分割することに係り、更に詳細に説明すればかかる
命令セットのエミュレーションをマイクロプロセッサに
よって行う際にそのコスト性能比が最大となるように該
命令セットを分割することに係る。
〔先行技術〕
集積回路の最近の発展は著しいけれども、一般に、高性
能計算機は比較的集積度が低い回路を使用することが多
い。この種の計算機については、性能に応じた個別的な
最適化が行われるからである。一般にシリコン拳チップ
の価格は集積度とは無関係であるから、1ゲートあたり
の価格はマイクロコンピュータのほうが高性能計算機よ
りも低くなる◇この結果、「性能は価格の2乗に比例す
る」というグロッシュの法則が成立しなくなり、最大の
コスト性能比を得るには、妥当な時間内に適用業務を遂
行するような小型計算機を使用することが必要になって
きた。
すべての計算機のコスト性能比、特に記憶装置のコスト
を減少させるのに、大規模集積(LS I )回路が主
要な役割りを果してきたことは明らかである。しかしな
がら、LSI回路が一層効果を発揮したのは、簡単なア
ーキテクチャを有する低性能プロセッサのコストを減少
させる点にあった。
かかるLSI回路の特性は、多数の低性能プロセッサ及
び記憶チップを使用して高性能計算機を実現するのに、
有利であると云われていφoしかしながら、このような
実現手法を、単一命令スドリームを処理するように設計
された既存の単一プロセッサの複雑なアーキテクチャに
適用することは困難である。
最近の計算機におけるコス”ト性能比の改善は、主とし
て、集積度が一層向上したLSIチップが利用できるよ
うになったためである01ピツトあたりのコストが減少
した集積度の高いLSIメモリ・チップは、現在では卓
上計算機から高性能計算機まで広汎に使用されている。
しかしながら、集積度の高いLSI論理チップは、性能
が最も低い、従って最も簡単なディジタル装置で使用す
るのが普通である。
たとえば、卓上計算機、電子オープン又は腕時計の論理
部分は必要なメモリ及び入出力インターフェースを含ん
でいるが、かかる論理部分を単一のLSIマイクロコン
ピュータ・チップで実現することができる。また、小型
のパーソナル・コンピュータは、その命令セットを実現
するマイクロプロセッサ・チップと、入出力装置(メモ
リ、キーボード、ディスプレイ、ディスク、プリンタ等
)のインターフェースを実現する他のLSiIチクプと
を使用することによって、容易に具体化することができ
る。これは、ディジタル装置の機能を分割してこれを数
個のLSIチップで実現するようにした1つの例である
。この機能分割は簡単で、直裁的である。というのは、
命令処理機能を単一のチップによって完全に充足するこ
とができるからである。
しかしながら、現在の技術レベルでは、一層強力なディ
ジタル装置の命令処理機能を単一のLSIチップで実現
することは困難であるので、LSI技術をこの種のディ
ジタル装置に適用することはそれほど簡単ではない。1
つの接近方法は、技術が進歩して単一のLSIチップに
複雑なアーキテクチャが実現できるようになるまで、単
に待つことである。この接近方法は、明らかな欠点を有
する。たとえば、市販されている各世代のマイクロプロ
セッサは浮動/J%数点命令を持っていないが。
これは当該マイクロプロセッサのアーキテクチャが設計
当時に利用可能であった技術に基いて決定されたという
理由による。この接近方法の最も重要な欠点は、現在の
技術レベルでは単一のチップに適合できそうもない予定
アーキテクチャの実現を排除するという点にある。すな
わち、従来のように、マイクロプロセッサの各世代ごと
に実質的に新しいアーキテクチャを実現すると、かえっ
てソフトウェア上の問題が必然的に増大することになる
からである。
大型で、一層複雑なディジタル装置にLSI技術を適用
する他の方法は、データ・フロ一部を単一のチップに搭
載し、且つデータ・フロ一部を制御する制御記憶を1個
以上のチップに搭載するように、命令実行機能を分割す
ることである◇この分割方法はLSI技術をデータeフ
ロ一部及び制御記憶へ別々に適用するというものである
。しかしながら、この分割方法は、LSIK、・よパる
°実現手法の重要な利点、すなわちデータ・フロ一部及
び制御記憶をともに同一のチップに搭載するという点を
無視している。殆んどのプロセッサでは、クリチカル・
パスは制御記憶からデータ・フロー部へ、演算結果へ、
そして次のマイクロワード(制御ワード)のアドレスへ
と及んでいる。その時間的長さは、マイクロサイクル時
間を決定し、従って当該プロセッサの命令処理速度を決
定する。
電力消費を一定とした場合、単一のLSIチップにのみ
存在するクリチカル・パスは、導線や多数のチップ/カ
ード間ピン接続を経由しなげればならないクリチカル・
パスよりも一層短いサイクル時間を保証する。
前述の分割方法は、LSI技術に最も適さない要素、す
なわち多数のピンを設けることを必要とする◇たとえば
、データ・フロ一部は制御記憶に対し次のマイクロワー
ドを要求するために少くとも12個のピンを必要とし、
もつと悪いことには。
このマイクロワードな受取るために、16ないし100
個のピンを必要とする。一般に、この分割方法を使用し
て実現されたマイクロプロセッサのマイクロワードは1
6ビツト長に制限され、従って垂直マイクロプログラム
によって一度に1つの動作を制御することができるにす
ぎない。これに対し、もし100ビツト長のマイクロワ
ードを゛利用することができれば、非常に高性能のプロ
セッサを設計することができよう。なぜなら、かかる1
00ビツト長のマイクロワードは、各マイクロサイクル
ごとに複数の動作を制御するような水平マイクロプログ
ラムの採用を可能にし、従って所与の機能を一層少ない
サイクルで遂行することが可能になるからである。ここ
で注意すべきは、前述の分割方法はビット・スライス式
プロセッサ(データ・フロ一部が複数のチップから構成
され且ツ該チップの各々がデータΦフロ一部の特定ピッ
ト群を受持っているようなプロセッサ)へ適用するのに
特に有利である、という点である。一般に、ピット・ス
ライス式プロセッサはバイポーラ技術を利用しているた
めに、その集積度は利用可能なゲートの数又は冷却伸力
によって制限されている。
前述の分割方法をFET技術で実現するのは極めて異例
であって、多くのピンを利用することができ且つチップ
の集積度が所望のプロセッサを実現するのに必要なゲー
トの数に一致する場合に限られる0東芝製のT8800
0′と称する16ビツト・マイクロプロセッサは、これ
らの条件を満足する。このような方法は、実現可能なピ
ット・スライス巾が所望のデータ・フロー全部を包含す
るように拡張されているという点で、ビット・スライス
式設計と考えることができる。
マイクロプロセッサの多くの製造業者は、単一のLSI
チップに搭載可能なものより一層複雑なアーキテクチャ
を実現する必要性に迫られている。
成る製造業者は、設置済みの機械とのソフトウェア上の
互換性を保証するために、既存のアーキテクチャを実現
することを必要とした。また他の製造業者は、既存の1
チツプ・マイクロプロセッサに命令を追加することによ
って、その機能を強化することを考慮した。
たとえば、ディジタル・エクィップメント社は、%FD
P−11”と称するミニコンピユータ・アーキテクチャ
の下位機種を実現することを必要とした。
このため、前述の分割方法を採択し、LSI  11・
と称する4チツプから成る機械をウェスターン・ディジ
タル・エクィップメント社で製造し、次いでディジタル
・エクィップメント社でも製造を開始した。
インテル社は、その’ 8086 ’マイクロプロセッ
サ・システムに浮動小数点命令を追加して計算能力を強
化するために、’ 8087 ’と称するコー・プロセ
ッサを開発した。8o86チツプ及び8087チツプを
含むマイクロプロセッサ・システムは、次のように動作
する。まず、これらのチップは各命令を同時に取出す。
もしこの命令が8086によって実行可能なものであれ
ば、8086はこの命令を実行し、そして両チップは次
の命令を取出す。もしこの命令が8087によって実行
可能なものであれば、8087はこの命令の実行を開始
する。主記憶のアドレスが必要となる通常の状況では、
8o86はこのアドレスを計算し、そ′の結果を808
7と共有するパスに供給する。8087はその命令の実
行を完了するために二のアドレスを使用し、そして8Q
86に対し次ハムAち釦山オ矯虐清56与イ1.1ンL
ムff−&n手ス−かくて、各チップは各命令ごとに確
認を行ってその割当てられたサブセットを実行するが、
8086だけがアドレスを計算するのである。
同様に、ザイログ社は’ zsoo0 ’と称するマイ
クロプロセッサ拳システムに浮動小数点命令を追加する
ために、拡張処理ユニツ) (EPU )を開発した。
zsoo0及び1台板−トのEPUを含むマイクロプロ
セッサ・システムは、次のように動作する。まず、zs
oooが命令を取出す0もしzsoooがこの命令を実
行することができれば、そのようにする0さもなげれば
、zsoo。
はEPUのサービス要求を発生するとともに、当該命令
を調べて決定した識別子(ID)を供給する。成るEP
Uは、このIDをそれ自体のものと認識して、実行を開
始する。このEPUはzsoo0に至る特別の線を使用
することにより、zsoo0に対し必要なデータをEP
Uと主記憶との間で転送するように命令する。このEP
Uが作業を行っている間、zsoooは後続命令を取出
しつつ実行ぞ継続するが、とのEPUのサービスを必要
とする段階に達したとき該EPUが依然、とじて使用中
であれば、該EPUのサービスを待機するために停止す
る。かくて、EPUを起動し且つEPUからのコマンド
に応答するのは、zsoo0の役割シである。このよう
なマイクロプロセッサ・システムでは、実行ステップを
高度に並行させることが可能である。
ナショナル・セミコンダン2社も、’:NS−1600
0 ’と称するマイクロプロセッサ・システムに浮動小
数点命令を追加することを必要とした。
MS−16000は1マスタ′と呼ばt1計算用プロセ
ッサは1スレーブ′と呼ばtている。マスタ及びスレー
ブを含むマイクロプロセッサ・シス″/−ムでは、マス
クが命令を取出し、実行可能であれば、この実行命令を
実行する。取出された命令をマスクが実行できない場合
は、その実行を開始させるためにスレーブを選択する。
マスクは、このような命令及び必要なデータをスレーブ
へ送シ、スレーブからの完了信号を待機し、結果を受取
シ、そして次の命令を取出すように動作を継続する。
かくて、マスクはその実行をスレーブの実行ト並行させ
ることはできないのであシ、またスレーブが何を行って
おシ、何を必要としているかを知っていなければならな
い。
データ・ゼネラル社は、′エクリプス′と称するミニコ
ンピユータ・アーキテクチャeLsIで実現することを
必要とした。この結麦して開発さtた1マイクロ・エク
リプスI シリーズは1チツプ・プロセッサを採用して
おシ、該プロセッサはデータ・フロ一部に加えて、 当
該アーキテクチャの性能に最も大きな影響を与える命令
を実行するための水平マイクロコード(35ビツト)及
び垂直マイクロコード(18ビツト)を含んでいる。こ
のプロセッサは必要に応じて他の命令を実行するために
、チップ内(オン・チップ)の水平マイクロワードを使
用することによって、チップ外(オフ・チップ)の制御
記憶から垂直マイクロコードを呼出すことができる。こ
の方法は、チップ外に制御記憶を設ける方法と命令セッ
トを複数のサブセットにに分割する方法の幾つかの利点
を兼ね備えた、1つの変形例である。
入出力機能を分割して専用のマイクロプロセッサで実現
するとい“う設計手法は一般的であるが、前述の如き最
新のマイクロプロセッサにおける分割方法はまだ一般化
しているわけではない。高性能計算機の分野では、中央
処理ユニットの機能を分割してその各々を別個のプロセ
ッサで実限する手法が採択さnた。その目的とする処は
、固定小数点命令、浮動小数点命令及び10進命令を別
々に実行する複数の実行ユニットを設け、高度の並行動
作を可能とすることによって、最大のスループットを得
ようとする点にある。
〔発明の概要〕
従って、本発明の目的は、クリチカル・パスを最小にす
るような態様で汎用計算機の命令を実現するための方法
を提供することにある。
本発明の他の目的は、クリチカル・パスを単一のLSI
チップに留めるような態様で汎用計算機の命令セットを
実現するための方法を提供することKある。
本発明の他の目的は、LSI技術の利点を最大限に活用
し且つ多種類の特殊チップを設けることを必要とせずに
、汎用計算機の命令セットを効率的に実現するための方
法を提供することにある。
本発明の前記及び他の目的は、汎用計算機のアーキテク
チャを定義する命令セットを複数のサブセットへ分割し
且つ該サブセットの各々をマイクロプロセッサで実現す
ることによって具体化される。アーキテクチャのサブセ
ットを選択的に利用するというこの方法は、1チツプ実
現手法の主たる利点、すなわちクリチカル・バスの各々
を単一のチップに留めるという利点を維持している。そ
の実行時間がシステムの性能に重大な影響を与える命令
サブセットの各々については、対応するマイクロプロセ
ッサ・チップは、当該サブセットの実行に必要なデータ
・フロー通路及び複数のレジスタを含むすべての要素に
加えて、その実行を制御するマイクロコード化 を適用するには、現在の技術レベルで利用可能な1個の
マイクロプロセッサに前述の如き重要なサブセットが適
合するように命令セットを分割すること、すべてのマイ
クロプロセッサ間で制御を速かにやりとりできるように
すること、すべてのマイクロプロセッサ間でデータを転
送できるようにすること、複雑なデータ・フロ一部及び
制御記憶のコピーを経済的に得られるようにすることが
必要である。
〔実施態様の説明〕
特定の目標又は基準を念頭に置くと、汎用計算機のアー
キテクチャは種々の方法でマイクロプロセッサによって
実現することができる。本発明の目標は、下位機種に相
当する汎用計算機のアーキテクチャを実現する際に、そ
のコスト性能比を最適化することである。この目標を達
成するために、マイクロコード化され且つ適当な数の汎
用レジスタ(62ビツト長)を有する、汎用のマイクロ
プロセッサを使用する。モトローラ社の’68000″
と称する16ビツトのマイクロプロセッサはこれらの条
件に合致しているので、以下ではこれが選択されたもの
として説明する。このマイクロプロセッサが選択された
のは、HMO8及びそれと同等のFET技術によって汎
用計算機のアーキテクチャを単一のチップに実現するに
は、まだ数年を要すると思われるからである。
本明細書で使用する1汎用計算機のアーキテクチャ′又
は1汎用計算機の命令セットlという用語は、豊富な命
令セット(たとえば200〜300程度)を有し、ワー
ドΦサイズが比較的大きく(たとえば、4バイト程度)
そして例外処理を完全に処理しうるような汎用計算機の
アーキテクチャ又は命令セットを表わす。IBM社の4
531プロセツサは、このような汎用計算機の下位機種
に相当するものと考えることができる。また、本明細書
で使用する1システム1570 ’という用語は、IB
M社によって製造中の一連の計算機であって、前述の汎
用計算機の定義に該当するものを表わす0さらに、1ク
リチカル・バス”という用語は、制御記憶からデータ・
フロ一部へ、演算結果へ、そして次のマイクロワードの
アドレスへ至る通路を規定する。その時間的長さはマイ
クロサイクル時間を決定し、従って当該プロセッサの命
令処理速度を決定する。電力消費を一定とした場合、ク
リチカル・バスが1個のLSIチップに留まっていると
、そのサイクル時間は、導線や多数イ のチップ/カード・ピンを経由しなければならないよう
なりリチカル・バスのそれよりも一層短くなる〇 単一のチップに汎用計算機を実現するという問題を解決
するための以下の接近方法は、計算機の命令処理部分に
制限される・これらの接近方法は命令処理部分にローカ
ル・バスを設け、このローカル・バスを介して1個以上
のマイクロプロセッサが互いに通信することができるよ
うに、またローカル記憶とも通信することができるよう
にしている。さらに、この命令処理部分が入出力装置及
び主記憶と通信することができるように、このローカル
・バスはグローバル・バスへ接続サレウルものとする。
他の時間には、このローカル記憶中はグローバル・バス
から切断されるので、これらのバスを介して別個の通信
を行うことができるOA0重複する2つのサブセット 第1図に示すように、汎用計算機のアーキテクチャを分
割するという第1の接近方法は、該アーキテクチャの重
複するサブセットを実現するように特別にマイクロコー
ド化された2台のマイクロプロセッサA1及びB1を使
用する。但し、以下では説明を簡単にするため、特に断
わらない限り「マイクロプロセッサ」を単に「プロセッ
サ」と称することにする。プロセッサA1及びB1の各
々はチップ内マイクロコードを搭載しており、これは’
 68000 ’の標準マイクロプログラムの代りに使
用される。この接近方法では、重複するエミュレーショ
ンは次のようにして行われる0汎用計算機のアーキテク
チャは3つのサブセットP1、Ql及びR1へ分割され
、そのうち使用頻度が大きい殆んどの命令はサブセット
P1に置かれる。
ここで、本明細書で使用する1使用類度が最も大きい命
令l若しくは電位用頻度が大きい命令′又はこれと同様
の意味を有する用語は、代表的な1群のユーザ・プログ
ラムが汎用計算機で実行されろどき、その結果的な命令
ミックスにおいて最も多く使用されるような命令を表わ
す。この接近方法では、かかる使用頻度が大きい命令の
うち出現頻度の比率が約95%であり且つ実行時間の比
率が約70%であるような命令が基本サブセットPIK
グループ化されうる〇 第1図に示すように、サブセットP1及びQlの組合せ
に対するマイクロコードはプロセッサA1に常駐するよ
うに作成され、七ツ)Pl及びR1の組合せに対するマ
イクロコードはプロセッサB1に常駐するように作成さ
れる0所与の時間には、これらのプロセッサのうち一方
のプロセッサのみが活動的であって、他方のプロセッサ
は受動的である◇活動プロセッサのみが命令の取出し及
び実行を行うとともに、バスを制御するOこれらのプロ
セッサ間には、競合は存在しない。
この接近方法では、諸機能は次のようにして行われる0
ここで、複数の最終命令の全部がサブセットP1又はQ
lのいずれかにあったものと仮定する0かくで、プロセ
ッサA1は活動的であり、プロセッサB1は受動的であ
る。従って、プロセッサA1の内部値(命令カウンタ、
汎用レジスタ、条件コード等)は現在値を反映している
のに対し、プロセッサB1の内部値はそうではない。も
し次の命令がサブセラ)R1中にあれば、プロセッサA
1はこの命令を取出して次の動作を遂行する01)サブ
セットP1又はR1中の任意の命令を実行するためにプ
ロセッサB1が必要とするようなプロセッサA1のすべ
ての内部値を、ローカル記憶中のメールΦボックスへ置
く。
2)プロセッサB1に対し、活動プロセッサになるよう
に通知する。すなわち、プロセッサB1に対し、メール
・ボックスから新しい内部値を読出し、命令がサブセッ
トR1又はPlに留まる限りこれらの命令を実行するよ
うに通知する。
6)次いで、プロセッサB1から通知を受取るまで、受
動プロセッサとなる。プロセッサB1から、内部イ直を
読出し且つサブセットQ1中の命令を実行するように通
知されると、プロセッサA1はサブセラ)R1中の次の
命令に達するまですべての命令の実行を継続する。
これらのサブセラ1−P1、Ql及びR1は、次の基準
に基いて選択される。第1に、使用頻度が大きいすべて
の命令をサブセラ)Plに置く。このサブセラ)Plは
両プロセッサに共通であり、従って活動プロセッサ及び
受動プロセッサのスワップ回数を著しく減少させるとい
う点で有利である。このことが望ましいのは、スワップ
相互間で複数の命令が(あたかも単一プロセッサのマイ
クロコードで実現されたかの如く)高速度で実行される
からである。第2に・プロセッサ・スワツピングの回数
を更に減少させるために、サブセットQ1及びR1中の
命令が数多にインターリーブしないようにこれらのサブ
セットQ1及びR1が選択される。
命令セットを分割するための1つの適切な方法は、サブ
セラ)PIK固定小数点命令、ブランチ命令及びロード
命令を含ませ、サブセラ)Qlに浮動小数点命令を含ま
せ、そしてサブセットR1に10進命令及び特権命令を
含ませる、というものである0第1に、固定小数点命令
、ブランチ命令、ロード/記憶命令は、代表的な汎用計
算機の命令ミックスにおいて実行時間の約75%を占め
る。
第2に、浮動小数点命令゛、ブランチ命令及びロード命
令と固定小数点命令又は10進命令とは互いにインタリ
ーブすることが多いけれども、浮動小数点命令と10進
命令とのインタリーブは極めて少ない。従って、サブセ
ラ)Pi、QlaびR1を前述のように選択すれば、活
動プロセッサ及び受動プロセッサのスワツピングに起因
する性能低下は殆んど無視することができる。事実、同
一の適用業務において浮動小数点命令と10進命令の両
方を必要とすることは殆んどないので、プロセッサA1
又はB1の一方のみを含む専用システムが望ましい場合
もある。
サブセラ)Q IJびR1中の命令がしばしばインタリ
ーブするように選択がなされたにも拘わらず、これらの
命令が独立的な内部値修正特性を有するようであれば、
プロセッサ・スワツピングのオーバヘッド時間を短縮す
るために追加の方策を講することができる。これは、受
動プロセッサにサブセットP1中の命令を実行させると
ともに、活動プロセッサにパスを監視させ且つその内部
値を更新させるようなものである(但し、活動プロセッ
サはパスを制御したり1、外部値に影響を与えることは
できない)。さらに、受動プロセッサはそれ自体のマイ
クロコードで実現されていないような命令を解読するこ
とにより、かかる命令の各々が命令カウンタ及び条件コ
ードを除くその内部値に影響するか否かを調べるように
されるOもしそうであれば、受動プロセッサは成るピッ
トをセットすることにより、該プロセッサが再び活動プ
ロセッサになるときメール・ボックスから内部値を読出
さねばならないことを指示する。もしこのビットが依然
としてリセットされているときに、この受動プロセッサ
が活動プロセッサになれば、該プロセッサはメール中ボ
ックスをアクセスして命令カウンタ及び条件コードの値
のみを読出すことになろう。このような方法はスワツピ
ングの回数を減少させないけれども、活動プロセッサ及
び受動プロセッサをスワップするに必要な時間を減少さ
せることができる。
ここで注意すべきは、前述の分割方法は各マイクロプロ
セッサ・チップのクリチカル・パスを最小に維持すると
いう点である。本明細書で使用する1クリチカル・パス
lは、第2図に示すように、制御記憶からデータ・フロ
一部へ、演算結果へ、そして次のマイクロワードのアド
レスへ及んでいる。クリチカル・パスの時間的長さはマ
イクロサイクル時間を決定し、従って当該プロセッサの
命令処理速度を決定する。
第2の接近方法は、第3図に示すような4台のマイクロ
プロセッサを使用する。4台のうち3台は1次プロセッ
サA2並びに2次プロセッサB2及びC2であって、モ
トローラ社の’ 68000’に搭載された標準マイク
ロプログラムの代わりに特別のチップ内マイクロプログ
ラムを搭載したものである01次プロセッサA2は、す
べての命令に対する命令サイクル(命令取出し、解読及
び実効アドレスの計算)と、固定小数点命令、ロード命
令及びブランチ命令に対する実行サイクル(命令実行)
とを実現するために使用される01次プロセッサA2の
レジス゛り空間は、汎用レジスタのために使用される。
注意すべきは、そのチップ内マイクロコードは汎用レジ
スタを使用することが多いすべての機能を実現しており
、従ってクリチカル・パスは1チツプ内に留まっている
という点である。2次プロセッサB2は、浮動小数点命
令に対する実行サイクルを実現するために使用される0
2次プロセッサB2に存在するレジスタ空間の半分は浮
動小数点レジスタのために使用され、他の半分は作業空
間のために使用される02次プロセツサB2のマイクロ
コードは、レジスタ及び制御すべきデータ・フロ一部と
同じチップに搭載されている。代替的に、浮動小数点命
令を高速度′で実行することができる別種のマイクロプ
ロセッサ・チップを利用してもよいが、これはそのデー
タ、フ。一部が、殆んどの浮動小数点変数を並行処理す
るに十分な巾を有しているからである。2次プoセッサ
C2は、10進命令に対する実行サイクルを処理するた
めに使用される。10進命令は記憶載量命令であるから
、2次プロセッサC2のすべてのレジスタ空間は作業空
間のために利用することができる。
最後の2次プロセッサD’2は既存のマイクロプロセッ
サであって、モトローラ社の’ 68000 ’の命令
セットを実現した標準マイクロコードを搭載している。
マイクロコードによって実現されないシステム1570
アーキテクチヤの部分、すなわち特権命令、例外又はエ
ラー条件、アドレス変換ミス及び割込み処理は、別個の
ローカル記憶に置かれた’ 680001の命令シーケ
ンスによってシミュレートされる。この方法が適切であ
ると考えられる所以は、これらの命令及び機能は使用頻
度が小さいために高速性が必要とされないこと、エラー
を招きがちであるために初期のモデルはこれらを容易に
変更可能なPROMK置くのが望ましいこと、膨大とな
るために’ 680001の垂直マイクロコード言語で
作成するよりも’68000’の機械言語で作成するほ
うが経済的である、ということになる。
これらの4台のマイクロプロセッサを含むシステムは、
次のように動作する。1次プロセッサA2は命令を取出
す。もし1次プロセッサA2が取出された命令を実行す
ることができれば、そのようにする0さもなければ、1
次プロセッサA2は2次プロセッサB2又はC2へ制御
を渡す0すなわち、まずローカル記憶の予定位置に命令
コードや実効アドレスの如き必要なデータが置かれ、次
いで4状態回路から成るプロセッサ選択論理へ新しい値
がセットされる。プロセッサ選択論理の状態は、4台の
マイクロプロセッサ及びそのローカル記憶をシステムの
残りの要素へ並列に接続するようなローカル・バスを制
御すべきマイクロプロセッサを決定する。選択された2
次プロセッサは、与えられた命令の実行を完了するまで
、ローカル・パスを完全に制御し且つ主記憶及び入出力
装置に対する完全なアクセスを有する0次いで、この2
次プロセッサは元の値をプロセッサ選択論理ヘセットす
るとともに、1次プロセッサA2へ制御を戻す0この時
点で、1次プロセッサA2はローカル記憶中の戻りコー
ドを調べ、その内容に応じて次の命令を取出すか、又は
既存の2次プロセッサB2に制御を渡して命令エラーの
処理を行わしめる。ここで注意すべきは、この制御機構
は、浮動小数点命令又は10進命令を受持つ2次プロセ
ッサB2又はC2がエラーを検出した命令を完了するた
めに既存の2次プロセッサB2を要求することを許容す
るという点である。かくて、膨大であるけれども性能に
重大な影響を与えないエラー処理機能は、2次プロセッ
サB2又はC2の貴重な制御記憶空間を占有する必要は
ない。
この接近方法が有利であることは、代表的なジョブ中ミ
ックスを実行する場合、1次プロセッサA2の実行時間
の比率が75チ以上にも達し、そして20命令のうち1
命令だけを2次プロセッサに渡すにすぎないことから明
らかであろう。
第4図に示すように、第6の接近方法は第2の接近方法
と類似するが、特別にマイクロコード化された1台のマ
イクロプロセッサA6と標準マイクロコードを搭載した
既存のマイクロプロセッサB6だけを利用する。この接
近方法は、柔軟性及び拡張性を維持しつつ、最も重要な
機能に対するチップ内マイクロコードの優れたコスト性
能比と、それほど重要でない機能に対するチップ外マイ
クロコードの低い開発コストとを組合せたものである。
この接近方法は第4図に示した構成を使用し、次のよう
に動作する。1次プロセッサA3は、汎用レジスタ及び
該汎用レジスタを頻繁に使用するすべての機能に対する
マイクロコードを搭載している。1次プロセッサA3は
、すべての命令に対する命令サイクルを遂行し、また使
用頻度が最も大きい命令、すなわち浮動小数点命令、1
0進命令及び特権命令を除く殆んどすべての命令に対す
る実行サイクルをも遂行する。代表的な命令ミックスの
場合、1次プロセッサA6が実行する命令の出現頻度の
比率は、約9596であり、実行時間の比率は約50%
である。1゛次プロセッサA3はすべての命令に対する
命令サイクルをも遂行するので、その実行時間の比率は
実際には50チ以上になる。
また1次プロセッサA3は、そのマイクロコードによっ
ては実行できないような命令を検出した場合、かかる命
令の実行を完了するために2次プロセッサB3へ制御を
渡す。10進命令、浮動小数点命令及び特権命令の殆ん
どは比較的大量のデータを処理するが、代表的な命令ミ
ックスでは使用されることが非常に少ない。従って、1
次プロセッサA3と2次プロセッサB3間で制御をやり
とりする時間は、比較的小さい。2次プロセッサB5は
、ローカル記憶に保持されたコードの制御下で、必要な
処理を行う。ローカル記憶は、浮動小数点レジスタの如
き他のレジスタ及びメール・ボックスを含む。各プロセ
ッサが制御をやりとりするとき、命令コード、オペラン
ド・アドレス、条件コード及び他の必要なデータがメー
ル・ボックスに置かれる。任意の時間には、1台のプロ
セッサのみがランしているにすぎないから、2プロセツ
サの制御は簡単である。並行動作は存在せず、バス競合
も存在しない。一方のプロセッサは、バスを使用すべき
プロセッサを決定する2状態ラツチを反転することによ
って、他方のプロセッサへ制御を渡すことができる。
ここで注意すべきは、既存の2次プロセッサB3、すな
わちモトローラ社の′″68000 ’は高レベルの機
械言語を実現するために成功裡に使用されてきたという
点である。この接近方法を使用した場合、汎用計算機の
殆んどのアーキテクチャをかかる機械言語でコード化す
ることができるO低レベルのマイクロコード言語でコー
ド化する場合に比較すると、かかる機械言語によるコー
ド化は迅速であるばかりか、経済的でもある。さらに、
このようにして作成されたコードはワーカル記憶に置か
れるので、マイクロプロセッサ・チップに常駐するマイ
クロコードと比較すると変更が容易である0但し、その
欠点は命令を実現したコードの実行時間が、同じ命令を
実現したマイクロコードのそれよりも長くなる、という
点にある。従って、マイクロコードで実現された使用頻
度が大きい命令と、コードで実現された使用頻度が小さ
い命令との間には、性能上の不釣合が存在する。
D、エミュレーションを伴つサブセット第5図に示すよ
うに、第4の接近方法は、単一のマイクロプロセッサ・
チップに搭載することができないアーキテクチャの部分
を実現するために、ソフトウェアに著しく依存している
0この接近方法を使用するためには、まず汎用計算機の
アーキテクチャの適切なサブセットP4を定義し、この
サブセラ)P4をマイクロプロセッサ・チップの1機械
′アーキテクチャとして実現し、次いで、このサブセラ
)P4のレベルを汎用計算機のアーキテクチャのレベル
へ持上げるような第1ソフトウェア層を作成することが
行われる@サブセットP4は、第1ソフトウェア層がシ
ステムの保全性を含む汎用計算機のアーキテクチャの残
り部分をシミュレートすることができるように、十分な
命令及び機能″を持たなければならない〇成る適用業務
では、このよう□な第1ソフトウェア層は不要である。
システム/370で導入された新しい機能を使用しない
ようなシステム/360の成るソフトウェアを、マイク
ロプロセッサ・チップの機械インタフェースで直接的に
ランさせることができるかもしれないし、選択されたサ
ブセットが、インテリジェント端末、インテリジェント
・プリンタ及びテスト装置制御の如き適用業務について
は十分であるかもしれないからである0完全なゞ適用業
務機械′は、サブセットの存在を知ることがない顧客又
はユーザのために作成することができよう・他の適用業
務では、欠落している命令をサブルーチン呼出しによっ
てコンパイル時に置換えることができる。残りの適用業
務では、オペレーティング・システムは気無効動作′型
のプログラム割込みを直近上位のソフトウェア層へ渡す
かわりに、欠落命令をシミュレートすることによってか
かる割込みを処理するような第1ソフトウェア層を有す
ることができる。
不十分な制御記憶空間という問題に対するこの解決策は
、ハードウェア開発のコスト、リスク及び時間を最小に
するという利点を有し、また選択されたサブセットのみ
を利用する適用業務については優れたコスト性能比を保
証する。しかしながら、この解決策は、ソフトウェア・
シミュレーションにおける欠落命令の出現頻度がばらつ
くという欠点と、割込みの最大待ち時間が増大するとい
う欠点を有する。
E、チップ外の垂直マイクロコード 残りの5つの接近方法は、2レベルのマイクロコードな
利用する。第6図に示した第5の接近方法は、それぞれ
巾が異なる2レベルのマイクロコードを使用するという
利点を有する。既存のマイクロプロセッサは、単一のチ
ップに制御記憶及びそれが制御するデータ・フロ一部を
搭載することによって、優れたコスト性能比を達成して
いる。
もしこの制御記憶が1垂直lマイクロコードではなく、
′水子′マイクロコードを保持するものであれば、コス
ト性能比を一層向上させることができる0このように、
水平型制御記憶は殆んどの解読動作を不要にするから、
複雑さ及び伝播遅延がともに減少することになる。さら
に、水平型制御記憶は複数の動作を同時に制御すること
ができるので、これによって性能が改善される。しかし
ながら、一般に水平型制御記憶は、所与の機能を実現す
るために、垂直型制御記憶よりも多いピットを保持しな
ければならない。本明細書で使用する1垂直′型制御記
憶又はマイクロコードという用語は16ピツト長程度の
マイクロワードを使用することを表わし、気水平′型制
御記憶又はマイクロコードという用語は100ビツト長
程度のマイクロワードを使用することを表わす。本発明
の実施態様では使用しないが、これらの間には32ビッ
ト長程度の中間的なマイクロワードがある。
水平型制御記憶の問題に対する共通の解決策は、モトロ
ーラ社の’ 680001と称するマイクロプロセッサ
に関連して説明されている。この解決策は、水平型制御
記憶に置かれている情報の冗長度が大きいこと、すなわ
ち多くのマイクロワードが同じピットを有していること
に基づいている。
この解決策は、水平型制御記憶と垂直型制御記憶とを設
けようとするものである。水平型制御記憶は、データ・
フロ一部が必要とする少数の、非冗長制御ビット・パタ
ーンを保持する◇垂直型制御記憶は、多数の機械命令を
通して順序づけるに必要な、多数の制御ビット・パター
ンを保持する〇このような接近方法は、モトローラ社の
”680001については、その制御記憶全体のサイズ
を約半分に減少させると云われている〇 この接近方法によったとしても、既存のマイクロプロセ
ッサに設けられたチップ内制御記憶は、汎用計算機のよ
うな複雑なアーキテクチャを実゛現するに必要なすべて
のマイクロコードを収容するには、十分でない。それに
も拘わらず、水平マイクロワードを転送するに必要な多
数のビン又はバス・サイクルを排除するために、すべて
の垂直マイクロコードをデータ・フロ一部と同じチップ
へ搭載することがコスト性能比の点で非常に有利であり
、そしてこのことが困難であるとしても、殆んどのマイ
クロサイクルにおいてチップ外にあるバスへのアクセス
を回避するために、使用頻度が最も大きい垂直マイクロ
コードをデータ・フロ一部と同じチップへ搭載すること
がコスト性能比の点で有利である。すなわち、汎用計算
機のアーキテクチャをマイクロプロセッサで実現するに
あたって、使用頻度が小さい垂直マイクロコードのみを
マイクロプロセッサ・チップの外部に記憶すればよいの
である。
かかる実現手法は、解決すべき2つの設計問題を惹起す
るが、これらの問題は次のようにして解決される。第1
に、チップ内垂直マイクロコードからチップ外垂直マイ
クロコードへのブランチを行うために、マイクロプロセ
ッサの出力ピンに接続されたラッチをセットするように
し、チップ内垂直マイクロコードをたとえば51′2マ
イクロワードへ制限してアドレスが511を超えるマイ
クロワードについてはブランチを生ぜしめるようにする
とともに、チップ外垂直マイクロワードのブランチ・ア
ドレスをデータ・バスヘセットした後にチップ内垂直マ
イクロワードの最上位アドレスへブランチを行うように
する。第2に、条件付きブランチをステータスψビット
に依存して行うために、データ・バス又は他の専用ビン
が次の垂直マイクロワードを当該チップに転送する前に
、チップ外のステータス・ビットをこのデータ・バス又
は専用ピンを介して転送するか、又は水平マイクロワー
ドのブランチ制御フィールドを使用して所定のステータ
ス情報を選択し、そして次のチップ外垂直マイクロワー
ドのアドレスの下位2ビツトを当該チップから転送する
ようにする〇ここで注意すべきは、殆んどの水平マイク
ロワードはチップ内及びチップ外の垂直マイクロワード
の両方によって使用されることが多い、という点である
。しかしながら、特別に作成された幾つかの水平マイク
ロワードは、チップ外垂直マイクロワードで使用するた
めに当該チップへ置かれねばならない。すなわち、チッ
プ外の垂直制御記憶から見たマイクロプロセッサは、一
般的で且つ柔軟性のある垂直マイクロコード言語を解釈
しなければならない。このことは汎用計算機の複雑なア
ーキテクチャを実現するための能力を与える0チツプ内
垂直マイクロコードは、かかるアーキテクチャの使用頻
度が最も大き℃・部分について、非常に優れた性能を約
束する〇 ここで説明した分割方法の他の利点は、最小のサイズに
対するコード化が不要であるために高速度のマイクロコ
ード化を許容する点、最初の製品について作成されたチ
ップ外垂直マイクロコードを、後の製品に設けられた一
層大容量のチップ内垂直制御記憶に置くことが可能にな
る点、有用な1組の水平マイクロワードを選択し、次い
でこれらを垂直マイクロワードとつなぎあわせるという
、マイクロプログラミング手法の採用を可能にする点に
ある。
F、チップ外の水平マイクロコード 第7図に示す第6の接近方法は、同じ巾を有する2組の
マイクロワードを利用している。第1組のマイクロワー
ドはマイクロプロセッサ・チップに搭載され、非常に高
速度で実行される。第2aのマイクロワードは外部の制
御記憶に保持され、従って非常に長くなってもよい0代
表的な命令ミックスでは、固定小数点命令、ブランチ命
令及びロード命令の出現頻度の比率は95%にも達し、
実行時間の比率は60%ないし75%に達する◇かくで
、これらの命令はこの分割方法に従ってチップに搭載す
ることに適している。チップ外制御記憶に保持された残
りのマイクロワードは、実行に際し1つずつ当該チップ
へ転送される。これはマイクロワード・ビットに対する
既存のアドレス及び/又はデータ書ピンを使用して複数
のサイクルで行うことができ、また専用ビンを使用して
゛行うこともできる@テップ外制御記憶は、データ・フ
ロ一部が必要とするマイクロワード・ビット及びシーケ
ンサが必要とするマイクロワード選択ビットの両方につ
いて、十分な巾を有してぃなけれハナらない0チツプ外
制御記憶のシーケンサは、マイクロプログラムの条件付
きブランチを遂行するためとチップ内及びチップ外の機
能及び命令の間で制御をやりとりするために、チップ外
ステータス情報をアクセスすることかでとなければなら
ない。
汎用計算機の複雑なアーキテクチャを実現するために必
要なこのマイクロコード分割方法は、複雑さが制限され
ていないアーキテクチャを、十分に大きいチップ外制御
記憶によって実現しうるという利点を有する。また、ア
ーキテクチャの複雑な部分をチップ外に置き、そこでマ
イクロプロセッサ・チップ自体を変更することなくこれ
らの部分を訂正することができる0さらに、このように
して実現された製品の後の製品が一層大きいチップ内制
御記憶を備えている場合には、前者の製品について作成
されたチップ外マイクロコードをチップ内に搭載するこ
とができる。ここで注意すべきは、エラーが見出された
場合のチップ内マイクロコードに対するバッチ(つぎ当
て)はチップ外マイクロコードで実現しうる、という点
である〇チップ外の命令はチップ内の命令と同じマイク
ロプロセッサで実行されるから、これらの命令はレジス
タ、条件コード及び機械の他の機構を完全にアクセスす
ることができ、これにより他の利点を与える0また、主
記憶及びチャネルに対するすべてのアクセスが同一のマ
イクロプロセッサによって行われるということも、これ
とは別の利点を与える◇ チップ内及びチップ外の制御記憶の間でマイクロコード
を分割するというこの接近方法は、使用頻度が最も大き
い命令についてマイクロプロセッサと同等のコスト性能
比を保証する。というのは、チップ内マイクロコードに
関連するクリチカルーパスが短くなるだけでなく、残り
の命令及び機能カル・ハxト同v、の・辷層長いクリデ
カル。パスを有するビット・スライス式マイクロプロセ
ッサと同等のコスト性能比で実行することができるから
である。
G、基本動作を伴うサブセット 第8図忙示した最後の接近方法は、困難で長い開発プロ
セスを犠牲にして非常に経済的なプロセッサを提供する
。この接近方法の最も困難な側面は、適切な1基本’(
Primitive )動作を定義することである。原
理的に云えば、汎用計算機の固定小数点命令、ブランチ
命令及びロード/記憶命令に対するチップ内マイクロコ
ードな搭載するマイクロプロセッサは、前述のD章で説
明したように、汎用計算機のアーキテクチャのうち残り
の部分をエミュレートするようにプログラムすることが
できる。実際には、チップ外コードによってエミュレー
トされる命令及び機能の性能は、比較的劣っている。同
じチップ内制御記憶空間を占有しうる幾つかの命令の代
わりに、複数の1基本′動作をマイクロコード化すると
、完全な命令ミックスについて著しく高い性能を得るこ
とができる。
基本動作それ自体は汎用計算機の命令ではなく、一層複
雑な命令又は機能のエミュレーションに有用な簡単な機
能を実行するものである。もしエミュレーション・プロ
グラムが汎用計算機の命令に加えてかかる基本動作を使
用することができれば、その性能は一層向上する。基本
動作の例としては、命令フィールドの内容をレジスタに
ロードする動作、演算結果に従って条件コードをセット
する動作、実効アドレスを計算する動作、等が挙げられ
るO 汎用計算機のアーキテクチャをマイクロプロセッサで実
現するというこの方法自体は、マイクロプロセッサの命
令コード空間を次の3つのす7”−1=ニットへ分する
ことによって実現される◎P7:使用頻度が大きい命令
のコード。その各々は、チップ内マイクロコードのシー
ケンスによって実現される。
Q7:命令をエミュレートするに有用な基本動作へ割当
てられるコード@その各々は、チップ内マイクロコード
のシーケンスによって実現される。
R7:使用頻度が小さい残りの命令のコード@その各々
は、使用頻度が大きいサブセットPZ中の命令及びサブ
セラ)Q7中の基本動作のシーケンスによって実現され
るO 動作について説明すると、まず命令ストリームが主記憶
から取出される。これらの命令コードが前述のサブセラ
)P7に属する限り、その実行はチップ内マイクロコー
ドによって制御される0このモードでは、サブセットQ
7中のコードは無効である@サブセットR7中の命令コ
ードが検出された場合、この命令の実効アドレス生成を
含む命令サイクルが完了した後、チップ内マイクロコー
ドの直接実行が終了する。この命令コードは専用命令記
憶における開始アドレスを選択し、かくてマイクロプロ
セラ°すはこのアドレスからその次の“命令′を取出す
。この亀命令rはサプセツ)P7又はQ7に属するので
、これはチップ内マイクロコードを起動する。このシー
ケンスはチップ内マイクロコードの他のシーケンスを起
動する他の1命令′を取出すことによって終了し、引続
いてサブセットRZ中の命令が完全にエミュレートされ
るまで、前述と同様の動作が行われる。次いで、専用命
令記憶からではなく、主記憶から次の命令が取出される
・この命令もまた、チップ内マイクロコードのシーケン
スによって直接的に実行されるか、又は専用命令記憶中
の1命令′によってシミュレートされる。後者の命令は
チップ内マイクロコードのシーケンスによって実行され
る。
ここで注意すべきは、サブセットRZ中の使用頻度が小
さい命令をプログラムするために使用されるエミュレー
ション・モードは、次の特性を有するという点である0
このモードでは、′命令′は主記憶からではな(、専用
命令記憶から取出される0サブセツトR7中の命令をエ
ミュレートしている間、命令カウンタは歩進されず、そ
してサプセツ)P7及びQZ中のコードは有効である。
また、サブセットRZ中の1つの命令をエミュレートす
るすべての1命令“が完了されるまで、割込みは保留さ
れねばならない。サプセツ)R7中の命令をエミュレー
トするためにサブセットQ7中の基本動作とともに使用
されるサプセツ)P7中の所与の命令は、条件コードを
変更したりそれらの通常の例外状態を取ることを禁止さ
れる。
汎用計算機のアーキテクチャをチップ内マイクロコード
とチップ外マイクロコードに分割するというこの方法の
利点は、次のとおシである。サブセットRZ中の命令は
、比較的少ないバス・サイクルを使用してエミュレート
することができる。
1又は2バス・サイクルによって専用命令記憶から転送
されるゝ命令“は、バス・サイクルを必要としないマイ
クロワードのシーケンスを起動する。
’ TRANSLATEAND TEST’ (翻訳テ
スト)のような複雑な命令の暗示レジスタ又は割込みの
暗示記憶アドレスが必要とする一定のデータは、専用命
令記憶から取出された1命令′の即値フイ*ランクーキ
ー (7が最良): P:性 能 B: 製造コスト D: 開発コスト R: 実現可能なアーキテクチャの豊富さ
【図面の簡単な説明】 第1図は汎用計算機の命令セットを重複する2つのサブ
セットへ分割するようにした本発明の第1の接近方法を
示す図、 第2図は計算機のクリチカル・パス、特に本発明によっ
て包含されるクリチカル・パスを示す図、第3図は汎用
計算機の命令セットを4つのサブセットへ分割し、その
うち6つのサブセットをチップ内マイクロコードで実現
し、残りのサブセットをローカル記憶に保持された高レ
ベルの命令で実現するようにした本発明の第2の接近方
法を示す図、 第4図は汎用計算機の命令セットを2つのサブセットへ
分割し、一方のサブセットをチップ内マイクロコードで
実現し、他方のサブセットをローカル記憶に保持された
高レベルの命令で実現するようにした本発明の第3の接
近方法を示す図、第5図は汎用計算機の命令セットを分
割する際、1つのサブセットだけをチップ内マイクロコ
ードで実現するようにした本発明の第4の接近方法を示
す図、 第6図は汎用計算機の命令セットを分割する際、予定の
垂直マイクロコードをマイクロプロセッサ・チップの内
部及び外部に分散配置するようにした本発明の第5の接
近方法を示す図、 第7図は汎用計算機の命令セットを分割する際、予定の
水平マクロコードなマイクロプロセッサ・チップの内部
及び外部に分散配置するようにした本発明の第6の接近
方法を示す図、 第8図は汎用計算機の命令セットを分割する際。 1つのサブセット及び基本動作の集合をマイクロプロセ
ッサ・チップに搭載するようにした本発明の第7の接近
方法を示す図である〇 第1頁の続き 0発 明 者 アン・シエイラ・ケラーマンアメリカ合
衆国ニューヨーク州 エンディコツト・シュイラー・ ドライブ1047番地 (M−明 者 レイモンド・エリソン・ロシンガー アメリカ合衆国ニューヨーク州 エンディコツト・リッジフィー ルド・ロード204番地 0発 明 者 ジエームズ・ウィリアム・ヴアラシナス アメリカ合衆国ニューヨーク州 エンディコツト・ボスウェル・ ヒル・ロード338番地

Claims (1)

  1. 【特許請求の範囲】 汎用計算機の命令セットを複数の命令サブセットへ分割
    するに際し、少くとも1つの該命令サブセットが単一の
    マイクロプロセッサ・チップに完全に適合し且つ該マイ
    クロプロセッサ・チップによって完全に実行しうるよう
    に規定し、前記命令サブセットを実現するために、それ
    ぞれ内部マイクロコードを保持しうる複数のマイクロプ
    ロセッサ・チップを設け、 前記マイクロプロセッサ・チップの各々に、その常駐す
    る命令サブセットを実現し且つその実行を当該マイクロ
    プロセッサ・チップで完全に制御するに必要なすべての
    マイクロコードな保持させ、前記マイクロプロセッサ・
    チップ相互間で制御を授受することができるようにすべ
    ての前記マイクロプロセッサを相互接続する少くとも1
    つの通路を設け、 さらに前記マイクロプロセッサ・チップ相互間でデータ
    を授受することができるようにすべての前記マイクロプ
    ロセッサΦチップを相互接続する少くとも1つの通路を
    設けるようにした、汎用計算機ノエミュレーション方式
JP58063117A 1982-04-26 1983-04-12 汎用計算機のエミユレ−シヨン方式 Pending JPS58191044A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/371,634 US4514803A (en) 1982-04-26 1982-04-26 Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof
US371634 1982-04-26

Publications (1)

Publication Number Publication Date
JPS58191044A true JPS58191044A (ja) 1983-11-08

Family

ID=23464784

Family Applications (1)

Application Number Title Priority Date Filing Date
JP58063117A Pending JPS58191044A (ja) 1982-04-26 1983-04-12 汎用計算機のエミユレ−シヨン方式

Country Status (6)

Country Link
US (1) US4514803A (ja)
EP (1) EP0092610A3 (ja)
JP (1) JPS58191044A (ja)
BR (1) BR8301430A (ja)
CA (1) CA1182573A (ja)
ES (1) ES521806A0 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0174231B1 (en) * 1984-08-02 1990-11-14 Telemecanique Programmable controller ("pc") with co-processing architecture
US4870614A (en) * 1984-08-02 1989-09-26 Quatse Jesse T Programmable controller ("PC") with co-processing architecture
US4763242A (en) * 1985-10-23 1988-08-09 Hewlett-Packard Company Computer providing flexible processor extension, flexible instruction set extension, and implicit emulation for upward software compatibility
JPS6398038A (ja) * 1986-10-06 1988-04-28 インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション デ−タ処理システム
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
US5025364A (en) * 1987-06-29 1991-06-18 Hewlett-Packard Company Microprocessor emulation system with memory mapping using variable definition and addressing of memory space
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
DE69029995T2 (de) * 1989-11-09 1997-08-21 Ibm Multiprozessor mit relativ atomaren Befehlen
US5430862A (en) * 1990-06-29 1995-07-04 Bull Hn Information Systems Inc. Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution
US5280595A (en) * 1990-10-05 1994-01-18 Bull Hn Information Systems Inc. State machine for executing commands within a minimum number of cycles by accomodating unforseen time dependency according to status signals received from different functional sections
US5263034A (en) * 1990-10-09 1993-11-16 Bull Information Systems Inc. Error detection in the basic processing unit of a VLSI central processor
US5226164A (en) * 1991-04-24 1993-07-06 International Business Machines Corporation Millicode register management and pipeline reset
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
DE69325736T2 (de) * 1992-04-27 1999-11-18 Sony Corp., Tokio/Tokyo Datenverarbeitungssystem, worin die Kompatibilität zwischen verschiedenen Modellen gewährleistet ist
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
GB2307072B (en) 1994-06-10 1998-05-13 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5632028A (en) * 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
US5819063A (en) * 1995-09-11 1998-10-06 International Business Machines Corporation Method and data processing system for emulating a program
US5812823A (en) * 1996-01-02 1998-09-22 International Business Machines Corporation Method and system for performing an emulation context save and restore that is transparent to the operating system
US5784638A (en) * 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US6356995B2 (en) * 1998-07-02 2002-03-12 Picoturbo, Inc. Microcode scalable processor
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
AU2745001A (en) * 1999-12-31 2001-07-16 Intel Corporation External microcode
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US7020600B2 (en) * 2001-09-07 2006-03-28 Texas Instruments Incorporated Apparatus and method for improvement of communication between an emulator unit and a host device
GB0202728D0 (en) * 2002-02-06 2002-03-27 Transitive Technologies Ltd Condition code flag emulation for program code conversion
US7331040B2 (en) * 2002-02-06 2008-02-12 Transitive Limted Condition code flag emulation for program code conversion
US7221763B2 (en) * 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
US20040019765A1 (en) * 2002-07-23 2004-01-29 Klein Robert C. Pipelined reconfigurable dynamic instruction set processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7401207B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
CN100342319C (zh) * 2005-09-29 2007-10-10 威盛电子股份有限公司 磁盘阵列写入指令处理方法
US7596781B2 (en) * 2006-10-16 2009-09-29 International Business Machines Corporation Register-based instruction optimization for facilitating efficient emulation of an instruction stream
WO2022099103A1 (en) * 2020-11-06 2022-05-12 Bon Secours Mercy Health, Inc. Endotracheal tube

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51126020A (en) * 1975-04-25 1976-11-02 Hitachi Ltd Micro program control equipment
JPS5532118A (en) * 1978-08-28 1980-03-06 Fujitsu Ltd Data processing system
JPS5730068A (en) * 1980-07-30 1982-02-18 Fujitsu Ltd Data processing system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128876A (en) * 1977-04-28 1978-12-05 International Business Machines Corporation Synchronous microcode generated interface for system of microcoded data processors
US4354225A (en) * 1979-10-11 1982-10-12 Nanodata Computer Corporation Intelligent main store for data processing systems
US4356546A (en) * 1980-02-05 1982-10-26 The Bendix Corporation Fault-tolerant multi-computer system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51126020A (en) * 1975-04-25 1976-11-02 Hitachi Ltd Micro program control equipment
JPS5532118A (en) * 1978-08-28 1980-03-06 Fujitsu Ltd Data processing system
JPS5730068A (en) * 1980-07-30 1982-02-18 Fujitsu Ltd Data processing system

Also Published As

Publication number Publication date
EP0092610A3 (en) 1985-05-29
BR8301430A (pt) 1983-11-29
CA1182573A (en) 1985-02-12
ES8404073A1 (es) 1984-04-01
EP0092610A2 (en) 1983-11-02
US4514803A (en) 1985-04-30
ES521806A0 (es) 1984-04-01

Similar Documents

Publication Publication Date Title
JPS58191044A (ja) 汎用計算機のエミユレ−シヨン方式
US4729094A (en) Method and apparatus for coordinating execution of an instruction by a coprocessor
US4463421A (en) Serial/parallel input/output bus for microprocessor system
US4715013A (en) Coprocessor instruction format
US4402042A (en) Microprocessor system with instruction pre-fetch
US4403284A (en) Microprocessor which detects leading 1 bit of instruction to obtain microcode entry point address
US4694391A (en) Compressed control decoder for microprocessor system
US5689677A (en) Circuit for enhancing performance of a computer for personal use
US4402044A (en) Microprocessor with strip layout of busses, ALU and registers
US4713750A (en) Microprocessor with compact mapped programmable logic array
US4731736A (en) Method and apparatus for coordinating execution of an instruction by a selected coprocessor
CA1036713A (en) Peripheral interrupt priority resolution in a micro program data processor having plural levels of subinstruction sets
US4325121A (en) Two-level control store for microprogrammed data processor
US4750110A (en) Method and apparatus for executing an instruction contingent upon a condition present in another data processor
JPS60142743A (ja) 内部母線システム
US5021991A (en) Coprocessor instruction format
US4402043A (en) Microprocessor with compressed control ROM
EP0525831B1 (en) Method and apparatus for enabling a processor to coordinate with a coprocessor in the execution of an instruction which is in the intruction stream of the processor.
Tzafestas et al. Real Time Microcomputer Control of Industrial Processes
US4821231A (en) Method and apparatus for selectively evaluating an effective address for a coprocessor
US4758950A (en) Method and apparatus for selectively delaying an interrupt of a coprocessor
US4914578A (en) Method and apparatus for interrupting a coprocessor
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
Alexandridis Microsystems Special Monograph: Bit-Sliced Microprocessor Architecture
Toong et al. An architectural comparison of contemporary 16-bit microprocessors