CN104331267B - 具有可扩展寄存器寻址的用于指令集架构 - Google Patents

具有可扩展寄存器寻址的用于指令集架构 Download PDF

Info

Publication number
CN104331267B
CN104331267B CN201410347829.9A CN201410347829A CN104331267B CN 104331267 B CN104331267 B CN 104331267B CN 201410347829 A CN201410347829 A CN 201410347829A CN 104331267 B CN104331267 B CN 104331267B
Authority
CN
China
Prior art keywords
depositor
instruction
address
register file
data
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.)
Expired - Fee Related
Application number
CN201410347829.9A
Other languages
English (en)
Other versions
CN104331267A (zh
Inventor
A·J·穆夫
P·E·沙德特
R·A·希勒
M·R·塔布斯
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.)
Core Usa Second LLC
GlobalFoundries Inc
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 CN104331267A publication Critical patent/CN104331267A/zh
Application granted granted Critical
Publication of CN104331267B publication Critical patent/CN104331267B/zh
Expired - Fee Related 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/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/30138Extension of register space, e.g. register cache
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及具有可扩展寄存器寻址的用于指令集架构。一种方法和电路布置至少部分基于指令的操作数地址是否引用主寄存器文件的主寄存器从/向扩展寄存器文件的扩展寄存器有选择地获取和/或写入数据,该主寄存器被配置为存储指向扩展寄存器的指针。连接到主寄存器文件和扩展寄存器文件的控制逻辑确定操作数地址是否引用被配置为存储指针的主寄存器,并且响应于确定,控制逻辑使执行逻辑从/向由存储在引用的主寄存器中的指针所指向的扩展寄存器有选择地获取和/或写入数据。

Description

具有可扩展寄存器寻址的用于指令集架构
技术领域
本发明主要地涉及数据处理并且具体地涉及用于处理器的指令集架构和并入这些指令集架构的计算机。
背景技术
每个计算机处理器的基本任务是执行计算机程序。处理器如何处置这一任务和计算机程序必须如何向处理器呈现它们本身以用于执行由处理器的微架构和指令集架构(ISA)这二者支配。ISA与编程模型类似并且主要地涉及计算机程序中的指令应当如何被格式化以便被处理器恰当解码和执行,但是ISA也可以规定处理器的其它方面、比如本机数据类型、寄存器、寻址模式、存储器架构、中断和例外处理以及外部I/O。微架构主要支配关于指令如何被解码和执行的更低级细节、包括处理器的构成部分(例如执行单元的类型、比如定点和浮点执行单元)和这些构成部分如何相互连接和相互操作以实施处理器的架构规范。
ISA通常包括能够被特定处理器设计执行的每个指令类型的格式的规范。通常,指令将被编码为包括标识指令类型(即在执行指令时将执行的操作类型)的操作代码或者操作码以及标识/引用将被指令处理的输入和/或输出(即源和目标)数据的一个或者多个操作数地址(即操作数)。在许多处理器设计、例如精简指令集计算机(RISC)和其它加载-存储设计中,主要在通用寄存器(GPR)(常称为“寄存器文件”)的集合内操纵数据而加载和存储指令用来分别从存储器向GPR中取回输入数据和从GPR并且向存储器中存储回结果或者输出数据。因此,对于操纵数据的指令的大多数而言,指令指定从其取回输入数据的一个或者多个输入或者源寄存器以及向其写入结果数据的输出 或者目的地寄存器。
通常在ISA中定义指令为固定大小、例如宽度为32位或者64位。尽管多个32或者64位的值可以用来指定指令,但是使用多个值是不希望的,因为多个值经过处理器传播需要更多时间并且显著增加设计复杂性。有了这些固定指令带宽,仅有限数目的位可用于用作操作码和操作数。
每个唯一指令类型常规地需要唯一操作码,因此为了支持更大数目的指令类型(业内的一贯需要),经常必须向指令架构的操作码部分分配附加位。在一些实例中,操作码可以被分解成主操作码和辅操作码,而主操作码定义指令类型并且辅操作码定义用于特定指令类型的子类型;然而即使在使用主操作码和辅操作码时,两种操作码占用每个指令中的位位置。
类似地,存在对于扩展ISA支持的寄存器数目的一贯需要,因为制作技术的进步持续使更大数目的寄存器被架构到集成电路中,并且一般而言,性能随着寄存器数目增加而提高。
每个寄存器也需要唯一标识符(例如地址),因此随着寄存器数目增加,为了标识/引用所有支持的寄存器而需要的在每个指令的操作数中的位位置数目类似地增加。
作为示例,考虑处理器架构,该处理器架构支持具有6位主操作码字段的32位指令,因此支持共计64个类型或者指令类。例如如果希望在这一架构内实施标识来自64个寄存器的寄存器文件中的多至三个源寄存器和一个分离目的地寄存器的指令类,则每个操作数需要6位操作数字段。这样,对于主操作码需要6位,对于源寄存器地址需要18位,并且对于目标寄存器地址需要6位,从而仅留下2位用于扩展操作码并且在这一指令类中仅允许四个可能指令。
使用32位指令来实施128个寄存器的寄存器文件甚至更有问题。例如如果在指令集架构的类中的指令中的一些指令需要三个源寄存器和一个目标寄存器,则操作数将需要28位(每操作数为7位),仅四位将可用于任何主操作码和/或辅操作码。因此,例如如果对于主 操作码需要四位以标识特定指令集,则该指令类将限于单个指令,因为将无用于任何辅操作码或者扩展操作码的空间。
然而在多数实例中,为了架构有用而需要更多指令类型。例如用于执行浮点运算的指令类可能需要指令类型,这些指令类型执行加法、减法、乘法、融合的乘法-加法运算、除法、求幂、三角运算、比较运算和其它运算。
已经进行常规尝试以解决这些限制。例如可以使三源运算有破坏性(destructive),这意味着目标和一个源地址将隐含地相等,从而将无需上例中的一个地址字段从而释放空间用于附加扩展操作码。然而有破坏性的运算经常让编译员和软件工程师感觉不便,因为经常需要在暂时寄存器中分开保存将被由破坏性的运算改写的源数据的额外副本,这除了使用宝贵暂时寄存器空间之外还可能具有潜在性能问题。
因此,在本领域中持续存在对于一种增加由指令集架构支持的指令数目和复杂性的方式的显著需要。
发明内容
本发明通过提供一种支持在固定长度指令架构中的扩展寄存器寻址(即更大寄存器文件)而限制专用于操作数地址的指令的位的方法和电路布置,来解决与现有技术关联的这些和其它问题。与本发明的实施例一致,包括多个扩展寄存器的扩展寄存器文件和包括多个寄存器的主寄存器可以耦合到包括用于执行指令的执行逻辑的执行流水线。主寄存器文件的多个寄存器可以包括第一子集和第二子集。第一寄存器子集可以被配置为存储指向扩展寄存器文件的扩展寄存器的数据、即第一寄存器子集可以存储指向扩展寄存器文件的扩展寄存器的指针。第二寄存器子集可以被配置为存储可以用作用于利用指令执行的源操作数/目标操作数的数据。控制逻辑可以耦合到主寄存器文件和扩展寄存器文件并且被配置为基于指令是否引用主寄存器的第一寄存器子集使数据被向/从扩展寄存器文件有选择地获取(source) /写入。
与本发明的实施例一致,在执行流水线中对指令解码时,控制逻辑确定指令的任何操作数地址是否引用主寄存器文件的第一寄存器子集的寄存器。对于引用第一子集的寄存器的任何操作数,控制逻辑使数据被从和/或向扩展寄存器文件的扩展寄存器获取和/或写入。具体而言,可以访问操作数地址引用的第一子集的寄存器,并且其中存储的数据作为指针用来确定从/向其获取/写入数据的特定扩展寄存器。因此,控制逻辑可以基于指令的操作数地址是否引用主寄存器文件的寄存器——该寄存器被配置为存储指向扩展寄存器文件的扩展寄存器的指针——从扩展寄存器有选择地获取用于指令的数据。
作为本发明的特征的这些和其它优点以及特征在所附权利要求中被阐述并且形成其又一部分。然而为了更好地理解本发明以及通过使用本发明而获得的优点和目的,应当参照其中描述本发明的示例实施例的附图和所附描述内容。
附图说明
图1是包括在与本发明的实施例一致的数据处理中有用的示例计算机的示例自动化计算机器的框图。
图2是在图1的计算机中实施的示例NOC的框图。
图3是更具体图示来自图2的NOC的节点的示例实现方式的框图。
图4是图示来自图2的NOC的IP块的示例实现方式的框图。
图5是图示数据处理系统的示例实现方式的框图,该数据处理系统并入连接到执行逻辑的与本发明的实施例一致的扩展寄存器文件和控制逻辑。
图6是图示可以被图5的数据处理系统执行的用于从扩展寄存器文件有选择地获取数据的操作序列的流程图。
图7是用于存储的指令的指令格式的框图。
图8是可以被图5的数据处理系统执行的存储的指令的指令格式 的示例框图。
图9是图示可以被图5的数据处理系统处理的示例指令的框图,其中处理可以包括使用扩展寄存器文件和控制逻辑对数据的有选择获取/写入。
具体实施方式
与本发明一致的实施例提供一种至少部分基于指令是否引用主寄存器文件的、被配置为存储指向扩展寄存器文件的扩展寄存器的指针的寄存器,来向扩展寄存器文件有选择地获取和/或写入用于执行指令的数据的电路布置和方法。与本发明的实施例一致,指令可以在执行流水线中被处理用于由执行流水线的执行逻辑执行。执行流水线的控制逻辑基于指令的操作数地址使执行逻辑向主寄存器文件或者扩展寄存器文件获取和/或写入数据。一般而言,主寄存器文件包括多个寄存器。主寄存器文件的寄存器的第一子集可以被配置为存储指向扩展寄存器文件的扩展寄存器的数据。寄存器的第二子集可以被配置为用作为用于在执行流水线中执行的指令的源操作数和/或目标操作数。
因此,在指令被执行流水线的指令解码逻辑解码时,控制逻辑可以确定指令是否引用主寄存器文件的第一寄存器子集、即操作数地址是否对应于主寄存器文件的第一寄存器子集中的寄存器。如果操作数地址对应于第一寄存器子集,则控制逻辑可以访问引用的寄存器并且使用引用的寄存器的数据作为指向扩展寄存器文件的扩展寄存器的指针。换而言之,引用的寄存器存储数据值,该数据值是与扩展寄存器对应的地址。可以在用执行逻辑执行指令时使用与指针对应的扩展寄存器。
其它变化和修改将为本领域普通技术人员所清楚。因此,本发明不限于这里公开的具体实现方式。
硬件和软件环境
现在转向附图,其中相似标号贯穿若干视图表示相似部分,图1 图示包括在与本发明的实施例一致的数据处理中有用的示例计算机10的示例自动化计算机器。图1的计算机包括至少一个计算机处理器12或者‘CPU’以及通过高速存储器总线16和总线适配器18连接到处理器12和计算机10的其它部件的随机存取存储器14(‘RAM’)。
在RAM14中存储应用程序20,该应用程序是用于执行特定数据处理任务、如比如字处理、电子表格、数据库操作、视频游戏、股市仿真、自动量子过程仿真或者其它用户级应用的用户级计算机程序指令模块。在RAM14中也存储操作系统22。与本发明的实施例结合有用的操作系统包括UNIXTM、LinuxTM、Microsoft Windows XPTM、AIXTM、IBM的i5/OSTM和如本领域技术人员将想到的其它操作系统。在RAM14中示出在图1的示例中的操作系统22和应用20,但是这样的软件的许多部件通常被存储于也例如在盘驱动24上的非易失性存储器中。
如以下将变得更清楚的那样,可以在片上网络(NOC)集成电路设备或者芯片内实施与本发明一致的实施例,并且这样图示计算机10包括两个示例NOC:视频适配器26和协同处理器28。可以备选地称为图形适配器的NOC视频适配器26是被具体设计用于向显示器设备30、比如显示器屏幕或者计算机监视器的图形输出的I/O适配器的示例。NOC视频适配器26通过高速视频总线32、总线适配器18和前侧总线34连接到处理器12,该前侧总线也是高速总线。NOC协同处理器28通过总线适配器18以及前侧总线34和36连接到处理器12,这些前侧总线也是高速总线。图1的NOC协同处理器可以例如被优化为按照主处理器12的要求来加速特定数据处理任务。
图1的示例NOC视频适配器26和NOC协同处理器28各自包括NOC,该NOC包括集成处理器(‘IP’)块、路由器、存储器通信控制器和网络接口控制器,以下将与图2-3结合更具体讨论该NOC的细节。NOC视频适配器和NOC协同处理器各自被优化用于程序,这些程序使用并行处理并且也需要对共享存储器的快速随机访问。然而受益于本公开内容的本领域普通技术人员将理解,可以在除了NOC设 备和设备架构之外的设备和设备架构中实施本发明。本发明因此不限于在NOC设备内实施。
图1的计算机10包括通过扩展总线40和总线适配器18耦合到处理器12和计算机10的其它部件的盘驱动适配器38。盘驱动适配器38以盘驱动24的形式将非易失性数据存储装置连接到计算机10并且可以例如使用集成驱动电子装置(‘IDE’)适配器、小型计算机系统接口(‘SCSI’)适配器和如本领域技术人员将想到的其它适配器来实施。非易失性计算机存储器也可以被实施用于作为如本领域技术人员将想到的光盘驱动、电可擦除可编程只读存储器(所谓‘EEPROM’或者‘闪’存)、RAM驱动等。
计算机10也包括一个或者多个输入/输出(‘I/O’)适配器42,该一个或者多个I/O适配器例如通过用于控制向显示器设备、比如计算机显示器屏幕的输出的软件驱动器和计算机硬件实施面向用户的输入/输出以及实施来来自用户输入设备44、比如键盘和鼠标的用户输入。此外,计算机10包括用于与其它计算机48进行数据通信和用于与数据通信网络50进行数据通信的通信适配器46。可以通过RS-232连接、通过外部总线、比如通用串行总线(‘USB’)、通过数据通信网络、比如IP数据通信网络和以如本领域技术人员将想到的其它方式串行执行这样的数据通信。通信适配器实施硬件级数据通信,通过这些数据通信,一个计算机直接或者通过数据通信网络向另一计算机发送数据通信。适合用于在计算机10中使用的通信适配器的示例包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的以太网(IEEE802.3)适配器和用于无线数据通信网络通信的802.11适配器。
为了进一步说明,图2阐述根据本发明的实施例的示例NOC102的功能框图。在‘芯片’100上、也就是在集成电路上实施图2中的NOC。NOC102包括被分组成互连节点的集成处理器(‘IP’)块104、路由器110、存储器通信控制器106和网络接口控制器108。每个IP块104通过存储器通信控制器106和网络接口控制器108来向路由器110适 配。每个存储器通信控制器控制在IP块与存储器之间的通信,并且每个网络接口控制器108控制通过路由器110的IP块间通信。
在NOC102中,每个IP块代表作为用于在NOC内的数据处理的构建块使用的同步或者异步逻辑设计可重用单位。有时扩展术语‘IP块’为‘知识产权块’从而有效指明IP块为将向半导体电路的其他用户或者设计者许可的、被一方拥有的设计、也就是一方的知识产权。然而在本发明的范围内,未要求IP块受制于任何特定所有权,因此总是在本说明书中扩展该术语为‘集成处理器块’。如这里规定的IP块是可以是或者可以不是知识产权主体的逻辑、单元或者芯片布局设计的可重用单位IP块可以形成为ASIC芯片设计或者FPGA逻辑设计的逻辑核。
一种用于类似地描述IP块的方式是:IP块是针对NOC设计何种库用于计算机编程或者何种分立集成电路部件用于印刷电路板设计。在与本发明的实施例一致的NOC中,可以实施IP块为通用门网表、为完整专用或者通用微处理器或者以如本领域技术人员可以想到的其它方式。网表是IP块的逻辑功能的布尔代数表示(门、标准单元),这类似于用于高级程序应用的汇编代码表。也可以例如以在硬件描述语言、比如Verilog或者VHDL中描述的可合成形式实施NOC。除了网表和可合成实现方式之外,也可以在更低级物理描述中交付NOC。可以用晶体管布局格式、比如GDSII分发模拟IP块元件、比如SERDES、PLL、DAC、ADC等。有时也以布局格式赋予IP块的数字元件。也将理解可以用计算机数据文件、例如逻辑定义程序代码的形式分发IP块以及与本发明一致实施的其它逻辑电路装置,这些计算机数据文件在各种细节水平定义实施这样的逻辑的电路布置的功能和/或布局。因此,尽管已经并且下文将在全功能集成电路器件、利用这样的器件的数据处理系统和其它有形物理硬件电路中实施的电路布置的上下文中描述本发明,但是受益于本公开内容的本领域普通技术人员将理解也可以在程序产品内实施本发明并且本发明无论用来分发程序产品的特定计算机可读存储介质类型如何都同样适用。计算 机可读存储介质的示例包括但不限于物理、可记录型介质、比如易失性和非易失性存储器设备、软盘、硬盘驱动、CD-ROM和DVD(以及其它示例)。
在图2的示例中的每个IP块104通过存储器通信控制器106适配到路由器110。每个存储器通信控制器是适于提供在IP块与存储器之间的数据通信的同步和异步逻辑电路的聚合。在IP块与存储器之间的这样的通信的示例包括存储器加载指令和存储器存储指令。以下参照图3更具体描述存储器通信控制器106。每个IP块104也通过网络接口控制器108适配到路由器110,该网络接口控制器控制在IP块104之间通过路由器110的通信。在IP块之间的通信的示例包括携带数据和指令的消息,这些指令用于在并行应用中和在流水线化的应用中在IP块之中处理该数据。以下也参照图3更具体描述网络接口控制器108。
路由器110和在它们之间的对应链路118实施NOC的网络操作。链路118可以是在连接所有路由器的物理、并行接口总线上实施的分组结构。也就是说,可以在宽到足以同时容纳包括所有首部信息和净荷数据的整个数据交换分组的接线总线上实施每个链路。如果分组数据结构包括64字节,这些字节例如包括八字节首部和56字节的净荷数据,则衬托每个链路的接线总线是64字节宽的512线。此外,每个链路可以是双向,从而如果链路分组结构包括64字节,则接线总线实际包含在每个路由器与它的在网络中的邻居中的每个邻居之间的1024线。在这样的实现方式中,消息可以包括多于一个分组,但是每个分组将精确地相配到接线总线的宽度上。在该可选方案中,可以在接线总线上实施链路,该接线总线仅宽到足以容纳分组的部分,从而分组将被分解成多个取字时间(beat),例如从而如果实施链路为宽度为16字节或者128个接线,则64字节分组可以被分解成四个取字时间(beat)。将理解不同实现方式可以基于实际物理限制以及希望的性能特性使用不同总线宽度。如果在路由器与每个接线总线段之间的连接称为端口,则每个路由器包括五个端口,一个用于在网络 上的数据传输的四个方向中的每个相应方向而第五端口用于通过存储器通信控制器和网络接口控制器将路由器适配到特定IP块。
每个存储器通信控制器106控制在IP块与存储器之间的通信。存储器可以包括片外主RAM112、通过存储器通信控制器106直接连接到IP块的存储器114、作为IP块116启用的片上存储器和片上高速缓存。在NOC102中,片上存储器114、116中的任一片上存储器例如可以被实施为片上高速缓存存储器。所有这些存储器形式可以被设置于物理地址或者虚拟地址的相同地址空间中,这即使对于直接附着到IP块的存储器也成立。存储器寻址的消息因此相对于IP块可以完全双向,因为可以从在网络上别处的任何IP块对这样的存储器寻址。在IP块上的存储器116可以从该IP块或者从在NOC中的任何其它IP块被寻址。直接附着到存储器通信控制器的存储器114可以由该IP块寻址,该IP块被该存储器通信控制器适配到网络,并且通信控制器的存储器114也可以由在NOC中别处的任何其它IP块寻址。
NOC102包括两个存储器管理单元(‘MMU’)120、122,这举例说明用于与本发明的实施例一致的NOC的两个备选存储器架构。在IP块内实施MMU120从而允许在IP块内的处理器在虚拟存储器中操作而允许NOC的整个其余架构在物理存储器地址空间中操作。MMU122被片外实施、通过数据通信端口124连接到NOC。端口124包括管脚和为了进行在NOC与MMU之间的信号而需要的其它互连以及用于将消息分组从NOC分组格式转换成外部MMU1212所需总线格式的充分智能。MMU的外部位置意味着在NOC的所有IP块中的所有处理器可以在虚拟存储器地址空间中操作而向片外存储器的物理地址的所有转换被片外MMU122处置。
除了通过使用MMU120、122来举例说明的两个存储器架构之外,数据通信端口126示出了在能够在本发明的实施例中利用的NOC中有用的第三存储器架构。端口126提供在NOC102的IP块104与片外存储器112之间的直接连接。在处理路径中无MMU时,这一架构提供NOC的所有IP块利用物理地址空间。在双向共享地址空间时, NOC的所有IP块可以通过包括加载和存储的存储器寻址的消息来访问地址空间中的存储器,存储器寻址的消息是通过直接连接到端口126的IP块指引的。端口126包括管脚和为了进行在NOC与片外存储器112之间的信号而需要的其它互连以及用于将消息分组从NOC分组格式转换成片外存储器112所需总线格式的充分智能。
在图2的示例中,指明IP块之一为主机接口处理器128。主机接口处理器128提供在NOC与其中可以安装NOC的主机计算机10之间的接口并且也向在NOC上的其它IP块提供数据处理服务、例如包括接收和在NOC的IP块之间派发来自主机计算机的数据处理请求。NOC可以例如如以上参照图1描述的那样在更大计算机10上实施视频图形适配器26或者协同处理器28。在图2的示例中,主机接口处理器128通过数据通信端口130连接到更大主机计算机。端口130包括管脚和为了进行在NOC与主机计算机之间的信号而需要的其它互连以及用于将来自NOC的消息分组转换成主机计算机10所需总线格式的充分智能。在图1的计算机中的NOC协同处理器的示例中,这样的端口将提供在NOC协同处理器28的链路结构与在NOC协同处理器28与总线适配器18之间的前侧总线36所需要的协议之间的数据通信格式翻译。
图3接着图示功能框图,该功能框图更具体图示在132共同图示的在NOC102内的IP块104、存储器通信控制器106、网络接口控制器108和路由器110内实施的部件。IP块104包括计算机处理器134和I/O功能136。在本例中,计算机存储器由在IP块104中的随机存取存储器(‘RAM’)段138代表。存储器如以上参照图2描述的那样可以占用物理地址空间的段,这些段在每个IP块上的内容从在NOC中的任何IP块可寻址和可访问。在每个IP块中对处理器134、I/O能力136和存储器138有效地实施IP块为一般可编程微处理器。然而如以上说明的那样,在本发明的范围内,IP块一般代表作为用于在NOC内的数据处理的构建块使用的同步或者异步逻辑的可重用单位。虽然出于说明的目的而有用的一个常见实施例中,实施IP块为一般 可编程微计算器,但是这并非本发明的限制。
在图3的NOC102中,每个存储器通信控制器106包括多个存储器通信执行引擎140。每个存储器通信执行引擎140被启用为执行来自IP块104的存储器通信指令、包括在网络与IP块104之间的双向存储器通信指令流141、142、144。存储器通信控制器执行的存储器通信指令不仅可以始发于通过特定存储器通信控制器被适配到路由器的IP块,而且可以始发于在NOC102中别处的任何IP块104。也就是说,在NOC中的任何IP块可以生成存储器通信指令并且通过NOC的路由器向与另一IP块关联的另一存储器通信控制器传输该该存储器通信指令用于执行该存储器通信指令。这样的存储器通信指令可以例如包括翻译后备缓冲控制指令(translation lookaside buffer control instruction)、高速缓存控制指令、屏障指令以及存储器加载和存储指令。
每个存储器通信执行引擎140被启用以与其它存储器通信执行引擎分离和并行地执行完整存储器通信指令。存储器通信执行引擎实施被优化用于存储器通信指令并发吞吐量的可缩放存储器事务处理器。存储器通信控制器106支持多个存储器通信执行引擎140,所有这些存储器通信执行引擎并发运行用于同时执行多个存储器通信指令。新存储器通信指令被存储器通信控制器106分配给存储器通信引擎140,并且存储器通信执行引擎140可以同时接受多个响应事件。在本例中,所有存储器通信执行引擎140相同。因此通过缩放存储器通信执行引擎140的数目,来实施对于可以被存储器通信控制器106同时处置的存储器通信指令数目的缩放。
在图3的NOC102中,每个网络接口控制器108被启用为将通信指令从命令格式转换成用于通过路由器110在IP块104之间传输的网络分组格式。通信指令可以在命令格式中被IP块104制定或者被存储器通信控制器106制定并且在命令格式中提供给网络接口控制器108。命令格式可以是本机格式,该本机格式符合IP块104和存储器通信控制器106的架构寄存器文件。网络分组格式通常是通过网络的 路由器110传输而需要的格式。每个这样的消息由一个或者多个网络分组组成。在网络接口控制器中从命令格式转换成分组格式的这样的通信指令的示例包括在IP块与存储器之间的存储器加载指令和存储器存储指令。这样的通信指令也可以包括如下通信指令,这些通信指令在IP块之中发送携带数据和指令的消息,这些指令用于在并行应用中和在流水线化的应用中在IP块之中处理该数据。
在图的NOC102中,每个IP块被启用为通过IP块的存储器通信控制器向和从存储器发送基于存储器地址的通信,然后也通过它的网络接口控制器向网络发送基于存储器地址的通信。基于存储器地址的通信是IP块的存储器通信控制器的存储器通信执行引擎执行的存储器访问指令、比如加载指令或者存储指令。这样的基于存储器地址的通信通常始发于IP块、在命令格式中被制定并且被交接到存储器通信控制器以用于执行。
用消息流量执行许多基于存储器地址的通信,因为任何待访问的存储器可以位于物理存储器地址空间中别处、片上或者片外、直接附着到在NOC中的任何存储器通信控制器或者最终通过NOC的任何块来访问——无论任何特定的基于存储器地址的通信始发于哪个IP块。因此,在NOC102中,用消息流量执行的所有基于存储器地址的通信从存储器通信控制器向关联网络接口控制器传递,以用于从命令格式转换成分组格式并且在消息中通过网络传输。在转换成分组格式时,网络接口控制器也根据基于存储器地址的通信将访问的一个或者多个存储器地址标识用于分组的网络地址。用存储器地址对基于存储器地址的消息寻址。每个存储器地址被网络接口控制器映射到网络地址、通常为负责某个物理存储器地址范围的存储器通信控制器的网络位置。存储器通信控制器106的网络位置自然地也是该存储器通信控制器的关联路由器110、网络接口控制器108和IP块104的网络位置。在每个网络接口控制器内的指令转换逻辑150能够将存储器地址转换成网络地址,以用于通过NOC的路由器传输基于存储器地址的通信。
在从网络的路由器110接收消息流量时,每个网络接口控制器108 针对存储器指令检查每个分组。包含存储器指令的每个分组被交给与接收网络接口控制器关联的存储器通信控制器106,该存储器通信控制器在向IP块发送分组的其余净荷用于进一步处理之前执行存储器指令。以这一方式,存储器内容总是在IP块开始执行依赖于特定存储器内容的来自消息的指令之前被预备为支持IP块的数据处理。
在图3的NOC102中,每个IP块104被启用为绕过它的存储器通信控制器106并且通过IP块的网络接口控制器108向网络直接发送IP块间、网络寻址的通信146。网络寻址的通信是被网络地址引向另一IP块的消息。如本领域技术人员将想到的那样,这样的消息在流水线化的应用中传输工作数据、在SIMD应用中在IP块之中传输用于单个程序处理的多个数据、以此类推。这样的消息与基于存储器地址的通信不同在于它们从开始就是被始发IP块进行网络寻址的,该始发IP块知道消息将通过NOC的路由器被引向的网络地址。这样的网络寻址的通信在命令格式中被IP块通过I/O功能136直接传递到IP块的网络接口控制器、然后被网络接口控制器转换成分组格式并且通过NOC的路由器传输到另一IP块。这样的网络寻址的通信146是双向的,从而根据它们在任何特定应用中的使用潜在地向以及从NOC的每个IP块继续。然而每个网络接口控制器被启用为既向关联路由器发送又从关联路由器接收这样的通信,并且每个网络接口控制器被启用为直接既向关联IP块发送又向关联IP块接收这样的通信从而绕过关联存储器通信控制器106。
在图3的示例中的每个网络接口控制器108也被启用为在网络上实施虚拟信道从而按照类型表征网络分组。每个网络接口控制器108包括虚拟信道实施逻辑148,该虚拟信道实施逻辑按照类型对每个通信指令分类,并且在以分组形式向路由器110转交指令以用于在NOC上传输之前,在网络分组格式的字段中记录指令的类型。通信指令类型的示例包括IP块间、基于网络地址的消息、请求消息、对请求消息的响应、引向高速缓存的无效消息;存储器加载和存储消息;以及对存储器加载消息的响应等。
在图3的示例中的每个路由器110包括路由逻辑152、虚拟信道控制逻辑154和虚拟信道缓冲器156。通常实施路由逻辑为同步和异步逻辑的网络,该同步和异步逻辑网络实施用于在路由器110、链路118和在路由器之中的总线接线形成的网络中的数据通信的数据通信协议栈。路由逻辑152包括本领域技术人员可以在片外网络中与路由表关联的功能,路由表在至少一些实施例中视为对于在NOC中使用而言太缓慢和繁琐。实施为同步和异步逻辑网络的路由逻辑可以被配置为使路由判决如单个时钟周期一样快。在本例中的路由逻辑通过选择用于转发在路由器中接收的每个分组来路由分组。每个分组包含分组将被路由到的网络地址。
在以上描述基于存储器地址的通信时,每个存储器地址被描述为被网络控制器映射到网络地址、存储器通信控制器的网络位置。存储器通信控制器106的网络位置自然地也是该存储器通信控制器的关联路由器110、网络接口控制器108和IP块104的网络位置。因此在IP块间或者基于网络地址的通信中,应用级数据处理通常也将网络地址视为IP块在NOC的路由器、链路和总线接线形成的网络内的位置。图2图示这样的网络的一个阻止是行和列的网格,其中每个网络地址可以例如被实施为用于网格的关联路由器、IP块、存储器通信控制器和网络接口控制器的每个集合的唯一标识符或者每个这样的集合在网格中的x、y坐标。
在图3的NOC102中,每个路由器110实施两个或者更多虚拟通信信道,其中每个虚拟通信信道按照通信类型来表征。通信指令类型、因此虚拟信道类型包括以上提到的那些类型:IP块间、基于网络地址的消息、请求消息、对请求消息的响应、引向高速缓存的无效消息;存储器加载和存储消息;对存储器加载消息的响应等。在支持虚拟信道时,在图3的示例中的每个路由器110也包括虚拟信道控制逻辑154和虚拟信道缓冲器156。虚拟信道控制逻辑154针对它的指派的通信类型检查每个接收的分组,并且将每个分组放置于用于该通信类型的外传虚拟信道缓冲器中用于通过端口向在NOC上的邻近路由器传 输。
每个虚拟信道缓冲器156具有有限存储空间。在短时间段内接收许多分组时,虚拟信道缓冲器可能填满——从而不能在缓冲器中放入更多分组。在其它协议中,将丢弃在缓冲器充满的虚拟信道上到达的分组。然而在本例轴杆的每个虚拟信道缓冲器156用总线接线的控制信号被启用为通过虚拟信道控制逻辑建议周围路由器中止在虚拟信道中的传输、也就是中止传输特定通信类型的分组。在这样中止一个虚拟信道时,所有其它虚拟信道未受影响——并且可以继续以完全容量进行操作。控制器信号通过每个路由器一直被接线回到每个路由器的关联网络接口控制器108。每个网络接口控制器被配置为在接收这样的信号时拒绝从她的关联存储器通信控制器106或者从它的关联IP块104接受用于中止的虚拟信道的通信指令。以这一方式,虚拟信道的中止影响实施虚拟信道的所有硬件一直回到始发IP块。
中止在虚拟信道中的分组传输的一个效果是从未丢弃分组。在路由器遇到其中可能在某个不可靠协议、如比如网际协议中丢弃分组的情形时,在图3的示例中的路由器可以通过它们的虚拟信道缓冲器156和它们的虚拟信道控制逻辑154中止分组在虚拟信道中的所有传输直至缓冲器空间再次可用从而消除对丢弃分组的任何需要。图3的NOC因此可以用极为精简的硬件层实施高度地可靠的网络通信协议。
图3的示例NOC也可以被配置为维护在片上与片外存储器高速缓存之间的高速缓存相干性(coherency)。每个NOC可以支持各自按照相同下层存储器地址空间操作的多个高速缓存。例如高速缓存可以被IP块、存储器通信控制器或者在NOC外部的高速缓存控制器控制。在图2的示例中的片上存储器114、116中的任一片上存储器也可以被实施为片上高速缓存,并且在本发明的范围内,也可以片外实施高速缓存存储器。
图3中所示每个路由器110包括五个端口、即通过总线接线118连接到其它路由器的四个端口158A-D以及通过网络接口控制器108和存储器通信控制器106将每个路由器连接到它的关联IP块104的 第五端口160。如从图2和3中的示例可见,NOC102的路由器110和链路118形成具有垂直和水平链路的网格网络,这些链路连接每个路由器中的垂直和水平端口。例如在图3的示例中,端口158A、158C和160称为垂直端口,并且端口158B和158D称为水平端口。
图4接着用另一方式图示实施为处理单元的与本发明一致的IP块104的一个示例实现方式,该处理单元被分割成发布或者指令单元(IU)162、执行单元(XU)164和辅助执行单元(AXU)166。在所示实现方式中,IU162包括从L1指令高速缓存(iCACHE)170接收指令的多个指令缓冲器168。每个指令缓冲器168专用于多个、例如四个对称多线程(SMT)化的硬件线程之一。有效到实际翻译单元(iERAT)172耦合到iCACHE170,并且用来将来自多个线程取读定序器174的指令取读请求翻译成用于从更低级存储器取读指令的实际地址。每个线程取读定序器174专用于特定硬件线程并且用来保证将被关联线程执行的指令被取读到iCACHE中用于向适当执行单元派发。也如图4中所示,被取读到指令缓冲器168中的指令也可以被分支(branch)预测逻辑176监视,该分支预测逻辑向每个线程取读定序器174提供提示以最小化在执行线程时的分支所产生的指令高速缓存未命中。
IU162也包括依赖性/发布逻辑块178,该依赖性/发布逻辑块专用于每个硬件线程,并且被配置为解析依赖性并且控制从指令缓冲器168向XU164发布指令。此外,在所示实施例中,在AXU166中提供分离依赖性/发布逻辑180,因此使分离指令能够被不同线程并发发布到XU164和AXU166。在一个可选实施例中,逻辑180可以被设置于IU162中或者可以被完全省略,从而逻辑178向AXU166发布指令。
实施XU164为定点执行单元,该定点执行单元包括耦合到定点逻辑184、分支逻辑186和加载/存储逻辑188的通用寄存器(GPR)182的集合。加载/存储逻辑188耦合到L1数据高速缓存(dCACHE)190,而作用于dERAT逻辑192提供的实际翻译。XU164可以被配 置为实施实际上任何指令集、例如32b或者64b PowerPC指令集的全部或者部分。
AXU166作为与一个或者多个执行块194一起包括专用依赖性/发布逻辑180的辅助执行单元操作。AXU166可以包括任何数目的执行块并且可以实施实际上任何类型的执行单元、例如浮点单元或者一个或者多个专用的执行单元,比如加密/解密单元、协同处理器、矢量处理单元、图形处理单元、XML处理单元等。在所示实施例中,AXU166包括对于XU164的高速辅助接口,以例如支持在AXU架构化的状态与XU架构化的状态之间的直接移动。
可以经由耦合到NOC102的网络接口控制器108用以上与图2结合讨论的方式管理与IP块104的通信。可以与基于消息的通信一起提供例如用于访问L2高速缓存存储器的基于地址的通信。例如每个IP块104可以包括专用输入框和/或输出框以便处置在IP块之间的节点间通信。
可以在以上与图1-4结合描述的硬件和软件环境内实施本发明的实施例。然而受益于本公开内容的本领域普通技术人员将理解可以在多个不同环境中实施本发明并且可以对前述硬件和软件实施例进行其它修改而未脱离本发明的精神实质和范围。这样,本发明不限于这里公开的特定硬件和软件环境。
扩展寄存器寻址
处理器指令具有由组成指令的数据中的唯一位模式代表的用于每个操作类型的操作码。由于现代处理器芯中的寄存器数目不断扩展,在指令编码中存在的地址宽度继续变宽从而占用宝贵指令编码空间用于添加新指令解码。此外,通常希望所有指令在微处理器架构中具有相同固定宽度。引入可变宽度的指令经常引起将对性能有负面影响的大量设计复杂性。
例如如果希望向指令集架构、比如现有POWER(增强RISC性能优化)指令集架构添加新指令类以支持128个寄存器,则在新指令 中的每个地址宽度将等于7。此外,如果新指令中的一些新指令需要对三个源寄存器(VA,VB,VC)和一个目标寄存器(VT)寻址,则将需要28位、即用于源操作数地址的21位和用于目标操作数地址的7位。这样,将仅存在可用于任何主操作码和/或辅操作码的共计四位。相似地,例如如果操作数地址宽度等于5位,每位用于共计20位,使得12位可以用于主操作码和辅操作码,则仅32(即25)个寄存器将是可寻址的。
例如可能希望新指令类包括执行加法、减法、乘法、融合的乘法-加法运算、除法、求幂、三角运算、比较运算和其它运算的浮点指令类型。一种用于解决这一情形的常规方式将是使三源运算有破坏性,这意味着目标和一个源地址将隐含地相等,从而将无需上例中的一个地址字段从而释放空间用于附加扩展操作码。然而这些经常让编译员和软件工程师感觉不便,因为经常需要在暂时寄存器中分开保存将被有破坏性的运算改写的源数据的额外副本,这除了使用宝贵暂时寄存器空间之外还可能具有潜在性能问题。
指令集架构为何力求大量寄存器的一个主要原因是使得循环可以被“展开”,以最小化分支误预测性能惩罚并且也可以在某些情况下用来最小化依赖指令的性能影响。需要大量寄存器以完成数据的“溢出和填充”而不在循环中重用相同寄存器。考虑以下示例等式(1),其中用许多迭代为sin(x)计算长泰勒级数近似:
下表I例如举例说明第一循环展开,而下表II举例说明循环不开的结果两次,其中寄存器f1至f10用于近似的最高有效部分,并且f11至f20用于最低有效部分(始于x13/13!项),并且最后将它们一起求和:
表I:用于泰勒级数近似的指令序列
表II:具有两次循环展开的指令序列
注意为了最小化分支误预测惩罚、循环和其它性能原因,将希望通常展开多于两次,但是为了简洁,以上所示示例仅为不开两次。注意为了展开循环4次,将需要近似40个寄存器,这将推动许多架构的限制。在上例中也注意有具有相同主操作码的长串仅浮点指令。也将连接其它类型的算法受益于循环展开和大型寄存器文件、例如栅格化(rasterization)、快速傅里叶变换等。
与本发明一致的实施例利用专门化的硬件控制逻辑,该硬件控制 逻辑使用使用在主寄存器文件的寄存器子集存储的数据作为指向扩展寄存器文件的扩展寄存器的指针。在包括操作数地址——该操作数地址引用子集的寄存器——的指针被解码用于执行时,控制逻辑使用在操作数地址引用的寄存器存储的数据作为指针。控制逻辑使执行指令的执行逻辑在执行指令时从被指向的扩展寄存器获取数据和/或向被指向的扩展寄存器写入数据。
现在转向图5,这一幅图图示适合用于实施与本发明的实施例一致的可扩展寄存器寻址的示例数据处理系统200的部件。如图所示,数据处理系统200包括用于与获取的数据执行指令以生成可以向存储器存储的写入数据的执行逻辑202。与本发明的实施例一致主寄存器文件204和扩展寄存器文件206可以通过复用逻辑208连接到执行单元202,使得数据可以被输入到执行逻辑202作为与指令的操作数对应的源数据,以用于由执行逻辑202利用指令来执行。指令解码逻辑210、依赖性/发布逻辑212和执行单元控制器214连接到执行逻辑202用于解码和发布指令到执行逻辑202用于由此执行。与本发明的实施例一致,控制逻辑216可以连接到执行逻辑202、指令解码逻辑210、依赖性/发布逻辑212、执行单元控制器214、主寄存器文件204和/或扩展寄存器文件。
控制逻辑216可以被配置为在指令被指令解码逻辑210解码时从指令解码逻辑210接收操作数地址。一般而言,控制逻辑216被配置为确定每个指令的操作数地址是否引用主寄存器204的、被配置为存储指向扩展寄存器文件206的扩展寄存器的指针的寄存器。在这一示例实施例中,控制逻辑216包括最小地址值寄存器218(这里也称为“最小值寄存器”)和最大地址值寄存器220(这里也称为“最大值寄存器”),该两个地址值寄存器可以被设置为由此定义与主寄存器文件204的寄存器——这些寄存器被配置为存储指向扩展寄存器文件206的扩展寄存器——对应的地址范围。
例如如果主寄存器文件包括与32个寄存器地址(即f0-f31)对应的32个寄存器,则最小值/最大值寄存器218、220可以存储如下值, 这些值定义与主寄存器文件204的寄存器的子集对应的地址范围,这些寄存器被配置为存储指向扩展寄存器文件206的扩展寄存器的指针。例如如果主寄存器文件的32寄存器的一半将用于存储指向扩展寄存器的指针,则最小值寄存器218可以存储寄存器地址f16(即与浮点值‘16’等效的二进制值),并且最大值寄存器220可以存储寄存器地址f31(即与浮点值‘31’等效的二进制值),使得主寄存器文件204的与地址范围f16至f31对应的寄存器被标识为存储指向扩展寄存器文件206的寄存器的指针。
尽管在图5中,控制逻辑216可以访问存储最小地址值218和最大地址值220的寄存器,但是可以配置与本发明的实施例一致的其它配置。例如控制逻辑216可以访问存储位图的寄存器,该位图标识主寄存器文件204的、被配置为用作指向扩展寄存器文件206的扩展寄存器的指针的寄存器。另外,在主寄存器文件204的寄存器中存储的将用作指针的数据值可以被在指令流中的在前指令设置。此外,最小值寄存器218和最大值寄存器220可以相似地被在指令流中的指令设置,使得被配置为存储指向扩展寄存器文件的指针的子集的寄存器数目可以在执行指令期间被软件调整。也在一些实施例中,可以固定最小值或者最大值,例如使得可以需要单个寄存器(例如使得范围可以在寄存器r0开始并且在最大值寄存器中标识的寄存器结束)。
现在转向图6,这一幅图提供流程图250,该流程图图示与本发明的实施例一致的可以被与本发明的实施例一致的图5的数据处理系统执行的用于从扩展寄存器文件有选择地获取数据的操作序列。指令可以被接收和解码(块252),并且数据处理系统的控制逻辑可以确定指令的操作数的寄存器地址(即操作数地址)(块254)。控制逻辑确定指令的操作数地址中的任何操作数地址是否引用主寄存器文件的被配置为存储指针的寄存器(块256)。如先前讨论的那样,控制逻辑可以访问寄存器,这些寄存器存储与被配置为存储指针的寄存器地址的范围对应的最小和最大寄存器地址。在其它实施例中,控制逻辑可以访问存储位图的寄存器,该位图指示主寄存器文件的存储指 针的寄存器。在其它实施例中,确定操作数地址是否引用存储指针的寄存器可以至少部分基于指令。例如仅特定类型的指令可以利用扩展寄存器文件,并且响应于对特定类型的指令解码,控制逻辑可以确定操作数地址是否引用存储指向扩展寄存器的指针的寄存器。本发明的其它实施例可以利用其它用于标识主寄存器文件的、被配置为存储指向扩展寄存器的指针的寄存器的方法。
响应于确定指令的操作数地址引用的寄存器存储有指向数据处理系统的扩展寄存器文件的扩展寄存器的指针(块256的“是”分支),控制逻辑可以读取在与操作数地址对应的寄存器存储的数据值(块258)并且使用数据值作为指向扩展寄存器文件的扩展寄存器的指针(块260)。可以读取(块262)并且向执行逻辑传达在与指针对应的扩展寄存器地址的数据值作为用于指令的源数据(块264)。回到块256,如果指令的操作数地址未对应于主寄存器文件的被配置为存储指针的寄存器(块256的“否”分支),则控制逻辑可以读取在操作数地址引用的每个寄存器存储的数据值(块266),并且可以向执行逻辑传达数据值作为用于指令的源数据(块268)。因此,如流程图250所示,基于指令的操作数的地址,可以从主寄存器文件或者扩展寄存器文件有选择地获取数据。
另外,通过配置主寄存器文件的寄存器子集以存储指向扩展寄存器文件的扩展寄存器,与其中操作数的位宽度一般对应于可以被指令引用的寄存器数目的常规系统相比,可以最小化指令的用于操作数的位数。例如图7和8图示用于非破坏性32位指令的示例指令布局300、320。如图7中所示,示例指令布局300包括主操作码部分302——该主操作码部分包括4位、目标操作码部分(VT)304——该VT包括存储用于目标寄存器的操作数地址的7位——以及三个源操作码部分(VA,VB,VC)306-310——这些源操作码部分包括存储用于源寄存器的操作数地址的7位。图7的指令布局300图示可以用来引用128个寄存器的可能指令布局,因为每个操作数部分304-310包括7位(即27)。然而由于操作数304-310的位宽度,仅4位可以用于操作数、 因此限制可能操作数数目,这又限制可以使用这一指令布局300来执行的不同操作的可能数目为16(即24)。
对照而言,图8提供指令布局320,该指令布局包括6位的主操作码部分322、5位的目标操作数部分(VT)、源操作数部分326-330——各自(VA,VB,VC)包括5位,以及包括6位的辅操作数部分332。一般而言,如果操作数地址在指令中为n位,则主寄存器文件可以包括2n个寄存器。因此,在这一指令布局320中,可以引用的寄存器数目限于32(即25),但是用于操作码的位数为12位,使得可以使用指令布局来执行的不同操作的数目与图7的指令布局300比较显著更大。另外,与本发明的实施例一致,尽管指令仅可以引用32个不同寄存器,但是通过配置32个寄存器的子集以存储指向扩展寄存器文件的扩展寄存器的指针,可以实现与更大可能寄存器空间关联的益处而限制指令的用于操作数地址的位数。另外,可以引用的不同扩展寄存器的数目对应于可以在主寄存器文件的寄存器存储的位数。图8提供示例指令布局320;然而本发明的实施例不限于指令布局320,并且本发明的实施例甚至也不限于32位架构。
现在转向图9,这一幅图提供本发明的一个示例实施例。该示例包括三个指令350-354,这些指令包括引用主寄存器文件358的寄存器(f0-f31)356a-d的操作数地址。控制逻辑360连接到主寄存器文件358和包括多个扩展寄存器(f0-f2n)364a-364c的扩展寄存器文件362。如图所示,如果每个寄存器356a-d被配置为存储m位,则在扩展寄存器文件362中的可能扩展寄存器364a-c的数目可以是2m。例如如果每个寄存器35a-d存储10位数据,则扩展寄存器文件362可以被配置最多1024个扩展寄存器。在本例中,控制逻辑360与最小地址值寄存器(最小值寄存器)366和最大地址值寄存器(最大值寄存器)368关联。另外,在这一示例中,专用于操作数地址的位宽度是5位,使得32个寄存器356a-356d可以被指令350-354引用,这就是为何主寄存器文件358包括寄存器f0-f31356a-356d。最小值寄存器366和最大值寄存器368存储最小(即15)和最大(即31)地址值以 由此定义主寄存器文件358的寄存器范围(即f15至f31),这些寄存器存储指向扩展寄存器文件362的扩展寄存器364a-c的指针。在从主寄存器文件358或者扩展寄存器文件362向执行逻辑有选择地获取数据用于与指令350-354执行时,控制逻辑360可以通过连接的复用逻辑370从主寄存器文件358或者扩展寄存器文件362传达数据。此外,可以向控制逻辑360输入执行指令所产生的数据(即写入数据),使得控制逻辑360可以使写入数据根据指令的目标操作数地址来存储。
现在参照该示例中的第一指令(fadd,f0,f1,f2)350,响应于对第一指令解码,控制逻辑360可以确定第一指令的任何操作数地址(即f0、f1和/或f2)是否引用主寄存器文件358的被配置为存储指针的寄存器356a-d。在本例中,控制逻辑360与定义地址范围(即15-31)的最小值和最大值寄存器366、368关联,该地址值范围对应于被配置为存储指针的寄存器子集,其中定义范围为f15-f31。由于第一指令的操作数地址都未在范围f15-f31内,所以未从扩展寄存器文件362获取数据。使用在对应寄存器(f1,f2)356b、356c中存储的示例值(对于f1为10;对于f2为15),将从对应寄存器f1356b和f2356c向执行逻辑传达数据值10和15作为源数据以执行f1和f2的浮点加法并且在f0(即目标寄存器)中存储结果。因此,指令可以引起浮点加法(10+15),并且将在f0存储结果(即f1+f2=10+15=25=>f0)
第二指令(fadd,f0,f1,f31)352包括在最小值寄存器366和最大值寄存器368定义的范围f15-f31内的源操作数地址。因此,响应于对第二指令352解码,控制逻辑360可以确定第二指令352的操作数地址f31引用在范围f15-f31内的寄存器(即f31)。响应于确定第二指令引用被配置成为指向扩展寄存器364a-364c的指针的寄存器,读取和使用来自引用的主寄存器的数据值作为指向特定扩展寄存器364a-c的指针。在本例中,寄存器f31存储用作指向扩展寄存器f60364b的指针的数据值60。读取并且向执行逻辑传达在扩展寄存器f60364b存储的数据值(在本例中为值40)用于与第二指令352执行, 并且可以在主寄存器文件358的f0寄存器356a存储结果。因此关于第二指令,执行在主寄存器文件358的f1(10)的数据值和在扩展寄存器文件362的f60(40)的数据值的浮点加法,并且在f0存储结果(50)(即写入数据)(即f1+f31=10+40=50=>f0)。
第三指令(fadd,f31,f1,f2)354包括在范围f15-f31内的目标操作数地址。因此响应于对指令解码,控制逻辑确定源操作数地址f1和f2未在范围f15-f31内,并且向执行逻辑传达在f1和f2存储的数据值作为源数据。然而在将存储所得写入数据时,控制逻辑360使用在引用的寄存器f31存储的数据值(60)作为指向扩展寄存器文件362的扩展寄存器(f60)的指针(即f1+f2=10+15=25=>扩展寄存器f60)。因此,在图9中提供的示例举例说明了控制逻辑360可以基于指令的操作数地址执行的操作。
与本发明的实施例一致,控制逻辑和扩展寄存器文件可以连接到执行流水线,使得扩展寄存器空间可以可由执行流水线的执行逻辑访问而限制指令中的操作数地址的位宽度。因此,可以配置本发明的实施例,使得可以对扩展寄存器寻址而最大化指令中的操作数的位宽度,使得除了与最大化用于指令中的主操作数/辅操作数的位关联的益处之外,还实现与更大寄存器空间关联的益处。此外,可以用旧式代码实施本发明的实施例而未重新编译这样的代码。因此,可以实现与大型寄存器文件对应的性能益处而又释放宝贵操作码空间用于增加不同类型的指令的数目。作为一个示例,可以多次展开并且使用扩展寄存器文件362的扩展寄存器来实施以上与表I和II结合讨论的前述泰勒级数近似代码。
公开的本发明因此允许软件读取和向更大寄存器空间写入数据而最小化在指令中用来对这样的寄存器空间寻址的位数。可以对公开的实施例进行各种附加修改而未脱离本发明的精神实质和范围。因此,本发明存在于所附权利要求中。

Claims (22)

1.一种用于执行指令的方法,包括:
响应于对引用操作数地址的指令解码,确定所述操作数地址是否引用在主寄存器文件中的寄存器子集之中的寄存器;
响应于确定所述操作数地址引用了在所述主寄存器文件中的所述寄存器子集之中的寄存器,使用在所引用的寄存器中存储的、对扩展寄存器文件的扩展寄存器进行引用的指针,来从所述扩展寄存器有选择地获取数据;以及
使用有选择地获取的所述数据来执行所述指令。
2.根据权利要求1所述的方法,其中确定所述操作数地址引用在主寄存器文件中的寄存器子集之中的寄存器包括:
确定所述操作数地址是否在定义的地址范围内。
3.根据权利要求2所述的方法,其中最小地址寄存器存储指示所述定义的地址范围的最小地址的值,并且最大地址寄存器存储指示所述定义的地址范围的最大地址的值。
4.根据权利要求1所述的方法,其中使用在所述引用的寄存器中存储的所述指针来从所述扩展寄存器文件的所述扩展寄存器有选择地获取数据包括:
从所述引用的寄存器取回第一数据值;以及
基于所述第一数据值从所述扩展寄存器取回第二数据值;以及
向执行逻辑传达所述第二数据值作为源数据。
5.根据权利要求1所述的方法,还包括:
响应于确定所述操作数地址引用未在所述主寄存器文件中的所述寄存器子集之中的寄存器,从所述引用的寄存器有选择地获取数据。
6.根据权利要求1所述的方法,还包括:
在所述操作数地址对应于目标操作数地址并且所述引用的寄存器在所述主寄存器文件中的所述寄存器子集之中时,使用在所引用的寄存器中存储的、对所述扩展寄存器文件的目标扩展寄存器进行引用的所述指针,来向所述目标扩展寄存器有选择地写入数据。
7.根据权利要求1所述的方法,其中所述指令包括n位的操作数地址,并且所述主寄存器文件包括2n个寄存器。
8.根据权利要求7所述的方法,其中每个主寄存器存储m位数据,并且所述扩展寄存器文件包括2m个扩展寄存器。
9.根据权利要求1所述的方法,其中所述指令是32位指令并且包括三个5位源操作数地址和一个5位目标操作数地址,其中所述主寄存器文件包括各自为10位的32个寄存器,并且所述扩展寄存器文件包括1024个扩展寄存器。
10.根据权利要求1所述的方法,其中确定所述操作数地址是否引用在主寄存器文件中的寄存器子集之中的寄存器包括:
访问在寄存器中存储的位图,所述位图指示所述主寄存器文件的每个寄存器是否为所述子集的寄存器。
11.根据权利要求1所述的方法,其中确定所述操作数地址是否引用在所述主寄存器文件中的所述寄存器子集之中的寄存器包括:
分析所述指令的操作码以确定所述指令是否为特定类型,其中确定所述操作数地址是否引用在所述主寄存器文件中的所述寄存器子集之中的寄存器是基于所述指令是否为所述特定类型。
12.一种电路布置,包括:
执行逻辑,被配置为执行指令;
扩展寄存器文件,包括多个扩展寄存器;
主寄存器文件,包括多个寄存器,其中所述多个寄存器包括第一子集和第二子集,;以及
控制逻辑,被配置为:
响应于引用在所述第一子集中的第一寄存器的第一指令,使所述执行逻辑在执行所述第一指令时,使用在由存储在所述第一寄存器中的指针所引用的扩展寄存器中存储的数据作为源数据。
13.根据权利要求12所述的电路布置,其中所述控制逻辑还被配置为:
响应于引用在所述第二子集中的第二寄存器的第二指令,使所述执行逻辑在执行所述第二指令时使用在所述第二子集中存储的数据作为源数据。
14.根据权利要求12所述的电路布置,其中所述控制逻辑还被配置为:
至少部分基于引用所述第一寄存器的所述第一指令的操作数地址是否在预定义的地址范围内来确定所述第一寄存器是否在所述第一子集中。
15.根据权利要求14所述的电路布置,还包括:
最小地址寄存器,被配置为存储指示所述定义的地址范围的最小地址的值;以及
最大地址寄存器,被配置为存储指示所述定义的地址范围的最大地址的值。
16.根据权利要求12所述的电路布置,其中所述控制逻辑还被配置为:
从所述第一寄存器取回第一数据值;
基于所述第一数据值从所述扩展寄存器取回第二数据值;以及
向所述执行逻辑传达所述第二数据值作为源数据。
17.根据权利要求12所述的电路布置,其中所述控制逻辑被配置为:
响应于引用所述第一子集中的第三寄存器作为目标操作数地址的第三指令,使所述执行逻辑将执行所述第三指令所生成的数据写入到由所述第三寄存器中存储的指针所引用的目标扩展寄存器中。
18.根据权利要求12所述的电路布置,其中所述第一指令包括n位的操作数地址,并且所述主寄存器文件包括2n个寄存器。
19.根据权利要求18所述的电路布置,其中所述主寄存器文件的每个寄存器存储m位的数据,并且所述扩展寄存器文件包括2m个扩展寄存器。
20.根据权利要求12所述的电路布置,其中所述第一指令是32位指令并且包括三个5位源操作数地址和一个5位目标操作数地址,其中所述主寄存器文件包括各自为10位的32个寄存器,并且所述扩展寄存器文件包括1024个扩展寄存器。
21.根据权利要求12所述的电路布置,还包括:
寄存器,被配置为存储指示所述主寄存器文件的每个寄存器是否属于第一子集的位图,
其中所述控制逻辑还被配置为至少部分基于所述位图确定所述第一寄存器是否属于所述第一子集。
22.根据权利要求12所述的电路布置,其中所述控制逻辑还被配置为通过至少部分基于所述指令的操作码确定所述指令是否为特定类型,来确定所述第一寄存器是否属于所述第一子集,并且其中确定所述第一寄存器是否属于所述第一子集至少部分基于所述指令是否为所述特定类型。
CN201410347829.9A 2013-07-22 2014-07-21 具有可扩展寄存器寻址的用于指令集架构 Expired - Fee Related CN104331267B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/947,734 2013-07-22
US13/947,734 US9507599B2 (en) 2013-07-22 2013-07-22 Instruction set architecture with extensible register addressing

Publications (2)

Publication Number Publication Date
CN104331267A CN104331267A (zh) 2015-02-04
CN104331267B true CN104331267B (zh) 2017-04-12

Family

ID=52344579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410347829.9A Expired - Fee Related CN104331267B (zh) 2013-07-22 2014-07-21 具有可扩展寄存器寻址的用于指令集架构

Country Status (2)

Country Link
US (1) US9507599B2 (zh)
CN (1) CN104331267B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
JP6307975B2 (ja) * 2014-03-28 2018-04-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
CN106454353A (zh) * 2015-08-07 2017-02-22 辉达公司 视频编码器、视频编码系统和视频编码方法
US10142258B2 (en) * 2016-04-08 2018-11-27 Advanced Micro Devices, Inc. Methods and apparatus for processing in a network on chip (NOC)
US20170371662A1 (en) * 2016-06-23 2017-12-28 Intel Corporation Extension of register files for local processing of data in computing environments
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
CN111919205B (zh) * 2018-03-31 2024-04-12 美光科技公司 多线程自调度可重新配置计算架构的循环线程顺序执行控制
US11126439B2 (en) * 2019-11-15 2021-09-21 Apple Inc. SIMD operand permutation with selection from among multiple registers
US11398980B2 (en) 2019-11-19 2022-07-26 Advanced Micro Devices, Inc. Packet router with virtual channel hop buffer control
CN111061510B (zh) * 2019-12-12 2021-01-05 湖南毂梁微电子有限公司 一种可扩展的asip结构平台及指令处理方法
CN111459546B (zh) * 2020-03-30 2023-04-18 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法
US11630668B1 (en) * 2021-11-18 2023-04-18 Nxp B.V. Processor with smart cache in place of register file for providing operands
CN116185502B (zh) * 2023-02-16 2023-11-07 南京金阵微电子技术有限公司 流水线处理器及电子设备
CN116700792B (zh) * 2023-06-09 2024-03-08 合芯科技有限公司 一种指令流寄存器的映射方法、结构、存储介质及芯片

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052766A (en) * 1998-07-07 2000-04-18 Lucent Technologies Inc. Pointer register indirectly addressing a second register in the processor core of a digital processor
CN1477520A (zh) * 2002-08-21 2004-02-25 先进数字芯片株式会社 具有扩展指令的中央处理器
CN101470599A (zh) * 2007-12-28 2009-07-01 富士通株式会社 处理单元

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680632A (en) 1992-12-24 1997-10-21 Motorola, Inc. Method for providing an extensible register in the first and second data processing systems
US6349380B1 (en) 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6651160B1 (en) 2000-09-01 2003-11-18 Mips Technologies, Inc. Register set extension for compressed instruction set
US20040049657A1 (en) 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052766A (en) * 1998-07-07 2000-04-18 Lucent Technologies Inc. Pointer register indirectly addressing a second register in the processor core of a digital processor
CN1477520A (zh) * 2002-08-21 2004-02-25 先进数字芯片株式会社 具有扩展指令的中央处理器
CN101470599A (zh) * 2007-12-28 2009-07-01 富士通株式会社 处理单元

Also Published As

Publication number Publication date
CN104331267A (zh) 2015-02-04
US9507599B2 (en) 2016-11-29
US20150026435A1 (en) 2015-01-22

Similar Documents

Publication Publication Date Title
CN104331267B (zh) 具有可扩展寄存器寻址的用于指令集架构
US9652239B2 (en) Instruction set architecture with opcode lookup using memory attribute
CN103870397B (zh) 数据处理系统中访问数据的方法以及电路安排
US8892851B2 (en) Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
JP6381541B2 (ja) データ処理システム中で命令を処理する方法、回路構成、集積回路デバイス、プログラム製品(リモート処理ノード中のアドレス変換データ構造を更新するための変換管理命令)
US9582277B2 (en) Indirect instruction predication
US10776117B2 (en) Instruction predication using unused datapath facilities
CN104331528B (zh) 具有低功率数字信号处理(dsp)模式的通用处理单元
US9195463B2 (en) Processing core with speculative register preprocessing in unused execution unit cycles
US8028153B2 (en) Data dependent instruction decode
US8984260B2 (en) Predecode logic autovectorizing a group of scalar instructions including result summing add instruction to a vector instruction for execution in vector unit with dot product adder
US20140229713A1 (en) Extensible execution unit interface architecture
US20130159676A1 (en) Instruction set architecture with extended register addressing
US20230114164A1 (en) Atomic handling for disaggregated 3d structured socs
JP2010040041A (ja) 1マイナス・ドット積の値を単一パスで計算する浮動小数点実行ユニット、ならびに関連する方法、装置、デバイス、およびプログラム

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
TR01 Transfer of patent right

Effective date of registration: 20171115

Address after: Grand Cayman, Cayman Islands

Patentee after: GLOBALFOUNDRIES INC.

Address before: American New York

Patentee before: Core USA second LLC

Effective date of registration: 20171115

Address after: American New York

Patentee after: Core USA second LLC

Address before: New York grams of Armand

Patentee before: International Business Machines Corp.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170412

Termination date: 20190721

CF01 Termination of patent right due to non-payment of annual fee