CN105094747B - 基于smt的中央处理单元以及用于检测指令的数据相关性的装置 - Google Patents

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

Info

Publication number
CN105094747B
CN105094747B CN201410190737.4A CN201410190737A CN105094747B CN 105094747 B CN105094747 B CN 105094747B CN 201410190737 A CN201410190737 A CN 201410190737A CN 105094747 B CN105094747 B CN 105094747B
Authority
CN
China
Prior art keywords
instruction
smt
comparators
instructions
comparator
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
Application number
CN201410190737.4A
Other languages
English (en)
Other versions
CN105094747A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410190737.4A priority Critical patent/CN105094747B/zh
Priority to TW103134238A priority patent/TWI639951B/zh
Priority to US14/705,323 priority patent/US10545763B2/en
Priority to PCT/US2015/029639 priority patent/WO2015171862A1/en
Priority to EP15725924.3A priority patent/EP3140730B1/en
Publication of CN105094747A publication Critical patent/CN105094747A/zh
Application granted granted Critical
Publication of CN105094747B publication Critical patent/CN105094747B/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/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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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

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)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

基于SMT的中央处理单元以及用于检测指令的数据相关性的 装置
技术领域
本申请涉及中央处理器技术,具体涉及一种基于SMT的中央处理单元。本申请同时提供一种用于检测指令的数据相关性的装置。
背景技术
CPU是中央处理单元(Central Preocessing Unit)的英文缩写,是计算机的运算核心和控制核心。其基本的工作过程包括:取指、解码、执行和写回这样几个阶段:取指阶段从存储器或者高速缓存中提取指令,解码阶段负责根据指令类型产生不同的控制信号,执行阶段则使用操作数、按照解码产生的控制信号在功能部件(执行单元)中执行指令,最后由写回阶段将执行结果写回存储器或寄存器中。
为了充分挖掘CPU的吞吐率,出现了多种提高CPU性能的技术,例如:流水线技术、超标量技术、超标量超流水线技术等,这些技术的共同点在于,通过增加单个时钟周期内执行的指令数来提高指令执行的并发度,从而提高CPU的执行效率。然而,在实际中,由于CPU通常使用有限的系统结构寄存器(也称ISA寄存器或通用寄存器)来保存指令的操作数与结果,因此导致了指令和指令之间可能存在某种依赖关系(也称相关性),例如:两条指令使用同一个寄存器,指令间的这种相关性会限制指令的并发执行。为了改善这一问题,在CPU工作过程的解码和执行阶段之间引入了寄存器重命名阶段。该阶段的主要任务是去除指令之间在寄存器使用上的伪依赖性(也称错误依赖),同时还要甄别指令之间的真实依赖性(也称数据相关性,即:在后执行指令的源操作数的取值是否来源于在先执行指令的目的操作数),前者通过重命名表影射来解决,后者则需要使用重命名比较器进行比较判断。
此外,为了提高CPU执行单元的利用率,现代CPU还引入了将指令级并行和线程级并行相结合的同时多线程技术(Simultaneous multithreading-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可以将解码后的指令存放在解码队列(decode queue)中,解码队列可以是一个统一的队列,也可以是多个队列,每个队列存储属于同一个线程的解码后指令。
所述指令分发单元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)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (16)

1.一种基于SMT的中央处理单元,其特征在于,包括:
指令读取单元,用于从指令缓存中读取SMT功能启用后的多个线程的指令;
指令解码单元,用于对所述指令读取单元输出的多个线程的指令进行解码;
指令比较单元,用于检测解码后指令的数据相关性,并输出检测结果;
所述指令比较单元包括用于检测指令之间的数据相关性的复数个比较器,所述复数个比较器,被划分成彼此相互独立的至少两个分组,所述比较器的分组个数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检测在SMT功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较器用于检测在SMT功能启用后的属于不同线程的指令之间的数据相关性;
指令分发单元,用于将所述指令解码单元输出的、在SMT功能启用后的多个线程的解码后指令分发给所述指令比较单元中对应的比较器分组;
其中,SMT是一种在一个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。
2.根据权利要求1所述的基于SMT的中央处理单元,其特征在于,所述复数个比较器的任一比较器均包括第一输入端和第二输入端、以及输出端;其中,
所述第一输入端和第二输入端,分别用于输入待检测数据相关性的两条指令中的在先指令的目的操作数地址、和在后指令的源操作数地址;
所述输出端,用于输出上述目的操作数地址和源操作数地址是否相同的比较结果。
3.根据权利要求1-2任意一项所述的基于SMT的中央处理单元,其特征在于,所述指令读取单元具体用于,采用轮询的方式从指令缓存中读取SMT功能启用后的多个线程的指令;
相应的,所述指令解码单元具体用于,采用轮询的方式对所述指令读取单元输出的多个线程的指令进行解码。
4.根据权利要求3所述的基于SMT的中央处理单元,其特征在于,所述指令读取单元具体用于,采用轮询的方式从指令缓存中读取SMT功能启用后的线程1和线程2的指令;
相应的,所述指令比较单元中的复数个比较器被划分为两个比较器分组,其中,第一比较器分组检测属于线程1的指令之间的数据相关性,第二比较器分组检测属于线程2的指令之间的数据相关性。
5.根据权利要求4所述的基于SMT的中央处理单元,其特征在于,所述指令比较单元包含12个比较器,所述第一比较器分组和所述第二比较器分组各包含6个比较器。
6.根据权利要求1或2所述的基于SMT的中央处理单元,其特征在于,所述指令比较单元包括所述指令分发单元。
7.一种基于SMT的用于检测指令的数据相关性的装置,其特征在于,包括:指令输入接口、结果输出接口、以及用于检测指令之间的数据相关性的复数个比较器;
所述复数个比较器,被划分成彼此相互独立的至少两个分组,所述比较器的分组个数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检测在SMT功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较器用于检测在SMT功能启用后的属于不同线程的指令之间的数据相关性;
所述指令输入接口的个数与比较器的分组个数相同,并且每一个指令输入接口与一个比较器分组相连接,用于向所述比较器分组输入在SMT功能启用后的属于同一个线程的指令;不同的指令输入接口与不同的比较器分组相连接;
所述结果输出接口与所述复数个比较器相连接,用于输出所述复数个比较器的比较结果;
所述复数个比较器的任一比较器均包括第一输入端和第二输入端、以及输出端;其中,
所述第一输入端和第二输入端,分别用于输入待检测数据相关性的两条指令中的在先指令的目的操作数地址、和在后指令的源操作数地址;
所述输出端,输出上述目的操作数地址和源操作数地址是否相同的比较结果;
其中,SMT是一种在一个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。
8.根据权利要求7所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述指令输入接口的个数为两个,所述复数个比较器被划分为彼此独立的两个比较器分组;
其中,第一指令输入接口与第一比较器分组相连接,用于向第一比较器分组输入在SMT功能启用后的属于线程1的指令;第二指令输入接口与第二比较器分组相连接,用于向第二比较器分组输入在SMT功能启用后的属于线程2的指令。
9.根据权利要求8所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述比较器的个数具体为12个,所述第一比较器分组和所述第二比较器分组各包含6个比较器。
10.根据权利要求7所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述复数个比较器被合并为一组,用于检测从一个指令输入接口输入的、在SMT功能禁用后的属于同一个线程的指令之间的数据相关性。
11.一种基于SMT的用于检测指令的数据相关性的装置,其特征在于,包括:指令输入接口、结果输出接口、指令分发单元和指令比较单元,所述指令分发单元与所述指令输入接口和指令比较单元相连接,所述指令比较单元与所述指令分发单元和结果输出接口相连接;
所述指令比较单元包括用于检测指令之间数据相关性的复数个比较器,所述复数个比较器被划分成彼此相互独立的至少两个分组,所述比较器的分组个数与SMT功能启用后支持的线程个数相同;每一组比较器用于对应检测在SMT功能启用后的其中一线程的指令之间的数据相关性,不同分组的比较器用于检测在SMT功能启用后的属于不同线程的指令之间的数据相关性;
所述指令分发单元包括至少两个指令分发端,每个指令分发端与所述指令比较单元中的一个比较器分组相连接,不同的指令分发端与不同的比较器分组相连接,所述指令分发端的个数与所述指令比较单元中的分组个数相同;
所述指令分发单元用于从所述指令输入接口读取待检测数据相关性的指令,将SMT功能启用后的属于同一个线程的指令、通过一个指令分发端发送给一个比较器分组,将SMT功能启用后的属于不同线程的指令通过不同的指令分发端发送给不同的比较器分组;
其中,SMT是一种在一个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。
12.根据权利要求11所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述指令比较单元中的任一比较器均包括第一输入端和第二输入端、以及输出端;其中,
所述第一输入端和第二输入端,分别用于输入待检测数据相关性的两条指令中的在先指令的目的操作数地址、和在后指令的源操作数地址;
所述输出端,输出上述目的操作数地址和源操作数地址是否相同的比较结果。
13.根据权利要求11或12所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述指令分发单元包括两个指令分发端,所述指令比较单元中的复数个比较器被划分为彼此独立的两个比较器分组;
所述指令分发单元具体用于从所述指令输入接口读取待检测数据相关性的指令,将SMT功能启用后的属于线程1的指令通过第一指令分发端发送给第一比较器分组,将SMT功能启用后的属于线程2的指令通过第二指令分发端发送给第二比较器分组。
14.根据权利要求13所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述指令比较单元中的比较器的个数具体为12个,所述第一比较器分组和所述第二比较器分组各包含6个比较器。
15.根据权利要求11所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述指令比较单元中的复数个比较器被合并为一组,用于检测在SMT功能禁用后的属于同一个线程的指令之间的数据相关性。
16.根据权利要求15所述的基于SMT的用于检测指令的数据相关性的装置,其特征在于,所述指令分发单元用于从所述指令输入接口读取在SMT功能禁用后的、属于同一个线程的待检测数据相关性的指令,并通过一个指令分发端发送给所述指令比较单元。
CN201410190737.4A 2014-05-07 2014-05-07 基于smt的中央处理单元以及用于检测指令的数据相关性的装置 Active CN105094747B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201410190737.4A CN105094747B (zh) 2014-05-07 2014-05-07 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
TW103134238A TWI639951B (zh) 2014-05-07 2014-10-01 基於同時多執行緒(smt)的中央處理單元以及用於檢測指令的資料相關性的裝置
US14/705,323 US10545763B2 (en) 2014-05-07 2015-05-06 Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
PCT/US2015/029639 WO2015171862A1 (en) 2014-05-07 2015-05-07 Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
EP15725924.3A EP3140730B1 (en) 2014-05-07 2015-05-07 Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410190737.4A CN105094747B (zh) 2014-05-07 2014-05-07 基于smt的中央处理单元以及用于检测指令的数据相关性的装置

Publications (2)

Publication Number Publication Date
CN105094747A CN105094747A (zh) 2015-11-25
CN105094747B true CN105094747B (zh) 2018-12-04

Family

ID=54367914

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410190737.4A Active CN105094747B (zh) 2014-05-07 2014-05-07 基于smt的中央处理单元以及用于检测指令的数据相关性的装置

Country Status (5)

Country Link
US (1) US10545763B2 (zh)
EP (1) EP3140730B1 (zh)
CN (1) CN105094747B (zh)
TW (1) TWI639951B (zh)
WO (1) WO2015171862A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105528195B (zh) * 2015-12-03 2017-12-15 上海高性能集成电路设计中心 一种支持同时多线程指令乱序发射的飞行记分牌处理方法
US10133496B1 (en) * 2016-06-15 2018-11-20 Amazon Technologies, Inc. Bindable state maintaining components
CN109522047B (zh) * 2017-09-18 2022-10-28 展讯通信(上海)有限公司 一种同步多线程验证方法及装置
CN114830615B (zh) * 2020-11-18 2024-05-10 京东方科技集团股份有限公司 数据分发系统及数据分发方法
CN113447883A (zh) * 2021-06-25 2021-09-28 海宁奕斯伟集成电路设计有限公司 多工位并测的测试方法和测试系统
CN115629806B (zh) * 2022-12-19 2023-03-31 苏州浪潮智能科技有限公司 一种处理指令的方法、系统、设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661385A (zh) * 2008-08-29 2010-03-03 佛山市顺德区顺达电脑厂有限公司 数据处理装置及数据处理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
JPH04275628A (ja) * 1991-03-01 1992-10-01 Mitsubishi Electric Corp 演算処理装置
US5416913A (en) 1992-07-27 1995-05-16 Intel Corporation Method and apparatus for dependency checking in a multi-pipelined microprocessor
US5937202A (en) 1993-02-11 1999-08-10 3-D Computing, Inc. High-speed, parallel, processor architecture for front-end electronics, based on a single type of ASIC, and method use thereof
US5590352A (en) 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5778248A (en) 1996-06-17 1998-07-07 Sun Microsystems, Inc. Fast microprocessor stage bypass logic enable
US6058466A (en) 1997-06-24 2000-05-02 Sun Microsystems, Inc. System for allocation of execution resources amongst multiple executing processes
US6550001B1 (en) * 1998-10-30 2003-04-15 Intel Corporation Method and implementation of statistical detection of read after write and write after write hazards
US6907520B2 (en) 2001-01-11 2005-06-14 Sun Microsystems, Inc. Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7430654B2 (en) * 2003-07-09 2008-09-30 Via Technologies, Inc. Dynamic instruction dependency monitor and control system
US7263599B2 (en) * 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
US7831979B2 (en) * 2004-04-28 2010-11-09 Agere Systems Inc. Processor with instruction-based interrupt handling
JP4487744B2 (ja) * 2004-11-29 2010-06-23 富士通株式会社 マルチスレッド制御装置及び制御方法
KR100573334B1 (ko) * 2005-08-31 2006-04-24 주식회사 칩스앤미디어 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터
US20090014473A1 (en) * 2007-07-15 2009-01-15 Meir Gitelis Tube-Dispenser
US8539485B2 (en) * 2007-11-20 2013-09-17 Freescale Semiconductor, Inc. Polling using reservation mechanism
US7941644B2 (en) * 2008-10-16 2011-05-10 International Business Machines Corporation Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
US8464035B2 (en) * 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661385A (zh) * 2008-08-29 2010-03-03 佛山市顺德区顺达电脑厂有限公司 数据处理装置及数据处理方法

Also Published As

Publication number Publication date
WO2015171862A1 (en) 2015-11-12
EP3140730A1 (en) 2017-03-15
CN105094747A (zh) 2015-11-25
TW201543357A (zh) 2015-11-16
US10545763B2 (en) 2020-01-28
TWI639951B (zh) 2018-11-01
EP3140730B1 (en) 2018-03-21
US20150324202A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
US9529596B2 (en) Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
EP3314437B1 (en) Verifying branch targets in a block based processor
CN105094747B (zh) 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
US9606797B2 (en) Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
TWI497412B (zh) 用於使用相依矩陣追蹤解除配置之載入指令之方法、處理器及裝置
US9250901B2 (en) Execution context swap between heterogeneous functional hardware units
US7904702B2 (en) Compound instructions in a multi-threaded processor
US9292291B2 (en) Instruction merging optimization
US20130117543A1 (en) Low overhead operation latency aware scheduler
US20120060015A1 (en) Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
US20130159628A1 (en) Methods and apparatus for source operand collector caching
CN109791493B (zh) 用于乱序集群化解码中的负载平衡的系统和方法
EP3186704B1 (en) Multiple clustered very long instruction word processing core
US9182992B2 (en) Method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers
CN111752616A (zh) 用于符号存储地址生成的系统、装置和方法
US20130339689A1 (en) Later stage read port reduction
WO2014190699A1 (zh) 一种cpu指令处理方法和处理器
JP4420055B2 (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
US20140281747A1 (en) Fault Handling at a Transaction Level by Employing a Token and a Source-to-Destination Paradigm in a Processor-Based System
US20190190536A1 (en) Setting values of portions of registers based on bit values
US9176738B2 (en) Method and apparatus for fast decoding and enhancing execution speed of an instruction
US9753776B2 (en) Simultaneous multithreading resource sharing
US20070156990A1 (en) Load mechanism
KR20080065733A (ko) 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법

Legal Events

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