[理工] 103 台大电机丙 计组 第7题 (已解决)

楼主: angel861047 (FB不放大头贴的神经质人)   2016-09-10 22:28:25
大家好,想请问一下这题
http://i.imgur.com/f6EB6KN.png
http://i.imgur.com/XmaKnaB.png
http://i.imgur.com/uF1JEuO.png
张凡计组的书中,在第5章-‘利用管线增加效能’有提到,
可以借由循环展开来进行平行处理,所以这边我也想用一样的方法来做,
具体来说就是检查一下循环里面有没有什么data hazard和control hazard的情形发生,
我也像他题目中的范例一样,分成0、25、50、75来看,
看不出会有data hazard的问题啊@@?
这题张凡考古题给的答案是a、b、c、e
想请大家帮忙解惑一下@@。
105年的考题也有类似的题目,我也是依照这个方式去选答案的,
贴在这边给大家比较一下。
http://i.imgur.com/wCpaV3N.png
作者: kyuudonut (善良老百姓)   2016-09-11 00:07:00
题目那个只是举个例子吧 (D)只要举i=0跟i=1分别到不同的thread 就会有hazard了 都会用到 a[101]然后你看(E) 他就把相依的两个指令放在同一个for注意题目举的例(0,25,50,75) 是由compiler分配(D) 是直接丢给 4core 执行
作者: aa06697 (todo se andarà)   2016-09-11 12:38:00
题目是假设core随机使用data 若你用message passing(你可以去看一下MPI怎么实作)可以分配特定data给core执行 就可以像你所说的不会有data hazard
作者: kyuudonut (善良老百姓)   2016-09-11 13:01:00
D即使分成原po那样依然有data hazard @@
作者: aa06697 (todo se andarà)   2016-09-11 13:44:00
QQ被原po骗惹我假设他说的是对的http://i.imgur.com/Rpj8sJY.jpg给原po参考 应该要先写再读 但你分开就有可能先读再写

Links booklink

Contact Us: admin [ a t ] ucptt.com