用于辨識對應(yīng)目標(biāo)內(nèi)存地址的內(nèi)存屬性單元的區(qū)域的區(qū)域辨識操作的制作方法
【專利摘要】一種數(shù)據(jù)處理設(shè)備(2)具有內(nèi)存屬性單元(7),該內(nèi)存屬性單元具有儲存區(qū)域(9),該儲存區(qū)域用于儲存屬性數(shù)據(jù)以便藉由處理電路(4)控制對對應(yīng)內(nèi)存地址范圍的存取。響應(yīng)于目標(biāo)內(nèi)存地址,處理電路(4)可執(zhí)行區(qū)域辨識操作以輸出區(qū)域辨識值,該值辨識屬性單元(7)的儲存區(qū)域(9)中的何者對應(yīng)于目標(biāo)內(nèi)存地址。區(qū)域辨識值可用于藉由數(shù)據(jù)處理設(shè)備(2)所執(zhí)行的至少一些軟件。此可用于迅速檢查一系列地址的存取許可或用于決定如何更新內(nèi)存屬性單元。
【專利說明】
用于辨識對應(yīng)目標(biāo)內(nèi)存地址的內(nèi)存屬性單元的區(qū)域的區(qū)域辨 識操作
技術(shù)領(lǐng)域
[0001 ]本技術(shù)涉及數(shù)據(jù)處理領(lǐng)域。更具體地,本技術(shù)涉及一種具有內(nèi)存屬性單元的數(shù)據(jù) 處理設(shè)備,該內(nèi)存屬性單元用于儲存屬性數(shù)據(jù)以便控制對內(nèi)存的存取。
【背景技術(shù)】
[0002] 數(shù)據(jù)處理設(shè)備可具有內(nèi)存屬性單元(諸如內(nèi)存保護(hù)單元),該內(nèi)存屬性單元用于儲 存屬性數(shù)據(jù)以便藉由處理電路控制對對應(yīng)內(nèi)存地址范圍的存取。當(dāng)需要內(nèi)存存取時,則內(nèi) 存屬性單元查找對應(yīng)于包括目標(biāo)地址的地址范圍的屬性數(shù)據(jù),且若存在命中,則基于屬性 數(shù)據(jù)決定是否容許讀取或?qū)懭氪嫒 ?br>【附圖說明】
[0003] 圖1示意性示出數(shù)據(jù)處理設(shè)備的實(shí)例;
[0004] 圖2示出用于儲存內(nèi)存地址空間的對應(yīng)地址范圍的屬性數(shù)據(jù)的內(nèi)存屬性單元;
[0005] 圖3圖示數(shù)據(jù)處理設(shè)備的更詳細(xì)實(shí)例;
[0006] 圖4圖示與圖3的實(shí)例一起使用的內(nèi)存地址空間的實(shí)例;
[0007] 圖5示出圖3所示的處理設(shè)備的不同安全狀態(tài)的實(shí)例;
[0008] 圖6圖示區(qū)域辨識指令的示例性編碼;
[0009] 圖7圖示區(qū)域辨識指令的示例性結(jié)果;
[0010]圖8示出具有用于產(chǎn)生區(qū)域編號的邏輯的內(nèi)存屬性單元的實(shí)例,該區(qū)域編號辨識 對應(yīng)目標(biāo)地址的區(qū)域;
[0011] 圖9A圖示藉由向預(yù)定緩存器寫入目標(biāo)地址觸發(fā)區(qū)域辨識操作的實(shí)例;
[0012] 圖9B圖示在不同域中提供不同預(yù)定緩存器以便觸發(fā)對于內(nèi)存屬性單元的區(qū)域辨 識操作的實(shí)例;
[0013] 圖10圖示使用自較不安全域傳遞的地址的安全域中的函數(shù)的實(shí)例;
[0014] 圖11圖示可取決于自較不安全域傳遞的地址跨越哪些內(nèi)存屬性區(qū)域而發(fā)生的問 題的實(shí)例;
[0015] 圖12圖示使用區(qū)域辨識操作檢查可安全執(zhí)行安全域中的函數(shù)的實(shí)例;
[0016] 圖13圖示可使用區(qū)域辨識操作加速新庫的啟動的實(shí)例;以及
[0017] 圖14是示出執(zhí)行區(qū)域辨識操作的方法的流程圖。
【具體實(shí)施方式】
[0018] 從一方面看,本技術(shù)提供一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包含:
[0019] 處理電路,被配置為執(zhí)行數(shù)據(jù)處理;
[0020] 內(nèi)存屬性單元,包含多個儲存區(qū)域,每一儲存區(qū)域被配置為儲存屬性數(shù)據(jù)以便藉 由處理電路控制對對應(yīng)內(nèi)存地址范圍的存取;并且
[0021] 其中響應(yīng)于目標(biāo)內(nèi)存地址,處理電路被配置為執(zhí)行區(qū)域辨識操作以輸出區(qū)域辨識 值,該值用于辨識多個儲存區(qū)域中的何者是由對應(yīng)于包括所述目標(biāo)內(nèi)存地址的內(nèi)存地址范 圍的內(nèi)存屬性單元所指示的對應(yīng)儲存區(qū)域,其中目標(biāo)內(nèi)存地址是實(shí)體地址并且區(qū)域辨識值 適用于藉由數(shù)據(jù)處理設(shè)備所執(zhí)行的至少一些軟件。
[0022] 本技術(shù)認(rèn)識到,在有些情形中處理電路執(zhí)行區(qū)域辨識操作以輸出區(qū)域辨識值是有 用的,該值辨識內(nèi)存屬性單元的儲存區(qū)域中的何者對應(yīng)于指定目標(biāo)地址,以便使得區(qū)域辨 識值可用于由數(shù)據(jù)處理設(shè)備執(zhí)行的至少一些軟件。此為不尋常的,因?yàn)楫?dāng)在內(nèi)存屬性單元 中查找目標(biāo)內(nèi)存地址時通常僅將獲得屬性數(shù)據(jù)本身。哪一儲存區(qū)域映射至特定目標(biāo)地址通 常并不著重考慮,因?yàn)榭稍谌我粌Υ鎱^(qū)域中置放給定地址的屬性數(shù)據(jù)。然而,本技術(shù)認(rèn)識 到,區(qū)域辨識操作可幫助例如加速檢查對于一系列地址的存取許可。在沒有區(qū)域辨識操作 情況下,檢查容許對整個范圍的地址的存取將需要檢查對于該范圍內(nèi)的每一個別地址的許 可。然而,通過使得區(qū)域辨識值可用于軟件,檢查哪一儲存區(qū)域與該范圍的起始地址及結(jié)束 地址關(guān)聯(lián)來查看兩者是否皆與相同儲存區(qū)域相關(guān)是可能的。若皆與相同儲存區(qū)域相關(guān),則 對于整個范圍的地址的存取許可為相同,且因此不必檢查對于每一個別地址的許可,從而 增加效能及減少功率消耗。即使起始地址與結(jié)束地址并不相同,區(qū)域辨識操作可用于決定 存取許可變化的點(diǎn),以便減少檢查次數(shù)。如下文將論述,區(qū)域辨識操作亦可幫助在更新內(nèi)存 屬性單元時引進(jìn)新上下文、程序或庫的屬性。
[0023]目標(biāo)內(nèi)存地址為實(shí)體地址,此意謂內(nèi)存屬性單元將連續(xù)目標(biāo)內(nèi)存地址映射至處理 電路與內(nèi)存之間邊界處的連續(xù)內(nèi)存地址(換言之,連續(xù)目標(biāo)內(nèi)存地址映射至輸出到內(nèi)存的 連續(xù)地址)。在許多情況中,輸出到內(nèi)存的地址可為與對應(yīng)目標(biāo)地址相同的地址。然而,內(nèi)存 屬性單元亦可能應(yīng)用簡單映射,諸如添加常數(shù)至自處理電路所接收的所有目標(biāo)地址以產(chǎn)生 輸出到內(nèi)存的地址,且此情況亦考慮使用實(shí)體目標(biāo)地址。此與內(nèi)存管理單元完全不同,該內(nèi) 存管理單元提供自處理器所指定的虛擬目標(biāo)地址至輸出到內(nèi)存的實(shí)體地址的任意地址變 換。在內(nèi)存管理單元中,可將連續(xù)目標(biāo)地址映射至輸出到內(nèi)存的非連續(xù)地址。本技術(shù)的區(qū)域 辨識操作對于內(nèi)存管理單元而言并不那么有用,因?yàn)橥ǔT趦?nèi)存地址的頁面粒度下實(shí)施地 址變換,該頁面粒度傾向于相對較小(例如,4K地址),且因此單個程序或程式可使用對應(yīng)于 許多不同頁面的地址。此意謂區(qū)域辨識操作可用于減少如上文所論述的所需檢查的量的可 能性更小,因?yàn)橥ǔF鹗嫉刂芳敖Y(jié)束地址將對應(yīng)于內(nèi)存管理單元的不同頁面,即便是起始 地址及結(jié)束地址與相同程序相關(guān)。與此相反,在內(nèi)存屬性單元使用實(shí)體地址作為目標(biāo)地址 的情況下,對應(yīng)于內(nèi)存屬性單元的單個儲存區(qū)域的地址范圍傾向于比內(nèi)存管理單元的地址 范圍更大,且由單個程序所使用的地址范圍的整體通常將對應(yīng)于單個儲存區(qū)域。因此,區(qū)域 辨識操作發(fā)現(xiàn)起始地址及結(jié)束地址與相同儲存區(qū)域關(guān)聯(lián)的可能性更大,以允許減少如上文 所論述的檢查。
[0024] 可以不同方式觸發(fā)區(qū)域辨識操作。舉例而言,可提供專用區(qū)域辨識指令,該指令指 定目標(biāo)內(nèi)存地址。程序設(shè)計師可在代碼中包括區(qū)域辨識指令以觸發(fā)處理電路執(zhí)行區(qū)域辨識 操作及輸出區(qū)域辨識值。
[0025] 或者,可不存在專用區(qū)域辨識指令。實(shí)情為,可提供預(yù)定緩存器,當(dāng)用目標(biāo)內(nèi)存地 址寫入時,該預(yù)定緩存器觸發(fā)處理電路執(zhí)行區(qū)域辨識操作以辨識與目標(biāo)內(nèi)存地址關(guān)聯(lián)的區(qū) 域。舉例而言,通用儲存或移動指令可用于將目標(biāo)內(nèi)存地址寫入到預(yù)定緩存器中。
[0026]區(qū)域辨識操作不必總是回傳有效區(qū)域辨識值??纱嬖诟鞣N情形,其中可輸出無效 區(qū)域辨識值。舉例而言,若存在以下情況,則可輸出無效區(qū)域辨識值:
[0027] (a)禁用內(nèi)存屬性單元;或
[0028] (b)目標(biāo)內(nèi)存地址不對應(yīng)于多個區(qū)域中的任何者;或
[0029] (c)目標(biāo)內(nèi)存地址對應(yīng)于多個區(qū)域中的兩者或更多者;
[0030] (d)目標(biāo)內(nèi)存地址對應(yīng)于啟用的多個區(qū)域中的兩者或更多者;或
[0031] (e)目標(biāo)內(nèi)存地址不對應(yīng)于啟用的多個區(qū)域中的任何者;或
[0032] (f)當(dāng)處理電路處于具有不充分安全特權(quán)的操作模式中時,執(zhí)行區(qū)域辨識操作來 決定區(qū)域辨識值。
[0033] 給定數(shù)據(jù)處理設(shè)備不必應(yīng)用所有這些標(biāo)準(zhǔn)及可應(yīng)用這些標(biāo)準(zhǔn)中的任一或更多者 來偵測是否應(yīng)輸出無效區(qū)域辨識值。
[0034]可以不同方式表示無效區(qū)域辨識值。在一個實(shí)例中,可使用預(yù)定值表示無效區(qū)域 辨識值,該預(yù)定值并不表示內(nèi)存屬性單元的真實(shí)儲存區(qū)域。舉例而言,若使用〇與正整數(shù)之 間的數(shù)字表示內(nèi)存屬性單元的儲存區(qū)域,則可使用負(fù)值(例如,-1)指示無效區(qū)域辨識值。或 者,可使用無效旗標(biāo)表示無效區(qū)域辨識值,該無效旗標(biāo)與區(qū)域辨識值一起輸出且被設(shè)置為 一值,該值指示該關(guān)聯(lián)的區(qū)域辨識值為無效的。在此情況中,則區(qū)域辨識值可具有一值(例 如,零),該值原本將發(fā)送信號告知內(nèi)存屬性單元的真實(shí)區(qū)域,但該值由無效旗標(biāo)指示為不 表示有效區(qū)域。
[0035] 關(guān)于上文情況(f),在一些情形中,可能不希望與給定地址關(guān)聯(lián)的儲存區(qū)域變得可 被用戶或程序使用,因此若在處于具有不充分安全特權(quán)的狀態(tài)下時執(zhí)行區(qū)域辨識操作來決 定區(qū)域辨識值,則可能會輸出無效區(qū)域辨識值。在使用與區(qū)域辨識值一起輸出的無效旗標(biāo) 表示無效值的情況中,將對應(yīng)區(qū)域辨識值設(shè)置為預(yù)定值(例如,零)可用于防止具有不充分 安全特權(quán)的程序自區(qū)域辨識值獲得信息。舉例而言,在具有安全狀態(tài)及較不安全狀態(tài)的系 統(tǒng)中,可需要防止較不安全狀態(tài)下的代碼存取安全狀態(tài)下所使用的關(guān)于內(nèi)存屬性單元的儲 存區(qū)域的信息,因?yàn)楣粽呖墒褂么诵畔Q定關(guān)于由安全狀態(tài)所使用的地址映射的信息, 該信息可用于輔助攻擊。通過防止有效區(qū)域辨識值在較不安全狀態(tài)下被回傳,可維持安全 性。
[0036] 當(dāng)執(zhí)行區(qū)域辨識操作時,處理電路亦可輸出額外信息以及區(qū)域辨識值。舉例而言, 此額外信息可包含以下的任意一者或更多者:
[0037] ?儲存于對應(yīng)儲存區(qū)域中的屬性數(shù)據(jù)中的至少一些,
[0038] ?來源于儲存于對應(yīng)儲存區(qū)域中的屬性數(shù)據(jù)中的至少一些的信息,
[0039] ?安全狀態(tài)的指示,該安全狀態(tài)與對應(yīng)儲存區(qū)域的內(nèi)存地址范圍關(guān)聯(lián),或
[0040] ?對應(yīng)于對應(yīng)儲存區(qū)域的內(nèi)存地址范圍的起始地址及/或結(jié)束地址的值。
[0041] 在執(zhí)行區(qū)域辨識操作的情形中,通常亦需要檢查關(guān)于目標(biāo)地址的額外信息,諸如 此地址的屬性數(shù)據(jù)或安全狀態(tài),且因此藉由響應(yīng)于區(qū)域辨識操作輸出此額外信息,此舉移 除了執(zhí)行獨(dú)立操作來檢查額外信息的需要。內(nèi)存屬性單元的硬件可在任何情況下響應(yīng)于查 找回傳額外信息,且因此可需要對硬件實(shí)行極少修改,以便延伸區(qū)域辨識操作以輸出額外 ig 息
[0042] 在內(nèi)存地址范圍的起始地址及/或結(jié)束地址的情況中,額外信息不必明確表示這 些起始地址或結(jié)束地址。可使用可用于衍生起始地址或結(jié)束地址的任何值。舉例而言,若其 屬性被界定的內(nèi)存地址范圍必須與兩個地址邊界的η次冪對準(zhǔn),則可使用2的η次冪的倍數(shù) 表示地址,而不是地址值本身。此外,可使用一值表示結(jié)束地址,該值表示結(jié)束地址相對于 起始地址或地址范圍的總大小的偏移,且類似地亦可將該偏移表示為2的η次冪。
[0043]可藉由處理電路將由區(qū)域辨識操作輸出的區(qū)域辨識值寫入到目的地緩存器的至 少一部分中。因此,區(qū)域辨識值可變得可由后續(xù)指令使用。不常用這種方式使得區(qū)域辨識值 對程序設(shè)計師可用,因?yàn)槌绦蛟O(shè)計師通常僅關(guān)心與給定地址相對應(yīng)的屬性數(shù)據(jù),并且不關(guān) 心哪些存儲區(qū)域存儲地址的屬性數(shù)據(jù)??山逵缮衔乃摷暗膮^(qū)域辨識指令指定目的地緩存 器,或目的地緩存器可為處理電路應(yīng)寫入?yún)^(qū)域辨識值的默認(rèn)緩存器。亦可將諸如上文所描 述的無效旗標(biāo)或額外信息以及區(qū)域辨識值寫入到目的地緩存器中。
[0044] 可以不同方式表示區(qū)域辨識值。在一個實(shí)例中,區(qū)域辨識值可包含對應(yīng)儲存區(qū)域 的區(qū)域編號??梢圆煌绞疆a(chǎn)生區(qū)域編號。在一個實(shí)例中,內(nèi)存屬性單元可響應(yīng)于對于目標(biāo) 地址的查找而產(chǎn)生區(qū)域編號。針對執(zhí)行正常內(nèi)存屬性查找來發(fā)現(xiàn)給定地址的屬性數(shù)據(jù),內(nèi) 存屬性單元通常將具有用于比較目標(biāo)地址與每一區(qū)域的地址范圍的比較器,且因此可使用 由這些比較器產(chǎn)生的命中信號衍生區(qū)域編號?;蛘撸恳粌Υ鎱^(qū)域可儲存辨識彼區(qū)域的區(qū) 域編號。在此情況中,當(dāng)執(zhí)行區(qū)域辨識操作時,處理電路可控制內(nèi)存屬性單元從對應(yīng)儲存區(qū) 域中獲得區(qū)域編號并且處理電路隨后輸出該區(qū)域編號。
[0045] 區(qū)域辨識值亦可為另一參數(shù),該參數(shù)指示與給定地址關(guān)聯(lián)的儲存區(qū)域。舉例而言, 若對應(yīng)于內(nèi)存屬性單元的不同區(qū)域的內(nèi)存地址范圍并未重迭,則如藉由處理電路查看的, 每一內(nèi)存地址范圍的起始地址或結(jié)束地址可辨識儲存彼范圍的屬性數(shù)據(jù)的儲存區(qū)域。
[0046] 內(nèi)存屬性單元可包含儲存屬性數(shù)據(jù)的任何單元,這些屬性數(shù)據(jù)控制處理電路執(zhí)行 對于給定內(nèi)存地址的內(nèi)存存取的能力。舉例而言,內(nèi)存屬性單元可用于加強(qiáng)更安全狀態(tài)與 較不安全狀態(tài)之間的邊界,或用于將某些地址范圍設(shè)置成對某些軟件而言為不可存取(例 如,可不允許應(yīng)用程序軟件存取與操作系統(tǒng)或超管理器關(guān)聯(lián)的地址范圍)。
[0047]在一些情況中,處理設(shè)備內(nèi)可存在超過一種類型的內(nèi)存屬性單元。若如此,則可需 要辨識第一內(nèi)存屬性單元內(nèi)的哪個區(qū)域?qū)?yīng)于一目標(biāo)地址及第二內(nèi)存屬性單元內(nèi)的哪個 區(qū)域?qū)?yīng)于該目標(biāo)地址。為了加速此類型操作,區(qū)域辨識操作可輸出對應(yīng)于第一內(nèi)存屬性 單元的第一辨識值及對應(yīng)于第二內(nèi)存屬性單元的第二區(qū)域辨識值兩者。舉例而言,單個區(qū) 域辨識指令可回傳兩個(或更多個)不同區(qū)域辨識值,使得不必執(zhí)行兩個獨(dú)立指令,從而加 速處理。
[0048]在區(qū)域辨識操作辨識兩個或更多個內(nèi)存屬性單元的對應(yīng)區(qū)域的情況中,區(qū)域辨識 操作亦使用儲存于第一內(nèi)存屬性單元的對應(yīng)第一儲存區(qū)域中的第一屬性數(shù)據(jù)的至少一部 分及儲存于第二內(nèi)存屬性單元的對應(yīng)第二儲存區(qū)域中的第二屬性數(shù)據(jù)的至少一部分決定 組合屬性參數(shù)可為非常有用的。舉例而言,第一內(nèi)存屬性單元及第二內(nèi)存屬性單元可設(shè)置 用于存取給定內(nèi)存地址的不同條件,且因此為了決定是否允許一存取,可需要考慮兩個內(nèi) 存屬性單元中的屬性數(shù)據(jù)。藉由使用來自相應(yīng)內(nèi)存屬性單元中的屬性數(shù)據(jù)衍生組合屬性參 數(shù)作為區(qū)域辨識操作中的一部分,此舉可減少檢查是否允許內(nèi)存存取所需要的指令數(shù)量。 舉例而言,在一些指令集中,存在可相對容易地檢查緩存器內(nèi)的單個位是否具有所需值的 指令,但檢查兩個或更多個位是否具有所需值可更為復(fù)雜且需要若干指令。區(qū)域辨識操作 可用于將來自第一內(nèi)存屬性單元及第二內(nèi)存屬性單元的兩條或更多條信息減少至單個位, 使得可使用較少指令迅速且有效率地檢查兩個單元中的存取許可。
[0049] 本技術(shù)在具有處理電路的系統(tǒng)中特別有用,該處理電路具有多個操作域,這些域 包括至少一安全域及一較不安全域。當(dāng)在安全域中操作處理電路時,處理電路存取在較不 安全域中操作處理電路時所不可存取的至少一些數(shù)據(jù)。內(nèi)存屬性單元可用于決定哪些地址 僅在安全域中可存取及哪些地址在安全域及較不安全域兩者中皆可存取。藉由使用區(qū)域辨 識操作,可迅速檢查一系列地址是否全部與相同儲存區(qū)域相關(guān),從而避免需要個別地檢查 每一地址的存取屬性,且因此加速處理及減少功率消耗。
[0050] 安全域及較不安全域可具有各種形式。在一個實(shí)例中,安全域可對應(yīng)于特權(quán)狀態(tài), 其中可執(zhí)行諸如操作系統(tǒng)供應(yīng)的特權(quán)代碼,且較不安全域可對應(yīng)于無特權(quán)狀態(tài),其中執(zhí)行 諸如應(yīng)用程序軟件的無特權(quán)代碼。然而,在其他系統(tǒng)中,可存在相同裝置上執(zhí)行的兩個或更 多個"世界"之間的完全分隔,其中安全域?qū)?yīng)于執(zhí)行安全臨界代碼(諸如銀行應(yīng)用程序)或 保險臨界代碼的私密域,且較不安全域?qū)?yīng)于執(zhí)行非安全臨界代碼的公眾域。在一些實(shí)施 例中,私密域及公眾域可不具有彼域內(nèi)的子狀態(tài),諸如上文所描述的無特權(quán)狀態(tài)及特權(quán)狀 態(tài)。大體而言,針對更安全狀態(tài)與較不安全狀態(tài)之間任何邊界,可使用內(nèi)存屬性單元加強(qiáng)該 邊界,且本技術(shù)可用于檢查內(nèi)存屬性單元的哪個區(qū)域?qū)儆诮o定目標(biāo)地址,使得若一對地址 與相同區(qū)域相關(guān),則可決定任何介入地址將亦具有相同屬性數(shù)據(jù)。
[0051] 在一個實(shí)例中,內(nèi)存屬性單元可包含安全保護(hù)單元,該安全保護(hù)單元用于決定多 個域中的何者與指定內(nèi)存地址關(guān)聯(lián)。可以不同方式實(shí)施安全保護(hù)單元??赡軆Υ姘ò踩?旗標(biāo)的屬性數(shù)據(jù),該安全旗標(biāo)指定對應(yīng)地址范圍與安全域相關(guān)還是與較不安全域相關(guān)?;?者,對于域中的至少一者,藉由假定安全保護(hù)單元中不存在其屬性數(shù)據(jù)的任何地址范圍與 彼域關(guān)聯(lián),可在安全保護(hù)單元中隱含地辨識與彼域關(guān)聯(lián)的地址范圍。因此,不必在安全保護(hù) 單元中儲存地址空間中的所有地址的屬性數(shù)據(jù)。舉例而言,安全保護(hù)單元可包括界定對應(yīng) 于安全域的地址范圍的數(shù)據(jù),且若在安全保護(hù)單元中缺失目標(biāo)地址,則可假定該地址與較 不安全域關(guān)聯(lián)(或反之亦然)。若存在兩個以上域,則可在安全保護(hù)單元中指示與除這些域 之一以外的所有域皆關(guān)聯(lián)的地址范圍且安全保護(hù)單元中缺失的地址可被假定為對應(yīng)于剩 余域。
[0052] 在一些實(shí)施例中,安全保護(hù)單元亦可用于決定是否在原本所在的安全域或較不安 全域中操作,例如假定應(yīng)在安全域中執(zhí)行儲存于安全地址范圍中的指令及應(yīng)在較不安全域 中執(zhí)行儲存于較不安全地址范圍中的指令。在一些實(shí)例中,安全保護(hù)單元不必界定除與地 址范圍關(guān)聯(lián)的安全或較不安全狀態(tài)以外的任何其他存取許可。
[0053] 可不希望允許較不安全域中執(zhí)行的代碼決定安全保護(hù)單元的哪些區(qū)域?qū)?yīng)于哪 些地址。攻擊者可能夠使用此信息引發(fā)安全違規(guī)。為了解決此問題,當(dāng)在較不安全域中操作 處理電路時,處理電路可防止區(qū)域辨識操作被成功執(zhí)行。大體而言,若在處于較不安全域中 的同時執(zhí)行區(qū)域辨識操作,處理電路可抑制針對安全保護(hù)單元的區(qū)域辨識值的輸出??梢?不同方式實(shí)現(xiàn)此舉。舉例而言,若在處于較不安全域中的同時嘗試區(qū)域辨識操作,處理電路 可輸出如上文所論述的無效區(qū)域辨識值,或可觸發(fā)錯誤或故障。即使并未輸出與安全保護(hù) 單元關(guān)聯(lián)的區(qū)域辨識值,若對于數(shù)據(jù)處理設(shè)備的當(dāng)前狀態(tài)容許此舉,則仍可輸出另一內(nèi)存 屬性單元的區(qū)域辨識值。
[0054] 內(nèi)存屬性單元的另一形式為內(nèi)存保護(hù)單元(memory protection unit ;MPU),該內(nèi) 存保護(hù)單元儲存諸如讀取或?qū)懭朐S可的屬性數(shù)據(jù)以便控制對內(nèi)存地址范圍的存取。在包含 MPU及如上文所論述的安全域及較不安全域的系統(tǒng)中,則可提供對應(yīng)于不同域的多個MPU。 舉例而言,當(dāng)在安全域操作時,安全MPU可儲存用于控制對地址范圍的存取的屬性數(shù)據(jù),且 當(dāng)在較不安全域中操作時,可使用對應(yīng)的較不安全MPU,及可防止較不安全代碼存取安全 MPU。盡管在一些實(shí)施例中安全MPU與較不安全MPU可為完全獨(dú)立,但相應(yīng)的MPU亦可能共享 一些電路。舉例而言,若在某一時間處預(yù)期安全MPU及較不安全MPU的僅一者為主動,則盡管 可提供不同儲存區(qū)域用于儲存這些單元的屬性數(shù)據(jù),但在MPU之間可共享比較器的公共集 合以便將目標(biāo)地址與每一儲存區(qū)域中所界定的地址范圍進(jìn)行比較。
[0055] 因此,可存在安全保護(hù)單元及一個或更多個MPU兩者。在一個實(shí)例中,區(qū)域辨識操 作可輸出如上文所論述的第一區(qū)域辨識值及第二區(qū)域辨識值兩者,其中第一值對應(yīng)于安全 保護(hù)單元且第二值對應(yīng)于MPU中的一者。
[0056] 在存在多個MPU的情況中,則區(qū)域辨識操作亦可選擇應(yīng)使用MPU中的何者決定區(qū)域 辨識值。舉例而言,此可藉由指定區(qū)域辨識指令中的參數(shù)來實(shí)現(xiàn),該參數(shù)指示應(yīng)存取安全 MPU及較不安全MPU中的何者來決定對應(yīng)區(qū)域?;蛘?,在對專用緩存器的寫入觸發(fā)區(qū)域辨識 操作的情況中,則可由用戶藉由在緩存器中置放旗標(biāo)或藉由提供對應(yīng)于不同MPU的不同專 用緩存器選擇選定MPU,使得選擇用目標(biāo)地址寫入哪個緩存器決定存取哪個MPU。以此方式, 使用者可控制MHJ中的何者被詢問以決定哪個區(qū)域?qū)?yīng)于目標(biāo)地址。
[0057] 當(dāng)處于較不安全域中時,使用者能夠找出安全MPU的哪個區(qū)域?qū)?yīng)于給定地址可 能是不恰當(dāng)?shù)?。若在較不安全域中操作處理器的同時區(qū)域辨識操作試圖選擇安全MPU作為 選定MPU,則可抑制辨識安全MPU的儲存區(qū)域的區(qū)域辨識值的輸出。如上文所論述的,此可以 不同方式實(shí)現(xiàn),諸如藉由輸出無效值或發(fā)送信號告知錯誤或故障。
[0058]從另一方面看,本技術(shù)提供一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包含:
[0059]處理裝置,用于執(zhí)行數(shù)據(jù)處理;以及
[0060] 內(nèi)存屬性儲存裝置,包含多個儲存區(qū)域裝置,該多個儲存區(qū)域裝置用于儲存屬性 數(shù)據(jù)以便藉由處理裝置控制對對應(yīng)內(nèi)存地址范圍的存取;
[0061] 其中響應(yīng)于目標(biāo)內(nèi)存地址,處理裝置被配置為執(zhí)行區(qū)域辨識操作以輸出區(qū)域辨識 值,該值用于辨識多個儲存區(qū)域裝置中的何者是由對應(yīng)于包含目標(biāo)內(nèi)存地址的內(nèi)存地址范 圍的存屬性儲存裝置所指示的對應(yīng)儲存區(qū)域裝置,其中目標(biāo)內(nèi)存地址是實(shí)體地址且區(qū)域辨 識值適用于藉由數(shù)據(jù)處理設(shè)備所執(zhí)行的至少一些軟件。
[0062]從另一方面看,本技術(shù)提供一種用于數(shù)據(jù)處理設(shè)備的數(shù)據(jù)處理方法,該數(shù)據(jù)處理 設(shè)備包含內(nèi)存屬性單元,該內(nèi)存屬性單元包含多個儲存區(qū)域,每一儲存區(qū)域被配置為儲存 屬性數(shù)據(jù)以便藉由處理電路控制對對應(yīng)內(nèi)存地址范圍的存取;該方法包含以下步驟:
[0063] 響應(yīng)于目標(biāo)內(nèi)存地址,執(zhí)行區(qū)域辨識操作;該區(qū)域辨識操作包含以下步驟:
[0064] 決定多個儲存區(qū)域中的何者是由對應(yīng)于包括目標(biāo)內(nèi)存地址的內(nèi)存地址范圍的內(nèi) 存屬性單元所指示的對應(yīng)儲存區(qū)域;
[0065] 以及輸出區(qū)域辨識值,該值辨識多個區(qū)域中的何者是對應(yīng)儲存區(qū)域,其中目標(biāo)內(nèi) 存地址是實(shí)體地址且區(qū)域辨識值適用于藉由數(shù)據(jù)處理設(shè)備所執(zhí)行的至少一些軟件。
[0066] 在方法的一個實(shí)例中,可使用由較不安全域中執(zhí)行的代碼所設(shè)置的一或更多個內(nèi) 存地址執(zhí)行區(qū)域辨識操作作為安全域中所執(zhí)行的函數(shù)的一部分,且區(qū)域辨識操作的目標(biāo)內(nèi) 存地址可為由較不安全域所傳遞的內(nèi)存地址之一。在由較不安全域調(diào)用函數(shù)至安全域中的 目標(biāo)地址及由自較不安全域傳遞的函數(shù)所使用的一或更多個地址的情況中,則存在潛在攻 擊,其中較不安全域可傳入安全地址及隨后在安全域中存取此地址。由于通常將允許對安 全域中的安全地址的存取,此可提供安全孔,在該安全孔中較不安全代碼可控制對安全地 址的存取。然而,藉由在安全域中的函數(shù)中執(zhí)行辨識操作,此可檢查哪個內(nèi)存屬性單元區(qū)域 對應(yīng)于由較不安全域所傳遞的地址,且若由較不安全域所傳遞的所有地址對應(yīng)于相同區(qū)域 及彼區(qū)域具有對于較不安全域的適宜存取許可,則可正常地實(shí)施函數(shù)的其余者,其中具有 比在不存在區(qū)域辨識操作及實(shí)情為必須個別地檢查由較不安全域所傳遞的每一地址情況 下原本需要的更少的檢查。
[0067]結(jié)合附圖,從以下對示意性實(shí)施例的詳細(xì)描述,本技術(shù)的以上和其他主題、特征和 優(yōu)點(diǎn)將是顯而易見的。
[0068]圖1示意性示出具有處理電路4、數(shù)據(jù)儲存器(內(nèi)存)6及內(nèi)存屬性單元7的數(shù)據(jù)處理 設(shè)備,該內(nèi)存屬性單元用于儲存屬性數(shù)據(jù)以便藉由處理電路4控制對內(nèi)存6的存取。圖2示出 內(nèi)存屬性單元7的實(shí)例,該內(nèi)存屬性單元具有若干儲存區(qū)域9,每一儲存區(qū)域9儲存如圖2所 示的地址空間13中所指示的對應(yīng)內(nèi)存地址范圍11的屬性數(shù)據(jù)。盡管在圖1中以單個方塊指 示內(nèi)存6,但是在一些情況中,內(nèi)存地址空間可覆蓋若干不同裝置中的位置(例如,RAM、閃存 裝置、用于外圍設(shè)備的控制緩存器等)。
[0069]對處理電路4可見的地址空間的布局可實(shí)質(zhì)上與對內(nèi)存屬性單元7可見的地址的 布局相同。每一儲存區(qū)域9可由在處理電路4上執(zhí)行的指令配置以便映射至地址空間13中的 不同地址范圍。舉例而言,儲存區(qū)域9可儲存界定對應(yīng)地址范圍的參數(shù),諸如地址范圍的起 始地址及結(jié)束地址,指示地址范圍的大小的參數(shù)及起始地址,或指示與地址范圍的起始地 址對應(yīng)的2的η次冪的倍數(shù)的值及指示地址范圍的大小的大小參數(shù)。在其他實(shí)例中,可將與 儲存區(qū)域9關(guān)聯(lián)的地址范圍固線連接至儲存區(qū)域中。因此,存在不同方式表示對應(yīng)于儲存區(qū) 域9的地址范圍。在一些實(shí)例中,若針對每一儲存區(qū)域9所界定的地址范圍重迭,則內(nèi)存屬性 單元7的配置可為無效,而在其他實(shí)例中,可容許一些重迭地址范圍以便界定對于相同地址 的多層存取許可。在一些實(shí)施例中,地址范圍可具有任意倍數(shù)的給定地址增量(而不是必須 選自有限數(shù)量的范圍大?。铱瑟?dú)立于彼此設(shè)置相鄰地址范圍(例如,Β及C)的長度(不必 約束內(nèi)存屬性單元7來界定各個具有相同長度的若干鄰接地址范圍)。
[0070] 每一儲存區(qū)域9包括一個或更多個屬性15,這些屬性控制處理器4可如何對對應(yīng)地 址范圍內(nèi)的地址執(zhí)行內(nèi)存存取操作。對于一些實(shí)施例,界定對應(yīng)地址范圍的地址或其他參 數(shù)可為藉由內(nèi)存屬性單元7所儲存的唯一屬性數(shù)據(jù)15,其中藉由地址是否具有內(nèi)存屬性單 元中所界定的對應(yīng)地址范圍隱含地指示一些其他信息。對于其他實(shí)施例,除地址范圍界定 數(shù)據(jù)外可存在進(jìn)一步屬性數(shù)據(jù)15,諸如指定處理器4是否可讀取及/或?qū)懭胗傻刂繁孀R的內(nèi) 存6中的位置的數(shù)據(jù),及辨識多個安全狀態(tài)或域中的何者與地址關(guān)聯(lián)的數(shù)據(jù)。當(dāng)對由目標(biāo)地 址辨識的內(nèi)存6中的位置執(zhí)行內(nèi)存存取時,向內(nèi)存屬性單元7提供目標(biāo)地址,該內(nèi)存屬性單 元將目標(biāo)地址與針對儲存區(qū)域9的各者所界定的地址范圍比較,及輸出與對應(yīng)于包括目標(biāo) 地址的地址范圍的區(qū)域9的一者關(guān)聯(lián)的屬性數(shù)據(jù)。處理電路4隨后基于輸出屬性數(shù)據(jù)決定是 否允許對內(nèi)存的存取。向內(nèi)存屬性單元7所提供的目標(biāo)地址為實(shí)體地址(并非虛擬地址),以 使得藉由內(nèi)存屬性單元7將由處理電路4所指定的連續(xù)目標(biāo)內(nèi)存地址映射至輸出到內(nèi)存6的 連續(xù)地址。
[0071]圖3更詳細(xì)地示出處理設(shè)備2的實(shí)例。數(shù)據(jù)處理設(shè)備2包含處理電路4及如圖1所指 示的數(shù)據(jù)儲存器6,且亦包含若干單元42、50、52,這些單元可各自被視為圖1及圖2所示的內(nèi) 存屬性單元7的實(shí)例。數(shù)據(jù)處理設(shè)備2亦包含用于儲存待由處理電路4處理的數(shù)據(jù)的緩存器 8。數(shù)據(jù)儲存器6可包括至少一個高速緩存以及主存儲器。處理電路4包含處理管線,該處理 管線包括用于自數(shù)據(jù)儲存器6擷取指令的擷取階段(fetch stage) 10、用于譯碼所擷取指令 的譯碼階段12及用于執(zhí)行所譯碼指令的運(yùn)行時間14。應(yīng)將了解,管線可包括其他級,例如緩 存器重命名級或發(fā)出級。
[0072] 緩存器8包括若干通用緩存器R0至R12,這些通用緩存器用于代表處理電路4儲存 數(shù)據(jù)。盡管圖3示出13個通用緩存器R0至R12,但可提供其他數(shù)量的緩存器,且視情況亦可提 供用于儲存浮點(diǎn)值的浮點(diǎn)緩存器。緩存器8亦包括一些專用緩存器,這些專用緩存器包括程 序計數(shù)器(program counter;PC)緩存器20、鏈接緩存器(link register;LR)22及堆棧指針 (stack pointer; SP)緩存器24、26。程序計數(shù)器緩存器20儲存程序計數(shù)器,該程序計數(shù)器指 示待由處理電路4執(zhí)行的下一程序指令的地址。大體而言,在執(zhí)行指令后,將更新程序計數(shù) 器以指示來自內(nèi)存的下一指令。然而,響應(yīng)于控制流變更指令,可將程序計數(shù)器設(shè)置為一 值,該值并未指向下一后續(xù)指令。鏈接緩存器22可儲存在自函數(shù)或異常傳回時所使用的回 傳值以決定在完成函數(shù)或異常后應(yīng)處理哪個程序指令。堆棧指針緩存器24、26分別儲存安 全堆棧指針及較不安全堆棧指針,這些指針指向數(shù)據(jù)儲存器6中的安全堆棧30及較不安全 堆棧32。舉例而言,堆棧指針可指示置放于堆棧30、32上的最后項(xiàng)目的位置,或可指示置放 于堆棧30、32上的數(shù)據(jù)值應(yīng)被寫入到的下一位置。
[0073]提供安全保護(hù)硬件40以加強(qiáng)安全域與較不安全域之間的分離。安全保護(hù)硬件具有 安全保護(hù)單元42,該安全保護(hù)單元儲存界定數(shù)據(jù)儲存器6的區(qū)域是否為安全區(qū)域或較不安 全區(qū)域的保護(hù)數(shù)據(jù)。圖3示出一實(shí)例,其中數(shù)據(jù)儲存器6具有一個安全區(qū)域44及一個較不安 全區(qū)域46,但實(shí)際上數(shù)據(jù)儲存器6可包括每一類型的若干個區(qū)域。在一些實(shí)例中,安全保護(hù) 單元42可僅包括界定與安全域及較不安全域之一關(guān)聯(lián)的地址范圍的屬性數(shù)據(jù),以及認(rèn)為在 安全保護(hù)單元42中未界定的地址范圍與安全域及較不安全域中的另一者相關(guān)。在安全域中 藉由處理電路4執(zhí)行數(shù)據(jù)儲存器6的安全區(qū)域44內(nèi)安置的代碼46,而在較不安全域中執(zhí)行較 不安全區(qū)域46內(nèi)安置的代碼48。當(dāng)處于較不安全域中時,處理電路4不可存取儲存于安全區(qū) 域44中的數(shù)據(jù)或指令。藉由安全保護(hù)硬件40控制較不安全域與安全域之間的轉(zhuǎn)換以確保僅 接受某些已允許轉(zhuǎn)換。
[0074] 數(shù)據(jù)處理設(shè)備2包含安全內(nèi)存保護(hù)單元(MPU)50及較不安全MPU52,這些MPU分別用 于界定對于數(shù)據(jù)儲存器6的安全區(qū)域44及較不安全區(qū)域46的存取許可。MPU 50、52經(jīng)由總線 矩陣5存取數(shù)據(jù)儲存器6。存取許可控制安全區(qū)域44及較不安全區(qū)域46的子區(qū)域是否為可存 取或不可存取,使得可在不同程序或軟件程序的安全區(qū)域或較不安全區(qū)域內(nèi)設(shè)置不同存取 許可。藉由安全MPU 50及較不安全MPU 52所界定的區(qū)域可重迭。舉例而言,安全MPU 50及較 不安全MPU 52可界定相同內(nèi)存區(qū)域的不同屬性。
[0075]圖4示出數(shù)據(jù)儲存器6的內(nèi)存地址空間的實(shí)例。地址空間具有安全區(qū)域44及較不安 全區(qū)域46。盡管圖4示出一個較不安全區(qū)域44及一個安全區(qū)域46,但可提供更多數(shù)目的不相 連安全區(qū)域及較不安全區(qū)域。安全保護(hù)單元42儲存界定數(shù)據(jù)儲存器6的哪些區(qū)域?yàn)榘踩珔^(qū) 域或較不安全區(qū)域的數(shù)據(jù)(可藉由在安全保護(hù)單元42中缺乏界定地址范圍的數(shù)據(jù)而隱含地 指示這些區(qū)域之一)。
[0076]安全區(qū)域44包括對應(yīng)于安全軟件庫的一或更多個安全堆棧30。舉例而言,安全區(qū) 域44亦包含對應(yīng)于應(yīng)用程序代碼或應(yīng)用程序級別軟件庫的無特權(quán)安全代碼46及對應(yīng)于操 作系統(tǒng)的特權(quán)安全代碼47。安全MPU 50控制安全區(qū)域44的哪些子區(qū)域與無特權(quán)或特權(quán)模式 相關(guān)。類似地,較不安全區(qū)域46包括在較不安全域中執(zhí)行的較不安全代碼48(包括特權(quán)及無 特權(quán)代碼)、由較不安全代碼48所使用的較不安全堆棧32及較不安全數(shù)據(jù)39。較不安全MPU 52控制較不安全區(qū)域46中的數(shù)據(jù)或代碼是否為特權(quán)或無特權(quán)的。通常,無特權(quán)代碼不可存 取特權(quán)數(shù)據(jù)或代碼。內(nèi)存地址空間亦包括保留地址范圍150,該保留地址范圍并不對應(yīng)于任 何有效指令地址。此保留范圍可用于特定函數(shù),諸如提供可觸發(fā)特定事件的虛設(shè)地址。舉例 而言,保留地址范圍150可包含范圍0xR)000000至OxFFFFFFFF中的地址。
[0077]圖5示意性示出處理設(shè)備2的不同狀態(tài)。設(shè)備具有較不安全域70及安全域80,這些 域提供處理設(shè)備2的分隔,使得可在沒有較不安全程序及操作系統(tǒng)的存取風(fēng)險下安全地執(zhí) 行安全程序及操作系統(tǒng)??稍谳^不安全域70與安全域80之間實(shí)行直接函數(shù)調(diào)用及分支,其 中安全保護(hù)硬件40管制域70、80之間的邊界及確保容許域之間的轉(zhuǎn)換。處理的相同線程可 包括安全域80及較不安全域70兩者中的處理。舉例而言,較不安全應(yīng)用程序可分支至安全 區(qū)域以執(zhí)行安全臨界函數(shù)(諸如密碼檢查或付款處理),且隨后分支回到較不安全區(qū)域用于 并非安全臨界的進(jìn)一步處理。當(dāng)設(shè)備2處于較不安全域70中時,則安全保護(hù)單元42確保與安 全域80關(guān)聯(lián)的數(shù)據(jù)為不可存取。
[0078]在較不安全域70及安全域80的各者內(nèi),存在無特權(quán)狀態(tài)90及特權(quán)狀態(tài)100。大體而 言,特權(quán)狀態(tài)100用于特權(quán)軟件(諸如操作系統(tǒng)),而無特權(quán)狀態(tài)90用于無特權(quán)代碼(諸如應(yīng) 用程序及庫)。與較不安全域70及安全域80不同,無特權(quán)狀態(tài)90與特權(quán)狀態(tài)100之間的分支 或函數(shù)調(diào)用大體上不可能,且可需要上下文切換或異常以在特權(quán)模式與無特權(quán)模式之間切 換。給定線程通常將在無特權(quán)狀態(tài)90或者特權(quán)狀態(tài)100的一者中操作,而非兩者。大體而言, 當(dāng)處于無特權(quán)狀態(tài)90中時,則與特權(quán)狀態(tài)100關(guān)聯(lián)的數(shù)據(jù)為不可存取(盡管可存在異常,允 許安全域80中的無特權(quán)狀態(tài)90自較不安全域70中的特權(quán)狀態(tài)100存取數(shù)據(jù))。當(dāng)處理設(shè)備2 處于安全域80中時,安全MPU 50界定指示地址范圍在特權(quán)狀態(tài)或無特權(quán)狀態(tài)下是否為可存 取的存取許可,而當(dāng)處理設(shè)備2處于較不安全域70中時,較不安全MPU 52界定指示地址范圍 是否自特權(quán)狀態(tài)或無特權(quán)狀態(tài)可存取的存取許可。
[0079]通常,可使用目標(biāo)地址查詢內(nèi)存屬性單元7(諸如安全保護(hù)單元42或安全MPU 50或 較不安全MPU 52)及隨后將回傳對應(yīng)目標(biāo)地址的屬性值。然而,本技術(shù)認(rèn)識到,存在一些情 形,其中能夠回傳區(qū)域辨識符是有用的,該區(qū)域辨識符辨識內(nèi)存屬性單元7 (42、50、52)的儲 存區(qū)域9中的何者對應(yīng)于目標(biāo)地址。因此,處理電路4能夠響應(yīng)于指令執(zhí)行區(qū)域辨識操作,以 便辨識對應(yīng)于指定目標(biāo)地址的儲存區(qū)域9及輸出辨識儲存區(qū)域的區(qū)域辨識值。
[0080]圖6示出用于觸發(fā)處理電路4執(zhí)行區(qū)域辨識操作的區(qū)域辨識指令的實(shí)例。區(qū)域辨識 指令TT具有指定源緩存器Rn及目的地緩存器Rd的編碼以及稍后將描述的可選旗標(biāo)A(其他 實(shí)施例可未使用旗標(biāo)A)。程序設(shè)計師寫入程序,使得在執(zhí)行區(qū)域辨識指令TT前在源緩存器 Rn中置放指定目標(biāo)地址。響應(yīng)于區(qū)域辨識指令,處理電路4執(zhí)行區(qū)域辨識操作,其中使用內(nèi) 存屬性單元7決定儲存區(qū)域9中的何者對應(yīng)于緩存器Rn中的目標(biāo)地址,及隨后將結(jié)果值寫入 到目的地緩存器Rd中,該目的地緩存器Rd包括辨識區(qū)域9中的何者對應(yīng)于該地址的區(qū)域辨 識值。
[0081] 圖7示出寫入到目的地緩存器Rd中的結(jié)果值的實(shí)例。在圖3的實(shí)例中,由于存在兩 種類型內(nèi)存屬性單元7(安全保護(hù)單元42及MPU 50、52),則區(qū)域辨識操作回傳兩個不同區(qū)域 辨識值:一個值MREGI0N指示安全MPU 50或較不安全MPU 52的哪個儲存區(qū)域?qū)?yīng)于目標(biāo)地 址,且第二值PREGI0N指示安全保護(hù)單元42的哪個儲存區(qū)域?qū)?yīng)于目標(biāo)地址。大體而言,對 于MPU,值MREGI0N可辨識對應(yīng)于操作的當(dāng)前域的MPU50、52的一者中的對應(yīng)儲存區(qū)域。然而, 若設(shè)置"alt"旗標(biāo)A,則可查找出來自相對域的MPU 50、52(僅當(dāng)在安全域中操作時可允許此 舉)。在僅具有一個內(nèi)存屬性單元7的其他實(shí)施例中,可提供僅一個區(qū)域辨識值。
[0082] 在此實(shí)例中,結(jié)果值亦包括若干其他條額外信息,基于對應(yīng)于目標(biāo)地址的儲存區(qū) 域9的屬性數(shù)據(jù)決定這些信息。由于已查找內(nèi)存屬性單元7用于辨識對應(yīng)儲存區(qū)域,亦可有 效率地自對應(yīng)儲存區(qū)域9回傳額外數(shù)條屬性數(shù)據(jù)以避免需要為了決定屬性數(shù)據(jù)而執(zhí)行進(jìn)一 步指令。
[0083]在此實(shí)例中,結(jié)果值包括信息的以下字段:
[0084] MREGI0N(位[7:0]):目標(biāo)地址映射到的MPU區(qū)域的區(qū)域編號。
[0085] PREGI0N(位[15:8]):目標(biāo)地址映射到的安全保護(hù)單元42的區(qū)域編號。
[0086] MRVALID(位[16]):若MREGI0N字段為有效,此字段設(shè)置為1。若以下條件中的任何 者為真,MREGI0N字段將為無效的:
[0087] ?被詢問的MPU 50、52不存在或被禁用 [0088] ?目標(biāo)地址匹配多個啟用MPU區(qū)域
[0089] ?目標(biāo)地址不匹配啟用的MPU區(qū)域
[0090] ?當(dāng)處于無特權(quán)模式下時執(zhí)行區(qū)域辨識操作,且未指定A旗標(biāo)(當(dāng)處于安全域80中 的無特權(quán)狀態(tài)下時,并不允許存取關(guān)于與安全域80中的特權(quán)狀態(tài)關(guān)聯(lián)的區(qū)域的信息,但可 存取關(guān)于較不安全域80中的特權(quán)區(qū)域及無特權(quán)區(qū)域的信息,此為必須指定A旗標(biāo)的原因,以 便安全域中的區(qū)域辨識操作的無特權(quán)執(zhí)行為有效)。
[0091] 視情況,若當(dāng)處于非安全域中時執(zhí)行區(qū)域辨識操作,可產(chǎn)生無效MREGI0N字段,且 指定A旗標(biāo)(當(dāng)處于非安全域中時,并不允許存取關(guān)于安全MPU 50的信息)?;蛘撸舢?dāng)處于 非安全域中時指定A旗標(biāo),可將指令視為未界定,在此情況中完全不可執(zhí)行區(qū)域辨識操作。 [0092] PRVALID(位[17]):若PREGI0N字段為有效,此字段設(shè)置為1。若以下條件中的任何 者為真,PREGI0N字段將為無效的:
[0093] ?禁用安全保護(hù)單元42
[0094] ?目標(biāo)地址匹配安全保護(hù)單元42中的多個啟用區(qū)域
[0095] ?目標(biāo)地址不匹配安全保護(hù)單元中的任何啟用區(qū)域
[0096] ?在處于非安全域中時執(zhí)行區(qū)域辨識操作(非安全域中的代碼不可存取關(guān)于安全 保護(hù)單元42的區(qū)域的信息,該信息可提供哪些地址與安全數(shù)據(jù)或代碼相關(guān)的提示)。
[0097] ?在未實(shí)施藉由安全保護(hù)硬件40所提供的安全/較不安全域分隔的設(shè)備上執(zhí)行區(qū) 域辨識操作。
[0098] R(位[18 ]):讀取可存取性。若當(dāng)在特權(quán)模式及無特權(quán)模式的當(dāng)前者中操作時可根 據(jù)選定MHJ的許可讀取藉由目標(biāo)地址所辨識的內(nèi)存位置,則R設(shè)置為1。
[0099] RW(位[19]):讀取/寫入可存取性。若當(dāng)在特權(quán)模式及無特權(quán)模式的當(dāng)前者中操作 時可根據(jù)選定MHJ的許可讀取及寫入藉由目標(biāo)地址所辨識的內(nèi)存位置,則RW設(shè)置為1。
[0100] NPR(位[20]):等于R且(非P)。若設(shè)置為1,此指示可讀取該地址且該地址與較不安 全域70關(guān)聯(lián)。
[0101] NPRW(位[21]):等于RW且(非P)。若設(shè)置為1,此指示可讀取及寫入該目標(biāo)地址且該 目標(biāo)地址與較不安全域70關(guān)聯(lián)。
[0102] P(位[22]):私密性。值1指示內(nèi)存位置與安全(私密)域80關(guān)聯(lián),而值0指示內(nèi)存位 置與較不安全(公眾)域70關(guān)聯(lián)。僅當(dāng)處于安全域80中時執(zhí)行區(qū)域辨識操作,此字段為有效。
[0103] 參數(shù)NPR及NPRW來源于從MPU 50或52中獲得的屬性數(shù)據(jù)R或RW中的一些及從安全 保護(hù)單元42中獲得的屬性數(shù)據(jù)P中的一些。藉由將此衍生參數(shù)決定作為區(qū)域辨識操作的一 部分,不必執(zhí)行進(jìn)一步指令來組合此信息。檢查是否容許讀取/寫入地址及地址是否為較不 安全地址是具有圖5所示狀態(tài)的系統(tǒng)中相對常見的操作。藉由回傳指示兩條信息的單個位, 此大大簡化了進(jìn)一步檢查,因?yàn)榇篌w上可使用單個指令有效率地檢查緩存器Rd內(nèi)單個位的 值,但檢查兩個或更多個位的值(例如,獨(dú)立位R及P或RW及P)可更為復(fù)雜。在其他實(shí)例中,使 用來自不同屬性單元7的信息中的一些可獲得其他衍生參數(shù)。
[0104] 下文展示表示響應(yīng)于圖6所示的指令編碼所執(zhí)行的區(qū)域辨識操作的偽代碼的實(shí)例 (縮寫PAU指示安全保護(hù)單元且術(shù)語"私密"及"公眾"分別指示安全域及較不安全域): d ^ UX ; π ^ 'λ Ι':. - A w y 1f ;
[0105] xf: d XN 15 > ! : r; 15 t if ^1;: ? ? ) ·:.UNDΗ-?'ΙΗ???D;
[0106] 操作:
[0108]
[0110]
[0111]
[0112] 圖8示出內(nèi)存屬性單元7的硬件的實(shí)例(可為安全保護(hù)單元42或MPU 50、52之一)。 每一儲存區(qū)域9可由眾多緩存器表示,這些緩存器用于儲存對應(yīng)區(qū)域的屬性數(shù)據(jù)。圖8示出 一實(shí)例,其中區(qū)域編號(用于PREGI0N或MREGI0N字段)并未儲存于內(nèi)存屬性單元的儲存區(qū)域 9中的屬性數(shù)據(jù)內(nèi),但實(shí)情為該區(qū)域編號由內(nèi)存屬性單元7產(chǎn)生。因此,當(dāng)響應(yīng)于區(qū)域辨識操 作將地址輸入至內(nèi)存屬性單元時,則比較器110比較輸入地址與界定對應(yīng)于每一區(qū)域9的內(nèi) 存地址范圍的數(shù)據(jù)112,且若地址處于對應(yīng)區(qū)域9的地址范圍內(nèi)確定命中信號114。內(nèi)存屬性 單元7具有邏輯116,該邏輯自儲存區(qū)域9接收命中信號114以及屬性數(shù)據(jù)115及輸出偵測到 命中的區(qū)域的屬性118。查找目標(biāo)地址及輸出屬性118的功能通常已屬于未使用本技術(shù)的內(nèi) 存屬性單元的一部分。本技術(shù)延伸邏輯116的功能以亦產(chǎn)生及輸出區(qū)域編號120,基于該區(qū) 域編號確定命中?目號114。
[0113] 在其他實(shí)施例中,區(qū)域編號可為儲存于區(qū)域9中的一值作為屬性數(shù)據(jù)本身的一部 分,且當(dāng)存在區(qū)域辨識操作的目標(biāo)地址的命中時,則可自緩存器讀取儲存于匹配區(qū)域9中的 區(qū)域編號及藉由處理電路4輸出該編號。
[0114] 大體而言,每一內(nèi)存屬性單元7可包含用于儲存屬性數(shù)據(jù)的緩存器9的獨(dú)立實(shí)例。 然而,不同內(nèi)存屬性單元7可能共享諸如比較器110及控制邏輯116的其他電路系統(tǒng)中的一 些。舉例而言,由于通常在某一時間處安全MPU 50及較不安全MPU 52的僅一者將為主動,不 必復(fù)制比較器110及控制邏輯116,且可藉由共享兩個MPU之間的比較器110與邏輯116節(jié)省 電路面積。
[0115] 盡管圖6示出提供專用區(qū)域辨識指令TT的實(shí)例,但在其他實(shí)例中可藉由另一類型 指令(諸如通用指令)觸發(fā)區(qū)域辨識操作。舉例而言,9A示出提供通用移動指令MOV用于將源 緩存器Rn的內(nèi)容移動至第二緩存器Rm*的情況??商峁┨囟ň彺嫫?,當(dāng)寫入時,該緩存器觸 發(fā)處理電路4執(zhí)行對于置放于緩存器中的地址的區(qū)域辨識操作。因此,若用作為第二緩存器 Rm*的特定緩存器執(zhí)行MOV指令,則處理電路4可執(zhí)行區(qū)域辨識操作及設(shè)置特定目的地緩存 器Rd*為圖7所示的結(jié)果值。另一指令可隨后自目的地緩存器Rd*獲得區(qū)域辨識值及其他額 外信息。如圖9A所示,亦可使用MOV指令在特定緩存器中置放A旗標(biāo)以用與圖7所論述的相同 的方式控制是否存取安全MPU 50或較不安全MPU 52。
[0116] 或者,可不提供A旗標(biāo),及實(shí)情為可如圖9B提供的一實(shí)施例,其中可提供兩個不同 特定緩存器Rml*、Rm2*,一者對應(yīng)于安全MPU及另一者對應(yīng)于較不安全MPU,使得藉由選擇這 些特定緩存器中的何者為MOV指令的目的地緩存器,程序設(shè)計師可選擇詢問哪個MPU。類似 地,在圖6的實(shí)例中,可提供兩個獨(dú)立指令,而不是使用A旗標(biāo),這些獨(dú)立指令的一者對于詢 問安全MPU 50及一者用于詢問較不安全MPU 52。
[0117] 在一些實(shí)施例中,緩存器Rm*、Rml*及Rm2*可為內(nèi)存映射,在此類情況中,儲存指令 將用于自緩存器Rn至特定緩存器Rm*、Rml*及Rm2*寫入值。目的地緩存器Rd*亦可為內(nèi)存映 射,且加載指令將用于存取區(qū)域辨識值。
[0118]另外,盡管圖9A及圖9B示出的示例中目標(biāo)地址是寫入到特定緩存器Rm*、Rml*或 Rm2*的值以觸發(fā)處理設(shè)備2執(zhí)行區(qū)域辨識操作,但在其他實(shí)例中該地址不必被寫入到特定 緩存器。實(shí)情為,可將不同值寫入到特定緩存器中,且此舉觸發(fā)處理電路4自另一位置讀取 地址及使用彼地址執(zhí)行區(qū)域辨識操作。
[0119] 因此,本技術(shù)允許程序設(shè)計師在代碼中包括指令以控制處理電路獲得匹配給定目 標(biāo)地址的安全保護(hù)單元42或MPU 50、52中的儲存區(qū)域9的區(qū)域編號。此可用于如圖10至圖13 的實(shí)例所示的若干情形中。
[0120] 圖10示出安全函數(shù)bob()的實(shí)例,藉由分支至安全地址自較不安全域70調(diào)用該安 全函數(shù)。函數(shù)bob〇使用由較不安全域70中的代碼所指定的一系列地址ADDR[]。此類型函數(shù) 可具有問題,因?yàn)槿糨^不安全代碼70可傳遞安全地址至安全域80,則讀取或?qū)懭氡说刂返?操作(例如,操作130)可不適當(dāng)?shù)卮嫒』蚋掳踩珨?shù)據(jù),因?yàn)橐坏┨幱诎踩?0中,通常將 允許對另一安全地址的存取。為了防止此情形,應(yīng)寫入函數(shù)bob〇以包括檢查由較不安全域 傳遞的地址是否為安全地址或較不安全地址。然而,若自較不安全域傳遞數(shù)組,則bob()必 須執(zhí)行較不安全內(nèi)存46內(nèi)含有整個數(shù)組的檢查。此原因在于,即使數(shù)組的起始地址位于較 不安全內(nèi)存46內(nèi),則該數(shù)組可延伸至安全內(nèi)存44(如圖11中的152所示),可能導(dǎo)致安全違 規(guī),因此只要檢查起始地址的位置即可。若安全函數(shù)bob〇檢查待存取的數(shù)組的起始地址及 結(jié)束地址兩者,則可偵測此情況。然而,此不足以確保系統(tǒng)的安全性,因?yàn)閿?shù)組可完全跨越 安全內(nèi)存地址范圍,以使得起始地址及結(jié)束地址兩者皆位于較不安全內(nèi)存46中。在圖11中 的160處示出此情況的實(shí)例。個別地檢查數(shù)組內(nèi)的每一地址的安全保護(hù)單元42中的屬性數(shù) 據(jù)可為緩慢的,且導(dǎo)致功率消耗增加及效能減少。
[0121] 本技術(shù)認(rèn)識到,使用上文所論述的區(qū)域辨識操作,個別地檢查每一地址通常變得 不必要,使得可節(jié)省處理資源及功率。如圖11所示,通常在數(shù)組ADDR[]中所指定的地址0至N 的范圍可全部處于對應(yīng)于內(nèi)存屬性單元7的單個儲存區(qū)域9的地址范圍內(nèi)。舉例而言,圖11 所示的地址140全部處于由安全保護(hù)單元42的單個儲存區(qū)域9表示的地址空間的較不安全 區(qū)域內(nèi)。在此情況中,在不容許重迭區(qū)域的系統(tǒng)中,若可決定地址數(shù)組的起始地址及結(jié)束地 址與相同儲存區(qū)域9相關(guān),且儲存區(qū)域被指示為較不安全,則不必檢查所有介入地址的許可 及函數(shù)bob()的剩余者可正常行進(jìn)。此節(jié)省了大量處理。在極少數(shù)場合下,當(dāng)?shù)刂返姆秶?越與多個儲存區(qū)域9關(guān)聯(lián)的地址范圍(例如,參看圖11的實(shí)例152、160)時,則可需要進(jìn)一步 檢查來決定該處理是否可行進(jìn)。實(shí)際上,大多數(shù)數(shù)組將處于如實(shí)例140所示的單個區(qū)域內(nèi)且 因此不必經(jīng)常執(zhí)行進(jìn)一步檢查。即使需要進(jìn)一步檢查,區(qū)域辨識操作可用于辨識這些地址 自與一個區(qū)域關(guān)聯(lián)的地址范圍至與另一區(qū)域關(guān)聯(lián)的地址范圍交叉的點(diǎn),使得可減少需要檢 查屬性的個別地址的數(shù)量。
[0122] 因此,如圖12的對應(yīng)實(shí)例所示,可修改函數(shù)bob()以包括區(qū)域辨識操作。當(dāng)較不安 全代碼調(diào)用函數(shù)bob()時,則存在分支至安全域80。執(zhí)行第一對指令170以將數(shù)組ADDR[]的 起始地址及結(jié)束地址置放到緩存器R1、R2中。隨后執(zhí)行兩個區(qū)域辨識操作180以檢查緩存器 Rl、R2中的地址的安全保護(hù)區(qū)域編號(PREGI0N)。在步驟190處,若緩存器R3、R4的安全保護(hù) 單元42區(qū)域編號(位15:8)為相同,且兩個區(qū)域編號皆有效(位17),則此意謂地址的數(shù)組 ADDR□中的起始地址及結(jié)束地址與內(nèi)存屬性單元的單個儲存區(qū)域9相關(guān),且因此若這些地 址為較不安全地址(R3的位22為0),則地址的整個數(shù)組ADDR []為安全,因?yàn)槿颗c地址空間 的較不安全區(qū)域相關(guān)。在此情況中,則分支指令200分支至地址addX以執(zhí)行如圖10的函數(shù)所 需的處理。另一方面,若起始地址及結(jié)束地址與不同的儲存區(qū)域相關(guān)或與安全區(qū)域相關(guān),則 在步驟210處需要進(jìn)一步檢查,且若此檢查失敗,則以一些方式發(fā)送信號告知處理故障或錯 誤。因此,藉由以此方式使用區(qū)域辨識操作180,在許多場合下,可跳過進(jìn)一步檢查210以節(jié) 省顯著量的處理。
[0123] 可以不同方式執(zhí)行進(jìn)一步檢查210。舉例而言,若發(fā)現(xiàn)數(shù)組的起始地址及結(jié)束地址 與內(nèi)存屬性單元7的不同儲存區(qū)域9相關(guān),則可檢驗(yàn)介入地址以發(fā)現(xiàn)儲存區(qū)域9的邊界的位 置。舉例而言,可首先檢查起始地址與結(jié)束地址之間一半處的地址以查看該地址是否與起 始地址及結(jié)束地址的一者相同的區(qū)域9相關(guān),且隨后可執(zhí)行地址范圍的進(jìn)一步二進(jìn)制除法, 直到?jīng)Q定多少個區(qū)域9對應(yīng)于地址ADDR[]的數(shù)組及不同區(qū)域之間的邊界位置?;蛘撸谄渌?實(shí)施例中,自區(qū)域辨識操作180獲得的區(qū)域編號可用于索引至含有區(qū)域的起始地址及結(jié)束 地址的數(shù)據(jù)結(jié)構(gòu)中,從而允許獲得鄰接區(qū)域(亦即,待檢查的下一區(qū)域)的地址,而無需使用 二進(jìn)制除法程序發(fā)現(xiàn)邊界位置??呻S后檢查每個儲存區(qū)域9中一個地址的屬性以決定是否 允許函數(shù)bob〇的繼續(xù)處理。如圖11的實(shí)例160所示,數(shù)組ADDR[]可跨越多個區(qū)域是可能的。 若存在多個區(qū)域,則那些區(qū)域的各者的屬性將需要指示較不安全域,以便允許函數(shù)的繼續(xù) 操作。進(jìn)一步檢查可為相對復(fù)雜,但藉由使用區(qū)域辨識操作,可更快地執(zhí)行,且若可能,則完 全省略。
[0124] 盡管圖10至圖12圖示交叉較不安全域70與安全域80之間邊界的函數(shù)的實(shí)例,但在 其他實(shí)例中,當(dāng)在特權(quán)狀態(tài)90與無特權(quán)狀態(tài)100之間交叉時或當(dāng)在具有不同安全級別的其 他模式之間交叉時可執(zhí)行類似操作集合。此外,盡管圖12示出特定區(qū)域辨識指令用于實(shí)施 區(qū)域辨識操作作為步驟180的實(shí)例,但在其他實(shí)例中,例如可使用圖9的替代途徑,該途徑使 用對特定緩存器的寫入。
[0125] 圖13示出可使用區(qū)域辨識操作的另一情形。MPU 50或52的配置可隨著不同程序或 上下文變得主動而變化。此情況的實(shí)例為可存在若干不同軟件庫250,這些軟件庫需要在相 同域或模式內(nèi)保持彼此分離。舉例而言,在安全域80內(nèi),可存在由互相不信任方所提供的不 同應(yīng)用程序,每一應(yīng)用程序需要由安全域80提供的保護(hù),但必須防止彼此存取。因此,可提 供庫管理器260,該庫管理器選擇庫之一作為主動庫及設(shè)置其他庫為非主動。舉例而言,在 圖13中,庫0為主動及庫1為非主動。在由英國劍橋ARM Limited于2013年6月12日提交的同 在申請中的申請案GB1310421.1中描述此途徑的更多細(xì)節(jié),該申請案的內(nèi)容以引用的方式 全部并入本文。在此途徑中,每一庫與不同MHJ配置關(guān)聯(lián),該MPU配置使用彼庫界定地址空間 的哪些范圍為可存取。當(dāng)庫為非主動時,則將地址空間的區(qū)域設(shè)置為不可存取,且當(dāng)庫為主 動時,則將區(qū)域設(shè)置為可存取。若存在對與非主動庫關(guān)聯(lián)的地址的函數(shù)調(diào)用或分支(自主動 庫或者自不同域中操作的代碼),則MPU決定此地址為不可存取及此觸發(fā)存取違規(guī)異常。庫 管理器260具有故障處置器,該故障處置器可偵測存取違規(guī)異常是否被對非主動庫的存取 觸發(fā),且若是,則故障處置器切換MPU配置以啟動新庫及停用舊庫。使用庫配置數(shù)據(jù)270決定 在此點(diǎn)處應(yīng)對MPU實(shí)行何種更新。
[0126] 因此,如圖13的下半部分所示,當(dāng)已啟動第二庫(庫1)及已停用第一庫(庫0)時,則 當(dāng)前MPU 50、52將具有眾多區(qū)域1、2、3,這些區(qū)域設(shè)置對于新主動庫(庫1)的存取許可。在此 點(diǎn)處,可能自與停用庫(庫0)相關(guān)的MPU 50、52的區(qū)域9驅(qū)逐數(shù)據(jù)。然而,MPU 50、52可比用于 儲存新主動庫(庫1)的屬性數(shù)據(jù)所需的具有更多可用儲存區(qū)域9。由于較快地再次啟動最近 停用的庫為常見,則藉由在MPU中保留與停用庫0相關(guān)的屬性數(shù)據(jù)中的至少一些,但使用有 效位280標(biāo)記這些區(qū)域?yàn)闊o效,此可在稍后再啟動該庫時加速處理,因?yàn)椴槐丶虞d同樣多的 數(shù)據(jù)至MPU中。
[0127] 然而,當(dāng)再啟動庫時必須執(zhí)行的關(guān)鍵任務(wù)之一是將函數(shù)調(diào)用的目標(biāo)地址變換成接 下來待啟動的庫的ID。通常,庫主配置數(shù)據(jù)270將包括軟件數(shù)據(jù)結(jié)構(gòu),該軟件數(shù)據(jù)結(jié)構(gòu)將不 得不被按順序搜尋以找到對所需庫的分支或函數(shù)調(diào)用的目標(biāo)地址與庫編號之間的映射。搜 尋此類軟件結(jié)構(gòu)在效能及功率消耗方面可為高成本。
[0128] 可使用本技術(shù)的區(qū)域辨識操作解決此問題。藉由使用區(qū)域辨識操作,可搜尋MPU 50、52以找到對應(yīng)于對非主動庫的函數(shù)調(diào)用的目標(biāo)地址的無效儲存區(qū)域的區(qū)域編號。可隨 后比僅僅基于目標(biāo)地址可能的更有效率地將該區(qū)域編號映射至庫編號。舉例而言,可藉由 庫管理器260維護(hù)如圖13所示的軟件表290以將MPU的儲存區(qū)域9的區(qū)域辨識符映射至庫編 號。此表290將通常比將地址直接映射至庫編號的表小得多。因此,區(qū)域辨識操作使得MPU的 更新更有效率。在一些實(shí)例中,圖13所示的軟件290可為庫配置數(shù)據(jù)270中的一部分。此外, 在一些情況中,可在沒有軟件表290的情況下執(zhí)行區(qū)域編號至庫編號的映射,例如藉由在匹 配區(qū)域的屬性數(shù)據(jù)本身中儲存庫編號的指示。
[0129] 圖14示出表示處理數(shù)據(jù)的方法的流程圖。在步驟300處,處理電路4的譯碼階段12 偵測是否存在觸發(fā)區(qū)域辨識操作的指令。此可為圖6中所示的區(qū)域辨識指令或在示例性圖9 中以一些其他方式觸發(fā)區(qū)域辨識操作的另一指令。若存在此指令,則在步驟302處,決定哪 個區(qū)域?qū)?yīng)于目標(biāo)地址,且在步驟304處,輸出辨識對應(yīng)區(qū)域的區(qū)域辨識值,以使得區(qū)域辨 識值適用于藉由數(shù)據(jù)處理設(shè)備2執(zhí)行的至少一些軟件。
[0130]盡管本文參考附圖已詳細(xì)描述說明性實(shí)施例,但應(yīng)理解,本發(fā)明并不限于那些精 確實(shí)施例,且本領(lǐng)域技術(shù)人員可在不脫離由隨附權(quán)利要求書所界定的范圍及精神的情況下 實(shí)施各種變化及修改。
【主權(quán)項(xiàng)】
1. 一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包含: 處理電路,被配置為執(zhí)行數(shù)據(jù)處理; 內(nèi)存屬性單元,包含多個儲存區(qū)域,每一儲存區(qū)域被配置為儲存屬性數(shù)據(jù)以便藉由所 述處理電路控制對對應(yīng)內(nèi)存地址范圍的存取;并且 其中響應(yīng)于目標(biāo)內(nèi)存地址,所述處理電路被配置為執(zhí)行區(qū)域辨識操作以輸出區(qū)域辨識 值,該值用于辨識所述多個儲存區(qū)域中的何者是由對應(yīng)于包括所述目標(biāo)內(nèi)存地址的內(nèi)存地 址范圍的所述內(nèi)存屬性單元所指示的對應(yīng)儲存區(qū)域,其中所述目標(biāo)內(nèi)存地址是實(shí)體地址并 且所述區(qū)域辨識值適用于藉由所述數(shù)據(jù)處理設(shè)備所執(zhí)行的至少一些軟件。2. 如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中所述處理電路被配置為響應(yīng)于指定所述目 標(biāo)內(nèi)存地址的區(qū)域辨識指令執(zhí)行所述區(qū)域辨識操作。3. 如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中所述處理電路被配置為響應(yīng)于對預(yù)定緩存 器寫入值的指令執(zhí)行所述區(qū)域辨識操作。4. 如權(quán)利要求3所述的數(shù)據(jù)處理設(shè)備,其中寫入到所述預(yù)定緩存器中的所述值是所述 目標(biāo)內(nèi)存地址。5. 如在前權(quán)利要求中的任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中所述處理電路被配置為在以 下情況下輸出無效區(qū)域辨識值: (a) 禁用所述內(nèi)存屬性單元;或 (b) 所述目標(biāo)內(nèi)存地址不對應(yīng)于所述多個區(qū)域中的任何者;或 (c) 所述目標(biāo)內(nèi)存地址對應(yīng)于所述多個區(qū)域中的兩者或多者;或 (d) 所述目標(biāo)內(nèi)存地址對應(yīng)于啟用的所述多個區(qū)域中的兩者或多者;或 (e) 所述目標(biāo)內(nèi)存地址不對應(yīng)于啟用的所述多個區(qū)域中的任何者;或 (f) 當(dāng)所述處理電路處于具有不充分安全特權(quán)的操作模式中時,執(zhí)行所述區(qū)域辨識操 作來決定所述區(qū)域辨識值。6. 如權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中所述無效區(qū)域辨識值包含預(yù)定值,該預(yù)定值 并不表示所述多個儲存區(qū)域之一。7. 如權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中所述無效區(qū)域辨識值包含與有效性旗標(biāo)關(guān) 聯(lián)的區(qū)域辨識值,該有效性旗標(biāo)指示該區(qū)域辨識值是否有效。8. 如任何在前的權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中在所述區(qū)域辨識操作中,所述處 理電路被配置為輸出額外信息,該額外信息包含以下的至少一者: (a) 儲存于所述對應(yīng)儲存區(qū)域中的屬性數(shù)據(jù)中的至少一些; (b) 來源于儲存于所述對應(yīng)儲存區(qū)域中的屬性數(shù)據(jù)中的至少一些的信息; (c) 安全狀態(tài)的指示,該安全狀態(tài)與所述對應(yīng)儲存區(qū)域的所述內(nèi)存地址范圍關(guān)聯(lián); (d) 對應(yīng)于所述對應(yīng)儲存區(qū)域的所述內(nèi)存地址范圍的所述起始地址的值; (e) 對應(yīng)于所述對應(yīng)儲存區(qū)域的所述內(nèi)存地址范圍的所述結(jié)束地址的值;以及 (f) 對應(yīng)于起始對應(yīng)儲存區(qū)域的起始內(nèi)存地址范圍的大小的值。9. 如任何在前的權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中在起始區(qū)域辨識操作中,起始處 理電路被配置為將起始區(qū)域辨識值寫入到目的地緩存器的至少一部分中。10. 如任何在前的權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述區(qū)域辨識值包含所述對應(yīng) 儲存區(qū)域的區(qū)域編號。11. 如權(quán)利要求10所述的數(shù)據(jù)處理設(shè)備,其中在所述區(qū)域辨識操作中,所述處理電路被 配置為控制所述內(nèi)存屬性單元基于所述多個儲存區(qū)域中的何者為所述對應(yīng)儲存區(qū)域而產(chǎn) 生所述區(qū)域編號。12. 如權(quán)利要求10所述的數(shù)據(jù)處理設(shè)備,其中所述內(nèi)存屬性單元的每一儲存區(qū)域被配 置為儲存該儲存區(qū)域的該區(qū)域編號;并且 在所述區(qū)域辨識操作中,所述處理電路被配置為控制所述內(nèi)存屬性單元自所述對應(yīng)儲 存區(qū)域輸出所述區(qū)域編號。13. 如任何在前的權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述內(nèi)存屬性單元為第一內(nèi)存 屬性單元,該第一內(nèi)存屬性單元包含多個第一儲存區(qū)域,每一第一儲存區(qū)域被配置為儲存 第一屬性數(shù)據(jù)以便控制對對應(yīng)的第一內(nèi)存地址范圍的存?。?所述數(shù)據(jù)處理設(shè)備包含第二內(nèi)存屬性單元,該第二內(nèi)存屬性單元包含多個第二儲存區(qū) 域,每一第二儲存區(qū)域被配置為儲存第二屬性數(shù)據(jù)以便控制對對應(yīng)第二內(nèi)存地址范圍的存 取;并且 在所述區(qū)域辨識操作中,所述處理電路被配置為輸出第一區(qū)域辨識值和第二區(qū)域辨識 值,所述第一區(qū)域辨識值用于辨識所述多個第一儲存區(qū)域中的何者是由對應(yīng)于包括所述目 標(biāo)內(nèi)存地址的第一內(nèi)存地址范圍的所述第一內(nèi)存屬性單元所指示的對應(yīng)第一儲存區(qū)域,所 述第二區(qū)域辨識值用于辨識所述多個第二儲存區(qū)域中的何者是由對應(yīng)于包括所述目標(biāo)內(nèi) 存地址的第二內(nèi)存地址范圍的所述第二內(nèi)存屬性單元所指示的對應(yīng)第二儲存區(qū)域。14. 如權(quán)利要求13所述的數(shù)據(jù)處理設(shè)備,其中在所述區(qū)域辨識操作中,所述處理電路被 配置為使用儲存于所述對應(yīng)第一儲存區(qū)域中的第一屬性數(shù)據(jù)的至少一部分及儲存于所述 對應(yīng)第二儲存區(qū)域中的第二屬性數(shù)據(jù)的至少一部分輸出組合屬性參數(shù)。15. 如權(quán)利要求1至12中的任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中所述處理電路具有多個操 作域,這些域包括安全域及較不安全域,且當(dāng)在所述安全域中操作所述處理電路時,所述處 理電路能夠存取至少一些數(shù)據(jù),該至少一些數(shù)據(jù)是在所述較不安全域中操作所述處理電路 時所不可存取的。16. 如權(quán)利要求15所述的數(shù)據(jù)處理設(shè)備,其中所述內(nèi)存屬性單元包含安全保護(hù)單元并 且所述處理電路被配置為使用該安全保護(hù)單元的屬性數(shù)據(jù)決定所述多個域中的何者與指 定內(nèi)存地址關(guān)聯(lián);并且 當(dāng)在所述較不安全域中操作所述處理電路時,與所述安全域關(guān)聯(lián)的內(nèi)存地址對所述處 理電路而言為不可存取。17. 如權(quán)利要求15和16中的任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中若當(dāng)在所述較不安全域 中操作所述處理電路時執(zhí)行所述區(qū)域辨識操作,則所述處理電路被配置為抑制辨識所述內(nèi) 存屬性單元的所述對應(yīng)儲存區(qū)域的所述區(qū)域辨識值的輸出。18. 如權(quán)利要求15至17中的任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,進(jìn)一步包含: (i) 安全內(nèi)存保護(hù)單元,該安全內(nèi)存保護(hù)單元被配置為儲存屬性數(shù)據(jù)以便當(dāng)在所述安 全域中操作時藉由所述處理電路控制對內(nèi)存地址范圍的存取;以及 (ii) 較不安全內(nèi)存保護(hù)單元,該較不安全內(nèi)存保護(hù)單元被配為儲存屬性數(shù)據(jù)以便當(dāng)在 所述較不安全域中操作時藉由所述處理電路控制對內(nèi)存地址范圍的存??; 其中當(dāng)在所述較不安全域中操作時所述安全內(nèi)存保護(hù)單元對該處理電路為不可存取。19. 如權(quán)利要求18所述的數(shù)據(jù)處理設(shè)備,其中所述區(qū)域辨識操作選擇所述安全內(nèi)存保 護(hù)單元及所述較不安全內(nèi)存保護(hù)單元的選定內(nèi)存保護(hù)單元;并且 在所述區(qū)域辨識操作中,所述處理電路被配置為輸出區(qū)域辨識值,該值辨識所述多個 儲存區(qū)域中的何者由對應(yīng)于包括所述目標(biāo)內(nèi)存地址的內(nèi)存地址范圍的所述選定內(nèi)存保護(hù) 單元指示。20. 如權(quán)利要求19所述的數(shù)據(jù)處理設(shè)備,其中若當(dāng)在所述較不安全域中操作所述處理 操作時執(zhí)行所述區(qū)域辨識操作,且所述區(qū)域辨識操作選擇所述安全內(nèi)存保護(hù)單元作為所述 選定內(nèi)存保護(hù)單元,則所述處理電路被配置為抑制辨識所述安全內(nèi)存保護(hù)單元的所述對應(yīng) 儲存區(qū)域的所述區(qū)域辨識值輸出。21. -種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包含: 處理裝置,用于執(zhí)行數(shù)據(jù)處理;以及 內(nèi)存屬性儲存裝置,包含多個儲存區(qū)域裝置,該多個儲存區(qū)域裝置用于儲存屬性數(shù)據(jù) 以便藉由所述處理裝置控制對對應(yīng)內(nèi)存地址范圍的存??; 其中響應(yīng)于目標(biāo)內(nèi)存地址,所述處理裝置被配置為執(zhí)行區(qū)域辨識操作以輸出區(qū)域辨識 值,該值用于辨識所述多個儲存區(qū)域裝置中的何者是由對應(yīng)于包括所述目標(biāo)內(nèi)存地址的內(nèi) 存地址范圍的所述存屬性儲存裝置所指示的對應(yīng)儲存區(qū)域裝置,其中所述目標(biāo)內(nèi)存地址是 實(shí)體地址且所述區(qū)域辨識值適用于藉由所述數(shù)據(jù)處理設(shè)備所執(zhí)行的至少一些軟件。22. -種用于數(shù)據(jù)處理設(shè)備的數(shù)據(jù)處理方法,該數(shù)據(jù)處理設(shè)備包含內(nèi)存屬性單元,該內(nèi) 存屬性單元包含多個儲存區(qū)域,每一儲存區(qū)域被配置為儲存屬性數(shù)據(jù)以便藉由所述處理電 路控制對對應(yīng)內(nèi)存地址范圍的存取;該方法包含以下步驟: 響應(yīng)于目標(biāo)內(nèi)存地址,執(zhí)行區(qū)域辨識操作; 所述區(qū)域辨識操作包含以下步驟: 決定所述多個儲存區(qū)域中的何者是由對應(yīng)于包括所述目標(biāo)內(nèi)存地址的內(nèi)存地址范圍 的所述內(nèi)存屬性單元所指示的對應(yīng)儲存區(qū)域;以及 輸出區(qū)域辨識值,該值辨識所述多個區(qū)域中的何者是所述對應(yīng)儲存區(qū)域,其中所述目 標(biāo)內(nèi)存地址是實(shí)體地址且所述區(qū)域辨識值適用于藉由所述數(shù)據(jù)處理設(shè)備所執(zhí)行的至少一 些軟件。23. 如權(quán)利要求22所述的數(shù)據(jù)處理方法,其中所述處理電路具有多個操作域,該多個操 作域包括安全域及較不安全域,且當(dāng)在所述安全域中操作所述處理電路時,所述處理電路 能夠存取至少一些數(shù)據(jù),該至少一些數(shù)據(jù)是在所述較不安全域中操作所述處理電路時所不 可存取的;以及 作為在所述安全域中所執(zhí)行的函數(shù)的部分,使用由所述較不安全域中執(zhí)行的代碼所設(shè) 置的一個或多個內(nèi)存地址執(zhí)行所述區(qū)域辨識操作,其中所述區(qū)域辨識操作的所述目標(biāo)內(nèi)存 地址包含所述一個或多個內(nèi)存地址之一。
【文檔編號】G06F12/06GK105980993SQ201580007129
【公開日】2016年9月28日
【申請日】2015年1月19日
【發(fā)明人】托馬斯·克里斯托弗·格羅卡特
【申請人】Arm 有限公司