【ARM AMBA AXI 入门 11 - AXI 总线 AWCACHE 和 ARCACHE 介绍】

news2024/10/5 15:26:52

文章目录

    • 1.1 AXI 传输事务属性
      • 1.1.1 slave type
      • 1.1.2 系统级缓存
    • 1.2 Memory Attributes
      • 1.2.1 Bufferable,AxCACHE[0]
      • 1.2.2 Modifiable, AxCACHE[1]
      • 1.2.3 cache-allocate
    • 1.3 Memory types

转自:https://zhuanlan.zhihu.com/p/148813963
如有侵权请联系删除

1.1 AXI 传输事务属性

AXI 协议中定义了一组信号表示读写传输事务的类型,分别为 ARCACHE 以及 AWCACHE,合称为 AxCACHE。

当 Master 发出一个请求后,可以通过 AWCACHE/ARCACHE 信号来告诉下一级系统组件(caches、buffers、memory controller),当前传输事务应该被如何处理。AWCACHE/ARCACHE 信号用来指明当前请求的memory属性。

它们可以控制以下行为:

  • 告诉整个系统中其他组件(NI-700, CI-700) 如何处理该transaction;
  • 告诉系统级的 buffers 和 caches 如何处理这笔transaction。

1.1.1 slave type

AXI 协议中存在两类从机:

  • 存储从机(Memory Slave);
  • 与外设从机(Peripheral Slave)。

我们协议中传输事务属性主要是为存储从机准备的,存储从机必须支持所有的事务属性信号。

而对于外设从机,支持哪些属性信号,协议只有一个要求:外设从机必须完成整个传输事务,哪怕存在其不支持的某个事务属性信号。

外设从机对于属性信号的支持以及相应的访问方式(method of access)由具体实现决定(IMPLEMENTATION DEFINED),一般设计者会将支持的方式列于该从机的规格书中,从机也只对所支持访问方式进行正确响应。

极端情况下,从机接收到一个不支持的访问方式,然后 崩溃了,这是可以的。但是一定一定要完成这次的传输事务后再崩溃,以防止整个系统死锁。

协议也不要求从机支持复活机制(continued correct operation is not required)。

1.1.2 系统级缓存

AXI 协议缓存相关机制是针对处理器的系统级缓存的一种实现。

所谓系统级缓存(system level cache)区别于处理器内部的缓存,系统级缓存提高整个系统访问外部存储的速度。当系统级缓存连接在处理器核与外部存储之间时,可以被看做处理器核外部的 L2 缓存,如下图所示:
在这里插入图片描述
处理器核、系统缓存以及外部存储控制器通过 AXI 总线接口互联。L1 缓存位于处理器核内部。当处理器访问外部存储中的数据,在 L1 缓存中缺失时,向外部缓存发起传输事务。传输事务在通过系统缓存时,如果该事务命中缓存表项,即可直接得到结果,避免访问外部存储带来的缺失代价。

1.2 Memory Attributes

AxCACHE 信号共有 4 比特,每个比特代表不同的含义。
在这里插入图片描述

1.2.1 Bufferable,AxCACHE[0]

当 AxCACHE[0] 置高时,表示该传输事务在传输至目的地的途中,可以被 interconnect 或者任意的 AXI 组件缓存,延迟若干个周期。CPU 本来在写传输事务中需要写入至主存储(main memory)的数据,可以先缓存于 cache 中,等待被替换时再真正写入主存储。

因此 CPU 在写入 cache 后就认为写操作完成。写事务原先的目的地是主存储,比如外部 DDR,理论上应该由 DDR 控制器在 “真的” 写入数据到 DDR 后,向 CPU 发出写回复信号,表示写传输事务完成。但是现在数据写入 cache后,即向 CPU 发出了写回复信号结束了本次写回复。

当 AxCACHE[0] 置低时,这种特性即不被允许,那什么情况下不允许缓存,当 CPU 使用 DMA 将数据传输至 IO 设备时,数据首先被写入 DMA 在内存中开辟的缓冲区。此时 CPU 需要掌握什么时候数据“真的”被完全写入缓冲区,因为需要确保数据存入后,再启动 DMA 传输。

我们接着引申,假设数据已经被缓存在中间组件中了,如果相邻的缓存事务中的数据正好要被写入相邻的地址(换句话说在一个 cache line 中),那么如果能把不同数据聚合起来,这样一来岂不是能减少写入数据的次数,减少对总线的占用?这就涉及到 AxCACHE[1] Modifiable 信号

1.2.2 Modifiable, AxCACHE[1]

当 AxCACHE[1] 置高时,表示传输过程中,该写传输事务的传输特性可以改变。

协议列举了一些传输事务改变的情形:

  • 单个传输事务可以被分解为多个传输事务;
  • 同理,多个传输事务也可被聚合为一个(上节描述的现象);
  • 读传输事务中,可以预取相邻地址上的读数据,要求目的地址返回比主机需求更多的数据;
  • 写传输事务中,可以访问比需求地址跨度更大的区域,其中使用 WSTRB 信号防止更新不相关的数据。

上述几种情况中,几项信号可以发生改变(Modify):

  • 传输地址 AxADDR;
  • 突发传输位宽与长度 AxSIZE AxLEN;
  • 突发传输类型 AxBURST

此外,AxID、AxQOS 等信号也是可以改变的,AxID 的改变常见于 interconnect 的输出。

AxCACHE 信号本身也是可以改变的,但有一些特别的限制。对于存储属性信号的修改必须保证传输事务对于 AXI 组件的可见性不减小,不能改变传输事务本身的传播路径,也不能改变事务对于缓存的查找需求。此外,对于传输事务存储属性的修改需要作用于整个地址范围中的事务。

协议规定 AxLOCK、AxPROT 信号是不可改变的。此外两种情况下,传输事务的信号不能改变:

  • 自然地,如果修改后的传输事务地址超出了原地址的 4K 边界,那么这种修改是不被允许的
  • 第二种情况与原子操作有关,具体可以参见手册。

当 AxCACHE[1] 置低时,表示传输过程中,该写传输事务的传输特性不可以改变。

下图中的信号不可改变,此外比如 ID 和 QoS 信号还是可以改变的。比如前者在多机通信场景中,通过 interconnect 后会改变,与其存储属性无关。
在这里插入图片描述
AxCACHE 信号可以改变,但只能从 bufferable 修改为 non-bufferable。

1.2.3 cache-allocate

对于读写事务,AxCACHE 中的高 2 比特,用于表示本次传输事务所访问地址中的数据是否可能在缓存中, 2 比特分别表示:

对于读事务 2 比特分别表示:

  • allocate
    当前地址的数据可能因为前期的访问,已经分派空间并缓存于 cache 中

  • other allocate
    当前地址的数据可缓存于 cache 中,是因为其他主机事务而分派空间缓存,或者是本机其他类型的事务而缓存。(对于读事务来说,就是先前的写事务,反之亦然)

当 2 比特为 2'b00 时,表示 CPU 指示该传输事务无需至 cache 中查找,必须直接从主存储中读取或者写入主存储。

当 2 比特不为 2'b00 时,先前的读写事务可能已经将该地址缓存与 cache 中,所以该传输事务必须首先在 cache 中查找,缺失的情况下再访问主存储。

这里说可能是因为,尽管 CPU 根据指令顺序认为该数据已缓冲,但由于指令乱序、数据实际未就绪等原因,实际的存储情况可能与 CPU 记录的情况不同,由缓存控制器具体判断。

我们具体地分别来看下读写事务中的 AxCACHE[2] 和 AxCACHE[3] 信号,首先是写事务。

AWCACHE[3] 信号置高表示本主机先前的写事务可能已经将该位置上的数据缓冲于 cache,首先在 cache 中查找对应表项。当 AWCACHE[3] 信号置低,但 AWCACHE[2] 置高时,该位置上的数据可能因为其他主机的操作、或者本机的读事务缓存于 cache 中,同样需要首先查找 cache。

对于读事务来说,字段的含义与写事务对应,将读写事务交换即可。同时注意 Allocate 和 Other Allocate 比特的位置交换。

1.3 Memory types

总的来说 AxCACHE[3:0] 主要作用在于给不同存储类型(Memory type)编码,前文只是在解释各个比特位对应的含义。换句话说,可以根据传输事务的具体存储类型,做出相应操作。
在这里插入图片描述
存储类型可以划分为四种情况,我们依次来看。除了上表列出的情况,AxCACHE 剩余可能的数值均留作备用。

  • Device 访问
    在访问 Device 时,AxCACHE[3:1] = 3’b000,传输事务在中间节点不能被修改。具体地说,不能预读数据(Prefetch read)和汇聚写数据(Merge write)。这是因为在访问非存储外设时,读写的是寄存器值,预取数据是没有必要的。而将不同的写事务聚集则容易造成预期之外的问题,比如会导致相邻寄存器操作的先后顺序无法满足。

    根据 AxCACHE[0] 决定 device 访问是否可以被中间节点缓存,决定 bufferable 性质。

  • Normal Non-cacheable 访问
    Normal 访问指正常地访问存储介质,而不会查找缓存,AxCACHE[3:1] = 3’b001。Normal 非缓存访问中,中间组件可以对传输事务信息进行修改,支持写事务聚合。

    根据 AxCACHE[0] 决定 normal 访问是否可以被中间节点缓存,决定 bufferable 性质。

  • Wirte-through 访问
    write-through 指缓存的写入策略为直写,即数据写入缓存的同时,也写入主存储中。此时 AxCache[1:0] = 2’b10,即中间组件可以修改传输事务,实现写聚合与读预取。AxCache[0]置低,每个写事务最终必须写入目的地址。

    此类访问启用缓存,读数据可以来自缓存,并且每次读写操作都需要查找缓存,寻找匹配表项。

    根据 AxCache[3:2] 不同,从图中得到共有 4 种情况,分别代表不同的分派提示,比如 No-allocate 代表建议不要为该事务分派缓存空间。Read-allocate 代表建议为读事务分派缓存,但不建议为写事务分派缓存。不过这都只是代表处理器从性能出发给出的建议,由缓存控制器视情况执行。

  • Write-back 访问
    Write-back 指缓存的写入策略为写回,数据仅写入缓存,修改的缓存只在被替换时写入主存储。

    AxCache[1:0] = 2’b10,即中间组件可以修改传输事务,并且进行缓存。

    与 Wirte-through 访问相比,区别在于由于写回策略中并不是每次写事务后都需要更新主缓存,因此无需将每个写事务传输至其本来的目的地(即主存储)。(Write transactions are not required)

推荐阅读
https://zhuanlan.zhihu.com/p/148813963

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

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

相关文章

学习记忆——英语篇

文章目录 英语字母形象起源右脑记忆单词的原则四大步骤第一步:摄取信息第二步:处理信息第三步:储存信息第四步:提取信息 训练例子字母形象训练 右脑记忆单词5大方法字源法编码法字母编码法字母组合编码法 拼音法全拼法拼音组合 熟…

前K个高频单词-c++实现

692. 前K个高频单词 - 力扣(LeetCode) 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。 示例 1&#xff…

关于Linux服务器.sh文件启动问题

问题描述 在linux服务器上使用文本编辑(并非vim操作)对.sh脚本文件进行修改后无法启动,显示’\r’识别错误等。 错误如下: 错误原因 因为.sh文件在经过这种编辑后格式产生了错误,由unix转为了doc格式,需…

Ae 效果:CC Particle Systems II

模拟/CC Particle Systems II Simulation/CC Particle Systems II CC Particle Systems II(CC 粒子系统 II)可用于生成和模拟各种类型的粒子系统,包括火焰、雨、雪、爆炸、烟雾等等。 与 CC Particle World 效果相比有许多类似的属性。最大的…

华为云云耀云服务器L实例评测|部署功能强大的监控和可视化工具Grafana

应用场景 Grafana介绍 Grafana是一个功能强大的监控和可视化工具,适用于各种行业和应用场景,如IT运维监控、网络监控、能源管理、金融市场分析等。它提供了灵活的数据源支持、强大的可视化功能和告警机制,以及注释和过滤功能,使…

阿里云服务器全方位介绍_优势_使用场景_限制说明

阿里云服务器是什么?云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,云服务器可以降低IT成本提升运维效率,免去企业或个人前期采购IT硬件的成本,阿里云服务器让用户像使用水、电、天然气等公共资源一样便捷、高效地使用服务器…

使用cpolar配合Plex打造个人媒体站,畅享私人影音娱乐空间

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…

langchain+GPT+neo4j 图数据库

neo4j版本是5.11.0,langchain的版本 0.0.288下载apoc插件 https://neo4j.com/docs/apoc/current/installation/ neo4j.conf文件把apoc.*添加到dbms.security.procedures.unrestricted配置项 使用return apoc.version()来查看是否安装成功 pip install neo4j图 参考官网&…

以太网的简单概念、MAC地址与IP地址的关系

以太网 DIX Ethernet V2标准的局域网------以太网。 IEEE 802.3标准和DIX Ethernet V2标准很相似,只有些许区别,不严格的来说,802.3局域网也叫做以太网。以太网是一个局域网,信息以广播的形式发送。 IEEE 802标准定义的局域网参…

哈工大校园网显示IP地址错误连接不上

您当前获取到的IP地址有误,请重新开关无线获取IP地址(注:电脑端还可以通过cmd窗口,输入ipconfig /release、ipconfig /renew命令)。如未解决此问题请联系网络安全和信息化办公室处理。 当校园网登录时会出现如上情况,并且当你按照他的方法尝试…

vue2使用vuedraggable实现拖拽删除添加重置功能

需求:要输入xx阶段,之后输入后显示但是要可以自己手动排序和删除,以免写错了,并且做了判断,如果重复输入的话会提示,不会让他添加,点击重置功能后一键清空所有输入 1.效果 2.下载插件 我直接下…

【Linux】自动化构建工具:make/Makefile

​👻内容专栏: Linux操作系统基础 🐨本文概括: 工具使用的背景、理解make/makefile工具、探索工作原理(文件修改时间的对比)、.PHONY伪目标、特性等。 🐼本文作者: 阿四啊 🐸发布时间&#xff1…

18.3 【Linux】登录文件的轮替(logrotate)

18.3.1 logrotate 的配置文件 logrotate 主要是针对登录文件来进行轮替的动作,他必须要记载“ 在什么状态下才将登录文件进行轮替”的设置。logrotate 这个程序的参数配置文件在: /etc/logrotate.conf /etc/logrotate.d/ logrotate.conf 才是主要的参…

无涯教程-JavaScript - ADDRESS函数

描述 给定指定的行号和列号,您可以使用ADDRESS函数获取工作表中单元格的地址。 如,ADDRESS(2,3)返回$C $2。再举一个Example,ADDRESS(77,300)返回$KN $77。您可以使用其他函数(如ROW和COLUMN函数)为ADDRESS函数提供行号和列号参数。 语法 ADDRESS (row_num, column_num, [a…

跨境电商和TikTok广告:突破地理界限的机会

随着全球数字化的快速发展,跨境电商已经成为了现代商业的关键驱动力。同时,TikTok作为一款全球范围内广受欢迎的社交媒体平台,也在商业领域崭露头角。 本文将探讨跨境电商如何与TikTok广告相结合,为企业提供突破地理界限的机会。…

苹果宣布9月26日发布全新macOS Sonoma系统 新增不少实用功能

苹果公司在召开的特别活动中,宣布将于 9 月 26 日正式发布 macOS Sonoma,用户可以打开“设置”->“通用”->“软件更新”路径进行更新,新版本主要增强空间函数、为 AirPods 测试自适应音频、个性化音量和对话感知等新功能。 macOS Sono…

1.0零基础尝试DCM通讯(c-store)

前言 本项目是对医院放疗及相关设备的互通互联。对dcm文件及数据协议是本项目的基础。 今天在项目组成员支持下,对dcm通讯进行了初步的尝试,有人之路,这个过程可以说是非常愉快,于是乎准备将这个愉快的过程记录,方便自己查阅和后来人。 c-store 本次的安装和测试使用的…

乔哈里视窗:助力项目团队高效沟通

项目研发通常涉及多个团队成员、不同的职能部门和利益相关者,如果干系人间缺乏沟通,缺乏对项目目标、需求的共识和理解,团队成员间容易产生隔阂和矛盾,无法有效协调和管理,导致项目无法按时交付、质量下降、成本增加等…

视频怎么压缩?把视频压缩的小一点这样做

视频压缩在我们的生活和工作中有着广泛的应用需求,是一种减少视频文件大小的方法,可以给我们带来以下几个方面的作用: 1、减少存储空间占用:视频压缩可以显著减少视频的大小,从而腾出更多的存储空间,对于手…

一套精简的springboot后台管理系统

概述 本后台管理系统,基于SpringBoot2.0 Spring Data Jpa Thymeleaf Shiro 开发的后台管理系统,采用分模块的方式便于开发和维护,拓展性高,可作为您后台开发的基础框架 详细 运行截图: 项目结构: 详细…