针对同时待处理数据访问请求的数据冲突处理的制作方法

文档序号:6375152阅读:120来源:国知局
专利名称:针对同时待处理数据访问请求的数据冲突处理的制作方法
技术领域
本发明涉及数据处理的领域并且更具体地涉及保持数据一致性的领域。
背景技术
在数据处理系统中,数据通常被本地存储在处理器中以提高数据访问速度。然而,这可能导致多个数据备份被保存,必须小心确保不同数据备份之间的数据一致性。因而,当本地存储数据时,状态指示符通常与数据一起被存储,该指示符指示数据备份是有效或无效备份、数据备份是干净的(即,数据备份与存储在存储器中的数据是相同版本)还是脏的(即,数据备份是比存储在存储器中的版本更新的版本)。在一些系统中可能有更多的指示符,例如指示数据备份是否是唯一的本地备份的数据唯一指示符,或者指示存在多于一个本地备份的共享指示符。
数据一致性被利用探测请求(snoop request)来保持,该探测请求响应于读请求探测本地数据存储以查看数据的最新版本被存储在什么地方。然后,该数据可以被获取并且与该数据相关联的状态指示符可以被更新。如果存储在本地存储设备中的数据备份是脏的,则在其从本地存储设备中被去除之前必须被写回到存储器中。
当对某个地址的读请求和已生成的探测还都未完成时对该地址的写请求被请求时,可能发生数据冲突。在传统系统中为了解决这个问题,对于有待处理写入的地址的探测响应被阻断,直到写入完成才能继续。这样会有如下缺点:需要足够大的缓存空间来确保写入的向前进行,因为如果写入不能进行,则可能会存在相互的资源依赖,可能导致死锁的情况。当系统规模随着更多的接收方和发起方而增大时,提供足够的缓存空间来确保写入向前进行的问题也变得更突出。这需要更多的功率和晶片面积。
希望在不过分增大功率消耗和晶片面积的情况下避免数据冲突。发明内容
本发明的第一方面提供了一种发起方设备,包括用于生成数据访问请求的电路;用于存储数据和用于存储与所述数据相关联的状态指示符的数据存储设备,所述状态指示符指示以下状态中的至少一个状态:所述数据是无效的,所述数据是有效的且相同的值被存储在其它地方,以及所述数据是有效的并且是存储在其它地方的所述数据的版本的更新版本;至少一个端口,用于输出所述数据访问请求以经由一致性控制器传送给至少一个接收设备,并用于接收来自所述一致性控制器的信号和数据访问请求;其中,所述电路被配置为生成用于将存储在所述数据存储设备中的数据写入所述至少一个接收方设备中的一个设备的写请求,以及用于读取存储在所述至少一个接收方设备中的一个设备中的数据的读请求;所述电路被配置为以两个部分生成所述写请求,第一部分包括关于写入要被执行以及要被写入的所述数据的地址的指示,而第二部分作为在所述至少一个端口处接收到数据接受担保的响应而被发送;其中所述发起方设备还包括控制电路,所述控制电路被配置为:响应于在所述至少一个端口处接收到探测请求,接受所述探测请求并控制所述探测请求被执行,不管所述探测请求是否正在请求访问有待处理写请求的位置,针对所述待处理写请求的所述第一部分已被输出并且针对所述待处理写请求尚未接收到数据接受担保;以及响应于在所述至少一个端口处接收到所述数据接受担保以及响应于关于要被写入的所述数据是有效的并且是被存储在其它地方的所述数据的版本的更新版本的当前状态,输出所述数据和在所述数据被写入之前的所述数据的所述当前状态作为数据写的所述第二部分。
本发明认识到在一些系统中按两个部分发送写请求可能是有利的。例如,在写请求被发送给远程接收方的情况下,接收方可能没有能力接受写请求。如果是这种情况,则写请求将需要被一次又一次地发送,并且可能不被接受。如果数据像平常一样与写请求一起被发送,则用于连续发送和重发所述写请求的带宽量会很大。在一些系统中,写请求可以按两个部分被发送以解决这个问题。第一部分提供关于请求是写请求的指示以及关于要被写入的地址的指示。写请求的第一部分将被接受,当确定了整个写请求可以被接受时响应被发送,并且作为对所述响应的响应,包括数据的写请求的第二部分被发送。这可能会增加写请求的延迟,但是写请求的完成性能不是很关键,使得这种延迟是可接受的。
因而,本发明利用这种两部分的写请求,第一部分指示数据要被写入特定地址,并且当对第一部分的响应已被接收确保了数据将被接受时,第二部分发送数据。这样防止在接收方不能接受请求的情况下附带有数据的请求被多次发送。
本发明还认识到在以这种两部分的方式实现数据写请求的系统中,可以相对简单地通过不对第一部分做出响应来暂停待处理数据写请求。因而,当存在待处理写请求时不用暂停探测响应,本发明的发起方设备以相同的方式处理探测请求,不管是否有针对相同地址的写请求正在等待处理。这意味着在写请求完成的同时待处理探测不被阻止,像现有技术中一样,并且保证写请求向前进行所需要的预留缓冲器空间是不需要的。
当针对相同地址的探测和写请求同时待处理时所引起的可能的数据冲突可以利用一致性控制器来处理,所述一致性控制器对探测请求做出响应并且写数据被发送给一致性控制器,至少在探测之后的数据是脏数据的情况下,关于数据的状态的信息以及数据本身也被发送给一致性控制器。
通过将状态信息与数据一起发送给一致性控制器,除了像不存在数据冲突一样对探测做出响应以外,一致性控制可以由一致性控制器管理,并且发起方设备不需要任何冲突检查电路,这节省了非常大的面积,尤其是在有很多发起方设备的大型系统中。
该系统的另一个优点是所创建的数据流是统一的,并且尽管可能有冲突,但是读、探测和写请求中的每一个请求一般都会完成。这使得建模和验证会很简单。
此外,由于暂停同时待处理请求中的一个请求而引起的附加延迟被添加给写请求而不是读请求,这是有利的,因为写请求的完成性能不是那么关键。
在一些实施例中,所述控制电路被配置为作为对所述探测请求被执行的响应,在合适的情况下更新与所述数据相关联的所述状态指示符,并且输出关于在所述更新前后的所述状态指示符的指示以及所述数据作为对所述探测请求的响应。
不管有没有可能的数据冲突,探测请求都以相同的方式被处理。因此,作为对探测的响应,数据与探测之前的数据状态和探测之后的数据状态一起被返回。
在一些实施例中,所述控制电路被配置为响应于在所述至少一个端口处接收到所述数据接受担保,生成和输出所述数据和在所述写请求的所述第二部分被执行之前的所述数据的状态作为所述写请求的所述第二部分,而不管在所述写请求之前的所述数据的所述状态如何。
虽然针对数据的状态指示符可能指示在一些情况下数据写入不需要被执行并且因而数据不需要被发送给一致性控制器,但是在所有这些情况下发送数据和数据状态都是有利的。虽然这可能导致不需要的多余信息被发送,但是这意味着不管数据状态如何发起方设备的行为都是统一的,这样使得逻辑电路和对该电路的验证更简单并且还生成统一的数据流。
在一些实施例中,所述控制电路被配置为响应于在所述至少一个端口处接收到所述数据接受担保以及响应于在所述写请求的所述第二部分被执行之前的所述数据为无效的所述状态,输出写取消请求作为所述数据写请求的所述第二部分。
在有一些探测之后的数据的状态下,写请求实际上可以被取消并且数据不需要被发送,并且在这些情况下,发送写取消请求作为数据写请求的第二部分可能是有利的。这样与发送数据和数据状态相比需要更少的带宽。在两部分的写请求中,写请求的第一部分指示请求即将到来并且当写请求的第一部分已被接受时响应被发送,因为这时保证数据可以被接受。这可能意味着用于该请求的存储位置被预留。如果是这种情况,明显很重要的是如果写请求不继续进行,则关于写请求已被取消的指示被发送以使得为该请求预留的任何存储位置以及与该请求相关联的数据可以被释放。在数据的状态在探测期间已变为无效的情况下,数据明显不需要再被写入,因而这是写入应当被取消的情况。
在一些实施例中,所述控制电路被配置为响应于在所述至少一个端口处接收到所述数据接受担保以及响应于在所述写请求的所述第二部分被执行之前的所述数据是有效的并且相同的值被存储在其它地方的所述状态,输出写取消请求作为所述数据写请求的所述第二部分。
除了数据为无效的情况以外,在数据是有效的又是干净的使得存在存储在其它地方的数据的相同版本的情况下,写入也不需要完成,虽然在这种情况下它可以完成。因而,在一些实施例中,发起方设备可以选择继续进行写入并发送数据和状态指示,而在其它实施例中,可以节省带宽而发送写取消请求。
在一些实施例中,写事务请求的所述第一部分的大小与读事务请求的大小相同。
将写请求分成两个部分的另一优点在于这些部分比较小并且第一部分可以被做成与读请求相同的大小,使得用于除了这些请求的逻辑更简单。
本发明的第二方面提供了一种用于保持存储在数据处理装置中的数据的数据一致性的一致性控制器,包括至少一个发起方设备和至少一个接收方设备,所述一致性控制器包括:至少一个端口,用于接收来自所述至少一个发起方设备的数据访问请求并且用于将所述数据访问请求和探测请求发送给所述至少一个发起方设备和所述至少一个接收方设备中的至少一个设备;用于存储待处理数据访问请求的缓冲器;用于响应于所述数据访问请求生成所述探测请求的探测请求生成电路,所述探测请求用于确定要被访问的所述数据是否被本地存储在所述发起方和接收方设备中的一个或多个设备中;以及一致性控制电路,响应于接收到写请求的第一部分,通过不对所述写请求的所述第一部分做出响应来暂停所述写请求,一直到所述待处理读请求已完成为止,所述写请求的第一部分包括关于写入要针对有待处理的读请求的地址被执行的指示。
本发明认识到在以这种两个部分的方式实现数据写请求的系统中,可以通过不对第一部分做出响应来相对简单地暂停待处理数据写入。此外,还认识到如果作为对针对相同地址的待处理读/探测请求和待处理写请求之间的数据冲突的响应,暂停了写请求而不是探测请求,则读请求的延迟将不受影响,并且与保证存储写入的空间从而允许其进行相关联的缓冲要求将不会产生。
因此,根据本发明的一个方面的一致性控制器响应于检测到针对相同地址的待处理读请求而暂停待处理写请求,并且在允许写请求继续之前允许读请求完成。假设在至少一些情况下,响应于探测请求而发生的要被写入的数据的状态变化与任何被返回的数据一起被传输给一致性控制器,一致性控制器可以保持一致性并且一旦读取完成,就可以对写请求的第一部分做出响应,从而通知写入可以进行。
这具有以下优点:增加了写入的延迟而非读取的延迟,避免了与保证写入被确保向前进行相关联的缓冲要求,如果探测被暂停,这些缓冲要求就是必需的,并且还具有附加的优点,即因为读和写用相同的方式被处理,所以它们可以用相同的逻辑块来处理。
在一些实施例中,所述一致性控制电路响应于接收到指示所述读请求完成的信号而对所述写请求的所述第一部分做出响应。
一旦读请求已完成,一致性控制器将通过对写请求的第一部分做出响应来允许写请求继续进行。
在一些实施例中,所述一致性控制电路响应于接收到包括数据和关于在所述写请求之前所述数据的状态的指示的所述写请求的所述第二部分,如果所述状态指示所述数据是有效的并且是比存储在其它地方的所述数据的版本更新的版本,则将所述数据写入所述接收方设备。
当一致性控制电路接收到数据和数据状态时,它可以根据数据状态确定如何处理数据。因而,如果数据是有效的并且比存储在其它地方的数据的版本更新,则一致性控制器将继续将数据写入接收方设备。但是如果数据是无效的,则其将不再写入数据,而如果数据是有效的又是干净的(即,与存储在其它地方的值相同),则一致性控制器可以选择不再写入数据或者选择继续写入数据。后一种情况将需要更多的带宽,不过是一种统一的处理方式,可能在测试和验证系统时比较有利。
在一些情况下,不发送数据和关于数据状态的指示作为写请求的第二部分,而是写取消请求可以被发送,该请求指示数据的状态使得数据不需要被写回并且写请求将被取消。重要的是这个请求在对写请求的第一部分做出响应之前被发送,一致性控制器中可能已经为数据预留了存储位置。该写取消请求告知一致性控制器所述存储位置不再需要并且可以被释放以供其它请求使用。
在一些实施例中,所述至少一个缓冲器内的全部存储位置都可用于存储开始时的读和写请求,所述一致性控制电路被配置为当接受所述写请求的所述第一部分时为所述写请求的所述第二部分预留存储位置,并且利用指示所述存储位置被预留的数据接受担保响应对所述写请求的所述第一部分做出响应。
在作为对可能的数据冲突的响应探测请求被阻止的现有技术的系统中,重要的是写事务被确保进行以使得需要在探测请求可以继续之前完成的写入(造成死锁的情况)不被阻止。为了保证这一点,一致性控制器中的缓冲器具有专为待处理写事务预留的缓冲器中的存储位置。这样存在增大了这些设备中所需要的存储容量的缺点,这对于有很多这种设备的大型系统而言有非常大的影响。因为本发明阻止了写请求而非探测响应,所以按照这种方式不需要保证写入的向前进行,因而不需要在缓冲器中专为写入预留特定的存储位置。因此,在本发明的实施例中,缓冲器可用于开始的读和写请求,并且只有在当响应被给予写请求的第一部分的操作期间,缓冲器内的存储位置可以被暂时预留给写请求。因此,可以更高效地利用缓冲器,因为每个存储位置可被用于读、写或探测请求,并且缓冲器可以做得更小。
本发明的第三方面提供了一种数据处理系统,包括根据本发明的第一方面的至少一个发起方设备、根据本发明的第二方面的一致性控制器和至少一个接收方设备。
本发明的第四方面提供了一种用于在发起方设备内生成数据访问请求和处理探测请求的方法,包括:存储数据和存储与所述数据相关联的状态指示符,所述状态指示符指示以下状态中的至少一个状态:所述数据是有效的,所述数据被存储在其它地方以及所述数据是比存储在其它地方的所述数据的版本更新的所述数据的版本;接收来自一致性控制器的信号和数据访问请求;生成用于将存储在所述数据存储设备中的数据写入至少一个接收方设备中的写请求,以及用于读取存储在所述至少一个接收设备中的数据的读请求;其中所述写请求按两个部分被生成,第一部分包括关于写入要被执行以及要被写入的所述数据的地址的指示,而第二部分作为在所述至少一个端口处接收到数据接受担保的响应而被发送;并且作为对接收到探测请求的响应,接受所述探测请求并控制所述探测请求以相同的方式被执行,不管所述探测请求是否正在请求访问有待处理写请求的位置,针对所述待处理写请求的所述第一部分已被输出并且针对所述待处理写请求尚未接收到数据接受担保;以及响应于接收到所述数据接受担保以及响应于要被写入的所述数据是有效的并且是被存储在其它地方的所述数据的版本的更新版本的状态,输出所述数据和在所述数据被写入之前的所述数据的所述当前状态作为数据写的所述第二部分。
本发明的第五方面提供了一种保持数据访问请求的一致性的方法,包括:接收来自至少一个发起方设备的数据访问请求;将所述数据访问请求和探测请求发送给所述至少一个发起方设备和至少一个接收方设备中的至少一个设备;存储待处理数据访问请求;响应于所述数据访问请求生成探测请求,所述探测请求用于确定要被访问的所述数据是否被本地存储在所述发起方和接收方设备中的一个或多个设备中;以及响应于接收到写请求的第一部分,通过不对所述写请求的所述第一部分做出响应来暂停所述写请求,一直到所述待处理读请求已完成,所述写请求的第一部分包括关于写入要针对有待处理的读请求的地址被执行的指示。
本发明的第六方面提供了一种发起方装置,包括:用于生成数据访问请求的电路装置;用于存储数据和存储与所述数据相关联的状态指示符的数据存储装置,所述状态指示符指示以下状态中的至少一个状态:所述数据是有效的,所述数据被存储在其它地方以及所述数据是比存储在其它地方的所述数据的版本更新的所述数据的版本;至少一个端口装置,用于输出所述数据访问请求以经由一致性控制器传输给至少一个接收设备,并用于接收来自所述一致性控制器的信号和数据访问请求;其中所述电路装置用于生成将存储在所述数据存储装置中的数据写入所述至少一个接收方设备中的一个设备的写请求,以及用于读取存储在所述至少一个接收方设备中的一个设备中的数据的读请求;所述电路装置用于按两个部分生成所述写请求,第一部分包括关于写入要被执行以及要被写入的所述数据的地址的指示,而第二部分作为在所述至少一个端口装置处接收到数据接受担保的响应而被发送;其中所述发起方装置还包括控制装置,用于响应于在所述至少一个端口装置处接收到探测请求,接受所述探测请求并控制所述探测请求以相同的方式被执行,不管所述探测请求是否正在请求访问有待处理写请求的位置,针对所述待处理写请求的所述第一部分已被输出并且针对所述待处理写请求尚未接收到数据接受担保;以及响应于在所述至少一个端口装置处接收到所述数据接受担保以及响应于要被写入的所述数据是有效的并且是被存储在其它地方的所述数据的版本的更新版本的状态,输出所述数据和在所述数据被写入之前的所述数据的所述当前状态作为数据写的所述第二部分。
本发明的第七方面提供了一种保持存储在数据处理装置中的数据的数据一致性的一致性控制装置,所述数据处理装置包括至少一个发起方设备和至少一个接收方设备,所述一致性控制装置包括:至少一个端口装置,用于接收来自所述至少一个发起方设备的数据访问请求并且用于将所述数据访问请求和探测请求发送给所述至少一个发起方设备和所述至少一个接收方设备中的至少一个设备;用于存储待处理数据访问请求的缓冲器装置;探测请求生成装置,用于响应于所述数据访问请求生成所述探测请求,所述探测请求用于确定要被访问的所述数据是否被本地存储在所述发起方和接收方设备中的一个或多个设备中;以及一致性控制装置,用于响应于接收到写请求的第一部分,通过不对所述写请求的所述第一部分做出响应来暂停所述写请求,一直到所述待处理读请求已完成为止,所述写请求的第一部分包括关于写入要针对有待处理的读请求的地址被执行的指示。
根据下面结合附图阅读的对说明性实施例的详细描述,将清楚本发明的以上和其它目的、特征和优点。


图1示出了根据本发明实施例的发起方设备;
图2示出了根据本发明实施例的一致性控制器;
图3示出了根据本发明实施例的数据处理系统;
图4a至4c示意性地示出了根据本发明实施例的通过数据处理系统的事务进程;
图5示出了图示根据本发明实施例的发起方设备所执行的方法中的步骤的流程图6示出了图示根据本发明实施例的一致性控制器所执行的方法中的步骤的流程图。
具体实施方式
图1示出了根据本方面实施例的发起方设备10。该发起方设备10可以是数据处理装置、处理器核、DMA控制器、图形引擎或者实际上可以是任何生成数据访问请求的设备。在所示出的发起方设备10中,包括生成数据访问请求的中央处理单元12。还包括用于存储本地数据备份的缓存20。缓存本身可以响应于在缓存中所执行的一致性操作和无效操作生成写请求。
缓存20将本地数据备份与指示这些特定本地备份的状态的状态指示符22 —起存储。状态可以指示数据是有效还是无效。缓存中的数据项被标记为无效以指示该缓存行可被用于存储其它数据项。状态也可以是“干净”,指示那里所存储的数据备份与存储器中所存储的备份是相同的。状态还可以指示数据是“脏”的,即该数据与任何其它地方所存储的数据备份相比,尤其是与存储器中所存储的数据备份相比是更新的备份。还可能有其它状态,例如指示在其它地方是否有该数据的其它本地备份的“共享”和“唯一”状态。
当访问缓存20中的数据时,一致性操作可以被执行以确保在该设备中和在其它设备中处理的数据的一致性被保持。这些一致性操作可能导致缓存20生成写请求。
因此,各种写和读请求由CPU12生成且写请求可能由缓存20生成,并且这些请求被存储在输出请求缓冲器30中。当这些请求准备好从发起方设备被发布给用于经由一致性控制器传输给事务请求的接收方的互连时,这些请求将进入待处理请求缓冲器40。该缓冲器可包括用于存储与这些请求相关联的数据的附加空间。这些请求被存储在所述缓冲器中,直到从发起方设备接收到对发送这些请求的设备(在该示例中为一致性控制器)的响应为止。
发起方设备10还包括控制电路50,该控制电路控制请求的发布以及数据和输入探测请求的接收,所述输入探测请求到达端口 11并且作为待处理请求被存储在缓冲器14中。由于发起方设备10有本地存储设备20,控制存储在系统的不同设备中的数据的一致性的外部一致性控制器可以生成并发送探测请求给发起方设备10,以确定缓存20是否存储有所述一致性控制器想要访问的本地数据备份。因而,探测请求在端口 11处被接收到并且响应于来自控制电路50的控制信号,探测响应经由缓冲器15被输出。如果探测请求的数据被存储在本地,则这些探测响应将返回探测请求的数据,并且还将返回关于探测前后的数据状态的指示,因为探测请求可能改变数据的状态。以这种方式发送状态允许一致性控制器执行保持一致性所需要的任何必要的操作。
在所述发起方设备中没有数据冲突检查逻辑,因而如果写请求待处理并且接收到针对与待处理的写请求相同的地址的探测请求,则该探测请求将以同一方式被处理,就像没有待处理的探测请求一样。这是因为发起方设备没有意识到可能存在数据冲突,因为其没有冲突检查逻辑。
在本实施例中,写请求按两个部分被生成。因而,写请求的第一部分被发布,并且当对第一部分的响应被接收到时,写请求的第二部分被发送,这第二部分包括数据、标识该请求是写请求的第二部分的标识符以及在写之前的数据状态。对写请求的第一部分的响应指示写请求的接收设备具有用于存储数据的存储空间并且已准备好接收写请求的第二部分。这避免了寄希望于将有空间接收数据而冒险发送数据。数据占用很大的带宽,因而只需要发送一次是非常有利的。
一旦写请求的第一部分被发布,就可能接收到针对相同地址的探测请求。因为发起方设备10中没有数据冲突检查逻辑,所以这种可能的数据冲突不被识别且探测请求按常规方式被处理。因而,探测请求访问写请求所要写的数据,确定数据的当前状态,返回数据并适当地更新状态。
控制电路50在进行写请求的第一部分之前等待接收对该请求的响应,并且该响应在探测请求完成之后被接收到,因为生成该响应的一致性控制器在管理可能的数据冲突并且一直到其接收到对探测请求的响应并且其所涉及的读请求完成时才生成所述对写请求的第一部分的响应。一旦对写请求的第一部分的响应被接收,则数据与关于数据当前状态(即,在探测请求之后的数据状态)的指示一起被输出。然后,数据的状态可以按需要被更新。
在此应当意识到在一些情况下正在被发送的数据的状态将已被探测请求修改,因而写入可不再需要。因此,在一些实施例中,控制电路50接收来自缓存20的关于数据状态的指示,并且只是如果确定在探测之后的数据状态使得写入仍然需要的情况下才利用写请求的第二部分做出响应。如果控制电路确定数据不再需要被写入,则其将不利用数据做出响应,而是可用写取消请求做出响应。当对写请求的第一部分的响应指示在一致性控制器中有确保用于数据的位置时,控制电路将发送写取消请求。这通常通过为所述数据预留存储位置来实现,因而重要的是如果写入不再进行,则一致性控制器要被告知以使得它可以释放所预留的存储位置。
虽然不需要写时不发送数据将减少带宽要求,但是不管是否仍然需要都将数据与关于数据状态的指示一起发送是有利的,因为这是统一行为,并且实现该行为所需要的逻辑和验证电路所需要的逻辑更简单。
图2示出了根据本发明实施例的一致性控制器60。一致性控制器60在端口 62处接收来自发起方设备10的请求。一致性控制器60控制在各个发起方设备和在诸如存储器之类的接收方设备中本地存储的不同数据备份的一致性。一致性控制器60具有用于控制被接收和输出的请求的控制电路70。控制电路70控制分配器80,分配器80接收到达端口62的请求。这些请求可以是写请求的第一部分或者读请求或者它们可以是包含要被存储的数据的写请求的第二部分。分配器80分配到达数据缓冲器85的数据。分配器80将读请求和写请求的第一部分分配给请求缓冲器90,请求缓冲器90已经首先通过冲突检查逻辑92对请求进行了检查。冲突检查逻辑92确定是否有针对相同地址的任何待处理请求。如果冲突检查逻辑92检测到有接收到针对有待处理读取的地址的写请求的第一部分,则控制电路70不允许响应生成器100对所述写请求的第一部分做出响应。如果写请求的第一部分已被接收并且冲突检查逻辑92已确定存在针对所述地址的待处理读取,则控制电路70阻止响应生成器100生成针对该写请求的第一部分的响应,直到所述待处理读请求以及任何其它待处理冲突请求已完成。
一致性控制器60还具有探测生成器105,作为对接收到针对特定地址的读请求的响应,所述探测生成器105将生成针对所述地址的探测请求。这些探测请求被发送给具有本地存储设备的发起方设备以检查在所述本地存储设备中的任一存储设备中是否有存储在所述地址处的数据项。一致性控制器60还具有用于接收并处理对这些探测请求的响应的探测响应处理器110。探测响应可以返回数据以及在探测前后的数据状态,并且探测响应处理器将返回的数据存储在数据缓冲器85中。一旦针对特定写请求的探测已完成,该写请求可以完成,或者通过读取存储器地址或者通过将探测所返回的数据返回给生成写请求的发起方设备。控制电路70也可以将探测所返回的数据写入存储器中数据状态指示需要写入的地方。
一旦在一致性控制器60处接收到对读请求的响应,控制电路70将允许已存储的写请求继续进行。控制电路70将通过利用响应生成器100发布响应来允许所述写请求继续进行。
写入的数据随后可以与该数据的状态一起被返回给一致性控制器。然后,一致性控制器可以通过执行由数据状态所指示的任意步骤来确保数据一致性被保持。与数据一起发送的数据状态是就在写请求的第二部分被执行之前的状态。因而,由于探测而发生的任何状态改变都将已经发生并且与数据一起被返回的状态将反映这一点。这使得一致性控制器60能够保持数据的一致性,因此虽然在发起方设备中存在可能的数据冲突并且没有冲突检查逻辑,但是一致性被保持且数据冲突被避免。
如果数据状态使得写请求不再需要继续进行,则可能的结果是发起方设备不发送作为写请求的第二部分的数据和状态,而是发送写请求取消信号。这需要更少的带宽并且因而具有一些优势。如果该写请求取消信号被一致性控制器60接收到,则控制电路70将释放为写请求预留的数据缓冲器85中的位置。
应当注意虽然存储位置预留为似乎是各个存储位置被预留给特定的数据写入,但是具体实现方式可以简单地递增计数器来指示数据缓冲器中被预留给写请求的第二部分的位置的数目,并且控制电路70将确保这个数目的存储位置被保持可用并且只被写请求的第二部分所用。
图3示出了根据本发明实施例的数据处理系统。在该系统中,存在多个发起方设备10,发起方设备10包括处理核、DMA控制器、输入/输出处理器和图形引擎。在该系统中还可以有若干个一致性控制器60和存储器200。在该实施例中,存储器200具有供不同设备访问的不同区域并且存在专用于存储器的这些区域中的一个或多个区域的一致性控制器和存储器控制器。在本实施例中,有访问存储器200的两个存储器控制器130和三个一致性控制器60。
事务请求的进程的一些示例在图4a_4c中被示出。
图4a示出了在被称作请求节点(S卩,RN0、RN1和RN2)的三个不同的发起方设备、对应于图2的一致性控制器60的主节点以及存储器控制器MC之间的示例性事务请求流。
在本实施例中,读共享请求由RN2发布并且在主节点HN处被接收,主节点HN向可能存储有数据的本地备份的各个发起方设备输出干净探测请求。干净探测请求被发送给RNO0 RNO几乎在同时发布针对同一地址的写回请求。写回请求是请求将脏数据写入存储器的请求。因此,在这种情况下,数据状态最初是唯一的脏的,这意味着该数据是数据行的唯一本地备份并且比存储器中的备份更新。因此,在缓存中的条目可被另一数据项使用之前,该条目需要利用写回请求被存储到存储器中。
因此,存在针对同一地址的两个待处理请求。主节点HN在接收到写回请求时识别出存在针对同一地址的待处理读请求,并且通过不对作为两部分写请求的第一部分的写回请求做出响应来暂停写回请求。
RNO不包括数据冲突检查逻辑,并且通过发送对干净探测请求的响应来继续处理探测而不管有没有待处理的写回请求,所述响应返回数据和探测前后的状态的指示符,即被返回的数据最初是唯一且脏的UD,但是现在已在本地存储设备中被标记为共享且干净的SC。主节点HN接收所述数据和关于状态改变的信息,并且识别出其需要将数据写回存储器以使得状态(共享且干净)是正确的。因此,主节点HN向存储器控制器发出写请求并且作为对来自存储器控制器的响应的响应向存储器控制器发布数据。此外,主节点HN向RN2发布对读请求的响应,将数据和数据的当前状态与响应一起发送。当主节点HN接收到来自RN2的确认时,主节点HN随后通过对写回请求做出响应来允许写回请求继续进行。
作为对接收到所述响应的响应,发起方设备RNO将数据的共享干净状态更新为无效,因为写回操作将被完成并且其将数据与关于在写入完成之前的数据状态(即,共享且干净)的指示发送给主节点HN。作为对接收到上述数据和状态指示的响应,主节点HN将识别出数据现在是干净的并且写回不需要被执行。因此,主节点HN可以执行写回或者也可以丢掉数据。
图4b示出了不同的示例,其中节点RNO所发布的写回请求与RN2曾发布的读请求同时待处理。当这些请求在一致性控制器或主节点HN处被接收到时,HN通过不对其做出响应而暂停写回请求并作为对曾经请求的写入的响应发布无状态改变探测。探测返回来自RNO的数据以及关于未改变的状态UD的指示,并且所述数据被发送给RN2。因为在RNO处状态未被改变,所以主节点HN不将数据写入存储器中。当从RN2处接收到确认时,HN就知道读取已完成并且生成指示写入可以继续的针对写回请求的响应信号。作为对接收到该响应的响应,发起方设备RNO将数据和关于数据状态UD的指示一起发送并且将状态更新为无效,指示写回已被执行,使得缓存行可被用于另一数据项。
当主节点NN接收数据时,其根据状态UD识别出写回仍需要被执行并且执行写回。以这种方式,在HN处的一致性控制器保持了数据的一致性,同时不暂停探测请求而且在与图1中的发起方设备相对应的请求方节点内不存在任何数据冲突检查逻辑。
图4c示出了事务进程的另一示例,其中当在一致性控制器HN处接收到写回请求时存在若干个待处理的读取。因而,在本示例中,RNl和RN2都已向来自RNO的待处理写回事务的地址发布了读共享事务请求。因此,在一致性控制器HN处,写回操作被暂停,且从RN2接收的第一个共享读操作继续进行。干净探测被发送,并且存储在所述地址的数据与关于该数据的状态已从唯一且脏UD变为共享且干净SC的信息一起被返回。一旦接收到所述数据和关于状态改变的信息,缓存一致性控制器HN将数据写回到存储器中并且还将数据和其新的状态一起写入请求数据的RN2中。一旦该读取已完成,第二个读取将继续进行,干净探测被执行并且此时确定存储在RNO处的数据处于共享且干净SC状态。因此,探测响应将返回所述数据以及关于其在探测前后都处于共享且干净SC状态的信息。作为对此的响应,一致性控制器HN将发布对来自RNl的读共享请求的响应,提供数据和关于数据处于共享且干净SC状态的指示。一致性控制器不将数据写入存储器,因为数据状态在探测前后都是共享且干净的。当RNl已确认其已接收到读请求,则读请求实际上被完成并且一致性控制器HN将允许从RNO接收到的写回请求继续。因而,当一致性控制器HN在其数据缓冲器中有足够的空间接收写请求时,一致性控制器HN对写请求做出响应,并且响应于接收到所述响应,RNO将数据和关于在写回之前的数据状态(即,共享且干净SC)的指示一起发送。然后,数据的状态被变成无效。如图4a中所示,缓存控制器可以将所接收到的数据写入存储器或者也可以不写。数据不是存储器所必需的,但是如果希望得到数据流的统一,则数据可以被写入。
应当注意虽然在这些示例中作为对写回请求的响应,数据与关于数据状态(共享且干净)的指示一起被送回,但是在一些实施例中,如果状态是共享且干净则写取消请求可能被送回,因为数据实际上是不需要的。这将具有如下效果:允许一致性控制器释放已预留给写回数据的存储位置并且具有利用较少带宽的优点。然而,这需要使用另外的写取消事务,并且系统不是那么统一。类似地,如果探测之后的数据状态为无效,则数据和无效状态可以作为写请求的第二部分被发送,或者写取消请求可以被发送。
图5示出了根据本发明实施例的发起方设备所执行的步骤的流程图。在本实施例中,发起方设备将发布写请求的第一部分,然后它可能接收到针对相同地址的探测。发起方设备将继续处理所述探测,就像没有针对所述地址的写请求待处理一样。因此,探测将继续并且将按需要更新数据状态,并且响应于探测请求,数据将与原始和更新状态一起被返回。
然后,对写请求第一部分的响应将被接收到。该响应不会被较早接收到,因为一致性控制器一直到生成了针对相同地址的探测的待处理读请求完成后才对写请求的第一部分做出响应。当对写请求的第一部分的响应被接收到时,发起方设备将通过发送数据以及在探测请求之后数据所处的状态来继续处理写请求。然后,数据状态可以按需要响应于写请求而被更新。应当注意,如果数据状态指示不再需要写回,则在一些实施例中不再执行所述流程图中的最后两个流程块,并且写取消请求被简单地发送。
图6示出了在根据本发明实施例的一致性控制器处执行的方法中的步骤。在该实施例中,写请求的第一部分被接收到,并且一致性控制器利用其冲突检查逻辑确定是否存在针对相同地址的待处理读请求。如果没有,则一致性控制器可以继续处理写请求。如果有,则一致性控制器将暂停写请求并且将不继续处理写请求一直到确定读取已完成。当确定了读取已完成时,一致性控制器将发布对写请求的第一部分的响应。然后,一致性控制器将接收作为写请求的第二部分的数据和数据状态,并且取决于数据状态,将数据写回存储器或者不写回。在该实施例中,如果数据状态是无效的,则一致性控制器将不写回数据,如果数据状态不是无效的,则将数据写回。应当理解,在其它实施例中,如果数据是干净的,则数据将不被写回到存储器中,而如果数据是脏的,则数据将被写回存储器中。是否将干净数据写回的选择是实现方式的选择,而无效数据必须不被写回。
虽然在此已参考附图详细描述了本发明的说明性实施例,但是应当理解本发明不局限于那些精确的实施例,本领域技术人员可以进行各种改变和修改,而不脱离由所附权利要求所定义的本发明的范围和精神。例如,在不脱离本发明的范围的情况下,后面的从属权利要求的特征可以与独立权利要求的特征进行各种组合。
权利要求
1.一种发起方设备,包括: 用于生成数据访问请求的电路; 用于存储数据和用于存储与所述数据相关联的状态指示符的数据存储设备,所述状态指示符指示以下状态中的至少一个状态:所述数据是无效的,所述数据是有效的且相同的值被存储在其它地方,以及所述数据是有效的并且是存储在其它地方的所述数据的版本的更新版本; 至少一个端口,用于输出所述数据访问请求以经由一致性控制器传送给至少一个接收方设备,并用于接收来自所述一致性控制器的信号和数据访问请求;其中 所述电路被配置为生成用于将存储在所述数据存储设备中的数据写入所述至少一个接收方设备中的一个的写请求,以及用于读取存储在所述至少一个接收方设备中的一个中的数据的读请求; 所述电路被配置为按两个部分来生成所述写请求,第一部分包括关于写入要被执行的指示以及要被写入的所述数据的地址,而第二部分作为在所述至少一个端口处接收到数据接受担保的响应而被发送;其中 所述发起方设备还包括控制电路,所述控制电路被配置为: 响应于在所述至少一个端口处接收到探测请求,接受所述探测请求并控制所述探测请求被执行,而不管所述探测请求是否正在请求访问其第一部分已被输出但是尚未接收到数据接受担保的有待处理写请求的位置;以及 响应于在所述至少一个端口处接收到所述数据接受担保并且响应于关于要被写入的所述数据是有效的并且是被存储在其它地方的所述数据的版本的更新版本的当前状态,输出所述数据和在所述数据被写入之前所述数据的所述当前状态作为写请求的所述第二部分。
2.根据权利要求1所述的发起方设备,其中所述控制电路被配置为作为对所述探测请求被执行的响应,在合适的情况下更新与所述数据相关联的所述状态指示符,并且作为对所述探测请求的响应输出关于在所述更新之前和之后的所述状态指示符的指示以及所述数据。
3.根据权利要求1所述的发起方设备,其中所述控制电路被配置为响应于在所述至少一个端口处接收到所述数据接受担保,生成和输出所述数据和在所述写入被执行之前所述数据的状态作为所述写请求的所述第二部分,而不管在所述写请求之前所述数据的所述状态如何。
4.根据权利要求1所述的发起方设备,其中所述控制电路被配置为响应于在所述至少一个端口处接收到所述数据接受担保并且响应于在所述写入被执行之前所述数据为无效的所述状态,输出写取消请求作为所述写请求的所述第二部分。
5.根据权利要求4所述的发起方设备,其中所述控制电路被配置为响应于在所述至少一个端口处接收到所述数据接受担保并且响应于在所述写的所述第二部分被执行之前所述数据是有效的并且相同的值被存储在其它地方的所述状态,输出写取消请求作为所述写请求的所述第二部分。
6.根据权利要求1所述的发起方设备,其中写请求的所述第一部分的大小与读请求的大小相同。
7.一种用于保持存储在数据处理装置中的数据的数据一致性的一致性控制器,该数据处理装置包括至少一个发起方设备和至少一个接收方设备,所述一致性控制器包括: 至少一个端口,用于接收来自所述至少一个发起方设备的数据访问请求并且用于将所述数据访问请求和探测请求发送给所述至少一个发起方设备和所述至少一个接收方设备中的至少一个; 用于存储待处理数据访问请求的缓冲器; 用于响应于所述数据访问请求生成所述探测请求的探测请求生成电路,所述探测请求用于确定要被访问的所述数据是否被本地存储在所述发起方设备和所述接收方设备中的一个或多个中;以及 一致性控制电路,响应于接收到写请求的第一部分,通过不对所述写请求的所述第一部分做出响应来暂停所述写请求直到所述待处理读请求已完成为止,所述写请求的第一部分包括关于要对有待处理的读请求的地址执行写入的指示。
8.根据权利要求7所述的一致性控制器,其中所述一致性控制电路响应于接收到指示所述读请求已完成的信号而对所述写请求的所述第一部分做出响应。
9.根据权利要求8所述的一致性控制器,其中所述一致性控制电路响应于接收到包括数据和关于在所述写入之前所述 数据的状态的指示的所述写请求的所述第二部分,如果所述状态指示所述数据是有效的并且是比存储在其它地方的所述数据的版本更新的版本,则将所述数据写入所述接收方设备。
10.根据权利要求9所述的一致性控制器,其中所述一致性控制电路响应于接收到包括数据和关于所述数据的状态为无效的指示的所述写请求的所述第二部分,不再写入所述数据。
11.根据权利要求10所述的一致性控制器,其中所述一致性控制电路响应于接收到包括数据和关于所述数据是有效的且与存储在其它地方的值相同的状态的指示的所述写请求的所述第二部分,不再写入所述数据。
12.根据权利要求10所述的一致性控制器,其中所述一致性控制电路响应于接收到包括写请求取消指示的所述写请求的所述第二部分,释放预留的存储位置。
13.根据权利要求7所述的一致性控制器,其中所述至少一个缓冲器中的所有存储位置在开始时能用于存储读请求和写请求,所述一致性控制电路被配置为当接受所述写请求的所述第一部分时预留用于所述写请求的所述第二部分的存储位置,并且利用指示所述存储位置被预留的数据接受担保响应对所述写请求的所述第一部分做出响应。
14.一种数据处理系统,包括根据权利要求1的至少一个发起方设备、根据权利要求7的一致性控制器和至少一个接收方设备。
15.一种用于在发起方设备内生成数据访问请求和处理探测请求的方法,包括: 存储数据和存储与所述数据相关联的状态指示符,所述状态指示符指示以下状态中的至少一个状态:所述数据是有效的,所述数据被存储在其它地方,以及所述数据是比存储在其它地方的所述数据的版本更新的所述数据的版本; 接收来自一致性控制器的信号和数据访问请求; 生成用于将存储在所述数据存储设备中的数据写入至少一个接收方设备中的写请求,以及用于读取存储在所述至少一个接收方设备中的数据的读请求;其中所述写请求按两个部分被生成,第一部分包括关于写入要被执行的指示以及要被写入的所述数据的地址,而第二部分作为在所述至少一个端口处接收到数据接受担保的响应而被发送;并且 作为对接收到探测请求的响应,接受所述探测请求并控制所述探测请求以相同的方式被执行,而不管所述探测请求是否正在请求访问其第一部分已被输出但是尚未接收到数据接受担保的有待处理写请求的位置;以及 响应于接收到所述数据接受担保以及响应于要被写入的所述数据是有效的并且是被存储在其它地方的所述数据的版本的更新版本的状态,输出所述数据和在所述数据被写入之前所述数据的所述当前状态作为所述写请求的所述第二部分。
16.根据权利要求15所述的方法,其中作为对在所述至少一个端口处接收到所述数据接受担保的响应,生成和输出所述数据和在所述写入被执行之前所述数据的状态作为所述写请求的所述第二部分,而不管在所述写请求之前的所述数据的状态如何。
17.根据权利要求15所述的方法,其中作为对接收到所述数据接受担保的响应,并且作为对在所述写入被执行之前所述数据为无效的所述状态的响应,输出写取消请求作为所述写请求的所述第二部分。
18.一种保持数据访问请求的一致性的方法,包括: 接收来自至少一个发起方设备的数据访问请求; 将所述数据访问请求和探测请求发送给所述至少一个发起方设备和所述至少一个接收方设备中的至少一个; 存储待处理数据访问请求; 响应于所述数据访问请求生成探测请求,所述探测请求用于确定要被访问的所述数据是否被本地存储在所述发起方设备和所述接收方设备中的一个或多个中;以及 响应于接收到写请求的第一部分,通过不对所述写请求的所述第一部分做出响应来暂停所述写请求直到所述待处理读请求已完成,所述写请求的第一部分包括关于要对有待处理的读请求的地址执行写入的指示。
19.一种发 起方装置,包括: 用于生成数据访问请求的电路装置; 用于存储数据和存储与所述数据相关联的状态指示符的数据存储装置,所述状态指示符指示以下状态中的至少一个状态:所述数据是有效的,所述数据被存储在其它地方,以及所述数据是比存储在其它地方的所述数据的版本更新的所述数据的版本; 至少一个端口装置,用于输出所述数据访问请求以经由一致性控制器传输给至少一个接收方设备,并用于接收来自所述一致性控制器的信号和数据访问请求;其中 所述电路装置用于生成将存储在所述数据存储装置中的数据写入所述至少一个接收方设备中的一个的写请求,并且用于读取存储在所述至少一个接收方设备中的一个中的数据的读请求; 所述电路装置用于按两个部分生成所述写请求,第一部分包括关于写入要被执行的指示以及要被写入的所述数据的地址,而第二部分作为在所述至少一个端口装置处接收到数据接受担保的响应而被发送;其中 所述发起方装置还包括控制装置,用于响应于在所述至少一个端口装置处接收到探测请求,接受所述探测请求并控制所述探测请求以相同的方式被执行,不管所述探测请求是否正在请求访问其第一部分已被输出但是尚未接收到数据接受担保的有待处理写请求的位置;以及响应于在所述至少一个端口装置处接收到所述数据接受担保并且响应于要被写入的所述数据是有效的并且是被存储在其它地方的所述数据的版本的更新版本的状态,输出所述数据和在所述数据被写入之前的所述数据的所述当前状态作为所述写请求的所述第二部分。
20.一种保持存储在数据处理装置中的数据的数据一致性的一致性控制装置,所述数据处理装置包括至少一个发起方设备和至少一个接收方设备,所述一致性控制装置包括: 至少一个端口装置,用于接收来自所述至少一个发起方设备的数据访问请求并且用于将所述数据访问请求和探测请求发送给所述至少一个发起方设备和所述至少一个接收方设备中的至少一个; 用于存储待处理数据访问请求的缓冲器装置; 探测请求生成装置,用于响应于所述数据访问请求生成所述探测请求,所述探测请求用于确定要被访问的所述数据是否被本地存储在所述发起方设备和所述接收方设备中的一个或多个中;以及 一致性控制装置,用于响应于接收到写请求的第一部分,通过不对所述写请求的所述第一部分做出响应来暂停所述写请求直到所述待处理读请求已完成为止,所述写请求的第一部分包括关于要对有待处理的读`请求的地址执行写入的指示。
全文摘要
本发明公开了针对同时待处理数据访问请求的数据冲突处理。本发明公开了一种在一致性控制器中而非发起方设备中管理数据冲突的数据处理系统。该数据处理系统以两部分的形式处理写请求,以使得第一部分被发送并且当一致性控制器有空间接受数据时对所述第一部分做出响应,并且数据以及在写入之前的数据的状态作为写请求的第二部分被发送。当存在针对相同地址的同时待处理读和写时,一致性控制器通过不对写请求的第一部分做出响应来暂停写入,并且发起方设备继续处理针对所述写请求的地址处接收到的任何探测请求,而不管写请求正在等待处理的事实。当待处理读已完成时,一致性控制器将对写的第一部分做出响应,并且发起方设备将通过发送数据以及关于探测之后的数据状态的指示符来完成写入。然后,一致性控制器可以利用该信息根据需要更新存储器来避免任何可能的数据冲突。
文档编号G06F3/06GK103106122SQ20121029026
公开日2013年5月15日 申请日期2012年8月8日 优先权日2011年8月8日
发明者潘尼德拉·库玛·曼娜瓦, 詹姆师德·加拉, 拉玛穆尔西·古鲁·普拉萨哈, 迈克尔·艾伦·菲利波 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1