UVA690题解
更好的阅读体验,移步个人网站yanyan的小屋
UVA690题目完完全全就是流水线模拟
,给出指令的时序图,要你算出10条指令并行执行的最优流水线开销,
我在紫书上找到的这道题,刘大爷把它放在了第七章:暴力求解法
,那我们就来用暴力莽一发
怎么模拟?
不管什么流水线调度的高端算法,直接暴力模拟流水线的执行,枚举所有指令的分配情况
那么我们很容易想到: 流水线执行的最坏情况实际上就是所有指令全部串行执行
那么这个时候的开销就是
m a x d × n (1) maxd \times n \tag{1} maxd×n(1)
其中 m a x d maxd maxd为指令条数, n n n为单条指令占用的时间片长度
假设 c u r cur cur为当前放置指令的时间片标号,那么最后一条指令(也就是第10条指令)的时间片范围为
c u r ∈ [ ( m a x d − 1 ) × n , m a x d × n − 1 ] (2) cur\in[(maxd-1) \times n,maxd \times n - 1] \tag{2} cur∈[(maxd−1)×n,maxd×n−1](2)
那么我们只需要枚举遍历 [ 1 , ( m a x d − 1 ) × n ] [1,(maxd-1)\times n] [1,(maxd−