CN104106043B - 用于包括屏障指令的指令序列的处理器性能改进 - Google Patents
用于包括屏障指令的指令序列的处理器性能改进 Download PDFInfo
- Publication number
- CN104106043B CN104106043B CN201380008415.7A CN201380008415A CN104106043B CN 104106043 B CN104106043 B CN 104106043B CN 201380008415 A CN201380008415 A CN 201380008415A CN 104106043 B CN104106043 B CN 104106043B
- Authority
- CN
- China
- Prior art keywords
- instruction
- loading
- barrier instructions
- response
- processor cores
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000004888 barrier function Effects 0.000 title claims abstract description 159
- 230000006872 improvement Effects 0.000 title description 4
- 238000011068 loading method Methods 0.000 claims abstract description 158
- 230000004044 response Effects 0.000 claims abstract description 129
- 238000000034 method Methods 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims description 101
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000003860 storage Methods 0.000 description 48
- 101100007917 Mus musculus Cst9 gene Proteins 0.000 description 40
- 238000010586 diagram Methods 0.000 description 21
- 238000009826 distribution Methods 0.000 description 21
- 238000003491 array Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 229920003266 Leaf® Polymers 0.000 description 12
- 238000012546 transfer Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 6
- 101000867232 Escherichia coli Heat-stable enterotoxin II Proteins 0.000 description 5
- 101000867205 Escherichia coli Heat-stable enterotoxin ST-2 Proteins 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 241000270708 Testudinidae Species 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 230000003534 oscillatory effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 230000003068 static effect Effects 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
一种用于处理指令序列的技术,该指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指令,该技术包括:由处理器内核基于由处理器内核接收到用于对应于加载指令的读操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决。该技术还包括:如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来发起随后存储器访问指令的执行。该技术进一步包括:如果随后存储器访问指令的执行在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来中断关于无效对随后存储器访问指令的追踪。
Description
技术领域
本发明总体上涉及处理器性能改进,并且更具体地涉及用于包括屏障指令的指令序列的处理器性能改进。
背景技术
传统的对称多处理器(SMP)计算机系统(比如服务器计算机系统)包括多个都耦接到系统互连的处理单元,该系统互连典型地包括一个或者多个地址、数据和控制总线。被耦接到的系统互连是系统存储器,其代表多处理器计算机系统中的最低级别的易失性存储器并且通常由所有处理单元针对读和写访问可访问。为了减少对于驻留在系统存储器中的指令和数据的访问延时,每个处理单元典型地进一步由相应的多级高速缓存层级支持,该多级高速缓存层级的最低级可以被一个或者多个处理器内核共享。
已经被提出和/或实施的各种处理器设计旨在于改进数据处理系统性能。例如,在实施脆弱存储器模型的处理器设计中,只要操作未被限制为不可乱序执行,指令就可以被重排序以用于执行。一种用于限制某些指令执行的技术采用了屏障(或者同步)指令以防止后续加载或者存储指令(例如,跟随屏障指令的加载或者存储指令)的执行,直到在先的加载或者存储指令或者指令(例如,在屏障指令之前的加载或者存储指令)被解决。
参照图8,关于运用屏障指令(SYNC)来强制实施在存储(ST)和加载(LD)指令之间的排序可能有四种不同情形。在第一存储到存储情形中,在屏障指令(SYNC)之前的到地址‘A’的存储指令(ST A)跟随有在屏障指令(SYNC)之后的到地址‘B’的存储指令(ST B)。在第二存储到加载情形中,在屏障指令(SYNC)之前的到地址‘A’的存储指令(ST A)跟随有在屏障指令(SYNC)之后的到地址‘B’处加载指令(LD B)。在第三加载到加载情形中,在屏障指令(SYNC)之前的到地址‘A’的加载指令(LD A)跟随有在屏障指令(SYNC)之后的到地址‘B’的加载指令(LD B)。在第四加载到存储情形中,在屏障指令(SYNC)之前的到地址‘A’的加载指令(LD A)跟随有在屏障指令(SYNC)之后的到地址‘B’的存储指令(ST B)。
在第一情形中,因为指令序列已流经处理器流水线,因此屏障指令(SYNC)在存储指令(ST A和ST B)之间维持了顺序。在第二情形中,跟随屏障指令(SYNC)的加载指令(LDB)的执行被延迟,直到在屏障指令(SYNC)之前的存储指令(ST A)被完成(或者跟随屏障指令(SYNC)的加载指令(LD B)被早先发布并且针对无效被追踪直到在处理器内核处从存储器子系统处接收到用于屏障指令(SYNC)的确认(ACK))。在第三情形中,跟随屏障指令(SYNC)的加载指令(LD B)等待着直到用于在屏障指令(SYNC)之前的加载指令(LD A)的数据已被接收到(或者跟随着屏障指令(SYNC)的加载指令(LD B)早前被发起并针对无效被追踪直到在处理器内核处接收到用于在屏障指令(SYNC)之前的加载指令(LD A)的数据)。在第四情形中,跟随屏障指令(SYNC)的存储指令(ST B)的执行已被延迟,直到在处理器内核处接收到用于在屏障指令(SYNC)之前的加载指令(LD A)的数据。
在常规实现方式中,当(用于加载指令的)数据已被返回到处理器内核时,先于屏障指令的加载指令已被解决。相反地,在传统实现方式中,当在处理器内核处从存储子系统(例如,L2高速缓存)处接收到(用于随后的屏障指令的)确认(ACK)时,先于屏障指令的存储指令已被解决。参照图8的情形10,如前所记录,常规实现方式要么是推测地执行并且针对无效跟踪跟随屏障指令的加载指令(其中无效的加载指令被重新执行),要么是(在跟踪逻辑不可用的情形中)延迟执行跟随屏障指令的加载指令直到在屏障指令之前的指令(ST A或者LD A)已被解决。参参照图8的情形12,常规实现方式延迟了跟随屏障指令的指令(LD B或者ST B)的执行,直到用于加载指令(LD A)的数据被处理器内核接收到。
因此,在本领域中需要解决前述问题。
发明内容
根据本公开内容的一个方面,公开了一种用于处理指令序列的技术,指令序列包括屏障指令、在屏障指令之前的加载指令和跟随述屏障指令的随后存储器访问指令,该技术包括:由处理器内核基于由处理器内核接收到用于对应于加载指令的读操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决。这种技术还包括:如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来发起随后存储器访问指令的执行。这种技术还包括:如果随后存储器访问指令的执行在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来中断关于无效对随后存储器访问指令的追踪。
从本发明的第一方面来看,本发明提供了一种处理指令序列的方法,指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指令,该方法包括:由处理器内核基于由处理器内核接收到用于对应于加载指令以及用于加载指令的数据的读操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决;如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来发起随后存储器访问指令的执行;如果随后存储器访问指令的执行在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来中断关于无效对随后存储器访问指令的追踪。
从进一步的方面来看,本发明提供了一种被配置用于处理指令序列的数据处理系统,指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指令,该数据处理系统包括:高速缓冲存储器;以及耦接到高速缓冲存储器的处理器内核,该系统包括用于以下操作的装置:基于由处理器内核接收到用于对应于加载指令的读操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决;如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来发起随后存储器访问指令的执行;以及如果随后存储器访问指令的执行在屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的屏障指令来中断关于无效对随后存储器访问指令的追踪。
从进一步的方面来看,本发明提供了一种被配置用于处理指令序列的数据处理系统,指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指令,该数据处理系统包括:高速缓冲存储器;以及耦接到高速缓冲存储器的处理器内核,其中处理器内核被配置用于:基于由处理器内核接收到用于对应于加载指令的读操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决;如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来发起随后存储器访问指令的执行;以及如果随后存储器访问指令的执行在屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的屏障指令来中断关于无效对随后存储器访问指令的追踪。
从进一步的方面来看,本发明提供了一种用于处理指令序列的计算机程序产品,指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指令,该计算机程序产品包括:计算机可读存储介质,其由处理电路可读取并且存储指令以用于由处理电路执行以执行用于执行本发明的步骤的方法。
从进一步的方面来看,本发明提供了一种存储在计算机可读介质上并且可以加载到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当计算机程序在计算机上被运行时,用于执行本发明的步骤。
附图说明
现在将仅通过示例的方式参考优选实施例描述本发明,如在以下附图中所图示出的:
图1是根据本发明的优选实施例配置的处理单元的相关部分的示图;
图2是根据本发明的优选实施例配置的示例性数据处理系统的相关部分的示图;
图3是根据本发明的优选实施例的示例性操作的示图,该操作包括在图2的数据处理系统内实施的请求阶段、部分响应(Presp)阶段和组合响应(Cresp)阶段;
图4是根据本发明的优选实施例的图2的数据处理系统内的示例性操作的示图;
图5是根据本发明的优选实施例的图1中的L2高速缓存的片的相关部分的示图;
图6是根据本发明的优选实施例由图5的读取主张(read-claim,RC)机器实施的示例性的过程的流程图;
图7是根据本发明的优选实施例由在图5的加载-存储单元(LSU)中包括的处理器内核加载重排序队列解决逻辑实施的示例性的过程的流程图;
图8是根据本发明的优选实施例的示图,其图示了关于运用屏障指令(SYNC)以对存储(ST)和加载(LD)指令排序的四种情形;以及
图9是根据本发明的优选实施例的由图5的LSU的处理器内核加载重排序队列解决逻辑实施的示例性屏障释放过程的流程图。
具体实施方式
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为硬件实施方式或者组合有软件(包括固件、驻留软件、微代码等)的实施方式,硬件方面这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以例如是--但不限于--电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的示例包括以下的:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括--但不限于--电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括--但不限于--无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Smalltalk、C++等,还包括常规的过程式程序设计语言--诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络--包括局域网(LAN)或广域网(WAN)--连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。Java和所有基于Java商标和标记是甲骨文和/或其关联公司的商标或者注册商标。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其他可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令也可以被加载到计算机、其他可编程数据处理装置或者其他设备上以使得一系列操作步骤在计算机、其他可编程装置或者其他设备上被执行以产生计算机实施的过程,从而使得在计算机或者其他可编程装置上执行的指令提供用于实施在流程图和/或一个或者多个框图中指定的功能/动作的过程。
数据处理系统利用脆弱存储器模型,其允许对于操作的大量重排序并且允许存储修改操作以按照非原子方式影响在不同处理器(即,存储操作可以在多处理器数据处理系统中的不同处理器中在不同时间点起作用)。在运用脆弱存储器模型的数据处理系统中,希望为跨多处理器数据处理系统的所有处理器的某些存储器访问操作强制实施排序和原子性。一种用于强制实施此类操作排序的典型方式在指令序列中利用屏障(同步或者栅栏)指令。屏障指令强迫在屏障指令的不同侧的加载和存储指令按顺序地跨系统被执行并且可以在特定情形下恢复存储指令的原子性。屏障指令的执行是脆弱存储器模型机器的关键方面。这样,希望屏障指令被尽可能高效地执行。为了实现操作排序以及原子性的恢复,屏障指令等待某些事件发生以指示在允许屏障指令完成之前在数据处理系统中在屏障指令之前的加载或者存储指令已进展得足够远(例如,已经被解决),并且然后允许在屏障指令后的存储器访问操作继续进行。
根据本公开内容的各种实施例,屏障指令等待的特定微架构事件被增强以允许具有屏障指令的指令序列被更高效地处理。常规实现方式等待数据被返回到处理器内核以便指示与数据关联的加载指令已被解决。在很多情形中,在释放屏障之前等待向处理器内核返回加载指令的数据强制实施延迟,该延迟比必须的延迟更长,这样就减慢了包括加载指令的指令序列的处理器执行。在当前的一致性协议实现方式中,一致性协议可以返回组合响应(Cresp)指示,其为在用于加载指令的实际数据被返回到处理器内核之前已经绑定或者确定了用于加载指令的值。根据本公开内容,在屏障指令之前的加载指令被认为在最早出现用于加载指令的良好Cresp或者用于加载指令的数据“回家(home)”(即,返回到进行请求的处理器内核)时被解决,由此允许由屏障指令实施的屏障被释放以及跟随屏障指令的存储器访问指令的执行继续进行。在很多情形中,用于加载指令的Cresp在加载数据之前被处理器内核接收,这意味着相比于请求数据回家以解决在屏障指令之前的之前的实现方式,指令序列的处理被加速。
如前所述,屏障指令可以被用于强制实施下面四种情形中的排序:加载到加载、加载到存储、存储到加载和存储到存储。根据本公开内容,解决了具有屏障指令的指令系列的执行,该屏障指令对在屏障指令之前的加载指令排序。应当领会到,存储到存储排序情形没有数据响应于在屏障指令之前的存储操作被返回,这样未被本公开内容所解决。相似地,因为在屏障指令之后出现的加载指令通常被推测为在屏障指令完成之前已被发起并且如果情形要求加载指令应当未在更早时被执行则被重启,所以存储到加载排序情形未被影响。
根据本公开内容,通过允许在屏障指令之前和跟随屏障指令的加载指令以任意顺序执行实现了加载到加载排序。然而,在屏障指令之后的加载指令被针对任何无效追踪(直到屏障指令完成),这些无效指示由屏障指令之后的加载指令引用的地址已经改变了其值。当前,当在屏障指令之前的更旧加载指令已经接收到它们的数据并且同步确认(SYNC ACK)已经从存储子系统中被接收到时(指示在屏障指令之前的存储指令已经被关于所有处理器执行),屏障指令可以完成(并且因此对跟随屏障指令的更加新的加载指令的追踪可以停止)。同样地,在当前实现方式中,在屏障指令之后出现的存储指令被延迟,直到屏障指令完成。因为这些更加新的存储指令改变系统状态,所以这些更加新的存储指令不像那些更加新的加载指令那样,不能够被启动,直到屏障指令完成。
根据本公开内容,代替在先前的加载指令上等待数据回家,处理器内核在良好Cresp出现时(良好Cresp指示将被返回的用于更旧的加载指令的值已经被绑定到更旧的加载指令)或者在数据返回时考虑被解决的该更旧的加载指令。在读取主张(RC)机器接收到用于读操作的良好Cresp时,RC机器向处理器内核发送指示(例如,在重载总线上)以指示良好Cresp已经针对给定的加载指令而出现。处理器内核然后使用该Cresp以及现存的用于监测所请求的数据的返回的机制以释放屏障指令对于加载指令的依赖性。在某些情形中,在用于加载指令的数据被返回之前,用于加载指令的Cresp可以出现几百个处理器周期。当Cresp在数据之前被返回时,在Cresp被接收的点处,通过释放(对于加载指令的)屏障指令依赖性改善处理器性能。
根据本发明的各种实施例,在Cresp的点处关于数据处理系统中的所有处理器解决加载指令(因为当Cresp被返回时加载指令所返回的值被绑定)这一事实被用来加速指令序列的处理。例如,在用于加载指令的Cresp在用于加载指令的数据被处理器内核所接收之前被处理器内核所接收时,跟随在屏障指令之后的加载指令的指令可以在用于加载指令的数据到达处理器内核处之前开始执行。
现在参照附图并且特别地参照图1,其图示了依据本公开内容的处理单元100的示例性实施例的高级框图。在所描绘的实施例中,处理单元100是单个集成电路,其包括两个用于独立地处理指令和数据的处理器内核102a和102b。每个处理器内核102包括用于取读和排序指令以用于执行的指令排序单元(ISU)104以及用于执行指令的一个或者多个执行单元106。由执行单元106所执行的指令可以包括例如定点和浮点运算指令、逻辑指令和请求对存储器块的读和写访问的指令。例如,执行单元106可以包括一个或者多个浮点单元(FPU),一个或者多个加载-存储单元(LSU)和一个或者多个整数单元(IU)。
每个处理器内核102a、102b的操作由多级易失性存储器层级支持,该多级易失性存储器层级在其最低级具有一个或者多个共享系统存储器132(仅其中的一个在图1中被示出),以及在其更高级具有一个或者多个级别的高速缓冲存储器。如所描绘的,处理单元100包括集成存储器控制器(IMC)124,其响应于从处理器内核102a、102b所接收的请求以及由探听器126在互连结构(以下描述)中所探听的操作控制对系统存储器132的读和写访问。
在所图示的实施例中,处理单元100的高速缓冲存储器层级包括在每个处理器内核102a、102b内的全存储层1(L1)高速缓存108以及由处理单元100的所有处理器内核102a、102b共享的层2(L2)高速缓存110。L2高速缓存110包括L2阵列和目录114、主机(master)112和探听器116并且可以被配置在多个片中。主机112在互连结构上发起事务并且响应于从关联的处理器内核102a和102b所接收的存储器访问(以及其他)请求访问L2阵列和目录114。探听器116检测互连结构上的操作、提供适当响应并且执行操作所需要的对L2阵列和目录114的访问。虽然所图示的高速缓存层级包括仅两个缓存级别,但本领域技术人员将领会到备选实施例可以包括片上或者片外的内置或者旁视的高速缓存的其他级别(层3(L3)、层4(L4)等),其可以完全包含、部分包含、或者不包含更高层高速缓存中的内容。
如图1中进一步所示,处理单元100包括集成互连逻辑120,处理单元100可以通过集成互连逻辑120耦接到互连结构作为更大的数据处理系统的一部分。在所描绘的实施例中,互连逻辑120支持任意数目t1的“第一层”互连链接,在这种情形中互连链接包括入站和出站‘X’,‘Y’和‘Z’链接。互连逻辑120还支持如在图1中被设计为入站和出站‘A’和‘B’链接的任意数目t2第二层链接的。利用这些第一和第二层链接,每个处理单元100可以被耦接用于到上至t1/2+t2/2(在这个情形中是5)个其他处理单元100的双向通信。互连逻辑120包括请求逻辑121a(被标记为‘R’)、部分响应逻辑121b(被标记为‘P’)、组合响应逻辑121c(被标记为‘C’)以及数据逻辑121d(被标记为‘D’)以用于在不同操作阶段处理和转发信息。此外,互连逻辑120包括配置寄存器123(被标记为‘CR’),其包括用于配置处理单元100的多个模式比特。这些模式比特优选地包括:(1)一个或者多个模式比特的第一集合,其选择用于第一和第二层链接的希望的链接信息分配;(2)模式比特的第二集合,其指定处理单元100的第一和第二层链接中哪个连接到其他处理单元100;以及(3)模式比特的第三集合,其确定保护窗延伸的可编程持续时间。
每个处理单元100还包括响应逻辑122的实例,其实施分布式相干性信号传输机制的一部分,该分布式相干性信号传输机制维持在处理单元100的高速缓存层级和其他处理单元100的高速缓存层级之间的高速缓存相干性。最后,每个处理单元100包括集成I/O(输入/输出)控制器128,其支持附接一个或者多个I/O设备,比如I/O设备130。I/O控制器128可以响应于I/O设备130的请求在‘X’,‘Y’,‘Z’,‘A’和‘B’链接上发布操作以及接收数据。
现在参照图2,其描绘了根据本公开内容的由多个处理单元100形成的数据处理系统200的示例的实施例的框图。如所示,数据处理系统200包括八个处理节点202a0-202d0以及202a1-202d1,其各自可以被实现为包括包含四个处理单元100的打包的多芯片模块(MCM)。如所示,通过处理单元的‘X’,‘Y’,‘Z’链接,在每个处理节点202内的处理单元100被耦接用于点到点通信。每个处理单元100可以进一步通过处理单元的‘A’,‘B’链接被耦接到两个不同的处理节点202中的处理单元100以用于点到点通信。虽然在图2中图示了双向箭头,但应当理解,每对‘X’,‘Y’,‘Z’,‘A’和‘B’链接优选地(但不是必需地)被实施为两个单向链接而不是双向链接。
用于形成图2中所示的拓扑的通用表达可以被如下给出:
节点[I][K].芯片[J].链接[K]连接到节点[J][K].芯片[I].链接[K],对于所有I≠J的情形;AND
节点[I][K].芯片[J].链接[K]连接到节点[I][NOT K].芯片[I].链接[NOT K];AND
节点[I][K].芯片[I].链接[NOT K]连接到:
空,保留用于将来的扩展;OR
节点[额外][非K].芯片[I].链接[K],在所有的链接都被完全利用时(即,9个8-路节点形成了72路系统);AND
其中I和J属于集合{a,b,c,d}AND K属于集合{0,1}。
当然,备选表达可以被定义为形成其他的功能上等同的拓扑。而且,应当领会到,所描绘的拓扑是代表性的而不是穷尽体现了本发明的数据处理系统拓扑,并且其他拓扑是可能的。在此类备选拓扑中,例如,耦接到每个处理单元100的第一层和第二层链接的数目可以是任意数目,并且在每层内的处理节点202的数目(即,I)不需要等于每个处理节点100的处理单元100的数目(即,J)。
本领域技术人员将领会到,SMP数据处理系统100可以包括许多附加的未图示的组件,比如互连网桥、非易失性存储器、用于到网络的连接的端口或者附接的设备等。因为此类附加组件对于理解本发明不是必需的,所以这里没有在图2中图示或者讨论它们。
现在参照图3,其描绘了图2的数据处理系统200的互连结构上的示例性操作的时间-空间示图。当主机300(例如,L2高速缓存110的主机112或者I/O控制器128内的主机)在互连结构上发布请求302时,操作开始。请求302优选地至少包括指示希望的访问的类型的事务类型以及指示请求将要访问的资源的资源标识符(例如,真实地址)。请求的普通类型包括以下在表I中所阐明的内容。
表I
关于这些操作的进一步细节以及有助于高效处理这些操作的示例性高速缓存相干性协议可以在美国专利No.7,774,555中被找到。
请求302被探听器304接收,探听器304例如是遍布数据处理系统200分布的L2高速缓存110的探听器116和IMC 124的探听器126。通常,在有一些例外的情况下,因为仅在请求302无法被处理单元100在内部服务时请求302在互连结构上被传输,所以在与请求302的主机112相同的L2高速缓存110中的探听器116不探听请求302(即,通常没有自探听)。接收和处理请求302的探听器304各自提供相应的部分响应306,该部分响应306代表至少该探听器304对请求302的响应。在IMC 124内的探听器126基于例如探听器126是否对请求地址负责确定要提供的部分响应306,以及是否有可用于服务于的资源。L2高速缓存110的探听器116可以基于例如它的L2高速缓存目录114的可用性、探听器116内的用于处理请求的探听逻辑实例的可用性以及与L2高速缓存目录114中的请求地址关联的相干性状态确定它的部分响应306。
探听器304的部分响应306在逻辑上要么被有阶段性地组合要么一次性地通过响应逻辑122的一个或者多个实例而被组合,以确定对于请求302的系统范围中的组合响应(Cresp)310。在一个实施例中,在以下中假设,响应于生成Cresp 310的响应逻辑122的实例被定位在处理单元100中,该处理单元100包含有发布了请求302的主机300。响应逻辑122经由互连结构向主机300和探听器304提供Cresp 310,以指示对于请求302的系统范围的响应(例如,成功、失败、再试等)。如果Cresp 310指示请求302的成功,则Cresp310可以指示例如用于被请求的存储器块的数据源、主机300将按照其高速缓存被请求的存储器块的高速缓存状态以及使得在一个或者多个L2高速缓存110中的所请求的存储器块无效的‘清除’操作是否是需要的。
响应于接收到Cresp 310,一个或者多个主机300以及探听器304典型地执行一个或者多个操作以便服务于请求302。这些操作可以包括向主机300供应数据,无效或者以其他方式更新高速缓存在一个或者多个L2高速缓存110中的数据的相干性状态、执行castout操作、向系统存储器132写回数据等。如果请求302需要,则可以在由响应逻辑122生成Cresp310之前或者之后,向主机300或者从主机300传输被请求的存储器块或者目标存储器块。
在以下描述中,将参照探听器是相干性的最高点(HPC)、相干性的最低点(LPC)或者均无关于由请求指定的请求地址来描述探听器304的对于请求302的部分响应306,以及由探听器304响应于请求302所执行的操作和/或它的组合响应310。这里,LPC被定义为存储器设备或者作为用于存储器块的存储库的I/O设备。在不存在用于存储器块的HPC时,LPC保持存储器块的真实镜像并有权允许或者否决用于生成存储器块的附加的高速缓存的副本的请求。对于在图1和图2的数据处理系统实施例中的典型请求,LPC将是用于系统存储器132的存储器控制器124,其保持有被引用的存储器块。这里,HPC被定义为被唯一标识的设备,其高速缓存有存储器块的真实镜像(其可以或者可以不与LPC处的对应的存储器块相一致)并有有权允许或者否决用于修改存储器块的请求。描述性地,HPC也可以响应于并不修改存储器块的操作而向请求方提供存储器块的副本。因此,对于图1和图2的数据处理系统实施例中的典型的请求,如果有的话,HPC将是L2高速缓存110。虽然其他指示符也可以被用来指明用于存储器块的HPC,但本发明的优选实施例如果有的话指明用于存储器块的HPC,该存储器块利用L2高速缓存110的L2高速缓存目录114内的选定的高速缓存相干性状态。
仍然参考图3,如果有的话,在请求302中被引用的用于存储器块的HPC,或者在没有HPC时存储器块的LPC,优选地如果必须的话,则在对请求302的响应中有责任保护存储器块的所有权的转移。在图3中所示的示例性场景中,在用于由请求302的请求地址指定的存储器块的HPC处(或者在没有HPC时,LPC)的探听器304n,在保护窗312a期间和随后的窗延伸312b期间,保护被请求的存储器块的所有权向主机300的转移,其中保护窗312a是从探听器304n确定其部分响应的时间延伸直到探听器304n接收Cresp 310,其中随后的窗延伸312b延伸超过由探听器304n接收到Cresp 310后的可编程时间。在保护窗312a和窗延伸312b期间,探听器304n通过提供部分响应到其他的请求保护所有权的转移直到所有权被成功地转移到主机300,其中其他请求指定相同的请求地址,其防止其他主机获取所有权(例如,再试部分响应)。同样地,跟随接收到组合响应310,主机300发起保护窗313以保护在请求302中所请求的其自己的存储器块的所有权。
因为探听器304都具有用于处理前述的CPU和I/O请求的有限资源,所以各种不同层级的部分响应和对应的Cresp是可能的。例如,如果在负责被请求的存储器块的存储控制器124内的探听器126具有可用于处理请求的队列,则探听器126可以用部分响应做出响应,该部分响应指示探听器可以充当用于请求的LPC。在另一方面,如果探听器126没有可用于处理请求的队列,则探听器126可以用部分响应做出响应,该部分响应指示探听器126是用于存储器块的LPC但是其当前不能服务于该请求。相似地,在L2高速缓存110中的探听器116可以要求探听逻辑的可用实例以及对L2高速缓存目录114的访问以便处理请求。在不能访问这些资源中的一个(或者两个)时导致部分响应(以及对应的Cresp),该部分响应信号通知由于缺少所需的资源而不能服务于该请求。
如在图3中进一步图示的,在主机300从响逻辑122接收到Cresp(用于加载指令)之前或者之后,探听器304n可以返回数据(用于在指令序列中的屏障指令之前的加载指令)到主机300(即,L2高速缓存110的主机112)。根据本公开内容,在当探听器304n返回数据之前主机300从响应逻辑122接收Cresp的情况下,主机300返回Cresp到处理器内核102,处理器内核102转而解决加载指令并可以允许屏障指令去解决和加载和保存在所述屏障指令之后的指令,以在屏障指令之后的指令的执行还没有被发起的时候开始执行。在所述屏障指令之后的加载指令的执行已经被处理器102在接收到Cresp或者数据之前发起的情况下,处理器内核102中断使用无效追踪逻辑以用于执行如下加载指令,这些加载指令是在指令序列中的屏障指令之后的。
现在参照图4,其图示了图2的数据处理系统200中的示例性的操作流程的时间-空间示图。在这些图中,数据处理系统200内的各种处理单元100被标记有两个位置标识符-第一个标识处理单元100所属于的处理节点202并且第二个标识处理节点202内的特定处理单元100。因此,例如,处理单元100a0c指的是处理节点202a0的处理单元100c。此外,每个处理单元100被标记有功能标识符,该功能标识符指示其相对于参与操作的其他的处理单元100的功能。这些功能标识符包括:(1)本地主机(LM),其指明发源操作的处理单元100;(2)本地集线器(LH),其指明如下处理单元100,该处理单元与本地主机一样在同一个处理节点202中并且负责阐述操作到另一处理节点202(本地主机也可以是本地集线器);(3)远程集线器(RH),其指明如下处理单元100,该处理单元在与本地主机不同的处理节点202中并且负责分发操作到它的处理节点202中的其他处理单元100;以及(4)远程叶(RL),其指明如下处理单元100,该处理单元在不同于本地主机的处理节点202中而且该处理单元不是远程集线器。
如图4中所示,示例性操作具有如以上参照图3所描述的至少3个阶段,即请求(或者地址)阶段、部分响应(Presp)阶段和组合响应(Cresp)阶段。这3个阶段优选地以前述的顺序出现并且不重叠。操作可以附加地具有数据阶段,其可以可选地与请求、部分响应和组合响应阶段中的任何阶段重叠。
仍然参照图4,当本地主机100a0c(即,处理节点202a0的处理单元100c)执行请求(例如,读请求)的同步广播到它的处理节点202a0内的本地集线器100a0a、100a0b、100a0c和100a0d中的每个本地集线器时,请求阶段开始。应当注意,本地集线器的列表包括本地集线器100a0c,其也是本地主机。这一内部传输可以被有利地用于本地集线器100a0c的操作与本地集线器100a0a、100a0b和100a0d的同步以使得时序约束可以被更容易地满足。
响应于接收到请求,通过它的‘A’或者‘B’连接被耦接到远程集线器100的每个本地集线器100传输操作到它的远程集线器100。因此,本地集线器100a0a在它的出站‘A’链接上不进行操作的传输,而是经由它的出站‘B’链接传输操作到处理节点202a1内的远程集线器。本地集线器100a0b、100a0c和100a0d经由它们的相应的出站‘A’和‘B’连接分别传输操作到处理节点202b0和处理节点202b1、处理节点202c0和处理节点202c1以及处理节点202d0和处理节点202d1中的远程集线器。接收到操作的每个远程集线器100转而传输操作到它的处理节点202中的每个远程叶100。因此,例如,远程集线器100b0a传输操作到远程叶100b0b、100b0c和100b0d。以这种方式,操作被高效地广播到数据处理系统200内的所有处理单元100,这种传输利用不超过3个链接。
在请求阶段之后,是部分响应(Presp)阶段出现。在部分响应阶段中,每个远程叶100评估操作并提供它的部分的响应到对它的相应的远程集线器100的操作。例如,远程叶100b0b、100b0c和100b0d传输它们的相应的部分响应到远程集线器100b0a。每个远程集线器100转而传输这些部分响应以及它们自己的部分响应到本地集线器100a0a、100a0b、100a0c和100a0d中的相应的本地集线器。本地集线器100a0a、100a0b、100a0c和100a0d然后广播这些部分响应以及它们自己的部分响应到处理节点202a0中的每个本地集线器100。应当注意,处理节点202a0中的本地集线器100所响应的部分响应的广播出于时序原因包括由每个本地集线器100所进行的其自己的部分响应的自广播。
如将领会到的那样,按照示出的方式的部分响应的收集可以按照多种不同方式被实施。例如,有可能将个别部分响应从每个其他本地集线器、远程集线器和远程叶传送回每个本地集线器。备选地,为了更高的效率,可能希望在部分响应被传送回本地集线器时积累这些部分响应。为了确保每个部分响应的效果被精确地传送回本地集线器100,优选地是如果真要进行的话则以非破坏性的方式积累部分响应,例如,使用逻辑OR函数以及在受制于这个函数时使用其中未丢失相关信息的编码(例如,“独热(one-hot)”编码)。
如图4中进一步所示的,在处理节点202a0内的每个本地集线器100的响应逻辑122编译其他处理单元100的部分响应以获取到组合响应,该组合响应代表对于该请求的系统范围的响应。本地集线器100a0a-100a0d然后遵循针对请求阶段所运用的相同的分发路径广播组合响应到所有处理单元100。因此,组合响应首先被广播到远程集线器100,远程集线器100转而传输组合响应到它们的相应的处理节点202内的每个远程叶100。例如,本地集线器100a0b传输组合响应到远程集线器100b0a,远程集线器100b0a转而传输组合响应到远程叶100b0b、100b0c和100b0d。
如前所述,服务于操作可能需要附加的数据阶段。例如,如果操作是读类型操作(比如读或者RWITM操作),则远程叶100b0b可以经由连接远程叶100b0d到远程集线器100b0a的链接、连接远程集线器100b0a到本地集线器100a0b的链接和连接本地集线器100a0b到本地主机100a0c的链接,寻求到本地主机100a0c的被请求的存储器块的来源。相反地,如果操作是写类型操作(例如,高速缓存castout操作,其将修改的存储器块写回远程叶100b0b的系统存储器132),则存储器块经由连接本地主机100a0c到本地集线器100a0b的链接、连接本地集线器100a0b到远程集线器100b0a的链接和连接远程集线器100b0a到远程叶100b0b的链接被传输。
当然,在图4中描绘的场景仅仅是无数可能的操作中的一个示例,其可能会同时地出现在多处理器数据处理系统(比如数据处理系统200)中。
如以上参照图3所描述的,在存储器块的相干性所有权从探听器304n被“转送(handoff)”到请求主机300期间相干性被维持,其中在上述转送时可能有其他主机通过保护窗312a、窗延伸312b和保护窗313在竞争相同存储器块的所有权。例如,保护窗体312a和窗延伸312b必须一起具有足够的持续时间来保护所请求的存储器块的相关性所有权转移到获胜的主机300(WM),这时有竞争主机(CM)在的竞争请求。为了确保保护窗312a和窗延伸312b具有足够的持续时间来保护所请求的存储器块的所有权转移到获胜的主机300,在根据图4的处理单元100之间的通信延时较佳地被限制以使得以下条件被满足:
A_lat(CM_S)≤A_lat(CM_WM)+C_lat(WM_S)+ε,
其中的A_lat(CM_S)是任何竞争主机(CM)到拥有被请求的存储器块的相干性的探听器304n的地址延时,A_lat(CM_WM)是任何竞争主机(CM)到被探听器304n授予相干性所有权的“获胜”主机300(WM)的地址延时,C_lat(WM_S)是从组合响应被获胜主机(WM)300接收到的时间起到组合响应被拥有被请求的存储器块的探听器304n所接收到的时间止的组合响应延时,并且ε是窗延伸312b的持续时间。
如果可应用于任意拓扑的系统的前述时序限制未被满足,则竞争主机的请求可能被(1)竞争主机300在竞争主机300具有相干性所有权以及发起保护窗312b之前被接收;(2)探听器304n在保护窗312a和窗延伸312b结束之后接收。在此类情形中,获胜的主机300和探听器304n都不将提供部分响应给阻止竞争主机获取存储器块的相干性所有权并从存储器读取非相干数据的竞争请求。然而,为了避免这种相干性错误,窗延伸312b可以被可编程地设置(例如,通过合适地设置配置寄存器(CR)123)为一个任意的长度(ε)以补偿延迟变化或者物理实施的缺点,其中物理实施可能以其他方式未能满足必须被满足以维持相干性的时序限制。因此,通过求解前面的公式中的ε,用于任何实现方式的窗延伸312b的理想长度可以被确定。
就前述的时序约束可进行多个观察。首先,从竞争主机到拥有的探听器304a的地址延时没有必须的下界,但是必须具有上界。上界通过确定给定的最坏情况可达延时以及最大可能的振荡漂移、耦接处理单元100的最长链接、积累的位(stalla)的最大数目以及保证的最坏情形吞吐量来而被设计。为了确保上界被观察到,互连结构必须确保非阻塞行为。
第二,从竞争主机到获胜主机300的地址延时没有必需的上界,但是应该具有下界。该下界通过给定的最好情形可达延时,以及位缺失、在处理单元100之间的最短可能链接和给定特定静态配置下的最慢振荡漂移而被确定。
虽然对于给定的操作,获胜主机300和竞争主机中的每一个具有仅一个时序界以用于它的相应的请求,但是将领会到,在操作的过程期间,任何处理单元100可以是用于一些操作的获胜主机以及用于其他操作的竞争(和失败)主机。结果,每个处理单元100高效地具有用于它的地址延时的上界和下界。
第三,从组合响应被生成的时间到组合响应被获胜的主机300观察到的时间的组合响应延时没有必需的下界(组合响应可以在任意早的时间到达获胜主机300),但是必须具有上界。相比之下,从组合响应被生成的时间直到组合响应被探听器304n接收到的时间的组合响应延时具有下界,但是没有必需的上界(虽然可以任意地向飞速并行操作的数目强加限制)。
第四,对于部分响应延时没有约束。也就是说,因为所有的以上枚举的时序限制的项与请求/地址延时以及组合响应延时有关,所以探听器304和竞争主机的对于获胜主机300的部分响应延时就不具有必需的上界或者下界。
连接处理单元100的第一层和第二层链接可被以各种方式来实施以获取在图2中所描绘的拓扑以满足时序约束。在一个优选实施例中,每个入站和出站第一层(‘X’,‘Y’和‘Z’)链接以及每个入站和出站第二层(‘A’和‘B’)链接被实施为单向的8字节总线,该8字节总线包含多个不同的虚拟通道或者使用权以传送地址、数据、控制和相干性信息。
为了高效地处理对于可高速缓存地址的多个并发存储器访问,每个L2高速缓存110可以被实施为具有多个L2高速缓存片,每个L2高速缓存片处理对于相应的真实存储器地址集合的存储器访问请求。现在参照图5,其图示了根据本公开内容的示例性L2高速缓存片110a的更详细的框图。如图5中所示,L2高速缓存片110a包括高速缓存阵列502和高速缓存阵列502的内容的目录508。虽然没有被明确地图示,但是高速缓存阵列502优选地被实施为具有单个读端口和单个写端口以减少实施高速缓存阵列502所需要的裸片区域。
假设如常规的那样高速缓存阵列502和目录508被设置为关联的,使用系统存储(真实)地址内的预定索引比特,系统存储器132中的存储器位置被映射到高速缓存阵列502内的特定同余类。存储在高速缓存阵列502的高速缓存线中的特定存储器块被记录在高速缓存目录508中,高速缓存目录508对于每个高速缓存线包含一个目录条目。尽管在图5中没有被明显地描绘,但是本领域技术人员将理解,高速缓存目录508中的每个目录条目包括各种字段,例如,标识在高速缓存阵列502的对应的高速缓存线中保持的存储器块的真实地址的标记字段、指示高速缓存线的相干性状态的状态字段以及指示在相同同余类中的关于其他高速缓存线的用于高速缓存线的替换顺序的最近最少使用(LRU)字段。
L2高速缓存片110a包括多个(例如,16个)读取主张(RC)机器512a-512n以用于独立地和并发地服务于从附属的处理器内核102接收的加载(LD)和存储(ST)请求。至少一些RC机器512可以被实施为更小的特殊用途RC机器,其能够处理比所有可能类型的从附属的处理器内核102处接收的存储器访问请求更少的类型的存储器访问请求。一般而言,以这种方式实施特殊用途RC机器实质上减少了在处理单元100中的专用于RC机器512的裸片区域。
根据本公开内容的一个方面,RC机器512还被配置用于经由复用器M5返回用于到内核102加载指令的Cresp(从本地互连514接收),该复用器M5可以经由未图示的选择线由仲裁器505(或者其他逻辑)控制。如图5中所图示的,内核10还也包括加载-存储单元(LSU)555(例如,执行单元106的一个),其包括加载再排列队列(LRQ)555a和LRQ解决逻辑555b。LSU 555的解决逻辑555b被配置用于插入用于加载指令的条目(该加载指令在指令序列中的屏障指令之前)到LRQ 555a中并且响应于确定加载指令被解决来将LRQ 555a中的该项目标记为已解决。例如,LRQ解决逻辑555b可以通过断言条目的一个或者多个比特来将LRQ555a中的该条目标记为已解决。根据本公开内容,当处理器内核102接收到用于加载指令的良好Cresp(经由复用器M5来自L2高速缓存片110a),或者用于加载指令的数据(经由复用器M3来自L2高速缓存片110a)的时候,加载指令被解决。
为了服务于源自处理器内核102而不是附属的处理器内核102的远程存储器访问请求,L2高速缓存片110a包括多个探听机器511a-511m。每一个探听器机器511可以独立地并并且发地处理从本地互连514被“探听”的远程存储器访问请求。
如将被领会到的,RC机器512对于存储器访问请求的服务可以要求对高速缓存阵列502内的存储器块的替换或者无效。相应地,L2高速缓存片110包括CO(castout)机器510,该CO机器510管理着对来自高速缓存阵列502的存储器块的移除和回写。
L2高速缓存片110a的仲裁器505被进一步配置用于控制复用器M1-M2来对从附属的处理器内核102处接收的本地存储器访问请求和在本地互连514上所探听的远程请求的处理排序。包括本地加载和存储操作以及远程读和写操作的存储器访问请求根据由仲裁器505所实施的仲裁政策被转发到分发流水线506,在分发流水线506处在给定数目的周期上关于目录508和高速缓存阵列502处理每个读/加载和存储请求。
L2高速缓存片110a还包括RC队列520和CPI(castout推送介入)队列518,这两个队列分别缓冲被插入到高速缓存阵列502中和从高速缓存阵列502移除的数据。RC队列520包括多个缓冲器条目,其各自个别地对应于特定的RC机器512以使得每个被调度的RC机器512仅仅从被指定的缓冲器条目取回数据。相似地,CPI队列518包括多个缓冲器条目,这些缓冲器条目各自给别地对应于特定的castout机器510和探听机器511,从而使得被调度的每个CO机器510和每个探听器511仅仅从相应的指定的CPI缓冲器条目取回数据。
每个RC机器512还具有向其指派的有多个RC数据(RCDAT)缓冲器522中的一个以用于缓冲从高速缓存阵列502读取的存储器块和/或经由再加载总线523从本地互连514接收的存储器块。被指派给每个RC机器512的RCDAT缓冲器522优选地被构造为具有连接和功能,这些连接和功能对应于可以被关联的RC机器512所服务的存储器访问请求。如以下还进一步讨论的,一些但不是所有的RCDAT缓冲器522具有关联的存储数据复用器M4,该复用器M4响应于未图示的由仲裁器505生成的选择信号从它的用于缓冲到RCDAT缓冲器522中的输入选择数据字节。
在操作中,处理器存储包括事务型(ttype)、目标真实地址的请求,并且将从附属的处理器内核102接收的数据存储在存储队列(STQ)504内。STQ504还包括用于处理屏障指令(主要是特殊存储指令)的屏障解决逻辑(没有被分离地显示)。当屏障指令到达STQ504的头部时(即,先于屏障指令的所有保存指令已被推送通过STQ 504),屏障解决逻辑返回确认(ACK)到处理器内核102,这如这里进一步描述的那样释放屏障(参见图9)。从STQ 504,保存数据经由数据路径524被传输到存储数据复用器M4,并且存储型和目标地址被传递到复用器M1。复用器M1也接收来自处理器内核102的处理器加载请求和来自于RC机器512的目录写请求作为输入。响应于由仲裁器505生成的未图示的选择信号,复用器M1选择它的输入请求中的一个以转发到复用器M2,该复用器M2附加地从本地互连514经由远程请求路径526接收远程请求作为输入。仲裁器505基于调度来调度用于处理的本地和远程存储器访问请求并且生成选择信号528的序列。响应于由仲裁器505生成的选择信号528,复用器M2选择从复用器M1接收的本地请求或者从本地互连514所探听的远程请求作为将要被处理的下一存储器访问请求。
被选择用于由仲裁器505处理的请求被复用器M2放置在分发流水线506中。分发流水线506优选地被实施为固定持续时间流水线,在该流水线中在预定数目的时间周期中多个可能重叠的请求A、B、C等中的每个被处理。例如,分发流水线506在每四个周期中可以处理一个请求。
在分发流水线506内的第一个处理周期期间,1-循环目录读被执行从而使用请求地址来确定请求地址在目录508中命中还是未命中,并且如果存储器地址命中则确定目录508内的存储器块的相干性状态。包括命中/未命中指示和存储器块的相干性状态的目录信息在随后周期(比如第四周期)中被目录508返回到分发流水线506。如将领会的那样,通常在L2高速缓存片中响应于对远程存储器访问请求的未命中不进行动作,这样的远程存储器请求被相应地从分发流水线506丢弃。然而,在本地存储器访问请求上命中或者未命中或者远程存储器访问请求上命中时的情况下,L2高速缓存片110a将服务于该存储器访问请求,而对于在处理单元100内完全不能被服务的请求,可能需要经由结构控制器516在本地连接514上进行通信。
在分发流水线506内的存储器访问请求的处理期间的预定时间处,仲裁器505经由地址和控制路径530传输请求地址到高速缓存阵列502以发起由请求地址所指定的存储器块的高速缓存读。高速缓存读在示例性实施例中耗时2个周期。从高速缓存阵列502读取出来的存储器块经由数据路径542被传输到错误校正代码(ECC)逻辑544,该错误校正代码逻辑544检查存储器块以寻找错误,如果可能的话,校正任何检测到的错误。对于处理器加载请求,存储器块也经由数据路径540被传输到加载数据复用器M3以用于转发到附属的处理器内核102。
在分发流水线506中的存储器访问请求的处理中的最后的周期,分发流水线506做出分发确定。例如,分发流水线506可以基于一些标准确定进行分发确定,这些标准包括:(1)存在由castout机器510、探听511或者RC机器512当前处理的请求地址和之前的请求地址之前的地址冲突;(2)目录信息;以及(3)用于处理存储器访问请求的RC机器512或者探听机器511的可用性。如果分发流水线506做出存储器访问请求将被分发的分发确定,则存储器访问请求被从分发流水线506分发到RC机器512或者探听机器511。如果存储器访问请求分发失败,则失败通过再试响应,被信号通知到请求器(例如,本地或者远程处理器内核102)。如果必需的话,请求器可以随后再试失败了的存储器访问请求。
在RC机器512处理本地的存储器访问请求时,RC机器512具有一个忙状态并且不可用于服务于另一个请求。当RC机器512具有忙状态时,如果必需的话,RC机器512可以执行目录写操作以更新目录508的相关条目。另外,RC机器512可以执行高速缓存写以更新高速缓存阵列502的相关高速缓存线。目录写和缓存写可以在其中分发流水线506未准备好根据目录读和高速缓存读的固定调度处理其他请求的任何间隔期间由仲裁器505调度。当用于给定请求的所有操作已被完成时,RC机器512返回不忙状态。
将被领会到的是,对于非固定调度操作(比如目录写和高速缓存写)的调回会影响其他操作的调度,包括根据固定调度被处理的那些操作。
参照图6,其图示了由根据本公开内容的实施例所配置的RC机器512所实施的示例性过程600的流程图。在块602中,过程600被发起,届时控制转移到块604。在块604中,RC机器512响应于目录508中的加载指令的目标地址的高速缓存未命中,在互连结构上发布对应于加载指令(该指令被包括在包括屏障指令的指令序列中,其中屏障指令跟随加载指令)的读操作。接着,在决定块606中,RC机器512确定用于读操作的数据是否已被接收到,例如,从另一个L2高速缓存110或者系统存储器132处接收到。在块606中,响应于RC机器512确定已针对读操作接收到数据,控制从块606转移到块616,在块616用于读操作的数据被返回(经由复用器M3)到关联的处理器内核102。在块606中,响应于没有被接收到用于读操作的数据,控制从块606转移到决定块608。
在块608中,RC机器512确定是否针对读操作已接收到Cresp。响应于用于读操作的Cresp在块608中没有被接收到,控制从块608转移到块606。响应于用于读操作的Cresp在块608中被接收到,控制从块608转到决定块610。在块610中,RC机器512确定接收到的用于读操作的Cresp是否是“良好”,这意味着将供应由读操作请求的数据,例如,由数据处理系统200中的另一L2高速缓存110或者系统存储器132。在块610中,响应于Cresp不是良好,控制从块610转移到块604,其中读操作被再次发布。在块610中,响应于Cresp是良好,控制从块610转移到块612。
在块612中,RC机器512返回(经由复用器M5)良好的Cresp指示到处理器内核102。接着,在决定块614中,RC机器512确定是否已经针对读操作接收到数据。在块614中,响应于没有被接收到针对读操作的数据,控制循环到块614上。在块614中,响应于接收到针对读操作的数据,控制从块614转移到块616,其中RC机器512返回由读操作所请求的数据到处理器内核102。跟随块616,控制转移到块618,在块618过程600结束,直到RC机器512被指派另一存储器访问操作。
参照图7,其图示了由根据本公开内容的实施例的LSU 555的处理器内核加载重排序队列解决逻辑555b实施的示例性过程700的流程图。在块702中,过程700被发起,届时控制转移到决定块704。在块704中,LSU 555的解决逻辑555b为如下加载指令在LSU 555的加载重排序队列(LRQ)555a中创建队列条目,该加载指令在指令序列中先于屏障指令。接着,在决定块706中,LSU 555的解决逻辑555b确定是否由加载指令所请求的数据已经被接收到。在块706中,响应于确定由加载指令所请求的数据尚未被接收到,控制转移到决定块708。然而,如果在块706中确定由加载指令所请求的数据已被接收到,则控制转移到决定块710。
在块708中,LSU 555的解决逻辑555b确定是否针对加载指令接收到了良好Cresp。在块708,响应于良好Cresp尚未被接收到,控制转移到块706。在块708,响应于良好Cresp已被接收到,控制转移到块710。在块710中,LSU 555的解决逻辑555b将LSU 555的LRQ中的用于加载指令的条目标记为已解决。跟随块710,控制转移到块712,在块712过程700结束。
参照图9,其图示了(例如,由LSU 555实施的)示例性屏障释放过程900的流程图。过程900响应于屏障指令的执行而被实施。在块902中,过程900被发起,届时控制转移到决定块904。在块904中,LSU 555的解决逻辑555b确定是否所有的在屏障指令之前的加载指令已经被解决。在所有的在屏障指令之前的加载指令尚未被解决时,控制循环到块904。在块904中,响应于在屏障指令之前的所有加载指令被解决,控制转移到决定块906。在决定块906中,LSU 555的解决逻辑555b通过确定是否用于给定屏障指令的ACK已经被收到来确定是否所有的在屏障指令之前的存储指令已经被解决。在所有的在屏障指令之前的存储指令尚未被解决时,控制循环到块906。在块906中,响应于在屏障指令之前的所有存储指令被解决,控制转移到决定块908。在块908中,LSU 555的解决逻辑555b完成用于屏障指令的SYNC操作,届时跟随屏障指令的存储器访问指令的执行可以继续进行。跟随块908,在块910中过程900结束。
相应地,已在这里被公开的技术在执行包括屏障指令的指令序列时可以有利地改善处理器性能。例如,在处理器内核处当对于加载指令的良好组合响应在用于加载指令的数据在处理器内核处被接收之前而被接收时,屏障指令可以响应于该良好组合响应而被释放,从而在某些情形下来在数百个周期改善处理器性能。
附图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能的实现方式的架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现指定的逻辑功能的可执行指令。还应注意的是,在一些备选实现方式中,在方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个被连续示出的方框实际上可以基本并行地被执行,或者方框有时也可以按相反的顺序被执行,这依赖于所涉及的功能。还应注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行指定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
这里使用的术语仅是出于描述特定实施例的目的并且并非旨在于限制本发明。如这里所使用的,单数形式的“一”、“一个”和“该”旨在于也包括复数形式,除非上下文明确地另有指示。还将理解,术语“包括”和/或“包含”(以及类似的术语,比如包括着、包括有、具有、包含有等)当在本说明书中被使用时指定所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但并不排除一个或者多个其他特征、整体、步骤、操作、元件、部件和/或其分组的存在或添加。
以下权利要求中的所有装置或者步骤加功能元素的对应结构、材料、动作和等效物如果存在则旨在于包括用于结合如具体要求保护的其他要求保护的元素执行功能的任何结构、材料或者动作。本发明的描述已经出于例示和描述的目的而被呈现,但是并非旨在于是穷尽的或者限于按照所公开形式的本发明。由于本领域技术人员将容易地想起许多修改和改变,因此本发明旨在于并未限于这里描述的有限数目的实施例。因此,将领会到,可以借助的所有适当变型、修改和等效物落入本发明的范围内。实施例被选择和描述以便最佳地说明本发明的原理和实际应用,以及使得本领域普通技术人员能够理解如适合于所预期的特定使用的、对于具有各种修改的各种实施例的本发明。
已经因此详细地并且参考本申请的发明的优选实施例描述了本申请的发明,将明确的是在没有脱离在所附权利要求中所定义的本发明的范围的情况下修改和改变是可能的。
Claims (16)
1.一种处理指令序列的方法,所述指令序列包括屏障指令、在所述屏障指令之前的加载指令和跟随所述屏障指令的随后存储器访问指令,所述方法包括:
由处理器内核基于由所述处理器内核接收到用于对应于所述加载指令的读操作的良好组合响应以及用于所述加载指令的数据中的最早的一个来确定所述加载指令被解决;
如果所述随后存储器访问指令的执行未在所述屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的所述屏障指令来发起所述随后存储器访问指令的执行;以及
如果所述随后存储器访问指令的执行在所述屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的所述屏障指令来中断关于无效对所述随后存储器访问指令的追踪。
2.如权利要求1所述的方法,还包括:
由所述处理器内核向加载重排序队列中插入用于所述加载指令的条目项;以及
由所述处理器内核响应于由所述处理器内核确定所述加载指令被解决来将所述加载重排序序列中的所述条目标记为已解决。
3.如前述权利要求中的任一权利要求所述的方法,其中所述随后存储器访问指令为随后加载指令。
4.如权利要求1到2中的任一权利要求所述的方法,其中所述随后存储器访问指令为随后存储指令。
5.如前述权利要求1到2中的任一权利要求所述的方法,还包括所述处理器内核在接收用于所述加载指令的所述数据之前接收用于对应于所述加载指令的所述读操作的所述良好组合响应。
6.如权利要求1到2中的任一权利要求所述的方法,还包括所述处理器内核在接收用于所述加载指令的所述数据之后接收用于对应于所述加载指令的所述读操作的所述良好组合响应。
7.如前述权利要求1到2中的任一权利要求所述的方法,其中当在所述屏障指令之前的所有加载指令和存储指令被解决时所述屏障指令完成。
8.一种被配置用于处理指令序列的数据处理系统,所述指令序列包括屏障指令、在所述屏障指令之前的加载指令和跟随所述屏障指令的随后存储器访问指令,所述数据处理系统包括:
高速缓冲存储器;以及
耦合到所述高速缓冲存储器的处理器内核,所述系统包括用于以下操作的装置:
基于由所述处理器内核接收到用于对应于所述加载指令的读操作的良好组合响应以及用于所述加载指令的数据中的最早的一个来确定所述加载指令被解决;
如果所述随后存储器访问指令的执行未在所述屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的所述屏障指令来发起所述随后存储器访问指令的执行;以及
如果所述随后存储器访问指令的执行在所述屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的所述屏障指令来中断关于无效对所述随后存储器访问指令的追踪。
9.如权利要求8所述的数据处理系统,其中所述数据处理系统还可操作用于:
向加载重排序队列中插入用于所述加载指令的条目;以及
响应于确定所述加载指令被解决来将所述加载重排序序列中的所述条目标记为已解决。
10.如权利要求8或9中的任一权利要求所述的数据处理系统,其中所述随后存储器访问指令为随后加载指令。
11.如权利要求8或9中的任一权利要求所述的数据处理系统,其中所述随后存储器访问指令为随后存储指令。
12.如权利要求8或9中的任一权利要求所述的数据处理系统,还可操作用于:所述处理器内核在接收用于所述加载指令的所述数据之前接收用于对应于所述加载指令的所述读操作的所述良好组合响应。
13.如权利要求8或9中的任一权利要求所述的数据处理系统,还可操作用于:所述处理器内核在接收用于所述加载指令的所述数据之后接收用于对应于所述加载指令的所述读操作的所述良好组合响应。
14.如权利要求8或9中的任一权利要求所述的数据处理系统,还可操作用于当在所述屏障指令之前的所有加载指令和存储指令被解决时所述屏障指令完成。
15.如权利要求8或9中的任一权利要求所述的数据处理系统,其中所述高速缓冲存储器为二级高速缓冲存储器。
16.如权利要求15所述的数据处理系统,其中所述处理器内核包括加载-存储单元,所述加载-存储单元包括加载重排序队列(LRQ)并且LRQ可操作用于解决逻辑,并且其中解决逻辑的所述LRQ可操作用于:
向所述LRQ中插入用于所述加载指令的条目;以及
响应于确定所述加载指令被解决来将所述LRQ中的所述条目标记为已解决。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/369,029 US8935513B2 (en) | 2012-02-08 | 2012-02-08 | Processor performance improvement for instruction sequences that include barrier instructions |
US13/369,029 | 2012-02-08 | ||
PCT/IB2013/050538 WO2013118008A1 (en) | 2012-02-08 | 2013-01-22 | Processor performance improvement for instruction sequences that include barrier instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104106043A CN104106043A (zh) | 2014-10-15 |
CN104106043B true CN104106043B (zh) | 2017-09-08 |
Family
ID=48903964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380008415.7A Active CN104106043B (zh) | 2012-02-08 | 2013-01-22 | 用于包括屏障指令的指令序列的处理器性能改进 |
Country Status (8)
Country | Link |
---|---|
US (2) | US8935513B2 (zh) |
CN (1) | CN104106043B (zh) |
AU (1) | AU2013217351B2 (zh) |
DE (1) | DE112013000891T5 (zh) |
GB (1) | GB2513509B (zh) |
IL (1) | IL232812A (zh) |
SG (1) | SG11201402452VA (zh) |
WO (1) | WO2013118008A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9037669B2 (en) | 2012-08-09 | 2015-05-19 | International Business Machines Corporation | Remote processing and memory utilization |
US10152450B2 (en) * | 2012-08-09 | 2018-12-11 | International Business Machines Corporation | Remote processing and memory utilization |
US9058273B1 (en) | 2013-12-20 | 2015-06-16 | International Business Machines Corporation | Frequency determination across an interface of a data processing system |
US9495312B2 (en) | 2013-12-20 | 2016-11-15 | International Business Machines Corporation | Determining command rate based on dropped commands |
US20150331608A1 (en) * | 2014-05-16 | 2015-11-19 | Samsung Electronics Co., Ltd. | Electronic system with transactions and method of operation thereof |
CN110795150A (zh) * | 2015-07-21 | 2020-02-14 | 安培计算有限责任公司 | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 |
GB2541400B (en) * | 2015-08-17 | 2017-11-15 | Advanced Risc Mach Ltd | Tracing of exception handling events |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10223436B2 (en) * | 2016-04-27 | 2019-03-05 | Qualcomm Incorporated | Inter-subgroup data sharing |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
CN111310893B (zh) | 2016-08-05 | 2023-11-21 | 中科寒武纪科技股份有限公司 | 一种用于执行神经网络运算的装置及方法 |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
US11204867B2 (en) * | 2017-09-29 | 2021-12-21 | Intel Corporation | PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory |
US11263143B2 (en) | 2017-09-29 | 2022-03-01 | Intel Corporation | Coherent accelerator fabric controller |
US10733103B2 (en) | 2017-12-13 | 2020-08-04 | International Business Machines Corporation | Non-blocking directory-based cache coherence |
US11119927B2 (en) | 2018-04-03 | 2021-09-14 | International Business Machines Corporation | Coordination of cache memory operations |
US10824567B2 (en) | 2018-12-04 | 2020-11-03 | International Business Machines Corporation | Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead |
US11507379B2 (en) * | 2019-05-31 | 2022-11-22 | Marvell Asia Pte, Ltd. | Managing load and store instructions for memory barrier handling |
US11194574B2 (en) * | 2019-07-25 | 2021-12-07 | Arm Limited | Merging memory ordering tracking information for issued load instructions |
US11449339B2 (en) * | 2019-09-27 | 2022-09-20 | Red Hat, Inc. | Memory barrier elision for multi-threaded workloads |
CN112579174B (zh) * | 2020-12-05 | 2023-01-31 | 西安翔腾微电子科技有限公司 | 一种多周期双发射指令可发射的检测电路及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6691220B1 (en) * | 2000-06-06 | 2004-02-10 | International Business Machines Corporation | Multiprocessor speculation mechanism via a barrier speculation flag |
US6748518B1 (en) * | 2000-06-06 | 2004-06-08 | International Business Machines Corporation | Multi-level multiprocessor speculation mechanism |
CN101542441A (zh) * | 2006-11-22 | 2009-09-23 | 可递有限公司 | 多处理器计算系统中的存储器一致性保护 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07302200A (ja) * | 1994-04-28 | 1995-11-14 | Hewlett Packard Co <Hp> | 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。 |
DE69423206T2 (de) * | 1994-04-28 | 2000-09-07 | Hewlett Packard Co | Rechnervorrichtung mit Mitteln zum Erzwingen der Ausführung von Befehlen in regelmässiger Folge |
US5666506A (en) * | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5881264A (en) * | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
US6029204A (en) * | 1997-03-13 | 2000-02-22 | International Business Machines Corporation | Precise synchronization mechanism for SMP system buses using tagged snoop operations to avoid retries |
US6088771A (en) * | 1997-10-24 | 2000-07-11 | Digital Equipment Corporation | Mechanism for reducing latency of memory barrier operations on a multiprocessor system |
US6122728A (en) * | 1998-02-02 | 2000-09-19 | Compaq Computer Corporation | Technique for ordering internal processor register accesses |
US6065086A (en) | 1998-02-17 | 2000-05-16 | International Business Machines Corporation | Demand based sync bus operation |
US6175930B1 (en) | 1998-02-17 | 2001-01-16 | International Business Machines Corporation | Demand based sync bus operation |
US6484230B1 (en) * | 1998-09-28 | 2002-11-19 | International Business Machines Corporation | Method and system for speculatively processing a load instruction before completion of a preceding synchronization instruction |
JP3858492B2 (ja) * | 1998-12-28 | 2006-12-13 | 株式会社日立製作所 | マルチプロセッサシステム |
US6625720B1 (en) * | 1999-08-17 | 2003-09-23 | Nec Electronics, Inc. | System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs |
US6963967B1 (en) | 2000-06-06 | 2005-11-08 | International Business Machines Corporation | System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture |
US6609192B1 (en) | 2000-06-06 | 2003-08-19 | International Business Machines Corporation | System and method for asynchronously overlapping storage barrier operations with old and new storage operations |
US6728873B1 (en) | 2000-06-06 | 2004-04-27 | International Business Machines Corporation | System and method for providing multiprocessor speculation within a speculative branch path |
US6606702B1 (en) | 2000-06-06 | 2003-08-12 | International Business Machines Corporation | Multiprocessor speculation mechanism with imprecise recycling of storage operations |
US6725340B1 (en) * | 2000-06-06 | 2004-04-20 | International Business Machines Corporation | Mechanism for folding storage barrier operations in a multiprocessor system |
US6625660B1 (en) * | 2000-06-06 | 2003-09-23 | International Business Machines Corporation | Multiprocessor speculation mechanism for efficiently managing multiple barrier operations |
US6460124B1 (en) * | 2000-10-20 | 2002-10-01 | Wisconsin Alumni Research Foundation | Method of using delays to speed processing of inferred critical program portions |
US6795878B2 (en) * | 2000-12-11 | 2004-09-21 | International Business Machines Corporation | Verifying cumulative ordering of memory instructions |
WO2005121948A1 (en) | 2004-06-02 | 2005-12-22 | Sun Microsystems, Inc. | Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor |
US7680989B2 (en) * | 2005-08-17 | 2010-03-16 | Sun Microsystems, Inc. | Instruction set architecture employing conditional multistore synchronization |
TWI348652B (en) | 2005-10-17 | 2011-09-11 | Via Tech Inc | Driver assisted asynchronous command processing |
CN1952900A (zh) | 2005-10-20 | 2007-04-25 | 中国科学院微电子研究所 | 可编程通用多核处理器芯片上处理器之间程序流同步方法 |
US7991981B2 (en) * | 2008-02-01 | 2011-08-02 | International Business Machines Corporation | Completion of asynchronous memory move in the presence of a barrier operation |
US8285937B2 (en) * | 2010-02-24 | 2012-10-09 | Apple Inc. | Fused store exclusive/memory barrier operation |
-
2012
- 2012-02-08 US US13/369,029 patent/US8935513B2/en active Active
- 2012-11-28 US US13/687,306 patent/US9274856B2/en not_active Expired - Fee Related
-
2013
- 2013-01-22 CN CN201380008415.7A patent/CN104106043B/zh active Active
- 2013-01-22 AU AU2013217351A patent/AU2013217351B2/en active Active
- 2013-01-22 GB GB1414381.2A patent/GB2513509B/en active Active
- 2013-01-22 DE DE112013000891.2T patent/DE112013000891T5/de not_active Ceased
- 2013-01-22 SG SG11201402452VA patent/SG11201402452VA/en unknown
- 2013-01-22 WO PCT/IB2013/050538 patent/WO2013118008A1/en active Application Filing
-
2014
- 2014-05-27 IL IL232812A patent/IL232812A/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6691220B1 (en) * | 2000-06-06 | 2004-02-10 | International Business Machines Corporation | Multiprocessor speculation mechanism via a barrier speculation flag |
US6748518B1 (en) * | 2000-06-06 | 2004-06-08 | International Business Machines Corporation | Multi-level multiprocessor speculation mechanism |
CN101542441A (zh) * | 2006-11-22 | 2009-09-23 | 可递有限公司 | 多处理器计算系统中的存储器一致性保护 |
Also Published As
Publication number | Publication date |
---|---|
IL232812A (en) | 2017-06-29 |
GB2513509B (en) | 2015-01-14 |
US20130205120A1 (en) | 2013-08-08 |
US20130205121A1 (en) | 2013-08-08 |
AU2013217351B2 (en) | 2016-04-28 |
SG11201402452VA (en) | 2014-06-27 |
WO2013118008A1 (en) | 2013-08-15 |
GB201414381D0 (en) | 2014-09-24 |
CN104106043A (zh) | 2014-10-15 |
AU2013217351A1 (en) | 2014-08-14 |
US9274856B2 (en) | 2016-03-01 |
IL232812A0 (en) | 2014-07-31 |
GB2513509A (en) | 2014-10-29 |
DE112013000891T5 (de) | 2014-10-16 |
US8935513B2 (en) | 2015-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104106043B (zh) | 用于包括屏障指令的指令序列的处理器性能改进 | |
CN108885583B (zh) | 高速缓存存储器访问 | |
CN104106061B (zh) | 多处理器数据处理系统以及其中的方法、高速缓存存储器和处理单元 | |
TWI637265B (zh) | 支援不同優先順序之異動性儲存器存取之方法、單元、系統及電腦程式產品 | |
US6154816A (en) | Low occupancy protocol for managing concurrent transactions with dependencies | |
US7085898B2 (en) | Coherency management for a “switchless” distributed shared memory computer system | |
US6085276A (en) | Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies | |
US6108752A (en) | Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency | |
US6122714A (en) | Order supporting mechanisms for use in a switch-based multi-processor system | |
US6101420A (en) | Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories | |
US6014690A (en) | Employing multiple channels for deadlock avoidance in a cache coherency protocol | |
US7318126B2 (en) | Asynchronous symmetric multiprocessing | |
US10216519B2 (en) | Multicopy atomic store operation in a data processing system | |
US20170293559A1 (en) | Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation | |
Strauss et al. | Uncorq: Unconstrained snoop request delivery in embedded-ring multiprocessors | |
CN112955876A (zh) | 具有对写入操作的改进处理的用于数据处理网络的i/o相干请求节点 | |
US10437725B2 (en) | Master requesting missing segments of a cache line for which the master has coherence ownership | |
US8756378B2 (en) | Broadcast protocol for a network of caches | |
US9367461B2 (en) | Ordering constraint management within coherent memory systems | |
US20050060383A1 (en) | Temporary storage of memory line while waiting for cache eviction | |
US11615024B2 (en) | Speculative delivery of data from a lower level of a memory hierarchy in a data processing system | |
JP2003167782A (ja) | 二重化コントローラ構成ディスク記憶システム向けコントローラ、及び同コントローラが二重化されたディスク記憶システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |