from Scali's OpenBlog
https://scalibq.wordpress.com/2012/02/14/the-myth-of-cmt-cluster-based-multithreading/
第一次聽(tīng)到“CMT”這個(gè)術(shù)語(yǔ)的時(shí)候,我有些納悶,難道我一直忽略了某種多線(xiàn)程的技術(shù)嗎?但當我檢索了一下之后,就明白了,如果你 Google 一下這個(gè)詞,你應該會(huì )被帶到 AMD 的宣傳材料頁(yè),把 CMT 解釋成為“基于集群的多線(xiàn)程”或者“集群多線(xiàn)程”。
奇怪的是,在另一個(gè)頁(yè)面(http://dl.acm.org/citation.cfm?id=640477.640525),你會(huì )看到不同的解釋?zhuān)?/p>
使用高速網(wǎng)絡(luò )連接的集群已經(jīng)成為執行計算密集型的并行多線(xiàn)程應用的高性?xún)r(jià)比平臺。
這就很明顯了,集群多線(xiàn)程這個(gè)概念在 AMD 提出 CMT 之前就已經(jīng)被使用,而且表述的更為清晰:傳統 PC 的集群可以用來(lái)構建一臺虛擬超級計算機。
所以 CMT 只是農企市場(chǎng)部門(mén)的一個(gè)“發(fā)明”,他們發(fā)明了一個(gè)聽(tīng)起來(lái)像 SMT 的術(shù)語(yǔ),從而和 Intel 的 HyperThreading 技術(shù)競爭,雖然 HT 也是個(gè)商業(yè)概念,但那是 Intel 對它的 SMT 實(shí)現的命名,SMT(同時(shí)多線(xiàn)程)是實(shí)現多線(xiàn)程的一種被廣泛認知的概念,Intel 也不是第一個(gè)發(fā)明 SMT 的,早在 1968 年,IBM就已經(jīng)開(kāi)展了這方面的研究。
現在的問(wèn)題是很多人已經(jīng)購買(mǎi)了這種處理器,他們認為 CMT 是一種和 SMT 很接近的概念,甚至是等同(equivalent)的,所以他們做了 CMT 和 SMT 的跑分(benchmark),我找到了 Anandtech 幾天前的一篇評測文章(http://www.anandtech.com/show/5279/the-opteron-6276-a-closer-look/6)。
農企不止一次宣稱(chēng)集群多線(xiàn)程相比同時(shí)多線(xiàn)程(超線(xiàn)程)更能有效面對服務(wù)器應用。
我們來(lái)看一下用來(lái)做評測的 CPU:
Opteron 6276:8模塊16線(xiàn)程,包含了兩塊推土機芯片,每片有12億個(gè)晶體管
Opteron 6220:4模塊8線(xiàn)程,12億晶體管
Opteron 6174:12核16線(xiàn)程,包含了兩塊芯片,共計18億晶體管
Xeon X5650:6核12線(xiàn)程,11.7億個(gè)晶體管
問(wèn)題就出在這里,只需要簡(jiǎn)單看一下晶體管的數目就知道,Opteron 6276 相比 Xeon 大了一倍,對比它們的性能公平嗎?如果你堆了一倍的硬件,那就應該能應對更多的負載,這點(diǎn)上 Opteron 還是有優(yōu)勢的,因為它可以同時(shí)處理16個(gè)線(xiàn)程,而Xeon只能處理12個(gè)。
但是如果我們看一下實(shí)際的跑分結果,就知道事實(shí)恰恰相反,AMD需要兩倍的芯片來(lái)達到Intel單芯的性能,更嚴重的是Intel的單芯片的響應時(shí)間比AMD的短。如果這還不能令人信服的話(huà),老架構的Opteron 6174的效率都比 6276高。
當我們在跑分時(shí)我們在跑什么?一系列的數據庫應用場(chǎng)景,MySQL和MSSQL,都是一些整數應用代碼,這時(shí)候CMT做了什么?它并沒(méi)有為整數運算做任何特殊工作!每個(gè)模塊都有兩個(gè)獨立的整數運算核心,模塊內部的FPU才是共享的,但是我們并沒(méi)有用到它,這個(gè)應用場(chǎng)景是最適合CMT的。
我們繼續看CPU可用的執行資源。
Opteron 6276在關(guān)閉了CMT的時(shí)候:
8模塊,8線(xiàn)程,每個(gè)模塊4個(gè)ALU;
每個(gè)線(xiàn)程有兩個(gè)ALU,同一個(gè)模塊內不同線(xiàn)程的ALU不能共享,所以關(guān)閉CMT讓線(xiàn)程數減半的同時(shí),ALU數目也減半;
共計16個(gè)ALU;
在打開(kāi)CMT的時(shí)候:
8模塊,16線(xiàn)程,每個(gè)模塊4個(gè)ALU,每個(gè)線(xiàn)程2個(gè)ALU;
共計32個(gè)ALU;
因為CMT沒(méi)有共享ALU,所以基于CMT的CPU和傳統的SMP(對稱(chēng)多處理機)工作起來(lái)一模一樣,所以你可以期待同樣的擴放性(scaling),因為執行單元只屬于特定的線(xiàn)程,所以啟用CMT只是允許運行更多的線(xiàn)程而已。
Xeon X5650在關(guān)閉SMT的時(shí)候:
6核心,6線(xiàn)程;
每個(gè)核心3個(gè)ALU,每個(gè)線(xiàn)程3個(gè)ALU;
共計18個(gè)ALU;
在打開(kāi)SMT的時(shí)候:
6核心,12線(xiàn)程;
每個(gè)核心3個(gè)ALU,兩個(gè)線(xiàn)程共享3個(gè)ALU;
共計18個(gè)ALU;
CMT和SMT的區別就很明顯了:SMT在單線(xiàn)程的時(shí)候,每個(gè)線(xiàn)程相比CMT可以得到更多的ALU,在多線(xiàn)程的時(shí)候,每個(gè)線(xiàn)程相比CMT的線(xiàn)程要分到相對少的ALU。
這也是為什么SMT給力而CMT不給力,AMD之前的CPU里,每個(gè)線(xiàn)程都有3個(gè)ALU,但是為了減少模塊的大小,AMD現在只能給每個(gè)線(xiàn)程分2個(gè)ALU了,所以推土機的單線(xiàn)程性能相比過(guò)去的Opteron處理器以及Intel Xeon都很捉急。
與此同時(shí),CMT并沒(méi)有減少很多芯片面積,每個(gè)模塊包含了4個(gè)ALU。是的,每個(gè)模塊現在是可以跑兩個(gè)線(xiàn)程了,但是單線(xiàn)程性能如此捉急,只能期待它靠可擴放性堆起來(lái)。
CMT帶來(lái)了什么?什么都沒(méi)有,芯片面積比友商的大,甚至比自己的老產(chǎn)品大,而Xeon又有非常優(yōu)秀的單線(xiàn)程性能,即使SMT沒(méi)有CMT那么好的擴放性,一樣可以hold住重負載的多線(xiàn)程場(chǎng)景。但是SMT帶來(lái)的最大優(yōu)勢是它是一個(gè)節省芯片面積的解決方案,如果愿意,Intel甚至也可以和AMD一樣把兩個(gè)芯片放進(jìn)一個(gè)封裝(package)里,堆出一個(gè)12核24線(xiàn)程的處理器,把AMD爆出翔。
我不確定AMD到底是覺(jué)得CMT哪一點(diǎn)“高效”,因為它需要更多的芯片面積,消耗更大的功率,為了追上并不是高端Xeon的性能,AMD就得拿出最好的Opteron 6276來(lái)比,可是X5650只是個(gè)2.66 GHz的處理器,最高端的X5690主頻是3.46 GHz,這也顯示出小芯片可以上高頻率的優(yōu)勢。
所以咱們也別再裝作CMT是個(gè)有用的技術(shù)了,和SMT相比,只能當作呵呵的商業(yè)概念。
聯(lián)系客服