趙士彭 張立志 趙皓宇 蘇孟豪* 劉 蘇*
(*計算機體系結構國家重點實驗室(中國科學院計算技術研究所) 北京 100190)(**中國科學院計算技術研究所 北京 100190)(***中國科學院大學 北京 100049)(****中國科學技術大學計算機科學與技術學院 合肥 230026)(*****龍芯中科技術有限公司 北京 100190)
目前,圖形處理單元(graphics processing unit,GPU)已經廣泛存在于個人電腦、移動設備之中。GPU作為圖形加速器,在游戲、通用計算、圖像處理等領域都起到了十分顯著的作用。在現代個人計算機系統中,GPU已經變得越來越不可或缺[1],且變得越來越復雜[2-4]。中央處理器(central processing unit,CPU)[5]不再獨立處理圖形工作,將需要處理的圖形工作轉交給GPU執行,從而大幅提高系統的整體性能。GPU一般以插卡的方式,通過主板上的圖形加速接口(accelerated graphics port,AGP)或高速串行計算機擴展總線標準(peripheral component interconnect express,PCIe)插槽與CPU進行通信。GPU目前已經逐漸面向通用,通用GPU(GPGPU)[6]已經在通用計算、機器學習、人工智能等相關領域發揮不可替代的作用。當前的GPU支持DirectX、OpenGL、OpenGL ES等應用程序接口(application programming interface,API)。DirectX[7]用于Windows操作系統,OpenGL[8]用于Linux操作系統,OpenGL ES[9]用于安卓和IOS操作系統。這些API都需要GPU的驅動進行處理,轉換為GPU硬件可識別的狀態和命令等。隨著GPU越來越通用,當前的GPU已經擁有了統一的可編程著色器(shader),這使GPU已經成為一種可編程處理器。統一的可編程shader使GPU的可編程性和靈活性大大提高,與此同時,驅動也自然承擔起GPU編譯器的任務[10,11]。GPU其他功能部件的可配置性也越來越高,這些都需要驅動負責處理。作為CPU與GPU之間交互的橋梁,驅動還負責GPU的任務管理調度等相關工作,這在GPU研發工作中必不可少?!?br>