CN108475253A - 用于执行共轭置换指令的处理设备 - Google Patents
用于执行共轭置换指令的处理设备 Download PDFInfo
- Publication number
- CN108475253A CN108475253A CN201680075982.8A CN201680075982A CN108475253A CN 108475253 A CN108475253 A CN 108475253A CN 201680075982 A CN201680075982 A CN 201680075982A CN 108475253 A CN108475253 A CN 108475253A
- Authority
- CN
- China
- Prior art keywords
- register
- processor
- index
- value
- source
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims description 37
- 238000003860 storage Methods 0.000 claims abstract description 71
- 230000015654 memory Effects 0.000 claims description 105
- 239000013598 vector Substances 0.000 claims description 77
- 238000000034 method Methods 0.000 claims description 64
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 13
- 238000006073 displacement reaction Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 20
- 238000013461 design Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000013519 translation Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000007667 floating Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000009826 distribution Methods 0.000 description 8
- 230000021615 conjugation Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 230000000712 assembly Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 241000208340 Araliaceae Species 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- RAQQRQCODVNJCK-JLHYYAGUSA-N N-[(4-amino-2-methylpyrimidin-5-yl)methyl]-N-[(E)-5-hydroxy-3-(2-hydroxyethyldisulfanyl)pent-2-en-2-yl]formamide Chemical compound C\C(N(Cc1cnc(C)nc1N)C=O)=C(\CCO)SSCCO RAQQRQCODVNJCK-JLHYYAGUSA-N 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
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)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
描述了单指令多数据(SIMD)技术。处理器可以包括用于接收多个源元素的第一寄存器和第二寄存器。处理器可以在第三寄存器处接收置换索引。共轭置换索引具有元素,元素中的每一个对应于源元素中的一个。处理器然后基于对应于源元素的选择元素将源元素中的每一个存储到第二寄存器中的位置。
Description
背景技术
单指令多数据(SIMD)架构可在微处理器系统中实现以使一个指令能并行地对若干操作数进行操作。SIMD架构利用将多个数据元素紧缩在一个寄存器或连续存储器位置内的优势。通过并行硬件执行,由一个指令对分开的数据元素执行多个操作以提高微处理器系统的性能。
附图简述
通过下文给出的具体实施方式并通过本发明的各实施例的附图,将更完整地理解本发明的各实施例。
图1是示出根据一个实施例的实现共轭置换指令的计算系统的框图。
图2A示出了根据一个实施例的执行共轭置换指令的方法的示图。
图2B示出了根据一个实施例的执行共轭置换指令的方法的示图。
图3A示出了根据一个实施例的单指令多数据(SIMD)共轭置换指令的示例操作。
图3B示出了根据一个实施例的单指令多数据(SIMD)共轭置换指令的示例操作。
图4示出了根据一个实施例的共轭置换指令的硬件实现的框图。
图5A是示出根据一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图5B是示出根据一个实施例的实现安全存储器重新分区的处理器的微架构的框图。
图6示出了根据一个实施例的包括用于执行安全存储器重新分区的逻辑电路的处理器的微架构的框图。
图7是根据一个实现方式的计算机系统的框图。
图8是根据另一实现方式的计算机系统的框图。
图9是根据一个实现方式的芯片上系统的框图。
图10示出了根据一个实现方式的计算系统的框图的另一实现方式。
图11示出了根据一个实现方式的计算系统的框图的另一实现方式。
具体实施方式
一些处理器使用向量指令集或单指令多数据(SIMD)指令集来并行地执行多个操作。处理器可以并行地执行多个操作,同时地将操作应用到同一个数据片或多个数据片。向量化是用于将一次仅对一对操作数进行操作的标量程序转换为可以运行来自单个指令的多个操作的向量程序的一种操作。例如,向量化是将循环操作重写以执行SIMD指令的过程,其中代替处理数组的单个元素N次,其同时处理数组的M个元素N/M次。
向量化可以包括置换指令,置换指令使处理器根据置换控制索引将来自源寄存器的源元素存储到目的地寄存器。例如,处理器的执行单元可以基于控制索引中的条目将来自源寄存器的元素聚集到目的地寄存器。SIMD处理器可以并行地将来自源寄存器的元素存储到目的地寄存器的每个元素。例如,置换索引可以具有各自对应于目的地寄存器中的元素的一组值。置换索引中的值可以指示要存储到目的地寄存器的对应元素的源寄存器中的元素。因此,处理器可以基于置换控制索引中的与目的地寄存器的元素对应的元素的值将值存储到目的地寄存器中的元素。这可以描述为基于拉出的置换,使得处理器根据置换索引位置中的与目的地寄存器的元素对应的条目从源寄存器拉出元素。例如,控制索引中的位置x处的条目可以指向要存储到目的地寄存器的位置x中的源寄存器中的元素y。
对于某些应用,具有共轭置换指令使得根据与源寄存器的元素相关联的索引中的条目将源寄存器的元素推入目的地寄存器会是有益的。例如,使用共轭置换指令而不是基于拉出的置换指令可以更高效地执行寄存器排序操作。例如,处理器可以通过对寄存器的元素进行比较并且将它们推入目的地寄存器而比通过使用附加操作拉出元素更快地对寄存器进行排序。然而,SIMD指令集可能不包括共轭置换指令。因此,为了对紧缩在源寄存器中的数据执行共轭置换,可以将数据分散在存储器高速缓存中并且然后将其聚集回到寄存器中。然而,这些操作可能不利地影响处理器处的性能。例如,将数据分散到高速缓存存储器可能使处理器写入具有很少写端口的存储器高速缓存。例如,可能仅存在1个写端口可用于一些低级别高速缓存。因此,推入置换指令的执行由于引起对存储器位置进行读指令和写指令而不是在处理器寄存器中实现操作而不利地影响处理器的性能。
本文所述的实施例通过在指令的执行中使用共轭置换操作从高速缓存存储器消除分散和聚集操作来解决上述缺陷。如本文所述,术语共轭置换描述基于置换索引中指示的位置将源寄存器中的条目推入目的地寄存器。例如,置换索引中的每个元素可以对应于源寄存器中的元素。处理器然后可以将源寄存器的元素存储到由置换索引指示的目的地寄存器的元素。在一些实施例中,共轭置换指令可以在原生硬件中实现。例如,SIMD处理器可以通过将源寄存器中的每个元素操作地耦合至对应的解复用器来在硬件中实现共轭。然后,处理器可以将共轭置换索引中的每个元素作为选择元素耦合至对应的解复用器。解复用器的每个元素然后可以将源寄存器的对应元素分发到由共轭置换索引指示的目的地寄存器的元素。然而,在一些处理器设计中,为基于推入的置换指令添加原生硬件实现可能消耗集成电路上的大量资源或空间。因此,处理器设计可以不包括基于推入的置换指令的原生硬件实现。在一些实施例中,共轭置换指令可以在SIMD处理器中实现为其他指令的序列。例如,一组指令可以用于将共轭置换索引转换为置换索引。然后,处理器可以使用置换索引执行置换操作。该组操作产生与在原生硬件中直接执行共轭置换指令相同的目的地寄存器的按照相同顺序的元素。
图1是示出根据一个实施例的实现共轭置换指令的计算系统100的框图。计算系统100形成为具有处理器102,处理器102包括用于执行共轭置换指令109的一个或多个执行单元108和用于对共轭置换指令109进行解码的存储器解码器105。共轭置换指令109实现根据本文所述的一个或多个实施例的一个或多个特征。计算系统100可以是任何设备,但是本文所述的各实施例的描述涉及包括寄存器集合106中的一个或多个寄存器并且能够执行一个或多个SIMD指令的处理器。
寄存器集合103包括用于存储在指令的执行期间由执行单元108使用的数据元素的一个或多个寄存器。寄存器集合106可以将不同类型的数据存储在各种寄存器中,各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、区块寄存器、影子寄存器、检查点寄存器、状态寄存器以及指令指针寄存器。具体而言,寄存器集合106可以包括保存数据以供SIMD指令进行向量处理的向量寄存器104。例如,向量寄存器104可以存储用于在共轭置换指令109的执行中使用的源元素。
解码器105可以对共轭置换指令109进行解码,共轭置换指令109可以指定对向量寄存器104中的源元素执行的置换。执行单元108然后可以响应于经解码的共轭置换指令109将用于指令的源元素存储到向量寄存器104中。执行单元108然后可以执行共轭置换指令109的操作。例如,共轭置换指令可以执行下文参考图1B和1C进一步描述的方法。
执行单元108(包括用于执行整数和浮点操作以及向量操作的逻辑)也驻留在处理器102中。应当注意,执行单元可以或可以不具有浮点单元。在一个实施例中,处理器102包括用于存储微代码的微代码只读存储器(ROM),该微代码在被执行时用于执行某些宏指令的算法或处置复杂情况。例如,微代码可以包括用于利用执行单元108执行共轭置换指令的一组操作。在一些实施例中,微代码可以是潜在地可更新的,以便为处理器102处置逻辑缺陷/修补。
在一些实施例中,执行单元108也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路。在一些实施例中,处理器102包括存储器接口107,并且处理器102耦合至存储器120。在一个实施例中,存储器接口107可以是用于从处理器102到存储器120的通信的总线协议。存储器120包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120存储由将由处理器102执行的数据信号来表示的指令和/或数据。例如,存储器120可以包括计算机程序指令,计算机程序指令在被编译并且被解码器105解码时指导处理器102执行共轭置换指令109。存储器120还可以包括用于执行共轭置换指令109的源元素、共轭置换索引,或者可以从处理器102接收共轭置换指令109的结果。
处理器102经由处理器总线110耦合至存储器120。诸如存储器控制器中枢(MCH)的系统逻辑芯片可以耦合到处理器总线110和存储器120。MCH可提供至存储器120的高带宽存储器路径,用于指令和数据存储,以及用于存储图形命令、数据和纹理。例如,MCH可用于在处理器102、存储器120与系统100中的其他组件之间引导数据信号,并且用于在处理器总线110、存储器120与系统I/O之间桥接数据信号。MCH可通过存储器接口(例如,存储器接口107)耦合至存储器120。
在一些实施例中,处理器102可以包括内部高速缓存存储器104。取决于架构,处理器102可以具有单个的内部高速缓存或多级的内部高速缓存。例如,处理器102可以包括第一级(L1)内部高速缓存存储器和第二级(L2)内部高速缓存存储器。在一些实施例中,取决于特定实现和需求,系统100可以包括内部高速缓存和外部高速缓存的组合。执行单元108可以访问来自内部高速缓存存储器104的数据以用于实现共轭置换指令109。
图2A示出了根据一个实施例的对值的数组执行共轭置换指令的方法的示图。方法可以至少部分地由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,由处理设备执行的指令)、固件、或其组合的处理设备或处理逻辑来执行。例如,方法可以由参考图1描述的处理器102执行。
参考图2A,方法以在框210中将源元素的向量存储到向量寄存器中开始。向量寄存器保存数据以供SIMD指令执行向量处理。例如,向量寄存器可以包括用于由SIMD指令并行地处理的元素。在一些实施例中,另一寄存器类型可以用于存储源数据的元素。源数据可以是任何类型的数据以用于分发到目的地寄存器。例如,16字节寄存器可以包括16个单个字节元素以用于分发到目的地寄存器。在一些其他实施例中,可以使用不同尺寸的寄存器或数据元素。可以从在执行方法的处理器的外部的存储器设备接收源元素,或者从内部高速缓存存储器位置接收源元素。方法在框220中继续以将共轭置换索引存储到控制寄存器。共轭置换索引中的每个条目可以对应于源向量中的在其相应向量中具有相同位置的条目。例如,源寄存器中的每个元素可以在具有从源寄存器的基准位置的偏移的位置中。例如,源寄存器的最低有效字节可以具有偏移为零,并且每个更高有效字节可以具有高一值的偏移值。索引向量可以具有在与源向量中的元素对应的位置中的一组元素。例如,索引向量的每个元素可以在源向量的对应源元素的位置中,其中对应元素具有从相应基准位置的相同偏移。共轭置换索引中的每个元素的值可以是指示用于存储对应的源向量条目的目的地寄存器位置的整数值。例如,索引向量的每个元素可以具有指示用于存储源寄存器的元素的第二寄存器的位置的整数值。
在框230中,方法继续将源元素存储到由共轭置换索引指示的目的地寄存器元素。处理器可以通过由执行单元执行共轭置换指令来存储源元素。可以将源向量中的每个元素分发到由控制向量中的对应的选择条目标识的目的地寄存器元素。为了进一步说明,共轭置换索引可以包括在每个位置i处的索引[i]的值。源寄存器可以包括在每个位置i处的源[i]的值。目的地寄存器可以包括在每个位置j处的目的地[j]的值。因此,对于共轭置换指令,处理器可以将存储在源寄存器的第i个位置处的值复制到目的地寄存器的第j个位置,使得j=索引[i]。
图2B示出了根据一个实施例的对一组源数据执行共轭置换操作的另一方法的示图。在图2B的方法中,处理器通过将共轭置换索引转换为置换索引并且然后执行置换指令来实现共轭置换指令的操作。方法可以至少部分地由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,由处理设备执行的指令)、固件、或其组合的处理设备或处理逻辑来执行。
参考图2B,方法可以以与上文参考图2A描述的相同方式执行框210和220的过程。例如,处理器可以将一组源数据元素接收到源寄存器并且接收索引与用于执行共轭置换指令的指令。共轭置换索引可以包括对应于源元素的在其相应向量中具有相同偏移的多个元素。
在一些实施例中,方法可以包括在框240中将索引转换为具有对应于第二寄存器中的位置并且指示第一寄存器中的位置的元素的第二索引。例如,处理器可以将与共轭置换指令一起使用的共轭置换索引转换为与置换指令一起使用的置换索引。为了将共轭置换索引转换为置换索引,对于共轭置换索引中的每个元素,方法可以生成置换索引中的条目。例如,对于共轭置换索引中的在位置i处具有值x的条目,该过程可以生成在置换索引的位置x处具有i的值的条目。因此,共轭置换索引中的每个条目可以具有在索引的位置i处的索引[i]的值。置换索引中的每个条目可以具有在索引的位置j处的索引2[j]的值。将共轭置换索引转换为置换索引可以包括生成在置换索引的位置索引[i]处具有i的值的置换索引,使得对于共轭置换索引中的每个位置i,存在与i相等的索引2[索引[i]]的条目。进一步参考图3B描述将共轭置换索引转换为置换索引的示例。
继续到框250,方法将源元素存储到由第二索引指示的目的地寄存器通道。例如,SIMD处理器可以根据图2B中的方法的框240中生成的置换索引对源向量的元素执行基于拉出的置换指令。第二索引中的每个元素可以在具有对应于第二寄存器中的位置的从第二索引的基准位置的偏移的位置处。第二索引的每个元素可以具有标识要存储在目的地寄存器中的对应位置处的源元素的整数值。处理器可以通过从由所生成的拉出置换索引指示的源向量中的位置执行聚集来将元素存储到目的地寄存器。例如,经转换的置换索引可以包括在每个位置i处的索引2[i]的值。源寄存器可以包括在每个位置j处的源[j]的值。目的地寄存器可以包括在每个位置k处的目的地[k]的值。因此,对于基于拉出的置换指令,处理器可以将与源[索引2[i]]相等的目的地[i]的值存储到目的地寄存器中的每个位置。
图3A示出根据实施例的在SIMD共轭置换指令的执行期间处理器的寄存器的示例。SIMD指令是图2A中描述的方法的实现方式的示例。在图3A的示例中,SIMD指令对具有4个元素的存储器寄存器进行操作。在其他实现方式中,SIMD寄存器可以包括8个元素、16个元素、或另一数量的元素。SIMD指令可以包括共轭置换指令以基于共轭置换索引中的值将源寄存器中的条目推入目的地寄存器。
源寄存器300可以包括存储用于由共轭置换指令分发的源数据元素的元素301-304的数组。出于一致性,图3A和3B中所示的寄存器示出为最高有效数据元素在左边而最低有效数据元素在右边。例如,元素304中的值表示寄存器中的位置0,元素303中的值表示寄存器中的位置1,元素302中的值表示寄存器中的位置2,并且元素301中的值表示寄存器中的位置3。处理器可以从对处理器进行操作的软件接收源寄存器中的数据、共轭置换索引、以及用于执行共轭置换指令的指令。
行310是存储共轭置换索引的输入值的选择元素311-314的数组。例如,共轭置换索引310中的每个值可以具有源寄存器300中的在寄存器中具有相同位置的对应元素。置换索引310中的元素可以指示用于存储来自源寄存器中的对应元素的值的目的地寄存器320中的位置。例如,可以根据共轭置换索引的选择元素311中的值来分发元素301中的值,可以根据共轭置换索引的选择元素312中的值来分发元素302中的值,可以根据共轭置换索引的选择元素313中的值来分发元素303中的值,并且可以根据共轭置换索引的选择元素314中的值来分发元素304中的值。
在图3A的示例中,源寄存器的最高有效位置中的值是‘1’。共轭置换索引的最高有效位置中的对应值是‘2’。处理器将源寄存器的最高有效位置中的值分发到由置换索引中的对应值指示的目的地寄存器中的位置。例如,根据共轭置换索引310的最高有效位置中的条目‘2’将源寄存器300的最高有效位置中的值‘1’存储在目的地寄存器320的第二位置中。根据置换索引310的第二位置中的条目‘1’将源寄存器300的第二位置中的值‘9’存储在目的地寄存器320的第一位置中。根据置换索引310的第一位置中的条目‘3’将源寄存器300的第一位置中的值‘3’存储在目的地寄存器320的第三位置中。根据置换索引310的第零位置中的条目‘0’将源寄存器300的第零位置中的值‘17’存储在目的地寄存器320的第零位置中。目的地寄存器中的结果表示置换指令的结束,并且可以由处理器使用,由在处理器上运行的软件使用,或者可以存储到存储器位置。
图3B示出根据实施例的在SIMD共轭置换指令的执行期间处理器的寄存器的示例。共轭置换指令是图1B中描述的方法的实现方式的示例。在图3B的示例中,SIMD指令对具有4个元素的存储器寄存器进行操作。在其他实现方式中,SIMD寄存器可以包括8个元素、16个元素、或另一数量的元素。SIMD指令可以包括置换指令以基于置换索引中的值将来自源寄存器的条目拉出到目的地寄存器。可以通过将共轭置换索引转换为置换索引来生成置换索引。
源寄存器300可以包括存储用于由共轭置换指令分发的源数据元素的元素301-304的数组。行310是存储共轭置换索引的输入值的选择元素311-314的数组。共轭置换索引310中的每个值可以具有源寄存器300中的在寄存器中具有相同位置的对应元素。例如,类似于图3A,共轭置换索引310中的每个值可以指示用于存储源寄存器中的对应元素的目的地寄存器320中的位置。在图3B的示例中,源寄存器的最高有效位置中的值是‘1’。置换索引的最高有效位置中的对应值是‘2’。处理器将源寄存器的最高有效位置中的值分发到由共轭置换索引中的对应值指示的目的地寄存器中的位置。在一些实施例中,处理器可能不具有共轭置换指令的原生硬件实现。在这些实施例中,处理器可以将共轭置换索引转换为置换索引并且使用置换索引来执行置换指令的操作。例如,可以将共轭置换索引310中的每个条目转换为置换索引中的条目以供处理器使用。
在图3B的示例中,根据共轭置换索引310的最高有效位置中的条目‘2’,要将源寄存器300的最高有效位置中的值‘1’存储在目的地寄存器320的第二位置中。然而,为了使用置换指令执行共轭置换指令的操作,将条目转换为置换索引中的条目。在示例中,选择元素311中的值‘2’指示要将源寄存器的最高有效位置存储在目的地寄存器的第二位置中。因此,对于要实现相同结果的置换指令,置换索引的第二位置应当向处理器指示聚集来自源寄存器的第三位置的值。因此,置换索引的第二位置具有值‘3’作为元素332。类似地,共轭置换索引的第二位置中的条目‘1’生成置换索引的第一位置中的条目‘2’,共轭置换索引的第一位置中的条目‘3’生成置换索引的第三位置中的条目‘1’,并且共轭置换索引的第零位置中的条目‘0’生成置换索引的第零位置中的条目‘0’。
处理器然后可以根据置换索引330对源寄存器300的每个元素执行置换指令的操作。例如,处理器可以基于置换索引330的元素331中的条目‘1’将来自源寄存器的第一位置的值复制到目的地寄存器的第三位置。处理器可以基于置换索引的元素332中的条目‘3’将来自源寄存器的第三位置的值复制到目的地寄存器的第二位置。处理器可以基于置换索引的元素333中的条目‘2’将来自源寄存器的第二位置的值复制到目的地寄存器的第一位置。最后,处理器可以基于置换索引的元素334中的条目‘0’将来自源寄存器的第零位置的值复制到目的地寄存器的第零位置。
类似于图3A中的结果,在将共轭置换索引转换为置换索引并且执行置换指令之后,目的地寄存器中的结果是相同的。例如,根据共轭置换索引310的第二位置中的条目‘1’将源寄存器300的第二位置中的值‘9’存储在目的地寄存器320的第一位置中。根据共轭置换索引310的第一位置中的条目‘3’将源寄存器300的第一位置中的值‘3’存储在目的地寄存器320的第三位置中。根据共轭置换索引310的第零位置中的条目‘0’将源寄存器300的第零位置中的值‘17’存储在目的地寄存器320的第零位置中。
图4是示出共轭置换指令的硬件实现的框图。在图4的示例中,SIMD指令对具有4个存储器位置的存储器寄存器进行操作。在其他实现方式中,SIMD寄存器可以包括8个存储器位置、16个存储器位置、或另一数量的存储器位置。图4示出共轭置换指令的硬件实现的一个示例。其他实施例可以包括不同硬件或不同硬件配置以执行共轭置换指令。
在图4中,源元素401-404可以表示源寄存器中的特定位置。例如,源位置401-404可以与参考图3A描述的单元301-304相同。具有源元素401-404的处理器可以实现根据共轭置换索引411-414将源寄存器中的每个元素401-404存储到目的地寄存器元素421-424的共轭置换指令。每个源元素可以耦合至对应的解复用器(dmux)415-418以确定目的地寄存器的输出。例如,源元素401耦合至对应的解复用器415。
索引选择元素411-414可以表示控制寄存器中的特定单元。控制寄存器中的元素向处理器指示在目的地寄存器中的何处存储源寄存器的元素。例如,索引选择元素411-414可以表示图3A所示的置换索引310中的特定元素311-314。如图4所示,将索引的每个元素提供给对应的解复用器以为每个源元素确定目的地元素。例如,选择元素411可以耦合至解复用器415的选择输入以为源元素401确定目的地寄存器位置。
每个解复用器415-418可以耦合至目的地寄存器421-424中的每个通道。例如,解复用器415具有耦合至目的地元素421的输出、耦合至目的地元素422的输出、耦合至目的地元素423的输出、以及耦合至目的地元素424的输出。取决于来自对应索引的在选择输入处接收的值,每个解复用器将其对应的源元素提供给特定目的地元素。因此,每个解复用器接收源数据元素作为输入值,并且接收置换索引值作为选择输入。解复用器然后将源数据元素提供给由选择输入指示的特定目的地寄存器通道。响应于接收用于执行共轭置换指令的指令,处理器可以将解复用器耦合至源寄存器和目的地寄存器。
图5A是示出根据一个实施例的实现共轭置换指令的处理器核590的微架构的框图。具体地,处理器核(还简称为‘处理器’)590描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。页添加和内容复制的实施例可实现在处理器500中。
处理器590包括前端单元530,该前端单元530耦合到执行引擎单元550,前端单元530和执行引擎单元550两者都耦合到存储器单元570。处理器590可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为另一个选项,处理器590可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实施例中,处理器590可以是多核处理器或可以是多处理器系统的部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)536,该指令转换后备缓冲器耦合到指令取出单元538,指令取出单元耦合到解码单元540。解码单元540(也称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器540可使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534进一步耦合至存储器单元570。解码单元540耦合至执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括重命名/分配器单元552,该重命名/分配器单元552耦合到引退单元554和一个或多个调度器单元的集合556。调度器单元556表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元556耦合至物理寄存器堆单元558。物理寄存器堆单元558中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,等等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。物理寄存器堆单元558与引退单元554重叠以示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用未来文件、历史缓冲器和引退寄存器堆;使用寄存器映射和寄存器池等等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元554和物理寄存器堆单元558耦合至执行集群560。执行集群560包括一个或多个执行单元的集合562以及一个或多个存储器访问单元的集合564。执行单元562可执行多种操作(例如,移位、加法、减法、乘法)并可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。
尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。调度器单元556、物理寄存器堆单元558和执行集群560示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元564的集合耦合到存储器单元570,该存储器单元570可包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574、第二级(L2)高速缓存单元576,仅举数例。在一些实施例中,DCU574也称为第一级数据高速缓存(L1高速缓存)。DCU 574可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它也支持维护高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个均耦合至存储器单元570中的数据TLB单元572。L2高速缓存单元576可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器580通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 574。预取可以指在处理器实际需要数据之前将存储在存储器层级结构(例如,较低级别高速缓存或存储器)的一个存储器位置(例如,地方)的数据传送至更接近处理器的较高级别的存储器位置(例如,产生较低的访问等待时间)。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器之一至数据高速缓存和/或预取缓冲器的早期检取。
处理器590可以支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。处理器590可以支持用于基于置换索引将源寄存器中的元素分配到特定目的地寄存器通道的共轭置换指令。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5B是示出根据本公开的一些实施例的由图5A的处理器590实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图5B中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发布/执行流水线。在图5B中,处理器流水线500包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也被称为分派或发布)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处置级522和提交级524。在一些实施例中,各个级502-524的排序可以与所示的不同,并且不限于图5B中所示的特定排序。
图6示出了根据一个实施例的包括用于执行共轭置换指令的逻辑电路的处理器600的微架构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端601是处理器600的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。页添加和内容复制的实施例可实现在处理器600中。
前端601可包括若干单元。在一个实施例中,指令预取器616从存储器取出指令,并将指令馈送至指令解码器618,指令解码器618随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存630接受经解码的微操作,并将它们组装为微操作队列634中的程序有序序列或踪迹,以用于执行。当追踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成操作所需的uop。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器618访问微代码ROM 632以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器618处进行处理。在另一个实施例中,如果需要若干微操作来完成操作,则可将指令存储在微代码ROM 632中。追踪高速缓存630参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 632读取微代码序列以完成根据一个实施例的一条或多条指令。在微代码ROM 632完成对于指令的微操作序列化之后,机器的前端601恢复从追踪高速缓存630提取微操作。
乱序执行引擎603是将指令准备好用于执行的地方。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个uop需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器602、慢速/通用浮点调度器604、简单浮点调度器606)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器602、604、606基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器602可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
寄存器堆608和610位于调度器602、604和606以及执行块611中的执行单元612、614、616、618、620、622和624之间。存在分别用于整数和浮点操作的分开的寄存器堆608、610。一个实施例的每个寄存器堆608、610也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆608和浮点寄存器堆610也能够彼此传递数据。对于一个实施例,整数寄存器堆608被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆410具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块611包括执行单元612、614、616、618、620、622、624,在执行单元612、614、616、618、620、622、624中实际执行指令。该区块包括寄存器堆608、610,寄存器堆608、610存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600包括有多个执行单元:地址生成单元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢速ALU 620、浮点ALU622、浮点移动单元624。对于一个实施例,浮点执行块612、614执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 612包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的诸个实施例,涉及浮点值的指令可使用浮点硬件来处置。
在一个实施例中,ALU操作进入高速ALU执行单元616、618。一个实施例的快速ALU616、618可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 610,因为慢速ALU 610包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 612、614来执行。对于一个实施例,整数ALU 616、618、620被描述为对64位数据操作数执行整数操作。在替代实施例中,ALU 616、618、620可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元612、614可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元612、614可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器602、604、606就分派依赖性操作。因为在处理器600中微操作被推测地调度和执行,所以处理器600也包括处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也设计成用于捕捉用于文本串比较操作的指令序列。
根据一个实施例,处理器600还包括用于实现共轭置换指令的逻辑。在一个实施例中,处理器600的执行块611可包括微控制器(MCU),以根据本文中的描述执行共轭置换指令。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于表示特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含八个或十六个多媒体SIMD寄存器,用于紧缩数据。
对于本文中的讨论,寄存器应被理解为设计成保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中也称为“mm”寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步地,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
实施例可在许多不同的系统类型中实现。现在参考图7,示出的是根据实现方式的多处理器系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并包括经由点对点互连750耦合的第一处理器770和第二处理器780。如图7所示,处理器770和780中的每一个都可以是多核处理器,包括第一和第二处理器核,虽然潜在地更多核可以存在于处理器中。处理器各自可包括根据本公开的实施例的混合型写入模式逻辑。可以在处理器770、处理器780或两者中实现页面添加和内容复制的实施例。
虽然以两个处理器770、780来示出,但应理解本公开的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。
处理器770和780被示为分别包括集成存储器控制器单元(IMC)772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和788;类似地,第二处理器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高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图7中所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,该总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参照图8,所示出的是根据本发明实施例的第三系统800的框图。图7和8中的相同部件用相同附图标记表示,并已从图8中省去了图7中的某些方面,以避免使图8的其他方面变得模糊。
图8示出处理器870和880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可包括如本文中所述的集成存储器控制器单元。此外,CL872、882还可包括I/O控制逻辑。图7示出了存储器832、834耦合到CL 872、882,并且I/O设备814也耦合到控制逻辑872、882。传统I/O设备815被耦合到芯片组890。可以在处理器870、处理器880或两者中实现页面添加和内容复制的实施例。
图9是可包括核902中的一个或多个的示例性芯片上系统(SoC)900。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
图9是根据本公开的实施例的SoC 900的框图。虚线框是更先进的SoC的特征。在图9中,互连单元902耦合至:应用处理器917,包括一组一个或多个核902A-N以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个媒体处理器920,可包括集成图形逻辑908、用于提供静态和/或视频照相功能的图像处理器924、提供硬件音频加速的音频处理器926、提供视频编码/解码加速的视频处理器928、静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及显示单元940,用于耦合至一个或多个外部显示器。可以在SoC 900中实现页面添加和内容复制的实施例。
接下来转到图10,描绘了根据本公开的实施例的芯片上系统(SoC)设计的实施例。作为说明性示例,SoC 1000被包括在用户装备(UE)中。在一个实施例中,UE是指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE可连接至基站或节点,该基站或节点本质上可对应于GSM网络中的移动站(MS)。页添加和内容复制的实施例可实现在SoC 1000中。
在此,SoC 1000包括2个核——1006和1007。类似于上文的讨论,核1006和1007可符合指令集架构,诸如,具有架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM处理器设计、或它们的客户、以及它们的许可方或采纳方。核1006和1007耦合到高速缓存控件1008,该高速缓存控件1008与总线接口单元1009和L2高速缓存1010相关联以与系统1000的其他部分通信。互连1011包括芯片上互连,诸如,IOSF、AMBA或上文讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。
互连1011提供到其他组件的通信信道,其他组件诸如用于与用户身份模块(SIM)卡对接的SIM 1030、用于保存供核1006和1007执行以初始化和引导SoC 1000的引导代码的引导ROM 1035、用于与外部存储器(例如,DRAM 1060)对接的SDRAM控制器1040、用于与非易失性存储器(例如,闪存1065)对接的闪存控制器1045、用于与外围设备对接的外围控制装置1050(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1020和视频接口1025、用于执行图形相关的计算的GPU 1015等等。这些接口中的任何一种可以包括本文中所描述的各实施例的各方面。
另外,系统示出了用于通信的外围设备,诸如,蓝牙模块1070、3G调制解调器1075、GPS 1080以及Wi-Fi 1085。注意,如上文所述,UE包括用于通信的无线电装置。因此,这些外围通信模块可以不被全部包括。然而,在UE中,应当包括用于外部通信的某种形式的无线电装置。
图11示出了计算系统1100的示例形式的机器的示意图,在该计算系统1100内,可以执行用于使机器执行本文中所讨论的方法中的任何一种或多种方法的一组指令。在替代实施例中,可以在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任意集合。可以在计算系统1100中实现页面添加和内容复制的实施例。
计算系统1100包括处理设备1102、主存储器1104(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等等)、静态存储器1106(例如,闪存、静态随机存取存储器(SRAM),等等),以及数据存储设备1118,它们通过总线1130相互进行通信。
处理设备1102表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1102也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备1102可包括一个或多个处理器核。处理设备1102被配置成执行用于执行本文中所讨论的操作的处理逻辑1126。在一个实施例中,处理设备1102可以是计算系统的一部分。替代地,计算系统1100可包括本文所描述的其他组件。应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
计算系统1100还可以包括可通信地耦合到网络1120的网络接口设备1108。计算系统1100还可以包括视频显示单元1110(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1110(例如,键盘)、光标控制设备1114(例如,鼠标)、信号生成设备1116(例如,扬声器),或其他外围设备。此外,计算系统1100可以包括图形处理单元1122、视频处理单元1128以及音频处理单元1132。在另一个实施例中,计算系统1100可以包括芯片组(未示出),芯片组是指被设计为与处理设备1102一起协作并控制处理设备1102与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1102链接到非常高速度的设备(诸如,主存储器1104和图形控制器)以及将处理设备1102链接到较低速度的外围设备的外围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。
数据存储设备1118可以包括计算机可读存储介质1124,在其上面存储了具体化本文所描述的功能的方法中的任何一种或多种的软件1126。在由计算系统1100对软件1126的执行期间,软件1126也可完全或至少部分地作为指令1126驻留在主存储器1104之内和/或作为处理逻辑1126驻留在处理设备1102之内;该主存储器1104和处理设备1102也构成计算机可读存储介质。
计算机可读取存储介质1124也可以被用来利用诸如参考图1A和1B所描述的处理设备1102来存储指令1126,和/或包含调用上面的应用的方法的软件库。虽然计算机可读存储介质1124在示例实施例中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行当前的多个实施例的方法中的任何一种或多种的一组指令的任何介质。术语“计算机可读存储介质”应当相应地视为包括但不限于固态存储器以及光和磁介质。
以下示例涉及本公开的进一步的实施例。
示例1是一种处理器,包括:第一寄存器,包括用于接收多个源元素的多个第一寄存器位置;第二寄存器,包括多个第二寄存器位置;以及执行单元,耦合至第一寄存器和第二寄存器,执行单元用于:接收整数值的向量;检取具有相对于第一寄存器的基准位置的偏移的源元素;将源元素存储到第二寄存器的位置,其中位置由整数值的向量的元素的值标识,元素具有相对于整数值的向量的基准位置的偏移。
在示例2中,示例1的主题,进一步包括:多个解复用器,其中多个第一寄存器位置中的每一个耦合至多个解复用器中的一个。
在示例3中,示例1的主题,进一步包括:多个解复用器,其中多个解复用器中的每一个耦合至多个第二寄存器位置中的每一个。
在示例4中,示例1的主题,进一步包括:多个解复用器,其中在第三寄存器处接收整数的向量,并且多个第三寄存器位置中的每一个耦合至多个解复用器中的一个。
在示例5中,示例4的主题,其中整数值的向量的元素为耦合的解复用器指示数据输出行。
在示例6中,示例1的主题,其中每个源元素具有整数值的向量中的对应整数,并且其中执行单元用于将每个源元素存储到第二寄存器的相应位置,其中用于每个源元素的第二寄存器中的相应位置由对应整数标识。
在示例7中,示例6的主题,其中为了将多个源元素中的每个元素存储到第二寄存器的相应位置,执行单元用于并行地存储源元素。
示例8是一种处理器,包括:处理器核;以及存储器设备,耦合至处理器核,其中存储器设备包括微代码,微代码使处理器核用于:在处理器的第一寄存器处接收多个源元素;接收整数值的向量;检取具有相对于第一寄存器的基准位置的偏移的源元素;将源元素存储到第二寄存器的位置,其中位置由整数值的向量的元素的值标识,元素具有相对于整数值的向量的基准位置的偏移。
在示例9中,示例8的主题,其中微代码进一步使处理器核用于:基于整数值的向量生成整数值的第二向量。
在示例10中,示例9的主题,其中为了生成整数值的第二向量,处理器核用于:将与相对于基准位置的偏移相等的值存储到从第二向量的第二基准位置的第二偏移处的第二位置,其中第二偏移是与整数值的向量的元素的值相等的整数。
在示例11中,示例9的主题,其中为了检取源元素,处理器核用于:基于整数值的第二向量中的第二元素标识源元素,其中偏移与整数值的第二向量的元素的值相等,并且第二寄存器的位置与整数值的向量的元素的值相等。
在示例12中,示例8的主题,其中第一寄存器是向量寄存器,并且其中处理器核用于将源元素中的每一个并行地存储到第二寄存器。
在示例13中,示例7的主题,其中存储器设备包括微代码只读存储器。
示例14是一种方法,包括:由处理器将多个源元素接收到处理器的第一寄存器,其中每个源元素具有相对于第一寄存器的基准位置的偏移;由处理器接收具有索引元素的索引,其中每个索引元素具有相对于索引的基准位置的偏移,并且其中每个索引元素对应于具有相同偏移的源元素;由处理器将源元素中的每一个存储到处理器的第二寄存器中的位置,其中位置由对应的索引元素的值标识。
在示例15中,示例14的主题,进一步包括:由处理器基于索引生成第二索引。
在示例16中,示例15的主题,其中第二索引的每个条目具有标识源元素的值,其中源元素由源元素的偏移标识。
在示例17中,示例15的主题,其中生成第二索引的步骤包括:将索引的每个元素并行地转换为第二索引的元素。
在示例18中,示例14的主题,其中将源元素中的每一个存储到处理器的第二寄存器中的位置的步骤包括:由处理器将每个源元素提供给多个解复用器中的对应的解复用器;将索引中的条目提供给每个解复用器;以及将来自每个解复用器的对应的源元素输出到由索引指示的数据输出行。
在示例19中,示例18的主题,其中多个解复用器中的每一个具有耦合至第二寄存器中的每个位置的数据输出行。
在示例20中,示例14的主题,其中将源元素中的每一个存储到第二寄存器由处理器并行地执行。
示例21是一种机器可读介质,包括代码,代码在被执行时使机器执行示例14至20中的任一项的方法。
示例22是一种设备,包括用于执行权利要求14至20中的任一项的方法的装置。
示例23是一种装置,包括配置为执行权利要求14至20中的任一项的方法的处理器。
示例24是一种设备,包括:用于将多个源元素接收到处理器的第一寄存器的装置,其中每个源元素具有相对于第一寄存器的基准位置的偏移;用于接收具有索引元素的索引的装置,其中每个索引元素具有相对于索引的基准位置的偏移,并且其中每个索引元素对应于具有相同偏移的源元素;用于将源元素中的每一个存储到处理器的第二寄存器中的位置的装置,其中位置由对应的索引元素的值标识。
在示例25中,示例24的主题,进一步包括:用于基于索引生成第二索引的装置,其中第二索引的每个条目具有标识源元素的值,其中源元素由源元素的偏移标识。
在示例26中,示例24的主题,进一步包括:用于将每个源元素提供给多个解复用器中的对应的解复用器的装置;用于将来自索引的条目提供给多个解复用器中的每一个的装置;以及用于将每个解复用器的输出存储到第二寄存器中的位置的装置。
示例27是一种系统,包括:处理器核;以及存储器设备,耦合至处理器核,其中存储器设备包括微代码,微代码使处理器核用于:在处理器的第一寄存器处接收多个源元素;接收整数值的向量;检取具有相对于第一寄存器的基准位置的偏移的源元素;将源元素存储到第二寄存器的位置,其中位置由整数值的向量的元素的值标识,元素具有相对于整数值的向量的基准位置的偏移。
在示例28中,示例27的主题,其中微代码进一步使处理器核用于:基于整数值的向量生成整数值的第二向量。
在示例29中,示例28的主题,其中为了生成整数值的第二向量,处理器核用于:将与相对于基准位置的偏移相等的值存储到从第二向量的第二基准位置的第二偏移处的第二位置,其中第二偏移是与整数值的向量的元素的值相等的整数。
在示例30中,示例28的主题,其中为了检取源元素,处理器核用于:基于整数值的第二向量中的第二元素标识源元素,其中偏移与整数值的第二向量的元素的值相等,并且第二寄存器的位置与整数值的向量的元素的值相等。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
在本文的描述中,阐明了众多具体细节,例如具体类型的处理器和系统配置、具体硬件结构、具体架构的和微架构的细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线级和操作等的示例,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和门控技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。
各实施例是参考在特定集成电路中(诸如在计算平台或微处理器中)执行共轭置换指令来描述的。实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不仅限于台式计算机系统或便携式计算机,诸如,UltrabooksTM计算机。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、芯片上系统(SoC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的各实施例可以特别用于低端设备,诸如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制和数据采集(SCADA)系统等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然本文中的实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可适用于执行数据操纵或管理的任何处理器和机器。此外,本文中的描述提供了示例,并且附图出于说明性目的示出了各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非提供本发明的实施例的所有可能实现的详尽列表。
虽然本文中的示例是在执行单元和逻辑电路情境下描述指令处置和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据或指令在被机器执行时使得机器执行与本发明的至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令编程的通用处理器或专用处理器执行本公开的步骤。本公开的诸个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行根据本公开的实施例的一个或多个操作。替代地,本公开的诸个实施例的操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。进一步的,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计会经历多个阶段,从创造到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,如仿真中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。此外,大多数设计在某些阶段都达到表示硬件模型中多种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。
如本文中所使用的模块指的是硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同,并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实施例中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用术语‘用于’、‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上文所注意,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如在本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数十还可以被表示为二进制值1110和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子系统之类的机器可读形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)内。进一步的,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛的精神和范围。相应地,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
具体实施方式的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述及表示是数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作需要对物理量进行物理操纵。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语将与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,否则从上文的讨论中显而易见地看出,可以理解,在全文中,利用诸如“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获取”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的讨论,指的是计算系统或类似电子计算设备的动作和进程,该计算系统或类似电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在本文中使用的词语“示例”或“示例性”意味着用作示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现诸概念。如在该申请中使用的,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。也就是说,除非另有指定或根据上下文显而易见,否则“X包括A或B”旨在表示自然包含性排列中的任一者。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何前述的情况下都满足“X包括A或B”。此外,在本申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示“一个或多个”,除非另有规定或根据上下文明确指示为单数形式。此外,通篇对术语“实施例”或“一个实施例”或“实现方式”或“一种实现方式”的使用不旨在意指同一个实施例或实现方式,除非被描述为如此。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同元件之间进行区分的标记,并且可以不一定具有根据它们的数字指定的顺序含义。
Claims (23)
1.一种处理器,包括:
第一寄存器,包括用于接收多个源元素的多个第一寄存器位置;
第二寄存器,包括多个第二寄存器位置;以及
执行单元,耦合至所述第一寄存器和所述第二寄存器,所述执行单元用于:
接收整数值的向量;
检取具有相对于所述第一寄存器的基准位置的偏移的源元素;
将所述源元素存储到所述第二寄存器的位置,其中所述位置由整数值的所述向量的元素的值标识,所述元素具有相对于整数值的所述向量的基准位置的所述偏移。
2.如权利要求1所述的处理器,其特征在于,进一步包括:多个解复用器,其中所述多个第一寄存器位置中的每一个耦合至所述多个解复用器中的一个。
3.如权利要求1所述的处理器,其特征在于,进一步包括:多个解复用器,其中所述多个解复用器中的每一个耦合至所述多个第二寄存器位置中的每一个。
4.如权利要求1所述的处理器,其特征在于,进一步包括:多个解复用器,其中在第三寄存器处接收整数的所述向量,并且多个第三寄存器位置中的每一个耦合至所述多个解复用器中的一个。
5.如权利要求4所述的处理器,其特征在于,整数值的所述向量的所述元素为耦合的解复用器指示数据输出行。
6.如权利要求1所述的处理器,其特征在于,每个源元素具有整数值的所述向量中的对应整数,并且其中所述执行单元用于将每个源元素存储到所述第二寄存器的相应位置,其中用于每个源元素的所述第二寄存器中的相应位置由对应整数标识。
7.如权利要求6所述的处理器,其特征在于,所述执行单元用于将所述多个源元素中的每个元素存储到所述第二寄存器的相应位置用于:并行地存储所述源元素。
8.一种系统,包括:
处理器核;以及
存储器设备,耦合至所述处理器核,其中所述存储器设备包括微代码,所述微代码使所述处理器核用于:
在所述处理器的第一寄存器处接收多个源元素;
接收整数值的向量;
检取具有相对于所述第一寄存器的基准位置的偏移的源元素;
将所述源元素存储到第二寄存器的位置,其中所述位置由整数值的所述向量的元素的值标识,所述元素具有相对于整数值的所述向量的基准位置的所述偏移。
9.如权利要求8所述的系统,其特征在于,所述微代码进一步使处理器核用于:基于整数值的所述向量生成整数值的第二向量。
10.如权利要求9所述的系统,其特征在于,生成整数值的第二向量进一步包括所述处理器核用于:将与相对于所述基准位置的所述偏移相等的值存储到从所述第二向量的第二基准位置的第二偏移处的第二位置,其中所述第二偏移是与整数值的所述向量的元素的值相等的整数。
11.如权利要求9所述的系统,其特征在于,所述处理器核用于检取所述源元素包括所述处理器核用于:基于整数值的所述第二向量中的第二元素标识所述源元素,其中所述偏移与整数值的所述第二向量的元素的值相等,并且所述第二寄存器的所述位置与整数值的所述向量的元素的值相等。
12.如权利要求7所述的系统,其特征在于,所述第一寄存器是向量寄存器,并且其中所述处理器核用于将所述源元素中的每一个并行地存储到所述第二寄存器。
13.如权利要求7所述的系统,其特征在于,所述存储器设备包括微代码只读存储器。
14.一种方法,包括:
由处理器将多个源元素接收到所述处理器的第一寄存器,其中每个源元素具有相对于所述第一寄存器的基准位置的偏移;
由所述处理器接收具有索引元素的索引,其中每个索引元素具有相对于所述索引的基准位置的偏移,并且其中每个索引元素对应于具有相同偏移的源元素;
由所述处理器将所述源元素中的每一个存储到所述处理器的第二寄存器中的位置,其中所述位置由对应的索引元素的值标识。
15.如权利要求14所述的方法,其特征在于,进一步包括:由所述处理器基于所述索引生成第二索引。
16.如权利要求15所述的方法,其特征在于,所述第二索引的每个条目具有标识源元素的值,其中所述源元素由所述源元素的偏移标识。
17.如权利要求15所述的方法,其特征在于,生成第二索引的步骤包括:将所述索引的每个元素并行地转换为所述第二索引的元素。
18.如权利要求14所述的方法,其特征在于,将所述源元素中的每一个存储到所述处理器的所述第二寄存器中的位置的步骤包括:
由所述处理器将每个源元素提供给多个解复用器中的对应的解复用器;
将所述索引中的条目提供给每个解复用器;以及
将来自每个解复用器的对应的源元素输出到由所述索引指示的数据输出行。
19.如权利要求14所述的方法,其特征在于,所述多个解复用器中的每一个具有耦合至所述第二寄存器中的每个位置的数据输出行。
20.如权利要求14所述的方法,其特征在于,将所述源元素中的每一个存储到所述第二寄存器由所述处理器并行地执行。
21.一种设备,包括:
用于将多个源元素接收到处理器的第一寄存器的装置,其中每个源元素具有相对于所述第一寄存器的基准位置的偏移;
用于接收具有索引元素的索引的装置,其中每个索引元素具有相对于所述索引的基准位置的偏移,并且其中每个索引元素对应于具有相同偏移的源元素;
用于将所述源元素中的每一个存储到所述处理器的第二寄存器中的位置的装置,其中所述位置由对应的索引元素的值标识。
22.如权利要求21所述的设备,其特征在于,进一步包括:用于基于所述索引生成第二索引的装置,其中所述第二索引的每个条目具有标识源元素的值,其中所述源元素由所述源元素的偏移标识。
23.如权利要求21所述的设备,其特征在于,进一步包括:
用于将每个源元素提供给多个解复用器中的对应的解复用器的装置;
用于将来自所述索引的条目提供给所述多个解复用器中的每一个的装置;以及
用于将每个解复用器的输出存储到所述第二寄存器中的位置的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/998,151 US20170185413A1 (en) | 2015-12-23 | 2015-12-23 | Processing devices to perform a conjugate permute instruction |
US14/998,151 | 2015-12-23 | ||
PCT/US2016/062939 WO2017112195A1 (en) | 2015-12-23 | 2016-11-18 | Processing devices to perform a conjugate permute instruction |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108475253A true CN108475253A (zh) | 2018-08-31 |
Family
ID=59087246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680075982.8A Pending CN108475253A (zh) | 2015-12-23 | 2016-11-18 | 用于执行共轭置换指令的处理设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20170185413A1 (zh) |
EP (1) | EP3394766A4 (zh) |
CN (1) | CN108475253A (zh) |
TW (1) | TWI733714B (zh) |
WO (1) | WO2017112195A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113366462A (zh) * | 2019-03-18 | 2021-09-07 | 美光科技公司 | 具有向量第一和多通道配置的向量处理器 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6222285B1 (ja) * | 2016-06-01 | 2017-11-01 | 富士電機株式会社 | データ処理装置、データ処理方法及びプログラム |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6381690B1 (en) * | 1995-08-01 | 2002-04-30 | Hewlett-Packard Company | Processor for performing subword permutations and combinations |
US20050132165A1 (en) * | 2003-12-09 | 2005-06-16 | Arm Limited | Data processing apparatus and method for performing in parallel a data processing operation on data elements |
US20070011442A1 (en) * | 2005-07-06 | 2007-01-11 | Via Technologies, Inc. | Systems and methods of providing indexed load and store operations in a dual-mode computer processing environment |
US20070226469A1 (en) * | 2006-03-06 | 2007-09-27 | James Wilson | Permutable address processor and method |
CN101482810A (zh) * | 2007-12-26 | 2009-07-15 | 英特尔公司 | 用于处理矢量数据的方法、设备和指令 |
US20120166761A1 (en) * | 2010-12-22 | 2012-06-28 | Hughes Christopher J | Vector conflict instructions |
US20140059323A1 (en) * | 2012-08-23 | 2014-02-27 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
CN104040489A (zh) * | 2011-12-23 | 2014-09-10 | 英特尔公司 | 多寄存器收集指令 |
US20140281421A1 (en) * | 2013-03-15 | 2014-09-18 | Qualcomm Incorporated | Arbitrary size table lookup and permutes with crossbar |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US7039060B2 (en) * | 2001-03-07 | 2006-05-02 | Mips Tech Inc | System and method for extracting fields from packets having fields spread over more than one register |
US7412587B2 (en) * | 2004-02-16 | 2008-08-12 | Matsushita Electric Industrial Co., Ltd. | Parallel operation processor utilizing SIMD data transfers |
US7434024B2 (en) * | 2004-08-30 | 2008-10-07 | Ati Technologies, Inc. | SIMD processor with register addressing, buffer stall and methods |
WO2013095607A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction execution unit that broadcasts data values at different levels of granularity |
-
2015
- 2015-12-23 US US14/998,151 patent/US20170185413A1/en not_active Abandoned
-
2016
- 2016-11-18 CN CN201680075982.8A patent/CN108475253A/zh active Pending
- 2016-11-18 WO PCT/US2016/062939 patent/WO2017112195A1/en unknown
- 2016-11-18 EP EP16879685.2A patent/EP3394766A4/en not_active Withdrawn
- 2016-11-21 TW TW105138125A patent/TWI733714B/zh active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6381690B1 (en) * | 1995-08-01 | 2002-04-30 | Hewlett-Packard Company | Processor for performing subword permutations and combinations |
US20050132165A1 (en) * | 2003-12-09 | 2005-06-16 | Arm Limited | Data processing apparatus and method for performing in parallel a data processing operation on data elements |
US20070011442A1 (en) * | 2005-07-06 | 2007-01-11 | Via Technologies, Inc. | Systems and methods of providing indexed load and store operations in a dual-mode computer processing environment |
US20070226469A1 (en) * | 2006-03-06 | 2007-09-27 | James Wilson | Permutable address processor and method |
CN101482810A (zh) * | 2007-12-26 | 2009-07-15 | 英特尔公司 | 用于处理矢量数据的方法、设备和指令 |
US20120166761A1 (en) * | 2010-12-22 | 2012-06-28 | Hughes Christopher J | Vector conflict instructions |
CN104040489A (zh) * | 2011-12-23 | 2014-09-10 | 英特尔公司 | 多寄存器收集指令 |
US20140059323A1 (en) * | 2012-08-23 | 2014-02-27 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
US20140281421A1 (en) * | 2013-03-15 | 2014-09-18 | Qualcomm Incorporated | Arbitrary size table lookup and permutes with crossbar |
Non-Patent Citations (2)
Title |
---|
AMD64: "AMD64 Technology AMD64 Architecture Programmer’s Manual Volume 4: 128-Bit and 256-Bit Media Instructions", 《AMD64 ARCHITECTURE PROGRAMMER’S MANUAL, VOLUME 4: 128-BIT AND 256-BIT MEDIA INSTRUCTIONS》 * |
AMD64: "AMD64 Technology AMD64 Architecture Programmer’s Manual Volume 6: 128-Bit and 256-Bit XOP and FMA4 Instructions", 《128-BIT AND 256-BIT VPX INSTRUCTIONS (AMD.COM)》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113366462A (zh) * | 2019-03-18 | 2021-09-07 | 美光科技公司 | 具有向量第一和多通道配置的向量处理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2017112195A1 (en) | 2017-06-29 |
TW201732558A (zh) | 2017-09-16 |
TWI733714B (zh) | 2021-07-21 |
US20170185413A1 (en) | 2017-06-29 |
EP3394766A4 (en) | 2019-10-09 |
EP3394766A1 (en) | 2018-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN106843810B (zh) | 跟踪指令的控制流程的设备、方法以及机器可读介质 | |
CN108446763A (zh) | 可变字长神经网络加速器电路 | |
CN104995599B (zh) | 使用硬件与软件组合的路径概况分析 | |
CN108388528A (zh) | 基于硬件的虚拟机通信 | |
CN108475199A (zh) | 用于执行密钥值查找指令的处理设备 | |
CN108228094A (zh) | 存储器侧高速缓存中通路的伺机增加 | |
CN108351811A (zh) | 调度高度并行的应用 | |
CN107209723A (zh) | 用于虚拟化的细粒度地址重新映射 | |
CN109062608A (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
CN105793819A (zh) | 包括混合处理器核的片上系统(soc) | |
CN108351786A (zh) | 在指令集架构中对数据进行排序并且合并经排序数据 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN108369517A (zh) | 聚合分散指令 | |
CN108334458A (zh) | 存储器高效的末级高速缓存架构 | |
CN108475192B (zh) | 分散减少指令 | |
CN109643283A (zh) | 管理飞地存储器页 | |
CN108052349A (zh) | 在屏蔽寄存器中反转和置换位的装置和方法 | |
CN109791493A (zh) | 用于乱序集群化解码中的负载平衡的系统和方法 | |
CN107278295A (zh) | 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测 | |
CN108292217A (zh) | 用于结构阵列的向量存储/加载指令 | |
CN108369508A (zh) | 使用处理器指令前缀的二进制转换支持 | |
US20190146794A1 (en) | Conflict mask generation | |
CN105723329B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180831 |
|
RJ01 | Rejection of invention patent application after publication |