【CHI】CHI协议自问自答

        学习CHI有一段时间了,如今回过头来,再读协议,一些问题做个记录。如果有错误的地方,欢迎指正。如果有其他的问题,也欢迎留言讨论。

spec: IHI0050F_amba_chi_architecture_spec

【持续更新ing】


目录

1. 怎么理解CHI协议分层?

2. CHI怎么没有burst概念?

3. snoop flit怎么没有tgtID?

4. 怎么理解SAM?跟flit中的tgtID什么关系?

5. 怎么理解order保序?

6. 为什么Read Transaction中只有MakeReadUnique可以回Comp?

7. 怎么理解cache stashing?

参考链接:


1. 怎么理解CHI协议分层?

        我们再来回顾一下CHI的分层,协议层(protocol)、网络层(network)和链路层(link)。具体描述参见下表:

相比于AMBA之前的总线,CHI为什么要做协议分层?

        之前的AHB/AXI,其实是把协议层链路层糅合到一起,所以没有分层的概念,从链路上的信号基本就能知道所要作的操作是什么。但是抽象出来看的话,在一个系统中,每个参与者(组件)都有各自需要关注的内容。比如,Master(CPU)主要关注读写操作,需要描述内存属性、size大小、安全性,也就是协议层;而中间的互联组件(ICN)则不关注所做的操作是什么,只关注从哪里来到哪里去,以及怎么去传输,也就是网络层和链路层

        所以协议分层,可以在不同的层次做不同的事情。同样的,我们看待问题也要考虑是站在哪个层级。

2. CHI怎么没有burst概念?

        AXI中的burst传输,就是只需要给定起始地址和burst大小,读/写 burst大小的数据。

        那么CHI呢,是一致性总线协议,DAT通道是基于half/full cacheline大小传输的,即burst大小是一个cacheline。然后再根据size/BE确定具体的data。

3. snoop flit怎么没有tgtID?

        snoop是HNF发给RN的,没有tgtID,怎么知道是发给哪个RN?协议中snoop flit没有tgtID,为什么?但是在实现的时候肯定还是要有的,可能是加到flit,也可能是其他什么形式?

4. 怎么理解SAM?跟flit中的tgtID什么关系?

        SAM:System Address Map,就是通过地址addr得到tgtID。 具体实现可自定义。

系统中,请求者必须具有系统地址映射 (SAM) 才能确定请求的目标 ID。
SAM 的范围可能很简单,只需为所有传出请求提供固定的节点 ID 值即可。
SAM 必须提供整个地址空间的完整解码。
建议将任何与物理组件不对应的地址发送到可以提供适当错误响应的代理。

RN SAM : 映射物理地址到HN的Node ID;

HN SAM : 映射物理地址到SN的Node ID;

那么,问题来了,为什么可以通过地址得到target ID ?

在一个系统中,内存被划分为很多部分,A部分连接在SN1上,由HN1管理;B部分连接在SN2上,由HN2管理,.....(具体实现时,可能不是这种简单的映射关系,一般都是hash把地址打散)

这样,如果是到RN到地址A范围的请求,就会根据RN SAM映射成HN1的tgtID。

而这个tgtID就会填充到flit中,这样在网络上传输时就会转发到正确的目的地。

5. 怎么理解order保序?

6. 为什么Read Transaction中只有MakeReadUnique可以回Comp?

注意上述Read transactions structure中【6.MakeReadUnique Only】

理论上来说,Read transactions必须要带回数据,也就是CompData,或者RespSepData + DataSepResp;为什么MakeReadUnique可以只回复Comp ?

我们再看MakeReadUnique定义:

以及RN发起MakeReadUnique的初始状态:

可以知道,RN发起MakeReadUnique时,本身是有S态数据的,如果在返回的时候,HN知道它还保留有数据,没有在这个过程中被无效掉,就无需再返回data,只是返回comp就好。

7. 怎么理解cache stashing?

        cache stashing是为了将数据搬到特定cache中存放,比如接下来RN1可能使用data1,那么就把data1缓存到RN1中,以提高性能。

        同prefetch一样,stash操作也只是一种hint。可以选择接受或不接受。区别是prefetch是RN自己发出,自己预取;而stash则是其他RN发出,“stash”到stashNID的RN。

HN在将stash通知到RN后,RN可以:

  • 接受,使用datapull机制来获取cacheline;
  • 接受,不使用datapull,另外发起Read获取数据
  • 忽略。

所以,datapull机制就是通过snoop响应来暗示读请求的一种方式,不需要单独的读请求来获取数据。

下面是一个stash事务的flow:

未完待续


参考链接:

Arm AMBA协议集及应用场景详解 - 极术社区 - 连接开发者与智能计算生态

What is AMBA, and why use it?--YouTube

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

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

相关文章

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中,实现添加列表项,最后一项自动显示在可视区域范围!! 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…

JVM成神之路

目录 JVM入门关: 一:JVM的内存布局是咋样的? 二:方法区,永久代,元空间有什么区别? 三:常量池和字符串常量池有什么区别? 四:什么是堆溢出,什…

结构化系统分析,结构化系统设计(正片)

结构化分析方法:是面向数据流进行需求分析的方法,是用抽象模型的概念,按软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 数据流图(DFD)&#xf…

Linux系统:本机(物理主机)访问不了虚拟机中的apache服务问题的解决方案

学习目标: 提示:本文主要讲述-本机(物理主机)访问不了虚拟机中的apache服务情况下的解决方案 Linux系统:Ubuntu 23.04; 文中提到的“本机”:代表,宿主机,物理主机; 首先&#xff0c…

吴恩达深度学习笔记(7)

误差分析: 你运行一个算法代替人类计算,但是没有达到人类的效果,需要手动检查算法中的错误,对模型的一些部分做相应调整,才能更好地提升分类的精度。如果不加分析去做,可能几个月的努力对于提升精度并没有…

旋转花键材质及运用场景

旋转花键的材质有很多种,其材质选择是一个涉及多方面因素的重要决策,‌主要取决于应用场景的具体要求,包括设备的运行环境、负载大小、运行速度以及所需的耐磨性和耐腐蚀性等因素。 1、碳钢:价格低廉、具有较好的韧性和耐磨性&…

【分享】项目开发中的计算问题

事件背景 最近也就上个月吧,拿到一个新的需求,新建一个页面,三个Grid联动,涉及很多的页面和sql以及Java计算。 简略的画个表格表示一下: 第一个Grid: 第二个Grid: 第三个Grid: 业…

openKylin系统SSH服务配置结合cpolar轻松实现开放麒麟远程连接

前言 本文主要介绍如何在openKlyin系统中设置ssh连接,并结合cpolar内网穿透工具实现远程也可以ssh连接本地局域网内部署的openKlyin系统. openKylin是中国首个基于Linux 的桌面操作系统开发者平台,通过开放操作系统源代码的方式,打造具有自…

Axure显示与隐藏——元件动作一

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:显示与隐藏 主要内容:显示/隐藏/切换三种效果,动画效果,更多效果 应用场景:元件自身状态变化、操作…

LinkedList作者:我虽然开发了LinkedList,但是我更爱用ArrayList

感谢Java面试教程关于LinkedList经验分享 PS冷知识:LinkedList的作者更爱使用ArrayList。 ArrayList 和 LinkedList 是 Java 中两种常见的 List 实现类,它们在底层数据结构、性能特征和使用场景上有显著的区别。 底层数据结构: ArrayList …

Flux.never 使用说明书

public static <T> Flux<T> never()Create a Flux that will never signal any data, error or completion signal. 创建一个永远不会发出任何数据、错误或完成信号的 Flux。 Type Parameters: T - the Subscriber type target Returns: a never completing Flu…

软件缺陷报告

软件缺陷报告样例 软件缺陷基本内容 标题&#xff1a;一句话概述缺陷预置条件&#xff1a;缺陷的前提条件重现步骤&#xff1a;缺陷出现步骤期望结果&#xff1a;没有出现缺陷应该的结果实际结果&#xff1a;缺陷结果 软件缺陷的状态 新建&#xff08;激活&#xff09;->…

idea2024启动Java项目报Error running CloudPlApplication. Command line is too long.

idea2024启动Java项目报Error running CloudPlApplication. Command line is too long. 解决方案&#xff1a; 1、打开Edit Configurations 2、点击Modify options设置&#xff0c;勾选Shorten command line 3、在Edit Configurations界面下方新增的Shorten command line选项中…

前海一个很偏僻的路边免费停车点

​这个偏僻的路边免费停车点具体位置在前海金融中心大厦附近的中国中铁门口&#xff0c;大概有可以停30~50个位置的样子。缺点是很多灰尘哈。第一次路过的时候&#xff0c;我还以为很多车在等红绿灯&#xff0c;靠近才发现&#xff0c;这些车只是停在路面上。其中要想知道看车子…

MySQL | Explain的是使用详解

介绍 Explain是SQL分析工具中非常重要的一个功能&#xff0c;可以模拟优化器执行查询语句&#xff0c;帮助我们理解查询是如何执行的&#xff1b;分析查询执行计划可以帮助我们发现sql查询瓶颈&#xff0c;优化查询性能。 使用方法 MySQL5.7 版本之前使用&#xff1a; Expl…

解决 Elasticsearch cluster_block_exception 错误的终极指南

Elasticsearch 是一个功能强大的分布式搜索引擎&#xff0c;广泛应用于全文检索、实时分析等场景。 尽管如此&#xff0c;像任何复杂系统一样&#xff0c;它也会遇到一些运行问题&#xff0c;其中较为常见且影响较大的就是 cluster_block_exception 错误。 本文将深入解析这种错…

2024.10月16日- 关于Vue2(1)

一 VUE概述与环境搭建 1.1 Vue概述 1.1.1 简介 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款轻量级的用于构建用户界面的 渐进式的JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高…

入门!Linux 常见指令及权限管理全面指南

Linux 操作系统在现代计算机应用中扮演着重要的角色&#xff0c;广泛用于服务器、桌面系统、嵌入式设备及云计算平台等领域。理解和掌握 Linux 常见指令及权限管理机制&#xff0c;是每一位系统管理员和开发人员的基础技能。本文将详细介绍 Linux 系统的基本背景、常用指令、权…

桂林旅游一点通:SpringBoot平台应用

3系统分析 3.1可行性分析 通过对本桂林旅游景点导游平台实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本桂林旅游景点导游平台采用SSM框架&#xff0c;JAVA作…

iOS IPA上传到App Store Connect的三种方案详解

引言 在iOS应用开发中&#xff0c;完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发&#xff0c;还是通过uni-app、Flutter等跨平台工具生成的IPA文件&#xff0c;上传到App Store的流程都是类似的。苹果…