AMBA CHI协议支持DVM(Distributed Virtual Memory,分布式虚拟内存)操作,使用DVM操作来管理虚拟内存。DVM是CHI用于管理虚拟地址空间和物理地址空间映射的一种机制。DVM操作可以使系统中的不同节点共享一致的虚拟内存视图,从而提高性能和安全性。
1. DVM transaction 介绍
CHI使用DVM操作来管理虚拟内存。CHI定义了两种类型的DVM操作:DVM Non-sync和DVM Sync。
在CHI中,所有DVM的操作都分为两个part发送到MN。这与ACE不同,ACE有的DVM操作需要两个part,而有的操作只需要1个part。
下面描述了CHI中DVM操作的part顺序:
DVM的第1个part作为请求发送给MN,Opcode字段设置为DVMOp。请求Flit使用地址字段来编码操作的属性。
DVM的第2个part作为数据Flit发送,只有在请求节点收到MN的DBID response后才发送。第2个part携带了DVM操作的目标地址。
当MN收到DVM操作的两个part时,MN会向参与一致性域的RN生成DVM Snoop。MN在节点监听通道上发送两部分的DVM Snoop。
DVM Snoop的两个part必须使用相同的TxnID和Opcode SnpDVMOp,并使用以下参数:
第1个part使用地址字段来编码操作属性和目标地址的高位
第2个part使用地址字段发送地址的其余位
为了区分这两个part,CHI要求地址字段的bit[3]设置为0以表示第1个part,设置为1表示第2个part。DVM snoop的第2个part可能在第1个part之前到达RN。
2. DVM事务类型
CHI定义了两种类型的DVM操作:非同步DVM(DVM Non-Sync)和同步DVM(DVM Sync)。DVM操作的属性决定了RN在响应DVM Snoop之前是否必须等待操作完成。
DVM sync只执行同步操作,没有其他操作。
DVM non-sync包括以下3种操作:
TLB Invalidate
Instruction cache Invalidate
Branch Predictor Invalidate
DVM non-sync不需要等DVM操作执行完成就可以进行更多的DVM操作,这允许有多个outstanding的DVM non-sync。
在以下示例中,RN-F可以发出多个Branch Predictor或Instruction Cache Invalidate,接收的RN-F或RN-D不必立即执行操作:
RN-F或RN-D收到一个指示DVM Non-Sync的DVM Snoop。
RN-F或RN-D向MN发出Snoop响应。Snoop响应确认收到DVM消息,但不表示RN已经执行了DVM操作。
MN向发起RN-F发送Completion消息,表示已接受DVM操作。
为确保所有outstanding的DVM请求已执行,需要执行以下步骤:
RN-F向MN发出DVM sync操作。任何需要由DVM Sync完成的DVM请求必须在发出DVM Sync之前收到它们的完成响应。
MN在snoop通道上向所有RN-F和RN-D发出DVM Snoop。
每个目标RN确保其所有未完成的DVM操作已执行。
每个RN向MN发出一个Snoop响应,表示所有操作已执行。
MN向最初发出DVM sync的RN-F发送DVM Sync的Completion响应。
CHI DVM Sync与ACE中的DVM Sync类似。两者都检查之前发出的DVM操作是否已完成。不同之处是CHI不需要DVM完成消息。
注:Arm核会因DSB指令产生DVM Sync。然而,实现可以选择仅在尚未同步的DVM操作存在时,才因DSB发出DVM Sync。
3. DVM操作flow
本节描述了一个TLB invalidate DVM请求,之后跟一个DVM sync操作,并展示以下事件:
DVM请求的不同部分
MN生成的监听操作
DVM sync如何确保之前的DVM操作已执行
DVM事务的具体流程如下:
RN0发一个TLB invalidate DVM请求给MN。
MN回一个DBIDResp给RN0,表示可以接受DVM请求的第二部分。
RN0向MN发出写数据消息。这是DVM消息的第二部分。
MN将DVM请求的两个部分发送给RN1。
RN1通过向MN发送snoop响应来确认DVM请求。
MN接收到snoop响应。
MN向RN0发出完成消息。
RN0向MN发出一个DVM sync操作。
MN向RN0发出DBIDResp消息。
RN0向MN发送写数据消息。这是DVM同步消息的第二部分。
MN向RN1发出DVM sync监听操作。
RN1完成所有outstanding的DVM操作。
RN1向MN发送监听响应,表示已完成所有操作。
MN向RN0发出完成消息。这是对DVM sync请求的响应。
参考:
Introducing the AMBA Coherent Hub Interface
AMBA® 5 CHI Architecture Specification
2009
