[轉]流水線、超流水線、超標量技術對比


原文:http://blog.csdn.net/do2jiang/article/details/4545889

 

流水線

     流水線技術是一種將每條指令分解為多步,並讓各步操作重疊,從而實現幾條指令並行處理的技術。程序中的指令仍是一條條順序執行,但可以預先取若干條指令,並在當前指令尚未執行完時,提前啟動后續指令的另一些操作步驟。這樣顯然可加速一段程序的運行過程。 
市場上推出的各種不同的1 6/ 3 2位微處理器基本上都采用了流水線技術。如8 0 4 8 6P 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 mPentium ProPentium 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中有一條以上的流水線,並且每時鍾周期內可以完成一條以上的指令,這種設計就叫超標量技術。 其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。

 

 

 

 

 

 

原文:http://www.wlline.cn/wenda/318.html

 

超級流水線
超級流水線(SuperPipeline)又叫做深度流水線,它是提高cpu速度通常采取的一種技術。CPU處理指令是通過Clock來驅動的,每個clock完成一級流水線操作。

      超級流水線(SuperPipeline)又叫做深度流水線,它是提高cpu速度通常采取的一種技術。CPU處理指令是通過Clock來驅動的,每個clock完成一級流水線操作。每個周期所做的操作越少,需要的時間久越短,時間越短,頻率就可以提得越高。超級流水線就是將cpu處理指令是得操作進一步細分,增加流水線級數來提高頻率。頻率高了,當流水線開足馬力運行時平均每個周期完成一條指令(單發射情況下),這樣cpu處理得速度久提高了。當然,這是理想情況下,一般是流水線級數越多,重疊執行的執行就越多,那么發生競爭沖突得可能性就越大,對流水線性能有一定影響現在很多cpu都是將超標量和超級流水線技術一起使用,例如pentiumIV,流水線達到20級,頻率最快已經超過3GHZ。教科書上用於教學的經典MIPS只有5級流水。

超標量

將一條指令分成若干個周期處理以達到多條指令重疊處理,從而提高cpu部件利用率的技術叫做標量流水技術。超級標量是指cpu內一般能有多條流水線,這些流水線能夠並行處理。在單流水線結構中,指令雖然能夠重疊執行,但仍然是順序的,每個周期只能發射(issue)或退休(retire)一條指令。超級標量結構的cpu支持指令級並行,每個周期可以發射多條指令(2-4條居多)。可以使得cpu的IPC(InstructionPerClock)>,從而提高cpu處理速度。超級標量機能同時對若干條指令進行譯碼,將可以並行執行的指令送往不同的執行部件,在程序運行期間,由硬件(通常是狀態記錄部件和調度部件)來完成指令調度。超級標量機主要是借助硬件資源重復(例如有兩套譯碼器和ALU等)來實現空間的並行操作。熟知的pentium系列(可能是p-II開始),還有SUNSPARC系列的較高級型號,以及MIPS若干型號等都采用了超級標量技術。

超長指令字

超常指令字(VLIW:VeryLongInstructionWord)是由美國Yale大學教授Fisher提出的。它有點類似於超級標量,是一條指令來實現多個操作的並行執行,之所以放到一條指令是為了減少內存訪問。通常一條指令多達上百位,有若干操作數,每條指令可以做不同的幾種運算。那些指令可以並行執行是由編譯器來選擇的。通常VLIW機只有一個控制器,每個周期啟動一條長指令,長指令被分為幾個字段,每個字段控制相應的部件。由於編譯器需要考慮數據相關性,避免沖突,並且盡可能利用並行,完成指令調度,所以硬件結構較簡單。   

VLIW機器較少,可能不太容易實現,業界比較有名的VLIW公司之一是Transmeta,在加州硅谷SantaClara(硅谷聖地之一,還有SanJose,PaloAlto)。它做的機器采用X86指令集,VLIW實現,具體資料可以去訪問公司的網站。

向量機

平時接觸的計算機都是標量機,向量機都是大型計算機,一般用於軍事工業,氣象預報,以及其他大型科學計算領域,這也說明了向量機都很貴。國產的銀河計算機就是向量機普通的計算機所做的計算,例如加減乘除,只能對一組數據進行操作,被稱為標量運算。向量運算一般是若干同類型標量運算的循環。向量運算通常是對多組數據成批進行同樣運算,所得結果也是一組數據。很多做科學計算的大(巨)型機都是向量機,例如國產銀河。

SIMD技術

單指令多數據(SingleInstructionMultipleData)簡稱SIMD。SIMD結構的CPU有多個執行部件,但都在同一個指令部件的控制下。SIMD在性能優勢呢:以加法指令為例,單指令單數據(SISD)的CPU對加法指令譯碼后,執行部件先訪問內存,取得第一個操作數;之后再一次訪問內存,取得第二個操作數;隨后才能進行求和運算。而在SIMD型CPU中,指令譯碼后幾個執行部件同時訪問內存,一次性獲得所有操作數進行運算。這個特點使得SIMD特別適合於多媒體應用等數據密集型運算。AMD公司的3DNOW!技術其實質就是SIMD,這使K6-2處理器在音頻解碼、視頻回放、3D游戲等應用中顯示出優異性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM