JPH06342371A - 複数の命令を発行する装置および方法 - Google Patents
複数の命令を発行する装置および方法Info
- Publication number
- JPH06342371A JPH06342371A JP3354869A JP35486991A JPH06342371A JP H06342371 A JPH06342371 A JP H06342371A JP 3354869 A JP3354869 A JP 3354869A JP 35486991 A JP35486991 A JP 35486991A JP H06342371 A JPH06342371 A JP H06342371A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- unit
- execution
- group
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【目的】 複数の互換性のある命令を同時に発行するこ
とを可能にする。 【構成】 コンピュータ装置は、命令の少なくとも一部
を実行するよう構成された複数の機能ユニット(14、
16)と個別の互換性命令のグループを同時に発行する
命令発行回路(10、12)を有し、この発行回路はそ
の命令の実行に必要な各機能ユニットに依存して各命令
を識別する手段をもつ命令実行ユニット(13)と、連
続する命令の分類を検査し、それらの分類に応じて前記
実行ユニット(13)の任意の機能ユニット(14、1
6)で需要が対立することなく前記実行ユニット(1
3)に同時に発行するために互換性のあるグループを選
択する手段と、を備えている。
とを可能にする。 【構成】 コンピュータ装置は、命令の少なくとも一部
を実行するよう構成された複数の機能ユニット(14、
16)と個別の互換性命令のグループを同時に発行する
命令発行回路(10、12)を有し、この発行回路はそ
の命令の実行に必要な各機能ユニットに依存して各命令
を識別する手段をもつ命令実行ユニット(13)と、連
続する命令の分類を検査し、それらの分類に応じて前記
実行ユニット(13)の任意の機能ユニット(14、1
6)で需要が対立することなく前記実行ユニット(1
3)に同時に発行するために互換性のあるグループを選
択する手段と、を備えている。
Description
【0001】
【産業上の利用分野】本発明は、コンピュータシステム
において複数の互換性のある命令を同時に発行する装置
および方法に関する。
において複数の互換性のある命令を同時に発行する装置
および方法に関する。
【0002】
【従来の技術】コンピュータシステムでは、プログラム
は記憶装置に通常保持された一連の命令を含み、一連の
命令は記憶装置から取り出され、復号され、実行ユニッ
トに送られる。各復号サイクル後に単一命令を発行し、
復号器による新しい命令の発行の前にその命令を実行し
なければならないマシンもある。処理能力の需要が増大
すると、復号命令セットコンピュータが縮小命令セット
コンピュータに代わってきている。縮小命令セットコン
ピュータにおける命令が単純なので、ハードウェアがよ
り単純になり、通常、より高い動作周波数により命令当
たり1サイクルが要求される。1サイクル当たり複数の
独立命令を発行する超スカラーマシンも知られている。
こうしたマシンでは、複数の独立命令は復号器により同
時に実行ユニットに発行される。
は記憶装置に通常保持された一連の命令を含み、一連の
命令は記憶装置から取り出され、復号され、実行ユニッ
トに送られる。各復号サイクル後に単一命令を発行し、
復号器による新しい命令の発行の前にその命令を実行し
なければならないマシンもある。処理能力の需要が増大
すると、復号命令セットコンピュータが縮小命令セット
コンピュータに代わってきている。縮小命令セットコン
ピュータにおける命令が単純なので、ハードウェアがよ
り単純になり、通常、より高い動作周波数により命令当
たり1サイクルが要求される。1サイクル当たり複数の
独立命令を発行する超スカラーマシンも知られている。
こうしたマシンでは、複数の独立命令は復号器により同
時に実行ユニットに発行される。
【0003】
【発明が解決しようとする課題】しかし、一方が他方の
実行の後で生成されるデータを必要とするような2つの
命令が従属しているか、両方の命令が実行ユニット中の
同じ機能ユニットに対立する需要を持つ場合に、互換性
のない命令の同時発行を回避するよう注意しなければな
らない。
実行の後で生成されるデータを必要とするような2つの
命令が従属しているか、両方の命令が実行ユニット中の
同じ機能ユニットに対立する需要を持つ場合に、互換性
のない命令の同時発行を回避するよう注意しなければな
らない。
【0004】本発明の目的は、互換性命令の群が同時に
復号ユニットから実行ユニットに発行され同時に発行さ
れた従属命令の実行を可能にする選択的相互接続が実行
ユニットで実行される改良型コンピュータシステムおよ
びコンピュータシステムを動作させる方法を提供するこ
とである。
復号ユニットから実行ユニットに発行され同時に発行さ
れた従属命令の実行を可能にする選択的相互接続が実行
ユニットで実行される改良型コンピュータシステムおよ
びコンピュータシステムを動作させる方法を提供するこ
とである。
【0005】本発明の他の目的は、一連の命令を検査
し、一連の命令から復号ユニットから実行ユニットに同
時に発行される命令群を選択し、その選択がその群の命
令が実行ユニットの任意の機能ユニットで矛盾する要求
をもたないことである。
し、一連の命令から復号ユニットから実行ユニットに同
時に発行される命令群を選択し、その選択がその群の命
令が実行ユニットの任意の機能ユニットで矛盾する要求
をもたないことである。
【0006】
【課題を解決するための手段】本発明は、一緒にグルー
プ化されたときでさえ個別の識別を保持する複数の個別
命令の同時発行のためのグループ化に関するものであ
る。本発明は、複数の命令により形成されたプログラム
をもつコンピュータシステムにおける複数の命令を実行
する方法を備えており、そのコンピュータシステムでは
各命令は複数の機能ユニットをもつ実行ユニットで実行
され、前記方法は、実行される連続する個別命令を識別
するステップと、その命令の実行に必要な機能ユニット
に依存する前記命令列の各命令を分類するステップと、
それらの分類に応じて実行ユニットの任意の機能ユニッ
トで需要が対立することなく実行ユニットへの同時発行
のために互換性がある前記命令列から一群の命令を選択
するステップと、各命令の個別識別を保持しながら前記
命令群を復号するステップと、前記命令群を同時に実行
ユニットに発行するステップと、前記命令群を実行する
ステップとから構成される。
プ化されたときでさえ個別の識別を保持する複数の個別
命令の同時発行のためのグループ化に関するものであ
る。本発明は、複数の命令により形成されたプログラム
をもつコンピュータシステムにおける複数の命令を実行
する方法を備えており、そのコンピュータシステムでは
各命令は複数の機能ユニットをもつ実行ユニットで実行
され、前記方法は、実行される連続する個別命令を識別
するステップと、その命令の実行に必要な機能ユニット
に依存する前記命令列の各命令を分類するステップと、
それらの分類に応じて実行ユニットの任意の機能ユニッ
トで需要が対立することなく実行ユニットへの同時発行
のために互換性がある前記命令列から一群の命令を選択
するステップと、各命令の個別識別を保持しながら前記
命令群を復号するステップと、前記命令群を同時に実行
ユニットに発行するステップと、前記命令群を実行する
ステップとから構成される。
【0007】本発明は、連続する命令により形成された
プログラムをもつコンピュータシステムにおいて複数の
命令を実行する方法も提供し、前記方法は、それぞれ少
なくとも1つの機能ユニットをもつ複数の段をもつ実行
ユニットの各命令を実行し、複数の個別の互換命令が群
として実行ユニットに同時に発行され、その群は他の命
令の実行により供給されるデータを要求することにより
その群の中の前記他の命令に依存する少なくとも1つの
命令を含み、実行ユニットの前記命令群を実行し、1つ
の機能ユニットにより前記他の命令の実行から誘導され
た前記データは前記機能ユニットから出力され前記1つ
の命令を実行する他の機能ユニットに入力されるよう前
記機能ユニットを選択的に相互接続することから構成さ
れる。
プログラムをもつコンピュータシステムにおいて複数の
命令を実行する方法も提供し、前記方法は、それぞれ少
なくとも1つの機能ユニットをもつ複数の段をもつ実行
ユニットの各命令を実行し、複数の個別の互換命令が群
として実行ユニットに同時に発行され、その群は他の命
令の実行により供給されるデータを要求することにより
その群の中の前記他の命令に依存する少なくとも1つの
命令を含み、実行ユニットの前記命令群を実行し、1つ
の機能ユニットにより前記他の命令の実行から誘導され
た前記データは前記機能ユニットから出力され前記1つ
の命令を実行する他の機能ユニットに入力されるよう前
記機能ユニットを選択的に相互接続することから構成さ
れる。
【0008】前記群の複数の個別命令は実行ユニットの
1つまたは複数の段により同時に実行される。実行ユニ
ットの動作の各段は1つの実行サイクルで実行され、前
記実行ユニットは、新しい互換命令群が各実行サイクル
の実行ユニットに供給されるパイプライン方式で動作さ
れる。前記実行ユニットの各段は、選択された型の命令
を実行する1つまたは複数の機能ユニットを含み、前記
連続する命令のそれぞれは、その型を示すように分類さ
れ、前記連続命令の検査は各命令の分類の検査を含む。
1つまたは複数の段により同時に実行される。実行ユニ
ットの動作の各段は1つの実行サイクルで実行され、前
記実行ユニットは、新しい互換命令群が各実行サイクル
の実行ユニットに供給されるパイプライン方式で動作さ
れる。前記実行ユニットの各段は、選択された型の命令
を実行する1つまたは複数の機能ユニットを含み、前記
連続する命令のそれぞれは、その型を示すように分類さ
れ、前記連続命令の検査は各命令の分類の検査を含む。
【0009】本発明は、実行される一連の命令を保持す
るプロセッサとメモリを含むコンピュータ装置も備えて
おり、前記コンピュータ装置は、1つの命令の少なくと
も一部を実行するよう構成される複数の機能ユニットを
もつ命令実行ユニットと前記実行ユニットに個別の互換
性のある命令の群を同時に発行する命令発行回路を含
み、前記回路はその命令の実行に必要な各機能ユニット
に依存する各命令を分類する手段をもち、連続する命令
の分類を検査しそれらの分類に応じて、実行ユニットの
任意の機能ユニットで需要が対立することなく実行ユニ
ットへの同時発行のために互換性のある命令群を選択す
る手段を含む。
るプロセッサとメモリを含むコンピュータ装置も備えて
おり、前記コンピュータ装置は、1つの命令の少なくと
も一部を実行するよう構成される複数の機能ユニットを
もつ命令実行ユニットと前記実行ユニットに個別の互換
性のある命令の群を同時に発行する命令発行回路を含
み、前記回路はその命令の実行に必要な各機能ユニット
に依存する各命令を分類する手段をもち、連続する命令
の分類を検査しそれらの分類に応じて、実行ユニットの
任意の機能ユニットで需要が対立することなく実行ユニ
ットへの同時発行のために互換性のある命令群を選択す
る手段を含む。
【0010】本発明による実施例は復号ユニットの動作
のサイクル当たりの命令のスループットを増大させるこ
とができ、パイプライン化により復号器と実行ユニット
を介して命令スループットの全体率が増大可能であるこ
とが理解できる。この命令スループット率は、2つ以上
の命令が実行ユニットの単一段で同時に実行できるよう
に実行ユニットの1つまたは複数の段に並列して複数の
機能ユニットを備えることによりさらに増大される。
のサイクル当たりの命令のスループットを増大させるこ
とができ、パイプライン化により復号器と実行ユニット
を介して命令スループットの全体率が増大可能であるこ
とが理解できる。この命令スループット率は、2つ以上
の命令が実行ユニットの単一段で同時に実行できるよう
に実行ユニットの1つまたは複数の段に並列して複数の
機能ユニットを備えることによりさらに増大される。
【0011】
【実施例】図1は本発明による方法を実施できる命令処
理システムを示す構成図である。このシステムは命令取
出しユニット10、命令復号ユニット12、命令実行ユ
ニット13を含む。このシステムは、データを記憶する
プロセッサとメモリおよびそのプロセッサにより実行さ
れるプログラムとをもつマイクロプロセッサで使用され
るよう意図されている。そのプログラムは以下に議論さ
れる命令セットから選択された一連の命令の形を取る。
理システムを示す構成図である。このシステムは命令取
出しユニット10、命令復号ユニット12、命令実行ユ
ニット13を含む。このシステムは、データを記憶する
プロセッサとメモリおよびそのプロセッサにより実行さ
れるプログラムとをもつマイクロプロセッサで使用され
るよう意図されている。そのプログラムは以下に議論さ
れる命令セットから選択された一連の命令の形を取る。
【0012】命令取出しユニット10は、実行されるプ
ログラムに応じて一連の命令を取り出し、複数の命令を
各復号サイクルで命令復号ユニット12に連続してわた
す。以下の記載では、N個の命令が復号サイクル当たり
命令復号ユニットに渡されると仮定される。命令復号ユ
ニットは命令を復号するだけでなく、同時に実行するた
めに実行ユニットに発行できる互換性のある命令の群で
ある実行可能群を形成するようそれらの命令をグループ
化する。互換性群は、以後に明らかになるように、復号
サイクル当たりの復号ユニットにより取り出されたN個
の命令のすべてまたは一部を含む場合がある。
ログラムに応じて一連の命令を取り出し、複数の命令を
各復号サイクルで命令復号ユニット12に連続してわた
す。以下の記載では、N個の命令が復号サイクル当たり
命令復号ユニットに渡されると仮定される。命令復号ユ
ニットは命令を復号するだけでなく、同時に実行するた
めに実行ユニットに発行できる互換性のある命令の群で
ある実行可能群を形成するようそれらの命令をグループ
化する。互換性群は、以後に明らかになるように、復号
サイクル当たりの復号ユニットにより取り出されたN個
の命令のすべてまたは一部を含む場合がある。
【0013】実行ユニットは複数の機能ユニットを含
み、各機能ユニットは1つの実行サイクルで1つの機能
を実行するように構成され、その機能は命令により決定
される。同時に発行された命令群の実行を完了するため
に、複数の実行サイクルが必要になる。一緒にグループ
化される命令が実行ユニットに発行される一連の命令と
実行可能群のそれらの個別の識別を保持することが本発
明の重要な特色である。
み、各機能ユニットは1つの実行サイクルで1つの機能
を実行するように構成され、その機能は命令により決定
される。同時に発行された命令群の実行を完了するため
に、複数の実行サイクルが必要になる。一緒にグループ
化される命令が実行ユニットに発行される一連の命令と
実行可能群のそれらの個別の識別を保持することが本発
明の重要な特色である。
【0014】以下の記載では、本明細書に統合されてい
る、米国特許第4704678号明細書に記載されたマ
イクロコンピュータアーキテクチャを参照する。このア
ーキテクチャでは、マイクロコンピュータプロセッサは
複数の処理の任意のものを実行可能である。各処理の実
行のために、AおよびBレジスタは適切なデータ、オペ
ランドおよびアドレスを保持し、インデックスレジスタ
は(WPTRレジスタ)は、現処理のワークスペースメ
モリの基本値を示すメモリ位置のアドレスを保持する。
このようなアーキテクチャは上述の米国特許に詳細に記
載されている。この特許ではこうしたマイクロプロセッ
サにより復号され使用される命令セットも定義してあ
る。本記載の読解を助けるために、以下の記載で使用さ
れる命令はそれらの意味に関する説明と共に以下で繰り
返される。当然のことながら、本発明は上述の特許で定
義された命令セットの他の命令に適用可能であるだけで
なく他の命令セットアーキテクチャにも適用可能であ
る。以下の記載では、nは複数の命令によりオペランド
として供給される整数を表す。本明細書で使用されるオ
ペランドという用語は、命令が実行されるときに使用さ
れその命令とともに供給されるか他の命令の以前の実行
から誘導される数値を指している。
る、米国特許第4704678号明細書に記載されたマ
イクロコンピュータアーキテクチャを参照する。このア
ーキテクチャでは、マイクロコンピュータプロセッサは
複数の処理の任意のものを実行可能である。各処理の実
行のために、AおよびBレジスタは適切なデータ、オペ
ランドおよびアドレスを保持し、インデックスレジスタ
は(WPTRレジスタ)は、現処理のワークスペースメ
モリの基本値を示すメモリ位置のアドレスを保持する。
このようなアーキテクチャは上述の米国特許に詳細に記
載されている。この特許ではこうしたマイクロプロセッ
サにより復号され使用される命令セットも定義してあ
る。本記載の読解を助けるために、以下の記載で使用さ
れる命令はそれらの意味に関する説明と共に以下で繰り
返される。当然のことながら、本発明は上述の特許で定
義された命令セットの他の命令に適用可能であるだけで
なく他の命令セットアーキテクチャにも適用可能であ
る。以下の記載では、nは複数の命令によりオペランド
として供給される整数を表す。本明細書で使用されるオ
ペランドという用語は、命令が実行されるときに使用さ
れその命令とともに供給されるか他の命令の以前の実行
から誘導される数値を指している。
【0015】命令セット定義 Ldl n (1)nをAレジスタにロードせよ。 (2)Aレジスタの以前の内容がBレジスタに転送され
る。 Ldw n (1)アドレスWptr+nを形成する。 (2)そのメモリの位置からAレジスタに書き込む。 (3)Aレジスタの以前の内容がBレジスタに転送され
る。 Ldpw n(1)値Wptr+nを形成する。 (2)値をAレジスタにロードする。 (3)Aレジスタの以前の内容がBレジスタに転送され
る。 Ldv n (1)アドレスA+nを形成する、ただし
AはAレジスタの内容である。 (2)そのメモリ位置からAレジスタに書き込む。 Adl n (1)A+nを形成する、ただしAはAレ
ジスタの内容である。 (2)結果をAレジスタにロードする。 Add (1)A+Bを形成する、ただしAとBは
AおよびBレジスタの内容である。 (2)結果をAレジスタにロードする。 Stw n (1)アドレスWptr+nを形成する。 (2)Aレジスタの内容をそのアドレスに書き込む。 (3)Bレジスタの以前の内容がBレジスタに転送され
る。 Stv n (1)アドレスA+nを形成する、ただし
AはAレジスタの内容である。 (2)Bレジスタの内容をそのアドレスに書き込む。 J n (1)値IPTR+nを形成する。 (2)値をIPTRレジスタにロードする。 Jnz n (1)値IPTR+nを形成する。 (2)Aがゼロでない場合値をIPTRレジスタにロー
ドする。
る。 Ldw n (1)アドレスWptr+nを形成する。 (2)そのメモリの位置からAレジスタに書き込む。 (3)Aレジスタの以前の内容がBレジスタに転送され
る。 Ldpw n(1)値Wptr+nを形成する。 (2)値をAレジスタにロードする。 (3)Aレジスタの以前の内容がBレジスタに転送され
る。 Ldv n (1)アドレスA+nを形成する、ただし
AはAレジスタの内容である。 (2)そのメモリ位置からAレジスタに書き込む。 Adl n (1)A+nを形成する、ただしAはAレ
ジスタの内容である。 (2)結果をAレジスタにロードする。 Add (1)A+Bを形成する、ただしAとBは
AおよびBレジスタの内容である。 (2)結果をAレジスタにロードする。 Stw n (1)アドレスWptr+nを形成する。 (2)Aレジスタの内容をそのアドレスに書き込む。 (3)Bレジスタの以前の内容がBレジスタに転送され
る。 Stv n (1)アドレスA+nを形成する、ただし
AはAレジスタの内容である。 (2)Bレジスタの内容をそのアドレスに書き込む。 J n (1)値IPTR+nを形成する。 (2)値をIPTRレジスタにロードする。 Jnz n (1)値IPTR+nを形成する。 (2)Aがゼロでない場合値をIPTRレジスタにロー
ドする。
【0016】米国特許4704678号明細書に記載の
ように、IPTRレジスタはインデックスポインタを実
行するプログラムの次の行に保持する。図1を再び参照
すると、実行ユニット13は複数の機能ユニットを含
む。これらの機能ユニットにより実行ユニットが、第1
ソースオペランドと第2ソースオペランドを作成し、こ
れらのオペランド(本明細書ではALUOpと略され上
記に定義されたAddなどの命令を含む)に基づいて算
術および論理演算を実行し、その結果をメモリに書き込
むことができるようになる。
ように、IPTRレジスタはインデックスポインタを実
行するプログラムの次の行に保持する。図1を再び参照
すると、実行ユニット13は複数の機能ユニットを含
む。これらの機能ユニットにより実行ユニットが、第1
ソースオペランドと第2ソースオペランドを作成し、こ
れらのオペランド(本明細書ではALUOpと略され上
記に定義されたAddなどの命令を含む)に基づいて算
術および論理演算を実行し、その結果をメモリに書き込
むことができるようになる。
【0017】機能ユニットはそれらの機能に応じて以下
のように分類可能である。 機能ユニット分類 分類(i) 作業領域メモリ(WPTR+n)にアドレ
スを生成し、および/または作業領域メモリから読み取
り、リテラル命令を実行する。 分類(ii) ベクトルメモリ(A+n)にアドレスを
生成し、および/またはベクトルメモリから読み取る。 分類(iii) AとB入力で利用可能なときデータに
基づいて算術演算を実行する。 分類(iv) 以前に生成されたアドレスに応じてレジ
スタの内容をベクトルまたは作業領域メモリに書き込
む。 分類(v) JUMP命令を実行する。
のように分類可能である。 機能ユニット分類 分類(i) 作業領域メモリ(WPTR+n)にアドレ
スを生成し、および/または作業領域メモリから読み取
り、リテラル命令を実行する。 分類(ii) ベクトルメモリ(A+n)にアドレスを
生成し、および/またはベクトルメモリから読み取る。 分類(iii) AとB入力で利用可能なときデータに
基づいて算術演算を実行する。 分類(iv) 以前に生成されたアドレスに応じてレジ
スタの内容をベクトルまたは作業領域メモリに書き込
む。 分類(v) JUMP命令を実行する。
【0018】用語「ベクトルメモリ」は上記の米国特許
第4704678号明細書で定義され、そこで説明して
あるように、WPTRレジスタに保持された以前に記憶
された基本位置からのオフセット値によりアドレス指定
される作業領域メモリから区別するように基本位置を定
義するためにAレジスタに保持された情報によりアドレ
ス指定されるメモリを示す。
第4704678号明細書で定義され、そこで説明して
あるように、WPTRレジスタに保持された以前に記憶
された基本位置からのオフセット値によりアドレス指定
される作業領域メモリから区別するように基本位置を定
義するためにAレジスタに保持された情報によりアドレ
ス指定されるメモリを示す。
【0019】本実施例の実行ユニットは分類(i)の3
つの機能ユニット14a、14b、14cをもち、それ
ぞれが作業領域メモリにアドレスを生成し、および/ま
たは作業領域メモリから読取り、またはリテラル命令を
実行する。実行ユニットも分類(ii)の3つ機能ユニ
ット16a、16b、16cを含み、その中の2つはベ
クトルメモリ(A+n)にアドレスを生成可能であり、
および/またはベクトルメモリから読取り可能である
が、他の1つの16cはベクトルメモリにアドレスを生
成可能なだけでベクトルメモリから読取りはできない。
分類(iii)の機能ユニット18は、本明細書で算術
演算と略される算術または論理(ALU)演算を実行
し、分類(iv)の機能ユニット20はメモリ書込み動
作を実施する。最後に、分類(v)には2つの機能ユニ
ット21、23があり、それぞれ条件付、非条件付ジャ
ンプ命令をそれぞれ実行する。
つの機能ユニット14a、14b、14cをもち、それ
ぞれが作業領域メモリにアドレスを生成し、および/ま
たは作業領域メモリから読取り、またはリテラル命令を
実行する。実行ユニットも分類(ii)の3つ機能ユニ
ット16a、16b、16cを含み、その中の2つはベ
クトルメモリ(A+n)にアドレスを生成可能であり、
および/またはベクトルメモリから読取り可能である
が、他の1つの16cはベクトルメモリにアドレスを生
成可能なだけでベクトルメモリから読取りはできない。
分類(iii)の機能ユニット18は、本明細書で算術
演算と略される算術または論理(ALU)演算を実行
し、分類(iv)の機能ユニット20はメモリ書込み動
作を実施する。最後に、分類(v)には2つの機能ユニ
ット21、23があり、それぞれ条件付、非条件付ジャ
ンプ命令をそれぞれ実行する。
【0020】分類(i)の機能ユニット14a、14
b、14cは、分類(ii)の機能ユニット16a、1
6b、16cにそれぞれデータを供給するよう接続され
る。分類(ii)の機能ユニット16a、16bはそれ
らのデータを分類(iii)の機能ユニット18に供給
するよう接続される。分類(iii)の機能ユニット1
8はデータを分類(iv)機能ユニット20に供給する
よう接続される。このユニット20は、分類(ii)の
機能ユニット16cからデータを受信するようにも接続
される。非条件付ジャンプを実行する分類(v)ユニッ
ト23は、非条件付ジャンプアドレスの形で命令取出し
ユニット10にデータを供給する。その非条件付ジャン
プアドレスは、実行するプログラムの次の行、すなわち
次のシーケンスを開始し、命令復号ユニット12に送る
命令を識別する。条件付ジャンプを実行する分類(v)
のユニット21はそのデータを命令取出しユニット10
に供給するよう接続される。ユニット21は、ALU命
令が機能ユニット18により実行された後でAレジスタ
がゼロの以外の値にある場合ジャンプ命令が実行される
ように機能ユニット18からデータを受信するようにも
接続される。
b、14cは、分類(ii)の機能ユニット16a、1
6b、16cにそれぞれデータを供給するよう接続され
る。分類(ii)の機能ユニット16a、16bはそれ
らのデータを分類(iii)の機能ユニット18に供給
するよう接続される。分類(iii)の機能ユニット1
8はデータを分類(iv)機能ユニット20に供給する
よう接続される。このユニット20は、分類(ii)の
機能ユニット16cからデータを受信するようにも接続
される。非条件付ジャンプを実行する分類(v)ユニッ
ト23は、非条件付ジャンプアドレスの形で命令取出し
ユニット10にデータを供給する。その非条件付ジャン
プアドレスは、実行するプログラムの次の行、すなわち
次のシーケンスを開始し、命令復号ユニット12に送る
命令を識別する。条件付ジャンプを実行する分類(v)
のユニット21はそのデータを命令取出しユニット10
に供給するよう接続される。ユニット21は、ALU命
令が機能ユニット18により実行された後でAレジスタ
がゼロの以外の値にある場合ジャンプ命令が実行される
ように機能ユニット18からデータを受信するようにも
接続される。
【0021】任意の命令を実行するために、実行ユニッ
トの1つまたは複数の機能ユニットが必要である。たと
えば、命令Ldw nは分類(i)の機能ユニットで十
分に実行できる。この分類(i)の機能ユニットは、メ
モリアドレス生成部分WPTR+nを実行できるだけで
なくメモリ読取り動作も実行できる。しかし、Stwn
などの命令には、分類(i)の機能ユニットで実施可能
な作業領域メモリの位置のアドレスの生成と分類(i
v)の機能ユニットで実施できるメモリ書込み動作が必
要である。このシステムは複数のメモリ読取りポートに
アクセスするが、書込みポートは1つだけしかない。分
類(i)と分類(ii)の機能ユニットにより読取り動
作用メモリへのアクセスと分類(iv)の機能ユニット
による書込み動作用のメモリへのアクセスが、メモリポ
ート間で衝突を起こすことなく実行できるように構成す
ることもできる。
トの1つまたは複数の機能ユニットが必要である。たと
えば、命令Ldw nは分類(i)の機能ユニットで十
分に実行できる。この分類(i)の機能ユニットは、メ
モリアドレス生成部分WPTR+nを実行できるだけで
なくメモリ読取り動作も実行できる。しかし、Stwn
などの命令には、分類(i)の機能ユニットで実施可能
な作業領域メモリの位置のアドレスの生成と分類(i
v)の機能ユニットで実施できるメモリ書込み動作が必
要である。このシステムは複数のメモリ読取りポートに
アクセスするが、書込みポートは1つだけしかない。分
類(i)と分類(ii)の機能ユニットにより読取り動
作用メモリへのアクセスと分類(iv)の機能ユニット
による書込み動作用のメモリへのアクセスが、メモリポ
ート間で衝突を起こすことなく実行できるように構成す
ることもできる。
【0022】機能ユニットは、実行ユニット13に発行
された互換性のある命令の任意の実行可能群に対して、
命令の実行に必要な機能ユニットが動作するように選択
的に相互接続でき、1つの命令の実行により作成された
データがその群内の他の命令の実行のために利用できる
ように相互接続される。上記から理解されるように、命
令処理システムの各復号サイクル内で複数の実行クロッ
クサイクルが必要になり、単一復号サイクル内で、実行
ユニットは同じ群の他の命令により作成されるデータを
必要とする命令の実行を可能にする。実行可能群として
実行ユニットへの互換命令の同時発行を支配する規則が
図2と3に記載される。当然のことながら、これらの規
則は図1に関して上記に記載されている実行ユニット1
3に関連する。様々な構成の機能ユニットをもつ実行ユ
ニットには、さまざまなグループ化規則が適用される。
された互換性のある命令の任意の実行可能群に対して、
命令の実行に必要な機能ユニットが動作するように選択
的に相互接続でき、1つの命令の実行により作成された
データがその群内の他の命令の実行のために利用できる
ように相互接続される。上記から理解されるように、命
令処理システムの各復号サイクル内で複数の実行クロッ
クサイクルが必要になり、単一復号サイクル内で、実行
ユニットは同じ群の他の命令により作成されるデータを
必要とする命令の実行を可能にする。実行可能群として
実行ユニットへの互換命令の同時発行を支配する規則が
図2と3に記載される。当然のことながら、これらの規
則は図1に関して上記に記載されている実行ユニット1
3に関連する。様々な構成の機能ユニットをもつ実行ユ
ニットには、さまざまなグループ化規則が適用される。
【0023】図2では、中に命令名を持つバブルは命令
を表し、矢印をもつ相互接続線はどの命令が各バブルの
後に来るかを表す。各ソースオペランドの生成は2つの
部分で実行可能である。第1の部分はリテラルの値、す
なわちWPTRレジスタに記憶されたアドレスからのオ
フセットにより示された作業領域メモリアドレス又はメ
モリアドレスの内容を作成する。この部分を占有可能な
命令はLdl n、 Adl n、Ldpw n、 L
dwnである。第2の部分は、命令Ldv γにより実
施可能なベクトルメモリからの読取りに関する。当然、
必要なソースオペランドが作業領域メモリまたはリテラ
ル命令の実行の結果にある場合には、第2の部分は不必
要である。この分析は、ソースオペランド1とソースオ
ペランド2と称されている図2の2つの左側の部分で繰
り返される。次に、算術演算が、算術演算部分により示
されているようにAdlまたはALUOp命令により実
施される。最後に、その結果を記憶するメモリアドレス
が生成され、その結果はメモリに書き込まれる。それ
は、Stv nとともに命令Ldl nとLdpw n
またはLdw nによりまたは行先オペランドおよび記
憶部分に示してあるように命令Stwにより達成でき
る。
を表し、矢印をもつ相互接続線はどの命令が各バブルの
後に来るかを表す。各ソースオペランドの生成は2つの
部分で実行可能である。第1の部分はリテラルの値、す
なわちWPTRレジスタに記憶されたアドレスからのオ
フセットにより示された作業領域メモリアドレス又はメ
モリアドレスの内容を作成する。この部分を占有可能な
命令はLdl n、 Adl n、Ldpw n、 L
dwnである。第2の部分は、命令Ldv γにより実
施可能なベクトルメモリからの読取りに関する。当然、
必要なソースオペランドが作業領域メモリまたはリテラ
ル命令の実行の結果にある場合には、第2の部分は不必
要である。この分析は、ソースオペランド1とソースオ
ペランド2と称されている図2の2つの左側の部分で繰
り返される。次に、算術演算が、算術演算部分により示
されているようにAdlまたはALUOp命令により実
施される。最後に、その結果を記憶するメモリアドレス
が生成され、その結果はメモリに書き込まれる。それ
は、Stv nとともに命令Ldl nとLdpw n
またはLdw nによりまたは行先オペランドおよび記
憶部分に示してあるように命令Stwにより達成でき
る。
【0024】バブル24(Ldw)、26(Ldl)、
28(Ldpw)は、第1例の第1オペランドを生成す
ることが認められた命令を表す。バブル30(Ldv)
は、ベクトルメモリからの読取り動作を表す。矢印32
は、バブル30がいくつかの環境、たとえば必要なオペ
ランドが作業領域メモリにあるかまたはリテラル命令の
実行により生成される場合など迂回できることを示して
いる。さらに、矢印68は、復号器が直接バブル30に
進むことを示している。次の隣接部分ソースオペランド
部分2では、バブル34、36、38、40がそれぞれ
バブル24、26、28、28、30に対応し、矢印4
2は矢印32に対応する。矢印44が示しているのは、
第2オペランドが生成されない場合である。バブル3
4、36、38を渡る矢印68に対応する矢印はない。
というのはこの部分はAレジスタの現在の内容によらな
い値とともに、いつも開始する第2オペランドの作成に
関するからである。バブル46(Adl)は、ソースオ
ペランド2の部分に送る他の命令を表す。これらの部分
では「メモリへの書込み」動作を行なうのは適切ではな
い。というのは記憶されるものがなにも生成されないか
らである。したがって、命令Stvはソースオペランド
1およびソースオペランド2に現われない。次の隣接部
分の算術演算部分は、バブル48(ALUOp)により
実施される命令を表す。命令列に算術命令がないと、こ
の部分は、矢印50により示されるように迂回できる。
注意すべきことは、バブル46(Adl)がソースオペ
ランド2部分と算術演算部分を横切って延在しているこ
とである。というのは命令Adlは算術演算を統合して
いるからである。
28(Ldpw)は、第1例の第1オペランドを生成す
ることが認められた命令を表す。バブル30(Ldv)
は、ベクトルメモリからの読取り動作を表す。矢印32
は、バブル30がいくつかの環境、たとえば必要なオペ
ランドが作業領域メモリにあるかまたはリテラル命令の
実行により生成される場合など迂回できることを示して
いる。さらに、矢印68は、復号器が直接バブル30に
進むことを示している。次の隣接部分ソースオペランド
部分2では、バブル34、36、38、40がそれぞれ
バブル24、26、28、28、30に対応し、矢印4
2は矢印32に対応する。矢印44が示しているのは、
第2オペランドが生成されない場合である。バブル3
4、36、38を渡る矢印68に対応する矢印はない。
というのはこの部分はAレジスタの現在の内容によらな
い値とともに、いつも開始する第2オペランドの作成に
関するからである。バブル46(Adl)は、ソースオ
ペランド2の部分に送る他の命令を表す。これらの部分
では「メモリへの書込み」動作を行なうのは適切ではな
い。というのは記憶されるものがなにも生成されないか
らである。したがって、命令Stvはソースオペランド
1およびソースオペランド2に現われない。次の隣接部
分の算術演算部分は、バブル48(ALUOp)により
実施される命令を表す。命令列に算術命令がないと、こ
の部分は、矢印50により示されるように迂回できる。
注意すべきことは、バブル46(Adl)がソースオペ
ランド2部分と算術演算部分を横切って延在しているこ
とである。というのは命令Adlは算術演算を統合して
いるからである。
【0025】次の行先オペランドおよび記憶部分では、
バブル52(Ldw)、54(Ldl)および56(L
dpw)は、メモリアドレスを形成するために基礎とし
て使用できるデータの生成を表す。これらは、バブル5
8で表されたベクトル命令Stvの記憶に関して実行可
能であるだけかまたはバブル60の作業領域命令Stw
の記憶により完全に迂回可能である。矢印74はこの部
分が迂回できることを示している。この部分は、Stw
(バブル60)によるか有効Stv(バブル58)命令
で終了する書き込み動作の一部である場合に行先アドレ
スの生成だけが可能になることを示している。これは図
1の実行ユニット13がその第3オペランドデータとし
て処理できないからである。この第3オペランドデータ
は、実行ユニットに発行された互換グループ内の命令に
より生成されたアドレスではメモリに書き込めない。最
後に、図2の最右部分のプログラムジャンプがJ命令
(バブル62)、Jnz命令(バブル64)により占め
られたり、矢印66により示してあるように迂回でき
る。図2では、矢印70は、グループ化は直接バブル5
8に進むことができ、システムを使用できることを示し
ている。バブル72は任意の他の命令、すなわち、互換
群を形成する他の命令と一緒にまとめられない命令を示
す。
バブル52(Ldw)、54(Ldl)および56(L
dpw)は、メモリアドレスを形成するために基礎とし
て使用できるデータの生成を表す。これらは、バブル5
8で表されたベクトル命令Stvの記憶に関して実行可
能であるだけかまたはバブル60の作業領域命令Stw
の記憶により完全に迂回可能である。矢印74はこの部
分が迂回できることを示している。この部分は、Stw
(バブル60)によるか有効Stv(バブル58)命令
で終了する書き込み動作の一部である場合に行先アドレ
スの生成だけが可能になることを示している。これは図
1の実行ユニット13がその第3オペランドデータとし
て処理できないからである。この第3オペランドデータ
は、実行ユニットに発行された互換グループ内の命令に
より生成されたアドレスではメモリに書き込めない。最
後に、図2の最右部分のプログラムジャンプがJ命令
(バブル62)、Jnz命令(バブル64)により占め
られたり、矢印66により示してあるように迂回でき
る。図2では、矢印70は、グループ化は直接バブル5
8に進むことができ、システムを使用できることを示し
ている。バブル72は任意の他の命令、すなわち、互換
群を形成する他の命令と一緒にまとめられない命令を示
す。
【0026】図2では、各バブルは個々の命令により占
めることが可能なように示してある。実際、命令をグル
ープ化する方法を実施するのに使用される回路に関連し
て以後に示す記載から明らかになるように、命令を検査
しグループ化するには、命令を実行するのに必要な機能
ユニットの分類、すなわち、これらの命令により占有さ
れる図2のバブルの分類を考慮してある分類コードが利
用される。分類コードは、本明細書に関連した命令集合
が分類される方法を示す図23から誘導される。
めることが可能なように示してある。実際、命令をグル
ープ化する方法を実施するのに使用される回路に関連し
て以後に示す記載から明らかになるように、命令を検査
しグループ化するには、命令を実行するのに必要な機能
ユニットの分類、すなわち、これらの命令により占有さ
れる図2のバブルの分類を考慮してある分類コードが利
用される。分類コードは、本明細書に関連した命令集合
が分類される方法を示す図23から誘導される。
【0027】図23を参照すると、命令Ldl、Ld
w、Ldpwはリテラルまたは作業領域演算が必要であ
り、共通分類コード’(i)を共有する。図2のソース
オペランド1のバブル24、26、28、ソースオペラ
ンド2のバブル34、36、38、行先オペランドおよ
び記憶部分のバブル52、54、56は分類コード
(i)のバブルとして考えることができる。命令Ldv
は分類コード(ii)をもつので、バブル30、40は
分類コード(ii)のバブルとして考えることができ
る。命令ALUOpは、算術演算部分のバブル48が分
類コード(iii)のバブルとして考えることができる
ような分類(iii)をもつ。行先オペランドおよび記
憶部分のバブル58が示しているように、命令Stvは
分類コード(ii)と(iv)をもつ。命令Adlは分
類コード(i)、(iii)をもつので、これは、バブ
ル46により示されているように分類コード(i)、
(ii)、(iii)をもつバブルの組合せを迂回する
のに使用できる。命令JとJnzは、バブル62、64
が分類コード(v)のバブルとしてみなされるように分
類コード(v)をもつ。
w、Ldpwはリテラルまたは作業領域演算が必要であ
り、共通分類コード’(i)を共有する。図2のソース
オペランド1のバブル24、26、28、ソースオペラ
ンド2のバブル34、36、38、行先オペランドおよ
び記憶部分のバブル52、54、56は分類コード
(i)のバブルとして考えることができる。命令Ldv
は分類コード(ii)をもつので、バブル30、40は
分類コード(ii)のバブルとして考えることができ
る。命令ALUOpは、算術演算部分のバブル48が分
類コード(iii)のバブルとして考えることができる
ような分類(iii)をもつ。行先オペランドおよび記
憶部分のバブル58が示しているように、命令Stvは
分類コード(ii)と(iv)をもつ。命令Adlは分
類コード(i)、(iii)をもつので、これは、バブ
ル46により示されているように分類コード(i)、
(ii)、(iii)をもつバブルの組合せを迂回する
のに使用できる。命令JとJnzは、バブル62、64
が分類コード(v)のバブルとしてみなされるように分
類コード(v)をもつ。
【0028】図3は、個々の命令は分類(i)ないし
(v)と置換されている図2のバージョンを示す。容易
に理解できるように、命令の分類コードに関する情報と
命令列のその命令の前の命令に割り当てられた位置が次
の命令のバブルを決定する。
(v)と置換されている図2のバージョンを示す。容易
に理解できるように、命令の分類コードに関する情報と
命令列のその命令の前の命令に割り当てられた位置が次
の命令のバブルを決定する。
【0029】図2に示した規則の使用は図4ないし図9
で示された例に関連して記載される。命令復号ユニット
12により受け取られた各命令列では、実行のために復
号された形で実行ユニット13に同時に発行できる互換
性のある命令のグループは、図2を左から右に横切るこ
とにより形成できる。命令は連続して検査され、分類さ
れ、適切なバブルを表すグループコードが与えられる。
バブルが占有されると、次の命令は、最後の占有された
バブルの前のバブルに入力されることになる。図の終端
に到達したり、これ以上の命令が残りのバブルに一致し
ない命令列の位置に到達したら、バブルに入力されたす
べての命令は互換グループを含む。ただし矢印により示
された経路または図2の始めから終わりに続いた完全な
バブルにより示された経路があるという条件下である。
以下の例では、この経路は太い黒線により示してある。
実行ユニットの完全な機能を最大に発揮するためには、
各互換性グループにたいしてできるだけ多くのバブルを
満たすことが必要である。
で示された例に関連して記載される。命令復号ユニット
12により受け取られた各命令列では、実行のために復
号された形で実行ユニット13に同時に発行できる互換
性のある命令のグループは、図2を左から右に横切るこ
とにより形成できる。命令は連続して検査され、分類さ
れ、適切なバブルを表すグループコードが与えられる。
バブルが占有されると、次の命令は、最後の占有された
バブルの前のバブルに入力されることになる。図の終端
に到達したり、これ以上の命令が残りのバブルに一致し
ない命令列の位置に到達したら、バブルに入力されたす
べての命令は互換グループを含む。ただし矢印により示
された経路または図2の始めから終わりに続いた完全な
バブルにより示された経路があるという条件下である。
以下の例では、この経路は太い黒線により示してある。
実行ユニットの完全な機能を最大に発揮するためには、
各互換性グループにたいしてできるだけ多くのバブルを
満たすことが必要である。
【0030】バブルを満たすことは命令列のルックアヘ
ッド情報が必要である。すなわち、以後および以前の命
令に関する情報が命令を正確に入力するために必要であ
る。たとえば、命令列が「Ldw n、Ldv
m、...」で始まる場合、それらはソースオペランド
1のバブル24、30を満たす。しかし、命令列が「L
dwn、 Stv m、...」で始まる場合、それら
は行先オペランドおよび記憶部分のバブル52、58を
満たす。したがって、Ldw n命令の位置は以後の命
令により決定される。
ッド情報が必要である。すなわち、以後および以前の命
令に関する情報が命令を正確に入力するために必要であ
る。たとえば、命令列が「Ldw n、Ldv
m、...」で始まる場合、それらはソースオペランド
1のバブル24、30を満たす。しかし、命令列が「L
dwn、 Stv m、...」で始まる場合、それら
は行先オペランドおよび記憶部分のバブル52、58を
満たす。したがって、Ldw n命令の位置は以後の命
令により決定される。
【0031】図4の例では、命令列がLdw n、Ld
v m、Ldw p、Ldv q、Add、Ldw
r、Stv sである。最初の命令Ldwはバブル24
を占有し、第2の命令はバブル30を占有し、第3の命
令Ldwはバブル34を占有し、次の命令Ldvはバブ
ル40を占有し、Add命令はバブル48を占有し、L
dw命令はバブル52を占有し、Stv命令はバブル5
8を占有する。実行ユニットは、図4の太い線で示した
単一の非分岐経路により示してあるように一連の命令を
実行し、バブル24、30、34、40、48、52、
58を進む。
v m、Ldw p、Ldv q、Add、Ldw
r、Stv sである。最初の命令Ldwはバブル24
を占有し、第2の命令はバブル30を占有し、第3の命
令Ldwはバブル34を占有し、次の命令Ldvはバブ
ル40を占有し、Add命令はバブル48を占有し、L
dw命令はバブル52を占有し、Stv命令はバブル5
8を占有する。実行ユニットは、図4の太い線で示した
単一の非分岐経路により示してあるように一連の命令を
実行し、バブル24、30、34、40、48、52、
58を進む。
【0032】図5の例では、命令列はAdd、Ldw
n、Stv mである。復号器が検査する最初の命令は
命令Addであり、これが入力される最初のバブルはバ
ブル48である。図5のソースオペランド1とソースオ
ペランド2は矢印68、32、44により迂回される。
次の命令はLdwであり、バブル52に入力され、命令
Stvはバブル58に入力される。命令Ldwはバブル
24または34に入力はできない、というのはこれらの
バブルはすでに迂回されているからである。命令をグル
ープ化する規則の要件は、命令が最後に満たされたバブ
ルの前のバブルに入力することである。
n、Stv mである。復号器が検査する最初の命令は
命令Addであり、これが入力される最初のバブルはバ
ブル48である。図5のソースオペランド1とソースオ
ペランド2は矢印68、32、44により迂回される。
次の命令はLdwであり、バブル52に入力され、命令
Stvはバブル58に入力される。命令Ldwはバブル
24または34に入力はできない、というのはこれらの
バブルはすでに迂回されているからである。命令をグル
ープ化する規則の要件は、命令が最後に満たされたバブ
ルの前のバブルに入力することである。
【0033】図6ないし図9に記載された例は、具体的
なプログラミング問題に対する解を表す。すなわち、N
整数を加算し和を記憶する高レベルプログラミング言語
のFORループは、プログラムの以下に示す2つの行に
よりOCCAM(高レベルプログラミング言語(「Prog
ramming Manual-OCCAM」(プログラミングマニュアル-O
CCAM) 、INMOS Limited 、1983) 参照)で表せる。 SEQ i = O FOR N Sum : = Sum + y[i] ただし、NとSumは整数で、yはN個の整数の行列で
ある。SumとNはこのループの前で初期化する。高レ
ベルコードの2つの行は、命令列1と呼ばれる以下の低
レベル命令列にコンパイルされる。 Ldw Sum ;「Sum」の初期値を得る。 LOOP: Ldw y Ldv 0 ;配列要素をロードする。 Add ;配列要素を「Sum」に加える。 Ldw y ;配列ポインタを増分する。 Adl 1 Stw y Ldw y ;配列の終わりに達したか。 Adl (-Maxy) (ここでMaxy =ystart + N) Jnz LOOP: ;そうでない場合、ループにジャンプす る。 Stw Sum ;「Sum」に最終結果をセーブする。
なプログラミング問題に対する解を表す。すなわち、N
整数を加算し和を記憶する高レベルプログラミング言語
のFORループは、プログラムの以下に示す2つの行に
よりOCCAM(高レベルプログラミング言語(「Prog
ramming Manual-OCCAM」(プログラミングマニュアル-O
CCAM) 、INMOS Limited 、1983) 参照)で表せる。 SEQ i = O FOR N Sum : = Sum + y[i] ただし、NとSumは整数で、yはN個の整数の行列で
ある。SumとNはこのループの前で初期化する。高レ
ベルコードの2つの行は、命令列1と呼ばれる以下の低
レベル命令列にコンパイルされる。 Ldw Sum ;「Sum」の初期値を得る。 LOOP: Ldw y Ldv 0 ;配列要素をロードする。 Add ;配列要素を「Sum」に加える。 Ldw y ;配列ポインタを増分する。 Adl 1 Stw y Ldw y ;配列の終わりに達したか。 Adl (-Maxy) (ここでMaxy =ystart + N) Jnz LOOP: ;そうでない場合、ループにジャンプす る。 Stw Sum ;「Sum」に最終結果をセーブする。
【0034】以下により詳細に説明するように、この命
令列は以下に詳述するように互換性グループにアセンブ
ルできる。 第1繰返し(3グループ) ″Ldw Sum, Ldw y, Ldv 0, Add″ ″Ldw y, Adl 1, Stw y″ ″Ldw y, Adl (-Maxy) ,Jnz Loop:″ すべての中間繰返し(3グループ) ″Ldw y, Ldv 0, Add″ ″Ldw y, Adl 1, Stw y″ ″Ldw y, Adl (-Maxy) ,Jnz Loop:″ 最後の繰返し、すなわちループが終了するときは(4グループ) ″Ldw y, Ldv 0, Add″ ″Ldw y, Adl 1, Stw y″ ″Ldw y, Adl (-Maxy) ,Jnz Loop:″ ″Stw Sum″ これらはすべて図1の実行ユニット13により実行可能
である。
令列は以下に詳述するように互換性グループにアセンブ
ルできる。 第1繰返し(3グループ) ″Ldw Sum, Ldw y, Ldv 0, Add″ ″Ldw y, Adl 1, Stw y″ ″Ldw y, Adl (-Maxy) ,Jnz Loop:″ すべての中間繰返し(3グループ) ″Ldw y, Ldv 0, Add″ ″Ldw y, Adl 1, Stw y″ ″Ldw y, Adl (-Maxy) ,Jnz Loop:″ 最後の繰返し、すなわちループが終了するときは(4グループ) ″Ldw y, Ldv 0, Add″ ″Ldw y, Adl 1, Stw y″ ″Ldw y, Adl (-Maxy) ,Jnz Loop:″ ″Stw Sum″ これらはすべて図1の実行ユニット13により実行可能
である。
【0035】命令列1のグループ化についての以下の説
明では、個々の命令バブルを示す図2が使用される。上
記のように、本明細書で記載の回路では、命令が分類さ
れてグループ化されるが、以下の記載は、原則としてグ
ループ化の規則の使用を例示する。図6を参照すると、
検査すべき第1命令はLdw sumであり、したがっ
て、これはバブル24に入力される。検査する次の命令
はLdw yであり、これはバブル34に入力され、そ
の後命令Ldv 0が続き、これはバブル40に入力さ
れる。次の命令はLdw yであり、それはバブル48
の前のバブルには入力できない。したがって、グループ
化が終了し、命令列Ldw sum、 Ldw y、
Ldv 0、 Addが互換性グループとして構成され
る。
明では、個々の命令バブルを示す図2が使用される。上
記のように、本明細書で記載の回路では、命令が分類さ
れてグループ化されるが、以下の記載は、原則としてグ
ループ化の規則の使用を例示する。図6を参照すると、
検査すべき第1命令はLdw sumであり、したがっ
て、これはバブル24に入力される。検査する次の命令
はLdw yであり、これはバブル34に入力され、そ
の後命令Ldv 0が続き、これはバブル40に入力さ
れる。次の命令はLdw yであり、それはバブル48
の前のバブルには入力できない。したがって、グループ
化が終了し、命令列Ldw sum、 Ldw y、
Ldv 0、 Addが互換性グループとして構成され
る。
【0036】図7を参照すると、グループ化は命令Ld
w yから始まり、バブル24に入力される。命令Ad
l 1はバブル46に入力され、命令Stw yはバブ
ル60に入力される。次の命令Ldw yは、バブル6
0の前のバブルに入力することはできないので、グルー
プ化は終了する。そうして決定された互換性グループは
Ldw y、Adl 1、Stw yである。
w yから始まり、バブル24に入力される。命令Ad
l 1はバブル46に入力され、命令Stw yはバブ
ル60に入力される。次の命令Ldw yは、バブル6
0の前のバブルに入力することはできないので、グルー
プ化は終了する。そうして決定された互換性グループは
Ldw y、Adl 1、Stw yである。
【0037】図8を参照すると、グループ化は、バブル
24に入力される命令Ldw yから始まる。以下の命
令Adl(−maxy)はバブル46に入力され、命令
Jnzループはバブル64に入力される。次の命令St
w sumはバブル64の前のバブルには入力できない
ので、グループ化は終了する。こうして決定された互換
性グループはLdw y、Adl(−maxy)Jnz
ループである。図9を参照すると、単一命令Stw s
umが残されており、それはバブル60に入力される。
24に入力される命令Ldw yから始まる。以下の命
令Adl(−maxy)はバブル46に入力され、命令
Jnzループはバブル64に入力される。次の命令St
w sumはバブル64の前のバブルには入力できない
ので、グループ化は終了する。こうして決定された互換
性グループはLdw y、Adl(−maxy)Jnz
ループである。図9を参照すると、単一命令Stw s
umが残されており、それはバブル60に入力される。
【0038】図10ないし図14を参照して、一連の命
令を受信し、上記の規則に応じて互換性のある命令の実
行可能なグループをその受信した命令から定義すること
ができる命令グループ化回路構成を説明する。図10に
示すように、その回路構成は、矢印102により示され
た一連の命令が供給される入力レジスタ再充填回路10
0を含む。矢印103は、ジャンプ命令の実行に応じて
復号ユニットに供給された非順次実行標識を示す。複数
の命令入力レジスタ104a、104b、...104
Nは各サイクルでN個の命令からなるグループの1つを
それぞれ受け取る。各命令入力レジスタ104a、10
4b、...104Nは占有/空きフラグ106a、1
0b、...、106Nをもつ。このフラグは各レジス
タが入力レジスタ再充填回路100からの有効命令によ
り占有されると「占有」に設定される。再充填回路10
0に利用可能なN個の命令(たとえば、k)より少ない
場合は、これらはレジスタ104a...104kに送
られて、残りのレジスタの占有/空フラグは「空」に設
定される。
令を受信し、上記の規則に応じて互換性のある命令の実
行可能なグループをその受信した命令から定義すること
ができる命令グループ化回路構成を説明する。図10に
示すように、その回路構成は、矢印102により示され
た一連の命令が供給される入力レジスタ再充填回路10
0を含む。矢印103は、ジャンプ命令の実行に応じて
復号ユニットに供給された非順次実行標識を示す。複数
の命令入力レジスタ104a、104b、...104
Nは各サイクルでN個の命令からなるグループの1つを
それぞれ受け取る。各命令入力レジスタ104a、10
4b、...104Nは占有/空きフラグ106a、1
0b、...、106Nをもつ。このフラグは各レジス
タが入力レジスタ再充填回路100からの有効命令によ
り占有されると「占有」に設定される。再充填回路10
0に利用可能なN個の命令(たとえば、k)より少ない
場合は、これらはレジスタ104a...104kに送
られて、残りのレジスタの占有/空フラグは「空」に設
定される。
【0039】簡潔にするために、以下の説明では、「占
有」または「空」に設定されている占有/空フラグをも
つ入力レジスタはそれぞれ「占有」または「空」入力レ
ジスタと呼ぶ。図10に示すように、その回路構成は、
命令入力レジスタ104a、104b...104Nに
それぞれ接続されている複数の命令分類子108、10
8b...108Nを含む。複数の復号器110a、1
10b、...110Nはそれぞれ命令入力レジスタ1
04a、104b...104Nに接続されている。図
10を参照して以下の説明に記載された回路構成は、上
記で定義された単一復号サイクル内で発生する複数の連
続段で動作する。命令が入力レジスタ再充填回路100
から入力命令レジスタ104a、104b...104
Nに供給されるそれらの段に続く段で、命令は、命令入
力レジスタからそれぞれの命令分類子と復号器に渡され
る。各命令分類子108a、108b...108N
は、分類コードを作成するために受信された命令を分類
する。この分類コードは、上記のように、命令を実行す
るために命令が要求する実行ユニット中の機能ユニット
を指定する。空入力レジスタは命令グループ化終端子と
して分類される。命令分類子108a、108b...
108Nは分類コードを命令グルーパー112に供給す
るよう接続される。この命令グルーパーは、分類コード
を検査する、同時に実行ユニット13に発行される命令
の最大グループを形成する。これを行うために、そのグ
ルーパーは、上記に記載された図2と図3に示してある
規則を利用する。その命令グルーパーは次の分類コー
ド、すなわち、最初に命令分類子108aから発行され
たものを検査する。受信され、検査中のグループのより
早い時期の命令により形成されたグループへの有効拡張
子になりえない第1分類コードまたは空の第1命令入力
レジスタにより、グループ化が終了する。こうした第1
命令(またはこうした第1命令入力レジスタ)がi番目
の命令(またはレジスタ)であると仮定すると、命令グ
ルーパーはi個の命令のグループを作成することにな
る。N個の命令入力レジスタがすべて占有されていてN
個の命令が1グループで実行可能である場合、i=Nと
なることが可能になる。実行可能な命令グループを発見
すると、命令グルーパー112は、その命令により占有
される図3のバブルを定義する各命令にグループコード
を生成する。
有」または「空」に設定されている占有/空フラグをも
つ入力レジスタはそれぞれ「占有」または「空」入力レ
ジスタと呼ぶ。図10に示すように、その回路構成は、
命令入力レジスタ104a、104b...104Nに
それぞれ接続されている複数の命令分類子108、10
8b...108Nを含む。複数の復号器110a、1
10b、...110Nはそれぞれ命令入力レジスタ1
04a、104b...104Nに接続されている。図
10を参照して以下の説明に記載された回路構成は、上
記で定義された単一復号サイクル内で発生する複数の連
続段で動作する。命令が入力レジスタ再充填回路100
から入力命令レジスタ104a、104b...104
Nに供給されるそれらの段に続く段で、命令は、命令入
力レジスタからそれぞれの命令分類子と復号器に渡され
る。各命令分類子108a、108b...108N
は、分類コードを作成するために受信された命令を分類
する。この分類コードは、上記のように、命令を実行す
るために命令が要求する実行ユニット中の機能ユニット
を指定する。空入力レジスタは命令グループ化終端子と
して分類される。命令分類子108a、108b...
108Nは分類コードを命令グルーパー112に供給す
るよう接続される。この命令グルーパーは、分類コード
を検査する、同時に実行ユニット13に発行される命令
の最大グループを形成する。これを行うために、そのグ
ルーパーは、上記に記載された図2と図3に示してある
規則を利用する。その命令グルーパーは次の分類コー
ド、すなわち、最初に命令分類子108aから発行され
たものを検査する。受信され、検査中のグループのより
早い時期の命令により形成されたグループへの有効拡張
子になりえない第1分類コードまたは空の第1命令入力
レジスタにより、グループ化が終了する。こうした第1
命令(またはこうした第1命令入力レジスタ)がi番目
の命令(またはレジスタ)であると仮定すると、命令グ
ルーパーはi個の命令のグループを作成することにな
る。N個の命令入力レジスタがすべて占有されていてN
個の命令が1グループで実行可能である場合、i=Nと
なることが可能になる。実行可能な命令グループを発見
すると、命令グルーパー112は、その命令により占有
される図3のバブルを定義する各命令にグループコード
を生成する。
【0040】機能ユニットセレクタ114は、命令グル
ーパー112に接続されて、命令グルーパーにより作成
されたグループコードをそこから受信する。次に、機能
ユニットセレクタは、実行ユニットの機能ユニットのど
れがグループにより要求されているかを判断する。機能
ユニット選択レジスタ200は機能ユニットセレクタ1
14の結果を保持する。次の連続段では、この情報はそ
の実行ユニット自体に送られる。命令グルーパーにより
作成されたグループコードは、実行可能グループの一部
を形成することができない命令に供給される中立グルー
プコードを含む。中立グループコードは実行ユニットの
どのユニットも可動させることはない。
ーパー112に接続されて、命令グルーパーにより作成
されたグループコードをそこから受信する。次に、機能
ユニットセレクタは、実行ユニットの機能ユニットのど
れがグループにより要求されているかを判断する。機能
ユニット選択レジスタ200は機能ユニットセレクタ1
14の結果を保持する。次の連続段では、この情報はそ
の実行ユニット自体に送られる。命令グルーパーにより
作成されたグループコードは、実行可能グループの一部
を形成することができない命令に供給される中立グルー
プコードを含む。中立グループコードは実行ユニットの
どのユニットも可動させることはない。
【0041】各復号サイクルの終わりでは、次のサイク
ルで検査がその後の命令から始まるようにそのグループ
で受け取られた最後の命令を判断する必要がある。この
目的のため、図10に示す回路構成は、複数の命令使用
判定ユニット118a...118Nを含み、これらは
命令グルーパー112の出力端に接続され、各グループ
コードを検査するよう構成される。命令は、そのグルー
プコードが中立グループコードでない場合に使用され
る。命令使用判定ユニット118a...118Nの出
力端は次グループ開始命令検出器120に接続される。
その検出器120は、その後の復号サイクルで次のグル
ープが始まる命令を判定する。次のグループ開始命令検
出器120の出力は入力レジスタ再充填回路100に供
給され、実行される次の命令の位置を定義する。入力レ
ジスタ再充填回路100は、次の非順次命令または次グ
ループ開始命令検出器により判定される命令から始まる
次の復号サイクルに基づいて入力レジスタに送られる命
令ストリームを構成する。命令分類子が分類コードを命
令グルーパーに供給し後者がグループコードを供給する
復号サイクル内の動作の同じ段で、復号器110
a...110Nは命令分類子と命令グルーパーに並行
に動作して、命令を復号し、各命令により要求される演
算とそれに関連するオペランドを指定する。発行回路1
16は、命令グルーパー112からそれにより作成され
るグループコードを受信し、復号器110から復号され
た命令を受信するよう接続される。発行回路116はグ
ループコードと復号命令を利用して、実行可能グループ
の命令から制御とデータ情報を選択する。この制御およ
びデータ情報は制御レジスタ202とデータレジスタ2
04により保持され、動作の次の段で実行ユニットに送
信される。
ルで検査がその後の命令から始まるようにそのグループ
で受け取られた最後の命令を判断する必要がある。この
目的のため、図10に示す回路構成は、複数の命令使用
判定ユニット118a...118Nを含み、これらは
命令グルーパー112の出力端に接続され、各グループ
コードを検査するよう構成される。命令は、そのグルー
プコードが中立グループコードでない場合に使用され
る。命令使用判定ユニット118a...118Nの出
力端は次グループ開始命令検出器120に接続される。
その検出器120は、その後の復号サイクルで次のグル
ープが始まる命令を判定する。次のグループ開始命令検
出器120の出力は入力レジスタ再充填回路100に供
給され、実行される次の命令の位置を定義する。入力レ
ジスタ再充填回路100は、次の非順次命令または次グ
ループ開始命令検出器により判定される命令から始まる
次の復号サイクルに基づいて入力レジスタに送られる命
令ストリームを構成する。命令分類子が分類コードを命
令グルーパーに供給し後者がグループコードを供給する
復号サイクル内の動作の同じ段で、復号器110
a...110Nは命令分類子と命令グルーパーに並行
に動作して、命令を復号し、各命令により要求される演
算とそれに関連するオペランドを指定する。発行回路1
16は、命令グルーパー112からそれにより作成され
るグループコードを受信し、復号器110から復号され
た命令を受信するよう接続される。発行回路116はグ
ループコードと復号命令を利用して、実行可能グループ
の命令から制御とデータ情報を選択する。この制御およ
びデータ情報は制御レジスタ202とデータレジスタ2
04により保持され、動作の次の段で実行ユニットに送
信される。
【0042】命令グルーパー112のより詳細な説明が
図11を参照して行なわれる。命令グルーパー112は
N個のグループ論理ユニット122a、122b...
122Nを含む。第1グループ論理ユニット122aは
第1命令の分類コードを分析し、図3に示してある規則
により、命令を入力するのに可能で適切なバブルを示す
順グラマーコードを作成する。順グラマーコードは次の
グループ論理ユニット122bに送信される。この論理
ユニット122bは、第2命令の分類コードとともにこ
のコードを利用して、第2命令が第1命令の有効な拡張
子であるかどうかを判定し、もしそうならどのような有
効な拡張子であるかを判定する。第2グループ論理ユニ
ット122bは、次のグループ論理ユニットに送られる
新しい順グラマーコードを発行する。この処理手順は継
続し、各グループ論理ユニットはより以前の段階のグル
ープ論理ユニットからのグラマーコードを利用し命令の
分類コードがその論理ユニットに送信される。「ルック
アヘッド情報」が必要な場合、上記のように、各グルー
プ論理ユニットが逆グラマーコードをグループ論理ユニ
ットに供給する図11の右側からその左側までの同様の
処理を実行することが可能である。
図11を参照して行なわれる。命令グルーパー112は
N個のグループ論理ユニット122a、122b...
122Nを含む。第1グループ論理ユニット122aは
第1命令の分類コードを分析し、図3に示してある規則
により、命令を入力するのに可能で適切なバブルを示す
順グラマーコードを作成する。順グラマーコードは次の
グループ論理ユニット122bに送信される。この論理
ユニット122bは、第2命令の分類コードとともにこ
のコードを利用して、第2命令が第1命令の有効な拡張
子であるかどうかを判定し、もしそうならどのような有
効な拡張子であるかを判定する。第2グループ論理ユニ
ット122bは、次のグループ論理ユニットに送られる
新しい順グラマーコードを発行する。この処理手順は継
続し、各グループ論理ユニットはより以前の段階のグル
ープ論理ユニットからのグラマーコードを利用し命令の
分類コードがその論理ユニットに送信される。「ルック
アヘッド情報」が必要な場合、上記のように、各グルー
プ論理ユニットが逆グラマーコードをグループ論理ユニ
ットに供給する図11の右側からその左側までの同様の
処理を実行することが可能である。
【0043】各グループ論理ユニット122のアーキテ
クチャは図12により詳細に示してある。各グループ論
理ユニット122iは、前のグループ論理ユニット12
2i−1からグラマーコードを受信し、新しい順グラマ
ーコードを次のグループ論理ユニット122i+1に供
給するよう接続されている順グラマーコーダー124を
含む。逆グラマーコーダーは次のグループ論理ユニット
122i+1から逆グラマーコードを受信し、前のグル
ープ論理ユニット122i−1に前の逆グラマーコード
を供給する。最後に、グループ論理ユニット122i
は、順および逆グラマーコードおよびその命令の分類コ
ードを検査して、構成されているグループからその命令
を受け入れるかまたは拒絶するかについて決定を下し、
グループコードを生成するグループコード生成器128
を含む。
クチャは図12により詳細に示してある。各グループ論
理ユニット122iは、前のグループ論理ユニット12
2i−1からグラマーコードを受信し、新しい順グラマ
ーコードを次のグループ論理ユニット122i+1に供
給するよう接続されている順グラマーコーダー124を
含む。逆グラマーコーダーは次のグループ論理ユニット
122i+1から逆グラマーコードを受信し、前のグル
ープ論理ユニット122i−1に前の逆グラマーコード
を供給する。最後に、グループ論理ユニット122i
は、順および逆グラマーコードおよびその命令の分類コ
ードを検査して、構成されているグループからその命令
を受け入れるかまたは拒絶するかについて決定を下し、
グループコードを生成するグループコード生成器128
を含む。
【0044】注意すべきことは、順および逆グラマーコ
ードの転送は互いから独立して行なわれる。それらの動
作は桁上げ鎖に同様であると考えられ、桁上げルックア
ヘッドまたは桁上げスキップなどの迅速桁上げ鎖設計方
法が実行できる。図10に示す回路の改良型バージョン
は図13、14に示す。図13、14では、同様の参照
番号が図10の同様の部分を示すように使用される。図
10の回路ユニットでは命令グループ112は、左側1
04aの第1命令レジスタから常に始まる互換性命令の
実行可能グループを形成するよう動作する。したがっ
て、これらのレジスタは次のN個の命令集合により再占
有されることになる。対照的に、図13、14の回路ユ
ニットでは、入力レジスタ再充填回路100は、複数の
入力レジスタ再充填ユニット130a、130b..1
30Nを含む。各命令は、各命令入力レジスタ104
a...104Nに関連した開始ビットフラグ132
a...132Nに供給される開始ビットに関連して送
られる。開始ビット1つだけがサイクル毎に設定され
る。命令グルーパー112による命令のグループ化は入
力レジスタ104iに含まれる命令とともに開始され、
この入力レジスタ104iの開始フラグ132iは設定
され、そしてN個の命令が検査されるまで命令入力レジ
スタ104i、...、104i−1を介して進む。す
なわち、開始ビットが設定されるレジスタ104iのす
ぐ後ろの入力レジスタ104iに達するまで行われる。
このようにして入力レジスタ104は循環バッファのよ
うに動作する。
ードの転送は互いから独立して行なわれる。それらの動
作は桁上げ鎖に同様であると考えられ、桁上げルックア
ヘッドまたは桁上げスキップなどの迅速桁上げ鎖設計方
法が実行できる。図10に示す回路の改良型バージョン
は図13、14に示す。図13、14では、同様の参照
番号が図10の同様の部分を示すように使用される。図
10の回路ユニットでは命令グループ112は、左側1
04aの第1命令レジスタから常に始まる互換性命令の
実行可能グループを形成するよう動作する。したがっ
て、これらのレジスタは次のN個の命令集合により再占
有されることになる。対照的に、図13、14の回路ユ
ニットでは、入力レジスタ再充填回路100は、複数の
入力レジスタ再充填ユニット130a、130b..1
30Nを含む。各命令は、各命令入力レジスタ104
a...104Nに関連した開始ビットフラグ132
a...132Nに供給される開始ビットに関連して送
られる。開始ビット1つだけがサイクル毎に設定され
る。命令グルーパー112による命令のグループ化は入
力レジスタ104iに含まれる命令とともに開始され、
この入力レジスタ104iの開始フラグ132iは設定
され、そしてN個の命令が検査されるまで命令入力レジ
スタ104i、...、104i−1を介して進む。す
なわち、開始ビットが設定されるレジスタ104iのす
ぐ後ろの入力レジスタ104iに達するまで行われる。
このようにして入力レジスタ104は循環バッファのよ
うに動作する。
【0045】次開始検出器ユニット134a...13
4Nは各入力再充填ユニット130a...130Nに
接続される。次開始検出器ユニット134は、命令使用
判定ユニット118a...118Nの出力の検出の結
果として次の復号サイクルの開始ビットおよび現復号サ
イクルの開始ビットを作成する。次のグループの開始
は、その前のものが使用されている間に使用されてない
第1命令である。入力命令がすべて使用される場合、次
のグループは現グループと同じ入力レジスタから始ま
る。
4Nは各入力再充填ユニット130a...130Nに
接続される。次開始検出器ユニット134は、命令使用
判定ユニット118a...118Nの出力の検出の結
果として次の復号サイクルの開始ビットおよび現復号サ
イクルの開始ビットを作成する。次のグループの開始
は、その前のものが使用されている間に使用されてない
第1命令である。入力命令がすべて使用される場合、次
のグループは現グループと同じ入力レジスタから始ま
る。
【0046】入力レジスタ104が空であるかまたはそ
の命令が現サイクルで使用される場合に、各入力レジス
タ104iはその入力再充填ユニット130iからの命
令が充填される。入力レジスタが有効命令で占有される
と、その占有/空ビットユニット106は「占有」に設
定される。入力再充填ユニットは利用可能な有効命令を
有してなくその対応する入力レジスタに再充填が必要な
場合、そのレジスタの占有/空フラグは「空」に設定さ
れる。これは、現サイクルでグループ化されない占有入
力レジスタが次の復号サイクルで使用されるよう保持さ
れることを意味する。さらに、すべての入力命令が現サ
イクルで使用される、すべての入力レジスタは次のサイ
クルの新しい命令により再充填される個とになる。
の命令が現サイクルで使用される場合に、各入力レジス
タ104iはその入力再充填ユニット130iからの命
令が充填される。入力レジスタが有効命令で占有される
と、その占有/空ビットユニット106は「占有」に設
定される。入力再充填ユニットは利用可能な有効命令を
有してなくその対応する入力レジスタに再充填が必要な
場合、そのレジスタの占有/空フラグは「空」に設定さ
れる。これは、現サイクルでグループ化されない占有入
力レジスタが次の復号サイクルで使用されるよう保持さ
れることを意味する。さらに、すべての入力命令が現サ
イクルで使用される、すべての入力レジスタは次のサイ
クルの新しい命令により再充填される個とになる。
【0047】命令グルーパー112は、図11と図12
を参照して上記に記載されたものと同様に動作する。た
だし、命令グループ化は必ずしも第1グループ論理ユニ
ット122aから始まる必要はなく、開始ビット132
iが設定される入力レジスタ104iに対応する任意の
グループ論理ユニットから始まるということも可能であ
る。この目的のために、各グループ論理ユニットは論理
手段136に結合されている。これらのグループ論理手
段は、順および逆グラマーコードの各サイクルの始まり
でそれらの開始状態への転送を起動させることができる
2ないし1マルチプレクサの形式を取ることができる。
を参照して上記に記載されたものと同様に動作する。た
だし、命令グループ化は必ずしも第1グループ論理ユニ
ット122aから始まる必要はなく、開始ビット132
iが設定される入力レジスタ104iに対応する任意の
グループ論理ユニットから始まるということも可能であ
る。この目的のために、各グループ論理ユニットは論理
手段136に結合されている。これらのグループ論理手
段は、順および逆グラマーコードの各サイクルの始まり
でそれらの開始状態への転送を起動させることができる
2ないし1マルチプレクサの形式を取ることができる。
【0048】実行ユニットの機能による芽命令のグルー
プ化は、これまでよりもより早い速度で命令を処理する
ことを可能にする。命令処理システムがパイプラインで
ある場合は更に早い速度で処理することが可能である。
パイプライン化の原理は、当分野の技術者により容易に
理解されるが、以下の説明を支援するために、命令取出
しユニット2、命令復号ユニット4および命令実行ユニ
ット6を含む単純なパイプラインを示す図15を参照す
る。動作の各サイクル中に、命令復号ユニット4が、命
令取出しユニットから1つの命令を受信し、それを復号
し、それを復号形式で命令実行ユニット6に発行する。
この場合には、実行サイクルは、実行ユニットにより1
つの命令の実行にかかる時間である。したがって、この
単純なパイプラインは、復号サイクル当たり1命令が命
令実行ユニットに発行されるよう動作される。以下に示
す命令の規範的なシーケンスのためのサイクル対サイク
ル動作を図20に示す。 ″Ldw n ,Ldv m ,Ldw p ,Ldv q ,Add ,Ldw r ,St
v s ″ ここで、m,n,p,q,r,及びsは整数である。
プ化は、これまでよりもより早い速度で命令を処理する
ことを可能にする。命令処理システムがパイプラインで
ある場合は更に早い速度で処理することが可能である。
パイプライン化の原理は、当分野の技術者により容易に
理解されるが、以下の説明を支援するために、命令取出
しユニット2、命令復号ユニット4および命令実行ユニ
ット6を含む単純なパイプラインを示す図15を参照す
る。動作の各サイクル中に、命令復号ユニット4が、命
令取出しユニットから1つの命令を受信し、それを復号
し、それを復号形式で命令実行ユニット6に発行する。
この場合には、実行サイクルは、実行ユニットにより1
つの命令の実行にかかる時間である。したがって、この
単純なパイプラインは、復号サイクル当たり1命令が命
令実行ユニットに発行されるよう動作される。以下に示
す命令の規範的なシーケンスのためのサイクル対サイク
ル動作を図20に示す。 ″Ldw n ,Ldv m ,Ldw p ,Ldv q ,Add ,Ldw r ,St
v s ″ ここで、m,n,p,q,r,及びsは整数である。
【0049】各サイクルの終わりで、命令取出しユニッ
ト2は、次のサイクルで命令復号ユニット4に渡される
利用可能な次の命令をもつ。図20から分かるように、
各サイクルでは、1つの命令は復号されるが、前のサイ
クルで復号された命令が実行される。このパイプライン
では、命令実行ユニットはサイクル当たり1つだけの命
令を実行可能である。プロセッサの命令のスループット
は、復号器がサイクル毎に実行ユニットに発行する命令
の数に応じて定義される。図20から分かるように、図
15に示すパイプラインの命令スループットはサイクル
当たり1命令である。
ト2は、次のサイクルで命令復号ユニット4に渡される
利用可能な次の命令をもつ。図20から分かるように、
各サイクルでは、1つの命令は復号されるが、前のサイ
クルで復号された命令が実行される。このパイプライン
では、命令実行ユニットはサイクル当たり1つだけの命
令を実行可能である。プロセッサの命令のスループット
は、復号器がサイクル毎に実行ユニットに発行する命令
の数に応じて定義される。図20から分かるように、図
15に示すパイプラインの命令スループットはサイクル
当たり1命令である。
【0050】図16は、命令実行ユニット6が4つの
段、段0ないし段3を含むパイプラインの修正バージョ
ンを示す。実行ユニットのそれらの段は、上記で定義さ
れた命令セットが必要とする異なる演算に対処するよう
設計されている。各段の機能は以下に示すように機能ユ
ニットの分類に対応する。 段0 分類(i) 段1 分類(ii) 段2 分類(iii) 段3 分類(iv) 図16のパイプラインの動作は図17,18,及び図2
1を参照して記載される。パイプラインは簡単な規則の
集合にしたがって動作する。第1に、復号ユニット4が
任意の数の命令を復号できるので、実行の各段は、単一
実行サイクルで、段の分類に応じて1つの命令またはお
そらく命令の一部を実行できる。第2に、各段は、各サ
イクル内で命令(または命令の一部)を実行するかまた
はそれを次の段に渡すかを判定する。1つの実行サイク
ルでは、命令(またはその未実行部分)が次の段に進む
だけである。
段、段0ないし段3を含むパイプラインの修正バージョ
ンを示す。実行ユニットのそれらの段は、上記で定義さ
れた命令セットが必要とする異なる演算に対処するよう
設計されている。各段の機能は以下に示すように機能ユ
ニットの分類に対応する。 段0 分類(i) 段1 分類(ii) 段2 分類(iii) 段3 分類(iv) 図16のパイプラインの動作は図17,18,及び図2
1を参照して記載される。パイプラインは簡単な規則の
集合にしたがって動作する。第1に、復号ユニット4が
任意の数の命令を復号できるので、実行の各段は、単一
実行サイクルで、段の分類に応じて1つの命令またはお
そらく命令の一部を実行できる。第2に、各段は、各サ
イクル内で命令(または命令の一部)を実行するかまた
はそれを次の段に渡すかを判定する。1つの実行サイク
ルでは、命令(またはその未実行部分)が次の段に進む
だけである。
【0051】図17,18及び図21は、これらの規則
の図16のパイプラインへの適用を示す。図17,18
では、各段を定義するブロックの命令が実行中の命令を
示すし、垂直矢印に対する命令が次の段に転送中の命令
を示す。以下の説明を容易にするために、命令は、それ
らが図21に示してある命令列に現われる順序で番号付
けられる。これらの番号は図17,18で使用される。
の図16のパイプラインへの適用を示す。図17,18
では、各段を定義するブロックの命令が実行中の命令を
示すし、垂直矢印に対する命令が次の段に転送中の命令
を示す。以下の説明を容易にするために、命令は、それ
らが図21に示してある命令列に現われる順序で番号付
けられる。これらの番号は図17,18で使用される。
【0052】サイクル1では、命令1と2が復号され段
0に渡される。命令がまだ実行段のどれにもないので実
行は行なわれない。サイクル2では、命令1がパイプラ
インの段0により実行されている間に命令3、4、5が
復号される。パイプラインの段0が命令1を実行する決
定を下すので、その段は命令2をパイプラインの次の
段、段1に渡す。サイクル3では、命令6と7は復号さ
れて、本命令列の復号化を完了するが、パイプラインの
段0は、それに利用可能な命令3、4、5から命令3を
実行することを決定する。命令4と5はしたがってクロ
ックサイクル3でパイプライン段1の第2段に渡され
る。その間、パイプラインの段1はそれがサイクル2で
受信した命令2を実行中である。
0に渡される。命令がまだ実行段のどれにもないので実
行は行なわれない。サイクル2では、命令1がパイプラ
インの段0により実行されている間に命令3、4、5が
復号される。パイプラインの段0が命令1を実行する決
定を下すので、その段は命令2をパイプラインの次の
段、段1に渡す。サイクル3では、命令6と7は復号さ
れて、本命令列の復号化を完了するが、パイプラインの
段0は、それに利用可能な命令3、4、5から命令3を
実行することを決定する。命令4と5はしたがってクロ
ックサイクル3でパイプライン段1の第2段に渡され
る。その間、パイプラインの段1はそれがサイクル2で
受信した命令2を実行中である。
【0053】サイクル4では、パイプラインの段0が命
令6を実行するよう決定する。したがって、命令7はパ
イプラインの段1に渡される。同時に、パイプラインの
段1は、命令4を実行するよう決定し、命令5をパイプ
ラインの段2に渡す。連続するシステムにおいて、サイ
クル4では、さらなる命令列の復号化が始まるが、これ
は本明細書には記載されてない。サイクル5では、本例
のパイプラインの段0が実行すべき命令または決定を下
すべき命令をもってないので、なにも行なわない。パイ
プラインの段1は命令7の一部を実行する決定を下す。
注意すべきは、命令7が命令Stv nで、アドレスの
生成とそのアドレスでのメモリへの書込みを必要とする
ことである。パイプラインの段3だけがメモリ書込み動
作を実行可能である。このため、パイプラインの段1は
命令7のメモリアドレス生成部分を実行するよう決定
し、残りの部分をパイプラインの段2に渡す。その間、
パイプラインの段2は命令5を実行中である。
令6を実行するよう決定する。したがって、命令7はパ
イプラインの段1に渡される。同時に、パイプラインの
段1は、命令4を実行するよう決定し、命令5をパイプ
ラインの段2に渡す。連続するシステムにおいて、サイ
クル4では、さらなる命令列の復号化が始まるが、これ
は本明細書には記載されてない。サイクル5では、本例
のパイプラインの段0が実行すべき命令または決定を下
すべき命令をもってないので、なにも行なわない。パイ
プラインの段1は命令7の一部を実行する決定を下す。
注意すべきは、命令7が命令Stv nで、アドレスの
生成とそのアドレスでのメモリへの書込みを必要とする
ことである。パイプラインの段3だけがメモリ書込み動
作を実行可能である。このため、パイプラインの段1は
命令7のメモリアドレス生成部分を実行するよう決定
し、残りの部分をパイプラインの段2に渡す。その間、
パイプラインの段2は命令5を実行中である。
【0054】サイクル6では、実行する命令をもつパイ
プラインの段は段2だけである。段2は命令7の第2部
分を保持している。しかし、段2は、この命令を実施す
る容量をもっていないので、クロックサイクルは、命令
7の第2部分をパイプラインの段3に渡すのに利用され
る。サイクル7では、パイプラインの段3が命令7の最
終部分を実行して命令列を完成させる。
プラインの段は段2だけである。段2は命令7の第2部
分を保持している。しかし、段2は、この命令を実施す
る容量をもっていないので、クロックサイクルは、命令
7の第2部分をパイプラインの段3に渡すのに利用され
る。サイクル7では、パイプラインの段3が命令7の最
終部分を実行して命令列を完成させる。
【0055】図21から分かるように、7つの命令が3
つのサイクルを介して命令実行ユニットに発行されるの
で、模範的な命令セットの命令スループットはサイクル
当たり7/3=2.33である。このパイプライン方式
の例では、取出しユニット2と復号ユニット4がそれぞ
れ実行ユニットの段0ないし3のそれぞれと同じサイク
ル時間をもつパイプラインの各段を形成する。上記の説
明から分かるように、命令の列が連続して利用できると
仮定すると、パイプライン化から得られる利益は、パイ
プラインの各段が、最適の場合、常に各サイクルに一度
動作することである。これらの原理は、取出しユニット
10、復号ユニット12および実行ユニット13を図1
9に示す複数のパイプライン方式段として構成すること
により本発明で使用可能である。図1を参照して上記で
定義された命令処理システムにより、4つのサイクル
が、実行ユニットにより実行されるよう互換性のある命
令の実行可能なグループのために取られる。これまでの
実行可能グループのすべての命令が完全に実行されると
次の実行可能グループが発行されるだけなので、復号ユ
ニットは4サイクルに一度命令グループを発行する。対
照的に、図19の構成により、パイプラインの各段が1
サイクルで動作し、命令の新しいグループが各サイクル
毎に実行ユニットの第1段に発行される。したがって、
命令復号ユニットからの命令の発行が速くなる。これ
は、6段のパイプラインを示す図19に関する以下の詳
細な記載から明確に分かる。
つのサイクルを介して命令実行ユニットに発行されるの
で、模範的な命令セットの命令スループットはサイクル
当たり7/3=2.33である。このパイプライン方式
の例では、取出しユニット2と復号ユニット4がそれぞ
れ実行ユニットの段0ないし3のそれぞれと同じサイク
ル時間をもつパイプラインの各段を形成する。上記の説
明から分かるように、命令の列が連続して利用できると
仮定すると、パイプライン化から得られる利益は、パイ
プラインの各段が、最適の場合、常に各サイクルに一度
動作することである。これらの原理は、取出しユニット
10、復号ユニット12および実行ユニット13を図1
9に示す複数のパイプライン方式段として構成すること
により本発明で使用可能である。図1を参照して上記で
定義された命令処理システムにより、4つのサイクル
が、実行ユニットにより実行されるよう互換性のある命
令の実行可能なグループのために取られる。これまでの
実行可能グループのすべての命令が完全に実行されると
次の実行可能グループが発行されるだけなので、復号ユ
ニットは4サイクルに一度命令グループを発行する。対
照的に、図19の構成により、パイプラインの各段が1
サイクルで動作し、命令の新しいグループが各サイクル
毎に実行ユニットの第1段に発行される。したがって、
命令復号ユニットからの命令の発行が速くなる。これ
は、6段のパイプラインを示す図19に関する以下の詳
細な記載から明確に分かる。
【0056】図19では、実行ユニット13が4つのパ
イプライン方式段に分割される。パイプラインの段2は
3つの分類(i)機能ユニット14a、14b、14c
を含む。パイプラインの段3は、3つの分類(ii)機
能ユニット16a、16b、16cを含む。図19のパ
イプラインの段4は、算術または論理(ALU)演算を
実行する分類(iii)機能ユニット18を含む。段5
は、メモリ書込み演算を実行する分類(iv)機能ユニ
ット20を含む。
イプライン方式段に分割される。パイプラインの段2は
3つの分類(i)機能ユニット14a、14b、14c
を含む。パイプラインの段3は、3つの分類(ii)機
能ユニット16a、16b、16cを含む。図19のパ
イプラインの段4は、算術または論理(ALU)演算を
実行する分類(iii)機能ユニット18を含む。段5
は、メモリ書込み演算を実行する分類(iv)機能ユニ
ット20を含む。
【0057】図22に、図19の命令処理システムのサ
イクル毎の動作を示す。以下の説明では、命令グループ
が、互換性の命令の実行化能グループとして決定された
グループである。以下の説明は図15のパイプラインを
説明するのに使用された命令グループを使用する。サイ
クル1では、7つの命令のグループが復号形式で実行ユ
ニットに発行される。サイクル2では、すべての命令が
パイプラインの段2に渡される。この段2は、命令を実
行するかどうか決定を下し、もし実行するなら、その実
行ユニット14a、14b、14cのどれにおいてかを
決定するか、またはそれらの命令が次の段に渡されるべ
きかどうかを決定する。命令1、3、6を実行する決定
を下し、命令2、4、5、7を段3に渡す。命令1、
3、6の実行により3つのアドレスが作成され、その2
つは読取り用で、段3の命令実行ユニット16a、16
bに渡され、他の1つは書込み用で、段3の命令実行ユ
ニット16cに渡される。サイクル3では、段3が命令
実行ユニット16a、16bで命令2と4を実行する決
定を下し、2つのオペランドを作成し、命令実行ユニッ
ト16cで命令7のアドレス生成部分を実行する。オペ
ランドは、命令5と同様に、段4に渡され、他方命令7
の他の部分(メモリ書込み動作)はパイプラインの段4
から段5にわたって命令実行ユニット16cからクロッ
クが刻まれる。サイクル4では、段4が命令5を実行し
て、書込みデータを生成し、命令7の他の部分を段5に
渡し、サイクル5で、パイプラインの段5が段3からの
書込みアドレスと段4からのデータを用いて命令7の他
の部分を実行して命令セットを完成させる。
イクル毎の動作を示す。以下の説明では、命令グループ
が、互換性の命令の実行化能グループとして決定された
グループである。以下の説明は図15のパイプラインを
説明するのに使用された命令グループを使用する。サイ
クル1では、7つの命令のグループが復号形式で実行ユ
ニットに発行される。サイクル2では、すべての命令が
パイプラインの段2に渡される。この段2は、命令を実
行するかどうか決定を下し、もし実行するなら、その実
行ユニット14a、14b、14cのどれにおいてかを
決定するか、またはそれらの命令が次の段に渡されるべ
きかどうかを決定する。命令1、3、6を実行する決定
を下し、命令2、4、5、7を段3に渡す。命令1、
3、6の実行により3つのアドレスが作成され、その2
つは読取り用で、段3の命令実行ユニット16a、16
bに渡され、他の1つは書込み用で、段3の命令実行ユ
ニット16cに渡される。サイクル3では、段3が命令
実行ユニット16a、16bで命令2と4を実行する決
定を下し、2つのオペランドを作成し、命令実行ユニッ
ト16cで命令7のアドレス生成部分を実行する。オペ
ランドは、命令5と同様に、段4に渡され、他方命令7
の他の部分(メモリ書込み動作)はパイプラインの段4
から段5にわたって命令実行ユニット16cからクロッ
クが刻まれる。サイクル4では、段4が命令5を実行し
て、書込みデータを生成し、命令7の他の部分を段5に
渡し、サイクル5で、パイプラインの段5が段3からの
書込みアドレスと段4からのデータを用いて命令7の他
の部分を実行して命令セットを完成させる。
【0058】明らかなことに、復号ユニットにより発行
される命令がパイプラインの各段の用途を最大に発揮す
る互換性グループにグループ化される場合、図19のパ
イプラインの全機能が開発できるだけである。同時に発
行された命令の任意のグループがパイプラインの機能の
いくつかまたはすべてを同時に使用できることも明らか
である。命令グループがパイプラインを通過すると、各
段がその命令を実行し、そのためその結果を作成し、非
実行命令と実行された命令の結果が次の段に渡される。
パイプライン段が命令により必要とされない場合、その
命令は、動作が実行されず新しい結果が生成されなかっ
た次のサイクルで次の段に渡される。上記の例では、同
時発行のために選択される命令のグループは、実行ユニ
ットの機能ユニット上のそうした命令の要求が任意の機
能ユニットの同時使用のために要求が対立しないように
分散されるという点で互換性があることも明らかであ
る。
される命令がパイプラインの各段の用途を最大に発揮す
る互換性グループにグループ化される場合、図19のパ
イプラインの全機能が開発できるだけである。同時に発
行された命令の任意のグループがパイプラインの機能の
いくつかまたはすべてを同時に使用できることも明らか
である。命令グループがパイプラインを通過すると、各
段がその命令を実行し、そのためその結果を作成し、非
実行命令と実行された命令の結果が次の段に渡される。
パイプライン段が命令により必要とされない場合、その
命令は、動作が実行されず新しい結果が生成されなかっ
た次のサイクルで次の段に渡される。上記の例では、同
時発行のために選択される命令のグループは、実行ユニ
ットの機能ユニット上のそうした命令の要求が任意の機
能ユニットの同時使用のために要求が対立しないように
分散されるという点で互換性があることも明らかであ
る。
【図1】本発明による方法を実施する命令処理システム
のブロック図。
のブロック図。
【図2】命令実行ユニットに送信されるよう命令がグル
ープ化される規則の集合を示す図。
ープ化される規則の集合を示す図。
【図3】命令実行ユニットに送信されるよう命令がグル
ープ化される規則の集合を示す図。
ープ化される規則の集合を示す図。
【図4】図2及び図3に示される規則の適用例を示す
図。
図。
【図5】図2及び図3に示される規則の適用例を示す
図。
図。
【図6】図2及び図3に示される規則の適用例を示す
図。
図。
【図7】図2及び図3に示される規則の適用例を示す
図。
図。
【図8】図2及び図3に示される規則の適用例を示す
図。
図。
【図9】図2及び図3に示される規則の適用例を示す
図。
図。
【図10】パイプラインに供給するために命令をグルー
プ化し復号する命令復号ユニットの構成図。
プ化し復号する命令復号ユニットの構成図。
【図11】図10の復号ユニットのグループ化回路構成
を示すより詳細な構成図。
を示すより詳細な構成図。
【図12】図11に示すグループ論理ユニットのより詳
細な構成図。
細な構成図。
【図13】図12に示す命令復号ユニットの改良バージ
ョンの構成図。
ョンの構成図。
【図14】図12に示す命令復号ユニットの改良バージ
ョンの構成図。
ョンの構成図。
【図15】単純なパイプラインの構成図。
【図16】複数の実行段を含む実行ユニットがあるパイ
プラインの構成図。
プラインの構成図。
【図17】典型的な命令集合のパイプラインにおける実
行の様々な段を示す図。
行の様々な段を示す図。
【図18】典型的な命令集合のパイプラインにおける実
行の様々な段を示す図。
行の様々な段を示す図。
【図19】パイプラインの改良型バージョンのブロック
図。
図。
【図20】命令の規範的なシーケンスのためのサイクル
対サイクル動作を示す図表。
対サイクル動作を示す図表。
【図21】図16に示すパイプラインの動作の命令を示
す図表。
す図表。
【図22】図19の命令処理システムのサイクル毎の動
作を示す図表。
作を示す図表。
【図23】命令集合の分類を示す図表。
10 命令取出しユニット 12 命令復号ユニット 13 命令実行ユニット 14、16 機能ユニット
フロントページの続き (72)発明者 リチャード、マシュー、フォーシス イギリス国ブリストル、ピルニング、クロ スハンズ、ロード、33 (72)発明者 ブライアン、ジェレミー、パーソンズ イギリス国ブリストル、クリフトン、ロド ニー、プレイス、7、フラット、7
Claims (17)
- 【請求項1】複数の命令により形成されたプログラムを
もつコンピュータシステムで前記複数の命令を実行し、
各命令は複数の機能ユニットをもつ実行ユニットで実行
される方法において、 実行する連続する個別の命令を識別するステップと、 その命令の実行のために必要な各機能ユニットに依存す
る前記連続する命令の各命令を分類するステップと、 前記実行ユニットの任意の機能ユニットで要求が対立す
ることなく、それらの分類に応じて実行ユニットに同時
発行のために互換性のある前記連続する命令から命令の
グループを選択するステップと、 各命令の個別の識別を保持しながら前記命令のグループ
を復号するステップと、 前記グループを前記実行ユニットに同時に発行する工程
と、および前記命令のグループを実行するステップと、
を備えている方法。 - 【請求項2】連続する命令により形成されたプログラム
をもつコンピュータシステムで前記複数の命令を実行す
る方法において、 複数の段をもち、各段は少なくとも1つの機能ユニット
と、他の命令の実行により供給されるデータを要求する
ことで前記他の命令に依存している少なくとも1つの命
令を含むグループとして同時に発行される個別の互換性
命令と、を有している、実行ユニットで各命令を実行す
るステップと、 前記実行ユニットで前記命令グループを実行するステッ
プと、 ある機能ユニットにより前記他の命令の実行から誘導さ
れたデータが前記機能ユニットから出力され、前記1つ
の命令を実行する他の機能ユニットに入力される前記機
能ユニットを選択的に相互接続するステップと、を備え
ている方法。 - 【請求項3】命令を前記実行ユニットに発行する前に実
行する連続する命令を識別するステップと、前記実行ユ
ニットに同時に発行する命令互換性グループを判定する
前記連続する命令を検査するステップと、を備えている
請求項2記載の方法。 - 【請求項4】前記検査するステップは、連続する命令の
第1命令を受け取るステップと、互換性検査を通過する
連続する命令を受け取り、互換性検査を通過する最後の
命令の後または所定の最高数の命令においてグループを
終了するステップとを備えている請求項3記載の方法。 - 【請求項5】命令は互換性グループの連続を形成するよ
うに連続して検査され、各グループの第1命令は前のグ
ループの最後の命令の後の次の命令になる請求項3また
は4記載の方法。 - 【請求項6】連続する命令の検査は、その命令の実行に
必要な各機能ユニットに依存する前記命令の連続の各命
令を分類し、それらの分類に応じて命令のグループを選
択する請求項2ないし5のいずれかに記載の方法。 - 【請求項7】前記命令グループの実行は、前記実行ユニ
ットの1つまたは複数の段により同時に前記グループの
複数の前記個別の命令を実行することを含む請求項2な
いし6のいずれかに記載の方法。 - 【請求項8】連続する命令グループがパイプライン方式
の列で実行ユニットに発行される請求項2ないし7のい
ずれかに記載の方法。 - 【請求項9】命令がプログラム記憶ユニットから獲得さ
れ、前記実行ユニットに供給する前にパイプライン方式
列として復号される請求項8記載の方法。 - 【請求項10】前記実行ユニットの動作の各段は1つの
実行サイクルで実行され、前記実行ユニットは、互換性
命令の新しいグループが各実行サイクルで前記実行ユニ
ットに供給されるパイプライン方式で動作する請求項2
ないし9のいずれかに記載の方法。 - 【請求項11】第1と第2のオペランドは前記実行ユニ
ットの2つの段で1つまたは複数の機能ユニットにより
生成され、算術演算は前記実行ユニットの第3段の機能
ユニットにより実行され、前記実行ユニットの第4段
で、その結果が記憶位置に書き込まれる請求項2ないし
10のいずれかに記載の方法。 - 【請求項12】前記実行ユニットがプログラムジャンプ
命令を実行するように構成される請求項11記載の方
法。 - 【請求項13】実行する一連の命令を保持するプロセッ
サとメモリを含むコンピュータ装置において、 命令の少なくとも一部を実行するよう構成された複数の
機能ユニットと個別の互換性命令のグループを同時に発
行する命令発行回路を有し、この発行回路はその命令の
実行に必要な各機能ユニットに依存して各命令を識別す
る手段をもつ命令実行ユニットと、 連続する命令の分類を検査し、それらの分類に応じて前
記実行ユニットの任意の機能ユニットで要求が対立する
ことなく前記実行ユニットに同時に発行するために互換
性のあるグループを選択する手段とを備えているコンピ
ュータ装置。 - 【請求項14】前記実行ユニットの前記機能ユニットは
選択的に相互接続され、1つの機能ユニットによる1つ
の命令の実行から誘導されたデータが前記1つの機能ユ
ニットから出力され、前記グループの他の命令を実行す
る第2の機能ユニットに入力される請求項13記載のコ
ンピュータ装置。 - 【請求項15】前記機能ユニットが前記実行ユニットで
連続する段を形成する請求項13または14記載のコン
ピュータ装置。 - 【請求項16】前記実行ユニットの少なくとも1つの段
は、各命令を同時に実行するよう構成された複数の機能
ユニットをもつ請求項15記載のコンピュータ装置。 - 【請求項17】復号回路構成を含み、前記復号回路ユニ
ットと実行ユニットがパイプラインとして構成される請
求項13ないし16のいずれかに記載のコンピュータ装
置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB909027853A GB9027853D0 (en) | 1990-12-21 | 1990-12-21 | Multiple instruction issue |
| GB9027853.2 | 1990-12-21 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH06342371A true JPH06342371A (ja) | 1994-12-13 |
| JP3100721B2 JP3100721B2 (ja) | 2000-10-23 |
Family
ID=10687473
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP03354869A Expired - Fee Related JP3100721B2 (ja) | 1990-12-21 | 1991-12-19 | 複数の命令を発行する装置および方法 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5742783A (ja) |
| EP (1) | EP0492968B1 (ja) |
| JP (1) | JP3100721B2 (ja) |
| DE (1) | DE69127182T2 (ja) |
| GB (1) | GB9027853D0 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6438680B1 (en) | 1999-01-19 | 2002-08-20 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor |
| US6760836B2 (en) | 2000-08-08 | 2004-07-06 | Fujitsu Limited | Apparatus for issuing an instruction to a suitable issue destination |
Families Citing this family (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE69327688T2 (de) | 1992-08-12 | 2000-09-07 | Advanced Micro Devices, Inc. | Befehlsdecoder |
| WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
| US5481743A (en) * | 1993-09-30 | 1996-01-02 | Apple Computer, Inc. | Minimal instruction set computer architecture and multiple instruction issue method |
| US5958042A (en) * | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
| US5898852A (en) * | 1997-06-26 | 1999-04-27 | Sun Microsystems, Inc. | Load instruction steering in a dual data cache microarchitecture |
| US6115807A (en) * | 1997-12-19 | 2000-09-05 | Intel Corporation | Static instruction decoder utilizing a circular queue to decode instructions and select instructions to be issued |
| US6742110B2 (en) * | 1998-10-06 | 2004-05-25 | Texas Instruments Incorporated | Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution |
| US6425069B1 (en) | 1999-03-05 | 2002-07-23 | International Business Machines Corporation | Optimization of instruction stream execution that includes a VLIW dispatch group |
| US6336182B1 (en) * | 1999-03-05 | 2002-01-01 | International Business Machines Corporation | System and method for utilizing a conditional split for aligning internal operation (IOPs) for dispatch |
| US6304959B1 (en) | 1999-03-05 | 2001-10-16 | International Business Machines Corporation | Simplified method to generate BTAGs in a decode unit of a processing system |
| JP4272371B2 (ja) * | 2001-11-05 | 2009-06-03 | パナソニック株式会社 | デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。 |
| KR101412885B1 (ko) * | 2012-03-26 | 2014-06-26 | 서울대학교산학협력단 | 모드 설정 및 구분자를 이용하여 저장 매체에서의 영속화를 제어하는 방법 및 그 스토리지 시스템 |
| US9710278B2 (en) * | 2014-09-30 | 2017-07-18 | International Business Machines Corporation | Optimizing grouping of instructions |
| KR102051206B1 (ko) * | 2018-01-23 | 2019-12-02 | 연세대학교 산학협력단 | 내포된 루프 구조를 포함하는 프로그램을 위한 컴파일 장치 및 방법과 이에 관한 기록매체 |
| US10996952B2 (en) | 2018-12-10 | 2021-05-04 | SiFive, Inc. | Macro-op fusion |
| CN111857830B (zh) * | 2020-06-05 | 2023-09-22 | 上海赛昉科技有限公司 | 一种提前转发指令数据的通路设计方法、系统及存储介质 |
| US12487829B2 (en) | 2023-02-03 | 2025-12-02 | SiFive, Inc. | Macro-op fusion for pipelined architectures |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
| JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
| US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
| US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
| US4890218A (en) * | 1986-07-02 | 1989-12-26 | Raytheon Company | Variable length instruction decoding apparatus having cross coupled first and second microengines |
| US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
| US5293500A (en) * | 1989-02-10 | 1994-03-08 | Mitsubishi Denki K.K. | Parallel processing method and apparatus |
| US5197137A (en) * | 1989-07-28 | 1993-03-23 | International Business Machines Corporation | Computer architecture for the concurrent execution of sequential programs |
| US5203002A (en) * | 1989-12-27 | 1993-04-13 | Wetzel Glen F | System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle |
| JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
| US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
| EP0454985B1 (en) * | 1990-05-04 | 1996-12-18 | International Business Machines Corporation | Scalable compound instruction set machine architecture |
-
1990
- 1990-12-21 GB GB909027853A patent/GB9027853D0/en active Pending
-
1991
- 1991-12-18 DE DE69127182T patent/DE69127182T2/de not_active Expired - Fee Related
- 1991-12-18 EP EP91311769A patent/EP0492968B1/en not_active Expired - Lifetime
- 1991-12-19 JP JP03354869A patent/JP3100721B2/ja not_active Expired - Fee Related
-
1994
- 1994-08-22 US US08/293,574 patent/US5742783A/en not_active Expired - Lifetime
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6438680B1 (en) | 1999-01-19 | 2002-08-20 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor |
| US6760836B2 (en) | 2000-08-08 | 2004-07-06 | Fujitsu Limited | Apparatus for issuing an instruction to a suitable issue destination |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0492968A3 (en) | 1994-11-30 |
| US5742783A (en) | 1998-04-21 |
| GB9027853D0 (en) | 1991-02-13 |
| JP3100721B2 (ja) | 2000-10-23 |
| DE69127182D1 (de) | 1997-09-11 |
| EP0492968B1 (en) | 1997-08-06 |
| EP0492968A2 (en) | 1992-07-01 |
| DE69127182T2 (de) | 1998-03-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3100721B2 (ja) | 複数の命令を発行する装置および方法 | |
| KR100715055B1 (ko) | Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법 | |
| US6356994B1 (en) | Methods and apparatus for instruction addressing in indirect VLIW processors | |
| US6044451A (en) | VLIW processor with write control unit for allowing less write buses than functional units | |
| JP3149348B2 (ja) | 代理命令を用いる並列処理システム及び方法 | |
| US5313551A (en) | Multiport memory bypass under software control | |
| US7366874B2 (en) | Apparatus and method for dispatching very long instruction word having variable length | |
| US8413086B2 (en) | Methods and apparatus for adapting pipeline stage latency based on instruction type | |
| EP0454985A2 (en) | Scalable compound instruction set machine architecture | |
| CZ279899B6 (cs) | Zapojení pro paralelní zpracovávání dvou nebo více instrukcí paralelně v číslicovém počítači | |
| JP2002536738A (ja) | 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム | |
| US6128721A (en) | Temporary pipeline register file for a superpipelined superscalar processor | |
| WO1998011483A1 (en) | A vector processing system with multi-operation, run-time configurable pipelines | |
| JPH06318155A (ja) | コンピュータシステム | |
| US6611909B1 (en) | Method and apparatus for dynamically translating program instructions to microcode instructions | |
| JPH04299436A (ja) | メモリ回路および機能ユニットのグループを備えた処理装置 | |
| KR20000075837A (ko) | 보호형의 매우 긴 명령어 아키텍처를 위한 향상된 명령 디스패치 메카니즘 | |
| US5890009A (en) | VLIW architecture and method for expanding a parcel | |
| US20150339122A1 (en) | Processor with conditional instructions | |
| EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
| US6883088B1 (en) | Methods and apparatus for loading a very long instruction word memory | |
| US7577824B2 (en) | Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution | |
| US6099585A (en) | System and method for streamlined execution of instructions | |
| JP3737573B2 (ja) | Vliwプロセッサ | |
| JP2004021890A (ja) | データ処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080818 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090818 Year of fee payment: 9 |
|
| LAPS | Cancellation because of no payment of annual fees |