CN108255587A - 一种同步多线程处理器 - Google Patents

一种同步多线程处理器 Download PDF

Info

Publication number
CN108255587A
CN108255587A CN201611248902.2A CN201611248902A CN108255587A CN 108255587 A CN108255587 A CN 108255587A CN 201611248902 A CN201611248902 A CN 201611248902A CN 108255587 A CN108255587 A CN 108255587A
Authority
CN
China
Prior art keywords
execution unit
thread
instruction
multiline procedure
procedure processor
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.)
Granted
Application number
CN201611248902.2A
Other languages
English (en)
Other versions
CN108255587B (zh
Inventor
李亦欧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Spreadtrum Communications Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Spreadtrum Communications Shanghai Co Ltd filed Critical Spreadtrum Communications Shanghai Co Ltd
Priority to CN201611248902.2A priority Critical patent/CN108255587B/zh
Publication of CN108255587A publication Critical patent/CN108255587A/zh
Application granted granted Critical
Publication of CN108255587B publication Critical patent/CN108255587B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)

Abstract

一种同步多线程处理器,所述同步多线程处理器包括:指令执行单元,所述指令执行单元包括多个线程中的各个线程专用的专用执行单元和所述多个线程共享的共享执行单元;流水控制单元,适于向所述共享执行单元发送指示信号,以使得所述共享执行单元执行所述指示信号指向的目标线程的指令。上述方案可提高同步多线程处理器的硬件资源利用率。

Description

一种同步多线程处理器
技术领域
本发明涉及处理器架构技术领域,特别是涉及一种同步多线程处理器。
背景技术
同步多线程(SMT)是一种在单个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上,同步多线程是一种将基于多CPU的线程级并行处理转化为基于同一CPU的指令级并行处理的方法。同步多线程技术可以实现单个物理处理器从多个硬件线程上下文同时分派指令。本文所称的同步多线程处理器为使用同步多线程技术的处理器。
然而,现有技术中的同步多线程处理器存在资源利用率较低的问题。
发明内容
本发明解决的技术问题是提高同步多线程处理器的资源利用率。
为解决上述技术问题,本发明实施例提供一种同步多线程处理器,所述同步多线程处理器包括:
指令执行单元,所述指令执行单元包括多个线程中的各个线程专用的专用执行单元和所述多个线程共享的共享执行单元;
流水控制单元,适于向所述共享执行单元发送指示信号,以使得所述共享执行单元执行所述指示信号指向的目标线程的指令。
可选地,所述流水控制单元包括多个流水控制子单元,所述多个流水控制子单元与所述多个线程一一对应,其中,所述指示信号来自于所述目标线程对应的流水控制子单元。
可选地,与所述目标线程对应的流水控制子单元适于从所述共享执行单元获得执行结果,并将所述执行结果发送至该目标线程对应的下一级流水。
可选地,每个所述流水控制子单元还适于接收对应的专用执行单元的执行结果,并将该执行结果发送至该流水控制子单元对应的线程的下一级流水。
可选地,所述同步多线程处理器,还包括:
指令发布单元,适于向所述指令执行单元发布待执行的指令。
可选地,所述同步多线程处理器,还包括:
存储器访问单元,适于获取所述指令执行单元执行指令时涉及的数据。
可选地,所述线程的数量为2个。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明实施例中,所述同步多线程处理器包括指令执行单元和流水控制单元,所述指令执行单元包括多个线程中的各个线程专用的专用执行单元和所述多个线程共享的共享执行单元,所述流水控制单元适于向所述共享执行单元发送指示信号,以使得所述共享执行单元执行所述指示信号指向的目标线程的指令。上述方案从流水线硬件资源上,将用于执行指令的指令执行单元划分为专用执行单元和共享执行单元;并在指令执行的调度上,通过流水控制单元来控制共享执行单元执行指示信号指向的目标线程的指令,该目标线程根据需要可以是多个线程中的任一个。而专用执行单元则专用于执行对应线程的指令,从而使得流水线硬件资源得以有序、充分利用,从而提升了同步多线程处理器的资源利用率。
附图说明
图1是本发明实施例中的一种同步多线程处理器的结构示意图;
图2是本发明实施例中的一种可处理线程数量为两个的同步多线程处理器的结构示意图。
具体实施方式
同步多线程(SMT)是一种在单个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上,同步多线程是一种将基于多CPU的线程级并行处理转化为基于同一CPU的指令级并行处理的方法。同步多线程技术可以实现单个物理处理器从多个硬件线程上下文同时分派指令。本文所称的同步多线程处理器为使用同步多线程技术的处理器。然而,现有技术中存在同步多线程处理器存在资源利用率较低的问题。
本发明实施例中,所述同步多线程处理器包括指令执行单元和流水控制单元,所述指令执行单元包括多个线程中的各个线程专用的专用执行单元和所述多个线程共享的共享执行单元,所述流水控制单元适于向所述共享执行单元发送指示信号,以使得所述共享执行单元执行所述指示信号指向的目标线程的指令。上述方案从流水线硬件资源上,将用于执行指令的指令执行单元划分为专用执行单元和共享执行单元,并在指令执行的调度上,通过流水控制单元来控制共享执行单元执行指示信号指向的目标线程的指令,该目标线程根据需要可以是多个线程中的任一个,而专用执行单元则专用于执行对应线程的指令,从而使得流水线硬件资源得以有序、充分利用,从而提升了同步多线程处理器的资源利用率。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例中的一种同步多线程处理器的结构示意图。
如图1所示,所述同步多线程处理器包括指令执行单元11和流水控制单元12。
在本发明实施例中,所述同步多线程处理器所处理的线程数量为2个或2个以上,每条线程的指令进入其各自的流水线进行处理。例如,所述线程数量为2,则可设计为2条流水线。
所述指令执行单元11包括多个线程中的各个线程专用的专用执行单元111和所述多个线程共享的共享执行单元112。
在本实施例中,所述指令执行单元11包括各线程的流水线的执行单元(executionpipes)。其中,一部分执行单元(也即所述专用执行单元111)为单独某个线程专用,另一部分执行单元(也即所述共享执行单元112)被多个线程共享。所述专用执行单元111和所述共享执行单元112的数量不做限制,其中,所述专用执行单元111的数量至少为2个。
在一个非限制性的例子中,多个流水阶段可以包括指令发射阶段、译码阶段、执行阶段和写回阶段。相应地,专用执行单元111可以是其中的一部分阶段的执行单元,例如发射阶段执行单元、译码阶段执行单元;共享执行单元112可以是另一部分阶段的执行单元,例如执行阶段的执行单元。
在具体实施中,每个所述专用执行单元111专用于执行多个线程中某个线程的指令。例如,图1中示出的两个专用执行单元111,分别专用于执行T0线程的指令和T1线程的指令。所述专用执行单元111在所述流水控制单元12的控制下执行指令。
所述流水控制单元12适于向所述共享执行单元112发送指示信号,以使得所述共享执行单元112执行所述指示信号指向的目标线程的指令。所述目标线程为所述多个线程中的其中一个,所述目标线程为所述指示信号所指向的线程。
换言之,所述共享执行单元112执行多个线程中哪一个线程的指令,取决于接收到的指示信号。所述流水控制单元12通过发出所述指示信号对共享执行单元112这一硬件资源在多个线程中的使用进行调度。
本实施例设置共享执行单元112,并且通过调度所述共享执行单元112的使用,实现共享执行单元112的充分利用,避免流水线中的执行单元需等待造成的资源浪费,从而实现流水线硬件资源的充分利用,进而提升了同步多线程处理器的资源利用率。
图2是本发明实施例中的一种处理2个线程指令的同步多线程处理器的结构示意图。如图2所示,所述同步多线程处理器可以包括:指令执行单元21和流水控制单元22。
所述指令执行单元21包括多个线程中的各个线程专用的专用执行单元和所述多个线程共享的共享执行单元212。
参照图2继续说明,图2中设定线程数量为2,两个线程分别为T0线程和T1线程。
所述专用执行单元包括第一专用执行单元2110和第二专用执行单元2111。所述第一专用执行单元2110专用于执行T0线程的指令,所述第二专用执行单元2111专用于执行T1线程的指令。
所述流水控制单元22,适于向所述共享执行单元212发送指示信号,以使得所述共享执行单元212执行所述指示信号指向的目标线程的指令。
在具体实施中,所述流水控制单元22可以包括多个流水控制子单元,所述多个流水控制子单元与所述多个线程一一对应,其中,所述指示信号来自于所述目标线程对应的流水控制子单元。
在发明一非限定性的实施例中,请参照图2,所述流水控制单元22包括2个流水控制子单元和选通子单元222。
2个流水控制子单元分别为第一流水控制子单元2210和第二流水控制子单元2212。所述第一流水控制子单元2210可用于专门控制T0线程的指令的执行,所述第二流水控制子单元2212可用于专门控制T1线程的指令的执行。
所述选通子单元222与第一流水控制子单元2210和第二流水控制子单元2212耦接,所述选通子单元222在当前流水级根据需要选通目标线程对应的控制子单元,并发出相应的指示信号,而没有被选通的控制子单元则继续等待。例如,如果所述选通子单元222判断出当前的共享执行单元212需要执行T0线程的指令,即目标线程为T0,则所述选通子单元222选通T0线程对应的第一流水控制子单元2210,以发出相应的指示信号至所述共享执行单元212。所述共享执行单元212根据接收到的信号执行目标线程T0的指令。
需要说明的是,图2中假设线程数量为2,所以流水控制子单元包括2个流水控制子单元,在具体实施中,所述流水控制子单元的数量至少与线程数量相等。
同样需要说明的是,所述专用执行单元包括第一专用执行单元和第二专用执行单元,在具体实施中,所述专用执行单元的数量至少与线程数量一致。
本发明实施例中,从流水线的执行单元这一硬件资源上的使用上,划分为专用执行单元和共享执行单元,并在指令执行的调度上,通过流水控制单元实现识别不同线程的指令后指示相应的执行单元来执行,从而实现流水线硬件资源的充分利用,从而提升了同步多线程处理器的资源利用率。
在具体实施中,与所述目标线程对应的流水控制子单元适于从所述共享执行单元获得执行结果,并将所述执行结果发送至该目标线程对应的下一级流水。
例如,结合图2所示,若所述目标线程为T0,所述共享执行单元212执行完T0线程的指令后,与目标线程T0对应的第一流水控制子单元2210从共享执行单元212获得执行结果,并将该执行结果发送至T0线程的流水线的下一级流水。
在具体实施中,在流水线包括的发射阶段、译码阶段、执行阶段和写回阶段中,当执行阶段包括多个级别时,可以将所述执行结果发送至下一级执行流水。在另一具体实施中,下一级流水也可以是写回级。写回级将执行结果写回到目标寄存器,同时将需要发送到外部存储器的数据发到存储管理单元等。
在具体实施中,所述同步多线程处理器还可以包括存储器访问单元(图未示),所述存储器访问单元适于获取所述指令执行单元21执行指令时涉及的数据。
在具体实施中,所述同步多线程处理器还可包括指令发布单元,所述执行发布单元适于向所述指令执行单元发射指令。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (7)

1.一种同步多线程处理器,其特征在于,包括:
指令执行单元,所述指令执行单元包括多个线程中的各个线程专用的专用执行单元和所述多个线程共享的共享执行单元;
流水控制单元,适于向所述共享执行单元发送指示信号,以使得所述共享执行单元执行所述指示信号指向的目标线程的指令。
2.根据权利要求1所述的同步多线程处理器,其特征在于,所述流水控制单元包括多个流水控制子单元,所述多个流水控制子单元与所述多个线程一一对应,其中,所述指示信号来自于所述目标线程对应的流水控制子单元。
3.根据权利要求2所述的同步多线程处理器,其特征在于,与所述目标线程对应的流水控制子单元适于从所述共享执行单元获得执行结果,并将所述执行结果发送至该目标线程对应的下一级流水。
4.根据权利要求2所述的同步多线程处理器,其特征在于,每个所述流水控制子单元还适于接收对应的专用执行单元的执行结果,并将该执行结果发送至该流水控制子单元对应的线程的下一级流水。
5.根据权利要求1所述的同步多线程处理器,其特征在于,还包括:
指令发布单元,适于向所述指令执行单元发布待执行的指令。
6.根据权利要求1所述的同步多线程处理器,其特征在于,还包括:
存储器访问单元,适于获取所述指令执行单元执行指令时涉及的数据。
7.根据权利要求1所述的同步多线程处理器,其特征在于,所述线程的数量为2个。
CN201611248902.2A 2016-12-29 2016-12-29 一种同步多线程处理器 Active CN108255587B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611248902.2A CN108255587B (zh) 2016-12-29 2016-12-29 一种同步多线程处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611248902.2A CN108255587B (zh) 2016-12-29 2016-12-29 一种同步多线程处理器

Publications (2)

Publication Number Publication Date
CN108255587A true CN108255587A (zh) 2018-07-06
CN108255587B CN108255587B (zh) 2021-08-24

Family

ID=62721590

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611248902.2A Active CN108255587B (zh) 2016-12-29 2016-12-29 一种同步多线程处理器

Country Status (1)

Country Link
CN (1) CN108255587B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
CN1429361A (zh) * 2000-03-24 2003-07-09 英特尔公司 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
CN1540498A (zh) * 2003-04-21 2004-10-27 国际商业机器公司 用于在同步多线程处理器中改变流水线长度的方法和电路
CN1688974A (zh) * 2001-12-31 2005-10-26 英特尔公司 挂起线程执行直到发生指定的存储器访问的方法和设备
CN101957744A (zh) * 2010-10-13 2011-01-26 北京科技大学 一种用于微处理器的硬件多线程控制方法及其装置
CN104731560A (zh) * 2013-12-20 2015-06-24 三星电子株式会社 支持多线程处理的功能单元、处理器及其操作方法
US20150309847A1 (en) * 2014-04-27 2015-10-29 Freescale Semiconductor, Inc. Testing operation of multi-threaded processor having shared resources
CN106104464A (zh) * 2014-02-06 2016-11-09 优创半导体科技有限公司 具有指令链接能力的多线程处理器中的机会多线程

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
CN1429361A (zh) * 2000-03-24 2003-07-09 英特尔公司 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
CN1688974A (zh) * 2001-12-31 2005-10-26 英特尔公司 挂起线程执行直到发生指定的存储器访问的方法和设备
CN1540498A (zh) * 2003-04-21 2004-10-27 国际商业机器公司 用于在同步多线程处理器中改变流水线长度的方法和电路
CN101957744A (zh) * 2010-10-13 2011-01-26 北京科技大学 一种用于微处理器的硬件多线程控制方法及其装置
CN104731560A (zh) * 2013-12-20 2015-06-24 三星电子株式会社 支持多线程处理的功能单元、处理器及其操作方法
CN106104464A (zh) * 2014-02-06 2016-11-09 优创半导体科技有限公司 具有指令链接能力的多线程处理器中的机会多线程
US20150309847A1 (en) * 2014-04-27 2015-10-29 Freescale Semiconductor, Inc. Testing operation of multi-threaded processor having shared resources

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谭章熹: "网络处理器的分析与研究", 《软件学报》 *

Also Published As

Publication number Publication date
CN108255587B (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
US10552163B2 (en) Method and apparatus for efficient scheduling for asymmetrical execution units
US11372546B2 (en) Digital signal processing data transfer
WO2017166777A1 (zh) 一种任务调度方法及装置
US9529596B2 (en) Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
US20150074353A1 (en) System and Method for an Asynchronous Processor with Multiple Threading
CN101763251B (zh) 含有译码缓冲装置的多线程的微处理器
JP2009543170A (ja) マルチスレッドプロセッサ上の実行スレッドの同期
US20150113252A1 (en) Thread control and calling method of multi-thread virtual pipeline (mvp) processor, and processor thereof
KR20120070303A (ko) 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
US10049043B2 (en) Flushing control within a multi-threaded processor
US10019283B2 (en) Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread
US20150339256A1 (en) Inter-processor synchronization system
CN109062604A (zh) 一种面向标量和向量指令混合执行的发射方法及装置
WO2013100998A1 (en) Processor with second jump execution unit for branch misprediction
TWI639951B (zh) 基於同時多執行緒(smt)的中央處理單元以及用於檢測指令的資料相關性的裝置
CN114168202B (zh) 指令调度方法、指令调度装置、处理器及存储介质
JP2008269114A (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
CN108255587A (zh) 一种同步多线程处理器
US20150293766A1 (en) Processor and method
US10133578B2 (en) System and method for an asynchronous processor with heterogeneous processors
CN102662629B (zh) 一种减少处理器寄存器文件的写端口数目的方法
CN102053821B (zh) 一种多线程流分支控制方法及其控制装置
US20120272045A1 (en) Control method and system of multiprocessor
KR20140122111A (ko) 명시적인 쓰레드 스위칭을 이용한 다중 쓰레드 실행 장치 및 방법
CN108255516A (zh) 顺序同步多线程处理器及其指令执行控制方法、装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant