JILK - CPU - (2)

在CPU的層面,異常的含義是:“An exception is an event that typically occurs when an instruction causes an error”。有些異常能提供錯誤代號(error code),以提供關於異常的額外信息。

Intel CPU的發展經歷了下面的幾個階段:

1. 16位的處理器(1978年)。16位的處理器是IA-32系列架構的前身,代表作是8086和8088。8086有着16位的寄存器,連接16位的外部數據線,連接20位的外部地址線。正如《Linux內核代碼情景分析》中所講的,因地址線有20位,而數據線和寄存器只有16位,所以Intel設計了分段尋址模式:將地址空間劃分成若干個段,每個段的開始地址成爲段基地址,段的基地址總是16位的整數左移4位而得,因此段的基地址剛好可用一個寄存器來表示。一個具體的Byte在地址空間的地址可表示成:Byte所在的段基地址+Byte在所在段的偏移量。Byte在所在段的偏移量用16位的整數來表示,因此一個段的大小最大爲64KB。20位的地址空間如果用段平鋪,且段與段之間不重疊,則最多可鋪16個段。而8088則連接8位的外部數據線。

2. Intel 286 CPU(1982年)。因着8086裏提供的分段尋址模式對訪問的內存沒有提供足夠的保護,在286裏,Intel設計了保護模式(Protected mode)。在保護模式裏,段寄存器裏,段的基地址不再直接存放在寄存器裏,而是存放在稱爲描述符表(descriptor table)的地方。描述符表是在內存中的一個表格,表裏的每個表項表示一個段的信息,包含了段的基地址。286裏,一個描述符裏提供24位的段基地址(爲什麼是24位而不是32位呢?因爲286連的是24位的地址線),因此可尋址空間是16MB。而寄存器的內容則被分爲幾部分,其中一部分構成描述符表的下標,用於找到所尋段在描述符表的位置;而其它部分則用於控制對段的訪問權限等。因爲可尋址空間有16MB之巨,操作系統可以基於段尋址模式做簡單的虛擬內存管理了。總的來說:286爲8086的分段尋址模式提供了些訪問保護:如訪問段時檢查是否越過段的邊界;段可設置爲只讀/只允許執行;可設置段訪問所需的權限。並擴充了尋址空間。值得注意的是:286連接的數據線還是16位的。

3. Intel 386 CPU(1985年)。386是Intel 32位系列CPU的鼻祖。在386裏,寄存器被擴大到了32位,連接的數據線是32位,地址線也是32位。除此之外,386提供了能方便地在真地址模式(real mode)與保護模式(protected mode)之間切換,還提供了虛-8086模式(virtual-8086),以便更好地運行8086兼容的軟件。386裏增加了頁式內存管理的支持(雖然是在段式尋址的基礎上再實現頁式管理):經過段式尋址得到的地址稱爲線性地址,線性地址經過頁式的映射後纔得到真正的物理地址。386增加了並行工作單元的支持(parallel stages),即CPU裏可劃分爲若干個可並行工作的單元:BIU(總線接口單元,負責內存訪問和I/O訪問),CPUs(code prefetch unit,預取指單元,負責從總線上接收指令碼,並將之壓入一個隊列),IDU(instruction decode unit,指令解碼單元,負責解碼CPUs送來的指令碼),EU(execution unit,執行單元,負責執行解碼後的微指令),SU(segment unit,段式尋址單元,負責將邏輯地址轉換成線性地址,並做相應的保護檢查),PU(paging unit,頁式管理單元,負責將線性地址轉換成物理地址,並做相應的保護檢查,並緩存一些最近訪問的頁表地址等)。

4. Intel 486 CPU(1989年)。486相對386有了相當的改進,包括:1)在CPU裏集成了一個8KB的一級緩存;2)在CPU裏集成了一個x87FPU,即浮點運算單元;3)增加了一條指令處理的流水線(將解碼、執行單元分解成5個流水線單元),從而使得一些簡單的指令能在一個時鐘週期裏完成。

5. Intel Pentium CPU(1993年)

1)奔騰處理器將指令的執行流水線增加到了兩條(分別成爲u和v線),因此在一個時鐘週期內可執行兩條指令。

2)CPU內部的一級緩存增加到了兩個,一個8KB的用於存放指令的緩存,一個8KB的用於存放數據的緩存。

3)除此之外,基於MESI協議,奔騰處理器往內存寫的策略除了支持486已支持的write-through策略(即寫的時候既把內容寫到內存裏,也寫到緩存裏)之外,還支持更好的write-back策略(即寫的時候咱不把內容寫到內存裏,而只是寫在緩存裏,等到需要的時候再寫進內存)。

4)集成在CPU裏的用於存放指令執行分支的表格也更好地提高了程序裏循環體的執行效率。

5)奔騰處理器除了對虛擬-8086模式做了更好的支持外,在頁式管理方面,支持的頁面粒度的大小可達到4MB。

6)奔騰處理器內部的數據傳送通道的寬度可達到128~256bit,可提升CPU內部的數據傳送速率。

7)支持APIC中斷控制的架構,因而可支持多個CPU的模式下的中斷處理。APIC(Advanced Programmable Interrupt Controller),由兩種組件構成:Local APIC和I/O APIC。每個CPU裏配備一個LAPIC,每條外部設備連接線(peripheral bus)上配備一個I/O APIC。LAPIC負責處理從I/O APIC或其它CPU的傳過來的中斷請求,同時也可以產生對其它CPU的中斷請求,並將之發往其它CPU的LAPIC。I/O APIC負責處理從peripheral bus傳過來的中斷請求,並決定將之發往哪個CPU的LAPIC。

8)奔騰處理器已經支持雙CPU模式了。

9)後來的奔騰處理器引進了MMX技術,即支持SIMD(single instruction multiple-data),使得單條指令可對多個數據寄存器執行相同的運算,很適合矩陣、向量那種的運算。

6. Intel P6(1995~1999年)。P6系列的CPU是基於超superscalar架構的。所謂的superscalar架構,其實就是CPU裏增加更多的指令執行的並行性,包括增加指令處理流水線的道數,擴大CPU裏的一級和二級緩存的容量等。要實現這種superscalar的架構,其實真不容易,有許多問題需要考慮,譬如:指令裏的數據流分析、指令的超前執行、指令分支的預判等,實際上是大大增加了CPU裏的邏輯複雜性。爲什麼這個系列的CPU稱爲P6系列呢?因爲Pentium是希臘的penta(五的意思)加上拉丁問的ium組成的,因此Pentium是Intel的第五代x86系列的處理器,因此P6應該是指第六代開始的x86架構的處理器。

1)Intel Pentium Pro 處理器。該處理器裏有三道的流水線,平均能在一個時鐘週期裏執行三條指令。除此之外,還擁有兩個8KB的一級緩存和一個256KB的二級緩存。

2)Intel Pentium II 處理器。該處理器里加入了MMX技術。一級緩存增加到了16KB之大,二級緩存可爲256KB、512KB或1MB。除此之外,內部還有一條週期爲半個時鐘週期的線將二級緩存與CPU相連。該CPU還支持各種的省電模式,譬如AutoHALT模式。HALT指令會使CPU進入AutoHALT模式,在該模式下,CPU的運行由其內部的時鐘頻率來支配,因此可省電,同時CPU也可響應外部的中斷請求。譬如Stop-Grant模式,這也是一種省電模式,與AutoHALT相似,不過只能由硬件控制來進入該模式。譬如Sleep模式,只能從Stop-Grant模式進入該模式,處於該模式下,CPU的內部時鐘將不再驅動CPU來工作,換言之,CPU進入了睡眠,並可能不會響應外部的中斷請求,但二級緩存還是工作着的,而且CPU記錄了進入睡眠之前其相關的上下文;因CPU睡着了,該模式比AutoHALT和Stop-Grant更省電。

3)Pentium II Xeon 處理器。該處理器支持的流水線的道數可爲4或8或更多,並內部配備一條與時鐘週期相同的連接線連接2MB的二級緩存到CPU。

4)Intel Celeron 處理器。著名的賽揚處理器,面向中低PC市場的產品。它集成了128KB的二級緩存。

5)Intel Pentium III 處理器。該處理器引入了SSE擴展(Streaming SIMD Extensions),即提供一些新的128位的寄存器和指令,以便可以在單精度的粒度上執行浮點值的SIMD操作。

6)Pentium III Xeon 處理器。該處理器將二級緩存搬到了CPU內部了,從而省去了用一條線將二級緩存與CPU連接,也提高了數據傳輸的速率。

7. Intel Pentium 4 處理器系列(2000-2006年)

1)奔騰4處理器是基於NetBurst架構的。所謂的NetBurst架構就是流水線的長度更長了,而且配備了新型的緩存結構,以求達到更快的處理速度。而奔騰4的處理頻率達到了3.4GHz。

2)除此之外,還引進了SSE2(Streaming SIMD Extensions 2)技術和SSE3(Streaming SIMD Extensions 3)技術。曾經被名頭叫得很響的超線程技術(Hyper-Threading Technology)也是在該處理器中引入的。所謂的超線程技術,即一個物理上的CPU核心可模擬成兩個邏輯上的CPU核心在工作,關鍵在於:CPU內部爲兩條線程的執行分別準備流水線、以及相應的一套寄存器,至於類似ALU這樣的邏輯運算單元還是隻有一個,因此通過利用兩條線程在流水線上的時間差可模擬出似乎兩個線程在併發執行的效果,從而模擬出兩個邏輯上的CPU核心。值得注意的是:Intel 64位架構是在Pentium 4 Extreme Edition裏和Pentium 4 6xx和5xx系列裏引進的。

3)在奔騰4的672和662處理器上,引進了Intel Virtualization Technology。Intel VT是在硬件層面上對系統虛擬化技術增加支持。傳統的系統虛擬化軟件如VM Ware、VirtualBox等是通過軟件的方式來模擬出一個guest operating system的環境的,而Intel VT則在CPU硬件層次上對其進行了有力的支持,從而使得系統虛擬化的軟件的實現可更爲的簡單,譬如CPU提供了一些新的指令,用於進入或退出虛擬化模式,這裏有更爲詳細的介紹

8. Intel Xeon 處理器(2001-2007年)。Intel Xeon系列CPU大部分基於NetBurst架構(除了Intel Xeon LV、Intel Xeon 5100系列之外)。該系列的處理器的目標市場是多CPU核心的高性能服務器羣。

1)Intel Xeon MP支持Intel Hyper-Threading技術。

2)Intel Xeon支持64位架構,其主頻可達3.6GHz。

3)支持多CPU核心。

4)Intel Xeon 70xx系列支持Intel Virtualization技術。

5)Intel Xeon 5100系列是基於Core架構的,支持64位,支持Intel Virtualization技術和雙核心技術。Core架構主要是針對NetBurst架構的一些缺點(如CPU的主頻似乎已經難以再提高,CPU工作時消耗的電量大以及隨之產生的熱量大的問題),做出了一些回滾式的改進,如降低CPU的主頻,但提升每個時鐘週期裏的CPU的利用率,並設計更有效率的指令解碼單元、執行單元、緩存結構、連接線等,從而在降低CPU的耗電的同時提升CPU的處理效率。

6)Intel Xeon 3000系列也是基於Core架構。

7)Intel Xeon 5300系列支持多核心(可達4核),並基於Core架構。

9. Intel Pentium M處理器(2003-至今)。Pentium M處理器的目標市場是移動筆記本,因此它的特點是高性能、低耗電。

1)支持指令的動態執行技術(Dynamic Execution),其實就是這個從P6開始就有了,就是指令的數據流分析、指令的分支判斷、指令預先執行等。

2)Pentium M裏集成一級的32KB的指令緩存和32KB的數據write-back緩存。還集成了2MB的二級緩存。

3)支持MMX、SSE、SSE2。

4)支持400或544MHz的系統總線。

10. Intel Pentium Process Extreme Edition(2005-2007年)。該處理器支持雙核心技術,基於NetBurst架構,並支持SSE、SSE2、SSE3,支持超線程技術,支持64位。

11. Intel Core Duo 和 Intel Core Solo處理器(2006-2007年)。Intel Core Duo處理器支持雙核心,並着眼於低耗電。而Intel Core Solo是單核心CPU。

1)該處理器提供了Smart Cache,用於兩個核心之間的數據共享。

2)改進的指令解碼技術和SIMD技術。

3)Intel Dynamic Power Coordination技術,以及增強的Intel Deeper Sleep模式,這都是爲了省電。

4)支持667MHz的省電系統總線。

12. Intel Xeon 5100, 5300系列和Core 2處理器系列(2006-至今)

1)Intel Xeon 3000、3200、5100、5300、7300系列,Intel Pentium Dual-Core,Intel Core 2 Extreme,Intel Core 2 Quad,Intel Core 2 Duo均支持64位,並都基於非常省電而有效率的Core架構。

2)Intel Xeon 5300,Intel Core 2 Extreme QX6800,Intel Core 2 Quad 均支持四核心技術。

13. Intel Xeon 5200、5400、7400系列和Intel Core 2系列(2007-至今)

1)Intel Xeon 5200、5400、7400系列,Intel Core 2 四核的Q9000系列,Intel Core 2 雙核的E8000系列均支持64位,它們都基於增強的Core架構。

2)Intel Xeon 5400系列,Intel Core 2 四核的Q9000系列均支持4核心。Intel Xeon 7400系列可支持達6核心,並支持三級緩存達16MB。

14. Intel Atom處理器系列(2008-至今)。Intel Atom處理器是基於新的Atom架構的,Atom架構瞄準的是要求低耗電的設備,該架構裏有兩條執行的流水線,可支持超線程技術,支持通過動態調整緩存的使用大小來達到更加深度的省電,支持SSSE3(Streaming SIMD Extensions 3),支持Intel Virtualization Technology,支持64位(處理Intel Atom Z5xx系列),支持增強的Intel SpeedStep Technology。增強的Intel SpeedStep Technology在於將CPU工作的電壓和頻率可做分開的調整,從而使得在省電模式之間切換時更有效率。

15. Intel Core i7處理器系列(2008-至今)。Intel Core i7 900系列支持64位,它們都基於新的Nehalem架構。Intel Core i7處理器和Intel Xeon 5500系列均支持下面這些特點:

1)支持Intel Turbo Boost技術。該技術允許CPU能自行動態的調節CPU的主頻,從而使CPU達到更高的性能。當然CPU受限於電流、散熱、架構的因素,其主頻總會有個極限值的,當CPU正在運行於其極限值,而操作系統對CPU發出要求,要求其運行在高性能模式下時,CPU就會以一定的頻率幅度進行升頻,如Nelhalem架構是133MHz、Sandy/Ivy Bridge架構是100MHz,當到達其極限值或超過之後,CPU又會以一定幅度降頻,直到到達極限值的範圍內。

2)結合超線程技術和多核技術,對於4核心的CPU,支持的同時執行的線程數可到8條。

3)增加的獨立的耗電控制單元(Power control unit),能更有效地控制CPU活躍和空閒時的耗電情況。

4)在CPU內部集成了內存控制器(memory controller),可用於控制三通道的DDR3。所謂的三通道技術,就是內存控制器可通過三條獨立的數據線來訪問內存,相應的內存插槽有三個,內存控制器在存儲或讀取數據時,可將數據分割成若干3的倍數份,分別存於三個內存模塊裏,這樣就能減少內存讀寫的時延,提高了單位時間內內存讀寫的吞吐量。值得注意的是:DDR3的3和這裏的三通道不是同一個意思,DDR3是指單個內存模塊裏的數據讀取速率是DDR的三倍的意思。

5)Intel Smart Cache的大小增至8MB。

6)支持Intel QuickPath interconnect(QPI)。QPI技術用於提供多CPU的情況下,CPU之間點對點的通信技術。

7)支持SSE4.2和SSE4.1。

8)支持第二代的Intel Virtualization技術。

16. Intel Xeon 7500系列(2010年)。Intel Xeon 7500和6500系列均基於Nehalem架構,而且還支持以下的特性:

1)支持的核心數可達8個。

2)支持24MB的Intel Smart Cache。

3)支持結合Intel Scalable Memory Interconnect和Intel 7500 Scalable Memory Buffer來訪問系統內存。

17. 2010 Intel Core 處理器系列(2010年)。2010的Intel Core處理器系列包括Intel Core i7、i5和i3,它們都是基於Westmere架構,並具有以下的特性:

1)支持超線程技術。

2)支持Intel Turbo Boost技術。

3)增加的Intel Smart Cache和集成的內存控制器。

4)更智能的省電。

5)增加支持指令包括AESNI、PCLMULQDQ、SSE4.2和SSE4.1。

18. Intel Xeon 5600系列(2010年)。該處理器同樣基於Westmere架構,並支持以下特性:

1)支持的核心數可達6個。

2)支持可達12MB的Intel Smart Cache。

3)支持指令集AESNI、PCLMULQDQ、SSE4.2和SSE4.1。

4)支持更爲靈活的Intel Virtualization Technology。

發佈了34 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章