天天看點

從CPU、記憶體和I/O深度了解IA架構伺服器

從CPU、記憶體和I/O深度了解IA架構伺服器  

2012-09-04 00:30:08|  分類: RHCA_442 |字号 訂閱

從性能角度來看,處理器、 記憶體和I/O這三個子系統在 伺服器中是最重要的,它們也是最容易出現性能瓶頸的地方。目前市場上主流的 伺服器大多使用英特爾Nehalem、Westmere微核心架構的三個家族處理器:Nehalem-EP,Nehalem-EX和Westmere-EP。下表總結了這些處理器的主要特性:

Nehalem-EP Westmere-EP Nehalem-EX Nehalem-EX
商業名稱 至強5500 至強5600 至強6500 至強7500
支援的最插座數 2 2 2 8
每插座最大核心數 4 6 8 8
每插座最大線程數 8 12 16 16
MB緩存 (3級) 8 12 18 24
最大記憶體DIMM數 18 18 32 128

  在本文中,我們将分别從處理器、記憶體、I/O三大子系統出發,帶你一起來梳理和了解最新英特爾架構伺服器的變化和關鍵技術。

  一、處理器的演變

  現代處理器都采用了最新的矽技術,但一個單die(構成處理器的半導體材料塊)上有數百萬個半導體和數兆存儲器。多個die組織到一起就形成了一個矽晶片,每個die都是獨立切塊,測試和用陶瓷封裝的,下圖顯示了封裝好的英特爾至強5500處理器外觀。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 1 英特爾至強5500處理器

  插座

  處理器是通過插座安裝到主機闆上的,下圖顯示了一個英特爾處理器插座,使用者可根據自己的需要,選擇不同時鐘頻率和功耗的處理器安裝到主機闆上。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 2 英特爾處理器插座

  主機闆上插座的數量決定了最多可支援的處理器數量,最初,伺服器都隻有一個處理器插座,但為了提高伺服器的性能,市場上已經出現了包含2,4和8個插座的主機闆。

  在處理器體系結構的演變過程中,很長一段時間,性能的改善都與提高時鐘頻率緊密相關,時鐘頻率越高,完成一次計算需要的時間越短,是以性能就越好。随着時鐘頻率接近4GHz,處理器材料實體性質方面的原因限制了時鐘頻率的進一步提高,是以必須找出提高性能的替代方法。

  核心

  半導體尺寸不斷縮小(Nehalem使用45nm技術,Westmere使用32nm技術),允許在單塊die上內建更多半導體,利用這個優勢,可在一塊die上多次複制最基本的CPU(核心),是以就誕生了多核處理器。

  現在市場上多核處理器已經随處可見,每顆處理器包含多個CPU核心(通常是2,4,6,8個 ),每個核心都有一級緩存(L1),通常所有的核心會共享二級(L2)、三級緩存(L3)、總線接口和外部連接配接,下圖顯示了一個雙核心的CPU架構。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 3 雙核心CPU架構示意圖

  現代伺服器通常提供了多個處理器插座,例如,基于英特爾至強5500系列(Nehalem-EP)的伺服器通常包含兩個插座,每個插座四個核心,總共可容納八個核心,而基于英特爾至強7500系列(Nehalem-EX)的伺服器通常包含八個插座,每個插座八個核心,總共可容納64個核心。

  下圖顯示了更詳細的雙核處理器架構示意圖,CPU的主要元件(提取指令,解碼和執行)都被複制,但系統總線是公用的。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 4 雙核處理器的詳細架構示意圖

  線程

  為了更好地了解多核架構的含義,我們先看一下程式是如何執行的,伺服器會運作一個核心(如Linux,Windows的核心)和多個程序,每個程序可進一步細分為線程,線程是配置設定給核心的最小工作單元,一個線程需要在一個核心上執行,不能進一步分割到多個核心上執行。下圖顯示了程序和線程的關系。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 5 程序和線程的關系

  程序可以是單線程也可以是多線程的,單線程程序同一時間隻能在一個核心上執行,其性能取決于核心本身,而多線程程序同一時間可在多個核心上執行,是以它的性能就超越了單一核心上的性能表現。

  因為許多應用程式都是單線程的,在多程序環境中,多插座、多核心的架構通常會帶來友善,在虛拟化環境中,這個道理一樣正确,Hypervisor允許在一台實體伺服器上整合多個邏輯伺服器,建立一個多程序和多線程的環境。

  英特爾超線程技術

  雖然單線程不能再拆分到兩個核心上運作,但有些現代處理器允許同一時間在同一核心上運作兩個線程,每個核心有多個并行工作能力的執行單元,很難看到單個線程會讓所有資源繁忙起來。

  下圖展示了英特爾超線程技術是如何工作的,同一時間在同一核心上有兩個線程執行,它們使用不同的資源,是以提高了吞吐量。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 6 英特爾超線程技術工作原理

  前端總線

  在多插座和多核心的情況下,了解如何通路記憶體和兩個核心之間是如何通信的非常重要,下圖顯示了過去許多英特爾處理器使用的架構,被稱作前端總線 (FSB)架構。在FSB架構中,所有通信都是通過一個單一的,共享的雙向總線發送的。在現代處理器中,64位寬的總線以4倍速總線時脈速度運作,在某些産品中,FSB資訊傳輸速率已經達到1.6GT/s。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 7 基于前端總線的伺服器平台架構

  FSB将所有處理器連接配接到晶片組的叫做北橋(也叫做記憶體控制器中樞),北橋連接配接所有處理器共享通路的記憶體。

  這種架構的優點是,每個處理器都可以通路其它所有處理可以通路的所有記憶體,每個處理器都實作了緩存一緻性算法,保證它的内部緩存與外部存儲器,以及其它所有處理器的緩存同步。

  但這種方法設計的平台要争奪共享的總線資源,随着總線上信号傳輸速度的上升,要連接配接新裝置就變得越來越困難了,此外,随着處理器和晶片組性能的提升,FSB上的通信流量也會上升,會導緻FSB變得擁擠不堪,成為瓶頸。

  雙獨立總線

  為了進一步提高帶寬,單一共享總線演變成了雙獨立總線架構(DIB),其架構如下圖所示,帶寬基本上提高了一倍。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 8 基于雙獨立總線的伺服器平台架構

  但在雙獨立總線架構中,緩存一緻性通信必須廣播到兩條總線上,是以減少了總有效帶寬,為了減輕這個問題,在晶片組中引入了“探聽過濾器”來減少帶寬負載。

  如果緩存未被擊中,最初的處理器會向FSB發出一個探聽指令,探聽過濾器攔截探聽,确定是否需要傳遞探聽給其它FSB。如果相同FSB上的其它處理器能滿足讀請求,探聽過濾器通路就被取消,如果相同FSB上其它處理器不滿意讀請求,探聽過濾器就會确定下一步的行動。如果讀請求忽略了探聽過濾器,資料就直接從記憶體傳回,如果探聽過濾器表示請求的目标緩存在其它FSB上不存在,它将向其它部分反映探聽情況。如果其它部分仍然有緩存,就會将請求路由到該 FSB,如果其它部分不再有目标緩存,資料還是直接從記憶體傳回,因為協定不支援寫請求,寫請求必須全部傳播到有緩存副本的所有FSB上。

  專用高速互聯

  在雙獨立總線之後又出現了專用高速互聯架構(Dedicated High-Speed Interconnect,DHSI),其架構如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 9 基于DHSI的伺服器平台架構

  基于DHSI的平台使用四個獨立的FSB,每個處理器使用一個FSB,引入探聽過濾器實作了更好的帶寬擴容,FSB本身沒多大變化,隻是現在變成點對點的配置了。

  使用這種架構設計的平台仍然要處理快速FSB上的電信号挑戰,DHSI也增加了晶片組上的針腳數量,需要擴充PCB路線,才能為所有FSB建立好連接配接。

  英特爾QuickPath互聯

  随英特爾酷睿i7處理器引入了一種新的系統架構,即著名的英特爾QuickPath互聯(QuickPath Interconnect,QPI),這個架構使用了多個高速單向連接配接将處理器和晶片組互聯,使用這種架構使我們認識到了:

  ①. 多插座和多核心通用的記憶體控制器是一個瓶頸;

  ②. 引入多個分布式記憶體控制器将最符合多核處理器的記憶體需要;

  ③. 在大多數情況下,在處理器中內建記憶體控制器有助于提升性能;

  ④. 提供有效的方法處理多插座系統一緻性問題對大規模系統是至關重要的。

  下圖顯示了一個多核處理器,內建了記憶體控制器和多個連接配接到其它系統資源的英特爾QuickPath的功能示意圖。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 10 內建英特爾QPI和DDR 3記憶體通道的處理器架構

  在這個架構中,每個插座中的所有核心共享一個可能有多個記憶體接口的IMC(Integrated Memory Controllers,內建記憶體控制器)。

  IMC可能有不同的外部連接配接:

  ①. DDR 3記憶體通道 – 在這種情況下,DDR 3 DIMM直接連接配接到插座,如下圖所示,Nehalem-EP(至強5500)和Westmere-EP(至強5600)就使用了這種架構。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 11 具有高速記憶體通道的處理器

  ②. 高速串行記憶體通道 – 如下圖所示,在這種情況下,外部晶片(SMB:Scalable Memory Buffer,可擴充記憶體緩存)建立DDR 3記憶體通道,DDR 3 DIMM通過這個通道連接配接,Nehalem-EX使用了這種架構。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 12 四插座Nehalem-EX

  IMC和插座中的不同核心使用英特爾QPI互相通信,實作了英特爾QPI的處理器也可以完全通路其它處理器的記憶體,同時保持緩存的一緻性,這個架構也叫做“緩存一緻性NUMA(Non-Uniform Memory Architecture非統一記憶體架構)”,記憶體互聯系統保證記憶體和所有潛在的緩存副本總是一緻的。

  英特爾QPI是一個端到端互聯和消息傳遞方案,在目前的實作中,每個連接配接由最高速度可達25.6 GB/s或6.4 GT/s的20條線路組成。

  英特爾QPI使用端到端連接配接,是以在插座中需要一個内部交叉路由器,提供全局記憶體通路,通過它,不需要完整的連接配接拓撲就可以建構起系統了。

  圖12顯示了四插座Nehalem-EX配置,每個處理器有四個QPI與其它三個處理器和Boxboro-EX晶片組互聯。

  二、記憶體子系統

  電子業在記憶體子系統上付出了艱辛的努力,隻為緊跟現代處理器需要的低通路時間和滿足當今應用程式要求的高容量需求。

  解釋目前記憶體子系統之前,我們先了解一下與記憶體有關的一些常用術語。

  ①. RAM(随機通路存儲器)

  ②. SRAM(靜态RAM)

  ③. DRAM(動态RAM)

  ④. SDRAM(同步DRAM)

  ⑤. SIMM(單列直插式記憶體子產品)

  ⑥. DIMM(雙列直插記憶體子產品)

  ⑦. UDIMM(無緩沖DIMM)

  ⑧. RDIMM(帶寄存器的DIMM)

  ⑨. DDR(雙資料速率SDRAM)

  ⑩. DDR2(第二代DDR)

  ⑩. DDR3(第三代DDR)

  電子器件工程聯合委員會(Joint Electron Device Engineering Council,JEDEC)是半導體工程标準化機構,JEDEC 21,22定義了從256位SRAM到最新的DDR3模組的半導體存儲器标準。

  現代伺服器的記憶體子系統是由RAM組成的,允許資料在一個固定的時間按任意順序通路,不用考慮它所在的實體位置,RAM可以是靜态的或動态的。

  SRAM

  SRAM(靜态RAM)通常非常快,但比DRAM的容量要小,它們有一塊晶片結構維持資訊,但它們不夠大,是以不能作為伺服器的主要記憶體。

  DRAM

  DRAM(動态RAM)是伺服器的唯一選擇,術語“動态”表示資訊是存儲在內建電路的電容器内的,由于電容器會自動放電,為避免資料丢失,需要定期充電,記憶體控制器通常負責充電操作。

  SDRAM

  SDRAM(同步DRAM)是最常用的DRAM,SDRAM具有同步接口,它們的操作與時鐘信号保持同步,時鐘用于驅動流水線記憶體通路的内部有限狀态機,流水線意味着上一個通路未結束前,晶片可以接收一個新的記憶體通路,與傳統DRAM相比,這種方法大大提高了SDRAM的性能。

  DDR2和DDR3是兩個最常用的SDRAM,下圖顯示了一塊DRAM晶片的内部結構。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 13 DRAM晶片的内部結構

  記憶體陣列是由存儲單元按矩陣方式組織組成的,每個單元都一個行和列位址,每一位都是存儲在電容器中的。

  為了提高性能,降低功耗,記憶體陣列被分割成多個“記憶體庫(bank)”,下圖顯示了一個4-bank和一個8-bank的記憶體陣列組織方式。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 14 記憶體bank

  DDR2晶片有四個内部記憶體bank,DDR3晶片有八個内部記憶體bank。

  DIMM

  需要将多個記憶體晶片組裝到一起才能構成一個記憶體子系統,它們就是按著名的DIMM(雙列直插記憶體子產品)組織的。

  下圖顯示了記憶體子系統的傳統組織方式,例如,記憶體控制器連接配接四個DIMM,每一個由多塊DRAM晶片組成,記憶體控制器有一個位址總線,一個資料總線和一個指令(也叫做控制)總線,它負責讀,寫和重新整理存儲在DIMM中的資訊。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 15 傳統記憶體子系統示例

  下圖展示了一個記憶體控制器與一個DDR3 DIMM連接配接的示例,該DIMM由八塊DRAM晶片組成,每一塊有8位資料存儲能力,每存儲字(記憶體資料總線的寬度)則共有64位資料存儲能力。位址總線有15位,它可在不同時間運送“行位址”或“列位址”,總共有30個位址位。此外,在DDR3晶片中,3位的bank位址允許通路8個bank,可被視作提高了控制器的位址空間總容量,但即使記憶體控制器有這樣的位址容量,市面上DDR3晶片容量還是很小。最後,RAS(Row Address Selection,行位址選擇),CAS(Column Address Selection,列位址選擇),WE(Write Enabled,寫啟用)等都是指令總線上的。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 16 DDR3記憶體控制器示例

  下面是一個DIMM的示意圖。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 17 DIMM示意圖

  上圖顯示了8個DDR3晶片,每個提供了8位資訊(通常表示為x8)。

  ECC和Chipkill

  資料完整性是伺服器架構最關注的一個點,很多時候需要安裝額外的DIMM檢測和恢複記憶體錯誤,最常見的辦法是增加8位ECC(糾錯碼),将存儲字從64 位擴大到72位,就象海明碼一樣,允許糾正一位錯誤,檢測兩位錯誤,它們也被稱作SEC(Single Error Correction,單糾錯)/DED(Double Error Detection,雙檢錯)。

  先組織存儲字再寫入到記憶體晶片中,EEC可以用于保護任一記憶體晶片的失效,以及單記憶體晶片的任意多位錯誤,這些功能有幾個不同的名字。

  ①. Chipkill是IBM的商标

  ②. Oracle稱之為擴充EEC

  ③. 惠普稱之為Chipspare

  ④. 英特爾有一個類似的功能叫做x4單裝置資料校正(Intel x4 SDDC)

  Chipkill通過跨多個記憶體晶片位散射EEC字的位實作這個功能,任一記憶體晶片失效隻會影響到一個ECC位,它允許重建記憶體中的内容。

  下圖了顯示了一個讀和寫128位資料的記憶體控制器,增加EEC後就變成144位了,144位分成4個36位的存儲字,每個存儲字将是SEC/DED。如果使用兩個DIMM,每個包含18個4位晶片,可以按照下圖所示的方法重組位,如果晶片失效,每4個字中隻會有一個錯誤,但因為字是SEC/DED的,每 4個字可以糾正一個錯誤,是以所有錯誤都可以被糾正過來。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 18 Chipkill示例

  記憶體Rank

  我們重新回到DIMM是如何組織的,一組産生64位有用資料(不計ECC)的晶片叫做一個Rank,為了在DIMM上存儲更多的資料,可以安裝多個Rank,目前有單,雙和四個Rank的 DIMM,下圖顯示了這三種組織方法。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 19 DIMM和記憶體排

  上圖最前面顯示的是一個單Rank的RAM,由9個8位晶片組成,一般表示為1Rx8,中間顯示的是一個1Rx4,由18個4位晶片組成,最後顯示的是一個2Rx8,由18個8位晶片組成。

  記憶體Rank不能使用位址位選擇,隻能使用晶片選擇,現代記憶體控制器最多可達8個獨立的晶片選擇,是以最大可支援8個Rank。

  UDIMM和RDIMM

  SDRAM DIMM進一步細分為UDIMM(無緩沖DIMM)和RDIMM(帶寄存器的DIMM),在UDIMM中,記憶體晶片直接連接配接到位址總線和控制總線,無任何中間部分。

  RDIMM在傳入位址和控制總線,以及SDRAM之間有額外的元件(寄存器),這些寄存器增加了一個延遲時鐘周期,但它們減少了記憶體控制器上的電負荷,允許記憶體控制器安裝更多的DIMM。

  RDIMM通常更貴,因為它需要附加元件,但它們在伺服器中得到了普遍使用,因為對于伺服器來說,擴充能力和穩定性比價格更重要。

  雖然理論上帶寄存器/無緩沖的和ECC/非ECC DIMM是可以任何組合的,但大多數伺服器級記憶體子產品都同時具有ECC和帶寄存器功能。

  下圖顯示了一個ECC RDIMM,寄存器是箭頭指向的晶片,這個ECC DIMM由9個記憶體晶片組成。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 20 ECC RDIMM

  DDR2和DDR3

  第一代SDRAM技術叫做SDR(Single Data Rate),表示每個時鐘周期傳輸一個資料單元,之後又出現了DDR(Double Data Rate)标準,其帶寬幾乎是SDR的兩倍,無需提高時鐘頻率,可在時鐘上升沿和下降沿信号上同時傳輸資料,DDR技術發展到今天形成了兩套标準:DDR2和DDR3。

  DDR 2 SDRAM的工作電壓是1.8V,采用240針DIMM子產品封裝,通過改善總線信号,它們可以以兩倍于DDR的速度工作在外部資料總線上,規則是:

  ①. 每DRAM時鐘資料傳輸兩次

  ②. 每次資料傳輸8個位元組(64位)

  下表顯示了DDR2标準。

  表2. DDR2 DIMM

标準名稱 DRAM 時鐘頻率 每秒傳輸的資料(百萬) 子產品名稱 峰值傳輸速率GB/s
DDR2-400 200 MHz 400 PC2-3200 3.200
DDR2-533 266 MHz 533 PC2-4200 4.266
DDR2-667 333 MHz 667 PC2-5300 PC2-5400 5.333
DDR2-800 400 MHz 800 PC2-6400 6.400
DDR2-1066 533 MHz 1,066 PC2-8500 ?PC2-8600 8.533

  DDR 3 SDRAM在DDR2的基礎上對以下這些方面做了改進:

  ①. 将工作電壓降低到1.5v,減少功耗;

  ②. 通過引入0.5-8Gb的晶片增加了記憶體密度,單Rank的容量最大可達16GB;

  ③. 增加了記憶體帶寬,記憶體突發長度從4字增加到8字,增加突發長度是為了更好地滿足不斷增長的外部資料傳輸速率,随着傳輸速率的增長,突發長度(傳輸的大小)必須增長,但不能超出DRAM核心的通路速度。

  DDR3 DIMM有240針,數量和尺寸都和DDR2一樣,但它們在電氣特性上是不相容的,缺口位置不一樣,未來,DDR3将工作在更快的時鐘頻率,目前,市面上存在DDR3-800,1066和1333三種類型。

  下表對不同的DDR3 DIMM子產品進行了總結。

  表3. DDR3 DIMM

标準名稱 RAM 時鐘頻率 每秒傳輸的資料(百萬) 子產品名稱 峰值傳輸速率 GB/s
DDR3-800 400 MHz 800 PC3-6400 6.400
DDR3-1066 533 MHz 1,066 PC3-8500 8.533
DDR3-1333 667 MHz 1,333 PC3-10600 10.667
DDR3-1600 800 MHz 1,600 PC3-12800 12.800
DDR3-1866 933 MHz 1,866 PC3-14900 14.900

  三、I/O子系統

  I/O子系統負責在伺服器記憶體和外部世界之間搬運資料,傳統上,它是通過伺服器主機闆上相容PCI标準的I/O總線實作的,開發PCI的目的就是讓計算機系統的外圍裝置實作互聯,PCI的曆史非常悠久,現在最新的進化版叫做PCI-Express。

  外圍元件互聯特殊興趣小組(Peripheral Component Interconnect Special Interest Group ,PCI-SIG)負責開發和增強PCI标準。

  PCI Express

  PCI Express(PCIe)是一個計算機擴充接口卡格式,旨在替代PCI,PCI-X和AGP。

  它消除了整個所有I/O引起的限制,如伺服器總線缺少I/O帶寬,目前所有的作業系統都支援PCI Express。

  上一代基于總線拓撲的PCI和PCI-X已經被點到點連接配接取代,由此産生的拓撲結構是一個單根聯合體的樹形結構,根聯合體負責系統配置,枚舉PCIe資源,管理中斷和PCIe樹的錯誤。根聯合體和它的端點共享一個位址空間,通過記憶體讀寫和中斷進行通信。

  PCIe使用點到點連結連接配接兩個元件,連結由N個通道組成,每個通道包含兩對電路,一對用于傳輸,另一對用于接收。

  南橋(也叫做ICH:I/O Controller Hub)通常會提供多個PCIe通道實作根聯合體的功能。

  每個通道連接配接到一個PCI Express端點,一個PCI Express Switch,一個PCIe或一個PCIe橋,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 21 PCI Express根聯合體

  根據通道編号使用不同的連接配接器,下圖顯示了四個不同的連接配接器,及單/雙向時的速度。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 22 PCI Express連接配接器

  在PCIe 1.1中,通道運作在2.5Gbps,可同時部署16條通道,如下圖所示,可支援的速度從2Gbps(1x)到32Gbps(16x),由于協定開銷,支援10GE接口需要8x。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 23 PCI Express通道

  PCIe 2.0(也叫第二代PCIe)帶寬提升了一倍,從2Gbit/s提高到4Gbit/s,通道數量也擴大到了32x,PCIe 4x就足以支援10GE了。

  PCIe 3.0将會再增加一倍帶寬,最終的PCIe 3.0規範預計會在2010年年中釋出,到2011年就可看到支援PCIe 3.0的産品,PCIe 3.0能有效地支援40GE(下一代以太網标準)。

  目前所有的PCI Express産品都是單根的(Single Root,SR),如控制多個端點的單I/O控制器中樞(ICH)。

  多根(Multi Root,MR)也發展了一段時間,但目前還未見到曙光,由于缺少元件和關注,目前還有諸多問題。

  SR-IOV(Single Root I/O Virtualization,單根I/O虛拟化)是PCI-SIG開發的另一個相關标準,主要用于連接配接虛拟機和Hypervisor。

  四、英特爾微架構

  英特爾Nehalem和Westmere微架構,也被稱為32和45nm酷睿微架構。

  Nehalem微架構于2009年初引入了伺服器,也是第一個使用45nm矽技術的架構,Nehalem處理器可應用于高端桌面應用程式,超大規模伺服器平台等,代号名來源于美國俄勒岡州的Nehalem河。

  根據英特爾的說法,處理器的發展速度就象嘀嗒(Tick and Tock)鐘聲的節奏一樣,如下圖所示,Tick是對現有處理器架構進行縮小,而Tock則是在前一代技術上發展起來的全新架構,Nehalem就是 45nm的Tock,Westmere就是緊跟Nehalem的32nm Tick。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 24 英特爾“嘀嗒”處理器開發模式

  Nehalem和Westmere在不同需求之間取得了平衡:

  ①. 與新興應用程式(如多媒體)相比,現有應用程式的性能;

  ②. 對輕量級或重量級應用程式的支援同樣良好;

  ③. 可用範圍從筆記本到伺服器全包括。

  平台架構

  這可能是近10年來英特爾最大的平台架構轉變,包括多個高速點到點連接配接,如英特爾的QuickPath互聯,內建記憶體控制器(IMC)等。

  下圖顯示了一個雙插座英特爾至強5500(Nehalem-EP)系統示例,請注意CPU插座之間,以及CPU插座與I/O控制器之間的QPI連結,記憶體DIMM直接附加到CPU插座。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 25 雙插座英特爾至強5500(Nehalem-EP)

  內建記憶體控制器(IMC)

  在Nehalem-EP和Westmere-EP中,每個包含內建記憶體控制器(IMC)的插座支援三個DDR3記憶體通道,與DDR2相比,DDR3記憶體運作在更高的頻率,是以它具有更高的記憶體帶寬。此外,對于雙插座架構,有兩套記憶體控制器,所有這些改進與前一代英特爾平台相比,帶寬提高了3.4倍,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 26 RAM帶寬

  随着時間的推移,帶寬以後還會繼續增加,有了內建的記憶體控制器後,延遲也減小了。

  其功耗也減少了,因為DDR3的工作電壓是1.5V,DDR2是1.8V,功耗與電壓的平方成正比,是以電壓降低20%,功耗就減少40%。

  最後,IMC支援單,雙和四Rank RDIMM和UDIMM。

  Nehalem-EX有一個類似的,但不完全相同的架構,在Nehalem-EX中,每個插座有兩個IMC,每個IMC支援兩個英特爾可擴充記憶體互聯 (Scalable Memory Interconnects,SMI)連接配接到兩個可擴充記憶體緩沖區(Scalable Memory Buffers,SMB),每個插座就可以連接配接到四個SMB,如下圖所示,每個SMB有兩個DDR3總線,每條總線連接配接到兩個DIMM,是以每個插座可連接配接的RDIMM總量就是16。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 27 SMI/SMB

  Nehalem-EX系統的總記憶體容量與插座數量,以及RDIMM的容量總結如下表所示。

  表4. Nehalem-EX記憶體容量

4GB RDIMM 8GB RDIMM 16GB RDIMM
2 sockets 128 GB 256 GB 512 GB
4 sockets 256 GB 512 GB 1 TB
8 sockets 512 GB 1 TB 2 TB

  英特爾QuickPath互聯(QPI)

  所有的通信架構都從總線架構向點到點連接配接演變,因為點到點連接配接架構具有更快的速度,更好的擴充性,在Nehalem中,英特爾QuickPath互聯已經取代了前端總線,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 28 英特爾QPI

  英特爾QuickPath互聯是一個一緻的點到點協定,不局限于任何特定的處理器,可在處理器,I/O裝置和其它裝置,如加速器之間提供通信。

  可用的QPI數量取決于處理器的類型,在Nehalem-EP和Westmere-EP中,每個插座有兩個QPI,如圖25所示,Nehalem-EX支援四個QPI,允許更多無縫的拓撲結構,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 29 Nehalem-EX拓撲結構

  英特爾至強7500處理器也與第三方節點控制器相容,可以擴大到8個插座以外,實作更大規模的擴充。

  CPU架構

  在Nehalem中,英特爾通過一些技術革新,增加了每個CPU每秒執行的指令數,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 30 Nehalem微架構創新

  其中有些創新是不言自明的,我們将集中介紹最重要的性能和功耗方面的創新。

  在比較性能和功耗時,通常是1%的性能增強就會增多3%的功耗,因為減少1%的電壓,功耗幾乎總是降低3%。英特爾最重要的創新就是增強1%的性能,而功耗僅增多了1%。

  英特爾超線程技術

  英特爾超線程技術(HT)可在相同核心上同時運作多個線程,在Nehalem/Westmere中實作了兩個線程,提高了性能和能源效率。

  超線程的基本思想是增加每個執行單元的複雜度,對于單線程,要保持執行單元繁忙是很困難的,通過在相同核心上運作兩個線程,讓所有資源保持忙碌的可能性更大,這樣整體效率就提高了,如下圖所示,超線程使用的領域非常有限(不到5%),但在多線程環境中極大地提高了效率,超線程也不能取代多核心,它是對核心的合理補充。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 31 英特爾超線程技術

  緩存分級

  一個理想的記憶體系統的需求是它應該有無限的容量,無限的帶寬和零延遲,當然沒有人知道如何建構這樣的系統,最接近的方法是使用分級的記憶體子系統,從大到小,從慢到快設計緩存級别,在Nehalem中,英特爾将緩存層增加到了3層,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 32 緩存分級結構

  與英特爾以前的設計相比,一級緩存(L1,指令和資料)沒有發生變化,在英特爾過去的設計中,所有核心共享二級緩存(L2),如果核心數量限制為2,那這種設計倒是可行的,但Nehalem将核心數增加到了4或8,二級緩存不能再繼續共享下去,因為帶寬和仲裁請求都會變多(可能會達到8倍),為此,英特爾在Nehalem中為每個核心獨立增加了二級緩存(指令和資料),現在核心之間共享的隻有三級緩存(L3)了。

  子產品

  Nehalem采用了子產品化設計,核心,緩存和英特爾QPI都是組成Nehalem處理器的子產品執行個體,如圖30所示。

  這些子產品都是獨立設計的,它們可以工作在不同頻率,不同電壓下,将子產品粘接在一起的是一種新的同步通信協定,它提供了非常低的延遲,以前曾嘗試過異步協定,事實證明那樣做的效率非常低。

  內建功率門限

  這是一種電源管理技術,它是“時鐘門控”技術的進化版本,所有現代英特爾處理器都使用了時鐘門控技術,遇到空閑邏輯時,時鐘門控會自動關閉時鐘信号,進而消除了開關電源,但仍然存在漏電流,漏電流引起了無用的功耗。

  功率門控代替了時鐘門控,讓一個空閑的核心消耗的電力幾乎為零,如下圖所示,對于軟體和應用程式來說這完全是透明的。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 33 Nehalem功率門控

  從技術角度來看實作功率門控是很難的,傳統的45nm工藝就有明顯的洩露,它需要新的半導體技術和大量的銅層(7mm),以前可從來沒有這麼做過,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 34 功率門控半導體

  Nehalem-EP和Westmere-EP都擁有“動态的”功率門控能力,當核心不需要執行工作負載時,它可以完全關掉電源,當工作負載需要核心的計算能力時,核心的電源又重新激活。

  Nehalem-EX擁有“靜态的”功率門控功能,當個别核心失去工作能力時,核心電源被完全關閉,例如,當8核心變成6核心時,這些被停用的核心不能重新打開。對于前一代處理器,在工廠中停用的核心仍然會消耗一些電力,但在Nehalem-EX中,電源是完全關閉的。

  電源管理

  功率傳感器是建設電源管理系統的關鍵,上一代英特爾處理器内置有熱傳感器,但沒有功率傳感器,Nehalem既有熱傳感器又有功率傳感器,通過內建的微控制器(PCU)負責電源管理和監控,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 35 電源控制單元(Power Control Unit,PCU)

  英特爾Turbo Boost技術

  功率門控和電源管理是英特爾Turbo Boost技術的基礎元件,當作業系統需要更好的性能時可以使用英特爾的Turbo Boost模式,如果條件允許(足夠的制冷和供電能力),例如,因為一或多個核心被關閉,英特爾Turbo Boost會提高活動核心的頻率(以及功耗),進而提高核心的性能,如下圖所示,但它算不上一個巨大的改進(3%-11%),但在無線程,不是所有核心都被并行使用的環境中,它還是很有價值的。每上升一步,頻率提高133Mhz。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 36 英特爾Turbo Boost技術

  上圖顯示了三個不同的可能性,正常情況下,所有核心都運作在标稱頻率(2.66GHz),在“4C Turbo”模式下,所有核心的頻率上升一步(達到了2.79GHz),在“<4C Turbo”模式下,兩個核心的頻率上升了兩步(達到了2.93GHz)。

  四、硬體輔助虛拟化

  英特爾虛拟化技術(Virtualization Technology,VT)擴充了核心平台架構,可以更好地支援虛拟化軟體,如VM(虛拟機)和Hypervisor(也叫做虛拟機螢幕),如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 37 虛拟化支援

  VT包含四個主要的元件:

  ①. 英特爾VT-x指的是英特爾64和IA32處理器中所有的虛拟化輔助技術;

  ②. 英特爾VT-d指的是英特爾晶片組中所有虛拟化輔助技術;

  ③. 英特爾VT-c指的是英特爾網絡和I/O裝置中所有虛拟化輔助技術;

  ④. 簡化虛拟機移動的VT Flex Migration。

  a) 英特爾VT-x增強的功能包括:

  ⑤. 一個新的,更高特權的Hypervisor – 允許客戶機作業系統和應用程式運作在他們設計的特權級别中,確定Hypervisor有權控制平台資源;

  ⑥. 基于硬體的轉移 – 在Hypervisor和客戶機作業系統之間轉移在硬體級得到了支援,減少了複雜的,計算密集的軟體轉換需求;

  ⑦. 基于硬體的記憶體保護 – 處理器狀态資訊在專用位址空間為Hypervisor和每個客戶機作業系統保留着。

  此外,Nehalem還增加了:

  ①. EPT(Extended Page Table,擴充頁表)

  ②. VPID(Virtual Processor ID,虛拟處理器ID)

  ③. 客戶機計時器優先(Guest Preemption Timer)

  ④. 描述符表退出(Descriptor Table Exiting)

  ⑤. 英特爾虛拟化技術FlexPriority

  ⑥. 暫停退出循環(Pause Loop Exiting)

  VT Flex Migration

  FlexMigration允許在不同指令集處理器之間移動VM,它是通過同步所有處理器都支援的最小指令集來實作的。

  當VM第一次執行個體化時,它會查詢處理器擷取指令集水準(SSE2,SSE3,SSE4),處理器傳回商定的最低指令集水準,而不是處理器本身支援的指令集水準,這樣就允許VMotion在不同指令集處理器之間移動VM了。

  擴充頁表(EPT)

  EPT是一種新的處于Hypervisor控制下的頁表結構,如下圖所示,它定義了客戶機位址和宿主實體位址之間的映射。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 38 擴充頁表

  虛拟化之前,每個作業系統負責虛拟應用程式位址和“實體位址”之間的程式頁表轉換,使用虛拟化後,這些位址就不再是實體的了,而是在VM中的虛拟位址,Hypervisor需要在用戶端作業系統位址和真實實體位址之間轉換,在EPT出現之前,Hypervisor通過軟體的方式在重要的邊界(如VM 的入口和出口)更新它們以維護頁表。

  有了EPT後,有一個EPT基指針和一個EPT頁表,允許直接從虛拟位址轉換到實體位址,不再需要Hypervisor的介入。

  虛拟處理器ID(VPID)

  在VPID出現之前的虛拟化環境中,每當VM轉換時,CPU會無條件清洗TLB(Translation Lookaside Buffers,轉換後備緩沖區),這樣做的效率很低,并會影響到CPU的性能,有了VPID後,Hypervisor用一個ID标記TLB,允許更有效地清洗緩沖區中的資訊。

  客戶機優先計時器

  有了這個功能後,在指定的時間到了後,Hypervisor可以讓客戶機優先執行,在進入客戶機之前,Hypervisor會設定一個計時器值,當計時器清零時,VM就退出,計時器會讓VM直接退出,沒有中斷。

  描述符表退出

  通過預防關鍵系統資料結構被修改,實作VMM保護客戶機作業系統預防内部攻擊,作業系統操作是由一組CPU使用的關鍵資料結構控制的:IDT,GDT,LDT和TSS。如果沒有這個功能,Hypervisor就無法預防通過修改客戶機的這些資料結構副本,實作惡意軟體在客戶機作業系統上運作的攻擊,Hypervisor可以使用這個功能攔截修改這些資料結構的嘗試,禁止惡意軟體入侵客戶機作業系統。

  FlexPriority

  這是一個提升32位客戶機作業系統性能的技術,旨在加快虛拟化中斷處理速度,進而提高虛拟化性能,FlexPriority通過避免通路進階可程式設計中斷控制器時不必要的VMExit提高中斷處理速度。

  RAS進階可靠性

  與Nehalem-EP相比,Nehalem-EX最大的創新之處在于進階可靠性方面,更恰當地說應該是RAS(Reliability,Availability和Serviceability,即可靠性,可用性和可維護性),如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 39 Nehalem-EX RAS

  特别是,所有主要的處理器功能都具有RAS特性,包括QPI RAS,I/O Hub(IOH) RAS,存儲器RAS和插座RAS。

  糾錯現在使用的是糾正機器檢查中斷(Corrected Machine Check Interrupts,CMCI)信号。

  另一個RAS技術是機器檢查架構恢複(Machine Check Architecture-recovery,MCAr),它是CPU給作業系統報告硬體錯誤的一種機制,有了MCAr後,就可以從緻命系統錯誤中恢複過來。

  部分功能需要作業系統額外支援,或需要硬體廠商實作和驗證。

  這項技術目前僅在Nehalem-EX中含有。

  進階加密标準

  Westmere-EP增加了6個新指令專門給流行的AES(Advanced Encryption Standard,進階加密标準)算法提速,有了這些指令後,所有AES運算都是通過硬體完成的,不隻是速度更快,比軟體實作也更加安全。

  是以應用程式可以使用更強的密鑰,可以加密更多資料以滿足監管要求,除了更安全外,對性能的影響也更小了。

  這項技術目前僅包含在Westmere-EP中。

  可信執行技術

  英特爾可信執行技術(Trusted Execution Technology,TXT)有助于檢測和預防基于軟體的攻擊,特别是:

  ①. 嘗試插入非信任的VMM(Rootkit Hypervisor)

  ②. 威脅到平台記憶體中機密的攻擊

  ③. BIOS和固件更新攻擊

  英特爾TXT使用一個混合了處理器,晶片組和TPM(Trusted Platform Module,可信賴平台子產品)的技術測量引導環境以檢測軟體攻擊,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 40 英特爾可信執行技術

  這項技術目标僅包含在Westmere-EP中。

  晶片設計

  如果你想獲得高性能,又想降低功耗,那麼有多個不同的因素需要平衡。

  随着半導體通道的長度逐漸減小,可用的電壓範圍也變得越來越小,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 41 電壓範圍

  最大電壓是由總功耗和高功率相關的可靠性下降限制的,最低電壓主要是由軟錯誤,特别是存儲器電路中的錯誤限制的。

  一般說來,在CMOS設計中,性能與電壓是成正比的,因為電壓越高頻率也越高。

  ①. 性能~頻率~電壓

  功耗是與頻率和電壓的平方成正比的。

  ②. 功率~頻率x電壓2

  由于頻率和電壓是成正比的,是以:

  ③. 功率~電壓3

  能源效率等于性能和功耗之間比率,是以:

  ④. 能源效率~1/電壓2

  從能源效率的角度來看,減少電壓才會凸現優勢,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 42 功耗與性能的關系

  由于電路更容易遭受軟錯誤的是存儲器,在Nehalem中,英特爾加入了一個複雜的糾錯碼(三重檢測,雙倍糾正)糾正錯誤。此外,緩存的電壓和核心的電壓是解耦的,是以緩存可以保留高電壓,而核心工作在低電壓上。

  對于L1和L2緩存,英特爾已經用新的8半導體設計(8-T SRAM)取代了傳統的6半導體SRAM(6-T SRAM)設計,解耦了讀和寫操作,并允許更低的電壓,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 43 6半導體SRAM與8半導體SRAM對比

  此外,為了降低功耗,英特爾又回到了能耗更低的靜态CMOS技術,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 44 不同技術的功耗對比

  通過重新設計了一些關鍵算法,如指令解碼,再次提升了性能。

  晶片組虛拟化支援

  除了Nehalem提供的虛拟化支援外,在晶片組和主機闆級也增強了對虛拟化的支援,這些改進對于提高Hypervisor(按照英特爾的說法,Hypervisor指的是VMM:虛拟機螢幕)的I/O性能很重要。

  英特爾直接I/O虛拟化技術(VT-d for Direct I/O)

  伺服器使用一個輸入/輸出記憶體管理單元(Input/Output Memory Management Unit,IOMMU)将DMA I/O總線(如PCIe)連接配接到主存儲器,和傳統的記憶體管理單元一樣,它将CPU可見的虛拟位址轉換成實體位址,IOMMU會将裝置可見的虛拟位址映射到實體位址,這些單元也提供了記憶體保護功能。

  I/O虛拟化一個常見的需求是可以隔離和限制裝置通路由分區管理裝置擁有的資源。

  2008年,英特爾公布了IOMMU技術規範:直接I/O虛拟化,縮寫為VT-d。

  英特爾VT-d給VMM提供了以下功能:

  ①. I/O裝置配置設定 – 可靈活給VM配置設定I/O裝置,加強保護,為I/O操作隔離VM的屬性。

  ②. DMA重映射 – 為直接記憶體通路(Direct Memory Accesses,DMA)提供獨立的位址轉換功能。

  ③. 中斷重映射 – 隔離和路由裝置/中斷控制器到VM的中斷。

  ④. 可靠性 – 記錄并報告系統軟體DMA和可能會損壞記憶體或影響VM隔離的中斷錯誤。

  英特爾針對連接配接的虛拟化技術(VT-c for Connectivity)

  英特爾連接配接虛拟化技術(Virtualization Technology for Connectivity,VT-c)是一套I/O虛拟化技術集,它降低了CPU使用率,減少了系統延遲,提高了網絡和I/O吞吐量。

  英特爾VT-c由平台級技術和創新的下一代I/O虛拟化技術集合而成:

  ①. 虛拟機裝置隊列(Virtual Machine Device Queues,VMDq)極大地提高了伺服器的通信管理,為大資料流提供了更好的I/O性能,同時減少了基于軟體的虛拟機螢幕(VMM)的處理負擔。

  ②. 虛拟機直接連接配接(Virtual Machine Direct Connect,VMDc)通過專用的I/O虛拟機,完全繞過Hypervisor中的軟體虛拟交換機,提供了接近原生的性能,它也增強了虛拟機之間的資料隔離,通過虛拟機實時遷移功能提供了更好的靈活性和機動性。

  VMDq

  在虛拟環境中,Hypervisor管理所有VM的網絡I/O活動,随着VM的增多,I/O負載也随之增加,Hypervisor需要更多的CPU周期給網絡接口隊列中的資料包排序,然後正确地路由到目标VM。

  英特爾虛拟機裝置隊列(VMDq)通過在晶片組上新增硬體支援,減輕Hypervisor的負擔,同時增強網絡I/O,特别是有多個網絡接口隊列時,可以實作硬體級智能排序,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 45 VMDq

  當資料包抵達網絡擴充卡時,網絡控制器中的二層分類器/分揀機根據MAC位址和VLAN标記确定每個資料包的目的地應該是哪一個VM,然後按順序将資料包放入配置設定給該VM的接收隊列中,Hypervisor的二層軟體交換機隻是将資料包路由到各自的VM,不會執行繁重的資料排序操作。

  當資料包從虛拟機朝擴充卡傳輸時,Hypervisor會将資料包放入各自的隊列,為了防止阻塞,確定每個隊列都是公平服務的,網絡控制器以一種循環的方式傳輸隊列中的資料包,進而保證服務品質。

  NetQueue

  如果要充分利用VMDq,需要修改VMM以支援每個虛拟機一個隊列,例如,VMware在它的Hypervisor中引入了一個叫做NetQueue的技術,NetQueue可以充分利用幀,VMDq的排序功能,NetQueue和VMDq結合使用可以減輕ESX路由資料包的負擔,進而減輕CPU壓力,并降低延遲,如下圖所示。

從CPU、記憶體和I/O深度了解IA架構伺服器

圖 46 VMM NetQueue

  VMQ

  VMQ是微軟Hyper-V隊列技術,它使用了英特爾以太網控制器的VMDq功能,在傳遞資料包的過程中,使軟體參與處理的過程降低到最少。

  VMDc

  虛拟機直接連接配接(VMDc)可給獨立的VM配置設定直接網絡I/O,這個功能提高了整體網絡性能和VM之間的資料隔離,并讓VM實時遷移成為可能。

  VMDc符合單根I/O虛拟化标準(Single Root I/O Virtualization,SR-IOV)。

  最新的英特爾以太網伺服器控制器支援SR-IOV,将實體I/O端口虛拟成多個虛拟的I/O端口,通過這個功能可以讓VM實作與實體I/O裝置相當的I/O性能,它可以增加實體主機支援的VM數量,增強伺服器的整合能力。

  VMDirectPath

  VMDq和VMDc的結合就誕生了VMware VMDirectPath,以一種類似于“核心搭橋”的方式繞過ESX/vSphere Hypervisor,不使用Hypervisor中的軟交換機,資料直接從實體擴充卡流到vNIC(虛拟網絡擴充卡),反之亦然。

繼續閱讀