一部電腦最重要的部分,便是其中央處理器(Central Processing Unit或CPU),它的運行速度直接影響了電腦的整體運作效率,所以科學家在電腦發展歷史中便不斷在想辦法改善中央處理器的運行速度,研發出不同的加速技術,其中一個技術名為指令流水線(Instruction Pipeline)。

我們可以理解電腦為一部可編程的計算機,而被執行的程式便是儲存在電腦的記憶體中,一般來說,電腦運作時,它不斷從記憶體中讀取指令,翻譯指令,執行指令,存取記憶體以及更新暫存器等等,電腦執行一個指令便須完成這五個步驟,到執行下一指令時又再次重複這五個步驟。早期的電腦執行了這五個步驟的周期之後,才能開始下一個周期,跟著科學家發現,這五個步驟其實是由中央處理器五個不同的部分來執行,所以早期電腦在任何時間只能運用了五個中央處理器部分中的其中一個,其餘的四個部分則是閒置著,所以科學家便想到當電腦執行第一個指令的讀取指令後,進入翻譯指令階段時,原先讀取指令的中央處理器部分便可以執行下一個指令的讀取指令階段,這一刻,中央處理器便在執行第一指令的翻譯指令階段,第二指令的讀取指令階段,如此類推,在下一刻時,中央處理器便是在執行第一指令的執行階段,第二指令的翻譯階段,第三指令的讀取指令階段。可以想像,中央處理器以這樣的執行模式來執行記憶中的指令,便可以善用中央處理器的每一個部分,在相同時間內完成執行更多指令,亦即中央處理的效率被提高了。

以指令流水線來執行指令,帶來了另一個問題,便是指令流水線是基於電腦所執行的指令都是順序存放在電腦記憶體當中,而中央處理器則順序執行這些指令,但是在實際執行程式時,程式可能會基於邏輯運算結果而改為執行程式的另一部分,換句話說,中央處理器必須立即執行另一部分程式的指令,而預先執行原先程式下一個指令的步驟便白費了。科學家發現程式的大部分都是順序,只有小部分是會改變執行次序,所以採用指令流水線來改善中央處理器的運作速度仍是可取的,所以科學家便要解決這個因執行次序改變而令指令流水線失效的情況,其中兩個解決方法便是估計邏輯執行結果,以及同時執行兩個或以上下一個可能被執行的指令。

指令流水線給筆者的啟示,是我們在日常的生活當中所要做的事,大部由涉及多過一個步驟,例如包括預備、執行、善後等等,如果我們在任何時間只能執行其中一件事的步驟,完成後才開始下一事的步驟時,相比如果我們能在任何時間執行某件事時,能同時預先執行下一件事的首步驟,前者的工作效率便不及後者的高了。以一個實際的例子來解說,例如某個人想在假期到外國旅行,他所要做的事包括決定旅行觀光地點,申領所需簽證,購買來回機票,購買所需用品等等;如果他任何時間只做其中一件事,例如完成了決定了旅行觀光地點,才開始申領簽證,之後再購買機票,再之後購買所需用品,相比我們在未完成決定觀光地點,便開始申請將會旅遊的國家簽證,在提交申領簽證而未領取前,便開始購買機票和購買所需用品,可見後者的做法比前者的效率更高。當然,我們得留意如果決定觀光地點的結果,將會影響到埗的機場,我們便須在決定所有觀光地點前,估計將會到埗的機場以及所需衣物,並準備去購置了,又或我們亦可以預先搜集購買不同地點所需用品衣物的資料,到我們完成決定觀光地點之後,我們便可以立即去購買了。

此文章之主持/專欄作家介紹:Herbert
資訊科技界資深工作者,學生時代受蘋果二代所啟蒙,沉迷電腦科技,尤其是軟件編程,大學時代主修計算機科學,最後以獲得哲學博士作完美終結。從事資訊科技行業超過二十年,對資訊科技界充滿憧憬和好奇,至今仍在追趕各項電腦新知,盼望能以資訊科技知識,令這個世界更美好。

版權所有©2013 創動力媒體 Dynamix