[發明專利]一種鏈式結構的GPU顯存管理方法在審
| 申請號: | 201810939808.4 | 申請日: | 2018-08-17 |
| 公開(公告)號: | CN109376003A | 公開(公告)日: | 2019-02-22 |
| 發明(設計)人: | 廖科;時洋洋;李少光 | 申請(專利權)人: | 中國航空無線電電子研究所 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06T1/20;G06T1/60 |
| 代理公司: | 上海和躍知識產權代理事務所(普通合伙) 31239 | 代理人: | 楊慧 |
| 地址: | 200233 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 顯存 空閑鏈表 鏈式結構 全局鏈表 空閑 合并算法 使用效率 傳入的 空閑塊 標示 查詢 管理 合并 釋放 更新 保證 | ||
一種鏈式結構的GPU顯存管理方法,包含以下步驟:1)在GPU顯存空間中建立堆對象,每個堆對象至少由一個顯存塊組成,建立全局鏈表和空閑鏈表;2)釋放顯存空間時,將傳入的地址所在的顯存塊塊標示為空閑,查詢當前顯存塊的前后顯存塊是否為空閑顯存塊,如果是則進行合并,更新全局鏈表和空閑鏈表。本發明采用臨近空閑塊合并算法,在保證效率的同時,減少顯存碎片的產生,提高顯存使用效率。
技術領域
本發明屬于圖形處理器驅動領域,涉及一種對GPU芯片上的片上顯存進行管理的方法。
背景技術
圖形處理器(GPU)廣泛應用于工業、醫療、消費電子等各種需要圖形生成及顯示的領域,最常見的應用場景為中央處理器(CPU)通過PCI或PCIE總線和GPU相互交互數據和命令,GPU負責繪制圖形并輸出。在三維圖形生成過程中,大量的數據需要從CPU本地內存搬移到GPU中或者從GPU搬移到CPU內存中,受到內存帶寬及PCI/PCIE總線帶寬的限制,GPU從CPU本地內存讀寫數據的速度遠遠低于GPU從片上顯存讀寫數據的速度,以嵌入式領域常用的T2080處理器為例,其DDR內存速度為2.133Gb/s,而同時期的嵌入式GPU片上顯存帶寬為72Gb/s。受成本、功耗、體積等因素的制約,GPU片上顯存一般容量較小,一般用來存放對性能影響比較大的數據比如紋理數據、頂點數組對象數據、幀緩存數據等,因此一個好的顯存管理策略對GPU性能的發揮起到重要的作用。
傳統的GPU顯存管理時具有以下不足:
1)顯存利用率低
由于顯存駐留在GPU上,只能由GPU來進行控制,傳統的malloc或free函數只能管理CPU本地的內存及部分GPU映射的顯存,而不能管理GPU的全部片上顯存;
2)顯存調度效率低
通用的顯存管理策略考慮多線程使用等復雜應用場景,加入了很多判斷和維護機制,增加了開銷,降低了運行效率,不適用于嵌入式這種應用場景單純、要求運行效率高的領域;
3)安全性差
頻繁調用malloc或free函數容易產生大量內存碎片,同時申請和釋放時容易造成“野指針”的出現,造成程序崩潰且難以排查原因。
發明內容
為了解決傳統方法的顯存利用率低、運行效率低、安全性不高等問題,本發明的發明目的在于提供一種鏈式結構的GPU顯存管理方法,節省寶貴的顯存資源,提升程序運行速度和安全性。
本發明的發明目的通過以下技術方案實現:
一種鏈式結構的GPU顯存管理方法,包含以下步驟:
步驟1)在GPU的片上顯存空間中建立堆對象,每個堆對象至少由一個顯存塊組成,其中:堆對象的元素中包含指向首個空閑顯存塊的第二指針;
顯存塊的元素中包含:
a)顯存塊大小;
b)顯存塊起始地址;
c)指向下一個顯存塊的第三指針;
d)指向前一個顯存塊的第四指針;
e)在當前是空閑顯存塊時使用的指向下一個空閑顯存塊的第五指針;
f)在當前是空閑顯存塊時使用的指向前一個空閑顯存塊的第六指針;
由第三指針、第四指針形成所有顯存塊的全局鏈表,由第五指針、第六指針形成空存顯存塊的空閑鏈表,前后二塊顯存塊在物理上相連;
步驟2)釋放顯存空間時,將傳入的地址所在的顯存塊塊標示為空閑,同時使用第三指針、第四指針查詢當前顯存塊的前后顯存塊是否為空閑顯存塊,如果是則進行合并,更新全局鏈表和空閑鏈表。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國航空無線電電子研究所,未經中國航空無線電電子研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810939808.4/2.html,轉載請聲明來源鉆瓜專利網。





