五月中旬,中國商飛公司的C919大飛機從浦東機場起飛,標志著國產大飛機C919正式開啟商用之路。五月下旬,有報道曝光C919的座艙顯示系統采用HKM9000 GPU圖形處理器,已經實現了完全的國產化。這款航電GPU采用了完全自主的指令架構、核心算法、圖形流水、軟硬件代碼及生態,本文就GPU的架構及其研發難度進行重點介紹。
HKM9000 GPU圖形處理器由航空工業計算所翔騰微電子公司從2014年開始研發,歷時6年,于2020年4月研制成功。這也是國內第一款應用到民航領域的專用GPU芯片。
從多年前就流行的游戲,到最近幾年在比特幣等數字貨幣的挖礦等盛行的領域,主要的核心硬件就是GPU顯卡(后來挖礦采用了其他更簡潔的方案)。
也許有人認為GPU比較簡單,不會比CPU復雜。然而,在GPU領域,目前英偉達(NVIDIA)是當之無愧的龍頭老大,桌面和移動端CPU處理器領域的英特爾、AMD等公司的GPU技術和產品都與英偉達有相當大的差距。
雖然GPU與CPU并不能一定說誰的技術難度更大,但GPU的研發難度無疑也是非常大的,在某種情況下比CPU更難,這種難度首先就體現在架構上,因為現在發展的GPU架構已經在主要的幾大公司中形成了專利壁壘。
通用的CPU是SISD架構,而GPU架構是SIMD。
從平面角度看是:
SISD機器是一種傳統的串行計算機,它的硬件不支持任何形式的并行計算,所有的指令都是串行執行。并且在某個時鐘周期內,CPU只能處理一個數據流。因此這種機器被稱作單指令流單數據流機器。早期的計算機都是SISD機器,如馮諾.依曼架構,如IBM PC機,早期的巨型機和許多8位的家用機等。
SIMD是采用一個指令流處理多個數據流。這類機器在數字信號處理、圖像處理、以及多媒體信息處理等領域非常有效。GPU就是這樣的架構。
GPU架構就是圍繞一個流式多處理器(SM)的擴展陣列搭建的。通過復制這種結構來實現GPU的硬件并行。包含了關鍵組件:
Fermi架構是第一個完整的GPU架構,這是英偉達(NVIDIA)公司于2010年推出的架構。
來源:NVIDIA Fermi架構文檔
Fermi邏輯架構中包含具體數據如下:
SM包括下面這些資源:
每個多處理器SM有16個加載/存儲單元所以每個時鐘周期內有16個線程(半個線程束)計算源地址和目的地址。
特殊功能單元SFU執行固有指令,如正弦,余弦,平方根和插值,SFU在每個時鐘周期內的每個線程上執行一個固有指令。
每個SM有兩個線程束調度器,和兩個指令調度單元,當一個線程塊被指定給一個SM時,線程塊內的所有線程被分成線程束,兩個線程束選擇其中兩個線程束,在用指令調度器存儲兩個線程束要執行的指令。
NVIDIA還有其他架構,面向超強彈性數據中心核心的AMPERE 架構(7nm),面向AI的HOPPER 架構(4N 工藝),專業圖形應用中的Turing架構,人工智能引擎VOLTA架構。
此外,先前還有Pascal 架構(16nm),Kepler架構,Maxwell架構。
Intel以往是沒有獨立的GPU的,我們以往常見的是Intel CPU中集成了顯卡,稱之為集顯。直到2021年8月,Intel宣布推出面向游戲玩家的Xe-HPG架構Alchemist GPU;以及面向數據中心的Xe-HPC架構GPU芯片Ponte Vecchio。2022年3月,Intel正式發布了Intel Arc A系列移動端獨立顯卡。
最近,AMD透露了下一代GPU架構Polaris,這是 Graphics Core Next (GCN)架構的第四代,目前AMD顯卡如 Radeon R9 285和R9 Fury 使用的是 GCN 1.2架構。新架構顯卡最引入矚目之處是使用14納米FinFET工藝。
過去幾年AMD及其競爭對手 Nvidia的顯卡一直停留在28納米工藝上,采用14納米工藝將能大幅改進功耗和每瓦性能。Polaris還將改進命令處理器,幾何圖形處理器、L2緩存、內存控制器、多媒體核心、顯示引擎、支持4K@60FPS h.265硬編碼解碼, DisplayPort 1.3和HDMI 2.0a等新技術。
暫時未有公開報道國產HKM9000 GPU的架構。但據中國航空新聞網的報道,HKM9000 GPU芯片具有完全自主的指令架構、核心算法、圖形流水、軟硬件代碼及生態。并且面向典型機載座艙顯示進行了應用級、算法級、架構級、電路級、軟件級等系列優化。構建了模型驅動的芯片敏捷設計開發流程,建設了完備的應用開發生態體系。
目前HKM9000已成功適配國內外10余款處理器及天脈全系列、VxWorks、翼輝、Linux等操作系統,實現了VAPS、iDATA、SCADE、Qt、MiniGUI、FreeType等圖形應用開發軟件,在航空、航天、兵器等領域13家用戶、18種顯控產品中得到應用,功能穩定、可靠。
根據實測,HKM9000相比商業級芯片性能普遍提升20%,在儀表盤等場景中性能提升可達2-3倍。
從頭開始研發GPU主要有兩大困難。第一是專利壁壘,第二是GPU芯片的架構體系化創新。
在專利壁壘方面,GPU作為先進工藝的數字芯片,高技術含量IP的持續演進是技術自主和市場競爭優勢的保障。在該領域起步早的全球GPU巨頭們已筑建了層層專利保護墻。以GPU架構IP專利為例,蘋果在該領域也繞不開專利授權:從A4到A10X的所有蘋果手機處理器中的GPU都是采用Imagination的IP,A10之后蘋果通過架構授權,有了自己的GPU架構把控,依然是基于Imagination的TBDR架構專利授權,隸屬于該架構分支。但一旦架構授權后獨立演進了,也就不再被專利卡脖子了。
在GPU芯片設計方面,GPU也絕非簡單的芯片設計,其設計較一般芯片更復雜,系統更龐大,涉及面更廣。做GPU需要極其專業的團隊,團隊從前到后要做到軟硬件全棧設計開發。專業人才要涵蓋架構、算法、硬件、軟件以及各種驗證方式,包括后端、版圖、驅動、測試、結構、生產代工等,大批量還需考慮供應鏈等領域。這點從國產GPU HKM9000的研發單位航空工業計算所翔騰微電子申請的專利中可見一斑(見后面的詳解)。
而作為航空領域的專用GPU,其設計則需要考慮得更多,在上萬米高空上極寒高熱的應用環境下的穩定性,數據傳輸的穩定性,嚴苛的可靠性,以及極端情況下依然能夠工作的要求等都對專用GPU提出了更多工藝制造和電氣特性方面的更高要求。
航空領域的標準遠遠高于普通消費級和工業級產品的標準,航電專用GPU產品標準與軍用方面的標準已經很接近了。
航電系統GPU特點
為了保證飛機完成預定任務,達到各項規定性能,飛機的綜合航空電子系統(簡稱航電系統)采用分布式計算機結構,通過多路傳輸數據總線將多種機載電子設備(分系統)交聯在一起。航電系統的GPU被稱為航電儀表,是獨立的電子儀表系統(Electronic Instrument System,EIS),可以為飛行人員提供飛行器及其分系統信息,顯示飛機某部分的姿態、高度或運行狀況的設備,有著綜合顯示各種信息、易于追加資料等特點。
早期飛行器的航電系統采用機械化的方式對飛行器的運行參數進行收集,并傳遞到飛行員的座艙進行顯示。機械連桿、液壓等傳動裝置,會將飛行器對空速度、對地速度表,水平儀、高度儀等傳感器的信息反饋至座艙的機械化指針儀表盤。
意大利沃蘭迪亞博物館中的梅塞施密特Bf.109E“埃米爾”戰斗機儀表盤。該機配備了全新的戴姆勒-奔馳DB 601發動機,發動機采用了燃油噴射系統和渦輪增壓器,于1939年初成為德軍裝備。
現代EIS用電子數據采集取代了傳統的機械采集。
EIS采用了先進的電子化傳感器。電子化傳感器可以高速采集真實環境中的物理模擬信號,通過高性能信號處理系統,對其進行信號濾波、放大等操作,得到高信噪比的數字信號,隨后通過超高帶寬的信號傳輸總線,將有效的飛行器運行關鍵參數信息傳遞給座艙的高性能GPU繪圖顯示系統,飛行員便能通過智能液晶儀表盤,得到圖形化的信息顯示。
筆者Challey從HKM9000 GPU的研發單位航空工業計算所翔騰微電子公司的專利申請情況看到有120多個專利,絕大部分都是有關GPU方面的。
這些專利包含了:
三角形光柵化掃描方法,基于UML的GPU頂點染色器視圖模型及其染色方法,基于訓練的GPU配置管理方法、裝置、存儲介質和GPU,基于SystemC的GPU顏色存儲Cache模塊的硬件TLM模型及實現結構,基于SystemC的面向GPU紋理緩沖區數據存儲TLM模型及實現結構,基于SystemC的GPU紋理貼圖周期精確聯合仿真模型及方法,基于SystemC的平面剪裁中GPU幾何圖元起始標記管理的TLM模型,用于OpenGL顯示列表調用的TLM模型, 基于UML面向GPU紋理貼圖的硬件視圖模型及紋理執行方法,OpenGL多重嵌套顯示列表調用方法,模型化顯示控制方法和控制器,配置GPU的方法、裝置、電子設備及存儲介質,基于DSP的總線控制電路,平面剪裁中GPU幾何圖元起始標記管理方法, GPU點光柵化點大小奇偶配置的頂點坐標映射方法等等。
其中面向GPU的三角形光柵化掃描結構,涉及面向GPU的三角形光柵化掃描結構,包括:初始化單元,連接所述數據獲取單元,用于接收三角形數據信息,并根據所述三角形數據信息獲取X軸起始坐標、Y軸檢測范圍;Y軸步進單元,連接所述初始化單元,用于對X軸進行使能標識,并根據所述Y軸檢測范圍控制檢測元素沿第一方向的步進;若干X軸掃描單元,分別連接所述Y軸步進單元,用于根據所述X軸的使能標識和所述X軸起始坐標控制所述檢測元素沿X軸的掃描。本發明提供的一種面向GPU的三角形光柵化掃描結構,集成有初始化單元、Y軸步進單元和X軸掃描單元,實現了GPU的三角形光柵化掃描,從而實現了從系統架構文檔到RTL的轉換。
基于SystemC的面向GPU硬件的glCallListTLM模型,涉及基于SystemC的面向GPU硬件的glCallListTLM模型,包括:顯示列表存儲單元、DMA控制單元、CallListFIFO緩沖單元、調用控制單元和嵌套表單元;其中,顯示列表存儲單元用于存儲顯示列表信息;調用控制單元用于對輸入命令或嵌套表信息進行處理,獲取描述符指令;DMA控制單元用于根據描述符指令提取預定顯示列表信息,并進行搬運;CallListFIFO緩沖單元用于對搬運的預定顯示列表信息進行緩存;調用控制單元還用于對緩存的預定顯示列表信息進行處理,獲得處理信息;嵌套表單元用于根據處理信息得到嵌套表信息。提供的基于SystemC的面向GPU硬件的glCallListTLM模型采用SystemC建模語言,可以擺脫傳統信號級別的硬件描述,使用豐富的數據結構進行硬件的高層次行為、時序的抽象。
基于UML的三角形光柵化掃描結構及光柵化掃描方法,涉及一種基于UML的三角形光柵化掃描結構及光柵化掃描方法,包括:數據獲取模塊,用于獲取三角形數據信息;三角形掃描模塊,用于根據三角形數據信息對三角形進行掃描,并根據掃描結果獲取有效坐標數據;三角形光柵化模塊,用于根據有效坐標數據對掃描后的三角形進行光柵化。本發明提供的基于UML的三角形光柵化掃描結構,集成有數據獲取單元、三角形掃描模塊和三角形光柵化模塊,數據獲取單元、三角形掃描模塊和三角形光柵化模塊之間的數據傳輸通過UML的端口實現,使得X軸掃描與Y軸步進能夠并行執行,降低了三角形光柵化的復雜度,改善了三角形光柵化掃描結構的掃描性能和速度。
GPU硬件結構精密復雜,是長期技術演進的結果。高級圖形處理步驟較多,包括頂點處理、光柵化、紋理貼圖等步驟,給予支持的是底層精密復雜的硬件結構。從英偉達2010年正式推出第一個完整的GPU計算架構Fermi以來,已經迭代5次,每一次都是對硬件的升級與改進。
而且,英偉達針對不同的領域、不同的應用場景推出了不同的GPU架構。
同時,算法與生態是GPU的軟實力。GPU圖形渲染需要用到計算圖形學,計算圖形學是一門復雜的學科,涉及數學、物理等多種知識。模擬真實世界是十分困難的,樹葉抖動、頭發絲被風吹起、水波蕩漾這樣看似平常的場景,在計算機上實現的背后是大量的圖形算法。軟件生態是GPU廠商的重要競爭屏障。一方面,英偉達與行業伙伴形成商業合作或者互相授權;另一方面,英偉達推出供軟件開發人員使用的CUDA平臺,形成開發人員社區生態,截至2020年,CUDA已經成為全球高級圖形處理和AI計算的權威,使英偉達成為全球GPU龍頭。
算法上,圖形處理算法涉及模擬真實物理世界,需要考慮物理、數學等多種問題。GPU比FPGA和ASIC技術更難。功能上,GPU兼具圖形顯示與AI計算,性能更強。算力上,GPU內核算力更強,GPU做圖形渲染需要雙浮點精度,而僅用于AI計算的FPGA和ASIC最多只需要單浮點精度。
Intel早在1997年就曾研發GPU,當時通過收購C&T獲得2D顯示核心技術,3D技術源于擁有20%股權的Real3D。1998年,依靠Real3D的技術,Intel推出了第一款獨立GPU i740,但后來因為研發結果不理想等原因,未再繼續研發獨立GPU。
2007年,看到英偉達開啟GPGPU戰略、推出CUDA,英特爾為保持優勢,計劃重新推出獨立GPU產品Larrabee,但由于研發進度不及預期、性能不佳等原因,Intel于2010年5月宣布取消獨立GPU研發計劃。
Intel二十多年多次研發GPU,屢屢未能成功。
直到2021年8月,Intel宣布推出面向游戲玩家的Xe-HPG架構Alchemist GPU;以及面向數據中心的Xe-HPC架構GPU芯片Ponte Vecchio。
2022年3月,Intel才正式發布了Intel Arc A系列移動端獨立顯卡。
更多關于CPU/GPU等芯片技術的討論可以關注我們或者聯系作者(微信同名)。
GPU設計是一項系統工程,不僅僅包含硬件架構,還包括算法和軟件生態等多個方面,缺一不可。相對FPGA和ASIC,不論是從功能上,還是硬件上,GPU設計難度都更高。
HKM9000 GPU圖形處理器已經順利通過民用大飛機C919座艙顯控系統的聯試驗證,轉入適航認證階段。中國國產大飛機C919也預計在2023年首批交付、2025年量產50架。
除了專用航空領域研發HKM9000 GPU的翔騰微電子,當前,中國商用市場也出現了景嘉微、芯動科技、壁仞科技、摩爾線程和沐曦等GPU公司。
期望國產GPU不僅僅在設計和應用上創新,更在GPU底層架構上出現更多的自主突破。
中國航空新聞網;
NVIDIA官方文檔(需要GPU架構資料的可聯系我們或者作者);
武漢大學計算機學院智能計算系統實驗室:
https://blog.csdn.net/weixin_51971301/article/details/124703677
迪捷軟件:
https://blog.csdn.net/digi2020/article/details/124377351