具有精确中断和/或重写的向量指令制造技术

技术编号:28728562 阅读:69 留言:0更新日期:2021-06-06 07:21
一种处理器,包括:包含多个向量寄存器的向量寄存器文件、至少一个缓冲寄存器以及向量处理核心,该向量处理核心通信地连接到向量寄存器文件和至少一个缓冲寄存器,以接收向量指令,该向量指令包括表示多个向量寄存器中的第一向量寄存器的第一标识符和表示多个向量寄存器中的第二向量寄存器的第二标识符,其中第一向量寄存器是源寄存器,以及第二向量寄存器是目的地寄存器;基于存储在第一向量寄存器中的数据值执行向量指令以生成结果并将结果存储在至少一个缓冲寄存器中;以及响应于确定第二向量寄存器是安全写入的,将结果从至少一个缓冲寄存器复制到第二向量寄存器。缓冲寄存器复制到第二向量寄存器。缓冲寄存器复制到第二向量寄存器。

【技术实现步骤摘要】
【国外来华专利技术】具有精确中断和/或重写的向量指令
[0001]相关申请的交叉引用
[0002]本申请要求于2018年8月14日提交的美国临时申请62/718,426的优先权,其全部内容通过引用合并于此。


[0003]本公开涉及计算机处理器,尤其涉及支持具有精确中断和/或重写的向量指令的处理器。

技术介绍

[0004]向量处理器(也称为阵列处理器)是一种硬件处理装置(例如,中央处理单元(CPU)或图形处理单元(GPU)),其实现了包含对数据元素的向量进行操作的向量指令的指令集架构(ISA)。向量是包含有序标量数据元素的单向阵列。作为比较,标量指令对单个数据元素进行操作。与支持对单个数据元素进行操作的标量指令的标量处理器相比,向量处理器通过对包含多个数据元素的向量进行操作可以获得显著的性能改进。
附图说明
[0005]根据以下给出的详细描述以及本公开的各种实施例的附图,将更充分地理解本公开。然而,不应将附图视为将本公开限制于特定实施例,而是仅用于解释和理解。
[0006]图1示出了根据本公开的实施方式的硬件处理器。
[0007]图2示出了根据本公开的实施方式的使用缓冲寄存器的向量指令的示例性实施方式。
具体实施方式
[0008]实现为由硬件处理器执行的向量指令是对包含特定数据类型的多于一个元素的向量执行操作的指令。输入和输出数据被存储在与处理器相关联的一个或多个向量寄存器中。这些向量寄存器是存储单元,其被设计为保存向量的多个数据元素。示例性向量指令包括在x86指令集架构(ISA)中指定的流式单指令多数据扩展(SSE)指令。ISA的某些实施方式可以支持可变长度向量指令。可变长度向量指令包括寄存器标识符,该寄存器标识符指定用于存储将由该指令操作的向量的元素数的寄存器。可变长度向量指令中的寄存器称为向量长度寄存器。
[0009]尽管向量指令可以显著改善处理器性能,但是向量指令可能潜在地遭受读取后写入数据的危害。使用以下示例说明读取后写入数据的危害。作为示例,考虑一个指令集架构,该架构指定在指令中由$v0到$v7标识的八(8)个向量寄存器。这些向量寄存器中的每一个都能够保存32字节的数据。这32个字节可以以不同的方式使用来保存不同的数据类型。例如,32字节向量寄存器的元素被解释为:
[0010]·
16个16位整数(半字),或
[0011]·
8个32位整数(字),或
[0012]·
8个32位浮点单精度数,或
[0013]·
诸如8位整数、64位整数、16位浮点或64位浮点的其他数据类型的组合
[0014]向量寄存器上可以使用后缀来表示元素的不同数据类型。例如,“_h”,“_w”和“_f”可用于指示应将在该寄存器中存储的数据元素分别视为半字、字和单精度浮点值来处理。索引值[i]可用于指示存储在向量寄存器中的元素#i,其从0开始。因此,$v1_h[3]是寄存器$v1的第四个半字,存储在字节6和7中。作为示例,向量寄存器类型中不同类型的寄存器元素的排列如下表1中所示:
[0015]表1
[0016][0017]如表1中所示,字0可以占据字节0至字节3的位置,该位置与由半字0和半字1所占据的位置重叠,因为它们被分别放置在字节0至字节1和字节2至字节3的位置处。
[0018]两个向量指令用于展示先读后写(WAR)危害:
[0019]·
向量取反浮点指令:vnegf$vdst,$vsrc,
[0020]·
向量转换无符号半字至字指令:vcvtuhw$vdst,$vsrc,
[0021]这两个指令均从源向量寄存器读取,并将结果写入目标向量寄存器。
[0022]向量取反浮点(vnegf)指令的语义是:
[0023]for(i=0;i<8;i++)
[0024][0025]向量转换无符号半字至字指令(vcvtuhw)的语义是:
[0026]for(i=0;i<8;i++)
[0027][0028]当目的地寄存器与源寄存器相同时,vcvtuhw指令可能具有潜在问题。考虑vcvtuhw$v3,$v3的情况。在这种情况下,目的是将$v0的前8个半字转换为字,然后将其存储回$3。但是,本地实施方式可能导致错误的结果。考虑以下简单实施方式:
[0029]·
读取半字
[0030]·
对其进行扩展
[0031]·
以及将结果回写
[0032]·
重复8次。
[0033]为了执行该指令,处理器的执行单元可以从$v3的字节0和1读取半字#0。执行单元可以将存储在字节0和1处的半字#0扩展为在字节0、1、2和3处的字,并写入$v3的字节0、1、2和3。接下来,执行单元可以从$v3的字节2和3读取半字#1。但是,这些字节不是指令开始处的原始字节。取而代之的是,它们已被半字#0的扩展值重写。这是先读后写危害(也称为反依赖性)的示例。这只是向量指令具有潜在的先读后写危害的一个示例。
[0034]防止发生WAR危害的一种方式是禁止目的地寄存器与向量指令的源寄存器相同。防止WAR危害的另一种方式是使用同时读取。微处理器可以包括指令执行流水线,该指令执
行流水线可以进一步将指令执行划分为几个流水线级,包括指令获取级、指令解码和寄存器读取级、一个或多个指令执行级以及寄存器回写级。此外,指令执行流水线不对向量指令执行数据值的顺序评估(即,每次一个元素)。取而代之的是,指令执行流水线可以同时操作几个指令块并且并行评估几个元素。对于具有大量执行块和中等向量长度的处理器,指令执行流水线可以同时读取向量的所有元素,同时对其进行处理,然后将所有值回写至寄存器。这种实施方式将保证在任何写操作发生之前已读取所有元素,从而避免了WAR危害。例如,如果处理器具有8个执行块,则处理器可以使用以下顺序执行vcvtuhw指令:
[0035]·
从向量寄存器读取所有8个半字
[0036]·
扩展
[0037]·
写入向量寄存器的所有8个半字
[0038]由于所有值都是在写入之前读取的,因此执行vcvtuhw指令可以避免WAR危害。
[0039]通过重新安排某些读取操作和写入操作,可以避免WAR危害。例如,在vcvtuhw指令被如上所述流水线化但仅使用4个执行块的情况下。处理器可以根据以下顺序执行vcvtuhw以避免WAR危害:
[0040]·
读取前4个半字
[0041]·
扩展前4个半字,读取后4个半字
[0042]·
写入前4个字,扩展后4个字
[0043]·
写入后4个字
[0044]一些实施方式可以使用寄存器重命名以避免WAR危害。寄存器重命名需要改变架构寄存器与物理寄存器之间的映射。ISA可以指定一组可由ISA定义的指令引用的寄存器(称为架构寄存器)。处理器可以包括可以用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种处理器,包括:向量寄存器文件,包括多个向量寄存器;至少一个缓冲寄存器;以及向量处理核心,通信地连接到所述向量寄存器文件和所述至少一个缓冲寄存器,以:接收向量指令,所述向量指令包括表示所述多个向量寄存器中的第一向量寄存器的第一标识符和表示所述多个向量寄存器中的第二向量寄存器的第二标识符,其中所述第一向量寄存器是源寄存器,以及所述第二向量寄存器是目的地寄存器;基于存储在所述第一向量寄存器中的数据值执行所述向量指令以生成结果并将所述结果存储在所述至少一个缓冲寄存器中;以及响应于确定所述第二向量寄存器是安全写入的,将所述结果从所述至少一个缓冲寄存器复制到所述第二向量寄存器。2.根据权利要求1所述的处理器,其中,所述源寄存器是与所述目的地寄存器相同或不同的寄存器。3.根据权利要求1或2中任一项所述的处理器,其中,向量指令集定义了多个架构寄存器,以及其中,所述多个架构寄存器中的每一个被映射到所述多个向量寄存器中的相应的一个。4.根据权利要求1或2中任一项所述的处理器,其中,所述多个架构寄存器中的每一个被固定地映射到所述多个向量寄存器中的相应的一个,以及其中,架构寄存器与相应的向量寄存器之间的映射不在执行第二向量指令期间通过寄存器重命名更改。5.根据权利要求1或2中任一项所述的处理器,其中,所述向量指令的执行在两个阶段中进行,所述两个阶段包括生成第一结果并将所述第一结果存储在所述至少一个缓冲寄存器中的第一阶段以及将所述结果从所述至少一个缓冲寄存器复制到所述第二向量寄存器的第二阶段。6.根据权利要求1或2中任一项所述的处理器,其中,所述至少一个缓冲寄存器是与所述处理器相关联的存储器的位置、与所述向量寄存器文件分离的逻辑电路、或除所述向量寄存器文件中的所述多个向量寄存器以外的附加向量寄存器的其中之一。7.根据权利要求1或2中任一项所述的处理器,其中,确定所述第二向量寄存器是安全写入的包括确定所述向量指令的执行不遭受先读后写危害。8.根据权利要求1或2中任一项所述的处理器,其中,确定所述第二向量寄存器是安全写入的包括确定所述向量指令的执行是否引起中断,以及其中,响应于确定所述向量指令的执行不引起中断或所述处理核心在非精确中断模式下运行,所述处理核心将绕过所述至少一个缓冲寄存器而将所述结果直接写入所述第二向量寄存器。9.根据权利要求8所述的处理器,其中响应于确定所述向量指令的执行引起精确中断,所述处理核心将:基于存储在所述第一向量寄存器中的数据值执行所述向量指令以生成结果并将所述结果存储在所述至少一个缓冲寄存器中;以及将所述结果从所述至少一个缓冲寄存器复制到所述第二向量寄存器。10.根据权利要求1或2中任一项所述的处理器,其中,所述处理核心包括向量指令执行流水线,所述向量指令执行流水线包括:
指令获取电路,接收所述向量指令;指令解码电路,基于所述向量指令生成微操作;指令执行电路,基于存储在所述第一向量寄存器中的数据值执行所述向量指令以生成第一结果并将所述第一结果存储在所述至少一个缓冲寄存器中;以及指令回写电路,响应于确定所述第二向量寄存器是安全写入的,将所述结果从所述至少一个缓冲寄存器复制到所述第二向量寄存器。11.根据权利要求1或2中任一项所述的处理器,其中,所述向量指令包括:表示用作源寄存器的多于一个第一向量寄存器的多于一个第一标识符,表示用作目的地寄存器的多于一个第二向量寄存器的多于一个第二标识符,以及存储结果的多于一个缓冲寄存器,以及其中所述第一向量寄存器包括多个数据元素,以及其中所述处理核心将:基于存储在所述多于一个第一向量寄存器中的数据值执行所述向量指令,以生成包括数据元素的结果;将所述结果的数据元素的第一子集存储在所述多于一个缓冲寄存器中,并将所述结果的数据元素的第二子集存储在所述多于一个第二向量寄存器中;以及响应于确定所述多于一个第二向量寄存器是安全写入的,将所述结果的数据元素的...

【专利技术属性】
技术研发人员:玛雅
申请(专利权)人:优创半导体科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1