掌桥专利:专业的专利平台
掌桥专利
首页

用于数据通路的操作方法、计算装置及存储介质

文献发布时间:2024-04-18 20:01:23


用于数据通路的操作方法、计算装置及存储介质

技术领域

本公开的实施例涉及用于数据通路的操作方法、计算装置及存储介质。

背景技术

处理器(例如CPU)是计算机的核心部件,负责例如执行指令和处理数据。随着对例如执行指令和处理数据的越来越高的要求,高性能处理器应运而生。

高性能处理器能够快速处理大量数据和任务。它们通常具有更高的时钟速度和更多的核心,可以在更短的时间内完成更多的计算任务。这种类型的处理器通常用于高性能计算、游戏、视频编辑和其他需要大量计算的应用程序。高性能处理器通常需要更高的功耗。

发明内容

本公开的至少一实施例提供了一种用于数据通路的操作方法,包括:基于对对象指令进行解码而得到的提示信号,将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器,其中,标志信息用于指示寄存器的m位中对应域的n位是否为0,m、n为正整数,m>n;以及基于所赋值的标志信息生成时钟开关信号,以在执行对象指令的过程中控制数据通路中部分位对应的时钟的开关。

本公开的至少一实施例提供了一种计算装置,包括控制通路和数据通路,其中,控制通路包括:赋值单元,被配置为基于对对象指令进行解码而得到的提示信号,将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器,其中,标志信息用于指示寄存器的m位中对应域的n位是否为0,m、n为正整数,m>n;以及时钟开关信号生成单元,被配置为基于所赋值的标志信息生成时钟开关信号,以在执行对象指令的过程中控制数据通路中部分位对应的时钟的开关。

本公开的至少一实施例提供了一种计算装置,包括:一个或多个处理器;存储器,包括一个或多个计算机程序模块;其中,一个或多个计算机程序模块被存储在存储器中并被配置为由一个或多个处理器执行以实施如上所述的操作方法。

本公开的至少一实施例提供了一种非瞬时可读存储介质,其上存储有计算机可执行指令,其中,计算机可执行指令在被处理器执行时,以实施如上所述的操作方法。

附图说明

为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的附图作简单地介绍。明显地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1示出了示例性的超标量处理器的指令流水线的示意图;

图2示出了一种示例性CPU的示意图;

图3A示出了根据本公开的至少一实施例的用于数据通路的操作方法300的流程图;

图3B示出了根据本公开的至少一实施例的计算装置的示意图;

图4A示出了根据本公开的至少一实施例的native256数据通路时钟控制信号的示意图;

图4B示出了根据本公开的至少一实施例的native128数据通路时钟控制信号的示意图;

图5示出了根据本公开的至少一实施例的另一计算装置的示意图;

图6示出了根据本公开的至少一实施例的非瞬时可读存储介质的示意图。

具体实施方式

现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但应理解,不是想要将本公开限于描述的实施例,相反想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法、操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。

注意,接下来要介绍的示例仅是具体的示例,而不作为限制本公开的实施例必须为示出和描述的具体的外形、硬件、连接关系、操作、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本公开的构思来构造本说明书中未提到的更多实施例。

本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。

本公开中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。

下面对本公开使用的部分术语进行示例性解释。需要说明的是,这些术语的示例性解释仅是为便于理解本公开而在示例应用场景下的描述,不排除其通常含义并且可以扩展到其他相关联的应用场景或通用场景。

系统级芯片(System-on-a-Chip,SOC):也称片上系统,是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。

中央处理器(central processing unit,CPU):是一种能够执行计算机指令的微处理器,负责控制计算机的运行和数据处理。

微控制器(micro controller unit,MCU):是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。

数字信号处理器(digital signal processor,DSP):是由大规模或超大规模集成电路芯片组成的用来完成数字信号处理任务的处理器。

逻辑寄存器号(logic register number,LRN):是指在计算机中用于存储和处理例如逻辑运算结果的寄存器的编号。

物理寄存器文件(physical register file,PRF):又称物理寄存器堆,是CPU中多个寄存器组成的阵列,通常用于存储处理器中各个寄存器的物理位置和状态。

物理寄存器号(physical register number,PRN):是指在计算机中用于存储数据或指令的寄存器的编号。

单指令多数据(single instruction multipledata,SIMD):每个操作数中有多个数据元素构成,如128位中包含4个单精度浮点数元素。

XMM或XMM寄存器:x86架构中SSE,avx128,avx512vl.xmm指令集使用的寄存器LRN,存储128位数据。

YMM或YMM寄存器:x86架构中avx256,avx512vl.ymm指令集使用的LRN,存储256位数据。

ZMM或ZMM寄存器:x86架构中avx512指令集使用的LRN,存储512位数据。

Native128:CPU数据处理通路(也称为数据通路)宽度是128位,使用YMM的指令需要分两次执行。

Native256:CPU数据处理通路宽度是256位,使用YMM的指令一次即可执行完成,使用ZMM的指令需要分两次执行。

ZS(zero single)或ZS标志信息:置1时表示XMM LRN中存储的128位数值中高96位是0。

ZD(zero double)或ZD标志信息:置1时表示XMM LRN中存储的128位数值中高64位是0。

ZH(zero high128)或ZH标志信息:置1时表示YMM LRN中存储的256位数值中的高128位是0。

ZH256(zero high 256)或ZH256标志信息:置1时表示ZMM LRN中存储的512位数值中的高256位是0。

可以理解,示例性地,操作数是指要进行运算或操作的数据,操作数寄存器是用来存储这些数据的寄存器,而操作数寄存器LRN是该寄存器的编号。在指令的执行中,可以通过操作数寄存器LRN索引到相应的操作数寄存器,从而索引到相应的操作数。为了描述的方便,在不矛盾的情况下,本文的操作数、操作数寄存器以及操作数寄存器LRN不作语义上的区分并且可以指示相同的对象。但是可以理解的,上述术语可能指示不同的对象,但是本公开的各方面可以在经过或不经过修改的情况下适用于这些不同或差异中,而不超出本公开的保护范围。

低功耗技术是现代高性能CPU的基本技术,高性能CPU使用的超标量推测执行通常在数据通路中有多条数据通路处理部件同时做运算,是CPU功耗的一大来源。

超标量是指在一个周期内并行执行多条指令的方法,具有增加的指令级并行度。能够在一个周期内处理多条指令的处理器就被称为超标量处理器。超标量处理器在通常的标量(scalar)处理器的基础上增加额外的资源,创建多条流水线(pipeline),每条管线执行分配给自己的指令,以此来实现并行化。

图1示出了示例性的超标量处理器的指令流水线100的示意图。参见图1,流水线中的每一级可并行输入4条指令,例如指令1-4被并行处理,指令5-8被并行处理,指令9-12被并行处理。如图1所示的常规的标量流水线,每个时钟周期平均执行的指令的条数大于1,即它的指令级并行度大于1。

例如,超标量处理器还可以进一步支持乱序执行(out-of-order execution)。乱序执行是指CPU采用允许将多条指令不按程序规定的顺序分开发送给相应电路单元处理的技术。乱序执行涉及不少的算法,这些算法基本上都是以保留站为基础进行设计的。保留站的核心思想是把译码完成后的指令根据各自的指令种类送往各自的保留站中保存下来,如果该指令的所有操作数都已准备齐全,则可以开始进行乱序发射。

图2示出了一种示例性CPU 200的示意图。参见图1,CPU 200包括取指单元202、解码单元204、重命名单元206、顺序提交单元208、调度执行单元210以及物理寄存器堆220。

取指单元202可以从内存中读取指令并将其送到解码单元204。

解码单元204可以负责对指令进行解码,确定要执行的操作,以及操作所需的操作数。

重命名单元206(也称为寄存器重命名单元)可以处理指令中的寄存器,并将其重命名为物理寄存器,例如将指令中的寄存器编号重命名为实际的物理寄存器编号。重命名单元206中维护有架构寄存器映射表207,架构寄存器映射表207可以维护有指令中的寄存器编号与实际的物理寄存器编号之间的映射。

顺序提交单元208可以将指令按顺序提交执行。顺序提交单元208中维护有物理寄存器可用列表209,物理寄存器可用列表209可以维护有当前可用的物理寄存器。

调度执行单元210可以包括乱序调度单元212以及执行部件214。

乱序调度单元212可以通过重新排列指令的执行顺序来调度指令。

执行部件214是用于执行不同类型的运算的硬件单元,例如可以包括算术逻辑单元(ALU)215、乘法器(MUL)216以及除法器(DIV)217。算术逻辑单元215主要用于执行算术和逻辑操作,如加、减、乘、除、与、或、非等。乘法器216主要用于执行乘法操作。除法器217主要用于执行除法操作。

物理寄存器堆220可以用于存储处理器中的数据,例如用于保存指令中正在使用的寄存器值等。

在图2所示的CPU 200的实现中,指令经过乱序调度单元212调度出来后送到执行部件214中的ALU 215、MUL 216以及DIV 217中执行,执行部件214中数据通路有多级流水。另外,考虑到SIMD数据位宽很宽,整个执行部件214的数据通路会消耗大量的功耗。另外,考虑到乱序推测执行在需要刷新流水线将带来更大的功耗浪费。因此,降低数据通路的功耗对CPU低功耗设计至关重要。

示例性的数据通路中的功耗优化是基于native128的设计,当操作XMM指令目的操作数LRN的ZS、ZD是1时可以关闭数据通路高96位大部分寄存器的时钟,并将高96位数据通路输出结果强制清0,起到省功耗的目的,实现这一目的需要进行以下操作:

1、指令解码时根据指令功能提供设置目的操作数LRN的提示信号,分为传递(Pass)/清除(Clear)/置位(Set)ZS,Pass/Clear/Set ZD,其中Pass是指将指令源操作数1LRN的ZS或ZD赋给目的操作数,如AND操作,当源操作数1的ZS或ZD=1时必然有目的操作数ZS或ZD可以置1;Clear是指将目的操作数LRN的ZS或ZD复位;Set是指将目的操作数LRN的ZS或ZD置位。

2、指令重命名时根据上述提示信号计算得到指令目的操作数LRN新的ZS和ZD信号,然后在目的操作数新的ZS=ZD=1时关闭128位数据通路高96位大部分寄存器时钟。

本公开的发明人意识到,上述示例性的数据通路在功耗优化方面存在以下缺陷:

1、只有目的操作数新的ZS=ZD=1时才关闭128位数据通路高96位大部分寄存器的时钟,在native128和native256的设计中都不能充分利用ZH和ZH256标志关闭数据通路时钟来节省功耗。

2、ZH应用受限,在一般地native128设计中,ZH只有Set/Clear两种场景,在native256中为了实现YMM的移动消除(move-elimination)功能增加了Pass ZH场景。就移动消除功能而言,其Pass ZH场景是对数据移动指令的实现方法,可以简单认为这个赋值的操作就是完成这类数据移动指令的数据通路,而不涉及通过对指令进行解析得到用于将指令源操作数寄存器的标志信息赋值给目的操作数寄存器的提示信息的情况。另外,就移动消除功能而言,并没有最大限度覆盖所有可以Pass ZH的场景,如AND操作在PassZS、ZD的同时ZH也是可以Pass的。

3、数据通路控制时钟关闭的信号只有1比特(bit),在native128时已经显得粒度太粗,在native256时显的更加不灵活,不能尽可能的关闭数据通路时钟。

图3A示出了根据本公开的至少一实施例的用于数据通路的操作方法300的流程图。参见图3A,该操作方法300包括步骤S310至S320。示例性地,该操作方法300可以应用于控制通路,以实现对数据通路的操作。

在步骤S310中,基于对对象指令进行解码而得到的提示信号,将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器,其中,标志信息用于指示寄存器的m位中对应域的n位是否为0,m、n为正整数,m>n。

对象指令可以是能够被计算装置执行或处理的任何指令。

这里的对应域可以是对应于寄存器的位中的部分位的区域。在一些架构中,对应域是对应于寄存器的位中的连续的部分位的区域。例如,m可以为64并且对应域的n位为高32位,m可以为128并且对应域的n位为高64位,m可以为256并且对应域的n位为高128位。当然实施例不限于此,例如,对应域的n位不限于高n位,又例如,n也可以是其他数值。

在步骤S320中,基于所赋值的标志信息生成时钟开关信号,以在执行对象指令的过程中控制数据通路中部分位对应的时钟的开关。

例如,当标志信息指示指示寄存器的m位中对应域的n位为0,可以生成时钟开关信号以在执行对象指令的过程中关闭数据通路中部分位(例如n位)对应的时钟的开关。

如上所述,根据本公开的至少一实施例的用于数据通路的操作方法可以基于对对象指令进行解码而得到的提示信号,并基于提示信号获得用于控制数据通路中部分位对应的时钟的开关的时钟开关信号。如此,根据本公开的至少一实施例的用于数据通路的操作方法可以降低数据通路的功耗。

下面描述根据本公开的至少一实施例的用于数据通路的操作方法的一些示例性的附加方面。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,标志信息包括第一标志信息或第二标志信息中的至少一个,其中第一标志信息用于指示目的操作数寄存器中存储的256位数值中的高128位是否为0;第二标志信息用于指示目的操作数寄存器中存储的512位数值中的高256位是否为0。

第一标志信息可以对应于上述标志信息ZH,第二标志信息可以对应于上述标志信息ZH256。

如此,根据本公开的至少一实施例的用于数据通路的操作方法可以传递(pass)第一标志信息、第二标志信息,因而在数据通路中扩展了第一标志信息、第二标志信息的应用,可以促进在数据通路中充分利用第一标志信息、第二标志信息来关闭数据通路时钟来节省功耗。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,时钟开关信号为多个时钟开关信号,并且每个时钟开关信号分别用于控制数据通路中的一部分数据通路的时钟的开关。

如此,根据本公开的至少一实施例的用于数据通路的操作方法与通过1比特来控制通路的时钟的开关相比,可以实现更细粒度、更灵活的时钟开关控制,从而促进尽可能地关闭数据通路时钟来尽可能地节省功耗。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,数据通路的位宽为256,多个时钟开关信号包括:第一时钟开关信号,用于控制数据通路中[63:32]位的数据通路时钟;第二时钟开关信号,用于控制数据通路中[127:64]位的数据通路时钟;以及第三时钟开关信号,用于控制数据通路中[255:128]位的数据通路时钟。

如此,根据本公开的至少一实施例的用于数据通路的操作方法针对数据通路的位宽为256的特定应用场景(例如针对native256)构建了特定的多个时钟开关信号用于分别控制数据通路中的相应位的时钟,以实现更细粒度、更灵活的时钟开关控制。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,标志信息包括第一标志信息、第二标志信息、第三标志信息以及第四标志信息,第三标志信息用于指示目的操作数寄存器中存储的128位数值中的高96位是否为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位是否为0;并且基于所赋值的标志信息生成时钟开关信号,以在执行对象指令的过程中控制数据通路中部分位对应的时钟的开关,包括:基于以下条件生成第一时钟开关信号,以关闭数据通路[63:32]对应的至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器或第二类型寄存器,且目的操作数寄存器的第三标志信息为第一值,或者响应于目的操作数寄存器是第三类型寄存器,且目的操作数寄存器的第二标志信息为第一值;基于以下条件生成第二时钟开关信号,以关闭数据通路[127:64]对应的至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器或第二类型寄存器,且目的操作数寄存器的第四标志信息为第一值;响应于目的操作数寄存器是第三类型寄存器,且目的操作数寄存器的第二标志信息为第一值;以及基于以下条件生成第三时钟开关信号,以关闭数据通路[255:128]对应的至少部分时钟,包括:响应于目的操作数寄存器是第二类型寄存器,且目的操作数寄存器的第一标志信息为第一值,或者响应于目的操作数寄存器是第三类型寄存器,且目的操作数寄存器的第二标志信息为第一值,其中,第一类型寄存器为存储位数为128的寄存器,第二类型寄存器为存储位数为256的寄存器,第三类型寄存器为存储位数为512的寄存器,第三标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高96位为0,第四标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高64位为0,第一标志信息的第一值指示目的操作数寄存器中存储的256位数值中的高128位为0;并且第二标志信息的第一值指示目的操作数寄存器中存储的512位数值中的高256位为0。

本文中,第三标志信息可以对应于上述标志信息ZS,第四标志信息可以对应于上述标志信息ZD。另外,第一类型寄存器可以是x86架构中的XMM寄存器,第二类型寄存器可以是x86架构中的YMM寄存器,第三类型寄存器可以是x86架构中的ZMM寄存器,当然实施例不限于此,第一类型寄存器、第二类型寄存器以及第三类型寄存器可以是其他架构的合适的寄存器。

如此,根据本公开的至少一实施例的用于数据通路的操作方法可以在数据通路的位宽为256的特定应用场景中、基于标志信息的值来生成用于关闭数据通路中的相应时钟的多个时钟开关信号,从而实现细粒度的时钟开关控制,以节省功耗。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,数据通路的位宽为128,多个时钟开关信号包括:第四时钟开关信号,用于控制数据通路中[63:32]位的数据通路时钟;以及第五时钟开关信号,用于控制数据通路中[127:64]位的数据通路时钟。

如此,根据本公开的至少一实施例的用于数据通路的操作方法针对数据通路的位宽为128的特定应用场景(例如针对native128)构建了特定的多个时钟开关信号用于分别控制数据通路中的相应位的时钟,以实现更细粒度、更灵活的时钟开关控制。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,标志信息包括第一标志信息、第三标志信息以及第四标志信息,第三标志信息用于指示目的操作数寄存器中存储的128位数值中的高96位是否为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位是否为0;并且基于所赋值的标志信息生成时钟开关信号,以控制数据通路的时钟的开关,包括:基于以下条件生成第四时钟开关信号,以关闭数据通路[63:32]中至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器,且目的操作数寄存器的第三标志信息为第一值,或者响应于目的操作数寄存器是第二类型寄存器,且目的操作数寄存器的第一标志信息为第一值;基于以下条件生成第五时钟开关信号,以关闭数据通路[127:64]中至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器,且目的操作数寄存器的第四标志信息为第一值;响应于目的操作数寄存器是第二类型寄存器,且目的操作数寄存器的第一标志信息为第一值,其中,第一类型寄存器为存储位数为128的寄存器,第二类型寄存器为存储位数为256的寄存器,第三标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高96位为0,第四标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高64位为0,第一标志信息的第一值指示目的操作数寄存器中存储的256位数值中的高128位为0。

如此,根据本公开的至少一实施例的用于数据通路的操作方法可以在数据通路的位宽为128的特定应用场景中、基于标志信息的值来生成用于关闭数据通路中的相应时钟的多个时钟开关信号,从而实现细粒度的时钟开关控制,以节省功耗。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,提示信号在对对象指令进行解码时根据对象指令的功能来获得。

如此,根据本公开的至少一实施例的用于数据通路的操作方法可以针对例如处理器的场景下,通过处理器的解码单元获得提示信息。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,基于对对象指令进行解码而得到的提示信号,将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器,包括:在指令重命名时根据提示信号计算得到标志信息。本文的指令重命名可以包括将解码后的指令目的操作数寄存器映射到物理寄存器的过程。例如,指令重命名可以包括上述赋值过程以及寄存器重命名过程。

如此,根据本公开的至少一实施例的用于数据通路的操作方法可以针对例如处理器的场景下,通过处理器的指令重命名单元来将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,标志信息包括第三标志信息和第四标志信息,第三标志信息用于指示目的操作数寄存器中存储的128位数值中的高96位是否为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位是否为0;并且基于对对象指令进行解码而得到的提示信号,将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器,包括:在指令重命名时,根据提示信号计算得到目的操作数寄存器的第三标志信息和第四标志信息;基于所赋值的标志信息生成时钟开关信号,以在执行对象指令的过程中控制数据通路中部分位对应的时钟的开关,包括:响应于第三标志信息为第一值且第四标志信息为第一值,生成关闭128位数据通路中高96位对应的至少部分时钟,其中,第三标志信息的第一值指示目的操作数寄存器中存储的128位数值中的高96位为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位为0。

如此,根据本公开的至少一实施例的用于数据通路的操作方法在例如处理器的场景下,通过处理器的解码单元和指令重命名单元得到第三标志信息和第四标志信息,并基于第三标志信息和第四标志信息实现关闭128位数据通路中高96位对应的至少部分时钟。

例如,根据本公开的至少一实施例的用于数据通路的操作方法,关闭的数据通路的至少部分时钟可以包括关于该数据通路的计算的时钟。示例性地,关闭128位数据通路中高96位对应的至少部分时钟可以是关闭关于该高96位对应的计算的时钟。在另一些方面,可以不关闭关于这些位的最终数据的输出的时钟。

与根据本公开的至少一实施例的用于数据通路的操作方法300相对应地,本公的至少一实施例还提供了一种计算装置。

图3B示出了根据本公开的至少一实施例的计算装置350的示意图。

参见图3B,计算装置350包括控制通路360和数据通路390。数据通路360包括赋值单元370以及时钟开关信号生成单元380。例如,数据通路可以包括诸运算操作等数据相关的信号的运算,控制通路可以包括访存、立即数生成等控制信号的生成。

赋值单元370被配置为基于对对象指令进行解码而得到的提示信号,将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器,其中,标志信息用于指示寄存器的m位中对应域的n位是否为0,m、n为正整数,m>n。

时钟开关信号生成单元380被配置为基于所赋值的标志信息生成时钟开关信号,以在执行对象指令的过程中控制数据通路中部分位对应的时钟的开关。

如上所述,根据本公开的至少一实施例的计算装置可以基于对对象指令进行解码而得到的提示信号,并基于提示信号获得用于控制数据通路中部分位对应的时钟的开关的时钟开关信号。如此,根据本公开的至少一实施例的用于数据通路的操作方法可以降低数据通路的功耗。

下面描述根据本公开的至少一实施例的计算装置的一些示例性的附加方面。

例如,根据本公开的至少一实施例的计算装置,标志信息包括第一标志信息或第二标志信息中的至少一个,其中第一标志信息用于指示目的操作数寄存器中存储的256位数值中的高128位是否为0;第二标志信息用于指示目的操作数寄存器中存储的512位数值中的高256位是否为0。

例如,根据本公开的至少一实施例的计算装置,时钟开关信号为多个时钟开关信号,并且每个时钟开关信号分别用于控制数据通路中的一部分数据通路的时钟的开关。

例如,根据本公开的至少一实施例的计算装置,数据通路的位宽为256,多个时钟开关信号包括:第一时钟开关信号,用于控制数据通路中[63:32]位的数据通路时钟;第二时钟开关信号,用于控制数据通路中[127:64]位的数据通路时钟;以及第三时钟开关信号,用于控制数据通路中[255:128]位的数据通路时钟。

例如,根据本公开的至少一实施例的计算装置,标志信息包括第一标志信息、第二标志信息、第三标志信息以及第四标志信息,第三标志信息用于指示目的操作数寄存器中存储的128位数值中的高96位是否为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位是否为0;并且时钟开关信号生成单元还被配置为:基于以下条件生成第一时钟开关信号,以关闭数据通路[63:32]对应的至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器或第二类型寄存器,且目的操作数寄存器的第三标志信息为第一值,或者响应于目的操作数寄存器是第三类型寄存器,且目的操作数寄存器的第二标志信息为第一值;基于以下条件生成第二时钟开关信号,以关闭数据通路[127:64]对应的至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器或第二类型寄存器,且目的操作数寄存器的第四标志信息为第一值;响应于目的操作数寄存器是第三类型寄存器,且目的操作数寄存器的第二标志信息为第一值;以及基于以下条件生成第三时钟开关信号,以关闭数据通路[255:128]对应的至少部分时钟,包括:响应于目的操作数寄存器是第二类型寄存器,且目的操作数寄存器的第一标志信息为第一值,或者响应于目的操作数寄存器是第三类型寄存器,且目的操作数寄存器的第二标志信息为第一值,其中,第一类型寄存器为存储位数为128的寄存器,第二类型寄存器为存储位数为256的寄存器,第三类型寄存器为存储位数为512的寄存器,第三标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高96位为0,第四标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高64位为0,第一标志信息的第一值指示目的操作数寄存器中存储的256位数值中的高128位为0;并且第二标志信息的第一值指示目的操作数寄存器中存储的512位数值中的高256位为0。

例如,根据本公开的至少一实施例的计算装置,数据通路的位宽为128,多个时钟开关信号包括:第四时钟开关信号,用于控制数据通路中[63:32]位的数据通路时钟;以及第五时钟开关信号,用于控制数据通路中[127:64]位的数据通路时钟。

例如,根据本公开的至少一实施例的计算装置,标志信息包括第一标志信息、第二标志信息、第三标志信息以及第四标志信息,第三标志信息用于指示目的操作数寄存器中存储的128位数值中的高96位是否为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位是否为0;并且时钟开关信号生成单元还被配置为:基于以下条件生成第四时钟开关信号,以关闭数据通路[63:32]中至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器,且目的操作数寄存器的第三标志信息为第一值,或者响应于目的操作数寄存器是第二类型寄存器,且目的操作数寄存器的第一标志信息为第一值;基于以下条件生成第五时钟开关信号,以关闭数据通路[127:64]中至少部分时钟,包括:响应于目的操作数寄存器是第一类型寄存器,且目的操作数寄存器的第四标志信息为第一值;响应于目的操作数寄存器是第二类型寄存器,且目的操作数寄存器的第一标志信息为第一值,其中,第一类型寄存器为存储位数为128的寄存器,第二类型寄存器为存储位数为256的寄存器,第三标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高96位为0,第四标志信息为第一值指示目的操作数寄存器中存储的128位数值中的高64位为0,第一标志信息的第一值指示目的操作数寄存器中存储的256位数值中的高128位为0。

例如,根据本公开的至少一实施例的计算装置,控制通路还包括:解码单元,被配置为在对对象指令进行解码时根据对象指令的功能提供提示信号。

例如,根据本公开的至少一实施例的计算装置,赋值单元还被配置为:在指令重命名时根据提示信号计算得到标志信息。

例如,根据本公开的至少一实施例的计算装置,标志信息包括第三标志信息和第四标志信息,第三标志信息用于指示目的操作数寄存器中存储的128位数值中的高96位是否为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位是否为0;赋值单元还被配置为:在指令重命名时,根据提示信号计算得到目的操作数寄存器的第三标志信息和第四标志信息;时钟开关信号生成单元还被配置为:响应于第三标志信息为第一值且第四标志信息为第一值,生成关闭128位数据通路中高96位对应的至少部分时钟,其中,第三标志信息的第一值指示目的操作数寄存器中存储的128位数值中的高96位为0;第四标志信息用于指示目的操作数寄存器中存储的128位数值中的高64位为0。

例如,根据本公开的至少一实施例的计算装置,关闭的数据通路的至少部分时钟可以包括关于该数据通路的计算的时钟。示例性地,关闭128位数据通路中高96位对应的至少部分时钟可以是关闭关于该高96位对应的计算的时钟。在另一些方面,可以不关闭关于这些位的最终数据的输出的时钟。

示例性地,根据本公开的至少一实施例的计算装置可以是处理器。在示例性的处理器架构中,处理器的流水线可以包括控制通路和数据通路。控制通路可以包括解码单元、赋值单元以及寄存器重命名单元,数据通路则一般是指令具体计算功能的实现部分。例如,针对指令C=A+B,控制通路可以负责准备指令需要的操作数,而数据通路负责计算得到A+B的结果。因此,在SIMD数据通路会涉及到很大位宽的数据计算,需要考虑节省功耗。基于上述根据本公开的至少一实施例的计算装置可以节省处理器的数据通路的功耗。

上述根据本公开的至少一实施例的计算装置350的附加方面可以与根据本公开的至少一实施例的用于数据通路的操作方法300的附加方面相对应,因此根据本公开的至少一实施例的用于数据通路的操作方法300的附加方面的技术效果同样可以映射到根据本公开的至少一实施例的计算装置350的附加方面,在此不再赘述。

下面结合示例应用场景来描述如上结合图3A和图3B描述的一个或多个示例性方面。可以理解的,下面描述的示例应用场景仅是示例而非限制,旨在在具体应用场景中实现如上结合图3A和图3B的一个或多个方面,并且下面结合示例应用场景描述的各方面可以与如上结合图3A和图3B的一个或多个方面相结合。

示例应用场景涉及如图4A所示的native256数据通路时钟控制以及如图4A所示的native128数据通路时钟控制。

该示例场景提供涉及以下一个或多个方面的机制:

1、根据解码给出的提示信号在Pass ZS,ZD的同时若目的操作数是YMM同时进行Pass ZH,扩大Pass ZH范围。

2、将ZH,ZH256应用到数据通路时钟关闭控制信号中,增多关闭数据通路时钟节省功耗的场景。

3、将处理不同数据元素的数据通路中时钟控制信号进行细分,在ZS,ZD,ZH/ZH256置1时可以分别关闭不同的数据通路时钟,进一步增加节省功耗场景。

改进的设计中除了MOV指令在做move-elimination时可以做Pass ZH/ZH256之外,在其他指令出现时,如AND、ABS、MUL操作当源操作数1ZH/ZH256=1是目的操作数必然可以设置ZH/ZH256=1。

下面描述ZH、ZH256标志在数据通路时钟控制的应用,以及数据通路时钟控制信号的细化。

图4A示出了根据本公开的至少一实施例的native256数据通路时钟控制信号的示意图。在图4A中示例性描述了涉及native256数据通路中的执行部件的实现的数据通路划分,当然实施例不限于此,该实施例的各方面也可以用于涉及native256数据通路中的其他部件。

参见图4A,256位数据通路被划分为数据通路[31:0]([31:0]位)、数据通路[63:32]([63:32]位)、数据通路[127:64]([127:64]位)以及数据通路[255:128]([255:128]位)等4个部分。每个部分有不同时钟控制信号用于在适当的时候关闭该部分大部分时钟并强制将数据通路结果清0起到节省功耗的目的。

例如,参见图4A,Clk_disS信号(例如对应于上文的第一时钟开关信号)可以控制256位数据通路中处理[63:32]位的数据通路时钟;Clk_disD信号(例如对应于上文的第二时钟开关信号)可以控制256位数据通路中处理[127:64]位的数据通路时钟;Clk_disH信号(例如对应于上文的第三时钟开关信号)可以控制256位数据通路中处理[255:128]位的数据通路时钟。例如,图4A中的数据通路可以有一级或多级寄存器。

在附加的方面,控制数据通路中处理[31:0]位的数据通路时钟的时钟开关信号可以是数据通路的开关信息。因此,在数据通路开启的情况下,数据通路中的[31:0]位的数据通路时钟即可处于开启状态。当然,实施例不限于此,也可以为数据通路中处理[31:0]位的数据通路时钟的增设附加的时钟开关信号。

下面描述Clk_disS信号置1的场景。

例如,当指令目的操作数LRN是XMM(例如对应于上文的第一类型寄存器)或YMM(例如对应于上文的第二类型寄存器)且其新的ZS(例如对应于上文的第三标志信息)==1时,Clk_disS=1,关闭数据通路[63:32]中大部分时钟。

又例如,当指令目的操作数是ZMM(例如对应于上文的第三类型寄存器),且其新的ZH256(例如对应于上文的第二标志信息)==1时,Clk_disS=1,关闭数据通路[63:32]中的大部分时钟。

下面描述Clk_disD信号置1的场景。

例如,当指令目的操作数LRN是XMM或YMM,且其新的ZD(例如对应于上文的第四标志信息)==1时,Clk_disD=1,关闭数据通路[127:64]中的大部分时钟。

又例如,当指令目的操作数是ZMM,且其新的ZH256==1时,Clk_disD=1,关闭数据通路[127:64]中的大部分时钟。

下面描述Clk_disH信号置1的场景

例如,当指令目的操作数是YMM,且其新的ZH(例如对应于上文的第一标志信息)==1时,Clk_disH=1,关闭数据通路[255:128]中的大部分时钟。

又例如,当指令目的操作数是ZMM,且其新的ZH256==1时,Clk_disH=1,关闭数据通路[255:128]中的大部分时钟。

图4B示出了根据本公开的至少一实施例的native128数据通路时钟控制信号的示意图。在图4B中示例性描述了涉及native128数据通路中的执行部件的实现的数据通路划分,当然实施例不限于此,该实施例的各方面也可以用于涉及native128数据通路中的其他部件。

参见图4B,128位数据通路被划分为数据通路[31:0]([31:0]位)、数据通路[63:32]([63:32]位)以及数据通路[127:64]([127:64]位)等3个部分。每个部分有不同时钟控制信号用于在适当的时候关闭该部分大部分时钟并强制将数据通路结果清0起到节省功耗的目的。

例如,参见图4B,Clk_disS信号(例如对应于上文的第四时钟开关信号)可以控制256位数据通路中处理[63:32]位的数据通路时钟;Clk_disD信号(例如对应于上文的第五时钟开关信号)可以控制256位数据通路中处理[127:64]位的数据通路时钟。例如,图4A中的数据通路可以有一级或多级寄存器。

在附加的方面,控制数据通路中处理[31:0]位的数据通路时钟的时钟开关信号可以是数据通路的开关信息。因此,在数据通路开启的情况下,数据通路中的[31:0]位的数据通路时钟即可处于开启状态。当然,实施例不限于此,也可以为数据通路中处理[31:0]位的数据通路时钟的增设附加的时钟开关信号。

下面描述Clk_disS信号置1场景。

例如,当指令目的操作数LRN是XMM(例如对应于上文的第一类型寄存器)且其新的(目的操作数)ZS(例如对应于上文的第三标志信息)==1时,Clk_disS=1,关闭数据通路[63:32]中大部分时钟。

例如,当指令目的操作数是YMM(例如对应于上文的第二类型寄存器),且其新的ZH(例如对应于上文的第一标志信息)==1时,Clk_disS=1,关闭数据通路[63:32]中的大部分时钟。

下面描述Clk_disD信号置1场景。

例如,当指令目的操作数LRN是XMM,且其新的ZD(例如对应于上文的第四标志信息)==1时,Clk_disD=1,关闭数据通路[127:64]中的大部分时钟。

例如,当指令目的操作数是YMM,且其新的ZH==1时,Clk_disD=1,关闭数据通路[127:64]中的大部分时钟。

例如,native128对操作数是YMM(即256位数据位宽的指令)可以拆成2条微指令(uop)执行,第一条uop操作数是XMM,表示操作的是原256位操作数指令的低128位,第二条uop操作数是YMM,表示操作的是原256位操作数指令的高128位。在上述示例场景中,通过增加有限的逻辑资源,大大增加了可节省功耗的场景,尤其是从微架构设计出发节省功耗而不依赖于半导体制程,减少了技术依赖。

需要说明的是,上述示例场景仅是示例而非限制,旨在通过具体的场景来描述本公开的至少一实施例的操作方法或装置的一个或多个方面,并且结合该示例场景描述的各方面可以与本公开的至少一实施例的操作方法或装置的各方面相互结合和引用。另外,可以对上述结合图4A和图4B描述的各个方面进行适当的修改而不超出本公开的范围。例如,可以对图4A和图4B描述的各个方面进行添加、合并、拆分、删除等。在一些示例性方面,可以对图4A和图4B描述的场景划分更多或更少部分的数据通路部分,或者每个数据通路部分所对应的位宽的范围可以变化,因而可以构建更多或更少的时钟开关信号以及改变时钟开关信号所对应的数据通路部分。

另外,上述示例场景可以应用于但不限于CPU、MCU、DSP等微处理器或知识产权产品(IP)中。例如,上述示例场景可以应用于正在执行(on-flight)指令从1条到多条的场景中。例如,上述示例场景可以应用于单线程或多线程场景中。在附加的方面,上述示例场景可以应用到不同宽度数据通路设计中。例如,上述示例场景可以应用到不同指令集架构微处理器中或IP。

图5示出了根据本公开的至少一实施例的另一计算装置500的示意图。

如图5所示,计算装置500包括处理器510和存储器520。存储器520包括一个或多个计算机程序模块521。一个或多个计算机程序模块521被存储在存储器520中并被配置为由处理器510执行,该一个或多个计算机程序模块521包括用于执行根据本公开的至少一实施例的用于数据通路的操作方法300及其附加方面的指令,其被处理器510执行时,可以执行根据本公开的至少一实施例的用于数据通路的操作方法300及其附加方面的一个或多个步骤。存储器520和处理器510可以通过总线系统和/或其他形式的连接机构(未示出)互连。例如,该总线可以是外设部件互连标准(PCI)总线或扩展工业标准结构(EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。

示例性地,处理器510可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其他形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为RISC-V架构或其他合适类型的架构等。处理器510可以为通用处理器或专用处理器,可以控制计算装置500中的其他组件以执行期望的功能。

示例性地,存储器520可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块521,处理器510可以运行一个或多个计算机程序模块521,以实现计算装置500的各种功能。计算机程序模块包括多条计算机执行指令。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。

例如,计算装置500还可以包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等输入装置;包括诸如液晶显示器、扬声器、振动器等输出装置;包括例如磁带、硬盘(HDD或SDD)等存储装置;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡等通信装置。通信装置可以允许计算装置500与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。根据需要驱动器连接至I/O接口。可拆卸存储介质,诸如磁盘、光盘、磁光盘、半导体存储器等,根据需要安装在该驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储装置。

例如,该计算装置500还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。

该计算装置500例如可以是片上系统(SOC)或者包括该SOC的设备,例如,可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪、家用电器、通信基站、工业控制器、服务器等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。该计算装置500的具体功能和技术效果可以参考上文中关于根据本公开的至少一实施例的用于数据通路的操作方法300及其附加方面的描述,在此不再赘述。

图6示出了根据本公开的至少一实施例的非瞬时可读存储介质600的示意图。

如图6所示,非瞬时可读存储介质600上存储有计算机指令610,该计算机指令610被处理器执行时执行如上所述的用于数据通路的操作方法300及其附加方面中的一个或多个步骤。

示例性地,该非瞬时可读存储介质600可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于基于对对象指令进行解码而得到的提示信号,将对象指令中的源操作数寄存器的标志信息赋值给对象指令中的目的操作数寄存器的程序代码。又例如,一个计算机可读存储介质包含用于基于所赋值的标志信息生成时钟开关信号,以在执行对象指令的过程中控制数据通路中部分位对应的时钟的开关的程序代码。

示例性地,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行以实现例如根据本公开的至少一实施例的用于数据通路的操作方法300及其附加方面的一个或多个步骤。

示例性地,该非瞬时可读存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、以及其他的非瞬时可读存储介质或其任意组合。

本说明书中的至少部分实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

对于本公开,还有以下几点需要说明:

(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。

以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。

相关技术
  • 用于大幅度变宽桥梁的主次梁框架结构及其组装方法
  • 用于大幅度变宽桥梁的主次梁框架结构
技术分类

06120116546160