JP3834145B2 - ネスト可能な遅延分岐命令を有するマイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法 - Google Patents
ネスト可能な遅延分岐命令を有するマイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法 Download PDFInfo
- Publication number
- JP3834145B2 JP3834145B2 JP04994598A JP4994598A JP3834145B2 JP 3834145 B2 JP3834145 B2 JP 3834145B2 JP 04994598 A JP04994598 A JP 04994598A JP 4994598 A JP4994598 A JP 4994598A JP 3834145 B2 JP3834145 B2 JP 3834145B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- target
- execution
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims description 103
- 238000000034 method Methods 0.000 title claims description 29
- 230000008569 process Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 28
- 230000003111 delayed effect Effects 0.000 description 23
- 230000004044 response Effects 0.000 description 9
- 238000012360 testing method Methods 0.000 description 8
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000003252 repetitive effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100385237 Mus musculus Creg1 gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- KPMVHELZNRNSMN-UHFFFAOYSA-N chembl1985849 Chemical compound N1=CC=C2NCCN21 KPMVHELZNRNSMN-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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
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)
Description
【発明の属する技術分野】
本発明は、マイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法に関し、特に命令実行パイプラインを有するデータ処理装置、及びこのようなデータ処理装置に備えられたマイクロプロセッサを動作させる方法に関する。
【0002】
【従来の技術】
マイクロプロセッサの設計者は、クロック速度を増加させ、かつ並行性を付加することによって種々のマイクロプロセッサにおけるパフォーマンスを改善するようにますます努めるようになった。複雑なデータ操作は多数の命令を実行する必要があり、これらの命令は種々の形式のデータ操作のためにいくつかの反復サイクルを必要とすることがある。分岐命令は反復中に頻繁に用いられている。分岐命令は、典型的に、分岐アドレスを決定してその分岐アドレスの目標命令をフェッチするために、1又はそれより多くのクロック・サイクル即ち「遅延スロット」を必要とする。遅延分岐命令は、ある分岐命令の遅延スロット(又は複数の遅延スロット)において他の命令を実行可能にする。パイプライン化命令の実行回路を有するマイクロプロセッサは、命令実行シーケンス内で分岐アドレスを取ったために、又は取らなかったために失ってしまう恐れのある多数の実行サイクルを少なくするために、遅延分岐命令を備えることができる。しかし、もし第1の目標命令を実行する前に第2の命令に遭遇すると、命令の実行順序を保存するために命令実行パイプラインは停止される。
【0003】
【発明が解決しようとする課題】
本発明の目的は、第1の分岐命令の遅延スロット(又は複数の遅延スロット)において第2の遅延命令が発生したときに、命令実行パイプラインが停止することを原因としたパフォーマンスの遅延を克服することである。
【0004】
【課題を解決するための手段】
概要的に、本発明の一形式では、中央処理装置を有するデータ処理装置を備え、この中央処理装置はネストされた分岐命令を実行できる命令実行パイプラインを有する。前記パイプラインは固定数のパイプライン・フェーズにおいて目標アドレスを有する分岐命令を処理及び実行するように動作可能である。前記分岐命令の実行の最終フェーズにおいて前記目標アドレスによりプログラム・カウンタがロードされる。フェッチ回路が前記プログラム・カウンタにおけるアドレスを用いて命令をフェッチする。
【0005】
第2の遅延分岐命令の処理は、先行する遅延分岐命令に関する処理の開始後の次のフェーズにおいて開始されてもよい。前記遅延分岐命令の目標アドレスは、前記第1の分岐命令の目標アドレスをプログラム・カウンタにロードした後の次のフェーズにおいて前記プログラム・カウンタにロードされる。従って、この発明のネスト可能な遅延分岐命令により複雑な分岐シーケンスを作成することができる。
【0006】
例えば、ネストされた遅延分岐命令のシーケンスに同一の目標アドレスを置くことにより、単一のフェーズ反復ループを形成することができる。更に、前記目標命令のフェッチ・パケットに遅延分岐命令を置くことにより、無期限の単一フェーズ反復ループを形成することができる。選択した条件を検出したときは、このループを抜け出すことができる。
【0007】
本発明の他の形式において、データ処理装置内の中央処理装置(CPU)を動作させる方法は、多数のフェーズにおいて分岐命令を処理及び実行する命令実行パイプラインを設けるステップと、目標アドレスによる分岐命令を含む命令パケットをフェッチするステップと、次のパイプライン・フェーズにおいて分岐命令を有する第2の命令パケットをフェッチするステップと、前記第1の分岐命令の目標アドレスをプログラム・カウンタに受け取るステップと、前記次のパイプライン・フェーズにおいて前記第2の分岐命令の前記目標アドレスを前記プログラム・カウンタに受け取るステップとを備えている。
【0008】
本発明の他の実施例は詳細な説明及び図面から明らかとなる。
【0009】
本発明の他の特徴及び効果は、添付する図面に関連して考慮すれば、以下の詳細な説明を参照することにより明らかとなる。
【0010】
異なる図面及び図表において対応する番号及びシンボルは、特に指摘しない限り対応する部分を示す。
【0011】
【発明の実施の形態】
図1は本発明の一実施例を有するマイクロプロセッサ1のブロック図である。マイクロプロセッサ1はVLIWディジタル信号プロセッサ(DSP)である。明確にする観点から、図1は本発明の一実施例を理解するために関係するマイクロプロセッサ1の部分のみを示す。DPSに関する一般的な構成の詳細は周知であり、他にも容易に見出すことができる。例えば、フレデリック・ブトー(Frederik Boutaud)ほかに発行された米国特許第5,072,418号は、詳細にDSPを説明しており、ここでは引用による関連される。ゲーリ・スボボダ(Gary Swoboda)ほかに対して発行された米国特許第5,329,471号は、どのようにDSPをテストし、かつエミュレートするかについて詳細に説明しており、ここでは引用による関連される。本発明の一実施例に関連するマイクロプロセッサ1の部分の詳細は、マイクロプロセッサ技術に通常に習熟する者が本発明を作成して使用するできるように、以下に十分詳細に説明されている。
【0012】
マイクロプロセッサ1内には、中央処理装置(CPU)10、データ・メモリ22、プログラム・メモリ23、周辺装置60、及び直接メモリ・アクセス(DMA)を有する外部メモリ・インタフェース(EMIF)61が示されている。CPU10は、更に、命令フェッチ/デコード装置10a〜10cと、算術演算及びロード/ストア装置D1、乗算器M1、ALU/シフタ装置S1、算術論理演算装置(ALU)L1及びデータを読み出すと共にデータを書き込む共有マルチポートのレジスタ・ファイル20aを含む複数の実行装置とを有する。デコードされた命令は命令フェッチ/デコード装置10a〜10cから図示していない種々の組の制御ラインを介して機能装置(算術演算及びロード/ストア装置D1、乗算器M1、ALU/シフタ装置S1及びALU L1)に供給される。データは、レジスタ・ファイル20aから第1組のバス32aを介してレジスタ・ファイル20aへ又はその逆へ、第2組のバス34aを介して乗算器M1へ、第3組のバス36aを介してALU/シフタ装置S1へ、及び第4組のバス38aを介してALU L1へ供給される。データは、メモリ22から第5組のバス40aを介して算術演算及びロード/ストア装置D1へ又はその逆へ供給される。以上で説明したデータ・パスの全体は、レジスタ・ファイル20b及び実行装置D2、M2、S2及びL2により二重化されていることに注意すべきである。命令は、プログラム・メモリ23から1組のバス41を介して命令フェッチ/デコード装置10aに供給される。エミュレーション装置50は、外部テスト・システム51により制御可能にされているマイクロプロセッサ1の内部回路に対するアクセスを行う。
【0013】
図1に示されているデータ・メモリ22及びプログラム・メモリ23はマイクロプロセッサ1の一部の集積回路であり、その範囲はブロック42により表されていることに注意すべきである。データ・メモリ22〜プログラム・メモリ23は、マイクロプロセッサ1の集積回路42の外部にあっても、又はその一部が集積回路42に存在し、かつその一部が集積回路42の外部にあってもよい。更に、他の数の実行装置を用いることもできる。
【0014】
マイクロプロセッサ1がデータ処理システムに関連されているときは、図1に示すように、付加的なメモリ又は周辺装置をマイクロプロセッサ1に接続してもよい。例えば、ランダム・アクセス・メモリ(RAM)70、読み出し専用メモリ(ROM)71及びディスク72は、外部バス73を介して接続されているのが示されている。外部バス73は集積回路42内の機能ブロック61の一部である外部メモリ・インタフェース(EMIF)に接続されている。更に、直接メモリ・アクセス(DMA)コントローラはブロック61にも含まれている。DMAコントローラは、通常、マイクロプロセッサ1内のメモリと周辺装置との間でデータを転送するために用いられる。
【0015】
本発明の構成により効果が得られるいくつかのシステム例は、ここで参照により関連される米国特許第5,072,418号、特に米国特許第5,072,418号の図2−18を参照して説明されている。パフォーマンスを改善するため、又はコストを減少させるために本発明の構成に関連するマイクロプロセッサは、米国特許第5,072,418号に説明されているシステムを更に改善するために用いられてもよい。しかし、このようなシステムは、工業的なプロセス制御、オートモティーブ車両システム、モータ制御、ロボット制御システム、衛星通信システム、エコー打ち消しシステム、モデム、ビデオ映像システム、音声認識システム、暗号によるボーコーダ・モデム・システム等に限定されない。
【0016】
図1の種々のアーキテクチャ上の特徴の説明は共通に譲受された米国特許出願第60/036,482号(TI文書番号T−25311)に記載されている。更に、図1のマイクロプロセッサ用の完全な命令セットの説明は、共通に譲受された米国特許出願第60/036,482号(TI文書番号T−25311)に記載されている。
【0017】
図2は図1のマイクロプロセッサの実行装置及びレジスタ・ファイルのブロック図であり、種々の機能ブロックを接続するバスの更に詳細な図を示す。この図において、全てのデータ・バスは特に記載がない限り32ビット幅である。バス40aはアドレス・バスDA1を有し、マルチプレクサ200aにより駆動される。これは、ロード/ストア装置D1又はD2が発生したアドレスをレジスタ・ファイル20aにロード即ち記憶するためのアドレスを供給可能にさせる。データ・バスLD1はアドレス・バスDA1により指定されたデータ・メモリ22のアドレスによるデータを算術演算及びロード/ストア装置D1にロードさせる。算術演算及びロード/ストア装置D1はレジスタ・ファイル20aにデータを記憶する前に供給されたデータを操作することができる。同様に、データ・バスST1はレジスタ・ファイル20aからのデータをデータ・メモリ22に記憶する。算術演算及びロード/ストア装置D1は下記のオペレーション:32ビット加算、引算、線形及び循環アドレス計算を実行する。算術演算及びロード/ストア装置D2は、マルチプレクサ200bを介して算術演算及びロード/ストア装置D1と同じように動作してアドレスを選択する。
【0018】
ALU L1は下記の形式のオペレーション:32/40ビット算術演算オペレーション及び比較オペレーション、32ビットについて左端1、0ビット・カウント、32及び40ビットについての正規化カウント、及び論理オペレーションを実行する。ALU L1は32ビット・ソース・オペランド用の入力src1及び第2の32ビット・ソース・オペランドの入力src2を有する。入力msb srcは8ビット値であり、40ビット・ソース・オペランドを形成するために用いられる。ALU L1は32ビット行き先オペランド用の出力dstを有する。出力msb dstは8ビット値であり、40ビット行き先オペランドを形成するために用いられる。レジスタ・ファイル20a内の2つの32ビットのレジスタは40ビットのオペランドを保持するように連結されている。Mux211は入力src1に接続されており、32ビット・オペランドがバス38aを介してレジスタ・フアイル20aから、又はバス210を介してレジスタ・ファイル20bから得られるようにする。Mux212は入力src2に接続されており、32ビット・オペランドがバス38aを介してレジスタ・ファイル20aから、又はバス210を介してレジスタ・ファイル20bから得られるようにする。ALU L2はALU L1と同じように動作する。
【0019】
ALU/シフタ装置S1は下記の形式のオペレーション:32ビットの算術演算オペレーション、32/40ビット・シフト、及び32ビット・ビット・フィールド・オペレーション、32ビット論理オペレーション、分岐、及び定数発生オペレーションを実行する。ALU/シフタ装置S1は32ビット・ソース・オペランド用の入力src1、及び第2の32ビット・ソース・オペランド用の入力src2を有する。入力msb srcは8ビット値であり、40ビット・ソース・オペランドを形成するために用いられる。ALU/シフタ装置S1は32ビット行き先オペランド用の出力dstを有する。出力msb dstは8ビット値であり、40ビットのソース・オペランドを形成するために用いられる。Mux213は入力src2に接続されており、32ビット・オペランドがバス36aを介してレジスタ・ファイル20aから、又はバス210を介してレジスタ・ファイル20bから得られるようにする。ALU S2はALU/シフタ装置S1と同じように動作し、制御レジスタ・ファイル102から/へのレジスタ転送を実行する。
【0020】
乗算器M1は16×16乗算を実行する。乗算器M1は32ビット・ソース・オペランド用の入力src1及び32ビット・ソース・オペランド用の入力src2を有する。ALU/シフタ装置S1は32ビット行き先オペランド用の出力dstを有する。Mux214は入力src2に接続されており、32ビット・オペランドがバス34aを介してレジスタ・ファイル20aから、又はバス210を介してレジスタ・ファイル20bから得られるようにする。乗算器M2は乗算器M1と同じように動作する。
【0021】
図3は図1のマイクロプロセッサ内の命令実行パイプラインの処理フェーズを示す図表である。各処理フェーズはシステム・クロックのクロック・サイクルにほぼ対応する。例えば、マイクロプロセッサ1が200MHzで動作しているのであれば、各処理フェーズは公称5nsである。しかし、RAM70のようなメモリ又は周辺装置からデータが期待されるフェーズにおいて、期待されるときにデータがレディーでなければ、パイプラインは停止してしまう。停止すれば、与えられたパイプラインのフェーズは多数のシステム・クロック・サイクルに対して存在することになる。
【0022】
図3において、命令を処理する第1の処理フェーズはフェーズPGにおいてプログラム・アドレスを発生することである。これは制御レジスタ・ファイル102に位置するプログラム・フェッチ・カウンタPFCをロードすることにより行われる。第2の命令の処理フェーズPSでは、命令フェッチ・パケットのアドレスがバス41の一部であるプログラム・アドレス・バスPADDRを介してプログラム・メモリ23に送出される。第3の処理フェーズPWはプログラム・メモリ23でのアクセス時間を許容するための待機フェーズである。第4の処理フェーズPRでは、プログラム・フェッチ・パケットは、バス41の一部であるデータ・バスPDATA Iを介してプログラム・メモリ23から得られる。第5の処理フェーズDPでは、命令の並行が検出され、実行可能とされる命令が適当な機能装置に送出される。以下の記載においてこのパイプライン・オペレーションの構成を更に詳細に説明する。第6の処理フェーズDCでは、実行可能な命令をデコードし、種々のデータ・パス及び機能装置を制御するために制御信号を発生させる。
【0023】
図4は図1のマイクロプロセッサ内の命令実行パイプラインの実行フェーズを説明する図表である。第1の実行フェーズE1では、「ISC」と呼ばれる単一サイクル命令、及び「BR」と呼ばれる分岐命令が完結する。指定された実行装置は、制御回路100により指示された図4に示すオペレーションを実行する。第2の実行フェーズE2では、下記の形式の命令:整数乗算(IMPY)、プログラム記憶命令(STP)、及びデータ記憶命令(STD)が制御回路100の制御により指定された実行装置により、完結される。第3の実行フェーズE3では、データのロード命令(LD)の実行が、図示のように、データ・メモリ・システム(DMS)からデータをラッチすることにより継続する。実行フェーズE4では、実行フェーズE3においてラッチされたデータが算術演算及びロード/ストア装置D1又はD2内のデータ入力レジスタDDATA Iに転送される。実行フェーズE5では、データ入力レジスタDDATA Iのデータを操作し、かつレジスタ・ファイル20a又は20b内の指定されたレジスタに操作したデータを書き込むことにより、LD命令が完結する。
【0024】
図5は、図3の処理フェーズにおける実行フェーズ命令フェッチ・パケットの処理、及び図4の実行フェーズにおける実行フェーズの実行の詳細なタイミングを示すタイミング図である。フェーズPSではプログラム・メモリ・レディー信号PRDYがローであるために、フェーズPWにおいてパイプ停止が示されており、またフェーズE2ではデータ・メモリ・レディー信号DRDYがローであるために、フェーズE3において第2のパイプ停止が示されていることに注意すべきである。
【0025】
図6は、本発明により図3、図4及び図5に示した命令実行パイプラインにおける遅延分岐命令(BR)を実行するときに、含まれる遅延スロットを示す。BR命令は、ここで「目標アドレス」と呼ばれるアドレスを供給する。この目標アドレスは、マイクロプロセッサ1により実行されているプログラムの論理シーケンスにおいて次に実行されるべき命令のアドレスである。BR命令の実行フェーズE1では、命令フェッチ/デコード装置10aの一部であるプログラム・フェッチ・カウンタ(PFC)がBR命令により与えられる目標アドレスを受け取る。目標アドレスが変位値であれば、これは、プログラム・フェッチ・カウンタPFCに送出される前に、シフトされて分岐命令を含むフェッチ・パケットのアドレスに加算される。目標アドレスが分岐命令により指定されたレジスタに含まれていれば、レジスタの内容をプログラム・フェッチ・カウンタにロードする。そこで、このフェーズは目標アドレスの命令処理フェーズPGに対応している。命令パイプラインのオペレーションに関連して以上で説明したように、目標アドレス命令がフェーズE1において実行を開始する前に、更に5つのフェーズPS、PW、PR、DP及びDCを完結する。目標アドレス命令BR命令の実行フェーズE1と目標命令の実行フェーズE1との間の「遅延」は、命令アドレスの流れにおける変化のために実行パイプラインに対する「ヒット」を表している。このパイプライン・ヒットのパフォーマンス影響を最小化するために、マイクロプロセッサ1は、図7に示すように、BR命令後に逐次的にアドレス指定される下記の5命令を実行し続ける。図7において、アドレス「n」からの命令はBR命令であり、またBR命令の目標アドレスはアドレス「m」である。アドレスn+1〜n+5からの命令は有効なオペレーションを実行することかできるか、又はプログラム・フローにおいて有効に実行され得るものが他になけば、ノー・オペレーション(NOP)とすることができる。このモードの分岐オペレーションは、分岐命令後に、付加的なシーケンス命令を処理するので、「遅延分岐」と呼ばれる。
【0026】
図8はプログラム・メモリ23からフェッチされた命令パケットの基本フォーマットを示す。一実施例において、命令パケットには4つの32ビット命令A、B、C及びDが含まれている。図8に示すように、命令A、B、C及びDはプログラム・メモリ23に連続するアドレスで記憶される。従って、プログラム命令の通常的な逐次実行では、命令Aが最初に実行され、逐次的に命令B、C及びDが続く。
【0027】
図8における各命令のビット0はpビットとして表された。これらのpビットは、命令をどのように実行するのかを定義する。図8の命令パケットのpビットは、命令処理フェーズDPにおいてプログラム・ディスパッチ回路10bにより左から右へ調べられる。与えられた命令のpビットが1に等しいときは、命令パケットにおける次のシーケンス命令が最初に述べた命令と並列に実行されることになる。プログラム・ディスパッチ回路10bは、命令パケット内の命令が論理0に等しいpビットに到達するまで、このルールを適用する。
【0028】
与えられた命令が0のpビットを有するときは、与えられた命令の後に(及び与えられた命令と並列に実行される任意の命令の後に)、次のシーケンス命令を逐次的に実行する。プログラム・ディスパッチ回路10bは、論理1のpビットを有する命令パケット内の命令に到達するまで、このルールを適用する。
【0029】
図3を再び参照すると、処理フェーズPRでは、前のフェッチ・パケットにおける少なくとも一つの命令の逐次的な実行のために新しい命令フェッチ・パケットを必要としないのであれば、新しい命令フェッチ・パケットをラッチしない。図5に示したストローブ信号PDSは、プログラム・データを必要としないのであれば、主張されない。この場合に、プログラム・データ・ラッチPDATAIはプログラム・メモリ23から得た最後のプログラム・フェッチ・パケットを保持する。
【0030】
図9A〜図13Aは前述のpビット・ルールの種々の例を示す。図9Aは全てのpビットが0である命令パケットを示す。従って、命令A〜Dは図9Bに示すように、逐次的に実行される。
【0031】
図10Aは命令A、B及びCのpビットが1に等しく、かつ命令Dのpビットが0である命令パケットを示す。従って、命令A、BC及びDが同時に、即ち図10Bに示すように、並列に実行される。
【0032】
図11Aの命令では、命令Cのpビットのみが1にセットされており、図11Bの実行シーケンスに帰結し、即ち命令A及びBが逐次的に実行され、並列に実行される命令C及びDが続く。
【0033】
図12Aの命令パケットでは、命令Bのpビットのみが1にセットされており、図12Bに示す実行シーケンスに帰結する。即ち、命令Aが実行され、逐次的に命令B及びCの並列実行が続き、次いで逐次的に命令Dの実行が続く。
【0034】
図13Aの命令パケットでは、命令B及びCのpビットが1にセットされており、かつ命令A及びDのpビットが0である。これは図13Bに示す命令シーケンスに帰結する。即ち、命令Aが実行され、次いで逐次的に命令B、C及びDの並列実行が続く。
【0035】
開示された例における命令パケットには4プログラム命令が含まれているので、プログラム・コンパイラは常に0のpビットを有する命令D(第4命令)を供給する。コンパイラは並列に命令A及びBを実行する特性、並列に命令B及びCを実行する特性、及び並列に命令A、B及びCを実行する特性に基づいて、命令A、B及びCの残りのpビットの値を判断する。例えば、命令Aの実行により得た結果を命令Bの実行が必要とするときは、0のpビットを有する命令Aを供給し、従って命令Aの後に逐次的に命令Bを実行する。他の例として、命令B及びCが同一レジスタをアクセスするのであれば、コンパイラは、命令B及びCを並列ではなく逐次的に実行するのを保証するように、0のpビットを有する命令Bを供給することになる。
【0036】
図14Aは、ネストされた遅延分岐命令を有する命令パケット・シーケンスの本発明による例を示しており、6回実行される単一のフェーズ・ループを発生するものである。アドレス位置「n」からフェッチされた命令フェッチ・パケット1310には、「m」の目標アドレスを有する分岐命令Aが含まれている。命令Aにおけるpビットは1なので、同一のフェッチ・パケットにおける命令Bは命令Aと並列に実行される。命令Bは有用な他のいくつかのオペレーションを実行してもよい。更に、命令Cもmの目標アドレスを有する分岐命令である。命令Dは命令CのpビットのためにCと並列に実行される。本発明の一構成によれば、命令C及びDは共に、図14Bに示すように、命令Bにおけるpビットのために、命令Aの第1の遅延スロットにおいて処理を開始する。都合のよいことに、ある分岐命令に第2の分岐命令が続くときに、マイクロプロセッサ1の命令実行パイプラインにインターロック即ち遅延が発生することはない。
【0037】
同じように、命令E、G、I及びKはmの目標アドレスを有する分岐命令である。命令対E〜Fは命令Aの第2の遅延スロットにおいて処理を開始し、命令対G〜Hは命令Aの第3の遅延スロットにおいて処理を開始し、命令対I〜Jは命令Aの第4の遅延スロットにおいて処理を開始し、かつ命令対K〜Lは命令Aの第5の遅延スロットにおいて処理を開始する。
【0038】
図7によれば、この時点で、命令Mは分岐命令Aに応答してアドレスmからフェッチされているフェッチ・パケット1340による処理を開始する。次のフェーズでは、命令Mの他のコピーは分岐命令Cに応答してアドレスmからフェッチされているフェッチ・パケット1341による処理を開始する。次のフェーズでは、命令Mの他のコピーは分岐命令Eに応答してアドレスmからフェッチされているフェッチ・パケット1342による処理を開始する。次のフェーズでは、命令Mの他のコピーは分岐命令Gに応答してアドレスmからフェッチされているフェッチ・パケット1343による処理を開始する。次のフェーズでは、命令Mの他のコピーは分岐命令Iに応答してアドレスmからフェッチされているフェッチ・パケット1344による処理を開始する。次のフェーズでは、命令Mの他のコピーは分岐命令Kに応答してアドレスmからフェッチされているフェッチ・パケット1345による処理を開始する。Kは最後の分岐命令であったので、命令Qは、フェッチ・パケット1345に続くアドレスmの後に次の逐次的なアドレスとしてアドレスm+1からフェッチされて、次のフェーズにおいて処理を開始する。
【0039】
図14Bを調べることにより明らかなように、命令Mは命令Qを実行する前に6回実行される。これはゼロのオーバヘッドによる反復ループを効率的に作成する。これは、データ・ブロック上で実行されるオペレーションのように種々の反復的な作業にとって都合がよい。ループの前に設定する分岐命令の数を予め選択することにより、反復ループの長さを2から6に変化させてもよいことを理解すべきである。
【0040】
更に、分岐命令の条件特性を用いることにより、この反復ループの長さをダイナミックに変更することができる。この実施例における分岐命令は、条件によって実行される。指定された条件が真であれば、分岐命令を実行し、プログラムの流れは前述のような遅延形式により目標アドレスへ分岐する。この条件が偽であれば、分岐命令はノー・オペレーションとして取り扱われる。
【0041】
従って、予め選択した条件が検出される適当な条件信号により満足されないと命令Cが判断するときは、命令Cを実行せず、かつ反復ループのサイズを1により減少させる。同じように、命令E、G、I又はKは条件によって実行せずに反復ループのサイズを減少させないようにしてもよい。
【0042】
図15Aは、ネストされた遅延分岐命令を有する命令パケットのシーケンスの本発明による他の例を示す。これは、条件テストが偽となるまで、実行される単一フェーズ・ループを発生する。この例は図14Aと同一であるが、この場合に、命令Mは更にそれ自身の目標アドレスを有する分岐命令である。このループは、6つの分岐命令を逐次的な処理用に設定することにより、前のように開始されて最初の分岐の遅延スロットを満たす。このループが開始されると、命令Mは命令フェッチ・パケット1440〜1445のように6回処理される。分岐命令Mが処理される度に、反復ループは1フェーズだけ延長される。従って、ゼロ・オーバヘッドの反復ループが無期限に実行される。前述のように、条件信号が偽であることを分岐命令が検出することにより、このループを抜け出すことができる。ループを完全に抜け出すためには条件信号を6回検知することに注意すべきである。
【0043】
分岐命令の処理では、マイクロプロセッサ1が割り込み処理を禁止している。これは、割り込み処理の完了後に命令パイプラインをその割り込み前の状態に正しく復旧させるために、割り込み処理の開始時にセーブしなければならない状態量を簡単化することにある。
【0044】
図16はネストされた遅延分岐を用いて最適化される内側ループ及び外側ループを有するプログラムを示す、本発明によるフローチャートである。外側ループはアドレスxから命令実行パケット1500による実行処理を開始する。内側ループはアドレスyから命令実行パケット1510による実行処理を開始する。任意数の命令パケットはパケット1500とパケット1510との間で処理されてもよい。更に、パケット1500及びパケット1510はいくつかの場合に同一アドレスからの同一命令パケットであってもよい。アドレスmからの命令実行パケット1520は、yの目標アドレスによる内側ループに関する分岐命令を有し、かつ条件i_condに基づく条件付きのものである。命令実行パケット1521及び1522はパケット1520の遅延スロット1及び2における処理をそれぞれ開始する。命令パケット1522は、xの目標アドレスによる外側ループに関する分岐命令を有し、かつ条件o_condに基づく条件付きのものである。命令実行パケット1523及び1525はパケット1520の遅延スロット3〜5、更にパケット1522の遅延スロット1〜3にある。i_condが真であり、かつo_condが偽であるときは、実行パケット1520はパケット1525後に処理を開始する。i_condが偽であり、かつo_condが真であるときは、実行パケット1526及び1527は処理され、次いでパケット1500が処理される。このようにして、小さな分岐オーバヘッドを都合良く有する2つのループが形成される。
【0045】
明らかなように、本発明の新しい技術を用いて多くの複雑なシーケンスの分岐を実行することができる。
【0046】
図17〜図16は図1のマイクロプロセッサ用の命令フォーマットを示し、特に図26は本発明によるネスト可能な遅延分岐命令用の命令フォーマットを示す。フィールド「cst」には目標アドレスを定義する21ビットのアドレス変位定数が含まれる。フィールド「creg」はレジスタ・ファイル20内の16レジスタのうちの一つを指定して条件テスト用に用いる。フィールド「z」はテストするのは0に対してか又は1に対してかを指定する。指定した条件レジスタが指定されたテストに一致するときは、分岐命令を実行し、かつプログラムの流れが前述のように遅延した形式による目標アドレスに分岐する。テストがノーであれば、分岐命令をノー・オペレーションとして取り扱う。
【0047】
本発明の他の実施例における新しい特徴は、命令フェッチ・パケットにおける4命令以外を有する。図27に示されているこのような一実施例では、命令フェッチ・パケットには8命令が含まれている。命令フェッチ・パケット1710は送出されて、図示のように8実行装置にデコードされる。フェッチ・パケット1720には分岐命令1725が含まれている。命令フェッチ・パケット1730には3つの命令実行パケットが含まれている。第1の命令実行パケットには、分岐命令1725の第1の遅延スロットにおける処理を開始させる2つの命令、ZERO、SHLが含まれている。第2の命令実行パケットには、分岐命令1725用の第2の遅延スロットにおける処理を開始させるADD、SUB、STW、STWが含まれている。第3の命令実行パケットには、分岐命令1725の第3の遅延スロットにおける処理を開始させる2つの命令ADDK、BRが含まれている。本発明の特徴によれば、分岐命令1738は、分岐命令1725の第3の遅延スロットにおける処理を開始させ、かつ命令フェッチ/デコード装置10a内のプログラム・フェッチ・カウンタPFCにより分岐命令1738の目標アドレスを受け取った後、5つのパイプライン・フェーズが完結する。
【0048】
本発明の他の実施例の新しい特徴には、組み合わせ機能の総ゲート・カウントを小さくするために、ここで開示した回路と組み合わせられた他の回路が含まれる。当該技術分野に習熟する者はゲート最小化の技術に通じているので、ここでこのような実施例の詳細については説明しない。
【0049】
本発明の他の実施例の新しい特徴において、割り込み処理は分岐命令処理中に実行可能にされる。この場合に、割り込み回路90が受け取った割り込みは、分岐命令の処理中に命令実行パイプラインに割り込みできるようにされる。割り込みに応答するために、命令フェッチ/デコード装置10cは、処理フェーズDCに進行しなかった処理における全ての命令を無効にする。これはデコードされた全ての命令が待機中の任意の書き込み動作を完了できるようにする。従って、無効にされた命令を再フェッチ及び再処理することにより、パイプラインを再開始することができる。しかし、遅延分岐をネスト可能にする本発明の新しい特徴によれば、単純なフェッチの再開始がパイプラインを正しく再び満たすことはない。従って、遅延分岐命令の処理中に割り込みを可能にさせるために、パイプライン全体を表す状態は、割り込みを処理する前にセーブされなければならない。この状態はデータ・メモリ22の指定された領域にセーブされてもよい。割り込み処理が完了すると、パイプラインはセーブされた状態情報により完全に復旧される。
【0050】
本発明の他の実施例の新しい構成では、命令フェッチ/デコード装置10aにおけるアドレス比較回路が次のフェッチ・パケットが、例えば図14Bにおけるように、フェッチ・パケット1341〜1345に対する前のフェッチ・パケットと同一アドレスからのものであるときを検出する。このような場合に、試行されたフェッチは禁止され、本発明のフェッチ・パケットが保持される。
【0051】
ここで用いているように、用語「適用された」及び「接続された」は、電気的な接続パスに付加的な要素が存在してもよいことを含め、電気的に接続されたことを意味する。
【0052】
実施例を参照して本発明を説明したが、この説明は限定する意味で解釈されることを意図するものではない。本発明の他の種々の実施例はこの説明を参照することにより当該技術分野に習熟する者に明らかである。従って、請求の範囲は実施例の如何なる変更も本発明の真の範囲及び精神内に属することを意図している。
【0053】
以上の項に関して更に以下の項を開示する。
【0054】
(1)命令実行パイプラインを有する中央処理装置であって、前記パイプラインは第1の所定数のパイプライン・フェーズにおける第1の目標アドレスを有する第1の分岐命令を処理及び実行するように動作可能な前記中央処理装置と、
前記所定数のパイプライン・フェーズの最終フェーズにおいて前記第1の目標アドレスを受け取ってフェッチ・アドレスを形成するように動作可能なプログラム・カウンタ回路と、
前記プログラム・カウンタ回路により指定された前記フェッチ・アドレスから命令フェッチ・パケットをフェッチするように動作可能なフェッチ回路であって、前記命令フェッチ・パケットは前記命令実行パイプラインにより処理をするように少なくとも一つの命令を有する前記フェッチ回路と、
前記第1の目標アドレスを有する前記第1の分岐命令の処理を開始した後、直ちにパイプライン・フェーズにおいて第2の目標アドレスを有する第2の分岐命令の処理を開始するように動作可能な前記命令実行パイプライン用の制御回路とを備え、
前記プログラム・カウンタ回路は前記第1の目標アドレスを受け取った後、直ちにパイプライン・フェーズにおいて前記第2の目標アドレスを受け取るように動作可能であるデータ処理装置。
【0055】
(2)前記制御回路は、前記パイプライン・フェーズの前記第1の所定数より少ない、又は等しい第2数の分岐命令の連続的な処理を開始するように動作可能である第1項記載のデータ処理装置。
【0056】
(3)前記第2数の分岐命令はそれぞれ同一目標命令パケットの目標アドレスを有し、
前記フェッチ回路は、前記目標命令パケットを含む単一のフェーズ反復ループが前記第2の回数により実行されるように、前記目標命令パケットをフェッチして前記第2の回数により連続的に処理するように動作可能である第2項記載のデータ処理装置。
【0057】
(4)前記目標命令パケットは前記目標命令パケットの目標アドレスを有する分岐命令を含み、前記分岐命令の前記第2数は前記処理フェーズの前記所定数に等しく、かつ
前記制御回路が制御信号を受け取るまで、前記目標命令パケットを含む前記単一のフェーズ反復ループを無制限回数により実行するように、前記目標命令パケットの処理を連続的に開始するように動作可能である第3項記載のデータ処理装置。
【0058】
(5)更に、前記反復ループの処理中は禁止されるように動作可能である割り込み回路を備えている第3項記載のデータ処理装置。
【0059】
(6)更に、
前記反復ループの処理に割り込みをするように動作可能な割り込み回路と、
前記割り込み回路からの割り込みに応答して前記反復ループを表す状態をセーブするように動作可能な状態セーブ回路と、
前記反復ループを表す前記状態を復旧させるように動作可能な状態復旧回路とを備えている第3項記載のデータ処理装置。
【0060】
(7)
命令実行パイプラインを有する中央処理装置であって、前記パイプラインは第1の所定数のパイプライン・フェーズにおける第1の目標アドレスを有する分岐命令を処理及び実行するように動作可能である前記中央処理装置と、
前記所定数のパイプライン・フェーズの最終フェーズにおいて前記目標アドレスを受け取ってフェッチ・アドレスを形成するように動作可能なプログラム・カウンタ回路と、
前記プログラム・カウンタ回路により指定された前記フェッチ・アドレスから目標命令フェッチ・パケットをフェッチするように動作可能なフェッチ回路であって、前記目標フェッチ・パケットは前記命令実行パイプラインにより処理をするように少なくとも一つの命令を有する前記フェッチ回路と、
前記第1の所定数のパイプライン・フェーズより少ない、又は等しい第2数の分岐命令の連続的な処理を開始するように動作可能な前記命令実行パイプライン用の制御回路と
を備え、
前記フェッチ回路は、前記目標命令パケット含む単一のフェーズ反復ループを前記第2の回数実行するように、前記目標命令フェッチ・パケットをフエッチして前記第2の回数連続的な処理をするように動作可能であるデータ処理装置。
【0061】
(8)データ処理装置内の中央処理装置(CPU)を動作させる方法において、
第1の所定数の命令処理フェーズ及び第2数の実行フェーズを有する命令実行パイプラインを設けるステップと、
第1フェーズの命令処理フェーズにおいて第1の命令パケットをフェッチするステップであって、前記第1の命令パケットが第1の目標アドレスにより少なくとも第1の分岐命令を有するステップと、
前記第1の命令パケットをフェッチするステップの後、直ちに第2の命令パケットをフェッチするステップであって、前記第2の命令パケットは第2の目標アドレスによる第2の命令を有するステップと、
前記第1の所定数の処理フェーズの後、前記実行フェーズのうちの所定の一フェーズにおいて前記CPUのプログラム・カウンタに前記第1の目標アドレスを受け取るステップと、
前記第1の目標アドレスを受け取った後、直ちにフェーズにおける前記プログラム・カウンタにおける前記第2の目標アドレスを受け取るステップと
を備えている方法。
【0062】
(9)更に、
前記命令実行パイプラインにおいて第3数の分岐命令が同時に処理されるまで、他の目標アドレスによる他の分岐命令を有する他の命令パケットを反復的にフェッチするステップであって、前記第3数は前記処理フェーズの前記第1の所定数より小さい、又は等しいステップと、
前記第1の目標アドレスに前記プログラム・カウンタを受け取った後、前記第1の目標アドレスから第1の目標命令パケットをフェッチするステップと、
前記第2の目標アドレスに前記プログラム・カウンタを受け取った後、前記第1の目標アドレスをフェッチするステップであって、前記第2の目標アドレスは前記第1の目標アドレスと同一であるステップと、
前記第1の目標命令パケットを複数回フェッチするステップであって、前記目標命令パケットを含む単一のフェーズ反復ループを前記第3の回数実行するように、前記他の目標アドレスが前記第1の目標アドレスと同一であるステップと
を備えている第8項記載の方法。
【0063】
(10)
前記目標命令パケットは前記目標命令パケットの目標アドレスを有する分岐命令を含み、前記分岐命令の前記第3数は前記処理フェーズの第1所定数と等しく、更に、
前記目標命令パケットを含む単一のフェーズ反復ループを無限回数実行するように、制御信号を受け取るまで前記第1の目標命令パケットを複数回フェッチするステップを備えている第9項記載の方法。
【0064】
(11)更に、前記反復ループの処理中に割り込みを禁止するステップを備えている第10項記載の方法。
【0065】
(12)更に、
前記反復ループの処理に割り込みをするステップと、
割り込みに応答して前記反復ループを表す状態をセーブするステップと、
前記割り込みを処理するステップと、
前記反復ループを表す前記状態を復旧させるステップであって、前記割り込みを処理した後に、前記反復ループを復旧させるステップと
を備えている第10項記載の方法。
【0066】
(13)一つのパターンを表す物理的な入力に応答してディジタル信号を発生するセンサ手段と、
中央処理装置(CPU)、及び前記パターンを認識するために前記CPUにより実行される複数の命令を保持する内部プログラム・メモリを有するマイクロプロセッサと
を備え、前記マイクロプロセッサは、更に、
命令実行パイプラインを有する中央処理装置であって、前記パイプラインが第1の所定数のパイプライン・フェーズにおける第1の目標アドレスを有する第1の分岐命令を処理及び実行するように動作可能な前記中央処理装置と、
前記所定数のパイプライン・フェーズの最終フェーズにおいて前記第1の目標アドレスを受け取ってフェッチ・アドレスを形成するように動作可能なプログラム・カウンタ回路と、
前記プログラム・カウンタ回路により指定された前記フェッチ・アドレスから命令フェッチ・パケットをフェッチするように動作可能なフェッチ回路であって、前記命令フェッチ・パケットは前記命令実行パイプラインにより処理するために少なくとも一つの命令を有する前記フェッチ回路と、
前記第1の目標アドレスを有する前記第1の分岐命令の処理を開始した後、直ちにパイプライン・フェーズにおいて第2の目標アドレスを有する第2の分岐命令の処理を開始するように動作可能な前記命令実行パイプライン用の制御回路とを備え、
前記プログラム・カウンタ回路は前記第1の目標アドレスを受け取った後、直ちにパイプライン・フェーズにおいて前記目標アドレスを受け取るように動作可能である信号処理システム。
【0067】
(14)前記センサ手段はマイクロホン及びアナログ・ディジタル変換器を含み、かつ前記プログラム・メモリは音声認識処理用の命令を保持する第13項記載の信号処理システム。
【0068】
(15)マイクロプロセッサ1は、命令フェッチ/デコード装置10a〜10cと、算術演算及びロード/ストア装置D1、乗算器M1、ALU/シフタ装置S1、算術論理演算器(ALU)L1、データを読み出し、かつデータを書き込む共有マルチポート・レジスタ・ファイル20aを含む複数の実行装置と、データ・メモリ22とを有する。これらの装置は、ネスト可能な遅延分岐命令が得られるように、インターロックなしに動作する命令実行パイプラインを形成する。
【0069】
この発明は、共通に譲受され、この発明と同時出願の米国特許出願第60/036,482号(TI文書番号T−25311)に関連しており、ここではこれを引用により関連させる。
【図面の簡単な説明】
【図1】本発明の実施例を有するマイクロプロセッサのブロック図。
【図2】図1のマイクロプロセッサの実行装置及びレジスタ・ファイルのブロック図
。
【図3】図1のマイクロプロセッサにおける命令実行パイプラインの処理フェーズを
示す図表。
【図4】図1のマイクロプロセッサにおける命令実行パイプラインの実行フェーズを
示す図表。
【図5】図3の処理フェーズにおける命令フェッチ・パケットの処理及び図4の実行フェーズにおける実行パケットの実行の詳細なタイミングを示すタイミング図
。
【図6】図3及び図5に示す命令実行パイプラインにおける遅延分岐を実行するとき
に含まれる遅延スロットを示すタイミング図。
【図7】図6に示した遅延分岐をフェッチした後に命令パイプライン内で処理する命
令を示すタイム・チャート。
【図8】本発明に用いられる命令パケットの基本フォーマットを示す図。
【図9】Aは図8の基本フォーマットによる命令パケットの1例を示す図。
Bは図9Aの命令パケットにより定義された実行シーケンスを示す図。
【図10】Aは図8の基本フォーマットによる命令パケットの他の例を示す図。Bは図10Aの命令パケットにより定義される実行シーケンスを示す図。
【図11】Aは図8のフォーマットによる命令パケットの他の例を示す図。
Bは図9Aの命令パケットにより定義された実行シーケンスを示す図。
【図12】AはA図8のフォーマットによる命令パケットの他の例を示す図。
Bは図12Aの命令パケットにより定義された実行シーケンスを示す図。
【図13】Aは図8のフォーマットによる命令パケットの他の例を示す図。
Bは図13Aの命令パケットにより定義された実行シーケンスを示す図。
【図14】Aはネストされた遅延分岐命令を有する命令パケットのシーケンスであって、6回実行される単一フェーズ・ループを発生する本発明による1例を示す図
。
Bは図14Aの命令パケットにより定義された実行シーケンスを示す図。
【図15】Aはネストされた遅延分岐命令を有する命令パケットのシーケンスであって、条件テストを満足させるまで実行される単一のフェーズ・ループを発生する
本発明による他の例を示す図。
Bは図15Aの命令パケットにより定義された実行シーケンスを示す図。
【図16】ネストされた遅延分岐を用いて最適化される内側ループ及び外側ループを有するプログラムを示す本発明によるフローチャート。
【図17】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図18】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図19】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図20】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図21】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図22】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図23】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図24】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図25】図1のマイクロプロセッサ用の命令フォーマットを示す図。
【図26】ネストされた遅延分岐命令用の、本発明による命令フォーマットを示す図。
【図27】本発明の他の実施例を有し、256ビットの命令メモリを有するマイクロプロセッサのブロック図。
【符号の説明】
1 マイクロプロセッサ
10 CPU
10a〜10c 命令フェッチ/デコード装置
20a レジスタ・ファイル
23 プログラム・メモリ
42 集積回路
50 エミュレーション装置
100 制御回路
Claims (4)
- 命令パイプラインを有する中央処理装置を動作させる方法であって、前記命令パイプラインは所定遅延スロット数のパイプライン・フェーズにおいて目標アドレスを有する分岐命令を処理するように動作可能であり、前記方法は、
複数の命令フェッチ・パケットをフェッチするステップと、前記命令フェッチ・パケットの各々は1つの実行パケットとしてどの命令が並列に実行されるべきかの表示を含む、
第1の目標アドレスを有する1つの第1の分岐命令を含む第1の実行パケットを実行するステップと、
複数の第2の実行パケットを実行するステップと、前記第2の実行パケットの各々は前記第1の目標アドレスを有する1つの第2の分岐命令を有し、前記複数の第2の実行パケットの数は前記所定遅延スロット数より少ないか又は等しい、
を備え、それにより、前記第1の目標アドレスで開始する命令フェッチ・パケットに記憶された目標命令は前記第1の分岐命令に対して1回、前記第2の分岐命令の各々に対して1回実行される前記方法。 - 請求項1に記載の方法において、さらに、
少なくとも1つの第2の分岐命令の実行を対応所定条件に基づく条件付きとするステップを備え、それにより、もし前記対応所定条件が第1のディジタル状態を有するならば前記第2の条件付き分岐命令は前記第1の目標アドレスへの分岐を実行し、もし前記対応所定条件が前記第1のディジタル状態と反対の第2のディジタル状態を有するならば前記第2の条件付き分岐命令は実行されない、
それにより、前記目標命令は前記第1の分岐命令に対して1回、第2の無条件分岐命令の各々に対して1回、前記対応所定条件が前記第1のディジタル状態を有する第2の条件付き分岐命令の各々に対して1回実行される前記方法。 - 請求項1に記載の方法において、さらに、
前記目標命令を前記第1の目標アドレスを有する目標分岐命令とするステップを備え、それにより、前記目標命令が無期限に反復される前記方法。 - 請求項3に記載の方法において、さらに、
前記目標分岐命令の実行を対応所定条件に基づく条件付きとするステップを備え、それにより、もし前記対応所定条件が第1のディジタル状態を有するならば前記目標分岐命令は前記第1の目標アドレスへの分岐を実行し、もし前記対応所定条件が前記第1のディジタル状態と反対の第2のディジタル状態を有するならば前記目標分岐命令は実行されない、
それにより、前記対応所定条件が前記第2のディジタル状態になるまで前記目標分岐命令が反復して実行される前記方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3622297P | 1997-01-24 | 1997-01-24 | |
US036222 | 1997-01-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10222367A JPH10222367A (ja) | 1998-08-21 |
JP3834145B2 true JP3834145B2 (ja) | 2006-10-18 |
Family
ID=21887364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04994598A Expired - Lifetime JP3834145B2 (ja) | 1997-01-24 | 1998-01-26 | ネスト可能な遅延分岐命令を有するマイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6055628A (ja) |
JP (1) | JP3834145B2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1186995B1 (en) * | 1993-11-05 | 2003-09-03 | Intergraph Corporation | Instruction memory with associative cross-bar switch |
DE69837138T2 (de) * | 1997-12-31 | 2007-08-16 | Texas Instruments Inc., Dallas | Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen |
WO2000079395A1 (en) * | 1999-06-21 | 2000-12-28 | Bops Incorporated | Methods and apparatus for establishing port priority functions in a vliw processor |
KR100336773B1 (ko) * | 1999-11-12 | 2002-05-16 | 박종섭 | 지연 분기 구조를 갖는 자바 프로세서 |
US20040162972A1 (en) * | 2003-02-18 | 2004-08-19 | Sorin Iacobovici | Method for handling control transfer instruction couples in out-of-order, multi-issue, multi-stranded processor |
WO2004097625A2 (en) * | 2003-04-29 | 2004-11-11 | Koninklijke Philips Electronics N.V. | Zero overhead branching and looping in time-stationary processors |
US7861063B1 (en) * | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
US7814487B2 (en) * | 2005-04-26 | 2010-10-12 | Qualcomm Incorporated | System and method of executing program threads in a multi-threaded processor |
US8713286B2 (en) | 2005-04-26 | 2014-04-29 | Qualcomm Incorporated | Register files for a digital signal processor operating in an interleaved multi-threaded environment |
US20070266229A1 (en) * | 2006-05-10 | 2007-11-15 | Erich Plondke | Encoding hardware end loop information onto an instruction |
US8473725B2 (en) * | 2009-12-21 | 2013-06-25 | Ceva D.S.P., Ltd. | System and method for processing interrupts in a computing system |
WO2013100934A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Image stream pipeline controller for deploying image primitives to a computation fabric |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4722050A (en) * | 1986-03-27 | 1988-01-26 | Hewlett-Packard Company | Method and apparatus for facilitating instruction processing of a digital computer |
DE69129569T2 (de) * | 1990-09-05 | 1999-02-04 | Philips Electronics N.V., Eindhoven | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen |
EP0488819B1 (en) * | 1990-11-30 | 1999-01-13 | Kabushiki Kaisha Toshiba | Conditional branch instructions execution apparatus |
US5909573A (en) * | 1996-03-28 | 1999-06-01 | Intel Corporation | Method of branch prediction using loop counters |
US5796998A (en) * | 1996-11-21 | 1998-08-18 | International Business Machines Corporation | Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system |
-
1998
- 1998-01-23 US US09/012,676 patent/US6055628A/en not_active Expired - Lifetime
- 1998-01-26 JP JP04994598A patent/JP3834145B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6055628A (en) | 2000-04-25 |
JPH10222367A (ja) | 1998-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004516546A (ja) | パイプライン方式のプロセッサにおける例外処理 | |
JPH09311786A (ja) | データ処理装置 | |
JP2000222206A (ja) | データ処理装置 | |
JP3834145B2 (ja) | ネスト可能な遅延分岐命令を有するマイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法 | |
JPH10232779A (ja) | 命令並列処理方法及び装置 | |
JP2620511B2 (ja) | データ・プロセッサ | |
JPH0786845B2 (ja) | データ処理装置 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
EP2309383A1 (en) | System with wide operand architecture and method | |
JP3578883B2 (ja) | データ処理装置 | |
JP3789583B2 (ja) | データ処理装置 | |
EP3559803B1 (en) | Vector generating instruction | |
US6078940A (en) | Microprocessor with an instruction for multiply and left shift with saturate | |
JPH07120284B2 (ja) | データ処理装置 | |
US5546551A (en) | Method and circuitry for saving and restoring status information in a pipelined computer | |
JP2002229779A (ja) | 情報処理装置 | |
JP2001504956A (ja) | データ処理システム・レジスタ制御 | |
US6128725A (en) | Microprocessor with an instruction for setting or clearing a bit field | |
CN111984313A (zh) | 矢量位转置 | |
JP3547585B2 (ja) | 条件実行命令を有するマイクロプロセッサ | |
JP3569338B2 (ja) | 並列処理プロセッサ | |
JP3568737B2 (ja) | 条件実行命令を備えるマイクロプロセッサ | |
JP2503223B2 (ja) | 先行制御方式 | |
JP2636566B2 (ja) | パイプライン制御方式 | |
JPH07262005A (ja) | 拡張されたオペランドバイパスシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060124 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060424 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060427 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060525 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060620 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060721 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100728 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110728 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120728 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130728 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |