US7269712B2 - Thread selection for fetching instructions for pipeline multi-threaded processor - Google Patents
Thread selection for fetching instructions for pipeline multi-threaded processor Download PDFInfo
- Publication number
- US7269712B2 US7269712B2 US10/754,550 US75455004A US7269712B2 US 7269712 B2 US7269712 B2 US 7269712B2 US 75455004 A US75455004 A US 75455004A US 7269712 B2 US7269712 B2 US 7269712B2
- Authority
- US
- United States
- Prior art keywords
- instruction
- threads
- processing
- thread
- instructions
- 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, expires
Links
- 238000000034 method Methods 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 3
- 101100135790 Caenorhabditis elegans pcn-1 gene Proteins 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Definitions
- Simultaneous multithreading allows a plurality of threads to simultaneously exist for a clock cycle and instructions of each of the plurality of threads to be simultaneously executed.
- a thread may be generally defined as a distinct point of control within a process, a distinct execution path through a process, or a distinct program.
- the CPU switches between these threads, allocating system resources to each thread in turn, in order to improve the rate of instruction throughput.
- the higher rate of instruction throughput is achieved by providing higher utilization of the various functional units by taking advantage of the independence of the instructions from the various threads.
- simultaneous multithreading instructions from multiple threads are executed during each cycle, dynamically sharing system resources and further improving instruction throughput. Namely, SMT allows instructions to be executed even during a waste period of a thread to reduce the effect of the waste period, which results in improved performance of the CPU.
- a SMT processor typically includes a fetch unit fetching a next instruction or group of instructions for one or more threads from an instruction cache; an instruction decoder decoding the cached instructions to obtain the operation type and logical address or addresses associated with the operation type of each cached instruction; a register renamer converting the logical address or addresses into real address or addresses of registers in an execution unit; an instruction queue storing the decoded instructions and real addresses; and an execution unit for executing instructions taken from the instruction queue.
- the execution unit includes function units for performing the function or operation of an instruction taken from the instruction queue and includes registers for storing the operands to perform the function and for storing results from performing the operation.
- the registers store this information in accordance with the real address or addresses generated by the register renamer.
- the instructions from the different threads are stored in the instruction queue unit 150
- the instructions are held in the instruction queue unit 150 until issued to the execution unit 160 .
- the instructions are issued out-of-order to the appropriate function unit 165 .
- the function units 165 are blocks, such as an adder, a multiplier, a shifter, an accumulator, as non-limiting examples, which perform basic operations.
- the registers 163 may also include, as non-limiting examples, a register to be used as an operand in the execution of the issued instruction, a temporary storage register used during an operation, a destination register to store operation results, etc.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2003-0005236A KR100498482B1 (ko) | 2003-01-27 | 2003-01-27 | 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 |
KR2003-5236 | 2003-01-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
US20040193854A1 US20040193854A1 (en) | 2004-09-30 |
US7269712B2 true US7269712B2 (en) | 2007-09-11 |
Family
ID=32906515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/754,550 Active 2024-10-01 US7269712B2 (en) | 2003-01-27 | 2004-01-12 | Thread selection for fetching instructions for pipeline multi-threaded processor |
Country Status (3)
Country | Link |
---|---|
US (1) | US7269712B2 (ko) |
JP (1) | JP4476636B2 (ko) |
KR (1) | KR100498482B1 (ko) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179280A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Multithreading processor including thread scheduler based on instruction stall likelihood prediction |
US20060179284A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US20060179194A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US20060179283A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US20060179281A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US20060179276A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US20060179274A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor |
US20060206692A1 (en) * | 2005-02-04 | 2006-09-14 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US20080069130A1 (en) * | 2006-09-16 | 2008-03-20 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US20080069128A1 (en) * | 2006-09-16 | 2008-03-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
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 |
US7752627B2 (en) | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7773621B2 (en) | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7961745B2 (en) | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US20110276784A1 (en) * | 2010-05-10 | 2011-11-10 | Telefonaktiebolaget L M Ericsson (Publ) | Hierarchical multithreaded processing |
US8285973B2 (en) | 2008-08-04 | 2012-10-09 | International Business Machines Corporation | Thread completion rate controlled scheduling |
US20170139716A1 (en) * | 2015-11-18 | 2017-05-18 | Arm Limited | Handling stalling event for multiple thread pipeline, and triggering action based on information access delay |
US10983799B1 (en) | 2017-12-19 | 2021-04-20 | Apple Inc. | Selection of instructions to issue in a processor |
US11422821B1 (en) | 2018-09-04 | 2022-08-23 | Apple Inc. | Age tracking for independent pipelines |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
KR100788500B1 (ko) * | 2006-07-14 | 2007-12-24 | 엠텍비젼 주식회사 | 다단 파이프라인 구조의 정점 처리 장치 및 그 방법 |
KR100853457B1 (ko) * | 2006-12-04 | 2008-08-21 | 한국전자통신연구원 | 고속의 대량 데이터를 수신하기 위한 데이터 수신 모듈의처리 방법 |
US8578387B1 (en) * | 2007-07-31 | 2013-11-05 | Nvidia Corporation | Dynamic load balancing of instructions for execution by heterogeneous processing engines |
US9304775B1 (en) | 2007-11-05 | 2016-04-05 | Nvidia Corporation | Dispatching of instructions for execution by heterogeneous processing engines |
KR101041777B1 (ko) * | 2009-06-08 | 2011-06-17 | 엠텍비젼 주식회사 | 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스 |
JP5573038B2 (ja) * | 2009-07-23 | 2014-08-20 | 日本電気株式会社 | マルチスレッドプロセッサ及びプログラム |
GB2489708B (en) * | 2011-04-05 | 2020-04-15 | Advanced Risc Mach Ltd | Thread selection for multithreaded processing |
KR101892273B1 (ko) | 2011-10-12 | 2018-08-28 | 삼성전자주식회사 | 스레드 프로그레스 트래킹 방법 및 장치 |
JP5803972B2 (ja) * | 2013-04-18 | 2015-11-04 | 株式会社デンソー | マルチコアプロセッサ |
US9898348B2 (en) | 2014-10-22 | 2018-02-20 | International Business Machines Corporation | Resource mapping in multi-threaded central processor units |
CN115408153B (zh) * | 2022-08-26 | 2023-06-30 | 海光信息技术股份有限公司 | 多线程处理器的指令分发方法、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
-
2003
- 2003-01-27 KR KR10-2003-0005236A patent/KR100498482B1/ko active IP Right Grant
-
2004
- 2004-01-12 US US10/754,550 patent/US7269712B2/en active Active
- 2004-01-20 JP JP2004012433A patent/JP4476636B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6470443B1 (en) | 1996-12-31 | 2002-10-22 | Compaq Computer Corporation | Pipelined multi-thread processor selecting thread instruction in inter-stage buffer based on count information |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
Non-Patent Citations (4)
Title |
---|
"Balancing Throughput and Fairness in SMT Processors"; Luo et al; 2001; IEEE. * |
"Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading Processor"; Tullsen et al; 1996. * |
"Front-End Policies for Improved Issue Efficiency in SMT Processors"; Ali El-Moursy and David Albonesi; 2002; IEEE. * |
Korean Offfice Action, dated Dec. 7, 2004, with English translation. |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7506140B2 (en) | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US20060179194A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US20060179280A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Multithreading processor including thread scheduler based on instruction stall likelihood prediction |
US20060179281A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US20060179276A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US20060179274A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor |
US20060206692A1 (en) * | 2005-02-04 | 2006-09-14 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US20070089112A1 (en) * | 2005-02-04 | 2007-04-19 | Mips Technologies, Inc. | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US20070113053A1 (en) * | 2005-02-04 | 2007-05-17 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7657883B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US8151268B2 (en) | 2005-02-04 | 2012-04-03 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7490230B2 (en) | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US7853777B2 (en) | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7509447B2 (en) | 2005-02-04 | 2009-03-24 | Mips Technologies, Inc. | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US20090249351A1 (en) * | 2005-02-04 | 2009-10-01 | Mips Technologies, Inc. | Round-Robin Apparatus and Instruction Dispatch Scheduler Employing Same For Use In Multithreading Microprocessor |
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 |
US7631130B2 (en) | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US20060179283A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US8078840B2 (en) | 2005-02-04 | 2011-12-13 | Mips Technologies, Inc. | Thread instruction fetch based on prioritized selection from plural round-robin outputs for different thread states |
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 |
US7660969B2 (en) | 2005-02-04 | 2010-02-09 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7752627B2 (en) | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US20060179284A1 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7990989B2 (en) | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US7773621B2 (en) | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7961745B2 (en) | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7760748B2 (en) | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US20080069128A1 (en) * | 2006-09-16 | 2008-03-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US20080069130A1 (en) * | 2006-09-16 | 2008-03-20 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US8285973B2 (en) | 2008-08-04 | 2012-10-09 | International Business Machines Corporation | Thread completion rate controlled scheduling |
US20110276784A1 (en) * | 2010-05-10 | 2011-11-10 | Telefonaktiebolaget L M Ericsson (Publ) | Hierarchical multithreaded processing |
US20170139716A1 (en) * | 2015-11-18 | 2017-05-18 | Arm Limited | Handling stalling event for multiple thread pipeline, and triggering action based on information access delay |
US10552160B2 (en) | 2015-11-18 | 2020-02-04 | Arm Limited | Handling stalling event for multiple thread pipeline, and triggering action based on information access delay |
US10983799B1 (en) | 2017-12-19 | 2021-04-20 | Apple Inc. | Selection of instructions to issue in a processor |
US11422821B1 (en) | 2018-09-04 | 2022-08-23 | Apple Inc. | Age tracking for independent pipelines |
Also Published As
Publication number | Publication date |
---|---|
JP2004227587A (ja) | 2004-08-12 |
JP4476636B2 (ja) | 2010-06-09 |
KR20040068721A (ko) | 2004-08-02 |
KR100498482B1 (ko) | 2005-07-01 |
US20040193854A1 (en) | 2004-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7269712B2 (en) | Thread selection for fetching instructions for pipeline multi-threaded processor | |
US6470443B1 (en) | Pipelined multi-thread processor selecting thread instruction in inter-stage buffer based on count information | |
EP1749262B1 (en) | Multiple branch predictions | |
US5790822A (en) | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor | |
US7752627B2 (en) | Leaky-bucket thread scheduler in a multithreading microprocessor | |
JP4610593B2 (ja) | デュアルスレッドプロセッサ | |
US6658447B2 (en) | Priority based simultaneous multi-threading | |
US7664936B2 (en) | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages | |
US7509447B2 (en) | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor | |
US5519864A (en) | Method and apparatus for scheduling the dispatch of instructions from a reservation station | |
US7506140B2 (en) | Return data selector employing barrel-incrementer-based round-robin apparatus | |
US20060179284A1 (en) | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency | |
US20080109640A1 (en) | Method For Changing A Thread Priority In A Simultaneous Multithread Processor | |
US20060206692A1 (en) | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor | |
US20060179276A1 (en) | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor | |
US20060236135A1 (en) | Apparatus and method for software specified power management performance using low power virtual threads | |
JP5173714B2 (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 | |
US8285973B2 (en) | Thread completion rate controlled scheduling | |
US7194603B2 (en) | SMT flush arbitration | |
EP1311947B1 (en) | Instruction fetch and dispatch in multithreaded system | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
US7237093B1 (en) | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
JP5573038B2 (ja) | マルチスレッドプロセッサ及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CHO, JANG-HO;REEL/FRAME:014884/0682 Effective date: 20031222 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |