CHI(六)独占访问

news2024/11/24 20:08:59

AMBA®5 CHI Architecture Specification IssueF

1. overview

独占访问的原则是,执行独占序列的逻辑处理器(LP)执行以下操作:

  1. 对一个地址执行exclusive load。
  2. 计算要存储到该位置的新值。
  3. 对该地址进行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,该操作包含:

  1. 决定是否exclusive sequence失败还是成功;
  2. 如果可以的话,更新地址所在的数据;

另外,执行的处理器(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是依赖于地址的内存属性

例如,如果requestermonitor之间存在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 comparison

PoC 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 monitor

HN-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响应,其写数据不会被更新到地址的存储空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/840570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【肺炎分类数据集】数据量非常充足的新冠肺炎分类数据共享

一、肺炎数据集介绍🍉: 1.1 格式🎈 按照标准的格式分为了①训练集train(134138575198张),②验证集val(8816张),③测试集test(234390624张)&#…

redis入门3-在java中操作redis

Redis的java客户端 Jedis、Lettuce、Redisson、以及spring提供的spring data redis Jedis操作redis //添加依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version> </dep…

DAY3,C高级(shell中的变量、数组、算术运算、分支结构)

1.今日思维导图&#xff1b; 2.判断家目录下&#xff0c;普通文件的个数和目录文件的个数&#xff1b; 1 #!/bin/bash2 arr1(ls -la ~/ | cut -d r -f 1 | grep -w -)3 arr2(ls -la ~/ | cut -d r -f 1 | grep -w d)4 echo "普通文件个数&#xff1a;${#arr1[*]}"5 e…

SpringCloud深度学习(在更)

微服务简介 微服务是什么&#xff1f; 微服务是一种架构风格&#xff0c;将一个大型应用程序拆分为一组小型、自治的服务。每个服务都运行在自己独立的进程中&#xff0c;使用轻量级的通信机制&#xff08;通常是HTTP或消息队列&#xff09;进行相互之间的通信。这种方式使得…

Tensorrt 原生Activate 算子讲解

Tensorrt operators docs&#xff1a; Activation Apply an activation function on an input tensor A and produce an output tensor B with the same dimensions. import numpy as np from cuda import cudart import tensorrt as trt # 输入张量 NCHW nIn, cIn, hIn, wI…

【每日一题】—— B1. Palindrome Game (easy version)(Codeforces Round 721 (Div. 2))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

Oracle-expdp报错ORA-39077、06502(Bug-16928674)

问题: 用户在使用expdp进程导出时&#xff0c;出现队列报错ORA-39077、ORA-06502 ORA-31626: job does not exist ORA-31638: cannot attach to job SYS_EXPORT_SCHEMA_01 for user SYS ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 ORA-06512: at "SYS.KUPV$…

React 核心开发者 Dan Abramov 宣布从 Meta 离职

导读React.js 核心开发者、Redux 作者 Dan Abramov 在社交平台发文宣布&#xff0c;将辞去在 Meta 的职务&#xff1a; “我感到苦乐参半&#xff0c;几周后我就要辞去 Meta 的工作了。在 Meta 的 React 组织工作是我的荣幸。感谢我过去和现在的同事接纳我&#xff0c;容忍我犯…

MySql的Windows安装指南

目录 一、MySQL的4大版本 二、软件的下载 三、MySQL8.0 版本的安装 四、配置MySQL8.0 五、配置MySQL8.0 环境变量 六、登录验证 一、MySQL的4大版本 MySQL Community Server 社区版本&#xff0c;开源免费&#xff0c;自由下载&#xff0c;但不提供官方技术支持&#xff…

RIP Bram Moolenaar

Grateful for your work on Vim and for the impact Vim has had on the world. Thank you for everything, Bram.

原创 | 图神经网络在区块链交易数据分析研究中的应用

作者&#xff1a;王佳鑫本文约3000字&#xff0c;建议阅读6分钟区块链技术带来的重大变革&#xff0c;也对金融服务、生态安全、隐私保护提出了诸多挑战。 加密数字货币是数字货币的一种&#xff0c;它不依靠法定货币机构发行&#xff0c;不受央行管控。借助于区块链等新兴技术…

机器学习中的人生启示:“没有免费的午餐”定理(NFL)的个人发展之道→探讨感觉和身边其他人有差距怎么办?

文章目录 1 引言2 探究NFL定理的含义3 将NFL定理应用于个人发展4 探索个人兴趣和天赋5 结论 1 引言 机器学习中的“没有免费的午餐”定理&#xff08;NFL&#xff09;是一条深具启示意义的原则。该定理表明&#xff0c;没有一种算法可以在所有问题上都表现最好。在机器学习领域…

MyBatis核心 - SqlSession如何通过Mapper接口生成Mapper对象

书接上文 MyBatis – 执行流程 我们通过SqlSession获取到了UserMapper对象&#xff0c;代码如下&#xff1a; // 获取SqlSession对象 SqlSession sqlSession sqlSessionFactory.openSession();// 执行查询操作 try {// 获取映射器接口UserMapper userMapper sqlSession.get…

C语言----字节对齐

一&#xff1a;字节对齐的概念 针对字节对齐&#xff0c;百度百科的解释如下&#xff1a; 字节对齐是字节按照一定规则在空间上排列&#xff0c;字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位&#xff0c;一个字节等于8位二进制数&#xff0c;在UTF-8编…

PS设计技巧01

大部分切图工作都是在PS中完成的 1、如何得知宽度和高度&#xff0c;先截个图&#xff1a; 2、找个文件夹&#xff0c;把截取的图片放进去&#xff0c;然后ctrl o 把图片文件放进去 3、存入图片&#xff0c;我们用的是网页图片&#xff0c;用的是ctrl r键&#xff0c;调出标尺…

记录电赛色块追踪部分

代码其实也很简单&#xff0c;我只不过加入了按键控制暂停、蜂鸣器、led和如何控制追踪的效果&#xff08;调PID&#xff09;。B站的那些大神早早地完成了要求&#xff0c;我犯了一个不好地错误&#xff0c;企图三连让他们分享思路&#xff0c;这是不对的&#xff0c;电赛本身的…

python之prettytable库的使用

文章目录 一 什么是prettytable二 prettytable的简单使用1. 添加表头2. 添加行3. 添加列4. 设置对齐方式4. 设置输出表格样式5. 自定义边框样式6. 其它功能 三 prettytable在实际中的使用 一 什么是prettytable prettytable是Python的一个第三方工具库&#xff0c;用于创建漂亮…

谷粒商城第九天-解决商品品牌问题以及前后端使用检验框架检验参数

目录 一、总述 二、商品分类问题 三、前端检验 四、后端检验 五、总结 一、总述 在完成完商品分类的时候&#xff0c;后来测试的时候还是发现了一些问题&#xff0c;现在将其进行解决&#xff0c;问题如下&#xff1a; 1. 取消显示的时候&#xff0c;如果取消了显示&…

Unity学习参考文档和开发工具

☺ unity的官网文档&#xff1a;脚本 - Unity 手册 ■ 学习方式&#xff1a; 首先了解unity相关概述&#xff0c;快速认识unity编辑器&#xff0c;然后抓住重点的学&#xff1a;游戏对象、组件|C#脚本、预制体、UI ☺ 学习过程你会发现&#xff0c;其实Unity中主要是用c#进行开…

Javaweb学习(2)

Javaweb学习 一、Maven1.1 Maven概述1.2 Maven简介1.3、Maven基本使用1.4、IDEA配置Maven1.6、依赖管理&依赖范围 二、MyBatis2.1 MyBatis简介2.2 Mybatis快速入门2.3、解决SQL映射文件的警告提示2.4、Mapper代理开发 三、MyBaits核心配置文件四、 配置文件的增删改查4.1 M…