AXI之deadlock分析

article/2025/10/31 0:32:31

AXI协议相对之前的APB和AHB来说,总线性能得到了极大的提升,主要得益于outstanding这一新特性的加入,有了outstanding的支持,master可以不用等待上一笔transaction结束,就直接连续发送多笔请求,使得发送的transaction可以流水起来。但outstanding的使用也引入了一些别的传输问题,如果不加注意,就会导致总线挂死。

一、经典蝴蝶结锁

如图一所示,interconnect两端分别接两个master和两个slave,分别用M0,M1,S0,S1表示,在同一时刻,M0连续发两笔写操作,M0AW0和M0AW1,由于AXI总线支持outstanding,所以两笔命令之间只相隔一拍,M0AW0访问S1,M0AW1访问S0,由于M0-S0路径较短,M0-S1路径较长,M0AW1虽然后发,但是先到达了S0。同时M1也连续发两笔写操作,M1AW0和M1AW1,同样由于两个路径延时不同,M1AW1先到达S1,M1AW0后到达S0。这样就导致图中的结果,在S0端,先后收到M0AW1和M1AW0两笔写命令,在S1端,先后收到M1AW1和M0AW0两笔命令。

图一

http://chatgpt.dhexx.cn/article/YEsnQDor.shtml

相关文章

重复插入相同数据导致deadlock问题:Deadlock found when trying to get lock; try restarting transaction

场景: 业务逻辑:第三方登录情况下,获取到用户的实名信息。之后判断该用户在用户表中是否存在,如果不存在或非实名,那么将其实名;如果已经实名,那么不做处理,直接登录。ORM使用的是s…

fatal error: all goroutines are asleep - deadlock

如题,近两天遇到此类错误,发现goroutine以及channel的基础仍需巩固。由该错误牵引出go相关并发操作的问题,下面做一些简单的tips操作和记录。 func hello() {fmt.Println("Hello Goroutine!") } func main() {go hello() // 启动另…

死锁问题(Deadlock)

4.8 死锁问题(Deadlock) 各进程在使用系统资源时,应注意系统产生死锁问题。下面先介绍什么是死锁。 4.8.1 死锁的概念  1. 死锁的定义 所谓死锁,是指各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释…

SQL Server DeadLock 分析

1. 设置 XEvents 会话以收集死锁 1.1 扩展事件-会话-右键新建会话向导 1.2 设置会话名称 1.3 选择要捕获的事件 database_xml_deadlock_report 1.4 捕获全局字段 1.5 指定会话存储 1.6 结束 1.7 确保启动会话 2. 制造死锁 2.1 准备数据表及数据 2.1.1 准备数据库 TestBu…

MYSQL报错:MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting tr

mysql报错:MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction 报错情况:并发量大的情况对表的修改发生死锁 原因:查看了该更新语句的sql,没有设置主键,而mysq…

Deadlock的一些总结(死锁分析及处理)

1.1.1 摘要 在系统设计过程中,系统的稳定性、响应速度和读写速度至关重要,就像12306.cn那样,当然我们可以通过提高系统并发能力来提高系统性能总体性能,但在并发作用下也会出现一些问题,例如死锁。 今天的博文将着重介…

Deadlock found when trying to get lock; try restarting transaction 【MySQL死锁问题解决】

视频地址: https://www.bilibili.com/video/bv1zY411N7tB 最近在调试接口的时候遇到了MySQL死锁问题,我自己测试的时候一切都好好的,但在并发下,就死锁了 其实死锁问题,并没有一个类似“万金油”的解决办法&#xff0…

【死锁~】

死锁 死锁 死锁 1.死锁是什么? 当线程想要获取锁,但是获取失败,此时,线程进入阻塞状态,等待锁释放之后,线程获取锁。如果锁一直没有被释放,线程就一直处于阻塞状态。 2.死锁的条件 1.互斥作用:一个线程获…

Mysql报Deadlock found when trying to get lock; try restarting transaction问题解决

Mysql报Deadlock found when trying to get lock; try restarting transaction问题解决!! 文章目录 问题发生场景Mysql锁类型分析死锁原理问题排查过程问题原因解决方法经验教训查看mysql死锁日志 问题发生场景 今天记录一下最近项目中遇到的一个问题,前几天在部署项目后,在线…

死锁(Deadlock)

什么是死锁 死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,它们都将无法推进下去。 产生死锁的四个必要条件得烂熟于心 互斥条件:进程要求对所分配的资源进行排他性控制,即在一段…

知识归纳:死锁

一. 死锁定义 死锁(Deadlock)是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。 举例:毕业生找工作,公司表示只需要有工作经验才可以来;要想有工作经验,就需要…

mmall数据库学习笔记

mmall数据库学习笔记 文章目录 mmall数据库学习笔记唯一索引产品表购物车表支付信息表订单表订单明细表收货地址表外键 唯一索引 在用户表中,设置了用户名作为唯一索引,理由如下:用户名是不允许重复的,那么当不是分布式开发的时候…

MMALL ADMIN 后台管理总结

后台管理项目前期准备 1,vue-cli2 项目框架 2,下载axios插件 cnpm install axios,安装Element.ui , vue-cli2中使用scss 注意版本 cnpm install sass-loader7.1.0 --save-dev (8.0.0) v…

mmall项目安装相关包文件

2019独角兽企业重金招聘Python工程师标准>>> 本步骤之前请先:建立相关文件夹(或者从git上clone项目下来),进入分支作业目录下运行个忠包文件的安装。注意:npm是所有安装的第一步 基础安装: 1.np…

mmall电商项目学习笔记之 idea,maven工程整合ssm框架

项目目录结构 1.pom文件导入jar包 1.1 <properties><!--设置编码格式--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--sprin…

Demo_mmall v2.0 (四) Tomcat集群演进及使用Redis进行session重构实现单点登录

小谈mmall架构演进 上回书和上上回书说到redis的用法还有在代码里怎么操作Redis数据库&#xff0c;学完了得用啊。怎么用啊&#xff1f;这得从项目架构说起了。 mmall是一个简单的用SSM搭建起来的基本只能本地玩耍的电商DEMO&#xff0c;最简单的架构版本V1.0是这样婶的&#…

自学实践前后端项目4 MMall商城 2

一。搭建静态页面 1)UserController里面实现登录操作 Autowired private UserService userService;PostMapping("/login") public String login(String loginName, String password, HttpSession session){QueryWrapper wrapper new QueryWrapper();wrapper.eq(&q…

mmall用户模块

mmall用户模块 user数据表设计用户模块接口文档服务端响应对象&#xff08;ServerResponse< T>&#xff09;响应对象封装以下3个属性判断响应是否成功私有化构造函数&#xff0c;对外暴露静态方法返回所需要的响应对象&#xff0c;例如&#xff1a;响应成功响应失败 Resp…

自学实践前后端项目4 MMall商城 7

一。地址管理 1.前端改为 userAddress 2. OrderController增加两个需要的元素 3.接口 服务也加上去 4. 在OrderServiceImpl实现层判断是否为新地址再进行保存 //先判断新老地址 if (orders.getUserAddress().equals("newAddress")){//存入数据库UserAddress use…

自学实前后端践项目4 MMall商城 1

一.开发环境 1.JDK8以上Spring Boot 2.3.0ThymeleafMyBatis Plus3.3.1MySQL8.0 2.部署&#xff1a;Linux,&#xff0c;&#xff08;阿里云 腾讯云&#xff09;JDK8&#xff0c;MySQL8.0 3.部署方式&#xff1a;jar包部署&#xff0c;不需要Tomcat 二.新建工程 1&#xff0…