CN108475199A - 用于执行密钥值查找指令的处理设备 - Google Patents
用于执行密钥值查找指令的处理设备 Download PDFInfo
- Publication number
- CN108475199A CN108475199A CN201680075445.3A CN201680075445A CN108475199A CN 108475199 A CN108475199 A CN 108475199A CN 201680075445 A CN201680075445 A CN 201680075445A CN 108475199 A CN108475199 A CN 108475199A
- Authority
- CN
- China
- Prior art keywords
- key
- vector
- value
- register
- processor
- 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
Links
- 238000012545 processing Methods 0.000 title description 36
- 239000013598 vector Substances 0.000 claims abstract description 300
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000015654 memory Effects 0.000 claims description 107
- 238000003860 storage Methods 0.000 claims description 68
- 238000006073 displacement reaction Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 3
- 239000000203 mixture Substances 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 12
- 238000007667 floating Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 238000009826 distribution Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000000429 assembly Methods 0.000 description 4
- 230000000712 assembly Effects 0.000 description 4
- 229910002056 binary alloy Inorganic materials 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 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
- 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
- 238000000151 deposition Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 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
- 241001269238 Data Species 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
- 238000004458 analytical method Methods 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
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000012938 design process Methods 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
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method 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
- 230000010363 phase shift Effects 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
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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]
-
- 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/3888—Concurrent 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)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
描述了单指令多数据(SIMD)技术。执行密钥值查找指令的方法可以包括将密钥的向量存储到第一寄存器以及将对应于密钥的值的向量存储到第二寄存器。处理器可以接收用于执行包括密钥输入元素的向量的密钥值查找指令的指令。处理器可以将每个密钥输入元素与每个密钥进行比较以确定匹配的密钥。处理器然后可以将对应于匹配的密钥的值存储到输出向量的密钥输入元素的位置中。
Description
背景技术
单指令多数据(SIMD)架构可在微处理器系统中实现以使一个指令能并行地对若干操作数进行操作。SIMD架构利用将多个数据元素紧缩在一个寄存器或连续存储器位置内的优势。通过并行硬件执行,由一个指令对分开的数据元素执行多个操作以提高微处理器系统的性能。
附图简述
通过下文给出的具体实施方式并通过本发明的各实施例的附图,将更完整地理解本发明的各实施例。
图1是示出根据一个实施例的实现密钥值查找指令的计算系统的框图。
图2示出了根据一个实施例的执行密钥值查找操作的方法的示图。
图3示出了根据一个实施例的单指令多数据密钥值查找指令的示例操作。
图4A示出了根据一个实施例的单指令多数据密钥值查找指令的示例操作。
图4B示出了根据一个实施例的单指令多数据密钥值查找指令的示例操作。
图5A是示出根据一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图5B是示出根据一个实施例的实现安全存储器重新分区的处理器的微架构的框图。
图6示出了根据一个实施例的包括用于执行安全存储器重新分区的逻辑电路的处理器的微架构的框图。
图7是根据一个实现方式的计算机系统的框图。
图8是根据另一实现方式的计算机系统的框图。
图9是根据一个实现方式的芯片上系统的框图。
图10示出了根据一个实现方式的计算系统的框图的另一实现方式。
图11示出了根据一个实现方式的计算系统的框图的另一实现方式。
具体实施方式
处理器可以使用向量指令集或单指令多数据(SIMD)指令集来并行地执行多个操作。处理器可以并行地执行多个操作,同时地将操作应用到同一个数据片或多个数据片。向量化是用于将一次仅对一对操作数进行操作的标量程序转换为可以运行来自单个指令的多个操作的向量程序的一种操作。例如,向量化可以涉及将循环操作重写以执行SIMD指令,其中代替处理数组的单个元素N次,其同时处理数组的M个元素N/M次。
向量化可以实现密钥值查找指令以基于一组密钥输入来标识值。密钥值查找是数据库、数据挖掘、图形分析和其他应用中的频繁操作。通过使用相关联的数组、字典或映射数据结构来执行密钥值查找。用于密钥值查找的数据结构具有密钥和值对的集合。密钥集合中的每个密钥具有单个对应值。在一些实施例中,冗余密钥与对应值一起存储。密钥值查找指令可以接受密钥输入并且在密钥索引中标识密钥的位置。密钥索引可以引用与每个密钥相关联的值。因此,在密钥值查找指令的处理中,处理器可以标识并返回与密钥输入相关联的值。在一些实施例中,可以使用与密钥相关联的值将该点引用到另一值。
在密钥值查找指令的非向量化实现方式中,一次读取一个密钥输入并且将其与密钥集合中的密钥进行比较直到存在匹配。当在密钥索引中找到输入密钥时,返回相关联的值。对于一组密钥输入,将每个输入与密钥集合中的密钥进行比较直到存在匹配。为条件语句实现分支预测的处理器可能导致当执行密钥值查找操作时的高的误预测损失。例如,分支预测可能是困难的,因为与一个密钥元素的匹配的出现可能独立于与先前的密钥元素的匹配。可以通过在SIMD处理器中实现密钥值查找来减少难以预测的条件分支的数量。例如,使用SIMD寄存器来实现密钥值查找指令可以使处理器能使密钥集合中的指针一次前进超过一个元素。尽管这可能增加在密钥值查找指令中执行的密钥输入元素与密钥元素之间的比较的总数的数量,但是可以由SIMD指令并行地执行这些比较并且还降低分支误预测的开销。
本文描述的实施例通过利用SIMD操作执行密钥值查找指令来解决上述缺陷。两个寄存器可以用于存储一组密钥和相关联的值。处理器可以接收用于对存储在另一寄存器中的密钥输入向量中的一组密钥输入执行密钥值查找操作的指令。处理器然后可以执行对密钥输入向量中的每个元素与该组密钥中的每个元素的比较。对于与该组密钥中的密钥匹配的那些密钥输入,可以将相关联的值返回到输出向量。与该组密钥中的密钥不匹配的那些密钥输入可以返回掩码值。在一些实施例中,当将密钥输入与一组密钥进行比较时,处理器可以生成置换索引。处理器然后可以使用置换索引来对与密钥相关联的一组值执行置换操作。
图1A是示出根据一个实施例的实现密钥值查找指令的计算系统100的框图。计算系统100形成为具有处理器102,处理器102包括用于执行密钥值查找指令109的一个或多个执行单元108和用于对密钥值查找指令109进行解码的存储器解码器105。密钥值查找指令109实现根据本文所述的一个或多个实施例的一个或多个特征。计算系统100可以是任何设备,但是本文所述的各实施例的描述涉及包括一个或多个向量寄存器104并且能够执行一个或多个SIMD指令的处理器。
寄存器集合106包括用于存储在指令的执行期间由执行单元108使用的数据元素的一个或多个寄存器。寄存器集合106可以将不同类型的数据存储在各种寄存器中,各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、区块寄存器、影子寄存器、检查点寄存器、状态寄存器以及指令指针寄存器。具体而言,寄存器集合106可以包括保存数据以供SIMD指令进行向量处理的向量寄存器104。例如,一个或多个向量寄存器104可以存储一组密钥、一组相关联的值、或一组密钥输入以在密钥值查找指令109的执行中使用。一个或多个向量寄存器104还可以用于存储在密钥值查找指令109的执行中生成的中间向量。例如,可以由执行单元108生成置换索引,并且可以将置换索引存储到向量寄存器104以在执行密钥值查找指令109时使用。
解码器105可以对密钥值查找指令109进行解码,密钥值查找指令109可以指定与一组密钥值对进行比较的一组密钥输入。执行单元108然后可以响应于经解码的密钥值查找指令109将密钥输入、密钥、或相关联的值中的一个或多个存储在一个或多个向量寄存器104中。执行单元108然后可以执行密钥值查找指令109的操作。例如,密钥值查找指令可以执行下文参考图2进一步描述的方法。
执行单元108(包括用于执行整数和浮点操作以及向量操作的逻辑)也驻留在处理器102中。应当注意,执行单元可以或可以不具有浮点单元。在一个实施例中,处理器102包括用于存储微代码的微代码只读存储器(ROM),该微代码在被执行时用于执行某些宏指令的进程或处置复杂情况。例如,微代码可以包括用于利用执行单元108执行密钥值查找指令的一组操作。例如,微代码可以包括实现参考图2-4B描述的一个或多个进程的一组微操作。在一些实施例中,微代码可以是潜在地可更新的,以便为处理器102处置逻辑缺陷/修补。在一些实施例中,另一存储器元件可以包括微代码指令以执行用于实现密钥值查找指令的操作。
在一些实施例中,处理器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。例如,由对计算机系统100进行操作的程序使用的一组密钥值对或密钥输入可以包括比可以存储在寄存器集合106中的寄存器中的元素更多的元素。在这些情况下,因为附加元素从存储器设备120加载,附加元素可以存储在高速缓存存储器103中以改善处理器102的性能。
图2示出了根据一个实施例的对值的数组执行密钥值查找指令的方法的示图。方法可以至少部分地由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,由处理设备执行的指令)、固件、或其组合的处理设备或处理逻辑来执行。
参考图2,方法以在框210中将密钥元素的向量存储在第一处理器寄存器中开始。例如,密钥元素的向量可以是各自与相关联的值配对的密钥的集合。在一些实施例中,密钥集合可以不具有重复的元素,并且可以按经排序的顺序存储在第一处理器寄存器中。例如,每个密钥元素可以具有大于或等于具有从密钥元素的向量的基准位置的较小偏移的任何密钥元素的值。
方法在框220中继续将值的向量存储在第二处理器寄存器中。值的向量中的每个值可以与第一处理器寄存器中的密钥的向量中的密钥相关联。例如,每个密钥可以与值的向量中的特定值相关联。值可以存储在第二处理器寄存器的与第一处理器寄存器中的对应密钥相同的位置中。例如,对于密钥和值对,密钥可以存储在第一寄存器的第N个位置中,并且相关联的值可以存储在第二寄存器的第N个位置中。
在框230中,方法继续接收包括密钥输入向量的密钥值查找指令。密钥输入向量包括一组密钥输入元素以供处理器确定相关联的输出值。处理器可以将密钥输入向量存储到处理器的寄存器以用于执行密钥值查找指令。
在框240-260中,处理器对在框210-230中接收的各元素执行操作以根据密钥输入向量中的密钥生成输出向量。例如,特定密钥输入向量可以具有在每个位置i处具有值KIN[i]的密钥输入元素。可以将值KIN[i]与密钥向量中的每个元素进行比较。如果处理器标识在位置j处具有值密钥[j]的密钥使得KIN[i]=密钥[j],则该过程可以将值[j]存储到Vout[i],其中值[j]是与密钥密钥[j]相关联的值,并且Vout[i]是输出向量的位置i中的条目。可以为密钥输入向量中的每个密钥输入重复该比较过程。因此,处理器可以确定多个值元素的子集。值元素的子集中的每个元素可以与匹配密钥输入元素的密钥元素相关联。处理器然后可以将值元素的子集中的每一个存储到输出向量。可以将每个值元素存储到具有与匹配相关联的密钥的密钥输入元素的偏移相同的偏移的位置。
在图2的框240中,处理器可以将来自密钥输入向量的每个密钥输入元素与密钥向量的一个或多个密钥元素进行比较。密钥输入元素与密钥元素的比较可以产生与密钥输入元素匹配的密钥元素的子集。在某些情况下,每个密钥元素可以与密钥输入匹配,或者没有密钥元素可以与密钥输入匹配。然后子集可以包括全部密钥元素或不包括密钥元素。可以使用SIMD架构来并行地执行第一密钥输入与密钥输入向量的元素的比较。例如,执行单元可以基本上同时将每个密钥输入元素提供给耦合至存储密钥输入元素的寄存器的一个或多个数字比较器。执行单元还可以将密钥元素中的一个提供给数字比较器中的每一个,使得每个可能的密钥输入元素和密钥元素对耦合至至少一个数字比较器。数字比较器中的每一个然后可以输出指示两个输入是否相等的二进制值。数字比较器然后可以生成指示每个密钥输入元素是否等于密钥元素的一组输出。如果密钥输入元素与密钥相等,则可以说它们匹配。在一些实施例中,处理器可以执行用于将密钥输入元素与密钥元素进行比较的一系列SIMD指令。例如,对于每个密钥输入元素,处理器可以执行用于将密钥输入元素与密钥向量的每个元素进行比较的指令。处理器可以对每个密钥输入元素重复比较以确定密钥输入元素是否匹配任何密钥。
在框250中,方法可以通过基于密钥元素与密钥输入元素之间的匹配生成置换索引向量而继续。在一些实施例中,如果密钥输入元素不匹配任何密钥元素,则处理器可以将掩码元素存储在置换索引的与密钥输入元素相关联的位置中。例如,如果密钥输入向量的第N个位置中的密钥输入值匹配密钥向量的第M个位置中的密钥,则处理器可以将M的值存储在置换索引向量的第N个位置中。可以基于对密钥输入向量中的每个位置i执行该操作以在置换索引向量的每个位置i中生成条目来生成置换索引向量。如果存在在比较期间不匹配任何密钥的密钥输入,则可以将掩码元素存储到置换索引向量中的对应位置。下文参考图4A进一步描述生成置换索引向量的示例过程。
在框260中,方法通过使用置换索引向量对值向量执行向量置换指令以生成输出向量而继续。执行向量置换指令将来自值向量中的由置换向量索引中的条目指示的位置的值拉出到输出向量。例如,对于输出向量中的位置i,处理器可以存储值[索引[i]]的值,其中索引[i]是存储在置换索引向量的位置i中的值,并且值[索引[i]]是存储在值向量的位置索引[i]中的值。置换索引向量使密钥输入向量的每个元素与密钥向量中的匹配密钥的位置关联。例如,置换索引向量可以包括与对应密钥输入元素从密钥输入向量的基准位置的偏移相等的从置换索引向量的基准位置的位置偏移处的值。在该位置处的置换索引的值可以引用与密钥输入元素匹配的密钥的位置。例如,该值可以是引用匹配的密钥值从密钥向量的基准位置的偏移的整数。因此,置换索引向量为密钥输入向量的每个元素向处理器指示与匹配的密钥元素对应的值向量的元素。因此,由处理器使用置换索引向量对值向量执行置换指令使用密钥和值对之间的相关性以根据密钥输入向量中的密钥输入将值传递至输出向量。例如,对于置换索引向量中的每个元素,处理器可以使用具有与置换索引向量的元素的值相等的从值向量的基准位置的位置偏移的值元素。然后,处理器将值元素存储到输出向量中的在输出向量中具有与置换元素在置换索引向量中相同的偏移的位置。
图3示出根据实施例的在SIMD密钥值查找指令的执行期间处理器的寄存器的示例。SIMD指令是图2中描述的方法的实现方式的示例。在图3的示例中,SIMD指令对具有4个存储器元素的存储器寄存器进行操作。在其他实现方式中,SIMD寄存器可以包括8个存储器元素、16个存储器元素、或另一数量的存储器元素。
密钥寄存器300可以包括存储密钥向量的密钥值的元素301-304的数组。出于一致性,图3、4A和4B中所示的寄存器示出为最低有效元素在左边而最高有效元素在右边。例如,元素301中的值表示寄存器中的位置0,元素302中的值表示具有从寄存器的基准位置的偏移为1的位置1,元素303中的值表示具有从寄存器的基准位置的偏移为2的位置2,并且元素304中的值表示具有从寄存器的基准位置的偏移为3的位置3。处理器可以从对处理器进行操作的软件接收密钥向量300、值向量310、密钥输入向量320、以及用于执行密钥值查找的指令。
值向量310是存储各自与密钥向量中的密钥相关联的值的元素311-314的数组。例如,元素314中的值对应于元素304中的密钥,元素313中的值对应于元素303中的密钥,元素312中的值对应于元素302中的密钥,并且元素311中的值对应于元素301中的密钥。
密钥输入向量320可以包括一组密钥输入以与密钥向量中的密钥进行比较。处理器可以为密钥输入向量320中的每个密钥输入执行对来自值向量310的对应值的查找。输出向量330是与匹配密钥输入的密钥相关联的值的输出。输出向量330还可以包括一个或多个掩码元素以用于不匹配任何密钥的密钥输入。例如,密钥输入元素321具有与密钥向量300的元素304中的密钥匹配的值900。因此,来自值向量310中的对应元素314的值754存储在输出向量330中的对应于密钥输入向量元素321的元素331处。类似过程用于生成输出向量330的元素332和333。
输出向量330的元素334具有掩码条目而不是来自值向量310的值。当密钥输入不匹配密钥向量300中的任何密钥时可以生成该掩码条目。例如,密钥输入元素324具有与密钥向量300中的密钥不匹配的值4。因此,值向量310中不存在对应于该密钥输入的值。因此,将掩码存储到输出向量330的对应位置334。在一些实施例中,各种掩码可以用于指示不存在对密钥输入的匹配。例如,掩码可以是值向量310中的值不使用的值。例如,如果值向量310是正数,则掩码可以是负值。在一些实施例中,掩码可以是每一位具有二进制‘1’的值。还可以由在值的特定位处的二进制‘1’或零表示掩码。
图4A和4B示出根据实施例的在SIMD密钥值查找指令的执行期间处理器的寄存器的示例。SIMD指令是图2中描述的方法的实现方式的示例。具体而言,图4A示出生成置换索引向量以在密钥值查找指令中使用的SIMD指令,并且图4B示出应用置换索引向量以完成密钥值查找指令的SIMD置换指令。例如,当执行参考图2描述的过程时可以生成图4A和4B中的寄存器。在图4A和4B的示例中,SIMD指令对具有4个存储器元素的存储器寄存器进行操作。在其他实现方式中,SIMD寄存器可以包括8个存储器元素、16个存储器元素、或另一数量的存储器元素。在图4A和4B中,密钥向量300、密钥输入向量320、值向量310和输出向量330与图3中相同地标记,并且可以表示相同的寄存器。
在图4A中,处理器将密钥向量300的每个元素与密钥输入向量320的每个元素进行比较。出于说明的目的,在网格406中表示比较的结果,其中二进制值‘0’表示对应的密钥输入和密钥不匹配,而二进制值‘1’表示对应的密钥输入和密钥匹配。例如,条目402指示密钥输入向量320的元素321中的值900不匹配密钥向量300的元素301中的值5。然而,条目404指示密钥输入向量320的元素322中的值5匹配密钥向量300的元素301中的值5。基于密钥输入向量320与密钥向量300中的值的比较生成网格406中的剩余条目。比较的结果用于生成置换索引向量410。例如,条目404指示密钥输入322匹配密钥向量300的元素301中的密钥。因为密钥输入元素322匹配密钥向量300的最低有效位置中的条目,所以处理器可以将值零存储在置换索引向量410中的对应条目412中。可以以相同方式建立置换索引向量中的剩余条目以生成图4A所示的置换索引向量410。在一些实施例中,通过将来自密钥输入向量320的密钥输入元素与密钥向量300中的每个密钥元素进行比较以为每个密钥输入生成二进制数,处理器可以为置换索引向量410中的位置确定条目。例如,为密钥输入元素323生成的二进制数会是0010,因为其匹配密钥向量的第一位置中的密钥。处理器然后可以执行用于对二进制数的前导零进行计数的操作以生成指示匹配的位置的数字。例如,二进制数0010具有两个前导零,因此处理器将值2存储到置换向量索引的元素413。可以并行地执行密钥输入向量320的密钥输入元素与密钥向量300中的密钥的比较,使得SIMD指令基本上同时生成网格406的元素。例如,可以如参考图2的框240所讨论的执行比较。在一些实施例中,可以在处理器的硬件中执行比较,并且图4A中的网格406中的输出可以是来自处理器的硬件元件的输出并且被提供给附加硬件元件以生成置换向量410。在一些实施例中,多个SIMD指令用于生成置换索引向量410。例如,第一SIMD指令可以生成网格406中的条目,其可以表示为中间向量,使得行中的与密钥输入向量320的密钥输入相邻的单元存储在向量的单元中。例如,在图4A的示例中,网格可以表示为具有四个单元的向量[0001,1000,0010,0000],各自对应于密钥输入。第二SIMD指令可以通过对中间向量中的条目的前导零进行计数来生成置换索引向量410。
在参考图4A所讨论的生成置换索引向量410之后,可以由处理器使用置换索引向量410来执行SIMD置换指令。在置换指令中,通过根据置换索引向量410中的每个条目从值向量310拉出值来形成输出向量330。例如,置换索引向量410的第N个位置中的值可以指向要存储在输出向量330的第N个位置中的值索引310中的值。因此,输出向量330中的每个条目i具有值[索引[i]]的值,其中值[j]是值向量310的位置j中的条目,并且索引[i]是置换索引向量410的位置i中的元素。因此,对于图4B的示例,处理器将值[索引[0]]=值[3]=754的值存储在输出向量330的元素331中。在示例中,处理器还将值[索引[1]]=值[0]=754的值存储在输出向量330的元素332中。在示例中,处理器还将值[索引[2]]=值[2]=21的值存储在输出向量330的元素333中。在示例中,处理器还将值[索引[3]]=值[掩码]=‘掩码’的掩码值存储在输出向量330的元素334中。在示例中,置换索引410可以包括用于置换索引向量410的元素414中的条目的掩码值,因为元素324中的密钥输入不匹配密钥向量300中的密钥。
图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可以支持SIMD密钥值查找指令。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元以及共享的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中省去了图6中的某些方面,以避免使图8的其他方面变得模糊。
图8示出处理器870和880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可包括如本文中所述的集成存储器控制器单元。此外,CL872、882还可包括I/O控制逻辑。图6示出了存储器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也可以被用来利用诸如参考图2所描述的处理设备1102来存储指令1126,和/或包含调用上面的应用的方法的软件库。虽然计算机可读存储介质1124在示例实施例中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行当前的多个实施例的方法中的任何一种或多种的一组指令的任何介质。术语“计算机可读存储介质”应当相应地视为包括但不限于固态存储器以及光和磁介质。
以下示例涉及本公开的进一步的实施例。
示例1是一种处理器,包括:第一寄存器,用于存储包括多个密钥元素的密钥向量;第二寄存器,用于存储包括与密钥元素相关联的多个值元素的值向量;执行单元,耦合至第一寄存器和第二寄存器,执行单元用于:将密钥输入向量的密钥输入元素与密钥向量的每个密钥元素进行比较;以及响应于确定密钥输入元素与密钥元素匹配,生成输出向量,输出向量包括在与密钥输入元素从密钥输入向量的基准位置的偏移相等的从输出向量的基准位置的位置偏移中的与密钥元素相关联的值元素。
在示例2中,在示例1的处理器中,执行单元进一步用于:产生引用密钥元素的置换索引向量,其中置换索引向量中的条目引用密钥元素从密钥向量的基准位置的偏移并且具有与密钥输入元素的偏移相等的从置换索引向量的基准位置的偏移。
在示例3中,在示例2的处理器中,为了生成输出向量,执行单元用于:基于置换索引向量中的条目的值来标识值元素,其中值元素从值向量的基准元素的偏移等于置换索引向量中的条目的值;以及将值元素存储到输出向量的与从置换索引向量的基准位置的偏移相等的从输出向量的基准位置的位置偏移中。
在示例4中,在示例2的处理器中,执行单元用于:将用于不匹配任何密钥元素的第二密钥输入元素的掩码值存储到置换索引向量。
在示例5中,在示例1的处理器中,第二寄存器按经排序的顺序存储多个密钥元素,其中每个密钥具有特定偏移并且包括大于具有从密钥向量的基准位置的较小偏移的任何密钥的值的整数值。
在示例5中,在示例1的处理器中,执行单元进一步用于:并行地将每个密钥元素与每个密钥输入元素进行比较。
在示例7中,在示例6的处理器中,处理器进一步包括:多个数字比较器,耦合至第一寄存器,其中将每个密钥元素与每个密钥输入元素进行比较包括:执行单元用于将多个密钥输入元素中的每一个与多个密钥元素中的每一个提供给多个数字比较器。
在示例8中,在示例7的处理器中,处理器进一步包括:第三寄存器,耦合至多个数字比较器,其中第三寄存器用于存储密钥输入向量。
示例9是一种处理器,包括:处理器核;以及存储器元件,耦合至处理器核,其中存储器元件包括微代码,微代码用于使处理器核用于:将包括多个密钥元素的密钥向量存储在第一寄存器中;将包括多个值元素的值向量存储在第二寄存器中,其中每个值元素与密钥元素相关联;接收包括多个密钥输入元素的密钥输入向量;将每个密钥元素与每个密钥输入元素进行比较以确定密钥元素的子集,其中密钥元素的子集中的每个密钥元素与多个密钥输入元素中的至少一个匹配;以及将值元素的子集存储到第三寄存器,其中第三寄存器中的值元素的子集中的每个值元素与密钥元素的子集中的密钥元素相关联并且在与相关联的密钥输入元素从密钥输入向量的基准位置的偏移相等的从第三寄存器的基准位置的位置偏移中。
在示例10中,在示例9的处理器中,处理器核进一步用于:基于与密钥输入元素匹配的密钥元素生成置换索引向量;以及使用置换索引向量和值向量来执行向量置换操作。
在示例11中,在示例10的处理器中,为了生成置换索引,处理器核用于:将条目存储到置换索引向量,该条目具有与相关联的密钥输入元素从密钥输入元素的基准位置的偏移相等的从置换索引的基准位置的偏移,并且具有引用与密钥输入元素匹配的密钥元素的位置的值。
在示例12中,在示例10的处理器中,为了执行向量置换操作,处理器用于:基于置换索引向量中的条目的值来标识值元素,其中值元素从值向量的基准元素的偏移等于置换索引向量中的条目的值;以及将值元素存储到第三寄存器的与置换索引向量中的条目从置换索引向量的基准位置的偏移相等的从第三寄存器的基准位置的位置偏移中。
在示例13中,在示例的处理器中,处理器核进一步用于:响应于确定密钥输入向量的密钥输入元素不匹配密钥向量中的任何密钥元素,将掩码值提供给置换索引向量。
在示例14中,在示例9的处理器中,处理器核进一步用于:使用单输入多数据寄存器并行地将每个密钥元素与每个密钥输入元素进行比较。
示例15是一种方法,包括:将包括多个密钥元素的密钥向量存储到第一处理器寄存器;将包括多个值元素的值向量存储到第二处理器寄存器,其中每个值元素与密钥元素相关联;接收多个密钥输入元素;由处理器将每个密钥输入元素与每个密钥元素进行比较以确定密钥元素的子集,其中密钥元素的子集中的每个密钥元素与密钥输入元素中的一个匹配;确定多个值元素的子集,其中值元素的子集中的每个元素与密钥元素的子集中的密钥元素中的一个相关联;以及由处理器将多个值元素的子集中的每个元素存储在第三寄存器中的与相关联的密钥输入元素从密钥输入向量的基准位置的偏移相等的从第三寄存器的基准位置偏移的位置中。
在示例16中,示例15的方法进一步包括:由处理器生成置换索引向量,置换索引向量具有引用与密钥元素的子集中的密钥元素相关联的值元素的值向量中的位置的条目,其中置换索引向量中的每个条目具有与相关联的密钥输入元素从相关联的密钥输入元素的基准位置的偏移相等的从置换索引向量的基准位置的偏移。
在示例17中,在示例16的方法中,存储值元素的子集的步骤包括:由处理器基于置换索引向量中的条目的值来标识值元素;以及将值元素存储到第三寄存器的与置换索引向量中的条目从置换索引向量的基准位置的偏移相等的从第三寄存器的基准位置的位置偏移中。
在示例18中,示例16的方法进一步包括:响应于确定密钥输入元素不匹配任何密钥元素,将掩码值存储到索引向量,其中索引向量中的掩码值的位置具有与密钥输入元素的偏移相等的偏移。
在示例19中,示例15的方法进一步包括:响应于确定密钥输入元素不匹配任何密钥元素,将掩码值存储到第三寄存器,其中第三寄存器中的掩码值的位置具有与密钥输入元素的偏移相等的偏移。
在示例19中,示例15的方法,使用向量寄存器并行地执行将密钥输入向量的每个元素与密钥向量的每个元素进行比较。
示例21是一种机器可读介质,包括代码,代码在被执行时使机器执行示例15至20中的任一项的方法。
示例22是一种设备,包括用于执行权利要求15至20中的任一项的方法的装置。
示例23是一种装置,包括配置为执行权利要求15至20中的任一项的方法的处理器。
示例24是一种设备,包括:用于将包括多个密钥元素的密钥向量存储到第一处理器寄存器并且将包括多个值元素的值向量存储到第二处理器寄存器的装置,其中每个值元素与密钥元素相关联;用于接收多个密钥输入元素的装置;用于将每个密钥输入元素与每个密钥元素进行比较以确定密钥元素的子集的装置,其中密钥元素的子集中的每个密钥元素与密钥输入元素中的一个匹配;用于确定多个值元素的子集的装置,其中值元素的子集中的每个元素与密钥元素的子集中的密钥元素中的一个相关联;以及用于将多个值元素的子集中的每个元素存储在第三寄存器中的与相关联的密钥输入元素从密钥输入向量的基准位置的偏移相等的从第三寄存器的基准位置偏移的位置中的装置。
在示例25中,在示例24的方法中,设备进一步包括:用于生成置换索引向量的装置,置换索引向量具有引用与密钥元素的子集中的密钥元素相关联的值元素的值向量中的位置的条目,其中置换索引向量中的每个条目具有与相关联的密钥输入元素从相关联的密钥输入元素的基准位置的偏移相等的从置换索引向量的基准位置的偏移;用于基于置换索引向量中的条目的值来标识值元素的装置;以及用于将值元素存储到第三寄存器的与置换索引向量中的条目从置换索引向量的基准位置的偏移相等的从第三寄存器的基准位置的位置偏移中的装置。
在示例26中,在示例24的方法中,设备进一步包括:用于响应于确定密钥输入元素不匹配任何密钥元素将掩码值存储到第三寄存器的装置,其中第三寄存器中的掩码值的位置具有与密钥输入元素的偏移相等的偏移。
在示例27中,在示例24的方法中,设备进一步包括:用于生成置换索引向量的装置,置换索引向量具有引用与密钥元素的子集中的密钥元素相关联的值元素的值向量中的位置的条目,其中置换索引向量中的每个条目具有与相关联的密钥输入元素从相关联的密钥输入元素的基准位置的偏移相等的从置换索引向量的基准位置的偏移。
在示例28中,在示例27的方法中,设备进一步包括:用于基于置换索引向量中的条目的值来标识值元素的装置;以及用于将值元素存储到第三寄存器的与置换索引向量中的条目从置换索引向量的基准位置的偏移相等的从第三寄存器的基准位置的位置偏移中的装置。
示例29是一种系统,包括:处理器核;以及存储器元件,耦合至处理器核,其中存储器元件包括:微代码,用于使处理器核用于:将包括多个密钥元素的密钥向量存储在第一寄存器中;将包括多个值元素的值向量存储在第二寄存器中,其中每个值元素与密钥元素相关联;接收包括多个密钥输入元素的密钥输入向量;将每个密钥元素与每个密钥输入元素进行比较以确定密钥元素的子集,其中密钥元素的子集中的每个密钥元素与多个密钥输入元素中的至少一个匹配;以及将值元素的子集存储到第三寄存器,其中第三寄存器中的值元素的子集中的每个值元素与密钥元素的子集中的密钥元素相关联并且在与相关联的密钥输入元素从密钥输入向量的基准位置的偏移相等的从第三寄存器的基准位置的位置偏移中。
在示例30中,在示例29的系统中,处理器核进一步用于:基于与密钥输入元素匹配的密钥元素生成置换索引向量;以及使用置换索引向量和值向量来执行向量置换操作。
在示例31中,在示例30的系统中,为了生成置换索引,处理器核用于:将条目存储到置换索引向量,该条目具有与相关联的密钥输入元素从密钥输入元素的基准位置的偏移相等的从置换索引的基准位置的偏移,并且具有引用与密钥输入元素匹配的密钥元素的位置的值。
在示例31中,在示例30的系统中,为了执行向量置换操作,处理器核用于:基于置换索引向量中的条目的值来标识值元素,其中值元素从值向量的基准元素的偏移等于置换索引向量中的条目的值;以及将值元素存储到第三寄存器的与置换索引向量中的条目从置换索引向量的基准位置的偏移相等的从第三寄存器的基准位置的位置偏移中。
在示例33中,在示例30的系统中,处理器核进一步用于:响应于确定密钥输入向量的密钥输入元素不匹配密钥向量中的任何密钥元素,将掩码值提供给置换索引向量。
在示例34中,在示例29的系统中,处理器核进一步用于:使用单输入多数据寄存器并行地将每个密钥元素与每个密钥输入元素进行比较。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
在本文的描述中,阐明了众多具体细节,例如具体类型的处理器和系统配置、具体硬件结构、具体架构的和微架构的细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线级和操作等的示例,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和门控技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。
各实施例是参考特定集成电路中的(诸如计算平台或微处理器中的)实现密钥值查找指令来描述的。实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不仅限于台式计算机系统或便携式计算机,诸如,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 (25)
1.一种处理器,包括:
第一寄存器,用于存储包括多个密钥元素的密钥向量;
第二寄存器,用于存储包括与所述密钥元素相关联的多个值元素的值向量;
执行单元,耦合至所述第一寄存器和所述第二寄存器,所述执行单元用于:
将密钥输入向量的密钥输入元素与所述密钥向量的每个密钥元素进行比较;以及
响应于确定所述密钥输入元素与密钥元素匹配,生成输出向量,所述输出向量包括在与所述密钥输入元素从所述密钥输入向量的基准位置的偏移相等的从所述输出向量的基准位置的位置偏移中的与所述密钥元素相关联的值元素。
2.如权利要求1所述的处理器,其特征在于,所述执行单元进一步用于:产生引用密钥元素的置换索引向量,其中所述置换索引向量中的条目引用所述密钥元素从所述密钥向量的基准位置的偏移,并且具有与所述密钥输入元素的偏移相等的从所述置换索引向量的基准位置的偏移。
3.如权利要求2所述的处理器,其特征在于,为了生成输出向量,所述执行单元用于:
基于所述置换索引向量中的条目的值来标识所述值元素,其中所述值元素从所述值向量的基准元素的偏移等于所述置换索引向量中的条目的值;以及
将所述值元素存储到所述输出向量的与从所述置换索引向量的基准位置的偏移相等的从所述输出向量的基准位置的位置偏移中。
4.如权利要求2所述的处理器,其特征在于,所述执行单元用于:将用于不匹配任何密钥元素的第二密钥输入元素的掩码值存储到所述置换索引向量。
5.如权利要求1所述的处理器,其特征在于,所述第二寄存器按经排序的顺序存储所述多个密钥元素,其中每个密钥具有特定偏移,并且包括大于具有从所述密钥向量的基准位置的较小偏移的任何密钥的值的整数值。
6.如权利要求1所述的处理器,其特征在于,所述执行单元进一步用于:并行地将每个密钥元素与每个密钥输入元素进行比较。
7.如权利要求6所述的处理器,其特征在于,进一步包括:多个数字比较器,耦合至所述第一寄存器,其中将每个密钥元素与每个密钥输入元素进行比较包括:所述执行单元用于将所述多个密钥输入元素中的每一个与所述多个密钥元素中的每一个提供给所述多个数字比较器。
8.如权利要求7所述的处理器,其特征在于,进一步包括:第三寄存器,耦合至所述多个数字比较器,其中所述第三寄存器用于存储所述密钥输入向量。
9.一种系统,包括:
处理器核;以及
存储器元件,耦合至所述处理器核,其中所述存储器元件包括微代码,所述微代码用于使所述处理器核用于:
将包括多个密钥元素的密钥向量存储在第一寄存器中;
将包括多个值元素的值向量存储在第二寄存器中,其中每个值元素与密钥元素相关联;
接收包括多个密钥输入元素的密钥输入向量;
将每个密钥元素与每个密钥输入元素进行比较以确定密钥元素的子集,其中密钥元素的子集中的每个密钥元素与所述多个密钥输入元素中的至少一个匹配;以及
将值元素的子集存储到第三寄存器,其中所述第三寄存器中的值元素的子集中的每个值元素与密钥元素的子集中的密钥元素相关联、并且在与相关联的密钥输入元素从所述密钥输入向量的基准位置的偏移相等的从所述第三寄存器的基准位置的位置偏移中。
10.如权利要求9所述的系统,其特征在于,所述处理器核进一步用于:
基于与密钥输入元素匹配的密钥元素生成置换索引向量;以及
使用所述置换索引向量和所述值向量来执行向量置换操作。
11.如权利要求10所述的系统,其特征在于,为了生成置换索引,所述处理器核用于:将条目存储到所述置换索引向量,所述条目具有与相关联的密钥输入元素从所述密钥输入元素的基准位置的偏移相等的从所述置换索引的基准位置的偏移,并且具有引用与所述密钥输入元素匹配的密钥元素的位置的值。
12.如权利要求10所述的系统,其特征在于,为了执行向量置换操作,所述处理器用于:
基于所述置换索引向量中的条目的值来标识值元素,其中所述值元素从所述值向量的基准元素的偏移等于所述置换索引向量中的条目的值;以及
将所述值元素存储到所述第三寄存器的与所述置换索引向量中的条目从所述置换索引向量的基准位置的偏移相等的从所述第三寄存器的基准位置的位置偏移中。
13.如权利要求10所述的系统,其特征在于,所述处理器核进一步用于:响应于确定所述密钥输入向量的密钥输入元素不匹配所述密钥向量中的任何密钥元素,将掩码值提供给所述置换索引向量。
14.如权利要求9所述的系统,其特征在于,所述处理器核进一步用于:使用单输入多数据寄存器并行地将每个密钥元素与每个密钥输入元素进行比较。
15.一种方法,包括:
将包括多个密钥元素的密钥向量存储到第一处理器寄存器;
将包括多个值元素的值向量存储到第二处理器寄存器,其中每个值元素与密钥元素相关联;
接收多个密钥输入元素;
由处理器将每个密钥输入元素与每个密钥元素进行比较以确定密钥元素的子集,其中密钥元素的子集中的每个密钥元素与所述密钥输入元素中的一个匹配;
确定所述多个值元素的子集,其中值元素的子集中的每个元素与密钥元素的子集中的密钥元素中的一个相关联;以及
由所述处理器将所述多个值元素的子集中的每个元素存储在第三寄存器中的与相关联的密钥输入元素从所述密钥输入向量的基准位置的偏移相等的从所述第三寄存器的基准位置偏移的位置中。
16.如权利要求15所述的方法,其特征在于,进一步包括:由所述处理器生成置换索引向量,所述置换索引向量具有引用与密钥元素的子集中的密钥元素相关联的值元素的所述值向量中的位置的条目,其中所述置换索引向量中的每个条目具有与相关联的密钥输入元素从所述相关联的密钥输入元素的基准位置的偏移相等的从所述置换索引向量的基准位置的偏移。
17.如权利要求16所述的方法,其特征在于,存储值元素的子集的步骤包括:
由所述处理器基于所述置换索引向量中的条目的值来标识值元素;以及
将所述值元素存储到所述第三寄存器的与所述置换索引向量中的条目从所述置换索引向量的基准位置的偏移相等的从所述第三寄存器的基准位置的位置偏移中。
18.如权利要求16所述的方法,其特征在于,进一步包括:响应于确定密钥输入元素不匹配任何密钥元素,将掩码值存储到所述索引向量,其中所述索引向量中的所述掩码值的位置具有与所述密钥输入元素的偏移相等的偏移。
19.如权利要求15所述的方法,其特征在于,进一步包括:响应于确定密钥输入元素不匹配任何密钥元素,将掩码值存储到所述第三寄存器,其中所述第三寄存器中的所述掩码值的位置具有与所述密钥输入元素的偏移相等的偏移。
20.如权利要求15所述的方法,其特征在于,使用向量寄存器并行地执行将所述密钥输入向量的每个元素与所述密钥向量的每个元素进行比较。
21.一种机器可读介质,包括代码,所述代码在被执行时使机器执行如权利要求15至20中的任一项所述的方法。
22.一种设备,包括:
用于将包括多个密钥元素的密钥向量存储到第一处理器寄存器并且将包括多个值元素的值向量存储到第二处理器寄存器的装置,其中每个值元素与密钥元素相关联;
用于接收多个密钥输入元素的装置;
用于将每个密钥输入元素与每个密钥元素进行比较以确定密钥元素的子集的装置,其中密钥元素的子集中的每个密钥元素与所述密钥输入元素中的一个匹配;
用于确定所述多个值元素的子集的装置,其中值元素的子集中的每个元素与密钥元素的子集中的密钥元素中的一个相关联;以及
用于将所述多个值元素的子集中的每个元素存储在第三寄存器中的与相关联的密钥输入元素从所述密钥输入向量的基准位置的偏移相等的从所述第三寄存器的基准位置偏移的位置中的装置。
23.如权利要求22所述的设备,其特征在于,进一步包括:
用于生成置换索引向量的装置,所述置换索引向量具有引用与密钥元素的子集中的密钥元素相关联的值元素的所述值向量中的位置的条目,其中所述置换索引向量中的每个条目具有与相关联的密钥输入元素从所述相关联的密钥输入元素的基准位置的偏移相等的从所述置换索引向量的基准位置的偏移。
24.如权利要求23所述的设备,其特征在于,进一步包括:
用于基于所述置换索引向量中的条目的值来标识值元素的装置;以及
用于将所述值元素存储到所述第三寄存器的与所述置换索引向量中的条目从所述置换索引向量的基准位置的偏移相等的从所述第三寄存器的基准位置的位置偏移中的装置。
25.如权利要求22所述的设备,其特征在于,进一步包括:用于响应于确定密钥输入元素不匹配任何密钥元素将掩码值存储到所述第三寄存器的装置,其中所述第三寄存器中的所述掩码值的位置具有与所述密钥输入元素的偏移相等的偏移。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/757,995 | 2015-12-23 | ||
US14/757,995 US10409613B2 (en) | 2015-12-23 | 2015-12-23 | Processing devices to perform a key value lookup instruction |
PCT/US2016/063647 WO2017112313A1 (en) | 2015-12-23 | 2016-11-23 | Processing devices to perform a key value lookup instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108475199A true CN108475199A (zh) | 2018-08-31 |
CN108475199B CN108475199B (zh) | 2024-05-24 |
Family
ID=59087233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680075445.3A Active CN108475199B (zh) | 2015-12-23 | 2016-11-23 | 用于执行密钥值查找指令的处理设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10409613B2 (zh) |
EP (1) | EP3394737B1 (zh) |
CN (1) | CN108475199B (zh) |
TW (1) | TWI715678B (zh) |
WO (1) | WO2017112313A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068291B2 (en) * | 2016-01-22 | 2021-07-20 | Sony Interactive Entertainment Inc. | Spoofing CPUID for backwards compatibility |
US10191744B2 (en) * | 2016-07-01 | 2019-01-29 | Intel Corporation | Apparatuses, methods, and systems for element sorting of vectors |
US11048509B2 (en) * | 2018-06-05 | 2021-06-29 | Qualcomm Incorporated | Providing multi-element multi-vector (MEMV) register file access in vector-processor-based devices |
US11340904B2 (en) | 2019-05-20 | 2022-05-24 | Micron Technology, Inc. | Vector index registers |
US11327862B2 (en) | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
US11507374B2 (en) * | 2019-05-20 | 2022-11-22 | Micron Technology, Inc. | True/false vector index registers and methods of populating thereof |
CN111159288B (zh) * | 2019-12-16 | 2023-04-28 | 郑杰骞 | 链式结构数据存储、验证、实现方法、系统、装置及介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040181626A1 (en) * | 2003-03-13 | 2004-09-16 | Pickett James K. | Partial linearly tagged cache memory system |
US20070283127A1 (en) * | 2003-08-18 | 2007-12-06 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add-store across multi-processors |
CN101166086A (zh) * | 2006-09-07 | 2008-04-23 | 国际商业机器公司 | 用于检测和处理加密密钥和初始化向量的方法和系统 |
CN101267295A (zh) * | 2006-10-06 | 2008-09-17 | 美国博通公司 | 用于安全通信系统中处理信息的方法和系统 |
US20090100247A1 (en) * | 2007-10-12 | 2009-04-16 | Moyer William C | Simd permutations with extended range in a data processor |
CN102195776A (zh) * | 2006-10-06 | 2011-09-21 | 美国博通公司 | 用于安全通信系统中处理信息的方法和系统 |
US20130024654A1 (en) * | 2011-07-20 | 2013-01-24 | Gove Darryl J | Vector operations for compressing selected vector elements |
US20130166516A1 (en) * | 2011-12-23 | 2013-06-27 | Arm Limited | Apparatus and method for comparing a first vector of data elements and a second vector of data elements |
CN103827813A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
CN104011662A (zh) * | 2011-12-23 | 2014-08-27 | 英特尔公司 | 用于提供向量混合和置换功能的指令和逻辑 |
CN104011649A (zh) * | 2011-12-23 | 2014-08-27 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
CN104603746A (zh) * | 2012-09-28 | 2015-05-06 | 英特尔公司 | 由读和写掩码控制的向量移动指令 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133409B1 (en) | 2001-07-19 | 2006-11-07 | Richard Willardson | Programmable packet filtering in a prioritized chain |
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 |
US20070156685A1 (en) | 2005-12-28 | 2007-07-05 | Hiroshi Inoue | Method for sorting data using SIMD instructions |
US8364675B1 (en) * | 2010-06-30 | 2013-01-29 | Google Inc | Recursive algorithm for in-place search for an n:th element in an unsorted array |
WO2013095661A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value |
US9588762B2 (en) * | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9256631B2 (en) | 2013-07-31 | 2016-02-09 | Oracle International Corporation | Building a hash table using vectorized instructions |
-
2015
- 2015-12-23 US US14/757,995 patent/US10409613B2/en active Active
-
2016
- 2016-11-21 TW TW105138127A patent/TWI715678B/zh active
- 2016-11-23 EP EP16879797.5A patent/EP3394737B1/en active Active
- 2016-11-23 CN CN201680075445.3A patent/CN108475199B/zh active Active
- 2016-11-23 WO PCT/US2016/063647 patent/WO2017112313A1/en active Application Filing
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040181626A1 (en) * | 2003-03-13 | 2004-09-16 | Pickett James K. | Partial linearly tagged cache memory system |
US20070283127A1 (en) * | 2003-08-18 | 2007-12-06 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add-store across multi-processors |
CN101166086A (zh) * | 2006-09-07 | 2008-04-23 | 国际商业机器公司 | 用于检测和处理加密密钥和初始化向量的方法和系统 |
CN101267295A (zh) * | 2006-10-06 | 2008-09-17 | 美国博通公司 | 用于安全通信系统中处理信息的方法和系统 |
CN102195776A (zh) * | 2006-10-06 | 2011-09-21 | 美国博通公司 | 用于安全通信系统中处理信息的方法和系统 |
US20090100247A1 (en) * | 2007-10-12 | 2009-04-16 | Moyer William C | Simd permutations with extended range in a data processor |
US20130024654A1 (en) * | 2011-07-20 | 2013-01-24 | Gove Darryl J | Vector operations for compressing selected vector elements |
CN103827813A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
US20130166516A1 (en) * | 2011-12-23 | 2013-06-27 | Arm Limited | Apparatus and method for comparing a first vector of data elements and a second vector of data elements |
CN104011662A (zh) * | 2011-12-23 | 2014-08-27 | 英特尔公司 | 用于提供向量混合和置换功能的指令和逻辑 |
CN104011649A (zh) * | 2011-12-23 | 2014-08-27 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
CN104603746A (zh) * | 2012-09-28 | 2015-05-06 | 英特尔公司 | 由读和写掩码控制的向量移动指令 |
Also Published As
Publication number | Publication date |
---|---|
US20170185412A1 (en) | 2017-06-29 |
CN108475199B (zh) | 2024-05-24 |
TWI715678B (zh) | 2021-01-11 |
TW201732559A (zh) | 2017-09-16 |
WO2017112313A1 (en) | 2017-06-29 |
EP3394737B1 (en) | 2022-06-22 |
EP3394737A1 (en) | 2018-10-31 |
EP3394737A4 (en) | 2019-11-13 |
US10409613B2 (en) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
US10534613B2 (en) | Supporting learned branch predictors | |
CN106843810B (zh) | 跟踪指令的控制流程的设备、方法以及机器可读介质 | |
CN108446763A (zh) | 可变字长神经网络加速器电路 | |
CN108475199A (zh) | 用于执行密钥值查找指令的处理设备 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN104995599B (zh) | 使用硬件与软件组合的路径概况分析 | |
CN108228094A (zh) | 存储器侧高速缓存中通路的伺机增加 | |
CN108334458A (zh) | 存储器高效的末级高速缓存架构 | |
CN108351811A (zh) | 调度高度并行的应用 | |
CN108351786A (zh) | 在指令集架构中对数据进行排序并且合并经排序数据 | |
CN107209723A (zh) | 用于虚拟化的细粒度地址重新映射 | |
US10191749B2 (en) | Scatter reduction instruction | |
CN108369517A (zh) | 聚合分散指令 | |
CN108431771A (zh) | 融合乘加(fma)低功能单元 | |
CN109643283A (zh) | 管理飞地存储器页 | |
CN109791493A (zh) | 用于乱序集群化解码中的负载平衡的系统和方法 | |
CN107278295A (zh) | 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测 | |
CN108369508A (zh) | 使用处理器指令前缀的二进制转换支持 | |
US10691454B2 (en) | Conflict mask generation | |
CN105320494B (zh) | 用于操作处理的方法、系统和设备 | |
CN108475253A (zh) | 用于执行共轭置换指令的处理设备 | |
CN108292219B (zh) | 浮点(fp)加法低指令功能单元 | |
CN109643244A (zh) | 映射安全策略组寄存器 | |
TWI724066B (zh) | 分散縮減指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |