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

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

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

<>
  • 特開-演算回路及び演算処理方法 図1
  • 特開-演算回路及び演算処理方法 図2
  • 特開-演算回路及び演算処理方法 図3
  • 特開-演算回路及び演算処理方法 図4
  • 特開-演算回路及び演算処理方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024077885
(43)【公開日】2024-06-10
(54)【発明の名称】演算回路及び演算処理方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240603BHJP
   G06F 9/38 20180101ALI20240603BHJP
【FI】
G06F9/50 150D
G06F9/38 370X
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022190099
(22)【出願日】2022-11-29
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】小田嶋 哲哉
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013DD05
(57)【要約】
【課題】プロセッサの演算回路全体の実行性能を向上させる。
【解決手段】プロセッサ11の演算回路であって、レジスタ116の使用率とリザベーションステーション114の使用率とリオーダバッファ117の使用率とロードバッファ118の使用率と演算器115の使用率とメモリユニット119の使用率との少なくともいずれかが閾値以下となった場合に、プロセッサ11で実行される各スレッドのリソース占有時間を計算し、計算したリソース占有時間が長い上位N個(Nは自然数)のスレッドを、使用率が閾値以下となったレジスタ116とリザベーションステーション114とリオーダバッファ117とロードバッファ118と演算器115とメモリユニット119との少なくともいずれかに対応するコアに、マイグレーションする指示を発行する観測部111を備える。
【選択図】図2
【特許請求の範囲】
【請求項1】
レジスタとリザベーションステーションとリオーダバッファとロードバッファと演算器とメモリユニットとを備えるプロセッサの演算回路であって、
前記レジスタの使用率と前記リザベーションステーションの使用率と前記リオーダバッファの使用率と前記ロードバッファの使用率と前記演算器の使用率と前記メモリユニットの使用率との少なくともいずれかが閾値以下となった場合に、前記プロセッサで実行される各スレッドのリソース占有時間を計算し、
計算した前記リソース占有時間が長い上位N個(Nは自然数)のスレッドを、使用率が前記閾値以下となった前記レジスタと前記リザベーションステーションと前記リオーダバッファと前記ロードバッファと前記演算器と前記メモリユニットとの少なくともいずれかに対応するコアに、マイグレーションする指示を発行する、
観測部を備える、演算回路。
【請求項2】
前記プロセッサは、Simultaneous Multi Threading(SMT)機能を有する、
請求項1に記載の演算回路。
【請求項3】
前記リソース占有時間は、現在のクロック数からスレッドの投入時のクロック数を減算することにより計算される、
請求項1又は2に記載の演算回路。
【請求項4】
レジスタとリザベーションステーションとリオーダバッファとロードバッファと演算器とメモリユニットとを備えるプロセッサにおける演算処理方法であって、
前記レジスタの使用率と前記リザベーションステーションの使用率と前記リオーダバッファの使用率と前記ロードバッファの使用率と前記演算器の使用率と前記メモリユニットの使用率との少なくともいずれかが閾値以下となった場合に、前記プロセッサで実行される各スレッドのリソース占有時間を計算し、
計算した前記リソース占有時間が長い上位N個(Nは自然数)のスレッドを、使用率が前記閾値以下となった前記レジスタと前記リザベーションステーションと前記リオーダバッファと前記ロードバッファと前記演算器と前記メモリユニットとの少なくともいずれかに対応するコアに、マイグレーションする指示を発行する、
処理をコンピュータが実行する、演算処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算回路及び演算処理方法に関する。
【背景技術】
【0002】
近年のCentral Processing Unit(CPU)の命令パイプラインは、Out-of-Order(OoO)の実行によって依存関係のない命令を並行して実行できるため、従来のin-order方式に比べて高い効率を発揮している。
【0003】
OoO方式では、命令がフェッチされ最終的にコミットされるまでは演算器やメモリユニットへの投入は順不同であるが、コミットで命令発行順に整列され、使用していたハードウェアリソースが開放される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2017-174194号公報
【特許文献2】米国公開公報第2019/0265777号
【発明の概要】
【発明が解決しようとする課題】
【0005】
データの依存関係により命令の連鎖が長い場合、コミットまでの時間が長くなり、使用するハードウェアリソースが多くなることで、あるリソースが枯渇すると後続の命令が投入できず命令パイプラインの効率が低下してしまうおそれがある。
【0006】
特に、Simultaneous Multi Threading(SMT)機能を有するプロセッサでは、複数のスレッドが1つのコアを共有するため、ハードウェアリソースの枯渇の可能性がより高くなる傾向にある。
【0007】
1つの側面では、プロセッサの演算回路全体の実行性能を向上させることを目的とする。
【課題を解決するための手段】
【0008】
1つの側面では、演算回路は、レジスタとリザベーションステーションとリオーダバッファとロードバッファと演算器とメモリユニットとを備えるプロセッサの演算回路であって、前記レジスタの使用率と前記リザベーションステーションの使用率と前記リオーダバッファの使用率と前記ロードバッファの使用率と前記演算器の使用率と前記メモリユニットの使用率との少なくともいずれかが閾値以下となった場合に、前記プロセッサで実行される各スレッドのリソース占有時間を計算し、計算した前記リソース占有時間が長い上位N個(Nは自然数)のスレッドを、使用率が前記閾値以下となった前記レジスタと前記リザベーションステーションと前記リオーダバッファと前記ロードバッファと前記演算器と前記メモリユニットとの少なくともいずれかに対応するコアに、マイグレーションする指示を発行する観測部を備える。
【発明の効果】
【0009】
1つの側面では、プロセッサの演算回路全体の実行性能を向上させることができる。
【図面の簡単な説明】
【0010】
図1】実施形態における情報処理装置のハードウェア構成例を模式的に示すブロック図である。
図2図1に示したCPUのハードウェア構成例を模式的に示すブロック図である。
図3】実施形態におけるスレッド管理情報を例示するテーブルである。
図4】実施形態における使用率情報を例示するテーブルである。
図5】実施形態におけるマイグレーション処理を説明するフローチャートである。
【発明を実施するための形態】
【0011】
〔A〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0012】
図1は、実施形態における情報処理装置1のハードウェア構成例を模式的に示すブロック図である。
【0013】
図1に示すように、情報処理装置1は、マイグレーション装置の一例であり、CPU(Central Processing Unit)11,メモリ部12,表示制御部13,記憶装置14,入力Interface(IF)15,外部記録媒体処理部16及び通信IF17を備える。
【0014】
メモリ部12は、記憶部の一例であり、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)などである。メモリ部12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ部12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ部12のRAMは、一時記録メモリあるいはワーキングメモリとして利用されてよい。
【0015】
表示制御部13は、表示装置131と接続され、表示装置131を制御する。表示装置131は、液晶ディスプレイやOrganic Light-Emitting Diode(OLED)ディスプレイ,Cathode Ray Tube(CRT),電子ペーパーディスプレイ等であり、オペレータ等に対する各種情報を表示する。表示装置131は、入力装置と組み合わされたものでもよく、例えば、タッチパネルでもよい。表示装置131は、情報処理装置1のユーザに対する種々の情報を表示する。
【0016】
記憶装置14は、高IO性能の記憶装置であり、例えば、Dynamic Random Access Memory(DRAM)やSSD(Solid State Drive),Storage Class Memory(SCM),HDD(Hard Disk Drive)が用いられてよい。
【0017】
入力IF15は、マウス151やキーボード152等の入力装置と接続され、マウス151やキーボード152等の入力装置を制御してよい。マウス151やキーボード152は、入力装置の一例であり、これらの入力装置を介して、オペレータが各種の入力操作を行う。
【0018】
外部記録媒体処理部16は、記録媒体160が装着可能に構成される。外部記録媒体処理部16は、記録媒体160が装着された状態において、記録媒体160に記録されている情報を読み取り可能に構成される。本例では、記録媒体160は、可搬性を有する。例えば、記録媒体160は、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。
【0019】
通信IF17は、外部装置との通信を可能にするためのインタフェースである。
【0020】
CPU11は、プロセッサの一例であり、種々の制御や演算を行う処理装置である。CPU11は、メモリ部12に読み込まれたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。なお、CPU11は、複数のCPUを含むマルチプロセッサであってもよいし、複数のCPUコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0021】
図2は、図1に示したCPU11のハードウェア構成例を模式的に示すブロック図である。
【0022】
図2に示すように、CPU11は、演算回路の一例であり、観測部111,記録装置112,命令キュー113,リザベーションステーション114,演算器115,レジスタ116,リオーダバッファ117,ロードバッファ118及びメモリユニット119としてのアーキテクチャを備える。
【0023】
なお、CPU11は、複数の演算器115及びメモリユニット119を備えてもよく、複数種類のレジスタ116を備えてもよい。
【0024】
命令キュー113,リザベーションステーション114,演算器115,レジスタ116,リオーダバッファ117,ロードバッファ118及びメモリユニット119は、OoO方式による命令実行を行う。
【0025】
記録装置112は、スレッド管理情報101(図3を用いて後述)及び使用率情報102(図4を用いて後述)を記憶する。
【0026】
観測部111は、リザベーションステーション114,演算器115,レジスタ116,リオーダバッファ117,ロードバッファ118及びメモリユニット119の使用状況を観測する。
【0027】
観測部111は、SMTを有するマルチコアプロセッサにおいて、各スレッドのハードウェアリソース専有時間、コアごとのハードウェアリソースの使用率及び演算器115・メモリユニット119の使用率を観測する。そして、観測部111は、動的にスレッドを別のコアにマイグレーションさせることをOSに指示することで、すべてのコアの使用率を平準化する。
【0028】
観測部111は、スレッドごとのハードウェアリソース使用数や専有時間、コアのハードウェアリソース使用率や演算器115及びメモリユニット119の使用率を観測し、記録装置112に記憶させる。観測部111は、すべてのスレッドの中でハードウェアリソースの使用率が高いものを、ハードウェアリソースの使用率の低いコアにマイグレーションする指示をOSに発行する。
【0029】
図3は、実施形態におけるスレッド管理情報101を例示するテーブルである。
【0030】
図3に示すように、スレッド管理情報101には、スレッド番号,スレッドが動作しているコア番号,実行した命令のプログラムカウンタ番号,使用しているレジスタ番号及び演算器115及びメモリユニット119への投入時クロックス数が対応付けて登録されている。
【0031】
観測部111は、実行スレッドごとに、スレッド管理情報101のレコードを取得して記録装置112に記憶させる。
【0032】
図4は、実施形態における使用率情報102を例示するテーブルである。
【0033】
図4に示すように、使用率情報102には、リザベーションステーション114,演算器115,レジスタ116,リオーダバッファ117,ロードバッファ118及びメモリユニット119の使用率が登録されている。
【0034】
リザベーションステーション114,レジスタ116,リオーダバッファ117及びロードバッファ118の使用率は、観測部111が各リソースに常時問い合わせることによって取得されてよい。
【0035】
演算器115及びメモリユニット119の使用率は、観測部111が命令投入数を記録しておくことによって算出されてよい。
【0036】
観測部111は、使用率情報102において、少なくともいずれかのリソースにおける使用率が所定の閾値以上又は100%になった場合に、ハードウェアリソースの枯渇を検出できる。
【0037】
実施形態におけるマイグレーション処理を、図5に示すフローチャート(ステップS1~S3)に従って説明する。
【0038】
観測部111は、少なくともいずれかのリソースの使用率が閾値以下であるかを判定する(ステップS1)。
【0039】
少なくともいずれかのリソースの使用率が閾値以下でない場合には(ステップS1のNOルート参照)、ステップS1の処理が繰り返し実行される。
【0040】
一方、少なくともいずれかのリソースの使用率が閾値以下である場合には(ステップS1のYESルート参照)、観測部111は、各スレッドのリソース占有時間を計算する(ステップS2)。
【0041】
観測部111は、占有時間が長い上位N個(Nは自然数)のスレッドを、使用率の低いリソースにマイグレーションする指示をOSに発行する(ステップS3)。そして、マイグレーション処理は終了する。
【0042】
〔B〕変形例
変形例においては、ハードウェアリソースの枯渇が検出されると、各スレッドのリソース専有時間が計算される。リソース占有時間は、[現在のクロック数]-[各スレッドの投入時クロック数]によって算出されてよい。
【0043】
そして、最も専有時間が長い又は専有時間が長い上位N個のスレッドが、現在もっともハードウェアリソースの使用率の低いコアにマイグレーションするようにシステムコールなどを通じてOSに指示が発行される。
【0044】
図3に示したように、2コアを有する環境で観測部111がレジスタ116の枯渇を検出したものとする。観測時のコアのリソース占有率はコア0が90%で、コア1が20%であるとし、観測時のクロック数が「400」であるとする。
【0045】
[現在のクロック数]-[各スレッドの投入時クロック数]から、最もレジスタ116の使用時間が長いスレッドは「スレッド1」と推定できる。スレッド1は、「コア0」で動作しているが、その他でコア0よりもレジスタ116の使用率が低いコアは「コア1」であることがわかる。
【0046】
観測部111は、「スレッド1」を「コア1」にマイグレーションするようにOSに指示を発行する。スレッド1がコア1に移動することで、コア0の負荷が軽減し、スレッド0及び2への影響を小さくすることができ、全体の実行性能の向上が期待される。
【0047】
〔C〕効果
上述した実施形態における演算回路及び演算処理方法によれば、例えば以下の作用効果を奏することができる。
【0048】
観測部111は、レジスタ116の使用率とリザベーションステーション114の使用率とリオーダバッファ117の使用率とロードバッファ118の使用率と演算器115の使用率とメモリユニット119の使用率との少なくともいずれかが閾値以下となった場合に、CPU11で実行される各スレッドのリソース占有時間を計算する。観測部111は、計算したリソース占有時間が長い上位N個(Nは自然数)のスレッドを、使用率が閾値以下となったレジスタ116とリザベーションステーション114とリオーダバッファ117とロードバッファ118と演算器115とメモリユニット119との少なくともいずれかに対応するコアに、マイグレーションする指示を発行する。
【0049】
これにより、プロセッサの演算回路全体の実行性能を向上させることができる。具体的には、すべてのコアの稼働率を平準化することによって、アプリケーションの全体の性能を向上できる。
【0050】
CPU11は、SMT機能を有する。これにより、複数のスレッドが1つのコアを共有するCPU11においても、ハードウェアリソースの枯渇を防止できる。
【0051】
リソース占有時間は、現在のクロック数からスレッドの投入時のクロック数を減算することにより計算される。これにより、リソース占有時間の計算を正確に実行できる。
【0052】
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0053】
〔E〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0054】
(付記1)
レジスタとリザベーションステーションとリオーダバッファとロードバッファと演算器とメモリユニットとを備えるプロセッサの演算回路であって、
前記レジスタの使用率と前記リザベーションステーションの使用率と前記リオーダバッファの使用率と前記ロードバッファの使用率と前記演算器の使用率と前記メモリユニットの使用率との少なくともいずれかが閾値以下となった場合に、前記プロセッサで実行される各スレッドのリソース占有時間を計算し、
計算した前記リソース占有時間が長い上位N個(Nは自然数)のスレッドを、使用率が前記閾値以下となった前記レジスタと前記リザベーションステーションと前記リオーダバッファと前記ロードバッファと前記演算器と前記メモリユニットとの少なくともいずれかに対応するコアに、マイグレーションする指示を発行する、
観測部を備える、演算回路。
【0055】
(付記2)
前記プロセッサは、Simultaneous Multi Threading(SMT)機能を有する、
付記1に記載の演算回路。
【0056】
(付記3)
前記リソース占有時間は、現在のクロック数からスレッドの投入時のクロック数を減算することにより計算される、
付記1又は2に記載の演算回路。
【0057】
(付記4)
レジスタとリザベーションステーションとリオーダバッファとロードバッファと演算器とメモリユニットとを備えるプロセッサにおける演算処理方法であって、
前記レジスタの使用率と前記リザベーションステーションの使用率と前記リオーダバッファの使用率と前記ロードバッファの使用率と前記演算器の使用率と前記メモリユニットの使用率との少なくともいずれかが閾値以下となった場合に、前記プロセッサで実行される各スレッドのリソース占有時間を計算し、
計算した前記リソース占有時間が長い上位N個(Nは自然数)のスレッドを、使用率が前記閾値以下となった前記レジスタと前記リザベーションステーションと前記リオーダバッファと前記ロードバッファと前記演算器と前記メモリユニットとの少なくともいずれかに対応するコアに、マイグレーションする指示を発行する、
処理をコンピュータが実行する、演算処理方法。
【0058】
(付記5)
前記プロセッサは、Simultaneous Multi Threading(SMT)機能を有する、
付記4に記載の演算処理方法。
【0059】
(付記6)
前記リソース占有時間は、現在のクロック数からスレッドの投入時のクロック数を減算することにより計算される、
付記4又は5に記載の演算処理方法。
【符号の説明】
【0060】
1 :情報処理装置
11 :CPU
12 :メモリ部
13 :表示制御部
14 :記憶装置
15 :入力IF
16 :外部記録媒体処理部
17 :通信IF
101 :スレッド管理情報
102 :使用率情報
111 :観測部
112 :記憶装置
113 :命令キュー
114 :リザベーションステーション
115 :演算器
116 :レジスタ
117 :リオーダバッファ
118 :ロードバッファ
119 :メモリユニット
131 :表示装置
151 :マウス
152 :キーボード
160 :記録媒体
図1
図2
図3
図4
図5