JP2014153860A - マルチスレッドプロセッサ - Google Patents
マルチスレッドプロセッサ Download PDFInfo
- Publication number
- JP2014153860A JP2014153860A JP2013022209A JP2013022209A JP2014153860A JP 2014153860 A JP2014153860 A JP 2014153860A JP 2013022209 A JP2013022209 A JP 2013022209A JP 2013022209 A JP2013022209 A JP 2013022209A JP 2014153860 A JP2014153860 A JP 2014153860A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- authority
- schedule
- execution
- cycle number
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】ユーザ権限以外の権限でスレッドが動作した場合において、プログラムの実行速度が低下することを防止することができるマルチスレッドプロセッサを提供する。
【解決手段】マルチスレッドプロセッサは、各スレッドがサイクルごとにユーザ権限またはユーザ権限以外の権限で動作する。スレッドスケジューラ160は、サイクル単位で実行するスレッドを切り換える。スケジュール調整部192は、オペレーティングシステムまたはハイパーバイザによって実行するスレッドが設定される第1期間以外の第2期間に実行するスレッドを設定する。スケジュール調整部192は、ユーザ権限以外の権限で動作したスレッドが、第2期間において、補充的に実行されるように調整する。
【選択図】図1
【解決手段】マルチスレッドプロセッサは、各スレッドがサイクルごとにユーザ権限またはユーザ権限以外の権限で動作する。スレッドスケジューラ160は、サイクル単位で実行するスレッドを切り換える。スケジュール調整部192は、オペレーティングシステムまたはハイパーバイザによって実行するスレッドが設定される第1期間以外の第2期間に実行するスレッドを設定する。スケジュール調整部192は、ユーザ権限以外の権限で動作したスレッドが、第2期間において、補充的に実行されるように調整する。
【選択図】図1
Description
本発明は、マルチスレッドプロセッサに関し、特に各スレッドがサイクルごとにユーザ権限またはユーザ権限以外の権限で動作するマルチスレッドプロセッサに関する。
制御システムのような高い信頼性・リアルタイム性が求められるコンピュータシステムでは、要求される機能ごとに機器が用意され、これら複数の機器が連携動作することにより1つのシステムを構成している。近年では、複数の機能を1つのプロセッサにて統合実行する技術が知られている。
たとえば、特許文献1(特開2011−128767号公報)のマルチスレッド処理装置は、複数のスレッドに対して、スレッドの作動割合である帯域を設定する帯域設定手段と、各スレッドの処理負荷を監視し、各スレッドの処理負荷が平準化するような帯域変更を帯域設定手段に指示する帯域制御手段とを備える。
特許文献2(特開2010−286898号公報)のマルチスレッド実行装置は、プログラム毎に、命令の目標実行速度情報を記憶するとともに、命令の実行完了速度を監視する。フィードバック制御手段が、実行完了速度が目標実行速度情報に略一致するように、命令発行手段に命令を発行させる。
マルチスレッド環境で動作する各プログラムは、対応のスレッドに割り当てられる。各スレッドには、対応のプログラムの優先度などを考慮して、実行サイクルが割り当てられる。
しかしながら、スレッドにて動作するプログラムからスーパーバイザやハイパーバイザを呼び出すことによって、スーパーバイザやハイパーバイザがスレッドに割当てられた実行サイクルを消費する。その結果、ユーザ権限以外のスーパーバイザ権限やハイパーバイザ権限で動作したサイクル数だけプログラムが動作するサイクル数が減らされる。そのため、プログラムの実行速度が低下するという問題がある。
それゆえに、本発明の目的は、ユーザ権限以外の権限でスレッドが動作した場合において、プログラムの実行速度が低下することを防止することができるマルチスレッドプロセッサを提供することである。
上記課題を解決するために、本発明のマルチスレッドプロセッサは、各スレッドがサイクルごとにユーザ権限またはユーザ権限以外の権限で動作するマルチスレッドプロセッサであって、サイクル単位で実行するスレッドを切り換えるスケジューラと、オペレーティングシステムまたはハイパーバイザによって実行するスレッドが設定される第1期間以外の第2期間に実行するスレッドを設定するスケジュール調整部とを備える。スケジュール調整部は、ユーザ権限以外の権限で動作したスレッドが、第2期間において、補充的に実行されるように調整する。
本発明のマルチスレッドプロセッサによれば、ユーザ権限以外の権限でスレッドが動作した場合において、プログラムの実行速度が低下することを防止することができる。
以下、本発明の実施の形態について、図面を用いて説明する。
[第1の実施形態]
図1は、第1の実施形態のマルチスレッドプロセッサの概略構成の一例である。
[第1の実施形態]
図1は、第1の実施形態のマルチスレッドプロセッサの概略構成の一例である。
図1に示すように、このマルチスレッドプロセッサは、命令バス100と、主記憶部101と、第0命令バッファ110と、第1命令バッファ111と、命令フェッチ部145と、セレクタ120と、デコーダ130と、実行部140と、スレッドスケジューラ160と、スケジュールレジスタ180と、スケジュール調整部192と、実行サイクル数加算部190と、実行サイクル数テーブル記憶部191と、データバス170と、主記憶部102と、第0レジスタセット150と、第1レジスタセット151と、セレクタ121と、セレクタ122とを備える。
本実施の形態のマルチスレッドプロセッサは、スレッド0およびスレッド1からなるマルチスレッドの実行環境を有する。このマルチスレッドプロセッサは、各スレッドがサイクルごとにユーザ権限またはユーザ権限以外の権限で動作する。
マルチスレッド実行環境では、複数のスレッドが、ハードウエアの一部を共有して処理を行なうものである。ここで、スレッドとは、ハードウエアを部分的に共有して処理を行なう仮想的な処理主体をいう。本実施の形態では、第0命令バッファ110および第0レジスタセット150は、スレッド0で用いられ、第1命令バッファ111および第1レジスタセット151は、スレッド1で用いられる。プロセッサにおけるその他の構成要素はスレッド0およびスレッド1の間で共用される。
プロセッサが基本的な動作を行なう最小単位である1サイクル毎に、スレッド0またはスレッド1が実行スレッドとして順に選択される。以下、実行スレッドとは、処理を実行中のスレッドをいうものとする。実行スレッドの切り替えは、スレッドスケジューラ160によって制御される。
命令バス100は、接続された回路間で命令データが伝送されるバスである。データバス170は、接続された回路間でデータが伝送されるバスである。
主記憶部101は、命令バス100と接続されている。主記憶部101は、プログラムA、プログラムB、プログラムAで利用されるOS_A、プログラムBで利用されるOS_B、およびOS_AとOS_B間の保護や調停を行なうソフトウエアであるハイパーバイザを保持している。主記憶部101は、例えば、FD(Floppy Disk)、HDD(Hard Disk Drive)、ROM(Read Only Memory)、RAM(Random Access Memory)、CD(Compact Disk)、DVD(Digital Versatile Disk)などである。
スレッド0は、ユーザプログラムA、OS_A、またはハイパーバイザを実行する。
スレッド1は、ユーザプログラムB、OS_B、またはハイバーバイザを実行する。
スレッド1は、ユーザプログラムB、OS_B、またはハイバーバイザを実行する。
スレッド0がユーザプログラムAを実行するときには、実行部140によって、第0レジスタセット150にスレッド0の権限情報として「ユーザ権限」が設定され、スレッド0が「ユーザ権限」で動作する。スレッド0がOS_Aの機能(サービス)を実行するときには、実行部140によって、第0レジスタセット150にスレッド0の権限情報として「スーパーバイザ権限」が設定され、スレッド0が「スーパーバイザ権限」で動作する。スレッド0がハイパーバイザを実行するときには、実行部140によって、第0レジスタセット150にスレッド0の権限情報として「ハイパーバイザ権限」が設定され、スレッド0が「ハイパーバイザ権限」で動作する。
また、同様に、スレッド1がユーザプログラムBを実行するときには、実行部140によって、第1レジスタセット151にスレッド1の権限情報として「ユーザ権限」が設定され、スレッド1が「ユーザ権限」で動作する。スレッド1がOS_Bの機能(サービス)を実行するときには、実行部140によって、第1レジスタセット151にスレッド1の権限情報として「スーパーバイザ権限」が設定され、スレッド1が「スーパーバイザ権限」で動作する。スレッド1がハイパーバイザを実行するときには、実行部140によって、第1レジスタセット151にスレッド1の権限情報として「ハイパーバイザ権限」が設定され、スレッド1が「ハイパーバイザ権限」で動作する。
主記憶部102は、データバス170と接続されている。主記憶部102は、プログラムAおよびプログラムBが利用するデータを保持している。主記憶部102は、例えば、FD、HDD、RAMなどである。なお、主記憶部101と主記憶部102は同一の主記憶部であってもよい。また、プログラムA用およびプログラムB用にそれぞれ個別に主記憶部101、主記憶部102があってもよい。
第0命令バッファ110および第1命令バッファ111は、それぞれ命令バス100と接続されている。命令バス100は、主記憶部101と接続されている。
命令フェッチ部145は、第0命令バッファ110用のプログラムカウンタと、第1命令バッファ111用のプログラムカウンタを有する。実行部140は、第0命令バッファ110のプログラムカウンタのアドレスを命令バス100に出力して、主記憶部101から第0命令バッファ110にプログラムAの命令を1つずつ読み出す。命令フェッチ部145は、第1命令バッファ111のプログラムカウンタのアドレスを命令バス100に出力して、主記憶部101から第1命令バッファ111にプログラムBの命令を1つずつ読み出す。
第0命令バッファ110および第1命令バッファ111は、セレクタ120に接続されている。セレクタ120は、第0命令バッファ110および第1命令バッファ111のうち、1つの命令バッファを選択して、選択した命令バッファをデコーダ130に接続する。セレクタ120が選択する命令バッファは、スレッドスケジューラ160によって制御される。
デコーダ130は、セレクタ120から出力される第0命令バッファ110または第1命令バッファ111の命令を解読し、解読結果を実行部140に送出する。
第0レジスタセット150は、複数の汎用レジスタ、システムレジスタ(権限情報を含む)などを含む。第1レジスタセット151は、複数の汎用レジスタ、システムレジスタ(権限情報を含む)などを含む。
セレクタ121は、第0レジスタセット150または第1レジスタセット151を選択し、選択したレジスタセットのデータを実行部140へ送る。セレクタ122は、第0レジスタセット150または第1レジスタセット151を選択し、実行部140による実行結果を表わすデータを選択したレジスタセットへ送る。
実行部140は、デコーダ130から送られる解読された命令を実行する。実行部140は、演算の種類に応じて第0レジスタセット150または第1レジスタセット151に記憶されたデータに対して演算を行う。演算の内容は、加算、乗算、除算、ロード、ストア、または分岐などであり、実行部140は、それぞれの演算に応じた回路を含む。ロード(もしくはストア)の場合、実行部140からデータバス170にアドレスを出力して主記憶部102からデータを読込む(もしくは書込む)。読み込んだデータは第0レジスタセット150または第1レジスタセット151に格納する。実行部140が使用するレジスタセットは、セレクタ121と122によって選択される。セレクタ121、122はスレッドスケジューラ160によって制御される。
スケジュールレジスタ180は、図2に示すようなスケジュールテーブル200を記憶する。スケジュールテーブル200の各エントリには、番号が付されているとともに、実行するスレッド番号が設定される。スケジュールテーブル200は、15個のエントリを有し、15個のサイクルについて、実行するスレッドを定める。
スケジュールテーブル200は、第0〜第9のエントリを含むコアスケジュールテーブル201と、第10〜第14のエントリを含む補填用スケジュールテーブル202とを含む。
コアスケジュールテーブル201は、コア期間に実行されるスレッドを定める。コアスケジュールテーブル201は、スケジュール調整部192以外のOSまたはハイバーバイザによって設定される。たとえば、実行部140が、スレッド0およびスレッド1の実行順序および実行比率を定めるハイバーバイザを実行したときに、第14エントリのスレッドを実行後に、コアスケジュールテーブル201の各エントリのスレッド番号が設定される。
補填用スケジュールテーブル202は、補填用期間に実行されるスレッドを定める。補填用スケジュールテーブル202は、スケジュール調整部192によってスケジュール更新周期ごとに設定される。本実施の形態では、スケジュール更新周期は、15サイクルである。
スレッドスケジューラ160は、1サイクルごとにスケジュールテーブル200の1つのエントリを読み出す。スレッドスケジューラ160は、番号0のエントリから順にエントリを読み出し、最後のエントリを読み出したら、再度番号0のエントリから順に読み出す(循環すると記す)。
スレッドスケジューラ160は、スケジュールレジスタ180に設定された順番で各スレッドを1サイクル毎に切り替えて実行する。これにより、物理的に1つのプロセッサであるが、仮想的な複数のプロセッサを有するように振舞う。ここでの「サイクル」とは、1命令毎であってもよいし、まとまった命令ごとであっても良いし、一定時間であっても良い。
スレッドスケジューラ160は、読みだしたエントリに設定されたスレッド番号が「0」の場合には、セレクタ120に第0命令バッファ110からの命令の出力を選択させ、セレクタ121に第0レジスタセット150からのデータの読出しを選択させ、セレクタ122に第0レジスタセット150へのデータの書込みを選択させる。
スレッドスケジューラ160は、読みだしたエントリに設定されたスレッド番号が「1」の場合には、セレクタ120に第1命令バッファ111からの命令の出力を選択させ、セレクタ121に第1レジスタセット151からのデータの読出しを選択させ、セレクタ122に第1レジスタセット151へのデータの書込みを選択させる。
スレッドスケジューラ160は、読みだしたエントリに存在しないスレッド番号が設定されている場合、セレクタ120に第0命令バッファ110および第1命令バッファ111からのいずれの命令も選択させず、実行部140に、何も命令を実行させない(NOP(no operation)命令を実行する)。
実行サイクル数テーブル記憶部191は、図3に示すような実行サイクル数テーブル300を有する。実行サイクル数テーブル300の列301は、本実施の形態のスレッドの権限を示す。本実施の形態のスレッド0およびスレッド1は、「ハイパーバイザ権限」、「スーパーバイザ権限」、または「ユーザ権限」を有する。図3に示すように、実行サイクル数テーブル300の列302は、スレッド0用の実行サイクル数を格納する列である。実行サイクル数テーブル300の列303は、スレッド1用の実行サイクル数を格納する列である。実行サイクル数テーブル300の行311は、スレッド0、スレッド1のユーザ権限の実行サイクル数を格納する行である。 実行サイクル数テーブル300の行312は、スレッド0、スレッド1のスーパーバイザ権限の実行サイクル数を格納する行である。実行サイクル数テーブル300の行313は、スレッド0、スレッド1のハイパーバイザ権限の実行サイクル数を格納する行である。
実行サイクル数加算部190は、スレッドスケジューラ160と連携して、それぞれのスレッドにて実行されたハイパーバイザの実行サイクル数を実行サイクル数テーブル記憶部191に記録する。
(実行サイクル数加算部190の動作)
図4は、実行サイクル数加算部190の各サイクルでの動作手順を示すフローチャートである。初期状態では、実行サイクル数テーブル記憶部191に記憶される実行サイクル数はすべて「0」である。
図4は、実行サイクル数加算部190の各サイクルでの動作手順を示すフローチャートである。初期状態では、実行サイクル数テーブル記憶部191に記憶される実行サイクル数はすべて「0」である。
実行サイクル数加算部190は、スレッドスケジューラ160から実行しているスレッド番号を取得する(ステップS100)。
次に、実行サイクル数加算部190は、実行しているスレッドがスレッド0の場合には(ステップS101でYES)、第0レジスタセット150からスレッド0の権限情報を取得する(ステップS102)。
次に、実行サイクル数加算部190は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300におけるスレッド0の取得した権限の実行サイクル数に「1」を加算する。実行サイクル数加算部190は、たとえば、取得した権限がハイパーバイザ権限であった場合、実行サイクル数テーブル300の列302の行313に記録された実行サイクル数に「1」を加算する(ステップS103)。
次に、実行サイクル数加算部190は、実行しているスレッドがスレッド0でない場合には(ステップS101でNO)、第1レジスタセット151からスレッド1の権限情報を取得する(ステップS104)。
次に、実行サイクル数加算部190は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300におけるスレッド1の取得した権限の実行サイクル数に「1」を加算する。実行サイクル数加算部190は、たとえば、取得した権限がハイパーバイザ権限であった場合、実行サイクル数テーブル300の列303の行313に記録された実行サイクル数に「1」を加算する(ステップS105)。
(スケジュール調整部192の動作)
スケジュール調整部192は、スレッドスケジューラ160と連携して、実行サイクル数テーブル300のスレッドごとのハイパーバイザ権限の実行サイクル数に基づいて、スケジュール更新周期ごとにスケジュールテーブル200の補填用スケジュールテーブル202を変更する。これによって、スケジュール調整部192は、ハイパーバイザ権限などのユーザ権限以外で動作したスレッドが、後の補填用期間において、補充的に実行されるように調整する。
スケジュール調整部192は、スレッドスケジューラ160と連携して、実行サイクル数テーブル300のスレッドごとのハイパーバイザ権限の実行サイクル数に基づいて、スケジュール更新周期ごとにスケジュールテーブル200の補填用スケジュールテーブル202を変更する。これによって、スケジュール調整部192は、ハイパーバイザ権限などのユーザ権限以外で動作したスレッドが、後の補填用期間において、補充的に実行されるように調整する。
図5は、第1の実施形態のスケジュール調整部192のスケジュール更新周期ごとの動作手順を示すフローチャートである。
まず、スケジュール調整部192は、実行サイクル数テーブル記憶部191からスレッド0のハイパーバイザ権限の実行サイクル数n0を取得する。具体的には、スケジュール調整部192は、実行サイクル数テーブル300の列302、行313に記録された実行サイクル数n0を取得する(ステップS200)。
次に、スケジュール調整部192は、実行サイクル数テーブル記憶部191からスレッド1のハイパーバイザ権限の実行サイクル数n1を取得する。具体的には、スケジュール調整部192は、実行サイクル数テーブル300の列303、行313に記録された実行サイクル数n1を取得する(ステップS201)。
次に、スケジュール調整部192は、ステップS200で取得した実行サイクル数n0と、ステップS201で取得した実行サイクル数n1との総和N(=n0+n1)を求める(ステップS202)。
次に、スケジュール調整部192は、求めた総和Nが、補填用スケジュールテーブル202のエントリ数Mと同等もしくは少ないか判断する。
判断した結果、同等もしくは少ない場合(ステップS203のYESの場合)、ステップS204に進む。判断した結果、多い場合(ステップS203のNOの場合)、ステップS220に進む。
ステップS203でYESの場合は、スケジュール調整部192は、補填用スケジュールテーブル202の第10エントリを起点としてステップS200で取得した実行サイクル数n0個のエントリに「0」を設定する(ステップS204)。さらに、スケジュール調整部192は、実行サイクル数テーブル記憶部191に記録された実行サイクル数テーブル300におけるスレッド0のハイパーバイザ権限の実行サイクル数を0に設定する。具体的には、スケジュール調整部192は、実行サイクル数テーブル300の列302、行313の実行サイクル数を0に設定する(ステップS205)。
次に、スケジュール調整部192は、補填用スケジュールテーブル202におけるステップS204にて「0」を追加した最後のエントリの直後のエントリを起点としてステップS201で取得した実行サイクル数n1個のエントリに「1」を設定する(ステップS206)。さらに、スケジュール調整部192は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300におけるスレッド1のハイパーバイザ権限の実行サイクル数を0に設定する。具体的には、スケジュール調整部192は、実行サイクル数テーブル300の列303、行313の実行サイクル数を0に設定する(ステップS207)。
次に、スケジュール調整部192は、補填用スケジュールテーブル202に残りのエントリがある場合には、ステップS206にて「1」追加した最後のエントリの直後のエントリを起点として最後のエントリ(第14エントリ)まで、「−1」を設定する(ステップS208)。
ステップS203でNOの場合は、スケジュール調整部192は、補填用スケジュールテーブル202のエントリ数MとステップS202で求めた実行サイクル数の総和Nとの割合R(=M/N)を計算する(ステップS220)。
次に、スケジュール調整部192は、割合Rに基づいて、スレッド0のハイパーバイザ権限の実行サイクル数n0を修正した修正実行サイクル数n0′(=n0×R)を算出する。この算出において、小数点以下は切り捨てされる(ステップS221)。
次に、スケジュール調整部192は、割合Rに基づいて、スレッド1のハイパーバイザ権限の実行サイクル数n1を修正した修正実行サイクル数n1′(=n1×R)を算出する。この算出において、小数点以下は切り捨てされる(ステップS222)。
次に、スケジュール調整部192は、補填用スケジュールテーブル202のエントリ10を起点としてステップS221で算出した修正実行サイクル数n0′個のエントリに「0」を設定する(ステップS223)。さらに、スケジュール調整部192は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド0のハイパーバイザ権限の実行サイクル数を修正実行サイクル数n0′だけ減じる。具体的には、スケジュール調整部192は、実行サイクル数テーブル300の列302、行313の実行サイクル数から修正実行サイクル数n0′を減算して、減算した値で上書きする(ステップS224)。
次に、スケジュール調整部192は、補填用スケジュールテーブル202においてステップS223にて「0」を追加した最後のエントリの直後のエントリを起点としてステップS222で取得した修正実行サイクル数n1′個のエントリに「1」を設定する(ステップS225)。さらに、スケジュール調整部192は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド1のハイパーバイザ権限の実行サイクル数を修正実行サイクル数n1′だけ減じる。具体的には、スケジュール調整部192は、実行サイクル数テーブル300の列303、行313の実行サイクル数から修正実行サイクル数n1′を減算して、減算した値で上書きする(ステップS226)。
次に、スケジュール調整部192は、補填用スケジュールテーブル202の残りのエントリがある場合には、すなわちステップS226にて「1」追加した最後のエントリの直後のエントリを起点として最後のエントリ(エントリ14)まで、「−1」を設定する(ステップS227)。
(スケジュール調整の第1の例)
図6は、第1の実施形態におけるスケジュール調整の第1の例を説明するための図である。
図6は、第1の実施形態におけるスケジュール調整の第1の例を説明するための図である。
ステップS200にて取得したスレッド0の実行サイクル数n0が「0」とする。
ステップS201にて取得したスレッド1の実行サイクル数n1が「3」とする。
ステップS201にて取得したスレッド1の実行サイクル数n1が「3」とする。
ステップS202にて総和Nが「3」となる。その結果、ステップS203において、N≦M(=5)となり、ステップS204に進む。
ステップS204では、n0が「0」によって、補填用スケジュールテーブル202には「0」が設定されない。
ステップS205では、n0が「0」によって、スレッド0のハイパーバイザ権限の実行サイクル数は「0」のまま変化しない。
ステップS206では、n1が「3」によって、補填用スケジュールテーブル202の「3」個のエントリ(第10、第11、第12エントリ)には「1」が設定される。
ステップS207では、n1が「3」によって、スレッド1のハイバーバイザ権限の実行サイクル数が「0」に設定される。
ステップS208では、補填用スケジュールテーブル202の残りのエントリである第13〜第14エントリに「−1」が設定される。
(スケジュール調整の第2の例)
図7は、第1の実施形態におけるスケジュール調整の第2の例を説明するための図である。
図7は、第1の実施形態におけるスケジュール調整の第2の例を説明するための図である。
ステップS200にて取得したスレッド0の実行サイクル数n0が「4」とする。
ステップS201にて取得したスレッド1の実行サイクル数n1が「3」とする。
ステップS201にて取得したスレッド1の実行サイクル数n1が「3」とする。
ステップS202にて総和Nが「7」となる。その結果、ステップS203において、N>M(=5)となり、ステップS220に進む。
ステップS220では、R=5/7となる。
ステップS221では、4×5/7の整数部分が2なので、n0′は「2」となる。
ステップS221では、4×5/7の整数部分が2なので、n0′は「2」となる。
ステップS222では、3×5/7の整数部分が2なので、n1′は「2」となる。
ステップS223では、n0′が「2」によって、補填用スケジュールテーブル202の「2」個のエントリ(第10、第11エントリ)に「0」が設定される。
ステップS223では、n0′が「2」によって、補填用スケジュールテーブル202の「2」個のエントリ(第10、第11エントリ)に「0」が設定される。
ステップS224では、n0′が「2」によって、スレッド0のハイパーバイザ権限の実行サイクル数は「4」から「2」だけ小さい「2」に設定される。
ステップS225では、n1′が「2」によって、補填用スケジュールテーブル202の「2」個のエントリ(第12、第13エントリ)には「1」が設定される。
ステップS226では、n1′が「2」によって、スレッド1のハイバーバイザ権限の実行サイクル数が「3」から「2」だけ小さい「1」に設定される。
ステップS227では、補填用スケジュールテーブル202の残りのエントリである第14エントリに「−1」が設定される。
以上のように、本実施の形態では、スレッドごとに、ハイパーバイザ権限でハイパーバイザが動作した実行サイクル数を記録し、補填用期間において、各スレッドが、記録されたハイパー権限の実行サイクル数に応じたサイクル数だけ実行されるようにする。
これによって、プログラムが本来動作する予定であったサイクル数の実行が補填され、プログラムへ配分された処理時間を維持することができる。
なお、本実施の形態では、実行サイクル数テーブル300におけるスレッドごとのハイパーバイザ権限の実行サイクル数に基づいて、補填用スケジュールテーブル202に設定するスレッドを決めたが、これに限定するものではない。たとえば、実行サイクル数テーブル300におけるスレッドごとのユーザ権限およびスーパーバイザ権限の実行サイクル数を用いて、ハイパー権限の実行サイクル数を算出して、算出したハイパー権限の実行サイクル数に基づいて、補填用スケジュールテーブル202に設定するスレッドを決めてもよい。
[第1の実施の形態の変形例]
第1の実施形態では、実行サイクル数テーブル300におけるスレッドごとのハイパーバイザ権限の実行サイクル数に基づいて、補填用スケジュールテーブル202に設定するスレッドを決めたが、これに限定するものではない。実行サイクル数テーブル300におけるスレッドごとのスーパーバイザ権限の実行サイクル数に基づいて、補填用スケジュールテーブル202を設定するスレッド決めるものとしてもよい。
第1の実施形態では、実行サイクル数テーブル300におけるスレッドごとのハイパーバイザ権限の実行サイクル数に基づいて、補填用スケジュールテーブル202に設定するスレッドを決めたが、これに限定するものではない。実行サイクル数テーブル300におけるスレッドごとのスーパーバイザ権限の実行サイクル数に基づいて、補填用スケジュールテーブル202を設定するスレッド決めるものとしてもよい。
また、実行サイクル数テーブル300におけるスレッドごとのスーパーバイザ権限の実行サイクル数とハイパーバイザ権限の実行サイクル数の和に基づいて、補填用スケジュールテーブル202を設定するスレッド決めるものとしてもよい。
[第2の実施形態]
第1の実施形態では、ハイパーバイザの動作サイクル数をそのスレッド分として追加するようにしたものである。本実施の形態では、さらに、スレッドの優先度や追加上限値によって、追加するサイクル数を変える。
第1の実施形態では、ハイパーバイザの動作サイクル数をそのスレッド分として追加するようにしたものである。本実施の形態では、さらに、スレッドの優先度や追加上限値によって、追加するサイクル数を変える。
図8は、第2の実施形態のマルチスレッドプロセッサの概略構成の一例である。
第2の実施形態のマルチスレッドプロセッサが、第1の実施形態のマルチスレッドプロセッサと相違する点は、第2の実施形態のマルチスレッドプロセッサが、調整管理テーブル記憶部600を有する点と、第2の実施形態のスケジュール調整部592が第1の実施形態のスケジュール調整部192と機能が相違する点である。
第2の実施形態のマルチスレッドプロセッサが、第1の実施形態のマルチスレッドプロセッサと相違する点は、第2の実施形態のマルチスレッドプロセッサが、調整管理テーブル記憶部600を有する点と、第2の実施形態のスケジュール調整部592が第1の実施形態のスケジュール調整部192と機能が相違する点である。
調整管理テーブル記憶部600は、図9のような調整管理テーブル593を記憶する。
調整管理テーブル593の列601は、スケジュール調整部592が利用するデータの種類を示す。「優先度」は、スレッド0の優先度である。優先度の値が大きいほど優先される(優先度が高い)。「上限サイクル数」は、スレッドでハイパーバイザが動作した場合に割当てるスロット数の上限である。スレッドごとに「上限サイクル数」を設けた理由は、補填用スケジュールテーブル202に優先度の高いスレッドばかりが設定されることによって、優先度の低いスレッドが補填用期間で実行されなくなるのを防止するためである。
調整管理テーブル593の列601は、スケジュール調整部592が利用するデータの種類を示す。「優先度」は、スレッド0の優先度である。優先度の値が大きいほど優先される(優先度が高い)。「上限サイクル数」は、スレッドでハイパーバイザが動作した場合に割当てるスロット数の上限である。スレッドごとに「上限サイクル数」を設けた理由は、補填用スケジュールテーブル202に優先度の高いスレッドばかりが設定されることによって、優先度の低いスレッドが補填用期間で実行されなくなるのを防止するためである。
調整管理テーブル593の列602は、スレッド0用の優先度および上限サイクル数を格納する列であり、調整管理テーブル593の列603はスレッド1用の優先度および上限サイクル数を格納する列である。
調整管理テーブル593の行611は、スレッド0、スレッド1の優先度を格納する行である。調整管理テーブル593の行612は、スレッド0、スレッド1の上限サイクル数を格納する行である。
(スケジュール調整部592の動作)
スケジュール調整部592は、スレッドスケジューラ160と連携して、実行サイクル数テーブル300のスレッドごとのハイパーバイザ権限の実行サイクル数と、調整管理テーブル593のスレッドごとの上限サイクル数および優先度に基づいて、スレッド更新周期ごとにスケジュールテーブル200の補填用スケジュールテーブル202を変更する。
スケジュール調整部592は、スレッドスケジューラ160と連携して、実行サイクル数テーブル300のスレッドごとのハイパーバイザ権限の実行サイクル数と、調整管理テーブル593のスレッドごとの上限サイクル数および優先度に基づいて、スレッド更新周期ごとにスケジュールテーブル200の補填用スケジュールテーブル202を変更する。
図10〜図12は、第2の実施形態のスケジュール調整部592のスケジュール更新周期ごとの動作手順を示すフローチャートである。
まず、スケジュール調整部592は、実行サイクル数テーブル記憶部191の実行サイクル数テーブル300からスレッド0のハイパーバイザ権限の実行サイクル数n0を取得する。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列302、行313に記憶された実行サイクル数n0を取得する(ステップS500)。
次に、スケジュール調整部592は、実行サイクル数テーブル記憶部191の実行サイクル数テーブル300からスレッド1のハイパーバイザ権限の実行サイクル数n1を取得する。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列303、行313に記憶された実行サイクル数n1を取得する(ステップS501)。
次に、スケジュール調整部592は、調整管理テーブル593からスレッド0の上限サイクル数を取得する。具体的には、スケジュール調整部592は、調整管理テーブル593の列602、行612に記憶された上限サイクル数u0を取得する(ステップS502)。
スケジュール調整部592は、ステップS500にて取得した実行サイクル数n0とステップS502で取得した上限サイクル数u0のうち小さい方を要求サイクル数s0として決定する(ステップS503)。
次に、スケジュール調整部592は、調整管理テーブル593からスレッド1の上限サイクル数を取得する。具体的には、スケジュール調整部592は、調整管理テーブル593の列603、行612に記憶された上限サイクル数u1を取得する(ステップS504)。
スケジュール調整部592は、ステップS501にて取得した実行サイクル数n1とステップS504で取得した上限サイクル数u1のうち小さい方を要求サイクル数s1として決定する(ステップS505)。
次に、スケジュール調整部592は、ステップS503で決定した要求サイクル数s0と、ステップS505で決定した要求サイクル数s1との総和S(=s0+s1)を求める(ステップS506)。
次に、スケジュール調整部192は、求めた総和Sが、補填用スケジュールテーブル202のエントリ数Mと同等もしくは少ないか判断する。
判断した結果、同等もしくは少ない場合(ステップS507のYESの場合)、ステップS510に進む。判断した結果、多い場合(ステップS507のNOの場合)、ステップS520に進む。
ステップS507でYESの場合は、スケジュール調整部592は、補填用スケジュールテーブル202の第10エントリを起点としてステップS503で決定した要求サイクル数s0個のエントリに「0」を設定する(ステップS510)。さらに、スケジュール調整部592は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド0のハイパーバイザ権限の実行サイクル数を要求サイクル数s0だけ減じる。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列302、行313の実行サイクル数から要求サイクル数s0だけを減算して、減算した値で上書きする(ステップS511)。
次に、スケジュール調整部592は、補填用スケジュールテーブル202においてステップS510にて「0」を追加した最後のエントリの直後のエントリを起点としてステップS505で決定した要求サイクル数s1個のエントリに「1」を設定する(ステップS512)。さらに、スケジュール調整部592は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド1のハイパーバイザ権限の実行サイクル数を要求サイクル数s1だけ減じる。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列303、行313の実行サイクル数から要求サイクル数s1だけを減算して、減算した値で上書きする(ステップS513)。
次に、スケジュール調整部592は、補填用スケジュールテーブル202の残りのエントリがある場合には、ステップS512にて「1」を追加した最後のエントリの直後のエントリを起点として最後のエントリ(第14エントリ)まで、「−1」を設定する(ステップS514)。
ステップS507でNOの場合、スケジュール調整部592は、調整管理テーブル593からスレッド0の優先度を取得する。具体的には、スケジュール調整部592は、調整管理テーブル593の列602、行611に記憶されたスレッド0の優先度を取得する(ステップS520)。
次に、スケジュール調整部592は、調整管理テーブル593からスレッド1の優先度を取得する。具体的には、スケジュール調整部592は、調整管理テーブル593の列603、行611に記憶されたスレッド1の優先度を取得する(ステップS521)。
スケジュール調整部592が、スレッド0の優先度とスレッド1の優先度を比較し、スレッド0の優先度がスレッド1の優先度と同等もしくは高い場合には(ステップS522でYES)、ステップS530に進み、スレッド0の優先度がスレッド1の優先度よりも低い場合には(ステップS522でNO)、ステップS540に進む。
ステップS522でYESの場合、スケジュール調整部592は、補填用スケジュールテーブル202のエントリ数Mと要求サイクル数s0のうち小さい方を要求サイクル可能数p0に設定する(ステップS530)。
スケジュール調整部592は、補填用スケジュールテーブル202の第10エントリを起点としてステップS530で決定した要求サイクル可能数p0だけエントリに「0」を設定する(ステップS531)。さらに、スケジュール調整部592は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド0のハイパーバイザ権限の実行サイクル数を要求サイクル可能数p0だけ減じる。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列302、行313の実行サイクル数から要求サイクル可能数p0だけを減算して、減算した値で上書きする(ステップS532)。
スケジュール調整部592は、補填用スケジュールテーブル202において現在の更新周期において、未設定のエントリがあるか否かを判断する。未設定のエントリがある場合には(ステップS533でYES)、ステップS534に進む。未設定のエントリがない場合には(ステップS533でNO)、処理を終了する。
ステップS533でYESの場合、スケジュール調整部592は、未設定のエントリの数MUと要求サイクル数s1のうち、小さい方を要求サイクル可能数p1として決定する(ステップS534)。
スケジュール調整部592は、補填用スケジュールテーブル202のステップS531にて「0」を追加した最後のエントリの直後のエントリを起点としてステップS534で決定した要求サイクル可能数p1個のエントリに「1」を設定する(ステップS535)。さらに、スケジュール調整部592は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド1のハイパーバイザ権限の実行サイクル数を要求サイクル可能数p1だけ減じる。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列303、行313の実行サイクル数から要求サイクル可能数p1だけを減算して、減算した値で上書きする(ステップS536)。
次に、スケジュール調整部592は、補填用スケジュールテーブル202の残りのエントリがある場合には、ステップS537にて「1」を追加した最後のエントリの直後のエントリを起点として最後のエントリ(第14エントリ)まで、「−1」を設定する(ステップS537)。
ステップS522でNOの場合、スケジュール調整部592は、補填用スケジュールテーブル202のエントリ数Mと要求サイクル数s1のうち小さい方を要求サイクル可能数p1として決定する(ステップS540)。
スケジュール調整部592は、補填用スケジュールテーブル202の第10エントリを起点としてステップS540で決定した要求サイクル可能数p1個のエントリに「1」を設定する(ステップS541)。さらに、スケジュール調整部592は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド1のハイパーバイザ権限の実行サイクル数を要求サイクル可能数p1だけ減じる。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列303、行313の実行サイクル数から要求サイクル可能数p1だけを減算して、減算した値で上書きする(ステップS542)。
スケジュール調整部592は、補填用スケジュールテーブル202に、現在の更新周期において、未設定のエントリがあるか否かを判断する。未設定のエントリがある場合には(ステップS543でYES)、ステップS544に進む。未設定のエントリがない場合には(ステップS543でNO)、処理を終了する。
ステップS543でYESの場合、スケジュール調整部592は、未設定のエントリの数MUと要求サイクル数s0のうち、小さい方を要求サイクル可能数p0として決定する(ステップS544)。
スケジュール調整部592は、補填用スケジュールテーブル202のステップS541にて「0」を追加した最後のエントリの直後のエントリを起点としてステップS544で決定した要求サイクル可能数p0個のエントリに「0」を設定する(ステップS545)。さらに、スケジュール調整部592は、実行サイクル数テーブル記憶部191に記憶された実行サイクル数テーブル300のスレッド0のハイパーバイザ権限の実行サイクル数を要求サイクル可能数p0だけ減じる。具体的には、スケジュール調整部592は、実行サイクル数テーブル300の列302、行313の実行サイクル数から要求サイクル可能数p0だけを減算して、減算した値で上書きする(ステップS546)。
次に、スケジュール調整部592は、補填用スケジュールテーブル202の残りのエントリがある場合には、ステップS547にて「0」を追加した最後のエントリの直後のエントリを起点として最後のエントリ(第14エントリ)まで、「−1」を設定する(ステップS547)。
(スケジュール調整の例)
図13は、第2の実施形態におけるスケジュール調整の例を説明するための図である。
(スケジュール調整の例)
図13は、第2の実施形態におけるスケジュール調整の例を説明するための図である。
ステップS500にて取得したスレッド0の実行サイクル数n0が「5」とする。
ステップS501にて取得したスレッド1の実行サイクル数n1が「2」とする。
ステップS501にて取得したスレッド1の実行サイクル数n1が「2」とする。
ステップS502にて取得したスレッド0の上限サイクル数u0が「4」とする。
ステップS503にて、n0>u0より、要求サイクル数s0は「4」となる。
ステップS503にて、n0>u0より、要求サイクル数s0は「4」となる。
ステップS504にて取得したスレッド1の上限サイクル数u1が「2」とする。
ステップS505にて、n1=u1より、要求サイクル数s1は「2」となる。
ステップS505にて、n1=u1より、要求サイクル数s1は「2」となる。
ステップS506にて、s0とs1の総和Sは「6」となる。
ステップS507にて、S>M(=5)によって、ステップS520に進む。
ステップS507にて、S>M(=5)によって、ステップS520に進む。
ステップS520にて取得したスレッド0の優先度を「100」とする。
ステップS521にて取得したスレッド1の優先度を「40」とする。
ステップS521にて取得したスレッド1の優先度を「40」とする。
ステップS522にて、スレッド0の優先度>スレッド1の優先度によって、ステップS530に進む。
ステップS530にて、s0<Mによって、要求サイクル可能数p0が「4」となる。
ステップS531にて、補填用スケジュールテーブル202の「4」個のエントリ(第10〜第13エントリ)が「0」に設定される。
ステップS531にて、補填用スケジュールテーブル202の「4」個のエントリ(第10〜第13エントリ)が「0」に設定される。
ステップS532にて、スレッド0のハイパーバイザ権限の実行サイクル数が「5」から「4」だけ小さい「1」に設定される。
ステップS533にて、未設定のエントリ(第14エントリ)があるので、ステップS534に進む。
ステップS534にて、未設定のエントリ数MUが「1」なので、s1>MUによって、要求サイクル可能数p1が「1」となる。
ステップS535にて、補填用スケジュールテーブル202の「1」個のエントリ(第14エントリ)が「1」に設定される。
ステップS536にて、スレッド1のハイパーバイザ権限の実行サイクル数は「2」から「1」だけ小さい「1」に設定される。
ステップS537では、補填用スケジュールテーブル202の残りのエントリがないので、「−1」が設定されない。
以上のように、本実施の形態では、スレッドごとに、ハイパーバイザ権限でハイパーバイザが動作した実行サイクル数を記録し、補填用期間において、各スレッドが、記録されたハイパー権限の実行サイクル数、優先度および上限サイクル数に応じたサイクル数だけ実行されるようにする。
これによって、第1の実施形態と同様に、プログラムが本来動作する予定であったサイクル数の実行が補填され、プログラムへ配分された処理時間を維持することができる。さらに、本実施の形態では、スレッド上で動作するプログラムの優先度順に補填されることによって、優先度の高いプログラムのデッドラインが守れるようにすることができる。また、本実施の形態では、補填されるスレッドのサイクル数に上限値を設定できるため、優先度の低いプログラムであっても補填することができ、プログラムの時間制約が守れない(デッドラインミス)ことが発生しにくくなる。
(第1および第2の実施形態の変形例)
スケジュールテーブル200、コアスケジュールテーブル201、補填用スケジュールテーブル202のエントリ数は、図2に示すものに限定されるものではなく、任意の数が可能である。
(第1および第2の実施形態の変形例)
スケジュールテーブル200、コアスケジュールテーブル201、補填用スケジュールテーブル202のエントリ数は、図2に示すものに限定されるものではなく、任意の数が可能である。
また、コアスケジュールテーブル201、補填用スケジュールテーブル202に含まれるエントリも、図2にしめすものに限定されるものではなく、図14(a)、図14(b)に示すものであってもよい。
図14(a)に示すように、スケジュールテーブル230は、第5〜第14エントリを含むコアスケジュールテーブル231と、第0〜第4エントリを含む補填用スケジュールテーブル232とを含む。
また、 図14(b)に示すように、スケジュールテーブル240は、第0、1、3、4、6、7、9、10、12、13エントリを含むコアスケジュールテーブル241と、第2、第5、第8、第11、第14エントリを含む補填用スケジュールテーブル242とを含む。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
100 命令バス、101,102 主記憶部、110 第0命令バッファ、111 第1命令バッファ、120,121,122 セレクタ、130 デコーダ、140 実行部、145 命令フェッチ部、150 第0レジスタセット、151 第1レジスタセット、160 スレッドスケジューラ、170 データバス、180 スケジュールレジスタ、190 実行サイクル数加算部、191 実行サイクル数テーブル記憶部、192,592 スケジュール調整部、200,230,240 スケジュールテーブル、201,231,241 コアスケジュールテーブル、202,232,242 補填用スケジュールテーブル、300 実行サイクル数テーブル、593 調整管理テーブル、600 調整管理テーブル記憶部。
Claims (9)
- 各スレッドがサイクルごとにユーザ権限またはユーザ権限以外の権限で動作するマルチスレッドプロセッサであって、
サイクル単位で実行するスレッドを切り換えるスケジューラと、
オペレーティングシステムまたはハイパーバイザによって実行するスレッドが設定される第1期間以外の第2期間に実行するスレッドを設定するスケジュール調整部とを備え、
前記スケジュール調整部は、ユーザ権限以外の権限で動作したスレッドが、前記第2期間において、補充的に実行されるように調整する、マルチスレッドプロセッサ。 - スレッドごとに、ユーザ権限以外の第1の権限で動作したサイクル数を第1の権限サイクル数として記憶する第1の記憶部と、
所定数のサイクルについて、サイクルごとに実行するスレッドを定めたスケジュールを記憶する第2の記憶部と、
前記スケジュールは、前記第1期間で実行するスレッドを定めた第1スケジュールと、前記第2期間で実行するスレッドを定めた第2スケジュールとを含み、
前記スケジュール調整部は、前記所定数のサイクルごとに、前記第1の記憶部に記憶された前記スレッドごとの前記第1の権限サイクル数に基づいて、前記第2スケジュールのスレッドを設定する、請求項1記載のマルチスレッドプロセッサ。 - サイクルごとに、ユーザ権限以外の権限で動作したスレッドがある場合に、前記第1の記憶部に記憶されている前記スレッドの前記第1の権限サイクル数を1つインクリメントする実行サイクル数加算部を備え、
前記スケジュール調整部は、所定数のサイクルごとに、前記第2スケジュールに設定した各スレッドの個数を前記第1の記憶部に記憶されている前記各スレッドの前記第1の権限サイクル数から減算する、請求項2記載のマルチスレッドプロセッサ。 - 前記スケジュール調整部は、前記第1の記憶部に記憶されている各スレッドの前記第1の権限サイクル数の和が前記第2スケジュールに設定可能なスレッド数以下場合には、前記第2スケジュールに設定する各スレッドの個数を前記各スレッドの前記第1の権限サイクル数とする、請求項3記載のマルチスレッドプロセッサ。
- 前記スケジュール調整部は、前記第1の記憶部に記憶される各スレッドの前記第1の権限サイクル数の和が前記第2スケジュールに設定可能なスレッド数よりも大きい場合には、前記第2スケジュールに設定可能なスレッド数の前記第1の権限サイクル数の和に対する比率を計算し、さらに、前記各スレッドの前記第1の権限サイクル数と前記比率とを乗算して、前記各スレッドの前記第1の権限サイクル数の修正値を計算し、前記第2スケジュールに設定する各スレッドの個数を前記各スレッドの前記第1の権限サイクル数の修正値とする、請求項4記載のマルチスレッドプロセッサ。
- スレッドごとの優先度を記憶する第3の記憶部を備え、
前記スケジュール調整部は、前記所定数のサイクルごとに、前記第1の記憶部に記憶された前記スレッドごとの前記第1の権限サイクル数と、前記第3の記憶部に記憶された前記スレッドごとの優先度に基づいて、前記第2スケジュールのスレッドを設定する、請求項2記載のマルチスレッドプロセッサ。 - スレッドごとに前記第2スケジュールに設定可能な個数の上限値を記憶する第3の記憶部を備え、
前記スケジュール調整部は、前記所定数のサイクルごとに、前記第1の記憶部に記憶された前記スレッドごとの前記第1の権限サイクル数と、前記第3の記憶部に記憶された前記スレッドごとの前記設定可能な個数の上限値に基づいて、前記第2スケジュールのスレッドを設定する、請求項2記載のマルチスレッドプロセッサ。 - 前記第1の権限が、ハイパーバイザ権限である、請求項1記載のマルチスレッドプロセッサ。
- 前記第1の権限が、スーパーバイザ権限である、請求項1記載のマルチスレッドプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013022209A JP2014153860A (ja) | 2013-02-07 | 2013-02-07 | マルチスレッドプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013022209A JP2014153860A (ja) | 2013-02-07 | 2013-02-07 | マルチスレッドプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014153860A true JP2014153860A (ja) | 2014-08-25 |
Family
ID=51575690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013022209A Pending JP2014153860A (ja) | 2013-02-07 | 2013-02-07 | マルチスレッドプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014153860A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019079530A (ja) * | 2017-10-20 | 2019-05-23 | グラフコアー リミテッドGraphcore Limited | マルチスレッドプロセッサでのタスクのスケジューリング |
US10606641B2 (en) | 2017-10-20 | 2020-03-31 | Graphcore Limited | Scheduling tasks in a multi-threaded processor |
-
2013
- 2013-02-07 JP JP2013022209A patent/JP2014153860A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019079530A (ja) * | 2017-10-20 | 2019-05-23 | グラフコアー リミテッドGraphcore Limited | マルチスレッドプロセッサでのタスクのスケジューリング |
US10606641B2 (en) | 2017-10-20 | 2020-03-31 | Graphcore Limited | Scheduling tasks in a multi-threaded processor |
US10956165B2 (en) | 2017-10-20 | 2021-03-23 | Graphcore Limited | Scheduling tasks in a multi-threaded processor |
US11550591B2 (en) | 2017-10-20 | 2023-01-10 | Graphcore Limited | Scheduling tasks in a multi-threaded processor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102592376B1 (ko) | 명령 실행 동작을 제어하기 위한 장치 및 방법 | |
US8695002B2 (en) | Multi-threaded processors and multi-processor systems comprising shared resources | |
US9436464B2 (en) | Instruction-issuance controlling device and instruction-issuance controlling method | |
JP5173714B2 (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 | |
JP4770664B2 (ja) | マイクロプロセッサおよびそれを用いたマイクロコンピュータ | |
US20060161924A1 (en) | Scheduling method, in particular context scheduling method, and device to be used with a scheduling method | |
JP7397858B2 (ja) | フェッチグループのシーケンスのための分岐予測ユニットへのアクセスの制御 | |
US10853075B2 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
JP4865016B2 (ja) | プロセッサ | |
JP2014153860A (ja) | マルチスレッドプロセッサ | |
JP5108690B2 (ja) | Dma装置及びdma転送方法 | |
JP7510253B2 (ja) | 分岐予測器 | |
KR101635816B1 (ko) | 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치 | |
US20200026650A1 (en) | Arithmetic processing device and arithmetic processing method | |
JP2020091751A (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP2008015562A (ja) | キャッシュミス/ヒット予想 | |
JP5843804B2 (ja) | 演算装置およびエラー処理方法 | |
JP2009140130A (ja) | データ処理装置及びデータ処理装置の制御方法 | |
JP2020077334A (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP6160571B2 (ja) | データ処理装置 | |
US20220156074A1 (en) | Electronic device and multiplexing method of spatial | |
JP2023508869A (ja) | フェッチグループのシーケンスについての分岐予測ユニットへのアクセスの制御 | |
JP2012168725A (ja) | マルチスレッド・プロセッサ | |
JP2010122787A (ja) | 半導体集積回路及びレジスタアドレス制御装置 | |
US10817288B2 (en) | Combined instruction for addition and checking of terminals |