JP2834289B2 - マイクロプロセッサ - Google Patents
マイクロプロセッサInfo
- Publication number
- JP2834289B2 JP2834289B2 JP2190661A JP19066190A JP2834289B2 JP 2834289 B2 JP2834289 B2 JP 2834289B2 JP 2190661 A JP2190661 A JP 2190661A JP 19066190 A JP19066190 A JP 19066190A JP 2834289 B2 JP2834289 B2 JP 2834289B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- decoder
- unit
- output
- length
- 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
- 230000004044 response Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 description 19
- 101001117010 Homo sapiens Pericentrin Proteins 0.000 description 17
- 102100024315 Pericentrin Human genes 0.000 description 17
- 238000012545 processing Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 101100243022 Mus musculus Pcnt gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012360 testing 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/22—Microcontrol or microprogram arrangements
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length 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/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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)
- Memory System (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、可変長命令セットを処理可能であるととも
に、複数命令の並列デコードを行うマイクロプロセッサ
に関する。
に、複数命令の並列デコードを行うマイクロプロセッサ
に関する。
可変長命令セットを処理可能である従来のマイクロプ
ロセッサにおいては、命令の並列デコードは行われてい
ない。
ロセッサにおいては、命令の並列デコードは行われてい
ない。
本発明に最も近い公知例としては、1989年9月11日発
刊の日経エレクトロニクス・ブックス「新世代マイクロ
プロセッサRISC,CISC,TRON」の第195頁から第206頁まで
の文献「キャッシュと分岐予測機構の内蔵などでパイプ
ラインの乱れを抑えて性能を挙げた32ビット・マイクロ
プロセッサV80」に記載された命令デコード方式があげ
られる。
刊の日経エレクトロニクス・ブックス「新世代マイクロ
プロセッサRISC,CISC,TRON」の第195頁から第206頁まで
の文献「キャッシュと分岐予測機構の内蔵などでパイプ
ラインの乱れを抑えて性能を挙げた32ビット・マイクロ
プロセッサV80」に記載された命令デコード方式があげ
られる。
上記公知のマイクロプロセッサでは、並列に複数の命
令をデコードこそしないが、2段階に分けて命令をデコ
ードすることで、デコード能力のスループットを向上さ
せている。この公知のマイクロプロセッサの1段目のデ
コード回路は、プリデコード・ユニットとよばれ、可変
長命令を固定長の要素に分割する機能を有している。こ
のように固定長の要素に分解された命令はひとまずプリ
デコード・ユニット内のバッファ(レジスタ)に格納さ
れ、命令デコード・ユニットの要求に応じてプリデコー
ド・ユニットから命令デコード・ユニットへの固定長の
要素に分解された命令の転送が行われる。
令をデコードこそしないが、2段階に分けて命令をデコ
ードすることで、デコード能力のスループットを向上さ
せている。この公知のマイクロプロセッサの1段目のデ
コード回路は、プリデコード・ユニットとよばれ、可変
長命令を固定長の要素に分割する機能を有している。こ
のように固定長の要素に分解された命令はひとまずプリ
デコード・ユニット内のバッファ(レジスタ)に格納さ
れ、命令デコード・ユニットの要求に応じてプリデコー
ド・ユニットから命令デコード・ユニットへの固定長の
要素に分解された命令の転送が行われる。
しかしながら本発明者等の検討によれば、上記従来技
術ではマイクロプロセッサの処理を更に高速化する場合
に二つの問題点が生ずると言うことが明らかとされた。
術ではマイクロプロセッサの処理を更に高速化する場合
に二つの問題点が生ずると言うことが明らかとされた。
その第1の問題は、命令デコードがパイプラインのう
ち二つのステージを用いるため、それだけ分岐処理が遅
くなることである。
ち二つのステージを用いるため、それだけ分岐処理が遅
くなることである。
すなわち、分岐処理が起動されてから、分岐先命令の
フェッチ、プリデコードと処理が進む場合、デコード処
理に1段しか要しないマイクロプロセッサに比べて、ス
テージ1段分だけ分岐に要する時間が増える。
フェッチ、プリデコードと処理が進む場合、デコード処
理に1段しか要しないマイクロプロセッサに比べて、ス
テージ1段分だけ分岐に要する時間が増える。
また第2の問題は、複数命令の並列実行するマイクロ
プロセッサにおいて、上記従来技術のような2段階に分
けて命令をデコードするデコード方式を採った場合、プ
リデコード・ユニットがマイクロプロセッサ全体の性能
を律速することである。それは、処理すべき命令は可変
長の状態であるので、プリデコード・ユニットが先行す
る命令のプリデコードを行わなければ、後続の命令のプ
リデコードを行えないためである。すなわち、プリデコ
ード・ユニットが、一度に一つの命令しかプリデコード
できないからである。
プロセッサにおいて、上記従来技術のような2段階に分
けて命令をデコードするデコード方式を採った場合、プ
リデコード・ユニットがマイクロプロセッサ全体の性能
を律速することである。それは、処理すべき命令は可変
長の状態であるので、プリデコード・ユニットが先行す
る命令のプリデコードを行わなければ、後続の命令のプ
リデコードを行えないためである。すなわち、プリデコ
ード・ユニットが、一度に一つの命令しかプリデコード
できないからである。
この第2の問題点については、三つの解決法があるこ
とも、本発明者等の検討により明らかとされた。
とも、本発明者等の検討により明らかとされた。
第1の解決策は、複数の命令をプリデコードする複数
のプリデコード回路を直列に接続するものである。すな
わち、後続のプリデコード回路は、先行するプリデコー
ド回路の出力を参照するようにする。その上で、これら
複数のプリデコード回路を1サイクル内に動作できるよ
うに設計すれば、この問題は解決できる。但しこの場合
には、直列に接続したプリデコード回路の遅延時間が問
題になる。
のプリデコード回路を直列に接続するものである。すな
わち、後続のプリデコード回路は、先行するプリデコー
ド回路の出力を参照するようにする。その上で、これら
複数のプリデコード回路を1サイクル内に動作できるよ
うに設計すれば、この問題は解決できる。但しこの場合
には、直列に接続したプリデコード回路の遅延時間が問
題になる。
第2の解決策は、プリデコード部の性能を1サイクル
に1命令をプリデコード可能にしたうえで、その性能差
をバッファで吸収する方法である。但しこの方法では、
最大スループットが1命令/サイクルとなるため、せっ
かく他のステージでは複数命令を実行できるようにした
のに、性能があまり向上しない。
に1命令をプリデコード可能にしたうえで、その性能差
をバッファで吸収する方法である。但しこの方法では、
最大スループットが1命令/サイクルとなるため、せっ
かく他のステージでは複数命令を実行できるようにした
のに、性能があまり向上しない。
第3の解決策は、本発明のように先行する命令のフォ
ーマットに何らかの仮定をおいて、後続命令をデコード
することである。
ーマットに何らかの仮定をおいて、後続命令をデコード
することである。
本発明はこの第3の解決策を具体的に実現するに際し
てなされたものであり、その目的とするところは、可変
長命令セットを処理するに際して複数命令を高速にかつ
並列にデコードできるマイクロプロセッサを提供するこ
とにある。
てなされたものであり、その目的とするところは、可変
長命令セットを処理するに際して複数命令を高速にかつ
並列にデコードできるマイクロプロセッサを提供するこ
とにある。
上記目的を達成するために、同時にデコードする命令
のうち、後続の命令については、先行命令の命令長を仮
定してデコードを行う。
のうち、後続の命令については、先行命令の命令長を仮
定してデコードを行う。
そして先行命令のデコードにより仮定が正しいと判っ
たときには後続の命令のデコード結果も正しいと判断
し、逆に仮定が誤っていたと判ったときには後続の命令
のデコード結果は誤っていたと判断し、そのデコード結
果を無効化する。
たときには後続の命令のデコード結果も正しいと判断
し、逆に仮定が誤っていたと判ったときには後続の命令
のデコード結果は誤っていたと判断し、そのデコード結
果を無効化する。
更に、仮定する命令長を、命令セット中の最短の命令
フォーマットの長さとするのが望ましい。なぜならば、
可変長命令セットにおいて最短の命令フォーマットは、
使用頻度が高い命令に対応し、それ故に仮定が成立する
確率が高いからである。
フォーマットの長さとするのが望ましい。なぜならば、
可変長命令セットにおいて最短の命令フォーマットは、
使用頻度が高い命令に対応し、それ故に仮定が成立する
確率が高いからである。
また複数命令を並列にデコードするため、命令プリフ
ェッチ・ユニットは、少なくとも最短の命令フォーマッ
トの2倍の長さの命令コードを、命令デコード・ユニッ
トへ転送する。
ェッチ・ユニットは、少なくとも最短の命令フォーマッ
トの2倍の長さの命令コードを、命令デコード・ユニッ
トへ転送する。
命令デコード・ユニットではその命令コードを、最短
の命令フォーマットの長さ毎に、別々の命令デコードに
入力する。各命令デコードは、少なくとも最短の命令フ
ォーマットを持つ命令をデコードする能力をもち、かつ
少なくとも一つの命令デコーダは命令セットのすべての
命令をデコードする能力を有する。各々の命令デコーダ
の出力は、それぞれ異なる出力ラッチに保持されること
もできる。
の命令フォーマットの長さ毎に、別々の命令デコードに
入力する。各命令デコードは、少なくとも最短の命令フ
ォーマットを持つ命令をデコードする能力をもち、かつ
少なくとも一つの命令デコーダは命令セットのすべての
命令をデコードする能力を有する。各々の命令デコーダ
の出力は、それぞれ異なる出力ラッチに保持されること
もできる。
本願において開示される発明のうち、代表的な実施例
によるマイクロプロセッサの概要は下記の通りである。
によるマイクロプロセッサの概要は下記の通りである。
すなわち、 (1)所定のビット幅(16ビット)の命令長の第1及び
第2の命令をマイクロプロセッサの外部からフェッチ
し、少なくとも上記所定のビット幅の2倍のビット幅
(32ビット)を有する出力線に上記第1及び第2の命令
を並行に出力するフェッチユニット(IU)と、 (2)その入力に上記フェッチユニット(IU)の上記出
力線の上記第1の命令が供給される第1の命令デコーダ
(ID0)と、 (3)その入力に上記フェッチユニット(IU)の上記出
力線の上記第2の命令が供給される第2の命令デコーダ
(ID1)と、 (4)上記第1の命令デコーダのデコード結果(id0_ou
t)と上記第2の命令デコーダのデコード結果(id1_ou
t)とが供給される制御部(PCNT)と、 (5)上記制御部(PCNT)からの出力に応答する命令実
行部(EU)とを具備し、 上記所定のビット幅の2倍のビット幅を少なくとも有
する出力線から上記所定の命令長の上記第1の命令が出
力される条件では、上記制御部(PCNT)は第1の命令デ
コーダ(ID0)のデコード結果(id0_out)中のこの条件
成立の情報に応答して、上記第2の命令デコーダ(ID
1)のデコード結果(id1_out)を有効とし、その結果上
記命令実行部(EU)は上記制御部の出力に伝達される上
記第1と第2の命令デコーダのデコード結果(id0_out,
id1_out)に応答して上記第1の命令と上記第2の命令
を並列に実行し、 一方上記フェッチユニット(IU)の上記出力線から上
記所定のビット幅と異なる命令長の命令が出力される他
の条件では、上記制御部(PCNT)は第1のデコーダ(ID
0)のデコード結果(id0_out)中のこの他の条件成立の
情報に応答して、上記第2のデコーダ(ID1)のデコー
ド結果(id1_out)を無効化し、その結果上記命令実行
部(EU)は上記制御部(PCNT)の出力に伝達される上記
第1の命令デコーダ(ID0)の上記デコード結果(id0_o
ut)に応答して上記第1の命令を実行することを特徴と
する。
第2の命令をマイクロプロセッサの外部からフェッチ
し、少なくとも上記所定のビット幅の2倍のビット幅
(32ビット)を有する出力線に上記第1及び第2の命令
を並行に出力するフェッチユニット(IU)と、 (2)その入力に上記フェッチユニット(IU)の上記出
力線の上記第1の命令が供給される第1の命令デコーダ
(ID0)と、 (3)その入力に上記フェッチユニット(IU)の上記出
力線の上記第2の命令が供給される第2の命令デコーダ
(ID1)と、 (4)上記第1の命令デコーダのデコード結果(id0_ou
t)と上記第2の命令デコーダのデコード結果(id1_ou
t)とが供給される制御部(PCNT)と、 (5)上記制御部(PCNT)からの出力に応答する命令実
行部(EU)とを具備し、 上記所定のビット幅の2倍のビット幅を少なくとも有
する出力線から上記所定の命令長の上記第1の命令が出
力される条件では、上記制御部(PCNT)は第1の命令デ
コーダ(ID0)のデコード結果(id0_out)中のこの条件
成立の情報に応答して、上記第2の命令デコーダ(ID
1)のデコード結果(id1_out)を有効とし、その結果上
記命令実行部(EU)は上記制御部の出力に伝達される上
記第1と第2の命令デコーダのデコード結果(id0_out,
id1_out)に応答して上記第1の命令と上記第2の命令
を並列に実行し、 一方上記フェッチユニット(IU)の上記出力線から上
記所定のビット幅と異なる命令長の命令が出力される他
の条件では、上記制御部(PCNT)は第1のデコーダ(ID
0)のデコード結果(id0_out)中のこの他の条件成立の
情報に応答して、上記第2のデコーダ(ID1)のデコー
ド結果(id1_out)を無効化し、その結果上記命令実行
部(EU)は上記制御部(PCNT)の出力に伝達される上記
第1の命令デコーダ(ID0)の上記デコード結果(id0_o
ut)に応答して上記第1の命令を実行することを特徴と
する。
各命令デコーダが処理した命令コーダが、各命令デコ
ーダでデコード可能な命令(すなわち最短の命令フォー
マットを持つ命令)であるかどうかの判定が行われる。
判定の結果、そうでない命令フォーマットをもつ命令の
デコードを行った命令デコーダであった場合、その命令
に後続する命令コードのデコード結果は全て無効化され
る。無効化は制御回路を用いて容易に実現できる。逆
に、判定の結果、全ての命令デコーダが最短命令フォー
マットを持つ命令をデコードした場合には、全デコード
結果が有効である。この時命令デコードのスループット
は最大であり、命令デコーダ数に等しい数の命令が1サ
イクルで処理される。
ーダでデコード可能な命令(すなわち最短の命令フォー
マットを持つ命令)であるかどうかの判定が行われる。
判定の結果、そうでない命令フォーマットをもつ命令の
デコードを行った命令デコーダであった場合、その命令
に後続する命令コードのデコード結果は全て無効化され
る。無効化は制御回路を用いて容易に実現できる。逆
に、判定の結果、全ての命令デコーダが最短命令フォー
マットを持つ命令をデコードした場合には、全デコード
結果が有効である。この時命令デコードのスループット
は最大であり、命令デコーダ数に等しい数の命令が1サ
イクルで処理される。
こうすることで、仮定が正しかった場合に限定されは
するが、命令デコードの最大スループットは2命令/サ
イクル以上にすることができ、上記第2の問題点が解決
できる。また、先行命令の命令長を仮定するため、プリ
デコード回路によって可変長命令を固定長要素に分解す
る必要がなくなり、上記第1の問題点が解決できる。
するが、命令デコードの最大スループットは2命令/サ
イクル以上にすることができ、上記第2の問題点が解決
できる。また、先行命令の命令長を仮定するため、プリ
デコード回路によって可変長命令を固定長要素に分解す
る必要がなくなり、上記第1の問題点が解決できる。
本発明の命令デコード方式は、従来より公知のプリデ
コード方式とは異なり、命令を誤った仮定のもとにデコ
ードする場合がある。その場合には上記のように、その
デコード結果を無効とすることになり、その場合のスル
ープットは1命令/サイクルとなってしまう。このよう
に、本方式ではプリデコード方式に比べて、命令フォー
マットへの処理性能の依存度が高くなる。この点に関し
ては、できるだけ上記の仮定が成立するフォーマットを
持つ命令をプログラム中で使用することで対処できる。
コード方式とは異なり、命令を誤った仮定のもとにデコ
ードする場合がある。その場合には上記のように、その
デコード結果を無効とすることになり、その場合のスル
ープットは1命令/サイクルとなってしまう。このよう
に、本方式ではプリデコード方式に比べて、命令フォー
マットへの処理性能の依存度が高くなる。この点に関し
ては、できるだけ上記の仮定が成立するフォーマットを
持つ命令をプログラム中で使用することで対処できる。
本発明のその他の目的と特徴は、以下の実施例の説明
から明らかとなろう。
から明らかとなろう。
第1図は、本発明を適用したマイクロプロセッサのブ
ロック図である。本発明は、複数の命令の並列デコード
を可能とする。ここではその内で最も簡単な、2命令を
並列にデコードするマイクロプロセッサの内部構造とそ
の動作を説明する。
ロック図である。本発明は、複数の命令の並列デコード
を可能とする。ここではその内で最も簡単な、2命令を
並列にデコードするマイクロプロセッサの内部構造とそ
の動作を説明する。
マイクロプロセッサの内部構造 まず、第1図により、マイクロプロセッサの内部構造
を説明する。第1図のマイクロプロセッサは、基本的
に、インターフェースユニットIOU,命令プリフェッチユ
ニットIU,命令デコードユニットDU,演算ユニットEUから
構成される。これらのユニットは並列動作可能であり、
命令デコードユニットDUの制御のもとに、パイプライン
処理を行う。
を説明する。第1図のマイクロプロセッサは、基本的
に、インターフェースユニットIOU,命令プリフェッチユ
ニットIU,命令デコードユニットDU,演算ユニットEUから
構成される。これらのユニットは並列動作可能であり、
命令デコードユニットDUの制御のもとに、パイプライン
処理を行う。
インターフェースユニットIOU マイクロプロセッサは、インターフェースユニットIO
Uを通して外部のデバイス(例えばメイン・メモリ)と
接続されている、このインターフェースユニットIOU
は、命令とデータの両方について、マイクロプロセッサ
とメイン・メモリとの間の転送を行う。
Uを通して外部のデバイス(例えばメイン・メモリ)と
接続されている、このインターフェースユニットIOU
は、命令とデータの両方について、マイクロプロセッサ
とメイン・メモリとの間の転送を行う。
すなわち、メイン・メモリから読み出された命令は、
64ビット幅の信号線を介して、インターフェースユニッ
トIOUから命令プリフェッチユニットIUに転送される。
64ビット幅の信号線を介して、インターフェースユニッ
トIOUから命令プリフェッチユニットIUに転送される。
これに対して、32ビットの信号線2組を通して、演算
ユニットEUによって演算されたデータは演算ユニットEU
からインターフェースユニットIOUへ転送され、または
メイン・メモリから読み出されたデータはインターフェ
ースユニットIOUから命令デコードユニットDUへ転送さ
れる。
ユニットEUによって演算されたデータは演算ユニットEU
からインターフェースユニットIOUへ転送され、または
メイン・メモリから読み出されたデータはインターフェ
ースユニットIOUから命令デコードユニットDUへ転送さ
れる。
命令プリフェッチユニットIU 命令プリフェッチユニットIUはプリフェッチキューPF
Qを持つ。インターフェースユニットIOUから転送された
命令は、一度プリフェッチキューPFQにラッチされ、16
ビット単位にアラインメントされてから、命令デコード
ユニットDUに出力される。プリフェッチキューPFQはFIF
O(First−In First−Out)のキューである。
Qを持つ。インターフェースユニットIOUから転送された
命令は、一度プリフェッチキューPFQにラッチされ、16
ビット単位にアラインメントされてから、命令デコード
ユニットDUに出力される。プリフェッチキューPFQはFIF
O(First−In First−Out)のキューである。
6組の16ビット信号線i0からi5を介して、アラインメ
ント後の命令が、命令プリフェッチユニットIUから命令
デコードユニットUDへ転送される。ここに、信号線i0は
次のマシンサイクルでデコードすべき命令の先頭コード
であり、信号線i1からi5は号線i0の命令に続く命令の並
びである。信号線i0は第1の命令デコーダID0に入力さ
れる。同様に、信号線i1は第2の命令デコーダID1に入
力される。第2の命令デコーダID1の入力が信号線i1に
一意に決定されており、信号線i1からi5の中から選択す
るようにはなっていないのが、本発明の実施例の特徴で
ある。また、第1の命令デコーダID0は、本マイクロプ
ロセッサで処理し得る全ての命令をデコードできる機能
を有している。これに対して第2の命令デコーダID1
は、本マイクロプロセッサが実行可能な命令のうち、16
ビットまたは32ビットの長さの命令フォーマットを持つ
命令のみをデコード可能である。第1の命令デコーダID
0と第2の命令デコーダID1の命令のデコード結果はそれ
ぞれ信号線id0_outとid1_outに出力され、パイプライン
制御部PCNTに送られる。
ント後の命令が、命令プリフェッチユニットIUから命令
デコードユニットUDへ転送される。ここに、信号線i0は
次のマシンサイクルでデコードすべき命令の先頭コード
であり、信号線i1からi5は号線i0の命令に続く命令の並
びである。信号線i0は第1の命令デコーダID0に入力さ
れる。同様に、信号線i1は第2の命令デコーダID1に入
力される。第2の命令デコーダID1の入力が信号線i1に
一意に決定されており、信号線i1からi5の中から選択す
るようにはなっていないのが、本発明の実施例の特徴で
ある。また、第1の命令デコーダID0は、本マイクロプ
ロセッサで処理し得る全ての命令をデコードできる機能
を有している。これに対して第2の命令デコーダID1
は、本マイクロプロセッサが実行可能な命令のうち、16
ビットまたは32ビットの長さの命令フォーマットを持つ
命令のみをデコード可能である。第1の命令デコーダID
0と第2の命令デコーダID1の命令のデコード結果はそれ
ぞれ信号線id0_outとid1_outに出力され、パイプライン
制御部PCNTに送られる。
パイプライン制御部PCNT パイプライン制御部PCNTは、信号線id0_outとid1_ou
t、及び各ユニットI0U,IU,EUの状態を示す信号(図中で
は省略した)をもとに、各ユニットIOU,IU,EUのため制
御信号を生成する。
t、及び各ユニットI0U,IU,EUの状態を示す信号(図中で
は省略した)をもとに、各ユニットIOU,IU,EUのため制
御信号を生成する。
拡張部生成回路EG また命令デコードユニットDUには、拡張部生成回路EG
があり、拡張部生成回路EGは命令中のイミディエイトデ
ータまたはディスプレースメントデータを32ビットに拡
張して出力する。命令中のイミディエイトデータやディ
スプレースメントデータの位置とその長さは、命令のオ
ペコードにおいて指定されており、オペコードをデコー
ドすることで得られる。拡張部生成回路EGでは、その指
定に基づいて、データを加工し、バスd0またはd1に出力
する。拡張部生成回路EGの32ビット出力線が2組あるの
は、第1の命令デコーダID0と第2の命令デコーダID1の
それぞれの制御のもとに独立にデータの転送を行うため
である。
があり、拡張部生成回路EGは命令中のイミディエイトデ
ータまたはディスプレースメントデータを32ビットに拡
張して出力する。命令中のイミディエイトデータやディ
スプレースメントデータの位置とその長さは、命令のオ
ペコードにおいて指定されており、オペコードをデコー
ドすることで得られる。拡張部生成回路EGでは、その指
定に基づいて、データを加工し、バスd0またはd1に出力
する。拡張部生成回路EGの32ビット出力線が2組あるの
は、第1の命令デコーダID0と第2の命令デコーダID1の
それぞれの制御のもとに独立にデータの転送を行うため
である。
演算ユニットEU 演算ユニットEU内の整数論理演算路ALUについても同
様に、第1の命令デコーダID0と第2の命令デコーダID1
のそれぞれに対応して2組ある。
様に、第1の命令デコーダID0と第2の命令デコーダID1
のそれぞれに対応して2組ある。
レジスタファイルRF 命令デコードユニットDU内のレジスタファイルRFはレ
ジスタR0からR15までの16本の32ビットレジスタで構成
されており、各レジスタは4つの読み出しポートと2つ
の書き込みポートの計6ポートを持つ。そのポートの内
半分(二つの読み出しポートと一つの書込みポート)が
第1の命令デコーダID0の側に対応しており、第1の論
理演算器ALU0に接続されている。残りの半分のポートも
同様に第2の命令デコーダID1の側に対応しており、第
2の論理演算器ALU1に接続されている。
ジスタR0からR15までの16本の32ビットレジスタで構成
されており、各レジスタは4つの読み出しポートと2つ
の書き込みポートの計6ポートを持つ。そのポートの内
半分(二つの読み出しポートと一つの書込みポート)が
第1の命令デコーダID0の側に対応しており、第1の論
理演算器ALU0に接続されている。残りの半分のポートも
同様に第2の命令デコーダID1の側に対応しており、第
2の論理演算器ALU1に接続されている。
32ビット幅の信号線 命令デコードユニットDUと演算ユニットEUは、6組の
32ビット幅の信号塩d0,d1,d2,d3,e0,e1で接続される。
その内4組(d0,d1,d2,d3)は命令デコードユニットDU
から演算ユニットEUへの、一方残り2組(e0,e1)は演
算ユニットEUから命令デコードユニットUDへのデータの
転送に用いられる。
32ビット幅の信号塩d0,d1,d2,d3,e0,e1で接続される。
その内4組(d0,d1,d2,d3)は命令デコードユニットDU
から演算ユニットEUへの、一方残り2組(e0,e1)は演
算ユニットEUから命令デコードユニットUDへのデータの
転送に用いられる。
例えば、レジスタR0とレジスタR1の値を加算してレジ
スタR1にセットする命令を第1の論理演算器ALU0が処理
する場合、まずレジスタファイルRFからレジスタR0とR1
の値が読み出され、それぞれ32ビット信号線d0とd1に出
力される。パイプラインにおける命令デコードユニット
DUの次の実行ステージすなわち演算ユニットEUにおい
て、第1の論理演算器ALU0は信号線d0とd1から値を入力
して、これらの加算を行う。そして加算結果が信号塩e0
に出力される。更に次の処理であるレジスタストアのス
テージでは、再び命令デコードユニットDU内の処理に戻
り、信号線e0上の値がレジスタファイルRF内のレジスタ
R1にセットされる。以上は第1の命令デコーダID0側を
用いた動作である。第2の命令デコーダID1側を用いた
場合、それぞれ信号線d2,d3,e1それに第2の論理演算器
ALU1が用いられる。すなわち、レジスタR0とR1の値は信
号線d2とd3にそれぞれ出力され、第2の論理演算器ALU1
で加算が行われたあと、信号線e1を用いて加算結果がレ
ジスタR1に転送される。
スタR1にセットする命令を第1の論理演算器ALU0が処理
する場合、まずレジスタファイルRFからレジスタR0とR1
の値が読み出され、それぞれ32ビット信号線d0とd1に出
力される。パイプラインにおける命令デコードユニット
DUの次の実行ステージすなわち演算ユニットEUにおい
て、第1の論理演算器ALU0は信号線d0とd1から値を入力
して、これらの加算を行う。そして加算結果が信号塩e0
に出力される。更に次の処理であるレジスタストアのス
テージでは、再び命令デコードユニットDU内の処理に戻
り、信号線e0上の値がレジスタファイルRF内のレジスタ
R1にセットされる。以上は第1の命令デコーダID0側を
用いた動作である。第2の命令デコーダID1側を用いた
場合、それぞれ信号線d2,d3,e1それに第2の論理演算器
ALU1が用いられる。すなわち、レジスタR0とR1の値は信
号線d2とd3にそれぞれ出力され、第2の論理演算器ALU1
で加算が行われたあと、信号線e1を用いて加算結果がレ
ジスタR1に転送される。
マイクロプロセッサとメモリ間でデータの転送を行う
場合、信号線e0,e1とIOUとの間の2組の32ビット幅の信
号線が用いられる。この部分の動作は本発明とあまり関
係が無いので、説明は省略する。
場合、信号線e0,e1とIOUとの間の2組の32ビット幅の信
号線が用いられる。この部分の動作は本発明とあまり関
係が無いので、説明は省略する。
本発明の効果は、複数の命令の並列デコードが可能に
なることである。本実施例では、可変長命令の命令セッ
トを持つマイクロプロセッサを例に説明する。そこでま
ず、可変長命令とはどのようなものであるかを簡単に説
明する。
なることである。本実施例では、可変長命令の命令セッ
トを持つマイクロプロセッサを例に説明する。そこでま
ず、可変長命令とはどのようなものであるかを簡単に説
明する。
可変長命令 可変長命令とは、一口に言えば、複数の命令フォーマ
ットを持ち、異なる命令フォーマットを取った時に長さ
が変化する命令を言う。すなわち、長さのことなる命令
を一つでも持つ命令セットは、可変長の命令を持つと言
える。
ットを持ち、異なる命令フォーマットを取った時に長さ
が変化する命令を言う。すなわち、長さのことなる命令
を一つでも持つ命令セットは、可変長の命令を持つと言
える。
固定長命令 これに対して、全ての命令の長さが一定である場合
は、固定長の命令セットと一般に呼んでいる。
は、固定長の命令セットと一般に呼んでいる。
本実施例の命令セット 本実施例では第2図に示すように、16ビットを単位と
して、16ビットから96ビットまでの6種類の長さを持つ
命令セットを仮定する。これらの命令はメモリ上では、
16ビト境界に置かれる。すなわち命令の各16ビット単位
は全て偶数バイトアドレスに置かれる。この様子を示し
たのが第3図である。
して、16ビットから96ビットまでの6種類の長さを持つ
命令セットを仮定する。これらの命令はメモリ上では、
16ビト境界に置かれる。すなわち命令の各16ビット単位
は全て偶数バイトアドレスに置かれる。この様子を示し
たのが第3図である。
続いて、本実施例における命令の並列デコードの動作
を説明する。
を説明する。
第3図はメモリ上における命令の並びの一つの例を示
している。各命令は例えばinst0,tnst1という具合に示
した。16ビットを超える長さを持つ命令には更にハイフ
ンと数字を付加して、inst2_0,inst2_1という具合に示
した。すなわち、16ビットを超える長さを持つ命令は複
数個に分割される。また、各命令においてデコード処理
を行わなければならないコードは、該命令の先頭のコー
ドに限定されると仮定する。すなわち命令の先頭以外の
コードはイミディエイトデータまたはディスプレースメ
ントデータであるとする。例えばinst2の場合、最初の
コードinst2_0はデコードが必要であるが、後続のコー
ドinst2_1はデコード不要である。
している。各命令は例えばinst0,tnst1という具合に示
した。16ビットを超える長さを持つ命令には更にハイフ
ンと数字を付加して、inst2_0,inst2_1という具合に示
した。すなわち、16ビットを超える長さを持つ命令は複
数個に分割される。また、各命令においてデコード処理
を行わなければならないコードは、該命令の先頭のコー
ドに限定されると仮定する。すなわち命令の先頭以外の
コードはイミディエイトデータまたはディスプレースメ
ントデータであるとする。例えばinst2の場合、最初の
コードinst2_0はデコードが必要であるが、後続のコー
ドinst2_1はデコード不要である。
以上の前提のもとに、命令プリフェッチユニットIUか
ら命令デコードユニットDUへの転送パスである16ビット
信号線i0−5の、ある2つの時点での状態を第4図に示
す。第4図(a)は、第3図の命令列が既に命令プリフ
ェッチユニットIUのプリフェッチキューPFQに取り込ま
れ、最初の命令inst0がデコードされようとしている状
態を示している。次のマシンサイクルの前半では、最初
の命令inst0のデコードが第1の命令デコーダID0で行わ
れ、後続の命令inst1のデコードが第2のデコーダID1で
行われる。このデコードの結果、二つの命令inst0、ins
t1が共に最短の長さを持つ命令フォーマットであること
が判り、命令デコードユニットDUから命令プリフェッチ
ユニットIUへ、32ビットだけ命令のポインタを進めるよ
うに指示が出される。その結果、更に半マシンサイクル
後の命令プリフェッチユニットIUと命令デコードユニッ
トDUとの間の信号線i0−5の状態は、二つの命令inst0,
inst1が取り去られ、その代りに命令inst5,inst6が追加
されて第4図(b)のようになる。この時には、命令コ
ードinst2_0のデコードが第1のデコーダID0で行われ、
命令コードinst2_1の第2のデコードがID1で行われる。
第1のデコーダID0での命令コードinst2_0のデコードの
結果、命令inst2は最短の長さを持つ命令フォーマット
ではないことが判る。
ら命令デコードユニットDUへの転送パスである16ビット
信号線i0−5の、ある2つの時点での状態を第4図に示
す。第4図(a)は、第3図の命令列が既に命令プリフ
ェッチユニットIUのプリフェッチキューPFQに取り込ま
れ、最初の命令inst0がデコードされようとしている状
態を示している。次のマシンサイクルの前半では、最初
の命令inst0のデコードが第1の命令デコーダID0で行わ
れ、後続の命令inst1のデコードが第2のデコーダID1で
行われる。このデコードの結果、二つの命令inst0、ins
t1が共に最短の長さを持つ命令フォーマットであること
が判り、命令デコードユニットDUから命令プリフェッチ
ユニットIUへ、32ビットだけ命令のポインタを進めるよ
うに指示が出される。その結果、更に半マシンサイクル
後の命令プリフェッチユニットIUと命令デコードユニッ
トDUとの間の信号線i0−5の状態は、二つの命令inst0,
inst1が取り去られ、その代りに命令inst5,inst6が追加
されて第4図(b)のようになる。この時には、命令コ
ードinst2_0のデコードが第1のデコーダID0で行われ、
命令コードinst2_1の第2のデコードがID1で行われる。
第1のデコーダID0での命令コードinst2_0のデコードの
結果、命令inst2は最短の長さを持つ命令フォーマット
ではないことが判る。
第1の命令デコーダID0には最短命令が入力された場
合には、第2の命令デコーダID1には次の命令の先頭オ
ペコードが入力される。第2の命令デコーダID1はこの
ような次の命令の先頭オペコードの入力を仮定して、命
令デコードを行っている。そのため、第1の命令デコー
ダID0においてデコードした命令が非最短命令であった
場合、第2の命令デコーダID1で行われた命令デコード
は誤っていたと判断され、その誤りの判断結果は第1の
命令デコーダID0の出力id0_outに反映されており、この
判断結果に応答して、無効化処理がパイプライン制御部
PCNTにおいて行われる。第1図に示したように、第1と
第2の命令デコーダID0、ID1からパイプライン制御部PC
NTへは、デコード結果すなわちid0_outとid1_outの出力
が送られる。出力id0_outには、第1のデコーダID0にお
いてデコードした命令が、最短の長さの命令フォーマッ
トであるか否かを示す情報が含まれている。また、出力
id1_outには第2のデコーダID1がデコードできない命令
が入力されたことを示す情報を含んでいても良い。但し
本実施例の場合には出力id1_outにそのような情報は含
まれていないものとする。
合には、第2の命令デコーダID1には次の命令の先頭オ
ペコードが入力される。第2の命令デコーダID1はこの
ような次の命令の先頭オペコードの入力を仮定して、命
令デコードを行っている。そのため、第1の命令デコー
ダID0においてデコードした命令が非最短命令であった
場合、第2の命令デコーダID1で行われた命令デコード
は誤っていたと判断され、その誤りの判断結果は第1の
命令デコーダID0の出力id0_outに反映されており、この
判断結果に応答して、無効化処理がパイプライン制御部
PCNTにおいて行われる。第1図に示したように、第1と
第2の命令デコーダID0、ID1からパイプライン制御部PC
NTへは、デコード結果すなわちid0_outとid1_outの出力
が送られる。出力id0_outには、第1のデコーダID0にお
いてデコードした命令が、最短の長さの命令フォーマッ
トであるか否かを示す情報が含まれている。また、出力
id1_outには第2のデコーダID1がデコードできない命令
が入力されたことを示す情報を含んでいても良い。但し
本実施例の場合には出力id1_outにそのような情報は含
まれていないものとする。
第1の命令デコーダID0に入力された命令の長さが最
短すなわち16ビットで無いという出力id0_outに含まれ
た情報によっては、第2の命令デコーダID1のデコード
結果を無効化しなければならない。その無効化処理は、
前述のようにパイプライン制御部PCNTで行われる。
短すなわち16ビットで無いという出力id0_outに含まれ
た情報によっては、第2の命令デコーダID1のデコード
結果を無効化しなければならない。その無効化処理は、
前述のようにパイプライン制御部PCNTで行われる。
パイプライン制御部PCNTの詳細なブロック図 第5図に、パイプライン制御部PCNTの詳細なブロック
図を示す。
図を示す。
パイプライン制御部PCNTはパイプラインのステージ制
御部Pipe_CNTLとセレクタSEL,ノーオペレーション指示
部NOPとから構成されており、id0_out,id1_outおよび各
ユニット(IU,DU,EU,IOU)の状態をもとに、マイクロプ
ロセッサ全体のパイプライン動作を制御する。このパイ
プライン処理における各処理ステージの制御は、第5図
のパイプ制御部PCNT内のパイプラインステージ制御部Pi
pe_CNTLにおいて行われる。また、第2の命令デコーダI
D1の出力情報の無効化処理は、このパイプラインステー
ジ制御部Pipe_CNTLの手前で行われる。
御部Pipe_CNTLとセレクタSEL,ノーオペレーション指示
部NOPとから構成されており、id0_out,id1_outおよび各
ユニット(IU,DU,EU,IOU)の状態をもとに、マイクロプ
ロセッサ全体のパイプライン動作を制御する。このパイ
プライン処理における各処理ステージの制御は、第5図
のパイプ制御部PCNT内のパイプラインステージ制御部Pi
pe_CNTLにおいて行われる。また、第2の命令デコーダI
D1の出力情報の無効化処理は、このパイプラインステー
ジ制御部Pipe_CNTLの手前で行われる。
すなわち、第2の命令デコーダID1の出力id1_outの無
効化は次のように行われる。まず、第2の命令デコーダ
ID1の出力id1_outはセレクタSELの一方の入力に供給さ
れる。セレクタSELの他方の入力の一方は、特に限定さ
れないが本実施例では、固定値NOPが供給される。この
固定値NOPは、id1_outと全く同一のフィールドを持ち、
いわゆるno operationと呼ばれる不実行指示命令を指示
する。NOPはno operationを指示する命令として一般に
用いられるnop命令のデコード情報と同じであっても良
いし、異なっていても良い。必要なのは、NOPがno oper
ationを指示することであり、例えば扱うデータのサイ
ズ指定などは、どのような地であっても構わない。セレ
クタSELにおけるNOPとid1_outの選択は、第1の命令デ
コーダID0のデコード結果であるid0_outに含まれる、第
1の命令デコーダID0でデコードした命令の全体の長さ
が16ビットであるか否かという情報id1_validによって
行われる。命令長が16ビットであった場合にはid1_out
が選択される。逆に命令長が16ビットを超えていた場合
にはNOPが選択される。こうして、パイプライン制御信
号pcnt0,pcnt1が得られる。
効化は次のように行われる。まず、第2の命令デコーダ
ID1の出力id1_outはセレクタSELの一方の入力に供給さ
れる。セレクタSELの他方の入力の一方は、特に限定さ
れないが本実施例では、固定値NOPが供給される。この
固定値NOPは、id1_outと全く同一のフィールドを持ち、
いわゆるno operationと呼ばれる不実行指示命令を指示
する。NOPはno operationを指示する命令として一般に
用いられるnop命令のデコード情報と同じであっても良
いし、異なっていても良い。必要なのは、NOPがno oper
ationを指示することであり、例えば扱うデータのサイ
ズ指定などは、どのような地であっても構わない。セレ
クタSELにおけるNOPとid1_outの選択は、第1の命令デ
コーダID0のデコード結果であるid0_outに含まれる、第
1の命令デコーダID0でデコードした命令の全体の長さ
が16ビットであるか否かという情報id1_validによって
行われる。命令長が16ビットであった場合にはid1_out
が選択される。逆に命令長が16ビットを超えていた場合
にはNOPが選択される。こうして、パイプライン制御信
号pcnt0,pcnt1が得られる。
再び、第3図の命令列の実行を想定する。この時のパ
イプライン制御信号pcnt0,pcnt1の変化を、第6図
(a)に示す。第6図(a)は第3図とは異なり、縦軸
が時間になっていることに注意されたい。例えば第4図
(a)から第4図(b)の状態に移る際には、命令inst
0,inst1のデコードが行われる。これが第6図では、一
番上のラインで示されている。そして次のマシンサイク
ルではinst2_0及びinst2_1がデコードされ、pcnt0,pcnt
1にはinst2_0のデコード結果とNOPが出力される。以下
同様にして、inst0からinst6までは4マシンサイクルで
デコード処理が行われる。
イプライン制御信号pcnt0,pcnt1の変化を、第6図
(a)に示す。第6図(a)は第3図とは異なり、縦軸
が時間になっていることに注意されたい。例えば第4図
(a)から第4図(b)の状態に移る際には、命令inst
0,inst1のデコードが行われる。これが第6図では、一
番上のラインで示されている。そして次のマシンサイク
ルではinst2_0及びinst2_1がデコードされ、pcnt0,pcnt
1にはinst2_0のデコード結果とNOPが出力される。以下
同様にして、inst0からinst6までは4マシンサイクルで
デコード処理が行われる。
これと同様の処理を第1の命令デコーダID0のみを用
いて行った従来の処理の場合のpcnt0の変化を第6図
(b)に示す。この従来の場合、inst0からinst6までの
命令のデコード処理には、第6図(b)に示すように、
7マシンサイクルを要する。
いて行った従来の処理の場合のpcnt0の変化を第6図
(b)に示す。この従来の場合、inst0からinst6までの
命令のデコード処理には、第6図(b)に示すように、
7マシンサイクルを要する。
このように、本実施例では、命令デコード性能はピー
ク時に2倍、最悪の場合でも単一の命令デコーダを用い
た場合に等しい性能が得られる。
ク時に2倍、最悪の場合でも単一の命令デコーダを用い
た場合に等しい性能が得られる。
次に、上記命令inst0,inst1,inst2_0,inst2_1の処理
をより具体的な例を用いて説明する。例えば、命令inst
0がレジスタR0とレジスタR1の値を加算してレジスタR1
にその結果をセットする固定長命令、命令inst1がレジ
スタR2とレジスタR3の値を加算してレジスタR3にその結
果をセットする固定長命令とし、さらに命令inst2はレ
ジスタR4の値にディスプレースメントデータを加算して
アドレスとし、そのアドレスのデータをメイン・メモリ
からフェッチしてレジスタR5にセットする可変長命令で
あるとする。ここに命令inst2_0はオペコードであり、i
nst2_1はディスプレースメントである。
をより具体的な例を用いて説明する。例えば、命令inst
0がレジスタR0とレジスタR1の値を加算してレジスタR1
にその結果をセットする固定長命令、命令inst1がレジ
スタR2とレジスタR3の値を加算してレジスタR3にその結
果をセットする固定長命令とし、さらに命令inst2はレ
ジスタR4の値にディスプレースメントデータを加算して
アドレスとし、そのアドレスのデータをメイン・メモリ
からフェッチしてレジスタR5にセットする可変長命令で
あるとする。ここに命令inst2_0はオペコードであり、i
nst2_1はディスプレースメントである。
まず、命令inst0とinst1の処理について説明する。
二つの命令inst0とinst1は、第4図(a)のようにし
て、フリフェッチキューPFQからの96ビットの信号線に
出力される。そして第1の命令デコーダID0ではinst0が
デコードされ、第2の命令デコーダID1ではinst1がデコ
ードがされる。
て、フリフェッチキューPFQからの96ビットの信号線に
出力される。そして第1の命令デコーダID0ではinst0が
デコードされ、第2の命令デコーダID1ではinst1がデコ
ードがされる。
この場合、inst0のデコードの結果、命令inst0が最短
命令であることが判り、その判定結果はデコード結果の
id0_out中の信号id1_validをアサートすることで示され
る。id0_outとid1_outは前述のパイプライン制御部PCNT
を通して、制御信号pcnt0,pcnt1として出力される。そ
してこれらの制御信号の指示によって以下の動作が行わ
れる。
命令であることが判り、その判定結果はデコード結果の
id0_out中の信号id1_validをアサートすることで示され
る。id0_outとid1_outは前述のパイプライン制御部PCNT
を通して、制御信号pcnt0,pcnt1として出力される。そ
してこれらの制御信号の指示によって以下の動作が行わ
れる。
まず、制御信号pcnt0の指示によって、レジスタRの
値が信号線d0に、レジスタR1の値が信号線d1にそれぞれ
出力される。また同時に、制御信号pcnt1の指示によっ
て、レジスタR2の値が信号線d2に、レジスタR3の値が信
号線d3に出力される。続いて論理演算器ALU0では信号線
d0とd1の値を加算して信号線e0に出力し、論理演算器AL
U1では信号線d2とd3の値を加算して信号線e1に出力す
る。更にそれに続くレジスタストアのステージでは、信
号線e0の値がレジスタR1にセットされ、信号線e1の値が
レジスタR3にセットされる。
値が信号線d0に、レジスタR1の値が信号線d1にそれぞれ
出力される。また同時に、制御信号pcnt1の指示によっ
て、レジスタR2の値が信号線d2に、レジスタR3の値が信
号線d3に出力される。続いて論理演算器ALU0では信号線
d0とd1の値を加算して信号線e0に出力し、論理演算器AL
U1では信号線d2とd3の値を加算して信号線e1に出力す
る。更にそれに続くレジスタストアのステージでは、信
号線e0の値がレジスタR1にセットされ、信号線e1の値が
レジスタR3にセットされる。
次に、命令inst2の処理動作を説明する。
命令inst2は、第4図(b)のようにして、プリフェ
ツチキューPFQからの96ビットの信号線に出力される。
そして第1の命令デコーダID0ではinst2_0がデコードさ
れ、第2の命令デコーダID1ではinst2_1が次の命令の先
頭コードであると仮定してデコードされる。
ツチキューPFQからの96ビットの信号線に出力される。
そして第1の命令デコーダID0ではinst2_0がデコードさ
れ、第2の命令デコーダID1ではinst2_1が次の命令の先
頭コードであると仮定してデコードされる。
この場合には、inst2_0のデコードの結果、命令inst2
が非最短命令であることが判り、その判定結果はデコー
ド結果のid0_out中の信号id1_validをネゲートすること
で示される。id0_outは前述のパイプライン制御部PCNT
を通して、制御信号pcnt0として出力される。同時に、i
d1_validがネゲートされているために、パイプライン制
御部PCNT内のセレクタSELにおいてno operation指示で
あるNOPが選択され、pcnt1として出力される。そしてこ
れらの制御信号の指示によって以下の動作が行われる。
が非最短命令であることが判り、その判定結果はデコー
ド結果のid0_out中の信号id1_validをネゲートすること
で示される。id0_outは前述のパイプライン制御部PCNT
を通して、制御信号pcnt0として出力される。同時に、i
d1_validがネゲートされているために、パイプライン制
御部PCNT内のセレクタSELにおいてno operation指示で
あるNOPが選択され、pcnt1として出力される。そしてこ
れらの制御信号の指示によって以下の動作が行われる。
まず、制御信号pcnt0の指示によって、レジスタR4の
値が信号線d0に出力され、また16ビットのディスプレー
スメントinst2_1が拡張部生成部EGで32ビットに拡張さ
れて信号線d1に出力される。
値が信号線d0に出力され、また16ビットのディスプレー
スメントinst2_1が拡張部生成部EGで32ビットに拡張さ
れて信号線d1に出力される。
また、制御信号pcnt1の指示はNOPであるため、信号線
d2と信号線d3にはとくに出力が指示されない。続いて整
数論理演算器ALU0では信号線d0とd1の値を加算(アドレ
ス計算)して信号線e0に出力する。論理演算器ALU1に対
する指示はやはりNOPであり、信号線e1への出力は特に
指示されない。
d2と信号線d3にはとくに出力が指示されない。続いて整
数論理演算器ALU0では信号線d0とd1の値を加算(アドレ
ス計算)して信号線e0に出力する。論理演算器ALU1に対
する指示はやはりNOPであり、信号線e1への出力は特に
指示されない。
更にそれに続くステージでは、制御信号pcnt0の指示
により、信号線e0の値をアドレスとしたメイン・メモリ
のアクセスによりオペランドのフェッチが行われ、さら
にフェッチ・データがレジスタR5にセットされる。制御
信号pcnt1中のにおけるインターフェースユニットIOUと
命令デコードユニットDU(レジスタストア)への指示は
NOPであるので、メイン・メモリアクセスや信号線e1か
らレジスタへの値の伝送・設定は行わない。
により、信号線e0の値をアドレスとしたメイン・メモリ
のアクセスによりオペランドのフェッチが行われ、さら
にフェッチ・データがレジスタR5にセットされる。制御
信号pcnt1中のにおけるインターフェースユニットIOUと
命令デコードユニットDU(レジスタストア)への指示は
NOPであるので、メイン・メモリアクセスや信号線e1か
らレジスタへの値の伝送・設定は行わない。
本実施例によれば、マイクロプロセッサ全体の処理の
スループットが向上し、CPI(1命令当りの実行に要す
るマシンサイクル数)を1以下にできる。
スループットが向上し、CPI(1命令当りの実行に要す
るマシンサイクル数)を1以下にできる。
また、複数の命令デコーダのうち、全ての命令フォー
マットをデコードできる命令デコーダはたった一つでよ
い。残りの命令デコーダは最短の命令フォーマットをデ
コードする機能だけがあれば良いから、少ないハードウ
ェアで複数命令デコードを実現できる。これはまた、マ
イクロプロセッサのテスト、診断時の処理量とその時間
を削減することになる。
マットをデコードできる命令デコーダはたった一つでよ
い。残りの命令デコーダは最短の命令フォーマットをデ
コードする機能だけがあれば良いから、少ないハードウ
ェアで複数命令デコードを実現できる。これはまた、マ
イクロプロセッサのテスト、診断時の処理量とその時間
を削減することになる。
また、複数の命令デコーダに入力する命令コードは、
最短の命令フォーマットの長さで一意に分割され、各々
の命令デコーダに入力される。すなわち全ての命令デコ
ーダの入力のセレクトが容易である。これは、ハードウ
ェア量の抑制とともに、高速性の実現に役立つ。
最短の命令フォーマットの長さで一意に分割され、各々
の命令デコーダに入力される。すなわち全ての命令デコ
ーダの入力のセレクトが容易である。これは、ハードウ
ェア量の抑制とともに、高速性の実現に役立つ。
また、本発明の実施例は、固定長命令セットを有する
マイクロプロセッサにも適用できる。すなわち、複数の
命令デコーダのうち大多数を、頻度の高い命令のみをデ
コード可能としておくことにより、少ないハードウェア
でかつ高速な、複数命令を並列に処理する命令デコーダ
が実現できる。
マイクロプロセッサにも適用できる。すなわち、複数の
命令デコーダのうち大多数を、頻度の高い命令のみをデ
コード可能としておくことにより、少ないハードウェア
でかつ高速な、複数命令を並列に処理する命令デコーダ
が実現できる。
また、固定長命令セット,可変長命令セットに関わら
ず、各命令デコーダがデコード可能な命令を、その命令
デコーダが制御する回路に対応して定めることが可能で
ある。例えば、論理演算器を制御する命令デコーダは、
論理演算命令のみデコード可能であり、その他の命令
は、デコーダできなかったことを示す結果を出力する。
このようにすると、命令デコーダから被制御回路への信
号線数が少なくなるという効果が生じる。
ず、各命令デコーダがデコード可能な命令を、その命令
デコーダが制御する回路に対応して定めることが可能で
ある。例えば、論理演算器を制御する命令デコーダは、
論理演算命令のみデコード可能であり、その他の命令
は、デコーダできなかったことを示す結果を出力する。
このようにすると、命令デコーダから被制御回路への信
号線数が少なくなるという効果が生じる。
本発明により、可変長命令セットにおいて複数の固定
長命令の並列デコードが可能になる。従って、従来の方
法と比較して、命令デコード性能の最大スループットが
向上する。
長命令の並列デコードが可能になる。従って、従来の方
法と比較して、命令デコード性能の最大スループットが
向上する。
第1図は本発明の一実施例のマイクロプロセッサのブロ
ック図を示し、第2図は本実施例のマイクロプロセッサ
の有する可変長命令セットの6種類の命令長を示し、第
3図は本実施例の命令セットにおけるメモリ上の命令の
並びの一例を示し、第4図は第1図に示したマイクロプ
ロセッサが第3図の命令列を実行する際の信号線i0−5
の値をある二つの時点について示しし、第5図は第1図
のマイクロプロセッサの構成要素の一つである制御回路
PCNTの詳細な構成図を示し、第6図(a)は第1図のマ
イクロプロセッサにおいて第3図の命令列を実行した際
に命令デコードによって生成される制御信号の変化を示
し、第6図(b)は第1図のマイクロプロセッサにおい
て命令デコーダが一つしかない構成を採った場合の制御
信号の変化を示している。
ック図を示し、第2図は本実施例のマイクロプロセッサ
の有する可変長命令セットの6種類の命令長を示し、第
3図は本実施例の命令セットにおけるメモリ上の命令の
並びの一例を示し、第4図は第1図に示したマイクロプ
ロセッサが第3図の命令列を実行する際の信号線i0−5
の値をある二つの時点について示しし、第5図は第1図
のマイクロプロセッサの構成要素の一つである制御回路
PCNTの詳細な構成図を示し、第6図(a)は第1図のマ
イクロプロセッサにおいて第3図の命令列を実行した際
に命令デコードによって生成される制御信号の変化を示
し、第6図(b)は第1図のマイクロプロセッサにおい
て命令デコーダが一つしかない構成を採った場合の制御
信号の変化を示している。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 内山 邦男 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (58)調査した分野(Int.Cl.6,DB名) G06F 9/38 G06F 9/30 G06F 9/32
Claims (3)
- 【請求項1】所定のビット幅の命令長の第1及び第2の
命令をマイクロプロセッサの外部からフェッチし、少な
くとも上記所定のビット幅の2倍のビット幅を有する出
力線に上記第1及び第2の命令を並行に出力するフェッ
チユニットと、 その入力に上記フェッチユニットの上記出力線の上記第
1の命令が供給される第1の命令デコーダと、 その入力に上記フェッチユニットの上記出力線の上記第
2の命令が供給される第2の命令デコーダと、 上記第1の命令デコーダの第1のデコード結果と上記第
2の命令デコードの第2のデコード結果とが供給される
制御部と、 上記制御部からの出力に応答する命令実行部とを具備
し、 上記制御部はセレクタを含み、該セレクタの一方の入力
には上記第2の命令デコーダの第2のデコード結果と不
実行指令命令とがそれぞれ供給され、上記第2のデコー
ド結果と不実行指令命令のいずれかを選択して出力する
ために該セレクタの制御入力には第1の命令の所定の命
令長を示す情報が供給され、上記情報が上記所定の命令
長が所定のビット長であることを示している有効条件で
は、上記セレクタは上記第2のデコード結果を選択し、
上記制御部は上記第1の命令デコーダの第1のデコード
結果と上記第2の命令デコーダの第2のデコード結果と
を該制御部の出力に伝達し、その結果上記第2のデコー
ド結果を無効にするために上記制御部は上記第1の命令
デコーダの第1のデコード結果と上記不実行指令命令と
を該制御部の出力に伝達するマイクロプロセッサ。 - 【請求項2】特許請求の範囲第1項記載のマイクロプロ
セッサにおいて、上記制御部が上記第2のデコーダの第
2のデコード結果を無効化する際に、この無効化された
上記第2のデコーダの第2のデコード結果のビット位置
に対応した上記フェッチユニットの上記出力線のビット
情報に応答して上記命令実行部はオペランドのアドレス
を決定するマイクロプロセッサ。 - 【請求項3】特許請求の範囲第1項記載のマイクロプロ
セッサにおいて、上記所定のビット幅が最短命令長であ
るマイクロプロセッサ。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2190661A JP2834289B2 (ja) | 1990-07-20 | 1990-07-20 | マイクロプロセッサ |
DE69133134T DE69133134D1 (de) | 1990-07-20 | 1991-07-03 | Mikroprozessor mit der Fähigkeit zur parallelen Dekodierung zweier Befehle |
EP91111044A EP0467152B1 (en) | 1990-07-20 | 1991-07-03 | Microprocessor capable of decoding two instructions in parallel |
KR1019910012236A KR100233897B1 (ko) | 1990-07-20 | 1991-07-18 | 2개의 명령을 병렬 디코드 할수 있는 마이크로프로세서 |
US08/169,728 US5408625A (en) | 1990-07-20 | 1993-12-17 | Microprocessor capable of decoding two instructions in parallel |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2190661A JP2834289B2 (ja) | 1990-07-20 | 1990-07-20 | マイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0477925A JPH0477925A (ja) | 1992-03-12 |
JP2834289B2 true JP2834289B2 (ja) | 1998-12-09 |
Family
ID=16261802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2190661A Expired - Fee Related JP2834289B2 (ja) | 1990-07-20 | 1990-07-20 | マイクロプロセッサ |
Country Status (5)
Country | Link |
---|---|
US (1) | US5408625A (ja) |
EP (1) | EP0467152B1 (ja) |
JP (1) | JP2834289B2 (ja) |
KR (1) | KR100233897B1 (ja) |
DE (1) | DE69133134D1 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0651984A (ja) * | 1992-06-05 | 1994-02-25 | Hitachi Ltd | マイクロプロセッサ |
US5859994A (en) * | 1992-08-10 | 1999-01-12 | Intel Corporation | Apparatus and method for modifying instruction length decoding in a computer processor |
KR100248903B1 (ko) * | 1992-09-29 | 2000-03-15 | 야스카와 히데아키 | 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템 |
US5485629A (en) * | 1993-01-22 | 1996-01-16 | Intel Corporation | Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines |
US5717908A (en) * | 1993-02-25 | 1998-02-10 | Intel Corporation | Pattern recognition system using a four address arithmetic logic unit |
US5825921A (en) * | 1993-03-19 | 1998-10-20 | Intel Corporation | Memory transfer apparatus and method useful within a pattern recognition system |
US5819057A (en) * | 1995-01-25 | 1998-10-06 | Advanced Micro Devices, Inc. | Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units |
US5991869A (en) * | 1995-04-12 | 1999-11-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a high speed instruction alignment unit |
US5822778A (en) * | 1995-06-07 | 1998-10-13 | Advanced Micro Devices, Inc. | Microprocessor and method of using a segment override prefix instruction field to expand the register file |
US5768574A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor |
US5680578A (en) * | 1995-06-07 | 1997-10-21 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify expanded functionality and a computer system employing same |
US5845323A (en) * | 1995-08-31 | 1998-12-01 | Advanced Micro Devices, Inc. | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time |
US5809273A (en) * | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
US5819056A (en) * | 1995-10-06 | 1998-10-06 | Advanced Micro Devices, Inc. | Instruction buffer organization method and system |
AU7168496A (en) * | 1995-10-06 | 1997-04-28 | Advanced Micro Devices Inc. | Instruction predecode and multiple instruction decode |
US5864704A (en) * | 1995-10-10 | 1999-01-26 | Chromatic Research, Inc. | Multimedia processor using variable length instructions with opcode specification of source operand as result of prior instruction |
US5768553A (en) * | 1995-10-30 | 1998-06-16 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to define DSP instructions |
US5819080A (en) * | 1996-01-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor |
EP0896700A1 (en) * | 1996-05-01 | 1999-02-17 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a high performance instruction alignment unit |
JPH1011289A (ja) * | 1996-06-19 | 1998-01-16 | Mitsubishi Electric Corp | 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ |
WO1998002798A1 (en) * | 1996-07-16 | 1998-01-22 | Advanced Micro Devices, Inc. | A superscalar microprocesser including a high speed instruction alignment unit |
WO1998020421A1 (en) * | 1996-11-04 | 1998-05-14 | Advanced Micro Devices, Inc. | A way prediction structure |
US6230259B1 (en) | 1997-10-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Transparent extended state save |
US6157996A (en) * | 1997-11-13 | 2000-12-05 | Advanced Micro Devices, Inc. | Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space |
US6016533A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
US6324639B1 (en) | 1998-03-30 | 2001-11-27 | Matsushita Electric Industrial Co., Ltd. | Instruction converting apparatus using parallel execution code |
EP0992893B1 (en) * | 1998-10-06 | 2008-12-31 | Texas Instruments Inc. | Verifying instruction parallelism |
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 |
US6178496B1 (en) | 1999-02-17 | 2001-01-23 | Motorola, Inc. | System for converting instructions, and method therefore |
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 |
US6981132B2 (en) | 2000-08-09 | 2005-12-27 | Advanced Micro Devices, Inc. | Uniform register addressing using prefix byte |
US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
US7366352B2 (en) * | 2003-03-20 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for performing fast closest match in pattern recognition |
US7227994B2 (en) * | 2003-03-20 | 2007-06-05 | International Business Machines Corporation | Method and apparatus for imbedded pattern recognition using dual alternating pointers |
US7117290B2 (en) | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
US7707389B2 (en) * | 2003-10-31 | 2010-04-27 | Mips Technologies, Inc. | Multi-ISA instruction fetch unit for a processor, and applications thereof |
US7587579B2 (en) * | 2004-12-28 | 2009-09-08 | Ceva D.S.P. Ltd. | Processor core interface for providing external hardware modules with access to registers of the core and methods thereof |
CN100543669C (zh) * | 2005-04-22 | 2009-09-23 | Mips技术公司 | 用于对指令进行再编码的方法与装置 |
US9304773B2 (en) * | 2006-03-21 | 2016-04-05 | Freescale Semiconductor, Inc. | Data processor having dynamic control of instruction prefetch buffer depth and method therefor |
US9710277B2 (en) * | 2010-09-24 | 2017-07-18 | Intel Corporation | Processor power management based on class and content of instructions |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL149925C (ja) * | 1968-10-25 | 1976-06-15 | ||
USRE32493E (en) * | 1980-05-19 | 1987-09-01 | Hitachi, Ltd. | Data processing unit with pipelined operands |
JPS6224326A (ja) * | 1985-07-24 | 1987-02-02 | Hitachi Ltd | デ−タ処理装置 |
JPH0760383B2 (ja) * | 1987-03-31 | 1995-06-28 | 株式会社東芝 | プロセツサ |
US5202967A (en) * | 1988-08-09 | 1993-04-13 | Matsushita Electric Industrial Co., Ltd. | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction |
DE68926701T2 (de) * | 1988-08-09 | 1997-02-20 | Matsushita Electric Ind Co Ltd | Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge |
US5148528A (en) * | 1989-02-03 | 1992-09-15 | Digital Equipment Corporation | Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length |
-
1990
- 1990-07-20 JP JP2190661A patent/JP2834289B2/ja not_active Expired - Fee Related
-
1991
- 1991-07-03 EP EP91111044A patent/EP0467152B1/en not_active Expired - Lifetime
- 1991-07-03 DE DE69133134T patent/DE69133134D1/de not_active Expired - Lifetime
- 1991-07-18 KR KR1019910012236A patent/KR100233897B1/ko not_active IP Right Cessation
-
1993
- 1993-12-17 US US08/169,728 patent/US5408625A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0467152A2 (en) | 1992-01-22 |
KR920003153A (ko) | 1992-02-29 |
JPH0477925A (ja) | 1992-03-12 |
DE69133134D1 (de) | 2002-11-21 |
EP0467152A3 (en) | 1993-05-05 |
KR100233897B1 (ko) | 1999-12-15 |
US5408625A (en) | 1995-04-18 |
EP0467152B1 (en) | 2002-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2834289B2 (ja) | マイクロプロセッサ | |
US5293592A (en) | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline | |
US5337415A (en) | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency | |
US4740893A (en) | Method for reducing the time for switching between programs | |
US5233694A (en) | Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously | |
US5638526A (en) | Apparatus for operand data bypassing having previous operand storage register connected between arithmetic input selector and arithmetic unit | |
EP0427245B1 (en) | Data processor capable of simultaneously executing two instructions | |
USH1291H (en) | Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions | |
JP3842474B2 (ja) | データ処理装置 | |
US5398321A (en) | Microcode generation for a scalable compound instruction set machine | |
KR100254007B1 (ko) | 2개의 명령을 동시에 실행할 수 있는 데이타프로세서 | |
KR100266424B1 (ko) | 롬(rom)용량을 저감한 데이타 프로세서 | |
US6112289A (en) | Data processor | |
JPS63273134A (ja) | マクロ命令パイプラインを用いてマイクロ命令を変更する方法及び装置 | |
US5313613A (en) | Execution of storage-immediate and storage-storage instructions within cache buffer storage | |
JPH10222368A (ja) | データ処理装置 | |
US6115730A (en) | Reloadable floating point unit | |
JP4613168B2 (ja) | 命令整列の方法および装置 | |
EP0375883A2 (en) | Cache storage system | |
GB2230116A (en) | Pipelined instruction decoding apparatus | |
EP0573071A2 (en) | A microprocessor | |
US5187782A (en) | Data processing system | |
JPS6314239A (ja) | 計算機システムの命令作成ユニット | |
JP2581565B2 (ja) | ガード付命令を実行するデータ処理装置 | |
Murray et al. | Micro-architecture of the VAX 9000 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071002 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081002 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081002 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091002 Year of fee payment: 11 |
|
LAPS | Cancellation because of no payment of annual fees |