欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    每天接收關于亞馬遜云科技的最新資訊!

    最近是不是聽了很多

    關于ARM處理器的內容?

    ARM處理器是什么?

    它在未來的云計算領域中

    又占據著什么地位?

    ARM未來的趨勢是怎樣的?

    跟隨小編一起來看看吧~

    ARM 處理器的崛起

    近年來科技媒體上關于 ARM 芯片的新聞可謂是高潮迭起,不斷引起人們的關注。

    首先是 2020 年 5 月 11 日,亞馬遜云科技宣布了基于自研的 處理器(使用了ARM N1核心)的第六代 EC2 實例 – M6g 正式發布。這似乎揭開了云計算市場上 ARM 處理器大規模應用的的序幕。

    緊接著,同年 6 月 23 日的 WWDC 大會上,Apple 公司宣布了一個影響深遠的決定:計劃從 2020 年年底開始,Mac 計算機將會從 Intel 芯片過渡到使用基于 ARM 的自研芯片。也許我們要問,ARM 處理器將會在桌面設備上復制移動設備的成功嗎?

    第三則新聞是關于高性能計算。去年 6 月 22日發表的最新的一期 榜單上,日本的 系統以 415.5 千萬億次浮點運算的高性能 成績成為 的第一名。而令人驚訝的是,這是第一個使用 ARM 處理器的高性能處理系統。

    林林總總,即使我們是半導體行業的門外漢也不難得出一個結論 ——

    ARM 處理器不僅僅統治了手機、嵌入式應用這些傳統的優勢領域,或將在桌面系統、高性能計算尤其是云計算領域扮演越來越重要的角色。

    EC2 上的ARM 處理器

    以往我們熟悉的亞馬遜云科技所提供的的計算資源所使用的多為 Intel? Xeon? 處理器,例如 、Ivy 、 以及 等 Intel 的多個系列的CPU。即使在 2018 年新出現使用了AMD EPYC 處理器的新的實例類型(M5a、R5a以及T3a等),其 CPU 的架構體系與 Intel 的 CPU 也還同屬 “x86-64”(也被稱作 x64、AMD64 以及 Intel 64等)體系架構。拋開 Intel 與 AMD 半世紀的愛恨情仇,我們可以簡單的把這些處理器視作一類。

    而這一次 M6g 實例上的處理器卻與以往大有不同,采用的是一款名為 處理器,是由亞馬遜云科技使用 64 位 ARM N1 內核定制而成。說起 ARM 處理器,我們所了解的是其在移動計算市場的所向披靡,卻一直在桌面計算、服務器等對性能要求更高的市場中表現不佳。在過去數年中,ARM 不止一次對高性能處理器領域發起挑戰,但多以慘淡的結果收場。而轉機就出現在 2019 年初 ARM 發表的 N1。對于這一次的發布,ARM 的設計目標就是使其成為一個高性能架構,并重新調校了微架構使其能夠以更高的頻率運行。在這一點上,ARM 與 AMD、Intel 的路線有所不同,后兩家面向高性能平臺的處理器產品受制于功耗、面積等因素,頻率相比消費級產品要低。但是在N1的設計中卻恰好相反,處理器的頻率相對更高。不僅如此, N1還有一些獨特設計,例如緩存的設計。N1中的L1數據緩存和指令緩存部分都是64KB、4-Way 設計。其中最重要的改變是整個緩存完全采用了一致性設計,它大幅度簡化了虛擬環境的實現并且極大地提高了性能。而且這一設計對 ARM 在超大規模計算中保持競爭力也是必須的服務器應用類型有哪些,因為這可以很方便地擴展核心數量。而這一點在 處理器上表現得淋漓盡致。與第一代 處理器相比, 處理器實現了性能和功能飛躍,性能提升 7 倍、計算內核數量增加 4 倍、緩存增加 2 倍、內存速度提升 5 倍。

    總體來看, 與 N1平臺差異不大,且采用了 TSMC 的 7nm 工藝。當然細微差異還是存在的。例如 的 CPU 內核的時鐘頻率較 N1 要低一些。我自己運行一個簡單的測試程序得到的 時鐘頻率約為 2.5GHz,并且 L3 緩存為 32MB 而不是公版的64MB。該系統由 8 通道 DDR-3200 內存控制器支持,并且 SoC 支持 64 個 PCIe4 通道用于 I/O。至于這款芯片的功耗,考慮到 ARM 宣稱的 64 核 2.6GHz CPU 的功耗約為 105W,以及 最近披露的其 80 核 3GHz N1 服務器芯片的功耗為 210W。 對 給出的估算結果是功耗大致位于 80 瓦至之 110 瓦之間。

    現代的 CPU 存在著核心數量越來越多的趨勢。隨著系統中的核心數量的增多,服務器芯片中的內存性能成為了影響性能至關重要的因素。借助 8 個 DDR4-3200 內存控制器, 芯片具有先進的內存功能,理論上可提供高達204GB/s的峰值帶寬。在 的測試中, 的單個 CPU 內核能夠以高達 36GB/s的速度傳輸寫入數據。內存加載速度高達 18.3GB/s,內存復制達到了令人印象深刻的 29.57GB/s,這是測試中 AMD 系統的兩倍以上服務器應用類型有哪些,幾乎是 Intel 系統的三倍。

    即刻掃碼

    查閱 的測試報告

    處理器的性能

    與一年前發布的第一代 處理器相比, 處理器不管在性能還是功能上都實現了一次巨大的飛躍。它們都支持 EC2 M6g、C6g 和 R6g 實例,而且與當前這一代基于 x86 的實例相比,這些實例為各種工作負載(包括應用程序服務器、微服務、高性能計算、電子設計自動化、游戲、開源數據庫和內存中的緩存)提供高達 40% 的性價比提升。 處理器也為視頻編碼工作負載提供增強的性能,為壓縮工作負載提供硬件加速,并為基于 CPU 的機器學習推理提供支持。它們可以提供高 7 倍的性能、多 4 倍的計算核心、快 5 倍內存和大 2 倍緩存。

    在亞馬遜云科技 re: 2019 大會上, EC2 產品團隊分享的幾組處理器 的結果就讓人興奮不已。

    此外,在 2020 年 3 月份 KeyDB 分享了它們針對 M6g vs M5 實例上的性能對比測試。眾所周知,KeyDB 是 Redis 的多線程超集,由于其先進的體系結構,具備了很好的性能表現。

    他們的測試結論是這樣的 –

    M5 實例使用 Intel Xeon 8175 處理器,與其他大多數可用實例類型相比,它們通常為我們帶來非常好的效果。令我們震驚的是,在較小尺寸的使用 處理器的 M6g 實例上,與現有的 KeyDB M5 實例相比,獲得了如此巨大的收益。

    m6g.large比m5.large快1.65倍,而m6g.則比m5. 快1.45 倍。隨著內核數量的增加,兩種產品之間的差距開始縮小。但是,我們仍在研究 m6g. 和 m6g. 的性能,因為我們相信可以將性能水平提高到相同的倍數。在此測試中,我們沒有針對 M6g 進行任何調整,因此我們對即將到來的結果感到樂觀。

    而在 2020 年的 5月15日,在測試工具市場久負盛名的 發表了一篇關于使用 CPU 的新 M6g 實例性能測試的文章。他們使用 M6g 實例作為基準,然后將這些實例與較早的 A1 實例進行比較。在 Intel Xeon 方面,選擇了 M5 實例,在 AMD EPYC 方面選擇的是 M5a 實例。

    掃碼查閱檢測報告全文

    這里僅僅擷取其中的部分結果以供各位參考:

    1.Linux (V5.4)的編譯時間,數字越小越好

    2. v1.6.0, 數字越大越好

    EC2 實例吞吐量的基礎概念

    – vCPU 與核心

    除了實例類型之外(例如M5、C4),其它用于描述實例能力最重要的指標就是其 vCPU 的數量。所謂的 vCPU 是 Units 的縮寫。vCPU 本質上是指虛擬機上可用的邏輯 CPU 的內核。但 EC2 的邏輯 CPU 計算方法卻并非是基于物理上的 CPU 內核。準確的說,并發線程的數量即為 EC2 vCPU 的數量。例如,默認情況下,M5. 實例類型有兩個 CPU 內核,每個內核支持兩個邏輯線程,這樣該類型實例的vCPU 的數量即為4個。 EC2 實例范圍通常從 1 個vCPU 到最多 128 個,常見的實例的 vCPU 的數量多為 2、4、8、16、32、48、64和 96 等。

    是不帶 SMT 的單路 64 核平臺。所謂 SMT( ) 的含義其實就是我們熟知的超線程技術。簡單來說,SMT 技術可以在一個實體CPU 中提供兩個邏輯線程,通過分享處理器的資源來提高性能。在Intel 的CPU中類似的技術被稱作Hyper-,或者簡稱 HT。目前, 最大可用 vCPU 實例大小為 64。

    但是,這也意味著,在談論例如 64 個 vCPU 實例的時候(在 EC2 中的規格稱為),對于 實例我們將獲得 64 個物理核心;而對于 AMD 或 Intel 系統,我們將僅獲得 32 個具有 SMT 的物理核心。這確實有一點“不公平”的味道。但是考慮到規格描述的一致性,這一點差別只好被忽略了。

    ARM 實例的應用優化

    目前被用于 EC2 家族中的M6g、C6g 以及 R6g 實例。其中:

    M6g 實例用于具有CPU、內存和網絡資源平衡的通用工作負載

    C6g 實例用于計算優化的工作負載,例如視頻編碼、建模和游戲服務器

    R6g 實例用于內存優化的工作負載,可處理內存中的大型數據集(如數據庫)

    與我們熟悉的型 x86-64 架構不同, 支持 ARM V8.2 和其它幾個架構擴展。特別要強調的是, 支持用于原子操作的 LSE (Large ) 指令集的擴展,可以提高大系統之間的鎖定和同步性能。此外,它還支持 FP16 和用于機器學習的 INT8 等。毫不夸張的說,這一次 給我們帶來的足夠的驚喜。但不可否認的是,ARM 處理器的體系結構與以往我們所熟悉的 x86-64 處理器的差異還是非常之大的。簡而言之,如果我們不掌握針對 ARM 處理器應用優化的方法,我們所看到的這一切性能上的提升不過是鏡花水月。

    C/C++ 代碼

    在 上的優化

    C/C ++ 代碼將極大的受益于設置優化代碼的編譯器標志并啟用 ARM 特定的功能。

    GCC/G++編譯選項

    -march 編譯項告訴編譯器應該為系統的處理器架構生成什么代碼,即向編譯器聲明應該為某種 CPU 架構生成代碼。不同的 CPU 具有不同的功能,支持不同的指令集,執行代碼的方式也不同。march 標志將指示編譯器為系統的 CPU 生成特定的代碼,包括 CPU 的所有功能、特性、指令集、異常等等。

    ** 需要注意的一點是,對于 GCC 7.x 和 8.1、8.2 和8.3 等版本 -march=不能正確地檢測 體系架構。務必請使用 -march=armv8.2-a 而不是-march=。GCC 9.x 以及10.x 則可以很好的識別 的體系結構。目前 Linux 2 缺少安裝的GCC版本是 7.3.1,而 20.04 缺少安裝的 GCC 版本為 9.3.0,還可以通過 sudo apt gcc-10 安裝 GCC 10.0.1。

    -mtune 此選項指定 GCC 為其調整代碼性能對應特定目標 ARM 處理器類型,可以通過使用這個選項來實現更好的性能。此外,此選項可以指定 GCC 為 big. 系統調整代碼的性能。

    所謂的 big. ,是 ARM 的異質運算多核心處理器技術。具體做法是將比較耗電但運算能力強的處理器核心組成“ big集群 ”,與低耗電、運算能力弱的處理器核心組成的“ 集群”結合在一起,這些處理器核心共享存儲器區段,并能夠在不同的 CPU 集群之間在線實時分派、切換負載。

    Large- (LSE)

    處理器支持 ARMv8.2 指令集。LSE 則提供低成本的原子操作。原因是 LSE 提高了 CPU 對 CPU 的通信、鎖和互斥的系統吞吐量。當使用LSE而不是加載/存儲獨占時,這種改進可以提升一個數量級。POSIX 線程庫需要 LSE 原子指令。LSE 對于鎖定和線程同步例程很重要。例如 Linux 2 與 20.04 均發布了一個支持 LSE 指令的 libc 庫,編譯器需要為使用原子操作的應用程序生成 LSE 指令。例如,像 這樣的數據庫代碼包含原子結構;帶有 std::原子語句的 C++11代碼轉換為原子操作。GCC 的 -march=armv8.2-a 標志支持所有由 支持的指令,包括了LSE。如果需要滿足對于LSE的支持,還需要libc 的版本要高于 2.3.0。目前 Linux 2 的 glibc 的版本為 2.26, 20.04 的libc 的版本為 2.31。

    Java 程序在

    上的優化

    Java 是一種通用編程語言。編譯后的Java代碼可以在支持Java 的所有平臺上運行,而無需重新編譯。 Java應用程序通常被編譯為可在任何Java虛擬機(JVM)上運行的字節碼,而與基礎計算機體系結構無關。Java受到了包括ARM在內的廣泛的支持,并且在ARM64上是開箱即用的。 是一種免費的、跨平臺的、可立即投入生產的 Open Java Kit()發行版,支持由 驅動的實例。

    掃碼獲取 安裝包!

    注意:下載時需要選擇 的安裝包。

    此外, 也提供了對于 ARM64 平臺的支持。在 處理器上,可以選擇安裝 -8、-11、-13以及-14 等不同的 JDK 版本。

    Java JAR 可以包含特定于體系結構的共享庫。一些 Java 庫檢查是否找到了這些共享庫,是否使用 JNI 調用了本機庫,而不是依賴于該函數的通用 Java 實現。盡管代碼可以工作,但是如果沒有 JNI,性能可能會受到影響。

    檢查 JAR 是否包含此類共享庫的一種快速方法是簡單地將其解壓縮,并檢查是否有任何結果文件是共享庫,以及是否缺少 (arm64)共享庫:

    $ unzip foo.jar

    $ find . -name "*.so" | xargs file

    程序

    在 上的優化

    程序解釋執行的特點需要我們使用的 解釋器可以很好適配于 處理器。對于 解釋器優化的關鍵是確保解釋器使用了 PGO 和 LTO 等優化編譯的選項。獲得 解釋器編譯選項的方法很簡單:

    -c “ ; print(.(‘’))”

    可以看得出來,在不同的 Linux 分發版本中, 解釋器的版本以及優化方法存在一些差異。對比起來, 20.04 的解釋器無論是 還是- 都要表現的更好一些。

    NumPy 與SciPy

    對于一些場景, 應用需要使用 NumPy 以及 SciPy。通常我們通過 pip3 numpy scipy 安裝其二進制版本。一些場景下,使用 BLIS 對 SciPy 和 NumPy 工作負載進行基準測試可以確定額外的性能改進。

    注:BLIS是一個可移植的軟件框架,用于實例化高性能BLAS高性能稠密線性代數庫。

    在 上用 BLIS 安裝 NumPy和SciPy

    在 上安裝 -numpy 與 -scipy程序包將安裝帶有 BLAS 和 庫的 NumPy和SciPy。用 BLIS 和在和上安裝 SciPy 和 NumPy:

    sudo apt -y -scipy -numpy -dev -dev

    sudo - --set .so.3--linux-gnu \

    /usr/lib/-linux-gnu/blis-/.so.3

    在 blas 與 之間進行切換

    sudo - -- .so.3--linux- - - .so.3--linux-gnu

    PyPy

    此外,2019年7月25日,PyPy 宣布了對于 架構的支持。在基于 處理器的 A1 實例上進行的性能測試。從結果來看,PyPy 對于 程序性能的提升是非常顯著的。

    在一臺基于 的m6g. 的實例上運行 ,PyPy 的性能是 ( 3.8.2)的21倍!!性能的提升是非常的驚人了。

    Go程序在 上的優化

    Go 是一種靜態類型的編譯型程序語言。Go支持開箱即用的 ARM 64,可以在所有常見的發行版中使用。Go最新的升級提高了性能,所以請確保使用最新版本的Go編譯器和工具鏈。目前 Go的最新版本是1.14,而 Linux 2 與 20.04 提供的安裝包的版本均為 1.13。在 環境下,安裝 Go 最新版本的一個簡單的途徑還可以考慮通過snap 進行安裝。在snap 中提供的Go 的版本為1.14.6。

    Go 1.16

    Go 的下一個版本1.16 于今年年初發布。Go編譯器將會通過以下列出的幾項特性來提高ARM 架構下程序的性能。

    ARMv8.1-A 指令,可顯著提高 上的互斥公平性和速度,以及帶有 v8.1 和更新指令集的現代 ARM 內核。

    復制性能得到改善,尤其是當地址未對齊時。

    關于系統優化的話題總是會有太多的內容值得探討。隨著新的基于 ARM 實例的普及,越來越多的開發者一定會遇到應用優化的問題。期待大家的經驗與反饋。

    掃碼查閱原文內容

    本文作者介紹

    費良宏

    亞馬遜云科技首席開發者布道師。在過去的20多年一直從事軟件架構、程序開發以及技術推廣等領域的工作。他經常在各類技術會議上發表演講進行分享,他還是多個技術社區的熱心參與者。他擅長 Web 領域應用、移動應用以及機器學習等的開發,也從事過多個大型軟件項目的設計、開發與項目管理。目前他專注與云計算以及互聯網等技術領域,致力于幫助中國的 開發者構建基于云計算的新一代的互聯網應用。

    看完了 ARM 實例的內容還意猶未盡?

    點擊下方圖片,

    即刻報名2021亞馬遜云科技中國峰會,

    更多精彩內容等你探索!

    別忘了“分享、在看、點贊”三連喲~

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有