《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 電子元件 > 業(yè)界動(dòng)態(tài) > 芯片指令集架構(gòu),真的重要嗎,?

芯片指令集架構(gòu),,真的重要嗎?

2022-10-12
作者: chipsandcheese
來(lái)源: 半導(dǎo)體行業(yè)觀察
關(guān)鍵詞: 芯片指令集架構(gòu) ARM CPU ISA

  在過(guò)去的十年中,,ARM CPU廠商多次嘗試打入高性能 CPU 市場(chǎng),,因此我們看到大量關(guān)于 ARM 努力的文章、視頻和討論也就不足為奇了,,其中許多文章關(guān)注的是兩種指令集架構(gòu)(ISA)的差異,。

  在本文中,,我們將匯集研究、來(lái)自非常熟悉 CPU 的人的評(píng)論以及我們的一些內(nèi)部數(shù)據(jù),,以說(shuō)明為什么專(zhuān)注于 ISA 是浪費(fèi)時(shí)間,,并讓我們開(kāi)始在我們的小冒險(xiǎn)中,讓我們參考 Anandtech 對(duì) Jim Keller 的采訪,,Jim Keller 是一位工程師,,他曾參與過(guò)多種成功的 CPU 設(shè)計(jì),包括 AMD 的 Zen 和 Apple 的 A4/A5,。

  “關(guān)于指令集的爭(zhēng)論是一個(gè)非常悲傷的故事,。”Jim keller在接受AnandTech采訪時(shí)說(shuō),。完整采訪請(qǐng)查看文章《Jim Keller:在指令集上辯論是一件悲哀的事情》

  CISC vs RISC:過(guò)時(shí)的辯論

  x86 歷史上被歸類(lèi)為 CISC(復(fù)雜指令集計(jì)算)ISA,,而 ARM 被歸類(lèi)為 RISC(精簡(jiǎn)指令集計(jì)算)。最初,,CISC 機(jī)器旨在執(zhí)行更少,、更復(fù)雜的指令,并為每條指令做更多的工作,。RISC 使用更簡(jiǎn)單的指令,,執(zhí)行起來(lái)更容易、更快,。今天,,這種區(qū)別已不復(fù)存在。用Jim keller的話來(lái)說(shuō):

  “RISC 剛問(wèn)世時(shí),,x86 是半微碼(half microcode),。所以如果你看一下die,一半的芯片是 ROM,,或者可能是三分之一,。從事RISC 人可以說(shuō) RISC 芯片上沒(méi)有 ROM,因此我們獲得了更高的性能,。但是現(xiàn)在ROM太小了,,找不到了。其實(shí)加法器這么小,,你很難找到嗎?今天限制計(jì)算機(jī)性能的是可預(yù)測(cè)性,,兩個(gè)大的是指令/分支可預(yù)測(cè)性和數(shù)據(jù)局部性,。”

  簡(jiǎn)而言之,,就性能而言,,RISC/ARM 和 CISC/x86 之間沒(méi)有有意義的區(qū)別,。重要的是保持內(nèi)核的供給,并提供正確的數(shù)據(jù),,這些數(shù)據(jù)專(zhuān)注于緩存設(shè)計(jì),、分支預(yù)測(cè)、預(yù)取以及各種很酷的技巧,,比如預(yù)測(cè)加載是否可以在存儲(chǔ)到未知地址之前執(zhí)行,。

  在2013 年,Blem 等研究人員發(fā)現(xiàn)了一種方法,。研究了 ISA 對(duì)各種 x86 和 ARM CPU [1]的影響,,發(fā)現(xiàn) RISC/ARM 和 CISC/x86 在很大程度上已經(jīng)收斂。

  微信截圖_20221012093154.png

  Blem等人得出的結(jié)論是,,ARM 和 x86 CPU 在功耗和性能方面存在差異,,主要是因?yàn)樗鼈冡槍?duì)不同的目標(biāo)進(jìn)行了優(yōu)化。指令集在這里并不重要,,重要的是實(shí)現(xiàn)指令集的 CPU 的設(shè)計(jì):

  他們研究的主要發(fā)現(xiàn)是:

  •  盡管平均周期計(jì)數(shù)差距 <= 2.5 倍,,但實(shí)現(xiàn)之間存在很大的性能差距。

  •  指令計(jì)數(shù)和混合與一階 ISA 無(wú)關(guān),。

  •  性能差異是由獨(dú)立于 ISA 的微架構(gòu)差異產(chǎn)生的,。

  •  能耗再次與 ISA 無(wú)關(guān)。

  •  ISA 差異具有實(shí)施意義,,但現(xiàn)代微架構(gòu)技術(shù)使它們沒(méi)有實(shí)際意義,;一個(gè) ISA 從根本上說(shuō)并不是更有效。

  •  ARM 和 x86 實(shí)現(xiàn)只是針對(duì)不同性能級(jí)別優(yōu)化的設(shè)計(jì)點(diǎn)

  以上觀點(diǎn)來(lái)自論文《Power Struggles: Revisiting the RISC vs. CISC Debate on Contemporary ARM and x86 Architectures》

  換句話說(shuō),,ARM ISA 與低功耗沒(méi)有任何關(guān)系,。同樣,x86 ISA 與高性能無(wú)關(guān),。我們今天熟悉的基于 ARM 的 CPU 恰好是低功耗的,,因?yàn)?ARM CPU 的制造商將他們的設(shè)計(jì)定位于手機(jī)和平板電腦。英特爾和 AMD 的 x86 CPU 以更高的性能為目標(biāo),,具有更高的功率,。

  為了給 ISA 發(fā)揮重要作用的想法潑冷水,英特爾以基于 x86 的 Atom 內(nèi)核為目標(biāo),。Federal University of Rio Grande do Sul [6] 進(jìn)行的一項(xiàng)研究得出結(jié)論:“對(duì)于所有測(cè)試用例,,基于 Atom 的集群被證明是在低功耗處理器上使用多級(jí)并行性的最佳選擇?!?/p>

  正在測(cè)試的兩種內(nèi)核設(shè)計(jì)是 ARM 的 Cortex-A9 和英特爾的 Bonnell 內(nèi)核,。有趣的是,Bonnell 是一種有序設(shè)計(jì),,而 Cortex-A9 是一種無(wú)序設(shè)計(jì),,應(yīng)該為 Cortex-A9 帶來(lái)性能和能源效率的勝利,,但在研究中使用的測(cè)試中,Bonnell 出現(xiàn)了在這兩個(gè)類(lèi)別中都領(lǐng)先,。

  解碼器差異:杯水車(chē)薪

  另一個(gè)經(jīng)常重復(fù)的真理是 x86 有一個(gè)顯著的“ecode tax”障礙,。ARM 使用固定長(zhǎng)度的指令,而 x86 的指令長(zhǎng)度不同,。因?yàn)槟仨氃谥老乱粭l指令從哪里開(kāi)始之前確定一條指令的長(zhǎng)度,,所以并行解碼 x86 指令更加困難。這對(duì)于 x86 來(lái)說(shuō)是一個(gè)缺點(diǎn),,但對(duì)于高性能 CPU 來(lái)說(shuō),,這并不重要,用 Jim Keller 的話來(lái)說(shuō):

  “有一段時(shí)間我們認(rèn)為可變長(zhǎng)度指令真的很難解碼,。但我們一直在想辦法做到這一點(diǎn),。.所以當(dāng)你在建造小型電腦時(shí),固定長(zhǎng)度的指令看起來(lái)真的很好,,但如果你正在建造一臺(tái)非常大的電腦,,預(yù)測(cè)或找出所有指令的位置,它并沒(méi)有支配die,。所以沒(méi)那么重要,。”

  我們深入并親自對(duì)此進(jìn)行了檢查,。

  通過(guò)未記錄的 MSR 禁用 op 緩存后,,我們發(fā)現(xiàn) Zen 2 的 fetch 和 decode 路徑比 op cache 路徑消耗大約 4-10% 的核心功率,或 0.5-6% 的封裝功率,。在實(shí)踐中,,解碼器將消耗更少的核心或封裝功率。Zen 2 并非設(shè)計(jì)為在禁用微操作緩存的情況下運(yùn)行,,并且我們使用的基準(zhǔn) (CPU-Z) 適合 L1 緩存,,這意味著它不會(huì)對(duì)內(nèi)存層次結(jié)構(gòu)的其他部分造成壓力。對(duì)于其他工作負(fù)載,,來(lái)自 L2 和 L3 高速緩存以及內(nèi)存控制器的功耗將使解碼器的功耗變得不那么重要,。

  事實(shí)上,在禁用 op 緩存的情況下,,一些工作負(fù)載的功耗降低了,。解碼器的功耗被其他核心組件的功耗所淹沒(méi),特別是如果操作緩存讓它們得到更好的饋送,。這與Jim Keller的評(píng)論一致,。

  研究人員也同意這個(gè)觀點(diǎn)。

  2016 年,Helsinki Institute of Physics[2]支持的一項(xiàng)研究著眼于英特爾的 Haswell 微架構(gòu),。在那里,Hiriki 等人估計(jì),,Haswell 的解碼器消耗了 3-10% 的封裝功率,。該研究得出的結(jié)論是,“x86-64 指令集并不是生產(chǎn)節(jié)能處理器架構(gòu)的主要障礙,?!?/p>

微信截圖_20221012093552.png

  Hiriki 等人使用綜合基準(zhǔn)開(kāi)發(fā)模型來(lái)估計(jì)單個(gè) CPU 組件的功耗,并得出結(jié)論認(rèn)為解碼器功耗很小

  在另一項(xiàng)研究中,,Oboril 等人 [5] 在 Intel Ivy Bridge CPU 上測(cè)量獲取和解碼能力,。雖然那篇論文專(zhuān)注于為核心組件開(kāi)發(fā)一個(gè)準(zhǔn)確的功率模型,并沒(méi)有直接得出關(guān)于 x86 的結(jié)論,,但它的數(shù)據(jù)再次表明解碼器的功率是滄海一粟,。

微信截圖_20221012093623.png

  Oboril 等人對(duì) Ivy Bridge 功耗的估計(jì)。與其他核心組件相比,,F(xiàn)etch+Decode 的能力微不足道

  但顯然解碼器功率不是零,,這意味著它是一個(gè)潛在改進(jìn)的領(lǐng)域。畢竟,,當(dāng)您受到功率限制時(shí),,每一瓦特都很重要。即使在臺(tái)式機(jī)上,,多線程性能也常常受到功率的限制,。我們已經(jīng)看到 x86 CPU 架構(gòu)師使用 op 緩存來(lái)提供每瓦性能,所以讓我們從 ARM 方面看一下,。

  ARM 解碼也很貴

  Hirki 等人還得出結(jié)論:“切換到不同的指令集只會(huì)節(jié)省少量功率,,因?yàn)樵诂F(xiàn)代處理器中無(wú)法消除指令解碼器?!?/p>

  ARM Ltd 自己的設(shè)計(jì)就是證明,。高性能 ARM 芯片采用微操作緩存來(lái)跳過(guò)指令解碼,就像 x86 CPU 一樣,。2019 年,,Cortex-A77 引入了 1.5k 條目操作緩存[3]。設(shè)計(jì)運(yùn)算緩存并非易事——ARM 的團(tuán)隊(duì)在至少六個(gè)月的時(shí)間里調(diào)試了他們的運(yùn)算緩存設(shè)計(jì),。顯然,,ARM 解碼的難度足以證明花費(fèi)大量工程資源盡可能跳過(guò)解碼是合理的。Cortex-A78,、A710,、X1 和 X2 還具有運(yùn)算緩存,表明該方法在蠻力解碼方面取得了成功,。

  三星還在其 M5 上引入了運(yùn)算緩存,。在一篇詳細(xì)介紹三星 Exynos CPU [4]的論文中,,解碼能力被稱為實(shí)現(xiàn)操作緩存的動(dòng)機(jī):

  “隨著設(shè)計(jì)從 M1 中的每個(gè)周期提供 4 條指令/微指令變?yōu)?M3 中的每個(gè)周期 6 條(未來(lái)的目標(biāo)是增長(zhǎng)到每個(gè)周期 8 條),獲取和解碼能力是一個(gè)重要的問(wèn)題,。M5 實(shí)現(xiàn)添加了一個(gè)微操作緩存作為替代 uop 供應(yīng)路徑,,主要是為了節(jié)省可重復(fù)內(nèi)核的獲取和解碼能力?!薄禘volution of the Samsung Exynos CPU Microarchitecture》

  就像 x86 CPU 一樣,,ARM 內(nèi)核使用 op 緩存來(lái)降低解碼成本。ARM 的“解碼優(yōu)勢(shì)”并不足以讓 ARM 避免操作緩存,。并且操作緩存將減少解碼器的使用,,使解碼功率變得更不重要。

  ARM指令解碼成微操作,?

  Gary Explains 在標(biāo)題為“ RISC vs CISC– Is it Still a Thing ? “,,他在隨后的視頻中重復(fù)了這一說(shuō)法。

  Gary 是不正確的,,因?yàn)楝F(xiàn)代 ARM CPU 還將 ARM 指令解碼為多個(gè)微操作,。事實(shí)上,“減少微操作擴(kuò)展”使 ThunderX3 的性能比 ThunderX2 提高了 6%(Marvell 的 ThunderX 芯片都是基于 ARM 的),,這比故障中的任何其他原因都要多,。

微信截圖_20221012093711.png

  Marvell 在 Hot Chips 2020 上展示的幻燈片。重點(diǎn)(紅色輪廓)由我們添加

  我們還快速瀏覽了富士通 A64FX 的架構(gòu)手冊(cè),,這是為日本 Fugaku 超級(jí)計(jì)算機(jī)提供動(dòng)力的基于 ARM 的 CPU,。A64FX 還將 ARM 指令解碼為多個(gè)微操作。

微信截圖_20221012093728.png

  A64FX 架構(gòu)手冊(cè)中的部分指令表,,位于 ARMv8 基本指令部分,。我們?cè)诮獯a到多個(gè)微操作的指令上添加的重點(diǎn)(紅色輪廓)

  如果我們深入看,一些 ARM SVE 指令會(huì)解碼為數(shù)十個(gè)微操作,。例如,,F(xiàn)ADDA(“浮點(diǎn)加法嚴(yán)格有序歸約,以標(biāo)量累加”)解碼為 63 個(gè)微操作,。其中一些微操作單獨(dú)具有 9 個(gè)周期的延遲,。對(duì)于在單個(gè)周期中執(zhí)行的 ARM/RISC 指令來(lái)說(shuō),就這么多了……

  另外需要注意的是,,ARM 并不是一個(gè)純粹的加載存儲(chǔ)架構(gòu),。例如,LDADD 指令從內(nèi)存中加載一個(gè)值,,添加到它,,然后將結(jié)果存儲(chǔ)回內(nèi)存。A64FX 將其解碼為 4 個(gè)微操作。

  x86 和 ARM:都因遺留問(wèn)題而臃腫

  這對(duì)他們中的任何一個(gè)都沒(méi)有關(guān)系,。

  在 Anandtech 的采訪中,,Jim Keller 指出,隨著軟件需求的發(fā)展,,x86 和 ARM 都隨著時(shí)間的推移增加了功能,。當(dāng)它們進(jìn)入 64 位時(shí),兩者都得到了一些清理,,但仍然是經(jīng)過(guò)多年迭代的舊指令集,迭代不可避免地會(huì)帶來(lái)臃腫,。

  Keller 好奇地指出,,RISC-V 沒(méi)有任何歷史遺留文呢提,因?yàn)樗疤幱趶?fù)雜性生命周期的早期”,。他繼續(xù):

  “如果我今天想真正快速地構(gòu)建一臺(tái)計(jì)算機(jī),,并且我希望它能夠快速運(yùn)行,那么 RISC-V 是最容易選擇的,。它是最簡(jiǎn)單的一個(gè),,它具有所有正確的功能,它具有您實(shí)際需要優(yōu)化的正確的前八條指令,,而且它沒(méi)有太多的垃圾,。”

  如果遺留膨脹起重要作用,,我們可以期待很快會(huì)出現(xiàn) RISC-V 的猛攻,,但我認(rèn)為這不太可能。舊版支持并不意味著舊版支持必須快速,;它可以進(jìn)行微編碼,,從而最大限度地減少芯片面積的使用。就像可變長(zhǎng)度指令解碼一樣,,這種開(kāi)銷(xiāo)在現(xiàn)代高性能 CPU 中不太重要,,因?yàn)樾酒瑓^(qū)域由緩存、寬執(zhí)行單元,、大型亂序調(diào)度程序和大型分支預(yù)測(cè)器主導(dǎo),。

  結(jié)論:實(shí)施很重要,而不是ISA

  我很高興看到來(lái)自 ARM 的競(jìng)爭(zhēng),,因?yàn)楦叨?CPU 空間需要更多玩家,,但由于指令集差異,ARM 玩家并沒(méi)有超越 Intel 和 AMD,。要贏得勝利,,ARM 制造商將不得不依靠其設(shè)計(jì)團(tuán)隊(duì)的技能。或者,,他們可以通過(guò)針對(duì)特定的功率和性能目標(biāo)進(jìn)行優(yōu)化來(lái)超越英特爾和 AMD,。AMD 在這里尤其容易受到攻擊,因?yàn)樗鼈兪褂脝魏嗽O(shè)計(jì)來(lái)涵蓋從筆記本電腦和臺(tái)式機(jī)到服務(wù)器和超級(jí)計(jì)算機(jī)的所有內(nèi)容,。

  希望這里提供的信息能夠避免過(guò)去關(guān)于指令集的爭(zhēng)論,,這樣我們就可以繼續(xù)討論更有趣的話題。

  更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<

微信圖片_20210517164139.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。