JP5640805B2 - 演算処理装置および演算処理装置におけるスロット制御方法 - Google Patents

演算処理装置および演算処理装置におけるスロット制御方法 Download PDF

Info

Publication number
JP5640805B2
JP5640805B2 JP2011037177A JP2011037177A JP5640805B2 JP 5640805 B2 JP5640805 B2 JP 5640805B2 JP 2011037177 A JP2011037177 A JP 2011037177A JP 2011037177 A JP2011037177 A JP 2011037177A JP 5640805 B2 JP5640805 B2 JP 5640805B2
Authority
JP
Japan
Prior art keywords
instruction
type
slot
weight
executing
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
JP2011037177A
Other languages
English (en)
Other versions
JP2012174114A (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 JP2011037177A priority Critical patent/JP5640805B2/ja
Publication of JP2012174114A publication Critical patent/JP2012174114A/ja
Application granted granted Critical
Publication of JP5640805B2 publication Critical patent/JP5640805B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

本発明は、演算処理装置および演算処理装置のスロット制御方法に関する。
従来、演算処理装置として、ベクトルのような連続するデータに対して、同じ操作をまとめて一度に行うことで、比較的簡単な制御系で高いスループットを達成するベクトル型プロセッサ(ベクトルプロセッサ)が利用されている。
このようなベクトルプロセッサは、気象予測や流体解析といった科学技術計算に適用されているが、近年、携帯端末のソフトウェア無線(SDR:Software Defined Radio)への適用も考えられている。
ところで、マルチサイクル命令を基本とした(マルチサイクル動作を行う)ベクトルプロセッサは、複数の演算スロットを有している。これらの演算スロッは、例えば、ALU系処理およびMUL系処理を実行可能なMUL系と、ALU系処理およびLDST系処理を実行可能なLDST系とに大別される。
ここで、ALU系処理とは、加算処理および論理演算処理等のことであり、また、MUL系処理とは、乗算処理等のことであり、そして、LDST系処理とは、ロード処理およびストア処理等のことである。
すなわち、MUL系命令とは、乗算器を使う命令(マルチプレックス処理を行う命令)であり、また、LDS系命令とは、データメモリに対してアクセスを行う命令(ロード/ストアを行う命令)である。そして、ALU系命令とは、MUL系命令およびLDS系命令以外の命令である。
ところで、従来、複数の演算スロットを有する演算処理装置において、適切な演算スロットに対して命令を発行し、同時発行可能な命令数を多くするようにした命令発行装置が提案されている。
特開2002−055814号公報
上述したように、ベクトルプロセッサは、科学技術計算だけでなく、携帯端末のソフトウェア無線といった適用も考えられ、その適用範囲は、様々な分野に拡大する傾向にある。また、ベクトルプロセッサに設けられた複数の演算スロットは、全て同じ種類のものではなく、例えば、ALU系処理およびMUL系処理を実行可能なMUL系と、ALU系処理およびLDST系処理を実行可能なLDST系とに大別される。
ところで、ベクトルプロセッサは、例えば、命令メモリから読みだした命令を順次キューに格納し、デコードステージで先に演算中の命令とのレジスタ干渉を確認し、条件が整えば空いている演算スロットに命令を振り分けるといった処理を行っている。なお、命令は、複数サイクルかけて実行される。
しかしながら、命令を複数サイクルかけて実行する場合、命令の供給に演算が追い付かずデコードステージで待ちの状態が発生することがある。また、各演算スロットに命令を振り分ける場合、その命令に適した演算スロットに割り当てることができるとは限らない。
例えば、MUL系命令およびLDST系命令は、実行可能な演算スロットが限定されているのに対しALU系はその制限がないため、ALU系の配置が適切ではないと、スロットが空いているにも関わらず次の命令を実行できないという状態が発生する。その結果、実装した演算スロットを十分に使いきれず、演算スロットの使用効率が低下することになる。
一実施形態によれば、1つ以上の第1の種類の演算スロットと、1つ以上の第2の種類の演算スロットと、プリデコード部と、重み設定レジスタと、重みづけ計算部と、スロット選択部とを備えた演算処理装置が提供される。前記第1の種類の演算スロットは、第1の種類の命令と第3の種類の命令とを実行可能なものであって、命令を実行する際にはマルチサイクル動作を行うものであり、前記第2の種類の演算スロットは、前記第2の種類の命令と第3の種類の命令とを実行可能なものであって、命令を実行する際にはマルチサイクル動作を行うものであり、前記スロット選択部により前記第3の種類の命令を実行させる演算スロットを選択するに際して、前記プリデコード部は、当該第3の種類の命令に後続する所定数の命令をプリデコードして、当該所定数の命令の種類を識別するものである。
前記重み設定レジスタは、前記第1の種類の命令と前記第2の種類の命令のそれぞれに対応した重み設定値を格納するものであり、前記重みづけ計算部は、前記プリデコード部により識別された前記所定数の命令の種類と、前記重み設定レジスタからの重み設定値とに少なくとも基づいて、前記第1の種類の演算スロットに対応した重みづけ値と、前記第2の種類の演算スロットに対応した重みづけ値を計算するものであり、前記スロット選択部は、前記重みづけ計算部が計算した、前記第1の種類の演算スロットに対応した重みづけ値と、前記第2の種類の演算スロットに対応した重みづけ値を比較することに少なくとも基づいて、前記第3の種類の命令を実行させる演算スロットを選択するものである。
開示の演算処理装置および演算処理装置のスロット制御方法は、演算スロットの使用効率を向上させることができるという効果を奏する。
演算処理装置の一例を示すブロック図である。 図1の演算処理装置における課題を説明するための図である。 第1実施例の演算処理装置を示すブロック図である。 第1実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。 第2実施例の演算処理装置を示すブロック図である。 第2実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。 第3実施例の演算処理装置を示すブロック図である。 第3実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。 第4実施例の演算処理装置を示すブロック図である。 第4実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。
まず、演算処理装置および演算処理装置のスロット制御方法の実施例を詳述する前に、図1および図2を参照して演算処理装置の一例およびその演算処理装置における課題を説明する。図1は、演算処理装置の一例を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサ(ベクトル型プロセッサ)を示す。
図1において、参照符号110〜113は演算スロット、102は命令キュー、103はデコード部[スロット選択部]、104は命令メモリ、105はレジスタ、106はメモリアクセス制御部、そして、107はデータメモリを示す。
図1に示すプロセッサにおいて、演算スロット110〜113は、ALU系処理およびMUL系処理を実行可能なMUL系演算スロット110,111と、ALU系処理およびLDST系処理を実行可能なLDST系演算スロット112,113とに大別される。
なお、ALU系処理とは、加算処理および論理演算処理等のことであり、また、MUL系処理とは、乗算処理等のことであり、そして、LDST系処理とは、ロード処理およびストア処理等のデータメモリ107をアクセスする処理のことである。
図1に示すプロセッサにおいて、命令メモリ104から読みだした命令は、命令キュー102に順次格納され、さらに、デコード部(スロット選択部)103に供給される。デコード部103では、命令キュー102から供給された命令と、先に演算中の命令とのレジスタ干渉を確認し、条件が整えば空いている演算スロット(スロット)110〜113に命令を振り分ける。なお、命令は、複数サイクルかけて実行される。
図2は、図1の演算処理装置における課題を説明するための図である。図2に示されるように、図1のプロセッサ(演算処理装置)では、例えば、空きスロットが複数あった場合、静的な設定で最下位番号を優先的に選択といった実装がなされる。
具体的に、例えば、スロット110にALU系命令が挿入されると、最下位番号のスロット110が選択されてスロット110にALU系命令が挿入される。しかしながら、次の命令がMUL系命令の場合、スロット112および113が空いているにも関わらず、MULスロット110,111が空いていないため、MUL系命令を待たせてしまうことになる。
すなわち、スロット112および113は空いているが、LDSTスロットのため、次の命令であるMUL系命を実行することができず、そのMUL系命令を待たせることになり、演算スロットの有効活用を行うことができない。
このように、MUL系とLDST系は実行可能な演算スロットが限定されているため、そのような制限のないALU系の配置が不適切な場合、スロットが空いているにもかかわらず次の命令を実行できないという状態が発生する。また、命令を複数サイクルかけて実行する場合、命令の供給に演算が追い付かずデコードステージで待ちの状態が発生することもある。このように、図1の演算処理装置は、実装した演算スロットを十分に使いきれないという課題がある。
以下、演算処理装置および演算処理装置のスロット制御方法の実施例を、添付図面を参照して詳述する。図3は、第1実施例の演算処理装置を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサを示す。
図3において、参照符号10〜13は演算スロット(スロット)、2は命令キュー、3はデコード部、4はスロット選択部、5は使用スロットのプリデコード部(プリデコード部)、6は重みづけ計算部、そして、7は重み設定レジスタを示す。
図3に示すプロセッサにおいて、スロット10および11は、ALU系処理およびMUL系処理を実行可能なMULスロットであり、また、スロット12および13は、ALU系処理およびLDST系処理を実行可能なLDSTスロットである。
なお、図3において、上述した図1および図2で示した命令メモリ104、レジスタ105、メモリアクセス制御部106およびデータメモリ107は、省略されている。また、図3において、図1および図2で示したデコード部(スロット選択部)103は、デコード部3およびスロット選択部4と分割して描かれている。これは、第1実施例を示す図3だけでなく、第2,第3および第4実施例を示す図5,図7および図9においても同様である。
図3と前述した図1との比較から明らかなように、本第1実施例の演算処理装置(プロセッサ)では、プリデコード部5,重みづけ計算部6および重み設定レジスタ7が設けられている。
プリデコード部5は、命令が命令キュー2に存在する間に、その命令がMUL系命令か、LDST系命令か、或いは、そうではない命令(ALU系命令)かをプリデコードし、その結果を重みづけ計算部6に出力する。
重みづけ計算部6は、上述したプリデコード部5からのプリデコード結果、および、重み設定レジスタ7からの重み設定値を受け取り、後述する所定のアルゴリズムに従った計算を行って、その計算された重みづけ値をスロット選択部4に出力する。
スロット選択部4は、重みづけ計算部6で計算された重みづけ結果を受け取り、それに基づいて、現在の命令(次に実行する命令:到着した命令)がALU系命令であれば、MULスロットおよびLDSTスロットの優先順位を変更して空きスロットを探索する。
ここで、重み設定レジスタ7に格納される重みは、例えば、プロセッサの転送命令や外部からの書き込みにより設定できるようになっている。
次に、一例として、重みづけ計算部6において、現在の命令の後ろ2つの命令(1つ後ろの命令、および、2つ後ろの命令)を探索して重みづけを行い、それに基づいて、スロットの選択部4がスロットの選択を判断する場合を説明する。
まず、MUL系命令の重みをMとし、LDST系命令の重みをLとすると、MおよびLは、以下のようにして計算される。
M=(1つ後ろの命令がMULなら重みM1、そうでないなら0)
+(2つ後ろの命令がMULなら重みM2、そうでないなら0)
L=(1つ後ろの命令がLDSTなら重みL1、そうでないなら0)
+(2つ後ろの命令がLDSTなら重みL2、そうでないなら0)
ここで、重みM1,M2,L1,L2は、あらかじめ設定しておく。具体的に、例えば、M1=L1=3,M2=L2=2といったように設定する。
なお、MULスロットまたはLDSTスロットを優先して選択するとは、例えば、MUL系命令の場合、まず、スロット10および11の空きを探索し、空いていればそのスロットを使用し、また、空いていなければ、スロット12および13を探索する。そして、スロット12および13が空いていればそのスロットを使用し、空いていなければストールするという動作を表している。
なお、上記の説明では、一例として、重みづけ計算部6において、現在の命令の後ろ2つの命令を探索して重みづけを行う場合を示したが、探索する後ろの命令の数や重みづけの仕方は、様々に変形することができる。
図4は、第1実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。なお、図4に示すフローチャートは、演算処理装置のスロット制御処理の開始時点でリソース競合などの命令発行制約に関する条件判定は終了しており、スロットの割り当て(割り振り)のみが残っているものとして記載されている。
図4に示されるように、スロット制御処理が開始すると、まず、ステップST11において、現在の命令(次に実行する命令:スロットに割り振る命令)がALU系命令かどうかを判別する。ステップST11において、ALU系命令であると判別すると、ステップST12に進んで、重みづけ計算を行って、ステップST16に進む。
ここで、ステップST12における重みづけ計算は、前述した図3における重みづけ計算部6で行われ、例えば、現在の命令の後ろ2つの命令を探索して、MUL系命令の重みMおよびLDST系命令の重みLを計算する処理に対応する。
ステップST16では、MがLよりも大きいかどうか(M>L?)を判別し、MがLよりも大きいと判別すると、ステップST17に進んで、LDSTスロット(LDST系演算スロット)12,13から優先して割り当てを行って、ステップST19に進む。
また、ステップST16において、MがLよりも大きくないと判別すると、ステップST18に進んで、MULスロット(MUL系演算スロット)10,11から優先して割り当てを行って、ステップST19に進む。
ステップST19では、LDSTスロット12,13に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST20に進んで、命令(現在の命令)を挿入して処理を終了する。一方、ステップST19において、LDSTスロット12,13に空きが無いと判別すると、ステップST21に進んで、ストール処理(パイプランの停止処理)を行って処理を終了する。
次に、ステップST11において、現在の命令がALU系命令ではないと判別すると、ステップST13に進んで、MUL系命令かどうかを判別する。ステップST13において、現在の命令がMUL系命令であると判別すると、ステップST14に進んで、MULスロットの空きを探索して、ステップST22に進む。
一方、ステップST13において、現在の命令がMUL系命令ではない、すなわち、LDST系命令であると判別すると、ステップST15に進んで、LDSTスロットの空きを探索して、ステップST22に進む。
ステップST22では、MULスロット10,11に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST23に進んで、命令(現在の命令)を挿入して処理を終了する。一方、ステップST22において、MULスロット10,11に空きが無いと判別すると、ステップST24に進んで、ストール処理を行って処理を終了する。
このように、本第1実施例によれば、現在の命令がALU系命令だった場合、後ろの命令に基づいた重みづけ計算を行って、MUL系命令の重みMおよびLDST系命令の重みLを求め、より重みの少ない方(命令の少ない方)のスロットを優先して選択する。これにより、演算スロットの使用効率(活用効率)を向上させることが可能となる。
図5は、第2実施例の演算処理装置を示すブロック図であり、また、図6は、第2実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。ここで、本第2実施例の図5および図6と上述した第1実施例の図3および図4とは、図面上は、実質的に同様なものとして描かれているが重みづけ計算の処理が異なっている。
すなわち、図5と上述した図3との比較から明らかなように、本第2実施例のプロセッサは、重みづけ計算を行うための重みづけ計算部6’および重み設定レジスタ7’が第1実施例とは異なっている。
また、図6と上述した図4との比較から明らかなように、本第2実施例のスロット制御処理は、ステップST12’における重みづけ計算を行う処理が異なっている。
前述した第1実施例のプロセッサでは、現在の命令の後ろ2つの命令(1個以上後ろの命令)を見て、それらの中の制限された命令について重みづけをしながら数え上げ、より少ない演算スロットを優先的に選択するようになっている。
これに対して、本第2実施例のプロセッサでは、現在の命令の後ろ2つの命令を見るのに加えて、各スロット10〜13が命令を実行中であるかどうかも踏まえて、MUL系命令の重みMおよびLDST系命令の重みLを計算するようになっている。
すなわち、図5に示されるように、本第2実施例のプロセッサにおいて、重みづけ計算部6’には、各スロット10〜13から当該スロットが命令を実行中であるかどうかの情報(スロットの埋まり具合の信号)が供給されている。なお、重み設定レジスタ7’は、各スロット10〜13に対して、当該スロットが命令を実行中であるかどうかによる重みも設定されることになる。
次に、一例として、重みづけ計算部6’において、現在の命令の後ろ2つの命令および各スロットが命令を実行中であるかどうかの現在の使用状況を探索して重みづけを行い、それに基づいて、スロットの選択部4がスロットの選択を判断する場合を説明する。
すなわち、MUL系命令の重みMおよびLDST系命令の重みLは、以下のようにして計算される。
M=(1つ後ろの命令がMULなら重みM1、そうでないなら0)
+(2つ後ろの命令がMULなら重みM2、そうでないなら0)
+(スロット0が命令を実行中であればM3、そうでないなら0)
+(スロット1が命令を実行中であればM4、そうでないなら0)
L=(1つ後ろの命令がLDSTなら重みL1、そうでないなら0)
+(2つ後ろの命令がLDSTなら重みL2、そうでないなら0)
+(スロット2が命令を実行中であればL3、そうでないなら0)
+(スロット3が命令を実行中であればL4、そうでないなら0)
ここで、重みM1,M2,M3,M4,L1,L2,L3,L4は、あらかじめ設定しておく。具体的に、例えば、M1=L1=3、M2=L2=2、M3=M4=L3=L4=1といったように設定する。なお、重みづけ計算の結果により、LDST優先かMUL優先かを判断し、スロットを選択するのは、前述した第1実施例と同様である。
すなわち、本第2実施例のスロット制御方法は、ステップST12’における重みづけ計算の処理を、上記のような各スロットが命令を実行中であるかどうかを踏まえて行う以外、図4を参照して説明した第1実施例と同様である。
このように、本第2実施例によれば、現在の命令がALU系命令だった場合、後ろの命令と共に、各スロットが命令を実行中であるかどうかに基づいた重みづけ計算を行うことにより、演算スロットの使用効率をより一層向上させることが可能となる。
図7は、第3実施例の演算処理装置を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサを示す。ここで、本第3実施例では、前述した重み設定レジスタ7,7’が設けられておらず、現在の命令の後ろの命令の実行にかかる時間、並びに、各スロットで実行している命令の終了予想時間(サイクル数)が重みづけ計算部6”に情報として供給されている。
すなわち、本第3実施例のプロセッサにおいて、使用スロットのプリデコード部5’は、命令が命令キュー2に存在する間に、その命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かをプリデコードし、その結果を重みづけ計算部6”に出力する。さらに、プリデコード部5’は、命令が命令キュー2に存在する間に、その命令の実行にかかる時間をデコードして重みづけ計算部6”に出力する。
重みづけ計算部6”には、各スロット10〜13から、当該スロットが命令を実行中であるかどうかの情報と共に、現在実行している命令の終了時間(終了予想サイクル数、無い場合は0)が供給される。
そして、重みづけ計算部6”は、命令キュー2に存在する後ろの命令の種類およびその命令の実行にかかる時間、並びに、各スロットが命令を実行中であるかどうかおよびその実行している命令の終了予想時間を受け取って、重みづけ計算を行う。
ここで、本第3実施例において、例えば、現在の命令がALU系命令以外の場合、並びに、現在の命令がALU系命令であって、且つ、その1つ後ろの命令もALU系命令の場合には、前述した第1実施例または第2実施例と同様の処理を行う。すなわち、本第3実施例は、現在の命令がALU系命令であって、その1つ後ろの命令がALU系命令ではない場合に、演算スロットの使用効率をより一層向上させることが可能となる。
次に、一例として、重みづけ計算部6”において、現在の命令がALU系命令であって、その1つ後ろの命令がMUL系命令の場合、スロット10および11にMUL系命令を割り当てたときの終了予想時刻を見積もると、以下のように予想される。
スロット10の終了時刻=スロット10の現在実行中の命令の残りサイクル数(無い場合は0)+MUL系命令の実行サイクル数+1
スロット11の終了時刻=スロット11の現在実行中の命令の残りサイクル数(無い場合は0)+MUL系命令の実行サイクル数+1
ここで、スロット10および11の終了時刻の予想において、最後の『+1』は、MUL系命令が次の命令であるため、実行開始が1サイクル後になるから加算するものである。
そして、上記スロット10および11の終了時刻の予想値のうち、小さい方(早く終わる方)を現在のALU系命令の1つ後ろのMUL系命令に対して予約する。そして、現在のALU系命令は、上記スロット10,11を除いて空いているスロット12,13に割り当て、空きが無い場合には、ストールする。
また、一例として、重みづけ計算部6”において、現在の命令がALU系命令であって、その1つ後ろの命令がLDST系命令の場合、スロット12および13にLDST系命令を割り当てたときの終了予想時刻を見積もると、以下のように予想される。
スロット12の終了時刻=スロット12の現在実行中の命令の残りサイクル数(無い場合は0)+LDST系命令の実行サイクル数+1
スロット13の終了時刻=スロット13の現在実行中の命令の残りサイクル数(無い場合は0)+LDST系命令の実行サイクル数+1
そして、上記スロット12および13の終了時刻の予想値のうち、小さい方(早く終わる方)を現在のALU系命令の1つ後ろのLDST系命令に対して予約する。そして、現在のALU系命令は、上記スロット12,13を除いて空いているスロット10,11に割り当て、空きが無い場合には、ストールする。
図8は、第3実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。なお、図8に示すフローチャートは、演算処理装置のスロット制御処理の開始時点でリソース競合などの命令発行制約に関する条件判定は終了しており、スロットの割り当てのみが残っているものとして記載されている。
図8に示されるように、スロット制御処理が開始すると、まず、ステップST31において、現在の命令(次に実行する命令:スロットに割り振る命令)がALU系命令かどうかを判別する。ステップST31において、ALU系命令であると判別すると、ステップST32に進んで、現在の命令の1つ後ろの命令もALU系命令かどうかを判別し、また、ALU系命令ではないと判別すると、ステップST33に進む。
ステップST32において、現在の命令の1つ後ろの命令もALU系命令であると判別すると、ステップST36に進み、また、現在の命令の1つ後ろの命令はALU系命令ではないと判別すると、ステップST33に進む。
ステップST36において、現在の命令の1つ後ろの命令がMUL系命令であると判別すると、ステップST37に進む。
ステップST37では、MULスロット10,11で終了時刻を予想し、早い方を選択して現在の命令(ALU系命令)の1つ後ろのMUL系命令に対して予約して、ステップST38に進む。
ステップST38では、選択されたMULスロット10,11以外のスロット(LDSTスロット12,13)で、空いているスロットを探索して、ステップST41に進む。
ステップST41では、LDSTスロット12,13に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST42に進んで、命令(現在の命令)を挿入して処理を終了する。
一方、ステップST41において、LDSTスロット12,13に空きが無いと判別すると、ステップST43に進んで、ストール処理を行って処理を終了する。
また、ステップST36において、現在の命令の1つ後ろの命令がMUL系命令ではない、すなわち、LDST系命令であると判別すると、ステップST39に進む。ステップST39では、LDSTスロット12,13で終了時刻を予想し、早い方を選択して現在の命令の1つ後ろのLDST系命令に対して予約して、ステップST40に進む。
ステップST40では、選択されたLDSTスロット12,13以外のスロット(MULスロット10,11)で、空いているスロットを探索して、ステップST41に進む。
ステップST41では、MULスロット10,11に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST42に進んで、命令(現在の命令)を挿入して処理を終了する。
一方、ステップST41において、MULスロット10,11に空きが無いと判別すると、ステップST43に進んで、ストール処理を行って処理を終了する。
すなわち、ステップST37およびST39において、前述したMUL系およびLDST系命令の終了時刻の予想を行い、予約するスロット番号をスロット選択部4に供給する。そして、ステップST38およびST39(並びに、ST41〜ST43)において、スロット選択部4は、予約スロット以外のスロットからそのMUL系およびLDST系命令を割り当てるスロットを選択する。
なお、図8におけるステップST33,ST34,ST35,ST44,ST45およびST46は、例えば、前述した図4におけるステップST13,ST14,ST15,ST22,ST23およびST24と同様のものであり、その説明は省略する。
このように、本第3実施例は、現在の命令がALU系命令であって、その1つ後ろの命令がALU系命令ではない場合に、命令キューに在る命令の実行にかかる時間、および、各スロットで実行している命令の終了時刻を予想してスロットの割り振りを行う。これにより、現在の命令がALU系命令であって、その1つ後ろの命令がALU系命令ではない場合に、使用効率をより一層向上させることが可能となる。
図9は、第4実施例の演算処理装置を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサを示す。ここで、図9に示す第4実施例は、例えば、前述した図3に示す第1実施例において、演算スロットとして、ALU系命令専用のALUスロット14およびスカラー演算用のスカラースロット15を設けたものに相当する。
図9に示されるように、本第4実施例の演算処理装置(プロセッサ)は、MULスロット10,11、LDSTスロット12,13、ALUスロット14およびスカラースロット15を有する。
さらに、プロセッサは、命令キュー2、デコード部3、スロット選択部40、使用スロットのプリデコード部5,重みづけ計算部60および重み設定レジスタ70が設けられている。
プリデコード部5は、命令が命令キュー2に存在する間に、その命令がMUL系命令か、LDST系命令か、或いは、そうではない命令(ALU系命令)かをプリデコードし、その結果を重みづけ計算部60に出力する。
重みづけ計算部60は、プリデコード部5からのプリデコード結果、および、重み設定レジスタ70からの重み設定値を受け取り、後述する所定のアルゴリズムに従った計算を行って、その計算された重みづけ値をスロット選択部40に出力する。
スロット選択部40は、重みづけ計算部60で計算された重みづけ結果を受け取り、それに基づいて、現在の命令がALU系命令であれば、ALUスロット,MULスロットおよびLDSTスロットの優先順位を変更して空きスロットを探索する。
ここで、重み設定レジスタ70に格納される重みは、例えば、プロセッサの転送命令や外部からの書き込みにより設定できるようになっている。
次に、一例として、重みづけ計算部60において、現在の命令の後ろ2つの命令を探索して重みづけを行い、それに基づいて、スロットの選択部40がスロットの選択を判断する場合を説明する。
まず、MUL系命令の重みをMとし、LDST系命令の重みをLとすると、MおよびLは、以下のようにして計算される。
M=(1つ後ろの命令がMULなら重みM1、そうでないなら0)
+(2つ後ろの命令がMULなら重みM2、そうでないなら0)
L=(1つ後ろの命令がLDSTなら重みL1、そうでないなら0)
+(2つ後ろの命令がLDSTなら重みL2、そうでないなら0)
ここで、重みM1,M2,L1,L2は、あらかじめ設定しておく。具体的に、例えば、M1=L1=3,M2=L2=2といったように設定する。
なお、MULスロットまたはLDSTスロットを優先して選択するとは、例えば、MUL系命令の場合、まず、スロット10および11の空きを探索し、空いていればそのスロットを使用し、また、空いていなければ、スロット12および13を探索する。そして、スロット12および13が空いていればそのスロットを使用し、空いていなければストールするという動作を表している。
ここで、重みづけ計算部60は、現在の命令の後ろ2つの命令を探索して重みづけを行う場合を示したが、探索する後ろの命令の数や重みづけの仕方は、様々に変形することができるのは前述した通りである。
また、図9において、ALUスロット14およびスカラースロット15は、それぞれ1つずつ配置されているが、これらのスロットも複数配置してもよく、また、ALUスロットまたはスカラースロットの一方がなくてもかまわないのはいうまでもない。
図10は、第4実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。なお、図10に示すフローチャートは、演算処理装置のスロット制御処理の開始時点でリソース競合などの命令発行制約に関する条件判定は終了しており、スロットの割り当てのみが残っている場合であるのは、前述した各実施例と同様である。
図10に示されるように、スロット制御処理が開始すると、まず、ステップST51において、現在の命令がALU系命令かどうかを判別する。ステップST51において、ALU系命令であると判別すると、ステップST52に進んで、ALUスロット14が空いているかどうかを判別する。
ステップST52において、ALUスロット14が空いていると判別すると、ステップST68に進んで、そのALUスロット14を使用して現在の命令(ALU系命令)を割り当てて処理を終了する。
また、ステップST52において、ALUスロット14が空いていないと判別すると、ステップST54に進んで、例えば、前述した図4のステップST12と同様の処理を行う。
一方、ステップST51において、現在の命令がALU系命令ではないと判別すると、ステップST53に進んで、スカラー命令かどうかを判別する。ステップST53において、現在の命令がスカラー命令であると判別すると、ステップST67に進んで、そのスカラースロット15を使用して現在の命令(スカラー命令)を割り当てて処理を終了する。
ここで、スカラー命令の場合、そのスカラー命令は1サイクルで終了するため、スカラースロット15は必ず空いており、ステップST53でスカラー命令であると判別すれば、その空いているスカラースロット15に命令を挿入する。
なお、現在の命令がスカラー命令でもALU系命令でもない場合は、例えば、前述した図4と同様である。すなわち、図10におけるステップST54〜ST66は、例えば、前述した図4におけるステップST12〜ST24に相当するものであり、同様の処理を行うことになる。
この第4実施例のように、本実施例の適用は、MULスロットおよびLDSTスロットだけを有するものに限定されず、さらに、ALUスロットおよびスカラースロットを有するものであってもよい。また、これらALUスロットおよびスカラースロットは、複数設けてもよく、また、ALUスロットまたはスカラースロットの一方を設けなくともよいのは前述した通りである。
さらに、例えば、第4実施例のように、ALUスロットおよびスカラースロットを有するプロセッサに対して、前述した第2または第3実施例を適用することができるのは、いうまでもない。
以上、詳述したように、本実施例の演算処理装置および演算処理装置のスロット制御方法によれば、演算スロットの使用効率を向上させることがえきる。その結果、演算処理装置の演算性能を高めることが可能となる。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
複数の異なる演算スロットを有し、マルチサイクル動作を行う演算処理装置であって、
演算する命令をプリデコードしてその種類を識別するプリデコード部と、
前記命令の種類に対応した重み設定値を格納する重み設定レジスタと、
前記識別された命令の種類および前記重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算する重みづけ計算部と、
前記重みづけ計算部の計算結果に基づいて、前記複数の異なる演算スロットのいずれかを選択するスロット選択部と、
を有することを特徴とする演算処理装置。
(付記2)
前記複数の異なる演算スロットは、ALU系処理およびMUL系処理を実行可能な少なくとも1つのMULスロット、および、前記ALU系処理およびLDST系処理を実行可能な少なくとも1つのLDSTスロットを含み、
前記プリデコード部は、前記演算する命令が命令キューに存在する間に、該演算する命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かを識別するプリデコード結果を出力し、
前記重み設定レジスタは、前記MUL系命令、前記LDST系命令および前記ALU系命令の重み設定値を格納し、
前記重みづけ計算部は、前記プリデコード部からの前記プリデコード結果、および、前記重み設定レジスタからの前記重み設定値を受け取り、前記MUL系命令および前記LDST系命令の重みづけ値を計算し、
前記スロット選択部は、前記重みづけ計算部の計算結果に基づいて、前記MULスロットまたは前記LDSTスロットのいずれかを選択する、
ことを特徴とする付記1に記載の演算処理装置。
(付記3)
前記重みづけ計算部は、現在の命令の後ろの命令を探索して、前記重みづけ値を計算する、
ことを特徴とする付記2に記載の演算処理装置。
(付記4)
前記重みづけ計算部は、現在の命令の後ろの命令、および、前記各スロットが命令を実行中であるかどうかの現在の使用状況を探索して、前記重みづけ値を計算する、
ことを特徴とする付記2に記載の演算処理装置。
(付記5)
前記重みづけ計算部は、現在の命令の後ろの命令の種類およびその命令の実行にかかる時間、並びに、前記各スロットが命令を実行中であるかどうかおよびその実行している命令の終了予想時間を受け取って、前記重みづけ値を計算する、
ことを特徴とする付記2に記載の演算処理装置。
(付記6)
複数の異なる演算スロットを有し、マルチサイクル動作を行う演算処理装置のスロット制御方法であって、
演算する命令をプリデコードして該演算する命令の種類を識別し、
前記演算する命令の種類および前記命令の種類に対応した重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算し、
前記計算された重みづけ値に基づいて、前記複数の異なる演算スロットのいずれかを選択する、
ことを特徴とする演算処理装置のスロット制御方法。
(付記7)
前記複数の異なる演算スロットは、ALU系処理およびMUL系処理を実行可能な少なくとも1つのMULスロットと、前記ALU系処理およびLDST系処理を実行可能な少なくとも1つのLDSTスロットを含み、
前記演算する命令のプリデコードは、該演算する命令が命令キューに存在する間に、該演算する命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かを識別するプリデコード結果を出力し、
前記演算する命令に対する重みづけ値の計算は、前記プリデコード結果、および、前記MUL系命令,前記LDST系命令および前記ALU系命令に対する重み設定値を受け取り、前記MUL系命令および前記LDST系命令の重みづけ値を計算し、
前記演算スロットの選択は、前記計算された重みづけ値に基づいて、前記MULスロットまたは前記LDSTスロットのいずれかを選択する、
ことを特徴とする付記6に記載の演算処理装置のスロット制御方法。
(付記8)
新たに実行可能なALU系命令が到着したとき、当該ALU系命令の後ろの後続命令を識別し、それがALU系命令ではなかった場合に、前記後続命令とは異なる制限を有する演算スロットを優先的に選択する、
ことを特徴とする付記7に記載の演算処理装置のスロット制御方法。
(付記9)
新たに実行可能なALU系命令が到着したとき、当該ALU系命令の後ろの後続命令を識別し、それがALU系命令ではなかった場合に、現在の演算スロットの状況から前記後続命令を配置した場合の演算スロットの状況を予測し、前記MULスロットまたは前記LDSTスロットのうち空きが多い方を優先的に選択する、
ことを特徴とする付記7に記載の演算処理装置のスロット制御方法。
(付記10)
新たに実行可能なALU系命令が到着したとき、当該ALU系命令の後ろの後続命令を識別し、それがALU系命令ではなかった場合に、前記後続命令が最も早く終了する演算スロットの割り当てを計算し、予測結果に基づいて当該ALU系命令の演算スロットを選択する、
ことを特徴とする付記7に記載の演算処理装置のスロット制御方法。
2,102 命令キュー
3 デコード部
4,40 スロット選択部
5,5’ 使用スロットのプリデコード部(プリデコード部)
6,6’,6”,60 重みづけ計算部
7,7’,70 重み設定レジスタ
10,11,110,111 MULスロット(演算スロット)
12,13,112,113 LDSTスロット(演算スロット)
14 ALUスロット(演算スロット)
15 スカラースロット(演算スロット)
103 デコード部(スロット選択部)
104 命令メモリ
105 レジスタ
106 メモリアクセス制御部
107 データメモリ

Claims (5)

  1. 1つ以上の第1の種類の演算スロットと、1つ以上の第2の種類の演算スロットと、プリデコード部と、重み設定レジスタと、重みづけ計算部と、スロット選択部とを備えた演算処理装置であって、
    前記第1の種類の演算スロットは、第1の種類の命令と第3の種類の命令とを実行可能なものであって、命令を実行する際にはマルチサイクル動作を行うものであり、
    前記第2の種類の演算スロットは、前記第2の種類の命令と第3の種類の命令とを実行可能なものであって、命令を実行する際にはマルチサイクル動作を行うものであり、
    前記スロット選択部により前記第3の種類の命令を実行させる演算スロットを選択するに際して、前記プリデコード部は、当該第3の種類の命令に後続する所定数の命令をプリデコードして、当該所定数の命令の種類を識別するものであり、
    前記重み設定レジスタは、前記第1の種類の命令と前記第2の種類の命令のそれぞれに対応した重み設定値を格納するものであり、
    前記重みづけ計算部は、前記プリデコード部により識別された前記所定数の命令の種類と、前記重み設定レジスタからの重み設定値とに少なくとも基づいて、前記第1の種類の演算スロットに対応した重みづけ値と、前記第2の種類の演算スロットに対応した重みづけ値を計算するものであり、
    前記スロット選択部は、前記重みづけ計算部が計算した、前記第1の種類の演算スロットに対応した重みづけ値と、前記第2の種類の演算スロットに対応した重みづけ値を比較することに少なくとも基づいて、前記第3の種類の命令を実行させる演算スロットを選択するものである、
    ことを特徴とする演算処理装置。
  2. 前記第1の種類の演算スロットはMULスロットであり、前記第2の種類の演算スロットはLDSTスロットであり、前記第1の種類の命令はMUL系命令であり、前記第2の種類の命令はLDST系命令であり、前記第3の種類の命令はALU系命令である、
    ことを特徴とする請求項1に記載の演算処理装置。
  3. 第1の種類の命令と第3の種類の命令とを実行可能であり、命令を実行する際にはマルチサイクル動作を行う、1つ以上の第1の種類の演算スロットと、第2の種類の命令と第3の種類の命令とを実行可能であり、命令を実行する際にはマルチサイクル動作を行う、1つ以上の第2の種類の演算スロットとを備えた演算処理装置におけるスロット制御方法であって、
    前記第3の種類の命令を実行させる演算スロットを選択するに際して、当該第3の種類の命令に後続する所定数の命令をプリデコードして、当該所定数の命令の種類を識別し、
    識別された前記所定数の命令の種類と、前記第1の種類の命令と前記第2の種類の命令のそれぞれに対応した重み設定値とに少なくとも基づいて、第1の種類の演算スロットに対応した重みづけ値と、前記第2の種類の演算スロットに対応した重みづけ値を計算し、
    計算された、前記第1の種類の演算スロットに対応した重みづけ値と、前記第2の種類の演算スロットに対応した重みづけ値を比較することに少なくとも基づいて、前記第3の種類の命令を実行させる演算スロットを選択する、
    ことを特徴とする演算処理装置におけるスロット制御方法。
  4. 前記第1の種類の演算スロットはMULスロットであり、前記第2の種類の演算スロットはLDSTスロットであり、前記第1の種類の命令はMUL系命令であり、前記第2の種類の命令はLDST系命令であり、前記第3の種類の命令はALU系命令である、
    ことを特徴とする請求項3に記載の演算処理装置におけるスロット制御方法。
  5. 前記第3の種類の命令を実行させる演算スロットを選択するに際して、当該第3の種類の命令に後続する前記所定数の命令に前記第1の種類の命令が含まれると、前記第1の種類の演算スロットに対応した重みづけ値は、より高くなるものであり、
    前記第3の種類の命令を実行させる演算スロットを選択するに際して、当該第3の種類の命令に後続する前記所定数の命令に前記第2の種類の命令が含まれると、前記第2の種類の演算スロットに対応した重みづけ値は、より高くなるものであり、
    計算された、前記第1の種類の演算スロットに対応した重みづけ値と、前記第2の種類の演算スロットに対応した重みづけ値を比較することに少なくとも基づいて、前記第3の種類の命令を実行させる演算スロットを選択するに際して、一方の重みづけ値が他方の重みづけ値よりも低ければ、その低いほうの重みづけ値に対応する種類の演算スロットを、前記第3の種類の命令を実行させる演算スロットとして優先して選択するものである、
    ことを特徴とする請求項3または請求項4に記載の演算処理装置におけるスロット制御方法。
JP2011037177A 2011-02-23 2011-02-23 演算処理装置および演算処理装置におけるスロット制御方法 Expired - Fee Related JP5640805B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011037177A JP5640805B2 (ja) 2011-02-23 2011-02-23 演算処理装置および演算処理装置におけるスロット制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011037177A JP5640805B2 (ja) 2011-02-23 2011-02-23 演算処理装置および演算処理装置におけるスロット制御方法

Publications (2)

Publication Number Publication Date
JP2012174114A JP2012174114A (ja) 2012-09-10
JP5640805B2 true JP5640805B2 (ja) 2014-12-17

Family

ID=46976951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011037177A Expired - Fee Related JP5640805B2 (ja) 2011-02-23 2011-02-23 演算処理装置および演算処理装置におけるスロット制御方法

Country Status (1)

Country Link
JP (1) JP5640805B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002555A (ja) * 2012-06-18 2014-01-09 Fujitsu Ltd プロセッサ
CN110825440B (zh) * 2018-08-10 2023-04-14 昆仑芯(北京)科技有限公司 指令执行方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59771A (ja) * 1982-06-28 1984-01-05 Fujitsu Ltd デ−タ処理装置における演算処理部選択制御方式
JPH05127901A (ja) * 1991-11-08 1993-05-25 Matsushita Electric Ind Co Ltd プロセツサ
JPH07295810A (ja) * 1994-04-27 1995-11-10 Toshiba Corp 命令列最適化処理方法及び装置

Also Published As

Publication number Publication date
JP2012174114A (ja) 2012-09-10

Similar Documents

Publication Publication Date Title
JP3587256B2 (ja) コンピュータ装置
US7590830B2 (en) Method and structure for concurrent branch prediction in a processor
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
US5790822A (en) Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor
US7725684B2 (en) Speculative instruction issue in a simultaneously multithreaded processor
CN108170471B (zh) 基于类型的优先化指令
US7949855B1 (en) Scheduler in multi-threaded processor prioritizing instructions passing qualification rule
JP2908598B2 (ja) 情報処理装置
JP2531495B2 (ja) ス―パ―スカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム
US8095779B2 (en) System and method for optimization within a group priority issue schema for a cascaded pipeline
US20030154358A1 (en) Apparatus and method for dispatching very long instruction word having variable length
US11023243B2 (en) Latency-based instruction reservation station clustering in a scheduler circuit in a processor
JP5209933B2 (ja) データ処理装置
US10846092B2 (en) Execution of micro-operations
US7194603B2 (en) SMT flush arbitration
US20120047352A1 (en) Processor
JP5640805B2 (ja) 演算処理装置および演算処理装置におけるスロット制御方法
US20110276979A1 (en) Non-Real Time Thread Scheduling
US9430244B1 (en) Run-time code parallelization using out-of-order renaming with pre-allocation of physical registers
JP7205174B2 (ja) 演算処理装置および演算処理装置の制御方法
US7577824B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US20190057093A1 (en) Ranking items
US11915002B2 (en) Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata
US20100106945A1 (en) Instruction processing apparatus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140905

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141013

R150 Certificate of patent or registration of utility model

Ref document number: 5640805

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees