JP7487535B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP7487535B2
JP7487535B2 JP2020069952A JP2020069952A JP7487535B2 JP 7487535 B2 JP7487535 B2 JP 7487535B2 JP 2020069952 A JP2020069952 A JP 2020069952A JP 2020069952 A JP2020069952 A JP 2020069952A JP 7487535 B2 JP7487535 B2 JP 7487535B2
Authority
JP
Japan
Prior art keywords
register
instruction
fixed
decoder
read
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.)
Active
Application number
JP2020069952A
Other languages
English (en)
Other versions
JP2021166010A (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 JP2020069952A priority Critical patent/JP7487535B2/ja
Priority to US17/166,286 priority patent/US11314505B2/en
Publication of JP2021166010A publication Critical patent/JP2021166010A/ja
Application granted granted Critical
Publication of JP7487535B2 publication Critical patent/JP7487535B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30141Implementation provisions of register files, e.g. ports
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、演算処理装置に関する。
プロセッサにおいて、レジスタの値を読み出す必要がない命令についても、レジスタの値を読み出す必要がある命令と同様に、レジスタから値を読み出して演算が行なわれ、結果がレジスタに書き込まれる。例えば、即値#1をレジスタx1に書き込む命令「Mov x1, #1」については、実際には固定小数点レジスタからのデータの読み出しが行なわれなくてよい。しかしながら、このような命令は、他のadd等のレジスタを読み出す命令と同様の経路とするため、レジスタ読み出しのパイプラインと演算器のパイプラインとが経由され、結果がレジスタに書き込まれる。
特開平5-12009号公報
演算処理装置に備えられる演算器の数が少ないと、演算器がボトルネックとなってInstructions Per Clock(IPC)を上げることができない。一方、演算器の数を増やすと、回路量の観点からペナルティが大きくなるという課題がある。
1つの側面では、プロセッサの処理速度を向上させることを目的とする。
1つの側面では、演算処理装置は、実行しようとする命令がレジスタからのデータの読み出しを伴わない命令である場合に、即値を命令によって直接特定させるレジスタに書き込むデコーダと、前記デコーダが実行しようとする命令が前記命令によって直接特定させるレジスタとは別のレジスタからのデータの読み出しを伴う命令である場合に、前記別のレジスタからデータを読み出し、読み出したデータに基づく演算結果を前記命令によって直接特定させるレジスタに書き込む演算器と、を備える。
1つの側面では、プロセッサの処理速度を向上させることができる。
実施形態の一例における演算処理装置のハードウェア構成例を模式的に示すブロック図である。 図1に示した演算処理装置のソフトウェア構成例を模式的に示すブロック図である。 図1に示した演算処理装置における固定小数点レジスタの読み書き処理を説明するブロック図である。 図1に示した演算処理装置における固定小数点レジスタの書き込み処理を説明するブロック図である。 図1に示した演算処理装置における演算処理を説明するフローチャートである。 変形例としての演算処理装置における書き込みポートの判定を説明する図である。
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔A〕実施形態の一例
〔A-1〕システム構成例
図1は、実施形態の一例における演算処理装置1のハードウェア構成例を模式的に示すブロック図である。
演算処理装置1は、複数(図示する例では2つ)のCentral Processing Unit(CPU)11,複数(図示する例では2つ)のメモリ12及びインターコネクト制御部13を備える。
メモリ12は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。メモリ12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ12のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
インターコネクト制御部13は、外部装置との通信を可能にするためのインタフェースである。
CPU11は、例示的に、演算処理装置1全体の動作を制御する。演算処理装置1全体の動作を制御するための装置は、CPU11に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、演算処理装置1全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
図2は、図1に示した演算処理装置1のソフトウェア構成例を模式的に示すブロック図である。
図2に示すように、CPU11は、命令フェッチアドレス生成器111,分岐予測機構112,命令バッファ113,命令デコーダ114及びレジスタリネーミング部115として機能する。また、CPU11は、RSA116a,RSE116b,RSF116c,RSBR116d,CSE116e,オペランドアドレス生成器117,演算器118a,118b及びPC119として機能する。更に、CPU11は、一次命令キャッシュ101,二次命令キャッシュ102,一次データキャッシュ103,固定小数点レジスタ104及び浮動小数点レジスタ105として機能する。
なお、RSAはReservation Station for Address generationの略称であり、RSEはReservation Station for Executionの略称であり、RSFはReservation Station for Floating pointの略称である。また、RSBRはReservation Station for Branchの略称であり、CSEはCommit Stack Entryの略称であり、PCはProgram Counterの略称である。更に、固定小数点レジスタはGeneral Purpose Register(GPR)と表記されてもよく、浮動小数点レジスタはFloating Point Registers(FPR)と表記されてもよい。
命令フェッチアドレス生成器111は、命令フェッチアドレスを生成して、一次命令キャッシュ101,二次命令キャッシュ102又はメモリ12に格納する。
分岐予測機構112は、将来実行する命令列の分岐を予測する。
命令バッファ113は、プログラムの順番通りに一次命令キャッシュ101からフェッチされてきた命令を一旦格納する。
命令デコーダ114は、命令バッファ113に一旦格納された命令を解読する。命令デコーダ114は、固定小数点レジスタ104への命令の直接の書き込みかを判定するための判定回路114aを備える。
レジスタリネーミング部115は、演算結果を書き込む物理レジスタを決める。図2においては簡単のため、並列数は1としている。スーパースカラプロセッサで並列数が増やされてもよい。レジスタリネーミング部115は、物理レジスタマップ方式でもよく、update-buffer方式でもよい。
RSA116a,RSE116b,RSF116c及びRSBR116dは、リザベーションステーションと呼ばれるキュー構造のストレージである。レジスタリネーミング部115によって演算結果の書き込み先の物理レジスタが決まると、命令はリザベーションステーションに蓄積される。
RSA116aは、ロードストア命令のアドレス計算用のリザベーションステーションであり、オペランドアドレス生成器117,一次データキャッシュ103及び浮動小数点レジスタ105が後段に接続される。
RSE116bは、固定小数点計算用のリザベーションステーションであり、演算器118a及び固定小数点レジスタ104が後段に接続される。
RSF116cは、浮動小数点計算用のリザベーションステーションであり、演算器118b及び浮動小数点レジスタ105が後段に接続される。
RSBR116dは、分岐命令用のリザベーションステーションである。
命令デコーダ114で解読された命令はその順番通りに命令識別子(Instruction Identification;IID)が割り振られ、順番通りにCSE116eと呼ばれるCOMMIT処理をする回路に送られる。CSE116eは、デコードされた命令を命令の実行順番通りにためておくキュー構造のストレージと、キューの情報及び各処理パイプからの完了報告をもとにCOMMIT処理を行なう完了処理回路とに分けられる。デコーダで解読された命令はCSE116eのキューに貯められ、命令処理完了の報告を待つ。各々のリザベーションステーションでOut of Orderにより実行された命令は終了報告がCSE116eに送られる。そして、CSE116eの完了処理回路でプログラム本来の実行順序に従って順番に、キューに貯められた完了報告待ちの命令の中から終了報告に対応する命令が終了(Commit)され、資源の更新が行なわれる。
PC119は、CSE116eの後段及び命令フェッチアドレス生成器111の前段に接続され、CSE116eの演算結果に基づき、次に実行すべき命令が格納されているメモリ12上のアドレスを命令フェッチアドレス生成器111に通知する。
以下、物理レジスタマップ方式での固定小数点レジスタ104における処理の流れを示す。
物理レジスタマップ方式では、Decode cycleベースでのrenaming map tableが用意され、デコードサイクルベースで更新が行なわれる。固定小数点レジスタ104が32本のレジスタであれば、renaming map tableは32本のレジスタのそれぞれに割り振る物理レジスタの番号及び各レジスタのread-after-writeの順序関係が解決しているかのフラグを持つ。フラグはRead Interlock(RI)と称されてもよく、RIが“1”の際にはまだ解決していないことを示す。
固定小数点レジスタ104を読み出す際には演算が行なわれる。
図3は、図1に示した演算処理装置1における固定小数点レジスタ104の読み書き処理を説明するブロック図である。
固定小数点レジスタ104に書き込むような命令は、以下のような処理が行われる。
GPR1番のレジスタの情報を使って演算し、GPR0番に書き込む命令を想定する。例えば、「Add x0 , x1 ,#1」という命令であれば、x1(GPR1番)の値に即値#1を足して、x0(GPR0番)に書き込む。
まず、レジスタリネーミング部115は、演算結果を書き込む物理レジスタを決める。符号A1に示すように、レジスタ番号はfree-listと称される、空いている物理レジスタの番号が格納されているリストから順番に読み出される。また、順番に読み出された物理レジスタ番号は、各スロットのGPRを書き込む命令に順番に割り振られる。
符号A2に示すように、書き込み先の物理レジスタ番号が決まったら、書き込むレジスタGPR0番に割り振る物理レジスタ番号をrenaming map tableに登録し、RIを立てる。
符号A3に示すように、スーパースカラで並列処理する際、同一スロット内複数の命令がGPR0番に書き込むときは、最後の命令が選択される。同時に自演算が使うGPR番号(GPR1番)に格納されている物理レジスタ番号とRIが読み出される。
RIが立っていれば、その番号へのread-after-writeの順番の依存は解消されていない。符号A4に示すように、命令はRSE116dにエントリを作成し、read-after-writeの順序関係が解決したら、out-of-orderでRSE116bから命令が発行される。発行された命令は演算に用いる物理レジスタ番号は前述のように読み出してあるので、それを用いて固定小数点レジスタ104から情報が読み出され、演算が行なわれる。演算結果を書き込む物理レジスタ番号はレジスタリネーミング部115で決めてあったので、その番号に書き込みが行なわれる。
符号A5に示すように、固定小数点レジスタ104を読み出す必要がない命令についても、固定小数点レジスタ104を読み出すフローでは何もせず、即値をオペランドが用いられる。
そして、符号A6に示すように、演算が行なわれ、固定小数点レジスタ104に演算結果が書き込まれる。
図4は、図1に示した演算処理装置1における固定小数点レジスタ104の書き込み処理を説明するブロック図である。
図4に示す例では、固定小数点レジスタ104を読み出す必要がない命令について、図3に示した処理とは異なる処理が行なわれる。なお、固定小数点レジスタ104を読み出す必要があるかどうかは、例えば、命令オペコードをデコードすれことによって判定される。よって、命令デコーダ114の中に固定小数点レジスタ104への直接の書き込みが可能かを判定する判定回路114a(図2を参照)を備える。そして、直接の書き込みが可能だと判定されれば固定小数点レジスタ104に直接書き込みにいく動作が実施される。
符号B1に示すように、固定小数点レジスタ104を読み出す必要がない命令についても、free-listから空いている物理レジスタ番号を引いてくるのは図3に示した処理と同様である。
符号B2に示すように、renaming mapに物理レジスタ番号がセットされるが、RIはセットされない。また、固定小数点レジスタ104を読み出す必要がないので、renaming mapから物理レジスタ番号を取得しなくてよい。更に、固定小数点レジスタ104にエントリが作成されなくてよい。RIをセットしないので、後続のそのレジスタを読み出す命令は、固定小数点レジスタ104を読み出す必要がない命令の発行を待たずして実行することができる。よって、実質的なレイテンシが隠れ、0τの演算に見える。
このようにすると、レジスタファイルを読む必要がない命令についてレイテンシが実質的に短くなり、演算結果を使う後続の演算が早く実行できる。結果、プログラムを高速に処理できる。
符号B3に示すように、固定小数点レジスタ104に直接に書き込む情報は、例えば即値を書き込む命令なら命令オペコードによって作ることができる。例えば、「Mov x0 , #1」は、即値“1”をx0(GPR0番)に書きこむ。あるいは自分のPC119やPC+即値を書くような命令であれば、命令オペコードと自分のPC119から書き込むデータをデコードして作成することができる。この書き込みタイミングは、後続の命令の固定小数点レジスタ104への読み出しタイミングよりも遅いと、正しい情報を読み出すことができない。このため、書き込みタイミングは、後続の命令の固定小数点レジスタ104への読み出しタイミングよりも早くなる。
図4においては固定小数点レジスタ104への直接のデータの書き込み処理を説明したが、浮動小数点レジスタ105への直接のデータの書き込み処理も同様に実施できる。
すなわち、命令デコーダ114は、実行しようとする命令がレジスタからのデータの読み出しを伴わない即値命令(例えば、イミディエイト命令や即値オペランド)である場合に、即値をレジスタに書き込む。また、演算器118a,118bは、命令デコーダ114が実行しようとする命令がレジスタからのデータの読み出しを伴う命令である場合に、レジスタからデータを読み出し、読み出したデータに基づく演算結果をレジスタに書き込む。
また、命令デコーダ114は、レジスタの専用ポートを経由して、即値を前記レジスタに書き込む。
〔A-2〕動作例
図1に示した演算処理装置1における演算処理を、図5に示すフローチャート(ステップS1~S8)に従って説明する。
命令デコーダ114は、命令バッファ113から命令オペコードを受け取る(ステップS1)。
命令デコーダ114は、命令をデコードする(ステップS2)。
判定回路114aは、デコード結果を直接レジスタに書き込む制御が可能であるかを判定する(ステップS3)。
デコード結果を直接レジスタに書き込む制御が可能な場合には(ステップS3のYESルート参照)、命令デコーダ114は、書き込み値をデコードして作る(ステップS4)。
命令デコーダ114は、レジスタに値を書き込む(ステップS5)。そして、演算処理装置1における演算処理は終了する。
一方、デコード結果を直接レジスタに書き込む制御が可能でない場合には(ステップS3のNOルート参照)、命令デコーダ114はリザベーションステーションにエントリを作成し、リザベーションステーションはOut of orderで命令をレジスタに発行する(ステップS6)。
演算器118a,118bは、オペランドをレジスタから読み出す(ステップS7)。
演算器118a,118bは、演算を実行する(ステップS8)。
演算器118a,118bは、レジスタに演算結果の値を書き込み(ステップS5)、演算処理装置1における演算処理は終了する。
〔A-3〕効果
上述した実施形態の一例における演算処理装置1によれば、例えば、以下の作用効果を奏することができる。
命令デコーダ114は、実行しようとする命令がレジスタからのデータの読み出しを伴わない即値命令(例えば、イミディエイト命令や即値オペランド)である場合に、即値をレジスタに書き込む。また、演算器118a,118bは、命令デコーダ114が実行しようとする命令がレジスタからのデータの読み出しを伴う命令である場合に、レジスタからデータを読み出し、読み出したデータに基づく演算結果をレジスタに書き込む。
これにより、レジスタからのデータ読み出しが不要な命令について、レジスタに直接データを出力することで、プロセッサの処理速度を向上させることができる。また、レジスタの値を入力としないような命令について、演算器118a,118bを使用しない制御とすることで、演算器118a,118bのビジー率を下げることができる。更に、レジスタの値を入力としないような命令について、実質的なレイテンシを0τとすることで、CPU11を数珠つなぎとした際のIPCの低下を抑えることができる。
〔A-4〕変形例
上述した実施形態の一例では、固定小数点レジスタ104に命令デコーダ114からの書き込みのための専用のポートを備えることとした。一方、本変形例では命令デコーダ114からの書き込みのための専用のポートを固定小数点レジスタ104に増やさずに、固定小数点レジスタ104への書き込みを実現する。
レジスタリネーミングを行なうサイクルで、固定小数点レジスタ104を読み出す必要がない命令を想定する。このような命令において、上述した実施形態で示したような処理でRSE116bを経由せずに固定小数点レジスタ104に書き込みをかけるタイミングで固定小数点レジスタ104の書き込みポートが空いているかの判別を行なう。
RSE116bを経由せずに固定小数点レジスタ104に書き込みをかけるフローは固定サイクル数で行なえる。また、図3に示した処理で固定小数点レジスタ104への書き込みを行なう場合も、演算のレイテンシは決まっているため、複数サイクル前から固定サイクル数後に固定小数点レジスタ104への書き込みが行なわれるかは判別できる。
命令デコーダ114の内部に備えられる直接書き込み可能かの判定を行なう判定回路114aは、命令オペコードによる直接書き込み可能かの判定の他に、固定小数点レジスタ104への書き込みポートの空き具合の情報を受け取って書き込み可能かを判定する。
例えば、命令デコードのサイクルをDとし、D,DT,DT2,DT3のパイプラインのうちDT3サイクルで固定小数点レジスタ104に命令を書き込むことを想定する。また、演算のサイクルをXとし、X, U, UT, UT2のパイプラインのうちUT2でGPRに書き込むことを想定する。このとき、図6のように両パイプを重ねてみれば、DT3で書き込み時にポートが空いているかは、固定小数点レジスタ104への直接書き込み命令のDサイクルで前方の演算でXサイクルとなっている命令がいるかどうかを見ればよいことがわかる。判定回路114aは、Xサイクルに有効な命令がいる(X_VALID)を受け取り、それをもとに判定を行なう。
ポートが空いているときは、空いている書き込みポートを使って上述した実施形態で説明したような処理を行なう。ポートが空いていないときは、固定小数点レジスタ104を読み出す命令と同じようにRSE116bと演算器118aを経由した処理が行なわれる。
ポートが空いているという判定をした際、判定結果は、DT3まで伝搬し、UT2のライトポートの選択に用いられてよい。DT3での書き込みが有効であるとき、UT2には有効な命令はいないはずである。よって、UT2側を選択するのではなく、DT3のデータを選択し、固定小数点レジスタ104に書き込みが行なわれてよい。
すなわち、命令デコーダ114は、実行しようとする命令がレジスタからのデータの読み出しを伴わない命令であり、且つ、レジスタのポートに空きがある場合に、即値をレジスタに書き込む。また、演算器118a,118bは、命令デコーダ114が実行しようとする命令がレジスタからのデータの読み出しを伴う命令である場合、又は、レジスタのポートに空きがない場合に、レジスタからデータを読み出す。そして、演算器118a,118bは、読み出したデータに基づく演算結果をレジスタに書き込む。
これにより、書き込みポートを増やすことなく、上述した実施形態と同様にレジスタへの演算結果の書き込み処理を実現できる。
〔B〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
1 :演算処理装置
11 :CPU
101 :一次命令キャッシュ
102 :二次命令キャッシュ
103 :一次データキャッシュ
104 :固定小数点レジスタ
105 :浮動小数点レジスタ
111 :命令フェッチアドレス生成器
112 :分岐予測機構
113 :命令バッファ
114 :命令デコーダ
114a :判定回路
115 :レジスタリネーミング部
116a :RSA
116b :RSE
116c :RSF
116d :RSBR
116e :CSE
117 :オペランドアドレス生成器
118a,118b:演算器
119 :PC
12 :メモリ
13 :インターコネクト制御部

Claims (5)

  1. 実行しようとする命令がレジスタからのデータの読み出しを伴わない命令である場合に、即値を命令によって直接特定させるレジスタに書き込むデコーダと、
    前記デコーダが実行しようとする命令が前記命令によって直接特定させるレジスタとは別のレジスタからのデータの読み出しを伴う命令である場合に、前記別のレジスタからデータを読み出し、読み出したデータに基づく演算結果を前記命令によって直接特定させるレジスタに書き込む演算器と、
    を備える、
    演算処理装置。
  2. 実行しようとする命令がレジスタからのデータの読み出しを伴わない命令である場合に、前記レジスタのポートを経由して、即値を前記レジスタに書き込むデコーダと、
    前記デコーダが実行しようとする命令が前記レジスタからのデータの読み出しを伴う命令である場合に、前記レジスタからデータを読み出し、読み出したデータに基づく演算結果を前記レジスタに書き込む演算器と、
    を備え、
    前記ポートは、前記デコーダがアクセスするための専用のポートである、
    演算処理装置。
  3. 前記レジスタは、固定小数点レジスタである、
    請求項1又は2に記載の演算処理装置。
  4. 前記レジスタは、浮動小数点レジスタである、
    請求項1又は2に記載の演算処理装置
  5. 前記デコーダは、実行しようとする命令が前記レジスタからのデータの読み出しを伴わない命令であり、且つ、前記レジスタのポートに空きがある場合に、前記即値を前記レジスタに書き込み、
    前記演算器は、前記デコーダが実行しようとする命令が前記レジスタからのデータの読み出しを伴う命令である場合、又は、前記レジスタのポートに空きがない場合に、前記レジスタからデータを読み出し、読み出したデータに基づく演算結果を前記レジスタに書き込む、
    請求項1に記載の演算処理装置。
JP2020069952A 2020-04-08 2020-04-08 演算処理装置 Active JP7487535B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020069952A JP7487535B2 (ja) 2020-04-08 2020-04-08 演算処理装置
US17/166,286 US11314505B2 (en) 2020-04-08 2021-02-03 Arithmetic processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020069952A JP7487535B2 (ja) 2020-04-08 2020-04-08 演算処理装置

Publications (2)

Publication Number Publication Date
JP2021166010A JP2021166010A (ja) 2021-10-14
JP7487535B2 true JP7487535B2 (ja) 2024-05-21

Family

ID=78006228

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020069952A Active JP7487535B2 (ja) 2020-04-08 2020-04-08 演算処理装置

Country Status (2)

Country Link
US (1) US11314505B2 (ja)
JP (1) JP7487535B2 (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0512009A (ja) 1991-07-09 1993-01-22 Fujitsu Ltd デイジタル信号処理装置
US6188411B1 (en) * 1998-07-02 2001-02-13 Neomagic Corp. Closed-loop reading of index registers using wide read and narrow write for multi-threaded system
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US7574583B2 (en) * 2002-09-24 2009-08-11 Silicon Hive B.V. Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
ATE456829T1 (de) * 2004-09-22 2010-02-15 Koninkl Philips Electronics Nv Datenverarbeitungsschaltung mit funktionseinheiten mit gemeinsamen leseports
CN101216756B (zh) * 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种risc处理器装置及其模拟浮点栈操作的方法
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
US10007518B2 (en) * 2013-07-09 2018-06-26 Texas Instruments Incorporated Register file structures combining vector and scalar data with global and local accesses
US20150227366A1 (en) * 2014-02-12 2015-08-13 Imagination Technologies Limited Processor with granular add immediates capability & methods
US9921763B1 (en) * 2015-06-25 2018-03-20 Crossbar, Inc. Multi-bank non-volatile memory apparatus with high-speed bus
US10289842B2 (en) * 2015-11-12 2019-05-14 Samsung Electronics Co., Ltd. Method and apparatus for protecting kernel control-flow integrity using static binary instrumentation
GB2552153B (en) * 2016-07-08 2019-07-24 Advanced Risc Mach Ltd An apparatus and method for performing a rearrangement operation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
光野聡志ほか,Out-of-Order STRAIGHTソフトプロセッサの実装と評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2020年02月20日,第119巻 第429号,105~110ページ

Also Published As

Publication number Publication date
US11314505B2 (en) 2022-04-26
JP2021166010A (ja) 2021-10-14
US20210318868A1 (en) 2021-10-14

Similar Documents

Publication Publication Date Title
US7721071B2 (en) System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US9501286B2 (en) Microprocessor with ALU integrated into load unit
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
EP1296230B1 (en) Instruction issuing in the presence of load misses
US20070022277A1 (en) Method and system for an enhanced microprocessor
KR20010109354A (ko) 프로세서내의 기록 트래픽을 감소시키는 시스템 및 방법
CN113495758A (zh) 处理数据依赖性的方法及其微处理器以及数据处理系统
US5619730A (en) Pipelining device in a parallel processing apparatus and an instruction supplying method therefor
JP4243271B2 (ja) データ処理装置およびデータ処理方法
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
US6115730A (en) Reloadable floating point unit
KR20010077997A (ko) 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법
JP2001142701A (ja) プロセッサにおけるパイプライン制御用メカニズムおよび方法
JP7487535B2 (ja) 演算処理装置
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
JP7409208B2 (ja) 演算処理装置
US7565511B2 (en) Working register file entries with instruction based lifetime
JP2008299729A (ja) プロセッサ
JP5104862B2 (ja) 命令実行制御装置及び命令実行制御方法
CN113568663A (zh) 代码预取指令
JP2004508607A (ja) 例外ルーチンを有するプロセッサのレジスタライトトラフィックを減じる装置及び方法
US9256438B2 (en) Mechanism for increasing the effective capacity of the working register file
JP3199035B2 (ja) プロセッサ及びその実行制御方法
JP3795449B2 (ja) 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230912

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231106

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20231106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240111

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240422

R150 Certificate of patent or registration of utility model

Ref document number: 7487535

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150