最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【轉(zhuǎn)】用性能計數(shù)器預(yù)覽中國的龍芯3A5000(機器翻譯)

2023-03-22 15:47 作者:失傳技術(shù)電磁所  | 我要投稿

用性能計數(shù)器預(yù)覽中國的龍芯3A5000

本質(zhì)上是CV22560291的機翻

2023 年 1 月 29 日?蛤蜊濃湯?發(fā)表評論

龍芯的 3A5000 代表了中國又一次國產(chǎn) CPU 的努力。它實現(xiàn)了四個 LA464 內(nèi)核,面向從臺式機到服務(wù)器再到嵌入式應(yīng)用程序的所有應(yīng)用程序。與我們之前介紹的兆芯 KX-6640MA 和飛騰 D2000 一樣,龍芯的芯片以低時鐘速度運行。但與其他中國芯片不同的是,龍芯使用基于 MIPS 的 ISA。之前的龍芯芯片是 MIPS64 兼容的,但該公司轉(zhuǎn)而使用稱為 Loongarch 的 ISA。Loongarch 共享 MIPS 的大部分語義,但使用不同的指令編碼。龍芯還擴展了 ISA 以支持 256 位向量執(zhí)行。

我們將在這里做一些簡短的基準測試。這樣做的目的不是測試大量應(yīng)用程序以提供全面的性能圖。如果您想知道 CPU 通常位于何處,Phoronix已經(jīng)有了一些結(jié)果。相反,我們正在運行幾個測試并使用我們可用的少量性能計數(shù)器對它們進行分析。我們將使用這些數(shù)據(jù)來幫助我們分析龍芯的架構(gòu)。

為了進行比較,我們將使用 AMD 的 Zen 1 架構(gòu),因為一些網(wǎng)站認為 3A5000 可能與 Zen 1 相當。Titanic 已經(jīng)設(shè)置了帶有雙通道 DDR4-2400 的 Ryzen 7 1800X 系統(tǒng)。Ampere Altra 以來自 Oracle 云的免費四核實例的形式出現(xiàn),也將在這里展示。Neoverse N1 內(nèi)核可能與 3A5000 中的內(nèi)核更具可比性,因為它們同樣不會達到高時鐘速度。

高級性能

7-Zip 是一個高效的壓縮程序,我們看到壓縮一個從分析 Firefox 編譯生成的巨大文件需要多長時間。執(zhí)行的指令流幾乎完全由標量整數(shù)運算組成。這里的結(jié)果不能直接與本網(wǎng)站上之前的結(jié)果進行比較,因為我們這次指定了 16 個線程。盡管我們將其限制為四個內(nèi)核,但運行更多線程會帶來更好的利用率和更高的性能。

3A5000在絕對性能上比不上Zen 1。但是,如果我們不讓 Zen 1 在內(nèi)核中使用兩個 SMT 線程,它在每時鐘性能上具有競爭力。龍芯的實際性能更接近于四核 Ampere Altra 設(shè)置。但即使在那里,它的表現(xiàn)也有很大的優(yōu)勢。同樣,每時鐘性能接近,但 2.5 GHz 是一個非常低的時鐘速度,即使對于不優(yōu)先考慮單線程性能的服務(wù)器芯片也是如此。

視頻編碼

libx264 是一個用于處理 H264 編解碼器的免費軟件庫。盡管已經(jīng)很老了,但 H264 仍然很受歡迎,因為廣泛的硬件解碼支持和 H265 等較新編解碼器的許可問題。在這里,我們正在轉(zhuǎn)碼一段《守望先鋒》游戲玩法的短片,使用“veryslow”預(yù)設(shè)來優(yōu)先考慮質(zhì)量。畢竟,如果您不關(guān)心質(zhì)量并且想要盡可能快的編碼,您只需使用 GPU 的硬件編碼器。


此測試中執(zhí)行的指令流包含高百分比的向量指令。龍芯已使用 intrinsics為其分布式 libx264 版本添加了 LSX 和 LASX 支持。這非常好,因為僅使用編譯器生成的代碼嘗試進行視頻編碼或其他計算量大的任務(wù)將導(dǎo)致性能極差。

不幸的是,性能并不出色。依賴純 C 代碼通常會導(dǎo)致性能降低一個數(shù)量級。值得慶幸的是,龍芯避免了這一點。但 3A5000 的性能明顯低于 Zen 1。它也無法與四核 Ampere Altra 匹敵??紤]到這兩種芯片都有 128 位執(zhí)行單元,這是一個糟糕的表現(xiàn)。至少在支持 AVX2 的 x86 芯片上,該測試中執(zhí)行的指令中超過 10% 是 256 位的。Zen 1 確實支持 AVX2,但將 256 位指令解碼為兩個微操作。Ampere Altra 當然僅限于 128 位 NEON 指令。Zen 1 和 Neoverse N1 都不以強大的矢量性能而著稱,但都擊敗了 3A5000。

指令計數(shù)和 IPC

性能計數(shù)器讓我們可以跟蹤很多事件,其中最重要的事件之一是退役指令的數(shù)量。在亂序執(zhí)行的 CPU 中,指令退出是指內(nèi)核提交指令的結(jié)果并使其可見(換句話說,已完成執(zhí)行并通過所有必需的檢查)。我們在這里不使用熟悉的 ISA 測試 CPU。如果 ISA 有影響,一個跡象就是指令數(shù)的巨大差異。

使用 7-Zip,指令數(shù)差異低于 5%。那挺好的。沒有人執(zhí)行更多的指令來完成工作。

IPC方面,龍芯做得很好。IPC 與每個時鐘的性能不同,尤其是在使用不同的 ISA 或 ISA 擴展時。但指令數(shù)在此壓縮基準測試中具有可比性,因此 IPC 與每時鐘性能密切相關(guān)。3A5000 在這種情況下的主要弱點在于其非常低的時鐘速度。

libx264 是另一回事。盡管有 LAVX 支持,3A5000 必須多處理 12% 到 23% 的指令才能完成相同的工作。ISA 的擴展不僅僅是矢量寬度。也許 LAVX 缺少一些 NEON 和 AVX2 具有的專門指令。我們沒有完整的 LVX 和 LAVX 指令列表,所以這只是一個猜測。

再次,龍芯的IPC相當不錯。但與 7-Zip 案例不同,3A5000 執(zhí)行更多指令來完成工作。這意味著每個時鐘的性能明顯低于 Zen。

前端:分支預(yù)測

分支預(yù)測的準確性很重要。

所有三個測試的 CPU 的預(yù)測準確度都非常相似。當加載兩個 SMT 線程時,即使 Zen 1 也不會受到太大影響。然而,3A5000 在每條指令中遭受更多的錯誤預(yù)測,這意味著它比這里的其他 CPU 更頻繁地招致錯誤預(yù)測懲罰。雖然它的分支預(yù)測器似乎做得不錯,但 17.7% 的 Loongarch 指令流由分支組成,而在 x86-64 上為 15.1%,在 64 位 ARM 上為 16.1%。

在視頻編碼測試中,龍芯有點落后。Zen 1 和 Neoverse N1 的分支預(yù)測器在此測試中均表現(xiàn)更好,但差距并不大。在精度方面,當 AMD 的核心必須處理兩個線程時,3A5000 接近于 Zen 1。龍芯確實有相當?shù)拿織l指令的錯誤預(yù)測率,但這有點轉(zhuǎn)移注意力。3A5000 執(zhí)行比 Zen 1 多得多的指令來完成這項工作。所以,這意味著龍芯正在處理更多分支之間的指令。所有三個 CPU 的執(zhí)行分支數(shù)相差不到 10%(盡管很有趣,龍芯的執(zhí)行分支數(shù)最高,為 1.2 萬億,而 Zen 1 和 Ampere Altra 分別為 1.1 和 1.16 萬億)。

前端:指令獲取

3A5000 有一個 64 KB、4 路組關(guān)聯(lián) L1 指令高速緩存,有助于加快指令傳遞。Neoverse N1 和 Zen 1 也有不錯的 64 KB L1 指令緩存。在 7-Zip 上,這足以容納“熱”指令足跡。事實上,Zen 1 的微操作緩存在該測試中提供了超過 85% 的流水線微操作,表明 7-Zip 的指令占用空間非常小。

在所有三個經(jīng)過測試的 CPU 中,每條指令的未命中率都非常低。它對龍芯來說特別低,這很好,因為 3A5000 在必須從 L2 獲取代碼時不如它好。但是對于低于 1 MPKI 的每個人,這在任何情況下都不是一個重要因素。

libx264 也有很高的 L1i 命中率,盡管我們在所有三個 CPU 上看到更多的 L1i 未命中率。龍芯現(xiàn)在受的苦更多,雖然2 MPKI仍然不是特別令人擔憂。

后端:L1D Hitrate

這里測試的三款CPU在數(shù)據(jù)方面有更多差異。AMD 的 Zen 架構(gòu)具有相對較小的 32 KB、8 路集相聯(lián) L1D。龍芯的 3A5000 和 Neoverse N1 都有更大的 64 KB,4 路 L1D。在 7-Zip 中,龍芯的 L1D 表現(xiàn)出奇的差。根據(jù)性能計數(shù)器,L1D 命中率大大降低。即使緩存幾何結(jié)構(gòu)相似,Neoverse N1 也具有最佳的 L1D 命中率。N1 也擊敗了 Zen 1 的 L1D 命中率,因此具有較小關(guān)聯(lián)性的較大 L1D 應(yīng)該更好。也許龍芯沒有很好的替換策略,或者過于頻繁地積極預(yù)取和踢出有用的數(shù)據(jù)。

對于 7-Zip,每條指令的未命中率在很大程度上說明了相同的情況,因為執(zhí)行的指令計數(shù)相似。

龍芯的L1D遭受了很多失誤。在libx264中,龍芯表現(xiàn)略好。L1D 命中率仍然不是它應(yīng)該考慮的容量優(yōu)勢,它仍然無法趕上 Zen。但是,它也相距不遠。

根據(jù)指令,龍芯不會出現(xiàn)太多失誤。但這主要是 CPU 在此工作負載中執(zhí)行更多計算相關(guān)指令的標志,這意味著內(nèi)存訪問代表較少的已執(zhí)行指令流。這也意味著 L1D 未命中的影響較小,因為內(nèi)核因必須處理更多數(shù)學指令而受阻。禪的情況正好相反。

L2 和 L3 緩存

通常,CPU 為來自其 L1 緩存的絕大多數(shù)訪問提供服務(wù)。但是 DRAM 訪問速度非常慢,以至于他們需要較低級別的緩存。末級緩存 (L3) 的容量在兆字節(jié)范圍內(nèi),這使得它們足夠慢,以至于中級緩存 (L2) 可以帶來性能優(yōu)勢。龍芯有一個 256 KB 的 L2 緩存和一個不錯的 16 MB L3。Zen 在四核集群中有更大的 512 KB L2,但更小的 8 MB L3。Ampere Altra 每個內(nèi)核使用非常好的 1 MB L2 緩存,但在 80 個內(nèi)核之間共享 32 MB L3。

L3 緩存的性能計數(shù)器似乎無法在 Ampere Altra 上正常工作。他們顯示 L3 筆芯比對 L3 的請求更多,這意味著 L3 具有負命中率。這沒有意義,所以我們從 0% 開始圖表比例,并且根本不會談?wù)?Ampere Altra 的 L3。

在 7-Zip 中,龍芯的 16 MB L3 具有相當不錯的命中率,并且可能在 3A5000 的每時鐘時鐘性能方面發(fā)揮了作用。龍芯也看到了非常好的 L2 命中率,特別是考慮到它的小尺寸。但這不一定是好事。L2 命中率高主要是因為 L1D 遭受的失誤比應(yīng)有的多。

查看每條指令的高速緩存未命中證明了這一點。正如預(yù)期的那樣,龍芯的 256 KB L2 比 Zen 的 512 KB L2 每條指令出現(xiàn)更多的未命中。我們還可以將高 L3 命中率歸因于大量的 L2 未命中。龍芯似乎比 Zen 遭受更多的 L3 未命中,但這可能是因為我在 Zen 上使用了 L1D 需求填充的事件。在龍芯上,我使用的是 perf 中定義的 LLC-load-misses 事件。龍芯沒有記錄 3A5000 的性能監(jiān)控事件,所以我不知道該性能事件是否包括預(yù)取未命中。

libx264 似乎有更大的數(shù)據(jù)足跡。我們已經(jīng)看到 L1D 緩存遭受了更多的未命中,并且較低級別的緩存同樣不如 7-Zip 有效。Neoverse N1 的大 L1 絕對可以幫助它。Zen 1 的 L2 有助于緩沖處理在單核中運行的兩個線程的數(shù)據(jù)足跡的打擊,但命中率并不是特別高。查看每條指令的未命中情況很好地說明了這一點。Zen 1 在兩個 SMT 線程都處于活動狀態(tài)時遭受更多 L2 未命中,但 L1D 遭受更多,L2 最終捕獲了很多這些訪問。

龍芯的 L2 似乎在這個指標上做得很好,但這只是因為它執(zhí)行了更多的指令,以至于內(nèi)存層次結(jié)構(gòu)的影響較小。在絕對計數(shù)中,它實際上遭受了此處測試的所有 CPU 中最多的 L2 未命中(超過 2440 億次,而加載了 1 個 SMT 線程的 Zen 1 和 Ampere Altra 分別為 182 次和 176 次)。這同樣適用于 L3 未命中,盡管差距較小。同樣,對這些絕對計數(shù)持保留態(tài)度,因為我們不知道龍芯的 perf 事件到底在測量什么。

第一印象(建筑和性能)

龍芯的3A5000似乎相當稱職。與飛騰 D2000 和兆芯 KX-6640MA 不同,3A5000 具有由大緩存支持的平衡良好的核心架構(gòu)。盡管它遠遠落后于 Intel 和 AMD 的最先進 CPU,但在精細壓縮方面每個時鐘的性能還是不錯的。但是每個時鐘的良好性能并不意味著可接受的性能。龍芯落后的地方在于時鐘速度。按照今天的標準,2.5 GHz 是極低的。即使是高核心數(shù)的服務(wù)器 CPU 時鐘頻率遠高于 3 GHz 也沒有問題。到目前為止,這似乎是龍芯最大的弱點。

“架構(gòu)效率”或“同一時鐘下的性能”等術(shù)語有時被視為衡量自身優(yōu)劣的指標。也許這是為低時鐘速率道歉的一種方式,或者當微架構(gòu)“有一天”達到該設(shè)計實際上無法獲得的時鐘速率時暗示更高性能的一種方式......

David B. Papworth,調(diào)整 Pentium Pro 微架構(gòu),IEEE Micro

我們目前正在對 3A5000 進行微基準測試,以了解有關(guān)其架構(gòu)的更多信息。我們的初步印象是內(nèi)核具有與 Phytium 的 D2000 相似的 ROB 容量,但其他無序緩沖區(qū)的大小要好得多。最終我們將對此發(fā)表一篇完整的文章,但分析這個 CPU 有點困難,因為我們的大多數(shù)基準測試都依賴于匯編代碼。編譯器傾向于做不可預(yù)測和復(fù)雜的事情,這使得很難從高級代碼觀察架構(gòu)特征。

不幸的是,這意味著我們必須編寫大量代碼才能研究龍芯的 3A5000。編寫匯編可能很困難,而為不熟悉的 ISA (LoongArch64) 編寫匯編又將困難推向了另一個層次。測試微基準代碼也不容易。通常,我們可以通過在具有已知特性的 CPU 上運行測試并確保結(jié)果是合理的來驗證測試。但在這種情況下,龍芯的3A5000是我們唯一擁有的LoongArch64 CPU,而且大部分細節(jié)都沒有公開。我們幾乎是盲目的飛行。每個測試的編寫時間都比較長,而且出錯的幾率很高。

這給我們帶來了另一個大問題:軟件生態(tài)系統(tǒng)支持。如前所述,3A5000 運行龍芯專有的 ISA Loongarch。盡管使用不兼容的編碼,但 Loongarch 與 MIPS 共享許多約定和語義。一方面,這意味著龍芯能夠復(fù)制和粘貼大量現(xiàn)有的 MIPS 代碼來開始。另一方面,MIPS 軟件生態(tài)系統(tǒng)無法與 x86 或 ARM 相提并論。我預(yù)計龍芯會遇到很多初期問題,使他們的軟件生態(tài)系統(tǒng)達到標準。

放大來看,中國國內(nèi)的芯片努力處于一個有點滑稽的位置。兆芯的 KX-6640MA 和飛騰的 D2000 的單核性能都很差。3A5000 更好,代表了迄今為止我們從中國看到的最強大的 CPU 成果。但它不會享受強大的 x86 或 ARM 軟件生態(tài)系統(tǒng),如果你不能讓它運行你的軟件,CPU 的性能就沒有多大意義。

最后老外的評價還真是人間清醒了,電動輪椅跑的再快也沒人拿它上高速,打鐵還需自身硬,自己生態(tài)建立不行就不要總想著碰瓷其他同行

【轉(zhuǎn)】用性能計數(shù)器預(yù)覽中國的龍芯3A5000(機器翻譯)的評論 (共 條)

分享到微博請遵守國家法律
东兰县| 法库县| 肥西县| 资源县| 册亨县| 昌平区| 遂平县| 文登市| 璧山县| 邯郸县| 金川县| 长乐市| 沙河市| 五大连池市| 万山特区| 康平县| 新沂市| 高平市| 尖扎县| 珠海市| 长武县| 普安县| 乌苏市| 遵化市| 穆棱市| 深泽县| 剑河县| 灵台县| 于都县| 吉林市| 兴国县| 恩平市| 明光市| 青河县| 建阳市| 滦南县| 吐鲁番市| 周口市| 佛学| 桑植县| 浠水县|