首页> 中国专利> 基于SMT的中央处理单元以及用于检测指令的数据相关性的装置

基于SMT的中央处理单元以及用于检测指令的数据相关性的装置

摘要

本申请公开了一种基于SMT的中央处理单元,包括:指令读取单元、指令解码单元、指令分发单元和指令比较单元;所述指令比较单元包括用于检测指令之间的数据相关性的复数个比较器,所述复数个比较器,被划分成彼此相互独立的至少两个分组,所述比较器的分组个数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检测在SMT功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较器用于检测在SMT功能启用后的属于不同线程的指令之间的数据相关性。本申请同时提供一种基于SMT的用于检测指令的数据相关性的装置。采用本申请提供的基于SMT的中央处理单元,能够在不增加硬件比较器的基础上拓宽重命名指令宽度,有效提升中央处理器的运行效率。

著录项

  • 公开/公告号CN105094747A

    专利类型发明专利

  • 公开/公告日2015-11-25

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201410190737.4

  • 发明设计人 马凌;姚四海;张磊;

    申请日2014-05-07

  • 分类号G06F9/30;

  • 代理机构北京市清华源律师事务所;

  • 代理人沈泳

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-12-18 12:21:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-04

    授权

    授权

  • 2015-12-23

    实质审查的生效 IPC(主分类):G06F9/30 申请日:20140507

    实质审查的生效

  • 2015-11-25

    公开

    公开

说明书

技术领域

本申请涉及中央处理器技术,具体涉及一种基于SMT的中央处理单元。本 申请同时提供一种用于检测指令的数据相关性的装置。

背景技术

CPU是中央处理单元(CentralPreocessingUnit)的英文缩写,是计算机的 运算核心和控制核心。其基本的工作过程包括:取指、解码、执行和写回这样 几个阶段:取指阶段从存储器或者高速缓存中提取指令,解码阶段负责根据指 令类型产生不同的控制信号,执行阶段则使用操作数、按照解码产生的控制信 号在功能部件(执行单元)中执行指令,最后由写回阶段将执行结果写回存储 器或寄存器中。

为了充分挖掘CPU的吞吐率,出现了多种提高CPU性能的技术,例如:流 水线技术、超标量技术、超标量超流水线技术等,这些技术的共同点在于,通 过增加单个时钟周期内执行的指令数来提高指令执行的并发度,从而提高CPU 的执行效率。然而,在实际中,由于CPU通常使用有限的系统结构寄存器(也 称ISA寄存器或通用寄存器)来保存指令的操作数与结果,因此导致了指令和 指令之间可能存在某种依赖关系(也称相关性),例如:两条指令使用同一个寄 存器,指令间的这种相关性会限制指令的并发执行。为了改善这一问题,在CPU 工作过程的解码和执行阶段之间引入了寄存器重命名阶段。该阶段的主要任务 是去除指令之间在寄存器使用上的伪依赖性(也称错误依赖),同时还要甄别指 令之间的真实依赖性(也称数据相关性,即:在后执行指令的源操作数的取值 是否来源于在先执行指令的目的操作数),前者通过重命名表影射来解决,后者 则需要使用重命名比较器进行比较判断。

此外,为了提高CPU执行单元的利用率,现代CPU还引入了将指令级并行 和线程级并行相结合的同时多线程技术(Simultaneousmultithreading-SMT), 通过复制处理器上的结构状态,同一个物理CPU可以同时执行两个以上的独立 线程,并共享处理器的执行单元,由于来自两个以上线程的指令流包含更多不 相关的、可以并行的指令,因此能够更有效的利用共享执行单元,从而提高CPU 的吞吐率。

鉴于引入SMT机制的CPU有着更多不相关指令流,若是可以加大前端指 令宽度(包括取指、解码和重命名阶段),就可以获得更多并行处理指令,从而 更为充分地利用多个执行单元。为了提高取指和解码阶段的吞吐量,目前已经 有了相应的解决方案,例如:IntelCPU引入了0级缓存,将已经解码后的指令 放置其中,这样当CPU再次需要指令的时候可以直接从0级缓存获取,同时可 以获取指令的宽度也从16字节变为32字节;但是关于如何拓宽重命名阶段的 指令宽度,一直没有令人满意的方法,具体说明如下。

由于执行指令的相关性检测所需的硬件比较单元与每个周期重命名指令条 数的平方相同(即:硬件比较器个数=n×n–n,n为每个周期需要重命名指 令条数),也就是说为了拓宽重命名阶段的指令宽度,需要大量地增加硬件比较 器的个数。因此Intel带有SMT的CPU由于没有增加任何硬件,导致每个周期 仍然只能对4条指令进行重命名,减弱了在引入SMT的情况下并行指令执行的 吞吐量;而IBM的带有SMT的CPU,为了使CPU在每个周期的重命名宽度由 4条指令拓宽为6条指令,而将硬件比较器个数从12个增加到30个(6×6–6 =30),不仅增加了CPU硬件成本,同时增加了硬件的复杂性。

发明内容

本申请提供一种基于SMT的中央处理单元,以解决现有技术为了拓宽重命 名指令宽度需要大量增加硬件比较器的问题。本申请另外提供一种基于SMT的 用于检测指令的数据相关性的装置。

本申请提供一种基于SMT的中央处理单元,包括:

指令读取单元,用于从指令缓存中读取指令;

指令解码单元,用于对所述指令读取单元输出的指令进行解码;

指令比较单元,用于检测解码后指令的数据相关性,并输出检测结果;

所述指令比较单元包括用于检测指令之间的数据相关性的复数个比较器, 所述复数个比较器,被划分成彼此相互独立的至少两个分组,所述比较器的分 组个数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检测在 SMT功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较器用 于检测在SMT功能启用后的属于不同线程的指令之间的数据相关性;

指令分发单元,用于将所述指令解码单元输出的、在SMT功能启用后的多 个线程的解码后指令分发给所述指令比较单元中对应的比较器分组。

可选的,所述任一比较器均包括第一输入端和第二输入端、以及输出端; 其中,

所述第一输入端和第二输入端,分别用于输入待检测数据相关性的两条指 令中的在先指令的目的操作数地址、和在后指令的源操作数地址;

所述输出端,用于输出上述目的操作数地址和源操作数地址是否相同的比 较结果。

可选的,所述指令读取单元具体用于,采用轮询的方式从指令缓存中读取 SMT功能启用后的多个线程的指令;

相应的,所述指令解码单元具体用于,采用轮询的方式对所述指令读取单 元输出的多个线程的指令进行解码。

可选的,所述指令读取单元具体用于,采用轮询的方式从指令缓存中读取 SMT功能启用后的线程1和线程2的指令;

相应的,所述指令比较单元中的复数个比较器被划分为两个比较器分组, 其中,第一比较器分组检测属于线程1的指令之间的数据相关性,第二比较器 分组检测属于线程2的指令之间的数据相关性。

可选的,所述指令比较单元包含12个比较器,所述第一比较器分组和所述 第二比较器分组各包含6个比较器。

可选的,所述指令比较单元中的所述复数个比较器被合并为一组,用于检 测在SMT功能禁用后的属于同一个线程的指令之间的数据相关性。

可选的,所述指令分发单元用于将所述指令解码单元输出的、在SMT功能 禁用后的属于同一线程的指令发送给所述指令比较单元中的被合并后的比较器 分组。

可选的,所述指令比较单元包括所述指令分发单元。

本申请还提供一种基于SMT的用于检测指令的数据相关性的装置,包括: 指令输入接口、结果输出接口、以及用于检测指令之间的数据相关性的复数个 比较器;

所述复数个比较器,被划分成彼此相互独立的至少两个分组,所述比较器 的分组个数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检 测在SMT功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较 器用于检测在SMT功能启用后的属于不同线程的指令之间的数据相关性;

所述指令输入接口的个数与比较器的分组个数相同,并且每一个指令输入 接口与一个比较器分组相连接,用于向所述比较器分组输入在SMT功能启用后 的属于同一个线程的指令;不同的指令输入接口与不同的比较器分组相连接;

所述结果输出接口与所述复数个比较器相连接,用于输出所述复数个比较 器的比较结果。

可选的,所述任一比较器均包括第一输入端和第二输入端、以及输出端; 其中,

所述第一输入端和第二输入端,分别用于输入待检测数据相关性的两条指 令中的在先指令的目的操作数地址、和在后指令的源操作数地址;

所述输出端,输出上述目的操作数地址和源操作数地址是否相同的比较结 果。

可选的,所述指令输入接口的个数为两个,所述复数个比较器被划分为彼 此独立的两个比较器分组;

其中,第一指令输入接口与第一比较器分组相连接,用于向第一比较器分 组输入在SMT功能启用后的属于线程1的指令;第二指令输入接口与第二比较 器分组相连接,用于向第二比较器分组输入在SMT功能启用后的属于线程2的 指令。

可选的,所述比较器的个数具体为12个,所述第一比较器分组和所述第二 比较器分组各包含6个比较器。

可选的,所述复数个比较器被合并为一组,用于检测从一个指令输入接口 输入的、在SMT功能禁用后的属于同一个线程的指令之间的数据相关性。

本申请还提供一种基于SMT的用于检测指令的数据相关性的装置,包括: 指令输入接口、结果输出接口、指令分发单元和指令比较单元,所述指令分发 单元与所述指令输入接口和指令比较单元相连接,所述指令比较单元与所述指 令分发单元和结果输出接口相连接;

所述指令比较单元包括用于检测指令之间数据相关性的复数个比较器,所 述复数个比较器被划分成彼此相互独立的至少两个分组,所述比较器的分组个 数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检测在SMT 功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较器用于检 测在SMT功能启用后的属于不同线程的指令之间的数据相关性;

所述指令分发单元包括至少两个指令分发端,每个指令分发端与所述指令 比较单元中的一个比较器分组相连接,不同的指令分发端与不同的比较器分组 相连接,所述指令分发端的个数与所述指令比较单元中的分组个数相同;

所述指令分发单元用于从所述指令输入接口读取待检测数据相关性的指 令,将SMT功能启用后的属于同一个线程的指令、通过一个指令分发端发送给 一个比较器分组,将SMT功能启用后的属于不同线程的指令通过不同的指令分 发端发送给不同的比较器分组。

可选的,所述指令比较单元中的任一比较器均包括第一输入端和第二输入 端、以及输出端;其中,

所述第一输入端和第二输入端,分别用于输入待检测数据相关性的两条指 令中的在先指令的目的操作数地址、和在后指令的源操作数地址;

所述输出端,输出上述目的操作数地址和源操作数地址是否相同的比较结 果。

可选的,所述指令分发单元包括两个指令分发端,所述指令比较单元中的 复数个比较器被划分为彼此独立的两个比较器分组;

所述指令分发单元具体用于从所述指令输入接口读取待检测数据相关性的 指令,将SMT功能启用后的属于线程1的指令通过第一指令分发端发送给第一 比较器分组,将SMT功能启用后的属于线程2的指令通过第二指令分发端发送 给第二比较器分组。

可选的,所述指令比较单元中的比较器的个数具体为12个,所述第一比较 器分组和所述第二比较器分组各包含6个比较器。

可选的,所述指令比较单元中的复数个比较器被合并为一组,用于检测在 SMT功能禁用后的属于同一个线程的指令之间的数据相关性。

可选的,所述指令分发单元用于从所述指令输入接口读取在SMT功能禁用 后的、属于同一个线程的待检测数据相关性的指令,并通过一个指令分发端发 送给所述指令比较单元。

与现有技术相比,本申请具有以下优点:

本申请提供的基于SMT的中央处理单元,利用了在SMT功能启用后的不 同线程的指令之间不存在数据相关性这一特点,通过对比较器进行分组,每一 组比较器用于对应检测在SMT功能启用后的其中一线程的指令之间的数据相关 性,不同分组用于检测在SMT功能启用后的属于不同线程的指令之间的数据相 关性,从而可以在不增加硬件比较器的前提下,拓宽中央处理单元的重命名指 令宽度,有效提升中央处理单元的指令吞吐量。

本申请提供的基于SMT的用于检测指令的数据相关性的装置,利用了在 SMT功能启用后的不同线程的指令之间不存在数据相关性这一特点,通过对比 较器进行分组,每一组比较器用于对应检测在SMT功能启用后的其中一线程的 指令之间的数据相关性,不同分组用于检测在SMT功能启用后的属于不同线程 的指令之间的数据相关性,从而可以在不增加硬件比较器的前提下,拓宽了检 测数据相关性的指令宽度。

附图说明

图1是本申请的一种基于SMT的中央处理单元的实施例示意图;

图2是现有技术中CPU检测3条指令的数据相关性的比较器示意图;

图3是现有技术中CPU检测第4条指令与前3条指令的数据相关性的比较 器示意图;

图4是本申请的两个比较器分组分别用于检测线程1和线程2的指令之间 的数据相关性的比较器示意图;

图5是本申请的基于SMT的中央处理单元的另一种实施例示意图;

图6是本申请的基于SMT的用于检测指令的数据相关性的装置的实施例示 意图;

图7是本申请的另一种基于SMT的用于检测指令的数据相关性的装置的实 施例示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请 能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背 本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请中,分别提供了一种基于SMT的中央处理单元、一种基于SMT 的用于检测指令的数据相关性的装置、以及另一种基于SMT的用于检测指令的 数据相关性的装置。

为了便于理解,在对本申请的实施例进行描述之前,先对中央处理器(CPU) 的基本工作原理、指令之间的数据相关性和SMT技术作简要介绍。

目前的CPU都采用超标量流水线技术提高指令吞吐量,流水线技术的实质 在于指令重叠执行,减少了每一条指令的平均执行时间,而超标量技术则是在 同一个时钟周期内同时发射多条指令。每条流水线通常包括如下几个基本的流 水段:取指、解码、重命名、执行和写回,为了进一步提高并行性,上述流水 线中的功能段还可以进一步细化。

其中重命名阶段的主要任务是去除指令之间在寄存器使用上的伪依赖性 (也称错误依赖,包括写然后写WAW,读然后写WAR),同时还要甄别指令之 间的数据相关性,前者可以同过重命名表映射来解决,后者则需要使用比较器 进行检测。通常将一个时钟周期内完成重命名操作的指令数目,称作重命名指 令宽度(或:重命名的宽度)。

指令之间的数据相关性,会影响指令的乱序执行(即:不按顺序的并发执 行),进而影响CPU的执行效率。指令之间之所以存在数据相关性,是因为在 后指令的源操作数地址与在先指令的目的操作数地址相同,例如:在先指令向 某个寄存器中写入数据,在后指令从同一个寄存器中读取数据(这种情况也称 为写然后读RAW),即:在后指令的执行需要读取在先指令的执行结果,则认 为这两条指令在执行顺序上存在真实依赖关系,因此这两条指令之间存在数据 相关性。

存在数据相关性的指令不能并发执行,通常采用两种方法解决,一是顺序 执行,即:将在后指令的相关操作后推,等在先指令将执行结果写入相关的存 储位置后再开始处理在后指令;另一种是旁路技术,即不必等到在先指令将结 果数据写入到相关的存储位置中,而是经过专门设置的数据通路读取所需要的 数据,例如,直接将在先指令的结果推送到执行单元的操作数输入端口。

本申请提供的即为检测指令之间的数据相关性的技术方案,为实现本申请 的技术方案,利用了同步多线程(SMT)技术。SMT是一种在一个CPU的时 钟周期内能够执行来自多个线程的指令的硬件多线程技术,该技术结合了超标 量和多线程处理器的特点,充分挖掘了指令级和线程级的并行(ILP和TLP的 结合)。在启用SMT技术的CPU中,对于可能导致处理器利用率降低的长延迟 操作,只会影响相关指令所属的线程,而其他线程依然可以利用处理器资源, 例如,由于某个线程指令之间存在数据相关性限制了处理器每个时钟周期只能 发射一到两条指令,而另一个与之无关的线程指令则可以用于填充空闲的发射 槽,从而在一个时钟周期内执行更多的指令,提高处理器发射槽及功能部件的 利用率,提高中央处理器的指令吞吐率。实现SMT技术只需要增加较少的硬件 资源,为每个运行的线程设置一套单独的硬件用于保存其执行状态(即:线程 上下文),而CPU中的其他部件则可以被多个线程共享。

由此可见,SMT技术利用了不同线程彼此之间的独立性,从而在共享的基 础上实现对CPU功能部件的充分利用。而本申请的技术方案,之所以能够在不 增加硬件比较器的前提下,拓宽重命名的宽度,也是利用了不同线程的指令之 间不存在数据相关性这一特点。

下面对本申请的实施例逐一进行详细说明。

请参考图1,其为本申请的基于SMT的中央处理单元的实施例示意图,所 述基于SMT的中央处理单元包括如下单元:指令读取单元101,用于从指令缓 存中读取指令;指令解码单元102,用于对所述指令读取单元输出的指令进行解 码;指令分发单元103,用于将所述指令解码单元输出的、在SMT功能启用后 的多个线程的解码后指令分发给所述指令比较单元中对应的比较器分组;指令 比较单元104,包括复数个比较器,所述复数个比较器被划分为多个分组,分别 用于检测属于不同线程的解码后指令的数据相关性,并输出检测结果。

在具体的实施中,所述基于SMT的中央处理单元还包括:用于执行重命名 后指令的执行单元、用于将执行结果写回存储器或寄存器的写回单元、以及在 各个功能单元内部用于缓存指令的队列等,由于这些功能单元或队列,并不涉 及本申请技术方案的核心,因此没有在图1中示出。

本申请技术方案的核心在于,所述指令比较单元中的比较器在SMT功能启 用的情况下,被划分为不同的分组,不同的分组检测属于不同线程的指令之间 的相关性。为了实现这一核心,保证指令比较单元能够在同一时钟周期内对不 同线程的指令进行数据相关性检测,所述指令读取单元101和指令解码单元102 可以按照特定的策略进行取指和解码,下面作进一步说明。

在现有的基于SMT的中央处理器中,指令读取单元根据多个线程的PC计 数器的值,采用不同的取指策略从指令缓存中取指,例如:随机法取指、轮询 取指、以及采用Icount策略取值,即:优先选择在CPU中占据队列项数最少的 线程进行取值。上述取指策略各有各的特点,具体到本申请的技术方案中,由 于指令比较单元104要充分利用不同线程指令之间操作数的无关性,因此本申 请技术方案提供一种优选实施方式:指令读取单元101具体用于采用轮询的方 式读取多个线程的指令。例如:在一个时钟周期内采用轮询的方式分别从两个 线程读取指令,每个线程各取4条指令。

相应的,所述指令解码单元102具体用于采用轮询的方式对分属多个线程 的指令进行解码。在具体的实施中,所述指令解码单元102可以将解码后的指 令存放在解码队列(decodequeue)中,解码队列可以是一个统一的队列,也可 以是多个队列,每个队列存储属于同一个线程的解码后指令。

所述指令分发单元103从解码队列中读取解码后的指令,并根据解码后指 令所属的线程将所述指令分发给指令比较单元104中对应的比较器分组。例如, 在SMT支持两个线程的情况下,所述指令分发单元将属于线程1的指令分发给 第一比较器分组,将属于线程2的指令分发给第二比较器分组。

所述指令比较单元104包括用于检测指令之间的数据相关性的复数个比较 器,并且任一比较器均包括第一输入端和第二输入端、以及输出端;其中,所 述第一输入端和第二输入端,分别用于输入待检测数据相关性的两条指令中的 在先指令的目的操作数地址、和在后指令的源操作数地址;所述输出端,用于 输出上述目的操作数地址和源操作数地址是否相同的比较结果。

在具体的实施中,本申请所述的目的操作数地址和源操作数地址通常是指 用于写入或者从中读取操作数的寄存器地址,对于对寄存器进行编号管理的 CPU来说,本申请所述的目的操作数地址和源操作数地址是指用于写入或者从 中读取操作数的寄存器号。

下面举例说明如何通过比较器检测指令之间的数据相关性。例如,两条待 检测数据相关性的指令分别为:

指令1:a+b=c

指令2:d+e=f

其中指令1在先,那么所述指令比较单元104用于将指令2的源操作数d 和e的地址分别与指令1的目的操作数c的地址进行比较,判断指令2的两个源 操作数的取值是否来源于指令1的执行结果c,此时需要进行两次比较(d与c 进行比较、e与c进行比较)。为了能够在一个时钟周期内完成指令的数据相关 性检测,硬件比较器的数目与本周期内需要进行的比较次数一致,因此在同一 个时钟周期比较两条指令器的数据相关性,需要2个比较器。其中,任何一个 比较器输出的结果为相同,则说明这两条指令之间具有数据相关性。

在现有技术中,如果在同一个时钟周期检测三条指令的数据相关性,不仅 需要将第一条指令的目的操作数地址与第二条指令、第三条的源操作数地址作 比较(需要2×2=4个比较器),还需要将第二条指令的目的操作数地址与第三 条指令的源操作数地址作比较(需要2个比较器),总共需要的比较器数目为6 个。请参见图2,其为现有技术中CPU检测3条指令的数据相关性的比较器示 意图,其中,c0—c5为物理比较器,1d代表第一条指令的目标操作数的地址, 2s1和2s2分别代表第二条指令的第一源操作数地址和第二源操作数地址,以此 类推。

请参见图3,其为现有技术中CPU检测第4条指令与前3条指令的数据相 关性的比较器示意图。在现有技术中,如果将上述检测3条指令拓宽为4条指 令,即:在同一个时钟周期检测4条指令的数据相关性,那么除了上述比较之 外,还需要将第4条指令的两个源操作数地址与前三条指令的目的操作数地址 作比较,即:还需要增加6个比较器(c6—c11),因此总共需要6+6=12个比较 器。

同样的道理,如果需要比较n条指令之间的数据相关性,那么第一条指令 需要与后面n-1条指令比较,第二条指令需要与后面的n-2条指令比较,....第n-1 条指令则需要与最后一条指令比较,而且每比较两条指令的数据相关性都需要 两个硬件比较器,因此总共需要的比较器数目为:2×((n-1)+(n-2)+...+1) =n×(n-1)=n2-n。

由此可见,在现有技术下,进行指令的数据相关性检测所需使用的硬件比 较器的数量并不是与待检测指令的数目成简单的正比关系,而是与待检测指令 数目的平方成正比,也就是说,要拓宽进行数据相关性检测的指令宽度通常需 要大幅增加硬件比较器的数目,例如,将数据相关性检测的指令宽度拓宽为6 条时,需要6×6-6=30个硬件比较器。因此,在现有技术下,进行数据相关性 检测所需的比较器数目成为重命名阶段的主要瓶颈,限制了重命名阶段的指令 吞吐量。如果能够在不增加或者不大幅增加硬件比较器的前提下,拓宽数据相 关性检测的指令宽度,就能有效提升重命名阶段的指令宽度。而本申请则针对 上述问题提供了解决方案,下面进行详细说明。

本申请技术方案的核心在于,指令比较单元104中的复数个比较器,被划 分成彼此相互独立的至少两个分组,所述比较器的分组个数与SMT功能启用后 支持的线程个数相同;每一组比较器用于对应检测在SMT功能启用后的其中一 线程的指令之间的数据相关性,不同分组的比较器用于检测在SMT功能启用后 的属于不同线程的指令之间的数据相关性。

本申请技术方案之所以要对指令比较单元104中的比较器进行分组,并使 不同的分组检测SMT功能启用后的属于不同线程的指令之间的数据相关性,是 因为:在SMT功能启用后的同时执行的多个线程通常是彼此独立的,因此所述 分属多个线程的指令之间通常是不存在数据相关性的。基于上述考虑,在重命 名阶段,就没有必要检测属于不同线程的指令之间的数据相关性,从而节省了 物理比较器的开销,使得拓宽重命名指令宽度成为可能。

考虑到目前流行的CPU通常具有12个硬件比较器,而且SMT功能启用时 可以同时执行的线程数目通常为两个,因此下文以此作为一个例子,具体介绍 本申请技术方案如何实现上述检测过程。

在本申请技术方案中,所述比较器的分组个数与SMT功能启用后支持的线 程个数相同,因此本例中的指令比较单元104中的比较器被划分为两组:第一 比较器分组和第二比较器分组,每个分组各包含6个比较器。指令分发单元103 将指令解码单元102输出的解码后指令按照其所属线程进行分发,将属于线程1 的指令分发给第一比较器分组,将属于线程2的指令分发给第二比较器分组, 第一比较器分组用于检测线程1的指令之间的数据相关性,第二比较器分组用 于检测线程2的指令之间的数据相关性。

请参见图4,其为两个比较器分组分别用于检测线程1和线程2的指令之间 的数据相关性的比较器示意图。结合所述附图以及前面的介绍可知,6个比较器 可以同时检测3条指令的数据相关性,因此在本例子中,每一比较器分组可以 同时检测3条指令的数据相关性,两个比较器分组就可以同时检测6条指令的 数据相关性,也就是,在SMT功能启用的情况下,通过对比较器进行分组,仍 然采用12个比较器,实现了在同一个时钟周期检测6条指令的数据相关性,而 现有技术在同样的条件下只能检测4条指令的数据相关性,由此可见本例在不 增加硬件比较器的前提下拓宽了进行数据相关性检测的指令宽度,可以有效提 升CPU运行效率50%。

上述具体例子,仅仅是实施本申请技术方案的一种可能的实施方式,在其 他实施方式中,可以采用不同于上述例子的分组方式。例如,启用SMT功能后 支持4个线程,那么指令比较单元104中的比较器相应地被划分为4个分组; 同样指令比较单元104中的比较器个数也可以不同于本例子中的12个,相应的 每个比较器分组中的比较器数目也会不同,每一拍能够检测的指令数目自然也 不同。但是不管采用何种实施方式,只要指令比较单元104中的比较器被划分 为多个分组,并且指令分发单元103将不同线程的指令分发给对应的比较器分 组进行检测,就可以利用不同线程之间的指令无关性,实现本申请技术方案的 有益效果:在不增加比较器数目的前提下,拓宽重命名宽度,提升CPU的指令 吞吐率。

上面对本申请技术方案在SMT功能启用情况下如何拓宽重命名指令宽度进 行了说明。在具体实施过程中,有时需要禁用SMT功能,例如:希望保证单线 程的执行效率,在这种情况下本申请的技术方案也可以正常工作。

在SMT功能禁用的情况下,指令比较单元104中的复数个比较器被合并为 一组,指令分发单元103用于将指令解码单元102输出的、在SMT功能禁用后 的属于同一线程的指令发送给指令比较单元104中的被合并后的比较器分组, 而该比较器分组用于检测在SMT功能禁用后的属于同一个线程的指令之间的数 据相关性。例如,在上面的具体例子中,在SMT功能禁用的情况下,指令比较 单元104中的12个比较器被合并为一组,指令分发单元103用于将解码后的属 于同一线程的指令发送给指令比较单元104,指令比较单元104则利用12个比 较器在一个时钟周期内检测4条指令的数据相关性。

综合考虑SMT启用和禁用这两种情况下的重命名指令宽度,以及对物理比 较器的利用情况,上述具体例子采用的实施方式,也是在现有CPU常规配置情 况下的优选实施方式。采用这种实施方式,在SMT功能禁用的情况下,CPU的 重命名指令宽度为4条,在SMT功能启用的情况下,CPU的重命名指令宽度由 4条扩展为6条,而且在两种情况下,12个比较器都得到了充分利用,其利用 率达到了饱和状态。

考虑本申请技术方案的另外一种实施方式,指令比较单元包括24个比较器, 在SMT功能禁用的情况下,可以将其中的20个比较器用于比较5条指令的数 据相关性(5×5-5=20);在SMT功能启用的情况下,将24个比较器分为两 组,每组的12个比较器可用于检测4条指令的数据相关性,从而在不增加硬件 比较器的情况下,使重命名指令宽度从5条拓宽为8条。但是这种实施方式与 上面的优选实施方式相比较,在SMT功能禁用的情况下,有4个比较器处于闲 置状态,比较器的利用率没有达到饱和状态。

请参见附图5,其为本申请的基于SMT的中央处理单元的另一种实施例示 意图。附图5所示的功能单元模块图示意了本申请技术方案的另外一种实施方 式,即:所述基于SMT的中央处理单元包括,指令读取单元501、指令解码单 元502和指令比较单元503;所述指令比较单元503包括指令分发单元504和被 划分为多个分组的复数个比较器。这种实施方式与上一实施例的区别在于,所 述指令分发单元504和复数个比较器被集成在同一个指令比较单元503中,至 于各个功能单元实现的功能和工作原理与实施例一基本相同,此处不再赘述。

在上述实施例中,提供了一种基于SMT的中央处理单元,本申请还提供一 种基于SMT的用于检测指令的数据相关性的装置。

请参看图6,其为本申请提供的一种基于SMT的用于检测指令的数据相关 性的装置的实施例示意图。由于本装置实施例与实施例一中的对应部分相似, 因此描述得比较简单,相关的部分请参见实施例一中的对应说明即可。

本实施例的一种基于SMT的用于检测指令的数据相关性的装置,包括:指 令输入接口601、结果输出接口603、以及用于检测指令之间的数据相关性的复 数个比较器602。

其中,复数个比较器602,被划分成彼此相互独立的至少两个分组,所述比 较器的分组个数与SMT功能启用后支持的线程个数相同;每一组比较器用于对 应检测在SMT功能启用后的其中一线程的指令之间的数据相关性,不同分组的 比较器用于检测在SMT功能启用后的属于不同线程的指令之间的数据相关性。

指令输入接口601可以包含多个输入接口,其个数与比较器的分组个数相 同,如果比较器分组数目为n,则指令输入接口也为n个,分别为601-1至601-n; 并且每一个指令输入接口与一个比较器分组相连接,用于向所述比较器分组输 入在SMT功能启用后的属于同一个线程的指令;不同的指令输入接口与不同的 比较器分组相连接。所述结果输出接口603与所述复数个比较器602相连接, 用于输出所述复数个比较器602的比较结果。

下面以目前常规的CPU配置,即:包括12个比较器,SMT功能启用后可 同时执行2个线程为例,进一步说明本实施例。所述基于SMT的用于检测指令 的数据相关性的装置包括两个指令输入接口,所述复数个比较器602被分为两 个分组,每一组包含6个比较器;所述指令输入接口601用于从指令分发单元 或者是具备类似功能的单元接收解码后指令、并将所述指令传输给对应的比较 器分组,其中,第一指令输入接口接收属于线程1的指令并传输给第一比较器 分组,第二指令输入接口接收属于线程2的指令并传输给第二比较器分组;第 一比较器分组使用6个比较器检测线程1的三条指令的数据相关性,第二比较 器分组使用6个比较器比较线程2的三条指令的数据相关性,并将两个比较器 分组的检测结果通过结果输出接口603输出。由此可见,在SMT功能启用的情 况下,本实施例的装置,可以同时检测6条指令的数据相关性。

