Perfomance 與 ExecTime 為反比關係。
其關係式為：
任何部份因素都無法斷定系統的效能好壞，因此：
提高時脈 Increase Clock Rate 2. 改變某些部份以降低 CPI 3. 以 Compiler 進行最佳化，降低總指令數，或使平均 CPI 降低。
對一個指令而言，為了要在其他四個階段也都能夠讀取到指令本身的內容，於第 一個階段讀取 Instruction Memory 所得之值必定要存於某個暫存器之中。而每 一個 stage 也都有此需求。是故，在 pipeline datapath 上之 stage 分界處 必定要擺放若干長度的暫存器，即稱為「Pipeline Register」。
Pipeline Hazard 有三種：
由於部份功能單元沒有管線化，或是所需之資源沒有複製足夠多份，使oCPU 無 法支援某些次序指令的執行。
發生在會修改 Program Counter 的指令（Jump/Branch/else） 是最影響效能的 Hazard。解決方法有四種：
在連續數個指令都存取同一個暫存器時可能會發生的 Race Condition。會造成 執行時 read/write 指令的順序與在組語之中的順序不同。Data Hazard 又分為 RAW, WAW, WAR 三種，其中以 RAW 最為常見，又，在 Pipeline stage 長度恆 定的情況之下，很少會發 WAW 與 WAR data hazard。唯一的解決方式是 Forwarding，可是即是 Forwarding 也無法完全不 stall pipeline 就解決問題。
現假設有兩個指令 i 與 j ，且 i 在 j 之前執行。假設 Pipeline 為 MIPS : IF, ID, ALU, MEM ,WB。
假設 i 與 j 之指令如下：
i 將新的值寫入 R1 ， 所以 j 應當要讀取到 i 剛剛所寫入的新值才行。 但若將 Pipeline 排起來看：
會發現 i 之寫入是在時間點 5 的地方， j 之讀取是在時間點 3 的地方。因 此 ``j 的讀取會比 i 的寫入先被執行到''。如此一來，j 所讀到的 R1 其實不 是 i 所寫入的值。
MEM2 與 WB 是在同一個時刻進行的。如果 WB 之動作在前半進行，而 MEM2 在 後半進行，那麼 R2 便會先被寫入新的值，SW 所參考到的記憶體位址便會是錯 誤的位址。
j 的 WB 在時刻 5 ，而 i 的 WB 在時刻 6，所以最後 R1 的值會是 i 指令所 寫入的。
此為程序 P[i] 所用之 Pseudo code。