CN108052349A - 在屏蔽寄存器中反转和置换位的装置和方法 - Google Patents

在屏蔽寄存器中反转和置换位的装置和方法 Download PDF

Info

Publication number
CN108052349A
CN108052349A CN201810006909.6A CN201810006909A CN108052349A CN 108052349 A CN108052349 A CN 108052349A CN 201810006909 A CN201810006909 A CN 201810006909A CN 108052349 A CN108052349 A CN 108052349A
Authority
CN
China
Prior art keywords
processor
register
mask
mask bit
instruction
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.)
Granted
Application number
CN201810006909.6A
Other languages
English (en)
Other versions
CN108052349B (zh
Inventor
E·乌尔德艾哈迈德瓦勒
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN108052349A publication Critical patent/CN108052349A/zh
Application granted granted Critical
Publication of CN108052349B publication Critical patent/CN108052349B/zh
Active 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

描述了一种用于在屏蔽值上执行位反转和置换的装置和方法。例如,描述了执行指令以执行以下操作的处理器:读取存储在源屏蔽寄存器中的多个屏蔽位,所述屏蔽位与向量寄存器的向量数据元素相关联;以及执行位反转操作以将每个屏蔽位从源屏蔽寄存器复制到目的屏蔽寄存器,其中所述位反转操作使得来自所述源屏蔽寄存器的位要在所述目的屏蔽寄存器内被反转,产生原始位布置的对称镜像。

Description

在屏蔽寄存器中反转和置换位的装置和方法
本申请是申请日为2014年6月17日、申请号为201480030625.0的发明专利申请“在屏蔽寄存器中反转和置换位的装置和方法”的分案申请。
技术领域
本发明的实施例总体上涉及计算机系统领域。更具体地,本发明的实施例涉及用于在屏蔽寄存器中反转和置换位的装置和方法。
背景技术
一般背景
指令集或指令集架构(ISA)是计算机架构中涉及编程的部分,包括本机数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出(I/O)。应当注意的是,在本文中术语“指令”一般指的是宏指令,即提供给处理器以供执行的指令,与作为处理器解码器对宏指令解码的结果的微指令或微操作完全不同。
指令集架构与微架构不同,微架构是用于实现指令集的一组处理器设计技术。具有不同微架构的处理器能够共享共同的指令集。例如, Pentium4处理器、CoreTM处理器以及来自Sunnyvale CA的Advanced Micro Devices公司的处理器实现基本相同版本的x86指令集(具有添加有更新版本的一些扩展),但是具有不同的内部设计。例如,ISA的相同寄存器架构可以以不同的方式在不同微架构中使用已知的技术来实施,包括专用物理寄存器、使用寄存器重命名机制的一个或多个动态分配物理寄存器(例如,如美国专利号5,446,912描述的使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器文件;如美国专利号5,207,132描述的使用多个映射和寄存器池)等。除非另有指定,否则本文使用的短语“寄存器架构”、“寄存器文件”和“寄存器”指的是对软件/程序员可见的那些以及指令指定寄存器的方式。当需要区别时,可以使用形容词逻辑的、架构的或软件可见的来表示寄存器架构中的寄存器/文件,同时不同的形容词将用于给定微架构中的指定寄存器(例如,物理寄存器、重排序缓冲器、引退寄存器、寄存器池)。
指令集包括一个或多个指令格式。给定指令格式定义各个字段(位数、位的位置)以指定(除了其它方面)要执行的操作以及要在其上执行操作的操作数。虽然定义了指令模板(或子格式),但一些指令格式还被进一步分解。例如,给定指令格式的指令模板可以被定义为具有指令格式字段的不同子集(所包含的字段通常采用相同次序,但是因为包含了较少字段所以至少一些具有不同的位位置)和/或被定义为具有不同解释的给定字段。给定的指令利用给定的指令格式(并且如果被定义,则采用所述指令格式的指令模板的给定的一种)来表达,并且指定操作和操作数。指令流是指令的特定序列,其中序列中的每条指令是采用指令格式(并且如果被定义,则采用所述指令格式的指令模板的给定的一种)的指令的发生。
科学、金融、自动向量化通用目的、RMS(识别、挖掘和综合)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和视频操纵)通常需要在大量数据项上执行相同的操作(称作“数据并行性”)。单指令多数据(SIMD)指的是使得处理器在多个数据项上执行操作的一类指令。SIMD技术尤其适合于能够逻辑地将寄存器中的位划分为多个固定大小的数据元素的处理器,每个数据元素表示单独的值。例如,64位寄存器中的位可以指定为将在四个单独的16位数据元素上被操作的源操作数,四个单独的16位数据元素中的每个表示单独的16位值。这种类型的数据称作紧缩数据类型或向量数据类型,并且这种数据类型的操作数被称作紧缩数据操作数或向量操作数。换言之,紧缩数据项或向量指的是紧缩数据元素的序列;并且紧缩数据操作数或向量操作数是SIMD指令(也被认为是紧缩数据指令或向量指令)的源操作数或目的操作数。
以示例的方式,一种类型的SIMD指令指定以垂直方式在两个源向量操作数上执行单个向量操作,以生成相同大小、具有相同数量的数据元素并采用相同数据元素次序的目的向量操作数(也称作结果向量操作数)。在源向量操作数中的数据元素称作源数据元素,而在目的向量操作数中的数据元素被称作目的或结果数据元素。这些源向量操作数具有相同大小且包含相同宽度的数据元素,并因此它们包含相同数量的数据元素。在两个源向量操作数中相同位位置处的源数据元素形成数据元素对(也称作相对应的数据元素)。分别在这些源数据元素对中的每对上执行SIMD指令所指定的操作,以生成结果数据元素的匹配数,并因此每对源数据元素具有相对应的结果数据元素。由于操作是垂直的且由于结果向量操作数是相同大小的、具有相同数量的数据元素,并且结果数据元素存储为与源向量操作数相同的数据元素次序,所以结果数据元素处于结果向量操作数中的、与它们在源向量操作数中对应的源数据元素对相同的位位置处。除了该示例性类型的SIMD指令外,存在多种其它类型的SIMD指令(例如,只具有一个或具有多个两个源向量操作数的;以水平方式操作的;生成具有不同大小、具有不同大小的数据元素和/或具有不同数据元素次序的结果向量操作数的)。应该理解的是,术语“目的向量操作数”(或目的操作数)被定义为执行由指令指定的操作数的直接结果,包括将目的操作数存储在某位置(在该指令所指定的寄存器或存储器地址处),从而它可以作为源操作数由另一指令访问(通过由另一指令指定相同位置)。
SIMD技术,例如 CoreTM处理器采用的、具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的指令集的SIMD技术,已经使得在应用性能上得到显著改善(CoreTM和MMXTM是Intel Corporation of Santa Clare,Calif.的注册商标或商标)。已经发布了涉及高级向量扩展(AVX)且使用VEX编码方案的未来SIMD扩展的额外集合。
附图说明
图1A是示出了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、乱序发布/执行管线的框图;
图1B是示出了根据本发明的实施例的要包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核心二者的框图;
图2是根据本发明的实施例的具有集成的存储器控制器和图形的单核心处理器和多核心处理器的框图;
图3示出了根据本发明的一个实施例的系统的框图;
图4示出了根据本发明的实施例的第二系统的框图;
图5示出了根据本发明的实施例的第三系统的框图;
图6示出了根据本发明的实施例的片上系统(SoC)的框图;
图7示出了根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图;
图8示出了根据本发明的一个实施例的执行屏蔽位反转操作的装置;
图9示出了根据本发明的另一实施例的执行屏蔽位置换操作的装置;
图10示出了包括分组数据寄存器和紧缩数据操作屏蔽寄存器的处理器架构;
图11示出了根据本发明的一个实施例的用于执行屏蔽位反转操作的方法;
图12示出了根据本发明的另一实施例的用于执行屏蔽位置换操作的方法。
具体实施方式
示例性处理器架构和数据类型
图1A是示出了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、乱序发布/执行管线的框图。图1B是示出了根据本发明的实施例的要包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核心二者的框图。图1A-B中的实线框示出了有序管线和有序核心,而虚线框的可选添加示出了寄存器重命名、乱序发布/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图1A中,处理器管线100包括提取阶段102、长度解码阶段104、解码阶段106、分配阶段108、重命名阶段110、调度(也被认为是分派或发布)阶段112、寄存器读取/存储器读取阶段114、执行阶段116、写回/存储器写入阶段118、异常处理阶段122、以及提交阶段124。
图1B示出了处理器核心190,其包括耦合到执行引擎单元150的前端单元130,且二者均耦合到存储器单元170。核心190可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心,或者混合或可替代的核心类型。作为又一选项,核心190可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端单元130包括耦合到指令高速缓存单元134上的分支预测单元132,所述指令高速缓存单元134耦合到指令转译后备缓冲器(TLB)136,所述TLB 136耦合到指令提取单元138,所述指令提取单元138耦合到解码单元140。解码单元140(或解码器)可以解码指令,并生成一个或多个微操作、微代码入口点、微指令、其它指令、或者从原始指令解码或导出或以其他方式反映原始指令的其它控制信号作为输出。解码单元140可以使用各种不同机制来实现。适当的机制的例子包括但不限于:查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心190包括微代码ROM或存储用于特定宏指令的微代码的其它介质(例如,在解码单元140中或者在前端单元130内)。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括重命名/分配器单元152,其耦合到引退单元154和一个或多个调度器单元156的集合。调度器单元156表示任何数量的不同的调度器,包括保留站、中央指令窗等。调度器单元156耦合到物理寄存器文件单元158。物理寄存器文件单元158中的每个表示一个或多个物理寄存器文件,其中的不同文件存储一种或多种不同的数据类型,例如,标量整数、标量浮点数、紧缩整数、紧缩浮点数、向量整数、向量浮点数、状态(例如,作为将要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元158包括向量寄存器单元、写入屏蔽寄存器单元以及标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量屏蔽寄存器以及通用寄存器。物理寄存器文件单元158被引退单元154重叠,以示出可以实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器以及引退寄存器文件;使用寄存器映射和寄存器池;等)。引退单元154和物理寄存器文件单元158耦合到执行簇160。执行簇160包括一个或多个执行单元162的集合和一个或多个存储器访问单元164的集合。执行单元162可以执行各种操作(例如,移位、加、减、乘)并在各种类型的数据(例如,标量浮点数、紧缩整数、紧缩浮点数、向量整数、向量浮点数)上执行各种操作。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但其它实施例可以只包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元156、物理寄存器文件单元158以及执行簇160可能被示出为复数的,这是因为某些实施例针对特定类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点数/紧缩整数/紧缩浮点数/向量整数/向量浮点数管线、和/或每个具有其自身的调度器单元、物理寄存器文件单元和/或执行簇的存储器访问管线—并且在单独的存储器访问管线的情况下,仅该管线的执行簇具有存储器访问单元164的某些实施例被实施)。还应该理解的是,当使用单独管线时,这些管线中的一个或多个可以是乱序发布/执行而其它的是有序的。
存储器访问单元164的集合耦合到存储器单元170,存储器单元170包括耦合到数据高速缓存单元174的数据TLB单元172,数据高速缓存单元174耦合到级别2(L2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可以包括加载单元、存储地址单元以及存储数据单元,其每一个耦合到存储器单元170中的数据TLB单元172。指令高速缓存单元134还耦合到存储器单元170中的级别2(L2)高速缓存单元176。L2高速缓存单元176耦合到一个或多个其它级别的高速缓存并最终耦合到主存储器。
以示例的方式,示例性寄存器重命名、乱序发布/执行核心架构可以按如下实现管线100:1)指令提取138执行提取和长度解码阶段102和104;2)解码单元140执行解码阶段106;3)重命名/分配器单元152执行分配阶段108和重命名阶段110;4)调度器单元156执行调度阶段112;5)物理寄存器文件单元158和存储器单元170执行寄存器读取/存储器读取阶段114;执行簇160执行执行阶段116;6)存储器单元170和物理寄存器文件单元158执行写回/存储器写入阶段118;7)各种单元可能涉及到异常处理阶段122;以及8)引退单元154和物理寄存器文件单元158执行提交阶段124。
核心190可以支持一个或多个指令集(例如,x86指令集(具有已经添加有更新版本的一些扩展);Sunnyvale,CA的MIPS Techmologies的MIPS指令集;Sunnyvale,CA的ARMHolings的ARM指令集(具有诸如NEON的可选的额外扩展),包括本文所描述的指令。在一个实施例中,核心190包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2和/或通用向量友好指令格式(U=0和/或U=1)的一些形式,如下所讨论的)的逻辑,由此允许使用紧缩数据执行由很多多媒体应用所使用的操作。
应该理解的是,核心可以支持多线程(执行两个或多个并行组的操作或线程),并可以以多种方式进行,包括时间分片多线程、同时多线程(其中,单个物理核心提供针对该物理核心同时多线程处理的线程中的每个的逻辑核心)或其组合(例如,诸如在超线程技术中的时间分片提取和解码以及其后同时多线程处理)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应该理解的是,寄存器重命名可以用在有序架构中。虽然处理器的图示实施例还包括单独的指令和数据高速缓存单元134/174和共享L2高速缓存单元176,但可替代的实施例可以具有针对指令和数据二者的单个内部高速缓存,例如,级别1(L1)内部高速缓存,或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。可替代地,所有的高速缓存可以在核心和/或处理器的外部。
图2是根据本发明的实施例的处理器200的框图,所述处理器200可以具有多于一个的核心,可以具有集成的存储器控制器,并可以具有集成的图形。图2中的实线框示出了具有单个核心202A、系统代理210、一个或多个总线控制器单元216的集合的处理器200,而虚线框的可选添加示出了具有多个核心202A-N、在系统代理单元210中的一个或多个集成的存储器控制器单元214的集合以及专用逻辑208的可替代的处理器200。
因此,处理器200的不同实现方式可以包括:1)具有专用逻辑208和核心202A-N的CPU,其中,所述专用逻辑208是集成的图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心),而核心202A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心、两者的组合);2)具有核心202A-N的协处理器,所述核心202A-N是想要主要用于图形和/或科学(吞吐量)的大量专用核心;以及3)具有核心202A-N的协处理器,所述核心202A-N是大量通用有序核心。因此,处理器200可以是通用处理器;协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30或更多个核心)、嵌入式处理器等。处理器可以实施在一个或多个芯片上。处理器200可以是一个或多个基底的一部分和/或可以利用多个处理技术(例如,BiCMOS、CMOS或NMOS)中的任意一个被实施在一个或多个基底上。
存储器层级包括核心内的一级或多级高速缓存、一组或一个或多个共享的高速缓存单元206以及与集成的存储器控制器单元214的集合耦合的外部存储器(未示出)。共享的高速缓存单元206的集合可以包括一个或多个中级高速缓存,例如,级别2(L2)、级别3(L3)、级别4(L4)或其它级别的高速缓存、最后一级高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环形的互连单元212将集成的图形逻辑208、共享的高速缓存单元206的集合、以及系统代理单元210/集成的存储器控制器单元214互连,但可替代的实施例可以使用任意数量的已知的技术以用于互连这些单元。在一个实施例中,保持在一个或多个高速缓存单元206和核心202A-N之间的一致性。
在一些实施例中,核心202A-N中的一个或多个能够进行多线程。系统代理210包括协调和操作核心202A-N的那些部件。系统代理单元210可以包括例如功率控制单元(PCU)和显示单元。PCU可以是需要调整核心202A-N和集成的图形逻辑208的功率状态的逻辑和部件或者包括所述逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核心202A-N在架构指令集方面可以是同构的或异构的;也就是,核心202A-N中的两个或更多能够执行相同的指令集,而其它的仅能够执行所述指令集的子集或不同的指令集。
图3-6是示例性计算机架构的框图。用于膝上型计算机、台式计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的本领域已知的其它系统设计和配置也是适当的。通常,如本文所公开的能够并入处理器和/或其它执行逻辑的大量系统或电子设备通常是适当的。
现在参考图3,其示出了根据本发明的一个实施例的系统300的框图。系统300可以包括一个或多个处理器310、315,其耦合到控制器中心320。在一个实施例中,控制器中心320包括图形存储器控制器中心(GMCH)390和输入/输出中心(IOH)350(其可以在单独的芯片上);GMCH 390包括存储器和图形控制器,其上耦合有存储器340和协处理器345;IOH 350将输入/输出(I/O)设备360和GMCH 390耦合。可替代地,存储器和图形控制器中的一个或两者集成到处理器(如本文所描述的)内,存储器340和协处理器345直接耦合到处理器310,以及与IOH 350在单个芯片中的控制器中心320。
在图3中以虚线表示额外的处理器315的可选本质。每个处理器310、315可以包括本文所描述的处理核心中的一个或多个,并且可以是某一版本的处理器200。
存储器340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者两者的组合。对于至少一个实施例,控制器中心320经由多跳总线(例如,前端总线(FSB)、点对点接口(诸如快速通道互连(QPI)、或类似的连接395)与处理器310、315通信。
在一个实施例中,协处理器345是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中心320可以包括集成的图形加速器。
在优点的度量范围(包括架构、微架构、热、功率消耗特性等)方面,在物理资源310、315之间可以存在大量不同。
在一个实施例中,处理器310执行用于控制通用类型的数据处理操作的指令。指令中可以嵌入协处理器指令。处理器310将这些协处理器指令识别为应由附接协处理器345执行的类型。因此,处理器310在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器345。协处理器345接受并执行接收到的协处理器指令。
现在参考图4,示出了根据本发明的实施例的第一更具体示例性系统400的框图。如图4所示,多处理器系统400是点对点互连系统,并包括经由点对点互连450耦合的第一处理器470和第二处理器480。处理器470和480中的每个可以是某一版本的处理器200。在本发明的一个实施例中,处理器470和480分别是处理器310和315,而协处理器438是协处理器345。在另一实施例中,处理器470和480分别是处理器310和协处理器345。
处理器470和480示出为分别包括集成的存储器控制器(IMC)单元472和482。处理器470还包括点对点(P-P)接口476和478作为其总线控制器单元的一部分;类似地,第二处理器480包括P-P接口486和488。处理器470、480可以经由点对点(P-P)接口450利用P-P接口电路478、488来交换信息。如图4所示,IMC 472和482将处理器耦合到各个存储器,即存储器432和存储器434,它们可以是本地附接到各个处理器的主存储器的部分。
处理器470、480每个均可以经由单独的P-P接口452、454使用点对点接口电路476、494、486、498与芯片组490交换信息。芯片组490可以可选地经由高性能接口439与协处理器438交换信息。在一个实施例中,协处理器438是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享的高速缓存(未示出)可以被包括在或者处理器中或者在两个处理器外部,但经由P-P互连与处理器连接,以使得当处理器处于低功率模式时可以将任一处理器或处理器二者的本地高速缓存信息存储在共享的高速缓存中。
芯片组490可以经由接口496耦合到第一总线416。在一个实施例中,第一总线416可以是外围部件互连(PCI)总线,或者诸如快速PCI总线或其它第三代I/O互连总线的总线,但是本发明的范围并不局限于此。
如图4所示,各种I/O设备414以及总线桥418可以耦合到第一总线416,所述总线桥418将第一总线416耦合到第二总线420。在一个实施例中,一个或多个额外处理器415耦合到第一总线416,所述处理器415例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任意其它处理器。在一个实施例中,第二总线420可以是低引脚数(LPC)总线。各种设备可以耦合到第二总线420,包括例如键盘和/或鼠标422、通信设备427和存储单元428,所述存储单元例如是磁盘驱动器或其它大容量存储设备,在一个实施例中其可以包括指令/代码和数据430。此外,音频I/O424可以耦合到第二总线420。注意,其它架构是可能的。例如,代替图4的点对点架构,系统可以实施多跳总线或其它这样的架构。
现在参考图5,其示出了根据本发明的实施例的第二更具体的示例性系统500的框图。在图4和5中类似的元件具有类似的附图标记,并且图4的某些方面从图5中省略,以免模糊图5的其它方面。
图5示出了处理器470、480可以分别包括集成的存储器和I/O控制逻辑(CL)472和482。因此,CL 472、482包括集成的存储器控制器单元,并包括I/O控制逻辑。图5示出了不仅存储器432、434耦合到CL 472、482,而且I/O设备514也耦合到控制逻辑472、482。传统I/O设备515耦合到芯片组490。
现在参考图6,其示出了根据本发明的实施例的SoC 600的框图。图2中类似的元件具有类似的附图标记。同样,虚线框是更高级SoC上的可选特征。在图6中,互连单元602耦合到:应用处理器610,其包括一个或多个核心202A-N的集合和共享的高速缓存单元206;系统代理单元210;总线控制器单元216;集成的存储器控制器单元214;一组或一个或多个协处理器620,其可以包括集成的图形逻辑、图形处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元630;直接存储器存取(DMA)单元632;以及显示单元640,用于耦合到一个或多个外部显示器。在一个实施例中,协处理器620包括专用处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文所公开的机制的实施例可以实施在硬件、软件、固件或这样的实现方式的组合中。本发明的实施例可以被实施为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
程序代码,例如图4所示的代码430,可以被应用到输入指令以执行本文所描述的功能并生成输出信息。可以将输出信息以已知的方式应用到一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器任意系统,所述处理器例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以以高级过程编程语言或面向对象编程语言来实现,以与处理系统进行通信。如果期望的话,则程序代码还可以以汇编语言或机器语言来实现。事实上,本文所描述的机制不限于任意特定编程语言的范围。在任何情况下,所述语言可以是编译的或解释的语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性的指令来实现,所述指令代表处理器内的各种逻辑,当其被机器读取时,使得机器制造逻辑以执行本文所描述的技术。这种代表被称为“IP核心”,可以将其存储于有形的机器可读介质上并提供给各种客户或制造设施以加载到实际制造逻辑或处理器的制造机器上。
这种机器可读存储介质可以包括但不限于:由机器或设备制造或形成的物品的非暂时性有形布置,包括诸如硬盘之类的存储介质;任意其它类型的磁盘,包括软盘、光盘、压缩磁盘只读存储器(CD-ROM)、可重写压缩磁盘(CD-RW)以及磁光盘;半导体设备,例如,只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡;或适用于存储电子指令的任意其它类型的介质。
因此,本发明的实施例还包括非暂时性有形的机器可读介质,其包含指令或包含设计数据,例如硬件描述语言(HDL),其定义了本文所描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以称作程序产品。
在一些情况下,指令转换器可以用于将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、转变、仿真或者以其他方式转换到由核心所处理的一个或多个其它指令。指令转换器可以被实施在软件、硬件、固件或其组合中。指令转换器可以在处理器上、远离处理器、或者部分在处理器上部分远离处理器。
图7是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在图示实施例中,指令转换器是软件指令转换器,但是可替代地,指令转换器可以被实施在软件、固件、硬件或其各种组合中。图7示出了可以利用x86编译器704来编译采用高级语言702的程序,以生成x86二进制代码706,其可以由具有至少一个x86指令集核心的处理器716本机地执行。具有至少一个x86指令集核心的处理器716表示能够基本上执行与具有至少一个x86指令集核心的Intel处理器相同的功能的任何处理器,其通过兼容地执行或以其他方式处理(1)Intel x86指令集核心的指令集的主要部分,或者(2)目标在于在具有至少一个x86指令集核心的Intel处理器上运行的应用或其它软件的对象代码版本,以便实现与具有至少一个x86指令集核心的Intel处理器基本上相同的结果。x86编译器704表示可操作以生成x86二进制代码706(例如,对象代码)的编译器,所述x86二进制代码706可以利用或不利用额外的链接处理,其可以在具有至少一个x86指令集核心716的处理器上执行。类似地,图7示出了可以利用可替代的指令集编译器708对采用高级语言的程序702进行编译,以生成可替代的指令集二进制代码710,所述二进制代码710可以由不具有至少一个x86指令集核心的处理器714(例如,具有执行Sunnyvale,CA的MIPS Technoloties的MIOS指令集和/或执行Sunnyvale,CA的ARM Holdings的ARM指令集的核心的处理器)本机地执行。指令转换器712用于将x86二进制代码706转换为可以由不具有x86指令集核心的处理器714本机地执行的代码。该转换后的代码不可能与可替代的指令集二进制代码710相同,因为能够这样的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自可替代的指令集的指令组成。因此,指令转换器712表示通过仿真、模拟或任意其它处理以允许不具有x86指令集处理器或核心的处理器或其它电子设备来执行x86二进制代码706的软件、固件、硬件或者其组合。
在屏蔽寄存器中反转和置换位的实施例
本文所使用的屏蔽寄存器有效地包含对应于向量寄存器中的元素的位,并跟踪应该在其上执行操作的元素。因此,需要有能够将与针对向量寄存器的行为类似的行为在这些屏蔽位上进行复制的一般操作,并通常允许人们调整屏蔽寄存器中的这些屏蔽位。
本发明的一个实施例包括反转屏蔽寄存器内的位(通过取决于屏蔽尺寸而将位置n处的位替换为对称位置处的位)的指令。因为每个屏蔽位对应于单个向量元素,所以屏蔽寄存器中的活动位(active bit)的数量取决于向量寄存器的大小(以位为单位)和元素的大小二者。从而可以采用针对不同数据类型的不同形式,通过示例而非限制的方式包括:字节(8位)、字(16位)、双字(32位)以及四字(64位)大小。一个屏蔽寄存器可以用作源而结果可以写入到第二屏蔽寄存器。
以下是所提出的用于双字形式的指令的可能实现方式的伪代码。当然,可以针对其它数据类型(字节、字和四字)实现该指令。
在最后一行,DEST[MAX_KL-1:32]←0表示在需要时使得位归零。例如,如果屏蔽目的寄存器大于32位(例如,64位),则超过第一32的任何位被归零。
图8示出了在一个实施例中采用的架构部件,包括用于执行屏蔽反转位指令的位反转逻辑805。作为响应,如图所示,来自SRC2 802中的屏蔽的位值被转移到目的804中的对称位置。例如,位反转逻辑805将源802中位置0处的位转移到目的804中的位位置31;在源802中位置1处的位被转移到目的804中的位位置30,等等,直到所有的位都被从源转移到目的,产生原始位布置的对称的“镜像”。然后,存储于目的804的结果屏蔽可以用于后续的向量操作。
本发明的另一实施例包括这样的指令:用于置换来自第一屏蔽操作数(目的)和第三操作数(第二源)的值,并将它们插入到在由第二操作数(第一源)中的索引所指向的位置处的目的操作数。注意,这些指令允许来自源的一个位值被复制到目的操作数中的多于一个位置。因为每个屏蔽位对应于单个向量元素,所以屏蔽寄存器中的活动位的数量取决于向量寄存器的大小(以位为单位)和元素的大小二者。所以该置换操作具有针对不同数据类型(字节(8位)、字(16位)、双字(32位)以及四字(64位))大小的形式。
指令的一个实施例采用两个源:将被置换的屏蔽寄存器以及包含置换控制的向量寄存器。结果被写入到第二屏蔽寄存器。
以下是所提出的针对双字形式的指令的可能实现方式的伪代码。当然,可以针对其它数据类型(字节、字和四字)实现该指令。
在该实施例中,在每次迭代时,SCR1中的6个位用作识别SRC2中的位位置的索引。该位然后被转移到目的屏蔽寄存器DEST,在位置j处。再次,在最后一行,DEST[MAX_KL-1:32]←0表示在需要时使得位归零。例如,如果屏蔽目的寄存器大于32位(例如,64位),则超过第一32的任何位被归零。
图9示出了在一个实施例采用的架构部件,其包括用于执行屏蔽置换指令的置换逻辑905。响应于从屏蔽置换控制寄存器(在该例子中是SRC1)读取的索引,来自SRC2寄存器902中的指定位位置B0-B31的位被置换成目的寄存器DST 904中不同的位位置P0-P31(通过变量j来识别)。利用置换控制寄存器中的不同索引,可以将来自SRC2 902的任何位复制到DST904中的任意位位置。
图10是用于执行一个或多个屏蔽位反转指令1004A(例如,KREVERSEBITSD)和/或屏蔽置换指令1004B(例如,KPEMD)的处理器(处理器核心)1000的示例性实施例的框图。在一些实施例中,处理器可以是(例如,在台式计算机、膝上型计算机、服务器等计算机中使用的类型的)通用处理器。可替代地,处理器可以是专用处理器。适当的专用处理器的例子仅举几例来说包括但不限于:网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、各种其混合或者全部其它类型的处理器中的任何一种。
处理器1000包括架构可见寄存器(例如,架构寄存器文件)1005。架构寄存器还可以在本文简称作寄存器。除非另外指出或显而易见的,否则短语“架构寄存器”、“寄存器文件”和“寄存器”在本文中用于指代对软件和/或程序员可见的寄存器和/或由宏指令或汇编语言指令指定用于识别操作数的寄存器。这些寄存器与在给定微架构中的其它非架构或非架构可见寄存器(例如,由指令使用的临时寄存器、重排序缓冲器、引退寄存器等)形成对比。寄存器通常表示管芯上处理器存储位置。
所示出的架构寄存器可以包括紧缩数据寄存器1006,其可操作以用于存储紧缩数据或向量数据。所示的架构寄存器还可以包括紧缩数据操作屏蔽寄存器1007。紧缩数据操作屏蔽寄存器中的每一个可以操作以用于存储紧缩数据操作屏蔽。这些寄存器可以在本说明书中称作写入屏蔽寄存器。紧缩数据操作数可以存储于紧缩数据寄存器1007中。
处理器还可以包括执行逻辑1008,其可操作以用于执行或处理屏蔽位反转指令1004A和/或屏蔽置换指令1004B中的一个或多个。在一些实施例中,执行逻辑可以包括特定逻辑(例如,可能与固件组合的特定电路或硬件)以执行这些指令。
图11示出了在处理器中执行KREVERSEBITS指令的实施例。在1101处提取具有第一源寄存器操作数和目的寄存器操作数以及操作码的KREVESEBITS指令。
在1102处,由解码逻辑对KREVESEBITS指令进行解码。
在1103处,取回/读取源操作数值。例如,读取源寄存器。
在1104处,通过执行源(例如,一个或多个功能单元)来执行解码后的KREVESEBITS指令(或包括诸如微操作之类的指令的操作),从而将位置n处的每个位替换为源屏蔽寄存器中对称位置处的位。在1105处,新确定的屏蔽值存储于目的寄存器操作数中。在一些实施例中,计算出的值被存储于紧缩数据寄存器的数据元素中。虽然单独示出了1104和1105,但在一些实施例中,可以将它们作为指令执行的一部分一起执行。
图12示出了在处理器中执行KPERM指令的实施例。在1201处提取具有第一源寄存器操作数和目的寄存器操作数以及操作码的KPERM指令。
在1202处,通过解码逻辑对KPERM指令进行解码。
在1203处,取回/读取源操作数值。例如,从一个源寄存器读取控制位以确定如何置换位(例如,图9中的SRC1 901)并且从另一源寄存器(例如,SCR2 902)读取将被置换的位。
在1204处,通过执行资源(例如,一个或多个功能单元)执行解码后的KPERM指令(或者包括例如微操作之类的指令的操作),以将位从源屏蔽寄存器(SRC2)置换到目的屏蔽寄存器(DEST)。在1205处,将新确定的屏蔽值存储于目的寄存器操作数中。在一些实施例中,计算出的值存储于紧缩数据寄存器的数据元素中。虽然单独示出了1204和1205,但在一些实施例中,可以将它们作为指令执行的一部分一起执行。
本发明的实施例可以包括以上描述的各种步骤。所述步骤可以被实施为机器可执行指令,其用于使得通用或专用处理器执行所述步骤。可替代地,这些步骤可以由包含用于执行步骤的硬接线逻辑的特定硬件部件来执行,或者通过编程的计算机部件和定制硬件部件的任意组合来执行。
如本文所描述的,指令可以指的是特定配置的硬件,例如,被配置为执行某些操作或具有预先确定的功能或存储在实施为非暂时性计算机可读介质的存储器中的软件指令的专用集成电路(ASIC)。因此,可以利用在一个或多个电子设备(例如,终端站、网络元件等)上存储和执行的代码和数据实现附图中示出的技术。这种电子设备利用计算机机器可读介质存储并传输(内部地和/或利用通过网络的其它电子设备)代码和数据,所述介质例如是非暂时性计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪速存储器设备;相变存储器)以及暂时性计算机机器可读通信介质(例如,电、光、声或其它形式的传播信号—例如载波、红外信号、数字信号等)。另外,这种电子设备通常包括一个或多个处理器的集合,其耦合到一个或多个其它部件上,例如一个或多个存储设备(非暂时性机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)以及网络连接。通常通过一个或多个总线和桥(也称作总线控制器)耦合一组处理器和其它部件。存储设备和携带网络业务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备通常存储用于在所述电子设备的一个或多个处理器的集合上执行的代码和/或数据。当然,可以利用软件、固件和/或硬件的不同组合实现本发明的实施例的一个或多个部分。遍及该详细的说明书,出于解释的目的,阐述了多个具体细节以便提供对本发明的透彻理解。然而,对于本领域的技术人员而言将会显而易见的是,可以在不具有这些具体细节的情况下实践本发明。在某些实例中,并未详尽描述公知的结构和功能,以免模糊本发明的主题。因此,应该通过后续的权利要求判断本发明的范围和精神。

Claims (47)

1.一种处理器,包括:
多个向量寄存器;
多个通用寄存器;
多个屏蔽寄存器,其包括源屏蔽寄存器和目的屏蔽寄存器,所述源屏蔽寄存器用于存储包括采用第一屏蔽位布置的多个屏蔽位的屏蔽,所述多个屏蔽位与向量寄存器的多个数据元素相关联,并且指示要在相关联的数据元素中的哪些数据元素上执行向量操作;
解码器,用于对指定所述源屏蔽寄存器和所述目的屏蔽寄存器的指令进行解码;以及
执行单元,所述执行单元耦合到所述解码器和所述多个屏蔽寄存器,所述执行单元响应于经解码的指令的执行,进行以下操作:
执行屏蔽位反转操作,所述屏蔽位反转操作对所述多个屏蔽位的所述第一屏蔽位布置进行反转,以使得所述多个屏蔽位具有第二屏蔽位布置;以及
将采用所述第二屏蔽位布置的所述多个屏蔽位存储在所述目的屏蔽寄存器中。
2.根据权利要求1所述的处理器,其中,所述多个屏蔽位中的每个对应于所述向量寄存器中的8位字节数据元素。
3.根据权利要求1所述的处理器,其中,所述目的屏蔽寄存器用于除了所述多个屏蔽位之外还存储另外的位,并且其中所述另外的位全部具有零值。
4.根据权利要求1所述的处理器,其中,所述多个屏蔽位的数量取决于所述向量寄存器的大小和所述数据元素的大小。
5.根据权利要求1所述的处理器,其中,所述多个屏蔽位包括64位。
6.根据权利要求1所述的处理器,其中,所述多个屏蔽位的所述第二屏蔽位布置是所述多个屏蔽位的所述第一屏蔽位布置的镜像。
7.根据权利要求1所述的处理器,其中,所述解码器和所述执行单元被包括在乱序核心中,并且其中所述乱序核心包括重排序缓冲器(ROB)。
8.根据权利要求1所述的处理器,进一步包括:
级别1(L1)高速缓存;以及
级别2(L2)高速缓存。
9.根据权利要求1所述的处理器,其中,所述处理器是精简指令集计算(RISC)处理器。
10.一种芯片,包括:
集成存储器控制器单元;以及
处理器,其耦合到所述集成存储器控制器单元,所述处理器包括:
多个向量寄存器;
多个通用寄存器;
多个屏蔽寄存器,其包括源屏蔽寄存器和目的屏蔽寄存器,所述源屏蔽寄存器用于存储包括采用第一屏蔽位布置的多个屏蔽位的屏蔽,所述多个屏蔽位与向量寄存器的多个数据元素相关联,并且指示要在相关联的数据元素中的哪些数据元素上执行向量操作;
解码器,用于对指定所述源屏蔽寄存器和所述目的屏蔽寄存器的指令进行解码;以及
执行单元,所述执行单元耦合到所述解码器和所述多个屏蔽寄存器,所述执行单元响应于经解码的指令的执行,进行以下操作:
执行屏蔽位反转操作,所述屏蔽位反转操作对所述多个屏蔽位的所述第一屏蔽位布置进行反转,以使得所述多个屏蔽位具有第二屏蔽位布置;以及
将采用所述第二屏蔽位布置的所述多个屏蔽位存储在所述目的屏蔽寄存器中。
11.根据权利要求10所述的芯片,其中,所述多个屏蔽位中的每个对应于所述向量寄存器中的8位字节数据元素。
12.根据权利要求10所述的芯片,其中,所述目的屏蔽寄存器用于除了所述多个屏蔽位之外还存储另外的位,并且其中所述另外的位全部具有零值。
13.根据权利要求10所述的芯片,其中,所述多个屏蔽位的数量取决于所述向量寄存器的大小和所述数据元素的大小。
14.根据权利要求10所述的芯片,其中,所述多个屏蔽位包括64位。
15.根据权利要求10所述的芯片,其中,所述多个屏蔽位的所述第二屏蔽位布置是所述多个屏蔽位的所述第一屏蔽位布置的镜像。
16.根据权利要求10所述的芯片,其中,所述解码器和所述执行单元被包括在乱序核心中,并且其中所述乱序核心包括重排序缓冲器(ROB)。
17.根据权利要求10所述的芯片,其中所述处理器进一步包括:
级别1(L1)高速缓存;以及
级别2(L2)高速缓存。
18.根据权利要求17所述的芯片,进一步包括与所述处理器耦合的级别3(L3)高速缓存。
19.根据权利要求10所述的芯片,其中,所述处理器是精简指令集计算(RISC)处理器。
20.根据权利要求10所述的芯片,进一步包括环形互连单元,所述环形互连单元将所述处理器耦合到所述集成存储器控制器单元。
21.根据权利要求10所述的芯片,进一步包括多个协处理器,所述多个协处理器与所述处理器耦合。
22.根据权利要求10所述的芯片,进一步包括通用图形处理单元(GPGPU),所述通用图形处理单元(GPGPU)与所述处理器耦合。
23.根据权利要求10所述的芯片,进一步包括网络处理器,所述网络处理器与所述处理器耦合。
24.根据权利要求10所述的芯片,进一步包括网络通信接口,所述网络通信接口与所述处理器耦合,所述网络通信接口将所述系统通信地耦合到网络。
25.根据权利要求10所述的芯片,进一步包括通信处理器,所述通信处理器与所述处理器耦合。
26.根据权利要求10所述的芯片,进一步包括直接存储器存取(DMA)单元,所述直接存储器存取(DMA)单元通过至少互连与所述处理器耦合。
27.根据权利要求10所述的芯片,进一步包括音频处理器,所述音频处理器通过至少互连与所述处理器耦合。
28.根据权利要求10所述的芯片,进一步包括图像处理器,所述图像处理器通过至少互连与所述处理器耦合。
29.根据权利要求10所述的芯片,进一步包括显示单元,所述显示单元与所述处理器耦合,所述显示单元耦合到一个或多个显示器。
30.一种系统,包括:
系统存储器;以及
处理器,其耦合到所述系统存储器,所述处理器包括:
多个向量寄存器;
多个通用寄存器;
多个屏蔽寄存器,其包括源屏蔽寄存器和目的屏蔽寄存器,所述源屏蔽寄存器用于存储包括采用第一屏蔽位布置的多个屏蔽位的屏蔽,所述多个屏蔽位与向量寄存器的多个数据元素相关联,并且指示要在相关联的数据元素中的哪些数据元素上执行向量操作;
解码器,用于对指定所述源屏蔽寄存器和所述目的屏蔽寄存器的指令进行解码;以及
执行单元,所述执行单元耦合到所述解码器和所述多个屏蔽寄存器,所述执行单元响应于经解码的指令的执行,进行以下操作:
执行屏蔽位反转操作,所述屏蔽位反转操作对所述多个屏蔽位的所述第一屏蔽位布置进行反转,以使得所述多个屏蔽位具有第二屏蔽位布置;以及
将采用所述第二屏蔽位布置的所述多个屏蔽位存储在所述目的屏蔽寄存器中。
31.根据权利要求30所述的系统,其中,所述多个屏蔽位中的每个对应于所述向量寄存器中的8位字节数据元素。
32.根据权利要求30所述的系统,其中,所述目的屏蔽寄存器用于除了所述多个屏蔽位之外还存储另外的位,并且其中所述另外的位全部具有零值。
33.根据权利要求30所述的系统,其中,所述多个屏蔽位的数量取决于所述向量寄存器的大小和所述数据元素的大小。
34.根据权利要求30所述的系统,其中,所述多个屏蔽位包括64位。
35.根据权利要求30所述的系统,其中,所述多个屏蔽位的所述第二屏蔽位布置是所述多个屏蔽位的所述第一屏蔽位布置的镜像。
36.根据权利要求30所述的系统,其中,所述解码器和所述执行单元被包括在乱序核心中,并且其中所述乱序核心包括重排序缓冲器(ROB)。
37.根据权利要求30所述的系统,其中所述处理器进一步包括:
级别1(L1)高速缓存;以及
级别2(L2)高速缓存。
38.根据权利要求30所述的系统,其中,所述处理器是精简指令集计算(RISC)处理器。
39.根据权利要求30所述的系统,进一步包括大容量存储设备,所述大容量存储设备耦合到所述处理器。
40.根据权利要求30所述的系统,进一步包括磁盘驱动器,所述磁盘驱动器耦合到所述处理器。
41.根据权利要求30所述的系统,进一步包括I/O设备,所述I/O设备耦合到所述处理器。
42.根据权利要求30所述的系统,进一步包括通信设备,所述通信设备耦合到所述处理器。
43.根据权利要求30所述的系统,进一步包括第二处理器,所述第二处理器耦合到所述处理器。
44.根据权利要求30所述的系统,进一步包括外围部件互连(PCI)快速总线,所述外围部件互连(PCI)快速总线耦合到所述处理器。
45.根据权利要求30所述的系统,进一步包括音频I/O,所述音频I/O耦合到所述处理器。
46.根据权利要求30所述的系统,其中,所述系统存储器包括动态随机存取存储器(DRAM)。
47.根据权利要求30所述的系统,其中,所述系统存储器包括指令,所述指令当由所述系统执行时使得所述系统使用所述指令来执行所述屏蔽位反转操作,以复制要对所述向量寄存器的多个数据元素执行的类似操作。
CN201810006909.6A 2013-06-27 2014-06-17 在屏蔽寄存器中反转和置换位的装置和方法 Active CN108052349B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/929,563 2013-06-27
US13/929,563 US9645820B2 (en) 2013-06-27 2013-06-27 Apparatus and method to reserve and permute bits in a mask register
PCT/US2014/042789 WO2014209685A1 (en) 2013-06-27 2014-06-17 Apparatus and method to reverse and permute bits in a mask register
CN201480030625.0A CN105247474B (zh) 2013-06-27 2014-06-17 在屏蔽寄存器中反转和置换位的装置和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480030625.0A Division CN105247474B (zh) 2013-06-27 2014-06-17 在屏蔽寄存器中反转和置换位的装置和方法

