怎樣讓國產晶元效能超越 Intel

2021-09-11 06:06:42 字數 2017 閱讀 1021

做一次標題黨,其實我們做軟體的當然沒辦法改變晶元的效能,也不可能真地讓國產晶元超越 intel。

這個話題從去年做過的一次效能測試說起,先看測試結果:

這些題目原本是某大使用者在選型資料庫時用於評測效能的。給定了資料(結構和規模)和 sql,在同樣的硬體環境下讓各家資料庫都跑一下,看誰的速度最快。

我們從中選擇了幾個耗時最長的 sql,再做了少量補充。然後準備了兩組集群,一組用 intel 晶元,另一組用國產飛騰晶元,安裝好分布式資料庫和集算器,並在資料庫中生成測試資料。

1. 用 sql 在資料庫中執行,記錄時長;

2. 將 sql 改寫成 spl(這有些工作量,涉及到演算法更改),但仍讀取資料庫中資料計算,記錄時長;

3. 將資料匯出到檔案,使用集算器特有的組**式儲存,再改寫 spl(更換資料來源,使用組表資料來源會比使用資料庫源更簡單)計算,記錄時長;

然後就得到了上面那個測試結果表。

還有幾點說明:

1. 我們刻意選擇了一些在原評測中耗時最長的 sql(幾乎都 >1 小時),所以這裡看到的資料庫上跑 sql 的效能都較差;原測試中也有幾條能跑得很快的 sql,但這裡沒有選用。

2. 原評測中要求只要返回第一批資料即可,不需要返回全部結果集,這裡延用了此規則,但我們補充了一些題目,在其中確保必須把涉及資料全部遍歷到才可能計算出結果(比如增加 group by 和 order by),這樣可以更有效地測試遍歷性能。

3. 飛騰上資料庫的運算效能和 intel 上差不多,也不是關注重點,沒有再列出了。

4. 前兩題用 spl 讀資料庫的效能已經非常好,所以沒再做讀檔案的測試了。

從測試結果可以看出:

1. 在 intel 機上,用 spl 讀檔案的計算效能遠遠超過資料庫用 sql 的計算效能,即使用 spl 讀資料庫運算也常常能獲得比在資料庫中用 sql 好得多的效能,這還是在付出了資料庫 io 成本的代價之後的結果。

2. 在飛騰上的 spl 讀檔案的計算效能也遠遠超過在 intel 上資料庫的計算效能,在飛騰上用 spl 讀資料庫也比 intel 上的純資料庫計算有優勢。

那麼,spl 是怎麼做到高效能的?

就是我們常說的辦法,spl 可以採用更高效能的演算法,而 sql 不可以。

這些題目都不是非常簡單的兩三行 sql,基本都帶有子查詢或較多表的 join。在充分理解資料特徵之後,我們可以設計出更低成本的演算法,把運算複雜度降低乙個到幾個數量級。在這裡主要是對有序的利用,spl 的理論體系是基於有序集合的,可以充分利用資料有序的特徵來提高效能,而 sql 就很難利用這一點,即使知道有好辦法優化也無法實施。

這篇文章裡不合適解釋每個問題的演算法了,我們以後會寫文章再披露詳細的測試過程與演算法說明。這裡有一篇對前兩題的演算法解析《 利用有序高效實施交並差集合運算 》。(其中有個 spl 跑得也不快的場景就沒有寫到測試結果表裡了:))

現在可以解釋標題中說的怎樣讓國產晶元效能超越 intel 了,晶元本身的效能並沒有超越,超越的是演算法。具體來說,就是用 spl 在低效能晶元上跑高效能演算法,能超越 sql 在高效能晶元上跑低效能演算法。而用 spl 在 intel 晶元上跑高效能演算法,當然還能獲得比飛騰更好的效能。

就我們的工作經驗來看,絕大多數的資料倉儲運算都可以獲得這種優化。只要寫出的 sql 夠長夠複雜,基本都有不少可優化的環節。如果我們用 spl 來重構資料倉儲,就可能把現有運算效能再提高乙個數量級。

這個測試結果表上還可以看出兩個結論:

1. 讀資料庫顯然比讀檔案的效能要差很多。這是因為資料庫 io 成本很高,而且很難做高效的壓縮。要想獲得最高效能,盡量不要把資料存到資料庫中。象我們在另一篇文章《資料庫的封閉性》中說的,未來的資料倉儲不必要有「庫」這麼個形式。

2. 飛騰上 spl 的效能並沒有比 intel 差出數量級(傳說飛騰落後 5 年,按摩爾定律,差不多有乙個數量級)。資料密集型的計算效能,起決定性作用的常常是硬碟和記憶體,而不是 cpu。我不知道這組裝置的飛騰晶元到底和 intel 差多少,但即使有差距,也不會造成整體效能上數量級的下降,做好儲存方面的優化要比 cpu 重要。

國產晶元替代彙總

ms520 pin 對 pin 替代 cv520,fm17520 ms522 pin 對 pin 替代 cv520,rc522,fm17522,fm17520 ms523 pin 對 pin 替代 cv520,rc522,rc523,fm17522,fm17520 fm17550 ms8628 pi...

又見國產化高效能晶元 「魂芯一號」

這星期又見兩條 中國芯 的新聞,一是合肥的 魂芯 二是據說要建立國家標準的cpu架構。作為曾研究過處理器架構的人,我一直是很關心這方面的訊息的。可惜,我再也沒有十年前的興奮感了。十年前,本以為中國芯大有可為。記得之後幾年裡,龍芯 鳳芯 漢芯什麼的層出不窮,頗為熱鬧了一陣子。可熱鬧之後,不見真正被市場...

如何區別國產CAN晶元和進口CAN晶元的效能(上)

如何區別國產can晶元和進口can晶元的效能 上 現在國產晶元百花齊放,但是效能引數如何,怎麼來測出它們的效能優劣呢?下面的小實驗來解答,現在以國產 廣州金昇陽 scm3421asa晶元和nxp的 tja1051 兩款作性 能測試及比對。工具 國產廣州金昇陽scm3421asa晶元 3pcs nxp...