CN111752616A - 用于符号存储地址生成的系统、装置和方法 - Google Patents
用于符号存储地址生成的系统、装置和方法 Download PDFInfo
- Publication number
- CN111752616A CN111752616A CN202010116698.9A CN202010116698A CN111752616A CN 111752616 A CN111752616 A CN 111752616A CN 202010116698 A CN202010116698 A CN 202010116698A CN 111752616 A CN111752616 A CN 111752616A
- Authority
- CN
- China
- Prior art keywords
- store
- instruction
- address
- load
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000003860 storage Methods 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 13
- 238000006073 displacement reaction Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 31
- 239000000306 component Substances 0.000 description 12
- 238000007667 floating Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 230000014616 translation Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 229910003460 diamond Inorganic materials 0.000 description 4
- 239000010432 diamond Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 102000043138 IRF family Human genes 0.000 description 1
- 108091054729 IRF family Proteins 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000000116 mitigating effect Effects 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3555—Indexed addressing using scaling, e.g. multiplication of index
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本公开涉及用于符号存储地址生成的系统、装置和方法。在一个实施例中,一种装置包括:多个执行通道,用于进行指令的并行执行;以及耦合到该多个执行通道的统一符号存储地址缓冲器,该统一符号存储地址缓冲器包括多个条目,每个条目为要被多个执行通道中的至少一些执行通道执行的存储指令存储符号存储地址。描述和要求保护了其他实施例。
Description
技术领域
实施例涉及用于处理存储操作的处理器体系结构。
背景技术
数据并行单程序多数据(single program multiple data,SPMD)处理器将许多执行通道作为一个群组来进行协调以分摊控制逻辑和状态以获得密度和能量效率。在非阻塞(存储上)处理器微体系结构中,存储被分解成两个操作:(1)存储地址计算操作(storeaddress calculation operation,STA),其从逻辑上实施相对于其他加载和存储的程序顺序(为了自我一致性);以及(2)资深存储数据操作(senior store data operation,STD),其发生在指令引退时以将数据存储到存储器中。然而,此方案要求在STA调遣时的每通道存储地址生成。此存储地址随后被存储在每通道存储地址缓冲器中以被后续加载利用每通道内容可寻址存储器逻辑来检查以查找存储器排序冲突,这会操作到STD操作调遣并完成许多周期之后为止。这样,对于这种处理器存在相当大的芯片占地和功率消耗花费。
发明内容
根据本公开的实施例,提供了一种用于存储符号存储地址的装置,包括:多个执行通道,用于进行指令的并行执行;以及耦合到所述多个执行通道的统一符号存储地址缓冲器,所述统一符号存储地址缓冲器包括多个条目,每个条目为要被所述多个执行通道中的至少一些直行通道执行的存储指令存储符号存储地址。
根据本公开的实施例,提供了一种用于处理符号地址的方法,该方法包括:在处理器的调度器中接收单程序多数据(SPMD)存储指令;为所述SPMD存储指令生成符号地址;在统一符号存储地址缓冲器的条目中为所述SPMD存储指令存储所述符号地址;将所述SPMD存储指令调遣到所述处理器的多个执行通道;并且至少部分地基于利用加载指令的符号地址对所述统一符号存储地址缓冲器的访问,来将所述加载指令投机性地调遣到所述多个执行通道,所述加载指令在程序顺序上在所述SPMD存储指令之后。
根据本公开的实施例,提供了一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令当被执行时用于实现如下方法,该方法包括:在处理器的调度器中接收单程序多数据(SPMD)存储指令;为所述SPMD存储指令生成符号地址;在统一符号存储地址缓冲器的条目中为所述SPMD存储指令存储所述符号地址;将所述SPMD存储指令调遣到所述处理器的多个执行通道;并且至少部分地基于利用加载指令的符号地址对所述统一符号存储地址缓冲器的访问,来将所述加载指令投机性地调遣到所述多个执行通道,所述加载指令在程序顺序上在所述SPMD存储指令之后。
根据本公开的实施例,提供了一种用于处理符号存储地址的系统,包括:处理器,包括:包括多个核心的主机处理器,其中第一核心用于执行第一线程;以及耦合到所述主机处理器的数据并行集群,所述数据并行集群包括:多个执行通道,用于进行与所述第一线程相关的第二线程的指令的并行执行;调度器,用于在要被所述多个执行通道执行的存储指令的存储地址调遣时并且在由所述多个执行通道的每一者为所述存储指令计算通道存储地址之前,基于所述存储指令的地址为所述存储指令生成符号存储地址;以及耦合到所述多个执行通道的统一符号存储地址缓冲器,用于存储所述符号存储地址;以及耦合到所述处理器的系统存储器。
根据本公开的实施例,提供了一种用于存储符号存储地址的装置,包括:多个执行通道装置,用于对指令进行并行执行;以及耦合到所述多个执行通道装置的统一符号存储地址缓冲器装置,所述统一符号存储地址缓冲器装置包括多个条目,每个条目为要被所述多个执行通道装置中的至少一些执行通道装置执行的存储指令存储符号存储地址。
附图说明
图1A是根据本发明的实施例图示出示范性有序管线和示范性寄存器重命名、无序发出/执行管线两者的框图。
图1B是根据本发明的实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、无序发出/执行体系结构核心两者的框图。
图2A-2B根据本发明的实施例图示出更具体的示范性有序核心体系结构的框图。
图3是根据本发明的实施例的可具有多于一个核心、可具有集成的存储器控制器并且可具有集成的图形的处理器的框图。
图4是根据本发明的一个实施例的系统的框图。
图5是根据本发明的实施例的第一更具体示范性系统的框图。
图6是根据本发明的实施例的第二更具体示范性系统的框图。
图7是根据本发明的实施例的SoC的框图。
图8是根据本发明的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令对比的框图。
图9是根据本发明的实施例图示出数据并行集群(DPC)的一个示例的框图。
图10A-10C是根据本发明的实施例的以多种方式集成在计算机系统中的数据并行集群的框图。
图11根据本发明的实施例图示了微线程状态的一个示例。
图12是根据本发明的实施例的共位成更大的缩放单元的多个数据并行集群的框图。
图13是根据一实施例的处理器的一部分的框图;
图14是根据本发明的一个实施例的方法的流程图。
图15是根据本发明的另一实施例的方法的流程图。
图16是根据本发明的又一实施例的方法的流程图。
具体实施方式
在各种实施例中,具有单程序多数据体系结构的处理器可被配置为为存储操作生成符号地址,这些存储操作利用对单个统一符号存储地址缓冲器的使用来存储关于这些存储操作的信息,以减小面积和功率消耗成本。此外,利用这里的实施例,提供了技术来使得能够对在程序顺序上在这种存储指令之后的加载指令(在本文中称为更年轻指令)进行更迅速调遣。这样,实施例以改善时延并且减小功率消耗的方式实现了对加载指令的投机性调遣和执行。
在特定的实现方式中,提供了一种处理器体系结构,其包括被配置为在个体指令上操作的各种前端电路和包括执行单元的多个执行通道,其中每个执行单元被配置为以每通道的方式为这些指令执行操作。注意在本文中,可互换使用术语“操作”和“指令”。此外,虽然在存储指令(以及从属的加载指令)的情境中描述了利用符号地址生成来处理存储操作的特定技术,但要理解在至少某些体系结构中,用户级存储和加载指令可被解码成一个或多个微指令(uop),这些微指令是在执行单元中实际执行的机器级指令。为了易于概括,可互换使用术语“操作”、“指令”和“uop”。
利用SPMD处理器,在多个执行通道间实现对同一程序的执行,其中在单程序多数据模型中在通道间调遣同一指令。在一实现方式中,可提供多个指令队列,其中存储器指令被存储在第一指令队列中,并且基于运算的指令(在本文中称为ALU指令)被存储在第二指令队列中。存储器指令最初被从这些指令队列按序调遣到并行执行管线。
在存储指令的存储地址调遣(STA)时,单个符号地址被生成并被放置在统一符号存储地址缓冲器中,这避免了每通道存储地址缓冲器(store address buffer,SAB)存储并且避免了每通道SAB内容可寻址存储器(content addressable memory,CAM)逻辑。未来的加载指令(即在程序顺序上在此存储指令之后的加载指令)基于为加载指令生成的符号加载地址符号性地访问这个符号存储地址缓冲器(而不是跨通道的多个SAB),以投机性地(但具有高置信度)同时为所有通道检测自我一致(通道内)存储器排序违反。就此而言,这些未来的加载指令在调遣的这个时点不需要执行存储地址的按执行通道检查,这降低了复杂度、芯片面积和功率消耗。
在存储指令引退时的存储数据调遣(STD)时,计算每通道存储地址。利用这个每通道生成的存储地址,可对由更年轻加载填充的每通道存储器排序队列(memory orderingqueue,MOQ)进行访问以检测任何误投机的更年轻加载。当识别出这种误投机的更年轻加载时,执行各种操作(例如,包括对于给定执行通道的管线的某些冲刷操作)。然后,存储指令的存储数据被提交到存储器系统。注意,此STD操作的数据的实际存储可经由急切调遣机制发生,其中存储地址可被存储在临时缓冲器中,例如存储数据缓冲器。或者数据的存储可在引退时发生以避免此额外缓冲器存储的花费。
利用实施例,可实现有成本效益的非阻挡存储操作,以通过减小加载的暴露缓存时延并且减小通道的面积(没有每通道的SAB或者每通道的SAB CAM逻辑)并且降低功率消耗来增大存储器级并行性(memory-level parallelism,MLP)。此外,实施例减少调度逻辑关键路径(例如,没有通道间的SAB CAM比较的聚集)。并且,通过消除每通道SAB状态,可提供额外的通道线程情境存储以隐藏诸如缓存未命中之类的其他时延。在实施例中,存储的面积和能量成本被分摊以实现几乎恒定的面积和恒定的能量,而被共同调度的通道的数目不变,直到资深存储准备好引退并且被调遣到缓存子系统的时点为止。
在一实施例中,SPMD处理器体系结构包括多个执行通道,其中每个执行通道执行相同程序。在此布置中,前端调度器在单程序多数据模型中在通道间共同调遣同一指令。存储器指令最初被按序调遣。
在一实施例中,当存储指令要被调遣到多个执行通道时,符号存储地址在调度逻辑中被生成并且在存储地址调遣(STA)时被存储在统一符号存储地址缓冲器中。注意,对于一实现方式,STA调遣不要求源地址寄存器操作元值准备就绪,因为它们只在STD调遣时在计算个体通道地址时是必需的。
现在参考表格1,例示了一种可能的符号存储地址形成的示例,其在生成时可被存储在统一符号存储地址缓冲器条目中。如表格1中所示,只有47个比特被用于符号地址。注意,符号地址的生成可通过多个信息字段的串接来实现,这些字段中的至少一些可从给定的加载或存储指令的地址字段部分获得。更具体而言,在一个实施例中,根据表格1,可根据以下的符号表示来生成符号地址:符号地址=基址寄存器+变址寄存器*比例因子+位移,其中操作符是串接操作符。换句话说,符号地址生成产生由这些构成字段形成的比特向量。这个得到的值从而对应于要访问的数据的开始地址,其中要访问的数据具有根据操作元大小的宽度(其中操作元大小可以是一字节、两字节、四字节或八字节宽)。
表格1
字段名称 | 大小(比特) |
位移 | 32+1有效 |
基址寄存器 | 4+1有效 |
变址寄存器 | 4+1有效 |
比例因子 | 2 |
操作元大小 | 2 |
这个47比特的最低限度存储与没有实施例的在每通道缓冲器中存储非符号条目的要求形成对比。假设64比特虚拟地址,则具有实施例的这个替代布置将要求32通道x 64比特虚拟地址=2048比特的SAB存储。
注意,符号存储地址条目可不支持所有寻址模式。在此情况下,使用不由所选择的符号方案表示的寻址模式的存储指令因此被认为是阻塞存储,其延缓来自该线程的更年轻加载发出,直到其源地址操作元和源数据操作元两者都准备就绪、指令准备好引退并且存储是资深的为止。
在将存储指令分配到执行通道并且将符号存储地址包括到统一符号存储地址缓冲器中之后,更年轻加载指令可被投机性地调遣,以减小时延。在更年轻加载指令调遣时,符号加载地址可被生成并被用于访问符号存储地址缓冲器以投机性地查找更老旧的进行中(in-flight)冲突存储。如果检测到冲突,则抑制加载指令,直到冲突的存储指令已完成为止。否则,如果没有检测到冲突,则将加载指令投机性地调遣到执行通道。在执行通道中,每个通道进行操作以计算每通道加载地址并且从存储器系统执行加载操作。此外,加载地址被写入到每通道存储器排序队列(MOQ)中。注意此加载地址是非符号计算地址,而不是符号地址。
在引退时的存储数据调遣(STD)处,存储指令于是在每个通道计算其地址,访问由更年轻加载填充的每个通道的MOQ(例如,经由CAM操作)以检测任何误投机的更年轻加载,然后将数据提交到存储器系统。
在一实施例中,地址之间的符号比较可由形成符号地址缓冲器条目的比特的逻辑串接作为CAM操作来执行。这个比较将只为具有共同的基址/变址寄存器、使用相同的寻址方案的共同大小的操作识别贯穿存储器的真实依从性的子集。有可能不会识别其他真实依从性并且在资深存储调遣时引起误投机管线清除。然而,注意这些误投机事件在数据并行内核中是不常见的(一部分是由于有限的投机)。另外,由于虚假符号别名引起的延缓是不频繁的,因为短指令计数环(其中虚假别名可以是一个问题)被展开来作为累加器利用寄存器地址空间,等等。注意实施例可控制操作在某些情况下(例如,动态地)不使能投机性加载操作。例如,对于基于栈指针的存储器操作可防止投机性加载指令调遣。在这个保守流程中,在程序顺序上在栈指针修改指令(其将复杂化或否定符号消歧(disambiguation))之后发生的加载不被投机性调遣。
在一些实施例中,更全面的符号地址CAM比较技术(导致更少的误投机)可跟踪体系结构寄存器之间的符号仿射关系,解读操作元大小字段以比较不同大小和/或对齐的操作,解读比例因子字段,等等。由于这个CAM只被实例化一次而不是每通道一次(例如,在示例体系结构中有32个通道),所以对于这种复杂比较存在大量的面积/功率预算,然而仍保留了基线符号存储地址缓冲器的大部分节省。
实施例还可减轻对抗性代码中的误投机。例如,在其中更年轻加载与更老旧存储的符号比较以高比率误投机并从而伤害性能的数据并行内核中,加载投机机制可被自动临时禁用,直到内核退出、区域退出事件、时间密度等等为止。为此,实施例可利用例如来自处理器的一个或多个性能监视单元的性能监视信息,其中这些性能监视单元跟踪多种性能监视信息,包括关于若干个误投机事件、冲刷等等的信息。选择性减轻方案也可被用于通过对于存储或加载指令IP使用诸如布隆过滤器之类的机制和/或通过在前端解码uop流缓冲器中标记当前循环中不应当投机的那些加载指令,来仅对于犯规的指令地址禁用加载投机。
图1A是根据本发明的实施例图示出示范性有序管线和示范性寄存器重命名、无序发出/执行管线两者的框图。图1B是根据本发明的实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、无序发出/执行体系结构核心两者的框图。图1A-1B中的实线框图示了有序管线和有序核心,而虚线框的可选添加图示了寄存器重命名、无序发出/执行管线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图1A中,处理器管线100包括取指(fetch)阶段102、长度解码阶段104、解码阶段106、分配阶段108、重命名阶段110、调度(也称为调遣或发出)阶段112、寄存器读取/存储器读取阶段114、执行阶段116、写回/存储器写入阶段118、异常处理阶段122和提交阶段124。
图1B示出了处理器核心190包括耦合到执行引擎单元150的前端单元130,并且两者都耦合到存储器单元170。核心190可以是精简指令集计算(reduced instruction setcomputing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心或者混合或替换核心类型。作为另外一个选项,核心190可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元130包括分支预测单元132,其耦合到指令缓存单元134,指令缓存单元134耦合到指令转化后备缓冲器(instruction translation lookaside buffer,TLB)136,该TLB 136耦合到指令取得单元138,该指令取得单元138耦合到解码单元140。解码单元140(或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码单元140可利用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一个实施例中,核心190包括微代码ROM或其他介质,其为某些宏指令存储微代码(例如,在解码单元140中或者以其他方式在前端单元130内)。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括耦合到引退单元154和一组一个或多个调度器单元156的重命名/分配器单元152。(一个或多个)调度器单元156表示任何数目的不同调度器,包括保留站、中央指令窗口等等。(一个或多个)调度器单元156耦合到(一个或多个)物理寄存器文件单元158。物理寄存器文件单元158的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,物理寄存器文件单元158包括向量寄存器单元和标量寄存器单元。这些寄存器单元可提供体系结构式向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器文件单元158与引退单元154重叠以例示出可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器文件;利用寄存器地图和寄存器的池;等等)。引退单元154和(一个或多个)物理寄存器文件单元158耦合到(一个或多个)执行集群160。(一个或多个)执行集群160包括一组一个或多个执行单元162和一组一个或多个存储器访问单元164。执行单元162可在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元或者全都执行所有功能的多个执行单元。(一个或多个)调度器单元156、(一个或多个)物理寄存器文件单元158和(一个或多个)执行集群160被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群–并且在单独的存储器访问管线的情况下,实现了某些实施例,其中只有此管线的执行集群具有(一个或多个)存储器访问单元164)。还应当理解,在使用单独管线的情况下,这些管线中的一个或多个可以是无序发出/执行,其余的是有序的。
存储器访问单元164的集合耦合到存储器单元170,存储器单元170包括数据TLB单元172,数据TLB单元172耦合到数据缓存单元174,数据缓存单元174耦合到第2级(L2)缓存单元176。在一个示范性实施例中,存储器访问单元164可包括加载单元、存储地址单元和存储数据单元,其中每一者耦合到存储器单元170中的数据TLB单元172。指令缓存单元134进一步耦合到存储器单元170中的第2级(L2)缓存单元176。L2缓存单元176耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
作为示例,示范性寄存器重命名、无序发出/执行核心体系结构可实现管线100如下:1)指令取得138执行取指和长度解码阶段102和104;2)解码单元140执行解码阶段106;3)重命名/分配器单元152执行分配阶段108和重命名阶段110;4)(一个或多个)调度器单元156执行调度阶段112;5)(一个或多个)物理寄存器文件单元158和存储器单元170执行寄存器读取/存储器读取阶段114;执行集群160执行执行阶段116;6)存储器单元170和(一个或多个)物理寄存器文件单元158执行写回/存储器写入阶段118;7)在异常处理阶段122中可涉及各种单元;并且8)引退单元154和(一个或多个)物理寄存器文件单元158执行提交阶段124。
核心190可支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);加州森尼维耳市的MIPS技术公司的MIPS指令集;加州森尼维耳市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一个实施例中,核心190包括逻辑来支持紧缩数据指令集扩展(例如,AVX1、AVX2),从而允许了被许多多媒体应用使用的操作被利用紧缩数据来执行。
应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按多种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者其组合(例如,时间切片式取指和解码,然后是同时多线程处理,例如像Hyperthreading技术中那样)。
虽然寄存器重命名是在无序执行的情境中描述的,但应当理解寄存器重命名可用于有序体系结构中。虽然处理器的图示实施例还包括单独的指令和数据缓存单元134/174和共享的L2缓存单元176,但替换实施例可对于指令和数据两者具有单个内部缓存,例如第1级(L1)内部缓存,或者多级别的内部缓存。在一些实施例中,系统可包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存都可在核心和/或处理器外部。
图2A-2B图示出更具体的示范性有序核心体系结构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑通信,这取决于应用。
图2A是根据本发明的实施例的单个处理器核心及其与片上互连网络202以及与第2级(L2)缓存的其本地子集204的连接的框图。在一个实施例中,指令解码器200支持具有紧缩数据指令集扩展的x86指令集。L1缓存206允许低时延访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元208和向量单元210使用分开的寄存器集合(分别是标量寄存器212和向量寄存器214)并且在它们之间传送的数据被写入到存储器,然后被从第1级(L1)缓存206读回,但本发明的替换实施例可使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。
L2缓存的本地子集204是全局L2缓存的一部分,全局L2缓存被划分成单独的本地子集,每个处理器核心有一个。每个处理器核心具有到其自己的L2缓存的本地子集204的直接访问路径。处理器核心读取的数据被存储在其L2缓存子集204中并且可被迅速访问,与其他处理器核心访问其自己的本地L2缓存子集并行。处理器核心写入的数据被存储在其自己的L2缓存子集204中并且在必要时被从其他子集冲出。环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理器核心、L2缓存和其他逻辑块之类的代理在芯片内与彼此通信。在一些实施例中每个环状数据路径在每个方向上是1024比特宽的。
图2B是根据本发明的实施例的图2A中的处理器核心的一部分的扩展视图。图2B包括L1缓存204的L1数据缓存206A部分,以及关于向量单元210和向量寄存器214的更多细节。具体而言,向量单元210是6宽向量处理单元(vector processing unit,VPU)(参见16宽ALU228),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用调配单元220调配寄存器输入,利用数值转换单元222A-B进行的数值转换,以及利用复制单元224对存储器输入的复制。
图3是根据本发明的实施例的可具有多于一个核心、可具有集成的存储器控制器并且可具有集成的图形的处理器300的框图。图3中的实线框图示了具有单个核心302A、系统代理310和一组一个或多个总线控制器单元316的处理器300,而虚线框的可选添加图示了具有多个核心302A-N、系统代理单元310中的一组一个或多个集成存储器控制单元314和专用逻辑308的替换处理器600。
从而,处理器300的不同实现方式可包括:1)其中专用逻辑308是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心)并且核心302A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心或者两者的组合)的CPU;2)其中核心302A-N是主要打算用于图形和/或科学(吞吐量)的大量的专用核心的协处理器;以及3)其中核心302A-N是大量的通用有序核心的协处理器。从而,处理器300可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30或更多个核心)、嵌入式处理器,等等。处理器可实现在一个或多个芯片上。处理器300可以是一个或多个基片的一部分和/或利用若干个工艺技术中的任何一者实现在一个或多个基片上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系可包括核心304A-N内的一级或多级缓存、一组或一个或多个共享缓存单元306以及耦合到该组集成存储器控制器单元314的外部存储器(未示出)。该组共享缓存单元306可包括一个或多个中间级别缓存,例如第2级(L2)、第3级(L3)、第4级(4)或其他级别的缓存,最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一个实施例中基于环的互连单元312互连专用逻辑308、该组共享缓存单元306和系统代理单元310/(一个或多个)集成存储器控制器单元314,但替换实施例也可使用任何数目的公知技术来互连这种单元。在一个实施例中,在一个或多个缓存单元306和核心302A-N之间维持一致性。
在一些实施例中,核心302A-N中的一个或多个能够进行多线程处理。系统代理310包括协调和操作核心302A-N的那些组件。系统代理单元310可包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是或者可以包括调控核心302A-N和专用逻辑308的功率状态所需要的逻辑和组件。
核心302A-N就体系结构指令集而言可以是同构的或者异构的;也就是说,核心302A-N中的两个或更多个可能够执行同一指令集,而其他的可只能够执行该指令集的子集或者不同的指令集。
图4-图7是示范性计算机体系结构的框图。本领域中已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的许多种系统或电子设备一般是适当的。
现在参考图4,其中示出了根据本发明的一个实施例的系统400的框图。系统400包括一个或多个处理器410、415,它们耦合到控制器中心420。在一个实施例中,控制器中心420包括图形存储器控制器中心(graphics memory controller hub,GMCH)490和输入/输出中心(Input/Output Hub,IOH)450(它们可在分开的芯片上);GMCH 490包括与存储器440和协处理器445耦合的存储器和图形控制器;IOH 450将输入/输出(I/O)设备460耦合到GMCH 490。或者,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器440和协处理器445直接耦合到处理器410,并且控制器中心420与IOH 450在单个芯片中。
额外的处理器415的可选性在图4中用虚线表示。每个处理器410、415可包括本文描述的处理核心中的一个或多个并且可以是处理器300的某个版本。
存储器440可例如是动态随机访问存储器(dynamic random access memory,DRAM)、相变存储器(phase change memory,PCM)或者两者的组合。对于至少一个实施例,控制器中心420经由多点分支总线(例如前端总线(frontside bus,FSB))、点到点接口或者类似的连接495与(一个或多个)410、415通信。
在一个实施例中,协处理器445是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中心420可包括集成的图形加速器。
在物理资源410、415之间,就包括体系结构特性、微体系结构特性、热特性、功率消耗特性等等在内的价值度量的范围而言可以有多种差异。
在一个实施例中,处理器410执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器410将这些协处理器指令识别为应当由附接的协处理器445执行的类型。因此,处理器410在协处理器总线或其他互连上向协处理器445发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器445接受和执行接收到的协处理器指令。
现在参考图5,其中示出了根据本发明的实施例的第一更具体示范性系统500的框图。如图5中所示,多处理器系统500是点到点互连系统,并且包括经由点到点互连550耦合的第一处理器570和第二处理器580。处理器570和580的每一者可以是处理器300的某个版本。在本发明的一个实施例中,处理器570和580分别是处理器410和415,而协处理器538是协处理器445。在另一实施例中,处理器570和580分别是处理器410和协处理器445。
处理器570和580被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元572和582。处理器570还包括点到点(P-P)接口576和578作为其总线控制器单元的一部分;类似地,第二处理器580包括P-P接口586和588。处理器570、580可利用P-P接口电路578、588经由点到点(P-P)接口550交换信息。如图5中所示,IMC 572和582将处理器耦合到各自的存储器,即存储器532和存储器534,存储器532和存储器534可以是在本地附接到各个处理器的主存储器的一部分。
处理器570、580可各自利用点到点接口电路576、594、586、598经由个体P-P接口552、554与芯片集590交换信息。芯片集590可以可选地经由高性能接口592与协处理器538交换信息。在一个实施例中,协处理器538是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。
芯片集590可经由接口596耦合到第一总线516。在一个实施例中,第一总线516可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种I/O互连总线之类的总线,虽然本发明的范围不限于此。
如图5中所示,各种I/O设备514可耦合到第一总线516,以及将第一总线516耦合到第二总线520的总线桥518。在一个实施例中,一个或多个额外的处理器515,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器,耦合到第一总线516。在一个实施例中,第二总线520可以是低引脚数(low pin count,LPC)总线。各种设备可耦合到第二总线520,例如包括键盘和/或鼠标522、通信设备527和存储单元528,例如盘驱动器或者其他大容量存储设备,它们在一个实施例中可包括指令/代码和数据530。另外,音频I/O 524可耦合到第二总线516。注意其他体系结构是可能的。例如,取代图5的点到点体系结构,系统可实现多点分支总线或者其他这种体系结构。
现在参考图6,其中示出了根据本发明的实施例的第二更具体示范性系统600的框图。图5和图6中的相似元素带有相似的标号,并且图5的某些方面被从图6中省略以避免模糊图6的其他方面。
图6图示出处理器570、580可分别包括集成存储器和I/O控制逻辑(“CL”)672和682。从而,CL 672、682包括集成存储器控制器单元并且包括I/O控制逻辑。图6图示出不仅存储器532、534耦合到CL572、582,而且I/O设备614也耦合到控制逻辑572、582。传统I/O设备615耦合到芯片集590。
现在参考图7,其中示出了根据本发明的实施例的SoC 700的框图。图3中的相似元素带有相似的标号。另外,虚线框是更高级SoC上的可选特征。在图7中,(一个或多个)互连单元702耦合到:应用处理器710,其包括一组一个或多个核心302A-N、缓存单元304A-N以及(一个或多个)共享缓存单元306;系统代理单元310;(一个或多个)总线控制器单元316;(一个或多个)集成存储器控制器单元314;一组或一个或多个协处理器720,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机访问存储器(static randomaccess memory,SRAM)单元730;直接存储器访问(direct memory access,DMA)单元732;以及显示单元740,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器720包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
本文公开的机制的实施例可以用硬件、软件、固件或者这种实现方案的组合来实现。本发明的实施例可实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码,例如图5中所示的代码530,可被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可按已知的方式被应用到一个或多个输出设备。对于本申请而言,处理系统包括任何具有处理器的系统,例如数字信号处理器(DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)或者微处理器。
程序代码可以用高级过程式或面向对象的编程语言来实现以与处理系统通信。如果希望的话,程序代码也可以用汇编或机器语言来实现。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者解译的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令实现,该逻辑当被机器读取时使得该机器制造逻辑来执行本文描述的技术。这种被称为“IP核”的表示可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制造机器中。
这种机器可读存储介质可包括但不限于由机器或设备制造或形成的物品的非暂态有形布置,包括存储介质,例如硬盘,任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compact diskrewritable,CD-RW)和磁光盘,半导体设备,例如只读存储器(read-only memory,ROM),随机访问存储器(random access memory,RAM),例如动态随机访问存储器(dynamic randomaccess memory,DRAM),静态随机访问存储器(static random access memory,SRAM),可擦除可编程只读存储器(erasable programmable read-only memory,EEPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM),相变存储器(phase change memory,PCM),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
相应地,本发明的实施例还包括非暂态有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或以其他方式转换到要被核心处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件或者其组合来实现。指令转换器可以在处理器上、在处理器外或者一部分在处理器上一部分在处理器外。
图8是根据本发明的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令对比的框图。在图示的实施例中,指令转换器是软件指令转换器,虽然可替换地,指令转换器可以用软件、固件、硬件或者其各种组合来实现。图8示出了高级别语言802的程序可被利用第一编译器804来编译以生成第一二进制代码(例如,x86)806,第一二进制代码806可由具有至少一个第一指令集核心816的处理器原生执行。在一些实施例中,具有至少一个第一指令集核心816的处理器表示任何这样的处理器:这种处理器可通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分或者(2)针对在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的处理器基本上相同的结果。第一编译器804表示可操作来生成第一指令集的二进制代码806(例如,目标代码)的编译器,第一指令集的二进制代码806在带有或不带有额外的链接处理的情况下可被在具有至少一个第一指令集核心的处理器816上执行。类似地,图8示出了高级别语言802的程序可被利用替换指令集编译器808来编译以生成替换指令集二进制代码810,替换指令集二进制代码810可由没有至少一个第一指令集核心的处理器814(例如,具有执行加州森尼维耳市的MIPS技术公司的MIPS指令集和/或执行加州森尼维耳市的ARM控股公司的ARM指令集的核心的处理器)原生执行。指令转换器812用于将第一二进制代码806转换成可由没有第一指令集核心的处理器814原生执行的代码。这个转换后的代码不太可能与替换指令集二进制代码810相同,因为能够做到这一点的指令转换器是难以制作的;然而,转换后的代码将实现一般操作并且由来自替换指令集的指令构成。从而,指令转换器812表示通过仿真、模拟或任何其他过程允许不具有第一指令集处理器或核心的处理器或其他电子设备执行第一二进制代码806的软件、固件、硬件或者其组合。
用于加速数据并行工作量的指令集体系结构(Instruction set architecture,ISA)扩展要求编码在机器表示中的显式向量字长度。本发明的一个实施例利用标量微线程式指令处理体系结构来扩展现有ISA(例如,x86 ISA)。具体地,数据并行单程序多数据(SPMD)微体系结构可被用于提供超出现有指令的限制的可缩放执行数据路径大小,从而以降低的能量消耗实现更大的指令执行吞吐量。
当前的CPU体系结构使用了多世代的子字单指令多数据(single instructionmultiple data,SIMD)扩展来用于加速数据并行操作(例如,包括SSE2、SSE4、AVX和x86体系结构中的AVX-512)。每个相继的世代扩展CPU的状态和指令集,这产生了遗留性能优势问题并且要求旧代码的重编译。
图形处理单元(GPU)通过利用硬件发散堆栈处理发散的控制流情况来实现了SPMD体系结构。硬件发散堆栈是经由由终结器代理为现有GPU静态实现的显式指令和/或控制代码来操纵的。
本发明的一个实施例包括一种SPMD数据并行执行引擎,其使用标量微线程抽象,类似于对不具有架构的发散指令或控制代码的标量处理器的阵列进行编程。如下所述,这些实施例尤其适合于在包括预定的应用二进制接口(Application Binary Interface,ABI)的现有ISA中实现。
图9图示了数据并行集群(data parallel cluster,DPC)900的一个示例,其可被集成在处理器的微体系结构内和/或可被用作加速引擎来执行指令/uop 914的特定集合。在一个实施例中,前端电路907包括群组调度器901,用来调度诸如通道910之类的多个标量通道内的标量微线程的群组执行。数据并行集群900中的标量通道的数目可被改变,而不影响软件。在图示的实现方式中,示出了16个通道;然而,取决于实现方式,可使用任何数目的通道。在一个实施例中,可使用32个通道。
在一个实施例中,群组调度器901在多个活跃通道上调度同一指令。微体系结构掩码913(例如,从掩码寄存器读取)禁用不要求活跃的那些通道。在一个实施例中,群组调度器901读取掩码值以确定哪些通道对于哪些指令/uop要活跃。
在一个实施例中,前端907内的指令解码队列(instruction decode queue,IDQ)905存储按程序顺序被添加到IDQ的解码宏指令的微操作(uop)(例如,在FIFO实现方式中)。如前所述,IDQ 905可为多个操作群组划分。
下面描述了用于将DPC 900耦合到主机处理器的各种布置。在指令被主机处理器解码的实现方式中,DPC 900不包括解码器来在通道上执行之前生成uop。或者,在宏指令被从主机处理器转发或者被DPC直接从存储器读取的实现方式中,DPC的前端(例如,群组调度器901)包括解码器来生成uop的序列,随后这些序列在执行之前被存储在IDQ中。
数据并行集群900中的每个通道耦合到IDQ 905,该通道从IDQ 905接收要被并行执行的uop。在一个实施例中,每个通道包括整数寄存器文件(integer register file,IRF)920和浮点寄存器文件(floating-point register file,FRF)930,分别用于存储整数和浮点操作元。每个通道还包括张量算术逻辑单元(arithmetic logic unit,ALU)940来执行自适应按通道张量处理(如下文更详细描述的)、每微线程标量ALU 950以及每微线程独立地址生成单元960。在一个实施例中,独立AGU 960为具有收集/分散存储器访问模式的代码提供高吞吐量地址生成。其他独立功能单元也可被分配到每个通道。例如,在一个实施例中,每个通道配备有独立的跳转执行单元(jump execution unit,JEU),其允许通道发散并且与微体系结构掩码交互来提供独立线程的幻觉。
图示的体系结构还包括共享数据缓存980来为每个通道存储数据的本地拷贝。在一个实施例中,如果数据并行集群900被集成在具有主机处理器的芯片或系统中,则其参与由主机处理器实现的缓存一致性协议。页错失处理器984执行页游走操作以将虚拟地址转换成物理(系统存储器)地址并且数据转化后备缓冲器(data translation lookasidebuffer,DTLB)985缓存该虚拟到物理转化。
如图10A-10C中所示,数据并行集群900可通过多种方式集成在计算机系统中。在图10A中,DPC 900是核心1001a的一部分;在图10B中,DPC 900与多个核心在同一芯片上并且被多个核心共享;并且在图10C中,DPC 900与核心1001a-b在不同芯片上(但可能在同一封装中)。
首先转到图10A,图示的体系结构包括核心区域1001和共享的或者说“无核”区域1010。共享区域1010包括被核心1001a-b的全部或子集所共享的数据结构和电路。在图示的实施例中,多个核心1001a-b是能够并发地执行多个指令流或线程的同时多线程核心。虽然在图10A中为了简单只图示了两个核心1001a-b,但将会明白核心区域1001可包括任何数目的核心,其中每一者可包括与对核心1001a所示相同的体系结构。另一实施例包括异构核心,这些核心可具有不同的指令集体系结构和/或不同的功率和性能特性(例如,低功率核心与高功率/性能核心相组合)。
图10A中所示的各种组件可按与图1-图7中的相应组件相同的方式来实现。此外,核心1001a可包括图1B中所示的核心190的组件,并且可包括本文描述的任何其他处理器/核心组件(例如,图2A-2B、图3等等)。
核心1001a-b的每一者包括用于进行指令流的同时执行的指令管线组件,包括从系统存储器1060或指令缓存1010取得指令的指令取得电路1018以及对指令进行解码的解码器1009。执行电路1008执行解码的指令以执行由指令操作元、操作码和任何中间值指定的底层操作。
在图示的实施例中,解码器1009包括DPC指令解码电路1099来将某些指令解码成uop供DPC 900(在此实施例中集成在执行电路1008内)执行。虽然在图10A中DPC解码电路1099和DPC 900被图示为分开的块,但DPC解码电路1099和DPC 900可分布为散布在解码器1009和执行电路1008各处的功能电路。
在图10B中所示的替换实施例中,DPC 900通过缓存一致互连(例如,其中数据缓存与核心参与同一组缓存一致存储器事务)紧密耦合到处理器核心1001a-b。DPC 900被配置为核心的对等体,与核心参与同一组缓存一致存储器事务。在此实施例中,解码器1009对要被DPC 900执行的指令进行解码并且所得到的微操作被通过互连1006传递到DPC 900以便执行。在另一实施例中,DPC 900包括其自己的取指和解码电路来分别从系统存储器1060的特定区域取得和解码指令。在任一实现方式中,在执行指令之后,DPC 900可将结果存储到系统存储器1460中的该区域中以由核心1001a-b访问。
图10C图示了另一实施例,其中DPC与核心1001a-b在不同芯片上,但通过缓存一致接口1096耦合到核心。在一个实施例中,缓存一致接口1096使用基于分组的事务来确保DPC900的数据缓存980与核心1001a-b的缓存层次体系一致。
图10A-10C中还图示了通用寄存器(GPR)1018d、一组向量/瓦片寄存器1018b、一组掩码寄存器1018a(其可包括如下所述的瓦片掩码寄存器)以及一组控制寄存器1018c。在一个实施例中,多个向量数据元素被打包到每个向量寄存器中,其中每个向量寄存器可具有512比特宽度,用于存储两个256比特值、四个128比特值、八个64比特值、十六个32比特值,等等。向量寄存器的群组可被组合以形成本文描述的瓦片寄存器(tile register)。或者,可使用单独的一组2-D瓦片寄存器。然而,本发明的底层原理不限于任何特定大小/类型的向量/瓦片数据。在一个实施例中,掩码寄存器1018a包括八个64比特操作元掩码寄存器,用于对存储在向量寄存器1018b中的值执行比特掩蔽操作(例如,实现为上文描述的掩码寄存器k0-k7)。然而,本发明的底层原理不限于任何特定掩码寄存器大小/类型。一组一个或多个掩码寄存器1018a可实现本文描述的瓦片掩码寄存器。
控制寄存器1018c存储各种类型的控制比特或“标志”,它们被通过执行指令来用于确定处理器核心1001a的当前状态。作为示例,而非限制,在x86体系结构中,控制寄存器包括EFLAGS寄存器。
诸如片上互连(in-die interconnect,IDI)之类的互连1006或者实现IDI/一致协议的存储器架构将核心1001a-b(以及可能DPC 900)通信地耦合到彼此并且耦合到共享区域1010内的各种组件。例如,互连1006经由接口1007将核心1001a耦合到第3级(L3)缓存1013和集成存储器控制器1030。此外,互连1006可用于将核心1001a-b耦合到DPC 900。
集成存储器控制器1030提供对系统存储器1060的访问。诸如PCI快速电路之类的一个或多个输入/输出(I/O)电路(未示出)也可被包括在共享区域1010中。
指令指针寄存器1012存储识别要被取指、解码和执行的下一指令的指令指针地址。指令可被从系统存储器1060和/或诸如L2缓存1013、共享L3缓存1020或者L1指令缓存1010之类的一个或多个共享缓存级别中取指或预取指。此外,L1数据缓存1002存储从系统存储器1060加载和/或从既缓存指令也缓存数据的其他缓存级别1013、1020之一取回的数据。指令TLB(ITLB)1011为由取指电路1018取得的指令存储虚拟地址到物理地址转化,并且数据TLB(DTLB)1003为被解码电路1009和执行电路1008处理的数据存储虚拟到物理地址转化。
分支预测单元1021投机性地预测指令分支地址和用于存储分支地址和目标地址的分支目标缓冲器(branch target buffer,BTB)1022。在一个实施例中,分支历史表格(未示出)或其他数据结构被维护并且对于每个分支预测/误预测进行更新并且被分支预测单元1002用于做出后续分支预测。
注意图10A-10C并不打算提供处理器内使用的所有电路和互连的全面视图。更确切地说,与本发明的实施例不相关的组件未被示出。相反,一些组件只是为了提供其中可实现本发明的实施例的示例体系结构而示出的。
返回图9,处理集群900被布置成多个通道910,这多个通道910为若干个微线程封装执行资源(例如,IRF 920、FRF 930、张量ALU 940、ALU 950和AGU 960)。多个线程共享给定通道的执行资源以便容忍管线和存储器时延。一个实现方式的每微线程状态是现代处理器状态的子集。
图11图示了作为标量x86状态的子集的微线程状态1100的一个示例。微线程状态1100包括来自通用寄存器1101(例如,十六个64比特寄存器)、XMM寄存器1102(例如,三十二个64比特寄存器)、RFLAGS寄存器1104、指令指针寄存器1105、片段选择器1106和MXCSR寄存器1103的状态。使用标量x86的子集对于程序员是方便的,与现有的x86代码是软件兼容的,并且要求对当前编译器和软件工具链的最低限度改变。此实施例的通道执行标量的用户级指令。当然,本发明的底层原理不限于此特定布置。
在图12中所示的一个实施例中,多个数据并行集群900A-D被共位成一个更大的缩放单元,其被称为“DPC瓦片”1200。各种数据并行集群900A-D可通过高速架构互连耦合到彼此。DPC瓦片1200可利用上文对于图10A-10C中的单个DPC 900描述的任何微体系结构实现方式集成在处理器或计算机系统内(即,DPC瓦片1200可代替图10A-10C中的DPC900)。
DPC瓦片1200包括共享缓存1201并且依赖于一个或多个核心的现有取指1018和解码器1009。预取器1202预期到在数据并行集群900A-D上执行的uop,从系统存储器和/或缓存层次体系预取数据。虽然没有图示,但共享缓存1201可耦合在数据并行集群900A-D之间并且每个DPC 900A-D可耦合到芯片上互连网络(例如,IDI)。
在整个集群上共享处理器的执行资源分摊了由解码器1009执行的相对复杂的解码过程。本发明的一个实施例可支持数百个微线程利用传统处理器设计的取指1018和解码器1009资源的很小一部分来执行指令。
现在参考图13,示出了根据一实施例的处理器的一部分的框图。更具体而言,如图13中所示,示出的处理器1300的该部分是SPMD处理器。如图所示,调度器1310接收进入的指令并且将与该指令相关联的信息存储在条目1314中。调度器1310在调遣存储指令时生成符号存储地址来包括在统一符号存储地址缓冲器1320中。可以看出,每个条目1314可包括与给定指令相关联的各种信息,包括指令识别符,针对指令的各种源和/或目标操作元的识别符,以及与指令相关联的元数据,例如指出相应的操作元是否可用于执行的就绪指示符。
要理解此调度器在一实施例中可利用跟踪指令或uop并且为这些指令识别操作元及其就绪性的预留站或其他调度逻辑来实现。在一些情况下,调度器1310还可查找指令之间的冲突,例如经由控制电路1312来查找。当给定的指令准备好执行并且没有检测到冲突时,该指令可被从调度器1310调遣到多个执行通道13300-1330n。
如图13中还示出的,统一符号存储地址缓冲器1320包括多个条目13220-1322x。在一实施例中,每个条目1322可存储由调度器1310生成的符号存储地址。在一些情况中,调度器1310的给定条目1314内存在的信息可被用于生成此符号地址。在一个实施例中,此符号地址生成可获得预留站条目中存在的字段并且将它们拷贝到符号存储地址缓冲器1320中。当然,在其他实施例中,诸如基址索引和寄存器仿射关系之类的额外信息可被存储在符号存储地址缓冲器1320的条目1322中。
如图13的高级别中所示,每个执行通道1330可包括一个或多个存储器执行单元1332和一个或多个算术逻辑单元(ALU)1334。此外,对于在存储器执行单元1332内处理的加载指令,相应的加载地址可被生成并存储在存储器顺序队列1336中。如还示出的,存储器执行单元1332和ALU 1334可使用存储在寄存器文件1338中的信息。指令的执行的结果可被提供到引退电路1340,该引退电路1340可操作来在指令已在每个执行通道1330中被适当执行时引退该指令。要理解虽然在图13的实施例中是在这个高级别示出的,但许多变化和替换是可能的。
现在参考图14,其中示出了根据本发明的一个实施例的方法的流程图。更具体而言,图14的方法1400是一种用于在存储指令调遣时为存储指令生成符号地址并且将符号地址插入在统一符号存储地址缓冲器中的方法。这样,方法1400可由例如可实现在硬件电路、固件、软件和/或其组合中的调度器电路执行。在特定实施例中,SPMD处理器的调度器电路可响应于对存储指令的接收而为该指令生成符号地址,将其插入在统一符号存储地址缓冲器中,并且将存储指令调遣到多个执行通道以便执行。
如图所示,方法1400开始于块1410,在这里在调度器中接收SPMD存储指令。在一实施例中,调度器可包括预留站或其他调度器电路来跟踪进入的指令并且调度它们以调遣到执行通道。在块1420,对于此SPMD存储指令在调度器中插入条目。然后,在块1430,对于此存储指令生成符号地址,即符号存储地址。更具体而言,可在SPMD存储指令是要调遣的下一指令时生成此符号存储地址。如本文所述,此符号地址可至少部分基于多个字段或构成成分的逻辑串接,这些字段或构成成分是基于指令信息的。在一些实施例中,在预留站条目中对于存储指令存在的信息可用于生成符号存储地址。接下来,在块1440,符号地址可被存储在统一符号存储地址缓冲器的条目中。利用此布置,避免了对于每通道存储地址缓冲器的需要,并且实现了伴随而来的用于为随后的加载指令执行每通道地址比较的地址比较电路的减少。
仍参考图14,在菱形1450处,确定SPMD存储指令是否是管线内的资深存储指令,从而使其准备好被调遣。当确定SPMD存储指令是资深存储时,控制传递到块1460,在这里存储指令被调遣到执行通道以便执行。要理解每个执行通道可基于其内部状态(例如,寄存器内容)生成不同的每通道存储地址来访问不同的存储器位置以存储相应的存储数据。还要理解在执行中的这个时点,存储数据本身不需要是可用的,用于计算该地址的源地址寄存器操作元也不需要是准确就绪的。要理解虽然在图14的实施例中是在这个高级别示出的,但许多变化和替换是可能的。
现在参考图15,其中示出了根据本发明的另一实施例的方法的流程图。更具体而言,方法1500是一种用于在对更年轻加载指令的调遣时访问统一符号存储地址缓冲器的方法。这样,方法1500可由例如可实现在硬件电路、固件、软件和/或其组合中的调度器电路执行。在特定实施例中,SPMD处理器的调度器电路可响应于对加载指令的接收而为该指令生成符号地址,并且访问统一符号存储地址缓冲器,以识别此加载指令和一个或多个进行中存储指令之间的可能冲突。从而如本文所述,这种操作可检测尚未引退的更老旧存储指令和依从于这种更老旧存储指令的更年轻加载指令之间的冲突。
如图所示,方法1500通过将SPMD加载指令调遣到调度器而开始于块1510。在块1520,生成此加载指令的符号加载地址。注意此符号地址生成可根据用于为存储指令生成符号存储地址的相同符号机制发生。然后在块1530,利用此符号加载地址访问统一符号存储地址缓冲器。这样,对于给定的加载指令执行只使用单个加载地址的地址比较操作,而不是要求在没有本文描述的符号地址机制的情况下的每通道地址比较。这样,可大幅减小芯片面积和功率消耗。
基于块1530处的地址比较,确定冲突是否存在(菱形1540)。也就是说,如果符号加载地址匹配统一符号存储地址缓冲器中的一个或多个条目,则这指示冲突,因为加载指令依从于一个或多个更早的存储指令。在此情形中,控制传递到块1550,在这里加载指令可被延缓。更具体而言,此加载指令可在调度器中保持被延缓,直到冲突条目的存储指令引退为止。在其他情形中,可执行其他延缓处理技术,使得加载指令被延缓,直到满足其他排序要求为止,例如确保所有更早的存储操作已引退之类的,这取决于期望的实现方式和对于可能的误投机所期望的激进性或保守性。
仍参考图15,相反,如果确定在加载指令和更老旧的存储指令之间没有检测到冲突,则控制传递到块1560,在这里加载指令可被调遣到多个执行通道以便执行。
注意图15还示出了在加载指令的执行期间按每通道执行的操作。具体而言,在块1570,在每个执行通道中,基于符号加载地址计算加载地址。也就是说,在每个执行通道中,基于其自己的寄存器状态,可计算给定的加载地址。接下来,在块1580,因此可利用每通道加载地址在每个通道中投机性地执行加载指令(假设加载指令先前未在块1550处被延缓)。最后,在块1590,每个通道可将其加载地址写入到执行通道的相应存储器顺序队列中。有了这种按每通道的存储器顺序队列布置,在存储指令引退期间(如下文进一步描述)可确定在被设置为引退的存储指令和在程序顺序上在该存储指令之后的一个或多个投机性执行的加载指令之间是否存在冲突。在一实施例中,这个每通道存储器顺序队列可包括多个条目,每个条目对于给定的加载指令存储在该执行通道中计算的加载地址,以及例如与该给定加载指令相对应的重排序缓冲器条目的识别符。要理解虽然在图15的实施例中是在这个高级别示出的,但许多变化和替换是可能的。
现在参考图16,其中示出了根据本发明的另外一个实施例的方法的流程图。更具体而言,方法1600是一种用于引退存储指令的方法,这些存储指令利用了如本文所述的从属的更年轻加载指令的急切调遣。在一实施例中,方法1600可由引退电路执行和/或在执行通道本身内执行,例如可实现在硬件电路、固件、软件和/或这些的组合中。
如图所示,方法1600开始于选择存储指令来引退(块1610)。在一实施例中,当存储指令是重排序缓冲器或者其他引退结构中的顶部条目时,其可被选择。要理解当地址和数据操作元在所有活跃通道上都准备就绪并且可选地数据已移动到了存储数据缓冲器时,存储指令准备好引退。接下来在块1620,为每个执行通道计算用于此存储指令的地址。注意在这个时点,即在存储数据调遣时,此地址计算发生,这有利地实现了高效的操作,因为源地址寄存器操作元值到这个时点为止不需要存在,而不是要求这种值在存储指令调遣时可用。
仍参考图16,接下来在块1630,可利用这个计算出的地址访问每执行通道存储器顺序队列。在存储器顺序队列访问中与这个计算出的存储地址的地址比较可用于识别依从于这个准备好引退的存储指令的任何投机性执行的加载指令。基于这个存储器顺序队列访问,在菱形1640确定是否存在与更年轻加载指令的冲突。注意有可能某些执行通道没有冲突,而其他通道有冲突。如果没有冲突(即在存储地址和存在于存储器顺序队列中的加载地址之间存在未命中),则控制传递到块1660,在这里存储数据可被提交到存储器,从而存储指令引退。正是在这个时点,用于此存储指令的符号存储地址被从统一符号存储地址缓冲器中出队。从而在这个时点,在存储指令已被所有执行通道执行(从而不出现在存储指令调遣时)之后,一旦存储指令有效地引退,统一符号存储地址缓冲器中的条目就被出队(块1670)。
仍参考图16,相反,如果确定存在与更年轻加载指令的冲突,则控制从菱形1640传递到块1650,从而在块1650处识别出对更年轻加载指令的误预测,并且可清除执行通道的管线的至少一部分。为此,处理误预测或误投机的各种机制可发生。例如,在保守方案中,所有更年轻加载指令(即比准备好引退的存储指令更年轻的那些加载指令)可被从管线中冲刷。在其他情况下,可以只冲刷来自所识别的误预测并且更年轻的那些加载指令。在任何情况下,冲刷一些或全部执行通道管线的适当冲刷操作可发生。然后,控制传递到块1660,如上所述存储指令的存储数据可提交到存储器。要理解虽然在图16的实施例是在这个高级别示出的,但许多变化和替换是可能的。
以下示例属于进一步实施例。
在一个示例中,一种装置包括:多个执行通道,用于进行指令的并行执行;以及耦合到所述多个执行通道的统一符号存储地址缓冲器,所述统一符号存储地址缓冲器包括多个条目,每个条目为要被所述多个执行通道中的至少一些执行通道执行的存储指令存储符号存储地址。
在一示例中,所述装置还包括调度器,用于基于所述存储指令的至少一些地址字段生成所述符号存储地址,所述符号存储地址包括多个字段,所述多个字段包括位移字段、基址寄存器字段和变址寄存器字段。
在一示例中,所述多个字段还包括比例因子字段和操作元大小字段。
在一示例中,对于在程序顺序上在所述存储指令之后的加载指令,所述调度器基于所述加载指令的至少一些地址字段为所述加载指令生成符号加载地址并且基于所述符号加载地址访问所述统一符号存储地址缓冲器,以确定所述加载指令是否与进行中存储指令冲突。
在一示例中,响应于对所述加载指令与所述进行中存储指令冲突的确定,所述调度器抑制所述加载指令,直到所述进行中存储指令完成为止。
在一示例中,响应于对所述加载指令不与所述进行中存储指令冲突的确定,所述调度器将所述加载指令投机性地调遣到所述多个执行通道。
在一示例中,响应于对所述加载指令的投机性调遣,所述多个执行通道中的至少一些为所述加载指令计算通道加载地址,执行所述加载指令,并且将所述通道加载地址存储到所述执行通道的存储器顺序队列中。
在一示例中,在所述存储指令引退时,所述多个执行通道的每一者为所述存储指令计算通道存储地址并且至少部分基于所述存储器顺序队列的内容确定一个或多个加载指令是否与所述存储指令冲突。
在一示例中,响应于对第一执行通道中的冲突的确定,所述第一执行通道从所述第一执行通道冲刷所述一个或多个加载指令。
在一示例中,所述装置至少部分地基于执行中的应用的性能度量来动态地禁用加载指令的投机性执行。
在一示例中,所述性能度量包括误投机率。
在另一示例中,一种方法包括:在处理器的调度器中接收SPMD存储指令;为所述SPMD存储指令生成符号地址;在统一符号存储地址缓冲器的条目中为所述SPMD存储指令存储所述符号地址;将所述SPMD存储指令调遣到所述处理器的多个执行通道;并且至少部分地基于利用加载指令的符号地址对所述统一符号存储地址缓冲器的访问来将所述加载指令投机性地调遣到所述多个执行通道,所述加载指令在程序顺序上在所述SPMD存储指令之后。
在一示例中,所述方法还包括当所述加载指令的符号地址匹配所述统一符号存储地址缓冲器中的条目时阻止所述加载指令被投机性调遣。
在一示例中,所述方法还包括基于所述SPMD存储指令的地址生成所述SPMD存储指令的符号地址,所述SPMD存储指令的符号地址包括多个字段,所述多个字段包括位移字段、基址寄存器字段、变址寄存器字段、比例因子字段和操作元大小字段。
在一示例中,所述方法还包括,在所述SPMD存储指令引退时:在所述多个执行通道的每一者中为所述SPMD存储指令计算通道存储地址;并且利用所述通道存储地址访问相应执行通道的存储器顺序队列以确定在所述SPMD存储指令和在程序顺序上在所述SPMD存储指令之后的一个或多个投机性执行的加载指令之间是否存在冲突。
在一示例中,所述方法还包括当误投机率超过阈值时阻止投机性调遣加载指令。
在一示例中,所述方法还包括当所述SPMD存储指令被引退时将包括所述SPMD存储指令的符号地址的所述统一符号存储地址缓冲器的条目出队。
在另一示例中,一种包括指令的计算机可读介质要执行如上述示例的任何一者所述的方法。
在另一示例中,一种包括数据的计算机可读介质要被至少一个机器用来制造至少一个集成电路以执行如上述示例的任何一者所述的方法。
在另外一个示例中,一种装置,包括用于执行如上述示例的任何一者所述的方法的装置。
在另一示例中,一种系统包括处理器和耦合到所述处理器的系统存储器。所述处理器可包括:包括多个核心的主机处理器,其中第一核心要执行第一线程;以及耦合到所述主机处理器的数据并行集群。所述数据并行集群进而可包括:多个执行通道,用来进行与所述第一线程相关的第二线程的指令的并行执行;调度器,用来在要被所述多个执行通道执行的存储指令的存储地址调遣时,在由所述多个执行通道的每一者为所述存储指令计算通道存储地址之前,基于所述存储指令的地址为所述存储指令生成符号存储地址;以及耦合到所述多个执行通道的统一符号存储地址缓冲器,用来存储所述符号存储地址。
在一示例中,对于在程序顺序上在所述存储指令之后的加载指令,所述调度器基于所述加载指令的地址为所述加载指令生成符号加载地址并且基于所述符号加载地址访问所述统一符号存储地址缓冲器以确定所述加载指令是否与进行中存储指令冲突。
在一示例中,响应于对所述加载指令不与所述进行中存储指令冲突的确定,所述多个执行通道为所述加载指令计算通道加载地址,投机性地执行所述加载指令并且将所述通道加载地址存储在所述执行通道的存储器顺序队列中,并且在所述存储指令引退时为所述存储指令计算通道存储地址,并且至少部分地基于所述存储器顺序队列的内容确定一个或多个加载指令是否与所述存储指令冲突。
要理解上述示例的各种组合是可能的。
注意在本文中可互换使用术语“电路”和“电子线路”。就本文使用的而言,这些术语和术语“逻辑”用于单独地或者按任何组合提及模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可用于许多不同类型的系统中。例如,在一个实施例中,通信设备可被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施例可指向其他类型的用于处理指令的装置,或者包括指令的一个或多个机器可读介质,这些指令响应于在计算设备上被执行而使得设备实现本文描述的一个或多个方法和技术。
实施例可实现在代码中并且可被存储在其上存储有指令的非暂态存储介质中,所述指令可用于将系统编程为执行这些指令。实施例还可实现在数据中并且可被存储在非暂态存储介质上,该存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路来执行一个或多个操作。还有另外的实施例可以实现在包括信息的计算机可读存储介质中,所述信息当被制造到SoC或其他处理器中时将配置该SoC或其他处理器执行一个或多个操作。存储介质可包括但不限于任何类型的盘,包括软盘,光盘,固态驱动器(solidstate drive,SSD),致密盘只读存储器(compact disk read-only memory,CD-ROM),可改写致密盘(compact disk rewritable,CD-RW),以及磁光盘,半导体设备,比如只读存储器(read-only memory,ROM),随机访问存储器(random access memory,RAM),比如动态随机访问存储器(dynamic random access memory,DRAM),静态随机访问存储器(staticrandom access memory,SRAM),可擦除可编程只读存储器(erasable programmable read-only memory,EPROM),闪存、电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),磁卡或光卡,或者任何其他类型的适用于存储电子指令的介质。
虽然已针对有限数目的实施例描述了本发明,但本领域技术人员将会明白从这些实施例的许多修改和变化。希望所附权利要求覆盖落在本发明的真实精神和范围内的所有这种修改和变化。
Claims (25)
1.一种用于存储符号存储地址的装置,包括:
多个执行通道,用于进行指令的并行执行;以及
耦合到所述多个执行通道的统一符号存储地址缓冲器,所述统一符号存储地址缓冲器包括多个条目,每个条目为要被所述多个执行通道中的至少一些执行通道执行的存储指令存储符号存储地址。
2.如权利要求1所述的装置,还包括调度器,用于基于所述存储指令的至少一些地址字段生成所述符号存储地址,所述符号存储地址包括多个字段,所述多个字段包括位移字段、基址寄存器字段和变址寄存器字段。
3.如权利要求2所述的装置,其中所述多个字段还包括比例因子字段和操作元大小字段。
4.如权利要求2所述的装置,其中,对于在程序顺序上在所述存储指令之后的加载指令,所述调度器用于基于所述加载指令的至少一些地址字段为所述加载指令生成符号加载地址并且基于所述符号加载地址访问所述统一符号存储地址缓冲器,以确定所述加载指令是否与进行中存储指令冲突。
5.如权利要求4所述的装置,其中响应于对所述加载指令与所述进行中存储指令冲突的确定,所述调度器用于抑制所述加载指令,直到所述进行中存储指令完成为止。
6.如权利要求4所述的装置,其中响应于对所述加载指令不与所述进行中存储指令冲突的确定,所述调度器用于将所述加载指令投机性地调遣到所述多个执行通道。
7.如权利要求6所述的装置,其中响应于对所述加载指令的投机性调遣,所述多个执行通道中的至少一些用于为所述加载指令计算通道加载地址,执行所述加载指令,并且将所述通道加载地址存储到所述执行通道的存储器顺序队列中。
8.如权利要求7所述的装置,其中在所述存储指令引退时,所述多个执行通道的每一者用于为所述存储指令计算通道存储地址并且至少部分地基于所述存储器顺序队列的内容确定一个或多个加载指令是否与所述存储指令冲突。
9.如权利要求8所述的装置,其中响应于对第一执行通道中的冲突的确定,所述第一执行通道用于从所述第一执行通道中冲刷所述一个或多个加载指令。
10.如权利要求1所述的装置,其中所述装置用于至少部分地基于执行中的应用的性能度量来动态地禁用加载指令的投机性执行。
11.如权利要求10所述的装置,其中所述性能度量包括误投机率。
12.一种用于处理符号地址的方法,该方法包括:
在处理器的调度器中接收单程序多数据(SPMD)存储指令;
为所述SPMD存储指令生成符号地址;
在统一符号存储地址缓冲器的条目中为所述SPMD存储指令存储所述符号地址;
将所述SPMD存储指令调遣到所述处理器的多个执行通道;并且
至少部分地基于利用加载指令的符号地址对所述统一符号存储地址缓冲器的访问,来将所述加载指令投机性地调遣到所述多个执行通道,所述加载指令在程序顺序上在所述SPMD存储指令之后。
13.如权利要求12所述的方法,还包括:当所述加载指令的符号地址匹配所述统一符号存储地址缓冲器中的条目时,阻止所述加载指令被投机性调遣。
14.如权利要求12所述的方法,还包括:基于所述SPMD存储指令的地址生成所述SPMD存储指令的符号地址,所述SPMD存储指令的符号地址包括多个字段,所述多个字段包括位移字段、基址寄存器字段、变址寄存器字段、比例因子字段和操作元大小字段。
15.如权利要求12所述的方法,还包括:在所述SPMD存储指令引退时:
在所述多个执行通道的每一者中为所述SPMD存储指令计算通道存储地址;并且
利用所述通道存储地址访问相应执行通道的存储器顺序队列,以确定在所述SPMD存储指令和在程序顺序上在所述SPMD存储指令之后的一个或多个投机性执行的加载指令之间是否存在冲突。
16.如权利要求15所述的方法,还包括:当误投机率超过阈值时,阻止投机性调遣加载指令。
17.如权利要求12所述的方法,还包括:当所述SPMD存储指令被引退时,将包括所述SPMD存储指令的符号地址的所述统一符号存储地址缓冲器的条目出队。
18.一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令当被执行时用于实现权利要求12至17种任一项所述的方法。
19.一种用于处理符号存储地址的系统,包括:
处理器,包括:
包括多个核心的主机处理器,其中第一核心用于执行第一线程;以及
耦合到所述主机处理器的数据并行集群,所述数据并行集群包括:
多个执行通道,用于进行与所述第一线程相关的第二线程的指令的并行执行;
调度器,用于在要被所述多个执行通道执行的存储指令的存储地址调遣时并且在由所述多个执行通道的每一者为所述存储指令计算通道存储地址之前,基于所述存储指令的地址为所述存储指令生成符号存储地址;以及
耦合到所述多个执行通道的统一符号存储地址缓冲器,用于存储所述符号存储地址;以及
耦合到所述处理器的系统存储器。
20.如权利要求19所述的系统,其中对于在程序顺序上在所述存储指令之后的加载指令,所述调度器用于基于所述加载指令的地址为所述加载指令生成符号加载地址并且基于所述符号加载地址访问所述统一符号存储地址缓冲器,以确定所述加载指令是否与进行中存储指令冲突。
21.如权利要求20所述的系统,其中响应于对所述加载指令不与所述进行中存储指令冲突的确定,所述多个执行通道用于为所述加载指令计算通道加载地址,投机性地执行所述加载指令并且将所述通道加载地址存储在所述执行通道的存储器顺序队列中,并且在所述存储指令引退时,为所述存储指令计算通道存储地址,并且至少部分地基于所述存储器顺序队列的内容确定一个或多个加载指令是否与所述存储指令冲突。
22.一种用于存储符号存储地址的装置,包括:
多个执行通道装置,用于对指令进行并行执行;以及
耦合到所述多个执行通道装置的统一符号存储地址缓冲器装置,所述统一符号存储地址缓冲器装置包括多个条目,每个条目为要被所述多个执行通道装置中的至少一些执行通道装置执行的存储指令存储符号存储地址。
23.如权利要求22所述的装置,还包括调度器装置,用于基于所述存储指令的至少一些地址字段生成所述符号存储地址,所述符号存储地址包括多个字段,所述多个字段包括位移字段、基址寄存器字段和变址寄存器字段。
24.如权利要求23所述的装置,其中所述多个字段还包括比例因子字段和操作元大小字段。
25.如权利要求23所述的装置,其中对于在程序顺序上在所述存储指令之后的加载指令,所述调度器装置用于基于所述加载指令的至少一些地址字段为所述加载指令生成符号加载地址并且基于所述符号加载地址访问所述统一符号存储地址缓冲器装置,以确定所述加载指令是否与进行中存储指令冲突。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/364,704 US11188341B2 (en) | 2019-03-26 | 2019-03-26 | System, apparatus and method for symbolic store address generation for data-parallel processor |
US16/364,704 | 2019-03-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752616A true CN111752616A (zh) | 2020-10-09 |
Family
ID=69191909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010116698.9A Pending CN111752616A (zh) | 2019-03-26 | 2020-02-25 | 用于符号存储地址生成的系统、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11188341B2 (zh) |
EP (1) | EP3716055A1 (zh) |
CN (1) | CN111752616A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI820629B (zh) * | 2021-03-10 | 2023-11-01 | 新加坡商發明與合作實驗室有限公司 | 單片式晶粒和用於重新配置晶片系統的記憶體架構的平台 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11113065B2 (en) * | 2019-04-03 | 2021-09-07 | Advanced Micro Devices, Inc. | Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers |
US11561796B2 (en) | 2020-07-15 | 2023-01-24 | International Business Machines Corporation | Linked miss-to-miss instruction prefetcher |
CN114035847B (zh) * | 2021-11-08 | 2023-08-29 | 海飞科(南京)信息技术有限公司 | 用于并行执行核心程序的方法和装置 |
US11822922B2 (en) | 2021-12-31 | 2023-11-21 | International Business Machines Corporation | Miss-driven instruction prefetching |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193166A (en) | 1989-04-21 | 1993-03-09 | Bell-Northern Research Ltd. | Cache-memory architecture comprising a single address tag for each cache memory |
US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
US5717882A (en) | 1994-01-04 | 1998-02-10 | Intel Corporation | Method and apparatus for dispatching and executing a load operation to memory |
US5826052A (en) | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
KR100255510B1 (ko) | 1997-05-09 | 2000-05-01 | 김영환 | 원포트램셀구조로이루어진캐시데이터램 |
US6301654B1 (en) * | 1998-12-16 | 2001-10-09 | International Business Machines Corporation | System and method for permitting out-of-order execution of load and store instructions |
US6859861B1 (en) | 1999-01-14 | 2005-02-22 | The United States Of America As Represented By The Secretary Of The Army | Space division within computer branch memories |
US7424576B2 (en) | 2001-05-02 | 2008-09-09 | Intel Corporation | Parallel cachelets |
US7904905B2 (en) | 2003-11-14 | 2011-03-08 | Stmicroelectronics, Inc. | System and method for efficiently executing single program multiple data (SPMD) programs |
US20100161901A9 (en) | 2005-04-14 | 2010-06-24 | Arm Limited | Correction of incorrect cache accesses |
CN101292227B (zh) | 2005-10-19 | 2010-11-03 | Nxp股份有限公司 | 具有高访问存储带宽的高速缓冲存储器 |
US20090240930A1 (en) * | 2008-03-24 | 2009-09-24 | International Business Machines Corporation | Executing An Application On A Parallel Computer |
CN102736986A (zh) | 2011-03-31 | 2012-10-17 | 国际商业机器公司 | 一种内容可寻址存储器及其检索数据的方法 |
US10007521B1 (en) * | 2012-12-20 | 2018-06-26 | Marvell International Ltd. | Banked physical register data flow architecture in out-of-order processors |
US9760492B2 (en) | 2014-11-21 | 2017-09-12 | Mediatek Singapore Pte. Ltd. | Method for controlling access of cache through using programmable hashing address and related cache controller |
US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US10572376B2 (en) * | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US20180189179A1 (en) | 2016-12-30 | 2018-07-05 | Qualcomm Incorporated | Dynamic memory banks |
US11093250B2 (en) | 2018-09-29 | 2021-08-17 | Intel Corporation | Apparatus and method for gang invariant operation optimizations using dynamic evaluation |
US10977040B2 (en) * | 2019-02-19 | 2021-04-13 | International Business Machines Corporation | Heuristic invalidation of non-useful entries in an array |
US11429555B2 (en) * | 2019-02-26 | 2022-08-30 | Apple Inc. | Coprocessors with bypass optimization, variable grid architecture, and fused vector operations |
-
2019
- 2019-03-26 US US16/364,704 patent/US11188341B2/en active Active
-
2020
- 2020-01-24 EP EP20153504.4A patent/EP3716055A1/en active Pending
- 2020-02-25 CN CN202010116698.9A patent/CN111752616A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI820629B (zh) * | 2021-03-10 | 2023-11-01 | 新加坡商發明與合作實驗室有限公司 | 單片式晶粒和用於重新配置晶片系統的記憶體架構的平台 |
Also Published As
Publication number | Publication date |
---|---|
US20200310817A1 (en) | 2020-10-01 |
EP3716055A1 (en) | 2020-09-30 |
US11188341B2 (en) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093277B2 (en) | Systems, methods, and apparatuses for heterogeneous computing | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
US9870209B2 (en) | Instruction and logic for reducing data cache evictions in an out-of-order processor | |
US11188341B2 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
WO2014051736A1 (en) | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions | |
US20210374848A1 (en) | Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement | |
US10007620B2 (en) | System and method for cache replacement using conservative set dueling | |
US20170039139A1 (en) | Hardware apparatuses and methods to control access to a multiple bank data cache | |
US10896141B2 (en) | Gather-scatter cache architecture having plurality of tag and data banks and arbiter for single program multiple data (SPMD) processor | |
US20220413860A1 (en) | System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction | |
CN114661434A (zh) | 用于难以预测的分支的替代路径解码 | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
CN114253607A (zh) | 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置 | |
EP3716057A1 (en) | Method and apparatus for a multi-level reservation station with instruction recirculation | |
US12019553B2 (en) | System, apparatus and method for prefetching physical pages in a processor | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
CN113568663A (zh) | 代码预取指令 | |
US20240037036A1 (en) | Scheduling merged store operations in compliance with store ordering rules | |
US20230273811A1 (en) | Reducing silent data errors using a hardware micro-lockstep technique | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路系统 | |
CN115858015A (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 |