JPH09507592A - Riscプロセッサのユニファイド浮動小数点および整数データパス - Google Patents
Riscプロセッサのユニファイド浮動小数点および整数データパスInfo
- Publication number
- JPH09507592A JPH09507592A JP6525480A JP52548094A JPH09507592A JP H09507592 A JPH09507592 A JP H09507592A JP 6525480 A JP6525480 A JP 6525480A JP 52548094 A JP52548094 A JP 52548094A JP H09507592 A JPH09507592 A JP H09507592A
- Authority
- JP
- Japan
- Prior art keywords
- integer
- floating point
- bit
- data path
- unified
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
RISCプロセッサの64ビット幅のユニファイド整数および浮動小数点データパス(204)。ユニファイド・データパスにより、整数および浮動小数点実行ユニット(210)内の主なハードウェア資源のうちの幾つかを共有することができ、同様に、周辺回路の大部分を単純化することができる。RISCプロセッサの主なパフォーマンス上の利点に妥協することなく、ユニファイド・データパスにより、平均パワー消費を軽減することができ、しかも、面積を減少させることができるハードウェアを効率的に用いることができる。
Description
【発明の詳細な説明】
RISCプロセッサのユニファイド浮動小数点および整数データパス
技術分野
本発明は、縮小命令セット(reduced instruction set)を有するコンピュータ
に関し、特に、整数および浮動小数点命令のためのユニファイド・データパスを
有するコンピュータに関する。
プロセッサの命令セットの観点から言うと、コンピュータ・アーキテクトは2
つの一般的なアプローチを開発している。CISC(complex instruction set compu
ter)プロセッサは、あらゆる種類の特別な目的のニーズにアドレスするため、適
正化された命令の拡張セットを提供し、一方、RISC(reduced instruction set c
omputer)プロセッサは、一般的に、より単純化され一様な命令であって、より複
雑な命令を組み立てることができる命令のスモール・セット(smaller set)を提
供する。
CISCプロセッサにより提供された命令が広範囲で複雑であるので、ハードウェ
アが複雑になってしまい、チップ全体の効率が低下することになる。マイクロコ
ードと、トラップと、エミュレートのような技法を用いると、益々複雑になって
いるCISCプロセッサ・ハードウェアの設計が御し易くなった。しかし、ハイエン
ドのCISCプロセッサの場合、その目標は速度の適正化と、パフォーマンスの適正
化であるが、ハードウェアのインプリメンテーションは依然として非常に複雑で
ありコスト高である。
CISCとは対照的に、RISCのアプローチは、命令フォーマットをできる限り単純
化することを狙っているので、マシンの設計をより効率化することができる。よ
り手の込んだCISC命令の中には、ほとんどのコンパイラが全く使用しないか、使
用しても希にしか使用しない命令が存在するという事実を、RISCの設計では利用
している。そのため、より少数の一様な命令フォーマット、好ましくは、サイズ
が全て同一である命令フォーマットが強調されている。これらのフォーマットを
正規化することにより、命令デコード機構を単純化することができ、幾つかの命
令を同時に実行するパイプライニングを用いることができる。
命令フォーマットを単純で一様にすることと、幾つかの命令をパイプライニン
グすることと、メモリ・アドレシングを単純化することと、レジスタ間オペレー
ションをパフォームすることは、RISCプロセッサ設計の典型的な特徴のうちの幾
つかの特徴である。これらの技法を組み合わせることにより、非常に効率的なア
ーキテクチャを有するとともに、最大スループットを有するハイ・パフォーマン
スなRISCプロセッサが可能になった。これらの技法をさらに改良して、MIPSアー
キテクチャに基づき、RISCプロセッサのファミリ(R2000,R3000,R4000,R6000)
が製造された。MIPSアーキテクチャは、MIPS Technology Inc.により開発され、
その所有権は全てをSilicon Graphics,Inc.of Mountain View,Californiaに
ある。
RISCプロセッサ設計により、引き続き効率およびスループットを高める技術状
況が推し進められると、クロックサイクル当たり1命令を超える命令の実行レー
トが達成される。しかし、このような技術状況が推し進められたため、RISCプロ
セッサのパフォーマンスは非常に高くなったものの、パワーの消費とコストが並
列して増大した。その結果、ポータブル・コンピューティング装置、例えば、デ
スクトップ・コンピュータと、ノートブック・コンピュータのようなコンピュー
ティング装置は、RISCプロセッサが提供する程度の高いパフォーマンスが得られ
なくなった。上述したことから、RISCプロセッサはパワーが小さく低コストであ
れば、RISC設計の高パフォーマンスという利点の他に、ポータブル・コンピュー
テング装置にとっては、コストが削減されパワー消費が低減されるので、パワー
が小さく低コストのRISCプロセッサのニーズがあるのは当然である。
発明の開示
本発明は、パフォーマンスを妥協することなく、低コストのアプリケーション
という要求に答えるMIPS RISCアーキテクチャに基づいたプロセッサを提供する
ことにある。
本発明によれば、整数データパスと浮動小数点データパスに必須のハードウェ
アをコンバインし、整数および浮動小数点演算のためのユニファイド・データパ
スを作成することにより、パワー消費を低減し、チップ面積を軽減した。浮動小
数点実行ユニットが必要とする主な資源の中には、整数演算を行なうことができ
るものが幾つかあり、整数実行ユニットが必要とする主な資源の中には、浮動小
数点演算を行なうことができるものが幾つかある。本発明に係るプロセッサは、
浮動小数点演算を行なうデータパスと同一のデータパスで、整数演算を充分に適
応させるように資源を変更するので、これらの資源を個々の整数データパス上に
複製する必要がない。
従って、本発明は、マルチステージ・パイプラインド・データパスと、ユニフ
ァイド整数および浮動小数点データパスを有するRISCプロセッサに適用すること
ができる。32個の64ビット汎用レジスタと、32個の64ビット小数点レジスタをコ
ンバインするレジスタ・ファイルと、複数のパイプライン・レジスタとマルチプ
レクサとを含み、選択されたパイプライン・ステージの結果を整数および浮動小
数点演算中に、フィードバックするオペランド・パイプライン・ネットワークと
、コンバインド整数/仮数データパスと指数データパスを含む64ビット実行ユニ
ットと、レジスタ・ファイルをパイプライン・ネットワークと実行ユニットに結
合するバス・ネットワークとを含む。
整数と浮動小数点演算を並列処理するのは、本発明に係るユニファイド・デー
タパスを採用したので不可能であるが、平均パワーが低減され、効率が高くなっ
た資源を共有することに対して、数多くの大きな利点がある。
本発明の効果および性質は、図面と次の詳細な説明を参照することによりさら
に理解することができる。
図面の簡単な説明
図1は整数および浮動小数点演算のためのデュアル・データパスを示す従来の
RISCプロセッサの簡略ブロック図である。
図2は本発明に係るユニファイド・データパスの簡略ブロック図である。
図3は本発明に係るユニファイド整数/仮数実行ユニットを示す詳細ブロック
図である。
図4は本発明に係る指数実行ユニットを示す詳細ブロック図である。
発明を実施するための最良の形態
ハイエンドのマイクロプロセッサは、ほとんどの場合、浮動小数点計算を行な
うように設計されている。浮動小数点数のフォーマットは、整数に比較して異な
るので、小数点演算を充分インプリメントすることができるだけの特殊なハード
ウェァを追加する必要がある。浮動小数点数のフォーマットは、仮数(すなわち
、小数)部と指数部を含む。浮動小数点数のこれら2つの部分は、処理要求が異
なるので、浮動小数点データパス内の2つのデータパスで、仮数と指数を処理し
ている。さらに、RISCプロセッサは単一のクロックサイクルで整数演算を行って
いるが、浮動小数点演算は複数クロックサイクルが必要である。そのため、複数
サイクルの浮動小数点演算と並列に単一サイクルの整数演算を処理することがで
きることが望ましい。このようなことから、現行のRISCプロセッサは整数および
浮動小数点演算のためのデータパスをそれぞれ有する。
図1は2つの個々のデータパス、すなわち、整数データパス100と浮動小数点
データパス102を有するRISCプロセッサの簡略ブロック図である。整数データパ
ス100は汎用レジスタ・ファイル104を備え、汎用レジスタ・ファイル104は例え
ば32個の64ビットレジスタを含む。オペランド・パイプライン・ネットワーク10
6は、パイプライン・レジスタ108と、バイパス・マルチプレクサ110を有し、レ
ジスタ・ファイル104からの64ビットオペランドを受け取り、パイプラインの異
なるステージからフィードバックする。このため、先行する演算の結果をレジス
タ・ファイル104に書き込むのを待たなくても、命令を進めることができるので
、1つのパイプライン・クロック・サイクルでの遅延を最少にする。整数データ
パス100は整数実行ユニット112も含む。整数実行ユニット112は幾つかの主機能
ユニット、例えば、64ビット加算器114と、32ビット双方向シフタ116と、ブール
論理ユニット118のような機能ユニットを含むのが典型的である。機
能ブロックの結果はオペランド・パイプライン・ネットワーク106を介して汎用
レジスタ・ファイル100にフィードバックされる。
浮動小数点データパス102は、例えば、32個の64ビット・レジスタを含む浮動
小数点レジスタ120を備えている。オペランド・パイプライン・ネットワーク122
はパイプライン・レジスタ124とバイパス・マルチプレクサ126を含む。オペラン
ド・パイプライン・ネットワーク122は、整数データパス100のオペランド・パイ
プライン・ネットワーク106と同様に、浮動小数点データパス102に接続されてお
り、同様のパイプラインニング機能をパフォームする。浮動小数点データパス10
2は、さらに、64ビット浮動小数点実行ユニット128を含み、64ビット浮動小数点
実行ユニット128は、例えば、53ビット幅の仮数実行ユニット130と、11ビット幅
の指数実行ユニットに分割される。アンパッカ(unpacker)134は64ビット・オペ
ランドを仮数部と指数部に分割する。これら仮数部と指数部は浮動小数点実行ユ
ニット128のリパッカ(repacker)136によりリパックされる。仮数実行ユニット13
0は加算器と、シフタと、正規化ロジックを含むのが典型的である。指数実行ユ
ニット132の設計は非常に特殊化されており、加算器と、定数生成ロジックを含
み、同様に、他のランダム・ロジックを含むのが典型的である。
2つのデータパス100および102のインタフェースは、追加のバスラインを介し
て設けてあり、マルチプレクサ144がオペランド・パイプライン・ネットワーク1
06および122のパイプライン構造に設けてある。
そのため、図1のデュアル・データパスRISCプロセッサは、数多くのハードウ
ェア・ユニットを複製する。その結果、平均パワー消費が大きくなり、シリコン
面積をより多くインプリメントする必要がある。本発明では、2つの個々のデー
タパスをコンバインして単一のデータパスにすることにより、複製ハードウェア
・ユニットを除去している。この単一のデータパスでは、2つのタイプの演算で
共通資源を共用している。
図2は本発明に係るユニファイド整数および浮動小数点データパスの簡略ブロ
ック図である。ユニファイド・データパスはレジスタ・ファイル200を含み、レ
ジスタ・ファイル200は、例えば、32個の64ビット汎用レジスタと、32個の64
ビット浮動小数点レジスタをコンバインしている。オペランド・パイプライン・
ネットワーク202は、パイプライン・レジスタ204とバイパス・マルチプレクサ20
6を介して、パイプライニングとバイパス機構を供給している。アンパッカ208は
(浮動小数点演算を行なうため)オペランドを仮数部と指数部に分割するか、あ
るいは、(整数演算を行なうために)オペランドを例えば11ビット幅の64ビット
・コンバインド・整数/仮数実行ユニット210に単に渡すかのいずれかを行なう
。コンバインド整数/仮数実行ユニット210は、(図3に関連して説明するが)
数と、浮動小数点数の仮数部の両方に対して演算を行なう機能ブロックの1つの
セットを含む。最後に、整数/仮数実行ユニット210および指数実行ユニット212
の出力は、浮動小数点演算を行なうため、リパッカ214により再グループ化され
る。
本発明に係るユニファイド・データパスの利点が、図2に示すようなブロック
図でも幾つか明らかになる。まず、オペランド・パイプライン・ネットワーク20
2をインプリメントすると、2つの個々のオペランド・パイプライン・ネットワ
ーク106および122(図1)に比較して、煩わしくなく、複雑ではない。必要なハ
ードウェアが半分になるだけでなく、2つの個々のデータパスのインタフェース
機構を提供するために、マルチプレクサおよびバスを追加する必要がない。
さらに、ユニファイド・データパスで浮動小数点および整数演算を実現するに
は、整数演算の要求に応えるため、コンバインド整数/仮数実行ユニット210は6
4ビット幅でなければならない。図1に示す浮動小数点データパス102の53ビット
仮数実行ユニット130に比較して、浮動小数点オペランドの仮数部に対する演算
では、「自由」エクストラ・ビットが獲得される。このため、プロセッサ・アー
キテクチャを適正化することができる。例えば、バイナリ浮動小数点アーキテク
チャに対するIEEE標準、すなわち、IEEE/ANSI Standard 754-1985では、浮動小
数点演算を行なうため、3つの追加ビット(ガードビット/丸めビット/スティ
キービット)が必要になる。現行のRISCプロセッサは、この要求をインプリメン
トするため、追加のハードウェアを開発した。この追加のハードウェアは浮動小
数点実行ユニットから分離されているのが普通である。しかし、さらにコス
トをかけることなく、コンバインド整数/仮数実行ユニット200のエキストラ「
自由」ビットを、浮動小数点演算の中に利用して、ビルトインされたガード/丸
め/スティキー・コレクション・ロジックを可能にする。
さらに、プロセッサ・アーキテクチャの適正化は、実行制御ブロックをユニフ
ァイする、本発明に係るユニファイド・データパスにより可能である。デュアル
・データパス・アーキテクチャは、整数データパスが整数オペランド・パイプラ
イン・ネットワーク106と整数実行ユニット112を構成するには、実行制御ユニッ
トが必要であり、浮動小数点オペランド・パイプライン・ネットワーク122およ
び実行ユニット128に対しては、個々の実行制御ユニットが必要である。本発明
に係るユニファイド・オペランド・パイプライン・ネットワーク202と、整数/
仮数実行ユニット210は、著しく小さく、より複雑ではないので、命令のスーパ
セットを1つ有するユニファイド実行制御ユニット216は、2つの個々の実行ユ
ニットと置換することができる。整数および浮動小数点演算に共通の機能を、ユ
ニファイド制御ユニットで、適正化することができ、より効率的に処理すること
ができる。
2つの実行ユニット112および128(図1)の機能ブロックをコンバインして、
コンバインド整数/仮数実行ユニット210で、共用ブロックの単一のセットにす
ることにより、パワーおよびコストが軽減される。図3はコンバインド整数/仮
数実行ユニット210の内部回路の詳細な図である。実行ユニット210は64ビット幅
であり、整数および浮動小数点数の32ビットおよび64ビットオペランドに対して
コンパチブルになるように設計されている。実行ユニット210はコンバインド・
レジスタ・ファイル200からのオペランドを、パイプライン・ネットワーク202を
介して受け取るアンパッカ300を含む。アンパッカ300の出力は3つの機能ブロッ
クにフィードされる。加算器302はオペランド(すなわち、浮動小数点数の仮数
)を、シフト・マルチプレクサ304と、ブース・マルチプレクサ306と、加算マル
チプレクサ308とを介して受け取る。シフタ310はそれらのオペランドを、シフト
・マルチプレクサ312を介して受け取り、ブール論理ユニット314はそれらのオペ
ランドをマルチプレクサOPMUX316を介して受け取る。シフタ310と論理ユニット3
14の出力は、RMUX320によりマルチプレクシングされ
る。RMUX320の出力は、加算器302の出力とともに、結果マルチプレクサ322によ
りマルチプレクシングされる。結果マルチプレクサ322の出力はサイン拡張/リ
パッカ326にフィードされ、マルチサイクル整数および浮動小数点命令実行のサ
ム・レジスタ・ステージにロードされる。結果マルチプレクサ322の出力はマル
チプレクサのうちの幾つかのマルチプレクサにフィードバックされ、他の主機能
ブロック、例えば、正規化ロジック318にフィードされる。サイン拡張ブロック3
30パイプライン・ステージのうちの1つのパイプライン・ステージの命令からの
即値フィールドを受け取り、即値オペランドがデータパスに入ってくると、即値
オペランドを条件付きでサイン拡張し、その出力をシフト・マルチプレクサ312
にフィードする。
コンバインド整数/仮数実行ユニット210は、ユニファイド制御ユニット216ら
のシグナルを用いて、データパス内のデータ・フローを制御し、主機能ユニット
内での演算を指定する。レジスタ・ファイルから読み取られたオペランドは、必
要な場合(整数)は、実行機能ユニットにより用いられる前に、アンパッカ300
によりサイン拡張される。実行命令内の適正なフィールドは、ステージングされ
、対応する機能ユニットに供給され、機能ユニットへの入力は選択され、命令の
ステージングされた演算のローカル・デコーディングに従って、機能が供給され
る。その結果は、必要な場合(整数)か、あるいは、リパッカ326によりリパッ
クされた場合(浮動小数点)は、その結果がキャッシュ・メモリ・サブシステム
にストアされるか、あるいは、レジスタ・ファイルにライト・バックされる前に
、サイン拡張される。アンパッカ300はIEEEシグナル(32ビット)または倍精度オ
ペランド(64ビット)を受け取り、サイン・フィールドと、指数フィールドと、仮
数フィールドに分離する。
アンパッカ300はガード・ビットと、丸めビットと、スティキー・ビット(全
てゼロに初期設定される)も、仮数フィールドのLSBに追加し、この値をデータ
パスにフィードする。サイン拡張/リパッカ326は53ビットの浮動小数点仮数と
、11ビットの指数と、1ビットのサインを受け取って、IEEEシグナルにリフォー
マットするか、倍精度オペランドにリフォーマットする。サイン拡張/リパッカ
326は、整数演算するため、その入力を32ビットのサイン拡張を行な
う。
加算器302は、例えば、キャリ伝播加算器であり、2つの64ビット・オペラン
ドを(2の補数で)加算し、キャリインし、64ビットの総和をとり、キャリアウ
トする。加算器302も用いて、命令をロードしストアするために、データ仮想ア
ドレスを計算する。一般化されたデータ仮想アドレスはDVA出力で利用可能であ
る。加算器302により実行される別の機能は、トラップ命令で、2つのオペラン
ドを比較する機能である。シフタ310は、ストア・アライメントのためにポスト
・ワード・スワップを行なう64ビット左/右シフタである。右シフトは算術的(
結果はサイン拡張される)または論理的(結果はゼロ充填される)のいずれかで
行なうことができる。論理ユニット314はビットごとにブール演算を行い、オペ
ランド比較を行なうために、等しいオペランドを検出し、条件付き分岐およびト
ラップの結果を判定する。正規化ロジック318は浮動小数点加算および減算演算
で用いられる。正規化ロジック318は、正規化された浮動小数点結果を生成する
ため、差/和を何桁シフトする必要があるかを示し、指数の位置をどれだけ調整
する必要があるかを示す。
図4は指数実行ユニット212を示す。指数実行ユニット212は12ビット幅であり
、ビット12(MSB)がサイン・ビットおよびオーバフロー・ビットとして用いられ
ている。指数実行ユニット212はフィードバック・マルチプレクサ400と定数生成
ロジック402を含み、12ビットの値を、ユニファイド制御ユニット216からの入力
に基づいて生成する。フィードバック・マルチプレクサ400と定数生成ロジック4
02の出力は、2つのオペランド・マルチプレクサ404にフィードされる。2つの
オペランド・マルチプレクサ404はキャリ選択加算器406のために、入力を選択す
る。実行ユニット212はキャリ選択加算器406により選択された結果をホールドす
るためのレジスタ408をさらに含んでいる。指数実行ユニット212の構造と演算は
、本発明によれば、2つのデータパスをユニファイしたので、実質的に影響を受
けない。
そのため、現行のデュアル・データパスRISCプロセッサに比較して、コンバイ
ンド整数/仮数実行ユニット210ハードウェアがさらに省かれ、従って、コスト
が低減され、平均パワー消費が軽減された。2つの加算器と、2つのシフタに代
えて、単一の64ビット加算器と、単一の64ビットシフタのみを用いて、整数およ
び浮動小数点演算の両方の演算を行なう。
しかし、整数と浮動小数点演算を並列処理するのは不可能という点で、パフォ
ーマンスのトレードオフがある。RISCプロセッサでは、並列処理が行われるので
、単一クロック・サイクル演算である整数演算とは対照的に、主に、マルチサイ
クル演算である浮動小数点演算に対して利益がある。RISCプロセッサはその後の
整数演算を処理する前に、マルチサイクル浮動小数点演算を完了するのを待つ必
要がない。本発明に係るユニファイド・データパスRISCプロセッサの目的は、RI
SCプロセッサの主なパフォーマンスの利点と妥協することなく、ホータブル・コ
ンピューティング・アプリケーションに対して低コスト、低パワーRISCプロセッ
サを提供することにある。
この目的は、整数演算のために、さらにレイテンシを大きくしないことを保証
することにより達成することができる。そのため、RISCプロセッサにより浮動小
数点および整数演算を混合して行なうときにのみ、パフォーマンスの妥協があり
、スループットが低下する。
本発明に係るユニファイド・データパスにより、浮動小数点演算のある態様も
改良された。1つの例は、浮動小数点数の仮数部に対する論理演算を行なう、ブ
ール論理ユニット314の可用性である。浮動小数点演算で等値比較を行なうため
、現行のRISCプロセッサでは、浮動小数点実行ユニット内の特別なハードウエア
を用いるか、あるいは、加算器を用いて、幾つかのサイクルで、等値比較を行な
うかのいずれかを行うのが典型的である。本発明に係るコンバインド整数/仮数
実行ユニット210の場合、ブール論理ユニット314を用いて、単一サイクルで、浮
動小数点演算で、比較を行なうことができる。さらに、上述したように、浮動小
数点データパスは個々の制御ユニットを必要としない。コンバインド制御ユニッ
ト216は整数および浮動小数点演算の両方の演算をハンドルする。本発明に係る
ユニファイド・データパス・アーキテクチャにより必要とされるハードウエアの
量を軽減したことにより、直接、設計サイクルが短縮される。このため、開発コ
ストが軽減され、ターンアランドがより速くなる。
結論を言えば、本発明によれば、ユニファイド整数および浮動小数点データパ
スを有するRISCプロセッサが提供され、RISCプロセッサの主なパフォーマンス・
アドバンテージに妥協することなく、パワー消費が軽減され、面積が軽減される
。ユニファイド・データパスにより、整数および浮動小数点実行ユニット内の主
なハードウェア資源の幾つかを共用することができ、同様に、周辺回路の大部分
を単純化することができる。上記説明は本発明を完全に記述したものであるが、
種々の変更と、修正と、均等物を用いることができる。例えば、他の種類のプロ
セッサ、例えば、DSP(digital signal processing)技法を用いて設計されたプロ
セッサは、本発明に係る64ビット・ユニファイド・データパスにより得られた利
点から利益を得ることができる。例えば、コンバインド整数/仮数実行ユニット
210へのインプリメンテーションは、ブース・ロジックと、加算器302を有するレ
ジスタを用いる代わりに、マルチプライヤ・アレイによりパフォームすることが
できる。このため、本発明の範囲は、上述したことにより判定するのではなく、
請求の範囲と、これら請求の範囲の均等物により判定すべきである。
【手続補正書】特許法第184条の8
【提出日】1995年6月21日
【補正内容】
請求の範囲
1.コンピュータ・プロセッサにおいて、
複数の汎用レジスタと複数の浮動小数点レジスタとをコンバインするレジスタ
・ファイルと、
コンバインド整数/仮数データパスおよび指数データパスを含む実行データパ
スと、
前記指数データパスに結合された指数実行ユニットと、
前記コンバインド整数/仮数データパスに結合された実行ユニットであって、
前記指数実行ユニットから分離されたコンバインド整数/仮数実行ユニットと、
整数および浮動小数点命令のスーパセットを組み込んだユニファイド制御ユニ
ットであって、前記指数実行ユニットおよび前記コンバインド整数/仮数実行ユ
ニットを介してオペランド演算とフローを制御するため、前記指数ユニットおよ
び前記コンバインド整数/仮数実行ユニットに結合されたユニファイド制御ユニ
ットと
を備えたことを特徴とするユニファイド整数および浮動小数点データパス。
2.請求項1において、前記コンピュータ・プロセッサは、マルチステージ・パ
イプラインド・データパスを有するRISCプロセッサであることを特徴とするユニ
ファイド整数および浮動小数点データパス。
3.請求項2において、前記レジスタファイルは32個の汎用レジスタと32個の浮
動小数点レジスタのアレイであることを特徴とするユニファイド整数および浮動
小数点データパス。
4.請求項2において、選択されたパイプライン・ステージの結果を、整数およ
び浮動小数点演算中にフィードバックする複数のバイパス・マルチプレクサをさ
らに備えたオペランド・パイプライン・ネットワークを備えたことを特徴とする
ユニファイド整数および浮動小数点データパス。
5.請求項2において、前記コンバインド整数/仮数データパスは、
ブール・ロジック機能ユニットと、
加算器と、
シフタと、
正規化ロジックと、
前記ブール・ロジック機能ユニットと、加算器と、シフタと、正規化ロジック
に、前記レジスタからのオペランドを、バス・ネットワークを介して、選択的に
結合するマルチプレクシング・ネットワークと
を備えたことを特徴とするユニファイド整数および浮動小数点データパス。
6.請求項2において、前記コンバインド整数/仮数実行ユニットは、ビルトイ
ン・ガード/丸め/スティキー・コレクション・ロジックをさらに備えたことを
特徴とするユニファイド整数および浮動小数点データパス。
7.請求項1において、前記実行データパスは、浮動小数点アンパッカおよびリ
パッカをさらに備えたことを特徴とするユニファイド整数および浮動小数点デー
タパス。
Claims (1)
- 【特許請求の範囲】 1.コンピュータ・プロセッサにおいて、 複数の64ビット汎用レジスタと、複数の64ビット浮動小数点レジスタとをコン バインするレジスタ・ファイルと、 複数のパイプライン・レジスタを含むオペランド・パイプライン・ネットワー クと、 64ビット・コンバインド整数/仮数データパスおよび指数データパスを含む64 ビット実行データパスと、 前記レジスタ・ファイルを前記パイプライン・ネットワークおよび前記実行デ ータパスに結合するバス・ネットワークと を備えたことを特徴とする64ビット・ユニファイド整数および浮動小数点データ パス。 2.請求項1において、前記コンピュータ・プロセッサは、マルチステージ・パ イプラインド・データパスを有するRISCプロセッサであることを特徴とするユニ ファイド整数および浮動小数点データパス。 3.請求項2において、前記レジスタ・ファイルは、32個の64ビット汎用レジス タと、32個の64ビット浮動小数点レジスタであることを特徴とするユニファイド 整数および浮動小数点データパス。 4.請求項2において、前記オペランド・パイプライン・ネットワークは、選択 されたパイプライン・ステージの結果を、整数および浮動小数点演算中に、フィ ードバックする複数のバイパス・マルチプレクサをさらに備えたことを特徴とす るユニファイド整数および浮動小数点データパス。 5.請求項2において、前記64ビット・コンバインド整数/仮数データパスは、 ブール・ロジック機能ユニットと、 加算器と、 シフタと、 正規化ロジックと、 前記レジスタ・ファイルからのオペランドを、前記64ビット・バス・ネットワ ークを介して、前記ブール・ロジック機能ユニットと、加算器と、シフタと、正 規化ロジックとに選択的に結合するマルチプレクシング・ネットワークと を備えたことを特徴とするユニファイド整数および浮動小数点データパス。 6.請求項5において、前記64ビット・コンバインド整数/仮数データパスは、 ビルトイン・ガード/丸め/スティキー・コレクション・ロジックをさらに備え たことを特徴とするユニファイド整数および浮動小数点データパス。 7.請求項1において、前記64ビット実行データパスは浮動小数点アンパッカお よびリパッカをさらに備えたことを特徴とするユニファイド整数および浮動小数 点データパス。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/063,183 | 1993-05-17 | ||
| US08/063,183 US5450607A (en) | 1993-05-17 | 1993-05-17 | Unified floating point and integer datapath for a RISC processor |
| PCT/US1994/004701 WO1994027205A1 (en) | 1993-05-17 | 1994-04-28 | Unified floating point and integer datapath for risc processor |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09507592A true JPH09507592A (ja) | 1997-07-29 |
Family
ID=22047502
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6525480A Ceased JPH09507592A (ja) | 1993-05-17 | 1994-04-28 | Riscプロセッサのユニファイド浮動小数点および整数データパス |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US5450607A (ja) |
| EP (1) | EP0699318B1 (ja) |
| JP (1) | JPH09507592A (ja) |
| AT (1) | ATE210313T1 (ja) |
| DE (1) | DE69429342T2 (ja) |
| WO (1) | WO1994027205A1 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101232343B1 (ko) * | 2008-03-17 | 2013-02-13 | 룽신 테크놀로지 코퍼레이션 리미티드 | X86 가상머신을 지원하는 risc 프로세서 장치 및 방법 |
| JP2017157225A (ja) * | 2006-09-22 | 2017-09-07 | インテル コーポレイション | 命令に応じた丸め処理の実行 |
Families Citing this family (58)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5574928A (en) * | 1993-10-29 | 1996-11-12 | Advanced Micro Devices, Inc. | Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments |
| 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 |
| US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
| US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
| US5664120A (en) * | 1995-08-25 | 1997-09-02 | International Business Machines Corporation | Method for executing instructions and execution unit instruction reservation table within an in-order completion processor |
| US5748516A (en) * | 1995-09-26 | 1998-05-05 | Advanced Micro Devices, Inc. | Floating point processing unit with forced arithmetic results |
| US5761105A (en) * | 1995-09-26 | 1998-06-02 | Advanced Micro Devices, Inc. | Reservation station including addressable constant store for a floating point processing unit |
| US5878266A (en) * | 1995-09-26 | 1999-03-02 | Advanced Micro Devices, Inc. | Reservation station for a floating point processing unit |
| US6331856B1 (en) | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
| US5787026A (en) * | 1995-12-20 | 1998-07-28 | Intel Corporation | Method and apparatus for providing memory access in a processor pipeline |
| US5854918A (en) * | 1996-01-24 | 1998-12-29 | Ricoh Company Ltd. | Apparatus and method for self-timed algorithmic execution |
| JP3546980B2 (ja) * | 1996-03-29 | 2004-07-28 | 松下電器産業株式会社 | データ処理装置 |
| US5826074A (en) * | 1996-11-22 | 1998-10-20 | S3 Incorporated | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register |
| KR100265358B1 (ko) | 1997-05-22 | 2000-09-15 | 김영환 | 고속의쉬프팅장치 |
| US6035388A (en) * | 1997-06-27 | 2000-03-07 | Sandcraft, Inc. | Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units |
| US6216218B1 (en) * | 1997-11-03 | 2001-04-10 | Donald L. Sollars | Processor having a datapath and control logic constituted with basis execution blocks |
| US6292886B1 (en) * | 1998-10-12 | 2001-09-18 | Intel Corporation | Scalar hardware for performing SIMD operations |
| US6321327B1 (en) | 1998-12-30 | 2001-11-20 | Intel Corporation | Method for setting a bit associated with each component of packed floating-pint operand that is normalized in SIMD operations |
| US8636648B2 (en) * | 1999-03-01 | 2014-01-28 | West View Research, Llc | Endoscopic smart probe |
| US10973397B2 (en) | 1999-03-01 | 2021-04-13 | West View Research, Llc | Computerized information collection and processing apparatus |
| US6564179B1 (en) * | 1999-07-26 | 2003-05-13 | Agere Systems Inc. | DSP emulating a microcontroller |
| US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
| US6904446B2 (en) * | 2001-08-24 | 2005-06-07 | Freescale Semiconductor, Inc. | Floating point multiplier/accumulator with reduced latency and method thereof |
| US7017025B1 (en) * | 2002-06-27 | 2006-03-21 | Mips Technologies, Inc. | Mechanism for proxy management of multiprocessor virtual memory |
| US7003630B1 (en) | 2002-06-27 | 2006-02-21 | Mips Technologies, Inc. | Mechanism for proxy management of multiprocessor storage hierarchies |
| US7140019B2 (en) * | 2002-06-28 | 2006-11-21 | Motorola, Inc. | Scheduler of program instructions for streaming vector processor having interconnected functional units |
| US7415601B2 (en) * | 2002-06-28 | 2008-08-19 | Motorola, Inc. | Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters |
| US7159099B2 (en) * | 2002-06-28 | 2007-01-02 | Motorola, Inc. | Streaming vector processor with reconfigurable interconnection switch |
| US7062635B2 (en) * | 2002-08-20 | 2006-06-13 | Texas Instruments Incorporated | Processor system and method providing data to selected sub-units in a processor functional unit |
| US7373369B2 (en) * | 2003-06-05 | 2008-05-13 | International Business Machines Corporation | Advanced execution of extended floating-point add operations in a narrow dataflow |
| US7290122B2 (en) * | 2003-08-29 | 2007-10-30 | Motorola, Inc. | Dataflow graph compression for power reduction in a vector processor |
| US7610466B2 (en) * | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
| US7107436B2 (en) * | 2003-09-08 | 2006-09-12 | Freescale Semiconductor, Inc. | Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect |
| US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
| US7315932B2 (en) * | 2003-09-08 | 2008-01-01 | Moyer William C | Data processing system having instruction specifiers for SIMD register operands and method thereof |
| US7433912B1 (en) | 2004-02-19 | 2008-10-07 | Sun Microsystems, Inc. | Multiplier structure supporting different precision multiplication operations |
| US20060101244A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose functional unit with combined integer and floating-point multiply-add pipeline |
| US8005885B1 (en) * | 2005-10-14 | 2011-08-23 | Nvidia Corporation | Encoded rounding control to emulate directed rounding during arithmetic operations |
| US8099448B2 (en) * | 2005-11-02 | 2012-01-17 | Qualcomm Incorporated | Arithmetic logic and shifting device for use in a processor |
| JP2008204356A (ja) * | 2007-02-22 | 2008-09-04 | Fujitsu Ltd | リコンフィギャラブル回路 |
| US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
| US7849294B2 (en) | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Sharing data in internal and memory representations with dynamic data-driven conversion |
| US7945768B2 (en) * | 2008-06-05 | 2011-05-17 | Motorola Mobility, Inc. | Method and apparatus for nested instruction looping using implicit predicates |
| US9304767B2 (en) * | 2009-06-02 | 2016-04-05 | Oracle America, Inc. | Single cycle data movement between general purpose and floating-point registers |
| US8615540B2 (en) | 2009-07-24 | 2013-12-24 | Honeywell International Inc. | Arithmetic logic unit for use within a flight control system |
| US9727336B2 (en) | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
| US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
| CN107977227B (zh) * | 2016-10-21 | 2024-07-02 | 超威半导体公司 | 包括不同指令类型的独立硬件数据路径的管线 |
| 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 |
| CN113396401A (zh) | 2019-03-15 | 2021-09-14 | 英特尔公司 | 多贴片存储器管理 |
| US12182035B2 (en) | 2019-03-15 | 2024-12-31 | Intel Corporation | Systems and methods for cache optimization |
| US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
| JP7408671B2 (ja) | 2019-03-15 | 2024-01-05 | インテル コーポレイション | シストリックアレイに対するブロックスパース演算のためのアーキテクチャ |
| US11861761B2 (en) | 2019-11-15 | 2024-01-02 | Intel Corporation | Graphics processing unit processing and caching improvements |
| US11663746B2 (en) | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
| US20220171604A1 (en) * | 2020-12-02 | 2022-06-02 | Flex Logix Technologies, Inc. | Multiplier Circuit Array, MAC and MAC Pipeline including Same, and Methods of Configuring Same |
| RU209758U1 (ru) * | 2021-06-25 | 2022-03-22 | федеральное государственное бюджетное образовательное учреждение высшего образования "Российский государственный университет им. А.Н. Косыгина (Технологии. Дизайн. Искусство)" | Устройство для управления разрядностью вычислений |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH069028B2 (ja) * | 1986-02-18 | 1994-02-02 | 日本電気株式会社 | 演算装置 |
-
1993
- 1993-05-17 US US08/063,183 patent/US5450607A/en not_active Expired - Lifetime
-
1994
- 1994-04-28 AT AT94915938T patent/ATE210313T1/de not_active IP Right Cessation
- 1994-04-28 WO PCT/US1994/004701 patent/WO1994027205A1/en not_active Ceased
- 1994-04-28 JP JP6525480A patent/JPH09507592A/ja not_active Ceased
- 1994-04-28 DE DE69429342T patent/DE69429342T2/de not_active Expired - Lifetime
- 1994-04-28 EP EP94915938A patent/EP0699318B1/en not_active Expired - Lifetime
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2017157225A (ja) * | 2006-09-22 | 2017-09-07 | インテル コーポレイション | 命令に応じた丸め処理の実行 |
| US10067761B2 (en) | 2006-09-22 | 2018-09-04 | Intel Corporation | Performing rounding operations responsive to an instruction |
| US10108416B2 (en) | 2006-09-22 | 2018-10-23 | Intel Corporation | Performing rounding operations responsive to an instruction |
| US10114641B2 (en) | 2006-09-22 | 2018-10-30 | Intel Corporation | Performing rounding operations responsive to an instruction |
| US10114640B2 (en) | 2006-09-22 | 2018-10-30 | Intel Corporation | Performing rounding operations responsive to an instruction |
| KR101232343B1 (ko) * | 2008-03-17 | 2013-02-13 | 룽신 테크놀로지 코퍼레이션 리미티드 | X86 가상머신을 지원하는 risc 프로세서 장치 및 방법 |
Also Published As
| Publication number | Publication date |
|---|---|
| DE69429342D1 (de) | 2002-01-17 |
| EP0699318A4 (en) | 1997-11-12 |
| EP0699318B1 (en) | 2001-12-05 |
| ATE210313T1 (de) | 2001-12-15 |
| WO1994027205A1 (en) | 1994-11-24 |
| US5450607A (en) | 1995-09-12 |
| EP0699318A1 (en) | 1996-03-06 |
| DE69429342T2 (de) | 2002-05-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5450607A (en) | Unified floating point and integer datapath for a RISC processor | |
| US5923871A (en) | Multifunctional execution unit having independently operable adder and multiplier | |
| US6490607B1 (en) | Shared FP and SIMD 3D multiplier | |
| US6349319B1 (en) | Floating point square root and reciprocal square root computation unit in a processor | |
| CN106325811B (zh) | 微处理器中的方法 | |
| EP0260409B1 (en) | Data processing system with two execution units | |
| US5748950A (en) | Method and apparatus for providing an optimized compare-and-branch instruction | |
| US6671796B1 (en) | Converting an arbitrary fixed point value to a floating point value | |
| US6487575B1 (en) | Early completion of iterative division | |
| US5272660A (en) | Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor | |
| US5418736A (en) | Optimized binary adders and comparators for inputs having different widths | |
| CN101133389B (zh) | 多用途乘法-加法功能单元 | |
| JPH06236257A (ja) | データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 | |
| JP3607476B2 (ja) | マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置 | |
| WO2000022512A1 (en) | Scalar hardware for performing simd operations | |
| US6341300B1 (en) | Parallel fixed point square root and reciprocal square root computation unit in a processor | |
| US6351760B1 (en) | Division unit in a processor using a piece-wise quadratic approximation technique | |
| US20030084083A1 (en) | Method and apparatus for performing integer multiply operations using primitive multi-media operations that operate on smaller operands | |
| US6678710B1 (en) | Logarithmic number system for performing calculations in a processor | |
| EP0840207A1 (en) | A microprocessor and method of operation thereof | |
| Boersma et al. | The POWER7 binary floating-point unit | |
| EP1089166A2 (en) | An integer instruction set architecture and implementation | |
| EP0772815A2 (en) | Method for performing signed division | |
| WO1996037827A1 (en) | EXECUTION UNIT ARCHITECTECTURE TO SUPPORT x86 INSTRUCTION SET AND x86 SEGMENTED ADDRESSING | |
| Moon et al. | An area-efficient standard-cell floating-point unit design for a processing-in-memory system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040427 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040512 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040629 |
|
| A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20041026 |