図面 (/)

技術 演算処理装置および演算処理装置のスロット制御方法

出願人 富士通株式会社
発明者 依田勝洋
出願日 2011年2月23日 (9年10ヶ月経過) 出願番号 2011-037177
公開日 2012年9月10日 (8年3ヶ月経過) 公開番号 2012-174114
状態 特許登録済
技術分野 先行制御 機械語命令の実行 複合演算
主要キーワード 活用効率 パイプラン 終了予想時刻 スカラー演算 同時発行 マルチサイクル命令 流体解析 マルチサイクル
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2012年9月10日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (11)

課題

演算スロット使用効率の向上を図る。

解決手段

複数の異なる演算スロット10〜13を有し、マルチサイクル動作を行う演算処理装置であって、演算する命令プリデコードしてその種類を識別するプリデコード部5と、前記命令の種類に対応した重み設定値を格納する重み設定レジスタ7と、前記識別された命令の種類および前記重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算する重みづけ計算部6と、前記重みづけ計算部の計算結果に基づいて、前記複数の異なる演算スロットのいずれかを選択するスロット選択部4と、を有する。

概要

背景

従来、演算処理装置として、ベクトルのような連続するデータに対して、同じ操作をまとめて一度に行うことで、比較的簡単な制御系で高いスループットを達成するベクトル型プロセッサベクトルプロセッサ)が利用されている。

このようなベクトルプロセッサは、気象予測流体解析といった科学技術計算に適用されているが、近年、携帯端末ソフトウェア無線(SDR:Software Defined Radio)への適用も考えられている。

ところで、マルチサイクル命令を基本とした(マルチサイクル動作を行う)ベクトルプロセッサは、複数の演算スロットを有している。これらの演算スロッは、例えば、ALU系処理およびMUL系処理を実行可能なMUL系と、ALU系処理およびLDST系処理を実行可能なLDST系とに大別される。

ここで、ALU系処理とは、加算処理および論理演算処理等のことであり、また、MUL系処理とは、乗算処理等のことであり、そして、LDST系処理とは、ロード処理およびストア処理等のことである。

すなわち、MUL系命令とは、乗算器を使う命令(マルチプレックス処理を行う命令)であり、また、LDS系命令とは、データメモリに対してアクセスを行う命令(ロード/ストアを行う命令)である。そして、ALU系命令とは、MUL系命令およびLDS系命令以外の命令である。

ところで、従来、複数の演算スロットを有する演算処理装置において、適切な演算スロットに対して命令を発行し、同時発行可能な命令数を多くするようにした命令発行装置が提案されている。

概要

演算スロットの使用効率の向上をる。複数の異なる演算スロット10〜13を有し、マルチサイクル動作を行う演算処理装置であって、演算する命令をプリデコードしてその種類を識別するプリデコード部5と、前記命令の種類に対応した重み設定値を格納する重み設定レジスタ7と、前記識別された命令の種類および前記重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算する重みづけ計算部6と、前記重みづけ計算部の計算結果に基づいて、前記複数の異なる演算スロットのいずれかを選択するスロット選択部4と、を有する。

目的

効果

実績

技術文献被引用数
1件
牽制数
1件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

複数の異なる演算スロットを有し、マルチサイクル動作を行う演算処理装置であって、演算する命令プリデコードしてその種類を識別するプリデコード部と、前記命令の種類に対応した重み設定値を格納する重み設定レジスタと、前記識別された命令の種類および前記重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算する重みづけ計算部と、前記重みづけ計算部の計算結果に基づいて、前記複数の異なる演算スロットのいずれかを選択するスロット選択部と、を有することを特徴とする演算処理装置。

請求項2

前記複数の異なる演算スロットは、ALU系処理およびMUL系処理を実行可能な少なくとも1つのMULスロット、および、前記ALU系処理およびLDST系処理を実行可能な少なくとも1つのLDSTスロットを含み、前記プリデコード部は、前記演算する命令が命令キューに存在する間に、該演算する命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かを識別するプリデコード結果を出力し、前記重み設定レジスタは、前記MUL系命令、前記LDST系命令および前記ALU系命令の重み設定値を格納し、前記重みづけ計算部は、前記プリデコード部からの前記プリデコード結果、および、前記重み設定レジスタからの前記重み設定値を受け取り、前記MUL系命令および前記LDST系命令の重みづけ値を計算し、前記スロット選択部は、前記重みづけ計算部の計算結果に基づいて、前記MULスロットまたは前記LDSTスロットのいずれかを選択する、ことを特徴とする請求項1に記載の演算処理装置。

請求項3

複数の異なる演算スロットを有し、マルチサイクル動作を行う演算処理装置のスロット制御方法であって、演算する命令をプリデコードして該演算する命令の種類を識別し、前記演算する命令の種類および前記命令の種類に対応した重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算し、前記計算された重みづけ値に基づいて、前記複数の異なる演算スロットのいずれかを選択する、ことを特徴とする演算処理装置のスロット制御方法。

請求項4

前記複数の異なる演算スロットは、ALU系処理およびMUL系処理を実行可能な少なくとも1つのMULスロットと、前記ALU系処理およびLDST系処理を実行可能な少なくとも1つのLDSTスロットを含み、前記演算する命令のプリデコードは、該演算する命令が命令キューに存在する間に、該演算する命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かを識別するプリデコード結果を出力し、前記演算する命令に対する重みづけ値の計算は、前記プリデコード結果、および、前記MUL系命令,前記LDST系命令および前記ALU系命令に対する重み設定値を受け取り、前記MUL系命令および前記LDST系命令の重みづけ値を計算し、前記演算スロットの選択は、前記計算された重みづけ値に基づいて、前記MULスロットまたは前記LDSTスロットのいずれかを選択する、ことを特徴とする請求項3に記載の演算処理装置のスロット制御方法。

請求項5

新たに実行可能なALU系命令が到着したとき、当該ALU系命令の後ろ後続命令を識別し、それがALU系命令ではなかった場合に、前記後続命令とは異なる制限を有する演算スロットを優先的に選択する、ことを特徴とする請求項4に記載の演算処理装置のスロット制御方法。

技術分野

0001

本発明は、演算処理装置および演算処理装置のスロット制御方法に関する。

背景技術

0002

従来、演算処理装置として、ベクトルのような連続するデータに対して、同じ操作をまとめて一度に行うことで、比較的簡単な制御系で高いスループットを達成するベクトル型プロセッサベクトルプロセッサ)が利用されている。

0003

このようなベクトルプロセッサは、気象予測流体解析といった科学技術計算に適用されているが、近年、携帯端末ソフトウェア無線(SDR:Software Defined Radio)への適用も考えられている。

0004

ところで、マルチサイクル命令を基本とした(マルチサイクル動作を行う)ベクトルプロセッサは、複数の演算スロットを有している。これらの演算スロッは、例えば、ALU系処理およびMUL系処理を実行可能なMUL系と、ALU系処理およびLDST系処理を実行可能なLDST系とに大別される。

0005

ここで、ALU系処理とは、加算処理および論理演算処理等のことであり、また、MUL系処理とは、乗算処理等のことであり、そして、LDST系処理とは、ロード処理およびストア処理等のことである。

0006

すなわち、MUL系命令とは、乗算器を使う命令(マルチプレックス処理を行う命令)であり、また、LDS系命令とは、データメモリに対してアクセスを行う命令(ロード/ストアを行う命令)である。そして、ALU系命令とは、MUL系命令およびLDS系命令以外の命令である。

0007

ところで、従来、複数の演算スロットを有する演算処理装置において、適切な演算スロットに対して命令を発行し、同時発行可能な命令数を多くするようにした命令発行装置が提案されている。

先行技術

0008

特開2002−055814号公報

発明が解決しようとする課題

0009

上述したように、ベクトルプロセッサは、科学技術計算だけでなく、携帯端末のソフトウェア無線といった適用も考えられ、その適用範囲は、様々な分野に拡大する傾向にある。また、ベクトルプロセッサに設けられた複数の演算スロットは、全て同じ種類のものではなく、例えば、ALU系処理およびMUL系処理を実行可能なMUL系と、ALU系処理およびLDST系処理を実行可能なLDST系とに大別される。

0010

ところで、ベクトルプロセッサは、例えば、命令メモリから読みだした命令を順次キューに格納し、デコードステージで先に演算中の命令とのレジスタ干渉を確認し、条件が整えば空いている演算スロットに命令を振り分けるといった処理を行っている。なお、命令は、複数サイクルかけて実行される。

0011

しかしながら、命令を複数サイクルかけて実行する場合、命令の供給に演算が追い付かずデコードステージで待ちの状態が発生することがある。また、各演算スロットに命令を振り分ける場合、その命令に適した演算スロットに割り当てることができるとは限らない。

0012

例えば、MUL系命令およびLDST系命令は、実行可能な演算スロットが限定されているのに対しALU系はその制限がないため、ALU系の配置が適切ではないと、スロットが空いているにも関わらず次の命令を実行できないという状態が発生する。その結果、実装した演算スロットを十分に使いきれず、演算スロットの使用効率が低下することになる。

課題を解決するための手段

0013

一実施形態によれば、複数の異なる演算スロットを有し、マルチサイクル動作を行う演算処理装置であって、プリデコード部と、重み設定レジスタと、重みづけ計算部と、スロット選択部と、を有することを特徴とする演算処理装置が提供される。

0014

前記プリデコード部は、演算する命令をプリデコードしてその種類を識別し、また、前記重み設定レジスタは、前記命令の種類に対応した重み設定値を格納する。さらに、前記重みづけ計算部は、前記識別された命令の種類および前記重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算し、そして、前記スロット選択部は、前記重みづけ計算部の計算結果に基づいて、前記複数の異なる演算スロットのいずれかを選択する。

発明の効果

0015

開示の演算処理装置および演算処理装置のスロット制御方法は、演算スロットの使用効率を向上させることができるという効果を奏する。

図面の簡単な説明

0016

演算処理装置の一例を示すブロック図である。
図1の演算処理装置における課題を説明するための図である。
第1実施例の演算処理装置を示すブロック図である。
第1実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。
第2実施例の演算処理装置を示すブロック図である。
第2実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。
第3実施例の演算処理装置を示すブロック図である。
第3実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。
第4実施例の演算処理装置を示すブロック図である。
第4実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。

実施例

0017

まず、演算処理装置および演算処理装置のスロット制御方法の実施例を詳述する前に、図1および図2を参照して演算処理装置の一例およびその演算処理装置における課題を説明する。図1は、演算処理装置の一例を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサ(ベクトル型プロセッサ)を示す。

0018

図1において、参照符号110〜113は演算スロット、102は命令キュー、103はデコード部[スロット選択部]、104は命令メモリ、105はレジスタ、106はメモリアクセス制御部、そして、107はデータメモリを示す。

0019

図1に示すプロセッサにおいて、演算スロット110〜113は、ALU系処理およびMUL系処理を実行可能なMUL系演算スロット110,111と、ALU系処理およびLDST系処理を実行可能なLDST系演算スロット112,113とに大別される。

0020

なお、ALU系処理とは、加算処理および論理演算処理等のことであり、また、MUL系処理とは、乗算処理等のことであり、そして、LDST系処理とは、ロード処理およびストア処理等のデータメモリ107をアクセスする処理のことである。

0021

図1に示すプロセッサにおいて、命令メモリ104から読みだした命令は、命令キュー102に順次格納され、さらに、デコード部(スロット選択部)103に供給される。デコード部103では、命令キュー102から供給された命令と、先に演算中の命令とのレジスタ干渉を確認し、条件が整えば空いている演算スロット(スロット)110〜113に命令を振り分ける。なお、命令は、複数サイクルかけて実行される。

0022

図2は、図1の演算処理装置における課題を説明するための図である。図2に示されるように、図1のプロセッサ(演算処理装置)では、例えば、空きスロットが複数あった場合、静的な設定で最下位番号を優先的に選択といった実装がなされる。

0023

具体的に、例えば、スロット110にALU系命令が挿入されると、最下位番号のスロット110が選択されてスロット110にALU系命令が挿入される。しかしながら、次の命令がMUL系命令の場合、スロット112および113が空いているにも関わらず、MULスロット110,111が空いていないため、MUL系命令を待たせてしまうことになる。

0024

すなわち、スロット112および113は空いているが、LDSTスロットのため、次の命令であるMUL系命を実行することができず、そのMUL系命令を待たせることになり、演算スロットの有効活用を行うことができない。

0025

このように、MUL系とLDST系は実行可能な演算スロットが限定されているため、そのような制限のないALU系の配置が不適切な場合、スロットが空いているにもかかわらず次の命令を実行できないという状態が発生する。また、命令を複数サイクルかけて実行する場合、命令の供給に演算が追い付かずデコードステージで待ちの状態が発生することもある。このように、図1の演算処理装置は、実装した演算スロットを十分に使いきれないという課題がある。

0026

以下、演算処理装置および演算処理装置のスロット制御方法の実施例を、添付図面を参照して詳述する。図3は、第1実施例の演算処理装置を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサを示す。

0027

図3において、参照符号10〜13は演算スロット(スロット)、2は命令キュー、3はデコード部、4はスロット選択部、5は使用スロットのプリデコード部(プリデコード部)、6は重みづけ計算部、そして、7は重み設定レジスタを示す。

0028

図3に示すプロセッサにおいて、スロット10および11は、ALU系処理およびMUL系処理を実行可能なMULスロットであり、また、スロット12および13は、ALU系処理およびLDST系処理を実行可能なLDSTスロットである。

0029

なお、図3において、上述した図1および図2で示した命令メモリ104、レジスタ105、メモリアクセス制御部106およびデータメモリ107は、省略されている。また、図3において、図1および図2で示したデコード部(スロット選択部)103は、デコード部3およびスロット選択部4と分割して描かれている。これは、第1実施例を示す図3だけでなく、第2,第3および第4実施例を示す図5図7および図9においても同様である。

0030

図3と前述した図1との比較から明らかなように、本第1実施例の演算処理装置(プロセッサ)では、プリデコード部5,重みづけ計算部6および重み設定レジスタ7が設けられている。

0031

プリデコード部5は、命令が命令キュー2に存在する間に、その命令がMUL系命令か、LDST系命令か、或いは、そうではない命令(ALU系命令)かをプリデコードし、その結果を重みづけ計算部6に出力する。

0032

重みづけ計算部6は、上述したプリデコード部5からのプリデコード結果、および、重み設定レジスタ7からの重み設定値を受け取り、後述する所定のアルゴリズムに従った計算を行って、その計算された重みづけ値をスロット選択部4に出力する。

0033

スロット選択部4は、重みづけ計算部6で計算された重みづけ結果を受け取り、それに基づいて、現在の命令(次に実行する命令:到着した命令)がALU系命令であれば、MULスロットおよびLDSTスロットの優先順位を変更して空きスロットを探索する。

0034

ここで、重み設定レジスタ7に格納される重みは、例えば、プロセッサの転送命令や外部からの書き込みにより設定できるようになっている。

0035

次に、一例として、重みづけ計算部6において、現在の命令の後ろ2つの命令(1つ後ろの命令、および、2つ後ろの命令)を探索して重みづけを行い、それに基づいて、スロットの選択部4がスロットの選択を判断する場合を説明する。

0036

まず、MUL系命令の重みをMとし、LDST系命令の重みをLとすると、MおよびLは、以下のようにして計算される。

0037

M=(1つ後ろの命令がMULなら重みM1、そうでないなら0)
+(2つ後ろの命令がMULなら重みM2、そうでないなら0)

0038

L=(1つ後ろの命令がLDSTなら重みL1、そうでないなら0)
+(2つ後ろの命令がLDSTなら重みL2、そうでないなら0)

0039

ここで、重みM1,M2,L1,L2は、あらかじめ設定しておく。具体的に、例えば、M1=L1=3,M2=L2=2といったように設定する。

0040

なお、MULスロットまたはLDSTスロットを優先して選択するとは、例えば、MUL系命令の場合、まず、スロット10および11の空きを探索し、空いていればそのスロットを使用し、また、空いていなければ、スロット12および13を探索する。そして、スロット12および13が空いていればそのスロットを使用し、空いていなければストールするという動作を表している。

0041

なお、上記の説明では、一例として、重みづけ計算部6において、現在の命令の後ろ2つの命令を探索して重みづけを行う場合を示したが、探索する後ろの命令の数や重みづけの仕方は、様々に変形することができる。

0042

図4は、第1実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。なお、図4に示すフローチャートは、演算処理装置のスロット制御処理開始時点リソース競合などの命令発行制約に関する条件判定は終了しており、スロットの割り当て(割り振り)のみが残っているものとして記載されている。

0043

図4に示されるように、スロット制御処理が開始すると、まず、ステップST11において、現在の命令(次に実行する命令:スロットに割り振る命令)がALU系命令かどうかを判別する。ステップST11において、ALU系命令であると判別すると、ステップST12に進んで、重みづけ計算を行って、ステップST16に進む。

0044

ここで、ステップST12における重みづけ計算は、前述した図3における重みづけ計算部6で行われ、例えば、現在の命令の後ろ2つの命令を探索して、MUL系命令の重みMおよびLDST系命令の重みLを計算する処理に対応する。

0045

ステップST16では、MがLよりも大きいかどうか(M>L?)を判別し、MがLよりも大きいと判別すると、ステップST17に進んで、LDSTスロット(LDST系演算スロット)12,13から優先して割り当てを行って、ステップST19に進む。

0046

また、ステップST16において、MがLよりも大きくないと判別すると、ステップST18に進んで、MULスロット(MUL系演算スロット)10,11から優先して割り当てを行って、ステップST19に進む。

0047

ステップST19では、LDSTスロット12,13に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST20に進んで、命令(現在の命令)を挿入して処理を終了する。一方、ステップST19において、LDSTスロット12,13に空きが無いと判別すると、ステップST21に進んで、ストール処理(パイプラン停止処理)を行って処理を終了する。

0048

次に、ステップST11において、現在の命令がALU系命令ではないと判別すると、ステップST13に進んで、MUL系命令かどうかを判別する。ステップST13において、現在の命令がMUL系命令であると判別すると、ステップST14に進んで、MULスロットの空きを探索して、ステップST22に進む。

0049

一方、ステップST13において、現在の命令がMUL系命令ではない、すなわち、LDST系命令であると判別すると、ステップST15に進んで、LDSTスロットの空きを探索して、ステップST22に進む。

0050

ステップST22では、MULスロット10,11に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST23に進んで、命令(現在の命令)を挿入して処理を終了する。一方、ステップST22において、MULスロット10,11に空きが無いと判別すると、ステップST24に進んで、ストール処理を行って処理を終了する。

0051

このように、本第1実施例によれば、現在の命令がALU系命令だった場合、後ろの命令に基づいた重みづけ計算を行って、MUL系命令の重みMおよびLDST系命令の重みLを求め、より重みの少ない方(命令の少ない方)のスロットを優先して選択する。これにより、演算スロットの使用効率(活用効率)を向上させることが可能となる。

0052

図5は、第2実施例の演算処理装置を示すブロック図であり、また、図6は、第2実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。ここで、本第2実施例の図5および図6と上述した第1実施例の図3および図4とは、図面上は、実質的に同様なものとして描かれているが重みづけ計算の処理が異なっている。

0053

すなわち、図5と上述した図3との比較から明らかなように、本第2実施例のプロセッサは、重みづけ計算を行うための重みづけ計算部6’および重み設定レジスタ7’が第1実施例とは異なっている。

0054

また、図6と上述した図4との比較から明らかなように、本第2実施例のスロット制御処理は、ステップST12’における重みづけ計算を行う処理が異なっている。

0055

前述した第1実施例のプロセッサでは、現在の命令の後ろ2つの命令(1個以上後ろの命令)を見て、それらの中の制限された命令について重みづけをしながら数え上げ、より少ない演算スロットを優先的に選択するようになっている。

0056

これに対して、本第2実施例のプロセッサでは、現在の命令の後ろ2つの命令を見るのに加えて、各スロット10〜13が命令を実行中であるかどうかも踏まえて、MUL系命令の重みMおよびLDST系命令の重みLを計算するようになっている。

0057

すなわち、図5に示されるように、本第2実施例のプロセッサにおいて、重みづけ計算部6’には、各スロット10〜13から当該スロットが命令を実行中であるかどうかの情報(スロットの埋まり具合の信号)が供給されている。なお、重み設定レジスタ7’は、各スロット10〜13に対して、当該スロットが命令を実行中であるかどうかによる重みも設定されることになる。

0058

次に、一例として、重みづけ計算部6’において、現在の命令の後ろ2つの命令および各スロットが命令を実行中であるかどうかの現在の使用状況を探索して重みづけを行い、それに基づいて、スロットの選択部4がスロットの選択を判断する場合を説明する。

0059

すなわち、MUL系命令の重みMおよびLDST系命令の重みLは、以下のようにして計算される。

0060

M=(1つ後ろの命令がMULなら重みM1、そうでないなら0)
+(2つ後ろの命令がMULなら重みM2、そうでないなら0)
+(スロット0が命令を実行中であればM3、そうでないなら0)
+(スロット1が命令を実行中であればM4、そうでないなら0)

0061

L=(1つ後ろの命令がLDSTなら重みL1、そうでないなら0)
+(2つ後ろの命令がLDSTなら重みL2、そうでないなら0)
+(スロット2が命令を実行中であればL3、そうでないなら0)
+(スロット3が命令を実行中であればL4、そうでないなら0)

0062

ここで、重みM1,M2,M3,M4,L1,L2,L3,L4は、あらかじめ設定しておく。具体的に、例えば、M1=L1=3、M2=L2=2、M3=M4=L3=L4=1といったように設定する。なお、重みづけ計算の結果により、LDST優先かMUL優先かを判断し、スロットを選択するのは、前述した第1実施例と同様である。

0063

すなわち、本第2実施例のスロット制御方法は、ステップST12’における重みづけ計算の処理を、上記のような各スロットが命令を実行中であるかどうかを踏まえて行う以外、図4を参照して説明した第1実施例と同様である。

0064

このように、本第2実施例によれば、現在の命令がALU系命令だった場合、後ろの命令と共に、各スロットが命令を実行中であるかどうかに基づいた重みづけ計算を行うことにより、演算スロットの使用効率をより一層向上させることが可能となる。

0065

図7は、第3実施例の演算処理装置を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサを示す。ここで、本第3実施例では、前述した重み設定レジスタ7,7’が設けられておらず、現在の命令の後ろの命令の実行にかかる時間、並びに、各スロットで実行している命令の終了予想時間(サイクル数)が重みづけ計算部6”に情報として供給されている。

0066

すなわち、本第3実施例のプロセッサにおいて、使用スロットのプリデコード部5’は、命令が命令キュー2に存在する間に、その命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かをプリデコードし、その結果を重みづけ計算部6”に出力する。さらに、プリデコード部5’は、命令が命令キュー2に存在する間に、その命令の実行にかかる時間をデコードして重みづけ計算部6”に出力する。

0067

重みづけ計算部6”には、各スロット10〜13から、当該スロットが命令を実行中であるかどうかの情報と共に、現在実行している命令の終了時間(終了予想サイクル数、無い場合は0)が供給される。

0068

そして、重みづけ計算部6”は、命令キュー2に存在する後ろの命令の種類およびその命令の実行にかかる時間、並びに、各スロットが命令を実行中であるかどうかおよびその実行している命令の終了予想時間を受け取って、重みづけ計算を行う。

0069

ここで、本第3実施例において、例えば、現在の命令がALU系命令以外の場合、並びに、現在の命令がALU系命令であって、且つ、その1つ後ろの命令もALU系命令の場合には、前述した第1実施例または第2実施例と同様の処理を行う。すなわち、本第3実施例は、現在の命令がALU系命令であって、その1つ後ろの命令がALU系命令ではない場合に、演算スロットの使用効率をより一層向上させることが可能となる。

0070

次に、一例として、重みづけ計算部6”において、現在の命令がALU系命令であって、その1つ後ろの命令がMUL系命令の場合、スロット10および11にMUL系命令を割り当てたときの終了予想時刻見積もると、以下のように予想される。

0071

スロット10の終了時刻=スロット10の現在実行中の命令の残りサイクル数(無い場合は0)+MUL系命令の実行サイクル数+1
スロット11の終了時刻=スロット11の現在実行中の命令の残りサイクル数(無い場合は0)+MUL系命令の実行サイクル数+1

0072

ここで、スロット10および11の終了時刻の予想において、最後の『+1』は、MUL系命令が次の命令であるため、実行開始が1サイクル後になるから加算するものである。

0073

そして、上記スロット10および11の終了時刻の予想値のうち、小さい方(早く終わる方)を現在のALU系命令の1つ後ろのMUL系命令に対して予約する。そして、現在のALU系命令は、上記スロット10,11を除いて空いているスロット12,13に割り当て、空きが無い場合には、ストールする。

0074

また、一例として、重みづけ計算部6”において、現在の命令がALU系命令であって、その1つ後ろの命令がLDST系命令の場合、スロット12および13にLDST系命令を割り当てたときの終了予想時刻を見積もると、以下のように予想される。

0075

スロット12の終了時刻=スロット12の現在実行中の命令の残りサイクル数(無い場合は0)+LDST系命令の実行サイクル数+1
スロット13の終了時刻=スロット13の現在実行中の命令の残りサイクル数(無い場合は0)+LDST系命令の実行サイクル数+1

0076

そして、上記スロット12および13の終了時刻の予想値のうち、小さい方(早く終わる方)を現在のALU系命令の1つ後ろのLDST系命令に対して予約する。そして、現在のALU系命令は、上記スロット12,13を除いて空いているスロット10,11に割り当て、空きが無い場合には、ストールする。

0077

図8は、第3実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。なお、図8に示すフローチャートは、演算処理装置のスロット制御処理の開始時点でリソース競合などの命令発行制約に関する条件判定は終了しており、スロットの割り当てのみが残っているものとして記載されている。

0078

図8に示されるように、スロット制御処理が開始すると、まず、ステップST31において、現在の命令(次に実行する命令:スロットに割り振る命令)がALU系命令かどうかを判別する。ステップST31において、ALU系命令であると判別すると、ステップST32に進んで、現在の命令の1つ後ろの命令もALU系命令かどうかを判別し、また、ALU系命令ではないと判別すると、ステップST33に進む。

0079

ステップST32において、現在の命令の1つ後ろの命令もALU系命令であると判別すると、ステップST36に進み、また、現在の命令の1つ後ろの命令はALU系命令ではないと判別すると、ステップST33に進む。

0080

ステップST36において、現在の命令の1つ後ろの命令がMUL系命令であると判別すると、ステップST37に進む。

0081

ステップST37では、MULスロット10,11で終了時刻を予想し、早い方を選択して現在の命令(ALU系命令)の1つ後ろのMUL系命令に対して予約して、ステップST38に進む。

0082

ステップST38では、選択されたMULスロット10,11以外のスロット(LDSTスロット12,13)で、空いているスロットを探索して、ステップST41に進む。

0083

ステップST41では、LDSTスロット12,13に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST42に進んで、命令(現在の命令)を挿入して処理を終了する。

0084

一方、ステップST41において、LDSTスロット12,13に空きが無いと判別すると、ステップST43に進んで、ストール処理を行って処理を終了する。

0085

また、ステップST36において、現在の命令の1つ後ろの命令がMUL系命令ではない、すなわち、LDST系命令であると判別すると、ステップST39に進む。ステップST39では、LDSTスロット12,13で終了時刻を予想し、早い方を選択して現在の命令の1つ後ろのLDST系命令に対して予約して、ステップST40に進む。

0086

ステップST40では、選択されたLDSTスロット12,13以外のスロット(MULスロット10,11)で、空いているスロットを探索して、ステップST41に進む。

0087

ステップST41では、MULスロット10,11に空きが有るかどうかを判別し、空きが有ると判別すると、ステップST42に進んで、命令(現在の命令)を挿入して処理を終了する。

0088

一方、ステップST41において、MULスロット10,11に空きが無いと判別すると、ステップST43に進んで、ストール処理を行って処理を終了する。

0089

すなわち、ステップST37およびST39において、前述したMUL系およびLDST系命令の終了時刻の予想を行い、予約するスロット番号をスロット選択部4に供給する。そして、ステップST38およびST39(並びに、ST41〜ST43)において、スロット選択部4は、予約スロット以外のスロットからそのMUL系およびLDST系命令を割り当てるスロットを選択する。

0090

なお、図8におけるステップST33,ST34,ST35,ST44,ST45およびST46は、例えば、前述した図4におけるステップST13,ST14,ST15,ST22,ST23およびST24と同様のものであり、その説明は省略する。

0091

このように、本第3実施例は、現在の命令がALU系命令であって、その1つ後ろの命令がALU系命令ではない場合に、命令キューに在る命令の実行にかかる時間、および、各スロットで実行している命令の終了時刻を予想してスロットの割り振りを行う。これにより、現在の命令がALU系命令であって、その1つ後ろの命令がALU系命令ではない場合に、使用効率をより一層向上させることが可能となる。

0092

図9は、第4実施例の演算処理装置を示すブロック図であり、マルチサイクル動作を行うベクトルプロセッサを示す。ここで、図9に示す第4実施例は、例えば、前述した図3に示す第1実施例において、演算スロットとして、ALU系命令専用のALUスロット14およびスカラー演算用のスカラースロット15を設けたものに相当する。

0093

図9に示されるように、本第4実施例の演算処理装置(プロセッサ)は、MULスロット10,11、LDSTスロット12,13、ALUスロット14およびスカラースロット15を有する。

0094

さらに、プロセッサは、命令キュー2、デコード部3、スロット選択部40、使用スロットのプリデコード部5,重みづけ計算部60および重み設定レジスタ70が設けられている。

0095

プリデコード部5は、命令が命令キュー2に存在する間に、その命令がMUL系命令か、LDST系命令か、或いは、そうではない命令(ALU系命令)かをプリデコードし、その結果を重みづけ計算部60に出力する。

0096

重みづけ計算部60は、プリデコード部5からのプリデコード結果、および、重み設定レジスタ70からの重み設定値を受け取り、後述する所定のアルゴリズムに従った計算を行って、その計算された重みづけ値をスロット選択部40に出力する。

0097

スロット選択部40は、重みづけ計算部60で計算された重みづけ結果を受け取り、それに基づいて、現在の命令がALU系命令であれば、ALUスロット,MULスロットおよびLDSTスロットの優先順位を変更して空きスロットを探索する。

0098

ここで、重み設定レジスタ70に格納される重みは、例えば、プロセッサの転送命令や外部からの書き込みにより設定できるようになっている。

0099

次に、一例として、重みづけ計算部60において、現在の命令の後ろ2つの命令を探索して重みづけを行い、それに基づいて、スロットの選択部40がスロットの選択を判断する場合を説明する。

0100

まず、MUL系命令の重みをMとし、LDST系命令の重みをLとすると、MおよびLは、以下のようにして計算される。

0101

M=(1つ後ろの命令がMULなら重みM1、そうでないなら0)
+(2つ後ろの命令がMULなら重みM2、そうでないなら0)

0102

L=(1つ後ろの命令がLDSTなら重みL1、そうでないなら0)
+(2つ後ろの命令がLDSTなら重みL2、そうでないなら0)

0103

ここで、重みM1,M2,L1,L2は、あらかじめ設定しておく。具体的に、例えば、M1=L1=3,M2=L2=2といったように設定する。

0104

なお、MULスロットまたはLDSTスロットを優先して選択するとは、例えば、MUL系命令の場合、まず、スロット10および11の空きを探索し、空いていればそのスロットを使用し、また、空いていなければ、スロット12および13を探索する。そして、スロット12および13が空いていればそのスロットを使用し、空いていなければストールするという動作を表している。

0105

ここで、重みづけ計算部60は、現在の命令の後ろ2つの命令を探索して重みづけを行う場合を示したが、探索する後ろの命令の数や重みづけの仕方は、様々に変形することができるのは前述した通りである。

0106

また、図9において、ALUスロット14およびスカラースロット15は、それぞれ1つずつ配置されているが、これらのスロットも複数配置してもよく、また、ALUスロットまたはスカラースロットの一方がなくてもかまわないのはいうまでもない。

0107

図10は、第4実施例の演算処理装置のスロット制御方法を説明するためのフローチャートである。なお、図10に示すフローチャートは、演算処理装置のスロット制御処理の開始時点でリソース競合などの命令発行制約に関する条件判定は終了しており、スロットの割り当てのみが残っている場合であるのは、前述した各実施例と同様である。

0108

図10に示されるように、スロット制御処理が開始すると、まず、ステップST51において、現在の命令がALU系命令かどうかを判別する。ステップST51において、ALU系命令であると判別すると、ステップST52に進んで、ALUスロット14が空いているかどうかを判別する。

0109

ステップST52において、ALUスロット14が空いていると判別すると、ステップST68に進んで、そのALUスロット14を使用して現在の命令(ALU系命令)を割り当てて処理を終了する。

0110

また、ステップST52において、ALUスロット14が空いていないと判別すると、ステップST54に進んで、例えば、前述した図4のステップST12と同様の処理を行う。

0111

一方、ステップST51において、現在の命令がALU系命令ではないと判別すると、ステップST53に進んで、スカラー命令かどうかを判別する。ステップST53において、現在の命令がスカラー命令であると判別すると、ステップST67に進んで、そのスカラースロット15を使用して現在の命令(スカラー命令)を割り当てて処理を終了する。

0112

ここで、スカラー命令の場合、そのスカラー命令は1サイクルで終了するため、スカラースロット15は必ず空いており、ステップST53でスカラー命令であると判別すれば、その空いているスカラースロット15に命令を挿入する。

0113

なお、現在の命令がスカラー命令でもALU系命令でもない場合は、例えば、前述した図4と同様である。すなわち、図10におけるステップST54〜ST66は、例えば、前述した図4におけるステップST12〜ST24に相当するものであり、同様の処理を行うことになる。

0114

この第4実施例のように、本実施例の適用は、MULスロットおよびLDSTスロットだけを有するものに限定されず、さらに、ALUスロットおよびスカラースロットを有するものであってもよい。また、これらALUスロットおよびスカラースロットは、複数設けてもよく、また、ALUスロットまたはスカラースロットの一方を設けなくともよいのは前述した通りである。

0115

さらに、例えば、第4実施例のように、ALUスロットおよびスカラースロットを有するプロセッサに対して、前述した第2または第3実施例を適用することができるのは、いうまでもない。

0116

以上、詳述したように、本実施例の演算処理装置および演算処理装置のスロット制御方法によれば、演算スロットの使用効率を向上させることがえきる。その結果、演算処理装置の演算性能を高めることが可能となる。

0117

以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
複数の異なる演算スロットを有し、マルチサイクル動作を行う演算処理装置であって、
演算する命令をプリデコードしてその種類を識別するプリデコード部と、
前記命令の種類に対応した重み設定値を格納する重み設定レジスタと、
前記識別された命令の種類および前記重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算する重みづけ計算部と、
前記重みづけ計算部の計算結果に基づいて、前記複数の異なる演算スロットのいずれかを選択するスロット選択部と、
を有することを特徴とする演算処理装置。

0118

(付記2)
前記複数の異なる演算スロットは、ALU系処理およびMUL系処理を実行可能な少なくとも1つのMULスロット、および、前記ALU系処理およびLDST系処理を実行可能な少なくとも1つのLDSTスロットを含み、
前記プリデコード部は、前記演算する命令が命令キューに存在する間に、該演算する命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かを識別するプリデコード結果を出力し、
前記重み設定レジスタは、前記MUL系命令、前記LDST系命令および前記ALU系命令の重み設定値を格納し、
前記重みづけ計算部は、前記プリデコード部からの前記プリデコード結果、および、前記重み設定レジスタからの前記重み設定値を受け取り、前記MUL系命令および前記LDST系命令の重みづけ値を計算し、
前記スロット選択部は、前記重みづけ計算部の計算結果に基づいて、前記MULスロットまたは前記LDSTスロットのいずれかを選択する、
ことを特徴とする付記1に記載の演算処理装置。

0119

(付記3)
前記重みづけ計算部は、現在の命令の後ろの命令を探索して、前記重みづけ値を計算する、
ことを特徴とする付記2に記載の演算処理装置。

0120

(付記4)
前記重みづけ計算部は、現在の命令の後ろの命令、および、前記各スロットが命令を実行中であるかどうかの現在の使用状況を探索して、前記重みづけ値を計算する、
ことを特徴とする付記2に記載の演算処理装置。

0121

(付記5)
前記重みづけ計算部は、現在の命令の後ろの命令の種類およびその命令の実行にかかる時間、並びに、前記各スロットが命令を実行中であるかどうかおよびその実行している命令の終了予想時間を受け取って、前記重みづけ値を計算する、
ことを特徴とする付記2に記載の演算処理装置。

0122

(付記6)
複数の異なる演算スロットを有し、マルチサイクル動作を行う演算処理装置のスロット制御方法であって、
演算する命令をプリデコードして該演算する命令の種類を識別し、
前記演算する命令の種類および前記命令の種類に対応した重み設定値を受け取り、前記演算する命令に対して重みづけ値を計算し、
前記計算された重みづけ値に基づいて、前記複数の異なる演算スロットのいずれかを選択する、
ことを特徴とする演算処理装置のスロット制御方法。

0123

(付記7)
前記複数の異なる演算スロットは、ALU系処理およびMUL系処理を実行可能な少なくとも1つのMULスロットと、前記ALU系処理およびLDST系処理を実行可能な少なくとも1つのLDSTスロットを含み、
前記演算する命令のプリデコードは、該演算する命令が命令キューに存在する間に、該演算する命令がMUL系命令か、LDST系命令か、或いは、ALU系命令かを識別するプリデコード結果を出力し、
前記演算する命令に対する重みづけ値の計算は、前記プリデコード結果、および、前記MUL系命令,前記LDST系命令および前記ALU系命令に対する重み設定値を受け取り、前記MUL系命令および前記LDST系命令の重みづけ値を計算し、
前記演算スロットの選択は、前記計算された重みづけ値に基づいて、前記MULスロットまたは前記LDSTスロットのいずれかを選択する、
ことを特徴とする付記6に記載の演算処理装置のスロット制御方法。

0124

(付記8)
新たに実行可能なALU系命令が到着したとき、当該ALU系命令の後ろの後続命令を識別し、それがALU系命令ではなかった場合に、前記後続命令とは異なる制限を有する演算スロットを優先的に選択する、
ことを特徴とする付記7に記載の演算処理装置のスロット制御方法。

0125

(付記9)
新たに実行可能なALU系命令が到着したとき、当該ALU系命令の後ろの後続命令を識別し、それがALU系命令ではなかった場合に、現在の演算スロットの状況から前記後続命令を配置した場合の演算スロットの状況を予測し、前記MULスロットまたは前記LDSTスロットのうち空きが多い方を優先的に選択する、
ことを特徴とする付記7に記載の演算処理装置のスロット制御方法。

0126

(付記10)
新たに実行可能なALU系命令が到着したとき、当該ALU系命令の後ろの後続命令を識別し、それがALU系命令ではなかった場合に、前記後続命令が最も早く終了する演算スロットの割り当てを計算し、予測結果に基づいて当該ALU系命令の演算スロットを選択する、
ことを特徴とする付記7に記載の演算処理装置のスロット制御方法。

0127

2,102命令キュー
3デコード部
4,40スロット選択部
5,5’使用スロットのプリデコード部(プリデコード部)
6,6’,6”,60重みづけ計算部
7,7’,70重み設定レジスタ
10,11,110,111 MULスロット(演算スロット)
12,13,112,113 LDSTスロット(演算スロット)
14ALUスロット(演算スロット)
15スカラースロット(演算スロット)
103 デコード部(スロット選択部)
104命令メモリ
105 レジスタ
106メモリアクセス制御部
107 データメモリ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