ACE bus

ACE bus增加的内容:

1):5状态的cache model

2):关于coherency的additional signal

3):两个cache master访问shared cache的additional channel

4):支持Barrier transaction来保证transaction order

Cache Coherent的控制有两种方式,一种是SCU式集中的控制,另一种是ACE bus distribute的分散式的

Coherency model

每个master本地都有一个cache,通过cache interconnect连接到main memory

当store命令发生时,保证所有的cache中只有一个copy的cache存在。

store操作之后,允许一份cache有多个copy的对象。

在更新main memory时,也允许copy的cache存在,但是不推荐这样做。

ACE bus可以实现cache copy是否唯一性的判断,如果cache copy唯一,cache的修改都不需要notify其他的cache master

如果cache copy不唯一,cache的修改必须通过合适的transaction notify其他的cache master

Cache state model

以cache line为单位,可以分为:

Valid/Invalid:数据在当前cache中是否有效。

Unique/Shared:当前的cache line是否具有唯一性。

Clean/Dirty:clean不需要更新main memory,dirty需要更新main memory

当一个cache master得到一个新的copy cache line,其他的cache master可能也有一份该cache line的copy并且处于Unique状态,

此时必须notify其他的cache master将cache line的状态改为Shared

当一个cache master discard一个cache line时,不需要notify 其他的cache master,所以处于Shared State的cache line也可能是Unique状态的。

当一个cache line相对于main memory被更新,且有多个copy时,必须只有一个cache中处于Dirty state

ACE相对于AXI4多的信号:

Read address:ARDOMAIN[1:0]/ARSNOOP[3:0]/ARBAR[1:0]

Write address:AWDOMAIN[1:0]/AWSNOOP[2:0]/AWBAR[1:0]/AWUNIQUE

Read data:RRESP[3:2]

在write data和write resp中没有增加信号。

ACE新增加的channel:

snoop address channel:针对snoop transaction,为cache master提供address和控制信号。

ACVALID/ACREADY

ACADDR/ACSNOOP[3:0]

ACPROT[2:0]

snoop response channel:针对snoop transaction,提供response。

CRVALID/CRREADY

CRRESP[4:0]

snoop data channel:可有可无的信号,一般用在一个read clean cache的操作,返回cache中的数据。

CDVALID/CDREADY

CDDATA/CDLAST

从Shared location进行load操作:

1):master component在read address发出一个read transaction

2):interconnect通过snoop transaction确定是否有其他的master hold copy,发出snoop address

3):snoop resp/snoop data传到interconnect,interconnect将数据传给initial master

或者interconnect发出一个到main memory的transaction,正常的read address得到数据,传递给initial master

4):master检测到RACK信号,表示transaction结束

如果其他的master中的是一个dirty的cache,那么在将数据传递给intial master的同时,interconnect也必须更新main memory     

Shared location进行store操作:

当一个master进行store的操作时,会移除所有copy的cache line,来保证发生store操作时,只有一个unique的copy,

新的数据只能在master接下来又发出read操作时,才能读到cache line中。

store部分cache line中的数据:(必须先得到cache line的一份copy)

1):initial master在read address发出一个ReadUnique的命令,来将其他master的copy都移除。

2):interconnect通过snoop address channel将transaction传递给其他的cache

3):其他的cache master通过snoop response channel和snoop data channel将数据传递给interconnect

4):interconnect将数据数据和resp通过read data channel传递给initial master

如果其他的cache line中没有copy,则从main memory中读取。

5):intial master发出store命令,通过RACK来表示transaction的结束。

如果本身的cache line是一个Unique的,那么不需要对其他cache进行broadcase

store完整的cache line中的数据:(cache本身是)

1):在read address发出一个MakeUnique的命令,来移除其他cache中的cache line

2):interconnect通过snoop address channel将transaction传递给其他的cache,

3):interconnect将其他master的resp返回给initial master,snoop data channel不需要。

4):initial master进行store操作

store操作的cache line是shared的:

1):initial master在read address channel发出CleanUnique的transaction,移除其他cache line中的copy或者dirty copy写入main memory。

此时不会返回cache line的数据到initial master

2):interconnect通过snoop address将transaction传递给其他的cache,Snoop master返回resp

其他的cache line已经被移除。

a dirty cache line已经写入main memory

3):interconnect将resp通过read data channel传递给initial master

4):master发出store操作

Overlapping store 操作:

如果两个master同时对一个shared location发出store操作,由interconnect决定order

ACE中支持的各种transaction:

1):Non-snooping transaction,不会引起snoop transaction,访问的地址可以是Non-shareable/Device

具体可以分为ReadNoSnoop和WriteNoSnoop

2):Coherency transactions,来访问shareable address location

load:ReadClean,只接受read clean cache,如果master没有接受dirty cache的能力时使用。

ReadNotSharedDirty,只接受clean(unique/shared),unique dirty的cache

ReadShared,接受任何类型cache

当cache为一个dirty cache line时,interconnect负责将dirty line写入main memory

如果初始的cache line是一个Unique state,copy之后,需要将状态修改为Shared state

建议,使用snoop channel中的rdata,将数据传递给initial master

store:ReadUnique,在partial cache line的store操作中,没有copy的cache line存在,获得cache line的copy,并且没有copy存在

CleanUnique,在partial cache line的store操作中,有copy的cache line存在,获得cache line的copy,并将dirty cache写入main memory,

没有copy cache line存在。

MakeUnique,进行full cache line的store,invalid其他的copy的cache line

访问Shared location但是no cache copy require

           ReadOnce,得到一份cache copy但是原Unique cache不需要从Unique变为Shared

           WriteUnique, 在write transaction之前移除所有的cache copy,在该命令之前必须保证dirty data已经都被写入memory

WriteLineUnique,只能写入full cache line,其他与WriteUnique相同

3):Memory update transaction

WriteBack,write a dirty line到main memory中,来free一个cache line

WriteCLean,将dirty line写入到main memory中,同时保存一个cache line copy

WriteEvict,将cache line写入一个lower level的cache中,不要求写入main memory

Evict

这四种操作,并不会要求有snoop transaction的操作。

4):Cache maintenance transactions,master通过对系统中cache component的broadcast访问,控制cache maintenance,

称为software cache maintenance

      CleanShared,如果有dirty cache line,在接收到该transaction之后,写入main memory,并保存cache line的copy

CleanInvalid,如果有dirty cache line,在接收到该transaction之后,写入main memory,所有的copy cache line都被移除。

MakeInvalid,所有的copy cache line被移除,dirty cache line也不会被写入main memory

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

6):Barrier Transaction,保证系统中的order和observation transaction

memory barrier,domain中的另一个master能够观察到所有的transaction

synchronization barrier,在该barrier transaction之前所有的transaction都必须被某个domain内的master观察到,甚至到达slave之后,该barrier才能结束。

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,并提供resp,甚至data

6):interconnect决定是否需要进行main memory access

7):interconenct得到resp和data

8):initial master完成transaction

时间: 2024-10-08 08:02:12

ACE bus的相关文章

Bus System 【dijkstra算法】

Because of the huge population of China, public transportation is very important. Bus is an important transportation method in traditional public transportation system. And it's still playing an important role even now.The bus system of City X is qui

jeecg 3.5.2 新版本4种首页风格 【经典风格,shortcut风格,ACE bootstrap风格,云桌面风格】

[1]经典风格: [2]Shortcut风格: [3]ACE bootsrap风格: [4]云桌面风格: [5]自定义图表 [6].系统监控

hdu 5163 Taking Bus(模拟)

hdu 5163 Taking Bus 问题描述 Bestland有一条非常长的马路,马路上设有n个公交汽车站.公交汽车站从左到右标号为1到n.有m个人想要乘公交.你的任务是找出每个人到终点为止所需要的时间.注意:你需要用来解决这道题目的信息在Input里面,请仔细阅读. 输入描述 输入的第一行包含一个整数T (1≤T≤60),表示测试数据的组数.对于每组测试数据:第一行包含两个整数n和m (2≤n,m≤105),表示公交车站的数目和乘客的数目. 接下来一行包含n?1个整数, d1,d2,-,d

【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

?;ZnD(4?   评测介绍 1V-sibE   j|LOg 评测产品: 云引擎ACE服务 开发语言: PHP 评测人: mr_wid 评测时间: 2014年10月13日-19日 XV1XzG#C   .>p.k*vU   评测概要 9]:F!d/   fYlqaO4[   非常有幸能够申请到ACE的公测资格, 在本篇评测中, 笔者将以一个开发者的角度来对云引擎ACE服务进行介绍与使用.在本篇评测中, 您将看到: ACE能够做些什么 ACE应用的创建与发布 应用的配置与调试 ACE扩展服务的使

改造 Ace Admin 模板的 ace_tree 组件的 folderSelect 样式

*注:我用的Ace Admin版本为1.3.4 Ace Admin 是一个轻量,功能丰富,HTML5.响应式.支持手机及平板电脑上浏览的优秀管理后台模板. 关于tree的使用,html文件夹下treeview.html给了静态数据的例子,examples下treeview.html给了动态PHP语言的例子. 但是exmaple下的那个treeview,当参数“folderSelect=true”时:如图: 当点开 后,如图: 都不能再收起来,而我想改造成 folder点击选择,也象item样式一

5 ACE acceptor connector Proactor异步框架

ACE_Acceptor_Connector框架 完成accpet操作 [email protected]:~/ace/AceAcceptorConnector$ cat echo_server.cpp  #include <ace/Svc_Handler.h> #include <ace/SOCK_Stream.h> #include <ace/SOCK_Acceptor.h> #include <ace/Acceptor.h> class Accepto

Matlab中使用脚本和xml文件自动生成bus模块

帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更改总线数据接口,然后使用matlab脚本来生成BusObject和Bus模块库 以下代码运行环境:WIN10+Matlab2015a 下面给出代码Matlab函数的代码: function xmlbuscreator(xmlfile) % XMLBUSCREATOR:从xml文件读取数据结构,并生成

使用 ACE 库框架在 UNIX 中开发高性能并发应用

使用 ACE 库框架在 UNIX 中开发高性能并发应用来源:developerWorks 中国 作者:Arpan Sen ACE 开放源码工具包可以帮助开发人员创建健壮的可移植多线程应用程序.本文讨论创建使用 ACE 线程的应用程序的一些方法.Adaptive Communication Environment (ACE) 是一个高性能.开放源码.面向对象的框架和 C++ 类库,它有助于简化网络应用程序的开发.ACE 工具包包括一个操作系统层和一个封装网络 API 的 C++ 外观(facade

Microsoft ACE OLEDB 12.0概念及用法

首先需要清楚几个概念: Database engine(数据引擎):一些预先存储于数据库中的组件: Microsoft JET (Joint Engine Technology):Microsoft Jet 数据引擎,1992年发行初版,主要运用于 Microsoft Accesss的数据连接,Jet引擎,仅能访问 Office97-2003: Microsoft ACE(Office Access Connectivity Engine ):随着Access 2007发布之后, Microso