CN114430819A - 禁止高速缓存的写操作 - Google Patents
禁止高速缓存的写操作 Download PDFInfo
- Publication number
- CN114430819A CN114430819A CN202080066473.5A CN202080066473A CN114430819A CN 114430819 A CN114430819 A CN 114430819A CN 202080066473 A CN202080066473 A CN 202080066473A CN 114430819 A CN114430819 A CN 114430819A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- cache
- interconnect
- processing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
-
- 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
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种数据处理系统包括耦合到系统互连的多个处理单元,该系统互连包括广播地址互连和数据互连。处理单元包括执行存储器访问指令的处理器核以及耦合到处理器核的高速缓存,高速缓存被配置成存储用于由处理器核访问的数据。所述处理单元被配置为在所述地址互连上广播针对耦合到所述系统互连的目的地装置的禁止高速缓存的写入请求和写入数据。在各个实施例中,可以在地址互连上的相同或不同请求中传送初始禁止高速缓存的请求和写入数据。
Description
背景技术
本发明总体上涉及数据处理系统,并且具体涉及数据处理系统中的写入操作。更具体地,本发明涉及数据处理系统中的禁止高速缓存(cache-inhibited)的写入操作。
在共享存储器多处理器(MP)数据处理系统中,系统中的多个处理器中的每一者一般可存取和修改存储在共享存储器中的数据。为了减少对存储在共享存储器中的数据的存取等待时间,处理器通常配备有高速本地高速缓存,所述高速本地高速缓存缓冲从共享存储器检索的可能由处理器存取的数据。处理器的不同本地高速缓存中保存的数据的相干视图通过相干协议的实现来维持。
在此类共享存储器MP系统中,通常将地址空间中的某些地址指定为禁止高速缓存的(非可高速缓存的),例如,通过共享存储器中的页表中的适当设置。与这些禁止高速缓存地址相关联的数据对于高速缓存在处理器的本地高速缓存中不合格。通过限制禁止高速缓存地址的数据的高速缓存,大大简化对应存储器位置的内容的单个相干(coherent)视图的维护,因为与禁止高速缓存地址相关联的数据的修改不需要使驻留在处理器的本地高速缓存中的数据的任何较旧副本无效。
发明内容
在一个或多个实施例中,通过在数据处理系统的地址互连上广播写入数据来加速对禁止高速缓存地址的写入。
例如,在至少一个实施例中,数据处理系统包括耦合到系统互连的多个处理单元,系统互连包括广播地址互连和数据互连。处理单元包括执行存储器访问指令的处理器核以及耦合到处理器核的高速缓存,高速缓存被配置成存储用于由处理器核访问的数据。所述处理单元被配置为在所述地址互连上广播针对耦合到所述系统互连的目的地装置的禁止高速缓存写入请求和写入数据。在各个实施例中,可以在地址互连上的相同或不同请求中传送初始高速缓存禁用请求和写入数据。
附图说明
图1是根据一个实施例的说明性数据处理系统的高级框图;
图2是根据一个实施例的图1的数据处理系统内的目的地装置的更详细的视图;
图3是根据一个实施例的数据处理系统的系统互连上的示范性操作的时间-空间图;
图4是现有技术的方法的高级逻辑流程图,通过该方法,非可高速缓存单元(NCU)在数据处理系统的系统互连上发出禁止高速缓存(CI)写入请求;
图5是目的地装置通过其服务CI写入请求的现有技术方法的高级逻辑流程图;
图6A-6C分别示出根据现有技术的CI写入请求、相干响应消息和数据分组;
图7是根据一个实施例的NCU在数据处理系统的系统互连上发出CI写入请求的示范性方法的高级逻辑流程图;
图8是根据一个实施例的目的地装置服务CI写入请求的示范性方法的高级逻辑流程图;
图9A-9B分别示出根据一个实施例的CI写入请求和相干响应消息;
图10是根据另一实施例的示范性方法的高级逻辑流程图,通过该示范性方法,NCU在数据处理系统的系统互连上发出CI写入请求;
图11是根据另一实施例的示范性方法的高级逻辑流程图,通过该示范性方法,目的地装置为CI写入请求提供服务;
图12A至12D分别示出根据另一实施例的用于CI写入操作的第一请求、第一相干响应消息、第二请求和第二相干响应消息;以及
图13是示范性设计流程的框图。
具体实施方式
现在参考附图并且具体参见图1,示出了根据一个实施例的数据处理系统100的高级框图。如图所示,数据处理系统100包括用于处理数据和指令的多个处理单元102(至少包括处理单元102a-102b)。处理单元102被耦合以用于与系统互连104通信,该系统互连104用于在附接的装置之间传送地址、数据和控制信息。在优选实施例中,系统互连104包括分叉的地址和数据互连。另外优选的是,如下文参见图3进一步描述的传达请求和相干响应的地址互连是广播互连,诸如地址总线,其向所有附连装置传达所有请求和相干响应。相反,如果数据互连是支持数据的直接源到目的地通信的点对点互连,诸如交换机,则是优选的。
在所描绘的实施例中,耦合到系统互连104的装置不仅包括处理单元102,还包括提供到共享系统存储器108的接口的存储器控制器106和一个或多个主机桥110,每个主机桥提供到相应的夹层总线112的接口。夹层总线112进而为附加的未示出的装置的附接提供插槽,附加的未示出的装置可以包括网络接口卡、I/O适配器、非易失性存储器、非易失性存储装置适配器、附加的总线桥等。
如图1中进一步示出的,每个处理单元102(其可以实现为单个集成电路)包括用于处理指令和数据的一个或多个处理器核120(其仅显式地示出了一个处理器核)。每个处理器核120包括用于提取和排序用于执行的指令的指令排序单元(ISU)122、用于执行从ISU122分派的指令的一个或多个执行单元124、以及用于临时缓冲数据和控制信息的一组寄存器123。由执行单元124执行的指令包括存储器存取指令,例如读取和写入与可高速缓存和不可高速缓存地址相关联的数据的加载和存储指令。
每个处理器核120进一步包括L1存储队列(STQ)127和加载单元128,用于分别管理与所执行的存储和加载指令相对应的存储和加载请求的完成。在一个实施方式中,L1 STQ127可以被实现为包含多个队列条目的先进先出(FIFO)队列。因此,在对应存储指令的执行时将存储请求加载到L1 STQ 127的“顶部”条目中以确定目标地址,并且当存储请求到达L1STQ 127的“底部”或“提交”(commit)条目时发起存储请求。
重要的是要注意,本申请在“指令”(诸如加载和存储指令)与“请求”之间做出区分。加载和存储“指令”在本文中定义为执行单元的输入,其包括识别指令类型的请求代码(操作码)和指定待访问的数据和/或其地址的一个或多个操作数。加载和存储“请求”在此被定义为至少指定有待访问的数据的目标地址的在指令执行之后生成的数据和/或信号。因此,加载和存储请求可以从处理器核120传输到存储器系统以发起数据访问,而加载和存储指令则不是。
处理器核120的操作由多级易失性存储器层级支持,所述多级易失性存储器层级在其最低级处具有共享系统存储器108,并且在其较高级处具有两级或两级以上高速缓存,在说明性实施例中,所述高速缓存包括L1高速缓存126和L2高速缓存130。如在其他共享存储器多处理器数据处理系统中,存储器层级的可高速缓存内容一般可由在数据处理系统100的任何处理单元102中的任何处理器核120中执行的执行线程访问和修改。
根据一个实施例,L1高速缓存126被实施为直存储高速缓存,意味着相对于其他处理器核120的高速缓存相干点位于L1高速缓存126下方,并且在所描绘的实施例中,位于L2高速缓存130中的存储处。因而,L1高速缓存126不维持其高速缓存行的真实高速缓存相干状态(例如,修改、独占、共享、无效),而仅维持有效/无效位。因为L1高速缓存126被实施为直存储高速缓存,所以存储请求首先相对于L1高速缓存126中的相关联的处理器核120完成,然后在全系统相干的点处相对于其他处理单元102完成,其在所描绘的实施例中是L2高速缓存130。
如图1进一步所示,L2高速缓存130包含存储阵列和目录140,其存储与它们相应的存储器地址和相干状态相关联的指令和数据的高速缓存行。L2高速缓存130还包括多个读取要求(RC)状态机142a-142n,用于独立地和同时地服务于从相关联的处理器核120接收的可高速缓存的存储器访问请求。RC机器142经由负载总线160、有序L2负载队列(LDQ)161和命令总线162接收来自处理器核120中的LD单元128的核负载请求。类似地,RC机器142经由存储总线164、有序L2存储队列(STQ)166和命令总线162接收来自处理器核120中的LISTQ127的核存储请求。
L2高速缓存130进一步包括多个探听(SN)状态机144a-144n,用于服务于经由系统互连104和探听总线170从其他处理单元102接收的可高速缓存访问和其他请求。SN机144和RC机142各自连接到反向无效总线172,任何SN机144或RC机142可通过所述反向无效总线172将高速缓存线的无效发信号到处理器核120。
在至少一个实施例中,L2高速缓存130被构造成使得RC机器142和SN机器144中的至多单个机器可以是活动的,从而在任何一个时间服务于针对给定目标高速缓存行地址的请求。因此,如果在目标为相同高速缓存行的第一请求已经由活跃RC机142或SN机144服务的同时接收到第二请求,则稍后的第二请求必须被排队或拒绝,直到完成第一请求的服务并且活跃状态机返回到空闲状态。
L2高速缓存130附加地包括非可高速缓存单元(NCU)146,用于服务从处理器核120接收到的禁止高速缓存(CI)存储器访问请求。NCU 146包括多个NCU存储(NST)状态机150a-150n,该NST状态机150a-150n用于独立地和同时地服务于从相关联的处理器核120接收的以非可高速缓存地址为目标的存储器访问请求。NST机器150经由存储总线164和有序NCU存储队列(NSQ)148从处理器核120中的LISTQ127接收核CI写入请求。另外,NCU 146包括经由加载总线160从处理器核120中的LD单元128接收核CI读取请求的多个NCU加载(NLD)状态机152a-152n。
本领域技术人员将另外理解,图1的数据处理系统100可以包括许多附加的未图示组件,诸如互连桥、非易失性存储器、用于连接到网络或附连装置的端口等。因为此类附加组件对于理解所描述的实施例不是必需的,所以它们在图1中未示出或在此进一步讨论。然而,还应当理解,本文描述的增强可应用于不同架构的数据处理系统,并且决不限于图1所示的通用数据处理系统架构。例如,尽管图1示出了包括用于服务禁止高速缓存的请求的不同NCU的实施例,但其他架构可以利用其他逻辑(诸如L2高速缓存130内的高速缓存逻辑)服务禁止高速缓存的请求(诸如CI写入)。
现在参见图2,描绘了根据一个实施例的目的地装置200的更详细的视图。目的地装置200可以是耦接到系统互连104的可以用作CI写入请求的目的地(目标)的任何装置。例如,在图1的实施例中,目的地装置200可以是主机桥110或存储器控制器106。
在所描绘的实施例中,目的地装置200耦合到形成系统互连104的地址互连202和数据互连204两者。如上所述,地址互连202优选地是诸如总线之类的广播互连,意味着每个附连装置对在地址互连202上传输的所有请求和相干消息具有可见性。另一方面,数据互连204优选地被实现为点对点互连,意味着当数据分组被路由时,数据分组可以经过多个(但通常不是全部)监听器,只有操作的目的地接收和处理在数据互连204上传输的数据分组。在所描绘的实施例中,目的地装置200除了其他组件之外还包括请求队列210,所述请求队列210具有用于缓冲在地址互连202上接收到的请求的多个队列条目212a-212n。每个队列条目212至少包括用于缓冲请求的目的地(目标)地址的地址字段214、用于缓冲请求类型(例如,读、写等)的指示的请求字段216、以及用于缓冲与请求相关联的数据的数据字段218。如图2中进一步解说的,目的地装置200还包括能够从地址互连202和数据互连204中选择置于数据字段218中的信息的选择逻辑220(被表示为复用器)。
现在参见图3,展示了根据一个实施例的数据处理系统100的系统互连104上的示范性操作的时间-空间图。当主机300(诸如RC机器142或NST机器150)在数据处理系统100的地址互连202上发出请求302时,操作开始。请求302优选地包括指示期望访问的类型的事务类型和指示要由请求访问的资源的资源标识符(例如,目标真实地址)。请求的常见类型优选地包括以下表1中列出的那些。
表1
请求302被诸如目的地装置200(例如,主机桥110和存储器控制器106)和L2高速缓存130的SN机144之类的监听器304接收。通常,除了一些例外,在与发起请求302的主机相同的L2高速缓存130中的SN机144不侦听该请求302(即,通常没有自侦听),因为请求302仅在请求302不能由处理单元102内部服务时才在地址互连202上传输。
响应于请求302的接收,监听器304可在地址互连202上提供相应的部分响应(Presp)306,其中每个Presp 306表示至少该监听器304对请求302的相干响应。目的地装置200例如基于目的地装置200是否对请求地址负责和目的地装置200是否具有可用于服务请求的资源来确定其部分响应306(如果有的话)。L2高速缓存130可以基于例如其L2存储阵列和目录140的可用性、处理该请求的资源的可用性(包括可用SN机器144)以及与L2存储阵列和目录140中的请求地址相关联的高速缓存状态来确定其部分响应306。
不同监听器304的部分响应由响应逻辑308的一个或多个实例以阶段或一次全部逻辑地组合,以确定对请求302的系统范围的组合响应(Cresp)310。响应逻辑308经由地址互连202向主机300和监听器304提供组合的响应310,以指示对请求302的系统范围的响应(例如,成功、重试等)。如果组合响应310指示请求302的成功,则组合响应310可以指示例如写入数据的目的地(如果适用)、所请求的存储块将由主机300缓存的高速缓存状态(如果适用)、和/或是否需要“清除”操作(如果适用)使一个或多个高速缓存126、130中的所请求的存储块无效。
响应于接收到组合的响应310,主机300和监听器304中的一个或多个通常执行一个或多个操作,以便服务请求302。这些操作可以包括向主机300提供数据、无效或以其他方式更新高速缓存在一个或多个高速缓存126、130中的数据的高速缓存状态、执行castout(抛出)操作、向系统存储器108或I/O装置写入数据等。如下面进一步讨论的,可以在由响应逻辑210生成组合响应310之前或之后向主机300传送数据或从主机300传送数据。通常,对于大多数操作,经由数据互连204发送与系统互连104上的操作相关联的数据。然而,在至少一些实施例中,对于一些操作,经由地址互连202传输数据,如在此进一步描述的。
由监听器304响应于请求而提供的部分响应和响应于请求和/或其组合响应而执行监听器的操作可取决于该监听器相对于请求指定的目标地址是否是相干最高点(HPC)、相干最低点(LPC)或既不是相干最高点(HPC)、也不是相干最低点(LPC)。LPC在本文中定义为充当用于存储器块的存储库的存储器装置或I/O装置。在不存在用于存储器块的HPC的情况下,LPC保持存储器块的真实映像并且具有授权或拒绝生成存储器块的附加高速缓存副本的请求的权限。对于图1和2的数据处理系统实施例中的典型请求,LPC将是用于系统存储器108的存储器控制器106,其充当所引用的存储块或负责存储器映射I/O地址的主机桥110的存储库。HPC在本文中被定义为唯一地标识的装置,其高速缓存块的真实映像(其可以或可以不与LPC处的对应存储器块相干)并且具有授权或拒绝修改存储器块的请求的权限。描述性地,HPC还可以响应于不修改存储器块的操作而向请求者提供存储器块的共享副本。由此,对于图1和2的数据处理系统实施例中的典型请求,HPC(如果有的话)将是L2高速缓存230。虽然可以利用其他指示符来为存储器块指定HPC,但是本发明的优选实施例为L2高速缓存130的目录内利用所选择的高速缓存状态的存储器块指定HPC(如果有的话)。
仍参见图3,用于在请求302中引用的存储器块的HPC(如果有的话)或者在没有HPC的情况下,存储器块的LPC优选地具有在保护窗口312a期间响应于请求402而保护存储器块的相干所有权转移的责任。在图3所示的示范性场景中,监听器304是由请求302的请求地址指定的用于存储器块的HPC,如果必要的话,该监听器304在保护窗口312a期间保护被请求的存储器块的所有权到主机300的转移,该保护窗口312a至少从监听器304确定其部分响应306的时间开始延伸,直到监听器304接收到组合响应310(以及可能此后接收)。在保护窗口312a期间,监听器304通过向指定相同请求地址的其他请求提供部分响应306(例如,重试预发)来保护所有权的转移,防止其他主装置获得相干所有权,直到这样的所有权被成功转移到主装置300为止。在接收到组合响应310之后,主机300同样可以发起保护窗口312b以保护其对请求302中请求的存储器块的所有权。
因为监听器304均具有用于处理上述CPU和I/O请求的有限资源,所以若干不同级别的部分响应和对应的组合响应是可能的。例如,如果负责所请求的存储器块的存储器控制器106具有可用于处理请求的队列条目,则存储器控制器106可用指示其能够充当用于请求的LPC的部分响应来作出响应。另一方面,如果存储器控制器106不具有可用于处理所述请求的队列条目,则存储器控制器106可用指示是用于存储器块的LPC但当前无法服务于所述请求的一个或一个以上部分响应来作出响应。类似地,L2高速缓存130可能需要可用的SN机器144并访问L2存储阵列和目录140,以便处理监听请求302。不存在对这些资源中的任(或两者)的访问导致部分响应(和对应的CR)发信号通知由于不存在所需的资源(例如,重试)而无法服务请求。
现在参见图4,存在现有技术方法的高级逻辑流程图,通过该方法,非可高速缓存单元(NCU)在数据处理系统的系统互连上发出禁止高速缓存(CI)写入请求。为了促进理解,将参见图1的示范性数据处理系统100和图3中所描绘的示范性操作来描述图4的现有技术方法。
图4的过程开始于块400,然后前进到块402,其示出了NCU 146的NST机器150经由存储总线164和NSQ148从相关联的处理器核120接收CI写入请求。CI写入请求例如通过处理器核120执行以禁止高速缓存的存储器的区域为目标的对应存储指令来生成,并且至少包括目标地址和写入数据。
响应于接收到CI写入请求,NST机器150在地址互连202上发出CI写入请求(块404)。如图6A所示,CI写入请求600至少包括将请求标识为CI写入请求的请求类型字段602、标识发出CI写入请求的处理单元102、NCU 146和NST机器150的主标签字段604、以及指定由相关联的处理器核120提供的目标地址的地址字段606。
响应于CI写入请求,数据处理系统100内的监听器304提供相应的部分响应(Presp)306,如上文参见图3所描述的。这些部分响应306在逻辑上组合,并且响应逻辑308的实例(例如,驻留在发布处理单元102中)基于部分响应306形成用于CI写入请求的组合响应(Cresp)310。高速缓存监听器通常针对禁止高速缓存的请求生成空部分响应,并且不针对禁止高速缓存的请求执行附加处理。
图6B示出了可以用于Presp 306和Cresp 310两者的相干响应610的格式的示例。相干响应610包括主标签字段612,该主标签字段612标识发出CI写入请求的处理单元102、NCU 146和NST机器150。此外,相干响应610包括目的地标签字段614,对于CI写入请求的Presp 306和Cresp 310,目的地标签字段614指示作为CI写入数据(例如,存储器控制器106或主机网桥110)的目的地的监听器304(并且更精确地,目的地装置200和队列条目212)。对于Presp 306,目的地标签字段614不被不是CI写入数据的最终目的地的监听器304改变。相干响应610还包括响应字段616,其对Presp 306指示监听器304的累积的相干响应(即,监听器304对请求的部分响应可在响应字段616内被一起或(OR)),其对Cresp 310基于部分响应306指示对CI写入请求的全系统相干响应。在用于CI写入请求的Cresp 310的响应字段616中指示的可能的相干响应包括例如成功或重试。
返回到图4,在框406处,发出CI写入请求的NST机器150监视相关联的Cresp 310(如由相干响应610的主标签字段612所标识的),并且确定Cresp 310的响应字段616是否指示CI写入请求的成功。如果不是(例如,Cresp 310在响应字段616中指示重试),则过程返回到块404,其示出了NST机器150在地址互连202上重新发布CI写入请求。响应于NST机器150替代地在框406确定Cresp 310指示CI写入请求的成功,NST机器150从Cresp 310的目的地标签字段614提取标识相关目的地装置200的目的地标签和队列条目212(框408)。NST机器150首先形成用于CI写入的数据分组(框410)。如图6C所示,数据分组620包括目的地标签字段622,其包括从Cresp 310的目的地标签字段614提取的目的地标签信息,以及包括从处理器核120接收的写入数据的数据字段624。如框410中进一步指示的,NST机器150然后经由点对点数据互连204将数据分组传输到相关目的地装置200。此后,图4的过程在框412处结束。
现在参见图5,示出了现有技术的方法的高级逻辑流程图,通过该方法,目的地装置200(例如,存储器控制器106或主机桥110)服务CI写入请求。图5的过程在框500处开始,且接着进行到框502,其说明目的地装置200接收在地址字段606内指定目的地装置200负责的目标地址的CI写入请求600。响应于接收到CI写入请求600,目的地装置200确定队列条目212在其请求队列210中是否可用于分配给CI写入请求(框504)。如果否,则目的地装置200在响应字段616中提供指示重试的Presp 306(块506)。Presp306将使响应逻辑308的相关实例生成Cresp 310,Cresp 310还在响应字段616中指示重试。在框506之后,图5的过程在框520处结束。
返回至块504,响应于确定条目212在请求队列210中可用于CI写入请求,目的地装置200在响应字段616中提供指示成功的Presp 306,并且通过将CI写入请求600的地址字段606中指定的地址加载到地址字段214中并且将请求类型字段602的内容的指示加载到请求字段216中而将CI写入请求入队到请求队列210的可用条目212中(块510)。如框512处所示,目的地装置200随后监视是否经由数据互连204接收到CI写入请求的数据分组620。响应于接收到CI写入请求的数据分组620,由目的地标签字段622标识的目的地装置200从数据字段624提取数据并且将数据加载到数据字段218中(框514)。目的地装置200接着例如通过将数据存储到系统存储器108中或将数据写入到附接的I/O装置来处理CI写入请求(框516)。此后,目的地装置200释放队列条目212(框518),且图5的过程在框520处结束。
本公开认识到,执行如由图4-5表示的CI写入操作的现有技术过程是低效的,因为分配给CI写入操作的队列条目212保持被占用,但是在数据分组620的分配和后续接收之间没有执行有用工作。本公开认识到,因为诸如队列条目212的系统资源必然是有限的,所以优选的是,如果通过减少这样的资源被非生产性等待消耗的时间在CI写入操作中更有效地利用这些有限的资源。本公开还认识到,在许多情况下,针对禁止高速缓存的写入操作的数据传递的等待时间可以确定程序的关键性能路径,这可以例如通过CI写入操作来发起由I/O装置的处理。因而,本申请公开了用于通过使用广播地址互连202来传送CI写入操作的写入数据来加速CI写入操作的多种技术。参见图7、8和9A-9B公开了采用多跳CI写入请求经由地址互连202传送写入数据的第一实施例。参见图10、11和12A-12D公开了利用地址互连202上的单独请求来传送写入数据的第二实施例。
现在参见图7,示出了根据第一实施例的NCU在数据处理系统的系统互连上发出CI写入请求的示范性方法的高级逻辑流程图。为了促进理解,将参见图1的示范性数据处理系统100和图3中所描绘的示范性操作来描述图7的方法。
图7的过程开始于框700,然后前进到框702,其示出NCU 146的NST机器150经由存储总线164和NSQ 148从相关联的处理器核120接收CI写入请求。CI写入请求例如通过处理器核120执行以禁止高速缓存的存储器的区域为目标的对应存储指令来生成,并且至少包括目标地址和写入数据。
响应于接收到CI写入请求,NST机器150将CI写入请求广播到经由地址互连202耦合到系统互连104的所有监听器304(框704)。如图9A所示,CI写入请求900至少包括将请求标识为CI写入请求的请求类型字段902、标识发出CI写入请求的处理单元102、NCU 146和NST机器150的主标签字段904、以及指定从相关联的处理器核120接收的目标地址的地址字段906。与图6A的现有技术CI写入请求600不同,图9A的CI写入请求900附加地在数据字段910中包括针对CI写入操作的写入数据,在一些实施例中,可以在广播地址互连202上的附加节拍中传递数据字段910。
如前所述,响应于CI写入请求,数据处理系统100内的监听器304提供相应的部分响应(Presp)306,如上文参见图3所描述的。这些部分响应306然后由响应逻辑308的实例(例如,驻留在发布处理单元102中)在逻辑上组合以形成用于CI写入请求的组合响应(Cresp)310。高速缓存监听器通常针对禁止高速缓存的请求生成空部分响应并且不执行附加处理。
图9B示出了根据一个实施例的可以用于CI写入操作的Presp 306和Cresp 310两者的相干响应920的格式的示例。相干响应920包括主标签字段922,该主标签字段922标识发出CI写入请求的处理单元102、NCU 146和NST机器150。此外,相干响应610包括目的地标签字段924,对于CI写入请求的Presp 306和Cresp 310,目的地标签字段924指示作为CI写入数据(例如,存储器控制器106或主机桥110)的目的地的监听器304(并且更精确地,目的地装置200和队列条目212)。对于Presp 306,目的地标签字段614不被不是CI写入数据的最终目的地的监听器304改变。在图7-8中应当观察到,该目的地标记字段924不用于引导CI写入操作的写入数据的递送。相干响应610还包括响应字段926,对于Presp 306,响应字段926指示监听器304的累积的相干响应(即,监听器304对请求的部分响应可在响应字段616内被或(OR)在一起),并且对于Cresp 310,响应字段926指示对CI写入请求的全系统相干响应。如在现有技术中,在响应字段926中指示用于CI写入请求的Cresp 310的可能的相干响应包括例如成功或重试。
返回到图7,在框706处,发出CI写入请求的NST机器150监视相关联的Cresp 310(如由相干响应920的主标签字段922所标识的),并且确定Cresp 310的响应字段926是否指示CI写入请求的成功。如果否(例如,Cresp 310在响应字段926中指示重试),则过程返回到框704,其示出NST机器150在地址互连202上重新发布CI写入请求。相反,响应于NST机器150在框706确定Cresp 310指示CI写入请求的成功,NST机器150被解除分配,并且图7的过程在框708结束。因此,在该实施例中,NST机器150不执行与图4中给出的现有技术方法的块408-410相对应的任何步骤。
现在参见图8,示出了根据第一实施例的目的地装置200(例如,存储器控制器106或主机桥110)服务CI写入请求的示范性方法的高级逻辑流程图。图8的过程在框800处开始,且接着进行到框802,框802说明目的地装置200接收在地址字段906内指定目的地装置200负责的目标地址的CI写入请求900。响应于接收到CI写入请求900,目的地装置200确定队列条目212在其请求队列210中是否可用于分配给CI写入请求900(框804)。如果否,则目的地装置200在响应字段926中提供指示重试的Presp 306(块806)。Presp 306将使响应逻辑308生成Cresp 310,Cresp 310还在响应字段926中指示重试。在框806之后,图8的过程在框820处结束。
返回至框804,响应于确定条目212在请求队列210中可用于分配给CI写入请求,目的地装置200在响应字段926中提供指示成功的Presp 306,并且通过将CI写入请求900的地址字段906中指定的地址加载到地址字段214中将CI写入请求入队到可用条目212中,将请求类型字段902的内容加载到请求字段216中,以及经由选择逻辑220将数据字段910的内容的指示加载到数据字段218中(框810)。与要求目的地装置200等待接收单独数据分组620的图5的处理相反,在图8的处理中,目的地装置200可例如通过将来自数据字段218的数据存储到系统存储器108中或将数据从数据字段218写入到附接的I/O装置来立即处理CI写入请求(框812)。此后,目的地装置200释放分配给CI写入请求的队列条目212(框814),并且图8的过程在框820处结束。
现在参见图10,描绘了根据第二实施例的示范性方法的高级逻辑流程图,通过该示范性方法,NCU在数据处理系统的系统互连上发出CI写入请求。为了促进理解,将参见图1的示范性数据处理系统100来描述图10的方法。
图10的过程开始于块1000,然后前进到块1002,块1002图示了NCU 146的NST机器150经由存储总线164和NSQ 148从相关联的处理器核120接收CI写入请求。CI写入请求例如通过处理器核120执行以禁止高速缓存的存储器的区域为目标的对应存储指令来生成,并且至少包括目标地址和写入数据。
响应于接收到CI写入请求,NST机器150在地址互连202上广播第一请求(框1004)。如图12A所示,在示范性实施例中,第一请求1200至少包括将请求标识为CI写入请求的请求类型字段1202、标识发出CI写入请求的处理单元102、NCU 146和NST机器150的主标签A字段1204、以及指定从相关联的处理器核120接收的目标地址的地址字段1206。因此,在该实施例中,第一请求1200可以与图6A的现有技术CI写入请求600相同或相似。
如前所述,响应于第一请求1200,数据处理系统100内的监听器304提供部分响应(Presp)306(其可以是空响应),如上文参见图3所描述的。这些部分响应306然后被逻辑组合,并且响应逻辑308的实例(例如,驻留在发布处理单元102中)基于Presp 306形成用于CI写入请求的组合响应(Cresp)310。
图12B示出可用于为第一请求1200生成的Presp 306和Cresp 310两者的第一相干响应1210的示范性格式。相干响应1210包括主标签A字段1212,其指定第一请求1200的主标签A字段1204的内容。此外,第一相干响应1210包括目的地标签字段1214,对于第一请求1200的Presp 306和Cresp 310,目的地标签字段1214指示作为CI写入数据(例如,存储器控制器106或主机桥110)的目的地的监听器304(更准确地,目的地装置200和队列条目212)。对于Presp 306,目的地标签字段1214不被不是CI写入数据的最终目的地的监听器304改变。在图10-11中应当观察到,该目的地标记字段1214不用于引导CI写入操作的数据递送。相干响应1210还包括响应字段1216,对于Presp 306,响应字段1216指示监听器304的累积的相干响应(即,监听器304对请求的部分响应可以在响应字段616内被OR在一起),并且对于Cresp 310,响应字段1216指示对第一请求1200的全系统相干响应。如在现有技术中,在用于第一请求1200的Cresp 310的响应字段1216中指示的可能的相干响应包括例如成功或重试。
返回到图10,在框1006处,NST机器150在地址互连202上与由NST机器150接收第一请求1200的Cresp 310异步地广播第二请求。如图12C所示,在示范性实施例中,第二请求1220至少包括将请求标识为CI写入请求的请求类型字段1222、主标签A字段1224和指定CI写入请求的写入数据的数据字段1226。在优选实施例中,主标签A字段1224在也标识发出第二请求1220的处理单元102、NCU 146和NST机器150的同时,优选地与主标签A字段1204的内容不同,并且因此允许相关目的地装置200在提供CI写入请求的目标地址的第一请求1200与提供CI写入请求的写入数据的第二请求1220之间进行区分。地址互连202优选地确保第一请求1200和第二请求1220保持有序,使得目的地装置200在第二请求1220之前接收第一请求1200。
图8的框1008示出NST机器150监视第一请求1200的Cresp 310(如由相干响应1210的主标签A字段1210所标识的)并且确定Cresp 310的响应字段1216是否指示第一请求1200的成功。如果没有(例如,Cresp 310指示响应字段1216中的重试),则过程转到方框1010,其示出了NST机器150在方框1004处重新发布第一请求1200之前等待接收第二请求1220的Cresp 310。然而,如果NST机器150在框1008处确定第一请求1200的Cresp 310指示成功,则NST机器150等待接收第二请求1220的Cresp 310,这可以采取图12D的相干响应1230的形式(框1012)。在该示例中,相干响应1230包括分别对应于上述字段1212、1214和1216的主标签A字段1232、目的地标签字段1234和响应字段1236。响应于接收到第二请求1220的Cresp,NST机器150被解除分配,并且图10的过程在块1020结束。
现在参见图11,示出了根据第二实施例的目的地装置200(例如,存储器控制器106或主机桥110)服务CI写入请求的示范性方法的高级逻辑流程图。图11的过程在框1100处开始,且接着进行到框1102,其说明目的地装置200接收在地址字段1206内指定目的地装置200负责的目标地址的第一请求1200。响应于接收到第一请求1200,目的地装置200确定队列条目212在其请求队列210中是否可用于分配给CI写入请求(框1104)。如果否,则目的地装置200提供Presp 306,Presp 306在响应字段1216中指示重试(框1106)。Presp 306将使响应逻辑308生成Cresp 310,Cresp 310还在响应字段1216中指示重试。在框1106之后,图11的过程在框1120处结束。
返回至框1104,响应于确定条目212在请求队列210中可用于CI写入请求,目的地装置200在响应字段1216中提供指示成功的Presp 306,并且通过将第一请求1200的地址字段1206中指定的地址加载到地址字段214中并且将请求类型字段1202的内容的指示加载到请求字段216中,将CI写入请求入队到可用条目212中(框1110)。
如框1112处所示,目的地装置200随后监视在地址互连202上的第二请求1220中的CI写入请求的写入数据的接收。响应于接收到第二请求1220,目的地装置200提供空Presp306,从数据字段1226提取数据,并经由选择逻辑220将数据加载到相关队列条目212的数据字段218中(框1114)。目的地装置200接着例如通过将来自数据字段218的数据存储到系统存储器108中或将来自数据字段218的数据写入到附接的I/O装置来处理CI写入请求(框1116)。此后,目的地装置200释放队列条目212(框1118),并且图11的过程在框1120处结束。
现在参见图13,其中示出了用于例如半导体IC逻辑设计、仿真、测试、布局和制造中的示范性设计流程1300的框图。设计流程1300包括用于处理设计结构或器件以产生上述和本文所示的设计结构和/或器件的逻辑上或其他功能上等效表示的过程、机器和/或机制。由设计流程1300处理和/或生成的设计结构可以在机器可读传输或存储媒质上被编码以包括数据和/或指令,所述数据和/或指令在数据处理系统上执行或以其他方式处理时,生成硬件组件、电路、装置或系统的逻辑上、结构上、机械上或其他功能上的等效表示。机器包括但不限于用于IC设计过程(诸如设计、制造或模拟电路、组件、器件或系统)中的任何机器。例如,机器可以包括:光刻机、用于生成掩模的机器和/或装置(例如,电子束写入器)、用于模拟设计结构的计算机或装置、在制造或测试过程中使用的任何装置、或用于将设计结构的功能等效表示编程到任何介质中的任何机器(例如,用于编程可编程门阵列的机器)。
设计流程1300可以取决于所设计的表示的类型而变化。例如,用于构建专用IC(ASIC)的设计流程1300可以不同于用于设计标准组件的设计流程1300或不同于用于将设计实例化到可编程阵列(例如由Inc.或公司提供的可编程门阵列(PGA)或现场(field)可编程门阵列(FPGA))中的设计流程1300。
图13示出了包括优选地由设计处理1310处理的输入设计结构1020的多个这样的设计结构。设计结构1320可以是由设计过程1310生成和处理以产生硬件装置的逻辑等效功能表示的逻辑模拟设计结构。设计结构1320还可以或者可替换地包括数据和/或程序指令,所述数据和/或程序指令在被设计过程1310处理时生成硬件装置的物理结构的功能表示。无论是否表示功能和/或结构设计特征,设计结构1320可以使用诸如由核心开发人员/设计人员实施的电子计算机辅助设计(ECAD)来生成。当编码在机器可读数据传输、门阵列或存储媒质上时,设计结构1320可以由设计过程1310内的一个或多个硬件和/或软件模块访问和处理以仿真或以其他方式在功能上表示例如在本文中示出的那些电子组件、电路、电子或逻辑模块、装置、器件或系统。照此,设计结构1320可以包括文件或其他数据结构,包括人类和/或机器可读源代码、编译结构和计算机可执行代码结构,其在由设计或仿真数据处理系统处理时,在功能上仿真或以其他方式表示电路或其他级别的硬件逻辑设计。这样的数据结构可以包括硬件描述语言(HDL)设计实体或符合和/或兼容低级HDL设计语言(诸如Verilog和VHDL)和/或高级设计语言(诸如C或C++)的其他数据结构。
设计过程1310优选地采用和结合硬件和/或软件模块,所述模块用于合成、转换或以其他方式处理本文所示的组件、电路、器件或逻辑结构的设计/仿真功能等价物以生成可以包含设计结构(例如设计结构1320)的网表1380。网表1380可以包括,例如,表示描述到集成电路设计中的其他元件和电路的连接的电线、分立组件、逻辑门、控制电路、I/O装置、模型等的列表的编译或以其他方式处理的数据结构。可以使用迭代过程来合成网表1380,其中网表1380根据设计规范和装置的参数被重新合成一次或多次。与本文描述的其他设计结构类型一样,网表1380可被记录在机器可读存储介质上或被编程到可编程门阵列中。该介质可以是非易失性存储介质,诸如磁盘或光盘驱动器、可编程门阵列、紧凑型闪存或其他闪存。另外或在替代方案中,该介质可以是系统或高速缓存或缓冲器空间。
设计过程1310可以包括用于处理包括网表1380的各种输入数据结构类型的硬件和软件模块。这样的数据结构类型可以驻留在例如库元件1330内并且包括针对给定制造技术(例如,不同的技术节点,32nm、45nm、100nm等)的常用元件、电路和器件的集合,包括模型、布局和符号表示。数据结构类型还可以包括设计规范1340、表征数据1350、验证数据1360、设计规则1390和测试数据文件1385,测试数据文件1385可以包括输入测试模式、输出测试结果和其他测试信息。设计过程1310可以进一步包括,例如,标准机械设计过程,诸如应力分析、热分析、机械事件模拟、用于诸如铸造、模制和模压成形等操作的过程模拟。机械设计领域的普通技术人员能够理解设计过程1310中使用的可能的机械设计工具和应用的程度而不偏离本发明的范围。设计过程1310还可以包括用于执行标准电路设计过程的模块,例如定时分析、验证、设计规则检查、放置和路由操作等。
设计过程1310采用和结合逻辑和物理设计工具(例如HDL编译器)和模拟模型构建工具以处理设计结构1320连同所描绘的支持数据结构中的一些或全部以及任何附加机械设计或数据(如果适用),以生成第二设计结构1390。设计结构1390以用于机械装置和结构的数据交换的数据格式(例如,以IGES、DXF、Parafolix XT、JT、DRG或用于存储或呈现此类机械设计结构的任何其他合适格式存储的信息)驻留在存储介质或可编程门阵列上。类似于设计结构1320,设计结构1390优选地包括一个或多个文件、数据结构或其他计算机编码的数据或指令,它们驻留在传输或数据存储媒质上并且当由ECAD系统处理时生成在此所示本发明的一个或多个实施例的逻辑上或以其他方式在功能上等效的形式。在一个实施例中,设计结构1390可以包括经编译的可执行HDL仿真模型,所述模型在功能上仿真本文所示的器件。
设计结构1390还可以采用用于集成电路的布局数据交换的数据格式和/或符号数据格式(例如,存储在GDS11(GDS2)、GL1、OASIS、地图文件中的信息、或用于存储此类设计数据结构的任何其他合适的格式)。设计结构1390可以包括信息,例如符号数据、图文件、测试数据文件、设计内容文件、制造数据、布局参数、导线、金属级别、通孔、形状、用于路由通过制造线的数据、以及制造商或其他设计人员/开发人员生产如上文所述和本文所示的器件或结构所需的任何其他数据。设计结构1390然后可以前进到阶段1395,在阶段1395,例如设计结构1390:前进到带出、被发布到制造、被发布到掩模室、被发送到另一设计室、被发送回客户等。
如上所述,在至少一个实施例中,数据处理系统包括耦合到系统互连的多个处理单元,系统互连包括广播地址互连和数据互连。处理单元包括执行存储器访问指令的处理器核以及耦合到处理器核的高速缓存,高速缓存被配置成存储用于由处理器核访问的数据。所述处理单元被配置为在所述地址互连上广播针对耦合到所述系统互连的目的地装置的禁止高速缓存写入请求和写入数据。在各个实施例中,可以在地址互连上的相同或不同请求中传送初始高速缓存禁用请求和写入数据。
虽然已经具体示出和描述了不同实施例,但是本领域技术人员将理解,在不脱离所附权利要求的范围的情况下,可以在其中进行形式和细节上的不同改变,并且这些替代实现方式都落入所附权利要求的范围内。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
进一步,尽管已经关于计算机系统描述了各方面,但应当理解,本发明可替代地实现为包括存储可由数据处理系统处理的程序代码的计算机可读存储装置的程序产品。计算机可读存储装置可包括易失性或非易失性存储器、光盘或磁盘等。然而,如本文中使用的,“存储装置”被具体限定为仅包括法定制品并且排除信号介质本身、瞬态传播信号本身和能量本身。
程序产品可以包括数据和/或指令,所述数据和/或指令在数据处理系统上执行或以其他方式处理时,生成本文所公开的硬件部件、电路、器件或系统的逻辑上、结构上或以其他方式功能上等效的表示(包括仿真模型)。这样的数据和/或指令可以包括硬件描述语言(HDL)设计实体或符合和/或兼容低级HDL设计语言(诸如Verilog和VHDL)和/或更高级设计语言(诸如C或C++)的其他数据结构。此外,数据和/或指令还可以采用用于集成电路的布局数据交换的数据格式和/或符号数据格式(例如,存储在GDS11(GDS2)、GL1、OASIS、地图文件中的信息、或用于存储此类设计数据结构的任何其他合适的格式)。
Claims (16)
1.一种用于数据处理系统的处理单元,所述数据处理系统包括具有广播地址互连和数据互连的系统互连,所述处理单元包括:
执行存储器访问指令的处理器核;
耦合到所述处理器核的高速缓存,其中所述高速缓存被配置为存储用于由所述处理器核存取的数据;以及
其中,所述处理单元被配置为在所述地址互连上广播针对耦合到所述系统互连的目的地装置的禁止高速缓存写入请求和写入数据。
2.根据权利要求1所述的处理单元,其中,所述处理单元在所述地址互连上的第一节拍中广播所述禁止高速缓存的写入请求并且在所述地址互连上的第二节拍中广播所述写入数据。
3.根据权利要求1所述的处理单元,其中,所述处理单元被配置为在所述禁止高速缓存的写入请求内广播所述写入数据。
4.根据权利要求3所述的处理单元,其中,所述处理单元被配置为广播所述禁止高速缓存的写入请求,而不在所述禁止高速缓存的写入请求中指定识别所述目的地装置的目的地标签。
5.根据权利要求1所述的处理单元,其中:
所述禁止高速缓存的写入请求是第一请求;以及
所述处理单元被配置为在所述地址互连上的不同的第二请求中广播所述写入数据。
6.一种数据处理系统,包括:
所述多个处理单元,包括权利要求1所述的处理单元;
所述目的地装置;以及
所述系统互连通信地耦合所述目的地装置和所述多个处理单元。
7.根据权利要求6所述的数据处理系统,其中,所述目的地装置包括所述数据处理系统的系统存储器的存储器控制器。
8.根据权利要求6所述的数据处理系统,其中,所述目的地装置包括互连桥。
9.根据权利要求6所述的数据处理系统,其中所述数据互连是点对点互连。
10.一种在数据处理系统的处理单元中的数据处理的方法,所述数据处理系统的处理单元包括耦接至具有广播地址互连和数据互连的系统互连的多个处理单元,所述方法包括:
所述处理单元从所述处理单元的处理器核接收禁止高速缓存的写入请求和写入数据;以及
响应于接收到所述禁止高速缓存的写入请求,所述处理单元在所述数据处理系统的所述地址互连上广播所述禁止高速缓存的写入请求和所述写入数据。
11.根据权利要求10所述的方法,其中,所述广播包括在所述地址互连上的第一节拍中广播所述禁止高速缓存的写入请求并且在所述地址互连上的第二节拍中广播所述写入数据。
12.根据权利要求10所述的方法,其中,所述广播包括所述处理单元在所述禁止高速缓存的写入请求内广播所述写入数据。
13.根据权利要求12所述的方法,其中,所述广播包括所述处理单元在不在所述禁止高速缓存的写入请求中指定识别所述目的地装置的目的地标签的情况下,广播所述禁止高速缓存的写入请求。
14.根据权利要求10所述的方法,其中:
所述禁止高速缓存的写入请求是第一请求;以及
所述广播包括所述处理单元在所述地址互连上的不同第二请求中广播所述写入数据。
15.根据权利要求10所述的方法,其中,所述目的地装置是包括所述数据处理系统的系统存储器的存储器控制器和互连桥的组中的一个。
16.一种在用于设计、制造或测试集成电路的机器可读储存装置中有形地体现的设计结构,所述设计结构包括根据权利要求1至5中任一项所述的处理单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/588,241 | 2019-09-30 | ||
US16/588,241 US11176038B2 (en) | 2019-09-30 | 2019-09-30 | Cache-inhibited write operations |
PCT/IB2020/057835 WO2021064484A1 (en) | 2019-09-30 | 2020-08-20 | Cache-inhibited write operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114430819A true CN114430819A (zh) | 2022-05-03 |
CN114430819B CN114430819B (zh) | 2023-04-07 |
Family
ID=75163444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080066473.5A Active CN114430819B (zh) | 2019-09-30 | 2020-08-20 | 数据处理系统及其处理单元和处理方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11176038B2 (zh) |
JP (1) | JP2022549095A (zh) |
CN (1) | CN114430819B (zh) |
DE (1) | DE112020004672T5 (zh) |
GB (1) | GB2603693B (zh) |
WO (1) | WO2021064484A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11379236B2 (en) * | 2019-12-27 | 2022-07-05 | Intel Corporation | Coherency tracking apparatus and method for an attached coprocessor or accelerator |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167313A1 (en) * | 2002-03-01 | 2003-09-04 | International Business Machines Corporation | Apparatus and method of multicasting or broadcasting data from one partition of a partitioned computer system to a plurality of other partitions |
US20080140938A1 (en) * | 2004-06-30 | 2008-06-12 | Prakash Khemani | Systems and methods of marking large objects as non-cacheable |
CN102216898A (zh) * | 2008-05-30 | 2011-10-12 | 飞思卡尔半导体公司 | 用于存储分配高速缓存缺失的错误恢复的存储缓冲器的利用 |
CN105183662A (zh) * | 2015-07-30 | 2015-12-23 | 复旦大学 | 一种无cache一致性协议的分布式共享片上存储架构 |
US20180052599A1 (en) * | 2015-11-05 | 2018-02-22 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
CN108885583A (zh) * | 2016-04-11 | 2018-11-23 | 国际商业机器公司 | 高速缓存存储器访问 |
CN109947363A (zh) * | 2018-12-11 | 2019-06-28 | 深圳供电局有限公司 | 一种分布式存储系统的数据缓存方法 |
US20190220409A1 (en) * | 2018-01-17 | 2019-07-18 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4306298A (en) | 1979-10-09 | 1981-12-15 | Texas Instruments Incorporated | Memory system for microprocessor with multiplexed address/data bus |
US4443864A (en) | 1979-10-09 | 1984-04-17 | Texas Instruments Incorporated | Memory system for microprocessor with multiplexed address/data bus |
EP0458516B1 (en) | 1990-05-25 | 1997-11-05 | AT&T Corp. | Memory access bus arrangement |
US5191656A (en) | 1991-08-29 | 1993-03-02 | Digital Equipment Corporation | Method and apparatus for shared use of a multiplexed address/data signal bus by multiple bus masters |
US5978874A (en) | 1996-07-01 | 1999-11-02 | Sun Microsystems, Inc. | Implementing snooping on a split-transaction computer system bus |
US6209053B1 (en) | 1998-08-28 | 2001-03-27 | Intel Corporation | Method and apparatus for operating an adaptive multiplexed address and data bus within a computer system |
US6393500B1 (en) | 1999-08-12 | 2002-05-21 | Mips Technologies, Inc. | Burst-configurable data bus |
US8095733B2 (en) | 2009-04-07 | 2012-01-10 | International Business Machines Corporation | Virtual barrier synchronization cache castout election |
US8131935B2 (en) | 2009-04-07 | 2012-03-06 | International Business Machines Corporation | Virtual barrier synchronization cache |
-
2019
- 2019-09-30 US US16/588,241 patent/US11176038B2/en active Active
-
2020
- 2020-08-20 JP JP2022516628A patent/JP2022549095A/ja active Pending
- 2020-08-20 DE DE112020004672.9T patent/DE112020004672T5/de active Pending
- 2020-08-20 CN CN202080066473.5A patent/CN114430819B/zh active Active
- 2020-08-20 WO PCT/IB2020/057835 patent/WO2021064484A1/en active Application Filing
- 2020-08-20 GB GB2205124.7A patent/GB2603693B/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167313A1 (en) * | 2002-03-01 | 2003-09-04 | International Business Machines Corporation | Apparatus and method of multicasting or broadcasting data from one partition of a partitioned computer system to a plurality of other partitions |
US20080140938A1 (en) * | 2004-06-30 | 2008-06-12 | Prakash Khemani | Systems and methods of marking large objects as non-cacheable |
CN102216898A (zh) * | 2008-05-30 | 2011-10-12 | 飞思卡尔半导体公司 | 用于存储分配高速缓存缺失的错误恢复的存储缓冲器的利用 |
CN105183662A (zh) * | 2015-07-30 | 2015-12-23 | 复旦大学 | 一种无cache一致性协议的分布式共享片上存储架构 |
US20180052599A1 (en) * | 2015-11-05 | 2018-02-22 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
CN108885583A (zh) * | 2016-04-11 | 2018-11-23 | 国际商业机器公司 | 高速缓存存储器访问 |
US20190220409A1 (en) * | 2018-01-17 | 2019-07-18 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
CN109947363A (zh) * | 2018-12-11 | 2019-06-28 | 深圳供电局有限公司 | 一种分布式存储系统的数据缓存方法 |
Also Published As
Publication number | Publication date |
---|---|
US11176038B2 (en) | 2021-11-16 |
WO2021064484A1 (en) | 2021-04-08 |
US20210096990A1 (en) | 2021-04-01 |
DE112020004672T5 (de) | 2022-07-14 |
CN114430819B (zh) | 2023-04-07 |
JP2022549095A (ja) | 2022-11-24 |
GB2603693A (en) | 2022-08-10 |
GB2603693B (en) | 2023-02-08 |
GB202205124D0 (en) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
US10824567B2 (en) | Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead | |
US20140250275A1 (en) | Selection of post-request action based on combined response and input from the request source | |
CN113826085A (zh) | 处理器中的写入流 | |
US10705957B1 (en) | Selectively updating a coherence state in response to a storage update | |
EP4066119B1 (en) | Cache snooping mode extending coherence protection for certain requests | |
CN114430819B (zh) | 数据处理系统及其处理单元和处理方法 | |
JP2023504622A (ja) | ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード | |
US11321145B2 (en) | Ordering execution of an interrupt handler | |
US10956070B2 (en) | Zeroing a memory block without processor caching | |
US10733102B2 (en) | Selectively updating a coherence state in response to a storage update | |
US10949346B2 (en) | Data flush of a persistent memory cache or buffer | |
US11157408B2 (en) | Cache snooping mode extending coherence protection for certain requests | |
US10691599B1 (en) | Selectively updating a coherence state in response to a storage update | |
US11163700B1 (en) | Initiating interconnect operation without waiting on lower level cache directory lookup | |
US9665297B1 (en) | Injection of at least a partial cache line in a private multilevel cache hierarchy | |
WO2023010975A1 (en) | Data processing system having masters that adapt to agents with differing retry behaviors | |
US10831660B1 (en) | Ordering execution of an interrupt handler | |
US11748280B2 (en) | Broadcast scope selection in a data processing system utilizing a memory topology data structure | |
US11561900B1 (en) | Targeting of lateral castouts in a data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |