TWI451253B - 嵌入式設備圖像記憶體管理方法及裝置 - Google Patents
嵌入式設備圖像記憶體管理方法及裝置 Download PDFInfo
- Publication number
- TWI451253B TWI451253B TW100141685A TW100141685A TWI451253B TW I451253 B TWI451253 B TW I451253B TW 100141685 A TW100141685 A TW 100141685A TW 100141685 A TW100141685 A TW 100141685A TW I451253 B TWI451253 B TW I451253B
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- memory block
- valid data
- previous
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Image Input (AREA)
- Memory System (AREA)
Description
本發明是有關於一種計算機,且特別是有關於一種嵌入式設備圖像記憶體管理方法及裝置。
DirectFB是一個在嵌入式系統中廣泛應用的函數庫。是針對嵌入式設備的特殊需求環境,為圖形加速和圖形增強支援開發的一個小巧、強大和易於使用的技術。DirectFB的函數利用鏈表來實現圖像記憶體(video memory)的管理。初始狀態時,鏈表只有一個空閒節點(free memory node),記錄整個記憶體池的起始位址和末位址。當應用程式需要從記憶體池中分配一塊記憶體時,DirectFB的記憶體管理器遍曆鏈表中的所有free memory node,找出最匹配的free memory node返回給應用程式。如果找不到大小正好匹配的free memory node,則從最接近所需記憶體大小的free memory node中分配,並在鏈表中插入一個新的記憶體節點來記錄新分配的記憶體塊資訊,並且該新的記憶體節點被標示為已分配狀態。在鏈表中相鄰的記憶體節點所描述的記憶體塊在物理上也是鄰近的。
現有技術中,DirectFB管理記憶體的方式為:當應用程式釋放記憶體塊時,記錄該記憶體塊資訊的節點會被置為空閒狀態,如果與該空閒節點相鄰的節點也是空閒狀態,則會完成節點合併,將兩個節點所記錄的空閒記憶體塊合併成一個更大的空閒記憶體塊,如第1圖所示block4與block5合併為block4。在上述記憶體管理的方式下,在物理上連續的記憶體塊,如果其生命週期不一樣,就會出現記憶體碎片。於是出現這樣一種狀況:雖然可用的空閒記憶體的總量大於所需要分配的記憶體,但是所有的空閒節點都小於所需要分配記憶體的大小,於是記憶體管理器會出現分配記憶體失敗的情況。
如何在空閒的記憶體大於需要分配的記憶體的情況下,確保能使應用程式分配到需要的記憶體是目前需要解決的問題。
本發明主要解決的技術問題是提供一種嵌入式設備圖像記憶體管理方法及裝置,能夠在空閒的記憶體的總大小大於需要分配的記憶體但是單獨的空閒的記憶體塊都小於需要分配的記憶體的情況下,大大提高應用程式分配到需要的記憶體的概率。
為解決上述技術問題,本發明採用的一個技術方案是:提供一種嵌入式設備圖像記憶體管理方法,包括:從圖像記憶體鏈表中獲取節點;判斷該節點對應的記憶體塊中是否有有效資料;如果該節點對應的記憶體塊中沒有有效資料,則判斷該節點的前一個節點對應的記憶體塊中是否有有效資料;如果該前一個節點對應的記憶體塊中有有效資料,則判斷該有效資料是否可移動;如果該前一個節點對應的記憶體塊中存儲的有效資料可移動,則將該節點所描述的記憶體塊資訊與前一個節點所描述的記憶體塊資訊進行交換,並且將該前一個節點對應的記憶體塊中存儲的有效資料移動至該節點對應的記憶體塊中。
為解決上述技術問題,本發明採用的另一個技術方案是:提供一種嵌入式設備圖像記憶體管理裝置,包括:第一獲取模組,用於從圖像記憶體鏈表中獲取節點;第一判斷模組,用於判斷獲取模組獲取的節點對應的記憶體塊中是否有有效資料;第二判斷模組,用於當第一判斷模組判斷出第一獲取模組獲取的節點對應的記憶體塊中沒有有效資料時,再判斷該節點的前一個節點對應的記憶體塊中是否有有效資料;第三判斷模組,用於當第二判斷模組判斷出前一個節點對應的記憶體塊中有有效資料時,再判斷該有效資料是否可移動;交換模組,用於當第三判斷模組判斷出前一個節點對應的記憶體塊中存儲的有效資料可移動時,將前該節點所描述的記憶體塊資訊與前一個節點所描述的記憶體塊資訊進行交換,並且將前一個節點對應的記憶體塊中存儲的有效資料移動至該節點對應的記憶體塊中。
本發明通過從圖像記憶體鏈表獲取節點,如果檢測到非空閒節點對應的記憶體塊中存儲的有效資料是可以移動的,則通過將空閒節點描述的記憶體塊資訊和非空閒節點所描述的記憶體塊資訊進行交換,然後將非空閒節點對應的記憶體塊的有效資料移動到空閒節點對應的記憶體塊中,將空閒節點往鏈表的起始方向移動,將非空閒節點往鏈表末尾方向移動,最後移動後的空閒記憶體塊將位於圖像記憶體的起始位置;通過對圖像記憶體的記憶體碎片進行管理,將多個記憶體碎片都移動至圖像記憶體的起始位置,形成一個大的並且在物理上連續的空閒記憶體塊,從而當應用程式需要申請較大的記憶體塊時,能夠滿足申請要求。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式,作詳細說明如下:
參閱第2圖,本發明嵌入式設備圖像記憶體管理方法的實施例包括:201、獲取圖像記憶體鏈表中的倒數第一個節點;從圖像記憶體鏈表的倒數第一個節點開始獲取節點,首先獲取倒數第一個節點;202、判斷該節點是否為空;每獲取一個節點,首先判斷該節點是否是空節點,如果是空節點,則說明上一個獲取的節點是本圖像記憶體鏈表的倒數最後一個節點;如果節點為空節點,則執行步驟203;如果節點不為空節點,則執行步驟204;203、結束;如果步驟202中判斷出節點為空節點,說明已經將整個圖像記憶體鏈表整理完了,則流程結束;204、判斷該節點對應的記憶體塊中是否有有效資料;判斷該節點對應的記憶體塊中是否有有效資料,如果有有效資料,則執行步驟205;如果沒有有效資料,則執行步驟206;205、獲取前一個節點;如果步驟204中判斷出該節點對應的記憶體塊中有有效資料,則獲取該節點的前一個節點,然後返回步驟202,判斷本步驟中獲取的節點是否為空,如果不為空,則再執行步驟204判斷該節點對應的記憶體塊中是否有有效資料,依次迴圈,直至轉到步驟206,獲取到對應的記憶體塊中沒有有效資料的節點;206、獲取前一個節點;如果步驟204中判斷出該節點對應的記憶體塊中沒有有效資料,則獲取該節點的前一個節點;207、判斷該節點是否為空;判斷步驟206中獲取的前一個節點是否是空節點,如果是空節點,則說明上一個獲取的節點是本圖像記憶體鏈表的倒數最後一個節點,執行步驟203,結束流程;如果判斷出節點不為空節點,則執行步驟208;208、判斷該節點對應的記憶體塊中是否有有效資料;判斷該節點對應的記憶體塊中是否有有效資料,如果有有效資料,則執行步驟210;如果沒有有效資料,則執行步驟209;209、合併;將步驟201中獲取的節點或者步驟205中獲取的節點,與步驟206中獲取的節點合併,具體的:將步驟201中獲取的節點或者步驟205中獲取的節點的起始位址改為步驟206中獲取的節點的起始位址,並將步驟201中獲取的節點或者步驟205中獲取的節點指向前一個節點的指標改為指向步驟206中獲取的節點的前一個節點,並刪除步驟206中獲取的節點;或者,合併的步驟還可以為:將步驟206中獲取的節點的結束位址改為步驟201中獲取的節點或者步驟205中獲取的節點的結束位址,並將步驟206中獲取的節點指向下一個節點的指標改為指向步驟201中獲取的節點或者步驟205中獲取的節點的後一個節點,並刪除步驟201中獲取的節點或者步驟205中獲取的節點。
210、判斷該節點對應的記憶體塊是否為layer surface;判斷步驟206中獲取的節點對應的記憶體塊是否為layer surface,如果是layer surface,說明該節點對應的記憶體塊中存儲的有效資料是不能移動的,則返回步驟206,獲取前一個節點;如果判斷出步驟206中獲取的節點對應的記憶體塊不為layer surface,說明該節點對應的記憶體塊中存儲的有效資料是可以移動的,則執行步驟211;211、判斷該節點對應的記憶體塊是否被鎖定;如果記憶體塊正在被使用,則該記憶體塊是被鎖定的;如果記憶體塊被鎖定,那麼記憶體塊中存儲的有效資料是不能被移動的;如果判斷出步驟206中獲取的節點對應的記憶體塊是被鎖定的,則返回步驟206,獲取前一個節點;如果判斷出步驟206中獲取的節點對應的記憶體塊沒有被鎖定,說明該節點對應的記憶體塊中存儲的有效資料是可以移動的,則執行步驟212;212、判斷該節點對應的記憶體塊是否於最近一次被GPU訪問過;如果記憶體塊最近一次被GPU訪問過,有可能GPU還在使用該記憶體塊中存儲的資料,所以該記憶體塊中存儲的有效資料暫時還不能被移動,該記憶體塊中存儲的有效資料需要等待GPU訪問完成才能移動;判斷步驟206中獲取的節點對應的記憶體塊是否於最近一次被GPU訪問過,如果最近一次被GPU訪問過,則執行步驟213;如果最近一次沒有被GPU訪問過,則執行步驟214;213、等待GPU訪問完成;如果步驟212中判斷出步驟206中獲取的節點對應的記憶體塊最近一次被GPU訪問過,則等待GPU訪問完成;214、記憶體塊中存儲的資料交換;如果判斷出步驟206中獲取的節點對應的記憶體塊中存儲的有效資料可移動,則將步驟206中獲取的節點所描述的記憶體塊資訊與步驟201中獲取的節點或者步驟205中獲取的節點所描述的記憶體塊資訊進行交換,並且將步驟206中獲取的節點對應的記憶體塊中存儲的有效資料移動至步驟201中獲取的節點或者步驟205中獲取的節點對應的記憶體塊中;在執行完交換記憶體塊中存儲的資料的步驟後,再返回步驟206,獲取前一個節點,依次迴圈,直到判斷出獲取的節點為空節點,即將沒有有效資料的記憶體塊都移到圖像記憶體的前面部分。
需要進一步說明的是,在另外的實施例中,步驟210和步驟211的執行順序是可以互換的,即可以先執行步驟211,再執行步驟210。
例如有一個圖像記憶體被分成n個記憶體塊,分別為從block1至blockn,該圖像記憶體由一個對應的鏈表管理,鏈表中每個節點對應一個記憶體塊block,即block1至blockn分別對應第一節點至第n節點;如第3圖所示,具體的:首先從鏈表的末節點開始獲取節點,每次獲取節點都需要判斷該節點是否為空,來確認是否已經將鏈表中的節點取完了;例如先取末節點,即第一節點,第一節點對應block1,block1是有有效資料的,則獲取下一個節點,即第二節點,第二節點對應block2,block2是沒有有效資料的,即block2處於空閒狀態;然後獲取第三節點,第三節點對應block3,block3有有效資料,再判斷block3的有效資料是否是可移動的,如果判斷出block3既不是layer surface,也沒有被鎖定,並且也沒有最近一次被GPU訪問過,說明block3的有效資料是可以被移動的,則將block3的有效資料移動到block2中,具體的:先將第三節點所描述的記憶體塊資訊和第二節點所描述的記憶體塊資訊進行交換,然後將block3中的有效資料移動到block2中,如第3圖中的301所示;然後獲取下一個節點,即第四節點,第四節點不為空,再判斷出第四節點對應的block4中沒有有效資料,則將第二節點和第四節點合併成第二節點,具體的,將第二節點的起始位址改為第四節點的起始位址,將第二節點的上一個節點改為第四節點的上一個節點,即將第二個節點的上一個節點改為第五節點,然後刪除第四節點,如第3圖中302所示;然後獲取下一個節點,即第五節點,第五節點不為空,判斷出第五節點對應的block5中是有有效資料的,再判斷block5中存儲的有效資料是否可移動,具體的,如果判斷出block5既不是layer surface,也沒有被鎖定,但是block5最近一次被GPU訪問過,則需要等待GPU訪問完成,block5中存儲的有效資料才能被移動,在等待GPU訪問完成後,則將block5中存儲的有效資料移動到block2中,具體的:先將第五節點所描述的記憶體塊資訊和第二節點所描述的記憶體塊資訊進行交換,然後將block5中存儲的有效資料移動到block2中,如第3圖中的303所示;然後獲取下一個節點,即第六節點,第六節點不為空,再判斷出第六節點對應的block6中沒有有效資料,則將第二節點和第六節點合併成第二節點,具體的,將第二節點的起始位址改為第六節點的起始位址,將第二節點
的上一個節點改為第六節點的上一個節點,即將第二節點的上一個節點改為第七節點,然後刪除第六節點,如第3圖中304所示;如此迴圈,直到處理完鏈表中倒數最後一個節點,即當取到的節點為空節點時,說明已經處理完鏈表中倒數最後一個節點,結束流程。
在本實施例中,通過從鏈表的末尾開始往前遍曆圖像記憶體鏈表的節點,如果檢測到非空閒節點對應的記憶體塊中存儲的有效資料是可以移動的,則通過將空閒節點描述的記憶體塊資訊和非空閒節點所描述的記憶體塊資訊進行交換,然後將非空閒節點對應的記憶體塊中存儲的有效資料移動到空閒節點對應的記憶體塊中,將空閒節點往鏈表的起始方向移動,合併形成新的空閒節點,將非空閒節點往鏈表末尾方向移動,最後合併後的空閒記憶體塊將位於圖像記憶體的起始位置;通過對圖像記憶體的記憶體碎片進行管理,將多個碎片合併成一個大的並且在物理上連續的空閒記憶體塊,從而當應用程式需要申請較大的記憶體塊時,能夠滿足申請要求。
應用程式在申請記憶體時,如果沒有記憶體塊的大小能滿足該應用程式的要求,則需要利用上述實施例中的方法對記憶體碎片進行整理,具體流程如第4圖所示,具體的:401、應用程式申請記憶體塊;402、記憶體分配測試;在接收到應用程式的記憶體塊申請後,DirectFB首
先要對該申請進行記憶體分配測試,即測試當前是否有空閒的記憶體塊的大小能滿足該應用程式的要求,如果當前有空閒的記憶體塊的大小能滿足該應用程式的要求,則執行步驟405,如果當前沒有空閒的記憶體塊的大小能夠滿足該應用程式的要求,則執行步驟403;403、記憶體碎片整理;DirectFB對圖像記憶體的碎片進行整理,具體的整理流程如上述DirectFB記憶體管理方法的實施例中所示,此處不做贅述;對圖像記憶體的碎片進行整理後,執行步驟404;404、記憶體分配測試;當步驟403中對圖像記憶體的碎片進行整理後,再次進行記憶體分配測試,如果合併後的空閒記憶體塊的大小能夠滿足該應用程式的需要,則執行步驟405,如果合併後的空閒記憶體塊的大小不能夠滿足該應用程式的需要,則執行步驟406;405、執行記憶體分配;如果記憶體分配測試成功,則執行記憶體分配;406、記憶體分配失敗;如果記憶體分配測試失敗,則回饋給應用程式記憶體不夠的資訊;由於記憶體碎片的存在,使用越久,記憶體碎片越多,應用程式申請記憶體失敗的概率越大,從而導致程式執行中斷,通過本實施例提供的方法,在第一次記憶體分配測試失敗後,不馬上返回失敗的資訊,而是對記憶體碎
片進行整理,如果整理後的空閒記憶體塊的大小還是不能滿足應用程式的需要,才返回記憶體不夠的資訊,本實施例提供的分配記憶體的方法大大增加了應用程式能夠分配到記憶體的概率。
參閱第5圖,本發明嵌入式設備圖像記憶體管理裝置的實施例包括:第一獲取模組501,用於從圖像記憶體鏈表中獲取節點;第一判斷模組502,用於判斷獲取模組501獲取的節點對應的記憶體塊中是否有有效資料;第二判斷模組503,用於當第一判斷模組502判斷出第一獲取模組501獲取的節點對應的記憶體塊中沒有有效資料時,再判斷該節點的前一個節點對應的記憶體塊中是否有有效資料;第三判斷模組504,用於當第二判斷模組503判斷出該前一個節點對應的記憶體塊中有有效資料時,再判斷該有效資料是否可移動;交換模組505,用於當第三判斷模組504判斷出前一個節點對應的記憶體塊中存儲的有效資料可移動時,將該節點所描述的記憶體塊資訊與前一個節點所描述的記憶體塊資訊進行交換,並且將該前一個節點對應的記憶體塊中存儲的有效資料移動至該節點對應的記憶體塊中;本實施例中的裝置還包括:第二獲取模組506,用於當第一判斷模組502判斷出該節點對應的記憶體塊中有有效資料時,獲取該節點的前
一個節點,然後由第二判斷模組503判斷該前一個節點對應的記憶體塊中是否有有效資料,直至圖像記憶體鏈表的第一個節點;第二獲取模組506還用於當第一判斷模組502判斷出該節點對應的記憶體塊中沒有有效資料,第二判斷模組503判斷出該前一個節點對應的記憶體塊中有有效資料,且第三判斷模組504判斷出該前一個節點描述的記憶體塊中存儲的有效資料不可移動時,獲取該前一個節點的前一個節點,然後由第二判斷模組503判斷該獲取的節點對應的記憶體塊中是否有有效資料,直至圖像記憶體鏈表的第一個節點;第三判斷模組504包括:第一判斷單元,用於判斷獲取的節點的前一個節點對應的記憶體塊是否為layer surface,如果該前一個節點對應的記憶體塊為layer surface,則該前一個節點對應的記憶體塊中存儲的有效資料不能移動;第二判斷單元,用於當第一判斷單元判斷出該前一個節點對應的記憶體塊不為layer surface時,再判斷該前一個節點對應的記憶體塊是否處於鎖定狀態,如果該前一個節點對應的記憶體塊處於鎖定狀態,則該前一個節點對應的記憶體塊中存儲的有效資料不能移動;第三判斷單元,用於當第一判斷單元判斷出該前一個節點對應的記憶體塊不為layer surface,第二判斷單元判斷出該前一個節點對應的記憶體塊沒處於鎖定狀態時,再判斷該前一個節點對應的記憶體塊是否於最近一次
被GPU訪問過,如果該前一個節點對應的記憶體塊最近一次被GPU訪問過,則該前一個節點對應的記憶體塊中存儲的有效資料需要等待GPU訪問完成才能被移動;本實施例中的裝置還包括:合併模組507,用於當第二判斷模組判斷出獲取的節點的前一個節點沒有有效資料時,將該節點和該前一個節點合併;具體的,合併模組507包括:合併單元,用於將該節點的起始位址改為該前一個節點的起始位址,並將該節點指向前一個節點的指標改為指向該前一個節點的前一個節點;該合併單元還用於將前一個節點的結束位址改為該節點的結束位址,並將前一個節點指向下一個節點的指標改為指向該節點的後一個節點;刪除單元,用於刪除節點;在本實施例中,通過從鏈表的末尾開始往前遍曆圖像記憶體鏈表的節點,如果檢測到非空閒節點對應的記憶體塊中存儲的有效資料是可以移動的,則通過將空閒節點描述的記憶體塊資訊和非空閒節點所描述的記憶體塊資訊進行交換,然後將非空閒節點對應的記憶體塊中存儲的有效資料移動到空閒節點對應的記憶體塊中,將空閒節點往鏈表的起始方向移動,合併形成新的空閒節點,將非空閒節點往鏈表末尾方向移動,最後合併後的空閒記憶體塊將位於圖像記憶體的起始位置;通過對圖像記憶體的記憶體碎片進行管理,將多個碎片合併成一個大的並且在物理上連續的空閒記憶體塊,從而當應用程式需要申請較大的記
憶體塊時,能夠滿足申請要求。
本發明實施例中對嵌入式設備圖像記憶體管理方法以及嵌入式設備圖像記憶體管理裝置的描述,是基於DirectFB技術進行描述的,當然,本發明所體現的思想還可以適用於嵌入式設備圖像記憶體管理方面的其他技術,此處不做限制。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
201~214、301~304、401~406、‧‧‧
501‧‧‧第一獲取模組
502‧‧‧第一判斷模組
503‧‧‧第二判斷模組
504‧‧‧第三判斷模組
505‧‧‧交換模組
506‧‧‧第二獲取模組
507‧‧‧合併模組
第1圖是現有技術中相鄰的空閒記憶體塊合併的示意圖。
第2圖是本發明實施例圖像記憶體管理方法的資料流程圖。
第3圖是本發明實施例圖像記憶體管理方法的應用場景示意圖。
第4圖是本發明實施例圖像記憶體管理方法在實際應用中的資料流程圖。
第5圖是本發明實施例圖像記憶體管理裝置的邏輯結構示意圖。
201~214...步驟
Claims (16)
- 一種嵌入式設備圖像記憶體管理方法,其特徵在於,包括:從圖像記憶體鏈表中獲取節點;判斷所述節點對應的記憶體塊中是否有有效資料;如果所述節點對應的記憶體塊中沒有有效資料,則判斷所述節點的前一個節點對應的記憶體塊中是否有有效資料;如果所述前一個節點對應的記憶體塊中有有效資料,則判斷所述有效資料是否可移動;如果所述前一個節點對應的記憶體塊中存儲的有效資料可移動,則將所述節點所描述的記憶體塊資訊與所述前一個節點所描述的記憶體塊資訊進行交換,並且將所述前一個節點對應的記憶體塊中存儲的有效資料移動至所述節點對應的記憶體塊中;其中,所述記憶體塊資訊包括記憶體塊的起始位址、記憶體塊是否有有效資料、記憶體塊是否為層面(layer surface)、記憶體塊是否被鎖定、以及記憶體塊是否於最近一次被圖形處理器(GPU)訪問過。
- 如申請專利範圍第1項所述之方法,其中所述從圖像記憶體鏈表中獲取節點的步驟具體為:從圖像記憶體鏈表中倒數第一個節點開始獲取節點。
- 如申請專利範圍第1項所述之方法,其中所述判斷所述節點對應的記憶體塊中是否有有效資料的步驟之後還包括: 如果所述節點描述的記憶體塊中有有效資料,則繼續獲取所述節點的前一個節點,然後執行判斷所述前一個節點對應的記憶體塊中是否有有效資料的步驟,直至所述圖像記憶體鏈表的第一個節點。
- 如申請專利範圍第3項所述之方法,其中所述判斷所述前一個節點對應的記憶體塊中存儲的有效資料是否可移動的步驟之後還包括:如果所述前一個節點對應的記憶體塊中存儲的有效資料不可移動,則繼續獲取所述前一個節點的前一個節點,並執行判斷該獲取的節點對應的記憶體塊中是否有有效資料的步驟,直至所述圖像記憶體鏈表的第一個節點。
- 如申請專利範圍第4項所述之方法,其中所述判斷前一個節點對應的記憶體塊中存儲的有效資料是否可移動的步驟包括:判斷所述前一個節點對應的記憶體塊是否為層面(layer surface),如果所述前一個節點對應的記憶體塊為layer surface,則所述前一個節點對應的記憶體塊中存儲的有效資料不能移動;如果所述前一個節點對應的記憶體塊不是layer surface,則再判斷所述前一個節點對應的記憶體塊是否處於鎖定狀態,如果所述前一個節點對應的記憶體塊處於鎖定狀態,則所述前一個節點對應的記憶體塊中存儲的有效資料不能移動。
- 如申請專利範圍第5項所述之方法,更包括:如果所述前一個節點對應的記憶體塊沒處於鎖定狀 態,則再判斷所述前一個節點對應的記憶體塊是否於最近一次被圖形處理器(GPU)訪問過,如果所述前一個節點對應的記憶體塊最近一次被GPU訪問過,則等待GPU訪問完成後,執行所述將該節點所描述的記憶體塊資訊與所述前一個節點所描述的記憶體塊資訊進行交換,並且將所述前一個節點對應的記憶體塊中存儲的有效資料移動至所述節點對應的記憶體塊中的步驟。
- 如申請專利範圍第6項所述之方法,其中所述判斷所述前一個節點是否有有效資料的步驟之後還包括:如果所述前一個節點沒有有效資料,則將所述節點和所述前一個節點合併。
- 如申請專利範圍第7項所述之方法,其中所述將該節點和所述前一個節點合併的步驟包括:將所述節點的起始位址改為所述前一個節點的起始位址,並將所述節點指向前一個節點的指標改為指向所述前一個節點的前一個節點,並刪除所述前一個節點。
- 如申請專利範圍第7項所述之方法,其中所述將該節點和所述前一個節點合併的步驟包括:將所述前一個節點的結束位址改為所述節點的結束位址,並將所述前一個節點指向下一個節點的指標改為指向所述節點的下一個節點,並刪除所述節點。
- 一種嵌入式設備圖像記憶體管理裝置,包括:第一獲取模組,用於從圖像記憶體鏈表中獲取節點;第一判斷模組,用於判斷所述獲取模組獲取的節點對應的記憶體塊中是否有有效資料; 第二判斷模組,用於當所述第一判斷模組判斷出第一獲取模組獲取的節點對應的記憶體塊中沒有有效資料時,再判斷所述節點的前一個節點對應的記憶體塊中是否有有效資料;第三判斷模組,用於當所述第二判斷模組判斷出所述前一個節點對應的記憶體塊中有有效資料時,再判斷所述有效資料是否可移動;交換模組,用於當所述第三判斷模組判斷出所述前一個節點對應的記憶體塊中存儲的有效資料可移動時,將所述節點所描述的記憶體塊資訊與所述前一個節點所描述的記憶體塊資訊進行交換,並且將所述前一個節點對應的記憶體塊中存儲的有效資料移動至所述節點對應的記憶體塊中;其中,所述記憶體塊資訊包括記憶體塊的起始位址、記憶體塊是否有有效資料、記憶體塊是否為層面(layer surface)、記憶體塊是否被鎖定、以及記憶體塊是否於最近一次被圖形處理器(GPU)訪問過。
- 如申請專利範圍第10項所述之裝置,更包括:第二獲取模組,用於當所述第一判斷模組判斷出所述節點對應的記憶體塊中有有效資料時,獲取所述節點的前一個節點,然後由第二判斷模組判斷所述前一個節點對應的記憶體塊中是否有有效資料,直至所述圖像記憶體鏈表的第一個節點。
- 如申請專利範圍第11項所述之裝置,其中所述第二獲取模組還用於當所述第一判斷模組判斷出所述節 點對應的記憶體塊中沒有有效資料,而第二判斷模組判斷出所述前一個節點對應的記憶體塊中有有效資料,且第三判斷模組判斷出所述前一個節點描述的記憶體塊中存儲的有效資料不可移動時,獲取所述前一個節點的前一個節點,然後由第二判斷模組判斷該獲取的節點對應的記憶體塊中是否有有效資料,直至所述圖像記憶體鏈表的第一個節點。
- 如申請專利範圍第12項所述之裝置,其中所述第三判斷模組包括:第一判斷單元,用於判斷所述前一個節點對應的記憶體塊是否為layer surface,如果所述前一個節點對應的記憶體塊為layer surface,則所述前一個節點對應的記憶體塊中存儲的有效資料不能移動;第二判斷單元,用於當第一判斷單元判斷出所述前一個節點對應的記憶體塊不為layer surface時,再判斷所述前一個節點對應的記憶體塊是否處於鎖定狀態,如果所述前一個節點對應的記憶體塊處於鎖定狀態,則所述前一個節點對應的記憶體塊中存儲的有效資料不能移動;第三判斷單元,用於當第一判斷單元判斷出所述前一個節點對應的記憶體塊不為layer surface,而第二判斷單元判斷出所述前一個節點對應的記憶體塊沒處於鎖定狀態時,再判斷所述前一個節點對應的記憶體塊是否於最近一次被GPU訪問過,如果所述前一個節點對應的記憶體塊最近一次被GPU訪問過,則所述前一個節點對應的記憶體塊中存儲的有效資料需要等待GPU訪問完成才能被移 動。
- 如申請專利範圍第13項所述之裝置,更包括:合併模組,用於當第二判斷模組判斷出所述前一個節點沒有有效資料時,將所述節點和所述前一個節點合併。
- 如申請專利範圍第14項所述之裝置,其特徵在於,所述合併模組包括:合併單元,用於將所述節點的起始位址改為所述前一個節點的起始位址,並將所述節點指向前一個節點的指標改為指向所述前一個節點的前一個節點;刪除單元,用於刪除節點。
- 如申請專利範圍第15項所述之裝置,其中所述合併單元還用於將所述前一個節點的結束位址改為所述節點的結束位址,並將所述前一個節點指向下一個節點的指標改為指向所述節點的後一個節點。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102627108A CN102279808A (zh) | 2011-09-06 | 2011-09-06 | 一种嵌入式设备图像内存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201312354A TW201312354A (zh) | 2013-03-16 |
TWI451253B true TWI451253B (zh) | 2014-09-01 |
Family
ID=45105267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100141685A TWI451253B (zh) | 2011-09-06 | 2011-11-15 | 嵌入式設備圖像記憶體管理方法及裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9176857B2 (zh) |
CN (1) | CN102279808A (zh) |
TW (1) | TWI451253B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140351530A1 (en) * | 2013-05-22 | 2014-11-27 | International Business Machines Corporation | Linked list for lock-free memory allocation |
US10491667B1 (en) * | 2015-03-16 | 2019-11-26 | Amazon Technologies, Inc. | Customized memory modules in multi-tenant service provider systems |
CN110908926B (zh) | 2018-09-14 | 2022-03-22 | 慧荣科技股份有限公司 | 数据储存装置及逻辑至物理地址映射表的写入方法 |
TWI715116B (zh) * | 2018-09-14 | 2021-01-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其刪除命名空間之方法 |
CN109815162A (zh) * | 2019-01-28 | 2019-05-28 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
CN112988609B (zh) * | 2019-12-02 | 2023-05-02 | 杭州海康机器人股份有限公司 | 数据处理方法、装置、存储介质和客户端 |
CN111897493B (zh) * | 2020-07-15 | 2023-03-10 | 杭州海康威视系统技术有限公司 | 存储空间管理方法、装置及电子设备、存储介质 |
CN113296961B (zh) * | 2021-07-22 | 2021-11-19 | 广州中望龙腾软件股份有限公司 | 基于gpu的内存动态分配方法、装置及内存链表 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555405A (en) * | 1993-07-06 | 1996-09-10 | Digital Equipment Corporation | Method and apparatus for free space management in a forwarding database having forwarding entry sets and multiple free space segment queues |
CN101320351A (zh) * | 2008-06-27 | 2008-12-10 | 华中科技大学 | 内存的分配、清理和释放方法及内存管理的装置 |
TW200951715A (en) * | 2008-03-01 | 2009-12-16 | Toshiba Kk | Memory system |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5394537A (en) * | 1989-12-13 | 1995-02-28 | Texas Instruments Incorporated | Adaptive page placement memory management system |
US6047280A (en) * | 1996-10-25 | 2000-04-04 | Navigation Technologies Corporation | Interface layer for navigation system |
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
US6088777A (en) * | 1997-11-12 | 2000-07-11 | Ericsson Messaging Systems, Inc. | Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages |
US6701420B1 (en) * | 1999-02-01 | 2004-03-02 | Hewlett-Packard Company | Memory management system and method for allocating and reusing memory |
EP1419444A1 (en) * | 2001-08-15 | 2004-05-19 | Koninklijke Philips Electronics N.V. | Memory pools with moving memory blocks |
US20080008202A1 (en) * | 2002-10-31 | 2008-01-10 | Terrell William C | Router with routing processors and methods for virtualization |
CN1276361C (zh) * | 2003-12-29 | 2006-09-20 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
US20060259657A1 (en) * | 2005-05-10 | 2006-11-16 | Telairity Semiconductor, Inc. | Direct memory access (DMA) method and apparatus and DMA for video processing |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US20100030994A1 (en) * | 2008-08-01 | 2010-02-04 | Guzman Luis F | Methods, systems, and computer readable media for memory allocation and deallocation |
CN101673246A (zh) * | 2009-08-06 | 2010-03-17 | 深圳市融创天下科技发展有限公司 | 一种高效的先进先出数据池读写方法 |
-
2011
- 2011-09-06 CN CN2011102627108A patent/CN102279808A/zh active Pending
- 2011-11-15 TW TW100141685A patent/TWI451253B/zh not_active IP Right Cessation
-
2012
- 2012-08-14 US US13/585,022 patent/US9176857B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555405A (en) * | 1993-07-06 | 1996-09-10 | Digital Equipment Corporation | Method and apparatus for free space management in a forwarding database having forwarding entry sets and multiple free space segment queues |
TW200951715A (en) * | 2008-03-01 | 2009-12-16 | Toshiba Kk | Memory system |
CN101320351A (zh) * | 2008-06-27 | 2008-12-10 | 华中科技大学 | 内存的分配、清理和释放方法及内存管理的装置 |
Also Published As
Publication number | Publication date |
---|---|
US20130061017A1 (en) | 2013-03-07 |
CN102279808A (zh) | 2011-12-14 |
TW201312354A (zh) | 2013-03-16 |
US9176857B2 (en) | 2015-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI451253B (zh) | 嵌入式設備圖像記憶體管理方法及裝置 | |
WO2016086819A1 (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
EP3217248B1 (en) | Method and system for writing data | |
CN106548789B (zh) | 用于操作叠瓦式磁记录设备的方法和装置 | |
US10860494B2 (en) | Flushing pages from solid-state storage device | |
US8533397B2 (en) | Improving performance in a cache mechanism by way of destaging data in partial strides | |
CN109725842B (zh) | 加速随机写入布局以用于混合存储系统内的桶分配的系统和方法 | |
US20100174865A1 (en) | Dynamic data security erasure | |
US20200133875A1 (en) | Method, apparatus and computer program product for managing data access | |
JP2014513338A5 (ja) | 仮想ディスクの最適圧縮のための方法、コンピュータ可読記憶媒体及びシステム | |
US20150095589A1 (en) | Cache memory system and operating method for the same | |
US11954346B2 (en) | Using multi-stream storage devices in log structured storage system | |
EP3865992A2 (en) | Distributed block storage system, method, apparatus and medium | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
CN115904255B (zh) | 一种数据请求方法、装置、设备及存储介质 | |
JP2013077074A (ja) | ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法 | |
Li et al. | Leveraging NVMe SSDs for building a fast, cost-effective, LSM-tree-based KV store | |
US10552049B2 (en) | Method and apparatus for managing data access | |
CN109213423A (zh) | 基于地址屏障无锁处理并发io命令 | |
JP6442996B2 (ja) | トランザクション処理装置、トラザクション処理方法、及びプログラム | |
CN110083314A (zh) | 一种逻辑卷删除方法、系统及相关装置 | |
CN115237330A (zh) | 用于raid重建的方法、电子设备和程序产品 | |
CN113934362A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN109992217A (zh) | 一种服务质量控制方法、装置、电子设备和存储介质 | |
WO2023060884A1 (zh) | 一种数据系统、数据访问方法、装置及数据处理单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |