參考以下這篇
如果說五階的pipeline可以增加though put, 為什麼不加深pipeline的長度, 若4-issue的super scalar可以增加效能, 為什麼不加到8-issue? 例如 50階的pipeline 和 20-issue的super scalar
我們參考下面這段指令
a = b * c;
d = a + 1;
可以看到有一個dependence, 這在computer裡是一個非常嚴重的問題, 因為processer並不能平行處理這段
當然學過CA得我們知道我們可以利用bypass來幫助解決這個問題, 但假設以乘法來說, 他可能會用上好幾個cycle去計算, 所以我們只能加上stall來等待他, 通常又稱為 bubble
當一個instruction到了execute stage, 直到下一個instruction可以執行execute stage, 這個時間差我們稱為latency(這個定義比較特別, 實際上已硬體工程師來說不會這樣寫, 詳細可以參考附件文章), 若是越深的pipeline, 可能會導致這個latency變得更差,
所以加深pipeline並不會讓增加效能, 只要一個dependence有可能會導致所有instruction 都得填上bubble
對編譯器來說, 一個整數的運算大概需要1cycle, 而一個浮點數的運算大概需要3–6 cycle
除了浮點數運算, 還有memory load的問題, 我們很難去預測他的時間, 因為memory有cache hit跟 miss的問題(在其他筆記會紀錄)