CN114787772A - 用于微处理器中累加寄存器结果的指令处理 - Google Patents

用于微处理器中累加寄存器结果的指令处理 Download PDF

Info

Publication number
CN114787772A
CN114787772A CN202080059682.7A CN202080059682A CN114787772A CN 114787772 A CN114787772 A CN 114787772A CN 202080059682 A CN202080059682 A CN 202080059682A CN 114787772 A CN114787772 A CN 114787772A
Authority
CN
China
Prior art keywords
register file
accumulator
processor
accumulator register
main
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.)
Pending
Application number
CN202080059682.7A
Other languages
English (en)
Inventor
B.汤普托
M.博尔斯马
A.瓦格纳
J.莫雷拉
黎贵雄
S.米勒
D.阮
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 CN114787772A publication Critical patent/CN114787772A/zh
Pending 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/30098Register arrangements
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

公开了一种用于处理信息的计算机系统、处理器和方法,包括:至少一个计算机处理器;与所述至少处理器相关联的主寄存器文件,所述主寄存器文件具有用于存储数据的多个条目、用于将数据写入所述主寄存器文件条目的一个或多个写入端口、以及用于从所述主寄存器文件条目读取数据的一个或多个读取端口;一个或多个执行单元,包括密集数学执行单元;以及至少一个累加器寄存器文件,具有用于存储数据的多个条目。在一方面,密集数学执行单元的结果被写到累加器寄存器文件,优选地多次被写到相同的累加器寄存器文件条目,并且来自累加器寄存器文件的数据被写到主寄存器文件。

Description

用于微处理器中累加寄存器结果的指令处理
背景技术
本发明总体上涉及数据处理系统、处理器,并且更具体地涉及处理器中的累加器寄存器文件,包括与一个或多个密集数学执行单元(诸如,例如一个或多个矩阵-乘法-累加器(MMA)单元)相关联的累加器寄存器。
当前在数据处理系统中使用的处理器一次处理一个以上指令,且经常无序地处理那些指令。在现代计算机架构中,存在若干已知的方式来设计适于一次执行多于一个指令的计算机,或至少在同一时间帧内执行多于一个指令的计算机。例如,提高吞吐量的一种设计包括在处理器核内的多个执行片以同时处理多个指令线程,其中线程共享处理器核的某些资源。执行片可指处理器内串联的多个数据处理硬件单元,如流水线或流水线结构,以在单个处理周期内处理多条指令。流水线涉及分阶段处理指令,以便同时处理多条指令。多个执行片可以用作处理器内核内同步多线程的一部分。
各个流水线阶段可包括“指令取出”阶段,其中指令从存储器中取出。在“解码”阶段,指令被解码成不同的控制位,该控制位通常指定(i)用于执行由指令指定的操作的功能单元(例如,执行单元)的类型,(ii)操作的源操作数,以及(iii)操作的结果的目的地。在“调度”阶段,解码的指令被调度至发布队列(ISQ),在该发布队列中指令等待数据和可用的执行单元。发布队列中的指令通常被发布到“执行”阶段中的执行单元。“执行”阶段处理由指令指定的操作。执行由指令指定的操作通常包含接受数据(例如,一个或一个以上操作数)和产生一个或一个以上结果。通常存在与执行单元和/或发布队列相关联的寄存器文件,以保持执行单元的数据和/或信息。寄存器文件通常具有从寄存器文件中的条目或位置读取和/或写入的信息。
增加计算吞吐量的设计是具有专门的计算单元(例如,矩阵-乘法-累加器单元(MMA单元))来处理不同数据类型并执行高度并行的任务。宽单指令多数据(SIMD)数据流是实现高计算吞吐量的一种方式。
发明内容
给出本公开的概述以帮助理解计算机系统、计算机架构结构、处理器、包括累加器寄存器文件的寄存器文件、以及在处理器中使用寄存器文件的方法,而并非旨在限制本公开或本发明。本公开涉及本领域普通技术人员。应理解,本公开的各个方面和特征可有利地在一些情况下单独地使用,或在其他情况下与本公开的其他方面和特征组合使用。因而,可以对计算机系统、架构结构、处理器、寄存器文件和/或它们的操作方法进行变化和修改,以实现不同的效果。
公开了一种用于处理信息的计算机系统,其中该计算机系统包括:至少一个处理器;与该至少一个处理器相关联的主寄存器文件,该主寄存器文件具有用于存储数据的多个条目、用于将数据写入主寄存器文件条目的一个或多个写入端口、以及用于从主寄存器文件条目读取数据的一个或多个读取端口;一个或多个执行单元,包括密集数学执行单元;以及至少一个累加器寄存器文件,其具有用于存储数据的多个条目,所述至少一个累加器寄存器文件与所述密集数学执行单元相关联。在一个或多个实施例中,处理器被配置成在密集数学执行单元中处理数据,其中密集数学执行单元的结果被写入累加器寄存器文件。在一方面中,所述处理器经配置以多次将结果写回到相同的累加器寄存器文件条目。在实施例中,处理器还被配置为将数据从累加器寄存器文件写到主寄存器文件。优选地,处理器被配置为响应于访问被映射到累加器寄存器文件的主寄存器文件条目的指令而将数据从累加器寄存器文件写到多个主寄存器文件条目。
在一方面中,所述处理器经配置以启动(prime)所述累加器文件寄存器以接收数据,且在一优选方面中,所述处理器经配置以响应于将数据存储到所述累加器寄存器文件的指令启动所述累加器文件寄存器。在一个实施例中,响应于启动累加器寄存器文件条目,处理器将映射到启动的累加器寄存器文件的一个或多个主寄存器文件条目标记为忙碌。累加器寄存器文件优选地对于密集数学单元是本地的,并且在一方面,密集数学执行单元是矩阵-乘法-累加器(MMA)单元,并且累加器寄存器文件位于MMA中。在实施例中,累加器寄存器文件中的每个条目被映射到多个主寄存器文件条目。
在一个实施例中,公开了一种用于处理信息的处理器,其中所述处理器包括:与所述至少一个处理器相关联的主寄存器文件,所述主寄存器文件具有用于存储数据的多个条目、用于向所述主寄存器文件条目写入数据的一个或多个写入端口、以及用于从所述主寄存器文件条目读取数据的一个或多个读取端口;一个或多个执行单元,包括密集数学执行单元;以及至少一个累加器寄存器文件,其具有用于存储数据的多个条目,所述至少一个累加器寄存器文件与所述密集数学执行单元相关联,并且所述累加器寄存器文件的所述位字段宽度比所述主寄存器文件的所述位字段宽度宽。在一方面,处理器被配置成在密集数学执行单元中以使得密集数学执行单元的结果被多次写入到相同的累加器文件寄存器条目的方式来处理数据,并且被配置成将来自累加器寄存器文件条目的被多次写入的数据写回到主寄存器文件条目。
在另一方面中,公开了一种用于处理信息的计算机系统,其中所述计算机系统包括:至少一个处理器;与所述至少一个处理器相关联的主寄存器文件,所述主寄存器文件具有用于存储数据的多个条目、用于将数据写入到所述主寄存器文件条目的一个或多个写入端口、以及用于从所述寄存器文件条目读取数据的多个读取端口;一个或多个执行单元,包括密集数学执行单元;具有用于存储数据的多个条目的至少一个累加器寄存器文件,所述至少一个累加器寄存器文件具有用于存储数据的多个条目,所述至少一个累加器寄存器文件与所述密集数学执行单元相关联;一个或多个计算机可读存储介质;以及存储在所述一个或多个计算机可读存储介质上的编程指令,用于由所述至少一个处理器执行。在一实施例中,编程指令在处理器上执行时使密集数学单元将结果多次写入相同的累加器寄存器文件条目。优选地,响应于处理器处理密集数学执行单元指令,编程指令使处理器:将单个累加器寄存器文件条目映射到多个主寄存器文件条目;多次将结果写入同一累加器寄存器文件条目;解除启动被多次写入的所述累加器寄存器文件条目;将来自被多次写入的所述累加器寄存器文件条目的所述结果数据写入所述主寄存器文件;以及解除分配被解除启动的累加器寄存器文件条目。
还公开了一种处理处理器中的指令的方法。在一个或多个实施例中,该方法包括:提供与密集数学执行单元相关联的累加器寄存器文件;用密集数学执行单元来执行密集数学操作;以及用密集数学执行单元将密集数学操作的结果写入累加器寄存器文件。在一方面,该方法进一步包括密集数学执行单元在不写入主文件寄存器的情况下读取和写入累加器寄存器文件。在实施例中,累加器寄存器文件在密集数学执行单元操作期间是源和目标两者。该方法优选地包括在密集数学执行单元操作期间将相同的累加器寄存器文件条目写入若干次,并且在方面,该方法包括将累加器寄存器文件数据写入主寄存器文件。
本发明的前述和其他目的、特征和优点将从如附图中示出的本发明的示例性实施例的以下更具体的描述中变得明显。
附图说明
当结合所提供的附图阅读时,将更好地理解计算机系统、计算机架构结构、处理器、包括累加器寄存器文件的寄存器文件和/或它们的操作方法的各个方面、特征和实施例。出于说明计算机系统、计算机架构结构、处理器、寄存器文件、累加器寄存器文件及其操作方法的方面、特征和/或不同实施例的目的,在图中提供了实施例,但权利要求不应限于所示的精确系统、实施例、方法、过程和/或装置,并且所示的特征和/或过程可单独使用或与其他特征和/或过程组合使用。
图1示出了可以实施本公开的方面的数据处理系统的示例。
图2示出了可以实施本公开的某些方面的处理器的框图。
图3示出了根据本发明的某些方面的多片处理器的一部分的框图。
图4示出了根据本公开实施例的具有累加器寄存器文件的多片处理器的一部分的框图。
图5图示了根据本公开的实施例的MMA单元、累加器寄存器文件和物理VS寄存器文件的设置的简化框图。
图6示出了具有MMA单元和累加器寄存器文件的处理器的两个超级片的简化黑色图。
图7示出了根据实施例的用于在处理器中处理数据的方法的流程图。
具体实施方式
以下描述是为了说明本发明的一般原理而进行的,并且不意味着限制在此要求的发明概念。在以下详细描述中,阐述了许多细节以便提供对计算机系统、计算机架构结构、处理器、寄存器文件、累加器寄存器文件及其操作方法的理解,然而,所属领域的技术人员将理解,计算机系统、计算机架构结构、处理器、寄存器文件、累加器寄存器文件及其操作方法的不同和众多实施例可在没有那些特定细节的情况下实践,以及权利要求书和本发明不应限于本文具体描述和示出的系统、组件、子组件、实施例、特征、过程、方法、方面和/或细节。进一步,本文中所描述的特定特征可以与不同可能的组合和置换中的每一者中的其他所描述特征组合使用。
除非本文中另外特别限定,否则所有术语将被给予它们的最广泛的可能解释,包括从说明书中暗示的含义以及本领域技术人员所理解的含义和/或如在词典、论文等中限定的含义。还必须注意的是,如在说明书和所附权利要求中使用的,除非另外指明,单数形式“一个”、“一种”和“该”包括复数指示物,并且术语“包括”和/或“包含”指定所述特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个特征、整体、步骤、操作、元件、部件和/或其组合的存在或添加。
以下讨论省略或仅简要描述信息处理系统的常规特征,包括处理器和微处理器系统和架构,其对本领域技术人员是显而易见的。假定所属领域的技术人员熟悉处理器的一般架构,且明确地说,熟悉以乱序执行方式操作的处理器,包括多片处理器及其寄存器的使用。可以注意到,编号的元件是根据其中引入该元件的附图编号的,并且在随后的附图中经常但并非总是由该数字指代。
图1示出了可以实施本公开的方面的数据处理系统100的示例。该系统具有中央处理单元(CPU)110。CPU 110通过系统总线112耦合到不同其他组件。只读存储器(“ROM”)116耦接至系统总线112并且包括控制数据处理系统100的某些基本功能的基本输入/输出系统(“BIOS”)。随机存取存储器(“RAM”)114、I/O适配器118、以及通信适配器134也被联接到系统总线112上。I/O适配器118可以是与磁盘存储设备120通信的小型计算机系统接口(“SCSI”)适配器。通信适配器134将总线112与外部网络互连,使得数据处理系统能够与其他这样的系统通信。输入/输出设备还经由用户接口适配器122和显示适配器136连接到系统总线112。键盘124、跟踪球132、鼠标126和扬声器128均通过用户接口适配器122与总线112互连。显示监视器138通过显示适配器136连接到系统总线112。以此方式,用户能够通过键盘124、轨迹球132或鼠标126输入到系统,并且经由扬声器128和显示器138从系统接收输出。此外,使用诸如AIX(“AIX”是IBM公司的商标)的操作系统来协调图1中所示的各种组件的功能。
CPU(或“处理器”)110包括各种寄存器、缓冲器、存储器、以及由集成电路形成的其他单元,并且可以根据精简指令集计算(“RISC”)技术进行操作。CPU 110根据处理器周期进行处理,在一些方面与内部时钟(未示出)同步。
图2描绘了根据实施例的处理器110的简化框图。处理器110包含存储器202、指令高速缓冲存储器204、指令获取单元206、分支预测器208、分支分类单元218、处理流水线210和目的地资源220。处理器110可包含在计算机处理器内或以其他方式分布在计算机系统内。指令和数据可以存储在存储器202中,并且指令高速缓存204可以访问存储器202中的指令并且存储要获取的指令。存储器202可以包括任何类型的易失性或非易失性存储器。存储器202和指令高速缓存204可包括多个高速缓存级。
在图2中,描绘了指令获取单元206和处理流水线210的简化示例。在不同实施例中,处理器110可包含多个处理流水线210和指令提取单元206。在实施例中,处理流水线210包括解码单元20、发布单元22、执行单元24、回写逻辑26、逻辑寄存器映射器28、历史缓冲器(例如,保存和恢复缓冲器(SRB)30)以及物理寄存器文件32。指令获取单元206和/或分支预测器208也可以是处理流水线210的一部分。处理流水线210还可包括其他特征,诸如错误检查和处理逻辑、穿过处理流水线210的一个或多个并行路径、以及本领域现在或之后已知的其他特征。虽然在图2中描述了通过处理器110的前向路径,但是在处理器110的元件之间可以包括其他反馈和信令路径。处理器110可以包括其他电路、功能单元和组件。
指令获取单元206根据指令地址从指令高速缓存器204获取指令,以供解码单元20进一步处理。解码单元20解码指令并且将经解码的指令、指令的部分或其他经解码的数据传递给发布单元22。解码单元20还可检测未由分支预测器208预测的分支指令。发布单元22分析指令或其他数据,并基于该分析将经解码的指令、指令的部分或其他数据传输到流水线210中的一个或多个执行单元24。物理寄存器文件32保持用于执行单元24的数据。执行单元24执行并实施由向执行单元24发出的指令指定的操作。执行单元24可包括多个执行单元,诸如定点执行单元、浮点执行单元、加载/存储执行单元(LSU)、向量标量执行单元(VSU)和/或其他执行单元。逻辑寄存器映射器28包含提供逻辑寄存器条目(LReg)和物理寄存器文件32中的条目之间的映射的条目。当指令指定读取逻辑寄存器条目(LReg)时,逻辑寄存器映射器28通知发布单元22,发布单元22通知执行单元24可将物理寄存器文件32中的数据定位在何处。
当检测到误预测的分支指令或其他异常时,丢弃在误预测的分支或异常之后的指令和数据,例如从处理器110的各个单元刷新。历史缓冲器(例如,保存和恢复缓冲器(SRB)30)包含推测和架构寄存器状态,并且当调度新指令时备份逻辑寄存器文件数据。在这方面,在新指令被刷新并且旧数据需要被恢复的情况下,当新指令逐出数据时,历史缓冲器存储来自逻辑寄存器映射器28的信息。历史缓冲器(SRB)30保持所存储的信息,直到新指令完成。历史缓冲器(SRB)30与逻辑寄存器映射器28接口,以便将逻辑寄存器条目的内容从历史缓冲器(SRB)30恢复到逻辑寄存器映射器28,更新逻辑寄存器映射器28中的指针,从而指令知道在何处获得正确数据,例如,将处理器返回到可中断指令(例如,错误预测分支指令)之前存在的状态。
回写逻辑26将执行的指令的结果写回到目的地资源220。目的地资源220可以是任何类型的资源,包括寄存器、高速缓存存储器、其他存储器、用于与其他设备通信的I/O电路、其他处理电路、或用于执行的指令或数据的任何其他类型的目的地。
可以在逻辑流水线阶段的序列中在处理器110中处理指令。然而,应理解,这些阶段的功能可合并在一起,使得阶段的此特定划分不应被视为限制,除非在本文中的权利要求中清楚地指示此限制。实际上,为了简单理解,在图2中一些阶段表示为单个逻辑单元,并且以下将提供相关的进一步的细节。
图3示出了根据本公开实施例的处理器110的一部分的框图,在本示例中是多片处理器110。要注意的是,图3仅仅以示意性方式显示了多片处理器110的部分,用于进行讨论。应理解,多片处理器可具有其他配置。如图3所示,多层片处理器包括两个处理片-片0(片S0或360)和片1(片S1或365)。处理器包括指令获取单元310。片S0和S1中的每一个包括指令分派单元(320a和320b);逻辑寄存器映射器(350a和350b);历史缓冲器(HB)(370a和370b);发布队列(ISQ)(330a和330b);指令完成表(ICT)(325a和325b);以及执行单元(340a和340b),其包括加载存储单元(LSU)(304a和304b)、向量标量单元(VSU)(306a和306b)、以及寄存器文件(RF)(380a和380b)。执行单元340可包括用于保持供执行单元340执行的指令的一个或多个队列。
应注意,仅为了易于说明和论述而示出两个片,且多片处理器110可包含两个以上处理或执行片,其中每一片具有上文针对片S0和S1(片360和365)中的每一者所论述的所有组件。进一步,可将处理片分组成超级片(SS395),其中每一超级片包含一对处理片。例如,多片处理器可包括两个超级片SS0和SS1,其中SS0包括片S0和S1,并且SS1(未示出)包括片S2和S3。
指令获取单元310获取要由处理器110或处理器片执行的指令。由指令获取单元310获取的指令被发送至指令分派单元320。指令分派单元320通常以程序顺序将指令分派至发布队列(ISQ)330。发布队列(ISQ)330将向执行单元340发布指令。ISQ 330通常保持指令直到与该指令相关联的数据已经被检索并准备好使用。物理寄存器文件380可用于存储将在分派给执行单元340的指令中指定的操作中使用的数据,并且可将由执行单元340执行的操作的结果写入物理寄存器文件380中的指定的目标寄存器条目。
在某些方面,ISQ 330保持一组指令并且寄存器文件380积累用于指令输入的数据。寄存器文件可用于在存储器和处理器中的其他功能(执行)单元之间分级数据。可以有许多寄存器文件和类型。当所有源数据针对所述指令积累时,将所述数据传递到指定用于所述指令的执行的一个或一个以上执行单元。每个执行单元(例如,LSU304和VSU306)可以使结果数据在回写总线上可用于写入寄存器文件(RF)条目。
当数据未准备好(例如,不在适当的数据高速缓存或寄存器内)时,可能导致延迟,因为ISQ 330将不向执行单元340发布指令。至少由于这个原因,发布队列(ISQ)通常乱序地向执行单元340发布指令,因此可以执行所需数据可用的指令。在一个或多个实施例中,分配单元320将用标识符(例如,识别标签(iTag))对分派到发布队列330的每个指令加标记以识别指令。分派单元320可以用其他信息和元数据来标记指令。指令(iTag)通常由分派单元320在每个线程的基础上按照升序的程序顺序分派(分配)和标记。
逻辑寄存器映射器350包含提供逻辑寄存器中的条目(例如,GPR1)与物理寄存器文件380中的条目(例如,物理寄存器阵列条目)之间的映射的元数据(例如,iTag、RFTAG等)。RFTAG是将逻辑寄存器条目与物理寄存器文件条目相关的指针。例如,当指令想要读取逻辑寄存器(例如,GPR1)时,逻辑寄存器映射器350告诉发布队列330,发布队列330告诉执行单元340在物理寄存器文件380中哪里可以找到数据(例如,物理寄存器阵列条目)。执行单元340乱序地执行指令,并且当执行单元340完成指令时,执行单元340将完成的指令(例如,iTag)发送到ICT325。ICT325包含由分派单元320分派的指令队列,并在指令被处理时跟踪指令的进展。
历史缓冲器(SRB)390包含由较新指令从逻辑寄存器映射器350逐出的逻辑寄存器条目。存储在历史缓冲器(SRB)390中的信息可以包括从逻辑寄存器逐出逻辑寄存器条目的指令的iTag(即,逐出器iTag)。在实施例中,历史缓冲器(SRB)390存储iTag、逻辑寄存器条目号(标识逻辑寄存器条目(LReg)的位字段)以及寄存器文件标签(RFTag)信息。历史缓冲器(SRB)390可以存储和跟踪其他信息。历史缓冲器(SRB)390具有到逻辑寄存器映射器350的接口,以针对每个逐出的逻辑寄存器条目(LReg)恢复iTag和寄存器文件标签(RFTag)(和其他元数据)。该信息保持在历史缓冲器(SRB)条目中的历史缓冲器(SRB)390中,直到完成新指令(逐出器指令)。此时,在实施例中,从历史缓冲器(SRB)390中移除条目。
具有多个处理片的CPU 110可能够同时执行多个指令,例如,在一个处理周期内,每个处理片中同时执行一条指令。具有多个处理片的此CPU可称为多片处理器或并行片处理器。多个执行片中的同时处理可大大增加多片处理器的处理速度。在单线程(ST)模式中,处理单个线程,且在SMT模式中,同时处理两个线程(SMT2)或四个线程(SMT4)。
一方面,每个执行/处理片可具有其自身的寄存器文件,如图3所示。在另一方面中,每个超级片可分配一个寄存器文件,并由超级片的处理片共享。在一个方面,一个寄存器文件可被分配给多于一个的超级片,并且由超级片的处理片共享。例如,可分配片S0、S1、S2和S3以共享一个寄存器文件。下面将更详细地讨论寄存器文件。
在处理器中,为改善指令的无序执行,对正在运行的指令进行寄存器重命名并不罕见。然而,在使用具有高计算和吞吐量的执行单元(例如,密集的数学操作)的情况下,正在运行的指令的寄存器重命名可导致可消耗功率来处理的许多数据移动,并且还可因一个或多个执行气泡而引入不必要的延迟和等待时间。在一个或多个实施例中,使用累加器寄存器文件并执行使用具有密集数学指令的累加器寄存器文件重命名的过程。使用累加器寄存器文件和累加器寄存器文件重命名过程,使得执行期间的数据移动被最小化以减少功率并提高执行吞吐量。为了进入累加器寄存器重命名模式,在一方面,累加器寄存器被启动。在累加器寄存器被启动之后,密集数学执行单元(例如,矩阵-乘法-累加器(MMA)单元和/或推断引擎)在一个或多个实施例中,可在本地读取和写入累加器寄存器,而无需写入主寄存器文件。优选地,密集数学执行单元多次访问、读取和/或写入相同的累加器寄存器文件条目,而无需重命名新的累加器寄存器文件和/或写回主文件寄存器。当密集数学操作完成时,和/或响应于预定操作和指令,在一实施例中,累加器寄存器文件中的结果可被写到主寄存器文件和/或主存储器。
优选地,所述累加器寄存器对于所述MMA单元是本地的,并且在一个或多个实施例中,所述累加器寄存器可驻留在所述MMA单元中。在进一步的实施例中,累加器寄存器可以具有具有比主寄存器文件条目的位字段宽度更宽的位字段宽度的条目。在一方面,当密集数学执行单元操作完成时,累加器寄存器文件被解除启动。当密集数学执行单元操作完成时,在一方面,存储在累加器寄存器文件中的结果可从累加器寄存器文件移动到主寄存器文件,以允许后续指令(例如,后续非密集数学指令)使用这些结果。在一实施例中,写回主寄存器文件的累加器寄存器文件条目可被解除分配。在一个或多个实施例中,描述了过程、处理器架构和系统,其使用与一个或多个密集数学执行单元相关联、位于一个或多个密集数学执行单元本地和/或位于一个或多个密集数学执行单元(例如,一个或多个推断引擎和/或MMA单元)内的一个或多个累加器寄存器来处理密集数学指令。实施例中的推断引擎可以是一组八(8)个矩阵乘法累加(MMA)单元和三十二(32)个512位累加器寄存器。
图4示出了利用与执行单元(例如,推断引擎/MMA单元)相关联的累加器寄存器文件和位于向量标量(VS)执行单元(VSU)内的向量/标量(VS)主寄存器文件的处理流水线的简化框图。处理流水线或执行片包括分派单元320、具有多个条目351(a)-351(n)的逻辑映射器350、指令完成表(ICT)325、发布队列(ISQ)330、矩阵乘法累加器(MMA)单元460、具有多个条目471(a)-471(n)的累加器寄存器文件470以及具有具有多个条目381(a)-381(n)的主(VS)寄存器文件380的VS执行单元(VSU)340。虽然累加器寄存器文件470在图4中被图示为与推断引擎/MMA单元460相关联且在推断引擎/MMA单元460本地,但是在一个或多个实施例中,累加器寄存器文件470可驻留在MMA单元460内。在推断引擎和/或MMA操作期间,在一个或多个实施例中,累加器寄存器文件470被用作源和目标(累加器)。即,在一方面中,当MMA操作时,其使用来自累加器寄存器文件的操作数且将结果写回到累加器寄存器文件,且在一实施例中,将结果写回到同一累加器寄存器文件条目471(n)。在一个或多个实施例中,推断引擎/MMA单元的结果可以多次写回到同一目标累加器寄存器文件条目471(n)。以此方式,包括VS或主寄存器文件的处理器在推断引擎或MMA操作期间不经历重命名操作。
在一个或多个实施例中,累加器寄存器文件470的位字段宽度比主(VS)寄存器文件380的位字段宽度宽。在实施例中,累加器寄存器文件470是宽位累加器寄存器文件条目471(a)-471(n)的池。例如,在实施例中,累加器寄存器文件470是64个物理512位寄存器条目471的池,而VS主寄存器文件是128位宽。在实施例中,每个累加器寄存器文件条目471保存多个主寄存器文件条目,并且在实施例中,保存一组四个连续的主VS寄存器文件条目(381(n)-381(n+3))。在图5的简化框图中,示出了具有四个条目381(a)-381(d)的VS或主寄存器文件380,其被映射到累加器寄存器文件470中的单个累加器寄存器条目471。在示例中,四个连续的128位主VS寄存器文件条目381(a)-381(d)被映射到单个512位累加器寄存器文件条目471。在一个或多个实施例中,每个线程有八(8)个逻辑累加器寄存器(ACC0-ACC7)。这八(8)个逻辑累加器寄存器被映射到累加器阵列中的三十二(32)个物理寄存器,例如,累加器寄存器文件。
指令用于建立和运行密集数学执行单元,例如,推断引擎和/或一个或多个MMA单元。通用矩阵秩操作(“ger”)指令是一个示例,并且在一个或多个方面中对2n个数据执行n2个操作。推断引擎/MMA单元工作负载通常具有三个部分。累加器寄存器文件被初始化数据以执行其操作。多重运算在该MMA单元中执行,且结果被累积在该累加器寄存器文件中。并且,在一方面,当密集数学执行单元完成时,和/或响应于某些指令,累加器寄存器文件中的结果被写回到存储器(例如,主寄存器文件和/或主存储器)。累加器指令(“ger”指令)通常具有两个VSR操作数源、累加器VSR目的地和累加器VSR源。
为了开始密集数学操作(例如,MMA单元操作),在一个或多个实施例中,处理器将解码和/或检测密集数学指令,例如,推断引擎/MMA单元“ger”指令。在一个实施例中,每个密集数学指令具有iTag并且将利用一个完整分派通道和一个完整发布队列(ISQ)条目。在一方面,主寄存器映射器350为每个密集数学指令(例如,MMA单元指令)分配四个目标(主寄存器文件条目)。在实施方式中,主寄存器映射器350还从主寄存器映射器350逐出映射器条目。对于写入同一累加器寄存器文件条目(例如,图4中的471(a))的指令,主寄存器映射器350不分配新的主寄存器文件标签RFTag(条目),但寄存器映射器350将需要新的iTag用于新指令。在一个或多个方面,如果利用累加器寄存器文件470的密集数学指令(iTag)完成,如果累加器寄存器文件470尚未将结果写入到主寄存器文件380,则不解除分配主寄存器文件条目(RFTag)。当和/或响应于相应的累加器寄存器文件条目中的数据被推送以向主寄存器文件380写回数据时,例如响应于较年轻的非密集数学指令,解除分配主寄存器文件条目(RFTag)。
在实施例中,主寄存器映射器350将标记映射到累加器寄存器文件条目的主寄存器文件条目。在一方面,主寄存器映射器350将同一累加器寄存器文件iTag写入多个连续主寄存器文件条目381,例如,VSR(n)–VSR(n+3)。即,将一个iTag混叠为一组连续的主寄存器文件条目,例如,四个主寄存器文件条目381(n)-381(n+3)。读取或写入被分配给累加器寄存器文件条目(到被锁定的主寄存器文件条目)的主寄存器文件条目的较年轻的非密集数学指令将通知发布队列(ISQ)330开始回写过程。在一个或多个实施例中,移动自累加器指令的序列由分派单元320发送并由发布单元330发布,以从累加器寄存器文件470读取累加器寄存器的内容。在一个或多个替代实施例中,回写处理包括停止分派单元320,并且在发布队列能够恢复发布指令之前通知发布队列330耗尽累加器寄存器文件470中的数据。在一方面,将写入同一主寄存器文件条目组的指令标记为有序发布。
在一个或多个实施例中,利用累加器寄存器文件470的密集数学指令从发布队列330以优选地按照寄存器编号的顺序发布,并且在一个方面按照指令类型的顺序发布。在一方面,利用累加器寄存器文件的密集数学指令的发布比率是每周期一个指令(除了发布以启动累加器寄存器文件的第一指令,这可能花费多于一个周期之外)。利用累加器寄存器文件的指令优选地按顺序且紧接地发布。如果存在利用累加器寄存器文件的较旧指令,则发布队列可以发布较旧指令,因为较旧指令将读取或写入主寄存器文件,但是累加器寄存器文件将仅更新累加器寄存器文件,直到可以推送累加器寄存器文件中的数据以写回到主寄存器文件。
在一个或多个实施例中,应当启动累加器寄存器文件。在一个或多个实施例中,根据需要启动每个累加器寄存器文件。在累加器寄存器文件是数据源的情况下,累加器寄存器文件(并且具体地,利用数据的累加器寄存器文件条目)应被启动以开始利用累加器寄存器文件的密集数学操作(例如,MMA操作)。当从存储器(例如,主寄存器文件和/或主存储器)写入累加器寄存器文件时,或者作为启动指令的结果,启动累加器寄存器文件。例如,指令(例如,xxmtacc)可以将数据从主(VS)寄存器文件移动到累加器寄存器文件,以便同步得到累加器寄存器文件和主(VS)寄存器文件。在另一示例中,指令(例如,Ixacc)可以将数据从主存储器加载和移动到累加器寄存器文件。在进一步的示例中,在其条目/多个条目中的数据被设置为零的情况下,启动累加器寄存器文件。构想用于启动累加器寄存器文件的其他指令。
在实施例中,向量标量(VS)执行单元(VSU)将向适当的累加器寄存器文件条目中写入主(VS)寄存器主数据和正做启动的指令的iTag。正做启动的累加器寄存器文件还分配累加器寄存器重命名。在做启动时,累加器寄存器目标被重命名并映射到物理寄存器文件条目。参考图5,一个在做启动的示例期间,分配累加器寄存器重命名,并且将条目381(a)-381(d)中的VS寄存器数据写入所分配的累加器寄存器条目471。在一个或多个实施例中,VS执行单元将正进行启动的指令的主(VS)寄存器文件数据和iTag写入映射的累加器寄存器文件中。在一个或多个实施例中,累加器空闲列表472维护所分配的和空闲累加器标签的计数。累加器标签标识累加器寄存器文件条目。在一方面中,累加器寄存器文件忙碌旗标用以指示累加器寄存器文件条目当前是活动的。当所有累加器寄存器文件条目被占用时,分派将以类似于主寄存器资源暂停的方式暂停。
在一个或多个实施例中,第一次利用累加器寄存器文件的指令发布将花费两个紧接的循环来启动累加器寄存器文件。如果累加器忙碌旗标未被设置,则在实施例中,发布指令需要两个周期,因为累加器寄存器文件将需要被启动/重新被启动,并且主寄存器文件需要读取累加器寄存器文件作为源。第二次利用累加器寄存器文件的指令发布优选地将花费一个周期来发布。在将累加器寄存器进行启动和解除启动期间,对于每个累加器寄存器文件条目,多个主寄存器文件标签(例如,四个)将在一个镜头中发布。
在密集的数学操作中,累加器寄存器文件在每个循环不被读取和写到主(VS)寄存器文件。相反,大数据结果通过使用累加器寄存器文件而保持在密集数学引擎(例如,MMA单元)的本地。也就是说,MMA单元操作被写回累加器寄存器文件。在一方面,同一累加器寄存器文件被写入多次(例如,很多次)。在一实施例中,累加器寄存器文件条目不用每个指令重命名。一个或多个实施例中的累加器寄存器文件在MMA操作期间被用作源和目标(累加器)。图5中的循环475示出了MMA单元在累加器寄存器470中重写相同目标条目471的操作。
每一MMA单元指令写入单个累加器寄存器文件条目且将目标累加器寄存器条目的状态设定为脏,从而指示累加器寄存器文件条目和对应的主(VS)寄存器文件条目不同步。对于MMA单元指令,例如,“ger”指令,累加器寄存器文件存储结果,并且主(VS)寄存器文件不存储结果。虽然数据不会被写回到主执行单元(例如,VSU)中的主寄存器文件,但是当主执行单元从发布队列接收到新指令时,主执行单元将更新累加器寄存器文件iTag。对于利用累加器寄存器文件条目的指令,利用累加器寄存器文件的较新指令的iTag将替换较旧的iTag,但主寄存器文件标签(RFTag)将不改变。
累加器寄存器文件响应于多个场景被解除启动并且其数据被写回。在实施例中,累加器寄存器文件响应于指令被写回和/或解除启动,和/或主(VS)寄存器文件是在累加器寄存器变脏之后起源的。例如,响应于从累加器寄存器移动到主(VS)寄存器文件指令(例如,xxmfacc),累加器寄存器文件被解除启动,并且导致累加器寄存器文件从累加器寄存器文件移动并写回到主(VS)寄存器文件。在另一示例中,响应于来自累加器寄存器文件和存储指令(例如,stxacc)的移动,将累加器寄存器文件解除启动,并且将累加器寄存器文件中的结果写回到主存储器。在一个或多个实施例中,当累加器寄存器文件条目是脏的并且由主(VS)寄存器文件访问时,硬件将解除启动累加器寄存器。在实施例中,硬件将运行将所有累加器寄存器写回到主(VS)寄存器文件的序列。在一方面,每个累加器寄存器文件条目将被解除启动,累加器寄存器文件中的数据将被写入到主VS寄存器文件中,且累加器寄存器文件也将从重命名池中解除分配。在一个或多个实施例中,在累加器寄存器被启用并且主(VS)寄存器文件被定为目标的情况下,即使累加器寄存器不是脏的,累加器寄存器也将被解除启动。
响应于较年轻的主执行单元指令(例如,VSU指令)触摸被映射到活动的累加器寄存器文件的主寄存器文件,在实施例中发布队列被发信号通知开始写回受影响的累加器寄存器文件条目。在优选实施例中,这可以通过执行插入到指令流中的一系列内部操作而发生。在一方面,发布队列将保持分派单元直到累加器寄存器被耗尽。即,累加器寄存器文件将数据写回到对应的主寄存器文件条目。在一方面,将数据写回到主寄存器文件将花费多个周期,例如,累加器寄存器文件条目被映射到四个主寄存器文件条目的四个周期。当累加器寄存器文件数据的最后部分被写回时,主执行单元(例如,VSU)将完成写回。当写回完成时,“ACC繁忙”旗标将被重置(清除)。利用累加器寄存器文件的密集数学指令是单个指令并且取一个指令完成表(ICT)325条目。当累加器寄存器文件中的数据的最后部分被写回到主寄存器文件时,累加器寄存器指令完成。完成的指令的iTag被广播至历史缓冲器(图4中未示出)以解除分配主寄存器文件条目(RFTag)。处理器然后将处理较年轻的非密集数学指令,包括从主寄存器文件读取数据。此外,在累加器寄存器文件被耗尽并且ACC忙碌旗标被清除之后,发布队列可以恢复发布指令,并且分派单元可以恢复分派指令。
在一方面,当密集数学指令(例如,“ger”指令)源自自上次解除启动(例如,通过xxmtacc或1dacc)以来未被启动的累加器寄存器文件时,硬件将启动该累加器寄存器文件条目。硬件将运行启动累加器寄存器文件并分配累加器寄存器文件条目(重命名)的序列。然后将执行密集数学指令。
图6示出了具有与本地累加器寄存器文件相关联的一个或多个密集数学执行单元(例如,矩阵-乘法-累加器(MMA)单元)的处理器的另一实施例,其中处理器被配置成使得一个或多个密集数学单元的操作将结果多次写回到同一累加器寄存器文件条目。图6示出了用于处理数据的处理器的两个超级片。每个超级片包括至少一个MMA单元460、两个向量标量(VS)执行单元306和两个加载存储(LS)单元304。单个累加器寄存器文件470与两个MMA单元460结合使用。在替代实施例中,每一执行片可具有其自己的具有本地累加器寄存器文件的MMA单元,且在另一方面中,每一MMA单元具有包含在每一执行片中的MMA单元内的累加器寄存器文件。在图6的实施方式中,超级薄片0中的发布队列(ISQ)1 330b和超级薄片1中的发布队列(ISQ)2 330c向相应的MMA单元(460a和460b)发布指令,例如,“ger”指令。可替代地,如图6中的虚线所示,发布队列(ISQ)0 330a和发布队列(ISQ)3 330d可以向相应的超级片中的每个MMA单元(460a和460b)发布指令,例如,“ger”指令。
图7是根据一个实施例的示例性流程图,其示出并描述了在处理器中处理数据(例如,执行指令)的方法,在一个实施例中,该方法包括在根据本公开实施例的处理器中处理和执行密集数学指令(例如,MMA(“GER”)指令)。虽然为方便起见而不是为了限制本公开而将方法700描述为包括一系列和/或多个步骤,应当理解的是,该过程不需要作为一系列步骤进行和/或这些步骤不需要以相对于图7所示出和描述的顺序进行,但是该过程可以被集成和/或一个或多个步骤可以一起、同时地执行,或者这些步骤可以按照公开的顺序或者按照替代的顺序执行。
图7中的方法700涉及在处理器中处理数据,更具体地涉及通过使用密集数学执行单元(例如,MMA执行单元)来处理密集数学操作。在705,提供密集数学执行单元。在示例中,密集数学执行单元是矩阵-乘-累加(MMA)单元。在一个或多个示例中,密集数学执行单元可以是被布置为推断引擎的多个MMA单元。构想了其他密集数学执行单元。在一个或多个实施例中,在710,与密集数学执行单元相关联地提供累加器寄存器文件。在一个实施例中,累加器寄存器文件对于一个或多个密集数学执行单元是本地的,并且在一个方面,累加器寄存器文件驻留在MMA单元中。优选地,累加器寄存器文件具有比处理器中的主寄存器文件的位字段宽度更宽的位字段宽度。实施例中的累加器寄存器文件是512位宽,而处理器中的主寄存器文件是128位宽。根据一个方面,一个以上的主寄存器文件条目被映射到累加器寄存器文件。例如,四个连续的主寄存器文件被映射到一个累加器寄存器文件。
在一个或多个实施例中,响应于密集数学执行单元操作的指令,在715,启动累加器寄存器。例如,在累加器寄存器文件是密集数学执行单元操作的源的情况下,累加器寄存器文件被启动。在一实施例中,启动累加器寄存器文件包括将累加器寄存器文件中的数据与驻留在主寄存器文件中的数据(例如,VS寄存器文件)或驻留在主存储器中的数据同步。启动累加器寄存器文件还可包括清除累加器寄存器文件中的数据,例如,将累加器寄存器文件条目中的数据设置为零。在一个或多个实施例中,密集数学指令(例如,“ger”指令)可以不具有累加器寄存器文件源数据,并且该密集数学指令将被认为是自启动的。当累加器寄存器文件首先从主寄存器文件、从主存储器或者作为自启动指令的结果(其中,累加器寄存器文件条目中的数据被设置为零)被写入时,累加器寄存器文件被启动。在一个或多个实施例中,该累加器寄存器文件分配一个累加器寄存器文件重命名,该累加器文件被启动,并且该累加器寄存器文件中的数据的值被设置为主寄存器文件中的值、主存储器中的值、或被设置为零。
在一个或多个实施例中,密集数学执行单元(例如,MMA和/或推断引擎)在720处经历密集数学操作。即,使用一个或多个密集数学执行单元(例如,推断引擎和/或MMA单元)来执行密集数学操作。在一实施例中,密集数学执行单元的结果(例如,推断引擎和/或MMA单元的结果)在725被写回累加器寄存器文件。即,累加器寄存器文件在密集数学执行单元操作期间被用作源和目标两者。密集数学执行单元的结果优选地在没有重命名的情况下多次被写回相同的目标累加器寄存器文件。即,在一实施例中,单个累加器寄存器文件目标重命名可被重写多次。在一个或多个方面,响应于密集数学执行单元指令(例如,“ger”指令),没有写回到主寄存器文件,相反,密集数学执行单元本地的累加器寄存器(例如,MMA单元)存储该结果,而主寄存器文件不存储该结果。以此方式,密集数学执行单元(例如,推断引擎和/或MMA单元)在不重命名主寄存器文件条目的情况下操作。在实施例中,响应于密集数学执行单元将结果写回到累加器寄存器,累加器寄存器文件条目被做旗标或标记,例如标记为脏的。
在730,在一个或多个实施例中,累加器寄存器文件结果被写回主寄存器文件和/或主存储器。在实施例中,当密集数学执行单元操作完成时,累加器寄存器文件的结果被写回主寄存器文件和/或主存储器。在一实施例中,累加器寄存器被取消启动,累加器寄存器文件中的值被写入到主寄存器文件(或主存储器)中,且累加器寄存器文件条目被解除分配。根据实施例,主寄存器文件响应于指令而被写回,例如从累加器寄存器文件条目移动到主寄存器文件指令(xxmfacc),以及从累加器寄存器文件条目移动和存储指令(stxacc)。当映射到累加器寄存器文件条目的主寄存器文件条目是源的或目标的并且累加器寄存器文件条目是脏的时,累加器寄存器的结果也被写回到主寄存器文件。在一方面中,定义的读取累加器指令将数据从累加器寄存器文件移动到主寄存器文件。在实施例中,在读取累加器之后,一系列存储操作(例如,“八倍/四倍字”存储操作)将读取主寄存器文件并且写入主存储器。
在实施例中,当累加器寄存器文件条目是脏的并且由主寄存器访问时,硬件将解除启动累加器寄存器文件。在一个方面中,当映射的累加器寄存器条目被启动时,当主寄存器文件条目成为目标时,即使累加器寄存器没有脏,硬件也将取消累加器寄存器的启动。硬件将运行将所有累加器寄存器文件条目写回到主寄存器文件的序列,将执行目标为主寄存器文件条目的操作,并且从重命名池中解除分配每个累加器寄存器文件条目。
在一方面,当密集数学指令(例如,“ger”指令)源自自上次解除启动(例如,通过xxmtacc或1dacc)以来未被启动的累加器寄存器文件时,硬件将启动该累加器寄存器文件条目。在一方面,硬件将运行启动累加器寄存器文件并分配累加器寄存器文件条目(重命名)的序列。然后将执行密集数学指令。
虽然上述说明性实施例优选地以硬件实现,诸如以处理器的单元和电路实现,但是说明性实施例的各个方面也可以以软件实现。例如,应当理解,图7中所示的流程图的每个框以及流程图中的框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给处理器或其他可编程数据处理装置以产生机器,使得在处理器或其他可编程数据处理装置上执行的指令创建用于实现流程图块或多个流程图块中所指定的功能的装置。也可以把这些计算机程序指令存储在计算机可读存储器或存储介质中,这些指令使得处理器或其他可编程数据处理装置以特定方式工作,从而,存储在计算机可读存储器或存储介质中的指令产生包括实现流程图块或多个流程图块中所指定的功能的指令装置的制造品。
因而,流程图的方框支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置。还应理解,流程图说明的每一块以及流程图说明中的块的组合可由执行指定功能或步骤的基于专用硬件的计算机系统或由专用硬件与计算机指令的组合来实施。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
此外,根据不同实施例的系统可包括处理器和与处理器集成和/或可由处理器执行的逻辑,逻辑被配置为执行本文所述的一个或多个处理步骤。通过与其集成,意味着处理器具有嵌入在其中的作为硬件逻辑的逻辑,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。处理器可执行的意思是逻辑是硬件逻辑;软件逻辑,诸如固件、操作系统的一部分、应用程序的一部分;等等,或硬件和软件逻辑的某种组合,所述硬件和软件逻辑可由所述处理器访问并且被配置为在由所述处理器执行时使所述处理器执行某种功能。软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上,如本领域中已知的。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如ASIC、FPGA、中央处理单元(CPU)、集成电路(IC)、图形处理单元(GPU)等。
将清楚的是,前述系统和/或方法的不同特征可以以任何方式进行组合,从而从以上呈现的描述中创建多个组合。
还应当理解,本发明的实施例可以按代表客户部署的服务的形式来提供,以按需提供服务。
已经出于说明的目的呈现了本发明的各个实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。本文使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解本文公开的实施例。

Claims (25)

1.一种用于处理信息的计算机系统,所述计算机系统包括:
至少一个处理器;
与所述至少一个处理器相关联的主寄存器文件,所述主寄存器文件具有用于存储数据的多个条目、用于向所述主寄存器文件条目写入数据的一个或多个写入端口、以及用于从所述主寄存器文件条目读取数据的一个或多个读取端口;
一个或多个执行单元,包括密集数学执行单元;以及
至少一个累加器寄存器文件,所述至少一个累加器寄存器文件具有用于存储数据的多个条目,所述至少一个累加器寄存器文件与所述密集数学执行单元相关联,
其中所述处理器被配置成在所述密集数学执行单元中处理数据,其中所述密集数学执行单元的结果被写入所述累加器寄存器文件。
2.如权利要求1所述的计算机系统,其中所述处理器被配置以多次将结果写回到相同的累加器寄存器文件条目。
3.如权利要求1所述的计算机系统,其中所述处理器被配置为将数据从所述累加器寄存器文件写到所述主寄存器文件。
4.如权利要求3所述的计算机系统,其中所述处理器被配置为响应于访问被映射到累加器寄存器文件的主寄存器文件条目的指令而将数据从所述累加器寄存器文件写到多个主寄存器文件条目。
5.如权利要求1所述的计算机系统,其中所述处理器被配置为启动所述累加器文件寄存器以接收数据。
6.如权利要求5所述的计算机系统,其中所述处理器被配置为响应于将数据存储到所述累加器寄存器文件的指令而启动所述累加器文件寄存器。
7.如权利要求5所述的计算机系统,其中,响应于启动累加器寄存器文件条目,所述处理器将映射到所述启动的累加器寄存器文件的所述一个或多个主寄存器文件条目标记为忙碌。
8.如权利要求1所述的计算机系统,其中,所述累加器寄存器文件对于所述密集数学单元是本地的。
9.如权利要求8所述的计算机系统,其中所述密集数学执行单元是矩阵-乘法-累加器(MMA)单元,并且所述累加器寄存器文件位于所述MMA中。
10.如权利要求1所述的计算机系统,其中所述累加器寄存器文件的位字段宽度比所述主寄存器文件的位字段宽度宽。
11.如权利要求10所述的计算机系统,其中所述累加器寄存器文件中的每个条目被映射到多个主寄存器文件条目。
12.如权利要求1所述的计算机系统,其中所述处理器包括向量标量执行单元(VSU),并且所述密集数学执行单元是矩阵-乘法-累加器(MMA)单元,并且所述主寄存器文件是位于所述VSU中的VS寄存器文件,并且所述累加器寄存器文件被映射到多个连续的VS寄存器文件条目。
13.一种用于处理信息的处理器,所述处理器包括:
与所述至少一个处理器相关联的主寄存器文件,所述主寄存器文件具有用于存储数据的多个条目、用于向所述主寄存器文件条目写入数据的一个或多个写入端口、以及用于从所述主寄存器文件条目读取数据的一个或多个读取端口;
一个或多个执行单元,包括密集数学执行单元;以及
具有用于存储数据的多个条目的至少一个累加器寄存器文件,所述至少一个累加器寄存器文件与所述密集数学执行单元相关联,并且所述累加器寄存器文件的位字段宽度比所述主寄存器文件的位字段宽度宽,
其中,所述处理器被配置为以这样的方式处理所述密集数学执行单元中的数据,使得所述密集数学执行单元的结果被多次写入相同的累加器文件寄存器条目,以及
其中所述处理器被配置为将来自被多次写入的所述累加器寄存器文件条目的数据写回到所述主寄存器文件条目。
14.如权利要求13所述的处理器,其中所述处理器还被配置成:启动所述累加器寄存器文件,将结果多次写入相同的累加器寄存器文件条目,解除启动被多次写入的所述累加器寄存器文件条目,将从被多次写入的所述累加器寄存器文件条目得到的数据写入所述主寄存器文件,以及解除分配被解除启动的所述累加器寄存器文件条目。
15.如权利要求13所述的处理器,其中所述处理器被配置为响应于处理密集数学指令,将多个主寄存器文件条目映射到单个累加器寄存器文件条目。
16.如权利要求13所述的处理器,其中所述处理器被配置为启动所述累加器寄存器文件以接收数据。
17.如权利要求13所述的处理器,其中所述处理器被配置成响应于所述密集数学执行单元向所述多个累加器寄存器文件条目之一写入数据而将所述累加器寄存器文件标记为脏的。
18.如权利要求13所述的处理器,其中所述一个或多个执行单元包括向量标量单元(VSU),所述密集数学执行单元是矩阵-乘法-累加器(MMA)单元,并且所述主寄存器文件是位于所述VSU中的向量标量(VS)寄存器文件;以及所述处理器被配置为将多个连续的VS寄存器文件条目映射到单个累加器寄存器文件条目。
19.一种用于处理信息的计算机系统,所述计算机系统包括:
至少一个处理器;
与所述至少一个处理器相关联的主寄存器文件,所述主寄存器文件具有用于存储数据的多个条目、用于向所述主寄存器文件条目写入数据的一个或多个写入端口、以及用于从所述主寄存器文件条目读取数据的多个读取端口;
一个或多个执行单元,包括密集数学执行单元;
至少一个累加器寄存器文件,所述至少一个累加器寄存器文件具有用于存储数据的多个条目,所述至少一个累加器寄存器文件与所述密集数学执行单元相关联,
一个或多个计算机可读存储介质;以及
存储在所述一个或多个计算机可读存储介质上用于由所述至少一个处理器执行的程序指令,所述程序指令包括:
编程指令,使得所述密集数学单元将结果多次写入相同的累加器寄存器文件条目。
20.如权利要求19所述的计算机系统,进一步包括编程指令,响应于所述处理器处理密集数学执行单元指令:
将单个累加器寄存器文件条目映射到多个主寄存器文件条目;
将结果多次写入相同的累加器寄存器文件条目;
解除启动被多次写入的所述累加器寄存器文件条目;
将从被多次写入的所述累加器寄存器文件条目得到的数据写入所述主寄存器文件;以及
解除分配被解除启动的所述累加器寄存器文件条目。
21.一种处理处理器中的指令的方法,所述方法包括:
提供与密集数学执行单元相关联的累加器寄存器文件;
用所述密集数学执行单元执行密集数学操作;以及
用所述密集数学执行单元将所述密集数学操作的结果写入所述累加器寄存器文件。
22.如权利要求21所述的方法,进一步包括所述密集数学执行单元在不写入主文件寄存器的情况下读取和写入所述累加器寄存器文件。
23.如权利要求21所述的方法,其中,在密集数学执行单元操作期间,所述累加器寄存器文件是源和目标两者。
24.如权利要求21所述的方法,进一步包括在密集数学执行单元操作期间将相同的累加器寄存器文件条目写入若干次。
25.如权利要求21所述的方法,进一步包括将所述累加器寄存器文件数据写入主寄存器文件。
CN202080059682.7A 2019-08-29 2020-07-21 用于微处理器中累加寄存器结果的指令处理 Pending CN114787772A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/555,640 2019-08-29
US16/555,640 US11132198B2 (en) 2019-08-29 2019-08-29 Instruction handling for accumulation of register results in a microprocessor
PCT/IB2020/056833 WO2021038337A1 (en) 2019-08-29 2020-07-21 Instruction handling for accumulation of register results in a microprocessor

Publications (1)

Publication Number Publication Date
CN114787772A true CN114787772A (zh) 2022-07-22

Family

ID=74682287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080059682.7A Pending CN114787772A (zh) 2019-08-29 2020-07-21 用于微处理器中累加寄存器结果的指令处理

Country Status (6)

Country Link
US (3) US11132198B2 (zh)
JP (1) JP2022546034A (zh)
CN (1) CN114787772A (zh)
DE (1) DE112020004071T5 (zh)
GB (1) GB2603653B (zh)
WO (1) WO2021038337A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327757B2 (en) * 2020-05-04 2022-05-10 International Business Machines Corporation Processor providing intelligent management of values buffered in overlaid architected and non-architected register files
US11561794B2 (en) * 2021-05-26 2023-01-24 International Business Machines Corporation Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
EP1512100A2 (en) * 2002-05-24 2005-03-09 Koninklijke Philips Electronics N.V. A scalar/vector processor
US20050138323A1 (en) * 2003-12-18 2005-06-23 Intel Corporation, A Delaware Corporation Accumulator shadow register systems and methods
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
WO2012003997A1 (en) * 2010-07-09 2012-01-12 Martin Vorbach Data processing device and method
US8719828B2 (en) 2011-10-14 2014-05-06 Intel Corporation Method, apparatus, and system for adaptive thread scheduling in transactional memory systems
US9275014B2 (en) 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US11740903B2 (en) 2016-04-26 2023-08-29 Onnivation, LLC Computing machine using a matrix space and matrix pointer registers for matrix and array processing
US10338919B2 (en) 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
CN111095294A (zh) * 2017-07-05 2020-05-01 深视有限公司 深度视觉处理器
CN109871236A (zh) * 2017-12-01 2019-06-11 超威半导体公司 具有低功率并行矩阵乘法流水线的流处理器
US10387122B1 (en) 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier
US10839478B2 (en) * 2019-04-08 2020-11-17 Intel Corporation Accumulator pooling mechanism
US20210173662A1 (en) 2019-12-05 2021-06-10 International Business Machines Corporation Processor unit for multiply and accumulate operations

Also Published As

Publication number Publication date
DE112020004071T5 (de) 2023-01-05
US11132198B2 (en) 2021-09-28
US11755325B2 (en) 2023-09-12
JP2022546034A (ja) 2022-11-02
GB2603653B (en) 2023-02-22
WO2021038337A1 (en) 2021-03-04
US20230367597A1 (en) 2023-11-16
GB202202229D0 (en) 2022-04-06
GB2603653A (en) 2022-08-10
US20210064365A1 (en) 2021-03-04
US20220050682A1 (en) 2022-02-17

Similar Documents

Publication Publication Date Title
US9489207B2 (en) Processor and method for partially flushing a dispatched instruction group including a mispredicted branch
CN110249302B (zh) 在处理器核上同时执行多个程序
US10037211B2 (en) Operation of a multi-slice processor with an expanded merge fetching queue
CN114761921A (zh) 微处理器中累加器寄存器结果的检查点设置
US20230367597A1 (en) Instruction handling for accumulation of register results in a microprocessor
KR20190031494A (ko) 블록 기반의 프로세서에 대한 트랜잭션 레지스터 파일
US11188332B2 (en) System and handling of register data in processors
US20210109758A1 (en) Post completion execution in an out-of-order processor design
US10318294B2 (en) Operation of a multi-slice processor implementing dependency accumulation instruction sequencing
US20220027162A1 (en) Retire queue compression
CN110402434B (zh) 缓存未命中线程平衡
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions
US11093246B2 (en) Banked slice-target register file for wide dataflow execution in a microprocessor
US10956158B2 (en) System and handling of register data in processors
EP3497558B1 (en) System and method for load and store queue allocations at address generation time
US20220050679A1 (en) Handling and fusing load instructions in a processor
US11561794B2 (en) Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry
US11301254B2 (en) Instruction streaming using state migration
US11157276B2 (en) Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry
US10740140B2 (en) Flush-recovery bandwidth in a processor
US20230214218A1 (en) Inferring future value for speculative branch resolution in a microprocessor

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