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

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

【技术实现步骤摘要】

本专利技术通常涉及具有同时多线程(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流水线的长度增加两个级段(一个用于选择寄存器组,一个用于执行读取或本文档来自技高网...

【技术保护点】
一种同时多线程(SMT)处理器,包括:具有第一线程的第一读端口以及第二线程的第二读端口的动态共享组完成表(GCT);以及具有连接到所述第一和第二读端口、用于在指令组完成时同时更新所述GCT的完成单元逻辑的完成单元。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:威廉E博克彼得J克里姆亨格Q勒
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1