JP2000353091A - コンピュータシステムにおける命令実行方法およびコンピュータシステム - Google Patents
コンピュータシステムにおける命令実行方法およびコンピュータシステムInfo
- Publication number
- JP2000353091A JP2000353091A JP2000134612A JP2000134612A JP2000353091A JP 2000353091 A JP2000353091 A JP 2000353091A JP 2000134612 A JP2000134612 A JP 2000134612A JP 2000134612 A JP2000134612 A JP 2000134612A JP 2000353091 A JP2000353091 A JP 2000353091A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- pipeline
- dependency
- data
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 24
- 230000003213 activating effect Effects 0.000 claims abstract description 3
- 230000004044 response Effects 0.000 claims abstract 2
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims description 2
- 230000003252 repetitive effect Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 16
- 101150045567 GP16 gene Proteins 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 101100244969 Arabidopsis thaliana PRL1 gene Proteins 0.000 description 1
- 102100039558 Galectin-3 Human genes 0.000 description 1
- 101100454448 Homo sapiens LGALS3 gene Proteins 0.000 description 1
- 101150051246 MAC2 gene Proteins 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 スーパスケーラモードおよびVLIWモード
の両方が命令スケジューリングで対処され、異なる命令
間のデータ依存性を処理することが可能なコンピュータ
システムを提供する。 【解決手段】 コンピュータシステムにおける命令は、
複数の並列実行パイプラインで実行され、同列方向の依
存性のチェックが並列パイプラインに供給され他命令間
で実行され、さらに検出する同列方向の依存性に応答し
て、第1または第2のタイプの制御信号が、依存性がバ
イパスを活性化することにより解消され得るかいなか、
またはパイプラインの1つに一時的な区画が求められて
いるか否かに依存して生成されている。
の両方が命令スケジューリングで対処され、異なる命令
間のデータ依存性を処理することが可能なコンピュータ
システムを提供する。 【解決手段】 コンピュータシステムにおける命令は、
複数の並列実行パイプラインで実行され、同列方向の依
存性のチェックが並列パイプラインに供給され他命令間
で実行され、さらに検出する同列方向の依存性に応答し
て、第1または第2のタイプの制御信号が、依存性がバ
イパスを活性化することにより解消され得るかいなか、
またはパイプラインの1つに一時的な区画が求められて
いるか否かに依存して生成されている。
Description
【0001】
【発明の属する技術分野】本発明はコンピュータにおけ
る命令のデータ依存性を処理する装置および方法に関
し、特に複数の並行パイプライン処理操作で命令を実行
するよう構成されたコンピュータシステムに関する。
る命令のデータ依存性を処理する装置および方法に関
し、特に複数の並行パイプライン処理操作で命令を実行
するよう構成されたコンピュータシステムに関する。
【0002】
【従来の技術】既存のマシンは、2つ以上の命令が同一
のマシンサイクルでプログラムメモリから取り出され、
異なる実行ユニットで実行されるスーパースケーラモー
ドで動作することが知られている。普通、このような命
令は隣接するメモリ位置で配置され、単一の取出し動作
でメモリから取り出される。マシンは、超長命令ワード
(VLIW)モードでも動作することが知られている。
このようなワードには、単一のワードアドレスで単一ワ
ードとしてメモリから取り出される多数の命令が含まれ
る場合がある。単一のVLIW命令と共に含まれる命令
はソフトウェア技術によって慎重に制御され、ワードを
構成する命令間に互換性やデータ依存性の問題が生じな
いようにしている。
のマシンサイクルでプログラムメモリから取り出され、
異なる実行ユニットで実行されるスーパースケーラモー
ドで動作することが知られている。普通、このような命
令は隣接するメモリ位置で配置され、単一の取出し動作
でメモリから取り出される。マシンは、超長命令ワード
(VLIW)モードでも動作することが知られている。
このようなワードには、単一のワードアドレスで単一ワ
ードとしてメモリから取り出される多数の命令が含まれ
る場合がある。単一のVLIW命令と共に含まれる命令
はソフトウェア技術によって慎重に制御され、ワードを
構成する命令間に互換性やデータ依存性の問題が生じな
いようにしている。
【0003】コンピュータシステムにおいては、複数の
命令を並行にパイプライン処理操作で実行することがで
きる。データ依存性は、並行またはパイプライン処理操
作で実行される複数の命令間で発生する。
命令を並行にパイプライン処理操作で実行することがで
きる。データ依存性は、並行またはパイプライン処理操
作で実行される複数の命令間で発生する。
【0004】
【発明が解決しようとする課題】本発明の目的は、スー
パスケーラモードおよびVLIWモードの両方が命令ス
ケジューリングで対処され、異なる命令間のデータ依存
性を処理することが可能なコンピュータシステムを提供
することにある。本発明の実施例は、命令実行が非常に
高速であり、またソフトウェアツールチェーンとアセン
ブリプログラマに対してプログラミングモデルが複雑に
なることを防いでいる。
パスケーラモードおよびVLIWモードの両方が命令ス
ケジューリングで対処され、異なる命令間のデータ依存
性を処理することが可能なコンピュータシステムを提供
することにある。本発明の実施例は、命令実行が非常に
高速であり、またソフトウェアツールチェーンとアセン
ブリプログラマに対してプログラミングモデルが複雑に
なることを防いでいる。
【0005】リアルタイム動作では、命令スケジューリ
ングは確定的であるべきであり、即ちハードウェアは、
制御不可能である(非確定的な)命令の極度に「インテ
リジェントな」再スケジューリングは行わない。これ
は、アプリケーションのリアルタイム性を重視する必要
がある場合、プログラマ/ソフトウェアツールチェーン
のタスクが非常に困難になってしまうからである。
ングは確定的であるべきであり、即ちハードウェアは、
制御不可能である(非確定的な)命令の極度に「インテ
リジェントな」再スケジューリングは行わない。これ
は、アプリケーションのリアルタイム性を重視する必要
がある場合、プログラマ/ソフトウェアツールチェーン
のタスクが非常に困難になってしまうからである。
【0006】
【課題を解決するための手段】本発明は、並行パイプラ
インで実行する命令グループを各マシンサイクルで同時
に供給する工程と、グループ内の各命令を解読する工程
と、グループ内の命令をチェックして、各並行パイプラ
イン対での実行中にグループ内の何れかの命令対に左右
方向のデータ依存性が存在するか判定する工程と、この
ようなデータ依存性の判定に応じて、一方のパイプライ
ン内のバイパスを有効化してデータ依存性を解消できる
か否か、または一方のパイプラインに一時的な低速化が
必要か否かによって第1または第2のタイプの依存性制
御信号を選択する工程とから成るコンピュータシステム
の命令実行方法であって、選択された第1または第2の
タイプの依存性制御信号と共に並行パイプライン対に命
令を供給する工程を更に含む方法を提供する。
インで実行する命令グループを各マシンサイクルで同時
に供給する工程と、グループ内の各命令を解読する工程
と、グループ内の命令をチェックして、各並行パイプラ
イン対での実行中にグループ内の何れかの命令対に左右
方向のデータ依存性が存在するか判定する工程と、この
ようなデータ依存性の判定に応じて、一方のパイプライ
ン内のバイパスを有効化してデータ依存性を解消できる
か否か、または一方のパイプラインに一時的な低速化が
必要か否かによって第1または第2のタイプの依存性制
御信号を選択する工程とから成るコンピュータシステム
の命令実行方法であって、選択された第1または第2の
タイプの依存性制御信号と共に並行パイプライン対に命
令を供給する工程を更に含む方法を提供する。
【0007】上記方法は、上記第1または第2のタイプ
の依存性制御信号と共に並行パイプラインに命令を供給
する工程と、上記信号が第1または第2のタイプである
かに応じて低速化またはバイパスを有効化することを含
むパイプラインでの命令を実行する工程とを含む。
の依存性制御信号と共に並行パイプラインに命令を供給
する工程と、上記信号が第1または第2のタイプである
かに応じて低速化またはバイパスを有効化することを含
むパイプラインでの命令を実行する工程とを含む。
【0008】上記方法は、同一グループ内の第1の所定
数の命令を有するスーパスケーラモードまたは同一グル
ープ内の第2の所定数の命令を有する超長命令ワードモ
ード(VLIW)から命令グループ化モードを選択する
工程と、どのグループ化モードが選択されたかを示すグ
ループ化制御信号を供給し、上記グループ制御信号を使
用して上記第1タイプの依存性制御信号を無効化する工
程とを更に含む。
数の命令を有するスーパスケーラモードまたは同一グル
ープ内の第2の所定数の命令を有する超長命令ワードモ
ード(VLIW)から命令グループ化モードを選択する
工程と、どのグループ化モードが選択されたかを示すグ
ループ化制御信号を供給し、上記グループ制御信号を使
用して上記第1タイプの依存性制御信号を無効化する工
程とを更に含む。
【0009】好適には、上記パイプラインがデータメモ
リへのアクセスを含み、上記パイプラインはメモリアク
セス操作に必要な命令の実行で使用される第1のパイプ
ライン集合と、算術演算を行うよう構成される第2のパ
イプライン集合とを含んでいるので、算術演算からメモ
リアクセス操作が切り離される。
リへのアクセスを含み、上記パイプラインはメモリアク
セス操作に必要な命令の実行で使用される第1のパイプ
ライン集合と、算術演算を行うよう構成される第2のパ
イプライン集合とを含んでいるので、算術演算からメモ
リアクセス操作が切り離される。
【0010】好適には、共通サイクルタイミングにリン
クした2つの並行データ操作パイプラインが、データレ
ジスタの共通集合にアクセスするたびに供給される。
クした2つの並行データ操作パイプラインが、データレ
ジスタの共通集合にアクセスするたびに供給される。
【0011】上記並行データ操作パイプラインに上記第
2のタイプの依存性制御信号と共に命令が供給される。
2のタイプの依存性制御信号と共に命令が供給される。
【0012】好適には、共通サイクルタイミングにリン
クした2つの並行パイプラインがメモリアクセスで使用
されるアドレス指定操作に供給され、上記2つのパイプ
ラインはメモリアクセス操作の共通レジスタファイルに
アクセスする。
クした2つの並行パイプラインがメモリアクセスで使用
されるアドレス指定操作に供給され、上記2つのパイプ
ラインはメモリアクセス操作の共通レジスタファイルに
アクセスする。
【0013】一対の並行データ操作パイプラインまたは
一対のアドレス指定操作パイプラインの何れかに、上記
第1のタイプの依存性制御信号と共に命令が供給され
る。
一対のアドレス指定操作パイプラインの何れかに、上記
第1のタイプの依存性制御信号と共に命令が供給され
る。
【0014】好適には、連続するサイクルで各パイプラ
インに供給される命令の上下方向のデータ依存性をチェ
ックし、上下方向の依存性が検出された場合、何れかの
パイプラインの一時的遅延によってこれを解消する。
インに供給される命令の上下方向のデータ依存性をチェ
ックし、上下方向の依存性が検出された場合、何れかの
パイプラインの一時的遅延によってこれを解消する。
【0015】本発明は、複数の並行実行パイプライン
と、命令解読回路と、命令グループを各マシンサイクル
で解読回路を介して上記パイプラインに同時に供給する
命令供給回路と、命令をチェックして、各並行パイプラ
イン対での実行中にグループ内の何れかの命令対に左右
方向のデータ依存性が存在するか判定するデータ依存性
チェック回路と、上記データ依存性チェック回路に応じ
て、上記パイプライン対の一方に遅延を生じさせて左右
方向のデータ依存性を解消する第1のタイプ、または上
記パイプライン対の一方でバイパスを有効化してデータ
依存性を解消する第2のタイプの依存性制御信号を選択
的に生成する信号生成回路とを具備して成るコンピュー
タシステムを含む。
と、命令解読回路と、命令グループを各マシンサイクル
で解読回路を介して上記パイプラインに同時に供給する
命令供給回路と、命令をチェックして、各並行パイプラ
イン対での実行中にグループ内の何れかの命令対に左右
方向のデータ依存性が存在するか判定するデータ依存性
チェック回路と、上記データ依存性チェック回路に応じ
て、上記パイプライン対の一方に遅延を生じさせて左右
方向のデータ依存性を解消する第1のタイプ、または上
記パイプライン対の一方でバイパスを有効化してデータ
依存性を解消する第2のタイプの依存性制御信号を選択
的に生成する信号生成回路とを具備して成るコンピュー
タシステムを含む。
【0016】上記コンピュータシステムは、算術演算の
命令の実行で使用する第1のレジスタ集合にアクセスす
る複数の並行実行パイプラインを有するデータユニット
と、メモリアクセス操作の命令の実行で使用する第2の
レジスタ集合にアクセスする複数の並行パイプラインを
有するアドレスユニットとを含むので、メモリアクセス
の命令の実行が算術演算の命令の実行から切り離され
る。
命令の実行で使用する第1のレジスタ集合にアクセスす
る複数の並行実行パイプラインを有するデータユニット
と、メモリアクセス操作の命令の実行で使用する第2の
レジスタ集合にアクセスする複数の並行パイプラインを
有するアドレスユニットとを含むので、メモリアクセス
の命令の実行が算術演算の命令の実行から切り離され
る。
【0017】好適には、上記第1のタイプの依存性制御
信号を使用して、データユニットの2つのパイプライン
に同時に入力する2つの命令間のデータ依存性、または
2つのアドレスユニットパイプラインに同時に入力する
2つの命令間のデータ依存性を解消可能である。
信号を使用して、データユニットの2つのパイプライン
に同時に入力する2つの命令間のデータ依存性、または
2つのアドレスユニットパイプラインに同時に入力する
2つの命令間のデータ依存性を解消可能である。
【0018】好適には、上記第2のタイプのデータ依存
性信号を使用して、データユニットの2つのパイプライ
ンに同時に入力する2つの命令間のデータ依存性を解消
可能である。
性信号を使用して、データユニットの2つのパイプライ
ンに同時に入力する2つの命令間のデータ依存性を解消
可能である。
【0019】上記コンピュータシステムは、複数の選択
可能な命令グループ化モードの何れか1つを示すモード
回路を含み、上記モード回路は上記第1のタイプの依存
性制御信号を無効化できるVLIWモードを示す出力を
生成する。
可能な命令グループ化モードの何れか1つを示すモード
回路を含み、上記モード回路は上記第1のタイプの依存
性制御信号を無効化できるVLIWモードを示す出力を
生成する。
【0020】好適には、各実行パイプラインが、連続す
るサイクルでそのパイプラインに入力される命令間の上
下方向のデータ依存性をチェックする上下方向のデータ
依存性をチェックし、また依存性を解消するためにパイ
プラインの実行に一時的遅延を生じさせる上下方向依存
性チェック回路を含む。
るサイクルでそのパイプラインに入力される命令間の上
下方向のデータ依存性をチェックする上下方向のデータ
依存性をチェックし、また依存性を解消するためにパイ
プラインの実行に一時的遅延を生じさせる上下方向依存
性チェック回路を含む。
【0021】
【発明の実施の形態】本発明の実施例を一例として、添
付の図面を参考にして説明する。
付の図面を参考にして説明する。
【0022】本実施例のコンピュータシステムは複数の
命令を並列実行するよう構成されており、また特に高デ
ジタル信号処理(DSP)を実行する場合に適してい
る。命令は、プログラムメモリ11に保持され、制御ユ
ニット12に送られた後に、4つの並列実行パイプライ
ン13、14、15、16に供給される。パイプライン
13および14は、算術演算を行う命令を実行するよう
構成されたデータユニット18のスロット0およびスロ
ット1として示されている。またパイプライン15およ
び16は、データメモリ20へのメモリアクセス命令を
実行する場合に使用されるアドレスユニット19のスロ
ット0およびスロット1として示されている。アドレス
ユニット19のスロット1およびスロット0を、アドレ
スユニット19および幾つかのリソースを共有する一般
ユニット21に命令を供給するのに使用してもよい。一
般ユニット21は、制御レジスタファイルと分岐回路と
を含んでおり、伝送路23で命令分岐情報を制御ユニッ
ト12に供給するのに使用される。
命令を並列実行するよう構成されており、また特に高デ
ジタル信号処理(DSP)を実行する場合に適してい
る。命令は、プログラムメモリ11に保持され、制御ユ
ニット12に送られた後に、4つの並列実行パイプライ
ン13、14、15、16に供給される。パイプライン
13および14は、算術演算を行う命令を実行するよう
構成されたデータユニット18のスロット0およびスロ
ット1として示されている。またパイプライン15およ
び16は、データメモリ20へのメモリアクセス命令を
実行する場合に使用されるアドレスユニット19のスロ
ット0およびスロット1として示されている。アドレス
ユニット19のスロット1およびスロット0を、アドレ
スユニット19および幾つかのリソースを共有する一般
ユニット21に命令を供給するのに使用してもよい。一
般ユニット21は、制御レジスタファイルと分岐回路と
を含んでおり、伝送路23で命令分岐情報を制御ユニッ
ト12に供給するのに使用される。
【0023】データユニット18の2つのパイプライン
13および14は、共通データレジスタファイル26、
および命令に対応するガード値を保持する共通ガードレ
ジスタファイル27を共有している。ガードされた命令
実行は、断定命令実行と同じ意味を有する。また、2つ
のパイプラインはデータユニット18の共通命令発信待
ち行列29から命令を取出して、待ち行列29の命令は
データユニット18の共通依存性チェック回路39によ
ってそのデータ依存性がチェックされる。この依存性チ
ェックでは、連続するサイクルで待ち行列29から同一
のパイプラインに取り出された命令間のデータ依存性を
調べるものであり、これは上下方向の依存性と呼ばれて
いる。データユニット18の各パイプライン段における
動作のシーケンスを、通常レジスタファイル26または
27の何れかにアクセスするデータオペランド取込であ
る第1段30として概略的に図示する。例えばALUユ
ニット33またはパイプラインの一部を構成する乗算お
よび累算ユニット34を使用することによって、次のサ
イクルで2つの連続する実行段31および32が発生す
る。第2の実行段32の後には演算の結果がレジスタフ
ァイル26または27に戻るデータ書換段35が続く。
データユニット18の2つの並列パイプラインにも同様
のパイプラインが存在する。
13および14は、共通データレジスタファイル26、
および命令に対応するガード値を保持する共通ガードレ
ジスタファイル27を共有している。ガードされた命令
実行は、断定命令実行と同じ意味を有する。また、2つ
のパイプラインはデータユニット18の共通命令発信待
ち行列29から命令を取出して、待ち行列29の命令は
データユニット18の共通依存性チェック回路39によ
ってそのデータ依存性がチェックされる。この依存性チ
ェックでは、連続するサイクルで待ち行列29から同一
のパイプラインに取り出された命令間のデータ依存性を
調べるものであり、これは上下方向の依存性と呼ばれて
いる。データユニット18の各パイプライン段における
動作のシーケンスを、通常レジスタファイル26または
27の何れかにアクセスするデータオペランド取込であ
る第1段30として概略的に図示する。例えばALUユ
ニット33またはパイプラインの一部を構成する乗算お
よび累算ユニット34を使用することによって、次のサ
イクルで2つの連続する実行段31および32が発生す
る。第2の実行段32の後には演算の結果がレジスタフ
ァイル26または27に戻るデータ書換段35が続く。
データユニット18の2つの並列パイプラインにも同様
のパイプラインが存在する。
【0024】アドレスユニット19についても、同様
に、パイプライン15および16の両方が、データメモ
リ20に動作をロードまたは保存する際に使用されるポ
インタ値を保持する共通レジスタファイル40にアクセ
スする。2つのパイプラインはそれぞれ、共通命令発信
待ち行列41からその命令を取出し、また同様の上下方
向の依存性チェックがアドレスユニット19によって両
パイプライン15および16に共通して行われる。上下
方向の依存性チェック42は、データユニットの上下方
向の依存性チェック39と呼ばれるものと同様である。
2つのパイプライン15および16を介して取り出され
た命令を実行する場合、2つのパイプラインが、レジス
タファイル40にアクセスし、加算および減算ユニット
43を使用することがある。アドレスユニットの各パイ
プラインは、図に示すようなパイプライン段を有してい
る。第1段は、その後に実行段45とアドレス書換段4
6が続くアドレスオペランド取込44である。データユ
ニット18およびアドレスユニット19の両パイプライ
ンにおいては、バイパス回路47が設けられており、パ
イプラインの特定の段の迂回が可能になる。
に、パイプライン15および16の両方が、データメモ
リ20に動作をロードまたは保存する際に使用されるポ
インタ値を保持する共通レジスタファイル40にアクセ
スする。2つのパイプラインはそれぞれ、共通命令発信
待ち行列41からその命令を取出し、また同様の上下方
向の依存性チェックがアドレスユニット19によって両
パイプライン15および16に共通して行われる。上下
方向の依存性チェック42は、データユニットの上下方
向の依存性チェック39と呼ばれるものと同様である。
2つのパイプライン15および16を介して取り出され
た命令を実行する場合、2つのパイプラインが、レジス
タファイル40にアクセスし、加算および減算ユニット
43を使用することがある。アドレスユニットの各パイ
プラインは、図に示すようなパイプライン段を有してい
る。第1段は、その後に実行段45とアドレス書換段4
6が続くアドレスオペランド取込44である。データユ
ニット18およびアドレスユニット19の両パイプライ
ンにおいては、バイパス回路47が設けられており、パ
イプラインの特定の段の迂回が可能になる。
【0025】マシンは、プログラマ/ソフトウェアツー
ルチェーンによって定義されるプログラムの配列を重視
している。即ち、この後者が、例えばスロット0〜スロ
ット1の左右方向(同列方向―horizontal―)の依存性
を回避するようプログラムメモリ空間に命令を設定する
と、(配列段にある)マシンは配列を常に重視する。
ルチェーンによって定義されるプログラムの配列を重視
している。即ち、この後者が、例えばスロット0〜スロ
ット1の左右方向(同列方向―horizontal―)の依存性
を回避するようプログラムメモリ空間に命令を設定する
と、(配列段にある)マシンは配列を常に重視する。
【0026】 例:GP32プログラミングモードの場合 プログラムアドレス Obx ... x 0100: R1 = R2 + R3; (配列したスロット1) Obx ... x 1000: R0 = R1; (配列したスロット0) Obx ... x 1100: R5 = R6; (配列したスロット1) (Obxxは2進アドレスを示す) ソフトウェアが命令を配列したため、R1の依存性によ
り分割が生じることはない(命令R1=R2+R3はス
ロット1にあり、またR0=R1はそれに続くスロット
0にあるため)。配列器はこの配列が常に重視されるよ
う構成されており、例えばプログラムが命令R1+R2
+R3に分岐すると、配列器は以下を生成する。
り分割が生じることはない(命令R1=R2+R3はス
ロット1にあり、またR0=R1はそれに続くスロット
0にあるため)。配列器はこの配列が常に重視されるよ
う構成されており、例えばプログラムが命令R1+R2
+R3に分岐すると、配列器は以下を生成する。
【0027】 スロット1 スロット0 サイクルN: R1=R2+R3 NOP サイクルN+1: R5=R6 R0=R1 メモリのプログラム配列が維持されるように確定的動作
を行うことは重要である。制御ユニット12は、先取り
バッファからデコーダ82への命令の供給を制御する配
列器を備えている。配列段においては、配列器は命令配
列がデコーダ、そして同一サイクルで各実行スロットに
供給されるマイクロ命令内で維持されるようにする。
を行うことは重要である。制御ユニット12は、先取り
バッファからデコーダ82への命令の供給を制御する配
列器を備えている。配列段においては、配列器は命令配
列がデコーダ、そして同一サイクルで各実行スロットに
供給されるマイクロ命令内で維持されるようにする。
【0028】データユニット18およびアドレスユニッ
ト19の両者は、データメモリインタフェース制御50
およびデータメモリコントローラ51を介してデータメ
モリ20に接続されている。データメモリインタフェー
ス制御50は、双方向バス53によって、データユニッ
ト18およびアドレスユニット19の両方に接続されて
いる。インタフェース制御50は、バスによってバス5
3にそれぞれ接続される複数の待ち行列を有している。
これらの待ち行列は、それぞれスロット0および1に対
するロードデータ待ち行列60および61を含んでい
る。待ち行列62および63は、スロット0およびスロ
ット1のデータレジスタに転送されるポインタ値を保持
している。待ち行列64および65は、スロット0およ
び1のポインタレジスタへの転送のためのデータ値を保
持している。
ト19の両者は、データメモリインタフェース制御50
およびデータメモリコントローラ51を介してデータメ
モリ20に接続されている。データメモリインタフェー
ス制御50は、双方向バス53によって、データユニッ
ト18およびアドレスユニット19の両方に接続されて
いる。インタフェース制御50は、バスによってバス5
3にそれぞれ接続される複数の待ち行列を有している。
これらの待ち行列は、それぞれスロット0および1に対
するロードデータ待ち行列60および61を含んでい
る。待ち行列62および63は、スロット0およびスロ
ット1のデータレジスタに転送されるポインタ値を保持
している。待ち行列64および65は、スロット0およ
び1のポインタレジスタへの転送のためのデータ値を保
持している。
【0029】データメモリコントローラ51は、データ
保存待ち行列70およびアドレス保存待ち行列71を有
している。
保存待ち行列70およびアドレス保存待ち行列71を有
している。
【0030】データメモリ20からデータユニット18
のデータレジスタファイルへデータをロードする命令が
実行されると、アドレスユニット19はデータメモリ2
0にアクセスして、適切な待ち行列60または61から
データを転送することによって、データレジスタファイ
ル26の更新を完了させる前に、必要なデータをロード
データ待ち行列60または61にロードすることが理解
されよう。同様に、データユニット18からデータメモ
リ20へデータを保存する命令を実行すると、データメ
モリ20の保存動作が完了する前に、待ち行列71内の
保存アドレスと共に適切なデータが保存データ待ち行列
70に保持される。
のデータレジスタファイルへデータをロードする命令が
実行されると、アドレスユニット19はデータメモリ2
0にアクセスして、適切な待ち行列60または61から
データを転送することによって、データレジスタファイ
ル26の更新を完了させる前に、必要なデータをロード
データ待ち行列60または61にロードすることが理解
されよう。同様に、データユニット18からデータメモ
リ20へデータを保存する命令を実行すると、データメ
モリ20の保存動作が完了する前に、待ち行列71内の
保存アドレスと共に適切なデータが保存データ待ち行列
70に保持される。
【0031】データユニット18のパイプラインとは別
個の並列パラレルパイプラインにおいてアドレスユニッ
ト19のメモリアドレス指定命令を実行することによ
り、コンピュータシステムは、データユニット18で実
行される算術演算と無関係にメモリアクセスが実行され
るのとはまた別にアクセス動作を行う。これにより、メ
モリの待ち時間が縮小される。通常の繰り返し動作を行
うデジタル信号処理システムにおいては、有効メモリ待
ち時間は実行中のプログラムからは不可視化される。
個の並列パラレルパイプラインにおいてアドレスユニッ
ト19のメモリアドレス指定命令を実行することによ
り、コンピュータシステムは、データユニット18で実
行される算術演算と無関係にメモリアクセスが実行され
るのとはまた別にアクセス動作を行う。これにより、メ
モリの待ち時間が縮小される。通常の繰り返し動作を行
うデジタル信号処理システムにおいては、有効メモリ待
ち時間は実行中のプログラムからは不可視化される。
【0032】上記の説明において、パイプライン13、
14、15、16を介して送られる全ての命令は、可能
性のある上下方向の依存性についてハードウェアチェッ
クを受ける。これは、実行ユニットの既知の方法で行わ
れる。上下方向の依存性チェックで何らかのデータ依存
性が見つかれば、実行ユニットはバイパスを使用するよ
う動作し、あるいはパイプライン対13、14の一方ま
たはパイプライン対15または16の一方を一時的に低
速化させるバイパスが使用できない場合は、パイプライ
ン対の一方に一時的な遅延を生じさせてデータ依存性を
解消させる。遅延は、命令発信待ち行列29によって生
じるか、あるいはデータ依存性を解消するのに必要な各
遅延周期で実行パイプラインの第1段階30または40
に送られる無オペランド取込に対応する信号を供給する
ことによって生じる。データ依存性のチェックには、ガ
ード値を表すデータを含む何らかの形式のデータが含ま
れることが理解される。
14、15、16を介して送られる全ての命令は、可能
性のある上下方向の依存性についてハードウェアチェッ
クを受ける。これは、実行ユニットの既知の方法で行わ
れる。上下方向の依存性チェックで何らかのデータ依存
性が見つかれば、実行ユニットはバイパスを使用するよ
う動作し、あるいはパイプライン対13、14の一方ま
たはパイプライン対15または16の一方を一時的に低
速化させるバイパスが使用できない場合は、パイプライ
ン対の一方に一時的な遅延を生じさせてデータ依存性を
解消させる。遅延は、命令発信待ち行列29によって生
じるか、あるいはデータ依存性を解消するのに必要な各
遅延周期で実行パイプラインの第1段階30または40
に送られる無オペランド取込に対応する信号を供給する
ことによって生じる。データ依存性のチェックには、ガ
ード値を表すデータを含む何らかの形式のデータが含ま
れることが理解される。
【0033】図1に示す制御ユニット12も、左右方向
の依存性チェックを行うよう構成されている。本明細書
においては、同一のマシンサイクルで並列パイプライン
に供給される命令間のデータ依存性のことを左右方向
(同列方向―horizontal―)の依存性と呼ぶ。制御ユニ
ット12は、プログラムカウンタと、プログラムメモリ
11からの命令取込動作のメモリアドレスを生成するア
ドレス生成器80を備えている。制御ユニットは、何れ
かの時間にマシンが動作している命令モードを示す命令
モードレジスタ81を有している。マシンは、可変命令
ビット長さのスーパースケーラモードを含む複数のモー
ドから選択された1つのモード、または超長命令ワード
(VLIW)で動作する。本実施例の異なるモードの例
を図5に示している。第1命令モードでは、16ビット
の命令の対が各マシンサイクルにおいて制御ユニット1
2のデコーダ82に送られる。この命令の対は、ビット
シーケンスW0、W1などを有するスロット0、スロッ
ト1として表される。各ビットシーケンスW0、W1
は、1マシンサイクルで発せられ、またこのモードをス
ーパースケーラモードであるGP16モードと呼ぶこと
にする。
の依存性チェックを行うよう構成されている。本明細書
においては、同一のマシンサイクルで並列パイプライン
に供給される命令間のデータ依存性のことを左右方向
(同列方向―horizontal―)の依存性と呼ぶ。制御ユニ
ット12は、プログラムカウンタと、プログラムメモリ
11からの命令取込動作のメモリアドレスを生成するア
ドレス生成器80を備えている。制御ユニットは、何れ
かの時間にマシンが動作している命令モードを示す命令
モードレジスタ81を有している。マシンは、可変命令
ビット長さのスーパースケーラモードを含む複数のモー
ドから選択された1つのモード、または超長命令ワード
(VLIW)で動作する。本実施例の異なるモードの例
を図5に示している。第1命令モードでは、16ビット
の命令の対が各マシンサイクルにおいて制御ユニット1
2のデコーダ82に送られる。この命令の対は、ビット
シーケンスW0、W1などを有するスロット0、スロッ
ト1として表される。各ビットシーケンスW0、W1
は、1マシンサイクルで発せられ、またこのモードをス
ーパースケーラモードであるGP16モードと呼ぶこと
にする。
【0034】第2スーパースケーラ命令モードでは、そ
れぞれ32ビット長さである2つの命令が、各マシンサ
イクルでデコーダ82に送られる。この場合、両ビット
シーケンスW0、W1はサイクル0で発せられ、またビ
ットシーケンスW2、W3はサイクル1で発せられる。
このモードをここではGP32モードと呼ぶことにす
る。
れぞれ32ビット長さである2つの命令が、各マシンサ
イクルでデコーダ82に送られる。この場合、両ビット
シーケンスW0、W1はサイクル0で発せられ、またビ
ットシーケンスW2、W3はサイクル1で発せられる。
このモードをここではGP32モードと呼ぶことにす
る。
【0035】第3命令モードでは、4つの命令が、それ
ぞれ32ビット長さのビットシーケンスW0、W1、W
2、W3で形成される。これらの命令は単一取込動作の
結果デコーダ82へ単一サイクルで供給される。これを
ここではVLIWモードと呼ぶことにする。
ぞれ32ビット長さのビットシーケンスW0、W1、W
2、W3で形成される。これらの命令は単一取込動作の
結果デコーダ82へ単一サイクルで供給される。これを
ここではVLIWモードと呼ぶことにする。
【0036】GP16およびGP32の両モードにおい
ては、2つの命令のみが各サイクルにおいて実行パイプ
ラインに送られる。この2つの命令にはスロット0およ
びスロット1が指定され、データユニットまたはアドレ
スユニットに送られるか、あるいは各ユニットにそれぞ
れ1つずつ送られる。スロット0(スロット1)の命令
は常にAU0またはDU0(それぞれAU1またはDU
1)に送られる。命令(例えばロードデータレジスタ)
によって、AUおよびDUの両者に対してマイクロ命令
が生成される。例えば、スロット1のロードDRによ
り、AU1およびDU1のマイクロ命令が生成される。
図1のハードウェア回路は、GP16およびGP32モ
ードにおいてパイプラインに供給される命令の上下方向
および左右方向の依存性をチェックする。
ては、2つの命令のみが各サイクルにおいて実行パイプ
ラインに送られる。この2つの命令にはスロット0およ
びスロット1が指定され、データユニットまたはアドレ
スユニットに送られるか、あるいは各ユニットにそれぞ
れ1つずつ送られる。スロット0(スロット1)の命令
は常にAU0またはDU0(それぞれAU1またはDU
1)に送られる。命令(例えばロードデータレジスタ)
によって、AUおよびDUの両者に対してマイクロ命令
が生成される。例えば、スロット1のロードDRによ
り、AU1およびDU1のマイクロ命令が生成される。
図1のハードウェア回路は、GP16およびGP32モ
ードにおいてパイプラインに供給される命令の上下方向
および左右方向の依存性をチェックする。
【0037】マシンがパイプライン処理される場合、命
令モードはパイプラインのどの位置でも必ずしも同一で
あるわけではなく、例えばDUパイプラインで実行され
るマイクロ命令はGP32命令から生成されるが、デコ
ーダ82はモードを変更しており、GP16モードにな
っている。しかし、命令モードはデコーダ82において
重要であるだけなので、マイクロ命令は命令モードとは
無関係である。
令モードはパイプラインのどの位置でも必ずしも同一で
あるわけではなく、例えばDUパイプラインで実行され
るマイクロ命令はGP32命令から生成されるが、デコ
ーダ82はモードを変更しており、GP16モードにな
っている。しかし、命令モードはデコーダ82において
重要であるだけなので、マイクロ命令は命令モードとは
無関係である。
【0038】GP16およびGP32モードの符号化は
異なっており、それに対しVLIW命令は4つのGP3
2命令から構成されており、符号化は異なっていない。
異なっており、それに対しVLIW命令は4つのGP3
2命令から構成されており、符号化は異なっていない。
【0039】VLIWモードの場合、上下方向の依存性
チェックは図1に示すハードウェアによって行われる
が、左右方向のデータ依存性チェックは行われない。V
LIWモードにおいて単一ワードに共にグループ化され
る命令には、特定の命令互換性規則が適用される。図5
はVLIWモードのスロット0〜3を示しているが、問
題の4つのスロットがデータユニットの2つのスロット
およびアドレスユニットの2つのスロットに上記当する
ことが理解される。そのため、VLIWワード内におけ
る命令のグループ化には、ゼロ、アドレスユニットの1
つまたは2つの命令、データユニットの1つまたは2つ
の命令が含まれていなければならない。VLIWモード
の何れか1つのアドレスユニットスロットは、一般ユニ
ット21で使用される制御命令を含んでいてもよい。
チェックは図1に示すハードウェアによって行われる
が、左右方向のデータ依存性チェックは行われない。V
LIWモードにおいて単一ワードに共にグループ化され
る命令には、特定の命令互換性規則が適用される。図5
はVLIWモードのスロット0〜3を示しているが、問
題の4つのスロットがデータユニットの2つのスロット
およびアドレスユニットの2つのスロットに上記当する
ことが理解される。そのため、VLIWワード内におけ
る命令のグループ化には、ゼロ、アドレスユニットの1
つまたは2つの命令、データユニットの1つまたは2つ
の命令が含まれていなければならない。VLIWモード
の何れか1つのアドレスユニットスロットは、一般ユニ
ット21で使用される制御命令を含んでいてもよい。
【0040】命令モードレジスタ81は、図2に示すよ
うな2ビットレジスタである。これらの2ビットは、ど
の命令モードが使用されているかを示すものである。V
LIW命令の場合、両ビットは1に設定される。このレ
ジスタ81の出力は、左右方向依存性制御回路85のA
NDゲート84に送られる。このため、ゲート84の出
力は、伝送路86上で命令がVLIWモードであるか否
かを示している。1サイクルの単一取込動作で得た命令
がデコーダ82で解読されると、依存性チェック回路8
7で左右方向のデータ依存性がチェックされる。チェッ
カ87は、左右方向のデータ依存性が見つかったか否か
を示す出力を制御回路85に送る。チェッカ87からの
出力は、デコーダ82で解読された命令に応じて、伝送
路91でHdep信号、または伝送路92で分割信号を
送るセレクタ回路90に送信される。分割信号92は、
並列実行パイプライン対の動作における分割が左右方向
の依存性を解消するために必要であることを表す。分割
伝送路92は、命令モードがVLIW命令のモードであ
るか否かを示す伝送路86の信号を受信するゲート回路
95に供給される。命令がVLIWモードであれば、ゲ
ート95は分割出力を無効にするので、ゲート95の出
力96は無効化される。これは、VLIW命令モードの
場合のみ生じる。GP16またはGP32モード命令に
左右方向(同列方向―horizontal―)の依存性が見つか
った場合、分割は伝送路96で行われる。
うな2ビットレジスタである。これらの2ビットは、ど
の命令モードが使用されているかを示すものである。V
LIW命令の場合、両ビットは1に設定される。このレ
ジスタ81の出力は、左右方向依存性制御回路85のA
NDゲート84に送られる。このため、ゲート84の出
力は、伝送路86上で命令がVLIWモードであるか否
かを示している。1サイクルの単一取込動作で得た命令
がデコーダ82で解読されると、依存性チェック回路8
7で左右方向のデータ依存性がチェックされる。チェッ
カ87は、左右方向のデータ依存性が見つかったか否か
を示す出力を制御回路85に送る。チェッカ87からの
出力は、デコーダ82で解読された命令に応じて、伝送
路91でHdep信号、または伝送路92で分割信号を
送るセレクタ回路90に送信される。分割信号92は、
並列実行パイプライン対の動作における分割が左右方向
の依存性を解消するために必要であることを表す。分割
伝送路92は、命令モードがVLIW命令のモードであ
るか否かを示す伝送路86の信号を受信するゲート回路
95に供給される。命令がVLIWモードであれば、ゲ
ート95は分割出力を無効にするので、ゲート95の出
力96は無効化される。これは、VLIW命令モードの
場合のみ生じる。GP16またはGP32モード命令に
左右方向(同列方向―horizontal―)の依存性が見つか
った場合、分割は伝送路96で行われる。
【0041】デコーダ82からの命令は、伝送路100
を介して発信回路99から並列実行パイプライン13、
14、15、16に送られる複数の並列マイクロ命令を
生成するマイクロ命令生成器98に送られる。分割信号
96が使用されると、分割ビットが各実行パイプライン
に送られたマイクロ命令に設定されるので、データ依存
性は解消される。2つのパイプライン、例えばデータユ
ニットのパイプライン13、14が命令発信待ち行列2
9からマイクロ命令を取り出すと、分割ビットが検出さ
れるので、データ依存性のある2つの命令の実行が、パ
イプラインが連続して命令を送る間にサイクル同期で分
割されてパイプラインを通る。別の命令のパイプラン段
からのデータを待機するために遅延が必要なパイプライ
ンは、遅延した命令が、実行の必要段階で他方のパイプ
ラインから利用できるデータを損失することなく実行可
能になるまで、命令発信待ち行列29から単一または複
数の動作サイクルの無オペランド取込を表す信号を受信
する。そのため、伝送路96で分割信号を使用すること
により、同一のマシンサイクルで発せられた並列命令間
の左右方向のデータ依存性チェックを行い、各パイプラ
インの通過タイミングで上下方向の調整を行うことで依
存性を解消できることが理解される。分割信号が無い場
合、データユニット18またはアドレスユニット19の
2つのパイプライン(スロット0およびスロット1)に
送られたマイクロ命令は密結合しているので、それぞれ
のパイプラインに同時に送られるのみである。分割信号
は2つのスロットを結合し、スロット1パイプラインで
の入力が可能になる少なくとも1サイクル前にスロット
0パイプラインへの入力を可能にする。
を介して発信回路99から並列実行パイプライン13、
14、15、16に送られる複数の並列マイクロ命令を
生成するマイクロ命令生成器98に送られる。分割信号
96が使用されると、分割ビットが各実行パイプライン
に送られたマイクロ命令に設定されるので、データ依存
性は解消される。2つのパイプライン、例えばデータユ
ニットのパイプライン13、14が命令発信待ち行列2
9からマイクロ命令を取り出すと、分割ビットが検出さ
れるので、データ依存性のある2つの命令の実行が、パ
イプラインが連続して命令を送る間にサイクル同期で分
割されてパイプラインを通る。別の命令のパイプラン段
からのデータを待機するために遅延が必要なパイプライ
ンは、遅延した命令が、実行の必要段階で他方のパイプ
ラインから利用できるデータを損失することなく実行可
能になるまで、命令発信待ち行列29から単一または複
数の動作サイクルの無オペランド取込を表す信号を受信
する。そのため、伝送路96で分割信号を使用すること
により、同一のマシンサイクルで発せられた並列命令間
の左右方向のデータ依存性チェックを行い、各パイプラ
インの通過タイミングで上下方向の調整を行うことで依
存性を解消できることが理解される。分割信号が無い場
合、データユニット18またはアドレスユニット19の
2つのパイプライン(スロット0およびスロット1)に
送られたマイクロ命令は密結合しているので、それぞれ
のパイプラインに同時に送られるのみである。分割信号
は2つのスロットを結合し、スロット1パイプラインで
の入力が可能になる少なくとも1サイクル前にスロット
0パイプラインへの入力を可能にする。
【0042】VLIWモード命令の場合、分割信号96
は常に無効になるので、単一のVLIWワード内の命令
間の左右方向の依存性は、許容できるVLIW命令ワー
ドの形成においてソフトウェアを使用して解消しなけれ
ばならない。
は常に無効になるので、単一のVLIWワード内の命令
間の左右方向の依存性は、許容できるVLIW命令ワー
ドの形成においてソフトウェアを使用して解消しなけれ
ばならない。
【0043】しかしながら、分割信号96によって各パ
イプラインの連続通過を遅延させる必要のない左右方向
のデータ依存性も存在する。データユニットの算術演算
間、およびデータユニットのロードまたは保存動作間に
左右方向のデータ依存性が存在する場合、パイプライン
の動作を一時的に低速化させることのないよう、パイプ
ラインのバイパスを構成することもできる。87の左右
方向依存性チェッカが、左右方向の依存性が生じている
ことを表す信号を制御ユニット85に送ると、セレクタ
90はデコーダ82の出力に応答する。データユニット
の算術演算およびデータユニットロードまたは保存動作
の競合で左右方向の依存性問題が発生したことをデコー
ダが知らせると、セレクタ90は伝送路92の分割信号
ではなく、Hdepを表す伝送路91の出力を送る。伝
送路91の信号Hdepは、データユニット18に供給
されるマイクロ命令に関連して送られるのみである。マ
イクロ命令生成器98は、伝送路91からのHdepが
設定され、これがデータユニット18の命令発信待ち行
列のマイクロ命令に送られることをマイクロ命令におい
て指示する。一対の命令が待ち行列29からデータユニ
ット18の2つの並列パイプラインに取り込まれると、
バイパス回路を起動させて一方のパイプラインの実行段
がHdepの指示に応答して、データ依存性問題の原因
となった動作のサイクルを回避させる。一例として、デ
ータユニット18の一方のパイプライン13がレジスタ
ファイル26のレジスタに数値をロードさせる命令を実
行し、また他方のパイプライン14がそのデータレジス
タの数値を算術演算のオペランドとして使用を試みてい
るものとする。マイクロ命令でHdep信号を使用する
と、オペランドとして必要な数値がすでにロードデータ
待ち行列60から獲得できるので、パイプラインを低速
化させる必要のないことが、適切なオペランドを探し出
そうとしている算術演算部に知らされる。その結果、パ
イプラインでの算術演算の実行で、そのデータがすぐに
使用できるようにロードデータ待ち行列60から適切な
オペランドを直接探し出し、また並列パイプライン13
で実行されている命令によりデータレジスタファイル2
6に数値がロードされるまで算術演算を低速化させる必
要はない。同様に、データユニットの一方のパイプライ
ンが特定のレジスタからのデータを保存させようとし、
並列パイプラインが算術演算を実行してレジスタの新規
の数値を生成する場合、第2実行段階から保存データ待
ち行列70に直接迂回することができる。データを抽出
して保存データ待ち行列に加える前にデータレジスタフ
ァイル26に書き込むために、パイプライン処理された
動作のうち何れか1つを低速化させる必要はない。
イプラインの連続通過を遅延させる必要のない左右方向
のデータ依存性も存在する。データユニットの算術演算
間、およびデータユニットのロードまたは保存動作間に
左右方向のデータ依存性が存在する場合、パイプライン
の動作を一時的に低速化させることのないよう、パイプ
ラインのバイパスを構成することもできる。87の左右
方向依存性チェッカが、左右方向の依存性が生じている
ことを表す信号を制御ユニット85に送ると、セレクタ
90はデコーダ82の出力に応答する。データユニット
の算術演算およびデータユニットロードまたは保存動作
の競合で左右方向の依存性問題が発生したことをデコー
ダが知らせると、セレクタ90は伝送路92の分割信号
ではなく、Hdepを表す伝送路91の出力を送る。伝
送路91の信号Hdepは、データユニット18に供給
されるマイクロ命令に関連して送られるのみである。マ
イクロ命令生成器98は、伝送路91からのHdepが
設定され、これがデータユニット18の命令発信待ち行
列のマイクロ命令に送られることをマイクロ命令におい
て指示する。一対の命令が待ち行列29からデータユニ
ット18の2つの並列パイプラインに取り込まれると、
バイパス回路を起動させて一方のパイプラインの実行段
がHdepの指示に応答して、データ依存性問題の原因
となった動作のサイクルを回避させる。一例として、デ
ータユニット18の一方のパイプライン13がレジスタ
ファイル26のレジスタに数値をロードさせる命令を実
行し、また他方のパイプライン14がそのデータレジス
タの数値を算術演算のオペランドとして使用を試みてい
るものとする。マイクロ命令でHdep信号を使用する
と、オペランドとして必要な数値がすでにロードデータ
待ち行列60から獲得できるので、パイプラインを低速
化させる必要のないことが、適切なオペランドを探し出
そうとしている算術演算部に知らされる。その結果、パ
イプラインでの算術演算の実行で、そのデータがすぐに
使用できるようにロードデータ待ち行列60から適切な
オペランドを直接探し出し、また並列パイプライン13
で実行されている命令によりデータレジスタファイル2
6に数値がロードされるまで算術演算を低速化させる必
要はない。同様に、データユニットの一方のパイプライ
ンが特定のレジスタからのデータを保存させようとし、
並列パイプラインが算術演算を実行してレジスタの新規
の数値を生成する場合、第2実行段階から保存データ待
ち行列70に直接迂回することができる。データを抽出
して保存データ待ち行列に加える前にデータレジスタフ
ァイル26に書き込むために、パイプライン処理された
動作のうち何れか1つを低速化させる必要はない。
【0044】Hdep指示は、マイクロ命令の一部とし
てデータユニット18の命令発信待ち行列29に供給さ
れる。しかしながら、これはデータユニットの実行ユニ
ットが使用可能な情報であり、通常これらの命令にはデ
ータユニット18内で命令を実行すべきか否かを決定す
るガード値が含まれている。そのため、Hdep信号が
存在することで可能性があることを示すバイパスは、命
令の実行されることを命令のガード値が確認する場合の
み有効となる。
てデータユニット18の命令発信待ち行列29に供給さ
れる。しかしながら、これはデータユニットの実行ユニ
ットが使用可能な情報であり、通常これらの命令にはデ
ータユニット18内で命令を実行すべきか否かを決定す
るガード値が含まれている。そのため、Hdep信号が
存在することで可能性があることを示すバイパスは、命
令の実行されることを命令のガード値が確認する場合の
み有効となる。
【0045】上記より、データおよびアドレスユニット
の異なるスロットに送られる命令間に左右方向のデータ
依存性、またパイプ段階間に上下方向のデータ依存性が
発生することが分かる。これらの依存性は、書込み後の
読み出し動作、または書込み後の書き込み動作、または
読み出し後の書込み動作で生じることがある。分割指示
を使用することにより解消される書き込み後の読み出し
動作の左右方向依存性の例は、以下の通りである: これらの命令がメモリに配置され、メモリから取り込ま
れる共通伝送路のスロット0にR1+R0が、またスロ
ット1にR3=R2+R1が発生した場合、以下の依存
性が生じる。
の異なるスロットに送られる命令間に左右方向のデータ
依存性、またパイプ段階間に上下方向のデータ依存性が
発生することが分かる。これらの依存性は、書込み後の
読み出し動作、または書込み後の書き込み動作、または
読み出し後の書込み動作で生じることがある。分割指示
を使用することにより解消される書き込み後の読み出し
動作の左右方向依存性の例は、以下の通りである: これらの命令がメモリに配置され、メモリから取り込ま
れる共通伝送路のスロット0にR1+R0が、またスロ
ット1にR3=R2+R1が発生した場合、以下の依存
性が生じる。
【0046】図に示す2つのDUマイクロ命令のR1に
は、左右方向のRAW依存性が存在する。従って、CU
により分割が設定される。
は、左右方向のRAW依存性が存在する。従って、CU
により分割が設定される。
【0047】 DU1 DU0 分割: R3=R2+R1 R1=R0 分割は、DU0マイクロ命令がDU1マイクロ命令の少
なくとも1サイクル前に実行されることを表している。
なくとも1サイクル前に実行されることを表している。
【0048】 サイクルN: NOP R1=R0 サイクルN+1: R3+R2+R1 NOP Hdep指示を使用することで解消される書き込み後読
み出しの左右方向の依存性の例は、以下の通りである: アセンブリ: R1=[P1]; (即ち、レジスタR1が、ポインタレジス タP1に付与されたアドレスを有するメ モリ位置に保持されている数値と共にロ ードされる) R0=R1; DU μ命令(配列されたスロット0/1を前提とする): RAW左右方向依存性 − CUによって設定されたHdep DU1 DU0 R0=R1 R1=[P1] 単一のパイプラインのパイプ段間に生じる上下方向の依
存性は、パイプラインでバイパスを有効化するか、ある
いはデータ依存性を解消させるべく単一または複数のサ
イクルに一時的な遅延を生じさせるオペランド取込の低
速化を行うことにより解消される。このような上下方向
の依存性のバイパスの例を図3に示す。この例は、2つ
のMACパイプライン段において繰り返される乗算およ
び累算動作を示している。2つのソース値110および
111は、動作の1サイクルで求められ、第2のサイク
ルでユニット112において乗算される。出力113は
サイクル3で累算動作114に供給される。累算動作の
出力115は、パイプラインバイパスを経て返送され、
次のサイクルにおいてMAC2で使用可能となる。累算
動作114は、累算値が使用可能になる前に、パイプラ
インの書換段を経る必要なしに前回の累算動作の結果を
即座に使用することが可能となる。従って、出力115
は累算動作115の入力でマルチプレクサ116に送ら
れるので、迂回が行われる。
み出しの左右方向の依存性の例は、以下の通りである: アセンブリ: R1=[P1]; (即ち、レジスタR1が、ポインタレジス タP1に付与されたアドレスを有するメ モリ位置に保持されている数値と共にロ ードされる) R0=R1; DU μ命令(配列されたスロット0/1を前提とする): RAW左右方向依存性 − CUによって設定されたHdep DU1 DU0 R0=R1 R1=[P1] 単一のパイプラインのパイプ段間に生じる上下方向の依
存性は、パイプラインでバイパスを有効化するか、ある
いはデータ依存性を解消させるべく単一または複数のサ
イクルに一時的な遅延を生じさせるオペランド取込の低
速化を行うことにより解消される。このような上下方向
の依存性のバイパスの例を図3に示す。この例は、2つ
のMACパイプライン段において繰り返される乗算およ
び累算動作を示している。2つのソース値110および
111は、動作の1サイクルで求められ、第2のサイク
ルでユニット112において乗算される。出力113は
サイクル3で累算動作114に供給される。累算動作の
出力115は、パイプラインバイパスを経て返送され、
次のサイクルにおいてMAC2で使用可能となる。累算
動作114は、累算値が使用可能になる前に、パイプラ
インの書換段を経る必要なしに前回の累算動作の結果を
即座に使用することが可能となる。従って、出力115
は累算動作115の入力でマルチプレクサ116に送ら
れるので、迂回が行われる。
【0049】図4は、図1に示すデータユニット18の
特定の例で使用できるフルバイパス回路を詳細に示して
いる。この例においては、パイプライン13をスロット
0またはDU0として、またパイプライン14をスロッ
ト1(DU1)として示している。この場合、各パイプ
ラインを、実行段31および32、最終データ書換段3
5が後に続くデータオペランド取込段階30で表してい
る。第1実行段31には、演算および論理ユニット(A
LU)33および第1乗算および累算動作(MAC)3
4が含まれる。また、第2実行段には、第2乗算および
累算動作(MAC)120が含まれる。同一のパイプラ
インの様々な段間に存在するバイパスを実線で示し、ま
た2つのパイプライン13および14間に存在するバイ
パスを破線で示す。図4は、各パイプラインがパイプラ
インの様々な段に4つの可能なバイパスを有しているこ
とを表している。バイパス1を使用すると、ALU動作
の結果を次のサイクルのオペランド取込で即座に利用で
きるようになる。またバイパス2を使用すると、MAC
動作の結果(パイプライン動作の2サイクル後に入手可
能)を、ALU動作の次のサイクル(1サイクル低速化
が必要となる)、または新たなMAC動作の次のサイク
ルで低速化を行わずに直接使用できるようになる。バイ
パス3は、データ書換動作の間にデータレジスタファイ
ルに書き込まれた数値を同一のサイクルにてデータオペ
ランド取込で使用できるというレジスタファイルの特性
を利用する。バイパス4はALU動作の出力の1サイク
ルに対するバッファとして機能するので、データレジス
タファイルへの書換は、1サイクルを要するALU動作
または2サイクルを要するMAC動作の出力については
同一のパイプ段で行うことができる。バイパス4は同期
化を簡易化するので、全てのデータユニット動作が第2
サイクルを使用するMAC動作のみであっても、待ち時
間は全て同一である。
特定の例で使用できるフルバイパス回路を詳細に示して
いる。この例においては、パイプライン13をスロット
0またはDU0として、またパイプライン14をスロッ
ト1(DU1)として示している。この場合、各パイプ
ラインを、実行段31および32、最終データ書換段3
5が後に続くデータオペランド取込段階30で表してい
る。第1実行段31には、演算および論理ユニット(A
LU)33および第1乗算および累算動作(MAC)3
4が含まれる。また、第2実行段には、第2乗算および
累算動作(MAC)120が含まれる。同一のパイプラ
インの様々な段間に存在するバイパスを実線で示し、ま
た2つのパイプライン13および14間に存在するバイ
パスを破線で示す。図4は、各パイプラインがパイプラ
インの様々な段に4つの可能なバイパスを有しているこ
とを表している。バイパス1を使用すると、ALU動作
の結果を次のサイクルのオペランド取込で即座に利用で
きるようになる。またバイパス2を使用すると、MAC
動作の結果(パイプライン動作の2サイクル後に入手可
能)を、ALU動作の次のサイクル(1サイクル低速化
が必要となる)、または新たなMAC動作の次のサイク
ルで低速化を行わずに直接使用できるようになる。バイ
パス3は、データ書換動作の間にデータレジスタファイ
ルに書き込まれた数値を同一のサイクルにてデータオペ
ランド取込で使用できるというレジスタファイルの特性
を利用する。バイパス4はALU動作の出力の1サイク
ルに対するバッファとして機能するので、データレジス
タファイルへの書換は、1サイクルを要するALU動作
または2サイクルを要するMAC動作の出力については
同一のパイプ段で行うことができる。バイパス4は同期
化を簡易化するので、全てのデータユニット動作が第2
サイクルを使用するMAC動作のみであっても、待ち時
間は全て同一である。
【0050】バイパスにより、DU0およびDU1は完
全に対照的となる。
全に対照的となる。
【0051】異なる実行段の結果は、同一パイプライン
の初期段または並列パイプラインの適切な段に送られ、
不要な何れかのパイプラインの低速化動作が回避され
る。
の初期段または並列パイプラインの適切な段に送られ、
不要な何れかのパイプラインの低速化動作が回避され
る。
【0052】データユニット18の単一パイプライン1
3において連続する2命令サイクルが必要となる上下方
向の依存性解消を、書き込み後読み出し依存性がレジス
タR1で生じる以下の例に示す。
3において連続する2命令サイクルが必要となる上下方
向の依存性解消を、書き込み後読み出し依存性がレジス
タR1で生じる以下の例に示す。
【0053】 アセンブリ: R1=R2 * R3 + R4 // MAC動作(2サイクル) R6=R5 + R1; // R1を使用するDU算術演算 DUμ命令(両者ともスロット0を前提とする):
【表1】 サイクルNにおいてはパイプラインのDOF段階の低速
化を回避するのに使用できるバイパスは無いが、サイク
ルN+1においては、EX2のMAC動作結果をDOF
の算術演算に直接供給することにより、図4のバイパス
2を低速化の回避に使用することができる。VLIW命
令の場合、VLIW命令Nの動作結果がVLIW命令N
+1の実行の前に現れないというのが標準的な原理であ
る。しかしながら、上述したように、Hdep信号を使
用することにより、同一のVLIWワード内の2つの命
令がデータユニットレジスタおよびデータレジスタを使
用するデータユニット算術演算を伴うロードまたは保存
動作を必要とする場合に、上記の原理に反するVLIW
命令を形成することが可能となる。その場合、ロード動
作の目的レジスタは、データユニットにおける算術演算
のソースレジスタとして認識される。同様にデータユニ
ットにおける算術演算の目的レジスタは、データユニッ
トにおける保存動作のソースレジスタとして認識され
る。その結果、同一のVLIWワードの一部として形成
される複数の命令を実行する際に、幾つかの命令は前回
のVLIWワードの古いレジスタ値を使用して実行さ
れ、Hdepが適用される他の命令は同一のVLIWワ
ード内の他の命令に関連する新たな数値を使用すること
になる。これにより、適切なデータ値が使用され、また
パイプラインの低速化も抑制される。このようなVLI
W命令を図6に示している。この場合、DR1はDU動
作のソースレジスタであり、DR4はDU動作の目的レ
ジスタである。VLIW命令2では、DR4はDU動作
のソースレジスタ、またDR3はDU動作の目的レジス
タである。命令0および1間の左右方向の依存性により
Hdepが使用され、これによりデータユニットは命令
1の実行でDR1の新たな数値を使用する。2つの算術
演算によって図2のデコーダ82がHdepを設定する
ことはないので、一対の命令1および2に対してHde
pが設定されることはない。そのため、命令2の実行に
おいては、DR4の古い数値が使用される。Hdep
は、命令2および3の左右方向の依存性に対して設定さ
れるので、命令3の実行ではDR3の新規の数値が使用
される。
化を回避するのに使用できるバイパスは無いが、サイク
ルN+1においては、EX2のMAC動作結果をDOF
の算術演算に直接供給することにより、図4のバイパス
2を低速化の回避に使用することができる。VLIW命
令の場合、VLIW命令Nの動作結果がVLIW命令N
+1の実行の前に現れないというのが標準的な原理であ
る。しかしながら、上述したように、Hdep信号を使
用することにより、同一のVLIWワード内の2つの命
令がデータユニットレジスタおよびデータレジスタを使
用するデータユニット算術演算を伴うロードまたは保存
動作を必要とする場合に、上記の原理に反するVLIW
命令を形成することが可能となる。その場合、ロード動
作の目的レジスタは、データユニットにおける算術演算
のソースレジスタとして認識される。同様にデータユニ
ットにおける算術演算の目的レジスタは、データユニッ
トにおける保存動作のソースレジスタとして認識され
る。その結果、同一のVLIWワードの一部として形成
される複数の命令を実行する際に、幾つかの命令は前回
のVLIWワードの古いレジスタ値を使用して実行さ
れ、Hdepが適用される他の命令は同一のVLIWワ
ード内の他の命令に関連する新たな数値を使用すること
になる。これにより、適切なデータ値が使用され、また
パイプラインの低速化も抑制される。このようなVLI
W命令を図6に示している。この場合、DR1はDU動
作のソースレジスタであり、DR4はDU動作の目的レ
ジスタである。VLIW命令2では、DR4はDU動作
のソースレジスタ、またDR3はDU動作の目的レジス
タである。命令0および1間の左右方向の依存性により
Hdepが使用され、これによりデータユニットは命令
1の実行でDR1の新たな数値を使用する。2つの算術
演算によって図2のデコーダ82がHdepを設定する
ことはないので、一対の命令1および2に対してHde
pが設定されることはない。そのため、命令2の実行に
おいては、DR4の古い数値が使用される。Hdep
は、命令2および3の左右方向の依存性に対して設定さ
れるので、命令3の実行ではDR3の新規の数値が使用
される。
【0054】本発明は上記例の詳細部分に限定されるこ
とはない。
とはない。
【0055】上記の例においては、Hdepを使用し
て、データユニットに入力される2つの命令間の依存性
を解消しているが、これはアドレスユニットに入力され
る命令間の依存性を解消する場合にも使用してもよい。
て、データユニットに入力される2つの命令間の依存性
を解消しているが、これはアドレスユニットに入力され
る命令間の依存性を解消する場合にも使用してもよい。
【0056】
【発明の効果】以上詳細に説明したように、本発明に係
るコンピュータシステムおよびその命令実行方法によれ
ば、複数の命令を受け入れて共通サイクルのパイプライ
ンにより並列実行するものにおいて、同列方向の異なる
命令間にデータ依存性を持たせる処理およびその依存性
の解除を容易に行うことができるようになり、命令実行
の高速化と安定化とを図ることができる。また、コンピ
ュータシステムにおける命令実行の高速性に加えて、プ
ログラミングモデルがソフトウェアチェーンやアセンブ
リプログラムに対して簡単な構成としておくことがで
き、リアルタイム動作においても命令スケジューリング
を確定的に行うことが可能となると共に、リアルタイム
性を考慮しつつもタスクの簡略化を図ることもできる。
るコンピュータシステムおよびその命令実行方法によれ
ば、複数の命令を受け入れて共通サイクルのパイプライ
ンにより並列実行するものにおいて、同列方向の異なる
命令間にデータ依存性を持たせる処理およびその依存性
の解除を容易に行うことができるようになり、命令実行
の高速化と安定化とを図ることができる。また、コンピ
ュータシステムにおける命令実行の高速性に加えて、プ
ログラミングモデルがソフトウェアチェーンやアセンブ
リプログラムに対して簡単な構成としておくことがで
き、リアルタイム動作においても命令スケジューリング
を確定的に行うことが可能となると共に、リアルタイム
性を考慮しつつもタスクの簡略化を図ることもできる。
【図面の簡単な説明】
【図1】本発明によるコンピュータシステムのブロック
図である。
図である。
【図2】図1に示す左右方向依存性制御ユニットの詳細
を示す図である。
を示す図である。
【図3】図1のデータユニットで使用されるバイパス回
路の一部を示す図である。
路の一部を示す図である。
【図4】図1のシステムで使用されるバイパス回路の詳
細を示す図である。
細を示す図である。
【図5】図1のシステムにより使用される異なる命令モ
ードのフォーマットを示す図である。
ードのフォーマットを示す図である。
【図6】VLIW命令ワードの例を示す図である。
12 制御ユニット 13〜16 並列パイプライン 18 データユニット 19 アドレスユニット 39,42 上下方向依存性チェック 82 デコーダ 85 左右方向依存性制御 87 左右方向依存性チェッカ 98 マイクロ命令生成器
───────────────────────────────────────────────────── フロントページの続き (71)出願人 599124688 7 Avenue Gallieni, 94250 Gentilly, Franc e (72)発明者 ブリュノ、フェル フランス国サスナージュ、リュ、デュ、ム ーシュロット、14 (72)発明者 ローラン、デュクーソ フランス国サン、ナゼール、レ、ゼイム、 シュマン、ド、バラティエール、92
Claims (19)
- 【請求項1】並行パイプラインで実行する命令グループ
を各マシンサイクルで同時に供給する工程と、グループ
内の各命令を解読する工程と、グループ内の命令をチェ
ックして、各並行パイプライン対での実行中にグループ
内の何れかの命令対に左右方向のデータ依存性が存在す
るか判定する工程と、このようなデータ依存性の判定に
応じて、一方のパイプライン内のバイパスを有効化して
データ依存性を解消できるか否か、または一方のパイプ
ラインに一時的な低速化が必要か否かによって第1また
は第2のタイプの依存性制御信号を選択する工程とから
成るコンピュータシステムの命令実行方法であって、選
択された第1または第2のタイプの依存性制御信号と共
に並行パイプライン対に命令を供給する工程を更に含む
ことを特徴とするコンピュータシステムにおける命令実
行方法。 - 【請求項2】上記第1または第2のタイプの依存性制御
信号と共に並行パイプラインに命令を供給する工程と、
上記信号が第1または第2のタイプであるかに応じて低
速化またはバイパスを有効化することを含むパイプライ
ンでの命令を実行する工程とを含むことを特徴とする請
求項1記載のコンピュータシステムにおける命令実行方
法。 - 【請求項3】同一グループ内の第1の所定数の命令を有
するスーパスケーラモードまたは同一グループ内の第2
の所定数の命令を有する超長命令ワードモード(VLI
W)から命令グループ化モードを選択する工程と、どの
グループ化モードが選択されたかを示すグループ化制御
信号を供給し、上記グループ制御信号を使用して上記第
1タイプの依存性制御信号を無効化する工程とを更に含
むことを特徴とする請求項1または2記載のコンピュー
タシステムにおける命令実行方法。 - 【請求項4】上記パイプラインがデータメモリへのアク
セスを含み、上記パイプラインはメモリアクセス操作に
必要な命令の実行で使用される第1のパイプライン集合
と、算術演算を行うよう構成される第2のパイプライン
集合とを含んでいるので、算術演算からメモリアクセス
操作が切り離されることを特徴とする請求項1ないし3
の何れかに記載のコンピュータシステムにおける命令実
行方法。 - 【請求項5】共通サイクルタイミングにリンクした2つ
の並行データ操作パイプラインが、データレジスタの共
通集合にアクセスするたびに供給されることを特徴とす
る請求項4記載のコンピュータシステムにおける命令実
行方法。 - 【請求項6】上記並行データ操作パイプラインに上記第
2のタイプの依存性制御信号と共に命令が供給されるこ
とを特徴とする請求項5記載のコンピュータシステムに
おける命令実行方法。 - 【請求項7】共通サイクルタイミングにリンクした2つ
の並行パイプラインがメモリアクセスで使用されるアド
レス指定操作に供給され、上記2つのパイプラインはメ
モリアクセス操作の共通レジスタファイルにアクセスす
ることを特徴とする請求項4ないし6の何れかに記載の
コンピュータシステムにおける命令実行方法。 - 【請求項8】一対の並行データ操作パイプラインまたは
一対のアドレス指定操作パイプラインの何れかに上記第
1のタイプの依存性制御信号と共に命令が供給されるこ
とを特徴とする請求項7記載のコンピュータシステムに
おける命令実行方法。 - 【請求項9】連続するサイクルで各パイプラインに供給
される命令の上下方向のデータ依存性をチェックし、上
下方向の依存性が検出された場合、何れかのパイプライ
ンの一時的遅延によってこれを解消することを特徴とす
る請求項1ないし8の何れかに記載のコンピュータシス
テムにおける命令実行方法。 - 【請求項10】同一パイプラインの連続するサイクルに
おける命令間の上下方向のデータ依存性は、パイプライ
ン内で上下方向の依存性チェックを行い、上下方向のデ
ータ依存性が見つかった場合にパイプラインの操作に一
時的低速化を生じさせることでこれを解消することを特
徴とする請求項9記載のコンピュータシステムにおける
命令実行方法。 - 【請求項11】各並行パイプラインに命令発信待ち行列
が形成され、命令の解読後に、各パイプラインの命令発
信待ち行列に命令が供給されることを特徴とする請求項
1ないし11の何れかに記載のコンピュータシステムに
おける命令実行方法。 - 【請求項12】解読後、各命令を使用して、各パイプラ
インに必要なマイクロ命令を生成し、上記マイクロ命令
は各パイプラインの適切な命令発信待ち行列に上記第1
または第2のタイプの信号と共に供給されることを特徴
とする請求項11記載のコンピュータシステムにおける
命令実行方法。 - 【請求項13】コンピュータシステムがデジタル信号プ
ロセッサとして動作し、上記実行パイプラインは繰り返
し行われる乗算および累算操作を含むことを特徴とする
請求項1ないし12の何れかに記載のコンピュータシス
テムにおける命令実行方法。 - 【請求項14】複数の並行実行パイプラインと、命令解
読回路と、命令グループを各マシンサイクルで解読回路
を介して上記パイプラインに同時に供給する命令供給回
路と、命令をチェックして、各並行パイプライン対での
実行中にグループ内の何れかの命令対に左右方向のデー
タ依存性が存在するか判定するデータ依存性チェック回
路と、上記データ依存性チェック回路に応じて、上記パ
イプライン対の一方に遅延を生じさせて左右方向のデー
タ依存性を解消する第1のタイプ、または上記パイプラ
イン対の一方でバイパスを有効化してデータ依存性を解
消する第2のタイプの依存性制御信号を選択的に生成す
る信号生成回路とを具備して成るコンピュータシステ
ム。 - 【請求項15】算術演算の命令の実行で使用する第1の
レジスタ集合にアクセスする複数の並行実行パイプライ
ンを有するデータユニットと、メモリアクセス操作の命
令の実行で使用する第2のレジスタ集合にアクセスする
複数の並行パイプラインを有するアドレスユニットとを
含むので、メモリアクセスの命令の実行が算術演算の命
令の実行から切り離されることを特徴とする請求項14
記載のコンピュータシステム。 - 【請求項16】上記第1のタイプの依存性制御信号を使
用して、データユニットの2つのパイプラインに同時に
入力する2つの命令間のデータ依存性、または2つのア
ドレスユニットパイプラインに同時に入力する2つの命
令間のデータ依存性を解消可能であることを特徴とする
請求項15記載のコンピュータシステム。 - 【請求項17】上記第2のタイプのデータ依存性信号を
使用して、データユニットの2つのパイプラインに同時
に入力する2つの命令間のデータ依存性を解消可能であ
ることを特徴とする請求項15または16記載のコンピ
ュータシステム。 - 【請求項18】複数の選択可能な命令グループ化モード
の何れか1つを示すモード回路を含むと共に、上記モー
ド回路は上記第1のタイプの依存性制御信号を無効化で
きるVLIWモードを示す出力を生成することを特徴と
する請求項14ないし17の何れかに記載のコンピュー
タシステム。 - 【請求項19】各実行パイプラインが、連続するサイク
ルでそのパイプラインに入力される命令間の上下方向の
データ依存性をチェックする上下方向のデータ依存性を
チェックし、また依存性を解消するためにパイプライン
の実行に一時的遅延を生じさせる上下方向依存性チェッ
ク回路を含むことを特徴とする請求項14ないし18の
何れかに記載のコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99410059.2 | 1999-05-03 | ||
EP99410059A EP1050809A1 (en) | 1999-05-03 | 1999-05-03 | Computer instruction dependency |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000353091A true JP2000353091A (ja) | 2000-12-19 |
Family
ID=8242262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000134612A Pending JP2000353091A (ja) | 1999-05-03 | 2000-05-08 | コンピュータシステムにおける命令実行方法およびコンピュータシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US7111152B1 (ja) |
EP (1) | EP1050809A1 (ja) |
JP (1) | JP2000353091A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010257199A (ja) * | 2009-04-24 | 2010-11-11 | Renesas Electronics Corp | プロセッサ及びプロセッサにおける命令発行の制御方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2397667A (en) * | 2003-01-27 | 2004-07-28 | Imagination Tech Ltd | Multiple register load using a very long instruction word |
US20060230253A1 (en) * | 2005-04-11 | 2006-10-12 | Lucian Codrescu | Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment |
US20070022277A1 (en) * | 2005-07-20 | 2007-01-25 | Kenji Iwamura | Method and system for an enhanced microprocessor |
US20070283129A1 (en) * | 2005-12-28 | 2007-12-06 | Stephan Jourdan | Vector length tracking mechanism |
US8006114B2 (en) | 2007-03-09 | 2011-08-23 | Analog Devices, Inc. | Software programmable timing architecture |
US7921279B2 (en) * | 2008-03-19 | 2011-04-05 | International Business Machines Corporation | Operand and result forwarding between differently sized operands in a superscalar processor |
US11061682B2 (en) * | 2014-12-15 | 2021-07-13 | Hyperion Core, Inc. | Advanced processor architecture |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02130634A (ja) * | 1988-11-11 | 1990-05-18 | Hitachi Ltd | プロセッサシステム、コンピュータシステム及び命令処理方法 |
JPH04238537A (ja) * | 1991-01-23 | 1992-08-26 | Nec Corp | 並列パイプライン命令処理装置 |
JPH0553803A (ja) * | 1990-11-30 | 1993-03-05 | Matsushita Electric Ind Co Ltd | プロセツサ |
JPH05257687A (ja) * | 1992-01-06 | 1993-10-08 | Hitachi Ltd | 並列演算機能を有する計算機 |
JPH09274567A (ja) * | 1996-04-08 | 1997-10-21 | Hitachi Ltd | プログラムの実行制御方法及びそのためのプロセッサ |
JPH09305402A (ja) * | 1996-05-13 | 1997-11-28 | Mitsubishi Electric Corp | 並列処理プロセッサ |
WO1999014666A2 (en) * | 1997-09-12 | 1999-03-25 | Siemens Microelectronics, Inc. | Data processor with parallel decoding and execution of data and address instructions |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2016068C (en) * | 1989-05-24 | 2000-04-04 | Robert W. Horst | Multiple instruction issue computer architecture |
EP0551090B1 (en) * | 1992-01-06 | 1999-08-04 | Hitachi, Ltd. | Computer having a parallel operating capability |
WO1995022102A1 (en) * | 1994-02-08 | 1995-08-17 | Meridian Semiconductor, Inc. | Method and apparatus for simultaneously executing instructions in a pipelined microprocessor |
US5598546A (en) * | 1994-08-31 | 1997-01-28 | Exponential Technology, Inc. | Dual-architecture super-scalar pipeline |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US5826089A (en) * | 1996-01-04 | 1998-10-20 | Advanced Micro Devices, Inc. | Instruction translation unit configured to translate from a first instruction set to a second instruction set |
US5958042A (en) * | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
US5974537A (en) * | 1997-12-29 | 1999-10-26 | Philips Electronics North America Corporation | Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit |
US6480872B1 (en) * | 1999-01-21 | 2002-11-12 | Sandcraft, Inc. | Floating-point and integer multiply-add and multiply-accumulate |
-
1999
- 1999-05-03 EP EP99410059A patent/EP1050809A1/en not_active Withdrawn
-
2000
- 2000-05-02 US US09/563,704 patent/US7111152B1/en not_active Expired - Lifetime
- 2000-05-08 JP JP2000134612A patent/JP2000353091A/ja active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02130634A (ja) * | 1988-11-11 | 1990-05-18 | Hitachi Ltd | プロセッサシステム、コンピュータシステム及び命令処理方法 |
JPH0553803A (ja) * | 1990-11-30 | 1993-03-05 | Matsushita Electric Ind Co Ltd | プロセツサ |
JPH04238537A (ja) * | 1991-01-23 | 1992-08-26 | Nec Corp | 並列パイプライン命令処理装置 |
JPH05257687A (ja) * | 1992-01-06 | 1993-10-08 | Hitachi Ltd | 並列演算機能を有する計算機 |
JPH09274567A (ja) * | 1996-04-08 | 1997-10-21 | Hitachi Ltd | プログラムの実行制御方法及びそのためのプロセッサ |
JPH09305402A (ja) * | 1996-05-13 | 1997-11-28 | Mitsubishi Electric Corp | 並列処理プロセッサ |
WO1999014666A2 (en) * | 1997-09-12 | 1999-03-25 | Siemens Microelectronics, Inc. | Data processor with parallel decoding and execution of data and address instructions |
JP2001516918A (ja) * | 1997-09-12 | 2001-10-02 | インフィニオン テクノロジーズ ノース アメリカ コーポレイション | データプロセッサ |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010257199A (ja) * | 2009-04-24 | 2010-11-11 | Renesas Electronics Corp | プロセッサ及びプロセッサにおける命令発行の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US7111152B1 (en) | 2006-09-19 |
EP1050809A1 (en) | 2000-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000330790A (ja) | コンピュータシステム動作方法、コンピュータシステムにおける命令スケジューリング方法およびコンピュータシステム | |
JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
JP3120152B2 (ja) | コンピューターシステム | |
JP2918631B2 (ja) | デコーダ | |
EP0543415B1 (en) | Controlling register read operations | |
JP3151444B2 (ja) | ロード命令を処理する方法及びスーパースカラ・プロセッサ | |
WO1990014629A2 (en) | Parallel multithreaded data processing system | |
JP2002536738A (ja) | 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム | |
JPH06318155A (ja) | コンピュータシステム | |
JPH04367936A (ja) | スーパースカラープロセッサ | |
US7496737B2 (en) | High priority guard transfer for execution control of dependent guarded instructions | |
JPH04309131A (ja) | 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置 | |
US6725365B1 (en) | Branching in a computer system | |
JP2535252B2 (ja) | 並列処理装置 | |
JP2000353091A (ja) | コンピュータシステムにおける命令実行方法およびコンピュータシステム | |
CA2304609A1 (en) | Autonomously cycling data processing architecture | |
JP2874351B2 (ja) | 並列パイプライン命令処理装置 | |
EP1050805B1 (en) | Transfer of guard values in a computer system | |
US6260133B1 (en) | Processor having operating instruction which uses operation units in different pipelines simultaneously | |
JP3158107B2 (ja) | 浮動小数点状態および制御レジスタ(fpscr)命令を直接実行するための方法および装置 | |
US6721873B2 (en) | Method and apparatus for improving dispersal performance in a processor through the use of no-op ports | |
EP1050800A1 (en) | A pipelined execution unit | |
JP2861234B2 (ja) | 命令処理装置 | |
JPH10283178A (ja) | 命令を発行するための方法及びシステム | |
JP2819733B2 (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070508 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100614 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100625 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101119 |