計算機架構(gòu)的挑戰(zhàn),硬件異構(gòu)性,定價和易管理性
硬件異構(gòu)性,定價和易管理性: Alas,在云上具有主宰地的x86微處理器,近年來在性能上幾乎沒有任何提升。2017年,單個程序的運行性能僅僅上升了3%。假設(shè)這個趨勢繼續(xù)下去,即便20年后性能也不會翻倍。類似的,單個芯片的DRAM能力也已經(jīng)接近極限,16G的DRAM在市面上很常見,但32G的造起來就不太可行了。
盡管通用目的微處理器出現(xiàn)了性能上的問題,但對更快算力的要求卻沒有停止過。要向前進,只有兩條路可行了:一是對于用高級腳本比如js和python編寫的函數(shù),使用專門優(yōu)化過的硬件-軟件設(shè)計,定制對應(yīng)的處理器,這可以把特定語言的執(zhí)行速度提升1到3個數(shù)量級。二是使用領(lǐng)域特定的體系架構(gòu)(Domain Specific Architectures),比如使用GPU,這在圖像加速和機器學(xué)習(xí)領(lǐng)域已經(jīng)是很常見的事情了,相信在未來會有更多針對領(lǐng)域定制的處理器出現(xiàn)。
我們在4.1節(jié)中曾經(jīng)提到過,serverless計算要支持即將到來的硬件異構(gòu)問題有兩種方案:
serverless可以包含不同的實例類型,并為它們制定不同的單位使用價格。
云供應(yīng)商可以支持自動切換基于語言的加速器或者領(lǐng)域特定體系架構(gòu)。這種自動化能力可以基于cloud functions中所使用的語言或軟件庫隱式地完成,比如自動使用GPU來運行CUDA代碼、用TPU來運行TensorFlow代碼。云供應(yīng)商還可以監(jiān)控cloud functions的實際運行性能,根據(jù)歷史數(shù)據(jù)來為它們選擇最適合運行的硬件。
serverless計算目前面臨的異構(gòu)性問題,只是x86的SIMD指令集上面很小的一部分。AMD和Intel都在通過增加單時鐘周期內(nèi)運行指令數(shù)和增加新指令的方式來快速改進x86指令集。對于使用SIMD指令集的程序而言,運行在最新的Intel Skylake微處理器上要比在舊的Broadwell上快得多。今天這兩種微處理器在AWS Lambda上都有應(yīng)用,但它們的收費是相同的,用戶也沒辦法選擇自己的實例到底運行在哪一種處理器上。
由于加速器在云上越來越流行,serverless的云供應(yīng)商可能沒辦法再繼續(xù)忽略硬件的異構(gòu)性問題,特別是在已經(jīng)存在合理補救措施的情況下。