CN107250993A - 向量缓存行写回处理器、方法、系统和指令 - Google Patents
向量缓存行写回处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN107250993A CN107250993A CN201680011687.6A CN201680011687A CN107250993A CN 107250993 A CN107250993 A CN 107250993A CN 201680011687 A CN201680011687 A CN 201680011687A CN 107250993 A CN107250993 A CN 107250993A
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache lines
- processor
- memory
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000015654 memory Effects 0.000 claims abstract description 504
- 238000003860 storage Methods 0.000 claims abstract description 340
- 238000012856 packing Methods 0.000 claims abstract description 131
- 239000013598 vector Substances 0.000 claims abstract description 129
- 239000000872 buffer Substances 0.000 claims abstract description 117
- 230000004044 response Effects 0.000 claims abstract description 47
- 230000002688 persistence Effects 0.000 claims description 21
- 238000013500 data storage Methods 0.000 claims description 13
- 230000014759 maintenance of location Effects 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 8
- 230000002045 lasting effect Effects 0.000 claims description 6
- 230000002085 persistent effect Effects 0.000 claims description 5
- 238000000151 deposition Methods 0.000 claims description 4
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 74
- 238000010586 diagram Methods 0.000 description 53
- 238000006073 displacement reaction Methods 0.000 description 36
- 238000012545 processing Methods 0.000 description 23
- 238000010168 coupling process Methods 0.000 description 22
- 238000005859 coupling reaction Methods 0.000 description 22
- 230000008859 change Effects 0.000 description 20
- 230000008878 coupling Effects 0.000 description 20
- 230000007246 mechanism Effects 0.000 description 17
- 230000004048 modification Effects 0.000 description 12
- 238000012986 modification Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 230000006854 communication Effects 0.000 description 10
- 238000009826 distribution Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000007480 spreading Effects 0.000 description 10
- 238000003892 spreading Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 230000006399 behavior Effects 0.000 description 8
- 238000000926 separation method Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 239000012536 storage buffer Substances 0.000 description 5
- 229910002056 binary alloy Inorganic materials 0.000 description 4
- 230000004069 differentiation Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008093 supporting effect Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003756 stirring Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000013604 expression vector Substances 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012544 monitoring process 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
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/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
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
一方面的处理器包括多个打包数据寄存器,以及用于解码向量缓存行写回指令的解码单元。向量缓存行写回指令指示包括多个存储器索引的源打包存储器索引操作数。处理器还包括与打包数据寄存器和解码单元耦合的缓存一致性系统。缓存一致性系统响应于向量缓存行写回指令,使得一致性域中的任何缓存中的任何脏缓存行向一个或多个存储器写回,在所述脏缓存行中存储了由源打包存储器索引操作数中的存储器索引中的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。还公开了其它处理器、方法和系统。
Description
技术领域
本文描述的实施例一般涉及处理器。特别地,本文描述的实施例一般涉及处理器中的缓存。
背景技术
为了改进性能,处理器通常包括一个或多个缓存。缓存可以表示比系统存储器相对更小和更快访问的存储。此外,缓存可以比系统存储器相对更靠近核心和/或指令流水线。缓存可以用于缓存或存储已经从系统存储器进入到处理器中的数据,以便提供对数据的更快的后续访问。代表性地,对缓存中的数据的访问一般花费不超过数个处理器时钟周期,而对系统存储器中的数据的访问可能经常花费数十到数百个时钟周期。当处理器想要从系统存储器读取数据时,处理器可以首先检查以看看数据的副本是否存储在缓存中。如果在缓存中找到数据,则处理器可以从缓存访问数据,这一般比如果替代地从系统存储器访问数据更快地发生。类似地,当处理器想要将数据写入系统存储器时,经常可能最初首先将数据存储在缓存中。
具有一个或多个缓存的处理器可以实现缓存一致性机制或协议,以帮助确保缓存中的数据被一致地管理并且在适当的时间被写回到存储器,以使得系统中的所有核心、处理器或其它实体一致地查看数据的正确且当前的版本。
附图说明
通过参考用于图示出实施例的以下描述和附图,可以最好地理解本发明。在图中:
图1是适用于实现实施例的系统的实施例的框图,其包括处理器和一个或多个存储器和/或存储设备的集合。
图2A是一个或多个存储器和/或存储设备的集合的第一实施例的框图。
图2B是一个或多个存储器和/或存储设备的集合的第二实施例的框图。
图3是可操作以执行向量缓存行写回指令的实施例的处理器的实施例的框图。
图4是执行向量缓存行写回指令的实施例的方法的实施例的流程框图。
图5是适用于向量缓存行写回指令的实施例的源打包存储器索引操作数的示例实施例的框图。
图6是适用于向量缓存行写回指令的实施例的源打包存储器索引操作数和对应的源打包数据操作掩码操作数的示例实施例的框图。
图7是图示出被可选地掩蔽的向量缓存行写回操作的实施例的框图。
图8是图示出被可选地掩蔽的向量存储索引和缓存行写回操作的实施例的框图。
图9是适用于实现本发明的实施例的处理器的详细示例实施例的框图。
图10A-10C是图示出根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。
图11A-B是图示出根据本发明的实施例的示例性特定向量友好指令格式和操作码字段的框图。
图12A-D是图示出根据本发明的实施例的示例性特定向量友好指令格式及其字段的框图。
图13是寄存器架构的实施例的框图。
图14A是图示出有序流水线的实施例和寄存器重命名无序发布/执行流水线的实施例的框图。
图14B是包括耦合到执行引擎单元的前端单元的处理器核心的实施例的框图,并且前端单元和执行引擎单元二者都耦合到存储器单元。
图15A是单个处理器核心及它到管芯上互连网络以及它与它的二级(L2)缓存的本地子集的连接的实施例的框图。
图15B是图15A的处理器核心的一部分的展开图的实施例的框图。
图16是处理器的实施例的框图,该处理器可以具有不止一个核心,可以具有集成存储器控制器,并且可以具有集成图形模块(graphics)。
图17是计算机架构的第一实施例的框图。
图18是计算机架构的第二实施例的框图。
图19是计算机架构的第三实施例的框图。
图20是计算机架构的第四实施例的框图。
图21是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本文公开的是向量缓存行写回指令、用于执行所述指令的处理器、处理器在处理或执行所述指令时所实行的方法以及包含用以处理或执行所述指令的一个或多个处理器的系统。在下面的描述中,阐述了众多具体细节(例如,具体的指令操作、数据格式、处理器配置、微架构细节、操作序列等)。然而,可以在没有这些具体细节的情况下实践实施例。在其它实例中,没有详细示出公知的电路、结构和技术,以避免使本描述的理解含糊难懂。
图1是包括处理器102和一个或多个存储器和/或存储设备124的系统100(例如,计算机系统或其它电子设备)的实施例的框图。处理器可以包括一个或多个核心104。如图所示,在所图示出的示例中,处理器可选地包括第一核心(核心1)104-1至第N核心(核心N)104-N,其中核心的数量N可以表示核心的任何期望数量。通常,核心的数量的范围从一个到约几百个,经常范围从一个到约几十个。
核心中的每一个都包括指令流水线106。例如,核心1包括第一指令流水线106-1,并且核心N包括第N指令流水线106-N。指令流水线中的每一个能够处理指令集的指令。指令集包括核心和/或处理器可操作以执行的原生指令。指令集的指令表示被提供给处理器以供执行的宏指令、汇编语言指令或机器级指令。如图所示,在一些实施例中,至少一个核心(例如,在这种情况下为核心1 104-1)的指令集115可以可选地包括向量存储索引指令或散布指令118。还如图所示,在一些实施例中,至少一个核心(例如,在这种情况下为核心1104-1)的指令集可以可选地包括向量缓存行写回指令120的实施例。当然,指令集可以包括其它指令(例如,标量加载指令、标量存储指令、标量和打包算术指令等)。通常,指令流水线可以包括提取指令的提取单元、解码指令的解码器以及执行已解码的指令的执行单元或逻辑。在可选的无序核心的情况下,指令流水线还可以可选地包括分配、重命名、调度和提交单元、逻辑或流水线级,但是这不是必需的。本发明的范围不限于任何特定类型的指令流水线。
处理器可以包括一个或多个缓存110、112。如图所示,所图示出的处理器可选地具有包括处于不同缓存级别的多个缓存的缓存层级108。缓存级别因缓存到核心和/或指令流水线的相对靠近度而不同。具体地,核心1具有处于一个或多个级别的一个或多个专用缓存110-1。类似地,核心N具有处于一个或多个级别的一个或多个专用缓存110-N。一个或多个专用缓存110中的每个缓存专用于使用和/或包括该缓存的对应核心。通常,各组一个或多个专用缓存110中的每一组可以包括第一级或一级(L1)缓存。L1缓存可以表示最靠近指令流水线(例如,执行单元)的缓存级别。在一些情况下,各组一个或多个专用缓存110中的每一组还可以可选地/潜在地包括第二级或二级(L2)缓存,但是这不是必需的。L2缓存可以表示第二靠近指令流水线(例如,执行单元)的缓存级别。
如图所示,处理器还可以可选地具有处于一个或多个级别的一个或多个共享缓存112。与专用于任何一个特定核心相反,所述一个或多个共享缓存可以由核心中的每一个共享(例如,为核心中的每一个缓存数据)。通过示例的方式,如果一个或多个专用缓存110仅包括单个级别的缓存或L1缓存,则一个或多个共享缓存112可以包括共享L2缓存,并且可选地/潜在地包括共享第三级或三级(L3)缓存,但是这不是必需的。或者,如果一个或多个专用缓存110包括L1和L2缓存二者,则一个或多个共享缓存112可以包括共享L3缓存,并且可选地/潜在地包括共享第四级或四级(L4)缓存,但是这不是必需的。这些只是一些例证性示例。广泛地,在各种实施例中,处理器可以具有处于一个或多个缓存级别的一个或多个专用或共享缓存。
处理器可以实现缓存一致性机制或协议以帮助确保存储在处理器的一个或多个缓存110、112中的数据被一致地管理并在适当的时间被存储到存储器/存储设备,以使得系统中的所有相关实体一致地查看数据的正确且当前的版本。例如,缓存一致性机制可以有助于确保所有核心一致地看到数据的正确版本,并且可以有助于确保可选的附加(例如,外部的)缓存组件103——其具有与处理器102中的(一个或多个)缓存110、112在相同的一致性域中的一个或多个缓存111——一致地看到数据的正确版本。通过示例的方式,附加的缓存组件可以包括各自具有不同的缓存层级的一个或多个附加的处理器,具有在一致性域中的缓存的输入/输出设备等。外部缓存组件103可以(诸如例如通过点到点互连、多点分支总线等)与处理器102的总线接口单元126耦合。合适的缓存一致性协议的示例包括但不限于:MESI、MOSI、MOESI等。MESI协议包括由两个MESI位指示的四个状态,即修改(M)、独占(E)、共享(S)和无效(I)。MOSI协议利用拥有(O)状态来代替独占(E)状态。MOESI协议利用独占(E)和拥有(O)状态二者。修改状态指明脏缓存行。
再次参考图1,处理器102和一个或多个存储器和/或存储设备124通过居间耦合机构122耦合。处理器包括存储器子系统单元114,其能够通过居间耦合机构将处理器与存储器/存储设备耦合。耦合机构应被广泛地解释为包括将处理器与存储器/存储设备耦合的各种不同类型的耦合机构。在各种实施例中,耦合机构122可以包括一个或多个互连、一个或多个存储器控制器、芯片组的一个或多个组件等,及其各种组合。例如,在一些实施例中,处理器可以具有内部存储器控制器,并且可以通过居间总线或互连与存储器/存储设备(或其一部分)直接耦合。作为另一示例,处理器和存储器/存储设备(或其一部分)可以通过居间芯片组组件(例如,存储器控制器中枢)和一组互连来彼此耦合。
为了进一步说明某些概念,考虑可选向量存储索引指令或散布指令118的执行。散布指令可以指示具有多个打包数据元素的第一源打包数据操作数(例如,在处理器的未示出的第一打包数据寄存器中),并且可以指示具有多个打包存储器索引的第二源打包存储器索引操作数(例如,在处理器的未示出的第一打包数据寄存器中)。散布指令可以可操作以使执行核心(例如,核心1)将第一源打包数据操作数的数据元素中的每一个散布、写入或存储到存储器/存储设备124中由第二源打包存储器索引操作数的对应存储器索引指示的不同对应存储器位置。取决于存储器索引的特定灵活值,存储器位置可以潜在地/可选地是不连续的存储器位置。然而,最初,所散布的数据元素可以存储在处理器的一个或多个缓存110、112中。稍后,在适当的时间(例如,基于缓存一致性协议),可以将散布指令的数据元素从所述一个或多个缓存110、112写回到存储器/存储设备124。再次取决于存储器索引的特定灵活值,存储器位置可以潜在地/可选地对应于存储器/存储设备中的非顺序缓存行。这样的散布指令对各种不同的目的都有用,诸如例如用于更新表或其它数据结构的不同行或列中的数据、更新稀疏数组或数据结构、稀疏线性代数运算中的数据等。散布指令是可选的不是必需的。
在一些实施例中,向量缓存行写回指令120可以与可选的散布指令118联合用于将散布指令的数据元素从缓存110、112向存储器/存储设备写回,但是本发明的范围不限于此。如上所述,与散布指令相关联的数据可以最初被存储在处理器的(一个或多个)缓存中,而不是存储器/存储设备中。向量缓存行写回指令可以指示具有多个打包存储器索引的源打包存储器索引操作数。当用于写回散布指令的数据时,向量缓存行写回指令可以使用与散布指令相同的存储器索引(例如,散布指令可以指示相同的已经生成的打包存储器索引操作数)。向量缓存行写回指令可以由处理器102执行以向存储器/存储设备124写回一致性域中的处于处理器的任何缓存级别的任何缓存(例如,缓存110、112)中的任何脏缓存行,其存储由源打包存储器索引操作数中的任何存储器索引指示的一组存储器地址中的任何地址的数据。在一些实施例中,向量缓存行写回指令还可以使信号在总线或互连上被广播、传输或以其它方式提供给具有相同一致性域中的一个或多个缓存的其它实体或组件(例如,外部缓存组件103),以使得写回也在那些缓存中的由存储器地址存储或暗示的任何脏缓存行。
在一些实施例中,写回的数据可以可选地在一个或多个缓存中被无效。此外,无论存储由源打包存储器索引操作数的存储器索引指示的存储器地址的数据的缓存行是否是脏的(例如,如果它们是干净的、未修改的、共享的、独占的等等),它们都可以被无效。替换地,在其它实施例中,写回的数据可以可选地保留在缓存中并且被置于未修改状态。在一些实施例中,响应于向量缓存行写回指令,可以写回多个数据元素(例如,多达向量的值,如果它们都是脏的的话)而不是仅一个单个数据元素。与散布指令一样,再次取决于存储器索引的灵活值,对应于向量缓存行写回指令的存储器地址可以潜在地/可选地表示不连续的存储器地址和/或可以潜在地/可选地对应于存储器/存储设备中的非顺序缓存行。
向量缓存行写回指令120还具有与散布指令118分离的和/或当指令集115可选地省略散布指令118时的实用性。例如,向量缓存行写回指令可以可选地用于写回与先前由多个分离的标量存储或写入存储器指令写入的多个存储器地址相对应的(例如,存储这多个存储器地址的数据)的脏缓存行。作为另一示例,可以可选地使用向量缓存行写回指令来写回多个脏缓存行,而不管如何对缓存行做出的修改(例如,任凭软件编程器处理)。
可想到实现一组一个或多个存储器和/或存储设备124的不同方式。图2A-B示出了用于实现具有或不具有持久性存储器的一组一个或多个存储器和/或存储设备124的两个不同的合适实施例。其它实施例对于本领域的并且受益于本公开的技术人员将是显而易见的。
图2A是一组一个或多个存储器和/或存储设备224A的第一实施例的框图。存储器/存储设备224A包括主要或主易失性存储器228以及次要或后备非易失性存储器或存储230。当不施加电力时,易失性存储器丢失其数据或内容。相比之下,非易失性存储器或存储当在甚至相当长的时段内不施加电力时也能够保留其数据或内容。通常在计算机系统中使用的易失性存储器的一个示例类型是动态随机存取存储器(DRAM)。通常在计算机系统中使用的非易失性存储器或存储的两个示例类型是磁盘和闪存。历史上,DRAM和其它类型的易失性存储器在延迟和带宽二者方面比用于次要或后备存储的磁盘和某些其它类型的非易失性存储器或存储显著地更快。然而,DRAM和其它类型的易失性存储器一般还具有比磁盘和某些其它类型的非易失性大容量存储更高的每位成本以及对应性地更低的容量。在这种配置中,主要或主易失性存储器常常更直接或紧密地耦合到处理器(例如,通过存储器总线),并且可通过处理器指令集的加载和/或存储指令来直接访问。相反,次要或后备非易失性存储器或大容量存储常常通过输入/输出(I/O)控制器(例如,SCSI、SATA、PCI-Express(PCI快线)等)与处理器耦合,并且通过经由操作系统(OS)调用的文件系统应用编程接口(API)(而通常不通过指令集的加载/存储指令)来进行访问。
图2B是一组一个或多个存储器和/或存储设备224B的第二实施例的框图。存储器/存储设备224包括主要或主存储器232以及可选的一组一个或多个次要或后备存储器和/或存储设备。主要/主存储器232包括所谓的持久性存储器234,并且可选地/潜在地包括非持久性(例如,易失性)存储器236。次要/后备存储器/存储可以做非持久性(例如,易失性)存储器236和/或持久性存储器234的后备。通过示例的方式,次要/后备存储器/存储可以表示后备闪存或非易失性双列直插式存储器模块(NVDIMM)。NVDIMM可以表示即使当电力被移除(例如,由于意外的电力丢失、系统崩溃或正常的系统关机)时也可以保留数据的计算机存储器DRAM DIMM。
持久性存储器有时被称为存储类存储器(SCM)。在各种实施例中,持久性存储器可以用非易失性存储器或存储、电池后备的易失性存储器或其组合来实现。与用于主存储器或主要存储器的DRAM和其它类型的易失性存储器不同,持久性存储器可以用于持久地或持续地存储数据,以使得在电力故障和/或系统故障和重新启动期间不会丢失数据。一旦数据存储在持久性存储器中,即使存在电力丢失、操作系统故障、系统崩溃等,数据通常也被保留。在一些情况下,即使在处理器或计算机系统硬件故障中,数据也可以不丢失,因为如果持久性存储器未被损坏,则仍然可以恢复其中的数据。对于某些应用和/或实现(例如,数据库应用、交易等),数据的这种持续性或持久性往往是非常有价值的。
持久性存储器可以是字节可寻址的,与需要页/块可寻址性相反,这可以有助于允许持久性存储器与处理器存储器总线直接耦合。在一些实施例中,持久性存储器234可以单独地或者与非持久性(例如,易失性)存储器236组合地用于实现计算机系统的主要或主存储器。在一些实施例中,持久性存储器可以单独地或与非持久性存储器组合地作为处理器可寻址物理地址空间的一部分。系统软件和应用可以能够通过执行用户级指令(例如,加载指令、存储指令、散布指令等)来访问持久性存储器。对持久性存储器的访问可以服从于与对DRAM主/主要存储器的访问大体相同的处理器存储器模型(例如,关于可缓存性、一致性、处理器存储器排序、存储器类型等)。
不同类型的持久性存储器234是合适的。合适类型的持久性存储器的示例包括但不限于:基于相变存储器(PCM)的那些存储器、基于忆阻器(例如,与电荷和磁通量链接相关的非线性无源两端电气组件)的那些存储器以及基于自旋转移扭矩(例如,利用其中可以使用自旋极化电流修改磁性隧道结或自旋阀中的磁性层的朝向的效应)的那些存储器,仅举几例。未来开发的其它技术(其是这些技术的扩展或改进,或者完全不同的技术)潜在地也是合适的。本发明的范围不限于任何特定类型的持久性存储器。此外,也可以在没有持久性存储器的情况下使用实施例(例如,实施例可以用在DRAM主存储器和硬盘次要存储器配置中)。
确保数据被持久地或持续地存储在持久性存储器234中可能往往对软件提出附加的挑战。一则,处理器(例如,处理器102)可以具有各种中间易失性微架构结构或组件,其中与存储指令、散布指令等相关联的数据可以在它到持久性存储器的路上被临时存储在其中。这种易失性结构或组件的示例包括但不限于:一个或多个一致性缓存(例如,缓存110、112)、处理器存储缓冲器、写回缓冲器、填充缓冲器、非核心和/或互连队列或缓冲器、存储器控制器写待定缓冲器、存储器侧缓存等。然而,这些结构或组件是易失性的,并且在电力故障、系统崩溃等情况下一般会丢失其数据内容。与存储指令或散布指令相关联的数据一般不会变得永久或持久直至它被实际存储在持久性存储器中或中间电力故障保护存储设备或缓冲器中。结果,如果在数据被存储在易失性结构或组件中的一个中时发生电力故障、系统崩溃等,则数据可能会丢失,并且将无法实现期望的持久性或持续性。在一些实施例中,本文公开的向量缓存行写回指令可以用于帮助缓存一致性域之中的任何暗示的脏缓存行向持久性存储器写回以帮助实现数据的持久性或持续性。在一些实施例中,附加的持久性提交指令也可以可选地用于帮助确保写回数据被持久地或持续地存储。替换地,如下面将进一步描述的,向量缓存行写回指令可以可选地并入这种持久性提交能力。
图3是可操作以执行向量缓存行写回指令320的实施例的处理器302的实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,在台式机、膝上型计算机或其它计算机中使用的类型的通用微处理器或中央处理单元(CPU))。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于:网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如微控制器))。处理器可以具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其它类型的架构中的任何,或具有不同架构的组合(例如,不同的核心可以具有不同的架构)。
在操作期间,处理器302可以接收向量缓存行写回指令320。例如,可以通过总线或其它互连从一个或多个存储器和/或存储设备324接收指令。指令可以表示处理器的指令集的宏指令、汇编语言指令、机器代码指令、或其它指令或控制信号。在一些实施例中,向量缓存行写回指令可以显式地指定(例如,通过一个或多个字段或一组位)或者以其它方式指示(例如,隐式地指示)具有多个打包存储器索引的源打包存储器索引操作数348。作为一个示例,指令可以具有源打包存储器索引操作数指定字段或位组,以指定用于存储源打包存储器索引的打包数据寄存器346中的打包数据寄存器或其它存储位置。替换地,用于存储源打包存储器索引操作数的打包数据寄存器或其它存储位置可以可选地对于指令是隐式的(例如,隐含于指令的操作码)。
处理器包括解码单元或解码器336。解码单元可以接收并解码向量缓存行写回指令。解码单元可以输出一个或多个相对较低级别的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、已解码指令或控制信号等),其反映、表示和/或导出自相对较高级别的向量缓存行写回指令。在一些实施例中,解码单元可以包括用于接收指令的一个或多个输入结构(例如,(一个或多个)端口、(一个或多个)互连、接口),与其耦合以识别和解码指令的指令识别和解码逻辑,以及与其耦合以输出(一个或多个)较低级别的指令或控制信号的一个或多个输出结构(例如,(一个或多个)端口、(一个或多个)互连、接口)。解码单元可以使用各种不同的机制来实现,包括但不限于:微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及用于实现解码单元的其它机制。
处理器302还包括一组打包数据寄存器346。在一些实施例中,源打包存储器索引操作数348可以可选地存储在该组打包数据寄存器中的打包数据寄存器中。替换地,另一存储位置可以可选地用于源打包存储器索引操作数。打包数据寄存器中的每一个可以表示可操作以存储打包数据、向量数据或单指令多数据(SIMD)数据的管芯上存储位置。打包数据寄存器可以表示架构可见或架构寄存器,其对软件和/或编程器可见和/或是由处理器的指令集的指令指示用于标识操作数的寄存器。这些架构寄存器与给定微架构中的其它非架构寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)形成对照。打包数据寄存器可以使用合适的技术在不同的微架构中以不同的方式实现,并且不限于任何特定类型的设计。合适类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
处理器还包括处于一个或多个缓存级别的一个或多个缓存340。这些缓存可以在缓存一致性域中。一个或多个对应的缓存控制器342可以可操作以控制它们对应的缓存340,并且可以用于帮助实现缓存一致性机制或协议。合适的缓存一致性协议的示例包括但不限于MESI、MOSI、MOESI等。MESI协议包括由两个MESI位表示的四个状态,即修改(M)、独占(E)、共享(S)和无效(I)。MOSI协议利用拥有(O)状态来代替独占(E)状态。MOESI协议利用独占(E)和拥有(O)状态二者。可选地,处理器302可以与一个或多个其它可选处理器303或其它实体(具有也在相同的缓存一致性域中的一个或多个缓存311)耦合。一个或多个可选的其它处理器303或其它实体可以通过总线、互连或其它耦合机构354与处理器302耦合。
处理器还包括缓存一致性系统338,其可操作以执行或实现向量缓存行写指令。缓存一致性系统也可以被认为是向量缓存行写回单元或逻辑和/或执行逻辑。缓存一致性系统与解码单元336的输出和打包数据寄存器346耦合。缓存一致性系统可以接收表示向量缓存行写回指令和/或从向量缓存行写回指令导出的一个或多个解码的或以其它方式转换的指令或控制信号。缓存一致性系统还可以接收源打包存储器索引操作数348。在一些实施例中,缓存一致性系统还可以可选地与一组通用寄存器(未示出)耦合,例如以便接收用于将存储器索引转换为存储器地址的信息。作为示例,可以使用共同比例和共同基数(base)来将存储器索引转换为存储器地址(例如,存储器地址 = 存储器索引 * 缩放 + 基数)。也可设想将索引转换为地址的其它方式。在一些实施例中,缓存一致性系统可以响应于向量缓存行写回指令和/或作为向量缓存行写回指令的结果(例如,响应于从该指令解码的一个或多个指令或控制信号)而操作以使得一致性域中的任何缓存中的任何脏缓存行(要在其中存储将由源打包存储器索引操作数的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据)被向一个或多个存储器/存储设备写回。
在一些实施例中,响应于该指令,缓存一致性系统338可以执行一致性域中的处于处理器302的任何缓存级别的任何缓存340中的任何脏缓存行(要在其中存储将由源打包存储器索引操作数348的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据)向存储器/存储设备324的写回350。在一个方面中,脏缓存行可以是处于修改的缓存一致性协议状态的那些缓存行(例如,这甚至可以是在其本身上重写相同的值以使得存储在该缓存行中的实际值未改变量值的情形)。如图所示,在一些实施例中,缓存一致性系统可以包括和/或可以控制其相应的一个或多个缓存340的一个或多个缓存控制器342来发起由存储器索引所暗示的脏缓存行的写回。替换地,处理器的其它单元或逻辑可以可选地按照针对特定微架构的需要来发起和/或执行写回。
如图所示,在图示出的实施例中,向量缓存行写回指令可以潜在地使得将数据从缓存存储到存储器子系统单元314中的存储缓冲器348的写回,并且指令然后可以在来自缓存的数据被实际存储在存储器/存储设备324中之前完成。在这样的实施例中,存储器子系统单元可以可操作以确保满足适合的存储器排序规则,诸如从写入缓冲器服务写入数据的后续读取,使得此公布的写入行为对于到易失性存储器的访问是不可见的。在期望确保对存储器/存储设备(例如,持久性存储器)的写入确实被写入持久性存储器(例如,提交至持久性)的持久性存储器实现中,可以清空任何易失性缓冲器或其它微架构结构。在一个方面中,持久性提交指令可以可选地用于将在存储器子系统(例如,存储器子系统单元314)中排队的写入或存储数据提交到持久性存储器。持久性提交指令可以将其中已被接受的那些存储应用于存储器/存储设备。替换地,在各种其它实施例中,向量缓存行写回指令可以促使如下的写回:将数据从缓存存储到处理器中能够确保满足适合的存储器排序规则的其它位置或组件、或者存储到中间的电池后备易失性存储或缓冲器、或者径直存储到系统存储器。也就是说,向量缓存行写回指令的各种实施例可以使得脏缓存行从缓存被写回到通向存储器/存储设备324的各种不同位置或者在一些情况下被写回到存储器/存储设备324处。
在一些实施例中,响应于该指令,缓存一致性系统338可以在总线、互连或其它耦合机构354上广播、传输或以其它方式提供一个或多个缓存行写回信号352。这(一个或多个)信号可以可操作以发信号通知在相同一致性域中的、处于任何缓存级别的任何其它处理器303或其它组件的任何其它缓存311向存储器/存储设备324(例如,到相应的存储器子系统单元中)写回任何脏缓存行,所述脏缓存行要在其中存储将由源打包存储器索引操作数348的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。
在一些实施例中,可以提供针对存储器地址的(一个或多个)信号352,而不管所述存储器地址是否被缓存在执行指令的处理器302的缓存340中。在一些实施例中,可以提供针对存储器地址的(一个或多个)信号352,而不管执行指令的处理器302的缓存340中的缓存行的状态如何。例如,可以提供(一个或多个)信号352,而不管缓存行在缓存340中是处于修改状态还是处于未修改状态。在一些实施例中,可以提供针对存储器地址的(一个或多个)信号352,而不管存储器地址是否被缓存在处理器302的缓存340中,并且也不管处理器302的缓存340中的缓存行的状态如何。如图所示,在一些实施例中,缓存一致性系统可以包括总线接口单元344内的逻辑和/或可以控制总线接口单元344以在总线或其它互连上传输或以其它方式提供所述一个或多个缓存行写回信号。替换地,其它单元或逻辑可以按照针对特定设计或微架构实现的需要在总线或其它互连上传输或以其它方式提供(一个或多个)信号352。
现在,如其名称意指的那样,向量缓存行写回指令是向量指令而非标量指令,并且能够促使针对多个(例如,多达向量的值的)存储器地址的写回。此外,向量缓存行写回指令指定或以其它方式指示具有多个存储器索引(而不是仅单个标量存储器索引)的源打包存储器索引操作数。在一些实施例中,源打包存储器索引操作数可以存储在打包数据寄存器(而不是不用于存储打包数据操作数的寄存器(例如,通用寄存器))中。代表性地,在各种实施例中,源打包存储器索引操作数可以是64位、128位、256位、512位、1024位或更宽的操作数,并且可以具有至少两个、四个、八个、十六个、三十二个、或三十二个以上的存储器索引。在一些实施例中,存储器索引可以是32位双字或64位四字存储器索引,但是本发明的范围不限于此。在各种实施例中,当启用地址转译时,存储器索引可以对应于线性的、虚拟的、或逻辑的存储器地址。替换地,在其它实施例中,例如在真实模式中和/或当地址转译被禁用时,存储器索引可以对应于物理地址。在一些实施例中,存储器地址可以对应于字节存储器位置,但是这不是必需的。在一些实施例中,存储器地址可以潜在地/可选地表示不连续的存储器地址和/或可以潜在地/可选地是在存储器/存储设备中的非顺序缓存行中。
在一些实施例中,缓存行可以可选地从处理器缓存被清除和/或无效(例如,不论它们是脏的还是干净的)。替换地,在其它实施例中,缓存行可以可选地保留在处理器缓存中并被改为未修改状态。保留缓存中的缓存行可以表示性能优化(其可以被看做处理器逻辑的提示)以减少在后续访问时的缓存未命中的可能性。在一个方面中,处理器可以使缓存行保留处于缓存层级中的缓存级别,并且在一些情况下,可以使来自缓存层级的行无效。对于仅需要将修改的数据从缓存行写回到一个或多个存储器和/或存储设备而不需要将所述行无效并且其中期望对数据的后续访问的用途,改进的性能可以是通过将缓存行保留在处理器缓存中来实现。
向量缓存行写回指令的一个可能的优点在于,其可以有助于推进向量化和/或可以帮助避免代码从处理数据的向量模式退出到处理数据的标量模式以便实行多次写回操作的需要。作为示例,代码可以使用散布指令或其它向量存储指令来将给定数量的数据元素(例如,向量值)存储到由给定数量的存储器索引指示的给定数量的存储器地址。如果向量缓存行写回指令不可用,则可能需要给定数量的分离的标量缓存行清除或其它缓存行写回指令,以各自分离地或单独地写回给定数量的数据元素中的不同的对应数据元素。因此,取决于散布指令的给定数量的数据元素和/或存储器索引,可能需要从多个到潜在地许多的分离的标量缓存行写回指令。此外,一般会需要附加的指令来从打包的操作数(例如,由前面的散布指令使用的打包存储器索引操作数)中抽取单独的存储器索引和/或移动所抽取的存储器索引(例如,从打包数据寄存器移动到一个或多个通用寄存器)。然而,通过包括向量缓存行写回指令,可以不需要退出向量模式。相反,单个向量缓存行写回指令可以用于在单个指令的执行限制内写回给定数量的数据元素中的每一个。此外,可以不需要附加指令来抽取单独的存储器索引和/或将它们从打包数据寄存器移动到其它寄存器(例如,通用寄存器)。因此,向量缓存行写回指令可以有助于减少需要执行的指令的总数(例如,可以有助于减少代码中的指令膨胀量),这也可以趋向于帮助提高性能。
向量缓存行写回指令的另一可能的优点在于,它可以有助于简化编程和/或编译。如果向量缓存行写回指令不可用,则从处理数据的向量模式退出到处理数据的标量模式和/或使用多个标量缓存行清除或其它缓存行写回指令的需求一般往往会使编程和编译复杂化。增加的指令数量和/或交插向量和标量运算的需要可能往往使算法复杂化。执行标量缓存行写回指令可能往往涉及到繁琐的簿记以关联它们与散布指令的打包存储器索引。这可能往往增加编程和/或编译的复杂度。如果使用了断言的(predicated)或被掩蔽的散布指令来选择性地散布数据元素中的仅一些数据元素(例如,未被掩蔽的数据元素)而不散布其它数据元素(例如,被掩蔽的数据元素),则复杂度的量可能进一步增加。在此情况下,编程器或编译器可能附加地需要解释被掩蔽的散布指令的掩码,以便执行分离的或单独的标量缓存行清除指令。再者,这可能导致指令数量增加并且潜在地增加分支数量,这可能往往使性能降级。
这些优点可以尤其是在使用持久性存储器的实现中被观察到,例如由于清除缓存之中的数据或以其它方式将缓存之中的数据向持久性存储器写入以使得数据能够变得持久的增加的数量。然而,应领会的是,无论是否使用持久性存储器,向量缓存行写回指令都是有用的。例如,即使在不使用持久性存储器用于主要存储和/或持久性存储器不可由处理器直接寻址的实现中,向量缓存行写回指令对于帮助管理处理器缓存中的数据(例如,帮助改进缓存的效率或利用率)也是有用的。作为一个例证性示例,线程可以迭代数次以计算稀疏数据结构中的数个值。一旦计算出了最终的值,则线程可能希望驱逐来自缓存层次中的与所述值相关联的缓存行。可以这样做以便管理缓存、改进缓存利用率或效率或用于其它目的。例如,可以这样做以帮助释放缓存用于其它更多相关数据。作为另一示例,这还可以有助于避免未来的修改(M)到无效(I)和/或修改(M)到共享(S)的写回丛发。因此,不管是否使用持久性存储器,向量缓存行写回指令对于清除或以其它方式写回来自缓存层次的缓存行都是有用的。这些仅仅是可以实现的可能优点的一些例证性示例,并且应领会到,实施例不限于实现这些优点。
缓存一致性系统、(一个或多个)缓存控制器、总线接口单元和/或处理器可以包括具体或特定的逻辑(例如,晶体管、集成电路、或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其它硬件),其可操作以响应于向量缓存行写回指令和/或作为向量缓存行写回指令的结果(例如,响应于从向量缓存行写回指令解码的一个或多个指令或控制信号)来执行向量缓存行写回指令和/或存储结果。
为了避免使描述含糊难懂,示出和描述了相对简单的处理器302。然而,处理器可以可选地包括其它处理器组件。例如,各种不同的实施例可以包括针对图9中的任何和/或图13-16中的任何所示出和描述的组件的各种不同的组合和配置。处理器的所有组件可以耦合在一起以允许它们按意图进行操作。
图4是执行向量缓存行写回指令的实施例的方法460的实施例的流程框图。在各种实施例中,该方法可以由处理器、指令处理装置或其它数字逻辑器件来执行。在一些实施例中,图4的方法可以由图3的处理器执行和/或在图3的处理器内执行。本文针对图3的处理器描述的组件、特征和具体的可选细节也可选地适用于图4的方法。替换地,图4的方法可以由相似或不同的处理器或装置来执行和/或在相似或不同的处理器或装置内执行。此外,图3的处理器可以执行与图4的方法相同、类似或不同的方法。
方法包括在块461处接收向量缓存行写回指令。在各个方面中,可以在处理器或其一部分(例如,指令提取单元、解码单元、总线接口单元等)处接收指令。在各个方面中,可以从处理器外和/或管芯外的源(例如,从存储器、互连等)接收指令,或者从处理器上和/或管芯上的源(例如,从指令缓存、指令队列等)接收指令。向量缓存行写回指令可以指定或以其它方式指示具有多个存储器索引的源打包存储器索引操作数。
方法包括在块462处响应于向量缓存行写回指令,使得将一致性域中的任何缓存中的任何脏缓存行(其存储由源打包存储器索引操作数的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据)向一个或多个存储器和/或存储设备写回。在一些实施例中,方法还可以包括使任何暗示的缓存行(例如,脏的和被写回的缓存行以及未被修改的那些缓存行等)无效。在一些实施例中,方法还可以包括将被写回的脏缓存行的状态改为未修改状态。
图5是适用于向量缓存行写回指令的实施例的源打包存储器索引操作数548的示例实施例的框图。源打包存储器索引操作数具有N个打包存储器索引I1到IN。在各种实施例中,存储器索引的数量(N)可以是至少两个、至少四个、至少八个、至少十六个、至少三十二个、或多于三十二个。在各种实施例中,源打包存储器索引操作数的宽度可以是64位、128位、256位、512位、1024位、或多于1024位。替换地,可以可选地使用更宽、更窄、或仅仅是不同宽度的操作数作为代替。在各种实施例中,每个存储器索引的宽度可以是16位、32位或64位。替换地,可以可选地使用更宽、更窄、或仅仅是不同宽度的存储器索引作为代替。
图6是适用于向量缓存行写回指令的实施例的源打包存储器索引操作数648和对应的源打包数据操作掩码操作数668的示例实施例的框图。源打包存储器索引操作数648可以具有与先前针对图5的源打包存储器索引操作数548所描述的相同的特性和变化。
源打包数据操作掩码操作数668也可以在本文中简称为操作掩码、断言掩码或掩码。掩码可以表示可以用于掩蔽、断言、或者有条件地控制是否要执行对应操作(例如,对应存储器地址暗示的脏缓存行写回操作)的断言操作数或条件控制操作数。在一些实施例中,掩蔽或断言可以是处于每存储器索引的粒度,以使得对不同存储器索引的操作可以被与其它存储器索引分离地和/或独立地进行断言或条件控制。掩码可以包括多个掩码元素(M),其可以表示断言元素或条件控制元素。在一个方面中,可以与源打包存储器索引操作数的对应存储器索引(I)一一对应地包括掩码元素(M)。如图所示,源打包数据操作掩码操作数668可以具有N个对应的掩码元素M1至MN。每个掩码元素可以对应于所述操作数内的对应或相关位置中的存储器索引中的不同的一个。例如,M1可以对应于II,M2可以对应于I2,以此类推。
在一些实施例中,每个掩码元素可以是单个掩码位。在这种情况下,掩码可以具有用于每个存储器索引的位。每个掩码位或元素的值可以控制是否要执行对应的操作(例如,对应的存储器地址暗示的脏缓存行写回操作)。每个掩码位可以具有允许使用对应存储器索引来执行操作的第一值,或者可以具有不允许使用对应存储器索引来执行操作的第二不同值。根据一种可能的约定,被清零为二进制零(即,0)的掩码位可以表示不应被执行的被掩蔽或断言的操作,而被设置为二进制一(即,1)的掩码位可以表示要执行的未被掩蔽或非断言的操作。在图示出的示例中,掩码位值从左到右为0、1、1、0,但是这仅仅是一个示例。根据此示例,存储存储器索引I1和IN或由存储器索引I1和IN所暗示的缓存一致性域中的脏缓存行的写回被断言并且不需要被执行,但是存储存储器索引I2和I3或由存储器索引I2和I3所暗示的缓存一致性域中的脏缓存行的写回未被断言并且需要被执行。在其它实施例中,可以可选地为每个掩码元素使用两个或更多个位(例如,每个掩码元素可以具有与每个对应的存储器索引相同数量的位,并且可以使用全部位或少至单个位(例如,最高有效位或最低有效位)用于掩蔽或断言。
图7是图示出可以响应于被可选地掩蔽的向量缓存行写回指令的实施例而执行的被可选地掩蔽的向量缓存行写回操作770的实施例的框图。该指令可以指定或以其它方式指示具有多个打包存储器索引(I)的源打包存储器索引操作数748。在该图示中,源打包存储器索引操作数具有N个存储器索引I1到IN。源打包存储器索引操作数和存储器索引可以具有与先前针对图5的操作数548和索引所描述的相同的特性和变化。在若干例证性示例实施例中,源打包存储器索引操作数的宽度可以是64位、128位、256位、512位或1024位,并且每个存储器索引的宽度可以是16位、32位、或64位,但是本发明的范围不限于此。
在一些实施例中,该指令还可以可选地指定或以其它方式指示具有多个掩码元素(M)的可选的源打包数据操作掩码操作数768,但是这不是必需的。所述指令的其它实施例可选地不需要指示或使用这样的掩码。在该图示中,掩码具有N个掩码元素M1至MN。可以存在针对每个对应的存储器索引的一个掩码元素。在一个方面中,对应的掩码元素和存储器索引可以具有操作数内的相同的相对位置。例如,II和M1可以对应,I2和M2可以对应,以此类推。掩码元素的数量可以正如存储器索引的数量可能变化那样变化。掩码和掩码元素可以具有与先前针对图6的掩码668和掩码元素(M)所描述的相同的特性和变化。根据一种可能的约定,如该图示中所示,被清零为二进制零(即0)的掩码位可以表示不需要执行的被掩蔽的操作,而被设置为二进制一(即1)的掩码位可以表示要执行的未被掩蔽的操作。在图示出的示例中,与M1、M2、MN相对应的掩码位或元素未被掩蔽,使得将执行对应的操作,而对应于M3的掩码位或元素被掩蔽,使得将不执行对应的操作。
响应于指令和/或作为指令的结果,可以执行被可选地掩蔽的向量缓存行写回操作。被可选地掩蔽的操作可以使得服从于可选掩码768中的对应可选掩码元素(M)的掩蔽或断言,针对在缓存一致性域中的、在任何处理器或其它实体中处于任何缓存级别的任何缓存(包括一个或多个缓存740)中的任何脏缓存行(CL)执行向存储器/存储设备724的缓存行写回776,所述脏缓存行存储由源打包存储器索引操作数748中的存储器索引(I)指示和/或导出自源打包存储器索引操作数748中的存储器索引(I)的任何存储器地址的数据或者以其它方式与所述存储器地址对应。在所图示出的示例中,存储器索引I1、I2和IN未由对应的掩码元素M1、M2和MN掩蔽,使得要执行对应的写回操作。如图所示,任何脏缓存行(CL)可以被写回到存储器/存储设备724中由存储器索引I1、I2和IN指示或导出自存储器索引I1、I2和IN的存储器位置。相反,在此示例中,存储器索引I3被对应的被掩蔽掉的掩码元素M3所掩蔽,使得将不执行对应的写回操作。如通过星号(*)示出的,脏缓存行未被写回到由存储器索引I3指示的存储器位置,而是此存储器位置中的初始缓存行可以保留不变。
最初,在一些实施例中,响应于该指令,可以不进行径直到存储器/存储设备724的脏缓存行写回776。相反,最初且临时地可以进行到中间位置中的写回。如图所示,在一些实施例中,该中间位置可以是处理器的存储器子系统单元的存储缓冲器748。如参考标号775处所示,存储缓冲器可以临时缓冲或以其它方式存储与存储器索引I1、I2和IN相对应、而不与I3相对应(因为I3被掩蔽掉了)的任何脏缓存行。存储器子系统单元可以可操作以确保满足适合的存储器排序规则。替换地,所述写回可以可选地是到其它位置的,诸如例如径直到存储器/存储设备724、到中间电力故障安全缓冲器、中间电池后备中间位置、或能够确保满足适合的存储器排序规则的另一组件或存储,仅举几例。随后,可以在执行所述指令之外再实行到存储器/存储设备724的存储778来完成写回。
在一些实施例中,除了写回存储由存储器索引指示或与存储器索引相对应的存储器地址的数据的任何脏缓存行之外,如参考标号771处所示,可以可选地在其中存储了它们的一致性域中的任何缓存中使这些缓存行无效。除了写回这些脏缓存行的操作770之外,这些脏缓存行也可以并发或同时地使这些缓存行无效(例如,将缓存一致性协议状态改为无效)。这可以表示从缓存一致性域中的任何缓存中清除这些缓存行。缓存中的被无效的数据可以很快被其它数据替代。除了脏缓存行之外,由存储器索引暗示的其它缓存行(例如,未修改的缓存行)也可以被无效。
在其它实施例中,除了写回存储由存储器索引指示的存储器地址的数据的脏缓存行之外,如参考标号773处所示,这些缓存行可以可选地被保留或保持存储在其中存储了它们的一致性域中的任何缓存中,但是这些缓存行的缓存一致性协议状态可以被改为未修改状态。除了写回这些脏缓存行的操作770之外,这些脏缓存行也可以并发或同时地被改为未修改的缓存一致性协议状态。保留缓存中的数据允许随后从缓存中再次读取并利用所述数据。
在其它实施例中,指令可以可选地将向量存储索引或散布操作与向量缓存行写回操作组合。代表性地,最初可以执行散布操作以基于一组存储器索引来将数据元素散布或存储到缓存一致性域中的缓存中,并且然后向量缓存行写回操作可以使用相同的存储器索引来将缓存一致性域之中的脏缓存行向存储器/存储设备写回。
图8是图示出可以响应于被可选地掩蔽的向量存储索引和缓存行写回指令的实施例而执行的被可选地掩蔽的向量存储索引和缓存行写回操作880的实施例的框图。该指令可以指定或以其它方式指示具有多个打包存储器索引(I)的源打包存储器索引操作数848。在该图示中,源打包存储器索引操作数具有N个存储器索引I1到IN。源打包存储器索引操作数和存储器索引可以具有与先前针对图5的操作数548和索引所描述的相同的特性和变化。在若干例证性示例实施例中,源打包存储器索引操作数的宽度可以是64位、128位、256位、512位或1024位,并且每个存储器索引的宽度可以是16位、32位、或64位,但是本发明的范围不限于此。
该指令还可以指定或以其它方式指示具有多个打包数据元素(B)的源打包数据元素操作数881。在该图示中,源打包数据元素操作数具有N个存储器索引B1至BN。对于每个对应的存储器索引可以存在一个数据元素,并且数据元素的数量可以正如存储器索引的数量可能变化那样变化。在若干例证性示例实施例中,数据元素可以是32位单精度浮点或64位双精度浮点数据元素,但是本发明的范围不限于此。不要求数据元素的尺寸或宽度与对应的存储器索引的尺寸或宽度相同,或者源打包数据元素操作数的尺寸或宽度与源打包存储器索引操作数的尺寸或宽度相同。
在一些实施例中,该指令还可以可选地指定或以其它方式指示具有多个掩码元素(M)的可选的源打包数据操作掩码操作数868,但是这不是必需的。所述指令的其它实施例可选地不需要使用这样的掩码。在该图示中,掩码具有N个掩码元素M1至MN。可以存在针对每个对应的存储器索引和/或每个对应的数据元素的一个掩码元素。在一个方面中,对应的掩码元素、存储器索引和数据元素可以是在操作数内的相同的相对位置中。例如,II、B1和M1可以全部对应,I2、B2和M2可以全部对应,以此类推。掩码元素的数量可以正如存储器索引和/或数据元素的数量可能变化那样变化。掩码和掩码元素可以具有与先前针对图6的掩码668和掩码元素(M)所描述的相同的特性和变化。根据一种可能的约定,如该图示中所示,被清零为二进制零(即0)的掩码位可以表示不需要执行的被掩蔽的操作,而被设置为二进制一(即1)的掩码位可以表示要执行的未被掩蔽的操作。在图示出的示例中,与M1、M2、MN相对应的掩码位或者元素未被掩蔽,使得将执行对应的操作,而对应于M3的掩码位或元素被掩蔽掉,使得将不执行对应的操作。
响应于指令和/或作为指令的结果,服从于可选掩码868中的对应可选掩码元素(M)的掩蔽或断言,可以执行被可选地掩蔽的向量存储索引和缓存行写回操作。被可选地掩蔽的操作可以将数据元素(B)从源打包数据元素操作数881散布、写入、或存储878到一个或多个存储器和/或存储设备824中由源打包存储器索引操作数848中的对应存储器索引(I)所指示的存储器位置。在一些实施例中,数据元素(B)可以被散布或存储到存储器/存储设备824中的可选地/潜在地不连续的存储器位置和/或可选地/潜在地非顺序的缓存行,这取决于存储器索引(I)的特定灵活值。例如,如在该图示中所示,数据元素B1可以被存储到由存储器索引I1指示的存储器位置,数据元素B2可以被存储到由存储器索引I2指示的存储器位置,并且数据元素BN可以被存储到由存储器索引IN指示的存储器位置。相反,在此示例中,通过被掩蔽掉的掩码元素M3来掩蔽掉针对数据元素B3的操作。如通过星号(*)所示的,数据元素B3可以不被存储在此存储器位置中,相反此存储器位置中的初始值可以保留不变。在一些实施例中,数据元素(B)到存储器/存储设备中的存储可以顺序地执行,并且可以跨操作数进行排序。例如,可以存储最低次序的未被掩蔽的数据元素(例如,B1),然后可以存储下一个最低次序的数据元素(例如,B2),以此类推直至存储最高有效的未被掩蔽的数据元素(例如,BN)。
最初,可以不进行径直到存储器/存储设备824的实现指令的存储874,而是可以临时进行到缓存一致性域中的一个或多个缓存840中的存储874。被可选地掩蔽的操作还可以包括服从于可选掩码868的对应可选掩码元素(M)的掩蔽或断言,执行在缓存一致性域中的、在任何处理器或其它实体中处于任何缓存级别的任何缓存(包括一个或多个缓存840)中的任何脏缓存行从(一个或多个)缓存840向存储器/存储设备824的缓存行写回876,所述脏缓存行存储与由源打包存储器索引操作数848中的存储器索引(I)指示的存储器地址相对应的数据。如图所示,在一些实施例中,响应于所述指令,可以不执行径直到存储器/存储设备的缓存行写回。相反,在一些实施例中,可以执行到存储器子系统单元的存储缓冲器848的缓存行写回,这能够确保满足适合的存储器排序规则。最初,在将数据元素B1、B2和BN随后存储到存储器/存储设备824中之前,可以将数据元素B1、B2和BN从(一个或多个)缓存840写回到这些存储缓冲器848中。在其它实施例中,所述写回可以可选地是到其它位置,诸如例如径直到存储器/存储设备824、到中间电力故障安全缓冲器、中间电池后备的中间位置、或能够确保满足适合的存储器排序规则的存储器的另一组件或存储,仅举几例。
在一些实施例中,除了写回存储对应于由存储器索引指示的存储器地址的数据的脏缓存行之外,这些缓存行可以可选地在其中存储了它们的一致性域中的任何缓存中被无效。例如,这些缓存行的缓存一致性协议状态可以被改为无效状态。这可以表示从缓存一致性域中的任何缓存中清除这些缓存行。如在参考标号882处所示,在一些实施例中,该操作可以将B1、B2和BN存储在(一个或多个)缓存840中,并且并发或同时地使具有B1、B2和BN的对应缓存行无效(例如,将缓存一致性协议状态改为无效)。虽然这种方法并未纯粹绕过缓存,但它一般往往与完全绕过(一个或多个)缓存的非暂时性存储具有对于(一个或多个)缓存的大致相同的效果,因为缓存中的无效数据可以很快被其它数据替代。
在其它实施例中,除了写回存储与由存储器索引指示的存储器地址有关的数据的脏缓存行之外,这些缓存行可以可选地被保留或保持存储在一致性域中的其中存储了它们的任何缓存中,但是这些缓存行的缓存一致性协议状态可以被改为未修改状态。如在参考标号884处所示,在一些实施例中,该操作可以将B1、B2和BN存储在(一个或多个)缓存840中,并且并发或同时地将具有B1、B2和BN的对应缓存行的缓存一致性协议状态改为未修改状态。保留缓存中的数据允许随后再次自缓存读取并利用所述数据。
有利地,散布或向量存储索引操作与向量缓存行写回操作的这种组合可以有助于简化编程和编译。可以无需将后续分离的向量缓存行写回指令或一组分离的标量缓存行清除指令映射到散布指令。相反,单个指令可以共同地归并(merge)这两个操作,并且具有减少的编程误差(由于不正确的映射)的几率。这还可以减少需要执行的指令的总体数量,并且可以有助于改进性能。
在一个方面中,这样的指令操作可以为来自向量散布清除/写回操作的微架构优化提供机会。在执行散布操作的过程中,核心可以获得散布操作覆盖的各种缓存行的独占所有权。该同样的核心可以实现贪婪试探(greedy heuristic),以保持那些缓存行的独占所有权达再多一些的时钟周期。因此,如果散布清除操作足够快地进行(这预期是通常的情况),则不必执行全局握手,因为其它核心那时由于当前核心获得并保持了数个周期的所有权而不能具有修改(M)、独占(E)或共享(S)状态中的那些行。因此,这种向量散布清除/写回操作的边际成本应是可忽略的,因为这些操作将不会需要全局协作来驱逐受影响的缓存行。
某些处理器能够相对于指令在原始程序或代码中显现的原始程序顺序无序(OoO)地执行指令。除了OoO执行之外,弱排序的存储器类型可以用于通过诸如推测性读取、写组合和写折叠之类的技术来实现更高的处理器性能。当通过加载和/或存储来访问一个或多个存储器中的位置时,此类方面可能提出某些挑战。数据的消耗方识别或知道数据是弱排序的程度在应用当中变化,而此数据的产生方可能对该程度并不知道。代表性地,存储指令的结果可变得立即对执行存储指令的处理器可见(例如,可以存储在该处理器缓存中),但是可能不会立即变得对同一系统中的其它处理器或其它实体可见。同一系统中的另一处理器可以写入相同的存储器位置(例如,到其缓存中的一个存储器位置),但是这些存储操作的结果可能需要一些时间来提交到存储器。由于缓存,这可能对于两个处理器显现为它们的存储操作最先执行。
在一些实施例中,可以在向量缓存行写回指令之前和/或之后包括一个或多个存储器访问围栏指令,以帮助使存储器访问相对于脏缓存行写回串行化。一种合适类型的围栏指令是可操作以串行化加载和存储操作二者的完整存储器访问围栏指令。例如,在一些实施例中,完整存储器围栏指令可以可操作以对在存储器围栏指令前发布的所有从存储器加载和存储到存储器指令执行串行化操作。此串行化操作可以保证程序顺序上在存储器围栏指令前的每个加载和存储指令在程序顺序上跟随存储器围栏指令的任何加载或存储指令之前变得全局可见。另一种合适类型的围栏指令是可操作以串行化存储操作的存储围栏指令。例如,在一些实施例中,存储围栏指令可以可操作以对在存储围栏指令前发布的所有存储到存储器指令执行串行化操作。此串行化操作可以保证程序顺序上在存储围栏指令前的每个存储指令在跟随存储围栏指令的任何存储指令之前变得全局可见。这样的存储器访问围栏指令可以帮助确保产生弱排序结果的例程和消耗该数据的例程之间的存储器访问排序。
在其它实施例中,向量缓存行写回指令可以可选地并入或集成存储器访问围栏能力。例如,在一些实施例中,向量缓存行写回指令可以并入或集成存储围栏能力或属性,其允许用于串行化存储指令/操作的指令。在一些实施例中,除了如先前所述使得脏缓存行被写回之外,向量缓存行写回指令也可以使处理器对在向量缓存行写回指令之前发布的所有存储到存储器指令执行串行化操作。此串行化操作可以保证程序顺序上在向量缓存行写回指令之前的每个存储指令在跟随向量缓存行写回指令的任何存储指令之前变得全局可见。替换地,向量缓存行写回指令可以并入或集成完整存储器访问围栏能力或属性,其允许用于串行化加载和存储指令/操作二者的指令。在一些实施例中,除了促使如前所述地写回脏的缓存行之外,向量缓存行写回指令还可以使处理器对在向量缓存行写回指令之前发布的所有从存储器加载和存储到存储器指令执行串行化操作。此串行化操作可以保证在程序顺序上在向量缓存行写回指令之前的每个加载和存储指令在程序顺序上跟随向量缓存行写回指令的任何加载或存储指令之前变得全局可见。这些围栏属性或能力可以与本文公开的向量缓存行写回指令的各种不同实施例一起使用,诸如例如将缓存中的指示的缓存行无效的那些指令、保留缓存中所指示的缓存行但处于未修改状态的那些指令、以及附加地并入散布操作的那些指令。这种围栏属性或能力可以有助于确保产生弱排序结果的例程和消费该数据的例程之间的存储器访问排序。此外,这样的围栏属性或能力可以有助于减少指令的数量(例如,消除分离的围栏指令)和/或减少由不正确的存储器访问排序引起的编程错误的几率。
在可选地使用持久性存储器的实现中,到持久性存储器的存储一般不是持久性的,直到存储数据到达持久性存储器或中间电力故障保护缓冲器或存储。虽然向量缓存行写回指令可以有助于确保从易失性缓存写回数据,但数据可能尚未实际达到此类目的地。例如,如上所述,在一些实施例中,只要写回的数据到达存储器子系统单元写缓冲器,指令就可以完成。这意指,为了确保到持久性存储器的写入确实被提交为持久,软件可能进一步需要确保已经完成来自处理器中的这种易失性写缓冲器或其它非持久性结构的数据的写回径直到持久性或持续性。
在一些实施例中,可以可选地与本文公开的向量缓存行写回指令一起使用分离的持久性提交指令。持久性提交指令可以可操作以向持久性存储器提交存储。在一个方面中,持久性提交指令可以可操作以通过应用已被接受到存储器的那些存储来使得到持久性存储器范围的某些存储到存储器操作变得持久(受电力故障保护)。在一个方面中,如果在到持久性存储器范围的存储被接受到存储器之后执行持久性提交指令,则当持久性提交指令变得全局可见时可以确保该存储变得持久。
在其它实施例中,集成或并入存储或完整存储器访问围栏属性或能力的向量缓存行写回指令可以可选地附加地集成或并入持久性提交属性或能力。在一些实施例中,除了如先前所描述的那样使得脏缓存行被写回之外,并且除了如前所述的存储器访问围栏之外,向量缓存行写回指令也可以使处理器提交到持久性存储器的存储(包括脏缓存行到持久性存储器的写回)。
这样的向量缓存行写回指令可以可操作以通过应用已经被接受到持久性存储器的那些存储来使得到持久性存储器范围的某些存储到存储器操作(包括脏缓存行写回操作)变得持久(受电力故障保护)。在一个方面中,具有持久性提交属性或能力的向量缓存行写回指令可以使得:当向量缓存行写回指令变得全局可见时,确保被接受到存储器的到持久性存储器范围的任何脏缓存行写回以及被接受到存储器的到持久性存储器范围的任何在先存储变得持久。在一些实施例中,仅在将向量缓存行写回指令的写回完成到电力安全体制中时才可以准许完成跟随这样的向量缓存行写回指令的指令。
图9是适用于实现本发明的实施例的处理器902的详细示例实施例的框图。该处理器包括能够执行向量缓存行写回指令的实施例的至少一个核心903。该核心包括预测程序流中的分支的分支预测单元986。分支预测单元与指令预提取单元987耦合。指令预提取单元可以从存储器(例如,通过存储器单元993)预提取或以其它方式接收包括向量缓存行写回指令的指令。一级(L1)指令缓存910-1与指令预提取单元耦合。L1指令缓存可以缓存或以其它方式存储包括向量缓存行写回指令的指令。处理器还包括用于缓存或以其它方式存储包括用于指令的数据元素和/或操作数的数据的L1数据缓存910-2。处理器还可选地包括二级(L2)缓存912。L2缓存可以专用于核心,或者由该核心和一个或多个其它可选核心(未示出)共享。L2缓存可以存储数据和指令(包括向量缓存行写回指令)。指令提取单元988与L1指令缓存、L2缓存和解码单元936耦合。指令提取单元可以(例如,从L1指令缓存或L2缓存)提取或以其它方式接收包括向量缓存行写回指令的指令,并且可以向解码单元提供所述指令。解码单元可以对包括向量缓存行写回指令的指令进行解码,如本文其它地方描述的。
处理器还包括一个或多个寄存器文件单元991。(一个或多个)寄存器文件单元可以包括各种不同类型的寄存器,诸如例如打包数据寄存器、通用寄存器、状态或标志寄存器、控制或配置寄存器等。在核心可选地支持无序(OOO)执行的实施例中,核心还可以可选地包括与(一个或多个)寄存器文件单元耦合的寄存器重命名/分配器单元989以分配资源并对寄存器(例如,与向量缓存行写回指令相关联的打包数据寄存器)执行寄存器重命名。此外,对于OOO执行,核心可以可选地包括与解码单元、重命名/分配器单元和一个或多个执行单元938A/B耦合的一个或多个调度器单元990。(一个或多个)调度器单元可以调度与已解码指令相关联的一个或多个操作(包括解码自向量缓存行写回指令的一个或多个操作)以供在执行单元上执行。核心可以可选地具有多个不同类型的执行单元,诸如例如整数执行单元、浮点执行单元、向量执行单元、一个或多个存储器访问单元938B等。对于OOO执行,核心可以可选地包括与执行单元、(一个或多个)寄存器文件单元和重命名/分配器单元耦合的引退或提交单元992。引退或提交单元可以可操作以引退或提交指令。
应领会到,这只是合适的处理器的一个例证性示例。在替换实施例中,处理器可以包括更少或更多的组件。可以可选地包括的其它组件的示例是一个或多个指令和/或数据转译后备缓冲器(TLB)、一个或多个重排序缓冲器(ROB)、保留站、地址生成单元、调试单元、性能监控单元、电源管理单元。此外,处理器可以可选地具有多个核心(例如,至少两个、至少四个、至少八个、至少三十个等)。在一些情况下,所有核心都可以具有相同的组件并支持与核心980相同的指令集。替换地,核心中的至少一些可以具有不同的组件和/或可以支持不同的指令集。
指令集包括一个或多个指令格式。给定的指令格式定义各种字段(位的数量、位的位置)来(除其它之外)指定要执行的操作(操作码)以及要对其执行操作的(一个或多个)操作数。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,给定指令格式的指令模板可以被定义成具有指令格式的字段的不同子集(所包括的字段通常是以相同的顺序,但是至少某些具有不同的位位置,因为包括了较少的字段)和/或被定义成具有以不同方式解释的给定字段。因此,使用给定的指令格式(并且如果定义了的话,以该指令格式的指令模板中的给定的一个)来表达ISA的每个指令,并且所述指令包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和指令格式,所述指令格式包括用以指定该操作码的操作码字段以及用以选择操作数(源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中的出现将在操作数字段中具有选择特定操作数的特定内容。已经发表和/或出版了称为高级向量扩展(AVX)(AVX1和AVX2)且使用向量扩展(VEX)编码方案的SIMD扩展集(例如,参见英特尔®64和IA-32架构软件开发者手册,2011年10月;并且参见英特尔®高级向量扩展编程参考,2011年6月)。
示例性指令格式
本文描述的(一个或多个)指令的实施例可以以不同的格式来实施。此外,下面详述了示例性系统、架构和流水线。(一个或多个)指令的实施例可以在这样的系统、架构和流水线上执行,但不限于详述的那些系统、架构和流水线。
指令格式
VEX编码允许指令具有两个以上的操作数,并允许SIMD向量寄存器比128位更长。VEX前缀的使用提供了三个操作数(或更多操作数)的语法。例如,前两个操作数指令执行操作(诸如A = A + B),该操作覆写了源操作数。VEX前缀的使用使操作数能够执行非破坏性(nondestructive)操作,诸如A = B + C。
图10A图示出包括VEX前缀1002、实际操作码字段1030、Mod R/M字节1040、SIB字节1050、位移字段1062和IMM8 1072的示例性AVX指令格式。图10B图示出来自图10A的哪些字段构成完整的操作码字段1074和基础操作字段1042。图10C图示出来自图10A的哪些字段构成寄存器索引字段1044。
VEX前缀(字节0-2)1002以三字节形式编码。第一字节是格式字段1040(VEX字节0、位[7:0]),其包含显式C4字节值(用于区分C4指令格式的唯一值)。第二第三字节(VEX字节1-2)包括提供具体功能的多个位字段。具体来说,REX字段1005(VEX字节1、位[7-5])由VEX.R位字段(VEX字节1、位[7]-R)、VEX.X位字段(VEX字节1、位[6]-X)和VEX.B位字段(VEX字节1、位[5]-B)组成。指令的其它字段如本领域已知的那样编码寄存器索引的低3位(rrr、xxx和bbb),以使得可以通过添加VEX.R、VEX.X和VEX.B来形成Rrrr、Xxxx和Bbbb。操作码映射字段1015(VEX字节1、位[4:0]-mmmmm)包括对隐含的前导操作码字节进行编码的内容。W字段1064(VEX字节2、位[7]-W)由记号VEX.W表示,并依据指令提供不同的功能。VEX.vvvv1020(VEX字节2、位[6:3]-vvvv)的作用可以包括以下各项:1)VEX.vvvv编码第一源寄存器操作数,其以逆(1s补码)形式指定并针对具有两个或更多个源操作数的指令有效;2)VEX.vvvv编码目的地寄存器操作数,其以1s补码形式指定以实现某些向量移位;或者3)VEX.vvvv不编码任何操作数,该字段被保留并应该包含1011b。如果VEX.L 1068尺寸字段(VEX字节2、位[2]-L)= 0,则它指示128位向量;如果VEX.L = 1,则它指示256位向量。前缀编码字段1025(VEX字节2、位[l:0]-pp)提供用于基础操作字段的附加位。
实际操作码字段1030(字节3)也称为操作码字节。在此字段中指定操作码的一部分。
MOD R/M字段1040(字节4)包括MOD字段1042(位[7-6])、寄存器(reg)字段1044(位[5-3])和R/M字段1046(位[2-0])。寄存器字段1044的作用可以包括以下各项:编码目的地寄存器操作数或源寄存器操作数(Rrrr中的rrr),或者被视为操作码扩展而不用于编码任何指令操作数。R/M字段1046的作用可以包括以下各项:编码引用存储器地址的指令操作数,或者编码目的地寄存器操作数或源寄存器操作数。
比例、索引、基础(SIB)——比例字段1050(字节5)的内容包括用于存储器地址生成的SS 1052(位[7-6])。SIB.xxx 1054(位[5-3])和SIB.bbb 1056(位[2-0])的内容已经在先前关于寄存器索引Xxxx和Bbbb被提及。
位移字段1062和立即数字段(IMM8)1072包含地址数据。
通用向量友好指令格式
向量友好指令格式是适用于向量指令(例如,存在特定于向量操作的某些字段)的指令格式。虽然描述了其中通过向量友好指令格式支持向量和标量操作二者的实施例,但是替换实施例仅使用向量友好指令格式的向量操作。
图11A-11B是根据本发明的实施例的图示出通用向量友好指令格式以及其指令模板的框图。图11A是根据本发明的实施例的图示出通用向量友好指令格式以及其A类指令模板的框图;而图11B是根据本发明的实施例的图示出通用向量友好指令格式以及其B类指令模板的框图。具体来说,针对其定义了A类和B类指令模板的通用向量友好指令格式1100,其二者都包括无存储器访问1105指令模板和存储器访问1120指令模板。在向量友好指令格式的情境中,术语通用指代没有被绑定至任何特定指令集的指令格式。
虽然将要描述其中向量友好指令格式支持以下内容的本发明的实施例:具有32位(4字节)或64位(8字节)数据元素宽度(或尺寸)的64字节向量操作数长度(或尺寸)(并且因此,64字节向量包括16个二倍字尺寸元素或替换地8个四倍字尺寸元素);具有16位(2字节)或8位(1字节)数据元素宽度(或尺寸)的64字节向量操作数长度(或尺寸);具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或尺寸)的32字节向量操作数长度(或尺寸);以及具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或尺寸)的16字节向量操作数长度(或尺寸);替换实施例可以支持具有更多、更少或不同数据元素宽度(例如,128位(16字节)数据元素宽度)的更多、更少和/或不同的向量操作数尺寸(例如,256字节向量操作数)。
图11A中的A类指令模板包括:1)在无存储器访问1105指令模板内示出无存储器访问、全舍入(full round)控制类型操作1110指令模板和无存储器访问、数据变换类型操作1115指令模板;以及2)在存储器访问1120指令模板内示出存储器访问、暂时性1125指令模板以及存储器访问、非暂时性1130指令模板。图11B中的B类指令模板包括:1)在无存储器访问1105指令模板内示出无存储器访问、写掩码控制、部分舍入(partial round)控制类型操作1112指令模板和无存储器访问、写掩码控制、vsize类型操作1117指令模板;以及2)在存储器访问1120指令模板内示出存储器访问、写掩码控制1127指令模板。
通用向量友好指令格式1100包括下文中以在图11A-11B中图示出的顺序列出的以下字段。
格式字段1140——该字段中的特定值(指令格式标识符值)唯一地识别向量友好指令格式,以及因而的在指令流中的以向量友好指令格式的指令的出现。同样地,该字段在对于仅具有通用向量友好指令格式的指令集而言不需要该字段的意义上是可选的。
基础操作字段1142——其内容区分不同的基础操作。
寄存器索引字段1144——其内容直接地或通过地址生成来指定源操作数和目的地操作数的位置(假设它们在寄存器中或在存储器中)。这些包括充足数量的位来从PxQ(例如,32x512、16x128、32x1024、64x1024)的寄存器文件中选择N个寄存器。虽然在一个实施例中N可以多达三个源和一个目的地寄存器,但是替换实施例可以支持更多或更少个源和目的地寄存器(例如,可以支持多达两个源,其中,这些源中的一个还充当目的地;可以支持多达三个源,其中,这些源中的一个还充当目的地;可以支持多达两个源和一个目的地)。
修饰符字段1146——其内容将指定存储器访问的以通用向量友好指令格式的指令的出现与不指定存储器访问的指令的出现进行区分;即,在无存储器访问1105指令模板和存储器访问1120指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层级(在某些情况下,使用寄存器中的值来指定源和/或目的地地址),而无存储器访问操作不读取和/或写入到存储器层级(例如,源和目的地是寄存器)。虽然在一个实施例中该字段还在三种不同方式之间进行选择以执行存储器地址计算,但是替换实施例可以支持更多、更少或不同的方式来执行存储器地址计算。
增加操作字段1150——其内容区分除了基础操作之外要执行各种不同操作中的哪一个。该字段是情境特定的。在本发明的一个实施例中,该字段被划分成类字段1168、α字段1152和β字段1154。增加操作字段1150允许在单个指令而不是2、3或4个指令中执行公共操作组。
比例字段1160——其内容允许针对存储器地址生成对索引字段的内容的缩放(例如,针对使用2比例*索引+基数的地址生成)。
位移字段1162A——其内容用作存储器地址生成的一部分(例如,针对使用2比例*索引+基数+位移的地址生成)。
位移因数字段1162B(注意,位移字段1162A直接在位移因数字段1162B之上的并置指示使用一个或另一个)——其内容用作地址生成的一部分;其指定要被存储器访问(N)的尺寸缩放的位移因数——其中N是存储器访问中的字节数(例如,针对使用2比例*索引+基数+经缩放的位移的地址生成)。忽视冗余的低阶位,并且因此,将位移因数字段的内容乘以存储器操作数总尺寸(N)以便生成要在计算有效地址时使用的最终位移。由处理器硬件在运行时间基于全操作码字段1174(本文中稍后描述)和数据操纵字段1154C来确定N的值。位移字段1162A和位移因数字段1162B在它们不用于无存储器访问1105指令模板和/或不同的实施例可以实现二者中的仅一个或一个都不实现的意义上是可选的。
数据元素宽度字段1164——其内容区分要使用多个数据元素宽度中的哪一个(在一些实施例中针对所有指令;在其它实施例中针对指令中的仅某些)。该字段在如果仅支持一个数据元素宽度和/或使用操作码的某一方面支持数据元素宽度的情况下不需要该字段的意义上是可选的。
写掩码字段1170——其内容基于每数据元素位置来控制目的地向量操作数中的数据元素位置是否反映基础操作和增加操作的结果。A类指令模板支持归并写掩蔽(merging-writemasking),而B类指令模板支持归并写掩蔽和归零写掩蔽二者。当归并时,向量掩码允许在(由基础操作和增加操作指定的)任何操作的执行期间保护目的地中的任何元素集合免于更新;在另一实施例中,保留其中对应掩码位具有0的目的地的每个元素的旧值。相比之下,当归零时,向量掩码允许在(由基础操作和增加操作指定的)任何操作的执行期间使目的地中的任何元素集合归零;在一个实施例中,当对应掩码位具有0值时将目的地的元素设置成0。该功能的子集是控制所执行的操作的向量长度(即,从第一个到最后一个,所修改的元素的跨度)的能力;然而,并非必要的是,所修改的元素不一定是连贯的。因此,写掩码字段1170允许部分向量操作,包括加载、存储、算术、逻辑等。虽然描述了其中写掩码字段1170的内容选择包含要使用的写掩码的多个写掩码寄存器中的一个(并且因而写掩码字段1170的内容直接识别要执行的掩蔽)的本发明的实施例,但是替换实施例替代地或附加地允许写掩码字段1170的内容直接指定要执行的掩蔽。
立即数字段1172——其内容允许指定立即数。该字段在其不存在于不支持立即数的通用向量友好格式的实现中且其不存在于不使用立即数的指令中的意义上是可选的。
类字段1168——其内容区分指令的不同类。参考图11A-B,该字段的内容在A类和B类指令之间进行选择。在图11A-B中,使用圆角方形来指示在字段中存在特定值(例如,在图11A-B中,A类1168A和B类1168B分别针对类字段1168)。
类的指令模板
在A类的无存储器访问1105指令模板的情况下,α字段1152被解释为RS字段1152A,其内容区分要执行不同增加操作类型中的哪一个(例如,分别针对无存储器访问、舍入类型操作1110和无存储器访问、数据变换类型操作1115指令模板指定舍入1152A.1和数据变换1152A.2),而β字段1154区分要执行指定类型的操作中的哪一个。在无存储器访问1105指令模板中,不存在比例字段1160、位移字段1162A和位移比例字段1162B。
无存储器访问指令模板——全舍入控制类型操作
在无存储器访问全舍入控制类型操作1110指令模板中,β字段1154被解释为舍入控制字段1154A,其(一个或多个)内容提供静态舍入。虽然在所描述的本发明的实施例中舍入控制字段1154A包括抑制所有浮点异常(SAE)字段1156和舍入操作控制字段1158,但是替换实施例可以支持可以将这两个概念编码到同一字段中或仅具有这些概念/字段中的一个或另一个(例如,可以仅具有舍入操作控制字段1158)。
SAE字段1156——其内容区分是否要禁用异常事件报告;当SAE字段1156的内容指示启用抑制时,给定的指令不报告任何种类的浮点异常标记,并且不引起任何浮点异常处置程序。
舍入操作控制字段1158——其内容区分要执行一组舍入操作(例如,上舍入、下舍入、向零舍入以及向最近舍入)中的哪一个。因此,舍入操作控制字段1158允许基于每个指令改变舍入模式。在其中处理器包括控制寄存器以用于指定舍入模式的本发明的一个实施例中,舍入操作控制字段1150的内容覆盖(override)该寄存器值。
无存储器访问指令模板——数据变换类型操作
在无存储器访问数据变换类型操作1115指令模板中,β字段1154被解释为数据变换字段1154B,其内容区分要执行多个数据变换(例如,无数据变换、拌和(swizzle)、广播)中的哪一个。
在A类的存储器访问1120指令模板的情况下,α字段1152被解释为驱逐提示字段1152B,其内容区分要使用驱逐提示中的哪一个(在图11A中,分别针对存储器访问、暂时性1125指令模板和存储器访问、非暂时性1130指令模板指定暂时性1152B.1和非暂时性1152B.2),而β字段1154被解释为数据操纵字段1154C,其内容区分要执行多个数据操纵操作(也称为原语)(例如,无操纵、广播、源的上转换以及目的地的下转换)中的哪一个。存储器访问1120指令模板包括比例字段1160以及可选地包括位移字段1162A或位移比例字段1162B。
向量存储器指令执行从存储器的向量加载和到存储器的向量存储,具有转换支持。正如常规向量指令那样,向量存储器指令以逐个数据元素的方式从/向存储器传输数据,其中通过被选为写掩码的向量掩码的内容来命令实际传输的元素。
存储器访问指令模板——暂时性
暂时性数据是很可能足够快地被再次使用以从缓存获益的数据。然而,这是一种提示,并且不同的处理器可以以不同的方式实现它,包括完全忽视该提示。
存储器访问指令模板-非暂时性
非暂时性数据是不太可能足够快地被再次使用以从一级缓存中的缓存获益并且不应被给予驱逐优先级的数据。然而,这是一种提示,并且不同的处理器可以以不同的方式实现它,包括完全忽视该提示。
类的指令模板
在B类的指令模板的情况下,α字段1152被解释为写掩码控制(Z)字段1152C,其内容区分由写掩码字段1170控制的写掩蔽应是归并的还是归零的。
在B类无存储器访问1105指令模板的情况下,β字段1154的一部分被解释为RL字段1157A,其内容区分要执行不同增加操作类型中的哪一个(例如,分别针对无存储器访问、写掩码控制、部分舍入控制类型操作1112指令模板和无存储器访问、写掩码控制、VSIZE类型操作1117指令模板而指定舍入1157A.1和向量长度(VSIZE)1157A.2),而β字段1154的其余部分区分要执行指定类型的操作中的哪一个。在无存储器访问1105指令模板中,不存在比例字段1160、位移字段1162A和位移比例字段1162B。
在无存储器访问、写掩码控制、部分舍入控制类型操作1110指令模板中,β字段1154的其余部分被解释为舍入操作字段1159A并禁用异常事件报告(给定的指令不报告任何种类的浮点异常标记并且不引起任何浮点异常处置程序)。
舍入操作控制字段1159A——正如舍入操作控制字段1158一样,其内容区分要执行一组舍入操作(例如,上舍入、下舍入、向零舍入以及向最近舍入)中的哪一个。因此,舍入操作控制字段1159A允许基于每个指令改变舍入模式。在其中处理器包括控制寄存器以用于指定舍入模式的本发明的一个实施例中,舍入操作控制字段1150的内容覆盖该寄存器值。
在无存储器访问、写掩码控制、VSIZE类型操作1117指令模板中,β字段1154的其余部分被解释为向量长度字段1159B,其内容区分要对多个向量长度(例如,128、256或512字节)中的哪一个执行操作。
在B类的存储器访问1120指令模板的情况下,β字段1154的一部分被解释为广播字段1157B,其内容区分是否要执行广播类型数据操纵操作,而β字段1154的其余部分被解释为向量长度字段1159B。存储器访问1120指令模板包括比例字段1160以及可选地包括位移字段1162A或位移比例字段1162B。
关于通用向量友好指令格式1100,全操作码字段1174被示为包括格式字段1140、基础操作字段1142和数据元素宽度字段1164。虽然示出了其中全操作码字段1174包括这些字段中的全部的一个实施例,但是全操作码字段1174在不支持它们全部的实施例中包括少于这些字段的全部。全操作码字段1174提供操作代码(操作码)。
增加操作字段1150、数据元素宽度字段1164和写掩码字段1170允许基于以通用向量友好指令格式的每个指令来指定这些特征。
写掩码字段和数据元素宽度字段的组合产生了类型化指令,因为它们允许基于不同的数据元素宽度来应用掩码。
在A类和B类内发现的各种指令模板在不同的情况中是有益的。在本发明的一些实施例中,不同的处理器或处理器内的不同核心可以支持仅A类、仅B类或两个类。例如,意图用于通用计算的高性能通用无序核心可以支持仅B类,主要意图用于图形和/或科学(吞吐量)计算的核心可以支持仅A类,以及意图用于二者的核心可以支持二者(当然,具有来自两个类的模板和指令的某种混合但是不具有来自两个类的全部模板和指令的核心处于本发明的范围内)。同样,单个处理器可以包括多个核心,其全部支持相同的类或者其中不同的核心支持不同的类。例如,在具有单独的图形核心和通用核心的处理器中,主要意图用于图形和/或科学计算的图形核心中的一个可以支持仅A类,而通用核心中的一个或多个可以是支持仅B类的意图用于通用计算的具有无序执行和寄存器重命名的高性能通用核心。不具有单独的图形核心的另一处理器可以包括支持A类和B类的一个或多个通用有序或无序核心。当然,在本发明的不同实施例中,来自一个类的特征也可以被实现在另一个类中。以高级语言编写的程序将会被投放(例如,被准时化(just in time)编译或静态编译)成各种不同的可执行形式,包括:1)仅具有由目标处理器支持以用于执行的(一个或多个)类的指令的形式;或者2)具有使用全部类的指令的不同组合编写的替换例程且具有基于由当前正执行控制流程代码的处理器支持的指令来选择要执行的例程的控制流程代码的形式。
示例性特定向量友好指令格式
图12是根据本发明的实施例的图示出示例性特定向量友好指令格式的框图。图12示出特定向量友好指令格式1200,其在其指定了位置、尺寸、解释、和字段顺序、以及针对那些字段中的某些的值的意义上是特定的。特定向量友好指令格式1200可以用于扩展x86指令集,并且因此字段中的某些与在现存x86指令集和其扩展(例如,AVX)中使用的那些类似或相同。该格式与现存x86指令集以及扩展的前缀编码字段、实际操作码字节字段、MOD R/M字段、SIB字段、位移字段以及立即数字段保持一致。图示出来自图12的字段所映射到其中的来自图11的字段。
应理解的是,虽然出于说明性目的在通用向量友好指令格式1100的情境中参考特定向量友好指令格式1200描述本发明的实施例,但是本发明不限于特定向量友好指令格式1200,除要求保护情况以外。例如,通用向量友好指令格式1100预料到用于各字段的各种可能尺寸,而特定向量友好指令格式1200被示为具有特定尺寸的字段。作为特定示例,虽然数据元素宽度字段1164被图示为特定向量友好指令格式1200中的一位字段,但是本发明不被如此限制(即,通用向量友好指令格式1100预料到其它尺寸的数据元素宽度字段1164)。
通用向量友好指令格式1100包括下文中以在图12A中图示出的顺序列出的以下字段。
EVEX前缀(字节0-3)1202——以四字节形式编码。
格式字段1140(EVEX字节0,位[7:0])——第一字节(EVEX字节0)是格式字段1140,并且其包含0x62(在本发明的一个实施例中,用于区分向量友好指令格式的唯一值)。
第二到第四字节(EVEX字节1-3)包括提供特定能力的多个位字段。
REX字段1205(EVEX字节1,位[7-5])——包括EVEX.R位字段(EVEX字节1,位[7]-R)、EVEX.X位字段(EVEX字节1,位[6]-X)以及1157BEX字节1,位[5]-B)。EVEX.R、EVEX.X以及EVEX.B位字段提供与对应的VEX位字段相同的功能,并且使用1s补码形式来编码,即,ZMM0被编码为1011B,ZMM15被编码为0000B。指令的其它字段如本领域中已知的那样编码寄存器索引的低三位(rrr、xxx和bbb),使得可以通过添加EVEX.R、EVEX.X和EVEX.B来形成Rrrr、Xxxx和Bbbb。
REX'字段1110——这是REX'字段1110的第一部分,并且是用于编码扩展32寄存器集中的高16个或低16个的EVEX.R'位字段(EVEX字节1,位[4]-R')。在本发明的实施例中,将该位以及如下文指示的其它位以位逆格式来存储,以(在公知的x86 32位模式中)区分于BOUND指令,所述BOUND指令的实际操作码字节是62个、但是在MOD R/M字段(下文中描述)中不接受MOD字段中的值11;本发明的替换实施例不以逆格式存储该位和下文中指示的其它位。使用值1来编码低16个寄存器。换言之,通过组合EVEX.R'、EVEX.R以及来自其它字段的其它RRR来形成R'Rrrr。
操作码映射字段1215(EVEX字节1,位[3:0]-mmmm)——其内容编码暗示前导操作码字节(OF、OF 38或OF 3)。
数据元素宽度字段1164(EVEX字节2,位[7]-W)——由记号EVEX.W来表示。使用EVEX.W来定义数据类型的粒度(尺寸)(32位数据元素或64位数据元素)。
EVEX.vvvv 1220(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv的作用可以包括以下:1)EVEX.vvvv编码第一源寄存器操作数,其以逆(1s补码)形式指定并针对具有两个或更多个源操作数的指令有效;2)EVEX.vvvv编码目的地寄存器操作数,其以1s补码形式指定以实现某些向量移位;或者3)EVEX.vvvv不编码任何操作数,该字段被保留并应该包含1011b。因此,EVEX.vvvv字段1220编码以逆(1s补码)形式存储的第一源寄存器指定符的4个低阶位。取决于指令,使用额外的不同EVEX位字段来将指定符尺寸扩展成32个寄存器。
EVEX.U 1168类字段(EVEX字节2,位[2]-U)——如果EVEX.U=0,那么其指示A类或EVEX.U0;如果EVEX.U=1,那么其指示B类或EVEX.U1。
前缀编码字段1225(EVEX字节2,位[1:0]-pp)——对基础操作字段提供附加位。除了对以EVEX前缀格式的旧有(legacy)SSE指令提供支持之外,这还具有使SIMD前缀紧凑的益处(EVEX前缀仅要求两个位,而不是要求字节表达SIMD前缀)。在一个实施例中,为了支持使用以旧有格式和以EVEX前缀格式二者的SIMD前缀(66H、F2H、F3H)的旧有SSE指令,这些旧有SIMD前缀被编码到SIMD前缀编码字段中;并且在运行时间,它们在被提供给解码器的PLA之前被扩充成旧有SIMD前缀(因此,PLA可以执行这些旧有指令的旧有格式和EVEX格式二者而无需修改)。虽然较新的指令可以使用EVEX前缀编码字段的内容直接作为操作码扩展,但是某些实施例为了一致性而以类似方式扩充,但是允许由这些旧有SIMD前缀指定不同的含义。替换实施例可以重新设计PLA以支持2位SIMD前缀编码,并且因此不需要扩充。
α字段1152(EVEX字节3,位[7]-EH;也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制以及EVEX.N;也用α图示)——如先前所述,该字段是情境特定的。
β字段1154(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用βββ图示)——如先前所述,该字段是情境特定的。
REX'字段1110——这是REX'字段的其余部分,并且是可以用于编码扩展32寄存器集的中高16个或低16个的EVEX.V'位字段(EVEX字节3,位[3]-V)。以位逆格式存储该位。使用值1来编码低16个寄存器。换言之,通过组合EVEX.V、EVEX.vvvv来形成V'VVVV。
写掩码字段1170(EVEX字节3,位[2:0]-kkk)——其内容如先前描述的那样指定写掩码寄存器中的寄存器的索引。在本发明的一个实施例中,具体值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这可以以各种方式实现,包括使用与绕过掩蔽硬件的硬件或所有全部硬接线的写掩码)。
实际操作码字段1230(字节4)也称为操作码字节。在该字段中指定操作码的一部分。
MOD R/M字段1240(字节5)包括MOD字段1242、寄存器字段1244和R/M字段1246。如先前所述,MOD字段1242的内容在存储器访问和无存储器访问操作之间进行区分。寄存器字段1244的作用可以总结为两种情况:编码目的地寄存器操作数或源寄存器操作数,或者被视为操作码扩展而不用于编码任何指令操作数。R/M字段1246的作用包括以下:编码引用存储器地址的指令操作数,或者编码目的地寄存器操作数或源寄存器操作数。
比例、索引、基础(SIB)字节(字节6)——如先前所述,比例字段1150的内容用于存储器地址生成。SIB.xxx 1254和SIB.bbb 1256——先前已关于寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段1162A(字节7-10)——当MOD字段1242包含10时,字节7-10是位移字段1162A,并且其与旧有32位位移(disp32)起相同作用并且以字节粒度起作用。
位移因数字段1162B(字节7)——当MOD字段1242包含01时,字节7是位移因数字段1162B。该字段的位置与旧有x86指令集8位位移(disp8)的位置相同,其以字节粒度起作用。由于disp8是扩展符号,因此其可以仅在-128和117字节偏移之间寻址;在64字节缓存行方面,disp8使用8位,其可以被设置成仅四个真正有用的值-128、-64、0和64;由于常常需要较大的范围,因此使用disp32;然而,disp32需要4字节。相比于disp8和disp32,位移因数字段1162B是disp8的重新解释;当使用位移因数字段1162B时,通过位移因数字段的内容乘以存储器操作数访问的尺寸(N)来确定实际位移。这一类型的位移被称为disp8*N。这降低了平均指令长度(单个字节用于位移但是具有大得多的范围)。这样的经压缩的位移是基于以下假设:有效位移是存储器访问的粒度的倍数,并且因此,不需要编码地址偏移的冗余低阶位。换言之,位移因数字段1162B替代了旧有x86指令集8位位移。因此,以与x86指令集8位位移相同的方式来编码位移因数字段1162B(因此,在ModRM/SIB编码规则中没有改变),仅有的例外是disp8被过载为disp8*N。换言之,在编码规则或编码长度中没有改变,而是仅在由硬件进行的位移值的解释中有改变(这需要将位移缩放存储器操作数的尺寸以获得逐字节的地址偏移)。
立即数字段1172如先前所述地进行操作。
全操作码字段
图12B是根据本发明的一个实施例的图示出构成全操作码字段1174的特定向量友好指令格式1200的字段的框图。具体来说,全操作码字段1174包括格式字段1140、基础操作字段1142和数据元素宽度(W)字段1164。基础操作字段1142包括前缀编码字段1225、操作码映射字段1215以及实际操作码字段1230。
寄存器索引字段
图12C是根据本发明的一个实施例的图示出构成寄存器索引字段1144的特定向量友好指令格式1200的字段的框图。具体来说,寄存器索引字段1144包括REX字段1205、REX'字段1210、MODR/M.reg字段1244、MODR/M.r/m字段1246、VVVV字段1220、xxx字段1254以及bbb字段1256。
增加操作字段
图12D是根据本发明的一个实施例的图示出构成增加操作字段1150的特定向量友好指令格式1200的字段的框图。当类(U)字段1168包含0时,其表示EVEX.U0(A类1168A);当其包含1时,其表示EVEX.U1(B类1168B)。当U=0且MOD字段1242包含11(表示无存储器访问操作)时,α字段1152(EVEX字节3,位[7]-EH)被解释为rs字段1152A。当rs字段1152A包含1(舍入1152A.1)时,β字段1154(EVEX字节3,位[6:4]-SSS)被解释为舍入控制字段1154A。舍入控制字段1154A包括一位SAE字段1156以及两位舍入操作字段1158。当rs字段1152A包含0(数据变换1152A.2)时,β字段1154(EVEX字节3,位[6:4]-SSS)被解释为三位数据变换字段1154B。当U=0并且MOD字段1242包含00、01或10(表示存储器访问操作)时,α字段1152(EVEX字节3,位[7]-EH)被解释为驱逐提示(EH)字段1152B并且β字段1154(EVEX字节3,位[6:4]-SSS)被解释为三位数据操纵字段1154C。
当U=1时,α字段1152(EVEX字节3,位[7]-EH)被解释为写掩码控制(Z)字段1152C。当U=1且MOD字段1242包含11(表示无存储器访问操作)时,β字段1154的一部分(EVEX字节3,位[4]-S0)被解释为RL字段1157A;当其包含1(舍入1157A.1)时,β字段1154的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为舍入操作字段1159A,而当RL字段1157A包含0(VSIZE1157.A2)时,β字段1154的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为向量长度字段1159B(EVEX字节3,位[6-5]-L1-0)。当U=1并且MOD字段1242包含00、01或10(表示存储器访问操作)时,β字段1154(EVEX字节3,位[6:4]-SSS)被解释为向量长度字段1159B(EVEX字节3,位[6-5]-L1-0)以及广播字段1157B(EVEX字节3,位[4]-B)。
示例性寄存器架构
图13是根据本发明的一个实施例的寄存器架构1300的框图。在图示出的实施例中,存在512位宽的32个向量寄存器1310;这些寄存器被引用为zmm0到zmm31。低16个zmm寄存器的低阶256位覆盖在寄存器ymm0-16上。低16个zmm寄存器的低阶128位(ymm寄存器的低阶128位)覆盖在寄存器xmm0-15上。特定向量友好指令格式1200在如下面的表格中说明的这些覆盖寄存器文件上进行操作。
换言之,向量长度字段1159B在最大长度和一个或多个其它较短长度之间进行选择,其中每个这样的较短长度是前一长度的长度的一半;并且不具有向量长度字段1159B的指令模板在最大向量长度上进行操作。此外,在一个实施例中,特定向量友好指令格式1200的B类指令模板对打包或标量单精度/双精度浮点数据以及打包或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;较高阶数据元素位置取决于实施例而要么保留与它们在指令之前相同,要么被归零。
写掩码寄存器1315——在图示出的实施例中,存在8个写掩码寄存器(k0到k7),每一个在尺寸上都是64位。在替换实施例中,写掩码寄存器1315在尺寸上是16位。如先前所述,在本发明的一个实施例中,向量掩码寄存器k0不能用作写掩码;当通常指示k0的编码用于写掩码时,其选择硬接线的写掩码0xFFFF,有效地针对该指令禁用了写掩蔽。
通用寄存器1325——在图示出的实施例中,存在16个64位通用寄存器,其与现存的x86寻址模式一起用来寻址存储器操作数。通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用这些寄存器。
标量浮点堆栈寄存器文件(x87堆栈)1345(其别名为MMX打包整数扁平寄存器文件1350)——在图示出的实施例中,x87堆栈是用于对使用x87指令集扩展的32/64/80位浮点数据执行标量浮点操作的8元素堆栈;而MMX寄存器被用来对64位打包整数数据执行操作以及保存用于在MMX和XMM寄存器之间执行的一些操作的操作数。
本发明的替换实施例可以使用更宽或更窄的寄存器。附加地,本发明的替换实施例可以使用更多、更少或不同的寄存器文件和寄存器。
示例性核心架构、处理器和计算机架构
处理器核心可以以不同方式实现、用于不同目的以及被实现在不同的处理器中。例如,这样的核心的实现方式可以包括:1)意图用于通用计算的通用有序核心;2)意图用于通用计算的高性能通用无序核心;3)主要意图用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可以包括:1)包括意图用于通用计算的一个或多个通用有序核心和/或意图用于通用计算的一个或多个通用无序核心的CPU;以及2)包括主要意图用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,其可以包括:1)在与CPU分离的芯片上的协处理器;2)在与CPU相同的封装中的分离管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在该情况下,这样的协处理器有时也称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或者称为专用核心);以及4)可以包括在所述CPU的相同管芯上的片上系统(有时也称为(一个或多个)应用核心或(一个或多个)应用处理器),上述协处理器以及附加功能。接下来描述示例性核心架构,随后是示例性处理器和计算机架构的描述。
示例性核心架构
有序和无序核心框图
图14A是根据本发明的实施例的图示出示例性有序流水线以及示例性寄存器重命名、无序发布/执行流水线二者的框图。图14B是根据本发明的实施例的图示出有序架构核心的示例性实施例以及要被包括在处理器中的示例性寄存器重命名、无序发布/执行架构核心二者的框图。图14A-B中的实线框图示出有序流水线和有序核心,而虚线框的可选附加项图示出寄存器重命名、无序发布/执行流水线和核心。假设有序方面是无序方面的子集,将描述无序方面。
在图14A中,处理器流水线1400包括提取阶段1402、长度解码阶段1404、解码阶段1406、分配阶段1408、重命名阶段1410、调度(也称为派遣或发布)阶段1412、寄存器读取/存储器读取阶段1414、执行阶段1416、写回/存储器写入阶段1418、异常处置阶段1422以及提交阶段1424。
图14B示出处理器核心1490,其包括被耦合到执行引擎单元1450的前端单元1430,并且这两个单元都被耦合到存储器单元1470。核心1490可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或者混合或替换核心类型。作为又一选项,核心1490可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端单元1430包括分支预测单元1432,其被耦合到指令缓存单元1434,该指令缓存单元1434被耦合到指令转译后备缓冲器(TLB)1436,该指令转译后备缓冲器(TLB)1436被耦合到指令提取单元1438,该指令提取单元1438被耦合到解码单元1440。解码单元1440(或解码器)可以解码指令,并且作为输出生成解码自原始指令、或以其它方式反映原始指令、或导出自原始指令的一个或多个微操作、微代码进入点、微指令、其它指令或其它控制信号。可以使用各种不同机制来实现解码单元1440。适当机制的示例包括但不限于,查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核心1490包括微代码ROM或存储用于某些宏指令的微代码的其它介质(例如,在解码单元1440中或以其它方式在前端单元1430内)。解码单元1440被耦合到执行引擎单元1450中的重命名/分配器单元1452。
执行引擎单元1450包括重命名/分配器单元1452,其被耦合到引退单元1454和一组一个或多个调度器单元1456。(一个或多个)调度器单元1456表示任何数量的不同调度器,包括保留站、中央指令窗口等等。(一个或多个)调度器单元1456被耦合到(一个或多个)物理寄存器文件单元1458。(一个或多个)物理寄存器文件单元1458中的每一个表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等等。在一个实施例中,(一个或多个)物理寄存器文件单元1458包括向量寄存器单元、写掩码寄存器单元以及标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器以及通用寄存器。(一个或多个)物理寄存器文件单元1458被引退单元1454重叠以说明可以以其实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓冲器以及(一个或多个)引退寄存器文件;使用寄存器映射和寄存器池等等)。引退单元1454和(一个或多个)物理寄存器文件单元1458被耦合到(一个或多个)执行集群1460。(一个或多个)执行集群1460包括一组一个或多个执行单元1462以及一组一个或多个存储器访问单元1464。执行单元1462可以执行各种操作(例如,移位、加法、减法、乘法)并且对各种数据类型(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)。虽然一些实施例可以包括专用于特定功能或功能集的数个执行单元,但是其它实施例可以包括全部执行所有功能的仅一个执行单元或多个执行单元。(一个或多个)调度器单元1456、(一个或多个)物理寄存器文件单元1458以及(一个或多个)执行集群1460被示为可能是复数的,因为某些实施例针对某些数据/操作类型创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,它们各自具有其自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现其中该流水线的仅执行集群具有(一个或多个)存储器访问单元1464的某些实施例)。还应理解的是,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行而其余部分是有序的。
该组存储器访问单元1464被耦合到存储器单元1470,存储器单元1470包括数据TLB单元1472,数据TLB单元1472被耦合到数据缓存单元1474,数据缓存单元1474被耦合到二级(L2)缓存单元1476。在一个示例性实施例中,存储器访问对于1464可以包括负载单元、存储地址单元以及存储数据单元,其每一个都被耦合到存储器单元1470中的数据TLB单元1472。指令缓存单元1434进一步被耦合到存储器单元中的二级(L2)缓存单元1476。二级缓存单元1476被耦合到缓存的一个或多个其它层并最终被耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核心架构可以实现如下的流水线1400:1)指令提取1438执行提取和长度解码阶段1402和1404;2)解码单元1440执行解码阶段1406;3)重命名/分配器单元1452执行分配阶段1408和重命名阶段1410;4)(一个或多个)调度器单元1456执行调度阶段1412;5)(一个或多个)物理寄存器文件单元1458和存储器单元1470执行寄存器读取/存储器读取阶段1414;执行集群1460执行执行阶段1416;6)存储器单元1470和(一个或多个)物理寄存器文件单元1458执行写回/存储器写入阶段1418;7)在异常处置阶段1422中可能涉及到各种单元;以及8)引退单元1454和(一个或多个)物理寄存器文件单元1458执行提交阶段1424。
核心1490可以支持一个或多个指令集(例如,x86指令集(以及已经被添加有较新版本的某些扩展);加州桑尼维尔的MIPS科技的MIPS指令集;加州桑尼维尔的ARM控股公司的ARM指令集(以及诸如NEON之类的可选附加扩展)),包括本文中描述的(一个或多个)指令。在一个实施例中,核心1490包括用以支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行由许多多媒体应用使用的操作。
应理解的是,核心可以支持多线程(执行两个或更多个并行的操作集或线程集),并且可以以各种方式来这样做,所述方式包括时间切片多线程、同时多线程(其中单个物理核心为物理核心正同时进行多线程的线程中的每一个提供逻辑核心)或者其组合(例如,时间切片提取和解码以及其后的同时多线程,诸如英特尔®超线程技术中那样)。
虽然在无序执行的情境中描述了寄存器重命名,但是应理解的是,寄存器重命名可以用在有序架构中。虽然所说明的处理器的实施例还包括单独的指令和数据缓存单元1434/1474以及共享L2缓存单元1476,但是替换实施例可以具有用于指令和数据二者的单个内部缓存,诸如例如,一级(L1)内部缓存或多级内部缓存。在一些实施例中,系统可以包括内部缓存和在核心和/或处理器外部的外部缓存的组合。替换地,所有缓存都可以在核心和/或处理器外部。
特定示例性有序核心架构
图15A-B图示出更具体的示例性有序核心架构的框图,其核心将会是芯片中的若干逻辑块中的一个(包括相同类型和/或不同类型的其它核心)。逻辑块通过具有某些固定功能逻辑、存储器I/O接口以及其它必要I/O逻辑(取决于应用)的高带宽互连网络(例如,环形网络)进行通信。
图15A是根据本发明的实施例的单个处理器核心以及其到管芯上互连网络1502以及与其二级(L2)缓存的本地子集1504的连接的框图。在一个实施例中,指令解码器1500支持具有打包数据指令集扩展的x86指令集。L1缓存1506允许到标量和向量单元中的对缓存存储器的低延时访问。虽然(为了简化设计)在一个实施例中标量单元1508和向量单元1510使用单独的寄存器集(分别为标量寄存器1512和向量寄存器1514)并且在它们之间传输的数据被写入到存储器并然后从一级(L1)缓存1506读回来,但是本发明的替换实施例可以使用不同的方法(例如,使用单个寄存器集或包括允许在两个寄存器文件之间传输数据而无需写入和读回的通信路径)。
L2缓存的本地子集1504是被每个处理器核心一个地划分成单独的本地子集的全局L2缓存的一部分。每个处理器核心具有到其自己的L2缓存的本地子集1504的直接访问路径。由处理器核心读取的数据被存储在其L2缓存子集1504中并且可以被快速访问,与其它处理器核心访问它们自己的本地L2缓存子集并行地进行。由处理器核心写入的数据被存储在其自己的L2缓存子集1504中并且如果必要的话从其它子集中被清除。环形网络确保了共享数据的一致性。该环形网络是双向的以允许诸如处理器核心、L2缓存以及其它逻辑块之类的代理在芯片内与彼此通信。每个环形数据路径在每个方向上都是1012位宽。
图15B是根据本发明的实施例的图15A中的处理器核心的一部分的展开图。图15B包括L1数据缓存1506A(L1缓存1504的一部分)以及关于向量单元1510和向量寄存器1514的更多细节。具体来说,向量单元1510是16宽向量处理单元(VPU)(参见16宽ALU 1528),其执行整数指令、单精度浮动指令以及双精度浮动指令中的一个或多个。VPU支持利用拌和单元1520来拌和寄存器输入、利用数值转换单元1522A-B来进行数值转换以及利用复制单元1524来对存储器输入进行复制。写掩码寄存器1526允许断言所产生的向量写入。
具有集成存储器控制器和图形模块的处理器
图16是根据本发明的实施例的可以具有多于一个核心、可以具有集成存储器控制器并且可以具有集成图形模块的处理器1600的框图。图16中的实线框图示出具有单个核心1602A、系统代理1610、一组一个或多个总线控制器单元1616的处理器1600,而虚线框的可选附加项图示出具有多个核心1602A-N、系统代理单元1610中的一组一个或多个集成存储器控制器单元1614以及专用逻辑1608的替换处理器1600。
因此,处理器1600的不同实现方式可以包括:1)具有专用逻辑1608的CPU,该专用逻辑1608集成了图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心),并且核心1602A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心、二者的组合);2)具有核心1602A-N的协处理器,所述核心1602A-N是主要意图用于图形和/或科学(吞吐量)的大量专用核心;以及3)具有核心1602A-N的协处理器,该核心1602A-N是大量的通用有序核心。因此,处理器1600可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核心(MIC)协处理器(包括30或更多个核心)、嵌入式处理器等等。可以在一个或多个芯片上实现处理器。处理器1600可以是一个或多个基板的一部分,或者可以被实现在一个或多个基板上,所述基板使用多种工艺技术(诸如例如,BiCMOS、CMOS或NMOS)中的任意。
存储器层级包括核心内的一级或多级缓存、一组一个或多个共享缓存单元1606以及被耦合到该组集成存储器控制器单元1614的外部存储器(未示出)。该组共享缓存单元1606可以包括一个或多个中间级缓存,诸如二级(L2)、三级(L3)、四级(L4)或其它级的缓存、最末级缓存(LLC)和/或其组合。虽然在一个实施例中基于环形的互连单元1612将集成图形逻辑1608、该组共享缓存单元1606以及系统代理单元1610/(一个或多个)集成存储器控制器单元1614进行互连,但是替换实施例可以使用任何数量的公知技术以便互连此类单元。在一个实施例中,在一个或多个缓存单元1606和核心1602-A-N之间维持一致性。
在一些实施例中,核心1602A-N中的一个或多个能够实现多线程。系统代理1610包括协调和操作核心1602A-N的那些组件。系统代理单元1610可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括调节核心1602A-N和集成图形逻辑1608的功率状态所需的逻辑以及组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核心1602A-N可以是同构的或是异构的;即,核心1602A-N中的两个或更多个可以能够执行相同的指令集,而其它核心可以能够执行该指令集的仅子集或者执行不同的指令集。
示例性计算机架构
图17-21是示例性计算机架构的框图。在针对膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其它电子设备的领域中已知的其它系统设计和配置也是合适的。一般来说,能够并入如本文中公开的处理器和/或其它执行逻辑的大量的各种各样的系统或电子设备一般都是合适的。
现在参考图17,示出了根据本发明的一个实施例的系统1700的框图。系统1700可以包括一个或多个处理器1710、1715,其被耦合到控制器中枢1720。在一个实施例中,控制器中枢1720包括图形存储器控制器中枢(GMCH)1790以及输入/输出中枢(IOH)1750(其可以在单独的芯片上);GMCH 1790包括存储器1740和协处理器1745所耦合到的存储器和图形控制器;IOH 1750将输入/输出(I/O)设备1760耦合到GMCH 1790。替换地,存储器和图形控制器中的一个或二者被集成在(如本文中描述的)处理器内,存储器1740和协处理器1745被直接耦合到处理器1710和与IOH 1750在单个芯片中的控制器中枢1720。
在图17中用虚线标明了附加处理器1715的可选性质。每个处理器1710、1715可以包括本文中描述的处理核心中的一个或多个并且可以是处理器1600的某一版本。
存储器1740可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或二者的组合。针对至少一个实施例,控制器中枢1720经由多点分支总线(诸如前侧总线(FSB)、点到点接口(诸如快速路径互连(QPI))或者类似连接)1795与(一个或多个)处理器1710、1715通信。
在一个实施例中,协处理器1745是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器中枢1720可以包括集成图形加速器。
就包括架构、微架构、热学、功率消耗特性等的优点的度量谱而言,在物理资源1710、1715之间可以存在各种差异。
在一个实施例中,处理器1710执行控制通用类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1710将这些协处理器指令识别为应由附连的协处理器1745来执行的类型。相应地,处理器1710在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发给协处理器1745。(一个或多个)协处理器1745接受并执行接收到的协处理器指令。
现在参考图18,示出了根据本发明的实施例的第一更具体的示例性系统1800的框图。如图18中所示,多处理器系统1800是点到点互连系统,并且包括经由点到点互连1850进行耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每一个可以是处理器1600的某一版本。在本发明的一个实施例中,处理器1870和1880分别是处理器1710和1715,而协处理器1838是协处理器1745。在另一实施例中,处理器1870和1880分别是处理器1710和协处理器1745。
处理器1870和1880被示为分别包括集成存储器控制器(IMC)单元1872和1882。处理器1870还包括作为其总线控制器单元的一部分的点到点(P-P)接口1876和1878;类似地,第二处理器1880包括P-P接口1886和1888。处理器1870、1880可以使用P-P接口电路1878、1888经由点到点(P-P)接口1850交换信息。如图18中所示,IMC 1872和1882将处理器耦合到相应的存储器、即存储器1832和存储器1834,其可以是本地附连到相应处理器的主存储器的部分。
处理器1870、1880可以各自使用点到点接口电路1876、1894、1886、1898经由各个P-P接口1852、1854与芯片组1890交换信息。芯片组1890可以可选地经由高性能接口1839与协处理器1838交换信息。在一个实施例中,协处理器1838是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享缓存(未示出)可以被包括在任一处理器中或者在两个处理器外部,又或者经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中则任一或两个处理器的本地缓存信息可以被存储在共享缓存中。
芯片组1890可以经由接口1896被耦合到第一总线1816。在一个实施例中,第一总线1816可以是外围组件互连(PCI)总线,或者是诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不被如此限制。
如图18中所示,各种I/O设备1814可以被耦合到第一总线1816以及总线桥1818,该总线桥1818将第一总线1816耦合到第二总线1820。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器之类的一个或多个附加处理器1815被耦合到第一总线1816。在一个实施例中,第二总线1820可以是低引脚数(LPC)总线。各种设备可以被耦合到第二总线1820,所述设备包括例如,键盘和/或鼠标1822、通信设备1827以及诸如盘驱动器或其它大容量存储设备之类的存储单元1828,其在一个实施例中可以包括指令/代码和/或数据1830。此外,音频I/O 1824可以被耦合到第二总线1820。注意,其它架构也是可能的。例如,作为图18的点到点架构的替代,系统可以实现多点分支总线或其它此类架构。
现在参考图19,示出了根据本发明的实施例的第二更具体的示例性系统1900的框图。图18和19中的相似元件具有相似的参考标号,并且已经从图19中省略了图18的某些方面以便避免使图19的其它方面变晦涩。
图19图示出处理器1870、1880可以分别包括集成存储器和I/O控制逻辑(“CL”)1872和1882。因此,CL 1872、1882包括集成存储器控制器单元并且包括I/O控制逻辑。图19图示出不仅存储器1832、1834被耦合到CL 1872、1882,还有I/O设备1914也被耦合到控制逻辑1872、1882。旧有I/O设备1915被耦合到芯片组1890。
现在参考图20,示出了根据本发明的实施例的SoC 2000的框图。图16中的类似元件带有相似的参考标号。而且,虚线框是更高级的SoC上的可选特征。在图20中,(一个或多个)互连单元2002被耦合到:应用处理器2010,其包括一组一个或多个核心192A-N和(一个或多个)共享缓存单元1606;系统代理单元1610;(一个或多个)总线控制器单元1616;(一个或多个)集成存储器控制器单元1614;一组一个或多个协处理器2020,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元2030;直接存储器访问(DMA)单元2032;以及用于耦合到一个或多个外部显示器的显示单元2040。在一个实施例中,(一个或多个)协处理器2020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
可以以硬件、软件、固件或此类实现方法的组合来实现本文中公开的机制的实施例。本发明的实施例可以被实现为计算机程序或程序代码,其在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备的可编程系统上执行。
可以应用诸如图18中图示出的代码1830之类的程序代码来输入指令以执行本文中描述的功能并生成输出信息。可以以已知方式将输出信息应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,处理器诸如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
可以以高级程序语言或面向对象的编程语言来实现程序代码以与处理系统通信。如果期望的话,也可以以汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译语言或解释语言。
可以通过存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现至少一个实施例的一个或多个方面,所述指令当被机器读取时促使所述机器制作逻辑以执行本文中描述的技术。称为“IP核心”的这样的表示可以被存储在有形的机器可读介质上并被供应给各种客户或制造设施来加载到实际上制造逻辑或处理器的制作机器中。
这样的机器可读存储介质可以在没有限制的情况下包括由机器或设备制造或形成的非暂时性有形的制品布置,包括诸如硬盘的存储介质、任何其它类型的盘(包括软盘、光盘、紧凑盘只读存储器(CD-ROM)、紧凑盘可重写设备(CD-RW)以及磁光盘)、半导体设备(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM))、磁卡或光卡、或者适合于存储电子指令的任何其它类型的介质。
相应地,本发明的实施例还包括包含指令或包含设计数据(诸如硬件描述语言(HDL))的非暂时性有形机器可读介质,所述设计数据定义本文中描述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以称为程序产品。
仿真(包括二进制转译、代码变形等)
在一些情况下,可以使用指令转换器来将指令从源指令集转换成目标指令集。例如,指令转换器可以将指令转译(例如,使用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或以其它方式转换成要由核心处理的一个或多个其它指令。可以以软件、硬件、固件或其组合来实现指令转换器。指令转换器可以是在处理器上、处理器外、或者部分在处理器上而部分在处理器外。
图21是根据本发明的实施例的对照用以将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在所图示的实施例中,指令转换器是软件指令转换器,但是替换地,指令转换器可以以软件、固件、硬件和其各种组合来实现。图21示出以高级语言2102的程序可以通过使用x86编译器2104来编译,以生成x86二进制代码2106,该x86二进制代码2106可以原生地由具有至少一个x86指令集核心的处理器2116来执行。具有至少一个x86指令集核心的处理器2116表示基本上可以通过兼容地执行或以其它方式处理以下内容来执行与具有至少一个x86指令集核心的英特尔处理器相同的功能的任何处理器:(1)英特尔x86指令集核心的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其它软件的目标代码版本,以便基本上实现与具有至少一个x86指令集核心的英特尔处理器相同的结果。x86编译器2104表示可操作用于生成x86二进制代码2106(例如,目标代码)的编译器,所述二进制代码2106可以在具有附加链接处理或没有附加链接处理的情况下在具有至少一个x86指令集核心的处理器2116上执行。类似地,图21示出以高级语言2102的程序可以使用替换指令集编译器2108来编译,以生成替换指令集二进制代码2110,该替换指令集二进制代码2110可以原生地由不具有至少一个x86指令集核心的处理器2114(例如,具有执行加州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加州桑尼维尔的ARM控股公司的ARM指令集的核心的处理器)来执行。使用指令转换器2112来将x86二进制代码2106转换成可以原生地由不具有x86指令集核心的处理器2114来执行的代码。该经转换的代码很可能不与替换指令集二进制代码2110相同,因为能够这样做的指令转换器难以制造;然而,经转换的代码将完成一般操作并且由来自替换指令集的指令构成。因此,指令转换器2112表示通过仿真、模拟或任何其它过程而允许不具有x86指令集处理器或核心的处理器或其它电子设备执行x86二进制代码2106的软件、固件、硬件或其组合。
针对图1、2A/B和5-9中的任何描述的组件、特征和细节也可以可选地应用于图3-4中的任何。此外,针对于任何装置描述的组件、特征和细节也可以可选地应用于在实施例中可以通过和/或利用这样的装置来执行的任何方法。本文描述的任何处理器可以被包括在本文公开(例如,图17-20)的任何计算机系统中。在一些实施例中,指令可以具有本文(例如,在图10-12中)公开的指令格式的特征或细节,但是这不是必需的。
在本描述和权利要求中,可能使用术语“耦合”和/或“连接”及其派生词。这些术语不意图作为彼此的同义词。而是,在实施例中,“连接”可以用于指示两个或两个以上的元件彼此直接物理和/或电接触。“耦合”可以意指两个或两个以上的元件彼此直接物理或电接触。然而,“耦合”还可以意指两个或两个以上的元件彼此不直接接触,但仍然彼此共同协作或交互。例如,执行单元可以通过一个或多个居间组件与解码单元和/或寄存器耦合。在图中,使用箭头来示出耦合和/或连接。
可能使用了术语“和/或”。如本文所用,术语“和/或”意指一个或另一个或二者(例如,A和/或B意指A或B或A和B二者)。
在以上描述中,阐述了具体细节以便提供对实施例的透彻理解。然而,也可以在没有这些具体细节中的一些细节的情况下实践其它实施例。本发明的范围不应由上文所提供的特定示例确定,而是只应由下面的权利要求确定。在其它实例中,以框图形式示出和/或没有详细地示出公知的电路、结构、设备和操作,以避免使本描述的理解含糊难懂。在视为适当的情况下,参考标号或参考标号的最后部分在各图当中重复以指示对应或类似的元素,这些元素可以可选地具有类似或相同的特性,除非另有指明或者显而易见为其它情形。
某些操作可以由硬件组件来执行,或者可以在机器可执行或电路可执行指令中实施,这些指令可以用于促使和/或导致机器、电路或硬件组件(例如,处理器、处理器的部分、电路等)被编程有执行所述操作的指令。操作也可以可选地由硬件和软件的组合来执行。处理器、机器、电路或硬件可以包括可操作以执行和/或处理指令并且存储响应于指令的结果的具体或特定的电路或其它逻辑(例如,潜在地与固件和/或软件组合的硬件)。
一些实施例包括包含机器可读介质的制品(例如,计算机程序产品)。所述介质可以包括提供(例如,存储)可由机器读取的形式的信息的机制。机器可读介质可以提供或者在其上存储指令或指令序列,所述指令或指令序列如果由机器执行和/或在由机器执行时可操作以使机器实行和/或导致机器实行本文所公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可以包括非暂时性机器可读存储介质。例如,非暂时性机器可读存储介质可以包括:软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁-光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂时性存储器、非暂时性数据存储设备等。非暂时性机器可读存储介质不由暂时性传播信号组成。
合适的机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等。合适的机器的仍其它示例包括包含处理器、数字逻辑电路或集成电路的计算机系统或其它电子设备。这种计算机系统或电子设备的示例包括但不限于:台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
贯穿本说明书的对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的参考例如指示特定特征可以被包括在本发明的实践中,但不一定是必需的。类似地,在本描述中,有时将各种特征集合在单个实施例、图或其描述中,以用于使本公开一体化并帮助理解各个发明方面的目的。然而,此公开方法不应被解释为反映这样的意图,即,本发明需要比在每个权利要求中明确叙述的特征更多的特征。而是,如以下权利要求所反映的那样,发明方面存在于比单个公开的实施例的所有特征更少的特征。因此,具体实施方式之后的权利要求由此明确并入到本具体实施方式中,其中每个权利要求代表其自身作为本发明的分离的实施例。
示例实施例
以下示例属于另外的实施例。示例中的具体细节可以在一个或多个实施例中的任何地方使用。
示例1是一种处理器或其它装置,其包括多个打包数据寄存器以及解码单元,所述解码单元用于解码向量缓存行写回指令。所述向量缓存行写回指令指示包括多个存储器索引的源打包存储器索引操作数。所述装置还包括与所述多个打包数据寄存器和所述解码单元耦合的缓存一致性系统。所述缓存一致性系统响应于所述向量缓存行写回指令使得一致性域中的任何缓存中的任何脏缓存行被向一个或多个存储器写回,在所述脏缓存行中存储了由所述源打包存储器索引操作数中的所述存储器索引中的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。。
示例2包括示例1的处理器,其中,缓存一致性系统响应于向量缓存行写回指令可选地使得一致性域中的所述任何缓存中在其中存储了所述任何存储器地址的数据的任何缓存行被无效。
示例3包括示例1的处理器,其中,缓存一致性系统响应于向量缓存行写回指令可选地使得一致性域中的所述任何缓存中在其中存储了所述任何存储器地址的数据的所述任何脏缓存行的状态被改为未修改状态。
示例4包括示例1至3中任一项的处理器,其中,缓存一致性系统包括一个或多个缓存控制器,其响应于向量缓存行写回指令发起一致性域中的处理器的一个或多个内部缓存中的任何内部缓存中的任何脏缓存行向所述一个或多个存储器的写回,在所述任何脏缓存行中存储了所述任何存储器地址的数据。该缓存一致性系统包括总线接口单元,其响应于向量缓存行写回指令在互连上传输一个或多个缓存行写回信号以使得一致性域中在处理器外部的任何缓存中的其中存储了所述任何存储器地址的数据的任何脏缓存行被向所述一个或多个存储器写回。
示例5包括示例4的处理器,其中,总线接口单元在互连上传输所述一个或多个缓存行写回信号以使得:可选地即使当给定存储器地址的数据未被存储在处理器的一个或多个内部缓存中的所述任何内部缓存中时,也将一致性域中在处理器外部的所述任何缓存中的其中存储了由给定存储器索引指示的给定存储器地址的数据的所述任何脏缓存行向所述一个或多个存储器写回。
示例6包括示例4至5中任一项的处理器,其中,总线接口单元在互连上传输所述一个或多个缓存行写回信号以使得:一致性域中在处理器外部的所述任何缓存中的其中存储了由给定存储器索引指示的给定存储器地址的数据的所述任何脏缓存行被向所述一个或多个存储器写回,而可选地不管处理器的所述一个或多个内部缓存中的所述任何内部缓存中、存储给定存储器地址的数据的任何缓存行的状态如何。
示例7包括示例1至6中任一项的处理器,其中,解码单元解码向量缓存行写回指令,所述向量缓存行写回指令可选地指示包括多个掩码元素的源打包数据操作掩码操作数。
示例8包括示例7的处理器,其中,缓存一致性系统响应于向量缓存行写回指令选择性地使得:服从于源打包数据操作掩码操作数,一致性域中的所述任何缓存中的、在其中存储了仅由存储器索引中的任何未被掩蔽的存储器索引指示的所述任何存储器地址的数据的所述任何脏缓存行被向所述一个或多个存储器写回,所述任何未被掩蔽的存储器索引未被源打包数据操作掩码操作数中的对应掩码元素所掩蔽。
示例9包括示例1至8中任一项的处理器,其中,向量缓存行写回指令可选地包括向量存储索引和向量缓存行写回指令,该指令指示包括要被存储到所述一个或多个存储器的多个数据元素的源打包数据元素操作数。
示例10包括示例9的处理器,还包括执行单元,该执行单元响应于向量存储索引和向量缓存行写回指令,将源打包数据元素操作数中的所述多个数据元素中的每个数据元素存储到所述一个或多个存储器中由源打包存储器索引操作数中的对应存储器索引指示的对应存储器地址。
示例11包括示例1至10中任一项的处理器,还包括存储器访问顺序逻辑,所述存储器访问顺序逻辑响应于向量缓存行写回指令,可选地防止在程序顺序中跟随在向量缓存行写回指令之后的所有存储指令变得全局可见,直到在向量缓存行写回指令之前的所有存储指令变得全局可见为止
示例12包括示例11的处理器,还包括一单元,该单元响应于向量缓存行写回指令,可选地防止完成在程序顺序中跟随在向量缓存行写回指令之后的所有指令,直到所述任何脏缓存行已被写回到持久性存储为止。
示例13包括示例1至12中任一项的处理器,可选地还包括用于预测分支的分支预测单元;以及可选地与分支预测单元耦合的指令预提取单元,所述指令预提取单元用于预提取包括向量缓存行写回指令的指令。该处理器可以可选地还包括与指令预提取单元耦合的一级(L1)指令缓存,所述L1指令缓存用于存储指令,以及可选地用于存储数据的L1数据缓存。该处理器可以可选地还包括用于存储数据和指令的二级(L2)缓存;以及与解码单元、L1指令缓存和L2缓存耦合的指令提取单元。该指令提取单元可以从L1指令缓存和L2缓存中的一个中提取向量缓存行写回指令,并且向解码单元提供向量缓存行写回指令。该处理器可以可选地还包括与打包数据寄存器耦合的寄存器重命名单元,其用于对打包数据寄存器进行重命名;以及调度器,其用于调度已从向量缓存行写回指令解码的一个或多个操作以供缓存一致性系统执行。
示例14包括一种处理器中的方法,其包括接收向量缓存行写回指令。该向量缓存行写回指令可以指示具有多个存储器索引的源打包存储器索引操作数。该方法包括响应于向量缓存行写回指令,使得一致性域中的任何缓存中的任何脏缓存行被向一个或多个存储器写回,所述任何脏缓存行存储由源打包存储器索引操作数的存储器索引中的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。
示例15包括示例14的方法,其中,该使得步骤包括:响应于向量缓存行写回指令,使得可选地无效一致性域中的所述任何缓存中存储所述任何存储器地址的数据的任何缓存行。
示例16包括示例14的方法,其中,该使得步骤包括:响应于向量缓存行写回指令,使得将一致性域中的所述任何缓存中存储所述任何存储器地址的数据的所述任何脏缓存行的状态可选地改为未修改状态。
示例17包括示例14至16中任一项的方法,其中,该使得步骤包括发起一致性域中的处理器的一个或多个内部缓存中的任何内部缓存中的任何脏缓存行向所述一个或多个存储器的写回,所述任何脏缓存行存储所述任何存储器地址的数据。该使得步骤还可以可选地包括在互连上传输一个或多个缓存行写回信号以使得一致性域中在处理器外部的任何缓存中的任何脏缓存行向所述一个或多个存储器写回,所述任何脏缓存行存储所述任何存储器地址的数据。
示例18包括示例14至17中任一项的方法,其中,该接收步骤包括:接收作为可选地指示包括多个掩码元素的源打包数据操作掩码操作数的被掩蔽的指令的向量缓存行写回指令。
示例19包括示例14至18中任一项的方法,其中,该接收步骤包括:接收可选地指示包括多个数据元素的源打包数据元素操作数的向量缓存行写回指令,并且还可选地包括将所述多个数据元素存储到所述一个或多个存储器中由存储器索引中的对应存储器索引指示的存储器位置。
示例20包括示例14至19中任一项的方法,还包括响应于向量缓存行写回指令,可选地防止在程序顺序中跟随在向量缓存行写回指令之后的所有存储指令变得全局可见,直到在程序顺序中在向量缓存行写回指令之前的所有存储指令变得全局可见为止。
示例21是一种处理指令的系统,其包括互连以及与互连耦合的处理器。该处理器具有包括向量缓存行写回指令和持久性提交指令的指令集。该系统还包括与互连耦合的持久性存储器。该持久性存储器存储一组指令,当被处理器执行时,该组指令使得处理器实行一组操作。该组操作包括:将源打包数据元素操作数中的多个数据元素存储到持久性存储器中由源打包存储器索引操作数中的对应存储器索引指示的存储器地址。操作还包括:响应于向量缓存行写回指令,使得一致性域中的任何缓存中的任何脏缓存行被向持久性存储器写回,在所述任何脏缓存行中存储了由源打包存储器索引操作数的存储器索引中的任何存储器索引指示的存储器地址中的任何存储器地址的数据,源打包存储器索引操作数由向量缓存行写回指令指示。操作还包括:响应于持久性提交指令,防止完成在程序顺序中跟随在向量缓存行写回指令之后的所有指令,直到所述任何脏缓存行已被写回到持久性存储器为止。
示例22包括示例21的系统,其中,向量缓存行写回指令指示包括多个掩码元素的源打包数据操作掩码操作数。
示例23包括一种制品,该制品包括非暂时性机器可读存储介质,该非暂时性机器可读存储介质存储向量缓存行写回指令。向量缓存行写回指令指示具有多个存储器索引的源打包存储器索引操作数。向量缓存行写回指令如果被机器执行,则使得机器实行包括以下的操作:使得一致性域中的任何缓存中的任何脏缓存行被向一个或多个存储器写回,所述任何脏缓存行存储由源打包存储器索引操作数的存储器索引中的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。
示例24包括示例23的制品,其中,向量缓存行写回指令如果被机器执行则还用于使得所述机器可选地使一致性域中的所述任何缓存中在其中存储了任何存储器地址的数据的任何缓存行无效。
示例25包括示例23的制品,其中,向量缓存行写回指令如果被机器执行则还用于使得所述机器使得将一致性域中的所述任何缓存中在其中存储了任何存储器地址的数据的所述任何脏缓存行的状态可选地改为未修改状态。
示例26是用于执行或可操作以执行示例14至20中任一项的方法的处理器或其它装置。
示例27是包括用于执行示例14至20中任一项的方法的部件的处理器或其它装置。
示例28是包括用于执行示例14至20中任一项的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合的处理器。
示例29是一种制品,该制品包括可选地非暂时性机器可读介质,其可选地存储或以其它方式提供指令,所述指令如果和/或当由处理器、计算机系统、电子设备或其它机器执行时,可操作以使得机器实行如示例14至20中任一项的方法。
示例30是包括总线或其它互连、与互连耦合的如示例1至13中的任一项的处理器以及与互连耦合的一个或多个组件的计算机系统或其它电子设备,所述一个或多个组件选自可选的动态随机存取存储器(DRAM)、可选的静态RAM、可选的闪存、可选的图形控制器或芯片、可选的视频卡、可选的无线通信芯片、可选的无线收发器、可选的全球移动通信系统(GSM)天线、可选的协处理器(例如,CISC协处理器)、可选的音频设备、可选的音频输入设备、可选的音频输出设备、可选的视频输入设备(例如,视频相机)、可选的网络接口、可选的通信接口、可选的持久性存储器(例如,可选的相变存储器,忆阻器等)及其组合。
示例31是基本如本文所述的处理器或其它装置。
示例32是可操作以执行基本上如本文所述的任何方法的处理器或其它装置。
示例33是用于执行(例如,可配置或可操作以执行,或具有组件以执行)基本上如本文所述的任何向量缓存行写回指令的处理器或其它装置。
示例34是包括用于解码第一指令集的指令的解码单元的处理器或其它装置。解码单元接收第一指令集中仿真向量缓存行写回指令的一个或多个指令。向量缓存行写回指令可以是基本上如本文所公开的任何指令,并且是第二指令集中的指令。处理器或其它装置还包括与解码单元耦合的一个或多个执行单元,以执行或施行第一指令集的一个或多个指令。响应于第一指令集的一个或多个指令,一个或多个执行单元将具有如由向量缓存行写回指令指定的架构影响。
示例35是计算机系统或其它电子设备,其包括具有解码第一指令集的指令的解码单元的处理器。处理器还具有一个或多个执行单元。电子设备还包括与处理器耦合的存储设备。存储设备存储向量缓存行写回指令,该指令可以是基本上如本文所公开的任何向量缓存行写回指令并且是第二指令集中的指令。存储装置还存储用于将向量缓存行写回指令转换为第一指令集的一个或多个指令的指令。当由处理器执行时,第一指令集的一个或多个指令将使得处理器具有如由向量缓存行写回指令指定的架构影响。
示例36是包括用于接收向量缓存行写回指令的部件的处理器。向量缓存行写回指令指示具有多个存储器索引的源打包存储器索引操作数。处理器还包括用于响应于向量缓存行写回指令使得一致性域中的任何缓存中的任何脏缓存行向一个或多个存储器写回的部件,所述任何脏缓存行存储由源打包存储器索引操作数中的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。
Claims (25)
1.一种处理器,包括:
多个打包数据寄存器;
解码单元,用于解码向量缓存行写回指令,所述向量缓存行写回指令指示包括多个存储器索引的源打包存储器索引操作数;以及
与所述多个打包数据寄存器和所述解码单元耦合的缓存一致性系统,所述缓存一致性系统响应于向量缓存行写回指令使得一致性域中的任何缓存中的任何脏缓存行被向一个或多个存储器写回,在所述脏缓存行中存储了由源打包存储器索引操作数中的存储器索引中的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。
2.根据权利要求1所述的处理器,其中,缓存一致性系统响应于向量缓存行写回指令使得一致性域中的所述任何缓存中在其中存储了所述任何存储器地址的数据的任何缓存行被无效。
3.根据权利要求1所述的处理器,其中,缓存一致性系统响应于向量缓存行写回指令使得一致性域中的所述任何缓存中在其中存储了所述任何存储器地址的数据的所述任何脏缓存行的状态被改为未修改状态。
4.根据权利要求1所述的处理器,其中,缓存一致性系统包括:
一个或多个缓存控制器,响应于向量缓存行写回指令发起一致性域中的处理器的一个或多个内部缓存中的任何内部缓存中的任何脏缓存行向所述一个或多个存储器的写回,在所述任何脏缓存行中存储了所述任何存储器地址的数据;以及
总线接口单元,响应于向量缓存行写回指令在互连上传输一个或多个缓存行写回信号以使得一致性域中在处理器外部的任何缓存中的其中存储了所述任何存储器地址的数据的任何脏缓存行被向所述一个或多个存储器写回。
5.根据权利要求4所述的处理器,其中,总线接口单元在互连上传输所述一个或多个缓存行写回信号以使得:即使当给定存储器地址的数据未被存储在处理器的一个或多个内部缓存中的所述任何内部缓存中时,也将一致性域中在处理器外部的所述任何缓存中的其中存储了由给定存储器索引指示的给定存储器地址的数据的所述任何脏缓存行向所述一个或多个存储器写回。
6.根据权利要求4所述的处理器,其中,总线接口单元在互连上传输所述一个或多个缓存行写回信号以使得:一致性域中在处理器外部的所述任何缓存中的其中存储了由给定存储器索引指示的给定存储器地址的数据的所述任何脏缓存行被向所述一个或多个存储器写回,而不管处理器的所述一个或多个内部缓存中的所述任何内部缓存中、存储给定存储器地址的数据的任何缓存行的状态如何。
7.根据权利要求1至6中任一项所述的处理器,其中,解码单元解码向量缓存行写回指令,所述向量缓存行写回指令指示包括多个掩码元素的源打包数据操作掩码操作数。
8.根据权利要求7所述的处理器,其中,缓存一致性系统响应于向量缓存行写回指令选择性地使得:服从于源打包数据操作掩码操作数,一致性域中的所述任何缓存中的、在其中存储了仅由存储器索引中的任何未被掩蔽的存储器索引指示的所述任何存储器地址的数据的所述任何脏缓存行被向所述一个或多个存储器写回,所述任何未被掩蔽的存储器索引未被源打包数据操作掩码操作数中的对应掩码元素所掩蔽。
9.根据权利要求1至6中任一项所述的处理器,其中,向量缓存行写回指令包括向量存储索引和向量缓存行写回指令,该指令指示包括要被存储到所述一个或多个存储器的多个数据元素的源打包数据元素操作数。
10.根据权利要求9所述的处理器,还包括执行单元,该执行单元响应于向量存储索引和向量缓存行写回指令,将源打包数据元素操作数中的所述多个数据元素中的每个数据元素存储到所述一个或多个存储器中由源打包存储器索引操作数中的对应存储器索引指示的对应存储器地址。
11.根据权利要求1至6中任一项所述的处理器,还包括存储器访问顺序逻辑,所述存储器访问顺序逻辑响应于向量缓存行写回指令防止在程序顺序中跟随在向量缓存行写回指令之后的所有存储指令变得全局可见,直到在向量缓存行写回指令之前的所有存储指令变得全局可见为止。
12.根据权利要求11所述的处理器,还包括一单元,该单元响应于向量缓存行写回指令,防止完成在程序顺序中跟随在向量缓存行写回指令之后的所有指令,直到所述任何脏缓存行已被写回到持久性存储为止。
13.根据权利要求1至6中任一项所述的处理器,还包括:
用于预测分支的分支预测单元;
与分支预测单元耦合的指令预提取单元,所述指令预提取单元用于预提取包括向量缓存行写回指令的指令;
与指令预提取单元耦合的一级(L1)指令缓存,所述L1指令缓存用于存储指令;
用于存储数据的L1数据缓存;
用于存储数据和指令的二级(L2)缓存;
与解码单元、L1指令缓存和L2缓存耦合的指令提取单元,其用于从L1指令缓存和L2缓存中的一个中提取向量缓存行写回指令,并且向解码单元提供向量缓存行写回指令;
与打包数据寄存器耦合的寄存器重命名单元,其用于对打包数据寄存器进行重命名;以及
调度器,其用于调度已从向量缓存行写回指令解码的一个或多个操作以供缓存一致性系统执行。
14.一种处理器中的方法,包括:
接收向量缓存行写回指令,向量缓存行写回指令指示具有多个存储器索引的源打包存储器索引操作数;以及
响应于向量缓存行写回指令,使得一致性域中的任何缓存中的任何脏缓存行被向一个或多个存储器写回,所述任何脏缓存行存储由源打包存储器索引操作数的存储器索引中的任何存储器索引指示的多个存储器地址中的任何存储器地址的数据。
15.根据权利要求14所述的方法,其中,该使得步骤包括:响应于向量缓存行写回指令,使得无效一致性域中的所述任何缓存中存储所述任何存储器地址的数据的任何缓存行。
16.根据权利要求14所述的方法,其中,该使得步骤包括:响应于向量缓存行写回指令,使得将一致性域中的所述任何缓存中存储所述任何存储器地址的数据的所述任何脏缓存行的状态改为未修改状态。
17.根据权利要求14所述的方法,其中,该使得步骤包括:
发起一致性域中的处理器的一个或多个内部缓存中的任何内部缓存中的任何脏缓存行向所述一个或多个存储器的写回,所述任何脏缓存行存储所述任何存储器地址的数据;以及
在互连上传输一个或多个缓存行写回信号以使得一致性域中在处理器外部的任何缓存中的任何脏缓存行向所述一个或多个存储器写回,所述任何脏缓存行存储所述任何存储器地址的数据。
18.根据权利要求14所述的方法,其中,该接收步骤包括:接收作为指示包括多个掩码元素的源打包数据操作掩码操作数的被掩蔽的指令的向量缓存行写回指令。
19.根据权利要求14所述的方法,其中,该接收步骤包括:接收指示包括多个数据元素的源打包数据元素操作数的向量缓存行写回指令,并且还包括将所述多个数据元素存储到所述一个或多个存储器中由存储器索引中的对应存储器索引指示的存储器位置。
20.根据权利要求14所述的方法,还包括:响应于向量缓存行写回指令,防止在程序顺序中跟随在向量缓存行写回指令之后的所有存储指令变得全局可见,直到在程序顺序中在向量缓存行写回指令之前的所有存储指令变得全局可见为止。
21.一种处理指令的系统,包括:
互连;
与互连耦合的处理器,所述处理器具有包括向量缓存行写回指令和持久性提交指令的指令集;以及
与互连耦合的持久性存储器,所述持久性存储器存储一组指令,当被处理器执行时,该组指令使得处理器实行包括以下的操作:
将源打包数据元素操作数中的多个数据元素存储到持久性存储器中由源打包存储器索引操作数中的对应存储器索引指示的存储器地址;
响应于向量缓存行写回指令,使得一致性域中的任何缓存中的任何脏缓存行被向持久性存储器写回,在所述任何脏缓存行中存储了由源打包存储器索引操作数的存储器索引中的任何存储器索引指示的存储器地址中的任何存储器地址的数据,源打包存储器索引操作数由向量缓存行写回指令指示;以及
响应于持久性提交指令,防止完成在程序顺序中跟随在向量缓存行写回指令之后的所有指令,直到所述任何脏缓存行已被写回到持久性存储器为止。
22.根据权利要求21所述的系统,其中,向量缓存行写回指令指示包括多个掩码元素的源打包数据操作掩码操作数。
23.一种处理器,包括用于执行根据权利要求14至20中任一项所述的方法的部件。
24.一种制品,包括存储指令的非暂时性机器可读介质,所述指令如果被机器执行,则可操作以使得所述机器实行根据权利要求14至20中任一项所述的方法。
25.一种电子设备,包括互连、与所述互连耦合的根据权利要求1至6中任一项所述的处理器以及与所述互连耦合的动态随机存取存储器(DRAM)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/628,954 US9971686B2 (en) | 2015-02-23 | 2015-02-23 | Vector cache line write back processors, methods, systems, and instructions |
US14/628954 | 2015-02-23 | ||
PCT/US2016/014657 WO2016137618A1 (en) | 2015-02-23 | 2016-01-25 | Vector cache line write back processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107250993A true CN107250993A (zh) | 2017-10-13 |
CN107250993B CN107250993B (zh) | 2022-02-25 |
Family
ID=56693169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680011687.6A Active CN107250993B (zh) | 2015-02-23 | 2016-01-25 | 向量缓存行写回处理器、方法、系统和指令 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9971686B2 (zh) |
EP (1) | EP3262524B1 (zh) |
JP (1) | JP6787554B2 (zh) |
KR (1) | KR102595640B1 (zh) |
CN (1) | CN107250993B (zh) |
TW (1) | TWI628541B (zh) |
WO (1) | WO2016137618A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN110442381A (zh) * | 2018-05-02 | 2019-11-12 | 美光科技公司 | 用于保护有条件的推测性指令执行的影子缓存 |
CN110727465A (zh) * | 2019-09-11 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于配置查找表的协议可重构一致性实现方法 |
CN110858923A (zh) * | 2018-08-24 | 2020-03-03 | 北京字节跳动网络技术有限公司 | 分段媒体文件生成方法、装置及存储介质 |
CN111208937A (zh) * | 2018-11-22 | 2020-05-29 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN112835532A (zh) * | 2021-02-25 | 2021-05-25 | 上海壁仞智能科技有限公司 | 用于缓存控制的方法以及计算装置 |
CN113835898A (zh) * | 2017-11-29 | 2021-12-24 | 北京忆芯科技有限公司 | 存储器分配器 |
CN114265812A (zh) * | 2021-11-29 | 2022-04-01 | 山东云海国创云计算装备产业创新中心有限公司 | 降低risc-v向量处理器访存延迟的方法、装置、设备及介质 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
US10303477B2 (en) * | 2015-06-26 | 2019-05-28 | Intel Corporation | Persistent commit processors, methods, systems, and instructions |
US9619394B2 (en) * | 2015-07-21 | 2017-04-11 | Apple Inc. | Operand cache flush, eviction, and clean techniques using hint information and dirty information |
JP6674085B2 (ja) * | 2015-08-12 | 2020-04-01 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10209991B2 (en) * | 2016-01-21 | 2019-02-19 | Advanced Micro Devices, Inc. | Instruction set and micro-architecture supporting asynchronous memory access |
US10891131B2 (en) * | 2016-09-22 | 2021-01-12 | Intel Corporation | Processors, methods, systems, and instructions to consolidate data elements and generate index updates |
US10379855B2 (en) * | 2016-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers |
US10387037B2 (en) * | 2016-12-31 | 2019-08-20 | Intel Corporation | Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies |
US11188234B2 (en) * | 2017-08-30 | 2021-11-30 | Micron Technology, Inc. | Cache line data |
US11016890B2 (en) | 2018-02-05 | 2021-05-25 | Micron Technology, Inc. | CPU cache flushing to persistent memory |
US11237970B2 (en) * | 2018-11-07 | 2022-02-01 | Micron Technology, Inc. | Reduce data traffic between cache and memory via data access of variable sizes |
US11231931B1 (en) | 2018-12-20 | 2022-01-25 | Advanced Micro Devices, Inc. | Mechanism for mitigating information leak via cache side channels during speculative execution |
TWI697779B (zh) * | 2019-02-20 | 2020-07-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
CN111767536B (zh) * | 2019-04-01 | 2024-03-22 | 中国农业大学 | 一种抵抗处理器投机访问漏洞的cache防护方法及装置 |
KR20210123555A (ko) | 2020-04-03 | 2021-10-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US11397677B2 (en) * | 2020-04-30 | 2022-07-26 | Hewlett Packard Enterprise Development Lp | System and method for tracking persistent flushes |
KR102342994B1 (ko) * | 2020-07-21 | 2021-12-24 | 고려대학교 산학협력단 | 산술 연산을 지원하는 인메모리 컴퓨팅 |
CN113342265B (zh) * | 2021-05-11 | 2023-11-24 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
US11328209B1 (en) | 2021-06-02 | 2022-05-10 | SambaNova Systems, Inc. | Dual cycle tensor dropout in a neural network |
US11256987B1 (en) | 2021-06-02 | 2022-02-22 | SambaNova Systems, Inc. | Memory efficient dropout, with reordering of dropout mask elements |
US11921640B2 (en) | 2021-08-31 | 2024-03-05 | Apple Inc. | Mitigating retention of previously-critical cache lines |
US11941291B2 (en) | 2021-09-02 | 2024-03-26 | Micron Technology, Inc. | Memory sub-system command fencing |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966734A (en) * | 1996-10-18 | 1999-10-12 | Samsung Electronics Co., Ltd. | Resizable and relocatable memory scratch pad as a cache slice |
US6490657B1 (en) * | 1996-09-09 | 2002-12-03 | Kabushiki Kaisha Toshiba | Cache flush apparatus and computer system having the same |
US20040158681A1 (en) * | 2002-02-12 | 2004-08-12 | Ip-First Llc | Write back and invalidate mechanism for multiple cache lines |
US20050188264A1 (en) * | 2004-01-15 | 2005-08-25 | International Business Machines Corporation | Reproducing errors via inhibit switches |
US20060143405A1 (en) * | 2004-12-28 | 2006-06-29 | Renesas Technology Corp. | Data processing device |
US7437597B1 (en) * | 2005-05-18 | 2008-10-14 | Azul Systems, Inc. | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines |
US20100325367A1 (en) * | 2009-06-19 | 2010-12-23 | International Business Machines Corporation | Write-Back Coherency Data Cache for Resolving Read/Write Conflicts |
US20110153983A1 (en) * | 2009-12-22 | 2011-06-23 | Hughes Christopher J | Gathering and Scattering Multiple Data Elements |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
CN102160040A (zh) * | 2008-09-17 | 2011-08-17 | 松下电器产业株式会社 | 高速缓存存储器、存储器系统、数据复制方法及数据改写方法 |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
CN104050095A (zh) * | 2013-03-14 | 2014-09-17 | 索尼公司 | 缓存控制装置、处理器、信息处理系统和缓存控制方法 |
WO2014158156A1 (en) * | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Storing data from cache lines to main memory based on memory addresses |
WO2015012871A1 (en) * | 2013-07-26 | 2015-01-29 | Intel Corporation | Methods and apparatus for supporting persistent memory |
CN104346295A (zh) * | 2013-08-09 | 2015-02-11 | 华为技术有限公司 | 一种缓存刷新方法和装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835948A (en) * | 1994-10-14 | 1998-11-10 | Compaq Computer Corporation | Single bank, multiple way cache memory |
US6546462B1 (en) * | 1999-12-30 | 2003-04-08 | Intel Corporation | CLFLUSH micro-architectural implementation method and system |
US6678810B1 (en) * | 1999-12-30 | 2004-01-13 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
US20030182539A1 (en) * | 2002-03-20 | 2003-09-25 | International Business Machines Corporation | Storing execution results of mispredicted paths in a superscalar computer processor |
US6988165B2 (en) * | 2002-05-20 | 2006-01-17 | Pervasive Software, Inc. | System and method for intelligent write management of disk pages in cache checkpoint operations |
US6922754B2 (en) * | 2002-12-09 | 2005-07-26 | Infabric Technologies, Inc. | Data-aware data flow manager |
US7454575B2 (en) | 2003-12-22 | 2008-11-18 | Matsushita Electric Industrial Co., Ltd. | Cache memory and its controlling method |
US7941585B2 (en) | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
JP4366298B2 (ja) | 2004-12-02 | 2009-11-18 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
US7765384B2 (en) * | 2007-04-18 | 2010-07-27 | International Business Machines Corporation | Universal register rename mechanism for targets of different instruction types in a microprocessor |
US8423721B2 (en) * | 2008-04-30 | 2013-04-16 | Freescale Semiconductor, Inc. | Cache coherency protocol in a data processing system |
US10175990B2 (en) * | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US9727471B2 (en) | 2010-11-29 | 2017-08-08 | Intel Corporation | Method and apparatus for stream buffer management instructions |
US9842046B2 (en) * | 2012-09-28 | 2017-12-12 | Intel Corporation | Processing memory access instructions that have duplicate memory indices |
US9244684B2 (en) | 2013-03-15 | 2016-01-26 | Intel Corporation | Limited range vector memory access instructions, processors, methods, and systems |
US20150095578A1 (en) | 2013-09-27 | 2015-04-02 | Kshitij Doshi | Instructions and logic to provide memory fence and store functionality |
US9471494B2 (en) | 2013-12-20 | 2016-10-18 | Intel Corporation | Method and apparatus for cache line write back operation |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
-
2015
- 2015-02-23 US US14/628,954 patent/US9971686B2/en active Active
-
2016
- 2016-01-20 TW TW105101722A patent/TWI628541B/zh not_active IP Right Cessation
- 2016-01-25 WO PCT/US2016/014657 patent/WO2016137618A1/en active Application Filing
- 2016-01-25 EP EP16756015.0A patent/EP3262524B1/en active Active
- 2016-01-25 KR KR1020177020211A patent/KR102595640B1/ko active IP Right Grant
- 2016-01-25 JP JP2017538592A patent/JP6787554B2/ja active Active
- 2016-01-25 CN CN201680011687.6A patent/CN107250993B/zh active Active
-
2018
- 2018-05-14 US US15/979,223 patent/US10782969B2/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490657B1 (en) * | 1996-09-09 | 2002-12-03 | Kabushiki Kaisha Toshiba | Cache flush apparatus and computer system having the same |
US5966734A (en) * | 1996-10-18 | 1999-10-12 | Samsung Electronics Co., Ltd. | Resizable and relocatable memory scratch pad as a cache slice |
US20040158681A1 (en) * | 2002-02-12 | 2004-08-12 | Ip-First Llc | Write back and invalidate mechanism for multiple cache lines |
US20050188264A1 (en) * | 2004-01-15 | 2005-08-25 | International Business Machines Corporation | Reproducing errors via inhibit switches |
US20060143405A1 (en) * | 2004-12-28 | 2006-06-29 | Renesas Technology Corp. | Data processing device |
US7437597B1 (en) * | 2005-05-18 | 2008-10-14 | Azul Systems, Inc. | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines |
CN102160040A (zh) * | 2008-09-17 | 2011-08-17 | 松下电器产业株式会社 | 高速缓存存储器、存储器系统、数据复制方法及数据改写方法 |
US20100325367A1 (en) * | 2009-06-19 | 2010-12-23 | International Business Machines Corporation | Write-Back Coherency Data Cache for Resolving Read/Write Conflicts |
US20110153983A1 (en) * | 2009-12-22 | 2011-06-23 | Hughes Christopher J | Gathering and Scattering Multiple Data Elements |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
CN104050095A (zh) * | 2013-03-14 | 2014-09-17 | 索尼公司 | 缓存控制装置、处理器、信息处理系统和缓存控制方法 |
WO2014158156A1 (en) * | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Storing data from cache lines to main memory based on memory addresses |
WO2015012871A1 (en) * | 2013-07-26 | 2015-01-29 | Intel Corporation | Methods and apparatus for supporting persistent memory |
CN104346295A (zh) * | 2013-08-09 | 2015-02-11 | 华为技术有限公司 | 一种缓存刷新方法和装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835898A (zh) * | 2017-11-29 | 2021-12-24 | 北京忆芯科技有限公司 | 存储器分配器 |
CN113835898B (zh) * | 2017-11-29 | 2024-03-01 | 北京忆芯科技有限公司 | 存储器分配器 |
CN108459826B (zh) * | 2018-02-01 | 2020-12-29 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN110442381A (zh) * | 2018-05-02 | 2019-11-12 | 美光科技公司 | 用于保护有条件的推测性指令执行的影子缓存 |
CN110858923A (zh) * | 2018-08-24 | 2020-03-03 | 北京字节跳动网络技术有限公司 | 分段媒体文件生成方法、装置及存储介质 |
CN111208937B (zh) * | 2018-11-22 | 2023-04-18 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN111208937A (zh) * | 2018-11-22 | 2020-05-29 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN110727465A (zh) * | 2019-09-11 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于配置查找表的协议可重构一致性实现方法 |
CN110727465B (zh) * | 2019-09-11 | 2021-08-10 | 无锡江南计算技术研究所 | 一种基于配置查找表的协议可重构一致性实现方法 |
CN112835532A (zh) * | 2021-02-25 | 2021-05-25 | 上海壁仞智能科技有限公司 | 用于缓存控制的方法以及计算装置 |
CN114265812B (zh) * | 2021-11-29 | 2024-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 降低risc-v向量处理器访存延迟的方法、装置、设备及介质 |
CN114265812A (zh) * | 2021-11-29 | 2022-04-01 | 山东云海国创云计算装备产业创新中心有限公司 | 降低risc-v向量处理器访存延迟的方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016137618A1 (en) | 2016-09-01 |
JP2018511099A (ja) | 2018-04-19 |
EP3262524A4 (en) | 2018-10-24 |
TW201638788A (zh) | 2016-11-01 |
KR102595640B1 (ko) | 2023-10-31 |
EP3262524B1 (en) | 2020-11-04 |
JP6787554B2 (ja) | 2020-11-18 |
TWI628541B (zh) | 2018-07-01 |
EP3262524A1 (en) | 2018-01-03 |
US9971686B2 (en) | 2018-05-15 |
US10782969B2 (en) | 2020-09-22 |
CN107250993B (zh) | 2022-02-25 |
KR20170118051A (ko) | 2017-10-24 |
US20180260325A1 (en) | 2018-09-13 |
US20160246723A1 (en) | 2016-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107250993A (zh) | 向量缓存行写回处理器、方法、系统和指令 | |
CN105278917B (zh) | 无局部性提示的向量存储器访问处理器、方法、设备、制品和电子设备 | |
CN104137060B (zh) | 高速缓存协处理单元 | |
CN104756068B (zh) | 合并相邻的聚集/分散操作 | |
CN104781803B (zh) | 用于架构不同核的线程迁移支持 | |
CN109791488A (zh) | 用于执行用于复数的融合乘-加指令的系统和方法 | |
CN104049953B (zh) | 用于合并操作掩码的未经掩码元素的装置、方法、系统和制品 | |
CN107003844A (zh) | 用于矢量广播和xorand逻辑指令的装置和方法 | |
CN104137055B (zh) | 点积处理器、方法、系统和指令 | |
CN104350492B (zh) | 在大寄存器空间中利用累加的向量乘法 | |
CN107077334A (zh) | 从多维阵列预取多维元素块的硬件装置和方法 | |
CN109478139A (zh) | 用于共享存储器中的访问同步的装置、方法和系统 | |
CN109791487A (zh) | 用于将多个数据元素加载到除紧缩数据寄存器之外的目的地存储位置的处理器、方法、系统和指令 | |
CN106293640A (zh) | 用于紧密耦合的异构计算的硬件处理器和方法 | |
CN107077321A (zh) | 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑 | |
CN109992304A (zh) | 用于加载片寄存器对的系统和方法 | |
CN107220027A (zh) | 用于执行掩码位压缩的系统、装置以及方法 | |
CN107003986A (zh) | 用于利用索引和立即数实行向量重组的方法和装置 | |
CN108292224A (zh) | 用于聚合收集和跨步的系统、设备和方法 | |
CN107003846A (zh) | 用于向量索引加载和存储的方法和装置 | |
CN104350461B (zh) | 具有不同的读和写掩码的多元素指令 | |
CN107077329A (zh) | 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备 | |
CN104185837B (zh) | 在不同的粒度等级下广播数据值的指令执行单元 | |
CN107918546A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN106030514A (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 |