愛鋒貝

標(biāo)題: 自動駕駛-芯片-DDR [打印本頁]

作者: 果殼醬    時間: 2022-9-29 22:08
標(biāo)題: 自動駕駛-芯片-DDR
自動駕駛-芯片-DDR
參考文獻(xiàn)鏈接
https://mp.weixin.qq.com/s/QYaxxFL9DgaH8w7-oWTLnQ
https://mp.weixin.qq.com/s/piz05ElprV88xnrHFufnvg
https://mp.weixin.qq.com/s/6H_JsumnYUoyIT8_ovBihQ
https://mp.weixin.qq.com/s/O1jMMqKn-fnQp0T35tMP-w
裁員、賣身、大虧損,西半球刮來自動駕駛第一股寒風(fēng)
今年開始,行業(yè)大環(huán)境突變……
自動駕駛第一股圖森未來原董事長陳默在 7 月份接受媒體采訪時的一句話,總結(jié)了美國上半年的市場情況,也意外成功預(yù)言了下半年的行業(yè)趨勢。

(, 下載次數(shù): 13)
起初是圖森在 3 月份突傳出售中國業(yè)務(wù),團(tuán)隊隨之大調(diào)整,陳默也從公司出走。
接著,6 月份,特斯拉關(guān)閉位于加州圣馬特奧的自動駕駛系統(tǒng)部門,同時裁減約 200 個時薪制崗位。沒多久,明星公司 Argo AI 也宣布裁減約 150 名員工。
而最近的消息是,上市不到一年的 Aurora,尋求部分或整體將公司打包出售。要知道,在 Aurora 去年的招股書中,還曾意氣風(fēng)發(fā)地把自己和 Waymo、Cruise 并列為自動駕駛?cè)痔煜碌膭萘?.....
毫無疑問,事情正在起變化,而背后的原因是行業(yè)正在經(jīng)歷一輪資本退潮:
一邊是美聯(lián)儲加息背景下資金成本越來越高,另一邊是自動駕駛企業(yè)越來越止不住的燒錢窟窿,投資方此時選擇站在一處,目睹一場泥沙俱下的行業(yè)「盛況」。
自動駕駛企業(yè)對此無能為力,在技術(shù)、商業(yè)化均未取得突破性進(jìn)展之前,它們只能仰賴外部輸血。而當(dāng)這一過程被突然中斷,也只能選擇斷臂求生,甚至將自己打包出售。
「凜冬已至?!挂晃粯I(yè)內(nèi)人士感慨道。值得注意的是,這場看似起源于西半球的寒風(fēng),也刮到了國內(nèi)。在前不久,華為創(chuàng)始人任正非率先感受到寒氣,并提出要傳給每一個人。
2022,注定是自動駕駛行業(yè)空前艱難的一年。
01
自動駕駛堪稱碎鈔機(jī),
Cruise 每天消耗 500 萬美元
3 月份,圖森未來傳出要將亞太業(yè)務(wù)(主要是中國業(yè)務(wù))以 10 億美元的價格出售。在外界看來,這是一筆為了符合美國監(jiān)管而迫不得已達(dá)成的交易。
自去年 4 月圖森 IPO 以來,美國外國投資委員會 (CFIUS) 就一直以圖森未來擁有中國區(qū)業(yè)務(wù)為由對其展開調(diào)查,并最終在今年 2 月份與圖森達(dá)成協(xié)議,后者需將自動駕駛卡車業(yè)務(wù)的一些技術(shù)監(jiān)督權(quán)移交給美國相關(guān)部門,并定期開會并向美國外資投資委員會報告等。
在這種要求下,為了避免糾紛,圖森直接出售亞太業(yè)務(wù)顯得合情合理。然而,陳默表示,此舉還有另一層原因:缺錢。「出售亞太業(yè)務(wù)是為了讓圖森回籠資金,以支撐美國業(yè)務(wù)發(fā)展?!?br /> 據(jù)了解,圖森上市至今「燒錢」速度驚人。以其最新發(fā)布的二季度報為例,實(shí)現(xiàn)營收 259.4 萬美元,錄得虧損 1.11 億美元(折合約為 7.59 億人民幣),其中研發(fā)投入 5.93 億元人民幣,如果按每季度 90 天計算,每天消耗超過 600 萬元。
作為上市公司,圖森按理來說可以在資本市場尋求募資,然而其股價自高峰一落千丈,市值跌了 80%,陳默坦言:「我們不可能在市場上募集到錢。」

(, 下載次數(shù): 14)
和圖森一樣陷入財務(wù)困境的還有明星公司 Argo AI。
這是一家由福特和大眾集團(tuán)投資的自動駕駛技術(shù)企業(yè),由谷歌和 Uber 背景的兩位技術(shù)大牛在 2016 年成立,在僅有 12 名員工的時候就獲得福特 10 億美元投資,而后又在 2020 年,獲得大眾 26 億美元投資。
7 月 7 日,Argo AI 宣布裁減約 150 名員工。盡管該公司發(fā)言人旋即表示,此次裁員不會減緩自動駕駛系統(tǒng)開發(fā)商業(yè)服務(wù)的計劃,但還是讓外界感覺到了自動駕駛行業(yè)的一絲寒意。
如今,這股寒意已經(jīng)傳導(dǎo)到下半年。日前有消息稱,去年底以 SPAC 方式借殼上市的自動駕駛公司 Aurora,將通過裁員、降低福利等方式削減成本,以度過當(dāng)前入不敷出的困境。

(, 下載次數(shù): 13)
Aurora 首席執(zhí)行官克里斯·厄姆森(Chris Urmson)表示,正在考慮出售優(yōu)質(zhì)資產(chǎn)如旗下激光雷達(dá)業(yè)務(wù),或?qū)⒐菊w打包出售給蘋果、微軟或其他潛在的第一梯隊汽車公司。
有媒體報道,自上市至今,Aurora 已經(jīng)燒掉了大約 2.3 億美元的現(xiàn)金,其股價也已經(jīng)從最高的每股 17.77 美元跌落至最近的 1.43 美元,降幅超 90%
不過和真正的「燒錢大戶」Cruise、Waymo 相比,Aurora 顯得「稍遜風(fēng)騷」。

(, 下載次數(shù): 13)
通用汽車最新財報顯示,其自動駕駛子公司 Cruise 在第二季度營收 2500 萬美元,卻虧損了高達(dá) 5.4 億美元,相當(dāng)于每天 500 萬美元。

(, 下載次數(shù): 13)
如果算上 2022 年整個上半年,累計虧損達(dá) 9 億美元,較去年同期多虧損 3 億美元。
Waymo 也「不遑多讓」,Google 母公司 Alphabet 發(fā)布的 2022 財年第二季度財報顯示,OtherBets(包括自動駕駛汽車部門 Waymo 和生命科學(xué)部門 Verily 等)本季度虧損 16.68 億美元。
雖然沒有直接的數(shù)據(jù),但根據(jù)此前 Waymo 前員工及其他行業(yè)內(nèi)人士估算,Waymo 每年要在各方面花掉 10 億美元以上。
在過去,自動駕駛公司「燒錢」并不是什么新鮮事,按照以往業(yè)內(nèi)人的說法,這是贏在未來之前必要的投資,不同玩家或依靠母公司,或引入外部融資等方式進(jìn)行輸血,然而現(xiàn)在,事情開始起變化。
02
技術(shù)、商業(yè)接連受阻,
資本市場「累覺不愛」
據(jù)賽博汽車報道,在自動駕駛干線物流賽道,有企業(yè)今年見了 80 多家投資機(jī)構(gòu)后,才在融資方面有了點(diǎn)眉目,而不少企業(yè)「已經(jīng)見了一百多家了,還沒有著落」。
按照陳默的說法,美聯(lián)儲多次加息,導(dǎo)致資本市場銀根收緊,是重要原因之一。
世界首富馬斯克也在推特上直言「美聯(lián)儲大幅加息有通縮的風(fēng)險」,并接連出售約 800 萬股特斯拉股票,累計套現(xiàn) 70 億美元。
今年以來,美股大多數(shù)科技公司都受到加息周期影響,市值接連回調(diào),自動駕駛公司下跌表現(xiàn)尤甚,這讓原本看好該領(lǐng)域的投資方也變得遲疑,為了保證自己資金鏈的安全,他們選擇少出手甚至不出手。

(, 下載次數(shù): 14)
以 Mobileye 為例,該公司本來準(zhǔn)備在今年上市,一度被市場給出 500 億美元的估值,有望拿下今年美股最大的 IPO。
2022 年 3 月份,英特爾公司宣布已經(jīng)向美國證劵交易委員會秘密提交 Form S-1 注冊聲明草案,擬首次公開發(fā)行 Mobileye 新股。按照規(guī)劃,上市籌措的資金將用于加碼 Mobileye 新業(yè)務(wù)。
然而,僅僅過了半年,Mobileye 估值大砍 40%,英特爾預(yù)計,該公司最新估值最高為 300 億美元,遠(yuǎn)低于最初期望水平。為此,Mobileye 上市的計劃便不了了之。
投資網(wǎng)站 PitchBook 的數(shù)據(jù)顯示,2022 年自動駕駛投資已大幅下滑,第二季度對自動駕駛創(chuàng)業(yè)公司的投資下降到 9.58 億美元,在風(fēng)險投資中的占比不到 10%
而自動駕駛公司今年在技術(shù)和商業(yè)化上不及預(yù)期的情況,更加重了資本市場的觀望情緒。
以圖森未來為例,4 月份,其在美國部署測試的自動駕駛卡車突然左轉(zhuǎn)橫切,撞上一個水泥路障。這起交通事故經(jīng)《華爾街日報》報道后,很快引來當(dāng)?shù)乇O(jiān)管部門對于自動駕駛安全風(fēng)險的關(guān)注。
為此,圖森未來停止了整個車隊的測試,并進(jìn)行獨(dú)立調(diào)查,圖森未來聯(lián)合創(chuàng)始人兼 CEO 侯曉迪還表示,在確保車隊可以安全運(yùn)營之前,圖森未來不會進(jìn)行商業(yè)化。
Cruise 也在今年經(jīng)歷了一個「多事之秋」。
5 月份,該公司遭內(nèi)部員工向加州監(jiān)管機(jī)構(gòu)匿名舉報,Cruise 存在故意隱瞞涉及車輛和業(yè)務(wù)具有潛在破壞性的問題,如安全報告系統(tǒng)仍處于混亂狀態(tài),這一消息讓外界嘩然。
6 月,Cruise 再次卷入風(fēng)波,先后發(fā)生兩起交通事故。起先是其 Robotaxi 在左轉(zhuǎn)轉(zhuǎn)彎處與一輛迎面而來的豐田普銳斯發(fā)生碰撞,導(dǎo)致兩人受輕傷。

(, 下載次數(shù): 13)
為此,Cruise 召回并更新了 80 輛 Robotaxi 的軟件。
而后在同一個月內(nèi),十幾輛 Cruise 自動駕駛車輛無故停在十字路口,導(dǎo)致交通癱瘓了一個多小時,直到人類駕駛員將其開走之后,事情才得到解決。
事后,Cruise 回應(yīng)稱,是「技術(shù)問題」導(dǎo)致了上述情況發(fā)生。
讓公眾對自動駕駛技術(shù)越發(fā)不信任的還包括特斯拉。

(, 下載次數(shù): 14)
7 月 6 日,一輛 2015 款的特斯拉 Model S 從佛羅里達(dá)州蓋恩斯維爾以南的 75 號州際公路上駛?cè)敫咚俟沸菹^(qū)停車場,徑直撞上了一輛停在那里的牽引車,盡管還未證實(shí)在當(dāng)時自動駕駛功能是否開啟,但巧合的是,這次撞上的又是一輛「白車」。
更早之前,根據(jù)美國國家公路交通安全管理局(NHTSA)的數(shù)據(jù),截至 2022 年 5 月的 10 個月中,有 200 多起車禍都與特斯拉的 Autopilot 軟件有關(guān)。
特斯拉為此被加州機(jī)動車輛管理局(DMV)和美國國家公路交通安全管理局(NHTSA)認(rèn)定其技術(shù)存在虛假宣傳。加州參議院也已通過法案,禁止在智能駕駛的廣告里包含「自動駕駛」等詞匯。
自動駕駛公司在技術(shù)上還沒達(dá)到成熟,已經(jīng)開始讓之前的投資人變得焦急,而直到現(xiàn)在,商業(yè)化上也一直沒有大的起色,更是讓這些人「封住了口袋」。
Aurora 最近宣布,其最快商用的自動駕駛卡車上路的時間,仍舊需要推遲一年,至 2024 年。
該公司創(chuàng)始人兼 CEO 克里斯·厄姆森解釋稱,背后原因在于 OEM 進(jìn)展緩慢。由于商業(yè)化不及預(yù)期,他還表示,「預(yù)計未來六個月內(nèi),不會出現(xiàn)足夠規(guī)模的傳統(tǒng)融資機(jī)會來為公司續(xù)命?!?br /> 圖森未來面臨相同的窘境,此前,其與美國第三大卡車制造商 Navistar 達(dá)成合作,實(shí)現(xiàn) L4 自動駕駛卡車的量產(chǎn)。
然而隨著時間的推移,Navistar 一直在推遲圖森未來量產(chǎn) L4 自動駕駛卡車的進(jìn)程,從預(yù)定的 2024 年,到 2025 年,2026 年……
陳默曾在一次媒體訪談中直接吐槽 Navistar 的自動駕駛量產(chǎn)進(jìn)度太慢,尤其在歐美市場?!肝覀冊窘o投資人的承諾是,圖森未來在 2024 年 Q3 實(shí)現(xiàn)量產(chǎn)……」
Waymo 和 Cruise 倒是在商業(yè)化上傳來了一些好消息。
3 月 1 日,美國加州公共事業(yè)委員會 (CPUC) 向 Alphabet 和通用汽車發(fā)放了自動駕駛客運(yùn)服務(wù)的許可證,允許兩家公司旗下的自動駕駛公司在舊金山及周邊提供收費(fèi)客運(yùn)服務(wù)。
此前,Waymo 和 Cruise 在加州只被允許在測試的基礎(chǔ)上提供有限載人客運(yùn),不準(zhǔn)收取費(fèi)用。
不過這只能算是商業(yè)化初期,畢竟 Robotaxi 當(dāng)前鋪開的城市并不多,以 Waymo 為例,目前僅在鳳凰城的東谷、鳳凰城市中心以及舊金山三地向公眾提供出行服務(wù)。
此外,Waymo 目前的商業(yè)模式還略顯雞肋。根據(jù) CNBC 記者在 2022 年 1 月的體驗,Waymo 在鳳凰城的 Robotaxi 跑 5 英里需用時 14 分鐘,每分鐘收費(fèi) 1 美元。
而跑同樣里程的 Uber 不僅快得多,每分鐘收費(fèi)更僅有 0.4 美元。
「舊金山 Robotaxi 的服務(wù)價格將定在合理且有競爭力的區(qū)間,與此同時,有限用戶免費(fèi)測試/收費(fèi)商業(yè)運(yùn)作的模式將在其他地方鋪開?!筗aymo 發(fā)言人在一場會議上表達(dá)了自己的樂觀。
相較而言,更多的人對于自動駕駛卻沒有這么樂觀,他們眼下更關(guān)心的是,漫漫「燒錢」之路還要延續(xù)多久?
03
燒錢游戲進(jìn)入倒計時:
沒有金山倚靠,或需考慮賣身
截至 2022 年 6 月 30 日,圖森未來資產(chǎn)負(fù)債表上僅有 11.6 億美元的現(xiàn)金,而按照其給出的 2022 年調(diào)整后的 EBITDA 虧損 3.6-3.8 億美元來看,在不融資的情況,公司現(xiàn)金僅夠支撐 3 年左右。
而現(xiàn)在,圖森仍沒有開啟自主造血的進(jìn)程,資料顯示,其卡車預(yù)訂總數(shù)達(dá)到 7485 輛,但至今仍無一輛進(jìn)入交付量產(chǎn)階段。
在招股書中,圖森曾這樣計算,一輛卡車一年可實(shí)現(xiàn) 6 萬美元營收,當(dāng)運(yùn)營數(shù)量過 5000 輛時,公司將達(dá)到收支平衡,之后才能逐漸實(shí)現(xiàn)盈利。
Aurora 則直接給出了時間表,預(yù)計 2027 年之前都無法實(shí)現(xiàn)盈虧平衡。而 Cruise 首席執(zhí)行官 Kyle Vogt 在今年 9 月 12 日一次會議上表示,公司目標(biāo)是到 2025 年時獲得 10 億美元的營收,相當(dāng)于目前來自通用的年投資水平的一半。
以上這些預(yù)示著自動駕駛公司還得至少燒 3-5 年的錢,并且最終還不一定能跑出來,有投資方等不及了。
2022 年 3 月,私募股權(quán)巨頭軟銀集團(tuán)旗下愿景基金向通用汽車出售其持有的 Crusie 股份,價值 21 億美元
Vogt 坦言,自動駕駛行業(yè)已經(jīng)從「極端樂觀」轉(zhuǎn)向「極度悲觀」。這意味著,隨著資本退潮,自動駕駛公司已經(jīng)到了該謀求出路的時刻。
強(qiáng)如 Waymo、Crusie 這類背靠「金山」的企業(yè),似乎還不用特別擔(dān)心。Cruise 目前還擁有 37 億美元的資金,并獲得了通用汽車金融部門約 50 億美元的信貸額度。
在一季度的財報發(fā)布會上,通用計劃 2022 年向 Cruise 支出約 20 億美元,這比以往任何時候都要高。
而在接下來,通用還承諾將持續(xù)為 Cruise 提供資金,確保后者在市場上占據(jù)領(lǐng)導(dǎo)地位。
據(jù)了解,在接收軟銀集團(tuán)轉(zhuǎn)讓的股份后,通用 3 月份就向 Cruise 追加了 13.5 億美元投資。
Waymo 也有母公司 Alphabet 的供養(yǎng)。
在 2020 年之前,谷歌/Alphabet 已經(jīng)為 Waymo 持續(xù)輸血 11 年,不過由于投入過于巨大,最終在當(dāng)年年初首次開始引進(jìn)外部融資:3 月份籌集了 22.5 億美元,5 月份籌集了 7.5 億美元,最終在 73 天內(nèi)累計完成 30 億美元的融資。
得益于 Alphabet 強(qiáng)大的品牌效應(yīng),Waymo 在 2021 年 6 月,又宣布完成一輪 25 億美元的投資。
與此同時,知情人士透露,Waymo 還討論了最終公開上市的計劃,以減輕其母公司的資金壓力。
不過按當(dāng)前資本市場的表現(xiàn),Alphabet 短期內(nèi)大概率不會推動 Waymo 的 IPO,取而代之的是,將繼續(xù)用公司的利潤去補(bǔ)貼支撐 Waymo 的巨額虧損。
最危險的是沒有「靠山」的自動駕駛公司。
正如前文所說,Aurora 已經(jīng)嘗試性邁出第一步:考慮賣身主機(jī)廠或科技巨頭。
該公司首席執(zhí)行官克里斯·厄姆森(Chris Urmson)表示,可以將公司私有化,前提是找到一個能夠提供 15 億美元融資的合作伙伴?!歌b于目前的股價,我們應(yīng)該成為任何希望擁有自動駕駛技術(shù)公司的有吸引力的目標(biāo)?!?br /> 戲劇性的是,Aurora 原本也是通過收購自動駕駛公司做大業(yè)務(wù)的,而不料如今卻走向了尋求被收購的道路。

(, 下載次數(shù): 13)
2020 年 12 月,還是初創(chuàng)公司的 Aurora 以 40 億美元的價格,近乎「蛇吞象」式地收購 Uber 旗下自動駕駛部門 ATG,彼時正值 Uber 面臨巨大運(yùn)營成本壓力,其 ATG 部門在 2019 年造成了約 5 億美元的虧損。
在出售自動駕駛業(yè)務(wù)后,Uber 凈虧損確實(shí)得到一定改善。而如今歷史重演,Aurora 面臨整體出售的暗淡時刻。
盡管如此,出售仍是比破產(chǎn)倒閉更體面的結(jié)局,如果能賣給主機(jī)廠,甚至可以稱得上是個不錯的歸宿。
隨著行業(yè)智能化趨勢加深,自動駕駛被視作汽車的「靈魂」。
通用、福特、大眾等傳統(tǒng)主機(jī)廠都在這方面加碼投入,而對于那些還沒開始布局的 OEM,要參與這股浪潮,比較可行的選項便是收購一家自動駕駛公司,而這正給了像 Aurora 這樣苦苦掙扎的企業(yè)一絲希望。

(, 下載次數(shù): 11)
「網(wǎng)約車第一股」Lyft 旗下自動駕駛部門 Level 5 就是這樣完成「和平交接」的。
成立于 2017 年夏天,Level 5 同樣輝煌過,在 2018 年已經(jīng)獲得加州公共道路測試許可,并取得了不錯的研發(fā)、測試數(shù)據(jù)積累。
然而隨著 2020 年疫情突降,母公司 Lyft 遭受巨額業(yè)務(wù)虧損,無法支撐 Level 5 燒錢繼續(xù)自動駕駛的夢想。
2021 年 4 月,Lyft 將 Level 5 以 5.5 億美金的價格出售給豐田旗下的子公司 Woven Planet Holdings,至此每年至少節(jié)省 1 億美元日常開支。
如今,陷入僵局的自動駕駛企業(yè)也在謀求賣身主機(jī)廠的機(jī)會,后者雄厚的資金可以幫助它們渡過 2022 這個難熬的「寒冬」。
日前,就有消息稱,吉利控股集團(tuán)向圖森未來美國總部發(fā)出收購要約,擬收購圖森未來控股亞太地區(qū)業(yè)務(wù)的全部股份,具體收購細(xì)節(jié)暫未公布。
04
自動駕駛寒風(fēng)開始刮到東半球:
活下去,才有未來
把視線拉回國內(nèi),中國的自動駕駛企業(yè)看起來還沒遭受到大洋彼岸同行那樣的危機(jī),但若仔細(xì)看,卻也經(jīng)歷了一些困難。
2021 年,境外上市監(jiān)管環(huán)境收緊,小馬智行、智加科技等 IPO 計劃折戟,融資節(jié)奏隨之打亂,導(dǎo)致業(yè)務(wù)發(fā)生重大調(diào)整,人員也隨之流動。
典型如小馬智行卡車部門去年遭遇動蕩,該公司原自動駕駛技術(shù)總負(fù)責(zé)人潘震皓、國內(nèi)自動駕駛規(guī)劃與控制組負(fù)責(zé)人孫浩文以及負(fù)責(zé)戰(zhàn)略合作和融資的副總裁趙睿璇紛紛出走,各自成立三家卡車自動駕駛公司。

(, 下載次數(shù): 10)
時間來到 2022 年,小馬智行卡車業(yè)務(wù)重整旗鼓:7 月 28 日,小馬智行與三一重卡成立合資公司,計劃在 2022 年內(nèi)開始小規(guī)模量產(chǎn)交付自動駕駛卡車。
而這背后,是小馬智行再次獲得輸血:3 月 7 日,小馬智行宣布完成 D 輪融資的首次交割。
小馬智行 CFO 勞倫斯·斯泰恩表示:「公司財務(wù)狀況十分穩(wěn)健,為小馬智行未來幾年的發(fā)展提供堅實(shí)基礎(chǔ),直至我們開啟大規(guī)模商業(yè)化的進(jìn)程?!?br /> 繼終止以 SPAC 方式在紐交所上市的協(xié)議后,智加科技同樣傳出有變。
今年 8 月份,虎嗅一篇題為《圖森們的「并購式」跑路與謊言》文章寫道,有消息人士爆料,干線物流平臺滿幫集團(tuán)或?qū)⑹召徸詣玉{駛卡車企業(yè)智加科技。
不過,這一消息尚未得到證實(shí)。

(, 下載次數(shù): 13)
從融資上來看,智加科技在 2021 年創(chuàng)下 4.2 億美元的融資記錄,為干線物流領(lǐng)域最大。
而據(jù)最近消息,2022 年 8 月 16 日,智加科技聯(lián)合摯途科技完成面向榮慶物流的 100 臺自動駕駛重卡訂單的首批交付。
從小馬智行和智加科技來看,國內(nèi)的玩家似乎平穩(wěn)度過了資金難關(guān)。然而,沒過多久,8 月 22 日,華為創(chuàng)始人任正非在內(nèi)部喊出「寒氣論」,讓自動駕駛行業(yè)再度頓覺涼意。
按照任正非的說法,未來十年是一個非常痛苦的歷史時期,全球經(jīng)濟(jì)會持續(xù)衰退。為了應(yīng)對挑戰(zhàn),華為將收縮或關(guān)閉未來幾年內(nèi)不能產(chǎn)生價值和利潤的業(yè)務(wù)。
巧的是,智能駕駛便是這樣的業(yè)務(wù)。
在 7 月 7 日的一場行業(yè)論壇上,華為常務(wù)董事、終端 BG CEO、智能汽車解決方案 BU CEO 余承東透露,汽車業(yè)務(wù)是華為目前唯一虧損的業(yè)務(wù)。

(, 下載次數(shù): 11)
他表示,華為在該業(yè)務(wù)上一年投入十幾億美元,直接投入 7000 人,間接投入 1 萬人。而其中,又以智能駕駛占大頭?!?strong>百分之七八十都投入在智能駕駛輔助領(lǐng)域?!?br /> 而目前,根據(jù)任正非的要求,對于智能汽車解決方案,華為將減少科研預(yù)算,加強(qiáng)商業(yè)閉環(huán)研發(fā)。
華為這樣年營收 6、7000 億的公司尚且在收緊對自動駕駛業(yè)務(wù)的投入,對于那些還沒有實(shí)現(xiàn)商業(yè)化、完成自主造血的企業(yè),未來資金壓力可見一斑。
回到當(dāng)下,美國自動駕駛企業(yè)的遭遇已經(jīng)為國內(nèi)同行敲響了警鐘,如果沒有「大樹」背靠,按照該領(lǐng)域公司一年一次融資的燒錢節(jié)奏,現(xiàn)在還沒有融到錢的企業(yè),可以說是十分危險了。
自動駕駛不僅是技術(shù)的比拼,更是一場時間的游戲,能抵達(dá)終點(diǎn)的不一定是跑得最快的那個,現(xiàn)在活下去才有資格談未來。
CUDA 矩陣乘法終極優(yōu)化

單精度矩陣乘法(SGEMM)幾乎是每一位學(xué)習(xí) CUDA 的同學(xué)繞不開的案例,這個經(jīng)典的計算密集型案例可以很好地展示 GPU 編程中常用的優(yōu)化技巧。
CUDA 矩陣乘法優(yōu)化手段詳解
Naive 實(shí)現(xiàn)的分析:到底差在哪里?

筆者面試過不少具有 CUDA 編程經(jīng)驗的校招同學(xué),當(dāng)提問使用 CUDA 編寫一個 SGEMM Kernel 的時候,通常會獲得這么一個答案:
__global__ void matrixMul(const float *A, const float *B, float *C,
                          int M, int N, int K) {
    int tx = blockIdx.x * blockDim.x + threadIdx.x;
    int ty = blockIdx.y * blockDim.y + threadIdx.y;
    if(ty < M && tx < N) {
        float c = 0;
        for(int i = 0; i < K; ++i){
            c += A[ty * K + i] * B[i * N + tx];
        }
        C[ty * N + tx] = c;
    }
}
這樣一個 Naive 的 Kernel 當(dāng)然不是筆者所期待的,因為這個 Kernel 的性能基本可以斷定連 cublas 的 1/10 都不到,顯然不符合我們追求高性能的需求。那么這個 Naive 的實(shí)現(xiàn)究竟差在哪呢?分析代碼我們可以看到,計算一次 FMA(乘累加)之前需要讀一次 A 和讀一次 B,眾所周知,讀取 Global Memory 的代價很大,通常都需要幾百個 cycle(時鐘周期),而計算一次 FMA 通常只需要幾個 cycle,大量的時間被花費(fèi)在了訪存上。也許有思維活絡(luò)的同學(xué)立馬想到,可以將 A 和 B 矩陣先搬運(yùn)到 Shared Memory(SM 中低延遲的 on-chip memory,block 內(nèi)線程共享,附 NVIDIA GPU 內(nèi)存結(jié)構(gòu)圖)中降低訪存的開銷,這的確是一個很好的思路,但是這只能將訪存代價從幾百 cycle 降低到幾十 cycle,并不改變問題的本質(zhì)。問題的關(guān)鍵在于主體循環(huán)由兩條 Load 指令與一條 FMA 指令構(gòu)成,計算指令只占總體的 1/3,計算訪存比過低,最終導(dǎo)致了訪存延遲不能被隱藏,從而性能不理想。

(, 下載次數(shù): 13)
讓我們打開思路,若一個 thread 并不只計算一個結(jié)果,而是計算 4x4 個結(jié)果,并且使用 Shared Memory 優(yōu)化,Hot Loop 會是什么樣呢,偽代碼如下所示:
        float c[4][4] = {{0}};
    float a_reg[4];
    float b_reg[4];
    for(int i = 0; i < K; i += TILE_K){
        __syncthreads();
        // transfer tile from global mem to shared mem
        load_gmem_tile_to_smem(A, i, smemA);
        load_gmem_tile_to_smem(B, i, smemB);
        __syncthreads();
    #pragma unroll
        for(int j = 0; j < TILE_K; ++j) {
            // load tile from shared mem to register
            load_smem_tile_to_reg(smemA, j, a_reg);
            load_smem_tile_to_reg(smemB, j, b_reg);
            // compute matrix multiply accumulate 4x4
            mma4x4(a_reg, b_reg, c);
        }
    }
分析可以得出從 smemA 讀取到寄存器 a_reg 中,需要進(jìn)行 4 次訪存操作,B 同理,那么主體的計算訪存指令比例變成了 16/8,相對于之前的情況,計算指令的占比大大提高了。足夠大的計算訪存比能提升計算單元的利用率,并能起到隱藏訪存延遲的作用。我們可以進(jìn)一步提升計算訪存比,從而使得 kernel 的性能接近理論峰值。
矩陣分塊與資源分配

顯然我們不能只使用一個 block 計算一個超大矩陣,這樣會造成大量 SM(Streaming Multiprocessor)的閑置浪費(fèi),這就需要對矩陣進(jìn)行分塊計算,如下圖所示:

(, 下載次數(shù): 15)
不同的分塊大小在不同 shape 的矩陣乘法應(yīng)用上性能各有優(yōu)劣,本文選取 128x128 的分塊舉例。
從上一小節(jié)我們可以看到,提升計算訪存比有很大的好處,那么計算訪存比可以無限提升嗎,答案是否定的。因為要提升計算訪存比,單個 thread 就需要計算一個更大的塊,這就需要更多的寄存器,但寄存器的個數(shù)是有限的。以 Turing 架構(gòu)的 GPU 為例,單個 SM 的寄存器總量為 65536,因為指令編碼的限制,單個 thread 能使用的最大寄存器個數(shù)為 255,并且寄存器個數(shù)并不是用得越多越好。這里需要引入一個 Occupancy(占用率)的概念,Occupancy 是指每個 SM 中活動線程束(Warp)數(shù)量與最大并發(fā)線程束數(shù)量的比值,高的 Occupancy 不一定意味著高性能,但可以通過切換執(zhí)行 Warp 來起到一定隱藏延遲的作用。而每個 SM 中的 Active Warp 數(shù)量,取決于 block 使用的資源數(shù)量,具體為每個線程使用的寄存器個數(shù)與 Shared Memory 用量。Occupany可通過 CUDA Toolkit 中提供的 CUDA_Occupancy_Calculator.xls 工具獲得。
考慮一個 block 計算 128x128 的分塊,若每個線程計算 128 個結(jié)果,需要的 block size 為 128,單個線程需要 128 個寄存器儲存計算結(jié)果,加上所需的 Gmem to Smem,Smem to Reg 等一些所需的寄存器,大概共需要至少 180 多個,計算 Occupany 可知此時的 Active Warp 數(shù)只有 8,Occupany 為 25%;若設(shè)置 block size 為 256,則每個線程僅需計算 64 個結(jié)果,調(diào)整寄存器和 Shared Memory 的使用量并觀察 Occupany,可知若每個線程只使用 128 個寄存器,block 內(nèi)的 Shared Memory 使用量限制在 32K,Active Warp 數(shù)可以達(dá)到 16,是一個更優(yōu)的選擇:

(, 下載次數(shù): 13)
并且此時的配置計算訪存比可以達(dá)到 64/4(使用向量讀?。?,已經(jīng)足夠隱藏訪存延遲。
極致的訪存優(yōu)化

通常情況下,在選取了合適的 block 資源配置,利用 Shared Memory 降低訪存延遲,做好循環(huán)展開之后,SGEMM Kernel 的性能已經(jīng)能達(dá)到一個不錯的水平(80% cublas),但這并不是我們旅程的終點(diǎn)。首先,我們可以使用向量讀取指令LDS.128優(yōu)化 Shared Memory 訪問(對應(yīng) float4 數(shù)據(jù)類型),這能大幅減少訪存指令的數(shù)量,進(jìn)一步提升計算訪存比,由此我們需要將 A 矩陣存入 smemA 之前做一次轉(zhuǎn)置:

(, 下載次數(shù): 13)
同時,我們的 kernel 為 256 個線程計算 128x128 的分塊,為了能夠合并訪問 Shared Memory,我們將 256 個線程劃為二維,令:
    int tx = threadIdx.x % 16;   
    int ty = threadIdx.x / 16;
并按照如下方式向量讀取 Shared Memory 中的數(shù)據(jù):

(, 下載次數(shù): 14)
最終單個線程計算 2x2 個 4x4 的結(jié)果,結(jié)果布局如圖所示:

(, 下載次數(shù): 12)
并且通過 micro benchmark 可以探測出,Turing(Tesla T4) 的 Global Memory 的訪存延遲約 300 cycle,Shared Memory 的訪存延遲在約 30 cycle,需要充分利用 Prefetch 的思想,隱藏 Global Memory 讀入中間寄存器、將來自 Global Memory 的數(shù)據(jù)塊寫入 Shared Memory、從 Shared Memory 中讀出數(shù)據(jù)塊的訪存延遲,以免計算單元因為 stall 而空閑太久,最終的偽代碼如下所示:
    #define TILE_K 16
    __shared__ float4 smemA[2][TILE_K * 128 / 4];
    __shared__ float4 smemB[2][TILE_K * 128 / 4];
    float4 c[8][2] = {{make_float4(0.f, 0.f, 0.f, 0.f)}};
    float4 ldg_a_reg[2];
    float4 ldg_b_reg[2];
    float4 a_reg[2][2];
    float4 b_reg[2][2];

    // transfer first tile from global mem to shared mem
    load_gmem_tile_to_reg(A, 0, ldg_a_reg);
    load_gmem_tile_to_reg(B, 0, ldg_b_reg);

    store_reg_to_smem_tile_transpose(ldg_a_reg, 0, smemA[0]);
    store_reg_to_smem_tile(ldg_b_reg, 0, smemB[0]);
    __syncthreads();

    // load first tile from shared mem to register
    load_smem_tile_to_reg(smemA[0], 0, a_reg[0]);
    load_smem_tile_to_reg(smemB[0], 0, b_reg[0]);

    int write_stage_idx = 1; //ping pong switch
    do {
        i += TILE_K;
        // load next tile from global mem
        load_gmem_tile_to_reg(A, i, ldg_a_reg);
        load_gmem_tile_to_reg(B, i, ldg_b_reg);

        int load_stage_idx = write_stage_idx ^ 1;

    #pragma unroll
        for(int j = 0; j < TILE_K - 1; ++j) {
            // load next tile from shared mem to register
            load_smem_tile_to_reg(smemA[load_stage_idx], j + 1, a_reg[(j + 1) % 2]);
            load_smem_tile_to_reg(smemB[load_stage_idx], j + 1, b_reg[(j + 1) % 2]);
            // compute matrix multiply accumulate 8x8
            mma8x8(a_reg[j % 2], b_reg[j % 2], c);
        }

        if(i < K) {
            // store next tile to shared mem
            store_reg_to_smem_tile_transpose(ldg_a_reg, 0, smemA[write_stage_idx]);
            store_reg_to_smem_tile(ldg_b_reg, 0, smemB[write_stage_idx]);
            // use double buffer, only need one sync
            __syncthreads();
            // switch
            write_stage_idx ^= 1;
        }

        // load first tile from shared mem to register of next iter
        load_smem_tile_to_reg(smemA[load_stage_idx ^ 1], 0, a_reg[0]);
        load_smem_tile_to_reg(smemB[load_stage_idx ^ 1], 0, b_reg[0]);
        // compute last tile mma 8x8
        mma8x8(a_reg[1], b_reg[1], c);
    } while (i < K);

    store_c(c, C);
    注:此處偷懶假設(shè)了 M、N、K 都是 4 的倍數(shù),若非 4 的倍數(shù)則 Global Memory 不能使用 float4 進(jìn)行讀取,結(jié)果也不能用 float4 進(jìn)行寫回,而且為了合并寫回,需要通過 Shared Memory 交換 warp 內(nèi)的結(jié)果,保證每個 warp 執(zhí)行一條 Store 指令能夠?qū)懟匾黄B續(xù)的內(nèi)存空間。
至此我們獲得了一個充分優(yōu)化的 SGEMM Kernel。另外 Ampere GPU 新增了LDGSTS指令,數(shù)據(jù)塊從 Global Memory 到 Shared Memory 的過程不需要經(jīng)過中間寄存器,可以進(jìn)一步的優(yōu)化 SGEMM 的性能。
性能對比

為了避免 cublas 選取到 split K 的 Kernel,我們將 K 固定為 1024,取 M, N = 2048, 4096, 8192 和 16384 作為測試用例,對比了上述 SGEMM Kernel 與 cublas 的性能(測試 GPU 為 Tesla T4,鎖定核心頻率為 1100):

(, 下載次數(shù): 14)
可以看到所實(shí)現(xiàn)的 SGEMM Kernel 達(dá)到了 cublas 平均 97.5% 的性能。
超越 cublas:使用 SASS 調(diào)優(yōu) Kernel
到這里,可能有同學(xué)依然有一個疑問,我們似乎把所有能想到的優(yōu)化手段都用上了,為什么寫出來的 CUDA C Kernel 依然離 cublas 有一定的差距,答案是 cublas 所使用的 kernel 中有一大部分并不是通過 nvcc 編譯的 CUDA Kernel,而是使用 NVIDIA GPU 的匯編語言(Shader Assembly,簡稱 SASS)編寫的深度調(diào)優(yōu)版本。
盡管 nvcc 編譯器在不斷的進(jìn)步,特別是 CUDA 11 中的 nvcc,所編譯的 Kernel 與手工匯編優(yōu)化版本之間的差距已大幅縮小,但依舊無法完全避免寄存器 Bank conflict 的影響以及充分利用寄存器的 Reuse Cache(這兩個概念下面會進(jìn)行詳細(xì)的介紹),使得差距依舊存在。即使 PTX 這樣的偽匯編語言,也無法精確控制寄存器的分配,和 CUDA C 面臨著一樣的困境。
所以為了充分挖掘 GPU 的性能極限,需要對 GPU 指令和寄存器進(jìn)行精確控制,就必須交由 GPU 原生匯編語言 SASS 完成。這方面已經(jīng)有了很多研究,如出自 Citadel 的深入研究 NV GPU 架構(gòu)的 Dissecting the NVidia XXX GPU architecture via microbenchmarking 系列論文,這一系列文章對底層架構(gòu)做了系統(tǒng)的測試、分析和總結(jié),雖然其中某些結(jié)論可能并不準(zhǔn)確,但總體來講有很高的參考價值。同時催生了不少開源匯編器如 KeplerAs、maxas(最成熟,影響深遠(yuǎn))、turingas 和 CuAssembler 等一系列開源 SASS 匯編器,使得使用 SASS 編寫高性能 Kernel 變成了可能。
寄存器 Bank conflict

我們知道 Shared Memory 有 Bank conflict,而寄存器的 Bank conflict 也是類似的概念。NVIDIA GPU 每個 SM 有獨(dú)立的 Register File,而 Register File 被分為若干個 Bank,以 Maxwell 為例,若一條指令所需的源寄存器有 2 個以上來自于同一 Bank,則會產(chǎn)生 conflict,指令會相當(dāng)于重發(fā)射,浪費(fèi)一個 cycle。Maxwell/Pascal 的 Register File 的 Bank 數(shù)為 4,寄存器的id%4即為該寄存器的所屬 bank(如 R0 屬于 Bank 0,R5 屬于 Bank 1),FFMA R1, R0, R4, R1這樣的指令就會產(chǎn)生寄存器 Bank conflict。而 Turing 架構(gòu)做了改進(jìn),Register File 被分為 2 個 Bank,每個 Bank 有 2 個 Port,若非三個源寄存器 id 同奇偶則不會產(chǎn)生沖突,大大緩解了寄存器 Bank conflict。
maxas 中的 Maxwell SGEMM SASS Kernel 為了緩解寄存器 Bank conflict,就對參與 FFMA 計算的寄存器做了精巧的分配(參考 maxas 的 SGEMM 文檔),如下圖所示:

(, 下載次數(shù): 14)
經(jīng)過對 C 的巧妙排布,寄存器 Bank conflict 大大減少,但依然無法完全避免(如上圖中黑框標(biāo)識的部分,A/B 所使用的寄存器會產(chǎn)生 Bank conflict),這部分沖突就需要用到寄存器 Reuse 來消除。
Register Reuse

寄存器 Reuse 是 NVIDIA 為了緩解寄存器 Bank conflict 的問題,在 Maxwell 開始引入的一種機(jī)制,NVIDIA 在讀取指令操作數(shù)的 Collector 單元加入了寄存器的 Reuse Cache。Reuse Cache 是只讀的,指令獲取 Operand 是否通過此 Cache 由該指令的 control code(maxas 的 control code wiki中有詳細(xì)的介紹)所指定,使用 cuobjdump 反匯編一些 Kernel 可以發(fā)現(xiàn)一些寄存器后有 .reuse的 flag,即表示該寄存器從 Reuse Cache 而非 Register File 中取值,從而消除寄存器 Bank conflict:
# Maxwell GPU但是使用 .reuse需要滿足一定條件(寄存器將被改寫前不能設(shè)置 .reuse),胡亂設(shè)置 reuse flag 會有可能獲取的是歷史值,造成計算錯誤,根據(jù)筆者的理解,.reuse 更像是使該寄存器的值在 Reuse Cache 中 hold 住的標(biāo)識。nvcc 編譯 CUDA Kernel 也會使用 Reuse Cache 去規(guī)避一些寄存器 Bank conflict,但是因為寄存器分配及指令排布的原因,Reuse 的利用率并不高,反匯編我們剛才寫的 SGEMM Kernel,對主循環(huán)的所有 FFMA 指令做個統(tǒng)計,可以發(fā)現(xiàn) Reuse Cache 僅達(dá)到 20% 左右,而 maxas 的 SASS Kernel 通過設(shè)計使得 Reuse 的利用率可以達(dá)到 49%。
最終通過 SASS 精細(xì)調(diào)優(yōu)的 SGEMM Kernel 的性能可以全面超越 cublas,感興趣的同學(xué)們可以自行編譯 maxas 中的 SGEMM Kernel 在 Maxwell 或者 Pascal GPU 上進(jìn)行測試。最后,雖然使用 SASS 能充分挖掘 GPU 的性能,但面臨有三大問題:1. 第三方 NV GPU 匯編器依賴于對 GPU 架構(gòu)的逆向研究,可能因為沒有探究到全部的硬件底層細(xì)節(jié)而存在未知的 BUG;2. 匯編 Kernel 難于開發(fā),更難于調(diào)試;3. NV 每一代 GPU 的 ISA(指令集)都不盡相同,需要不斷開發(fā)對應(yīng)的匯編器和匯編 Kernel。正因為這幾大問題的存在,使得使用 SASS 編寫 Kernel 是個費(fèi)時費(fèi)力的工作,除非有追求極致性能的需求,否則不建議輕易嘗試。
GEMM 的延伸:優(yōu)化卷積運(yùn)算

我們都知道優(yōu)化卷積運(yùn)算可以通過 im2col 將卷積映射為矩陣乘法來實(shí)現(xiàn),對于上述 SGEMM Kernel,只需要將 Global Memory 的數(shù)據(jù)搬運(yùn)到 Shared Memory 這一過程稍作修改,由對應(yīng)位置的映射變?yōu)?im2col 映射,SGEMM Kernel 就搖身一變成為了計算 Conv 的 Kernel,這即是 cudnn 卷積運(yùn)算的 Implicit Gemm 算法。而在 im2col 過程中,若直接計算指針的偏移量的話,會引入大量的整數(shù)除法和取余運(yùn)算,這是一筆不小的開銷,所以可以將地址的偏移量在 host 端預(yù)先計算好,作為 param 傳入 kernel 中,則可以在需要時從常量內(nèi)存中讀取,避免整數(shù)除法和取余,實(shí)現(xiàn) Implicit Precomp Gemm。
總結(jié)

本文詳細(xì)介紹了如何編寫一個高效率的 CUDA SGEMM Kernel,并且介紹了使用 SASS 編程這一極限優(yōu)化性能的手段,并稍稍延伸展開了通過 Implicit Gemm 優(yōu)化卷積運(yùn)算的思路,希望可以給予有志于極致挖掘硬件性能的同學(xué)們一定的啟發(fā)
RISC-V將贏得下一輪架構(gòu)之爭?

在全球市場上,芯片指令集呈現(xiàn)雙寡頭格局,基于X86和ARM架構(gòu)的處理器長期占據(jù)絕大多數(shù)市場份額,X86架構(gòu)在PC及服務(wù)器市場一家獨(dú)大,移動市場則由ARM架構(gòu)一統(tǒng)江湖。
在這樣一個格局中,中下游廠商大多只能在這二者之間選擇,但是ARM授權(quán)費(fèi)用昂貴,傳統(tǒng)X86的授權(quán)又過于復(fù)雜,業(yè)界一直期待在CPU架構(gòu)領(lǐng)域能有更多選擇。
隨著AIoT時代的到來,RISC-V架構(gòu)開放、靈活、模塊化,特別適合滿足AIoT市場場景碎片化、差異化的市場需求,產(chǎn)業(yè)界普遍認(rèn)為它有望成為下一代廣泛應(yīng)用的處理器架構(gòu)。Semico Research預(yù)測,到2025年,RISC-V市場規(guī)模將超10億美元。

(, 下載次數(shù): 11)
近日,行業(yè)大牛Jim Keller在一次公開演講中也直言,未來是屬于RISC-V的。

(, 下載次數(shù): 12)
Jim keller認(rèn)為,RISC-V的開放式生態(tài)讓其擁有廣闊的前景和巨大潛力,相比X86和ARM架構(gòu),RISC-V雖然在性能、生態(tài)等問題上存在不足,但憑借開放式標(biāo)準(zhǔn),RISC-V的發(fā)展速度遠(yuǎn)超X86及ARM。
RISC-V采用的開放標(biāo)準(zhǔn)讓各個廠商可以在架構(gòu)基礎(chǔ)上進(jìn)行大幅度的修改和定制,不需要擔(dān)心后續(xù)會因為各種原因而失去授權(quán)或影響到產(chǎn)品的生產(chǎn)使用。同時,RISC-V存在架構(gòu)優(yōu)勢,使其可以同時適應(yīng)極低功耗及高性能處理器的設(shè)計需求,這一點(diǎn)也是X86和ARM無法做到的。
當(dāng)Jim keller看好RISC-V時,這無疑為其平添了幾分可能性。對Jim keller有了解的讀者應(yīng)該知道,Jim keller過去創(chuàng)造過許多成功的處理器方案,幾乎每一次跳槽,Jim keller都能刷新對應(yīng)處理器的行業(yè)上限。
“硅仙人”的傳奇履歷
在其20多年的工作經(jīng)歷中,Jim keller先后在DEC、AMD、博通、蘋果、特斯拉、Intel等公司任職,一次又一次創(chuàng)造了被認(rèn)為是芯片行業(yè)中,至關(guān)重要的領(lǐng)先部件。
上世紀(jì)九十年代,Jim Keller在DEC工作,涉足了Alpha處理器項目的設(shè)計,產(chǎn)品包括21164與22164。Jim Keller的本段經(jīng)歷使其深入了解RISC的設(shè)計理念,并通過Alpha架構(gòu),奠定了架構(gòu)設(shè)計能力。Alpha架構(gòu)的設(shè)計理念深度影響了后續(xù)AMD、Intel等芯片廠商的架構(gòu)設(shè)計路線。
1998年,Jim keller從DEC離職,加盟AMD,主導(dǎo)了K7/K8/K12處理器的研發(fā),其中K8處理器讓AMD第一次擁有了對抗Intel的資本,X86架構(gòu)不再是Intel一家獨(dú)大,同時推動AMD的64位X86架構(gòu)處理器落地,使得AMD在技術(shù)路線上第一次超越Intel。
1999年,Jim Keller加入SiByte,研制MIPS的網(wǎng)絡(luò)處理器。SiByte后被博通收購,Jim Keller擔(dān)任首席架構(gòu)師,直到2004年離職,加入PASemi任工程副總裁,轉(zhuǎn)型研究RISC產(chǎn)品,使MIPS的構(gòu)建速度可與專用ASIC相媲美。
PASemi被蘋果收購后,Jim Keller開始主導(dǎo)蘋果的A系列處理器研發(fā)計劃,為蘋果A芯片領(lǐng)先全球,奠定了架構(gòu)基礎(chǔ)。
完成A系列處理器的設(shè)計后,Jim keller再次跳槽,重返A(chǔ)MD。自從Jim keller離開AMD后,AMD后續(xù)的Bulldozer系列處理器一度被稱為最糟糕的X86處理器,AMD依靠K8處理器搶到的市場份額幾乎完全丟失,甚至一度瀕臨破產(chǎn)。
Jim keller回歸之后,將Bulldozer系列的后續(xù)研發(fā)計劃全部推倒,重新設(shè)計了一個全新的處理器架構(gòu),這就是大家都不陌生的Zen架構(gòu)。Zen架構(gòu)讓AMD一舉翻身,在性能排行榜上壓制Intel數(shù)年,甚至一度在處理器出貨量上超越Intel,基于Zen系列,AMD后續(xù)還拓展了EYPC等系列處理器,開始全方位與Intel競爭。
第二次拯救AMD于水火之中后,Jim Keller于2016年加入特斯拉擔(dān)任Autopilot部門的負(fù)責(zé)人,為其打造自動駕駛AI芯片,并在正式落地量產(chǎn)前的2018年離職。
2018年,Jim Keller來到Intel,擔(dān)任高級副總裁、系統(tǒng)架構(gòu)師,受限于保密協(xié)議,Jim keller負(fù)責(zé)的項目沒有曝光。但從Intel進(jìn)展來看,2019年5月,Intel發(fā)布全新的ice lake架構(gòu)。據(jù)悉,Intel 12代酷睿所使用的大小核設(shè)計就由Jim Keller主導(dǎo)開發(fā),而12代酷睿的誕生被譽(yù)為Intel的翻身一戰(zhàn),再次壓制了AMD成為x86架構(gòu)的新王者。

(, 下載次數(shù): 13)
回顧Jim keller的經(jīng)歷,幾乎每一款經(jīng)典處理器都改寫了行業(yè)上限,從x86到ARM,似乎就沒有他不了解的處理器架構(gòu)。
然而,同樣是兩年后,Jim keller從Intel離職,這次他選擇了創(chuàng)業(yè),擔(dān)任Tenstorrent的聯(lián)合創(chuàng)始人及CTO,主攻RISC-V。
也正因如此,當(dāng)這位曾在 x86 和 ARM 架構(gòu)芯片領(lǐng)域取得過較高成就的硅谷傳奇工程師,選擇調(diào)轉(zhuǎn)航向,親自下場押注RISC-V架構(gòu),不免讓業(yè)界對RISC-V多了幾分信心和慎重。
卡位RISC-V賽道
中國科學(xué)院軟件研究所總工程師武延軍表示,從2010年發(fā)布到現(xiàn)在,RISC-V指令集只走過12年的時間,但它在這期間取得的成就,遠(yuǎn)遠(yuǎn)超過同時期的X86和ARM。
RISC-V開源ISA于2016年首次推出,但最初的內(nèi)核僅適用于微控制器和一些基本的片上系統(tǒng)設(shè)計。然而,經(jīng)過幾年的發(fā)展,眾多芯片開發(fā)商已經(jīng)針對云數(shù)據(jù)中心、AI 工作負(fù)載和高級存儲應(yīng)用等多領(lǐng)域創(chuàng)建了設(shè)計,其生態(tài)獲得了較大的豐富,這足以證明RISC-V的實(shí)力。
前不久,RISC-V基金會CEO Calista Redmond表示,RISC-V基金會已經(jīng)在全球70多個國家吸引了超過3100個會員加入,會員數(shù)量在2021年暴增了134%。RISC-V產(chǎn)業(yè)在過去幾年里取得的初步成果,搭載RISC-V內(nèi)核的芯片出貨量已經(jīng)突破了100億。

(, 下載次數(shù): 14)
ARM用了17年才完成這個目標(biāo),而RISC-V基金會成立至今僅7年。由此可見,RISC-V這個新興架構(gòu)正在吸引著全球眾多參與者躬身其中,紛紛卡位RISC-V賽道。
從國外廠商動態(tài)來看,蘋果積極轉(zhuǎn)向RISC-V陣營,Intel業(yè)務(wù)也延伸至此,包括Jim Keller坐鎮(zhèn)Tenstorrent、Microchip、瑞薩電子、Nordic、ST等國際廠商都在積極布局,開發(fā)基于RISC-V指令集的處理器。
同時,還有一眾RISC-V IP公司深耕于此,包括SiFive、Codasip、imagination、MIPS等,其中值得注意的是,SiFive IP芯片累計出貨量超10億;搭載Codasip的IP芯片出貨量已達(dá)20億顆;作為業(yè)內(nèi)成熟的IP供應(yīng)商,Imagination進(jìn)入RISC-V市場再次突顯了RISC-V架構(gòu)的擴(kuò)展特性,為RISC-V提供了更大的發(fā)展動力。
除了歐美國家之外,RISC-V在印度、巴基斯坦等國家也在被廣泛采用,行業(yè)廠商積極布局。
能夠看到,國外廠商在RISC-V上的布局在逐漸呈現(xiàn),除了芯片設(shè)計、IP廠商之外,包括IAR、verify、Imperas、Embecosm等工具鏈、安全軟件算法、模擬器和編譯器等產(chǎn)業(yè)鏈企業(yè)的支持,都在加速RISC-V架構(gòu)的發(fā)展和成熟。
RISC-V,在國內(nèi)市場掀起風(fēng)暴
中國RISC-V市場發(fā)展迅猛,憑借國內(nèi)龐大的半導(dǎo)體市場,中國企業(yè)可以迅速對RISC-V芯片進(jìn)行迭代更新,并且依據(jù)用戶使用反饋進(jìn)行優(yōu)化,這些都是國外初創(chuàng)企業(yè)難以做到的。全球100億顆RISC-V核心出貨量中,預(yù)計中國占比超過1/3。
中國社區(qū)作為工作小組和研發(fā)伙伴,一直是RISC-V最強(qiáng)有力的貢獻(xiàn)者之一。在RISC-V基金會初期的19家高級會員企業(yè)中,有整整12家來自中國,華為、阿里巴巴、紫光展銳、中興等企業(yè)都是早期高級會員,對RISC-V的發(fā)展有著舉足輕重的作用。
RISC-V對于中國的半導(dǎo)體企業(yè)來說是一個難得的機(jī)會,因為RISC-V起步晚所以大家都還處在一個起跑線上,而且開放式標(biāo)準(zhǔn)也讓國內(nèi)企業(yè)可以更安心的發(fā)展RISC-V,不用擔(dān)心未來某一天突然失去授權(quán)。
在日前舉辦的RISC-V峰會上,倪光南院士在致辭中表示:“目前,主流CPU市場仍被X86、ARM架構(gòu)壟斷,但新興的開源指令集RISC-V將為我國芯片產(chǎn)業(yè)發(fā)展提供新機(jī)遇,如果抓住機(jī)會,就有可能在CPU核心技術(shù)上掌握主動權(quán)?!?br /> 在此機(jī)遇和趨勢下,國內(nèi)涌現(xiàn)出一批RISC-V玩家,包括華為海思、全志科技、兆易創(chuàng)新、樂鑫科技、北京君正、中微半導(dǎo)體、匯頂科技、凌思微電子、先楫半導(dǎo)體、華米科技、沁恒微電子、芯晟科技、愛普特微電子、晶視智能、啟英泰倫、方寸微電子、中科藍(lán)汛、航順芯片、飛思靈微電子、博流智能以及中科院計算所等在內(nèi)的芯片廠商和科研機(jī)構(gòu)都相繼推出了基于RISC-V架構(gòu)的SoC、MCU、DSP芯片等產(chǎn)品。
此外,阿里平頭哥、芯來科技、賽昉科技、睿思芯科等可以提供基于RISC-V架構(gòu)的處理器IP、編譯器、工具鏈等產(chǎn)品。據(jù)悉,阿里平頭哥玄鐵系列的RISC-V芯片已經(jīng)供應(yīng)一百五十多個企業(yè)和客戶,超過500個授權(quán)使用,出貨量已經(jīng)達(dá)到25億顆;芯來科技RISC-V CPU IP產(chǎn)品線覆蓋從低功耗到高性能的各種應(yīng)用需求,正式授權(quán)客戶已超過100家...
一些列動態(tài)和成果,呈現(xiàn)出國內(nèi)RISC-V芯片行業(yè)上下游產(chǎn)業(yè)鏈的發(fā)展速度和全面布局態(tài)勢。能夠看到,在這些中國技術(shù)人和企業(yè)的努力下,RISC-V處理器的可用性及覆蓋面大大提升,使其從一個象牙塔的基礎(chǔ)架構(gòu),真正走向市場化發(fā)展。
國產(chǎn)RISC-V的優(yōu)勢和挑戰(zhàn)
隨著半導(dǎo)體市場進(jìn)入一個新的階段,中國半導(dǎo)體行業(yè)需要抓住一切機(jī)遇,尋找突破科技封鎖的方法,RISC-V或許將成為一個突破口。
武延軍對此也表示認(rèn)同。他指出,對于中國發(fā)展RISC-V來說,很明顯的優(yōu)勢首先是一個巨量的市場;然后有大規(guī)模的計算機(jī)工程師團(tuán)隊和專業(yè)人才;同時有足夠豐富的應(yīng)用場景能夠充分發(fā)揮RISC-V的多樣性。
“還有一個獨(dú)特的優(yōu)勢,那就是我們可能沒有國外一些老牌廠商和機(jī)構(gòu)的歷史包袱,沒有它們已經(jīng)存在的商業(yè)利益或者技能上的慣性,使我們有機(jī)會從一個全新的視角、一個全新的架構(gòu)下面去做一些開創(chuàng)性工作?!?武延軍補(bǔ)充道。
不過,相應(yīng)的劣勢就是中國在很多技術(shù)領(lǐng)域沒有國外巨頭在歷史上積累的豐富經(jīng)驗。同時,在高端核心人才儲備上也沒有像國外處理器、基礎(chǔ)軟件巨頭那么多。此外,可能在專利等知識產(chǎn)權(quán)方面也存在一定差距。
因此,對于RISC-V在中國的發(fā)展,除了需要面對制造的挑戰(zhàn)以外,還需要克服處理器IP核和核心基礎(chǔ)軟件兩方面的困難。其中,后者的編譯工具鏈和操作系統(tǒng)是RISC-V生態(tài)里面最難突破的兩個技術(shù)點(diǎn),跟國際水平存在差距。
平頭哥半導(dǎo)體副總裁孟建熠對此指出,RISC-V還需要大家把整個架構(gòu)不斷的做得穩(wěn)定、可靠;有了“穩(wěn)定、可靠”之后整個上層的軟件適配就會變得更加容易,軟件越來越豐富之后要做的事情就是往各個縱深的方向去發(fā)展。目前來看,整個發(fā)展勢頭還是非常好的。
生態(tài),RISC-V勝負(fù)關(guān)鍵手
RISC-V的潛力,正讓很多芯片公司感到興奮,國內(nèi)外新興RISC-V企業(yè)和原有科技巨頭紛紛布局卡位。
據(jù)華泰證券研報,開源指令集架構(gòu)RISC-V在AIoT時代應(yīng)用場景及市場空間將快速增長,預(yù)計2025年全球RISC-V出貨量將超過600億顆。RISC-V似乎爆發(fā)在即,生態(tài)建設(shè)成為勝負(fù)手關(guān)鍵。
從市場現(xiàn)狀來看,RISC-V目前只是在MCU領(lǐng)域稍有建樹,局限于一些對算力和對軟件生態(tài)豐富程度要求不那么高的領(lǐng)域。在往更高性能的處理器方面,RISC-V目前似乎與Arm和X86相比,差距甚大。
針對其應(yīng)用領(lǐng)域,RISC-V基金會CTO Mark Himelstein透露,RISC-V在未來幾年將會發(fā)力汽車、數(shù)據(jù)中心和安全等多個應(yīng)用領(lǐng)域,包括最近備受關(guān)注的加速器和智能網(wǎng)卡也是RISC-V未來幾年的關(guān)注重點(diǎn)。

(, 下載次數(shù): 15)
孟建熠強(qiáng)調(diào),RISC-V現(xiàn)在應(yīng)該在一個初步證明它商業(yè)化可用的這條路上,其發(fā)展速度非???。和Arm一樣,RISC-V在早期的時候首先在嵌入式領(lǐng)域先打開一個環(huán)節(jié),基本證明可用。接下來,可能就是它要往更加高性能、更加縱深的方向去發(fā)展。
比如數(shù)據(jù)中心,就是RISC-V正在努力的方向。
然而,近日Arm高管在接受采訪時試圖淡化RISC-V對ARM業(yè)務(wù)的威脅。Arm基礎(chǔ)設(shè)施業(yè)務(wù)高級副總裁兼總經(jīng)理Chris Bergey表示:“雖然RISC-V可能在某些市場上獲得牽引力,但Arm并不擔(dān)心新貴ISA會侵蝕其在數(shù)據(jù)中心的新立足點(diǎn)?!?br /> RISC-V要進(jìn)入數(shù)據(jù)中心,確實(shí)還有很大的距離。孟建熠表示,要往高性能發(fā)展,處理器首先本身要在性能上有突破?!靶阅芡黄啤本托枰度氪罅康难邪l(fā)精力和資金投入;其次,往高性能走,處理器的“穩(wěn)定性”也是非常重要的。上層軟件棧越厚,軟件與硬件的協(xié)同優(yōu)化就越困難,必須要求足夠的硬件穩(wěn)定性,來適配更復(fù)雜的應(yīng)用場景。
武延軍也認(rèn)為,RISC-V往高性能走,對處理器的設(shè)計和軟件生態(tài)都是一個非常大的挑戰(zhàn)。
他舉例表示,中科院軟件所在國際上游開源社區(qū),國內(nèi)開源歐拉社區(qū)、平頭哥等都做了大量的RISC-V基礎(chǔ)軟件適配工作?!暗覀兛梢钥吹?,目前還是有很多核心的基礎(chǔ)軟件不能很好地跑在RISC-V平臺上?!睋?jù)了解,這可能會與指令集規(guī)范還不成熟有關(guān),但更多的是因為這些基礎(chǔ)軟件包之前都是在X86和ARM上面去跑,從維護(hù)者、社區(qū)的角度,還沒有把RISC-V當(dāng)成Tier1或者First-Class-Citizen度去對待。這有理念問題,有投入問題,也有商業(yè)利益回報的問題。
因此,基礎(chǔ)軟件的意義是避免生態(tài)碎片化,避免大家在同樣的指令集架構(gòu)下還去“造輪子”。因此在一些基礎(chǔ)的編譯工具鏈、操作系統(tǒng),比如GCC/LLVM,Linux等,希望整個行業(yè)能夠合力去共同打造,而不是說每個RISC-V處理器廠家都要自己做一套,這其實(shí)是一個很大的浪費(fèi)。
目前,國外已經(jīng)有好多公司在往數(shù)據(jù)中心的方向發(fā)展了,它們也是整個賽道里面非常熱門的公司,在大家努力下,整個RISC-V在數(shù)據(jù)中心的生態(tài)正在逐步建設(shè)當(dāng)中。
寫在最后
從生態(tài)繁榮程度來看,RISC-V目前可能處在ARM大概在2000-2005年的階段。彼時,有關(guān)ARM的各種培訓(xùn)資料、書籍、培訓(xùn)班在大量的出現(xiàn),市場上對ARM開發(fā)者的人才需求也是突然爆增,在嵌入式領(lǐng)域已經(jīng)跟X86、MIPS已經(jīng)展開了非常激烈的競爭。
武延軍指出,現(xiàn)在RISC-V也差不多到了這個階段,而且以一個更高的加速度在增長。我們看到不光是教育科研、各種文檔材料、人才培訓(xùn),而且已經(jīng)有非常好的商用場景、非常高的出貨量。當(dāng)前階段,可能也是整個生態(tài)上下游都可以開始發(fā)力的階段了,如果說之前還在觀望的話,我覺得從這個階段開始大家已經(jīng)可以不用去觀望了,不管是從個人學(xué)習(xí)能力提升角度,亦或是從公司業(yè)務(wù)發(fā)展的角度,都可以放心地去投入RISC-V領(lǐng)域了。
雖然Arm今天可能不將RISC-V視為威脅,但也正如我們觀察到的,隨著RISC-V的發(fā)展,Arm已經(jīng)改變了其內(nèi)核許可的方式。例如,面對免版稅、開放和模塊化的競爭對手,Arm已采取措施,在某些情況下降低其IP許可的前期成本,并允許被許可人添加自定義指令。
回過頭看,無論是Wintel(Windows+Intel),還是AA聯(lián)盟(Android +Arm),以及那些早已凋零的MIPS、PowerPC等芯片架構(gòu),決定競爭終局的或許從來不是技術(shù)本身,而是豐富的上層應(yīng)用、高效的軟硬協(xié)同以及爆發(fā)的市場需求。
總結(jié)起來就是兩個字:生態(tài)。
生態(tài)的培育,是一個漫長的過程。對于RISC-V未來的生態(tài)發(fā)展趨勢,孟建熠強(qiáng)調(diào):“從競爭性角度看,Arm架構(gòu)和x86架構(gòu)分別在移動終端、PC和服務(wù)器市場壟斷多年,在這些領(lǐng)域RISC-V新玩家滲透進(jìn)去還非常需要時日。但是在AIoT、新能源汽車電子、異構(gòu)計算等新興領(lǐng)域,RISC-V和其他架構(gòu)站在同一起跑線,反而具備一些巨頭們不具備的新起跑優(yōu)勢?!?br /> 展望未來,RISC-V與Arm和X86將會在競爭過程中逐漸找到自己的定位,不斷融合、互相借鑒、長期共存,形成“三分天下”的局面,在各自擅長的領(lǐng)域發(fā)揮優(yōu)勢。
再談DDR內(nèi)存技術(shù)原理

從動態(tài)的角度來分析時序結(jié)構(gòu),包括read/write的整個過程到數(shù)據(jù)返回發(fā)生了什么,其中包括以下內(nèi)容:
·DDR是如何完成Read、Write 等的操作
·DDR的基本命令
·DDR的時序參數(shù)
·DDR的性能分析
中國存儲器芯片行業(yè)概覽
1 DRAM基本組成

(, 下載次數(shù): 14)
對于DRAM,其主要由行和列組成,每一個bit中都是由類似右下圖的類晶體管的結(jié)構(gòu)組成,對于sdram的數(shù)據(jù),可以通過控制column和row就可以訪問sdram的隨機(jī)地址的內(nèi)容。
·讀取某一個bit的狀態(tài),就是選中word line,那么圖示中的晶體管M1就會導(dǎo)通,通過bit line的sense就可以感知到這個時候電容Cs上的狀態(tài),例如,現(xiàn)在如果這個bit的狀態(tài)為1,那么導(dǎo)通之后就會從bit line上得到1,反之也是同樣的道理。
·向某一bit寫入1,首先通過row decoder選中word line,將會導(dǎo)致m1導(dǎo)通,那么bit line為1,會導(dǎo)致電容Cs充電,導(dǎo)致其電平為1,如果要寫入,那么bit line的電平 為0,將會導(dǎo)致電容Cs放電,致使此時的電平為0。
由上面可以看出一個位只能表示一個bit,那么我們想讀取多個位的時候,該怎么辦呢?那就出現(xiàn)了ddr中的bank的概念,由多個memory array就組成了一個bank,如下圖,一次可以讀取2bit/4bit/8bit的數(shù)據(jù):

(, 下載次數(shù): 13)
由多個bank就可以組成一個memory device,如下圖,一個dram的芯片,由8個banks組成,而每個bank由4個memory array構(gòu)成,而此時每個bank輸出4個bit的I/O bus,那么為什么會出現(xiàn)bank的概念呢?動態(tài)內(nèi)存區(qū)別于靜態(tài)內(nèi)存要定時刷新,每讀取一個狀態(tài)的時候,都需要重新充電。如果沒有采用bank,假設(shè)我們現(xiàn)在要讀取01-08地址的數(shù)據(jù),當(dāng)讀取01的地址后,要等這個bank自刷新后才能讀取02地址的值,而采用8個bank之后,沒有這類問題,例如我們讀取完01地址之后,那么讀取02,因為02與01的控制方式不同,所以對于這段時間01可以后臺的完成自刷新,依次類推,那么就可以很好的解決動態(tài)內(nèi)存需要刷新的問題。

(, 下載次數(shù): 12)
上圖中,對于RANK、DIMM等在深入淺出DDR系列(1)——DDR原理篇中已經(jīng)詳細(xì)介紹了。
2 DDR工作原理
了解了DDR的基本組成后,我們來看看DDR如何來完成一次的讀寫過程。如下圖所示,DRAM 的相關(guān)操作在內(nèi)部大概可以分為以下的四個階段:

(, 下載次數(shù): 14)
·command transport and decode: 在這個階段,Host 端會通過 Command Bus 和 Address Bus 將具體的 Command 以及相應(yīng)參數(shù)傳遞給 DRAM。DRAM 接收并解析 Command,接著驅(qū)動內(nèi)部模塊進(jìn)行相應(yīng)的操作。其中會根據(jù)將addr bus上的數(shù)據(jù)解碼成對應(yīng)的row address和通過bank control解碼后得到對應(yīng)的bank,其次對應(yīng)的column也會解碼得到對應(yīng)的地址
·in bank data movement: 在這個階段,第一階段發(fā)送需要讀取的 Column 的地址給 DRAM。然后 DRAM 再將 Active Command 所選中的 Row 中,DRAM 就將 Memory Array 中的數(shù)據(jù)從 DRAM Cells 中讀出到 Sense Amplifiers,或者將數(shù)據(jù)從 Sense Amplifiers 寫入到 DRAM Cells。
·in device data movement: 這個階段中,數(shù)據(jù)將通過 IO 電路緩存到 Read Latchs 或者通過 IO 電路和 Write Drivers 更新到 Sense Amplifiers。
·system data transport: 在這個階段,進(jìn)行讀數(shù)據(jù)操作時,SDRAM 會將數(shù)據(jù)輸出到數(shù)據(jù)總線上,進(jìn)行寫數(shù)據(jù)操作時,則是 Host 端的 Controller 將數(shù)據(jù)輸出到總線上。
在上述的四個階段中,每個階段都會有一定的耗時,例如數(shù)據(jù)從 DRAM Cells 搬運(yùn)到 Read Latchs 的操作需要一定的時間,因此在一個具體的操作需要按照一定時序進(jìn)行。同時,由于內(nèi)部的一些部件可能會被多個操作使用,例如讀數(shù)據(jù)和寫數(shù)據(jù)都需要用到部分 IO 電路,因此多個不同的操作通常不能同時進(jìn)行,也需要遵守一定的時序。此外,某些操作會消耗很大的電流,為了滿足 SDRAM 設(shè)計上的功耗指標(biāo),可能會限制某一些操作的執(zhí)行頻率。
3 DRAM基本命令
對于一款ddr,我們需要知道通過什么樣的方式來控制完成我們需要,我們來看看ddr的狀態(tài),ddr的工作就是在這幾個狀態(tài)之間切換:

(, 下載次數(shù): 12)
在芯片上電后,完成初始化后,dram處于idle階段,上圖是需要進(jìn)入各個階段的時候,應(yīng)該需要進(jìn)行那些基本的操作,對于ddr使用比較頻繁的幾個基本命令訪問方式如下
·刷新模式:儲體中電容的數(shù)據(jù)有效是有時間限制的,所以為了保證數(shù)據(jù)的不丟失,所以要對ddr進(jìn)行定時的刷新,SDRAM內(nèi)部有一個行地址生成器(也稱刷新計數(shù)器)用來自動的依次生成行地址。由于刷新是針對一行中的所有存儲體進(jìn)行。該模式是由Host主動控制DRAM完成刷新,存儲體中電容的數(shù)據(jù)有效保存期上限是64ms(毫秒,1/1000秒),也就是說每一行刷新的循環(huán)周期是64ms。
·自我刷新模式:當(dāng)系統(tǒng)進(jìn)入低功耗模式,只需要發(fā)送一條 SRF指令,主要用于休眠模式低功耗狀態(tài)下的數(shù)據(jù)保存,比較常見的應(yīng)用是STR(Suspend to RAM,休眠掛起于內(nèi)存)。就進(jìn)入了該模式,此時不再依靠系統(tǒng)時鐘工作,而是根據(jù)內(nèi)部的時鐘進(jìn)行刷新操作。期間除了CKE之外的所有外部信號都是無效的(無需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式并進(jìn)入正常操作狀態(tài)。
·MRS模式(mode register set):模式寄存器中的數(shù)據(jù)控制著 DDR2 SDRAM的操作模式.它控制著 CAS 延遲, 突發(fā)長度, 突發(fā)順序, 測試模式, DLL復(fù)位, WR等各種選項,支持著 DDR2 SDRAM 的各種應(yīng)用. 模式寄存器的默認(rèn)值沒有被定義, 所以上電之后必須按規(guī)定的時序規(guī)范來設(shè)定模式寄存器的值。
·EMRS 擴(kuò)展模式寄存器:存儲著激活或禁止DLL的控制信息, 輸出驅(qū)動強(qiáng)度, ODT 值的選擇 和附加延遲等信息。
·預(yù)充電:對一行讀寫操作后,關(guān)閉現(xiàn)有工作行,準(zhǔn)備打開新行的操作就是預(yù)充電。
·讀過程:訪問操作開始ACT一個激活命令,主要是激活bank和rol,就等于選通了某一Bank的某一行,接著發(fā)送一個read指令,就可以通過數(shù)據(jù)總線將數(shù)據(jù)送出去了,然后就進(jìn)行預(yù)充電,恢復(fù)到讀寫的狀態(tài),預(yù)充電完成后,就恢復(fù)到idle狀態(tài)。
·寫過程:與讀過程基本類似。
DRAM的基本命令是通過操作各種控制信號/地址信號的組合來完成,下表是DRAM的命令表:

(, 下載次數(shù): 11)
4 DDR的時序參數(shù)
4.1 Row Active Command
在進(jìn)行數(shù)據(jù)的讀寫前,Controller 需要先發(fā)送 Row Active Command,打開 DRAM Memory Array 中的指定的 Row。Row Active Command 的時序如下圖所示:

(, 下載次數(shù): 12)
tRCD:RAS-to-CAS Delay(tRCD),內(nèi)存行地址傳輸?shù)搅械刂返难舆t時間。
Row Active Command 通過地址總線指明需要打開某一個 Bank 的某一個 Row。DRAM 在接收到該 Command 后,會打開該 Row 的 Wordline,將其存儲的數(shù)據(jù)讀取到 Sense Amplifiers 中,這一時間定義為 tRCD(RCD for Row Address to Column Address Delay)。DRAM 在完成 Row Sense 階段后,Controller 就可以發(fā)送 Read 或 Write Command 進(jìn)行數(shù)據(jù)的讀寫了。這也意味著,Controller 在發(fā)送 Row Active Command 后,需要等待 tRCD 時間才能接著發(fā)送 Read 或者 Write Command 進(jìn)行數(shù)據(jù)的讀寫。
tRAS: Row Active Time,內(nèi)存行地址選通延遲
由于 DRAM 的特性,Row 中的數(shù)據(jù)在被讀取到 Sense Amplifiers 后,需要進(jìn)行 Restore 的操作。Restore 操作可以和數(shù)據(jù)的讀取同時進(jìn)行,即在這個階段,Controller 可能發(fā)送了 Read Command 進(jìn)行數(shù)據(jù)讀取。
DRAM 接收到 Row Active Command 到完成 Row Restore 操作所需要的時間定義為 tRAS(RAS for Row Address Strobe)。
Controller 在發(fā)出一個 Row Active Command 后,必須要等待 tRAS 時間后,才可以發(fā)起另一次的 Precharge 和 Row Access。
4.2 Column Read Command
Controller 發(fā)送 Row Active Command 并等待 tRCD 時間后,再發(fā)送 Column Write Command 進(jìn)行數(shù)據(jù)寫入。數(shù)據(jù) Burst Length 為 8 時的 Column Write Command 時序如下圖所示:

(, 下載次數(shù): 12)
tCWD/tCL/tCWL:內(nèi)存CAS延遲時間
Column Write Command 通過地址總線 A[0:9] 指明需要寫入數(shù)據(jù)的 Column 的起始地址。Controller 在發(fā)送完 Write Command 后,需要等待 tCWD (CWD for Column Write Delay) 時間后,才可以發(fā)送待寫入的數(shù)據(jù)。tCWD 在一些描述中也稱為 tCWL(CWL for Column Write Latency)
tWR(WR for Write Recovery)
DRAM 接收完數(shù)據(jù)后,需要一定的時間將數(shù)據(jù)寫入到 DRAM Cells 中,這個時間定義為 tWR(WR for Write Recovery)。該值說明在一個激活的bank中完成有效的寫操作及預(yù)充電前,必須等待多少個時鐘周期。這段必須的時鐘周期用來確保在預(yù)充電發(fā)生前,寫緩沖中的數(shù)據(jù)可以被寫進(jìn)內(nèi)存單元中。同樣的,過低的tWD雖然提高了系統(tǒng)性能,但可能導(dǎo)致數(shù)據(jù)還未被正確寫入到內(nèi)存單元中,就發(fā)生了預(yù)充電操作,會導(dǎo)致數(shù)據(jù)的丟失及損壞。
4.3 Precharge Command
要訪問 DRAM Cell 中的數(shù)據(jù),需要先進(jìn)行 Precharge 操作。相應(yīng)地,在 Controller 發(fā)送 Row Active Command 訪問一個具體的 Row 前, Controller 需要發(fā)送 Precharge Command 對該 Row 所在的 Bank 進(jìn)行 Precharge 操作。下面的時序圖描述了 Controller 訪問一個 Row 后,執(zhí)行 Precharge,然后再訪問另一個 Row 的流程。

(, 下載次數(shù): 11)
DRAM 執(zhí)行 Precharge Command 所需要的時間定義為 tRP(RP for Row Precharge)。Controller 在發(fā)送一個 Row Active Command 后,需要等待 tRC(RC for Row Cycle)時間后,才能發(fā)送第二個 Row Active Command 進(jìn)行另一個 Row 的訪問。
從時序圖上我們可以看到,tRC = tRAS + tRP,tRC 時間決定了訪問 DRAM 不同 Row 的性能。在實(shí)際的產(chǎn)品中,通常會通過降低 tRC 耗時或者在一個 Row Cycle 執(zhí)行盡可能多數(shù)據(jù)讀寫等方式來優(yōu)化性能。
4.4 Row Refresh Command
一般情況下,為了保證 DRAM 數(shù)據(jù)的有效性,Controller 每隔 tREFI(REFI for Refresh Interval) 時間就需要發(fā)送一個 Row Refresh Command 給 DRAM,進(jìn)行 Row 刷新操作。DRAM 在接收到 Row Refresh Command 后,會根據(jù)內(nèi)部 Refresh Counter 的值,對所有 Bank 的一個或者多個 Row 進(jìn)行刷新操作。
DRAM 刷新的操作與 Active + Precharge Command 組合類似,差別在于 Refresh Command 是對 DRAM 所有 Bank 同時進(jìn)行操作的。下圖為 DRAM Row Refresh Command 的時序圖:

(, 下載次數(shù): 14)
DRAM 完成刷新操作所需的時間定義為 tRFC(RFC for Refresh Cycle)。
tRFC 包含兩個部分的時間,一是完成刷新操作所需要的時間,由于 DRAM Refresh 是同時對所有 Bank 進(jìn)行的,刷新操作會比單個 Row 的 Active + Precharge 操作需要更長的時間;tRFC 的另一部分時間則是為了降低平均功耗而引入的延時,DRAM Refresh 操作所消耗的電流會比單個 Row 的 Active + Precharge 操作要大的多,tRFC 中引入額外的時延可以限制 Refresh 操作的頻率。
4.5 Read Cycle
一個完整的 Burst Length 的 Read Cycle 如下圖所示:

(, 下載次數(shù): 13)
下面是DDR常見的一些參數(shù)及定義如下:

(, 下載次數(shù): 12)
上述的 DRAM Timing 中的一部分參數(shù)可以編程設(shè)定,例如 tCAS、tAL、Burst Length 等。這些參數(shù)通常是在 Host 初始化時,通過 Controller 發(fā)起 Load Mode Register Command 寫入到 DRAM 的 Mode Register 中。DRAM 完成初始化后,就會按照設(shè)定的參數(shù)運(yùn)行。
5性能分析
在學(xué)習(xí)完DDR的基本操作和時序參數(shù)之后,我們就看看性能的影響。當(dāng)頻率和位寬固定后,帶寬也就不可更改,但是在內(nèi)存的工作周期內(nèi),不可能總處于數(shù)據(jù)傳輸?shù)臓顟B(tài),因為要有命令、尋址等必要的過程。那么這些操作占用的時間越短,內(nèi)存工作的效率就越高,性能也就越好。
對于我們來說,最好的方法是提高頻率,但是提高頻率會受多方面的影響,還有什么辦法提高內(nèi)存訪問采取速度。
·多通道: 現(xiàn)代內(nèi)存控制器從北橋移入CPU內(nèi)部,而內(nèi)存控制器都可以同時操作多個通道。比如現(xiàn)在的筆記本開始支持雙通道、三通道,如果數(shù)據(jù)分布在不同通道的內(nèi)存條上,內(nèi)存控制器就可以不用管上面的這些延遲時序,同時可以讀取它們,速度可以增加兩倍,甚至三倍。
·交織方式(Interleaving): 同一塊內(nèi)存分布到不同的通道中去,這樣無論Cache命中與否都可以同時存取,多通道的技術(shù)才能發(fā)揮更大的用處。
·超頻內(nèi)存: 也就是提升DDR的頻率來增加速度
6總結(jié)
對于DDR的讀寫以及一些時序參數(shù)的原理性知識后,下一步就進(jìn)入到DDR的驅(qū)動調(diào)式,主要是對于一款控制器,我們該如何去調(diào)試DDR。其實(shí)對于DDR的調(diào)試,主要的讀寫的控制,都是由DDR的控制器完成了,我們主要是通過MRS模式/EMRS模式來完成對于DDR參數(shù)的配置,而對于MRS模式的使用,已經(jīng)集成到DDR控制器中完成了,我們只需要根據(jù)控制器手冊配置相應(yīng)的寄存器就可以完成對于DDR調(diào)試。
參考文獻(xiàn)鏈接
https://mp.weixin.qq.com/s/QYaxxFL9DgaH8w7-oWTLnQ
https://mp.weixin.qq.com/s/piz05ElprV88xnrHFufnvg
https://mp.weixin.qq.com/s/6H_JsumnYUoyIT8_ovBihQ
https://mp.weixin.qq.com/s/O1jMMqKn-fnQp0T35tMP-w

-----------------------------
作者: 鄧瑋    時間: 2022-9-29 23:22
吳博士,有時間討論一下內(nèi)存優(yōu)化啊[大笑]




歡迎光臨 愛鋒貝 (http://7gfy2te7.cn/) Powered by Discuz! X3.4