標籤:Intel45納米

中國北京2008年1月8日,英特爾公司發布了首批基於英特爾迅馳處理器技術筆記本上的45納米(nm)處理器,至此英特爾45納米技術處理器家族全部產品已經悉數登場。簡單說來,Nehalem還是基本建立在Core微架構(Core Microarchitecture)的骨架上,外加增添了SMT、3層Cache、TLB和分支預測的等級化、IMC、QPI和支持DDR3等技術。

1Nehalem技術研究

QPI匯流排技術
Nehalem使用的QPI匯流排是基於數據包傳輸(packet-based)、高帶寬、低延遲的點到點互連技術(point to point interconnect),速度達到6.4GT/s(每秒可以傳輸6.4G次數據)。每一條連接(link)是20bit位寬的介面,使用高速的差分信號(differential signaling)和專用的時鐘通道(dedicated clock lane),這些時鐘通道具有失效備援(failover)。QPI數據包是80bit的長度,發送需要用4個周期。儘管數據包是80bit,但只有64bit是用於數據,其它的數據位則是用於流量控制、CRC和其它一些目的。這樣,每條連接就一次傳輸16bit(2Byte)的數據,其餘的位寬則是用於CRC。由於QPI匯流排可以雙向傳輸,那麼一條QPI匯流排連接理論最大值就可以達到25.6GB/s(2×2B×6.4GT/s)的數據傳送。單向則是12.8GB/s。
對於不同市場的Nehalem,可以具有不同的QPI匯流排條數。比如桌面市場的CPU,具有1條或者半條QPI匯流排(半條可能是用10bit位寬或單向);DP伺服器(雙CPU插座)的CPU,每個具有2條QPI匯流排;而MP伺服器(4個或8個CPU插座)的,則每個具有4條或更多的QPI匯流排。
SMT
同步多線程(Simultaneous Multi-Threading,SMT)技術又重新回歸到了Nehalem架構,這最早出現在130nm的P4上。對於打開了SMT的CPU來說,將會遭受到更多的命中失敗,並需要使用更多的帶寬。所以Nehalem比P4是更適合使用SMT的。另外,在移動和桌面領域的Nehalem有可能將不會支持SMT,它們也不需要3通道內存。
為什麼Core 2沒有使用SMT?很顯然,它是可以做到的。SMT是在節省電力的基礎上增加了性能,而且軟體支持的基礎建設也早就有了。有2個可能的原因:一是Core 2可能沒有足夠的內存帶寬和CPU內部帶寬來利用SMT獲得優勢。通常,SMT能夠提升內存級并行(memory level parallelism,MLP),但是對於內存帶寬已經成為瓶頸的系統則是個麻煩。而更有可能的原因則是SMT的設計、生效等是很麻煩的,而當初設計SMT是由INTEL的Hillsboro小組主持,而並非是Haifa小組(Core 2是由這個小組負責的)。這樣Core 2不使用SMT就避免了冒險。
Nehalem的同步多線程(Simultaneous Multi-Threading,SMT)是2-way的,每核心可以同時執行2個線程。對於執行引擎來說,在多線程任務的情況下,就可以掩蓋單個線程的延遲。SMT功能的好處是只需要消耗很小的核心面積代價,就可以在多任務的情況下提供顯著的性能提升,比起完全再添加一個物理核心來說要划算得多。這個和以前P4的HT技術是一樣的,但比較起來,Nehalem的優勢是有更大的緩存和更大的內存帶寬,這樣就更能夠有效的發揮。按照INTEL的說法,Nehalem的SMT可以在增加很少能耗的情況下,讓性能提升20-30%。
對於SMT的各線程間所採用的資源共享策略有許多種:
1、複製型—— 線程都可以複製使用
寄存器狀態
重命名RSB(重命名返回堆棧緩存)
大頁表ITLB
2、靜態分配型—— 一般由線程平分
各種主要的緩衝:讀取、存儲、重排序
小頁表ITLB
3、競爭共享—— 由線程動態佔有
保留站(RS)
緩存(Cache)
數據TLB(DTLB),L2 TLB
4、不受影響
執行單元
Nehalem同時也降低了同步原語(起始同步),比如LOCK prefix、XCHG和CMPXCHG等指令的延遲。同步原語在多線程編程中是必需的,而多線程的擴展性被同步所限制,通過降低延遲,可以提高現在多線程軟體的性能。INTEL宣稱,Nehalem的LOCK CMPXCHG指令(其作用是使整個流水線串列化)的延遲是P4的約20%,Core 2的約60%。儘管降低了延遲,但行為仍然和以前的CPU還是一樣的,鎖定指令(Lock)並不是管道化的,即使後面的操作可以被提前到鎖定指令之前來執行。
亂序引擎和執行部分
(Out-of-Order Engine and Execution Units)
Nehalem的亂序引擎顯著的擴大了,除了性能原因,還有就是為了提供SMT,因為SMT需要資源共享。
和Core 2一樣,Nehalem的寄存器重命名表(register alias table,RAT)指明每一個結構寄存器(architectural register)要麼進入重排序緩衝(Re-Order Buffer,ROB),要麼是進入撤銷寄存器文件(Retirement Register File,RRF,或翻譯為引退寄存器文件),並且保持有絕大多數最近的推測值狀態(speculative state)。而RRF則保持有絕大多數最近的非推測狀態(non-speculative state)。RAT可以每周期重命名4個微操作,給每一個微操作在ROB中一個目的地寄存器(destination register)。被重命名的指令就讀取它們的源操作數並被發送到通用架構的保留站(unified Reservation Station,RS,可以被各種指令類型使用)。
Nehalem的ROB(重排序緩衝)從96項增加到128項,RS(保留站)從32項增加到36項,它們都由兩個線程所共享,但是使用不同的策略。ROB是靜態分配給2個線程,使得2個線程在指令流里都可以預測得一樣遠。而RS則是競爭共享,基於各線程的需求。這是因為許多時候一個線程可能會中止,從內存等待操作數,而使用到很少的RS項。這樣就不如讓另一個更活躍的線程儘可能多地使用RS項。在RS中的指令當其所有操作數都準備好時,就被分配到執行單元去。
Nehalem的執行單元與Core 2相比,基本沒有大的改變,而且並不受SMT的影響,除了使用率更高之外。
TLB,虛擬化性能
除了改變緩存架構,Nehalem還改變了TLB等級架構。TLB是用來緩存虛擬地址和物理地址映射關係的。Core 2有著非常有趣的TLB安排,L1 DTLB(INTEL有時也叫做micro-TLB)非常的小,並且只用來讀取。它有16項小頁表(4KB page)和16項大頁表(2M/4M pages),每一個都是4路聯合。L2 DTLB更大一些,可以讀取和存儲(當在L1 DTLB中讀取失敗時,就到L2 DTLB中來讀取,並且L2 DTLB負責所有的存儲),它有256項小頁表和32項大頁表,也都是4路聯合。
Nehalem則建立起了真正意義上的兩級TLB體系,可以動態分配給SMT的活躍線程狀態(thread context)。Nehalem的L1 DTLB可以做所有的存儲訪問(可以讀取和存儲),它有64項小頁表和32項大頁表,也都是4路聯合。而新的L2 TLB是通用型的(可以用於指令和數據),它只有512項小頁表,也是4路聯合。
Nehalem和Core 2的TLB的一個明顯的差異是它們覆蓋緩存的深度不同。Core 2(Penryn)有6MB L2,通過使用小頁表(絕大多數的應用都不使用大頁表),TLB可以轉換2176KB的內存(地址),這樣就覆蓋了1/3的L2。而Nehalem的一個核心有576項小頁表,整個CPU總共則是2304項,這樣TLB就可以轉換9216KB的內存,這已經超過8MB L3的容量了。
Nehalem的TLB項還通過使用虛擬處理器ID(Virtual Processor ID,VPID)而有所變化。每一個TLB項都緩存一個內存頁的虛擬地址到物理地址的轉換。而這個轉換是特定於一個給定的進程或虛擬機(virtual machine,VM)。當處理器在虛擬客戶端和主機之間切換時,INTEL過去的CPU都要往TLB里填寫,以確保進程只能夠訪問到它們被允許訪問的內存。而VPID則跟蹤是哪一個VM的TLB項,這樣在該VM退出后又重新進入時,TLB就不用填寫也能夠確保安全。如果一個進程試圖訪問不是它自己的地址轉換,則就會直接在TLB中命中失敗,而不會是到頁表中去做非法訪問。VPID通過降低虛擬機地址轉換的開銷(overhead)而有助於提升虛擬化性能。INTEL估計,Nehalem的一個來回的VM地址轉換的延遲約是Conroe的40%,約比Penryn低1/3(即約是Penryn的66%)。
Nehalem另一個虛擬化方面的改變是擴展頁表(Extended Page Tables,EPT),用來消除許多VM地址轉換,即減少轉換次數(而VPID的作用是降低VM地址轉換的延遲)。通常的頁表是用來匹配客戶機的虛擬地址和客戶機的物理地址,然而在一個虛擬化系統中,也有從客戶機的物理地址到主機的物理地址的轉換。INTEL早期的CPU(和AMD在Barcelona之前的CPU)將需要系統管理程序(hypervisor)來處理頁面錯誤,而Nehalem則通過EPT,來消除了許多不必要的虛擬機退出。

Nehalem的模塊化設計

以適應不同的市場需求。
模塊化組件有:
1、核心數量
2、SMT功能
3、L3緩存容量
4、QPI連接數量
5、IMC數量
6、內存類型
7、內存通道數量
8、整合顯卡
9、能耗和時鐘頻率
未來預定會發布的幾種Nehalem有:
Gainestown,用於Xeon DP
Bloomfield,定位於高端桌面市場
這兩種將於08年4季度上市。RWT認為可能Bloomfield將沒有SMT。
2009年發布:
Havendale,桌面雙核
Auburndale,移動雙核
Clarksfield,移動四核
Beckton,用於Xeon MP
Lynnfield,桌面主流四核
Nehalem的電路級技術,可能得等到秋季IDF才會公布。AMD的4核,其電路設計就發生了非常大的改變,從原來的1個變成具有5個時鐘分佈網路(clock distribution network),有3個不同的電壓層(voltage plane),並在不同時鐘域(clock domain)之間使用動態FIFO。估計INTEL也將採用類似的手段來控制功耗和提升性能。現在比較有意思的問題是INTEL將採用何種動態時鐘技術(dynamic clocking technique)來提升單個線程的性能。現在的Penryn已經可以動態提升一個核心的頻率和電壓,當另一個核心是空閑的時候。而這項技術顯然對Nehalem是更有用的。

2Nehalem微架構

Nehalem微架構分為兩個主要部分:計算內核與非計算內核
一. 計算內核的設計來源於之前的微架構,並對其進行了優化和加強,主要為以下幾個方面:
(1) 支持超線程----第三代超線程技術,四核心時多達八個線程
(2) 支持虛擬化設備輸入/輸出 (VT-d)----在之前以虛擬化CPU為主的基礎上增加設備輸入/輸出的虛擬化,能有效提高虛擬機的性能和效率。
(3) 內核加速模式(Turbo Mode)----內核運行動態加速。可以根據需要開啟、關閉以及加速單個內核的運行。例如,在一個四核的Nehalem 微架構處理器中,如果一個任務只需要兩個內核,可以關閉另外兩個內核的運行,同時把工作的兩個內核的運行主頻提高。如果任務只需要一個內核,可以關閉其它三個內核,同時把工作的一個內核提高到更高的主頻運行。這樣動態的調整可以提高系統和CPU整體的能效比率。
(4) 新增的SSE 4.2指令集等等。
二. 非計算內核的設計改動令人矚目,主要的有:
(1) Cache的設計----採用三級全內含式Cache設計,L1的設計和Core 微架構一樣;L2採用超低延遲的設計,每個內核256KB;L3採用共享式設計,被片上所有內核共享。
(2) 集成了內存控制器(IMC)----從晶元組上移到CPU片上,支持多通道DDR3內存,內存讀取的延遲大幅度減少,內存帶寬大幅提升,最多可達三倍。
(3) QPI----"快速通道互聯",取代前端匯流排(FSB)的一種點到點連接技術,20位寬的QPI連接其帶寬可達驚人的每秒25.6GB,遠非FSB可比。QPI最初能夠發放異彩的是支持多個處理器的伺服器平台,QPI可以用於多處理器之間的互聯。
目前,基於Nehalem微架構的Bloomfield處理器(Bloomfield也是產品代碼)已經正式命名為"酷睿 i7"。酷睿是品牌,"i7"是系列編號。酷睿這一名稱現在和未來都將是英特爾公司PC處理器產品的旗艦品牌。
首款基於Nehalem微架構的處理器將是用於台式機的處理器酷睿 i7,支持的晶元組為x58。這款處理器有4個內核,計劃在今年第四季度上市。用於伺服器和筆記本電腦的Nehalem微架構處理器也會在將來陸續上市。

3Nehalem代號由來

熟悉英特爾公司的人大概都知道每個英特爾的產品或者具有代表性的技術在開發的時候都有一個產品代碼或者項目代碼。這些代碼不會用於正式的產品上市,只會用於開發階段的溝通。
英特爾產品上市時使用的正式品牌和產品名的確定要遠遠晚於產品的立項和開發階段,產品的品牌和產品名涉及的方方面面太多,如法律方面的:商標註冊,使用範圍;人文方面的:用戶接受度等等。
因此,為了溝通方面,就先使用代碼溝通,英特爾公司把代碼的選擇權交給項目組或者項目的負責人,他們可以根據自己的喜好來給新產品和新技術取個代碼。不過,命名也不是天馬行空,有個前提,為了避免法律上潛在的風險,代碼名字的選用應該是地圖上可以找到的。
英特爾很多產品的開發部門都集中在加利福尼亞州(California)舊金山附近的矽谷以及俄勒岡州(Oregon)波特蘭市周邊,所以在這兩個地方工作的英特爾項目組都會以工作地周圍的地名,街道名,河流名,山名等等作為產品或者項目的代碼,它們在地圖上都可以找到。
當然,代碼的選用不限於這兩個州,項目的負責人也可以從自己家鄉的地圖或者其他地方地圖上可以找到的名字來作為代碼。在我印象中,中國團隊負責的一些項目就用過像Pearl River(珠江),Yellow River(黃河), O'River(甌江)等等,因為項目是區域性的,也只是在內部溝通使用,所以眾多代碼並不為公眾知曉。
我特意查了一下,Nehalem其實是美國俄勒岡州波特蘭市的一個小小的衛星城。

相關評論

同義詞:暫無同義詞