注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 网工人才缺口大 传统网管..
 帮助

Computer Archiecture 3rd Edition 读书笔记(1)-Tomasulo算法


2007-11-28 18:54:57
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wenbodai.blog.51cto.com/267289/52629
1.书中P121提到Tomasulo算法对记分板技术做了较大的改进,可以较好消除W-W冲突和R-W冲突。那么这些技术是什么呢?答案:是寄存器重命名(依赖于保留站)、W-W冲突时只允许后面的那条指令执行写操作。那具体是如何实现的?
2.P123 “通过有效地址的计算,读数和写数都得以保留源程序的执行顺序,从而避免了访问内存的冲突”
在P129有较详细的讲解,可是没看懂……(待解决)

为了解释如何消除W-W冲突和R-W冲突造成的停顿,结合P127的图3.5,考虑如下代码段:
(
图3.5中有错误:
“动作或记录工作”列 第14行: RS[r].Qk ← RegisterStat[rs].Qi 应为 RS[r].Qk ← RegisterStat[rt].Qi
“动作或记录工作”列 倒数第6行: RS[x].Q
i 0 应为 RS[x].Qj 0
    这些应该是印刷错误吧,工艺啊……
)


(1) DIV.D F2, F1, F3
(2) ADD.D F5, F2, F4
(3) MUL.D F6, F3, F2
(4) ADD.D F2, F1, F4

(1)与(2)、(1)与(3)之间存在W-R冲突,为真数据相关。
(1)与(4)之间存在存在W-W冲突,为输出相关。
(2)与(4)、(3)与(4)之间存在W-R冲突,为反相关。

让我们来看看Tomasulo算法是如何解决这些冲突的:

(1)发射之后的寄存器状态表

  F2
 QiMUL1
(因为: RegisterStat[rd].Qi = r)

(2)、(3)发射之后的保留站表:
 BusyOp Vj Vk Qj Qk
 A 
 ADD1
ADD.D  Regs[F4]
MUL1     
 MUL2
MUL.D
Regs[F3]

 MUL1
 
(因为:if(RegisterStat[rs].Qi 0)RS[r].QjRegisterStat[rs].Qi
       else RS[r].VjRegs[rs], RS[r].Qj0)

(4)发射之后的寄存器状态表

  F2
 QiADD2 
(因为:
RegisterStat[rd].Qi = r。
而在写结果时有:∨x(if(RegisterStat[x].Qi = r) {Regs[x]result; RegisterStat[x].Qi0});

由此使得W-W冲突时只有后面那条指令执行了写操作,解决了W-W冲突。
这时你可能要问了,如果(4)先于(1)完成,对F2写入了值,此时(2)、(3)还未执行,它们执行时读到的F2是否是正确值呢?注意一下(2)、(3)发射后保留站表中的Qi、Qk项,然后继续往下看,看看Tomaluso是如何实现寄存器重命名的。)

(4)执行完成、写回结果后,
寄存器状态表
  F2
 Qi
(
因为:∨x(if(RegisterStat[x].Qi = r) {Regs[x]result; RegisterStat[x].Qi0});
故此时F2中的值已经为(4)的结果,是正确的)

(1)执行完成、写回结果后(其实(1)的结果并未写回,因为此时RegiterStat[F2].Qi = 0),
保留站表:
 BusyOp Vj Vk Qj Qk
 A 
 ADD1
ADD.D result
Regs[F4]
     
 MUL2
MUL.D
Regs[F3]
result
 
 
(因为:∨x(if(RS[x].Qj = r) {RS[x].Vjresult; RS[x].Qj0};
由此(2)、(3)虽然在(4)写回结果后才读到操作数,但读到的操作数是从保留站MUL1中通过CDB得到的,而不是从F2中去读,这就是寄存器重命名啦,也解决了R-W冲突)



本文出自 “Wenbo_Dai's_Tech_Blog” 博客,请务必保留此出处http://wenbodai.blog.51cto.com/267289/52629





    文章评论
 
2007-11-28 22:05:38
研究研究
有些好难

2007-11-29 16:09:38
    局域网的服务器.系统是windows2000
    用IE打开localhost:8080
   
      提示:输入网络密码
      站点 : localhost
      领域 :XDB
      用户名:
      密码:
      为什么 ????求解决办法.

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: