JP2001195252A - マスク技術による無効で分岐効率向上を図るプロセッサ - Google Patents

マスク技術による無効で分岐効率向上を図るプロセッサ

Info

Publication number
JP2001195252A
JP2001195252A JP2001006735A JP2001006735A JP2001195252A JP 2001195252 A JP2001195252 A JP 2001195252A JP 2001006735 A JP2001006735 A JP 2001006735A JP 2001006735 A JP2001006735 A JP 2001006735A JP 2001195252 A JP2001195252 A JP 2001195252A
Authority
JP
Japan
Prior art keywords
instruction
instructions
invalid
processor
condition
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.)
Abandoned
Application number
JP2001006735A
Other languages
English (en)
Inventor
Patrick W Bosshart
ダブリュ、ボスハート パトリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2001195252A publication Critical patent/JP2001195252A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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)
  • Devices For Executing Special Programs (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
  • Farming Of Fish And Shellfish (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)

Abstract

(57)【要約】 【課題】 無効化を用いて分岐命令の非効率性を低減す
るプロセッサを提供する。 【解決手段】 変化可能な構造状態を有するプロセッサ
(50)。このプロセッサは、命令を格納する命令メモ
リ(52)を含む。また、プロセッサは命令パイプライ
ンも含み、パイプラインを完全に通過する命令が構造状
態を変化させる。更に、パイプラインは、命令メモリか
らパイプラインに命令をフェッチする回路(58a)を
備えている。また、プロセッサは、パイプライン内の命
令に対応する無効コード(46)を格納する回路も含
む。最後に、プロセッサは、無効コードに応答して、群
内で選択した1つ以上の命令が構造状態を変化させるの
を防止する回路(FU1ないしFU8)も含む。この構成
により、無効ワードに応じて、プロセッサ・パイプライ
ンに入る命令の内、選択された命令がプロセッサの構造
状態に影響を及ぼすのを防止する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサに関
し、更に特定すれば、かかるプロセッサにおける分岐効
率の向上に関する。
【0002】
【従来の技術】本発明は、増々発展しつつあるコンピュ
ータ技術、マイクロプロセッサ、およびその他の種類の
プロセッサの分野に関連する。プロセッサ・デバイス
は、多数の用途で用いられており、複雑化の傾向にあ
り、動作の効率を重視する市場を対象とし、かかる効率
がプロセッサの価格および性能に反映される。したがっ
て、以下の論述および実施形態は、プロセッサ効率の主
要な領域の1つ、即ち、コンピュータ・コードにおいて
非常に有効な分岐命令を対象とする。
【0003】分岐命令は、IF-THENまたはIF-THEN-ELSE
ステートメントのような高級コンピュータ言語における
条件付きステートメント、または所与の高級言語に基づ
く同一または同等の機能性を与えるその他のステートメ
ントのように、多くの状況(context)において用いられ
る。高級言語の条件付きステートメントは、ジャンプ命
令のように、機械レベルにおける一層単純な分岐命令に
コンパイル即ち変換される。いずれの場合でも、コンピ
ュータ・コード内で分岐命令に遭遇する毎に、プロセッ
サの動作フローが変化する潜在的可能性を表す。即ち、
分岐条件を満たす場合(即ち、分岐を「行なう」場
合)、その結果フローが変化し、多数のプロセッサ・ク
ロック・サイクルが余計に必要となる可能性がある。例
えば、プロセッサの現在の構造状態(architected stat
e)は、後に復元するためにセーブしておかなければなら
ない場合があり、新たなプログラム・フローの位置で命
令を取り込むことによるなどして、新たなフローを開始
しなければならない。前述の結果を更に複雑化するの
は、分岐命令は一般的に受け入れら統計的な意味で比較
的頻繁に用いられているという観念(notation)である。
例えば、最近のコードでは、分岐命令は平均6命令毎に
用いられている。更に、かかる分岐の約2/3は行われ
ている。更にまた、現行の標準では、決定した分岐を実
行するには4クロック・サイクルを要すると推定され
る。これらの数値から、分岐アクティビティがコンピュ
ータの性能を左右し得ることは容易に認められる。実
際、これらの数値が、当技術分野において分岐の非効率
性の影響を低減する種々の手法を得ようとする動機とな
ったのである。かかる手法には、分岐予測手法や、分岐
断定(branch predication)(通常単に「断定」と呼ばれ
る)手法が含まれる。後者を理解することが好適な実施
形態の理解につながるので、断定について以下に更に詳
細に論ずることにする。
【0004】多くのコンピュータでは、特にスーパース
カラーおよび特大命令ワード(「VLIW」)コンピュ
ータでは、コンパイラは、命令断定の使用によって、条
件付き分岐を排除しようとする。断定は、プロセッサ内
に、追加のハードウエアを含ませることによって実施さ
れ、このハードウエアは多くの場合、述部レジスタ(pre
dicate register)と呼ばれ、このレジスタの状態は所与
の命令と関連付けられている。更に、述部レジスタは、
関連する命令を実行する場合に満たさなければならない
条件を与える、即ち、「断定」する。言い換えると、断
定された各命令を実行する前に、それに関連する条件を
検査し、条件を満たす場合に命令を実行する。逆に、関
連する条件を満たさない場合、命令は実行されない。こ
の手法を用いると、代わりに分岐命令(または1つより
も多い分岐命令)を用いて評価されていたはず条件に基
づいてある命令を断定することによって、分岐命令の数
を削減することができる。
【0005】更に断定について例示すると共に、好適な
実施形態を更に詳しく表すために用いる凡例の概説とし
て、以下に典型的なIF-THEN-ELSEシーケンスを表す疑似
コードのリストを示す。
【表1】
【0006】当業者には明白であろうが、上に提示した
コードは条件A1を検査し、それが満たされた場合(即
ち、真である場合)、"THEN"経路に続く命令(即ち、命
令1および3)を実行してコードを完了する。一方、条
件A1が満たされない場合(即ち、偽である場合)、"E
LSE"経路に続く命令(即ち、命令2および4)を実行し
てコードを完了する。
【0007】更に別の概説として、先に提示した疑似コ
ードを、図1aに示すツリー図を用いて示す。図1aに
移ると、単一の条件ツリーを形成する命令群G1が示さ
れており、その条件はA1条件の結果であり、したがっ
て、ツリーの最上位に条件A1が示されている。更に、
条件の結果に基づいて実行する命令は、ツリーの分岐と
して示されている。即ち、A1が真の場合、ツリーの左
下側にある分岐即ち経路に沿って命令を実行する("T
HEN"というラベルで示されている)。一方、A1が
偽の場合、ツリーの右下側にある分岐即ち経路に沿って
命令を実行する("ELSE"というラベルで示されてい
る)。一旦ツリーの最下位に達すると、コードは完了す
る。
【0008】前述の疑似コードおよび図1aにおけるそ
のツリー図について、図1bは、このコードに断定を適
用可能な形状(nature)を模式図で示す。具体的には、図
1bは、ツリーにおける各命令を行単位のエントリとし
て示し、ある種の格納または各命令へのアクセスを示唆
するために概略的にボックス形状とした。また、各アク
セス可能な命令にはA1の条件を関連付け、対応する命
令と同じ行エントリに条件を置くことによって、図1b
に具体的な条件を示す。例えば、図1bにおける最初の
行は、命令1に伴い条件A1が真である場合を示す。別
の例として、図1bにおける2番目の行は、a1の条件
が偽である場合を示す(A1バーで示す)。図1bの命
令および対応する条件の関連付けにより、各命令を実行
する前に、それに関連する条件を検査し、条件を満たす
場合にのみ当該命令を実行する。最後に、図1bの図は
背景の目的のためであり、断定をハードウエアで行なう
ことができる態様を実際に表現することを意図する訳で
はないことを記しておく。実際、多くの現在のプロセッ
サ・アーキテクチャでは、述部フィールドと呼ばれる制
御ワード全体が各命令に関連付けられている場合が多
く、例えば、述部フィールドは、3ビットを含み、これ
ら3ビットで可能なビットの組み合わせの内7つを用い
て、異なる述部を格納する対応のレジスタ(例えば、汎
用レジスタ)を識別し、8番目の二進組み合わせは、単
に当該命令が断定されないことを示す。
【0009】断定は分岐命令の非効率性を低減するが、
種々の欠点もある。断定の欠点の第1例として、断定は
一般に長いコード・ブロックについては容認可能な解決
策ではないことがあげられる。コード・ブロックは、こ
の目的のために、順次実行される命令群として定義す
る。この場合、群内には分岐命令はないものとする(し
かし、群の最後に分岐命令が来ることは容認する)。更
に具体的には、大きなブロックの場合、ブロック内の各
命令を同じ条件で断定すると、ブロック内の各命令につ
いて述部を検査するために必要な資源の追加が過剰とな
り、単一の分岐命令によってブロック全体をその開始時
に条件付ける場合に生ずる負担(penalty)を容易に超え
てしまう可能性がある。その結果、断定の使用と所与の
ブロックにおける命令数に基づく分岐命令との間に折衷
案ができる。典型的に、群内における分岐命令数の制限
は、経験的に決定することができる。例えば、分岐命令
が5つの遅延スロットを用い、分岐命令自体が6実行サ
イクルを必要とするプロセッサにおいて、更に当該プロ
セッサがスーパースカラーであり、1サイクル当たり8
つまでの命令を実行可能である場合、48命令までのブ
ロックに対しては、命令を断定することは有用であると
考えられる。したがって、一般的に述べると、断定は、
相対的に短い命令ブロックと呼ばれるものについては効
率が高い。この制約があっても、事実上最近のマイクロ
プロセッサの全てはある種の断定を実施している。断定
の欠点の第2例として、現在のプロセッサの多くは、1
命令当たりに設けられる述部ビットは1つだけに過ぎな
い。したがって、かかる手法は、図1aの場合のよう
に、単一レベルの条件のみに限定される。しかしなが
ら、命令が1つよりも多い条件と関連付けられている場
合、後に更に詳しく説明するが、断定を用いて追加の条
件を命令に賦課することはできず、代わりに、前述した
非効率性を生ずる分岐命令を用いて命令を処理しなけれ
ばならないことが多い。
【0010】
【発明が解決しようとする課題】前述に鑑み、本発明者
は、先に述べた課題および欠点を認識し、分岐命令のオ
ーバーヘッドが多いという不利を大幅に低減する、改善
された実施形態を以下に提示する。
【0011】
【課題を解決するための手段】好適な実施形態は、可変
構造状態(architected state)を有するプロセッサを含
む。このプロセッサは、命令を格納する命令メモリを含
む。また、このプロセッサは命令パイプラインも含み、
パイプラインを完全に通過する命令はその構造状態を変
化させる。更に、パイプラインは、命令メモリからパイ
プラインに命令を取り込む回路を備えている。また、プ
ロセッサは、パイプライン内の命令に対応する無効コー
ド(annul code)を格納する回路も含む。最後に、プロセ
ッサは、群内で選択した1つ以上の命令が、無効コード
に応答して構造状態を変化させるのを防止する回路を含
む。
【0012】
【発明の実施の形態】図1aおよび図1bについては、
本明細書の従来技術において先に説明した。
【0013】第1例として好適な実施形態を表すため
に、図2aは、命令群G2の論理順序を示すツリー図で
ある。群G2は、多数のレベルの条件付き命令を含む。
更に具体的には、図2aの例には、2レベルの命令があ
り、最初のレベルは条件A2から成り、2番目のレベル
は条件B2およびC2から成る。図2aのツリー図の残
りの構造は、先に図1aによって行なった概説から容易
に理解することができ、図2aのツリー図を形成する、
以下の疑似コードによって更に例示する。
【表2】
【0014】このコードは、第1レベルの条件A2を検
査し、これが真か否かについて判定を行なう。条件A1
が満たされる場合、フローは命令1に向かい、次いで第
2レベルの条件B2に進む。条件A2が満たされない場
合、フローは命令2に向かい、第2レベルの条件C2に
進む。加えて、第2レベルの条件B2およびC2の各々
に続いて、フローは、条件を満たす場合には、ツリー図
において所与の条件の左下側に示す命令に進み、条件を
満たさない場合、所与の条件の右下側にある命令に進
む。例えば、条件B2に関して、これを満たす場合、フ
ローは命令3および7を処理する。一方、条件B2を満
たさない場合、フローは命令4および8を処理する。そ
れ以外の可能性については、当業者は確認することがで
きよう。最後に、群G2の2つの異なるレベルは、従来
技術と関連付けて先に述べたように、1ビット断定シス
テムによってそれが完全に処理されるのを防止する。言
い換えると、1ビット断定システムでは、条件A1を検
査し、述部ビットを確立するために用いる場合、条件B
2およびC2も検査しなければならない。
【0015】図2bは、好適な実施形態の第1の態様の
論理図を示す。更に具体的には、図2bはまず図2aの
ツリー図にも示した命令群G2を示す。ここで理解すべ
きは、これらの命令は、本実施形態の異なる実施態様に
よっては、プロセッサ内において種々の方法で表現可能
であるということである。例えば、かかる命令は、パイ
プライン内に保留しておくことや、レジスタ・ファイル
等に格納する場合がある。いずれにしても、以下に説明
する好適な方法は、図2aに示すような少なくとも2レ
ベルの条件付きツリーを形成する命令の何らかの形式の
格納表現へのアクセスを想定する。
【0016】また、図2bには、追加の記憶装置も示
す。これは、以下で明らかにする理由のために、本明細
書では無効ワードと呼ぶ。好適な実施形態では、無効ワ
ードは、所与の命令群内の命令に対応する二進エレメン
トを含む。例えば、図2bの図では、無効ワードAW1
は、E11ないしE1Nで識別したN個のエレメントを有
するものとして示されており、E1インディケータにお
ける「1」は、当該エレメントを無効ワードAW1と関
連付けるために用いられ、下付き文字はワードの一端か
ら他端に向かって単調に増分していく。エレメントE1
1ないしE1Nの各々は、図2bにおける同じ行に沿った
群G2内の命令に対応する。尚、この点について、条件
には命令の形式が考慮され、したがって各条件は、無効
ワードAW1内のエレメントに関連付けられていること
を記しておく。あらゆる場合において、この整合の例と
して、エレメントE10は命令1に対応し、エレメント
E11は命令2に対応し、エレメントE12は命令(およ
び条件)B2に対応し、エレメントE111は命令10に
対応する。更に、そして、後に説明するように、群G2
の最上位にある命令(即ち、命令A1)に対応するエレ
メントはないことを記しておく。最後に、これまでの論
述および本明細書の残り部分における更なる詳細によっ
て、種々の記憶装置または状態デバイスを用いて無効ワ
ードを実行(perform)し、一例としてレジスタが使用可
能であることを、当業者は認めよう。
【0017】図3aは、好適な実施形態による方法10
の簡略フロー・チャートを示す。方法10は、コンパイ
ラで実行することが好ましく、図2bからの無効ワード
AW1の状態をセットする。実際には、後に詳細に説明
するように、好適な実施形態では、方法10は、互いに
相補的な2つの異なる無効ワードを形成するために繰り
返される。方法10を理解するために、そのステップを
最初に説明し、次いで命令群G2に関連付けて、その応
用例をいくつかあげることにする。方法10はステップ
12にて開始し、命令群における条件結果(condition o
utcome)を憶測する。ここで、分析する最初の条件は、
群の最上位にある条件である。例えば、群G2に関し
て、方法10は条件A2から開始する。ステップ12の
第1例では、条件A2は真であると仮定し、方法10は
ステップ14に進み、第1無効ワードのために、命令群
の"ELSE"経路に沿った各命令に対して無効ワード・ビッ
トをセットする。ステップ14の後、フローはステップ
12に戻り、この時点において、条件(例えば、A2)
を偽と仮定する。偽の仮定に応答して、方法10はステ
ップ16に進み、第2無効ワードのために、命令群の"T
HEN"経路に沿った各命令に対して無効ワード・ビットを
セットする。ステップ14および16によって得られる
二者の各々について、以下で更に説明する。これら二者
に到達する前に、好適な実施形態の別の態様の概説とし
て、一旦ビットを無効ワード内でセットしたなら、セッ
トしたビットに対応する命令は後に無効化、即ち、抑制
され、プロセッサの構造状態を変化させないことを記し
ておく。無効化は種々の方法で行なうことができ、以下
で更に詳しく取り上げることにする。最後に、本明細書
において具体的な回路について説明しないという点で、
方法10は、当業者によって認められるような種々の回
路および動作によって実施することができ、種々の異な
る形式のプロセッサの一部であってもよいことを記して
おく。
【0018】図2cは、再度図2bの命令群G2および
無効ワードAW1を示すが、ここでは、条件A2が真で
あると仮定した場合に、方法10にしたがってセットさ
れる二進エレメントの状態も更に示す。即ち、条件A2
が真であると仮定した場合、ステップ14において、コ
ンパイラは、命令群G2の"ELSE"経路に沿った各命
令に対応する、無効ワードAW1におけるビットをセッ
トする。図2aのツリー図から、ELSE経路に沿った
命令とは、命令2、C2、5、6、9、および10であ
ることを確認することができる。したがって、図2cで
は、エレメントE12、E14、E17、E18、E111
およびE112がセットされることがわかる。何故なら、
これらは命令2、C2、5、6、9、および10に対応
するからである。図2cの無効ワードAW1にビットの
状態が与えられると、次に、好適な実施形態では、命令
2、C2、5、6、9、および10は、プロセッサの構
造状態を変化させることを許されなくなる。実際には、
後に好適な実施形態に示すように、これらの命令は実行
することを許されない。更に、同様に後に認められるで
あろうが、好適な実施形態によって分岐命令の代わりと
して行われる動作が、分岐動作に伴う遅延や予測不可能
性を回避し、しかも分岐を用いる場合に頻繁に見られる
ような、分岐命令に続く命令のスケジューリングを複雑
化することや不可能にすることはない。更に付け加える
と、条件C2は、つまり、抑制された命令の1つであ
り、条件として、これは検査されないことを更に記して
おく。したがって、先に述べた1ビット断定システムと
比較すると、プロセッサの負担は減少する。
【0019】図2dは、再度図2bの命令群G2よび無
効ワードAW1を示すが、図2dは、条件A2を偽と仮
定した場合に方法10にしたがってコンパイラによって
セットされる二進エレメントの状態を示す。即ち、条件
A2が偽であると仮定した場合、ステップ16は、命令
群G2の"THEN"経路に沿った各命令に対応する、無効ワ
ードAW1内のビットをセットする。図2aのツリー図
から、THEN経路に沿った命令とは、命令1、B2、3、
4、7、および8であることを確認することができる。
したがって、図2dでは、エレメントE11、E13、E
5、E16、E19、およびE110がセットされること
がわかる。何故なら、これらは命令1、B2、3、4、
7および8に対応するからである。図2dの無効ワード
AW1内のビットの状態が与えられると、次に、好適な
実施形態では、命令1、B2、3、4、7、および8
は、プロセッサの構造状態を変化させることを許されな
い。更に、これらの命令はプロセッサによって実行され
ないのが好ましいので、そしてこれら実行されない命令
は、検査されない条件B2の検査およびそれに対する応
答によって生ずる複雑性を含むので、分岐命令の検査お
よびそれに対する応答の遅延および複雑性は生じない。
【0020】図3bは、好適な実施形態による方法20
のフロー・チャートを示す。方法20は、コンパイラに
よって実行することが好ましく、以下で実証するよう
に、図3aの方法10のステップを含み、この場合も種
々の無効ワードに対してビット状態を決定するための動
作を行なう。方法20は、単に命令フローの検査を示す
開始ステップ22にて開始し、一例として、命令は命令
群G2として認めることができる。シーケンス内にある
命令の1つが条件付き命令であることが検出されると、
ステップ24に到達する。これに応答して、方法20は
ステップ26に進み、ステップ24で検出した条件は、
確立されている所与の無効ワードでは既に無効化されて
いるか否か、即ち、条件が当該無効ワード内において設
定されているビットに対応するか否かについて判定を行
なう。検出された条件が既に無効化されている場合、方
法20はステップ22に戻り、その後別の条件を検出す
ることができる。一方、検出された条件が未だ無効化さ
れていない場合、方法20はステップ28に進む。
【0021】ステップ28は、ステップ24で検出した
条件が、所与の命令ツリーの最下位レベルにあるか否か
について判定を行なう。検出した命令がツリーの最下位
にある場合、方法20はステップ30に進む。一方、検
出した命令がツリーの最下位ではない場合、方法20は
ステップ12に進む。一旦図2aに戻り、ステップ28
の動作を一例として示すことができる。即ち、ステップ
28は、到達したが無効化されていない命令に対して
(ステップ26によって実行されるように)、命令B2
またはC2のいずれかが命令ツリーの最下位にあること
を判定する。その結果、かかる命令に対して、方法20
はステップ30に進み、ステップ30は命令を断定す
る。この場合、断定は従来技術と同様である。この動作
を更に詳しく例示するために、図4aおよび図4bは、
断定をこれらの命令に適用することができる形状を模式
図で示す。ここでは、かかる形態は、述部レジスタ等を
用いることによって具体化することができる。これらの
図を端的に見ていくと、図4aは命令B2に対する述部
形成を示し、一方図4bは命令C2に対する述部形成を
示す。したがって、図4aでは、命令B2が、条件とし
て、検査で真であった場合、次いで命令3および7を実
行し、一方、命令B2が検査で偽であった場合、命令4
および8を実行することを表す。同様に、図4bでは、
命令C2が、条件として、検査で真であった場合、次に
命令5および9を実行し、一方命令C2が検査で偽であ
った場合、命令6および10を実行することを表す。図
4aおよび図4bの指示の各々は、図2aのツリー構造
から、容易に確認することができる。
【0022】前述の動作を更に実証するために、ここで
方法20のステップを辿っていくことにする。方法20
が開始すると、ステップ22で群G2内の命令を処理
し、ステップ24において条件A2を検出する。ステッ
プ26は、条件A2が無効化されているか否かについて
評価する。しかしながら、この時点では、群G2に関し
ては無効化は行われておらず、したがってフローはステ
ップ28に進む。次に、ステップ28は、条件A2がツ
リーの最下位にあるか否かについて判定を行なう。そし
て、そうではないので、フローはステップ12に進む。
ステップ12は、まず、条件A2の結果が真であると見
なし、したがって、フローはステップ14に進み、第1
無効ワード内のビット状態をセットし、"ELSE"経路に沿
ったビットを1にセットする。言い換えると、したがっ
て、ステップ14は、図2cに示す状態となるように、
エレメントをセットする。次に、フローは再度ステップ
12に戻り、次に条件A2が偽であると見なす。これに
応答して、方法20はステップ16に進み、第2無効ワ
ードに対して、命令群の"THEN"経路に沿った各命令に対
して無効ワード・ビットをセットする。言い換えると、
したがって、ステップ16は、図2dに示す状態となる
ように、エレメントをセットする。ステップ14および
16によって得られた二者の各々について、以下で更に
説明することにする。いずれにしても、一旦ステップ1
6が完了すると、フローはステップ22に戻る。これに
ついても以下で更に説明することにする。
【0023】条件A2を処理しステップ22に戻った
後、ステップ24において条件B2を検出し、ステップ
26に進み、検出した条件(即ち、B2)は、所与の形
成された無効ワードに対して無効化されているか否かに
ついて評価する。例えば、図2dの無効ワードAW1は
現在形成されているワードを示すと仮定する。したがっ
て、図2dでは、セットされたエレメントE13の状態
が示すように、実際に条件B2が無効化されていること
がわかる。その結果、フローはステップ26からステッ
プ22に戻り、以下で説明するように、更に処理し続け
る。
【0024】ステップ22では、条件A2およびB2を
既に検出した後プロセスを継続し、条件C2が検出され
ると、次にステップ24に到達する。次に、ステップ2
6において、条件C2が無効化されているか否かについ
て検査する。本例が既に図2dにおける無効ワードAW
1によって反映されているとすると、エレメントE1 4
の状態がクリアされ、条件C2が無効化されていないこ
とを示す。その結果、方法20はステップ28に進む。
ステップ28では、条件C2が最下位レベル条件である
ことを判定し、フローをステップ30に渡し、ツリーに
おいて条件C2に続く命令を断定する。したがって、ス
テップ30では、図4bに示す述部情報を作成し、方法
20は、停止ステップ32において終了する。最後に、
図3bには明示的に示さないが、好適な実施形態の方法
20を繰り返し、ツリーの最下位レベルではない全ての
条件に対して可能な結果(即ち、真かまたは偽のいずれ
か)に基づいて、各々異なる可能な無効ワードを形成す
ることを当業者は認めよう。
【0025】以上、図2aの2レベル命令群に適用した
場合について、好適な実施形態を例示したが、これは2
レベルよりも多い命令群にも適用されることは認められ
よう。この態様を更に示すために、図5aは命令群G3
の論理順序を示すツリー図であり、群G3は3レベルの
条件付き命令を含む。先に行なった論述から、当業者は
図5aに表すようなシーケンスを理解して当然であるの
で、群G3における各命令に関する詳細な説明は不要で
ある。したがって、端的に述べると、群3は第1レベル
条件A3から開始し、その下に第2レベルの条件B3お
よびC3の集合があり、更にその下に第3レベルの条件
D3、E3、F3、およびG3の集合がある。本明細書
における先のツリーの凡例と同様、条件が満たされると
見なされれた場合、フローは条件の左下に進み、一方条
件が満たされない場合、フローは条件の右下に進む。
【0026】更に、好適な実施形態による無効ワードの
使用を例示するために、図5bないし図5gは、図5a
で検査した条件に関する異なる発見に応答して方法20
によってセットされた、無効ワードAW2の値を示す。
これらの図の一部についてこれより詳細に説明するが、
当業者は、残りの図における同様の結果を、以下の説明
から容易に理解できて当然である。
【0027】図5bは、条件A3が真であると見なされ
た場合に、方法20によってセットされる対応の無効ワ
ードと共に、命令群G2を示す。更に具体的には、方法
20が群G2に関して動作する場合、ステップ24にお
いて条件A3を検出し、これが無効化されていないの
で、ステップ26からステップ28にフローが移り、命
令A3が最下位レベルの命令ではないので、フローはス
テップ12に進む。ステップ12では、条件A3が真で
あると見なし(図5bの例)、したがって、次にステッ
プ14において、群G2の"ELSE"経路に対応する無
効ワードAW2内の各エレメントをセットする。このよ
うに、図5aに関しては、ステップ14は、条件A3の
右下の経路に沿った命令に対応して、無効ワードAW2
内の各エレメントをセットし、更に図5bから、これら
セットしたエレメントが命令2、C3、5、6、F3、
G3、11、12、13、14、19、20、21、お
よび22に対応することが示される。これらセットした
ビットは、最終的にこれらの命令を無効化し、無効化し
た命令は3つの条件(即ち、C3、F3、およびG3)
を含むことがわかる。これらの条件が無効化されたの
で、これらの条件を検査し、検査に応答して作用するの
に要する、プロセッサの追加負担はない。最後に、図5
cは、条件A3が偽であると見なされた場合に、方法2
0によってセットされる対応の無効ワードと共に、命令
群G2を示す。前述の説明から、当業者は、その無効ワ
ードの状態が図5bに示したものと相補的であり、した
がって、条件A3の左下にある経路に沿った命令を無効
化することを理解して当然である。
【0028】図5dは、条件A3が真であると見なさ
れ、更に条件B3も真であると見なされた場合に、方法
20によってセットされる対応の無効ワードと共に、命
令群G2を示す。即ち、方法20は、ステップ14また
は16のいずれかを最初に実行した後、次の条件を処理
するために戻ることを思い出されたい。したがって、図
5dの例では、最初に条件A3が真であると見なされた
ときに、ステップ24の次の実行において、条件B3を
検出する。次に、ステップ26において、条件B3が無
効化されているか否かについて判定を行い、この判定を
行なう際、本例に対応する図5の無効ワードAW2を参
照する。この場合、条件A3は真と見なされ、この分析
から条件B3は無効化されていないと判定され、したが
って、ステップ26からステップ28にフローが移る。
条件B3は最下位レベルの条件ではないので、ステップ
28からステップ12にフローが移る。図5bの例で
は、条件B3も真であると見なされるので、ステップ1
2の動作により、フローは再度ステップ14に渡され、
ここで、条件B3より下にある命令に関して、無効ワー
ドAW2内のビットをセットする。このように、条件A
3を処理したときに既にセットされていたワードに加え
て、真であると見なされた条件Bに関してステップ14
を再度実行し、ステップ14は、条件B3の右下にある
経路に沿った命令に対応する、無効ワードAW2内のビ
ットをセットする。したがって、図5dは、図5bから
の真である条件A3について示したのと同じようにセッ
トされたビットに加えて、命令4、E3、9、10、1
7、および18に対応するビットもセットされることを
示す。
【0029】以上提示した例から、当業者は図5eない
し図5gも容易に辿ることができ、残りのビットを確認
することができよう。これらの図は各々、ステップ12
における判断(assumption)に応じた、方法20の異なる
適用を示す。この点に関して、これら残りの図は以下の
ことを示す。(1)図5eは、条件A3が真であると見
なされ、条件B3が偽であると見なされた場合の無効ワ
ードAW2の値を示す。(3)図5fは、条件A3が偽
であると見なされ条件C3が真であると見なされた場合
の無効ワードAW2の値を示す。(4)図5gは、条件
A3が偽であると見なされ条件C3が偽であると見なさ
れた場合の無効ワードAW2の値を示す。したがって、
これらの例の各々では、図5bにおけると同様、第2レ
ベルの条件が方法20によって処理される時点までに
は、群G3内の20個全ての命令が無効化されることが
わかる。つまり、これらの命令はプロセッサ・パイプラ
インの一部を通過することができ、代わりに分岐命令を
用いてツリーを実施した場合のような非効率性を伴うこ
とはない。最後に、当業者は、上位レベルの条件(即
ち、A3、B3、およびC3)の真または偽の値に基づ
いて、究極的に方法20は4つの下位レベルの条件から
選択した1つに収束し、この選択した条件の下にある残
りの命令を断定することも理解して当然である。その結
果、最下位レベルの条件に続く命令(複数の命令)に対
して、一層の処理効率向上が得られる。
【0030】無効ワードを確立するための好適な実施形
態について詳細に説明したので、これより、無効ワード
・ビットの使用により、当該ワードによって指定された
命令(複数の命令)を抑制し、抑制即ち「無効化」した
命令がプロセッサの構造状態を変化させないようにする
構成に注意を向けることにする。最初に、図6aに関連
付けて説明する。概説として、図6aは命令抑制システ
ム40の図を示す。システム40は、種々の異なる回路
を用いて実施することができるが、図6aは、好適な実
施形態に望ましい論理機能性を表す。更に、条件を検出
し無効ワード内の状態を設定する好適な方法論に関して
先に記したように、システム40は、種々の異なる形式
のプロセッサにおいて実施可能である。
【0031】次にシステム40の詳細に移ると、これは
無効ワードを含み、これまでの例から区別するために、
この無効ワードをAW3で示すことにする。好適な実施
形態では、無効ワードAW3は、命令シーケンス内の所
望数の命令に対処するために、十分な数のビット・エレ
メントを含む。例えば、現在のアーキテクチャの下で
は、所望のサイズが32命令である場合があり、したが
って、図6aに示すように、無効ワードAW3は32個
のビット・エレメントE31ないしE332を含む。無効
ワードAW3の状態は、バッファ42の第1データ入力
に接続されている。バッファ42は、シフト・レジスタ
44の出力に接続された第2入力を有する。シフト・レ
ジスタ44は、無効ワードAW3が格納するビット数に
等しいサイズのシフト能力を有し、したがって、この例
では、シフト・レジスタ44は32ビット・シフト・レ
ジスタである。シフト・レジスタ44のシフト制御入力
は、NIPと称する制御信号を受け取る。これは、パケ
ット内の命令数を意味する略語であり、以下で詳細に説
明する。バッファ42の出力はビット群46を与える。
これに関して、ビット群46をこのように参照して、以
下で詳細に説明するように、あるビットをバッファ42
の出力から用いるが、これらのビットは更に別の別個の
デバイスに格納する必要はないことを示す。別個のデバ
イスに格納すると、設計の複雑化および遅延の増大を招
く可能性がある。ビット群46内のビット数は、無効ワ
ードAW3内のビット数と同一である(即ち、本例では
32)。ビット群46の32ビットは、シフト・レジス
タ44の第2入力にフィードバックされるように、そし
てこれら32ビットの最下位ビットの整数Mを無効マス
クAMとして用いるように結合される。また、無効マス
クAMは、別個のハードウエア・デバイスではなく、ビ
ット群も表すが、例示のために、これらMビットは図6
aではAM1ないしAMMとして示されている。最後に、
無効マスクAMのビットは、機能ユニット使用マップ(f
unctional unit use map)48に結合され、以下で詳細
に説明するように、コンパイラによって書き込まれ、無
効マスクAMからの1つ以上のビットを8つの機能ユニ
ットFU1ないしFU8の内適切な1つにマップする。
【0032】システム40の動作について論ずる前に、
これを実施するプロセッサも整数M個の機能ユニットを
有するものと理解されるよう記しておく。機能ユニット
とは、種々の異なる形式のデバイスの1つであり、典型
的に当技術分野では、対応する命令を「実行」すると言
われているのがこれらのユニットである。また、これに
関して、これらのユニットはプロセッサの「実行段」を
構成すると言われることが多い。一例として、図6aに
示すように、Mが8に等しいと仮定する。即ち、好適な
実施形態によるシステム40を実施するプロセッサは、
8つの機能ユニットを含む。例えば、これらのユニット
は、2つのロード/格納ユニット、2つの乗算ユニッ
ト、2つのALU動作(例えば、加算、減算、および論
理)ユニット、および2つのシフト・ユニットを含むこ
とができる。以下この例を進めて行き、無効マスクAM
内のエレメントを用いてこれら8つの機能ユニットの各
々の実行動作をイネーブルまたはディゼーブルする好適
な方法を説明する。
【0033】図6aのシステム40の動作に対する別の
概説として、図7は、コンパイラによって後に詳細に示
す順序にしたがってスケジュールされた場合の、群G3
内の命令(図5aから)を示す。最も右側の列にある各
命令と位置を合わせてあるのは、無効ワードAW1(図
2cから)内の対応ビットの状態の例である。したがっ
て、本実施形態では、無効ワード・ビットは、事実上、
対応する命令と共に移動する。更に図7には、対応する
命令を実行する機能ユニットの指示が、最も左側の列に
示されている。例えば、命令1は機能ユニットFU1
実行するように割り当てられており、命令2は機能ユニ
ットFU2が実行するように割り当てられている等とな
っている。尚、このようなコンパイラによる命令の機能
ユニットに対する割り当ては、当技術分野では公知であ
るが、ここに記載するように無効ワードおよび関連する
機能性の使用および実施を加えることにより、公知の実
施態様の改良がもたらされる。図7に示す追加の概念
は、命令パケットの観念(notation)であり、パケット
は、単一クロック・サイクル内で対応する機能ユニット
によって実行するようにスケジュールされた命令群とし
て定義されている。例えば、第1パケットP1は命令1
および2から成り、したがってこれら2つの命令は単一
クロック・サイクルで実行するようにスケジュールされ
ている。別の例として、第2パケットP2は命令3、B
2、2、およびC2から成り、したがってこれら4つの
命令は単一のクロック・サイクル中に実行するようにス
ケジュールされている。1一例として論ずるプロセッサ
は8つの機能ユニットを含むので、このプロセッサのパ
ケットには8つまでの対応する命令が含まれることは、
当業者は当然理解しよう。
【0034】ここで図6aのシステム40に戻り、図7
によって与えられた追加の状況にしたがって、その動作
を説明する。最初に、無効マスクAMを0にリセットす
ると仮定する。更に、一例として、リセット後の所与の
時点において、図6aの無効ワードAW3は、図7から
の無効ワードAW1のビット状態を含むと仮定し、かか
るビットは、図7に示したのと同じ順序でコンパイラに
よって無効ワードAW3に割り当てられており、命令1
の無効ビット状態はエレメントE31に位置し、命令2
はエレメントE32に位置し、このようにシーケンス全
体にわたって進めて行き、最後の命令、命令10のビッ
ト状態はエレメントE312に位置すると仮定する。つま
り、この時点では、図7からの無効ワードAW1のビッ
トは全て、図6aからの無効ワードAW3として格納さ
れ、バッファ42に出力され、バッファ42によってビ
ット群46として与えられる。加えて、ビット群46か
らの下位8(即ちM=8)ビット(LSB)は無効マス
クAMのビット、即ち、元々無効ワードAW3に格納さ
れていたエレメントE31ないしE38からのビットを形
成し、転送されてビット群46内のビットとなり、した
がって、それぞれ、ビットAM1ないしAM8として出力
される。最後に、本例は、無効ワードAW3を部分的に
満たされただけのものとして示しているという点で簡略
化されていることを記しておく。その理由は、命令群G
3は12個の命令のみを有し、一方無効ワードAW3
は、32命令までを有するより大きなブロックに対応す
る32ビットまで対処することができるからである。ま
た、これに関して、後に明白になる理由のために、元々
命令に対応するビットを含んでいなかった無効ワードA
W3のいずれの上位ビットも0にリセットされていると
仮定する。
【0035】更に、図6bは、前述のような設定を示
し、システム40を含むプロセッサの次のクロック・サ
イクルにおける動作を表す。最初に、図6bにおいて、
無効マスクAMは、図7の無効ワードAW1からの下位
8ビット値を格納していることが示されており、したが
って、これらの値は、パケットP1の2つの命令、パケ
ットP2の4つの命令、およびパケットP3からの命令の
2つに対応する。また、図6bは、無効マスクAMから
の1つ以上のビットを適切な対応する機能ユニットに適
正にマップするためにコンパイラによって機能ユニット
使用マップ48に書き込まれた値も示す。更に具体的に
は、好適な実施形態では、機能ユニットには、規定され
た順序付けが与えられている。この順序付けは、ここで
は、一例として機能ユニットの下付き文字によって表
す。即ち、これらはFU1からFU8まで昇順で順序付け
されており、順序付けされた各ユニットは、使用マップ
48内の位置481ないし488に対応する。以下に示す
ように、この順序付けは、使用マップ48におけるビッ
トのセットに用いられる。
【0036】図6bの論述を完了し、機能ブロックの順
序付けの観念を概説し終える前に、好適な実施形態で
は、機能ユニットの順序付けに応じて無効マスク・ビッ
トを順序付けすることもコンパイラの役割であり、この
順序付けの要件は図7に明記する順序で示されているこ
とを記しておく。更に具体的には、図7における無効ワ
ードAW1の無効ワード・ビット(および対応する命
令)は、先に論じたのと同じシーケンスに従うのではな
いことを記しておく。つまり、これらは好適な実施形態
にしたがって順序付けしなおしたことを記しておく。即
ち、先に概説した無効ワード・ビットAW1では、コン
パイラは、好ましくは、これらのビットを図6bの無効
ワードAW3内に連続する順序で配置することによっ
て、第1(少なくとも最下位)整列無効ワード・ビット
は、最も番号が小さい機能ユニットが実行するようにス
ケジュールされている命令に対応し、ユニットの番号が
大きくなるにしたがって、同様に行われる。例えば、パ
ケットP1では、最も番号が小さい機能ユニットが実行
するようにスケジュールされている命令は命令1であ
り、機能ユニットFU1が実行することになっている。
したがって、その無効ビットは、図7における最上位行
に示されている。別の例として、パケットP2では、最
も番号が小さい機能ユニットが実行するようにスケジュ
ールされている命令は命令3であり、これは機能ユニッ
トFU1が実行するようにスケジュールされており、し
たがってその無効ビットは図7ではパケットP2に対す
る最初の無効ビットとして示されている。パケットP2
の例を続けると、機能ユニットFU1の次に番号が大き
な機能ユニットが実行するようにスケジュールされてい
る命令は命令B2である。これは機能ユニットFU2
実行するようにスケジュールされており、したがってそ
の無効ビットは図7ではパケットP2に対する2番目の
無効ビットとして示されている。当業者は、図7におけ
る残りの順序付けに対してもこの態様を理解しよう。
【0037】ここで図6bに戻り、好適な実施形態で
は、所与のクロック・サイクルの間に、コンパイラは、
現サイクルの間に実行する命令を割り当てられている機
能ユニットに対応する使用マップ48の各位置に1を書
き込む。一例として、図6bは、パケットP1を実行す
るサイクルに対する使用マップ48の状態を示す。パケ
ットP1は2つの命令を含むことを思い出されたい。し
たがって、コンパイラは、2つの論理1を使用マップ4
8に書き込む。これらは各々パケットP1内にある2つ
の命令の一方に対応する。更に、使用マップ48内の1
の位置は、各命令に割り当てられた機能ユニットに対応
する。例えば、使用マップ位置481は1にセットされ
ているので、無効マスクAMからの最下位ビット(即ち
AM1)は機能ユニットFU1にマップされる。したがっ
て、図6bは、AM1からの無効マスク・ビット値0を
機能ユニットFU1にマップする矢印を示す。別の例と
して、使用マップ位置485は1にセットされているの
で、無効マスクAMからのビットAM2は、機能ユニッ
トFU5にマップされる。したがって、図6bは、AM 2
からの無効マスク・ビット値1を機能ユニットFU5
マップする矢印を示す。前述の結果として、無効ワード
の対応するビット状態を無効マスクAMに与え終えた時
点で、これらの状態は無効マスクAMから図7に識別し
た対応の機能ユニットにマップされる。実際には、この
好適なマッピング機能性は、部分的に前述の優先動作に
よって簡便化され、機能ユニットの順序付けに対応した
順序で無効ビットが配置されることを更に記しておく。
最後に、説明したばかりの本実施形態の動作は、無効マ
スクから、実行することをスケジュールされた命令数に
等しい数だけのビットを適切な機能ユニットにマップす
るのであり、説明したばかりの例では、2つの無効マス
ク・ビットのみが機能ユニットにマップされ、その結
果、現クロック・サイクルでは、無効マスクAM内の残
りのビットはプロセッサの実行に何の影響も与えないこ
とを記しておく。
【0038】一旦命令および無効マスク・ビットがそれ
ぞれの機能ユニットによって受け取られると、各ユニッ
トは受け取った無効マスク・ビットの状態に応答して動
作する。即ち、無効マスク・ビットがクリア(即ち
「0」)の場合、機能ユニットはその対応する命令を実
行する。しかしながら、無効マスク・ビットがセットさ
れている(即ち「1」)場合、機能ユニットはその対応
する命令を実行しない。これは、単に現クロック・サイ
クルの間機能ユニットをディゼーブルすることによって
行なうことができる。命令の実行を妨げることによっ
て、好適な実施形態は命令を無効化する。即ち、命令を
抑制し、プロセッサの構造状態に何の変化も起こさせな
い。これら2つの選択肢(alternative)を更に例示する
ために、図6bに示したパケットP1の例について再度
考える。この場合、機能ユニットFU1は命令1および
その0の無効マスク・ビット状態を受け取っている。し
たがって、機能ユニットFU1は命令1を実行する。逆
に、機能ユニットFU2は命令2を受け取っているが、
その無効マスク・ビット状態は1である。したがって、
機能ユニットFU2は命令2を実行しない。
【0039】また、パケットP1の命令が潜在的に実行
されるクロック・サイクルの間(即ち、対応する無効ワ
ード・ビットの状態に基づいて)、システム40はシフ
ト・レジスタ44に、パケット(NIP)値内の命令数
を与える。ここで、この数値は、現クロック・サイクル
の間に1つ以上の機能ユニットに転送された、パケット
内の命令数を識別することを説明しておくとよいであろ
う。再びP1の例に戻ると、NIPは2に等しい(即
ち、命令1および2に対応する)。加えて、シフト・レ
ジスタ44はビット群46からのフィードバック入力を
有することを思い出されたい。したがって、シフト・レ
ジスタ44は、ビット群46によって与えられた無効マ
スク・ビットを既に入力しており、本例では、無効ワー
ドAW3によって以前に与えられた無効ビット全てであ
り、命令群G3全体に対応する。次に、シフト・レジス
タ44は、NIPビットをシフトしその最下位端、即
ち、最も古い保留中の命令に対応するNIPビットを除
去する。加えて、以下で説明する理由のために、シフト
・レジスタ44は、0の値を有するNIPビットを、そ
の最上位位置(複数の上位側位置)にシフトする。この
ように、パケットP1の例では、シフト・レジスタ44
は下位2ビットをシフトして除去し、最上位ビット側に
2つの0をシフトして入力する。その結果、シフト・レ
ジスタ44がその下位側ビット位置に命令群G3のパケ
ットP2およびP3に対応する無効ワード・ビットを、図
7に示す順序で格納した時点で、残りの上位側ビット位
置には0を格納する。これらのビットは各々バッファ4
2に出力され、こうしてビット群46の一部を形成す
る。
【0040】図6cは、パケットP1の命令を実行ユニ
ットに転送し潜在的に実行する可能性がある(即ち、当
該命令に対して無効ビットがセットされていない場合実
行される)クロック・サイクルに続く、第2のクロック
・サイクルにおいて得られる無効マスク・ビットを示
す。更に具体的には、シフト・レジスタ44はパケット
1の実行との関連において下位2ビットをシフトして
除去したことを思い出されたい。その結果、図6cに示
すように、続くクロック・サイクルでは、無効マスクA
M内のビットは、図7からの順序で無効ワードAW1の
ビットを表し、これらのビットの下位2ビットは、シフ
ト・アウト動作によって既に除去されている。このよう
に、図6cの無効マスクAMにおけるビットAM1ない
しAM8は、順番に、パケットP2に関連する図7の無
効ワードAW1のビット、およびパケットP3に関連す
る下位4無効ワード・ビットに対応することは容易に確
認できよう。
【0041】また、図6cは、コンパイラによって使用
マップ48に書き込まれたマッピング・ビットを、パケ
ットP2の命令の可能な実行に関連するものとして示
す。即ち、図7から、命令3、B2、4、およびC2
は、それぞれ、機能ユニットFU 1、FU2、FU5、お
よびFU7によって実行するようにスケジュールされて
いることがわかる。その結果、コンパイラはこれらの機
能ユニット(即ち、FU1、FU2、FU5、およびF
7)に対応する使用マップ48内のビット位置をセッ
トする。更に、前述のように、コンパイラは命令3、B
2、4、およびC2を機能ユニットの順序付けに対応す
る連続順序で配置したので、パケットP2内の命令数に
等しい無効マスクAMの下位ビット数(すなわち4つの
命令、したがって、4つの無効マスク・ビット)が、機
能ユニットFU1、FU2、FU5、およびFU7にマップ
される。更に具体的には、機能ユニットFU1、FU2
およびFU5の各々は0に等しい無効マスク・ビットを
受け取り、一方機能ユニットFU7は1に等しい無効マ
スク・ビットを受け取る。最後に、無効マスク・ビット
の値に応答して、機能ユニットFU1、FU2、およびF
5の各々はそれぞれ命令3、B2、および4を実行
し、一方機能ユニットFU7は、高の無効マスク・ビッ
トに応答してディゼーブルされ、したがって命令C2は
実行されない。
【0042】これまで図6b、図6c、および図7にお
いて部分的に表した例を完全に説明するために、図6d
は、第3クロック・サイクル、即ち、パケットP1およ
びP2を実行する潜在的な可能性があるクロック・サイ
クルに続くクロック・サイクルにおいて得られる無効マ
スク・ビットおよび使用マップ・ビットを示す。無効マ
スクAM内のビットに関して、前述のパケットP2は4
つの命令を有し、したがってNIPは4に等しく、シフ
ト・レジスタ44の下位4ビットをシフトして除去さ
せ、その上位4ビットに0の値をシフト入力することを
記しておく。これらの値はバッファ42を通過し、ビッ
ト群46を形成し、下位8ビットは無効マスクAMに達
する。したがって、図6dでは、無効マスクAMはパケ
ットP3に対応する図7からの無効ワードAW1の6ビ
ットを、そこに示す順序で格納し、上位2ビットは、シ
フト・レジスタ44が先に0値の上位側ビットへのシフ
ト入力したことにより、0となっている。使用マップ4
8に関して、その値は、コンパイラによって、パケット
3の命令に対応する無効ビットを適切な機能ユニット
にマップするようにセットされている。したがって、図
6cは、パケットP3の命令に対応した、各無効マスク
・ビットの適切な機能ユニットに対する適正なマッピン
グを示すことを当業者は容易に確認することができよ
う。これに応答して、そして前述のことから、機能ユニ
ットFU2およびFU6はそれぞれの命令7および8を実
行し、一方命令ユニットFU1、FU4、FU5、および
FU8はそれぞれの命令5、9、6、および10を実行
しない、即ち、命令5、9、6、および10はプロセッ
サの構造状態には影響を与えない(即ち、これらは無効
化されている)ことが容易に認められよう。
【0043】以上、シフト・レジスタ44による無効ワ
ードのシフティングの好適な実施形態を示したが、図3
bに戻って、1点追加しておくのがよいであろう。即
ち、方法20は最下位レベルにおける条件がステップ2
8によって検出されるまで、命令群を処理することを思
い出されたい。更に、このルーピング方法論によって、
コア・ツリーの異なるレベルでの条件を評価することを
思い出し、最後に、この方法は、ツリーの最下位レベル
にはない条件については、当該条件に関係する"THEN"ま
たは"ELSE"経路のいずれかに沿って無効ビットをセット
することを記したことを思い出されたい。更に、この点
に関して、そのレベルよりも高いいずれのパケット(複
数のパケット)におけるいずれの命令(複数の命令)に
対しても、これら以前のパケット命令に対応する無効ビ
ットは既にシフト・レジスタ44によって除去されてい
ることもここで記しておく。したがって、評価されてい
る命令より前のいずれのパケットに対応する無効ビット
ももはや問題ではなく、したがって本方法によって更に
変更されることはない。
【0044】また、システム40の好適な動作に鑑み
て、無効ワードに応答して命令を抑制する他の代替実施
形態も考えられることもわかる。1つの手法は、使用マ
ップ48をなくし、各サイクル毎に無効マスクを完全に
満たすことである。即ち、無効ワードからのある数のビ
ットを無効マスクに結合し、このビット数を機能ユニッ
トの総数と等しくし、無効マスク内の所与の位置を常に
同じ対応する機能ユニットにマップすることである。こ
の場合、実行ユニットが実行するようにスケジュールさ
れていない所与のクロック・サイクルにおいて、それに
渡された無効マスク・ビットが実際の効果を有さない
(即ち、実行ユニットは既に現クロック・サイクルの間
は動作しないようにスケジュールされているからであ
る)。別の手法として、命令ストリーム内における命令
の順序を追跡し、パケットのN番目の命令を無効マスク
のビットN−1によって無効化することがあげられる。
しかしながら、パケット内に命令の順序付けの記録を維
持する必要性は他にはないことから、この手法はハード
ウエアの追加を招き、所与の実施態様では望ましくない
場合もあり得る。更に別の手法として、無効化ハードウ
エアの追加という代償により、入来するNビットの無効
ワードを得て、そのセットされているビットを、以前の
無効ワードによって無効化されていない命令にのみマッ
プし、この新しい方の無効ワードを古い方の無効ワード
に融合することがあげられる。この代替案は複雑度の増
大を必要とするが、if-then-elseツリーの階層全体にわ
たって無効化する際に、範囲の拡大を可能とする。尚、
8−ウェイVLIWでは、最初のクロック・サイクルに
おいて、新しい無効ワードを、直前の無効ワードの下位
8ビットとのみ論理ORを取ることを記しておく。上位
ビットは、無効ビットの融合を実行するために、追加の
クロックサイクルを有することができる。
【0045】先に明記した種々の手法は、その各々が究
極的には無効ワードを与え、これを変換して、割り当て
られた命令に関して機能ユニットの動作を潜在的に抑制
する。したがって、更にこの点に関して、無効ワードは
潜在的に実行されない命令に関する情報を表すことも記
しておく。この情報は、断定を用いる場合、同一命令に
関して断定の判定を行なう時点よりも前の時点において
既に把握されている。その結果、無効ワード・ビットの
セットに応答して所与のクロック・サイクルの間機能ユ
ニットをディゼーブルすることに加えて、好適な実施形
態を拡張すれば、無効ビットのセットについて事前情報
を用いて、命令が無効化されるために不要となることが
わかった他のハードウエアを停止させることができる。
例えば、断定の場合、述部が最終的に偽であることがわ
かっても、述部情報は、述部が真であることがわかった
場合に加算(または減算)を実行するために用いられる
加算器への入力を形成する2つのレジスタを更新するの
を防止するには、到達するのが遅すぎるのである。しか
しながら、無効ワード・ビットであれば十分早くわかる
ので、これらのレジスタを駆動(clocking)するのを回避
し、したがって、こうしなければ加算器が消費する余分
な電力の消散を回避することができる。
【0046】図3aおよび図3bに関連して先に説明し
たように、好適な実施形態では、プログラム・ツリーに
おける条件(複数の条件)に可能な異なる結果に基づい
て、コンパイラに異なる無効ワードを形成させることに
より、命令群の分析をコンパイラ・レベルで行なう。こ
れら無効ワードの存在により、好適な実施形態では、更
に、命令ストリーム内に、同時にまたはこれを適用する
条件の後のいずれかに実行し、応答して条件の実際の結
果に対応する適切な無効ワードを与え、関連する無効ワ
ードに応答する準備をアーキテクチャにさせる命令(ま
たは1つよりも多い命令)を挿入することによって、本
発明の教示を実施する。参考のために、本明細書の残り
の部分では、この命令(即ち、無効ワードにしたがって
無効化を行なわせる命令)を、無効命令と呼ぶことにす
る。無効命令およびそれに関係する無効ワードは、種々
の方法で作成し互いに関連付けることができるため、以
下に詳細に述べるように多数の異なる実施形態が得られ
る。これらの実施形態について論ずる前に注記すべき
は、実施態様には無関係に、無効命令(複数の命令)の
パケット位置に関して、更に別の好ましい態様が得られ
ることである。即ち、コンパイラによって挿入した無効
命令(複数の命令)は、その無効化動作(即ち、命令の
抑制)を、無効命令を含むパケットの後のサイクルにお
いて実行される命令と共に開始することが好ましい。言
い換えると、命令が命令ストリーム内で無効命令の前に
あるかまたは後ろにあるかには係らず、無効命令が無効
命令と同じパケット内にあるいずれの命令にも影響を与
えないことが好ましい。
【0047】これより無効命令およびそれに関係する無
効ワードの種々の実施形態に移るが、第1の実施形態で
は、2つの定数発生命令を実行して2つの対応する16
ビット定数を発生する。次に、2つの定数を連接して3
2ビットの無効ワードを形成する。そして、追加の無効
命令に応答して無効ワードを用いる。あるいは、ロード
命令が、メモリ等から32ビットの無効ワードをロード
させ、続いて無効命令によって、ロードされた無効ワー
ドを用いて追加の命令の実行を選択的に抑制することが
できる。第2の実施形態では、無効ワードは、命令内に
含まれる即値オペランドである。これに関して、現在の
命令は多くが、ソース識別子、宛先識別子、即値ビット
等のように、多数のビットを含む。しかしながら、無効
の機能性を得るためには、これらのビットの多くは不要
であり、したがってこれら余分なビット位置は、無効ワ
ードを直接命令内に埋め込むために用いることができ
る。この場合、しかしながら、利用可能なビット数には
制限があることが多く、したがって埋め込まれる無効ワ
ードは32ビット未満に制限される可能性がある(例え
ば、16ビットの制限)。第3の実施形態では、無効命
令は、2つの32ビット・レジスタ・ソースを指定する
ことによる等して、32ビットよりも多い無効ワードを
与え、これらを組み合わせることによって、64個の入
来する命令のために、合計64個の無効ビットを備え
る。この手法は、実際の無効化動作の前に、64個の無
効化ビットを生成するために、ロード・ダブル命令(即
ち、64ビット・ロード)を必要とする可能性が高い。
第4の実施形態では、無効化命令を断定する。これは2
つの異なるソース・レジスタを含み、各々、述部に対す
る応答に基づいて異なる無効ワードを有する。例えば、
命令群G3に戻って、ツリーの最上位にある条件A3を
述部として用いることができる。この場合、第1ソース
・レジスタは条件A3が真の場合に用いられる無効ワー
ドを格納し、第2ソース・レジスタは条件A3が偽の場
合に用いられる無効ワードを格納する。第5の実施形態
では、第4の実施形態の場合と同様に、この場合も無効
命令を断定するが、第5の実施形態では単一のレジスタ
・ソースのみを用い、条件が真の場合このレジスタ・ソ
ースの半分が無効ワードを与え、一方条件が偽の場合こ
のレジスタの別の半分が無効ワードを与える。第6の実
施形態では、無効ワードが単に次のN個の命令を無効化
させる引数Nを含むが、これまでの実施形態とは異な
り、この実施形態では、コードのシーケンスがわかって
いること、およびブロック内にブロックの外側からのコ
ードの混合がないことが必然的に要求される(即ち、混
合した命令が誤って無効化されないようにするためであ
る)。最後である第7の実施形態として、命令は述部レ
ジスタおよび単一のソース・レジスタを含む。この場
合、述部が真であると、ソース・レジスタにおける1に
対応する命令が無効化され、一方述部が偽であると、ソ
ース・レジスタにおける0に対応する命令が無効化され
る。更にこの最後の命令の実施形態に関して、追加の引
数Xを含み、これがソース・レジスタ内で使用するビッ
ト数を指定し、これによって制限することができる。即
ち、ソース・レジスタのビット容量(即ち、無効ワー
ド)が個々の群内の命令数よりも大きい場合、レジスタ
は上位側のビットに0を格納して、これらのビットに対
する命令がないことに対応付ける。この可能性により、
この第7の実施形態における引数Xは、実際の命令に対
応するビットのみを、ソース・レジスタ内で指定するよ
うにセットされ、これら上位側のビットが、命令に適用
されかかる命令を無効化する(または無効化しない)た
めに用いられるものと、誤って解釈されないようにす
る。
【0048】以上のことから、並列性およびレイテンシ
の傾向により、更に別の実施形態も得られる。即ち、一
般に、無効化に有用な命令の数は、分岐レイテンシおよ
び並列に実行可能な命令数の関数である。これら2つの
数値(aspect)の積が、分岐するよりも無効化する方が好
ましい命令数の限度となる。コンピュータ・アーキテク
チャの傾向は、これらの量双方が徐々に増大する方向に
向かっている。その結果、今後64ビットよりも更に多
くのビットをマスクの下で無効化することが望ましくな
る可能性もある。更にまた、本教示を用いると、分岐の
代わりに無効化を用いることによって、より大きなコー
ド・ブロックが使用可能となり、if-then-selse構造の
階層を実施するための無効命令の階層の使用が増大す
る。実際、16−ウェイVLIWは8−ウェイVLIW
よりも、分岐は潜在的な命令に関して2倍不経済である
ので、これをはるかに多く行なわなければならないこと
を予測することができる。
【0049】割込処理に関連して、本明細書の好ましい
無効化方法論から、最後の課題が見出される。即ち、好
適な実施形態では、無効化することが識別された保留中
の命令(即ち、無効ワード内で対応するビットがセット
されている命令)がある場合に、2種類の割込処理方法
がある。第1の手法として、割込が受け取られた場合、
本無効ワードをレジスタにセーブし、次いで無効ワード
をクリアすることにより、割込に影響を与えないように
する。その後、割込から戻るときに、セーブした情報を
新たな無効命令のデータとして別の無効命令を実行する
ことにより、格納されている無効ワードを復元する。第
2の手法として、無効ワードがいずれかの非ゼロ・ビッ
トを有するときはいつでも(即ち、少なくとも1つの命
令が既に無効化されるものとして識別されていると
き)、割込をディゼーブルすることができる。
【0050】次に、好適な実施形態の異なる適用に、論
述を向けることにする。ここでは、分岐命令が直接的な
目的ではないが、好適な実施形態は当技術分野において
ソフトウエア・パイプライニングと呼ばれる分野におい
てもいかに効果的に使用できるかということについて、
以下に表す。ソフトウエア・パイプライニングを例示す
るために、C言語で書かれ表1に示す、2ラインのコー
ドについて検討する。
【表3】 表1のコードは、双方とも長さがLのベクトルAをベク
トルBに加算し、結果をベクトルDに格納する、高級言
語のループを表す。
【0051】次に、以下の表2における低級言語のニモ
ニックについて検討する。これは、表1の命令a1およ
びa2を実施する典型的な低レベル・コード・セットで
ある。
【表4】
【0052】命令b1ないしb4は、ベクトルのエレメ
ントを別のベクトルのエレメントに加算し、その結果を
格納する単一のループを表す。更に具体的には、命令b
1およびb2は加数(addend)をレジスタR1およびR2
にロードし、命令b3はこれらの加数を加算し、命令b
4は結果をレジスタR3に格納する。
【0053】更に別の背景として、命令b1ないしb4
は、以下の現在では共通の属性を有するプロセッサによ
って実行すると仮定する。第1に、プロセッサはロード
命令を実行するために5クロック・サイクルを必要とす
ると仮定する。第2に、プロセッサは2つの異なるロー
ド・ユニットを含むと仮定する。これらの仮定により、
命令b1およびb2は同時に行われるが、命令b3は命
令b1およびb2が完了するのを待たなければならな
い、即ち、b3は命令b1およびb2に関連する5クロ
ック・サイクルの間待ってなければならないことがわか
る。更に、Lが命令a1における大きな数値に等しい場
合のように、命令b1ないしb4を多数回実行する場
合、この同じ遅延が各ループ毎に発生し、プロセッサの
効率に関しては、増々高コスト化することになる。この
潜在的な非効率性を抑えるために、当技術分野ではソフ
トウエア・パイプライングを実施している。これについ
て以下に更に詳しく説明する。
【0054】図8は、ループに適用される命令b1ない
しb4を示す。ここでは、Lは128に等しく、ソフト
ウエア・パイプライニングを用いて実施される。概説と
して、ソフトウエア・パイプライングは、ソフトウエア
・ループ処理に用いられることが多く、所与のクロック
・サイクル内における異なる命令が異なるループの繰り
返しに関連する場合に、クロック・サイクル当たりに実
行する命令数を最適化しようとするものであることを記
しておく。図8に移ると、一例として、各行において、
命令b1ないしb4の内どれが所与のクロック・サイク
ルに実行されるかが示されている。これらの命令各々の
下付き文字は、所与の命令に関連する対応のループ番号
を示す。例えば、クロック・サイクル0を見ると、命令
b1およびb2は双方とも、ループ値が0に等しい場合
に実行する(即ち、先の命令a1においてj=0)。し
たがって、クロック・サイクル0の間、2つのロード命
令が、0に等しいループ値に対して開始され、これらの
ロード命令(即ち、b1およびb2)は、値が0の下付
き文字と共に図8に示されている。同様に、クロック・
サイクル1では、2つのロード命令が、1に等しいルー
プ値に対して開始され、この同じパターンがクロック・
サイクル4まで(そして、後に詳細に説明するように、
その後も)継続する。
【0055】図8のクロック・サイクル5において、ル
ープ0に関連する2つのロード命令が開始されたので、
5クロック・サイクルが経過していることがわかる。更
に、本例では、ロード命令が完了するのに5クロック・
サイクルを要することを思い出されたい。したがって、
クロック・サイクル5の時点では、ループ0からロード
された加数がレジスタ内において得られ、互いに加算さ
れる。その結果、命令b3(即ち、ADD R1, R2)の例示
によってクロック・サイクル5の間に起こるものとして
示すように、これらの加数が加算される。更に、クロッ
ク・サイクル5における加算命令は、したがって、0の
ループ値に関連付けられているので、命令b3は0の値
の下付き文字を有するものとして示されている。最後
に、クロック・サイクル5における加算命令は、この和
を得るのに1サイクルがあればよいものと見なす。
【0056】次に、図8のクロック・サイクル6に移
り、ここに示す最初から3つの命令は、先に示したパタ
ーンに従うことがわかる。即ち、2つのロード命令から
始まり、5クロック・サイクル早く開始した命令によっ
てロードされた加数を用いて、加算命令が実行される。
加えて、そしてクロック・サイクル6に対応する行の最
後のエントリに示すように、命令b4(即ち、STORE R
3)も実行し、命令b4は、ループ0によって開始され
直前のクロック・サイクル5において加算された和を格
納する。したがって、クロック・サイクル6の終了まで
に、命令a1およびa2の最初のループ(即ち、j=
0)は完了するが、今概説したばかりのパターンのため
に、この同じ時点で、ループ6によるロード命令が開始
し、ループ1による格納命令は完了している。
【0057】クロック・サイクル6までの例示により、
クロック・サイクル6からクロック・サイクル127ま
ででは、かかるクロック・サイクル毎に、同じパターン
があることがわかる。言い換えると、かかるクロック・
サイクル毎に、2つのロード命令が開始し、5クロック
・サイクル早く開始したロード命令に対応する加数を用
いて加算命令が実行され、6クロック・サイクル早く開
始したロード命令に対応する加数を用いて、格納命令が
実行される。言い換えると、クロック・サイクル6から
クロック・サイクル127まででは、命令は、以下のよ
うに表すことができる。 blN b2N b3N-5 b4N-6
【0058】このパターンから、命令が異なるループ値
にしたがって互い違いに通過する様子を見ることができ
よう。そして、この理由のために、このプロセスはパイ
プラインと類似しており、ソフトウエア・パイプライニ
ングと命名されたのである。また、当技術分野における
用語に関して、各命令(b1ないしb4)を実行するク
ロック・サイクルを含む時間期間をコード・ループと呼
ぶことを記しておく。更に、ループ命令の一部のみが実
行される、その時間期間に先立つクロック・サイクルか
ら成る時間期間(例えば、クロック・サイクル0ないし
5)を当技術分野ではプロローグと呼ぶ。最後に、以下
で詳細に説明するように、コード・ループが最終的にル
ープ全体に対するロード命令を完了した後でも、各ルー
プ毎に命令(例えば、加算および格納)を完了するため
に残りのクロック・サイクルが必要であり、この残りの
時間期間のことを当技術分野ではエピローグと呼ぶ。
【0059】また、図8は、クロック・サイクル128
において開始するエピローグも示す。更に具体的には、
クロック・サイクル128の時点で、このループの各ロ
ード命令は既に開始されており、したがって新たなロー
ド命令(即ち、b1およびb2)は示されていない。し
かしながら、クロック・サイクル128の時点において
も、既に開始されたロード命令は、一旦ロードされた加
数に関するロードの完了に向かって動作中であるか、あ
るいは既に完了しており、一旦ロードした加数は加算さ
れ、次いで格納される。例えば、クロック・サイクル1
28では、ループ122の間にロードされた加数が、既
に加算に使用可能となっており、したがってクロック・
サイクル128の間に、命令b3がこれらの加数を加算
する(b3122によって示す)。別の例として、クロッ
ク・サイクル128において、ループ121の間にロー
ドされた加数は、既にロードされそして加算されてお
り、したがって既に格納することができる。したがっ
て、クロック・サイクル127の間に、命令b4はこれ
ら加数の和を格納する(b4121によって示す)。した
がって、このプロセスはクロック・サイクル132まで
繰り返される。最後に、クロック・サイクル133にお
いて、ループ値0ないし126までの和が計算されそし
て加算されているが、この時点ではループ127のため
にロードされる加数も既にロードされ加算されているの
で、したがって既に格納が可能となっている。したがっ
て、クロック・サイクル133の間に、命令b4はこれ
ら加数の和を格納する(b4127によって示す)。
【0060】以上、ソフトウエア・パイプライニングの
利点について実証した。ここで示したのは、各クロック
・サイクルの間、ループ・コードにおいて、前の命令の
遅延を考慮に入れながら、ループ内の命令全てをどのよ
うに実行するかについてである。実際には、この利点に
よって、ソフトウエア・パイプラインは非常に一般的に
用いられており、特に、大きなベクトルまたはアレイ処
理(例えば、画面上の画素、フィルタ係数等)の場合に
用いられている。しかしながら、本発明者は、この効果
にも拘らず、ソフトウエア・パイプライニングには未だ
欠点もあり、かかる欠点は、先に詳細に説明した好適な
実施形態をソフトウエア・パイプライニングの状況に適
用することによって、大幅に減少することがわかった。
これらの態様を更に詳しく表すために、以下ではソフト
ウエア・パイプライニングによって生ずる欠点について
最初に論じ、次いで好適な実施形態をソフトウエア・パ
イプライニングに適用することによって、かかる欠点の
影響を低減することについて論ずる。
【0061】ソフトウエア・パイプライニングの欠点
は、プロセッサにおけるそのプログラム・メモリ(また
は命令)空間の使用に起因する。即ち、プロセッサ・メ
モリは、プロセッサの高コストおよび複雑化の主たる要
因であり、そのため設計の際には多くの場合かかるメモ
リの量を制限するという対策を取り、更に、プロセッサ
が大きなプログラムに対処しなければならない場合、そ
の命令メモリが一層複雑化し不経済とならざるを得ない
ことは公知である。これらの原理を図8における命令に
適用した場合、プロローグは13命令から成ることに注
目する。したがって、これらの命令の各々は、命令メモ
リ内にそれ自体の空間(即ち、命令を取り込み実行する
ためのアドレス可能な空間)を必要とすると考えられ
る。その結果、13箇所のメモリ位置が、図8の例にお
けるプロローグに使用可能でなければならない。同様
に、エピローグは11命令から成り、したがって、11
箇所のメモリ位置が図8の例におけるエピローグに使用
可能でなければならない。しかしながら、最後に、ルー
プ・コードはそのメモリ空間の使用においてはるかに効
率的であることを記しておく。即ち、ループ・コードの
各ラインは同一の命令セットで構成されているので、通
常その命令セットがメモリ内の空間を必要とし、少数の
それ以外の命令がループを形成し、この命令セットを適
切な繰り返し回数だけ繰り返し実行する。したがって、
図8の例では、クロック・サイクル毎に4つの命令に対
して4つのメモリ空間のみがあればよい。このループの
各繰り返し毎に、本例について先に述べたクロック・サ
イクルの遅延を想定すると、2回のロードが開始され、
使用可能でありかつ5クロック・サイクルの遅延がある
ので5サイクル前に始まったロード命令に関係する加数
を用いて加算が実行され、使用可能でありかつ5クロッ
ク・サイクルの遅延があるので6サイクル前に開始した
ロード命令に関係する和を用いて格納が実行される。こ
のループを実施する際、カウンタの設定というような初
期化、ループ・コードにおける各ループ毎の当該カウン
タの減数、およびカウンタが適切なカウント値に到達す
るまでループの開始に戻すためのループ終端における分
岐の予測も必要となる。その結果、図8のループ・コー
ドをメモリ空間に実装するためには、各ラインに示すも
のについて合計4命令、そして初期化命令、減数命令、
および分岐命令が必要となり、合計7命令および7箇所
のメモリ空間のみとなる。前述のことから、ループ・コ
ードに必要な相対的なメモリ空間量は、プロローグまた
はエピローグのいずれに対するメモリ空間量よりも少な
く、一旦繰り返しの全てを完了したループ・コードがプ
ロローグまたはエピローグのいずれよりもかなり多くの
命令を占める場合には特に少ないことがわかる。
【0062】図9は、同様にLが128に等しいループ
に適用し、ソフトウエア・パイプラインを用いて実施し
た、図8の命令b1ないしb4を示すが、図9では、ソ
フトウエア・パイプライニングの改善を図っている。何
故なら、好適な実施形態は、ある命令を無効化するよう
に適用されているからである。更に具体的には、図9の
各クロック・サイクルにおいて、図8のループ・コード
に用いられる4つの命令全てが実行をスケジュールされ
ていることを記しておく。しかしながら、従来技術との
重要な相違として、図9における命令の一部は、先に説
明した好適な実施形態を用いて無効化されることがあげ
られる。図9では、無効化された命令を、命令の下付き
文字として「A」を用いて示している。実際には、図8
からのプロローグまたはエピローグのいずれかまたは双
方に対応するクロック・サイクルにおいて無効化した命
令を用いる。これについて以下で詳細に説明する。
【0063】図8のプロローグおよび図9に示すプロロ
ーグの同じクロック・サイクルの比較に注目し、更に一
例としてクロック・サイクル0に注目すると、4つの命
令b1、b2、b3、およびb4を実行するようにスケ
ジュールされている。しかしながら、下付き文字「A」
で示す命令b3およびb4(即ち、b3A、b4A)は、
命令パイプラインを通過するが、プロセッサの構造状態
には影響を与えないように無効化されることを記してお
く。したがって、図8および図9におけるクロック・サ
イクル0を比較することによって、双方の場合におい
て、命令b10およびb20が実行され、図9における命
令b3およびb4に対して行われる無効化ステップによ
って、いずれの図でもプロセッサの構造状態に対する影
響には相違がないことを当業者は認めよう。更にまた、
図8から、プロローグは、クロック・サイクル0ないし
5内にある命令で構成されていることを思い出された
い。好適な実施形態を用いることにより、図8のプロロ
ーグと同じ命令を、図9のクロック・サイクル0ないし
5において実行することができ、一方同時にこれらのク
ロックサイクルの各々において1つ以上の命令を更に無
効化する。
【0064】図8のエピローグおよび図9に示すエピロ
ーグの同じクロック・サイクルの比較に注目し、更に一
例としてクロック・サイクル128に注目すると、この
場合も、4つの命令b1、b2、b3、およびb4を実
行するようにスケジュールされている。しかしながら、
命令b1およびb2は、その下付き文字「A」で示され
るように(即ち、b1Aおよびb2A)、命令パイプライ
ンを通過するが、これらがプロセッサの構造状態に影響
を及ぼさないように、無効化されている。したがって、
図8および図9におけるクロック・サイクル128を比
較することによって、双方の図では、命令b3123およ
びb4122が実行され、図9における命令b1およびb
2に対して行われる無効化ステップのために、いずれの
図についてもプロセッサの構造状態に対する影響には相
違がないことを当業者は認めよう。また、図8から、エ
ピローグはクロック・サイクル128ないし133内に
ある命令で構成されていることを思い出されたい。好適
な実施形態を用いることによって、図8のエピローグと
同じ命令を図9のクロック・サイクル128ないし13
3において実行することができ、一方同時にこれらのク
ロック・サイクルの各々において1つ以上の命令を更に
無効化する。
【0065】前述の説明から、図9は、好適な実施形態
を実施することによってソフトウエア・パイプライニン
グが変更可能となることを示しているという点を、今や
当業者は認めよう。即ち、従来技術のソフトウエア・パ
イプライニングで以前に用いられていたソフトウエア・
ループに対して、好適な実施形態は、ループの全クロッ
ク・サイクルにて、ループ内の命令全ての実行がスケジ
ュールされるように実施されている。加えて、これらの
クロック・サイクルのいずれかの間に、これらの命令の
1つ以上が無効化される(即ち、無効ワード内の適切な
ビットをセットすることによって)。無効化する個々の
命令(複数の命令)は、所与の繰り返しの、ループを完
了するために必要な総繰り返し回数に対する関係に基づ
いて決定することができる。図9の例では、例えば、1
34クロック・サイクルの内クロック・サイクル0ない
し4の間に2つの命令が無効化され、134クロック・
サイクルの内クロック・サイクル5の間に1つの命令が
無効化され、134クロック・サイクルの内クロック・
サイクル128ないし132の間に2つの命令が無効化
され、134クロック・サイクルの内クロック・サイク
ル133の間に3つの命令が無効化される。
【0066】図9に示したものの範囲を更に表すため
に、その中に示す命令は、表3に示す以下の命令を用い
て実行可能であることを記しておく。
【表5】
【0067】表3の命令について、これより詳細に説明
する。更に、この論述において、図9も再度参照する。
更に、比較のために、従来技術のプロローグ、ループ・
コード、およびエピローグの各々に該当する動作を近似
する集合単位でこれらの命令を論ずることにする。
【0068】表3の先頭に注目すると、命令c1は第1
無効ワードを適切なレジスタにロードする。ロードされ
た無効ワードのビットは、図9のクロック・サイクル0
ないし5において無効化されるように示された命令を無
効化するように、適切にセットされている。言い換える
と、これら無効化される命令は、図8のプロローグにお
いて、パイプライン内になかった命令である。更に、無
効化する命令は合計11個であるので、無効ワードはし
たがって11個のセットされたビットを対応して有する
ことになる。命令c2は無効命令であり、これによって
レジスタに格納されている無効ワードを適切なハードウ
エアに移動させる。即ち、無効ワードは図6aにおける
無効ワードAW3として扱うことができる。命令c3
は、A0と称する第1カウンタをセットする。このカウ
ンタは、以下で一層明かになるが、図9におけるクロッ
ク・サイクル全てを完了するために要するクロック・サ
イクルの総数を定義するために用いられる。したがっ
て、本例では、カウンタA0は134にセットされる。
命令c4は、A1と称する第2カウンタをセットする。
このカウンタは、以下で一層明かになるが、図8におい
てエピローグに先立つ、図9における全ての命令を完了
するために要するクロック・サイクルの総数を定義する
ために用いられる。したがって、本例では、カウンタA
1は128にセットされる。したがって、この時点で、
ロード、加算、および格納動作を開始する準備が整う。
これは、以下で更に詳細に説明する。
【0069】命令c5、c6、c7、およびc8の最初
の繰り返しは、図9においてクロック・サイクル0とし
て示すものを表す。更に具体的には、命令c5およびc
6は、b10およびb20を実行させる。しかしながら、
命令c1およびc2の無効ワードのロードおよび実装の
ため、図9におけるクロック・サイクル0の無効化され
た命令b3Aおよびb4Aに対応して、命令c6およびc
7は無効化される。命令c9およびc10は、カウンタ
A0およびA1をそれぞれ減数する。したがって、この
時点では、図9のクロック・サイクル0が完了し、プロ
セスは図9のクロック・サイクル1に向けられる。更に
この点に関して、カウンタA0が0に達していない場合
にのみ実行するように命令c11が断定される。この例
では、この時点において、カウンタA0は1回減数され
ただけであり、したがって133の値を格納している。
つまり、述部は満たされず、命令フローは命令c5に戻
される。このリターン分岐動作から、各クロック・サイ
クル毎に、カウンタA0が0の値に達するまで、命令c
5、c6、c7、およびc8は、当該クロック・サイク
ルの間の実行がスケジュールされていることを当業者は
認めよう。更に、先にロードした11ビットの無効ワー
ドのために、これら繰り返しクロック・サイクルの間に
合計11個の命令が無効化される。ここで、無効化ワー
ドは、図9のクロック・サイクル0ないし5において下
付き文字「A」で示すものである。
【0070】一旦カウンタA0が128の値に減数され
ると、命令c3、c4、c5、およびc6は実行がスケ
ジュールされており、無効化されていなければ、合計6
回実行され、これによって図9におけるクロック・サイ
クル0ないし5を終了する。また、この時点において、
6回減数した後のカウンタA1は122の値に等しい。
更に、クロック・サイクル6によって、セットされた残
りの無効ワード・ビットはなく、したがってカウンタA
0が6に到達するまで、表3のコードは、命令c5、c
6、c7、およびc8の各々をスケジュールしかつ実行
する。これらの命令の無効化はない。
【0071】カウンタA0が6の値に達すると、カウン
タA1は同時に0の値に減数されたことになる。その結
果、命令c12およびc13の述部が満たされ、これに
応答して、命令c12は第2無効ワードを適切なレジス
タにロードする。第2無効ワードのビットは、図9のク
ロック・サイクル128ないし133において無効化さ
れるように示されている命令を無効化するように、適切
にセットされている。無効化する命令が合計13個ある
ので、無効ワードはしたがって13個の対応するセット
されたビットを有することになる。命令c13は、レジ
スタに格納されている第2無効ワードを適切なハードウ
エアに移動させる無効命令であり、この場合も図6aに
おける無効ワードAW3によって表される。
【0072】本例を終了するにあたり、この時点では、
カウンタA0は6に等しく、カウンタA1は0に等し
い。したがって、命令c11はフローを命令c5、c
6、c7、およびc8に戻す。このため、命令c5、c
6、c7、およびc8の次の繰り返しは、図9において
クロック・サイクル128として示すものを表す。更に
具体的には、命令c7およびc8は、b3123およびb
122を実行させる。しかしながら、命令c12および
c13の第2無効ワードのロードおよび実装のために、
図9におけるクロック・サイクル128の無効化命令b
Aおよびb2Aに対応して、命令c5およびc6が無効
化される。命令c9およびc10は、カウンタA0およ
びA1を減数し、これらをそれぞれ−1および5の値に
する。このため、命令c11の述部は未だ満たされず、
プロセスは更に5クロック・サイクル、即ち、図9のク
ロック・サイクル133まで繰り返す。最後に、これら
5回のクロック・サイクルの後、カウンタA0が減数さ
れ、その時点で0の値を格納する。こうして、命令c1
1の述部が満たされ、したがって分岐は行われず、表3
のループおよび命令を完了する。
【0073】表3の方法論について実証し終えたので、
従来技術におけるソフトウエア・パイプライニングより
もいかに効率的な動作をもたらすか、更に具体的には、
好適な実施形態をソフトウエア・パイプライニングと共
に実施すると、いかに命令メモリ空間の使用度が向上す
るかが、今やわかるであろう。尚、13個のプロローグ
命令、7つのループ・コード命令、および11個のエピ
ローグ命令から成る図8のソフトウエア・パイプライニ
ングに必要な命令数は、合計31個であることを思い出
されたい。対照的に、表3は、他の命令と共に、無効命
令を適切に位置付け実行することにより、合計13個の
命令を用いて、図9の動作全てを実施可能であることを
表す。このように、図9を図8と対比させる本例のソフ
トウエア・パイプライニングに好適な実施形態を実施す
ることによって、従来技術で必要な31個から合計18
個の命令が削減され、好適な実施形態では13個で済
む。言い換えると、この例では、用いる命令は58パー
セント減少する。結果的に、必要な命令メモリ空間量も
同様に58パーセント削減される。先に述べたように、
かかる削減はいずれも複雑性およびコストの改善をもた
らし、したがって、好適な実施形態はこの点に関してい
かに劇的な効果を有するものであるかが、今や示された
ことになる。
【0074】前述における最後の課題として、表3のコ
ードは単に一例に過ぎず、その順序付けも本例を論理的
に表すためのものであり、かかるコードおよび/または
順序付けは、種々の理由で変更し得ることを記してお
く。例えば、コードの一部を再構成するために、異なる
最適化技術を適用することも可能である。別の例とし
て、多くのプロセッサでは分岐に伴う遅延がある。した
がって、一例として、かかる場合には、命令c11の分
岐をコンパイラによってコード内の早い時点に配置し、
その遅延が実際の分岐を適切な時点に行なわせる(また
は、行なわせない)ようにすることができる。
【0075】図10は、プロセッサ50のブロック図で
あり、システム40および前述の本発明の方法論を実施
することにより、分岐命令の複雑性を回避することおよ
びソフトウエア・パイプライニングを改善することのい
ずれかまたは双方に関して、一層効率的な動作を可能に
する。プロセッサ50は、好ましくは、単一の集積回路
であり、前述の命令に関連する図示および論述を簡略化
するために、ブロック形態で示されているが、プロセッ
サの動作および機能性に関するこれ以外の詳細は、ブロ
ックから得られることは当業者には容易に認められよ
う。更に、プロセッサ50は、Texas Instruments Inco
rporated から市販されているTMS320 C6000シリーズ・
プロセッサからのプロセッサを代表するものであり、TM
S320C62x/C67xディジタル信号プロセッサを含む。
【0076】プロセッサ50に移り、これはプログラム
・メモリ52を含む。デバイスによっては、これをプロ
グラム・キャッシュとして用いることも可能である。ま
た、プロセッサ50は、データ・メモリ54も含む。メ
モリ52および54は、中央演算装置(「CPU」)5
6と通信するように結合されている。CPU56は、プ
ログラム・フェッチ・ユニット58a,命令ディスパッ
チ・ユニット58b、および命令デコード・ユニット5
8cとして示す、種々の段階を有するパイプライン58
を含む。CPU56のパイプラインは、更に、経路Aお
よび経路Bとして示す2系統のデータ経路を含み、各デ
ータ経路は、対応する4つの機能ユニット集合(経路A
ではL1、S1、M1、およびD1、そして経路Bでは
L2、S2、M2、およびD2)を有する。端的に、機
能ユニットの動作機能性を以下の表4に明記する。所与
の実施態様にしたがって、追加の機能性を各ユニットに
加えたり、あるいは除去することも可能である。
【表6】
【0077】各機能ユニット集合は、対応するデータ経
路レジスタ・ファイル(レジスタ・ファイルAおよびレ
ジスタ・ファイルBとして示す)と通信することがで
き、各レジスタ・ファイルは32個の32ビット・レジ
スタを含む。図示しないが、これらの通信の一部は、交
差結合経路も含み、これによって経路Aからの機能ユニ
ットの一部がレジスタ・ファイルBを読み取り、一方経
路Bからの機能ユニットの一部がレジスタ・ファイルA
を読み取ることができる。また、CPU56は、制御レ
ジスタ60、制御ロジック62、検査ロジック64、エ
ミュレーション・ロジック66、および割込ロジック6
8を含む、追加の支援ハードウエアを含む。また、プロ
セッサ50は、これらの識別子に対応する機能を実行す
る、直接メモリ・アクセス(「DMA」)/外部メモリ
・インターフェース(「EMIF」)ブロック70のよ
うな追加のブロックも含むことができる。また、プロセ
ッサ50は、種々の周辺機器への接続を支援することが
できる周辺ブロック72も含む。周辺機器は、一例とし
て、タイマ、シリアル・ポート(複数のシリアル・ポー
ト)、およびホスト・ポート・インターフェースを含
む。最後に、プロセッサ50は、CPUアクティビテ
ィ、周辺機器アクティビティ、および位相ロック・ルー
プ(PLL)アクティビティを停止し、電力消費を低減
させることができる、電力停止論理ブロック74を含
む。
【0078】次に、パイプラインにおける命令処理の態
様に関連付けて、先に詳細に説明した本発明の無効回
路、システムおよび方法がいかにしてその機能性をプロ
セッサ50において発揮するかを、これも一例として、
理解できるように、プロセッサ50の動作について説明
する。プログラム・フェッチ・ユニット58a、命令デ
ィスパッチ・ユニット58b、および命令デコード・ユ
ニット58は全て、各CPUクロック・サイクル毎に、
8つまでの32ビット命令を機能ユニットに送出するこ
とができる。命令の処理は、2系統のデータ経路(Aお
よびB)の各々において行われる。これらの経路の各々
は、4つの機能ユニット(L、S、M、およびD)およ
び32個の32ビット汎用レジスタを含むことを思い出
されたい。更にプロセッサ50のパイプライン動作を例
示するために、以下には一例として’C62xに関して
かかる動作を説明する。
【0079】フェッチ・ユニット58aに注目すると、
これは8つの命令のフェッチ・パケットを用いる。8つ
の命令は全て、共に4つのフェーズ(プログラム・アド
レス発生フェーズ、プログラム・アドレス送出フェー
ズ、プログラム・アクセス・レディ待機フェーズ、およ
びプログラム・フェッチ・パケット受信フェーズ)から
成るフェッチ処理によって処理される。プログラム・ア
ドレス発生フェーズの間、CPUにおいてプログラム・
アドレスを発生する。プログラム・アドレス送出フェー
ズでは、プログラム・アドレスをメモリに送る。プログ
ラム・アドレス送出フェーズでは、メモリ・リードが行
われる。最後に、プログラム・アドレス送出フェーズで
は、フェッチ・パケットがCPUにおいて受け取られ
る。
【0080】命令ディスパッチ・ユニット58bおよび
命令デコード・ユニット58cに注目すると、ディスパ
ッチ・ユニット58bでは、フェッチ・パケットが実行
パケットに分割される。実行パケットは、1つの命令ま
たは2つないし8つの並列命令から成る。また、ディス
パッチ・ユニット58bは、実行パケット内の命令を適
切な機能ユニットに割り当てる。命令デコード・ユニッ
ト58cの動作において、機能ユニットにおける命令の
実行のために、ソース・レジスタ、宛先レジスタ、およ
び関連する経路をデコードする。その後、所与のクロッ
ク・サイクルにおいて、命令を割り当てられた各機能ユ
ニットがそれに対応する命令を実行することができる。
ここで、好適な実施形態では、割り当てられた命令に対
応する無効ビットがある場合、これがセットされていな
い場合にのみ、かかる実行が行われることは認められよ
う。実行パケットは8つまでの命令を含むことができる
ので、単一のクロック(および実行)サイクルでは、こ
れら8つまでの命令を実行することができる(無効ビッ
トはクリアされていると仮定する)。実行パケットが有
する命令が8つ未満である場合、対応する命令を有さな
いパケットの残りのスロットは、無動作命令(「NO
P」)として扱われ、これに関連する実行はないので、
NOP(複数のNOP)は機能ユニットにディスパッチ
される。
【0081】プロセッサ50における実行は、各命令に
対処する5つのフェーズに分解される。しかしながら、
殆どの命令を実行するには、これらのフェーズの内1つ
だけがあればよい。例えば、いわゆる単一サイクル命令
では、1フェーズで実行し、その中で結果を計算しその
結果をレジスタに書き込む。他の例として、乗算命令で
は、第1実行フェーズでオペランドを読み出し、その計
算を開始し、第2実行フェーズで結果を計算しその結果
をレジスタに書き込む。更に別の例として、ロード命令
では、5フェーズで実行し、順番に次のステップを実行
する。即ち、(1)アドレスを計算する。(2)アドレ
スをメモリに送る。(3)メモリにアクセスする。
(4)データをCPUに返送する。そして(5)データ
をレジスタに書き込む。
【0082】以上論じた好適な実施形態は、無効化した
命令がプロセッサの構造状態に影響を及ぼさないシステ
ムを含むものとして示した。この態様について、図10
のプロセッサ50を例として、更に示すことができる。
即ち、プロセッサの構造状態は一般的に当技術分野では
公知であり、一例として、メモリ52および54、レジ
スタ・ファイルAおよびレジスタ・ファイルB、プログ
ラム・カウンタ(明示的には示していない)、ならびに
特殊制御レジスタ(制御レジスタ60に含むことも可能
である)を含む、図10における構成要素のビットの状
態である。したがって、好適な実施形態では、命令を無
効化すると、これらの構成要素のいずれにおいてもビッ
ト状態を変更することは許されない。デバイスの形式お
よび構成に基づいて、更に別の例も、当業者には確認す
ることができよう。
【0083】以上の説明から、本実施形態は、プロセッ
サの命令がプロセッサ・パイプラインに入るが、無効ワ
ードに応答して動作し、これらの命令の内選択したもの
がプロセッサの構造状態に影響を及ぼすのを防止できる
ようにすることが認められよう。更に、本実施形態につ
いて詳細に説明したが、本発明の範囲から逸脱すること
なく、種々の代用、変更または変形も、先に明記した説
明に対して行なうことができる。実際に、代替方法論に
対し、種々の例を既に示した。加えて、別の例として、
好適な実施態様およびその結果得られる機能性をシステ
ム40内に実施したものとして示したが、他の手法も当
業者によって得ることができる。別の例として、実行ユ
ニットの抑制動作は、命令がプロセッサの構造状態を変
化させるのを防止するために好ましい手法として示した
が、別の手法は、プロセッサ・パイプラインの他の部分
の動作を抑制し、無効化することが望ましい命令がプロ
セッサの構造状態を変化させることを許可しないように
することを含めてもよい。更に別の例として、分岐の複
雑性回避およびソフトウエア・パイプラインの改善を、
好適な実施形態が有用な2つの方法として示したが、更
に別のことも当業者には明白となろう。最後に、図10
のプロセッサは、本回路、システムおよび対応する機能
性を実施可能な形式のプロセッサの一例を示すが、多数
のその他のプロセッサも、ここに教示した技術を同様に
実施することができる。これら追加の例から、当業者
は、特許請求の範囲によって規定される、本発明の範囲
をより良く認めることができて当然である。
【0084】以上の説明に関して更に以下の項を開示す
る。 (1)可変構造状態を有するプロセッサであって、命令
を格納する命令メモリと、命令パイプラインであって、
このパイプラインを完全に通過する命令が前記構造状態
を変化させ、前記命令メモリから命令をフェッチし、前
記パイプラインに入力する回路を備える、前記命令パイ
プラインと、前記パイプライン内の命令に対応する無効
コードを格納する回路と、無効コードに応答して、前記
群内において選択した1つ以上の命令が、前記構造状態
を変化させるのを防止する回路と、から成るプロセッ
サ。 (2)前記命令パイプラインは複数の実行ユニットを備
え、前記複数の実行ユニットの1つ以上が、対応する命
令を受け取り、所与のクロック・サイクルにおいて前記
対応する命令を実行する、第1項記載のプロセッサ。 (3)前記無効コードは複数のビット状態から成り、前
記群内において選択した1つ以上の命令が、前記構造状
態を変化させるのを防止する前記回路は、前記複数のビ
ット状態を前記複数の実行ユニットのそれぞれに結合す
る回路を備え、ビット状態が第1状態にあることに応答
して、前記ビット状態が結合される前記実行ユニット
が、前記所与のクロック・サイクルにおいて、前記対応
する命令を実行せず、ビット状態が前記第1状態とは異
なる第2状態にあることに応答して、前記ビット状態が
結合される前記実行ユニットが、前記所与のクロック・
サイクルにおいて、前記対応する命令を実行する、第2
項記載のプロセッサ。 (4)前記複数の実行ユニットは、ロード/ストア・ユ
ニット、乗算ユニット、ALUユニット、およびシフト
・ユニットから成る第3項記載のプロセッサ。 (5)前記複数の実行ユニットは、所与のクロック・サ
イクルにおいて、前記複数の実行ユニットの内整数個N
が実行をスケジュールされるように動作可能であり、前
記複数のビット状態を前記複数の実行ユニットのそれぞ
れに結合する前記回路は、前記複数のビット状態の内前
記整数個Nのみを、前記所与のクロック・サイクルにお
いて実行するようにスケジュールされている前記複数の
実行ユニットに結合する回路を備える、第3項記載のプ
ロセッサ。 (6)前記無効コードに対応する命令は、論理的に条件
付き命令の後に配置され、条件を満たす場合に実行され
る、1つ以上の命令から成る第1の群と、論理的に前記
条件付き命令の後に配置され、条件を満たさない場合に
実行する1つ以上の命令から成る第2の群と、から成
り、前記防止する回路は、前記条件が満たされない場
合、前記無効コードに応答して、前記第1群の命令が前
記構造状態を変化させるのを防止し、前記防止する回路
は、前記条件が満たされる場合に、前記無効コードに応
答して、前記第2群の命令が前記構造状態を変化させる
のを防止する、第5項記載のプロセッサ。 (7)前記無効コードに対応する命令は、整数M回繰り
返して実行するようにスケジュールされたソフトウエア
・ループに対応する命令から成り、所与の繰り返しの間
に、前記防止回路は、前記無効コードに応答して、かつ
前記所与の繰り返しの前記整数M回の繰り返しに対する
関係に基づいて、前記無効コードに対応する1つ以上の
前記命令が、前記構造状態を変化させるのを防止する、
第5項記載のプロセッサ。 (8)前記無効コードに対応する命令は、整数M回繰り
返して実行するようにスケジュールされたソフトウエア
・ループに対応する命令から成り、所与の繰り返しの
間、前記防止回路は、前記無効コードに応答して、かつ
前記所与の繰り返しの前記整数M回の繰り返しに対する
関係に基づいて、前記無効コードに対応する1つ以上の
前記命令が、前記構造状態を変化させるのを防止する、
第3項記載のプロセッサ。 (9)前記無効コードに対応する前記命令群は、論理的
に条件付き命令の後に配置され、条件を満たす場合に実
行される、1つ以上の命令から成る第1の群と、論理的
に前記条件付き命令の後に配置され、条件を満たさない
場合に実行する1つ以上の命令から成る第2の群と、か
ら成り、前記条件が満たされない場合、前記第1の群に
対応するビット状態が前記第1状態にセットされ、前記
第2の群に対応するビット状態が前記第2状態にセット
され、前記条件が満たされる場合、前記第1の群に対応
するビット状態が前記第2状態にセットされ、前記第2
の群に対応するビット状態が前記第1状態にセットされ
る、第3項記載のプロセッサ。 (10)前記無効コードは、1つ以上の定数発生命令に
応答して発生する第1項記載のプロセッサ。 (11)前記無効コードはメモリからロードされる第1
項記載のプロセッサ。 (12)前記無効コードは、前記パイプラインを通過す
る命令における即値である第1項記載のプロセッサ。 (13)前記無効コードは32ビットから成る第1項記
載のプロセッサ。 (14)前記無効コードは32ビットより多い第1項記
載のプロセッサ。 (15)前記無効コードは64ビットから成り、前記無
効コードは、2つの32ビット値に応答して形成され
る、第1項記載のプロセッサ。 (16)前記無効コードは、条件述部を有する命令に応
答してロードされ、前記無効コードは、前記条件述部が
満たされることに応答して、第1無効コードを構成し、
前記無効コードは、前記条件述部が満たされないことに
応答して、第2無効コードを構成する、第1項記載のプ
ロセッサ。 (17)更に、第1レジスタおよび第2レジスタを備
え、前記第1無効コードが前記第1レジスタに格納さ
れ、前記第1無効コードが前記第2レジスタに格納され
る、第16項記載のプロセッサ。 (18)更に、レジスタを備え、前記第1無効コードが
前記レジスタの半分に格納され、前記第2無効コードが
前記レジスタの半分に格納される、第16項記載のプロ
セッサ。 (19)前記パイプラインを通過する無効命令が整数N
を指定し、前記防止回路が、前記パイプラインにおける
N個の連続する命令が前記構造状態を変化させるのを防
止するように、前記整数値Nに応答して前記無効コード
を形成する、第1項記載のプロセッサ。 (20)更に、レジスタを備え、前記レジスタが、第1
論理値を有するビット集合と、第2論理値を有するビッ
ト集合とから成る前記無効コードを格納し、前記無効コ
ードは、条件述部を有する命令に応答してロードされ、
前記防止回路は、前記条件述部が満たされることに応答
して、第1論理値を有するビットに対応する命令が前記
構造状態を変化させるのを防止し、前記防止回路は、前
記条件述部が満たされないことに応答して、第2論理値
を有するビットに対応する命令が前記構造状態を変化さ
せるのを防止する、第1項記載のプロセッサ。 (21)更に、割込の受信に応答して、前記無効コード
の一部を格納する回路を備える第1項記載のプロセッ
サ。
【0085】(22)変化可能な構造状態を有するプロ
セッサ(50)。このプロセッサは、命令を格納する命
令メモリ(52)を含む。また、プロセッサは命令パイ
プラインも含み、パイプラインを完全に通過する命令が
構造状態を変化させる。更に、パイプラインは、命令メ
モリからパイプラインに命令をフェッチする回路(58
aa)を備えている。また、プロセッサは、パイプライ
ン内の命令に対応する無効コード(46)を格納する回
路も含む。最後に、プロセッサは、無効コードに応答し
て、群内で選択した1つ以上の命令が構造状態を変化さ
せるのを防止する回路(FU1ないしFU8)も含む。
【図面の簡単な説明】
【図1】aは単一レベルの単一条件を有する命令群を示
すツリー図。bは図1aの無条件命令を図1aの条件付
き命令によって断定する場合を示す図。
【図2】aは2レベルの条件を有する命令群を示すツリ
ー図。bは図2aの命令群、および好適な実施形態によ
る対応の無効ワードを示す図。cは条件A2が真の場合
における、図2bの無効ワードを、セットされたその値
と共に示す図。dは条件A2が偽の場合における、図2
bの無効ワードを、セットされたその値と共に示す図。
【図3】aは図2bの無効ワードにおけるエレメントの
状態をセットする好適な方法において、図2cおよび図
2dにおけるように状態をセットした場合を示す図。b
は2つ以上の条件レベルを有する命令を処理し、対応す
る無効ワードにおけるエレメントの状態をセットする、
好適な実施形態による方法を示す図。
【図4】aは条件A2が真の場合に、図2aの命令ツリ
ーに関して行われる、好適な実施形態の断定ステップを
示す図。bは条件A2が偽の場合に、図2aの命令ツリ
ーに関して行われる、好適な実施形態の断定ステップを
示す図。
【図5】aは3レベルの条件を有する命令群を示すツリ
ー図。bは条件A3が真の場合に、図5aの命令群およ
び対応する無効ワードを、セットされたその値と共に示
す図。cは条件A3が偽の場合に、図5aの命令群およ
び対応する無効ワードを、セットされたその値と共に示
す図。dは条件A3が真であり条件B3が真の場合に、
図5aの命令群および対応する無効ワードを、セットさ
れたその値と共に示す図。eは条件A3が真であり条件
B3が偽の場合に、図5aの命令群および対応する無効
ワードを、セットされたその値と共に示す図。fは条件
A3が偽であり条件C3が真の場合に、図5aの命令群
および対応する無効ワードを、セットされたその値と共
に示す図。gは条件A3が偽であり条件C3が偽の場合
に、図5aの命令群および対応する無効ワードを、セッ
トされたその値と共に示す図。
【図6a】無効ワードからのビットを用いて、無効化が
識別された命令の実行を防止するために用いられる無効
マスクを発生するための、好適な実施形態を示す電気機
能図。
【図6b】実行するようにスケジュールされた第1命令
パケットに応じてセットされた無効マスクおよび使用マ
ップと共に、図6aの電気機能図を示す図。
【図6c】実行するようにスケジュールされた第2命令
パケットに応じてセットされた無効マスクおよび使用マ
ップと共に、図6aの電気機能図を示す図。
【図6d】実行するようにスケジュールされた第3命令
パケットに応じてセットされた無効マスクおよび使用マ
ップと共に、図6aの電気機能図を示す図。
【図7】各命令が、マップされる対応の機能ユニット、
および命令を無効化するか否かを示す、無効ワードから
のビットを有する、3つの命令パケットを有する命令ス
トリームを示す図。
【図8】従来技術のソフトウエア・パイプライニングの
例を示す図。
【図9】図8のソフトウエア・パイプライニングの例を
実施するために必要な命令数を大幅に削減する、無効ワ
ードの適用を示す図。
【図10】前述の図に示した回路、システム、および方
法を実施するプロセッサの好適な実施形態を示す図。
【符号の説明】
40 システム 42 バッファ 44 シフト・レジスタ 46 ビット群 48 機能ユニット使用マップ 50 プロセッサ 52 プログラム・メモリ 54 データ・メモリ 56 中央演算装置(「CPU」) 58a プログラム・フェッチ・ユニット 58b 命令ディスパッチ・ユニット 58c 命令デコード・ユニット 60 制御レジスタ 62 制御ロジック 64 検査ロジック 66 エミュレーション・ロジック 68 割込ロジック 70 直接メモリ・アクセス/外部メモリ・インターフ
ェース・ブロック 72 周辺ブロック 74 電力停止論理ブロック

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 可変構造状態を有するプロセッサであっ
    て、 命令を格納する命令メモリと、 命令パイプラインであって、該パイプラインを完全に通
    過する命令が前記構造状態を変化させ、前記命令メモリ
    から命令をフェッチし、前記パイプラインに入力する回
    路を備える、前記命令パイプラインと、 前記パイプライン内の命令に対応する無効コードを格納
    する回路と、 無効コードに応答して、前記群内において選択した1つ
    以上の命令が、前記構造状態を変化させるのを防止する
    回路と、から成るプロセッサ。
JP2001006735A 2000-01-13 2001-01-15 マスク技術による無効で分岐効率向上を図るプロセッサ Abandoned JP2001195252A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17588400P 2000-01-13 2000-01-13
US175884 2000-01-13

Publications (1)

Publication Number Publication Date
JP2001195252A true JP2001195252A (ja) 2001-07-19

Family

ID=22642053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001006735A Abandoned JP2001195252A (ja) 2000-01-13 2001-01-15 マスク技術による無効で分岐効率向上を図るプロセッサ

Country Status (4)

Country Link
EP (1) EP1117032B1 (ja)
JP (1) JP2001195252A (ja)
AT (1) ATE393930T1 (ja)
DE (1) DE60133784T2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table

Also Published As

Publication number Publication date
DE60133784T2 (de) 2009-06-25
EP1117032A3 (en) 2005-08-17
DE60133784D1 (de) 2008-06-12
EP1117032B1 (en) 2008-04-30
ATE393930T1 (de) 2008-05-15
EP1117032A2 (en) 2001-07-18

Similar Documents

Publication Publication Date Title
US5958048A (en) Architectural support for software pipelining of nested loops
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
US6567895B2 (en) Loop cache memory and cache controller for pipelined microprocessors
US7594102B2 (en) Method and apparatus for vector execution on a scalar machine
KR100227276B1 (ko) 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서
JP3547482B2 (ja) 情報処理装置
JP3881763B2 (ja) データ処理装置
US6772355B2 (en) System and method for reducing power consumption in a data processor having a clustered architecture
JPH09311786A (ja) データ処理装置
KR100316078B1 (ko) 파이프라인방식프로세서
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US7162620B2 (en) Methods and apparatus for multi-processing execution of computer instructions
JP5326314B2 (ja) プロセサおよび情報処理装置
US6910123B1 (en) Processor with conditional instruction execution based upon state of corresponding annul bit of annul code
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
US20030154469A1 (en) Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
US7543135B2 (en) Processor and method for selectively processing instruction to be read using instruction code already in pipeline or already stored in prefetch buffer
US6829700B2 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US6079011A (en) Apparatus for executing a load instruction or exchange instruction in parallel with other instructions in a dual pipelined processor
US20030120899A1 (en) Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
JP4444305B2 (ja) 半導体装置
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080115

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20081210