一種內存資源管理方法與系統與流程
2023-05-20 13:42:26
本發明涉及內存管理技術領域,尤其涉及計算組件的內存資源管理方法與系統。
背景技術:
現場可編程門陣列(fieldprogrammablegatearray,fpga)是在可編程陣列邏輯(programmablearraylogic,pal)、門陣列邏輯(gatearraylogic,gal)、可編程邏輯器件(programmablelogicdevice,pld)等可編程器件的基礎上進一步發展的產物。fpga具有邏輯資源、存儲資源、算法模塊和嵌入式硬核模塊等豐富的資源,並具備高性能、高靈活性等特點。基於以上特點,利用fpga實現快速準確的計算已經成為研究熱點。除了fpga,顯卡上的圖形處理器(graphicprocessingunit,gpu)因其內部分布可應對並行高運算密度大問題的算術邏輯單元,已經被用來解決複雜的計算問題。
這些fpga、顯卡或專用高性能計算卡等計算組件都會配備一定容量的存儲器為計算、邏輯處理等過程提供內存資源。上述存儲容量通常是受限的,如何合理高效地進行內存資源的管理以滿足大存儲量的計算是上述計算組件面臨的問題。
在現有技術中,內存資源管理多以字節(byte)為單位進行分配與釋放,且計算與結果公用內存資源。以字節為單位進行內存資源管理容易出現內存資源碎片,無形中降低了內存資源的使用效率。而計算使用內存資源與結果使用內存資源公用內存資源使得內存資源不能得到合理的管理和使用。
技術實現要素:
針對上述問題,本發明的目的在於提高內存資源的使用效率,以及解決計算與結果公用內存資源的問題。
為達到上述發明目的,本發明提供的技術方案如下:
一種內存資源管理方法,所述方法由一個計算設備執行,所述計算設備包括至少一個處理器和至少一個存儲媒介,其特徵在於,所述方法包括:將計算內存資源劃分為一個或多個內存塊;接收使用所述計算內存資源的請求;根據所述請求確定請求內存資源的大小;以及根據所述請求內存資源的大小分配所述計算內存資源。
一種內存資源管理系統,其特徵在於,所述內存資源管理系統包括:處理模塊,用於作計算或邏輯處理;內存模塊,用於為所述處理模塊的所述計算或所述邏輯處理提供計算內存資源;內存管理模塊,用於對所述內存模塊的所述計算內存資源進行管理,所述對所述內存模塊的所述計算內存資源進行管理包括:將所述計算內存資源劃分為一個或多個內存塊;接收使用所述計算內存資源的請求;根據所述請求確定請求內存資源的大小;以及根據所述請求內存資源的大小分配所述計算內存資源。
在本發明中,所述內存塊大小為2n個兆字節,且n為大於或等於1的整數。
在本發明中,所述根據所述請求分配所述計算內存資源包括:確定所述計算內存資源中可用內存資源的大小大於或等於所述請求內存資源的大小,得到第一確定結果;根據所述第一確定結果,修改所述可用內存資源的大小;根據所述請求內存資源的大小以及所述可用內存資源,確定分配內存資源;以及發送所述分配內存資源地址。
在本發明中,所述內存資源管理方法進一步包括:確定所述分配內存資源已被釋放,得到第二確定結果;以及根據所述第二確定結果,修改所述可用內存資源的大小。
在本發明中,所述根據所述請求分配所述計算內存資源包括:確定所述計算內存資源中的可用內存資源的大小小於所述請求內存資源的大小,得到第三確定結果;以及根據所述第三確定結果,發送請求失敗通知。
在本發明中,所述請求內存資源的大小為所述內存塊大小的整數倍。
在本發明中,所述計算設備包括現場可編輯邏輯門陣列(field-programmablegatearray,fpga)。
與現有技術相比,本發明的有益效果表現如下:
一、內存資源管理以大字節(例如,2n兆字節,n為大於或等於1的整數)為單位進行分配與釋放,減少了以單個字節為單位進行內存資源管理容易出現內存資源碎片的情況;
二、計算使用內存資源與結果使用資源採用分離管理方式,避免了計算使用內存資源與結果使用內存資源公用內存資源的情況;
三、一次釋放使用完畢的內存資源,使得可用內存資源可以得到即時的更新,大幅度提高了內存資源的使用效率。
附圖說明
圖1為本發明實施例的內存資源管理系統結構示意圖;
圖2為本發明實施例的內存分配示例流程圖;
圖3為本發明實施例的內存釋放示例流程圖;以及
圖4為本發明實施例內存資源管理系統的一種計算機設備的架構示例圖。
具體實施方式
下面通過具體實施例並結合附圖對本發明做進一步描述。
如圖1所示,所述內存資源管理系統可以包括處理模塊110、內存模塊120和內存管理模塊130。
所述處理模塊110可以用於計算、邏輯處理等過程。
所述內存模塊120可以包括計算內存資源。所述計算內存資源可以為計算過程提供內存資源。在一些實施例中,所述內存模塊120中還可以包括結果內資源,所述結果內存資源可以為計算結果提供內存資源。在一些實施例中,計算內存資源與結果內存資源也可以分別存在於兩個存儲模塊中。計算內存資源與結果內存資源採用分離管理方式,避免了計算內存資源與結果內存資源公用內存資源的情況。
所述內存管理模塊130可用於管理所述內存模塊120的計算內存資源。
圖2為本發明的內存分配示例流程圖。
在步驟210,內存管理模塊130可以將內存模塊120中的計算內存資源劃分為一個或多個內存塊。所述內存塊的大小可以為256位元組(byte)的整數倍,例如,一個內存塊的大小可以為512兆字節(megabyte,m)。在一些實施例中,每個內存塊的大小可以相等,也可以不等。
在步驟220,內存管理模塊130可以接收使用計算內存資源的請求。所述使用計算內存資源的請求可以來自於處理模塊110。
在步驟230,內存管理模塊130可以根據所述請求,確定請求內存資源的大小。所述請求內存資源可以只處理模塊110在進行計算時所需的內存資源。所述請求內存資源的大小可以為所述內存塊大小的整數倍。
在步驟240,內存管理模塊130可以判斷計算內存資源中的可用內存資源的大小是否小於所述請求內存資源的大小。所述可用內存資源可以指沒有被佔用的空閒內存資源。如果內存管理模塊130判斷可用內存資源的大小小於所述請求內存資源的大小,則執行步驟250。如果內存管理模塊130判斷可用內存資源的大小大於或等於請求內存資源的大小,則執行步驟260。
在步驟250,內存資源管理模塊130可以向處理模塊110發送請求失敗通知。
在步驟260,內存資源管理模塊130可以根據請求內存資源的大小和可用內存資源,確定分配內存資源。所述分配內存資源可以包括從可用內存資源中確定的分配給處理模塊110的內存資源。
在步驟270,內存資源管理模塊130可以修改可用內存資源的大小。所述修改可用內存資源的大小可以包括將所述可用內存資源的大小減去分配內存資源的大小。例如,可用內存資源的大小為2g(gigabyte),當2g的可用內存資源被分配佔用1g後,可用內存資源的大小會被內存資源管理模塊130修改為1g。
在步驟280,內存資源管理模塊130可以向處理模塊110發送分配內存資源地址。所述分配內存資源地址可以用於表示分配內存資源的位置。
在一些實施例中,內存資源管理模塊130可以在步驟260之前執行步驟270,也可以在步驟260之後執行步驟270。在一些實施例中,內存資源管理模塊130也可以同時執行步驟260和步驟270。
圖3為本發明的內存釋放示例流程圖。
在步驟310,內存資源管理模塊130可以確定分配內存資源已被釋放。所述釋放分配內存資源可以包括處理模塊110在使用完畢分配內存資源後,將所述分配內存資源進行釋放。
在步驟320,內存資源管理模塊130可以修改可用內存資源的大小。所述修改可用內存資源的大小可以包括在可用內存資源的基礎上加上釋放的內存資源的大小。例如,可用內存資源的大小修為1g,當處理模塊110將佔用的1g的內存資源使用完畢釋放後,內存資源管理模塊130可以將可用內存資源的大小修改為2g。
圖4為本發明內存資源管理系統的一種計算機設備的架構示例圖。
所述計算機400可以是一個通用目的的計算機,或是一個有特定目的的計算機。本發明中的內存資源管理系統能夠被所述計算機設備架構通過其硬體設備、軟體程序、固件以及它們的組合所實現。為了方便起見,圖4中只繪製了一臺計算機設備的架構,但是內存資源管理系統所需要的信息的相關計算機功能是可以以分布的方式、由一組相似的平臺所實施的,分散系統的處理負荷。
所述計算機設備架構可以包括通信埠440,與之相連的可以是實現數據通信的網絡。所述計算機設備架構還可以包括一個處理器470用於執行程序指令。所述計算機設備架構包括一個內部通信總線410,不同形式的程序儲存單元以及數據儲存單元,例如硬碟420,只讀存儲器(rom)460,隨機存取存儲器(ram)450,能夠被配置為存儲所述計算機設備架構處理和/或通信使用的各種數據文件,以及處理器470所執行的可能的程序指令。所述計算機設備架構還可以包括一個輸入/輸出組件430,支持所述計算機設備架構與外部(例如,鍵盤)之間的數據和/或信息交互。所述計算機設備架構也可以通過通信網絡接受程序及數據。
在一些實施例中,本發明中的內存資源管理系統可以包括fpga。在一些實施例中,內存資源管理系統中的處理模塊110和/或內存管理模塊130可以由處理器470實現,存儲模塊120可以由硬碟420,只讀存儲器(rom)460,或隨機存取存儲器(ram)450實現。
在一些實施例中,fpga內存資源總共12g內存,其中8g用於數據處理使用,4g用於存儲生成的ct圖像。將內存資源設為允許兩個計算任務同時運行,每一個計算任務可以使用的內存資源為6g,其中4g用於數據處理,2g用於存儲。在處理數據量較大時(超過1g時),該方式與現有技術常用的臨時動態申請資源方式相比,性能有大幅提高,可減少大量資源申請和釋放的操作。該方式可以減少的內存動態操作數量是非常可觀的。其性能提升可以達到提升100%。
以上所述僅為本發明的優選實施而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。