7代x86處理器Pentium 4

Pentium Pro之後的Pentium II, Pentium III都是基於P6架構,功能和架構上沒有太大的改進,主要是工藝不斷進步,主頻也不斷的提高,到Pentium III主頻已經可以達到最大1.4GHz。另外值得一說的是Pentium已經有了MMX指令集,Pentium III增加SSE指令集。這些附加的指令集我們專門一篇文章集細述。

7代處理器架構Netburst

6代處理器的架構稱為P6。7代處理器的架構稱為NetBurst。該架構首先用在Pentium 4處理器上。該系統的處理器先後出了很多型號,每個型號也有一些功能上的增減,時間跨度為2002-2005年,我們不再每個型號詳細去分別說明增減了哪些功能,只把整個這一階段的所有新增的功能列出,它們包括:

  1. 超線程
  2. SSE2/SSE3指令集
  3. NX位
  4. SpeedStep
  5. TM2溫度檢測
  6. 更大的L2緩存和L3緩存
  7. 最大31級流水線
  8. 最高3.6GHz主頻
  9. 90nm製程

看到3.6GHz主頻和90nm製程,感覺真的來到了自己熟悉的時代呢,因為我們現在主流的處理器也都還是3.xGHz的主頻,製程方面也是在幾十納米的量級。

史上最長的流水線

NetBurst架構未必真的是史上最長的流水線結構,但教科書上基本都是這麼說的。在Pentium Pro時代,大家看到了流水線的好處,於是就大量使用流水線,現在我們有了31級這麼長的流水線,結果效果並不是很好,所以後來就又變短了。

關於為什麼不是流水線越長,就越好,可以參考這個討論: https://www.zhihu.com/question/20180643 以及 http://blog.jobbole.com/40844/ http://blog.csdn.net/zqm201/article/details/45558465

超線程

每個單位時間內,一個單運行管線的CPU只能處理一個線程(操作系統:thread),以這樣的單位進行,如果想要在一單位時間內處理超過一個線程是不可能的,除非是有兩個CPU的實體單元。雙核心技術是將兩個一樣的CPU放置於一個封裝內(或直接將兩個CPU做成一個晶元),而英特爾的HT技術是在CPU內部僅複製必要的資源、讓兩個線程可同時運行;在一單位時間內處理兩個線程的工作,模擬實體雙核心、雙線程運作。

Intel自Pentium開始引入超標量、亂序運行、大量的寄存器及寄存器重命名、多指令解碼器、預測運行等特性;這些特性的原理是讓CPU擁有大量資源,並可以預先運行及平行運行指令,以增加指令運行效率,可是在現實中這些資源經常閑置;為了有效利用這些資源,就乾脆再增加一些資源來運行第二個線程,讓這些閑置資源可運行另一個線程,而且CPU只要增加少數資源就可以模擬成兩個線程運作。

P4處理器需多加一個Logical CPU Pointer(邏輯處理單元)。因此P4 HT的die的面積比以往的P4增大了5%。而其餘部分如ALU(整數運算單元)、FPU(浮點運算單元)、L2 Cache(二級緩存)並未增加,且是共享的。

以上內容來自維基百科

就我個人理解,超標量技術使得一個CPU核心可以同時執行最多兩條指令(甚至多條指令),但超標量技術有效的基礎是一段代碼中指令互相之間沒有依賴,可以亂序執行。具體到一個線程中,這個基礎可能是時而存在,時而不存在的,所以超標量並不能把ALU完全利用充分。雖然一個線程中一段代碼的前後指令可能相互依賴,但兩個不同的線程上的兩個指令幾乎多數情況是不相互依賴的,所以何不讓一個CPU核心同時執行兩個線程呢?

讓一個CPU核心同時執行兩個線程除了要讓這個核心有至少兩個ALU之外,還要求它有兩份線程相關的寄存器,但不要求它有兩份進程相關的寄存器。

  1. 進程相關,線程不相關的硬體資源 我們知道進程之間地址空間是隔離的,所以每個進程要有自己的頁表,對每一個運行的進程而言,要有一個CR3寄存器來存儲它的頁表所在的位置,對應的就要有一組TLB。
  2. 線程相關的硬體資源

一個線程要有一個程序指針IP,一組寄存器(EAX, EBX, ECX, EDX等),堆棧(SP, BP)。

SpeedStep

SpeedStep技術,最早用於Pentium III Mobile處理器——一種筆記本所用的移動版CPU中,使CPU能在高、低兩個確定的頻率間切換,而且這種切換不是即時調整的,通常設置為當用電池時降為低頻,而在用交流電源時恢復到高頻(全速)。由於降為低頻的同時也會降低電壓和功耗,一方面CPU本身耗電量減少,另一方面發熱量也會減少,這樣還能縮減甚至完全避免使用風扇散熱,進一步的節約了用電,因此能延長電池的使用時間;另一方面在用交流電的時候又能恢復為全速工作以獲得最高性能。

SpeedStep 技術的升級版本 EIST 全名為Enhanced Intel SpeedStep Technology(增強型Intel SpeedStep技術),是Intel全新的節約能源技術,最早用於Pentium M處理器,同樣也是一款筆記本所用的移動版CPU。出於和AMD台式機處理器中的CoolnQuiet技術競爭的目的,EIST 技術現在也推廣到Intel較新的台式機處理器中,目前使用這一技術的Intel台式機和移動版CPU包括Core系列、Pentium D系統(不包括805、820、915)、Pentium M系列和超線程的Pentium 4系列(不包括5XX)。

與早期的 SpeedStep 技術不同的是,增強型 SpeedStep 技術可以動態調整CPU頻率,當CPU使用率低下或接近零的時候動態降低CPU的倍率,令其工作頻率下降,從而降低電壓、功耗以及發熱;而一旦監測到CPU使用率很高的時候,立即恢復到原始的速率工作。當然,對於移動版處理器,仍然可以設置在使用電池的時候永遠不要調整到最高頻率,而始終維持在次高或者最低頻率工作。

以上內容來自維基百科

一句話解釋就是根據當前計算任務的CPU利用率、CPU溫度、電池電量等因素動態調整CPU的運行頻率來達到省電、防止CPU溫度過高等目的。

TM2溫度檢測

這個不用引用維基百科了,Intel CPU在內部放了個溫度感測器,可以測量CPU溫度,並且在CPU內部集成了一部分邏輯,可以硬體讀取溫度,在溫度過高的時候發出信號,讓主板提高風扇轉數、讓CPU降低工作頻率或斷電。

這沒什麼技術含量,好處是在CPU內部測溫度測得比在CPU外面放感測器測得准。

NX位

在頁表索引中有一個位叫做NX(No eXecution)位或叫XD(eXecution Disable)位,該位置位時,表明該頁的數據是不可以執行的,該位位於頁表項的bit 63上。提出它的原因主要是防止有害程序把自己的有害代碼寫在可寫的數據段,然後修改程序指針,讓程序指針指向數據段的有害代碼來執行有害程序。


推薦閱讀:

Cache的組織形式
SIMD指令集
80286與保護模式
奔騰四採用的超線程技術與SNB之後的CPU採用的超線程技術是同一個技術嗎?
ARM彙編和X86彙編哪個難?

TAG:x86 | 计算机体系架构 |