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
    +关注

    关注

    38

    文章

    4112

    浏览量

    217824
  • MASTER
    +关注

    关注

    0

    文章

    103

    浏览量

    11253
  • AXI
    AXI
    +关注

    关注

    1

    文章

    127

    浏览量

    16581

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

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

收藏 人收藏

    评论

    相关推荐

    soc开发流程常见问题及解决方案

    SOC(System on a Chip,系统级芯片)开发流程中常见问题及解决方案主要包括以下几个方面: 一、环境问题 常见问题 : 开发环境配置复杂,新手难以快速上手。 依赖项缺失或版本不兼容
    的头像 发表于 11-10 09:26 257次阅读

    Keystone EDMA常见问题解答

    电子发烧友网站提供《Keystone EDMA常见问题解答.pdf》资料免费下载
    发表于 10-11 10:43 0次下载
    Keystone EDMA<b class='flag-5'>常见问题</b>解答

    Keystone NDK常见问题解答

    电子发烧友网站提供《Keystone NDK常见问题解答.pdf》资料免费下载
    发表于 10-11 10:41 0次下载
    Keystone NDK<b class='flag-5'>常见问题</b>解答

    KeyStone设备的PCI Express (PCle)常见问题

    电子发烧友网站提供《KeyStone设备的PCI Express (PCle)常见问题.pdf》资料免费下载
    发表于 10-11 10:21 0次下载
    KeyStone设备的PCI Express (PCle)<b class='flag-5'>常见问题</b>

    TVP5146常见问题

    电子发烧友网站提供《TVP5146常见问题.pdf》资料免费下载
    发表于 09-30 09:46 0次下载
    TVP5146<b class='flag-5'>常见问题</b>

    TFPxxx常见问题解答

    电子发烧友网站提供《TFPxxx常见问题解答.pdf》资料免费下载
    发表于 09-29 09:56 0次下载
    TFPxxx<b class='flag-5'>常见问题</b>解答

    驱动芯片在应用中的常见问题分析与解决

    电子发烧友网站提供《驱动芯片在应用中的常见问题分析与解决.pdf》资料免费下载
    发表于 09-10 10:48 0次下载
    驱动芯片在应用中的<b class='flag-5'>常见问题</b>分析与解决

    TMP LM 75比较常见问题解答

    电子发烧友网站提供《TMP LM 75比较常见问题解答.pdf》资料免费下载
    发表于 08-30 11:40 0次下载
    TMP LM 75比较<b class='flag-5'>常见问题</b>解答

    PCB设计中的常见问题有哪些?

    一站式PCBA智造厂家今天为大家讲讲PCB设计中的常见问题有哪些?PCB设计布局时容易出现的五大常见问题。在电子产品的开发过程中,PCB(Printed Circuit Board,印刷电路
    的头像 发表于 05-23 09:13 730次阅读
    PCB设计中的<b class='flag-5'>常见问题</b>有哪些?

    SoC设计中总线协议AXI4与AXI3的主要区别详解

    AXI4和AXI3是高级扩展接口(Advanced eXtensible Interface)的两个不同版本,它们都是用于SoC(System on Chip)设计中的总线协议,用于处理器和其它外设之间的高速数据传输。
    的头像 发表于 05-10 11:29 5906次阅读
    <b class='flag-5'>SoC</b>设计中总线协议<b class='flag-5'>AXI</b>4与<b class='flag-5'>AXI</b>3的主要区别详解

    Ubuntu系统常见问题及解答

    今天小编为大家总结了Ubuntu系统常见问题的解决方法,便于收藏和查阅,大家快快码住哦~
    的头像 发表于 04-19 12:29 953次阅读
    Ubuntu系统<b class='flag-5'>常见问题</b>及解答

    步进电机常见问题及维护

          步进电机是一种将电脉冲信号转换为角位移或线位移的开环控制元件,广泛应用于各种自动化设备和系统中。然而,在使用过程中,步进电机也会遇到一些常见问题,需要进行适当的维护。本文将介绍步进电机
    的头像 发表于 03-17 08:36 794次阅读
    步进电机<b class='flag-5'>常见问题</b>及维护

    PCB金手指设计的常见问题和解决方案

    PCB金手指设计的常见问题和解决方案
    的头像 发表于 12-25 10:09 2053次阅读

    CLOCK常见问题解答

    电子发烧友网站提供《CLOCK常见问题解答.pdf》资料免费下载
    发表于 11-23 10:23 0次下载
    CLOCK<b class='flag-5'>常见问题</b>解答

    C语言的常见问题

    电子发烧友网站提供《C语言的常见问题集.pdf》资料免费下载
    发表于 11-18 10:29 0次下载
    C语言的<b class='flag-5'>常见问题</b>集