36_2 On Chip Bus —— AXI总线介绍

news2024/12/29 11:34:39

目录

1.AXI总线介绍(读2写3)

1.1流量控制

1.2 AXI signals 信号线

1.3重点信号线的介绍

1.4原子操作——让读改写一套操作 永远是一个master对一个slave

1.5AXI BURST Boundary——一个burst不能跨4k boundary,master要保证

1.6读/写通道是独立的,但读/写操作的内部的2/3个通道内部呢?——读/写操作通道的时序关系

2.AXI的高级特性

2.1为什么AXI能够提高传输效率—CMD Outstanding

2.2 AXI OUT-of-Order —— 因为有WID,请求顺序和回的数据顺序可以不一致

2.3 unaligned Transfers 不对齐的传输

2.4 IP使用的实例

2.5 AXI系统示例

3. AHB/AXI总线对比

4. BUS Arbiter/ BUS Matrix/ BUS NOC

5.AXI效率提升

5.1 效率/latency

5.2AXI的IP设计的考量

6.其他片上总线


1.AXI总线介绍(读2写3)

读——AXI使用基于VALID READY的握手机制数据传输协议,传输源端使用VALID表明地址/控制信号、数据是有效的,目的端使用READY表明自己能够接受信息。

 读也存在response——因为会有数据的返回——所以会把response信号绑定在读出的数据中传回 写——因为没有回传的通道——需要增加一条response的通道

 

 

1.1流量控制

读就是——address channel 配合 data channel ! slave 的ready/valid信号,反馈给master,让master知道传输是否成功。

 

 写——三个channel配合

 

1.2 AXI signals 信号线

1.写 控制/地址通道 信号——理解看中文的!

 

 2.写 数据通道 信号

 3.写 响应通道 信号

 4.读的信号——http://t.csdn.cn/YFrfr——地址通道/数据通道

 

 

1.3重点信号线的介绍

1.Buffer/Cache

cacheable ——进不进cache、bufferable——进不进buffer...

 

 reserved 说明功能有冲突,所以不能用——比如你要allocate,就必须要cache了或buffer了,否则没办法读/写!

 2.BRESP[1:0]——写响应

 比如没有这个地址——可以返回decerror 给 master。slave——slave的错误

1.4原子操作——让读改写一套操作 永远是一个master对一个slave

原子操作:一份资源,两份进程需要访问这个资源——其中一个进程先访问-如地址A——判断资源还有没有——有,进行操作read—modify——write——将A地址的有修改,写回去为A没有资源了——等到一个进程用完了——才会再把A中标志位改为资源“有” 所以共享的资源——在系统的某一个地址里面就会存储信息——表明这个资源还存在几份——这样就能保证数据的读改写都是一个进程操作的

Semaphore详解

bus为了支持软件进程的行为——因此定义了两种行为:Locked access 和 Exclusive access ①Locked access——锁定的进程完成了读改写整个流程(lock write - modify - unlock write)——进程才会把bus占有释放掉——别的进程才能抢到锁 ②Exclusive access——不锁死总线——把read-modify-write这个流程的保证工作交给slave——而不是锁死总线——如果slave 在Exclusive状态下,又有别的master想操作slvae,回复rsponse一个操作不成功!

当地址还没有被锁定——地址就会回复exclusive ok——exclusive操作成功! 但是当master访问,A地址已经被上一个slave锁定的时候——此时slave回复ok——表明失败了

比喻总结:两人之间不允许第三者插足——不然都不知道孩子是谁的。为了保证整个读改写操作都是master A操作的,有两种方案——①Locked access的方式,直接锁定总线 ②Exclusive access的方式,让slave访问标志位判断是否已经被占用了,如果是——返回ok表明已经被Exclusive access

read——读

1.5AXI BURST Boundary——一个burst不能跨4k boundary,master要保证

1.6读/写通道是独立的,但读/写操作的内部的2/3个通道内部呢?——读/写操作通道的时序关系

读存在的顺序—ARVALID、ARREADY 均有效—— RVALID才能有效

 

 存在的顺序—data必须写完——才能回BVALID——写响应有效信号 W的 Address channel 和 W的 data channel 是没有关系的——即写数据的地址通道和数据通道之间完全没有关系! 实际应用中还是会先发地址——再发数据

 

2.AXI的高级特性

2.1为什么AXI能够提高传输效率—CMD Outstanding

如果只是顺序的指令,那效率是无法提升的

之前学过——DDR是存在bank interleave的!而AXI是能够配合上的——cmd outstanding  

2.2 AXI OUT-of-Order —— 因为有WID,请求顺序和回的数据顺序可以不一致

如果ARID(master 发出来的信号)不同——可以不按顺序回数据——因为回数据的时候有RID(是和ARID对应的!)

2.3 unaligned Transfers 不对齐的传输

2.4 IP使用的实例

高地址map为row,所以user过来的地址即使在一个row,经过map也可以放到不同的bank,效率提升—— 多使用bank interleave——提升bus效率

2.5 AXI系统示例

虽然只有一组 读/写 通道,因为可以使用 2.1的CMD Outstanding,这时 读/写 就能看到一堆的控制信号,就能够实现ddr 的 bank interleave —— 意思是,ddr可以同时使用上他的多个bank 读写数据——既然一根AXI bus在通道上就可以发送 许多 连续的读写信号—— ddr就能够配合着进行bank interleave 准备许多的数据

3. AHB/AXI总线对比

①传输效率——AXI可能效率更高
②接口复杂度——AXI可能信号线更多,AHB信号线少一点——所以AXI的gate count接口数量会更大一点——但是对使用者来说——AXI的控制应该是更简单的,更不容易出bug——因为他的操作就是靠valid-ready的hand shank实现
③接口逻辑的频率——理论上AXI更高——order没有严格顺序要求(out of order)——假如timing不过,可以很容易的加寄存器,延迟几拍传输地址/控制信号过来没有关系——但AHB的一个burst中的地址信号需要是连续的——因此AXI很好做pipeline设计,可以做到更高的速度  

4. BUS Arbiter/ BUS Matrix/ BUS NOC

 总线上有多通道

AXI NOC Components

 

举例——两省之间修高速公路,不会只修一条多车道的公路——是做很多的高速公路网络串起来的——mater分布的位置不同、网络拆开效率才会高、速率不会有瓶颈

5.AXI效率提升

5.1 效率/latency

 

burst-length不是越长越好——有可能导致real-time的设备死机!

 

 

 

5.2AXI的IP设计的考量

 

 

 

6.其他片上总线

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

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

相关文章

k8s中的PV和PVS

前言:容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)…

Python 算法交易实验51 Step2 Signals 信号生成

说明 不可不读书 先从经典的一些超简单信号开始 使用移动平均指标SMA(算术) 给出了信号的产生方法,还有一些测算结果,反正看起来都是盈利的 首先使用离线方法实验一组结果,然后就使用ADBS来进行类似的处理。 内容 1 原理分析…

【python中的列表和元组】

文章目录前言一、列表及其使用1.列表的特点2. 列表的使用方法二、元组及其特点1.元组的类型是tuple1.元组的查找操作2. 计算元组某个元素出现的次数3.统计元组内元素的个数总结前言 本文着重介绍python中的列表和元组以及列表和元组之间的区别 一、列表及其使用 1.列表的特点…

JavaSE学习进阶day2_02 抽象类和接口

第四章 抽象类 4.1 概述 4.1.1 抽象类引入 先看一张图: 这张图时之前学习继承时用的,但是现在有一个疑问,吃饭这个行为猫和狗都有,但是它们吃的东西却又不同,这个时候我们不能确定父类吃饭这个方法到底该写什么&…

数据库分库分表策略

一、MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 关于数据库的扩展主要包括:业务拆分、主从复制,数据库分库与分表。这篇文章主要讲述数据库分库…

03-SQLPlus的常用命令和使用

本章内容讲解SQLPlus的常用命令使用方法,参数的设置,帮助的使用,详细讲解如下: 登录SQL*Plus DOS方式登录SQL*Plus C:\>sqlplus 提示输入用户名、密码 C:\>sqlplus scott/tiger 连到默认数据库,注册表或环境变量中设 …

Blender——植物生长动画制作

效果图前言参考链接:https://www.bilibili.com/video/BV1aY411G7bk/?spm_id_from333.788.recommend_more_video.10&vd_source5212838c127b01db69dcc8b2d27ca517建议Blender的版本在3.0.0或以上。制作完成的植物生长动画blender文件下载:https://dow…

SpringCloud之ElasticSearch笔记

ElasticSearch 初识ElasticSearch ElasticSearch是什么 ElasticSearch一个基于Lucene的底层的开源的分布式搜索引擎,可用来实现搜索,日志统计,分析,系统监控 正向索引和倒排索引 正向索引:逐条扫描(my…

Databend v1.0 Release 正式发布

尊敬的 Databenders,在 Databend Labs 成立两周年之际,我们非常高兴地宣布 Databend v1.0 正式发布。 Databend 社区一直在致力于解决大数据分析的成本和复杂度问题,并正在被顶级场景和顶级需求所推动。 根据可统计信息,每天约 7…

2023年“中银杯”安徽省职业院校技能大赛网络安全A模块全过程解析

A模块基础设施设置/安全加固(200分) 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用登录和密码策略、流量完整性保护策略、事件监控策略、防火墙策略等多种安全策略来提升服务器系统的网络安全…

K8S 实用工具之三 - 图形化 UI Lens

开篇 📜 引言: 磨刀不误砍柴工工欲善其事必先利其器 第一篇:《K8S 实用工具之一 - 如何合并多个 kubeconfig?》第二篇:《K8S 实用工具之二 - 终端 UI K9S》 像我这种,kubectl 用的不是非常溜,经…

指针面试笔试题练习

前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨星光…

webGL编程指南实战教程

学习路线: 如果你是在校大学生,有足够的时间去学习:前端>数学(几何线性代数)>图形学>webgl>shader >threejs>three.js源码如果你是工作中使用,需要快速出产成品:前端>thr…

【博学谷学习记录】超强总结,用心分享 | 架构师 JDK源码学习总结

文章目录HashMap类1.定义2.哈希表3.JDK1.8前HashMap的数据结构4.JDK1.8后HashMap的数据结构5.类构造器6.字段属性①Node<K,V>[] table②size③loadFactor④threshold7.构造函数①默认无参构造函数②指定初始容量的构造函数8.确定哈希桶数组索引位置9.添加元素10.扩容机制…

操作系统重难点笔记

1.信号量机制&#xff0c;读者/写者问题 读者/写者问题分为两种情况&#xff1a; 1.读者和写者互斥&#xff0c;并且不同的读者和写者之间都互斥,一共三个互斥 下面给出伪代码 int m1; int mr1; int mw1; int count0; writer() {while(1){P(mw);........V(mw);} } reader() {…

防止暴力破解ssh的四种方法

一. 方法介绍 防止暴力破解的四种方法&#xff1a; 1 密码要写的足够的复杂&#xff0c;通常建议将密码写16位&#xff0c;并且无连贯的数字或者字母&#xff1b;当然也可以固定一个时间修改一次密码&#xff0c;推荐是一个月修改一次会稳妥一些2 修改ssh的端口号&#xff0c;…

【剧前爆米花--爪哇岛寻宝】MySQL中索引和事务

作者&#xff1a;困了电视剧 专栏&#xff1a;《MySQL数据库》 文章分布&#xff1a;这是一篇关于Java中异常类的文章&#xff0c;在本篇文章中详细讲解了异常的使用逻辑和底层的执行过程&#xff0c;如有疏漏&#xff0c;欢迎大佬指正&#xff01; 目录 索引 用法 底层逻辑…

中医药NER命名实体识别基于SPANNER方式

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2023.3.5 Last edited: 2023.3.5 导读 本文使用SPANNER方式实现对中医药进行实体识别&#xff0c;采用focal loss 进行优化。 本文章作用防止安静…

【微信小程序】计算器案例

&#x1f3c6;今日学习目标&#xff1a;第二十一期——计算器案例 ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰预计时间&#xff1a;30分钟 &#x1f389;专栏系列&#xff1a;我的第一个微信小程序 计算器前言实现效果实现步骤wxmlwxssjs数字按钮事件处理函数计算按钮处理事…

为啥一个 main 方法就能启动项目

在 Spring Boot 出现之前&#xff0c;我们要运行一个 Java Web 应用&#xff0c;首先需要有一个 Web 容器&#xff08;例如 Tomcat 或 Jetty&#xff09;&#xff0c;然后将我们的 Web 应用打包后放到容器的相应目录下&#xff0c;最后再启动容器。 在 IDE 中也需要对 Web 容器…