對比Intel主流處理器,龍芯有多少潛力?

对比Intel主流处理器,龙芯有多少潜力?

使用phoronix-test-suite對龍芯3A3000以及X270筆記本電腦的i5-7200U處理器性能進行了測試。

一、測試的前提:

1、 X270筆記本,i5-7200U處理器(14nm),雙核4線程,關掉省電,調成性能模式。關掉自動睿頻(turbo),CPU主頻固定在2.5GHz。

2、龍芯3A3000主板,主頻1.4GHz,4核處理器(28nm)。

3、操作系統一致,均為debian testing。注意,龍芯3A3000主板裝的操作系統沒有針對龍芯進行優化。內核為龍夢提供的4.14版本。

二、測試的內容和結果

測試內容為pts中壓縮性能測試部分,包括7z、pbzip2、gzip和LZMA四種壓縮軟件。

測試結果:

主要的結果如下圖所示:

點擊可查看大圖

對以上測試的結果,我做了一個簡單的分析:

點擊可查看大圖

如果測試到此結束,從以上的測試,可以簡單得出結論,龍芯最新的處理器處理器單核的性能僅僅相當與Intel筆記本處理器的1/5~1/2。但考慮到龍芯主頻較低,龍芯處理器單核/GHz的性能相當於Intel i5-7200U處理器的40%~90%。

問題在於,使用PTS是否真的能夠發揮CPU的性能?運行在龍芯上的程序,其性能還能否進一步優化?針對以上的四個測試,我分別進行了分析。

三、深入分析

1.、7z性能優化

7z benchmark跑分的結果,與線程數是相關的。在i5-7200U處理器上,分別使用1~10

個線程測試發行版所提供的7z程序性能,結果如下:

对比Intel主流处理器,龙芯有多少潜力?

當線程數目達到7時,7z達到其峰值性能,約為8871MIPS。當線程數目為4時,峰值性能為8629,達到最高峰值性能的97%。

而對龍芯3A300來說,同樣使用4個線程,是遠遠無法發揮其最高性能的!

類似的,使用不同的線程數目,對7z的性能進行了測試,結果如下:

对比Intel主流处理器,龙芯有多少潜力?

在沒有使用編譯器優化的前提下,僅增加7z運行的線程數目,7z成績從3478提高到了4137,性能提升達到了19%。

接著,參考龍芯官方提供的優化指南,更改了一些編譯選項。Phornix-test-suite中7z編譯時,默認採用的參數為:

OPTFLAGS=-O -s

更改後的編譯選項為:

-march=loongson3a-mtune=loongson3a-O3-s-mabi=n32-ffast-math

-funroll-all-loops -floop-optimize

經過優化編譯選項,編譯的7z程序在使用不同的線程數目時性能如下所示:

对比Intel主流处理器,龙芯有多少潜力?

經過以上的優化,龍芯3A3000運行7z的跑分可以從3478提高到4929,提升的幅度高達42%。按照4949MIPS的跑分,龍芯3A3000性能相當於i5-7200U(8871 MIPS)的56%,單核/GHZ性能的性能相當於i5-7200U的50%。

2. Pbzip2

Pbzip2程序可以分為兩個部分,一部分是bzip庫,一部分是使之並行話的pbzip2。

在Pbzip2運行時,同樣需要指定運行的線程數目。首先,使用不同的線程,對壓縮的效果

進行了測試。測試內容是對大小為612MB的linux-4.3.tar的Linux內核源碼包進行壓縮。

壓縮所使用的命令為:

#!/bin/sh

cd pbzip2-1.1.12/

./pbzip2 -c -p$NUM_CPU_CORES -r -5 ../linux-4.3.tar > /dev/null 2>&1

測試壓縮所使用的時間。

隨後,對二進制文件的編譯進行了優化。增加了編譯的優化選項。

-march=loongson3a -O3 -s-mabi=n32 -ffast-math


对比Intel主流处理器,龙芯有多少潜力?

優化後,壓縮文件耗時由51.2秒減少到43.2秒,速度提高了18.6%。

3. Lzma

Lzma測試內容為使用lzma源碼,編譯出lzma可執行文件,然後用它對一個大小為

563MB的linux-4.0.1.tar的文件進行壓縮,統計壓縮消耗的時間。測試命令為

./lzma_/bin/lzma -q -c linux-4.0.1.tar > /dev/null 2>&1


需要注意的是,LZMA測試本身是單線程的,反映的是處理器的單核性能。

首先,我對lzma的編譯進行了優化。

./configure? CXXFLAGS="-march=loongson3a-O3-s-mabi=n32? -ffast-math

-funroll-all-loops? -floop-optimize"CFLAGS="-march=loongson3a? -O3? -s-mabi=n32

-ffast-math -funroll-all-loops -floop-optimize"

測試表明,壓縮時間從1106秒減少到981.6 s,速度提升了13%。

4. Gzip

經過分析pts/compress-gzip的測試流程,我發現在測試中直接調用了操作系統提供的tar程序來實現壓縮和解壓縮,並沒有下載gzip源碼進行編譯的過程。因此,測試反映的是操作系統自帶tar程序在本地CPU上的性能。

經過優化以後,龍芯CPU和Intel CPU的性能對比如下:

從優化測試的結果看來,4核龍芯3A3000處理器綜合性能相當於雙核四線程Intel i5-7200U處理器的60%,單核性能相當於i5-7200U處理器的1/3~1/2。如果龍芯3A4000處理器的綜合性能能夠達到3A3000的2倍左右,差不多就可以趕上i5-7200U這款低電壓的筆記本處理器了。

四、總結

以上的測試也表明,對龍芯處理器來說,針對特定程序的性能優化是非常關鍵的,能夠讓應用軟件的性能有很大的提升。在龍芯處理器性能還沒有追平國外先進處理器的階段尤其需要深度的優化,需要“app by app,feature by feature.pixel by pixel”地去進行優化。為此,也希望龍芯方面能夠在編譯器和工具鏈的優化上多做工作,使軟件開發者能夠更好地優化自己的程序。


分享到:


相關文章: