今天先来看一下传输标识(transaction identifier)的概念,主要是ID信号。

开始之前先讲几个概念,首先是outstanding(想不好怎么翻译,有的人译为超前)传输。如果没有outstanding能力,或者说outstanding=1时,主机的读操作顺序是:读地址命令->等待读数据返回->读地址命令->等待读数据返回->…如此往复。主机的写操作行为是:写地址->写数据->等待写响应返回->写地址->写数据->等待写响应返回->…如此往复。每一次新的传输要等上一次传输结束,总线的利用率不高。
而如果outstanding能力为N>1的话,则读操作时,可以连续发N个读地址命令,在这期间如果读数据没有返回,则需要等待读数据返回,如果有读数据返回,则返回了几个,那么仍然可以接着发几个。也就是说,“在路上” 的读命令(或者读数据)最多可以是N。对于写操作,可以连续发出N组写地址(写数据)命令,这期间如果写响应没有返回,则必须等待写响应返回才能接着发写地址(写数据)命令,如果有写响应返回,则返回了几个,那么仍然可以接着发几组。也就是说,“在路上” 的写响应最多可以是N。
还有一个概念是乱序(out of order)传输。如果不支持乱序,那么返回的读数据必须按照读事务的顺序返回。如果是一次突发传输,返回数据中间不能插入其它的读事务数据。如果中间允许插入其它事务的数据,就是支持交织。
换种说法,outsatanding是对地址而言,一次突发还没结束,就可以发送下一个地址。而乱序和交织则是相对于传输事务,out-of-order说的是发送transaction和接收的cmd之间的顺序没有关系,如先接到A的cmd,再接到B的cmd,则可以先发B的数据,再发A的数据;交织指的是A的数据和B的数据可以交错,如A0->B0->A1->B1->B2->B3。
如果SoC中是多主机多从机的结构,支持上述的传输特性无疑会极大的提高总线互连的利用率,主机可以对不同地址或从机进行连续访问,而从机返回数据的先后可以不按照主机的发出事务顺序。当然,这也对设计提出了挑战。
一般从机的数据准备时间不由主机控制,数据就绪顺序与事务到达顺序不一致是可能的。因此需要相应的机制来标识数据所属的事务。而这,就是通过ID信号来实现的。
首先从读事务的 ARID 来看,主机为发出的读事务设定 ARID。
对于给定ID值的所有事务都必须保持有序,但对具有不同ID值的事务的顺序没有限制。单个物理端口支持乱序(out of order)事务,这样看起来有多个逻辑端口,每个逻辑端口按顺序处理其事务。通过使用AXI ID,主机可以无需等待前一个事务完成,就可以发出下一个事务。这可以提高系统性能,因为它支持事务的并行处理。
对于读数据排序,从机要保证RID的值与对应的ARID值匹配。互连必须确保从具有相同ARID值的事务序列中读取的数据以不同的从机为目标,由主机按其发出地址的顺序接收。从设备的读取数据重新排序深度(read data reordering depth)由从设备自己决定,不受主设备影响。

对于写数据排序,主设备必须保证写数据与发出的事务地址顺序相同。互连必须保证不同主设备的写数据与事务地址同序。也就是说,主设备保证自己的写事务顺序,互连保证不同主设备的顺序。
AXI3支持不同ID的写数据交织(interleaving)。但是,Write interleaving增加了系统总线设计的复杂度,而且很容易造成死,所以AXI4中不支持了。
这就有了一个新的概念,排序模型(ordering model)。相同ID和目的地的事务请求必须保证顺序;返回的相同ID的事务响应要与请求顺序相同。Ordering model不保证下列间的顺序:
不同主机的事务
读和写事务
不同ID的事务
到不同外设区域(peripheral regions)的事务
到不同存储空间(memory location)的事务

AXI4中除去那些重要的信号,还有一些可选信号,也可称为边带(sideband)信号。接下来简单过一下。首先是AxQOS,AXI4通过这些信号支持QOS(Quality of Service),AWQOS和ARQOS都是4bit的信号。协议里面并没有规定具体的用法,只是建议用AxQOS信号作为区分优先级使用,数值越大表示优先级越高。看到这,我们大概也明白了什么是QOS了,说白了,就是在资源有限的情况下,尽可能的保证高优先级的模块或组件获得足够的资源,比如内存带宽。举个例子就好理解了,比如去银行办业务,VIP客户的需求会被优先处理,普通客户都在拿号排队,VIP客户去了可以直接加塞儿。所以,所谓的服务质量就是优先级排队,看人下菜碟儿,哈哈。回到我们的芯片设计,还是以内存带宽为例,对于手机SoC或通用的图像GPU而言,显示接口模块显然需要稍高一些的优先级,否则打游戏时显示图像不流畅会极大的影响用户体验。不同的SoC中拥有的系统资源各不相同,需求也各不相同。对于SoC来说,QOS是一个系统问题,所以AXI协议中没有规定具体的实施,这要依赖于系统架构设计。也正是因为这样,协议规定AXI的事务排序优先于QOS排序。

另外一组信号是AWREGION和ARREGION,4bit宽度,用于支持多区域接口(multiple region interface)。AxREGION用于唯一标识多个不同的区域,提供高阶地址位的解码。区域标识符(region identifier)必须在任何4K字节的地址空间内保持不变。使用AxREGION意味着从机上的单个物理接口可以提供多个逻辑接口,每个接口在系统地址映射中具有不同的位置。从机不必支持不同逻辑接口之间的地址解码。

AXI4也提供了一组称为USER的用户自定义信号,对应5个通道,分别是AWUSER,ARUSER,WUSER,RUSER,BUSER。同样的,协议没有规定这些信号的具体用法,甚至都没规定这些信号的宽度。而且协议也不要求同时实现5个通道的USER信号。可以看出,USER信号的存在感很弱。在一些SoC设计中,可以利用USER信号来传输一些边带信息。要注意的是,如果是不同厂家的IP,在集成时千万要看好了USER信号的具体用法,很有可能不兼容,不能直连。

原文地址:https://mp.weixin.qq.com/s/K9cjczMNI3k3vtlk2uIYag

AXI协议解析(五)相关推荐

  1. AXI协议解析(四)

    来看看事务属性(Transaction Attributes),主要是对cache,buffer和memory controller的规定.按照协议,从机分为存储从机(memory slave)和外设 ...

  2. AXI协议解析(三)

    了解完通道握手的依赖关系,我们再看看传输事务的结构.首先看传输的地址结构.AXI协议是基于突发(burst)传输的.所谓突发传输,就是在一次事务中,连续地传输多个地址相邻的数据.一次突发传输中可以包含 ...

  3. AXI协议解析(二)

    前面说到AXI的五个通道是独立的,但通道间必须保持一定的约定关系: 写回复必须在一次写事务的最后一个写数据之后 读数据必须在接收到读地址信号之后 通道间握手必须满足一定的依赖关系 前两条好理解,重点看 ...

  4. AXI协议解析(一)

    AXI的全称是Advanced eXtensible Interface.在spec里面是这么自夸的: •用于高带宽和低延迟设计. •提供高频操作,无需使用复杂电桥. •协议满足各种组件的接口要求. ...

  5. AXI协议解析(六)

    有朋友提出希望讲一下AXI的原子访问(Atomic Accesses).其实这部分我在前面特意没提及,一是个人感觉这块牵扯的基本概念太多,而且晦涩难懂,二是工作中真需要用到的机会也不多.今天简单介绍一 ...

  6. AXI协议(五)-AXI-STREAM及接入思路解析

    AXI协议(五)-AXI-STREAM及接入思路解析 在本文中,你将可能学会: AXI-STREAM协议的梗概(下简称axis) 尝试编写出普通摄像头接入AXIS的思路 本来想讲完怎么接入的,由于篇幅 ...

  7. Pycharm实现645协议解析器(五)DL645协议的报文封装

    (五)Pycharm实现645协议解析器DL645协议的报文封装 目录 (五)Pycharm实现645协议解析器DL645协议的报文封装 帧结构回顾 帧报文的数据封装 (1)前导符和起始符 (2)地址 ...

  8. synopsys PCIE IP协议解析

    synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...

  9. 计算机网络实验arp协议分析,计算机网络ARP地址协议解析实验报告

    计算机网络ARP地址协议解析实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机网络实验报告.实验目的:1. 掌握ARP协议 ...

最新文章

  1. 【学习笔记】在windows下进行基于TCP的本地客户端和服务端socket通信
  2. JQuery动态循环绑定事件
  3. Ubuntu 安装Jenkins报错
  4. python怎么读发音百度翻译-用python实现百度翻译
  5. Turbo C 2.0安装及其使用
  6. UC手机浏览器(U3内核)相关文档整理
  7. Unity 游戏设计心得体会
  8. chatgpt是什么?国内能用吗?
  9. AngularJS动态加载Controller
  10. Unloaded branch node detected. “loadOptions“ prop is required to load its children.
  11. 小猫爪:i.MX RT1050学习笔记20-安全启动4-实现HAB签名和HAB加密
  12. 732. 我的日程安排表 III
  13. E - 可惜明年花更好,知与谁同? SCU - 4576
  14. 求职技能储备--软件工程师
  15. 【学习笔记17】buu [安洵杯 2019]easy_web
  16. 基于MaxScale中间件的MySQL读写分离
  17. 【产品经理】需求调研--准备工作、目的分析、调研方式
  18. GammaTone 滤波器详解
  19. 金蝶K3 SQL报表系列-供应商应付/预付账款明细表
  20. Python中的魔术方法详解

热门文章

  1. 斯坦福大学Stanza的使用
  2. jasperreport生成html,JasperReport 生成Html、Excel、Pdf文件
  3. fiddle解决ajax,AJAX in jsFiddle
  4. 爱情的背后是一片止水......
  5. Resharper设置
  6. python网上选课系统django-PyCharm
  7. php内置aes加密,PHP进行AES加密
  8. 计算机键盘最小化,笔记本最小化快捷键是哪个按键
  9. 记录RTSP通过FFmpeg+nginx发布成rtmp和http-flv
  10. anime.js 动画_Anime.js –轻量级JavaScript动画库