JP5309636B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP5309636B2
JP5309636B2 JP2008073434A JP2008073434A JP5309636B2 JP 5309636 B2 JP5309636 B2 JP 5309636B2 JP 2008073434 A JP2008073434 A JP 2008073434A JP 2008073434 A JP2008073434 A JP 2008073434A JP 5309636 B2 JP5309636 B2 JP 5309636B2
Authority
JP
Japan
Prior art keywords
data
register
precision
instruction
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008073434A
Other languages
English (en)
Other versions
JP2009230339A (ja
Inventor
利雄 吉田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008073434A priority Critical patent/JP5309636B2/ja
Priority to EP08168705A priority patent/EP2104033B1/en
Priority to US12/276,788 priority patent/US8412761B2/en
Priority to CN200810178904.8A priority patent/CN101539850B/zh
Priority to KR1020080120003A priority patent/KR101026821B1/ko
Publication of JP2009230339A publication Critical patent/JP2009230339A/ja
Application granted granted Critical
Publication of JP5309636B2 publication Critical patent/JP5309636B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明は、プロセサに関し、更に詳しくはプロセサにおける単精度浮動小数点データの格納方法に関する。
プロセサの処理性能を向上するために、演算の入力データを得て演算を実行する際に、先行する命令の結果が演算器から出力され浮動小数点レジスタに書き込む前に該演算器からの出力データを後続の入力データとして使用するバイパス機能がある。このバイパス機能を実現するためには、先行する命令の出力との依存関係を検出する回路が必要である。
ところで、例えばSPARC−V9(SPARC:登録商標)アーキテクチャにおける浮動小数点レジスタは、レジスタアドレスが5ビットなので、32本の指示が可能である。図18にSPARC−V9アーキテクチャでの浮動小数点レジスタの構成を示す。単精度浮動小数点レジスタ(4バイト)32本を%f0、%f1、%f2、・・・、%f30、%f31のように表して、倍精度浮動小数点レジスタ(8バイト)32本を%d0、%d2、%d4、・・・、%d62のように表す。倍精度浮動小数点レジスタは偶数番号のみアドレスの指定が可能である。割り当ては、倍精度浮動小数点レジスタ%d(n)(0≦n≦30)(8バイト)は、単精度浮動小数点レジスタ%f(n)(4バイト)と%f(n+1)(4バイト)の2つを結合したものに対応する。
このSPARC−V9アーキテクチャのように、単精度浮動小数点レジスタが4バイトのレジスタで、倍精度浮動小数点レジスタがこれを2つ合わせた8バイトのレジスタ、という使い方をすると、例えば倍精度浮動小数点データ(8バイト)を%d0に入力するという演算を行うとき、上述したバイパス機能を実現するために、%f0(4バイト)と%f1(4バイト)の2つの出力タイミングを検出する必要がある。このように%d0から%d30までの倍精度浮動小数点レジスタのための依存関係検出回路は、8バイトのレジスタだけで依存関係を検出するだけの回路に比べ、より多くの回路を必要とする。
プロセサにおいて回路量が増加してしまうと、コストパフォーマンスが落ちてしまうだけでなく、プロセサの動作周波数が低下する。これにより、プロセサの性能が低下してしまう。そこで、プロセサ中の回路量をできるだけ抑えることが求められる。
そこで、本発明は、単精度浮動小数点データおよび倍精度浮動小数点データを扱うプロセサにおいて、新しい単精度浮動小数点データの格納方式を提案することで、バイパス機能のための依存関係検出回路を構成するハードウェア量を可能な限り低減することを目的とする。
本単精度浮動小数点データの格納方式は、倍精度浮動小数点データを格納可能な大きさを有する、倍精度浮動小数点データと単精度浮動小数点データとが格納されるレジスタを備えるプロセサにおいて、単精度浮動小数点データ処理が指定された場合、前記レジスタの上位半分に入力した単精度浮動小数点データを書き込むとともに、前記レジスタの下位半分にオールゼロを書き込む。
開示の単精度浮動小数点データの格納方式によれば、単精度浮動小数点データの処理を扱う場合でも倍精度小数点レジスタで扱うことが可能となるため、レジスタの依存関係検出回路として倍精度小数点レジスタの依存関係検出回路をそのまま利用することが可能となる。また、単精度浮動小数点データを代替単精度浮動小数点データとして扱うことで演算器入力レジスタへのデータ選択回路を大きく削減することができる。よって、プロセサ中のハードウェア量を低減することができ、これによりプロセサの複雑化を防ぐことができるため動作周波数を向上させることができる。
以下、図面を参照して、本発明の実施の形態について説明する。
まずはじめに、本発明の実施例を適用するプロセサについて説明する。
SPARC−V9における浮動小数点レジスタの構成については上述したが、本発明の実施例を適用するプロセサは、浮動小数点レジスタを更に拡張する。
図1に示すように、このプロセサでは、拡張前置命令を用いて拡張演算レジスタ(XAR)というレジスタを更新し、浮動小数点レジスタアドレスが示す領域を拡張する。つまり、拡張前置命令により浮動小数点レジスタにアクセスする命令を修飾し、浮動小数点レジスタの領域を拡張することになる。より詳細については後述するが、例えば拡張演算レジスタ(XAR)のうち3ビットを浮動小数点レジスタアドレスとして追加し、倍精度浮動小数点レジスタ(8バイト)を256本まで増やす構成となっている。
図1に示した浮動小数点レジスタ構造を備えるプロセサで、倍精度浮動小数点レジスタを%d0から%d510(偶数番号のみ指定可能)の256本まで指定できる一方で、単精度浮動小数点レジスタを%f0から%f255まで4バイトの単位で256本指定できるようにすると、ハードウェアとして拡張レジスタの依存関係を検出するための回路が非常に大きくなってしまう。
そこで図1に示した拡張された浮動小数点レジスタを備えるプロセサにおける単精度浮動小数点データ格納方式について、以下に説明する。尚、本発明の実施例として以下に説明するが、本発明はこれから説明する実施例に限定されることはなく、その要旨を逸脱しない範囲で様々な応用が可能であることはいうまでもない。つまり本発明の単精度浮動小数点データ格納方式は、実施例のプロセサ構造に限定されることなくどのような構造のプロセサであってもよい。
本実施例では、拡張演算レジスタ(XAR)により単精度浮動小数点命令が拡張された場合に、単精度浮動小数点データを倍精度浮動小数点データ長である8バイトレジスタの上位4バイトに配置し、下位4バイトにはオールゼロを配置してデスティネーションレジスタに書き込むように定義する。このような形式で単精度浮動小数点データを格納するのを代替単精度浮動小数点データと呼ぶことにする。代替単精度浮動小数点データのフォーマットを図2に示す。
それに対し、通常の単精度浮動小数点データ4バイトのみを浮動小数点レジスタに格納するものを通常単精度浮動小数点データと呼ぶことにする。通常単精度浮動小数点データのフォーマットを図3に示す。
このように本実施例では、単精度浮動小数点データを、代替単精度浮動小数点データ、つまり8バイトのデータとして格納可能なように構成する。これにより、従来からSPARC−V9で定義されている%d32から%d62までのレジスタや、更に拡張演算レジスタ(XAR)によりレジスタ拡張を指定された%d64から%d510までのレジスタを用いて単精度浮動小数点演算が可能となる。
また、拡張演算レジスタ(XAR)により単精度浮動小数点命令が修飾されたときには、%d32より小さいレジスタアドレスに対しても同様に8バイトの代替単精度浮動小数点データレジスタとして使用するように構成する。つまり%d0から%d30(8バイト長、偶数番のみ指定可)として上位4バイトに単精度データを格納し、下位4バイトにオールゼロを格納するように構成する。
%f0から%f31の4バイトレジスタ32本を用いる通常の単精度浮動小数点データで格納するのか、代替単精度浮動小数点データで格納するかは、次のように判断する。
まず、命令セットに拡張演算レジスタ(XAR)を更新するSXAR(Set XAR)命令という命令を定義する。
拡張演算レジスタ(XAR)は、図4に示す構成となっている。図4のVAL(バリッド)は、1ビット幅の値で、バリッドが立っている場合(VAL=1)に拡張演算レジスタが有効であることを意味する。RDは、拡張される命令のデスティネーションレジスタを指定するアドレスの拡張分の3ビットを格納する領域である。また、RS1〜RS3はそれぞれソースレジスタを指定するアドレスの拡張分の3ビットを格納するアドレス拡張領域である。この3ビットは、浮動小数点レジスタを256本に拡張するために既存の命令で不足する上位3ビットとなるものである。つまり拡張演算レジスタ(XAR)のVALのバリッドビッドが立っている時、拡張アドレスと浮動小数点命令のオペランドレジスタアドレス5ビットを用いて8バイト(倍精度)レジスタを256本まで指定できるようになっている。
このようなXARの構成において、上述のSXAR命令により、拡張演算レジスタ(XAR)のVAL(バリッドビット)がセットされている場合に、単精度浮動小数点処理命令が修飾(拡張)されていると判断することができ、またバリッドビットが立っていない場合には単精度浮動小数点処理命令が修飾されていないと判断することができる。
図5に、通常単精度浮動小数点データで格納するのか、代替単精度浮動小数点データで格納するのかを判断する処理のフローを示す。まず、S51で単精度浮動小数点命令をデコードする。S52で、拡張演算レジスタ(XAR)のバリッドビット(VAL)が有効か否かを判断する。S52で、VAL=1(YES)であれば浮動小数点レジスタが拡張されているとして代替単精度浮動小数点データとして扱い(S53)、S52でVAL=0(NO)であれば通常の単精度浮動小数点データとして扱う(S54)。
このように、拡張演算レジスタ(XAR)により指定可能になった拡張レジスタに関しては、単精度浮動小数点データの処理を扱う場合でも、8バイトデータ単位でのレジスタ依存関係を検出するための回路を用いることができる。つまり、従来の倍精度浮動小数点データのレジスタ依存関係検出回路を用いることができるため、4バイトデータ単位のレジスタ依存関係検出回路は不要となる。
また、より詳しくは後述するが、浮動小数点レジスタのアドレス生成や、レジスタの更新を4バイトにするか8バイトにするかなどの、通常単精度浮動小数点データ処理か代替単精度浮動小数点データ処理かの区別は命令デコード部が行うため、演算処理部、ロード処理部、ストア処理部は、通常単精度浮動小数点データか代替単精度浮動小数点データかの区別する必要がない。演算処理部、ロード処理部、ストア処理部については共通の回路で処理することが可能で、これらを区別するためのハードウェアの追加が不要である。
以下、本実施例のプロセサにおける単精度浮動小数点レジスタ演算処理、ロード命令処理、ストア命令処理について図を参照してより詳しく説明する。
まず、プロセサの構成を図6に示す。
プロセサ60は、1次命令キャッシュ61、2次キャッシュ/メモリ部62、命令デコード部63、レジスタリネーミングテーブル64、演算処理部65、アドレス生成部66、リネーミングレジスタ67、ロード処理部68、ストア処理部69、固定小数点レジスタ70、浮動小数点レジスタ71、1次データキャッシュ72、コミット制御部73、拡張演算レジスタXAR74を備える。
1次命令キャッシュ61、1次データキャッシュ72はキャッシュメモリであり、2次キャッシュ/メモリ62は通常のメモリまたは2次キャッシュメモリである。固定小数点レジスタ70は従来の構成であり、浮動小数点レジスタ71は拡張演算レジスタXAR74で拡張され、図1に示したような構成である。
命令デコード部63は命令のデコードを行う。レジスタリネーミングテーブル64は、ラッチで構成された回路で、レジスタの依存関係を検出する。演算処理部65は、演算処理をおこなう演算器等で構成される。アドレス生成部66はデコードされた命令から、アクセスするアドレスを生成する。リネーミングレジスタ67は演算処理部65で処理された結果を一時的に保持するレジスタである。ロード処理部68、ストア処理部69はロード命令またはストア命令をそれぞれ処理する回路である。コミット制御部73は、レジスタ更新、メモリ更新を制御する。また、拡張演算レジスタXAR74により単精度浮動小数点命令が拡張されたときには、代替単精度浮動小数点データとして8バイト長の単精度浮動小数点データを扱う。なお、代替単精度浮動小数点データの下位4バイトは、更新時にオールゼロとする。
例として、図7では、浮動小数点レジスタ%d0に代替単精度浮動小数点命令で書き込む場合と、%f0に通常単精度浮動小数点命令で書き込む場合について示す。浮動小数点レジスタ%d0(%f0、%f1)にあらかじめ%f0=X、%f1=Yが入っている状態で、単精度浮動小数点データZを書き込むとき、代替単精度浮動小数点命令で書き込むときは、%f0=Z、%f1=オールゼロになる。通常単精度浮動小数点命令で書き込むときは、%f0=Zに更新されるが、%f1は更新されず%f1=Yのままとなる。
さて、まず、浮動小数点レジスタに単精度浮動小数点データを書き込む通常単精度浮動小数点演算、ロード命令と、代替単精度浮動小数点演算、ロード命令について述べる。
図8に、単精度浮動小数点演算命令を処理する演算処理部のデータの流れを示す。図8に示すように、浮動小数点演算処理部65では、命令制御を行う命令デコード部63から命令オペコードを受け取り、命令オペコードがオペコードデコード84される。デコードの結果、単精度浮動小数点演算を指示された場合は、浮動小数点演算器81は入力レジスタ82から入力される入力データの上位4バイトのみを用いた演算を行い、下位4バイトは無視する。そして出力時には上位4バイトに演算結果を、下位4バイトにはゼロを出力し、演算出力レジスタ83に一旦格納し、次のサイクルでその8バイトをリネーミングレジスタ67に書き込む。
また、図9に単精度浮動小数点ロード命令を処理するロード処理部のデータの流れを示す。図9に示すように、メモリのロード処理を行う1次データキャッシュ72では、命令制御を行う命令デコード部63から4バイト長ロードを指示された時には、ロード出力レジスタ91の上位4バイトに対してキャッシュメモリのデータを、また下位4バイトにはゼロを一旦格納する。そして、次のサイクルで、合計8バイトのデータを、アドレス生成部66から指定されるアドレスに基づいて、ロード出力レジスタ91からリネーミングレジスタ67に書き込む。
命令デコード部63では、単精度浮動小数点命令が、拡張演算レジスタXAR74により修飾されているか否かを解読するが、図8に示した演算処理部65、および図9に示したロード処理部68に対しては通常単精度浮動小数点命令と代替単精度浮動小数点命令とで同一のオペコードを生成し、送出する。各処理部はこのオペコードを受け取り単精度浮動小数点処理を行うが、単精度浮動小数点演算処理および単精度浮動小数点ロード処理については、各処理部が図8および図9に示した処理を行っていれば、通常単精度浮動小数点処理と代替単精度浮動小数点処理とで区別して処理を行う必要はない。
通常単精度浮動小数点処理を行うか、代替単精度浮動小数点処理を行うかという制御は命令デコード部63で行う。
図10に通常単精度浮動小数点データつまり4バイト書き込みをする場合を、図11に代替単精度浮動小数点データつまり8バイト書き込みをする場合を示し、図を参照して説明する。
命令デコード部63は、浮動小数点レジスタの更新を行う通常単精度浮動小数点演算命令、あるいは通常単精度浮動小数点ロード命令の場合、レジスタ更新指示を発行するコミット制御部73に、4バイトで浮動小数点レジスタ71の書き込みを行うように指示する。それに対し、代替浮動小数点演算命令あるいは、代替浮動小数点ロード命令の場合(および倍精度浮動小数演算命令、倍精度浮動小数点ロード命令の場合)は、命令デコード部63はコミット制御部73に8バイトで浮動小数点レジスタ71の書き込みを行うように指示する。8バイトで書き込むという指示は、コミット制御部、レジスタファイル部ともに従来からの倍精度浮動小数点データを書き込む処理と同一のものである。
コミット制御部73では、これらの指示、つまり浮動小数点レジスタに対し、4バイト書き込みをするのか8バイト書き込みを行うかについて記録する1ビットを備える(図10および図11の「8バイト長ビット」)。この1ビットの情報に基づき、命令コミット時に、演算結果、もしくはロードした結果を格納するリネーミングレジスタ67の上位から指定されたレングスのデータを浮動小数点レジスタに書き込む。
図10のコミット制御部73の各要素を拡大した部分において、浮動小数点ライトビット=‘1’、8バイト長ビット=‘0’である。浮動小数点レジスタでは、書き込み先浮動小数点レジスタのアドレスが偶数の場合は、8バイトの浮動小数点レジスタの上位4バイトにリネーミングレジスタ67の上位4バイトのデータを書き込み、書き込み先浮動小数点レジスタのアドレスが奇数の場合は、8バイトの浮動小数点レジスタの下位4バイトにリネーミングレジスタ67の上位4バイトのデータを書き込む。
また、図11のコミット制御部73の各要素を拡大した部分において、浮動小数点ライトビット=‘1’、8バイト長ビット=’1’である。浮動小数点レジスタでは、書き込み先である8バイトの浮動小数点レジスタの上位4バイトにリネーミングレジスタ67の上位4バイトのデータを、8バイトの浮動小数点レジスタの下位4バイトにリネーミングレジスタ67の下位4バイトのデータを書き込む。
さて、次に、キャッシュメモリに単精度浮動小数点データを書き込む通常単精度浮動小数点ストア命令と、代替単精度浮動小数点ストア命令について説明する。
図12に単精度浮動小数点ストア命令を処理するストア処理部69のデータの流れを示す。ストア処理部69においても、通常単精度浮動小数点ストア命令か、代替単精度浮動小数点ストア命令かによって処理を区別することなく、共通の処理を行う。すなわち、単精度浮動小数点ストア命令に対しストア処理部は、浮動小数点レジスタ71からのストアデータの読み出しを行い、ストア対象となる4バイトデータを、ストア処理部69にある、ストア命令ごとに1つ割り当てられるストアバッファ121の上位4バイトにアライン
して書き込む。ストアデータの下位4バイトに関しては、キャッシュへ書き込む際に無視をするのでデータは何であってもよい。
メモリアドレス生成部75は、メモリアドレスを生成しストア処理部69に送る。
命令デコード部63では、キャッシュメモリ上に単精度浮動小数点データの書き込みを行う通常単精度小数点ストア命令と代替単精度小数点ストア命令ともに、キャッシュメモリに書き込むレングスを4バイトとしてデコードする。ストアバッファ121には、データをストアするアドレスを送出するとともに、このストアレングス情報(4バイト)を送出する。コミット制御部73からはストア命令のコミット時に、通常単精度小数点ストア命令と代替単精度小数点ストア命令で共通のストアコミット指示信号がストア処理部69に送出され、ストア処理部69はこれを契機にストアデータの上位4バイトをキャッシュメモリ(1次データキャッシュ72)に書き込む処理をする。このように単精度浮動小数点ストア命令を処理する場合、ストア処理部69、コミット制御部73では、通常単精度浮動小数点ストア命令と代替単精度浮動小数点ストア命令との区別をせずに同等の動作をする。通常単精度浮動小数点ストア命令か、代替単精度浮動小数点ストア命令かの差異は、読み出すレジスタアドレス生成の仕方にある。
次に、命令デコード部63におけるレジスタアドレス生成について説明する。レジスタアドレスの生成については、拡張演算レジスタ(XAR)により修飾されたすべての単精度浮動小数点命令(演算命令、ロード命令、ストア命令)で共通である。また命令デコード部63は、拡張演算レジスタXAR74により修飾された単精度浮動小数点命令についてのレジスタアドレスを生成するだけでなく、通常の単精度浮動小数点命令についてのレジスタアドレスも生成する。
図13に、SPARC−V9アーキテクチャにおける、レジスタアドレスの生成を説明する図を示す。図13は、オペコードのレジスタアドレスフィールドとレジスタアドレス番号の対応を示したもので、これに従ってレジスタアドレスが生成される。SPARC−V9アーキテクチャの場合は、単精度浮動小数点レジスタと倍精度浮動小数点レジスタでは、命令オペコードにある5ビットのレジスタアドレスフィールドが示すレジスタアドレスのビットアサインが異なる。通常単精度浮動小数点レジスタを用いる場合は、命令オペコードのレジスタアドレスフィールドと指示するレジスタ番号が一致し、0番から31番を指し示す。倍精度浮動小数点レジスタを用いる命令の場合は、レジスタアドレスフィールドのビット[0]をレジスタアドレスビット[5]に持ってきて、レジスタアドレスビット[0]は常に0にする。つまり、倍精度浮動小数点のレジスタアドレスの指示は偶数番号のみで指示でき、0番から62番までとなる。
図14に、代替単精度浮動小数点データを扱う場合のレジスタアドレスの生成を説明する図を示す。代替単精度浮動小数点データを扱うか否かは、図5に示したように拡張演算レジスタXAR74のバリッドビットが有効か否かで判断される。下位4バイトは更新時にオールゼロとする8バイトの代替単精度浮動小数点データを扱うときは、上述したように演算処理部65、ロード処理部68、ストア処理部69では、入力データや出力データは単精度浮動小数点データとして扱われる。しかしながら、命令オペコードのレジスタアドレスフィールドから物理レジスタアドレスに変換する場合には、倍精度浮動小数点レジスタの変換方式に従うようにする。つまり、代替単精度浮動小数点の場合、レジスタアドレスの指示は偶数番号のみで行う。図1に示したプロセサでは256本までレジスタ拡張を行っており、レジスタアドレスは0番から510番(偶数番号のみ)まで指示可能である。
命令デコード部63は、以上のように通常単精度浮動小数点データを扱う場合のレジスタアドレスを生成するとともに、代替単精度浮動小数点データを扱う場合のレジスタアド
レスを生成する。
以上のように本実施例のプロセサの、単精度浮動小数点演算命令、単精度浮動小数点ロード命令、単精度浮動小数点ストア命令の際の動作について説明した。
次に、命令間のデータ依存関係を検出する仕組みについて説明する。
レジスタリネーミングテーブルの構成を図15に示す。
アウトオブオーダ処理を行うプロセサでは、レジスタの依存関係を検出するためのレジスタリネーミングを行うが、浮動小数点レジスタの更新を行う通常単精度演算命令の場合、レジスタリネーミングを4バイト単位で行い、代替浮動小数点演算命令の場合は8バイト単位で行う必要がある。レジスタリネーミングには、各レジスタがライト保留状態か否かを示す1ビットと、リネームされた最新のリネーミングレジスタアドレスを保持するテーブルが必要になる。一般的にプロセサにおいてこのテーブルは高速に参照更新される必要があるので、命令デコード回路の近い場所にラッチ回路によって構成される。このラッチで構成されたテーブルの参照更新にかかる回路規模の削減は、プロセサの動作周波数に大きく貢献する。SPARC−V9アーキテクチャにおいては、%f0から%f31、つまり%d0から%d30に関して、4バイト長のレジスタに対するリネーミングレジスタ番号を持つ必要があり、%d0から%d30まで32個のレジスタについてリネーミングレジスタ番号を保持するテーブルが必要である。一方%d32から%d510までは、8バイト長のレジスタに対するリネーミングレジスタ番号を持つことになるので240個のレジスタについてリネーミングレジスタ番号を保持するテーブルになる。これは%d32から%d510までが単精度浮動小数点データを代替単精度浮動小数点データとして8バイト長で管理するからであり、仮に通常の4バイト長の単精度浮動小数点データで管理し、単精度浮動小数点レジスタは%f0から%f255であるように定義してしまうと、%f32から%f255までだけで、224個のリネーミングレジスタ番号を保持できるテーブルが必要になってしまう。
つまり、単精度浮動小数点データを代替単精度浮動小数点データとして扱う場合には、拡張されたレジスタ部分に単精度浮動小数点データを格納することが可能であるとともに、レジスタリネーミングテーブルにおいては倍精度浮動小数点レジスタの依存関係検出回路を用いることができるためハードウェアの追加が不要である。
また、単精度浮動小数点データを代替単精度浮動小数点データとして扱う場合には、演算器への入力データの選択回路も削減できる。一般的なプロセサでは、演算処理を早く実行開始するために、演算の入力データをレジスタからだけではなく、レジスタに書き込む前の演算器出力結果などからも得られるデータバイパス制御を行っている。
図16に4バイト単位でデータを管理するときの演算器へのデータバイパス回路図を、図17に8バイト単位でデータを管理するときの演算器へのデータバイパス回路図を示す。いずれも、演算器の3つある入力レジスタのうちの1つを拡大して表示し、入力するデータが浮動小数点レジスタ、リネーミングレジスタ、演算器出力結果、ロード出力結果のいずれかから選択される場合の構成図を示している。
8バイトの倍精度浮動小数点演算命令を実行するときは、8バイトのデータを入力データとして用いる必要がある。プログラムによっては、倍精度浮動小数点演算と単精度浮動小数点演算が混合するようなものがある。
仮に単精度浮動小数点データを4バイト長で管理する場合は、プログラムとして単精度浮動小数点レジスタ%f0、%f1を更新して、その直後に倍精度浮動小数点レジスタ%d0を読み出し可能にする必要がある。つまり、上位4バイトと下位4バイトのデータが
異なる場所(例えば、上位4バイトから演算器出力結果から得られて、下位4バイトは浮動小数点レジスタから得られるなど)から出力される場合にも、ハードウェアでデータバイパス制御を正しく行うためには、4バイトごとに入力データの選択を行う必要があり、それぞれに対してこの選択回路が必要になる。図16はこのことを示したものである。
一方8バイト長のデータで管理する場合は、図17に示すように、上位4バイトと下位4バイトのデータを別々に扱わないので、合わせて8バイトに関するデータバイパス処理を行えばよい。
このように、単精度浮動小数点データを代替単精度浮動小数点データとして扱うことで、演算器入力レジスタへのデータ選択回路を大きく削減することができる。
以上のように、本実施例の単精度浮動小数点データの格納方式によれば、単精度浮動小数点データの処理を扱う場合でも倍精度浮動小数点レジスタで扱うことが可能となる。これにより、レジスタの依存関係を検出するための回路として倍精度浮動小数点レジスタの依存関係検出回路を利用することが可能となる。これによりハードウェア回路の追加を抑えることが可能となる。
また、レジスタアドレス生成や、レジスタの更新を4バイト(単精度浮動小数点データ長)にするか8バイト(代替単精度浮動小数点データ長)にするかなどの、通常単精度浮動小数点データ処理か代替単精度浮動小数点データ処理かの区別は命令デコード部で行う。そして、演算処理部、ロード処理部、ストア処理部としては、通常の単精度浮動小数点データと代替単精度浮動小数点データの場合を区別することなく、全く共通の回路でこの2種類の命令を処理することが可能である。
また、単精度浮動小数点データを代替単精度浮動小数点データとして扱うことで、演算器入力レジスタへのデータ選択回路を大きく削減することができる。
以上のように本実施例の単精度浮動小数点レジスタの格納方式によれば、プロセサのハードウェア量を抑えることができる。ハードウェア回路が複雑化しないため、プロセサの動作周波数を向上させることができ、これによってプロセサの性能向上に貢献することができる。
また、浮動小数点ロード、ストアの処理における単精度浮動小数点データのメモリ上でのデータの保持は、通常単精度浮動小数点命令の場合も代替単精度浮動小数点命令の場合も4バイト単位で行い、プログラムの入力データ、出力データが既存の単精度浮動小数点データであるものも処理することが可能である。
以上、本発明の実施例について詳細に説明したが、本発明は上述した実施例に限定されるものではない。浮動小数点レジスタ領域が拡張されたプロセサに本実施例の単精度浮動小数点データの格納方式を適用することを説明したが、浮動小数点レジスタ領域を拡張したプロセサでなくても、いずれの構成のプロセサに適用してもかまわない。
このように本発明の単精度浮動小数点データの格納方式によれば、単精度浮動小数点データの処理を扱う場合でも8バイトの倍精度小数点レジスタで扱うことが可能となるため、レジスタの依存関係検出回路として倍精度小数点レジスタの依存関係検出回路をそのまま利用することが可能となる。よって依存関係検出回路のためのハードウェアの追加を抑えることが可能である。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
倍精度浮動小数点データを格納可能な大きさを有する、倍精度浮動小数点データと単精
度浮動小数点データとが格納されるレジスタを備えるプロセサにおいて、
単精度浮動小数点データが指定された場合、前記レジスタの上位半分に入力した単精度浮動小数点データを書き込むとともに、前記レジスタの下位半分にオールゼロを書き込むことを特徴とする単精度浮動小数点データ格納方式。
(付記2)
倍精度浮動小数点データを格納可能な大きさを有する、倍精度浮動小数点データと単精度浮動小数点データとが格納されるレジスタを備えるプロセサの単精度浮動小数点データ格納方法において、
単精度浮動小数点データ処理が指定され、且つ第一の処理が指定された場合、前記レジスタの上位半分に入力した単精度浮動小数点データを、前記レジスタの下位半分にオールゼロを書き込み、
単精度浮動小数点データ処理が指定され、且つ第二の処理が指定された場合、前記レジスタの上位半分に入力した単精度浮動小数点データを書き込むとともに、前記レジスタの下位半分には書き込みを行わない、
ことを特徴とする単精度浮動小数点データ格納方法。
(付記3)
更に、命令をデコードし、該命令のデコード結果に基づいて、前記レジスタへの書き込み処理を実行することを特徴とする付記2記載の単精度浮動小数点データ格納方法。
(付記4)
更に、前記レジスタへの書き込みを行う前に、前記第一の処理または前記第二の処理にそれぞれ対応するデータを一旦リネーミングレジスタに格納し、
前記第一の処理が指定された場合には、前記リネーミングレジスタのデータをそのまま書き込み、
前記第二の処理が指定された場合には、前記デコード結果に含まれる前記レジスタへの書き込み先アドレスが偶数の場合には、前記レジスタの上位半分に前記リネーミングレジスタの上位半分のデータを書き込み、前記レジスタへの書き込み先アドレスが奇数の場合には、前記レジスタの下位半分に前記リネーミングレジスタの上位半分のデータを書き込む、
ことを特徴とする付記3記載の単精度浮動小数点データ格納方法。
(付記5)
倍精度浮動小数点データと単精度浮動小数点データとを格納するレジスタと、
単精度浮動小数点データ処理が指定された場合、前記レジスタの上位半分に入力した単精度浮動小数点データを書き込むとともに、前記レジスタの下位半分にオールゼロを書き込む制御部と、
を備えることを特徴とするプロセサ。
(付記6)
倍精度浮動小数点データを格納可能な大きさを有する、倍精度浮動小数点データと単精度浮動小数点データとが格納されるレジスタと、
単精度浮動小数点データ処理が指定され、且つ第一の処理が指定された場合、前記レジスタの上位半分に入力した単精度浮動小数点データを、前記レジスタの下位半分にオールゼロを書き込む一方、単精度浮動小数点データ処理が指定され、且つ第二の処理が指定された場合、前記レジスタの上位半分に入力した単精度浮動小数点データを書き込むとともに、前記レジスタの下位半分には書き込みを行わない制御部と、
を備えることを特徴とするプロセサ。
(付記7)
更に、命令をデコードするデコーダを備え、
前記制御部は、前記デコーダによる命令デコード結果に基づいて、前記レジスタへの書き込み処理を実行することを特徴とする付記6記載のプロセサ。
(付記8)
更に、
前記レジスタへの書き込みを行う前に、前記第一の処理または前記第二の処理にそれぞれ対応するデータを一旦格納するリネーミングレジスタと、
前記デコーダがデコードした命令の制御信号および前記レジスタへの書き込み先アドレスをセットし、前記リネーミングレジスタに格納されたデータを前記レジスタへの格納をコミットするコミット制御部と、
を備え、
前記第一の処理が指定された場合には、前記リネーミングレジスタのデータをそのまま書き込み、
前記第二の処理が指定された場合に、前記コミット制御部にセットされたレジスタへの書き込み先アドレスが偶数の場合には、前記レジスタの上位半分に前記リネーミングレジスタの上位半分のデータを書き込み、前記レジスタへの書き込み先アドレスが奇数の場合には、前記レジスタの下位半分に前記リネーミングレジスタの上位半分のデータを書き込む、
ことを特徴とする付記6記載のプロセサ。
(付記9)
更に、
前記第一の処理または前記第二の処理を指定するとともに、該指定情報を保持する第二のレジスタを備えることを特徴とする付記6記載のプロセサ。
(付記10)
前記第二のレジスタは拡張演算レジスタで、該拡張演算レジスタが有効か否かで、前記第一の処理または前記第二の処理を区別することを特徴とする付記9記載のプロセサ。
(付記11)
更に、命令をデコードするデコーダを備え、
前記デコーダが単精度浮動小数点演算処理、単精度浮動小数点ロード・ストア処理を指示する命令をデコードするとき、前記第二のレジスタの指定に基づいて、読み出しまたは書き込みのレジスタアドレスを単精度浮動小数点データ単位で指示するか、倍精度浮動小数点データ単位で指示するかを使い分けることを特徴とする付記9記載のプロセサ。
(付記12)
更に、
命令をデコードするデコーダと、
演算処理を行う演算処理部と、
ロード処理を行うロード処理部と、
を備え、
前記デコーダは、単精度浮動小数点演算処理、単精度浮動小数点ロード処理を指示する命令をデコードするとき、前記第一の処理および前記第二の処理に対応して共通のオペコードを前記演算処理部および前記ロード処理部に送り、
前記演算処理部および前記ロード処理部は前記第一のレジスタの上位半分に結果を出力し、下位半分のデータをオールゼロで出力する、ことを特徴とする付記9記載のプロセサ。
(付記13)
更に、
命令をデコードするデコーダと
演算処理を行う演算処理部と、
ストア処理を行うストア処理部と、
を備え、
前記デコーダは、単精度浮動小数点演算処理、単精度浮動小数点ストア処理を指示する命令をデコードするとき、前記第一の処理および前記第二の処理に対応して共通のオペコードを前記演算処理部および前記ストア処理部に送り、
前記演算処理部および前記ストア処理部は前記第一のレジスタの上位半分の長さのデータだけを入力として演算処理、またはストア処理を行うことを特徴とする付記9記載のプ
ロセサ。
本実施例を適用する浮動小数点レジスタ拡張アーキテクチャを示す図である。 代替単精度浮動小数点データのフォーマットを示す図である。 通常単精度浮動小数点データのフォーマットを示す図である。 拡張演算レジスタ(XAR)の構成を示す図である。 通常単精度浮動小数点データで扱うか、代替単精度浮動小数点データで扱うかを判断する処理フローを示す図である。 プロセサの構成を示す図である。 代替単精度浮動小数点命令と通常単精度浮動小数点命令との差異を説明する図である。 単精度浮動小数点演算命令を処理する演算処理部のデータの流れを示す図である。 単精度浮動小数点ロード命令を処理するロード処理部のデータの流れを示す図である。 通常単精度浮動小数点データ処理におけるコミットの際の浮動小数点レジスタの更新処理を説明する図である。 代替単精度浮動小数点データ処理におけるコミットの際の浮動小数点レジスタの更新処理を説明する図である。 単精度浮動小数点ストア命令を処理するストア処理部のデータの流れを示す図である。 SPARC−V9アーキテクチャにおけるレジスタアドレスの生成を説明する図である。 代替単精度小数点データを扱う場合のレジスタアドレスの生成を説明する図である。 レジスタリネーミングテーブルの構成を示す図である。 4バイト単位でデータを管理するときの演算器へのデータバイパス回路図を示す。 8バイト単位でデータを管理するときの演算器へのデータバイパス回路図を示す。 SPARC−V9アーキテクチャの浮動小数点レジスタの構成を示す図である。
符号の説明
61 1次命令キャッシュ
62 2次キャッシュ/メモリ部
63 命令デコード部
64 レジスタリネーミングテーブル
65 演算処理部
66 アドレス生成部
67 リネーミングレジスタ
68 ロード処理部
69 ストア処理部
70 固定小数点レジスタ
71 浮動小数点レジスタ
72 1次データキャッシュ
73 コミット制御部
74 拡張演算レジスタ(XAR)
75 メモリアドレス生成部
81 浮動小数点演算器
82 入力レジスタ
83 演算出力レジスタ
84 オペコードデコード
91 ロード出力レジスタ
92 オペコードデコード
121 ストアバッファ

Claims (9)

  1. 所定の精度を有する単精度データ又は前記単精度データの倍の精度を有する倍精度データのいずれかを格納可能なデータレジスタと、
    前記単精度データ第一のデータ形式により前記データレジスタに書き込む場合、前記データレジスタの上位半分又は下位半分の一方に前記単精度データを書き込むとともに他方には所定値を書き込み、前記単精度データを第二のデータ形式により前記データレジスタに書き込む場合、前記データレジスタの上位半分又は下位半分の一方に前記単精度データを書き込むとともに他方には書き込みを行わない制御部を備えることを特徴とする演算処理装置
  2. 前記演算処理装置はさらに、
    命令をデコードするデコーダを備え、
    前記制御部は、
    前記デコーダによる命令のデコード結果に基づいて、前記単精度データを前記第一のデータ形式又は前記第二のデータ形式のいずれにより前記データレジスタに書き込むことを特徴とする請求項1に記載の演算処理装置
  3. 前記演算処理装置はさらに、
    前記第一のデータ形式又は前記第二のデータ形式のいずれにより前記データレジスタに書き込むかを指定するデータ形式指定情報を保持する拡張レジスタを備えることを特徴とする請求項1に記載の演算処理装置。
  4. 前記演算処理装置はさらに、
    命令をデコードするデコーダと、
    データを保持するキャッシュメモリを備え、
    前記デコーダが、単精度データに対する演算を前記第一のデータ形式により行う単精度演算命令、単精度データを前記第一のデータ形式により前記データレジスタにロードする単精度ロード命令又は前記データレジスタが前記第一のデータ形式により保持する単精度データを前記キャッシュメモリに保持させる単精度ストア命令のいずれかの命令をデコードする場合、前記いずれかの命令のオペコードに含まれるレジスタ指定情報と前記拡張レジスタに保持された前記レジスタ指定情報を拡張する拡張レジスタ指定情報とに基づいて、前記いずれかの命令がアクセスを行うデータレジスタを指定することを特徴とする請求項3記載の演算処理装置
  5. 前記演算処理装置はさらに、
    命令をデコードするデコーダと、
    演算命令を実行する演算処理部を有し、
    前記デコーダは、
    前記単精度データに対する演算を行う単精度演算命令を実行する場合、前記第一のデータ形式に対する単精度演算命令と前記第二のデータ形式に対する単精度演算命令との間で共通のオペコードを前記演算処理部に出力し、
    前記演算処理部は、
    前記デコーダが出力したオペコードに基づき、前記データレジスタの上位半分又は下位半分の一方に前記単精度演算命令の演算結果を出力するとともに、他方には所定値を出力することを特徴とする請求項1に記載の演算処理装置
  6. 前記演算処理装置はさらに、
    命令をデコードするデコーダと、
    ロード命令を実行するロード処理部を有し、
    前記デコーダは、
    前記単精度データを前記データレジスタにロードする単精度ロード命令をデコードする場合、前記第一のデータ形式に対する単精度演算命令と前記第二のデータ形式に対する単精度演算命令との間で共通のオペコードを前記ロード処理部に出力し
    前記ロード処理部は、
    前記デコーダが出力したオペコードに基づき、前記データレジスタの上位半分又は下位半分の一方に前記単精度データを出力するとともに、他方には所定値を出力することを特徴とする請求項1に記載の演算処理装置。
  7. 前記演算処理装置はさらに、
    命令をデコードするデコーダと、
    データを保持するキャッシュメモリと
    ストア命令を実行するストア処理部を有し、
    前記デコーダは、
    前記データレジスタが前記第一のデータ形式により保持する単精度データを前記キャッシュメモリに保持させる単精度ストア命令をデコードする場合、前記第一のデータ形式に対する単精度ストア命令と前記第二のデータ形式に対する単精度ストア命令との間で共通のオペコードを前記ストア処理部に出力し、
    前記ストア処理部は、
    前記デコーダが出力したオペコードに基づき、前記データレジスタの上位半分又は下位半分の一方に保持された前記単精度データのみを前記キャッシュメモリに出力することを特徴とする請求項1に記載の演算処理装置。
  8. 所定の精度を有する単精度データ又は前記単精度データの倍の精度を有する倍精度データのいずれかを格納可能なデータレジスタを有する演算処理装置の制御方法において、
    前記単精度データを第一のデータ形式により前記データレジスタに書き込む場合、前記演算処理装置が有する制御部が、前記データレジスタの上位半分又は下位半分の一方に前記単精度 データを書き込むとともに他方には所定値を書き込み、
    前記単精度データを第二のデータ形式により前記データレジスタに書き込む場合、前記制御部が、前記データレジスタの上位半分又は下位半分の一方に前記単精度データを書き込むとともに他方には書き込みを行わないことを特徴とする演算処理装置の制御方法。
  9. 前記演算処理装置の制御方法において、
    前記演算処理装置はさらに、データレジスタ間の依存関係を検出するリネーミングレジスタを有し、
    前記データレジスタに対する前記単精度データの書き込みを行う前に、前記単精度データを前記リネーミングレジスタに保持させ、
    前記単精度データを前記第一のデータ形式により前記データレジスタに書き込む場合、前記演算処理装置が有する制御部が、レジスタ指定情報で指定されるデータレジスタの上位半分又は下位半分の一方に前記単精度データを書き込むとともに他方には所定値を書き込み、
    前記単精度データを前記第二のデータ形式により前記データレジスタに書き込む場合かつ前記レジスタ指定情報が偶数である場合、前記制御部が、前記データレジスタの上位半分に前記リネーミングレジスタが保持する単精度データを書き込み、
    前記単精度データを前記第二のデータ形式により前記データレジスタに書き込む場合かつ前記レジスタ指定情報が奇数である場合、前記制御部が、前記データレジスタの下位半分に前記リネーミングレジスタが保持する単精度データを書き込むことを特徴とする請求項8記載の演算処理装置の制御方法。
JP2008073434A 2008-03-21 2008-03-21 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP5309636B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2008073434A JP5309636B2 (ja) 2008-03-21 2008-03-21 演算処理装置及び演算処理装置の制御方法
EP08168705A EP2104033B1 (en) 2008-03-21 2008-11-10 Single-precision floating-point data storing method and processor
US12/276,788 US8412761B2 (en) 2008-03-21 2008-11-24 Single precision floating-point data storing method and processor
CN200810178904.8A CN101539850B (zh) 2008-03-21 2008-11-27 单精度浮点数据存储方法和处理器
KR1020080120003A KR101026821B1 (ko) 2008-03-21 2008-11-28 단정밀도 부동 소수점 데이터의 저장 방법 및 프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008073434A JP5309636B2 (ja) 2008-03-21 2008-03-21 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2009230339A JP2009230339A (ja) 2009-10-08
JP5309636B2 true JP5309636B2 (ja) 2013-10-09

Family

ID=40122469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008073434A Expired - Fee Related JP5309636B2 (ja) 2008-03-21 2008-03-21 演算処理装置及び演算処理装置の制御方法

Country Status (5)

Country Link
US (1) US8412761B2 (ja)
EP (1) EP2104033B1 (ja)
JP (1) JP5309636B2 (ja)
KR (1) KR101026821B1 (ja)
CN (1) CN101539850B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5309636B2 (ja) * 2008-03-21 2013-10-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN101930355B (zh) * 2010-08-24 2013-07-24 中国航天科技集团公司第九研究院第七七一研究所 实现寄存器文件分组编址、读写控制方法的寄存器电路
CN101930356B (zh) * 2010-08-24 2013-03-20 中国航天科技集团公司第九研究院第七七一研究所 用于浮点协处理器的寄存器文件分组编址、读写控制方法
CN103984524B (zh) * 2014-05-15 2016-07-06 中国航天科技集团公司第九研究院第七七一研究所 一种面向risc处理器的三端口浮点寄存器文件
US20170322808A1 (en) * 2016-05-05 2017-11-09 Cirrus Logic International Semiconductor Ltd. Low-power processor with support for multiple precision modes
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10671497B2 (en) 2018-01-19 2020-06-02 International Business Machines Corporation Efficient and selective sparing of bits in memory systems
JP6604393B2 (ja) 2018-03-08 2019-11-13 日本電気株式会社 ベクトルプロセッサ、演算実行方法、プログラム
CN108304217B (zh) * 2018-03-09 2020-11-03 中国科学院计算技术研究所 将长位宽操作数指令转换为短位宽操作数指令的方法
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
US11093246B2 (en) 2019-09-06 2021-08-17 International Business Machines Corporation Banked slice-target register file for wide dataflow execution in a microprocessor
US11157276B2 (en) * 2019-09-06 2021-10-26 International Business Machines Corporation Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry
US11119774B2 (en) 2019-09-06 2021-09-14 International Business Machines Corporation Slice-target register file for microprocessor
US20240004664A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Split register list for renaming

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61138333A (ja) 1984-12-10 1986-06-25 Nec Corp 演算モジユ−ル
US5740093A (en) * 1995-12-20 1998-04-14 Intel Corporation 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility
US5778247A (en) * 1996-03-06 1998-07-07 Sun Microsystems, Inc. Multi-pipeline microprocessor with data precision mode indicator
US5784588A (en) * 1997-06-20 1998-07-21 Sun Microsystems, Inc. Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions
US5884070A (en) * 1997-06-25 1999-03-16 Sun Microsystems, Inc. Method for processing single precision arithmetic operations in system where two single precision registers are aliased to one double precision register
JP3526269B2 (ja) 2000-12-11 2004-05-10 株式会社東芝 ネットワーク間中継装置及び該中継装置における転送スケジューリング方法
JP4443100B2 (ja) 2002-07-31 2010-03-31 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム変換方法、これを用いたデータ処理装置及びプログラム
US7191316B2 (en) 2003-01-29 2007-03-13 Sun Microsystems, Inc. Method and a system for using same set of registers to handle both single and double precision floating point instructions in an instruction stream
US7418606B2 (en) 2003-09-18 2008-08-26 Nvidia Corporation High quality and high performance three-dimensional graphics architecture for portable handheld devices
US20070011222A1 (en) 2005-07-07 2007-01-11 Dance Sherman M Floating-point processor for processing single-precision numbers
JP5309636B2 (ja) * 2008-03-21 2013-10-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
KR20090101064A (ko) 2009-09-24
JP2009230339A (ja) 2009-10-08
US8412761B2 (en) 2013-04-02
CN101539850B (zh) 2015-04-01
KR101026821B1 (ko) 2011-04-04
CN101539850A (zh) 2009-09-23
EP2104033A1 (en) 2009-09-23
EP2104033B1 (en) 2011-07-06
US20090240757A1 (en) 2009-09-24

Similar Documents

Publication Publication Date Title
JP5309636B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP6807383B2 (ja) 転送プレフィックス命令
US8601239B2 (en) Extended register addressing using prefix instruction
JP5808348B2 (ja) マシン状態に基づいた命令の分割
JP6942298B2 (ja) ベクトル演算命令の例外条件処理
US6594754B1 (en) Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
JP2005202964A (ja) 割り込みをタイプ別に計数する方法、システムおよびプログラム
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
KR100317769B1 (ko) 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령
KR100322726B1 (ko) 번역 및 테스트를 위한 전문 밀리코드 명령
JP3983482B2 (ja) 高速ディスプレースメント付きpc相対分岐方式
CN111522586B (zh) 信息处理装置、非暂态计算机可读介质和信息处理方法
JP3630804B2 (ja) データ処理装置
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
CN112912843A (zh) 具有精确中断和/或重写的向量指令
US20140365751A1 (en) Operand generation in at least one processing pipeline
JP4533432B2 (ja) Tlb相関型分岐予測器及びその使用方法
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP5311008B2 (ja) 信号処理プロセッサ及び半導体装置
JP2569867B2 (ja) 実効アドレス先行計算型パイプラインマイクロプロセッサ
JP2000187583A (ja) プロセッサ
JPH0756760A (ja) リカバリ装置
JPH03186935A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130617

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5309636

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees