soc AXI接口术语和特性
AXI接口术语和特性
1、outstanding

2、interleaving

3、out-of-oder

4、写数据可以优先于写地址


5、大小端
小端:低地址数据放在总线bus的低位。
大端:低地址数据放在总线bus的高位。
6、INCR模式
INCR模式master只提供首地址,地址累加是slave端做的
7、原子操作
7.1、原子操作的用途
在多线程的操作系统中,都有一个获取线程锁的过程,这个锁是唯一的,一个线程抢到了其他线程就抢不到,如何实现这个功能呢?加入将内存的一个变量作为锁的标志,如果这个标志位0表示没有线程抢这个锁,如果为1表示某个线程抢到了这个锁。那么在抢锁之前先要看一下这个标志是否为0,如果为0表示锁是空闲的可以抢,为了表示抢到了这个锁,还得把这个变量置为1。这个抢锁的过程就至少需要有一读一写。但是在多线程操作的过程中,可能很多线程都在读取这个变量,都读到的值为0(读的时间还是比较长的,多核并发完全可以读多次),然后所有线程都写1,这样就造成了多个线程都得到了锁,与锁唯一的要求不合。也就是说通过软件手段是不能保证某个值被一个线程(Master)读取和写入的过程中没有被其他线程(Master)读取和写入。这就要求线程支持原子操作。
由于内存在使用过程中会出现ecc错误,需要刷新数据来纠正这些错误,操作系统通过内存巡检来完成刷新操作,内存巡检就是读取内存的值,通过ecc校验更正错误值,然后写入到内存,系统读取数据后,操作系统还是在正常运行的,内存上的程序很有可能把内部数据修改了,如果还是拿原来读取的数据ecc校验后写入就会冲掉程序保存的数据,这当然是不行的。这个时候内存巡检就要用到原子操作,巡检值使用exlusive方式读取内存,让这段内存记录在读取数据后内存数据有没有被改写过,如果被改写过,ecc校验后的数据使用exlusive方式写入的时候就会不成功,防止覆盖新的数据。巡检程序发现写入不成功就重新巡检这段内存,直到成功。
7.2、exlusive原子操作
Master_A以exclusive方式读取Salve的一段地址(以lane_cash为单位,一般为64byte)的值后,相当于Master通知slave监控这段地址的写,slave的一个moniter会纪录这个Master_A,如果Master_A在写入这个slave之前没有其他Master写过这个数据的话,Master_A往这段地址写入数据是会返回一个Exok即原子操作成功,指示数据正确写入;如果在Master_A写入数据之前有其他Master也往slave的这段地址写过数据,那么Master_A以exlusive写数据的操作会返回ok,这其实表示exclusive操作失败了,数据也被moniter阻挡没有写入到slave中。这样保证读写这一整个过程中,软件知道是不是只有一个线程(Master)在写这段地址(其他线程在这个过程可以读),也只有exlusive写返回Exok后才说明线程锁抢占成功,这样就只有一个线程能抢占成功。
是一种应用场景相关的操作,在多核CPU中,为了保证一个master对slave的访问操作不让其他master来访问,保证访问slave的数据不被其他master改写。有点像多线程中的线程锁。在AXI3.0的时候有normal access/exclusive access/locked access, 其中normal access是不进行任何干预的访问,exclusive则是slave端监控一下,在master访问期间有没有其他master访问过,如果访问过就给告警什么的,让master重新访问一遍。locked access这种模式在AXI 4.0取消了,即硬件锁定,其他master访问不了master到slave的总线,这种方式对性能影响很大,所以取消了。
8、cash
cash是slave端的一个缓冲,如果多个设备都访问slave的某一部分数据,那么这部分数据可以缓存到cash中,只要第一个master访问后,其他master访问则部分数据时就不去slave中去取这些数据,而是直接从cash中取出来,这样节省时间。axcash信号在总线中是透传的。在与AXI相连的CHI协议中实现实现了cash操作。

9、额外信号Qos/user
Qos和user在总线中也通常是透传,Qos有时候用于多个master访问的优先级用于仲裁。
10、应答信号:BRESP/RRESP
写操作单独有一个写应答通道;读应答RRESP与读数据集成在同一通道;
对于写操作,每个burst只有一个写应答BRESP,且必须在最后一拍写数据后产生;读操作每一拍数据都有对应的读应答信号返回;
11、ID
Master无需知道某个ID被其他设备使用了没有,应为interconnect会在Master的ID上额外添加8bit,来区分不同Master的ID。
12、低功耗操作
开启低功耗模式:Master拉低CSYSREQ信号,SLAVE收到后等SLAVE的任务处理完后拉低CACTIVE表示响应,并且在时钟关闭后拉低CSYSACK表示响应。
撤销低功耗模式:Master拉起CSYSREQ信号,SLAVE接收到以后拉高CACTIVE,解开时钟后,拉高CSYSACK信号。

原文编写与2019-12-05
soc AXI接口术语和特性的更多相关文章
- 关于Xilinx AXI Lite 源代码分析---自建带AXI接口的IP
关于Xilinx AXI Lite 源代码分析---自建带AXI接口的IP 首先需要注意此处寄存器数量的配置,它决定了slv_reg的个数. 读写数据,即是对寄存器slv_reg进行操作: 关于AXI ...
- golang接口三个特性
类型和接口 因为映射建设在类型的基础之上,首先我们对类型进行全新的介绍.go是一个静态性语言,每个变量都有静态的类型,因此每个变量在编译阶段中有明确的变量类型,比如像:int.float32.MyTy ...
- C#8.0接口默认实现特性
文章:[译]C#8.0中一个使接口更加灵活的新特性-默认接口实现 原文示例代码: public interface IBook { void AddBook(string bookName, stri ...
- JDK8中接口的新特性
在JDK8环境中,接口中的方法不再是只能有抽象方法,还可以有静态方法和default方法.实现类只需要实现它的抽象方法即可,JDK8中的接口有愈发向抽象类靠拢的感觉. 关于静态方法和默认方法作如下简述 ...
- jdk8中接口中的特性
jdk8中可以定义静态方法(public static)和默认方法(public default),public 可以省略 调用接口中的静态方法时:只能通过接口本身来调用,不能被该接口的实现类来调 调 ...
- Zynq-PL中创建AXI Master接口IP及AXI4-Lite总线主从读写时序测试(转)
转载:原文 http://www.eefocus.com/antaur/blog/17-08/423751_6cc0d.html 0. 引言 通过之前的学习,可以在PL端创建从机模式的AXI接口IP ...
- JAVA8新特性——接口定义增强
JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ 接口定义增强 在JDK1.8以前,接口是定义的: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法 ...
- java8新特性学习:函数式接口
本文概要 什么是函数式接口? 如何定义函数式接口? 常用的函数式接口 函数式接口语法注意事项 总结 1. 什么是函数式接口? 函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口 ...
- JDK1.8之后的新特性和新接口
接口的旧特性: 就特性下接口中只有: 常量(必须赋值) 抽象方法abstract(和final static private三个关键字冲突) interface Inter { //int a ; / ...
随机推荐
- Java使用poi实现Word添加水印(仅支持后缀为.docx格式)
最近要做电子合同,客户提出为了安全性要将合同中都添加水印,这个之前在网上看到过,貌似使用POI很好加.去网上一搜发现,清一色的只有一篇文章,并且这段代码是用不了的:在文章下边的评论里也发现都说用不了, ...
- markdown mermaid序列图
序列图(时序图) 序列图是一种交互图,它显示了进程如何相互操作以及按什么顺序操作. sequenceDiagram participant l as 大灰狼 participant y as 小羊 l ...
- vue 快速入门 系列 —— Vue(自身) 项目结构
其他章节请看: vue 快速入门 系列 Vue(自身) 项目结构 前面我们已经陆续研究了 vue 的核心原理:数据侦测.模板和虚拟 DOM,都是偏底层的.本篇将和大家一起来看一下 vue 自身这个项目 ...
- JavaScript 中BOM的常用操作
JavaScript BOM操作 1.获取浏览器窗口尺寸 var width=window,innerWidth //获取可视窗口宽度 var height=window.innerHeight // ...
- 【get√】golang新手理解了一点点context
测试代码如下: package practice import ( "context" "log" //"fmt" "time&q ...
- Message deduplication 这里的去重与你想的可能不一样|Apache Pulsar 技术系列
导语 Apache Pulsar 是一个多租户.高性能的服务间消息传输解决方案,支持多租户.低延时.读写分离.跨地域复制.快速扩容.灵活容错等特性.腾讯云内部 Pulsar工作组对 Pulsar 做了 ...
- gorm中的删除
删除 删除一条记录 删除一条记录时,删除对象需要指定主键,否则会触发 批量 Delete,例如: db.Debug().Where("id = ?", 6).Delete(new( ...
- linux关闭swap
#(1)临时关闭swap分区, 重启失效; swapoff -a #(2)永久关闭swap分区 sed -ri 's/.*swap.*/#&/' /etc/fstab 也可以在sysctl.c ...
- System.arraycopy()的用法?
1.使用方法 public void arr(Object arr1, int x, Object arr2, int y, int length) arr1 : 源数组; x: 需要从源数组要复制的 ...
- AT2274 [ARC066D] Contest with Drinks Hard
先考虑不修改怎么做,可以令 \(dp_i\) 表示前 \(i\) 个题能获得的最大得分.那么我们有转移: \[dp_i = \min\{dp_{i - 1}, dp_{j} + \frac{(i - ...