两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于親和性感知的dma緩沖區(qū)管理方法及裝置的制作方法

文檔序號:6366752閱讀:136來源:國知局
專利名稱:基于親和性感知的dma緩沖區(qū)管理方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及到計算機系統(tǒng)的內(nèi)存管理方法,一種基于親和性感知的DMA緩沖區(qū)管理方法及裝置。
背景技術(shù)
外設(shè)的輸入輸出各需要經(jīng)歷4個步驟。輸入的4個步驟是(I)將數(shù)據(jù)從外設(shè)復(fù)制到內(nèi)核空間。如果沒有提供DMA (direct memory access)方式,貝1J復(fù)制操作由CPU執(zhí)行,數(shù)據(jù)將兩次經(jīng)過存儲總線;(2)對數(shù)據(jù)進行校驗和計算,此操作涉及到所有的傳輸數(shù)據(jù),數(shù)據(jù)將再次經(jīng)過存儲總線;(3)將數(shù)據(jù)從內(nèi)核復(fù)制到用戶空間,此操作必須由CPU執(zhí)行,數(shù)據(jù)跨越內(nèi)核與用戶空間,經(jīng)過兩次存儲總線;(4)應(yīng)用從用戶空間獲取數(shù)據(jù)。與接收過程相對,輸出也需要類似的4個步驟。顯然,在整個輸入/輸出過程中,數(shù)據(jù)最多會6次經(jīng)過存儲總線,存儲總線需要提供6倍于I/O數(shù)據(jù)流的帶寬。隨著片上多處理器系統(tǒng)的普及,多個線程會共享使用片上Cache資源,包括應(yīng)用程序和內(nèi)核線程,其中I/O處理屬于典型的內(nèi)核線程。但是傳統(tǒng)的最近最少使用(LRU)的Cache替換策略并不能區(qū)分不同線程的訪問,因此一個線程的Cache失效可能會替換屬于另一個線程的Cache塊,該問題被稱為線程間干擾。為了減少線程間的干擾,相關(guān)工作使用親和性描述數(shù)據(jù)的分布與訪存性能的關(guān)系。進程在包含其所需數(shù)據(jù)的處理器上運行,能減少數(shù)據(jù)在處理器之間的流動,提高處理器的訪存效率,即數(shù)據(jù)在存儲層次中的位置決定了訪存的開銷。特別是在近幾年高速帶寬和設(shè)備的出現(xiàn),系統(tǒng)含有大量用于處理I/O的線程,其與應(yīng)用程序并行執(zhí)行。因此,Cache的干擾問題不僅僅局限于應(yīng)用程序之間,在I/O和應(yīng)用之間同樣會存在Cache干擾的問題。由于I/O的數(shù)據(jù)重用度較低,并且每次外設(shè)進行I/O時,Cache中的部分數(shù)據(jù)會因替換而寫回主存。一旦設(shè)備I/O的過程結(jié)束,被寫回的數(shù)據(jù)需要再次被使用時,又需要從主存中讀取。因此,針對處理器中各個線程間共享的存儲資源,特別是對于資源受限和設(shè)計較為簡單的嵌入式系統(tǒng),需要借助操作系統(tǒng)來管理資源,更需要從軟件的角度提供一種改進的內(nèi)存管理方法,方法的靈活性和通用性,從而實現(xiàn)對系統(tǒng)性能的優(yōu)化。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提出一種基于親和性感知的DMA緩沖區(qū)管理方法及裝置,解決如何減少I/o處理過程引入的偏外存儲訪問,包含兩個方面1.)降低I/O處理過程自身的訪存開銷;2.)緩解I/O處理過程引入的Cache污染問題。本發(fā)明所采用的技術(shù)方案為一種基于親和性感知的DMA緩沖區(qū)管理方法,包括以親和性的高低將緩沖區(qū)分為兩類,并確定不同I/O處理過程對緩沖區(qū)親和性的需求。并 使用純軟件的手段,在操作系統(tǒng)層來標識緩沖區(qū)的親和性。具體的說,以輸出處理過程的特點來標識低親和性緩沖區(qū),具體包括輸出過程中,由于一致性維護操作后,處理器不再訪問輸出緩沖區(qū),所以將最近釋放的輸出緩沖區(qū)記錄為低親和性。以輸入處理過程的特點來標識高親和性緩沖區(qū),具體包括當輸入過程中,緩沖區(qū)釋放前,處理器需要將輸入緩沖區(qū)中的數(shù)據(jù)拷貝到用戶緩沖區(qū),所以將最近釋放的輸入緩沖區(qū)標識為高親和性。將不同親和性的緩沖區(qū)集中管理,具體包括所有最近被釋放的低親和性緩沖區(qū)存放于低親和性鏈表中,最近被釋放的高親和性緩沖區(qū)存放于高親和性鏈表中。針對不同親和性的緩沖區(qū)采用不同的管理策略,具體包括對于高親和性的緩沖區(qū)采用先進先出的管理策略,使高親和性的緩沖區(qū)能盡快被重用,避免高親和性緩沖區(qū)中的數(shù)據(jù)被擠出Cache ;對于低親和性的緩沖區(qū)采用后進先出的管理策略,使推遲低親和性緩沖區(qū)被重用的時機,保證緩沖區(qū)中盡可能多的數(shù)據(jù)位于Cache之外。
同時,本發(fā)明還提供了一種基于親和性感知的DMA緩沖區(qū)管理裝置,包括緩沖區(qū)親和性分析模塊,緩沖區(qū)收集模塊和緩沖區(qū)管理模塊,其中緩沖區(qū)親和性分析模塊,用于分析系統(tǒng)中緩沖區(qū)親和性的高低;高親和性的緩沖區(qū)中的數(shù)據(jù)會大量占據(jù)Cache資源;而親和性低的緩沖區(qū)中的數(shù)據(jù)會大量位于Cache之外;該模塊將被釋放緩沖區(qū)的親和性信息傳遞給緩沖區(qū)收集模塊;緩沖區(qū)收集模塊,用于收集被標了親和性的緩沖區(qū);其中高親和性和低親和性的緩沖區(qū)被分開存放,分別保存于兩個不同的鏈表中,便于后續(xù)分配緩沖區(qū)時能夠快速定位不同親和性的緩沖區(qū);緩沖區(qū)收集模塊將鏈表中是否含有對應(yīng)緩沖區(qū)的信息傳遞給緩沖區(qū)分配模塊,供后續(xù)的分配過程進行決策;緩沖區(qū)管理模塊,用于給不同的I/O處理過程分配對應(yīng)的緩沖區(qū);其中,給輸出過程分配親和性較高的緩沖區(qū),減少I/o處理過程的偏外存儲訪問;給輸入過程分配親和性較低的緩沖區(qū),減少一致性維護操作的開銷。本發(fā)明所述緩沖區(qū)管理模塊包括低親和性緩沖區(qū)管理單元和高親和性緩沖區(qū)管理單元,其中輸入緩沖區(qū)分配單元,用于給輸入過程分配緩沖區(qū);對于輸入過程,由對應(yīng)的設(shè)備驅(qū)動程序向內(nèi)存管理器提出分配請求,因此所有在驅(qū)動程序中分配的DMA緩沖區(qū)可以被標識為輸入緩沖區(qū);在分配輸入緩沖區(qū)時,如果LAL鏈表非空,直接從該鏈表頭部獲取緩沖區(qū);否則,使用默認的分配函數(shù)獲取函數(shù);在釋放輸入緩沖區(qū)時,如果HAL鏈表非滿,將緩沖區(qū)插入鏈表頭部;否則,使用默認的函數(shù)釋放緩沖區(qū);輸出緩沖區(qū)分配單元,用于給輸出過程分配緩沖區(qū);對于輸出過程,在驅(qū)動程序以外的范圍內(nèi)申請的DMA緩沖區(qū)可以被標識為輸出緩沖區(qū);在分配輸入緩沖區(qū)時,如果HAL鏈表非空,直接從該鏈表頭部獲取緩沖區(qū);否則,使用默認的分配函數(shù)獲取函數(shù);在釋放輸入緩沖區(qū)時,如果LAL鏈表非滿,將緩沖區(qū)插入鏈表尾部;否則,使用默認的函數(shù)釋放緩沖區(qū)。本發(fā)明的有益效果是將親和性的概念引入到DMA緩沖區(qū)的管理中,通過操作系統(tǒng)實時追蹤緩沖區(qū)的親和性,即明確緩沖區(qū)中的數(shù)據(jù)在存儲層次中的分布狀況。根據(jù)輸入/輸出過程的特征分配不同特性的緩沖區(qū)。對于輸入過程,分配親和性低的緩沖區(qū),減少軟件維護I/O數(shù)據(jù)一致性的開銷;對于輸出過程,分配親和性高的緩沖區(qū),在用戶態(tài)緩沖區(qū)向內(nèi)核態(tài)緩沖區(qū)拷貝數(shù)據(jù)時,使得處理器的訪存能直接在Cache中命中,避免從主存中讀回數(shù)據(jù),同時由于沒有數(shù)據(jù)被替換出Cache,因此也不需要將數(shù)據(jù)寫回。本發(fā)明完全工作在系統(tǒng)軟件層,直接操作系統(tǒng)系統(tǒng)提供的信息來追蹤緩沖區(qū)的親和性,既不依賴特殊的底層硬件,也不需要使用模擬器來來收集處理器的訪存序列,同時避免使用LRU Stack模型引入的較大開銷。


下面結(jié)合附圖和實施例對本發(fā)明進一步說明。圖I為基于親和性感知的DMA緩沖區(qū)管理方法的實施方法; 圖2為本發(fā)明標識緩沖區(qū)親和性方法的示意圖;圖3是本發(fā)明的輸出緩沖區(qū)分配的示意圖;圖4是本發(fā)明的輸入緩沖區(qū)分配的示意圖;圖5是本發(fā)明的基于親和性感知的DMA緩沖區(qū)管理裝置實施例的結(jié)構(gòu)示意圖。
具體實施例方式現(xiàn)在結(jié)合附圖和優(yōu)選實施例對本發(fā)明作進一步詳細的說明。這些附圖均為簡化的示意圖,僅以示意方式說明本發(fā)明的基本結(jié)構(gòu),因此其僅顯示與本發(fā)明有關(guān)的構(gòu)成。本發(fā)明利用I/O處理過程中處理器訪存和一致性維護操作的時機,追蹤緩沖區(qū)的親和性。通過修改操作系統(tǒng)的內(nèi)存分配器,使用兩個鏈表分別管理親和性不同的緩沖區(qū)。對于不同的I/O處理過程,分別向?qū)?yīng)的鏈表中申請緩沖區(qū)。本發(fā)明提供的基于親和性感知的DMA緩沖區(qū)管理方法實例,其流程如圖2所示,包括如下步驟110 :根據(jù)I/O處理過程中處理器訪存和一致性維護操作的時機,標識最近釋放的DMA緩沖區(qū)的親和性。為了明確緩沖區(qū)的親和性,需要知道緩沖區(qū)當中數(shù)據(jù)在存儲層次中的分布。本發(fā)明基于I/o處理過程的特征來追蹤緩沖區(qū)的親和性,如圖2所示。對于輸入過程,由于輸出過程結(jié)束前,操作系統(tǒng)需要在內(nèi)核態(tài)和用戶態(tài)緩沖區(qū)之間拷貝I/O數(shù)據(jù)。因此,最近被釋放的輸入緩沖區(qū)能夠暫時維持較高的親和性。對于輸出過程,一旦操作系統(tǒng)完成一致性維護操作后,知道緩沖區(qū)被釋放處理器都不會讀寫緩沖區(qū)中的數(shù)據(jù),因此輸出緩沖區(qū)能夠維持較低的親和性。120 :將不同的親和性的緩沖區(qū)集中管理,以便后續(xù)的分配過程能夠快速獲取對應(yīng)的緩沖區(qū)。本發(fā)明使用兩個鏈表來存放被釋放的緩沖區(qū)。HAL(High Affinity List)存放接收過程釋放的緩沖區(qū),LAL(Low Affinity List)存放發(fā)送過程釋放的緩沖區(qū),并且鏈表分別包含頭指針和尾指針。130:根據(jù)不同的輸入/輸出過程,從對應(yīng)的鏈表中獲取不同親和性的緩沖區(qū)。本發(fā)明分別為兩個鏈表添加對應(yīng)的分配和釋放函數(shù)Alloc_in_HAL、Alloc_in_LAL、Free_to_HAL和Free_to_LAL。前兩個函數(shù)負責(zé)在對應(yīng)的鏈表中申請緩沖區(qū),后兩個函數(shù)將緩沖區(qū)插入對應(yīng)鏈表。操作系統(tǒng)不能無止境地向鏈表中填充緩沖區(qū),特別是在發(fā)送和接收的數(shù)據(jù)量不均衡的情況下,會占用大量的內(nèi)存資源,甚至導(dǎo)致OS無法為應(yīng)用程序分配物理內(nèi)存。因此,本文對HAL和LAL的長度進行了限制,二者的最大長度均為2048。如圖3 所示,表示輸出過程DMA緩沖區(qū)分配和釋放實例各步驟中的具體實施步驟,包括310 :分配輸出緩沖區(qū)。根據(jù)HAL鏈表的狀態(tài)判斷是否能獲取親和性高的緩沖區(qū);如果HAL不為空,直接從HAL鏈表的頭部獲取緩沖區(qū);否則,通過系統(tǒng)默認的內(nèi)存分配函數(shù)獲取緩沖區(qū)。320 :數(shù)據(jù)拷貝。由操作系統(tǒng)將I/O數(shù)據(jù)從用戶緩沖區(qū)拷貝至DMA緩沖區(qū)。330 :一致性維護。有操作系統(tǒng)進行I/O —致性維護操作,將I/O數(shù)據(jù)寫回到主存,保證DMA緩沖區(qū)中的數(shù)據(jù)在存儲層次中只有一個數(shù)據(jù)副本。這使得外設(shè)能夠獲取最近被修改的I/O數(shù)據(jù)。340 :將數(shù)據(jù)寫入外設(shè)。由驅(qū)動程序觸發(fā)DMA操作,DMA將緩沖區(qū)中的I/O數(shù)據(jù)搬移到外設(shè)。350 :釋放輸出緩沖區(qū)。根據(jù)LAL鏈表的狀態(tài)決定緩沖區(qū)釋放后所屬的位置。如果釋放時,LAL鏈表未滿,緩沖區(qū)插入LAL鏈表的尾部;否則,調(diào)用默認的內(nèi)存釋放函數(shù)。當緩沖區(qū)被插入LAL鏈表時,在頭一個字中記錄輸出數(shù)據(jù)的字節(jié)數(shù)(記為output_data_size)。由于這部分數(shù)據(jù)經(jīng)過一致性維護操作后不會存在與Cache中,因此該緩沖區(qū)下一次作為輸入緩沖區(qū)使用時,可以跳過對前output_data_size個字節(jié)的一致性維護操作。如圖4所示,表示輸入過程DMA緩沖區(qū)分配和釋放實例各步驟中的具體實施步驟,包括410 :分配輸入緩沖區(qū)。根據(jù)LAL鏈表的狀態(tài)判斷是否能獲取親和性低的緩沖區(qū);如果LAL不為空,直接從LAL鏈表的頭部獲取緩沖區(qū);否則,通過系統(tǒng)默認的內(nèi)存分配函數(shù)獲取緩沖區(qū)。420 :一致性維護。由操作系統(tǒng)進行I/O —致性維護操作,對緩沖區(qū)中的I/O數(shù)據(jù)進行Cache Invalidate操作,避免緩沖區(qū)中的數(shù)據(jù)在Cache和主存中出現(xiàn)不一致。430 :將數(shù)據(jù)寫入主存。由驅(qū)動程序觸發(fā)DMA操作,DMA將外設(shè)中的數(shù)據(jù)寫入到DMA緩沖區(qū)。440:數(shù)據(jù)拷貝。處理器將DMA緩沖區(qū)中的數(shù)據(jù)拷貝到用戶緩沖區(qū)。450 :釋放輸入緩沖區(qū)。根據(jù)HAL鏈表的狀態(tài)決定緩沖區(qū)釋放后所屬的位置。如果釋放時,HAL鏈表未滿,緩沖區(qū)插入HAL鏈表的頭部;否則,調(diào)用默認的內(nèi)存釋放函數(shù)。本發(fā)明通過I/O處理過程的特征,實時追蹤被釋放緩沖區(qū)的親和性,無需特殊硬件或代碼插樁,保證了整個優(yōu)化過程的低開銷。另外通過兩個獨立的鏈表管理最近被釋放的緩沖區(qū),使得被釋放的緩沖區(qū)盡快被重用。例如,DMA緩沖區(qū)被釋放后,緩沖區(qū)中的數(shù)據(jù)不回再被重用,即無用的數(shù)據(jù)占據(jù)了 Cache行。通過傳統(tǒng)隨機分配DMA緩沖區(qū)的方式,會使數(shù)據(jù)占據(jù)其它包含有效數(shù)據(jù)的Cache行,導(dǎo)致重用度高的數(shù)據(jù)被替換。通過集中管理緩沖區(qū),被釋放的緩沖區(qū)能立即在下一次I/O處理過程中被再次使用,即后續(xù)的I/O數(shù)據(jù)使用之前包含無效數(shù)據(jù)的Cache行,緩解I/O處理過程帶來的Cache污染。本發(fā)明根據(jù)上述方法實施例,相應(yīng)地還提供了一種基于親和性感知的DMA緩沖區(qū)管理裝置實施例,包括相互連接的緩沖區(qū)親和性分析模塊,緩沖區(qū)收集模塊,緩沖區(qū)管理模塊,其中緩沖區(qū)親和性分析模塊,用于分析系統(tǒng)中緩沖區(qū)親和性的高低。高親和性的緩沖區(qū)中的數(shù)據(jù)會大量占據(jù)Cache資源;而親和性低的緩沖區(qū)中的數(shù)據(jù)會大量位于Cache之外。該模塊將被釋放緩沖區(qū)的親和性信息傳遞給緩沖區(qū)收集模塊。緩沖區(qū)收集模塊,用于收集被標了親和性的緩沖區(qū)。其中高親和性和低親和性的緩沖區(qū)被分開存放,分別保存于兩個不同的鏈表中,便于后續(xù)分配緩沖區(qū)時能夠快速定位不同親和性的緩沖區(qū)。緩沖區(qū)收集模塊將鏈表中是否含有對應(yīng)緩沖區(qū)的信息傳遞給緩沖區(qū)分配模塊,供后續(xù)的分配過程進行決策。緩沖區(qū)管理模塊,用于給不同的I/O處理過程分配對應(yīng)的緩沖區(qū)。其中,給輸出過程分配親和性較高的緩沖區(qū),減少I/O處理過程的偏外存儲訪問;給輸入過程分配親和性較低的緩沖區(qū),減少一致性維護操作的開銷。 在上述裝置實施例中,緩沖區(qū)分配模塊包括輸入緩沖區(qū)管理單元和輸出緩沖區(qū)管理單元;其中輸入緩沖區(qū)分配單元,用于給輸入過程分配緩沖區(qū)。對于輸入過程,由對應(yīng)的設(shè)備驅(qū)動程序向內(nèi)存管理器提出分配請求,因此所有在驅(qū)動程序中分配的DMA緩沖區(qū)可以被標識為輸入緩沖區(qū)。在分配輸入緩沖區(qū)時,如果LAL鏈表非空,直接從該鏈表頭部獲取緩沖區(qū);否則,使用默認的分配函數(shù)獲取函數(shù)。在釋放輸入緩沖區(qū)時,如果HAL鏈表非滿,將緩沖區(qū)插入鏈表頭部;否則,使用默認的函數(shù)釋放緩沖區(qū)。輸出緩沖區(qū)分配單元,用于給輸出過程分配緩沖區(qū)。對于輸出過程,在驅(qū)動程序以外的范圍內(nèi)申請的DMA緩沖區(qū)可以被標識為輸出緩沖區(qū)。在分配輸入緩沖區(qū)時,如果HAL鏈表非空,直接從該鏈表頭部獲取緩沖區(qū);否則,使用默認的分配函數(shù)獲取函數(shù)。在釋放輸入緩沖區(qū)時,如果LAL鏈表非滿,將緩沖區(qū)插入鏈表尾部;否則,使用默認的函數(shù)釋放緩沖區(qū)。以上說明書中描述的只是本發(fā)明的具體實施方式
,各種舉例說明不對本發(fā)明的實質(zhì)內(nèi)容構(gòu)成限制,所屬技術(shù)領(lǐng)域的普通技術(shù)人員在閱讀了說明書后可以對以前所述的具體實施方式
做修改或變形,而不背離發(fā)明的實質(zhì)和范圍。
權(quán)利要求
1.一種基于親和性感知的DMA緩沖區(qū)管理方法,其特征在于,包括 以親和性的高低將緩沖區(qū)分為兩類,并確定不同I/O處理過程對緩沖區(qū)親和性的需求。
2.按照權(quán)利要求I所述的緩沖區(qū)管理方法,其特征在于,還包括 使用純軟件的手段,在操作系統(tǒng)層來標識緩沖區(qū)的親和性。
3.按照權(quán)利要求I或2所述的緩沖區(qū)管理方法,其特征在于以輸出處理過程的特點來標識低親和性緩沖區(qū),具體包括 輸出過程中,由于一致性維護操作后,處理器不再訪問輸出緩沖區(qū),所以將最近釋放的輸出緩沖區(qū)記錄為低親和性。
4.按照權(quán)利要求I或2所述的緩沖區(qū)管理方法,其特征在于以輸入處理過程的特點來標識高親和性緩沖區(qū),具體包括 當輸入過程中,緩沖區(qū)釋放前,處理器需要將輸入緩沖區(qū)中的數(shù)據(jù)拷貝到用戶緩沖區(qū),所以將最近釋放的輸入緩沖區(qū)標識為高親和性。
5.按照權(quán)利要求I或2所述的緩沖區(qū)管理方法,其特征在于將不同親和性的緩沖區(qū)集中管理,具體包括 所有最近被釋放的低親和性緩沖區(qū)存放于低親和性鏈表中,最近被釋放的高親和性緩沖區(qū)存放于高親和性鏈表中。
6.按照權(quán)利要求I或2所述的緩沖區(qū)管理方法,其特征在于針對不同親和性的緩沖區(qū)采用不同的管理策略,具體包括 對于高親和性的緩沖區(qū)采用先進先出的管理策略,使高親和性的緩沖區(qū)能盡快被重用,避免高親和性緩沖區(qū)中的數(shù)據(jù)被擠出Cache ;對于低親和性的緩沖區(qū)采用后進先出的管理策略,使推遲低親和性緩沖區(qū)被重用的時機,保證緩沖區(qū)中盡可能多的數(shù)據(jù)位于Cache之外。
7.一種基于親和性感知的DMA緩沖區(qū)管理裝置,其特征在于包括緩沖區(qū)親和性分析模塊,緩沖區(qū)收集模塊和緩沖區(qū)管理模塊,其中 緩沖區(qū)親和性分析模塊,用于分析系統(tǒng)中緩沖區(qū)親和性的高低;高親和性的緩沖區(qū)中的數(shù)據(jù)會大量占據(jù)Cache資源;而親和性低的緩沖區(qū)中的數(shù)據(jù)會大量位于Cache之外;該模塊將被釋放緩沖區(qū)的親和性信息傳遞給緩沖區(qū)收集模塊; 緩沖區(qū)收集模塊,用于收集被標了親和性的緩沖區(qū);其中高親和性和低親和性的緩沖區(qū)被分開存放,分別保存于兩個不同的鏈表中,便于后續(xù)分配緩沖區(qū)時能夠快速定位不同親和性的緩沖區(qū);緩沖區(qū)收集模塊將鏈表中是否含有對應(yīng)緩沖區(qū)的信息傳遞給緩沖區(qū)分配模塊,供后續(xù)的分配過程進行決策; 緩沖區(qū)管理模塊,用于給不同的I/O處理過程分配對應(yīng)的緩沖區(qū);其中,給輸出過程分配親和性較高的緩沖區(qū),減少I/O處理過程的偏外存儲訪問;給輸入過程分配親和性較低的緩沖區(qū),減少一致性維護操作的開銷。
8.按照權(quán)利要求7所述的內(nèi)存管理裝置,其特征在于所述緩沖區(qū)管理模塊包括低親和性緩沖區(qū)管理單元和高親和性緩沖區(qū)管理單元,其中 輸入緩沖區(qū)分配單元,用于給輸入過程分配緩沖區(qū);對于輸入過程,由對應(yīng)的設(shè)備驅(qū)動程序向內(nèi)存管理器提出分配請求,因此所有在驅(qū)動程序中分配的DMA緩沖區(qū)可以被標識為輸入緩沖區(qū);在分配輸入緩沖區(qū)時,如果LAL鏈表非空,直接從該鏈表頭部獲取緩沖區(qū);否貝U,使用默認的分配函數(shù)獲取函數(shù);在釋放輸入緩沖區(qū)時,如果HAL鏈表非滿,將緩沖區(qū)插入鏈表頭部;否則,使用默認的函數(shù)釋放緩沖區(qū); 輸出緩沖區(qū)分配單元,用于給輸出過程分配緩沖區(qū);對于輸出過程,在驅(qū)動程序以外的范圍內(nèi)申請的DMA緩沖區(qū)可以被標識為輸出緩沖區(qū);在分配輸入緩沖區(qū)時,如果HAL鏈表非空,直接從該鏈表頭部獲取緩沖區(qū);否則,使用默認的分配函數(shù)獲取函數(shù);在釋放輸入緩沖區(qū)時,如果LAL鏈表非滿,將緩沖區(qū)插入鏈表尾部;否則,使用默認的函數(shù)釋放緩沖區(qū)。
全文摘要
本發(fā)明涉及一種基于親和性感知的DMA緩沖區(qū)管理方法和裝置,包括1)標識緩沖區(qū)的親和性;2)對于輸入過程,分配親和性較低的緩沖區(qū);由于緩沖區(qū)中大部分的數(shù)據(jù)位于Cache之外,避免部分軟件一致性維護操作,其中包括物理地址計算和一致性維護指令的開銷。3)對于輸出過程,分配親和性較高的緩沖區(qū)。由于緩沖區(qū)中大部分的數(shù)據(jù)在Cache中,當把I/O數(shù)據(jù)從用戶態(tài)緩沖區(qū)拷貝到內(nèi)核態(tài)緩沖區(qū)時,將數(shù)據(jù)直接寫入Cache,避免Cache替換將原本屬于應(yīng)用的數(shù)據(jù)寫回主存引入的開銷,同時使得應(yīng)用重用度高的數(shù)據(jù)盡量駐留在Cache中,減少Cache的污染問題。
文檔編號G06F12/08GK102662891SQ20121007836
公開日2012年9月12日 申請日期2012年3月22日 優(yōu)先權(quán)日2012年3月22日
發(fā)明者王晶, 程旭, 管雪濤, 鐘祺 申請人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
大邑县| 鹤岗市| 八宿县| 鄂州市| 玉山县| 浏阳市| 福清市| 渭源县| 盐边县| 定边县| 桃江县| 龙岩市| 小金县| 呼伦贝尔市| 西盟| 萨嘎县| 光泽县| 东台市| 封开县| 临澧县| 武川县| 江油市| 比如县| 拉萨市| 丹东市| 苍梧县| 区。| 溧阳市| 西畴县| 诸暨市| 阜阳市| 理塘县| 二连浩特市| 汕头市| 繁昌县| 中西区| 前郭尔| 闸北区| 施甸县| 湄潭县| 阳曲县|