Ordering model

​AXI的控制和数据通道分离,可以带来很多好处。地址和控制信息相对数据的相位独立,可以先发地址,然后再是数据,这样自然而然的支持显著操作,也就是 outstanding 操作。Master访问slave的时候,可以不等需要的操作完成,就发出下一个操作。这样,可以让slave在控制流的处理上流水起来,达到提速的作 用。同时对于master,也许需要对不同的地址和slave就行访问,所以可以对不同的slave 连续操作。而这样的操作,由于slave 返回数据的先后可能不按照master 发出控制的先后进行,导致出现了乱序操作(out of order )。

先看下ordering model​的几个概念:​

Outstanding

: The ability to issue multiple outstanding addresses means that masters can issue transaction addresses without waiting for earlier transactions to complete. This featurecan improve system performance because it enables parallel processing of transactions.

​​发出A11的addr后,在完成D11~D14的transfer之前,发出A21叫做outstanding。

Out-of-order : The ability to complete transactions out of order means that transactions to faster memory regions can complete without waiting for earlier transactions to slower memory regions. This feature can also improve system performance because it reducesthe effect of transaction latency.

地址的顺序是A11,A21,A31,而数据顺序则可能是D2?,D3?,D1?,这个过程叫做Out-of-order

Interleaving:  Write data interleaving enables a slave interface to accept interleaved write data withdifferent AWID values. The slave declares a write data interleaving depth that indicatesif the interface can accept interleaved write data from sources with different AWIDvalues.

​D11和D12之间插入D23,叫做interleaving。

简单而言,outsatanding是对地址而言,一次burst还没结束,就可以发送下一相地址。而out-of-order和interleaving则是相对于 transaction,out-of-order说的是发送transaction​和接收的cmd之间的顺序没有关系,如先接到A的cmd,再接到B的cmd,则可以先发B的data,再发A的data;interleaving指的是A的data和B的data可以交错,如A1 B1 A2 B2 B3……

举个例子,从master和slave两个角色分别来看:

对于AXI master,先看写操作。如果分别发出WCMD1和WCMD2两个写命令给两个不同的slave,假设这两个写命令都是四拍的数据分别记为WDATA1_0,WDATA1_1,WDATA1_2,WDATA1_3,以及WDATA2_0,WDATA2_1,WDATA2_2,WDATA2_3。如果master在自己的写数据总线上,依次发出WDATA2_0,WDATA2_1,WDATA2_2,WDATA2_3,WDATA1_0,WDATA1_1,WDATA1_2,WDATA1_3,这就叫写out of order;如果master在自己的写数据总线上,依次发出WDATA2_0,WDATA1_0,WDATA2_1,WDATA1_1,WDATA2_2,WDATA2_3,WDATA1_2,WDATA1_3,这就叫写out of order且interleave;注意,不论是out of order还是interleave,同一个命令对应的四拍数据在内部必须是顺序的,不能乱序。比如,不允许出现WDATA2_1,WDATA1_0,WDATA2_0,WDATA1_1,WDATA2_2,WDATA2_3,WDATA1_2,WDATA1_3这样的。显然,你自己设计master时,如果是写操作,你不会主动发出out of oder和interleave的操作,因为这个明显增加了复杂度且没带来master自己的效率提高。再看master读,同样发出RCMD1和RCMD2两个读命令给不同的slave,由于不同slave的响应速度不同,就可能出现RCMD2对应的读数据先返回到master的情况;再考虑到复杂系统的总线设计,master依次接收到RDATA2_0,RDATA1_0,RDATA1_1,RDATA1_2,RDATA2_1,RDATA2_2,RDATA1_3,RDATA2_3这样的数据是有可能的,这就是读的out of order且interleave。所以,对于master,不建议发出out of order与interleave的写数据,但是必须支持out of order与interleave的读操作!同理,可以分析,对于slave,必须支持out of order与interleave的写操作,不建议返回out of order与interleave的读数据。在一个系统中,interleave会明显增加设计复杂度,其实可以约定master,slave以及连接总线都不要使用interleave,(另外可以配置depth ==1,达到不支持interleaving的目的)这样可以降低复杂度,但out of order是AXI特性,这个功能必须支持。

outstanding and out-of-order相关推荐

  1. laravel order 按时间升序_Cache and Related Part3: Coherence amp; Order

    (图来自 CMU 15-418 Spring 2020 和 CS152) 当我们涉及多核的时候,我们的多个核可能会共享一份内存: 单个变量的访问可能会有问题: 我们访问 memory, 可能在直觉上会 ...

  2. 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  3. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  4. Mysql分页order by数据错乱重复

    公司用的是Mybatis,发现分页和排序时直接传递参数占位符用的都是 ,由于,由于,由于有SQL注入风险,要改为#,但是封装page类又麻烦,所以直接使用了 pageHelper 插件了,方便快捷,但 ...

  5. select 和 order by

    select 的优先级要高于order by,相当于是select先创建了一个临时表,再通过临时表去排序.所以,对于一些sum()的汇总,在进行排序,实际是排序的select后的字段,而不是表里的那个 ...

  6. access order by 判断是否除数为0

    order by IIF(dz>0,yj/dz,0) desc 转载于:https://www.cnblogs.com/slyzly/p/5379482.html

  7. PL/SQL第五章 Order by排序

    1 -- 排序 2 -- 1.列明排序 3 -- 2.别名排序 4 -- 3.列位置排序(当使用union,union all,intersect,minus集合操作,列明不同,但希望排序) 5 SE ...

  8. TOP语句与Order By语句

    默认情况下,如果在子查询,函数,视图中尝试去使用ORDER BY, CREATE VIEW dbo.VSortedOrders ASSELECT orderid, customerid FROM db ...

  9. SQL基础学习总结:5(HAVING子句的使用ORDER BY排序子句的使用)

    为聚合结果指定条件 HAVING子句 HAVING子句可以让我们筛选分组之后的各种数据,其语法结构如下: SELECT <列名1>,<列名2>,<列名3> FROM ...

最新文章

  1. 19_05_01校内训练[划分]
  2. 2022-01-17
  3. 数据有了,如何构建数据资产?
  4. Python 的装饰器执行顺序问题(二)
  5. python菜谱发送到邮箱_Python菜谱5:发送带附件的邮件
  6. java arcgis server_ArcGIS Server Java 开发实战---自定义command
  7. JVM虚拟机-Class文件之字段表集合
  8. 源码:Hadoop-2.7.4 启动过程中执行start-all.sh开始
  9. 开发人员学Linux(13):CentOS7安装配置IT设备监控系统Zabbix
  10. ORACLE 11G DATAGUARD 日志中断处理方案
  11. 老男孩大趴会笔记分享
  12. Django修改model如何同步数据库
  13. VSS2005 使用方法
  14. trend函数用oracle实现,Excel函数TREND函数的用法
  15. Redis入门指南(第2版) - 电子书下载 -(百度网盘 高清版PDF格式)
  16. 。。。。看毛片算法_(:з」∠)_ /FZU - 2275
  17. window10 删除桌面删除不掉的ie图标(快捷方式)
  18. 矩阵的生成及对角线运算
  19. 【无标题】人工智能的定义
  20. Linux 字体微调 - windows 效果版

热门文章

  1. 分享常用的编程工具,让你做到事半功倍
  2. 使用虚拟机安装linux系统(不使用hyper-V)并部署mysql
  3. taobao.trade.memo.update淘宝店铺订单交易备注修改接口(店铺订单插旗接口,店铺订单交易接口,店铺订单明文接口,店铺订单解密接口)代码对接教程
  4. commandos 系列
  5. ActiveX控件注册问题
  6. 2021年安全员-B证(广西省-2021版)考试报名及安全员-B证(广西省-2021版)免费试题
  7. 9-2、gets和puts
  8. 【云星数据---mesos实战系列002】:mesos全分布式部署实战008--配置mesos-master和marathon的高可用
  9. vscode设置默认自动换行方法步骤
  10. FastDFS服务器数据迁移