CN108701027A - 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 - Google Patents
用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN108701027A CN108701027A CN201780014781.1A CN201780014781A CN108701027A CN 108701027 A CN108701027 A CN 108701027A CN 201780014781 A CN201780014781 A CN 201780014781A CN 108701027 A CN108701027 A CN 108701027A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- processor
- atom
- storage
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 429
- 238000000034 method Methods 0.000 title claims description 77
- 238000003860 storage Methods 0.000 claims abstract description 322
- 230000004044 response Effects 0.000 claims abstract description 70
- 239000000872 buffer Substances 0.000 claims description 200
- 230000008878 coupling Effects 0.000 claims description 17
- 238000010168 coupling process Methods 0.000 claims description 17
- 238000005859 coupling reaction Methods 0.000 claims description 17
- 238000009434 installation Methods 0.000 claims description 16
- 230000014759 maintenance of location Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 27
- 238000012856 packing Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 12
- 210000004027 cell Anatomy 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 210000004940 nucleus Anatomy 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 239000011232 storage material Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 206010038743 Restlessness Diseases 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000010009 beating Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing 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
- 230000006855 networking Effects 0.000 description 1
- 230000006911 nucleation Effects 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000011343 solid material Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/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
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
Abstract
处理器包括对应于给定逻辑处理器的数据寄存器的最宽集合。最宽集合的数据寄存器的每个具有以位计的第一宽度。对应于给定逻辑处理器的解码单元要解码指定最宽集合的数据寄存器的指令,并且要解码原子存储到存储器指令。原子存储到存储器指令要指示要具有以位计的第二宽度的数据,所述以位计的第二宽度比以位计的第一宽度更宽。原子存储到存储器指令要指示与存储器位置关联的存储器地址信息。执行单元与解码单元耦合。执行单元响应于原子存储到存储器指令,要将指示的数据原子地存储到存储器位置。
Description
技术领域
本文描述的实施例一般涉及处理器。具体地,本文描述的实施例一般涉及保证处理器中的存储原子性。
背景技术
许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,打包数据指令、矢量指令或SIMD指令可以同时或并行地在多个数据元素或多个数据元素对上进行操作。处理器可以具有响应于打包数据指令的并行执行硬件,以同时或并行地执行多个操作。
可以将多个数据元素打包在一个寄存器内作为打包数据或矢量数据。在打包数据中,其它存储位置或寄存器的位可以逻辑地划分成数据元素序列。例如,128位宽打包数据寄存器可以具有两个64位宽数据元素、四个32位数据元素、八个16位数据元素或十六个8位数据元素。数据元素的每个可以表示单独的独立数据片(例如,像素颜色、复数的分量等),可以单独地和/或独立于其余的数据元素来对其操作。
附图说明
通过参考用于示出实施例的以下描述和附图,可以最好地理解本发明。在附图中:
图1是处理器的实施例的框图,所述处理器操作以执行原子存储到存储器指令的实施例以将比原生支持的数据宽度更宽的数据原子地存储到存储器。
图2是执行原子存储到存储器指令的实施例以将比原生支持的数据宽度更宽的数据原子地存储到存储器的方法的实施例的框流程图。
图3是处理器的另一实施例的框图,所述处理器操作以执行原子存储到存储器指令的实施例以将比原生支持的数据宽度更宽的数据原子地存储到存储器。
图4是执行原子存储到存储器指令的示例实施例的方法的更详细示例实施例的框流程图。
图5是具有执行单元的第一详细示例实施例的逻辑处理器的实施例的框图,所述执行单元包括分级缓冲器和写组合缓冲器。
图6是具有执行单元的更特定的第二详细示例实施例的逻辑处理器的实施例的框图,所述执行单元包括分级缓冲器和写组合缓冲器。
图7A是示出有序流水线的实施例和寄存器重命名乱序发布(issue)/执行流水线的实施例的框图。
图7B是包括耦合到执行引擎单元并且两者均耦合到存储器单元的前端单元的处理器核的实施例的框图。
图8A是单个处理器核连同其到管芯上互连网络的连接并且连同其2级(L2)高速缓冲存储器的本地子集的实施例的框图。
图8B是图8A的处理器核的部分的扩充视图的实施例的框图。
图9是可具有多于一个核、可具有集成存储器控制器并且可具有集成图形的处理器的实施例的框图。
图10是计算机架构的第一实施例的框图。
图11是计算机架构的第二实施例的框图。
图12是计算机架构的第三实施例的框图。
图13是片上系统架构的实施例的框图。
图14是根据本发明的实施例的、使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文所公开的是用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的指令、用于执行指令的处理器、当处理或执行指令时由处理器执行的方法以及结合一个或多个处理器以处理或执行指令的系统。在一些实施例中,处理器可以具有用于接收和/或解码指令的解码单元或其它逻辑以及用于执行或以其它方式执行指令的执行单元或其它逻辑。在以下描述中,阐述许多特定细节(例如特定指令操作、数据格式、处理器配置、微架构细节、操作序列等)。然而,在没有这些特定细节的情况下也可实施实施例。在其它实例中,还没有详细示出众所周知的电路、结构和技术,以避免模糊对本描述的理解。
图1是处理器100的实施例的框图,处理器100操作以执行原子存储到存储器指令108的实施例,以将比原生支持的数据宽度更宽的数据原子地存储到存储器125。在一些实施例中,处理器可以是通用处理器(例如,在桌上型计算机、膝上型计算机或其它计算机中使用的类型的通用微处理器或中央处理单元(CPU))。备选地,处理器可以是专用处理器。适合的专用处理器的示例包括但不限于网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。
处理器100包括至少一个逻辑处理器101。逻辑处理器也可以称为处理器元件。适合的逻辑处理器的示例包括但不限于核、硬件线程、线程单元和线程槽,以及具有包括程序计数器或指令指针的专用上下文或架构状态的其它逻辑处理器或处理器元件。术语核通常用于指位于能够维持独立架构状态(例如,执行状态)的集成电路上的逻辑,并且其中架构状态与专用执行和某些其它资源关联。相反,术语硬件线程常常用于指位于能够维持独立的架构状态的集成电路上的逻辑,并且其中架构状态共享对执行或某些其它资源的访问。当针对两个或更多个架构状态共享某一执行和/或其它资源,并且其它执行或其它资源专用于架构状态时,术语核和硬件线程的此类使用之间的界线可以趋向于较不相异。然而,核、硬件线程、线程单元和线程槽以及其它逻辑处理器或处理器元件通常被软件视为独立的逻辑处理器或处理器元件。一般地,软件线程、进程或工作负载可以在核、硬件线程、线程单元和线程槽以及其它逻辑处理器或处理器元件的每个上调度并且独立地与其关联。
逻辑处理器101具有指令集架构(ISA)。ISA表示与编程相关的逻辑处理器的架构的部分,并且通常包括逻辑处理器的原生支持的指令、架构寄存器、数据类型、寻址模式、存储器架构等等。ISA与微架构不同,微架构一般表示选择以实现ISA的具体设计技术。逻辑处理器可以具有以下的任何一种:各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构,其它类型的架构。在一些情况下,处理器100可以可选地具有可以全部具有相同ISA的多个逻辑处理器,或者可以具有两个或更多个逻辑处理器(具有不同ISA)(例如,不同的核可以具有不同的ISA)。
逻辑处理器101和/或其ISA包括架构寄存器110(例如,一个或多个架构寄存器堆)。架构寄存器可以表示对软件和/或编程器可见的架构可见寄存器和/或由指令集的指令指定以识别操作数的寄存器。这些寄存器与给定微架构中的其它非架构或非架构可见寄存器(例如,临时寄存器、微架构缓冲器、重新排序缓冲器等)形成对比。为简单性,架构寄存器在本文中也可简称为寄存器。寄存器的每个可以表示存储数据的管芯上或处理器上存储位置。
架构寄存器110可以包括各种不同类型的寄存器。此类寄存器的示例包括但不限于通用寄存器、打包数据寄存器、程序状态寄存器、控制寄存器、存储器寻址寄存器等等。打包数据寄存器有时在本领域中也称为矢量寄存器或单指令多数据(SIMD)寄存器。打包数据寄存器可以操作以存储打包数据、矢量数据或SIMD数据。如所示的,在一些实施例中,逻辑处理器和/或架构寄存器可以包括打包数据寄存器的最宽集合114。打包数据寄存器的最宽集合114表示在其以位计的宽度方面逻辑处理器的打包数据寄存器的最宽或最大尺寸集合和/或由逻辑处理器支持的打包数据寄存器的最宽或最大尺寸集合。在一些实施例中,逻辑处理器和/或架构寄存器还可以可选地包括打包数据寄存器的相对较窄集合112,或者潜在地包括变化宽度的打包数据寄存器的多个集合(各自小于打包数据寄存器的最宽集合114中的每个的宽度),尽管这不是要求的。作为一个特定的非限制性示例,打包数据寄存器的最宽集合114的寄存器的每个可以具有128位的宽度,而打包数据寄存器的较窄集合112的寄存器的每个可以仅具有64位的宽度。
逻辑处理器101和/或其ISA还包括指令集102。指令集的指令表示宏指令、机器级指令、提供给逻辑处理器以用于执行的指令,或逻辑处理器原生能够解码和执行的指令,如与微指令或微操作(例如,从解码指令集的指令引起的那些)相对。指令集可以包括各种不同类型的指令。下面示出并描述了这些不同类型的指令的几个代表性示例以示出某些概念。
如所示的,指令集可以包括算术和/或逻辑打包数据指令104集合,所述逻辑打包数据指令104各自在打包数据寄存器的最宽集合114上操作。作为示例,算术和/或逻辑打包数据指令可以包括用于使打包数据寄存器的最宽集合的两个源寄存器中的相同相对数据元素位置中的对应数据元素相乘,并将作为结果的乘积存储在两个源寄存器中的一个或第三寄存器中的打包乘法指令。作为另一示例,算术和/或逻辑打包数据指令可以包括用于使打包数据寄存器的最宽集合的两个源寄存器中的相同相对数据元素位置中的对应数据元素相加,并将作为结果的和存储在两个源寄存器中的一个或第三寄存器中的打包加法指令。类似地,可以可选地存在打包逻辑指令(例如,打包逻辑AND指令、打包逻辑OR指令、打包逻辑AND NOT指令、打包的逻辑异或(XOR)指令等)。通常,可以存在从若干到几十个(如果不是更多的话)此类不同类型的打包数据指令的任何地方,其各自被设计成在打包数据寄存器的最宽集合上操作,尽管本发明的范围不限于任何此类数量的这些指示。打包数据寄存器的最宽集合的宽度可以表示算术和/或逻辑打包数据指令能够指定和/或用于在其上操作的最大尺寸的打包数据操作数。
如所示的,处理器100和/或逻辑处理器101可以包括至少一个算术和/或逻辑打包数据执行单元(ALU)118,其操作以执行算术和/或逻辑打包数据指令104以在存储在打包数据寄存器的最宽集合114中的打包数据操作数上进行操作。虚线用于表示(如上面所讨论的)执行和某些其它资源可以专用于逻辑处理器或由多个逻辑处理器共享。在一些情况下,算术和/或逻辑打包数据执行单元的以位计的宽度可以与打包数据寄存器的最宽集合的每个寄存器的以位计的宽度相同。算术和/或逻辑打包数据执行单元的以位计的宽度可以表示它能够在一个或多个打包数据操作数上执行的打包数据操作的以位计的最大宽度(例如,最大支持的ALU操作)。在其它情况下,算术和/或逻辑打包数据执行单元的以位计的宽度可以可选地窄于打包数据寄存器的最宽集合的每个寄存器的以位计的宽度,以及来自打包数据寄存器的最宽集合的操作数的不同部分可以以交错或顺序的方式通过较窄的执行单元顺序地发送。作为一个示例,可以通过64位宽的执行单元发送128位打包数据操作数的第一半,并且然后可以通过64位宽的执行单元发送128位打包数据操作数的第二半。
在一些情况下,用于直接向和/或从打包数据寄存器的最宽集合递送数据的总线或其它互连的以位计的宽度可以窄于打包数据寄存器的最宽集合的每个的以位计的宽度。例如,直接向以及从打包数据寄存器的最宽集合递送数据的总线或其它互连的宽度可以仅是打包数据寄存器的最宽集合的每个的宽度的一半。在此类情况下,最宽集合的单个打包数据寄存器的数据的不同部分(例如,不同的半)可以顺序地或在不同的时间通过总线或其它互连传送。作为一个特定示例,来自最宽集合的单个128位打包数据寄存器的两个64位的半数据可以通过64位互连一个接一个顺序地传送。
如所示的,指令集通常还可以包括至少一个存储到存储器指令106,以将来自打包数据寄存器的最宽集合114中的单个寄存器的数据存储到存储器125。处理器和/或逻辑处理器可以包括存储执行单元120,其操作以执行存储到存储器指令106以将来自打包数据寄存器的最宽集合中的单个寄存器的数据存储到存储器。如所示的,存储到存储器操作122可以在总线或其它互连123上传送到存储器或以其它方式提供到存储器,以从打包数据寄存器的最宽集合中的单个寄存器提供数据。在一些情况下,由操作122在总线上传送或以其它方式提供的数据的以位计的宽度可以与打包数据寄存器的最宽集合的每个寄存器的以位计的宽度相同。在其它情况下,在总线上提供的数据的宽度可以小于最宽数据寄存器的宽度。在后一情况下,最宽集合的打包数据寄存器的内容可以在在互连上的两个或更多个顺序传输中传送,并且可以可选地通过开始和停止指示分组,使得它们可以形成单个原子存储。
再次参考图1,在一些实施例中,指令集还包括至少一个原子存储到存储器指令108。原子存储到存储器指令在被执行时可以操作以使处理器和/或逻辑处理器将具有比原生支持的数据宽度更宽的以位计的宽度的数据存储到存储器125。如所示的,可以通过总线或其它互连执行原子存储到存储器操作124。原子存储可以是如此使得将整体存储所有数据,或没有数据被存储,但是仅保证或确保不存储数据的一部分或子集。即可以存在存储完成原子性保证。原子性还可以保证由原子存储存储的数据将不会与由其它存储存储的数据交织。原子性可以相对于对数据的其它访问,使得任何此类访问将观察整体存储的所有数据,或者没有存储的数据,但是将不仅观察存储的数据的一部分或子集。原子性也可能相对于功率故障、系统崩溃、重启或其它此类事件,使得即使面对此类事件,将整体存储所有数据,或者没有数据被存储,但仅保证或确保不存储数据的一部分或子集。
在一些实施例中,原子存储可以用于比逻辑处理器101和/或处理器100的原生支持的数据宽度更宽的数据。原生支持的数据宽度可以在不同的实施例中以不同的方式表明它自己。在一些实施例中,原生支持的数据宽度可以表示打包数据寄存器的最宽集合114的以位计的宽度,和/或要在算术和/或逻辑打包数据指令104上操作或由其操作的一个或多个打包数据操作数的宽度。在一些实施例中,原生支持的数据宽度可以表示算术和/或逻辑打包数据执行单元118的宽度(例如,当它具有由指令指示的打包数据操作数的相同宽度使得打包数据操作数的多个部分不被顺序地泵送(pump)通过它时)。在一些实施例中,原生支持的数据宽度可以表示总线(例如,加载管道)的宽度,所述宽度比用于将数据直接传送到打包数据寄存器的最宽集合和从其直接传送的打包数据寄存器的最宽集合更窄。例如,处理器可以潜在地具有宽打包数据寄存器,但是可以原子地存储的数据的量(即,在没有本文公开的方法的情况下)可能受到从这些宽打包数据寄存器引出的总线的宽度限制。在一些实施例中,原生支持的数据宽度可以表示要由存储到存储器指令106存储到存储器的打包数据操作数的宽度。在一些实施例中,原生支持的数据宽度可以表示要由存储到存储器操作122存储到存储器的数据的宽度。原生支持的数据宽度至少涉及执行原子存储到存储器指令108和/或具有包括原子存储到存储器指令108的指令集102的逻辑处理器101。在一些实施例中,处理器100可以可选地具有附加的核、硬件线程或其它逻辑处理器(未示出),其可以具有不同的原生支持的数据宽度,但是此附加的逻辑处理器可能不是执行原子存储到存储器指令108的逻辑处理器和/或可以不具有包括原子存储到存储器指令108的指令集。
存在此类原子存储操作的各种可能使用。此类使用的一个示例要原子地更新数据库中的一条数据。此类使用的另一示例要在多处理环境中原子地更新一条共享数据。此类使用的又一示例要将数据原子地传递到共享装置(例如,通过存储器映射的输入-输出(MMIO)寄存器)。例如,如下面将进一步解释的,这可以用于将工作指配或提供到加速器装置或由多个逻辑处理器共享的其它类型的装置。此类使用的又一可能示例要将数据原子地存储到3D XPoint™非易失性存储器。此类使用的又一示例要将数据原子地存储到某个位置以替换锁定、信号量,更新共享变量,同步,协调等等。此类原子存储操作的其它使用仍被预期并对于本领域并且具有本公开的益处的技术人员将是显而易见的。
对更宽数据的存储完成原子性保证可以是通常不能通过执行存储到存储器指令106的多个不同实例来实现的存储完成原子性保证,所述存储到存储器指令106各自存储来自打包数据寄存器的最宽集合114的不同对应寄存器的数据的不同对应的较窄部分。例如,存储到存储器指令的不同实例一般将会在不同时间执行。来自此类不同定时的存储指令的累积数据量将不会同时全部出现在存储器中。而是,数据的不同较窄部分将会通常在不同时间被存储在存储器中。类似地,数据的不同较窄部分将会在总线或其它互连上的不同的定时事务或信号中被传送或提供。由于所涉及的不同时间,在已经仅执行了这些不同的存储操作中的一些之后,另一逻辑处理器可以对数据要被存储在存储器中的位置执行居间(intervening)读和/或存储操作是可能的。可能的是,在已经仅执行了这些不同的存储操作中的一些之后,可能发生居间功率故障、系统崩溃、重启或其它此类事件。由于此类可能性,通过总线或其它互连传送的多个不同顺序存储到存储器指令和/或不同定时存储操作的此类使用一般不能用于在更宽数据上提供存储完成原子性保证。
在图1的特定示例实施例中,打包数据寄存器的最宽集合114表示处理器100的最宽数据寄存器。然而,在其它实施例中,其它数据寄存器可表示处理器的最宽数据寄存器。同样地,算术和/或逻辑打包数据指令104指示最宽打包数据操作数。然而,在其它实施例中,指令集的其它指令可以指定最宽操作数,其可以不一定是打包数据操作数。类似地,在其它实施例中,指令集可以包括存储到存储器指令,以指示要存储到存储器的另一类型的最宽数据寄存器(即,不一定是打包数据寄存器)中的操作数。同样地,执行单元116可以包括执行单元,以在其它最宽数据寄存器(即,不一定是打包数据寄存器)和操作数(即,不一定是打包数据操作数)上进行操作。
图2是执行原子存储到存储器指令的实施例的方法226的实施例的框流程图。在各种实施例中,所述方法可以由处理器、指令处理设备、数字逻辑装置或集成电路执行。
所述方法包括在框228在给定逻辑处理器处接收原子存储到存储器指令。在各种方面,可以在给定逻辑处理器的指令取单元、给定逻辑处理器的指令高速缓冲存储器、给定逻辑处理器的预取单元、或在给定逻辑处理器的解码单元接收指令。原子存储到存储器指令可以指定(例如,通过一个或多个字段或位集合明确指定),或以其它方式指示(例如,隐式指示)要原子存储的数据。在一些实施例中,指示的数据可以比最宽数据寄存器(例如,最宽打包数据寄存器)以位计地更宽,所述最宽数据寄存器对应于给定的逻辑处理器,给定逻辑处理器的指令集的其它指令(例如,任何打包乘法指令、任何打包加法指令、任何打包算术和/或逻辑指令等)能够指定或以其它方式指示。
可以提到适合宽度的几个说明性示例。例如,在一些实施例中,指示的数据的宽度可以是128位,并且最宽数据寄存器(例如,打包数据寄存器)的宽度可以是256位。在其它实施例中,指示数据的宽度可以是128位,并且最宽数据寄存器(例如,打包数据寄存器)的宽度可以是512位。又在其它实施例中,指示的数据的宽度可以是128位,并且最宽数据寄存器(例如,打包数据寄存器)的宽度可以是1024位。在另外的实施例中,指示的数据的宽度可以是256位,并且最宽数据寄存器(例如,打包数据寄存器)的宽度可以是512位。在更进一步的实施例中,指示的数据的宽度可以是256位,并且最宽数据寄存器(例如,打包数据寄存器)的宽度可以是1024位。又在其它实施例中,指示的数据的宽度可以是512位,并且最宽数据寄存器(例如,打包数据寄存器)的宽度可以是1024位。
原子存储到存储器指令还可以指定(例如,通过一个或多个字段或位集合明确指定),或以其它方式指示(例如,隐式指示)存储器地址信息。存储器地址信息可以与存储器位置(例如,指示的数据要被原子地存储的目的地存储器位置)关联。例如,存储器地址信息可以是可用的(潜在地与其它信息(例如,来自段寄存器的信息等)组合)以生成存储器位置的存储器地址。在一些实施例中,存储器位置可以对应于MMIO范围(例如,装置的MMIO控制寄存器),尽管本发明的范围不这样限制。
在不同实施例中,所指示的数据(例如,要响应于指令而原子地存储的数据)可以初始存储在不同的初始存储位置中和/或从不同的初始存储位置访问。在一些实施例中,此数据初始可以存储在多个数据寄存器中(例如,对应于给定逻辑处理器的最宽打包数据或其它最宽寄存器中的多个)。在此类实施例中,原子存储到存储器指令可以指定或以其它方式指示这些数据寄存器中的至少一个(例如,指定连续最宽数据寄存器序列中的一个最宽数据寄存器,其中隐式理解也要使用其它顺序寄存器)。备选地,在其它实施例中,要原子地存储的此数据初始可以存储在源存储器位置中。在此类实施例中,原子存储到存储器指令可以指定或以其它方式指示与源存储器位置关联(例如,潜在地与其它信息结合使用以生成针对源存储器位置的存储器地址)的附加存储器地址信息。同样,在此类实施例中,原子存储到存储器指令可以使要原子存储的数据初始从此源存储器位置加载(例如,加载到对应于给定的逻辑处理器的架构最宽打包数据或其它最宽数据寄存器中的多个或加载到处理器的一个或多个非架构临时寄存器或存储位置中)。
所述方法还包括在框229响应于原子存储到存储器指令和/或作为原子存储到存储器指令的结果,将指示的数据原子地存储到存储器位置。在一些实施例中,这可以包括传送指示的数据(其比在朝向存储器位置的总线或其它互连上的最宽打包数据或其它最宽寄存器更宽)。在一些实施例中,如下面将进一步解释的,将指示的数据原子地存储到存储器位置可以可选地用于将工作指配到另一装置(例如,加速器装置),尽管本发明的范围不这样限制。
所示的方法涉及架构操作(例如,从软件角度可见的那些)。在其它实施例中,所述方法可以可选地包括一个或多个微架构操作。作为示例,指令可以由给定逻辑处理器的取单元和/或对应于给定逻辑处理器的取单元来取,由给定逻辑处理器的解码单元和/或对应于给定逻辑处理器的解码单元来解码,可以访问数据,对应于给定逻辑处理器的执行单元可以执行微架构操作以实现指令等。在一些实施例中,用于实现指令的微架构操作可以可选地包括将指示的数据的多个部分(其共同表示总量的指示的数据)顺序存储到分级缓冲器,并且然后同时存储来自分级缓冲器的总量的所指示的数据和/或所指示数据的多个部分(例如,存储到写组合缓冲器),如将在下面进一步详细解释的。
图3是处理器300的实施例的框图,处理器300操作以执行原子存储到存储器指令308的实施例。在各种实施例中,处理器可表示集成电路的至少一部分,可以包括在管芯或半导体衬底上,可以包括半导体材料,可以包括晶体管等。在一些实施例中,处理器300可以可选地是和/或包括在图1的处理器100中,尽管这不是要求的。先前描述的处理器100的可选特性和细节还可选地应用于处理器300。在一些实施例中,处理器300可以可选地用于执行图2的方法226。本文描述的针对处理器300的组件、特征和特定可选细节还可以可选地应用于方法226,方法226可以可选地由处理器300执行。备选地,方法226可以可选地由类似或不同的处理器或设备执行。此外,处理器300可以可选地执行与方法226类似或不同的方法。
处理器至少包括逻辑处理器301。逻辑处理器包括和/或支持架构打包数据寄存器310集合。打包数据寄存器的每个可以表示管芯上(或集成电路上)存储位置(其操作以存储打包数据、矢量数据或SIMD数据)。打包数据寄存器可以在不同微架构中以不同方式实现,并且不限于任何具体类型的设计。适合类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器,以及其组合。如所示的,在一些实施例中,对应于逻辑处理器301和/或由逻辑处理器301支持的打包数据寄存器310可以包括打包数据寄存器的最宽集合314。最宽集合的打包数据寄存器的每个可以具有以位计的第一宽度。在一些实施例中,打包数据寄存器可以可选地包括打包数据寄存器的较窄集合312,尽管这不是要求的。较窄集合的打包数据寄存器的每个可以具有比最宽集合的打包数据寄存器的每个更窄的宽度。在此特定示例实施例中打包数据寄存器的最宽集合314表示处理器的最宽数据寄存器,尽管在其它实施例中,处理器的其它最宽数据寄存器可以可选地是非打包数据寄存器。
在操作期间,处理器300和/或逻辑处理器301可以接收原子存储到存储器指令308。例如,可以从总线或其它互连上的存储器接收指令。在各种实施例中,指令可以存储在逻辑处理器的指令高速缓冲存储器中和/或对应于逻辑处理器的高速缓冲存储器中,可以由逻辑处理器的取单元和/或对应于逻辑处理器的取单元来取等等。所述指令可以表示宏指令、机器代码指令或逻辑处理器301和/或处理器300的指令集的其它指令或控制信号。在一些实施例中,原子存储到存储器指令可以明确指定(例如,通过一个或多个字段或位集合),或以其它方式指示(例如,隐式指示)数据334,其要具有比最宽集合的打包数据寄存器(或处理器的其它最宽数据寄存器)的每个的以位计的第一宽度更宽的以位计的第二宽度。
为了进一步示出,具体提到适合宽度的一些说明性示例可能是有帮助的。作为示例,在一些实施例中,所指示的数据334的第二宽度可以是128位,并且最宽打包数据寄存器314(或其它最宽架构寄存器)的每个的第一宽度可以是256位。在其它实施例中,第二宽度可以是128位并且第一宽度可以是512位。又在其它实施例中,第二宽度可以是128位并且第一宽度可以是1024位。在另外实施例中,第二宽度可以是256位并且第一宽度可以是512位。在更进一步实施例中,第二宽度可以是256位并且第一宽度可以是1024位。又在其它实施例中,第二宽度可以是512位并且第一宽度可以是1024位。这些只是适合宽度的几个说明性示例。
原子存储到存储器指令还可以指定(例如,通过一个或多个字段或位集合明确指定),或以其它方式指示(例如,隐式指示)存储器地址信息。存储器地址信息可以与存储器325中的存储器位置338(例如,目的地存储器位置)关联,其中指示的数据334要原子地存储为具有比第一宽度更宽的第二宽度的数据339。例如,指示的存储器地址信息可以是可使用的(潜在地与其它信息(例如,来自段寄存器的信息等)组合),以生成存储器位置的存储器地址。各种不同类型的存储器地址信息是可能的。所指示的地址信息可以表示绝对存储器地址信息或相对存储器地址信息,其可以指示相对于基存储器地址的存储器位置或其它存储器位置。此外,可以可选地使用各种不同的间接存储器寻址模式。作为一个特定示例,指令可以隐式指示用于存储相对存储器地址信息的寄存器(例如,通用寄存器),所述相对存储器地址信息可以与存储在另一隐式寄存器(例如,代码、数据或扩展段寄存器)中的附加存储器地址信息组合以生成用于识别具有第一字节或其它可寻址存储元件(数据339被要原子地存储在其中)的存储器位置338。这仅仅是一个示例。其它形式的地址信息也是可能的。同样,一些或全部地址信息可以潜在地由指令(例如,立即数)的位提供,而不是在一个或多个寄存器中提供地址信息。
在不同实施例中,指示的数据334初始可以存储在不同的初始存储位置中和/或从不同的初始存储位置访问。如所示的,在一些实施例中,数据334初始可以存储在最宽打包数据寄存器314中(或者存储在其它最宽数据寄存器中)。由于数据334具有比最宽集合的打包数据寄存器的每个的第一宽度更宽的第二宽度,所以数据可以存储在最宽集合的至少两个打包数据寄存器中。在此类实施例中,原子存储到存储器指令可以指定或以其它方式指示最宽集的这些多个打包数据寄存器中的至少一个。例如,指令可以具有字段或位集合来指定最宽集合的打包数据寄存器中的一个,并且可以隐式指示最宽集合的一个或多个其它打包数据寄存器(例如,一个或多个顺序寄存器)(例如,处理器可以从指令的操作码中理解使用这些寄存器而指令不需要具有附加的位来明确地指定它)。备选地,在其它实施例中,数据334可以替代地初始存储在存储器325中的源存储器位置(未示出)中。在此类实施例中,原子存储到存储器指令可以指定或以其它方式指示与源存储器位置关联(例如,潜在地与其它信息组合使用以生成针对源存储器位置的存储器地址)的附加存储器地址信息。同样,在此类实施例中,原子存储到存储器指令可以使要原子地存储的数据初始从此源存储器位置加载(例如,加载到多个架构最宽打包数据寄存器314中或加载到处理器的一个或多个非架构临时寄存器或存储位置(未示出)中)。
再次参考图3,逻辑处理器301包括解码单元或解码器330。解码单元可以操作以接收和解码逻辑处理器301的指令集的指令,包括指令(例如,算术和/或逻辑打包数据指令104),其指定打包数据寄存器的最宽集合314中的寄存器(或其它最宽数据寄存器)。解码单元还可以操作以接收并解码原子存储到存储器指令308。解码单元可输出一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码指令或控制信号等),其反映、表示和/或从相对较高级的原子存储到存储器指令导出。在一些实施例中,解码单元可包括一个或多个输入结构(例如,一个或多个端口、一个或多个互连、接口)以接收原子存储到存储器指令,与其耦合以辨别以及解码原子存储到存储器指令的指令辨别和解码逻辑,以及与其耦合以输出一个或多个较低级指令或一个或多个控制信号的一个或多个输出结构(例如,一个或多个端口、一个或多个互连、接口)。解码单元可以使用各种不同的机制来实现,包括但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及适合于实现解码单元的其它机制。
在一些实施例中,代替直接向解码单元330提供原子存储到存储器指令,可以可选地使用指令仿真器、转化器、变形器、解释器或其它指令转换模块。可以用软件、硬件、固件或其组合来实现各种类型的指令转换模块。在一些实施例中,指令转换模块可以位于处理器外部,诸如,例如位于单独的管芯上和/或存储器中(例如,作为静态、动态或运行时间仿真模块)。作为示例,指令转换模块可以接收原子存储到存储器指令,所述指令可以具有第一指令集,并且可以仿真、翻译、变形、解释或以其它方式将原子存储到存储器指令转换成一个或多个对应的中间指令或控制信号,其可以具有第二不同的指令集。可以将第二指令集的一个或多个中间指令或控制信号提供到解码单元(例如,解码单元330),解码单元可以将它们解码成由处理器的原生硬件(例如,一个或多个执行单元)可执行的一个或多个较低级指令或控制信号。
再次参考图3,逻辑处理器301还包括执行单元332。执行单元332与解码单元330耦合并与打包数据寄存器310耦合。执行单元可以接收一个或多个解码的或以其它方式转换的指令或控制信号,其表示原子存储到存储器指令和/或从原子存储到存储器指令导出。执行单元还可以接收指示的数据334。执行单元可以响应于原子存储到存储器指令和/或作为原子存储到存储器指令的结果而操作(例如,响应于从指令解码的一个或多个指令或控制信号和/或响应于被解码的指令和/或响应于提供到解码单元的指令),以将指示的数据334原子地存储到存储器中的存储器位置338作为数据339。如所示的,在一些实施例中,数据339可以具有以位计的第二宽度,其比打包数据寄存器的最宽集合314的寄存器(或其它最宽架构数据寄存器)的每个的以位计的第一宽度更宽。这是数据334和/或数据339可以比逻辑处理器301的原生支持的数据宽度更宽的一种方式。在其它实施例中,数据334和/或数据339可以比逻辑处理器301的原生支持的数据宽度更宽(以各种其它方式),如本文其它地方所描述的。
执行单元332和/或逻辑处理器301和/或处理器300可以包括特定或具体逻辑(例如,晶体管、集成电路或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其它硬件),其响应于原子存储到存储器指令和/或作为原子存储到存储器指令的结果(例如,响应于从原子存储到存储器指令解码的一个或多个指令或控制信号)操作以执行原子存储到存储器指令308和/或将数据334原子地存储到存储器325结果。在一些实施例中,执行单元可包括用于接收数据334的一个或多个输入结构(例如,一个或多个端口、一个或多个互连、接口),与其耦合以接收和处理数据334的电路或逻辑,以及与其耦合以将数据339输出朝向存储器325的一个或多个输出结构(例如,一个或多个端口、一个或多个互连、接口)。
在一些实施例中,执行单元可以包括针对图5-6中的任何一个或多个示出和描述的电路或逻辑,其是适合的微架构布置的说明性示例,尽管本发明的范围不这样限制。如下面将进一步解释的,在一些实施例中,执行单元可以包括分级缓冲器(未示出)。在一些实施例中,执行单元响应于原子存储到存储器指令,可以操作以将共同表示总量的指示的数据的指示的数据334的多个不同部分顺序存储到分级缓冲器,并且然后可以操作以同时存储来自分级缓冲器的总量的指示的数据和/或指示的数据的多个不同部分。在一些实施例中,执行单元还可以具有写组合缓冲器(未示出),并且可以可选地将总量的指示的数据同时存储到写组合缓冲器。备选地,总量的指示的数据可以可选地同时存储到另一存储位置(例如,总线队列、另一队列等),直接写出到总线等等。在一些实施例中,执行单元响应于原子存储到存储器指令,还可以可选地操作以在已将指示的数据的多个不同部分存储到写组合缓冲器之后将写组合缓冲器(如果使用)配置成不允许较年轻的存储操作与写组合缓冲器合并。在一些实施例中,执行单元响应于原子存储到存储器指令,还可以可选地操作以在已将指示的数据的多个不同部分存储到写组合缓冲器之后(例如,在这之后通常在逻辑处理器的一个或大约十个时钟周期内)配置写组合缓冲器(如果使用)以用于逐出。
为了避免使描述模糊,已示出和描述了相对简单的处理器和逻辑处理器。然而,处理器可以可选地包括其它处理器组件。例如,各种不同的实施例可以包括针对图7B和8A/B中的任何一个示出和描述的组件的各种不同组合和配置。处理器的所有组件可以耦合在一起以允许它们根据预计地操作。
图4是执行原子存储到存储器指令的示例实施例的方法440的更详细示例实施例的框流程图。在各种实施例中,所述方法可以由处理器、指令处理设备、数字逻辑装置或集成电路执行。在一些实施例中,方法440可以由图3的处理器300和/或通过图3的处理器300和/或使用图3的指令308执行。本文针对处理器300和/或指令308描述的组件、特征和特定可选细节也可选地应用于方法440。备选地,方法440可以由类似或不同的处理器或设备和/或在类似或不同的处理器或装置内和/或使用类似或不同的指令来执行。此外,处理器300可以执行与方法440相同、类似或不同的方法。
所述方法包括在框441在给定逻辑处理器处接收原子存储到存储器指令。在一些实施例中,所述指令可指示具有数据的源操作数。在一些实施例中,数据可以比给定逻辑处理器的原生支持的数据宽度更宽。例如,在一些实施例中,数据可以比给定逻辑处理器的和/或对应于给定逻辑处理器的和/或由给定逻辑处理器支持的最宽打包数据或其它最宽数据寄存器更宽。在框442,响应于所述指令,可以将来自源操作数的共同表示总量的数据的数据的多个不同部分顺序存储到分级缓冲器的多个不同对应部分。在框443,响应于所述指令,可以将存储在分级缓冲器中的总量的数据和/或数据的多个不同部分同时存储到写组合缓冲器。在框444,写组合缓冲器可以在已将数据的多个不同部分存储到写组合缓冲器之后,可选地配置成响应于所述指令而不允许合并。这可以帮助防止较年轻的存储操作(例如,其比原始程序顺序中的原子存储到存储器指令更年轻和/或在其随后)与写组合缓冲器合并。在框445,写组合缓冲器可以在已将数据的多个不同部分存储到写组合缓冲器之后,可选地配置成响应于所述指令而用于逐出。在框446,可以将写组合缓冲器逐出到原子存储到存储器指令的目的地存储器操作数(例如,存储器位置)。在一些实施例中,可以响应于原子存储到存储器指令来执行实际逐出。在其它实施例中,可以在原子存储到存储器指令的执行之外执行实际逐出。
要意识到,这仅是一个说明性示例方法。在其它实施例中,代替写组合缓冲器,总量的数据可以替代地从分级缓冲器存储到另一存储位置(例如,总线队列或其它队列或缓冲器),或者直接提供到总线。例如,其它实施例可以可选地省略框445。代表性地,处理器替代地可以被允许逐渐逐出写组合缓冲器或在其准备好时逐出写组合缓冲器。作为另一示例,其它实施例可以可选地省略框444。代表性地,可以可选地在框443之后立即引起写组合缓冲器的逐出,使得可以不存在将写组合缓冲器配置为不允许合并的需要。作为又一示例,框444和445可以可选地以与所示的顺序相反的顺序执行。其它实施例可以添加附加操作,通过不同的操作替换所示的操作中的一个等。
图5是具有执行单元532的第一详细示例实施例的逻辑处理器501的实施例的框图,所述执行单元532包括分级缓冲器和写组合缓冲器556,以执行原子存储到存储器指令508的实施例。在一些实施例中,逻辑处理器501可以可选地用于执行图2的方法226和/或图4的方法440。本文描述的针对逻辑处理器501的组件、特征和特定可选细节也可以可选地应用于方法226和/或方法440。备选地,方法226和/或方法440可以可选地由类似或不同的处理器或设备执行。此外,逻辑处理器501可以可选地执行与方法226和/或方法440类似或不同的方法。
逻辑处理器501包括:打包数据寄存器的最宽集合514,其各自具有第一宽度;用于接收并解码原子存储到存储器指令508的解码单元530;以及执行单元532。在所示的示例实施例中。打包数据寄存器的最宽集合表示处理器的最宽架构数据寄存器,尽管在其它实施例中,其它非打包数据寄存器可表示最宽数据寄存器。除非另有说明,这些组件可以可选地具有图3的对应命名的组件的一些或全部特性。为了避免模糊描述,将主要描述不同和/或附加特性,而不重复可以可选地相同或类似的所有特性。
在操作期间,解码单元可以操作以接收和解码逻辑处理器501的指令集的指令,包括指定最宽数据寄存器(例如,在打包数据寄存器的最宽集合514中的寄存器)的指令(例如,算术和/或逻辑打包数据指令104)。解码单元还可以操作以接收并解码原子存储到存储器指令508。在一些实施例中,原子存储到存储器指令可指示要具有比处理器的最宽数据寄存器(例如,打包数据寄存器的最宽集合514的寄存器)的每个的以位计的第一宽度更宽的以位计的第二宽度。如所示的,在一些实施例中,数据可以可选地初始被至少存储为最宽集合的第一打包数据寄存器514-1中的第一宽度的第一数据部分550-1,以及在最宽集合的第二打包数据寄存器514-2中的第一宽度的第二数据部分550-2。备选地,在其它实施例中,数据可以替代地可选地初始存储在源存储器位置中,如先前所描述的。
执行单元532与解码单元530耦合并且与打包数据寄存器510耦合。执行单元可以响应于原子存储到存储器指令508和/或作为原子存储到存储器指令508的结果而操作以将指示的数据550-1、550-2原子地存储到由原子存储到存储器指令指示的目的地存储器操作数和/或存储器位置。如所示的,在一些实施例中,执行单元可以包括分级缓冲器552和写组合缓冲器556。分级缓冲器和写组合缓冲器可以耦合在一起(例如,写组合缓冲器可以与分级缓冲器的输出耦合)。在一些实施例中,分级缓冲器可以表示新的非架构或微架构结构或存储。在一些实施例中,分级缓冲器可以通过存储和/或逻辑来实现,所述存储和/或逻辑可以可选地类似于用于写组合缓冲器但是由于比写组合缓冲器的那些更宽松的架构保证和要求,通常在实现上更简单的存储和/或逻辑。在一些实施例中,分级缓冲器可以可选地在存储器执行单元、存储器执行集群中实现,尽管不要求实现分级缓冲器的精确位置。
在一些实施例中,执行单元响应于指令508,可以操作以将共同表示总量的数据的数据的多个不同部分(例如第一数据部分550-1和第二数据部分550-2)顺序存储到分级缓冲器的不同对应部分。在一些实施例中,数据的这些不同部分可以通过不同的存储操作来提供,并且可以来自加载存储队列的存储缓冲器,尽管本发明的范围不这样限制。如所示的,分级缓冲器可以具有用于接收和存储第一数据部分550-1的第一宽度的第一分级缓冲器段554-1,以及用于接收和存储第二数据部分550-2的第一宽度的第二分级缓冲器段554-2。第一和第二数据部分的每个可以通过不同的对应存储操作在不同的时间存储,所述存储操作例如将来自最宽打包数据寄存器(或其它最宽数据寄存器)的不同对应一个的数据存储到分级缓冲器的不同对应段或部分。在所示的示例中,仅示出了第一和第二数据部分,尽管在其它实施例中,可以存在多于两个部分(例如,四个、八个等)。在一些实施例中,每个段可以可选地与逻辑处理器的最宽打包数据或其它最宽寄存器是相同的宽度,尽管这不是要求的。在其它实施例中,每个段可以可选地是逻辑处理器的最宽打包数据或其它最宽寄存器的四分之一或一半。
在一些实施例中,在共同表示要原子地存储到存储器的总量的数据的数据的所有不同部分已被存储到分级缓冲器的不同对应部分之后,执行单元响应于指令508,可以操作以同时存储共同表示要从分级缓冲器552原子地存储到存储器(例如,到另一存储位置,到总线等)的总量的数据的数据的所有不同部分。在所示的特定示例中,将要存储此数据的其它存储位置示出为写组合缓冲器556,尽管本发明的范围不这样限制。如所示的,写组合缓冲器可具有用于存储来自第一宽度的第一分级缓冲器段或部分554-1的数据的第一宽度的第一写组合缓冲器段或部分558-1,以及用于存储来自第一宽度的第二分级缓冲段或部分554-2的数据的第一宽度的第二写组合缓冲器段或部分558-2。在一些实施例中,可以首先分配写组合缓冲器,并且然后在单个存储操作中用来自分级缓冲器的数据来填充。在一些实施例中,写组合缓冲器可以在数据高速缓冲存储器单元中(例如,在一级(L1)数据高速缓冲存储器控制器中)实现,尽管本发明的范围不这样限制。
如所示的,在一些实施例中,写组合缓冲器556可具有表示非合并字段560的一个或多个位。在一些实施例中,在指示的数据的多个不同部分已被存储到写组合缓冲器之后,执行单元响应于指令508,可以可选地操作以将写组合缓冲器的非合并字段配置成不允许合并(例如,无允许的合并)。作为示例,这可以帮助防止较年轻的存储操作(例如,比原始程序顺序中的指令508更年轻和/或在其随后)与写组合缓冲器合并。这可以帮助防止不预计是原子存储到存储器的一部分的其它数据无心地覆写已在要原子地存储到存储器的写组合缓冲器中的一些数据。
如所示的,在一些实施例中,写组合缓冲器556可以具有表示逐出字段562的一个或多个位。在一些实施例中,在指示的数据的多个不同部分已存储到写组合缓冲器之后,执行单元响应于指令508,可以可选地操作以配置写组合缓冲器的逐出字段,使得写组合缓冲器被标记为和/或准备好逐出。在一些实施例中,在数据已从分级缓冲器存储到写组合缓冲器中之后立即或至少很快地进行此操作可以是可期望的。通常,不应在此时将附加数据合并或存储到写组合缓冲器中,因此最好尽快逐出写组合缓冲器,使得它可以然后被回收并用于其它存储操作。而且,在数据被用于将工作指配到加速器装置或其它装置的情况下,如下面将进一步讨论的,通常可以最好的是较早发送此数据而不是稍后发送,因此其它装置可以开始对其起作用。作为示例,此类配置通常可以在逻辑处理器的约一个到约十个时钟周期内,或者约一个到约五个时钟周期内执行,尽管这不是要求的。写组合缓冲器的逐出可以通过存储器子系统继续进行到存储器。在一些实施例中,原子存储操作可以绕过和/或不存储到处理器的一个或多个高速缓冲存储器中。例如,它们可以是写组合非可缓存存储。
有利地,包括分级缓冲器552作为与写组合缓冲器556分开的单独结构可以倾向于帮助简化实现。在一些实施例中,写组合缓冲器可以被设计成支持在任何给定时间点被转储清除或逐出到存储器的架构能力。在不具有单独的分级缓冲器的情况下,如果替代地使用写组合缓冲器来累积原子存储操作的不同数据部分,则在原子存储操作的一些但不是所有不同数据部分被存储在写组合缓冲器时的中间时间点可以发生转储清除或逐出到存储器。然而,保证整个存储操作的原子性一般暗示不应该执行总存储的此类不完整部分的存储,而是执行仅整个存储或不执行存储。然而,不要求分级缓冲器支持在任何给定时间点刷新或逐出到存储器的能力。相应地,分级缓冲器可以累积或收集原子存储操作的所有不同数据部分,并且然后在一个操作中将所有这些不同数据部分写到写组合缓冲器。这可以帮助确保所有数据的存储的原子性。备选地,如果期望,可以可选地省略分级缓冲器,并且可以替代地使用写组合缓冲器,其中在原子存储操作的一些但不是所有的不同数据部分存储在写组合缓冲器时,至少当写组合缓冲器用于实现原子存储到存储器指令508时的中间时间点处进行修改以防止转储清除或逐出到存储器。例如,给定的写组合缓冲器可以专用、保留或锁定专用于原子存储到存储器指令的实现使得它被不同地对待(例如,不需要在实现原子存储到存储器指令时的任何给定时间点转储清除或逐出到存储器的能力)。
图6是具有执行单元632的更特定的第二详细示例实施例的逻辑处理器601的实施例的框图,所述执行单元632包括分级缓冲器和写组合缓冲器656以执行原子存储到存储器指令608的实施例。在一些实施例中,逻辑处理器601可以可选地用于执行图2的方法226和/或图4的方法440。本文针对逻辑处理器601描述的组件、特征和特定可选细节也可以可选地应用于方法226和/或方法440。备选地,方法226和/或方法440可以可选地由类似或不同的处理器或设备执行。此外,逻辑处理器601可以可选地执行与方法226和/或方法440类似或不同的方法。
此特定示例的逻辑处理器601包括128位打包数据寄存器集合614(其表示逻辑处理器的数据寄存器的最宽集合和/或由逻辑处理器支持的数据寄存器的最宽集合),用于接收和解码原子存储到存储器指令608的解码单元630以及执行单元632。除非另有说明或以其它方式清楚地显而易见的,这些组件可以可选地具有图3的对应命名的组件的一些或全部特性。此特定示例的执行单元包括512位分级缓冲器652和512位写组合缓冲器656。除非另有说明或以其它方式清楚地显而易见的,分级缓冲器和写组合缓冲器可以可选地具有图5的那些分级缓冲器和写组合缓冲器的一些或全部特性。为了避免模糊描述,将主要描述不同和/或附加特性,而不重复可以可选地相同或类似的所有特性。
在图6的实施例中,128位打包数据寄存器614是逻辑处理器601的最宽数据寄存器和/或由逻辑处理器601支持的最宽数据寄存器。原子存储到存储器指令608指示要原子地存储到存储器的数据,其包括第一128位数据部分650-1、第二128位数据部分650-2、第三128位数据部分650-3和第四128位数据部分650-4。第一128位数据部分650-1存储在第一128位打包数据寄存器614-1中,第二128位数据部分650-2存储在第二128位打包数据寄存器614-2中,第三128位数据部分650-3存储在第三128位打包数据寄存器614-3中,以及第四128位数据部分650-4存储在第四128位打包数据寄存器614-4中。在其它实施例中,临时寄存器可以替代地用于保持从源存储器操作数加载的数据,如本文其它地方所描述的。此外,128位只是这些数据部分和最宽数据寄存器的适合尺寸的一个说明性示例。在其它实施例中,例如,它们可以各自是64位、256位或512位。
解码单元630与微代码只读存储器(ROM)668耦合。微代码ROM可用于存储微代码、微指令或其它较低级指令、控制信号或用于逻辑处理器的指令集的某些指令(包括原子存储到存储器指令608)的操作。作为示例,解码单元可以将原子存储到存储器指令解码成到微代码ROM中的微代码中的适当点的微代码入口点,以检索微代码、微指令、或其它较低级指令、控制信号或操作(例如,微代码序列)以实现原子存储到存储器指令。识别的较低级指令或控制信号(例如,微代码序列)可以从微代码ROM输出到执行单元,以实现原子存储到存储器指令。
如示出的示例实施例中所示的,微代码ROM可以包括存储到分级缓冲器指令、控制信号、或操作670,以及从分级缓冲器存储到写组合缓冲器指令、控制信号、或操作671。在一些实施例中,可以执行存储到分级缓冲器操作670以将128位数据部分650中的指定或指示的一个从其初始存储位置(例如,在此示例中,128位打包数据寄存器614中的一个)存储到多个不同的分级缓冲器段或部分(例如,在此示例中,四个不同的128位分级缓冲器段或部分654)中的指定或指示的一个。例如,可以执行存储到分级缓冲器操作的第一实例以执行第一存储操作672-1来将第一128位数据部分650-1存储到第一128位分级缓冲器部分或段654-1,以及可以执行存储到分级缓冲器操作的第二实例以执行第二存储操作672-2来将第二128位数据部分650-2存储到第二128位分级缓冲器部分或段654-2。继续,可以执行存储到分级缓冲器操作的第三实例以执行第三存储操作672-3来将第三128位数据部分650-3存储到第三128位分级缓冲器部分或段654-3以及可以执行存储到分级缓冲器操作的第四实例以执行第四存储操作672-4来将第四128位数据部分650-4存储到第四128位分级缓冲器部分或段654-4。在此特定示例中,分级缓冲器是512位分级缓冲器,尽管本发明的范围不这样限制。
在一些实施例中,存储到分级缓冲器操作670可以指示要复制的数据。在此示例中,使用数据的128位部分,尽管在其它示例中,可以替代地使用数据的更宽或更窄的部分。例如,操作可以具有一个或多个位或字段以指定以下中的一个:具有数据650的128位打包数据寄存器614,或具有数据的临时寄存器等等。所述操作还可以具有一个或多个位或字段以指定或以其它方式指示分级缓冲器的多个不同段或部分654中的一个。通常,不需要通过完整的存储器地址来寻址分级缓冲器。而是,可以使用简单的索引或选择器值来索引、寻址或选择分级缓冲器的多个不同段或部分中的一个。例如,1位索引可用于在分级缓冲器的两个部或部分之间进行索引或选择,或者2位索引可用于在分级缓冲器的四个部或部分之间进行索引或选择,3位索引可用于在分级缓冲器的八个部或部分之间进行索引或选择。相应地,对于此存储操作,可以将基和索引(例如,如用于其它操作来寻址存储器的)设置为零,并且可以将比例(scale)设置为1,并且可以将1位、2位或者3位索引配置成具有适当的值以索引或选择要在其上存储数据的分级缓冲器的不同段或部分中的一个。而且,由于不需要通过完整的存储器地址来寻址分级缓冲器,因此不存在对用于搜索转化后备缓冲器(TLB)的此存储操作的需要。也不存在支持数据转发到更年轻的负载的需要。此存储操作可以是非阻塞的,因为不需要应用地址冲突等等。也可以不存在对执行断点检测或进行任何“核攻击(nuke)”的需要。此存储操作也不需要遭受排序限制。
在一些实施例中,在已将四个不同的128位数据部分650存储到分级缓冲器652之后,执行单元632响应于指令608,可以操作以执行从分级缓冲器到写组合缓冲器操作671的存储以将分级缓冲器652(在此具体示例中是512位分级缓冲器)的整个内容在单个存储操作中同时存储到写组合缓冲器656(在此具体示例中是512位写组合缓冲器)。备选地,代替写组合缓冲器,可以可选地使用另一存储位置,或者可以可选地将数据直接提供到总线或其它互连。在一些实施例中,可以允许此存储操作与较旧的写组合缓冲器合并。或者,如果此存储操作不与较旧的写组合缓冲器合并,则此存储操作可以迟缓(remiss)并分配写组合填充缓冲器。在迟缓时,此存储操作可以阻塞流水线中在其后的任何东西(例如,较年轻的存储操作),以及可能使用数据高速缓冲存储器填充端口的年长(senior)存储管道,例如资源冲突条件,并通过分级缓冲器的内容填充分配的写组合缓冲器。
在一些实施例中,操作671可以根据由原子存储到存储器指令608指示的存储器地址信息使用存储器地址。作为一个特定示例,可以使用从由原子存储到存储器指令指示的段寄存器添加到基地址的位移以及基数、比例、索引来计算有效地址以获得线性地址,尽管本发明的范围不这样限制。在一些实施例中,存储、所有地址计算和权利以及限制检查可以与用于操作的512位的地址尺寸和操作数尺寸关联,尽管本发明的范围不这样限制。在一些实施例中,在64位模式中,可以检查规范地址形式违反而不是段限制检查,尽管本发明的范围不这样限制。在一些实施例中,当针对存储生成线性地址时,如果线性地址不是64字节对齐的,则其可能引起一般的保护故障,尽管本发明的范围不这样限制。在一些实施例中,操作671可以强制存储器类型是无缓存随机组合写(USWC),不管基础存储器类型。此存储操作是弱排序的存储操作。
在一些实施例中,取决于具体实现,对应于操作671的存储可以可选地被标记为不可转发。代表性地,处理器可以具有利用通过内部旁路的较旧存储的结果满足较年轻负载的能力,其中较旧存储数据被路由到较年轻的负载。然而,在一些实现中,防止此类转发可以是可期望的。例如,这可以是当原子存储到存储器指令用于向加速器装置提交工作时的情况,其中在加速器装置修改数据(在其已经被存储到目的地存储器位置后)的情况下,较年轻的读从实际目的地存储器位置获得数据可以是适当的。在其它实施例中,例如对于原子存储到存储器指令的其它使用,可能不存在对将存储标记为不可转发的需要。
如所示的,在一些实施例中,写组合缓冲器656可以具有表示非合并字段660的一个或多个位,以及表示逐出字段662的一个或多个位。在一些实施例中,操作671可以可选地操作以将写组合缓冲器的非合并字段配置成不允许合并(例如,没有允许的合并),并且可以可选地操作以配置写组合缓冲器的逐出字段,使得写组合缓冲器被标记为和/或准备好逐出。
本文公开的原子存储到存储器指令可以针对指示要存储的数据的总宽度提供架构支持的原子存储。此外,在一些实施例中,初始可以从源存储器操作数加载要原子存储的数据。在一些实施例中,由于存储到存储器操作的原子性,如果原子存储到存储器指令的实现的任何部分发生故障,经历违反或异常条件,或者以其它方式失效,则不应在总线上传送数据的部分到存储器,并且数据的部分不应该存储在存储器中。在一些实施例中,可以针对要原子地存储数据在其上的目的地操作数的整个宽度执行断点、基于范围的检查、故障检查等等。作为示例,执行单元响应于原子存储到存储器指令,可以生成数据要被原子地存储在的存储器位置的第一字节和最后字节的存储器地址(例如,使用各种可能的寻址模式中的任何一种),并且当原子存储到存储器指令引退或提交时,处理器可以对从第一个字节到最后字节的任何字节执行针对段限制违反、基于范围的违反、故障、断点等等的检查和信令。作为示例,关于断点,可能潜在地已在用于存储要原子地存储的数据的总宽度的目的地存储器位置的任何字节上配置断点。在一些实施例中,如果在这些字节中的任何字节上存在断点,则可以在指令完成(例如,引退或提交)时发信号通知断点。
在一些实施例中,本文公开的原子存储到存储器指令可以被采用作为算法的一部分,以通过存储器中的相互可访问的存储位置将数据传递到另一装置(例如,加速器装置、输入和/或输出(I/O)装置(例如,高性能存储控制器)等)。作为示例,原子存储到存储器指令可以表示工作提交指令,其被采用作为算法或指令集的一部分,逻辑处理器可以执行其以将与加速器装置将要执行的工作或任务关联的数据存储到存储器位置,并且加速器装置可以从存储器位置检索数据。在一些情况下,存储器位置可以对应于MMIO范围(例如,装置的MMIP空间中的装置的MMIO控制寄存器)。各种各样不同类型的加速器是适合的,诸如例如图形加速器、连网加速器、机器学习加速器、计算机视觉加速器、密码加速器、固定功能加速器、通用图形处理单元(GPGPU)、现场可编程门阵列(FPGA)等等,仅举几个示例。存储器位置可以表示逻辑寄存器(例如,工作提交寄存器)或其它接口(处理器和加速器装置通过其进行通信)。在一些实施例中,存储器位置还可以从一个或多个其它逻辑处理器可访问,其也可以使用存储器位置来将数据传递到装置(例如,将工作指配到加速器装置)。在此类实施例中,将整个量的数据原子地存储到存储器位置的能力可能是有益的,使得一个或多个其它逻辑处理器可能不能够执行干扰存储(例如,执行到相同存储器位置的同时或交织存储并且由此混杂数据),这可能破坏总量的数据,不正确地指配工作等等。原子存储到存储器指令可以帮助确保整个量的数据(例如,存储器中的整个逻辑寄存器)一次全部存储并且仅由单个逻辑处理器存储。此外,原子存储到存储器指令可以提供两个或更多个逻辑处理器可以能够将工作指配到相同加速器装置而不需要彼此相互同步或协调、获取锁定等等的有效方式。
在一些实施例中,可以存在用于实现用于将数据传递到另一装置的工作提交指令或其它指令的不同类型的原子存储到存储器指令。一种此类类型可能不预期来自与到存储器的数据的原子存储相关的其它装置的响应。对于这种类型,处理器的引退单元或提交单元可以在数据已原子地存储到存储器之后引退或提交原子存储到存储器指令,而不用等待和/或不需要接收来自其它装置的响应。
另一种类型的原子存储到存储器指令可以预期来自与到存储器的数据的原子存储相关的其它装置的响应。例如,来自其它装置的响应可以指示已观察、确认、接收、接受了到存储器的数据的原子存储(例如,已接受了工作提交)等等。代表性地,此类响应可以向执行原子存储操作的逻辑处理器指示原子存储操作在系统中被完全观察并且现在是完全一致的。此响应可以以不同方式提供,诸如,例如通过其它装置配置在架构上可见的处理器的寄存器或存储位置中的一个或多个位(例如,在状态寄存器中设置一个或多个状态位),其它装置提供专用信号,其它装置配置目的地存储器位置中的一个或多个位,或者以其它方式。对于这种类型的原子存储到存储器指令,在数据已原子地存储到存储器之后,处理器的引退单元可以等待引退原子存储到存储器指令,直到在接收到来自其它装置的此类响应之后为止。直到引退,指令可以命令较年轻的强排序的指令,诸如例如栅栏(fence)指令、强排序存储指令、锁定指令等等,直到指令被引退(例如,当原子存储的数据在系统中被全局观察并且完全一致时)。
作为一个特定示例,此类响应可以向逻辑处理器指示原子存储操作引起对加速器装置的接受的工作提交。作为示例,加速器装置可以具有内部工作队列或缓冲器(例如,共享工作队列),其由存储到原子存储到存储器指令的目的地存储器位置的数据馈送(例如,MMIO映射的共享工作队列门户寄存器)。在一些情况下,内部工作队列或缓冲器可以具有足够的存储空间或容量来接受原子存储操作的数据,数据可以从目的地存储器位置移动到内部工作队列或缓冲器中,并且加速器装置可以提供指示工作提交由加速器装置接受的响应。在其它情况下,内部工作队列或缓冲器可能不具有足够的存储空间或容量来接受原子存储操作的数据,并且加速器装置可以提供指示工作提交不由加速器装置接受的响应。
示范性核架构、处理器、和计算机架构
处理器核可以采用不同方式、为了不同目的、以及在不同处理器中被实现。例如,此类核的实现可包括:1)打算用于通用计算的通用有序核;2)打算用于通用计算的高性能通用乱序核;3)打算主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括打算用于通用计算的一个或多个通用有序核和/或打算用于通用计算的一个或多个通用乱序核的CPU;以及2)包括打算主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。此类不同处理器导致不同计算机系统架构,其可包括:1)在与所述CPU单独的芯片上的协处理器;2)在与CPU相同的封装中单独管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在该情况中,此类协处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核);以及4)在可在相同管芯上包括所描述的CPU(有时被称为一个或多个应用核或一个或多个应用处理器)、以上所描述的协处理器、和附加功能性的片上系统。示范性核架构接下来被描述,继之以示范性处理器和计算机架构的描述。
示范性核架构
有序与乱序核框图
图7A是框图,其示出根据本发明的实施例的示范性有序流水线和示范性寄存器重命名、乱序发布/执行流水线两者。图7B是框图,其示出根据本发明的实施例的要被包括在处理器中的有序架构核的示范性实施例和示范性寄存器重命名、乱序发布/执行架构核两者。图7A-B中的实线框示出有序流水线和有序核,而虚线框的可选附加示出寄存器重命名、乱序发布/执行流水线和核。给定有序方面是乱序方面的子集,乱序方面将被描述。
在图7A中,处理器流水线700包括取阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(还已知为分派或发布)阶段712、寄存器读/存储器读阶段714、执行阶段716、写回/存储器写阶段718、异常处理阶段722、和提交阶段724。
图7B示出处理器核790,其包括耦合到执行引擎单元750的前端单元730,并且两者被耦合到存储器单元770。核790可以是简化指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或备选核类型。如又一个选项,核790可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元730包括耦合到指令高速缓冲存储器单元734的分支预测单元732,所述指令高速缓冲存储器单元734被耦合到指令翻译旁视(lookaside)缓冲器(TLB)736,其被耦合到指令取单元738,所述指令取单元738被耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成为输出一个或多个微操作、微代码入口点、微指令、其它指令、或其它控制信号,其被解码自、或其以其它方式反映、或被推导自原始指令。使用各种不同机制,解码单元740可被实现。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)、等等。在一个实施例中,核790包括存储用于某些宏指令的微代码的微代码ROM或其它介质(例如,在解码单元740中或以其它方式在前端单元730内)。解码单元740被耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括耦合到引退单元754和一个或多个调度器单元756的集合的重命名/分配器单元752。调度器单元756表示任何数量的不同调度器,包括保留站、中央指令窗口、等等。一个或多个调度器单元756被耦合到一个或多个物理寄存器堆单元758。物理寄存器堆单元758中的每个表示一个或多个物理寄存器堆,其不同物理寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、打包的整数、打包的浮点、矢量整数、矢量浮点、状态(例如,是要被执行的下一个指令的地址的指令指针)、等等。在一个实施例中,物理寄存器堆单元758包括矢量寄存器单元、写掩码寄存器单元、和标量寄存器单元。这些寄存器单元可提供架构矢量寄存器、矢量掩码寄存器、和通用寄存器。一个或多个物理寄存器堆单元758通过引退单元754来重叠以示出寄存器重命名和乱序执行可被实现所采用的各种方式(例如,使用一个或多个重排序缓冲器和一个或多个引退寄存器堆;使用一个或多个未来堆、一个或多个历史缓冲器、和一个或多个引退寄存器堆;使用寄存器映射和寄存器的池;等等)。引退单元754和一个或多个物理寄存器堆单元758被耦合到一个或多个执行集群760。一个或多个执行集群760包括一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可执行各种操作(例如,移位、加法、减法、乘法)以及在各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)上执行。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,其它实施例可包括都执行所有功能的多个执行单元或仅一个执行单元。一个或多个调度器单元756、一个或多个物理寄存器堆单元758、和一个或多个执行集群760被示出为可能是复数的,因为某些实施例对于某些类型的数据/操作来创建单独流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线、和/或存储器访问流水线,其各自具有它们自己的调度器单元、物理寄存器堆单元、和/或执行集群—并且在单独的存储器访问流水线的情况中,其中此流水线的仅执行集群具有一个或多个存储器访问单元764的某些实施例被实现)。还应被理解的是,在单独流水线被使用之处,这些流水线的一个或多个流水线可以是乱序发布/执行,并且剩余的是有序。
存储器访问单元764的集合被耦合到存储器单元770,存储器单元770包括耦合到数据高速缓冲存储器单元774的数据TLB单元772,数据高速缓冲存储器单元774耦合到2级(L2)高速缓冲存储器单元776。在一个示范性实施例中,存储器访问单元764可包括加载单元、存储地址单元、和存储数据单元,其的每个被耦合到存储器单元770中的数据TLB单元772。指令高速缓冲存储器单元734被进一步耦合到存储器单元770中的2级(L2)高速缓冲存储器单元776。L2高速缓冲存储器单元776被耦合到一个或多个其它等级的高速缓冲存储器并最终到主存储器。
通过示例的方式,示范性寄存器重命名、乱序发布/执行核架构可实现如下流水线700:1)指令取738执行取及长度解码阶段702和704;2)解码单元740执行解码阶段706;3)重命名/分配器单元752执行分配阶段708和重命名阶段710;4)一个或多个调度器单元756执行调度阶段712;5)一个或多个物理寄存器堆单元758和存储器单元770执行寄存器读/存储器读阶段714;执行集群760执行执行阶段716;6)存储器单元770和一个或多个物理寄存器堆单元758执行写回/存储器写阶段718;7)各种单元可在异常处理阶段722中被涉及;以及8)引退单元754和一个或多个物理寄存器堆单元758执行提交阶段724。
核790可支持一个或多个指令集(例如,x86指令集(具有已随较新版本被添加的一些扩展);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings ofSunnyvale,CA的ARM指令集(具有诸如NEON的可选附加扩展)),包括本文中所描述的一个或多个指令。在一个实施例中,核790包括用于支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,因此允许由许多多媒体应用来使用的操作使用打包的数据来执行。
应被理解的是,核可支持多线程(执行操作或线程的两个或更多并行集合),并可以采用多种方式来如此做,所述多种方式包括时间分段的多线程、同时多线程(在单个物理核为线程的每个提供逻辑核的情况中,那个物理核正进行同时多线程),或其组合(例如,诸如在Intel®超线程技术中的时间分段的取和解码以及其后的同时多线程)。
虽然寄存器重命名在乱序执行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。虽然处理器的所示出实施例还包括单独的指令和数据高速缓冲存储器单元734/774以及共享的L2高速缓冲存储器单元776,但备选实施例可具有用于指令和数据两者的单个内部高速缓冲存储器,诸如例如,1级(L1)内部高速缓冲存储器、或多个等级的内部高速缓冲存储器。在一些实施例中,系统可包括内部高速缓冲存储器及外部于核和/或处理器的外部高速缓冲存储器的组合。备选地,所有高速缓冲存储器可外部于核和/或处理器。
特定示范性有序核架构
图8A-B示出核将是芯片中若干逻辑块之一(包括相同类型和/或不同类型的其它核)的更特定示范性有序核架构的框图。逻辑块通过高带宽互连网络(例如,环网络)取决于应用而与一些固定的功能逻辑、存储器I/O接口、和其它必要I/O逻辑通信。
图8A是根据本发明的实施例的单个处理器核连同到管芯上互连网络802的它的连接并连同2级(L2)高速缓冲存储器804的它的本地子集的框图。在一个实施例中,指令解码器800支持具有打包数据指令集扩展的x86指令集。L1高速缓冲存储器806允许低时延访问以将存储器高速缓存到标量和矢量单元中。虽然在一个实施例中(为简化设计),标量单元808和矢量单元810使用单独的寄存器集合(相应地,是标量寄存器812和矢量寄存器814),并且在它们之间所转移的数据被写到存储器并然后从1级(L1)高速缓冲存储器806读回,但本发明的备选实施例可使用不同手段(例如,使用单个寄存器集合或包括允许数据在所述两个寄存器堆之间被转移而不被写和读回的通信路径)。
L2高速缓冲存储器804的本地子集是全局L2高速缓冲存储器的部分,所述全局L2高速缓冲存储器被划分成单独的本地子集,每处理器核一个。每个处理器核具有到L2高速缓冲存储器804的它自己的本地子集的直接访问路径。由处理器核所读的数据被存储在其L2高速缓冲存储器子集804中并能被快速地访问,并行于其它处理器核访问它们自己的本地L2高速缓冲存储器子集。由处理器核所写的数据被存储在其自己的L2高速缓冲存储器子集804中并且如果必要则从其它子集中被转储清除。环网络确保共享的数据的一致性。环网络是双向的以允许诸如处理器核、L2高速缓冲存储器、和其它逻辑块的代理在芯片内互相通信。每个环数据-路径每方向是1012位宽。
图8B是根据本发明的实施例的图8A中的处理器核的部分的扩展的视图。图8B包括L1高速缓冲存储器804的L1数据高速缓冲存储器806A部分,以及关于矢量单元810和矢量寄存器814的更多细节。具体地,矢量单元810是16-宽矢量处理单元(VPU)(见16-宽ALU 828),其执行整数、单精度浮点、和双精度浮点指令的一个或多个。VPU支持在存储器输入上通过打乱单元820来打乱寄存器输入、通过数值转换单元822A-B来进行数值转换、以及通过复制单元824来进行复制。写掩码寄存器826允许预测结果的矢量写。
具有集成存储器控制器和图形的处理器
图9是根据本发明的实施例的可具有多于一个核、可具有集成存储器控制器、并可具有集成图形的处理器900的框图。图9中的实线框示出具有单个核902A、系统代理910、一个或多个总线控制器单元916的集合的处理器900,而虚线框的可选附加示出具有多个核902A-N、系统代理单元910中的一个或多个集成存储器控制器单元914的集合、和专用逻辑908的备选处理器900。
因此,处理器900的不同实现可包括:1)CPU,具有是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑908、以及是一个或多个通用核(例如,通用有序核、通用乱序核、所述两个核的组合)的核902A-N;2)具有是打算主要用于图形和/或科学(吞吐量)的大量的专用核的核902A-N的协处理器;以及3)具有是大量的通用有序核的核902A-N的协处理器。因此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30或更多核)、嵌入式处理器等等。处理器可被实现在一个或多个芯片上。使用多个处理技术的任何处理技术(诸如例如,BiCMOS、CMOS、或NMOS),处理器900可被实现在一个或多个衬底上和/或是其部分。
存储器层级包括核内高速缓冲存储器的一个或多个等级、一组或一个或多个共享的高速缓冲存储器单元906、和耦合到集成存储器控制器单元914的集合的外部存储器(未示出)。共享的高速缓冲存储器单元906的集合可包括一个或多个中等级高速缓冲存储器,诸如2级(L2)、3级(L3)、4级(L4)、或其它等级的高速缓冲存储器、最后等级高速缓冲存储器(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元912将集成图形逻辑908、共享的高速缓冲存储器单元906的集合、以及系统代理单元910/一个或多个集成存储器控制器单元914互连,但备选实施例可使用用于互连此类单元的任何数量的公知技术。在一个实施例中,一个或多个高速缓冲存储器单元906和核902-A-N之间的一致性被维持。
在一些实施例中,核902A-N的一个或多个核有多线程的能力。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括为调节集成图形逻辑908和核902A-N的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N可关于架构指令集是同质或异质的;即,核902A-N的两个或更多核可有执行相同指令集的能力,而其它的核可有执行不同指令集或那个指令集的仅子集的能力。
示范性计算机架构
图10-13是示范性计算机架构的框图。在对于膝上型计算机、桌上型计算机、手持型PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其它电子装置的领域中已知的其它系统设计和配置也是适合的。一般来说,能够合并如本文中所公开的处理器和/或其它执行逻辑的极多种的系统或电子装置一般是适合的。
现在参考图10,所示出的是根据本发明的一个实施例的系统1000的框图。系统1000可包括被耦合到控制器中枢1020的一个或多个处理器1010、1015。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(其可在单独的芯片上);GMCH 1090包括存储器1040和协处理器1045被耦合到的存储器和图形控制器;IOH 1050将输入/输出(I/O)装置1060耦合到GMCH 1090。备选地,存储器和图形控制器之一或两者被集成在(如本文中所描述的)处理器内,存储器1040和协处理器1045被直接耦合到处理器1010、和具有IOH 1050的单个芯片中的控制器中枢1020。
附加处理器1015的可选性质在图10中用断线来指代。每个处理器1010、1015可包括本文中所描述的处理核中的一个或多个,并可以是处理器900的某版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或所述两个存储器的组合。对于至少一个实施例,控制器中枢1020经由诸如前侧总线(FSB)的多点总线、诸如快速路径互连(QPI)的点对点接口、或类似连接1095来与一个或多个处理器1010、1015通信。
在一个实施例中,协处理器1045是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器中枢1020可包括集成图形加速器。
物理资源1010、1015之间关于包括架构、微架构、热、功率耗用特性、等等的指标的规格的谱能存在多种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。指令内所嵌入的可以是协处理器指令。处理器1010将这些协处理器指令识别为是应由附连的协处理器1045来执行的类型。因此,处理器1010在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器1045。一个或多个协处理器1045接受并执行所接收的协处理器指令。
现在参考图11,所示出的是根据本发明的实施例的第一更特定示范性系统1100的框图。如图11中所示出的,多处理器系统1100是点对点互连系统,并包括经由点对点互连1150所耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每个可以是处理器900的某版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一个实施例中,处理器1170和1180分别是处理器1010、协处理器1045。
处理器1170和1180被示出分别包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为它的总线控制器单元的部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。使用P-P接口电路1178、1188,处理器1170、1180可经由点对点(P-P)接口1150来互换信息。如图11中所示出的,IMC 1172和1182将处理器耦合到相应存储器(即存储器1132和存储器1134),其可以是本地附连到相应处理器的主存储器的部分。
使用点对点接口电路1176、1194、1186、1198,处理器1170、1180可各自经由单独P-P接口1152、1154与芯片组1190互换信息。芯片组1190可以可选地经由高性能接口1139与协处理器1138互换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等
共享的高速缓冲存储器(未示出)可被包括在任一处理器中或在两个处理器之外,又经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓冲存储器信息可被存储在共享的高速缓冲存储器中。
芯片组1190可经由接口1196来耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线、或诸如PCI高速总线或另一个第三代I/O互连总线的总线,尽管本发明的范围未被如此限制。
如图11中所示出的,各种I/O装置1114可连同总线桥1118被耦合到第一总线1116,总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其它处理器的一个或多个附加处理器1115被耦合到第一总线1116。在一个实施例中,第二总线1120可以是低管脚计数(LPC)总线。各种装置可被耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信装置1127和诸如硬盘驱动器或其它大容量存储装置的存储单元1128,其可包括指令/代码和数据1130(在一个实施例中)。此外,音频I/O1124可被耦合到第二总线1120。注意,其它架构是可能的。例如,替代图11的点对点架构,系统可实现多点总线或其它此类架构
现在参考图12,所示出的是根据本发明的实施例的第二更特定示范性系统1200的框图。图11和12中的相似元件具有相似附图标记,并且图11的某些方面已从图12中被省略以便避免模糊图12的其它方面。
图12示出了处理器1170、1180可分别包括集成存储器以及I/O控制逻辑(“CL”)1172和1182。因此,CL 1172、1182包括集成存储器控制器单元并包括I/O控制逻辑。图12示出了不仅存储器1132、1134被耦合到CL 1172、1182,而且I/O装置1214也被耦合到控制逻辑1172、1182。遗留I/O装置1215被耦合到芯片组1190。
现在参考图13,所示出的是根据本发明的实施例的SoC 1300的框图。图9中的类似元件具有相似附图标记。同样,虚线框在更高级的SoC上是可选特征。在图13中,一个或多个互连单元1302被耦合到:应用处理器1310,其包括一个或多个核202A-N的集合和一个或多个共享的高速缓冲存储器单元906;系统代理单元910;一个或多个总线控制器单元916;一个或多个集成存储器控制器单元914;一组或一个或多个协处理器1320,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器访问(DMA)单元1332;以及用于耦合到一个或多个外部显示器的显示单元1340。在一个实施例中,一个或多个协处理器1320包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中所公开的机制的实施例可被实现在硬件、软件、固件、或此类实现手段的组合中。本发明的实施例可被实现为在可编程系统上执行的程序代码或计算机程序,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、和至少一个输出装置。
诸如图11中所示出的代码1130的程序代码可被应用于输入指令以执行本文中所描述的功能并生成输出信息。输出信息可以采用已知方式被应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有处理器(诸如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可被实现在高等级过程的或面向对象的编程语言中以与处理系统通信。如果期望的话,则程序代码可还被实现在汇编或机器语言中。事实上,本文中所描述的机制不限于对任何具体编程语言的范围中。在任何情况中,语言可以是编译或解释的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,其当由机器来读时促使该机器制作用于执行本文中所描述的技术的逻辑。此类表示(已知为“IP核”)可被存储在有形的、机器可读介质上并被供应给各种客户或制造设施以加载到实际做出逻辑或处理器的制作机器。
此类机器可读存储介质可包括由机器或装置所制造或形成的物品的非暂态、有形的布置而没有限制,包括存储介质(诸如硬盘、包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)、和磁光盘的任何其它类型的盘)、半导体装置(诸如只读存储器(ROM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁或光卡、或适合于存储电子指令的任何其它类型的介质)。
因此,本发明的实施例还包括非暂态、有形的机器可读介质,所述介质含有指令或含有设计数据,诸如硬件描述语言(HDL),其定义本文中所描述的结构、电路、设备、处理器和/或系统特征。此类实施例可还被称为程序产品。
仿真(包括二进制翻译、代码变形等)
在一些情况中,指令转换器可被用于将指令从源指令集转换成目标指令集。例如,指令转换器可翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或以其它方式将指令转换成要由核来处理的一个或多个其它指令。指令转换器被实现在软件、硬件、固件、或其组合中。指令转换器可在处理器上、离开处理器、或部分在处理器上而部单独开处理器。
图14是框图,其对照根据本发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地指令转换器可被实现在软件、固件、硬件、或其各种组合中。图14示出使用x86编译器1404,采用高等级语言1402的程序可被编译以生成x86二进制代码1406,其可由具有至少一个x86指令集核的处理器1416来原生执行。具有至少一个x86指令集核的处理器1416表示能如具有至少一个x86指令集核的Intel处理器一样大体上执行相同功能的任何处理器,这通过兼容地执行或以其它方式处理(1)Intel x86指令集核的指令集的实质部分,或(2)针对于在具有至少一个x86指令集核的Intel处理器上执行的应用或其它软件的对象代码版本,以便取得大体上与具有至少一个x86指令集核的Intel处理器相同的结果。x86编译器1404表示可操作以生成x86二进制代码1406(例如,对象代码)的编译器,x86二进制代码1406能通过或不通过附加联接处理而在具有至少一个x86指令集核的处理器1416上被执行。类似地,图14示出了使用备选指令集编译器1408,采用高等级语言1402的程序可被编译以生成备选指令集二进制代码1410,其可由不具有至少一个x86指令集核的处理器1414(例如,具有执行MIPS Technologies of Sunnyvale,CA的MIPS指令集和/或执行ARM Holdings of Sunnyvale,CA的ARM指令集的核的处理器)来原生执行。指令转换器1412被用于将x86二进制代码1406转换成可由不具有x86指令集核的处理器1414来原生执行的代码。此被转换的代码不可能与备选指令集二进制代码1410相同,因为能够这样做的指令转换器难以做出;然而,被转换的代码将完成一般操作并由来自备选指令集的指令构成。因此,指令转换器1412表示软件、固件、硬件、或其组合,其通过仿真、模拟或任何其它过程而允许不具有x86指令集处理器或核的处理器或另一电子装置执行x86二进制代码1406。
针对图1、4、5、6的任何一个所描述的组件、特征和细节也可以可选地应用于图2-3中的任何一个。本文公开的针对处理器的任何一个描述的组件、特征和细节可以可选地应用于本文描述的方法的任何一个,其在实施例中可以可选地由和/或通过此类处理器来执行。本文所描述处理器的任何一个可以可选地包括在本文所公开的系统的任何一个(例如图10-13的任何一个)中。在实施例中本文公开的指令的任何一个可以可选地由和/或通过本文公开的处理器的任何一个执行,可选地在一些实施例中具有本文示出的微架构的任何一个,并且可选地在一些实施例中包括在本文示出的系统的任何一个中。
在本描述和权利要求中,术语“耦合”和/或“连接”连同它们的衍生可已经被使用。这些术语并不被意指为彼此的同义词。相反,在实施例中,“连接”可被用于指示两个或更多元件彼此直接物理和/或电接触。“耦合”可意味两个或更多元件彼此直接物理和/或电接触。然而,“耦合”还可意味两个或更多元件不彼此直接接触,但仍彼此合作或相互作用。例如,执行单元可通过一个或多个中间组件来与寄存器和/或解码单元耦合。在附图中,箭头被用于示出连接和耦合。
术语“和/或”可已经被使用。如本文中使用的,术语“和/或”意味一个或另一个或两者(例如A和/或B意味A或B或A和B两者)。
在上文描述中,已经陈述了特定细节以便提供实施例的全面理解。然而,可在没有这些特定细节中的某些的情况下实践其它实施例。本发明的范围将不由上文提供的特定示例来确定,但仅由下文权利要求来确定。在其它实例中,众所周知的电路、结构、装置和操作采用框图形式和/或在没有细节的情况下已经被示出,以便避免使本描述的理解模糊。在适当考虑处,附图标记或附图标记的终端部分已经在附图之中重复以指示对应的或类似的元件,其可以可选地具有相似或相同的特性,除非以其它方式被指定或是清楚明显的。
某些操作可由硬件组件执行,或在机器可执行或电路可执行的指令中来实施,该机器可执行或电路可执行的指令可被用于促使和/或引起利用指令来编程的机器、电路或硬件组件(例如处理器、处理器的部分、电路等)执行操作。操作还可以可选地由硬件和软件的组合来执行。处理器、机器、电路或硬件可包括特定或具体电路或其它逻辑(例如潜在地与固件和/或软件组合的硬件),其可操作以执行和/或处理指令并且响应于指令来存储结果。
一些实施例包括制品(例如计算机程序产品),其包括机器可读介质。介质可包括以由机器可读的形式提供(例如存储)信息的机制。机器可读介质可提供(或已在其上存储)指令或指令的序列,其如果和/或当由机器执行时可操作以促使机器执行和/或引起机器执行本文公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可包括有形和/或非暂时性机器可读存储介质。例如,非暂时性机器可读存储介质可包括软盘、光存储介质、光盘、光数据存储装置、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪速存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂时性存储器、非暂时性数据存储装置等等。非暂时性机器可读存储介质不是由暂时性传播信号组成。在一些实施例中,存储介质可包括有形介质,其包括固态物质或材料,诸如例如半导体材料、相变材料、磁固体材料、固体数据存储材料等。备选地,非有形暂时性计算机可读传输介质诸如例如电、光、声或其它形式的传播信号(诸如载波、红外信号以及数字信号)可以可选地被使用。
合适的机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等等。合适的机器的另外其它示例包括计算机系统或其它电子装置,其包括处理器、数字逻辑电路或集成电路。这样的计算机系统或电子装置的示例包括但不限于桌上型计算机、膝上型计算机、笔记本计算机、平板式计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如路由器和交换机)、移动互联网装置(MID)、媒体播放器、智能电视、桌面一体机(nettops)、机顶盒和视频游戏控制器。
遍及本说明书提到的例如“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”,指示具体特征可被包括在本发明的实践中,但不是必然要求的。类似地,在描述中,各种特征有时被集合在单个实施例、附图或其描述中,以用于简化本公开并帮助理解各种发明的方面的目的。然而,公开的此方法不被解释为反映本发明要求比在每个权利要求中清楚叙述的更多的特征的意图。相反,如下文权利要求所反映,发明的方面在于少于单个公开的实施例的所有特征。因此,在详细描述之后的权利要求由此清楚地合并到该详细描述中,其中每个权利要求独立作为本发明的单独实施例。
示例实施例
以下示例涉及另外实施例。示例中的特定特征可以在一个或多个实施例的任何地方使用。
示例1是一种包括对应于给定逻辑处理器的数据寄存器的最宽集合的处理器。所述最宽集合的所述数据寄存器的每个具有以位计的第一宽度。所述处理器还包括对应于所述给定逻辑处理器的解码单元以解码指定所述最宽集合的所述数据寄存器的指令,以及解码原子存储到存储器指令。所述原子存储到存储器指令要指示要具有比所述最宽集合的所述数据寄存器的每个的所述以位计的第一宽度更宽的以位计的第二宽度的数据。所述原子存储到存储器指令指示与存储器位置关联的存储器地址信息。所述处理器还具有与所述解码单元耦合的执行单元。所述执行单元响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置。
示例2包括示例1所述的处理器,其中所述执行单元包括分级缓冲器,并且其中所述执行单元响应于所述指令而把要共同表示总量的所指示的数据的多个部分顺序存储到所述分级缓冲器,以及在已将所述总量的所指示的数据存储在所述分级缓冲器中之后,同时存储来自所述分级缓冲器的所述总量的所指示的数据。
示例3包括示例2所述的处理器,还包括写组合缓冲器,并且其中所述执行单元响应于所述原子存储到存储器指令,要将所述总量的所指示的数据从所述分级缓冲器同时存储到所述写组合缓冲器。
示例4包括示例3所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后配置所述写组合缓冲器以用于逐出。
示例5包括示例3至4中的任何一个所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后将所述写组合缓冲器配置成不允许较年轻的存储操作与所述写组合缓冲器合并。
示例6包括示例1至5中的任何一个所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要当所述原子存储到存储器指令引退时发信号通知以下中的一个:所述数据要原子地存储在的所述存储器位置的从第一字节到最后字节的任何字节上配置的断点、对所述任何字节的段限制违反、对所述任何字节的规范地址形式违反和对所述任何字节的基于范围的违反。
示例7包括示例1至6中的任何一个所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要使所述数据的所述原子存储不可转发,并且要强制与所述原子地存储的数据关联的存储器类型是无缓存随机组合写(USWC),而不管基础存储器类型。
示例8包括示例1至7中的任何一个所述的处理器,其中所述第一和第二宽度是以下中的一个:(1)所述第一宽度是128位,以及所述第二宽度是256位;(2)所述第一宽度是128位,以及所述第二宽度是512位;(3)所述第一宽度是128位,以及所述第二宽度是1024位;(4)所述第一宽度是256位,以及所述第二宽度是512位;以及(5)所述第一宽度是256位,以及所述第二宽度是1024位。
示例9包括示例1至8中的任何一个所述的处理器,其中所述解码单元要解码所述原子存储到存储器指令,所述指令要指示与第二不同存储器位置关联的第二存储器地址信息,响应于所述原子存储到存储器指令要从所述第二不同存储器位置加载所指示的数据。
示例10包括示例1至8中的任何一个所述的处理器,其中,所述解码单元要解码所述原子存储到存储器指令,所述指令要指示初始用于存储所指示的数据的所述最宽集合的多个所述数据寄存器。
示例11包括示例1至10中的任何一个所述的处理器,还包括引退单元。而且可选地其中所述引退单元要等待引退所述原子存储到存储器指令直到接收到响应。而且可选地其中所述响应要指示要已原子地存储到所述存储器位置的所述数据是否已被完全观察并且现在一致。
示例12包括示例1至11中的任何一个所述的处理器,其中所述第二宽度比最宽操作的以位计的宽度更宽,所述最宽操作是以下中的一个:所述给定逻辑处理器能够在一个或多个打包数据操作数上执行的算术操作、逻辑操作以及算术和逻辑操作。
示例13包括示例1至12中的任何一个所述的处理器,其中,所述第二宽度比最宽打包数据操作数的以位计的宽度更宽,所述最宽打包数据操作数要由以下中的任何一个指示:所述解码单元要解码的任何打包数据加法指令以及所述解码单元要解码的任何打包数据乘法指令。
示例14是一种由处理器执行的方法,包括:在所述处理器的给定逻辑处理器处接收原子存储到存储器指令。所述原子存储到存储器指令指示比所述给定逻辑处理器的指令集的指令能够指定的最宽数据寄存器以位计地更宽的数据,并且所述原子存储到存储器指令指示与存储器位置关联的存储器地址信息。所述方法还包括响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置。
示例15包括示例14所述的方法,其中所述原子存储包括将具有至少512位宽度的所指示的数据原子地存储到所述存储器位置,并且其中所述最宽数据寄存器的宽度不大于256位。
示例16包括示例14至15中的任何一个所述的方法,其中所述原子地存储还包括,响应于所述原子存储到存储器指令把共同表示总量的所指示的数据的多个部分顺序存储到分级缓冲器。而且可选地将指示的数据的多个部分和/或总量的指示的数据从所述分级缓冲器同时存储到另一存储位置。
示例17包括示例16所述的方法,其中所述同时存储包括将所述总量的所指示的数据从所述分级缓冲器同时存储到写组合缓冲器,并且其中所述原子地存储还包括响应于所述原子存储到存储器指令:在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后,将所述写组合缓冲器配置成不允许较年轻的存储操作与所述写组合缓冲器合并。而且可选地在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后,配置所述写组合缓冲器以用于逐出。
示例18包括示例14至17中的任何一个所述的方法,其中所述将所指示的数据原子地存储到所述存储器位置用于将工作指配到加速器装置。
示例19包括示例14至18中的任何一个所述的方法,还包括当所述原子存储到存储器指令提交时检测和发信号通知以下中的一个:在所述数据原子地存储时在所述存储器位置的任何字节上的断点、段限制违反、以及基于范围的违反。
示例20包括示例14至19中的任何一个所述的方法,其中所述接收包括接收所述原子存储到存储器指令,其指示与第二存储器位置关联的存储器地址信息,响应于所述原子存储到存储器指令,从所述第二存储器位置加载所指示的数据。
示例21是一种计算机系统,包括:互连;以及与所述互连耦合的处理器。所述处理器具有给定的核,所述核具有数据寄存器的最宽集合。所述最宽集合的所述数据寄存器的每个具有以位计的第一宽度。所述给定的核接收要指示要具有以位计的第二宽度的数据的原子存储到存储器指令,所述第二宽度比所述最宽集合的所述数据寄存器的每个的所述第一宽度更宽。所述原子存储到存储器指令指示与存储器位置关联的存储器地址信息,所述处理器响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置。所述计算机系统还包括与所述互连耦合的动态随机存取存储器(DRAM)。所述DRAM存储指令的集合以使用所述原子存储到存储器指令的不同实例来将工作提交到另一装置。
示例22包括示例21所述的计算机系统,其中所述处理器包括分级缓冲器和写组合缓冲器,并且其中所述处理器响应于所述原子存储到存储器指令要将所指示的数据的多个部分顺序存储到所述分级缓冲器。而且可选地将所指示的数据的所述多个部分从所述分级缓冲器存储到所述写组合缓冲器。
示例23包括示例21至22中的任何一个所述的计算机系统,其中第一宽度不大于256位,并且第二宽度是至少512位。
示例24是包括非暂时性机器可读存储介质的制品。非暂时性机器可读存储介质存储原子存储到存储器指令。所述原子存储到存储器指令如果由处理器执行,则使所述处理器执行包括在所述处理器的给定逻辑处理器处接收所述原子存储到存储器指令的操作。原子存储到存储器指令指示要具有比所述给定逻辑处理器能够执行的最宽算术操作的以位计的宽度更宽的以位计的宽度的数据,以及所述原子存储到存储器指令指示与存储器地址关联的存储器地址信息。所述操作还包括将所述数据原子地存储到所述存储器位置。
示例25包括示例24所述的制品,其中所述数据的所述宽度要至少是512位,并且其中所述最宽算术操作的所述宽度要不大于256位。
示例26包括示例1至13中的任何一个所述的处理器,还包括用于预测分支的可选分支预测单元,以及与所述分支预测单元耦合的可选指令预取单元,所述指令预取单元用于预取指令(包括原子存储到存储器指令)。处理器还可以可选地包括与所述指令预取单元耦合的可选1级(L1)指令高速缓冲存储器,所述L1指令高速缓冲存储器用于存储指令,;可选L1数据高速缓冲存储器以用于存储数据;以及可选2级(L2)高速缓冲存储器以用于存储数据和指令。处理器还可以可选地包括与所述解码单元、所述L1指令高速缓冲存储器和所述L2高速缓冲存储器耦合的指令取单元,以在一些情况下从所述L1指令高速缓冲存储器和所述L2高速缓冲存储器中的一个取所述原子存储到存储器指令,并将所述原子存储到存储器指令提供到所述解码单元。所述处理器还可以可选地包括用于重命名寄存器的寄存器重命名单元,用于调度已从所述原子存储到存储器指令解码的一个或多个操作以用于执行的可选调度器,以及用于提交所述原子存储到存储器指令的执行结果的可选提交单元。
示例27包括片上系统,其包括至少一个互连,与所述至少一个互连耦合的示例1至13中任何一个所述的处理器,与所述至少一个互连耦合的可选图形处理单元(GPU),与所述至少一个互连耦合的可选数字信号处理器(DSP),与所述至少一个互连耦合的可选显示控制器,与所述至少一个互连耦合的可选存储器控制器,与所述至少一个互连耦合的可选无线调制解调器,与所述至少一个互连耦合的可选图像信号处理器,与所述至少一个互连耦合的可选通用串行总线(USB)3.0可兼容控制器,与所述至少一个互连耦合的可选蓝牙4.1兼容控制器,以及与所述至少一个互连耦合的可选无线收发器控制器。
示例28是操作以执行示例14至20中的任何一个所述的方法的处理器或其它设备。
示例29是处理器或其它设备,其包括用于执行示例14至20中的任何一个的所述方法的部件。
示例30是处理器或其它设备,其包括操作以执行示例14至20中的任何一个所述的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。
示例31是可选的非暂时性和/或有形机器可读介质,其可选地存储或以其它方式提供包括第一指令的指令,所述第一指令如果和/或当由处理器、计算机系统、电子装置或其它机器执行时操作以使机器执行示例14至20中的任何一个所述的方法。
示例32是基本上如本文所描述的处理器或其它设备。
示例33是操作以执行基本上如本文所描述的任何方法的处理器或其它设备。
示例34是处理器或其它设备,其操作以执行任何原子存储到存储器指令以原子地存储比利用基本上如本文所描述的处理器原生支持的更宽的数据。
示例35是计算机系统或其它电子装置,其包括具有解码单元的处理器,所述解码单元操作以解码第一指令集的指令。处理器还具有一个或多个执行单元。电子装置还包括与所述处理器耦合的存储装置。存储装置操作以存储第一指令,所述第一指令可以是基本上如本文所公开的任何指令,并且其要具有第二不同指令集。存储装置还操作以存储用于将所述第一指令转换为所述第一指令集的一个或多个指令的指令。当由所述处理器执行时,所述第一指令集的所述一个或多个指令操作以使所述处理器将比处理器的原生支持的更宽的数据原子地存储到存储器。
示例36是一种处理器,包括对应于给定逻辑处理器的解码单元。所述解码单元用于解码原子存储到存储器指令。所述原子存储到存储器指令用于指示数据,以及所述原子存储到存储器指令用于指示与存储器位置关联的存储器地址信息。所述处理器还包括与所述解码单元耦合的执行单元。所述执行单元响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置。要响应于所述原子存储到存储器指令而原子地存储的所述数据的以位计的宽度要比由所述解码器能够解码的任何指令原子地加载的数据的以位计的宽度更宽。
Claims (25)
1.一种处理器,所述处理器包括:
对应于给定逻辑处理器的数据寄存器的最宽集合,所述最宽集合的所述数据寄存器的每个具有以位计的第一宽度;
对应于所述给定逻辑处理器的解码单元,所述解码单元用于解码指定所述最宽集合的所述数据寄存器的指令,以及用于解码原子存储到存储器指令,所述原子存储到存储器指令用于指示要具有比所述最宽集合的所述数据寄存器的每个的所述以位计的第一宽度更宽的以位计的第二宽度的数据,以及所述原子存储到存储器指令用于指示与存储器位置关联的存储器地址信息;以及
与所述解码单元耦合的执行单元,所述执行单元响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置。
2. 如权利要求1所述的处理器,其中所述执行单元包括分级缓冲器,并且其中所述执行单元响应于所述原子存储到存储器指令而要:
把要共同表示总量的所指示的数据的多个部分顺序存储到所述分级缓冲器;以及
在已将所述总量的所指示的数据存储在所述分级缓冲器中之后,同时存储来自所述分级缓冲器的所述总量的所指示的数据。
3.如权利要求2所述的处理器,还包括写组合缓冲器,并且其中所述执行单元响应于所述原子存储到存储器指令,要将所述总量的所指示的数据从所述分级缓冲器同时存储到所述写组合缓冲器。
4.如权利要求3所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后配置所述写组合缓冲器以用于逐出。
5.如权利要求3所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后将所述写组合缓冲器配置成不允许较年轻的存储操作与所述写组合缓冲器合并。
6.如权利要求1所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要当所述原子存储到存储器指令引退时发信号通知以下中的一个:在所述数据要原子地存储在的所述存储器位置的第一字节到最后字节的任何字节上配置的断点,对所述任何字节的段限制违反,对所述任何字节的规范地址形式违反和对所述任何字节的基于范围的违反。
7.如权利要求1所述的处理器,其中,所述执行单元响应于所述原子存储到存储器指令,要使所述数据的所述原子存储不可转发,并且要强制与所述原子地存储的数据关联的存储器类型是无缓存随机组合写(USWC),而不管基础存储器类型。
8.如权利要求1至7中的任何一个所述的处理器,其中所述第一和第二宽度是以下中的一个:
所述第一宽度是128位,以及所述第二宽度是256位;
所述第一宽度是128位,以及所述第二宽度是512位;
所述第一宽度是128位,以及所述第二宽度是1024位;
所述第一宽度是256位,以及所述第二宽度是512位;以及
所述第一宽度是256位,以及所述第二宽度是1024位。
9.如权利要求1至7中的任何一个所述的处理器,其中所述解码单元要解码所述原子存储到存储器指令,所述指令要指示与第二不同存储器位置关联的第二存储器地址信息,响应于所述原子存储到存储器指令要从所述第二不同存储器位置加载所指示的数据。
10.如权利要求1至7中的任何一个所述的处理器,其中,所述解码单元要解码所述原子存储到存储器指令,所述指令要指示初始用于存储所指示的数据的所述最宽集合的多个所述数据寄存器。
11.如权利要求1至7中的任何一个所述的处理器,还包括引退单元,并且其中所述引退单元要等待引退所述原子存储到存储器指令直到接收到响应,其中所述响应要指示所述原子存储已被完全观察并且现在完全一致。
12.如权利要求1至7中的任何一个所述的处理器,其中所述第二宽度比最宽操作的以位计的宽度更宽,所述最宽操作是以下中的一个:所述给定逻辑处理器能够在一个或多个打包数据操作数上执行的算术操作、逻辑操作以及算术和逻辑操作。
13.如权利要求1至7中的任何一个所述的处理器,其中,所述第二宽度比最宽打包数据操作数的以位计的宽度更宽,所述最宽打包数据操作数要由所述解码单元要解码的任何打包数据加法指令以及所述解码单元要解码的任何打包数据乘法指令中的任何一个指示。
14. 一种由处理器执行的方法,所述方法包括:
在所述处理器的给定逻辑处理器处接收原子存储到存储器指令,所述原子存储到存储器指令指示比所述给定逻辑处理器的指令集的指令能够指定的最宽数据寄存器以位计地更宽的数据,并且所述原子存储到存储器指令指示与存储器位置关联的存储器地址信息;以及
响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置。
15.如权利要求14所述的方法,其中所述原子存储包括将具有至少512位宽度的所指示的数据原子地存储到所述存储器位置,并且其中所述最宽数据寄存器的宽度不大于256位。
16. 如权利要求14所述的方法,其中所述原子地存储还包括,响应于所述原子存储到存储器指令:
将共同表示总量的所指示的数据的多个部分顺序存储到分级缓冲器;以及
在已将所述总量的所指示的数据存储在所述分级缓冲器中之后,同时存储来自所述分级缓冲器的所述总量的所指示的数据。
17. 如权利要求16所述的方法,其中所述同时存储包括将所述总量的所指示的数据从所述分级缓冲器同时存储到写组合缓冲器,并且其中所述原子地存储还包括响应于所述原子存储到存储器指令:
在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后,将所述写组合缓冲器配置成不允许较年轻的存储操作与所述写组合缓冲器合并;以及
在已将所指示的数据的所述多个部分存储到所述写组合缓冲器之后,配置所述写组合缓冲器以用于逐出。
18.如权利要求14至17中的任何一个所述的方法,其中所述将所指示的数据原子地存储到所述存储器位置用于将工作指配到加速器装置。
19.如权利要求14至17中的任何一个所述的方法,其中所述接收包括接收所述原子存储到存储器指令,其指示与第二存储器位置关联的存储器地址信息,响应于所述原子存储到存储器指令,从所述第二存储器位置加载所指示的数据。
20.一种计算机系统,包括:
互连;
与所述互连耦合的处理器,所述处理器具有给定的核,所述核具有数据寄存器的最宽集合,所述最宽集合的所述数据寄存器的每个具有以位计的第一宽度,所述给定的核用于接收要指示要具有以位计的第二宽度的数据的原子存储到存储器指令,所述第二宽度比所述最宽集合的所述数据寄存器的每个的所述第一宽度更宽,并且所述原子存储到存储器指令用于指示与存储器位置关联的存储器地址信息,所述处理器响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置;以及
与所述互连耦合的动态随机存取存储器(DRAM),所述DRAM存储指令的集合以使用所述原子存储到存储器指令的不同实例来将工作提交到另一装置。
21. 如权利要求20所述的计算机系统,其中所述处理器包括分级缓冲器和写组合缓冲器,并且其中所述处理器响应于所述原子存储到存储器指令,而要:
把要共同表示总量的所指示的数据的多个部分顺序存储到所述分级缓冲器;以及
在已将所述总量的所指示的数据存储在所述分级缓冲器中之后,将所述总量的所指示的数据从所述分级缓冲器同时存储到另一存储位置和互连中的一个。
22. 一种处理器,包括:
对应于给定逻辑处理器的解码单元,所述解码单元用于解码原子存储到存储器指令,所述原子存储到存储器指令用于指示数据,以及所述原子存储到存储器指令用于指示与存储器位置关联的存储器地址信息;以及
与所述解码单元耦合的执行单元,所述执行单元响应于所述原子存储到存储器指令,将所指示的数据原子地存储到所述存储器位置,其中要响应于所述原子存储到存储器指令而原子存储的所述数据的以位计的宽度要比由所述解码器能够解码的任何指令原子加载的数据的以位计的宽度更宽。
23. 如权利要求22所述的处理器,其中所述执行单元包括分级缓冲器,并且其中所述执行单元响应于所述原子存储到存储器指令,而要:
把要共同表示总量的所指示的数据的多个部分顺序存储到所述分级缓冲器;以及
在已将所述总量的所指示的数据存储在所述分级缓冲器中之后,同时存储来自所述分级缓冲器的所述总量的所指示的数据。
24.一种设备,包括用于执行权利要求14至17中的任何一个的所述方法的部件。
25.一种机器可读介质,所述机器可读介质提供指令,所述指令如果由机器执行,则操作以使所述机器执行权利要求14至17中的任何一个的所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310219076.2A CN116028431A (zh) | 2016-04-02 | 2017-03-03 | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 |
CN202111095699.0A CN114003288A (zh) | 2016-04-02 | 2017-03-03 | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/089,525 US10901940B2 (en) | 2016-04-02 | 2016-04-02 | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US15/089,525 | 2016-04-02 | ||
PCT/US2017/020573 WO2017172255A1 (en) | 2016-04-02 | 2017-03-03 | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310219076.2A Division CN116028431A (zh) | 2016-04-02 | 2017-03-03 | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 |
CN202111095699.0A Division CN114003288A (zh) | 2016-04-02 | 2017-03-03 | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701027A true CN108701027A (zh) | 2018-10-23 |
CN108701027B CN108701027B (zh) | 2024-05-14 |
Family
ID=
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258640A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258642A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258638A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258639A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
US10996960B1 (en) * | 2019-11-22 | 2021-05-04 | Blaize, Inc. | Iterating single instruction, multiple-data (SIMD) instructions |
CN115114190A (zh) * | 2022-07-20 | 2022-09-27 | 上海合见工业软件集团有限公司 | 基于预测逻辑的sram数据读取系统 |
US11593114B1 (en) | 2019-11-22 | 2023-02-28 | Blaize, Inc. | Iterating group sum of multiple accumulate operations |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1244675A (zh) * | 1998-03-31 | 2000-02-16 | 英特尔公司 | 执行部分宽度压缩数据指令 |
US6044448A (en) * | 1997-12-16 | 2000-03-28 | S3 Incorporated | Processor having multiple datapath instances |
US20020087810A1 (en) * | 2000-12-29 | 2002-07-04 | Boatright Bryan D. | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model |
US20050053012A1 (en) * | 2003-09-08 | 2005-03-10 | Moyer William C. | Data processing system having instruction specifiers for SIMD register operands and method thereof |
CN101099130A (zh) * | 2004-12-02 | 2008-01-02 | 英特尔公司 | 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 |
US20140040599A1 (en) * | 2012-08-03 | 2014-02-06 | International Business Machines Corporation | Packed load/store with gather/scatter |
WO2014084905A1 (en) * | 2012-11-30 | 2014-06-05 | Intel Corporation | System, method, and apparatus for improving throughput of consecutive transactional memory regions |
WO2014209747A1 (en) * | 2013-06-28 | 2014-12-31 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
US20150100747A1 (en) * | 2013-10-03 | 2015-04-09 | Cavium, Inc. | Method And Apparatus For Supporting Wide Operations Using Atomic Sequences |
CN105278917A (zh) * | 2014-07-18 | 2016-01-27 | 英特尔公司 | 无局部性提示的向量存储器访问处理器、方法、系统和指令 |
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044448A (en) * | 1997-12-16 | 2000-03-28 | S3 Incorporated | Processor having multiple datapath instances |
CN1244675A (zh) * | 1998-03-31 | 2000-02-16 | 英特尔公司 | 执行部分宽度压缩数据指令 |
US20020087810A1 (en) * | 2000-12-29 | 2002-07-04 | Boatright Bryan D. | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model |
US20050053012A1 (en) * | 2003-09-08 | 2005-03-10 | Moyer William C. | Data processing system having instruction specifiers for SIMD register operands and method thereof |
CN101099130A (zh) * | 2004-12-02 | 2008-01-02 | 英特尔公司 | 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 |
US20140040599A1 (en) * | 2012-08-03 | 2014-02-06 | International Business Machines Corporation | Packed load/store with gather/scatter |
WO2014084905A1 (en) * | 2012-11-30 | 2014-06-05 | Intel Corporation | System, method, and apparatus for improving throughput of consecutive transactional memory regions |
WO2014209747A1 (en) * | 2013-06-28 | 2014-12-31 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
CN105453030A (zh) * | 2013-06-28 | 2016-03-30 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
US20150100747A1 (en) * | 2013-10-03 | 2015-04-09 | Cavium, Inc. | Method And Apparatus For Supporting Wide Operations Using Atomic Sequences |
CN105278917A (zh) * | 2014-07-18 | 2016-01-27 | 英特尔公司 | 无局部性提示的向量存储器访问处理器、方法、系统和指令 |
Non-Patent Citations (1)
Title |
---|
黄旺华;李振坤;刘怡俊;黄静怡;: "基于FPGA流水线RISC微处理器的设计", 微计算机信息, no. 14, 15 May 2008 (2008-05-15) * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258640A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258642A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258638A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258639A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258642B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258639B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258640B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
US10996960B1 (en) * | 2019-11-22 | 2021-05-04 | Blaize, Inc. | Iterating single instruction, multiple-data (SIMD) instructions |
US11593114B1 (en) | 2019-11-22 | 2023-02-28 | Blaize, Inc. | Iterating group sum of multiple accumulate operations |
CN115114190A (zh) * | 2022-07-20 | 2022-09-27 | 上海合见工业软件集团有限公司 | 基于预测逻辑的sram数据读取系统 |
Also Published As
Publication number | Publication date |
---|---|
US20170286113A1 (en) | 2017-10-05 |
US20220405234A1 (en) | 2022-12-22 |
US10901940B2 (en) | 2021-01-26 |
TW201741871A (zh) | 2017-12-01 |
CN114003288A (zh) | 2022-02-01 |
CN116028431A (zh) | 2023-04-28 |
US11347680B2 (en) | 2022-05-31 |
WO2017172255A1 (en) | 2017-10-05 |
US20210117372A1 (en) | 2021-04-22 |
DE112017001825T5 (de) | 2018-12-27 |
TW202314486A (zh) | 2023-04-01 |
TWI770009B (zh) | 2022-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050026B (zh) | 使对共享存储器存取的同步松弛的处理器、方法及系统 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
CN107408036A (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
CN104049953B (zh) | 用于合并操作掩码的未经掩码元素的装置、方法、系统和制品 | |
CN110018850A (zh) | 用于可配置空间加速器中的多播的设备、方法和系统 | |
CN104077107B (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN104050012B (zh) | 指令模拟处理器、方法和系统 | |
CN105247477B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
CN105453041B (zh) | 用于高速缓存占据确定和指令调度的方法和装置 | |
CN104049948B (zh) | 指令仿真处理器、方法和系统 | |
CN109597646A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
CN109313556A (zh) | 可中断和可重启矩阵乘法指令、处理器、方法和系统 | |
CN104025027B (zh) | 结构访问处理器、方法、系统和指令 | |
CN114003288A (zh) | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN105453030B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN106293626A (zh) | 持久性提交处理器、方法、系统和指令 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN105745630B (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
CN106648554A (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
CN105247479B (zh) | 指令次序实施指令对、处理器、方法和系统 | |
CN108369513A (zh) | 用于加载-索引-和-收集操作的指令和逻辑 | |
CN104937568B (zh) | 用于多页尺寸转换后备缓冲器(tlb)的装置和方法 |
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 |