【ARM】CCI集成指导整理

目录

1.CCI集成流程

2.CCI功能集成指导

2.1CCI结构框图解释

Request concentrator

Transaction tracker

Read-data Network

Write-data Network

B-response Network

2.2 接口注意项

记录一下CCI500的ACE slave interface不支持的功能:

对于ACE-Lite slave interface来说:

对于AXI4 master interface:

将AXI4 master连接到CCI-500的ACE-Lite接口:

2.3CCI的系统级一致性

Domain signaling

Point of Serialization

WriteLineUnique 和 WriteUnique支持

2.4 Exclusive accesses


1.CCI集成流程

上述为推荐的集成流程,每个方面的技术细节这里暂时不展开了,涉及了ACE\AXI4\APB\Low-power interface\clk_rst\综合\DFT\验证等。

2.CCI功能集成指导

这是本次整理主要内容,涉及了CCI在不同case下会有的不同行为。这一章主要是总结一些AXI和ACE协议的需求。

结合之前的CCI500_execution_tb【ARM】CCI500_execution_tb-CSDN博客可以很容易理解上述的架构图。

2.1CCI结构框图解释
Request concentrator

请求集中器(RC)根据事务跟踪器(Transaction Tracker, TT)和ID跟踪器(ID Tracker, IDT)中的服务质量(Quality of Service, QoS)属性和占用水平(occupancy levels)来对请求进行仲裁。根据地址,请求随后进入两个TT分区中的一个。TT负责处理危险检查(hazard checking),生成窥探请求(snoop requests),并根据需要将请求发送到下游。每个从属接口都有一个IDT,它向TT提供排序要求。

Transaction tracker

对于shareable requests,TT访问窥探过滤器(snoop filter)以确定请求是否必须进行窥探或继续向下游发送。TT还向窥探过滤器发出分配和去分配请求,确保窥探过滤器始终包含最新信息。如果窥探过滤器在尝试分配时找不到空闲条目,它将通过发出CleanInvalidate窥探请求来释放一个条目。

Read-data Network

如果窥探过滤器指示数据可能被保存在上游缓存中,TT通过Snoop网络(Snoop Network, SN)向适当的ACE从属接口发出窥探请求。这些接口通过可选的流水线阶段和出口(egress)寄存器片进行访问。在窥探命中的情况下,SN通过读数据网络(Read-data Network, RN)将数据发送回原始主设备。

RN是一个全交叉互联,它将读数据从主接口传输到从属接口。

如果读响应不需要数据传输,TT通过读响应器(Read Responder, RR)发送读响应。例如,TT可能使用RR处理直接虚拟内存访问(Direct Virtual Memory access, DVM)消息或缓存维护(cache maintenance)操作。

Write-data Network

如果需要CCI生成的写操作,SN通过写数据网络(Write-data Network, WN)发送窥探数据。WN是一个全交叉互联,它将写数据从从属接口传输到主接口。

不可共享请求和导致窥探过滤器未命中的可共享请求通过请求分配器(Request Distributor, RD)发送到下游的主接口。为了防止跨流阻塞,RD只允许TT向具有空间的FIFOs的主接口发送请求。

B-response Network

在TT处理写请求并且RD允许请求向下游发送后,将路由信息发送到WN。这个路由信息允许写数据被发送。B响应网络(B-response Network, BN)将写响应传输到IDT。IDT将写响应发送到原始主设备,并在必要时重新排序以满足ID排序要求。

APB接口使您能够对CCI-500进行编程。APB接口连接到配置寄存器块(Configuration Register Block, CRB)和性能监控单元(Performance Monitoring Unit, PMU)。

P-Channel和Q-Channel提供时钟和电源控制。

2.2 接口注意项

当使用不是完全支持接口协议的master或slave时,需要做额外的logic去提供需要的值。

记录一下CCI500的ACE slave interface不支持的功能:

对于ACE-Lite slave interface来说:

也是不支持barrier transactions。与一般的ACE-Lite slave不同的是CCI的拥有AC和CR channel用来发送DVM messages。当连接不支持返回DVM message response的master,若CCI 发送DVM message会导致CCI deadlock住,所以建议将ACCHANNELEN tie 0来避免这个问题。

CCI可以设置可以接受的OT的大小。设置SIx_RW_MAX。

对于AXI4 master interface:

注意分为system interface和memory interface, address decoder用来做地址区分,fix从什么端口出。

将AXI4 master连接到CCI-500的ACE-Lite接口:

ACE-Lite 较 AXI4支持 硬件一致性缓存维护(cache maintenance). 所以如果想将AXI4 master连接到CCI500的ACE-Lite接口上需要注意如下事项。

PS:正常的ACE-Lite相比AXI4增加的接口如下:

因为AXI4没有AC等接口所以只能保持hardware coherency。AXI4->ACE-Lite的转换通过添加AxDOMAIN信号,并且确保其他的AXI4无法驱动的ACE-Lite接口tie off。下表声明如何将这些信号tie off。

CCI-500 的 ACE-Lite 从属接口支持可编程的可共享覆盖。因此,您可以为连接的设备配置适当的属性,使其可以是共享的,也可以是不共享的。

注意:

  • FIXED 突发传输、设备内存事务和 DVM 消息事务不受任何覆盖影响。
  • 如果一个主设备正在对可共享区域生成独占访问,它需要在其他主设备中增加额外的独占监视器。因此,如果它覆盖为可共享,CCI-500 将 AxLOCK 覆盖为正常,独占写入将失败

或者,如果需要共享和非共享流量的混合,则必须使用从属接口上的 AxDOMAIN 输入信号来标记这种混合。您可以基于以下内容对 AxDOMAIN 进行解码:

  • 地址,其中某些区域被视为可共享的,其他区域被视为非共享的。
  • ID,其中某些主设备或线程被视为可共享的。
  • USER 位。如果您使用 CoreLink NIC-400 网络互连来组合几个具有不同 AxDOMAIN 信号要求的 AXI 主设备,那么每个主设备都可以为其自己的事务生成自己的 AxDOMAIN 信号。然后,您可以使用 AxUSER 信号将这些信号通过互连路由,并将 AxUSER 输出连接到 CCI-500 ACE-Lite 从属接口的 AxDOMAIN 输入。

注意:

  • 当事务被标记为内部共享或外部共享时,根据 ACE 规范,其他属性有限制。以下表格显示了这些限制。

其余有一些AXI3连接ACE-Lite slave interface,ACE-Lite连接master interface暂时不更新。(有需要可以评论一下我再更新)

2.3CCI的系统级一致性
Domain signaling

 下图是AMBA中对AxDomain的解释       

CCI是被认为处于Inner和Outer domain中的。所以AxDomain处于Inner Shareable和Outer Shareable时可能会导致snoop transaction到连接的ACE master上,取决于snoop filter 的内容。又因为下游的端口都是AXI4,因此domain信息是不会传到下游去的。Cache maintenance 操作总是会终止于CCI-500。下表是CCI-500对AxDomain的处理。

Point of Serialization

与exclusive access有关。

在一致性系统中,每个可共享地址必须对所有能够访问该地址的主设备有一个单一的序列化点(Point of Serialization, PoS)。PoS也被称为一致性点(Point of Coherency, PoC)。

CCI-500包含两个PoS,每个事务跟踪器(Transaction Tracker, TT)分区一个。这些PoS覆盖由哈希算法确定的不同地址区域。所有进入PoS的可共享事务都会针对发往该分区的其他可共享事务的进展进行危险检查(hazard check)。

例如:

  1. 事务1,一个共享读取事务,通过了PoS。
  2. 事务2,一个与事务1具有相同地址的共享读取事务,进入了PoS。
  3. 事务2对事务1进行了危险检查,因为事务1尚未完成。
  4. 事务2仅在事务1完成后才继续进行。也就是说,当事务1收到RACK(Read Acknowledge)并且事务被接受进入CCI时。

注意: 为了维护一致性,如果一个代理以可共享的方式访问地址,所有代理都必须以可共享的方式访问它。此外,任何在主设备之间共享的可缓存地址都必须使用被标记为内部共享(Inner Shareable)或外部共享(Outer Shareable)的事务来访问。

WriteLineUnique 和 WriteUnique支持

CCI-500 处理 WriteLineUnique 和 WriteUnique 事务。 当它接收到一个 WriteLineUnique 事务时,CCI-500 会生成一个 MakeInvalid 窥探事务来使所有缓存中的cacheline失效。当 MakeInvalid 通过了 PoS(Point of Serialization)并且完成了其窥探事务时,CCI-500 会从其 AXI4 主接口发出一个 WriteNoSnoop 事务。 当它接收到一个 WriteUnique 时,CCI-500 会生成一个 CleanInvalid 窥探来清理和使所有主缓存中的相关cacheline失效。当 CleanInvalid 通过了 PoS 并且完成了其窥探事务时,CCI-500 会从其 AXI4 主接口发出一个 WriteNoSnoop 事务。 与任何 CleanInvalid 事务一样,CCI 生成的 WriteBack 事务可以优先于 WriteNoSnoop 事务。这个现象与仿真case一致。【ARM】CCI500_execution_tb-CSDN博客

为确保 CCI-500 中有足够的一致性处理时间,提供了写数据缓冲区。这些缓冲区允许链接的 AW 和 W 通道事务通过提供写数据存储在 AW 通道被处理时进入 CCI-500。 如果接收到的 WriteUnique 或 WriteLineUnique 事务与之前的 WriteUnique 或 WriteLineUnique 事务发生危险冲突,它会在 PoS 处被暂停。该事务在早期写入完成之前不会进展。如果事务仅与同一 ACELite 从属接口的早期事务发生危险冲突,它可以在早期窥探事务完成后进展。在这种情况下,事务可以在不必等待早期写入事务完成的情况下继续进行。然而,如果暂停事务的原因是为了防止其他事务饥饿,被暂停的事务在早期写入事务完成后才能继续。 任何 WriteUnique 或 WriteLineUnique 事务如果与除 WriteUnique 或 WriteLineUnique 之外的可共享事务发生危险冲突,都必须等待早期事务完成后才能进展。

2.4 Exclusive accesses

CCI-500 支持对可共享和不可共享位置的独占访问。 CCI-500 的独占访问支持符合 ACE 和 AXI4 协议所定义的标准。 注意: CCI-500 仅提供 PoS(Point of Serialization)独占监视器。主设备和从设备组件必须以符合 ARM® AMBA® AXI 和 ACE 协议规范,AXI3, AXI4, 以及 AXI4-Lite ACE 和 ACE-Lite 的方式提供额外的监视器。 ARM® AMBA® AXI 和 ACE 协议规范,AXI3, AXI4, 以及 AXI4-Lite ACE 和 ACE-Lite 仅允许在 ACE 接口上进行可共享的独占访问。有关所需 ACE 信号的信息,请参见规范。 以下事务与可共享位置的独占序列相关联:

  • 断言 ARLOCK 的 ReadClean。
  • 断言 ARLOCK 的 ReadShared。
  • 断言 ARLOCK 的 CleanUnique。

CCI-500 支持每个 ACE 主设备最多四个独占访问线程,并为安全和非安全事务设有单独的监视器。这意味着非安全事务不能影响安全事务,反之亦然。从属接口上的 ARID 信号的两个最低有效位区分独占线程。当与 ARM 处理器一起使用时,这些位标识群集中的每个处理器。在该线程的独占共享访问上设置监视器标志,并在来自不同独占线程的成功独占共享访问上重置。 如果处理器对其缓存以共享状态持有的存储位置执行 Store-Exclusive 指令,则必须在 ACE 接口上发出相应的独占 CleanUnique 事务。 当 CleanUnique 事务由 CCI-500 处理时:

  • 如果设置了适当的监视器,事务可能会通过。发送窥探并返回 EXOKAY 响应,除非它以 ERROR 响应命中。
  • 如果未设置适当的监视器,则认为事务失败。抑制窥探,并返回 OKAY 响应。

未完待续

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

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

相关文章

基于信号处理的PPG信号滤波降噪方法(MATLAB)

光电容积脉搏波PPG信号结合相关算法可以用于人体生理参数检测,如血压、血氧饱和度等,但采集过程中极易受到噪声干扰,对于血压、血氧饱和度测量的准确性造成影响。随着当今社会医疗保健技术的发展,可穿戴监测设备对于PPG信号的质量…

简单的SQL字符型注入

目录 注入类型 判断字段数 确定回显点 查找数据库名 查找数据库表名 查询字段名 获取想要的数据 以sqli-labs靶场上的简单SQL注入为例 注入类型 判断是数字类型还是字符类型 常见的闭合方式 ?id1、?id1"、?id1)、?id1")等,大多都是单引号…

【ASTGCN】模型调试学习笔记--数据生成详解(超详细)

利用滑动窗口生成时间序列 原理图示: 以PEMS04数据集为例。 该数据集维度为:(16992,307,3),16992表示时间序列的长度,307为探测器个数,即图的顶点个数,3为特征数,即流量,速度、平…

期权专题12:期权保证金和期权盈亏

目录 1. 期权保证金 1.1 计算逻辑 1.2 代码复现 1.3 实际案例 2. 期权盈亏 2.1 价格走势 2.2 计算公式 2.2.1 卖出期权 2.2.2 买入期权 免责声明:本文由作者参考相关资料,并结合自身实践和思考独立完成,对全文内容的准确性、完整性或…

[CISCN 2023 华北]normal_snake

[CISCN 2023 华北]normal_snake 源码和依赖 算了直接说吧,不想截图了,就多了一个C3P0和yaml的依赖 然后read路由可以反序列化yaml的Str 我们看到waf 那个String是可以二次反序列化绕过的,然后CUSTOM_STRING1解码后是"BadAttributeValuePairExcept…

【java】力扣 反转链表

力扣 206 链表反转 题目介绍 解法讲解 先定义两个游标indexnull,prenull,反转之后链表应该是5,4,3,2,1,我们先进行2->1的反转,然后再循坏即可 让定义的游标index去存储head.n…

MySQL设置白名单限制

白名单(Whitelist)是一种机制,用于限制哪些主机可以连接到服务器,而阻止其他主机的访问。通过配置白名单,可以增加服务器的安全性,防止未授权的访问。 在MySQL数据库中直接设置白名单访问(即限制…

【触摸屏】【地震知识宣传系统】功能模块:视频 + 知识问答

项目背景 鉴于地震知识的普及对于提升公众防灾减灾意识的重要性,客户希望开发一套互动性强、易于理解的地震学习系统,面向公众、学生及专业人员进行地震知识教育与应急技能培训。 产品功能 系统风格:严谨的设计风格和准确的信息呈现&#…

红酒的艺术之旅:品味、鉴赏与生活的整合

在繁忙的都市生活中,红酒如同一道不同的风景线,将品味、鉴赏与日常生活巧妙地整合在一起。它不仅仅是一种饮品,更是一种艺术,一种生活的态度。今天,就让我们一起踏上这趟红酒的艺术之旅,探寻雷盛红酒如何以…

【qt】如何读取文件并拆分信息?

需要用到QTextStream类 还有QFile类 对于文件的读取操作我们可以统一记下如下操作: 就这三板斧 获取到文件名用文件名初始化文件对象用文件对象初始化文本流 接下来就是打开文件了 用open()来打开文件 用readLine()来读取行数据 用atEnd()来判断是否读到结尾 用split()来获取…

02. Hibernate 初体验之持久化对象

1. 前言 本节课程让我们一起体验 Hibernate 的魅力!编写第一个基于 Hibernate 的实例程序。 在本节课程中,你将学到 : Hibernate 的版本发展史;持久化对象的特点。 为了更好地讲解这个内容,这个初体验案例分上下 2…

go-高效处理应用程序数据

一、背景 大型的应用程序为了后期的排障、运营等,会将一些请求、日志、性能指标等数据保存到存储系统中。为了满足这些需求,我们需要进行数据采集,将数据高效的传输到存储系统 二、问题 采集服务仅仅针对某个需求开发,需要修改…

防火墙小试——部分(书接上回)

toop接上回 1.实验拓扑及要求 前情回顾 DMZ区内的服务器,办公区仅能在办公时间内(9:00 - 18:00)可以访问,生产区的设备全天可以访问. 生产区不允许访问互联网,办公区和游客区允许访问互联网 …

C#统一委托Func与Action

C#在System命名空间下提供两个委托Action和Func,这两个委托最多提供16个参数,基本上可以满足所有自定义事件所需的委托类型。几乎所有的 事件 都可以使用这两个内置的委托Action和Func进行处理。 Action委托: Action定义提供0~16个参数&…

使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体

本文目录 一、引言二、开发准备三、代码开发四、使用亮数据进行高效爬取4.1 为什么需要亮数据4.2 如何使用亮数据 五、使用数据训练AI智能体六、 总结 一、引言 在当今AI迅速发展的时代,招聘市场正经历着前所未有的变革。传统的招聘方式已难以满足双方的需求。AI智…

canvas快速入门(一)canvas的基础使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1. canvas的两种创建方式及优劣 2. canvas宽高设置及注意事项 3. 简单测例 项目结构&#xff1a; 源码&#xff1a; index.html <!DOCTYPE html> <html lang"en"> <head><meta charset…

先天睡功-守一老师

描述 守一老师&#xff0c;一个富有才华的老师&#xff01; 对于大家的学习有不可多得的帮助。 内容 目前主要的内容以睡觉为主&#xff0c;对于学习睡睡觉有比较大的帮助&#xff01; 但是网络上面错综复杂&#xff0c;很多老旧的版本影响学习&#xff01; 而这里我整理了…

安全防御实验2

一、实验拓扑 二、实验要求 办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换)分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器多出口环境基于带宽比例进行选路&#xff0c;但是&#xff0c;办公区…

OZON夏季热卖产品有哪些,OZON夏季热卖新品

OZON平台在夏季的热卖产品种类繁多&#xff0c;涵盖了多个领域&#xff0c;主要包括但不限于以下几个方面&#xff0c;接下来看看OZON夏季热卖产品有哪些&#xff0c;OZON夏季热卖新品&#xff01;Top1 运动套装 Костюм спортивный Victorias Secret 商品id…

【C++】C++入门实战教程(打造属于自己的C++知识库)

目录 目录 写在前面 1.C学习路线 2.本教程框架介绍 一.C基础部分 1.程序编码规范 2.程序运行与编译 3.关键字 4.常用数据类型 5.运算符相关 二.C进阶部分 1.面向对象编程 2.函数编程 3.模板编程 4.多线程与并发 5.STL介绍及使用 6.内存模型与优化 三.C实战部…