因指令集而異的執(zhí)行隔離的制作方法
【專利說(shuō)明】因指令集而異的執(zhí)行隔離
[0001]背景
[0002]片上系統(tǒng)(SoC) —般指的是作為同一硅芯片的一部分或作為經(jīng)綁定的或以其他方式封裝在一起的芯片的堆疊的(諸)處理器、(諸)外圍組件和物理存儲(chǔ)器的集成。其他計(jì)算系統(tǒng)可包括被設(shè)計(jì)或連接以一起用于一聚合產(chǎn)品的集成組件。對(duì)于集成系統(tǒng)(包括SoC),可集成一個(gè)以上的處理器一甚至一種以上類型的處理器。每一處理器具有在軟件和硅之間提供接口的相關(guān)聯(lián)的指令集。這些處理器可使用公共指令集架構(gòu)或者他們可涉及不同的指令集架構(gòu)一甚至具有不同的底層微架構(gòu)實(shí)現(xiàn)。
[0003]計(jì)算系統(tǒng)(包括SoC)中的共同問(wèn)題是需要與系統(tǒng)中物理存在的相比更多的存儲(chǔ)器。虛擬存儲(chǔ)器是用于克服物理存儲(chǔ)器的限制的一種方法。虛擬存儲(chǔ)器提供與物理存儲(chǔ)器存在的相比更大的軟件地址范圍,并增強(qiáng)在多個(gè)進(jìn)程(以及甚至各處理器)之間共享物理存儲(chǔ)器。
[0004]除了使用虛擬存儲(chǔ)器外,某些處理器配置為指令和數(shù)據(jù)分配分開的存儲(chǔ)器位置。指令和數(shù)據(jù)的分開是提升效率的一種方法,并且該分開可被利用來(lái)通過(guò)允許處理器從被指定為指令的存儲(chǔ)器位置執(zhí)行代碼而不允許處理器從被指定為數(shù)據(jù)的存儲(chǔ)器位置執(zhí)行代碼來(lái)改善處理器系統(tǒng)的安全性。通過(guò)這種方式,有可能掃描指令以查找惡意代碼,并抑制從存儲(chǔ)器中被指示為僅存儲(chǔ)數(shù)據(jù)的各區(qū)域執(zhí)行惡意代碼。
[0005]具有多個(gè)處理器和不同的指令集的集成系統(tǒng)(包括SoC設(shè)備)對(duì)存儲(chǔ)器高效但仍安全的使用一直是供探索的途徑。
[0006]概沭
[0007]討論了用于允許多種類型的處理器共享物理存儲(chǔ)器的同一頁(yè)或區(qū)域,同時(shí)維持指令集執(zhí)行隔離的技術(shù)和系統(tǒng)。
[0008]根據(jù)一個(gè)實(shí)現(xiàn),系統(tǒng)可包括第一處理器;以及與第一處理器共享頁(yè)表的至少一個(gè)附加處理器。共享的頁(yè)表包括針對(duì)第一處理器的第一許可指示符和針對(duì)至少一個(gè)附加處理器的第二許可指示符,其允許第一處理器和至少一個(gè)附加處理器兩者存取同一存儲(chǔ)器位置,同時(shí)維持由第一處理器和至少一個(gè)附加處理器使用的不同指令集的執(zhí)行隔離。
[0009]描述了一種存取存儲(chǔ)器的方法,該方法包括:存取由第一處理器和與第一處理器共享物理存儲(chǔ)器的至少一個(gè)附加處理器共享的頁(yè)表,其中該頁(yè)表包括針對(duì)第一處理器的第一許可指示符和針對(duì)至少一個(gè)附加處理器的第二許可指示符;以及,基于第一許可指示符或第二許可指示符的值對(duì)物理存儲(chǔ)器的頁(yè)執(zhí)行動(dòng)作,該值指示與指定的動(dòng)作有關(guān)的許可。
[0010]描述了另一種存取存儲(chǔ)器的方法,該方法包括:接收虛擬存儲(chǔ)器地址;使用由第一處理器和與第一處理器具有不同指令集的至少一個(gè)附加處理器共享的頁(yè)表將該虛擬存儲(chǔ)器地址轉(zhuǎn)換成物理存儲(chǔ)器地址;以及,利用該頁(yè)表的許可比特來(lái)控制物理存儲(chǔ)器存取,這些許可比特包括支持第一處理器的第一許可比特以及適應(yīng)支持至少一個(gè)附加處理器的編碼的至少一個(gè)許可比特。
[0011]提供該概述以便以簡(jiǎn)化形式介紹概念的選集,所述概念在以下詳細(xì)描述中被進(jìn)一步描述。本概述并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。
[0012]附圖簡(jiǎn)沐
[0013]圖1A-1C示出具有用于共享的存儲(chǔ)器和頁(yè)表的指令集隔離的一些實(shí)現(xiàn)的表示的系統(tǒng)示圖。
[0014]圖2示出根據(jù)一實(shí)施例的可由共享頁(yè)表和物理存儲(chǔ)器的不同處理器執(zhí)行的兩個(gè)進(jìn)程的虛擬地址空間。
[0015]圖3示出根據(jù)一實(shí)施例的存取存儲(chǔ)器的方法。
[0016]詳細(xì)描沐
[0017]為了不僅促成對(duì)同一物理存儲(chǔ)器的共享,并且還促成對(duì)頁(yè)表的共享,可將針對(duì)具有不同指令集架構(gòu)或其他特性的至少一個(gè)附加處理器的許可指示符包括在針對(duì)集成系統(tǒng)的處理器的頁(yè)表中。該集成系統(tǒng)可包括SoC,在該SoC中,多個(gè)處理器和/或設(shè)備被制造在同一片硅上或者被分開地制造或被堆疊在封裝中或被分開地制造或被堆疊在封裝基底上。
[0018]在某些實(shí)現(xiàn)中,多個(gè)處理器能夠通過(guò)以下來(lái)共享系統(tǒng)存儲(chǔ)器同時(shí)維持指令集隔離:將用于控制處理器的許可的許可比特的數(shù)目相對(duì)于存儲(chǔ)器頁(yè)增加至少一個(gè)比特,以適應(yīng)支持附加處理器類型的編碼。
[0019]可將一個(gè)以上的處理器一甚至一種以上類型的處理器一集成在一芯片或封裝基底上。例如,中央處理單元(CPU)、圖形處理單元(GPU)、圖像信號(hào)處理器(ISP)和其他處理器可形成該系統(tǒng)的部分。此外,這些處理器中的每一者可提供復(fù)數(shù)個(gè)。此外,可合并各直接存儲(chǔ)器存取(DMA)控制器以允許該系統(tǒng)的某些組件獨(dú)立地存取相關(guān)聯(lián)的存儲(chǔ)器。
[0020]“存儲(chǔ)器”指代邏輯存儲(chǔ)器,即操作系統(tǒng)通過(guò)使用頁(yè)表來(lái)管理的信息存儲(chǔ)。
[0021]“存儲(chǔ)器存儲(chǔ)”指代物理存儲(chǔ)器,其可以是片上的(例如,高速緩存存儲(chǔ)器)或片外的(例如,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、硬盤、光驅(qū)、閃存驅(qū)動(dòng)器等)。
[0022]圖1A-1C示出具有用于共享的存儲(chǔ)器和頁(yè)表的指令集隔離的一些實(shí)現(xiàn)的表示的集成系統(tǒng)示圖。參考圖1A-1C,集成系統(tǒng)100可包括存儲(chǔ)器存儲(chǔ)110 (諸如DRAM);第一處理器120 (諸如CPU);以及,可共享存儲(chǔ)器存儲(chǔ)100的至少一個(gè)附加處理器,例如第二處理器130 (諸如GPU)和第三處理器140(諸如ISP)。在一些實(shí)現(xiàn)中,兩個(gè)或更多個(gè)處理器可包括具有不同特性的處理器。例如,兩個(gè)或更多個(gè)CPU可被集成,其中這些CPU中的一者(或多者)的特征在于被操作用于安全處理,并且這些CPU中的一者(或多者)的特征在于被操作用于內(nèi)核。這兩個(gè)或更多個(gè)CPU可共享同一頁(yè)表。
[0023]可用于該系統(tǒng)的物理存儲(chǔ)器(包括存儲(chǔ)器存儲(chǔ)110)可包括易失性和/或非易失性存儲(chǔ)器。一些物理存儲(chǔ)器可以是片上的,例如為軟件不可見的高速緩存。在一些情況下,操作系統(tǒng)、驅(qū)動(dòng)器和/或程序還可被存儲(chǔ)(或在一些時(shí)間點(diǎn)被加載)到該系統(tǒng)可用的物理存儲(chǔ)器上。
[0024]由(諸)處理器(120、130、140)執(zhí)行的進(jìn)程對(duì)存儲(chǔ)器的存取可受到存取或使用的限制。例如,某一存儲(chǔ)器(諸如包含可執(zhí)行代碼的存儲(chǔ)器)通常被限制為只讀存儲(chǔ)器。應(yīng)理解,進(jìn)程不應(yīng)被允許將數(shù)據(jù)寫在操作系統(tǒng)的可執(zhí)行代碼上。相反,包含數(shù)據(jù)的頁(yè)可能可用于供寫入;然而,出于安全性目的,從包含數(shù)據(jù)的頁(yè)執(zhí)行(就好像該數(shù)據(jù)是指令一樣)的嘗試不應(yīng)被允許。為了提供這些限制,大多數(shù)處理器具有至少兩種執(zhí)行模式:內(nèi)核和用戶(即,不受限制的模式和受限制的模式)。
[0025]頁(yè)可具有與其相關(guān)聯(lián)的各種許可。在一些情況下,可向頁(yè)許可分配寄存器、頁(yè)表或其他數(shù)據(jù)結(jié)構(gòu)中可由操作系統(tǒng)在對(duì)存儲(chǔ)器位置(或地址)執(zhí)行動(dòng)作之前存取和讀取的比特。許可可包括但不限于讀/寫、執(zhí)行(或永不執(zhí)行或僅執(zhí)行)和管理器(內(nèi)核存取)。僅執(zhí)行頁(yè)指代以下頁(yè):處理器可從該頁(yè)執(zhí)行代碼,但用戶級(jí)程序被限制將該頁(yè)作為數(shù)據(jù)來(lái)讀取或向該頁(yè)進(jìn)行寫入。在某些實(shí)施例中,這些許可可由一個(gè)(或多個(gè))比特來(lái)指示,該一個(gè)(或多個(gè))比特在被設(shè)置或清除時(shí)指示授予或拒絕該許可。
[0026]某些實(shí)施例利用虛擬存儲(chǔ)器來(lái)增加程序可尋址的存儲(chǔ)器的量,以及使該存儲(chǔ)器與物理存儲(chǔ)器的尺寸解除關(guān)聯(lián)(并增加存儲(chǔ)器利用率)。例如,虛擬存儲(chǔ)器使得多個(gè)程序能夠存取同一物理存儲(chǔ)器(諸如,存儲(chǔ)器存儲(chǔ)110),同時(shí)使用不同的虛擬地址,從而使得存儲(chǔ)器空間看上去大于硬件將指示的存儲(chǔ)器空間。
[0027]第一處理器120和至少一個(gè)附加處理器(例如,第二處理器130和/或第三處理器140)對(duì)底層存儲(chǔ)器存儲(chǔ)110的共享可由軟件(諸如操作系統(tǒng))來(lái)管理。操作系統(tǒng)將一進(jìn)程所提供的虛擬地址映射到數(shù)據(jù)和指令被存儲(chǔ)在其處的物理地址。指令是處理器可理解的用于執(zhí)行進(jìn)程的數(shù)據(jù)類型。此處所使用的數(shù)據(jù)和指令的區(qū)分僅強(qiáng)調(diào)存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)的目的。在一些情況下,數(shù)據(jù)和指令被如何存儲(chǔ)可不同,但用于這兩個(gè)目的的數(shù)據(jù)在物理級(jí)被反映為存儲(chǔ)器中的比特。
[0028](通過(guò)保留頁(yè)表信息)對(duì)