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

內存空間管理及內存訪問控制方法及裝置與流程

文檔序號:11199133閱讀:989來源:國知局
內存空間管理及內存訪問控制方法及裝置與流程

本發(fā)明涉及存儲領域,特別是涉及內存空間管理及內存訪問控制方法及裝置。



背景技術:

終端設備開放環(huán)境的安全問題越來越受到關注,不僅僅針對終端用戶,還針對服務提供者、移動運營商以及芯片廠商,特別是對于電視及機頂盒需要處理的uhd(ultrahighdefinitiontelevision,超高清電視)流媒體內容及uhd+的流媒體內容。

為了保護媒體內容,基于tee(trustedexecutionenvironment,可信執(zhí)行環(huán)境)技術的drm(數(shù)字版權保護)幾乎已經成了超高清內容提供商必備的要求,tee是與設備上的richos(通常是基于linux的操作系統(tǒng))并存的運行環(huán)境,第三方開發(fā)的可信應用程序(ta)運行于tee環(huán)境中,為richos提供安全服務。tee本身的啟動可靠性受到安全引導(securityboot)技術的保護。

tee環(huán)境下,安全內存(securitymemory)是禁止非安全狀態(tài)的硬件單元(hwip,通常代表richos端)訪問的,基于此,視頻解碼緩存器以及圖像增強(pq)緩存器保存在安全內存中,以防止盜版。其中,安全內存的位置是開機執(zhí)行的安全引導流程設置,不能夠任意調整位置和大小,只能在運行tee環(huán)境時打開或關閉。

而且,如圖1所示現(xiàn)在產品均是將安全內存12獨立于系統(tǒng)內存11之外。對于一些終端設備其所需安全內存的空間較大,如對于支援uhd的播放終端,支援單路uhd解碼和圖像增強的芯片,其安全內存所需總量超過200mb,支援雙路uhd解碼或者支援uhd+解碼的芯片,其安全內存所需總量會達到350mb以上,故該終端往往設備需設置大容量的獨立的安全內存,導致系統(tǒng)成本的上升。而且,當安全狀態(tài)的硬件單元不工作時起此大容量的安全內存則處于空閑狀態(tài),故導致該存儲資源浪費。



技術實現(xiàn)要素:

本發(fā)明主要解決的技術問題是提供內存空間管理及內存訪問控制方法及裝置,能夠減少存儲資源的浪費,減少系統(tǒng)成本。

為解決上述技術問題,本發(fā)明采用的一個技術方案是:提供一種內存空間管理方法,用于管理供硬件單元或處理器進行訪問的系統(tǒng)內存,包括:在接收到所述硬件單元發(fā)出的一操作請求時,根據(jù)操作請求的類型來判斷所述硬件單元請求的操作是否是訪問所述系統(tǒng)內存里的一安全內存區(qū)域;若是,則將所述系統(tǒng)內存中的所述需訪問的安全內存區(qū)域從默認的第一狀態(tài)更改為第二狀態(tài),并將所述硬件單元設置為安全狀態(tài);其中,所述安全內存區(qū)域處于所述第一狀態(tài)時,表示限定僅供處理器進行訪問,所述硬件單元不可對其進行訪問;所述安全內存區(qū)域處于所述第二狀態(tài)時,表示僅供處于安全狀態(tài)的所述硬件單元進行訪問。

為解決上述技術問題,本發(fā)明采用的另一個技術方案是:一種內存訪問控制方法,用于控制供處理器或一硬件單元訪問的系統(tǒng)內存,包括:在接收到訪問請求時,獲取所述訪問請求中的訪問地址和訪問者標識;檢查所述訪問地址指向的內存空間的當前狀態(tài),得到一檢查結果,其中,所述內存空間的狀態(tài)包括第一狀態(tài)和第二狀態(tài);查找所述訪問者標識是否屬于多個允許訪問集合中的與所述檢查結果對應的允許訪問集合,其中,所述多個允許訪問集合包括對應第一狀態(tài)的第一允許訪問集合和對應第二狀態(tài)的第二允許訪問集合;根據(jù)查找結果生成一指令,其中,所述指令用于指示允許或不允許所述訪問者訪問所述內存空間。

為解決上述技術問題,本發(fā)明采用的再一個技術方案是:一種非瞬時計算機可讀儲存媒體,用于管理供處理器或一硬件單元進行訪問的系統(tǒng)內存,其中存儲由一處理器讀取并執(zhí)行的一程序代碼,所述程序代碼包括:一第一子程序碼,用以在接收到所述硬件單元發(fā)出的一操作請求時,根據(jù)操作請求的類型來判斷所述硬件單元請求的操作是否是訪問所述系統(tǒng)內存里的一安全內存區(qū)域;以及一第二子程序碼,用以將所述系統(tǒng)內存中的所述需訪問的安全內存區(qū)域從默認的第一狀態(tài)更改為第二狀態(tài),并將所述硬件單元設置為安全狀態(tài);其中,所述安全內存區(qū)域處于所述第一狀態(tài)時,表示限定僅供處理器進行訪問,所述硬件單元不可對其進行訪問;所述安全內存區(qū)域處于所述第二狀態(tài)時,表示僅供處于安全狀態(tài)的所述硬件單元進行訪問。

為解決上述技術問題,本發(fā)明采用的又再一個技術方案是:一種內存訪問控制裝置,與一系統(tǒng)內存經由總線連接,用來控制處理器或一硬件單元存取該系統(tǒng)內存,包括:復數(shù)個保護組,其中每個保護組用于根據(jù)一訪問者標識查找一允許訪問列表得到一查找結果;一檢查單元,用于根據(jù)一訪問地址檢查所述訪問地址指向的內存空間的當前狀態(tài)為一第一狀態(tài)還是一第二狀態(tài),得到一檢查結果;以及一判斷單元,連接于所述復數(shù)個保護組和所述檢查單元,用于接收所述復數(shù)個保護組的復數(shù)個查找結果和所述檢查結果,并根據(jù)所述檢查結果決定所述復數(shù)個查找結果之一查找結果,并根據(jù)所述查找結果產生一決定訊號。

為解決上述技術問題,本發(fā)明采用的又再一個技術方案是:一種內存訪問控制裝置,與一系統(tǒng)內存經由總線連接,用來控制處理器或一硬件單元存取該系統(tǒng)內存,包括:一檢查單元,用于根據(jù)一訪問地址檢查所述訪問地址指向的內存空間的當前狀態(tài)為一第一狀態(tài)還是一第二狀態(tài),得到一檢查結果;復數(shù)個保護組,連接于所述檢查單元,其中與所述檢查結果對應的保護組用于根據(jù)一訪問者標識查找允許訪問列表得到一查找結果;以及一判斷單元,連接于所述復數(shù)個保護組,用于接收所述與所述檢查結果對應的保護組的查找結果,并根據(jù)所述查找結果產生一決定訊號。

上述方案,系統(tǒng)內存中設置有安全內存區(qū)域,處理器根據(jù)硬件單元的操作請求更改安全內存區(qū)域的狀態(tài),使得內存控制器在接收到訪問安全內存區(qū)域的訪問請求時,根據(jù)該安全內存區(qū)域的狀態(tài)限定訪問請求的發(fā)出者是否可以訪問,具體限定若安全內存區(qū)域為第一狀態(tài)時,限定僅處理器可對其訪問,若安全內存區(qū)域為第二狀態(tài)時,限定僅安全狀態(tài)的硬件單元可對其訪問,通過設置安全內存區(qū)域的不同狀態(tài)以限定可訪問其的對象,防止處理器和安全狀態(tài)的硬件單元訪問到彼此的存儲數(shù)據(jù),故在保證系統(tǒng)內存和安全內存區(qū)域各自的安全性的同時,實現(xiàn)了系統(tǒng)內存與安全內存區(qū)域的分時共享,處理器和硬件單元分時復用物理內存,無需獨立設置安全內存,減少了存儲資源的浪費以及系統(tǒng)成本。

附圖說明

圖1是現(xiàn)有系統(tǒng)內存與安全內存之間的結構示意圖;

圖2是本發(fā)明系統(tǒng)內存與安全內存之間的一結構示意圖;

圖3是本發(fā)明內存空間管理方法一實施例的流程圖;

圖4是本發(fā)明系統(tǒng)內存與安全內存之間的另一結構示意圖;

圖5是本發(fā)明內存訪問控制方法一實施例的流程圖;

圖6是本發(fā)明內存訪問控制方法另一實施例的部分流程圖;

圖7是本發(fā)明內存訪問控制方法再一實施例的部分流程圖;

圖8是本發(fā)明對于安全內存碎片回收利用一實施例的處理示意圖;

圖9是可采用本發(fā)明內存訪問控制方法的系統(tǒng)結構示意圖;

圖10是本發(fā)明內存訪問控制裝置一實施例的結構示意圖;

圖11是本發(fā)明檢查單元的一實施例的結構示意圖;

圖12是本發(fā)明判斷單元的一實施例的結構示意圖;

圖13是本發(fā)明內存訪問控制裝置另一實施例的結構示意圖

具體實施方式

以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結構、接口、技術之類的具體細節(jié),以便透徹理解本申請。然而,本領域的技術人員應當清楚,在沒有這些具體細節(jié)的其它實施方式中也可以實現(xiàn)本申請。在其它情況中,省略對眾所周知的裝置、電路以及方法的詳細說明,以免不必要的細節(jié)妨礙本申請的描述。

為了便于理解本發(fā)明,先對本發(fā)明部分元件及名詞進行說明。

本文所述的處理器為用于運行終端操作系統(tǒng)的核心電路。具體,該處理器可用于運行安全環(huán)境和非安全環(huán)境,例如tee和richos兩個系統(tǒng)環(huán)境。當然,上述兩個環(huán)境也可為同一個處理器或者由兩個處理器分別實現(xiàn),在此不作限定。

本文所述的硬件單元(也稱為hwip)具體為終端中除處理器外的硬件電路,例如播放設備的視頻解碼器、圖像增強處理器、顯示屏驅動器、屏幕顯示(英文:onscreendisplay,簡稱:osd)混合器等媒體相關硬件單元。該硬件單元包括安全狀態(tài)和非安全狀態(tài),該硬件單元處于安全狀態(tài)即為該硬件單元當前執(zhí)行安全性操作,處于非安全狀態(tài)即該硬件單元當前執(zhí)行常規(guī)操作,例如,在tee和richos雙系統(tǒng)的終端中,當硬件單元在tee環(huán)境下運行第三方可信應用程序進行操作需要訪問安全內存區(qū)域內容時需要切換到安全狀態(tài),當硬件單元運行一般的第三方應用程序進行操作只需訪問一般非保護需求的內存區(qū)域時,則切換到非安全狀態(tài)。

本文所述的系統(tǒng)內存為終端的操作系統(tǒng)存儲指令和數(shù)據(jù)的存儲空間,提供給處理器進行訪問。該系統(tǒng)內存具體可為動態(tài)隨機存取存儲器(英文:dynamicrandomaccessmemory,簡稱:dram),在一采用linux操作系統(tǒng)的終端中,該系統(tǒng)內存為內核管理的存儲空間(也稱linuxkernelmemory),以供操作系統(tǒng)內核(如linuxkernel)管理及操作系統(tǒng)內核和應用程序訪問。

基于現(xiàn)有安全內存區(qū)域與系統(tǒng)內存相互獨立,導致內存資源的浪費。本發(fā)明提出將系統(tǒng)內存與安全內存區(qū)域分時共享,具體將系統(tǒng)內存中的一段內存空間標記作為安全內存區(qū)域(securityrange),該安全內存區(qū)域按照不同設置狀態(tài)可提供于安全狀態(tài)的硬件單元訪問,或者提供于處理器訪問。當然,在系統(tǒng)內存之外還可獨立設置有安全內存區(qū)域,該系統(tǒng)內存內的安全內存區(qū)域提供給某些安全狀態(tài)的硬件單元的短暫性的訪問,該系統(tǒng)內存外的安全內存區(qū)域提供給某些安全狀態(tài)的硬件單元的長期訪問。

另外,本發(fā)明還可將系統(tǒng)內存中的另一段內存空間標記作為非安全內存區(qū)域,該非安全內存區(qū)域按照不同設置狀態(tài)可提供于非安全狀態(tài)的硬件單元或安全狀態(tài)和非安全狀態(tài)的硬件單元訪問,或提供于處理器訪問。

其中,如圖2所示,上述安全內存區(qū)域22和非安全內存區(qū)域23均可為由連續(xù)內存分配器(英文:contiguousmemoryallocator,簡稱:cma)分配的系統(tǒng)內存21中的一段或多段連續(xù)物理內存區(qū)域。該安全內存區(qū)域22與該非安全內存區(qū)域23構成cma分配的預設內存區(qū)域24。該安全內存區(qū)域22與該非安全內存區(qū)域23具體可設置與該系統(tǒng)內存中的任意位置上,在此不作限定。

請參閱圖3,圖3是本發(fā)明內存空間管理方法一實施例的流程圖。本實施例中,該方法由處理器執(zhí)行,用于管理供硬件單元或處理器進行訪問的系統(tǒng)內存,具體包括以下步驟:

s31:處理器在接收到硬件單元發(fā)出的一操作請求時,根據(jù)操作請求的類型來判斷該硬件單元請求的操作是否是訪問該系統(tǒng)內存里的一安全內存區(qū)域。

其中,終端設備的處理器預先將系統(tǒng)內存中部分連續(xù)內存劃分為安全內存區(qū)域。例如,在系統(tǒng)啟動時(即該終端設備開機時),處理器按照內存分配策略將所述系統(tǒng)內存中一段或多段連續(xù)內存劃分為安全內存區(qū)域,具體可由處理器運行驅動程序以cma的方式向系統(tǒng)內存申請得到該安全內存區(qū)域。當然,根據(jù)實際需求中,在終端設備開機后的工作過程中也可進行重新劃分該安全內存區(qū)域。該內存分類策略具體可為根據(jù)該終端設備所需運行的不同項目對應分配不同容量的安全內存區(qū)域。為保證安全內存區(qū)域的安全性,上述劃分由處于安全狀態(tài)下的處理器執(zhí)行,例如為終端設備中運行tee的處理器,處于非安全狀態(tài)下的處理器如運行richos的處理器無法對該設定的安全內存區(qū)域進行修改或控制。

本實施例中,處理器在接收到硬件單元的操作請求后,先確定該操作請求的類型是否為需要占用存儲空間的安全性的操作請求,例如一硬件單元申請安全視頻通路,確認該操作需訪問系統(tǒng)內存中至少部分安全內存區(qū)域以作為其安全視頻通路用到的視頻解碼、圖像增強等過程中使用的內存空間。若確定該操作請求為需要占用存儲空間且安全性的操作請求,則判斷該操作請求需要訪問該系統(tǒng)內存里的一安全內存區(qū)域,并執(zhí)行s32,若確定該操作請求為需要占用存儲空間的非安全性的操作請求,則判斷該操作請求不需要訪問該系統(tǒng)內存里的安全內存區(qū)域,并執(zhí)行s33。

s32:處理器將所述系統(tǒng)內存中的所述需訪問的安全內存區(qū)域從默認的第一狀態(tài)更改為第二狀態(tài),并將所述硬件單元設置為安全狀態(tài)。

該系統(tǒng)內存中預設的安全內存區(qū)域可包括第一狀態(tài)和第二狀態(tài)。其中,所述安全內存區(qū)域處于所述第一狀態(tài)時,表示限定僅供處理器進行訪問,所述硬件單元不可對其進行訪問;所述安全內存區(qū)域處于所述第二狀態(tài)時,表示僅供處于安全狀態(tài)的所述硬件單元進行訪問。

默認地,處理器預設的安全內存區(qū)域的狀態(tài)為第一狀態(tài),即可供處理器進行訪問,且硬件單元不具有訪問權限。在確定當前硬件單元的操作需要使用安全內存區(qū)域時,利用cma分配需要使用的一段連續(xù)的安全內存區(qū)域,并將該操作需要使用的安全內存區(qū)域中的當前數(shù)據(jù)轉移到系統(tǒng)內存的其他空間(安全內存區(qū)域處于第一狀態(tài)時候的數(shù)據(jù)為處理器訪問的數(shù)據(jù),故為避免處理器數(shù)據(jù)丟失,先將其轉移到其他存儲空間)。處理器并將該操作需要使用的安全內存區(qū)域的第一狀態(tài)更改為第二狀態(tài)。具體,本次需更改狀態(tài)的安全內存區(qū)域的大小可根據(jù)該硬件單元的操作請求的類型進行分配,例如,系統(tǒng)內存中預設有300m安全內存區(qū)域,若當前操作請求為一路視頻解碼請求,則將系統(tǒng)內存中預設的100m安全內存區(qū)域的狀態(tài)進行上述更改,以將該100m安全內存區(qū)域用于存儲硬件單元的視頻解碼時的碼流。

而且,處理器將該硬件單元標記為安全狀態(tài),以保證該硬件單元在操作過程中有權限訪問該第二狀態(tài)的安全內存區(qū)域。具體,可將每個硬件單元的狀態(tài)以列表形式存儲在處理器以及內存控制器可訪問的存儲空間中。

在一具體應用中,該安全內存區(qū)域劃分為第一數(shù)量內存頁(也稱entry),每個內存頁的大小固定,具體大小可為1m或512kb等,每個內存頁均設置有第一控制位。s32中所述將所述系統(tǒng)內存中的所述需訪問的安全內存區(qū)域從默認的第一狀態(tài)更改為第二狀態(tài)具體包括以下子步驟:

s321:確定所述需訪問的安全內存區(qū)域的大小為第二數(shù)量內存頁。

s322:將所述安全內存區(qū)域中的第二數(shù)量內存頁的第一控制位由第一字符更改為第二字符。

其中,所述第一控制位為第一字符時,表示所述內存頁處于所述第一狀態(tài),即該內存頁的內存回收給處理器使用;所述第一控制位為第二字符時,表示所述內存頁處于所述第二狀態(tài),即該內存頁的內存分配給安全狀態(tài)的硬件單元使用,系統(tǒng)內存無法將該內存用作內部用途;所述第一數(shù)量大于或等于所述第二數(shù)量。

如圖4所示,系統(tǒng)內存40預設有entry0-entry255共256個內存頁作為安全內存區(qū)域41,該256個內存頁的當前第一控制位p的默認為1,表示所有該內存頁開始均限供處理器訪問。處理器根據(jù)當前操作請求的類型確定該操作所需的存儲空間為100個內存頁,并將安全內存區(qū)域41中的entry0-entry99的第一控制位p值更改為0,以表示該100個內存頁當前僅供安全狀態(tài)的硬件單元訪問。

s33:處理器將系統(tǒng)內存中的至少部分非安全內存區(qū)域從第一狀態(tài)更改為第二狀態(tài),并將所述硬件單元設置為非安全狀態(tài)。

本實施例中,該系統(tǒng)內存中還預設有非安全內存區(qū)域,該非安全內存區(qū)域也包括第一狀態(tài)和第二狀態(tài)。其中,所述非安全內存區(qū)域處于所述第一狀態(tài)時,表示僅供處理器進行訪問,所述非安全內存區(qū)域處于所述第二狀態(tài)時,表示可由處于安全狀態(tài)或非安全狀態(tài)的硬件單元進行訪問,或限定僅供處于非安全狀態(tài)的硬件單元進行訪問。

默認地,處理器預設的非安全內存區(qū)域的狀態(tài)為第一狀態(tài),即可供處理器進行訪問,且硬件單元不具有訪問權限。在確定當前硬件單元的操作不需要使用安全內存區(qū)域,即使用非安全內存區(qū)域時,利用cma從系統(tǒng)內存中分配該操作需要使用的非安全內存區(qū)域,并將該操作需要使用的非安全內存區(qū)域的第一狀態(tài)更改為第二狀態(tài)。同理于s32所述,本次需更改狀態(tài)的非安全內存區(qū)域的大小可根據(jù)該硬件單元的操作請求的類型進行分配。

而且,處理器將該硬件單元標記為非安全狀態(tài),以確定該硬件單元目前執(zhí)行的是非安全性操作,故只可訪問第二狀態(tài)的非安全內存區(qū)域,避免其在操作過程中有權限訪問該第二狀態(tài)的安全內存區(qū)域。

在一具體應用中,該非安全內存區(qū)域可劃分為第三數(shù)量內存頁。該s33中所述將系統(tǒng)內存中的至少部分非安全內存區(qū)域從第一狀態(tài)更改為第二狀態(tài)具體包括以下子步驟:

s331:確定所述需訪問的非安全內存區(qū)域的大小為第四數(shù)量內存頁。

s332:將所述非安全內存區(qū)域中的第四數(shù)量內存頁的第一控制位由第一字符更改為第二字符。

其中,所述第一控制位為第一字符時,表示所述內存頁處于所述第一狀態(tài),即該內存頁的內存回收給處理器使用;所述第一控制位為第二字符時,表示所述內存頁處于所述第二狀態(tài),即該內存頁的內存分配給硬件單元使用,系統(tǒng)內存無法將其作為內部用途;所述第一數(shù)量大于或等于所述第二數(shù)量。

繼續(xù)如圖4所示,系統(tǒng)內存40預設有entry256-entry356共100個內存頁作為非安全內存區(qū)域42,其中,該安全內存區(qū)域41和非安全內存區(qū)域42構成了系統(tǒng)內存的預設內存區(qū)域43,該區(qū)域43屬于cma分配的區(qū)域,系統(tǒng)內存40除預設內存區(qū)域43外的剩余區(qū)域均限供處理器訪問。非安全內存區(qū)域42的100個內存頁的當前第一控制位p的默認為1,表示所有該內存頁開始均限供處理器訪問,硬件單元不可訪問。處理器根據(jù)當前操作請求的類型確定該操作所需的存儲空間為50個內存頁,并將非安全內存區(qū)域42中的entry256-entry306的第一控制位p值更改為0,以表示該50個內存頁當前僅供非安全狀態(tài)的硬件單元訪問,或供任意狀態(tài)下的硬件單元訪問,處理器不可訪問。

當然,在其他實施例中,該系統(tǒng)內存可不包括非安全內存區(qū)域,相應,該方法也不包括上述s33,當處理器執(zhí)行s31判斷硬件單元的操作不需訪問安全內存區(qū)域時,則結束流程。

s34:處理器在確定該硬件單元操作完成時,將所述操作訪問到的安全內存區(qū)域從第二狀態(tài)更改為第一狀態(tài)。

進一步地,該處理器執(zhí)行上述s32或s33之后,若確定該硬件單元操作完成,處理器還將所述操作訪問到的安全內存區(qū)域或非安全內存區(qū)域從第二狀態(tài)更改為第一狀態(tài),以使該訪問到的安全內存區(qū)域或非安全內存區(qū)域重新回收為系統(tǒng)內存的內部用途,即僅供處理器使用。當然,在另一實施例中,在硬件單元完成后,處理器可先不更改該相關內存區(qū)域的狀態(tài),而是在確定系統(tǒng)內存的其他存儲空間不夠用時,再將所述硬件單元訪問到的安全內存區(qū)域或非安全內存區(qū)域從第二狀態(tài)更改為第一狀態(tài)。

上述s31-s33可由非安全狀態(tài)的處理器執(zhí)行,例如運行richos的處理器,以方便richos端與cma配合以靈活分配相關的內存區(qū)域并控制該內存區(qū)域的狀態(tài)。其中,s32中該內存區(qū)域的狀態(tài)更改可具體由非安全狀態(tài)的處理器的操作系統(tǒng)(如linux)內存管理驅動模塊執(zhí)行。

當然,在其他實施例中,上述s31-s33也可由安全狀態(tài)的處理器執(zhí)行,或者上述s32中的硬件單元的狀態(tài)設置可由安全狀態(tài)的處理器執(zhí)行,其余步驟由非安全狀態(tài)的處理器執(zhí)行。在一應用中,該安全狀態(tài)的處理器為運行tee環(huán)境的處理器,該非安全狀態(tài)的處理器為運行richos的處理器,也即運行該正常操作系統(tǒng)內核(如linuxkernel)的處理器。

本實施例,系統(tǒng)內存中設置有安全內存區(qū)域,處理器根據(jù)硬件單元的操作請求更改安全內存區(qū)域的狀態(tài),使得內存控制器在接收到訪問安全內存區(qū)域的訪問請求時,根據(jù)該安全內存區(qū)域的狀態(tài)限定訪問請求的發(fā)出者是否可以訪問,具體限定若安全內存區(qū)域為第一狀態(tài)時,限定僅處理器可對其訪問,若安全內存區(qū)域為第二狀態(tài)時,限定僅安全狀態(tài)的硬件單元可對其訪問,通過設置安全內存區(qū)域的不同狀態(tài)以限定可訪問其的對象,防止處理器和安全狀態(tài)的硬件單元訪問到彼此的存儲數(shù)據(jù),故在保證系統(tǒng)內存和安全內存區(qū)域各自的安全性的同時,實現(xiàn)了系統(tǒng)內存與安全內存區(qū)域的分時共享,處理器和硬件單元分時復用物理內存,無需獨立設置安全內存,減少了存儲資源的浪費以及系統(tǒng)成本。

請參閱圖5,圖5是本發(fā)明內存訪問控制方法一實施例的流程圖,本實施例中,該控制方法由內存控制器執(zhí)行,該內存控制器與至少一個處理器以及至少一個硬件單元連接,該內存控制器用于執(zhí)行本控制方法來控制處理器及該硬件單元對上述系統(tǒng)內存的訪問如向系統(tǒng)內存讀取數(shù)據(jù)或寫入數(shù)據(jù)等。該控制方法具體包括以下步驟:

s51:內存控制器在接收到訪問請求時,獲取所述訪問請求中的訪問地址和訪問者標識。

該訪問請求可來自與處理器或硬件單元,用于請求訪問上述系統(tǒng)內存中的部分內存空間。本文所述的訪問具體包括讀取或寫入數(shù)據(jù)。

s52:檢查所述訪問地址指向的內存空間的當前狀態(tài),得到一檢查結果。

如上實施例所述,系統(tǒng)內存中包含有預設內存區(qū)域如圖4所述的預存內存區(qū)域43,以可用于提供給硬件單元訪問。在不同實施例中,該預存內存區(qū)域具體可包括上述安全內存區(qū)域,或者包括上述安全內存區(qū)域和上述非安全內存區(qū)域。且該預存內存區(qū)域的狀態(tài)可如上述實施例所述進行設置。內存控制器可先確定該訪問地址指向的內存空間是否為該預存內存區(qū)域,若是,則執(zhí)行s52;否則確定該內存空間僅供處理器訪問,并當訪問者為硬件單元時阻止其訪問該內存空間,以防止硬件單元竊取處理器的數(shù)據(jù)。

本實施例中,該預設內存區(qū)域如圖4所示,包括若干個上述內存頁。若該資源共享僅針對預設內存區(qū)域的安全內存區(qū)域,只需檢查所述訪問地址指向的內存空間的當前狀態(tài),s52中的所述查詢所述訪問地址指向的內存空間的當前狀態(tài)包括:讀取所述訪問地址指向的內存頁的第一控制位的值,以確定所述訪問地址指向的內存頁的當前狀態(tài)。該檢查結果是:當所述訪問地址指向的內存頁的第一控制位均為第一字符時,表示訪問地址指向的內存空間處于第一狀態(tài);當所述訪問地址指向的內存頁的第一控制位均為第二字符時,表示訪問地址指向的內存空間處于第二狀態(tài)。

s53:根據(jù)訪問者標識查找多個允許訪問集合,得到多個查找結果。

允許訪問集合包含允許訪問系統(tǒng)內存的處理器或者硬件單元的標識。下面以允許訪問集合具體為允許訪問列表為例,若經過查表,判斷訪問者標識是否在允許訪問列表中,該查找結果為在允許訪問列表中,或者不在允許訪問列表中。具體的若僅需檢查所述訪問地址指向的內存空間的當前狀態(tài),那么該多個允許訪問列表為分別對應第一狀態(tài)和第二狀態(tài)的兩個允許訪問列表。

s54:根據(jù)該檢查結果選擇該多個查找結果中的一該查找結果,并根據(jù)該查找結果生成一指令,其中該指令用于指示允許或不允許該訪問者存取該內存空間。

具體,選擇與該檢查結果對應的允許訪問列表的查找結果,若查找結果為在該允許訪問列表中,則生成允許該訪問者存取該訪問地址指向的內存空間的指令,否則生成不允許該訪問者存取該訪問地址指向的內存空間的指令。

可以理解的是,本實施例是在s54才根據(jù)檢查結果從多個查找結果中選擇與檢查結果匹配的查找結果,故s52和s53可為同步執(zhí)行。在其他實施例中,也可在執(zhí)行s52后,執(zhí)行s53為從所述多個允許訪問集合中選擇與所述檢查結果對應的允許訪問集合,并根據(jù)所述訪問者標識查找該選擇的允許訪問集合,得到一查找結果,再執(zhí)行s54為根據(jù)查找結果生成一指令。以上s52-s54均為查找所述訪問者標識是否屬于多個允許訪問集合中的與所述檢查結果對應的允許訪問集合,并根據(jù)查找結果生成一指令的具體實現(xiàn)方式,再次不作限定。

由于對應內存空間不同狀態(tài)的允許訪問列表包含上述不同的訪問者標識。在一實施例中,若對應第一狀態(tài)的允許訪問列表僅包含處理器標識;對應第二狀態(tài)的允許訪問列表僅包含硬件單元標識。則s54實現(xiàn)了:當所述訪問地址指向的內存空間處于第一狀態(tài)時,若所述訪問請求是處理器發(fā)出的,則允許其訪問所述內存空間,否則阻止對所述內存空間的訪問;當所述訪問地址指向的內存空間處于第二狀態(tài)時,若所述訪問請求是符合要求的硬件單元發(fā)出的,則允許其訪問所述內存空間,否則直接阻止對所述內存空間的訪問。

如上述實施例所述,該預設內存區(qū)域包括第一狀態(tài)和第二狀態(tài),且不同狀態(tài)下,允許不同硬件進行訪問。當所述訪問地址指向的內存空間處于第一狀態(tài)時,表示該內存空間當前僅允許處理器訪問,若硬件單元請求訪問則由該內存控制器阻止并可拋出系統(tǒng)異常,以防止硬件單元由于錯誤時序或其他原因誤訪問處理器內存,竊取或篡改該處理器內存,此時系統(tǒng)內存保護支持(也稱為kprotect)生效,內存控制器可采用kprotect進行對該預設內存區(qū)域的保護;當所述訪問地址指向的內存空間處于第二狀態(tài)時,表示該內存空間當前僅允許硬件單元訪問,若處理器請求訪問則由該內存控制器阻止并可拋出系統(tǒng)異常,以防止處理器由于錯時序或其他原因誤訪問硬件單元內存,竊取或篡改該硬件單元內存。

基于上一實施例,在另一實施例中,若該資源共享不僅針對預設內存區(qū)域的安全內存區(qū)域,故還需區(qū)分安全內存區(qū)域和非安全內存區(qū)域,即該預設內存區(qū)域包括安全內存區(qū)域和非安全內存區(qū)域。請結合參閱圖6,該內存訪問控制方法與上一實施例的不同步驟包括:

步驟s52還包括根據(jù)所述訪問地址檢查所述訪問地址指向的內存空間是否屬于系統(tǒng)內存中的預設內存區(qū)域的安全內存區(qū)域。

該檢查結果有四種情況:該訪問地址指向的內存空間是預設內存區(qū)域的安全內存區(qū)域,該內存空間處于第一狀態(tài);該訪問地址指向的內存空間不是預設內存區(qū)域的安全內存區(qū)域,該內存空間處于第一狀態(tài);該訪問地址指向的內存空間是預設內存區(qū)域的安全內存區(qū)域,該內存空間處于第二狀態(tài);以及該訪問地址指向的內存空間不是預設內存區(qū)域的安全內存區(qū)域,該內存空間處于第二狀態(tài)。

例如,上述預設內存區(qū)域中的每個內存頁還均配置有第二控制位,該第二控制位用于表示該內存頁屬于安全內存區(qū)域還是非安全內存區(qū)域,其位值并非如第一控制位般采用設值保存的方式,而是由內存控制器即時計算得到。

具體地,內存控制器根據(jù)所述訪問地址與所述預存內存區(qū)域中的安全內存區(qū)域的地址之間的關系,計算得到訪問地址指向的內存頁的第二控制位的值,例如,若該訪問地址屬于安全內存區(qū)域的地址范圍,則該訪問地址指向的內存頁的第二控制位為第三字符,若不屬于,則該訪問地址指向的內存頁的第二控制位為第四字符。其中,當所述第二控制位為第三字符時,表示所述內存頁屬于所述安全內存區(qū)域;當所述第二控制位為第四字符時,表示所述內存頁屬于所述非安全內存區(qū)域。

上述第一字符與第二字符、第三字符與第四字符均可為任意不同字符,例如第一字符與第二字符分別為1和0,第三字符與第四字符分別為1和0。那么s52得到的檢查結果有幾種情況可以表示為(1,1),(0,1),(1,0),(0,0)。

該多個允許訪問列表為分別對應上述檢查結果的四種情況的四個允許訪問列表;或者對應內存空間處于第一狀態(tài)的兩個檢查結果公用一個允許訪問列表,即該多個允許訪問列表為分別對應上述檢查結果的四種情況的三個允許訪問列表。在一具體應用中,可對上述允許訪問列表進行如下設置:對應處于第一狀態(tài)的一個或兩個允許訪問列表僅僅包含處理器標識,對應安全內存區(qū)域的第二狀態(tài)的允許訪問列表和對應非安全內存區(qū)域的第二狀態(tài)的允許訪問列表均僅包含硬件單元標識,對應安全內存區(qū)域的第二狀態(tài)的允許訪問列表的硬件單元標識為設定若處于安全狀態(tài)則可訪問的硬件單元標識,對應非安全內存區(qū)域的第二狀態(tài)的允許訪問列表的硬件單元標識至少包括設定若處于非安全狀態(tài)則可訪問的硬件單元標識。

s54中所述根據(jù)該查找結果生成一指令,包括:

s541:在所述內存空間屬于所述安全內存區(qū)域時,若所述訪問者處于安全狀態(tài),則生成允許所述訪問者訪問所述內存空間的指令,否則生成不允許所述訪問者訪問所述內存空間的指令;

若檢查確定需訪問的內存空間為安全內存區(qū)域,且訪問者標識屬于對應安全內存區(qū)域的第二狀態(tài)的允許訪問集合,則安全內存保護機制生效,內存控制器允許安全狀態(tài)的硬件單元進行該訪問,阻止非安全狀態(tài)的硬件單元進行該訪問并可拋出系統(tǒng)異常,以防止非安全狀態(tài)的硬件單元由于錯時序或其他原因誤訪問安全內存區(qū)域,竊取或篡改該安全內存區(qū)域的內容。

s542:在所述內存空間屬于所述非安全內存區(qū)域時,不管所述訪問者處于安全狀態(tài)還是非安全狀態(tài),均生成允許所述訪問者訪問所述內存空間的指令;或若所述訪問者處于非安全狀態(tài),則生成允許所述訪問者訪問所述內存空間的指令,否則生成不允許所述訪問者訪問所述內存空間的指令。

若檢查確定需訪問的內存空間為非安全內存區(qū)域,且訪問者標識屬于對應非安全內存區(qū)域的第二狀態(tài)的允許訪問集合,則根據(jù)不同應用需求,內存控制器可允許安全狀態(tài)和非安全狀態(tài)的硬件單元進行該訪問?;蛘邇却婵刂破鲀H允許非安全狀態(tài)的硬件單元進行該訪問,阻止安全狀態(tài)的硬件單元進行該訪問并可拋出系統(tǒng)異常,以防止安全狀態(tài)的硬件單元由于錯時序或其他原因誤訪問非安全內存區(qū)域,導致需受保護的內容誤被輸出到非安全內存區(qū)域。

在再一區(qū)分安全內存區(qū)域和非安全內存區(qū)域的實施例中,該多個允許訪問列表同理上一實施例,但對應安全內存區(qū)域的第二狀態(tài)的允許訪問列表僅包含處于安全狀態(tài)的硬件單元標識;對應非安全內存區(qū)域的第二狀態(tài)的允許訪問列表僅包含處于非安全狀態(tài)的硬件單元標識,或者處于安全狀態(tài)和非安全狀態(tài)的硬件單元標識。對應地,s54中所述根據(jù)該查找結果生成一指令,包括:若在s53中檢查到的對應安全內存區(qū)域的第二狀態(tài)的允許集合中存在該訪問者的標識,生成允許所述訪問者訪問所述內存空間的指令,否則生成不允許所述訪問者訪問所述內存空間的指令;若在s53中檢查到的對應非安全內存區(qū)域的第二狀態(tài)的允許集合中存在該訪問者的標識,生成允許所述訪問者訪問所述內存空間的指令,否則生成不允許所述訪問者訪問所述內存空間的指令。

該內存訪問控制方法除包括圖5所示步驟,還包括:監(jiān)測至少部分硬件單元的當前狀態(tài),當該硬件單元處于安全狀態(tài)時,將其歸到對應安全內存區(qū)域的第二狀態(tài)的允許訪問集合中或者還將其歸到對應非安全內存區(qū)域的第二狀態(tài)的允許訪問集合中,當該硬件單元處于非安全狀態(tài)時,將其歸到對應非安全內存區(qū)域的第二狀態(tài)的允許訪問集合中。該至少部分硬件單元至少包括設定可訪問預存內存區(qū)域的硬件單元。

由上可總結,上述第二狀態(tài)的允許訪問集合中的硬件單元標識滿足以下設定策略,若該資源共享僅針對安全內存區(qū)域,則該允許訪問集合中的硬件單元標識為處于安全狀態(tài)或者設定若處于安全狀態(tài)則可訪問的硬件單元標識,如為前者,則內存控制器可直接執(zhí)行根據(jù)s54的最終查找結果生成指令,如為后者,則內存控制器需如上一實施例結合最終查找結果和訪問者的當前狀態(tài)生成指令;若該資源共享還區(qū)分安全內存區(qū)域和非安全內存區(qū)域,則該對應安全內存區(qū)域的允許訪問集合中的硬件單元標識為處于安全狀態(tài)或者設定若處于安全狀態(tài)則可訪問的硬件單元標識;該對應非安全內存區(qū)域的允許訪問集合中的硬件單元標識至少包括處于非安全狀態(tài)或者設定若處于非安全狀態(tài)則可訪問的硬件單元標識。

在上述預設內存區(qū)域包括安全內存區(qū)域和非安全內存區(qū)域的實施例中,上述內存控制器對預設內存區(qū)域的內存訪問控制邏輯如下表1,其中,該下表1中p為上述第一控制位,s為第二控制位,kprotect生效表示該內存頁僅允許處理器訪問,并阻止硬件單元訪問;安全內存保護機制用于保護處于第二狀態(tài)的安全內存區(qū)域僅允許安全狀態(tài)的硬件單元訪問。

表1

結合上表對本發(fā)明的安全性進行分析:

以tee和richos雙運行環(huán)境的終端設備為例,對于每個預設內存區(qū)域中的內存頁,

1)如果其控制位s為1,并且控制位p為0,表示此內存頁內存已經劃歸tee做安全內存使用,此時非安全狀態(tài)的硬件單元無法讀寫該內存頁,滿足了tee的安全內存要求。

2)如果控制位s為1,并且控制位p為1,則內存控制器阻止安全狀態(tài)的硬件單元寫此內存頁。這樣就阻止了richos端惡意將tee使用的內存頁偷偷切換回richos導致安全狀態(tài)的硬件單元在不知情的狀況下繼續(xù)寫此數(shù)據(jù)到該內存頁,進而導致數(shù)據(jù)泄漏到richos端。

3)控制位s為1時,控制位p的切換,由內存控制器自動對相應的內存頁進行內存清零,從而阻止了可能的回滾攻擊或者richos端通過頻繁的切換控制位p來偷取安全狀態(tài)的硬件單元的輸出數(shù)據(jù)。

請參閱圖7,圖7是本發(fā)明內存訪問控制方法另一實施例的流程圖。本實施例除包括上述實施例所述步驟外,還可包括以下步驟:

s71:內存控制器檢測到存在所述內存頁的第一控制位的值需發(fā)生變化。

s72:判斷所述需發(fā)生變化的內存頁的第二控制位是否為第三字符。若是,則確定該內存頁屬于安全內存區(qū)域,并執(zhí)行s73,否則執(zhí)行s74。

s73:清除所述需發(fā)生變化的內存頁中的數(shù)據(jù)。

s74:通知處理器該所述內存頁的第一控制位可發(fā)生變化。

例如,如圖3所示實施例所述,上述處理器在執(zhí)行s32或者在確定該硬件單元操作完成時將所述操作訪問到的預設內存區(qū)域從第二狀態(tài)更改為第一狀態(tài)之前,向內存控制器發(fā)送指令,以指示該預設內存區(qū)域的相關內存頁的第一控制位的值需發(fā)生變化。此時,為防止回滾(rollback)攻擊或安全數(shù)據(jù)被竊取,內存控制器判斷該內存頁是否屬于該安全內存區(qū)域。具體地,內存控制器計算第一控制位需發(fā)生變化的內存頁的第二控制位的值,并判斷該計算得到的第二控制位的值是否為表示該內存頁屬于安全內存區(qū)域的第三字符,若是,則對該內存頁的數(shù)據(jù)進行清除,以保證安全狀態(tài)的硬件單元的操作數(shù)據(jù)不被后續(xù)訪問的處理器或硬件單元竊取。在清除完成后或無需執(zhí)行清除時,該內存控制器拉中斷通知處理器該內存頁的第一控制位可發(fā)生變化,即該內存頁的狀態(tài)可進行切換,上述處理器收到該通知則執(zhí)行上述對內存頁的狀態(tài)的切換,否則不執(zhí)行該內存頁的狀態(tài)切換。

為更清楚了解本發(fā)明,下面結合圖8舉例說明。播放終端如嵌入式平臺的播放終端可支援多路視頻解碼。

現(xiàn)有采用獨立與系統(tǒng)內存的安全內存的方案中,在多路視頻任意時序啟播停播的情況下,安全內存的分配使用上會出現(xiàn)碎片化。例如,安全內存的大小為300mb,目前有兩路視頻正在解碼,共使用90mb,剩余的210mb是空閑的。安全內存始終有部分區(qū)域在被使用中,這樣就會導致安全內存保護區(qū)域無法做調整,進而空閑出來的內存區(qū)域81無法共享給系統(tǒng)內存使用;并且,空閑的安全內存碎片81數(shù)目可能非常多,由于傳統(tǒng)的安全內存所能保護的塊(section)數(shù)目的限制而無法支持更多的內存碎片數(shù)目,故無法將該安全內存碎片81進行回收。

采用本發(fā)明,將安全內存區(qū)域設置在系統(tǒng)內存中,并通過設置安全內存區(qū)域的狀態(tài)來調整其由安全狀態(tài)的硬件單元或處理器使用。如圖8所示,該系統(tǒng)內存中的安全內存區(qū)域在被用于進行上述兩路視頻解碼時,其被使用的內存頁的第一控制位p為0,第二控制位s為1,而未被使用的安全內存碎片81中的內存頁的第一控制位p為1,第二控制位s為1,進而將安全內存碎片81回收給處理器使用具體如ree端的linux使用。故通過設置安全內存區(qū)域的狀態(tài)調整其使用,實現(xiàn)了安全內存碎片的回收,使得內存空間得到有效利用,且不同區(qū)域狀態(tài)保證不同硬件使用,也保證了數(shù)據(jù)安全。

根據(jù)本發(fā)明的另一具體實施例為一種非瞬時計算機可讀儲存媒體,用于管理一供硬件單元進行訪問的系統(tǒng)內存,其中存儲由一處理器讀取并執(zhí)行的一程序代碼,其特征在于,所述程序代碼包括一第一子程序碼和一第二子程序碼。

所述第一子程序碼用于在接收到所述硬件單元發(fā)出的一操作請求時,根據(jù)操作請求的類型來判斷所述硬件單元請求的操作是否是訪問所述系統(tǒng)內存里的一安全內存區(qū)域;比如說,當所述硬件單元是4k高清解碼器時,該操作請求中會包含表示訪問所述系統(tǒng)內存的一安全內存區(qū)域的信息,當所述硬件單元是一標清解碼器時,該操作請求中會包含表示不是訪問所述系統(tǒng)內存的安全內存區(qū)域的信息。

所述第二子程序碼,用于將所述系統(tǒng)內存中的所述需訪問的安全內存區(qū)域從默認的第一狀態(tài)更改為第二狀態(tài),并將所述硬件單元設置為安全狀態(tài);

其中,所述安全內存區(qū)域處于所述第一狀態(tài)時,表示限定僅供處理器進行訪問,所述硬件單元不可對其進行訪問;所述安全內存區(qū)域處于所述第二狀態(tài)時,表示僅供處于安全狀態(tài)的所述硬件單元進行訪問。

可選地,所述程序代碼還包括一第三子程序碼,用于在系統(tǒng)啟動時,按照內存分配策略將所述系統(tǒng)內存中一段或多段連續(xù)內存劃分為所述系統(tǒng)內存中的安全內存區(qū)域。

可選地,所述安全內存區(qū)域共包括第一數(shù)量內存頁,每個內存頁均配置第一控制位;所述第二子程序碼具體用于確定所述需訪問的安全內存區(qū)域的大小為第二數(shù)量內存頁;將所述安全內存區(qū)域中的第二數(shù)量內存頁的第一控制位由第一字符更改為第二字符;其中,所述第一控制位為第一字符時,表示所述內存頁處于所述第一狀態(tài);所述第一控制位為第二字符時,表示所述內存頁處于所述第二狀態(tài);所述第一數(shù)量大于或等于所述第二數(shù)量。

可選地,所述第二子程序碼還用于若所述硬件單元請求的操作不是訪問所述系統(tǒng)內存的安全內存空間,則將系統(tǒng)內存中的至少部分非安全內存區(qū)域從第一狀態(tài)更改為第二狀態(tài),并將所述硬件單元設置為非安全狀態(tài);其中,所述非安全內存區(qū)域處于所述第一狀態(tài)時,表示僅供處理器進行訪問,所述非安全內存區(qū)域處于所述第二狀態(tài)時,表示可由處于安全狀態(tài)或非安全狀態(tài)的硬件單元進行訪問,或限定僅供處于非安全狀態(tài)的硬件單元進行訪問。

可選地,所述安全內存區(qū)域和非安全內存區(qū)域均為所述系統(tǒng)內存中由cma分配的連續(xù)內存區(qū)域。

請參閱圖9,圖9是可采用本發(fā)明內存訪問控制方法的系統(tǒng)結構示意圖。該系統(tǒng)包括至少一個硬件單元901,一處理器902和一內存控制器903,以上器件通過總線互相溝通并借由內存控制器903來存取一系統(tǒng)內存904。上述實施例中的內存訪問控制方法即可應用在圖9所示的系統(tǒng)中,結合起來可更好理解本發(fā)明。

請參閱圖10,圖10是本發(fā)明內存訪問控制裝置一實施例的結構示意圖。本實施例中,該內存訪問控制裝置包括多個保護組101(101a、101b、101c、101d)、一檢查單元102和一判斷單元103。

該檢查單元102用于從總線中接收訪問地址,根據(jù)所述訪問地址檢查所述訪問地址指向的內存空間是否屬于系統(tǒng)內存中的預設內存區(qū)域的安全內存區(qū)域,以及檢查所述訪問地址指向的內存空間的當前狀態(tài),得到一檢查結果,并將該檢查結果發(fā)送到該判斷單元103。

該多個保護組101a,101b的每個保護組用于接收從總線得到的訪問者標識,根據(jù)訪問者標識查找允許訪問列表得到一查找結果,并將該多個查找結果發(fā)送到該判斷單元103。

該判斷單元103,連接于該多個保護組101a,102b…和所述檢查單元102,用于根據(jù)該檢查結果選擇一查找結果,然后根據(jù)該查找結果生成一決定訊號。

在一實施例中,若該資源共享僅針對預設內存區(qū)域的安全內存區(qū)域,那么僅需設置第一控制位p,就可實現(xiàn)本發(fā)明的內存訪問控制。該檢查單元102的檢查結果為p=1或p=0,并且僅需2個保護組101a和101b即可實現(xiàn)保護功能。具體的,保護組101a可設定為判斷所述訪問者標識是否存在于在所述訪問地址指向的內存空間的當前狀態(tài)為第一狀態(tài)(即p為1)時對應的允許訪問列表,若在該列表內,則查找結果為是;若不在該列表內,則查找結果為否。保護組101b可設定為判斷所述訪問者標識是否存在于所述訪問地址指向的內存空間的當前狀態(tài)為第二狀態(tài)(即p為0)時對應的允許訪問列表,若在該列表內,則查找結果為是;若不在該列表內,則查找結果為否。舉例來說,若檢查單元102的檢查結果為p=1,那么判斷單元103就選擇保護組101a的查找結果,若該查找結果為是,該決定訊號就是允許該訪問者對所述訪問地址指向的內存空間區(qū)域的訪問,反之不允許。

在另一實施例中,若需要區(qū)分所述訪問地址指向的內存空間是否屬于系統(tǒng)內存中的預設內存區(qū)域的安全內存區(qū)域,以及檢查所述訪問地址指向的內存空間的當前狀態(tài),那么設置s,p兩個控制位,即可實現(xiàn)本發(fā)明的內存訪問控制。該檢查單元102的檢查結果為(s,p)是(1,1),(0,1),(1,0),(0,0),并且需4個保護組101a,101b,101c,101d即可實現(xiàn)保護功能。具體的,保護組101a可設定為判斷所述訪問者標識是否存在于在(s,p)=(1,1)時對應的允許訪問列表,若在該列表內,則查找結果為是;若不在該列表內,則查找結果為否。保護組101b可設定為判斷所述訪問者標識是否存在于在(s,p)=(0,1)時對應的允許訪問列表,若在該列表內,則查找結果為是;若不在該列表內,則查找結果為否。保護組101c可設定為判斷所述訪問者標識是否存在于在(s,p)=(1,0)時對應的允許訪問列表,若在該列表內,則查找結果為是;若不在該列表內,則查找結果為否。保護組101d可設定為判斷所述訪問者標識是否存在于在(s,p)=(0,0)時對應的允許訪問列表,若在該列表內,則查找結果為是;若不在該列表內,則查找結果為否。舉例來說,若檢查單元102的檢查結果為(s,p)=(1,1),那么判斷單元103就選擇保護組101a的查找結果,若該查找結果為是,該決定訊號就是允許該訪問者對所述訪問地址指向的內存空間區(qū)域的訪問,反之不允許。

若在實際應用中,還需要設置更多的控制位時,可利用更多的保護組數(shù)來實現(xiàn)保護功能,本領域技術人員可知這種變化也落入本發(fā)明的保護范圍之內。

請結合參閱圖11,圖11是本發(fā)明檢查單元的一實施例的結構示意圖。如圖11所示,該檢查單元包含一地址位移單元111,當存取命令進入內存控制裝置的檢查單元102時,該地址位移單元111從總線中的地址信息得到一訪問地址,該檢查單元102會根據(jù)所述訪問地址查出該訪問地址對應的內存空間的控制位的值。在一實施例中,該檢查單元102可用一多工器實現(xiàn)。

請參閱圖12,圖12是本發(fā)明判斷單元的一實施例的結構示意圖,所述該內存訪問控制裝置的該判斷單元103,可用一多工器實現(xiàn)。圖中以設置s和p兩個控制位的情況,當然也可改變成只有一個控制位或其他多個控制位的情況,此處不作贅述。

在內存資源共享后可能會引起安全問題,所以要采用內存區(qū)域保護機制,可應用在保護操作系統(tǒng)核心的內存存取區(qū)域,只允許cpu(centralprocessingunit,中央處理單元)或特定類型的硬件單元才能存取此區(qū)域,以防止操作系統(tǒng)核心的資料遭到破壞。傳統(tǒng)的保護機制只能以一塊連續(xù)的內存區(qū)域為單位,一組保護組數(shù)即可滿足條件,當內存被共享重新分配以后,原始的連續(xù)保護區(qū)域可能會被拆開成數(shù)塊分別被cpu或其他硬件單元存取,如此需要針對每組來設定多個保護組,每組起的作用是保護該組范圍的區(qū)塊僅被預設的允許的cpu或特定類型的硬件單元存取。而本發(fā)明僅需2組或4組保護組來保護相應的內存空間,又不會影響已分配給其他硬件單元的內存空間。于是操作系統(tǒng)就不需占用多個保護組,可大大降低內存空間保護組的成本。特別是,當原始的連續(xù)保護區(qū)域被拆開成2個或4個以上的區(qū)域時,本發(fā)明的保護機制所降低的成本顯著。

請參閱圖13,圖13是本發(fā)明內存訪問控制裝置另一實施例的結構示意圖。本實施例中,該內存訪問控制裝置與圖10所示的裝置的保護組和單元基本相同,其區(qū)別在于該多個保護組131(131a、131b、131c、131d)連接于檢查單元132,該判斷單元133連接于該多個保護組131。該多個保護組131根據(jù)檢查單元132的檢查結果,選擇與所述檢查結果對應的保護組根據(jù)一訪問者標識查找允許訪問列表得到一查找結果;該判斷單元133直接接收所述與所述檢查結果對應的保護組的查找結果,并根據(jù)所述查找結果產生一決定訊號。

上述內存訪問控制裝置的對應單元結構還用于執(zhí)行上述內存訪問控制方法實施例的對應步驟對應,具體可參閱上述方法實施例的描述。

上述處理器還可以稱為cpu。上述內存控制器可為片上系統(tǒng)(systemonchip,soc)芯片。在具體應用中,終端設備的上述各個組件通過總線(圖未示)耦合在一起,其中總線除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號總線等。

上述本發(fā)明實施例揭示的方法可以應用于處理器或內存控制器中,或者由處理器或內存控制器實現(xiàn)。處理器或內存控制器可能是一種集成電路芯片,具有信號的處理能力。在實現(xiàn)過程中,上述方法的各步驟可以通過處理器或內存控制器中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器或內存控制器可以是通用處理器、數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)成可編程門陣列(fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結合本發(fā)明實施例所公開的方法的步驟可以直接體現(xiàn)為硬件電路執(zhí)行完成,或者用硬件電路中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機存儲器、閃存、只讀存儲器、可編程只讀存儲器或者電可擦寫可編程存儲器、寄存器等本領域成熟的存儲介質中。該存儲介質位于存儲器,處理器或內存控制器讀取存儲器中的信息,結合其硬件完成上述方法的步驟。

以上方案可帶來以下有益效果:

1)系統(tǒng)內存與安全內存區(qū)域分時共用物理內存,減少系統(tǒng)的總內存需求;

2)具有足夠的穩(wěn)健性,不會因為第三方代碼的錯誤或者其他時序問題導致硬件單元與處理器之間的數(shù)據(jù)互踩;

3)具有足夠的安全性,能夠阻止非安全狀態(tài)如運行在richos的處理器或硬件單元向安全狀態(tài)如tee環(huán)境中的硬件單元灌輸數(shù)據(jù)的回滾攻擊,并能阻止非安全狀態(tài)的處理器或硬件單元偷取安全內存區(qū)域的數(shù)據(jù);

4)從硬件成本分析:

本方案無需另外設置安全內存,可降低系統(tǒng)成本;并且減少保護組數(shù)也可降低系統(tǒng)成本。

進一步,本方案可采用了比較大的頁面(page),如1m,512k之類的大粒度內存頁,同時每個內存頁只需要一個位的控制字來設置其狀態(tài),而不是像傳統(tǒng)mmu那樣每個內存頁均需非常多的控制位來支援隨機映射,故大幅的減少了硬件內部的存儲位需求,進一步減少了系統(tǒng)存儲成本。

在本發(fā)明所提供的幾個實施方式中,應該理解到,所揭露的方法以及裝置,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施方式僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施方式方案的目的。

另外,在本發(fā)明各個實施方式中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。

上述其他實施方式中的集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(processor)執(zhí)行本發(fā)明各個實施方式所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
丹巴县| 怀仁县| 昭通市| 揭阳市| 松潘县| 罗山县| 彰武县| 固阳县| 黔江区| 潜江市| 平南县| 广水市| 邛崃市| 新沂市| 晋城| 临沧市| 黑龙江省| 武川县| 阿合奇县| 辽阳市| 合阳县| 珲春市| 秀山| 绥棱县| 永和县| 漳浦县| 特克斯县| 静安区| 班戈县| 台东县| 阳东县| 兴海县| 苍梧县| 青冈县| 余姚市| 汝阳县| 龙山县| 麻城市| 治县。| 新野县| 新乡市|