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

目录

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.mzph.cn/bicheng/35765.shtml

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

相关文章

AI自动生成角色和情节连续的漫画,中山大学联想提出AutoStudio,可以多轮交互式连续生成并保持主题一致性。

中山大学和联想研究院提出AutoStudio: 是一种无需训练的多代理框架,用于多轮交互式图像生成,能够在生成多样化图像的同时保持主体一致性。 AutoStudio 采用三个基于 LLM 的智能体来解释人类意图并为 SD 模型生成适当的布局指导。此外,还引入…

让AI保持怪异

让AI保持怪异 Anthropic的创意技术专家和员工设计师凯尔图尔曼(Kyle Turman)分享了一种深深引起共鸣的观点。他说(转述原话):“人工智能实际上真的很奇怪,我认为人们对这一点的认识还不够。”这引发了我向小组提出的问题:我们是否有消毒人工智能固有的陌生感的风险?…

python-序列相关

序列(squence)是一组按顺序、紧密排列在一起的数据集。序列的作用是便于管理、方便数据操作更重要的是序列支持切片操作。 序列主要包括:列表、元组、字符串和字节串 内置数据结构: 容器:列表、元组、字典、集合 结构…

Chromium 调试指南2024 Mac篇 - 准备工作 (一)

1.引言 Chromium是一个由Google主导开发的开源浏览器项目,它为Google Chrome浏览器提供了基础框架。Chromium不仅是研究和开发现代浏览器技术的重要平台,还为众多其他基于Chromium的浏览器(如Microsoft Edge、Brave等)提供了基础…

atcoder abc 359

A count takahashi 问题: 思路&#xff1a;字符串比较 代码&#xff1a; #include <bits/stdc.h>using namespace std;int main() {int n;cin >> n;int ans 0;for(int i 1; i < n; i ) {string s;cin >> s;if(s[0] T) ans ;}cout << ans;re…

Android 多媒体开发——Media3与MediaSession最全使用指南

一、Media3库简介 1.1 Media3是什么&#xff1f; 官方释义&#xff1a; Jetpack Media3 is the new home for media libraries that enables Android apps to display rich audio and visual experiences. Media3 offers a simple architecture with powerful customization,…

软考出成绩了,速查,查分方式看这里

各位考生&#xff0c;软考出成绩啦&#xff01;大家赶紧查一下&#xff0c;各科都45分就是通过&#xff01; 软考成绩查询入口已开通&#xff0c;此刻你是不是既激动又忐忑&#xff1f;速查&#xff01; ★ 查询网站 中国计算机技术职业资格网https://bm.ruankao.org.cn/sign/…

如何轻松获取 GitLab 指定分支特定路径下的文件夹内容

第一步&#xff1a; 获取 accessToken 及你的 项目 id &#xff1a; 获取 accessToken ,点击用户头像进入setting 按图示操作&#xff0c;第 3 步 填写你发起请求的域名。 获取项目 id , 简单粗暴方案 进入 你项目仓库页面后 直接 源码搜索 project_id&#xff0c; value 就…

记录Gstreamer的uridecodebin可以自动选择硬解码器

记录&#xff1a; uridecodebin3 和uridecodebin优先硬解码 这两个插件&#xff0c;本来是负责动态选择合适的解码器来处理特定的媒体流&#xff0c;使用案例&#xff1a; gst-launch-1.0 uridecodebin urirtsp://192.168.1.120:8554/test ! glimagesink -v gst-launch-1.0 …

Linux通用LInux高危漏洞(CVE-2024-1086)修复案例

一、漏洞描述 2024年3月28日&#xff0c;监 Linux kernel权限提升漏洞&#xff08;CVE-2024-1086&#xff09;的PoC/EXP在互联网上公开&#xff0c;该漏洞的CVSS评分为7.8&#xff0c;目前漏洞细节已经公开披露&#xff0c;美国网络安全与基础设施安全局&#xff08;CISA&…

【UE5.3】笔记4-自定义材质蓝图

正常来说&#xff0c;我们都是拿到什么材质用什么材质&#xff0c;那么我们如何去创建自定义的材质呢&#xff1f; 首先&#xff0c;创建MyMaterials文件夹用来存放我们自制的材质&#xff1b; 然后&#xff0c;右键创建一个材质&#xff0c;起个名字&#xff0c;双击打开&am…

Linux-笔记 全志平台休眠功能初探

前言 全志平台支持的休眠功能主要包括两种模式&#xff1a;休眠模式和待机模式。这两种模式用于降低设备的功耗&#xff0c;并在需要时快速恢复工作状态。由于平台为T113&#xff0c;所以可以很方便的使用RTC来做唤醒源。唤醒源指的是能够让系统从休眠状态恢复到工作状态的信号…

【Linux】Linux基础开发工具(yum)

Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便…

不同材质的不锈钢氮气柜优缺点和使用场景分析

不锈钢氮气柜是一种用于存储对湿度敏感的物品的专用储藏设备&#xff0c;通过充入干燥的氮气来降低柜内湿度&#xff0c;保护存储物免受氧化或腐蚀。 根据不同的材质&#xff0c;不锈钢氮气柜可分为&#xff1a; 一、201不锈钢氮气柜&#xff1a; 201不锈钢因其较低的镍含量而成…

【第14章】探索新技术:如何自学SD3模型(找官方资料/精读/下载/安装/3款工作流/效果测试)ComfyUI基础入门教程

近期,也就是2024年6月12日,StabilityAI开源了最新的SD3模型的2B版本,而神奇的是,ComfyUI早在6月11号就已经适配了SD3!相比之下,SD WebUI 的更新速度却远远落后... 所以,如果想要尝试一些AI绘画领域的新技术,ComfyUI是一个非常值得投入时间学习的工具。 这节课,我们就…

防火墙虚拟系统

防火墙虚拟系统 防火墙虚拟系统的应用场景 大中型企业的网络隔离 通过防火墙的虚拟系统将网络隔离为研发部门、财经部门和行政部门。各部门之间可以根据权限互相访问&#xff0c;不同部门的管理员权限区分明确。 云计算中心的安全网关 通过配置虚拟系统&#xff0c;可让部署…

[XYCTF新生赛2024]-PWN:ptmalloc2 it‘s myheap plus解析(glibc2.35,堆中的栈迁移,orw)

查看保护 查看ida 思路&#xff1a; 泄露libc和堆地址就不多说了&#xff0c;fastbin duf也不解释了。这里主要是利用fastbin duf在environ附近创建堆块&#xff0c;泄露environ中的栈地址&#xff0c;然后就利用fastbin duf修改rbp和返回地址进行栈迁移了&#xff0c;迁移目标…

Xcode安装Simulator失败问题解决方法

Xcode安装Simulator_Runtime失败&#xff0c;安装包离线安装保姆级教程 Xcode更新之后有时候会提示要安装模拟器运行时环境&#xff0c;但是用Xcode更新会因为网络原因&#xff0c;我觉得基本上就是因为苹果服务器的连接不稳定导致的&#xff0c;更可气的是不支持断点续…

数据结构与算法笔记:高级篇 - 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?

概述 上篇文章我们讲到&#xff0c;如何用位图、布隆过滤器&#xff0c;来过滤重复数据。本章&#xff0c;我们再讲一个跟过滤相关的问题&#xff0c;如果过滤垃圾短信&#xff1f; 垃圾短信和骚扰电话&#xff0c;我想每个人都收到过吧&#xff1f;买房、贷款、投资理财、开…

Git 冲突处理指南:恢复 Git Reset

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…