当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于无符号双字的矢量乘法和累加的设备和方法技术

技术编号:21604940 阅读:34 留言:0更新日期:2019-07-13 18:02
一种用于执行打包有符号/无符号双字的有符号乘法和与四字累加的设备和方法。例如,处理器的一个实施例包括:第一源寄存器,用于存储第一多个打包双字数据元素;第二源寄存器,用于存储第二多个打包双字数据元素;第三源寄存器,用于存储多个打包四字数据元素;执行电路,用于执行解码指令,执行电路包括:乘法器电路;累加电路;目的地寄存器或第三源寄存器。

Equipment and method for vector multiplication and accumulation of unsigned double words

【技术实现步骤摘要】
用于无符号双字的矢量乘法和累加的设备和方法
本专利技术的实施例一般涉及计算机处理器的领域。更具体地说,本实施例涉及用于执行无符号双字的矢量乘法和累加的设备和方法。
技术介绍
指令集或指令集架构(ISA)是与编程有关的计算机架构的一部分,包括原生数据类型、指令、寄存器架结构、寻址模式、存储器架构、中断和异常处理及外部输入和输出(I/O)。应注意的是,术语“指令”在本文中通常指宏指令-其是被提供到处理器以便执行的指令-与微指令或微操作相反-其是处理器的解码器解码宏指令的结果。微指令或微操作能够配置成指示处理器上的执行单元执行操作以实现与宏指令关联的逻辑。ISA不同于作为用于实现指令集的一组处理器设计技术的微架构。带有不同微架构的处理器能够共享共用指令集。例如,Intel®Pentium4处理器、Intel®CoreTM处理器和来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(AdvancedMicroDevices,Inc.)的处理器实现几乎相同版本的x86指令集(其中已采用较新版本来加入了一些扩展),但具有不同内部设计。例如,ISA的相同寄存器架构可使用公知的技术在不同微架构中以不同方式来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和引退寄存器堆)的一个或多个动态分配的物理寄存器。除非另有指定,否则短语寄存器架构(phrasesregisterarchitecture)、寄存器堆和寄存器在本文中用于指对软件/编程器可见的事物以及其中指令指定寄存器的方式。在要求区分的情况下,形容词“逻辑的”、“架构的”、或“软件可见的”将用于指示在寄存器架构中的寄存器/文件,而不同的形容词将用于指定给定微架构中的寄存器(例如,物理寄存器、重新排序缓冲器、隐退寄存器、寄存器池)。相乘-累加是一种常见的数字信号处理操作,它计算两个数的乘积并将该乘积加到累加值上。现有的单指令多数据(SIMD)微架构通过执行一系列指令来实现相乘-累加运算。例如,相乘-累加可以用相乘指令、继之以4路加法、并然后用目的地四倍长字数据累加来执行以产生两个64比特饱和结果。附图说明结合附图,从下面的详细描述中能够获得本专利技术的更好理解,其中:图1A和1B是图示了根据本专利技术的实施例的一般矢量友好指令格式及其指令模板的框图;图2A-C是图示了根据本专利技术的实施例的示范性VEX指令格式的框图;图3是根据本专利技术的一个实施例的寄存器架构的框图;以及图4A是图示了根据本专利技术的实施例的示范性有序获取、解码、引退流水线和示范性寄存器重命名、乱序发布/执行流水线两者的框图;图4B是图示了根据本专利技术的实施例,要包括在处理器中的有序获取、解码、引退核的示范性实施例和示范性寄存器重命名、乱序发出/执行架构核两者的框图;图5A是单个处理器核及其到管芯上互连网络的连接的框图;图5B图示了根据本专利技术的实施例的图5A中处理器核的一部分的扩展图;图6是根据本专利技术的实施例的单核处理器和带有集成存储器控制器和图形的多核处理器的框图;图7图示了根据本专利技术的一个实施例的系统的框图;图8图示了根据本专利技术的实施例的第二系统的框图;图9图示了根据本专利技术的实施例的第三系统的框图;图10图示了根据本专利技术的实施例的芯片上系统(SoC)的框图;图11图示了根据本专利技术的实施例,与软件指令转换器的使用进行对照来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图;图12图示了本专利技术的实施例可在其上被实现的处理器架构;图13图示了根据一个实施例的含有实部值和复数值的多个打包数据元素;图14图示了打包数据处理架构的实施例;以及图15图示了按照本专利技术的一个实施例的方法。具体实施方式在下面的描述中,出于解释的目的,陈述了许多特定的细节以便提供下面描述的本专利技术的实施例的详尽理解。然而,本领域的技术人员将明白,可在没有某些这些特定细节的情况下实践本专利技术的实施例。在其它实例中,以框图形式示出已知的结构和装置,以免混淆本专利技术的实施例的基础原理。示范性处理器架构、指令格式和数据类型指令集包括一个或多个指令格式。给定的指令格式定义各种字段(比特数量、比特位置)以在其它事物中指定要被执行的操作(操作码)和一个或多个操作数(在其上要执行操作)。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可被定义以具有指令格式的字段的不同子集(包括的字段典型地采用相同顺序,但至少一些具有不同比特位置,因为包括有较少字段)和/或被定义以具有不同地解译的给定字段。因此,ISA的每个指令使用给定的指令格式来表示(并且如果被定义,则采用该指令格式的指令模板中的给定一个)并且包括用于指定操作和操作数的字段。例如,示范性ADD指令具有特定操作码和指令格式,其包括用于指定那个操作码的操作码字段和用于选择操作数的操作数字段(源1/目的地和源2));以及指令流中的该ADD指令的出现将具有选择特定操作数的操作数字段中的特定内容。本文描述的一个或多个指令的实施例可以采用不同格式实施。此外,示范性系统、架构和流水线在下文被详述。一个或多个指令的实施例可在这样的系统、架构和流水线上执行,但不限于详述的那些。一般矢量友好指令格式矢量友好指令格式是适合用于矢量指令的指令格式(例如特定于矢量操作存在某些字段)。虽然描述了实施例,其中通过矢量友好指令格式支持矢量和标量两者操作,但备选实施例仅使用矢量友好格式的矢量操作。图1A-1B是框图,其示出根据本专利技术的实施例的一般矢量友好指令格式和其指令模板。图1A是框图,其示出根据本专利技术的实施例的一般矢量友好指令格式和其类别A指令模板;而图1B是框图,其示出根据本专利技术的实施例的一般矢量友好指令格式和其类别B指令模板。具体地,对于一般矢量友好指令格式100,定义了类别A和类别B指令模板,它们两者包括无存储器访问105指令模板和存储器访问120指令模板。矢量友好指令格式的上下文中的术语“一般”指的是指令格式不被束缚于任何特定指令集。虽然本专利技术的实施例将被描述,其中矢量友好指令格式支持以下项:带有32比特(4字节)或64比特(8字节)数据元素宽度(或大小)的64字节矢量操作数长度(或大小)(并且因此,64字节矢量由16个双字大小元素或备选地8个四字大小元素组成);带有16比特(2字节)或8比特(1字节)数据元素宽度(或大小)的64字节矢量操作数长度(或大小);带有32比特(4字节)、64比特(8字节)、16比特(2字节)、或8比特(1字节)数据元素宽度(或大小)的32字节矢量操作数长度(或大小);以及带有32比特(4字节)、64比特(8字节)、16比特(2字节)、或8比特(1字节)数据元素宽度(或大小)的16字节矢量操作数长度(或大小);但备选实施例可支持带有更多、更少、或不同数据元素宽度(例如,128比特(16字节)数据元素宽度)的更多、更少和/或不同矢量操作数大小(例如,256字节矢量操作数)。图1A中的类别A指令模板包括:1)在无存储器访问105指令模板内,示出了无存储器访问、完整舍入(fullround)控制类型操作110指令模板,和无存储器访问、数据变换类型操作115指令模板;以及2)在存储器访问120指本文档来自技高网...

【技术保护点】
1.一种处理器,包括:解码器,用于对指令进行解码以生成解码指令,所述指令包括操作码以及标识打包数据目的地寄存器和多个打包数据源寄存器的操作数;第一源寄存器,用于存储第一多个打包双字数据元素;第二源寄存器,用于存储第二多个打包双字数据元素;第三源寄存器,用于存储多个打包四字数据元素;执行电路,用于执行所述解码指令,所述执行电路包括:乘法器电路,用于将来自所述第一源寄存器的第一和第二打包双字数据元素分别与来自所述第二源寄存器的第三和第四打包双字数据元素相乘,以生成第一和第二临时四字乘积,所述乘法器电路基于所述指令的所述操作码选择所述第一、第二、第三和第四双字数据元素;累加电路,用于将所述第一临时四字乘积与从所述第三源寄存器读取的第一打包四字值组合以生成第一累加四字结果,并将所述第二临时四字乘积与从所述第三源寄存器读取的第二打包四字值组合以生成第二累加四字结果;目的地寄存器或所述第三源寄存器,用于将所述第一累加四字结果存储在第一四字数据元素位置中,并将所述第二累加四字结果存储在第二四字数据元素位置中。

【技术特征摘要】
2017.12.21 US 15/8504121.一种处理器,包括:解码器,用于对指令进行解码以生成解码指令,所述指令包括操作码以及标识打包数据目的地寄存器和多个打包数据源寄存器的操作数;第一源寄存器,用于存储第一多个打包双字数据元素;第二源寄存器,用于存储第二多个打包双字数据元素;第三源寄存器,用于存储多个打包四字数据元素;执行电路,用于执行所述解码指令,所述执行电路包括:乘法器电路,用于将来自所述第一源寄存器的第一和第二打包双字数据元素分别与来自所述第二源寄存器的第三和第四打包双字数据元素相乘,以生成第一和第二临时四字乘积,所述乘法器电路基于所述指令的所述操作码选择所述第一、第二、第三和第四双字数据元素;累加电路,用于将所述第一临时四字乘积与从所述第三源寄存器读取的第一打包四字值组合以生成第一累加四字结果,并将所述第二临时四字乘积与从所述第三源寄存器读取的第二打包四字值组合以生成第二累加四字结果;目的地寄存器或所述第三源寄存器,用于将所述第一累加四字结果存储在第一四字数据元素位置中,并将所述第二累加四字结果存储在第二四字数据元素位置中。2.如权利要求1所述的处理器,进一步包括:饱和电路,用于在存储在所述目的地寄存器中之前使所述第一和第二累加四字结果饱和。3.如权利要求1或2所述的处理器,其中所述第一、第二、第三和第四打包双字数据元素是带符号数据元素,并且其中所述第一和第二累加四字结果是带符号数据元素。4.如权利要求1或3所述的处理器,其中所述第一、第二和第三源寄存器包括配置成存储四个打包双字数据元素和/或两个打包四字数据元素的128比特寄存器。5.如权利要求4所述的处理器,其中响应于第一操作码,所述第一和第三打包双字数据元素要分别选自所述第一和第二源寄存器的打包双字位置[31:0],并且所述第二和第四打包双字数据元素要分别选自所述第一和第二源寄存器的打包双字位置[95:64]。6.如权利要求5所述的处理器,其中响应于第二操作码,所述第一和第三打包双字数据元素要分别选自所述第一和第二源寄存器的打包双字位置[63:32],并且所述第二和第四打包双字数据元素要分别选自所述第一和第二源寄存器的打包双字位置[127:96]。7.如权利要求1或6所述的处理器,其中所述第一累加四字结果和第二累加四字结果要进一步与响应于一个或更多附加指令的执行而生成的一个或更多附加临时四字乘积累加。8.一种方法,包括:对指令进行解码以生成解码指令,所述指令包括操作码以及标识打包数据目的地寄存器和多个打包数据源寄存器的操作数;将第一多个打包双字数据元素存储在第一源寄存器中;将第二多个打包双字数据元素存储在第二源寄存器中;将多个打包四字数据元素存储在第三源寄存器中;将来自所述第一源寄存器的第一和第二打包双字数据元素分别与来自所述第二源寄存器的第三和第四打包双字数据元素相乘,以生成第一和第二临时四字乘积,要基于所述指令的所述操作码来选择所述第一、第二、第三和第四双字数据元素;将所述第一临时四字乘积与从所述第三源寄存器读取的第一打包四字值累加以生成第一累加四字结果,并将所述第二临时四字乘积与从所述第三源寄存器读取的第二打包四字值累加以生成第二累加四字结果;将所述第一累加四字结果存储在所述第三源寄存器或目的地寄存器中的第一四字数据元素位置中,并将所述第二累加四字结果存储在所述第三源寄存器或所述目的地寄存器中的第二四字数据元素位置中。9.如权利要求8所述的方法,进一步包括:在存储在所述目的地寄存器中之前使所述第一和第二累加四字结果饱和。10.如权利要求8或9所述的方法,其中所述第一、第二、第三和第四打包双字数据元素是带符号数据元素,并且其中所述第一和第二累加四字结果是带符号数据元素。11.如权利要求8或10所述的方法,其中所述第一、第二和第三源寄存器包括配置为存储四个打包双字数据元素和/或两个打包四字数据元素的128比特寄存器。12.如权利要求11所述的方法,其中响应于第一操作码,所述第一和第三打包双字数据元素要分别选自所述第一和第二源寄存器的打包双字位置[31:0],并且所述第二和第四打包双字数据元素要分别选自所述第一和第二源寄存器的打包双字位置[95:64]。13.如权利要求12所述的方法,其中响应于第二操作码,所述第一和第三打包双字数据元素要分别选自所述第一和第...

【专利技术属性】
技术研发人员:E奥尔德艾哈迈德瓦尔R瓦伦丁M查尼J科巴尔V马杜里
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

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

1