JP5631976B2 - マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置 - Google Patents
マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置 Download PDFInfo
- Publication number
- JP5631976B2 JP5631976B2 JP2012507809A JP2012507809A JP5631976B2 JP 5631976 B2 JP5631976 B2 JP 5631976B2 JP 2012507809 A JP2012507809 A JP 2012507809A JP 2012507809 A JP2012507809 A JP 2012507809A JP 5631976 B2 JP5631976 B2 JP 5631976B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- highest priority
- thread
- determining
- 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
- 238000000034 method Methods 0.000 title claims description 14
- 238000012360 testing method Methods 0.000 description 15
- 230000000694 effects Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
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)
Description
22 オンチップRAM
24 優先度アービタ
25 命令フェッチ
26 命令デコーダ及びリソースインターロック
28 命令スケジューラ
Claims (13)
- 個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて、複数の利用可能な命令から個々のクロックサイクルでどの命令を発行すべきかを動的に決定する方法であって、
前記複数の利用可能な命令から最も優先度が高い命令を決定するステップと、
前記最も優先度が高い命令と前記利用可能な命令の各々との互換性を判断するステップと、
を含み、命令は、同じリソースを必要としない場合に互いに互換性があり、
前記最も優先度が高い命令を、前記最も優先度が高い命令と互換性があるとともに互いに互換性がある他の命令とともに同じクロックサイクルで発行するステップをさらに含み、
前記最も優先度が高い命令を投機的命令とすることはできないことを特徴とする方法。 - 前記最も優先度が高い命令を決定するステップが、命令を発行できる最も優先度が高いスレッドを決定するステップと、このスレッドからの前記命令を前記最も優先度が高い命令として選択するステップとを含む、
ことを特徴とする請求項1に記載の方法。 - 投機的命令、又は投機的命令を含むスレッドに、前記最も優先度が高い命令を決定するステップに利用できないものとしてマーク付けするステップをさらに含む、
ことを特徴とする請求項1に記載の方法。 - 前記複数の利用可能な命令の優先順位を決定するステップをさらに含み、前記最も優先度が高い命令と互換性のある命令が優先順位の順に発行される、
ことを特徴とする請求項1、2又は3に記載の方法。 - 投機的命令に、非投機的命令よりも低い優先順位が与えられる、
ことを特徴とする請求項4に記載の方法。 - 前記複数の利用可能な命令の優先順位を決定するステップが、利用可能な命令を含む個々のスレッドの優先順位を決定するステップを含む、
ことを特徴とする請求項4又は5に記載の方法。 - 前記利用可能な命令ごとに互換性のある又は互換性のない命令のリストを決定するステップをさらに含む、
ことを特徴とする請求項1から6のいずれかに記載の方法。 - 個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて命令を発行するためのシステムであって、
複数の利用可能な命令から最も優先度が高い命令を決定するための手段と、
前記最も優先度が高い命令と残りの前記利用可能な命令の各々との互換性を判断するための手段と、
を備え、命令は、同じリソースを必要としない場合に互いに互換性があり、
前記最も優先度が高い命令を、前記最も優先度が高い命令と互換性があるとともに互いに互換性がある他の命令とともに同じクロックサイクルで発行するための手段をさらに備え、
前記最も優先度が高い命令を投機的命令とすることはできないことを特徴とするシステム。 - 前記最も優先度が高い命令を決定するための手段が、命令を発行できる最も優先度が高いスレッドを決定し、このスレッドからの前記命令を前記最も優先度が高い命令として選択するための手段を備える、
ことを特徴とする請求項8に記載のシステム。 - 投機的命令、又は投機的命令を含むスレッドに、前記最も優先度が高い命令としての検討に利用できないものとしてマーク付けするための手段をさらに備える、
ことを特徴とする請求項8又は9に記載のシステム。 - 前記複数の利用可能な命令の優先順位を決定するための手段をさらに備え、前記発行するための手段が、前記最も優先度が高い命令と互換性のある命令を優先順位の順に発行するように構成される、
ことを特徴とする請求項8、9又は10に記載のシステム。 - 前記複数の利用可能な命令の優先順位を決定するための手段が、利用可能な命令を含む個々のスレッドの優先順位を決定するための手段を備える、
ことを特徴とする請求項11に記載のシステム。 - 前記利用可能な命令ごとに互換性のある又は互換性のない命令のリストを決定するための手段をさらに備える、
ことを特徴とする請求項8から12のいずれか1項に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0907286A GB2469822B (en) | 2009-04-28 | 2009-04-28 | Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor |
GB0907286.9 | 2009-04-28 | ||
PCT/GB2010/000832 WO2010125336A1 (en) | 2009-04-28 | 2010-04-27 | Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2012525620A JP2012525620A (ja) | 2012-10-22 |
JP2012525620A5 JP2012525620A5 (ja) | 2013-06-20 |
JP5631976B2 true JP5631976B2 (ja) | 2014-11-26 |
Family
ID=40791924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012507809A Active JP5631976B2 (ja) | 2009-04-28 | 2010-04-27 | マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9189241B2 (ja) |
EP (1) | EP2425329B8 (ja) |
JP (1) | JP5631976B2 (ja) |
CN (1) | CN102414659B (ja) |
GB (1) | GB2469822B (ja) |
WO (1) | WO2010125336A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063291B (zh) * | 2011-01-13 | 2013-08-28 | 上海大学 | 一种前瞻线程的多级并行执行方法 |
US20140007087A1 (en) * | 2012-06-29 | 2014-01-02 | Mark Scott-Nash | Virtual trusted platform module |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
CN108279927B (zh) * | 2017-12-26 | 2020-07-31 | 芯原微电子(上海)股份有限公司 | 可调整指令优先级的多通道指令控制方法及系统、控制器 |
US11314516B2 (en) * | 2018-01-19 | 2022-04-26 | Marvell Asia Pte, Ltd. | Issuing instructions based on resource conflict constraints in microprocessor |
CN108710506B (zh) * | 2018-05-31 | 2021-01-22 | 北京智行者科技有限公司 | 车辆的指令处理方法 |
CN111984387B (zh) * | 2020-08-26 | 2024-06-25 | 上海兆芯集成电路股份有限公司 | 用于调度发布队列中指令的方法及处理器 |
US11656877B2 (en) | 2021-03-31 | 2023-05-23 | Advanced Micro Devices, Inc. | Wavefront selection and execution |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2143490T3 (es) * | 1992-08-12 | 2000-05-16 | Advanced Micro Devices Inc | Decodificador de instrucciones. |
JPH08179946A (ja) * | 1994-12-26 | 1996-07-12 | Toshiba Corp | プロセッサ |
GB2311882B (en) * | 1996-04-04 | 2000-08-09 | Videologic Ltd | A data processing management system |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
JP2001092657A (ja) * | 1999-09-22 | 2001-04-06 | Toshiba Corp | 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体 |
US6658551B1 (en) * | 2000-03-30 | 2003-12-02 | Agere Systems Inc. | Method and apparatus for identifying splittable packets in a multithreaded VLIW processor |
GB2372847B (en) * | 2001-02-19 | 2004-12-29 | Imagination Tech Ltd | Control of priority and instruction rates on a multithreaded processor |
US7051195B2 (en) * | 2001-10-26 | 2006-05-23 | Hewlett-Packard Development Company, L.P. | Method of optimization of CPU and chipset performance by support of optional reads by CPU and chipset |
JP3816844B2 (ja) * | 2002-07-05 | 2006-08-30 | 富士通株式会社 | プロセッサ及び命令制御方法 |
US6950925B1 (en) * | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
US20040168045A1 (en) * | 2003-02-21 | 2004-08-26 | Dale Morris | Out-of-order processor executing speculative-load instructions |
US20040225870A1 (en) * | 2003-05-07 | 2004-11-11 | Srinivasan Srikanth T. | Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor |
US7366877B2 (en) * | 2003-09-17 | 2008-04-29 | International Business Machines Corporation | Speculative instruction issue in a simultaneously multithreaded processor |
GB2415060B (en) | 2004-04-16 | 2007-02-14 | Imagination Tech Ltd | Dynamic load balancing |
US7237094B2 (en) * | 2004-10-14 | 2007-06-26 | International Business Machines Corporation | Instruction group formation and mechanism for SMT dispatch |
US8756605B2 (en) * | 2004-12-17 | 2014-06-17 | Oracle America, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US7254697B2 (en) * | 2005-02-11 | 2007-08-07 | International Business Machines Corporation | Method and apparatus for dynamic modification of microprocessor instruction group at dispatch |
US7631308B2 (en) * | 2005-02-11 | 2009-12-08 | International Business Machines Corporation | Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors |
JP2006343872A (ja) * | 2005-06-07 | 2006-12-21 | Keio Gijuku | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 |
US20070294693A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Scheduling thread execution among a plurality of processors based on evaluation of memory access data |
CN100578459C (zh) * | 2007-06-12 | 2010-01-06 | 华为技术有限公司 | 线程调度方法及其装置 |
-
2009
- 2009-04-28 GB GB0907286A patent/GB2469822B/en not_active Expired - Fee Related
- 2009-09-11 US US12/584,759 patent/US9189241B2/en active Active
-
2010
- 2010-04-27 JP JP2012507809A patent/JP5631976B2/ja active Active
- 2010-04-27 EP EP10717728.9A patent/EP2425329B8/en active Active
- 2010-04-27 WO PCT/GB2010/000832 patent/WO2010125336A1/en active Application Filing
- 2010-04-27 CN CN201080018675.9A patent/CN102414659B/zh active Active
-
2015
- 2015-11-03 US US14/930,913 patent/US10360038B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012525620A (ja) | 2012-10-22 |
EP2425329B1 (en) | 2017-12-27 |
US9189241B2 (en) | 2015-11-17 |
CN102414659B (zh) | 2014-10-29 |
US20160055002A1 (en) | 2016-02-25 |
GB0907286D0 (en) | 2009-06-10 |
GB2469822A (en) | 2010-11-03 |
US10360038B2 (en) | 2019-07-23 |
EP2425329A1 (en) | 2012-03-07 |
CN102414659A (zh) | 2012-04-11 |
WO2010125336A1 (en) | 2010-11-04 |
US20100275211A1 (en) | 2010-10-28 |
GB2469822B (en) | 2011-04-20 |
EP2425329B8 (en) | 2018-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5631976B2 (ja) | マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置 | |
US8082420B2 (en) | Method and apparatus for executing instructions | |
JP5607545B2 (ja) | マイクロプロセッサシステムにおける命令フェッチングの優先順位付け | |
JP4610593B2 (ja) | デュアルスレッドプロセッサ | |
JP5104863B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP5270257B2 (ja) | 予測されなかったブランチに対する命令バッファの深さを動的に管理するための方法および装置 | |
US7269712B2 (en) | Thread selection for fetching instructions for pipeline multi-threaded processor | |
US7035997B1 (en) | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors | |
US8635621B2 (en) | Method and apparatus to implement software to hardware thread priority | |
EP2035929A1 (en) | Synchronisation of execution threads on a multi-threaded processor | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
US8560813B2 (en) | Multithreaded processor with fast and slow paths pipeline issuing instructions of differing complexity of different instruction set and avoiding collision | |
US7734897B2 (en) | Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads | |
KR20150019349A (ko) | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 | |
WO2002006959A1 (en) | Instruction fetch and dispatch in multithreaded system | |
JP2005309762A (ja) | スレッド切替制御装置。 | |
US20100031011A1 (en) | Method and apparatus for optimized method of bht banking and multiple updates | |
KR101122180B1 (ko) | 명령 제어 장치 및 명령 제어 방법 | |
JP2020091751A (ja) | 演算処理装置および演算処理装置の制御方法 | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
US20040128488A1 (en) | Strand switching algorithm to avoid strand starvation | |
JP5573038B2 (ja) | マルチスレッドプロセッサ及びプログラム | |
JP2023540036A (ja) | 分岐予測リダイレクトのための代替パス | |
JPWO2008155839A1 (ja) | 命令処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130425 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130425 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140626 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140707 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140822 |
|
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: 20140916 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141008 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5631976 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |