GEM5 Garnet官方教程:乔治亚理工课程-L05 L06 deadlocks 死锁

简介

本文是乔治亚理工公开课程Interconnection Networks (Spring 2017)的教程,共有7个主题13堂课加上4个lab,目录在最后的部分。这里是第5 第6堂课 deadlocks 死锁的部分。

关于死锁

死锁是什么

在这里插入图片描述
在这里插入图片描述

死锁发生的条件

在这里插入图片描述

死锁的处理

在这里插入图片描述

避免死锁

在这里插入图片描述
在这里插入图片描述

x-y路由

非常经典的x-y路由,避免了构成一个圈。
本质是避免自己成为等待/依赖的一部分。在x-yrouting中,按xymodel的第二个图,永远在等待 右下角的 资源或者左上角的资源。举个例子,如果是最左上角的节点要等待资源,哪怕他一直在等他自己的右下节点,上一个节点也在等上一个节点自己的右下节点,他会一直等待到最右下角的节点,而不用担心等待自己。也就是不会出现衔尾蛇的情况,只要自己不在自己需要等待的节点中,就避免死锁。
在这里插入图片描述

West-First 等 路由

在这里插入图片描述

不是任意的两条路径都行

如果会成环,就不行,例如下图。

在这里插入图片描述

Channel Dependency Graph (CDG)

在这里插入图片描述
这个部分个人感觉对gem5 garnet等研究不是很有必要,就跳过了。当然,有兴趣还是可以去读的,打好基础。

死锁避免的实现方法

在这里插入图片描述

Virtual channels

这里挺有意思的一个点是,所有的virtual channel,都是再一个class内传递的,也就是channel 0 和channel1 平时不互通,只在dateline互通一次。
在这里插入图片描述

而我读的一些vc的用法,随时都在跳channel。后面可以再研究研究细节,是这个乔治亚的课程简化了,还是后面vc 一开始是这样,后面进化了。

vc用于防止死锁

在这里插入图片描述

vc 的占用

在这里插入图片描述
”而我读的一些vc的用法,随时都在跳channel。后面可以再研究研究细节,是这个乔治亚的课程简化了,还是后面vc 一开始是这样,后面进化了。“ 这里的问题得到了解答,如果vc的buffer全部channel都复用,那就随时随地可以当dateline,跳转不同的vc channel。同时这里会跳出一个新问题,deadlockavoidance 就不成立了。

下面就讲了如何通过一个escape vc。(或者,可以通过简单的x-yrouting。ppt里没提,但是很多文章实践中这么用)

escape vc 用于多vc共用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

flow control 用于防止死锁

在这里插入图片描述
在这里插入图片描述

死锁恢复

主要还是通过避免,死锁后恢复只有一两个ppt。
在这里插入图片描述
在这里插入图片描述

vn的需要:防止request和response 死锁

network is deadlock-free的时候 会有 Protocol Deadlock 可以解释为什么需要两个vn。实践上我常看到两个vn,之前也在思考为什么需要这个,因为物理的link是只有一个的,两个vn有什么好处呢?避免互相为源点和目的点的时候,response发不出去。
当然,还有一个选项,是简化以后的traffic pattern,就是两个不互为源点。比如,只有60个节点是运算节点发request,而4个节点是mem节点 只发response,这样 network is deadlock-free的时候,也会protocol deadlock -free。
在这里插入图片描述

总结

关于死锁的部分,了解了课程级别的基础知识。 实践中,如果是用于gem5 ruby garnet的延伸研究,可能知道常用的x-y routing就已经够了。

目录

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值