JP2012168725A - マルチスレッド・プロセッサ - Google Patents
マルチスレッド・プロセッサ Download PDFInfo
- Publication number
- JP2012168725A JP2012168725A JP2011029113A JP2011029113A JP2012168725A JP 2012168725 A JP2012168725 A JP 2012168725A JP 2011029113 A JP2011029113 A JP 2011029113A JP 2011029113 A JP2011029113 A JP 2011029113A JP 2012168725 A JP2012168725 A JP 2012168725A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- instruction
- specific
- executed
- processor
- 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.)
- Withdrawn
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
【課題】処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止すること。
【解決手段】複数のスレッドに対応した複数のレジスタ領域と、実行スレッドを切り替えるスレッド制御手段と、スレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、特定の記憶媒体からデータを読み込んで実行スレッドに対応したレジスタ領域に格納する特定の命令が含まれるか否かを判定する特定命令判定手段と、を備え、所定数の命令の中に特定の命令が含まれると判定された場合には、特定の命令と切り替え先のスレッドの命令とを並行して実行させると共に、特定の命令を実行したスレッドに対応したレジスタ領域に特定の記憶媒体から読み込んだデータを格納するように制御するマルチスレッド・プロセッサ。
【選択図】図1
【解決手段】複数のスレッドに対応した複数のレジスタ領域と、実行スレッドを切り替えるスレッド制御手段と、スレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、特定の記憶媒体からデータを読み込んで実行スレッドに対応したレジスタ領域に格納する特定の命令が含まれるか否かを判定する特定命令判定手段と、を備え、所定数の命令の中に特定の命令が含まれると判定された場合には、特定の命令と切り替え先のスレッドの命令とを並行して実行させると共に、特定の命令を実行したスレッドに対応したレジスタ領域に特定の記憶媒体から読み込んだデータを格納するように制御するマルチスレッド・プロセッサ。
【選択図】図1
Description
本発明は、複数のスレッドが各自に処理を行うマルチスレッド・プロセッサに関し、特に、複数のスレッドによりハードウエア・マルチスレッディング処理が行われるマルチスレッド・プロセッサに関する。
近年、プロセッサの性能向上に伴い、複数の機能を一つのプロセッサにより実現させるための技術が研究・実用化されている。例えば、車両に搭載される車載制御装置の分野では、ある車載機器を制御する制御装置と他の車載機器を制御する制御装置(例えば変速機の制御装置とエンジンの制御装置等)を統合して、コンピュータ・ハードウエアを縮小し、コストや重量の低減を図る動きが見られる。
こうしたハードウエア統合の一手法として、ハードウエア・マルチスレッディング処理と称されるものが知られている。ハードウエア・マルチスレッディング処理は、命令バッファや演算結果の格納場所(レジスタ)等を異にする複数のスレッドが、命令デコーダや演算回路等、ハードウエアの一部を共有して行なう処理である。
特許文献1には、マルチスレッド式プロセッサにおけるコンピュータ処理方法について記載されている。この方法によれば、アクティブ・スレッドの実行がプログラム可能な時間期間を超える時に、スレッド切替えが強制される。
ところで、ハードウエア・マルチスレッディング処理を行うマルチスレッド・プロセッサでは、スレッドの切り替えが、例えば所定サイクル毎のように、所定の規則に従って規則的に行われるため、外部メモリからデータを読み込む等、レイテンシの長い命令を実行すると、実行中にスレッド切り替えのタイミングが到来する可能性があり、その場合に切り替えられるスレッドの処理をどう扱うかという課題が存在する。
上記特許文献1に記載の方法では、スレッド切り替えを強制する方法を採用している。この場合、それ以前に行っていた処理が中断されて無駄となったり、或いは実行開始時点で中止されて後回しとなったりする。この結果、処理のリアルタイム性が損なわれたり、処理効率が低下したりする場合がある。
一方、レイテンシの長い命令の実行が終了するまでスレッドの切り替えを行わず、それまでの間、切り替え先のスレッドを待たせるという方法も考えられる。しかしながら、この方法でも同様に、切り替え先のスレッドの処理のリアルタイム性が損なわれるという問題が生じ得る。
本発明はこのような課題を解決するためのものであり、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止することが可能なマルチスレッド・プロセッサを提供することを、主たる目的とする。
上記目的を達成するための本発明の第1の態様は、
複数のスレッドによりハードウエア・マルチスレッディング処理が行われるマルチスレッド・プロセッサであって、
前記複数のスレッドに対応した複数のレジスタ領域と、
前記複数のスレッドのうち処理を実行する実行スレッドを切り替えるスレッド制御手段と、
前記スレッド制御手段により前記実行スレッドが切り替えられるスレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、特定の記憶媒体からデータを読み込んで前記実行スレッドに対応したレジスタ領域に格納する特定の命令が含まれるか否かを判定する特定命令判定手段と、
を備え、
前記スレッド制御手段は、前記特定命令判定手段により前記所定数の命令の中に前記特定の命令が含まれると判定された場合には、前記特定の命令と、前記スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、前記特定の命令を実行したスレッドに対応したレジスタ領域に前記特定の記憶媒体から読み込んだデータを格納するように制御することを特徴とする、
マルチスレッド・プロセッサである。
複数のスレッドによりハードウエア・マルチスレッディング処理が行われるマルチスレッド・プロセッサであって、
前記複数のスレッドに対応した複数のレジスタ領域と、
前記複数のスレッドのうち処理を実行する実行スレッドを切り替えるスレッド制御手段と、
前記スレッド制御手段により前記実行スレッドが切り替えられるスレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、特定の記憶媒体からデータを読み込んで前記実行スレッドに対応したレジスタ領域に格納する特定の命令が含まれるか否かを判定する特定命令判定手段と、
を備え、
前記スレッド制御手段は、前記特定命令判定手段により前記所定数の命令の中に前記特定の命令が含まれると判定された場合には、前記特定の命令と、前記スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、前記特定の命令を実行したスレッドに対応したレジスタ領域に前記特定の記憶媒体から読み込んだデータを格納するように制御することを特徴とする、
マルチスレッド・プロセッサである。
この本発明の第1の態様によれば、スレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、特定の記憶媒体からデータを読み込んで実行スレッドに対応したレジスタ領域に格納する特定の命令が含まれると判定された場合には、特定の命令と切り替え先のスレッドの命令とを並行して実行させると共に、特定の命令を実行したスレッドに対応したレジスタ領域に特定の記憶媒体から読み込んだデータを格納するように制御するため、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止することができる。
本発明の第1の態様において、
前記特定の命令は、該マルチスレッド・プロセッサが実行する命令のうちレイテンシが最小の命令のレイテンシに前記所定数を乗じた値よりも、レイテンシが大きい命令であるものとすると、好適である。
前記特定の命令は、該マルチスレッド・プロセッサが実行する命令のうちレイテンシが最小の命令のレイテンシに前記所定数を乗じた値よりも、レイテンシが大きい命令であるものとすると、好適である。
また、本発明の第1の態様において、
前記複数のスレッドにより実行される命令が格納される命令バッファを備え、
前記特定命令判定手段は、前記スレッド切り替えタイミングに先立って前記スレッド制御手段から通知される信号により前記スレッド切り替えタイミングを把握すると共に、該把握されたスレッド切り替えタイミングと前記命令バッファに格納された命令との関係に基づき、前記所定数の命令の中に前記特定の命令が含まれるか否かを判定する手段であるものとしてもよい。
前記複数のスレッドにより実行される命令が格納される命令バッファを備え、
前記特定命令判定手段は、前記スレッド切り替えタイミングに先立って前記スレッド制御手段から通知される信号により前記スレッド切り替えタイミングを把握すると共に、該把握されたスレッド切り替えタイミングと前記命令バッファに格納された命令との関係に基づき、前記所定数の命令の中に前記特定の命令が含まれるか否かを判定する手段であるものとしてもよい。
また、本発明の第1の態様において、
前記複数のスレッドにより実行される命令が格納される命令バッファを備え、
前記特定命令判定手段は、固定周期で到来する前記スレッド切り替えタイミングを予知すると共に、該予知したスレッド切り替えタイミングと前記命令バッファに格納された命令との関係に基づき、前記所定数の命令の中に前記特定の命令が含まれるか否かを判定する手段であるものとしてもよい。
前記複数のスレッドにより実行される命令が格納される命令バッファを備え、
前記特定命令判定手段は、固定周期で到来する前記スレッド切り替えタイミングを予知すると共に、該予知したスレッド切り替えタイミングと前記命令バッファに格納された命令との関係に基づき、前記所定数の命令の中に前記特定の命令が含まれるか否かを判定する手段であるものとしてもよい。
本発明の第2の態様は、
複数のスレッドによりハードウエア・マルチスレッディング処理が行われるマルチスレッド・プロセッサであって、
前記複数のスレッドに対応した複数のレジスタ領域と、
前記複数のスレッドのうち処理を実行する実行スレッドを切り替えるスレッド制御手段と、
前記スレッド制御手段により前記実行スレッドが切り替えられるスレッド切り替えタイミングの直前に実行される命令が、特定の記憶媒体からデータを読み込んで前記実行スレッドに対応したレジスタ領域に格納する特定の命令であるか否かを判定する特定命令判定手段と、
を備え、
前記スレッド制御手段は、前記特定命令判定手段により前記スレッド切り替えタイミングの直前に実行される命令が前記特定の命令であると判定された場合には、前記特定の命令と、前記スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、前記特定の命令を実行したスレッドに対応したレジスタ領域に前記特定の記憶媒体から読み込んだデータを格納するように制御することを特徴とする、
マルチスレッド・プロセッサである。
複数のスレッドによりハードウエア・マルチスレッディング処理が行われるマルチスレッド・プロセッサであって、
前記複数のスレッドに対応した複数のレジスタ領域と、
前記複数のスレッドのうち処理を実行する実行スレッドを切り替えるスレッド制御手段と、
前記スレッド制御手段により前記実行スレッドが切り替えられるスレッド切り替えタイミングの直前に実行される命令が、特定の記憶媒体からデータを読み込んで前記実行スレッドに対応したレジスタ領域に格納する特定の命令であるか否かを判定する特定命令判定手段と、
を備え、
前記スレッド制御手段は、前記特定命令判定手段により前記スレッド切り替えタイミングの直前に実行される命令が前記特定の命令であると判定された場合には、前記特定の命令と、前記スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、前記特定の命令を実行したスレッドに対応したレジスタ領域に前記特定の記憶媒体から読み込んだデータを格納するように制御することを特徴とする、
マルチスレッド・プロセッサである。
本発明の第2の態様によれば、スレッド切り替えタイミングの直前に実行される命令が、特定の記憶媒体からデータを読み込んで実行スレッドに対応したレジスタ領域に格納する特定の命令であると判定された場合には、特定の命令と切り替え先のスレッドの命令とを並行して実行させると共に、特定の命令を実行したスレッドに対応したレジスタ領域に特定の記憶媒体から読み込んだデータを格納するように制御するため、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止することができる。
本発明によれば、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止することが可能なマルチスレッド・プロセッサを提供することができる。
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
<第1実施例>
以下、図面を参照し、本発明の第1実施例に係るマルチスレッド・プロセッサ1について説明する。
以下、図面を参照し、本発明の第1実施例に係るマルチスレッド・プロセッサ1について説明する。
[構成・基本機能]
図1は、本発明の第1実施例に係るマルチスレッド・プロセッサ1のシステム構成例である。マルチスレッド・プロセッサ1は、主要な構成として、プログラムメモリ10と、命令バッファ20#0、20#1、20#2と、命令デコーダ25と、レジスタファイル30#0、30#1、30#2と、実行ユニット40と、スレッドスケジュール部50と、パイプライン制御部60と、スケジューリング情報保存部70と、命令判定部80と、を備える。
図1は、本発明の第1実施例に係るマルチスレッド・プロセッサ1のシステム構成例である。マルチスレッド・プロセッサ1は、主要な構成として、プログラムメモリ10と、命令バッファ20#0、20#1、20#2と、命令デコーダ25と、レジスタファイル30#0、30#1、30#2と、実行ユニット40と、スレッドスケジュール部50と、パイプライン制御部60と、スケジューリング情報保存部70と、命令判定部80と、を備える。
なお、本実施例では、二以上の任意の数であるスレッド数(後述するアクセス専用スレッドを含む)が3であるとし、「#」の後の数字(0、1、2)がスレッドナンバーを示すものとする。また、図1に示す構成は、ハードウエア・マルチスレッディング処理を行うための一般的な構成を例示したものであり、ハードウエア・マルチスレッディング処理を行うことが可能な構成であれば、任意の構成要素を置換、削除、追加等してよい。
ハードウエア・マルチスレッディング処理とは、複数のスレッドが、命令デコーダや演算回路等のハードウエアの一部を共有して処理を行なうものである。スレッドとは、ハードウエアを部分的に共有して処理を行なう仮想的な処理主体をいう。本実施例では、命令バッファやレジスタファイルはスレッド毎に用意されているが、その他の構成要素はスレッド間で共用されるものとする。
スレッド#0、#1、#2は、例えば数サイクル毎に、実行スレッドとして順に選択される。以下、実行スレッドとは、処理を実行中のスレッドをいうものとする。スレッドの選択順の決定手法には種々の手法があり、最も簡易な例では、スレッド#0→スレッド#1→スレッド#2→スレッド#0…のように、循環的に選択される。なお、スレッドの切り替えは、スレッドスケジュール部60によって指示され、スレッドの切り替えを行うための具体的な処理は、パイプライン制御部70によって行われる。
プログラムメモリ10は、例えばフラッシュROM(Read Only Memory)であり、各スレッドが実行するプログラム(命令列)を格納する。プログラムメモリ10は、図示しない命令フェッチユニットから命令の格納場所を示すアドレスが入力されると、当該アドレスに格納された命令を命令側メモリ・バス12に出力する。この命令フェッチユニットは、スレッド毎のプログラムカウンタを備えており、プログラムカウンタの指し示すアドレスをプログラムメモリ10に出力する。
命令バッファ20#0、20#1、20#2は、スレッド毎に設けられている。前述の命令フェッチユニットは、プログラムメモリ10が出力した命令を、スレッドに対応した命令バッファに格納する。すなわち、スレッド#0が実行する命令をフェッチした場合は命令バッファ20#0に命令を格納し、スレッド#1が実行する命令をフェッチした場合は命令バッファ20#1に命令を格納し、スレッド#2が実行する命令をフェッチした場合は命令バッファ20#2に命令を格納する。命令バッファ20#0、20#1、20#2は、例えばFIFO(First In, First Out)に従って命令を入出力するように制御される。
命令デコーダ24は、命令バッファのうち実行スレッドに対応するものから供給される命令を解読(デコード)し、図示しない命令発行部に出力する。命令デコーダ24による解読結果は、例えば、演算の種別、ソースオペランド、結果の格納場所等である。命令発行部は、命令デコーダ24から入力された命令に従ってレジスタファイルレジスタ30#0、30#1、30#2等から演算対象値等を取得し、実行ユニット40に出力する。
レジスタファイル30#0、30#1、30#2は、それぞれ、スレッド毎に設定されたレジスタ領域である。これらのレジスタ領域は、それぞれが物理的に単独のレジスタであってもよいし、共有レジスタが領域分割されたものであっても構わない。
実行ユニット40は、例えば、スレッドの要求に応じて四則演算その他の演算処理を行うためのALU(Arithmetic Logic Unit)やFPGA(Field Programmable Gate Array)等の演算回路42、WRITE命令やREAD命令を実行するLSU(Load Store Unit)44等を含み、更に、これらによって用いられる高速アクセス可能な汎用レジスタ46を有する。
LSU44は、上記READ命令を実行する際には、データ側メモリ・バス48を介して、RAM(Random Access Memory)やEEPROM(Electrically Erasable and Programmable Read Only Memory)、外部装置等からデータを読み込んで汎用レジスタ46に格納する。汎用レジスタ46に格納されたデータは、パイプライン制御部60によって、原則として実行スレッドに対応する命令バッファに格納される。
スレッドスケジュール部50は、所定のアルゴリズムに基づきスレッドの切り替えを指示する。スレッドスケジュール部50は、原則として、前述の如くスレッド#0→スレッド#1→スレッド#2→スレッド#0…のように循環的にスレッドを切り替えるように指示する。各スレッドに割り当てる処理クロック数(サイクル数)は、均等としてもよいし、スレッドの負荷に応じて強弱が付けられてもよい。
更に、スレッドスケジュール部50は、後述するように命令判定部80から情報供給された際に判定されるスレッドの優先度に基づいてスレッドの切り替え先を動的に決定する。なお、スレッドの優先度は、命令判定部80から供給される情報とは無関係に所望のタイミングで決定されてもよい。詳しくは、後述する。
パイプライン制御部60は、スレッドスケジュール部50から実行スレッドを特定するためのコンテキスト情報等が与えられ、内部クロックの立ち上がり等に応じて、上記命令フェッチユニット、命令デコーダ24、命令発行部、実行ユニット40等の各動作を制御する。また、命令バッファやレジスタファイルのうち、実行スレッドに対応するものを選択するためのセレクタの制御等も行っている。
スケジューリング情報保存部70は、スレッドスケジュール部50によって使用される記憶手段であり、レジスタやキャッシュメモリ、フラッシュメモリ等が用いられる。
[特徴的な処理]
(READ命令に関する処理)
命令判定部80には、スレッドスケジュール部50により実行スレッドが切り替えられるスレッド切り替えタイミングに先だって(例えば数クロック前に)、当該スレッド切り替えタイミングが到来することを予告するスレッド切り替え予告信号が、スレッドスケジュール部50から入力される。
(READ命令に関する処理)
命令判定部80には、スレッドスケジュール部50により実行スレッドが切り替えられるスレッド切り替えタイミングに先だって(例えば数クロック前に)、当該スレッド切り替えタイミングが到来することを予告するスレッド切り替え予告信号が、スレッドスケジュール部50から入力される。
なお、スレッド切り替えタイミングが固定周期で到来するような場合は、命令判定部80が内部タイマー等によってスレッド切り替えタイミングを予知してもよい。
命令判定部80は、スレッド切り替え予告信号が入力されると、スレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、データ側メモリ・バス48に接続されたRAMやEEPROM等の特定の記憶媒体からデータを読み込んで、実行スレッドに対応したレジスタファイルに格納するREAD命令が含まれるか否かを判定する。
ここで、「スレッド切り替えタイミングの直前に実行される命令以前に実行される所定数の命令」とは、例えば数個の命令を意味するものであってもよいし、所定数=1、従ってスレッド切り替えタイミングの直前に実行される命令のみを指すものであってもよい。現実的には、READ命令の完了に4クロックを要する場合、「所定数」は3程度の値とすることが望ましい。すなわち、READ命令のレイテンシに相当する命令数と同じか、それ以下とする。
これによって、通常、レイテンシが最小の命令は1クロックで完了することを考慮すると、READ命令が所定数の命令に含まれている場合、「次に実行されるREAD命令の完了までに、スレッド切り替えタイミングが到来する」という状態であるか否かを判別することができる。
命令判定部80は、所定数の命令の中にREAD命令が含まれると判定すると、その旨を示す信号Srをスレッドスケジュール部50に出力する。スレッドスケジュール部50は、信号Srが入力されると、当該READ命令と、スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、READ命令を実行したスレッド(すなわち切り替え元のスレッド)に対応したレジスタファイルに特定の記憶媒体から読み込んだデータを格納するように、パイプライン制御部60に例外的な指示を出力する。
前述のように、LSU44によってREAD命令が実行されると、データ側メモリ・バス48を介して読み込まれたデータは汎用レジスタ46に格納される。そして、汎用レジスタ46に格納されたデータは、パイプライン制御部60によって、原則として「実行スレッドに対応する命令バッファ」に格納される。従って、上記のような例外的な指示がなされないと、汎用レジスタ46に格納されたデータは、スレッド切り替えタイミングにおいて切り替えられた切り替え先のスレッドに対応するレジスタファイルに格納されてしまうのである。この結果、スレッド間でデータの不整合が生じることとなる。
この点、本実施例に係るマルチスレッド・プロセッサ1では、汎用レジスタ46に格納されたデータを、切り替え元のスレッドに対応したレジスタファイルに格納するようにパイプライン制御部60に指示するため、上記のようなデータの不整合が生じるのを防止することができる。
また、スレッドスケジュール部50は、スレッド切り替えタイミングの直前期に実行されるREAD命令と、切り替え先のスレッドの命令を並行して実行させるため、マルチスレッド・プロセッサ1は、処理のリアルタイム性を維持しつつ(切り替え先のスレッドが予定通りに実行開始されることを意味する)、効率的な処理を行うことができる。
係る並行処理を行う際には、以下のようなアルゴリズムで切り替え先のスレッドを選択すると、好適である。
(1)命令バッファに格納された先頭の命令がバスアクセスを要しない命令(READ命令やWRITE命令、その他外部機器へのアクセス命令でないもの)であるスレッドを選択する。
(2)上記(1)に該当するスレッドが複数存在する場合、以下のような手法によりスレッドを選択する。
(2_1)スレッド番号の小さい順に選択する。
(2_2)事前にスケジューリング情報保存部により設定が保存されている優先度が高いスレッドを選択する。
(2_3)上記(2_1)、(2_2)により、スレッド切り替え先から外されたスレッドを優先的に選択する。
(1)命令バッファに格納された先頭の命令がバスアクセスを要しない命令(READ命令やWRITE命令、その他外部機器へのアクセス命令でないもの)であるスレッドを選択する。
(2)上記(1)に該当するスレッドが複数存在する場合、以下のような手法によりスレッドを選択する。
(2_1)スレッド番号の小さい順に選択する。
(2_2)事前にスケジューリング情報保存部により設定が保存されている優先度が高いスレッドを選択する。
(2_3)上記(2_1)、(2_2)により、スレッド切り替え先から外されたスレッドを優先的に選択する。
上記「優先度」の設定は、例えば以下のように行うことができる。
(2_2_1)READ命令の実行中にバスアクセスが競合しないスレッド、すなわち、バスアクセス命令の実行が最も後であるスレッドを選択する。
(2_2_2)処理内容の重要度に基づいて決定する。例えば本実施例のマルチスレッド・プロセッサが車載制御装置に適用された場合、走行に関する処理(加速、減速、操舵等に関する処理)を行っているスレッドの優先度を高くする。
(2_2_1)READ命令の実行中にバスアクセスが競合しないスレッド、すなわち、バスアクセス命令の実行が最も後であるスレッドを選択する。
(2_2_2)処理内容の重要度に基づいて決定する。例えば本実施例のマルチスレッド・プロセッサが車載制御装置に適用された場合、走行に関する処理(加速、減速、操舵等に関する処理)を行っているスレッドの優先度を高くする。
また、上記に拘わらず、優先度が極めて高い処理が割り込み等によって発生した場合は、当該処理が終了するまでの間、シングルスレッド処理を行ってもよい。
(WRITE命令に関する処理)
なお。スレッド切り替えタイミングの直前に実行される命令以前に実行される所定数の命令の中に、データ側メモリ・バス48を介してRAMやEEPROM等にデータを書き込むWRITE命令が存在する場合にも、並行処理を行わせるものとしてよい。この場合、命令判定部80は、所定数の命令の中にWRITE命令が含まれると判定すると、その旨を示す信号Swをスレッドスケジュール部50に出力する。
なお。スレッド切り替えタイミングの直前に実行される命令以前に実行される所定数の命令の中に、データ側メモリ・バス48を介してRAMやEEPROM等にデータを書き込むWRITE命令が存在する場合にも、並行処理を行わせるものとしてよい。この場合、命令判定部80は、所定数の命令の中にWRITE命令が含まれると判定すると、その旨を示す信号Swをスレッドスケジュール部50に出力する。
スレッドスケジュール部50は、信号Swが入力されると、当該WRITE命令と、スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させるように、パイプライン制御部60に例外的な指示を出力する。この場合、スレッドの切り替えタイミングにおいては、LSU44が既にレジスタファイルからデータを取得しているため、READ命令の場合のようなレジスタファイルの指定は不要である。切り替え先のスレッドの選択手法に関しては、READ命令に関する処理と同様の手法を援用することができる。
[処理フロー]
図2は、本実施例のマルチスレッド・プロセッサ1により実行される特徴的な処理の流れを示すフローチャートである。本フローは、例えば所定周期で繰り返し実行される。
図2は、本実施例のマルチスレッド・プロセッサ1により実行される特徴的な処理の流れを示すフローチャートである。本フローは、例えば所定周期で繰り返し実行される。
まず、命令判定部80は、スレッドスケジュール部50からスレッド切り替え予告信号が入力されたか否かを判定する(S100)。スレッド切り替え予告信号が入力されていない場合は、命令判定部80は、何も処理を行わない。
命令判定部80は、スレッド切り替え予告信号が入力されると、スレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、READ命令が含まれるか否かを判定する(S102)。所定数の命令の中に、READ命令が含まれない場合は、命令判定部80は、スレッドスケジュール部50に対して信号を返さない。この結果、スレッドスケジュール部50は、原則として定められた順序でスレッドの切り替えを行う(S104)。
一方、所定数の命令の中に、READ命令が含まれる場合は、命令判定部80は、スレッドスケジュール部50に対して信号Srを出力する(S106)。この結果、スレッドスケジュール部50は、READ命令と、スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、READ命令を実行した切り替え元のスレッドに対応したレジスタファイルに特定の記憶媒体から読み込んだデータを格納するように、パイプライン制御部60に例外的な指示を出力する(S108)。
[従来構成との比較]
図3は、本実施例のマルチスレッド・プロセッサ1のような特徴的な処理を行わない従来構成のマルチスレッド・プロセッサにより実行される処理の推移を模式的に示す図である。図示するように、従来構成のマルチスレッド・プロセッサでは、スレッド切り替えタイミングの直前期にREAD命令が実行される場合、当該READ命令を中断するか、他のスレッドの処理を待たせた上でREAD命令を継続実行していた。このため、切り替え先のスレッドの処理のリアルタイム性が損なわれたり、処理効率が低下したりするという不都合が生じていた。
図3は、本実施例のマルチスレッド・プロセッサ1のような特徴的な処理を行わない従来構成のマルチスレッド・プロセッサにより実行される処理の推移を模式的に示す図である。図示するように、従来構成のマルチスレッド・プロセッサでは、スレッド切り替えタイミングの直前期にREAD命令が実行される場合、当該READ命令を中断するか、他のスレッドの処理を待たせた上でREAD命令を継続実行していた。このため、切り替え先のスレッドの処理のリアルタイム性が損なわれたり、処理効率が低下したりするという不都合が生じていた。
これに対し、図4は、本実施例のマルチスレッド・プロセッサ1により実行される処理の推移を模式的に示す図である。図示するように、本実施例のマルチスレッド・プロセッサ1では、スレッド切り替えタイミングの直前期にREAD命令が実行される場合、当該READ命令と切り替え先のスレッドの命令を並行して実行させると共に、READ命令の結果の格納先が、当該READ命令の発行元のスレッドとなるように制御している。このため、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止することができる。
[まとめ]
以上説明した本実施例のマルチスレッド・プロセッサ1によれば、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止することができる。
以上説明した本実施例のマルチスレッド・プロセッサ1によれば、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのを防止することができる。
<第2実施例>
以下、図面を参照し、本発明の第2実施例に係るマルチスレッド・プロセッサ2について説明する。
以下、図面を参照し、本発明の第2実施例に係るマルチスレッド・プロセッサ2について説明する。
図5は、本発明の第2実施例に係るマルチスレッド・プロセッサ2のシステム構成例である。図示するように、マルチスレッド・プロセッサ2は、第1実施例に係るマルチスレッド・プロセッサ1が有する構成に加えて、パイプライン制御部60により使用される一次保存領域62を備える。
一次保存領域62は、スケジューリング情報保存部70と同様、レジスタやキャッシュメモリ、フラッシュメモリ等が用いられる。
本実施例に係るパイプライン制御部60は、READ命令を実行した切り替え元のスレッドに対応したレジスタファイルに特定の記憶媒体から読み込んだデータを格納する際には、LSU44によって汎用レジスタ46に書き込まれたデータを、一旦、一次保存領域62に格納する。そして、実行スレッドによるレジスタファイルの使用状況を見ながら、一次保存領域62に格納したデータを切り替え元のスレッドに対応したレジスタファイルにコピーする。
レジスタファイルは、スレッド毎に設けられているものの、同一のレジスタを領域分割したものである場合もあるし、複数のレジスタに対してセレクタ等が設けられている場合もある。従って、実行スレッドが自己に対応したレジスタファイルにアクセスしている間は、切り替え元のスレッドに対応したレジスタファイルにアクセスできない可能性があるのである。第2実施例に係るパイプライン制御部60では、汎用レジスタ46に書き込まれたデータを、一旦、一次保存領域62に格納するため、レジスタファイルへのアクセス状況が混雑しているような場面においても、汎用レジスタ46からのコピーを確実に行うことができる。この結果、データの不整合が生じるのをより強力に防止することができる。
以上説明した本実施例のマルチスレッド・プロセッサ2によれば、処理のリアルタイム性を維持しつつ効率的な処理を行うと共に、データの不整合が生じるのをより強力に防止することができる。
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
例えば、スレッド切り替え先の決定主体は、スレッドスケジュール部50であるものとしたが、スケジューリング情報保存部70がスレッド切り替え先の決定処理を行うものとしてもよい。
1、2 マルチスレッド・プロセッサ
10 プログラムメモリ
12 命令側メモリ・バス
20#0、20#1、20#2 命令バッファ
25 命令デコーダ
30#0、30#1、30#2 レジスタファイル
40 実行ユニット
42 演算回路
44 LSU
46 汎用レジスタ
48 データ側メモリ・バス
50 スレッドスケジュール部
60 パイプライン制御部
62 一次保存領域
70 スケジューリング情報保存部
80 命令判定部
10 プログラムメモリ
12 命令側メモリ・バス
20#0、20#1、20#2 命令バッファ
25 命令デコーダ
30#0、30#1、30#2 レジスタファイル
40 実行ユニット
42 演算回路
44 LSU
46 汎用レジスタ
48 データ側メモリ・バス
50 スレッドスケジュール部
60 パイプライン制御部
62 一次保存領域
70 スケジューリング情報保存部
80 命令判定部
Claims (5)
- 複数のスレッドによりハードウエア・マルチスレッディング処理が行われるマルチスレッド・プロセッサであって、
前記複数のスレッドに対応した複数のレジスタ領域と、
前記複数のスレッドのうち処理を実行する実行スレッドを切り替えるスレッド制御手段と、
前記スレッド制御手段により前記実行スレッドが切り替えられるスレッド切り替えタイミングの直前に実行される命令を含み、当該命令以前に実行される所定数の命令の中に、特定の記憶媒体からデータを読み込んで前記実行スレッドに対応したレジスタ領域に格納する特定の命令が含まれるか否かを判定する特定命令判定手段と、
を備え、
前記スレッド制御手段は、前記特定命令判定手段により前記所定数の命令の中に前記特定の命令が含まれると判定された場合には、前記特定の命令と、前記スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、前記特定の命令を実行したスレッドに対応したレジスタ領域に前記特定の記憶媒体から読み込んだデータを格納するように制御することを特徴とする、
マルチスレッド・プロセッサ。 - 請求項1に記載のマルチスレッド・プロセッサであって、
前記特定の命令は、該マルチスレッド・プロセッサが実行する命令のうちレイテンシが最小の命令のレイテンシに前記所定数を乗じた値よりも、レイテンシが大きい命令である、
マルチスレッド・プロセッサ。 - 請求項1又は2に記載のマルチスレッド・プロセッサであって、
前記複数のスレッドにより実行される命令が格納される命令バッファを備え、
前記特定命令判定手段は、前記スレッド切り替えタイミングに先立って前記スレッド制御手段から通知される信号により前記スレッド切り替えタイミングを把握すると共に、該把握されたスレッド切り替えタイミングと前記命令バッファに格納された命令との関係に基づき、前記所定数の命令の中に前記特定の命令が含まれるか否かを判定する手段である、
マルチスレッド・プロセッサ。 - 請求項1又は2に記載のマルチスレッド・プロセッサであって、
前記複数のスレッドにより実行される命令が格納される命令バッファを備え、
前記特定命令判定手段は、固定周期で到来する前記スレッド切り替えタイミングを予知すると共に、該予知したスレッド切り替えタイミングと前記命令バッファに格納された命令との関係に基づき、前記所定数の命令の中に前記特定の命令が含まれるか否かを判定する手段である、
マルチスレッド・プロセッサ。 - 複数のスレッドによりハードウエア・マルチスレッディング処理が行われるマルチスレッド・プロセッサであって、
前記複数のスレッドに対応した複数のレジスタ領域と、
前記複数のスレッドのうち処理を実行する実行スレッドを切り替えるスレッド制御手段と、
前記スレッド制御手段により前記実行スレッドが切り替えられるスレッド切り替えタイミングの直前に実行される命令が、特定の記憶媒体からデータを読み込んで前記実行スレッドに対応したレジスタ領域に格納する特定の命令であるか否かを判定する特定命令判定手段と、
を備え、
前記スレッド制御手段は、前記特定命令判定手段により前記スレッド切り替えタイミングの直前に実行される命令が前記特定の命令であると判定された場合には、前記特定の命令と、前記スレッド切り替えタイミングにおいて切り替えられる切り替え先のスレッドの命令とを並行して実行させると共に、前記特定の命令を実行したスレッドに対応したレジスタ領域に前記特定の記憶媒体から読み込んだデータを格納するように制御することを特徴とする、
マルチスレッド・プロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011029113A JP2012168725A (ja) | 2011-02-14 | 2011-02-14 | マルチスレッド・プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011029113A JP2012168725A (ja) | 2011-02-14 | 2011-02-14 | マルチスレッド・プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012168725A true JP2012168725A (ja) | 2012-09-06 |
Family
ID=46972827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011029113A Withdrawn JP2012168725A (ja) | 2011-02-14 | 2011-02-14 | マルチスレッド・プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012168725A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019032864A (ja) * | 2013-02-19 | 2019-02-28 | オラクル・インターナショナル・コーポレイション | 連続イベント処理(cep)クエリの並列の実行 |
US10657138B2 (en) | 2012-09-28 | 2020-05-19 | Oracle International Corporation | Managing continuous queries in the presence of subqueries |
-
2011
- 2011-02-14 JP JP2011029113A patent/JP2012168725A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10657138B2 (en) | 2012-09-28 | 2020-05-19 | Oracle International Corporation | Managing continuous queries in the presence of subqueries |
US10891293B2 (en) | 2012-09-28 | 2021-01-12 | Oracle International Corporation | Parameterized continuous query templates |
US11182388B2 (en) | 2012-09-28 | 2021-11-23 | Oracle International Corporation | Mechanism to chain continuous queries |
JP2019032864A (ja) * | 2013-02-19 | 2019-02-28 | オラクル・インターナショナル・コーポレイション | 連続イベント処理(cep)クエリの並列の実行 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4610593B2 (ja) | デュアルスレッドプロセッサ | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
US9501320B2 (en) | Scheduling threads according to real time bit in predetermined time period or in variable time period of requested time ratio | |
US7269712B2 (en) | Thread selection for fetching instructions for pipeline multi-threaded processor | |
US20080040730A1 (en) | Event-based bandwidth allocation mode switching method and apparatus | |
US20030154235A1 (en) | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor | |
JP5173714B2 (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 | |
JP5607545B2 (ja) | マイクロプロセッサシステムにおける命令フェッチングの優先順位付け | |
US20080040578A1 (en) | Multi-thread processor with multiple program counters | |
JP5861354B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP2006343872A (ja) | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 | |
JP2006039815A (ja) | マルチスレッドプロセッサおよびレジスタ制御方法 | |
JP2005050208A (ja) | マルチタスクシステムにおけるメモリ管理方式およびタスク制御装置 | |
JP2006092042A (ja) | 情報処理装置及びコンテキスト切り替え方法 | |
US7213134B2 (en) | Using thread urgency in determining switch events in a temporal multithreaded processor unit | |
JP5145936B2 (ja) | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 | |
JP5316407B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP2012168725A (ja) | マルチスレッド・プロセッサ | |
JP2005228294A (ja) | ネスト状割込みシステムの割込み優先順位制御 | |
JP7225745B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP2011216004A (ja) | マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法 | |
JP2004287883A (ja) | プロセッサ、計算機及び優先度決定方法 | |
JP2012093832A (ja) | 情報処理装置 | |
JP2010061642A (ja) | スレッドのスケジューリングテクニック | |
JP2005521937A (ja) | コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140513 |