【CHI】独占访问

1. overview独占访问的原则是,执行独占序列的逻辑处理器(lp)执行以下操作:
对一个地址执行exclusive load。
计算要存储到该位置的新值。
对该地址进行exclusive store。
支持对可嗅探(snoopable)和不可嗅探 (non-snoopable)的内存位置进行独占访问。
如果地址a在exclusive load之后被另一个lp更新了,那么在执行exclusive store时必须失败。在这种情况下,该store操作不能完成,即store的数据无法写入到a地址。
以下是exclusive terms:
翻译一下,就是:
exclusive load
是用于描述lp执行特定的程序指令的行为,如ldrex,该操作包含:
1.获得想要执行exclusive操作序列的地址的数据;
2.指示lp开始执行exclusive sequence;
(cpu的行为)
exclusive load transaction
如果数据没有在lp的cache中存在,就需要发送一笔exclusive load transaction来获取用于exclusive load的数据。
所以,但是不是每一笔exclusive load要求一笔exclusive load transaction。
(总线行为)
exclusive store
是用于描述lp执行特定的程序指令的行为,如strex,该操作包含:
决定是否exclusive sequence失败还是成功;
如果可以的话,更新地址所在的数据;
另外,执行的处理器(lp)知道exclusive store是成功还是失败的,如果exclusive store失败,那么地址所对应的数据不能被更新,并且exclusive sequence必须重新开始。
(cpu的行为)
exclusive store transaction
用于描述interface发送一笔transaction来完成需要的exclusive store。不是每一笔exclusive store都需要一笔exclusive store transaction,一笔exclusive store transaction成功与否可以通过transaction response的resperr域段告知lp;(有两个特殊,后面详细描述)
(总线行为)
2.exclusive monitors可以采用exclusive monitor来追踪exclusive sequence的进行。monitor的位置和为了支持exclusive accesses需要产生的request type是依赖于地址的内存属性。
例如,如果requester和monitor之间存在cache,那么独占访问应该是non-snoopable的。
2.1 snoopable memory location对于snoopable memory地址的exclusive访问,需要采用两个monitor:
lp monitor:
rn-f内的每个lp都必须实现一个exclusive monitor,用于检查exclusive sequence访问使用的地址信息。lp在执行exclusive load时,lp monitor置位;lp monitor在以下情况会复位:
lp收到同地址的invalidating snoop request,表明该地址已经被其它lp更新了;(即:本lp的独占序列被破坏,独占访问失败)
同一个lp对该地址产生的store(即:本lp的独占序列完成,独占访问成功)。如果store是由同一个lp采用non-exclusive命令产生的,monitor的复位是由实现具体决定的;
poc monitor:
hn-f必须实现一个poc monitor,用于判定exclusive store transaction的结果是成功还是失败。如果成功,表明该transaction已经对其它一致性rn-f可见(通过snoop将其他rnf的cache line失效了)。如果失败,表明该transaction没有对其它一致性rn-f可见,因此exclusive store不能成功;
该monitor用于保证来自一个lp的exclusive store transactions的成功只有在该lp没有接收到一笔同地址的snoop transaction,该snoop transaction是由其它rn-f对同地址的exclusive store产生的;
对poc monitor的最低要求就是它能记录任何lp对snoopable地址产生的exclusive sequence;
如果一个lp已经执行一笔exclusive sequence相关的transaction,然后在其它lp成功的执行exclusive store transaction之前,该lp先执行了exclusive store transaction,那么该exclusive store transaction必须成功;(意思就是独占序列没有被破坏,就独占访问成功了)
该monitor要支持并行监控系统中所有支持exclusive能力的lp;(也就是每个lp都要有在monitor中有一个独立的条目进行监控)
当hn-f收到一笔和exclusive load或exclusive store相关的transaction后,该monitor会注册/记录lp正尝试一个exclusive sequence;
当hn-f收到一笔exclusive store transaction:
如果poc monitor中已经记录了该lp正在执行exclusive sequence,(即monitor对该lp的某地址的独占标记还在),也就是说该lp的exclusive sequence还没有被其它exclusive store transaction给复位掉,那么该exclusive store肯定成功并且允许继续进行处理。在这种情况下,其它lps的相关注册都应该被复位,chi协议建议但不要求poc monitor对于已经成功的lp的注册仍然保留;
如果poc monitor没有注册lp正在进行的exclusive sequence,也就是说lp的注册位已经被其它lp的exclusive store给复位了,那么该lp的exclusive store transaction失败且不允许被继续处理。但是poc monitor必须注册该lp的正在进行exclusive sequence。
注意:
1、对于一个lp,如果exclusive store transaction执行成功,那么该lp在poc monitor的注册位不需要被复位,这样的话,该lp可以继续成功执行一系列的exclusive store transaction,直到其它lp成功执行exclusive store transaction。对于lp不确定的store transactions,该store transaction必须被处理为来自不同lp的访问;
2、在系统复位初始化,第一个lp执行exclusive store transaction可以成功,但是chi协议不要求有这个功能。在这点上之后,所有其他lps必须注册它们exclusive sequence的开始,才能让它们后续exclusive store transaction的成功进行;
3、当lp的exclusive store transaction成功后,其它lp的注册位都被复位掉,只有成功的exclusive store transaction的compack响应成功后,其它lp才可以注册新的exclusive sequence;
4、为了支持exclusive访问snoopable memory空间,lp monitor和poc monitor都需要;
2.2 additional address comparisonpoc monitor的功能通过增加一些地址比较来增强,只需要记录地址的某些bits就行,不需要全地址的匹配。这种方法可以减少其它lps访问不同地址的exclusive store transaction的失败导致的风险,需要比较的地址位数由具体实现决定的。
当使用额外地址比较的monitor,在exclusive sequence(load exclusive or store exclusive)的最开始,监控的地址需要被记录下来。只有在其它地址匹配的lp成功的exclusive store transaction才会将其复位;
包含额外地址比较的monitor仍然包含最小1bit monitor用于监控每个支持exclusive能力的lp。
在以下条件发生时,exclusive store transaction才允许继续进行:
地址monitor已经给同一个lp的匹配地址的exclusive sequence注册过,且没有被其它地址匹配的exclusive store transaction复位了;
最小1bit monitor已经给同一个lp的exclusive sequence注册过,且没有被其它任何值的lp的exclusive store transaction复位了。
--------这一段说的废话,monitor必须记录地址!
2.3 alternatives to a poc monitorhn-f允许使用以下机制来代替poc monitor来决定独占访问的结果:
一个精确的snoop filter,用来跟踪请求者在exclusive store处理时是否保留了cache line的副本。
通过home的snoop,以确定requester是否仍然持有cache line的副本。
注意:在chi issue e之前,需要实现poc monitor
2.4non-snoopable memory location对于non-snoopable memory地址区间,使用一个monitor。
system monitor:
系统monitor会跟踪访问non-snoopable地址空间的exclusive访问。该monitor在有readnosnp(excl)操作时置位,会被其它同地址lp的改写而复位;
system monitor可以放置于pos或终端设备处。因为系统中终端的数据比pos的数目多,一般将system monitor放置于pos处,这样可以:
减少system monitor的重复;
减少系统检测exclusive访问失败的时间;
system monitor应该放置于可以观察到所有访问监控地址的transactions的地方。
pos : point of serialization
poc : point of coherence
3. exclusive transactions以下操作可以使用excl bit来支持exclusive访问:
exclusive操作的通讯节点对有:
xclusive transaction必须使用正确的lpid值。
3.1 responses to exclusive requests对于exclusive requests的响应和其它正常读写的响应类似,除了:
• readclean, readnotshareddirty, and readshared exclusive transactions:
--不能使用分离的 comp和 data response.
--requests不能使用 dmt or dct.
• readnosnp exclusive transactions 不能使用 dmt.
• writenosnpfull and writenosnpptl transactions,, 如果 exclusive monitor在hn-f,且独占检测通过,不能使用dwt
下面这些exclusive transaction必须通过响应来告知通过还是失败:
• readclean
• readnotshareddirty
• readshared
• readnosnp
• cleanunique
• writenosnpfull
exclusive request的响应的resperr域段可以指示exclusive操作成功与否。resperr域值为0b01表示exclusive okay,即exclusive成功,resperr域值为0b00表示normal okay,即exclusive失败;
只有一笔transaction的excl置位,才可能返回exclusive okay响应;
不是所有的内存空间都支持独占访问。(什么样的内存空间不支持独占访问??)对于不支持exclusive访问的地址不能回exclusive okay响应;
对于访问不支持exclusive操作的地址,执行exclusive store是否会将数据更新到地址中是由具体实现决定的;
chi协议建议不要对不支持exclusive访问的地址发送exclusive store transaction。
readpreferunique 和 makereadunique不使用resperr来确定独占操作的通过或失败。而是通过收到的数据响应状态来确定:
如果响应为shared cache状态,则表示独占访问失败;
如果响应为unique状态,requester必须使用其lp monitor状态来确定独占访问是否为通过。
下为request的snoopable属性、相关monitor类型、exclusive失败的可能原因以及响应需求。
3.2 system responsibility使用chi协议实现的系统必须遵循以下原则:
为了有效处理exclusive访问,每个lp应该包含一个monitor;
不管是使用monitor机制还是其它方法,对于所有的exclusive requests,都应该有防饥饿机制;
chi协议建议安全exclusive访问和非安全exclusive访问独立分开处理。
3.3 exclusive accesses to snoopable locations本小节描述当使用exclusive访问snoopable地址空间时,lp需要执行的行为。
snoopable exclusive load
lp使用exclusive load开始一次exclusive sequence。exclusive sequence的开始必须将lp exclusive monitor置位。
lp要执行一笔snoopable地址的exclusive访问的数据可能在local cache中已经存在了:
如果lp中该cacheline为unique状态,chi协议允许(但不推荐)lp执行exclusive load transaction;
如果lp中该cacheline为shared状态,chi协议允许但不要求lp执行exclusive load transaction;
如果lp中该cacheline不存在,chi协议推荐lp执行exclusive load transaction来获取一份cacheline数据,但是允许excl bit不置位的readclean或readshared或readnotshareddirty transaction;
snoopable exclusive load to snoopable exclusive store
在执行完exclusive load之后,lp通常会计算该地址的新值,用于后续exclusive store存储。
chi协议不要求lp完成一次exclusive sequence。例如,exclusive load获得数据可以指示旗语有没有被其它lp拿走了,如果被拿走了的话,则不能改变该值直到其它lp释放了该旗语。因此,新产生的exclusive sequence不需等待当前exclusive sequence的完成。
在exclusive load和exclusive store之间,lp exclusive monitor必须监控该地址的数据来判断是否已经被其它lp改变了。
snoopable exclusive store
同一个lp不允许和任何注册且正在执行exclusive sequence的transaction同时执行exclusive store transaction。在发送一笔exclusive store transaction之前,lp必须等到任何这样的transaction的message已经交换完,或者接收到retryack响应。lp正在执行的已经注册的transactions的exclusive sequence有:
exclusive load transactions to any location.
exclusive storetransactions to any location.
当lp正在执行exclusive store时,需要以下操作:
如果lp exclusive monitor已经被复位了,那么exclusive store必须失败,且lp不能发送exclusive store transaction。lp必须重新开始exclusive sequence;注意:当lp monitor被置位了,不能发送最终失败的exclusive store transaction,避免不需要的无效掉cacheline数据。
如果cacheline为unique状态,且lp exclusive monitor置位,那么exclusive store已经pass了,不需要发送exclusive store transaction就可以更新该地址的数据;
如果cacheline是shared状态,且lp exclusive monitor置位,那么lp必须发送一笔exclusive store transaction。必须使用excl比特置位的cleanunique transaction。lp exclusive monitor必须继续监控在cleanunique执行过程中,该数据没有被更新。
cleanunique transaction将会受到normal okay或者exclusive okay响应。
如果收到exclusive okay响应,意味着该transaction已经成功并且把其它rn中有该cacheline的备份失效掉。在该笔exclusive transaction完成后,lp必须再次确认lp exclusive monitor:1. 如果lp exclusive monitor置位,那么exclusive store成功且数据更新已经执行完成;2. 如果lp exclusive monitor没有置位,表明该cacheline在store transaction完成之前已经被更新了,因此exclusive store必须失败,exclusive sequence必须重新开始;3. 如果lp无法跟踪到cacheline的exclusive状态,因为该cacheline已经驱逐掉,那么exclusive store必须失败,exclusive sequence必须重新开始。
如果收到normal okay响应,意味着其它lp已经完成了exclusive store,因此lp的exclusive store产生的transaction失败,不能传播给系统中的其它lps。一笔exclusive store transaction以normal okay响应结束后,接下来可选选项有:1. 在访问完成后,lp可以检查或不检查cacheline状态,lp将exclusive store失败掉并且重新开始exclusive sequence;2. lp可以检查lp exclusive monitor,如果lp exclusive monitor已经被复位了,那么lp必须将exclusive store失效掉,并且重启exclusive sequence;3. lp可以检查lp exclusive monitor,如果lp exclusive monitor置位,lp可以再次发起exclusive store transaction。
3.4 exclusive accesses to non-snoopable locations
对于non-snoopable的exclusive访问,有以下限制:
exclusive access的地址必须和transaction总的bytes数对其;
exclusive access传输总的bytes数目必须是合法数据size,即1、2、4、8、16、32bytes;
对于不遵循这些限制的行为将导致unpredictable;
对于exclusive read和exclusive write transaction被认为是一对传输,必须遵守如下准则:
exclusive read和exclusive write的地址必须相等;
exclusive read和exclusive write的控制信号,即memattr和snpattr,必须相等;
exclusive read和exclusive write的data size必须一样;
exclusive read和exclusive write的lpid必须一样;
exclusive operation的最小bytes数是transaction size决定的。system monitor可以监控更大的bytes范围,最多可达exclusive access的最大size 64。然而,这样可能导致成功的exclusive访问被认为是失败的,由于在exclusive传输过程中,相邻byte被改写了。
多个访问non-snoopable memory地址的exclusive transactions,不管是写还是读,是同一个地址还是不同地址,来自同一个lp的必须不能同时outstanding发送。
如果sn通过exclusive readnosnp的响应返回exclusive fail表示不支持exclusive访问,那么如果写操作返回的是exclusive fail响应,其写数据仍然会被更新到地址的存储空间;
如果sn通过exclusive readnosnp的响应返回exclusive pass表示支持exclusive访问,那么如果写操作返回的是exclusive fail响应,其写数据不会被更新到地址的存储空间。

皮尔磁的PMCtendo伺服电机现在支持HIPERFACE DSL(R)接口
中国科学院院士郭光灿新书《颠覆:迎接第二次量子革命》获第十八届文津图书奖!
联通大数据发挥自身优势为3000多个政企客户提供数据智能科技服务
消费升级驱动智能终端市场转变 产品设计朝四大方向发展
变频器与PLC通讯的精简设计
【CHI】独占访问
allegro常用快捷键设置
基于AI微控制器的CNN的硬件转换
呕吐毒素检测仪产品特点
激光显示行业开拓者光峰科技携家用核心器件产品亮相高交会
智能家居迎来高潮发展期,主战场正在悄悄转移
华为推动拉美MBB/5G产业的蓬勃发展
Nordic NRF51系列多协议SOC芯片的特点
探讨OEM制造生命周期的安全性问题
新材料企业家成长营将走进国内领先的金刚石线制造商岱勒新材
国行三星GalaxyS9/S9+开启安卓9.0内测 仅限前1万位报名的用户
PCB板相关知识科普
ANC降噪耳机,给你想“静静”的机会
什么是信号回流路径?
小巧可靠的无源元件是医疗设备选择的关键