JP5861354B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents
演算処理装置及び演算処理装置の制御方法 Download PDFInfo
- Publication number
- JP5861354B2 JP5861354B2 JP2011207354A JP2011207354A JP5861354B2 JP 5861354 B2 JP5861354 B2 JP 5861354B2 JP 2011207354 A JP2011207354 A JP 2011207354A JP 2011207354 A JP2011207354 A JP 2011207354A JP 5861354 B2 JP5861354 B2 JP 5861354B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- thread
- address
- selector
- 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 26
- 230000015654 memory Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 230000010365 information processing Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000007616 round robin method 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, 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Description
205 一次命令キャッシュ
301 Aステージ
302 Tステージ
303 Mステージ
311 スレッド調停回路
312 パイプラインレジスタ
313 第2のセレクタ
321 大規模履歴テーブル
322 パイプラインレジスタ
323 分岐予測論理回路
501 分岐方向予測回路
502 小規模履歴テーブル
503 分岐方向予測論理回路
504 パイプラインレジスタ
SL1〜SLn 第1のセレクタ
Claims (6)
- 複数のスレッドの命令を複数のサイクルステージ毎に実行する演算処理装置において、
入力した複数のスレッドの命令の命令アドレス又は予測対象の分岐命令の分岐先アドレスを選択して、前記複数のスレッドのアドレスを出力する第1のセレクタと、
前記第1のセレクタが出力した複数のスレッドのアドレスのうち、いずれか1個のスレッドのアドレスを選択する第2のセレクタと、
前記複数のサイクルステージのうち第1のサイクルステージで、前記第2のセレクタが選択したアドレスの分岐命令が分岐するかを示す分岐方向を前記選択されたアドレスに基づき予測して出力するとともに、前記第1のサイクルステージより後の第2のサイクルステージで、前記予測対象の分岐命令の分岐先アドレスを前記選択されたアドレスに基づき予測して出力する分岐予測回路と、
前記分岐予測回路が前記分岐先アドレスを出力する前に、前記分岐予測回路が出力した前記分岐方向に基づき、前記第1セレクタ及び第2のセレクタによるスレッドのアドレスの選択を制御するスレッド調停回路と、を有することを特徴とする演算処理装置。 - 前記分岐予測回路は、
過去の分岐命令の分岐方向及び分岐先アドレスの履歴を記憶する第1の履歴テーブルを用いて前記予測対象分岐命令の分岐先アドレスを予測し、
過去の分岐命令の分岐方向の履歴を記憶する第2の履歴テーブルを用いて前記予測対象分岐命令の分岐方向を予測することを特徴とする請求項1記載の演算処理装置。 - 前記第2の履歴テーブルのエントリ数は、前記第1の履歴テーブルのエントリ数よりも少ないことを特徴とする請求項2記載の演算処理装置。
- 前記第1のセレクタは、
前記予測された分岐方向が分岐する旨を示す場合には前記分岐先アドレスを選択し、前記予測された分岐方向が分岐しない旨を示す場合には前記複数のスレッドの命令の命令アドレスを選択することを特徴とする請求項1〜3のいずれか1項に記載の演算処理装置。 - 前記第2のセレクタは、
前記予測された分岐方向が分岐する旨を示す場合、前記複数のスレッドのうち前記分岐命令が属するスレッドと異なるスレッドのアドレスを選択し、前記予測された分岐方向が分岐しない旨を示す場合、前記分岐命令が属するスレッドと同じスレッドのアドレスを選択することを特徴とする請求項1〜4のいずれか1項に記載の演算処理装置。 - 複数のスレッドの命令を複数のサイクルステージ毎に実行する演算処理装置の制御方法において、
前記演算処理装置が有する第1のセレクタが、入力した複数のスレッドの命令の命令アドレス又は予測対象の分岐命令の分岐先アドレスを選択して複数のスレッドのアドレスを出力し、
前記演算処理装置が有する第2のセレクタが、前記第1のセレクタが出力した複数のスレッドのアドレスのうち、いずれか1個のスレッドのアドレスを選択し、
前記演算処理装置が有する分岐予測回路が、前記複数のサイクルステージのうち第1のサイクルステージで、前記第2のセレクタが選択したアドレスの分岐命令が分岐するかを示す分岐方向を、前記選択されたアドレスに基づき予測して出力するとともに、前記複数のサイクルステージのうち前記第1のサイクルステージより後の第2のサイクルステージで、前記予測対象の分岐命令の分岐先アドレスを前記選択されたアドレスに基づき予測して出力し、
前記演算処理装置が有するスレッド調停回路が、前記分岐予測回路が前記分岐先アドレスを出力する前に、前記分岐予測回路が出力した前記分岐方向に基づき、前記第1セレクタ及び第2のセレクタによるスレッドのアドレスの選択を制御することを特徴とする演算処理装置の制御方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011207354A JP5861354B2 (ja) | 2011-09-22 | 2011-09-22 | 演算処理装置及び演算処理装置の制御方法 |
US13/591,383 US20130080749A1 (en) | 2011-09-22 | 2012-08-22 | Processor and control method of processor |
EP12182156.5A EP2573673B1 (en) | 2011-09-22 | 2012-08-29 | Multithreaded processor and instruction fetch control method of multithreaded processor |
US13/597,322 US9069565B2 (en) | 2011-09-22 | 2012-08-29 | Processor and control method of processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011207354A JP5861354B2 (ja) | 2011-09-22 | 2011-09-22 | 演算処理装置及び演算処理装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013069129A JP2013069129A (ja) | 2013-04-18 |
JP5861354B2 true JP5861354B2 (ja) | 2016-02-16 |
Family
ID=47018753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011207354A Active JP5861354B2 (ja) | 2011-09-22 | 2011-09-22 | 演算処理装置及び演算処理装置の制御方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20130080749A1 (ja) |
EP (1) | EP2573673B1 (ja) |
JP (1) | JP5861354B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011076120A1 (en) * | 2009-12-25 | 2011-06-30 | Shanghai Xin Hao Micro Electronics Co. Ltd. | High-performance cache system and method |
US9141388B2 (en) * | 2009-12-25 | 2015-09-22 | Shanghai Xin Hao Micro Electronics Co., Ltd. | High-performance cache system and method |
US9311098B2 (en) * | 2013-05-07 | 2016-04-12 | Apple Inc. | Mechanism for reducing cache power consumption using cache way prediction |
JP6098429B2 (ja) * | 2013-08-12 | 2017-03-22 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US9846581B2 (en) | 2013-09-06 | 2017-12-19 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor pipeline and bypass passing |
JP6930381B2 (ja) * | 2017-11-06 | 2021-09-01 | 富士通株式会社 | 情報処理システム、演算処理装置及び情報処理システムの制御方法 |
US10901743B2 (en) * | 2018-07-19 | 2021-01-26 | International Business Machines Corporation | Speculative execution of both paths of a weakly predicted branch instruction |
US11507380B2 (en) | 2018-08-29 | 2022-11-22 | Advanced Micro Devices, Inc. | Branch confidence throttle |
CN111651864B (zh) * | 2020-05-12 | 2023-03-17 | 北京华如科技股份有限公司 | 一种事件集中发射式多异构时间队列优化仿真执行方法及系统 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04179555A (ja) | 1990-11-14 | 1992-06-26 | Matsushita Electric Ind Co Ltd | サーマルヘッドおよびその製造方法 |
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
JP3335379B2 (ja) | 1992-09-09 | 2002-10-15 | 富士通株式会社 | ブランチ・ヒストリーを持つ命令実行処理装置 |
US5796998A (en) * | 1996-11-21 | 1998-08-18 | International Business Machines Corporation | Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system |
US7035997B1 (en) * | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
JP2001005665A (ja) | 1999-06-21 | 2001-01-12 | Hitachi Ltd | 分岐予測装置 |
KR100395763B1 (ko) * | 2000-02-01 | 2003-08-25 | 삼성전자주식회사 | 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기 |
WO2002006959A1 (en) | 2000-07-14 | 2002-01-24 | Clearwater Networks, Inc. | Instruction fetch and dispatch in multithreaded system |
US6898694B2 (en) * | 2001-06-28 | 2005-05-24 | Intel Corporation | High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle |
US7954102B2 (en) | 2002-11-13 | 2011-05-31 | Fujitsu Limited | Scheduling method in multithreading processor, and multithreading processor |
JP4086846B2 (ja) | 2002-11-13 | 2008-05-14 | 富士通株式会社 | マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ |
US7000233B2 (en) * | 2003-04-21 | 2006-02-14 | International Business Machines Corporation | Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread |
US7401208B2 (en) | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor |
US7401207B2 (en) | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Apparatus and method for adjusting instruction thread priority in a multi-thread processor |
US7360062B2 (en) | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
US7120784B2 (en) | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7877587B2 (en) | 2006-06-09 | 2011-01-25 | Arm Limited | Branch prediction within a multithreaded processor |
US7565512B2 (en) | 2007-02-02 | 2009-07-21 | Kabushiki Kaisha Toshiba | Method, system and apparatus for generation of global branch history |
WO2008155794A1 (ja) * | 2007-06-19 | 2008-12-24 | Fujitsu Limited | 情報処理装置 |
-
2011
- 2011-09-22 JP JP2011207354A patent/JP5861354B2/ja active Active
-
2012
- 2012-08-22 US US13/591,383 patent/US20130080749A1/en not_active Abandoned
- 2012-08-29 US US13/597,322 patent/US9069565B2/en not_active Expired - Fee Related
- 2012-08-29 EP EP12182156.5A patent/EP2573673B1/en not_active Not-in-force
Also Published As
Publication number | Publication date |
---|---|
US20130080750A1 (en) | 2013-03-28 |
EP2573673A1 (en) | 2013-03-27 |
EP2573673B1 (en) | 2014-08-13 |
JP2013069129A (ja) | 2013-04-18 |
US20130080749A1 (en) | 2013-03-28 |
US9069565B2 (en) | 2015-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5861354B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US10338927B2 (en) | Method and apparatus for implementing a dynamic out-of-order processor pipeline | |
EP1749262B1 (en) | Multiple branch predictions | |
US9811340B2 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
US20080046689A1 (en) | Method and apparatus for cooperative multithreading | |
JP5177141B2 (ja) | 演算処理装置、演算処理方法 | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
US20060161421A1 (en) | Software emulation of directed exceptions in a multithreading processor | |
US20060161921A1 (en) | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor | |
JP5209933B2 (ja) | データ処理装置 | |
JP2006114036A (ja) | Smtディスパッチのための命令グループ形成およびメカニズム | |
JP2018005488A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20040034759A1 (en) | Multi-threaded pipeline with context issue rules | |
US10048969B2 (en) | Dynamic branch predictor indexing a plurality of weight tables by instruction address fetch history and making a prediction based on a product sum calculation of global history register values and outputted weight table value | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
JP5104861B2 (ja) | 演算処理装置 | |
US20100100709A1 (en) | Instruction control apparatus and instruction control method | |
JP2020091751A (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP5104862B2 (ja) | 命令実行制御装置及び命令実行制御方法 | |
JP7131313B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US11954491B2 (en) | Multi-threading microprocessor with a time counter for statically dispatching instructions | |
JP2015184979A (ja) | 演算装置および命令フェッチ方法 | |
EP2843543B1 (en) | Arithmetic processing device and control method of arithmetic processing device | |
Wu et al. | A dynamically clustered chip multiprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140603 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150303 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150402 |
|
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: 20151124 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151207 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5861354 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |