CN108845826B - 多寄存器存储器访问指令、处理器、方法和*** - Google Patents
多寄存器存储器访问指令、处理器、方法和*** Download PDFInfo
- Publication number
- CN108845826B CN108845826B CN201810502429.9A CN201810502429A CN108845826B CN 108845826 B CN108845826 B CN 108845826B CN 201810502429 A CN201810502429 A CN 201810502429A CN 108845826 B CN108845826 B CN 108845826B
- Authority
- CN
- China
- Prior art keywords
- processor
- memory
- bit
- register
- coupled
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1036—Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
处理器包括N位寄存器和接收多寄存器存储器访问指令的解码单元。多寄存器存储器访问指令指示存储器单元和寄存器。处理器包括与解码单元和与N位寄存器耦合的存储器访问单元。存储器访问单元响应于多寄存器存储器访问指令而执行多寄存器存储器访问操作。操作涉及在包括所指示的寄存器的N位寄存器的每一个中的N位数据。操作也涉及对应于所指示的存储器单元的存储器的MxN位线的不同的对应N位部分。在多寄存器存储器访问操作中涉及的N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的至少一半。
Description
本申请是申请日为2014年6月26日、申请号为201480030741.2的同名专利申请的分案申请。
技术领域
本文所述的实施例通常涉及处理器。特别是,本文所述的实施例通常涉及使用处理器来访问存储器中的数据。
背景技术
很多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,紧缩数据指令(packeddata instruction)、矢量指令或SIMD指令可同时或并行地对多个数据元素(例如多对数据元素)操作。多个数据元素可被紧缩在寄存器或存储器单元内作为紧缩数据。在紧缩数据中,寄存器或其它存储单元的位可在逻辑上分成一系列数据元素。例如,64位宽紧缩数据寄存器可具有两个紧缩的32位数据元素、四个紧缩的16位数据元素或八个紧缩的8位数据元素。处理器可具有响应于紧缩数据指令来同时(例如并行地)执行多个操作的并行执行硬件。
在一些处理器中,这些年来存在紧缩数据操作数的宽度的逐渐增加。紧缩数据操作数的宽度的这个增加通常允许更多的数据元素被同时处理(例如并行地),这通常帮助提高性能。例如,128位宽紧缩数据操作数可具有四个32位数据元素(而不是在64位宽紧缩数据操作数的情况中的仅仅两个)、八个紧缩16位数据元素(而不是在64位宽紧缩数据操作数的情况中的仅仅四个)等。
在某些处理器中,紧缩数据操作数的宽度的增加伴随寄存器的宽度的对应增加。然而,增加寄存器的宽度的一个可能的缺点是由管芯上寄存器占据的区域或覆盖区的增加。例如,扩展一组64位寄存器中的每一个寄存器使得它们每一个是128位寄存器将可能使由管芯上寄存器占据的区域或覆盖区大致加倍。在有比架构寄存器更多的所实现的物理寄存器的实现中影响将可能甚至更大,因为较大数量的寄存器的尺寸可大致被加倍。寄存器的宽度的这样的增加的另一可能的缺点是在状态、上下文或存储在寄存器中的其它数据的数量的对应增加,这些数据需要在上下文开关、功率模式状态保存和类似转变时移动到寄存器和从寄存器移动(例如保存和恢复)。例如,对于每一个寄存器,128位而不是仅仅64位可能需要在上下文改变时被换入和换出。
处理器一般执行从存储器装入数据(例如紧缩数据操作数)并将数据(例如紧缩数据操作数)存储到存储器的指令。例如,处理器可执行从存储器装入指令以将紧缩数据操作数从存储器装入或读取到目的寄存器内。处理器可执行写到存储器指令以将紧缩数据操作数从源寄存器写或存储到存储器。
附图说明
通过参考下面的描述和用于示出实施例的附图可最好地理解本发明。
在附图中:
图1是计算机***的实施例的方框图。
图2是处理多寄存器存储器访问指令的实施例的方法的实施例的方框流程图。
图3是处理多寄存器从存储器装入指令的实施例的方法的实施例的方框流程图。
图4是处理多寄存器写到存储器指令的实施例的方法的实施例的方框流程图。
图5是适当的多寄存器存储器访问操作的第一示例实施例的方框图。
图6是适当的多寄存器存储器访问操作的第二示例实施例的方框图。
图7是适当的多寄存器存储器访问操作的第三示例实施例的方框图。
图8是示出一组寄存器在不同的视图中可以作为64位寄存器、128位寄存器和256位寄存器被考虑或访问的实施例的方框图。
图9A-9C是多寄存器存储器访问指令的适当指令格式的实施例的方框图。
图10A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名无序发布/执行流水线的方框图。
图10B是示出根据本发明的实施例的被包括在处理器中的有序架构核心和示例性寄存器重命名无序发布/执行架构核心的示例性实施例的方框图。
图11A是根据本发明的实施例的单处理器核心连同它到管芯上互连网络的连接及它的2级(L2)高速缓存的本地子集的方框图。
图11B是根据本发明的实施例的在图11A中的处理器核心的部分的展开图。
图12是根据本发明的实施例的可具有多于一个核心、可具有集成存储器控制器以及可具有集成图形的处理器的方框图。
图13示出根据本发明的一个实施例的***的方框图。
图14示出根据本发明的实施例的第一更具体的示例性***的方框图。
图15示出根据本发明的实施例的第二更具体的示例性***的方框图。
图16示出根据本发明的实施例的SoC的方框图。
图17是根据本发明的实施例的对照将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的方框图。
具体实施方式
在下面的描述中,阐述了很多特定的细节(例如响应于指令而执行的特定操作、特定数量的寄存器、特定尺寸的寄存器、特定尺寸的高速缓存线、特定的处理器配置、特定的微架构细节、特定序列的操作等)。然而,实施例可在没有这些特定细节的情况下被实施。在其它实例中,没有详细示出公知的电路、结构和技术以避免使描述难理解。
常规存储器访问指令在存储器访问中常常只涉及单个寄存器。在存储器和单个寄存器之间交换的数据的数量仅仅是单个寄存器的宽度(例如在64位寄存器的情况下的64位)。然而,通常在存储器中的数据被组织为较宽的“线”。存储器的这些线表示在存储器和处理器(例如处理器的一个或多个高速缓存)之间传输或交换的数据的数量。例如,即使只有数据的64位可实际上被传输到寄存器文件或从寄存器文件传输,通常具有数据的那64位的存储器的更宽的整线可在存储器和处理器的高速缓存之间传输。存储器的线可存储在高速缓存内的高速缓存线中。很多处理器通常使用存储器的512位宽线和对应的512位宽高速缓存线。64位数据到单个目的地寄存器内的装入可将具有64位数据的存储器的整个512位线装入或取回到处理器的高速缓存的512位高速缓存线内且只将64位数据装入单个目的地寄存器内。只有数据的64位将会实际上被从高速缓存传输到寄存器文件。
这样的常规“单个寄存器”存储器访问指令的一个潜在的缺点是,在高速缓存和寄存器之间的所利用的带宽可倾向于相对低,特别是在利用相对窄的寄存器来存储紧缩数据的处理器中。在一些情况下,在存储器和/或高速缓存线的相同线内的其它数据也可能对处理而言是被需要的,但常规上不被指令带到寄存器内。例如,对于在比处理器的寄存器更宽的存储器中的宽紧缩数据操作数而言情况可能就是这样。在一些情况下,将存储器的至少一半线或在其它情况下存储器的整线装入处理器的寄存器内可能是合乎需要的。将存储器的整个512位线装入八个64位寄存器内的一种可能的方式将是使用八个单独的单64位寄存器从存储器装入指令。例如,指示存储器中512位线的第一64位数据的第一单64位寄存器从存储器装入指令可将所指示的第一64位部分装入和存储到第一所指示的寄存器内。存储器的整个512位线可从存储器被取回到处理器内并存储在512位高速缓存线中。指示存储器中512位线的第二64位数据的第二单64位寄存器从存储器装入指令可从已经装入的512位高速缓存线装入所指示的第二64位部分并将第二64位数据存储在第二所指示的寄存器中。类似地,第三到第八单64位寄存器从存储器装入指令也可使用来自已经装入高速缓存中的高速缓存线的数据。然而,这样的方法的可能的缺点是执行多个指令的需要,这往往增加代码大小和处理时间,并可涉及多个高速缓存访问。
在本文公开了多寄存器存储器访问指令、执行指令的处理器、当处理或执行指令时由处理器执行的方法、以及合并一个或多个处理器以处理或执行指令的***。
图1是计算机***100的实施例的方框图。在各种实施例中,计算机***可代表台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本计算机、智能电话、个人数字助理、蜂窝电话、服务器、网络设备(例如路由器或开关)、移动互联网设备(MID)、媒体播放器、智能电视机、机顶盒、视频游戏控制器或具有至少一个处理器的其它类型的电子设备。
计算机***包括处理器102和存储器120。存储器可包括相同或不同类型的一个或多个存储器设备。适合于实施例的一种常见类型的存储器是动态随机存取存储器(DRAM),虽然也可使用其它类型的存储器(例如闪存)。处理器和存储器通过互连机构124彼此耦合。在本领域中已知的用于耦合处理器与存储器的任何常规互连机构是适当的。这样的机构的示例包括但不限于互连、总线、集线器、存储器控制器、芯片组、芯片组部件等及其组合。
处理器102代表可操作来处理指令的指令处理装置。在一些实施例中,处理器可以是通用处理器(例如在台式计算机、膝上型计算机和类似计算机中使用的类型的通用微处理器)。可选地,处理器可以是专用处理器。适当的专用处理器的示例包括但不限于网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如微处理器),仅举几个示例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合或完全其它类型的处理器中的任一个。
处理器102可接收多寄存器存储器访问指令104。在一些实施例中,多寄存器存储器访问指令可代表多寄存器从存储器装入指令。在其它实施例中,多寄存器存储器访问指令可代表多寄存器存储到存储器指令。多寄存器存储器访问指令可代表机器代码指令、汇编语言指令、宏指令、或处理器的指令集的控制信号。在一些实施例中,多寄存器存储器访问指令可明确地规定(例如通过一组位或一个或多个字段)或以另外方式指示(例如隐含地指示)在存储器120中的存储器单元118,并可明确地规定或以另外方式指示寄存器112(例如由一组N位寄存器110实现的寄存器)。
处理器包括指令解码单元106。指令解码单元也可被称为解码单元、解码器或解码逻辑。解码单元可接收并解码相对较高级指令(例如机器代码指令、汇编语言指令、宏指令),并输出反映、代表较高级指令和/或从较高级指令得到的一个或多个相对较低级指令或控制信号(例如微指令、微操作、微代码输入点)。一个或多个较低级指令或控制信号可通过一个或多个较低级(例如电路级或硬件级)操作来实现较高级指令。可使用各种不同的机制(包括但不限于微码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和用于实现本领域中已知的解码单元的其它机制)来实现解码单元。
在其它实施例中,可使用仿真器、翻译器、变形器、解释程序或其它指令转换逻辑。各种不同类型的指令转换逻辑在本领域中是已知的,并可在软件、硬件、固件或其组合中实现。指令转换逻辑可将指令仿真、翻译、变形、解释或转换成一个或多个对应的所得到的指令或控制信号。在一些实施例中,可使用指令转换逻辑和解码单元。例如,指令转换逻辑可将指令转换成一个或多个中间指令,且解码单元可将一个或多个中间指令解码成由处理器的集成电路可执行的一个或多个较低级指令或控制信号。指令转换逻辑可位于处理器外部(例如在单独管芯上或在存储器中)、在处理器上或组合。
再次参考图1,存储器访问单元108与解码单元106耦合。存储器访问单元可接收代表多寄存器存储器访问指令104和/或从多寄存器存储器访问指令104得到的一个或多个解码或转换的指令或控制信号。存储器访问单元也通过互连机构124与存储器120耦合。存储器访问单元可实现常常在处理器的存储器子***中找到的一个或多个部件以访问存储器或与存储器交互。这样的部件的示例包括但不限于存储器访问逻辑、总线接口单元、高速缓存的一个或多个级、一个或多个转换后备缓冲器(TLB)、虚拟地址转换逻辑等。如所示,存储器访问单元可具有至少一个高速缓存109。
处理器102还包括一组N位寄存器110。每一个寄存器可代表可操作来存储数据(例如N位数据)的管芯上存储单元。在一些实施例中,N位寄存器可代表可操作来存储N位紧缩数据、矢量数据、或单指令多数据(SIMD)数据的紧缩数据寄存器,虽然这不是需要的。在各种实施例中,N位寄存器可以是64位寄存器、128位寄存器或256位寄存器。可选地,N位寄存器可具有其它尺寸(例如32位寄存器、80位寄存器等)。在一些实施例中,这组N位寄存器可包括、实现或包含由多寄存器存储器访问指令指示的寄存器112。寄存器对软件和/或编程员可以是可见的,和/或可由指令集的指令规定以识别操作数。寄存器可以在不同的微架构中使用公知的技术来实现,且不限于任何特定类型的电路。适当类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器和其组合。
如前面提到的,在一些实施例中,多寄存器存储器访问指令104可明确地指定(例如通过一组位或一个或多个字段)或指示(例如隐含地指示)寄存器112。在一些实施例中,这组N位寄存器可包括、实现或包含由多寄存器存储器访问指令指示的寄存器112。而且在一些实施例中,多寄存器存储器访问指令可明确地指定或指示在存储器中的存储器单元118。在一些实施例中,存储器中的数据可被组织为存储器中的线。图示示出对应于所指示的存储器单元118(例如包括在所指示的存储器单元处的数据)的存储器116的MxN位线。存储器的MxN位线具有数据的整数M数量的N位宽部分。如所示,存储器的MxN位线可以具有第一N位数据114-1到第M N位数据114-M。在一些实施例中,MxN位线是至少512位。在一个实施例中,整数N可以是128位,而整数M可以是四。在另一实施例中,整数N可以是256位,而整数M可以是二。在又一实施例中,整数N可以是64位,而整数M可以是八。在其它实施例中,MxN位线宽度可具有其它宽度(例如256位、至少512位、1024位等)。N位数据元素的数量M通常等于存储器的线的宽度除以N位数据元素的宽度。在一些实施例中,MxN位线可具有等于处理器的高速缓存线的宽度。
在一些实施例中,存储器访问单元108可响应于多寄存器存储器访问指令104和/或作为多寄存器存储器访问指令104的结果(例如响应于代表多寄存器存储器访问指令和/或从多寄存器存储器访问指令得到的一个或多个解码的或转换的指令或控制信号)来操作以执行多寄存器存储器访问操作。在一些实施例中,多寄存器存储器访问操作可涉及在包括、实现或包含由指令104指示的寄存器112的多个N位寄存器110的每一个中的N位数据。而且,在一些实施例中,多寄存器存储器访问操作也可涉及对应于所指示的存储器单元118的存储器116的MxN位线的不同的对应N位部分114。如所示,存储器的MxN位线可例如以通常常规的方式存储在高速缓存109的MxN位高速缓存线122中。存储器访问单元和/或处理器可包括可操作来响应于指令而执行操作的特定或特有的逻辑(例如电路或可能与固件和/或软件组合的其它硬件)。
在一些实施例中,多寄存器存储器访问指令可以是多寄存器从存储器装入指令。响应于多寄存器从存储器装入指令,在一些实施例中,处理器可将存储器的MxN位线的不同N位部分装入多个N位寄存器的每一个中。在其它实施例中,多寄存器存储器访问指令可以是多寄存器写到存储器指令。响应于多寄存器写到存储器指令,在一些实施例中,处理器可将N位数据从多个N位寄存器的每一个写到存储器的MxN位线的不同的对应N位部分。
在一些实施例中,在多寄存器存储器访问操作中涉及的位的总数(例如在操作中涉及的多个N位寄存器110的每一个中的N位数据的和)可等于存储器116的线的MxN位的至少一半或在一些情况下达到全部。在一些实施例中,存储器的线的MxN位的至少一半或在一些情况下达到全部可从高速缓存109传输到这组寄存器110。在各种实施例中,可涉及至少两个、三个、四个或更多个寄存器。作为一个示例,在MxN位等于512位且N等于128位的实施例中,于是在各种方面中至少两个128位寄存器110、在一些情况下三个128位寄存器110、或在一些情况下四个128位寄存器110可在多寄存器存储器访问操作中被涉及。作为另一示例,在MxN位等于512位且N等于64位的实施例中,于是在各种方面中至少三个64位寄存器110、至少四个64位寄存器110、或在一些情况下大约达到八个64位寄存器110可在多寄存器存储器访问操作中被涉及。作为又一示例,在MxN位等于512位且N等于256位的实施例中,两个256位寄存器110可在多寄存器存储器访问操作中被涉及。
为了避免使描述难理解,示出并描述了相对简单的处理器102。在其它实施例中,处理器可以可选地包括在处理器中找到的其它公知的部件。这样的部件的示例包括但不限于分支预测单元、指令取出单元、指令和数据转换后备缓冲器、预取缓冲器、微指令队列、微指令序列、寄存器重命名单元、指令调度单元、引退单元、包括在处理器中的其它部件和其各种组合。实际上有在处理器中的部件的很多不同的组合和配置,且实施例不限于任何特定的组合或配置。实施例可包括在具有多个核心、逻辑处理器、或执行引擎的处理器中,其中至少一个能够执行多寄存器存储器访问指令的实施例。
图2是处理多寄存器存储器访问指令的实施例的方法230的实施例的方框流程图。该方法可由处理器、指令处理装置、集成电路等执行和/或在处理器、指令处理装置、集成电路等内执行。
该方法包括在块231接收多寄存器存储器访问指令。在一些实施例中,多寄存器存储器访问指令可指定或指示存储器单元,并可指定或指示寄存器。在各种方面中,可在处理器、指令处理装置或其一部分(例如指令取出单元、解码单元、指令转换器等)处接收指令。在各种方面中,可从管芯外源(例如从存储器、磁盘、互连等)或从管芯上源(例如从指令高速缓存、指令取出单元等)接收指令。
该方法包括在块232响应于多寄存器存储器访问指令而执行多寄存器存储器访问操作。在一些实施例中,存储器访问单元或处理器的其它部分可执行存储器访问操作。在一些实施例中,多寄存器存储器访问操作可涉及在包括、实现或包含所指示的寄存器和对应于所指示的存储器单元的存储器的MxN位线的不同的对应N位部分的多个N位寄存器的每一个中的N位数据(例如存储器的MxN位线包括在所指示的存储器单元处的数据)。
在一些实施例中,在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数可等于存储器的线的MxN位的至少一半或在一些情况下达到全部。在一些实施例中,在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数可等于至少256位、至少512位或在一些情况下更多位(例如1024位)。在各种实施例中,在多寄存器存储器访问操作中可涉及至少两个、三个、四个或更多个寄存器。
图3是处理多寄存器从存储器装入指令的实施例的方法330的实施例的方框流程图。该方法可由处理器、指令处理装置、集成电路等执行和/或在处理器、指令处理装置、集成电路等内执行。
该方法包括在块331接收多寄存器从存储器装入指令。在一些实施例中,多寄存器从存储器装入指令可指定或指示存储器单元,并可指定或指示寄存器。可以用上面结合图2所述的各种方式来接收指令。
该方法还包括在块332响应于多寄存器从存储器装入指令而执行多寄存器从存储器装入操作。在一些实施例中,存储器访问单元或处理器的其它部分可执行操作。在一些实施例中,执行操作可包括在包括所指示的寄存器的多个N位寄存器的每一个中装入对应于所指示的存储器单元的存储器的MxN位线的不同的N位部分。在一些实施例中,这可包括将来自MxN位高速缓存线的不同的N位部分从高速缓存传输到每一个不同的N位寄存器。
在一些实施例中,从存储器的MxN位线装入在多个N位寄存器中的不同的N位部分的位的总数等于存储器的线的MxN位的至少一半或在一些情况下达到全部。在一些实施例中,从存储器的MxN位线装入在多个N位寄存器中的不同的N位部分的位的总数可等于至少256位、至少512位、或在一些情况下更多位(例如1024位)。在各种实施例中,在多寄存器从存储器装入操作中可涉及至少两个、三个、四个或更多个寄存器。在一个特定的示例中,操作可装入在至少四个128位寄存器的每一个中为至少512位的存储器的线的不同的128位部分。在另一特定的示例中,操作可装入在至少两个256位寄存器的每一个中为至少512位的存储器的线的不同的256位部分。
图4是处理多寄存器存储到存储器指令的实施例的方法430的实施例的方框流程图。该方法可由处理器、指令处理装置、集成电路等执行和/或在处理器、指令处理装置、集成电路等内执行。
该方法包括在块431接收多寄存器存储到存储器指令。在一些实施例中,多寄存器存储到存储器指令可指定或指示存储器单元,并可指定或指示寄存器。可以用在上面结合图2所述的各种方式接收指令。
该方法还包括在块432响应于多寄存器存储到存储器指令执行多寄存器存储到存储器操作。在一些实施例中,存储器访问单元或处理器的其它部分可执行该操作。在一些实施例中,执行该操作可包括将N位数据从包括所指示的寄存器的多个N位寄存器的每一个写到对应于所指示的存储器单元的存储器的MxN位线的不同的对应N位部分。在一些实施例中,这可包括将N位数据从多个N位寄存器中的每一个传输到高速缓存并将每一个不同的N位数据存储在MxN位高速缓存线的不同的N位部分中。
在一些实施例中,从多个N位寄存器写到存储器的MxN位线的N位数据的位的总数可等于存储器的线的MxN位的至少一半或在一些情况下达到全部。在一些实施例中,从多个N位寄存器写到存储器的MxN位线的N位数据的位的总数可等于至少256位、至少512位、或在一些情况下更多位(例如1024位)。在各种实施例中,在多寄存器存储到存储器操作中可涉及至少两个、三个、四个或更多个寄存器。
以相对基本的形式描述了图2-4的方法。然而,操作可以可选地添加到方法和/或从方法移除。例如,在一些实施例中,操作可以可选地添加到这些方法中的任一个以将与多个N位寄存器相关联的N位数据(例如将被装入到N位寄存器内或从N位寄存器写入)存储在高速缓存中的MxN位高速缓存线的不同的对应N位部分中。作为另一示例,在一些实施例中,操作可以可选地添加到这些方法中的任一个以在高速缓存和N位寄存器之间传输与多个N位寄存器相关联的N位数据(例如将会被装入到N位寄存器内或从N位寄存器写入)。作为另外的示例,一个或多个操作可以可选地被添加以取出指令、对指令解码、使指令引退等或其各种组合。
在一些实施例中,图2-4中的任一个的操作和/或方法可由图1的处理器执行和/或在图1的处理器内执行。可选地,上面对图1的处理器描述的细节和可选细节也可选地应用于图2-4的操作和/或方法,其在实施例中可由这样的处理器执行和/或在这样的处理器内执行。可选地,图2-4中的任一个的操作和/或方法可由类似或不同的处理器执行和/或在类似或不同的处理器内执行。而且,图1的处理器可执行与图2-4中的任一个的处理器相同、相似或不同的操作和/或方法。
图5是可响应于多寄存器存储器访问指令的第一示例实施例而执行的适当的多寄存器存储器访问操作530的第一示例实施例的方框图。多寄存器存储器访问指令可指示在存储器520中的存储器单元518和处理器502的寄存器512。在这个实施例中,所指示的存储器单元对应于具有四个128位数据部分514-1到514-4的存储器516的512位线。例如,存储器的512位线可将数据存储在所指示的存储器单元处。在这个实施例中,所指示的寄存器包括一组四个128位寄存器510、由一组四个128位寄存器510实现、或包含一组四个128位寄存器510。在一些实施例中,四个128位寄存器可以是相邻的或连续的寄存器。
在这个实施例中,多寄存器存储器访问操作涉及在四个128位寄存器510的每一个中的四个不同的128位数据部分514和存储器516的512位线的不同的对应128位部分514。例如,操作可在存储器的512位线和这组四个128位寄存器之间传输或交换数据。在一些实施例中,操作可以是多寄存器从存储器装入操作的实施例,且128位数据部分514可从存储器516的512位线装入或读取到四个128位寄存器510内。在其它实施例中,操作可以是多寄存器写到存储器操作的实施例,且128位数据部分514可从四个128位寄存器510写到或存储到存储器516的512位线。
存储器的512位线也可存储在高速缓存509的512位高速缓存线522中。在一些实施例中,可在存储器和处理器(例如高速缓存)之间通过互连524交换数据。在一些实施例中,互连524可根据时钟速率等具有512位、256位的位宽或某个其它位宽。在一些实施例中,可在高速缓存和这组四个128位寄存器之间通过互连534交换数据。在一些实施例中,互连534可根据时钟速率等具有512位或至少256位的带宽或位宽。本发明的范围不限于互连524或534的位宽。
图6是可响应于多寄存器存储器访问指令的第二示例实施例而执行的适当的多寄存器存储器访问操作630的第二示例实施例的方框图。多寄存器存储器访问指令可指示在存储器620中的存储器单元618和处理器602的寄存器612。在这个实施例中,所指示的存储器单元对应于具有两个256位数据部分614-1到614-2的存储器616的512位线。例如,存储器的512位线可将数据存储在所指示的存储器单元处。在这个实施例中,所指示的寄存器包括一组两个256位寄存器610-1、610-2、由一组两个256位寄存器610-1、610-2实现、或包含一组两个256位寄存器610-1、610-2。在一些实施例中,两个256位寄存器可以是相邻的或连续的寄存器。
在这个实施例中,多寄存器存储器访问操作涉及在两个256位寄存器610的每一个中的两个不同的256位数据部分614,以及存储器616的512位线的不同的对应256位部分614。例如,操作可在存储器的512位线和这两个256位寄存器之间传输或交换数据。在一些实施例中,操作可以是多寄存器从存储器装入操作的实施例,且256位数据部分614可从存储器616的512位线装入或读取到两个256位寄存器610内。在其它实施例中,操作可以是多寄存器写到存储器操作的实施例,且256位数据部分614可从两个256位寄存器610写到或存储到存储器616的512位线。
存储器的512位线也可存储在高速缓存609的512位高速缓存线622中。在一些实施例中,可在存储器和处理器(例如高速缓存)之间通过互连624交换数据。在一些实施例中,互连624可根据时钟速率等具有512位、256位的位宽或某个其它位宽。在一些实施例中,可在高速缓存和这组两个256位寄存器之间通过互连634交换数据。在一些实施例中,互连634可根据时钟速率等具有512位或至少256位的带宽或位宽。本发明的范围不限于互连624或634的位宽。
图7是可响应于多寄存器存储器访问指令的第三示例实施例而执行的适当的多寄存器存储器访问操作730的第三示例实施例的方框图。多寄存器存储器访问指令可指示在存储器720中的存储器单元718和处理器702的寄存器712。在这个实施例中,所指示的存储器单元对应于具有八个64位数据部分714-1到714-8的存储器716的512位线。例如,存储器的512位线可将数据存储在所指示的存储器单元处。在这个实施例中,所指示的寄存器包括一组四个64位寄存器710、由一组四个64位寄存器710实现、或包含一组四个64位寄存器710。在其它实施例中,可使用在四个和八个64位寄存器710之间的任何数目(例如六个、八个等)。在一些实施例中,四个或多达八个64位寄存器可以是相邻的或连续的寄存器。
在这个实施例中,多寄存器存储器访问操作涉及在四个(或多达八个)64位寄存器710的每一个中的四个(或多达八个)不同的64位数据部分714,以及存储器716的512位线的不同的对应64位部分714。例如,操作可在存储器的512位线的四个(或多达八个)数据部分和这四个(或多达八个)64位寄存器之间传输或交换数据。在一些实施例中,操作可以是多寄存器从存储器装入操作的实施例,且四个(或多达八个)64位数据部分714可从存储器716的512位线装入或读取到四个(或多达八个)64位寄存器710内。在其它实施例中,操作可以是多寄存器写到存储器操作的实施例,且四个(或多达八个)64位数据部分714可从四个(或多达八个)64位寄存器710写到或存储到存储器716的512位线。在所示示例实施例中,使用存储器的512位线的最低位(lowest order)的一半(即包括最低位四个数据部分714-1到714-4),虽然这不是需要的。在另一实施例中,可替代地使用最高位(highest order)的一半或某个其它部分。
存储器的512位线也可存储在高速缓存709的512位高速缓存线622中。在一些实施例中,可在存储器和处理器(例如高速缓存)之间通过互连724交换数据。在一些实施例中,互连724可根据时钟速率等具有512位、256位的位宽或某个其它位宽。在一些实施例中,可在高速缓存和这组四个(或多达八个)64位寄存器之间通过互连734交换数据。在一些实施例中,互连734可根据时钟速率等具有128位或256位(例如在只有四个寄存器被使用的情况下)、或256位或512位(例如在多达八个寄存器被使用的情况下)的带宽或位宽。本发明的范围不限于互连724或734的位宽。
应认识到,仅仅有适当操作的几个例证性示例。设想其它示例,其中使用存储器的更窄(例如256位)或更宽(例如1024位)线。而且,设想其它示例,其中使用其它尺寸的数据部分和/或寄存器(例如32位寄存器)。
在一些实施例中,同一组寄存器可作为更大数量的较小的寄存器或更少数量的较大寄存器被处理器(例如存储器访问单元、执行单元等)考虑或访问。可在一个视图中作为单独的更小寄存器被考虑或访问的相同的两个或多个寄存器可在其它视图中作为组合的更大的单个寄存器被考虑或访问。例如在一些实施例中,相邻的一对寄存器可单独地被看作两个N/2位寄存器或可被逻辑地组合或聚集在一起并被共同看作单个N位寄存器。可在两种情形中涉及相同的物理寄存器和相同总数的物理寄存器位,但它们可以用不同的方式被考虑和访问。这样的布置的一个潜在的优点是存储较大的操作数(例如紧缩数据操作数)而不需要增加基础物理寄存器的宽度的能力。这可具有潜在的优点,例如避免寄存器文件在管芯上占据的区域或覆盖区的增加、避免需要在上下文切换或功率模式转变时被换入和换出寄存器的数据的数量的增加。
图8是示出一组寄存器作为在第一视图840中的64位寄存器、在第二视图842中的128位寄存器和在第三视图844中的256位寄存器被考虑或访问的示例实施例的方框图。在第一视图840中,这组寄存器(例如物理寄存器)在逻辑上被考虑或访问作为:被标记为X0-X3的四个64位紧缩数据寄存器。
在第二视图842中,相同的一组寄存器(例如物理寄存器)在逻辑上被考虑或访问作为:被标记为Y0-Y1的两个(即半数)128位寄存器。在第二视图842中,128位寄存器Y0的最低位64位(即位63:0)映射到或对应于64位寄存器X0,而128位寄存器Y0的最高位64位(即位127:64)映射到或对应于64位寄存器X1。类似地,128位寄存器Y1的最低位64位(即位63:0)映射到或对应于64位寄存器X2,而128位寄存器Y1的最高位64位(即位127:64)映射到或对应于64位寄存器X3。多个(在这种情况下是二个)较小的(在这种情况下是64位)寄存器在逻辑上组合或聚集以形成单个较大的(在这种情况下是128位)寄存器。
在第三视图844中,相同的一组寄存器(例如物理寄存器)在逻辑上被考虑或访问作为:被标记为Z0的单个256位寄存器。在第三视图844中,256位寄存器Z0的最低位64位(即位63:0)映射到或对应于64位寄存器X0,256位寄存器Z0的最低中间位(intermediateorder)64位(即位127:64)映射到或对应于64位寄存器X1,256位寄存器Z0的最高中间位64位(即位191:128)映射到或对应于64位寄存器X2,且256位寄存器Z0的最高位64位(即位255:192)映射到或对应于64位寄存器X3。在第三视图844中,256位寄存器Z0的最低位128位(即位127:0)映射到或对应于128位寄存器Y0,而256位寄存器Z0的最高位128位(即位255:128)映射到或对应于128位寄存器Y1。
在各种实施例中,用于实现视图的实际物理寄存器可以是64位寄存器、32位寄存器或128位寄存器,虽然这不是需要的。在所示实施例中,使用相邻或连续的寄存器,虽然这不是需要的。在其它实施例中,可组合非相邻寄存器(例如在不同的库(bank)中的非相邻寄存器、交替的寄存器等)。在所示实施例中,支持三个不同的视图,虽然在其它实施例中可支持更少(例如两个)或更多(例如四个或更多个)不同的视图。
此外,在其它实施例中,视图可使用不同数量的位,例如在一些实施例中,可以有一个视图,其中一组寄存器可在逻辑上被考虑或访问作为:在一个视图中的单个512位寄存器和在另一视图中的多个较小的寄存器(例如两个256位寄存器、四个128位寄存器、八个64位寄存器等)。而且,在另一实施例中,可以有一个视图,其中一组寄存器可在逻辑上被考虑或访问作为:在一个视图中的单个1024位寄存器和在另一视图中的多个较小的寄存器(例如两个512位寄存器和/或四个256位寄存器和/或八个128位寄存器和/或十六个64位寄存器等)。
图9A是多寄存器存储器访问指令的适当指令格式的第一实施例的方框图。指令格式具有操作代码或操作码950A。操作码可代表可操作来识别待执行的指令和/或操作(例如多寄存器从存储器装入操作、多寄存器存储到存储器操作、或其它多寄存器存储器访问操作)的多个位或一个或多个字段。第一指令格式也包括存储器单元说明符925A以指定存储器单元。存储器单元说明符可代表多个位或一个或多个字段。指定的存储器单元可代表在从存储器装入指令的情况下的源,或在写到存储器指令的情况下的目的地。作为示例,说明符可用于指定待装入的数据的起始位置(例如数据的第一字节)。第一指令格式还包括可选寄存器说明符954A。寄存器说明符可指定寄存器。寄存器说明符可代表多个位或一个或多个字段。指定的寄存器可代表在从存储器装入指令的情况下的目的地寄存器,或在写到存储器指令的情况下的源寄存器。可选地,可以可选地省略寄存器说明符(例如寄存器可由指令隐含地指示而不是被明确地指定)。在一些实施例中,可基于明确指定或隐含地指定的寄存器来指示一个或多个其它寄存器。例如,一个或多个预定的寄存器可被隐含地指示或隐含地与明确指定或隐含地指定的寄存器相关联。例如,一个或多个相邻的、顺序的、或连续的寄存器可与寄存器相关联。作为另一示例,每一个其它寄存器可与寄存器相关联。作为又一示例,在不同的寄存器库中的预定顺序寄存器可与寄存器相关联。指令可隐含地指示寄存器的这样的实施例的一个特定示例是其中装入或存储操作涉及在架构中的所有在架构上可见的寄存器。可选地,给定寄存器可专用于多个寄存器装入、存储、或其它操作,且因此可以是隐含的。
图9B是多寄存器存储器访问指令的适当指令格式的第二实施例的方框图。第二指令格式具有操作代码或操作码950B、存储器单元说明符952B和寄存器说明符954B。这些中的每一个可以如前所述。第二指令格式也包括可选的寄存器数量说明符956以指定在存储器访问操作(例如被用作:在写到存储器操作的情况下的源,或在从存储器装入操作的情况下的目的地)中涉及的寄存器的数量。作为示例,寄存器数量说明符可用于指定或指示两个寄存器、三个寄存器、四个寄存器或某个其它数量的寄存器。在其它实施例中,不指定寄存器的数量,也可能指定与存储器操作相关联的位的数量(例如作为给定寄存器大小的倍数或位的数量)。这个字段是可选的且不是需要的。在另一实施例中,寄存器的数量可以是隐含的(例如对寄存器说明符954B隐含、对操作码950B隐含等)。
图9C是多寄存器存储器访问指令的适当指令格式的第三实施例的方框图。第三指令格式具有操作代码或操作码950C和存储器单元说明符952C。这些中的每一个可以如前所述。第三指令格式也包括多个可选的寄存器说明符958。在所示实施例中,示出四个寄存器说明符958-1到958-4,虽然更少(例如两个、三个)或多于四个可以可选地被包括。这些说明符中的每一个可代表多个位或一个或多个字段。这些多个寄存器说明符可允许:在存储器访问操作中涉及被组合的寄存器的明确说明。在一些情况下,这个可选的特征可用于优化或至少提高代码的性能、避免或至少减少寄存器到寄存器操作的数量,以四处移动数据等。这些多个寄存器说明符是可选的且不是需要的。
这些仅仅是适当的指令格式的几个示例。应认识到,额外的字段可以可选地被添加到这些指令格式中的任一个。在其它实施例中,某些明确指定的字段可相反可选地对指令是隐含的。应认识到,说明符或字段不需要包括位的连续序列,但可以相反可选地由非连续位形成。说明符或字段可以可选地重叠。此外,说明符或字段的所示顺序/布置仅仅是例证性的。其它实施例可移动或重新布置字段。
示例性核心架构、处理器和计算机架构
可以用不同的方式、为了不同的目的和在不同的处理器中实现处理器核心。例如,这样的核心的实现可包括:1)为通用计算而设计的通用有序(in-order)核心;2)为通用计算而设计的高性能通用无序(out-of-order)核心;3)主要为图形和/或科学(吞吐量)计算而设计的专用核心。不同处理器的实现可包括:1)包括为通用计算而设计的一个或多个通用有序核心和/或为通用计算而设计的一个或多个通用无序核心的CPU;以及2)包括主要为图形和/或科学(吞吐量)而设计的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机***架构,其可包括:1)在与CPU分离的芯片上的协处理器;2)在与CPU相同的封装中的单独管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这样的协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑或作为专用核心);以及4)可在同一管芯上包括所述CPU(有时被称为应用核心或应用处理器)、上面描述的协处理器和额外的功能的片上***。示例核心架构被接着描述,后面是示例性处理器和计算机架构的描述。
示例性核心架构
有序和无序核心方框图
图10A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名无序发布/执行流水线的方框图。图10B是示出根据本发明的实施例的被包括在处理器中的有序架构核心和示例性寄存器重命名无序发布/执行架构核心的示例性实施例的方框图。在图10A-B中的实线框示出有序流水线和有序核心,而虚线框的可选添加示出寄存器重命名无序发布/执行流水线和核心。假定有序方面是无序方面的子集,将描述无序方面。
在图10A中,处理器流水线1000包括取出级1002、长度解码级1004、解码级1006、分配级1008、重命名级1010、调度(也被称为分派或发布)级1012、寄存器读取/存储器读取级1014、执行级1016、写回/存储器写入级1018、异常处理级1022和提交级1024。
图10B示出包括耦合到执行引擎单元1050的前端单元1030的处理器核心1090,且两者都耦合到存储器单元1070。核心1090可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心、或混合或可选的核心类型。作为又一选择,核心1090可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,指令高速缓存单元1034耦合到指令转换后备缓冲器(TLB)1036,指令转换后备缓冲器(TLB)1036耦合到指令取出单元1038,指令取出单元1038耦合到解码单元1040。解码单元1040(或解码器)可对指令解码,并产生一个或多个微操作、微代码输入点、微指令、其它指令或从原始指令被解码或反映原始指令或从原始指令得到的其它控制信号作为输出。可使用各种不同的机制来实现解码单元1040。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心1090包括微代码ROM或存储某些宏指令的微代码(例如在解码单元1040中或在前端单元1030内)的其它介质。解码单元1040耦合到在执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括耦合到引退单元1054的重命名/分配器单元1052和一组一个或多个调度器单元1056。调度器单元1056代表任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元1056耦合到物理寄存器文件单元1058。每一个物理寄存器文件单元1058代表一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点、状态(例如指令指针,其为待执行的下一指令的地址)等。在一个实施例中,物理寄存器文件单元1058包括矢量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。物理寄存器文件单元1058由引退单元1054重叠以示出寄存器重命名和无序执行可被实现(例如使用记录器缓冲器和引退寄存器文件;使用未来的文件、历史缓冲器和引退寄存器文件;使用寄存器地图和一池寄存器;等等)的各种方式。引退单元1054和物理寄存器文件单元1058耦合到执行群集1060。执行群集1060包括一组一个或多个执行单元1062和一组一个或多个存储器访问单元1064。执行单元1062可对各种类型的数据(例如标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点)执行各种操作(例如移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定的功能或功能组的多个执行单元,其它实施例可包括仅仅一个执行单元或都执行所有功能的多个执行单元。调度器单元1056、物理寄存器文件单元1058和执行群集1060被示为可能多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如标量整数流水线、标量浮点/紧缩整数/紧缩浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,每一个流水线具有它们自己的调度器单元、物理寄存器文件单元和/或执行群集,且在单独的存储器访问流水线的情况下,实现某些实施例,其中只有这个流水线的执行群集具有存储器访问单元1064)。也应理解,在单独的流水线被使用的场合,这些流水线中的一个或多个可以是无序发布/执行,而其余是有序的。
这组存储器访问单元1064耦合到存储器单元1070,其包括耦合到数据高速缓存单元1074的数据TLB单元1072,数据高速缓存单元1074耦合到2级(L2)高速缓存单元1076。在一个示例性实施例中,存储器访问单元1064可包括装入单元、存储地址单元和存储数据单元,其中每一个耦合到在存储器单元1070中的数据TLB单元1072。指令高速缓存单元1034进一步耦合到在存储器单元1070中的2级(L2)高速缓存单元1076。L2高速缓存单元1076耦合到高速缓存的一个或多个其它级并最终耦合到主存储器。
作为示例,示例性寄存器重命名无序发布/执行核心架构可如下实现流水线1000:1)指令取出1038执行取出和长度解码级1002和1004;2)解码单元1040执行解码级1006;3)重命名/分配器单元1052执行分配级1008和重命名级1010;4)调度器单元1056执行调度器级1012;5)物理寄存器文件单元1058和存储器单元1070执行寄存器读取/存储器读取级1014;执行群集1060执行执行级1016;6)存储器单元1070和物理寄存器文件单元1058执行写回/存储器写入级1018;7)在异常处理级1022中涉及各种单元;以及8)引退单元1054和物理寄存器文件单元1058执行提交级1024。
核心1090可支持一个或多个指令集(例如x86指令集(具有添加了较新版本的一些扩展);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings ofSunnyvale,CA的ARM指令集(具有可选的额外扩展例如NEON)),包括本文所述的指令。在一个实施例中,核心1090包括支持紧缩数据指令集扩展(例如AVX1、AVX2)的逻辑,从而允许使用紧缩数据执行由很多多媒体应用使用的操作。
应理解,核心可支持多线程(执行两个或多个并行组的操作或线程),并可以用各种方式来这么做,包括时间分片多线程、同时多线程(其中单个物理核心为每一个线程提供逻辑核心,物理核心是同时多线程的)或其组合(例如其后例如在 Hyperthreading技术中的时间分片取出和解码和同时多线程)。
虽然在无序执行的上下文中描述了寄存器重命名,应理解,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元1034/1074和共享L2高速缓存单元1076,可选的实施例可具有指令和数据的单个内部高速缓存,例如1级(L1)内部高速缓存或内部高速缓存的多个级。在一些实施例中,***可包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。可选地,所有高速缓存可以在核心和/或处理器外部。
特定的示例性有序核心架构
图11A-B示出更具体的示例性有序核心架构的方框图,该核心将是在芯片中的几个逻辑块之一(包括相同类型和/或不同类型的其它核心)。逻辑块通过高带宽互联网络(例如环形网络)与某个固定功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,取决于应用。
图11A是根据本发明的实施例的单处理器核心连同它到管芯上互连网络1102的连接及它的2级(L2)高速缓存1104的本地子集的方框图。在一个实施例中,指令解码器1100支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1106允许对在标量和矢量单元内的高速缓存存储器的低时延访问。虽然在一个实施例中(为了简化设计)标量单元1108和矢量单元1110使用单独的寄存器组(分别为标量寄存器1112和矢量寄存器1114)且在它们之间传输的数据被写到存储器并接着从1级(L1)高速缓存1106被读回,本发明的可选实施例可使用不同的方法(例如使用单个寄存器组或包括允许数据在这两个寄存器文件之间传输而没有被写入和读回的通信路径)。
L2高速缓存1104的本地子集是被分成单独的本地子集的全局L2高速缓存的部分,每处理器核心一个本地子集。每一个处理器核心具有到L2高速缓存1104的它自己的本地子集的直接访问路径。由处理器核心读取的数据存储在它的L2高速缓存子集1104中并可与访问它们自己的本地L2高速缓存子集的其它处理器一起并行地被快速访问。由处理器核心写入的数据存储在它自己的L2高速缓存子集1104中并从其它子集清除,如果必要。环形网络确保共享数据的一致性。环形网络是双向的以允许代理例如处理器核心、L2高速缓存和其它逻辑块在芯片内与彼此通信。每一个环形数据路径是每方向1012位宽。
图11B是根据本发明的实施例的在图11A中的处理器核心的部分的展开图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分以及关于矢量单元1110和矢量寄存器1114的更多细节。具体地,矢量单元1110是16宽矢量处理单元(VPU)(见16宽ALU 1128),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持使用拌合(swizzle)单元1120拌合寄存器输入,使用数字转换单元1122A-B进行的数字转换以及使用复制单元1124对存储器输入的复制。写入掩码寄存器1126允许断定(predicate)因而产生的矢量写入。
具有集成存储器控制器和图形的处理器
图12是根据本发明的实施例的可具有多于一个核心、可具有集成存储器控制器、并可具有集成图形的处理器1200的方框图。在图12中的实线框示出具有单个核心1202A、***代理1210、一组一个或多个总线控制器单元1216的处理器1200,而虚线框的可选添加示出具有多个核心1202A-N、在***代理单元1210中的一组一个或多个集成存储器控制器单元1214和专用逻辑1208的可选处理器1200。
因此,处理器1200的不同实现可包括:1)CPU,其具有作为集成图形和/或科学(吞吐量)逻辑的专用逻辑1208(其可包括一个或多个核心)和作为一个或多个通用核心(例如通用有序核心、通用无序核心、这两者的组合)的核心1202A-N;2)协处理器,其具有主要为图形和/或科学(吞吐量)设计的作为大量专用核心的核心1202A-N;以及3)协处理器,其具有作为大量通用有序核心的核心1202A-N。因此,处理器1200可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核心(MIC)协处理器(包括30或更多核心)、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器1200可以是一个或多个衬底的一部分和/或可使用多种处理器技术中的任一个(例如BiCMOS、CMOS或NMOS)在一个或多个衬底上实现。
存储器等级结构包括在核心内的高速缓存的一个或多个级、一组或一个或多个共享高速缓存单元1206和耦合到这组集成存储器控制器单元1214的外部存储器(未示出)。这组共享高速缓存单元1206可包括一个或多个中级高速缓存,例如第2级(L2)、第3级(L3)、第4级(L4)或高速缓存的其它级、最后一级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环的互连单元1212将集成图形逻辑1208、这组共享高速缓存单元1206和***代理单元1210/集成存储器控制器单元1214互连,可选的实施例可使用用于将这样的单元互连的任何数量的公知技术。在一个实施例中,在一个或多个高速缓存单元1206和核心1202-A-N之间维持一致性。
在一些实施例中,一个或多个核心1202A-N有多线程的能力。***代理1210包括协调和操作核心1202A-N的那些部件。***代理单元1210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核心1202A-N和集成图形逻辑1208的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核心1202A-N从架构指令集方面来说可以是同构的或异构的;也就是说,两个或更多个核心1202A-N可能能够执行相同的指令集,而其它核心可能能够只执行那个指令集的子集或不同的指令集。
示例性计算机架构
图13-16是示例性计算机架构的方框图。膝上型计算机、台式计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其它电子设备的在本领域中已知的其它***设计和配置也是合适的。通常,能够合并处理器和/或如本文公开的其它执行逻辑的多种***或电子设备通常是合适的。
现在参考图13,其示出根据本发明的一个实施例的***1300的方框图。***1300可包括耦合到控制器中心1320的一个或多个处理器1310、1315。在一个实施例中,控制器中心1320包括图形存储器控制器中心(GMCH)1390和输入/输出中心(IOH)1350(其可以在单独的芯片上);GMCH 1390包括存储器1340和协处理器1345耦合到的存储器和图形控制器;IOH1350将输入/输出(I/O)设备1360耦合到GMCH 1390。可选地,存储器和图形控制器中的一个或两个集成在处理器(如在本文所述的)内,存储器1340和协处理器1345在单个芯片中与IOH 1350一起直接耦合到处理器1310和控制器中心1320。
在图13中用虚线表示额外的处理器1315的可选性质。每一个处理器1310、1315可包括在本文所述的一个或多个处理核心,且可以是处理器1200的某个版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中心1320经由多点总线例如前端总线(FSB)、点对点接口例如QuickPath互连(QPI)或类似的连接1395与处理器1310、1315通信。
在一个实施例中,协处理器1345是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中心1320可包括集成图形加速器。
从包括架构、微架构、热、功率消耗特性等的一系列优点的度量方面,在物理资源1310、1315之间可以有各种差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。嵌入指令内的可以是协处理器指令。处理器1310将这些协处理器指令识别为具有应由附加的协处理器1345执行的类型。对应地,处理器1310向协处理器1345发出在协处理器总线或其它互连上的这些协处理器指令(或表示协处理器指令的控制信号)。协处理器1345接受并执行所接收的协处理器指令。
现在参考图14,其示出根据本发明的实施例的第一更具体的示例性***1400的方框图。如图14所示,多处理器***1400是点对点互连***,并包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。每一个处理器1470和1480可以是处理器1200的某个版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和1480分别是处理器1310和协处理器1345。
示出分别包括集成存储器控制器(IMC)单元1472和1482的处理器1470和1480。处理器1470还包括点对点(P-P)接口1476和1478作为它的总线控制器单元的部分;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可经由点对点(P-P)接口1450使用P-P接口电路1478、1488来交换信息。如在图14中所示的,IMC 1472和1482将处理器耦合到对应的存储器,即存储器1432和存储器1434,其可以是在本地附接到相应的处理器的主存储器的部分。
处理器1470、1480可每一个经由单独的P-P接口1452、1452使用点对点接口电路1476、1494、1486、1498与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可包括在任一处理器中或在这两个处理器之外,还经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中(如果处理器被置于低功率模式中)。
芯片组1490可经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是***部件互连(PCI)总线或诸如PCI Express总线或另一第三代I/O互连总线的总线,虽然本发明的范围不被如此限制。
如图14所示,各种I/O设备1414可连同将第一总线1416耦合到第二总线1420的总线桥1418一起耦合到第一总线1416。在一个实施例中,一个或多个额外的处理器1415,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器,耦合到第一总线1416。在一个实施例中,第二总线1420可以是低管脚计数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1427和存储单元1428例如磁盘驱动器或可包括指令/代码和数据1430的其它大容量存储设备。此外,音频I/O 1424可耦合到第二总线1420。注意,其它架构是可能的。例如,不是图14的点对点架构,***可实现多点总线或其它这样的架构。
现在参考图15,其示出根据本发明的实施例的第二更具体的示例性***1500的方框图。图14-15中的相似元件具有相似的参考数字,且图14的某些方面从图15省略,以便避免使图15的其它方面难理解。
图15示出处理器1470、1480可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并包括I/O控制逻辑。图15示出不仅存储器1432、1434耦合到CL 1472、1482,而且I/O设备1514也耦合到控制逻辑1472、1482。旧有I/O设备1515耦合到芯片组1490。
现在参考图16,其示出根据本发明的实施例的SoC 1600的方框图。在图12中的相似元件具有相似的参考数字。此外,虚线框是在更高级的SoC上的可选特征。在图16中,互连单元1602耦合到:包括一组一个或多个核心202A-N和共享高速缓存单元1206的应用处理器1610;***代理单元1210;总线控制器单元1216;集成存储器控制器单元1214;可包括集成图形逻辑、图像处理器、音频处理器和视频处理器的一组或一个或多个协处理器1620;静态随机存取存储器(SRAM)单元1630;直接存储器存取(DMA)单元1632;以及用于耦合到一个或多个外部显示器的显示单元1640。在一个实施例中,协处理器1620包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可在硬件、软件、固件或这样的实现方法的组合中实现。本发明的实施例可被实现为在包括至少一个处理器、存储***(包括易失性和/或非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程***上执行的计算机程序或程序代码。
程序代码,例如图14所示的代码1430可应用于输入指令以执行本文所述的功能并产生输出信息。输出信息可以用已知的方式应用于一个或多个输出设备。为了这个申请的目的,处理***包括具有处理器(例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何***。
程序代码可以用高级过程或面向对象的编程语言来实现以与处理***通信。如果需要,程序代码也可以用汇编或机器语言来实现。事实上,本文所述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可由存储在代表在处理器内的各种逻辑的机器可读介质上的代表性指令实现,指令当被机器读取时使机器制造执行本文所述的技术的逻辑。被称为“IP核心”的这样的代表可存储在有形机器可读介质上并被提供到各种消费者或制造设施以装入实际上制造逻辑或处理器的制造机器内。
这样的机器可读存储介质可没有限制地包括由机器或设备制造或形成的物品的非暂时有形布置,包括存储介质例如硬盘、任何其它类型的磁盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘、半导体设备例如只读存储器(ROM)、随机存取存储器(RAM)例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡或适合于存储电子指令的任何其它类型的介质。
对应地,本发明的实施例还包括包含指令或包含设计数据(例如硬件描述语言(HDL))的非暂时有形机器可读介质,其定义本文所述的结构、电路、装置、处理器和/或***特征。这样的实施例也可被称为程序产品。仿真(包括二进制翻译、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换成目标指令集。例如,指令转换器可将指令翻译(例如使用静态二进制翻译、动态二进制翻译,包括动态编译)、变形、仿真或转换成由核心处理的一个或多个其它指令。指令转换器可在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、处理器外或部分在处理器上和部分在处理器外。
图17是根据本发明的实施例的对照将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的方框图。在所示实施例中,指令转换器是软件指令转换器,虽然可选地,指令转换器可在软件、固件、硬件或其各种组合中实现。图17示出用高级语言1702的程序可使用x86编译器1704来编译以产生可本机地由具有至少一个x86指令集核心1716的处理器执行的x86二进制代码1706。具有至少一个x86指令集核心1716的处理器代表可执行与具有至少一个x86指令集核心的英特尔处理器实质上相同的功能的任何处理器,是通过兼容地执行或处理(1)英特尔x86指令集核心的指令集的实质的部分或(2)以在具有至少一个x86指令集核心的英特尔处理器上运行为目标的应用或其它软件的对象代码版本,以便实现与具有至少一个x86指令集核心的英特尔处理器实质上相同的结果。x86编译器1704代表可操作来产生可在有或没有额外的连接处理的情况下在具有至少一个x86指令集核心1716的处理器上执行的x86二进制代码1706(例如对象代码)的编译器。类似地,图17示出可使用可选的指令集编译器1708来编译以产生可本机地由没有至少一个x86指令集核心1714的处理器(例如具有执行MIPS Technologies of Sunnyvale,CA的MIPS指令集和/或执行ARM Holdings of Sunnyvale,CA的ARM指令集的核心的处理器)执行的可选的指令集二进制代码1710的用高级语言1702的程序。指令转换器1712用于将x86二进制代码1706转换成可本机由没有x86指令集核心1714的处理器执行的代码。这个所转换的代码不太可能与可选的指令集二进制代码1710相同,因为有此能力的指令转换器难以制造;然而,所转换的代码将实现一般操作并由来自可选的指令集的指令构成。因此,指令转换器1712代表软件、固件、硬件或其组合,其通过仿真、模拟或任何其它过程允许处理器或没有x86指令集处理器或核心的其他电子设备执行x86二进制代码1706。
在图1-2的任一个中也可以可选地使用为图3-4的任一个描述的部件、特征和细节。在图1-4的任一个中也可以可选地使用为图5-9的任一个描述的部件、特征和细节。而且,在本文所述的任何方法中也可以可选地使用在本文为任何处理器或指令处理装置描述的部件、特征和细节,这些方法在实施例中可由这样的处理器或装置执行和/或用这样的处理器或装置执行。
在描述和权利要求中,使用术语“耦合”和/或“连接”连同其衍生词。应当理解这些术语不旨在作为彼此的同义词。更确切地,在特定的实施例中,“连接”可用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可意指两个或更多个元件直接物理或电接触。然而,“耦合”也可意指两个或更多个元件彼此不直接接触,但仍然彼此协作或交互作用。例如,存储器访问单元可通过一个或多个介入部件与一组寄存器和/或解码单元耦合。在附图中,箭头用于显示耦合。
在描述和权利要求中,可能使用术语“逻辑”。如在本文使用的,逻辑可包括硬件、固件、软件或其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在一些实施例中,硬件逻辑可包括晶体管和/或门,可能连同其它电路部件。
在上面的描述中,阐述了特定的细节以便提供对实施例的彻底理解。然而,其它实施例可在没有这些特定细节的情况下被实施。本发明的范围不应由上面提供的特定示例确定,而只由下面的权利要求确定。在其它实例中,以方框图形式或没有详细地示出公知的电路、结构、设备和操作以便避免使描述的理解模糊。在多个部件被示出和描述的场合,在一些情况下,这些多个部件可合并到一个部件内。在单个部件被示出和描述的场合,在一些情况下,这个单个部件可分成两个或更多个部件。
描述了各种操作和方法。在相对基本的形式中在流程图中描述了一些方法,但操作可以可选地被添加到方法和/或从方法移除。此外,虽然流程图示出根据示例实施例的操作的特定顺序,那个特定的顺序是示例性的。可选的实施例可以可选地以不同的顺序执行操作,组合某些操作,使某些操作重叠,等等。
某些操作可由硬件部件执行,或可体现在机器可执行或电路可执行指令中,这些指令可用于使和/或导致使用指令编程的机器、电路或硬件部件(例如处理器、处理器的部分、电路等)执行操作。操作也可以可选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括特定的或特有的电路或可操作来执行和/或处理指令并响应于指令而存储结果的其它逻辑(例如可能与固件和/或软件组合的硬件)。
一些实施例包括制品(例如计算机程序产品),其包括机器可读介质。介质可包括提供例如存储机器可读的形式的信息的机制。机器可读介质可提供或在其上存储有指令或指令的序列,其如果和/或当被机器执行时可操作来使机器执行和/或导致机器执行本文所公开的一个或多个操作、方法或技术。机器可读介质可提供例如存储在本文公开的指令的一个或多个实施例。
在一些实施例中,机器可读介质可包括有形和/或非暂时机器可读存储介质。例如,有形和/或非暂时机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂时存储器、非暂时数据存储设备等。非暂时机器可读存储介质不由暂时传播信号组成。在另一实施例中,机器可读介质可包括暂时机器可读通信介质,例如电、光、声或其它形式的传播信号,例如载波、红外信号、数字信号等。
适当的机器的示例包括但不限于通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。适当的机器的又一些其它示例包括计算设备和合并这样的处理器、指令处理装置、数字逻辑电路或集成电路的其它电子设备。这样的计算设备和电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本计算机、智能电话、服务器、网络设备(例如路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视机、上网机、机顶盒和视频游戏控制器。
在整个这个说明书中对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的提及例如指示特定的特征可被包括在本发明的实践中,而不一定需要是这样。类似地,在描述中,为了使本公开合理化并帮助理解各种创造性方面的目的,各种特征有时在单个实施例、附图或其描述中被集中在一起。然而,公开的这个方法并不应被解释为反映本发明需要比在每一个权利要求中明确列举的更多的特征的意图。更确切地,如下面的权利要求反映的,创造性方面在于少于单个所公开的实施例的所有特征。因此,在具体实施方式之后的权利要求特此明确地合并到这个具体实施方式内,每一个权利要求独立地作为本发明的单独的实施例。
示例实施例
下面的示例涉及另外的实施例。可在一个或多个实施例中的任何地方使用在示例中的细节。
示例1是包括多个N位寄存器的处理器。处理器还包括接收多寄存器存储器访问指令的解码单元。多寄存器存储器访问指令指示存储器单元并指示寄存器。处理器还包括与解码单元和与多个N位寄存器耦合的存储器访问单元。存储器访问单元响应于多寄存器存储器访问指令而执行多寄存器存储器访问操作。多寄存器存储器访问操作涉及在包括所指示的寄存器的多个N位寄存器的每一个中的N位数据。多寄存器存储器访问操作也涉及对应于所指示的存储器单元的存储器的MxN位线的不同的对应N位部分。可选地,在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的至少一半。
示例2包括示例1的处理器,且可选地其中存储器访问单元执行操作,其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的全部。
示例3包括示例1的处理器,且可选地其中存储器访问单元执行操作,其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于至少256位。
示例4包括示例3的处理器,且可选地其中存储器访问单元执行操作,其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于至少512位。
示例5包括任何前述示例的处理器,且可选地其中存储器访问单元执行涉及在至少三个N位寄存器的每一个中的N位数据的操作。
示例6包括任何前述示例的处理器,且可选地其中存储器访问单元执行涉及在至少四个N位寄存器的每一个中的N位数据的操作。
示例7包括示例1的处理器,且可选地其中存储器访问单元执行涉及在至少四个128位寄存器的每一个中的128位数据以及至少512位的存储器的线的不同的对应128位部分的操作。
示例8包括示例1的处理器,且可选地其中存储器访问单元执行涉及在至少两个256位寄存器的每一个中的256位数据以及至少512位的存储器的线的不同的对应256位部分的操作。
示例9包括示例1-8中的任一个的处理器,且可选地其中处理器包括精简指令集计算(RISC)处理器,且其中多寄存器存储器访问指令包括多寄存器从存储器装入指令,且其中存储器访问单元响应于多寄存器从存储器装入指令将存储器的MxN位线的不同的N位部分装入在多个N位寄存器的每一个中。可选地,从存储器的MxN位线装入在多个N位寄存器中的不同的N位部分的位的总数等于存储器的线的MxN位的至少一半。
示例10包括示例9的处理器,且可选地其中存储器访问单元将至少512位的存储器的线的不同的128位部分装入在至少四个128位寄存器的每一个中。
示例11包括示例9的处理器,且可选地其中存储器访问单元将至少512位的存储器的线的不同的256位部分装入在至少两个256位寄存器的每一个中。
示例12包括示例1-8中的任一个的处理器,且可选地其中处理器包括精简指令集计算(RISC)处理器,且其中多寄存器存储器访问指令包括多寄存器写到存储器指令,且其中存储器访问单元响应于多寄存器写到存储器指令将N位数据从多个N位寄存器的每一个写到存储器的MxN位线的不同的对应N位部分。可选地,从多个N位寄存器写到存储器的MxN位线的N位数据的位的总数等于存储器的线的MxN位的至少一半。可选地,存储器的线的MxN位的至少一半是至少256位。
示例13包括示例1-8中的任一个的处理器,且可选地其中多寄存器存储器访问指令明确地指定多个寄存器中的每一个。
示例14包括示例1-8中的任一个的处理器,且可选地其中多寄存器存储器访问指令指定多个寄存器的数量。
示例15是包括接收多寄存器存储器访问指令的由处理器执行的方法。多寄存器存储器访问指令指示存储器单元并指示寄存器。该方法包括响应于多寄存器存储器访问指令而执行多寄存器存储器访问操作。操作涉及在包括所指示的寄存器的多个N位寄存器的每一个中的N位数据。操作也涉及对应于所指示的存储器单元的存储器的MxN位线的不同的对应N位部分。可选地,在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的至少一半。
示例16包括示例15的方法,且可选地其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的全部。
示例17包括示例15的方法,且可选地其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于至少256位。
示例18包括任何前述示例的方法,且可选地其中执行包括执行涉及在至少四个N位寄存器的每一个中的N位数据的操作。
示例19包括示例15的方法,且可选地其中执行包括执行涉及在至少四个128位寄存器的每一个中的128位数据以及至少512位的存储器的线的不同的对应128位部分的操作。
示例20包括示例15的方法,且可选地其中执行包括执行涉及在至少两个256位寄存器的每一个中的256位数据以及至少512位的存储器的线的不同的对应256位部分的操作。
示例21包括示例15-20中的任一个的方法,且可选地其中接收包括接收多寄存器从存储器装入指令,且其中执行包括响应于多寄存器从存储器装入指令将存储器的MxN位线的不同的N位部分装入在多个N位寄存器的每一个中。可选地,从存储器的MxN位线装入在多个N位寄存器中的不同的N位部分的位的总数等于存储器的线的MxN位的至少一半。
示例22包括示例21的方法,且可选地其中执行包括将至少512位的存储器的线的不同的128位部分装入在至少四个128位寄存器的每一个中。
示例23包括示例21的方法,且可选地其中执行包括将至少512位的存储器的线的不同的256位部分装入在至少两个256位寄存器的每一个中。
示例24包括示例15-20中的任一个的方法,且可选地其中接收包括接收多寄存器写到存储器指令,且其中执行包括响应于多寄存器写到存储器指令将N位数据从多个N位寄存器的每一个写到存储器的MxN位线的不同的对应N位部分。可选地,从多个N位寄存器写到存储器的MxN位线的N位数据的位的总数等于存储器的线的MxN位的至少一半。可选地,存储器的线的MxN位的至少一半是至少256位。
示例25是处理包括互连、与互连耦合的动态随机存取存储器(DRAM)和与互连耦合的处理器的指令的***。处理器响应于指示在DRAM和寄存器中的存储器单元的多寄存器存储器访问指令而执行多寄存器存储器访问操作。操作涉及在包括所指示的寄存器的处理器的多个N位寄存器的每一个中的N位数据。操作也涉及对应于所指示的存储器单元的DRAM的MxN位线的不同的对应N位部分。可选地,在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的至少一半。
示例26包括示例25的***,且可选地其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于至少512位的存储器的线的MxN位的全部。
示例27是包括存储多寄存器存储器访问指令的非暂时机器可读存储介质的制品。多寄存器存储器访问指令指示存储器单元和寄存器。多寄存器存储器访问指令如果被机器处理则可操作来使机器执行包括执行涉及在包括所指示的寄存器的多个N位寄存器的每一个中的N位数据的多寄存器存储器访问操作的操作。操作也涉及对应于所指示的存储器单元的存储器的MxN位线的不同的对应N位部分。可选地,在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的至少一半。
示例28包括示例27的制品,且可选地其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于至少512位的存储器的线的MxN位的全部。
示例29是包括用于接收多寄存器存储器访问指令的装置的处理器。多寄存器存储器访问指令指示存储器单元和寄存器。处理器还包括用于响应于多寄存器存储器访问指令而执行多寄存器存储器访问操作的装置。操作涉及在包括所指示的寄存器的多个N位寄存器的每一个中的N位数据。操作也涉及对应于所指示的存储器单元的存储器的MxN位线的不同的对应N位部分。可选地,在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的至少一半。
示例30包括示例29的处理器,且可选地其中在多寄存器存储器访问操作中涉及的多个N位寄存器中的N位数据的位的总数等于存储器的线的MxN位的全部。
示例31是存储指令的机器可读存储介质,所述指令如果被机器执行则使机器执行示例15-24中的任一个的方法。
示例32是执行示例15-24中的任一个的方法的处理器。
示例33是包括用于执行示例15-24中的任一个的方法的装置的处理器。
示例34是执行示例15-24中的任一个的方法的包括集成电路和/或逻辑和/或单元和/或部件和/或模块或其任何组合的处理器。
示例35是包括处理器和可选地包括动态随机存取存储器(DRAM)的计算机***,所述计算机***执行示例15-24中的任一个的方法。
示例36是执行实质上如本文所述的方法或操作的处理器。
示例37是包括用于执行实质上如本文所述的方法或操作的装置的处理器。
示例38是执行实质上如本文所述的指令的处理器。
示例39是包括用于执行实质上如本文所述的指令的操作的装置的处理器。
Claims (56)
1.一种处理器,包括:
高速缓存,用于存储多个高速缓存线;
多个通用寄存器;
多个128位紧缩数据寄存器,其包括第一目的地128位紧缩数据寄存器和第二目的地128位紧缩数据寄存器;
指令取出单元,用于取出指令,所述指令包括从存储器装入指令;
解码单元,用于对所述从存储器装入指令进行解码,所述从存储器装入指令指示存储器中的起始存储器单元,所述起始存储器单元与待装入的数据相关联,并且所述从存储器装入指令具有用于指定所述第一目的地128位紧缩数据寄存器的第一字段、并且具有用于指定所述第二目的地128位紧缩数据寄存器的第二字段;以及
存储器访问单元,其耦合到所述解码单元并且耦合到所述多个128位紧缩数据寄存器,所述存储器访问单元用于响应于被解码的从存储器装入指令而执行从存储器装入操作,所述从存储器装入操作用于:
从所指示的起始存储器单元装入第一128位数据,并将所装入的第一128位数据存储在所述第一目的地128位紧缩数据寄存器中;以及
装入与所述第一128位数据相邻的第二128位数据,并将所装入的第二128位数据存储在所述第二目的地128位紧缩数据寄存器中。
2.如权利要求1所述的处理器,还包括多个写入掩码寄存器,用于断定结果矢量写入。
3.如权利要求1所述的处理器,还包括16宽矢量处理单元,用于执行双精度浮点指令。
4.如权利要求1所述的处理器,其中,所述高速缓存用于存储512位高速缓存线。
5.如权利要求1所述的处理器,其中,所述高速缓存用于存储1024位高速缓存线。
6.如权利要求1所述的处理器,其中,所述高速缓存用于存储所述128位紧缩数据寄存器的多倍宽度的高速缓存线。
7.如权利要求1所述的处理器,还包括:
分支预测单元;以及
转换后备缓冲器(TLB)。
8.如权利要求1所述的处理器,其中,所述处理器是精简指令集计算(RISC)处理器。
9.一种片上***(SoC),包括:
集成存储器控制器;以及
如权利要求1-8中的任意一项所述的处理器,其耦合到所述集成存储器控制器。
10.如权利要求9所述的片上***,还包括耦合到所述处理器的通信处理器。
11.如权利要求9所述的片上***,还包括耦合到所述处理器的网络处理器。
12.如权利要求9所述的片上***,还包括耦合到所述处理器的图像处理器。
13.如权利要求9所述的片上***,还包括耦合到所述处理器的显示单元,所述显示单元耦合到外部显示器。
14.如权利要求9所述的片上***,还包括耦合到所述处理器的图形处理单元。
15.如权利要求9所述的片上***,还包括耦合到所述处理器的音频处理器。
16.如权利要求9所述的片上***,还包括耦合到所述处理器和所述集成存储器控制器的互连。
17.如权利要求16所述的片上***,其中,所述互连包括环形互连。
18.如权利要求9所述的片上***,还包括耦合到所述处理器的直接存储器存取(DMA)单元。
19.如权利要求9所述的片上***,还包括耦合到所述处理器的协处理器。
20.一种计算机***,包括:
***存储器;以及
如权利要求1-8中的任意一项所述的处理器,其耦合到所述***存储器。
21.如权利要求20所述的计算机***,还包括耦合到所述处理器的音频I/O。
22.如权利要求20所述的计算机***,还包括耦合到所述处理器的通信设备。
23.如权利要求20所述的计算机***,还包括耦合到所述处理器的I/O设备。
24.如权利要求20所述的计算机***,还包括耦合到所述处理器的大容量存储设备。
25.如权利要求24所述的计算机***,其中,所述大容量存储设备包括磁盘驱动器。
26.如权利要求20所述的计算机***,还包括耦合到所述处理器的***部件互连(PCI)Express总线。
27.如权利要求20所述的计算机***,还包括耦合到所述处理器的图形处理器。
28.如权利要求20所述的计算机***,其中,所述***存储器包括动态随机存取存储器(DRAM)。
29.一种处理器,包括:
高速缓存,用于存储多个高速缓存线;
多个通用寄存器;
多个128位紧缩数据寄存器,其包括第一源128位紧缩数据寄存器和第二源128位紧缩数据寄存器;
指令取出单元,用于取出指令,所述指令包括存储到存储器指令;
解码单元,用于对所述存储到存储器指令进行解码,所述存储到存储器指令具有用于指定所述第一源128位紧缩数据寄存器的第一字段、具有用于指定所述第二源128位紧缩数据寄存器的第二字段、并且指示存储器中将要存储数据的起始存储器单元;以及
存储器访问单元,其耦合到所述解码单元并且耦合到所述多个128位紧缩数据寄存器,所述存储器访问单元用于响应于被解码的存储到存储器指令而执行存储到存储器操作,所述存储到存储器操作用于:
将来自所述第一源128位紧缩数据寄存器的第一128位数据存储到所述存储器中,从所指示的起始存储器单元开始;以及
将来自所述第二源128位紧缩数据寄存器的第二128位数据存储到所述存储器中在所述第一128位数据之后相邻的单元处。
30.如权利要求29所述的处理器,还包括多个写入掩码寄存器,用于断定结果矢量写入。
31.如权利要求29所述的处理器,还包括16宽矢量处理单元,用于执行双精度浮点指令。
32.如权利要求29所述的处理器,其中,所述高速缓存用于存储512位高速缓存线。
33.如权利要求29所述的处理器,其中,所述高速缓存用于存储1024位高速缓存线。
34.如权利要求29所述的处理器,其中,所述高速缓存用于存储所述128位紧缩数据寄存器的多倍宽度的高速缓存线。
35.如权利要求29所述的处理器,还包括:
分支预测单元;以及
转换后备缓冲器(TLB)。
36.如权利要求29所述的处理器,其中,所述处理器是精简指令集计算(RISC)处理器。
37.一种片上***(SoC),包括:
集成存储器控制器;以及
如权利要求29-36中的任意一项所述的处理器,其耦合到所述集成存储器控制器。
38.如权利要求37所述的片上***,还包括耦合到所述处理器的通信处理器。
39.如权利要求37所述的片上***,还包括耦合到所述处理器的网络处理器。
40.如权利要求37所述的片上***,还包括耦合到所述处理器的图像处理器。
41.如权利要求37所述的片上***,还包括耦合到所述处理器的显示单元,所述显示单元耦合到外部显示器。
42.如权利要求37所述的片上***,还包括耦合到所述处理器的图形处理单元。
43.如权利要求37所述的片上***,还包括耦合到所述处理器的音频处理器。
44.如权利要求37所述的片上***,还包括耦合到所述处理器和所述集成存储器控制器的互连。
45.如权利要求44所述的片上***,其中,所述互连包括环形互连。
46.如权利要求37所述的片上***,还包括耦合到所述处理器的直接存储器存取(DMA)单元。
47.如权利要求37所述的片上***,还包括耦合到所述处理器的协处理器。
48.一种计算机***,包括:
***存储器;以及
如权利要求29-36中的任意一项所述的处理器,其耦合到所述***存储器。
49.如权利要求48所述的计算机***,还包括耦合到所述处理器的音频I/O。
50.如权利要求48所述的计算机***,还包括耦合到所述处理器的通信设备。
51.如权利要求48所述的计算机***,还包括耦合到所述处理器的I/O设备。
52.如权利要求48所述的计算机***,还包括耦合到所述处理器的大容量存储设备。
53.如权利要求52所述的计算机***,其中,所述大容量存储设备包括磁盘驱动器。
54.如权利要求48所述的计算机***,还包括耦合到所述处理器的***部件互连(PCI)Express总线。
55.如权利要求48所述的计算机***,还包括耦合到所述处理器的图形处理器。
56.如权利要求48所述的计算机***,其中,所述***存储器包括动态随机存取存储器(DRAM)。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,008 | 2013-06-28 | ||
US13/931,008 US9424034B2 (en) | 2013-06-28 | 2013-06-28 | Multiple register memory access instructions, processors, methods, and systems |
PCT/US2014/044416 WO2014210363A1 (en) | 2013-06-28 | 2014-06-26 | Multiple register memory access instructions, processors, methods, and systems |
CN201480030741.2A CN105247477B (zh) | 2013-06-28 | 2014-06-26 | 多寄存器存储器访问指令、处理器、方法和*** |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480030741.2A Division CN105247477B (zh) | 2013-06-28 | 2014-06-26 | 多寄存器存储器访问指令、处理器、方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845826A CN108845826A (zh) | 2018-11-20 |
CN108845826B true CN108845826B (zh) | 2022-10-14 |
Family
ID=52116843
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810502429.9A Active CN108845826B (zh) | 2013-06-28 | 2014-06-26 | 多寄存器存储器访问指令、处理器、方法和*** |
CN201480030741.2A Active CN105247477B (zh) | 2013-06-28 | 2014-06-26 | 多寄存器存储器访问指令、处理器、方法和*** |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480030741.2A Active CN105247477B (zh) | 2013-06-28 | 2014-06-26 | 多寄存器存储器访问指令、处理器、方法和*** |
Country Status (8)
Country | Link |
---|---|
US (8) | US9424034B2 (zh) |
EP (2) | EP3822772A1 (zh) |
KR (2) | KR20150138343A (zh) |
CN (2) | CN108845826B (zh) |
BR (1) | BR112015030001A2 (zh) |
RU (1) | RU2636675C2 (zh) |
TW (1) | TWI567751B (zh) |
WO (1) | WO2014210363A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US9424034B2 (en) | 2013-06-28 | 2016-08-23 | Intel Corporation | Multiple register memory access instructions, processors, methods, and systems |
US9779019B2 (en) * | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
US10241800B2 (en) | 2015-06-16 | 2019-03-26 | International Business Machines Corporation | Split-level history buffer in a computer processing unit |
US20170192782A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Aggregate Gather and Stride |
US10255072B2 (en) | 2016-07-01 | 2019-04-09 | Intel Corporation | Architectural register replacement for instructions that use multiple architectural registers |
US11593117B2 (en) * | 2018-06-29 | 2023-02-28 | Qualcomm Incorporated | Combining load or store instructions |
US20200004535A1 (en) * | 2018-06-30 | 2020-01-02 | Intel Corporation | Accelerator apparatus and method for decoding and de-serializing bit-packed data |
US10896265B2 (en) | 2018-08-02 | 2021-01-19 | Micron Technology, Inc. | Register access |
US11144364B2 (en) | 2019-01-25 | 2021-10-12 | International Business Machines Corporation | Supporting speculative microprocessor instruction execution |
EP3926015A4 (en) * | 2019-02-12 | 2022-11-23 | Sakata INX Corporation | LIGHT-CURING INK COMPOSITION FOR INK-JET PRINTING |
CN110187919B (zh) * | 2019-05-27 | 2021-07-20 | 眸芯科技(上海)有限公司 | 配置寄存器的装置、方法及*** |
US11914511B2 (en) * | 2020-06-22 | 2024-02-27 | Apple Inc. | Decoupling atomicity from operation size |
US11269631B2 (en) | 2020-07-29 | 2022-03-08 | Ghost Locomotion Inc. | Extending fused multiply-add instructions |
CN113064841B (zh) * | 2021-01-04 | 2023-06-06 | 统信软件技术有限公司 | 一种数据存储方法、处理方法、计算设备及可读存储介质 |
US11586440B2 (en) * | 2021-06-01 | 2023-02-21 | International Business Machines Corporation | Link stack based instruction prefetch augmentation |
US20230089349A1 (en) * | 2021-09-21 | 2023-03-23 | Wisconsin Alumni Research Foundation | Computer Architecture with Register Name Addressing and Dynamic Load Size Adjustment |
CN114780148B (zh) * | 2022-06-17 | 2022-09-23 | 飞腾信息技术有限公司 | 一种***寄存器访问指令的执行方法、装置及电子设备 |
US11886291B1 (en) * | 2022-07-21 | 2024-01-30 | Dell Products L.P. | Providing cache line metadata over multiple cache lines |
CN117931729B (zh) * | 2024-03-22 | 2024-06-28 | 芯来智融半导体科技(上海)有限公司 | 向量处理器访存指令处理方法和*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5913054A (en) * | 1996-12-16 | 1999-06-15 | International Business Machines Corporation | Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle |
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
CN1914592A (zh) * | 2003-12-09 | 2007-02-14 | Arm有限公司 | 执行具有单元大小控制的紧缩数据操作的方法和设备 |
CN103150146A (zh) * | 2013-01-31 | 2013-06-12 | 西安电子科技大学 | 基于可扩展处理器架构的专用指令集处理器及其实现方法 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5509129A (en) | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
JP2933027B2 (ja) | 1996-08-30 | 1999-08-09 | 日本電気株式会社 | 複数命令並列発行/実行管理装置 |
US6049897A (en) * | 1997-01-07 | 2000-04-11 | Intel Corporation | Multiple segment register use with different operand size |
US6014684A (en) | 1997-03-24 | 2000-01-11 | Intel Corporation | Method and apparatus for performing N bit by 2*N-1 bit signed multiplication |
US6061749A (en) * | 1997-04-30 | 2000-05-09 | Canon Kabushiki Kaisha | Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword |
US6230253B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6173393B1 (en) * | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
GB2352065B (en) | 1999-07-14 | 2004-03-03 | Element 14 Ltd | A memory access system |
US6807622B1 (en) * | 2000-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Processor which overrides default operand size for implicit stack pointer references and near branches |
US20040078608A1 (en) | 2001-04-02 | 2004-04-22 | Ruban Kanapathippillai | Method and apparatus for power reduction in a digital signal processor integrated circuit |
US7430631B2 (en) * | 2002-05-24 | 2008-09-30 | Nxp B.V. | Access to a wide memory |
US7437532B1 (en) * | 2003-05-07 | 2008-10-14 | Marvell International Ltd. | Memory mapped register file |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US7475222B2 (en) * | 2004-04-07 | 2009-01-06 | Sandbridge Technologies, Inc. | Multi-threaded processor having compound instruction and operation formats |
US7747843B2 (en) | 2004-06-02 | 2010-06-29 | Broadcom Corporation | Microprocessor with integrated high speed memory |
US9557994B2 (en) * | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US7398347B1 (en) | 2004-07-14 | 2008-07-08 | Altera Corporation | Methods and apparatus for dynamic instruction controlled reconfigurable register file |
DE602006006990D1 (de) | 2006-06-28 | 2009-07-09 | St Microelectronics Nv | SIMD-Prozessorarchitektur mit gruppierten Verarbeitungseinheiten |
US8060724B2 (en) * | 2008-08-15 | 2011-11-15 | Freescale Semiconductor, Inc. | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
US8850166B2 (en) * | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
US8904153B2 (en) * | 2010-09-07 | 2014-12-02 | International Business Machines Corporation | Vector loads with multiple vector elements from a same cache line in a scattered load operation |
US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
CN104115113B (zh) * | 2011-12-14 | 2018-06-05 | 英特尔公司 | 用于循环剩余掩码指令的***、装置和方法 |
CN104011667B (zh) | 2011-12-22 | 2016-11-09 | 英特尔公司 | 用于滑动窗口数据访问的设备和方法 |
WO2013095578A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for mapping a source operand to a different range |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
CN103999037B (zh) | 2011-12-23 | 2020-03-06 | 英特尔公司 | 用于响应于单个指令来执行横向相加或相减的***、装置和方法 |
US9563425B2 (en) * | 2012-11-28 | 2017-02-07 | Intel Corporation | Instruction and logic to provide pushing buffer copy and store functionality |
US9424034B2 (en) | 2013-06-28 | 2016-08-23 | Intel Corporation | Multiple register memory access instructions, processors, methods, and systems |
-
2013
- 2013-06-28 US US13/931,008 patent/US9424034B2/en active Active
-
2014
- 2014-06-26 CN CN201810502429.9A patent/CN108845826B/zh active Active
- 2014-06-26 EP EP20199714.5A patent/EP3822772A1/en active Pending
- 2014-06-26 BR BR112015030001A patent/BR112015030001A2/pt not_active Application Discontinuation
- 2014-06-26 CN CN201480030741.2A patent/CN105247477B/zh active Active
- 2014-06-26 KR KR1020157031473A patent/KR20150138343A/ko active Application Filing
- 2014-06-26 TW TW103122085A patent/TWI567751B/zh active
- 2014-06-26 KR KR1020187008063A patent/KR101964350B1/ko active IP Right Grant
- 2014-06-26 RU RU2015151132A patent/RU2636675C2/ru not_active IP Right Cessation
- 2014-06-26 WO PCT/US2014/044416 patent/WO2014210363A1/en active Application Filing
- 2014-06-26 EP EP14817022.8A patent/EP3014416A4/en not_active Ceased
-
2016
- 2016-08-16 US US15/238,186 patent/US9786338B2/en active Active
-
2017
- 2017-10-09 US US15/728,293 patent/US10102888B2/en active Active
- 2017-12-27 US US15/855,585 patent/US10153011B2/en active Active
- 2017-12-27 US US15/855,618 patent/US10163468B2/en active Active
- 2017-12-27 US US15/855,600 patent/US10141033B2/en active Active
- 2017-12-27 US US15/855,609 patent/US10153012B2/en active Active
- 2017-12-27 US US15/855,626 patent/US10170165B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5913054A (en) * | 1996-12-16 | 1999-06-15 | International Business Machines Corporation | Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle |
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
CN1914592A (zh) * | 2003-12-09 | 2007-02-14 | Arm有限公司 | 执行具有单元大小控制的紧缩数据操作的方法和设备 |
CN103150146A (zh) * | 2013-01-31 | 2013-06-12 | 西安电子科技大学 | 基于可扩展处理器架构的专用指令集处理器及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US9424034B2 (en) | 2016-08-23 |
KR20150138343A (ko) | 2015-12-09 |
US10102888B2 (en) | 2018-10-16 |
CN105247477A (zh) | 2016-01-13 |
US10163468B2 (en) | 2018-12-25 |
KR20180034684A (ko) | 2018-04-04 |
CN105247477B (zh) | 2018-06-19 |
US20180033468A1 (en) | 2018-02-01 |
US20160358636A1 (en) | 2016-12-08 |
US10153012B2 (en) | 2018-12-11 |
EP3822772A1 (en) | 2021-05-19 |
US10170165B2 (en) | 2019-01-01 |
US20180122433A1 (en) | 2018-05-03 |
US20180122431A1 (en) | 2018-05-03 |
US20180122430A1 (en) | 2018-05-03 |
CN108845826A (zh) | 2018-11-20 |
BR112015030001A2 (pt) | 2017-07-25 |
US20150006848A1 (en) | 2015-01-01 |
US20180122429A1 (en) | 2018-05-03 |
US10153011B2 (en) | 2018-12-11 |
TWI567751B (zh) | 2017-01-21 |
US20180122432A1 (en) | 2018-05-03 |
RU2636675C2 (ru) | 2017-11-27 |
EP3014416A1 (en) | 2016-05-04 |
US9786338B2 (en) | 2017-10-10 |
WO2014210363A1 (en) | 2014-12-31 |
KR101964350B1 (ko) | 2019-04-01 |
US10141033B2 (en) | 2018-11-27 |
RU2015151132A (ru) | 2017-06-01 |
TW201508767A (zh) | 2015-03-01 |
EP3014416A4 (en) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和*** | |
US11442734B2 (en) | Packed data element predication processors, methods, systems, and instructions | |
US9934032B2 (en) | Processors, methods, and systems to implement partial register accesses with masked full register accesses | |
US10678541B2 (en) | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions | |
CN113553209A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
US10228941B2 (en) | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register | |
CN110659129A (zh) | 用于数据表示之间的一致、加速的转换的装置和方法 | |
CN112579160A (zh) | 用于具有减少的硬件要求的存储配对的装置和方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |