IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-演算処理装置 図1
  • 特許-演算処理装置 図2
  • 特許-演算処理装置 図3
  • 特許-演算処理装置 図4
  • 特許-演算処理装置 図5
  • 特許-演算処理装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-13
(45)【発行日】2024-05-21
(54)【発明の名称】演算処理装置
(51)【国際特許分類】
   G06F 9/30 20180101AFI20240514BHJP
   G06F 9/315 20180101ALI20240514BHJP
【FI】
G06F9/30 310B
G06F9/315 M
【請求項の数】 5
(21)【出願番号】P 2020069952
(22)【出願日】2020-04-08
(65)【公開番号】P2021166010
(43)【公開日】2021-10-14
【審査請求日】2023-01-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】岡崎 亮平
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開平10-91432(JP,A)
【文献】光野聡志ほか,Out-of-Order STRAIGHTソフトプロセッサの実装と評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2020年02月20日,第119巻 第429号,105~110ページ
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30
G06F 9/315
(57)【特許請求の範囲】
【請求項1】
実行しようとする命令がレジスタからのデータの読み出しを伴わない命令である場合に、即値を命令によって直接特定させるレジスタに書き込むデコーダと、
前記デコーダが実行しようとする命令が前記命令によって直接特定させるレジスタとは別のレジスタからのデータの読み出しを伴う命令である場合に、前記別のレジスタからデータを読み出し、読み出したデータに基づく演算結果を前記命令によって直接特定させるレジスタに書き込む演算器と、
を備える、
演算処理装置。
【請求項2】
実行しようとする命令がレジスタからのデータの読み出しを伴わない命令である場合に、前記レジスタのポートを経由して、即値を前記レジスタに書き込むデコーダと、
前記デコーダが実行しようとする命令が前記レジスタからのデータの読み出しを伴う命令である場合に、前記レジスタからデータを読み出し、読み出したデータに基づく演算結果を前記レジスタに書き込む演算器と、
を備え、
前記ポートは、前記デコーダがアクセスするための専用のポートである、
演算処理装置。
【請求項3】
前記レジスタは、固定小数点レジスタである、
請求項1又は2に記載の演算処理装置。
【請求項4】
前記レジスタは、浮動小数点レジスタである、
請求項1又は2に記載の演算処理装置
【請求項5】
前記デコーダは、実行しようとする命令が前記レジスタからのデータの読み出しを伴わない命令であり、且つ、前記レジスタのポートに空きがある場合に、前記即値を前記レジスタに書き込み、
前記演算器は、前記デコーダが実行しようとする命令が前記レジスタからのデータの読み出しを伴う命令である場合、又は、前記レジスタのポートに空きがない場合に、前記レジスタからデータを読み出し、読み出したデータに基づく演算結果を前記レジスタに書き込む、
請求項1に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置に関する。
【背景技術】
【0002】
プロセッサにおいて、レジスタの値を読み出す必要がない命令についても、レジスタの値を読み出す必要がある命令と同様に、レジスタから値を読み出して演算が行なわれ、結果がレジスタに書き込まれる。例えば、即値#1をレジスタx1に書き込む命令「Mov x1, #1」については、実際には固定小数点レジスタからのデータの読み出しが行なわれなくてよい。しかしながら、このような命令は、他のadd等のレジスタを読み出す命令と同様の経路とするため、レジスタ読み出しのパイプラインと演算器のパイプラインとが経由され、結果がレジスタに書き込まれる。
【先行技術文献】
【特許文献】
【0003】
【文献】特開平5-12009号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
演算処理装置に備えられる演算器の数が少ないと、演算器がボトルネックとなってInstructions Per Clock(IPC)を上げることができない。一方、演算器の数を増やすと、回路量の観点からペナルティが大きくなるという課題がある。
【0005】
1つの側面では、プロセッサの処理速度を向上させることを目的とする。
【課題を解決するための手段】
【0006】
1つの側面では、演算処理装置は、実行しようとする命令がレジスタからのデータの読み出しを伴わない命令である場合に、即値を命令によって直接特定させるレジスタに書き込むデコーダと、前記デコーダが実行しようとする命令が前記命令によって直接特定させるレジスタとは別のレジスタからのデータの読み出しを伴う命令である場合に、前記別のレジスタからデータを読み出し、読み出したデータに基づく演算結果を前記命令によって直接特定させるレジスタに書き込む演算器と、を備える。
【発明の効果】
【0007】
1つの側面では、プロセッサの処理速度を向上させることができる。
【図面の簡単な説明】
【0008】
図1】実施形態の一例における演算処理装置のハードウェア構成例を模式的に示すブロック図である。
図2図1に示した演算処理装置のソフトウェア構成例を模式的に示すブロック図である。
図3図1に示した演算処理装置における固定小数点レジスタの読み書き処理を説明するブロック図である。
図4図1に示した演算処理装置における固定小数点レジスタの書き込み処理を説明するブロック図である。
図5図1に示した演算処理装置における演算処理を説明するフローチャートである。
図6】変形例としての演算処理装置における書き込みポートの判定を説明する図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0010】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0011】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0012】
〔A〕実施形態の一例
〔A-1〕システム構成例
図1は、実施形態の一例における演算処理装置1のハードウェア構成例を模式的に示すブロック図である。
【0013】
演算処理装置1は、複数(図示する例では2つ)のCentral Processing Unit(CPU)11,複数(図示する例では2つ)のメモリ12及びインターコネクト制御部13を備える。
【0014】
メモリ12は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。メモリ12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ12のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0015】
インターコネクト制御部13は、外部装置との通信を可能にするためのインタフェースである。
【0016】
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の略称である。
【0017】
図2は、図1に示した演算処理装置1のソフトウェア構成例を模式的に示すブロック図である。
【0018】
図2に示すように、CPU11は、命令フェッチアドレス生成器111,分岐予測機構112,命令バッファ113,命令デコーダ114及びレジスタリネーミング部115として機能する。また、CPU11は、RSA116a,RSE116b,RSF116c,RSBR116d,CSE116e,オペランドアドレス生成器117,演算器118a,118b及びPC119として機能する。更に、CPU11は、一次命令キャッシュ101,二次命令キャッシュ102,一次データキャッシュ103,固定小数点レジスタ104及び浮動小数点レジスタ105として機能する。
【0019】
なお、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)と表記されてもよい。
【0020】
命令フェッチアドレス生成器111は、命令フェッチアドレスを生成して、一次命令キャッシュ101,二次命令キャッシュ102又はメモリ12に格納する。
【0021】
分岐予測機構112は、将来実行する命令列の分岐を予測する。
【0022】
命令バッファ113は、プログラムの順番通りに一次命令キャッシュ101からフェッチされてきた命令を一旦格納する。
【0023】
命令デコーダ114は、命令バッファ113に一旦格納された命令を解読する。命令デコーダ114は、固定小数点レジスタ104への命令の直接の書き込みかを判定するための判定回路114aを備える。
【0024】
レジスタリネーミング部115は、演算結果を書き込む物理レジスタを決める。図2においては簡単のため、並列数は1としている。スーパースカラプロセッサで並列数が増やされてもよい。レジスタリネーミング部115は、物理レジスタマップ方式でもよく、update-buffer方式でもよい。
【0025】
RSA116a,RSE116b,RSF116c及びRSBR116dは、リザベーションステーションと呼ばれるキュー構造のストレージである。レジスタリネーミング部115によって演算結果の書き込み先の物理レジスタが決まると、命令はリザベーションステーションに蓄積される。
【0026】
RSA116aは、ロードストア命令のアドレス計算用のリザベーションステーションであり、オペランドアドレス生成器117,一次データキャッシュ103及び浮動小数点レジスタ105が後段に接続される。
【0027】
RSE116bは、固定小数点計算用のリザベーションステーションであり、演算器118a及び固定小数点レジスタ104が後段に接続される。
【0028】
RSF116cは、浮動小数点計算用のリザベーションステーションであり、演算器118b及び浮動小数点レジスタ105が後段に接続される。
【0029】
RSBR116dは、分岐命令用のリザベーションステーションである。
【0030】
命令デコーダ114で解読された命令はその順番通りに命令識別子(Instruction Identification;IID)が割り振られ、順番通りにCSE116eと呼ばれるCOMMIT処理をする回路に送られる。CSE116eは、デコードされた命令を命令の実行順番通りにためておくキュー構造のストレージと、キューの情報及び各処理パイプからの完了報告をもとにCOMMIT処理を行なう完了処理回路とに分けられる。デコーダで解読された命令はCSE116eのキューに貯められ、命令処理完了の報告を待つ。各々のリザベーションステーションでOut of Orderにより実行された命令は終了報告がCSE116eに送られる。そして、CSE116eの完了処理回路でプログラム本来の実行順序に従って順番に、キューに貯められた完了報告待ちの命令の中から終了報告に対応する命令が終了(Commit)され、資源の更新が行なわれる。
【0031】
PC119は、CSE116eの後段及び命令フェッチアドレス生成器111の前段に接続され、CSE116eの演算結果に基づき、次に実行すべき命令が格納されているメモリ12上のアドレスを命令フェッチアドレス生成器111に通知する。
【0032】
以下、物理レジスタマップ方式での固定小数点レジスタ104における処理の流れを示す。
【0033】
物理レジスタマップ方式では、Decode cycleベースでのrenaming map tableが用意され、デコードサイクルベースで更新が行なわれる。固定小数点レジスタ104が32本のレジスタであれば、renaming map tableは32本のレジスタのそれぞれに割り振る物理レジスタの番号及び各レジスタのread-after-writeの順序関係が解決しているかのフラグを持つ。フラグはRead Interlock(RI)と称されてもよく、RIが“1”の際にはまだ解決していないことを示す。
【0034】
固定小数点レジスタ104を読み出す際には演算が行なわれる。
【0035】
図3は、図1に示した演算処理装置1における固定小数点レジスタ104の読み書き処理を説明するブロック図である。
【0036】
固定小数点レジスタ104に書き込むような命令は、以下のような処理が行われる。
【0037】
GPR1番のレジスタの情報を使って演算し、GPR0番に書き込む命令を想定する。例えば、「Add x0 , x1 ,#1」という命令であれば、x1(GPR1番)の値に即値#1を足して、x0(GPR0番)に書き込む。
【0038】
まず、レジスタリネーミング部115は、演算結果を書き込む物理レジスタを決める。符号A1に示すように、レジスタ番号はfree-listと称される、空いている物理レジスタの番号が格納されているリストから順番に読み出される。また、順番に読み出された物理レジスタ番号は、各スロットのGPRを書き込む命令に順番に割り振られる。
【0039】
符号A2に示すように、書き込み先の物理レジスタ番号が決まったら、書き込むレジスタGPR0番に割り振る物理レジスタ番号をrenaming map tableに登録し、RIを立てる。
【0040】
符号A3に示すように、スーパースカラで並列処理する際、同一スロット内複数の命令がGPR0番に書き込むときは、最後の命令が選択される。同時に自演算が使うGPR番号(GPR1番)に格納されている物理レジスタ番号とRIが読み出される。
【0041】
RIが立っていれば、その番号へのread-after-writeの順番の依存は解消されていない。符号A4に示すように、命令はRSE116dにエントリを作成し、read-after-writeの順序関係が解決したら、out-of-orderでRSE116bから命令が発行される。発行された命令は演算に用いる物理レジスタ番号は前述のように読み出してあるので、それを用いて固定小数点レジスタ104から情報が読み出され、演算が行なわれる。演算結果を書き込む物理レジスタ番号はレジスタリネーミング部115で決めてあったので、その番号に書き込みが行なわれる。
【0042】
符号A5に示すように、固定小数点レジスタ104を読み出す必要がない命令についても、固定小数点レジスタ104を読み出すフローでは何もせず、即値をオペランドが用いられる。
【0043】
そして、符号A6に示すように、演算が行なわれ、固定小数点レジスタ104に演算結果が書き込まれる。
【0044】
図4は、図1に示した演算処理装置1における固定小数点レジスタ104の書き込み処理を説明するブロック図である。
【0045】
図4に示す例では、固定小数点レジスタ104を読み出す必要がない命令について、図3に示した処理とは異なる処理が行なわれる。なお、固定小数点レジスタ104を読み出す必要があるかどうかは、例えば、命令オペコードをデコードすれことによって判定される。よって、命令デコーダ114の中に固定小数点レジスタ104への直接の書き込みが可能かを判定する判定回路114a(図2を参照)を備える。そして、直接の書き込みが可能だと判定されれば固定小数点レジスタ104に直接書き込みにいく動作が実施される。
【0046】
符号B1に示すように、固定小数点レジスタ104を読み出す必要がない命令についても、free-listから空いている物理レジスタ番号を引いてくるのは図3に示した処理と同様である。
【0047】
符号B2に示すように、renaming mapに物理レジスタ番号がセットされるが、RIはセットされない。また、固定小数点レジスタ104を読み出す必要がないので、renaming mapから物理レジスタ番号を取得しなくてよい。更に、固定小数点レジスタ104にエントリが作成されなくてよい。RIをセットしないので、後続のそのレジスタを読み出す命令は、固定小数点レジスタ104を読み出す必要がない命令の発行を待たずして実行することができる。よって、実質的なレイテンシが隠れ、0τの演算に見える。
【0048】
このようにすると、レジスタファイルを読む必要がない命令についてレイテンシが実質的に短くなり、演算結果を使う後続の演算が早く実行できる。結果、プログラムを高速に処理できる。
【0049】
符号B3に示すように、固定小数点レジスタ104に直接に書き込む情報は、例えば即値を書き込む命令なら命令オペコードによって作ることができる。例えば、「Mov x0 , #1」は、即値“1”をx0(GPR0番)に書きこむ。あるいは自分のPC119やPC+即値を書くような命令であれば、命令オペコードと自分のPC119から書き込むデータをデコードして作成することができる。この書き込みタイミングは、後続の命令の固定小数点レジスタ104への読み出しタイミングよりも遅いと、正しい情報を読み出すことができない。このため、書き込みタイミングは、後続の命令の固定小数点レジスタ104への読み出しタイミングよりも早くなる。
【0050】
図4においては固定小数点レジスタ104への直接のデータの書き込み処理を説明したが、浮動小数点レジスタ105への直接のデータの書き込み処理も同様に実施できる。
【0051】
すなわち、命令デコーダ114は、実行しようとする命令がレジスタからのデータの読み出しを伴わない即値命令(例えば、イミディエイト命令や即値オペランド)である場合に、即値をレジスタに書き込む。また、演算器118a,118bは、命令デコーダ114が実行しようとする命令がレジスタからのデータの読み出しを伴う命令である場合に、レジスタからデータを読み出し、読み出したデータに基づく演算結果をレジスタに書き込む。
【0052】
また、命令デコーダ114は、レジスタの専用ポートを経由して、即値を前記レジスタに書き込む。
【0053】
〔A-2〕動作例
図1に示した演算処理装置1における演算処理を、図5に示すフローチャート(ステップS1~S8)に従って説明する。
【0054】
命令デコーダ114は、命令バッファ113から命令オペコードを受け取る(ステップS1)。
【0055】
命令デコーダ114は、命令をデコードする(ステップS2)。
【0056】
判定回路114aは、デコード結果を直接レジスタに書き込む制御が可能であるかを判定する(ステップS3)。
【0057】
デコード結果を直接レジスタに書き込む制御が可能な場合には(ステップS3のYESルート参照)、命令デコーダ114は、書き込み値をデコードして作る(ステップS4)。
【0058】
命令デコーダ114は、レジスタに値を書き込む(ステップS5)。そして、演算処理装置1における演算処理は終了する。
【0059】
一方、デコード結果を直接レジスタに書き込む制御が可能でない場合には(ステップS3のNOルート参照)、命令デコーダ114はリザベーションステーションにエントリを作成し、リザベーションステーションはOut of orderで命令をレジスタに発行する(ステップS6)。
【0060】
演算器118a,118bは、オペランドをレジスタから読み出す(ステップS7)。
【0061】
演算器118a,118bは、演算を実行する(ステップS8)。
【0062】
演算器118a,118bは、レジスタに演算結果の値を書き込み(ステップS5)、演算処理装置1における演算処理は終了する。
【0063】
〔A-3〕効果
上述した実施形態の一例における演算処理装置1によれば、例えば、以下の作用効果を奏することができる。
【0064】
命令デコーダ114は、実行しようとする命令がレジスタからのデータの読み出しを伴わない即値命令(例えば、イミディエイト命令や即値オペランド)である場合に、即値をレジスタに書き込む。また、演算器118a,118bは、命令デコーダ114が実行しようとする命令がレジスタからのデータの読み出しを伴う命令である場合に、レジスタからデータを読み出し、読み出したデータに基づく演算結果をレジスタに書き込む。
【0065】
これにより、レジスタからのデータ読み出しが不要な命令について、レジスタに直接データを出力することで、プロセッサの処理速度を向上させることができる。また、レジスタの値を入力としないような命令について、演算器118a,118bを使用しない制御とすることで、演算器118a,118bのビジー率を下げることができる。更に、レジスタの値を入力としないような命令について、実質的なレイテンシを0τとすることで、CPU11を数珠つなぎとした際のIPCの低下を抑えることができる。
【0066】
〔A-4〕変形例
上述した実施形態の一例では、固定小数点レジスタ104に命令デコーダ114からの書き込みのための専用のポートを備えることとした。一方、本変形例では命令デコーダ114からの書き込みのための専用のポートを固定小数点レジスタ104に増やさずに、固定小数点レジスタ104への書き込みを実現する。
【0067】
レジスタリネーミングを行なうサイクルで、固定小数点レジスタ104を読み出す必要がない命令を想定する。このような命令において、上述した実施形態で示したような処理でRSE116bを経由せずに固定小数点レジスタ104に書き込みをかけるタイミングで固定小数点レジスタ104の書き込みポートが空いているかの判別を行なう。
【0068】
RSE116bを経由せずに固定小数点レジスタ104に書き込みをかけるフローは固定サイクル数で行なえる。また、図3に示した処理で固定小数点レジスタ104への書き込みを行なう場合も、演算のレイテンシは決まっているため、複数サイクル前から固定サイクル数後に固定小数点レジスタ104への書き込みが行なわれるかは判別できる。
【0069】
命令デコーダ114の内部に備えられる直接書き込み可能かの判定を行なう判定回路114aは、命令オペコードによる直接書き込み可能かの判定の他に、固定小数点レジスタ104への書き込みポートの空き具合の情報を受け取って書き込み可能かを判定する。
【0070】
例えば、命令デコードのサイクルをDとし、D,DT,DT2,DT3のパイプラインのうちDT3サイクルで固定小数点レジスタ104に命令を書き込むことを想定する。また、演算のサイクルをXとし、X, U, UT, UT2のパイプラインのうちUT2でGPRに書き込むことを想定する。このとき、図6のように両パイプを重ねてみれば、DT3で書き込み時にポートが空いているかは、固定小数点レジスタ104への直接書き込み命令のDサイクルで前方の演算でXサイクルとなっている命令がいるかどうかを見ればよいことがわかる。判定回路114aは、Xサイクルに有効な命令がいる(X_VALID)を受け取り、それをもとに判定を行なう。
【0071】
ポートが空いているときは、空いている書き込みポートを使って上述した実施形態で説明したような処理を行なう。ポートが空いていないときは、固定小数点レジスタ104を読み出す命令と同じようにRSE116bと演算器118aを経由した処理が行なわれる。
【0072】
ポートが空いているという判定をした際、判定結果は、DT3まで伝搬し、UT2のライトポートの選択に用いられてよい。DT3での書き込みが有効であるとき、UT2には有効な命令はいないはずである。よって、UT2側を選択するのではなく、DT3のデータを選択し、固定小数点レジスタ104に書き込みが行なわれてよい。
【0073】
すなわち、命令デコーダ114は、実行しようとする命令がレジスタからのデータの読み出しを伴わない命令であり、且つ、レジスタのポートに空きがある場合に、即値をレジスタに書き込む。また、演算器118a,118bは、命令デコーダ114が実行しようとする命令がレジスタからのデータの読み出しを伴う命令である場合、又は、レジスタのポートに空きがない場合に、レジスタからデータを読み出す。そして、演算器118a,118bは、読み出したデータに基づく演算結果をレジスタに書き込む。
【0074】
これにより、書き込みポートを増やすことなく、上述した実施形態と同様にレジスタへの演算結果の書き込み処理を実現できる。
【0075】
〔B〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【符号の説明】
【0076】
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 :インターコネクト制御部
図1
図2
図3
図4
図5
図6