ACE协议学习1

在多核系统或复杂SoC(System on Chip)中,不同处理器核心或IP(Intellectual Property)模块之间需要保持数据的一致性。常用的是ACE协议or CHI。  先对ACE协议进行学习

ACE协议(Advanced Microcontroller Bus Architecture Coherency Extension)是一种高级的缓存一致性协议,它允许系统中的主组件(如处理器或其他设备)判断缓存行是否是某个特定内存位置的唯一副本,或者是否可能存在其他副本。根据这些信息,主组件可以相应地采取不同的操作来维护数据的一致性。

①检查缓存行的唯一性:当主组件想要修改一个缓存行时,ACE协议首先通过监听机制来检查该缓存行是否是系统中的唯一副本。主组件的监听过滤器会与其他缓存进行通信,以确定缓存行是唯一的还是共享的。
②修改唯一缓存行:如果确定缓存行是唯一的(Unique状态,包括UniqueClean和UniqueDirty),主组件可以直接修改缓存行的值,而无需通知系统中的其他主组件。这是因为没有其他副本需要更新或失效。
③修改共享缓存行:如果缓存行可能也存在于另一个缓存中(Shared状态,包括SharedClean和SharedDirty),主组件必须启动一个适当的事务来通知其他缓存。这通常涉及到发送一个缓存一致性请求到其他缓存,要求它们更新或失效对应的缓存行,以确保系统中所有缓存的数据保持一致。
通过这种方式,ACE协议确保了在多个主组件访问共享数据时,数据的一致性和正确性得到维护。这对于多核处理器系统、SoC(System on Chip)或其他需要紧密协作的多主设备环境尤为重要。

1. cacheline状态

valid: 该cacheline在cache中存在

invalid:该cacheline在cache中不存在,对该cacheline的访问需要去主存中或者其他cache中

unique:该cacheline只在这一个cache中存在,因为core可以随意对它进行操作而无需担心一致性问题(因为在其他cache中就不存在)

shared:该cacheline存在于一个或多个cache中,当cacheline处于shared状态下时,core对它进行修改时需要确保其他cache中状态得到适当的更新,以维护数据的一致性。

clean:表示缓存中的数据与主内存中的数据是一致的。缓存不承担更新主内存的责任。在这种情况下,如果主组件读取缓存行,它可以直接使用缓存中的数据,而不需要从主内存中重新获取。(这个说法不太严谨,clean不一定代表缓存中的数据与主内存一致,比如shared clean,只是不需要承担更新主存的责任而已~)

dirty:表示缓存中的数据已经被修改,与主内存中的数据不一致。拥有脏缓存行的主组件必须确保最终将更新后的数据写回到主内存中,以保持数据的一致性。

当一个core想要写入一个cacheline时,它首先需要检查该cacheline的状态。如果是unique dirty的cachelie,那么可以直接进行写操作。但如果是shared dirty的cacheline,core则需要通过发送一致性请求来通知其他cache,确保它们能够更新或invalid对应的缓存行。这样的机制有助于避免数据冲突,并确保所有处理器都能访问到最新和一致的数据。

2. cacheline状态转换规则

①获取新副本时必须通知其他cache

当一个cache获取一个cacheline的新副本时,其他拥有该cacheline的cache必须被通知,即使这些cache当前可能将该cacheline作为唯一状态持有,它们也必须被通知将其更改为共享状态!!

②丢弃副本时无需通知其他cache

当一个cache准备丢弃一个cacheline时,不需要通知其他也拥有相同cacheline的cache,所以一个是shared状态的cacheline可能实际上只被一个cache所拥有!!

③相对于主内存更新

相对于主内存更新的cacheline必须处于dirty状态,需要最终将更改写回主内存

④多个缓存中的更新缓存行

如果一个相对于主内存已经被更新的缓存行存在于多个缓存中,那么它必须只在其中一个缓存中处于脏状态。这意味着虽然多个缓存可能拥有该缓存行的副本,但只有一个缓存负责维护最新的数据,并确保最终与主内存同步。

3. 通道信号增加:
ACE协议在现有的AXI4通道的基础上进行了扩展,并定义了专门的ACE通道以及确认信号,以支持复杂的缓存一致性操作。以下是ACE协议中定义的通道和信号的概述:

ACE协议在现有的AXI4通道上增加了一些新的信号,以支持缓存一致性操作。这些信号包括:

读取地址通道(Read Address Channel):

ARDOMAIN[1:0]:由主设备提供,用于指示读取事务的共享属性。
ARSNOOP[3:0]:由主设备提供,用于指定读取事务的监听类型。
ARBAR[1:0]:由主设备提供,用于指示读取事务是否需要遵守内存屏障(memory barrier)


写入地址通道(Write Address Channel):

AWDOMAIN[1:0]:由主设备提供,用于指示写入事务的共享属性。
AWSNOOP[2:0]:由主设备提供,用于指定写入事务的监听类型。
AWBAR[1:0]:由主设备提供,用于指示写入事务是否需要遵守内存屏障(memory barrier)。
AWUNIQUE:此信号仅由支持WriteEvict事务的组件所需。WriteEvict事务用于从缓存中逐出数据,而无需写回主内存。

4. ACE特定通道
ACE协议定义的这三个额外通道是为了增强缓存一致性管理和优化多处理器系统中的数据交互。下面是对这三个通道的详细解释:

监听地址通道(AC channel):它提供了snoop transactions的地址和相关的控制信息。
通过这个通道,缓存主设备可以接收来自系统总线或其他缓存的监听请求,并根据请求中的地址信息确定是否拥有对应的缓存行。

监听响应通道(CR channel):它提供了对snoop transaction的响应。

监听数据通道(CD channel):这是一个可选的输出通道,用于从主设备传递监听数据。
当发生读或清理监听事务时,如果被监听的主设备拥有请求的数据副本,那么这个通道就会被用来返回这些数据。

5.确认信号(Acknowledge signaling)
ACE协议使用确认信号来表示一个事务已经被成功接收和处理。这些信号包括:

读确认信号(Read Acknowledge Signal) - RACK:

当主设备完成一次读事务时,它会发出RACK信号。这个信号表明读操作已经成功完成,并且数据已经从缓存或其他存储介质中读取出来,准备供请求者使用。RACK信号通常在最后一个数据拍(beat)之后发出,以指示整个读操作的结束。


写确认信号(Write Acknowledge Signal) - WACK:

在完成写事务时,主设备会发出WACK信号。这个信号表明写入操作已经成功完成,并且数据已经被写入到指定的缓存行或存储位置中。与RACK类似,WACK信号也通常在最后一个数据拍之后发出,确认写操作的完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES-分词器安装与使用详解

安装分词器 windows环境,分词器有2种安装方式,1.直接命令安装;2.压缩包安装 IK分词器 查看ik分词器文档,找到安装方式介绍 文档链接: 方式1 elasticsearch-plugin install https://get.infini.cloud/elasticsearch/an…

FY-3D MWRI亮温绘制

1、FY-3D MWRI介绍 风云三号气象卫星(FY-3)是我国自行研制的第二代极轨气象卫星,其有效载荷覆 盖了紫外、可见光、红外、微波等频段,其目标是实现全球全天候、多光谱、三维定量 探测,为中期数值天气预报提供卫星观测数…

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 or Set--lower_bound()的解法!!!

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 题目 并查集解析代码【并查集解】 Set 解法解析lower_bound代码 题目 并查集解析 首先先让所有的f(i)i,即每个人最开始的祖先都是自己,然后就每一次都让轮到那个数的父亲1&#xff08…

docker启动jenkins,jenkins中调用docker

在jenkins中执行docker 思路 jenkins中安装docker客户端,使用第三方的docker(需要付费)。jenkins中安装docker客户端,另一个容器中安装docker服务, docker-in-docker,需要特权模式,或者第三方的工具。jenkins中什么都…

【GPT入门】第9课 思维树概念与原理

【GPT入门】第9课 思维树概念与原理 1.思维树概念与原理2. 算24游戏的方法 1.思维树概念与原理 思维树(Tree of Thought,ToT )是一种大模型推理框架,旨在解决更加复杂的多步骤推理任务,让大模型能够探索多种可能的解决…

时态--02--⼀般将来时

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 ⼀般将来时1.肯定句结构:主am/is/aregoing to do(v.原型) 2.否定句结构:主am/is/arenotgoing to do(v.原型) 3.一般疑问句结构:Am/Is/Are(提句⾸)主going to do (v.…

模型压缩技术(二),模型量化让模型“轻装上阵”

一、技术应用背景 在人工智能蓬勃发展的浪潮下,大模型在自然语言处理、计算机视觉等诸多领域大放异彩,像知名的GPT以及各类开源大语言模型,其规模与复杂度持续攀升。然而,这一发展也带来了挑战,模型越大,对…

swift-5-汇编分析闭包本质

一、枚举、结构体、类都定义方法 方法占用对象的内存么? 不占用 方法的本质就是函数 方法、函数都存放在代码段,因为方法都是公共的,不管 对象一还是对对象二调用都是一样的,所以放在代码段,但是每个对象的成员不一样所…

通义千问本地配置并实现微调

通义千问本地配置并实现微调 最小Qwen模型大小942mb from modelscope import snapshot_download model_dir = snapshot_download(“qwen/Qwen2.5-0.5B”, cache_dir=“./models2.5”) Qwen2.5-0.5B:942MB from modelscope import snapshot_download model_dir = snapshot_d…

< 自用文儿 > CertBot 申请 SSL 证书 使用 challenge 模式 避开防火墙的阻挡

环境: 腾讯 VPS 腾讯会向你销售 SSL , 这个本是免费的。CertBot 默认申请证书要用到 80 端口,会蹭边什么什么条款,备案法律来阻止80端口的通讯,没有网站也一样被阻拦。 通过腾讯买的域名: bestherbs.cn …

<建模软件安装教程1>Blender4.2系列

Blender4.2安装教程 0注意:Windows环境下安装 第一步,百度网盘提取安装包。百度网盘链接:通过网盘分享的文件:blender.zip 链接: https://pan.baidu.com/s/1OG0jMMtN0qWDSQ6z_rE-9w 提取码: 0309 --来自百度网盘超级会员v3的分…

SpringBoot统一响应类型3.1.1版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

如是APP:AI精准匹配需求,信用体系重构信任,双轮驱动打造无套路电商

如是APP:AI精准匹配需求,信用体系重构信任,双轮驱动打造无套路电商 2024年3月,一款结合AI导购与信用体系的电商平台——如是APP即将上线。如是APP通过AI对话帮助用户精准快速购物,并通过全维度信用体系实现产品信息透明化,旨在打造一个“信息对称”的电商平台,实现“无套路”的…

[SAP MM] 查看物料主数据的物料类型

创建物料主数据时,必须为物料分配物料类型,如原材料或半成品 在标准系统中,物料类型ROH(原材料)的所有物料都要从外部采购,而类型为NLAG(非库存物料)的物料则可从外部采购也可在内部生产 ① 特殊物料类型:NLAG 该物料…

Linux中部署DeepSeek,WSL(ubunt)中使用ollama部署deepseek-R1-7b

想在自己的Win11电脑上部署Linux的DeepSeek模型,但在网上一直没有找到合适的相应教程,自己查询各种网上资源,以及询问一些AI大模型后成功安装,并整理了以下步骤。仅作为个人学习笔记使用,由于本人对各方面知识掌握不足…

NoteGen是一款开源跨平台的 AI 笔记应用,专注于 recording 和 writing ,基于 Tauri 开发

一、软件介绍 文末提供程序和源码下载 NoteGen 是一款专注于记录和写作的跨平台 AI 笔记应用,基于 Tauri 开发。NoteGen 的核心理念是将记录、写作和 AI 结合使用,三者相辅相成。记录功能可以帮助用户快速捕捉和整理碎片化知识。整理功能是连接记录和写…

C++性能分析工具

C性能分析工具常用的三种。perf、gprof、pprof perf工具需要root权限,设置perf的suid位并不行,需要设置perf对应的内核参数。 perf使用: g -o example example.cpp -O2 # 运行程序并采样 sudo perf record -g ./example # 查看采样结果 sud…

【编译器】VSCODE搭建ESP32-C3

【编译器】VSCODE搭建ESP32-C3 文章目录 [TOC](文章目录) 前言一、下载配置二、编译三、烧录四、参考资料总结 前言 使用工具: 1. 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载配置 安装IDF,打开例程 二、编译 三…

《云原生监控体系构建实录:从Prometheus到Grafana的观测革命》

PrometheusGrafana部署配置 Prometheus安装 下载Prometheus服务端 Download | PrometheusAn open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.https://prometheus.io/…

LLM大模型-李宏毅

本博客是对b站上,李宏毅大模型课程的简单记录。 大模型入门到进阶,一套全解决! 第1讲:生成式AI是什么? ChatGPT【Chat Generative Pre-trained Transformer】每一步都是文字接龙,其实就是分类问题 文字接…