Publications (2)

Publication Number Publication Date
CN108052349A true CN108052349A (zh) 2018-05-18
CN108052349B CN108052349B (zh) 2022-06-10

Family

ID=52116842

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810006909.6A Active CN108052349B (zh) 2013-06-27 2014-06-17 在屏蔽寄存器中反转和置换位的装置和方法
CN201480030625.0A Active CN105247474B (zh) 2013-06-27 2014-06-17 在屏蔽寄存器中反转和置换位的装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201480030625.0A Active CN105247474B (zh) 2013-06-27 2014-06-17 在屏蔽寄存器中反转和置换位的装置和方法

Country Status (8)

Country Link
US (4) US9645820B2 (zh)
EP (1) EP3014417A4 (zh)
KR (2) KR101713841B1 (zh)
CN (2) CN108052349B (zh)
BR (1) BR112015029810A8 (zh)
RU (1) RU2636669C2 (zh)
TW (2) TWI641993B (zh)
WO (1) WO2014209685A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181877A (zh) * 2020-10-28 2021-01-05 瑞芯微电子股份有限公司 一种显示变频方法和系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US9946541B2 (en) * 2015-12-18 2018-04-17 Intel Corporation Systems, apparatuses, and method for strided access
US10152321B2 (en) * 2015-12-18 2018-12-11 Intel Corporation Instructions and logic for blend and permute operation sequences
US10296416B2 (en) * 2016-07-02 2019-05-21 Intel Corporation Read from memory instructions, processors, methods, and systems, that do not take exception on defective data
US10235170B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Decimal load immediate instruction
KR102503176B1 (ko) * 2018-03-13 2023-02-24 삼성디스플레이 주식회사 데이터 전송 시스템, 상기 데이터 전송 시스템을 포함하는 표시 장치 및 이를 이용한 데이터 전송 방법
US20200371793A1 (en) * 2019-05-24 2020-11-26 Texas Instruments Incorporated Vector store using bit-reversed order

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078011A1 (en) * 2000-05-05 2002-06-20 Lee Ruby B. Method and system for performing permutations with bit permutation instructions
US6643280B1 (en) * 1999-10-27 2003-11-04 Lucent Technologies Inc. Method and apparatus for generation of CDMA long codes
US7017028B2 (en) * 2003-03-14 2006-03-21 International Business Machines Corporation Apparatus and method for updating pointers for indirect and parallel register access
US20070118720A1 (en) * 2005-11-22 2007-05-24 Roger Espasa Technique for setting a vector mask
CN101105979A (zh) * 2006-07-11 2008-01-16 奇梦达北美公司 包括测试电路的随机存取存储器
CN101201736A (zh) * 2006-12-13 2008-06-18 索尼株式会社 数学运算处理装置
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US20120166511A1 (en) * 2010-12-22 2012-06-28 Hiremath Chetan D System, apparatus, and method for improved efficiency of execution in signal processing algorithms
WO2012134532A1 (en) * 2011-04-01 2012-10-04 Intel Corporation Vector friendly instruction format and execution thereof

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0337715A (ja) 1989-07-05 1991-02-19 Fujitsu Ltd ビット順反転回路
US5553309A (en) 1991-11-08 1996-09-03 Japan Atomic Energy Research Institute Device for high speed evaluation of logical expressions and high speed vector operations
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
US5832288A (en) 1996-10-18 1998-11-03 Samsung Electronics Co., Ltd. Element-select mechanism for a vector processor
WO1998044409A1 (fr) 1997-04-03 1998-10-08 Seiko Epson Corporation Micro-ordinateur, dispositif electronique et procede de traitement d'information
KR20000013327A (ko) 1998-08-07 2000-03-06 윤종용 인쇄기의 전사유니트
US6321687B1 (en) * 1999-07-28 2001-11-27 Whiteshire/Hamroc Llc Individual room duct and ventilation system for livestock production building
US6557096B1 (en) * 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US6622242B1 (en) 2000-04-07 2003-09-16 Sun Microsystems, Inc. System and method for performing generalized operations in connection with bits units of a data word
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7017032B2 (en) 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions
US20050289329A1 (en) 2004-06-29 2005-12-29 Dwyer Michael K Conditional instruction for a single instruction, multiple data execution engine
UA90481C2 (en) * 2004-07-29 2010-05-11 Квелкомм Инкорпорейтед System and processor of interleaving
TWI265455B (en) 2005-04-21 2006-11-01 King Billion Electronics Co Lt Integrated data processor
US8205334B2 (en) * 2005-07-15 2012-06-26 United Technologies Corporation Method for repairing a gas turbine engine component
US20070143579A1 (en) 2005-12-19 2007-06-21 King Billion Electronics Co. Ltd. Integrated data processor
US20090172348A1 (en) 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US9529592B2 (en) 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8433747B2 (en) 2008-02-01 2013-04-30 Microsoft Corporation Graphics remoting architecture
US8295941B2 (en) * 2008-09-15 2012-10-23 The Invention Science Fund I, Llc Systems configured to power at least one device disposed in a living subject, and related apparatuses and methods
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
RU2439662C2 (ru) * 2009-12-22 2012-01-10 Государственное образовательное учреждение высшего профессионального образования "Саратовский государственный университет им. Н.Г. Чернышевского" Устройство управляемой перестановки битов бинарной строки
US8682621B2 (en) * 2010-07-16 2014-03-25 Micron Technology, Inc. Simulating the transmission of asymmetric signals in a computer system
WO2013077884A1 (en) * 2011-11-25 2013-05-30 Intel Corporation Instruction and logic to provide conversions between a mask register and a general purpose register or memory
US20130151822A1 (en) 2011-12-09 2013-06-13 International Business Machines Corporation Efficient Enqueuing of Values in SIMD Engines with Permute Unit
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
WO2013095642A1 (en) 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate
US9639503B2 (en) * 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643280B1 (en) * 1999-10-27 2003-11-04 Lucent Technologies Inc. Method and apparatus for generation of CDMA long codes
US20020078011A1 (en) * 2000-05-05 2002-06-20 Lee Ruby B. Method and system for performing permutations with bit permutation instructions
US7017028B2 (en) * 2003-03-14 2006-03-21 International Business Machines Corporation Apparatus and method for updating pointers for indirect and parallel register access
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US20070118720A1 (en) * 2005-11-22 2007-05-24 Roger Espasa Technique for setting a vector mask
CN101105979A (zh) * 2006-07-11 2008-01-16 奇梦达北美公司 包括测试电路的随机存取存储器
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
CN101201736A (zh) * 2006-12-13 2008-06-18 索尼株式会社 数学运算处理装置
US20120166511A1 (en) * 2010-12-22 2012-06-28 Hiremath Chetan D System, apparatus, and method for improved efficiency of execution in signal processing algorithms
WO2012134532A1 (en) * 2011-04-01 2012-10-04 Intel Corporation Vector friendly instruction format and execution thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181877A (zh) * 2020-10-28 2021-01-05 瑞芯微电子股份有限公司 一种显示变频方法和系统

Also Published As

Publication number Publication date
WO2014209685A1 (en) 2014-12-31
US10209988B2 (en) 2019-02-19
CN105247474A (zh) 2016-01-13
US20180052686A1 (en) 2018-02-22
TW201737063A (zh) 2017-10-16
TWI641993B (zh) 2018-11-21
TWI575447B (zh) 2017-03-21
CN108052349B (zh) 2022-06-10
BR112015029810A2 (pt) 2017-07-25
KR101966713B1 (ko) 2019-04-09
KR20150138319A (ko) 2015-12-09
BR112015029810A8 (pt) 2019-12-24
KR20170027883A (ko) 2017-03-10
CN105247474B (zh) 2019-06-18
US10387149B2 (en) 2019-08-20
RU2636669C2 (ru) 2017-11-27
KR101713841B1 (ko) 2017-03-09
US10387148B2 (en) 2019-08-20
US9645820B2 (en) 2017-05-09
EP3014417A1 (en) 2016-05-04
TW201510862A (zh) 2015-03-16
US20170220350A1 (en) 2017-08-03
RU2015151187A (ru) 2017-06-01
US20150006847A1 (en) 2015-01-01
US20180039497A1 (en) 2018-02-08
EP3014417A4 (en) 2017-06-21

Similar Documents

Publication Publication Date Title
CN105247474B (zh) 在屏蔽寄存器中反转和置换位的装置和方法
CN108475193B (zh) 用于字节排序指令和用于四位组排序的处理器、方法和系统
CN103970509B (zh) 对条件循环进行矢量化的装置、方法、处理器、处理系统以及机器可读介质
CN104603745B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
CN104781803B (zh) 用于架构不同核的线程迁移支持
CN103827814B (zh) 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
CN104049953B (zh) 用于合并操作掩码的未经掩码元素的装置、方法、系统和制品
CN104813277B (zh) 用于处理器的功率效率的向量掩码驱动时钟门控
CN104025039B (zh) 打包数据操作掩码串接处理器、方法、系统及指令
CN104903867B (zh) 用于将寄存器的内容广播到另一个寄存器的数据元素位置的系统、装置和方法
CN118034781A (zh) 用于矩阵加法、减法和乘法的系统、方法和装置
CN105359129B (zh) 用于提供用于基因组测序和比对的族群计数功能的方法、装置、指令以及逻辑
CN104603746B (zh) 由读和写掩码控制的向量移动指令
CN107003837A (zh) 用于推测性编译器优化的轻量级受限事务存储器
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN104126170B (zh) 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令
CN107209722A (zh) 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑
CN106708753A (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN108369511A (zh) 用于基于通道的跨步存储操作的指令和逻辑
CN107077321A (zh) 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑
CN107077329A (zh) 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备
CN108446763A (zh) 可变字长神经网络加速器电路
CN108351811A (zh) 调度高度并行的应用
CN108369573A (zh) 用于设置多个向量元素的操作的指令和逻辑
CN106170761B (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