天天看點

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

本節書摘來自異步社群《思科ucs伺服器統一計算》一書中的第2章,第2.1節,作者【美】silvano gai,tommi salli, roger andersson,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

思科ucs伺服器統一計算

從性能角度來看,處理器、記憶體和i/o是伺服器中最重要的三個子系統。在某個給定的時間點,其中一個常常會成為瓶頸。我們經常會聽說應用程式受cpu限制、受記憶體限制或受i/o限制。

在本章中,我們将詳細介紹這三個子系統,具體參照根據ia-32(intel架構,32位)建構的伺服器,ia-32通常稱為x86架構。具體地講,我們将介紹與ia-32架構相容的最新一代intel處理器,也就是intel微架構(以前的代号為nehalem)1。

nehalem微架構(參見本章的“intel微架構”部分)及其變體westmere微架構,包括了思科ucs使用的三個處理器系列:nehalem-ep、nehalem-ex和westmere-ep。表2-1總結了這三個處理器的主要特征。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

1作者對編輯本章所采用的資訊和材料向intel公司表示感謝。大多數圖檔承蒙intel公司提供。

現代處理器或中央處理器(central processing unit,cpu)都采用了最新的矽技術,一個晶片(包含一個處理器的半導體材料塊)上有數百萬個半導體和數兆記憶體。

多個晶片焊接到一起就形成了一個矽片(矽晶圓),每個晶片都是獨立切塊、測試和用陶瓷封裝的。這個過程包括安裝晶片、将晶片襯墊連接配接到陶瓷封裝的插腳上,然後密封晶片。至此,封裝好的處理器就可以上市并在伺服器上安裝它們了。圖2-1顯示了封裝好的intel xeon 5500處理器。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

處理器是使用稱為“插槽”的裝配/互聯結構安裝到主機闆上的。圖2-2顯示了用于intel處理器的插槽。使用者可根據自己的需要,安裝不同時鐘頻率和功耗的處理器到伺服器主機闆。

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

在處理器架構的演變過程中,在很長一段時間裡,性能的改善都與提高時鐘頻率緊密相關。時鐘頻率越高,完成一次計算需要的時間就越短,是以性能就越高。

随着時鐘頻率接近幾個ghz,處理器的實體材料明顯限制了時鐘頻率的進一步提高,是以必須找出提高性能的替代方法。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

半導體尺寸不斷縮小(nehalem使用45nm技術,westmere使用32nm技術),可以在單塊晶片上內建數百萬個半導體。利用這個優勢,可在一塊晶片上多次複制基本的cpu(核心)。

現在市場上多核處理器(參見圖2-3)已經随處可見,每個處理器(即插槽)包含多個cpu核心(通常是2、4、6或8個),每個核心都與一級緩存(l1)關聯。緩存是用于減少通路主記憶體平均時間的小型快速記憶體。通常,所有的核心會共享一個較大的二級(l2)或三級緩存(l3)、總線接口和外部晶片連接配接。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

在現代伺服器中,核心的數量等于插槽數量與每個插槽核心數量的乘積。例如,基于intel xeon處理器5500系列(nehalem-ep)的伺服器通常使用兩個插槽,每個插槽四個核心,總共八個核心。對于intel xeon7500系列(nehalem-ex),伺服器通常包含8個插槽,每個插槽8個核心,總共可容納64個核心。

圖2-4顯示了更詳細的雙核處理器視圖。cpu的主要元件(指令提取、解碼和執行)都被複制,但通路系統總線是公用的。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

為了更好地了解多核架構的含義,我們先看一下程式是如何執行的。伺服器會運作一個核心(比如linux、windows)和多個程序。每個程序可進一步細分為“線程”。線程是配置設定給核心的最小工作單元,一個線程需要在一個核心上執行,不能進一步分割到多個核心上執行(參見圖2-5)。

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

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

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

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

圖2-6展示了intel超線程技術的工作方式。同一時間在同一核心上執行兩個線程,它們使用不同的資源,是以提高了吞吐量。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

在存在多插槽和多核心的情況下,了解如何通路記憶體以及兩個不同核心之間是如何通信的非常重要。

圖2-7顯示了過去許多intel處理器使用的架構,被稱為前端總線(front-side bus,fsb)。在fsb架構中,所有流量都是通過一個單一的、共享的雙向總線發送的。在現代處理器中,64位寬的總線以4倍的總線時脈速度運作。在某些産品中,fsb資訊傳輸速率已經達到1.6gt/s(12.8gb/s)。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

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

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

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

為了進一步提高帶寬,單一共享總線演變成了雙獨立總線(dual independent bus,dib)架構,如圖2-8所示,可用帶寬基本上提高了一倍。

但在雙獨立總線架構中,緩存一緻性流量必須廣播到兩條總線上,進而減少了總有效帶寬。為了緩解這個問題,在晶片組中引入了“探聽過濾器(snoop filter)”來減少帶寬負載。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

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

在雙獨立總線之後又出現了如圖2-9所示的專用高速互聯(dedicated high-speed interconnect,dhsi)。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

基于dhsi的平台使用4個獨立的fsb,每個處理器各使用一個fsb。引入探聽過濾器實作了更好的帶寬擴充。

fsb本身沒有多大變化,隻是現在變成點對點的配置了。

使用這種方法設計的平台仍然需要應對快速fsb上電子信号傳輸的挑戰,dhsi也增加了晶片組上的針腳數量,需要擴充pcb路線,才能為所有fsb建立好連接配接。

随着intel酷睿i7處理器的引入,許多intel産品已經采用了一種新的系統架構。這就是著名的intel quickpath互聯(intel quickpath interconnect,qpi)。這個架構使用了多個高速單向連結,将處理器和晶片組互聯。使用這種架構,使我們認識到了:

多插槽和多核心共用的記憶體控制器是一個瓶頸;

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

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

提供有效的方法來處理多插槽系統的一緻性問題,對大規模系統至關重要。

圖2-10顯示了一個多核處理器,內建了記憶體控制器和多個連結到其他系統資源的intel qpi的功能示意圖。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

在這個架構中,插槽中的所有核心共享一個可能具有多個記憶體接口(也就是記憶體總線)的內建記憶體控制器(integrated memory controller,imc)。

imc可能具有不同的外部連接配接。

ddr 3記憶體通道:在這種情況下,ddr 3 dimm(參見下一節)直接連接配接到插槽,如圖2-12所示。nehalem-ep(xeon 5500)和westmere-ep(xeon 5600)使用了這種架構。

高速串行記憶體通道:如圖2-11所示。在這種情況下,外部晶片(可擴充記憶體緩存,scalable memory buffer)建立ddr 3記憶體通道,ddr 3 dimm通過這些通道連接配接。nehalem-ex(xeon 7500)使用了這種架構。

《思科UCS伺服器統一計算》一第2章 伺服器架構2.1 處理器的演變

不同插槽中的imc和核心使用intel qpi互相通信。

實作了intel qpi的處理器也可以完全通路其他處理器的記憶體,同時還保持緩存的一緻性。這個架構也稱為“緩存一緻性非統一記憶體架構(non-uniform memory architecture,numa)”——也就是,記憶體互聯系統保證記憶體和所有可能緩存的副本始終保持一緻。

intel qpi是一個點對點的互聯和消息傳遞方案,它使用點對點的差動電流信号傳輸模式。在目前的實作中,每個連結由每個方向最高速度可達25.6 gb/s或6.4 gt/s的20條線路組成(參見本章的“平台架構”部分)。

intel qpi使用點對點的連結,是以在插槽中需要一個内部交叉路由器(參見圖2-10),以提供全局記憶體通路。這種路由直通能力使得不需要完整的連接配接拓撲結構就可以建構系統。

圖2-12顯示了四插槽的intel nehalem-ex配置,每個處理器有4個qpi,并與其他3個處理器和boxboro-ex晶片組互聯(還有smb元件,但是沒有顯示)。

繼續閱讀