ACE bus
ACE bus增加的内容:
1):5状态的cache model
2):关于coherency的additional signal
3):两个cache master访问shared cache的additional channel
4):支持Barrier transaction来保证transaction order
ACE推荐的最小的cache line的大小:min-------16B或者width of data bus,max----2048byte或者Burst 16的最大data bus
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]
domain信号表示:00---Non-Shareable,01---Inner Shareable,10---Outer Shareable,11---system
AxCACHE中的cache比特为0时,只能用11 level
AXCACHE中的[3:2]不为零时,不能用11 level
BAR信号表示:00---Normal access(respecting barrier),01---Memory barrier,10---Normal access(ignoring barrier),11---Synchronization barrier
Snoop信号表示:Non-snooping/Coherent/Memory update/Cache maintenance/Barrier这几种transaction
Write address:AWDOMAIN[1:0]/AWSNOOP[2:0]/AWBAR[1:0]/AWUNIQUE
AWUNIQUE信号,主要用在lower level的cache hierarchy操作中,像L3 cache。(支持WriteEvict操作的transaction才需要该信号)
Read data:RRESP[3:2]
RRESP[2]:PassDirty,从interconnect来,HIGH表示,initial master必须保证该cache line需要重新写回main memory
Low表示,initial master没有这样的reponsibility
RRESP[3]:IsShared,从interconnect来,HIGH表示,另外还有copy,该cache line必须在Shared state
Low表示,没有其他的copy,该Cache line处于Unique state
在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
ACE中新增加的术语:
1):Domain,进行coherency/barrier操作时的master的集合。domain的定义是non-overlapping的。
ACE定义了四种level的shareability domain:
Non-shareable:包含一个master component
Inner Shareable:包含额外的master component
Outer Shareable:包含所有的Inner domain外,还包含master component
System:包含系统中所有的master component
2):barrier,包含一个address phase和一个resp,但是并没有data transfer。
master component必须在read address/write address发出一个barrier transaction
ACE bus的更多相关文章
- 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)
并发编程概述 前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...
- 设备模型(device-model)之平台总线(bus),驱动(driver),设备(device)
关于关于驱动设备模型相关概念请参考<Linux Device Drivers>等相关书籍,和内核源码目录...\Documentation\driver-model 简单来说总线(bus) ...
- Microsoft ACE OLEDB 12.0 数据库连接字符串
Excel 97-2003 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;Extended ...
- 基于ACE的c++线程封装
1. 基本需求 1) 一个基类,其某个方法代表一个线程的生命运行周期.之后通过继承自这个基类来实现个性化线程类: 2) 具备类似QObject的定时器设置功能: 3) 提供在线程对象中同步和异步执行方 ...
- Matlab中使用脚本和xml文件自动生成bus模块
帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更 ...
- JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果分享(你值得拥有)
前言:最近园子里多了许多谈语言.谈环境.谈逼格(格局)的文章,看看笑笑过后,殊不知其实都是然并卵.提升自己的技术才是王道.之前博主分享过多篇bootstrap组件的文章,引起了很多园友的关注和支持,看 ...
- bzoj 1537: [POI2005]Aut- The Bus 线段树
bzoj 1537: [POI2005]Aut- The Bus 先把坐标离散化 设f[i][j]表示从(1,1)走到(i,j)的最优解 这样直接dp::: f[i][j] = max{f[i-1][ ...
- 第3月第11天 vs2005调试 ace编译
1.vs2005调试 http://blog.csdn.net/u010797208/article/details/40452797 2.macbook ace编译 小坑: 源代码clockid_t ...
- .NET读取Excel数据,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
解决.NET读取Excel数据时,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序的操作: 1. 检查本机是否安装Office Access,如果未安装去去h ...
随机推荐
- 淘宝弹性布局方案lib-flexible实践
2个月前,写过一篇文章<从网易与淘宝的font-size思考前端设计稿与工作流>总结过一些移动web中有关手机适配的一些思路,当时也是因为工作的关系分析了下网易跟淘宝的移动页面,最后才有那 ...
- MySQL导出数据
1.MySQL导出数据库 只导出数据库结构:选中数据库-->右键—>数据传输—>高级—>取消勾选记录选项.
- 使用BigDecimal进行精确运算以及格式化输出数字
一.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供 ...
- ArcMap 10.3 AddIN找不到插件
现象:VS 2012写的AddIn插件,编译通过,安装成功 ArcGIS 10.3的AddIN Manager中,可以看到该插件 可是在自定义中却找不到.检索不到该插件. 解决方法:.net Fram ...
- NSNotification\KVO\block\delegate的区别和用法
在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation: 2.通 ...
- Heartbeat+DRBD+MySQL高可用方案
1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自 ...
- supercool.sh文件里,有哪些恶意的命令
当你在一个bash命令行中输入"*"时,bash会扩展到当前目录的所有文件,然后将他们全部作为参数传递给程序.例如:rm *,将会删除掉当前目录的所有文件. 0x01 文件名被当做 ...
- hibernate关联关系笔记
Hibernate关联关系笔记 单向N:1 * 有连接表:在N方使用<join>/<many-to-one>.1方无需配置与之关联的持久化类. * 没有连接表:在N方使用& ...
- 【整理】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...
- 分析-eclipse已经导入jar包了,但还是出现classNotFound异常
场景:分析-eclipse已经导入jar包了,但还是出现classNotFound异常 分析--eclipse已经导入jar包了,但还是出现classNotFound错误 最近在做一个web项目时,由 ...