www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 玩轉(zhuǎn)嵌入式
[導(dǎo)讀]2015年我加入華為中軟院編譯器實(shí)驗(yàn)室,那時(shí)候它還叫歐拉六部。其實(shí)程序員敲代碼寫(xiě)的編程語(yǔ)言機(jī)器是看不懂的,需要先翻譯成匯編語(yǔ)言,也就是一條條指令,再轉(zhuǎn)換成二進(jìn)制,這樣機(jī)器才明白我們要做什么。編譯器就像是“翻譯官”,把程序員懂的編程語(yǔ)言轉(zhuǎn)化成機(jī)器認(rèn)識(shí)的二進(jìn)制,如果這個(gè)“翻譯官”看不懂編程語(yǔ)言或者翻譯的速度慢,在性能上的影響就可想而知了。

我是“翻譯官”優(yōu)化師--吳鋒

2015年我加入華為中軟院編譯器實(shí)驗(yàn)室,那時(shí)候它還叫歐拉六部。
?
其實(shí)程序員敲代碼寫(xiě)的編程語(yǔ)言機(jī)器是看不懂的,需要先翻譯成匯編語(yǔ)言,也就是一條條指令,再轉(zhuǎn)換成二進(jìn)制,這樣機(jī)器才明白我們要做什么。編譯器就像是“翻譯官”,把程序員懂的編程語(yǔ)言轉(zhuǎn)化成機(jī)器認(rèn)識(shí)的二進(jìn)制,如果這個(gè)“翻譯官”看不懂編程語(yǔ)言或者翻譯的速度慢,在性能上的影響就可想而知了。
?
性能雖然可以通過(guò)手動(dòng)改寫(xiě)匯編語(yǔ)言(機(jī)器指令)進(jìn)行優(yōu)化,但匯編語(yǔ)言復(fù)雜難寫(xiě)、工作量大、不易理解,如果不想寫(xiě)匯編卻要有接近匯編的性能,就得依賴于一款強(qiáng)大的編譯器,這就是我們做編譯器的目標(biāo)和使命。
?
?
?
從使用者到開(kāi)發(fā)者
?
剛來(lái)華為的半年比較痛苦,技術(shù)討論的時(shí)候周圍的同事都是資深研發(fā),說(shuō)起技術(shù)來(lái)頭頭是道,我經(jīng)常聽(tīng)得云里霧里,搞的我每次開(kāi)會(huì)心理壓力都很大。
?
編譯器這個(gè)東西門(mén)檻高,技術(shù)深。為了對(duì)這一塊有更深的理解,盡快上手,我記得當(dāng)時(shí)是早上8點(diǎn)上班,我一般提前一小時(shí)7點(diǎn)到工位,結(jié)合實(shí)際的應(yīng)用,帶著問(wèn)題看代碼,我把編譯器里面一些常用模塊的代碼看了不知道多少遍。
?
因?yàn)樵谏弦患夜窘?年嵌入式領(lǐng)域的積累,我對(duì)性能(時(shí)延)比較敏感,漸漸地我也發(fā)現(xiàn)了自己擅長(zhǎng)從用戶角度出發(fā),提出產(chǎn)品的問(wèn)題和優(yōu)化點(diǎn)。從此我在華為所做的諸多大事小事,也基本離不開(kāi)“優(yōu)化”兩字。
?
很快我就迎來(lái)了自己的第一次出差,是去上海。一天主管過(guò)來(lái)說(shuō):“有個(gè)項(xiàng)目提了緊急援助,你們?nèi)スリP(guān)一下”。雖然這活一聽(tīng),就比較難搞定,但是對(duì)于還沒(méi)有轉(zhuǎn)正的我來(lái)說(shuō)是一個(gè)很好的機(jī)會(huì),于是我做好了摩拳擦掌、大顯身手的準(zhǔn)備。在那之前,我只知道華為人為了業(yè)務(wù)是敢打敢拼,還沒(méi)有真正見(jiàn)識(shí)過(guò),直到我參與了這次項(xiàng)目,第一次感受到為了沖刺交付的那股熱血。我到現(xiàn)在都記得,那段時(shí)間是冬天,很冷,但我在上研所“與世隔絕”,每天早上進(jìn)去,晚上出來(lái),仿佛外面雨雪風(fēng)霜都與我們無(wú)關(guān)。
?
當(dāng)時(shí)正值無(wú)線5G技術(shù)的大PK,各大廠商搞得如火如荼。無(wú)線同事們攻關(guān)數(shù)月,已經(jīng)取得很大進(jìn)展,但是在基帶業(yè)務(wù)上遇到性能瓶頸,業(yè)務(wù)處理時(shí)延值遠(yuǎn)大于目標(biāo)值。經(jīng)過(guò)分析討論,分解給我們編譯器的任務(wù)是優(yōu)化十幾個(gè)算法處理類函數(shù),當(dāng)前指標(biāo)相比預(yù)期,有的甚至差距十幾倍乃至幾十倍。受到周圍熱血攻關(guān)的氣氛的影響,我拿到任務(wù)也是一頭扎進(jìn)去,基于之前多年的經(jīng)驗(yàn)以及前段時(shí)間的苦學(xué),面對(duì)第一個(gè)需要優(yōu)化的函數(shù),我從拿手的匯編開(kāi)始分析,很快便發(fā)現(xiàn)了性能差的主要原因。因?yàn)閷?duì)編譯器性能的了解,略微調(diào)整下算法中C語(yǔ)言某一段代碼的寫(xiě)法,竟然就成功了,函數(shù)性能一下子提升X倍,達(dá)成了預(yù)期目標(biāo)!這個(gè)結(jié)果令我興奮不已,這一定程度驗(yàn)證了我之前努力的成效,更是給了我莫大的鼓勵(lì),讓我對(duì)接下來(lái)的挑戰(zhàn)充滿信心。
?
最后經(jīng)過(guò)兩周的攻關(guān),我們達(dá)成了全部的目標(biāo),幫助產(chǎn)品解決了當(dāng)前項(xiàng)目中的最大阻塞點(diǎn)。這次給我最深的感悟就是優(yōu)化不是靠“磨”出來(lái)的,解決第一個(gè)的時(shí)候還在摸索,到后面慢慢就掌握了一些方法門(mén)路,越來(lái)越上手了。
?
數(shù)著cycle過(guò)日子的“火鍋小分隊(duì)”

