JP5173713B2 - マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 - Google Patents
マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 Download PDFInfo
- Publication number
- JP5173713B2 JP5173713B2 JP2008252234A JP2008252234A JP5173713B2 JP 5173713 B2 JP5173713 B2 JP 5173713B2 JP 2008252234 A JP2008252234 A JP 2008252234A JP 2008252234 A JP2008252234 A JP 2008252234A JP 5173713 B2 JP5173713 B2 JP 5173713B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- hardware
- instruction
- priority
- dispatch
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/507—Low-level
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
以下、図面を参照して本発明の実施の形態について説明する。図1に本実施の形態にかかるマルチスレッドプロセッサ1を含むプロセッサシステムのブロック図を示す。本実施の形態にかかるプロセッサシステムでは、システムバスを介してマルチスレッドプロセッサ1とメモリ2が接続される。なお、図示はしていないが、システムバスには、入出力インタフェースなどの他の回路も接続されるものとする。
実施の形態2にかかるマルチスレッドプロセッサ1aのブロック図を図11に示す。図11に示すようにマルチスレッドプロセッサ1aは、実施の形態1におけるスレッドスケジューラ19をスレッドスケジューラ19の変形例となるスレッドスケジューラ19aに置き換えたものである。そのため、以下の説明では、スレッドスケジューラ19aを中心に説明し、他の構成要素の説明は省略する。
2 メモリ
10 演算回路
11 コントローラ
12 PC生成回路
13、18、43、50、56 セレクタ
14 命令メモリ
15 命令バッファ
16 パイプライン制御回路
17 命令フェッチコントローラ
19、19a、51 スレッドスケジューラ
21 命令デコーダ
22 実行ユニット
23 データレジスタ
30a〜30d ディスパッチカウンタ
31 優先順位判定部
32 スレッド番号選択部
33 初期化判定部
34〜36 比較器
40 カウンタ初期設定値格納部
41 カウント値格納部
42 デクリメンタ
52 スレッド制御レジスタ
53 カウンタ
54 カウント最大値格納部
55 一致比較回路
TPC0〜TCP3 スレッドプログラムカウンタ
BUF0〜BUF3 命令バッファ領域
IMadd 命令フェッチアドレス
Radd データレジスタアドレス
SC 演算制御信号
TSEL、TSELa、TSELb スレッド選択信号
DPT、DPT0〜DPT3 ディスパッチ信号
MSK、MSK0〜MSK3 マスク信号
M1、M2、MAX 高優先ハードウェアスレッド値
CNTint 初期化信号
Vnow0〜Vnow3 カウント現在値
CNT、CNT0〜CNT3、CNTa カウント値
DCNT、DCNT0〜DCNT3 ディスパッチカウント値
INIT0 カウンタ初期設定値
DCR0 書き戻し値
CNTM カウント最大値
RST リセット信号
HWT ハードウェアスレッド番号
RT 実時間ビット
SLT0〜SLT7 スロット
Claims (12)
- それぞれが独立した命令流を生成する複数のハードウェアスレッドと、
予め前記複数のハードウェアスレッドのそれぞれに対して設定された優先順位に応じて、前記複数のハードウェアスレッドのうち次実行サイクルにおいて選択されるハードウェアスレッドを指定する第1のスレッド選択信号を出力する第1のスレッドスケジューラと、
前記第1のスレッド選択信号に応じて前記複数のハードウェアスレッドのいずれか1つを選択して、選択したハードウェアスレッドにより生成された命令を出力する第1のセレクタと、
前記第1のセレクタから出力される命令を実行する演算回路と、を有し、
前記第1のスレッドスケジューラは、前記優先順位が高い前記ハードウェアスレッドを優先的に選択して前記第1のスレッド選択信号を出力し、前記第1のスレッド選択信号により選択された前記ハードウェアスレッドにより生成される前記命令が前記演算回路において実行される度に、実行された前記命令を生成した前記ハードウェアスレッドに対する前記優先順位を低下させる更新を行い、更新後の前記優先順位に従って前記第1のスレッド選択信号を出力するマルチスレッドプロセッサ。 - 前記第1のスレッドスケジューラは、前記優先順位の更新処理を行う毎に前記優先順位を1段階ずつ低下させる請求項1に記載のマルチスレッドプロセッサ。
- 前記第1のスレッドスケジューラは、同一の前記優先順位を有する前記ハードウェアスレッドが複数存在する場合、予め設定されたルールに従っていずれか1つの前記ハードウェアスレッドを選択し、選択した前記ハードウェアスレッドを指定する前記第1のスレッド選択信号を出力する請求項1又は2に記載のマルチスレッドプロセッサ。
- 前記第1のスレッドスケジューラは、前記複数のハードウェアスレッドにおいて準備されている前記命令が前記演算回路において実行されている前記命令の処理結果を利用する依存関係の高い命令であった場合、前記依存関係の高い命令を含む前記ハードウェアスレッドの前記優先順位を最低順位とする請求項1乃至3のいずれか1項に記載のマルチスレッドプロセッサ。
- 予め決められた第1の実行期間において前記複数のハードウェアスレッドのうちから固定的に選択された少なくとも1つの前記ハードウェアスレッドを指定し、前記第1の実行期間以外の第2の実行期間において任意の前記ハードウェアスレッドを指定する第2のスレッド選択信号と、前記第1の実行期間と前記第2の実行期間とのいずれの期間かを示す実時間ビット信号と、を出力する第2のスレッドスケジューラと、
前記実時間ビット信号を受けて、前記実時間ビット信号が前記第1の実行期間を示すときには前記第2のスレッド選択信号を前記第1のセレクタに与え、前記実時間ビット信号が前記第2の実行期間を示すときには前記第1のスレッド選択信号を前記第1のセレクタに与える第2のセレクタと、を有する請求項1乃至4のいずれか1項に記載のマルチスレッドプロセッサ。 - 前記第1のスレッドスケジューラは、
それぞれが対応する前記ハードウェアスレッドに対する前記優先順位に相当するディスパッチカウント値を保持する複数のディスパッチカウンタと、
前記複数のディスパッチカウンタで保持される前記ディスパッチカウント値を参照し、最も優先順位の高い前記ハードウェアスレッドを判定する優先順位判定部と、
前記優先順位判定部において最も優先順位が高いと判定されたハードウェアスレッドを指定する前記第1のスレッド選択信号を出力するスレッド番号選択部と、を備え、
前記演算回路は、実行された前記命令を生成した前記ハードウェアスレッドを通知するディスパッチ信号を前記ハードウェアスレッドが生成した前記命令を実行する度に出力し、
前記複数のディスパッチカウンタは、前記ディスパッチ信号が自ディスパッチカウンタに対応する前記ハードウェアスレッドを示す場合に自ディスパッチカウンタが出力する前記ディスパッチカウント値を更新する請求項1乃至5のいずれか1項に記載のマルチスレッドプロセッサ。 - 前記複数のディスパッチカウンタにおいて保持される前記ディスパッチカウント値が予め定められた初期化条件を満たす場合、前記ディスパッチカウント値を初期設定値にリセットする初期化判定部を有する請求項6に記載のマルチスレッドプロセッサ。
- 前記複数のディスパッチカウンタは、それぞれ、対応する前記ハードウェアスレッドの優先順位に対応するカウンタ初期設定値を格納するカウンタ初期設定値格納部と、
前記カウンタ初期設定値をカウント値の初期値として格納するカウント値格納部と、
前記ディスパッチ信号を受けて、前記カウント値格納部に格納される前記カウント値を更新するデクリメンタと、
前記複数のハードウェアスレッドにおいて準備されている前記命令が前記演算回路において実行されている前記命令の処理結果を利用する依存関係が高い命令であるか否かモニタするパイプライ制御回路が、前記依存関係の高い命令を含む前記ハードウェアスレッドに対して出力するマスク信号を受けて、前記マスク信号に応じて前記カウンタ値と最低優先順位の前記カウント値に対応するマスク値とのいずれかを選択し、選択した値を前記ディスパッチカウント値として出力する第3のセレクタと、
を有する請求項6又は7に記載のマルチスレッドプロセッサ。 - 前記複数のハードウェアスレッドの優先順位の初期値は、前記マルチスレッドプロセッサの起動時に実行される管理プログラムにより設定される請求項1乃至8のいずれか1項に記載のマルチスレッドプロセッサ。
- 複数のハードウェアスレッドを有し、前記ハードウェアスレッドを所定のスケジュールに従って切り替えながら、前記ハードウェアスレッドにより生成される命令流を実行するマルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法であって、
前記複数のハードウェアスレッドのうちもっと高い優先順位のハードウェアスレッドを選択し、選択された前記ハードウェアスレッドにより生成される命令を実行し、
前記命令が実行される毎に実行された前記命令を生成した前記ハードウェアスレッドの前記優先順位を低下させる前記優先順位の更新を行い、
更新後の前記優先順位のうち最も高い前記優先順位を有する前記ハードウェアスレッドを次に命令を生成する前記ハードウェアスレッドとして選択するマルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法。 - 前記優先順位の更新処理は、実行された前記命令を生成した前記ハードウェアスレッドの優先順位を1段階低下させるものである請求項10に記載のマルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法。
- 前記ハードウェアスレッドが生成する前記命令が実行中の前記命令の処理結果を利用する依存関係が高い命令である場合、前記依存関係の高い命令を含む前記ハードウェアスレッドの優先順位は最低順位とされる請求項10又は11に記載のマルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008252234A JP5173713B2 (ja) | 2008-09-30 | 2008-09-30 | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
| US12/585,879 US8365179B2 (en) | 2008-09-30 | 2009-09-28 | Multi-thread processor and its hardware thread scheduling method |
| US13/619,530 US9098336B2 (en) | 2008-09-30 | 2012-09-14 | Multi-thread processor and its hardware thread scheduling method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008252234A JP5173713B2 (ja) | 2008-09-30 | 2008-09-30 | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2012284003A Division JP5536862B2 (ja) | 2012-12-27 | 2012-12-27 | マルチスレッドプロセッサ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2010086130A JP2010086130A (ja) | 2010-04-15 |
| JP5173713B2 true JP5173713B2 (ja) | 2013-04-03 |
Family
ID=42059103
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008252234A Active JP5173713B2 (ja) | 2008-09-30 | 2008-09-30 | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US8365179B2 (ja) |
| JP (1) | JP5173713B2 (ja) |
Families Citing this family (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012059195A (ja) * | 2010-09-13 | 2012-03-22 | Renesas Electronics Corp | マルチスレッドプロセッサ |
| US9015449B2 (en) * | 2011-03-27 | 2015-04-21 | International Business Machines Corporation | Region-weighted accounting of multi-threaded processor core according to dispatch state |
| JP5894496B2 (ja) * | 2012-05-01 | 2016-03-30 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
| JP6017260B2 (ja) | 2012-10-17 | 2016-10-26 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ |
| US10505757B2 (en) | 2014-12-12 | 2019-12-10 | Nxp Usa, Inc. | Network interface module and a method of changing network configuration parameters within a network device |
| US10176012B2 (en) * | 2014-12-12 | 2019-01-08 | Nxp Usa, Inc. | Method and apparatus for implementing deterministic response frame transmission |
| US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
| US10318302B2 (en) | 2016-06-03 | 2019-06-11 | Synopsys, Inc. | Thread switching in microprocessor without full save and restore of register file |
| US10558463B2 (en) * | 2016-06-03 | 2020-02-11 | Synopsys, Inc. | Communication between threads of multi-thread processor |
| US10628352B2 (en) | 2016-07-19 | 2020-04-21 | Nxp Usa, Inc. | Heterogeneous multi-processor device and method of enabling coherent data access within a heterogeneous multi-processor device |
| US10613859B2 (en) | 2016-08-18 | 2020-04-07 | Synopsys, Inc. | Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions |
| US10552158B2 (en) | 2016-08-18 | 2020-02-04 | Synopsys, Inc. | Reorder buffer scoreboard having multiple valid bits to indicate a location of data |
| CN109582367A (zh) * | 2017-09-28 | 2019-04-05 | 刘欣 | 一种带有流水线时分复用调度器的处理器结构 |
| CN110597218B (zh) * | 2019-10-18 | 2020-10-16 | 天津开发区精诺瀚海数据科技有限公司 | 一种基于柔性化调度的排程优化方法 |
| US11803391B2 (en) * | 2020-10-20 | 2023-10-31 | Micron Technology, Inc. | Self-scheduling threads in a programmable atomic unit |
| US12164927B2 (en) | 2022-09-19 | 2024-12-10 | Apple Inc. | Thread channel deactivation based on instruction cache misses |
| US12353330B2 (en) | 2022-09-19 | 2025-07-08 | Apple Inc. | Preemption techniques for memory-backed registers |
| US11954492B1 (en) | 2022-09-19 | 2024-04-09 | Apple Inc. | Fence enforcement techniques based on stall characteristics |
| US12190151B2 (en) | 2022-09-19 | 2025-01-07 | Apple Inc. | Multi-stage thread scheduling |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5928322A (en) * | 1996-11-20 | 1999-07-27 | Silicon Graphics, Inc. | Low-latency real-time dispatching in general purpose multiprocessor systems |
| US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
| US6658654B1 (en) * | 2000-07-06 | 2003-12-02 | International Business Machines Corporation | Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment |
| NZ534314A (en) * | 2002-01-30 | 2005-04-29 | Real Entpr Solutions Dev B | Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor |
| US7093106B2 (en) * | 2003-04-23 | 2006-08-15 | International Business Machines Corporation | Register rename array with individual thread bits set upon allocation and cleared upon instruction completion |
| US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
| JP4606142B2 (ja) | 2004-12-01 | 2011-01-05 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム |
| US7664936B2 (en) * | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
| US7613904B2 (en) | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
| US7631308B2 (en) * | 2005-02-11 | 2009-12-08 | International Business Machines Corporation | Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors |
| JP5175517B2 (ja) | 2005-04-12 | 2013-04-03 | パナソニック株式会社 | プロセッサ |
| JP4574493B2 (ja) * | 2005-08-22 | 2010-11-04 | キヤノン株式会社 | プロセッサシステム及びマルチスレッドプロセッサ |
| US20070083735A1 (en) * | 2005-08-29 | 2007-04-12 | Glew Andrew F | Hierarchical processor |
| US8087026B2 (en) * | 2006-04-27 | 2011-12-27 | International Business Machines Corporation | Fair share scheduling based on an individual user's resource usage and the tracking of that usage |
| JP2007317171A (ja) | 2006-04-27 | 2007-12-06 | Matsushita Electric Ind Co Ltd | マルチスレッド計算機システム、マルチスレッド実行制御方法 |
| US7774563B2 (en) * | 2007-01-09 | 2010-08-10 | International Business Machines Corporation | Reducing memory access latency for hypervisor- or supervisor-initiated memory access requests |
-
2008
- 2008-09-30 JP JP2008252234A patent/JP5173713B2/ja active Active
-
2009
- 2009-09-28 US US12/585,879 patent/US8365179B2/en active Active
-
2012
- 2012-09-14 US US13/619,530 patent/US9098336B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20130013900A1 (en) | 2013-01-10 |
| US9098336B2 (en) | 2015-08-04 |
| US8365179B2 (en) | 2013-01-29 |
| US20100083267A1 (en) | 2010-04-01 |
| JP2010086130A (ja) | 2010-04-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5173713B2 (ja) | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 | |
| JP5173711B2 (ja) | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 | |
| US10467053B2 (en) | Multi-thread processor with rescheduling when threads are nondispatchable | |
| JP5173712B2 (ja) | マルチスレッドプロセッサ | |
| JP5173714B2 (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 | |
| JP5536862B2 (ja) | マルチスレッドプロセッサ | |
| JP5770334B2 (ja) | マルチスレッドプロセッサ | |
| JP5536863B2 (ja) | マルチスレッドプロセッサ | |
| JP5946566B2 (ja) | マルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法 | |
| JP5770333B2 (ja) | マルチスレッドプロセッサ | |
| JP5838237B2 (ja) | マルチスレッドプロセッサ | |
| JP2012059195A (ja) | マルチスレッドプロセッサ | |
| JP5536864B2 (ja) | マルチスレッドプロセッサ | |
| JP2015064861A (ja) | マルチスレッドプロセッサ | |
| JP2014211890A (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 | |
| JP2013058265A (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110401 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120704 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120717 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120918 |
|
| 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: 20121204 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121227 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5173713 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |