英特爾剛剛發(fā)布的Atom系列最新架構(gòu)Tremont詳細(xì)解析:異構(gòu)多核系統(tǒng)的發(fā)展
2019-10-31 11:23:43 MikesICroom 作者:Mike Liu上周Intel在加州舉辦的Linley秋季處理器大會上發(fā)布了X86 Atom低功耗處理器系列Tremont的架構(gòu)設(shè)計細(xì)節(jié)。Intel面向終端領(lǐng)域的處理器主要是2個產(chǎn)品線,一個是高性能的CORE系列,就是我們通常所說的“酷睿”,用于桌面系統(tǒng);另一個是低功耗的ATOM系列,中文稱為“凌動”,主要面向移動端和IOT。Tremont作為ATOM的最新架構(gòu),其設(shè)計思路和高性能的Sunny Cove會有很大不同,對于功耗、面積等指標(biāo)會更看重。本文將通過解讀Tremont的公開信息來探討intel移動端處理器的設(shè)計細(xì)節(jié)和思路。
Atom芯片曾經(jīng)在上網(wǎng)本中輝煌過一陣,不過隨著智能手機的普及,ARM以絕對的優(yōu)勢壟斷了這個龐大的市場,Atom似乎銷聲匿跡了。盡管Atom的功耗一直被人所詬病,不過由于其基于X86指令集,在兼容性和編程性上還是有一定的優(yōu)勢,尤其是需要與桌面系統(tǒng)配合的時候。因此在工業(yè)領(lǐng)域和一些專用移動市場,比如windows平板,個人存儲(NAS)等領(lǐng)域還是有廣泛的使用。
Intel在Goldmont plus之后規(guī)劃了3代架構(gòu)路線:Tremont, Gracemont, and ‘Future Mont’。Tremont作為第一代10nm的低功耗架構(gòu),不但是對上一代架構(gòu)細(xì)節(jié)和指標(biāo)上的改進,更重要的是和高性能的CORE核心一起組成異構(gòu)多核系統(tǒng),提供更好的能耗。這個方法跟ARM的big.LITTLE架構(gòu)差不多,都是在一個系統(tǒng)里捆綁多個高性能核心和低功耗核心,根據(jù)不同程序的負(fù)載需求來選擇對應(yīng)的核心運行,其他核心進入低功耗狀態(tài),從而獲取性能和功耗的良好平衡。Intel的大小端系統(tǒng)稱為“Lakefiled”,包括一個CORE內(nèi)核:Sunny Cove;還有四個ATOM核:Tremont。根據(jù)披露的信息,Lakefield可以支持1+4個核心同時工作,這個和ARM的big.LITTLE不太一樣,后者只能選擇其中一類進行工作。這里可以看出Intel和ARM在異構(gòu)系統(tǒng)設(shè)計上的不同。ARM注重的是能耗平衡,而Intel更希望在高性能應(yīng)用中盡可能挖掘各個核心的潛力,從而獲得更高的性能。Atom雖然是低功耗核心,不過這是相對于CORE核心而言的,比ARM來說還是要高不少。Tremont核心的配置和ARM A77不相上下,可以說是intel的little core相當(dāng)于ARM 的big core。這也是面向不同領(lǐng)域設(shè)計的選擇。ARM的big.LITTLE是移動端,功耗敏感,小核心并不能提供多少性能輸出;而Intel的Lakefield是桌面和服務(wù)器端,在高負(fù)載下輸出盡可能高的性能更重要,同時在低負(fù)載情況下控制功耗。不過結(jié)構(gòu)不同的多處理器同時運行,在軟件調(diào)度上的要求不小,這個就非常考驗Intel的軟件優(yōu)化實力了。
基于上述分析,Tremont的設(shè)計指標(biāo)就很好理解。雖然是低功耗核心,performance仍然是第一位的。可以看到相對上代的Goldmont plus,Tremont有進30%的性能提升,甚至在一定的功耗下,其能效比Sunny Cove還要高一些。在性能提升的前提下,再設(shè)計相關(guān)的結(jié)構(gòu)來控制功耗和成本。
Tremont的基本流水線框圖,這個圖畫的實在是難以描述,看起來挺炫,如同PCB版圖一樣,對于理解并沒有多大幫助。可以看到Tremont的硬件配置,6 decode,4 dispatch,10 exec,dual load store。這個小核心和ARM的大核心A77差不多。其中有幾個值得關(guān)注的細(xì)節(jié),首先就是2個decode pipe的設(shè)計,每個pipe包含3個decoder,一起組成3x2=6個decode 寬度。這個結(jié)構(gòu)比較奇怪,并沒有遵循通常的多位寬譯碼設(shè)計,尤其是在沒有明確指出multi-threading需求的情況下,后邊會仔細(xì)分析其細(xì)節(jié)。其次是較小的dispatch寬度,通常都會選擇dispatch和decoder寬度一致,較小的dispatch寬度似乎有些浪費decoder的邏輯,對于10 execution ports的需求也有些勉強,這里應(yīng)該主要考慮了功耗和成本的需求。第三是小核心仍然支持了AVX128運算,體現(xiàn)了在算力上的需求。因而低功耗上就比較有限了。我在wiki上也搜到了一張重繪過的Tremont結(jié)構(gòu)圖,可以用來參考。
前級流水的設(shè)計和傳統(tǒng)結(jié)構(gòu)沒有太大的不同,主要的改進針對prefetchers and branch predictor。Tremont使用了和CORE架構(gòu)中類似的prefetch和predictor,雖然增加了面積,但可以換取更好的預(yù)取性能和分支預(yù)測準(zhǔn)確率,這個也和其性能優(yōu)先的設(shè)計思路相關(guān)。和ZEN類似,Tremont也使用了zero cycle penalty的L1 predictor(應(yīng)該是BTB)。這里提到了一個新概念“out of order fetch”。通常處理器的執(zhí)行在renaming之前一定都是順序的,之后開始亂序執(zhí)行,但通過ROB來管理指令的程序流順序。從fetch就開始o(jì)ut-of-order似乎不科學(xué)。我認(rèn)為這里的out-of-order并不是通常意義上的亂序執(zhí)行,而是支持了更深的instruction prefetch。通過在更長的prefetch序列上做預(yù)測,直接獲取預(yù)測后的指令序列,這樣體現(xiàn)出一定程度的亂序,但是并沒有打亂程序流的順序。可以看到Tremont可以支持8條cachelilne miss的pre-fetch操作,和上述分析是匹配的。
Tremont采用了一個比較奇怪的decode流水設(shè)計。從FETCH之后,流水線被分成對稱的2條,每條包括3個decoder和獨立的inst Queue,然后在RENAME級重新合并。這個設(shè)計是很少見的。分離的decode雖然可以提供6寬度的譯碼,不過如果其硬件完全獨立的話,并不能很好的處理兩者之間的依賴關(guān)系,微指令的處理也會受影響。由于沒有更多的細(xì)節(jié),這里只能猜測其設(shè)計的初衷。一個可能的原因是功耗,通過關(guān)閉其中一條decoder,可以在小核心內(nèi)實現(xiàn)一個更小的運行核心,不過這就需要單獨的clock/power domain,也需要其他模塊的可配置支持。其次是多線程,雖然Tremont結(jié)構(gòu)沒有提到multi-threading的設(shè)計,但2條分離的pipeline在微架構(gòu)上是可以提供一個簡單的雙線程設(shè)計的。不過考慮到之前atom也能支持多線程,再設(shè)計一個特殊的多線程結(jié)構(gòu)的理由并不是很能站住腳。第三就是簡化設(shè)計,提高頻率。通過犧牲6 decoder的譯碼性能來簡化多位寬譯碼邏輯。雖然有上述分析,不過這些并不是特別有說服力的理由。希望之后能從Intel得到更多的信息。
另一個特殊的設(shè)計是6 decode,4 dispatch,10 exec的配置組合。中間的dispatch寬度似乎有點小。同時Tremont結(jié)構(gòu)為了減少面積還省掉了mop cache。這個數(shù)字的比例感覺上不是特別的合理。相信Intel在選取配置的時候肯定是做過性能評估的,認(rèn)為這樣的組合在有限的面積上可以獲得令人滿意的性能。因此可能的理由應(yīng)該是為了面積和功耗。由于缺少了mop cache,dispatch需要直接從decoder獲取最多6條指令。而通常由于執(zhí)行單元的限制,可能并不能一次將所有的指令發(fā)射下去,在這種情況下,減少dispatch端口數(shù)目可以降低硬件復(fù)雜度和時序的影響。雖然有這些可能的理由,最終的決定還是多依賴于性能評估的結(jié)果。
cache結(jié)構(gòu)上,Tremont還是很大方的,32KB的L1,1.5~4.5MB的L2,和主流的高端移動處理器持平。在memory hierarchy上,L2處于一個cluster內(nèi),可以被1~4個核心共享。相比上代,Tremont還支持了L3 cache,可以cross cluster訪問。這基本上是主流處理器內(nèi)存系統(tǒng)的設(shè)計。可以看到ATOM系列的L2 latency較 Sunny Cove高不少,其中應(yīng)該是將某些并行訪問改為了串行訪問以減少存儲操作的功耗。
后端流水線的主要提升是直接把ROB的數(shù)目從95增加到了208。這樣大大增加了處理器并行執(zhí)行的指令數(shù)目和動態(tài)調(diào)度能力,和其10個exec pipe的能力相匹配。執(zhí)行上Tremont是標(biāo)準(zhǔn)的renaming physical resigster結(jié)構(gòu)。這里的RS就是我們通常所說的issue Queue。這里Tremont采用了分離式的Issue Queue,這個跟ZEN是類似的。看來現(xiàn)在的主流設(shè)計更注重頻率和ALU的性能,從而部分犧牲了在schedule上的效率。整數(shù)執(zhí)行上3個ALU,1 branch,2條LS addr流水線和1條store data流水線,和A77基本上持平。這一部分大家的思路都差不多。
AVX流水線上也是中規(guī)中矩。Tremont支持128bits運算寬度,包含2條ALU和一條store data pipeline。執(zhí)行上兩個ALU并不對等,一個支持 fused additions (FADD),另一個支持fused multiplication and division (FMUL)。
總結(jié)一下,Tremont的設(shè)計主要體現(xiàn)了Intel在異構(gòu)多核上的思路,即以高性能桌面和服務(wù)器為目標(biāo),在能耗允許的前提下,盡可能挖掘小核心的運算能力,從而和大核心一起提供更強勁的性能。這個和ARM在big.LITTLE結(jié)構(gòu)上的思路是有所不同的。盡管有一些類似亂序fetch,dual pipe decoder的設(shè)計,從大的結(jié)構(gòu)上,Tremont并沒有跟傳統(tǒng)處理器有什么明顯區(qū)別。可以說現(xiàn)代處理器的設(shè)計已經(jīng)進入了細(xì)節(jié)為王的時代,比拼的是每個小模塊的設(shè)計和技巧,通過一點點的改進,聚沙成塔,最后在整體上體現(xiàn)出較大的優(yōu)勢。Intel有上千人的設(shè)計團隊,可以在算法探索,微架構(gòu)設(shè)計,物理實現(xiàn)上做的更深入更細(xì)致,最終累積出巨大的優(yōu)勢。這也是目前國內(nèi)設(shè)計公司比較欠缺的地方。隨著更多的人參與到集成電路的事業(yè)中,并能夠沉下心做設(shè)計,不斷積累經(jīng)驗,我們就能夠慢慢的縮小和這些巨頭的差距,直到有能力挑戰(zhàn)。
EETOP 官方微信
創(chuàng)芯大講堂 在線教育
半導(dǎo)體創(chuàng)芯網(wǎng) 快訊
相關(guān)文章