如果說(shuō)第一次攻關(guān)我們是援軍,那么第二次攻關(guān)我們就是主力軍,而我更是主力軍中的先鋒。
?
那會(huì)兒無(wú)線準(zhǔn)備開(kāi)發(fā)第一代自研矢量核,相比于普通核,芯片支持更寬的矢量計(jì)算,因此在矢量化后可以將運(yùn)算次數(shù)縮減到1/X,讓芯片的性能提升X倍,我們團(tuán)隊(duì)承接了其配套的編譯器開(kāi)發(fā),把實(shí)現(xiàn)矢量化功能的代碼“翻譯”給芯片。
?
業(yè)務(wù)對(duì)我們的要求非常高,我們第一次出來(lái)的版本在業(yè)務(wù)側(cè)驗(yàn)證,性能僅有手寫(xiě)匯編的30%,距離既定目標(biāo)差的非常遠(yuǎn)。在現(xiàn)場(chǎng)直面產(chǎn)品的我很受打擊。身體僵坐在工位上看著屏幕上的代碼,聽(tīng)著業(yè)務(wù)側(cè)的同事拍桌子質(zhì)問(wèn):“這么大的差距,怎么追?”沒(méi)有人能比我當(dāng)時(shí)的心情更著急。接下來(lái),我們和產(chǎn)品矢量核業(yè)務(wù)開(kāi)發(fā)團(tuán)隊(duì)開(kāi)展聯(lián)合優(yōu)化,一方面雙方可以一起探索如何寫(xiě)出高性能的矢量核代碼;另一方面,在探索過(guò)程中,我們可以了解業(yè)務(wù)特點(diǎn),發(fā)掘編譯器的待改進(jìn)點(diǎn)。他們做功能,我們優(yōu)化性能,雙管齊下。
?
各個(gè)模塊里業(yè)務(wù)側(cè)都有自己的期望值,一開(kāi)始的差距甚至都在2倍3倍以上。經(jīng)過(guò)我們和業(yè)務(wù)側(cè)的討論,不久就確定了各個(gè)項(xiàng)目里程碑計(jì)劃表。面對(duì)巨大的gap,沒(méi)有時(shí)間給我浪費(fèi),而且越到后面優(yōu)化難度越大。
?
編譯器的性能優(yōu)化目標(biāo)都是參考極致手寫(xiě)匯編來(lái)確定的通常我們用cycle(機(jī)器執(zhí)行指令頻率)數(shù)作為衡量性能的指標(biāo)。Cycle的數(shù)量越少,說(shuō)明耗時(shí)越短,性能越優(yōu)。在那段時(shí)間里,我的腦子里面全是cycle,今天優(yōu)化了多少cycle,我們距離下一個(gè)里程碑還有多少cycle,在接下來(lái)的日子里需要每天保持優(yōu)化多少cycle。夜晚別人是數(shù)著綿羊入睡,我大概是念叨著cycle入睡……雖然偶爾會(huì)有些焦慮,但只要我做到今日cycle今日畢,就是在朝著目標(biāo)一步步前進(jìn)!
?
還記得被cycle支配的漫長(zhǎng)異地攻關(guān)期,上研食堂的小火鍋是我們的最愛(ài),又快又方便。一次在距離里程碑期限快要到了的時(shí)候,還有許多cycle沒(méi)有優(yōu)化完成。我和另外兩個(gè)同事嘴里吃著丸子,心里默默念叨著自己的cycle。到最后有個(gè)同事越吃越?jīng)]勁,只想趕快回到工位工作,這時(shí)候鍋里還剩了好幾個(gè)丸子。我就拉著他說(shuō):“你吃完,別浪費(fèi),你吃一個(gè)丸子我給你減少100個(gè)cycle怎么樣?”他撲哧一下笑出聲。其實(shí),我也明白兄弟們壓力都很大,雖然很艱難,希望大家能有時(shí)間放松一下緊繃的弦……
?
在持續(xù)攻關(guān)了三個(gè)多月后,我們終于看到了曙光。一方面業(yè)務(wù)側(cè)性能已經(jīng)基本達(dá)到預(yù)期,雙方已聯(lián)合摸索出一套適配當(dāng)前芯片架構(gòu)的代碼寫(xiě)法,另一方面編譯器引入和增強(qiáng)了許多的算法,各個(gè)模塊都已達(dá)成了90%手寫(xiě)匯編的既定目標(biāo),在一些典型業(yè)務(wù)上的性能結(jié)果逼近匯編。而我心里的大石頭終于放下了,我想自己再也不用每天數(shù)著cycle過(guò)日子了,這場(chǎng)仗,我們打贏了!
?
項(xiàng)目結(jié)束后,我們幾個(gè)兄弟大快朵頤地吃了頓火鍋,還點(diǎn)了不少小丸子,大家聊起攻關(guān)歲月,都覺(jué)得那場(chǎng)景恍如隔日,卻又記憶猶新……
?
“不能在我這掉鏈子”
?
這個(gè)項(xiàng)目結(jié)束不久后,我就成為了團(tuán)隊(duì)的SE。對(duì)于普通開(kāi)發(fā)而言,工作偏向于聚焦某一個(gè)問(wèn)題;而作為SE,團(tuán)隊(duì)的對(duì)外技術(shù)發(fā)言人,需要花更多的精力去分析項(xiàng)目中的技術(shù)風(fēng)險(xiǎn),并探索新技術(shù),需要背負(fù)整個(gè)項(xiàng)目的壓力。
?
由于編譯器在第一代核上的性能達(dá)到了匯編的90%,在之后一代代的芯片演進(jìn)過(guò)程中,90%的指標(biāo)自然就成為了業(yè)務(wù)側(cè)對(duì)我們編譯器特性的最低要求。然而特性越來(lái)越復(fù)雜,技術(shù)難度更像是一道難以跨越的鴻溝,我們的標(biāo)準(zhǔn)卻并沒(méi)有降低。
?
記得在某一代矢量核演進(jìn)過(guò)程中引入了一個(gè)新特性,該特性是當(dāng)代芯片架構(gòu)演進(jìn)的主要提升點(diǎn),但是這個(gè)特性在業(yè)界沒(méi)有任何先例技術(shù)。開(kāi)會(huì)的時(shí)候,設(shè)計(jì)的同事斬釘截鐵地說(shuō)著:“做不到90%,就不能達(dá)標(biāo)”。
?
當(dāng)時(shí)聽(tīng)到這話的我,瞬間壓力巨大。由于該特性的編譯器實(shí)現(xiàn)沒(méi)有業(yè)界可參考經(jīng)驗(yàn),我們就是從零開(kāi)始,需要完全自研的設(shè)計(jì)開(kāi)發(fā)。關(guān)于這個(gè)技術(shù)的特點(diǎn),編譯器現(xiàn)有的能力,將來(lái)這塊能不能做?能做到什么程度?這些都是我要考慮的風(fēng)險(xiǎn)點(diǎn)。我不敢輕易承諾,但有時(shí)候我又不得不承諾。
?
在這種承諾下,我只能自己消化。當(dāng)務(wù)之急就是對(duì)這個(gè)最大的風(fēng)險(xiǎn)特性做一個(gè)能力評(píng)估,時(shí)間緊迫,平時(shí)開(kāi)發(fā)一個(gè)新特性都要2-3個(gè)月,但那時(shí)的我沒(méi)有時(shí)間了。我花了2天時(shí)間通讀了該特性的所有描述,并理解每一個(gè)細(xì)節(jié);同時(shí)還調(diào)研了業(yè)務(wù)場(chǎng)景,梳理哪些場(chǎng)景我們可以支持,哪些將會(huì)是風(fēng)險(xiǎn),最后在兩周內(nèi)給出commit(確認(rèn))。
?
之后,我又花了幾天時(shí)間實(shí)現(xiàn)了一個(gè)demo,進(jìn)一步證實(shí)了我們的基本方案的可行性?;诜桨赋醺澹覀?cè)u(píng)估可以覆蓋80%的業(yè)務(wù)場(chǎng)景,剩下的20%也可以通過(guò)一些定制化擴(kuò)充來(lái)進(jìn)一步支持。至此,我們可以commit 90%的目標(biāo),雖然仍有風(fēng)險(xiǎn),但已經(jīng)有了底氣。
?
那段時(shí)間,我經(jīng)常在會(huì)后一個(gè)人默默復(fù)盤(pán),思考著會(huì)議上大家提出的問(wèn)題技術(shù)上是否可以通過(guò)外部交流幫助;編譯器到底需要解決哪些問(wèn)題,才能風(fēng)險(xiǎn)可控,將來(lái)又怎么去彌補(bǔ)。畢竟我要對(duì)項(xiàng)目負(fù)責(zé),對(duì)團(tuán)隊(duì)負(fù)責(zé)。要知道到目前為止,我們團(tuán)隊(duì)可是從來(lái)沒(méi)有過(guò)“敗績(jī)”,我們之前沒(méi)有一次掉鏈子的,更不能在我這掉鏈子,我做出的承諾就要達(dá)到。當(dāng)然最終我們也是順利達(dá)成了目標(biāo)。
?
與可信風(fēng)險(xiǎn)說(shuō)“不”
?
2018年下半年,公司開(kāi)始推行軟件工程能力提升項(xiàng)目,很多團(tuán)隊(duì)都大刀闊斧地進(jìn)行了可信改革,我們的編譯器優(yōu)選版本定了5年更新一次的計(jì)劃。
?
編譯器在CT領(lǐng)域進(jìn)行了近10年的交付,特別是在無(wú)線場(chǎng)景,支撐的芯片類型非常多,每種芯片類型編譯器支撐的版本也不盡相同,所以整個(gè)編譯器的“可信”工程是艱巨的,存在可信風(fēng)險(xiǎn),亟需升級(jí)。另一方面我們是自研芯片的編譯器,在獲得高性能的同時(shí)還有很多的業(yè)務(wù)協(xié)同優(yōu)化,牽一發(fā)動(dòng)全身,一旦編譯器發(fā)生變更,涉及協(xié)同優(yōu)化部分的代碼調(diào)整將會(huì)是最痛苦的煎熬。此外,自研芯片已經(jīng)演進(jìn)了那么多代,升級(jí)后每一代都要重新配套。而我們半年后將迎來(lái)客戶交付時(shí)間點(diǎn),要在那之前完成6款自研編譯器的升級(jí),時(shí)間上也將是一個(gè)巨大的風(fēng)險(xiǎn)。
?
面臨這么多困難當(dāng)前,我們編譯器難道不升級(jí)了?
?
不,作為負(fù)責(zé)無(wú)線領(lǐng)域的編譯器SE,我要帶領(lǐng)團(tuán)隊(duì)與時(shí)間賽跑,我們交付的編譯器不僅要高性能,還要高可信。我一直認(rèn)為,作為SE,可信設(shè)計(jì)其實(shí)就是本職工作,并不是今天公司搞可信,我們才撲上去搞,而應(yīng)該是在平時(shí)的設(shè)計(jì)開(kāi)發(fā)中,就要去考慮的。雖然版本升級(jí)時(shí)間緊、任務(wù)重,但我還是給這次任務(wù)增加了額外的難度,既然未來(lái)是要繼續(xù)升級(jí),考慮到后續(xù)代碼的可維護(hù)性,索性這次就直接從系統(tǒng)層面做一個(gè)大重構(gòu),一步到位!
?
說(shuō)實(shí)話,這么重要又有難度的挑戰(zhàn),我心里也打鼓,畢竟這不僅是編譯器團(tuán)隊(duì)的事,還牽扯著協(xié)同業(yè)務(wù)的優(yōu)化,更重要的是不能影響后續(xù)客戶的交付節(jié)奏和質(zhì)量,我們不容有失。
?
半年的時(shí)間痛苦又漫長(zhǎng),通過(guò)多次攻關(guān)聯(lián)調(diào),經(jīng)過(guò)了很多個(gè)重構(gòu),我們終于完成了全部的自研芯片編譯器版本升級(jí)。不僅保障了升級(jí)后的各個(gè)編譯器在業(yè)務(wù)側(cè)性能沒(méi)有下降,消除了芯片應(yīng)用上的可信風(fēng)險(xiǎn);同時(shí)我們?cè)谏?jí)過(guò)程中,也做了很多的架構(gòu)解耦工作,包括開(kāi)源與自研代碼解耦,多個(gè)芯片之間的接口抽象等,以利于下次升級(jí)。給客戶、也給我們自己交了一份滿意的答卷。如今再回首,我覺(jué)得一切都是最值得的,對(duì)于可信的風(fēng)險(xiǎn),我們必須迎難而上!
?
?
?
最后,我想說(shuō),我們團(tuán)隊(duì)是一支歷史悠久的團(tuán)隊(duì),伴隨著無(wú)線自研芯片一路成長(zhǎng),未來(lái)軟件優(yōu)化更顯重要,編譯器在其中的重要性不言而喻。SE是團(tuán)隊(duì)的領(lǐng)航者,不僅要保證當(dāng)前項(xiàng)目的成功,還要為團(tuán)隊(duì)的未來(lái)發(fā)展找技術(shù)方向。高性能、高可信不僅僅只是口號(hào),而是需要我們?nèi)コ掷m(xù)打造
相關(guān)文章推薦:

華為24年,49歲,他一直在編碼

一個(gè)博士應(yīng)聘華為,大疆的經(jīng)歷...

華為員工裸辭之后悟出的那些“坑”!

中國(guó)“最?!背绦騿T,一人之力單挑微軟


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