CN108475193A - 字节排序指令和四位组排序指令 - Google Patents

字节排序指令和四位组排序指令 Download PDF

Info

Publication number
CN108475193A
CN108475193A CN201680075363.9A CN201680075363A CN108475193A CN 108475193 A CN108475193 A CN 108475193A CN 201680075363 A CN201680075363 A CN 201680075363A CN 108475193 A CN108475193 A CN 108475193A
Authority
CN
China
Prior art keywords
register
processor
instruction
stored
ordering
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
CN201680075363.9A
Other languages
English (en)
Other versions
CN108475193B (zh
Inventor
A·K·米什拉
K·A·杜什
E·乌尔德-阿迈德-瓦尔
D·T·马尔
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 CN108475193A publication Critical patent/CN108475193A/zh
Application granted granted Critical
Publication of CN108475193B publication Critical patent/CN108475193B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

一种处理器包括:第一寄存器,用于在所述第一寄存器内的多个位置处存储多个数据项;第二寄存器;以及执行单元,可操作地耦合至所述第一寄存器和所述第二寄存器,所述执行单元包括实施用于以下操作的排序指令的逻辑电路:按数据项值的顺序对存储在所述第一寄存器中的所述多个数据项进行排序,以及将多个索引存储在所述第二寄存器中,其中,每个索引标识与在所述排序之前存储在所述第一寄存器中的数据项相关联的位置。

Description

字节排序指令和四位组排序指令
技术领域
本公开涉及计算装置的处理器,并且更具体地涉及由这些处理器采用的指令集架构(ISA)。
背景技术
指令集或指令集架构是计算机架构中与计算机编程有关的一部分。编程可以涉及计算机的不同方面,包括:与指令相关联的本机数据类型、寄存器架构、寻址模式、存储器架构、中断和异常处置、以及外部输入和输出(I/O)。应注意,术语指令(instruction)在本文中通常指在逻辑电路系统中以处理器的专用执行单元的形式实施的宏指令。
附图说明
根据以下给出的详细描述并且根据本公开的各个实施例的附图,将更全面地理解本公开。然而,附图不应被认为是将本公开限制于特定实施例,而是仅用于解释和理解。
图1展示了根据本公开的实施例的包括处理器的芯片上系统(SoC)。
图2展示了根据本公开的实施例的使用bsort对存储在通用寄存器中的字节进行排序的示例。
图3展示了根据所展示的实施例的使用bsort(或nsort)和拉式置换来实现推式数据置换的示例。
图4是根据本公开的实施例的一种用于执行数据项置换的方法的框图。
图5A是框图,展示了用于包括异构核的处理器的微架构,本公开的一个实施例可以用于所述异构核中。
图5B是框图,展示了根据本公开的至少一个实施例实施的有序流水线和寄存器重命名级、乱序发布/执行流水线。
图6展示了根据本公开的一个实施例的用于包括逻辑的处理器的微架构的框图。
图7是框图,展示了本公开的实施例可以用于其中的系统。
图8是本公开的实施例可以在其中操作的系统的框图。
图9是本公开的实施例可以在其中操作的系统的框图。
图10是根据本公开的实施例的芯片上系统(SoC)的框图。
图11是根据本公开的SoC设计的实施例的框图。
图12展示了计算机系统的一个实施例的框图。
具体实施方式
本公开的实施例涉及包括一类排序指令的指令集架构(ISA),所述排序指令当被执行时可以根据存储在第一寄存器中的数据项的下降值或根据其上升值将这些数据项排序成有序序列。每个寄存器可以包括用于存储数据项的多个逻辑位置,并且每个位置可以与位置编号相关联。由于执行排序指令之一而生成的有序数据项序列可以仍然存储在第一寄存器中,并且就在排序之前的数据项位置编号而言,从原始数据项序列到有序数据项序列的索引映射可以存储在第二寄存器中。
在一个实施例中,第一寄存器和第二寄存器可以具有以位为单位的相同长度。例如,数据项和索引可以占据相同数量的位,并且第一寄存器可以能够存储与存储在第二寄存器中的索引数相同数量的数据项。在另一个实施例中,第一寄存器和第二寄存器可以具有以位为单位的不同长度。例如,数据项可以比索引占据更多位。因此,为了在第二寄存器中存储与第一寄存器中存储的数据项数相同数量的索引,第二寄存器的长度可以比第一寄存器的长度短。
在一个实施例中,数据项是字节,每个字节包括八位并且反映从0到255范围内的数据值。这些字节可以存储在与处理器相关联的第一通用寄存器(GPR)中,而每个字节存储在寄存器内由位置编号标识的位置处。位置编号可以与连续索引值相关联。例如,64位GPR可以存储八个字节,其中,第一字节(字节索引0)存储在位0到7中,第二字节(字节索引1)存储在位8到13中,...,并且第八字节(字节索引7)存储在位56到63中。与处理器相关联的ISA可以包括字节排序指令(byte sort instruction,本文中也称为bsort),所述字节排序指令当被处理器执行时可以根据存储在第一GPR中的字节的值(字节值)来将这些字节排序成有序序列,并且将所述有序字节序列存储在第一GPR中。执行bsort还可以生成从原始字节序列到有序字节序列的索引映射,并且将所述索引映射存储在与处理器相关联的第二GPR中。
在另一个实施例中,数据项是四位组(nibble)(也称为半字节(half-byte)、或四位元组(quadbit)),每个四位组包括四个位并且反映范围从0到15内的数据值。这些四位组可以存储在与处理器相关联的第一通用寄存器(GPR)中,而每个四位组存储在寄存器内由位置编号标识的位置处。位置编号可以与连续索引值相关联。例如,64位GPR可以存储16个四位组,其中第一四位组(四位组索引0)存储在位0到3中,第二四位组(四位组索引1)存储在位4到7中,...,并且第16四位组(四位组索引15)存储在位60到63中。与处理器相关联的ISA可以包括四位组排序指令(nibble sort instruction,本文中也称为nsort),所述四位组排序指令当被处理器执行时可以根据存储在第一GPR中的四位组的值(四位组值)将这些四位组排序成有序序列,并且将所述有序四位组序列存储在第一GPR中。执行nsort还可以生成从原始四位组序列到有序四位组序列的索引映射,并且将所述索引映射存储在与处理器相关联的第二GPR中。
图1展示了根据本公开的实施例的包括处理器102的芯片上系统(SoC)100。处理器102可以包括在如SoC 100等半导体芯片组上制造的逻辑电路系统。处理器100可以是中央处理单元(CPU)、图形处理单元(GPU)、或多核处理器的处理核。如图1中所示出的,处理器102可以包括指令执行流水线104和寄存器空间106。流水线104可以包括多个流水线级,并且每个级包括逻辑电路系统,所述逻辑电路系统被制造成执行多级过程中用于完全执行在处理器102的指令集架构(ISA)中指定的指令所需要的特定级的操作。在一个实施例中,流水线104可以包括指令取出/解码级110、数据取出级112、执行级114、和写回级116。
寄存器空间106是包括与处理器102相关联的不同类型的寄存器的逻辑电路区域。在一个实施例中,寄存器空间106可以包括通用寄存器108、109,所述通用寄存器各自可以包括用于存储由在流水线104中执行的指令来处理的数据项的位数量(也称为“长度”)。例如,根据实施方式,寄存器108、109可以是64位、128位、256位、或512位寄存器。寄存器108、109中的每一个可以存储一个或多个数据项(例如,字节或四位组)。在一个实施例中,处理器102可以是单指令多数据(SIMD)处理器,即,处理器102可以执行一个指令来处理存储在寄存器108、109中的多个数据项。在一个实施例中,寄存器108、109可以是可用于存储暂态数据的通用寄存器。
程序的源代码可以编译成在与处理器102相关联的指令集架构(ISA)中定义的一系列机器可执行指令。当处理器102开始执行可执行指令时,这些机器可执行指令可以被置于流水线104上以供顺序执行。指令取出/解码级110可以检索置于流水线104上的指令并且识别与所述指令相关联的标识符。指令标识符可以将所接收到的指令与在处理器102的ISA中指定的指令相关联。
在ISA中指定的指令可以被设计成处理存储在通用寄存器(GPR)108、109中的数据项。数据取出级112可以从GPR 108中检索待处理的数据项(例如,字节或四位组)。执行级114可以包括用于执行在处理器102的ISA中指定的指令的逻辑电路系统。
在一个实施例中,与执行级114相关联的逻辑电路系统可以包括多个“执行单元”(或功能单元),每一个执行单元专用于执行一个对应指令。由这些执行单元执行的所有指令的集合可以构成与处理器102相关联的指令集。在执行用于处理由数据取出级112检索的数据项的指令之后,写回级116可以输出结果并将所述结果存储在GPR 108、109中。
在一个实施例中,处理器102的ISA可以定义bsort指令,并且处理器102的执行级114可以包括bsort执行单元118,所述bsort执行单元包括在ISA中定义的bsort指令的硬件实施方式。当使用bsort执行单元118执行时,bsort指令可以将存储在GPR 108中的字节(由数据取出级112之前从第一GPR中检索)排序成有序序列,而所述序列是根据所述字节的字节值来排序的。在一个实施例中,有序序列可以是采用下降值顺序的字节序列,导致具有最高值的字节与第一GPR的最低位置编号相关联,并且具有最低值的字节与第一GPR的最高位置编号相关联。在另一个实施例中,有序序列可以是采用上升值顺序的从最低位置编号到最高位置编号的字节序列。由bsort执行单元118执行bsort指令还可以生成从原始字节序列到有序字节序列的索引映射并且将所述索引映射存储在第二GPR中。在一个实施例中,原始数据项序列被顺序地存储在第一GPR的数据项位置序列处。数据项位置中的每一个可以与标识排序之前字节的位置编号的索引值(例如,0,1,...,n)相关联。由于执行bsort而引起的存储在第二GPR中的索引映射包含有序字节序列的原始位置编号。因此,执行bsort的输出包括第一GPR中的有序字节序列以及第二GPR中的相应索引序列。
bsort可以采用以下格式:bsort GPR-A GPR-B,其中,GPR-A和GPR-B是两个GPR。如果GPR-A和GPR-B是64位GPR,则GPR-A可以存储8个字节。响应于执行bsort指令,存储在GPR-A中的字节可以被重新安排成有序序列,并且GPR-B可以存储与有序序列中的字节相关联的八个索引值。
图2展示了根据本公开的实施例的使用bsort对存储在通用寄存器中的字节进行排序的示例。如图2中所示出的,处理器(未示出)可以与如64位寄存器GPR-A和GPR-B等GPR相关联。64位GPR-A或GPR-B中的每一个可以存储八个字节。在此示例中,GPR-A可以存储具有不同值的八个字节。这八个字节可以在GPR-A中存储在从字节位置0到字节位置7,其中,每个字节位置编号用于标识对应一字节。字节位置0到7可以从0到7相应地分配有连续索引值(例如,从字节0到字节7:29,4,122,9,8,33,24,19)。每个字节位置可以包括八个位。因此,字节位置0处的第一字节可以占据GPR-A的第一个(或最低)八位,并且字节位置1处的第二字节可以占据GPR-A的第二个八位,等等。bsort指令可以与采用以下格式的两个GPR相关联:Bsort GPR-B GPR-A,而GPR-A是用于存储待排序的八个字节的GPR,并且执行bsort的结果可以存储在GPR-A和GPR-B中。
参照图2,响应于执行bsort指令,可以根据升序来重新安排存储在GPR-A中的字节,即从(29,4,122,9,8,33,24,19)到(4,8,9,19,24,29,33,122)。因此,存储在GPR-A中的字节值从GPR-A中的最低位置编号增大到最高位置编号。存储在GPR-B中的可以是表示原始序列中的字节与有序序列中的字节之间关系的索引映射。由于原始序列中的字节的索引是连续编号的(即,0,1,...,7),因此存储在GPR-B中的索引映射可以是按照以下顺序安排的索引值:按照与这些索引值的存储在GPR-A中的有序序列中的相应字节相同的顺序。因此,在执行bsort之后,GPR-B可以包含索引映射(1,4,3,7,6,0,5,2)。在替代性实施例中,bsort可以将GPR-A中的字节重新安排成从(29,4,122,9,8,33,24,19)到(122,33,29,24,19,9,8,4)的降序,并且将索引映射(2,5,0,6,7,3,4,1)存储在GPR-B中。
在一个实施例中,执行级114可以包括用于相应地执行在ISA中指定的nsort指令的nsort执行单元120。当使用nsort执行单元120执行时,nsort指令可以将存储在GPR 108中的四位组(由数据取出级112之前从第一GPR中检索)排序成有序序列,而所述序列是根据所述四位组的四位组值来排序的。在一个实施例中,有序序列可以是采用下降值顺序的四位组序列。在另一个实施例中,有序序列可以是采用上升值顺序的四位组序列。执行nsort指令还可以生成从原始四位组序列到有序四位组序列的索引映射,并且将所述索引映射存储在第二GPR中。在一个实施例中,原始数据项序列被顺序地存储在第一GPR的数据项位置序列处。数据项位置中的每一个可以与索引值(例如,0,1,...,n)相关联。由于执行nsort而引起的存储在第二GPR中的索引映射包含有序序列中的四位组的相应索引值。因此,执行nsort的输出包括第一GPR中的有序四位组序列以及第二GPR中的索引映射。
nsort可以采用以下格式:nsort GPR-B GPR-A,其中,GPR-A、GPR-B是GPR。如果GPR-A、GPR-B是64位GPR,则GPR-A可以存储16个四位组。响应于执行nsort指令,存储在GPR-A中的四位组可以被重新安排成有序序列,并且GPR-B可以存储与有序序列中的四位组相关联的索引值。
因为bsort(或nsort)指令在逻辑电路中被实施为处理器102的一个执行单元,因此对bsort(或nsort)指令的执行可以在比类似软件实施方式更少的处理器周期中实现。在一个实施例中,执行bsort(或nsort)可以由执行单元在不多于五个处理器周期中执行。
在一个实施例中,此类排序指令(包括bsort和nsort)可以结合在ISA中指定的其他指令用于有效地实现新功能。在一个实施例中,bsort可以用于将在ISA中定义的拉式置换指令转换成推式置换指令,而不需要添加与推式置换相对应的执行单元。ISA的一些实施方式包括拉式数据置换指令(例如,x86ISA中的VPERM),所述拉式数据置换指令可以根据存储在第三GPR(索引GPR)中的字节索引映射将存储在第一GPR(源GPR)中的数据项的第一安排置换成存储在第二GPR(目的地GPR)中的数据项的第二安排。相反,推式置换可以基于目的地GPR的索引置换将源数据项从第一GPR推到第二GPR。
关于拉式置换,就第一GPR中的数据项的原始字节位置(或字节索引)而言,字节索引映射指定数据项的第二安排。因此,字节索引映射是对源数据项的索引置换,并且处理器可以通过基于字节索引映射从第一GPR中拉出数据项来顺序地填充第二GPR的字节位置(例如,从字节0到字节7)。例如,在x86ISA结构中,VPERM指令可以采用以下格式:VPERM zimm2、zimm3、zimm1,其中,zimm1–zimm3是具有一定长度的GPR,zimm1用于将数据项存储在待置换的第一安排中,zimm2用于存储置换成第二安排的所产生的数据项,并且zimm3用于存储从第一安排到第二安排的字节索引映射。因此,第二GPR(zimm2)的字节位置可以通过根据存储在第三GPR(zimm3)中的字节索引映射从第一GPR(zimm1)中拉出数据项而被顺序地填充。
在某些情况下,可能期望的是将源数据项从第一GPR顺序地推到第二GPR。一种解决方案可以包括:将源数据项分散到高速缓存存储器(L1或L2高速缓存)中,并且然后执行紧缩收集操作来从高速缓存存储器读到GPR中,以便得到数据项的推式置换的结果。然而,这可能使处理器性能恶化,因为某些架构的设计可能具有有限数量(典型地仅一个)的写端口,这可能是数据在高速缓存存储器与GPR之间传递的瓶颈。
在一个实施例中,bsort(或nsort)指令可以结合已经在ISA中定义的拉式置换指令(例如,x86ISA的VPERM)一起用于实现如结合图3详细提供的推式置换功能。为了实现这一点,针对推式置换的目的地GPR的索引置换可以转换成由拉式置换使用的字节索引映射。可以通过对目的地GPR的索引置换执行bsort(或nsort)指令来实现转换。
在一个实施例中,目的地GPR的索引置换可以存储在第四GPR(zimm4)中。可以执行针对8位长索引的bsort指令(或针对4位长索引的nsort),以便对存储在第四GPR中的索引置换进行排序并生成可由第三GPR中的拉式置换指令使用的字节索引映射。可以然后执行拉式置换指令,以便基于第三GPR中的所生成的字节索引映射将数据从源寄存器拉到第二GPR中。因此,可以通过将bsort(或nsort)与已经在ISA中定义的拉式置换组合来实现推式数据置换。
图3展示了根据所展示的实施例的使用bsort(或nsort)和拉式置换来实现推式数据置换的示例。如图3中所示出的,GPR 302可以使用存储在GPR 306中的字节索引映射来存储需要被推到GPR 304的数据项(例如,字节)的第一安排。为了使用已经在ISA中定义的拉式置换指令(例如,VPERM)来实现推式数据置换,存储在GPR 306中针对推式数据置换的字节索引映射可以首先转换成针对拉式置换的字节索引映射并且存储在GPR 308中。可以通过如下执行用于对存储在GPR 306中的索引进行排序的bsort指令来实现这种转换:bsort(GPR 306)(GPR 308)。例如,如图3中所示出的,GPR 306可以最初存储针对推式置换的索引映射(1,3,0,2)。执行bsort(GPR 306)(GPR 308)可以将存储在GPR 306中的索引值排序成下降值的有序序列,并且将针对拉式置换的索引映射(2,0,3,1)存储在GPR 308中。执行bsort指令可以将与推式置换相关联的索引映射(存储在GPR 306中)转换成与拉式置换相关联的字节索引映射(存储在GPR 308中)。响应于执行bsort指令,存储在GPR 308中的字节索引映射可以用于执行拉式置换以便完成数据项的置换。拉式置换可以被执行为:VPERM(GPR 304)(GPR 308)(GRP 302)。因此,存储在GPR 302中的数据项可以被置换并存储在GPR304中以便完成推式数据项置换。
以此方式,通过重新使用在ISA中已指定的现有拉式VPERM指令来实现存储在源GPR中的数据项的推式置换。
图4是根据本公开的实施例的一种用于执行数据项置换的方法400的框图。方法400可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置、通用计算机系统、或专用机器上运行的指令)、固件、或其组合。在一个实施例中,方法400可以部分地由如图1所示的处理器102的处理逻辑来执行。
为了简化说明,方法400被描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或同时发生,并且可以与本文未呈现和描述的其他动作一起发生。此外,可以不执行所展示的所有动作以实施根据所公开主题的方法400。另外,本领域技术人员将理解和意识到方法400可以可替代地经由状态图或事件表示为一系列相关状态。
参照图4,在402处,操作可以开始。在404处,处理器102可以将数据项存储在第一GPR中。这些数据项将通过推式置换被置换。
在406处,处理器102可以将表示第三寄存器中用于放置这些数据项的目标位置的位置编号存储在第二GPR中。
在408处,处理器102可以执行在处理器的ISA中定义的排序指令,所述排序指令用于根据下降值顺序对这些位置编号进行排序并且生成第四寄存器中的索引映射。在一个实施例中,排序指令可以是bsort指令。在另一个实施例中,排序指令可以是nsort指令。
在410处,处理器102可以执行拉式置换指令(例如,VPERM),所述拉式置换指令用于基于第四寄存器中的索引映射生成对第三GPR中的这些数据项的置换。
图5A是框图,展示了用于处理器500的微架构,所述处理器实施了根据本公开的一个实施例的包括异构核的处理装置。具体地,根据本公开的至少一个实施例,处理器500描绘了待包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑。
处理器500包括耦合到执行引擎单元550的前端单元530,并且所述执行引擎单元和前端单元都耦合到存储器单元570。处理器500可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又另一选项,处理器500可以包括专用核,诸如,例如,网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器500可以是多核处理器或可以是多处理器系统的一部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,所述指令高速缓存单元耦合到指令转换后备缓冲器(TLB)536,所述指令转换后备缓冲器耦合到指令取出单元538,所述指令取出单元耦合到解码单元540。解码单元540(也称为解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微运算、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码器540可以使用各种不同的机制来实施。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534可以进一步耦合到存储器单元570。解码单元540耦合到执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合到引退单元554的重命名/分配器单元552以及一组一个或多个调度器单元556。(多个)调度器单元556表示任何数量的不同调度器,包括保留站(RS)、中央指令窗等。(多个)调度器单元556耦合到(多个)物理寄存器堆单元558。(多个)物理寄存器堆单元558中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等、状态(例如,作为有待执行的下一指令的地址的指令指针)等。(多个)物理寄存器堆单元558与引退单元554重叠以展示可以实施寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来堆、(多个)历史缓冲器、以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。
在一种实施方式中,处理器500可以与关于图1描述的处理器102相同。
通常,架构寄存器从处理器的外部或从程序员的角度来看是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储和提供如本文所描述的数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元554和(多个)物理寄存器堆单元558被耦合到(多个)执行集群560。(多个)执行集群560包括一组一个或多个执行单元562以及一组一个或多个存储器访问单元564。执行单元562可以执行各种运算(例如,移位、加法、减法、乘法)并对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
虽然一些实施例可以包括专用于具体功能或功能集合的多个执行单元,但是其他实施例可以只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元556、(多个)物理寄存器堆单元558、以及(多个)执行集群560被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实施了其中只有所述流水线的执行集群具有(多个)存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是乱序发布/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元564耦合到存储器单元570,举几个示例,所述存储器单元可以包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574、以及2级(L2)高速缓存单元576。在一些实施例中,DCU574也被称为第一级数据高速缓存(L1高速缓存)。DCU574可以处理多个未解决的高速缓存未命中并且继续为进入的存储和加载提供服务。DCU还支持保持高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来提高虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括各自耦合到存储器单元570中的数据TLB单元572的加载单元、存储地址单元、以及存储数据单元。L2高速缓存单元576可以耦合到一个或多个其他级的高速缓存并且最终耦合到主存储器。
在一个实施例中,数据预取器580通过自动预测程序将要消耗哪个数据来推测性地将数据加载/预取到DCU 574。预取可以是指在处理器实际需求数据之前将存储在存储器层级的一个存储器位置(例如,较低级高速缓存或存储器)中的数据传送到更靠近(例如,得出较低访问等待时间)处理器的较高级存储器位置。更具体地,预取可以指在处理器发出对正在返回的具体数据的需求之前将数据从较低级的高速缓存/存储器中的一个提前检索到数据高速缓存和/或预取缓冲器。
处理器500可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,比如NEON)。
应当理解,核可以支持多线程化(执行并行的两组或更多组操作或线程)),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如超线程化技术中的同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。然而处理器的所示实施例还包括分开的指令和数据高速缓存单元和共享的L2高速缓存单元,但替代性实施例可以具有用于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括在核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
图5B是框图,展示了根据本公开的一些实施例由图5A的处理装置500实施的有序流水线和寄存器重命名阶段、乱序发出/执行流水线。图5B中的实线框展示了有序流水线,而虚线框展示了寄存器重命名、乱序发布/执行流水线。在图5B中,处理器流水线500包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也称为分派或发布)级512、寄存器读/存储器读级514、执行级516、回写/存储器写级518、异常处理级522以及提交级524。在一些实施例中,级502到524的排序可以与所图示的不同,并不局限于在图5B中示出的特定排序。
图6展示了根据本公开的一个实施例的用于包括混合核的处理器600的微架构的框图。在一些实施例中,可以实施根据一个实施例的指令来对具有字节、字、双字、四字等大小以及如单精度和双精度整数和浮点数据类型等数据类型的数据元素进行操作。在一个实施例中,有序前端601是处理器600的取出待执行的指令并将其准备于之后在处理器流水线中使用的那一部分。
前端601可以包括若干个单元。在一个实施例中,指令预取器626从存储器取出指令并将其馈送给指令解码器628,所述指令解码器进而对这些指令进行解码或解释。例如,在一个实施例中,解码器将接收到的指令解码成机器可以执行的称为“微指令”或“微运算”(也称为微op或uop)的一个或多个运算。在其他实施例中,根据一个实施例,解码器将指令解析为运算码和相应的数据以及被微架构用于执行运算的控制字段。在一个实施例中,跟踪高速缓存630采用经解码的uop并且将其汇编为程序有序序列或在uop队列634中跟踪以用于执行。当跟踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成运算所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op来完成完整的运算。在一个实施例中,如果完成指令需要多于四个微op,则解码器628访问微代码ROM 632以执行指令。对于一个实施例,指令可以被解码成用于在指令解码器628处理的少量的微op。在另一实施例中,如果需要多个微op来完成运算,则指令可以存储在微代码ROM 632中。跟踪高速缓存630引用入口点可编程逻辑阵列(PLA),以确定用于从微代码ROM 632读取微代码序列的正确微指令指针以便根据一个实施例完成一个或多个指令。在微代码ROM 632完成用于指令的排序微op之后,机器的前端601从跟踪高速缓存630重新取出微op。
乱序执行引擎603是指令准备执行的地方。乱序执行逻辑具有多个缓冲器,所述多个缓冲器用于使指令流平滑并重新排序以在指令顺着流水线进行并被安排执行时优化性能。分配器逻辑分配每个uop执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在以下指令调度器前面,分配器还为两个uop队列(一个用于存储器运算,一个用于无存储器运算)之一中的每个uop分配条目:存储器调度器、快速调度器602、慢速/通用浮点调度器604和简单浮点调度器606。uop调度器602、604、606基于其依赖输入寄存器操作数源的准备状态以及uop完成其运算所需的执行资源的可用性来确定这些uop何时准备好执行。一个实施例的快速调度器602可以在主时钟周期的每一半上进行调度,而其他调度器可以仅在每个主处理器时钟周期调度一次。调度器仲裁分派端口以调度uop用于执行。
寄存器堆608、610位于执行块611中的调度器602、604、606与执行单元612、614、616、618、620、622、624之间。存在分开的寄存器堆608、610,分别用于整数运算和浮点运算。一个实施例的每个寄存器堆608、610还包括旁路网络,所述旁路网络可以绕过或转发尚未被写入到寄存器堆中的已完成结果到新的依赖uop。整数寄存器堆608和浮点寄存器堆610还能够与其他寄存器堆进行数据通信。对于一个实施例,整数寄存器堆608被分成两个单独的寄存器堆,一个寄存器堆用于数据的低顺序32位,第二寄存器堆用于数据的高顺序32位。一个实施例的浮点寄存器堆610具有128位宽的条目,因为浮点指令通常具有宽度为从64位至128位的操作数。
执行块611包含实际上在其中执行指令的执行单元612、614、616、618、620、622、624。这个部分包括寄存器堆608、610,所述寄存器堆存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600由多个执行单元组成:地址生成单元(AGU)612、AGU614、快速ALU 616、快速ALU618、慢速ALU 620、浮点ALU 622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD和SSE、或其他运算。一个实施例的浮点ALU622包括用于执行除法、平方根和余数微op的64位乘64位浮点除法器。对于本公开的实施例,涉及浮点值的指令可以用浮点硬件来处理。
在一个实施例中,ALU运算前往高速ALU执行单元616、618。一个实施例的快速ALU616、618可以以半个时钟周期的有效等待时间执行快速运算。对于一个实施例,大多数复杂整数运算前往慢速ALU 620,因为慢速ALU 620包括用于长等待时间类型的运算的整数执行硬件,诸如乘法、移位、标志逻辑、以及分支处理。存储器加载/存储操作由AGU 612、614执行。对于一个实施例,在对64位数据操作数执行整数运算的上下文中描述了整数ALU616、618、620。在替代性实施例中,ALU 616、618、620可以被实施为支持包括16、32、128、256等的各种数据位。类似地,浮点单元622、624可以被实施为支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点单元622、624可以与SIMD和多媒体指令结合地对128位宽度的紧缩数据操作数进行运算。
在一个实施例中,uop调度器602、604、606在父加载完成执行之前分派不独立运算。在处理器600中推测性地调度和执行uop时,处理器600还包括用于处理存储器未命中的逻辑。如果数据高速缓存中的数据加载未命中,则可能存在流水线中飞行的已经因暂时不正确数据而离开调度器的不独立运算。重放机制跟踪并重新执行使用不正确数据的指令。仅仅不独立运算需要被重放,并且允许完成独立运算。处理器的一个实施例的调度器和重放机制还被设计成捕获用于文本串比较操作的指令序列。
根据本公开的实施例,处理器600还包括用于实施存储地址预测以进行存储器消歧的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实施存储地址预测以进行存储器消歧的存储地址预测器(未示出)。
术语“寄存器”可以指代被用作指令的一部分以标识操作数的机载处理器存储位置。换言之,寄存器可以是从处理器外部(从程序员的角度来看)可用的寄存器。然而,实施例的寄存器不应限于特定类型的电路。而是,实施例的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路系统使用任何数量的不同技术来实施,如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于以下讨论,寄存器被理解为设计成保持紧缩数据的数据寄存器,如用来自加利福尼亚州圣克拉拉的英特尔公司的MMX技术实现的微处理器中的64位宽MMXTM寄存器(在某些情况下也称为“mm”寄存器)。以整数形式和浮点形式可用的这些MMX寄存器可以利用伴随SIMD和SSE指令的紧缩数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高版本(通常称为“SSEx”)技术有关的128位宽XMM寄存器也可以用于保持这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要对这两种数据类型进行区分。在一个实施例中,整数和浮点包含在同一寄存器堆或不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或同一寄存器中。
现在参照图7,示出了展示本公开的实施例可以用于其中的系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并且包括经由点对点互连750耦合的第一处理器770和第二处理器780。虽然仅以两个处理器770、780来示出,但应理解本公开的实施例的范围不限于此。在其他实施例中,给定处理器中可以存在一个或多个附加处理器。在一个实施例中,多处理器系统700可以实施本文所描述的混合核。
处理器770和780被示出为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以使用点对点(P-P)接口电路778、788经由P-P接口750交换信息。如图7中所示,IMC 772和782将处理器耦合到对应存储器(即,存储器732和存储器734),所述存储器可以是主存储器的本地附接至对应处理器上的部分。
处理器770、780可以各自使用点对点接口电路776、794、786、798经由单独的P-P接口752、754来与芯片组790交换信息。芯片组790还可以经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的本地高速缓存信息可以被存储在所述共享高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一种第三代I/O互连总线的总线,但是本公开的范围不限于此。
如图7所示,不同I/O装置714可以连同总线桥接器718耦合到第一总线716,所述总线桥接器将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各个装置可以耦合到第二总线720,所述装置包括例如键盘和/或鼠标722、通信装置727、以及可以包括指令/代码数据730的存储单元728(如磁盘驱动器或者其他大容量存储装置)。进一步地,音频I/O 724可以耦合到第二总线720。注意到,其他架构是可能的。例如,替代图7的点对点体系结构,系统可以实施多点分支总线或其他这样的架构。
现在参照图8,示出了本公开的一个实施例可以在其中操作的系统800的框图。系统800可以包括耦合到图形存储控制器中枢(GMCH)820的一个或多个处理器810、815。图8中用虚线表示附加处理器815的可选性质。在一个实施例中,根据本公开的实施例,处理器810、815实施混合核。
每个处理器810、815可以是如上所述的电路、集成电路、处理器、和/或硅集成电路的某一版本。然而,应当注意的是,在处理器810、815中将不太可能存在集成图形逻辑和集成存储器控制单元。图8展示了GMCH 820可以耦合到存储器840,所述存储器可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 820可以是芯片组、或者芯片组的一部分。GMCH 820可以与(多个)处理器810、815通信,并且控制(多个)处理器810、815与存储器840之间的交互。GMCH 820还可以用作(多个)处理器810、815与系统800的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 820经由多点分支总线(如前端总线(FSB)895)与(多个)处理器810、815通信。
此外,GMCH 820耦合到显示器845(如平板显示器或触摸屏显示器)。GMCH 820可以包括集成图形加速器。GMCH 820进一步地耦合到输入/输出(I/O)控制器中枢(ICH)850,所述ICH可以用于将各种外围装置耦合到系统800。例如在图8的实施例中示出的是外部图形设备860,其可以是与另一个外围设备870一起耦合到ICH 850的独立图形设备。
可替代地,在系统800中还可以存在附加的或不同的处理器。例如,(多个)附加处理器815可以包括与处理器810相同的(多个)附加处理器、与处理器810异构或不对称的(多个)附加处理器、加速器(如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器。就包括架构、微架构、热、功耗特性等的一系列品质度量而言,(多个)处理器810、815之间可能存在多种差异。这些差异可以有效地将其本身表现为(多个)处理器810、815之间的不对称性和异构性。对于至少一个实施例,各处理器810、815可以驻留在相同管芯封装中。
现在参照图9,示出了本公开的实施例可以在其中操作的系统900的框图。图9展示了处理器970、980。在一个实施例中,处理器970、980可以实施上文所描述的混合核。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点对点(P-P)接口978和988之间的点对点互连950而彼此相互通信。如图所示,处理器970、980各自通过对应P-P接口976至994和986至998经由点对点互连952和954与芯片组990通信。对于至少一个实施例,CL 972、982可以包括集成存储器控制器单元。CL 972、982可以包括I/O控制逻辑。如所描绘的,存储器932、934耦合到CL 972、982,并且I/O装置914也耦合到控制逻辑972、982。传统I/O设备915经由接口996耦合到芯片组990。
实施例可以采用许多不同的系统类型来实施。图10是根据本公开的实施例的SoC1000的框图。虚线框是关于更先进的SoC的可选特征。在图10中,(多个)互连单元1012耦合到:应用处理器1020,所述应用处理器包括一组一个或多个核1002A至1002N和(多个)共享高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一组一个或多个媒体处理器1018,所述媒体处理器可以包括集成图形逻辑1008、用于提供静物和/或视频相机功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026、以及用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器访问(DMA)单元1032;以及显示单元1040,用于耦合到一个或多个外部显示器。在一个实施例中,存储器模块可以包括在(多个)集成存储控制器单元1014中。在另一个实施例中,存储器模块可以包括在SoC 1000的可用来访问和/或控制存储器的一个或多个其他组件中。应用处理器1020可以包括用于实施如本文实施例中所描述的混合核的存储地址预测器。
存储器层级包括这些核内的一个或多个级别的高速缓存、一组一个或多个共享高速缓存单元1006、以及外部存储器(未示出),所述外部存储器耦合至所述一组集成存储器控制器单元1014。所述一组共享高速缓存单元1006可以包括一个或多个中级高速缓存,如2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。
在一些实施例中,核1002A至1002N中的一个或多个核能够进行多线程化。系统代理1010包括协调和操作核1002A至1002N的那些组件。系统代理单元1010可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核1002A至1002N和集成图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构和/或指令集而言,核1002A至1002N可以是同构或异构的。例如,核1002A至1002N中的一些核可以是有序的而其他核是乱序的。再如,核1002A至1002N中的两个或更多个核能够执行同一指令集,而其他核能够仅执行所述指令集的子集或执行不同的指令集。
应用处理器1020可以是通用处理器,如可从加利福尼亚州圣克拉拉的IntelTM公司获得的CoreTMi3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、AtomTM或QuarkTM处理器。可替代地,应用处理器1020可以来自另一公司,如ARMTM控股公司、MIPSTM等。应用处理器1020可以是专用处理器,如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1020可以在一个或多个芯片上实施。应用处理器1020可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS的多种工艺技术中的任何一种技术在一个或多个衬底上实施。
图11是根据本公开的芯片上系统(SoC)设计的实施例的框图。作为具体的说明性示例,SoC 1100包括在用户设备(UE)中。在一个实施例中,UE是指由终端用户用于通信的任何装置,如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信装置。通常,UE连接到基站或节点,所述UE本质上对应于GSM网络中的移动台(MS)。
在此,SOC 1100包括2个核,1106和1107。核1106和1107可以符合指令集架构,如基于架构核TM的处理器、超微半导体有限公司(AMD)处理器、基于MIPS的处理器、基于ARM设计的处理器、或其客户,以及它们的授权方或兼容方。核1106和1107被耦合到高速缓存控制1108,所述高速缓存控制与总线接口单元1109和L2高速缓存1110相关联,以与系统1100的其他部分进行通信。互连1110包括可能实施所描述的本公开的一个或多个方面的芯片上互连,如IOSF、AMBA或上文讨论的其他互连。在一个实施例中,核1106、1107可以实施如本文实施例所描述的混合核。
互连1110向其他组件提供通信通道,如用于与SIM卡接口连接的用户身份模块(SIM)1130、用于保持引导代码以便由核1106和1107执行对SoC 1100初始化和引导的引导ROM 1135、用于与外部存储器(例如,DRAM1160)接口连接的SDRAM控制器1140、用于与非易失性存储器(例如,闪存1165)接口连接的闪存控制器1145、用于与外围装置接口连接的外围控制1150(例如,串行外围接口)、用于显示和接收输入(例如,触摸使能的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等。这些接口中的任何接口都可以结合本文所描述的本公开的方面。此外,系统1100展示了用于通信的外围装置,如蓝牙模块1170、3G调制解调器1175、GPS 1180、以及Wi-Fi 1185。
图12展示了采用计算机系统1200的示例形式的在其中可以执行指令集的机器的图解表示,所述指令用于使所述机器执行本文所讨论的方法论中的任何一种或多种。在替代性实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网、或因特网中的其他机器。机器可以在客户端-服务器网络环境下以服务器或客户端装置的身份操作,或在点对点(或分布式)网络环境中作为对等机操作。所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络电器、服务器、网络路由器、交换机或桥接器、或能够(相继或以其他方式)执行指定要由那个机器采取的动作的指令集的任何机器。进一步地,虽然仅示出了单个机器,但术语“机器”也应视为包括机器的任何集合,所述机器个别地或联合地执行一个(或多个)指令集以便执行本文中所讨论的方法中的任何一种或多种方法。
计算机系统1200包括经由总线1230而相互通信的处理装置1202、主存储器1204(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)(如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存存储器、静态随机存取存储器(SRAM)等)、以及数据存储装置1218。
处理装置1202表示一个或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其他指令集的处理器、或实施指令集组合的处理器。处理装置1202还可以是一个或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理装置1202可以包括一个或多个处理核。处理装置1202被配置成执行处理逻辑1226以便执行本文所讨论的操作和步骤。在一个实施例中,如本文用本公开的实施例所描述的,处理装置1202与关于图1所描述的处理器架构100相同。
计算机系统1200可以进一步包括通信地耦合到网络1220的网络接口装置1208。计算机系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1212(例如,键盘)、光标控制装置1214(例如,鼠标)、以及信号发生装置1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228、以及音频处理单元1232。
数据存储装置1218可以包括机器可访问存储介质1224,在所述存储介质上存储了实施本文所描述的功能方法论中的任何一种或多种(如实施如上文所描述的用于存储器消歧的存储地址预测)的软件1226。软件1226还可以在由计算机系统1200对其执行期间全部或至少部分地驻留在主存储器1204内作为指令1226和/或在处理装置1202内作为处理逻辑1226;主存储器1204和处理装置1202也构成机器可访问存储介质。
机器可读存储介质1224还可以用来存储实施用于如根据本公开的实施例所描述的混合核的存储地址预测的指令1226。虽然机器可访问存储介质1128在示例性实施例中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“机器可访问存储介质”还应视为包括能够存储、编码或携带用于由机器执行的指令集并且使机器执行本公开的方法论中的任何一种或多种的任何介质。术语“机器可访问存储介质”应当相应地被视为包括但不限于固态存储器、以及光学介质和磁性介质。
下面的示例涉及进一步实施例。示例1是一种处理器,包括:第一寄存器,用于在所述第一寄存器内的多个位置处存储多个数据项;第二寄存器;以及执行单元,可操作地耦合至所述第一寄存器和所述第二寄存器,所述执行单元包括实施用于以下操作的排序指令的逻辑电路:按数据项值的顺序对存储在所述第一寄存器中的所述多个数据项进行排序,以及将多个索引存储在所述第二寄存器中,其中,每个索引标识与在所述排序之前存储在所述第一寄存器中的数据项相关联的位置。
在示例2中,如示例1所述的主题可以进一步提供:所述排序指令是字节排序指令,并且其中,所述多个数据项是多个字节。
在示例3中,如示例1所述的主题可以进一步提供:所述排序指令是四位组排序指令,并且其中,所述多个数据项是多个四位组。
在示例4中,如示例1、2和3中任一项所述的主题可以进一步提供:所述第一寄存器内的每个位置与位置编号相关联,并且其中,所述每个索引通过与所述位置相关联的所述位置编号来标识与所述数据项相关联的所述位置。
在示例5中,如示例1、2和3中任一项所述的主题可以进一步提供:所述多个索引以与在所述排序之后存储在所述第一寄存器中的所述多个数据项的所述顺序有关的顺序存储在所述第二寄存器内的多个位置中。
在示例6中,如示例1、2和3中任一项所述的主题可以进一步提供:所述第一寄存器和所述第二寄存器是具有相同长度的通用寄存器。
在示例7中,如示例1、2和3中任一项所述的主题可以进一步提供:所述第一寄存器和所述第二寄存器是具有不同长度的通用寄存器。
在示例8中,如示例1、2和3中任一项所述的主题可以进一步提供:所述数据项值的所述顺序是上升数据项值或下降数据项值之一的顺序。
在示例9中,如示例1、2和3中任一项所述的主题可以进一步提供:当被执行时,所述处理器采用所述逻辑电路在不多于五个处理器周期中完成所述排序指令。
示例10是一种芯片上系统(SoC),包括:第一寄存器,用于在所述第一寄存器内的多个位置处存储多个数据项;第二寄存器;以及处理器,可操作地耦合至所述第一寄存器和所述第二寄存器,所述处理器包括执行单元,所述执行单元包括实施用于以下操作的排序指令的逻辑电路:按数据项值的顺序对存储在所述第一寄存器中的所述多个数据项进行排序,以及将多个索引存储在所述第二寄存器中,其中,每个索引标识与在所述排序之前存储在所述第一寄存器中的数据项相关联的位置。
在示例11中,如示例10所述的主题可以进一步提供:所述排序指令是字节排序指令,并且其中,所述多个数据项是多个字节。
在示例12中,如示例10所述的主题可以进一步提供:所述排序指令是四位组排序指令,并且其中,所述多个数据项是多个四位组。
在示例13中,如示例10、11和12中任一项所述的主题可以进一步提供:所述第一寄存器内的每个位置与位置编号相关联,并且其中,所述每个索引通过与所述位置相关联的所述位置编号来标识与所述数据项相关联的所述位置。
在示例14中,如示例10、11和12中任一项所述的主题可以进一步提供:所述多个索引以与在所述排序之后存储在所述第一寄存器中的所述多个数据项的所述顺序有关的顺序存储在所述第二寄存器内的多个位置中。
在示例15中,如示例10、11和12中任一项所述的主题可以进一步提供:所述第一寄存器和所述第二寄存器是具有相同长度的通用寄存器。
在示例16中,如示例10、11和12中任一项所述的主题可以进一步提供:所述第一寄存器和所述第二寄存器是具有不同长度的通用寄存器。
在示例17中,如示例10、11和12中任一项所述的主题可以进一步提供:所述数据项值的所述顺序是上升数据项值或下降数据项值之一的顺序。
在示例18中,如示例10、11和12中任一项所述的主题可以进一步提供:当被执行时,所述处理器采用所述逻辑电路在不多于五个处理器周期中完成所述排序指令。
示例19是一种方法,包括:将多个数据项存储在与处理器相关联的第一寄存器中;将标识第三寄存器内用于存储所述多个数据项的目标位置的多个位置编号存储在第二寄存器中;执行排序指令,所述排序指令用于将所述多个位置编号排序成下降值的顺序并且用于将多个索引存储在第四寄存器中,其中,每个索引利用在所述排序之前存储在所述第二寄存器中的位置编号来标识位置;以及执行置换指令,所述置换指令用于基于存储在所述第四寄存器中的所述多个索引而生成对要存储在所述第三寄存器中的所述多个数据项的置换。
在示例20中,如示例19所述的主题可以进一步提供:所述排序指令被实施为所述处理器的第一执行单元,并且其中,所述置换指令被实施为所述处理器的第二执行单元。
示例21是一种设备,包括:用于执行如示例19和20中任一项所述的主题的装置。
示例22是一种机器可读非暂态介质,具有存储在其上的程序代码,所述程序代码在被执行时执行包括以下各项的操作:将多个数据项存储在与处理器相关联的第一寄存器中;将标识第三寄存器内用于存储所述多个数据项的目标位置的多个位置编号存储在第二寄存器中;执行排序指令,所述排序指令用于将所述多个位置编号排序成下降值的顺序并且用于将多个索引存储在第四寄存器中,其中,每个索引利用在所述排序之前存储在所述第二寄存器中的位置编号来标识位置;以及执行置换指令,所述置换指令用于基于存储在所述第四寄存器中的所述多个索引而生成对要存储在所述第三寄存器中的所述多个数据项的置换。
在示例23中,如示例22所述的主题可以进一步提供:所述排序指令被实施为所述处理器的第一执行单元,并且其中,所述置换指令被实施为所述处理器的第二执行单元。
虽然已经关于有限数量的实施例对本公开进行了描述,但是本领域技术人员将理解来自其中的许多修改和变体。所附权利要求书旨在覆盖落入本公开的真正精神和范围的所有此类修改和变体。
设计可以贯穿各个阶段,从产生到仿真到制造。表示设计的数据可用若干方式来表示所述设计。首先,如模拟中有用的,可以使用硬件描述语言或其他功能性描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,多数设计在一些阶段处达到代表在硬件模型中的不同装置的物理布局的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指示由掩模用于产生集成电路的各种特征在不同掩模层上存在或不存在的数据。在任何设计表示中,数据可以存储在任何形式的机器可读介质中。存储器或磁存储装置或光存储装置(如,盘)可以是用于存储信息的机器可读介质,所述信息是经由光波或电波来传输的,所述光波或电波被调制或以其他方式被生成以传输这类信息。当指示或承载代码或设计的电载波被传输到执行电信号的复制、缓冲或重传的程度时,进行新的复制。因此,通信提供者或网络提供者可以在有形机器可读介质上至少暂时地存储诸如编码到载波中的信息等制品,从而将本公开的实施例的技术具体化。
本文中使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,如与非暂态介质相关联的用于存储代码的微控制器,所述代码被适配成由微控制器执行。因此,在一个实施例中,对模块的引用是指硬件,所述硬件具体被配置成标识和/或执行有待保持在非暂态介质上的代码。此外,在另一个实施例中,模块的使用指包括代码的非暂态介质,所述代码具体地被适配成由微控制器执行以执行预定操作。并且如可以推断的,在又另一个实施例中,术语模块(在此示例中)可以指微控制器与非暂态介质的组合。通常,被展示为分开的模块边界通常会有所变化并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器,或其他硬件,如可编程逻辑装置。
短语‘配置成’的使用在一个实施例中是指安排、汇编、制造、提供销售、导入和/或设计设备、硬件、逻辑或元件,从而执行指定或确定的任务。在本示例中,未运行的设备或其元件如果被设计、被耦合和/或被互连用于执行所述指定任务则仍被‘配置成’执行指定的任务。仅作为说明性示例,逻辑门在操作过程中可以提供0或1。但是‘被配置成’为时钟提供启动信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。相反,逻辑门是以某种方式耦合的,从而使得在操作过程中,1或0输出用于启动时钟。再次注意到的是,术语‘配置成’的使用不需要运算,而是集中于设备、硬件和/或元件的潜在状态,其中在潜在状态中,设备、硬件和/或元件被设计成当该设备、硬件和/或元件运行时执行具体任务。
此外,短语‘用于’、‘能够/能够用于’和或‘能操作以’的使用在一个实施例中指的是一些设备、逻辑、硬件和/或元件被设计的方式使得能够以指定方式使用所述设备、逻辑、硬件和/或元件。注意,在一个实施例中,如以上‘用于(to)’、‘能够用于(capable to)’或‘能操作以(operable to)’的使用是指设备、逻辑、硬件和/或元件的潜在状态,其中,所述设备、逻辑、硬件和/或元件未在运行但是被设计,其方式使得能够以特定的方式使用设备。
如本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、逻辑值或逻辑的值的使用也称为简单地代表二进制逻辑状态的1和0。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一个实施例中,如晶体管或闪存单元(cell)的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中值的其他表示已被使用。例如,十进制数字十也可以表示为二进制值910和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
此外,状态可以由值或一部分值来代表。作为示例,第一值(如逻辑一)可以代表默认或初始状态,而第二值(如逻辑零)可以代表非默认状态。此外,在一个实施例中,术语重置和设置分别是指默认的和更新的值或状态。例如,默认值可能包括高逻辑值(即,重置),而更新值可能包括低逻辑值(即,设置)。注意,可以利用值的任意组合来表示任意数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问的、机器可读的、计算机可访问的或计算机可读的介质上的可被处理元件执行的代码或指令来实施。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)具有由机器(如,计算机或电子系统)可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁存储介质或光存储介质;闪存装置;电存储装置;光存储装置;声学存储装置;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储装置等,它们与可以从中接收信息的非暂态介质区分开来。
用于程序逻辑以执行本公开的实施例的指令可以存储在系统中的存储器内,例如,DRAM、高速缓存、闪存或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质被分布。因此,机器可读介质可以包括用于存储或传输呈由机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软磁盘、光盘、压缩盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音、或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形机器可读存储装置。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书对于“一个实施例(one embodiment)”或“实施例(an embodiment)”的引用意味着结合所述实施例所描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书,短语“在一个实施例中(in one embodiment)”或“在实施例中(in an embodiment)”在各种场合中的出现未必都是指相同的实施例。此外,在一个或多个实施例中,可以以任何合适的方式来组合具体特征、结构、或特性。
在上述说明书中,已经参照具体示例性实施例给出了详细说明。然而,在不偏离所附权利要求中阐述的本公开的更广精神和范围的情况下,将显然的是可对其进行各种修改和改变。因此,说明书和附图被认为是说明性意义的,而不是限制性意义的。此外,实施例和其他示范性语言的上述使用不一定指相同的实施例或相同的示例,而是可指不同且有区别的实施例,以及可能指相同的实施例。

Claims (23)

1.一种处理器,包括:
第一寄存器,用于在所述第一寄存器内的多个位置处存储多个数据项;
第二寄存器;以及
执行单元,可操作地耦合至所述第一寄存器和所述第二寄存器,所述执行单元包括实施用于以下操作的排序指令的逻辑电路:
按数据项值的顺序对存储在所述第一寄存器中的所述多个数据项进行排序,以及
将多个索引存储在所述第二寄存器中,其中,每个索引标识与在所述排序之前存储在所述第一寄存器中的数据项相关联的位置。
2.如权利要求1所述的处理器,其特征在于,所述排序指令是字节排序指令,并且其中,所述多个数据项是多个字节。
3.如权利要求1所述的处理器,其特征在于,所述排序指令是四位组排序指令,并且其中,所述多个数据项是多个四位组。
4.如权利要求1、2和3中任一项所述的处理器,其特征在于,所述第一寄存器内的每个位置与位置编号相关联,并且其中,所述每个索引通过与所述位置相关联的所述位置编号来标识与所述数据项相关联的所述位置。
5.如权利要求1、2和3中任一项所述的处理器,其特征在于,所述多个索引以与在所述排序之后存储在所述第一寄存器中的所述多个数据项的所述顺序有关的顺序存储在所述第二寄存器内的多个位置中。
6.如权利要求1、2和3中任一项所述的处理器,其特征在于,所述第一寄存器和所述第二寄存器是具有相同长度的通用寄存器。
7.如权利要求1、2和3中任一项所述的处理器,其特征在于,所述第一寄存器和所述第二寄存器是具有不同长度的通用寄存器。
8.如权利要求1、2和3中任一项所述的处理器,其特征在于,所述数据项值的所述顺序是上升数据项值或下降数据项值之一的顺序。
9.如权利要求1、2和3中任一项所述的处理器,其特征在于,当被执行时,所述处理器采用所述逻辑电路在不多于五个处理器周期中完成所述排序指令。
10.一种芯片上系统(SoC),包括:
第一寄存器,用于在所述第一寄存器内的多个位置处存储多个数据项;
第二寄存器;以及
处理器,可操作地耦合至所述第一寄存器和所述第二寄存器,所述处理器包括执行单元,所述执行单元包括实施用于以下操作的排序指令的逻辑电路:
按数据项值的顺序对存储在所述第一寄存器中的所述多个数据项进行排序;以及
将多个索引存储在所述第二寄存器中,其中,每个索引标识与在所述排序之前存储在所述第一寄存器中的数据项相关联的位置。
11.如权利要求10所述的SoC,其特征在于,所述排序指令是字节排序指令,并且其中,所述多个数据项是多个字节。
12.如权利要求10所述的SoC,其特征在于,所述排序指令是四位组排序指令,并且其中,所述多个数据项是多个四位组。
13.如权利要求10、11和12中任一项所述的SoC,其特征在于,所述第一寄存器内的每个位置与位置编号相关联,并且其中,所述每个索引通过与所述位置相关联的所述位置编号来标识与所述数据项相关联的所述位置。
14.如权利要求10、11和12中任一项所述的SoC,其特征在于,所述多个索引以与在所述排序之后存储在所述第一寄存器中的所述多个数据项的所述顺序有关的顺序存储在所述第二寄存器内的多个位置中。
15.如权利要求10、11和12中任一项所述的SoC,其特征在于,所述第一寄存器和所述第二寄存器是具有相同长度的通用寄存器。
16.如权利要求10、11和12中任一项所述的SoC,其特征在于,所述第一寄存器和所述第二寄存器是具有不同长度的通用寄存器。
17.如权利要求10、11和12中任一项所述的SoC,其特征在于,所述数据项值的所述顺序是上升数据项值或下降数据项值之一的顺序。
18.如权利要求10、11和12中任一项所述的SoC,其特征在于,当被执行时,所述处理器采用所述逻辑电路在不多于五个处理器周期中完成所述排序指令。
19.一种方法,包括:
将多个数据项存储在与处理器相关联的第一寄存器中;
将标识第三寄存器内用于存储所述多个数据项的目标位置的多个位置编号存储在第二寄存器中;
执行排序指令,所述排序指令用于将所述多个位置编号排序成下降值的顺序并且用于将多个索引存储在第四寄存器中,其中,每个索引利用在所述排序之前存储在所述第二寄存器中的位置编号来标识位置;以及
执行置换指令,所述置换指令用于基于存储在所述第四寄存器中的所述多个索引而生成对要存储在所述第三寄存器中的所述多个数据项的置换。
20.如权利要求19所述的方法,其特征在于,所述排序指令被实施为所述处理器的第一执行单元,并且其中,所述置换指令被实施为所述处理器的第二执行单元。
21.一种设备,包括:用于执行如权利要求19和20中任一项所述的方法的装置。
22.一种机器可读非暂态介质,具有存储在其上的程序代码,所述程序代码在被执行时执行包括以下各项的操作:
将多个数据项存储在与处理器相关联的第一寄存器中;
将标识第三寄存器内用于存储所述多个数据项的目标位置的多个位置编号存储在第二寄存器中;
执行排序指令,所述排序指令用于将所述多个位置编号排序成下降值的顺序并且用于将多个索引存储在第四寄存器中,其中,每个索引利用在所述排序之前存储在所述第二寄存器中的位置编号来标识位置;以及
执行置换指令,所述置换指令用于基于存储在所述第四寄存器中的所述多个索引而生成对要存储在所述第三寄存器中的所述多个数据项的置换。
23.如权利要求22所述的机器可读非暂态介质,其特征在于,所述排序指令被实施为所述处理器的第一执行单元,并且其中,所述置换指令被实施为所述处理器的第二执行单元。
CN201680075363.9A 2015-12-23 2016-11-23 用于字节排序指令和用于四位组排序的处理器、方法和系统 Active CN108475193B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/757,609 US9996361B2 (en) 2015-12-23 2015-12-23 Byte and nibble sort instructions that produce sorted destination register and destination index mapping
US14/757,609 2015-12-23
PCT/US2016/063655 WO2017112314A1 (en) 2015-12-23 2016-11-23 Byte and nibble sort instructions

Publications (2)

Publication Number Publication Date
CN108475193A true CN108475193A (zh) 2018-08-31
CN108475193B CN108475193B (zh) 2023-12-19

Family

ID=59086561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680075363.9A Active CN108475193B (zh) 2015-12-23 2016-11-23 用于字节排序指令和用于四位组排序的处理器、方法和系统

Country Status (5)

Country Link
US (2) US9996361B2 (zh)
EP (1) EP3394731A4 (zh)
CN (1) CN108475193B (zh)
TW (1) TWI725077B (zh)
WO (1) WO2017112314A1 (zh)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8218847B2 (en) 2008-06-06 2012-07-10 Superdimension, Ltd. Hybrid registration method
US11106462B2 (en) 2019-05-24 2021-08-31 Texas Instruments Incorporated Method and apparatus for vector sorting
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9603668B2 (en) 2014-07-02 2017-03-28 Covidien Lp Dynamic 3D lung map view for tool navigation inside the lung
US9633431B2 (en) 2014-07-02 2017-04-25 Covidien Lp Fluoroscopic pose estimation
US9974525B2 (en) 2014-10-31 2018-05-22 Covidien Lp Computed tomography enhanced fluoroscopic system, device, and method of utilizing the same
US10702226B2 (en) 2015-08-06 2020-07-07 Covidien Lp System and method for local three dimensional volume reconstruction using a standard fluoroscope
US10716525B2 (en) 2015-08-06 2020-07-21 Covidien Lp System and method for navigating to target and performing procedure on target utilizing fluoroscopic-based local three dimensional volume reconstruction
US10674982B2 (en) 2015-08-06 2020-06-09 Covidien Lp System and method for local three dimensional volume reconstruction using a standard fluoroscope
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10191744B2 (en) * 2016-07-01 2019-01-29 Intel Corporation Apparatuses, methods, and systems for element sorting of vectors
US11793579B2 (en) 2017-02-22 2023-10-24 Covidien Lp Integration of multiple data sources for localization and navigation
US10699448B2 (en) 2017-06-29 2020-06-30 Covidien Lp System and method for identifying, marking and navigating to a target using real time two dimensional fluoroscopic data
WO2019075074A1 (en) 2017-10-10 2019-04-18 Covidien Lp SYSTEM AND METHOD FOR IDENTIFICATION AND MARKING OF A TARGET IN A THREE-DIMENSIONAL FLUOROSCOPIC RECONSTRUCTION
US10905498B2 (en) 2018-02-08 2021-02-02 Covidien Lp System and method for catheter detection in fluoroscopic images and updating displayed position of catheter
US10930064B2 (en) 2018-02-08 2021-02-23 Covidien Lp Imaging reconstruction system and method
US10893842B2 (en) 2018-02-08 2021-01-19 Covidien Lp System and method for pose estimation of an imaging device and for determining the location of a medical device with respect to a target
US11705238B2 (en) 2018-07-26 2023-07-18 Covidien Lp Systems and methods for providing assistance during surgery
US11071591B2 (en) 2018-07-26 2021-07-27 Covidien Lp Modeling a collapsed lung using CT data
US20200050452A1 (en) * 2018-08-11 2020-02-13 Intel Corporation Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order
US11944388B2 (en) 2018-09-28 2024-04-02 Covidien Lp Systems and methods for magnetic interference correction
US10922080B2 (en) * 2018-09-29 2021-02-16 Intel Corporation Systems and methods for performing vector max/min instructions that also generate index values
US10831478B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US11877806B2 (en) 2018-12-06 2024-01-23 Covidien Lp Deformable registration of computer-generated airway models to airway trees
US11045075B2 (en) 2018-12-10 2021-06-29 Covidien Lp System and method for generating a three-dimensional model of a surgical site
US11801113B2 (en) 2018-12-13 2023-10-31 Covidien Lp Thoracic imaging, distance measuring, and notification system and method
US11617493B2 (en) 2018-12-13 2023-04-04 Covidien Lp Thoracic imaging, distance measuring, surgical awareness, and notification system and method
US11357593B2 (en) 2019-01-10 2022-06-14 Covidien Lp Endoscopic imaging with augmented parallax
US11625825B2 (en) 2019-01-30 2023-04-11 Covidien Lp Method for displaying tumor location within endoscopic images
US11925333B2 (en) 2019-02-01 2024-03-12 Covidien Lp System for fluoroscopic tracking of a catheter to update the relative position of a target and the catheter in a 3D model of a luminal network
US11564751B2 (en) 2019-02-01 2023-01-31 Covidien Lp Systems and methods for visualizing navigation of medical devices relative to targets
US11744643B2 (en) 2019-02-04 2023-09-05 Covidien Lp Systems and methods facilitating pre-operative prediction of post-operative tissue function
US11819285B2 (en) 2019-04-05 2023-11-21 Covidien Lp Magnetic interference detection systems and methods
US12089902B2 (en) 2019-07-30 2024-09-17 Coviden Lp Cone beam and 3D fluoroscope lung navigation
US12059281B2 (en) 2019-08-19 2024-08-13 Covidien Lp Systems and methods of fluoro-CT imaging for initial registration
US11269173B2 (en) 2019-08-19 2022-03-08 Covidien Lp Systems and methods for displaying medical video images and/or medical 3D models
US11931111B2 (en) 2019-09-09 2024-03-19 Covidien Lp Systems and methods for providing surgical guidance
US11864935B2 (en) 2019-09-09 2024-01-09 Covidien Lp Systems and methods for pose estimation of a fluoroscopic imaging device and for three-dimensional imaging of body structures
US11627924B2 (en) 2019-09-24 2023-04-18 Covidien Lp Systems and methods for image-guided navigation of percutaneously-inserted devices
US12102298B2 (en) 2019-12-10 2024-10-01 Covidien Lp Lymphatic system tracking
US11380060B2 (en) 2020-01-24 2022-07-05 Covidien Lp System and method for linking a segmentation graph to volumetric data
US11847730B2 (en) 2020-01-24 2023-12-19 Covidien Lp Orientation detection in fluoroscopic images
US12064191B2 (en) 2020-06-03 2024-08-20 Covidien Lp Surgical tool navigation using sensor fusion
US11950950B2 (en) 2020-07-24 2024-04-09 Covidien Lp Zoom detection and fluoroscope movement detection for target overlay

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040088476A1 (en) * 2002-10-31 2004-05-06 Mosaid Technologies, Inc. Sorting method and apparatus using a CAM
CN102073478A (zh) * 2006-09-22 2011-05-25 英特尔公司 用于处理文本串的指令和逻辑
US20140040595A1 (en) * 2012-08-01 2014-02-06 Freescale Semiconductor, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
CN103827813A (zh) * 2011-09-26 2014-05-28 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
US20140372727A1 (en) * 2011-12-23 2014-12-18 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US20150277912A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Sort acceleration processors, methods, systems, and instructions
CN104991869A (zh) * 2015-07-31 2015-10-21 成都腾悦科技有限公司 一种微处理器存储管理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US7191318B2 (en) 2002-12-12 2007-03-13 Alacritech, Inc. Native copy instruction for file-access processor with copy-rule-based validation
US7725678B2 (en) 2005-02-17 2010-05-25 Texas Instruments Incorporated Method and apparatus for producing an index vector for use in performing a vector permute operation
US8151031B2 (en) 2007-10-31 2012-04-03 Texas Instruments Incorporated Local memories with permutation functionality for digital signal processors
US8812516B2 (en) 2011-10-18 2014-08-19 Qualcomm Incorporated Determining top N or bottom N data values and positions
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
WO2013095611A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for performing a permute operation
US20140189322A1 (en) * 2012-12-28 2014-07-03 Elmoustapha Ould-Ahmed-Vall Systems, Apparatuses, and Methods for Masking Usage Counting

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040088476A1 (en) * 2002-10-31 2004-05-06 Mosaid Technologies, Inc. Sorting method and apparatus using a CAM
CN102073478A (zh) * 2006-09-22 2011-05-25 英特尔公司 用于处理文本串的指令和逻辑
CN103827813A (zh) * 2011-09-26 2014-05-28 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
US20140372727A1 (en) * 2011-12-23 2014-12-18 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US20140040595A1 (en) * 2012-08-01 2014-02-06 Freescale Semiconductor, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US20150277912A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Sort acceleration processors, methods, systems, and instructions
CN104991869A (zh) * 2015-07-31 2015-10-21 成都腾悦科技有限公司 一种微处理器存储管理方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
GABRIELE CAPANNINI等: ""Sorting on GPUs for large scale datasets: A thorough comparison"", 《INFORMATION PROCESSING & MANAGEMENT》 *
GABRIELE CAPANNINI等: ""Sorting on GPUs for large scale datasets: A thorough comparison"", 《INFORMATION PROCESSING & MANAGEMENT》, vol. 48, no. 5, 30 September 2012 (2012-09-30), pages 903 - 917 *
闫宏飞等: ""基于指令级并行的倒排索引压缩算法"", 《计算机研究与发展》 *
闫宏飞等: ""基于指令级并行的倒排索引压缩算法"", 《计算机研究与发展》, vol. 52, no. 5, 31 May 2015 (2015-05-31), pages 995 - 1004 *

Also Published As

Publication number Publication date
US10635448B2 (en) 2020-04-28
EP3394731A1 (en) 2018-10-31
TWI725077B (zh) 2021-04-21
TW201732557A (zh) 2017-09-16
US9996361B2 (en) 2018-06-12
EP3394731A4 (en) 2019-11-20
CN108475193B (zh) 2023-12-19
WO2017112314A1 (en) 2017-06-29
US20170185415A1 (en) 2017-06-29
US20190065209A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
CN108475193B (zh) 用于字节排序指令和用于四位组排序的处理器、方法和系统
CN108351786B (zh) 在指令集架构中对数据进行排序并且合并经排序数据
US10901899B2 (en) Reducing conflicts in direct mapped caches
US20180232627A1 (en) Variable word length neural network accelerator circuit
US20170177352A1 (en) Instructions and Logic for Lane-Based Strided Store Operations
CN107925420B (zh) 用于经优化压缩比的异构压缩架构
US10216516B2 (en) Fused adjacent memory stores
JP2019050039A (ja) ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
US10635447B2 (en) Scatter reduction instruction
US20170177350A1 (en) Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10019262B2 (en) Vector store/load instructions for array of structures
US10719355B2 (en) Criticality based port scheduling
US10691454B2 (en) Conflict mask generation
US10558602B1 (en) Transmit byte enable information over a data bus
US20190171461A1 (en) Skip ahead allocation and retirement in dynamic binary translation based out-of-order processors
US20170185413A1 (en) Processing devices to perform a conjugate permute instruction

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