CN108475242B - 冲突掩码生成 - Google Patents
冲突掩码生成 Download PDFInfo
- Publication number
- CN108475242B CN108475242B CN201580085489.XA CN201580085489A CN108475242B CN 108475242 B CN108475242 B CN 108475242B CN 201580085489 A CN201580085489 A CN 201580085489A CN 108475242 B CN108475242 B CN 108475242B
- Authority
- CN
- China
- Prior art keywords
- bit
- bitmap
- value
- memory
- cell
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 251
- 238000000034 method Methods 0.000 claims abstract description 69
- 238000012545 processing Methods 0.000 claims abstract description 62
- 238000007667 floating Methods 0.000 description 28
- 238000003860 storage Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 11
- 238000007792 addition Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000005291 magnetic effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001413 cellular effect Effects 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
- 239000003826 tablet Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013519 translation Methods 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
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method 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
- 238000004590 computer program 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
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement 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
- 238000012856 packing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- 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
-
- 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/30018—Bit or string instructions
-
- 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/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/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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
-
- 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/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了单指令多数据(SIMD)技术。一种处理装置可以包括处理器核和存储器。所述处理器核可以生成包括多个位的第一位图,其中,所述多个位包括表示第一存储器位置的第一位。所述处理器核可以确定所述第一位图中所述第一位的值等于第二位的值。所述处理器核可以确定所述第一位图中所述第二位关于所述第一位的位置。所述处理器核可以生成包括第三位的第二位图,所述第三位指示所述第一位是所述第一位图中具有与所述第二位相同值的最后一位。
Description
背景技术
可以在微处理器系统中实施单指令多数据(SIMD)架构以便使一个指令能够并行地对若干操作数进行操作。SIMD架构利用将多个数据元素紧缩在一个寄存器或连续的存储器位置中。利用并行硬件执行,通过一个指令对多个分开的数据元素执行多个操作以便提高微处理器系统的性能。
附图说明
根据以下给出的详细描述以及本发明的各个实施例的附图,将更全面地理解本发明的各个实施例。
图1A展示了根据一个实施例的耦合到处理器以执行单指令多数据(SIMD)操作的存储器装置的图示。
图1B展示了根据一个实施例的一种将数据写入存储器中位置以用于收集-修改-分散操作的方法的图示。
图1C展示了根据一个实施例的一种将数据写入存储器中位置以用于收集-修改-分散操作的方法的另一个图示。
图2展示了根据一个实施例的实施掩码操作的SIMD指令。
图3A是框图,展示了根据一个实施例的有序流水线和寄存器重命名级、无序发布/执行流水线。
图3B是框图,展示了根据一个实施例的实施安全存储器重新分区的处理器的微架构。
图4展示了根据一个实施例的处理器的微架构的框图,所述处理器包括用于执行安全存储器重新分区的逻辑电路。
图5是根据一种实施方式的计算机系统的框图。
图6是根据另一种实施方式的计算机系统的框图。
图7是根据一种实施方式的芯片上系统的框图。
图8展示了根据一种实施方式的计算系统的框图的另一种实施方式。
图9展示了根据一种实施方式的计算系统的框图的另一种实施方式。
具体实施方式
许多处理器使用向量指令集或单指令多数据(SIMD)指令集来并行执行多个操作。处理器可以并行执行多个操作,同时将操作应用于同一条数据或同时应用于多条数据。向量化是用于将一次仅对一对操作数进行操作的标量程序转换成可以根据单个指令运行多个操作的向量程序的操作。例如,向量化是重写循环操作以执行SIMD指令的过程,在此过程中,其同时处理数组的M个元素N/M次,而不是处理数组的单个元素N次。
向量化可以包括用于执行收集操作、修改操作和分散操作的指令(如稀疏更新指令)。收集操作和分散操作可以间接访问存储器中的寄存器。例如,收集操作使用有索引的读取,并且分散操作使用有索引的写入。在一个示例中,数据元素可以位于非连续存储器位置。收集操作从存储器位置读取一组数据元素,并且将这些数据元素聚合到单个寄存器或高速缓存行中。修改操作修改所述一组数据元素中的一个或多个数据元素。分散操作将采用紧缩数据结构的数据元素写入一组非连续或随机的存储器位置。
常规地,使用SIMD指令集的处理器具有有限的性能提高,因为应用具有无规律的存储器访问模式。例如,存储需要对数据元素进行频繁且随机更新的数据表的应用不存储在连续存储器位置并且需要对数据进行重新安排以便充分利用SIMD指令集。对数据进行重新安排导致了大量开销并且限制了使用SIMD指令集的效率。
另外,向量化通常假设执行收集操作、修改操作和分散操作的单个指令将访问每个存储器位置不超过一次。在一个示例中,由图像搜索应用中的合并和排序算法(针对i的16个连续值)所使用的存储器访问模式可以被如下向量化:收集16个数组[a[i]];执行SIMD计算,如数组[a[i]]=b[i];并且向回分散新值。当a[i]的两个连续值相同时,则针对a[i]的第二个值的收集操作、修改操作和分散操作与a[i]的第一个值冲突。a[i]的第一个值与第二个值之间的冲突造成数据相关性危险。数据相关性危险是指令引用尚未完成的先前指令的结果的危险。在一个示例中,SIMD指令可能具有数据相关性危险,其中,第一操作是将A与B相加以确定C,并且第二操作是将C与D相乘以确定E。在此示例中,SIMD指令同时执行第一和第二操作并且数据相关性危险由第二操作依赖于第一操作的结果引起。数据相关性危险可以针对SIMD指令集导致不可预测结果。在另一个示例中,当两个连续值将被写入同一存储器位置(例如,存储器位置a[i])时,针对第二个值的分散操作与针对第一个值的分散操作相冲突。同时将多个值写入同一存储器位置可能导致不可预测回答,例如,通道冲突。
本文中描述的实施例通过使用掩码(VPCONFLICTMSK)操作消除针对SIMD指令集的数据相关性危险来解决上文提及的缺点。VPCONFLICTMSK操作使用分散操作的偏移向量来消除对同一存储器位置中的数据寄存器的冲突使用。可以使用VPCONFLICTMSK操作来生成写掩码,如在后续段落中更详细讨论的。掩码用于识别将通过分散操作写入的值,所述值是通道冲突的最后一次出现或者是针对没有冲突的通道的值。采用VPCONFLICTMSK操作的SIMD指令可以避免冲突通道引起写入相关性数据危险。
图1A展示了根据一个实施例的耦合到处理器102以执行单指令多数据(SIMD)操作的存储器装置100的图示。处理器102可以包括存储器接口106、寄存器103和高速缓存105。存储器接口106可以耦合到寄存器103和高速缓存105。
存储器接口106可以使数据在寄存器103或高速缓存105(用于临时存储)与存储器装置100(用于长期存储)之间移动。在一个示例中,处理器可以使用寄存器103来对在由处理器102执行的指令或过程期间使用的数据进行存储。处理器可以使用存储器接口106来将如指令或过程的结果等数据写入存储器装置100以供将来访问。在另一个示例中,寄存器103可以包括SIMD寄存器104。SIMD寄存器104可以对在SIMD操作期间使用的数据进行存储。例如,在收集-修改-分散操作期间,处理器102可以使用存储器接口106从存储器装置100收集数据并且将待在SIMD操作(收集操作)期间使用的数据存储在SIMD寄存器104中,如在后续段落中更详细讨论的。处理器102可以使用在如加法或乘法运算等SIMD操作(修改操作)期间存储在SIMD寄存器104处的数据。当SIMD操作完成时,处理器102可以使用存储器接口106将SIMD操作的结果写回到存储器装置100(分散操作)。在另一个示例中,存储器接口106可以将SIMD操作的结果存储在高速缓存105中用于处理器102的其他操作。
图1B展示了根据一个实施例的一种将数据写入存储器中位置以用于收集-修改-分散操作的方法108的图示。方法100可以至少部分地由处理器100(图1A)或处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如,由处理装置执行的指令)、固件或其组合。
参照图1B,方法108开始于生成第一位图(110)。在一个实施例中,所述第一位图可以包括多个位。在另一个实施例中,所述多个位可以包括位于所述第一位图中的第一位置处的第一位,其中,所述第一位表示第一存储器位置。所述方法可以包括:确定所述第一位图中所述第一位的值等于第二位的值,其中,所述第二位的位置在所述第一位置之前(112)。所述方法可以包括:生成包括第三位的第二位图,所述第三位指示所述第一位是所述第一位图中针对此值的最后一位(114)。
图1C展示了根据一个实施例的一种将数据写入存储器中位置以用于收集-修改-分散操作的方法120的另一个图示。方法120可以至少部分地由处理器100(图1A)或处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如,由处理装置执行的指令)、固件或其组合。
参照图1C,方法120开始于由处理器生成第一位图(122)。在一个实施例中,所述第一位图可以包括位于所述第一位图中的第一位置处的第一位,其中,所述第一位表示第一存储器位置。在另一个实施例中,所述第一位图可以包括位于所述第一位图中的第二位置处的第二位,其中,所述第二位表示第二存储器位置。在另一个实施例中,所述第一位图的所述第一位置和所述第二位置呈相继顺序。
所述方法可以包括:确定所述第一位图中所述第二位的所述值等于所述第一位的所述值(124)。所述方法可以包括:生成包括第三位的第二位图,所述第三位表示所述第一位图中所述第一位的位置(126)。所述方法可以包括:确定所述第二位是所述第一位图中针对此值的最后一位(128)。所述方法可以包括:生成包括第四位的第三位图,所述第四位指示所述第二位是所述第一位图中针对此值的最后一位(130)。所述方法可以包括:将与所述第二位相关联的数据写入所述第二存储器位置(132)。
在一个实施例中,所述第一位图可以包括位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置。方法120可以包括:确定所述第五位的所述值不等于所述第二位的值;以及将与所述第五位相关联的数据写入所述第二存储器位置。
在另一个实施例中,所述方法可以包括:确定所述第五位的所述值等于所述第二位的所述值;以及生成包括所述第三位的所述第二位图,所述第三位表示所述第一位图中所述第一位和所述第五位的位置。所述方法还可以包括:确定所述第二位是所述第一位图中针对此值的最后一位;以及生成包括第四位的第三位图,所述第四位指示所述第二位是所述第一位图中针对此值的最后一位。
在另一个实施例中,所述第一位图可以包括位于所述第一位图中的第三位置处的第五位以及位于所述第一位图中的第四位置处的第六位,其中,所述第五位表示第三存储器位置,所述第六位表示第四存储器位置。在一个示例中,方法120可以包括:确定所述第一位图中所述第五位的所述值等于所述第六位的所述值;以及生成包括第七位的所述第二位图,所述第七位表示所述第一位图中所述第六位的位置。所述方法还可以包括:确定所述第六位是所述第一位图中针对此值的最后一位;以及生成包括第八位的第三位图,所述第八位指示所述第六位是所述第一位图中针对此值的最后一位。所述方法可以包括:将与所述第六位相关联的数据写入所述第四存储器位置。
在一个示例中,所述第一位图可以包括:位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置;位于所述第一位图中的第四位置处的第六位,其中,所述第六位表示第四存储器位置;以及位于所述第一位图中的第五位置处的第七位,其中,所述第七位表示第五存储器位置。
在一个实施例中,方法120可以包括:确定所述第一位图中所述第五位的所述值等于所述第六位的所述值。所述方法还可以包括:确定所述第七位的值不等于所述第一位图中任何其他位。所述方法可以包括:生成包括第八位的第二位图,所述第八位表示所述第一位图中所述第六位的位置;以及确定所述第六位是所述第一位图中针对此值的最后一位。所述方法可以包括:生成第三位图,所述第三位图包括第九位和第十位,所述第九位指示所述第六位是所述第一位图中针对此值的最后一位,所述第十位指示所述第一位图中没有其他位等于所述第七位。所述方法可以包括:将与所述第六位相关联的数据写入所述第四存储器位置并且将与所述第七位相关联的数据写入所述第五存储器位置。
在另一个实施例中,方法120可以包括:确定所述第一位图中所述第五位的所述值等于所述第七位的所述值,并且所述第一位图中所述第六位的所述值等于所述第七位的所述值。所述方法还可以包括:生成包括第八位的第二位图,所述第八位表示所述第一位图中所述第五位和所述第六位的位置;以及确定所述第七位是所述第一位图中针对此值的最后一位。所述方法可以包括:生成包括第九位的第三位图,所述第九位指示所述第七位是所述第一位图中针对此值的最后一位。所述方法可以包括:将与所述第七位相关联的数据写入所述第五存储器位置。
图2展示了根据一个实施例的实施掩码操作的SIMD指令。SIMD指令是图1A或图1B中描述的方法的实施方式的示例。在一个示例中,SIMD指令可以对具有8个存储器位置的存储器寄存器进行操作。SIMD指令可以包括用于生成位图的位图生成操作,其中,所述位图包括指示哪些单元具有冲突存储器位置的位向量。
行210是存储指示存储器中位置(例如,存储器位置)的值的具有单元211到218的数组。单元211中的值表示存储器中的位置0,单元212中的值表示存储器中的位置1,单元213中的值表示存储器中的位置1,单元214中的值表示存储器中的位置0,单元215中的值表示存储器中的位置3,单元216中的值表示存储器中的位置3,单元216中的值表示存储器中的位置3,单元217中的值表示存储器中的位置4,单元218中的值表示存储器中的位置3。具有相同存储器位置指定的单元互相冲突。例如,单元211与单元214冲突。单元212与单元213冲突。单元215、单元216和单元218互相冲突。单元217不与行210中的任何其他单元冲突。
当位图生成操作已经生成指示哪些单元具有冲突存储器位置的位向量时,可以执行冲突操作(VPCONFLICT)以输出指示与当前单元之前的单元相关联的一个或多个存储器位置何时与同当前单元相关联的存储器位置冲突的位值串。例如,处理器可以执行VPCONFLICT操作,其中,VPCONFLICT操作可以将第一向量(如高速缓存中的寄存器位置、或者存储器位置)用作源,并且将对源的每个元素与先前元素进行比较的结果写入向量目的地。向量目的地中的每个元素包含与将源中的当前元素同先前元素所作的比较相对应的位范围,并且当相应比较示出冲突时,将向量目的地中的每个位置位。在当前单元的存储器位置与先前单元的存储器位置相同时,存储器位置发生冲突。在另一个示例中,处理器可以执行VPCONFLICT操作以便通过将与当前单元相关联的存储器位置同与先前单元相关联的存储器位置进行比较来确定当前单元的存储器位置何时与先前单元的存储器位置冲突。
当对与当前单元相关联的存储器位置的相应比较示出同与先前单元相关联的存储器位置的冲突时,将串中的每一位置位。例如,行220的单元221到228中的值是位值串。在一个实施例中,串中的每个位值指示与在当前单元之前的单元相关联的一个或多个存储器位置何时同与当前单元相关联的存储器位置冲突。在一个实施例中,位值等于1指示单元存储有同与当前单元相关联的存储器位置冲突的存储器位置。在另一个实施例中,0指示单元存储有同与当前单元相关联的存储器位置不冲突的存储器位置。在另一个实施例中,单元的位值串中的每个位值的位置指示在数组210中冲突单元的位置。
例如,单元221与单元211互相关,并且指示在单元211之前的任何单元是否与单元211冲突。其中,单元211是数组210中的第一个单元,在单元211之前没有单元,因此不存在单元211之前的冲突单元。在一个实施例中,单元221中的位串值是0。在另一个实施例中,单元221中的位串值为空。
单元222与单元212互相关,并且指示在单元212之前的任何单元是否与单元212冲突。单元211指定存储器中的位置0,并且单元212指定存储器中的位置1。先前单元211与当前单元212不冲突(例如,位值为0)。因此,单元222中的位串值是0。
单元223与单元213互相关,并且指示在单元213之前的任何单元是否与单元213冲突。单元211指定存储器中的位置0,单元212指定存储器中的位置1,并且单元213指定存储器中的位置1。先前单元212与当前单元213冲突(例如,位值为1),并且先前单元211与当前单元213不冲突(例如,位值为0)。因此,单元223中的位串值是10。
单元224与单元214互相关,并且指示在单元214之前的任何单元是否与单元214冲突。单元211指定存储器中的位置0,单元212指定存储器中的位置1,单元213指定存储器中的位置1,并且单元214指定存储器中的位置0。先前单元213与当前单元214不冲突(例如,位值为0),单元212与当前单元214不冲突(例如,位值为0),并且单元211与当前单元214冲突(例如,位值为1)。因此,单元224中的位串值是001。
单元225与单元215互相关,并且指示在单元215之前的任何单元是否与单元215冲突。单元211指定存储器中的位置0,单元212指定存储器中的位置1,单元213指定存储器中的位置1,单元214指定存储器中的位置0,并且单元215指定存储器中的位置3。先前单元214与当前单元215不冲突(例如,位值为0),单元213与当前单元215不冲突(例如,位值为0),单元212与当前单元215不冲突(例如,位值为0),并且单元211与当前单元215不冲突(例如,位值为0)。因此,单元225中的位串值是0000。
单元226与单元216互相关,并且指示在单元216之前的任何单元是否与单元216冲突。单元211指定存储器中的位置0,单元212指定存储器中的位置1,单元213指定存储器中的位置1,单元214指定存储器中的位置0,单元215指定存储器中的位置3,并且单元216指定存储器中的位置3。先前单元215与当前单元216冲突(例如,位值为1),单元214与当前单元216不冲突(例如,位值为0),单元213与当前单元216不冲突(例如,位值为0),单元212与当前单元216不冲突(例如,位值为0),并且单元211与当前单元216不冲突。因此,单元226中的位串值是10000。
单元227与单元217互相关,并且指示在单元217之前的任何单元是否与单元217冲突。单元211指定存储器中的位置0,单元212指定存储器中的位置1,单元213指定存储器中的位置1,单元214指定存储器中的位置0,单元215指定存储器中的位置3,单元216指定存储器中的位置3,并且单元217指定存储器中的位置4。先前单元216与当前单元217不冲突(例如,位值为0),单元215与当前单元217不冲突(例如,位值为0),单元214与当前单元217不冲突(例如,位值为0),单元213与当前单元217不冲突(例如,位值为0),单元212与当前单元217不冲突,并且单元211与当前单元217不冲突。因此,单元227中的位串值是00000。
单元228与单元218互相关,并且指示在单元218之前的任何单元是否与单元218冲突。单元211指定存储器中的位置0,单元212指定存储器中的位置1,单元213指定存储器中的位置1,单元214指定存储器中的位置0,单元215指定存储器中的位置3,单元216指定存储器中的位置3,单元217指定存储器中的位置4,并且单元218指定存储器中的位置3。先前单元217与当前单元218不冲突(例如,位值为0),单元216与当前单元218冲突(例如,位值为1),单元215与当前单元218冲突(例如,位值为1),单元214与当前单元218不冲突(例如,位值为0),单元213与当前单元218不冲突(例如,位值为0),单元212与当前单元218不冲突(例如,位值为0),并且单元211与当前单元218不冲突(例如,位值为0)。因此,单元228中的位串值是0110000。
当已经针对每个单元221到228生成位串时,可以执行VPCONFLICT操作以便生成掩码来指示单元存储有要在分散操作中写入存储器的值。在一个实施例中,位值1指示存储在相应单元211到218中的值将被写入存储器中,并且位值0指示存储在相应单元211到218中的值将不被写入存储器中。
在一个示例中,行220的单元221到228中的值存储位值串。在一个实施例中,单元中的每个位值指示行210中的哪些单元211到218包含最后存储器位置。在一个实施例中,不具有冲突的单元以及冲突存储器位置的最后单元具有从中置位的掩码位,所述掩码位指示将值写入行210的相关联的单元211到218中。在一个实施例中,0位指示单元不存储存储器位置的最后值,并且1位指示单元存储存储器位置的最后值。例如,单元231包括指示单元211不存储存储器位置0的最后连续值的位值0。单元232包括指示单元242不存储存储器位置1的最后连续值的位值0。单元233包括指示单元243存储存储器位置1的最后连续值的位值1,例如,针对存储器位置1的单元211到218的存储器位置的最后值。单元234包括指示单元234存储存储器位置0的最后连续值的位值1,例如,针对存储器位置0的单元211到218的存储器位置的最后值。单元235包括指示单元215不存储存储器位置3的最后值的位值0。单元236包括指示单元216不存储存储器位置3的最后值的位值0。单元237包括指示单元217存储存储器位置4的最后连续值的位值1,例如,针对存储器位置4的单元211到218的存储器位置的最后值。单元238包括指示单元218存储存储器位置3的最后连续值的位值1,例如,针对存储器位置3的单元211到218的存储器位置的最后值。
以下伪代码展示了示例VPCONFLICTMSK指令。
KL可以是位的长度或数量,所述长度或数量指示位是位图中针对一值的最后一位或者位与其他位不冲突。VL可以是向量长度,如数组的长度。例如,等于128的VL针对数组长度4,并且等于256的VL针对数组长度8。i可以是针对数组中的当前单元的标志符。MaskBit(j)OR*no writemask*指示掩码位是针对写掩码还是无写掩码,如在后续段落中更详细讨论的。
软件程序可以执行分散操作以便将单元211到218中的值写入存储器,这些值与存储有值为1的掩码位的单元231到238相关联。例如,单元231具有值为0的掩码位,因此存储在单元211处的值不被写入存储器位置0。单元232具有值为0的掩码位,因此存储在单元212处的值不被写入存储器位置1。单元233具有值为1的掩码位,因此存储在单元213处的值不被写入存储器位置1。单元234具有值为1的掩码位,因此存储在单元214处的值不被写入存储器位置0。单元235具有值为0的掩码位,因此存储在单元215处的值不被写入存储器位置3。单元236具有值为0的掩码位,因此存储在单元216处的值不被写入存储器位置3。单元237具有值为1的掩码位,因此存储在单元216处的值不被写入存储器位置4。单元238具有值为1的掩码位,因此存储在单元217处的值不被写入存储器位置3。
图3A是框图,展示了根据本公开的一些实施例的由处理器300实施的有序流水线和寄存器重命名级、乱序发布/执行流水线的框图。图3A中的实线框展示了有序流水线,而虚线框展示了寄存器重命名、乱序发布/执行流水线。具体地,根据本公开的至少一个实施例,处理器300描绘了待包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑。
在图3A中,流水线包括取出级302、长度解码级304、解码级306、分配级308、重命名级310、调度(也称为分派或发布)级312、寄存器读取/存储器读取级314、执行级316、回写/存储器写入级318、异常处置级322、以及提交级324。在一些实施例中,级302到324的排序可以与所图示的不同,并且并不局限于在图3A中示出的特定排序。
图3B是框图,展示了根据一个实施例的实施SNC之间的动态高速缓存散列变化的处理器300的微架构。处理器300包括耦合到执行引擎单元350的前端单元330,并且所述执行引擎单元和前端单元都耦合到存储器单元370。处理器300可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又一选项,处理器300可以包括专用核,诸如,例如,网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器300可以是多核处理器,或可以是多处理器系统的一部分。在处理器300中可以实施页添加和内容复制的实施例。
前端单元330包括耦合到指令高速缓存单元334的分支预测单元332,所述指令高速缓存单元耦合到指令转换后备缓冲器(TLB)336,所述指令转换后备缓冲器耦合到指令取出单元338,所述指令取出单元耦合到解码单元340。解码单元340(也称为解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微运算、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码器340可以使用各种不同的机制来实施。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元334进一步耦合到存储器单元370。解码单元340耦合到执行引擎单元350中的重命名/分配器单元352。
执行引擎单元350包括耦合到引退单元354的重命名/分配器单元352以及一组一个或多个调度器单元356。(多个)调度器单元356表示任何数量的不同调度器,包括保留站(RS)、中央指令窗等。(多个)调度器单元356耦合到(多个)物理寄存器堆单元358。(多个)物理寄存器堆单元358中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等、状态(例如,作为有待执行的下一指令的地址的指令指针)等。(多个)物理寄存器堆单元358与引退单元354重叠以展示可以实施寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来堆、(多个)历史缓冲器、以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。
通常,架构寄存器从处理器的外部或从程序员的角度来看是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储和提供如本文所描述的数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元354和(多个)物理寄存器堆单元358被耦合到(多个)执行集群360。(多个)执行集群360包括一组一个或多个执行单元362以及一组一个或多个存储器访问单元364。执行单元362可以执行各种运算(例如,移位、加法、减法、乘法)并对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
虽然一些实施例可以包括专用于具体功能或功能集合的多个执行单元,但是其他实施例可以只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元356、(多个)物理寄存器堆单元358、以及(多个)执行集群360被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实施了其中只有所述流水线的执行集群具有(多个)存储器访问单元364的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是乱序发布/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元364耦合到存储器单元370,举几个示例,所述存储器单元可以包括数据预取器380、数据TLB单元372、数据高速缓存单元(DCU)374、以及2级(L2)高速缓存单元376。在一些实施例中,DCU374也被称为第一级数据高速缓存(L1高速缓存)。DCU374可以处置多个未解决的高速缓存未命中并且继续为进入的存储和加载提供服务。DCU还支持保持高速缓存一致性。数据TLB单元372是用于通过映射虚拟和物理地址空间来提高虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元364可以包括各自耦合到存储器单元370中的数据TLB单元372的加载单元、存储地址单元、以及存储数据单元。L2高速缓存单元376可以耦合到一个或多个其他级的高速缓存并且最终耦合到主存储器。
在一个实施例中,数据预取器380通过自动预测程序将要消耗哪个数据来推测性地将数据加载/预取到DCU 374。预取可以指在处理器实际需求数据之前将存储在存储器层级的一个存储器位置(例如,位置)(例如,较低级高速缓存或存储器)中的数据传送到更靠近(例如,得出较低访问等待时间)处理器的较高级存储器位置。更具体地,预取可以指在处理器发出对正在返回的具体数据的需求之前将数据从较低级的高速缓存/存储器中的一个提前检索到数据高速缓存和/或预取缓冲器。
处理器300可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,比如NEON)。
应当理解,核可以支持多线程化(执行并行的两组或更多组操作或线程)),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如超线程化技术中的同步多线程化)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。然而处理器的所示实施例还包括分开的指令和数据高速缓存单元和共享的L2高速缓存单元,但替代性实施例可以具有用于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括在核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
图4展示了根据一个实施例的处理器400的微架构的框图,所述处理器包括用于执行SNC之间的动态高速缓存散列变化的逻辑电路。在一些实施例中,可以实施根据一个实施例的指令来对具有字节、字、双字、四字等大小以及如单精度和双精度整数和浮点数据类型等数据类型的数据元素进行操作。在一个实施例中,有序前端401是处理器400的取出待执行的指令并将其准备于之后在处理器流水线中使用的那一部分。在处理器400中可以实施页添加和内容复制的实施例。
前端401可以包括若干个单元。在一个实施例中,指令预取器416从存储器取出指令并将其馈送给指令解码器418,所述指令解码器进而对这些指令进行解码或解释。例如,在一个实施例中,解码器将接收到的指令解码成机器可以执行的称为“微指令”或“微运算”(也称为微op或uop)的一个或多个运算。在其他实施例中,根据一个实施例,解码器将指令解析为运算码和相应的数据以及被微架构用于执行运算的控制字段。在一个实施例中,跟踪高速缓存430采用经解码的uop并且将其汇编为程序有序序列或在uop队列434中跟踪以用于执行。当跟踪高速缓存430遇到复杂指令时,微代码ROM 432提供完成运算所需的uops。
一些指令被转换为单个微op,而其他指令需要若干个微op来完成完整的运算。在一个实施例中,如果完成指令需要多于四个微op,则解码器418访问微代码ROM 432以执行指令。对于一个实施例,指令可以被解码成用于在指令解码器418处理的少量的微op。在另一实施例中,如果需要多个微op来完成运算,则指令可以存储在微代码ROM 432中。跟踪高速缓存430引用入口点可编程逻辑阵列(PLA),以确定用于从微代码ROM 432读取微代码序列的正确微指令指针以便根据一个实施例完成一个或多个指令。在微代码ROM 432完成用于指令的排序微op之后,机器的前端401从跟踪高速缓存430重新取出微op。
乱序执行引擎403是指令准备执行的地方。乱序执行逻辑具有多个缓冲器,所述多个缓冲器用于使指令流平滑并重新排序以在指令顺着流水线进行并被安排执行时优化性能。分配器逻辑分配每个uop执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在以下指令调度器前面,分配器还为两个uop队列(一个用于存储器运算,一个用于无存储器运算)之一中的每个uop分配条目:存储器调度器、快速调度器402、慢速/通用浮点调度器404和简单浮点调度器406。uop调度器402、404、406基于其依赖输入寄存器操作数源的准备状态以及uop完成其运算所需的执行资源的可用性来确定这些uop何时准备好执行。一个实施例的快速调度器402可以在主时钟周期的每一半上进行调度,而其他调度器可以仅在每个主处理器时钟周期调度一次。调度器仲裁分派端口以调度uop用于执行。
寄存器堆408、410位于执行块411中的调度器402、404、406与执行单元412、414、416、418、420、422、424之间。存在分开的寄存器堆408、410,分别用于整数运算和浮点运算。一个实施例的每个寄存器堆408、410还包括旁路网络,所述旁路网络可以绕过或转发尚未被写入到寄存器堆中的已完成结果到新的依赖uop。整数寄存器堆408和浮点寄存器堆410还能够与其他寄存器堆进行数据通信。对于一个实施例,整数寄存器堆408被分成两个单独的寄存器堆,一个寄存器堆用于数据的低顺序32位,第二寄存器堆用于数据的高顺序32位。一个实施例的浮点寄存器堆410具有128位宽的条目,因为浮点指令通常具有宽度为从64位至128位的操作数。
执行块411包含实际上在其中执行指令的执行单元412、414、416、418、420、422、424。这个部分包括寄存器堆408、410,所述寄存器堆存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器400由多个执行单元组成:地址生成单元(AGU)412、AGU414、快速ALU 416、快速ALU418、慢速ALU 420、浮点ALU 422、浮点移动单元424。对于一个实施例,浮点执行块412、414执行浮点、MMX、SIMD和SSE、或其他运算。一个实施例的浮点ALU412包括用于执行除法、平方根和余数微op的64位乘64位浮点除法器。对于本公开的实施例,涉及浮点值的指令可以用浮点硬件来处置。
在一个实施例中,ALU运算前往高速ALU执行单元416、418。一个实施例的快速ALU416、418可以以半个时钟周期的有效等待时间执行快速运算。对于一个实施例,大多数复杂整数运算前往慢速ALU 410,因为慢速ALU 410包括用于长等待时间类型的运算的整数执行硬件,诸如乘法、移位、标志逻辑、以及分支处理。存储器加载/存储操作由AGU 412、414执行。对于一个实施例,在对64位数据操作数执行整数运算的上下文中描述了整数ALU416、418、420。在替代性实施例中,ALU 416、418、420可以被实施为支持包括16、32、128、256等的各种数据位。类似地,浮点单元412、414可以被实施为支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点单元412、414可以与SIMD和多媒体指令结合地对128位宽度的紧缩数据操作数进行运算。
在一个实施例中,uop调度器402、404、406在父加载完成执行之前分派不独立运算。在处理器400中推测性地调度和执行uop时,处理器400还包括用于处置存储器未命中的逻辑。如果数据高速缓存中的数据加载未命中,则可能存在流水线中飞行的已经因暂时不正确数据而离开调度器的不独立运算。重放机制跟踪并重新执行使用不正确数据的指令。仅仅不独立运算需要被重放,并且允许完成独立运算。处理器的一个实施例的调度器和重放机制还被设计成捕获用于文本串比较操作的指令序列。
处理器400还包括根据一个实施例的用于实施SNC之间的动态高速缓存散列变化的逻辑。在一个实施例中,处理器400的执行块411可以包括微控制器(MCU),所述微控制器用于执行根据本文描述的SNC之间的动态高速缓存散列变化。
术语“寄存器”可以指代被用作指令的一部分以标识操作数的机载处理器存储位置。换言之,寄存器可以是从处理器外部(从程序员的角度来看)可用的寄存器。然而,实施例的寄存器不应限于特定类型的电路。而是,实施例的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路系统使用任何数量的不同技术来实施,如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文的讨论,寄存器被理解为设计成保持紧缩数据的数据寄存器,如用来自加利福尼亚州圣克拉拉的英特尔公司的MMX技术实现的微处理器中的64位宽MMXTM寄存器(在某些情况下也称为“mm”寄存器)。以整数和浮点形式可用的这些MMX寄存器可以用伴随SIMD指令和SSE指令的紧缩数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高版本(通常称为“SSEx”)技术有关的128位宽XMM寄存器也可以用于保持这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要对这两种数据类型进行区分。在一个实施例中,整数和浮点包含在同一寄存器堆或不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或同一寄存器中。
实施例可以采用许多不同的系统类型来实施。现在参考图5,示出了根据实施方式的多处理器系统500的框图。如图5中所示出的,多处理器系统500是点对点互连系统,并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。如图5中所示出的,尽管处理器570和580中可能潜在地存在更多的核,但是所述处理器的每个处理器可以是包括第一处理器核和第二处理器核(即,处理器核574a和574b以及处理器核584a和584b)的多核处理器。处理器各自可以包括根据本公开的实施例的混合型写入模式逻辑。在处理器570、处理器580或二者中可以实施页添加和内容复制的实施例。
虽然以两个处理器570、580示出,但应当理解,本公开的范围不限于此。在其他实施方式中,在给定处理器中可以存在一个或多个附加处理器。
处理器570和580被示出为分别包括集成存储器控制器单元572和582。处理器570还包括作为其总线控制器单元的一部分的点对点(P-P)接口576和588;类似地,第二处理器580包括P-P接口586和588。处理器570、580可以使用点对点(P-P)接口电路578、588经由P-P接口550交换信息。如图5中所示出的,IMC 572和582将处理器耦合到对应存储器、即存储器532和存储器534上,所述存储器可以是主存储器的本地附接到对应处理器上的部分。
处理器570、580可以各自使用点对点接口电路576、594、586、598经由单独的P-P接口552、554来与芯片组590交换信息。芯片组590还可以经由高性能图形接口539与高性能图形电路538交换信息。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的局部高速缓存信息可以被存储在所述共享高速缓存中。
芯片组590可以经由接口596耦合到第一总线516。在一个实施例中,第一总线516可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一种第三代I/O互连总线的总线,但是本公开的范围不限于此。
如图5中所示出的,不同I/O装置514可以连同总线桥接器518耦合到第一总线516,所述总线桥接器可以将第一总线516耦合到第二总线520。在一个实施例中,第二总线520可以是低引脚数(LPC)总线。在一个实施例中,各个装置可以耦合到第二总线520,所述装置包括例如键盘和/或鼠标522、通信装置527、以及可以包括指令/代码数据530的存储单元528(如磁盘驱动器或者其他大容量存储装置)。进一步地,音频I/O 524可以耦合到第二总线520。注意到,其他架构是可能的。例如,替代图5的点对点架构,系统可以实施多点分支总线或其他这样的架构。
现在参照图6,示出了根据本发明实施例的第三系统600的框图。图5和图6中的相同元件具有相同的附图标记,并且已经从图5中省略了图5的某些方面以避免使图6的其他方面模糊。
图6展示了处理器670、680可以分别包括集成存储器和I/O控制逻辑(“CL”)672和682。对于至少一个实施例,CL 672、682可包括诸如本文描述的集成存储器控制器单元。另外,CL 672、682还可包括I/O控制逻辑。图6展示了存储器632、634耦合到CL 672、682,并且I/O装置614也耦合到控制逻辑672、682。传统I/O装置615耦合到芯片组690。在处理器670、处理器680或二者中可以实施页添加和内容复制的实施例。
图7是可以包括一个或多个核702的示例性芯片上系统(SoC)700。本领域已知的用于膝上型计算机、台式计算机,手持PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其他电子装置的其他系统设计和配置也是合适的。一般,能够结合本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子装置通常是合适的。
图7是根据本公开的实施例的SoC 700的框图。虚线框是关于更先进的SoC的特征。在图7中,(多个)互连单元702被耦合到:应用处理器717,包括一组一个或多个核702A-N以及(多个)共享高速缓存单元706;系统代理单元710;(多个)总线控制器单元716;(多个)集成存储器控制器单元714;一组一个或多个媒体处理器720,所述媒体处理器可以包括集成图形逻辑708、用于提供静物和/或视频相机功能的图像处理器724、用于提供硬件音频加速的音频处理器726、以及用于提供视频编码/解码加速的视频处理器728;静态随机存取存储器(SRAM)单元730;直接存储器访问(DMA)单元732;以及显示单元740,用于耦合到一个或多个外部显示器。在SOC 700中可以实施页添加和内容复制的实施例。
接下来转到图8,描绘了根据本公开实施例的芯片上系统(SoC)设计的实施例。作为说明性示例,SoC 800包括在用户设备(UE)中。在一个实施例中,UE是指由终端用户用于通信的任何装置,如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信装置。UE可连接到基站或节点,其本质上对应于GSM网络中的移动台(MS)。在SoC 800中可以实施页添加和内容复制的实施例。
在此,SoC 800包括2个核——806和807。类似于上面讨论的,核806和807可以符合指令集架构,如具有架构核TM的处理器、超微半导体有限公司(AMD)处理器、基于MIPS的处理器、基于ARM设计的处理器、或其客户,以及它们的授权方或兼容方。核806和807被耦合到高速缓存控制808,所述高速缓存控制与总线接口单元809和L2高速缓存810相关联,以与系统800的其他部分进行通信。互连811包括可以实施所描述的本公开的一个或多个方面的芯片上互连,如IOSF、AMBA或上文讨论的其他互连。
互连811向其他组件提供通信通道,如用于与SIM卡接口连接的用户身份模块(SIM)830、用于保持引导代码以便由核806和807执行对SoC800初始化和引导的引导ROM835、用于与外部存储器(例如,DRAM 860)接口连接的SDRAM控制器840、用于与非易失性存储器(例如,闪存865)接口连接的闪存控制器845、用于与外围装置接口连接的外围控制850(例如,串行外围接口)、用于显示和接收输入(例如,触摸使能的输入)的视频编解码器820和视频接口825、用于执行图形相关的计算的GPU 815等。这些接口中的任何接口都可以合并本文描述的实施例的各方面。
此外,系统展示了用于通信的外围装置,如蓝牙模块870、3G调制解调器875、GPS880、以及Wi-Fi 885。注意,如上所述,UE包括通信无线电。因此,这些外围通信模块可以不全都被包括。然而,在UE中,应该包括用于外部通信的某种形式的无线电。
图9展示了采用计算系统900的示例形式的在其中可以执行指令集的机器的图解表示,所述指令用于使所述机器执行本文所讨论的方法中的任何一种或多种。在替代性实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网、或因特网中的其他机器。机器可以在客户端-服务器网络环境下以服务器或客户端装置的身份操作,或在点对点(或分布式)网络环境中作为对等机操作。所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络电器、服务器、网络路由器、交换机或桥接器、或能够(相继或以其他方式)执行指定要由那个机器采取的动作的指令集的任何机器。进一步地,虽然仅示出了单个机器,但术语“机器”也应视为包括机器的任何集合,所述机器个别地或联合地执行一个(或多个)指令集以便执行本文中所讨论的方法中的任何一种或多种方法。在计算系统900中可以实施页添加和内容复制的实施例。
计算系统900包含处理装置902、主存储器904(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器906(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储装置918,它们经由总线930互相通信。
处理装置902表示一个或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其他指令集的处理器、或实施指令集组合的处理器。处理装置902还可以是一个或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理装置902可以包括一个或多个处理器核。处理装置902被配置成执行处理逻辑926以便执行本文所讨论的操作。在一个实施例中,处理装置902可以是计算系统的一部分。可替代地,计算系统900可以包括如本文所描述的其他组件。应当理解,核可以支持多线程化(执行并行的两组或更多组操作或线程)),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如超线程化技术中的同步多线程化)。
计算系统900可以进一步包括通信地耦合到网络920的网络接口装置908。计算系统900还可以包括视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置910(例如,键盘)、光标控制装置914(例如,鼠标)、信号发生装置916(例如,扬声器)或其他外围装置。此外,计算系统900可以包括图形处理单元922、视频处理单元928、以及音频处理单元932。在另一个实施例中,计算系统900可以包括芯片组(未示出),其指的是一组集成电路或芯片,它们设计成与处理装置902一起工作,并控制处理装置902与外部装置之间的通信。例如,芯片组可以是主板上将处理装置902链接到诸如主存储器904和图形控制器等超高速装置以及将处理装置902链接到诸如USB、PCI或ISA总线等较低速外围总线或外围装置的一组芯片。
数据存储装置918可以包括计算机可读存储介质924,在所述存储介质上存储了使本文所描述的功能的方法中的任何一种或多种具体化的软件926。软件926还可以在由计算系统900对其执行期间全部或至少部分地驻留在主存储器904内作为指令926和/或在处理装置902内作为处理逻辑926;主存储器904和处理装置902也构成计算机可读存储介质。
计算机可读存储介质924还可以用于利用以上关于图1所描述的处理模块902和/或包含调用上述应用的方法的软件库来存储指令926。虽然计算机可读存储介质924在示例性实施例中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应视为包括能够存储、编码或承载用于由机器执行的指令集并且使机器执行本实施例的方法中的任何一种或多种的任何介质。术语“计算机可读存储介质”应当相应地被视为包括但不限于固态存储器、以及光学介质和磁性介质。
下面的示例涉及进一步实施例。
示例1是一种处理装置,包括:1)寄存器,用于存储数据;以及2)处理器核,耦合到所述寄存器,其中,所述处理器核用于:a)生成第一位图,所述第一位图包括:i)位于所述第一位图中的第一位置处的第一位,其中,所述第一位表示存储器装置中的第一存储器位置;以及ii)位于所述第一位图中的第二位置处的第二位,其中:所述第二位表示所述存储器装置中的第二存储器位置,并且所述第一位图中的所述第一位置和所述第二位置呈相继顺序;b)确定所述第一位图中所述第二位的值等于所述第一位的值;c)生成包括第三位的第二位图,所述第三位表示所述第一位图中所述第一位的位置;d)确定所述第二位是所述第一位图中具有与所述第一位相同值的最后一位;e)生成包括第四位的第三位图,所述第四位指示所述第二位是所述第一位图中具有与所述第一位相同值的所述最后一位;并且f)将与所述第二位相关联的数据写入所述第二存储器位置。
在示例2中,如示例1所述的处理装置,其中,所述第一位图包括位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置。
在示例3中,如示例2所述的处理装置,其中,所述处理器核进一步用于:a)确定所述第五位的所述值不等于所述第二位的值;并且b)将与所述第五位相关联的数据写入所述第二存储器位置。
在示例4中,如示例2所述的处理装置,其中,所述处理器核进一步用于:a)确定所述第五位的值等于所述第二位的所述值;b)生成包括所述第三位的第二位图,所述第三位表示所述第一位图中所述第一位和所述第五位的位置;c)确定所述第二位是所述第一位图中具有与所述第一位和所述第五位相同值的所述最后一位;并且d)生成包括所述第四位的第三位图,所述第四位指示所述第二位是所述第一位图中具有与所述第一位和所述第五位相同值的所述最后一位。
在示例5中,如示例1所述的处理装置,其中,所述第一位图包括:i)位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置;以及ii)位于所述第一位图中的第四位置处的第六位,其中,所述第六位表示第四存储器位置。
在示例6中,如示例5所述的处理装置,其中,所述处理器核进一步用于:a)确定所述第一位图中所述第五位的值等于所述第六位的值;b)生成包括第七位的所述第二位图,所述第七位表示所述第一位图中所述第六位的位置;c)确定所述第六位是所述第一位图中具有与所述第五位相同值的最后一位;d)生成包括第八位的所述第三位图,所述第八位指示所述第六位是所述第一位图中具有与所述第五位相同值的所述最后一位;并且e)将与所述第六位相关联的数据写入所述第四存储器位置。
在示例7中,如示例1所述的处理装置,其中,所述第一位图包括:i)位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置;ii)位于所述第一位图中的第四位置处的第六位,其中,所述第六位表示第四存储器位置;以及iii)位于所述第一位图中的第五位置处的第七位,其中,所述第七位表示第五存储器位置。
在示例8中,如示例7所述的处理装置,其中,所述处理器核进一步用于:a)确定所述第一位图中所述第五位的值等于所述第六位的值;b)确定所述第七位的所述值不等于所述第一位图中的位中的任何位;c)生成包括第八位的所述第二位图,所述第八位表示所述第一位图中所述第六位的位置;d)确定所述第六位是所述第一位图中具有与所述第六位相同值的最后一位;e)生成所述第三位图,所述第三位图包括:i)第八位,所述第八位指示所述第六位是所述第一位图中具有与所述第五位相同值的所述最后一位;以及ii)第九位,所述第九位指示所述第一位图中没有其他位等于第七位;f)将与所述第六位相关联的数据写入所述第四存储器位置;并且g)将与所述第七位相关联的数据写入所述第五存储器位置。
在示例9中,如示例7所述的处理装置,其中,所述处理器核进一步用于:a)确定所述第一位图中所述第五位的值等于所述第七位的值;b)确定所述第一位图中所述第六的值等于所述第七位的所述值;c)生成包括第八位的所述第二位图,所述第八位表示所述第一位图中所述第五位和所述第六位的位置;d)确定所述第七位是所述第一位图中具有与所述第五位和所述第六位相同值的所述最后一位;e)生成所述第三位图,所述第三位图包括:i)第九位,所述第九位指示所述第七位是所述第一位图中具有与所述第五位相同值的所述最后一位;并且ii)将与所述第七位相关联的数据写入所述第五存储器位置。
在示例10中,如示例1所述的处理装置,其中,所述第一位图中的每一个位具有呈相继顺序的位置。
各种实施例可具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可用在一个或多个实施例中的各处。
示例11是一种处理装置,包括:1)处理器核;以及2)存储器装置,耦合到所述处理器核,其中,所述处理器核用于:a)生成包括多个位的第一位图,其中,所述多个位包括表示第一存储器位置的第一位,并且b)确定所述第一位图中所述第一位的值等于第二位的值;c)确定所述第一位图中所述第二位关于所述第一位的位置;并且d)生成包括第三位的第二位图,所述第三位指示所述第一位是所述第一位图中具有与所述第二位相同值的最后一位。
在示例12中,如示例11所述的处理装置,其中,所述处理器进一步用于将与所述第一位相关联的数据写入所述第一存储器位置。
在示例13中,如示例11所述的处理装置,其中,所述第一位图包括位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置。
在示例14中,如示例13所述的处理装置,其中,所述处理器核进一步用于:a)确定所述第五位的值不等于所述第一位或所述第二位的值;b)将与所述第一位相关联的数据写入所述第一存储器位置;并且c)将与所述第五位相关联的数据写入所述第三存储器位置。
在示例15中,如示例13所述的处理装置,其中:i)所述多个位中的每一个位具有所述第一位图中的位置,并且ii)每一个位的所述位置呈相继顺序。
各种实施例可具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可用在一个或多个实施例中的各处。
示例16是一种方法,包括:1)生成包括多个位的第一位图,所述多个位包括位于所述第一位图中的第一位置处的第一位,其中,所述第一位表示第一存储器位置;2)确定所述第一位图中所述第一位的值等于在所述第一位置之前的第二位的值;以及3)生成包括第三位的第二位图,所述第三位指示所述第一位是所述第一位图中具有与所述第二位相同值的最后一位。
在示例17中,如示例16所述的方法,进一步包括:将与所述第一位相关联的数据写入所述第一存储器位置。
在示例18中,如示例16所述的方法进一步包括:生成包括第四位的第三位图,所述第四位表示所述第一位图中所述第二位关于所述第一位的位置。
在示例19中,如示例16所述的方法,其中:i)所述多个位中的每一个位具有所述第一位图中的位置,并且ii)每一个位的所述位置呈相继顺序。
在示例20中,如示例16所述的方法,其中,所述确定所述第一位的值等于第二位的值进一步包括将所述第一位的所述值与所述第二位的所述值进行比较。
虽然已经关于有限数量的实施例对本发明进行了描述,但是本领域的技术人员将理解来自其中的许多修改和变化。旨在使得所附权利要求书覆盖如落在本发明的真实精神和范围内的所有这种修改和变化。
在本文的说明书中,阐述了众多特定细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等示例,以便提供对本发明的透彻理解。然而,对本领域技术人员将显而易见的是,不必采用这些特定的细节来实践本发明。在其他实例中,没有详细描述已知的组件或方法,诸如特定和替代处理器体系结构、特定逻辑电路/用于描述算法的代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中的算法的特定表达、特定断电和选通技术/逻辑及计算机系统的其他特定操作细节,以避免对本发明造成不必要的模糊。
实施例参考特定集成电路(诸如计算平台或微处理器)中SNC之间的动态高速缓存散列变化来描述。实施例还可应用于其他类型集成电路和可编程逻辑装置。例如,所公开的实施例并不限于台式计算机系统或便携式计算机,如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输出用于启动时钟。再次注意到的是,术语‘配置成’的使用不需要运算,而是集中于设备、硬件和/或元件的潜在状态,其中在潜在状态中,设备、硬件和/或元件被设计成当该设备、硬件和/或元件运行时执行具体任务。
此外,短语‘用于’、‘能够/能够用于’和或‘能操作以’的使用在一个实施例中指的是一些设备、逻辑、硬件和/或元件被设计的方式使得能够以指定方式使用所述设备、逻辑、硬件和/或元件。注意,在一个实施例中,如以上‘用于(to)’、‘能够用于(capable to)’或‘能操作以(operable to)’的使用是指设备、逻辑、硬件和/或元件的潜在状态,其中,所述设备、逻辑、硬件和/或元件未在运行但是被设计,其方式使得能够以特定的方式使用设备。
如本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、逻辑值或逻辑的值的使用也称为简单地代表二进制逻辑状态的1和0。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一个实施例中,如晶体管或闪存单元(cell)的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中值的其他表示已被使用。例如,十进制数字十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
此外,状态可以由值或一部分值来代表。作为示例,第一值(如逻辑一)可以代表默认或初始状态,而第二值(如逻辑零)可以代表非默认状态。此外,在一个实施例中,术语重置(reset)和置位(set)分别是指默认的和更新的值或状态。例如,默认值可能包括高逻辑值(即,重置),而更新值可能包括低逻辑值(即,置位)。注意,可以利用值的任意组合来表示任意数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问的、机器可读的、计算机可访问的或计算机可读的介质上的可被处理元件执行的代码或指令来实施。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)具有由机器(如,计算机或电子系统)可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(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.如权利要求2所述的处理装置,其特征在于,所述处理器核进一步用于:
确定所述第五位的值不等于所述第二位的值;以及
将与所述第五位相关联的数据写入所述第三存储器位置。
4.如权利要求2所述的处理装置,其特征在于,所述处理器核进一步用于:
确定所述第五位的值等于所述第二位的值;
生成包括所述第三位的第二位图,所述第三位表示所述第一位图中所述第一位和所述第五位的位置;
确定所述第二位是所述第一位图中具有与所述第一位和所述第五位相同值的所述最后一位;以及
生成包括所述第四位的第三位图,所述第四位指示所述第二位是所述第一位图中具有与所述第一位和所述第五位相同值的所述最后一位。
5.如权利要求1所述的处理装置,其特征在于,所述第一位图包括:
位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置;以及
位于所述第一位图中的第四位置处的第六位,其中,所述第六位表示第四存储器位置。
6.如权利要求5所述的处理装置,其特征在于,所述处理器核进一步用于:
确定所述第一位图中所述第五位的值等于所述第六位的值;
生成包括第七位的所述第二位图,所述第七位表示所述第一位图中所述第六位的位置;
确定所述第六位是所述第一位图中具有与所述第五位相同值的最后一位;
生成包括第八位的所述第三位图,所述第八位指示所述第六位是所述第一位图中具有与所述第五位相同值的所述最后一位;以及
将与所述第六位相关联的数据写入所述第四存储器位置。
7.如权利要求1所述的处理装置,其特征在于,所述第一位图包括:
位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置;
位于所述第一位图中的第四位置处的第六位,其中,所述第六位表示第四存储器位置;以及
位于所述第一位图中的第五位置处的第七位,其中,所述第七位表示第五存储器位置。
8.如权利要求7所述的处理装置,其特征在于,所述处理器核进一步用于:
确定所述第一位图中所述第五位的值等于所述第六位的值;
确定所述第七位的值不等于所述第一位图中的位中的任何位;
生成包括第八位的所述第二位图,所述第八位表示所述第一位图中所述第六位的位置;
确定所述第六位是所述第一位图中具有与所述第六位相同值的最后一位;
生成所述第三位图,所述第三位图包括:
第八位,所述第八位指示所述第六位是所述第一位图中具有与所述第五位相同值的所述最后一位;以及
第九位,所述第九位指示所述第一位图中没有其他位等于第七位;
将与所述第六位相关联的数据写入所述第四存储器位置;以及
将与所述第七位相关联的数据写入所述第五存储器位置。
9.如权利要求7所述的处理装置,其特征在于,所述处理器核进一步用于:
确定所述第一位图中所述第五位的值等于所述第七位的值;
确定所述第一位图中所述第六位的值等于所述第七位的值;
生成包括第八位的所述第二位图,所述第八位表示所述第一位图中所述第五位和所述第六位的位置;
确定所述第七位是所述第一位图中具有与所述第五位和所述第六位相同值的所述最后一位;
生成所述第三位图,所述第三位图包括:
第九位,所述第九位指示所述第七位是所述第一位图中具有与所述第五位相同值的所述最后一位;以及
将与所述第七位相关联的数据写入所述第五存储器位置。
10.如权利要求1所述的处理装置,其特征在于,所述第一位图中的每一个位具有呈相继顺序的位置。
11.一种处理装置,包括:
处理器核;以及
存储器装置,耦合到所述处理器核,其中,所述处理器核用于:
生成包括多个位的第一位图,其中,所述多个位包括表示第一存储器位置的第一位,以及
确定所述第一位图中所述第一位的值等于第二位的值;
确定所述第一位图中所述第二位关于所述第一位的位置;
生成包括第三位的第二位图,所述第三位指示所述第一位是所述第一位图中具有与所述第二位相同值的最后一位;以及
将所述第二位图存储为用于分散操作的掩码以避免通道冲突。
12.如权利要求11所述的处理装置,其特征在于,所述处理器进一步用于将与所述第一位相关联的数据写入所述第一存储器位置。
13.如权利要求11所述的处理装置,其特征在于,所述第一位图包括位于所述第一位图中的第三位置处的第五位,其中,所述第五位表示第三存储器位置。
14.如权利要求13所述的处理装置,其特征在于,所述处理器核进一步用于:
确定所述第五位的值不等于所述第一位或所述第二位的值;
将与所述第一位相关联的数据写入所述第一存储器位置;以及
将与所述第五位相关联的数据写入所述第三存储器位置。
15.如权利要求13所述的处理装置,其特征在于:
所述多个位中的每一个位具有所述第一位图中的位置,以及
每一个位的位置呈相继顺序。
16.一种方法,包括:
生成包括多个位的第一位图,所述多个位包括位于所述第一位图中的第一位置处的第一位,其中,所述第一位表示第一存储器位置;
确定所述第一位图中所述第一位的值等于在所述第一位置之前的第二位的值;
生成包括第三位的第二位图,所述第三位指示所述第一位是所述第一位图中具有与所述第二位相同值的最后一位;以及
将所述第二位图存储为用于分散操作的掩码以避免通道冲突。
17.如权利要求16所述的方法,其特征在于,进一步包括:将与所述第一位相关联的数据写入所述第一存储器位置。
18.如权利要求16所述的方法,其特征在于,进一步包括:生成包括第四位的第三位图,所述第四位表示所述第一位图中所述第二位关于所述第一位的位置。
19.如权利要求16所述的方法,其特征在于:
所述多个位中的每一个位具有所述第一位图中的位置,以及
每一个位的位置呈相继顺序。
20.如权利要求16所述的方法,其特征在于,确定所述第一位的值等于第二位的值的步骤进一步包括将所述第一位的值与所述第二位的值进行比较。
21.一种机器可读介质,所述机器可读介质包括代码,所述代码在被执行时使机器执行如权利要求16至20中的任一项所述的方法。
22.一种设备,包括用于执行如权利要求16至20中的任一项所述的方法的装置。
23.一种设备,包括配置为执行如权利要求16至20中的任一项所述的方法的处理器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/098655 WO2017107125A1 (en) | 2015-12-24 | 2015-12-24 | Conflict mask generation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108475242A CN108475242A (zh) | 2018-08-31 |
CN108475242B true CN108475242B (zh) | 2021-09-28 |
Family
ID=59087111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580085489.XA Active CN108475242B (zh) | 2015-12-24 | 2015-12-24 | 冲突掩码生成 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10185562B2 (zh) |
EP (1) | EP3394761B1 (zh) |
CN (1) | CN108475242B (zh) |
WO (1) | WO2017107125A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3394761B1 (en) * | 2015-12-24 | 2023-08-30 | Intel Corporation | Conflict mask generation |
US11416661B2 (en) * | 2019-08-07 | 2022-08-16 | Synopsys, Inc. | Automatic derivation of integrated circuit cell mapping rules in an engineering change order flow |
JP2023013799A (ja) * | 2021-07-16 | 2023-01-26 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163142A (zh) * | 2010-02-24 | 2011-08-24 | 英特尔公司 | 使用写入掩码的具有simd架构的寄存器分配 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940625A (en) * | 1996-09-03 | 1999-08-17 | Cray Research, Inc. | Density dependent vector mask operation control apparatus and method |
US20050114632A1 (en) * | 2003-11-21 | 2005-05-26 | Intel Corporation | Method and apparatus for data speculation in an out-of-order processor |
US8078847B2 (en) * | 2007-05-14 | 2011-12-13 | Apple Inc. | Detecting memory-hazard conflicts during vector processing |
US8533545B2 (en) * | 2009-03-04 | 2013-09-10 | Alcatel Lucent | Method and apparatus for system testing using multiple instruction types |
US8688957B2 (en) * | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
US8972698B2 (en) * | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
US9665368B2 (en) * | 2012-09-28 | 2017-05-30 | Intel Corporation | Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register |
US9411584B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
US9411592B2 (en) * | 2012-12-29 | 2016-08-09 | Intel Corporation | Vector address conflict resolution with vector population count functionality |
EP3394761B1 (en) * | 2015-12-24 | 2023-08-30 | Intel Corporation | Conflict mask generation |
-
2015
- 2015-12-24 EP EP15911124.4A patent/EP3394761B1/en active Active
- 2015-12-24 WO PCT/CN2015/098655 patent/WO2017107125A1/en active Application Filing
- 2015-12-24 US US15/301,224 patent/US10185562B2/en not_active Expired - Fee Related
- 2015-12-24 CN CN201580085489.XA patent/CN108475242B/zh active Active
-
2019
- 2019-01-16 US US16/249,134 patent/US10691454B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163142A (zh) * | 2010-02-24 | 2011-08-24 | 英特尔公司 | 使用写入掩码的具有simd架构的寄存器分配 |
Also Published As
Publication number | Publication date |
---|---|
EP3394761A4 (en) | 2020-06-17 |
US20190146794A1 (en) | 2019-05-16 |
US10185562B2 (en) | 2019-01-22 |
EP3394761B1 (en) | 2023-08-30 |
EP3394761A1 (en) | 2018-10-31 |
CN108475242A (zh) | 2018-08-31 |
US10691454B2 (en) | 2020-06-23 |
WO2017107125A1 (en) | 2017-06-29 |
US20170185405A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
CN108369511B (zh) | 用于基于通道的跨步存储操作的指令和逻辑 | |
US20180188997A1 (en) | Memory ordering in acceleration hardware | |
US10635447B2 (en) | Scatter reduction instruction | |
CN108475199B (zh) | 用于执行密钥值查找指令的处理设备 | |
CN107925420B (zh) | 用于经优化压缩比的异构压缩架构 | |
US10216516B2 (en) | Fused adjacent memory stores | |
CN108431771B (zh) | 融合乘加(fma)低功能单元 | |
US10019262B2 (en) | Vector store/load instructions for array of structures | |
EP3391236A1 (en) | Instructions and logic for get-multiple-vector-elements operations | |
US20170177543A1 (en) | Aggregate scatter instructions | |
CN107278295B (zh) | 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测 | |
US10691454B2 (en) | Conflict mask generation | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
US20170185413A1 (en) | Processing devices to perform a conjugate permute instruction | |
CN109643244B (zh) | 映射安全策略组寄存器 | |
CN108292219B (zh) | 浮点(fp)加法低指令功能单元 | |
TWI751990B (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 |