天天看點

Intel超線程技術有多少種?

【IT168評測中心】早在10月14日,在Intel釋出Nehalem架構處理器桌面版——Core i7的一個月之前,我們IT168就已經釋出了《再攀性能之巅 Intel全新酷睿i7深度評測》。在其中,我們可以看到以下的圖像文字:

Intel超線程技術有多少種?

  最後,在Pentium 4時代被大家所熟知的HyperThreading超線程技術回歸到了Nehalem架構當中,現在它被稱之為SMT同步多線程技術,從執行上而言它和HT技術是完全一樣的,隻是借助Nehalem增強的RSB和ITLB架構,Nehalem的超線程性能比起老前輩來要更為強大。

  這是筆者在4月份參加IDF2008上海Intel春季開發者論壇上的報道《[IDF08]英特爾下一代處理器:Nehalem》所采用的内容,并一直沿用至今。很多媒體也采用了這樣的說法。然而,“現在它被稱之為SMT同步多線程技術” 這個說法确是不正确的。

Intel超線程技術有多少種?
Intel Core i7支援HT超線程(SMT的一種),共具有4個處理核心,每核心支援兩個線程,共8個線程

  SMT(Simultaneous Multi-Threading,同步多線程)實乃是一個專有名詞,是一種類技術的名稱,不僅僅Nehalem有采用,Pentium 4也有采用,還有很多其他商用處理器也有采用。正确的情況應該是,Nehalem的HT技術和Pentium 4的HT技術一樣,都是屬于SMT技術。

  實際上,超線程技術在Intel的很多處理器裡面都有使用,除了Pentium 4(NetBurst架構)、Core i7(Nehalem架構)之外,Itanium 2(Mondecito)和Atom(Silverthorne)處理器裡面都有,然而它們攜帶的HT技術卻不屬于SMT!

  在整理Intel的多種HT超線程技術之前,我們先來回顧一下MultiThreading多線程技術的分類,MultiThreading多線程就是在一個單個的處理核心内同時運作多個工作線程的技術,和CMP(Chip MultiProcessing,晶片多處理)不同,後者是通過內建多個處理核心的方式來讓系統的處理能力提升——也就是現在常見的多核技術。現在主流的處理器都使用了CMP技術。

  然而CMP技術大規模增加了相應的電路,進而增加了成本,MT(MultiThreading)技術卻不是這樣,它隻需要增加規模很少的部分線路(通常,約2%)就可以提升處理器的總體處理器能力,進而可以很簡單地提升相關應用的性能。

  MultiThreading(或作Multi-Threading)來源于可以追溯到上個世紀90年×××始的一個叫做ILP(Instruction Level Parallelism,指令級并行化)的思想,這個思想産生了一個叫做Throughput Computing(吞吐量計算)的名詞,用來提升如線上交易這樣的并行計算的性能。Throughput Computing的兩種主要方式就是MultiProcessing和MultiThreading。

  一開始,為了開發ILP,在過去的幾十年中利用了超标量(Superscalar,同時具備多個執行器)、亂序執行(Out-Of-Order Execute,允許無資料關聯性的指令同時運作)、動态分支預測、VLIW(Very Long Instruction Word,超長指令集 ) 等技術(前三種可在經典的Pentium Pro架構上看到,最後一個就是Itanium的特色技術)。然而,超标量使設計的複雜性急劇增加,同時,指令之間的資料和控制相關,可以開發的ILP 也有限,以及一些其它因素,使得經典的超标量結構處理器難以進一步提高處理器性能。

  而且從應用的角度看,如線上事務處理OLTP、決策支援系統DSS、Web服務等這樣的應用的特點是具有豐富的線程級并行性(Thread Level Parallelism)而缺乏ILP,是以也就促使了MultiProcessing和MultiThreading的出現。

  MultiThreading多線程技術的思想有些類似于早期的分時共享計算系統,執行多個線程的處理器在遇到某個線程由于Cache Miss或者分支預測失敗而停頓的時候,可以切換到另一個線程來執行。目前主流的MultiThreading具有着三種形式,差别在于線程間共享的資源以及線程切換的機制: 

多線程架構異同
多線程技術 線程間共享資源 線程切換機制 資源使用率

粗粒度多線程

Coarse-Grained MultiThreading

除取指令緩沖、寄存器、控制邏輯外 流水線停頓時 提升單個執行單元使用率

細粒度多線程

Fine-Grained MultiThreading

除寄存器、控制邏輯外 每時鐘周期 提升單個執行單元使用率

同步多線程

SimultaneousMultiThreading

除取指令緩沖、傳回位址堆棧、寄存器、控制邏輯、重排序緩沖、Store隊列外 所有線程同時活動,無切換 提升多個執行單元使用率

   其中CMT和FMT都是在單個執行單元下的技術,不同的線程在指令級别上并不是真正的“并行”,而SMT則具有多個執行單元,同一時間内可以同時執行多個指令,是以前兩者有時先歸類為TMT(Temporal MultiThreading,時間多線程),以和SMT相區分。

  首先介紹CMT——Coarse-Grained MultiThreading是因為:它是最簡單的多線程技術,當單一執行線程遇到長時間的延遲,如Cache Missed時,就進行線程切換,直到原線程等待的操作完成,才切換回去。Coarse-Grained MultiThreading有時也叫Block MultiThreading堵塞多線程或者Cooperative MultiThreading協作多線程。

Intel超線程技術有多少種?

Fujitsu SPARC64 VI/VI+處理器,雙核,每核兩個線程

Intel超線程技術有多少種?

Fujitsu SPARC64 VI/VI+的CMT技術叫做VMT(Vertical Multi-Threading垂直多線程)

  由于CMT很簡單,是以很多處理器都有實作,除了下面列出之外,很多嵌入式微控制器都有實作:

1999年的IBM RS64 III「Pulsar」(單核心/雙線程)

2005年Fujitsu SPARC64 VI「Olympus-C」(雙核心/4線程)

2006年Intel Itanium 2「Montecito」(雙核心/4線程)

2007年Intel Itanium 2「Montvale」(雙核心/4線程)

  Intel的Itanium 2赫然在目!

  FMT——Fine-Grained MultiThreading随時可以在每個時鐘周期内切換多個線程,以追求最大的輸出能力——當然,随時可以切換也是有代價的,它拉長了每個執行線程的平均執行時間。Fine-Grained MultiThreading有時也叫Interleaved MultiThreading交錯多線程或者Pre-emptive MultiThreading搶先多線程。

Intel超線程技術有多少種?

Sun UltraSPARC T1處理器,8核心,每核4個線程

Intel超線程技術有多少種?

Sun UltraSPARC T2處理器,8核心,每核8個線程

Intel超線程技術有多少種?

最後一段表明UltraSPARC T2使用了FMT

  和CMT比起來,FMT要複雜一些,是以相應的處理器就沒有那麼多,例:

2005年Sun UltraSPARC T1「Niagara」(8核心/32線程)

2007年Sun UltraSPARC T2「Niagara 2」(8核心/64線程)

  其實UltraSPARC T2同時還使用了其他的MT技術,才實作了比T1多了一倍的多線程能力,仔細看看上圖,T2還使用了什麼MT技術(注意第一段的CMT是Chip MultiThreading的意思而不是Coarse-Grained MultiThreading的意思)?

  雖然CPU上使用FMT技術的并不多,不過我們可以看看另一個領域:GPU,現在NVIDIA和ATI的GPU,都使用了FMT技術:

Intel超線程技術有多少種?

FMT技術在GPU上的應用

  早在NV G40以及ATI R520開始,GPU内部就開始應用了FMT細粒度多線程技術,為了隐含Cache Miss的存儲器高延遲,GPU内部的執行單元不停地在工作線程之間切換,提升總的處理能力。不過,G40的FMT實作了具體多少個線程筆者倒不是很清楚,根據資料看應該在100左右。

  前面說過,SMT其實和其他兩種多線程技術都不同——那兩種技術被稱之為TMT時間多線程。SMT——Simultaneous MultiThreading具有多個執行單元,可以同時運作多條指令,是以才叫做“同步多線程”!SMT起先源自充分挖掘超标量架構處理器的潛力——超标量的意思就是可以同時執行多個不同的指令。是以SMT具有最大的靈活性和資源使用率,然而實作也最複雜(當然比起多核結構來說就是小意思了)。

Intel超線程技術有多少種?

Intel Pentium 4,單核,每核兩個線程

Intel超線程技術有多少種?

最典型的:Intel Pentium 4或者Core i7

2002年Intel Pentium 4 Xeon「Prestonia」(單核心/雙線程)

2007年Sun UltraSPARC T2「Niagara 2」(8核心/64線程)

2008年Intel Core i7「Nehalem」(4核心/8線程)

  這裡又看到了UltraSPARC T2,這是因為它同時采用了FMT和SMT技術:因為UltraSPARC T2具有兩個執行單元,每一個線程組使用一個,線程組内則按照T1那樣執行4個線程。現代的GPU也采用了類似的混合設計:

Intel超線程技術有多少種?
NV G80的GigaThread架構

  不同的流處理器可以同時執行不同的線程,當然同一個流處理器也可以在不同的線程之間切換。

  介紹了所有的MT多線程技術種類之後,我們可以來看Intel的HyperThreading超線程技術了,前面說過,Intel具有超線程技術的CPU有:Pentium 4(NetBurst架構)、Core i7(Nehalem架構)、Itanium 2(Mondecito)、Atom(Silverthorne)。我們已經知道具有超線程技術的Pentium 4/Pentium 4 Xeon(不是所有的P4都有超線程技術)采用的是SMT架構,Core i7的則是其改進版本。我們再來看看Itanium 2:

Intel超線程技術有多少種?

Itanium 2 Montecito采用了雙核心設計,每核心兩個線程

Intel超線程技術有多少種?

Itanium 2 Montecito的超線程技術采用了CMT架構

Intel超線程技術有多少種?

Itanium 2的超線程技術:在遇到如L3 cache missed的時候進行線程切換

  可見,Itanium 2的超線程技術和Pentium 4的SMT不同,它實際上是CMT粗粒度多線程技術。這是因為Itanium 2是In-Order架構的,SMT的原始構想就是充分壓榨OOOE(Out-Of-Order Execution)的能力,是以In-Order架構的Itanium 2就沒有采用SMT的方式。因為要建立多個線程的代價太大。

  那是否In-Order架構的處理器就不能實作SMT了呢?并不是,Intel的Atom就是一個典型的例子:

Intel超線程技術有多少種?

迷你處理器:Intel Atom(淩動),還有一種叫法是阿童木處理器……

Intel超線程技術有多少種?

Atom的超線程基于In-Order架構的SMT技術

  除了Atom之外,IBM的怪物Power6(起始頻率4.7GHz)也采用了基于In-Order架構的SMT技術(Power5的SMT是基于Out-Of-Order):

Intel超線程技術有多少種?

IBM Power6處理器,雙核,每核兩個線程

Intel超線程技術有多少種?

Power6:In-Order + SMT,Power5則是Out-Of-Order + SMT

  【IT168評測中心】現在,我們知道Core i7的超線程技術的名稱的正确對待方法了。最後,我們來回顧一下,Intel的超線程技術到底有幾種?

基于NetBurst架構的超線程:OOOE + SMT

基于Itanium架構的超線程:IOE + CMT

基于Atom架構的超線程:IOE + SMT

基于Nehalem架構的超線程:OOOE + SMT

轉載于:https://blog.51cto.com/muyunzhe/1625051

繼續閱讀