JP2992223B2 - コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 - Google Patents
コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法Info
- Publication number
- JP2992223B2 JP2992223B2 JP7178221A JP17822195A JP2992223B2 JP 2992223 B2 JP2992223 B2 JP 2992223B2 JP 7178221 A JP7178221 A JP 7178221A JP 17822195 A JP17822195 A JP 17822195A JP 2992223 B2 JP2992223 B2 JP 2992223B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- computer system
- bit length
- fields
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 24
- 230000006835 compression Effects 0.000 title claims description 3
- 238000007906 compression Methods 0.000 title claims description 3
- 238000013500 data storage Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 56
- 239000000872 buffer Substances 0.000 description 41
- 101150026173 ARG2 gene Proteins 0.000 description 5
- 101100260702 Mus musculus Tinagl1 gene Proteins 0.000 description 5
- 101150088826 arg1 gene Proteins 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 101150005267 Add1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
【0001】
【産業上の利用分野】本発明はコンピュータシステム用
に圧縮された命令及びこれらの圧縮された命令によって
コンピュータシステムを用いる方法に関する。
に圧縮された命令及びこれらの圧縮された命令によって
コンピュータシステムを用いる方法に関する。
【0002】
【従来の技術】コンピュータ命令をコード化する方法
は、命令のビット長つまりはコード密度に影響を与える
と共に命令の実行シーケンスの間に命令を解読(ディコ
ード)する速度にも影響を与えるので非常に重要であ
る。この方法はまた、命令をフェッチする(取り出す)
為に必要とされるメモリアクセスタイムにも影響を与え
る。
は、命令のビット長つまりはコード密度に影響を与える
と共に命令の実行シーケンスの間に命令を解読(ディコ
ード)する速度にも影響を与えるので非常に重要であ
る。この方法はまた、命令をフェッチする(取り出す)
為に必要とされるメモリアクセスタイムにも影響を与え
る。
【0003】コンピュータシステムにおけるプロセッサ
による一般の演算はデータの一つ以上のソースの識別を
必要として、プロセッサへの入力と共にプロセッサを操
作した結果を受け取るための宛て先を生成する。従来の
縮小命令セットコンピュータ(RISC(リスク)デバ
イス)は、全ての共通ビット長及びフォーマットである
命令を使用し、これらの命令は、プロセッサによって実
行されるべき演算を定義すると共に、演算に使用するた
めとこの演算の結果の宛て先に使用するための二つのデ
ータソースの識別を定義する。このような命令はレジス
タ又はメモリのようなアドレス可能な格納場所において
検出されるデータを操作するように使用されている。同
一サイズのこのような命令は通常、フォーマットに殆ど
変更がなく、結果的に解読動作を簡単にする。しかしな
がら、パイプライン方式の演算においてプロセッサを用
いて命令のシーケンスを実行する時、後に続く命令によ
ってアクセスできる複数の生データ項目を保持すること
が必要とされる。これは相当数のアドレス可能な場所が
命令によって識別されることを必要とし、従って利用可
能である命令の短さ(長さ)も制約してしまう。さら
に、多数の命令は単一命令によって処理することができ
るレジスタアドレスの全域を必ずしも必要とするわけで
はないのにかかわらず、結果的に、固定長命令が命令の
ビット長を不必要に長くしてしまう。これによって命令
シーケンスを保持する為に必要とされるメモリ容量及び
命令のシーケンスを得るのに必要とされるメモリアクセ
スタイムが不必要に増大され得ることがわかる。
による一般の演算はデータの一つ以上のソースの識別を
必要として、プロセッサへの入力と共にプロセッサを操
作した結果を受け取るための宛て先を生成する。従来の
縮小命令セットコンピュータ(RISC(リスク)デバ
イス)は、全ての共通ビット長及びフォーマットである
命令を使用し、これらの命令は、プロセッサによって実
行されるべき演算を定義すると共に、演算に使用するた
めとこの演算の結果の宛て先に使用するための二つのデ
ータソースの識別を定義する。このような命令はレジス
タ又はメモリのようなアドレス可能な格納場所において
検出されるデータを操作するように使用されている。同
一サイズのこのような命令は通常、フォーマットに殆ど
変更がなく、結果的に解読動作を簡単にする。しかしな
がら、パイプライン方式の演算においてプロセッサを用
いて命令のシーケンスを実行する時、後に続く命令によ
ってアクセスできる複数の生データ項目を保持すること
が必要とされる。これは相当数のアドレス可能な場所が
命令によって識別されることを必要とし、従って利用可
能である命令の短さ(長さ)も制約してしまう。さら
に、多数の命令は単一命令によって処理することができ
るレジスタアドレスの全域を必ずしも必要とするわけで
はないのにかかわらず、結果的に、固定長命令が命令の
ビット長を不必要に長くしてしまう。これによって命令
シーケンスを保持する為に必要とされるメモリ容量及び
命令のシーケンスを得るのに必要とされるメモリアクセ
スタイムが不必要に増大され得ることがわかる。
【0004】他のシステムは複合命令セットコンピュー
タ(CISC(シスク)デバイス)によって知られてい
る。長い命令は、命令シーケンスのパイプライン方式処
理中に生データを保持するために使用されるより多くの
データ格納のアドレスを識別するファシリティ(資源)
を提供してきた。しかしながら、このような長い命令は
メモリから命令を得るときに膨大なアクセスタイムを必
要とし、各命令の解読(デコーディング)を達成するた
めにより多数の演算サイクルを用いる一層拡張された解
読が必要とされる。
タ(CISC(シスク)デバイス)によって知られてい
る。長い命令は、命令シーケンスのパイプライン方式処
理中に生データを保持するために使用されるより多くの
データ格納のアドレスを識別するファシリティ(資源)
を提供してきた。しかしながら、このような長い命令は
メモリから命令を得るときに膨大なアクセスタイムを必
要とし、各命令の解読(デコーディング)を達成するた
めにより多数の演算サイクルを用いる一層拡張された解
読が必要とされる。
【0005】
【発明が解決しようとする課題】本発明の目的は、冗長
ビット配置の必要を回避すると共に命令の簡単な解読を
可能にする圧縮命令を有するコンピュータシステムを提
供することにある。
ビット配置の必要を回避すると共に命令の簡単な解読を
可能にする圧縮命令を有するコンピュータシステムを提
供することにある。
【0006】本発明の他の目的は、冗長ビット配置を回
避するようにいくつかが圧縮された可変長命令を有する
コンピュータシステムを提供することにある。
避するようにいくつかが圧縮された可変長命令を有する
コンピュータシステムを提供することにある。
【0007】本発明の他の目的は、コンピュータシステ
ムにおいてプロセッサが使用する圧縮された命令を拡張
するシステムを提供することにある。
ムにおいてプロセッサが使用する圧縮された命令を拡張
するシステムを提供することにある。
【0008】
【課題を解決するための手段】本発明は、異なるビット
長の複数の選択可能な命令を備える命令セットに応答す
るように構成された論理回路を有するコンピュータシス
テムであって、各命令が所定のビット長のフォーマット
と各々が所定のビット長である命令フィールドの所定の
シーケンスとをベースにし、いくつかの命令が前記フィ
ールドの内の選択された一つを省略し、どのフィールド
が省略されたかを示すために前記省略されたフィールド
よりビット長が短い識別子を有し、これにより前記命令
のビット長を圧縮するコンピュータシステムを提供す
る。
長の複数の選択可能な命令を備える命令セットに応答す
るように構成された論理回路を有するコンピュータシス
テムであって、各命令が所定のビット長のフォーマット
と各々が所定のビット長である命令フィールドの所定の
シーケンスとをベースにし、いくつかの命令が前記フィ
ールドの内の選択された一つを省略し、どのフィールド
が省略されたかを示すために前記省略されたフィールド
よりビット長が短い識別子を有し、これにより前記命令
のビット長を圧縮するコンピュータシステムを提供す
る。
【0009】各命令が好ましくは前記命令フィールドの
他に制御ビットを含む。
他に制御ビットを含む。
【0010】前記制御ビットは、好ましくは、命令の長
さを示し、命令においてどのフィールドが存在しており
又はどのフィールドが省略されたかを識別する。
さを示し、命令においてどのフィールドが存在しており
又はどのフィールドが省略されたかを識別する。
【0011】前記制御ビットが前記フィールドの内の一
つ以上にデータの指定を示すことができる。
つ以上にデータの指定を示すことができる。
【0012】省略された前記フィールドの内の前記選択
された一つが、好ましくは、データ保持場所のための識
別子である。前記データ保持場所がレジスタであっても
よい。
された一つが、好ましくは、データ保持場所のための識
別子である。前記データ保持場所がレジスタであっても
よい。
【0013】いくつかの実施例において、省略された前
記フィールドのうちの前記選択された一つが複数のデー
タ値を同時に保持するように構成された先入れ先出しデ
ータ格納手段の識別子である。このように、命令におけ
る単一アドレスは複数の生データ値を保持するための格
納場所を示すことができる。
記フィールドのうちの前記選択された一つが複数のデー
タ値を同時に保持するように構成された先入れ先出しデ
ータ格納手段の識別子である。このように、命令におけ
る単一アドレスは複数の生データ値を保持するための格
納場所を示すことができる。
【0014】好ましくは、選択されたフィールドの省略
により命令においてアドレスデータを必要とせずに暗黙
格納場所が指定され、前記論理回路が各省略されたフィ
ールドの省略に応答して前記暗黙格納場所へアクセスす
るように構成されている。前記暗黙格納場所は、好まし
くは、複数のデータ値を同時に保持するように構成され
た先入れ先出しデータ格納手段を備える。このように、
複数の生データ値が命令のシーケンスの動作の間、各命
令に供給されたアドレスビットの数を増加させずに保持
され得る。
により命令においてアドレスデータを必要とせずに暗黙
格納場所が指定され、前記論理回路が各省略されたフィ
ールドの省略に応答して前記暗黙格納場所へアクセスす
るように構成されている。前記暗黙格納場所は、好まし
くは、複数のデータ値を同時に保持するように構成され
た先入れ先出しデータ格納手段を備える。このように、
複数の生データ値が命令のシーケンスの動作の間、各命
令に供給されたアドレスビットの数を増加させずに保持
され得る。
【0015】所定のビット長の前記フォーマットにおけ
る前記命令フィールドは、一般に、二つのデータソース
場所及びデータ宛て先場所を示し、これによって命令の
実行に使用するためのデータのソース及び命令の実行の
結果の宛て先を示す。
る前記命令フィールドは、一般に、二つのデータソース
場所及びデータ宛て先場所を示し、これによって命令の
実行に使用するためのデータのソース及び命令の実行の
結果の宛て先を示す。
【0016】各命令は整数のバイトに等しいビット長を
有することができ、各フィールドは1バイトより短いビ
ット長を有することができる。
有することができ、各フィールドは1バイトより短いビ
ット長を有することができる。
【0017】本発明はまた、コンピュータシステムにお
いて命令のビット長を圧縮する方法を提供し、この方法
は、データ格納装置に複数の可変長の命令を格納するこ
とを備え、各命令が所定のビット長のフォーマットと各
々が所定のビット長である命令フィールドの所定のシー
ケンスとをベースにしており、いくつかの命令が、少な
くとも一つの選択された前記フィールドの省略によって
形成され、前記省略フィールドより短いビット長の識別
子によって一つ又は複数のどのフィールドが省略された
かを示し、これにより前記命令のビット長を圧縮する。
いて命令のビット長を圧縮する方法を提供し、この方法
は、データ格納装置に複数の可変長の命令を格納するこ
とを備え、各命令が所定のビット長のフォーマットと各
々が所定のビット長である命令フィールドの所定のシー
ケンスとをベースにしており、いくつかの命令が、少な
くとも一つの選択された前記フィールドの省略によって
形成され、前記省略フィールドより短いビット長の識別
子によって一つ又は複数のどのフィールドが省略された
かを示し、これにより前記命令のビット長を圧縮する。
【0018】本発明はまた、各々が所定のビット長のフ
ォーマットと各々が所定のビット長である命令フィール
ドの所定のシーケンスをベースとする複数の命令を備え
る命令セットから選択された命令を実行するように構成
されたコンピュータシステムにおいて使用するための命
令を発生する方法を提供し、この方法が、少なくともい
くつかが少なくとも一つのフィールドの省略により圧縮
され、どのフィールドが省略されたかを示すために前記
省略フィールドよりビット長が短い識別子を含む命令を
入力すること、前記省略されたフィールドを回復するよ
うに前記識別子を解読すると共に前記命令のビット長を
拡張すること、及び前記拡張された命令を出力すること
を備える。
ォーマットと各々が所定のビット長である命令フィール
ドの所定のシーケンスをベースとする複数の命令を備え
る命令セットから選択された命令を実行するように構成
されたコンピュータシステムにおいて使用するための命
令を発生する方法を提供し、この方法が、少なくともい
くつかが少なくとも一つのフィールドの省略により圧縮
され、どのフィールドが省略されたかを示すために前記
省略フィールドよりビット長が短い識別子を含む命令を
入力すること、前記省略されたフィールドを回復するよ
うに前記識別子を解読すると共に前記命令のビット長を
拡張すること、及び前記拡張された命令を出力すること
を備える。
【0019】本発明はまた、異なるビット長の複数の選
択可能な命令を備える命令セットから選択された複数の
命令を実行することを備えるコンピュータシステムの動
作方法を提供し、各命令が所定のビット長のフォーマッ
トと各々が所定のビット長である命令フィールドの所定
のシーケンスとをベースにしており、いくつかの命令が
少なくとも一つの選択された前記フィールドを省略する
と共にどのフィールドが省略されたかを示すためにこの
省略されたフィールドよりビット長が短い識別子を含
み、これによって前記命令のビット長を圧縮する。
択可能な命令を備える命令セットから選択された複数の
命令を実行することを備えるコンピュータシステムの動
作方法を提供し、各命令が所定のビット長のフォーマッ
トと各々が所定のビット長である命令フィールドの所定
のシーケンスとをベースにしており、いくつかの命令が
少なくとも一つの選択された前記フィールドを省略する
と共にどのフィールドが省略されたかを示すためにこの
省略されたフィールドよりビット長が短い識別子を含
み、これによって前記命令のビット長を圧縮する。
【0020】本発明の実施例は例及び添付図面を参照す
ることによって記述される。
ることによって記述される。
【0021】
【実施例】図1は、従来のRISC(リスク)プロセッ
サシステム用の命令フォーマットを示し、該フォーマッ
トでは全ての命令が固定長を有し、同様のビット配置フ
ォーマットとなっている。示されている例は、単一命令
11からなり、この例においては、各バイトが8ビット
長である4バイト長を有する。第1のバイト12はオペ
コード(演算コード)を定義し、この演算コードは命令
を実行する時にプロセッサによって実行されるべき特定
の演算を定義する。この第2のバイト13はこの命令を
実行する結果の値に対して宛て先のアドレスを提供す
る。バイト14及び15はこの命令を実行する際に使用
すべきデータの第1及び第2のソースのアドレスをそれ
ぞれ指定する。一般的に、バイト13、14、及び15
はすべてレジスタアドレスを指定する。このような命令
は解読が簡単であり、従って不要な解読時間をとらな
い。しかしながら、このタイプの命令における多くのオ
ペランドはテンポラリ・レジスタ(一時登録)のアドレ
スである。テンポラリ・レジスタに必要とされるアドレ
スの数を制限するように種々の提案が行われ、これらの
提案には、例えば、アキュムレータの使用が含まれ、各
命令内のフィールドはオペランドがアキュムレータ又は
明示レジスタを識別するか否かを指定する。これによっ
て多数の冗長ビット配置を有する図1に示したタイプの
固定長命令が生じる。また、これによって命令シーケン
スを保持するのに必要とされるビット配置が不必要に大
きくされ、プロセッサによって使用される命令を入手す
るとき、より大きなメモリスペースそしてより長いメモ
リアクセスタイムを取る。
サシステム用の命令フォーマットを示し、該フォーマッ
トでは全ての命令が固定長を有し、同様のビット配置フ
ォーマットとなっている。示されている例は、単一命令
11からなり、この例においては、各バイトが8ビット
長である4バイト長を有する。第1のバイト12はオペ
コード(演算コード)を定義し、この演算コードは命令
を実行する時にプロセッサによって実行されるべき特定
の演算を定義する。この第2のバイト13はこの命令を
実行する結果の値に対して宛て先のアドレスを提供す
る。バイト14及び15はこの命令を実行する際に使用
すべきデータの第1及び第2のソースのアドレスをそれ
ぞれ指定する。一般的に、バイト13、14、及び15
はすべてレジスタアドレスを指定する。このような命令
は解読が簡単であり、従って不要な解読時間をとらな
い。しかしながら、このタイプの命令における多くのオ
ペランドはテンポラリ・レジスタ(一時登録)のアドレ
スである。テンポラリ・レジスタに必要とされるアドレ
スの数を制限するように種々の提案が行われ、これらの
提案には、例えば、アキュムレータの使用が含まれ、各
命令内のフィールドはオペランドがアキュムレータ又は
明示レジスタを識別するか否かを指定する。これによっ
て多数の冗長ビット配置を有する図1に示したタイプの
固定長命令が生じる。また、これによって命令シーケン
スを保持するのに必要とされるビット配置が不必要に大
きくされ、プロセッサによって使用される命令を入手す
るとき、より大きなメモリスペースそしてより長いメモ
リアクセスタイムを取る。
【0022】本発明は可変長命令を提供する命令セット
を使用する。記述されている好ましい例においては、単
一プロセッサによって使用される種々の命令のフォーマ
ットが図2に示されている。この特定の例は異なるビッ
ト長の複数の選択可能な命令を使用し、各々が所定のビ
ット長のフォーマットと各々が所定のビット長である命
令フィールドの所定のシーケンスとをベースとし、これ
らの命令の内のいくつかがフィールドの内の選択された
一つを省略し、これはどのフィールドが省略されたかを
示すようにこの省略されたフィールドよりも短いビット
長の識別子を含み、これによって命令のビット長を圧縮
して、命令において冗長ビット配置の使用を回避するこ
とができる。示されているこの特定の例において、これ
らの命令は各8ビットの4バイト20、21、22、及
び23に分割された32ビットのフォーマットをベース
にする。このフォーマットは圧縮されてないベーシック
なフォーマットを示す図2に示されたフォーマットによ
って記述される。第1のバイト20はレングス(長さ)
インジケータ24に割り当てられた最初の二つのビット
配置を有する。次の6ビットは演算コードインジケータ
25であるフィールド1を形成し、この演算コードイン
ジケータ25はプロセッサが命令の実行に応答して実行
する特定の演算を示す。命令フォーマットにおけるこの
第1のフィールドは、同じビット配置における全ての命
令に対して設けられ、常時、演算コードを示す。
を使用する。記述されている好ましい例においては、単
一プロセッサによって使用される種々の命令のフォーマ
ットが図2に示されている。この特定の例は異なるビッ
ト長の複数の選択可能な命令を使用し、各々が所定のビ
ット長のフォーマットと各々が所定のビット長である命
令フィールドの所定のシーケンスとをベースとし、これ
らの命令の内のいくつかがフィールドの内の選択された
一つを省略し、これはどのフィールドが省略されたかを
示すようにこの省略されたフィールドよりも短いビット
長の識別子を含み、これによって命令のビット長を圧縮
して、命令において冗長ビット配置の使用を回避するこ
とができる。示されているこの特定の例において、これ
らの命令は各8ビットの4バイト20、21、22、及
び23に分割された32ビットのフォーマットをベース
にする。このフォーマットは圧縮されてないベーシック
なフォーマットを示す図2に示されたフォーマットによ
って記述される。第1のバイト20はレングス(長さ)
インジケータ24に割り当てられた最初の二つのビット
配置を有する。次の6ビットは演算コードインジケータ
25であるフィールド1を形成し、この演算コードイン
ジケータ25はプロセッサが命令の実行に応答して実行
する特定の演算を示す。命令フォーマットにおけるこの
第1のフィールドは、同じビット配置における全ての命
令に対して設けられ、常時、演算コードを示す。
【0023】第2のバイト21において、最初の2ビッ
ト配置は命令のタイプを表すインジケータ26を形成す
る。命令ビット長インジケータ24と同時に得られるこ
れら2ビット26は、命令において、どのフィールドが
存在しているか及びどのフィールドが省略されたかを示
す。第2のバイト21の次の6ビットは第2のフィール
ド27を形成する。第3のバイト22において最初の6
ビットは第3のフィールド28を定義する。最後の2ビ
ット29及び30は命令のタイプに従って演算コードイ
ンジケータの拡張、命令インジケータのタイプ、又は定
数の部分を提供する。第4のバイト23において最後の
6ビットは第4のフィールド31を形成する。最後のバ
イト23の最初の2ビット32は定数値の部分又は演算
コードインジケータの拡張を形成することができる。図
2は、全てが、図2のフォーマット12に示されている
四つのフィールドフォーマットをベースとしている15
個の異なるフォーマットを示す。選択可能なフォーマッ
トの各々は、第2、第3又は第4のフィールドの各々を
完全に包含するか又は完全に省略する。タイプインジケ
ータ26(及び拡張ビット30)は長さインジケータ2
4と組み合わされてどのフィールドが省略されたかを示
す。これらは包含されたフィールド内のデータの指定を
示し、これによりレジスタ又は定数値を示すことができ
る。各命令のビット長の圧縮によって冗長ビットを回避
するのを可能とする他に、この例によって明示アドレッ
シングを必要としない暗黙データ格納場所の識別が可能
とされる。使用される命令の基本フォーマットは図2に
おけるフォーマット12に関して最適に図示されてい
る。長さインジケータ24はそれが32ビット長命令で
あることを示している。演算コード25は実行されるべ
き演算を定義する。タイプインジケータ26は、32ビ
ット長命令の場合において、第2のフィールド27が宛
て先レジスタのアドレスを識別し、第3のフィールド2
8が第2のソースレジスタのアドレスを識別し、及び第
4のフィールド31が第1のソースレジスタのアドレス
を識別することを示す。第3のバイト22の最後の2ビ
ットと第4のバイト23の最初の2ビットは、この場
合、演算コード25の拡張部32に対してファシリティ
(資源)を用意する。幾つかの命令に関しては二つのソ
ースアドレス又は宛て先アドレスを識別することは必要
ではない。このような場合、第2、第3及び第4のフィ
ールドの内の一つ又はそれより多くが命令のビット長を
圧縮すると共に冗長なビット配置を回避するために省略
されることができる。さらに、記述されている例は、デ
ータ格納が明示アドレッシングを要求しない場合のプロ
グラム実行シーケンスの間、生データを保持するために
暗黙データ格納を使用する。この例において、暗黙格納
は、複数のデータ値を同時に保持するように構成された
FIFO(先入れ先出し)データ格納によって供給さ
れ、この例においては、このようなデータ格納は、「パ
イプ」と呼ばれる。このパイプはプログラムシーケンス
の実行に用いる為の宛て先として、第1又は第2のデー
タのソースとして又はそれらの組合わせとして使用され
得る。宛て先かソース1又はソース2アドレスとしてパ
イプが使用される場合、図2に示された命令フォーマッ
トの対応する第2、第3又は第4のフィールドへのエン
トリは全く要求されない。フォーマット1の場合、命令
長インジケータ24は、命令が1バイト長であるにすぎ
ず、結果的に、フィールド2、3、及び4は欠落し、こ
れによって両ソースと宛て先アドレスの代わりに暗黙パ
イプが使用され得ることが示される。フォーマット2、
3、4、及び5の場合、ビット長インジケータ24は命
令が2バイト長であり、タイプインジケータ26がフォ
ーマット2、3、4、及び5を判定する。フォーマット
2ではフィールド2が宛て先アドレスを示す。フォーマ
ット3ではフィールド3が第2のソースアドレスを示
し、フォーマット4ではフィールド4が第1のソースア
ドレスを示す。フォーマット2、3及び4の各々におい
ては暗黙パイプが省略されたアドレスと置換することが
理解される。拡張される時、フォーマット1乃至4の各
々はフォーマット12の形態を取る。フォーマット5
は、タイプインジケータがフィールド4が第1のソース
アドレスの代わりに定数値を用意することを示す場合の
状況を示す。フォーマット5はフォーマット13へ拡張
される。フォーマット6乃至11はそれぞれ命令が3バ
イト長であることを示す長さインジケータ24を有し、
タイプインジケータ26は最終ビット配置30と共に包
含されたフィールドの重みだけでなく省略されたフィー
ルドの表示を示す。各ケースにおいて暗黙パイプはあら
ゆる省略されたアドレスの代わりに使用される。フォー
マット6、7及び8はフォーマット12へ拡張される。
ト配置は命令のタイプを表すインジケータ26を形成す
る。命令ビット長インジケータ24と同時に得られるこ
れら2ビット26は、命令において、どのフィールドが
存在しているか及びどのフィールドが省略されたかを示
す。第2のバイト21の次の6ビットは第2のフィール
ド27を形成する。第3のバイト22において最初の6
ビットは第3のフィールド28を定義する。最後の2ビ
ット29及び30は命令のタイプに従って演算コードイ
ンジケータの拡張、命令インジケータのタイプ、又は定
数の部分を提供する。第4のバイト23において最後の
6ビットは第4のフィールド31を形成する。最後のバ
イト23の最初の2ビット32は定数値の部分又は演算
コードインジケータの拡張を形成することができる。図
2は、全てが、図2のフォーマット12に示されている
四つのフィールドフォーマットをベースとしている15
個の異なるフォーマットを示す。選択可能なフォーマッ
トの各々は、第2、第3又は第4のフィールドの各々を
完全に包含するか又は完全に省略する。タイプインジケ
ータ26(及び拡張ビット30)は長さインジケータ2
4と組み合わされてどのフィールドが省略されたかを示
す。これらは包含されたフィールド内のデータの指定を
示し、これによりレジスタ又は定数値を示すことができ
る。各命令のビット長の圧縮によって冗長ビットを回避
するのを可能とする他に、この例によって明示アドレッ
シングを必要としない暗黙データ格納場所の識別が可能
とされる。使用される命令の基本フォーマットは図2に
おけるフォーマット12に関して最適に図示されてい
る。長さインジケータ24はそれが32ビット長命令で
あることを示している。演算コード25は実行されるべ
き演算を定義する。タイプインジケータ26は、32ビ
ット長命令の場合において、第2のフィールド27が宛
て先レジスタのアドレスを識別し、第3のフィールド2
8が第2のソースレジスタのアドレスを識別し、及び第
4のフィールド31が第1のソースレジスタのアドレス
を識別することを示す。第3のバイト22の最後の2ビ
ットと第4のバイト23の最初の2ビットは、この場
合、演算コード25の拡張部32に対してファシリティ
(資源)を用意する。幾つかの命令に関しては二つのソ
ースアドレス又は宛て先アドレスを識別することは必要
ではない。このような場合、第2、第3及び第4のフィ
ールドの内の一つ又はそれより多くが命令のビット長を
圧縮すると共に冗長なビット配置を回避するために省略
されることができる。さらに、記述されている例は、デ
ータ格納が明示アドレッシングを要求しない場合のプロ
グラム実行シーケンスの間、生データを保持するために
暗黙データ格納を使用する。この例において、暗黙格納
は、複数のデータ値を同時に保持するように構成された
FIFO(先入れ先出し)データ格納によって供給さ
れ、この例においては、このようなデータ格納は、「パ
イプ」と呼ばれる。このパイプはプログラムシーケンス
の実行に用いる為の宛て先として、第1又は第2のデー
タのソースとして又はそれらの組合わせとして使用され
得る。宛て先かソース1又はソース2アドレスとしてパ
イプが使用される場合、図2に示された命令フォーマッ
トの対応する第2、第3又は第4のフィールドへのエン
トリは全く要求されない。フォーマット1の場合、命令
長インジケータ24は、命令が1バイト長であるにすぎ
ず、結果的に、フィールド2、3、及び4は欠落し、こ
れによって両ソースと宛て先アドレスの代わりに暗黙パ
イプが使用され得ることが示される。フォーマット2、
3、4、及び5の場合、ビット長インジケータ24は命
令が2バイト長であり、タイプインジケータ26がフォ
ーマット2、3、4、及び5を判定する。フォーマット
2ではフィールド2が宛て先アドレスを示す。フォーマ
ット3ではフィールド3が第2のソースアドレスを示
し、フォーマット4ではフィールド4が第1のソースア
ドレスを示す。フォーマット2、3及び4の各々におい
ては暗黙パイプが省略されたアドレスと置換することが
理解される。拡張される時、フォーマット1乃至4の各
々はフォーマット12の形態を取る。フォーマット5
は、タイプインジケータがフィールド4が第1のソース
アドレスの代わりに定数値を用意することを示す場合の
状況を示す。フォーマット5はフォーマット13へ拡張
される。フォーマット6乃至11はそれぞれ命令が3バ
イト長であることを示す長さインジケータ24を有し、
タイプインジケータ26は最終ビット配置30と共に包
含されたフィールドの重みだけでなく省略されたフィー
ルドの表示を示す。各ケースにおいて暗黙パイプはあら
ゆる省略されたアドレスの代わりに使用される。フォー
マット6、7及び8はフォーマット12へ拡張される。
【0024】フォーマット9及び10はフォーマット1
3へ拡張される。フォーマット11はフォーマット15
へ拡張される。フォーマット12乃至フォーマット15
の場合、長さインジケータは命令が4バイト長であるこ
とを示す。フォーマット13、14、及び15の場合、
命令は一つ又はそれより多くの明示アドレスを省略しか
つビット配置は定数33、34又は35に置き換えられ
る。拡張時には暗黙パイプアドレスが欠落フィールドご
とに与えられる。以下の記述において、ビット10乃至
15によって与えられたビット値は、Arg1(引数:アー
ギュメント)と呼ばれ、ビット16乃至21のビット値
はArg2であり、ビット26乃至31のビット値はArg3で
ある。1、2又は3の引数を有する命令の8つの例が以
下の表に示されており、この表はこれらの命令の各々に
よって示されたソース及び宛て先アドレス及び図2に対
応するバイト長及びフォーマットを示す。
3へ拡張される。フォーマット11はフォーマット15
へ拡張される。フォーマット12乃至フォーマット15
の場合、長さインジケータは命令が4バイト長であるこ
とを示す。フォーマット13、14、及び15の場合、
命令は一つ又はそれより多くの明示アドレスを省略しか
つビット配置は定数33、34又は35に置き換えられ
る。拡張時には暗黙パイプアドレスが欠落フィールドご
とに与えられる。以下の記述において、ビット10乃至
15によって与えられたビット値は、Arg1(引数:アー
ギュメント)と呼ばれ、ビット16乃至21のビット値
はArg2であり、ビット26乃至31のビット値はArg3で
ある。1、2又は3の引数を有する命令の8つの例が以
下の表に示されており、この表はこれらの命令の各々に
よって示されたソース及び宛て先アドレス及び図2に対
応するバイト長及びフォーマットを示す。
【0025】
【表1】
【0026】従って、図2に示された圧縮された命令フ
ォーマットにおいては、エラーがない場合、拡張部30
を含み、タイプインジケータ26は省略されたフィール
ド2、3及び4より実質的に小さいビット長を有するこ
とが理解されよう。各所定のビット長である所定のフィ
ールド位置の使用は簡単さ即ち解読の速さを提供する。
各命令は最小ビット長へ圧縮されて、命令の実行に必要
とされる情報を示す。結果的に、命令シーケンスを格納
するメモリスペース及びメモリからプロセッサへ命令を
転送するアクセスタイムが最小化される。メモリからの
各命令フェッチ動作は、固定数バイトをプロセッサへロ
ードし、圧縮された命令の場合において、メモリからフ
ェッチされたバイトパッケージの全体が後に続く命令の
一部を含み、次の命令によって使用されないビット配置
を占めることができる。
ォーマットにおいては、エラーがない場合、拡張部30
を含み、タイプインジケータ26は省略されたフィール
ド2、3及び4より実質的に小さいビット長を有するこ
とが理解されよう。各所定のビット長である所定のフィ
ールド位置の使用は簡単さ即ち解読の速さを提供する。
各命令は最小ビット長へ圧縮されて、命令の実行に必要
とされる情報を示す。結果的に、命令シーケンスを格納
するメモリスペース及びメモリからプロセッサへ命令を
転送するアクセスタイムが最小化される。メモリからの
各命令フェッチ動作は、固定数バイトをプロセッサへロ
ードし、圧縮された命令の場合において、メモリからフ
ェッチされたバイトパッケージの全体が後に続く命令の
一部を含み、次の命令によって使用されないビット配置
を占めることができる。
【0027】パイプアドレスは、所望された時に包含さ
れるフィールド内の明示アドレスとして提供される。
れるフィールド内の明示アドレスとして提供される。
【0028】図2に示されたタイプの命令を実行する時
に使用されるコンピュータシステムが図3に示されてい
る。これはこの例において従来のRAMを備えるメモリ
41に接続されたプロセッサ回路(サーキットリ)40
を示す。プロセッサ40は全てがメモリ41に接続され
たアドレスバス42、データバス43、並びに読み出し
及び書き込みコントロール44、45を含む。メモリ4
1は異なるアドレス可能な場所において命令のシーケン
スを備えるプログラムを保持するように構成されてい
る。各命令は図2に関してすでに記述されているフォー
マットの内の一つに追随する。メモリ41はデータも保
持することができる。プロセッサ40は制御論理50及
びALU(算術演算論理ユニット)51を含む。データ
バス43はデータ値をメモリ41へ転送し又はメモリ4
1から転送する。アドレスバス42は読み出し又は書き
込み動作のためにメモリアドレス値を搬送する。メモリ
41における各アドレス可能場所は4バイトのデータを
保持する。アドレスバス42の最下位2ビットはどの格
納場所にアクセスすべきかを決定する場合には無視され
る。ALU51はソース1バス52及びソース2バス5
3に接続されている。これらはALU51への入力が提
供され、得られたあらゆる出力が結果バス54へ送られ
る。読み出し線44と書き込み線45は制御回路50か
ら出力される。読み出し線44が指定された時、メモリ
41はアドレスバス42によって識別された場所で格納
された値をデータバス43へ転送する。書き込み線45
が指定された時、メモリ41はアドレスバス42によっ
て識別された格納場所へデータバス43上の値を格納す
る。
に使用されるコンピュータシステムが図3に示されてい
る。これはこの例において従来のRAMを備えるメモリ
41に接続されたプロセッサ回路(サーキットリ)40
を示す。プロセッサ40は全てがメモリ41に接続され
たアドレスバス42、データバス43、並びに読み出し
及び書き込みコントロール44、45を含む。メモリ4
1は異なるアドレス可能な場所において命令のシーケン
スを備えるプログラムを保持するように構成されてい
る。各命令は図2に関してすでに記述されているフォー
マットの内の一つに追随する。メモリ41はデータも保
持することができる。プロセッサ40は制御論理50及
びALU(算術演算論理ユニット)51を含む。データ
バス43はデータ値をメモリ41へ転送し又はメモリ4
1から転送する。アドレスバス42は読み出し又は書き
込み動作のためにメモリアドレス値を搬送する。メモリ
41における各アドレス可能場所は4バイトのデータを
保持する。アドレスバス42の最下位2ビットはどの格
納場所にアクセスすべきかを決定する場合には無視され
る。ALU51はソース1バス52及びソース2バス5
3に接続されている。これらはALU51への入力が提
供され、得られたあらゆる出力が結果バス54へ送られ
る。読み出し線44と書き込み線45は制御回路50か
ら出力される。読み出し線44が指定された時、メモリ
41はアドレスバス42によって識別された場所で格納
された値をデータバス43へ転送する。書き込み線45
が指定された時、メモリ41はアドレスバス42によっ
て識別された格納場所へデータバス43上の値を格納す
る。
【0029】ALU51は制御ユニット50からコマン
ド入力261を受け取って、ALUがどの演算を実行す
べきかを決定する。ALU51はALU演算の条件を示
すために条件出力56を制御ユニット50へ提供する。
ド入力261を受け取って、ALUがどの演算を実行す
べきかを決定する。ALU51はALU演算の条件を示
すために条件出力56を制御ユニット50へ提供する。
【0030】プロセッサ40はメモリ41から4バイト
を一度にフェッチすると共に出力61が命令の始まりと
場所合わせされた命令レジスタ62へ4バイトの出力6
1を備えるように構成された命令フェッチユニット60
を含む。命令レジスタ62は複数の分離した出力を用意
するように構成されており、これらの分離した出力は、
各命令に対して完全に拡張された出力を用意するように
構成された拡張回路63に対して、命令のフィールド及
び制御ビットの各々を示す。命令の演算コードに従っ
て、制御ユニット50はソース値をレジスタファイル1
70、パイプ171又は定数レジスタ167からソース
バス52又は53へプットさせる。ALU演算の結果は
次いで命令によって示された宛て先に応じて結果バス5
4からレジスタファイル170又はパイプ171の選択
された場所へ書き込まれる。ALU51はまた命令実行
の中間段階にも使用され、この結果は命令ポインタ23
0、テンポラリ・レジスタ240、フェッチャ60又は
書き込みバッファ252へ書き込むことができる。
を一度にフェッチすると共に出力61が命令の始まりと
場所合わせされた命令レジスタ62へ4バイトの出力6
1を備えるように構成された命令フェッチユニット60
を含む。命令レジスタ62は複数の分離した出力を用意
するように構成されており、これらの分離した出力は、
各命令に対して完全に拡張された出力を用意するように
構成された拡張回路63に対して、命令のフィールド及
び制御ビットの各々を示す。命令の演算コードに従っ
て、制御ユニット50はソース値をレジスタファイル1
70、パイプ171又は定数レジスタ167からソース
バス52又は53へプットさせる。ALU演算の結果は
次いで命令によって示された宛て先に応じて結果バス5
4からレジスタファイル170又はパイプ171の選択
された場所へ書き込まれる。ALU51はまた命令実行
の中間段階にも使用され、この結果は命令ポインタ23
0、テンポラリ・レジスタ240、フェッチャ60又は
書き込みバッファ252へ書き込むことができる。
【0031】命令フェッチャ60の構築又は動作が最初
に記述される。このユニットは図4においてより詳しく
示され且つデータバス43に接続された入力データバス
64を有している。フェッチャ60は32ビットワード
が読み出されるメモリ内に次のアドレスを有する32ビ
ットのラッチを備えるフェッチポインタ65を含む。メ
モリから値が読み出される時、ラッチ65は4バイト分
増分されて新しいポインタアドレスが得られる。値4は
この値4を加算器106へ転送するユニット105によ
って発生され、この加算器106はバス103からポイ
ンタ値を受け取り、ポインタ値へ4を加算する。次い
で、その合計がマルチプレクサ92を介してラッチ65
へ送られて、ポインタを更新する。位置合わせされた命
令が1であり、この1が新しい32ビットワードの始ま
りにおいてビット0位置を有することが理解されよう。
しかしながら、可変長命令の使用によって、幾つかの命
令はメモリ内のワードの途中から開始する。フェッチャ
60はメモリから圧縮された命令を読み出し、それらを
正確に位置合わせし、次いでそれらをバス61を介して
フェッチバッファ66から命令レジスタ62へ出力す
る。バス64へ入力された4バイトのワードはロードシ
フター67及び複数の並列マルチプレクサ68を介して
フェッチバッファ66へ送られる。フェッチバッファ6
6は7バイトの命令に至るまで保持することができ、こ
れは命令の位置合わせ誤り(ミスアライメント)のワー
ストケースを保持するのに充分である。4バイト命令が
1バイトからスタートして32ビットメモリワードとな
ることができることから、ワードが3バイトの命令を有
し、命令を終了するのに必要とされる第4番目のバイト
を得るために引き続く4バイトのワードが読み取られな
ければならない。従って、7バイトがフェッチバッファ
66内で保持されることが必要とされる。命令がバッフ
ァ66内で一旦位置合わせされると、4バイトはバイト
0、バイト1、バイト2、及びバイト3を表す線70、
71、72及び73上へ出力される。命令の長さによっ
ては命令バッファ62は4つの線70乃至73全てから
送られる信号上で動作するとは限らないが、殆どの場合
において出力はこれらの線上で設けられる。バイト0は
出力される命令の長さを線70上に示し、これは長さイ
ンジケータ74へ渡されて、バッファ66内で幾つのバ
イトが現在除去され得るかをフェッチャ・ユニット60
に対して示す。バイトカウンタ75はバッファ66内の
バイト数のカウントを常に保持し、ユニット74から送
られた長さ信号はマルチプレクサ76を介して長さ減算
機構(subtractor)77へ渡され、この長さ減算機構7
7は、バッファ66内に残留する有効バイトの数をカウ
ントするためにマルチプレクサ76及びバイトカウンタ
75から入力を受け取る。減算機構77からの出力78
はバイトカウンタ75内の入力を更新するためにマルチ
プレクサ79を介して送られる。
に記述される。このユニットは図4においてより詳しく
示され且つデータバス43に接続された入力データバス
64を有している。フェッチャ60は32ビットワード
が読み出されるメモリ内に次のアドレスを有する32ビ
ットのラッチを備えるフェッチポインタ65を含む。メ
モリから値が読み出される時、ラッチ65は4バイト分
増分されて新しいポインタアドレスが得られる。値4は
この値4を加算器106へ転送するユニット105によ
って発生され、この加算器106はバス103からポイ
ンタ値を受け取り、ポインタ値へ4を加算する。次い
で、その合計がマルチプレクサ92を介してラッチ65
へ送られて、ポインタを更新する。位置合わせされた命
令が1であり、この1が新しい32ビットワードの始ま
りにおいてビット0位置を有することが理解されよう。
しかしながら、可変長命令の使用によって、幾つかの命
令はメモリ内のワードの途中から開始する。フェッチャ
60はメモリから圧縮された命令を読み出し、それらを
正確に位置合わせし、次いでそれらをバス61を介して
フェッチバッファ66から命令レジスタ62へ出力す
る。バス64へ入力された4バイトのワードはロードシ
フター67及び複数の並列マルチプレクサ68を介して
フェッチバッファ66へ送られる。フェッチバッファ6
6は7バイトの命令に至るまで保持することができ、こ
れは命令の位置合わせ誤り(ミスアライメント)のワー
ストケースを保持するのに充分である。4バイト命令が
1バイトからスタートして32ビットメモリワードとな
ることができることから、ワードが3バイトの命令を有
し、命令を終了するのに必要とされる第4番目のバイト
を得るために引き続く4バイトのワードが読み取られな
ければならない。従って、7バイトがフェッチバッファ
66内で保持されることが必要とされる。命令がバッフ
ァ66内で一旦位置合わせされると、4バイトはバイト
0、バイト1、バイト2、及びバイト3を表す線70、
71、72及び73上へ出力される。命令の長さによっ
ては命令バッファ62は4つの線70乃至73全てから
送られる信号上で動作するとは限らないが、殆どの場合
において出力はこれらの線上で設けられる。バイト0は
出力される命令の長さを線70上に示し、これは長さイ
ンジケータ74へ渡されて、バッファ66内で幾つのバ
イトが現在除去され得るかをフェッチャ・ユニット60
に対して示す。バイトカウンタ75はバッファ66内の
バイト数のカウントを常に保持し、ユニット74から送
られた長さ信号はマルチプレクサ76を介して長さ減算
機構(subtractor)77へ渡され、この長さ減算機構7
7は、バッファ66内に残留する有効バイトの数をカウ
ントするためにマルチプレクサ76及びバイトカウンタ
75から入力を受け取る。減算機構77からの出力78
はバイトカウンタ75内の入力を更新するためにマルチ
プレクサ79を介して送られる。
【0032】マルチプレクサ76からの出力は抽出シフ
タ81への入力を生成する。抽出シフタ81はバッファ
66内でこれらの残留バイトを再配置するために使用さ
れる。これらの残留バイトは次の命令に使用するように
命令レジスタ62へのバス61に供給されるように要求
される。抽出シフタ81は、各線71、72、及び73
から並びにバッファ66のバイト4、バイト5、及びバ
イト6の場所から入力82を受け取る。容量(Amount)
信号80に従って、フェッチバッファ66内に保持され
た値は、この抽出シフタ81によって再配置され、線8
3を介してマルチプレクサ68へ出力される。このよう
に、フェッチバッファになお必要とされるバイトがバイ
ト0で開始される新しい場所でフェッチバッファ66内
に再配置される。バッファ66のバイト0、1及び2内
で保持された値も線85を介してロードシフタ67へフ
ィードバックされる。このロードシフタは、データバス
64上でメモリから読み出された新しいバイトがロード
されるフェッチバッファ66内のバイトの場所を示すた
めにバイトカウンタ75から得られた容量信号86も受
け取る。この容量信号86に従って、メモリからの新し
い4バイトは、バス64へ入力され、フェッチバッファ
66の事前演算から保持されているバイト値を表す線8
5上のいずれかの信号と結合して対応するマルチプレク
サ68へフィードされる。従って、マルチプレクサ68
は、バイト0でスタートするフェッチバッファ66内で
連続バイト位置を占有するように線85のいずれかで保
持されているバイトとメモリから読み出された新しいバ
イトを結合した値をバッファ66へロードするためにラ
ッチ信号90によって動作され得る。ラッチ信号90は
マルチプレクサ79へ送られて、バイトカウント75を
4で更新する。値4はユニット105を介して加算器1
08へ送られ、加算器108は4をバイトカウンタ75
から送られたバイトカウント値に加算し、その合計をバ
イトカウンタ75へ渡す。
タ81への入力を生成する。抽出シフタ81はバッファ
66内でこれらの残留バイトを再配置するために使用さ
れる。これらの残留バイトは次の命令に使用するように
命令レジスタ62へのバス61に供給されるように要求
される。抽出シフタ81は、各線71、72、及び73
から並びにバッファ66のバイト4、バイト5、及びバ
イト6の場所から入力82を受け取る。容量(Amount)
信号80に従って、フェッチバッファ66内に保持され
た値は、この抽出シフタ81によって再配置され、線8
3を介してマルチプレクサ68へ出力される。このよう
に、フェッチバッファになお必要とされるバイトがバイ
ト0で開始される新しい場所でフェッチバッファ66内
に再配置される。バッファ66のバイト0、1及び2内
で保持された値も線85を介してロードシフタ67へフ
ィードバックされる。このロードシフタは、データバス
64上でメモリから読み出された新しいバイトがロード
されるフェッチバッファ66内のバイトの場所を示すた
めにバイトカウンタ75から得られた容量信号86も受
け取る。この容量信号86に従って、メモリからの新し
い4バイトは、バス64へ入力され、フェッチバッファ
66の事前演算から保持されているバイト値を表す線8
5上のいずれかの信号と結合して対応するマルチプレク
サ68へフィードされる。従って、マルチプレクサ68
は、バイト0でスタートするフェッチバッファ66内で
連続バイト位置を占有するように線85のいずれかで保
持されているバイトとメモリから読み出された新しいバ
イトを結合した値をバッファ66へロードするためにラ
ッチ信号90によって動作され得る。ラッチ信号90は
マルチプレクサ79へ送られて、バイトカウント75を
4で更新する。値4はユニット105を介して加算器1
08へ送られ、加算器108は4をバイトカウンタ75
から送られたバイトカウント値に加算し、その合計をバ
イトカウンタ75へ渡す。
【0033】フェッチポインタ65は、通常、フェッチ
ャ60を用いてメモリ内のシーケンシャルなワード場所
から命令を取りに行かせる。しかしながら、いくつかの
プログラムはメモリ内の新しい場所から命令のフェッチ
を開始するようにメカニズムに要求する分岐命令を含
む。このため、マルチプレクサ92を介してフェッチポ
インタ65へ送られ得るスタート入力91を備えてい
る。線91上のスタートアドレスの上位30のアドレス
ビットは、これらの30ビットがメモリ内の新しい4バ
イトワードの始まりに常にアドレスするようにポインタ
65へ渡される。フェッチポインタ65の下位2ビット
は常にゼロへセットされる。32ビットワード内のサブ
ポジション(補助的位置)を示すにすぎない下位2ビッ
トが2ビットラッチ93内に格納される。ラッチ93内
で保持された値はゼロとの比較演算子を検出するために
コンパレータ94内でテストされ、これによって新しい
メモリアドレスが32ビットの境界の始めからスタート
するか又はワードの途中からスタートするか否かが決定
される。それがワードの途中からスタートする場合、コ
ンパレータ104からANDゲート95へ信号が送られ
て、コンパレータ94からANDゲート95への第2の
信号がバッファ66内のバイト数がゼロでないことを示
した時、フェッチバッファの内容のいくつかが調整を必
要とすることを示す。調整出力96は制御ユニット50
へ提供され、命令が正確に位置合わせされておらず、位
置合わせするにはダミー命令の読み出しがこの制御ユニ
ット50からNext(ネクスト(次の))信号97を
用いて実行されることを示す。信号97はORゲート9
8を介して送られることによってフェッチバッファ66
に対する新しいラッチ演算を生じ、この新しいラッチ演
算が上記に説明したようにフェッチバッファ66からの
一つ以上のバイトの除去と抽出シフター81への入力8
0によって決定された容量による再配置とを生じ、この
容量がANDゲート95の出力によりマルチプレクサ7
6を介して経路指定された2ビットラッチ93から導出
されている。
ャ60を用いてメモリ内のシーケンシャルなワード場所
から命令を取りに行かせる。しかしながら、いくつかの
プログラムはメモリ内の新しい場所から命令のフェッチ
を開始するようにメカニズムに要求する分岐命令を含
む。このため、マルチプレクサ92を介してフェッチポ
インタ65へ送られ得るスタート入力91を備えてい
る。線91上のスタートアドレスの上位30のアドレス
ビットは、これらの30ビットがメモリ内の新しい4バ
イトワードの始まりに常にアドレスするようにポインタ
65へ渡される。フェッチポインタ65の下位2ビット
は常にゼロへセットされる。32ビットワード内のサブ
ポジション(補助的位置)を示すにすぎない下位2ビッ
トが2ビットラッチ93内に格納される。ラッチ93内
で保持された値はゼロとの比較演算子を検出するために
コンパレータ94内でテストされ、これによって新しい
メモリアドレスが32ビットの境界の始めからスタート
するか又はワードの途中からスタートするか否かが決定
される。それがワードの途中からスタートする場合、コ
ンパレータ104からANDゲート95へ信号が送られ
て、コンパレータ94からANDゲート95への第2の
信号がバッファ66内のバイト数がゼロでないことを示
した時、フェッチバッファの内容のいくつかが調整を必
要とすることを示す。調整出力96は制御ユニット50
へ提供され、命令が正確に位置合わせされておらず、位
置合わせするにはダミー命令の読み出しがこの制御ユニ
ット50からNext(ネクスト(次の))信号97を
用いて実行されることを示す。信号97はORゲート9
8を介して送られることによってフェッチバッファ66
に対する新しいラッチ演算を生じ、この新しいラッチ演
算が上記に説明したようにフェッチバッファ66からの
一つ以上のバイトの除去と抽出シフター81への入力8
0によって決定された容量による再配置とを生じ、この
容量がANDゲート95の出力によりマルチプレクサ7
6を介して経路指定された2ビットラッチ93から導出
されている。
【0034】現在命令がフェッチバッファ66から読み
出され、これによって上記に説明したように命令がフェ
ッチバッファ66から除去されることができることをフ
ェッチャユニットへ伝えるためにNext入力97も制
御ユニット50から導出されることが理解されよう。ラ
ッチ入力100はデータバス64上の値をバッファ66
に格納するようにフェッチャへ命令するため、エッジ感
応信号である制御ユニット50から導出される。Beg
in(ビギン(開始))信号102は、ブランチ命令に
応答してスタート信号入力91に渡された新しいアドレ
スから新しいワードのフェッチを開始するようにフェッ
チャに知らせるために使用される更なるエッジ感応信号
である。アドレス出力103がメモリ内のワードの始ま
りにおいて32ビットの境界を常に指すことが理解され
よう。バイトカウンタ75は、バイトカウントがゼロで
ない場合、ANDゲート95へ信号を送るようにカウン
トコンパレータ106と接続されている。長さ減算機構
77は、フェッチバッファが次の命令を生成するのに充
分な内容を有していない時は必ず、More出力107
を提供するように構成されている。この信号107は、
次の命令は制御ユニット50へ供給されることによっ
て、次の命令がフェッチャから読み取られる前に、ラッ
チ信号100を用いてフェッチャにメモリ読み出しを実
行させる。バイトカウンタ75は、フェッチバッファ6
6から命令が除去された時は常にカウントを減少させ、
新しい値がメモリから読み取られた時は常にカウントを
増加させる。フェッチャがStart(スタート)入力
91を用いて新しい命令シーケンスからスタートする
時、線102上のBegin信号は、カウンタ75内の
カウントをクリアすると共にORゲート109を介して
フェッチポインタ65内の新しいポインタ値をラッチす
るために使用される。単一ビットラッチ110は、新し
いスタートアドレスからの第1の命令がバッファ66内
で位置合わせされた後で2ビットラッチ93をクリアす
るために使用される。
出され、これによって上記に説明したように命令がフェ
ッチバッファ66から除去されることができることをフ
ェッチャユニットへ伝えるためにNext入力97も制
御ユニット50から導出されることが理解されよう。ラ
ッチ入力100はデータバス64上の値をバッファ66
に格納するようにフェッチャへ命令するため、エッジ感
応信号である制御ユニット50から導出される。Beg
in(ビギン(開始))信号102は、ブランチ命令に
応答してスタート信号入力91に渡された新しいアドレ
スから新しいワードのフェッチを開始するようにフェッ
チャに知らせるために使用される更なるエッジ感応信号
である。アドレス出力103がメモリ内のワードの始ま
りにおいて32ビットの境界を常に指すことが理解され
よう。バイトカウンタ75は、バイトカウントがゼロで
ない場合、ANDゲート95へ信号を送るようにカウン
トコンパレータ106と接続されている。長さ減算機構
77は、フェッチバッファが次の命令を生成するのに充
分な内容を有していない時は必ず、More出力107
を提供するように構成されている。この信号107は、
次の命令は制御ユニット50へ供給されることによっ
て、次の命令がフェッチャから読み取られる前に、ラッ
チ信号100を用いてフェッチャにメモリ読み出しを実
行させる。バイトカウンタ75は、フェッチバッファ6
6から命令が除去された時は常にカウントを減少させ、
新しい値がメモリから読み取られた時は常にカウントを
増加させる。フェッチャがStart(スタート)入力
91を用いて新しい命令シーケンスからスタートする
時、線102上のBegin信号は、カウンタ75内の
カウントをクリアすると共にORゲート109を介して
フェッチポインタ65内の新しいポインタ値をラッチす
るために使用される。単一ビットラッチ110は、新し
いスタートアドレスからの第1の命令がバッファ66内
で位置合わせされた後で2ビットラッチ93をクリアす
るために使用される。
【0035】制御ユニット50から導かれる三つの入力
信号、Next信号97、ラッチ(latch)100
信号、及びBegin信号102は、フェッチャのいく
つかの演算が要求されるまで通常は指定されないことが
理解されよう。実行される四つのタイプの演算は以下の
通りである。出力バス61上で命令レジスタ62に対す
る命令を生成する。正確に位置合わせされた命令がフェ
ッチバッファ66内で保持された時にこれを実行し、M
ore信号107及びAdjust(調整)信号96は
指定されない。フェッチャはメモリの位置から読み出し
動作を実行してもよい。フェッチバッファ66が十分な
データを含まない時は必ず、通常、32ビットのメモリ
位置がシーケンシャルに読み取られる。データが読み取
られるアドレスはバス103へ出力されたフェッチポイ
ンタ65によって表される。これはMore信号107
が指定された時に行われ、Adjust信号96は指定
されない。ラッチ信号100はロードシフタ67から出
力を選択するためにマルチプレクサ68をセットするよ
うに指定される。データがバス64から入力されると、
ラッチ信号100はフェッチバッファ66内に値を格納
するために逆指定される。
信号、Next信号97、ラッチ(latch)100
信号、及びBegin信号102は、フェッチャのいく
つかの演算が要求されるまで通常は指定されないことが
理解されよう。実行される四つのタイプの演算は以下の
通りである。出力バス61上で命令レジスタ62に対す
る命令を生成する。正確に位置合わせされた命令がフェ
ッチバッファ66内で保持された時にこれを実行し、M
ore信号107及びAdjust(調整)信号96は
指定されない。フェッチャはメモリの位置から読み出し
動作を実行してもよい。フェッチバッファ66が十分な
データを含まない時は必ず、通常、32ビットのメモリ
位置がシーケンシャルに読み取られる。データが読み取
られるアドレスはバス103へ出力されたフェッチポイ
ンタ65によって表される。これはMore信号107
が指定された時に行われ、Adjust信号96は指定
されない。ラッチ信号100はロードシフタ67から出
力を選択するためにマルチプレクサ68をセットするよ
うに指定される。データがバス64から入力されると、
ラッチ信号100はフェッチバッファ66内に値を格納
するために逆指定される。
【0036】フェッチャは新しい命令シーケンスを初期
化するために使用されることができる。この場合、バイ
トカウント75はクリアされ、メモリ内の新しいアドレ
スがフェッチポインタ65と2ビットバッファ93へラ
ッチされる。この初期化はプログラム分岐命令後に要求
される。これはBegin信号102を指定し、次いで
Begin信号102を逆指定することによって実行さ
れる。さらに、フェッチャは第1の命令を新しい命令シ
ーケンス内で位置合わせするように使用されることがで
きる。新しい命令シーケンスがメモリ内の32ビットワ
ード境界においてスタートしない場合、Adjust信
号96が指定され、この位置合わせ動作はフェッチバッ
ファ665のダミー読み出しを実行するためにNext
信号97を指定し、次いでNext信号97を逆指定
し、これによって新しいシーケンスの第1の命令を位置
合わせすることを含む。
化するために使用されることができる。この場合、バイ
トカウント75はクリアされ、メモリ内の新しいアドレ
スがフェッチポインタ65と2ビットバッファ93へラ
ッチされる。この初期化はプログラム分岐命令後に要求
される。これはBegin信号102を指定し、次いで
Begin信号102を逆指定することによって実行さ
れる。さらに、フェッチャは第1の命令を新しい命令シ
ーケンス内で位置合わせするように使用されることがで
きる。新しい命令シーケンスがメモリ内の32ビットワ
ード境界においてスタートしない場合、Adjust信
号96が指定され、この位置合わせ動作はフェッチバッ
ファ665のダミー読み出しを実行するためにNext
信号97を指定し、次いでNext信号97を逆指定
し、これによって新しいシーケンスの第1の命令を位置
合わせすることを含む。
【0037】図3に示されているように、フェッチャユ
ニット60の出力バス61は命令レジスタ62へ送られ
た32ビット信号を提供し、この32ビット値はフェッ
チャ60へ送られたNext信号97と同時に制御ユニ
ット50から導出された入力信号112によってラッチ
される。命令レジスタ62内の32ビット信号は7つの
出力信号120、121、122、123、124、1
25、及び126を提供するように構成されている。こ
れらの出力信号の性質が図2に関して記述されている。
信号120は図2における長さインジケータと対応して
いるビット0及び1を表す。信号121はビット2乃至
7から導出され、演算コードを有するフィールド1を表
す。出力122は図2に示されたタイプインジケータ2
6を形成するビット8及び9を表す。出力123はビッ
ト配置10乃至15を表すArg1(引数)である。出力1
24はビット配置16乃至21を表すArg2である。出力
125はビット配置22乃至25を表し、PADと呼ば
れ、タイプ拡張、演算コードの一部又は定数値の一部を
表す。出力126はArg3を表し、ビット配置26乃至3
1を表す。従って、出力121は図2においてフィール
ド1を表し、常に演算コードを示すことが理解されよ
う。図2におけるフィールド2、3、及び4は、命令長
に従ってArg1、Arg2、又はArg3のいずれかで表される。
出力120乃至126の各々は命令拡張ユニット63へ
送られ、この命令拡張ユニット63はこのユニットへ供
給された圧縮された形式から完全な命令を再構築するよ
うに構成されている。出力120を表す長さはソース1
バス52に接続された長さイネーブルユニット127へ
も送られる。
ニット60の出力バス61は命令レジスタ62へ送られ
た32ビット信号を提供し、この32ビット値はフェッ
チャ60へ送られたNext信号97と同時に制御ユニ
ット50から導出された入力信号112によってラッチ
される。命令レジスタ62内の32ビット信号は7つの
出力信号120、121、122、123、124、1
25、及び126を提供するように構成されている。こ
れらの出力信号の性質が図2に関して記述されている。
信号120は図2における長さインジケータと対応して
いるビット0及び1を表す。信号121はビット2乃至
7から導出され、演算コードを有するフィールド1を表
す。出力122は図2に示されたタイプインジケータ2
6を形成するビット8及び9を表す。出力123はビッ
ト配置10乃至15を表すArg1(引数)である。出力1
24はビット配置16乃至21を表すArg2である。出力
125はビット配置22乃至25を表し、PADと呼ば
れ、タイプ拡張、演算コードの一部又は定数値の一部を
表す。出力126はArg3を表し、ビット配置26乃至3
1を表す。従って、出力121は図2においてフィール
ド1を表し、常に演算コードを示すことが理解されよ
う。図2におけるフィールド2、3、及び4は、命令長
に従ってArg1、Arg2、又はArg3のいずれかで表される。
出力120乃至126の各々は命令拡張ユニット63へ
送られ、この命令拡張ユニット63はこのユニットへ供
給された圧縮された形式から完全な命令を再構築するよ
うに構成されている。出力120を表す長さはソース1
バス52に接続された長さイネーブルユニット127へ
も送られる。
【0038】拡張ユニット63の構築及び演算は図5に
関して記述されている。ユニット130は完全な演算コ
ードを構築するために提供されている。ユニット130
は演算コード入力121を受け取り、いくつかのフォー
マットではPAD信号が演算コード拡張を含むこともあ
るので、PAD入力125にも接続されている。長さ入
力120とタイプ入力122は共にユニット130に接
続され、これによりユニット130が演算コードを構築
する際にPAD入力125からのあらゆる信号を組み込
むか否かを決定する。完全に構築された演算コードは次
いで線131へ出力され、この演算コードはプロセッサ
によって実行される演算を制御するために制御ユニット
50へ送られる。ルータユニット132はArg1、Arg2、
及びArg3の入力123乃至126の各々を受け取るよう
に構成されている。ルータ132は長さ及びタイプ信号
120、122からの入力も受け取り、これによって入
力123、124、及び126のどの入力が宛て先又は
ソース1若しくはソース2の出力を表すかを決定する。
ルータ132は、いくつかのフォーマットにおいてTY
PE拡張を含むので、PAD信号125も受け取ってい
る。ルータ132は宛て先アドレスに対応する第1の出
力140、ソース2アドレスに対応する第2の出力14
1、及びソース1アドレスに対応する第3の出力142
を有する。ルータ132へ送られる長さ入力120及び
タイプ入力122並びにPAD入力125が、ルータが
補正入力信号123乃至126又はそれぞれの出力14
0乃至142を出力するのをイネーブルとし、これらは
それぞれのマルチプレクサ143、144、及び145
へ送られる。これらのマルチプレクサはそれぞれパイプ
アドレッシングユニット146によって決定されたパイ
プアドレスを表す他のアドレスを受け取る。マルチプレ
クサ143乃至145の演算は長さ及びタイプのインン
ジケータ120及び122並びにPAD125からの入
力を有するイネーブルユニット147によって制御され
る。これらの入力信号は圧縮された命令においてフィー
ルドのどれかが欠落しているか否かを決定し、それが欠
落しているフィールドと暗黙パイプアドレス146を置
き換える。このように、拡張ユニットからの出力信号1
50、151、及び152は、圧縮された命令内で明示
的に提供されない暗黙アドレスに対して提供されている
パイプアドレスによって対応する宛て先ソース1及びソ
ース2のアドレスを示す。図2のフォーマットに示され
ているように、命令が定数値を含む場合、Arg1、Arg2、
及びArg3、並びにPADの内のいづれかが長さ及びタイ
プのインジケータ120及び122に従って定数を構築
するために使用されてもよい。これらは定数構築機構1
63へ送られる。入力信号120及び122が定数が構
築されるべきであることを示した場合、出力164へ定
数値を出力するように要求されると、入力123乃至1
25が結合される。長さ及びタイプのインジケータ12
0及び122は、インジケータユニット165へ送られ
て、定数が存在していることを示す信号166を出力す
る。信号166は制御ユニット50へ送られ、定数値は
線164を介して定数レジスタ167へ送られる。PA
D信号125がTYPE拡張を含む時、その値は図2に
示されるように定数がコード化されるか否かを決定しな
い。
関して記述されている。ユニット130は完全な演算コ
ードを構築するために提供されている。ユニット130
は演算コード入力121を受け取り、いくつかのフォー
マットではPAD信号が演算コード拡張を含むこともあ
るので、PAD入力125にも接続されている。長さ入
力120とタイプ入力122は共にユニット130に接
続され、これによりユニット130が演算コードを構築
する際にPAD入力125からのあらゆる信号を組み込
むか否かを決定する。完全に構築された演算コードは次
いで線131へ出力され、この演算コードはプロセッサ
によって実行される演算を制御するために制御ユニット
50へ送られる。ルータユニット132はArg1、Arg2、
及びArg3の入力123乃至126の各々を受け取るよう
に構成されている。ルータ132は長さ及びタイプ信号
120、122からの入力も受け取り、これによって入
力123、124、及び126のどの入力が宛て先又は
ソース1若しくはソース2の出力を表すかを決定する。
ルータ132は、いくつかのフォーマットにおいてTY
PE拡張を含むので、PAD信号125も受け取ってい
る。ルータ132は宛て先アドレスに対応する第1の出
力140、ソース2アドレスに対応する第2の出力14
1、及びソース1アドレスに対応する第3の出力142
を有する。ルータ132へ送られる長さ入力120及び
タイプ入力122並びにPAD入力125が、ルータが
補正入力信号123乃至126又はそれぞれの出力14
0乃至142を出力するのをイネーブルとし、これらは
それぞれのマルチプレクサ143、144、及び145
へ送られる。これらのマルチプレクサはそれぞれパイプ
アドレッシングユニット146によって決定されたパイ
プアドレスを表す他のアドレスを受け取る。マルチプレ
クサ143乃至145の演算は長さ及びタイプのインン
ジケータ120及び122並びにPAD125からの入
力を有するイネーブルユニット147によって制御され
る。これらの入力信号は圧縮された命令においてフィー
ルドのどれかが欠落しているか否かを決定し、それが欠
落しているフィールドと暗黙パイプアドレス146を置
き換える。このように、拡張ユニットからの出力信号1
50、151、及び152は、圧縮された命令内で明示
的に提供されない暗黙アドレスに対して提供されている
パイプアドレスによって対応する宛て先ソース1及びソ
ース2のアドレスを示す。図2のフォーマットに示され
ているように、命令が定数値を含む場合、Arg1、Arg2、
及びArg3、並びにPADの内のいづれかが長さ及びタイ
プのインジケータ120及び122に従って定数を構築
するために使用されてもよい。これらは定数構築機構1
63へ送られる。入力信号120及び122が定数が構
築されるべきであることを示した場合、出力164へ定
数値を出力するように要求されると、入力123乃至1
25が結合される。長さ及びタイプのインジケータ12
0及び122は、インジケータユニット165へ送られ
て、定数が存在していることを示す信号166を出力す
る。信号166は制御ユニット50へ送られ、定数値は
線164を介して定数レジスタ167へ送られる。PA
D信号125がTYPE拡張を含む時、その値は図2に
示されるように定数がコード化されるか否かを決定しな
い。
【0039】プロセッサは一組のアドレス可能なレジス
タを保持するレジスタファイル179を含む。また、暗
黙データ格納場所は複数のデータ値に対して先入れ先出
しデータ格納を提供するパイプ171によって提供され
る。レジスタファイル170はバス54に接続されたポ
インタ回路173を有し、これによってデータ値がレジ
スタファイル内に書き込まれるのを可能にする。同様
に、パイプ171が選択回路174を有し、これによっ
てデータ値が結果バス54からパイプ171内の所望さ
れる位置へ書き込まれるのを可能にする。ポインタ回路
173及びセレクタ回路174は共に、データを格納場
所へ書き込むように要求された時、制御信号50からラ
ッチ信号186を受け取るように構成されている。同様
に、ポインタ173及びセレクタ174は共に、命令拡
張ユニット63の出力150に接続され、これにより拡
張ユニット63からの拡張された命令の出力によって指
示された時、対応する格納装置がそのデータの宛て先と
して使用される。データがレジスタファイル170から
ソースバスへ読み取られるのを可能とするため、線17
6によってソース1バス52と接続され且つ線177に
よってソース2バス53と接続された出力セレクタ17
5が設けられている。読み出し動作に使用する補正レジ
スタは、拡張ユニット63によって備えられたソース1
又はソース2のアドレスによって決定される。線151
は、ソース2アドレスをレジスタファイル170の出力
セレクタ回路175とパイプ171の出力セレクタ回路
179の両方へ直接接続する。拡張ユニット63から線
152へ出力されるソース1アドレスはその出力がセレ
クタ175及び179の両方に接続されたマルチプレク
サ180を通過する。マルチプレクサ180はまた、宛
て先アドレスがソース1の識別の代わりに供給されるこ
とができるように、宛て先線150からの入力を拡張ユ
ニット63から得る。セレクタ175はソース1のバス
への読み出し動作をイネーブルとするように第1のイネ
ーブル入力182を有する。このイネーブル信号182
はANDゲート185を介して制御ユニット50から得
られる。第2のイネーブル入力186は、第2のソース
バス53への読み出し動作をイネーブルとするように構
成されると共に制御ユニット50から直接得られる。イ
ネーブル入力182及び186は同様にパイプ171の
出力セレクタ179へ供給される。
タを保持するレジスタファイル179を含む。また、暗
黙データ格納場所は複数のデータ値に対して先入れ先出
しデータ格納を提供するパイプ171によって提供され
る。レジスタファイル170はバス54に接続されたポ
インタ回路173を有し、これによってデータ値がレジ
スタファイル内に書き込まれるのを可能にする。同様
に、パイプ171が選択回路174を有し、これによっ
てデータ値が結果バス54からパイプ171内の所望さ
れる位置へ書き込まれるのを可能にする。ポインタ回路
173及びセレクタ回路174は共に、データを格納場
所へ書き込むように要求された時、制御信号50からラ
ッチ信号186を受け取るように構成されている。同様
に、ポインタ173及びセレクタ174は共に、命令拡
張ユニット63の出力150に接続され、これにより拡
張ユニット63からの拡張された命令の出力によって指
示された時、対応する格納装置がそのデータの宛て先と
して使用される。データがレジスタファイル170から
ソースバスへ読み取られるのを可能とするため、線17
6によってソース1バス52と接続され且つ線177に
よってソース2バス53と接続された出力セレクタ17
5が設けられている。読み出し動作に使用する補正レジ
スタは、拡張ユニット63によって備えられたソース1
又はソース2のアドレスによって決定される。線151
は、ソース2アドレスをレジスタファイル170の出力
セレクタ回路175とパイプ171の出力セレクタ回路
179の両方へ直接接続する。拡張ユニット63から線
152へ出力されるソース1アドレスはその出力がセレ
クタ175及び179の両方に接続されたマルチプレク
サ180を通過する。マルチプレクサ180はまた、宛
て先アドレスがソース1の識別の代わりに供給されるこ
とができるように、宛て先線150からの入力を拡張ユ
ニット63から得る。セレクタ175はソース1のバス
への読み出し動作をイネーブルとするように第1のイネ
ーブル入力182を有する。このイネーブル信号182
はANDゲート185を介して制御ユニット50から得
られる。第2のイネーブル入力186は、第2のソース
バス53への読み出し動作をイネーブルとするように構
成されると共に制御ユニット50から直接得られる。イ
ネーブル入力182及び186は同様にパイプ171の
出力セレクタ179へ供給される。
【0040】レジスタファイル170の構築及び動作は
従来通りである。
従来通りである。
【0041】パイプ171の構築及び動作については図
6により詳細に記述されている。パイプ171はN個の
データ値を保持するように構成された複数の分離選択可
能なデータ格納(装置)190を備える。結果バス54
は、データ格納190の各々に接続され、宛て先セレク
タ174はどのデータ格納が結果バス54から入力を受
容してよいかを決定するように各データ入力と接続され
ている。同様に、各データ格納190は、二つの分離出
力セレクタ191及び192へ収集される。これらの二
つの出力セレクタは類似し、それぞれが各データ格納場
所へ接続され、あらゆるデータ場所をそれぞれのソース
1バス52及びソース2バス53へ接続させることがで
きる。パイプへ書き込まれる時、宛て先信号150がこ
のパイプへ入力され、このパイプにおいては、宛て先ア
ドレスは、命令がこのパイプの使用を宛て先として要求
することを確実とするように整合ユニット194でその
パイプ用に指定されたアドレスと比較される。宛て先信
号は、レジスタファイル170用の入力セレクタへ送ら
れるが、整合がなければ、この宛て先信号はレジスタフ
ァイル170に無視されることが理解されよう。ユニッ
ト194によって整合が見つかったならば、制御ユニッ
ト50からラッチ信号ユニット184を受け取るように
構成されたANDゲート195へ入力は供給され、これ
によって関連する宛て先が選択されるのは補正ラッチ信
号が指定された時に限られる。セレクタ174はデータ
をパイプ171の連続データ場所へ書き込むように循環
して演算する。イン・ポインタ196は次の書き込みエ
ントリのパイプ171内にアドレスを常に有する。この
アドレスは次の書き込み動作に対して要求されたアドレ
スを選択するために線197を介してセレクタ174へ
入力される。信号197はAdd1(1を加算せよ)ユ
ニット200からの信号を他の入力として有する加算器
198へ送られる。加算器198の出力はANDゲート
195からラッチ信号を受け取るポインタ回路196へ
フィードバックされ、これによりパイプ171へデータ
を書き込むそれぞれの新しいラッチング動作ごとにポイ
ンタアドレスを一つずつ進める。値がパイプへ書き込ま
れる時、ラッチ信号184は最初に指定される。AND
ゲート195の出力はパイプ171内のラッチ回路20
1へ送られる。ラッチ信号184が逆指定された時、結
果バス54の値はパイプ171の選択された場所に格納
され、次の書き込みエントリのアドレスがポインタ19
6へ格納される。
6により詳細に記述されている。パイプ171はN個の
データ値を保持するように構成された複数の分離選択可
能なデータ格納(装置)190を備える。結果バス54
は、データ格納190の各々に接続され、宛て先セレク
タ174はどのデータ格納が結果バス54から入力を受
容してよいかを決定するように各データ入力と接続され
ている。同様に、各データ格納190は、二つの分離出
力セレクタ191及び192へ収集される。これらの二
つの出力セレクタは類似し、それぞれが各データ格納場
所へ接続され、あらゆるデータ場所をそれぞれのソース
1バス52及びソース2バス53へ接続させることがで
きる。パイプへ書き込まれる時、宛て先信号150がこ
のパイプへ入力され、このパイプにおいては、宛て先ア
ドレスは、命令がこのパイプの使用を宛て先として要求
することを確実とするように整合ユニット194でその
パイプ用に指定されたアドレスと比較される。宛て先信
号は、レジスタファイル170用の入力セレクタへ送ら
れるが、整合がなければ、この宛て先信号はレジスタフ
ァイル170に無視されることが理解されよう。ユニッ
ト194によって整合が見つかったならば、制御ユニッ
ト50からラッチ信号ユニット184を受け取るように
構成されたANDゲート195へ入力は供給され、これ
によって関連する宛て先が選択されるのは補正ラッチ信
号が指定された時に限られる。セレクタ174はデータ
をパイプ171の連続データ場所へ書き込むように循環
して演算する。イン・ポインタ196は次の書き込みエ
ントリのパイプ171内にアドレスを常に有する。この
アドレスは次の書き込み動作に対して要求されたアドレ
スを選択するために線197を介してセレクタ174へ
入力される。信号197はAdd1(1を加算せよ)ユ
ニット200からの信号を他の入力として有する加算器
198へ送られる。加算器198の出力はANDゲート
195からラッチ信号を受け取るポインタ回路196へ
フィードバックされ、これによりパイプ171へデータ
を書き込むそれぞれの新しいラッチング動作ごとにポイ
ンタアドレスを一つずつ進める。値がパイプへ書き込ま
れる時、ラッチ信号184は最初に指定される。AND
ゲート195の出力はパイプ171内のラッチ回路20
1へ送られる。ラッチ信号184が逆指定された時、結
果バス54の値はパイプ171の選択された場所に格納
され、次の書き込みエントリのアドレスがポインタ19
6へ格納される。
【0042】読み出し動作の間、ライン151及び18
3上のソース1及びソース2のアドレスは、レジスタフ
ァイル170及びパイプ171へ送られる。パイプ17
1から読み出される指定されたパイプアドレスは、レジ
スタファイル170内のアドレスと整合しない時、この
アドレスはこのレジスタファイル170によって無視さ
れる。入力されたアドレスは、パイプ171内におい
て、整合ユニット194と類似している他の整合ユニッ
ト205内のパイプの指定されたアドレスと比較され
る。各整合ユニット205の出力はそれぞれのイネーブ
ル入力182又は186を受け取るANDゲート206
へ送られる。ソース1の回路の場合、ANDゲート20
6の出力はソース1セレクタ190に対するイネーブル
信号207と、ORゲート209及びANDゲート21
0への入力を形成する。アウト・ポインタ回路211は
制御ユニット50からDone(終了)信号212を受
け取るように構成されている。ポインタ211は次のエ
ントリが読み取られるパイプ171内の場所190のア
ドレスを保持する。ポインタからの出力215は第1の
加算器216及び第2の加算器217へ送られる。加算
器216は、値1が信号へ加算され且つORゲート20
9からの出力信号の制御下においてマルチプレクサ21
8へ送られるのを可能にする。もう一方の加算器217
は値2を線215上の信号へ加算するように構成され、
ポインタ回路211に対する出力信号215が2だけ増
分された値である出力220を提供する。ANDゲート
210からの出力によって制御されるマルチプレクサ2
21は、ポインタが読み取られる場所が2だけ増分され
た場所である線220からの入力か又はマルチプレクサ
218からの出力を受け取るようにポインタ回路221
への入力223を制御する。マルチプレクサ218の出
力はそれ自体、増分ゼロ又は加算器216によって実行
される増分1を有する出力信号215であってもよい。
パイプ171からの読み出しを実行する動作において、
ソース1出力52はソース2出力53も一緒にアクティ
ブ(活動状態)になる前にアクセスされるように定義さ
れる。このため、出力ポインタ値215は、対応する信
号が入力182及び183上で受け取られた時に読み取
るべきパイプの位置を選択するように出力セレクタ19
2へ直接送られる。線207上の信号はソース1バス5
2に対して読み出し動作が行われたか否かを決定し、且
つこの信号はまた、線221を介してセレクタ回路19
1へ入力される場所の選択を用意するため、ポインタ2
11からの出力信号215か又は加算器216によって
生成された増分1を選択するようにマルチプレクサ22
0へ送られる。このように、読み出し動作は対応する入
力信号が入力186及び151へ提供された時にソース
バス53上で実行されてもよい。ソース1バス52に対
する読み出し動作が全く行われなかった場合、セレクタ
191はポインタ211から線215を介して指定され
た場所から出力する。しかしながら、線207への信号
がソース1バス52上で読み出し動作を生じた場合、マ
ルチプレクサ220は読み出し動作がソース2バス53
へのセレクタ191によって実行される場所を1だけ増
分するように演算される。ソース2バスに対して読み出
し動作を生じるように使用されるANDゲート206か
らの出力信号は、ORゲート209へ送られてマルチプ
レクサ218を制御し、ANDゲート210へ送られ
て、次の読み出し動作の為のポインタ211によって指
定された場所へ進む時にマルチプレクサ221を制御す
る。読み出し動作が全く生じなかった場合、ポインタ2
11からの出力信号215は場所を変更せずにマルチプ
レクサ218及び221を介してフィードバックされ
る。ソースバスに対する読み出し動作が一回だけ発生し
た場合、加算器216の出力216はポインタの場所を
1だけ進めるようにマルチプレクサ218及び221を
介して送られる。ソースバス52及び53の両方に対し
て読み出し動作が発生した場合、ポインタ211によっ
て識別された場所はマルチプレクサを介して線220へ
送られた加算器217の出力を用いることによって2だ
け進められる。
3上のソース1及びソース2のアドレスは、レジスタフ
ァイル170及びパイプ171へ送られる。パイプ17
1から読み出される指定されたパイプアドレスは、レジ
スタファイル170内のアドレスと整合しない時、この
アドレスはこのレジスタファイル170によって無視さ
れる。入力されたアドレスは、パイプ171内におい
て、整合ユニット194と類似している他の整合ユニッ
ト205内のパイプの指定されたアドレスと比較され
る。各整合ユニット205の出力はそれぞれのイネーブ
ル入力182又は186を受け取るANDゲート206
へ送られる。ソース1の回路の場合、ANDゲート20
6の出力はソース1セレクタ190に対するイネーブル
信号207と、ORゲート209及びANDゲート21
0への入力を形成する。アウト・ポインタ回路211は
制御ユニット50からDone(終了)信号212を受
け取るように構成されている。ポインタ211は次のエ
ントリが読み取られるパイプ171内の場所190のア
ドレスを保持する。ポインタからの出力215は第1の
加算器216及び第2の加算器217へ送られる。加算
器216は、値1が信号へ加算され且つORゲート20
9からの出力信号の制御下においてマルチプレクサ21
8へ送られるのを可能にする。もう一方の加算器217
は値2を線215上の信号へ加算するように構成され、
ポインタ回路211に対する出力信号215が2だけ増
分された値である出力220を提供する。ANDゲート
210からの出力によって制御されるマルチプレクサ2
21は、ポインタが読み取られる場所が2だけ増分され
た場所である線220からの入力か又はマルチプレクサ
218からの出力を受け取るようにポインタ回路221
への入力223を制御する。マルチプレクサ218の出
力はそれ自体、増分ゼロ又は加算器216によって実行
される増分1を有する出力信号215であってもよい。
パイプ171からの読み出しを実行する動作において、
ソース1出力52はソース2出力53も一緒にアクティ
ブ(活動状態)になる前にアクセスされるように定義さ
れる。このため、出力ポインタ値215は、対応する信
号が入力182及び183上で受け取られた時に読み取
るべきパイプの位置を選択するように出力セレクタ19
2へ直接送られる。線207上の信号はソース1バス5
2に対して読み出し動作が行われたか否かを決定し、且
つこの信号はまた、線221を介してセレクタ回路19
1へ入力される場所の選択を用意するため、ポインタ2
11からの出力信号215か又は加算器216によって
生成された増分1を選択するようにマルチプレクサ22
0へ送られる。このように、読み出し動作は対応する入
力信号が入力186及び151へ提供された時にソース
バス53上で実行されてもよい。ソース1バス52に対
する読み出し動作が全く行われなかった場合、セレクタ
191はポインタ211から線215を介して指定され
た場所から出力する。しかしながら、線207への信号
がソース1バス52上で読み出し動作を生じた場合、マ
ルチプレクサ220は読み出し動作がソース2バス53
へのセレクタ191によって実行される場所を1だけ増
分するように演算される。ソース2バスに対して読み出
し動作を生じるように使用されるANDゲート206か
らの出力信号は、ORゲート209へ送られてマルチプ
レクサ218を制御し、ANDゲート210へ送られ
て、次の読み出し動作の為のポインタ211によって指
定された場所へ進む時にマルチプレクサ221を制御す
る。読み出し動作が全く生じなかった場合、ポインタ2
11からの出力信号215は場所を変更せずにマルチプ
レクサ218及び221を介してフィードバックされ
る。ソースバスに対する読み出し動作が一回だけ発生し
た場合、加算器216の出力216はポインタの場所を
1だけ進めるようにマルチプレクサ218及び221を
介して送られる。ソースバス52及び53の両方に対し
て読み出し動作が発生した場合、ポインタ211によっ
て識別された場所はマルチプレクサを介して線220へ
送られた加算器217の出力を用いることによって2だ
け進められる。
【0043】既に記述されている回路以外に、図3のプ
ロセッサは、次のシーケンシャルな命令のアドレスを保
持する命令ポインタレジスタ230を含む。これは既に
述べているフェッチャ回路60によって実行されるの
で、メモリからの命令をフェッチするためには使用され
ない。命令ポインタレジスタ230は結果バス54に接
続され、ラッチ信号231が制御ユニット50から入力
された時に命令アドレスをラッチするように使用されて
もよい。同様に、イネーブル信号232が制御ユニット
50から提供された時、レジスタ230における値はソ
ース2バス53へ出力される。
ロセッサは、次のシーケンシャルな命令のアドレスを保
持する命令ポインタレジスタ230を含む。これは既に
述べているフェッチャ回路60によって実行されるの
で、メモリからの命令をフェッチするためには使用され
ない。命令ポインタレジスタ230は結果バス54に接
続され、ラッチ信号231が制御ユニット50から入力
された時に命令アドレスをラッチするように使用されて
もよい。同様に、イネーブル信号232が制御ユニット
50から提供された時、レジスタ230における値はソ
ース2バス53へ出力される。
【0044】テンポラリ・レジスタ240はメモリにア
クセスする時に使用するための中間アドレスを保持す
る。ラッチ信号241が制御ユニット50から提供され
た時、結果バス54からのアドレスを格納することがで
きる。テンポラリ・レジスタ240における値はアドレ
スマルチプレクサ242へ送られ、このアドレスマルチ
プレクサ242は、命令フェッチャからの出力されるア
ドレス103又はテンポラリ・レジスタ240から導出
されたアドレスをメモリ41につながるアドレスバス4
2へ供給する。
クセスする時に使用するための中間アドレスを保持す
る。ラッチ信号241が制御ユニット50から提供され
た時、結果バス54からのアドレスを格納することがで
きる。テンポラリ・レジスタ240における値はアドレ
スマルチプレクサ242へ送られ、このアドレスマルチ
プレクサ242は、命令フェッチャからの出力されるア
ドレス103又はテンポラリ・レジスタ240から導出
されたアドレスをメモリ41につながるアドレスバス4
2へ供給する。
【0045】定数レジスタ167は、命令の拡張から線
164へ出力された定数値を保持するために使用される
ことができると共に、この値を、制御ユニット50から
イネーブルソース1信号247を受け取るように構成さ
れたANDゲート246からイネーブル信号245が導
出された時にソース1バス52へ送ることができる。A
NDゲート185及びANDゲート246はイネーブル
信号247の他にORゲート248から入力を受け取る
ことができる。これらはCONSTANT(定数)レジ
スタ167又はRegister(レジスタ)ファイル
170若しくはPipe(パイプ)171のどれがソー
ス1バス52へ送られるかを制御する。ORゲート24
8は、定数が拡張された命令内に存在していることを示
す線166からの第1の入力、及びソース1アドレスと
して宛て先フィールドを使用するようにマルチプレクサ
180を制御するために制御ユニット50から出力され
た第2の入力249を受け取る。これにより、命令の演
算コードに従って、いくつかの命令が他のソースオペラ
ンドを指定するために宛て先フィールドを使用すること
を可能とする。
164へ出力された定数値を保持するために使用される
ことができると共に、この値を、制御ユニット50から
イネーブルソース1信号247を受け取るように構成さ
れたANDゲート246からイネーブル信号245が導
出された時にソース1バス52へ送ることができる。A
NDゲート185及びANDゲート246はイネーブル
信号247の他にORゲート248から入力を受け取る
ことができる。これらはCONSTANT(定数)レジ
スタ167又はRegister(レジスタ)ファイル
170若しくはPipe(パイプ)171のどれがソー
ス1バス52へ送られるかを制御する。ORゲート24
8は、定数が拡張された命令内に存在していることを示
す線166からの第1の入力、及びソース1アドレスと
して宛て先フィールドを使用するようにマルチプレクサ
180を制御するために制御ユニット50から出力され
た第2の入力249を受け取る。これにより、命令の演
算コードに従って、いくつかの命令が他のソースオペラ
ンドを指定するために宛て先フィールドを使用すること
を可能とする。
【0046】長さレジスタ127は現在の命令の長さの
表示を保持し、この長さの表示がイネーブル信号250
が制御ユニット50から入力された時にソースバス52
へ駆動され得る。これはレジスタ230において保持さ
れる命令ポインタの値を調整するために使用され得る。
表示を保持し、この長さの表示がイネーブル信号250
が制御ユニット50から入力された時にソースバス52
へ駆動され得る。これはレジスタ230において保持さ
れる命令ポインタの値を調整するために使用され得る。
【0047】アドレスマルチプレクサ242は制御ユニ
ット50からのフェッチ制御信号251によって制御さ
れ、これによってメモリがフェッチャ60又はテンポラ
リ・レジスタ240内の値からアドレスされる。
ット50からのフェッチ制御信号251によって制御さ
れ、これによってメモリがフェッチャ60又はテンポラ
リ・レジスタ240内の値からアドレスされる。
【0048】書き込みバッファ252は制御ユニット5
0からのイネーブル信号253によって制御されて、信
号253がイネーブルとされた時に結果バス54の値を
データバス43へ駆動する。同様に、読み出しバッファ
254は制御信号50から駆動された読み出し制御信号
255によって制御され、これによってデータバス43
上の値は信号255がイネーブルとされた時にソース1
バス52へ駆動され得る。フェッチャ60のためのラッ
チ入力100は、メモリからの読み出しがメモリからの
他の命令ワードをフェッチするように要求された時に共
にイネーブルとされる制御ユニットからの信号251及
び255をその入力として有するANDゲート260か
ら導出される。
0からのイネーブル信号253によって制御されて、信
号253がイネーブルとされた時に結果バス54の値を
データバス43へ駆動する。同様に、読み出しバッファ
254は制御信号50から駆動された読み出し制御信号
255によって制御され、これによってデータバス43
上の値は信号255がイネーブルとされた時にソース1
バス52へ駆動され得る。フェッチャ60のためのラッ
チ入力100は、メモリからの読み出しがメモリからの
他の命令ワードをフェッチするように要求された時に共
にイネーブルとされる制御ユニットからの信号251及
び255をその入力として有するANDゲート260か
ら導出される。
【0049】使用上、制御ユニット50からの全ての制
御出力は最初に逆指定される。フェッチャ60からのM
ore出力107は他の命令ワードがメモリ41から必
要とされることを示す場合、読み出し動作は他のワード
をフェッチャ60へロードするために実行される。プロ
セッサが新しい命令シーケンスへ分岐した場合、調整出
力96は位置合わせが必要か否かを示すために提供され
る。位置合わせが必要な場合、命令ワードに対する他の
メモリ読み出しが必要されることもある。More出力
107は命令ワードに対する他のメモリ読み出しが必要
な場合にそれを指示する。位置合わせの後で、命令は命
令レジスタ62へロードされ、ユニット63によって拡
張され、対応するソース又は定数値はソース1バス52
又はソース2バス53へ供給され、次いで対応する演算
が制御ユニット50からのコマンド信号261下でAL
U51によって実行される。
御出力は最初に逆指定される。フェッチャ60からのM
ore出力107は他の命令ワードがメモリ41から必
要とされることを示す場合、読み出し動作は他のワード
をフェッチャ60へロードするために実行される。プロ
セッサが新しい命令シーケンスへ分岐した場合、調整出
力96は位置合わせが必要か否かを示すために提供され
る。位置合わせが必要な場合、命令ワードに対する他の
メモリ読み出しが必要されることもある。More出力
107は命令ワードに対する他のメモリ読み出しが必要
な場合にそれを指示する。位置合わせの後で、命令は命
令レジスタ62へロードされ、ユニット63によって拡
張され、対応するソース又は定数値はソース1バス52
又はソース2バス53へ供給され、次いで対応する演算
が制御ユニット50からのコマンド信号261下でAL
U51によって実行される。
【0050】プロセッサは算術演算命令を実行してよ
い。この場合において、命令は、パイプ171、レジス
タファイル170、又は定数レジスタ167から出され
た二つのソース値をとることができる。これらは拡張ユ
ニット63からの出力信号によって指定される。ALU
51が結果を生成し、この結果は結果バス54へ送られ
且つ拡張ユニット63から導出された宛て先信号によっ
て指定されるようにパイプ171又はレジスタファイル
170へ格納される。いくつかの演算は単一ソースオペ
ランドを有するにすぎず、この場合ソース2バス53上
の値は無視され、線186上のイネーブル信号は指定さ
れない。
い。この場合において、命令は、パイプ171、レジス
タファイル170、又は定数レジスタ167から出され
た二つのソース値をとることができる。これらは拡張ユ
ニット63からの出力信号によって指定される。ALU
51が結果を生成し、この結果は結果バス54へ送られ
且つ拡張ユニット63から導出された宛て先信号によっ
て指定されるようにパイプ171又はレジスタファイル
170へ格納される。いくつかの演算は単一ソースオペ
ランドを有するにすぎず、この場合ソース2バス53上
の値は無視され、線186上のイネーブル信号は指定さ
れない。
【0051】プロセッサは32ビットの値をメモリへ書
き込み又はメモリから読み出すメモリ命令を実行しても
よい。メモリにアクセスするアドレスは、ソース2及び
ソース1によって指定された二つのソース値又は拡張ユ
ニット63からの定数値を加算することによって計算さ
れる。結果バス54上の値は信号241によってテンポ
ラリ・レジスタ240内に格納される。この位置は結果
をレジスタファイル170又はパイプ171内に格納す
ることによって読み出され得る。或いは、この位置はマ
ルチプレクサ180によって線183へ経路指定された
宛て先信号150によって指定されるようにパイプ17
1又はレジスタファイル170から読み出すことによっ
て書き込まれることができる。読み出しと書き込みの両
方に対して、ソース1バス52は補正コマンド信号26
1によりALU51を介して結果バス54へ経路指定さ
れる。
き込み又はメモリから読み出すメモリ命令を実行しても
よい。メモリにアクセスするアドレスは、ソース2及び
ソース1によって指定された二つのソース値又は拡張ユ
ニット63からの定数値を加算することによって計算さ
れる。結果バス54上の値は信号241によってテンポ
ラリ・レジスタ240内に格納される。この位置は結果
をレジスタファイル170又はパイプ171内に格納す
ることによって読み出され得る。或いは、この位置はマ
ルチプレクサ180によって線183へ経路指定された
宛て先信号150によって指定されるようにパイプ17
1又はレジスタファイル170から読み出すことによっ
て書き込まれることができる。読み出しと書き込みの両
方に対して、ソース1バス52は補正コマンド信号26
1によりALU51を介して結果バス54へ経路指定さ
れる。
【0052】分岐命令を実行するにあたって、プロセッ
サはレジスタ230内に保持される命令ポインタを変更
することができ、これによってプログラムの異なる部分
が実行される。無条件分岐において命令はレジスタ23
0内の命令ポインタを常に新しい値へ変更する。条件分
岐に対して命令ポインタが更新されるために条件が指定
される。条件が合わない場合、命令ポインタは次のシー
ケンシャル命令のポイントに対する基準値として更新さ
れる。手順呼び出しはレジスタ170又はパイプ170
における次のシーケンシャルな命令のアドレスを保存す
る無条件分岐として実行され得る。
サはレジスタ230内に保持される命令ポインタを変更
することができ、これによってプログラムの異なる部分
が実行される。無条件分岐において命令はレジスタ23
0内の命令ポインタを常に新しい値へ変更する。条件分
岐に対して命令ポインタが更新されるために条件が指定
される。条件が合わない場合、命令ポインタは次のシー
ケンシャル命令のポイントに対する基準値として更新さ
れる。手順呼び出しはレジスタ170又はパイプ170
における次のシーケンシャルな命令のアドレスを保存す
る無条件分岐として実行され得る。
【0053】上記例に使用され得る命令セットが以下に
示される。
示される。
【0054】
【表2】
【0055】これらのオペランドには記述型ネームが与
えられる。幾つかの命令は三つ未満のオペランドを有
し、これらは結果的に省略されたオペランドに対するブ
ランクを有する。圧縮された命令内の省略に適している
と認められた省略されたオペランドには特別な値が与え
られることが理解されよう。命令のために選択された非
圧縮命令フォーマット(フォーマット12乃至15)は
プログラマによって選択されたオペランドに依存する。
例えば、Move(移動せよ)命令は、Result(結果)オペ
ランドに対してレジスタ又はパイプを選択することがで
き、及びValue (値)オペランドに対してレジスタ、パ
イプ又は定数値を選択することができる。この値が定数
でない場合、フォーマット12が使用され得る。Result
アドレスはフィールド2内で保持され、特別の値はフィ
ールド3内に埋め込まれ、Value アドレスはフィールド
4内にプットされる。Value オペランドが定数である場
合、フォーマット13及び14が定数の長さに従って使
用され得る。Value オペランドが定数であり、Resultオ
ペランドがパイプである場合、フォーマット13及び1
4の他に、フォーマット15が使用され得る。非圧縮フ
ォーマットが一旦選択されると、それは図2で可能とさ
れたように圧縮され得る。同様の方法が他の命令にも使
用され得る。
えられる。幾つかの命令は三つ未満のオペランドを有
し、これらは結果的に省略されたオペランドに対するブ
ランクを有する。圧縮された命令内の省略に適している
と認められた省略されたオペランドには特別な値が与え
られることが理解されよう。命令のために選択された非
圧縮命令フォーマット(フォーマット12乃至15)は
プログラマによって選択されたオペランドに依存する。
例えば、Move(移動せよ)命令は、Result(結果)オペ
ランドに対してレジスタ又はパイプを選択することがで
き、及びValue (値)オペランドに対してレジスタ、パ
イプ又は定数値を選択することができる。この値が定数
でない場合、フォーマット12が使用され得る。Result
アドレスはフィールド2内で保持され、特別の値はフィ
ールド3内に埋め込まれ、Value アドレスはフィールド
4内にプットされる。Value オペランドが定数である場
合、フォーマット13及び14が定数の長さに従って使
用され得る。Value オペランドが定数であり、Resultオ
ペランドがパイプである場合、フォーマット13及び1
4の他に、フォーマット15が使用され得る。非圧縮フ
ォーマットが一旦選択されると、それは図2で可能とさ
れたように圧縮され得る。同様の方法が他の命令にも使
用され得る。
【0056】オペランド2及びオペランド3によって指
定された値は、ソース2バス53とソース1バス52の
それぞれへプットされる。命令はその機能を実行する。
最終的に、一つあれば、Resultバス54はResultオペラ
ンドによって指定された位置に格納される。
定された値は、ソース2バス53とソース1バス52の
それぞれへプットされる。命令はその機能を実行する。
最終的に、一つあれば、Resultバス54はResultオペラ
ンドによって指定された位置に格納される。
【0057】これらの命令語の意味が以下に示される。 Move(移動せよ):ソース1バス52の値がResultバス
54に複写される。 Add (加算せよ):ソース1バス52の値がソース2バ
ス53の値へ加算され、その結果がResultバス54へプ
ットされる。 Subtract(減算せよ):ソース1バス52の値からソー
ス2バス53の値が減算され、その結果がResultバス5
4にプットされる。 Multiply(乗算せよ):ソース1バス52の値がソース
2バス53の値で乗算され、その結果がResultバス54
にプットされる。 Divide(除算せよ):ソース1バス52の値がソース2
バス53の値で除算され、その結果がResultバス54へ
プットされる。 Load Vector (ベクトルをロードせよ):ソース2バス
53上の値がソース1バス52上のスケーリングされた
値へ加算され、その結果がResultバス54へプットされ
る。これがテンポラリ・レジスタ(Temporary Registe
r)240に格納される。次いでメモリ読み出し動作が
生じ、メモリの値がソース1バス53へプットされる。
ALU51はこの値を変更せずにResultバス54へ送
る。 Store Vector(ベクトルを格納せよ):ソース2バス5
3の値がソース1バス52のスケーリングされた値へ加
算され、この結果がResultバス54へプットされる。こ
れがテンポラリ・レジスタ240へ格納される。オペラ
ンド1によってアドレスされた値がソース1バス52へ
運ばれ、ALU51はこの値を変更せずにResultバス5
4へ送る。メモリ書き込み動作が発生して、Resultバス
54の値をメモリに格納する。 Jump(飛越せ):命令ポインタ230はソース2バス5
3へプットされる。オペランド3が定数であれば、AL
U51は加算を実行するようにセットされ、そうでない
場合は、ソース1の値を変更せずに送るようにセットさ
れる。ここでResultバス54は飛越しターゲット値を保
持する。これがフェッチャ60へ書き込まれ、このフェ
ッチャ60は命令の新しいシーケンスのフェッチを開始
するように命令される。 Jump Not Zero (ゼロでなければ飛越せ):オペランド
1によってアドレスされた値はソース1バスに運ばれ、
ALU51からの状態信号56がソース1の値がゼロか
否かを見るためにチェックされる。その値がゼロの場
合、これ以上の動作が行われず、次のシーケンシャルな
命令が実行される。値がゼロでない場合、Jump(飛越
せ)命令と同じ動作が発生する。 Call(呼び出せ):命令ポインタ230がソース2バス
53に運ばれ、ALU51がこのポインタ230をResu
ltバス54へ送るようにセットされる。Resultバス54
の値はオペランド1のアドレスによって指定された位置
に格納される。続いてJump命令と同じ動作が発生する。 Equal To(に等しい):ソース1バス52の値がソース
2バス53の値と比較される。値が等しい場合、値1が
Resultバス54へ運ばれ、そうでない場合、値0がResu
ltバス54へプットされる。 Greater Than(より大きい):ソース1バス52の値が
ソース2バス53の値と比較される。ソース2がソース
1より大きい場合、値1がResultバス54へ運ばれ、そ
うでない場合、値0がResultバス54へプットされる。 And (論理積):ソース1バス52の値がソース2バス
53の値とAND演算され、その結果がResultバス54
へプットされる。 Or(論理和):ソース1バス52の値がソース2バス5
3の値とOR演算され、その結果がResultバス54へプ
ットされる。 Exclusive Or(排他的論理和):ソース1バス52の値
がソース2バス53の値と排他的OR演算され、その結
果がResultバス54へプットされる。 Shift Left(左へシフトせよ):ソース1バス52の値
がソース2バス53の値だけ左へ(最上位エンドまで)
シフトされ、その結果がResultバス54へプットされ
る。 Shift Right (右へシフトせよ):ソース1バス52の
値がソース2バス53の値だけ右へ(最下位エンドま
で)シフトされ、その結果がResultバス54へプットさ
れる。
54に複写される。 Add (加算せよ):ソース1バス52の値がソース2バ
ス53の値へ加算され、その結果がResultバス54へプ
ットされる。 Subtract(減算せよ):ソース1バス52の値からソー
ス2バス53の値が減算され、その結果がResultバス5
4にプットされる。 Multiply(乗算せよ):ソース1バス52の値がソース
2バス53の値で乗算され、その結果がResultバス54
にプットされる。 Divide(除算せよ):ソース1バス52の値がソース2
バス53の値で除算され、その結果がResultバス54へ
プットされる。 Load Vector (ベクトルをロードせよ):ソース2バス
53上の値がソース1バス52上のスケーリングされた
値へ加算され、その結果がResultバス54へプットされ
る。これがテンポラリ・レジスタ(Temporary Registe
r)240に格納される。次いでメモリ読み出し動作が
生じ、メモリの値がソース1バス53へプットされる。
ALU51はこの値を変更せずにResultバス54へ送
る。 Store Vector(ベクトルを格納せよ):ソース2バス5
3の値がソース1バス52のスケーリングされた値へ加
算され、この結果がResultバス54へプットされる。こ
れがテンポラリ・レジスタ240へ格納される。オペラ
ンド1によってアドレスされた値がソース1バス52へ
運ばれ、ALU51はこの値を変更せずにResultバス5
4へ送る。メモリ書き込み動作が発生して、Resultバス
54の値をメモリに格納する。 Jump(飛越せ):命令ポインタ230はソース2バス5
3へプットされる。オペランド3が定数であれば、AL
U51は加算を実行するようにセットされ、そうでない
場合は、ソース1の値を変更せずに送るようにセットさ
れる。ここでResultバス54は飛越しターゲット値を保
持する。これがフェッチャ60へ書き込まれ、このフェ
ッチャ60は命令の新しいシーケンスのフェッチを開始
するように命令される。 Jump Not Zero (ゼロでなければ飛越せ):オペランド
1によってアドレスされた値はソース1バスに運ばれ、
ALU51からの状態信号56がソース1の値がゼロか
否かを見るためにチェックされる。その値がゼロの場
合、これ以上の動作が行われず、次のシーケンシャルな
命令が実行される。値がゼロでない場合、Jump(飛越
せ)命令と同じ動作が発生する。 Call(呼び出せ):命令ポインタ230がソース2バス
53に運ばれ、ALU51がこのポインタ230をResu
ltバス54へ送るようにセットされる。Resultバス54
の値はオペランド1のアドレスによって指定された位置
に格納される。続いてJump命令と同じ動作が発生する。 Equal To(に等しい):ソース1バス52の値がソース
2バス53の値と比較される。値が等しい場合、値1が
Resultバス54へ運ばれ、そうでない場合、値0がResu
ltバス54へプットされる。 Greater Than(より大きい):ソース1バス52の値が
ソース2バス53の値と比較される。ソース2がソース
1より大きい場合、値1がResultバス54へ運ばれ、そ
うでない場合、値0がResultバス54へプットされる。 And (論理積):ソース1バス52の値がソース2バス
53の値とAND演算され、その結果がResultバス54
へプットされる。 Or(論理和):ソース1バス52の値がソース2バス5
3の値とOR演算され、その結果がResultバス54へプ
ットされる。 Exclusive Or(排他的論理和):ソース1バス52の値
がソース2バス53の値と排他的OR演算され、その結
果がResultバス54へプットされる。 Shift Left(左へシフトせよ):ソース1バス52の値
がソース2バス53の値だけ左へ(最上位エンドまで)
シフトされ、その結果がResultバス54へプットされ
る。 Shift Right (右へシフトせよ):ソース1バス52の
値がソース2バス53の値だけ右へ(最下位エンドま
で)シフトされ、その結果がResultバス54へプットさ
れる。
【0058】この例に従って使用された命令は、これら
が1、2、3、又は4バイトの長さを有することができ
るように圧縮されることが理解されよう。これらの圧縮
された命令の使用によってより高いコード密度が提供さ
れ、図1に示されたタイプの従来の技術の命令のセット
との比較が以下の例において説明されており、表題「従
来の技術」は図1に示したタイプの命令に係り、「本発
明の実施例」は上記の例を説明している。A(*) は命令
の選択されたフィールド内のアドレスの省略を指定する
ために使用され、従って暗黙パイプ171の使用を示
す。
が1、2、3、又は4バイトの長さを有することができ
るように圧縮されることが理解されよう。これらの圧縮
された命令の使用によってより高いコード密度が提供さ
れ、図1に示されたタイプの従来の技術の命令のセット
との比較が以下の例において説明されており、表題「従
来の技術」は図1に示したタイプの命令に係り、「本発
明の実施例」は上記の例を説明している。A(*) は命令
の選択されたフィールド内のアドレスの省略を指定する
ために使用され、従って暗黙パイプ171の使用を示
す。
【0059】
【表3】
【0060】
【表4】
【0061】
【表5】
【0062】
【表6】
【0063】
【表7】
【0064】
【表8】
【0065】本発明は上記の例の細部にわたって限定さ
れない。図7は図5及び図6を代替する他の構成を示
す。この他の例において、拡張ユニット63はソース及
び宛て先アドレスを提供するように構成され、これらの
ソース及び宛て先アドレスは、先入れ先出しをベースに
してこれらが動作し且つパイプ171の代わりにレジス
タファイル場所のいくつかを使用することができるよう
に循環的である。図5及び図6に既に記述された構成要
素と同様の図7における構成素子が同じ参照番号で示さ
れ、これらの機能についてここでは改めて反復しない。
この場合、イン・ポインタ196とアウト・ポインタ2
11はN乃至N+M−1までの数を両端を含み保持する
ことができるラッチである。これらは分離パイプ171
への要求条件を置き換えるために循環バッファとして使
用され得るレジスタファイル170内のレジスタ数であ
る。このようにレジスタファイル170上のソース及び
宛て先セレクタは通常にアドレスすることによってレジ
スタの内のいくつかを選択することができ、他のレジス
タは回帰循環バッファベースでアクセスされる。ルータ
132からの出力140、141、及び145はそれぞ
れマルチプレクサ266、267、及び268へ提供さ
れる。マルチプレクサ268はソース1の出力信号15
2を提供するように構成される。マルチプレクサ267
はソース2に対して出力信号を提供し、マルチプレクサ
266はその出力として宛て先アドレスを有する他のマ
ルチプレクサ270へ出力を提供する。出力信号14
0、141、及び145の各々はルータ132からのオ
ペランドごとにレジスタ数を比較しそしてパイプを示す
特別のレジスタ数と整合する場合、信号を指定する同様
のコンパレータ回路271へ送られる。この特別のレジ
スタ数はこれらが直接アクセスされる必要がないので循
環バッファを構成するM個のレジスタのいづれかである
ように定義される。コンパレータ271の出力はイネー
ブル暗黙回路147からの信号を第2の入力として有す
るORゲート272へそれぞれ送られる。マルチプレク
サ268はアウト・ポインタ211から第2の入力を有
する。マルチプレクサ267はポインタ211の出力又
はそのポイント値に対して増分1を受け取るように構成
されたマルチプレクサ274から第2の入力を有する。
同様にマルチプレクサ266はマルチプレクサ274か
らの出力又はその値の増分1を受け取るマルチプレクサ
275から入力を受け取る。
れない。図7は図5及び図6を代替する他の構成を示
す。この他の例において、拡張ユニット63はソース及
び宛て先アドレスを提供するように構成され、これらの
ソース及び宛て先アドレスは、先入れ先出しをベースに
してこれらが動作し且つパイプ171の代わりにレジス
タファイル場所のいくつかを使用することができるよう
に循環的である。図5及び図6に既に記述された構成要
素と同様の図7における構成素子が同じ参照番号で示さ
れ、これらの機能についてここでは改めて反復しない。
この場合、イン・ポインタ196とアウト・ポインタ2
11はN乃至N+M−1までの数を両端を含み保持する
ことができるラッチである。これらは分離パイプ171
への要求条件を置き換えるために循環バッファとして使
用され得るレジスタファイル170内のレジスタ数であ
る。このようにレジスタファイル170上のソース及び
宛て先セレクタは通常にアドレスすることによってレジ
スタの内のいくつかを選択することができ、他のレジス
タは回帰循環バッファベースでアクセスされる。ルータ
132からの出力140、141、及び145はそれぞ
れマルチプレクサ266、267、及び268へ提供さ
れる。マルチプレクサ268はソース1の出力信号15
2を提供するように構成される。マルチプレクサ267
はソース2に対して出力信号を提供し、マルチプレクサ
266はその出力として宛て先アドレスを有する他のマ
ルチプレクサ270へ出力を提供する。出力信号14
0、141、及び145の各々はルータ132からのオ
ペランドごとにレジスタ数を比較しそしてパイプを示す
特別のレジスタ数と整合する場合、信号を指定する同様
のコンパレータ回路271へ送られる。この特別のレジ
スタ数はこれらが直接アクセスされる必要がないので循
環バッファを構成するM個のレジスタのいづれかである
ように定義される。コンパレータ271の出力はイネー
ブル暗黙回路147からの信号を第2の入力として有す
るORゲート272へそれぞれ送られる。マルチプレク
サ268はアウト・ポインタ211から第2の入力を有
する。マルチプレクサ267はポインタ211の出力又
はそのポイント値に対して増分1を受け取るように構成
されたマルチプレクサ274から第2の入力を有する。
同様にマルチプレクサ266はマルチプレクサ274か
らの出力又はその値の増分1を受け取るマルチプレクサ
275から入力を受け取る。
【0066】ポインタ211への入力アドレスはその入
力としてマルチプレクサ275の出力又はその出力値の
増分1を有するマルチプレクサ276から導出される。
ORゲート272は使用済オペランド回路281から第
2の入力を受け取るように構成されたそれぞれのAND
ゲート280へ第1の出力を提供するように構成されて
いる。使用済オペランド281は演算コード信号131
並びに長さ及びタイプの信号120及び122の入力を
受け取る。回路281からの出力は三つのオペランドの
うちのどれがソースであり、どれが宛て先であるかを示
す。この出力はANDゲート280へ送られて、これら
のマルチプレクサ268、267、及び266の適切な
選択を可能とする。使用済オペランド回路281からの
他の出力283がORゲート272からの第2の入力を
受け取る他のANDゲート284へ送られる。これはマ
ルチプレクサ270が宛て先出力がイン・ポインタ19
6又はマルチプレクサ266から導出されるのを可能に
するように制御する。値N+M−1が与えられる場合
に、結果がNとなるように、「1を加算せよ(addon
e)」ユニットの各々が、入力信号のモジュロ加算を実行
する。Done(終了)信号212は命令の実行が終了
した時これらのポインタを更新するようにアウト・ポイ
ンタ211及びイン・ポインタ196のラッチングを制
御する。ANDゲート193は、ANDゲート284に
よって示されるように、値がパイプから読み取られた時
のイン・ポインタ196の更新を可能にするにすぎな
い。従って、レジスタファイル内の選択されたレジスタ
は先入れ先出しの複数の値のデータ格納として動作する
ために循環バッファとして使用されてもよいし、これは
長さ及びタイプの信号120及び122がソース又は宛
て先アドレスが圧縮命令において省略されたことを示す
時にもイネーブル暗黙回路147の使用により実行され
得る。
力としてマルチプレクサ275の出力又はその出力値の
増分1を有するマルチプレクサ276から導出される。
ORゲート272は使用済オペランド回路281から第
2の入力を受け取るように構成されたそれぞれのAND
ゲート280へ第1の出力を提供するように構成されて
いる。使用済オペランド281は演算コード信号131
並びに長さ及びタイプの信号120及び122の入力を
受け取る。回路281からの出力は三つのオペランドの
うちのどれがソースであり、どれが宛て先であるかを示
す。この出力はANDゲート280へ送られて、これら
のマルチプレクサ268、267、及び266の適切な
選択を可能とする。使用済オペランド回路281からの
他の出力283がORゲート272からの第2の入力を
受け取る他のANDゲート284へ送られる。これはマ
ルチプレクサ270が宛て先出力がイン・ポインタ19
6又はマルチプレクサ266から導出されるのを可能に
するように制御する。値N+M−1が与えられる場合
に、結果がNとなるように、「1を加算せよ(addon
e)」ユニットの各々が、入力信号のモジュロ加算を実行
する。Done(終了)信号212は命令の実行が終了
した時これらのポインタを更新するようにアウト・ポイ
ンタ211及びイン・ポインタ196のラッチングを制
御する。ANDゲート193は、ANDゲート284に
よって示されるように、値がパイプから読み取られた時
のイン・ポインタ196の更新を可能にするにすぎな
い。従って、レジスタファイル内の選択されたレジスタ
は先入れ先出しの複数の値のデータ格納として動作する
ために循環バッファとして使用されてもよいし、これは
長さ及びタイプの信号120及び122がソース又は宛
て先アドレスが圧縮命令において省略されたことを示す
時にもイネーブル暗黙回路147の使用により実行され
得る。
【0067】図2に関して記述された例において、あら
ゆる省略されたフィールドはパイプ171によって提供
された暗黙格納を表すと考えられる。このように、圧縮
された命令が拡張された時、省略されたフィールドはパ
イプ171のアドレスを示す値によって置換される。し
かしながら、他の実施例において、省略されたフィール
ドは包含されたフィールドの内の一つとして同じ値を取
ると考えられ得る。命令フォーマットにおいて使用され
た長さ及びタイプのインジケータは、包含されたフィー
ルドの内の指定されたフィールドと同じ出力値をそのフ
ィールドへ提供するように、包含されたフィールドの内
の一つの値が命令の拡張において反復されることを示す
ことができる。命令フォーマットは、包含されたフィー
ルドのどのフィールドがその値を反復させ且つ省略され
たフィールドの内のどのフィールドがこの反復された値
を取るのかを示すために、長さ及びタイプインジケータ
及びできれば命令フォーマットのPADセクションにお
けるビット値を使用することができる。図2において、
フォーマット6乃至11はどれもが演算コード拡張位置
において充分なビットを有している(ビット数22又は
32)ので、拡張ユニットは、包含されたフィールドの
内の一つの値を、省略されたフィールドへ複写すべきで
あることを示すことができる。
ゆる省略されたフィールドはパイプ171によって提供
された暗黙格納を表すと考えられる。このように、圧縮
された命令が拡張された時、省略されたフィールドはパ
イプ171のアドレスを示す値によって置換される。し
かしながら、他の実施例において、省略されたフィール
ドは包含されたフィールドの内の一つとして同じ値を取
ると考えられ得る。命令フォーマットにおいて使用され
た長さ及びタイプのインジケータは、包含されたフィー
ルドの内の指定されたフィールドと同じ出力値をそのフ
ィールドへ提供するように、包含されたフィールドの内
の一つの値が命令の拡張において反復されることを示す
ことができる。命令フォーマットは、包含されたフィー
ルドのどのフィールドがその値を反復させ且つ省略され
たフィールドの内のどのフィールドがこの反復された値
を取るのかを示すために、長さ及びタイプインジケータ
及びできれば命令フォーマットのPADセクションにお
けるビット値を使用することができる。図2において、
フォーマット6乃至11はどれもが演算コード拡張位置
において充分なビットを有している(ビット数22又は
32)ので、拡張ユニットは、包含されたフィールドの
内の一つの値を、省略されたフィールドへ複写すべきで
あることを示すことができる。
【0068】
【発明の効果】本発明により冗長ビット配置の必要を回
避すると共に命令の簡単な解読を可能にする圧縮命令を
有するコンピュータシステムが提供される。
避すると共に命令の簡単な解読を可能にする圧縮命令を
有するコンピュータシステムが提供される。
【図1】従来の技術の命令のフォーマットを示す図であ
る。
る。
【図2】本発明によって使用するための多様な命令フォ
ーマットを示す図である。
ーマットを示す図である。
【図3】本発明によるコンピュータシステムのブロック
図である。
図である。
【図4】図3に示された命令フェッチャの一部をより詳
細に示す図である。
細に示す図である。
【図5】図3に示された命令拡張ユニットをより詳細に
示す図である。
示す図である。
【図6】図3のパイプユニットをより詳細に示す図であ
る。
る。
【図7】図5の回路の改良された構成を示す図である。
24 長さインジケータ 25 演算コードインジケータ 26 タイプインジケータ 20、21、22、23 バイト 27、28、31 フィールド 29、30 ビット 32 拡張部
フロントページの続き (72)発明者 アンドリュー クレイグ スタージェス イギリス国 BS6 5HP ブリスト ル モントペリィアー ウェリントン アベニュ 3 (72)発明者 ネイサン マッキンゼー サイドウェル イギリス国 BS2 9UD ブリスト ル セントワーバーフス クリーブ ス トリート 21 (56)参考文献 特開 昭58−137047(JP,A) 特開 平3−201133(JP,A) 特開 昭63−111536(JP,A) 特開 平1−309130(JP,A) 特開 平3−53325(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/30 - 9/355 G06F 9/40 - 9/42
Claims (21)
- 【請求項1】 異なるビット長の複数の選択可能な命令
を備える命令セットに応答するように構成された論理回
路を有するコンピュータシステムであって、各命令が所
定のビット長のフォーマットと各々が所定のビット長で
ある命令フィールドの所定のシーケンスとをベースにし
ており、いくつかの命令が前記フィールドの内の選択さ
れた一つを省略し、どのフィールドが省略されたかを示
すために前記省略されたフィールドよりビット長が短い
識別子を含み、これにより前記命令のビット長を圧縮す
るコンピュータシステム。 - 【請求項2】 各命令が前記命令フィールドの他に制御
ビットを含む請求項1に記載のコンピュータシステム。 - 【請求項3】 前記制御ビットが命令の長さを示し、命
令においてどのフィールドが存在しているか又はどのフ
ィールドが省略されているかを識別する請求項2に記載
のコンピュータシステム。 - 【請求項4】 省略された前記フィールドの内の前記選
択された一つがデータ保持場所に対する識別子である請
求項1乃至3のいずれか一つに記載のコンピュータシス
テム。 - 【請求項5】 省略された前記フィールドの内の前記選
択された一つがレジスタに対する識別子である請求項4
に記載のコンピュータシステム。 - 【請求項6】 省略された前記フィールドの内の前記選
択された一つが複数のデータ値を同時に保持するように
構成された先入れ先出しデータ格納手段の識別子である
請求項4に記載のコンピュータシステム。 - 【請求項7】 任意の選択されたフィールドの省略によ
り命令においてアドレスデータを要求せずに暗黙格納場
所が指定され、前記論理回路が各省略されたフィールド
の省略に応答して前記暗黙格納場所にアクセスするよう
に構成されている請求項1乃至6のいずれか一つに記載
のコンピュータシステム。 - 【請求項8】 前記暗黙格納場所が複数のデータ値を同
時に保持するように構成された先入れ先出しデータ格納
手段を備える請求項7に記載のコンピュータシステム。 - 【請求項9】 前記フィールドの内の一つが、命令の実
行によって行われる演算を識別する演算コードを定義す
る請求項1乃至8のいずれか一つに記載のコンピュータ
システム。 - 【請求項10】 所定のビット長の前記フォーマットに
おいて前記命令フィールドが二つのデータソース場所及
びデータ宛て先場所を示し、これにより命令の実行に使
用するためのデータのソース及び命令の実行の結果の宛
て先を示す請求項9に記載のコンピュータシステム。 - 【請求項11】 各命令が整数のバイトに等しいビット
長を有し、各フィールドが1バイトより短いビット長を
有する請求項1乃至10のいずれか一つに記載のコンピ
ュータシステム。 - 【請求項12】 所定のビット長の前記フォーマットが
4バイト長である請求項11に記載のコンピュータシス
テム。 - 【請求項13】 選択された命令が複数のフィールドを
省略し、前記識別子が各省略されたフィールドを示す請
求項1乃至12のいずれか一つに記載のコンピュータシ
ステム。 - 【請求項14】 コンピュータシステムにおいて命令の
ビット長を圧縮する方法であって、 データ格納装置に複数の可変長命令を格納するステップ
を備え、 各命令が所定のビット長のフォーマットと各々が所定の
ビット長である命令フィールドの所定のシーケンスとを
ベースにしており、 いくつかの命令が少なくとも一つの選択された前記フィ
ールドの省略によって形成され、前記省略フィールドよ
りビット長が短い識別子によって一つ以上のどのフィー
ルドが省略されたかを示し、これにより前記命令のビッ
ト長を圧縮する、 命令ビット長圧縮方法。 - 【請求項15】 各々が所定のビット長のフォーマット
と各々が所定のビット長である命令フィールドの所定の
シーケンスをベースとした複数の命令を備える命令セッ
トから選択された命令を実行するように構成されたコン
ピュータシステム用に使用する命令を発生する方法であ
って、 少なくともいくつかの命令が少なくとも一つのフィール
ドの省略によって圧縮されると共にどのフィールドが省
略されたかを示すために前記省略フィールドよりビット
長が短い識別子を含む、命令を入力するステップと、 前記識別子を復号すると共に前記命令のビット長を拡張
して前記省略されたフィールドを回復するステップと、 前記拡張された命令を出力するステップと、 を備える命令発生方法。 - 【請求項16】 異なるビット長の複数選択可能な命令
を備える命令セットから選択された複数の命令を実行す
るステップを備え、 各命令が所定のビット長のフォーマットと各々が所定の
ビット長である命令フィールドの所定のシーケンスとを
ベースにしており、 いくつかの命令が少なくとも一つの選択された前記フィ
ールドを省略すると共にどのフィールドが省略されたか
を示すために前記省略されたフィールドよりビット長が
短い識別子を含み、これにより前記命令のビット長を圧
縮する、 コンピュータシステム動作方法。 - 【請求項17】 各命令の長さを示すステップと、 前記フィールドの他に各命令に包含された制御ビットに
より各命令においてどのフィールドが存在しており又は
省略されたかを識別するステップと、 をさらに備える請求項14乃至16のいずれか一つに記
載の方法。 - 【請求項18】 任意の選択されたフィールドの前記省
略が暗黙格納場所を指定し、前記暗黙格納場所が前記命
令における各省略フィールドの省略を検出することに応
答してアクセスされる請求項14乃至17のいずれか一
つに記載の方法。 - 【請求項19】 前記暗黙格納場所が先入れ先出しベー
スで複数のデータ値を同時に保持するように構成された
データ格納手段を備え、前記格納場所の前記アクセスが
前記格納場所へデータを書き込むこと又は前記格納場所
からデータを入手することを特徴とする請求項18に記
載の方法。 - 【請求項20】 命令のビット長を拡張する前記ステッ
プが省略されたフィールドに対して包含されたフィール
ドのビット値を反復することを含む請求項15に記載の
方法。 - 【請求項21】 前記包含されたフィールドの重みが前
記命令において包含された制御ビットによって決定され
る請求項14乃至16のいずれか一つに記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9412434A GB9412434D0 (en) | 1994-06-21 | 1994-06-21 | Computer instruction compression |
GB9412434-4 | 1994-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0816391A JPH0816391A (ja) | 1996-01-19 |
JP2992223B2 true JP2992223B2 (ja) | 1999-12-20 |
Family
ID=10757077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7178221A Expired - Fee Related JP2992223B2 (ja) | 1994-06-21 | 1995-06-21 | コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6564314B1 (ja) |
EP (1) | EP0689128B1 (ja) |
JP (1) | JP2992223B2 (ja) |
DE (1) | DE69534113T2 (ja) |
GB (1) | GB9412434D0 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6618506B1 (en) * | 1997-09-23 | 2003-09-09 | International Business Machines Corporation | Method and apparatus for improved compression and decompression |
JP3123047B2 (ja) | 1998-10-02 | 2001-01-09 | 日本電気株式会社 | マイクロプロセッサ |
US6338132B1 (en) * | 1998-12-30 | 2002-01-08 | Intel Corporation | System and method for storing immediate data |
US6820189B1 (en) * | 1999-05-12 | 2004-11-16 | Analog Devices, Inc. | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation |
US6865664B2 (en) * | 2000-12-13 | 2005-03-08 | Conexant Systems, Inc. | Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program |
US7493470B1 (en) | 2001-12-07 | 2009-02-17 | Arc International, Plc | Processor apparatus and methods optimized for control applications |
US7278137B1 (en) | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
EP1470476A4 (en) * | 2002-01-31 | 2007-05-30 | Arc Int | CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE |
ITMI20022003A1 (it) * | 2002-09-20 | 2004-03-21 | Atmel Corp | Apparecchio e metodo per la decompressione dinamica di programmi. |
GB2409061B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | Table lookup operation within a data processing system |
GB2411975B (en) * | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
GB2409064B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
GB2409062C (en) * | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
GB2409060B (en) * | 2003-12-09 | 2006-08-09 | Advanced Risc Mach Ltd | Moving data between registers of different register data stores |
GB2409067B (en) * | 2003-12-09 | 2006-12-13 | Advanced Risc Mach Ltd | Endianess compensation within a SIMD data processing system |
GB2409063B (en) * | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
GB2409059B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409068A (en) * | 2003-12-09 | 2005-06-15 | Advanced Risc Mach Ltd | Data element size control within parallel lanes of processing |
GB2409066B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411973B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | Constant generation in SMD processing |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
GB2410097B (en) * | 2004-01-13 | 2006-11-01 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing data processing operations on floating point data elements |
GB2411978B (en) * | 2004-03-10 | 2007-04-04 | Advanced Risc Mach Ltd | Inserting bits within a data word |
ES2257152B1 (es) * | 2004-05-31 | 2007-07-01 | Laboratorios Almirall S.A. | Combinaciones que comprenden agentes antimuscarinicos y agonistas beta-adrenergicos. |
US9557994B2 (en) * | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US8051052B2 (en) * | 2004-12-21 | 2011-11-01 | Sandisk Technologies Inc. | Method for creating control structure for versatile content control |
US8601283B2 (en) * | 2004-12-21 | 2013-12-03 | Sandisk Technologies Inc. | Method for versatile content control with partitioning |
US20070168292A1 (en) * | 2004-12-21 | 2007-07-19 | Fabrice Jogand-Coulomb | Memory system with versatile content control |
US8504849B2 (en) * | 2004-12-21 | 2013-08-06 | Sandisk Technologies Inc. | Method for versatile content control |
US7748031B2 (en) * | 2005-07-08 | 2010-06-29 | Sandisk Corporation | Mass storage device with automated credentials loading |
US8245031B2 (en) * | 2006-07-07 | 2012-08-14 | Sandisk Technologies Inc. | Content control method using certificate revocation lists |
US8140843B2 (en) * | 2006-07-07 | 2012-03-20 | Sandisk Technologies Inc. | Content control method using certificate chains |
US8639939B2 (en) * | 2006-07-07 | 2014-01-28 | Sandisk Technologies Inc. | Control method using identity objects |
US8266711B2 (en) * | 2006-07-07 | 2012-09-11 | Sandisk Technologies Inc. | Method for controlling information supplied from memory device |
US20080010449A1 (en) * | 2006-07-07 | 2008-01-10 | Michael Holtzman | Content Control System Using Certificate Chains |
US8613103B2 (en) * | 2006-07-07 | 2013-12-17 | Sandisk Technologies Inc. | Content control method using versatile control structure |
US20100138652A1 (en) * | 2006-07-07 | 2010-06-03 | Rotem Sela | Content control method using certificate revocation lists |
US20080165232A1 (en) * | 2007-01-10 | 2008-07-10 | Kenneth Yuen | Ink cartridge |
US9104618B2 (en) * | 2008-12-18 | 2015-08-11 | Sandisk Technologies Inc. | Managing access to an address range in a storage device |
WO2010084379A1 (en) * | 2009-01-21 | 2010-07-29 | Freescale Semiconductor, Inc. | Microprocessor architecture and method of instruction decoding |
EP2473918B1 (en) * | 2009-09-04 | 2019-05-08 | Intel Corporation | Method for generating a set of instruction compaction schemes, method for compacting a program according to the generated set, and programmable processor capable of executing a program thus compacted |
US8793469B2 (en) * | 2010-12-17 | 2014-07-29 | Intel Corporation | Programmable logic array and read-only memory area reduction using context-sensitive logic for data space manipulation |
JP4862100B1 (ja) * | 2011-03-25 | 2012-01-25 | 好一 北岸 | 中央演算処理装置及びマイクロコンピュータ |
US9436474B2 (en) * | 2012-07-27 | 2016-09-06 | Microsoft Technology Licensing, Llc | Lock free streaming of executable code data |
GB2556886B (en) | 2016-11-23 | 2019-05-15 | Imagination Tech Ltd | Encoding and decoding variable length instructions |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3275989A (en) * | 1961-10-02 | 1966-09-27 | Burroughs Corp | Control for digital computers |
US3626374A (en) * | 1970-02-10 | 1971-12-07 | Bell Telephone Labor Inc | High-speed data-directed information processing system characterized by a plural-module byte-organized memory unit |
US4241397A (en) * | 1977-10-25 | 1980-12-23 | Digital Equipment Corporation | Central processor unit for executing instructions with a special operand specifier of indeterminate length |
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
US5434568A (en) * | 1985-01-10 | 1995-07-18 | Moll; Edward W. | Data compression by removing repetition and unnecessary information |
US5249273A (en) * | 1989-01-17 | 1993-09-28 | Fujitsu Limited | Microprocessor having a variable length instruction format |
US5142633A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Preprocessing implied specifiers in a pipelined processor |
JP2970821B2 (ja) * | 1991-08-21 | 1999-11-02 | 松下電器産業株式会社 | データ処理装置 |
JPH05324314A (ja) * | 1992-05-20 | 1993-12-07 | Hitachi Ltd | データ処理装置 |
US5463746A (en) * | 1992-10-30 | 1995-10-31 | International Business Machines Corp. | Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes |
US5420923A (en) * | 1993-02-16 | 1995-05-30 | Scientific-Atlanta, Inc. | Addressed messaging in a cable television system |
-
1994
- 1994-06-21 GB GB9412434A patent/GB9412434D0/en active Pending
-
1995
- 1995-05-26 DE DE69534113T patent/DE69534113T2/de not_active Expired - Fee Related
- 1995-05-26 EP EP95303608A patent/EP0689128B1/en not_active Expired - Lifetime
- 1995-06-07 US US08/472,515 patent/US6564314B1/en not_active Expired - Lifetime
- 1995-06-21 JP JP7178221A patent/JP2992223B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69534113T2 (de) | 2006-01-26 |
GB9412434D0 (en) | 1994-08-10 |
US6564314B1 (en) | 2003-05-13 |
EP0689128B1 (en) | 2005-03-30 |
JPH0816391A (ja) | 1996-01-19 |
DE69534113D1 (de) | 2005-05-04 |
EP0689128A1 (en) | 1995-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2992223B2 (ja) | コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 | |
EP0071028B1 (en) | Instructionshandling unit in a data processing system with instruction substitution and method of operation | |
JP3649470B2 (ja) | データ処理装置 | |
US5996057A (en) | Data processing system and method of permutation with replication within a vector register file | |
CA1324671C (en) | Decoding multiple specifiers in a variable length instruction architecture | |
US4679140A (en) | Data processor with control of the significant bit lengths of general purpose registers | |
US5652900A (en) | Data processor having 2n bits width data bus for context switching function | |
US7487338B2 (en) | Data processor for modifying and executing operation of instruction code according to the indication of other instruction code | |
US20010010072A1 (en) | Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them | |
US6009508A (en) | System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis | |
JPH11154114A (ja) | 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法 | |
JPH10134036A (ja) | マルチメディア信号プロセッサの単一命令多重データ処理 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
EP0094535B1 (en) | Pipe-line data processing system | |
JP3004108B2 (ja) | 情報処理装置 | |
JP2001034471A (ja) | Vliw方式プロセッサ | |
JPH01137331A (ja) | 制御ワード分岐方法 | |
US20020138712A1 (en) | Data processing device with instruction translator and memory interface device | |
JP3729809B2 (ja) | コプロセッサを使用したデータ処理 | |
JP4955149B2 (ja) | ビットfifoを有するディジタル信号プロセッサ | |
CN110073332B (zh) | 数据处理装置和方法 | |
US6757809B1 (en) | Data processor having 2n bits width data bus for context switching functions | |
US7047396B1 (en) | Fixed length memory to memory arithmetic and architecture for a communications embedded processor system | |
US5121474A (en) | Bit string data processor using dynamically addressable bit locations in memory so overlapping strings do not destroy data in memory | |
JPH10143494A (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 |
|
LAPS | Cancellation because of no payment of annual fees |