CN114356839A - 处理写操作的方法、设备、处理器及设备可读存储介质 - Google Patents
处理写操作的方法、设备、处理器及设备可读存储介质 Download PDFInfo
- Publication number
- CN114356839A CN114356839A CN202210260720.6A CN202210260720A CN114356839A CN 114356839 A CN114356839 A CN 114356839A CN 202210260720 A CN202210260720 A CN 202210260720A CN 114356839 A CN114356839 A CN 114356839A
- Authority
- CN
- China
- Prior art keywords
- write
- write operation
- command
- chip
- queue
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供一种处理写操作的方法、设备、处理器及设备可读存储介质。该方法可应用于处理器中的第一设备。该第一设备内部设置有写队列,且写队列中存储有第一写操作。该第一写操作用于将第一数据写入第一缓存行。该方法包括:第一设备向NoC发送符合缓存一致性协议的第一命令,该第一命令用于申请第一写操作对应的写权限;如果获取到第一写操作对应的写权限,且获取到其他写操作对应的写权限,则第一设备向NoC发送写命令,以将第一数据写入第一缓存行,其中该其他写操作为进入写队列的时间早于第一写操作的写操作。上述技术方案中,第一设备利用缓存一致性协议获取写操作对应的写权限,从而可以自主对写操作的完成顺序进行控制,规避了对NoC保序属性的依赖。
Description
技术领域
本申请涉及处理器领域,具体涉及一种处理写操作的方法、设备、处理器及设备可读存储介质。
背景技术
处理器通常由很多组件构成。为了实现处理器组件的互连互通,很多处理器(尤其是高性能处理器)采用片上网络(network on chip,NoC)的形式将处理器组件连接在一起。
由于处理器的组件通常较多,为了简化NoC的实现,NoC一般不提供保序服务。也就是说,处理器上的同一个源组件发往同一个目的组件的多个消息在NoC传输过程中可能会发生乱序,导致该多个消息到达目的组件时的次序与该多个消息从源组件发出时的次序不同。即使NoC在链路层提供保序服务,但NoC协议层的重试(retry)机制,也可能导致该多个消息在NoC链路传输过程中出现乱序问题。
在很多场景下,写操作的执行顺序是存在保序要求的。例如,快速外围组件互连(peripheral component interconnect express,PCIe)协议要求PCIe设备的直接内存访问(direct memory access,DMA)操作中的写操作按序完成,这是PCIe设备正常工作的基本前提。面对NoC传输过程中可能出现的乱序问题,如何保证写操作的按序执行,是亟待解决的问题。
发明内容
本公开提供一种处理写操作的方法、设备、处理器及设备可读存储介质,以保证写操作的按序执行。
第一方面,提供一种处理写操作的方法,所述方法应用于处理器,所述处理器包括处理器核和第一设备,所述第一设备与所述处理器核通过片上网络相连,所述第一设备内部设置有用于存储写操作的写队列,所述写队列中存储的写操作包括第一写操作,所述第一写操作用于将第一数据写入第一缓存行,所述方法包括:所述第一设备向所述片上网络发送符合缓存一致性协议的第一命令,所述第一命令用于申请所述第一写操作对应的写权限;如果获取到所述第一写操作对应的写权限,且获取到其他写操作对应的写权限,则所述第一设备向所述片上网络发送写命令,以将所述第一数据写入所述第一缓存行,其中所述其他写操作为进入所述写队列的时间早于所述第一写操作的写操作。
作为一种可能的实现方式,所述第一写操作在所述写队列中的队列项为第一队列项,所述方法还包括:所述第一设备维护所述第一队列项的状态,所述第一队列项的状态包括以下状态中的一种或多种:第一状态,表示所述第一设备已将所述第一命令发送至所述片上网络,目前正在等待获取到所述第一写操作对应的写权限;第二状态,表示所述第一设备已获取到所述第一写操作对应的写权限,目前正在等待获取到所述其他写操作对应的写权限;以及第三状态,表示所述第一设备已将所述写命令发送至所述片上网络,目前正在等待所述第一数据被写入所述第一缓存行。
作为一种可能的实现方式,所述第一队列项的状态还包括以下状态中的一种或多种:第四状态,表示所述第一队列项目前正处于空闲状态;第五状态,表示已向所述第一设备申请发送所述第一命令,目前正在等待所述第一设备对所述第一设备的发送接口的使用权进行仲裁;第六状态,表示已向所述第一设备申请发送所述写命令,目前正在等待所述第一设备对所述第一设备的发送接口的使用权进行仲裁;以及第七状态,表示所述第一设备目前正在等待与所述片上网络进行握手。
作为一种可能的实现方式,所述第一队列项的状态记录在所述第一队列项的状态字段,所述第一队列项还包括以下字段中的一种或多种:数据字段,用于记录所述第一数据;地址字段,用于记录所述第一缓存行的地址;以及控制信息字段,用于记录所述第一写操作的控制信息。
作为一种可能的实现方式,在所述第一设备获取到所述第一写操作对应的写权限,且正在等待获取所述其他写操作对应的写权限的过程中,所述方法还包括:如果从所述片上网络收到监听命令,且所述监听命令中的缓存行地址与所述第一缓存行的地址相同,则所述第一设备向所述片上网络发送监听响应消息,所述监听响应消息用于指示所述第一设备已不再拥有所述第一写操作对应的写权限,且所述监听响应消息不携带所述第一数据;在所述监听响应消息发送至所述片上网络之后,所述第一设备重新向所述片上网络发送所述第一命令。
作为一种可能的实现方式,在所述第一设备获取到所述第一写操作和所述其他写操作对应的写权限之后,所述方法还包括:如果从所述片上网络收到监听命令,且所述监听命令中的缓存行地址与所述第一缓存行的地址相同,则所述第一设备向所述片上网络发送监听响应消息,所述监听响应消息用于指示所述第一设备已不再拥有所述第一写操作对应的写权限,且所述监听响应消息携带所述第一数据。
作为一种可能的实现方式,在所述第一设备向所述片上网络发送写命令之前,所述方法还包括:所述第一设备从所述片上网络接收所述第一命令的响应消息,所述第一命令的响应消息由管理缓存一致性的节点生成,且所述响应消息用于指示所述第一设备拥有了所述第一写操作对应的写权限。
作为一种可能的实现方式,如果所述第一写操作用于将所述第一数据写入所述第一缓存行的全部区域,则所述第一命令为cleanunique命令;和/或如果所述第一写操作用于将所述第一数据写入所述第一缓存行的部分区域,则所述第一命令为readunique命令。
作为一种可能的实现方式,所述方法还包括:所述第一设备接收第二写操作;如果所述第二写操作中的数据的尺寸大于一个缓存行的尺寸,则所述第一设备将所述第二写操作切分成多个写操作,使得所述多个写操作中的数据的尺寸均小于或等于一个缓存行的尺寸;所述第一设备将所述多个写操作存入所述写队列。
作为一种可能的实现方式,所述第一设备位于所述处理器的外设接口和所述片上网络之间,用于对所述外设接口所连接的外设与所述片上网络之间的通信进行控制。
作为一种可能的实现方式,所述第一设备包括以下设备中的一种或多种:PCIe控制器,加速核,片间互连接口控制器,以及连接到所述片上网络的桥接器。
作为一种可能的实现方式,所述写队列中存储的写操作为DMA写操作。
第二方面,提供一种处理写操作的设备,包括:存储部,用于存储指令;控制部,用于根据所述存储部存储的指令,以执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法。
第三方面,提供一种处理器,包括:一个或多个处理器核;处理写操作的设备,通过片上网络与所述一个或多个处理器核相连,且所述处理写操作的设备用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法。
作为一种可能的实现方式,所述处理器还包括:管理缓存一致性的节点,通过片上网络与所述一个或多个处理器核以及所述处理写操作的设备相连,所述处理写操作的设备从所述节点获取所述写操作对应的写权限,并通过所述节点将所述写操作中的数据写入对应的缓存行。
第四方面,提供一种设备可读存储介质,其上存储有用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
第五方面,提供一种程序产品,包括用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
本申请实施例要求处理器内部的处理写操作的设备(即第一设备)参与缓存一致性操作,从而利用缓存一致性协议获取写操作对应的写权限。在获取到写操作对应的写权限之后,该第一设备可以自主对写操作的完成顺序进行控制,从而规避了对NoC保序属性的依赖。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是可应用本申请实施例的处理器架构示例图。
图2是图1所示的处理器架构的一种可能的实现方式的示例图。
图3是本申请实施例提供的处理写操作的方法的流程示意图。
图4是本申请实施例提供的写队列的实现方式示例图。
图5是图3所示的方法的一种可能的实现方式的流程示意图。
图6是本申请实施例提供的处理写操作的设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。以下描述中,参考形成本公开一部分并以说明之方式示出本申请实施例的具体方面或可使用本申请实施例的具体方面的附图。应理解,本申请实施例可在其它方面中使用,并可包括附图中未描绘的结构或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,且本申请的范围由所附权利要求书界定。例如,应理解,结合所描述方法的揭示内容可以同样适用于用于执行所述方法的对应设备或系统,且反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包含如功能单元等一个或多个单元,来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元,其中每个都执行多个步骤中的一个或多个),即使附图中未明确描述或说明这种一个或多个单元。另一方面,例如,如果基于如功能单元等一个或多个单元描述具体装置,则对应的方法可以包含一个步骤来执行一个或多个单元的功能性(例如,一个步骤执行一个或多个单元的功能性,或多个步骤,其中每个执行多个单元中一个或多个单元的功能性),即使附图中未明确描述或说明这种一个或多个步骤。进一步,应理解的是,除非另外明确提出,本文中所描述的各示例性实施例和/或方面的特征可以相互组合。
参见图1,本申请实施例可应用于图1所示的处理器10。该处理器10可以是中央处理单元(central processing unit,CPU)。该处理器10可以是桌面级处理器,也可以是服务器级处理器。该处理器可以是X86架构(即采用X86指令集)的处理器,也可以是ARM架构(即采用ARM指令集,如ARMv8指令集)。
处理器10可以包括一个或多个外设接口(图中未示出)。例如,处理器10可以包括一个或多个PCIe接口。通过该一个或多个PCIe接口,处理器10可以与显卡、网卡等外设进行连接和通信。
处理器10可以包括一个或多个处理器核11。在一些实施例中,处理器10可以是多核架构的处理器。作为示例,该处理器可以包括32或64个处理器核。
处理器10可以包括一个或多个第一设备12。第一设备12指的是处理器10中的除处理器核之外的一个组件。该第一设备可以是处理写操作的设备(当然,除了写操作之外,第一设备还可以处理读操作或处理其他类型的任务或操作)。
在一些实施例中,第一设备12可以泛指负责将顺序的写操作在NoC13有序完成的任意类型的设备、模块、组件或控制器。例如,第一设备12可以是写操作的请求设备,即用于请求片上网络处理该写操作的设备。因此,在该实施例中,也可以将第一设备12称为请求端或请求节点。
在一些实施例中,第一设备12可以位于处理器10的外设接口和NoC之间。也就是说,第一设备12可以是外设接口与NoC之间的链路所经过的设备。该第一设备可用于对外设与NoC之间的通信和/或数据传输进行控制。例如,第一设备可以位于处理器10的外设接口和NoC之间,并负责执行以下操作中的一种或多种:缓存从外设接口接收到的写操作,控制该写操作发送至NoC的顺序,对写操作进行协议转换(如将PCIe协议转换成NoC协议),以及与NoC进行握手。
作为一个示例,第一设备12可以包括PCIe控制器。PCIe控制器是现代处理器(尤其是高性能处理器)的重要组件。目前服务器级的处理器的外设接口基本均采用PCIe接口。相应地,处理器的外设(例如显卡、网卡、存储主控卡、应用加速卡)也基本统一采用PCIe接口。PCIe控制器可用于对该PCIe接口(或该PCIe接口所连接的PCIe设备)进行控制,从而实现PCIe设备与处理器之间的通信和/或数据传输。
作为另一示例,第一设备12可以包括PCIe控制器与NoC13之间的桥接器。桥接器也可称为转接桥或协议桥。该桥接器例如可以负责PCIe协议与NoC协议之间的协议转换。当然,在一些实施例中,该桥接器的功能(如协议转换功能)也可以由PCIe控制器自己实现。在这种情况下,该第一设备12可以是指PCIe控制器,也可以是指PCIe控制器内部的实现桥接器功能的模块。
作为又一示例,第一设备12可以包括以下设备中的一种或多种:加速核,片间互连接口控制器,或者连接到NoC13的其他类型的桥接器。
在一些实施例中,第一设备12处理的写操作为DMA写操作。所谓“DMA写操作”,指的是不需要依赖处理器核的中断和仲裁,直接将数据写入缓存或内存中的操作。例如,第一设备12内部可以设置DMA控制器,从而以DMA的方式将写操作对应的数据直接写入缓存或内存中。
重新参见图1,NoC 13用于实现处理器的组件的互联互通。本申请实施例对NoC的结构不作具体限定,可以根据实际需要选择。在一些实施例中,该NoC 13可以是二维的mesh网络,也可以是Torus网络。
NoC13上可以运行缓存一致性协议。本申请实施例对NoC13上运行的缓存一致性协议的类型不作具体限定。该缓存一致性协议可以是基于监听(snoop-based)的缓存一致性协议,也可以是基于目录(directory-based)的缓存一致性协议,也可以是上述两种缓存一致性协议的组合。
除了上文提到的处理器核11和第一设备12之外,处理器10还可以包括其他类型的组件、设备或模块。
例如,在一些实施例中,处理器10可以包括内存控制器。该内存控制器可以负责与内存进行通信。以内存为双倍速率同步动态随机存取存储器(double data ratesynchronous dynamic random access memory,DDR SDRAM,简称DDR)为例,则该内存控制器可以是DDR控制器。
又如,在一些实施例中,处理器10还可以包括管理缓存一致性的节点。该节点可以负责处理器的部分或全部地址空间的缓存一致性操作。该节点例如可以是基于目录的缓存一致性协议中的home节点。
又如,在一些实施例中,处理器10还可以包括以下末级共享缓存节点、中断控制器、加速核中的一种或多种。
下面结合图2,给出图1所示的处理器10的一种更为具体的实现方式。图2示出的是处理器(尤其是高性能的服务器级处理器)的一种典型结构。如图2所示,处理器10包括一个或多个处理器核11,一个或多个PCIe控制器22(对应于前文提到的第一设备),一个或多个home节点14,以及一个或多个DDR控制器15。图2中的各个组件均可以通过NoC 13连接在一起。
处理器10的地址空间可以被划分成不相交的若干地址空间范围(或称地址空间集合),其中每个地址空间范围可以对应一个管理缓存一致性的节点,即图2中的home节点14。每个内存的读操作(或写操作)需要先发给访存地址对应的home节点。然后,由home节点负责该地址的缓存一致性操作。如果需要对DDR进行访问,home节点也可以负责向DDR控制器15发出命令,以实现对DDR的访问。
PCIe控制器22可以通过处理器10的PCIe接口(图2中未示出)与外部的PCIe设备相连。该PCIe设备例如可以包括图2所示的网卡20、显卡30等设备。
前文提到,第一设备可以负责将顺序的写操作在NoC上有序完成。但是,现代处理器(尤其是高性能的服务器级处理器)中的组件通常比较多(例如包括处理器核、末级共享缓存节点、PCIe控制器、内存控制器、中断控制器、加速核等各种类型的组件),所以NoC的规模一般也比较大。为了简化NoC设计、提高NoC的带宽利用率,很多现代处理器的NoC不提供保序服务,即同一个源组件发往同一个目的组件的多个消息(或命令)可能会在NoC传输过程中发生乱序,导致该多个消息到达目的组件时的次序与该多个消息发出时的次序不同。这种不保序的特征虽然能够简化NoC的设计,但是却给第一设备的工作带来了很大挑战。此外,即使NoC的链路层(NoC的协议栈一般可以包括链路层和协议层)保序,但是NoC的协议层可能支持重试(retry)机制,该重试(retry)机制的使用也可能会导致多个消息在NoC上的传输出现乱序的问题。
下面以图2所示的PCIe控制器为例,对上述问题进行更为详细的举例说明。
PCIe设备可以直接对主机的内存空间进行读写,即PCIe设备支持DMA操作。DMA操作可以是DMA读操作,也可以是DMA写操作。PCIe协议针对PCIe设备的DMA操作规定了一种或多种序,其中一种序为内存写序(memory write order)。所谓内存写序,指的是PCIe设备发出的顺序靠后的内存写操作不能超越前面的内存写操作。换句话说,多个内存写操作要按照PCIe设备发出的次序访问主机的内存。对很多PCIe设备而言,保证内存写序是PCIe设备正常工作的一个重要前提。
要想满足内存写序,需要内存写操作从PCIe设备到主机内存的整个通路(包括PCIe设备到主机的PCIe链路,链路上的PCIe交换器,主机的PCIe控制器,以及主机PCIe控制器到主机内存的片上通路等)上的顺序都得到保证,这样才能保证内存写操作的顺序符合PCIe协议的要求。
从图2所示的处理器结构可以看出,在现代处理器(尤其是高性能的服务器级处理器)中,PCIe控制器到主机内存的片上通路一般需要经过NoC。根据前文介绍可知,NoC通常不提供保序服务。或者,即使NoC提供保序服务,NoC的协议层的重试机制也可能导致PCIe设备发出的写操作在NoC上传输时出现乱序的问题,从而无法满足PCIe协议对内存写序的要求。
针对上述问题,相关技术主要提供了两种解决方案。
方案一要求PCIe控制器与home节点之间使用协议握手。具体而言,home节点每从PCIe控制器收到一个写操作,则需要向PCIe控制器返回一个确认消息。PCIe控制器在收到该确认消息之后,才能发出下一个写操作。这种方法通过协议握手的方式保证了多个写操作到达home节点的次序正确。home节点会利用缓存一致性协议,保证按序收到的内存写操作均按序写入缓存或内存中。方案一的缺点在于:协议握手存在延迟,导致多个写操作不能流水发送,在批量处理写操作时带宽非常低。
方案二是由ARM公司在CHI规范(ARR公司提出的NoC协议)中提出的。相对于方案一而言,方案二的改进之处在于如果两个写操作的地址对应的home节点不同,则后一个写操作的发送无需等前一个写操作的确认消息。当多个写操作分别发往不同的home节点时,该方案可以流水发送,从而可以提高处理写操作时的带宽。但是,该方案的缺点主要有两个,一是如果多个写操作发往同一个home节点,则与方案一相同,存在写操作的带宽低的问题;二是处理器中只能有一个PCIe控制器使用该方案二,如果多个PCIe控制器同时使用该方案,则可能会出现死锁问题。但是,现代处理器(尤其是高性能的服务器级处理器)中,通常都设置有多个PCIe控制器,所以方案二无法充分开发多个PCIe控制器的带宽。
由此可见,相关技术提供的两种解决方案虽然能够实现顺序写操作在NoC的传输过程的保序,但均是以牺牲时延和带宽为代价的。因此,亟需一种更为高效的处理写操作的方法。
为了实现该目的,本申请实施例提出一种处理写操作的方法。本申请实施例提供的方法中,第一设备首先获取写操作对应的写权限(即向缓存行中写入数据的权限);然后,第一设备根据获取到的写权限,自己控制写队列中的写操作的完成次序,使得写队列中的写操作能够按序完成。本申请实施例提供的处理写操作的方法能够规避对NoC的保序属性的依赖,使得第一设备在不保序的NoC也可以高效地处理存在保序要求的写操作。需要说明的是,本申请实施例提供的技术方案适用于写操作在NoC传输过程可能会出现乱序问题的任意类型的场景。例如,本申请实施例不但适用于由于NoC的链路层不提供保序服务而导致的乱序场景,也适用于由于NoC的协议层的重试机制而导致的乱序场景。
第一设备可以利用缓存一致性协议获取写操作对应的写权限。也就是说,第一设备可以利用缓存一致性协议参与缓存一致性的维护工作中,从而利用符合缓存一致性协议的相关命令的发送和/或接收,得到写操作对应的写权限。
上述缓存一致性协议可以是基于监听的缓存一致性协议,也可以是基于目录的缓存一致性协议,也可以是上述两种一致性协议的组合。在不同的缓存一致性协议中,第一设备获取写操作对应的写权限的方式可以有所不同。
作为一个示例,在基于目录的缓存一致性协议中,处理器上会设置管理缓存一致性的节点(如图2所示的home节点),写操作对应的写权限通常由该节点进行维护和管理。在这种情况下,第一设备可以利用缓存一致性协议与该节点进行通信,从而从该节点获取写操作对应的写权限。
作为另一示例,在基于监听的缓存一致性协议中,第一设备可以广播符合缓存一致性的命令,并通过监听其他参与缓存一致性维护的节点(如处理器核)对该命令的响应,以确定是否能够获得写操作对应的写权限。
下文结合图3,对本申请实施例进行更为详细的举例说明。
图3中的方法300可以由如图1所示的处理器中的第一设备执行。该第一设备可以参见前文中的介绍。该第一设备例如可以是以下设备中的一种或多种:PCIe控制器,加速核,片间互连接口控制器,以及连接到NoC的桥接器。
第一设备具有写队列。该写队列可用于存储写操作。需要说明的是,写操作也可称为写请求,术语“写操作”和“写请求”根据特定上下文可以被互换地使用。写操作可以包含数据和地址。写操作中的数据也可称为写数据,即需要写入缓存中的数据。写操作中的地址也可称为写地址,即数据需要写入的缓存行地址。写操作可用于将其包含的数据写入对应的缓存行地址中。
在一些实施例中,写队列可以以缓存行为粒度存储写操作,即写队列中缓存的每个写请求中的数据的尺寸均等于一个缓存行的尺寸。
写队列中可以存储一个写操作,也可以存储多个写操作。作为示例,该写队列中存储有该批量的写操作。为了便于描述,下文以用于将第一数据写入第一缓存行的第一写操作为例,对该写队列中的写操作的处理流程进行举例说明。应理解,该第一写操作可以为写队列中的任意一个写操作。例如,该第一写操作可以是进入写队列时间最早的写操作。又如,该第一写操作可以是进入写队列时间较晚的写操作。该写队列中的每个写操作均可以按照下文描述的第一写操作的处理逻辑进行相同或类似的处理。
在一些实施例中,第一写操作可以包括数据字段和地址字段。数据字段可用于记录第一数据。地址字段可用于记录第一缓存行的地址。进一步地,在一些实施例中,第一写操作还可以包括控制信息字段。该控制信息字段可用于记录第一写操作的控制信息。第一写操作的控制信息可以包括以下信息中的一种或多种:第一数据的尺寸、写掩码、存储属性。写掩码可用于指示第一写操作要将第一数据写入第一缓存行中的哪些字节。属性信息例如可用于指示第一数据可缓存(cacheable)或不可缓存(non-cacheable)。
参见图3,在步骤S310,第一设备向NoC发送符合缓存一致性协议的第一命令。该第一命令可用于申请第一写操作对应的写权限。
写操作对应的写权限,指的是将写操作中的数据写入缓存行的权限。在处理器中,要想将数据写入缓存行,需要先得到向该缓存行写入数据的权限。在一些实施例中,也可以将第一写操作对应的写权限称为写操作中的数据的所有权。
第一命令为符合缓存一致性协议的命令。也就是说,第一命令是该缓存一致性协议所定义的命令。本申请实施例对第一命令的表述方式不作具体限定。实际上,第一命令的表述方式与缓存一致性协议的类型有关,不同类型的缓存一致性协议,第一命令的表述方式可能会有所不同,可以根据处理器实际采用的缓存一致性协议而定。
第一写操作可用于将第一数据写入第一缓存行的全部区域,也可用于将第一数据写入第一缓存行的部分区域。上述两种情况,第一命令可以是相同的命令,也可以是不同的命令。
作为一个示例,如果第一写操作用于将第一数据写入第一缓存行的全部区域,则第一命令可以为cleanunique命令。cleanunique命令指的是可以直接将新的第一数据写入第一缓存行,以覆盖该第一缓存行中的旧数据。
作为另一示例,如果第一写操作用于将第一数据写入第一缓存行的部分区域,则第一命令可以为readunique命令。readunique命令指的是在将新的第一数据写入第一缓存行之前,需要先将第一缓存行中的旧数据读出,然后将第一缓存行的旧数据和新的第一数据进行合并,再将合并后的数据写入第一缓存行。具体的合并方式可以基于写掩码实现。例如,如果第一缓存行中的某个字节对应的写掩码为0,则该位置可以使用第一缓存行中的旧数据;如果第一缓存行中的某个字节对应的写掩码为1,则该位置可以使用第一数据。
作为又一示例,如果第一写操作用于将第一数据写入第一缓存行的全部区域,则第一命令仍然可以选用readunique命令。即可以先将第一缓存行中的旧数据读出,然后将该旧数据和新的第一数据合并,再将合并后的数据写入第一缓存行。
前文提到,第一命令用于申请第一写操作对应的写权限。基于第一命令申请第一写操作对应的写权限的方式与缓存一致性协议的类型相关(前文已经对此进行了详细描述,具体可以参见前文)。
以基于目录的缓存一致性协议为例,第一设备可以通过NoC向管理缓存一致性的节点(如home节点)发送第一命令。该节点在收到该第一命令之后,可以通过NoC向第一设备返回第一命令的响应消息。该第一命令的响应消息可用于指示第一设备拥有了第一写操作对应的写权限。也可以说,该第一命令的响应消息用于向第一设备授予该第一写操作对应的写权限。
以基于监听的缓存一致性协议为例,第一设备在发送第一命令之后,可以通过监听其他参与缓存一致性维护的节点(如处理器核)的响应的方式获取该第一写操作对应的写权限。
重新参见图3,在步骤S320,如果第一设备获取到第一写操作对应的写权限,且其他写操作(这里提及的其他写操作指的是进入写队列的时间早于第一写操作的写操作)对应的写权限也均被第一设备获取到,则第一设备可以向NoC发送写命令,从而将第一数据写入第一缓存行。
写操作进入写队列的时间可以代表写操作之间的顺序。也就是说,一个写操作进入写队列的时间越早,则该写操作的顺序越靠前。
第一设备确定写操作进入写队列的时间的方式可以有多种。例如,可以将第一设备的写队列设置为一个循环队列。第一设备可以通过指针等方式维护该循环队列的队列头的位置,写队列中的一个写操作距离队列头越近,则代表该写操作进入写队列的时间越早,一个写操作距离队列头越远,则代表该写操作进入写队列的时间越晚。又如,第一设备可以维护寄存器,用于记录写队列中的各个写操作进入写队列的时间。
写队列中的进入写队列的时间早于第一写操作的其他写操作对应的写权限可以按照与第一写操作类似的方式获取,为了简洁,不再重复描述。
写命令的类型与处理器采用的缓存的写机制相关,本申请实施例对此不作具体限定。例如,该写命令可以是回写命令(write-back命令)。又如,该写命令可以是直写命令(write-through命令)。
在一些实施例中,当第一设备将第一数据写入第一缓存行之后,第一设备可以释放写队列中的第一写操作对应的队列项。
相关技术中,第一设备不参与缓存一致性的维护工作,因此需要将写操作发送至管理缓存一致性的节点(如home节点),由该节点执行缓存一致性的相关操作。这样一来,为了满足写操作在NoC上传输过程的保序要求,第一设备需要逐个写操作与该节点进行握手,只有得到该节点的响应消息之后,才能向该节点发送下一个写操作。上述保序方式时延较大,写操作的带宽很低。不同于上述相关技术,本申请实施例中,第一设备直接参与缓存一致性的维护工作,从而可以利用缓存一致性协议获取写权限(即将写权限抓取到了写操作的请求端),并可以按照写操作之间的期望序来控制写操作的完成时机,这样不但能够保证写操作之间的完成次序,而且下一写操作的处理并不需要等待该节点对前一写操作的响应消息,提高了写操作的处理效率。应注意,本申请实施例在没有home节点(如基于监听的方式确保缓存一致性)的场景仍然适用。此外,本申请实施例提供的处理写操作的方法在处理批量写操作的场景下具有更加明显的优势。
下文仍以第一写操作为例,对第一设备如何维护写队列中的写操作进行详细地举例说明。在下文中,第一写操作在写队列中所处的队列项被称为第一队列项。第一设备通过维护第一队列项的状态,跟踪或记录第一写操作所处的完成阶段,从而对第一设备需要执行的操作进行自动控制。
图4示出了第一设备的写队列的一种可能的实现方式。参见图4,写队列可以包括多个队列项(图4中的一行代表一个队列项)。该多个队列项可分别用于存储多个写操作。每个队列项可以包括4个字段:数据字段、地址字段、控制信息字段以及状态字段。以第一队列项为例,第一队列项的数据字段可用于记录前文提到的第一数据;第一队列项的地址字段可用于记录前文提到的第一缓存行的地址;第一队列项的控制信息字段可用于记录前文提到的第一写操作的控制信息;第一队列项的状态字段可用于记录第一队列项的状态。
在一些实施例中,第一队列项的状态可以包括第一状态。第一状态可以表示第一设备已将第一命令已发送至NoC,目前正在等待获取到第一写操作对应的写权限。以图2所示的场景为例,则第一命令可以通过片上网络发送至home节点,第一状态可以表示第一设备正在等待home节点返回第一命令的响应消息。一旦收到该第一命令的响应消息,则可以认为第一设备拥有了该第一写操作对应的写权限。
在一些实施例中,第一队列项的状态可以包括第二状态。第二状态可以表示第一设备已获取到第一写操作对应的写权限,目前正在等待获取到其他写操作(进入写队列的时间早于第一写操作的写操作)对应的写权限。如果第一写操作为进入写队列时间最早的写操作,或者在第一设备获取到第一写操作对应的写权限时,进入写队列更早的写操作对应的写权限已经被第一设备获取到,则可以跳过该第二状态,直接进入下文描述的第三状态。
在一些实施例中,第一队列项的状态可以包括第三状态。第三状态可以表示第一设备已将写命令已发送至NoC,目前正在等待第一数据被写入第一缓存行。也可以说,第三状态可以表示第一设备已将写命令发送至NoC,目前正在等待该写命令被执行完成。以图2所示的场景为例,则写命令可以通过片上网络发送至home节点,第三状态可以表示第一设备目前正在等待home节点返回写命令的完成消息。
第一设备通过维护上述状态机,可以使得写操作的处理工作可以按照该状态机流水进行,从而提高写操作的处理效率。
在一些实施例中,第一队列项的状态可以包括第四状态。第四状态可以表示第一队列项目前正处于空闲状态。第一队列项处于空闲状态,可以指第一队列项未被任何写操作占用,或者之前占用该第一队列项的写操作已从写队列中释放。
在一些实施例中,第一队列项的状态可以包括第五状态。第五状态可以表示(第一写操作)已向第一设备申请发送第一命令,目前正在等待第一设备对第一设备的发送接口的使用权进行仲裁。例如,第一设备内部可以设置仲裁器,用于对第一设备的发送接口的使用权进行仲裁。当仲裁器接收到包含第一命令在内的多个命令之后,可以根据该多个命令的优先级分配该发送接口的使用权。
在一些实施例中,第一队列项的状态可以包括第六状态。第六状态可以表示(第一写操作)已向第一设备申请发送写命令,目前正在等待第一设备对第一设备的发送接口的使用权进行仲裁。例如,第一设备内部可以设置仲裁器,用于对第一设备的发送接口的使用权进行仲裁。当仲裁器接收到包含写命令在内的多个命令之后,可以根据该多个命令的优先级分配该发送接口的使用权。
在一些实施例中,第一队列项的状态可以包括第七状态。第七状态可以表示第一设备正在等待与NoC进行握手。该第七状态可以在有握手要求的NoC协议中使用。
上述第四状态至第七状态的引入,可以使得第一设备对每个队列项中的写操作的完成阶段进行更为细致的控制,降低了出错的概率。
在第一设备获取到第一写操作对应的写权限之后,可能会从NoC收到监听命令(或监听消息)。下文对第一设备收到监听命令之后的处理方式进行详细地举例说明。
如果第一设备收到监听命令,且监听命令中的缓存行地址与第一缓存行的地址相同,则表示处理器中的其他设备或节点希望使用向该第一缓存行中写入数据。在收到监听命令之后,如果第一设备一直持有该写权限,会导致其他设备或节点无法向第一缓存行中写入数据,从而可能会引发数据阻塞。因此,在收到监听命令之后,第一设备可以向NoC发送监听响应消息(snoop response),以指示第一设备不再拥有第一写操作对应的写权限,以便其他节点或设备可以将数据写入第一缓存行。
在向NoC发送监听响应消息时,第一设备可以在该监听响应消息中携带第一数据(即第一写操作中的数据),也可以不携带该第一数据。
在一些实施例中,第一设备可以根据第一写操作所处的完成阶段决定是否在监听响应消息中携带第一数据。
例如,在获取到第一写操作对应的写权限,且正在等待获取其他写操作(指进入写队列的时间比第一写操作时间更早的写操作)的写权限的过程中,如果第一设备从NoC收到监听命令,且监听命令中的缓存行地址与第一缓存行的地址相同,则第一设备可以向NoC发送监听响应消息。该监听响应消息可用于指示第一设备已不再拥有第一写操作对应的写权限,且监听响应消息不携带第一写操作中的数据。在第一设备向NoC发送监听响应消息之后,第一设备可以重新向NoC发送第一命令。
又如,在获取到第一写操作和其他写操作对应的写权限之后,如果第一设备从NoC收到监听命令,且监听命令中的缓存行地址与第一缓存行的地址相同,则第一设备向NoC发送监听响应消息。该监听响应消息可用于指示第一设备已不再拥有第一写操作对应的写权限,且该监听响应消息携带第一写操作中的数据。在发送该监听响应消息之后,第一设备可以释放写队列中的第一队列项。
在一些实施例中,在步骤S310之前,图3的方法还可包括:第一设备接收第二写操作;如果第二写操作中的数据的尺寸大于一个缓存行的尺寸,则第一设备可以将第二写操作切分成多个写操作,使得多个写操作中的数据的尺寸均小于或等于一个缓存行的尺寸。然后,第一设备可以将多个写操作存入写队列。相应地,如果第二写操作中的数据的尺寸小于或等于一个缓存行的尺寸,则第一设备可以将该第二写操作直接存入写队列中。
作为示例,写队列可以以缓存行为粒度存储写操作,即写队列中的一个队列项最多可以存储一个缓存行大小的数据。在第一设备接收到第二写操作之后,可以检查该第二写操作的地址(address)和长度(length)字段,以确定该第二写操作中的数据的尺寸是否超过一个缓存行的大小。如果该第二写操作中的数据的尺寸未超过一个缓存行的大小,则可以将该写操作直接存储至写队列中;如果该写操作中的数据的尺寸超过一个缓存行的大小,则可以以缓存行的尺寸为粒度,将该写操作切分成多个写操作,然后将该多个写操作分别存入写队列。
下面以图2所示的处理器的架构为例,给出图3所示的方法的一个具体示例。在下面的示例中,第一设备为PCIe控制器,且NoC协议为CHI协议。应注意,下面的示例仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将本申请实施例限于所例示的协议或具体场景。本领域技术人员根据下面的示例,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本申请实施例的范围内。
PCIe控制器内设置有如图4所示的写队列。该写队列的每个队列项的状态字段中记录的队列项的状态包括以下状态:空闲状态(对应于前文中的第四状态),WAIT_REQ_ARB(对应于前文的第五状态),WAIT_REQ_RESP(对应于前文的第一状态),WAIT_OLDER_WRITE(对应于前文的第二状态),WAIT_WBACK_ARB(对应于前文的第六状态),WAIT_WBACK_RESP(对应于前文的第三状态),WAIT_WBACK_HSHAKE(对应于前文中的第七状态)。
PCIe控制器从PCIe链路上收到一个写操作时,可以先检查该写操作的地址和长度字段,以确定该写操作中的数据的大小。如果该数据的大小未超出一个缓存行的大小,则可以将该写操作直接存入PCIe控制器的写队列中。如果该数据的大小超出了一个缓存行的大小,则以缓存行的大小为粒度,将该写操作切分成多个写操作,然后将该多个写操作分别存入写队列中。
下面以写队列中的第一写操作(写队列中的任意一个写操作)为例,描述写队列中的写操作进入写队列之后的操作过程,以及第一写操作所在的第一队列项的队列项状态的变化过程。
参见图5,在步骤S502,向PCIe控制器申请向NoC发出第一命令。第一队列项的状态从空闲状态迁移为WAIT_REQ_ARB。
在步骤S504,获PCIe控制器授权后,向NoC发送第一命令。如果该第一写操作用于请求写一个完整的缓存行,则该第一命令可以是cleanunique命令;如果该第一写操作用于请求写缓存行的一部分内容,则该第一命令可以是readunique命令。该第一命令可以携带第一队列项的编号,作为事务标识(transaction id)。第一队列项的状态迁移为WAIT_REQ_RESP。待第一命令发出之后,等待home节点返回的响应消息(即等待home节点返回第一写操作对应的写权限)。
在步骤S506,在收到home节点的响应消息之后,第一设备可以根据响应消息中的事务标识找到对应的队列项。如果该响应消息带有数据(第一写操作用于写缓存行的一部分内容的情况下,响应消息中会带回相应缓存行的旧数据),则可以将返回的数据和队列项中的数据合并后存入队列项。合并的规则例如可以是若缓存行的某个字节对应的写掩码为0,则该字节位置的数据使用响应消息中的数据,否则该字节位置使用队列项中的数据。在收到home节点的响应消息之后,第一写操作所在的队列项的状态迁移为WAIT_OLDER_WRITE。如果第一写操作不是写队列中最老的写操作(即不是进入写队列时间最早的写操作),则等待进入写队列更早的其他写操作收到home节点的响应消息(即等待进入写队列更早的其他写操作均得到对应的写权限)。
在步骤S508,如果进入写队列更早的其他写操作均收到home节点的响应消息,则向PCIe控制器申请向NoC发出write-back命令。第一队列项的状态迁移为WAIT_WBACK_ARB。
在步骤S510,在获得PCIe控制器授权后,向NoC发出write-back命令。write-back命令中携带第一队列项的编号,作为事务标识(transaction id)。如果NoC协议规定在发送write-back命令时,第一设备不需要与NoC进行协议握手,则可以将该write-back命令和第一写操作中的数据一起发给NoC,否则可能需要等待NoC返回write-back命令的响应消息之后再向NoC发出第一写操作中的数据。然后,可以等待home节点返回write-back命令的完成消息。在步骤S510执行完毕之后,该第一队列项的状态迁移为WAIT_WBACK_RESP。
在步骤S512,收到NoC返回的write-back命令的完成消息,释放第一队列项,并将第一队列项的状态重新迁移为空闲状态。
在步骤S514,在队列项处于WAIT_OLDER_WRITE状态的过程中,如果从NoC上收到了监听命令,并且该监听命令中的缓存行地址和第一队列项中的地址字段内的地址相同,则返回一个不带数据的监听响应消息给NoC,指示PCIe控制器已不再拥有此写操作对应的写权限。然后,将第一队列项的状态迁移为WAIT_REQ_ARB状态或空闲状态。
在步骤S516,在队列项处于WAIT_WBACK_ARB或WAIT_WBACK_RESP状态的过程中,如果从NoC上收到了监听命令,并且该监听命令中的缓存行地址和该第一队列项的地址字段内的地址相同,则返回一个带数据的监听响应消息给NoC,指示PCIe控制器已不再拥有此写操作对应的写权限。然后,将第一队列项的状态迁移为WAIT_WBACK_HSHAKE。
在步骤S518,在WAIT_WBACK_HSHAKE状态下,第一设备只负责完成与NoC的协议握手,但是不向home节点返回有效数据。待协议握手完成后,将第一队列项从写队列中释放,并将第一队列项的状态迁移至空闲状态。
写队列中的每个写操作均可以按照上述操作流程进行操作,这样一来,写队列中的写操作可以流水操作。处理器内的多个PCIe控制器可以同时使用上述流程,不会产生死锁问题。所以,本申请实施例提出的方案可以高效的处理PCIe的写操作,尤其适合处理PCIe的批量写操作。
参见图6,本申请实施例还提供一种处理写操作的设备60。该设备60可以为前文提到的第一设备。该设备60可以包括存储部62和控制部64。存储部62可用于存储指令。控制部64可用于根据存储部62中存储的指令,执行前文任一实施例描述的方法。
本申请实施例还提供一种处理器。该处理器的结构可以参见前文中的图1或图2。该处理器可以包括:一个或多个处理器核;处理写操作的设备,通过NoC与一个或多个处理器核相连。该处理写操作的设备可以是前文提到的第一设备。该处理写操作的设备可用于执行前文任一实施例描述的方法。
可选地,在一些实施例中,该处理器还可包括管理缓存一致性的节点。该节点例如可以是图2所示的home节点。该节点通过NoC与一个或多个处理器核以及处理写操作相连。该处理写操作的设备可以从该节点获取写操作对应的写权限,并通过该节点将写操作中的数据写入对应的缓存行。
需要说明的是,前文提到的命令、消息、事务的传输,并非要将本申请实施例限定在某个特定的协议中,这些术语根据特定上下文可以被互换地使用。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种处理写操作的方法,其特征在于,所述方法应用于处理器,所述处理器包括处理器核和第一设备,所述第一设备与所述处理器核通过片上网络相连,所述第一设备内部设置有用于存储写操作的写队列,所述写队列中存储的写操作包括第一写操作,所述第一写操作用于将第一数据写入第一缓存行,
所述方法包括:
所述第一设备向所述片上网络发送符合缓存一致性协议的第一命令,所述第一命令用于申请所述第一写操作对应的写权限;
如果获取到所述第一写操作对应的写权限,且获取到其他写操作对应的写权限,则所述第一设备向所述片上网络发送写命令,以将所述第一数据写入所述第一缓存行,其中所述其他写操作为进入所述写队列的时间早于所述第一写操作的写操作。
2.根据权利要求1所述的方法,其特征在于,所述第一写操作在所述写队列中的队列项为第一队列项,所述方法还包括:
所述第一设备维护所述第一队列项的状态,所述第一队列项的状态包括以下状态中的一种或多种:
第一状态,表示所述第一设备已将所述第一命令发送至所述片上网络,目前正在等待获取到所述第一写操作对应的写权限;
第二状态,表示所述第一设备已获取到所述第一写操作对应的写权限,目前正在等待获取到所述其他写操作对应的写权限;以及
第三状态,表示所述第一设备已将所述写命令发送至所述片上网络,目前正在等待所述第一数据被写入所述第一缓存行。
3.根据权利要求2所述的方法,其特征在于,所述第一队列项的状态还包括以下状态中的一种或多种:
第四状态,表示所述第一队列项目前正处于空闲状态;
第五状态,表示已向所述第一设备申请发送所述第一命令,目前正在等待所述第一设备对所述第一设备的发送接口的使用权进行仲裁;
第六状态,表示已向所述第一设备申请发送所述写命令,目前正在等待所述第一设备对所述第一设备的发送接口的使用权进行仲裁;以及
第七状态,表示所述第一设备目前正在等待与所述片上网络进行握手。
4.根据权利要求2所述的方法,其特征在于,所述第一队列项的状态记录在所述第一队列项的状态字段,所述第一队列项还包括以下字段中的一种或多种:
数据字段,用于记录所述第一数据;
地址字段,用于记录所述第一缓存行的地址;以及
控制信息字段,用于记录所述第一写操作的控制信息。
5.根据权利要求1所述的方法,其特征在于,在所述第一设备获取到所述第一写操作对应的写权限,且正在等待获取所述其他写操作对应的写权限的过程中,所述方法还包括:
如果从所述片上网络收到监听命令,且所述监听命令中的缓存行地址与所述第一缓存行的地址相同,则所述第一设备向所述片上网络发送监听响应消息,所述监听响应消息用于指示所述第一设备已不再拥有所述第一写操作对应的写权限,且所述监听响应消息不携带所述第一数据;
在所述监听响应消息发送至所述片上网络之后,所述第一设备重新向所述片上网络发送所述第一命令。
6.根据权利要求1所述的方法,其特征在于,在所述第一设备获取到所述第一写操作和所述其他写操作对应的写权限之后,所述方法还包括:
如果从所述片上网络收到监听命令,且所述监听命令中的缓存行地址与所述第一缓存行的地址相同,则所述第一设备向所述片上网络发送监听响应消息,所述监听响应消息用于指示所述第一设备已不再拥有所述第一写操作对应的写权限,且所述监听响应消息携带所述第一数据。
7.根据权利要求1所述的方法,其特征在于,在所述第一设备向所述片上网络发送写命令之前,所述方法还包括:
所述第一设备从所述片上网络接收所述第一命令的响应消息,所述第一命令的响应消息由管理缓存一致性的节点生成,且所述响应消息用于指示所述第一设备拥有了所述第一写操作对应的写权限。
8.根据权利要求1-7中任一项所述的方法,其特征在于:
如果所述第一写操作用于将所述第一数据写入所述第一缓存行的全部区域,则所述第一命令为cleanunique命令;和/或
如果所述第一写操作用于将所述第一数据写入所述第一缓存行的部分区域,则所述第一命令为readunique命令。
9.根据权利要求1-7中任一项所述的方法,其特征在于,所述方法还包括:
所述第一设备接收第二写操作;
如果所述第二写操作中的数据的尺寸大于一个缓存行的尺寸,则所述第一设备将所述第二写操作切分成多个写操作,使得所述多个写操作中的数据的尺寸均小于或等于一个缓存行的尺寸;
所述第一设备将所述多个写操作存入所述写队列。
10.根据权利要求1-7中任一项所述的方法,其特征在于,所述第一设备位于所述处理器的外设接口和所述片上网络之间,用于对所述外设接口所连接的外设与所述片上网络之间的通信进行控制。
11.根据权利要求1-7中任一项所述的方法,其特征在于,所述第一设备包括以下设备中的一种或多种:PCIe控制器,加速核,片间互连接口控制器,以及连接到所述片上网络的桥接器。
12.根据权利要求1-7中任一项所述的方法,其特征在于,所述写队列中存储的写操作为DMA写操作。
13.一种处理写操作的设备,其特征在于,包括:
存储部,用于存储指令;
控制部,用于根据所述存储部存储的指令,以执行如权利要求1-12中任一项所述的方法。
14.一种处理器,其特征在于,包括:
一个或多个处理器核;
处理写操作的设备,通过片上网络与所述一个或多个处理器核相连,且所述处理写操作的设备用于执行如权利要求1-12中任一项所述的方法。
15.根据权利要求14所述的处理器,其特征在于,还包括:
管理缓存一致性的节点,通过片上网络与所述一个或多个处理器核以及所述处理写操作的设备相连,所述处理写操作的设备从所述节点获取所述写操作对应的写权限,并通过所述节点将写操作中的数据写入对应的缓存行。
16.一种设备可读存储介质,其特征在于,其上存储有用于执行如权利要求1-12中任一项所述的方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210260720.6A CN114356839B (zh) | 2022-03-17 | 2022-03-17 | 处理写操作的方法、设备、处理器及设备可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210260720.6A CN114356839B (zh) | 2022-03-17 | 2022-03-17 | 处理写操作的方法、设备、处理器及设备可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114356839A true CN114356839A (zh) | 2022-04-15 |
CN114356839B CN114356839B (zh) | 2022-06-03 |
Family
ID=81094486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210260720.6A Active CN114356839B (zh) | 2022-03-17 | 2022-03-17 | 处理写操作的方法、设备、处理器及设备可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356839B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933860A (zh) * | 2023-02-20 | 2023-04-07 | 飞腾信息技术有限公司 | 一种处理器系统、处理请求的方法及计算设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229593A (zh) * | 2016-03-25 | 2017-10-03 | 华为技术有限公司 | 多片多核处理器的缓存一致性操作方法及多片多核处理器 |
CN108139974A (zh) * | 2015-10-21 | 2018-06-08 | 华为技术有限公司 | 分布式缓存动态迁移 |
CN109144749A (zh) * | 2018-08-14 | 2019-01-04 | 苏州硅岛信息科技有限公司 | 一种使用处理器实现多处理器间通信的方法 |
CN111475434A (zh) * | 2020-04-06 | 2020-07-31 | 桂林电子科技大学 | 一种基于片上网络的多层次数据采集方法 |
CN111611068A (zh) * | 2019-02-25 | 2020-09-01 | 清华大学 | 分布式系统中的数据写方法、服务器及客户端 |
US11190548B1 (en) * | 2018-11-19 | 2021-11-30 | Google Llc | Coherent method of consistency for purpose of cloud authorization |
-
2022
- 2022-03-17 CN CN202210260720.6A patent/CN114356839B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108139974A (zh) * | 2015-10-21 | 2018-06-08 | 华为技术有限公司 | 分布式缓存动态迁移 |
CN107229593A (zh) * | 2016-03-25 | 2017-10-03 | 华为技术有限公司 | 多片多核处理器的缓存一致性操作方法及多片多核处理器 |
CN109144749A (zh) * | 2018-08-14 | 2019-01-04 | 苏州硅岛信息科技有限公司 | 一种使用处理器实现多处理器间通信的方法 |
US11190548B1 (en) * | 2018-11-19 | 2021-11-30 | Google Llc | Coherent method of consistency for purpose of cloud authorization |
CN111611068A (zh) * | 2019-02-25 | 2020-09-01 | 清华大学 | 分布式系统中的数据写方法、服务器及客户端 |
CN111475434A (zh) * | 2020-04-06 | 2020-07-31 | 桂林电子科技大学 | 一种基于片上网络的多层次数据采集方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933860A (zh) * | 2023-02-20 | 2023-04-07 | 飞腾信息技术有限公司 | 一种处理器系统、处理请求的方法及计算设备 |
CN115933860B (zh) * | 2023-02-20 | 2023-05-23 | 飞腾信息技术有限公司 | 一种处理器系统、处理请求的方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114356839B (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10169080B2 (en) | Method for work scheduling in a multi-chip system | |
TWI416322B (zh) | 最佳化以目錄為基礎的一致性協定中之同時存取 | |
US9529532B2 (en) | Method and apparatus for memory allocation in a multi-node system | |
JP2020191122A (ja) | ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ | |
US11461151B2 (en) | Controller address contention assumption | |
CN101354682B (zh) | 一种用于解决多处理器访问目录冲突的装置和方法 | |
US20030145136A1 (en) | Method and apparatus for implementing a relaxed ordering model in a computer system | |
US20150254182A1 (en) | Multi-core network processor interconnect with multi-node connection | |
US20110004732A1 (en) | DMA in Distributed Shared Memory System | |
US9372800B2 (en) | Inter-chip interconnect protocol for a multi-chip system | |
US10592459B2 (en) | Method and system for ordering I/O access in a multi-node environment | |
JP2001117859A (ja) | バス制御装置 | |
JP2012038293A (ja) | マシンビジョン用マルチプロセッサシステムオンチップ | |
US20220114098A1 (en) | System, apparatus and methods for performing shared memory operations | |
EP4220375A1 (en) | Systems, methods, and devices for queue management with a coherent interface | |
JP2004355307A (ja) | 通信方法および情報処理装置 | |
CN114356839B (zh) | 处理写操作的方法、设备、处理器及设备可读存储介质 | |
US10339064B2 (en) | Hot cache line arbitration | |
EP3788492B1 (en) | Separating completion and data responses for higher read throughput and lower link utilization in a data processing network | |
US10917198B2 (en) | Transfer protocol in a data processing network | |
US6862646B2 (en) | Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain | |
US11782836B1 (en) | Multiprocessor system cache management with non-authority designation | |
WO2022205130A1 (zh) | 读写操作执行方法和SoC芯片 | |
EP4453736A1 (en) | System, apparatus and methods for performing shared memory operations | |
CN118519924A (zh) | 一种缓存控制方法、装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |