Intel系列CPU的流水線技術的發展
CPU(Central processing Unit),又稱“微處理器(Microprocessor)”,是現代計算機的核心部件。對於PC而言,CPU的規格與頻率常常被用來作為衡量一台電腦性能強弱重要指標。
在提高CPU計算能力的過程中,流水線技術對提高CPU的效率產生了顯著作用,就像流水生產在汽車制造業中一樣,它對處理器的發展影響深遠。
Intel公司創於1968年美國,縱觀IT發展史,很少能有公司能像Intel這樣屹立多年仍舊保持強大生命力的。作為現今世界上最大的CPU研發和生產者,如今的Intel就像是信息時代的一根支柱,為推動信息技術的發展做出了卓越的貢獻。
接下來我將以個人眼光講述Intel公司CPU流水線技術的發展歷程和相關技術方法,分為四部分。
注:第一個采用指令流水線的機器是IBM7030 as known as Stretch
一 綜述Inter系列CPU芯片中采用的流水線技術的發展過程
流水線是Intel首次在486芯片中開始使用的。流水線的工作方式就象工業生產上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然后將一條X86指令分成5—6步后再由這些電路單元分別執行,這樣就能實現在一個CPU時鍾周期完成一條指令,因此提高CPU的運算速度。
經典奔騰每條整數流水線都分為四級流水,即指令預取、譯碼、執行、寫回結果,浮點流水又分為八級流水。
Intel的初次流水線引入,i486五級流水線:
1989 年推出的 i486 處理器引入了五級流水線。這時,在 CPU 中不再僅運行一條指令,每一級流水線在同一時刻都運行着不同的指令。這個設計使得 i486 比同頻率的 386 處理器性能提升了不止一倍。五級流水線中的取指階段將指令從指令緩存中取出(i486 中的指令緩存為 8KB);第二級為譯碼階段,將取出的指令翻譯為具體的功能操作;第三級為轉址階段,用來將內存地址和偏移進行轉換;第四級為執行階段,指令在該階段真正執行運算;第五級為退出階段,運算的結果被寫回寄存器或者內存。由於處理器同時運行了多條指令,大大提升了程序運行的性能。
80486利用“數據旁路”解決數據相關問題。
80486利用“預取轉移目標”方法,加快指令分支操作。
但是這個階段的CPU在執行一些數據相關的指令時,會存在流水線阻塞問題。
奔騰(Pentium)處理器
1993 年 Intel 推出了奔騰(Pentium)處理器。奔騰處理器架構增加了第二條獨立的超標量流水線。主流水線工作方式類似於 i486,第二條流水線則並行的運行一些較簡單的指令,比如說定點算術,而且該流水線能更快的進行該運算
奔騰 Pro (Pentium Pro)處理器
1995 年 Intel 推出了奔騰 Pro (Pentium Pro)處理器。和之前的處理器相比,奔騰 Pro 采用了完全不同的設計。該處理器采用了諸多新特性以提高性能,包括亂序執行的部件以及猜測執行。流水線擴展到了 12 級,而且引入了“超標量流水線”的概念,使得許多指令可以被同時處理。。
奔騰 4 處理器
2002 年發布的奔騰 4 處理器引入了超線程技術。亂序執行部件的設計使得指令被執行的速度比處理器能夠提供指令的速度更快。因此對於大部分應用,CPU 的亂序執行部件在大部分時間處於空閑狀態,甚至在高負載的情況下也不能充分利用。為了讓指令流能充分的流入亂序執行部件,Intel 加入了第二套前端部件(注:在處理器結構中,前端是指取指,譯碼,寄存器重命名等模塊,經過前端部件的處理后,指令等待發射進入亂序執行部件)。雖然實際上只有一個亂序執行部件,但對於操作系統來說,它能看到兩個處理器。前端部件包含兩組同樣功能的 X86 寄存器,兩個指令譯碼器根據兩個指令指針指向的地址分別處理。所有的指令被一個共享的亂序執行部件執行,但對應用程序來說並不知情。當亂序執行部件執行完成,像之前一樣退出流水線后,最終結果返回虛擬的兩個處理器。
二 總結Intel CPU發展過程中,提高流水線性能及CPU性能的方法、相關技術
80486
Intel 80486整數處理部分實現了指令流水線,屬於早期流水線技術,具有代表性。
整數指令采用了5個步驟的指令流水線,每個步驟一般需要一個時鍾周期:
① PF步驟——指令預取(Prefetch)
② D1步驟——指令譯碼1(Decode Stage 1)
③ D2步驟——指令譯碼2(Decode Stage 2)
④ EX步驟——指令執行(Execute)
⑤ WB步驟——回寫(Write Back)
80486利用“數據旁路”解決數據相關問題,設置相關專用通路,即不等前一條指令把計算結果寫回寄存器組,下一條指令不再讀寄存器組,而是直接把前一條指令的ALU的計算結果作為自己的輸入數據開始計算過程,使本來需要暫停的操作變得可以繼續執行,書本上稱作『定向技術』。
80486利用“分支預測”方法,加快指令分支操作。
但是這個階段的CPU在執行一些數據相關的指令時,會存在流水線阻塞問題。比如先寫后讀。
奔騰處理器
奔騰架構增加了第二條獨立的超標量流水線,兩條流水線可以並行運行,而且每條流水線可以同時有多條指令在不同流水級執行。它幾乎可以同時執行比 i486 多一倍的指令。
奔騰 Pro (Pentium Pro)處理器
亂序執行:處理器在一個由輸入數據可用性所決定的順序中執行指令,而不是由程序的原始數據所決定。在這種方式下,可以避免因為獲取下一條程序指令所引起的處理器等待,取而代之的處理下一條可以立即執行的指令。
奔騰 Pro 的亂序執行部件擁有 6 個執行單元:兩個定點處理單元,一個浮點處理單元,一個取數單元,一個存地址單元,一個存數單元。這兩個定點處理單元有所不同,一個能夠處理復雜定點操作,一個能同時處理兩個簡單操作。在理想狀況下,奔騰 Pro 的亂序執行部件可以在一個時鍾周期內執行 7 條微指令。
猜測執行:通過提前判讀並執行有可能需要的程序指令的方式提高執行速度。
12級流水線,超標量流水線:在一個時鍾周期內一條流水線可執行一條以上的指令。一條指令分為十幾段指令來由不同電路單元完成。
奔騰 4 處理器
引入超線程技術:利用特殊的硬件指令,把兩個邏輯內核模擬成兩個物理芯片,讓單個處理器都能使用線程級並行計算,進而兼容多線程操作系統和軟件,減少了CPU的閑置時間,提高CPU的計算和運行效率。
三 展望Intel CPU提高流水線性能的技術方向
提高指令並行度,重復設置器件、流水線。
提高器件利用率,規划指令的執行順序。
提高器件執行速率。
就像目前Intel執行的Tick-Tock研發戰略一樣,在架構和工藝兩面輪流發力。
四 課程報告學習感受
我想說的是:
在學習這些知識之前從沒想到過CPU里在發生着什么事情,現在感覺到CPU就像一個奇妙的小世界,飛快的運算靠的不是magic,而是一代又一代科研和工程人員的不懈奮斗,CPU真像是一個人為創造出來的奇妙天地,凝結着人類的智慧和想象力。
我每天都在使用計算機,享受着信息化帶來的豐富知識和方便,如今的計算機相比過去而言,操作簡單了很多,同時功能也大大豐富了,這不禁讓人感覺使用計算機是一件再簡單不過的事情,我曾經也一度這樣認為。
如今,終於有機會更深入地了解面前的PC里那塊隱藏着的小小硅片。
摩爾定律的推動了整個社會的信息化建設,為了提高運算速率人們創造出了許多奇妙而有效地方法,在架構和工藝上雙管齊下,在硬件和軟件上做優化。
從單流水線到超流水線,從單核到多核,目睹了一個問題的解決竟有如此多的方案,這讓我頗有感慨:面對一個問題,解決方案可能多到你想不到,一定要打開思路,不要讓思想受到局限。
《計算機系統結構》雖然是一門偏向硬件的專業課,但里面蘊含的哲理和思想啟迪,一定會在未來的生活和工作中給我帶來啟發!
參考資料:
1.80486的指令流水線 錢曉捷
http://www5.zzu.edu.cn/qwfw/wjyl/9-xntgjs/4a44c05f3f5a870e013f70e4d3f4207c.html
2.A Journey Through the CPU Pipeline