讲个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内实现读请求永远优先于写请求的机制模式。

相关推荐
xcLeigh21 小时前
把CPU、内存、网络流量同时丢给TimechoAI,做交叉分析
数据库·内存·时序数据库·cpu·网络流量·timechoai·交叉分析
spencer_tseng2 天前
[OceanBase-Desktop-Setup-1.0.0.exe] CPU virtualization is not enabled
oceanbase·cpu·virtualization
J_bean11 天前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
UWA20 天前
隐藏视频变“常驻刺客”,VideoPlayer与“N/A”纹理该怎么查
人工智能·性能优化·音视频·memory·cpu·游戏开发
刘贵庆22 天前
2026年8月孩子上大学应该买什么样的电脑?学习够用?什么电脑性价比高?【电脑推荐】
电脑·笔记本电脑·cpu·大学·上大学·游戏本
j7~23 天前
【Linux】二十七.线程篇四《Linux多线程编程:线程互斥(互斥量的底层到封装)、线程安全和冲入、死锁》---详解
linux·开发语言·c++·线程安全·死锁·线程互斥·重入
黑科技在线23 天前
Intel i5和i7处理器哪个好?电脑装机CPU选择对比指南
电脑·cpu
同勉共进1 个月前
记一例 vibe coding + gcc bug 导致的线程池死锁问题
c++·线程池·gcc·死锁·vibe coding
是个西兰花1 个月前
Linux:死锁与生产者消费者模型解析
linux·运维·服务器·c++·死锁·生产者消费者模型
AI人工智能+电脑小能手1 个月前
【大白话说Java面试题 第172题】【07_Redis篇】第8题:`setnx` 做分布式锁存在的问题
java·redis·分布式锁·死锁·setnx