流水线、超流水线、超标量(superscalar)技术对比
本文轉載自:https://blog.csdn.net/qq_32092885/article/details/83349275
流水線
?????流水線技術是一種將每條指令分解為多步,并讓各步操作重疊,從而實現(xiàn)幾條指令并行處理的技術。程序中的指令仍是一條條順序執(zhí)行,但可以預先取若干條指令,并在當前指令尚未執(zhí)行完時,提前啟動后續(xù)指令的另一些操作步驟。這樣顯然可加速一段程序的運行過程。?
市場上推出的各種不同的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 )?執(zhí)行指令。由A L U執(zhí)行指令規(guī)定的操作。?
( 6 )?存儲或"寫回"結果。最后運算結果存放至某一內存單元或寫回累加器A。?
???????在理想情況下,每步需要一個時鐘周期。當流水線完全裝滿時,每個時鐘周期平均有一條指令從流水線上執(zhí)行完畢,輸出結果,就像轎車從組裝線上開出來一樣。P e n t i u m、Pentium Pro和Pentium II處理器的超標量設計更是分別結合了兩條和三條獨立的指令流水線,每條流水線平均在一個時鐘周期內執(zhí)行一條指令,所以它們平均一個時鐘周期分別可執(zhí)行2條和3條指令。?
?????流水線技術是通過增加計算機硬件來實現(xiàn)的。例如要能預取指令,就需要增加取指令的硬件電路,并把取來的指令存放到指令隊列緩存器中,使M P U能同時進行取指令和分析、執(zhí)行指令的操作。因此,在1 6位/3 2位微處理器中一般含有兩個算術邏輯單元A L U,一個主A L U用于執(zhí)行指令,另一個A L U專用于地址生成,這樣才可使地址計算與其它操作重疊進行。
超流水線
??????超級流水線以增加流水線級數的方法來縮短機器周期,相同的時間內超級流水線執(zhí)行了更多的機器指令。采用簡單指令以加快執(zhí)行速度是所有流水線的共同特點,但超級流水線配置了多個功能部件和指令譯碼電路,采用多條流水線并行處理,還有多個寄存器端口和總線,可以同時執(zhí)行多個操作,因此比普通流水線執(zhí)行的更快,在一個機器周期內可以流出多條指令。
?
??????一般而言,CPU執(zhí)行一條指令需要經過以下階段:取指->譯碼->地址生成->取操作數->執(zhí)行->寫回,每個階段都要消耗一個時鐘周期,同時每個階段的計算結果在周期結束以前都要發(fā)送到階段之間的鎖存器上,以供下一個階段使用。所以,每個時鐘周期所消耗的時間就是由以上幾個階段中的耗時最長的那個決定的。假設耗時最長的階段耗時為s秒,那么時鐘頻率就只能設計到1/s赫茲(這里不考慮階段間信號傳遞的時間和鎖存器的反應時間)。
??????那么,要提高時鐘頻率,一種可能的方法就是減小每個階段的時間消耗。其中一種最簡單的辦法,就是將每個階段再進行細分成更小的步驟,同樣是細分后的每個階?段,單個階段的運算量小了,單位耗時s也就減少,這樣實際上就是提高了時鐘頻率。這種將標準流水線細分的技術,就是超級流水線技術。當然,流水線和超級流?水線之間并沒有很明顯的區(qū)別。這樣的技術,雖然提高了CPU的主頻,但是也帶來了很大的副作用:
??????首先,細分后的每一個階段都要在其后使用鎖存器鎖存,因此將一個階段細分為N的子階段并不能讓單位時間減少到s/N,?而是s/N + d,?其中d為鎖存器的反應時間。這實際上就是增加了多余的時間消耗。
??????其次,隨著流水線級數的加深,一旦分支預測出現(xiàn)錯誤,會導致CPU中大量的指令作廢,這樣的消耗是十分巨大的。
??????以上原因,也就是什么Pentium IV具有31級的流水線,指令的執(zhí)行效率卻趕不上只有14級流水線的Pentium M
超標量
超標量(superscalar)是指在CPU中有一條以上的流水線,并且每時鐘周期內可以完成一條以上的指令,這種設計就叫超標量技術。?其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。
將一條指令分成若干個周期處理以達到多條指令重疊處理,從而提高cpu部件利用率的技術叫做標量流水技術。超級標量是指cpu內一般能有多條流水線,這些流水線能夠并行處理。在單流水線結構中,指令雖然能夠重疊執(zhí)行,但仍然是順序的,每個周期只能發(fā)射(issue)或退休(retire)一條指令。超級標量結構的cpu支持指令級并行,每個周期可以發(fā)射多條指令(2-4條居多)。可以使得cpu的IPC(InstructionPerClock)>,從而提高cpu處理速度。超級標量機能同時對若干條指令進行譯碼,將可以并行執(zhí)行的指令送往不同的執(zhí)行部件,在程序運行期間,由硬件(通常是狀態(tài)記錄部件和調度部件)來完成指令調度。超級標量機主要是借助硬件資源重復(例如有兩套譯碼器和ALU等)來實現(xiàn)空間的并行操作。熟知的pentium系列(可能是p-II開始),還有SUNSPARC系列的較高級型號,以及MIPS若干型號等都采用了超級標量技術。
超長指令字
超常指令字(VLIW:VeryLongInstructionWord)是由美國Yale大學教授Fisher提出的。它有點類似于超級標量,是一條指令來實現(xiàn)多個操作的并行執(zhí)行,之所以放到一條指令是為了減少內存訪問。通常一條指令多達上百位,有若干操作數,每條指令可以做不同的幾種運算。那些指令可以并行執(zhí)行是由編譯器來選擇的。通常VLIW機只有一個控制器,每個周期啟動一條長指令,長指令被分為幾個字段,每個字段控制相應的部件。由于編譯器需要考慮數據相關性,避免沖突,并且盡可能利用并行,完成指令調度,所以硬件結構較簡單。
VLIW機器較少,可能不太容易實現(xiàn),業(yè)界比較有名的VLIW公司之一是Transmeta,在加州硅谷SantaClara(硅谷圣地之一,還有SanJose,PaloAlto)。它做的機器采用X86指令集,VLIW實現(xiàn),具體資料可以去訪問公司的網站。
向量機
平時接觸的計算機都是標量機,向量機都是大型計算機,一般用于軍事工業(yè),氣象預報,以及其他大型科學計算領域,這也說明了向量機都很貴。國產的銀河計算機就是向量機普通的計算機所做的計算,例如加減乘除,只能對一組數據進行操作,被稱為標量運算。向量運算一般是若干同類型標量運算的循環(huán)。向量運算通常是對多組數據成批進行同樣運算,所得結果也是一組數據。很多做科學計算的大(巨)型機都是向量機,例如國產銀河。
SIMD技術
單指令多數據(SingleInstructionMultipleData)簡稱SIMD。SIMD結構的CPU有多個執(zhí)行部件,但都在同一個指令部件的控制下。SIMD在性能優(yōu)勢呢:以加法指令為例,單指令單數據(SISD)的CPU對加法指令譯碼后,執(zhí)行部件先訪問內存,取得第一個操作數;之后再一次訪問內存,取得第二個操作數;隨后才能進行求和運算。而在SIMD型CPU中,指令譯碼后幾個執(zhí)行部件同時訪問內存,一次性獲得所有操作數進行運算。這個特點使得SIMD特別適合于多媒體應用等數據密集型運算。AMD公司的3DNOW!技術其實質就是SIMD,這使K6-2處理器在音頻解碼、視頻回放、3D游戲等應用中顯示出優(yōu)異性能。
?
?
總結
以上是生活随笔為你收集整理的流水线、超流水线、超标量(superscalar)技术对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: google三件套是什么_什么是Goog
- 下一篇: Unity资源加载闪退问题深度分析