【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 模型生成适当的布局指导。此外,还引入…

微软代码页标识符 (Code Page Identifiers)

代码页标识符 (Code Page Identifiers) 双语对照 Identifiere标识符.NET Name.NET 名称Additional information其他信息037IBM037IBM EBCDIC US-CanadaIBM EBCDIC US-Canada437IBM437OEM United StatesOEM 美国500IBM500IBM EBCDIC InternationalIBM EBCDIC 国际字符集708ASMO…

让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…

命令ifconfig-显示网络接口的当前状态

ifconfig是一个在类Unix系统中用于配置网络接口的命令行工具。它可以用来显示网络接口的当前状态&#xff0c;或者设置网络接口的参数&#xff0c;如IP地址、子网掩码、MAC地址等。 基本用法 显示所有网络接口的信息&#xff1a; ifconfig显示特定网络接口的信息&#xff1a…

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&…

Java高手的30k之路|面试宝典|精通项目介绍方法优化简历项目介绍

常用项目介绍结构及原因 以下是几个常用的项目介绍结构&#xff0c;以及为什么使用这些结构的原因&#xff1a; 1. STAR 方法 Situation&#xff08;情境&#xff09;&#xff1a;项目的背景和情况。 Task&#xff08;任务&#xff09;&#xff1a;你需要完成的任务。 Actio…

每天一学(2)

目录 1、线程池是如何知道线程任务是否完成 2、阻塞队列的有界和无界 3、ConcurrentHashMap底层实现原理 5、CAS机制 6、wait 和 notify 为什么要放在 synchronized 1、线程池是如何知道线程任务是否完成 线程池内部&#xff1a; 当把任务丢给线程池去执行&#xff0c;调度工作…

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

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

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

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

必看-OpenStack面试攻略:揭秘企业最爱问的几个问题

问题&#xff1a;什么是OpenStack&#xff1f; 答案&#xff1a;OpenStack是一系列开源软件组成的云供给软件&#xff0c;用于构建和管理云计算平台。它允许企业或组织在自己的硬件上建立和管理云基础设施&#xff0c;并提供类似于公有云的弹性可扩展资源。 问题&#xff1a;O…

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

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

破坏人工智能

破坏人工智能 我一直在努力表达这个想法&#xff0c;也许问题是&#xff0c;一旦你把它放在那里&#xff0c;它实际上是很简单的&#xff0c;一旦你把想法写在纸上&#xff0c;真的没有很好的理由去解开整个案例。 我正在远离衡量和修复不公平的算法系统&#xff0c;或使它们…

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

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