天天看点

ARM ACE协议学习(一)

资料来源于ARM AXI4_specification

ACE为AXI缓存扩展接口

ACE协议特点:

1、正确的跨缓存共享(CACHEs)

2、具有不同特征的器件交互

3、最大利用缓存数据

4、高性能低功耗之间的选择

ACE协议提供了系统级一致性框架,系统级设计包括

1、一致性存储范围

2、具有一致性扩展的存储系统器件

3、系统器件之间交互的软件模型

ACE协议实现通过

1、五个状态缓存模型,指明了Cache line的状态,决定接口可以执行哪些操作

2、扩展了AXI4接口信号,提供了新的传输类型

3、扩展了Cache Master与其他Master交互的通道,以便共享数据

ACE 1、支持Barrier传输 2、支持DVM(Distributed Virtual Memory)虚内存地址管理

ARM ACE协议学习(一)

一致性互联系统,即多个具有Cache的Master通过内部互联器件管理来访问主存。

Cache line的五种状态:

ARM ACE协议学习(一)

Cache line:

invalid、valid:表明Cache line是否在cache中

Unique、Shared:表明Cache line存在一个Cache还是多个Cache中

Dirty、Clean:表明cache line是否需要更新到主存

ACE对AXI4通道信号的扩展:

ARM ACE协议学习(一)

对写数据和写应答通道未进行扩展

ACE自身扩展的通道:

ARM ACE协议学习(一)

snoop address(AC):cache主端提供snoop传输的地址和控制信息

snoop response(CR):cache主端提供snoop传输的响应

snoop data(CD):可选的主端传递数据通道。通常发送在主端snooped时复制返回的有效数据(读事务和clean snoop)

ACE额外使用RACK和WACK通知完成读写事务

一、从共享地址加载数据操作流程:

1、主端在读地址通道发起读事务

2、interconnect查询是否在其他Cache保存有此地址的cache line存在

3、 1)如果存在

-----在CR通道响应

-----在interconnect上提供数据,在CD通道提供数据

2)不存在

-----在interconnect上发起主存传输事务,由当前的主端发起事务效率较高

-----在AXI读数据通道(RD)上返回数据,为AXI标准的读事务

4、主端器件使用RACK信号响应读完成

注:1、如果发起主端或被snooped的cache都不负责将dirty line写入主存则interconnect负责在读取的同时将数据写进主存2、在这种情况下interconnect负责产生传输地址和从snooped的数据写进主存

二、向共享地址store数据操作流程:

写入分为四种情况:

一、写入partial cache line

二、写入entire cache line

三、写入已经cache的数据

四、重复写入Overlapping store

一、 partial cache line(主端存储前必须获得当前cache line的拷贝)

1、主端获得cache line预存储形式,并且通过在RA通道上发起RU(ReadUnique)事务删除其他cache拷贝

2、interconnect在AC通道上传输给其他cache

3、snooped cache使用CR通道响应interconnect的传输,并使用CR通道返回数据

4、interconnect 使用RD通道响应响应最初的主端

-----如果没有snooped则interconnect 读取主存,然后响应主端-----

5、主端器件执行存储,并使用RACK信号指示传输已完成。

-----如果cache line是unique的,不需要广播给其他cache进行snoop-----

二、entire cache line(存储前不需要获得数据)

1、主端在RA通道上发起(Make Unique)事务获得cache line拷贝,这将移除其他的cache line拷贝

2、interconnect在AC通道上将事务传递给其他cache

3、snooped cache 在CR通道上响应表明copy已经被删除

4、interconnect使用RD通道响应主端已完成

-----只有响应,不传递数据-----

5、主端使用RACK信号表明传输完成

三、cache line is already cached(主端已经获得cache line)

1、主端在RA通道上发起(Clean Unique)事务获得cache line拷贝,这将移除其他的cache line拷贝并且将dirty写入主存

-----cache line不必返回给主端-----

2、interconnect在AC通道上将事务传递给其他cache。snooped cache使用CR通道响应表明copy已经被删除,interconnect是否需要将dirty写入主存

4、interconnect使用RD通道响应主端已完成

-----只有响应,不传递数据-----

5、主端使用RACK信号表明传输完成

四、Overlapping store(两个主端存储同一个line,interconnect决定传输顺序)

1、主端1执行正常一~三的store流程

2、主端2使用snoop port获取主端1的操作

1)如果主端2请求数据,需要等到1操作完成,能够进行主端2操作的时候

2)如果主端2在进行full cache line存储,当2检测到1的存储操作后删除数据的拷贝。当主端2的oberserve完成后可以继续进行2的store操作

3)如果主端2存储partial cache line,且已经有数据的copy,当2 observes到1的store操作,2必须移除copy,且必须进行以下操作

-----主端2必须重新组织一个数据请求操作,然后重新完成store-----

-----主端2可以将partial cache line写入主存,但不保留数据的copy,在后续重新获取这个cache line时需要重新取数据-----

ACE协议中使用到的事务类型(transaction,个人习惯叫传输)

1、Non-snooping transactions

不会引起snoop transaction,访问的地址可以是Non-shareable/Device 具体可以分为Read No Snoop和Write No Snoop

2、Coherent transactions

一、从共享地址加载数据

1)Read Clean:只接受clean cache line,如果master没有接受dirty cache的能力或使用write-through cache.

时使用

2)Read Not Shared Dirty:只接受clean(unique/shared),unique dirty的cache

3)Read Shared:接受任意line

二、向共享地址store数据

1)Read Unique:在partial cache line的store操作中,没有copy的cache line存在,获得cache line的copy,并且保证没有其他copy存在

2)Clean Unique:在partial cache line的store操作中,有copy的cache line存在,获得cache line的copy,并将dirty cache写入main memory, 并保证没有其他copy cache line存在。

3)Make Unique:进行full cache line的store,invalid其他的copy的cache line

三、向共享地址store数据但不需要copy时

1)Read Once:得到一份cache data 的snapshot但是原Unique cache不需要从Unique变为Shared

2)Write Unique: 在write transaction之前移除所有的cache copy,在该命令之前必须保证dirty data已经都被写入memory(full or partial cache line)

3)Write Line Unique:与2)相同但只能用于full cache line

-----Read Once和Write Unique不需要full line size,Write Line Unique需要----

3、Memory update transactions

1)Write Back:将cache line写入主存,来释放位置,不能保留此line的copy

2)Write Clean:将cache line写入主存,来释放位置,允许保留此line的copy

3)Evict:指示此cache line地址被排除,且不需要写入主存。用于特定被跟踪的器件cache line也可用来建立snoop 过滤器,在Evict中不传输数据

4、Cache maintenance transactions

主端器件广播此事务访问和维持系统中其他主端的cache。并且此操作能够让主端器件查看加载和存储操作对那些无法访问的系统缓存的影响,此操作叫作Software Cache Maintenance.且Cache maintenance transactions可传播到下游缓存,允许维护系统中所有缓存

-----主端初始化其他缓存时也对本地缓存进行操作----

1)Clean Shared:清空其他cache,如果有dirty line必须写入主存,snooped 本地cache可以保留cache line的copy

2)Clean Invalid: 清空并invalid 其他cache。如果有dirty line必须写入主存,然后将clean和dirty的所有line 全部删除

3)Make Invalid: 清空并invalid 其他cache,dirty不写入主存。

5、Snoop transactions

通过snoop的三个channel来进行操作,是coherency和maintenance transaction的子集。

6、Barrier transactions

保证系统中的order和observation

memory barrier:保证在barrier之后domain中的另一个master能够观察到所有的transaction

synchronization barrier:保证在该barrier transaction之前所有的transaction都必须被某个domain内的master观察到。有些synchronization barrier需要在barrier transaction到达从端之前所有事务都已经被组织好。

7、Distributed virtual memory transactions

用于维护虚拟内存地址,用于两个具有虚拟内存地址的器件之间消息传递。

Trasnaction的处理过程:

1)intial master发起一个transaction

2)根据address decode直接到slave,(不需要coherency支持)

交给interconnect中的coherency支持模块。

3):coherency transaction与其他master的transaction的顺序控制,order

4):interconnect发出必要的snoop transaction

5):每个cache master收到snoop transaction,并提供响应,有些操作提供data

6):interconnect决定是否需要访问主存

7):interconenct得到snoop响应和data

8):initial master完成transaction

ACE中一些名词的概念

Domains

Non-shareable :

Inner Shareable :

Outer Shareable:

System:

ARM ACE协议学习(一)

ACE中cache与域的关系

ARM ACE协议学习(一)

Distributed Virtual Memory

ARM ACE协议学习(一)

典型的DVM操作

1、主端在虚地址空间发起事务

2、SMMU接收虚地址转换为物理地址

----- 如果SMMU最近执行过此虚地址,则从他的TLB中直接获得翻译------

----- 否则SMMU遍历转换表进行转换-----

3、SMMU使用物理地址为主端组织事务

继续阅读