CN1542607A - 同时多线程处理器及提高其性能的方法 - Google Patents

同时多线程处理器及提高其性能的方法 Download PDF

Info

Publication number
CN1542607A
CN1542607A CNA2004100348872A CN200410034887A CN1542607A CN 1542607 A CN1542607 A CN 1542607A CN A2004100348872 A CNA2004100348872 A CN A2004100348872A CN 200410034887 A CN200410034887 A CN 200410034887A CN 1542607 A CN1542607 A CN 1542607A
Authority
CN
China
Prior art keywords
thread
finishing
logic
instruction
gct
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
CNA2004100348872A
Other languages
English (en)
Other versions
CN1304943C (zh
Inventor
E
威廉·E·博克
J����ķ����
彼得·J·克里姆
Q
亨格·Q·勒
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1542607A publication Critical patent/CN1542607A/zh
Application granted granted Critical
Publication of CN1304943C publication Critical patent/CN1304943C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

SMT系统具有动态共享GCT。通过配置GCT以容许来自每个线程的指令组同时完成,提高了SMT的性能。GCT具有每个线程的读端口,其对应于完成表指令/地址阵列,用于在完成时同时更新。正向链接阵列也具有每个线程的读端口,以便在完成后,找出每个线程的下一个指令组。为了同时更新每个线程的反向链接,反向链接阵列具有每个线程的反向链接写端口。GCT有每个线程的独立的指针管理。每一个线程同时提交其重命名结果寄存器并同时更新未完成装载和存储标签使用。

Description

同时多线程处理器及提高其性能的方法
技术领域
本发明通常涉及具有同时多线程(SMT)以及单线程操作模式的处理器的方法和电路。
背景技术
长期以来,更强性能的秘密在于每周期执行更多的指令,也称为指令级并发(ILP),或者减少指令的等待时间。为了每周期执行更多的指令,必须增加更多的功能单元(例如,整数,浮点,装载/存储单元,等等)。为了更加一贯地执行多个指令,可以使用被称为乱序执行处理(OOP)的处理范例,并实际上,这种类型的处理已经成为主流。
OOP的兴起源于许多指令依赖于其它已被送入处理流水线的指令的结果。为帮助减轻此问题,存储了大量的指令以便容许立即执行。这样做的原因是要找出更多彼此间互不依赖的指令。用于存储准备要立即执行的指令的存储区域被称为再定序缓冲区。在最现代的商业计算机架构中,再定序缓冲区的大小不断增长,某些系统能存储多达126条指令。增加再定序缓冲区大小的原因是简单的:空间相关的代码往往在执行时时间相关(可能的例外是复杂结构阵列和链表)。唯一的问题是,这些指令往往依赖先前指令的结果。随着CPU所需代码数量的日益增长,当前寻找更独立指令的唯一方法是增加再定序缓冲区的大小。
然而,使用此技术在性能提高的势头方面已经出现相当明显的减缓,并实际上显示了日渐减少的回报。现在采用越来越多的晶体管以获得同样程度的性能增长。代替专注于单处理器ILP提取,人们聚焦于经由多线程(多处理)在指令级或线程级发掘性能的粗略形式,,但系统总线不是主要约束。
在单芯片上放置更多晶体管的能力已经容许片上(on-chip)多处理(CMP)。为利用潜在的性能增长,架构不能使用这些多处理器作为单处理器,而是必须使用基于并发方式执行指令的多处理。这要求在CMP上执行的程序也能编写成以并发方式执行,而不是以完全串行或顺序方式执行。假定应用程序被编写成以并发方式(多线程)执行,在使得以这种方式编写的程序的执行速度的提高与所增加处理器的数量成比例方面,存在固有的困难。
在一个小片(die)上使用多个核心的总体构思是要通过一次执行两个线程来发掘更多的性能。通过这样做,两个CPU一起能在全部时间保持所有功能单元中有较高比率的功能单元在做有用的工作。如果处理器有更多的功能单元,那么在任何一个时间那些单元中较低比率的功能单元在做有用的工作。片上处理器降低了每个处理器的功能单元数量,并分配独立的任务(线程)给每个处理器。通过此方式,对于两个任务的整体而言,能够获得较高的吞吐率。相比较的单处理器会比CMP芯片更快地执行完一个线程或任务,因为尽管有浪费的功能单元,然而当处理器同时计算多段数据并使用全部可用功能单元时,会存在所产生的“突发”活动。多处理器的一个构思是防止单独的处理器经历这种突发活动时期,并改为让每个处理器更频繁,因而更加有效地使用其可利用的资源。在时钟周期期间某些功能单元不被使用的现象被称为“水平浪费”,这是CMP要尽力避免的。
然而,CMP存在若干问题。为了加速两个或更多线程的完成,传统的CMP芯片牺牲了单线程的性能。在此方式中,对于通常用途而言,CMP芯片比较缺乏灵活性,因为如果只存在一个线程,所分配资源的整个一半是空闲并且完全无用的(比如,在传统多处理器(MP)系统中,在使用单线程程序的系统中增加另一个处理器是无用的)。一种使CMP中的功能单元更有效的方案是使用粗粒度多线程(CMT)。CMT通过在某数量的时钟周期内执行一个线程,在功能单元的使用方面提高了效率。因为减少了“垂直浪费”而提高了效率。垂直浪费表示由于一个线程的阻塞而引起所有功能单元都不工作的状况。
当切换到另一个线程时,处理器保存那个线程的状态(即,其保存指令在流水线中的位置,正在使用的单元)并切换到另一个线程。这是通过使用多个寄存器组来实现的。其优点起因在这样的事实,即,线程经常只能在其遇到高速缓存命中失误,或者用完要执行的独立指令之前的时间内保持执行。CMT处理器只能以此方式执行与其支持的线程一样多的不同线程。因此,CMT处理器只能存储所存在的、针对这些线程的每个与的物理位置一样多的线程,以便存储其执行状态。N路CMP处理器会因此需要具有存储N个线程的状态的能力。
此构思的一个变型是执行一个线程,直到其经历了高速缓存命中失误(通常是L2(次级)高速缓存命中失误),此时系统会切换到另一个线程。这具有简化轮转线程通过处理器所需的逻辑的优势,因为一旦当前线程被阻塞,则会立即简单地切换到另一个线程。因等待所请求块被回传进高速缓存而导致的惩罚就减轻了。这类似于一些处理器使用的失误而命中(hit under miss)(或多失误而命中)高速缓存方案,但有所区别,因为其对线程操作,而不是对指令操作。CMT超过CMP的优势在于,CMT没有牺牲单线程的性能,并且硬件冗余较少(较少的硬件被二等分,使得两个处理器“等同”于相比较的CMT)。
针对多线程的更积极的实现方案被称为精细粒度多线程(FMT)。类似CMT,FMT的基本原理是线程间的快速切换。然而,与CMT不同,其构思是在每个周期进行切换。虽然CMT和FMT实际上确实减缓了一个线程的完成,然而FMT加速了所有正工作的线程的完成,并且总体吞吐率通常是至关重要的。
CMP可以消除在其自身中和延及其自身的一些水平浪费。CMT和FMT可以消除一些(或者全部)垂直浪费。然而可以使用包含多线程的高级形式的架构,其被称为同时多线程(SMT)的架构,以减少水平和垂直浪费。SMT的主要目标是具有在任何给定时间和任何给定功能单元运行来自不同线程的指令的能力。通过轮转各线程,SMT架构的作用就象FMT处理器,并通过同时执行来自不同线程的指令,SMT架构的作用就象CMP。因此,其容许架构师设计更宽的核心,而不用担心只能得到微不足道的回报。对于SMT,因为其具有在不同线程间分享“未用”功能单元的能力,SMT获得比FMT更高的效率是合理的;在此方式中,SMT获得CMP机器的效率。然而,与CMP系统不同,SMT系统很少,甚至没有牺牲(之后讨论少量牺牲)单线程性能。如此的原因是简单的。鉴于当运行单线程时,大多数CMP处理器保持空闲,并且CMP芯片上的处理器上越多,此问题便越突出,SMT处理器可以全部功能单元专用于单线程。虽然这显然不象能运行多个线程那样有价值,然而在单线程和多线程环境之间进行平衡的能力是很有用的特性。这意味着,SMT处理器可以发掘线程级并发(TLP)(如果存在),并且如果不存线程级并发,将全面关注于指令级并发(ILP)。
为了支持多个线程,SMT处理器比传统超标量处理器需要更多的寄存器。总的目的是为每个所支持的线程提供与单处理器环境一样多的寄存器。对于传统精简指令集计算机(RISC)芯片,这意味着需要32乘N个寄存器(这里N是SMT处理器在一周期内能处理的线程的数量),再加上任何重命名寄存器。对于4路SMT处理器的RISC处理器,这意味着需要128个寄存器,再加上许多重命名寄存器。
大多数SMT模型是常规乱序执行处理器的直接扩展。随着实际吞吐率的增长,带来了更多对指令提交宽度(instruction issue width)的需求,指令提交宽度应当相应地增加。因为上述寄存器堆(register file)规模的增加,可以将SMT流水线的长度增加两个级段(一个用于选择寄存器组,一个用于执行读取或写入),以便不降低时钟周期的长度。因此寄存器读取和寄存器写入级段都被分解成两个流水线级段。
为了禁止任何一个线程独占流水线,应采取措施以保证其它线程得到切实的执行时间片和资源。当功能单元正请求要执行的任务时,取指机构(fetch mechanism)将为那些已进入流水线的指令最少的线程提供较高的优先级。当然,如果其它线程没有什么可做,来自该线程的更多指令已正在占用流水线。
只要可能,SMT便进行共享。然而,在一些实例中,这破坏了传统的数据和指令流的组织。当被共享时,分支预测单元变得效率下降,因为其必须以更多指令跟踪更多的线程,并因此在作出准确的预测方面效率下降。这意味着,由于预测失误,流水线需要更经常地被刷新,但是对运行多个线程的能力的需要超过了对此不足的弥补。
由于SMT架构使用较长的流水线(多出两个级段),预测失误的惩罚更大,这是因为需要相当大的寄存器堆。然而,已经开发出使得SMT架构中每个线程所需的寄存器的数量最小的技术。这通过更有效的操作系统(OS)和用于更好地释放寄存器的硬件支持,以及如果另一个线程当前没有使用其上下文的全部寄存器,允许共享该线程上下文中的寄存器的能力来实现。
另一个问题是线程的数量,其涉及高速缓存大小,高速缓存的行长度,及其提供的带宽。对于单线程程序的情况,增加高速缓存行长度降低了命中失误率,但也增加了命中失误惩罚。对使用更多不同数据的更多线程的支持加剧了此问题,因此,对于每个线程,减少高速缓存有实际的用处。当处理多程序工作负载时,这种对高速缓存的竞争比处理多线程工作负载时更加突出。因此,如果使用了更多线程,则高速缓存应该较大。这也适用于具有共享L2高速缓存的CMP处理器。
使用更多的线程导致较高的总体性能,并且存储器数据的关联的差异变得明显。事实表明,当L1(主)高速缓存大小保持不变时,尽管存取时间较长,然而使用更多关联高速缓存获得了最高级性能。通过改变存在关联差异的块尺寸并且改变线程数量,已进行各种测试以确定性能。如前所述,增加块的关联级总是能够提高性能;然而,如果使用的线程超过两个,增加块尺寸会降低性能。性能的降低如此之大,以至于增加块的关联度也不能弥补由较大块尺寸的较大命中失误惩罚而引起的不足。
在支持每个并发执行的线程的指令的SMT处理器中,希望优化性能以得到使每个线程在同一周期内完成指令的装置。现有技术的动态共享完成表(CT)详示了完成表结构,其支持使得来自每个线程的指令在给定的时间点处于“运行中(in flight)”的功能,但没有描述在单处理器周期内完成每个线程的指令组的能力或装置。
因此需要一种在SMT处理器中在两个线程之间动态共享单个组完成表(GCT)的方法,以容许有效地耗用完成表,寄存器堆映射器,未完成装载/存储标记,使得可以容许尽可能快地分配并提交新指令组。
发明内容
动态共享组完成表(GCT)有针对每个线程、对应于用于在完成时进行同时更新的完成表指令/地址阵列的下一完成组(NTCG)读端口。正向链接阵列也有针对每个线程的NTCG读端口,用于在完成时找到每个线程的下一指令组。反向链接阵列具有针对每个线程的反向链接写端口,用于将每个线程的反向链接同时更新为NULL状态。GCT有独立的链表头和尾指针管理,容许每个线程在完成时刻同时遍历GCT。每个线程同时提交其重命名结果寄存器,并同时更新未完成装载/存储标记使用。这容许两个线程组在一个时钟周期内同时完成,并容许有效耗用共享GCT,寄存器堆映射器,和未完成装载/存储标记,使得可容许尽可能快地分配并提交新指令组,因此提高SMT处理器的性能。
为了可以更好地理解以下对本发明的具体描述,以上相当粗略地概述了本发明的特征和技术优势。在下文中将描述本发明另外的特征和优势,其构成了本发明的权利要求的主题。
附图说明
为了更完整地理解本发明及其优点,现在参考以下结合附图的详细说明,其中:
图1是根据本发明实施例的SMT处理器中的功能单元的模块图;
图2是在SMT处理器中每个时钟周期内完成单个指令组的电路的模块图;
图3是在SMT处理器中每个时钟周期完成两个指令组(每个线程一个指令组)的电路的模块图;
图4是实施本发明的典型硬件环境;而
图5是根据本发明实施例的方法步骤的流程图。
具体实施方式
在以下描述中,阐明了各种具体详细以供对本发明的全面理解。然而,本领域的技术人员会理解,可以在不具备这些具体细节的情况下实施本发明。在其它的实例中,以模块图的形式示出了熟知的电路,以避免不必要的细节掩盖本发明。另外,对于大部分而言,涉及定时,通信协议内的数据格式等等的细节已经被省略,因为这些细节不被认为是全面理解本发明所必需的,并被认为在相关领域普通技术人员的所知范围内。
现在参考附图,其中所描述的单元不必按比例示出,并且在若干视图中以相同的附图标记表示相同或相似的单元。
参考图1,其图解了CPU 410的细节。CPU 410被设计成每个时钟周期执行多个指令。因此,可能在任何一个时钟周期期间在任何执行单元,定点单元(FXU)114,浮点单元(FPU)118,以及装载/存储单元(LSU)116中正执行多个指令。相似地,CPU 410可以在SMT模式中同时执行来自多个线程的指令。
程序计数器(PC)134对应于具有要执行的指令的线程0(T0)和线程1(T1)。线程选择器133在T0和T1之间交替选择,以将指令地址连接到取指单元(IFU)108。指令地址被装载进取指地址寄存器(IFAR)103。IFAR 103从指令高速缓存(I-Cache)104中交替取出每个线程的指令。指令被缓冲进T0的指令队列(IQ)135和T1的IQ 136。IQ 135和IQ 136被连接到指令分配单元(IDU)132。在线程优先级选择器137的控制下,从IQ 135和IQ 136选择并读取指令。通常,线程优先级选择器137从IQ 135和IQ 136基本上与每个线程的程序所控制的优先级成比例地读取指令。
在IDU 132中的解码器(没有示出)内解码指令。然后指令定序器113会以由各种算法确定的顺序将指令放置在各个组中。指令组被传递到指令提交队列(IIQ)131指令定序器113以程序顺序接收两个线程的指令,但可以不按程序顺序地从IIQ 131,以及从任一线程提交指令。多个执行单元使用通用寄存器(GPR)堆115和浮点寄存器(FPR)堆117,其表示系统的程序状态。这些硬件寄存器可以被称为“构造(architected)”寄存器。当指令被放入提交队列时,重命名每个构造寄存器。每个正被修改的构造寄存器被分配物理寄存器,并且对应的查询表标识与构造寄存器相关的物理寄存器。因此在提交队列中,构造寄存器已被重新命名,使得会在同一时刻存在构造寄存器的多个复本。只要源操作数是可用的,这容许指令被乱序执行。寄存器重命名单元140重命名和映射寄存器,使得当引用特定物理寄存器的全部指令完成并且物理寄存器不包含最近的构造状态时,可以重新分配未用的物理寄存器。
指令在IIQ 131中排队以便在适当的执行单元中执行。如果指令包含定点运算,则可以使用多个定点单元(FXU)114中的任意单元。全部执行单元FXU 114,FPU 118和LSU 116被连接到完成单元119,其具有完成表(没有示出),该完成表指出哪些所提交的指令已经完成,以及其它的状态信息。来自完成单元119的信息被传递到IFU 108。IDU132也可以向完成单元119发送信息。来自LSU 116的存储操作的数据被连接到数据高速缓存(D-Cache)102。此数据可以被存储在D-Cache102中,用于近期使用并且/或者被传递到总线接口单元(BIU)101,BIU 101通过总线412向存储器139发送数据。LSU 116可以从D-Cache102装载数据以便执行单元(例如,FXU 114)使用。
在2000年10月12日提交,标题为“用于在处理系统中支持多线程的动态共享完成表的方法和系统”的美国专利申请09/687,078中详细描述了SMT处理器中共享组完成表(GCT)的操作。本申请中参考引用了此专利申请。
图2是SMT处理器中完成单元200的模块图,SMT处理器具有连接到IDU 251的GCT 201,在IDU 251中每时钟周期只完成一个指令组。以各种表项示出GCT 201。通常以逐行的方式写入GCT中的表项。行地址206会对应于一个指令组,并包括微码207,分支指令标识(Btag)208,装载指令标识(Ltag)209,存储指令标识(Stag)210,结束位211,杂项位212,和异常状态213。当线程标识(TID)214和有效位215与行地址206相关时,其被映射到GCT 201外的寄存器,因为其有时被按列访问。GCT 201也有一个分配写端口202和一个或多个结束写端口203。读端口204被连接到完成单元259。一个或多个读端口205被连接到刷新阵列(没有示出),其产生指示哪些指令响应刷新请求而进行刷新的刷新屏蔽。
完成单元200具有用于头和尾指针管理的逻辑259,Ltag和Stag管理逻辑,异常处理逻辑,堆映射器资源管理逻辑,存储队列管理逻辑以及分支指令队列管理逻辑。资源计算逻辑模块238与IDU 251通信。完成单元逻辑259向寄存器堆映射器224发送完成有效221,完成线程222和完成Gtag223。堆映射器224通过信号250与IDU 251通信。因为完成单元259每周期完成一组,于是在给定的时钟周期,完成有效221,完成线程222和完成Gtag223会对应于一个线程。完成单元259还将Gtag223和完成线程222连接到GCT 201,并接收完成读数据218。
虽然不按程序顺序分配指令,然而其必须按照程序顺序完成。还没有完成的指令不会释放所共享的资源,并因此会减缓额外指令的分配,也就减缓了系统操作。如果每周期只能完成一个组,则在SMT操作模式中,各种操作是较慢的。例如,如果装载/存储单元(例如,116)具有指出哪些存储可以被发送到存储器的数据,其能够很快地释放存储重排序队列(SRQ)的表项,从而为存储指令提交做好准备。如果每时钟周期只能完成一组,其它释放表项,例如装载命中失误队列(LMQ)表项,分支指令队列(BIQ)表项的操作会同样限制系统的性能。当指令完成时,释放寄存器重命名。结合通用寄存器(GPR),浮点寄存器(FPR),装载寄存器(LR),控制寄存器(CTR),以及存储寄存器(SR)使用重命名寄存器。如果重命名寄存器正被保持以等待指令完成,则其它分配指令所需的资源不可用。指令执行期间会出现异常状态。异常单元向GCT发送指令的异常状态。异常状态知道得越早,异常处理逻辑就能越早地解决问题并改善指令流的执行。
图3是根据本发明实施例的SMT处理器410中的完成单元119的模块图,SMT处理器410具有连接到IDU 132的GCT 301,在IDU 132中每时钟周期完成两个指令组(每个线程一个指令组)。GCT 301具有与图2中的GCT 201相似的各种表项。通常以逐行方式写入GCT的表项。行地址306会对应于指令组,并包括微码307,分支指令标识(Btag)308,装载指令标识(Ltag)309,存储指令标识(Stag)310,结束位311,杂项位312,和异常状态313。当线程标识(TID)314和有效位315与行地址306相关时,其被映射到GCT 301外的寄存器,因为其有时被按列访问。GCT 301也有一个分配写端口302和一个或多个结束写端口303。根据本发明的实施例,GCT 301有专用于T0的读端口304,和专用于T1的读端口354。因为读端口304和354专用于每个线程,完成单元逻辑359可以同时将T0的信号323和T1的信号318连接到GCT 301。因此,(在323和318中)两个线程的完成线程和完成Gtag可以被连接到GCT 301,并且两个线程可以同时接收其完成读数据(信号318)。
完成单元逻辑359也同时将T0的信号321和T1的信号322连接到寄存器堆映射器324。堆映射器324也通过信号350连接到IDU 132。信号321包括:线程T0的Comp_Valid T0,Comp_Thread T0,以及Comp_Gtag T0,并且信号322包括:线程T1的Comp_Valid T1,Comp_Thread T1,以及Comp_Gtag T1。修改资源计算逻辑模块338以同时处理T0和T1的资源计算,使得可以用信号337通知IDU 132有关释放的资源的信息。
GCT链接阵列330有连接到完成单元逻辑359的双写端口,即T0的WP 327和T1的WP 331,以便容许完成单元119通过线程同时更新反向链接为空状态。完成单元逻辑359也分别具有用于T0和T1的头(H)和尾(T)指针管理逻辑336和334。这容许每个线程在完成时刻同时遍历GCT 301。为了支持双H/T指针管理逻辑336和334,GCT链接阵列330有双下一完成写端口,即T0的RP 332和T1的RP 333,用于连接数据335中每个线程的下一指令组。双H/T指针管理逻辑336和334以及RP 332和RP 333容许同时提交每个线程的重命名结果寄存器,并同时通过线程更新未完成装载和存储使用。
所描述的多个双端口容许连接到IDU 132的完成单元119每周期完成两个指令组。因为可以在一个周期完成两个指令组,越快通知LSU116有关数据存储可以被发送到存储器的情况,LSU 116中释放SRQ表项就越快。同样地,LSU 116中的LMQ表项,IDU 132中分支指令单元(没有示出)的BIQ表项,以及寄存器重命名140中寄存器重命名表项就释放得越快。指令完成得越快,则异常条件和状态就检测得越快。
图5是本发明的实施例中使用的方法步骤的流程图。在步骤501,SMT处理器410为完成单元119中的动态共享GCT 301引入第一线程的第一读端口和第二线程的第二读端口。在步骤502中,完成单元逻辑359通过第一读端口304和第二读端口354被连接到GCT 301。在步骤503中,GCT链接阵列330中的正向链接阵列通过第一线程的第三读端口332和第二线程的第四读端口333被连接到完成单元逻辑。在步骤504中,GCT链接阵列330中的反向链接阵列通过第一线程的第一写端口327和第二线程的第二写端口331被连接到完成单元逻辑359。在步骤505中,第一线程的第一头和尾指针管理逻辑336被连接到完成单元逻辑359和第三读端口332。同样地,第二线程的第二头和尾指针管理逻辑334被连接到完成单元逻辑359和第四读端口333。在步骤506中,在指令组完成时,线程同时遍历GCT 301。在步骤507中,资源计算逻辑338被连接到IDU 132以及堆寄存器映射电路324。在步骤508中,同时提交每个线程的重命名结果寄存器,并在步骤509中,同时更新每个线程的装载和存储指令使用标签。
在图4中描述了实施本发明的代表性硬件环境,其根据本发明图解了工作站的典型硬件配置,其中包括具有同时多线程(SMT)处理的中央处理单元(CPU)410,以及若干经由系统总线412彼此互连的其它单元。图4中所示的工作站包括随机存取存储器(RAM)414,只读存储器(ROM)416,以及输入/输出(I/O)适配器418(其用于将外围设备,例如磁盘单元420和磁带驱动器440连接到总线412),用户接口适配器422(其用于将键盘424,鼠标426,扬声器428,麦克风432,和/或其它用户接口设备,例如触摸屏设备(没有示出)连接到总线412),通信适配器434(其用于将工作站连接到数据处理网络),以及显示适配器436(其用于将总线412连接到显示设备438)。
虽然已具体描述了本发明及其优点,然而应当理解,在不违背附加权利要求所定义的本发明的精神和范围的情况下,在这里可以实施各种改变,替代和变更。

Claims (15)

1.一种同时多线程(SMT)处理器,包括:
具有第一线程的第一读端口以及第二线程的第二读端口的动态共享组完成表(GCT);以及
具有连接到所述第一和第二读端口、用于在指令组完成时同时更新所述GCT的完成单元逻辑的完成单元。
2.如权利要求1所述的处理器,还包括具有所述第一线程的连接到所述完成单元逻辑的第三读端口,以及所述第二线程的连接到所述完成单元逻辑的第四读端口的正向链接阵列。
3.如权利要求2所述的处理器,还包括具有所述第一线程的连接到所述完成单元逻辑的第一写端口,以及所述第二线程的连接到所述完成单元逻辑的第二写端口的反向链接阵列。
4.如权利要求2所述的处理器,还包括:
所述第一线程的连接到所述完成单元逻辑和所述第三读端口的第一头和尾指针管理逻辑;以及
所述第二线程的连接到所述完成单元逻辑和所述第四读端口,用于在指令组完成时由每个线程同时遍历所述GCT的第二头和尾指针管理逻辑。
5.如权利要求4所述的处理器,还包括:
连接到所述完成单元逻辑,指令提交单元,以及寄存器堆映射器电路的资源计算逻辑;
用于在所述SMT处理器中同时提交重命名结果寄存器的电路;以及
用于在所述SMT处理器中同时更新装载和存储指令标识(Ltag和Stag)使用的电路。
6.一种数据处理系统,包括:
中央处理单元(CPU);
随机存取存储器(RAM);
输入/输出(I/O)适配器;
通信适配器;
连接所述CPU,RAM,I/O适配器,以及所述通信适配器的总线;
所述CPU中的同时多线程(SMT)处理器;
在所述SMT处理器内、具有第一线程的第一读端口和第二线程的第二读端口的动态共享组完成表(GCT);以及
具有连接到所述第一和第二读端口、用于在指令组完成时同时更新所述GCT的完成单元逻辑的完成单元。
7.如权利要求6所述的数据处理系统,还包括正向链接阵列,其具有所述第一线程的连接到所述完成单元逻辑的第三读端口,以及所述第二线程的连接到所述完成单元逻辑的第四读端口。
8.如权利要求7所述的数据处理系统,还包括反向链接阵列,其具有所述第一线程的连接到所述完成单元逻辑的第一写端口,以及所述第二线程的连接到所述完成单元逻辑的第二写端口。
9.如权利要求8所述的数据处理系统,还包括:
所述第一线程的连接到所述完成单元逻辑和所述第三读端口的第一头和尾指针管理逻辑;以及
所述第二线程的连接到所述完成单元逻辑和所述第四读端口,用于在指令组完成时由每个线程同时遍历所述GCT的第二头和尾指针管理逻辑。
10.如权利要求9所述的数据处理系统,还包括:
连接到所述完成单元逻辑,指令提交单元,以及指令定序器单元的资源计算逻辑;
用于在所述SMT处理器中同时提交重命名结果寄存器的电路;以及
用于在所述SMT处理器中同时更新装载和存储指令标签使用的电路。
11.一种通过连接到完成单元的动态共享组完成表(GCT)提高同时多线程(SMT)处理器的性能的方法,包括步骤:
为所述动态共享GCT提供第一线程的第一读端口和第二线程的第二读端口;以及
将所述完成单元中的完成单元逻辑连接到所述第一和第二读端口,以便在指令组完成时同时更新所述GCT。
12.如权利要求11所述的方法,还包括步骤:
通过所述第一线程的第三读端口将正向链接阵列连接到所述完成单元逻辑;以及
通过所述第二线程的第四读端口将所述正向链接阵列连接到所述完成单元逻辑。
13.如权利要求12所述的的方法,还包括步骤:
通过所述第一线程的第一写端口将反向链接阵列连接到所述完成单元逻辑;以及
通过所述第二线程的第二写端口将所述反向链接阵列连接到所述完成单元逻辑。
14.如权利要求13所述的的方法,还包括步骤:
将所述第一线程的第一头和尾指针管理逻辑连接到所述完成单元逻辑和所述第三读端口;
将所述第二线程的第二头和尾指针管理逻辑连接到所述完成单元逻辑和所述第四读端口;以及
由线程在指令组完成时同时遍历所述GCT。
15.如权利要求14所述的的方法,还包括步骤:
将资源计算逻辑连接到所述完成单元逻辑,指令提交单元,以及指令定序器单元;
在所述SMT处理器中同时提交每个线程的重命名结果寄存器;以及
在所述SMT处理器中同时更新每个线程的装载和存储指令标签使用。
CNB2004100348872A 2003-04-21 2004-04-15 同时多线程处理器及提高其性能的方法 Expired - Fee Related CN1304943C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/422,654 US7472258B2 (en) 2003-04-21 2003-04-21 Dynamically shared group completion table between multiple threads
US10/422,654 2003-04-21

Publications (2)

Publication Number Publication Date
CN1542607A true CN1542607A (zh) 2004-11-03
CN1304943C CN1304943C (zh) 2007-03-14

Family

ID=33159423

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100348872A Expired - Fee Related CN1304943C (zh) 2003-04-21 2004-04-15 同时多线程处理器及提高其性能的方法

Country Status (4)

Country Link
US (1) US7472258B2 (zh)
JP (1) JP3927546B2 (zh)
CN (1) CN1304943C (zh)
TW (1) TWI299465B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8825915B2 (en) 2012-03-12 2014-09-02 International Business Machines Corporation Input/output port rotation in a storage area network device
CN106462390A (zh) * 2014-03-27 2017-02-22 国际商业机器公司 多线程能力信息取回
CN108470006A (zh) * 2017-02-23 2018-08-31 西部数据技术公司 用于进行非阻塞控制同步操作的技术
CN111201511A (zh) * 2017-11-30 2020-05-26 国际商业机器公司 在乱序处理器中合并全局完成表条目
CN111213124A (zh) * 2017-11-30 2020-05-29 国际商业机器公司 在乱序处理器中完成合并的全局完成表条目
CN111708622A (zh) * 2020-05-28 2020-09-25 山东云海国创云计算装备产业创新中心有限公司 一种指令组调度方法、架构、设备及存储介质
CN111919203A (zh) * 2018-03-31 2020-11-10 美光科技公司 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制
CN112230901A (zh) * 2020-10-29 2021-01-15 厦门市易联众易惠科技有限公司 一种基于异步io模型的网络编程框架系统及方法
CN109831434B (zh) * 2019-01-31 2021-03-02 西安微电子技术研究所 一种基于自定义交换策略的多协议通信交换控制器
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
WO2024066091A1 (zh) * 2022-09-29 2024-04-04 苏州元脑智能科技有限公司 一种数据处理方法、装置、非易失性可读存储介质及电子设备

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4276201B2 (ja) * 2005-03-31 2009-06-10 富士通株式会社 Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
WO2008077283A1 (en) * 2006-12-27 2008-07-03 Intel Corporation Pointer renaming in workqueuing execution model
JP2008191856A (ja) * 2007-02-02 2008-08-21 Nec Computertechno Ltd 情報処理システム
JP4706030B2 (ja) * 2007-06-19 2011-06-22 富士通株式会社 キャッシュ制御装置及び制御方法
EP2159685B1 (en) * 2007-06-20 2013-08-21 Fujitsu Limited Processor
JP5201140B2 (ja) * 2007-06-20 2013-06-05 富士通株式会社 同時マルチスレッドの命令完了制御装置
US8281110B2 (en) * 2009-07-15 2012-10-02 Via Technologies, Inc. Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer
GB201001621D0 (en) * 2010-02-01 2010-03-17 Univ Catholique Louvain A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms
TWI486966B (zh) * 2010-02-04 2015-06-01 Phison Electronics Corp 快閃記憶體儲存裝置、其控制器與寫入管理方法
US8521998B2 (en) * 2010-06-04 2013-08-27 International Business Machines Corporation Instruction tracking system for processors
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
US9921873B2 (en) 2012-01-31 2018-03-20 Nvidia Corporation Controlling work distribution for processing tasks
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
KR102177871B1 (ko) * 2013-12-20 2020-11-12 삼성전자주식회사 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
CN105224416B (zh) * 2014-05-28 2018-08-21 联发科技(新加坡)私人有限公司 修复方法及相关电子装置
US9672045B2 (en) * 2014-09-30 2017-06-06 International Business Machines Corporation Checkpoints for a simultaneous multithreading processor
US10599431B2 (en) 2017-07-17 2020-03-24 International Business Machines Corporation Managing backend resources via frontend steering or stalls
US10564976B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Scalable dependency matrix with multiple summary bits in an out-of-order processor
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
US10884753B2 (en) 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10929140B2 (en) 2017-11-30 2021-02-23 International Business Machines Corporation Scalable dependency matrix with a single summary bit in an out-of-order processor
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10942747B2 (en) 2017-11-30 2021-03-09 International Business Machines Corporation Head and tail pointer manipulation in a first-in-first-out issue queue
US10802829B2 (en) 2017-11-30 2020-10-13 International Business Machines Corporation Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor
US10725786B2 (en) 2018-08-23 2020-07-28 International Business Machines Corporation Completion mechanism for a microprocessor instruction completion table
US10977041B2 (en) 2019-02-27 2021-04-13 International Business Machines Corporation Offset-based mechanism for storage in global completion tables
US11163581B2 (en) * 2019-10-21 2021-11-02 Arm Limited Online instruction tagging
CN114968358A (zh) * 2020-10-21 2022-08-30 上海壁仞智能科技有限公司 配置向量运算系统中的协作线程束的装置和方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644089A (ja) 1992-05-18 1994-02-18 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06332700A (ja) 1993-05-25 1994-12-02 Matsushita Electric Ind Co Ltd 情報処理装置
US5574935A (en) * 1993-12-29 1996-11-12 Intel Corporation Superscalar processor with a multi-port reorder buffer
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5841999A (en) * 1996-04-17 1998-11-24 International Business Machines Corporation Information handling system having a register remap structure using a content addressable table
US6219728B1 (en) * 1996-04-22 2001-04-17 Nortel Networks Limited Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US5922057A (en) * 1997-01-10 1999-07-13 Lsi Logic Corporation Method for multiprocessor system of controlling a dynamically expandable shared queue in which ownership of a queue entry by a processor is indicated by a semaphore
US6772324B2 (en) * 1997-12-17 2004-08-03 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6134645A (en) * 1998-06-01 2000-10-17 International Business Machines Corporation Instruction completion logic distributed among execution units for improving completion efficiency
JP2000047887A (ja) 1998-07-30 2000-02-18 Toshiba Corp 投機的マルチスレッド処理方法および投機的マルチスレッド処理装置
JP3604029B2 (ja) 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
US6594755B1 (en) * 2000-01-04 2003-07-15 National Semiconductor Corporation System and method for interleaved execution of multiple independent threads
US6854075B2 (en) * 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor store instruction comparator
US6681345B1 (en) 2000-08-15 2004-01-20 International Business Machines Corporation Field protection against thread loss in a multithreaded computer processor
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467164B2 (en) 2012-03-12 2019-11-05 International Business Machines Corporation Input/output port rotation in a storage area network device
US9858223B2 (en) 2012-03-12 2018-01-02 International Business Machines Corporation Input/output port rotation in a storage area network device
US8825915B2 (en) 2012-03-12 2014-09-02 International Business Machines Corporation Input/output port rotation in a storage area network device
GB2514287B (en) * 2012-03-12 2015-02-25 Ibm Input/output port rotation in a storage area network device
CN104603738A (zh) * 2012-03-12 2015-05-06 国际商业机器公司 存储区域网络设备中的输入/输出端口轮换
US9377952B2 (en) 2012-03-12 2016-06-28 International Business Machines Corporation Input/output port rotation in a storage area network device
WO2013136202A3 (en) * 2012-03-12 2016-09-01 International Business Machines Corporation Input/output port rotation in a storage area network device
GB2514287A (en) * 2012-03-12 2014-11-19 Ibm Input/output port rotation in a storage area network device
CN104603738B (zh) * 2012-03-12 2017-09-08 国际商业机器公司 用于指派输入/输出端口的方法、存储介质和系统
US10901929B2 (en) 2012-03-12 2021-01-26 International Business Machines Corporation Input/output port rotation in a storage area network device
US8904053B2 (en) 2012-03-12 2014-12-02 International Business Machines Corporation Input/output port rotation in a storage area network device
CN106462390B (zh) * 2014-03-27 2019-05-03 国际商业机器公司 用于多线程能力信息取回的方法和系统
CN106462390A (zh) * 2014-03-27 2017-02-22 国际商业机器公司 多线程能力信息取回
CN108470006A (zh) * 2017-02-23 2018-08-31 西部数据技术公司 用于进行非阻塞控制同步操作的技术
US11288201B2 (en) 2017-02-23 2022-03-29 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
CN111201511A (zh) * 2017-11-30 2020-05-26 国际商业机器公司 在乱序处理器中合并全局完成表条目
CN111213124B (zh) * 2017-11-30 2023-09-29 国际商业机器公司 在乱序处理器中完成合并的全局完成表条目
CN111201511B (zh) * 2017-11-30 2023-04-18 国际商业机器公司 在乱序处理器中合并全局完成表条目
CN111213124A (zh) * 2017-11-30 2020-05-29 国际商业机器公司 在乱序处理器中完成合并的全局完成表条目
CN111919203A (zh) * 2018-03-31 2020-11-10 美光科技公司 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制
CN109831434B (zh) * 2019-01-31 2021-03-02 西安微电子技术研究所 一种基于自定义交换策略的多协议通信交换控制器
CN111708622A (zh) * 2020-05-28 2020-09-25 山东云海国创云计算装备产业创新中心有限公司 一种指令组调度方法、架构、设备及存储介质
CN111708622B (zh) * 2020-05-28 2022-06-10 山东云海国创云计算装备产业创新中心有限公司 一种指令组调度方法、架构、设备及存储介质
CN112230901A (zh) * 2020-10-29 2021-01-15 厦门市易联众易惠科技有限公司 一种基于异步io模型的网络编程框架系统及方法
CN112230901B (zh) * 2020-10-29 2023-06-20 厦门市易联众易惠科技有限公司 一种基于异步io模型的网络编程框架系统及方法
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
WO2024066091A1 (zh) * 2022-09-29 2024-04-04 苏州元脑智能科技有限公司 一种数据处理方法、装置、非易失性可读存储介质及电子设备

Also Published As

Publication number Publication date
US20040210743A1 (en) 2004-10-21
TWI299465B (en) 2008-08-01
JP2004326738A (ja) 2004-11-18
US7472258B2 (en) 2008-12-30
TW200516492A (en) 2005-05-16
CN1304943C (zh) 2007-03-14
JP3927546B2 (ja) 2007-06-13

Similar Documents

Publication Publication Date Title
CN1304943C (zh) 同时多线程处理器及提高其性能的方法
CN113703834B (zh) 基于块的处理器核复合寄存器
RU2427895C2 (ru) Оптимизированная для потоков многопроцессорная архитектура
CN100357884C (zh) 用于处理指令的方法、处理器以及系统
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
EP1390835B1 (en) Microprocessor employing a performance throttling mechanism for power management
US9037837B2 (en) Hardware assist thread for increasing code parallelism
US7093106B2 (en) Register rename array with individual thread bits set upon allocation and cleared upon instruction completion
US20080109640A1 (en) Method For Changing A Thread Priority In A Simultaneous Multithread Processor
US20140047219A1 (en) Managing A Register Cache Based on an Architected Computer Instruction Set having Operand Last-User Information
US20090055633A1 (en) Computer processing system employing an instruction reorder buffer
US6725354B1 (en) Shared execution unit in a dual core processor
WO2017223006A1 (en) Load-store queue for multiple processor cores
US7194603B2 (en) SMT flush arbitration
US20170371659A1 (en) Load-store queue for block-based processor
US11726912B2 (en) Coupling wide memory interface to wide write back paths
US20240020127A1 (en) Out-of-order execution of loop instructions in a microprocessor
US7475224B2 (en) Register map unit supporting mapping of multiple register specifier classes
US11829762B2 (en) Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
Chiu et al. Hyperscalar: A novel dynamically reconfigurable multi-core architecture
US20230315474A1 (en) Microprocessor with apparatus and method for replaying instructions
US20240311156A1 (en) Microprocessor with apparatus and method for replaying load instructions
Kogge et al. Instruction Control Mechanisms for Simplified Low Power-Multi-Cluster Microarchitectures

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070314

Termination date: 20210415