JP2017134443A - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP2017134443A JP2017134443A JP2016011234A JP2016011234A JP2017134443A JP 2017134443 A JP2017134443 A JP 2017134443A JP 2016011234 A JP2016011234 A JP 2016011234A JP 2016011234 A JP2016011234 A JP 2016011234A JP 2017134443 A JP2017134443 A JP 2017134443A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- instruction
- register
- execution
- storage unit
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
図1は、本実施形態によるプロセッサ1の一例を示すブロック図である。
図1に示すように、プロセッサ1は、複数(例えば、N個)のプロセッシングエレメント(10−1、10−2、・・・、10−N)と、PC(プログラムカウンタ)更新部20と、命令フェッチ部30と、実行管理ユニット40と、レジスタ管理ユニット50と、ストアバッファユニット60と、メモリ管理ユニット70とを備えている。プロセッサ1は、メモリ管理ユニット70を介してデータメモリ71に接続されている。
図2(a)は、アセンブリ言語で記述されたプログラム(PR1)の一例を示すリストである。また、図2(b)は、図2(a)に示すプログラム(PR1)をアトミックブロックに分割して、展開連結リストにした一例である。
図2(b)に示すように、プログラム(PR1)は、アトミックブロックAB_A〜AB_Eに分割される。例えば、アトミックブロックAB_Dは、始点(始端)が、分岐先の先頭命令である“add r2,r2,r1”(命令I1)であり、終点(終端)が、分岐命令である“bneq loop”(命令I2)である。
ここで、図3を参照して、PE10の構成について説明する。
図3に示すように、PE10は、命令キャッシュ部11と、レジスタファイル部12と、命令実行部13とを備えている。
命令キャッシュ部11(一時記憶部の一例)は、命令フェッチ部30から出力された命令をキャッシュとして記憶するレジスタ群である。命令キャッシュ部11は、例えば、キャッシュレジスタ(C1)〜キャッシュレジスタ(CM)のM個のレジスタを有し、アトミックブロックを記憶する。ここで、キャッシュレジスタの個数Mは、例えば、1つのアトミックブロックが格納可能なサイズであり、例えば、16である。
なお、PE10は、アトミックブロックの初回の実行において、命令フェッチ部30から出力された命令を命令実行部13に実行させつつ、順番に命令キャッシュ部11に記憶させるようにしてもよいし、命令フェッチ部30から出力された命令を順番に命令キャッシュ部11に記憶させ、当該命令キャッシュ部11から命令を読み出して、命令実行部13に実行させてもよい。また、PE10は、アトミックブロックの2回目の実行において、命令キャッシュ部11から順番に命令を読み出して、命令実行部13に実行させる。
また、PE10は、命令キャッシュ部11が記憶する命令をパイプライン処理により、並列に実行可能に構成されているものとする。
図4は、本実施形態における実行管理ユニット40の構成例を示すブロック図である。
図4に示すように、実行管理ユニット40は、管理テーブル記憶部41と、キャッシュミスハンドラ部42と、プリデコーダ部43とを備えている。
また、「PTR1」及び「PTR2」は、次に実行されるアトミックブロックの当該管理テーブルにおける行番号(ポインタ)である。すなわち、「PTR1」及び「PTR2」は、次に実行するPE10を示す次実行情報である。なお、本実施形態では、分岐命令が、例えば、2つの分岐先を持つ場合の一例であるため、「PTR1」及び「PTR2」の2つのポインタを有しているが、例えば、分岐命令が、M個の分岐先を持つ場合には、M個のポインタを有することになる。
キャッシュミスハンドラ部42は、アトミックブロックのPE10への割り当て及び実行を制御する。キャッシュミスハンドラ部42は、例えば、アトミックブロックがキャッシュミスである場合に、キャッシュミスハンドラ部42は、複数のPE10のうちの1つに、アトミックブロックを割り当て、当該PE10に実行させる。また、キャッシュミスハンドラ部42は、次に実行するアトミックブロックがキャッシュヒットである場合に、当該ヒットしたPE10に、既に命令キャッシュ部11に記憶されているアトミックブロックを実行させる。
また、プリデコーダ部43は、比較回路421と、AND(アンド)回路422と、AND回路423と、LRU(Least Recently Used)アービタ424と、ハンドラ部425とを備えている。
AND回路423は、AND回路422の出力と、プリデコーダ部43から出力される分岐命令を示す分岐命令信号との論理積演算の結果を、HIT信号として出力する。このHIT信号は、次の実行予定のPE10に対してキャッシュヒットであることを示す信号である。すなわち、AND回路423は、キャッシュヒットである場合に、H状態を出力する。
また、ハンドラ部425は、キャッシュミスの場合に、LRUアービタ424によって選択されたPE10に対応する管理情報を更新する。すなわち、ハンドラ部425は、キャッシュミスの場合に、管理テーブル記憶部41の対応する「PE_NO」の行に、上述した「BTA」と、「有効フラグ」と、「LGT」と、「PTR1」と、「PTR2」とを対応付けた管理情報を記憶させる。
また、実行管理ユニット40は、複数のPE10の1つに次に実行するアトミックブロックを割り当てる場合に、管理テーブルの当該アトミックブロックに対応する「LGT」を記憶させるとともに、「有効フラグ」を、無効を示す値(例えば、“0”)に更新する。実行管理ユニット40は、PE10が、当該アトミックブロックの実行を完了した場合に、当該アトミックブロックに対応する「有効フラグ」を、有効を示す値(例えば、“1”)に更新する。
図5において、「FIFO」は、PE10を識別するPE識別情報を示し、当該PE識別情報を実行順に記憶している。また、「UPD」は、アトミックブロックの実行において、レジスタが更新されたことを示すフラグ(UPDフラグ)である。すなわち、「UPD」は、レジスタが更新されたことを示す更新情報である。「UPD」は、例えば、“1”である場合に更新されたことを示し、“0”である場合に更新されていないことを示す。
また、「ACT」は、当該PE10が実行中であるか否かを示すACTフラグである。「ACT」は、例えば、“1”である場合に当該PE10が実行中であることを示し、“0”である場合に当該PE10が実行中でないことを示す。
図5に示す例では、例えば、「FIFO」が“PE_1”に対応する更新履歴情報は、「UPD」が“11・・・”であり、「W/A」が“0/0・・・”であることを示している。また、「RAW」が“00・・・”であり、「ACT」が“1”であることを示している。
図6に示すように、レジスタ管理ユニット50は、更新履歴記憶部51と、マルチプレクサ52と、マルチプレクサ53とを備えている。なお、図6に示す更新履歴記憶部51は、上述した図5に示す更新履歴情報のうち、特定のレジスタ(例えば、RegX)に関する「UPD」、「W/A」、及び「RAW」のみを表記している。
マルチプレクサ52は、「RAW」の値に基づいて、更新履歴情報EN1のWフラグと、更新履歴情報EN2のAフラグとのいずれかを選択し、PE10−3(PE_3)をストールさせるSTALLB信号を出力する。なお、STALLB信号は、負論理の信号であり、“0”の場合にストールとなる。また、マルチプレクサ52は、「RAW」が“0”である場合に、更新履歴情報EN1のWフラグの値をSTALLB信号として出力する。また、マルチプレクサ52は、「RAW」が“1”である場合に、更新履歴情報EN2のAフラグとの値をSTALLB信号として出力する。
例えば、読み込み要求のあったPE10に対応する「RAW」が“1”である場合に、レジスタ管理ユニット50は、マルチプレクサ52によって当該PE10に対応するAフラグに基づいて、当該PE10への命令のエントリを保留するか否かのSTALLB信号を生成する。また、この場合、レジスタ管理ユニット50は、当該PE10のレジスタ(RegX)からデータを当該PE10に読み込ませる。
また、レジスタ管理ユニット50は、アトミックブロックをPE10に割り当てた初回の命令実行において記憶された更新履歴情報のうち、Wフラグ、Aフラグ、及び「RAW」を“0”に変更し、キャッシュヒットが発生した2回目以降の命令実行において記憶された更新履歴情報の状態を維持する。
また、ストアバッファユニット60は、ストアバッファ記憶部61と、エントリテーブル記憶部62とを備えている。
図7は、本実施形態におけるストアバッファ記憶部61の構成例を示す図である。
図7に示すように、ストアバッファ記憶部61は、N個のストアバッファテーブルを備えている。また、ストアバッファテーブルは、例えば、「LPC」と、「Ld」と、「St」と、「Addr」と、「Data」と、「完了」と、「終了」とを対応付けて記憶する。なお、ストアバッファテーブルは、PE10の命令キャッシュ部11のサイズ分の行を有している。
なお、ストアバッファユニット60は、データメモリ71にデータを書き込むアクセス要求に対して、PE10に対応するストアバッファテーブルに、「LPC」(ローカル位置情報)と、当該アクセス情報とを対応付けて記憶させるとともに、データメモリ71に当該データを記憶させる。
図8において、「FIFO」は、PE10を識別するPE識別情報を示し、「エントリNO」は、上述したストアバッファテーブルの番号を示している。
例えば、図8に示す例では、「FIFO」が“PE_1”に対応する「エントリNO」が“1”であり、最上行になるため、“PE_1”に対応するPE10によるアクセスが、最も優先順位が高いことを示している。
<命令の実行処理>
まず、本実施形態によるプロセッサ1の命令実行の処理について説明する。
プロセッサ1は、PC値をアドレスとしてプログラムメモリに出力し、命令フェッチ部30が、プログラムメモリから出力された命令をIR31に記憶させる。プロセッサ1は、図2に示すようなアトミックブロックに分割して、複数のPE10のうちの1つに割り当てて、アトミックブロック単位の命令を当該PE10に実行させる。この際に、実行管理ユニット40は、PE10の割り当て、及び、PE10の並列処理を管理する。
この図において、状態S1は、命令実行中のアクティブ状態を示し、状態S2は、保留中(ストール中)のアクティブ状態を示している。また、状態S3は、アトミックブロックの命令実行が終了したスリープ状態を示している。
図9に示すように、実行管理ユニット40は、アトミックブロックをPE10に割り当てて、命令を実行させることで、まず、PE10を状態S1に遷移させる。実行管理ユニット40は、管理テーブル記憶部41が記憶する管理テーブルの当該PE10に対応する「有効フラグ」を“1”にする。
また、状態S2において、ストールの要因が解決した場合に、実行管理ユニット40は、当該PE10にストール解除を送信し、状態S1に遷移させる。
また、状態S3において、前回実行したアトミックブロックが再実行される場合(キャッシュヒットの場合)に、実行管理ユニット40は、再び状態S2に遷移させて、命令キャッシュ部11に記憶されている命令を実行させる。
また、キャッシュミスが発生した場合に、実行管理ユニット40は、無効化されているPE10のうちの1つに、アトミックブロックを割り当てて、再び状態S1に遷移させる。
また、全てのPE10に対応する「有効フラグ」が“1”である場合には、実行管理ユニット40は、PE10が、状態S3(スリープ状態)又は「有効フラグ」が“0”になるまで、新たなアトミックブロックの実行を保留させる。
図4において、行L1に対応するPE10が、分岐命令を実行すると、比較回路421が、PC値と、次に実行予定のアトミックブロックに対応するPE10(行L2)の「BTA」とを比較し、一致する場合に、H状態を出力する。また、AND回路422は、比較回路421の出力と、次に実行予定のアトミックブロックに対応するPE10の「有効フラグ」との論理積演算の結果を出力する。図4に示す例では、行L2の「有効フラグ」が“1”(=H状態)であるので、AND回路422は、H状態を出力する。そして、AND回路423が、プリデコーダ部43から出力される分岐命令を示す分岐命令信号(ここでは、H状態)と、AND回路422の出力(H状態)との論理積演算の結果(H状態)をHIT信号として出力する。また、実行管理ユニット40は、「BTA」が静的に決まっているとき、行L2の「BTA」をPC更新部20に出力して、PC21の値を「BTA」の値に更新させる。すなわち、図4に示す例では、実行管理ユニット40は、HIT信号にH状態を出力し、「PE_NO」が“6”のPE10に命令キャッシュ部11に記憶されている命令を実行させる。
図10は、本実施形態によるプロセッサ1のパイプライン処理の一例を示す図である。
図10に示すように、プロセッサ1の各PE10は、「IF」、「ID」、「RR」、「EX」、及び「WR」の5つの処理(サイクル)を並列に処理するパイプライン処理を実行する。
図10に示すように、PE10は、例えば、「命令1」、「命令2」、・・・の順に、5つの処理(サイクル)をずらして実行して、パイプライン処理を実行する。
図11は、本実施形態によるPE10の並列処理の一例を示す図である。
図11(a)は、「アトミックブロックA」〜「アトミックブロックD」(AB_A〜AB_D)の展開連結リストにされたプログラムの一例を示している。また、図11(b)は、プロセッサ1が有するPE10(10−1、10−2、10−3、10−4、・・・、10−N)を示している。
図11(c)に示すように、時刻T1において、プロセッサ1は、まず、PE10−1(PE_1)に、「アトミックブロックA」を割り当て、PE10−1が、「アトミックブロックA」の命令を逐次実行する。
また、時刻T5において、プロセッサ1は、さらに、PE10−3(PE_3)に、命令キャッシュ部11に記憶されている「アトミックブロックD」の命令を実行させる。ここで、実行管理ユニット40は、上述した図4に示す処理によりキャッシュヒットを判定し、PE10−3(PE_3)に「アトミックブロックD」を再実行させる。これにより、PE10−2とPE10−3とが並列実行される。
なお、図11(c)において、時刻T4以降の期間PT1は、並列実行の期間である。
このように、実行管理ユニット40は、割り当てたアトミックブロック(「アトミックブロックB」及び「アトミックブロックD」を複数のPE10(10−2、10−3)に並列実行させる。
次に、本実施形態によるプロセッサ1のデータ依存性の回避処理について説明する。
プロセッサ1のレジスタ管理ユニット50は、以下の基本ルールに基づいて、PE10のレジスタ間のデータ依存性を回避する処理を実行する。
(1)PE10は、レジスタにデータの書き込みを行う際には、自身のレジスタにデータを書き込む。また、PE10は、レジスタに対して、書き込みを行った場合には、レジスタ管理ユニット50に更新履歴テーブルの更新を依頼し、レジスタ管理ユニット50は、更新履歴記憶部51の更新履歴テーブルを更新する。
図6において、更新履歴情報EN2に対応するPE10−3(PE_3)において、レジスタRegXに読み出し命令が実行された場合に、PE10−3(PE_3)は、レジスタ管理ユニット50にストールするか否かの問合せを行う。レジスタ管理ユニット50は、PE10−3(PE_3)に対応する更新履歴情報EN2のAフラグが“0”であるため、更新履歴情報EN2の「RAW」を“0”のままとし、マルチプレクサ52により、更新履歴情報EN1のWフラグと更新履歴情報EN2の「RAW」とに基づいてSTALLB信号にL状態を出力する。その結果、当該PE10−3(PE_3)が、レジスタRegXの読み出し命令の実行を保留(ストール)する。
図12は、本実施形態によるプロセッサ1のPE10間のRAWハザード処理の一例を示す図である。
図12は、2つのPE10(PE_1、PE_3)が並列に命令実行され、且つ、各PE10がパイプライン処理を実行している状態を示している。また、図12において、波形W1は、PE_3の「RAW」の論理状態を示し、波形W2は、PE_3のAフラグの論理状態を示している。また、波形W3は、PE_1のAフラグの論理状態を示し、波形W4は、PE_1のWフラグの論理状態を示し、波形W5は、PE_3のSTALLB信号の論理状態を示している。なお、各波形において、横軸は、時間を示し、縦軸は、論理状態を示している。
また、同様に時刻T11において、PE10−3(PE_3)が、レジスタRegXに読み出し命令を実行すると、レジスタ管理ユニット50は、PE_3に対応する管理情報の「RAW」が“0”(L状態)であるため、マルチプレクサ53によって、最も近い過去に実行されたPE_1をRegXの読み込み元として選択する。また、レジスタ管理ユニット50は、PE_1に対応する管理情報のWフラグと、PE_3に対応する管理情報の「RAW」とに基づいて、マルチプレクサ52によって、PE_3のSTALLB信号をL状態にする。その結果、PE_3の命令実行が保留される。
図13は、本実施形態によるプロセッサ1の自身のPE10内のRAWハザード処理の一例を示す図である。
図13は、PE10−3(PE_3)が命令実行され、且つ、パイプライン処理を実行している状態を示している。また、図13において、波形W6は、PE_3の「RAW」の論理状態を示し、波形W7は、PE_3のAフラグの論理状態を示している。また、波形W8は、PE_3のSTALLB信号の論理状態を示している。なお、各波形において、横軸は、時間を示し、縦軸は、論理状態を示している。
次に、時刻T22において、PE10−3(PE_3)が、レジスタRegXに読み出し命令を実行すると、レジスタ管理ユニット50は、管理情報のAフラグが“1”(H状態)であるため、PE_3に対応する管理情報の「RAW」を“1”(1状態)に更新する。そして、レジスタ管理ユニット50は、マルチプレクサ53によって、自身のPE_3をRegXの読み込み元として選択する。また、レジスタ管理ユニット50は、PE_3に対応する管理情報のAフラグと、PE_3に対応する管理情報の「RAW」とに基づいて、マルチプレクサ52によって、PE_3のSTALLB信号をH状態にする。その結果、PE_3の命令実行が保留されずにそのまま実行される。
このように、自身のPE10において、レジスタRegXに書き込みが実行されている場合には、PE10は、自身のレジスタRegXからデータを読み出す(読み込む)。
次に、本実施形態によるプロセッサ1のストアバッファ処理について説明する。
ストアバッファユニット60は、ストアバッファ記憶部61のストアバッファテーブルに基づいて、ロード命令に対して、当該ロード命令の「Addr」を利用して、エントリテーブル記憶部62の「FIFO」上の自身のストアバッファテーブルを含めた最も近いストアバッファテーブルを一つ検出する。ストアバッファユニット60は、当該ストアバッファテーブルの中で、最も新しく(最も「LPC」の値が大きく)、且つ当該ロード命令の「Addr」の値が一致しているアクセス情報のデータをオペランドデータネットワークNW2に出力する(ロードバイパス処理)。これにより、ストアバッファユニット60は、データメモリ71に過去に書き込んだ(ストアした)データを再利用して、再びデータメモリ71から読み出す(ロードする)必要がないので高速にデータを読み出す(ロードする)ことができる。また、データメモリ71から読み出したデータが更新されていない場合には、ストアバッファユニット60は、データメモリ71から過去に時間を掛けて読み出した(ロードした)データを再利用して、再びデータメモリ71から読み出す(ロードする)必要がないので高速にデータを読み出す(ロードする)ことができる。
(1)単一スレッドに対して高速処理が求められるアプリケーション。
(2)複数のアトミックブロックで、且つ、用意されたPE10の数の範囲内でこのブロック群が構成されループ構造のあるアルゴリズムを持つアプリケーション。
(3)加えて複雑な制御フローを持つアルゴリズムで構成されたアプリケーション。
また、本実施形態によるプロセッサ1は、専用のコンパイラを用意する必要なしに、複数のPE10に並列実行させて、非数値計算処理を高速処理することができる。
これにより、本実施形態によるプロセッサ1は、アトミックブロック単位でPE10への割り当て及び並列実行を容易に実現することができる。
これにより、本実施形態によるプロセッサ1は、キャッシュミス、及びキャッシュヒットの判定を管理テーブルに基づいてより容易に行うことができる。
これにより、本実施形態によるプロセッサ1は、キャッシュヒットを簡易な手法により適切に判定することができる。
これにより、本実施形態によるプロセッサ1は、キャッシュミスの場合に、簡易な処方により、アトミックブロックを適切にPE10に割り当てることができる。
これにより、本実施形態によるプロセッサ1は、既に実行したアトミックブロックを適切に管理することができる。
これにより、本実施形態によるプロセッサ1は、パイプライン処理により、さらに高速に命令を実行することができる。
これにより、本実施形態によるプロセッサ1は、RAWハザードが発生した場合においても、適切に命令を実行することができる。すなわち、本実施形態によるプロセッサ1は、PE10のレジスタ間のデータ依存性を回避することができる。
これにより、本実施形態によるプロセッサ1は、更新履歴情報に基づいて、RAWハザードが発生した場合に、RAWハザードの発生したPE10の命令実行を適切に保留(ストール)させることができる。
これにより、本実施形態によるプロセッサ1は、簡易な手法により、RAWハザードの発生の検出、及び近い過去にレジスタに書き込みを実行しているPE10の選択を適切に行うことができる。
これにより、本実施形態によるプロセッサ1は、PE10のそれぞれが、複数のレジスタを備える場合にも対応可能である。また、本実施形態によるプロセッサ1は、PE10が、レジスタを多数(複数)備えることにより、より複雑な処理が可能になる。
これにより、本実施形態によるプロセッサ1は、データメモリ71とのアクセスにおいても適切に処理を行うことができる。また、本実施形態によるプロセッサ1は、ストアバッファ記憶部61を利用することで、例えば、データメモリ71から過去に読み出したデータ、または、ストアバッファ記憶部61を介してデータメモリ71に記憶させたデータを、再利用できるので、データアクセスの処理時間を短縮することができる。
これにより、本実施形態によるプロセッサ1は、簡易な手法により、適切にデータメモリ71からデータを読み出すことができる。
これにより、本実施形態によるプロセッサ1は、簡易な手法により、適切にデータメモリ71からデータを書き込むことができる。
例えば、上記の実施形態において、実行管理ユニット40が、管理テーブル記憶部41を備える例を説明したが、実行管理ユニット40の外部に、管理テーブル記憶部41を備えるようにしてもよい。また、レジスタ管理ユニット50が、更新履歴記憶部51を備える例を説明したが、レジスタ管理ユニット50の外部に、更新履歴記憶部51を備えるようにしてもよい。また、ストアバッファユニット60が、ストアバッファ記憶部61及びエントリテーブル記憶部62を備える例を説明したが、ストアバッファユニット60の外部に、ストアバッファ記憶部61とエントリテーブル記憶部62とのいずれか一方又は両方を備えるようにしてもよい。
また、上記の実施形態において、レジスタ管理ユニット50が、命令の実行を保留、及び保留の解除をPE10に指示する例を説明したが、レジスタへの読み出し命令の際のレジスタ管理ユニット50への問合せで、PE10が自ら命令の実行を保留し、レジスタ管理ユニット50が、問合せに対して保留の解除をPE10に指示するようにしてもよい。
また、実行管理ユニット40の構成は、図4に示す構成に限定されるものではなく、実行管理ユニット40は、他の構成により実現されてもよい。また、レジスタ管理ユニット50の構成は、図6に示す構成に限定されるものではなく、レジスタ管理ユニット50は、他の構成により実現されてもよい。
また、本発明の一態様は、それぞれが、割り当てられた単位命令列を一時記憶する一時記憶部を有し、それぞれの前記一時記憶部に記憶された前記単位命令列に含まれる命令を実行可能な複数のプロセッシングエレメントと、アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である前記単位命令列に分割し、分割した当該単位命令列を前記複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた前記単位命令列を前記複数のプロセッシングエレメントに並列実行させる実行管理部とを備え、前記複数のプロセッシングエレメントのそれぞれは、前記命令の実行に利用されるレジスタを有し、さらに、前記複数のプロセッシングエレメントの間で、前記レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行している前記プロセッシングエレメントによる前記単位命令列の当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行する前記プロセッシングエレメントの命令実行を保留させるレジスタ管理部を備えることを特徴とするプロセッサである。
Claims (14)
- それぞれが、割り当てられた単位命令列を一時記憶する一時記憶部を有し、それぞれの前記一時記憶部に記憶された前記単位命令列に含まれる命令を実行可能な複数のプロセッシングエレメントと、
アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である前記単位命令列に分割し、分割した当該単位命令列を前記複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた前記単位命令列を前記複数のプロセッシングエレメントに並列実行させる実行管理部と
を備えることを特徴とするプロセッサ。 - 前記実行管理部は、
分割した前記単位命令列が前記複数のプロセッシングエレメントのいずれの前記一時記憶部にも記憶されていない場合に、当該単位命令列を前記複数のプロセッシングエレメントのいずれかに割り当て、
分割した前記単位命令列が前記複数のプロセッシングエレメントのいずれかの前記一時記憶部に既に記憶されている場合に、当該プロセッシングエレメントに、当該一時記憶部に既に記憶されている前記単位命令列を並列実行させる
ことを特徴とする請求項1に記載のプロセッサ。 - 前記プログラムにおける前記単位命令列の先頭命令の位置を示す先頭位置情報と、当該単位命令列が有効であるか否かを示す有効情報と、次に実行する前記プロセッシングエレメントを示す次実行情報とを対応付けた管理情報を複数有する管理テーブルを記憶する管理テーブル記憶部を備え、
前記実行管理部は、
前記プログラムに分岐命令が検出された際に、前記管理テーブル記憶部が記憶する前記管理テーブルに基づいて、次に実行する前記単位命令列が前記複数のプロセッシングエレメントのいずれかの前記一時記憶部に既に記憶されており、且つ有効な状態であるか否かを判定する
ことを特徴とする請求項2に記載のプロセッサ。 - 前記実行管理部は、
前記プログラムに分岐命令が検出された際に、前記管理テーブル記憶部が記憶する前記管理テーブルから、前記次実行情報に基づいて当該分岐命令の次に実行する前記単位命令列に対応する前記先頭位置情報及び前記有効情報を取得し、
取得した前記先頭位置情報の示す位置と、次に実行する前記プログラムの実行位置とが一致し、且つ、取得した前記有効情報が有効を示す場合に、前記次実行情報に一致する前記プロセッシングエレメントが、前記単位命令列を前記一時記憶部に記憶しており、且つ、有効な状態であると判定する
ことを特徴とする請求項3に記載のプロセッサ。 - 前記実行管理部は、
取得した前記先頭位置情報の示す位置と、次に実行する前記プログラムの実行位置とが一致しない、又は取得した前記有効情報が無効を示す場合に、前記複数のプロセッシングエレメントの1つに次に実行する前記単位命令列を割り当てるとともに、割り当てた前記単位命令列に対応させて、前記管理テーブルを更新する
ことを特徴とする請求項4に記載のプロセッサ。 - 前記実行管理部は、
前記複数のプロセッシングエレメントの1つに次に実行する前記単位命令列を割り当てる場合に、前記管理テーブルの当該単位命令列に対応する前記先頭位置情報を記憶させるとともに、前記有効情報を、無効を示す値に更新し、
前記プロセッシングエレメントが、当該単位命令列の実行を完了した場合に、当該単位命令列に対応する前記有効情報を、有効を示す値に更新する
ことを特徴とする請求項5に記載のプロセッサ。 - 前記プロセッシングエレメントは、パイプライン処理により前記命令を実行する
ことを特徴とする請求項1から請求項6のいずれか一項に記載のプロセッサ。 - 前記複数のプロセッシングエレメントのそれぞれは、前記命令の実行に利用されるレジスタを有し、
さらに、前記複数のプロセッシングエレメントの間で、前記レジスタの書き込み後の読み出しによるデータ依存であるRAWハザードが発生した場合に、最も近い過去に当該レジスタに書き込みを実行している前記プロセッシングエレメントによる前記単位命令列の当該レジスタへの書き込みが完了するまで、当該レジスタの読み出しを実行する前記プロセッシングエレメントの命令実行を保留させるレジスタ管理部を備える
ことを特徴とする請求項1から請求項7のいずれか一項に記載のプロセッサ。 - 前記プロセッシングエレメントを識別するPE識別情報と、前記単位命令列の実行において、前記レジスタが更新されたことを示す更新情報と、前記単位命令列における前記レジスタの最後の書き込みが完了したことを示す完了情報と、前記レジスタの書き込みが実行されたことを示す実行情報とを対応付けた更新履歴情報を前記プロセッシングエレメントの個数分有する更新履歴テーブルを記憶する更新履歴記憶部を備え、
前記レジスタ管理部は、
前記更新履歴記憶部が記憶する更新履歴テーブルに基づいて、前記RAWハザードが発生したか否かを判定するとともに、前記RAWハザードが発生した場合に、前記更新履歴テーブルに含まれる、最も近い過去に前記レジスタに書き込みを実行している前記プロセッシングエレメントに対応する完了情報に基づいて、前記RAWハザードの発生した前記プロセッシングエレメントの命令実行を保留させる
ことを特徴とする請求項8のいずれか一項に記載のプロセッサ。 - 前記レジスタ管理部は、
前記実行情報に基づいて、前記RAWハザードが発生したか否かを判定し、前記更新情報に基づいて、最も近い過去に前記レジスタに書き込みを実行している前記プロセッシングエレメントを選択する
ことを特徴とする請求項9に記載のプロセッサ。 - 前記複数のプロセッシングエレメントのそれぞれは、前記レジスタを複数備え、
前記更新履歴記憶部は、前記複数のレジスタのそれぞれに対応する前記更新履歴テーブルを記憶する
ことを特徴とする請求項9又は請求項10に記載のプロセッサ。 - 前記単位命令列に含まれる各命令に対応するローカル位置情報と、外部記憶部にアクセスした履歴を示すアクセス情報とを対応付けたストアバッファテーブルを、前記複数のプロセッシングエレメントの個数分記憶するストアバッファ記憶部と、
前記プロセッシングエレメントから前記外部記憶部にアクセス要求があった場合に、前記ストアバッファ記憶部が記憶する当該プロセッシングエレメントに対応する前記ストアバッファテーブルに基づいて、前記外部記憶部とのアクセスを制御するストアバッファ制御部と
を備えることを特徴とする請求項1から請求項11のいずれか一項に記載のプロセッサ。 - 前記アクセス情報には、アクセスの種別を示す種別情報と、前記外部記憶部においてアクセスする記憶位置情報及びアクセスしたデータとが対応付けられており、
前記ストアバッファ制御部は、
前記外部記憶部からデータを読み出す前記アクセス要求に対して、前記ストアバッファテーブルに当該アクセス要求に対応する前記データが存在する場合に、当該データを前記プロセッシングエレメントに出力し、
前記ストアバッファテーブルに当該アクセス要求に対応する前記データが存在しない場合に、前記外部記憶部から読み出した前記データを前記プロセッシングエレメントに出力する
ことを特徴とする請求項12に記載のプロセッサ。 - 前記ストアバッファ制御部は、
前記外部記憶部にデータを書き込む前記アクセス要求に対して、前記プロセッシングエレメントに対応する前記ストアバッファテーブルに、前記ローカル位置情報と、当該アクセス情報とを対応付けて記憶させるとともに、前記外部記憶部に当該データを記憶させる
ことを特徴とする請求項12又は請求項13に記載のプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016011234A JP6167193B1 (ja) | 2016-01-25 | 2016-01-25 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016011234A JP6167193B1 (ja) | 2016-01-25 | 2016-01-25 | プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6167193B1 JP6167193B1 (ja) | 2017-07-19 |
JP2017134443A true JP2017134443A (ja) | 2017-08-03 |
Family
ID=59351428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016011234A Active JP6167193B1 (ja) | 2016-01-25 | 2016-01-25 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6167193B1 (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001282549A (ja) * | 2000-03-30 | 2001-10-12 | Nec Corp | プログラム変換装置及び方法並びに記録媒体 |
JP2004302706A (ja) * | 2003-03-31 | 2004-10-28 | Nec Corp | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム |
WO2014120690A1 (en) * | 2013-01-29 | 2014-08-07 | Advanced Micro Devices, Inc. | Hardware and software solutions to divergent branches in a parallel pipeline |
WO2014120703A1 (en) * | 2013-01-29 | 2014-08-07 | Advanced Micro Devices, Inc. | Solution to divergent branches in a simd core using hardware pointers |
US20140331236A1 (en) * | 2011-12-01 | 2014-11-06 | National University Of Singapore | Polymorphic heterogeneous multi-core architecture |
-
2016
- 2016-01-25 JP JP2016011234A patent/JP6167193B1/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001282549A (ja) * | 2000-03-30 | 2001-10-12 | Nec Corp | プログラム変換装置及び方法並びに記録媒体 |
JP2004302706A (ja) * | 2003-03-31 | 2004-10-28 | Nec Corp | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム |
US20140331236A1 (en) * | 2011-12-01 | 2014-11-06 | National University Of Singapore | Polymorphic heterogeneous multi-core architecture |
WO2014120690A1 (en) * | 2013-01-29 | 2014-08-07 | Advanced Micro Devices, Inc. | Hardware and software solutions to divergent branches in a parallel pipeline |
WO2014120703A1 (en) * | 2013-01-29 | 2014-08-07 | Advanced Micro Devices, Inc. | Solution to divergent branches in a simd core using hardware pointers |
Non-Patent Citations (3)
Title |
---|
大津金光,外3名: "プログラム実行パスに基づいた投機スレッド分割", システム制御情報学会論文誌, vol. 第22巻,第6号, JPN6017013435, JP, pages Pages:209〜219 * |
玉造潤史,外1名: "Runtime Restructuringによる複数コントロールフロー予測", 情報処理学会研究報告, vol. 第2002巻,第81号,(2002-ARC-149), JPN6017013437, 23 August 2002 (2002-08-23), JP, pages Pages:49〜54 * |
酒井淳嗣,外6名: "制御並列アーキテクチャ向け自動並列化コンパイル手法", 情報処理学会論文誌, vol. 第40巻,第5号, JPN6017013433, 15 May 1999 (1999-05-15), JP, pages Pages:2045〜2053 * |
Also Published As
Publication number | Publication date |
---|---|
JP6167193B1 (ja) | 2017-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6143872B2 (ja) | 装置、方法、およびシステム | |
JP5894120B2 (ja) | ゼロサイクルロード | |
US10417001B2 (en) | Physical register table for eliminating move instructions | |
JP3927546B2 (ja) | 同時マルチスレッド化プロセッサ | |
JP5499029B2 (ja) | 仮想処理装置のための割込み制御 | |
US10761846B2 (en) | Method for managing software threads dependent on condition variables | |
JP7149405B2 (ja) | 複数のテーブルの分岐ターゲットバッファ | |
KR20170076564A (ko) | 레지스터 리네이밍을 사용한 무브 명령어 처리 | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
US20120079241A1 (en) | Instruction execution based on outstanding load operations | |
WO2017030692A1 (en) | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor | |
JP2006260571A (ja) | デュアルスレッドプロセッサ | |
US10831537B2 (en) | Dynamic update of the number of architected registers assigned to software threads using spill counts | |
US20130179662A1 (en) | Method and System for Resolving Thread Divergences | |
JP2006040141A (ja) | マルチスレッドプロセッサ | |
US20070028151A1 (en) | Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage | |
GB2520731A (en) | Soft-partitioning of a register file cache | |
US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
JP2017537408A (ja) | アウトオブオーダー(ooo)プロセッサにおける早期命令実行を提供すること、ならびに関連する装置、方法、およびコンピュータ可読媒体 | |
US8701122B2 (en) | Method and system for exception-less system calls in an operating system | |
JP7131313B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP6167193B1 (ja) | プロセッサ | |
US20140229677A1 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
US10430342B2 (en) | Optimizing thread selection at fetch, select, and commit stages of processor core pipeline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170418 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170606 |
|
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: 20170613 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170626 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6167193 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |