在嵌入式多核集群中利用OCP处理高速缓冲器一致流量
一致读取共享(CohReadShared)消息表明在读行操作过程中发生的高速缓冲器不命中。不需要行修改。遇到"已修改"状态的该行的同级内核将强制回写到存储器子系统。命中的同级行将转换到"共享"状态。命中数据将被转发到请求方内核,并以"共享"状态安装。然后执行读行操作。在等待行重新填满的时候,请求方CPU将继续另外一个线程的执行。
一致升级(CohUpgrade)消息表明遇到命中"共享"行的一个高速缓冲器行修改指令。同级内核将收到通知取消命中行。在修改指令执行完以后,"共享"行会随之升级为"修改"行。
最终,一致回写(CohWriteBack)消息表示驱逐了一个一致高速缓冲器行。一致管理器将通过干预端口发起数据移动,并将数据转发到存储器子系统。被驱逐的高速缓冲器行随后便由一个新的-可能是一致的-地址取代。在这种情况下,CohReadOwn或CohReadShared导致了这个驱逐。
一致高速缓冲器操作指令
为了响应高速缓冲器操作,需要发起一致消息,并发送到同级内核。
CohCopyBack-将一致高速缓冲器行回写到存储子系统。
CohInvalidate-清除一致高速缓冲器行,而不是将其内容回写到存储子系统。
CohWriteInvalidate-I/O一致单元在一个新的高速缓冲器行注入一致域。
CohReadInvalidate - I/O一致单元通知系统,高速缓冲器行将离开一致域。
CohCompletionSync-无数据的命令可以保持排序。
非一致命令
传统的OCP命令,如"读取"和"写入"命令是由整个一致处理系统支持的,以处理非一致存储器存取的数据存取。当高速缓存的、非一致地址内的命中失败,或者非高速缓存存取引发存储子系统内的读取操作时,就会发出读命令。如果响应数据是作为非一致高速缓存安装的话,那么非高速缓存数据就会直接被消耗掉。提取和负载/存储活动可导致读取处理。当高速缓存的、非一致逐出数据或非高速缓存地址范围存储被写入存储子系统时,即发出写入命令。内核的 OCP 主端口执行命令和数据阶段的处理。
实例-一致读取共享消息
CPU0 在一致高速缓存行上遇到负载不命中,并发起 cohReadShared 消息(无修改意图)。一致管理器将干预消息发送到所有内核,在此内核 1 将响应"修改"的命中。一致管理器现在发起了一个修改行回写,将行数据从内核 1 中的干预端口移动到存储子系统。命中的内核 1 高速缓存行转移到"共享"状态(见图2)。行数据移动也会转发到内核 0,在此它可在"共享"状态下安装。
图2 一致读取共享消息
结语
OCP互连有助于支持基于消息的一致方案。集中的一致管理器可以串化从单独内核发出的一致消息,并询问同级内核的一致状态。内核之间的数据转发可减少存取延迟和对更高级别的存储器层的流量。单个内核支持OCP主端口发起数据存取和OCP从端口接收来自一致管理器的询问。
参考文献:
1.OCP规范2.2,2006 OCP-IP协会,版权所有
2.OCP一致扩展,第二部分:信号和解码(未发表、初稿)
3.MIPS32 1004K一致处理系统用户手册,MIPS科技公司
- 嵌入式智能设备的测试方法研究(11-29)
- 基于ARM的信号发生器人机交互系统设计(01-23)
- 采用C8051F020设计的嵌入式测试仪(01-17)
- 关于嵌入式智能设备的测试方法的研究(01-28)
- 基于μC/OS-II的电力参数监测仪设计(02-23)
- 基于嵌入式计算机PC/104的某火箭弹自动测试仪应用(03-15)