[go: up one dir, main page]

JPH10232779A - 命令並列処理方法及び装置 - Google Patents

命令並列処理方法及び装置

Info

Publication number
JPH10232779A
JPH10232779A JP4848098A JP4848098A JPH10232779A JP H10232779 A JPH10232779 A JP H10232779A JP 4848098 A JP4848098 A JP 4848098A JP 4848098 A JP4848098 A JP 4848098A JP H10232779 A JPH10232779 A JP H10232779A
Authority
JP
Japan
Prior art keywords
instruction
instructions
packet
execution
bit
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
Application number
JP4848098A
Other languages
English (en)
Inventor
Laurence R Simar
アール.シマー ローレンス
Natarajan Seshan
セスハン ナタラジャン
Reid E Tatge
イー.タトゲ レイド
Alan L Davis
エル.デービス アラン
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 JPH10232779A publication Critical patent/JPH10232779A/ja
Pending 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 命令の一部を検査して、命令を並列実行する
か逐次実行するかを指定できるデータ処理システムを開
示する。 【解決手段】 データ処理回路11には、1組の命令を
発生させる回路(プログラムカウンタ21,プログラム
メモリ23,メモリ25)があり、各命令の1部分に、
その1組の命令の中の別の命令と、その命令とを同時に
実行できるか否かを示す指定が含まれている。プログラ
ム実行回路29は、その1組の命令を受信し、命令の1
部分に選択的に応答して、その命令の1部分によって示
される複数の命令を同時に実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にデータ処理
に関し、より詳細には、プログラム命令の並列実行およ
び逐次実行の両方を備えたデータ処理に関する。
【0002】
【発明が解決しようとする課題】データ処理システムお
よびデータプロセッサは、実際上生活のあらゆる側面に
影響を与える多数の用途で使用されている。関連する処
理システムおよびデータプロセッサの速度およびスルー
プットを速くすることにより、これらの多数の用途の有
用性を向上させることができるのが普通である。
【0003】速度およびスループットを向上させること
が可能な場合の1つの方法は、プログラム命令を逐次的
に実行するよりむしろ並列に実行することである。この
点に関する公知の方法の1つは、プログラム命令の並列
実行または逐次実行を指定する特殊なモードの命令を使
用することである。この点に関する公知の別の方法は、
並列型パケットにヌル命令を指定するためにマスクを使
用することである。この点に関する公知の別の解決方法
は、並列モードだけでデータ処理を実行することであ
る。
【0004】前述の手法は速度およびスループットを改
善することができるが、実現することがかなり難しいた
めに望ましくない上、処理に伴うオーバーヘッドの点で
費用がかかるという欠点がある。
【0005】したがって、上に説明した方法に付随する
実現上の困難と、処理に伴うオーバーヘッドとが減少す
るように、プログラム命令を並列で実行できるようにす
ることが望ましい。
【0006】本発明の目的は、与えられたプログラム命
令の一部を利用して、その命令を他のプログラム命令と
同時に実行することができるか否かを決定することであ
る。
【0007】
【課題を解決するための手段】一般に、そしてまた本発
明の形式においては、1組の命令を発生する回路をもつ
データ処理装置が用意されており、これらの命令には、
それぞれ該当する命令を、その複数の命令の中の別の命
令と同時に実行できるか否かを示す命令の1部分が含ま
れている。このデータ処理回路には、前記発生回路に接
続されていて、その1組の命令を受信すると、インジケ
ータ部に応答して複数の命令を同時に実行するプログラ
ム実行回路が含まれている。
【0008】本発明の別の形式では、データ処理装置の
中の中央処理装置(CPU)を動作させる方法は、それ
ぞれ該当する命令を同時に実行できるか否かを示すた
め、1組の命令にそれぞれの命令の1部分を与えるステ
ップと、その命令の1部分から複数の命令を同時に実行
できるか否かを決定するステップとから構成されてい
る。
【0009】本発明の別の実施例は、説明および図面か
ら明らかになるであろう。
【0010】
【発明の実施の形態】添付の図面において、異なる図面
および表における対応する番号と符号は、とくに断りの
ない限り対応する部品を示している。
【0011】図1は、本発明によるデータ処理システム
10のブロック図である。データ処理システム10には
データ処理回路11および周辺回路13,15,17,
19が含まれている。図1の代表的実施例において、デ
ータ処理回路11は、データ処理回路11と周辺回路1
3,15,17,19との間で情報を転送するため、周
辺回路13,15,17,19のそれぞれに接続されて
いる。しかし、以下の説明から明らかになるとおり、本
発明によるデータ処理システムは、この説明の前で後で
も当業者ならば想像できるように、相互に接続されかつ
データ処理回路11に接続されるいかなる量の、また
(たとえば周辺装置13,15,17,19など)いか
なる形式の周辺回路および周辺装置が含まれていてもよ
い。
【0012】図2は、図1のデータ処理回路11の1つ
の代表的実施例の一部を示している。図2において、取
り出し回路23が、プログラムカウンタ21によって指
定されるアドレスでメモリ25にアクセスすると、命令
パケットがそのアドレスで命令レジスタ27にロードさ
れる。プログラム実行回路29は、命令レジスタ27に
保持されているその命令パケットの中の複数の命令を復
号化して実行する。
【0013】図3は、メモリ25から取り出された命令
パケットの基本フォーマットを示している。開示した代
表的実施例においては、命令パケットには4個の32ビ
ット命令A,B,C,Dが含まれている。図3に示すよ
うに、命令A,B,C,Dはメモリ25の連続したアド
レスに格納されている。したがって、正常のプログラム
命令の逐次実行中、命令Aが最初に実行され、命令B,
C,Dが順番に続いて実行される。
【0014】図3の各命令のビット0はp- ビットと呼
ばれている。p- ビットは、命令の実行方法を定義す
る。図3の命令パケットのp- ビットは、プログラム実
行回路29によって左から右に検査される。ある命令の
p- ビットが論理1に等しい場合、そのパケットの中の
次の順番の命令が、最初に言及した命令と同時に実行さ
れる。グラム実行回路29は、その命令パケットの中の
p- ビットが論理0に等しい命令に到達するまでこの規
則を適用する。
【0015】ある命令のp- ビットが0の場合、その命
令の後に(そしてその命令と並列に実行されるすべての
命令の後に)続いて次の順番の命令が実行される。プロ
グラム実行回路29は、命令パケットの中のp- ビット
が論理1の命令に到達するまでこの規則を適用する。
【0016】図4から図19は、上に説明したp- ビッ
トの規則の応用例を示している。
【0017】図4は、すべてのp- ビットが0の命令パ
ケットを示している。したがって、命令Aから命令Dは
図5に示すとおり、順番に連続して実行される。
【0018】図6は、命令A,B,Cのp- ビットが1
に等しく、命令Dのp- ビットが0の命令パケットを示
している。したがって、命令A,B,C,Dは同時に実
行される。すなわち、図7に示すとおり並列で同時に実
行される。
【0019】図8の命令においては、命令Cのp- ビッ
トだけが1にセットされているので、図9の実行順序に
なる。すなわち、命令A,Bが逐次実行され、並列に実
行される命令C,Dが、その後に続いて実行される。
【0020】図システム10の命令パケットにおいて
は、命令Bのp- ビットだけが1にセットされているの
で、図11の実行順序になる。すなわち、命令Aが実行
され、それに続いて命令B,Cが並列に実行され、その
後に続いて命令Dが実行される。
【0021】図12の命令パケットにおいては、命令
B,Cのp- ビットが1にセットされ、命令A,Dのp
- ビットはゼロである。このようになっていると、図1
3に示す命令順になる。すなわち、命令Aが実行され、
それに続いて命令B,C,Dが並列に実行される。
【0022】図システム14の命令パケットにおいて
は、命令Aのp- ビットだけが論理1にセットされてい
るので、図15の実行順序になる。すなわち、命令A,
Bが並列で実行され、その後に続いて命令Cが実行さ
れ、最後に命令Dが実行される。
【0023】図16の命令パケットにおいては、命令
A,Cのp- ビットが1にセットされ、命令B,Dのp
- ビットはゼロになっているので、図17に示す実行順
序になる。すなわち、命令A,Bが並列に実行され、そ
れに続いて命令C,Dが並列に実行される。
【0024】図18の命令パケットにおいては、命令
A,Bのp- ビットが1にセットされ、命令C,Dのp
- ビットはゼロである。このようになっていると、図1
9に示す実行順序になる。すなわち、命令A,B,Cが
並列に実行され、その後に続いて命令Dが実行される。
【0025】開示した例の中の命令パケットには、4個
のプログラム命令が含まれているので、プログラムコン
パイラは常に命令D(4番目の命令)に、0のp- ビッ
トを与えてもよい。コンパイラは、命令A,Bを並列で
実行する規則(propriety )、命令B,Cを並列で実行
する規則、命令A,B,Cを並列で実行する規則に基づ
いて、命令A,B,Cの残りのp- ビットの値を決定す
る。たとえば、命令Bの実行に、命令Aの実行結果が必
要な場合、コンパイラは、命令Bが命令Aの後に実行さ
れるように、命令Aに0のp- ビットを与えるであろ。
別の例として、命令B,Cが同一レジスタをアクセスす
る場合、コンパイラは、命令B,Cが並列ではなく、逐
次的に実行されることを保証するため、命令Bに0のp
- ビットを与えるであろう。
【0026】図20は、本発明の一実施例を使用するマ
イクロプロセッサ1のブロック図である。マイクロプロ
セッサ1は、VLIWディジタル信号プロセッサ(”D
SP”)である。明瞭にするため、図20は、マイクロ
プロセッサ1の、本発明の実施例を理解するために関連
する部分だけを示している。DSPの一般的な構造の詳
細は公知であり、どこかほかでも容易に調べ出すことが
できるであろう。たとえば、Frederick Boutaud ほかに
発行された米国特許第5,072,418 号は、DSPを詳細に
説明している。ここでこの特許に言及することにより、
この特許の開示内容を本願に組み入れることにする。Ga
ry Swobodaほかに発行された米国特許第5,329,471 号
は、DSPのテストとエミュレーションの方法を詳細に
説明している。ここでこの特許に言及することにより、
この特許の開示内容を本願に組み入れることにする。マ
イクロプロセッサ技術に関する当業者が本発明を評価し
て使用できるようにするため、マイクロプロセッサ1
の、本発明に関連する部分を以下に十分詳細に説明す
る。
【0027】マイクロプロセッサ1には、中央処理装置
(CPU)10、データメモリ22、プログラムメモリ
23、周辺回路60およびダイレクトメモリアクセス
(DMA)を備えた外部メモリインタフェース(EMI
F)61がある。さらにCPU10には、命令取り出し
/復号化ユニット10a〜10c、演算およびロード/
ストアユニットD1、乗算器M1、ALU/シフターユ
ニットS1、演算論理ユニット(" ALU" )L1、デ
ータを読み出しかつデータを書き込む共用マルチポート
レジスタファイル20aを含む複数の実行ユニットがあ
る。復号化された命令は、示されていないいろいろな制
御ラインの組を介して、命令取り出し/復号化ユニット
10a〜10cから、機能ユニットD1,M1,S1,
L1に与えられる。データは、第1組のバス32aを介
してロード/ストアユニットD1と、第2組のバス34
aを介して乗算器M1と、第3組のバス36aを介して
ALU/シフターユニットS1と、第4組のバス38a
を介してALUL1と、レジスタファイル20aとの間
で送受される。データは、第5組のバス40aを介し
て、メモリ22とロード/ストアユニットD1との間で
送受される。上に説明した全データ経路は、レジスタフ
ァイル20bおよび実行ユニットD2,M2,S2,L
2と2重化されていることに注意されたい。命令は、1
組のバス41を介して、取り出しユニット10aによっ
て、命令メモリ23から取り出される。外部のテストシ
ステム51によって制御されうるエミュレーションユニ
ット50は、集積回路の内部動作にアクセスできるよう
にする。
【0028】メモリ22,23は、マイクロプロセッサ
1の集積回路の一部として図20に示されており、その
範囲はボックス42で示されていることに注意された
い。メモリ22,23は、マイクロプロセッサ1の集積
回路42の外部にあってもよいし、あるいはメモリの一
部が集積回路42の内部にあり、そしてメモリの一部が
集積回路42の外部にあってもよい。また別の数の実行
ユニットを使用してもよい。
【0029】マイクロプロセッサ1がデータ処理システ
ムに組み込まれると、図1に示すように、メモリまたは
周辺装置を追加してマイクロプロセッサ1に接続するこ
とができる。たとえば、外部バス73を介して、ランダ
ムアクセスメモリ(RAM)70、読み出し専用メモリ
(ROM)71およびディスク72が接続されているこ
とが示されている。バス73は、マイクロプロセッサ4
2の内部の機能ブロック61の重要な部分である外部メ
モリインタフェース(EMIF)に接続されている。ダ
イレクトメモリアス(DMA)コントローラもブロック
61に含まれている。DMAコントローラは、一般にマ
イクロプロセッサ1の内部のメモリと周辺回路との間で
データを転送するために使用されるとともにメモリと、
マイクロプロセッサ1の外部にある周辺装置との間でデ
ータを転送するために使用される。
【0030】本発明の側面から利点を得ることができる
いくつかの代表的なシステムは、その開示内容を本願に
組み入れた米国特許第5,072,418 号に、特にこの特許の
図2から図18を参照して説明されている。米国特許第
5,072,418 号に説明されているシステムをさらに改善す
るため、性能を改善しかつ原価を低減するため本発明の
側面を組み入れたマイクロプロセッサを使用してもよ
い。そのようなシステムには、工業におけるプロセス制
御、自動車(automotive vehicle)システム、モータ制
御、ロボット制御システム、衛星通信システム、反響消
去システム、モデム、ビデオ映像システム、音声認識シ
ステム、暗号付きボコーダ−モデムシステムなどが含ま
れるが、それらに限定されるものではない。
【0031】図20のマイクロプロセッサの各種アーキ
テクチャの特徴は、共同譲渡された特許出願シリアル番
号60/036,482(TI控え番号T-25311)に説明されてい
る。図20のマイクロプロセッサの命令の完全な命令セ
ットも、共同譲渡された特許出願シリアル番号60/086,4
82(TI控え番号T-25311)に説明されている。
【0032】図21は、図20のマイクロプロセッサの
実行ユニットおよびレジスタファイルのブロック図であ
り、各種機能ユニットを接続するバスの詳細な図を示し
ている。本図において、特に注意しない限り、全データ
バスは32ビット幅である。バス40aには、マルチプ
レクサ200aによって駆動されるアドレスバスDA1
がある。このため、ロード/ストアユニットD1または
D2によって発生したアドレスを、レジスタファイル2
0aに対するロードまたはストアのアドレスにすること
ができる。データバスLD1は、アドレスバスDA1に
よって指定されたメモリのアドレスからのデータを、ロ
ードユニットD1のレジスタにロードする。ユニットD
1は、与えられたデータをレジスタファイル20aにス
トアする前に操作(manipulate)する。同様にデータバ
スST1は、レジスタファイル20aからのデータをメ
モリにストアする。ロード/ストアユニットD1は次の
演算、すなわち、32ビットの加算、32ビットの減
算、線形および循環アドレス計算(linear and circula
r address calculations)を実行する。ロード/ストア
ユニットD2は、アドレスを選択するマルチプレクサ2
00bの支援により、D1と同様に動作する。
【0033】ALUユニットL1は次のタイプの演算、
すなわち、32/40ビット数値演算および比較演算、
32ビットの最左端の1ビットおよび0ビットの計数
(leftmost 1, 0, bit counting for 32 bits)、32
ビットおよび40ビットの正規化回数の計数および論理
演算を実行する。ALU L1には、32ビットのソー
スオペランドに対する入力src1と、第2の32ビットの
ソースオペランドに対する入力src2とがある。入力msb
src は、40ビットのソースオペランドを生成するため
に使用される8ビットの値である。ALU L1には、
32ビットの宛先オペランドに対する出力dst がある。出
力msb dst は、40ビット宛先オペランドを形成するた
めに使用される8ビットの値である。レジスタファイル
20aの中にある2つの32ビットレジスタは、40ビ
ットのオペランドを保持するために連結されている。マ
ルチプレクサ211は入力src1に接続されており、32
ビットのオペランドが、バス38aを介してレジスタフ
ァイル20aから、またはバス210を介してレジスタ
ファイル20bから取得されることを可能にしている。
マルチプレクサ212は入力src2に接続されており、3
2ビットオペランドが、バス38aを介してレジスタフ
ァイル20aから取得されること、またはバス210を
介してレジスタファイル20bから取得されることを可
能にしている。ALUユニットL2はユニットL1と同
様に動作する。
【0034】ALU/シフターユニットS1は次のタイ
プの演算、すなわち、32ビット数値演算、32/40
ビットシフトおよび32ビットビットフィールド演算、
32ビット論理演算、分岐および定数の発生を実行す
る。ALU S1には、32ビットのソースオペランド
に対する入力src1と、第2の32ビットのソースオペラ
ンドに対する入力src2とがある。入力msb src は、40
ビットのソースオペランドを形成するために使用される
8ビットの値である。ALU L1には、40ビットの
宛先オペランドに対する出力dstがある。出力msb ds
t は、40ビットの宛先オペランドを生成するために使
用される8ビットの値である。マルチプレクサ213
は、入力src2に接続されており、32ビットのオペラン
ドが、バス36aを介してレジスタファイル20aから
取得されること、またはバス210を介してレジスタフ
ァイル20bから取得されることを可能にしている。A
LUS2は、ユニットS1と同様に動作するが、これに
加えて制御レジスタファイル102との間の両方向でレ
ジスタ転送を実行する。
【0035】乗算器M1は16×16の乗算を実行す
る。ALU S1には、32ビット宛先オペランドに対
する出力dst がある。乗算器M1には、32ビットのソ
ースオペランドに対する入力src1と、32ビットの宛先
オペランドに対する入力src2とがある。マルチプレクサ
214は入力src2に接続されており、32ビットオ
ペランドが、バス34aを介してレジスタファイル20
aから取得されること、またはバス210を介してレジ
スタファイル20bから取得されることを可能にしてい
る。乗算器M2は、乗算器M1と同様に動作する。
【0036】図22は、図1のマイクロプロセッサにお
ける命令実行パイプラインの処理フェーズを示す図表で
ある。各フェーズは、システムクロックのクロックサイ
クルにほぼ対応している。たとえば、マイクロプロセッ
サ1が200メガヘルツで動作している場合、各フェー
ズは通常5ナノ秒である。しかし、RAM70のような
メモリあるいは周辺装置からデータが期待されている場
合、期待されているときにデータが用意されていないと
パイプラインはストール(stall)する。パイプラインが
ストールすると、いくつかのシステムクロックサイクル
の間、あるパイプラインフェーズになっている。
【0037】図22において、命令を処理する第1フェ
ーズは、フェーズPGでプログラムアドレスを発生させ
ることである。これは、制御レジスタファイル102に
配置されているプログラム取り出しカウンタPFCをロ
ーディングすることにより実行される。第2の命令処理
フェーズPS中に、バス41の役割の1つであるプログ
ラムアドレスバスPADDRを介して、命令取り出しパ
ケットのアドレスがプログラムメモリ23に送られる。
第3のフェーズPWは、メモリ23におけるアクセス時
間を考慮するための待ち合わせフェーズである。第4の
フェーズPR中に、バス41の一部であるデータバスP
DATA_Iを介してプログラムメモリ23からプログ
ラム取り出しパケットを使用することができる。第5の
処理フェーズDP中に命令の並列性が検出されると、実
行できる命令が適切な機能ブロックにディスパッチされ
る。パイプライン動作のこの側面については、後の節で
さらに詳細に説明する。第6の処理フェーズDC中に、
実行可能な命令が復号化され、制御信号が発生して、各
種データ経路と機能ユニットとを制御する。
【0038】図23は、図1のマイクロプロセッサ1に
おける命令実行パイプラインの実行フェーズを示す図表
である。第1の実行フェーズE1中に、" ISC" と呼
ぶ1サイクル命令と、" BR" と呼ぶ分岐命令が終了す
る。指定された実行ユニットは、制御回路100によっ
て指示されるとおり、図23に示す演算を実行する。第
2の実行フェーズE2中に、制御回路100の制御によ
って指定された実行ユニットにより、次の命令、すなわ
ち、整数の乗算(IMPY)、プログラムストア命令
(STP)およびデータストア命令(STD)を終了さ
せる。第3の実行フェーズE3中に、データメモリシス
テム(DMS)からのデータをラッチすることにより、
指示されたとおり、ロードデータ命令(LD)の実行を
継続する。第4の実行フェーズE4中に、実行ユニット
D1または実行ユニットD2のデータ入力レジスタDD
ATA_Iに、E3でラッチされたデータが転送され
る。第5の実行フェーズE5中に、レジスタDDATA
_Iのデータを操作して、その操作したデータを、レジ
スタファイル20aまたは20bの中の指定されたレジ
スタに書き込むことにより、LD命令が終了する。
【0039】図24は、図22の処理フェーズ中に命令
取り出しパケットを処理するタイミングの詳細と、図2
3の実行フェーズ中の実行パケットの実行とを示すタイ
ミング図である。フェーズPSではプログラムメモリレ
ディ信号PRDYがローのため、フェーズPWにパイプ
ストールが示され、フェーズE2ではデータメモリレデ
ィ信号DRDYがローのため、フェーズE3に第2のパ
イプストールが示されていることに注意されたい。
【0040】図25は、図20のマイクロプロセッサに
おける命令のディスパッチ動作を示すブロック図であ
る。本実施例において、命令取り出しパケットは8つの
命令を含んでいる。命令取り出しパケット1710は、
図示の通り8つの実行ユニットにディスパッチされて復
号化される。取り出しパケット1720は分岐命令17
25を含んでいる。取り出しパケット1730は3つの
命令実行パケットを含んでいる。第1の実行パケット
は、2つの命令、ZERO、SHLを含んでおり、これ
らの命令は、分岐命令1725に関する第1遅延スロッ
トにおける処理を開始する。第2の実行パケットは、4
つの命令、ADD,SIB,STW,STWを含んでお
り、これらの命令は、分岐命令1725に関する第2遅
延スロットにおける処理を開始する。第3の実行パケッ
トは、2つの命令、ADDK,BRを含んでおり、これ
らの命令は、分岐命令1725の第3遅延スロットの処
理を開始する。
【0041】並列演算 命令は常に1度に8つ取り出される。これが1つの取り
出しパケットを構成する。取り出しパケットの基本フォ
ーマットは、図26に示されている。取り出しパケット
の実行のグループ化は、各命令のビット0のp- ビット
によって指定される。取り出しパケットは8語に揃えら
れている。
【0042】p- ビットは、命令の並列実行を制御す
る。p- ビットは左から右へ(低いアドレスから高いア
ドレスへ)走査される。命令iのp- ビットが1の場
合、命令i+1は命令iと(命令iと同じサイクルで)
並列に実行されることになる。命令iのp- ビットが0
の場合、命令iの後のサイクルで命令i+1が実行され
る。並列で実行する全命令は、1つの実行パケットを構
成する。1つの実行パケットは最大8つの命令を含むこ
とができる。実行パケットの中の全命令は独自の機能ユ
ニットを使用なければならない。
【0043】実行パケットは、8語の境界を横切ること
はできない。したがって、取り出しパケットの最後のp
- ビットは常に0にセットされており、各取り出しパケ
ットは、新しい実行パケットを開始させる。図4から図
19について考察したとおり、取り出しパケットに対し
て3タイプのp- ビットのパターンがある。これらの3
つのp- ビットパターンは、次に示す8つの命令の実行
順序になる。すなわち、完全シリアル、完全並列、部分
的シリアルの3つである。
【0044】並列符号の例 文字" ||" は、命令が直前の命令と並列に実行される
ことを表している。図27の取り出しパケットにおい
て、この符号は次のように表示される。
【表1】
【0045】実行パケットの中間に対する分岐動作 実行パケットの中間に対する分岐が発生すると、それよ
りも低いアドレスの全命令は無視される。図27の例に
おいて、命令Dを含むアドレスに対する分岐が発生する
と、DおよびEだけが実行される。命令Cも同一実行パ
ケットの中にあるが、命令Cは無視される。また命令
A,Bは時間的に前の方の実行パケットにあるから、命
令A,Bも無視される。
【0046】資源の制約 同一実行パケットの中のどの2つの命令も同一資源を使
用することはできない。また、どの2つの命令も、同一
サイクル中に同一レジスタに書き込むことはできない。
以下の節において、命令が使用できる資源のそれぞれに
ついて説明する。
【0047】機能ユニット 同一機能ユニットを使用する2つの命令を同一実行パケ
ットで発行することはできない。
【0048】次の実行パケットは無効である。
【表2】 ADD S1 A0,A1,A2 ;\ .S1が両命令に使用されている。 || SHR .S1 A3,15,A4 ;/
【0049】次の実行パケットは有効である。
【表3】 ADD L1 A0,A1,A2 ;\ 2つの異なる機能ユニットが || SHR .S1 A3,15,A4 ;/ 使用されている。
【0050】相互経路(Cross Paths)(1Xおよび2
X) 実行ユニットごとの(S,L,Mのいずれか)1つのユ
ニットは、データ経路ごとに相互経路(1Xおよび2
X)を介してその反対側のレジスタファイルからソース
オペランドを読み出すことができる。たとえば、S1
は、Aレジスタファイルから両方のオペランドを読み出
すことができるか、あるいは1X相互経路を使用して、
Bレジスタファイルから1つのオペランドを読み出すこ
とができる。このことは、ユニット名の後にくるXによ
って表示される。
【0051】AからBの間およびBからAの間には、そ
れぞれ1つの経路しかないのであるから、レジスタファ
イル間で同一X相互経路を使用する2つの命令を同一実
行パケットで発行することはできない。
【0052】次の実行パケットは無効である。
【表4】 ADD.L1X A0,B1,A1 ;\ 両命令に対して1X相互経路が || MPY.M1X A4,B4,A5 ;/ 使用されている。
【0053】次の実行パケットは有効である。
【表5】 ADD.L1X A0,B1,A1 ;\ これらの命令は、1Xおよび2X || MPY.M2X A4,B4,132 ;/ 相互経路を使用している。
【0054】命令フィールドのxビットがセットされて
いる場合、オペランドは宛先と反対のレジスタファイル
から来る。
【0055】ロード経路およびストア経路 ロードおよびストアは、他のレジスタファイルへのロー
ドまたは他のレジスタファイルからのストアを実行しな
がら、1つのレジスタファイルからのアドレスポインタ
を使用することができる。同一レジスタファイルからの
アドレスポインタを使用する2つのロードおよび/ある
いはストアを同一実行パケットで発行することはできな
い。
【0056】次の実行パケットは無効である。
【表6】 LDW D1 *A0,A1 ;\ 同一レジスタファイルからの || LDW.D1 *A2,B2 ;/ アドレスレジスタである。 次の実行パケットは有効である。
【表7】 LDW D1 *A0,A1 ;\ 異なるレジスタファイルからの || LDW.D2 *B0,B2 ;/ アドレスレジスタである。
【0057】同一レジスタファイルにロード中の、およ
び/あるいは同一レジスタファイルからストア中の2つ
のロードおよびストアを、同一実行パケットで発行する
ことはできない。
【0058】次の実行パケットは無効である。
【表8】 LDW D1 *A4,A5 ;\ 同一レジスタファイルとのロード || STW.D2 A6,*B4 ;/ およびストアである。
【0059】次の実行パケットは有効である。
【表9】 LDW D1 *A4,B5 ;\ 異なるレジスタファイルとのロード || STW.D2 A6,*B4 ;/ およびストアである。
【0060】長い経路(Long Path) 1サイクル当たり、1つだけの長い結果(long result)
を両側のレジスタファイルに書き込むことができる。S
ユニットおよび. Lユニットは、長いソースオペランド
の読み出しレジスタポートと、長い結果の書き込みレジ
スタポートとを共用しているので、実行パケットで、1
側に1つだけこの種命令を発行してもよい。
【0061】次の実行パケットは無効である。
【表10】 ADD.L1 A5:A4,A1,A3:A2 ;\ Aレジスタファイルへの || SHL.S1 A8,A9,A7:A6 ;/ 長い書き込みが2つある。 次の実行パケットは有効である。
【表11】 ADD.L1 A5:A4,A1,A3:A2 ;\ 各レジスタファイルへの || SHL.S2 B8,B9,B7:B6 ;/ 長い書き込みが1つある。
【0062】. Lユニットおよび. Sユニットは、スト
アポートと、これら両ユニット用の長い読み出しレジス
タを共用しているので、ストアと同じ実行パケットで、
長い値を読み出す演算を. Lユニットおよび/あるい
は. Sユニットに発行することはできない。
【0063】次の実行パケットは無効である。
【表12】 ADD.L1 A5:A4,A1,A3:A2 ;\ 長い読み出し演算 || STW.D1 A8, *A9 ;/ とストアがある。 次の実行パケットは有効である。
【表13】 ADD.L1 A4,A1,A3:A2 ;\ ストアと一緒の長い || STW.D1 AB, *A9 ;/ 読み出しがない。
【0064】レジスタ読み出し 同一サイクルで、同一レジスタに対する4回以上の読み
出しを発生させることはできない。条件付きレジスタは
この回数に含まれていない。
【0065】次のコードシーケンスは無効である。
【表14】 MPY .M1 A1,A1,A4 ; レジスタA1を5回 || ADD .L1 A1,A1,A5 読出している。 || SUB .D1 A1,A2,A3
【0066】一方このコードシーケンスは有効である。
【表15】 MPY .M1 A1,A1,A4 ; レジスタA1を4回 || [A1] ADD .L1 A0,A1,A5 だけ読出している。 SUB .D1 A1,A2,A3
【0067】レジスタ書き込み 同一レジスタに書き込む命令であって、異なる待ち合わ
せ時間をもつ命令が、異なるサイクルに発行される場
合、同一サイクルで、同一レジスタに複数回の書き込み
が発生することがある。たとえば、サイクルi+1のA
DDの前のサイクルiで発行されたMPYは、同一レジ
スタに書き込みをすることができない。その理由は、両
命令がサイクルi+1で結果を書き込むからである。し
たがって、次のコードシーケンスは無効である。
【表16】
【0068】書き込み競合(conflict)の検出可能性 次の実行パケットのシーケンスは、異なる複数の書き込
みの競合を示している。たとえば、実行パケットL1の
中のADDおよびSUBは、同一レジスタに書き込む。
この競合は容易に検出できる。
【表17】 L1: ADD.L2 B5,B6,B7 ; 検出可能、競合する || SUB.S2 B8;B9,B7 L2: MPY.M2 B0,B1,B2 ;\ 検出不可能 L3: ADD.L2 B3,B4,B2 ;/ L4: [!B1] ADD.L2 B5,B6,B7 ; 検出可能、競合しない || [B0] SUB.S2 B8,B9,B7 L5: [!B1] ADD.L2 B5,B6,B7 ;\ 検出不可能 || [B0] SUB.S2 B8,B9,B7 ;/
【0069】パケットL2のMPYとパケットL3のA
DDは、共に同時にB2に書き込むが、分岐命令のた
め、L2の後の実行パケットが、L3以外の何らかのパ
ケットになると、これは競合にならないであろう。した
がって、L2およびL3における潜在的な競合は、アセ
ンブラによって検出されないかもしれない。L4の中の
命令は書き込み競合を構成しない。何故かというと、こ
れらの命令は相互に排他的だからである。対照的に、L
5の中の命令は相互に排他的であることが明確でないか
ら、アセンブラは競合を決定することができない。同一
レジスタに対して書き込みを複数回実行するコマンドを
パイプラインが受信すると、その結果は定義されていな
い。
【0070】本発明の模範的な例が上に説明されている
が、この実施例は本発明を限定するものではない。本発
明は、多様な実施例の中で実現されうる。
【0071】関連特許に対する相互参照 本願は、本願と同時に出願され、共通譲渡された特許出
願シリアル番号第60/036,482号(TI控え番号TI−2
135)に関連している。ここでこの特許出願に言及す
ることにより、この特許出願の開示内容を本願に組み入
れることにする。
【図面の簡単な説明】
【図1】本発明によるデータ処理システムのブロック
図。
【図2】図1のデータ処理回路の一部のブロック図。
【図3】本発明で使用されている命令パケットの基本フ
ォーマットを示す図。
【図4】図3のフォーマットによる命令パケットの一例
を示す図。
【図5】図4の命令パケットによって定義される実行順
序を示す図。
【図6】図3のフォーマットによる命令パケットの別の
例を示す図。
【図7】図6の命令パケットによって定義される実行順
序を示す図。
【図8】図3のフォーマットによる命令パケットの別の
例を示す図。
【図9】図8の命令パケットによって定義される実行順
序を示す図。
【図10】図3のフォーマットによる命令パケットの別
の例を示す図。
【図11】図10の命令パケットによって定義される実
行順序を示す図。
【図12】図3のフォーマットによる命令パケットの別
の例を示す図。
【図13】図12の命令パケットによって定義される実
行順序を示す図。
【図14】図3のフォーマットによる命令パケットの別
の例を示す図。
【図15】図14の命令パケットによって定義される実
行順序を示す図。
【図16】図3のフォーマットによる命令パケットの別
の例を示す図。
【図17】図16の命令パケットによって定義される実
行順序を示す図。
【図18】図3のフォーマットによる命令パケットの別
の例を示す図。
【図19】図18の命令パケットによって定義される実
行順序を示す図。
【図20】本発明の実施例を使用するマイクロプロセッ
サのブロック図。
【図21】図20のマイクロプロセッサの実行ユニット
およびレジスタファイルのブロック図。
【図22】図20のマイクロプロセッサにおける命令実
行パイプラインの処理フェーズを示す図表。
【図23】図20のマイクロプロセッサにおける命令実
行パイプラインの処理フェーズを示す図表。
【図24】図22の処理フェーズ中に命令取り出しパケ
ットを処理するタイミングと、図23の実行フェーズ中
の実行パケットの実行とを示すタイミング図。
【図25】図20のマイクロプロセッサにおける命令の
ディスパッチを示すブロック図。
【図26】図20のマイクロプロセッサの命令取り出し
パケットの基本フォーマットを示す図。
【図27】部分的に並列な8語取り出しパケットを示す
図。
【符号の説明】
1 マイクロプロセッサ 10 データ処理システム/中央処理装置(CPU) 10a 命令取り出し 10b 命令ディスパッチユニット 10c 復号化ユニット 11 データ処理回路 13,15,17,19 周辺回路 12a,12b 演算およびロード/ストアユニット 14a.14b 乗算器 16a.16b ALU/シフターユニット 18a,18b 数値・論理演算ユニット 20a、20b レジスタファイル 21 プログラムカウンタ 22 データメモリ 23,1723 プログラムメモリ 23 取り出し回路 25 メモリ 27 命令レジスタ 29 プログラム実行回路 32a,34,36a、38a.40a バス 41 バス 42 マイクロプロセッサの範囲を示すボックス 50 エミュレーションユニット 51 外部テストシステム 60 周辺回路 61 ダイレクトメモリアクセス(DMA)付き外部メ
モリインタフェース 73 外部バス 70 RAM 71 ROM 72 ディスク装置 100 制御論理/制御回路 102 制御レジスタファイル 200a,200b,211,212,213,214
マルチプレクサ 1710,1720,1730,1740 命令取り出
しパケット 1725,1738 分岐命令
───────────────────────────────────────────────────── フロントページの続き (72)発明者 レイド イー.タトゲ アメリカ合衆国 テキサス州リッチモン ド,コッパーウッド レーン 1707 (72)発明者 アラン エル.デービス アメリカ合衆国 テキサス州シュガーラン ド,マラナサ ドライブ 3739

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 それぞれの命令を同時に実行することが
    できるか否かを示す、それぞれの命令の1部分を含む1
    組の命令を発生する回路を有するデータ処理回路を含む
    データ処理システムであって、 前記データ処理回路は、前記発生回路に接続され、前記
    1組の命令を受信するプログラム実行回路を含みかつ前
    記命令の1部分に選択的に応答して前記命令の1部分に
    よって示される複数の前記命令を同時に実行するデータ
    処理システム。
  2. 【請求項2】 データ処理システムにおいてプログラム
    命令を処理する方法であって、 その命令の中の別の命令と同時にそれぞれの命令を実行
    できるか否かを示すそれぞれの命令の1部分を、1組の
    命令に供給するステップと、 複数の前記命令を同時に実行できるか否かを、前記命令
    の1部分から決定するステップと、を含む方法。
  3. 【請求項3】 データ処理システムによって実行するた
    め、プログラムをコンパイルする方法であって、 プログラムの中の第1のプログラム命令の直後に続く第
    2のプログラム命令と同時に、その第1のプログラム命
    令を実行できるか否かを決定するステップと、 第1の命令を第2の命令と同時に実行できるか否かを示
    す命令の1部分を、その第1の命令に供給するステップ
    と、を具備する方法。
JP4848098A 1997-01-24 1998-01-23 命令並列処理方法及び装置 Pending JPH10232779A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3622397P 1997-01-24 1997-01-24
US036223 1997-01-24

Publications (1)

Publication Number Publication Date
JPH10232779A true JPH10232779A (ja) 1998-09-02

Family

ID=21887373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4848098A Pending JPH10232779A (ja) 1997-01-24 1998-01-23 命令並列処理方法及び装置

Country Status (2)

Country Link
EP (1) EP0855648A3 (ja)
JP (1) JPH10232779A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004511043A (ja) * 2000-10-05 2004-04-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ リターゲッタブルコンパイルシステム及び方法
KR100689717B1 (ko) * 1999-10-01 2007-03-09 후지쯔 가부시끼가이샤 병렬 처리 프로세서

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6314471B1 (en) 1998-11-13 2001-11-06 Cray Inc. Techniques for an interrupt free operating system
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6430676B1 (en) * 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead
US6353829B1 (en) 1998-12-23 2002-03-05 Cray Inc. Method and system for memory allocation in a multiprocessing environment
US6415433B1 (en) 1998-12-23 2002-07-02 Cray Inc. Method and system for identifying locations to move portions of the computer program
US6321379B1 (en) 1998-12-23 2001-11-20 Cray Inc. Method and system for target register allocation
US7039790B1 (en) 1999-11-15 2006-05-02 Texas Instruments Incorporated Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
EP1102165A1 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Microprocessor with execution packet spanning two or more fetch packets
FR2812417A1 (fr) 2000-07-27 2002-02-01 St Microelectronics Sa Processeur dsp a architecture parallele
DE10043003A1 (de) 2000-09-01 2002-03-14 Infineon Technologies Ag Programmgesteuerte Einheit
US7681013B1 (en) 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US7034849B1 (en) 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US7114058B1 (en) * 2001-12-31 2006-09-26 Apple Computer, Inc. Method and apparatus for forming and dispatching instruction groups based on priority comparisons
EP1367484B1 (en) * 2002-05-31 2013-07-24 STMicroelectronics Limited Instruction encoding
US7590824B2 (en) * 2005-03-29 2009-09-15 Qualcomm Incorporated Mixed superscalar and VLIW instruction issuing and processing method and system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
US5504932A (en) * 1990-05-04 1996-04-02 International Business Machines Corporation System for executing scalar instructions in parallel based on control bits appended by compounding decoder
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
DE69130588T2 (de) * 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5974534A (en) * 1994-02-14 1999-10-26 Hewlett-Packard Company Predecoding and steering mechanism for instructions in a superscalar processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100689717B1 (ko) * 1999-10-01 2007-03-09 후지쯔 가부시끼가이샤 병렬 처리 프로세서
US7401204B1 (en) 1999-10-01 2008-07-15 Fujitsu Limited Parallel Processor efficiently executing variable instruction word
JP2004511043A (ja) * 2000-10-05 2004-04-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ リターゲッタブルコンパイルシステム及び方法

Also Published As

Publication number Publication date
EP0855648A3 (en) 1999-12-22
EP0855648A2 (en) 1998-07-29

Similar Documents

Publication Publication Date Title
JPH10232779A (ja) 命令並列処理方法及び装置
US7062526B1 (en) Microprocessor with rounding multiply instructions
KR100440841B1 (ko) 마이크로컴퓨터
US6745319B1 (en) Microprocessor with instructions for shuffling and dealing data
EP1102163A2 (en) Microprocessor with improved instruction set architecture
AU635016B2 (en) Decoding multiple specifiers in a variable length instruction architecture
US6748521B1 (en) Microprocessor with instruction for saturating and packing data
JPH09311786A (ja) データ処理装置
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
JPH02282826A (ja) 同じ命令内におけるレジスタ及びレジスタ変更指定子のパイプライン処理
JP2017138993A (ja) マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP2620511B2 (ja) データ・プロセッサ
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JP3578883B2 (ja) データ処理装置
US6757819B1 (en) Microprocessor with instructions for shifting data responsive to a signed count value
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
JP2690406B2 (ja) プロセッサおよびデータ処理システム
JP3841967B2 (ja) マイクロプロセッサ
US6766440B1 (en) Microprocessor with conditional cross path stall to minimize CPU cycle time length
JP2001202241A (ja) 実行パケットが2以上の取出しパケットをスパンするマイクロプロセッサを備えるディジタル処理システム及び同システムの操作方法
US6112291A (en) Method and apparatus for performing a shift instruction with saturate by examination of an operand prior to shifting
US6128725A (en) Microprocessor with an instruction for setting or clearing a bit field
JP3547585B2 (ja) 条件実行命令を有するマイクロプロセッサ
JP2877468B2 (ja) 電子計算機
JP2824484B2 (ja) パイプライン処理計算機