在SMT功能禁用的情况下,所述2个指令输入接口中只有一个处于工作状 态,即:从一个指令输入接口输入同一个线程的指令,并且12个比较器被合并 为一组,用于同时检测从所述一个指令输入接口输入的4条指令的数据相关性。

在本实施例的具体例子中,由于充分利用了SMT功能启用后的不同线程指 令之间的无关性,因此在不增加比较器的情况下,拓宽了检测数据相关性的指 令宽度。

以上列举了本实施例的一个具体例子,在其他的实施方式中,启用SMT功 能后支持的线程数目、比较器的数目等都可以不同于上述具体例子,但是只要 所述复数个比较器被划分为多个分组、并且每一分组用于对应检测在SMT功能 启用后的其中一线程的指令之间的数据相关性、不同的分组用于检测在SMT功 能启用后的属于不同线程的指令之间的数据相关性,就同样能够在不增加硬件 比较器的情况下,拓宽数据相关性检测的指令宽度。

在上述实施例中,提供了一种基于SMT的用于检测指令的数据相关性的装 置,本申请还提供另一种基于SMT的用于检测指令的数据相关性的装置。

请参看图7,其为本申请提供的另一种基于SMT的用于检测指令的数据相 关性的装置的实施例示意图。由于本装置实施例与实施例一中的对应部分相似, 因此描述得比较简单,相关的部分请参见实施例一中的对应说明即可。

本实施例的一种基于SMT的用于检测指令的数据相关性的装置,包括:指 令输入接口701、指令分发单元702、指令比较单元703和结果输出接口704, 各单元之间的连接关系如图7所示。

指令比较单元703包括用于检测指令之间数据相关性的复数个比较器,所 述复数个比较器被划分成彼此相互独立的至少两个分组,所述比较器的分组个 数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检测在SMT 功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较器用于检 测在SMT功能启用后的属于不同线程的指令之间的数据相关性。

指令分发单元702包括至少两个指令分发端,每个指令分发端与所述指令 比较单元703中的一个比较器分组相连接,不同的指令分发端与不同的比较器 分组相连接,所述指令分发端的个数与所述指令比较单元中的分组个数相同。

指令分发单元702用于从所述指令输入接口701读取待检测数据相关性的 指令,将SMT功能启用后的属于同一个线程的指令、通过一个指令分发端发送 给一个比较器分组,将SMT功能启用后的属于不同线程的指令通过不同的指令 分发端发送给不同的比较器分组。

下面以目前常规的CPU配置,即:包括12个比较器,SMT功能启用后可 同时执行2个线程为例,进一步说明本实施例。所述指令输入接口701将来自 解码单元的解码后指令传输给所述指令分发单元702,所述指令分发单元702包 括两个指令分发端,分别与所述指令比较单元703中的两个比较器分组相连接, 所述指令分发单元702通过第一指令分发端将属于线程1的指令分发给第一比 较器分组、通过第二指令分发端将属于线程2的指令分发给第二比较器分组; 两个比较器分组各包含6个比较器,分别用于检测属于线程1和线程2的3条 指令的数据相关性。因此,在SMT功能启用的情况下,本实施例的装置,可以 同时检测6条指令的数据相关性。

在SMT功能禁用的情况下,所述指令分发单元702的两个指令分发端中只 有一个处于工作状态,即:通过一个指令分发端向合并为一组的12个比较器发 送同一个线程的指令,在这种情况下,所述12个比较器可同时检测4条指令的 数据相关性。

由此可见,在本实施例的具体例子中,由于充分利用了SMT功能启用后的 不同线程指令之间的无关性,因此在不增加比较器的情况下,拓宽了检测数据 相关性的指令宽度。

以上列举了本实施例的一个具体例子,在其他的实施方式中,启用SMT功 能后支持的线程数目、比较器的数目等都可以不同于上述具体例子,但是只要 指令比较单元中的比较器被划分为不同的分组、并且每一分组用于对应检测在 SMT功能启用后的其中一线程的指令之间的数据相关性、不同分组用于检测在 SMT功能启用后的属于不同线程的指令之间的数据相关性,就同样能够在不增 加硬件比较器的前提下,拓宽数据相关性检测的指令宽度。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本 领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改, 因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出 接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。 内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由 任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程 序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他 类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储 器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、 数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他 磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。 按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机 程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件 和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计 算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、 CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号