AMBA ACE

1. 简介        

        ACE是AXI Coherency Extensions的缩写。顾名思义,ACE就是AXI加上支持一致性的扩展。ACE协议提供了系统级一致性框架,系统级设计包括:

1、一致性存储范围
2、具有一致性扩展的存储系统器件 
3、系统器件之间交互的软件模型

        ACE协议实现通过以下扩展支持Barrier传输DVM(Distributed Virtual Memory)
1、五个状态缓存模型,指明了Cache line的状态,决定接口可以执行哪些操作
2、扩展了AXI4接口信号,提供了新的传输类型
3、扩展了Cache Master与其他Master交互的通道,以便共享数据

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

AMBA ACE_第1张图片

2. cache line 5种状态

invalid、valid:表明Cache line是否在cache中
Unique、Shared:表明Cache line存在一个Cache还是多个Cache中
Dirty、Clean:表明cache line是否需要更新到主存

AMBA ACE_第2张图片

3. ACE相对AXI4变动

3.1 ACE对AXI4通道信号的扩展

        对读写地址通道和读数据通过进行了扩展,对写数据和写应答通道未进行扩展:

AMBA ACE_第3张图片

3.2 ACE自身扩展的通道

snoop address(AC):cache主端提供snoop传输的地址和控制信息
snoop response(CR):cache主端提供snoop传输的响应
snoop data(CD):可选的主端传递数据通道。通常发送在主端snooped时复制返回的有效数据(读事务和clean snoop)

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

AMBA ACE_第4张图片

4. ACE读写操作流程

4.1 从共享地址加载数据操作流程

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的数据写进主存

4.2 向共享地址store数据操作流程

        写入分为四种情况:
1、写入partial cache line
2、写入entire cache line
3、写入已经cache的数据
4、重复写入Overlapping store

4.2.1 写入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-----

4.2.2 写入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信号表明传输完成

4.2.3 写入已经cache的数据

        注:主端已经获得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信号表明传输完成

4.2.4 重复写入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时需要重新取数据-----

5. ACE事务类型

5.1 Non-snooping transactions

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

5.2 Coherent transactions

5.2.1 从共享地址加载数据

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

5.2.2 向共享地址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

5.2.3 向共享地址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需要----

5.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中不传输数据

5.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.5 Snoop transactions

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

5.6 Barrier transactions

        保证系统中的order和observation
        memory barrier:保证在barrier之后domain中的另一个master能够观察到所有的transaction
        synchronization barrier:保证在该barrier transaction之前所有的transaction都必须被某个domain内的master观察到。有些synchronization barrier需要在barrier transaction到达从端之前所有事务都已经被组织好。

5.7 Distributed virtual memory transactions

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

AMBA ACE_第5张图片

典型的DVM操作
1、主端在虚地址空间发起事务
2、SMMU接收虚地址转换为物理地址
----- 如果SMMU最近执行过此虚地址,则从他的TLB中直接获得翻译------
----- 否则SMMU遍历转换表进行转换-----
3、SMMU使用物理地址为主端组织事务

6. 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

7. ACE信号描述

7.1 RA和WA通道

7.1.1  AxDOMAIN[1:0]

        AxDOMAIN[1:0]信号指明了cache 操作的domain:

AMBA ACE_第6张图片

Device事务中AxCACHE[1]=0,只能用系统级

Cacheable事务中AxCACHE[3:2]!=0,不能使用系统级

AMBA ACE_第7张图片

7.1.2 AxBAR[1:0]

        AxBAR[1:0]指明了Barrier transaction。

AMBA ACE_第8张图片

7.1.3 ARSNOOP[3:0]和AWSNOOP[2:0]

AMBA ACE_第9张图片AMBA ACE_第10张图片

7.1.4 cache line的大小限制

最小值为以下值中的较大者:
•16个字节
•数据总线的宽度(单位为byte)


最大值为以下值中的较小的:
•2048字节
•最大突发长度16×数据总线的宽度(单位为byte)例如:bus width 1024 maximum = 1024/8×16

7.1.5 其他信号

1、AxLEN必须为1、2、4、8、16**
2、AxSIZE必须等于总线位宽
3、AxBURST
1)INCR地址必须对齐cache line size=AxLEN×AxSIZE
2)WRAP地址必须对齐AxSIZE
3)不支持fixed
4、AxDOMAIN
1)除CleanShared、CleanInvalid、MakeInvalid外域必须为Inner Shareable 或 Outer Shareable
2)CleanShared、CleanInvalid、MakeInvalid的域必须为Non-shareable、 Inner Shareable 或 Outer Shareable.
5、AxBAR
必须为normal access
6、AxCACHE
必须为Modifiable.
7、AxLOCK
1)如果事务为ReadNotSharedDirty, ReadUnique,
MakeUnique, CleanShared, CleanInvalid, MakeInvalid,
WriteLineUnique 或Evict. 必须为0
2)如果为ReadClean, ReadShared, 或CleanUnique.0或1都可以
8、WriteLineUnique事务要求所有write data strobe置位
9、以下事务要求AxLEN为正确的cache line size,即使并未传递数据
CleanUnique
MakeUnique
CleanShared
CleanInvalid
MakeInvalid
Evict.

ReadOnce和 WriteUnique transactions
1、AxDOMAIN必须为Inner Shareable或Outer Shareable
2、AxBURST必须为INCR 或 WRAP
3、AxCACHE必须为Modifiable.
4、AxLOCK必须为normal access

WriteBack and WriteClean transactions
1、AWBURST
1)WRAP地址必须对齐AxSIZE(总线位宽),burst length 必须为2, 4, 8 or 16。AWSIZE x AWLEN不能超过cache line size
2)INCR burst length必须小于16,最后一个字节为AWISZE对齐的首地址加AWSIZE x AWLEN。最后一字节必须与第一个字节位于同一个line中
2、AWDOMAIN必须为System
3、AWBAR必须为normal access
4、AxCACHE必须为Modifiable.
5、AxLOCK必须为normal access

Barrier transactions
1、AxADDR 必须为全0
2、AxBURST 必须为INCR
3、AxLEN 必须为全0
4、AxSIZE必须为总线位宽
5、AxCACHE必须为Normal, Non-cacheable.
6、AxLOCK必须为normal access
7、AxSNOOP必须为全0

7.2 RR(读响应)通道

RRESP[2]:为高时数据必须将数据写入主存
RRESP[3]:为高时表明其他cache中存在的copy必须保持Shared状态,为低时表明仅仅为cache的copy可以为Unique状态

AMBA ACE_第11张图片

当需要移除所有其他cache中的copy时RRESP[3]必须为低;

当不允许传递dirty时RRESP[2]必须为低;

当这两位不起作用时必须为低;

EXOKAY只有ReadNoSnoop, ReadClean, ReadShared或CleanUnique允许响应

7.3 RACK(读告知)通道

        RACK信号在主端读完成后必须置位一个时钟周期,且依赖于RVALID/RREADY,就像RLAST信号,且不能被延迟
        RACK必须发送到所有事务
        RACK不含有顺序信息,顺序与last read和read response有关
        RACK被interconnect用来保证主端的snoop port访问同一个地址的进程完成后才能发起事务

7.4 WR(写响应通道)通道

        EXOKAY 只响应 WriteNoSnoop事务

7.5 WR(写告知)通道

        WACK信号在主端写完成后必须置位一个时钟周期
        WACK信号依赖于BVALID/BREADY
        WACK必须发送到所有事务包括barrier transactions
        WACK不含有顺序信息,顺序与write response有关
        WACK被interconnect用来保证主端的snoop port访问同一个地址的进程完成后才能发起事务

7.6 AC(Snoop address)通道

ACVALID:为高时snoop address可用
ACREADY:为高时主端可接受snoop address信息
ACADDR[ac-1:0]:snoop address位宽必须与读写地址位宽保持一致。
ACSNOOP[3:0] :Snoop事务类型
ACPROT[2:0]:Snoop保护类型 ACPROT[1]可被定义两个地址空间:安全的和不安全的,也可以被定义为额外地址位防止地址混淆

AMBA ACE_第12张图片AMBA ACE_第13张图片

7.7 CR(Snoop response)通道

CRVALID:表明Snoop response是有效的
CRREADY:表明Snoop response可在这个周期被接收
CRRESP[4:0]:表明Snoop response的类型

AMBA ACE_第14张图片

CRRESP[1]:为高时代表要提供full cache line data,为低时不需要。以下操作如果snoop导致了cache hit则需要传输数据 (如果line为clean的,虽然不一定需要传输数据,但推荐仍进行传输)
        ReadOnce、ReadClean、ReadNotSharedDirty、ReadShared、ReadUnique.、当cache hit且dirty、CleanInvalid和CleanShared操作需要传输数据

CRRESP[1]:为高时代表snoop 的cache line发生了错误,需要系统支持错误修正,如果系统不支持则永久置低
CRRESP[2]:为高时需要将dirty数据写入主存
CRRESP[3]:为高时表明snoop完成后cache保留cache line的copy
CRRESP[4]:为高时表明snoop之前cache处于unique状态其他cache没有copy

AMBA ACE_第15张图片

7.8 CD(Snoop data)通道

CDVALID:snoop data有效
CDREADY:snoop data准备接收
CDDATA[cd-1:0]:snoop data
CDLAST:最后一次数据传输
CDDATA位宽不必要与读写数据位宽一致
snoop data位宽可以为32, 64, 128, 256, 512, 或1024,但要满足
• cache line size transactions must be a full data bus width
• the burst length must be 1, 2, 4, 8, or 16.
        CD(Snoop data)通道是可选的,但cache 主端不能保有dirty数据,在获得dirty数据时必须首先把dirty数据写入主存。

7.9 snoop通道依赖关系

AMBA ACE_第16张图片

你可能感兴趣的:(数据库)