JPH07295813A - 複数の型のオペレーションを同時並列で実行するためのプロセッサコア、およびオペレーションに用いられるオペランドデータを処理し通信する方法 - Google Patents

複数の型のオペレーションを同時並列で実行するためのプロセッサコア、およびオペレーションに用いられるオペランドデータを処理し通信する方法

Info

Publication number
JPH07295813A
JPH07295813A JP7101147A JP10114795A JPH07295813A JP H07295813 A JPH07295813 A JP H07295813A JP 7101147 A JP7101147 A JP 7101147A JP 10114795 A JP10114795 A JP 10114795A JP H07295813 A JPH07295813 A JP H07295813A
Authority
JP
Japan
Prior art keywords
functional unit
bus
operand
floating point
integer
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.)
Granted
Application number
JP7101147A
Other languages
English (en)
Other versions
JP3618821B2 (ja
Inventor
Scott A White
スコット・エイ・ホワイト
Michael D Goddard
マイケル・ディー・ゴッダード
William M Johnson
ウィリアム・エム・ジョンソン
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH07295813A publication Critical patent/JPH07295813A/ja
Application granted granted Critical
Publication of JP3618821B2 publication Critical patent/JP3618821B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

(57)【要約】 【目的】 混合型オペレーションを同時並列で実行する
プロセッサコアを提供する。 【構成】 プロセッサコア10は、第1のサイズのデー
タ幅を有する第1の機能ユニット21と、第1のサイズ
より大きい第2のサイズのデータ幅を有する第2の機能
ユニット22と、第1および第2の機能ユニット21、
22のデータ経路に結合され、第2のサイズと等しいか
またはそれより大きいサイズを有するバス30、31、
32とを含む。

Description

【発明の詳細な説明】
【0001】
【発明の背景】関連出願 この出願は、1993年10月29日出願の米国特許出
願連続番号08/146,382の一部係属出願であ
る。
【0002】発明の分野 この発明はプロセッサアーキテクチャに関する。より特
定的にはこの発明は、浮動小数点機能ユニットと非浮動
小数点機能ユニットとを組合せるプロセッサアーキテク
チャに関連する。
【0003】関連技術の説明 プロセッサは一般的に命令セットのうちの1つの命令を
いくつかのステップで処理する。初期の技術によるプロ
セッサはこれらのステップを直列に行なった。技術の進
歩で、スカラプロセッサと呼ばれる、多くの命令の異な
るステップを同時並列で行なうパイプラインアーキテク
チャプロセッサへと至った。「スーパースカラ」プロセ
ッサもまたパイプライン構造を用いて実現されるが、そ
れはスカラ命令を同時並列で実行することによって性能
をさらに向上させる。
【0004】スーパースカラプロセッサでは、必要なデ
ータまたは資源が利用可能でないために、発行された命
令が実行できないという命令の競合および依存性条件が
生じる。たとえば、発行された命令の入力オペランドが
実行を完了していない他の命令によって計算されるデー
タに依存しているときは、その命令は実行できない。
【0005】分岐命令の予測実行と、命令を即座に実行
できるかどうかにかかわらず命令デコードを継続するこ
ととによって、スーパースカラプロセッサの性能は向上
される。命令デコードと命令実行との切離しは、プロセ
ッサの命令デコーダと、機能ユニットと呼ばれる、命令
を実行する回路との間にバッファを必要とする。
【0006】浮動小数点機能はもう何年もの間、非スー
パースカラコンピュータおよびプロセッサにおいて利用
されてきた。マイクロプロセッサは通常は、別個の浮動
小数点回路と整数回路とを活性化することによって、浮
動小数点命令と整数命令とを行なう。浮動小数点演算の
ための標準は、インスティチュート・オブ・エレクトリ
カル・アンド・エレクトロニック・エンジニアーズ(In
stitute of Electrical and Electronic Engineers)に
よって、「2進浮動小数点演算のためのIEEE規格
(IEEE Standard For Binary Floating-Point Arithmet
ic)」、ANSI/IEEE 規格754-1985、IEEEインコーポレイ
テッド(IEEE Inc. )、1985に発表されている。この標
準は広く受入れられており、プロセッサがそのオプショ
ンの拡張浮動小数点フォーマットをサポートするのは有
利なことである。
【0007】いくつかのコンピュータは、別個の主プロ
セッサチップとコプロセッサチップとを用いる。主プロ
セッサは浮動小数点レジスタスタックを読出しおよびそ
れに書込んで浮動小数点オペレーションを行なう。たと
えば、スカラマイクロプロセッサである80386主プ
ロセッサおよび80387数値計算コプロセッサがさま
ざまな製造業者から入手可能である。数値計算コプロセ
ッサは主プロセッサからの要求で開始される浮動小数点
オペレーションを制御する。主プロセッサは、2倍に拡
張されたフォーマットに記憶される8つまでの浮動小数
点値を保持するための8つのレジスタを含むレジスタス
タックにアクセスする。32ビットの単精度値または6
4ビットの倍精度値はメモリからロードされ80ビット
の2倍に拡張されたフォーマットに拡張される。逆に、
メモリに記憶される際には、2倍に拡張された値は短縮
されて単精度値または倍精度値に丸められる。
【0008】カリフォルニア州(California)、サンタ
・クララ(Santa Clara )のインテル・コーポレイショ
ン(Intel Corporation )から入手可能なPentium TM
イクロプロセッサは、2つの命令パイプラインのオペレ
ーションを制御することによって、混合された浮動小数
点および整数命令を実行する、スーパースカラプロセッ
サである。パイプラインのうちの1つはすべての整数お
よび浮動小数点命令を実行する。第2のパイプラインは
単純な整数命令と浮動小数点交換命令とを実行する。
【0009】浮動小数点機能ユニットをスーパースカラ
プロセッサにいくつかの整数機能ユニットとともに組入
れることは望ましい。ダブリュー・エム・ジョンソン
(W.M.Johnson )は、「スーパースカラプロセッサ設計
(Superscalar Processor Design)」、エンゲルウッド
・クリフス(Engelwood Cliffs)、N.J.、プレンテ
ィス・ホール(Prentice Hall )、1991、p.45
で、プロセッサ機能ブロックの2つの組、つまり32ビ
ットのユニットおよびバス上に構成される整数の組と、
80ビット構造に編成される浮動小数点の組とを与えて
いる。スーパースカラプロセッサにおいて、浮動小数点
の組および整数の組は、別個のレジスタファイルとリオ
ーダバッファとオペランドバスと結果バスとを各々必要
とする。浮動小数点命令は浮動小数点の組内の命令デコ
ーダによってディスパッチされる。別の命令デコーダは
ユニットの整数の組に設けられる。このジョンソンのア
プローチはスーパースカラアーキテクチャを組込むプロ
セッサにおける浮動小数点演算をサポートして、命令デ
コードおよび命令実行と、分岐予測とを切離す。このア
プローチのかなりの性能上の利点は、資源の重複を省み
ないことによって達成される。さらに、性能におけるい
くぶんかの低下が、機能ブロックの整数の組と浮動小数
点の組との間におけるオペレーションの調整から生ず
る。
【0010】
【発明の概要】この発明は、スーパースカラアーキテク
チャの利点をよりよく実現して、命令デコードおよび命
令実行と分岐予測とを切離す、整数および浮動小数点デ
ータの改善された処理のための内部マシン編成を有する
プロセッサおよびアーキテクチャである。
【0011】この発明のスーパースカラプロセッサおよ
びアーキテクチャは、整数およびIEEE拡張浮動小数
点フォーマットの標準的演算をサポートしながら、デコ
ーダ、レジスタファイル、リオーダバッファ、ならびに
関連のオペランドバスおよび結果バスのような機能ブロ
ックの重複を有利に回避する。資源重複を避けることに
より、生産コストおよびオペレーティングコストが減少
し、重複する資源間の相互作用から生じる複雑性が回避
され、機能ブロックの異なる組によって行なわれるオペ
レーション間のタイミング関係の制御が容易となる。
【0012】この発明のアーキテクチャは、整数データ
または浮動小数点データのいずれもが共通の包括的な方
法で共通の制御下において多重データ経路の組の任意の
データ経路に流れるという整数データおよび浮動小数点
データの処理を、パイプラインプロセッサまたはスーパ
ースカラプロセッサに有利に組込む。
【0013】整数オペレーションおよび浮動小数点オペ
レーションの両方のための依存性およびタグ情報を記憶
するために、1つのリオーダバッファメモリを用いて、
解決されないデータ依存性を処理することは、この発明
のスーパースカラプロセッサの特定的な利点である。リ
オーダバッファの1つの機能は、散在する整数および浮
動小数点オペレーションの順序を含む、ディスパッチさ
れるオペレーションの順序を維持することである。単一
のリオーダバッファはオペレーション順序を単純な態様
で維持する。対照的に、別個の整数リオーダバッファと
浮動小数点リオーダバッファとを有するプロセッサはオ
ペレーション順序を維持するのに広範囲にわたる相互参
照を必要とする。
【0014】さらに、この発明のスーパースカラプロセ
ッサの性能は、単一のリオーダバッファを実現して、分
岐予測および回復を用いて、混合された整数および浮動
小数点オペレーションの予測実行を処理することによっ
て、有利に強化される。単一のリオーダバッファは、整
数オペレーション、浮動小数点オペレーション、および
分岐オペレーションの順序を維持する。リオーダバッフ
ァにおける他のエントリに関する分岐命令の位置はポイ
ンタによって示される。したがって、命令シーケンスは
1つの分岐ポインタでもってリオーダバッファエントリ
の1つのシーケンスに反映される。分岐の予測誤り後の
予測状態のフラッシングは、記憶されるデータの型に関
係なく、および複雑な制御構造または命令の直列化を要
求することなく、分岐の予測誤りの後の回復の間にわず
か1つのメモリを変えることによって容易に達成される
であろう。
【0015】この発明のプロセッサおよびアーキテクチ
ャは、第1のサイズのオペランドデータを用いる第1の
機能ユニットと第2のサイズのオペランドデータを用い
る第2の機能ユニットとを含む、混合された整数および
浮動小数点オペレーションを同時並列で実行するための
新しいプロセッサコアを提供することによってこれらの
利点を達成する。データを与えるために、いくつかのオ
ペランドバスが機能ユニットに接続する。オペランドバ
スの幅は第1または第2のサイズのデータのいずれをも
通信するのに十分である。
【0016】この発明の別の実施例は、混合された命令
セットを実現するためのプロセッサにおいてオペランド
データを通信するための方法である。この命令セット
は、第1のサイズ(たとえば32ビット)のオペランド
データを用いる第1の型(たとえば整数)の機能ユニッ
トで実行するオペレーションと、第1のサイズより大き
い第2のサイズ(たとえば80またはそれより大きいビ
ット)のオペランドデータを用いて第2の型(たとえば
浮動小数点)の機能ユニットで実行するオペレーション
とを定義する。この方法は、第2の型のオペレーション
を、第2のサイズに比して小さいサイズ(たとえば40
またはそれより多いビット)のサブオペランドデータに
各々が関連する複数のサブオペレーションに区分するス
テップを含む。この方法はさらに、第1のサイズまたは
区分された第2のサイズのいずれにも対処する第3のサ
イズ(たとえば40またはそれより多いビット)のバス
上でサブオペランドデータが通信される状態で、複数の
サブオペランドおよび関連するサブオペランドデータを
第2の型の機能ユニットにディスパッチするステップを
含む。この方法のさらなるステップは、ディスパッチさ
れたサブオペランドデータを第2のサイズのオペランド
データに再び組合せ、その区分されたオペレーションを
実行して、第2のサイズの結果を発生するステップを含
む。
【0017】この発明のさらなる実施例は、整数オペラ
ンドデータまたは浮動小数点オペランドデータのいずれ
をも用いて、いくつかのオペレーションを並列して実行
するためのプロセッサである。このプロセッサはいくつ
かのオペレーションをデコードしディスパッチするため
のデコーダを含む。デコーダは、並行してディスパッチ
される浮動小数点サブオペランドに各々が関連する複数
の関連サブオペレーションに、各々の浮動小数点オペレ
ーションを区分するための回路を含む。プロセッサは、
ディスパッチされたサブオペレーションを含む制御信号
を受取るためにデコーダに結合される浮動小数点機能ユ
ニットをさらに含む。機能ユニットは、サブオペランド
データを再び組合せてその組合されたデータを用いて1
つのオペレーションで駆動少数点サブオペレーションを
実行するための回路と、その実行結果を複数のサブ結果
に区分するための回路とを含む。
【0018】同じ参照番号は同じ要素を示す添付の図面
に関連させて以下の説明を参照することにより、この発
明はよりよく理解され、その利点、目的および特徴はよ
り明らかにされるであろう。
【0019】
【好ましい実施例の詳細な説明】整数および浮動少数点
オペレーションを実行するための命令セットを有するス
ーパースカラプロセッサ10のアーキテクチャおよび機
能図が図1に示される。64ビットの内部アドレスおよ
びデータバス11は、プロセッサ10のさまざまな機能
ブロックと外部メモリ14との間で、アドレス、デー
タ、および制御転送を通信する。命令キャッシュ16は
CISC命令をパージングしプリデコードする。バイト
待ち行列35はプリデコードされた命令を命令デコーダ
18に転送し、命令デコーダ18はCISC命令をRI
SC的オペレーション(「ROP」)のための命令のそ
れぞれのシーケンスにマッピングする。命令デコーダ1
8は、バイト待ち行列35にあるプリデコードされたC
ISC命令に基づいて、すべてのROPのための型、オ
ペコード、およびポインタ値を発生する。例示の実施例
は記憶された複合命令を受取ってその複合(CISC)
命令を実行のためにRISC型ROPに変換するための
プロセッサ10を示すが、専らCISC命令でまたはR
ISC型オペレーションのいずれかのみで動作するプロ
セッサ、およびデコード時に命令の形式を変更するプロ
セッサも想定されていることは当然である。
【0020】好適な命令キャッシュ16は、1993年
10月29日出願の米国特許出願連続番号08/14
5,905(デイビッド・ビー・ウィット(David B.Wi
tt)およびマイケル・ディー・ゴッダード(Michael D.
Goddard )、「可変バイト長命令に特に好適な、プリデ
コード命令キャッシュおよびそのための方法(Pre-Deco
de Instruction Cache and Method Therefor Particula
rly Suitable for Variable Byte-Length Instruction
s)」)にさらに詳細に記載される。好適なバイト待ち
行列35は、1993年10月29日出願の米国特許出
願連続番号08/145,902(デイビッド・ビー・
ウィット「可変バイト長命令に特に好適な、予測命令待
ち行列およびそのための方法(Speculative Instructio
n Queue andMethod Therefor Particularly Suitable f
or Variable Byte-Length Instructions )」)にさら
に詳細に記載される。好適な命令デコーダ18は、19
93年10月29日出願の米国特許出願連続番号08/
146,383(デイビッド・ビー・ウィットおよびマ
イケル・ディー・ゴッダード「スーパースカラ命令デコ
ーダ(Superscalar Instruction Decoder )」)にさら
に詳細に記載される。これらの特許出願の各々の全体を
ここに引用により援用する。
【0021】命令デコーダ18は、さまざまなバスを介
してプロセッサ10内の機能ブロックにROPオペレー
ションをディスパッチする。プロセッサ10は、4つの
ROP発行と、5つのROP結果と、16までの予測し
て実行されるROPの結果とをサポートする。Aソース
オペランドおよびBソースオペランドならびに宛先レジ
スタへのポインタの4つまでの組は、レジスタファイル
24とリオーダバッファ26とに、命令デコーダ18に
よって、それぞれのAオペランドポインタ36とBオペ
ランドポインタ37と宛先レジスタポインタ43とを介
して与えられる。レジスタファイル24およびリオーダ
バッファ26は次いで、さまざまな機能ユニットへ、4
1ビットのAオペランドバス30および41ビットのB
オペランドバス31の4つの対上で、RISCオペラン
ドAおよびBの適当な「予想されて実行される」バージ
ョンを与える。AおよびBオペランドバス30および3
1に関連するのは、Aオペランドタグバス48およびB
オペランドタグバス49の4つの対を含むオペランドタ
グバスである。結果がオペランドバス上に置かれるため
に利用可能になると、結果が利用可能になったときにそ
れを受取るためのリオーダバッファ26におけるエント
リを識別するタグが、対応するオペランドタグバス上に
ロードされる。オペランドバスおよびオペランドタグバ
スの4つの対は4つのROPディスパッチ位置に対応す
る。命令デコーダ18は、リオーダバッファ26と協働
して、ROPの実行後に機能ユニットから結果を受取る
リオーダバッファ26におけるエントリを識別するため
の4つの宛先タグバス40を特定する。機能ユニット
は、ROPを実行し、宛先タグを5つの結果タグバス3
9のうちの1つにコピーし、結果が利用可能になるとそ
れを5つの結果バス32のうちの対応する1つに置く。
結果タグバス39上に対応するタグが、結果を待つRO
Pのオペランドタグと一致すると、機能ユニットは結果
バス32上の結果に直接アクセスする。
【0022】命令デコーダ18は、4つのオペコード/
型バス50を介して、オペコードおよびオペコードの型
を含む、AおよびBソースオペランド情報に伴うオペコ
ード情報をディスパッチする。
【0023】プロセッサ10は、分岐ユニット20、整
数機能ユニット21、浮動小数点機能ユニット22、お
よびロード/ストア機能ユニット80のような、いくつ
かの機能ユニットを含む。整数機能ユニット21は、一
般的なものとして示されたものであり、算術論理ユニッ
ト、シフトユニット、および特別なレジスタユニットの
ような、さまざまなタイプのユニットを表わす。分岐ユ
ニット20は、分岐があるときに適当な命令フェッチ速
度を可能にし、複数の命令発行を伴う動作を達成するの
に必要な技術である、分岐予測オペレーションの妥当性
を検査する。分岐ユニット20および命令デコーダ18
を含む好適な分岐予測システムは、米国特許第5,13
6,697号(ウィリアム・エム・ジョンソン(Willia
m M.Johnson )「キャッシュに命令の各ブロックととも
に記憶されるフェッチ情報を用いて正しく予測される分
岐命令後の実行のための遅延を低減するためのシステム
(System for Reducing Delay for Execution Subseque
nt to Correctly Predicted Branch Instruction Using
Fetch Information Stored with each Block of Instr
uctions in Cache)」)にさらに詳細に記載され、その
全体をここに引用により援用する。
【0024】プロセッサ10は過度の複雑さを避けるた
めに、機能ユニットの単純な組を有して示される。機能
ユニットの数および型は、単一の浮動小数点機能ユニッ
ト22と、一般的には整数データでオペレーションを行
なう複数の機能ユニット20と21と80とを有する、
特定の態様でここに示されるが、整数および浮動少数線
ユニットの他の組合せが所望されるように実現されても
よいことが理解される。各機能ユニット20、21、2
2および80は、オペランドバス30および31ならび
にオペコード/型バス50に入力が接続される、それぞ
れのリザベーションステーション(図示せず)を有す
る。リザベーションステーションは機能ユニットへの予
測ROPのディスパッチを可能にする。
【0025】レジスタファイル24は、整数および浮動
小数点命令のためのマッピングされたCISCのレジス
タを含む物理的な記憶メモリである。それは、中間の計
算を保持するための一次的整数および浮動小数点レジス
タをさらに含む。レジスタファイル24は浮動小数点デ
ータおよび整数データの両方を処理する。整数はレジス
タファイル24の下位32ビット〈31:0〉に位置さ
れる。上位ビット〈40:32〉はレジスタファイル2
4の整数レジスタにおいては実現されない。レジスタフ
ァイル24は整数データまたは浮動小数点データに対し
て同様に機能する。レジスタファイル24は、結果回収
(リタイア)として公知のプロセスで、リオーダバッフ
ァ26から4つのライトバックバス34を介して、実行
された、予測によらないオペレーションの結果を受取
る。
【0026】リオーダバッファ26は予測実行されたR
OPの相対的な順序を把握するための循環FIFOであ
る。リオーダバッファ記憶位置は、レジスタファイル2
4へ回収中の結果を送るために、および機能ユニットか
ら結果を受取るために、動的に割り当てられる。命令が
デコードされると、その結果値にリオーダバッファ26
にある位置すなわち宛先が割り当てられ、その宛先レジ
スタ番号はこの位置に関連付けされる。次のオペレーシ
ョンが依存性を全く有さない場合には、その関連するA
およびBオペランドバス30および31はレジスタファ
イル24から駆動される。しかしながら、次のオペレー
ションが依存性を有し、そのリネーミングされた宛先レ
ジスタに記憶されると考えられる値を得るためにそれを
参照する場合には、リオーダバッファ内でエントリがア
クセスされる。結果がそこで利用可能である場合には、
それはオペランドバス上に置かれる。結果が利用可能で
ない場合には、このリオーダバッファエントリを識別す
るタグが、AおよびBオペランドタグバス48および4
9のうちの1つのオペランドタグバス上に与えられる。
この結果またはタグは、機能ユニットに、オペランドバ
ス30、31またはオペランドタグバス48、49を介
してそれぞれ与えられる。機能ユニット20、21、2
2および80における実行の完了から結果が得られる
と、その結果およびそれらのそれぞれの結果タグは、リ
オーダバッファ26および機能ユニットのリザベーショ
ンステーションに、5バス幅の結果バス32および結果
タグバス39を介して与えられる。
【0027】機能ユニットによって発生された結果は、
5つの41ビットの結果バス32と5つの関連する結果
タグおよび状態バス39とを用いてリオーダバッファ2
6に通信される。5つの結果バスおよび結果タグバスな
らびに状態バスのうち、4つはリオーダバッファに整数
および浮動小数点結果を転送するための汎用バスであ
る。付加的な第5の結果バスおよび結果タグバスならび
に状態バスは、機能ユニットのいくつかからリオーダバ
ッファへ、転送される結果ではない情報を転送するのに
用いられる。たとえば、ロード/ストア機能ユニット8
0による記憶オペレーションからまたは分岐ユニット2
0による分岐オペレーションから生ずる状態情報はこの
付加的なバス上に置かれる。この付加的なバスは、4つ
の汎用結果バスのバンド幅を保存するために設けられ
る。
【0028】命令デコーダ18は機能ユニットにROP
を「正順序で」ディスパッチする。順序はリオーダバッ
ファ26内のエントリの順序で維持される。待ち行列に
合った前のROPがすべて実行を完了し、すべてのソー
スオペランドがオペランドバスまたは結果バスのいずれ
かを介して利用可能となり、結果バスが結果を受取るの
に利用可能となると、機能ユニットはROPを発行のた
めに待ち行列に入れる。したがって、機能ユニットは、
ROPを「順序外」で完了する。この態様で、オペレー
ションのディスパッチは、オペレーションの完了に依存
しないので、リザベーションステーションの待ち行列が
利用できないことまたはリオーダバッファのエントリが
割り当てられないことによってプロセッサがストーリン
グされない限り、命令デコーダ18は命令が即座に完了
され得るか否かにかかわらず命令をデコードし続ける。
【0029】RISCコアのための好適なユニットは、
1993年10月29日出願の米国特許出願連続番号0
8/146,382(デイビッド・ビー・ウィットおよ
びウィリアム・エム・ジョンソン、「高性能スーパース
カラマイクロプロセッサ(High Performance Superscal
ar Microprocessor )」)に開示され、その全体を引用
によりここに援用する。命令デコーダ18は、1つのA
オペランドと1つのBオペランドと1つの宛先レジスタ
とを特定する1つのディスパッチ位置を用いて、整数R
OPをディスパッチする。例示の命令デコーダ18は、
2つの関連するAオペランドおよび2つの関連するBオ
ペランドが「半オペランド」または「サブオペランド」
として割り当てられるよう、浮動小数点ROPを2つの
関連する「半ROP」またはより一般的には「サブRO
P」としてディスパッチする。浮動小数点の半オペラン
ドは図2によって模式的に示される。図2に示される完
全浮動小数点レジスタ250は、第1および第2の浮動
小数点半オペランド256および258によって示され
る2つのオペランドの形式で割り当てられる。Aオペラ
ンドの場合、半オペランドの対のうちの1つ(たとえば
256)は、第1の関連する浮動小数点オペコードに対
応するAオペランド位置に置かれる。半オペランドの対
のうちの第2の半オペランド(たとえば258)は、第
2の関連する浮動小数点オペコードに対応するAオペラ
ンド位置に置かれる。同様に、B半オペランドの対は、
オペコードの対に対応するBオペランド位置に置かれ
る。命令デコーダ18は、レジスタファイル24および
リオーダバッファ26へのポインタ36および37を介
して、AおよびBオペランドへのアクセスを開始する。
命令デコーダ18は、4つのオペコード/型バス50の
うちの2つで「半オペコード」を通信することによっ
て、浮動小数点機能ユニット22に半ROPをディスパ
ッチする。浮動小数点命令の場合、デコーダ18は、4
つのディスパッチ位置のうちのそれぞれ2つからのAお
よびB半オペランドの2つの組を有する2つのROP
を、1つのディスパッチウィンドウ内で同時並列でディ
スパッチする。
【0030】例示の実施例において、2つの浮動小数点
半ROPのためのオペコードは「ダミー」オペコードお
よび関連する「本当の」オペコードとして指定される。
たとえば、ダミーの浮動小数点オペコード(たとえばF
PFILL)は、ディスパッチウィンドウの1つのディ
スパッチ位置に、完全な82ビットの浮動小数点Aおよ
びBオペランドビットのビット〈40:0〉に各々が関
連するAおよびB半オペランドを割り当てられる。ウィ
ンドウのディスパッチ位置の直後に、本当の浮動小数点
オペコードが、完全な浮動小数点AおよびBオペランド
のビット〈81:41〉と各々が関連するAおよびB半
オペランドを割り当てられる。浮動小数点機能ユニット
22はROPを実行すると、それは半オペコードを併せ
て1つのROPを実行する。たとえば、浮動小数点加算
命令FADDは次の態様でディスパッチされてもよい。
【0031】
【表1】
【0032】他のROPはウィンドウ位置3および4で
ディスパッチされてもよい。半ROPの対は1つのウィ
ンドウでディスパッチされる。
【0033】他の実施例では、プロセッサ10はオペラ
ンドを2つより多いサブオペランドに分けてもよい。た
とえば、2つの半オペランドにオペランドフィールドを
区分するのではなく、3つまたはそれより多いサブRO
Pのディスパッチを介して動作される同じ数のサブオペ
ランドにオペランドを分けてもよい。
【0034】リオーダバッファ26と、レジスタファイ
ル24と、非浮動小数点機能ユニットと、オペランドバ
スとタグバスと結果バスとライトバックバスとを含むさ
まざまなバスとは、浮動小数点半ROPを2つの独立し
た無関係のROPとして処理する。しかしながら、半R
OPを区分する命令デコーダ18と、半ROPを実行前
に再び組合せる浮動小数点機能ユニット22とは、半R
OPを関連するエンティティとして扱う。この態様で、
浮動小数点オペランドは浮動小数点ユニットおよび他の
機能ブロックの間を整数データ経路上で通信される。
【0035】レジスタファイル24の詳細な例は図3に
示される。レジスタファイル24は、読出デコーダ6
0、レジスタファイルアレイ62、書込デコーダ64、
レジスタファイル制御66、およびレジスタファイルオ
ペランドバスドライバ68を含む。レジスタファイルア
レイ62は、プロセッサの機能ユニットで動作されかつ
それにより発生される結果を記憶するための複数のアド
レス指定可能な記憶レジスタを含む。図4は、この実施
例では一次整数レジスタETMP0からETMP15と
同じ物理上のレジスタ位置にマッピングされる、8つの
32ビットの整数レジスタ(EAX、EPX、ECX、
EDX、ESP、EBP、ESIおよびEDI)と8つ
の82ビットの浮動少数点レジスタFP0からFP7と
16の41ビットの一次整数レジスタETMP0からE
TMP15と8つの82ビットの一次浮動小数点レジス
タFTMP0からFTMP7とを含む、40のレジスタ
を有する例示のレジスタファイルアレイ62を示す。
【0036】図5を参照すると、リオーダバッファ26
は、リオーダバッファ(ROB)制御および状態ブロッ
ク70とリオーダバッファ(ROB)アレイ74とリオ
ーダバッファ(ROB)オペランドバスドライバ76と
を含む。ROB制御および状態ブロック70は、ROP
のためのソースおよび宛先オペランドを識別する入力を
受取るために、AおよびBオペランドポインタ36およ
び37ならびに宛先ポインタ(DEST REG)バス
43に結合される。ROBアレイ74は機能ユニットか
らの結果を受取るために結果バス32に結合される。ヘ
ッド信号とテール信号とAオペランド選択信号とBオペ
ランド選択信号と結果選択信号とを含む制御信号は、R
OB制御および状態70からROBアレイ74に伝えら
れる。これらの制御信号は結果バス32データでもって
書込まれ、ライトバックバス34と書込ポインタ33と
AおよびBオペランドバス31および32とAおよびB
オペランドタグバス48および49とに出力される、R
OBアレイ要素を選択する。Aオペランド選択信号およ
びBオペランド選択信号は、オペランドデータがオペラ
ンドバス30および31上に置かれるよう指定するべ
く、リオーダバッファアレイ74に与えられる。データ
がレジスタファイル24またはリオーダバッファ26の
いずれにおいても利用可能でない場合には、Aオペラン
ド選択信号およびBオペランド選択信号は、AおよびB
オペランドタグバス48および49を駆動するよう、リ
オーダバッファオペランドバスドライバ76に直接さら
に与えられる。1つが各リオーダバッファアレイ要素の
ためのものである16の宛先ポインタは、依存性チェッ
クを実現するために、ROBアレイ74からROB制御
および状態70へ伝えられる。
【0037】ROBアレイ74はROB制御および状態
ブロック70の制御下にあるメモリアレイである。命令
デコーダ18はROPをディスパッチすると、それは4
つの宛先ポインタ(DEST REG)バス43上にポ
インタを置く。ROB制御状態70は次いでROBアレ
イ74のエントリを割り当てて、割り当てられたエント
リのDEST PTRフィールドに宛先ポインタを書込
む。
【0038】オペレーションが実行されて結果が結果バ
ス32上に機能ユニットによって置かれると、ROB制
御および状態70は、結果バス32からデータを受取る
ように対応するROBアレイエントリを指定する、結果
タグバス39からのポインタにアクセスする。ROB制
御70は、4つの結果選択ポインタを用いて、結果バス
32からROBアレイ74への書込みを命ずる。
【0039】図6は、結果フィールドと宛先ポインタフ
ィールドと制御情報を記憶する他のフィールドとを各々
が含む16のエントリを含むリオーダバッファアレイ7
4の例を示す。41ビットの結果フィールドは機能ユニ
ットから受取られた結果を記憶するために与えられる。
2つのリオーダバッファエントリは浮動小数点結果を記
憶するために用いられる。整数結果は41ビットのうち
の32ビットで記憶され、残りの9ビットは状態フラグ
を保持するために用いられる。
【0040】各ROBアレイ74エントリの宛先ポイン
タフィールド(DEST_PTR〈8:0〉)は、レジ
スタファイル24にある宛先レジスタを指定する。結果
フィールドからのデータは、ROBアレイ70のエント
リからレジスタファイル24へライトバックバス34の
1つを介して通信され、ライトバック中に、書込ポイン
タ33の1つに宛先ポインタフィールドを置くことによ
って、指定される宛先レジスタに駆動される。ROB制
御および状態70は命令デコーダ18からオペランドポ
インタおよび宛先ポインタを、それぞれAおよびBオペ
ランドポインタ36および37ならびに宛先レジスタ
(DEST REG)バス43を介して受取り、ROB
アレイ74の宛先ポインタ(DEST PTR〈8:
0〉)フィールドに宛先ポインタを書込む。ROPがデ
ィスパッチされると、リオーダバッファ26は、リオー
ダバッファアレイ74の16の要素すべての宛先ポイン
タ(DEST PTR〈8:0〉)フィールドをAおよ
びBオペランドポインタ36および37に対して同時に
テストして、データ依存性を識別する一致が宛先ポイン
タとAまたはBオペランドポインタとの間に存在するか
どうかを判断することによって、依存性チェックを達成
する。
【0041】ROB制御および状態70はディスパッチ
でデータ依存性を検知すると、レジスタファイルオペラ
ンドバスドライバ68に与えられる、Aオペランド無効
化バス57およびBオペランド無効化バス58のビット
をセットすることによって、レジスタファイルアレイ6
2にある任意の依存オペランドの読出しに無効化する。
無効化バス57および58は各オペランドバスのための
無効化信号を含む。ソースオペランドがレジスタファイ
ル24またはリオーダバッファ26のいずれもでも利用
可能であることを、ROB制御および状態70が判断し
た場合には、ソースオペランドは、機能ユニットによる
アクセスのために、オペランドバス30または31のう
ちの1つのバスの上に置かれる。
【0042】ライトバックバス34のうちの1つの上に
ROBアレイ74要素の結果フィールドを置き、ライト
バックバスに対応する書込ポインタ33を宛先ポインタ
で駆動することによって、ROB制御および状態70は
ROPを回収する。回収された結果を受取るよう、書込
ポインタ33はレジスタファイル24内のレジスタアド
レスを指定する。整数データのライトバックでは、結果
の下位32ビット〈31:0〉は整数データを保持し、
上位ビット〈37:32〉は状態フラグ25を更新する
のに用いられるエラーフラグEFLGS71である。浮
動小数点データでは、別々の状態バス38がリオーダバ
ッファ26にフラグを通信し、そこで、フラグは、浮動
小数点ROPが回収されるときに浮動小数点状態レジス
タ(図示せず)に伝えられるまで記憶される。
【0043】図7(a)に示される、各リオーダバッフ
ァアレイ74の要素220は、41ビットの結果フィー
ルド101と、9ビットの宛先ポインタフィールド10
2と、4ビットのデルタPCフィールド103と、11
ビットの浮動小数点オペコードフィールド104と、1
1ビットの浮動小数点フラグレジスタフィールド105
と、24ビットの状態/制御フィールド106とを含
む。浮動小数点オペランドでは、図7(b)に示される
結果フィールド222は浮動小数点オペレーションの4
1ビットの「半分の結果」を保持する。整数オペレーシ
ョンでは、41ビットの結果フィールドのビット〈4
0:32〉は、図7(c)、図7(d)、および図7
(e)の結果フィールド224、226および228に
それぞれ示されるように、整数フラグレジスタを保持す
る。8または16ビットの幅を有する結果をもたらす整
数オペレーションでは、図7(d)および図7(e)の
結果フィールド228および226にそれぞれ示される
形式で結果を生ずる機能ユニットによって、付加的なビ
ットはクリアされる。
【0044】分岐オペレーションでは、図7(f)に示
される結果フィールド230が、分岐ユニット20によ
る分岐ROPの実行によって判断されるように、プログ
ラムカウンタの論理アドレスを保持する。
【0045】図7(a)を参照すると、宛先ポインタフ
ィールド102はレジスタファイル24の宛先レジスタ
を特定する。浮動小数点オペコードフィールド104
は、リオーダバッファエントリに割り当てられる浮動小
数点オペコードのビットのサブセットにセットされる。
浮動小数点フラグレジスタフィールド105は、浮動小
数点オペレーションから生ずる浮動小数点フラグの状態
を保持する。浮動小数点フラグは、浮動小数点機能ユニ
ット22によって検知される、精度、アンダーフロー、
オーバーフロー、ゼロ除算、非正規化オペランド、およ
び無効オペランドエラーに関する情報を保持する。整数
オペランドでは、整数オペレーションから生ずるフラグ
は41ビットの結果フィールド101のビット〈40:
32〉に保持されるため、対応するフラグフィールドは
不要である。状態/制御フィールド106は、たとえ
ば、ROBエントリは割り当てられているか、分岐が間
違って予測されているか、またはオペレーションの実行
が例外またはエラー条件を引起こしたか、といったオペ
ランドの状態を示す。
【0046】図8は、レジスタファイル24とリオーダ
バッファ26と浮動小数点機能ユニット22とを通る4
1ビットのデータ経路を有する、混合された浮動小数点
/整数コアの概略的なレイアウト図を示す。このデータ
経路は、AおよびBオペランドバス30および31と、
結果バス32と、ライトバックバス34とを含む。Aお
よびBオペランドバス30および31のビット〈31:
0〉のみが、ユニット21のような整数機能ユニットと
相互接続される。データ経路が、他の機能ブロックのバ
スおよびメモリのデータラインのための、ビットごとの
対応を有することを示すために、バスのラインはレジス
タファイル24とリオーダバッファ26と整数ユニット
110との上に重ねられるようにして図示される。バス
のビット構造は浮動小数点リザベーションステーション
および結果ドライバにのみ延びることを示すために、バ
スのラインは浮動小数点機能ユニット22に部分的にの
み延びるように図示される。浮動小数点機能ユニット2
2の動作内部では、41ビットのオペランドの対は、処
理のための82ビットの拡張形式に組合せられる。
【0047】41ビットのAおよびBオペランドバス3
0および31の4つのそれぞれの対は、機能ユニットと
リオーダバッファ26とレジスタファイル24との間を
相互接続し、浮動小数点機能ユニット22のリザベーシ
ョンステーションから整数ユニットとリオーダバッファ
26とを通り実質的にレジスタファイル24を通って延
びる。整数ユニットを含みかつオペランドバスのビット
〈31:0〉の下部にあるコア領域は、オペランドデー
タを保持するためのリザベーションステーションレジス
タを含む。AおよびBオペランドバス30および31の
ビット〈41:32〉は整数ユニットと相互接続するこ
となくそのユニットを通過する。
【0048】5つの41ビットの結果バス32は、機能
ユニットとリオーダバッファ26との間を相互接続し、
かつ浮動小数点機能ユニット22の結果バスドライバか
ら整数ユニットを通り実質的にリオーダバッファ26を
通って延びる。結果バス32の41ビットの実質的にす
べてが整数ユニットと相互接続するので、結果データは
ビット〈31:0〉で通信され、整数状態フラグはビッ
ト〈41:32〉で通信される。マイクロプロセッサの
この例示的な実施例においては、定義される状態ビット
の数は結果バス32のビット〈37:32〉のみを利用
する。
【0049】4つの41ビットのライトバックバス34
は、リオーダバッファ26からレジスタファイル24へ
結果データを通信し、実質的にリオーダバッファ26の
一方の側から実質的にレジスタファイル24の反対側へ
と延びる。
【0050】わずかな例外はあるが(たとえばオペラン
ドビット〈41:32〉および結果バスビット〈41:
38〉)、データ経路の各バスの各ビットが、相互接続
する機能ブロックのみを通過するということは有利なこ
とである。
【0051】このレイアウトは、データ経路のすべての
バスが整数および浮動小数点機能ユニットの全体を通し
て実質的に一定である、混合された浮動小数点および整
数コアを表わす。
【0052】図8に示されるレイアウトの実施例は、高
密度のコアをもたらすため有利である。浮動小数点機能
ユニット22とレジスタファイル24とは好ましくはコ
アの端部に位置される。浮動小数点機能ユニット22は
それ自体の内部バス構造を有するため、Aオペランドバ
ス30とBオペランドバス31と結果バス32とはそれ
を通過する必要はない。さらに、浮動小数点機能ユニッ
ト22は大きく、コアの約20%を占める。したがっ
て、Aオペランドバス30とBオペランドバス31と結
果バス32とが浮動小数点機能ユニット22を通過して
経路付けられるような、浮動小数点機能ユニット22の
位置決めは、ダイスペースを不必要に占めてしまうであ
ろう。同様に、レジスタファイル24は結果バス32を
使用しないため、結果バス24はそれを通過する必要は
ない。さらに、レジスタファイル24は大きく、コアの
約30%を占める。したがって、結果バス32がレジス
タファイル24を通って経路付けられるような、レジス
タファイル24の位置決めは、ダイスペースを不必要に
占有するであろう。コアの約25%を占めるロード/ス
トア機能ユニット80は、AおよびBオペランドバス3
0および31と結果バス32とによって通過されるた
め、浮動小数点機能ユニット22とリオーダバッファ2
6との間に位置される。分岐ユニット20を含む整数ユ
ニット110は、結果バス32と、AおよびBオペラン
ドバス30および31のビット〈31:0〉とによって
通過されるため、浮動小数点機能ユニット22とリオー
ダバッファ26との間に位置される。オペランドバス3
0および31のビット〈40:32〉は整数ユニット1
10をバイパスするが、整数ユニット110は比較的小
さく、コアの約10%しか占有しないため、コア密度へ
の悪影響は小さい。
【0053】図8は、整数ユニット110をバイパスし
てリオーダバッファ26に到達する浮動小数点フラグバ
ス38をさらに示す。バス38は11ビットの1つのバ
スにすぎないため、コア密度におけるバス38の悪影響
はわずかなものである。整数フラグは浮動小数点データ
転送のためにも用いられるさまざまな41ビットのバス
上で通信されるため、このようにしない場合であれば8
つのオペランドバス30および31ならびに5つの結果
バスと関連するであろう13の別個の6ビットの整数フ
ラグバスを設けることを回避できる効果があることに注
目されたい。
【0054】図8は、一定の41ビット幅のデータ経路
が浮動小数点機能ユニット22と整数ユニット110と
ロード/ストア機能ユニット80とリオーダバッファ2
6とレジスタファイル24とを通過するコアを示すが、
他のコアのレイアウトは全体にわたって一定のデータ経
路幅を有さず、それでいて、浮動小数点データと整数デ
ータおよび整数フラグの組合せとの両方に対処するのに
十分な幅のバス構造を有することにより利益を得てもよ
い。たとえば、整数ユニットがレジスタファイルよりも
大きい代替実施例(図示せず)においては、レジスタフ
ァイルはコア内に位置され、整数ユニットはコアの一方
の端部に位置されるかもしれない。この場合、結果バス
32の41ビットのピッチは拡張されるであろうが、A
およびBオペランドバスのビット〈31:0〉のみが拡
張される必要があるだけである。この代替レイアウトに
おいては、AおよびBオペランドバス30および31な
らびに結果バス32はレジスタファイルを通過するかま
たはバイパスする必要があるだろう。しかしながら、再
配置された整数ユニットへの、結果バス32のビット
〈40:0〉の拡張が、浮動小数点データと整数データ
および整数フラグの組合せとの両方に有利に対処するで
あろう。
【0055】図9は、データ経路幅が浮動小数点機能ユ
ニット22の内部データ経路幅よりも小さい、プロセッ
サ実施例の浮動小数点接続を示すブロック図である。好
ましくは、浮動小数点機能ユニット22の内部データ経
路幅はデータバス幅の整数倍である。
【0056】例示のアーキテクチャでは、オペランドバ
ス30および31、結果バス32、ならびにライトバッ
クバス34は、82ビットの拡張された精度の浮動小数
点変数の半分に対処するために、32ビットデータ経路
から41ビットデータ経路に拡張される。データ経路が
拡張されると、整数ROPは、同じ態様で、純粋に整数
用の方式としてディスパッチされる。しかしながら、R
OPに関連するオペランドは、AおよびBオペランドバ
ス30および31の4つの対のビット〈31:0〉に割
り当てられる。整数オペランドがバス上にロードされる
と、上位9ビット〈40:32〉は整数データを通信す
るのには用いられず、下位32ビット〈31:0〉が整
数データをエンコードしてそれを整数機能ユニットに通
信する。浮動小数点ROPがディスパッチされると、4
1ビット全部が浮動小数点リザベーションステーション
44にデータを通信し、それは2つの半ROPを組合
せ、41ビットのオペランドを局所的に併せて、82ビ
ットのオペランドを形成する。82ビットのオペランド
は、内部で浮動小数点演算回路100へ2つの82ビッ
トの浮動小数点オペランドバス90および91を介して
送られ、演算回路100から浮動小数点結果ドライバ4
5へ82ビットの浮動小数点結果バス92上で通信され
る。標準的な拡張精度数は80ビット幅であるが、指数
部にある予備の2ビットを与えて内部浮動小数点数のよ
り大きなデータ範囲に対処してもよい。
【0057】浮動小数点フラグはFPフラグバス112
上で通信する。プロセッサ10内には浮動小数点機能ユ
ニット22は1つしかないので、1つのFPフラグバス
112で十分であり、浮動小数点機能ユニット22およ
び浮動小数点フラグバス112の経路付けおよび配置は
改善される。整数機能ユニット110もフラグをさらに
発生するが、他の場合には利用されないであろう結果バ
ス32のビット〈40:32〉が整数フラグを通信する
のに用いられるため、対応する整数フラグバスは不要で
ある。41ビットのバスを介して整数フラグを通信する
ことは、プロセッサのレイアウトを複雑にしかつダイス
ペースを使用する付加的な専用整数フラグバスを含むこ
とを回避するのに有利である。
【0058】ソースオペランドが利用可能になり、2つ
の結果バスが利用可能になると、リザベーションステー
ション44は、浮動小数点乗算、除算、またはROPで
特定される他のオペレーションのようなROPを発行
し、演算回路100は82ビットの結果を計算する。浮
動小数点結果ドライバ45は82ビットの結果を41ビ
ットのセグメントに分け、そのセグメントを4つの汎用
結果バス32のうちの2つに置き、状態バス38上にフ
ラグをセットする。浮動小数点機能ユニットは、浮動小
数点結果の上位ビット〈40:32〉を、上位のビット
位置に番号付けられてはいるが、浮動小数点数の最下位
の9ビットに対応するよう割り当てる。これが行なわれ
るのは、この態様でのデータフィールドのシフトによっ
て、浮動小数点データの上位41ビットの符号および指
数が32ビットの整数データアクセスにおいて読まれる
ことが可能になるからである。
【0059】整数ユニット110として組合せて示され
るさまざまな整数機能ユニットは32ビットのデータで
動作する。整数ユニット110は、結果バス32のビッ
ト〈31:0〉に結果を書込むことに加えて、結果バス
32のビット〈40:32〉に結果フラグを書込む。結
果バス32はリオーダバッファ26に接続され、それは
結果データを一時的に記憶する。リオーダバッファ26
は、データが浮動小数点であるかまたは整数であるかに
かかわらず、レジスタファイル24への41ビットの結
果を回収する。
【0060】図10は、標準的な82ビットの浮動小数
点数のビットフィールドを示す。最上位ビット〈81:
42〉は、符号ビット241と、19ビットの指数部2
42と62ビットの仮数部の上位21ビットとを表わ
す。浮動小数点数の仮数部は、指数部で指定される2の
べき乗によって乗算される整数を表わす。好ましい実施
例のプロセッサ10は、82ビットのフィールド250
が2つの41ビットのフィールドに分けられる図11に
示される態様で浮動小数点数を構成する。上位41ビッ
トフィールドでは、仮数ビット〈59:41〉のうちの
9つの最下位ビットは仮数部〈81:73〉254にシ
フトされる。符号部251および指数部252は、重み
において9ビット下位にシフトされる。浮動小数点ビッ
ト250の下位41ビットフィールドでは、仮数部
〈8:0〉は41ビットフィールドの上位ビット〈4
0:32〉にシフトされ、仮数部〈40:9〉は下位ビ
ット〈31:0〉にシフトされる。
【0061】82ビットの浮動小数点レジスタ250
は、第1の浮動小数点半オペランド256および第2の
浮動小数点半オペランド258に区分される。第2の浮
動小数点半オペランド258は右に9ビット分シフトさ
れ、仮数ビット〈49:41〉254は最上位ビット位
置に転送される。したがって、符号251および指数
〈16:0〉252は、32ビットの整数アクセスにお
いて読出および書込が可能となる。
【0062】ロード/ストア機能ユニット80は、整数
および浮動小数点ロードおよび記憶オペレーションを制
御する。ロード/ストアユニット80は、データキャッ
シュ86からのデータにアクセスしそのデータを結果バ
ス32へ転送するための、2つまでのロードオペレーシ
ョンを同時に実行することができる。図12を参照する
と、ロード/ストア機能ユニット80は、リザベーショ
ンステーション82と記憶バッファ84とロード/スト
ア制御87とを含む。ロード/ストアリザベーションス
テーション82はデュアルポートである。各ポートは、
記憶バッファ84およびデータキャッシュ86に、41
ビットのデータと好適な数のアドレスビットとを含むチ
ャネルによって接続される。ロード/ストアリザベーシ
ョンステーション82は、ロード/ストア要求を待ち行
列に入れるFIFOバッファである。それは、オペコー
ド/型バス50からオペレーションコードを受取り、ロ
ード/ストアリザベーションステーション82への入力
で多重化されるAおよびBオペランドバス30および3
1上の結果で動作する。
【0063】整数と浮動小数点との混合構造により、プ
ロセッサは、整数データおよび浮動小数点データの両方
のためのロードおよび記憶オペレーションを、同じロー
ド/ストア機能ユニット80を用いて行なうことが可能
となる。ロード/ストア機能ユニット内において、デー
タオペランドは41ビットであり、整数、1つの精度
数、倍精度数の一部、または拡張精度数の一部を表わ
す。整数データでは、最上位の8ビットは使用されな
い。ロード/ストア機能ユニット80は、整数オペラン
ドおよび浮動小数点オペランドの両方に対し同じ態様で
機能する。ゆえに、整数データ経路と浮動小数点データ
経路とを混合することによって、1つのロード/ストア
機能ユニット80のみを使用して、プロセッサ回路の量
および複雑性を低減する。好適なロード/ストアユニッ
トは1993年10月29日出願の米国特許出願連続番
号08/146,376(ウィリアム・エム・ジョンソ
ンら、「高性能ロード/ストア機能ユニットおよびデー
タキャッシュ(High PerformanceLoad/Store Functiona
l Unit and Data Cache)」)に開示され、その全体を
引用によりここに援用する。
【0064】この発明は特定の実施例を参照して記載さ
れてきたが、その実施例は例示的なものであって、発明
の範囲はそのように限定されるものではないと理解され
る。多くの変形、修正、追加および改良が、記載される
実施例に対して可能である。たとえば、オペランドフィ
ールドを2つの半オペランドに区分するのではなく、実
行前に1つのオペレーションに統合される、3つまたは
それより多いサブオペレーションのディスパッチを介し
て操作される同数のサブオペランドに、オペランドを分
割してもよい。さらに、さまざまな構造およびバスにお
けるビット数は例示的なものであり、変更されてもよ
い。レジスタファイルおよびリオーダバッファのサイ
ズ、オペランドバスおよびオペランドタグバスの数、結
果バスの数、ライトバックバスの数、ならびに浮動小数
点機能ユニットの数のような機能ユニットの型および数
は、例示的なものであり、変更されてもよい。これらの
および他の変形、修正、追加および改良は、前掲の特許
請求の範囲に定義されるようなこの発明の範囲内に入る
であろう。
【図面の簡単な説明】
【図1】混合された整数/浮動小数点コアを実現するた
めのプロセッサのアーキテクチャレベルのブロック図で
ある。
【図2】拡張精度数、および半オペランドに区分された
拡張精度数のフォーマットをそれぞれ示す模式図であ
る。
【図3】図1のプロセッサ内のレジスタファイルのアー
キテクチャレベルのブロック図である。
【図4】図3に示されるレジスタファイルにあるメモリ
フォーマットを示す模式図である。
【図5】図1のプロセッサ内にあるリオーダバッファの
アーキテクチャレベルのブロック図である。
【図6】図5のリオーダバッファ内にあるメモリフォー
マットを示す模式図である。
【図7】(a)は図5のリオーダバッファ内にある複数
のリオーダバッファアレイ要素の1つのリオーダバッフ
ァアレイ要素内の多重ビットフィールドを示す模式図で
ある。(b)、(c)、(d)、(e)、および(f)
は、半オペランドの拡張精度浮動小数点数、倍長語整
数、語整数、バイト整数、および分岐命令のためのアド
レスのためのフォーマットをそれぞれ含む、(a)のリ
オーダバッファアレイ要素の結果ビットフィールドのフ
ォーマットを示す模式図である。
【図8】混合された小数点/整数プロセッサコアのレイ
アウトの概略図である。
【図9】図1のプロセッサ内のデータ経路の、データの
流れおよび幅を示す、概略ブロック図である。
【図10】図1のプロセッサの機能ユニットによって動
作される、拡張精度数のフォーマットを示す模式図であ
る。
【図11】図1のプロセッサの機能ユニットによって動
作される、半オペランドに分解された、拡張精度数のフ
ォーマットと、下位の半オペランド内のビットフィール
ドとを示す模式図である。
【図12】図1のプロセッサのロード/ストア機能ユニ
ットのアーキテクチャレベルのブロック図である。
【符号の説明】
18 命令デコーダ 20 分岐ユニット 21 整数機能ユニット 22 浮動小数点機能ユニット 24 レジスタファイル 26 リオーダバッファ 30 オペランドバス 31 オペランドバス 32 結果バス 80 ロード/ストア機能ユニット
フロントページの続き (72)発明者 マイケル・ディー・ゴッダード アメリカ合衆国、78739 テキサス州、オ ースティン、オールド・ハーバー・レー ン、6434 (72)発明者 ウィリアム・エム・ジョンソン アメリカ合衆国、78746 テキサス州、オ ースティン、クリスティー・ドライブ、 102

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 複数の型のオペレーションを同時並列で
    実行するためのプロセッサコアであって、 第1のサイズのデータ経路を有する第1の機能ユニット
    と、 第1のサイズよりも大きい第2のサイズのデータ経路を
    有する第2の機能ユニットと、 第1の機能ユニットのデータ経路と第2の機能ユニット
    のデータ経路とに結合され、かつ第2のサイズと等しい
    かまたはそれより大きいサイズを有するバスとを備え
    る、複数の型のオペレーションを同時並列で実行するた
    めのプロセッサコア。
  2. 【請求項2】 バスは複数のオペランドバスを含み、 第2の機能ユニットは、第2のサイズの倍数である第3
    のサイズのデータで動作可能であり、 第3のサイズのデータは、第2の機能ユニットに、複数
    のオペランドバスの多重バス上で同時並列で与えられ
    る、請求項1に記載のプロセッサコア。
  3. 【請求項3】 バスは第1および第2の機能ユニットか
    ら結果情報を通信する結果バスを含み、 第1の機能ユニットは複数の状態フラグを発生し、 第1のサイズを超過する結果バスの容量は、状態フラグ
    を通信するのに用いられる、請求項1に記載のプロセッ
    サコア。
  4. 【請求項4】 第1の機能ユニットは整数機能ユニット
    であり、 第2の機能ユニットは、バスが浮動小数点データの半分
    のビットの容量を有するよう第2のサイズの2倍である
    第3のサイズの浮動小数点データで動作可能な浮動小数
    点機能ユニットである、請求項1に記載のプロセッサコ
    ア。
  5. 【請求項5】 第1の機能ユニットは、32ビットの第
    1のデータサイズの整数で動作可能な整数機能ユニット
    であり、 第2の機能ユニットは、第2のデータサイズの2倍であ
    る80またはそれより多いビットの浮動小数点データサ
    イズの浮動小数点数で動作可能な浮動小数点機能ユニッ
    トである、請求項1に記載のプロセッサコア。
  6. 【請求項6】 プロセッサにおいてオペレーションに用
    いられるオペランドデータを処理するための方法であっ
    て、 オペレーションを複数のサブオペレーションに区分する
    ステップを含み、各々はオペランドデータのサブセット
    に関連し、前記方法はさらに、 機能ユニットに複数のサブオペレーションおよび関連の
    オペランドデータのサブセットをディスパッチするステ
    ップを含み、オペランドデータのサブセットはそれを収
    容可能な第1のサイズのバス上で通信され、前記方法は
    さらに、 ディスパッチされたオペランドデータのサブセットを第
    2のサイズのデータに再び組合せるステップと、 再び組合されたオペランドデータのサブセットを用いて
    オペレーションを実行して結果を発生するステップとを
    含む、オペレーションに用いられるオペランドデータを
    処理するための方法。
  7. 【請求項7】 結果を複数の結果のサブセットに区分す
    るステップと、 結果のサブセットを第1のサイズのバス上でメモリへ通
    信するステップとをさらに含む、請求項6に記載の方
    法。
  8. 【請求項8】 プロセッサでオペレーションに用いられ
    るオペランドデータを通信するための方法であって、オ
    ペレーションは第1の型の機能ユニットにおいて第1の
    サイズのオペランドデータを用いて実行し、オペレーシ
    ョンは第2の型の機能ユニットにおいて第1のサイズよ
    りも大きい第2のサイズのオペランドデータを用いて実
    行し、前記方法はさらに、 第2の型の機能ユニット上で実行可能なオペレーション
    を複数のサブオペレーションに区分するステップを含
    み、各々はオペランドデータのサブセットと関連し、前
    記方法はさらに、 機能ユニットにオペレーションと関連のオペランドデー
    タとをディスパッチするステップを含み、 第2の型の機能ユニットにディスパッチされるオペレー
    ションは、複数のサブオペレーションおよび関連するオ
    ペランドデータのサブセットでディスパッチされ、 オペランドデータは、第1のサイズのオペランドデータ
    およびオペランドデータのサブセットのいずれも収容可
    能な第3のサイズのバス上で通信され、前記方法はさら
    に、 第2のタイプの機能ユニットにディスパッチされたオペ
    ランドデータのサブセットを再び組合せるステップと、 オペランドデータを用いてオペレーションを実行して結
    果を発生するステップとを含み、第2の型の機能ユニッ
    トは再び組合されたオペランドデータのサブセットを用
    いる、オペレーションに用いられるオペランドデータを
    通信するための方法。
  9. 【請求項9】 第2の型の機能ユニットによって発生さ
    れる結果を複数の結果のサブセットに区分するステップ
    と、 結果をメモリに、第1のサイズの結果および結果のサブ
    セットのいずれも収容可能な第4のバス上で通信するス
    テップとをさらに含む、請求項8に記載の方法。
  10. 【請求項10】 第1の型のオペレーションを実行する
    ステップは、第1のサイズの結果と複数の状態フラグと
    を発生し、 メモリに結果を通信するステップは、第1のサイズの結
    果および複数の状態フラグの両方を、第4のサイズのバ
    ス上でメモリに通信する、請求項9に記載の方法。
  11. 【請求項11】 第1の型の機能ユニットは整数機能ユ
    ニットであり、第1のサイズのオペランドデータは32
    ビットの整数データであり、 第2の型の機能ユニットは浮動小数点機能ユニットであ
    り、第2のサイズのオペランドデータは80またはそれ
    より多いビット数の浮動小数点データであり、 第3のサイズのバスおよび第4のサイズの結果バスは第
    2のサイズの半分の容量を有する、請求項8に記載の方
    法。
  12. 【請求項12】 オペランドデータを用いかつ整数およ
    び浮動小数点型であるオペレーションを実行するための
    プロセッサコアであって、 複数のn1 ビットのオペランドバスとn1 ビットの結果
    バスとを備え、n1 は正の整数であり、前記プロセッサ
    コアはさらに、 オペランドバスにそれぞれのn2 ビットの入力を介して
    結合されかつ結果バスにn2 ビットの出力を介して結合
    される整数機能ユニットを備え、n2 はn1 より小さい
    かまたは等しい正の整数であり、前記プロセッサコアは
    さらに、 n1 ビットオペランドバスにそれぞれのn1 ビット入力
    を介して結合されかつ結果バスにn1 ビットの出力を介
    して結合される浮動小数点機能ユニットを備え、浮動小
    数点機能ユニットは、 浮動小数点機能ユニットの入力からのn1 ビットのオペ
    ランドデータをn3 ビットのオペランドデータに組合せ
    るための手段と、 n3 ビットのオペランドデータを用いて浮動小数点オペ
    レーションを実行するための手段と、 n3 ビットの結果を発生するための手段と、 n3 ビットの結果を複数のn1 ビットの部分的結果に区
    分するための手段と、 部分的結果を浮動小数点機能ユニットの出力に送るため
    の手段とを含み、ビットn3 の数はビットn1 の数より
    も大きい、オペランドデータを用いかつ整数および浮動
    小数点型であるオペレーションを実行するためのプロセ
    ッサコア。
  13. 【請求項13】 出力がn1 ビットのオペランドバスに
    結合されかつ入力が結果バスに結合されるメモリをさら
    に含む、請求項12に記載のプロセッサコア。
  14. 【請求項14】 n1 ビットのライトバックバスと、 出力がn1 ビットのオペランドバスとn1 ビットのライ
    トバックバスとに結合され、かつ入力が結果バスに結合
    される、リオーダバッファと、 出力がn1 ビットのオペランドバスに結合されかつ入力
    がn1 ビットのライトバックバスに結合されるレジスタ
    ファイルとをさらに含む、請求項12に記載のプロセッ
    サコア。
  15. 【請求項15】 プロセッサコアは実質的に長方形のセ
    グメントの概して平面的な配列で配置され、各セグメン
    トは第1の次元内に延びており、セグメントは第2の次
    元内に実質的に積み重ねられ、オペランドバスと結果バ
    スとライトバックバスとは複数のセグメントにわたって
    第2の次元内に延び、 レジスタファイルは第1のセグメントにおいて平面配列
    の一方の端部に順序付けられ、 リオーダバッファは第1のセグメントに隣接した第2の
    セグメントに順序付けられ、 複数の整数機能ユニットは第2のセグメントに隣接した
    第3のセグメントに順序付けられ、 浮動小数点機能ユニットは第3のセグメントに隣接した
    第4のセグメントに順序付けられる、請求項14に記載
    のプロセッサコア。
  16. 【請求項16】 オペランドバスは第2の次元内で、レ
    ジスタファイルを実質的に通過し、かつリオーダバッフ
    ァと整数機能ユニットとを完全に通過し、かつ浮動小数
    点機能ユニットを部分的に通過して延び、 結果バスは第2の次元内で、リオーダバッファを実質的
    に通過し、かつ整数機能ユニットを完全に通過し、かつ
    浮動小数点機能ユニットを部分的に通過して延び、 ライトバックバスは第2の次元内で、リオーダバッファ
    を実質的に通過し、かつレジスタファイルを実質的に通
    過して延びる、請求項15に記載のプロセッサコア。
  17. 【請求項17】 整数ビットn2 の数は32であり、浮
    動小数点ビットn3の数は80またはそれより大きく、
    バスのビットn1 の数は40またはそれより大きい、請
    求項12に記載のプロセッサコア。
  18. 【請求項18】 複数のオペレーションを並行して実行
    するためのプロセッサであって、 関連する浮動小数点サブオペランドを各々が有する複数
    の関連サブオペレーションに各々の浮動小数点オペレー
    ションを区分するための手段と、サブオペレーションを
    ディスパッチするための手段とを含むデコーダと、 デコーダに結合される浮動小数点機能ユニットとを備
    え、浮動小数点機能ユニットは、 サブオペランドデータを再び組合せるための手段と、 再び組合せられたデータを用いて浮動小数点サブオペレ
    ーションを1つのオペレーションで実行するための手段
    と、 実行結果を多重サブ結果に区分するための手段とを含
    む、複数のオペレーションを並行して実行するためのプ
    ロセッサ。
  19. 【請求項19】 デコーダは、整数オペレーションおよ
    び関連する整数オペランドをディスパッチするための手
    段をさらに含み、前記プロセッサはさらに、 デコーダに結合され、オペランドを用いて整数オペレー
    ションを実行して整数結果を発生するための手段を含む
    整数機能ユニットをさらに含む、請求項18に記載のプ
    ロセッサ。
  20. 【請求項20】 浮動小数点機能ユニットと整数機能ユ
    ニットとはデコーダに複数のオペランドバスによって結
    合され、オペランドバスはn1 ビットの幅を有し、整数
    オペランドデータはn2 ビットの幅を有し、浮動小数点
    オペランドデータはn3 ビットの幅を有し、n2 はn1
    よりも小さいかまたは等しくかつn3はn1 よりも大き
    い、請求項19に記載のプロセッサ。
  21. 【請求項21】 整数機能ユニットと浮動小数点機能ユ
    ニットとに結合されるn1 ビットの結果バスと、 入力で結果バスに結合されかつ出力でオペランドバスに
    結合される結果記憶メモリとをさらに含む、請求項20
    に記載のプロセッサ。
  22. 【請求項22】 浮動小数点数の符号部および指数部が
    結果の最下位のn2ビットに位置されるよう、浮動小数
    点機能ユニットは結果バス上に浮動小数点数を置く、請
    求項21に記載のプロセッサ。
  23. 【請求項23】 整数ビットn2 の数は32であり、浮
    動小数点ビットn3の数は80またはそれより大きく、
    バスのビットn1 の数は40またはそれより大きい、請
    求項20に記載のプロセッサ。
  24. 【請求項24】 複数のオペレーションを並列して実行
    するプロセッサであって、オペレーションはオペランド
    データで動作可能であり、オペレーションのうち選択さ
    れるオペレーションは整数オペレーションであり、オペ
    レーションのうち選択される他のオペレーションは浮動
    小数点オペレーションであり、プロセッサはさらに、 プロセッサコアを備え、前記プロセッサコアは、 複数の共通のオペランドデータバスと、 複数の共通の結果データバスと、 オペランドデータバスに結合される浮動小数点オペラン
    ドデータ入力と、結果データバスに結合される浮動小数
    点オペランドデータ出力とを用いて、浮動小数点オペレ
    ーションを実行する浮動小数点機能ユニットと、 オペランドデータバスに結合される整数オペランドデー
    タ入力と、結果データバスに結合される整数オペランド
    データ出力とを用いて、整数オペレーションを実行する
    複数の整数機能ユニットと、 結果データバスに結合されるオペランドメモリ入力と、
    オペランドデータバスに結合されるオペランドメモリ出
    力とを含み、プロセッサはさらに、 メモリならびにプロセッサコアの整数機能ユニットおよ
    び浮動小数点機能ユニットに結合される命令供給回路を
    備え、前記命令要求回路は、 複数のオペレーションをディスパッチし、オペレーショ
    ンに関連するオペランドデータを選択される機能ユニッ
    トに並行して分配するための手段と、 浮動小数点オペレーションを、同じ数の複数のサブオペ
    ランドで動作可能な複数のサブオペレーションに区分す
    るための手段とを含み、 浮動小数点機能ユニットは、サブオペレーションを1つ
    のオペレーションで実行するために、サブオペランドを
    再び組合せるための手段を含む、複数のオペレーション
    を並行して実行するプロセッサ。
  25. 【請求項25】 プロセッサコアは実質的に長方形のセ
    グメントの概して平面的な配列で配置され、各セグメン
    トは第1の次元内に延びており、セグメントは第2の次
    元内に実質的に積み重ねられ、共通のバスは第2の次元
    内に複数のセグメントにわたって延び、 メモリは第1のセグメントにおいて平面配列の一方の端
    部に順序付けられ、 複数の整数機能ユニットは第第1のセグメントに隣接し
    た第2のセグメントに順序付けられ、 浮動小数点機能ユニットは第2のセグメントに隣接した
    第3のセグメントに順序付けられる、請求項24に記載
    のプロセッサ。
  26. 【請求項26】 オペランドバスは第2の次元内で、メ
    モリを実質的に通過し、かつ整数機能ユニットを完全に
    通過し、かつ浮動小数点機能ユニットを部分的に通過し
    て延び、 結果バスは第2の次元内で、メモリを通過し、かつ整数
    機能ユニットを完全に通過し、かつ浮動小数点機能ユニ
    ットを部分的に通過して延びる、請求項25に記載のプ
    ロセッサ。
JP10114795A 1994-04-26 1995-04-25 複数の型のオペレーションを同時並列で実行するためのプロセッサコア、およびオペレーションに用いられるオペランドデータを処理し通信する方法 Expired - Fee Related JP3618821B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/233,563 US5574928A (en) 1993-10-29 1994-04-26 Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US233563 1994-04-26

Publications (2)

Publication Number Publication Date
JPH07295813A true JPH07295813A (ja) 1995-11-10
JP3618821B2 JP3618821B2 (ja) 2005-02-09

Family

ID=22877746

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10114795A Expired - Fee Related JP3618821B2 (ja) 1994-04-26 1995-04-25 複数の型のオペレーションを同時並列で実行するためのプロセッサコア、およびオペレーションに用いられるオペランドデータを処理し通信する方法

Country Status (5)

Country Link
US (1) US5574928A (ja)
EP (1) EP0679992B1 (ja)
JP (1) JP3618821B2 (ja)
AT (1) ATE212454T1 (ja)
DE (1) DE69525097T2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5632023A (en) * 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5574670A (en) * 1994-08-24 1996-11-12 Advanced Micro Devices, Inc. Apparatus and method for determining a number of digits leading a particular digit
US5748516A (en) * 1995-09-26 1998-05-05 Advanced Micro Devices, Inc. Floating point processing unit with forced arithmetic results
US5878266A (en) * 1995-09-26 1999-03-02 Advanced Micro Devices, Inc. Reservation station for a floating point processing unit
US5761105A (en) * 1995-09-26 1998-06-02 Advanced Micro Devices, Inc. Reservation station including addressable constant store for a floating point processing unit
US5930489A (en) * 1996-02-09 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to detect memory operations having data addresses indicative of a boundary between instructions sets
US5745780A (en) * 1996-03-27 1998-04-28 International Business Machines Corporation Method and apparatus for source lookup within a central processing unit
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5859998A (en) * 1997-03-19 1999-01-12 Advanced Micro Devices, Inc. Hierarchical microcode implementation of floating point instructions for a microprocessor
US6035388A (en) * 1997-06-27 2000-03-07 Sandcraft, Inc. Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6253311B1 (en) * 1997-11-29 2001-06-26 Jp First Llc Instruction set for bi-directional conversion and transfer of integer and floating point data
US6336160B1 (en) 1998-06-19 2002-01-01 International Business Machines Corporation Method and system for dividing a computer processor register into sectors and storing frequently used values therein
US6393552B1 (en) 1998-06-19 2002-05-21 International Business Machines Corporation Method and system for dividing a computer processor register into sectors
US6237076B1 (en) * 1998-08-19 2001-05-22 International Business Machines Corporation Method for register renaming by copying a 32 bits instruction directly or indirectly to a 64 bits instruction
US6301705B1 (en) * 1998-10-01 2001-10-09 Institute For The Development Of Emerging Architectures, L.L.C. System and method for deferring exceptions generated during speculative execution
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6912647B1 (en) 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US6799262B1 (en) 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
US6779106B1 (en) * 2000-09-28 2004-08-17 International Business Machines Corporation Apparatus and method for an enhanced integer divide in an IA64 architecture
US7149878B1 (en) 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7228403B2 (en) * 2000-12-23 2007-06-05 International Business Machines Corporation Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture
JP3796124B2 (ja) * 2001-03-07 2006-07-12 株式会社ルネサステクノロジ スレッド間優先度可変プロセッサ
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US7769795B1 (en) * 2005-06-03 2010-08-03 Oracle America, Inc. End-to-end residue-based protection of an execution pipeline that supports floating point operations
US20080209185A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Processor with reconfigurable floating point unit
US7565513B2 (en) * 2007-02-28 2009-07-21 Advanced Micro Devices, Inc. Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
US8495699B2 (en) * 2008-12-23 2013-07-23 At&T Intellectual Property I, L.P. Distributed content analysis network
US20100223660A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with time limit restrictions
US20100223673A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with access restrictions
US8904421B2 (en) 2009-06-30 2014-12-02 At&T Intellectual Property I, L.P. Shared multimedia experience including user input
US9110802B2 (en) * 2010-11-05 2015-08-18 Advanced Micro Devices, Inc. Processor and method implemented by a processor to implement mask load and store instructions
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10732979B2 (en) * 2018-06-18 2020-08-04 Advanced Micro Devices, Inc. Selectively performing ahead branch prediction based on types of branch instructions
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
WO2020190802A1 (en) 2019-03-15 2020-09-24 Intel Corporation Compression techniques
CN112534404A (zh) 2019-03-15 2021-03-19 英特尔公司 用于矩阵加速器架构的稀疏优化

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781808A (en) * 1972-10-17 1973-12-25 Ibm Virtual memory system
AT354159B (de) * 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
JPS61229133A (ja) * 1985-04-03 1986-10-13 Nec Corp シングルチツプマイクロコンピユ−タ用エミユレ−タ
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US5222230A (en) * 1988-01-29 1993-06-22 Texas Instruments Incorporated Circuitry for transferring data from a data bus and temporary register into a plurality of input registers on clock edges
US5056006A (en) * 1988-09-12 1991-10-08 General Electric Company Parallel processor with single program storage and sequencer and simultaneous instruction processing
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5155816A (en) * 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US4940908A (en) * 1989-04-27 1990-07-10 Advanced Micro Devices, Inc. Method and apparatus for reducing critical speed path delays
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5077692A (en) * 1990-03-05 1991-12-31 Advanced Micro Devices, Inc. Information storage device with batch select capability
US5237700A (en) * 1990-03-21 1993-08-17 Advanced Micro Devices, Inc. Exception handling processor for handling first and second level exceptions with reduced exception latency
US5095458A (en) * 1990-04-02 1992-03-10 Advanced Micro Devices, Inc. Radix 4 carry lookahead tree and redundant cell therefor
US5053631A (en) * 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5128888A (en) * 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. Arithmetic unit having multiple accumulators
US5206828A (en) * 1990-04-02 1993-04-27 Advanced Micro Devices, Inc. Special carry save adder for high speed iterative division
US5058048A (en) * 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
US5128891A (en) * 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. High speed divider with square root capability
US5157780A (en) * 1990-06-12 1992-10-20 Advanced Micro Devices, Inc. Master-slave checking system
US5247644A (en) * 1991-02-06 1993-09-21 Advanced Micro Devices, Inc. Processing system with improved sequential memory accessing
DE69233493T2 (de) * 1991-07-08 2005-07-28 Seiko Epson Corp. RISC-Prozessor mit erweiterbarer Architektur
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5450607A (en) * 1993-05-17 1995-09-12 Mips Technologies Inc. Unified floating point and integer datapath for a RISC processor
IE80854B1 (en) * 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution

Also Published As

Publication number Publication date
EP0679992A1 (en) 1995-11-02
ATE212454T1 (de) 2002-02-15
DE69525097T2 (de) 2002-08-29
JP3618821B2 (ja) 2005-02-09
US5574928A (en) 1996-11-12
DE69525097D1 (de) 2002-03-14
EP0679992B1 (en) 2002-01-23

Similar Documents

Publication Publication Date Title
JP3618821B2 (ja) 複数の型のオペレーションを同時並列で実行するためのプロセッサコア、およびオペレーションに用いられるオペランドデータを処理し通信する方法
US5590352A (en) Dependency checking and forwarding of variable width operands
US7739480B2 (en) Method and apparatus for obtaining a scalar value directly from a vector register
EP0851343B1 (en) System for processing floating point operations
US6061780A (en) Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
KR100500890B1 (ko) 디지탈 신호처리용 집적회로구조
KR100505799B1 (ko) 코프로세서 데이터 액세스 제어
US5185872A (en) System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5996067A (en) Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead
US5675758A (en) Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
US5940311A (en) Immediate floating-point operand reformatting in a microprocessor
US5903772A (en) Plural operand buses of intermediate widths coupling to narrower width integer and wider width floating point superscalar processing core
US20050021926A1 (en) Method and apparatus for efficient loading and storing of vectors
US6148395A (en) Shared floating-point unit in a single chip multiprocessor
JPH11511579A (ja) 浮動小数点処理装置のためのリザベーションステーション
KR19980063924A (ko) 마이크로프로세서에서 공유 데이터 경로를 통해 정수 및 부동소숫점 데이터를 통신하기 위한 장치 및 그 통신 방법
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US5787026A (en) Method and apparatus for providing memory access in a processor pipeline
EP1389312A1 (en) Locking source registers in a data processing apparatus
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
KR20000048531A (ko) 데이터 처리장치에서의 입력 오퍼랜드 제어
US5805916A (en) Method and apparatus for dynamic allocation of registers for intermediate floating-point results
KR20000048529A (ko) 데이터 처리장치의 레지스터 제어
KR20000048530A (ko) 데이터 처리장치 레지스터

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041018

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: 20041102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041111

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: 20071119

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees