一种实现数据一致性的方法及装置的制造方法_4

文档序号:9375642阅读:来源:国知局
记存储器tag_ram中记录了所访问的完整缓存数据行FulI Cache Line是否存在于第一主设备单元21的cache中;所述第二从接口单元112还可以通过侦听第一从接口单元111判断是否能获取访问数据;如果第二主设备单元22需要访问的数据在第一主设备单元21的cache中,则在无需访问从设备单元31的情况下就可以直接从第一主设备单元21的cache中获取访问数据,这样,可以减少访问时间,提闻访问效率。
[0123]如果所述第一从接口单元111、第二从接口单元112发出的数据一致性请求具有相同的标识ID,所述标记控制子单元121还用于确保处理这些请求的顺序一致性。
[0124]另外,如果第一主设备单元21进行除读和写外的其它一致性维护操作时,所述标记控制子单元121,具体还用于:根据复本唯一 clean unique请求或复本共有cleanshared请求或复本无效clean invalid请求查找标记存储器tag_ram,如果查找到标记存储器tag_ram,则根据标记存储器tag_ram中的完整缓存数据行Ful I Cache Line信息生成命中结果;其中,若命中结果中的完整缓存数据行Full Cache Line是有效状态,则向数据交换子单元122发送监听请求,以获取读数据及数据状态。其中,对于需要写回的ditry数据,所述监听控制单元12向互连单元23发送写操作。
[0125]当所述标记控制子单元121向所述数据交换子单元122发送监听请求时,所述数据交换子单元122,用于:根据命中信息将所述监听请求发送至第一主设备单元21,接收第一主设备单元21返回的监听响应cresponse和监听数据cdata,并将监听数据cdata发送至第一从接口单元111或第二从接口单元112后,向第一从接口单元111或第二从接口单元112发送数据一致性请求操作完成指示;当监听请求无响应时,所述标记控制子单元121,还用于利用互连单元23向外部存储器memory发送读外部存储器memory请求;所述命中信息包括:命中结果和操作类型。
[0126]当所述写操作转换子单元1124发送无效请求invalidate时,所述数据交换子单元122,还用于向写操作转换子单元1124返回无效请求响应inv_done后,向标记控制子单元121发送对应标记存储器tag_ram的无效请求,以使标记控制子单元121将相应标记存储器tag_ram设置成无效状态,同时根据写回writeback请求中的更新消息更新标记存储器tag_ram ;其中,所述写回writeback请求是指第一从接口单元111向监听控制单元12发送的将数据写回memory的请求。这里,因为在装置工作过程中,标记存储器tag_ram可能从无效状态变成有效状态,因此,还需要标记控制单元121将需要的相应标记存储器tag_ram重新设置成无效状态。
[0127]另外,当dirty数据需要写入外部存储器memory时,所述标记控制子单元121,还用于利用互连单元23向外部存储器memory发送写操作,以将dirty数据写入外部存储器memory 中。
[0128]当标记控制子单元121及所述数据交换子单元122同时发送读memory请求时,所述仲裁子单元123,具体用于:对标记控制子单元121发送的读外部存储器memory请求及所述数据交换子单元122发送的读外部存储器memory请求的执行进行仲裁,并将仲裁后的读memory请求发送至互连单元23,接收互连单元23返回的读数据;
[0129]当所述仲裁子单元123同时接收到数据交换子单元122发送的读数据及互连单元23返回的读数据时,所述仲裁子单元123,还用于对数据交换子单元122发送的监听数据及互连单元23返回的读数据进行仲裁后,将读数据发送至第一从接口单元111或第二从接口单元112。
[0130]这里,由于监听控制单元12是用于维护第一主设备单元21中两个cluster之间的数据一致性,但是若要采用现有技术中记录完整缓存数据行Full Cache Line状态的方法,来记录各个完整缓存数据行Full Cache Line状态,需要消耗非常大的资源,并且方法复杂,难以实现;因此,本实施例中,所述监听控制单元12采用的是分段地址计数法,来记录各个cluster中完整缓存数据行Full Cache Line的存在状态,不但容易实现,而且能较精确地记录完整缓存数据行Full Cache Line的状态。
[0131]所述方法包括两个基本特性:(I)如果监听控制单元12中的记录表明某完整缓存数据行Full Cache Line存在于某个cluster中,但实际上,由于监听算法的不精准性,导致该完整缓存数据行Full Cache Line很有可能在该cluster中是处于无效状态的;(2)如果监听控制单元12中的记录表明该cluster中不存在完整缓存数据行Full Cache Line,则该cluster肯定不包含该完整缓存数据行Full Cache Line,即该完整缓存数据行FullCache Line在这个cluster中肯定处于无效状态;因此,可以精确记录完整缓存数据行Full Cache Line 的状态。
[0132]实际应用时,本发明实施例提供的从接口单元11可由实现数据一致性的装置中的物理接口及专用集成电路(ASIC, Applicat1n Specific Intergrated Circuit)或可编程逻辑阵列(FPGA, Field — Programmable Gate Array)实现,监听控制单元12可由实现数据一致性的装置中的ASIC或FPGA实现。
[0133]本实施例是基于AMBA4ACE协议,结合互连单元和数据一致性的功能,从硬件上解决了多处理器系统中存在的共享存储数据一致性问题,减少软件干预及外部存储器的访问次数,提高系统访问效率,降低了内存访问带来的功耗。
[0134]实施例二
[0135]相应于实施例一,本发明实施例还提供了一种实现数据一致性的方法,如图8所示,该方法主要包括几个步骤:
[0136]步骤801,确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理;
[0137]这里,当确定支持接收的数据一致性请求对应的协议时,则不对接收的数据一致性请求进行协议转换处理。
[0138]本步骤中,所述确定不支持接收的数据一致性请求对应的协议时,对接收的数据一致性请求进行协议转换处理,包括:
[0139]将接收的支持AXI协议的数据一致性请求转换成支持ACE_Lite协议的数据一致性请求;
[0140]该方法还包括:
[0141]将协议转换后的读数据一致性请求Read Once的字节数转换成完整缓存数据行Full Cache Line 字节数;
[0142]为字节数转换后的读数据一致性请求Read Once分发读数据一致性请求ReadOnce通道,复用读数据通道;
[0143]将协议转换后的写数据一致性请求Write Unique的字节数转换成完整缓存数据行 Full Cache Line 字节数;
[0144]为字节数转换后的写数据一致性请求Write Unique分发写数据一致性请求WriteUnique通道,缓存写数据响应通道;
[0145]对所述字节数转换后的读数据一致性请求Read Once及所述字节数转换后的写数据一致性请求Write Unique的执行进行仲裁;其中,所述协议转换后的读数据一致性请求Read Once是指读共享数据且读出的共享数据不被缓存的请求。
[0146]具体地,在有一致性数据传输要求的情况下,当所述数据一致性请求对应的主设备包括AXI master时,根据AXI master中不同的AXI地址产生不同的ACE_Lite传输类型,将支持AXI协议的读或写数据一致性请求转换成支持ACE_Lite协议的读或写数据一致性请求,以使AXI master发送的读或写数据一致性请求可以有效发送,换句话说,以使AXImaster发送的读或写数据一致性请求得到相应的响应;其中,所述传输类型包括:写地址通道的监听请求AWSN00P、读地址通道的监听请求ARSN00P ;所述AXI地址与ACE_Lite传输类型之间的映射关系可预先配置。
[0147]这里,当发送的数据一致性请求是读数据一致性请求Read Once时,利用CAM、拆分算法及控制逻辑将协议转换后的读数据一致性请求Read Once的字节数转换成完整缓存数据行Full Cache Line字节数;具体地,将收到的协议转换后的读数据一致性请求Read Once进行字节合并,过滤掉多余字节,以满足原始命令数据量burst的要求;这里,因为所述监听控制单元要求读数据一致性请求的字节数与缓存数据行完整缓存数据行FullCache Line字节数相同,而所述协议转换后的读数据一致性请求Read Once的字节数却无类似的限制,所以需要进行字节数的转换;
[0148]其中,所述完整缓存数据行Full Cache Line字节数通常为32byte或64byte ;所述原始命令数据量burst包括:数据位宽、数据类型及数据长度,所述数据位宽一般为32bit、64bit或128bit ;所述数据类型包括:固定型fixed、增加型incr及回绕型wrap ;所述数据长度至少包括一笔数据,所述CAM的存储单元个数可根据系统要求进行配置。
[0149]比如,假设完整缓存数据行Full Cache Line字节数要求为32byte,数据位宽为128bit,则对应的原始命令数据量burst的数据位宽也为128bit,数据类型为回绕型、回绕长度为2(wrap2);则读数据一致性请求Read Once转换时的接口时序如图5所示。
[0150]由图5可以获知,可将字节数转换后的读数据一致性请求中的低位地址为12’ hl8、数据位宽为64bit、数据类型为incr4的burst拆成低位地址为12’ hlO、数据位宽为128bit、wrap2及低位地址为12’ h20、数据位宽为128bit、wrap2这两个原始命令数据量burst ;其中,并不需要返回的第一个原始命令数据量burst数据的第二笔数据时,则跳过skip第二笔数据,第二个原始命令数据量burst的第一笔数据保持了两个周期,对应着s侧中地址分别为12’ h20及12’ h28的数据;并且,s侧在收到第四笔数据时将rlast_s拉闻;
[0151]这里,还可将字节数转换后的读数据一致性请求Read Once中的低位地址为12’hl8、数据位宽为64bit,wrap4的原始命令数据量burst拆成两个低位地址都为12’hlO,数据位宽为128bit,wrap2的burst。其中,第一个原始命令数据量burst的第二笔数据保持了两个周期,对应s侧中地址分别为12’h00及12’h08的数据;s侧收到第四笔数据时将rlast_s拉高,其中,当不需要第二个原始命令数据量burst的第二笔数据时,则跳过skip第二笔数据;其中,所述s侧是指从设备slave的接口信号,所述m侧是指主设备单元的接口信号,所述s侧的信息第二从接口单元转换后输出的m侧的信息;
[0152]所述 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侧读数据通道的请求响应;
[0153]所述m侧的信息包括:araddr_ _m、arval id—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 协议中的标准信号。
[0154]当读数据一致性请求Read Once的字节数转换完成之后,利用缓存器buffer缓存字节数转换后的读数据一致性请求Read Once,并为字节数转换后的读数据一致性请求Read Once分发读数据一致性请求通道,复用读数据通道;其中,所述复用读数据通道为:当实现数据一致性的装置的监听控制单元及所述实现数据一致性的装置的互连单元同时返回读数据时,先返回所述监听控制单元的读数据。
[0155]为了避免死锁,还需要阻塞传输事务间顺序ordering;所述阻塞传输事务间顺序ordering包括:所有一致性传输数据请求全部结束后,当前无一致性传输数据的请求才能发出;或者,所有无一致性传输数据请求全部结束后,当前一致性传输数据的请求才能发出。
[0156]另外,当发送的数据一致性请求是写数据一致性请求Write Unique时,利用CAM、拆分算法及控制逻辑将协议转换后的写数据一
...
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1