0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SoC常见问题 - axi deadlock

ruikundianzi 来源:IP与SoC设计 2023-12-07 09:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近多个项目并行,实在是没有时间分享了,今天在评论区看到了一个非常有意义的问题,同样也是社招,校招最常见的问题。那就是AXI协议怎么避免死锁呢?

两种死锁场景分别是乱序读和写交织,有的人更熟悉英文,那就是out of order和interleaving。下面我们分析原因。

乱序读:我们知道AXI协议支持乱序读,那么为什么能实现呢?这也是常见面试题目,那就是因为AXI(现在单指AXI3)每个通路都有相应的ID,通过请求和响应ID的一致来将打乱的顺序恢复。

现在假设M1发给S1的请求ID可以是1,2,3,M1发给S2的ID可以是3,4,5。现在M1分别发起了两组outstanding传输给S1和S2,RID是随机的,也就是ARID_S1和ARID_S2存在都是3的可能。并且如图,S1/S2响应的时间是不同的,所以也就存在S1和S2 RID=3的响应顺序是不确定的,例如M1>S2先发出ID=3的请求,长度为16,又发出M1>S1的ID=3的请求,长度为8,但是由于S2响应慢,M1会先拿到S1的响应,那么M1收到ID为3的响应时该怎么区分呢?答案是无法区分,所以这种场景会造成M1工作异常(接到全部数据的时候没有rlast信号,此时正处于S2响应的中间,并没有RLAST会导致M1认为传输错误)。具体解决方案是per slave per id,M0发起访问时,会判断已经发出去的ID,保证每个slave收到的ID是唯一的,所以我们设计axi master时也要这样,当然,我们也可以投机取巧,固定值。

想必一定有熟悉coreconsulatant和ARM NIC的同学,配置的时候有两个参数,那就是每组outstanding可以使用的ID个数,以及每个ID对应的指令个数,两者相乘就是outstanding能力,所以为了避免死锁我们会将ID个数配置为1(当然仅限第一级矩阵,也就是和自研AXI_M连接的地方,这样太暴力),这样Master就很容易区分不同slave设备的响应了,但是缺点也很明显,那就是会降低性能,不同ID的请求会被矩阵master反压,所以我们设置的需要合理。怎么算合理呢?首先如果大家看过cpu文档,会发现ID个数以及不同ID的含义是有明确定义的,所以我们配置时要考虑master的ID个数,但是master cpu访问我们时限制不了的,所以我们会在那里下手呢?那就是矩阵,需要做remap,NIC和NOC都有这种设计,实时保证ID的唯一性。

4c8d0d94-94a0-11ee-939d-92fbcf53809c.jpg

乱序读死锁常见结构

交织写:AXI3协议支持交织写,原因就是容易造成总线死锁,其实并不是交织写容易造成死锁,而是某些场景容易出现(矩阵配置不合理,或者不同路径delay分析不正确)。我们分析一下原因。

如下图,假设M1对S1地址发起多次burst传输,并且因为矩阵支持交织写,会把M1访问的顺序打乱(原因是master的数据也是由上级传递过来的,顺序可能不同)。如果不好理解的话,可以抽象将M1和M2认为是一个master,都在访问S1,矩阵的interleaving深度是>1的,也就是S1出口会将写的顺序打乱,导致waddr和wdata的顺序改变,那么结果是什么呢?那就是驴头不对马嘴,想写A1,但是数据却写到了A2地址,但是控制通路已经规定了burst长度,如果wlast出现的时候数据不够,或者多了,当然会让slave出现问题喽。

这也是为什么AXI4取消了WID的主要原因。

4c97daf8-94a0-11ee-939d-92fbcf53809c.jpg

交织写死锁常见结构

交织读为什么不容易死锁呢?

如果是M1访问S1,根本不会出现交织,这个场景安全。

如果M1同时访问S1和S2,因为矩阵延迟的不同,很有可能发生交织,但是由于ARID和RID不同,也不会造成死锁。也是安全的。

但是当然存在不安全的场景,那就是master不支持交织,矩阵支持交织,同样会导致总线异常,所以我们配置矩阵IP时,一定要充分了解所有的master设备和slave设备。主要参数如下:outstanding能力,read interleaving深度,master id宽度,master个数,slave id宽度(矩阵slave口ID宽度会受master个数影响,id一定不能截位,但是可以remap)等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • soc
    soc
    +关注

    关注

    40

    文章

    4658

    浏览量

    230588
  • MASTER
    +关注

    关注

    0

    文章

    112

    浏览量

    12267
  • AXI
    AXI
    +关注

    关注

    1

    文章

    145

    浏览量

    18057

原文标题:SoC常见问题 - axi deadlock

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Kubernetes集群运维中的常见问题和排查路径

    生产环境的Kubernetes集群运行久了,各种奇奇怪怪的问题都会冒出来。本文挑选10个日常运维中最高频的故障场景,从现象到根因到修复,手把手过一遍。每个案例都给出完整的排查路径、关键命令和验证方法,照着做能解决大部分常见问题
    的头像 发表于 05-14 10:39 343次阅读

    关于ST系列MCU使用STlink仿真烧录常见问题

    关于ST系列MCU使用STlink仿真烧录常见问题
    的头像 发表于 04-14 17:16 641次阅读
    关于ST系列MCU使用STlink仿真烧录<b class='flag-5'>常见问题</b>

    示波器常见问题解答 (FAQ)

    示波器是电子工程师不可或缺的“眼睛”,它能将看不见的电信号转化为可视的波形图像,帮助我们洞察电路的运行状态。为了帮助您更高效、安全地使用这一工具,我们整理了以下常见问题与解答。   1.
    的头像 发表于 02-02 18:21 767次阅读
    示波器<b class='flag-5'>常见问题</b>解答 (FAQ)

    CW32系统有哪些常见问题

    在CW32系统中,可能会遇到一些常见问题,包括但不限于: 重复定义函数:例如在a.c里定义了函数void func(),在b.c里也定义了一个void func()。这会导致编译时出现错误,需要
    发表于 12-15 06:47

    利用开源uart2axi4实现串口访问axi总线

    microblaze和jtag-to-axi(jtag2axi)虽然也提供了访问axi总线的能力,但是依赖于xilinx平台。而uart-to-axi(uart2
    的头像 发表于 12-02 10:05 2354次阅读
    利用开源uart2<b class='flag-5'>axi</b>4实现串口访问<b class='flag-5'>axi</b>总线

    利用蜂鸟E203搭建SoC【1】——AXI总线的配置与板级验证

    融合进BD设计流程,第一步需要对其总线进行配置以便于后续的SoC搭建。 蜂鸟e203内部使用的是icb总线,这种总线协议与AXI类似,都采用了握手信号进行传输,相对易于转换;此外,在蜂鸟提供的rtl
    发表于 10-30 07:35

    人脸识别和AES加密协同的SOC设计架构

    这个是我们整体的架构图。我们SOC主要包括了三个模块组,计算核心组,系统外设组,数据外设组。计算核心组包括了RISCV内核,RISCV内核中集成了一个ITCM和DTCM的指令存储器和数据存储器。另外
    发表于 10-29 08:21

    AXI GPIO扩展e203 IO口简介

    读写寄存器、设置中断等。 AXI-GPIO广泛应用于FPGA和SoC系统中,可以用于控制外部设备、实现状态检测、进行通信协议等。AXI-GPIO的灵活性和可靠性使其成为嵌入式系统开发中的重要外设IP
    发表于 10-22 08:14

    ZYNQ UltraScalePlus RFSOC QSPI Flash固化常见问题说明

    璞致 ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
    发表于 08-08 15:49 0次下载

    PCBA代工避坑指南:常见问题+解决方案全解析

    一站式PCBA加工厂家今天为大家讲讲PCBA代工代购元器件常见问题有哪些?PCBA代工代购元器件常见问题及解决方案。随着科技的不断发展和市场需求的变化,越来越多的企业选择通过外包方式进行PCBA生产
    的头像 发表于 07-09 09:38 1084次阅读

    新能源汽车线束气密性检测仪的常见问题有哪些?

    新能源汽车线束气密性检测仪在检测过程中可能会遇到一些常见问题,这些问题可能源于设备本身、操作过程、被测线束或测试环境等多个方面。以下是对这些常见问题的归纳:一、设备故障显示屏问题:黑屏:可能是电源
    的头像 发表于 06-27 11:08 798次阅读
    新能源汽车线束气密性检测仪的<b class='flag-5'>常见问题</b>有哪些?

    RDMA简介8之AXI分析

    AXI4 总线是第四代 AXI 总线,其定义了三种总线接口,分别为:AXI4、AXI4-Lite 和 AXI4-Stream接口。其中
    的头像 发表于 06-24 23:22 832次阅读
    RDMA简介8之<b class='flag-5'>AXI</b>分析

    NVMe IP之AXI4总线分析

    1AXI4总线协议 AXI4总线协议是由ARM公司提出的一种片内总线协议 ,旨在实现SOC中各模块之间的高效可靠的数据传输和管理。AXI4协议具有高性能、高吞吐量和低延迟等优点,在
    发表于 06-02 23:05

    薄膜电弱点测试仪的常见问题及解决方案

    薄膜电弱点测试仪在薄膜生产、质检等环节起着关键作用,用于检测薄膜存在的针孔、裂纹等电弱点缺陷。然而在实际使用过程中,可能会遇到各种问题影响检测效率与准确性。以下为薄膜电弱点测试仪常见问题及对应
    的头像 发表于 05-29 13:26 927次阅读
    薄膜电弱点测试仪的<b class='flag-5'>常见问题</b>及解决方案

    AMD Versal Adaptive SoC Clock Wizard AXI DRP示例

    本文将使用 Clocking Wizard 文档 PG321 中的“通过 AXI4-Lite 进行动态重配置的示例”章节作为参考。
    的头像 发表于 05-27 10:42 1389次阅读
    AMD Versal Adaptive <b class='flag-5'>SoC</b> Clock Wizard <b class='flag-5'>AXI</b> DRP示例