huahd 2008-5-1 19:03
郁闷!系统结构一道争议比较大的题目
[font=宋体]在一台单流水线多操作部件的处理机上执行下面的程序,取指令、指令译码各需要一个时钟周期,[/font][font=Times New Roman]MOVE[/font][font=宋体]、[/font][font=Times New Roman]ADD[/font][font=宋体]和[/font][font=Times New Roman]MUL[/font][font=宋体]操作分别需要[/font][font=Times New Roman]2[/font][font=宋体]个、[/font][font=Times New Roman]3[/font][font=宋体]个和[/font][font=Times New Roman]4[/font][font=宋体]个时钟周期。每个操作都在第一个周期从通用寄存器中读操作数,在最后一个时钟周期把运算结果写到通用寄存器中。[/font]
[font=Times New Roman]k: MOVE R1 , R0 ; R1 ← ( R0 )[/font]
[font=Times New Roman]k+l: MUL R0 , R2 , R1 ; R0 ← ( R2 ) x ( R1 )[/font]
[font=Times New Roman]k+2:ADD R0, R2 , R3 ; R0 ← ( R2 ) + ( R3 )[/font]
[font=Times New Roman]1.[/font][font=宋体]就程序本身而言,可能有哪几种数据相关?[/font]
[font=Times New Roman]2.[/font][font=宋体]在程序实际执行过程中,有哪几种数据相关会引起流水线停顿?[/font]
[font=Times New Roman]3.[/font][font=宋体]画出指令执行过程的流水线时空图,并计算执行完这三条指令共使用了多少个时钟周期。[/font]
[font=宋体][/font]
[font=宋体]找不到标准答案,尹朝庆的习题与解析上有此题的类似版本,但是看得我有点费解。网上不同的答案也是满天飞,大家一起讨论则个。[/font]
[font=宋体][/font]
[font=宋体]我自己先来:[/font]
[font=宋体]第一问:k与k+1关于R1的先写后读相关,关于R0的先读后写相关;k+1与k+2关于R0的写写相关。[/font]
[font=宋体]第二问和第三问我就拿不准了。:Q [/font]
[[i] 本帖最后由 huahd 于 2008-5-1 19:07 编辑 [/i]]
huahd 2008-5-1 22:56
明白一大半了!
研究了一个晚上,多数问题已经攻克。
我之前主要是没有搞明白什么叫作“单流水线多操作部件”,把它当成是一般的线性流水线了。所以总在考虑资源冲突、缓冲这一类的问题。
貌似这里的答案比较正确:
[url]http://blog.sina.com.cn/s/blog_4b8d72b5010009ii.html[/url]
但还有个小问题:为什么三条指令的发射时间要间隔一个周期?我没有间隔,结果也是9个周期,但是却多了一个写写相关引起的流水线停顿。
yuanxy2007 2008-9-1 08:26
hehe ,hao hao 努力