CN105095254A - 一种实现数据一致性的方法及装置 - Google Patents
一种实现数据一致性的方法及装置 Download PDFInfo
- Publication number
- CN105095254A CN105095254A CN201410190727.0A CN201410190727A CN105095254A CN 105095254 A CN105095254 A CN 105095254A CN 201410190727 A CN201410190727 A CN 201410190727A CN 105095254 A CN105095254 A CN 105095254A
- Authority
- CN
- China
- Prior art keywords
- request
- data
- data consistency
- subelement
- read
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种实现数据一致性的方法及装置,包括:确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
Description
技术领域
本发明涉及数据存储一致性的技术领域,尤其涉及一种实现数据一致性的方法及装置。
背景技术
目前,片内多处理器系统中的多个处理器都具有各自的高速缓冲存储器(cache),在保证多个cache之间以及cache与共享存储器之间的数据一致性时,会影响系统的性能和系统的精确性,因此,如何更有效地保证片内多处理器系统中数据存储的一致性是急需解决的重要问题。
发明内容
针对现有技术存在的问题,本发明实施例提供了一种实现数据一致性的方法及装置。
本发明实施例提供了一种实现数据一致性的装置,所述装置包括:从接口单元及监听控制单元;其中,
所述从接口单元,用于确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,并将协议转换处理后的数据一致性请求发送至所述监听控制单元;
所述监听控制单元,用于根据所述从接口单元发送的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
上述方案中,所述监听控制单元,还用于当收到的数据一致性请求为两个以上数据一致性请求时,对收到的两个以上数据一致性请求的执行进行仲裁,根据仲裁后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
上述方案中,所述从接口单元,还用于确定支持接收的数据一致性请求对应的协议时,将接收的数据一致性请求发送至所述监听控制单元。
上述方案中,所述从接口单元包括:第一从接口单元及第二从接口单元;其中,
所述第一从接口单元,用于将接收的来自第一主设备单元的第一读数据一致性请求发送至所述监听控制单元;
所述第二从接口单元,用于将接收的来自第二主设备单元的数据一致性请求进行协议转换处理,并将协议转换处理后的数据一致性请求发送至所述监听控制单元。
上述方案中,所述第二从接口单元,具体用于:将接收的第二主设备单元发送的支持高级可扩展接口(AXI,AdvancedeXtensibleInterface)协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;并将协议转换后的数据一致性请求的字节数转换成完整缓存数据行FullCacheLine字节数。
上述方案中,所述第二从接口单元包括:协议转换子单元、读操作转换子单元、读接口子单元、写操作转换子单元、以及写接口子单元;其中,
所述协议转换子单元,用于将接收的第二主设备单元发送的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;
所述读操作转换子单元,用于当第二主设备单元发送的数据一致性请求为第二读数据一致性请求时,将协议转换后的第二读数据一致性请求的字节数转换成完整缓存数据行FullCacheLine字节数;
所述读接口子单元,用于为所述字节数转换后的第二读数据一致性请求分发第二读数据一致性请求通道,复用读数据通道;
所述写操作转换子单元,用于当第二主设备单元发送的数据一致性请求为第二写数据一致性请求时,将协议转换后的第二写数据一致性请求的字节数转换成完整缓存数据行FullCacheLine字节数;
所述写接口子单元,用于为所述字节数转换后的第二写数据一致性请求分发第二写数据一致性请求通道,缓存写数据响应通道。
上述方案中,所述第二从接口单元还包括:仲裁子单元,用于当同时收到所述读接口子单元与所述写接口子单元发送的数据一致性请求时,对所述字节数转换后的第二读数据一致性请求及所述字节数转换后的第二写数据一致性请求的执行进行仲裁,并根据仲裁后的第二读数据一致性请求或第二写数据一致性请求向所述监听控制单元发送相应的数据一致性请求。
上述方案中,所述读接口子单元还用于阻塞传输事务间顺序。
上述方案中,写接口子单元还用于阻塞传输事务间顺序、处理写后写WAW和读后写RAW冲突。
上述方案中,所述第一从接口单元,还用于将来自第一主设备单元的第一写数据一致性请求发送至互连单元,直接向互连单元发起写操作。
上述方案中,所述监听控制单元包括标记控制子单元及数据交换子单元;其中,
所述标记控制子单元,用于接收第一从接口单元发送的第一读和/或第一写数据一致性请求、第二从接口单元发送的第二读和/或第二写一致性请求及数据交换子单元发送的无效请求invalidate,并对这些请求的执行进仲裁;当仲裁后的请求是第一读数据一致性请求或第二读数据一致性请求时,根据第一读数据一致性请求或第二读数据一致性请求查找标记存储器,如果查找到标记存储器,则根据标记存储器中的完整缓存数据行FullCacheLine信息生成命中结果;若命中结果中的完整缓存数据行FullCacheLine是有效状态,则向所述数据交换子单元发送监听请求,以获取读数据;若命中结果中的完整缓存数据行FullCacheLine是无效状态或命中结果中不存在完整缓存数据行FullCacheLine,则利用互连单元获取读数据;
所述数据交换子单元,用于根据命中信息将所述监听请求发送至第一主设备单元,接收第一主设备单元返回的监听响应和监听数据,并将监听数据发送至第一从接口单元或第二从接口单元后,向第一从接口单元或第二从接口单元发送数据一致性请求操作完成指示。
上述方案中,所述标记控制子单元,还用于当监听请求无响应时,利用互连单元获取读数据。
上述方案中,所述数据交换子单元,还用于收到第二从接口单元发送的无效请求后,向第二从接口单元返回无效请求响应;并向所述标记控制子单元发送对应标记存储的无效请求;
相应地,所述标记控制子单元,还用于收到数据交换子单元的无效请求后,将相应标记存储器设置成无效状态,同时根据收到的写回请求中的更新消息更新标记存储器;
第二从接口单元,还用于收到数据交换子单元的响应后,向互连单元发起写操作。
上述方案中,所述监听控制单元还包括仲裁子单元,用于:对标记控制子单元发送的读外部存储器memory请求及所述数据交换子单元发送的读外部存储器请求的执行进行仲裁,并将仲裁后的读请求发送至互连单元,接收互连单元返回的读数据。
本发明实施例还提供了一种实现数据一致性的方法,所述方法还包括:
确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理;
根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
上述方案中,所述对接收的数据一致性请求进行协议转换处理,包括:
将接收的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;并将协议转换后的数据一致性请求的字节数转换成完整缓存数据行FullCacheLine字节数。
上述方案中,当接收的数据一致性请求为读一致性请求时,所述根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作,包括:
根据协议转换处理后的读数据一致性请求,查找标记存储器,确定查找到标记存储器,向查找到的标记存储器对应的主设备单元发起监听,以获取读数据;确定未查找到标记存储器时,利用互连单元获取读数据。
上述方案中,所述方法还包括:
当监听无响应时,利用互连单元获取读数据。
上述方案中,当接收的数据一致性请求为写一致性请求时,所述根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作,包括:
根据字节数转换后的写数据一致性请求向实现数据一致性的装置的监听控制单元发送无效请求;
所述监听控制单元返回无效请求响应;
根据无效请求响应,向实现数据一致性的装置的互连单元发起写操作。
上述方案中,所述方法还包括:
阻塞传输事务间顺序;和/或,
处理WAW和RAW冲突。
本发明实施例提供的实现数据一致性的装置及方法,确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作,如此,可通过协议转换处理,解决大多数系统中不兼容ACE_Lite协议的问题,从而有效的解决了片内多处理器系统中存在的共享数据一致性问题。
附图说明
图1为本发明实施例一提供的实现数据一致性的一种装置结构示意图;
图2为本发明实施例一提供的实现数据一致性的另一种装置结构示意图;
图3为本发明一具体实施例的实现数据一致性的装置结构示意图;
图4为本发明实施例一提供的第二从接口单元结构示意图;
图5为本发明实施例一、二提供的读数据一致性请求转换时的接口时序示意图;
图6为本发明实施例一提供的写数据一致性请求转换时的接口时序示意图;
图7为本发明实施例一提供的监听控制单元结构示意图;
图8为本发明实施例二提供的实现数据一致性的方法流程示意图。
具体实施方式
为了能更好的理解本发明的内容,本文先介绍现有技术中常用的维护数据一致性的方法;现有技术中一般包括软件维护一致性的方法和硬件维护一致性的方法;软件维护一致性的方法虽然较容易实现,但精确性不高,并且在维护过程中会降低系统性能;硬件维护一致性的方法虽然设计复杂,但能够提高系统性能;例如,ARM公司发布的一种硬件维护一致性的架构,是基于高级微控制器总线架构(AMBA,AdvancedMicrocontrollerBusArchitecture)的总线监听及ACE(AXICoherencyExtensions)协议来实现的;其中,ACE协议是在AXI协议一致性方面扩展的协议,ACE_Lite协议是ACE协议的子集,一般来讲,自身有cache的处理器可以支持ACE协议,而自身没有cache的处理器则支持ACE_Lite协议。
但是,由于目前支持ACE协议的处理器较少,并且大部分输入输出(IO,InputOutput)设备只支持AXI协议,不支持ACE_Lite协议。因此在绝大部分的片内多处理器系统中,是不能兼容ACE_Lite协议的,从而导致片内多处理器系统中存在共享数据一致性的问题。
基于此,在本发明的各种实施例中:确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
下面通过附图及具体实施例对本发明的技术方案做进一步地详细说明。
实施例一
本实施例提供一种实现数据一致性的装置,如图1所示,所述装置包括:从接口单元11及监听控制单元12;其中,
所述从接口单元11,用于确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,并将协议转换处理后的数据一致性请求发送至所述监听控制单元12;
所述监听控制单元12,用于根据所述从接口单元11发送的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
这里,所述从接口单元11,还用于确定支持接收的数据一致性请求对应的协议时,直接将接收的数据一致性请求发送至所述监听控制单元12,以便所述监听控制单元12根据所述从接口单元11发送的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。其中,所述数据一致性请求包括读数据一致性请求及写数据一致性请求。
实际应用时,所述对接收的数据一致性请求进行协议转换处理,具体为:
对所述接收的数据一致性请求进行AXI协议到ACE_Lite协议的转换处理。
所述监听控制单元12,还用于当收到的数据一致性请求为两个以上数据一致性请求时,对收到的两个以上数据一致性请求的执行进行仲裁,根据仲裁后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
具体地,如图2所示,所述从接口单元11包括第一从接口单元111、第二从接口单元112;其中,
所述第一从接口单元111,用于将接收的来自第一主设备单元21的第一读数据一致性请求发送至所述监听控制单元12;
所述第二从接口单元112,用于将接收的来自第二主设备单元22的第二读数据一致性请求ReadOnce进行协议转换处理,并将协议转换处理后的第二读数据一致性请求ReadOnce发送至所述监听控制单元12;
所述监听控制单元12,用于对所述第一读数据一致性请求及第二读数据一致性请求ReadOnce的执行进行仲裁,根据仲裁后的第一读数据一致性请求或第二读数据一致性请求ReadOnce确定未查找到对应的标记存储器tag_ram时,向所述互连单元23发送读数据操作指示,以获取读数据;确定查找到对应的标记存储器tag_ram时,向查找到的标记存储器tag_ram所对应的主设备单元发起监听,以获取读数据;这里,因为所述监听控制单元12在同一时刻只能处理一个一致性请求,所以所述监听控制单元12需要对第一从接口单元111发送的第一读数据一致性请求和第二从接口单元112发送的第二读数据一致性请求ReadOnce的执行进行仲裁。
如果所述监听控制单元12仲裁后的请求是所述第一读数据一致性请求时,则对所述第一读数据一致性请求处理完毕之后,还需对第二读数据一致性请求ReadOnce进行处理;或者,如果所述监听控制单元12仲裁后的请求是所述第二读数据一致性请求ReadOnce时,则对所述第二读数据一致性请求ReadOnce处理完毕之后,还需对第一读数据一致性请求进行处理。
这里,所述监听控制单元12对所述第一读数据一致性请求及第二读数据一致性请求ReadOnce的执行进行仲裁的具体实现方式有很多种,比如:可以根据轮询仲裁的方式对所述第一读数据一致性请求及第二读数据一致性请求ReadOnce的执行进行仲裁,还可以根据最近最少访问或伪随机的仲裁方式进行仲裁等等。
实际应用时,如图3所示,所述互连单元23可以包括五个主接口单元,六个从接口单元;其中,六个从接口单元分别连接第一主设备单元21对应的第一从接口单元111、第二主设备单元22对应的第二从接口单元112及监听控制单元12;一个主接口单元用于连接各寄存器,其余四个主接口单元作为输出,连接从设备单元31;其中,所述各寄存器包括:无效标记存储器tag_ram寄存器、earlywresp控制寄存器、超时阈值寄存器、中断状态寄存器、调试debug控制寄存器及中断屏蔽寄存器;
实际应用时,本实施例提供的装置是在各个寄存器的使能下进行工作的;比如:在装置初始化时,所述无效标记存储器tag_ram寄存器向监听控制单元12提供无效使能信号,以便所述监听控制单元根据无效使能信号将相应标记存储器tag_ram预设成无效状态;所述earlywresp控制寄存器向所述第一从接口单元111提供控制信号,以使所述第一从接口单元111根据所述控制信号选择写响应提前返回earlyresponse或写响应正常返回normalresponse的方式;所述超时阈值寄存器向所述第一从接口单元111提供计数阈值周期,以使所述第一从接口单元111通过计数检测来判断数据传输的各阶段是否超时;当判断为超时时,所述第一从接口单元111根据所述中断状态寄存器提供的超时中断信号产生超时中断;所述调试debug控制寄存器用于对实现数据一致性的装置中的相应模块的状态信号进行调试;所述中断屏蔽寄存器用于屏蔽掉实现数据一致性的装置中相应模块的中断状态信号。
其中,所述调试debug控制寄存器的具体作用不是本发明实施例关心的内容。
相应地,所述第一主设备单元21可以至少包括两个设备单元cluster,所述cluster可以为支持ACE协议的主设备ACEmaster;比如,可以为ARM公司的ARMCortexA15及ARMCortexA7。
所述第二主设备单元22可以至少包括一个主设备,可以为支持ACE_Lite协议的主设备ACE_Litemaster,或者是支持AXI协议的主设备AXImaster;比如可以为IO主设备、图形处理器(GPU,GraphicProcessingUnit)、直接内存存取(DMA,DirectMemoryAccess)以及AXI子系统等。
所述从设备单元31可以至少包括一个从设备,可以为支持AXI协议的从设备AXIslave,所述从设备也可以包括外部存储器memory。
实际应用时,所述第二主设备单元22及所述从设备单元31的个数可根据系统需要进行扩展或剪裁。
所述第二从接口单元112,还用于:对接收的来自第二主设备单元22的第二写数据一致性请求WriteUnique进行协议转换处理,根据协议转换后的第二写数据一致性请求WriteUnique,向监听控制单元12发送无效请求invalidate,并接收监听控制单元12返回的无效请求响应后,向所述互连单元23发起写操作。
这里,如4所示,所述第二从接口单元112包括:协议转换子单元1121、读操作转换子单元1122、读接口子单元1123、写操作转换子单元1124、写接口子单元1125、仲裁子单元1126;其中,
所述协议转换子单元1121,用于将接收的第二主设备单元22发送的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;
所述读操作转换子单元1122,用于当第二主设备单元发送的数据一致性请求为第二读数据一致性请求时,将协议转换后的第二读数据一致性请求ReadOnce的字节数转换成完整缓存数据行FullCacheLine字节数;
所述读接口子单元1123,用于为所述字节数转换后的第二读数据一致性请求ReadOnce分发第二读数据一致性请求ReadOnce通道,复用读数据通道,并将字节数转换后的第二读数据一致性请求ReadOnce发送给所述仲裁子单元1126;
所述写操作转换子单元1124,用于当第二主设备单元发送的数据一致性请求为第二写数据一致性请求WriteUnique时,将协议转换后的第二写数据一致性请求WriteUnique的字节数转换成完整缓存数据行FullCacheLine字节数;
所述写接口子单元1125,用于为所述字节数转换后的第二写数据一致性请求WriteUnique分发第二写数据一致性请求WriteUnique通道,缓存写数据响应通道,并根据字节数转换后的第二写数据一致性请求WriteUnique向所述仲裁子单元1126发送无效请求invalidate;
所述仲裁子单元1126,用于当同时收到所述读接口子单元1123与所述写接口子单元1125发送的数据一致性请求时,对所述字节数转换后的第二读数据一致性请求ReadOnce及所述字节数转换后的第二写数据一致性请求WriteUnique的执行进行仲裁,并根据仲裁后的第二读数据一致性请求ReadOnce或第二写数据一致性请求WriteUnique向所述监听控制单元12发送相应的数据一致性请求;具体地,当仲裁后的数据一致性请求为第二读数据一致性请求ReadOnce时,将字节数转换后的第二读数据一致性请求ReadOnce发送给所述监听控制单元12;当仲裁后的数据一致性请求为第二写数据一致性请求WriteUnique时,向所述监听控制单元12发送无效请求invalidate。其中,所述字节数转换后的第二读数据一致性请求ReadOnce是指读共享数据且读出的共享数据不被缓存的请求。
这里,当所述仲裁子单元1126同时收到所述读接口子单元1123与所述写接口子单元1125发送的数据一致性请求时,若所述仲裁子单元1126仲裁后的请求是第二读数据一致性请求ReadOnce时,将第二读数据一致性请求ReadOnce发送至所述监听控制单元12后,还需根据所述第二写数据一致性请求WriteUnique向所述监听控制单元12发送无效请求invalidate;或者,
当所述仲裁子单元1126仲裁后的请求是第二写数据一致性请求WriteUnique时,根据第二写数据一致性请求WriteUnique向所述监听控制单元12发送无效请求invalidate后,还需将所述第二读数据一致性请求ReadOnce发送至所述监听控制单元12。
具体地,当所述第二主设备单元22包括AXImaster时,所述协议转换子单元1121,具体用于:根据AXImaster中不同的AXI地址产生不同的ACE_Lite传输类型,将支持AXI协议的第二读或写数据一致性请求转换成支持ACE_Lite协议的第二读或写数据一致性请求,以使AXImaster发送的第二读或写数据一致性请求可以有效发送,换句话说,以使AXImaster发送的第二读或写数据一致性请求得到所述监听控制单元12相应的响应;其中,所述传输类型包括:写地址通道的监听请求AWSNOOP、读地址通道的监听请求ARSNOOP;所述AXI地址与ACE_Lite传输类型之间的映射关系可预先配置。
当所述第二主设备单元22发送的第二数据一致性请求是第二读数据一致性请求ReadOnce时,所述读操作转换子单元1121,具体用于:利用内容寻址存储器(CAM,ContentAddressableMemory)、拆分算法及控制逻辑将协议转换后的第二读数据一致性请求ReadOnce的字节数转换成完整缓存数据行FullCacheLine字节数;具体地,所述读操作转换子单元1122将收到的协议转换后的第二读数据一致性请求ReadOnce进行字节合并,过滤掉多余字节,以满足原始命令数据量burst的要求;这里,因为所述监听控制单元12要求读数据一致性请求的字节数与缓存数据行完整缓存数据行FullCacheLine字节数相同,而所述协议转换后的第二读数据一致性请求ReadOnce的字节数却无类似的限制,所以需要进行字节数的转换;
其中,所述完整缓存数据行FullCacheLine字节数通常为32byte或64byte;所述原始命令数据量burst包括:数据位宽、数据类型及数据长度,所述数据位宽一般为32bit、64bit或128bit;所述数据类型包括:固定型fixed、增加型incr及回绕型wrap;所述数据长度至少包括一笔数据,所述CAM的存储单元个数可根据系统要求进行配置。
比如,假设完整缓存数据行FullCacheLine字节数要求为32byte,数据位宽为128bit,则对应的原始命令数据量burst的数据位宽也为128bit,数据类型为回绕型、回绕长度为2(wrap2);则第二读数据一致性请求ReadOnce转换时的接口时序如图5所示。
由图5可以获知,可将字节转换后的第二读数据一致性请求ReadOnce中低位地址为12’h18、数据位宽为64bit、数据类型为incr4的burst拆成低位地址为12’h10、数据位宽为128bit、wrap2及低位地址为12’h20、数据位宽为128bit、wrap2这两个原始命令数据量burst;其中,当不需要第一个原始命令数据量burst数据的第二笔数据时,则跳过skip第二笔数据,第二个原始命令数据量burst的第一笔数据保持了两个周期,对应着s侧中地址分别为12’h20及12’h28的数据;并且,s侧在收到第四笔数据时将rlast_s拉高;
这里,还可将字节转换后的第二读数据一致性请求ReadOnce中低位地址为12’h18、数据位宽为64bit,wrap4的burst拆成两个低位地址都为12’h10,数据位宽为128bit,wrap2的原始命令数据量burst。其中,第一个原始命令数据量burst的第二笔数据保持了两个周期,对应s侧中地址分别为12’h00及12’h08的数据;s侧收到第四笔数据时将rlast_s拉高,其中,当不需要第二个原始命令数据量burst的第二笔数据时,则跳过skip第二笔数据;所述s侧是指从设备slave的接口信号,所述m侧是指第二主设备单元22的接口信号,所述s侧的信息对应读操作转换子单元1122转换后输出的m侧的信息。
所述s侧的信息包括:araddr_s、arvalid_s、arready_s、rdata_s、rlast_s、rvalid_s、rready_s;所述rlast_s是指s侧最后一笔读数据一致性请求信号,所述araddr_s是指s侧读地址通道的地址;所述arvalid_s是指s侧读址址通道的请求;所述arready_s是指s侧读地址通道请求响应;所述rdata_s是指s侧读数据通道的读数据;所述rlast_s是指s侧最后一笔读数据的指示信号;所述rvalid_s是指s侧读数据通道的请求;所述rready_s是指s侧读数据通道的请求响应;
所述m侧的信息包括:araddr_m、arvalid_m、arready_m、rdata_m、rlast_m、rvalid_m、rready_m;所述araddr_m是指m侧读地址通道的地址;所述arvalid_m是指m侧读地址通道的请求;所述arready_m是指m侧读地址通道的请求响应;所述rdata_m是指m侧读数据通道的读数据;所述rlast_m是指m侧最后一笔读数据的指示信号;所述rvalid_m是指m侧读数据通道的请求;所述rready_m是指m侧读数据通道的请求响应;所述beat_complete是指当前一笔数据结束;所述last_match是指最后一笔数据;上述araddr_s、arvalid_s、arready_s、rvalid_s、rlast_s、rdata_s、rready_s、araddr_m、arvalid_m、arready_m、rvalid_m、rlast_m、rdata_m、rready_m分别对应AXI协议中的标准信号。
当所述读操作转换子单元1122将协议转换子单元1121转换后的第二读数据一致性请求ReadOnce字节数转换完成之后,所述读接口子单元1123,具体用于:利用缓存器buffer缓存所述读操作转换子单元1122字节数转换后的第二读数据一致性请求ReadOnce,并为所述读操作转换子单元1122字节数转换后的第二读数据一致性请求ReadOnce分发读数据一致性请求通道,复用读数据通道;其中,所述复用读数据通道为:当所述监听控制单元12及所述互连单元23同时返回读数据时,先返回所述监听控制单元12的读数据。
为了避免死锁,所述读接口子单元1123还用于阻塞传输事务间顺序ordering;所述阻塞传输事务间顺序ordering包括:所有一致性传输数据请求全部结束后,当前无一致性传输数据的请求才能发出;或者,所有无一致性传输数据请求全部结束后,当前一致性传输数据的请求才能发出。
当所述第二主设备单元22发送的第二数据一致性请求是第二写数据一致性请求WriteUnique时,所述写操作转换子单元1124,具体用于:利用CAM、拆分算法及控制逻辑将协议转换后的第二写数据一致性请求WriteUnique的字节数转换成完整缓存数据行FullCacheLine字节数;这里,因为本发明实施例设计的监听控制单元12要求写数据一致性请求WriteUnique的字节数与完整缓存数据行FullCacheLine字节数相同,而所述协议转换后的第二写数据一致性请求WriteUnique的字节数却无类似的限制,所以需要进行字节数的转换,将协议转换后的第二写数据一致性请求WriteUnique进行拆分,经过拆分后的每个原始命令数据量burst的总字节数都小于或等于完整缓存数据行FullCacheLine字节数,收到的WriteUnique合并之后,过滤掉多余字节,以满足原始命令数据量burst的要求;
具体地,与转换所述第二读数据一致性请求ReadOnce类似,比如,假设完整缓存数据行FullCacheLine字节数要求为32byte,数据位宽为128bit,则对应的burst的数据位宽也为128bit,数据类型为回绕型、回绕长度为2(wrap2);则写数据一致性请求WriteUnique转换时的接口时序如图6所示。
由图6可以获知,可将所述字节转换后的第二写数据一致性请求WriteUnique的低位地址为12’h18、数据位宽为64bit、数据类型为incr4的原始命令数据量burst分别拆成低位地址为12’h18、数据位宽为128bit、wrap2及低位地址为12’h20、数据位宽为128bit、incr8这两个原始命令数据量burst;并且将m侧返回的两个写通道数据响应bresp合并成一个写通道数据响应bresp后从s侧发出;
这里,还可将所述字节转换后的第二写数据一致性请求WriteUnique中低位地址为12’h10、数据位宽为128bit,wrap4的原始命令数据量burst分别拆成低位地址为12’h10,数据位宽为128bit,incr1的原始命令数据量burst、低位地址为12’h20,数据位宽为128bit,incr2的burst及低位地址为12’h00,数据位宽为128bit,incr1的原始命令数据量burst;并且将m侧返回的三个写通道数据响应bresp合并成一个写通道数据响应bresp后从s侧发出;其中,所述m侧为主设备单元的接口;所述awaddr_s是指s侧写地址通道的地址;所述awvalid_s是指s侧写地址通道的请求;所述awready_s是指s侧写地址通道的请求响应;所述wdata_s是指s侧写数据通道的写数据;所述wlast_s是指s侧最后一笔写数据的指示信号;所述bvalid_s是指s侧写响应通道的请求;所述bready_s是指s侧写响应通道的请求响应;所述awaddr_m是指m侧写地址通道的地址;所述awvalid_m是指m侧写地址通道的请求;所述awready_m是指m侧写地址通道的请求响应;所述wdata_m是指m侧写数据通道的写数据;所述wlast_m是指m侧最后一笔写数据指示信号;所述bvalid_m是指m侧写响应通道的请求;所述bready_m是指m侧写响应通道的请求响应;上述awaddr_s、awvalid_s、awready_s、wdata_s、wlast_s、bvalid_s、bready_s、awaddr_m、awvalid_m、awready_m、wdata_m、wlast_m、bvalid_m、bready_m分别对应AXI协议中的标准信号。
当所述写操作转换子单元1124将第二写数据一致性请求WriteUnique的字节转换完成之后,所述写接口子单元1125,具体用于:首先利用缓存器buffer缓存字节转换后的第二写数据一致性请求WriteUnique,并为第二写数据一致性请求WriteUnique分发写数据一致性请求通道;再将无效请求invalidate的字节数调整成与所述字节转换后的第二写数据一致性请求WriteUnique字节数相等,将无效请求invalidate发送至监听控制单元12,接收监听控制单元12返回的无效请求响应inv_done后,向所述互连单元23发起写操作,缓存写数据响应通道;
这里,由于监听控制单元12返回的无效请求响应inv_done可能是乱序的,为了保证经所述写操作转换子单元1124字节数转换后的第二写数据一致性请求与第二主设备单元22发送的第二写数据一致性请求WriteUnique顺序的一致性,所述写接口子单元1125在无效请求invalidate的标识inv_id中除了添加有第二主设备单元22的写地址通道标识awid外,还要在字节数转换后的第二写数据一致性请求WriteUnique中添加buffer号,并保存在buffer中;如果返回的inv_id与保存的buffer号一致,才将对应的经所述写操作转换子单元1124字节数转换后的第二写数据一致性请求WriteUnique发送至互连单元23。
为了避免死锁,所述写接口子单元1125还用于阻塞传输事务间顺序ordering、处理写后写WAW和读后写RAW冲突;其中,
所述阻塞传输事务间顺序ordering包括:所有一致性传输数据请求全部结束后,当前无一致性传输数据的请求才能发出;或者,所有无一致性传输数据请求全部结束后,当前一致性传输数据的请求才能发出。
对于WAW冲突,所述写接口子单元1125会将字节转换后的第二写数据一致性请求WriteUnique发送至第一从接口单元11中,若与所述第一写数据一致性请求之间存在冲突,所述写接口子单元1125则会阻塞字节转换后的第二写数据一致性请求WriteUnique,直至第一从接口单元111的字节转换后的第一写数据一致性请求完成操作;所述WAW冲突是指第一主设备单元21对该地址区域进行写操作之后,第二主设备单元22对该地址区域进行写操作;或者指第二主设备单元22对该地址区域进行写操作之后,第一主设备单元21对该地址区域进行写操作。
对于RAW冲突,所述写接口子单元1125利用CAM保存未处理的第二写数据一致性请求的写地址通道标识awid地址,所述监听控制单元12将第二写数据一致性请求WriteUnique的miss地址发送至写接口子单元1125,所述写接口子单元1125判断第二写数据一致性请求WriteUnique的miss地址与pending地址是否相同,若相同,则向所述监听控制单元12返回冲突信号hazard,以保证字节转换后的第二写数据一致性请求WriteUnique完成操作,只有字节数转换后的第二写数据一致性请求WriteUnique完成操作后,所述监听控制单元12才会向互连单元23发起读数据一致性操作;其中,所述miss地址是指无命中结果的地址;所述写地址通道标识awid用于查找写响应通道标识bid以及从CAM中读取数据;所述RAW是指第一主设备单元21通过第一从接口单元111对该地址区域进行写操作之后,第二主设备单元22通过第二从接口单元112对该地址区域进行读操作;或者是指第一主设备单元21对该地址区域进行写操作之后,第二主设备单元22对该地址区域进行读操作。
当所述第二主设备单元22同时发送所述第二读数据一致性请求ReadOnce和第二写数据一致性请求WriteUnique时,所述仲裁子单元1126,具体用于对所述字节转换后的第二读数据一致性请求ReadOnce和字节转换后的第二写数据一致性请求WriteUnique的执行进行仲裁;这里,因为第二从接口单元112与监听控制单元12之间的一致性请求接口只有一个,所以仲裁子单元1126需要对所述第二读数据一致性请求ReadOnce和第二写数据一致性请求WriteUnique进行仲裁后,向监听控制单元12发送第二读数据一致性请求ReadOnce或第二写数据一致性请求WriteUnique。
另外,当所述从接口单元11确定支持接收的数据一致性请求对应的协议时,则不需要对接收的数据一致性请求进行协议转换处理,直接将接收的数据一致性请求发送至所述监听控制单元12。
具体地,在有一致性数据传输要求的情况下,所述第一从接口单元11,具体用于:根据先进先出(FIFO,FirstInFirstOut)缓存传输类型、数据地址冲突、传输事务间顺序ordering情况,将所述第一主设备单元21的第一读数据一致性请求发送至监听控制单元12,或者将第一主设备单元21的第一写数据一致性请求发送至互连单元23,直接向互连单元23发起写操作;
这里,所述第一从接口单元111,支持通过earlywresp寄存器提供的控制信号选择写响应提前返回earlyresponse或写响应正常返回normalresponse的方式。对于写响应提前返回earlyresponse方式,当根据写数据一致性请求完成写操作后,则返回写响应;如果实际写响应有错误error,第一从接口单元111则会记录错误传输的地址和标识ID;对于写响应正常返回normalresponse方式,将实际写响应返回给第一主设备单元21。
这里,当第一主设备单元21进行除读和写外的其它一致性维护性操作时,所述第一从接口单元111,还用于:将改写后的数据dirty数据复本唯一cleanunique请求或复本共有cleanshared请求或复本无效cleaninvalid请求发送至监听控制单元12,以对复本进行清除clean操作或make操作;所述make操作是指:根据复本唯一cleanunique请求或复本共有cleanshared请求或复本无效cleaninvalid请求对复本进行唯一操作或共有操作或无效操作。
所述第一从接口单元111,还具有数据传输超时检测功能,在数据传输过程中,通过计数检测来判断数据传输的各阶段是否超时;具体地,第一主设备单元21通过握手机制向从设备单元31发送valid信号,当第一从接口单元111判断如果在超时阈值周期内没有接收到接收从设备单元31返回的ready信号时,认为数据传输超时,产生超时中断;所述超时阈值周期可根据实际情况预先配置。
另外,在无一致性数据传输要求的情况下,所述第一从接口单元111根据先FIFO缓存传输类型、数据地址冲突、传输事务间顺序ordering情况,将第一主设备单元21发送的第一读或写数据一致性请求发送至所述互连单元23;所述第二从接口单元112将第二主设备单元22的第二读或写数据一致性请求直接发送至互连单元23,以访问相应的从设备单元31;其中,从设备单元31至少包括一个。
当所述第一从接口单元21、第二从接口单元112同时向监听控制单元12发送第一读数据一致性请求、第二读或写数据一致性请求时,所述监听控制单元12,具体用于:根据第一读数据一致性请求或字节数转换后的第二读数据一致性请求ReadOnce,确定查找到标记存储器tag_ram,向所述发送第一读数据一致性请求的第一主设备单元21发送监听请求,获取访问数据;若第一主设备单元21未响应监听请求,监听控制单元12则向互连单元23发送读数据操作,获取读数据;若确定未查找到标记存储器tag_ram,则向所述互连单元23发送读数据操作;或者,
响应第二从接口单元112发送的无效请求invalidate,以使第二从接口单元112向互连单元23发起写操作。
具体地,如图7所示,所述监听控制单元12包括:标记控制子单元snoop_tag_ctl121、数据交换子单元snoop_ddi122、仲裁子单元snoop_arb123;其中,
所述标记控制子单元121,用于:接收第一从接口单元111发送的第一读或写数据一致性请求、第二从接口单元112发送的第二读或写一致性请求及数据交换子单元121发送的无效请求invalidate,并对这些请求的执行进行仲裁;
当仲裁后的请求是第一读数据一致性请求或第二读数据一致性请求ReadOnce时,所述标记控制子单元121,具体用于:根据第一读数据一致性请求或第二读数据一致性请求ReadOnce查找标记存储器tag_ram,如果查找到标记存储器tag_ram,则根据标记存储器tag_ram中的完整缓存数据行FullCacheLine信息生成命中结果;其中,若命中结果中的完整缓存数据行FullCacheLine是有效状态,则向数据交换子单元122发送监听请求,以获取读数据;若命中结果中的完整缓存数据行FullCacheLine是无效状态或命中结果中不存在完整缓存数据行FullCacheLine,所述标记控制子单元121则利用互连单元23向外部存储器memory发送读memory请求;所述操作类型为ReadClean,所述ReadClean是指读共享数据并且读出的共享数据不被缓存,所述标记存储器tag_ram中记录了所访问的完整缓存数据行FullCacheLine是否存在于第一主设备单元21的cache中;所述第二从接口单元112还可以通过侦听第一从接口单元111判断是否能获取访问数据;如果第二主设备单元22需要访问的数据在第一主设备单元21的cache中,则在无需访问从设备单元31的情况下就可以直接从第一主设备单元21的cache中获取访问数据,这样,可以减少访问时间,提高访问效率。
如果所述第一从接口单元111、第二从接口单元112发出的数据一致性请求具有相同的标识ID,所述标记控制子单元121还用于确保处理这些请求的顺序一致性。
另外,如果第一主设备单元21进行除读和写外的其它一致性维护操作时,所述标记控制子单元121,具体还用于:根据复本唯一cleanunique请求或复本共有cleanshared请求或复本无效cleaninvalid请求查找标记存储器tag_ram,如果查找到标记存储器tag_ram,则根据标记存储器tag_ram中的完整缓存数据行FullCacheLine信息生成命中结果;其中,若命中结果中的完整缓存数据行FullCacheLine是有效状态,则向数据交换子单元122发送监听请求,以获取读数据及数据状态。其中,对于需要写回的ditry数据,所述监听控制单元12向互连单元23发送写操作。
当所述标记控制子单元121向所述数据交换子单元122发送监听请求时,所述数据交换子单元122,用于:根据命中信息将所述监听请求发送至第一主设备单元21,接收第一主设备单元21返回的监听响应cresponse和监听数据cdata,并将监听数据cdata发送至第一从接口单元111或第二从接口单元112后,向第一从接口单元111或第二从接口单元112发送数据一致性请求操作完成指示;当监听请求无响应时,所述标记控制子单元121,还用于利用互连单元23向外部存储器memory发送读外部存储器memory请求;所述命中信息包括:命中结果和操作类型。
当所述写操作转换子单元1124发送无效请求invalidate时,所述数据交换子单元122,还用于向写操作转换子单元1124返回无效请求响应inv_done后,向标记控制子单元121发送对应标记存储器tag_ram的无效请求,以使标记控制子单元121将相应标记存储器tag_ram设置成无效状态,同时根据写回writeback请求中的更新消息更新标记存储器tag_ram;其中,所述写回writeback请求是指第一从接口单元111向监听控制单元12发送的将数据写回memory的请求。这里,因为在装置工作过程中,标记存储器tag_ram可能从无效状态变成有效状态,因此,还需要标记控制单元121将需要的相应标记存储器tag_ram重新设置成无效状态。
另外,当dirty数据需要写入外部存储器memory时,所述标记控制子单元121,还用于利用互连单元23向外部存储器memory发送写操作,以将dirty数据写入外部存储器memory中。
当标记控制子单元121及所述数据交换子单元122同时发送读memory请求时,所述仲裁子单元123,具体用于:对标记控制子单元121发送的读外部存储器memory请求及所述数据交换子单元122发送的读外部存储器memory请求的执行进行仲裁,并将仲裁后的读memory请求发送至互连单元23,接收互连单元23返回的读数据;
当所述仲裁子单元123同时接收到数据交换子单元122发送的读数据及互连单元23返回的读数据时,所述仲裁子单元123,还用于对数据交换子单元122发送的监听数据及互连单元23返回的读数据进行仲裁后,将读数据发送至第一从接口单元111或第二从接口单元112。
这里,由于监听控制单元12是用于维护第一主设备单元21中两个cluster之间的数据一致性,但是若要采用现有技术中记录完整缓存数据行FullCacheLine状态的方法,来记录各个完整缓存数据行FullCacheLine状态,需要消耗非常大的资源,并且方法复杂,难以实现;因此,本实施例中,所述监听控制单元12采用的是分段地址计数法,来记录各个cluster中完整缓存数据行FullCacheLine的存在状态,不但容易实现,而且能较精确地记录完整缓存数据行FullCacheLine的状态。
所述方法包括两个基本特性:(1)如果监听控制单元12中的记录表明某完整缓存数据行FullCacheLine存在于某个cluster中,但实际上,由于监听算法的不精准性,导致该完整缓存数据行FullCacheLine很有可能在该cluster中是处于无效状态的;(2)如果监听控制单元12中的记录表明该cluster中不存在完整缓存数据行FullCacheLine,则该cluster肯定不包含该完整缓存数据行FullCacheLine,即该完整缓存数据行FullCacheLine在这个cluster中肯定处于无效状态;因此,可以精确记录完整缓存数据行FullCacheLine的状态。
实际应用时,本发明实施例提供的从接口单元11可由实现数据一致性的装置中的物理接口及专用集成电路(ASIC,ApplicationSpecificIntergratedCircuit)或可编程逻辑阵列(FPGA,Field-ProgrammableGateArray)实现,监听控制单元12可由实现数据一致性的装置中的ASIC或FPGA实现。
本实施例是基于AMBA4ACE协议,结合互连单元和数据一致性的功能,从硬件上解决了多处理器系统中存在的共享存储数据一致性问题,减少软件干预及外部存储器的访问次数,提高系统访问效率,降低了内存访问带来的功耗。
实施例二
相应于实施例一,本发明实施例还提供了一种实现数据一致性的方法,如图8所示,该方法主要包括几个步骤:
步骤801,确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理;
这里,当确定支持接收的数据一致性请求对应的协议时,则不对接收的数据一致性请求进行协议转换处理。
本步骤中,所述确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,包括:
将接收的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;
该方法还包括:
将协议转换后的读数据一致性请求ReadOnce的字节数转换成完整缓存数据行FullCacheLine字节数;
为字节数转换后的读数据一致性请求ReadOnce分发读数据一致性请求ReadOnce通道,复用读数据通道;
将协议转换后的写数据一致性请求WriteUnique的字节数转换成完整缓存数据行FullCacheLine字节数;
为字节数转换后的写数据一致性请求WriteUnique分发写数据一致性请求WriteUnique通道,缓存写数据响应通道;
对所述字节数转换后的读数据一致性请求ReadOnce及所述字节数转换后的写数据一致性请求WriteUnique的执行进行仲裁;其中,所述协议转换后的读数据一致性请求ReadOnce是指读共享数据且读出的共享数据不被缓存的请求。
具体地,在有一致性数据传输要求的情况下,当所述数据一致性请求对应的主设备包括AXImaster时,根据AXImaster中不同的AXI地址产生不同的ACE_Lite传输类型,将支持AXI协议的读或写数据一致性请求转换成支持ACE_Lite协议的读或写数据一致性请求,以使AXImaster发送的读或写数据一致性请求可以有效发送,换句话说,以使AXImaster发送的读或写数据一致性请求得到相应的响应;其中,所述传输类型包括:写地址通道的监听请求AWSNOOP、读地址通道的监听请求ARSNOOP;所述AXI地址与ACE_Lite传输类型之间的映射关系可预先配置。
这里,当发送的数据一致性请求是读数据一致性请求ReadOnce时,利用CAM、拆分算法及控制逻辑将协议转换后的读数据一致性请求ReadOnce的字节数转换成完整缓存数据行FullCacheLine字节数;具体地,将收到的协议转换后的读数据一致性请求ReadOnce进行字节合并,过滤掉多余字节,以满足原始命令数据量burst的要求;这里,因为所述监听控制单元要求读数据一致性请求的字节数与缓存数据行完整缓存数据行FullCacheLine字节数相同,而所述协议转换后的读数据一致性请求ReadOnce的字节数却无类似的限制,所以需要进行字节数的转换;
其中,所述完整缓存数据行FullCacheLine字节数通常为32byte或64byte;所述原始命令数据量burst包括:数据位宽、数据类型及数据长度,所述数据位宽一般为32bit、64bit或128bit;所述数据类型包括:固定型fixed、增加型incr及回绕型wrap;所述数据长度至少包括一笔数据,所述CAM的存储单元个数可根据系统要求进行配置。
比如,假设完整缓存数据行FullCacheLine字节数要求为32byte,数据位宽为128bit,则对应的原始命令数据量burst的数据位宽也为128bit,数据类型为回绕型、回绕长度为2(wrap2);则读数据一致性请求ReadOnce转换时的接口时序如图5所示。
由图5可以获知,可将字节数转换后的读数据一致性请求中的低位地址为12’h18、数据位宽为64bit、数据类型为incr4的burst拆成低位地址为12’h10、数据位宽为128bit、wrap2及低位地址为12’h20、数据位宽为128bit、wrap2这两个原始命令数据量burst;其中,并不需要返回的第一个原始命令数据量burst数据的第二笔数据时,则跳过skip第二笔数据,第二个原始命令数据量burst的第一笔数据保持了两个周期,对应着s侧中地址分别为12’h20及12’h28的数据;并且,s侧在收到第四笔数据时将rlast_s拉高;
这里,还可将字节数转换后的读数据一致性请求ReadOnce中的低位地址为12’h18、数据位宽为64bit,wrap4的原始命令数据量burst拆成两个低位地址都为12’h10,数据位宽为128bit,wrap2的burst。其中,第一个原始命令数据量burst的第二笔数据保持了两个周期,对应s侧中地址分别为12’h00及12’h08的数据;s侧收到第四笔数据时将rlast_s拉高,其中,当不需要第二个原始命令数据量burst的第二笔数据时,则跳过skip第二笔数据;其中,所述s侧是指从设备slave的接口信号,所述m侧是指主设备单元的接口信号,所述s侧的信息第二从接口单元转换后输出的m侧的信息;
所述s侧的信息包括:araddr_s、arvalid_s、arready_s、rdata_s、rlast_s、rvalid_s、rready_s;所述rlast_s是指s侧最后一笔读数据一致性请求信号,所述araddr_s是指s侧读地址通道的地址;所述arvalid_s是指s侧读地址通道的请求;所述arready_s是指s侧读地址通道请求响应;所述rdata_s是指s侧读数据通道的读数据;所述rlast_s是指s侧最后一笔读数据的指示信号;所述rvalid_s是指s侧读数据通道的请求;所述rready_s是指s侧读数据通道的请求响应;
所述m侧的信息包括:araddr_m、arvalid_m、arready_m、rdata_m、rlast_m、rvalid_m、rready_m;所述araddr_m是指m侧读地址通道的地址;所述arvalid_m是指m侧读地址通道的请求;所述arready_m是指m侧读地址通道的请求响应;所述rdata_m是指m侧读数据通道的读数据;所述rlast_m是指m侧最后一笔读数据一致性请求信号,所述rvalid_m是指m侧读数据通道的请求;所述rready_m是指m侧读数据通道的请求响应;所述beat_complete是指当前一笔数据结束;所述last_match是指最后一笔数据;上述araddr_s、arvalid_s、arready_s、rvalid_s、rlast_s、rdata_s、rready_s、araddr_m、arvalid_m、arready_m、rvalid_m、rlast_m、rdata_m、rready_m分别对应AXI协议中的标准信号。
当读数据一致性请求ReadOnce的字节数转换完成之后,利用缓存器buffer缓存字节数转换后的读数据一致性请求ReadOnce,并为字节数转换后的读数据一致性请求ReadOnce分发读数据一致性请求通道,复用读数据通道;其中,所述复用读数据通道为:当实现数据一致性的装置的监听控制单元及所述实现数据一致性的装置的互连单元同时返回读数据时,先返回所述监听控制单元的读数据。
为了避免死锁,还需要阻塞传输事务间顺序ordering;所述阻塞传输事务间顺序ordering包括:所有一致性传输数据请求全部结束后,当前无一致性传输数据的请求才能发出;或者,所有无一致性传输数据请求全部结束后,当前一致性传输数据的请求才能发出。
另外,当发送的数据一致性请求是写数据一致性请求WriteUnique时,利用CAM、拆分算法及控制逻辑将协议转换后的写数据一致性请求WriteUnique的字节数转换成完整缓存数据行FullCacheLine字节数;
这里,因为本发明实施例设计的所述监听控制单元要求写数据一致性请求WriteUnique的字节数与完整缓存数据行FullCacheLine字节数相同,而所述协议转换后的写数据一致性请求WriteUnique的字节数却无类似的限制,所以需要进行字节数的转换,将协议转换后的写数据一致性请求WriteUnique进行拆分,经过拆分后的每个原始命令数据量burst的总字节数都小于或等于完整缓存数据行FullCacheLine字节数,收到的WriteUnique合并之后,过滤掉多余字节,以满足原始命令数据量burst的要求;
具体地,与转换所述读数据一致性请求ReadOnce类似,比如,假设完整缓存数据行FullCacheLine字节数要求为32byte,数据位宽为128bit,则对应的burst的数据位宽也为128bit,数据类型为回绕型、回绕长度为2(wrap2);则写数据一致性请求WriteUnique转换时的接口时序如图6所示。
由图6可以获知,可将所述字节转换后的写数据一致性请求WriteUnique中的低位地址为12’h18、数据位宽为64bit、数据类型为incr4的原始命令数据量burst分别拆成低位地址为12’h18、数据位宽为128bit、wrap2及低位地址为12’h20、数据位宽为128bit、incr8这两个原始命令数据量burst;并且将m侧返回的两个bresp合并成一个bresp后从s侧发出;
这里,还可将字节数转换后的写数据一致性请求WriteUnique中的低位地址为12’h10、数据位宽为128bit,wrap4的原始命令数据量burst分别拆成低位地址为12’h10,数据位宽为128bit,incr1的原始命令数据量burst、低位地址为12’h20,数据位宽为128bit,incr2的原始命令数据量burst及低位地址为12’h00,数据位宽为128bit,incr1的原始命令数据量burst;并且将m侧返回的三个写通道数据响应bresp合并成一个写通道数据响应bresp后从s侧发出;其中,所述m侧为主设备单元的接口;所述awaddr_s是指s侧写地址通道的地址;所述awvalid_s是指s侧写地址通道的请求;所述awready_s是指s侧写地址通道的请求响应;所述wdata_s是s侧指写数据通道的写数据;所述wlast_s是指s侧最后一笔写数据的指示信号;所述bvalid_s是指s侧写响应通道的请求;所述bready_s是指写响应通道的请求响应;所述awaddr_m是指m侧写地址通道的地址;所述awvalid_m是指m侧写地址通道的请求;所述awready_m是指m侧写地址通道的请求响应;所述wdata_m是指m侧写数据通道的写数据;所述wlast_m是指m侧最后一笔写数据指示信号;所述bvalid_m是指m侧写响应通道的请求;所述bready_m是指m侧写响应通道的请求响应;上述对应awaddr_s、awvalid_s、awready_s、wdata_s、wlast_s、bvalid_s、bready_s、awaddr_m、awvalid_m、awready_m、wdata_m、wlast_m、bvalid_m、bready_m分别对应AXI协议中的标准信号。
当所述写数据一致性请求WriteUnique的字节转换完成之后,首先利用缓存器buffer缓存字节数转换后的写数据一致性请求WriteUnique的,并为字节数转换后的写数据一致性请求WriteUnique分发写数据一致性请求通道;再将无效请求invalidate的字节数调整成与所述字节转换后的写数据一致性请求WriteUnique字节数相等,向监听控制单元发送无效请求invalidate,接收返回的无效请求响应inv_done后,向互连单元发起写操作,缓存写数据响应通道。
这里,由于监听控制单元返回的无效请求响应inv_done可能是乱序的,为了保证字节数转换后的写数据一致性请求WriteUnique与发送的写数据一致性请求WriteUnique顺序的一致性,在无效请求invalidate的标识inv_id中除了添加有第二主设备单元的写地址通道标识awid外,还要在字节数转换后的写数据一致性请求WriteUnique中添加buffer号,并保存在buffer中;如果返回的标识inv_id与保存的buffer号一致,才将对应的写数据一致性请求WriteUnique发送至互连单元。
步骤702,根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作;
本步骤中,当同时收到读数据一致性请求ReadOnce及写数据一致性请求WriteUnique时,对所述字节数转换后的读数据一致性请求ReadOnce及所述字节数转换后的写数据一致性请求WriteUnique的执行进行仲裁,并根据仲裁后的读数据一致性请求ReadOnce或写数据一致性请求WriteUnique向所述监听控制单元发送相应的数据一致性请求;这里,因为所述实现数据一致性的装置的第二从接口单元与监听控制单元之间的一致性请求接口只有一个,所以第二从接口单元需要对所述读数据一致性请求ReadOnce和写数据一致性请求WriteUnique的执行进行仲裁后,向监听控制单元发送读数据一致性请求ReadOnce,或根据写数据一致性请求WriteUnique向监听控制单元发送无效请求invalidate。
这里,若仲裁后的请求是读数据一致性请求ReadOnce时,将读数据一致性请求ReadOnce发送至所述监听控制单元后,还需根据所述写数据一致性请求WriteUnique向所述监听控制单元发送无效请求invalidate;或者,
若仲裁后的请求是写数据一致性请求WriteUnique时,根据写数据一致性请求WriteUnique向所述监听控制单元发送无效请求invalidate后,还需将所述读数据一致性请求ReadOnce发送至所述监听控制单元。
其中,对所述字节数转换后的读数据一致性请求及所述字节数转换后的写数据一致性请求的执行进行仲裁的具体实现方法有很多种,比如:可以根据轮询仲裁的方式对所述读数据一致性请求ReadOnce及写数据一致性请求WriteUnique的执行进行仲裁,还可以根据最近最少访问或伪随机的仲裁方式进行仲裁。
这里,所述根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作,包括:
根据协议转换处理后的数据一致性请求,查找标记存储器,确定查找到标记存储器,向查找到的标记存储器对应的主设备单元发起监听,以获取读数据;确定未查找到标记存储器时,利用互连单元获取读数据。
具体地,当收到协议转换处理后的读数据一致性请求ReadOnce时,根据协议转换后的读数据一致性请求ReadOnce,确定查找到标记存储器tag_ram时,向查找到的标记存储器tag_ram对应的第一主设备单元发送监听请求,获取访问数据;若第一主设备单元未响应监听请求,则向互连单元发送读数据操作指示,获取读数据;若确定未查找到标记存储器tag_ram时,则向所述互连单元发送读数据操作指示,获取读数据;或者,
当接收的数据一致性请求为写一致性请求WriteUnique时,所述根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作,包括:
当收到协议转换处理后的写数据一致性请求WriteUnique时,响应接收写数据一致性请求WriteUnique的第二从接口单元发送的无效请求invalidate,以使第二从接口单元向互连发起写操作;
这里,所述根据所述协议转换后的读数据一致性请求ReadOnce查找标记存储器tag_ram,如果查找到标记存储器tag_ram,则向发送第一主设备单元发送监听请求,具体包括:
根据所述协议转换后的读数据一致性请求ReadOnce查找标记存储器tag_ram,如果查找到标记存储器tag_ram,则根据标记存储器tag_ram中的完整缓存数据行FullCacheLine信息生成命中结果;其中,若命中结果中的完整缓存数据行FullCacheLine是有效状态,则向第一主设备单元发送监听请求,以获取读数据;若命中结果中的完整缓存数据行FullCacheLine是无效状态或命中结果中不存在完整缓存数据行FullCacheLine,则利用互连单元向外部存储器memory发送读外部存储器memory请求;所述操作类型为ReadClean,所述ReadClean是指读共享数据并且读出的共享数据不被缓存,所述标记存储器tag_ram中记录了所访问的完整缓存数据行FullCacheLine是否存在于第一主设备单元的cache中;所述第二从接口单元还可以通过侦听所述第一主设备单元对应的第一从接口单元判断是否能获取访问数据;如果第二主设备单元需要访问的数据在第一主设备单元的cache中,则在无需访问从设备单元的情况下就可以直接从第一主设备单元的cache中获取访问数据,这样,可以减少访问时间,提高访问效率。
当监听控制单元接收到无效请求invalidate时,返回无效请求响应inv_done,第二从接口单元根据无效请求响应inv_done向互连单元发送写操作指示,监听控制单元根据对应标记存储器tag_ram的无效请求,将相应标记存储器tag_ram设置成无效状态,同时根据写回writeback请求中的更新消息更新tag_ram;其中,所述写回writeback请求是指所述第一从接口单元向监听控制单元发送的将数据写回到外部存储器memory的请求。
另外,当确定支持接收的数据一致性请求对应的协议时,则不需要对接收的数据一致性请求进行协议转换处理,直接将接收的数据一致性请求发送至所述监听控制单元。
具体地,在有一致性数据传输要求的情况下,根据先进先出FIFO缓存传输类型、数据地址冲突、传输事务间顺序ordering情况,将无需进行协议转换的读数据一致性请求发送至监听控制单元,将无需进行协议转换处理的写数据一致性请求发送至互连单元,直接向互连单元发起写操作指示,当监听控制单元接收到返回的读数据后,将读数据发送至第一从接口单元。所述监听控制单元对无需进行协议转换的读数据一致性请求的处理流程与协议转换后的读数据一致性请求的处理流程相同。
这里,当所述监听控制单元同时接收到无需进行协议转换的读数据一致性请求及经协议转换后的读数据一致性请求ReadOnce时,需要对无需进行协议转换的读数据一致性请求及经协议转换后的读数据一致性请求ReadOnce的执行进行仲裁,如果所述监听控制单元仲裁后的请求是所述无需进行协议转换的读数据一致性请求时,则对所述无需进行协议转换的读数据一致性请求处理完毕之后,还需对经协议转换后的读数据一致性请求ReadOnce进行处理;或者,如果所述监听控制单元仲裁后的请求是所述经协议转换后的读数据一致性请求ReadOnce时,则对所述经协议转换后的读数据一致性请求ReadOnce处理完毕之后,还需对无需进行协议转换的读数据一致性请求进行处理。
这里,如果所述第一从接口单元发送的无需进行协议转换的数据一致性请求、第二从接口单元发出的需要协议转换的数据一致性请求具有相同的ID,所述监听控制单元还需确保处理这些请求的顺序一致性。
这里,所述第一接口从单元,支持通过earlywresp寄存器提供的控制信号选择写响应提前返回earlyresponse或写响应正常返回normalresponse的方式。对于写响应提前返回earlyresponse方式,当根据无需进行协议转换的写数据一致性请求完成写操作后,则返回写响应;如果实际写响应有错误error,第一接口从单元则会记录错误传输的地址和标识ID;对于写响应正常返回normalresponse方式,将实际写响应返回给第一主设备单元。
所述第一接口从单元还具有数据传输超时检测功能,在数据传输过程中,通过计数检测来判断数据传输的各阶段是否超时。具体地,第一主设备单元通过握手机制向从设备单元发送valid信号,当第一从接口单元判断如果在超时阈值周期内没有接收到接收从设备单元返回的ready信号时,认为数据传输超时,产生超时中断;所述超时阈值周期可根据实际情况预先配置。
另外,如果第一主设备单元进行除读和写外的其它一致性维护操作时,所述监听控制单元根据复本唯一cleanunique请求或复本共有cleanshared请求或复本无效cleaninvalid请求查找标记存储器tag_ram,如果查找到标记存储器tag_ram,则根据标记存储器tag_ram中的完整缓存数据行FullCacheLine信息生成命中结果;其中,若命中结果中的完整缓存数据行FullCacheLine是有效状态,则向第一主设备单元发送监听请求,接收第一主设备单元返回的监听响应cresponse和监听数据cdata,并将监听数据cdata发送至第一从接口单元或第二从接口单元后,向第一从接口单元或第二从接口单元发送数据一致性请求操作完成指示;当监听请求无响应时,利用互连单元向外部存储器memory发送读外部存储器memory请求。
另外,当dirty数据需要写入外部存储器memory时,所述监听控制单元利用互连单元向外部存储器memory发送写操作,以将dirty数据写入外部存储器memory中。
这里,由于监听控制单元是用于维护第一主设备单元中两个cluster之间的数据一致性,但是若要采用现有技术中记录完整缓存数据行FullCacheLine状态的方法,来记录各个完整缓存数据行FullCacheLine状态,将需要消耗非常大的资源,并且方法复杂,难以实现;因此,本实施例中,所述监听控制单元采用的是分段地址计数法,来记录各个cluster中完整缓存数据行FullCacheLine的存在状态,不但容易实现,而且能较精确地记录完整缓存数据行FullCacheLine的状态。
所述方法包括两个基本特性:(1)如果监听控制单元中的记录表明某完整缓存数据行FullCacheLine存在某个cluster中,但实际上,由于监听算法的不精准性,导致该完整缓存数据行FullCacheLine很有可能在该cluster中是处于无效状态的;(2)如果监听控制单元中的记录表明该cluster中不存在完整缓存数据行FullCacheLine,则该cluster肯定不包含该完整缓存数据行FullCacheLine,即该完整缓存数据行FullCacheLine在这个cluster中肯定处于无效状态;因此,可以精确记录完整缓存数据行FullCacheLine的状态。
本步骤中,为了避免死锁,还需要对传输事务间顺序ordering进行阻塞、处理写后写WAW和读后写RAW之间的冲突;其中,
所述阻塞传输事务间顺序ordering包括:所有一致性传输数据请求全部结束后,当前无一致性传输数据的请求才能发出;或者,所有无一致性传输数据请求全部结束后,当前一致性传输数据的请求才能发出。
对于WAW冲突,将字节数转换后的写数据一致性请求WriteUnique发送至第一从接口单元中,若与所述其他写数据一致性请求之间存在冲突,则会阻塞其他写数据一致性请求,直至字节数转换后的写数据一致性请求完成操作;所述WAW冲突是指第一主设备单元对该地址区域进行写操作之后,第二主设备单元对该地址区域进行写操作;或者指第二主设备单元对该地址区域进行写操作之后,第一主设备单元对该地址区域进行写操作。
对于RAW冲突,利用CAM保存未处理的数据一致性请求的写地址通道标识awid地址,发送第二读数据一致性的miss地址,判断第二读数据一致性miss地址与pending地址是否相同,若相同,则返回冲突信号hazard,以保证字节数转换后的写数据一致性请求WriteUnique完成操作,只有字节数转换后的写数据一致性请求WriteUnique完成操作后,才会向互连单元发起读数据操作;其中,所述写地址通道标识awid用于查找写响应通道标识bid以及从CAM中读取数据;所述RAW是指第一主设备单元对该地址区域进行写操作之后,第二主设备单元对该地址区域进行读操作;或者是指第一主设备单元对该地址区域进行写操作之后,第二主设备单元对该地址区域进行读操作。
另外,本步骤中,当确定支持接收的数据一致性请求对应的协议时,则不需要对接收的数据一致性请求进行协议转换处理,将接收的数据一致性请求发送至所述监听控制单元,以便所述监听控制单元根据数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
在无一致性数据传输要求的情况下,则根据FIFO缓存传输类型、数据地址冲突、传输事务间顺序ordering情况,将数据一致性请求直接发送至所述互连单元,以访问相应的从设备单元。
本发明实施例提供的方案,从硬件上解决了多处理器系统中存在的共享存储数据一致性问题,减少软件干预及外部存储器的访问次数,提高系统访问效率,降低了内存访问带来的功耗。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种实现数据一致性的装置,其特征在于,所述装置包括:从接口单元及监听控制单元;其中,
所述从接口单元,用于确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,并将协议转换处理后的数据一致性请求发送至所述监听控制单元;
所述监听控制单元,用于根据所述从接口单元发送的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
2.根据权利要求1所述的装置,其特征在于,所述监听控制单元,还用于当收到的数据一致性请求为两个以上数据一致性请求时,对收到的两个以上数据一致性请求的执行进行仲裁,根据仲裁后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
3.根据权利要求1所述的装置,其特征在于,所述从接口单元,还用于确定支持接收的数据一致性请求对应的协议时,将接收的数据一致性请求发送至所述监听控制单元。
4.根据权利要求3所述的装置,其特征在于,所述从接口单元包括:第一从接口单元及第二从接口单元;其中,
所述第一从接口单元,用于将接收的来自第一主设备单元的第一读数据一致性请求发送至所述监听控制单元;
所述第二从接口单元,用于将接收的来自第二主设备单元的数据一致性请求进行协议转换处理,并将协议转换处理后的数据一致性请求发送至所述监听控制单元。
5.根据权利要求4所述的装置,其特征在于,所述第二从接口单元,具体用于:将接收的第二主设备单元发送的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;并将协议转换后的数据一致性请求的字节数转换成完整缓存数据行FullCacheLine字节数。
6.根据权利要求5所述的装置,其特征在于,所述第二从接口单元包括:协议转换子单元、读操作转换子单元、读接口子单元、写操作转换子单元、以及写接口子单元;其中,
所述协议转换子单元,用于将接收的第二主设备单元发送的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;
所述读操作转换子单元,用于当第二主设备单元发送的数据一致性请求为第二读数据一致性请求时,将协议转换后的第二读数据一致性请求的字节数转换成FullCacheLine字节数;
所述读接口子单元,用于为所述字节数转换后的第二读数据一致性请求分发第二读数据一致性请求通道,复用读数据通道;
所述写操作转换子单元,用于当第二主设备单元发送的数据一致性请求为第二写数据一致性请求时,将协议转换后的第二写数据一致性请求的字节数转换成FullCacheLine字节数;
所述写接口子单元,用于为所述字节数转换后的第二写数据一致性请求分发第二写数据一致性请求通道,缓存写数据响应通道。
7.根据权利要求6所述的装置,其特征在于,所述第二从接口单元还包括:仲裁子单元,用于当同时收到所述读接口子单元与所述写接口子单元发送的数据一致性请求时,对所述字节数转换后的第二读数据一致性请求及所述字节数转换后的第二写数据一致性请求的执行进行仲裁,并根据仲裁后的第二读数据一致性请求或第二写数据一致性请求向所述监听控制单元发送相应的数据一致性请求。
8.根据权利要求6所述的装置,其特征在于,所述读接口子单元还用于阻塞传输事务间顺序。
9.根据权利要求6所述的装置,其特征在于,写接口子单元还用于阻塞传输事务间顺序、处理写后写WAW和读后写RAW冲突。
10.根据权利要求4所述的装置,其特征在于,所述第一从接口单元,还用于将来自第一主设备单元的第一写数据一致性请求发送至互连单元,直接向互连单元发起写操作。
11.根据权利要求4所述的装置,其特征在于,所述监听控制单元包括标记控制子单元及数据交换子单元;其中,
所述标记控制子单元,用于接收第一从接口单元发送的第一读和/或第一写数据一致性请求、第二从接口单元发送的第二读和/或第二写一致性请求及数据交换子单元发送的无效请求invalidate,并对这些请求的执行进仲裁;当仲裁后的请求是第一读数据一致性请求或第二读数据一致性请求时,根据第一读数据一致性请求或第二读数据一致性请求查找标记存储器,如果查找到标记存储器,则根据标记存储器中的FullCacheLine信息生成命中结果;若命中结果中的FullCacheLine是有效状态,则向所述数据交换子单元发送监听请求,以获取读数据;若命中结果中的FullCacheLine是无效状态或命中结果中不存在FullCacheLine,则利用互连单元获取读数据;
所述数据交换子单元,用于根据命中信息将所述监听请求发送至第一主设备单元,接收第一主设备单元返回的监听响应和监听数据,并将监听数据发送至第一从接口单元或第二从接口单元后,向第一从接口单元或第二从接口单元发送数据一致性请求操作完成指示。
12.根据权利要求11所述的装置,其特征在于,所述标记控制子单元,还用于当监听请求无响应时,利用互连单元获取读数据。
13.根据权利要求12所述的装置,其特征在于,所述数据交换子单元,还用于收到第二从接口单元发送的无效请求后,向第二从接口单元返回无效请求响应;并向所述标记控制子单元发送对应标记存储的无效请求;
相应地,所述标记控制子单元,还用于收到数据交换子单元的无效请求后,将相应标记存储器设置成无效状态,同时根据收到的写回请求中的更新消息更新标记存储器;
第二从接口单元,还用于收到数据交换子单元的响应后,向互连单元发起写操作。
14.根据权利要求11所述的装置,其特征在于,所述监听控制单元还包括仲裁子单元,用于:对标记控制子单元发送的读外部存储器memory请求及所述数据交换子单元发送的读外部存储器请求的执行进行仲裁,并将仲裁后的读请求发送至互连单元,接收互连单元返回的读数据。
15.一种实现数据一致性的方法,其特征在于,所述方法还包括:
确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理;
根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作。
16.根据权利要求15所述的方法,其特征在于,所述对接收的数据一致性请求进行协议转换处理,包括:
将接收的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;并将协议转换后的数据一致性请求的字节数转换成FullCacheLine字节数。
17.根据权利要求16所述的方法,其特征在于,当接收的数据一致性请求为读一致性请求时,所述根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作,包括:
根据协议转换处理后的读数据一致性请求,查找标记存储器,确定查找到标记存储器,向查找到的标记存储器对应的主设备单元发起监听,以获取读数据;确定未查找到标记存储器时,利用互连单元获取读数据。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
当监听无响应时,利用互连单元获取读数据。
19.根据权利要求16所述的方法,其特征在于,当接收的数据一致性请求为写一致性请求时,所述根据协议转换处理后的数据一致性请求,确定对应的数据一致性操作设备,对所述数据一致性操作设备进行数据一致性操作,包括:
根据字节数转换后的写数据一致性请求向实现数据一致性的装置的监听控制单元发送无效请求;
所述监听控制单元返回无效请求响应;
根据无效请求响应,向实现数据一致性的装置的互连单元发起写操作。
20.根据权利要求15所述的方法,其特征在于,所述方法还包括:
阻塞传输事务间顺序;和/或,
处理WAW和RAW冲突。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410190727.0A CN105095254B (zh) | 2014-05-07 | 2014-05-07 | 一种实现数据一致性的方法及装置 |
PCT/CN2014/088637 WO2015169054A1 (zh) | 2014-05-07 | 2014-10-15 | 一种实现数据一致性的方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410190727.0A CN105095254B (zh) | 2014-05-07 | 2014-05-07 | 一种实现数据一致性的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095254A true CN105095254A (zh) | 2015-11-25 |
CN105095254B CN105095254B (zh) | 2023-01-10 |
Family
ID=54392083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410190727.0A Active CN105095254B (zh) | 2014-05-07 | 2014-05-07 | 一种实现数据一致性的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105095254B (zh) |
WO (1) | WO2015169054A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656937A (zh) * | 2016-07-26 | 2018-02-02 | 北京京东尚科信息技术有限公司 | 用于实现读写数据一致性的方法和装置 |
CN108733529A (zh) * | 2017-04-19 | 2018-11-02 | 龙芯中科技术有限公司 | Axi交叉开关的间插功能的验证方法与装置 |
CN109741163A (zh) * | 2018-09-07 | 2019-05-10 | 网联清算有限公司 | 账户数据一致性管理方法、装置及存储介质 |
CN109947677A (zh) * | 2019-02-27 | 2019-06-28 | 山东华芯半导体有限公司 | 支持乱序功能的axi总线位宽转换装置及数据传输方法 |
CN110781120A (zh) * | 2019-10-23 | 2020-02-11 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
CN112558569A (zh) * | 2020-12-08 | 2021-03-26 | 浙江国利网安科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN116561056A (zh) * | 2023-07-07 | 2023-08-08 | 芯动微电子科技(珠海)有限公司 | 一种片上系统 |
CN117349214A (zh) * | 2023-12-05 | 2024-01-05 | 天津国芯科技有限公司 | 一种具备拆包组包能力的axi协议转串行通讯协议的转换桥 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506815B (zh) * | 2020-11-27 | 2023-01-31 | 成都海光微电子技术有限公司 | 数据传输方法和数据传输装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571958A (zh) * | 2000-08-21 | 2005-01-26 | 英特尔公司 | 集中监听过滤的方法和设备 |
CN101430664A (zh) * | 2008-09-12 | 2009-05-13 | 中国科学院计算技术研究所 | 一种多处理器系统及Cache一致性消息传输方法 |
CN101446931A (zh) * | 2008-12-03 | 2009-06-03 | 中国科学院计算技术研究所 | 一种实现输入输出数据一致性的系统及方法 |
CN102866923A (zh) * | 2012-09-07 | 2013-01-09 | 杭州中天微系统有限公司 | 对称多核的高效一致性侦听过滤装置 |
US20130103912A1 (en) * | 2011-06-06 | 2013-04-25 | STMicroelectronics (R&D) Ltd. | Arrangement |
US20140115210A1 (en) * | 2012-10-24 | 2014-04-24 | Texas Instruments Incorporated | Multi Processor Multi Domain Conversion Bridge with Out of Order Return Buffering |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6349366B1 (en) * | 1998-06-18 | 2002-02-19 | Compaq Information Technologies Group, L.P. | Method and apparatus for developing multiprocessor cache control protocols using a memory management system generating atomic probe commands and system data control response commands |
US8185697B1 (en) * | 2005-01-07 | 2012-05-22 | Hewlett-Packard Development Company, L.P. | Methods and systems for coherence protocol tuning |
-
2014
- 2014-05-07 CN CN201410190727.0A patent/CN105095254B/zh active Active
- 2014-10-15 WO PCT/CN2014/088637 patent/WO2015169054A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571958A (zh) * | 2000-08-21 | 2005-01-26 | 英特尔公司 | 集中监听过滤的方法和设备 |
CN101430664A (zh) * | 2008-09-12 | 2009-05-13 | 中国科学院计算技术研究所 | 一种多处理器系统及Cache一致性消息传输方法 |
CN101446931A (zh) * | 2008-12-03 | 2009-06-03 | 中国科学院计算技术研究所 | 一种实现输入输出数据一致性的系统及方法 |
US20130103912A1 (en) * | 2011-06-06 | 2013-04-25 | STMicroelectronics (R&D) Ltd. | Arrangement |
CN102866923A (zh) * | 2012-09-07 | 2013-01-09 | 杭州中天微系统有限公司 | 对称多核的高效一致性侦听过滤装置 |
US20140115210A1 (en) * | 2012-10-24 | 2014-04-24 | Texas Instruments Incorporated | Multi Processor Multi Domain Conversion Bridge with Out of Order Return Buffering |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656937B (zh) * | 2016-07-26 | 2021-05-25 | 北京京东尚科信息技术有限公司 | 用于实现读写数据一致性的方法和装置 |
CN107656937A (zh) * | 2016-07-26 | 2018-02-02 | 北京京东尚科信息技术有限公司 | 用于实现读写数据一致性的方法和装置 |
CN108733529A (zh) * | 2017-04-19 | 2018-11-02 | 龙芯中科技术有限公司 | Axi交叉开关的间插功能的验证方法与装置 |
CN108733529B (zh) * | 2017-04-19 | 2021-08-10 | 龙芯中科技术股份有限公司 | Axi交叉开关的间插功能的验证方法与装置 |
CN109741163A (zh) * | 2018-09-07 | 2019-05-10 | 网联清算有限公司 | 账户数据一致性管理方法、装置及存储介质 |
CN109741163B (zh) * | 2018-09-07 | 2021-05-28 | 网联清算有限公司 | 账户数据一致性管理方法、装置及存储介质 |
CN109947677A (zh) * | 2019-02-27 | 2019-06-28 | 山东华芯半导体有限公司 | 支持乱序功能的axi总线位宽转换装置及数据传输方法 |
CN110781120A (zh) * | 2019-10-23 | 2020-02-11 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
CN110781120B (zh) * | 2019-10-23 | 2023-02-28 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
CN112558569A (zh) * | 2020-12-08 | 2021-03-26 | 浙江国利网安科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN116561056A (zh) * | 2023-07-07 | 2023-08-08 | 芯动微电子科技(珠海)有限公司 | 一种片上系统 |
CN116561056B (zh) * | 2023-07-07 | 2024-02-20 | 芯动微电子科技(珠海)有限公司 | 一种片上系统 |
CN117349214A (zh) * | 2023-12-05 | 2024-01-05 | 天津国芯科技有限公司 | 一种具备拆包组包能力的axi协议转串行通讯协议的转换桥 |
CN117349214B (zh) * | 2023-12-05 | 2024-02-09 | 天津国芯科技有限公司 | 一种具备拆包组包能力的axi协议转串行通讯协议的转换桥 |
Also Published As
Publication number | Publication date |
---|---|
WO2015169054A1 (zh) | 2015-11-12 |
CN105095254B (zh) | 2023-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095254A (zh) | 一种实现数据一致性的方法及装置 | |
CN100592271C (zh) | 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法 | |
CN1575455B (zh) | 优化输入/输出应用的分布式读写高速缓存实现方案 | |
CN101097545B (zh) | 独占所有权探听过滤器 | |
CA2280125C (en) | Non-uniform memory access (numa) data processing system that speculatively issues requests on a node interconnect | |
CA2271536C (en) | Non-uniform memory access (numa) data processing system that buffers potential third node transactions to decrease communication latency | |
US20050160239A1 (en) | Method for supporting improved burst transfers on a coherent bus | |
US6421775B1 (en) | Interconnected processing nodes configurable as at least one non-uniform memory access (NUMA) data processing system | |
US7028150B2 (en) | Arrangement of data within cache lines so that tags are first data received | |
TW201539196A (zh) | 用於處理多個交易之資料處理系統及方法 | |
US9213656B2 (en) | Flexible arbitration scheme for multi endpoint atomic accesses in multicore systems | |
CN101840390B (zh) | 适用于多处理器系统的硬件同步电路结构及其实现方法 | |
TW201432457A (zh) | 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法 | |
CN102929832A (zh) | 基于非写分配的高速缓存一致性的多核处理器数据传输系统 | |
US9183150B2 (en) | Memory sharing by processors | |
US9304925B2 (en) | Distributed data return buffer for coherence system with speculative address support | |
US9632934B2 (en) | Maintaining coherence when removing nodes from a directory-based shared memory system | |
US9372796B2 (en) | Optimum cache access scheme for multi endpoint atomic access in a multicore system | |
US10216634B2 (en) | Cache directory processing method for multi-core processor system, and directory controller | |
CA2279138C (en) | Non-uniform memory access (numa) data processing system that decreases latency by expediting rerun requests | |
KR20140038075A (ko) | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 | |
CN115858420B (zh) | 用于支持多处理器架构的系统缓存架构和芯片 | |
CN116795767A (zh) | 一种基于CHI协议的多核Cache共享一致性协议构建方法 | |
US20060179356A1 (en) | Method to use fabric initialization to test functionality of all inter-chip paths between processors in system | |
WO2015035891A1 (zh) | 补丁方法、设备及系统 |
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 |