讲个AXI死锁场景

分享个AXI死锁场景,如下图所示,假如Master是CPU,Slave是AXI转AHB的桥。

Master往下游发起两笔读操作,每一笔都是读完整的cache line数据,但内部只有一个read buffer来存储返回的数据,大小为1个cache line。因此Master必须先缓存R1的数据,然后再缓存R2的数据,所以Master暂时不接收R2的数据了。

Master 在收到R1的数据并放到read buffer后,会先拉低Rready信号,等到read buffer的数据放到cache中对应的set/way位置后,再拉高Rready信号,表示read buffer可以继续接收数据。但由于要放入的set/way是dirty数据,所以Master需要先把set/way原先的数据写回下游,所以master发起了W1写操作。

W1写请求被slave收到后,发现前面R2的操作还没有完成,因为R2的数据还没有被Master收下,这样W1也就无法完成了。

这样一个死锁环就形成了。Read buffer中的R1需要CPU cache腾出某set/way的空间->CPU cache在腾该set/way的写操作无法被slave接收->slave之所以不接收,是因为slave发现R2还没有做完->R2之所以没有做完,是因为CPU master无法接收R2的数据了->CPU master之所以无法接收新数据,是因为read buffer被R1占据了。

那么这种死锁环可以怎么验证出来呢?

常见的方式是在Slave测挂的AXI slave VIP去测Master CPU时,要在AXI slave VIP内实现读请求永远优先于写请求的机制模式。

相关推荐
Mistra丶2 天前
记一次 JVM+Postgresql的 “死锁” 问题排查
jvm·数据库·postgresql·死锁
放逐者-保持本心,方可放逐5 天前
地图 热力图核心封装
javascript·cpu·gpu·热力图·cesium·核心渲染判断·渲染管线优化
John_ToDebug5 天前
WaitableEvent 跨线程等待的死锁陷阱
windows·笔记·死锁
HyperAI超神经5 天前
AI驱动量子精修,卡内基梅隆大学等提出AQuaRef,首次用量子力学约束精修蛋白质全原子模型
人工智能·深度学习·机器学习·架构·机器人·cpu·量子计算
HyperAI超神经5 天前
基于2.5万临床数据,斯坦福大学发布首个原生3D腹部CT视觉语言模型,Merlin在752类任务中全面领先
人工智能·深度学习·神经网络·机器学习·3d·语言模型·cpu
HyperAI超神经10 天前
物理信息机器学习新突破!新型GNN架构可对复杂多体动力系统进行准确预测,赋能机器人/航空航天/材料科学
人工智能·深度学习·机器学习·架构·机器人·cpu·物理
认真的柯南11 天前
关于在 Kubernetes 环境中停止使用 CPU 限制的分析与建议
容器·kubernetes·cpu
爱吃橘子橙子柚子14 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
@insist1231 个月前
软考-软件设计师-计算机系统硬件基础与 CPU 核心构成
软考·cpu·软件设计师·寄存器
西门吹雪分身1 个月前
JUC之可重入锁
java·juc·死锁·公平锁·非公平锁