【ARM】内存属性Memory Attributes (MemAttr)

news2024/10/7 10:23:28

目录

1. EWA

2. Device

3. Cacheable

4. Allocate

5. 内存属性的传播

6. 事务属性组合

7. Memory Type


       

        内存属性Memory Attributes (MemAttr) 包含Early Write Acknowledgment (EWA), Device, Cacheable, 以及Allocate

1. EWA

EWA,Early Write Acknowledgment ,指示事务的写入完成响应是否必须来自事务的终点:

  • EWA=1:允许来自互连中的中间点,例如Home节点。则该事务的写入完成响应可以来自中间点或来自端点。
  • EWA=0:必须来自事务的最终目的地。

注意:如果不使用EWA属性,完成信号必须来自端点。

EWA断言要求如下:

可以取任意值:

  • •可以在ReadNoSnp和ReadNoSnpSep事务中取任何值。
  • •可以在WriteNoSnp事务中取任何值。
  • •可以在CMO事务中取任何值。
  • •可以在Atomic事务中取任何值。

必须置位:

  • •必须在不是ReadNoSnp、ReadNoSnpSep或CMO事务的其它读、dataless事务中断言
  • •必须在非WriteNoSnp事务的其它Write事务中断言。

不适用:

  • •不适用于DVMOp或PCrdReturn事务中,设置为零。
  • •不适用于PrefetchTgt事务,可取任何值。

2. Device

Device属性指示内存类型是Device还是Normal

Device memory type

        对于exhibit side-effects的位置必须使用Device memory type,连带效应(side-effectts),即对一个地址的数据的操作可能会影响到另一个地址中的数据值。允许对没有exhibit side-effects的位置使用Device memory type。

事务到 Device type memory location的要求如下:

  • •读取事务不能读取超过请求的数据。
  • •不允许从设备内存位置预取(Prefetching)。
  • •读取必须从端点获得数据。不得在完成的中间点将同一地址的写入数据转发给读事务。(也就是说,地址A,有个写操作,你不得在中间点把写入的这个data转发给Read)
  • •不允许将到不同位置的请求合并成一个请求,或将到同一位置的不同请求合并成一个请求。(Gathering属性?)
  • •写入不能合并。
  • •从中间点完成的对Device内存的写入必须使写入数据及时对端点可见。

对设备内存的访问必须使用以下类型,允许使用独占变体(exclusive variants):

  • •对Device内存位置的读取访问必须使用ReadNoSnp。
  • •对Device内存位置的写入访问必须使用WriteNoSnpFull或WriteNoSnpPtl。
  • •CMO事务。
  • •Atomic原子事务
  • •PrefetchTgt预取事务不允许,MemAttr字段不适用可取任何值。

Normal memory type

Normal memory type适用于不会产生side-effects的内存位置。

对Normal内存的访问在预取或转发方面没有Device类型内存那些限制:

  • •已断言EWA的读取事务可以从写入事务中获得读取数据,如果该写入事务已从中间点发送其完成,并且是同一地址。
  • •写入可以合并。

        任何Read、Dataless、Write、PrefetchTgt或Atomic事务类型都可以用于访问Normal内存位置。所使用的事务类型由要完成的内存操作和Snoopable属性决定。

3. Cacheable

Cacheable属性指示事务是否必须执行缓存查找:

  • •当断言Cacheable时,事务必须执行缓存查找。
  • •取消断言Cacheable时,事务必须访问最终目的地。

Cacheable值要求包括:

必须置位:

  • •必须为ReadNoSnp和ReadNoSnpSep以外的任何读取事务断言。
  • •必须为除CleanShared、CleanSharedPersist*、CleanInvalid、MakeInvalid之外的任何Dataless事务断言。
  • •必须为除WriteNoSnpFull和WriteNoSnpPtl之外的任何Write事务断言。

不得置位:

  • 不得为任何Device内存事务断言。
  •  WriteNoSnpDef事务不得断言

可取任意值:

  • •对于发送到Normal memory 位置的ReadNoSnp、ReadNoSnpSep、WriteNoSnpFull和WriteNoSnpPtl事务,可以设为任何值。
  • •对CleanShared、CleanSharedPersist*、CleanInvalid和MakeInvalid事务可以取任何值。
  • •Atomic事务可以取任何值。

不适用:

  • •不适用于DVMOp和PCrdReturn事务,必须设置为零。
  • •不适用于PrefetchTgt事务,可以取任何值。

4. Allocate

Allocate属性是一个分配提示。它指示事务的建议分配策略:

  • •如果断言了Allocate,出于性能原因,建议将事务分配到缓存中。但是,允许不分配事务。
  • •如果取消断言Allocate,出于性能原因,建议不将事务分配到缓存中。但是,允许分配事务。

(那到底要不要allocate?最简单的实现方案就是allocate=1时就分配到cache,有没有其他更加符合性能的allocate条件?)

Allocate属性值要求为:

  • •可以为断言了Cacheable属性的事务断言,除了 ReadOnceMakeInvalid。
  • •必须为WriteEvictFull事务断言 (请求者可以将带有未断言Allocate位的WriteEvictFull转换为Evict事务。)
  • •不得为Device内存事务断言。
  • •对于 Normal Non-cacheable内存事务,不可以断言。
  • •不适用于DVMOp、PCrdReturn和Evict事务,设置为零。
  • •不适用于 PrefetchTgt事务中,可以取任何值。
  • 5. 内存属性的传播

        对于从HN到SN的请求(响应向HN发送的请求),必须保留Device, Cacheable, and Allocate这些 MemAttr bits。

        此规则的唯一例外是当已知下游内存为“Normal”时,则“Device”字段值可以设置为0b0以指示“Normal”,从HN到SN的请求中的SnpAttr属性位值必须始终设置为0b0。当接收到的组合写入请求事务中的写入事务和CMO事务分离时,写入事务继承原始组合请求的MemAttr和SnpAttr值。分离的CMO事务SnpAttr和cacheable位必须设置为最普遍的,以便影响RN-F节点和下游缓存的所有缓存。

对于由于Prefetch或者系统cacheable踢出而在互连内部生成的ReadNoSnp或WriteNoSnp:

  • •MemAttr的EWA、Cacheable和Allocate为设置为 0b1
  • •“Device”字段值必须设置为0b0以表示“Normal”。
  • •SnpAttr字段的值必须设置为0b0,表示Non-snoopable。

6. 事务属性组合

下表列出了MemAttr、SnpAttr和Order字段值的合法组合以及等效的ARM内存类型。

7. Memory Type

R / nR:(Reordering)

E / nE:(Early Write Acknowledgement)

G/ nG:(Gathering and non-Gathering attributes,即多笔命令能否合并成一条命令)。

由以上的R/E属性+Device组合起来得到下面的memory type:

Device nRnE

这种地址需要保序,且不能支持EWA,即从中间节点返回写响应。

Device nRnE内存类型的必需行为是:

  • 写入响应必须从最终目的地获得。(nE)
  • 读取的数据必须从最终目的地获得。(Device)
  • 读取时不能提取超出要求的数据。(Device)
  • 不能预取读取。(Device)
  • 写入不应合并。(Device)
  • 写入的地址范围不得大于原始事务的地址范围。(Device)
  • 从同一来源到同一端点的所有读和写事务必须保持顺序。(nR)

Device nRE

这种地址需要保序,但可以支持EWA,即从POS或POC点返回写响应就可以。)

Device nRE内存类型的必需行为与设备nRnE内存类型相同,但以下情况除外:

  • 写响应可以从中间点获得。(E)

Device RE

这种地址不需要保序,支持EWA。

Device RE内存类型的必需行为与Device nRE内存类型相同,但以下情况除外:

  • •从同一来源到同一端点的读和写事务无需保序。(R)
  • •从同一来源到重叠地址的读和写事务必须保持顺序。(R)

Normal Non-cacheable Non-bufferable

  • 写响应必须从最终目的地获得。
  • 读取的数据必须从最终目的地获得。
  • 可以合并写入。
  • 从同一来源到重叠地址的读和写事务必须保持顺序。

Normal Non-cacheable Bufferable

  • 写响应可以从中间点获得。
  • 写入事务必须在最终目的地及时显示。
  • 读取的数据必须来自:

        ——最终目的地。

        ——正在向其最终目的地推进的写事务。

        如果从写事务中获得读取数据:

        ——必须从最新版本的写内容中获得。

        ——数据不得缓存,以便为稍后的读取提供服务。

  • 可以合并写入
  • 从同一来源到重叠地址的读和写事务必须保持顺序

Write-Back No-allocate

  • 写响应可以从中间点获得。
  • 写事务无需在最终目的地显示。
  • 读取的数据可从中间缓存副本获得。
  • 读数可以预取。
  • 可以合并写入。
  • 读取和写入事务需要高速缓存查找。
  • 从同一来源到重叠地址的读和写事务必须保持顺序。
  • no-allocation属性是一种分配提示,也就是对内存系统的一种建议,出于性能原因,不分配事务。

Write-Back Allocate

        Write-Back Allocate内存类型的必需行为与Write-Back No-allocation Memory的必需行为相同。然而,在这种情况下,分配提示是对存储器系统的推荐,其出于性能原因,事务会被分配。

参考链接:

https://blog.csdn.net/wangwangmoon_light/article/details/126696121

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

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

相关文章

Java进阶-Lambda

Java进阶-Lambda 前言Lambda表达式什么是Lambda表达式初识Lambda表达式Lambda表达式的简单使用Lambda表达式格式分析与传统接口方法实现的比较 理解Lambda表达式函数式编程非纯函数实例纯函数示例函数式编程在Lambda表达式中的体现 闭包闭包与Lambda表达式的示例 类型推导-匿名…

裸机与操做系统区别(RTOS)

声明:该系列笔记是参考韦东山老师的视频,链接放在最后!!! rtos:这种系统只实现了内核功能,比较简单,在嵌入式开发中,某些情况下我们只需要多任务,而不需要文件…

【插件】IDEA这款插件Key Promoter X,爱到无法自拔

文章目录 为什么选择Key Promoter X?1. 提升开发效率2. 友好的学习曲线3. 可定制性强 安装和配置Key Promoter X1. 安装插件2. 配置插件 使用Key Promoter X个人使用体验1. 快捷键记忆2. 定制化功能3. 整体体验提升 总结 🎉欢迎来到Java学习路线专栏~探索…

Excel中的“点选输入”——次级下拉列表创建

在Excel中,用“数据验证”功能可以设置下拉列表,二级下拉列表需要设置公式。 (笔记模板由python脚本于2024年06月16日 18:36:37创建,本篇笔记适合经常使用Excel处理数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:http…

iOS 实现类似抖音滚动效果

效果图 思路 整体上我们使用tableView实现,为了预留内容的缓冲,我们将tableView 的contentinset设置为上面一个屏幕的高度,下面一个屏幕的高度,左右为0,这样保证我们滚动过去的时候 都是准备好的内容 然后就是滑动效果…

创新与责任并重!中国星坤连接器的可持续发展战略!

在当今全球化的商业环境中,企业的社会责任、技术创新和产品质量是企业可持续发展的三大支柱。中国星坤正是这样一家企业,它在电子连接技术领域以其卓越的技术创新、坚定的环保责任和严格的生产品控而著称。本文将深入探讨星坤科技如何通过其FAE技术团队的…

2024年6月29日(星期六)骑行十里箐

2024年6月29日 (星期六)骑行十里箐,早8:00到8:30,大观公园门口集合,9:00准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,南,北…

使用PEFT库进行ChatGLM3-6B模型的LORA高效微调

PEFT库进行ChatGLM3-6B模型LORA高效微调 LORA微调ChatGLM3-6B模型安装相关库使用ChatGLM3-6B模型GPU显存占用准备数据集加载模型加载数据集数据处理数据集处理配置LoRA配置训练超参数开始训练保存LoRA模型模型推理从新加载合并模型使用微调后的模型 LORA微调ChatGLM3-6B模型 本…

前端:Element UI 与 Vuetify 的选择

vuetify优势 1、多端适配,Vuetify完全按照Material设计规范进行开发,每一个组件都经过精心设计,具有模块化、响应式和优秀的性能。 使用独特和动态的 布局 自定义您的应用程序,并使用 SASS 变量 自定义您的组件的样式。只需要做下…

私有化部署ChatGPT:潜力与挑战

背景 以ChatGPT为代表的大语言模型服务在2023年初开始大规模爆发,AI技术从来没有如此接近普通民众。随着以Microsoft, Google, Meta (Facebook)为代表的科技巨头在AI技术领域相继发布重量级产品和服务,国内…

仓库管理系统12--物资设置供应商设置

1、添加供应商窗体 2、布局控件UI <UserControl x:Class"West.StoreMgr.View.SupplierView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://…

业绩尚可但股价不振,浙商银行陆建强闯“3元大关”

&#xff08;题图&#xff09; 文&#xff5c;新熔财经 作者&#xff5c;宏一 本来做着钱生钱的“美梦”&#xff0c;现在倒好&#xff0c;本金都不一定拿得回来。 因为不想把“鸡蛋都放在一个笼子里”&#xff0c;所以前几年在理财的时候一部分放在银行定存&#xff0c;一…

利用 Swifter 加速 Pandas 操作的详细教程

利用 Swifter 加速 Pandas 操作的详细教程 引言 Pandas 是数据分析中常用的库&#xff0c;但在处理大型数据集时效率可能会较低。Swifter 提供了一种简便的方法&#xff0c;通过并行处理来显著加速 Pandas 操作。 Swifter 简介 Swifter 是一个开源库&#xff0c;旨在自动优…

如何使用代理 IP 防止多个 Facebook 帐户关联 - 最佳实践

在社交媒体被广泛应用的今天&#xff0c;Facebook作为全球最大的社交网络平台之一&#xff0c;面临着很多挑战&#xff0c;其中之一就是用户行为的管理和安全。 为了防止多个账户之间的关联和滥用&#xff0c;Facebook需要采取一系列措施&#xff0c;其中包括使用静态住宅代理…

谷歌上搞下来的,无需付费,可以收藏!

在数字化时代&#xff0c;我们越来越依赖于智能设备来获取信息和知识。中国智谋App正是这样一款应用&#xff0c;它将中国古代的智慧与谋略书籍带入了我们的移动设备&#xff0c;让我们能够随时随地学习和领悟。而且提供文言文的原文和译文。 软件下载方式&#xff1a;谷歌上搞…

Firefox 火狐浏览器现在允许您在其 Nightly 版本中选择您喜欢的 AI 聊天机器人

Firefox Nightly版本是Mozilla推出的一个特殊的频道&#xff0c;用户可以在这里试用最新的功能和更改。这个版本每天都会更新&#xff0c;并且持续发布新的功能和修复。例如&#xff0c;在2023年10月8日发布的版本中&#xff0c;引入了一个新的按钮&#xff0c;用于快速重置隐私…

多车自动驾驶编队与协同控制引领智能物流革命

多车自动驾驶编队与协同控制引领智能物流革命 随着科技的不断进步&#xff0c;智能物流正以前所未有的速度和效率改变着我们的生活和工作方式。在这个领域的最前沿&#xff0c;北京渡众机器人科技有限公司的多车自动驾驶编队与协同控制技术正在为物流行业带来革命性的变革。 北…

【Java】Java序列化和反序列化

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 # Java中的序列化和反序列化 在Java中&#xff0c;序列化是将对象的状态写入字节流的机制。它主要用于Hibernate…

【教学类-64-05】20240625彩棒鱼骨图(二)AB排列 6.5*1CM 6选2根 30种

背景需求&#xff1a; 【教学类-64-04】20240619彩棒鱼骨图&#xff08;一&#xff09;6.5*1CM 6根棒子720种-CSDN博客文章浏览阅读897次&#xff0c;点赞23次&#xff0c;收藏13次。【教学类-64-04】20240619彩棒鱼骨图&#xff08;一&#xff09;6.5*1CM 6根棒子720种https:…

JAVA每日作业day6.26

ok了家人们&#xff0c;今天我们学习了面向对象-多态&#xff0c;话不多说我们一起来看看吧 一.多态概述 面向对象的第三大特性&#xff1a;封装、继承、多态 我们拿一个生活中的例子来看 生活中&#xff0c;比如跑的动作&#xff0c;小猫、小狗和大象&#xff0c;跑起来是不一…