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

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

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

<>
  • 特許-演算処理装置 図1
  • 特許-演算処理装置 図2
  • 特許-演算処理装置 図3
  • 特許-演算処理装置 図4
  • 特許-演算処理装置 図5
  • 特許-演算処理装置 図6
  • 特許-演算処理装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-25
(45)【発行日】2024-01-09
(54)【発明の名称】演算処理装置
(51)【国際特許分類】
   G06F 9/30 20180101AFI20231226BHJP
【FI】
G06F9/30 310C
【請求項の数】 1
(21)【出願番号】P 2020071046
(22)【出願日】2020-04-10
(65)【公開番号】P2021168036
(43)【公開日】2021-10-21
【審査請求日】2023-01-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】岡崎 亮平
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2002-259118(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30
(57)【特許請求の範囲】
【請求項1】
単一のサイクルで命令を処理する第1のデコーダと、
複数のサイクルで命令を処理する第2のデコーダと、
処理対象の命令が特定の命令であり、且つ、処理中の前方命令が存在しない場合には、前記第1のデコーダに前記処理対象の命令を処理させる一方、前記処理対象の命令が前記特定の命令でなく、又は、処理中の前方命令が存在する場合には、前記第2のデコーダに前記処理対象の命令を処理させる判定を行なう判定器と、
を備え
前記判定器は、入力された命令オペコードに基づき、前記特定の命令の判定を行なう
演算処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置に関する。
【背景技術】
【0002】
命令のデコードを行なう際、どのような命令であっても決まったサイクル数で処理が行なわれることがある。また、Complex Instruction Set Computer(CISC)のような複雑な命令体系の命令セットアーキテクチャの命令をデコードするには、複数サイクルでのデコード処理が行なわれることがある。
【0003】
例えば、マイクロオペ分解制御において、複雑な一命令を複数の単純な命令に分解するというデコード処理を行なう場合には、単一サイクルでは処理しきれないため、複数サイクルをかけて命令デコードが行なわれる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開昭64-25240号公報
【文献】特開平1-320540号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
命令デコーダのレイテンシが伸びると、命令フェッチから命令完了(別言すれば、コミット)までの総パイプライン段数が伸びてしまう。これは、分岐予測ミスのペナルティが伸びることを意味している。
【0006】
分岐予測ミスのペナルティが増えると、プロセッサのInstructions Per Clock(IPC)が下がり、性能が下がってしまう。
【0007】
対処の方式として、低レイテンシで少ない種類の命令をデコード処理可能な命令デコーダと、長レイテンシで全命令をデコード処理可能な命令デコーダとが用意される。通常であれば長レイテンシの命令デコーダのデコード結果が採用される。また、低レイテンシの命令デコーダで処理できる命令しか存在しない命令列であることがわかったら、低レイテンシの命令デコーダを切り替えるという方式も考えられる。
【0008】
しかしながら、低レイテンシの命令デコーダで処理できる命令と処理できない命令とが入り混じったような命令列については、命令デコーダのパイプライン動作を維持しながら動的に動作を切り替えられないおそれがある。
【0009】
1つの側面では、命令デコーダのレイテンシ増加を抑えることを目的とする。
【課題を解決するための手段】
【0010】
1つの側面では、演算処理装置は、単一のサイクルで命令を処理する第1のデコーダと、複数のサイクルで命令を処理する第2のデコーダと、処理対象の命令が特定の命令であり、且つ、処理中の前方命令が存在しない場合には、前記第1のデコーダに前記処理対象の命令を処理させる一方、前記処理対象の命令が前記特定の命令でなく、又は、処理中の前方命令が存在する場合には、前記第2のデコーダに前記処理対象の命令を処理させる判定を行なう判定器と、を備え、前記判定器は、入力された命令オペコードに基づき、前記特定の命令の判定を行なう
【発明の効果】
【0011】
1つの側面では、命令デコーダのレイテンシ増加を抑えることができる。
【図面の簡単な説明】
【0012】
図1】実施形態の一例における演算処理装置のハードウェア構成例を模式的に示すブロック図である。
図2図1に示した演算処理装置のソフトウェア構成例を模式的に示すブロック図である。
図3図2に示した命令デコーダの構成例を模式的に示すブロック図である。
図4図3に示したsimple enable判定器による対象命令の判定処理を説明する図である。
図5図2に示した命令デコーダのパイプラインを例示するテーブルである。
図6図3に示したsimple enable判定器の論理回路を例示する図である。
図7図1に示した演算処理装置における対象命令の判定処理を説明するフローチャートである。
【発明を実施するための形態】
【0013】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0014】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0015】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0016】
〔A〕実施形態の一例
〔A-1〕システム構成例
図1は、実施形態の一例における演算処理装置1のハードウェア構成例を模式的に示すブロック図である。
【0017】
演算処理装置1は、複数(図示する例では2つ)のCentral Processing Unit(CPU)11,複数(図示する例では2つ)のメモリ12及びインターコネクト制御部13を備える。
【0018】
メモリ12は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。メモリ12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ12のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0019】
インターコネクト制御部13は、外部装置との通信を可能にするためのインタフェースである。
【0020】
図2は、図1に示した演算処理装置1のソフトウェア構成例を模式的に示すブロック図である。
【0021】
図2に示すように、CPU11は、命令フェッチアドレス生成器111,分岐予測機構112,命令バッファ113,命令デコーダ114及びレジスタリネーミング部115として機能する。また、CPU11は、RSA116a,RSE116b,RSF116c,RSBR116d,CSE116e,オペランドアドレス生成器117,演算器118a,118b及びPC119として機能する。更に、CPU11は、一次命令キャッシュ101,二次命令キャッシュ102,一次データキャッシュ103,固定小数点レジスタ104,浮動小数点レジスタ105,固定小数点更新バッファ106及び浮動小数点更新バッファ107として機能する。
【0022】
なお、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)と表記されてもよい。
【0023】
命令フェッチアドレス生成器111は、命令フェッチアドレスを生成して、一次命令キャッシュ101,二次命令キャッシュ102又はメモリ12に格納する。
【0024】
分岐予測機構112は、将来実行する命令列の分岐を予測する。
【0025】
命令バッファ113は、プログラムの順番通りに一次命令キャッシュ101からフェッチされてきた命令を一旦格納する。
【0026】
命令デコーダ114は、命令バッファ113に一旦格納された命令を解読する。
【0027】
レジスタリネーミング部115は、演算結果を書き込む物理レジスタを決める。
【0028】
RSA116a,RSE116b,RSF116c及びRSBR116dは、リザベーションステーションと呼ばれるキュー構造のストレージである。レジスタリネーミング部115によって演算結果の書き込み先の物理レジスタが決まると、命令はリザベーションステーションに蓄積される。
【0029】
RSA116aは、ロードストア命令のアドレス計算用のリザベーションステーションであり、オペランドアドレス生成器117,一次データキャッシュ103及び浮動小数点レジスタ105が後段に接続される。
【0030】
RSE116bは、固定小数点計算用のリザベーションステーションであり、演算器118a,固定小数点更新バッファ106及び固定小数点レジスタ104が後段に接続される。
【0031】
RSF116cは、浮動小数点計算用のリザベーションステーションであり、演算器118b,浮動小数点更新バッファ107及び浮動小数点レジスタ105が後段に接続される。
【0032】
RSBR116dは、分岐命令用のリザベーションステーションである。
【0033】
命令デコーダ114で解読された命令はその順番通りに命令識別子(Instruction Identification;IID)が割り振られ、順番通りにCSE116eと呼ばれるCOMMIT処理をする回路に送られる。CSE116eは、デコードされた命令を命令の実行順番通りにためておくキュー構造のストレージと、キューの情報及び各処理パイプからの完了報告をもとにCOMMIT処理を行なう完了処理回路とに分けられる。デコーダで解読された命令はCSE116eのキューに貯められ、命令処理完了の報告を待つ。各々のリザベーションステーションでOut of Orderにより実行された命令は終了報告がCSE116eに送られる。そして、CSE116eの完了処理回路でプログラム本来の実行順序に従って順番に、キューに貯められた完了報告待ちの命令の中から終了報告に対応する命令が終了(Commit)され、資源の更新が行なわれる。
【0034】
PC119は、CSE116eの後段及び命令フェッチアドレス生成器111の前段に接続され、CSE116eの演算結果に基づき、次に実行すべき命令が格納されているメモリ12上のアドレスを命令フェッチアドレス生成器111に通知する。
【0035】
図3は、図2に示した命令デコーダ114の構成例を模式的に示すブロック図である。
【0036】
図示する例では、スーパースカラプロセッサのデコード並列数は4とする。命令デコーダ114は命令デコーダcomplexと命令デコーダsimpleとに分けられる。命令デコーダcomplexは、例えばマイクロオペ分解などの複雑な命令デコードを行なうことができる。全ての命令のデコードを行なうことができるが、デコードレイテンシは命令デコーダsimpleよりも長い。図示する例においては、命令デコーダcomplex は、+2サイクルかけてデコードが行なわれるものとする。命令デコーダsimpleは簡単な命令しかデコードできないが、その分1サイクルで命令をデコードすることができる。
【0037】
命令デコードがスタートすると、命令デコーダsimpleと命令デコーダcomplex 1stとの両方に命令オペコードが渡され、デコードが始められる。命令デコーダcomplex 1stは、命令デコーダcomplexが3サイクルかけてデコードを行なう際の1サイクル目の処理を示す。2サイクル目の処理はcomplex 2ndで表され、3サイクル目の処理はcomplex 3rdで表される。
【0038】
命令デコーダsimpleでは、命令デコーダsimpleでデコードできる命令であるかの判定がまず行なわれる。デコードできる命令であるという判定がなされると、simpleというフラグが“1“に設定される。
【0039】
同一サイクルで、全てのスロットのsimple enable =1で、命令デコーダcomplexに一つもデコード中の命令がいなく(別言すれば、all invalid)、且つ、Decode endのFFに命令を入れることができる際、simple enable判定器114aは、Simple decode enableというフラグを”1”にして出力する。
【0040】
All invalidを見るのは、命令デコーダcomplexに命令がいるとき、そちらのほうが命令順で先の命令であるため、追い抜かないようにするためである。
【0041】
Simple decode enable =“1”であるとき、decode startのFFから命令デコーダcomplexの初段のFFへの命令移動は行なわれない。代わりに、decode startのFFからdecode endのFFに直接命令が移動する。
【0042】
各スロットの各サイクルはvalidというフラグを持ち、これが“1”であると有効な命令であることを示す。命令の移動は、validの移動でもある。
【0043】
Decode endのFFへ入力される命令は命令デコーダsimpleの出力と命令デコーダcomplexの出力とのいずれかを選択したものであり、Simple decode enable =“1”であれば命令デコーダsimple側が選択される。出力の選択には、例えば、multiplexer(MUX)回路が使われてよい。
【0044】
Simple decode enable=“1”の際、命令デコーダcomplexのcomplex 1stのサイクルへのvalidの移動を抑止することで、命令の移動が抑止される。
【0045】
上記のようにすれば、命令デコーダcomplexに命令が存在しないとき、命令デコーダsimpleを通じて、単純な命令は短いレイテンシでデコードすることができる。また、命令デコーダsimpleで処理できない命令と混ざった命令列でも、命令デコーダcomplexとsimple enable判定器114aとによる調停によって、命令の処理順番を正しく維持しながら、命令デコードをパイプライン処理できる。
【0046】
また、命令デコーダsimpleで処理できる命令のみの命令列であれば、decode endから命令を発行できない状態とならなければ、常に短いレイテンシで命令をデコードできる。
【0047】
図4は、図3に示したsimple enable判定器114aによる対象命令の判定処理を説明する図である。
【0048】
命令デコーダsimpleによる処理の対象かどうかの判定は、命令オペコードを入力として一意に判定できる。すなわち、図4に示すように、対象命令の一覧テーブルを予め定義しておき、その一覧テーブルに該当する命令かどうかのチェックを行なえばよい。
【0049】
一般的には、add等のシンプルな命令はデコードも低レイテンシで行なえるため、命令デコーダsimpleによる処理の対象となる。一方で、複雑な処理を行ない複数フローに分ける必要がある命令は、デコードも長レイテンシで行なうこととなり、命令デコーダsimpleによる処理の対象とならない。
【0050】
命令デコーダsimpleによる処理の対象である場合、通常レイテンシの命令デコーダ114でデコード処理中の命令がいないかどうかが判定される。発行順で前の命令であっても、通常レイテンシの命令デコーダ114の方がレイテンシが長いため、デコードが終わっていない可能性がある。
【0051】
命令デコードはin-orderで行なわれるため、デコード処理中の命令がないことが確認される。これらの判断は、低レイテンシデコード(別言すれば、命令デコーダsimple)と通常レイテンシデコード(別言すれば、命令デコーダcomplex)からの報告に基づき、simple enable判定器114aによって実施される。
【0052】
デコード処理中の命令がない場合には、並列して実行させていた通常レイテンシの命令デコードをキャンセルさせる。また、低レイテンシの命令デコーダsimpleのデコード結果を用いて、デコードが完了される。
【0053】
低レイテンシのデコードの対象でないか、又は、通常レイテンシのデコードに前方命令が存在する場合は、低レイテンシのデコード処理によるデコード結果を破棄して、命令デコーダcomplexのデコード結果を待ち、出力結果が得られる。
【0054】
すなわち、命令デコーダsimpleは、単一のサイクルで命令を処理する第1のデコーダの一例である。また、命令デコーダcomplexは、複数のサイクルで命令を処理する第2のデコーダの一例である。そして、simple enable判定器114aは、処理対象の命令が特定の命令であり、且つ、処理中の前方命令が存在しない場合には、命令デコーダsimpleに処理対象の命令を処理させる判定を行なう。また、simple enable判定器114aは、処理対象の命令が前記特定の命令でなく、又は、処理中の前方命令が存在する場合には、命令デコーダcomplexに処理対象の命令を処理させる判定を行なう。
【0055】
simple enable判定器114aは、入力された命令オペコードに基づき、特定の命令の判定を行なってよい。
【0056】
図5は、図2に示した命令デコーダ114のパイプラインを例示するテーブルである。
【0057】
各パイプラインステージの名前をE,PD1,PD2,PD3,Dとする。
【0058】
Eは命令バッファ113から命令をデコーダに渡すサイクルであり、デコーダsimple, complexともに共通である。PD1サイクルで各々がデコードをし、simple側がsimple enable判定器114aに命令デコーダsimpleで処理できる命令かを報告する。また、complex側はPD2,PD3にvalidな命令がいるかどうかを確認し、simple enable判定器114aに報告する。これらの情報から、simple enable判定器114aは、Simple decode enableを判定し、信号をPD1サイクルで出す。
【0059】
図6は、図3に示したsimple enable判定器114aの論理回路を例示する図である。
【0060】
simple enable判定器114aは、各スロット(Slot0-3)に対応する命令デコーダsimpleから取得された対象命令か否かを示す情報と、Pd2, Pd3の各サイクルに命令が存在するかの情報とを入力とする。そして、simple enable判定器114aは、Slot0-3のsimpleが全て1であり、かつPd2, Pd3のvalid=offであれば、Simple decode enableを有効にする。
【0061】
〔A-2〕動作例
図1に示した演算処理装置1における対象命令の判定処理を、図7に示すフローチャート(ステップS1~S6)に従って説明する。
【0062】
命令デコーダ114は、命令バッファ113から命令オペコードを受け取り、命令でコードをスタートさせる(ステップS1)。
【0063】
simple enable判定器114aは、命令が低レイテンシデコードの対象命令であるかを判定する(ステップS2)。
【0064】
命令が低レイテンシデコードの対象命令でない場合には(ステップS2のNOルート参照)、処理はステップS6へ進む。
【0065】
一方、命令が低レイテンシデコードの対象命令である場合には(ステップS2のYESルート参照)、simple enable判定器114aは、通常レイテンシの命令デコーダcomplexで処理中の前方命令があるかを判定する(ステップS3)。
【0066】
通常レイテンシの命令デコーダcomplexで処理中の前方命令がある場合には(ステップS3のYESルート参照)、処理はステップS6へ進む。
【0067】
通常レイテンシの命令デコーダcomplexで処理中の前方命令がない場合には(ステップS3のNOルート参照)、命令デコーダ114は、低レイテンシの命令デコーダsimpleのデコード結果をアウトプットとすることを決定する。そして、命令デコーダ114は、通常レイテンシの命令デコーダcomplexのデコードをキャンセルさせる(ステップS4)。
【0068】
命令デコーダ114は、デコード結果をアウトプットして(ステップS5)、対象命令の判定処理は終了する。
【0069】
ステップS2において命令が低レイテンシデコードの対象命令でない場合(ステップS2のNOルート参照)、又は、ステップS3において通常レイテンシの命令デコーダcomplexで処理中の前方命令がある場合には(ステップS3のYESルート参照)、上述したように処理はステップS6へ進む。命令デコーダ114は、通常レイテンシの命令デコーダcomplexのデコード結果をアウトプットとすることを決定する(ステップS6)。そして、処理はステップS5へ進む。
【0070】
〔A-3〕効果
上述した実施形態の一例における演算処理装置1によれば、例えば、以下の作用効果を奏することができる。
【0071】
命令デコーダsimpleは、単一のサイクルで命令を処理する。また、命令デコーダcomplexは、複数のサイクルで命令を処理する。そして、simple enable判定器114aは、処理対象の命令が特定の命令であり、且つ、処理中の前方命令が存在しない場合には、命令デコーダsimpleに処理対象の命令を処理させる判定を行なう。また、simple enable判定器114aは、処理対象の命令が前記特定の命令でなく、又は、処理中の前方命令が存在する場合には、命令デコーダcomplexに処理対象の命令を処理させる判定を行なう。
【0072】
これにより、簡単な命令をなるべく低レイテンシの命令デコーダ114に実行させることで、命令デコーダ114のレイテンシ増加を抑えることができる。そして、総パイプライン段数を短くし、実質的な分岐予測ミスペナルティを削減できる。
【0073】
simple enable判定器114aは、入力された命令オペコードに基づき、特定の命令の判定を行なう。これにより、add等のシンプルな特定の命令を容易に判別でき、命令デコーダsimpleの処理対象候補とすることができる。
【0074】
〔B〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【符号の説明】
【0075】
1 :演算処理装置
11 :CPU
101 :一次命令キャッシュ
102 :二次命令キャッシュ
103 :一次データキャッシュ
104 :固定小数点レジスタ
105 :浮動小数点レジスタ
106 :固定小数点更新バッファ
107 :浮動小数点更新バッファ
111 :命令フェッチアドレス生成器
112 :分岐予測機構
113 :命令バッファ
114 :命令デコーダ
114a :simple enable判定器
115 :レジスタリネーミング部
116a :RSA
116b :RSE
116c :RSF
116d :RSBR
116e :CSE
117 :オペランドアドレス生成器
118a,118b:演算器
119 :PC
12 :メモリ
13 :インターコネクト制御部
図1
図2
図3
図4
図5
図6
図7