漫談程序員(十八)淺談谷歌用戶體驗設(shè)計準(zhǔn)則
906
2025-03-31
鯤鵬920系列芯片概覽
鯤鵬920提供強(qiáng)大的計算能力,基于華為自研的具有完全知識產(chǎn)權(quán)的ARMv8架構(gòu),最多支持64 Core。
通過片間Cache一致性接口Hydra可擴(kuò)展系統(tǒng)核數(shù),最多支持到256 Core,形成性能超強(qiáng)的板級計算節(jié)點(diǎn)。
支持CPU Core虛擬化、內(nèi)存虛擬化、中斷虛擬化、IO虛擬化等多項虛擬化等技術(shù),使得系統(tǒng)的資源共享更加靈活、系統(tǒng)的遷移過程變得相對簡單。
鯤鵬920具有豐富且強(qiáng)大的I/O能力。集成以太網(wǎng)控制器;提供SAS控制器;集成PCle控制器。
芯片集成安全算法引擎、壓縮/解壓縮引擎、存儲算法引擎等加速引擎進(jìn)行業(yè)務(wù)加速。
高性能、高集成、異構(gòu)加速
高集成,高能效
最強(qiáng)算力的產(chǎn)品必須要有最強(qiáng)勁的處理器。
鯤鵬處理器采用了多合一的SoC芯片架構(gòu),它不僅僅是一顆CPU,還集成了RoCE網(wǎng)卡、SAS控制器、橋片等,單顆處理器實現(xiàn)了4顆芯片的功能,以一當(dāng)四!可有效提升主板的集成度,使服務(wù)器的體積更小,算力密度更高、功耗更低。
華為研發(fā)的Cache一致性總線HCCS,可以實現(xiàn)CPU和CPU之間的高速互聯(lián),通信速率高達(dá)每秒30GT,是業(yè)界主流CPU互聯(lián)速率的2倍多。通過多CPU互聯(lián),我們率先實現(xiàn)256個物理核的NUMA架構(gòu),從而推出業(yè)界首款兼容ARM的最強(qiáng)算力4路服務(wù)器
當(dāng)前處理器一般通過與外置網(wǎng)卡配合為服務(wù)器提供10GE、25GE的接口,在分布構(gòu)下,要完成一個高算力的集群組網(wǎng)爾f奧R100GE成為服務(wù)器的標(biāo)準(zhǔn)配置。從個推出內(nèi)置直出100GE網(wǎng)絡(luò)能力的通用處理器,讓100GE成為服務(wù)器的標(biāo)準(zhǔn)配置。從處理器到服務(wù)器,擴(kuò)展到整機(jī)柜和計算集群,實現(xiàn)全100GE的高速網(wǎng)絡(luò)互聯(lián),引領(lǐng)服務(wù)器邁入100GE時代,構(gòu)建最強(qiáng)算力的集群。
更安全:鯤鵬加速引擎,數(shù)據(jù)安全加解密
鯤鵬應(yīng)用開發(fā)代碼歸一問題
鯤鵬服務(wù)器底層芯片架構(gòu)和傳統(tǒng)x86芯片有差異,業(yè)務(wù)軟件遷移過程中要對代碼進(jìn)行適配修改。修改后的代碼可能會維護(hù)2個代碼分支,增加了后期代碼維護(hù)成本,這種方法是不可取的。將2個分支的代碼合一到一套代碼的過程稱為代碼歸一。
代碼歸一有三種方式實現(xiàn):
代碼段編譯宏控制
編譯文件Makefile控制
運(yùn)行態(tài)自動適配
解釋型語言編譯后生成平臺無關(guān)的中間代碼文件(例如,Java代碼編譯后會生成.class
文件,python代碼編譯后會生成.pyc文件),由虛擬機(jī)解釋執(zhí)行,虛擬機(jī)完成平臺差異的屏蔽,所以基于解釋型語言開發(fā)的應(yīng)用程序,與底層芯片架構(gòu)無關(guān)的,無須遷移可以將同一套代碼放在鯤鵬和x86服務(wù)器上運(yùn)行。
基于編譯型語言開發(fā)的應(yīng)用程序,其編譯后得到可執(zhí)行程序,可執(zhí)行程序執(zhí)行時依賴的指令是芯片架構(gòu)相關(guān)的。因此,軟件遷移后鯤鵬架構(gòu)上的代碼和x86架構(gòu)的代碼會不一致,代碼歸一需要使用合適的措施隔離不同架構(gòu)代碼,后面我們以編譯型語言代表C/C++語言為例,分別從代碼片段和文件兩個方面說明歸一方法。
代碼段編譯宏控制
通過編譯宏控制是C/C++中較為通用的代碼片段隔離方法,同樣適用于不同芯片架構(gòu)中的代碼歸一。一般方法是,在代碼中用不同的宏將對應(yīng)芯片的代碼包含起來,在編譯時選擇或者自動識別選用的宏類型,如果不是被啟用的宏,其代碼就不會被編譯。
方法一:使用GCC預(yù)定義好的通用宏。C/C++語言中通過條件編譯#ifdef,#endif 等關(guān)鍵詞實現(xiàn)將代碼塊編譯區(qū)分,示例代碼中采用了_x86_64_宏控制x86環(huán)境下運(yùn)行的代碼,采用了_aarch64_宏控制ARM環(huán)境下運(yùn)行的代碼,這兩個宏是GCC預(yù)定義好的通用宏,GCC根據(jù)編譯所在服務(wù)器的架構(gòu)自行激活對應(yīng)的宏,用戶無需定義,使用比較方便。
方法二:自定義宏,通過編譯命令行帶入傳遞到代碼編譯中。如,gcc通過添加–DDEFINES或 -DDEFINES=CONDITION參數(shù)來定義用戶的宏。
編譯文件Makefile控制
如果業(yè)務(wù)代碼中涉及不同架構(gòu)的代碼較多,使用代碼片段隔離方式操作繁瑣,易讀性差,推薦將統(tǒng)一架構(gòu)相關(guān)的代碼放到同一個文件中,使用文件隔離的方式并采用makefile分文件編譯方式實現(xiàn)代碼歸一。
如果使用make x86執(zhí)行的為x86平臺編譯,如果執(zhí)行make kunpeng,執(zhí)行的為kunpeng平臺編譯
可以使用shell腳本配合makefile的方式來實現(xiàn)自動識別芯片架構(gòu)類型并執(zhí)行不同的編譯命令,高效且不易出錯
運(yùn)行態(tài)自動適配
上層業(yè)務(wù)代碼如果要根據(jù)不同的芯片類型設(shè)置不同的參數(shù),或者走不同的代碼邏輯路徑,可以通過實時查詢芯片類型來判斷,這樣代碼實現(xiàn)了自動適配芯片類型。與編譯宏控制方法的區(qū)別是,這類代碼和編譯無關(guān),不同芯片架構(gòu)都可以編譯。
ARM 鯤鵬
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。