流水线、超流水线、超标量技术对比
流水線
?????流水線技術是一種將每條指令分解為多步,并讓各步操作重疊,從而實現幾條指令并行處理的技術。程序中的指令仍是一條條順序執行,但可以預先取若干條指令,并在當前指令尚未執行完時,提前啟動后續指令的另一些操作步驟。這樣顯然可加速一段程序的運行過程。?
市場上推出的各種不同的1 6位/ 3 2位微處理器基本上都采用了流水線技術。如8 0 4 8 6和P e n t i u m均使用了6步流水線結構,流水線的6步為:?
( 1 )?取指令。C P U從高速緩存或內存中取一條指令。?
( 2 )?指令譯碼。分析指令性質。?
( 3 )?地址生成。很多指令要訪問存儲器中的操作數,操作數的地址也許在指令字中,也許要經過某些運算得到。?
( 4 )?取操作數。當指令需要操作數時,就需再訪問存儲器,對操作數尋址并讀出。?
( 5 )?執行指令。由A L U執行指令規定的操作。?
( 6 )?存儲或"寫回"結果。最后運算結果存放至某一內存單元或寫回累加器A。?
???????在理想情況下,每步需要一個時鐘周期。當流水線完全裝滿時,每個時鐘周期平均有一條指令從流水線上執行完畢,輸出結果,就像轎車從組裝線上開出來一樣。P e n t i u m、Pentium Pro和Pentium II處理器的超標量設計更是分別結合了兩條和三條獨立的指令流水線,每條流水線平均在一個時鐘周期內執行一條指令,所以它們平均一個時鐘周期分別可執行2條和3條指令。?
?????流水線技術是通過增加計算機硬件來實現的。例如要能預取指令,就需要增加取指令的硬件電路,并把取來的指令存放到指令隊列緩存器中,使M P U能同時進行取指令和分析、執行指令的操作。因此,在1 6位/3 2位微處理器中一般含有兩個算術邏輯單元A L U,一個主A L U用于執行指令,另一個A L U專用于地址生成,這樣才可使地址計算與其它操作重疊進行。
?
超流水線
??????超級流水線以增加流水線級數的方法來縮短機器周期,相同的時間內超級流水線執行了更多的機器指令。采用簡單指令以加快執行速度是所有流水線的共同特點,但超級流水線配置了多個功能部件和指令譯碼電路,采用多條流水線并行處理,還有多個寄存器端口和總線,可以同時執行多個操作,因此比普通流水線執行的更快,在一個機器周期內可以流出多條指令。
?
??????一般而言,CPU執行一條指令需要經過以下階段:取指->譯碼->地址生成->取操作數->執行->寫回,每個階段都要消耗一個時鐘周期,同時每個階段的計算結果在周期結束以前都要發送到階段之間的鎖存器上,以供下一個階段使用。所以,每個時鐘周期所消耗的時間就是由以上幾個階段中的耗時最長的那個決定的。假設耗時最長的階段耗時為s秒,那么時鐘頻率就只能設計到1/s赫茲(這里不考慮階段間信號傳遞的時間和鎖存器的反應時間)。
??????那么,要提高時鐘頻率,一種可能的方法就是減小每個階段的時間消耗。其中一種最簡單的辦法,就是將每個階段再進行細分成更小的步驟,同樣是細分后的每個階?段,單個階段的運算量小了,單位耗時s也就減少,這樣實際上就是提高了時鐘頻率。這種將標準流水線細分的技術,就是超級流水線技術。當然,流水線和超級流?水線之間并沒有很明顯的區別。這樣的技術,雖然提高了CPU的主頻,但是也帶來了很大的副作用:
??????首先,細分后的每一個階段都要在其后使用鎖存器鎖存,因此將一個階段細分為N的子階段并不能讓單位時間減少到s/N,?而是s/N + d,?其中d為鎖存器的反應時間。這實際上就是增加了多余的時間消耗。
??????其次,隨著流水線級數的加深,一旦分支預測出現錯誤,會導致CPU中大量的指令作廢,這樣的消耗是十分巨大的。
??????以上原因,也就是什么Pentium IV具有31級的流水線,指令的執行效率卻趕不上只有14級流水線的Pentium M
?
超標量
超標量(superscalar)是指在CPU中有一條以上的流水線,并且每時鐘周期內可以完成一條以上的指令,這種設計就叫超標量技術。?其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。
總結
以上是生活随笔為你收集整理的流水线、超流水线、超标量技术对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MCS-51单片机的指令时序
- 下一篇: Thumb mode 与 ARM mod