JP2001034471A - Vliw方式プロセッサ - Google Patents
Vliw方式プロセッサInfo
- Publication number
- JP2001034471A JP2001034471A JP11204908A JP20490899A JP2001034471A JP 2001034471 A JP2001034471 A JP 2001034471A JP 11204908 A JP11204908 A JP 11204908A JP 20490899 A JP20490899 A JP 20490899A JP 2001034471 A JP2001034471 A JP 2001034471A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- operation instruction
- branch
- executed
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
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/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/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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch 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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
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)
Abstract
(57)【要約】
【課題】 逐次実行の途中で実行される演算命令への分
岐を許容したVLIW方式プロセッサを提供すること。 【解決手段】 VLIW方式プロセッサは、並列実行お
よび逐次実行のいずれかを選択して、命令語中の複数の
演算命令をデコードするための命令デコードユニット8
0と、プログラムカウンタの値を制御し、逐次実行時に
おいて途中で実行される演算命令への分岐を実行する場
合に、途中で実行される演算命令よりも前に実行される
逐次実行時における演算命令を無効演算とするように命
令デコードユニット80に指示するためのプログラムカ
ウンタ制御部92とを含む。したがって、逐次実行の途
中で実行される演算命令への分岐が可能となり、命令コ
ードの圧縮効率を向上させることが可能となる。
岐を許容したVLIW方式プロセッサを提供すること。 【解決手段】 VLIW方式プロセッサは、並列実行お
よび逐次実行のいずれかを選択して、命令語中の複数の
演算命令をデコードするための命令デコードユニット8
0と、プログラムカウンタの値を制御し、逐次実行時に
おいて途中で実行される演算命令への分岐を実行する場
合に、途中で実行される演算命令よりも前に実行される
逐次実行時における演算命令を無効演算とするように命
令デコードユニット80に指示するためのプログラムカ
ウンタ制御部92とを含む。したがって、逐次実行の途
中で実行される演算命令への分岐が可能となり、命令コ
ードの圧縮効率を向上させることが可能となる。
Description
【0001】
【発明の属する技術分野】本発明は、1つの命令語中に
含まれる複数の命令を並列または逐次実行するVLIW
(Very Long Instruction Word)アーキテクチャを
採用したプロセッサ(以下、VLIW方式プロセッサと
呼ぶ)に関し、特に、逐次実行の途中において実行され
る命令への分岐を許容するVLIW方式プロセッサに関
する。
含まれる複数の命令を並列または逐次実行するVLIW
(Very Long Instruction Word)アーキテクチャを
採用したプロセッサ(以下、VLIW方式プロセッサと
呼ぶ)に関し、特に、逐次実行の途中において実行され
る命令への分岐を許容するVLIW方式プロセッサに関
する。
【0002】
【従来の技術】近年、マルチメディア処理や高精細画像
処理などのさまざまな分野で、プロセッサ性能の向上に
対する要求が高まっている。しかし、現在のLSI(La
rge Scale Integration)製造技術ではデバイスの高
速化にも限度がある。そこで、VLIW方式プロセッサ
が注目を浴びており、盛んに研究、開発されている。
処理などのさまざまな分野で、プロセッサ性能の向上に
対する要求が高まっている。しかし、現在のLSI(La
rge Scale Integration)製造技術ではデバイスの高
速化にも限度がある。そこで、VLIW方式プロセッサ
が注目を浴びており、盛んに研究、開発されている。
【0003】VLIW方式プロセッサは、1つの命令語
中に含まれる複数の演算命令を同じサイクルで実行する
ことによって並列度を高め、プロセッサの性能向上を図
っている。しかし、並列に実行することができない演算
については、1つの命令語にエンコードすることができ
ないため、命令語中に無効演算命令(NOP(No Oper
ation)命令)が挿入されてコード効率が悪くなること
が知られている。この問題を解決する技術として、特開
平10−292199号公報に開示された発明がある。
中に含まれる複数の演算命令を同じサイクルで実行する
ことによって並列度を高め、プロセッサの性能向上を図
っている。しかし、並列に実行することができない演算
については、1つの命令語にエンコードすることができ
ないため、命令語中に無効演算命令(NOP(No Oper
ation)命令)が挿入されてコード効率が悪くなること
が知られている。この問題を解決する技術として、特開
平10−292199号公報に開示された発明がある。
【0004】
【発明が解決しようとする課題】しかし、特開平10−
292199号公報に開示されたデータ処理装置におい
て、分岐命令のディスプレースメントが示す分岐先アド
レスは命令語毎の境界であり、常に命令語中の最初の演
算命令(命令語境界に整地された命令)であることが必
要とされる。したがって、分岐先の1つ前の演算命令と
分岐先の演算命令とを同じ命令語にエンコードすること
ができず、2つの演算命令の間に無効命令(NOP命
令)を埋めて2つの命令語にエンコードしなければなら
ない。このように、従来のデータ処理装置においては、
命令コードの圧縮効率が悪いという問題があった。
292199号公報に開示されたデータ処理装置におい
て、分岐命令のディスプレースメントが示す分岐先アド
レスは命令語毎の境界であり、常に命令語中の最初の演
算命令(命令語境界に整地された命令)であることが必
要とされる。したがって、分岐先の1つ前の演算命令と
分岐先の演算命令とを同じ命令語にエンコードすること
ができず、2つの演算命令の間に無効命令(NOP命
令)を埋めて2つの命令語にエンコードしなければなら
ない。このように、従来のデータ処理装置においては、
命令コードの圧縮効率が悪いという問題があった。
【0005】本発明は、上記問題点を解決するためにな
されたものであり、第1の目的は、逐次実行の途中で実
行される演算命令への分岐を許容したVLIW方式プロ
セッサを提供することである。
されたものであり、第1の目的は、逐次実行の途中で実
行される演算命令への分岐を許容したVLIW方式プロ
セッサを提供することである。
【0006】第2の目的は、無効命令の挿入を少なく
し、命令コードの圧縮効率を向上させることが可能なV
LIW方式プロセッサを提供することである。
し、命令コードの圧縮効率を向上させることが可能なV
LIW方式プロセッサを提供することである。
【0007】第3の目的は、例外および割り込み発生時
におけるレーテンシを小さくすることが可能なVLIW
方式プロセッサを提供することである。
におけるレーテンシを小さくすることが可能なVLIW
方式プロセッサを提供することである。
【0008】第4の目的は、プログラムのデバッグの効
率を高めることが可能なVLIW方式プロセッサを提供
することである。
率を高めることが可能なVLIW方式プロセッサを提供
することである。
【0009】第5の目的は、命令の実行サイクルを短縮
することにより、高速に処理が行えるVLIW方式プロ
セッサを提供することである。
することにより、高速に処理が行えるVLIW方式プロ
セッサを提供することである。
【0010】
【課題を解決するための手段】請求項1に記載のVLI
W方式プロセッサは、並列実行および逐次実行のいずれ
かを選択して、命令語中の複数の演算命令をデコードす
るための命令デコード手段と、命令デコード手段による
複数の演算命令のデコード結果に基づいて、複数の演算
命令を実行するための実行手段とを含み、実行手段は、
プログラムカウンタの値を制御し、逐次実行時において
途中で実行される演算命令への分岐を実行する場合に、
途中で実行される演算命令よりも前に実行される逐次実
行時における演算命令を無効演算とするように命令デコ
ード手段に指示するためのプログラムカウンタ制御手段
を含む。
W方式プロセッサは、並列実行および逐次実行のいずれ
かを選択して、命令語中の複数の演算命令をデコードす
るための命令デコード手段と、命令デコード手段による
複数の演算命令のデコード結果に基づいて、複数の演算
命令を実行するための実行手段とを含み、実行手段は、
プログラムカウンタの値を制御し、逐次実行時において
途中で実行される演算命令への分岐を実行する場合に、
途中で実行される演算命令よりも前に実行される逐次実
行時における演算命令を無効演算とするように命令デコ
ード手段に指示するためのプログラムカウンタ制御手段
を含む。
【0011】プログラムカウンタ制御手段は、逐次実行
時において途中で実行される演算命令への分岐を実行す
る場合に、途中で実行される演算命令よりも前に実行さ
れる逐次実行時における演算命令を無効演算とするよう
に命令デコード手段に指示するので、逐次実行の途中で
実行される演算命令への分岐が可能となり、命令コード
の圧縮効率を向上させることが可能となる。
時において途中で実行される演算命令への分岐を実行す
る場合に、途中で実行される演算命令よりも前に実行さ
れる逐次実行時における演算命令を無効演算とするよう
に命令デコード手段に指示するので、逐次実行の途中で
実行される演算命令への分岐が可能となり、命令コード
の圧縮効率を向上させることが可能となる。
【0012】請求項2に記載のVLIW方式プロセッサ
は、請求項1記載のVLIW方式プロセッサであって、
命令語は、分岐先の演算命令が命令語において何番目に
実行されるかを指定する分岐先演算命令指定フィールド
を含み、プログラムカウンタ制御手段は、分岐先演算命
令指定フィールドの値を保持する演算命令指定レジスタ
を含む。
は、請求項1記載のVLIW方式プロセッサであって、
命令語は、分岐先の演算命令が命令語において何番目に
実行されるかを指定する分岐先演算命令指定フィールド
を含み、プログラムカウンタ制御手段は、分岐先演算命
令指定フィールドの値を保持する演算命令指定レジスタ
を含む。
【0013】プログラムカウンタ制御手段は、分岐先演
算命令指定フィールドの値を保持する演算命令指定レジ
スタを含むので、逐次実行の途中で実行される演算命令
への分岐であるか否かを判定することが可能となり、命
令コードの圧縮効率を向上させることが可能となる。
算命令指定フィールドの値を保持する演算命令指定レジ
スタを含むので、逐次実行の途中で実行される演算命令
への分岐であるか否かを判定することが可能となり、命
令コードの圧縮効率を向上させることが可能となる。
【0014】請求項3に記載のVLIW方式プロセッサ
は、請求項2記載のVLIW方式プロセッサであって、
命令語はさらに、演算命令の実行順序を指定するフォー
マットフィールドおよび複数の演算命令フィールドを含
み、命令デコード手段は、フォーマットフィールドをデ
コードするフォーマットフィールドデコーダと、命令語
に含まれるフィールドを抽出するためのフィールド抽出
手段と、フィールド抽出手段によって抽出された複数の
演算命令フィールドをデコードする複数の命令デコーダ
と、フォーマットフィールドデコーダによるデコード結
果および演算命令指定レジスタに保持される値に基づい
て、複数の命令デコーダから出力されるデコード結果の
出力を制御するための複数の出力制御手段とを含む。
は、請求項2記載のVLIW方式プロセッサであって、
命令語はさらに、演算命令の実行順序を指定するフォー
マットフィールドおよび複数の演算命令フィールドを含
み、命令デコード手段は、フォーマットフィールドをデ
コードするフォーマットフィールドデコーダと、命令語
に含まれるフィールドを抽出するためのフィールド抽出
手段と、フィールド抽出手段によって抽出された複数の
演算命令フィールドをデコードする複数の命令デコーダ
と、フォーマットフィールドデコーダによるデコード結
果および演算命令指定レジスタに保持される値に基づい
て、複数の命令デコーダから出力されるデコード結果の
出力を制御するための複数の出力制御手段とを含む。
【0015】出力制御手段は、フォーマットフィールド
デコーダによるデコード結果および演算命令指定レジス
タに保持される値に基づいて、複数の命令デコーダから
出力されるデコード結果の出力を制御するので、逐次実
行の途中で実行される演算命令へ分岐を行うことが可能
となり、命令コードの圧縮効率を向上させることが可能
となる。
デコーダによるデコード結果および演算命令指定レジス
タに保持される値に基づいて、複数の命令デコーダから
出力されるデコード結果の出力を制御するので、逐次実
行の途中で実行される演算命令へ分岐を行うことが可能
となり、命令コードの圧縮効率を向上させることが可能
となる。
【0016】請求項4に記載のVLIW方式プロセッサ
は、請求項3記載のVLIW方式プロセッサであって、
複数の出力制御手段は、演算命令指定レジスタに保持さ
れる値が逐次実行時において途中で実行される演算命令
への分岐を示す場合に、途中で実行される演算命令より
も前に実行される逐次実行時における演算命令を無効演
算として出力する。
は、請求項3記載のVLIW方式プロセッサであって、
複数の出力制御手段は、演算命令指定レジスタに保持さ
れる値が逐次実行時において途中で実行される演算命令
への分岐を示す場合に、途中で実行される演算命令より
も前に実行される逐次実行時における演算命令を無効演
算として出力する。
【0017】複数の出力制御手段は、演算命令指定レジ
スタに保持される値が逐次実行時において途中で実行さ
れる演算命令への分岐を示す場合に、途中で実行される
演算命令よりも前に実行される逐次実行時における演算
命令を無効演算として出力するので、逐次実行の途中で
実行される演算命令へ分岐を行うことができ、命令コー
ドの圧縮効率を向上させることが可能となる。
スタに保持される値が逐次実行時において途中で実行さ
れる演算命令への分岐を示す場合に、途中で実行される
演算命令よりも前に実行される逐次実行時における演算
命令を無効演算として出力するので、逐次実行の途中で
実行される演算命令へ分岐を行うことができ、命令コー
ドの圧縮効率を向上させることが可能となる。
【0018】請求項5に記載のVLIW方式プロセッサ
は、請求項1〜4のいずれかに記載のVLIW方式プロ
セッサであって、命令デコード手段は、逐次実行時に実
行された演算命令数を計数するための演算命令計数手段
を含み、プログラムカウンタ制御手段は、例外または割
り込みが発生したときに演算命令計数手段によって計数
された演算命令数に基づいてプログラムカウンタ値を生
成して退避するバックアッププログラムカウンタを含
む。
は、請求項1〜4のいずれかに記載のVLIW方式プロ
セッサであって、命令デコード手段は、逐次実行時に実
行された演算命令数を計数するための演算命令計数手段
を含み、プログラムカウンタ制御手段は、例外または割
り込みが発生したときに演算命令計数手段によって計数
された演算命令数に基づいてプログラムカウンタ値を生
成して退避するバックアッププログラムカウンタを含
む。
【0019】バックアッププログラムカウンタは、例外
または割り込みが発生したときに演算命令計数手段によ
って計数された演算命令数に基づいてプログラムカウン
タ値を生成して退避するので、例外または割り込み発生
時に逐次実行の途中で実行される演算命令のアドレスを
退避でき、例外または割り込みのレーテンシを小さくす
ることが可能となる。
または割り込みが発生したときに演算命令計数手段によ
って計数された演算命令数に基づいてプログラムカウン
タ値を生成して退避するので、例外または割り込み発生
時に逐次実行の途中で実行される演算命令のアドレスを
退避でき、例外または割り込みのレーテンシを小さくす
ることが可能となる。
【0020】請求項6に記載のVLIW方式プロセッサ
は、請求項3または4記載のVLIW方式プロセッサで
あって、命令デコード手段はさらに、フォーマットフィ
ールドデコーダによるデコード結果および演算命令指定
レジスタに保持される値に基づいて、例外を検出する例
外検出手段を含む。
は、請求項3または4記載のVLIW方式プロセッサで
あって、命令デコード手段はさらに、フォーマットフィ
ールドデコーダによるデコード結果および演算命令指定
レジスタに保持される値に基づいて、例外を検出する例
外検出手段を含む。
【0021】例外検出手段は、フォーマットフィールド
デコーダによるデコード結果および演算命令指定レジス
タに保持される値に基づいて例外を検出するので、プロ
グラムのデバッグの効率を高めることが可能となる。
デコーダによるデコード結果および演算命令指定レジス
タに保持される値に基づいて例外を検出するので、プロ
グラムのデバッグの効率を高めることが可能となる。
【0022】請求項7に記載のVLIW方式プロセッサ
は、請求項6記載のVLIW方式プロセッサであって、
例外検出手段は、フォーマットフィールドデコーダによ
るデコード結果が並列実行または1演算命令を示し、か
つ演算命令指定レジスタに保持される値が分岐先の演算
命令が当該命令語において2番目以降に実行されること
を示す場合に例外を検出する。
は、請求項6記載のVLIW方式プロセッサであって、
例外検出手段は、フォーマットフィールドデコーダによ
るデコード結果が並列実行または1演算命令を示し、か
つ演算命令指定レジスタに保持される値が分岐先の演算
命令が当該命令語において2番目以降に実行されること
を示す場合に例外を検出する。
【0023】例外検出手段は、フォーマットフィールド
デコーダによるデコード結果が並列実行または1演算命
令を示し、かつ演算命令指定レジスタに保持される値が
分岐先の演算命令が当該命令語において2番目以降に実
行されることを示す場合に例外を検出するので、プログ
ラム中のバグで例外を発生させることが可能となり、デ
バッグの効率を高めることが可能となる。
デコーダによるデコード結果が並列実行または1演算命
令を示し、かつ演算命令指定レジスタに保持される値が
分岐先の演算命令が当該命令語において2番目以降に実
行されることを示す場合に例外を検出するので、プログ
ラム中のバグで例外を発生させることが可能となり、デ
バッグの効率を高めることが可能となる。
【0024】請求項8に記載のVLIW方式プロセッサ
は、請求項3または4記載のVLIW方式プロセッサで
あって、フォーマットフィールドデコーダは、フォーマ
ットフィールドおよび分岐先演算命令指定フィールドに
よって保持される値をデコードして、命令語に含まれる
複数の演算命令の実行順序を決定する。
は、請求項3または4記載のVLIW方式プロセッサで
あって、フォーマットフィールドデコーダは、フォーマ
ットフィールドおよび分岐先演算命令指定フィールドに
よって保持される値をデコードして、命令語に含まれる
複数の演算命令の実行順序を決定する。
【0025】フォーマットフィールドデコーダは、フォ
ーマットフィールドおよび分岐先演算命令指定フィール
ドによって保持される値をデコードして、命令語に含ま
れる複数の演算命令の実行順序を決定するので、命令の
実行サイクルを短縮することにより高速に処理が行える
ようになる。
ーマットフィールドおよび分岐先演算命令指定フィール
ドによって保持される値をデコードして、命令語に含ま
れる複数の演算命令の実行順序を決定するので、命令の
実行サイクルを短縮することにより高速に処理が行える
ようになる。
【0026】請求項9に記載のVLIW方式プロセッサ
は、請求項1〜8のいずれかに記載のVLIW方式プロ
セッサであって、命令語は分岐変位が異なる分岐命令を
複数含み、実行手段は複数の分岐変位が異なる分岐命令
に基づいて分岐を実行する。
は、請求項1〜8のいずれかに記載のVLIW方式プロ
セッサであって、命令語は分岐変位が異なる分岐命令を
複数含み、実行手段は複数の分岐変位が異なる分岐命令
に基づいて分岐を実行する。
【0027】実行手段は、複数の分岐変位が異なる分岐
命令に基づいて分岐を実行するので、これらの分岐命令
を適宜使い分けることによってコードの圧縮効率が悪化
するのを防止することが可能となる。
命令に基づいて分岐を実行するので、これらの分岐命令
を適宜使い分けることによってコードの圧縮効率が悪化
するのを防止することが可能となる。
【0028】請求項10に記載のVLIW方式プロセッ
サは、命令デコードユニットとメモリユニットと整数演
算ユニットとを含むVLIW方式プロセッサであって、
命令語は複数の演算命令フィールドと分岐先演算命令指
定フィールドとフォーマットフィールドとを含み、メモ
リユニットは分岐先演算命令指定フィールドが入力され
る演算命令指定レジスタを含み、命令デコードユニット
は、フォーマットフィールドが入力されるフォーマット
フィールドデコーダと、複数の演算命令フィールドのそ
れぞれが入力される複数の命令デコーダと、フォーマッ
トフィールドデコーダのデコード結果、演算命令指定レ
ジスタの値および命令デコーダのそれぞれのデコード結
果が入力され、かつメモリユニットまたは整数演算ユニ
ットに接続される複数の出力制御部とを含む。
サは、命令デコードユニットとメモリユニットと整数演
算ユニットとを含むVLIW方式プロセッサであって、
命令語は複数の演算命令フィールドと分岐先演算命令指
定フィールドとフォーマットフィールドとを含み、メモ
リユニットは分岐先演算命令指定フィールドが入力され
る演算命令指定レジスタを含み、命令デコードユニット
は、フォーマットフィールドが入力されるフォーマット
フィールドデコーダと、複数の演算命令フィールドのそ
れぞれが入力される複数の命令デコーダと、フォーマッ
トフィールドデコーダのデコード結果、演算命令指定レ
ジスタの値および命令デコーダのそれぞれのデコード結
果が入力され、かつメモリユニットまたは整数演算ユニ
ットに接続される複数の出力制御部とを含む。
【0029】出力制御部は、フォーマットフィールドデ
コーダのデコード結果、演算命令指定レジスタの値およ
び命令デコーダのそれぞれのデコード結果が入力され、
かつメモリユニットまたは整数演算ユニットに接続され
るので、逐次実行の途中で実行される演算命令へ分岐を
行うことが可能となり、命令コードの圧縮効率を向上さ
せることが可能となる。
コーダのデコード結果、演算命令指定レジスタの値およ
び命令デコーダのそれぞれのデコード結果が入力され、
かつメモリユニットまたは整数演算ユニットに接続され
るので、逐次実行の途中で実行される演算命令へ分岐を
行うことが可能となり、命令コードの圧縮効率を向上さ
せることが可能となる。
【0030】
【発明の実施の形態】(実施の形態1)図1は、実施の
形態1のVLIW方式プロセッサにおいて使用される命
令フォーマットを説明するための図である。本実施の形
態における命令フォーマットには、図1(a)に示す命
令フォーマットおよび図1(b)に示す命令フォーマッ
トの2種類のフォーマットが用意されている。
形態1のVLIW方式プロセッサにおいて使用される命
令フォーマットを説明するための図である。本実施の形
態における命令フォーマットには、図1(a)に示す命
令フォーマットおよび図1(b)に示す命令フォーマッ
トの2種類のフォーマットが用意されている。
【0031】図1(a)に示す命令フォーマット1は、
2演算命令の命令フォーマットを示しており、2個のフ
ォーマットフィールド(FM)10および11と、2個
の演算命令フィールド(operation#0,operation#1)1
2および13と、演算命令フィールド12および13の
それぞれに付属する2個の実行条件フィールド14およ
び15とを含んでいる。
2演算命令の命令フォーマットを示しており、2個のフ
ォーマットフィールド(FM)10および11と、2個
の演算命令フィールド(operation#0,operation#1)1
2および13と、演算命令フィールド12および13の
それぞれに付属する2個の実行条件フィールド14およ
び15とを含んでいる。
【0032】また、図1(b)に示す命令フォーマット
2は、1演算命令の命令フォーマットを示しており、2
個のフォーマットフィールド10および11と、3個の
演算命令フィールド(operation#0H,operation#0M,op
eration#0L)16、17および18と、演算命令フィー
ルド16、17および18に付属する実行条件フィール
ド19とを含んでいる。
2は、1演算命令の命令フォーマットを示しており、2
個のフォーマットフィールド10および11と、3個の
演算命令フィールド(operation#0H,operation#0M,op
eration#0L)16、17および18と、演算命令フィー
ルド16、17および18に付属する実行条件フィール
ド19とを含んでいる。
【0033】なお、本実施の形態におけるVLIW方式
プロセッサの命令長は8バイト(64ビット)の固定長
であり、図1(a)に示す2演算命令および図1(b)
に示す1演算命令の命令フォーマットは、それぞれ全体
として8バイト長となっている。
プロセッサの命令長は8バイト(64ビット)の固定長
であり、図1(a)に示す2演算命令および図1(b)
に示す1演算命令の命令フォーマットは、それぞれ全体
として8バイト長となっている。
【0034】図1(a)に示す命令フォーマット1にお
いて、2個の演算命令フィールド12および13は、そ
れぞれが28ビットの短型フォーマットの演算命令コー
ドを1個ずつ指定する。また、図1(b)に示す命令フ
ォーマット2において、3個の演算命令フィールド1
6,17および18は54ビットの長型フォーマットの
演算命令コードを1個指定する。
いて、2個の演算命令フィールド12および13は、そ
れぞれが28ビットの短型フォーマットの演算命令コー
ドを1個ずつ指定する。また、図1(b)に示す命令フ
ォーマット2において、3個の演算命令フィールド1
6,17および18は54ビットの長型フォーマットの
演算命令コードを1個指定する。
【0035】図2は、図1(a)および図1(b)に示
すフォーマットフィールド10および11の内容を説明
するための図である。なお、本実施の形態におけるフォ
ーマットフィールド10および11はそれぞれ2ビット
で構成され、4種類の状態を示している。図2におい
て、“FM”はフォーマットフィールド10および11
の2ビットを、“1ops”は1演算命令を、“2ops”は2
演算命令を、“1st”はその欄の演算が最初に実行され
るべきことを、“2nd”はその欄の演算が2番目に実行
されるべきことをそれぞれ示している。また、“---”
はその欄の演算が存在しないことを示している。
すフォーマットフィールド10および11の内容を説明
するための図である。なお、本実施の形態におけるフォ
ーマットフィールド10および11はそれぞれ2ビット
で構成され、4種類の状態を示している。図2におい
て、“FM”はフォーマットフィールド10および11
の2ビットを、“1ops”は1演算命令を、“2ops”は2
演算命令を、“1st”はその欄の演算が最初に実行され
るべきことを、“2nd”はその欄の演算が2番目に実行
されるべきことをそれぞれ示している。また、“---”
はその欄の演算が存在しないことを示している。
【0036】また、フォーマットフィールド10および
11は、命令フォーマット1と命令フォーマット2との
区別の他に、2演算命令の演算の順序を指定する。ここ
で、演算の順序の指定とは、図2に示すように2個の演
算を逐次実行する場合の順序を指定する以外に、2個の
演算を並列実行する場合の指定をも含むものとする。逐
次実行とは、命令を1個ずつ逐次的に実行することを意
味しており、先に実行すべき命令の演算結果がその次に
実行すべき命令に反映されることを意味している。
11は、命令フォーマット1と命令フォーマット2との
区別の他に、2演算命令の演算の順序を指定する。ここ
で、演算の順序の指定とは、図2に示すように2個の演
算を逐次実行する場合の順序を指定する以外に、2個の
演算を並列実行する場合の指定をも含むものとする。逐
次実行とは、命令を1個ずつ逐次的に実行することを意
味しており、先に実行すべき命令の演算結果がその次に
実行すべき命令に反映されることを意味している。
【0037】たとえば、フォーマットフィールド“F
M”の値が“00”である場合、2演算命令であり、演
算命令フィールド12で指定される“operation#0”と
演算命令フィールド13で指定される“operation#1”
とが同時に実行されることを示している。この場合、
“operation#0”と“operation#1”とが並列に実行され
るため、相互のオペランドが競合しないことをソフトウ
ェア(たとえば、コンパイラ)が保証する必要がある。
M”の値が“00”である場合、2演算命令であり、演
算命令フィールド12で指定される“operation#0”と
演算命令フィールド13で指定される“operation#1”
とが同時に実行されることを示している。この場合、
“operation#0”と“operation#1”とが並列に実行され
るため、相互のオペランドが競合しないことをソフトウ
ェア(たとえば、コンパイラ)が保証する必要がある。
【0038】また、フォーマットフィールド“FM”の
値が“01”である場合、2演算命令であり、演算命令
フィールド12で指定される“operation#0”がまず実
行され、その後に演算命令フィールド13で指定される
“operation#1”が実行される。さらには、フォーマッ
トフィールド“FM”の値が“10”である場合、2演
算命令であり、演算命令フィールド13で指定される
“operation#1”がまず実行され、その後に演算命令フ
ィールド12で指定される“operation#0”が実行され
る。これら“FM”の値が“01”または“10”の場
合、“operation#0”と“operation#1”とが逐次実行さ
れることをハードウェアが保証する必要がある。
値が“01”である場合、2演算命令であり、演算命令
フィールド12で指定される“operation#0”がまず実
行され、その後に演算命令フィールド13で指定される
“operation#1”が実行される。さらには、フォーマッ
トフィールド“FM”の値が“10”である場合、2演
算命令であり、演算命令フィールド13で指定される
“operation#1”がまず実行され、その後に演算命令フ
ィールド12で指定される“operation#0”が実行され
る。これら“FM”の値が“01”または“10”の場
合、“operation#0”と“operation#1”とが逐次実行さ
れることをハードウェアが保証する必要がある。
【0039】また、本実施の形態におけるVLIW方式
プロセッサにおいては、後述するように逐次実行の途中
に実行されるべき演算命令への分岐が行なわれた場合、
分岐先の命令語中で分岐先の演算命令に先行して実行さ
れるように指定された演算命令を無効化して実行する機
構を有している。その結果、命令語中で分岐先の演算命
令に先行して実行するように指定された演算命令は実行
されず、逐次実行の途中で実行される演算命令への分岐
が正しく実行される。
プロセッサにおいては、後述するように逐次実行の途中
に実行されるべき演算命令への分岐が行なわれた場合、
分岐先の命令語中で分岐先の演算命令に先行して実行さ
れるように指定された演算命令を無効化して実行する機
構を有している。その結果、命令語中で分岐先の演算命
令に先行して実行するように指定された演算命令は実行
されず、逐次実行の途中で実行される演算命令への分岐
が正しく実行される。
【0040】たとえば、“FM”の値に“01”が指定
された2演算命令の逐次実行において、後で実行される
べき演算命令である“operation#1”への分岐が実行さ
れた場合、分岐先の演算命令に先行して実行されるよう
に指定された“operation#0”が無効化されて、演算命
令“operation#1”の実行のみが行なわれる。
された2演算命令の逐次実行において、後で実行される
べき演算命令である“operation#1”への分岐が実行さ
れた場合、分岐先の演算命令に先行して実行されるよう
に指定された“operation#0”が無効化されて、演算命
令“operation#1”の実行のみが行なわれる。
【0041】図3は、演算命令コードを詳細に説明する
ための図である。図3(a)は、短型の演算命令フォー
マット20を示しており、演算内容(オペコード)を指
定するフィールド30と、レジスタ番号を指定する2つ
のフィールド31および32と、レジスタ番号または6
ビット長の即値を指定するフィールド33と、フィーー
ルド33がレジスタ番号を示すのか即値を示すのかを指
定するフィールド34とを含む。図3(a)に示すよう
に、フィールド34の値Xが“00”、“01”または
“11”である場合は、フィールド33がレジスタ番号
であることを示しており、フィールド34の値Xが“1
0”である場合は、フィールド33が即値であることを
示している。この演算命令フォーマット20は、レジス
タ間接アドレッシングによるメモリアクセス演算に用い
られる。なお、“Rb++”および“Rb−−”は、レ
ジスタ間接アドレッシングの際のアドレッシングモード
を示しており、“Rb++”はポストインクリメント付
きレジスタ間接モードを、“Rb−−”はポストデクリ
メント付きレジスタ間接モードを示している。
ための図である。図3(a)は、短型の演算命令フォー
マット20を示しており、演算内容(オペコード)を指
定するフィールド30と、レジスタ番号を指定する2つ
のフィールド31および32と、レジスタ番号または6
ビット長の即値を指定するフィールド33と、フィーー
ルド33がレジスタ番号を示すのか即値を示すのかを指
定するフィールド34とを含む。図3(a)に示すよう
に、フィールド34の値Xが“00”、“01”または
“11”である場合は、フィールド33がレジスタ番号
であることを示しており、フィールド34の値Xが“1
0”である場合は、フィールド33が即値であることを
示している。この演算命令フォーマット20は、レジス
タ間接アドレッシングによるメモリアクセス演算に用い
られる。なお、“Rb++”および“Rb−−”は、レ
ジスタ間接アドレッシングの際のアドレッシングモード
を示しており、“Rb++”はポストインクリメント付
きレジスタ間接モードを、“Rb−−”はポストデクリ
メント付きレジスタ間接モードを示している。
【0042】図3(b)は、短型の演算命令フォーマッ
ト21を示しており、演算内容を指定するフィールド3
0と、レジスタ番号を指定する2つのフィールド31お
よび32と、レジスタ番号または6ビット長の即値を指
定するフィールド33と、フィールド33がレジスタ番
号を示すのか即値を示すのかを指定するフィールド35
とを含む。図3(b)に示すように、フィールド35の
値X’が“0”である場合は、フィールド33がレジス
タ番号であることを示しており、フィールド35の値
X’が“1”である場合は、フィールド33が即値であ
ることを示している。この演算命令フォーマット21
は、算術演算、論理演算、シフト演算またはビット演算
に用いられる。
ト21を示しており、演算内容を指定するフィールド3
0と、レジスタ番号を指定する2つのフィールド31お
よび32と、レジスタ番号または6ビット長の即値を指
定するフィールド33と、フィールド33がレジスタ番
号を示すのか即値を示すのかを指定するフィールド35
とを含む。図3(b)に示すように、フィールド35の
値X’が“0”である場合は、フィールド33がレジス
タ番号であることを示しており、フィールド35の値
X’が“1”である場合は、フィールド33が即値であ
ることを示している。この演算命令フォーマット21
は、算術演算、論理演算、シフト演算またはビット演算
に用いられる。
【0043】図3(c)は、短型の演算命令フォーマッ
ト22を示しており、演算内容を指定するフィールド3
0と、分岐先の命令語のアドレスを直接指定する17ビッ
ト長のディスプレースメントフィールド36と、分岐先
の演算命令が当該命令語において何番目に実行される命
令であるかを指定する分岐先演算命令指定フィールド3
7とを含む。分岐先演算命令指定フィールド37が
“0”の場合、分岐先は最初に実行される演算命令であ
ることを示し、分岐先演算命令指定フィールド37が
“1”の場合、分岐先は2番目に実行される演算命令で
あることを示す。この演算命令フォーマット22は、デ
ィスプレースメントフィールド36で指定される分岐変
位が17ビットで指定可能な範囲の分岐命令またはサブル
ーチン分岐命令に用いられる。なお、本実施の形態にお
けるVLIW方式プロセッサにおいては、命令長が8バ
イト固定長であるので命令アドレスの下位3ビットは常
に“0”となり、20(=17+3)ビットのアドレス
空間、すなわち1Mバイトまでの分岐変位を指定するこ
とが可能である。
ト22を示しており、演算内容を指定するフィールド3
0と、分岐先の命令語のアドレスを直接指定する17ビッ
ト長のディスプレースメントフィールド36と、分岐先
の演算命令が当該命令語において何番目に実行される命
令であるかを指定する分岐先演算命令指定フィールド3
7とを含む。分岐先演算命令指定フィールド37が
“0”の場合、分岐先は最初に実行される演算命令であ
ることを示し、分岐先演算命令指定フィールド37が
“1”の場合、分岐先は2番目に実行される演算命令で
あることを示す。この演算命令フォーマット22は、デ
ィスプレースメントフィールド36で指定される分岐変
位が17ビットで指定可能な範囲の分岐命令またはサブル
ーチン分岐命令に用いられる。なお、本実施の形態にお
けるVLIW方式プロセッサにおいては、命令長が8バ
イト固定長であるので命令アドレスの下位3ビットは常
に“0”となり、20(=17+3)ビットのアドレス
空間、すなわち1Mバイトまでの分岐変位を指定するこ
とが可能である。
【0044】図3(d)は、長型の演算命令フォーマッ
ト23を示しており、演算内容を指定するフィールド3
0と、レジスタ番号を指定する2つのフィールド31お
よび32と、29ビット長の即値(アドレス)を指定す
るフィールド38と、分岐先の演算命令が逐次実行の途
中に実行されるものか否かを指定する分岐演算命令指定
フィールド37とを含む。この演算命令フォーマット2
3は、分岐変位が大きい時の分岐命令または絶対アドレ
スへの分岐命令等に使用される。なお、本実施の形態に
おけるVLIW方式プロセッサにおいては、命令長が8
バイト固定長であるので命令アドレスの下位3ビットは
常に“0”となり、32(=29+3)ビットのアドレ
ス空間、すなわち4Gバイトまでの分岐変位を指定する
ことが可能である。
ト23を示しており、演算内容を指定するフィールド3
0と、レジスタ番号を指定する2つのフィールド31お
よび32と、29ビット長の即値(アドレス)を指定す
るフィールド38と、分岐先の演算命令が逐次実行の途
中に実行されるものか否かを指定する分岐演算命令指定
フィールド37とを含む。この演算命令フォーマット2
3は、分岐変位が大きい時の分岐命令または絶対アドレ
スへの分岐命令等に使用される。なお、本実施の形態に
おけるVLIW方式プロセッサにおいては、命令長が8
バイト固定長であるので命令アドレスの下位3ビットは
常に“0”となり、32(=29+3)ビットのアドレ
ス空間、すなわち4Gバイトまでの分岐変位を指定する
ことが可能である。
【0045】図3(e)は、長型の演算命令フォーマッ
ト24を示しており、演算内容を指定するフィールド3
0と、レジスタ番号を指定する2つのフィールド31お
よび32と、32ビット長の即値を指定するフィールド
39とを含む。この演算命令フォーマット24は、複雑
な算術演算、大きな即値を用いる算術演算、大きなディ
スプレースメント付きレジスタ間接アドレッシングのメ
モリアクセス等に使用される。
ト24を示しており、演算内容を指定するフィールド3
0と、レジスタ番号を指定する2つのフィールド31お
よび32と、32ビット長の即値を指定するフィールド
39とを含む。この演算命令フォーマット24は、複雑
な算術演算、大きな即値を用いる算術演算、大きなディ
スプレースメント付きレジスタ間接アドレッシングのメ
モリアクセス等に使用される。
【0046】図4(a)〜図4(c)は、本実施の形態
におけるVLIW方式プロセッサにおいて使用されるレ
ジスタ群を説明するための図である。このレジスタ群
は、64本の32ビット長の汎用レジスタ(R0〜R6
3)40と、12本の32ビット長の制御レジスタ(C
R0〜CR11)41と、2本の64ビット長のアキュ
ムレータ(A0,A1)42とを含む。汎用レジスタR
0(50)は書込み値が無視され、読み出された場合に
常に“0”を出力するレジスタである。また、汎用レジ
スタR62(51)は、サブルーチンからの戻りアドレ
スが設定されるリンクレジスタである。また、汎用レジ
スタR63(52)は、スタックポインタであり、ユー
ザ用スタックポインタ(SPU)と割り込み処理用スタ
ックポインタ(SPI)とがモードによって切り替わ
る。また、制御レジスタ41は、プログラムカウンタ
(PC)53、プロセッサステータスワード(PSW)
54および各種の専用レジスタを含む。
におけるVLIW方式プロセッサにおいて使用されるレ
ジスタ群を説明するための図である。このレジスタ群
は、64本の32ビット長の汎用レジスタ(R0〜R6
3)40と、12本の32ビット長の制御レジスタ(C
R0〜CR11)41と、2本の64ビット長のアキュ
ムレータ(A0,A1)42とを含む。汎用レジスタR
0(50)は書込み値が無視され、読み出された場合に
常に“0”を出力するレジスタである。また、汎用レジ
スタR62(51)は、サブルーチンからの戻りアドレ
スが設定されるリンクレジスタである。また、汎用レジ
スタR63(52)は、スタックポインタであり、ユー
ザ用スタックポインタ(SPU)と割り込み処理用スタ
ックポインタ(SPI)とがモードによって切り替わ
る。また、制御レジスタ41は、プログラムカウンタ
(PC)53、プロセッサステータスワード(PSW)
54および各種の専用レジスタを含む。
【0047】図5は、プロセッサステータスワード(P
SW)54を詳細に説明するための図である。PSW5
4の上位16ビットには、スタックポインタを切り替え
るためのSMフィールド61、ソフトウェアデバッガト
ラップ(SDBT)の検出を示すEAフィールド62、
SDBTの許可を指定するDBフィールド63、割り込
みの許可を指定するIEフィールド64、リピート動作
の許可を指定するRPフィールド65およびモジュロア
ドレッシングの許可を指定するMDフィールド66が割
り付けられている。
SW)54を詳細に説明するための図である。PSW5
4の上位16ビットには、スタックポインタを切り替え
るためのSMフィールド61、ソフトウェアデバッガト
ラップ(SDBT)の検出を示すEAフィールド62、
SDBTの許可を指定するDBフィールド63、割り込
みの許可を指定するIEフィールド64、リピート動作
の許可を指定するRPフィールド65およびモジュロア
ドレッシングの許可を指定するMDフィールド66が割
り付けられている。
【0048】また、PSW54の下位16ビットには、
フラグフィールドが割り付けられている。フラグフィー
ルド70には、8個のフラグが割り付けられており、そ
の中のF0フラグ71およびF1フラグ72は演算の有
効/無効を指定する。その他の各フラグの値は、比較結
果や算術演算の結果に応じて変化する。制御レジスタア
クセス命令によってこのPSW54の値を参照したり、
変更することが可能である。
フラグフィールドが割り付けられている。フラグフィー
ルド70には、8個のフラグが割り付けられており、そ
の中のF0フラグ71およびF1フラグ72は演算の有
効/無効を指定する。その他の各フラグの値は、比較結
果や算術演算の結果に応じて変化する。制御レジスタア
クセス命令によってこのPSW54の値を参照したり、
変更することが可能である。
【0049】図6は、本実施の形態におけるVLIW方
式プロセッサの概略構成を示すブロック図である。この
VLIW方式プロセッサは、64ビット幅の命令コード
が格納される命令RAM(Random Access Memory)8
1と、命令RAM81から64ビット幅のIDバスを介
して入力した命令コードをデコードする命令デコードユ
ニット80と、命令語のフェッチ時やオペランドの読み
出し時等におけるアドレスの計算を行うメモリユニット
82と、論理演算やシフト演算を行う整数演算ユニット
83と、32ビット×64ワードの汎用レジスタ84
と、データが格納されるデータRAM85と、命令デコ
ードユニット80によるデコード結果およびPSW54
の内容にしたがってメモリユニット82および整数演算
ユニット83を制御する制御回路90とを含む。
式プロセッサの概略構成を示すブロック図である。この
VLIW方式プロセッサは、64ビット幅の命令コード
が格納される命令RAM(Random Access Memory)8
1と、命令RAM81から64ビット幅のIDバスを介
して入力した命令コードをデコードする命令デコードユ
ニット80と、命令語のフェッチ時やオペランドの読み
出し時等におけるアドレスの計算を行うメモリユニット
82と、論理演算やシフト演算を行う整数演算ユニット
83と、32ビット×64ワードの汎用レジスタ84
と、データが格納されるデータRAM85と、命令デコ
ードユニット80によるデコード結果およびPSW54
の内容にしたがってメモリユニット82および整数演算
ユニット83を制御する制御回路90とを含む。
【0050】命令デコードユニット80は、命令コード
をデコードする命令デコーダ86および87を含む。命
令デコードユニット80は、命令デコーダ86および8
7のデコード結果およびメモリユニット82から出力さ
れる分岐先演算命令指定信号99に基づいて制御信号8
8および89を作成して制御回路90へ出力する。な
お、分岐先演算命令指定信号99の詳細については後述
する。
をデコードする命令デコーダ86および87を含む。命
令デコードユニット80は、命令デコーダ86および8
7のデコード結果およびメモリユニット82から出力さ
れる分岐先演算命令指定信号99に基づいて制御信号8
8および89を作成して制御回路90へ出力する。な
お、分岐先演算命令指定信号99の詳細については後述
する。
【0051】制御回路90はPSW54を含んでおり、
命令デコードユニット80のデコード結果およびPSW
54の内容に従ってメモリユニット82および整数演算
ユニット83を制御する。
命令デコードユニット80のデコード結果およびPSW
54の内容に従ってメモリユニット82および整数演算
ユニット83を制御する。
【0052】メモリユニット82は、プログラムカウン
タ(PC)値を算出して出力するPC制御部92と、命
令RAM81およびデータRAM85を制御するメモリ
制御部91と、シフタ93と、ALU(Arithmetic Lo
gic Unit)94とを含む。PC制御部92は、分岐命
令以外の命令を実行する場合には命令の実行毎にPC値
に“8”を加算し、分岐命令を実行する場合には分岐変
位をPC値に加算したり、演算で指定されたアドレッシ
ングモードに応じた計算を行って分岐先命令に対応する
PC値を算出する。
タ(PC)値を算出して出力するPC制御部92と、命
令RAM81およびデータRAM85を制御するメモリ
制御部91と、シフタ93と、ALU(Arithmetic Lo
gic Unit)94とを含む。PC制御部92は、分岐命
令以外の命令を実行する場合には命令の実行毎にPC値
に“8”を加算し、分岐命令を実行する場合には分岐変
位をPC値に加算したり、演算で指定されたアドレッシ
ングモードに応じた計算を行って分岐先命令に対応する
PC値を算出する。
【0053】メモリ制御部91は、PC制御部92が算
出したPC値を32ビット幅のIAバスを介して命令R
AM81へ出力して命令RAM81から命令コードを出
力させる。また、メモリ制御部91は、32ビット幅の
DAバスを介してデータRAM85へアドレスを出力
し、64ビット幅のDDバスを介して命令実行に必要な
データをアクセスする。
出したPC値を32ビット幅のIAバスを介して命令R
AM81へ出力して命令RAM81から命令コードを出
力させる。また、メモリ制御部91は、32ビット幅の
DAバスを介してデータRAM85へアドレスを出力
し、64ビット幅のDDバスを介して命令実行に必要な
データをアクセスする。
【0054】ALU94は、32ビット幅のS1バス、
S2バスおよびS3バスを介して汎用レジスタ84から
出力された最大3ワードのデータを用いて算術論理演算
を行い、演算結果を32ビット幅のD1バスを介して汎
用レジスタ84へ出力する。また、シフタ93は、S1
バス、S2バスおよびS3バスを介して入力したデータ
を用いてシフト演算を行い、演算結果をD1バスを介し
て汎用レジスタ84へ出力する。
S2バスおよびS3バスを介して汎用レジスタ84から
出力された最大3ワードのデータを用いて算術論理演算
を行い、演算結果を32ビット幅のD1バスを介して汎
用レジスタ84へ出力する。また、シフタ93は、S1
バス、S2バスおよびS3バスを介して入力したデータ
を用いてシフト演算を行い、演算結果をD1バスを介し
て汎用レジスタ84へ出力する。
【0055】整数演算ユニット83は、乗算器95と、
ALU96と、シフタ97と、2つの64ビットアキュ
ムレータ98とを含む。乗算器95は、32ビット幅の
S4バス、S5バスおよびS6バスを介して汎用レジス
タ84から転送された最大3ワードのデータを用いて乗
算を行い、演算結果を32ビット幅のD2バスおよびD
3バスを介して汎用レジスタ84へ出力する。
ALU96と、シフタ97と、2つの64ビットアキュ
ムレータ98とを含む。乗算器95は、32ビット幅の
S4バス、S5バスおよびS6バスを介して汎用レジス
タ84から転送された最大3ワードのデータを用いて乗
算を行い、演算結果を32ビット幅のD2バスおよびD
3バスを介して汎用レジスタ84へ出力する。
【0056】ALU96は、S4バス、S5バスおよび
S6バスを介して汎用レジスタ84から転送された最大
3ワードのデータを用いて算術論理演算を行い、演算結
果をD3バスを介して汎用レジスタ84へ出力する。ま
た、シフタ97は、S4バス、S5バスおよびS6バス
を介して汎用レジスタ84から転送されたデータを用い
てシフト演算を行い、演算結果をD3バスを介して汎用
レジスタ84へ出力する。また、アキュムレータ98
は、乗算器95による乗算結果を累積加算または累積減
算して保持する。
S6バスを介して汎用レジスタ84から転送された最大
3ワードのデータを用いて算術論理演算を行い、演算結
果をD3バスを介して汎用レジスタ84へ出力する。ま
た、シフタ97は、S4バス、S5バスおよびS6バス
を介して汎用レジスタ84から転送されたデータを用い
てシフト演算を行い、演算結果をD3バスを介して汎用
レジスタ84へ出力する。また、アキュムレータ98
は、乗算器95による乗算結果を累積加算または累積減
算して保持する。
【0057】図7は、命令デコードユニット80をさら
に詳細に説明するための図である。命令デコードユニッ
ト80は、演算命令フィールドを抽出するフィールド抽
出部100と、フォーマットフィールドをデコードする
FMデコーダ101と、フィールド抽出部100によっ
て抽出された演算命令フィールドをデコードする命令デ
コーダ86および87と、制御回路90へ出力される制
御信号を生成して出力する出力制御部102および10
3とを含む。
に詳細に説明するための図である。命令デコードユニッ
ト80は、演算命令フィールドを抽出するフィールド抽
出部100と、フォーマットフィールドをデコードする
FMデコーダ101と、フィールド抽出部100によっ
て抽出された演算命令フィールドをデコードする命令デ
コーダ86および87と、制御回路90へ出力される制
御信号を生成して出力する出力制御部102および10
3とを含む。
【0058】フィールド抽出部100は、IDバスを介
して入力した64ビット幅の命令コードから、演算命令
フィールド12および13、または演算命令フィールド
16、17および18を抽出して命令デコーダ86およ
び87へ出力する。フィールド抽出部100は、命令語
デコードの第1サイクルで必ず演算命令フィールド12
または演算命令フィールド16、17および18を命令
デコーダ86へ出力し、演算命令フィールド13を命令
デコーダ87へ出力する。また、FMデコーダ101に
よるデコード結果が逐次実行である場合、命令語デコー
ドの第1サイクルにおいて、図示しないデコーダによっ
て2番目に実行される演算命令フィールドがどちらの命
令デコーダで処理すべき演算命令であるかが判定され
る。
して入力した64ビット幅の命令コードから、演算命令
フィールド12および13、または演算命令フィールド
16、17および18を抽出して命令デコーダ86およ
び87へ出力する。フィールド抽出部100は、命令語
デコードの第1サイクルで必ず演算命令フィールド12
または演算命令フィールド16、17および18を命令
デコーダ86へ出力し、演算命令フィールド13を命令
デコーダ87へ出力する。また、FMデコーダ101に
よるデコード結果が逐次実行である場合、命令語デコー
ドの第1サイクルにおいて、図示しないデコーダによっ
て2番目に実行される演算命令フィールドがどちらの命
令デコーダで処理すべき演算命令であるかが判定され
る。
【0059】フィールド抽出部100は、命令語デコー
ドの第2サイクルにおいて、上記図示しないデコーダに
よる判定結果に基づいて2番目に実行される演算命令を
命令デコーダ86または87へ出力する。フィールド抽
出部100は、この2番目に実行される演算命令がどち
らの実行ユニット(メモリユニット82および整数演算
ユニット83)でも実行可能な場合には、命令デコーダ
86へ出力する。たとえば、“FM”の値が“10”の
逐次実行の場合であり、演算命令フィールド12および
13によって共に整数演算ユニット83でのみ実行可能
な演算命令が指定されている場合のフィールド抽出部1
00の動作を以下に説明する。
ドの第2サイクルにおいて、上記図示しないデコーダに
よる判定結果に基づいて2番目に実行される演算命令を
命令デコーダ86または87へ出力する。フィールド抽
出部100は、この2番目に実行される演算命令がどち
らの実行ユニット(メモリユニット82および整数演算
ユニット83)でも実行可能な場合には、命令デコーダ
86へ出力する。たとえば、“FM”の値が“10”の
逐次実行の場合であり、演算命令フィールド12および
13によって共に整数演算ユニット83でのみ実行可能
な演算命令が指定されている場合のフィールド抽出部1
00の動作を以下に説明する。
【0060】命令語デコードの第1サイクルにおいて、
演算命令フィールド13が命令デコーダ87へ出力され
てデコードされ、演算命令フィールド12が図示しない
デコーダへ出力されてデコードされる。命令語デコード
の第2サイクルにおいて、上記図示しないデコーダの判
定結果に基づいて、演算命令フィールド12が命令デコ
ーダ87へ出力される。このとき、第1サイクルで演算
命令フィールド12が、第2サイクルで演算命令フィー
ルド13が命令デコーダ86へも出力されている。しか
し、後述するように出力制御部102および103の処
理により、逐次実行の各サイクルで演算命令を実行しな
い方の実行ユニット(メモリユニット82)に対応した
命令デコーダ86のデコード結果が無視される。
演算命令フィールド13が命令デコーダ87へ出力され
てデコードされ、演算命令フィールド12が図示しない
デコーダへ出力されてデコードされる。命令語デコード
の第2サイクルにおいて、上記図示しないデコーダの判
定結果に基づいて、演算命令フィールド12が命令デコ
ーダ87へ出力される。このとき、第1サイクルで演算
命令フィールド12が、第2サイクルで演算命令フィー
ルド13が命令デコーダ86へも出力されている。しか
し、後述するように出力制御部102および103の処
理により、逐次実行の各サイクルで演算命令を実行しな
い方の実行ユニット(メモリユニット82)に対応した
命令デコーダ86のデコード結果が無視される。
【0061】命令デコーダ86は、メモリユニット82
と対応しており、フィールド抽出部100が抽出した短
型の演算命令フォーマットまたは長型の演算命令フォー
マットの演算命令コードをデコードする。また、命令デ
コーダ87は、整数演算ユニット83と対応しており、
フィールド抽出部100が抽出した短型の演算命令フォ
ーマットの演算命令コードをデコードする。
と対応しており、フィールド抽出部100が抽出した短
型の演算命令フォーマットまたは長型の演算命令フォー
マットの演算命令コードをデコードする。また、命令デ
コーダ87は、整数演算ユニット83と対応しており、
フィールド抽出部100が抽出した短型の演算命令フォ
ーマットの演算命令コードをデコードする。
【0062】出力制御部102は、命令デコーダ86の
デコード結果、FMデコーダ101のデコード結果およ
びメモリユニット82から出力される分岐先演算命令指
定信号99に基づいて、分岐演算、現在のPC値に
“8”を加算する非分岐演算および無効演算のうちのい
ずれか1つを行うように指示する制御信号と、整数演算
および無効演算のいずれかを行うように指示する制御信
号と、メモリアクセス演算および無効演算のいずれかを
行うように指示する制御信号とを制御回路90へ出力す
る。また、出力制御部103は、命令デコーダ87のデ
コード結果、FMデコーダ101のデコード結果および
メモリユニット82から出力される分岐先演算命令指定
信号99に基づいて、整数演算および無効演算のいずれ
かを行うように指示する制御信号を制御回路90へ出力
する。
デコード結果、FMデコーダ101のデコード結果およ
びメモリユニット82から出力される分岐先演算命令指
定信号99に基づいて、分岐演算、現在のPC値に
“8”を加算する非分岐演算および無効演算のうちのい
ずれか1つを行うように指示する制御信号と、整数演算
および無効演算のいずれかを行うように指示する制御信
号と、メモリアクセス演算および無効演算のいずれかを
行うように指示する制御信号とを制御回路90へ出力す
る。また、出力制御部103は、命令デコーダ87のデ
コード結果、FMデコーダ101のデコード結果および
メモリユニット82から出力される分岐先演算命令指定
信号99に基づいて、整数演算および無効演算のいずれ
かを行うように指示する制御信号を制御回路90へ出力
する。
【0063】出力制御部102および103はそれぞ
れ、FMデコーダ101のデコード結果に基づいて上記
制御信号の出力タイミングを制御する。出力制御部10
2および103はそれぞれ、2演算命令の並列実行また
は1演算命令の場合には、命令デコーダ86および87
のデコード結果を1サイクルで制御信号88および89
に出力する。ただし、1演算命令の場合には、出力制御
部103は無効演算を指示する制御信号89を出力す
る。
れ、FMデコーダ101のデコード結果に基づいて上記
制御信号の出力タイミングを制御する。出力制御部10
2および103はそれぞれ、2演算命令の並列実行また
は1演算命令の場合には、命令デコーダ86および87
のデコード結果を1サイクルで制御信号88および89
に出力する。ただし、1演算命令の場合には、出力制御
部103は無効演算を指示する制御信号89を出力す
る。
【0064】また、2演算命令の逐次実行の場合には、
出力制御部102および103はそれぞれ、命令デコー
ダ86および87のデコード結果を2サイクルに分けて
出力する。すなわち、1サイクル目には、最初に実行さ
れる演算命令フィールドをデコードした命令デコーダ8
6または87に対応する出力制御部102または103
が、そのデコード結果を制御信号88または89へ出力
する。また、2サイクル目には、2番目に実行される演
算命令フィールドをデコードした命令デコーダ86また
は87に対応する出力制御部102または103が、そ
のデコード結果を制御信号86または87へ出力する。
出力制御部102および103はそれぞれ、命令デコー
ダ86および87のデコード結果を2サイクルに分けて
出力する。すなわち、1サイクル目には、最初に実行さ
れる演算命令フィールドをデコードした命令デコーダ8
6または87に対応する出力制御部102または103
が、そのデコード結果を制御信号88または89へ出力
する。また、2サイクル目には、2番目に実行される演
算命令フィールドをデコードした命令デコーダ86また
は87に対応する出力制御部102または103が、そ
のデコード結果を制御信号86または87へ出力する。
【0065】各サイクルにおいて、そのサイクルで実行
されない演算命令フィールドをデコードした命令デコー
ダ86または87に対応する出力制御部102または1
03は、デコード結果を無視して無効演算を指示する制
御信号を出力する。2演算命令の逐次実行において、F
Mデコーダ101がフォーマットフィールドをデコード
して、1サイクル目に実行される演算命令フィールドを
いずれの命令デコーダでデコードするかを決定して指示
する。また、上述した図示しないデコーダが2サイクル
目に実行される演算命令フィールドをプリデコードし
て、2サイクル目に実行される演算命令フィールドをい
ずれの命令デコーダでデコードするかを決定して指示す
る。
されない演算命令フィールドをデコードした命令デコー
ダ86または87に対応する出力制御部102または1
03は、デコード結果を無視して無効演算を指示する制
御信号を出力する。2演算命令の逐次実行において、F
Mデコーダ101がフォーマットフィールドをデコード
して、1サイクル目に実行される演算命令フィールドを
いずれの命令デコーダでデコードするかを決定して指示
する。また、上述した図示しないデコーダが2サイクル
目に実行される演算命令フィールドをプリデコードし
て、2サイクル目に実行される演算命令フィールドをい
ずれの命令デコーダでデコードするかを決定して指示す
る。
【0066】たとえば、命令デコーダ86および87
が、フォーマットフィールド10および11が“01”
であり、演算命令フィールド12にメモリユニット82
におけるメモリアクセス演算が指定され、演算命令フィ
ールド13に整数演算ユニット83における整数演算が
指定された命令語をデコードする場合について説明す
る。フィールド抽出部100は各フィールドを抽出し、
フォーマットフィールド10および11をFMデコーダ
101へ出力し、演算命令フィールド12を命令デコー
ダ86へ出力し、演算命令フィールド13を命令デコー
ダ87へ出力する。
が、フォーマットフィールド10および11が“01”
であり、演算命令フィールド12にメモリユニット82
におけるメモリアクセス演算が指定され、演算命令フィ
ールド13に整数演算ユニット83における整数演算が
指定された命令語をデコードする場合について説明す
る。フィールド抽出部100は各フィールドを抽出し、
フォーマットフィールド10および11をFMデコーダ
101へ出力し、演算命令フィールド12を命令デコー
ダ86へ出力し、演算命令フィールド13を命令デコー
ダ87へ出力する。
【0067】FMデコーダ101によるデコード結果が
2演算命令の逐次実行を示しているため、出力制御部1
02および103は2サイクルに分けて処理を行う。ま
た、FMデコーダ101によるデコード結果が1サイク
ル目に演算命令フィールド12を実行し、2サイクル目
に演算命令フィールド13を実行することを示してい
る。したがって、1サイクル目に命令デコーダ86が演
算命令フィールド12をデコードし、出力制御部102
がそのデコード結果を制御信号88に出力し、出力制御
部103が無効演算を示す制御信号89を出力する。ま
た、2サイクル目に命令デコーダ87が演算命令フィー
ルド13をデコードし、出力制御部103がそのデコー
ド結果を制御信号89に出力し、出力制御部102が無
効演算を示す制御信号88を出力する。
2演算命令の逐次実行を示しているため、出力制御部1
02および103は2サイクルに分けて処理を行う。ま
た、FMデコーダ101によるデコード結果が1サイク
ル目に演算命令フィールド12を実行し、2サイクル目
に演算命令フィールド13を実行することを示してい
る。したがって、1サイクル目に命令デコーダ86が演
算命令フィールド12をデコードし、出力制御部102
がそのデコード結果を制御信号88に出力し、出力制御
部103が無効演算を示す制御信号89を出力する。ま
た、2サイクル目に命令デコーダ87が演算命令フィー
ルド13をデコードし、出力制御部103がそのデコー
ド結果を制御信号89に出力し、出力制御部102が無
効演算を示す制御信号88を出力する。
【0068】また、出力制御部102および103は、
メモリユニット82から出力される分岐先演算命令指定
信号99にしたがって、逐次実行の場合に出力する制御
信号88および89の内容を制御する。分岐先演算命令
指定信号99が“1”の場合、すなわち逐次実行におい
て2番目に実行される演算命令に対する分岐が実行され
た場合、出力制御部102または103は分岐先の演算
命令に先行して実行される演算命令(逐次実行において
1番目に実行される演算命令)のデコード結果を無視し
て、無効演算を示す制御信号88または89を出力す
る。
メモリユニット82から出力される分岐先演算命令指定
信号99にしたがって、逐次実行の場合に出力する制御
信号88および89の内容を制御する。分岐先演算命令
指定信号99が“1”の場合、すなわち逐次実行におい
て2番目に実行される演算命令に対する分岐が実行され
た場合、出力制御部102または103は分岐先の演算
命令に先行して実行される演算命令(逐次実行において
1番目に実行される演算命令)のデコード結果を無視し
て、無効演算を示す制御信号88または89を出力す
る。
【0069】たとえば、フォーマットフィールド10お
よび11が“01”であり、演算命令フィールド12に
メモリユニット82におけるメモリアクセス演算が指定
され、演算命令フィールド13に整数演算ユニット83
における整数演算が指定された命令語中の整数演算に対
する分岐命令が実行された場合について説明する。命令
語自体は上述したものと同じであるが、分岐先演算命令
指定信号99が“1”となっているため、出力制御部1
02は1サイクル目において、命令デコーダ86から出
力される演算命令フィールド12(分岐先の演算命令で
ある整数演算に先行して実行されるメモリアクセス演
算)のデコード結果を無視し、無効演算を示す制御信号
88を出力する。また、出力制御部103は2サイクル
目においては通常の処理、すなわち命令デコーダ87か
ら出力される演算命令フィールド13(分岐先の演算命
令である整数演算)のデコード結果を制御信号89に出
力する。その結果、分岐先の命令語中で実行される演算
命令は整数演算命令のみとなり、整数演算命令に正しく
分岐することになる。
よび11が“01”であり、演算命令フィールド12に
メモリユニット82におけるメモリアクセス演算が指定
され、演算命令フィールド13に整数演算ユニット83
における整数演算が指定された命令語中の整数演算に対
する分岐命令が実行された場合について説明する。命令
語自体は上述したものと同じであるが、分岐先演算命令
指定信号99が“1”となっているため、出力制御部1
02は1サイクル目において、命令デコーダ86から出
力される演算命令フィールド12(分岐先の演算命令で
ある整数演算に先行して実行されるメモリアクセス演
算)のデコード結果を無視し、無効演算を示す制御信号
88を出力する。また、出力制御部103は2サイクル
目においては通常の処理、すなわち命令デコーダ87か
ら出力される演算命令フィールド13(分岐先の演算命
令である整数演算)のデコード結果を制御信号89に出
力する。その結果、分岐先の命令語中で実行される演算
命令は整数演算命令のみとなり、整数演算命令に正しく
分岐することになる。
【0070】出力制御部102および103から出力さ
れる制御信号88および89は、制御回路90へ入力さ
れる。制御回路90は、出力制御部102から出力され
る制御信号88に従い、メモリユニット82内のメモリ
制御部91、PC制御部92、シフタ93およびALU
94を制御して整数演算およびメモリアクセス演算を実
行する。また、制御回路90は、出力制御部103から
出力される制御信号89に従い、整数演算ユニット83
内の乗算器95、ALU96およびシフタ97を制御し
て整数演算を実行する。
れる制御信号88および89は、制御回路90へ入力さ
れる。制御回路90は、出力制御部102から出力され
る制御信号88に従い、メモリユニット82内のメモリ
制御部91、PC制御部92、シフタ93およびALU
94を制御して整数演算およびメモリアクセス演算を実
行する。また、制御回路90は、出力制御部103から
出力される制御信号89に従い、整数演算ユニット83
内の乗算器95、ALU96およびシフタ97を制御し
て整数演算を実行する。
【0071】FMデコーダ101のデコード結果の一部
は、メモリユニット82のメモリ制御部91にも出力さ
れる。メモリ制御部91は、FMデコーダ101のデコ
ード結果に基づいて、演算命令の並列実行および逐次実
行を判別し、次の命令コードのフェッチのタイミングを
制御する。たとえば、FMデコーダ101のデコード結
果が2つの演算命令の逐次実行を示すものであれば、メ
モリ制御部91はIDバスに出力される次の命令コード
を2クロックサイクルの間保持し、その間に上述したよ
うに出力制御部102および103が制御される。この
ようにして、出力制御部102および103は、クロッ
クサイクル毎に演算命令フィールドが有効か否かを判定
し、有効な場合には命令デコーダから出力されるデコー
ド結果を制御信号に出力し、無効である場合には無効演
算を示す制御信号を出力する。
は、メモリユニット82のメモリ制御部91にも出力さ
れる。メモリ制御部91は、FMデコーダ101のデコ
ード結果に基づいて、演算命令の並列実行および逐次実
行を判別し、次の命令コードのフェッチのタイミングを
制御する。たとえば、FMデコーダ101のデコード結
果が2つの演算命令の逐次実行を示すものであれば、メ
モリ制御部91はIDバスに出力される次の命令コード
を2クロックサイクルの間保持し、その間に上述したよ
うに出力制御部102および103が制御される。この
ようにして、出力制御部102および103は、クロッ
クサイクル毎に演算命令フィールドが有効か否かを判定
し、有効な場合には命令デコーダから出力されるデコー
ド結果を制御信号に出力し、無効である場合には無効演
算を示す制御信号を出力する。
【0072】図8は、PC制御部92の概略構成を示す
ブロック図である。PC制御部92は、命令アドレス
(IA)レジスタ110と、実行中の命令のPC値を保
持する実行ステージPC(EPC)113と、次に実行
する命令のPC値を保持する次命令PC(NPC)11
4と、PC値をバックアップするバックアップPC(B
PC)118と、分岐先のアドレスを生成する分岐先ア
ドレス生成回路119と、分岐先演算命令制御信号99
を出力する演算命令指定レジスタ120と、分岐先演算
命令指定フィールド37の値を保持するレジスタ122
と、インクリメンタ112および116と、ラッチ11
1,115,117および121とを含む。
ブロック図である。PC制御部92は、命令アドレス
(IA)レジスタ110と、実行中の命令のPC値を保
持する実行ステージPC(EPC)113と、次に実行
する命令のPC値を保持する次命令PC(NPC)11
4と、PC値をバックアップするバックアップPC(B
PC)118と、分岐先のアドレスを生成する分岐先ア
ドレス生成回路119と、分岐先演算命令制御信号99
を出力する演算命令指定レジスタ120と、分岐先演算
命令指定フィールド37の値を保持するレジスタ122
と、インクリメンタ112および116と、ラッチ11
1,115,117および121とを含む。
【0073】IAレジスタ110は、次にフェッチする
命令語のアドレスを保持し、IAバスを介して命令RA
M81へ出力する。引き続き後続の命令語をフェッチす
る場合には、ラッチ111によって保持されるIAレジ
スタ110のアドレス値がインクリメンタ112によっ
て“8”だけインクリメントされ、IAレジスタ110
に書き戻される。分岐命令によってシーケンスが切り替
わる場合には、IAレジスタ110はJAバスを介して
転送される分岐先アドレスを取り込む。
命令語のアドレスを保持し、IAバスを介して命令RA
M81へ出力する。引き続き後続の命令語をフェッチす
る場合には、ラッチ111によって保持されるIAレジ
スタ110のアドレス値がインクリメンタ112によっ
て“8”だけインクリメントされ、IAレジスタ110
に書き戻される。分岐命令によってシーケンスが切り替
わる場合には、IAレジスタ110はJAバスを介して
転送される分岐先アドレスを取り込む。
【0074】NPC114は、次に実行する命令のPC
値を保持する。NPC114は、実行段階で分岐が起こ
った場合にJAバスを介して分岐先アドレスを取り込
む。それ以外の場合には、ラッチ115によって保持さ
れるNPC114のアドレス値がインクリメンタ116
によって“8”だけインクリメントされ、NPC114
に書き戻される。
値を保持する。NPC114は、実行段階で分岐が起こ
った場合にJAバスを介して分岐先アドレスを取り込
む。それ以外の場合には、ラッチ115によって保持さ
れるNPC114のアドレス値がインクリメンタ116
によって“8”だけインクリメントされ、NPC114
に書き戻される。
【0075】EPC113は、次の命令が実行状態に入
る場合に、ラッチ115によって保持されるNPC11
4のアドレス値を取り込んで、実行中の命令のPC値と
して保持する。
る場合に、ラッチ115によって保持されるNPC11
4のアドレス値を取り込んで、実行中の命令のPC値と
して保持する。
【0076】サブルーチン分岐命令の場合には、ラッチ
115に保持されるアドレス値が戻り先アドレスとして
D1バスに出力され、汎用レジスタ84中のリンクレジ
スタR62に書込まれる。また、BPC118は制御レ
ジスタ41のCR2(55)に対応し、例外や割り込み
等が検出された場合にラッチ117に保持されるEPC
113のアドレス値がBPC118へ転送される。ま
た、BPC118は、D1バスのアドレス値を入力する
入力ポートとS3バスへアドレス値を出力する出力ポー
トとを有しており、汎用レジスタ84を用いてBPC1
18のアドレス値の退避および復帰を行うことができ
る。
115に保持されるアドレス値が戻り先アドレスとして
D1バスに出力され、汎用レジスタ84中のリンクレジ
スタR62に書込まれる。また、BPC118は制御レ
ジスタ41のCR2(55)に対応し、例外や割り込み
等が検出された場合にラッチ117に保持されるEPC
113のアドレス値がBPC118へ転送される。ま
た、BPC118は、D1バスのアドレス値を入力する
入力ポートとS3バスへアドレス値を出力する出力ポー
トとを有しており、汎用レジスタ84を用いてBPC1
18のアドレス値の退避および復帰を行うことができ
る。
【0077】分岐先アドレス生成回路119は、実行段
階で分岐が起こった場合には、分岐命令で指定されたア
ドレッシングモードに応じて2つの入力を組み合わせて
分岐先アドレスの計算を行ってJAバスへ出力する。分
岐先アドレス生成回路119の2系統の入力のうち、一
方にはEPC113が保持するアドレス値またはBPC
118が保持するアドレス値の上位29ビット、または
“0”が入力される。もう一方の入力には、汎用レジス
タ84から読み出されたレジスタ値の上位29ビット、
命令デコードユニット80内のフィールド抽出部100
によって抽出された演算命令フォーマット22(図3
(c)を参照)のディスプレースメント36、演算命令
フォーマット23(図3(d)を参照)のフィールド3
8および“0”のうちいずれかが入力される。
階で分岐が起こった場合には、分岐命令で指定されたア
ドレッシングモードに応じて2つの入力を組み合わせて
分岐先アドレスの計算を行ってJAバスへ出力する。分
岐先アドレス生成回路119の2系統の入力のうち、一
方にはEPC113が保持するアドレス値またはBPC
118が保持するアドレス値の上位29ビット、または
“0”が入力される。もう一方の入力には、汎用レジス
タ84から読み出されたレジスタ値の上位29ビット、
命令デコードユニット80内のフィールド抽出部100
によって抽出された演算命令フォーマット22(図3
(c)を参照)のディスプレースメント36、演算命令
フォーマット23(図3(d)を参照)のフィールド3
8および“0”のうちいずれかが入力される。
【0078】分岐先アドレス生成回路119は、演算命
令フォーマット23のフィールド38の値、汎用レジス
タ84から読み出されたレジスタ値の上位29ビット、
EPC113の上位29ビットおよびBPC118の上
位29ビットに対して、下位3ビットに“0”を拡張し
てから分岐先アドレスの計算に用いる。また、分岐先ア
ドレス生成回路119は、演算命令フォーマット22の
ディスプレースメント36に対して、下位3ビットに
“0”を拡張し、上位12ビットに符号拡張またはゼロ
拡張してから分岐先アドレスの計算に用いる。
令フォーマット23のフィールド38の値、汎用レジス
タ84から読み出されたレジスタ値の上位29ビット、
EPC113の上位29ビットおよびBPC118の上
位29ビットに対して、下位3ビットに“0”を拡張し
てから分岐先アドレスの計算に用いる。また、分岐先ア
ドレス生成回路119は、演算命令フォーマット22の
ディスプレースメント36に対して、下位3ビットに
“0”を拡張し、上位12ビットに符号拡張またはゼロ
拡張してから分岐先アドレスの計算に用いる。
【0079】レジスタ122は、命令デコードユニット
80のフィールド抽出部100が分岐命令の演算命令コ
ードから抽出した分岐先演算命令指定フィールド37の
値を取り込み保持する。
80のフィールド抽出部100が分岐命令の演算命令コ
ードから抽出した分岐先演算命令指定フィールド37の
値を取り込み保持する。
【0080】演算命令指定レジスタ120は、実行段階
で分岐が起こった場合にはラッチ121に保持されたレ
ジスタ122の値、あるいはその分岐先がレジスタ間接
アドレッシングで指定されている場合には、汎用レジス
タ84から読み出したレジスタ値の最上位から30ビッ
ト目の値を取り込み、分岐先演算命令制御信号99とし
て命令デコードユニット80へ出力する。また、演算命
令指定レジスタ120は、実行段階で分岐が起こらなか
った場合または分岐命令以外の演算命令が実行された場
合には“0”を取り込み、分岐先演算命令制御信号99
として命令デコードユニット80へ出力する。
で分岐が起こった場合にはラッチ121に保持されたレ
ジスタ122の値、あるいはその分岐先がレジスタ間接
アドレッシングで指定されている場合には、汎用レジス
タ84から読み出したレジスタ値の最上位から30ビッ
ト目の値を取り込み、分岐先演算命令制御信号99とし
て命令デコードユニット80へ出力する。また、演算命
令指定レジスタ120は、実行段階で分岐が起こらなか
った場合または分岐命令以外の演算命令が実行された場
合には“0”を取り込み、分岐先演算命令制御信号99
として命令デコードユニット80へ出力する。
【0081】本実施の形態においては、命令長が8バイ
トの固定長であり、1つまたは2つの演算命令を含んだ
命令語を実行するVLIW方式プロセッサについて説明
したが、たとえば命令長が16バイトの固定長であり、
4つの演算命令を含んだ命令語を実行するVLIW方式
プロセッサにおいても分岐命令中の分岐先演算命令指定
フィールド37を2ビットにすることによって適用可能
である。このように、分岐先演算命令指定フィールド3
7のビット幅を変更することによって、命令語に含まれ
る演算命令の数がいかなるVLIW方式プロセッサであ
っても適用することができる。
トの固定長であり、1つまたは2つの演算命令を含んだ
命令語を実行するVLIW方式プロセッサについて説明
したが、たとえば命令長が16バイトの固定長であり、
4つの演算命令を含んだ命令語を実行するVLIW方式
プロセッサにおいても分岐命令中の分岐先演算命令指定
フィールド37を2ビットにすることによって適用可能
である。このように、分岐先演算命令指定フィールド3
7のビット幅を変更することによって、命令語に含まれ
る演算命令の数がいかなるVLIW方式プロセッサであ
っても適用することができる。
【0082】以上説明したように、本実施の形態におけ
るVLIW方式プロセッサによれば、命令語中のいずれ
の演算命令への分岐であっても正しく実行することがで
き、複数の演算命令を1つのVLIW命令にエンコード
する際に分岐先として指定する演算命令を命令語境界に
整地する必要がなくなる。したがって、演算命令の整地
に必要であった無駄な無効命令(NOP命令)を命令コ
ードに挿入する必要がなくなり、命令コードの圧縮効率
を上げることが可能となった。 (実施の形態2)上述した実施の形態1におけるVLI
W方式プロセッサにおいて、PC制御部92内のNPC
114およびEPC113が保持するPC値は、常に命
令語境界のアドレスである。すなわち、逐次実行におい
て2番目以降に実行される演算命令を実行している場合
であっても、NPC114およびEPC113が保持し
ているPC値は1番目の演算命令を実行している時のP
C値と同じである。
るVLIW方式プロセッサによれば、命令語中のいずれ
の演算命令への分岐であっても正しく実行することがで
き、複数の演算命令を1つのVLIW命令にエンコード
する際に分岐先として指定する演算命令を命令語境界に
整地する必要がなくなる。したがって、演算命令の整地
に必要であった無駄な無効命令(NOP命令)を命令コ
ードに挿入する必要がなくなり、命令コードの圧縮効率
を上げることが可能となった。 (実施の形態2)上述した実施の形態1におけるVLI
W方式プロセッサにおいて、PC制御部92内のNPC
114およびEPC113が保持するPC値は、常に命
令語境界のアドレスである。すなわち、逐次実行におい
て2番目以降に実行される演算命令を実行している場合
であっても、NPC114およびEPC113が保持し
ているPC値は1番目の演算命令を実行している時のP
C値と同じである。
【0083】しかし、逐次実行の途中で例外または割り
込み(EIT)が検出された場合、たとえば2番目の演
算命令が実行されている最中にEITが検出された場合
であってもBPC118に退避されるPC値は1番目の
演算命令のPC値となる。したがって、EITからの復
帰時に再度1番目の演算命令が実行されることとなり、
命令シーケンスに異常が発生する。そのため、従来では
逐次実行時のEIT検出を逐次実行の最初のサイクルに
制限している。すなわち、逐次実行の途中でEITが発
生した場合であっても、次の命令語の実行までそのEI
T検出が待たされることになり、EITのレーテンシが
大きくなる。本発明の実施の形態2におけるVLIW方
式プロセッサは、この問題点を解決するものである。
込み(EIT)が検出された場合、たとえば2番目の演
算命令が実行されている最中にEITが検出された場合
であってもBPC118に退避されるPC値は1番目の
演算命令のPC値となる。したがって、EITからの復
帰時に再度1番目の演算命令が実行されることとなり、
命令シーケンスに異常が発生する。そのため、従来では
逐次実行時のEIT検出を逐次実行の最初のサイクルに
制限している。すなわち、逐次実行の途中でEITが発
生した場合であっても、次の命令語の実行までそのEI
T検出が待たされることになり、EITのレーテンシが
大きくなる。本発明の実施の形態2におけるVLIW方
式プロセッサは、この問題点を解決するものである。
【0084】本発明の実施の形態2におけるVLIW方
式プロセッサは、実施の形態1におけるVLIW方式プ
ロセッサの命令デコードユニットおよびPC制御部の構
成が異なる点のみが異なる。したがって、重複する構成
および機能の詳細な説明は繰返さない。なお、本実施の
形態における命令デコードユニットおよびPC制御部の
参照符号をそれぞれ80aおよび92aとして説明す
る。
式プロセッサは、実施の形態1におけるVLIW方式プ
ロセッサの命令デコードユニットおよびPC制御部の構
成が異なる点のみが異なる。したがって、重複する構成
および機能の詳細な説明は繰返さない。なお、本実施の
形態における命令デコードユニットおよびPC制御部の
参照符号をそれぞれ80aおよび92aとして説明す
る。
【0085】図9は、本実施の形態におけるVLIW方
式プロセッサの命令デコードユニット80aの概略構成
を説明するためのブロック図である。この命令デコード
ユニット80aは、図7に示す命令デコードユニット8
0と比較して、演算命令計数部130が付加された点の
みが異なる。したがって、重複する構成および機能の詳
細な説明は繰返さない。
式プロセッサの命令デコードユニット80aの概略構成
を説明するためのブロック図である。この命令デコード
ユニット80aは、図7に示す命令デコードユニット8
0と比較して、演算命令計数部130が付加された点の
みが異なる。したがって、重複する構成および機能の詳
細な説明は繰返さない。
【0086】演算命令計数部130は、FMデコーダ1
01のデコード結果が逐次実行の場合には、逐次実行中
に実行した演算命令の数をカウントする。演算命令計数
部130は、新たな命令がフェッチされる度にカウント
値を“0”にリセットする。そして、演算命令計数部1
30は、FMデコーダ101のデコード結果が逐次実行
の場合にのみ、演算命令をデコードする毎に“1”だけ
インクリメントする。演算命令計数部130によって計
数された値は、メモリユニット82へ出力されて例外処
理時のPC値の退避復帰に用いられる。
01のデコード結果が逐次実行の場合には、逐次実行中
に実行した演算命令の数をカウントする。演算命令計数
部130は、新たな命令がフェッチされる度にカウント
値を“0”にリセットする。そして、演算命令計数部1
30は、FMデコーダ101のデコード結果が逐次実行
の場合にのみ、演算命令をデコードする毎に“1”だけ
インクリメントする。演算命令計数部130によって計
数された値は、メモリユニット82へ出力されて例外処
理時のPC値の退避復帰に用いられる。
【0087】図10は、本実施の形態におけるVLIW
方式プロセッサのPC制御部92aの概略構成を説明す
るためのブロック図である。このPC制御部92aは、
図8に示すPC制御部92と比較して、演算命令計数部
130によって計数された値が保持される演算命令数レ
ジスタ135およびラッチ136が付加された点と、演
算命令指定レジスタ120への入力選択経路にBPC1
18の最上位から30ビット目の値を取り込む経路が追
加された点のみが異なる。したがって、重複する構成お
よび機能の詳細な説明は繰返さない。
方式プロセッサのPC制御部92aの概略構成を説明す
るためのブロック図である。このPC制御部92aは、
図8に示すPC制御部92と比較して、演算命令計数部
130によって計数された値が保持される演算命令数レ
ジスタ135およびラッチ136が付加された点と、演
算命令指定レジスタ120への入力選択経路にBPC1
18の最上位から30ビット目の値を取り込む経路が追
加された点のみが異なる。したがって、重複する構成お
よび機能の詳細な説明は繰返さない。
【0088】演算命令数レジスタ135は、演算命令計
数部130によって計数された値を取り込み、逐次実行
において現在実行中の演算命令が何番目の命令であるか
の情報をBPC118へ出力する。BPC118は、制
御レジスタ41のCR2(55)に対応しており、例外
や割り込み(EIT)が検出された場合、BPC118
の上位29ビットにラッチ117によって保持されるE
PC113の上位29ビットが取り込まれ、BPC11
8の最上位から30ビット目にラッチ136によって保
持される演算命令数レジスタ135の値が取り込まれ
る。また、BPCの下位2ビットは常に“0”となる。
このように、BPC118は、EITが検出された時に
実行中であった演算命令のアドレスを保持することが可
能になる。EITからの復帰の際には、BPC118の
上位29ビットの値が分岐先アドレス生成回路119を
介してIA110およびNPC114に送られ、BPC
118の最上位から30ビット目の値が演算命令指定レ
ジスタ120に取り込まれる。
数部130によって計数された値を取り込み、逐次実行
において現在実行中の演算命令が何番目の命令であるか
の情報をBPC118へ出力する。BPC118は、制
御レジスタ41のCR2(55)に対応しており、例外
や割り込み(EIT)が検出された場合、BPC118
の上位29ビットにラッチ117によって保持されるE
PC113の上位29ビットが取り込まれ、BPC11
8の最上位から30ビット目にラッチ136によって保
持される演算命令数レジスタ135の値が取り込まれ
る。また、BPCの下位2ビットは常に“0”となる。
このように、BPC118は、EITが検出された時に
実行中であった演算命令のアドレスを保持することが可
能になる。EITからの復帰の際には、BPC118の
上位29ビットの値が分岐先アドレス生成回路119を
介してIA110およびNPC114に送られ、BPC
118の最上位から30ビット目の値が演算命令指定レ
ジスタ120に取り込まれる。
【0089】また、BPC118は、D1バスを介して
アドレス値を入力する入力ポートとS3バスを介してア
ドレス値を出力する出力ポートとを有しており、必要に
応じて汎用レジスタとの間でBPC値の退避復帰を行
う。
アドレス値を入力する入力ポートとS3バスを介してア
ドレス値を出力する出力ポートとを有しており、必要に
応じて汎用レジスタとの間でBPC値の退避復帰を行
う。
【0090】また、本実施の形態におけるVLIW方式
プロセッサにおいて、サブルーチン分岐命令が実行され
た場合に、戻り先としてD1バスの上位29ビットにラ
ッチ115に保持されるPC値の上位29ビットが出力
され、D1バスの最上位から30ビット目に演算命令計
数部130によって保持される値が出力されて汎用レジ
スタ84中のリンクレジスタR62に書き込まれる。そ
の結果、逐次実行の途中においてサブルーチン分岐命令
を実行することが可能となり、命令コードの圧縮効率を
向上させることが可能となる。
プロセッサにおいて、サブルーチン分岐命令が実行され
た場合に、戻り先としてD1バスの上位29ビットにラ
ッチ115に保持されるPC値の上位29ビットが出力
され、D1バスの最上位から30ビット目に演算命令計
数部130によって保持される値が出力されて汎用レジ
スタ84中のリンクレジスタR62に書き込まれる。そ
の結果、逐次実行の途中においてサブルーチン分岐命令
を実行することが可能となり、命令コードの圧縮効率を
向上させることが可能となる。
【0091】なお、本実施の形態においては、命令長が
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、それ以外の構成、たとえば命令長が4バ
イトの固定長であり、1つまたは2つの演算命令を含ん
だVLIW方式プロセッサにおいても本実施の形態を適
用することが可能である。すなわち、BPC118の上
位30ビットにEPC113の上位30ビットが取り込
まれ、BPC118の最上位から31ビット目に演算命
令数レジスタ135の値が取り込まれるようにすれば、
本実施の形態を適用することが可能となる。
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、それ以外の構成、たとえば命令長が4バ
イトの固定長であり、1つまたは2つの演算命令を含ん
だVLIW方式プロセッサにおいても本実施の形態を適
用することが可能である。すなわち、BPC118の上
位30ビットにEPC113の上位30ビットが取り込
まれ、BPC118の最上位から31ビット目に演算命
令数レジスタ135の値が取り込まれるようにすれば、
本実施の形態を適用することが可能となる。
【0092】以上説明したように、本実施の形態におけ
るVLIW方式プロセッサによれば、BPC118が演
算命令毎のアドレスを保持するので、逐次実行の途中で
あってもEITを受け付けることが可能となり、EIT
のレーテンシを小さくすることが可能となる。また、演
算命令毎のアドレスをリンクレジスタに書き込むことが
できるため、逐次実行途中においてサブルーチン分岐命
令を実行することが可能となり、命令コードの圧縮効率
を向上させることが可能となる。 (実施の形態3)上述した実施の形態1におけるVLI
W方式プロセッサにおいて、命令語に含まれる2つの短
型演算命令の間にデータの干渉や演算器の競合という問
題がない場合、その2つの演算命令を並列実行すること
が可能である。さらに、その2つの演算命令が2つの演
算ユニット(メモリユニット82および整数演算ユニッ
ト83)のいずれにおいても実行可能であれば、2つの
演算命令を演算命令フィールド12および13のいずれ
にも配置することが可能である。
るVLIW方式プロセッサによれば、BPC118が演
算命令毎のアドレスを保持するので、逐次実行の途中で
あってもEITを受け付けることが可能となり、EIT
のレーテンシを小さくすることが可能となる。また、演
算命令毎のアドレスをリンクレジスタに書き込むことが
できるため、逐次実行途中においてサブルーチン分岐命
令を実行することが可能となり、命令コードの圧縮効率
を向上させることが可能となる。 (実施の形態3)上述した実施の形態1におけるVLI
W方式プロセッサにおいて、命令語に含まれる2つの短
型演算命令の間にデータの干渉や演算器の競合という問
題がない場合、その2つの演算命令を並列実行すること
が可能である。さらに、その2つの演算命令が2つの演
算ユニット(メモリユニット82および整数演算ユニッ
ト83)のいずれにおいても実行可能であれば、2つの
演算命令を演算命令フィールド12および13のいずれ
にも配置することが可能である。
【0093】しかし、2つの演算命令のうち一方の演算
命令が分岐先に指定されている場合に、その2つの演算
命令の間には実行順序の制限が加わるため並列実行が行
えなくなる。すなわち、最初に実行すべき演算命令が分
岐先に指定されており、その演算命令が演算命令フィー
ルド13に配置された場合、演算命令単位で分岐が可能
な分岐命令によって演算命令フィールド13の演算命令
への分岐が実行されると、演算命令フィールド12に配
置された2番目に実行されるべき演算命令が実行されな
くなり、命令シーケンスに異常が発生する。そのため、
分岐命令の分岐先として指定された演算命令は、無効演
算を除いて必ず逐次実行されなければならない。すなわ
ち、並列実行が指定された命令語において、演算命令フ
ィールド13に配置された演算命令に対する分岐が実行
されてはならない。
命令が分岐先に指定されている場合に、その2つの演算
命令の間には実行順序の制限が加わるため並列実行が行
えなくなる。すなわち、最初に実行すべき演算命令が分
岐先に指定されており、その演算命令が演算命令フィー
ルド13に配置された場合、演算命令単位で分岐が可能
な分岐命令によって演算命令フィールド13の演算命令
への分岐が実行されると、演算命令フィールド12に配
置された2番目に実行されるべき演算命令が実行されな
くなり、命令シーケンスに異常が発生する。そのため、
分岐命令の分岐先として指定された演算命令は、無効演
算を除いて必ず逐次実行されなければならない。すなわ
ち、並列実行が指定された命令語において、演算命令フ
ィールド13に配置された演算命令に対する分岐が実行
されてはならない。
【0094】しかし、プログラム作成時のミス等によっ
て分岐先の指定を誤り、並列実行が指定された命令語に
おいて演算命令フィールド13の演算命令に対して分岐
命令を実行したり、1演算命令に対して存在しない演算
命令フィールド13を指定した分岐命令を実行する場合
がある。本発明の実施の形態3におけるVLIW方式プ
ロセッサは、この問題点を解決するものである。
て分岐先の指定を誤り、並列実行が指定された命令語に
おいて演算命令フィールド13の演算命令に対して分岐
命令を実行したり、1演算命令に対して存在しない演算
命令フィールド13を指定した分岐命令を実行する場合
がある。本発明の実施の形態3におけるVLIW方式プ
ロセッサは、この問題点を解決するものである。
【0095】本発明の実施の形態3におけるVLIW方
式プロセッサは、実施の形態1におけるVLIW方式プ
ロセッサの命令デコードユニットの構成が異なる点のみ
が異なる。したがって、重複する構成および機能の詳細
な説明は繰返さない。なお、本実施の形態における命令
デコードユニットの参照符号を80bとして説明する。
式プロセッサは、実施の形態1におけるVLIW方式プ
ロセッサの命令デコードユニットの構成が異なる点のみ
が異なる。したがって、重複する構成および機能の詳細
な説明は繰返さない。なお、本実施の形態における命令
デコードユニットの参照符号を80bとして説明する。
【0096】図11は、本実施の形態におけるVLIW
方式プロセッサの命令デコードユニット80bの概略構
成を説明するためのブロック図である。この命令デコー
ドユニット80bは、図7に示す命令デコードユニット
80と比較して、例外検出回路138が付加された点の
みが異なる。したがって、重複する構成および機能の詳
細な説明は繰返さない。
方式プロセッサの命令デコードユニット80bの概略構
成を説明するためのブロック図である。この命令デコー
ドユニット80bは、図7に示す命令デコードユニット
80と比較して、例外検出回路138が付加された点の
みが異なる。したがって、重複する構成および機能の詳
細な説明は繰返さない。
【0097】例外検出回路138は、FMデコーダ10
1によるデコード結果と分岐先演算命令指定信号99と
を入力し、FMデコーダ101の出力が“00”(並列
実行)または“11”(1演算命令)であり、かつ分岐
先演算命令指定信号99の値が“1”の場合に例外を発
生させる。
1によるデコード結果と分岐先演算命令指定信号99と
を入力し、FMデコーダ101の出力が“00”(並列
実行)または“11”(1演算命令)であり、かつ分岐
先演算命令指定信号99の値が“1”の場合に例外を発
生させる。
【0098】なお、本実施の形態においては、命令長が
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、それ以外の構成、たとえば命令長が16
バイトの固定長であり、命令語に4つの演算命令を含ん
だVLIW方式プロセッサにおいても本実施の形態を適
用することが可能である。すなわち、分岐先演算命令指
定フィールド37を2ビットにし、それに応じて例外検
出回路の構成を変更することによって、本実施の形態を
適用することが可能となる。
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、それ以外の構成、たとえば命令長が16
バイトの固定長であり、命令語に4つの演算命令を含ん
だVLIW方式プロセッサにおいても本実施の形態を適
用することが可能である。すなわち、分岐先演算命令指
定フィールド37を2ビットにし、それに応じて例外検
出回路の構成を変更することによって、本実施の形態を
適用することが可能となる。
【0099】以上説明したように、本実施の形態におけ
るVLIW方式プロセッサによれば、並列実行が指定さ
れた命令語において演算命令フィールド13の演算命令
に対して分岐命令を実行したり、1演算命令に対して存
在しない演算命令フィールド13を指定した分岐命令を
実行した場合に、例外を発生させるようにしたので、プ
ログラマがプログラムのシーケンスを中断させてプログ
ラムのデバッグを実行することが可能となり、ソフトウ
ェア開発を容易にすることが可能となる。 (実施の形態4)上述した実施の形態1におけるVLI
W方式プロセッサにおいて、逐次実行で2番目以降に実
行されるべき演算命令への分岐が実行された場合、1番
目に実行されるべき演算命令が内部的に無効演算に変換
されて分岐先の演算命令との逐次実行が行なわれる。し
かし、分岐先の命令語の実行に2サイクルを要すること
になり、実行時間が遅くなるという問題がある。本発明
の実施の形態4におけるVLIW方式プロセッサは、こ
の問題点を解決するものである。
るVLIW方式プロセッサによれば、並列実行が指定さ
れた命令語において演算命令フィールド13の演算命令
に対して分岐命令を実行したり、1演算命令に対して存
在しない演算命令フィールド13を指定した分岐命令を
実行した場合に、例外を発生させるようにしたので、プ
ログラマがプログラムのシーケンスを中断させてプログ
ラムのデバッグを実行することが可能となり、ソフトウ
ェア開発を容易にすることが可能となる。 (実施の形態4)上述した実施の形態1におけるVLI
W方式プロセッサにおいて、逐次実行で2番目以降に実
行されるべき演算命令への分岐が実行された場合、1番
目に実行されるべき演算命令が内部的に無効演算に変換
されて分岐先の演算命令との逐次実行が行なわれる。し
かし、分岐先の命令語の実行に2サイクルを要すること
になり、実行時間が遅くなるという問題がある。本発明
の実施の形態4におけるVLIW方式プロセッサは、こ
の問題点を解決するものである。
【0100】本発明の実施の形態4におけるVLIW方
式プロセッサは、実施の形態1におけるVLIW方式プ
ロセッサの命令デコードユニットの構成が異なる点のみ
が異なる。したがって、重複する構成および機能の詳細
な説明は繰返さない。なお、本実施の形態における命令
デコードユニットの参照符号を80cとして説明する。
式プロセッサは、実施の形態1におけるVLIW方式プ
ロセッサの命令デコードユニットの構成が異なる点のみ
が異なる。したがって、重複する構成および機能の詳細
な説明は繰返さない。なお、本実施の形態における命令
デコードユニットの参照符号を80cとして説明する。
【0101】図12は、本実施の形態におけるVLIW
方式プロセッサの命令デコードユニット80cの概略構
成を説明するためのブロック図である。この命令デコー
ドユニット80cは、図7に示す命令デコードユニット
80と比較して、FMデコーダ140に分岐先演算命令
指定信号99が入力され、FMデコーダの機能が異なる
点のみが異なる。したがって、重複する構成および機能
の詳細な説明は繰返さない。なお、本実施の形態におけ
るFMデコーダの参照符号を140として説明する。
方式プロセッサの命令デコードユニット80cの概略構
成を説明するためのブロック図である。この命令デコー
ドユニット80cは、図7に示す命令デコードユニット
80と比較して、FMデコーダ140に分岐先演算命令
指定信号99が入力され、FMデコーダの機能が異なる
点のみが異なる。したがって、重複する構成および機能
の詳細な説明は繰返さない。なお、本実施の形態におけ
るFMデコーダの参照符号を140として説明する。
【0102】FMデコーダ140は、フォーマットフィ
ールド10および11の値と分岐先演算命令指定信号9
9の値とをデコードし、図1(a)に示す2演算命令の
演算命令フォーマット1と図1(b)に示す1演算命令
の演算命令フォーマット2との区別の他、演算命令の実
行順序を指定する。
ールド10および11の値と分岐先演算命令指定信号9
9の値とをデコードし、図1(a)に示す2演算命令の
演算命令フォーマット1と図1(b)に示す1演算命令
の演算命令フォーマット2との区別の他、演算命令の実
行順序を指定する。
【0103】図13は、FMデコーダ140のデコード
結果に対する処理内容を説明するための図である。FM
デコーダ140は、2ビットのフォーマットフィールド
10および11と、1ビットの分岐先演算命令指定信号
99とを合わせた3ビットをデコードして8種類のデコ
ード結果を出力する。図13において、“FM”はフォ
ーマットフィールド10および11の2ビットを、“1o
ps”は1演算命令を、“2ops”は2演算命令を、“1s
t”はその欄の演算が最初に実行されるべきことを、“2
nd”はその欄の演算が2番目に実行されるべきことをそ
れぞれ示している。また、“---”はその欄の演算が存
在しないことを示している。
結果に対する処理内容を説明するための図である。FM
デコーダ140は、2ビットのフォーマットフィールド
10および11と、1ビットの分岐先演算命令指定信号
99とを合わせた3ビットをデコードして8種類のデコ
ード結果を出力する。図13において、“FM”はフォ
ーマットフィールド10および11の2ビットを、“1o
ps”は1演算命令を、“2ops”は2演算命令を、“1s
t”はその欄の演算が最初に実行されるべきことを、“2
nd”はその欄の演算が2番目に実行されるべきことをそ
れぞれ示している。また、“---”はその欄の演算が存
在しないことを示している。
【0104】フォーマットフィールド10および11の
持つ意味は、図2を用いて説明した通りである。分岐先
演算命令指定信号99が“0”である場合のFMデコー
ダ140のデコード結果は、図2に示すFMデコーダ1
01のデコード結果と同じである。また、分岐先演算命
令指定信号99が“1”である場合、すなわち逐次実行
において2番目に実行されるべき演算命令への分岐が実
行された場合には、2演算命令の並列実行としてデコー
ドする。
持つ意味は、図2を用いて説明した通りである。分岐先
演算命令指定信号99が“0”である場合のFMデコー
ダ140のデコード結果は、図2に示すFMデコーダ1
01のデコード結果と同じである。また、分岐先演算命
令指定信号99が“1”である場合、すなわち逐次実行
において2番目に実行されるべき演算命令への分岐が実
行された場合には、2演算命令の並列実行としてデコー
ドする。
【0105】たとえば、フォーマットフィールド10お
よび11が“01”であり、演算命令フィールド12に
メモリユニット82におけるメモリアクセス演算が指定
され、演算命令フィールド13に整数演算ユニット83
における整数演算が指定された命令語中の整数演算に対
する分岐命令が実行された場合について説明する。FM
デコーダ140は、フォーマットフィールド10および
11と分岐先演算命令指定信号99とをデコードし、並
列実行を示すデコード結果を出力制御部102および1
03へ出力する。FMデコーダ140のデコード結果が
並列実行を示すものであるので、命令デコーダ86およ
び87はそれぞれデコード結果を同時に出力する。ま
た、分岐先演算命令指定信号99が“1”であるため、
出力制御部102は分岐先の演算命令に先行して実行さ
れる演算命令(逐次実行において1番目に実行される演
算命令)のデコード結果を無視して、無効演算を示す制
御信号88を出力する。また、出力制御部103は、命
令デコーダ87から出力される整数演算命令のデコード
結果を制御信号89に出力する。
よび11が“01”であり、演算命令フィールド12に
メモリユニット82におけるメモリアクセス演算が指定
され、演算命令フィールド13に整数演算ユニット83
における整数演算が指定された命令語中の整数演算に対
する分岐命令が実行された場合について説明する。FM
デコーダ140は、フォーマットフィールド10および
11と分岐先演算命令指定信号99とをデコードし、並
列実行を示すデコード結果を出力制御部102および1
03へ出力する。FMデコーダ140のデコード結果が
並列実行を示すものであるので、命令デコーダ86およ
び87はそれぞれデコード結果を同時に出力する。ま
た、分岐先演算命令指定信号99が“1”であるため、
出力制御部102は分岐先の演算命令に先行して実行さ
れる演算命令(逐次実行において1番目に実行される演
算命令)のデコード結果を無視して、無効演算を示す制
御信号88を出力する。また、出力制御部103は、命
令デコーダ87から出力される整数演算命令のデコード
結果を制御信号89に出力する。
【0106】なお、本実施の形態においては、命令長が
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、それ以外の構成、たとえば命令長が16
バイトの固定長であり、命令語に4つの演算命令を含ん
だVLIW方式プロセッサにおいても本実施の形態を適
用することが可能である。すなわち、分岐先演算命令指
定フィールド37を2ビットにし、それに応じてFMデ
コーダの構成を変更することによって、本実施の形態を
適用することが可能となる。
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、それ以外の構成、たとえば命令長が16
バイトの固定長であり、命令語に4つの演算命令を含ん
だVLIW方式プロセッサにおいても本実施の形態を適
用することが可能である。すなわち、分岐先演算命令指
定フィールド37を2ビットにし、それに応じてFMデ
コーダの構成を変更することによって、本実施の形態を
適用することが可能となる。
【0107】以上説明したように、本実施の形態におけ
るVLIW方式プロセッサによれば、逐次実行において
2番目に実行されるべき演算命令への分岐が実行された
場合には、2演算命令の並列実行としてデコードするよ
うにしたので、分岐先の命令語の実行を1サイクルで行
うことができ、命令コードの圧縮効率が向上するととも
に、命令の実行サイクルを短縮することが可能となる。 (実施の形態5)図14は、アセンブリ言語で記述した
プログラムの一例を示す図である。このプログラムは、
図1(a)および図1(b)に示す演算命令フォーマッ
トにエンコードする前の演算命令を示している。図14
に示すプログラムにおいて、加算命令“add.”、減
算命令“sub.”または分岐命令“bra.”の後に
記述されている“s”および“l”はそれぞれ、短型の
演算命令フォーマットおよび長型の演算命令フォーマッ
トを示している。
るVLIW方式プロセッサによれば、逐次実行において
2番目に実行されるべき演算命令への分岐が実行された
場合には、2演算命令の並列実行としてデコードするよ
うにしたので、分岐先の命令語の実行を1サイクルで行
うことができ、命令コードの圧縮効率が向上するととも
に、命令の実行サイクルを短縮することが可能となる。 (実施の形態5)図14は、アセンブリ言語で記述した
プログラムの一例を示す図である。このプログラムは、
図1(a)および図1(b)に示す演算命令フォーマッ
トにエンコードする前の演算命令を示している。図14
に示すプログラムにおいて、加算命令“add.”、減
算命令“sub.”または分岐命令“bra.”の後に
記述されている“s”および“l”はそれぞれ、短型の
演算命令フォーマットおよび長型の演算命令フォーマッ
トを示している。
【0108】まず、従来のVLIW方式プロセッサによ
って実行できるように、図14に示すプログラムをエン
コードする場合について説明する。図15は、分岐変位
Wが1Mバイト以内である場合のエンコードした後のプ
ログラムを示しており、参照符号170で示される“|
|”は並列実行であることを示している。図14に示す
3つの分岐演算命令161,162および163によ
り、分岐先として指定されている演算命令164は命令
語境界に整地する必要がある。そのため、演算命令16
4と165とを1つの命令語にエンコードすることがで
きず、図15に示すように余分に無効命令(NOP命
令)171および172が挿入されることになる。
って実行できるように、図14に示すプログラムをエン
コードする場合について説明する。図15は、分岐変位
Wが1Mバイト以内である場合のエンコードした後のプ
ログラムを示しており、参照符号170で示される“|
|”は並列実行であることを示している。図14に示す
3つの分岐演算命令161,162および163によ
り、分岐先として指定されている演算命令164は命令
語境界に整地する必要がある。そのため、演算命令16
4と165とを1つの命令語にエンコードすることがで
きず、図15に示すように余分に無効命令(NOP命
令)171および172が挿入されることになる。
【0109】また、実施の形態1におけるVLIW方式
プロセッサによって実行できるように、図14に示すプ
ログラムをエンコードする場合は、分岐先に指定されて
いる演算命令を命令語境界に整地する必要がないため、
図16に示すように演算命令164および165を1つ
の命令語にエンコードすることが可能である。図16に
おいて、参照符号180で示される“→”は逐次実行で
あることを示している。図15と比較すると、2つのN
OP命令171および172を挿入する必要がないた
め、2つの演算命令領域を削減でき命令コード効率が良
くなる。
プロセッサによって実行できるように、図14に示すプ
ログラムをエンコードする場合は、分岐先に指定されて
いる演算命令を命令語境界に整地する必要がないため、
図16に示すように演算命令164および165を1つ
の命令語にエンコードすることが可能である。図16に
おいて、参照符号180で示される“→”は逐次実行で
あることを示している。図15と比較すると、2つのN
OP命令171および172を挿入する必要がないた
め、2つの演算命令領域を削減でき命令コード効率が良
くなる。
【0110】しかし、実施の形態1におけるVLIW方
式プロセッサによって実行できる分岐命令で指定可能な
分岐変位の最大値は1Mバイトである。したがって、分
岐変位Wが1Mバイトより大きく2Mバイト以下の場合
には、図14に示す分岐命令161,162および16
3で分岐先の演算命令164を指定することができな
い。そのため、分岐命令161,162および163
を、分岐先を絶対番地で指定可能な長型の演算命令フォ
ーマットの分岐命令に変更する必要がある。
式プロセッサによって実行できる分岐命令で指定可能な
分岐変位の最大値は1Mバイトである。したがって、分
岐変位Wが1Mバイトより大きく2Mバイト以下の場合
には、図14に示す分岐命令161,162および16
3で分岐先の演算命令164を指定することができな
い。そのため、分岐命令161,162および163
を、分岐先を絶対番地で指定可能な長型の演算命令フォ
ーマットの分岐命令に変更する必要がある。
【0111】図17は、短型の演算命令フォーマットの
分岐命令161,162および163を長型の演算命令
フォーマットの分岐命令191,192および193に
変換した後のプログラムを示している。実施の形態1に
おけるVLIW方式プロセッサによって実行できるよう
に、図17に示すプログラムをエンコードすると、図1
8に示すプログラムが生成される。分岐命令191,1
92および193は、演算命令単位で分岐先の指定が可
能であるので、演算命令164および165を1つの命
令語にエンコードすることができ、分岐先部分だけを見
ると従来のVLIW方式プロセッサによって実行される
プログラムよりも演算命令領域を2つ分削減することが
できる。しかし、分岐命令自体が短型の演算命令フォー
マットから長型の演算命令フォーマットに変更されたた
め、合計6つ分の演算命令領域が増加することになり、
全体として従来のVLIW方式プロセッサによって実行
されるプログラムよりも演算命令領域が4つ分だけ増加
して命令コードの圧縮効率が悪くなる。
分岐命令161,162および163を長型の演算命令
フォーマットの分岐命令191,192および193に
変換した後のプログラムを示している。実施の形態1に
おけるVLIW方式プロセッサによって実行できるよう
に、図17に示すプログラムをエンコードすると、図1
8に示すプログラムが生成される。分岐命令191,1
92および193は、演算命令単位で分岐先の指定が可
能であるので、演算命令164および165を1つの命
令語にエンコードすることができ、分岐先部分だけを見
ると従来のVLIW方式プロセッサによって実行される
プログラムよりも演算命令領域を2つ分削減することが
できる。しかし、分岐命令自体が短型の演算命令フォー
マットから長型の演算命令フォーマットに変更されたた
め、合計6つ分の演算命令領域が増加することになり、
全体として従来のVLIW方式プロセッサによって実行
されるプログラムよりも演算命令領域が4つ分だけ増加
して命令コードの圧縮効率が悪くなる。
【0112】このように、実施の形態1におけるVLI
W方式プロッセサのように演算命令単位で分岐可能な分
岐命令を備えているが、命令語単位で分岐可能な分岐命
令を備えていないVLIW方式においては、上述したよ
うなある特定の分岐の場合に、従来のVLIW方式プロ
セッサによって実行されるプログラムよりも命令コード
の圧縮効率が悪くなることがある。本発明の実施の形態
5におけるVLIW方式プロセッサは、この問題を解決
するものである。
W方式プロッセサのように演算命令単位で分岐可能な分
岐命令を備えているが、命令語単位で分岐可能な分岐命
令を備えていないVLIW方式においては、上述したよ
うなある特定の分岐の場合に、従来のVLIW方式プロ
セッサによって実行されるプログラムよりも命令コード
の圧縮効率が悪くなることがある。本発明の実施の形態
5におけるVLIW方式プロセッサは、この問題を解決
するものである。
【0113】本発明の実施の形態5におけるVLIW方
式プロセッサの構成は、実施の形態1におけるVLIW
方式プロセッサの構成と同じである。したがって、詳細
な説明は繰返さない。
式プロセッサの構成は、実施の形態1におけるVLIW
方式プロセッサの構成と同じである。したがって、詳細
な説明は繰返さない。
【0114】図19は、本発明の実施の形態5における
VLIW方式プロセッサによって実行される短型の演算
命令フォーマットの分岐命令を説明するための図であ
る。図19(a)は、演算命令単位で分岐先を指定でき
る分岐命令の演算命令フォーマット150を示してお
り、演算内容を指定するフィールド30と、17ビット
長のディスプレースメントフィールド36と、分岐先の
演算命令が当該命令語において何番目に実行される命令
であるかを指定する分岐先演算命令指定フィールド37
とを含む。なお、この演算命令フォーマットは、図3
(c)に示す演算命令フォーマット22と同じである。
VLIW方式プロセッサによって実行される短型の演算
命令フォーマットの分岐命令を説明するための図であ
る。図19(a)は、演算命令単位で分岐先を指定でき
る分岐命令の演算命令フォーマット150を示してお
り、演算内容を指定するフィールド30と、17ビット
長のディスプレースメントフィールド36と、分岐先の
演算命令が当該命令語において何番目に実行される命令
であるかを指定する分岐先演算命令指定フィールド37
とを含む。なお、この演算命令フォーマットは、図3
(c)に示す演算命令フォーマット22と同じである。
【0115】また、図19(b)は、命令語単位で分岐
先を指定できる分岐命令の演算命令フォーマット151
を示しており、演算内容を指定するフィールド30と、
18ビット長のディスプレースメントフィールド152
とを含む。
先を指定できる分岐命令の演算命令フォーマット151
を示しており、演算内容を指定するフィールド30と、
18ビット長のディスプレースメントフィールド152
とを含む。
【0116】本実施の形態におけるVLIW方式プロセ
ッサは、命令長が8バイトであるので命令アドレスの下
位3ビットは常に“0”となる。したがって、演算命令
単位で分岐先を指定する演算命令フォーマット150に
おいては、20(=17+3)ビットのアドレス空間、
すなわち1Mバイトまでの分岐変位を指定することが可
能である。また、命令語単位で分岐先を指定する演算命
令フォーマット151においては、21(=18+3)
ビットのアドレス空間、すなわち2Mバイトまでの分岐
変位を指定することが可能である。
ッサは、命令長が8バイトであるので命令アドレスの下
位3ビットは常に“0”となる。したがって、演算命令
単位で分岐先を指定する演算命令フォーマット150に
おいては、20(=17+3)ビットのアドレス空間、
すなわち1Mバイトまでの分岐変位を指定することが可
能である。また、命令語単位で分岐先を指定する演算命
令フォーマット151においては、21(=18+3)
ビットのアドレス空間、すなわち2Mバイトまでの分岐
変位を指定することが可能である。
【0117】なお、本実施の形態においては、命令長が
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、2種類の分岐命令で指定可能な分岐変位
がそれぞれ異なるだけであるので、命令長や命令語に含
まれる演算命令数が異なるVLIW方式プロセッサにお
いても本実施の形態を適用することが可能である。
8バイトの固定長であり、1つまたは2つの演算命令を
含んだ命令語を実行するVLIW方式プロセッサについ
て説明したが、2種類の分岐命令で指定可能な分岐変位
がそれぞれ異なるだけであるので、命令長や命令語に含
まれる演算命令数が異なるVLIW方式プロセッサにお
いても本実施の形態を適用することが可能である。
【0118】以上説明したように、本実施の形態におけ
るVLIW方式プロセッサによれば、演算命令単位で分
岐先を指定できる分岐命令と、命令語単位で分岐先を指
定できる分岐命令とを実行するようにしたので、コンパ
イラ等のソフトウェアがこれら2種類の分岐命令を適宜
使用することにより、命令コードの圧縮効率を向上させ
ることが可能となる。
るVLIW方式プロセッサによれば、演算命令単位で分
岐先を指定できる分岐命令と、命令語単位で分岐先を指
定できる分岐命令とを実行するようにしたので、コンパ
イラ等のソフトウェアがこれら2種類の分岐命令を適宜
使用することにより、命令コードの圧縮効率を向上させ
ることが可能となる。
【0119】今回開示された実施の形態は、すべての点
で例示であって制限的なものではないと考えられるべき
である。本発明の範囲は上記した説明ではなくて特許請
求の範囲によって示され、特許請求の範囲と均等の意味
および範囲内でのすべての変更が含まれることが意図さ
れる。
で例示であって制限的なものではないと考えられるべき
である。本発明の範囲は上記した説明ではなくて特許請
求の範囲によって示され、特許請求の範囲と均等の意味
および範囲内でのすべての変更が含まれることが意図さ
れる。
【0120】
【発明の効果】請求項1に記載のVLIW方式プロセッ
サによれば、プログラムカウンタ制御手段は、逐次実行
時において途中で実行される演算命令への分岐を実行す
る場合に、途中で実行される演算命令よりも前に実行さ
れる逐次実行時における演算命令を無効演算とするよう
に命令デコード手段に指示するので、逐次実行の途中で
実行される演算命令への分岐が可能となり、命令コード
の圧縮効率を向上させることが可能となった。
サによれば、プログラムカウンタ制御手段は、逐次実行
時において途中で実行される演算命令への分岐を実行す
る場合に、途中で実行される演算命令よりも前に実行さ
れる逐次実行時における演算命令を無効演算とするよう
に命令デコード手段に指示するので、逐次実行の途中で
実行される演算命令への分岐が可能となり、命令コード
の圧縮効率を向上させることが可能となった。
【0121】請求項2に記載のVLIW方式プロセッサ
によれば、プログラムカウンタ制御手段は、分岐先演算
命令指定フィールドの値を保持する演算命令指定レジス
タを含むので、逐次実行の途中で実行される演算命令へ
の分岐であるか否かを判定することが可能となり、命令
コードの圧縮効率を向上させることが可能となった。
によれば、プログラムカウンタ制御手段は、分岐先演算
命令指定フィールドの値を保持する演算命令指定レジス
タを含むので、逐次実行の途中で実行される演算命令へ
の分岐であるか否かを判定することが可能となり、命令
コードの圧縮効率を向上させることが可能となった。
【0122】請求項3に記載のVLIW方式プロセッサ
によれば、出力制御手段は、フォーマットフィールドデ
コーダによるデコード結果および演算命令指定レジスタ
に保持される値に基づいて、複数の命令デコーダから出
力されるデコード結果の出力を制御するので、逐次実行
の途中で実行される演算命令へ分岐を行うことが可能と
なり、命令コードの圧縮効率を向上させることが可能と
なった。
によれば、出力制御手段は、フォーマットフィールドデ
コーダによるデコード結果および演算命令指定レジスタ
に保持される値に基づいて、複数の命令デコーダから出
力されるデコード結果の出力を制御するので、逐次実行
の途中で実行される演算命令へ分岐を行うことが可能と
なり、命令コードの圧縮効率を向上させることが可能と
なった。
【0123】請求項4に記載のVLIW方式プロセッサ
によれば、複数の出力制御手段は、演算命令指定レジス
タに保持される値が逐次実行時において途中で実行され
る演算命令への分岐を示す場合に、途中で実行される演
算命令よりも前に実行される逐次実行時における演算命
令を無効演算として出力するので、逐次実行の途中で実
行される演算命令へ分岐を行うことができ、命令コード
の圧縮効率を向上させることが可能となった。
によれば、複数の出力制御手段は、演算命令指定レジス
タに保持される値が逐次実行時において途中で実行され
る演算命令への分岐を示す場合に、途中で実行される演
算命令よりも前に実行される逐次実行時における演算命
令を無効演算として出力するので、逐次実行の途中で実
行される演算命令へ分岐を行うことができ、命令コード
の圧縮効率を向上させることが可能となった。
【0124】請求項5に記載のVLIW方式プロセッサ
によれば、バックアッププログラムカウンタは、例外ま
たは割り込みが発生したときに演算命令計数手段によっ
て計数された演算命令数に基づいてプログラムカウンタ
値を生成して退避するので、例外または割り込み発生時
に逐次実行の途中で実行される演算命令のアドレスを退
避でき、例外または割り込みのレーテンシを小さくする
ことが可能となった。
によれば、バックアッププログラムカウンタは、例外ま
たは割り込みが発生したときに演算命令計数手段によっ
て計数された演算命令数に基づいてプログラムカウンタ
値を生成して退避するので、例外または割り込み発生時
に逐次実行の途中で実行される演算命令のアドレスを退
避でき、例外または割り込みのレーテンシを小さくする
ことが可能となった。
【0125】請求項6に記載のVLIW方式プロセッサ
によれば、例外検出手段は、フォーマットフィールドデ
コーダによるデコード結果および演算命令指定レジスタ
に保持される値に基づいて例外を検出するので、プログ
ラムのデバッグの効率を高めることが可能となった。
によれば、例外検出手段は、フォーマットフィールドデ
コーダによるデコード結果および演算命令指定レジスタ
に保持される値に基づいて例外を検出するので、プログ
ラムのデバッグの効率を高めることが可能となった。
【0126】請求項7に記載のVLIW方式プロセッサ
によれば、例外検出手段は、フォーマットフィールドデ
コーダによるデコード結果が並列実行または1演算命令
を示し、かつ演算命令指定レジスタに保持される値が分
岐先の演算命令が当該命令語において2番目以降に実行
されることを示す場合に例外を検出するので、プログラ
ム中のバグで例外を発生させることが可能となり、デバ
ッグの効率を高めることが可能となった。
によれば、例外検出手段は、フォーマットフィールドデ
コーダによるデコード結果が並列実行または1演算命令
を示し、かつ演算命令指定レジスタに保持される値が分
岐先の演算命令が当該命令語において2番目以降に実行
されることを示す場合に例外を検出するので、プログラ
ム中のバグで例外を発生させることが可能となり、デバ
ッグの効率を高めることが可能となった。
【0127】請求項8に記載のVLIW方式プロセッサ
によれば、フォーマットフィールドデコーダは、フォー
マットフィールドおよび分岐先演算命令指定フィールド
によって保持される値をデコードして、命令語に含まれ
る複数の演算命令の実行順序を決定するので、命令の実
行サイクルを短縮することにより高速に処理が行えるよ
うになった。
によれば、フォーマットフィールドデコーダは、フォー
マットフィールドおよび分岐先演算命令指定フィールド
によって保持される値をデコードして、命令語に含まれ
る複数の演算命令の実行順序を決定するので、命令の実
行サイクルを短縮することにより高速に処理が行えるよ
うになった。
【0128】請求項9に記載のVLIW方式プロセッサ
によれば、実行手段は、複数の分岐変位が異なる分岐命
令に基づいて分岐を実行するので、これらの分岐命令を
適宜使い分けることによってコードの圧縮効率が悪化す
るのを防止することが可能となった。
によれば、実行手段は、複数の分岐変位が異なる分岐命
令に基づいて分岐を実行するので、これらの分岐命令を
適宜使い分けることによってコードの圧縮効率が悪化す
るのを防止することが可能となった。
【0129】請求項10に記載のVLIW方式プロセッ
サによれば、出力制御部は、フォーマットフィールドデ
コーダのデコード結果、演算命令指定レジスタの値およ
び命令デコーダのそれぞれのデコード結果が入力され、
かつメモリユニットまたは整数演算ユニットに接続され
るので、逐次実行の途中で実行される演算命令へ分岐を
行うことが可能となり、命令コードの圧縮効率を向上さ
せることが可能となった。
サによれば、出力制御部は、フォーマットフィールドデ
コーダのデコード結果、演算命令指定レジスタの値およ
び命令デコーダのそれぞれのデコード結果が入力され、
かつメモリユニットまたは整数演算ユニットに接続され
るので、逐次実行の途中で実行される演算命令へ分岐を
行うことが可能となり、命令コードの圧縮効率を向上さ
せることが可能となった。
【図1】 本発明の実施の形態1のVLIW方式プロセ
ッサにおいて使用される命令フォーマットを説明するた
めの図である。
ッサにおいて使用される命令フォーマットを説明するた
めの図である。
【図2】 フォーマットフィールドの内容を説明するた
めの図である。
めの図である。
【図3】 演算命令コードを詳細に説明するための図で
ある。
ある。
【図4】 本発明の実施の形態1におけるVLIW方式
プロセッサにおいて使用されるレジスタ群を説明するた
めの図である。
プロセッサにおいて使用されるレジスタ群を説明するた
めの図である。
【図5】 プロセッサステータスワードを詳細に説明す
るための図である。
るための図である。
【図6】 本発明の実施の形態1におけるVLIW方式
プロセッサの概略構成を示すブロック図である。
プロセッサの概略構成を示すブロック図である。
【図7】 命令デコードユニット80をさらに詳細に説
明するための図である。
明するための図である。
【図8】 PC制御部92の概略構成を示すブロック図
である。
である。
【図9】 本発明の実施の形態2におけるVLIW方式
プロセッサの命令デコードユニット80aの概略構成を
示すブロック図である。
プロセッサの命令デコードユニット80aの概略構成を
示すブロック図である。
【図10】 本発明の実施の形態2におけるVLIW方
式プロセッサのPC制御部92aの概略構成を示すブロ
ック図である。
式プロセッサのPC制御部92aの概略構成を示すブロ
ック図である。
【図11】 本発明の実施の形態3におけるVLIW方
式プロセッサの命令デコードユニット80bの概略構成
を示すブロック図である。
式プロセッサの命令デコードユニット80bの概略構成
を示すブロック図である。
【図12】 本発明の実施の形態4におけるVLIW方
式プロセッサの命令デコードユニット80cの概略構成
を示すブロック図である。
式プロセッサの命令デコードユニット80cの概略構成
を示すブロック図である。
【図13】 FMデコーダ140のデコード結果に対す
る処理内容を説明するための図である。
る処理内容を説明するための図である。
【図14】 アセンブリ言語で記述したプログラムの一
例を示す図である。
例を示す図である。
【図15】 従来のVLIW方式プロセッサが実行でき
るように、エンコードした後のプログラム(分岐変位W
が1Mバイト以内である場合)を示す図である。
るように、エンコードした後のプログラム(分岐変位W
が1Mバイト以内である場合)を示す図である。
【図16】 実施の形態1におけるVLIW方式プロセ
ッサが実行できるように、エンコードした後のプログラ
ム(分岐変位Wが1Mバイト以内である場合)を示す図
である。
ッサが実行できるように、エンコードした後のプログラ
ム(分岐変位Wが1Mバイト以内である場合)を示す図
である。
【図17】 短型の演算命令フォーマットの分岐命令を
長型の演算命令フォーマットに変換した後のプログラム
を示す図である。
長型の演算命令フォーマットに変換した後のプログラム
を示す図である。
【図18】 実施の形態1におけるVLIW方式プロセ
ッサが実行できるように、エンコードした後のプログラ
ム(分岐変位Wが1Mバイトより大きく2Mバイト以下
である場合)を示す図である。
ッサが実行できるように、エンコードした後のプログラ
ム(分岐変位Wが1Mバイトより大きく2Mバイト以下
である場合)を示す図である。
【図19】 本発明の実施の形態5におけるVLIW方
式プロセッサによって実行される短型の演算命令フォー
マットの分岐命令を説明するための図である。
式プロセッサによって実行される短型の演算命令フォー
マットの分岐命令を説明するための図である。
10,11 フォーマットフィールド、12,13,1
6,17,18 演算命令フィールド、14,15,1
9 実行条件フィールド、54 プログラムステータス
ワード、80 命令デコードユニット、81 命令RA
M、82 メモリユニット、83 整数演算ユニット、
84 汎用レジスタ、85 データRAM、86,87
命令デコーダ、91 メモリ制御部、92 PC制御
部、93,97 シフタ、94,96 ALU、95
乗算器、98 アキュムレータ、99 分岐先演算命令
指定信号、100 フィールド抽出部、101 FMデ
コーダ、102,103 出力制御部、119 分岐先
アドレス生成回路、120演算命令指定レジスタ、13
0 演算命令計数部、135 演算命令数レジスタ、1
38 例外検出回路。
6,17,18 演算命令フィールド、14,15,1
9 実行条件フィールド、54 プログラムステータス
ワード、80 命令デコードユニット、81 命令RA
M、82 メモリユニット、83 整数演算ユニット、
84 汎用レジスタ、85 データRAM、86,87
命令デコーダ、91 メモリ制御部、92 PC制御
部、93,97 シフタ、94,96 ALU、95
乗算器、98 アキュムレータ、99 分岐先演算命令
指定信号、100 フィールド抽出部、101 FMデ
コーダ、102,103 出力制御部、119 分岐先
アドレス生成回路、120演算命令指定レジスタ、13
0 演算命令計数部、135 演算命令数レジスタ、1
38 例外検出回路。
Claims (10)
- 【請求項1】 並列実行および逐次実行のいずれかを選
択して、命令語中の複数の演算命令をデコードするため
の命令デコード手段と、 前記命令デコード手段による複数の演算命令のデコード
結果に基づいて、前記複数の演算命令を実行するための
実行手段とを含み、 前記実行手段は、プログラムカウンタの値を制御し、逐
次実行時において途中で実行される演算命令への分岐を
実行する場合に、前記途中で実行される演算命令よりも
前に実行される逐次実行時における演算命令を無効演算
とするように前記命令デコード手段に指示するためのプ
ログラムカウンタ制御手段を含む、VLIW方式プロセ
ッサ。 - 【請求項2】 前記命令語は、分岐先の演算命令が命令
語において何番目に実行されるかを指定する分岐先演算
命令指定フィールドを含み、 前記プログラムカウンタ制御手段は、前記分岐先演算命
令指定フィールドの値を保持する演算命令指定レジスタ
を含む、請求項1記載のVLIW方式プロセッサ。 - 【請求項3】 前記命令語はさらに、演算命令の実行順
序を指定するフォーマットフィールドおよび複数の演算
命令フィールドを含み、 前記命令デコード手段は、前記フォーマットフィールド
をデコードするフォーマットフィールドデコーダと、 前記命令語に含まれるフィールドを抽出するためのフィ
ールド抽出手段と、 前記フィールド抽出手段によって抽出された複数の演算
命令フィールドをデコードする複数の命令デコーダと、 前記フォーマットフィールドデコーダによるデコード結
果および前記演算命令指定レジスタに保持される値に基
づいて、前記複数の命令デコーダから出力されるデコー
ド結果の出力を制御するための複数の出力制御手段とを
含む、請求項2記載のVLIW方式プロセッサ。 - 【請求項4】 前記複数の出力制御手段は、前記演算命
令指定レジスタに保持される値が逐次実行時において途
中で実行される演算命令への分岐を示す場合に、前記途
中で実行される演算命令よりも前に実行される逐次実行
時における演算命令を無効演算として出力する、請求項
3記載のVLIW方式プロセッサ。 - 【請求項5】 前記命令デコード手段は、逐次実行時に
実行された演算命令数を計数するための演算命令計数手
段を含み、 前記プログラムカウンタ制御手段は、例外または割り込
みが発生したときに前記演算命令計数手段によって計数
された演算命令数に基づいてプログラムカウンタ値を生
成して退避するバックアッププログラムカウンタを含
む、請求項1〜4のいずれかに記載のVLIW方式プロ
セッサ。 - 【請求項6】 前記命令デコード手段はさらに、前記フ
ォーマットフィールドデコーダによるデコード結果およ
び前記演算命令指定レジスタに保持される値に基づい
て、例外を検出する例外検出手段を含む、請求項3また
は4記載のVLIW方式プロセッサ。 - 【請求項7】 前記例外検出手段は、前記フォーマット
フィールドデコーダによるデコード結果が並列実行また
は1演算命令を示し、かつ前記演算命令指定レジスタに
保持される値が分岐先の演算命令が当該命令語において
2番目以降に実行されることを示す場合に例外を検出す
る、請求項6記載のVLIW方式プロセッサ。 - 【請求項8】 前記フォーマットフィールドデコーダ
は、前記フォーマットフィールドおよび前記分岐先演算
命令指定フィールドによって保持される値をデコードし
て、前記命令語に含まれる複数の演算命令の実行順序を
決定する、請求項3または4記載のVLIW方式プロセ
ッサ。 - 【請求項9】 前記命令語は、分岐変位が異なる分岐命
令を複数含み、 前記実行手段は、前記複数の分岐変位が異なる分岐命令
に基づいて分岐を実行する、請求項1〜8のいずれかに
記載のVLIW方式プロセッサ。 - 【請求項10】 命令デコードユニットとメモリユニッ
トと整数演算ユニットとを含むVLIW方式プロセッサ
であって、 命令語は、複数の演算命令フィールドと分岐先演算命令
指定フィールドとフォーマットフィールドとを含み、 前記メモリユニットは、前記分岐先演算命令指定フィー
ルドが入力される演算命令指定レジスタを含み、 前記命令デコードユニットは、フォーマットフィールド
が入力されるフォーマットフィールドデコーダと、 前記複数の演算命令フィールドのそれぞれが入力される
複数の命令デコーダと、 前記フォーマットフィールドデコーダのデコード結果、
前記演算命令指定レジスタの値および前記命令デコーダ
のそれぞれのデコード結果が入力され、かつ前記メモリ
ユニットまたは前記整数演算ユニットに接続される複数
の出力制御部とを含む、VLIW方式プロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11204908A JP2001034471A (ja) | 1999-07-19 | 1999-07-19 | Vliw方式プロセッサ |
US09/484,413 US6615339B1 (en) | 1999-07-19 | 2000-01-18 | VLIW processor accepting branching to any instruction in an instruction word set to be executed consecutively |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11204908A JP2001034471A (ja) | 1999-07-19 | 1999-07-19 | Vliw方式プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001034471A true JP2001034471A (ja) | 2001-02-09 |
Family
ID=16498387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11204908A Withdrawn JP2001034471A (ja) | 1999-07-19 | 1999-07-19 | Vliw方式プロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6615339B1 (ja) |
JP (1) | JP2001034471A (ja) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002251284A (ja) * | 2001-02-23 | 2002-09-06 | Mitsubishi Electric Corp | データ処理装置 |
JP2006164279A (ja) * | 2004-12-03 | 2006-06-22 | Picochip Designs Ltd | プロセッサ・アーキテクチャ |
JP2012059163A (ja) * | 2010-09-13 | 2012-03-22 | Sony Corp | プロセッサ |
US8463312B2 (en) | 2009-06-05 | 2013-06-11 | Mindspeed Technologies U.K., Limited | Method and device in a communication network |
US8559998B2 (en) | 2007-11-05 | 2013-10-15 | Mindspeed Technologies U.K., Limited | Power control |
US8712469B2 (en) | 2011-05-16 | 2014-04-29 | Mindspeed Technologies U.K., Limited | Accessing a base station |
US8798630B2 (en) | 2009-10-05 | 2014-08-05 | Intel Corporation | Femtocell base station |
US8849340B2 (en) | 2009-05-07 | 2014-09-30 | Intel Corporation | Methods and devices for reducing interference in an uplink |
US8862076B2 (en) | 2009-06-05 | 2014-10-14 | Intel Corporation | Method and device in a communication network |
US8904148B2 (en) | 2000-12-19 | 2014-12-02 | Intel Corporation | Processor architecture with switch matrices for transferring data along buses |
US9042434B2 (en) | 2011-04-05 | 2015-05-26 | Intel Corporation | Filter |
US9107136B2 (en) | 2010-08-16 | 2015-08-11 | Intel Corporation | Femtocell access control |
US10856302B2 (en) | 2011-04-05 | 2020-12-01 | Intel Corporation | Multimode base station |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7020763B2 (en) * | 2000-03-08 | 2006-03-28 | Sun Microsystems, Inc. | Computer processing architecture having a scalable number of processing paths and pipelines |
EP1378824A1 (en) * | 2002-07-02 | 2004-01-07 | STMicroelectronics S.r.l. | A method for executing programs on multiple processors and corresponding processor system |
US7673119B2 (en) * | 2005-05-13 | 2010-03-02 | Texas Instruments Incorporated | VLIW optional fetch packet header extends instruction set space |
US20070186210A1 (en) * | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5787303A (en) * | 1991-10-31 | 1998-07-28 | Kabushiki Kaisha Toshiba | Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture |
JP2931890B2 (ja) | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
JP3658879B2 (ja) | 1996-08-07 | 2005-06-08 | 富士通株式会社 | パイプライン計算機 |
JP3790607B2 (ja) | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
US6266764B1 (en) * | 1998-03-17 | 2001-07-24 | Matsushita Electric Industrial Co., Ltd. | Program controller for switching between first program and second program |
-
1999
- 1999-07-19 JP JP11204908A patent/JP2001034471A/ja not_active Withdrawn
-
2000
- 2000-01-18 US US09/484,413 patent/US6615339B1/en not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904148B2 (en) | 2000-12-19 | 2014-12-02 | Intel Corporation | Processor architecture with switch matrices for transferring data along buses |
JP2002251284A (ja) * | 2001-02-23 | 2002-09-06 | Mitsubishi Electric Corp | データ処理装置 |
JP2006164279A (ja) * | 2004-12-03 | 2006-06-22 | Picochip Designs Ltd | プロセッサ・アーキテクチャ |
US9104426B2 (en) | 2004-12-03 | 2015-08-11 | Intel Corporation | Processor architecture for processing variable length instruction words |
US8559998B2 (en) | 2007-11-05 | 2013-10-15 | Mindspeed Technologies U.K., Limited | Power control |
US8849340B2 (en) | 2009-05-07 | 2014-09-30 | Intel Corporation | Methods and devices for reducing interference in an uplink |
US8862076B2 (en) | 2009-06-05 | 2014-10-14 | Intel Corporation | Method and device in a communication network |
US8892154B2 (en) | 2009-06-05 | 2014-11-18 | Intel Corporation | Method and device in a communication network |
US8463312B2 (en) | 2009-06-05 | 2013-06-11 | Mindspeed Technologies U.K., Limited | Method and device in a communication network |
US9807771B2 (en) | 2009-06-05 | 2017-10-31 | Intel Corporation | Method and device in a communication network |
US8798630B2 (en) | 2009-10-05 | 2014-08-05 | Intel Corporation | Femtocell base station |
US9107136B2 (en) | 2010-08-16 | 2015-08-11 | Intel Corporation | Femtocell access control |
JP2012059163A (ja) * | 2010-09-13 | 2012-03-22 | Sony Corp | プロセッサ |
US9841978B2 (en) | 2010-09-13 | 2017-12-12 | Sony Corporation | Processor with a program counter increment based on decoding of predecode bits |
US11200059B2 (en) | 2010-09-13 | 2021-12-14 | Sony Corporation | Processor with a program counter increment based on decoding of predecode bits |
US9042434B2 (en) | 2011-04-05 | 2015-05-26 | Intel Corporation | Filter |
US10856302B2 (en) | 2011-04-05 | 2020-12-01 | Intel Corporation | Multimode base station |
US8712469B2 (en) | 2011-05-16 | 2014-04-29 | Mindspeed Technologies U.K., Limited | Accessing a base station |
Also Published As
Publication number | Publication date |
---|---|
US6615339B1 (en) | 2003-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3842474B2 (ja) | データ処理装置 | |
US5761470A (en) | Data processor having an instruction decoder and a plurality of executing units for performing a plurality of operations in parallel | |
JP2761688B2 (ja) | データ処理装置 | |
EP0782071B1 (en) | Data processor | |
JP3547139B2 (ja) | プロセッサ | |
AU635016B2 (en) | Decoding multiple specifiers in a variable length instruction architecture | |
EP0380849B1 (en) | Method and data processing unit for preprocessing implied specifiers in a pipelined processor | |
US6351804B1 (en) | Control bit vector storage for a microprocessor | |
US6865666B2 (en) | Data processing device | |
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 | |
JP2001034471A (ja) | Vliw方式プロセッサ | |
EP0405495B1 (en) | Instruction unit logic management apparatus included in a pipelined processing unit and method therefor | |
JP2000029704A (ja) | デ―タ型によるコプロセッサの操作コ―ドの分割 | |
JP2003085000A (ja) | トレース情報生成装置およびその方法 | |
JPH0816391A (ja) | コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 | |
US5615349A (en) | Data processing system capable of execution of plural instructions in parallel | |
JP2000029688A (ja) | レジスタとメモリとの間のデ―タ転送 | |
US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
US7707389B2 (en) | Multi-ISA instruction fetch unit for a processor, and applications thereof | |
JP3345787B2 (ja) | データ処理装置 | |
US20020108029A1 (en) | Program counter (PC) relative addressing mode with fast displacement | |
JP3841967B2 (ja) | マイクロプロセッサ | |
EP0992897B1 (en) | Stack pointer management | |
US5212779A (en) | System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction | |
JP3182591B2 (ja) | マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20061003 |