※ 引述《sate1128 (小夯夯)》之铭言:
: 我最近在做题目的时候有个疑问
: Branch在ID判断时
: 要和前面的R-type空一格 lw空两格
: 但是详细来看的话空的那个stall应该放在哪?
: 我举一个例子:
: add后接bne 接下来bne predict 错误
: 我的想法是branch的stall接在它的IF之后
: http://i.imgur.com/Lsm84Xw.jpg
: 如此一来bne的ID有在add的EX后 拿到正确的值
: 之后的add(correct)的IF也接在bne的ID后 也很合理
: 但是有些题目好像把stall放在branch的ID后
: http://i.imgur.com/IV611EN.jpg
: 这样add的EX的结果没办法给bne做判断啊?
: 难道bne在stall还可以拿add的结果做运算?
: 但是这样就没有stall吧(暂停)
: 后面的add(correct)这样接也蛮诡异
: 请问各位哪种才是对的?
: 如果是下面那种该怎么解释?
想问最后Ken大你画的那张图,为什么第五个指令add 是从第九个cycle开始IF, 不是从第
18个cycle呀?同理还有最后一个指令add 为什么是从cycle14 , 不是从cycle 13呢?
另外如果像答案(第(2)小题)所说的stall cycle 是 c4,c7,c8,c13, 那么total number of cycles 不
应该是(5-1)+8+1+2+1+1=16 吗?为什么后面还要+两个1 呢?
以上疑问