專利名稱:硬件監(jiān)視器的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及一種硬件監(jiān)視器,并且具體地但非排他地涉及用于監(jiān)視處理器內(nèi)的多個(gè)上下文的數(shù)據(jù)流的硬件監(jiān)視器。
背景技術(shù):
附接至中央處理單元(CPU)以便對(duì)軟件進(jìn)行檢查的硬件監(jiān)視器是已知的。硬件監(jiān)視器通常檢查在CPU上執(zhí)行的軟件以確定該軟件在許可區(qū)域之間執(zhí)行和訪問(wèn)數(shù)據(jù)。例如,硬件監(jiān)視器可以被配置為檢測(cè)指令何時(shí)落到許可區(qū)域之外并且可能被惡意插入,或者數(shù)據(jù)從存儲(chǔ)器空間的哪里被讀取或者被寫(xiě)入許可區(qū)域之外具有類似相關(guān)聯(lián)安全問(wèn)題的存儲(chǔ)器空間。這些硬件監(jiān)視器,有時(shí)也被稱作獲取監(jiān)視器可以被實(shí)現(xiàn)在位于CPU旁的集成電路上,用于監(jiān)視存儲(chǔ)器訪問(wèn)并且檢查過(guò)程(監(jiān)管者和用戶)是否處于預(yù)定邊界之內(nèi)。過(guò)程訪問(wèn)其所定義邊界之外的指令或數(shù)據(jù)的常見(jiàn)原因是“黑客軟件”的操作。當(dāng)檢測(cè)到軟件已經(jīng)侵入時(shí),獲取監(jiān)視器或硬件監(jiān)視器能夠快速?gòu)?qiáng)制芯片重啟以防止非法訪問(wèn)執(zhí)行。中央處理單元能夠運(yùn)行并發(fā)的軟件過(guò)程,例如CPU可以具有在CPU上運(yùn)行的多個(gè)用戶過(guò)程,每個(gè)用戶過(guò)程具有相關(guān)聯(lián)的用戶上下文定義;用戶過(guò)程被允許從其獲取指令的一組存儲(chǔ)器區(qū)域,用戶過(guò)程被允許從其讀取數(shù)據(jù)的一組存儲(chǔ)器區(qū)域,以及用戶過(guò)程被允許從其寫(xiě)入數(shù)據(jù)的一組存儲(chǔ)器區(qū)域。當(dāng)前的CPU和硬件監(jiān)視器設(shè)計(jì)的缺陷在于,每次用戶過(guò)程有所變化,CPU都必須在系統(tǒng)總線上執(zhí)行從CPU到硬件監(jiān)視器的硬件寄存器訪問(wèn),這在硬件監(jiān)視器被設(shè)置為新的用戶過(guò)程的監(jiān)視器之前會(huì)占用數(shù)千個(gè)時(shí)鐘周期。
發(fā)明內(nèi)容
本申請(qǐng)的目標(biāo)是提供一種硬件/獲取監(jiān)視器系統(tǒng),其適于執(zhí)行訪問(wèn)檢查并且監(jiān)視CPU或CPU的群組能夠在哪里執(zhí)行并發(fā)軟件操作,并且該硬件監(jiān)視器能夠在單個(gè)指令周期內(nèi)在過(guò)程之間進(jìn)行切換。本申請(qǐng)的實(shí)施例目的在于解決以上問(wèn)題。根據(jù)本申請(qǐng)的第一方面,提供了一種監(jiān)視器,包括:寄存器,其被配置為存儲(chǔ)至少兩個(gè)上下文以及上下文變化值;以及上下文選擇器,其被配置為取決于確定上下文變化值與存儲(chǔ)器訪問(wèn)地址的第一部分相匹配,選擇兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。至少兩個(gè)上下文中的每個(gè)上下文可以與標(biāo)識(shí)符值相關(guān)聯(lián),并且其中上下文選擇器可以被配置為取決于存儲(chǔ)器訪問(wèn)地址的第二部分與上下文相關(guān)聯(lián)的標(biāo)識(shí)符值相匹配,選擇兩個(gè)上下文中的至少一個(gè)以進(jìn)行上下文監(jiān)視。每個(gè)上下文可以包括以下的至少一個(gè):指令區(qū)域;數(shù)據(jù)讀取區(qū)域;以及數(shù)據(jù)寫(xiě)入?yún)^(qū)域。監(jiān)視器可以進(jìn)一步被配置為接收數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址,其中數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址可以是存儲(chǔ)器訪問(wèn)地址。監(jiān)視器可以進(jìn)一步被配置為接收指示CPU以監(jiān)管者模式進(jìn)行操作的監(jiān)管者模式指示器信號(hào)。監(jiān)視器可以進(jìn)一步包括地址監(jiān)視器,其被配置為接收存儲(chǔ)器訪問(wèn)地址并且將存儲(chǔ)器訪問(wèn)地址值與兩個(gè)上下文中所選擇的至少一個(gè)上下文進(jìn)行比較。地址監(jiān)視器可以被配置為在存儲(chǔ)器訪問(wèn)地址值處于兩個(gè)上下文中所選擇的至少一個(gè)上下文之外時(shí)生成系統(tǒng)中斷。監(jiān)視器可以進(jìn)一步被配置為接收至少兩個(gè)上下文和上下文變化值。一種處理器模塊可以包括:中央處理單元;耦合至中央處理單元的存儲(chǔ)器;以及如這里所描述的監(jiān)視器,其被配置為從中央處理單元接收存儲(chǔ)器訪問(wèn)地址值。處理器模塊進(jìn)一步包括安全塊,其被配置為向監(jiān)視器輸出至少兩個(gè)上下文和上下文變化值。根據(jù)本申請(qǐng)的第二方面,可以提供一種監(jiān)視器,包括:用于存儲(chǔ)至少兩個(gè)上下文和上下文變化值的裝置;以及用于取決于確定上下文變化值與存儲(chǔ)器訪問(wèn)地址的第一部分相匹配,選擇兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視的裝置。至少兩個(gè)上下文中的每個(gè)上下文可以與標(biāo)識(shí)符值相關(guān)聯(lián),并且其中用于選擇的裝置可以進(jìn)一步包括用于取決于存儲(chǔ)器訪問(wèn)地址的第二部分與上下文相關(guān)聯(lián)的標(biāo)識(shí)符值相匹配,選擇兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視的裝置。每個(gè)上下文可以包括以下的至少一個(gè):指令區(qū)域;數(shù)據(jù)讀取區(qū)域;以及數(shù)據(jù)寫(xiě)入?yún)^(qū)域。監(jiān)視器可以進(jìn)一步包括用于接收數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址的裝置,其中數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址是存儲(chǔ)器訪問(wèn)地址。監(jiān)視器可以進(jìn)一步包括用于接收指示CPU以監(jiān)管者模式進(jìn)行操作的監(jiān)管者模式指示器信號(hào)的裝置。監(jiān)視器可以進(jìn)一步包括:用于接收存儲(chǔ)器訪問(wèn)地址的裝置;以及用于將存儲(chǔ)器訪問(wèn)地址值與兩個(gè)上下文中所選擇的至少一個(gè)上下文進(jìn)行比較的裝置。監(jiān)視器可以進(jìn)一步包括用于在存儲(chǔ)器訪問(wèn)地址值處于兩個(gè)上下文中所選擇的至少一個(gè)上下文之外時(shí)生成系統(tǒng)中斷的裝置。監(jiān)視器可以進(jìn)一步包括用于接收至少兩個(gè)上下文和上下文變化值的裝置。一種處理器模塊可以包括:用于操作指令和處理數(shù)據(jù)的裝置;用于存儲(chǔ)指令和數(shù)據(jù)的裝置;以及如這里所描述的監(jiān)視器。處理器模塊可以進(jìn)一步包括用于向監(jiān)視器輸出至少兩個(gè)上下文和上下文變化值的裝置。根據(jù)本申請(qǐng)的第三方面,提供了一種用于監(jiān)視存儲(chǔ)器訪問(wèn)的方法,包括:存儲(chǔ)至少兩個(gè)上下文和上下文變化值;以及取決于確定上下文變化值與存儲(chǔ)器訪問(wèn)地址的第一部分相匹配,選擇兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。至少兩個(gè)上下文中的每個(gè)上下文可以與標(biāo)識(shí)符值相關(guān)聯(lián);并且其中選擇可以進(jìn)一步包括取決于存儲(chǔ)器訪問(wèn)地址的第二部分與上下文相關(guān)聯(lián)的標(biāo)識(shí)符值相匹配,選擇兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。
每個(gè)上下文可以包括以下的至少一個(gè):指令區(qū)域;數(shù)據(jù)讀取區(qū)域;以及數(shù)據(jù)寫(xiě)入?yún)^(qū)域。該方法可以進(jìn)一步包括接收數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址,其中數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址是存儲(chǔ)器訪問(wèn)地址。該方法可以進(jìn)一步包括接收指示CPU以監(jiān)管者模式進(jìn)行操作的監(jiān)管者模式指示器信號(hào)。該方法可以進(jìn)一步包括:接收存儲(chǔ)器訪問(wèn)地址;以及將存儲(chǔ)器訪問(wèn)地址值與兩個(gè)上下文中所選擇的至少一個(gè)上下文進(jìn)行比較。該方法可以進(jìn)一步包括在存儲(chǔ)器訪問(wèn)地址值處于兩個(gè)上下文中所選擇的至少一個(gè)上下文之外時(shí)生成系統(tǒng)中斷。該方法可以進(jìn)一步包括接收至少兩個(gè)上下文和上下文變化值。一種編碼有指令的處理器可讀介質(zhì),當(dāng)被處理器所執(zhí)行時(shí),該指令可以執(zhí)行如以上所描述的方法。一種裝置,包括至少一個(gè)處理器以及包含用于一個(gè)或多個(gè)程序的計(jì)算機(jī)代碼的至少一個(gè)存儲(chǔ)器,該至少一個(gè)存儲(chǔ)器和計(jì)算機(jī)代碼被配置為利用至少一個(gè)處理器可使得該裝置至少執(zhí)行如以上所描述的方法。根據(jù)第四方面,提供了一種監(jiān)視器,包括:寄存器,其被配置為存儲(chǔ)至少兩個(gè)上下文以及上下文變化值;輸入,其被配置為接收處理器數(shù)據(jù)寫(xiě)入訪問(wèn)地址值和訪問(wèn)模式指示器;以及上下文選擇器,其被配置為在確定數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第二部分與上下文變化值相匹配、并且訪問(wèn)模式指示器指示處理器處于監(jiān)管者模式時(shí),取決于數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第一部分選擇兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。根據(jù)第五方面,提供了一種監(jiān)視方法,包括:存儲(chǔ)至少兩個(gè)上下文以及上下文變化值;接收處理器數(shù)據(jù)寫(xiě)入訪問(wèn)地址值和訪問(wèn)模式指示器;確定數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第一部分與上下文變化值相匹配;確定訪問(wèn)模式指示器指示處理器處于監(jiān)管者模式;以及將上下文改變?yōu)榕c數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第二部分相關(guān)聯(lián)的上下文。根據(jù)第六方面,提供了一種監(jiān)視器,包括:用于存儲(chǔ)至少兩個(gè)上下文以及上下文變化值的裝置;用于接收處理器數(shù)據(jù)寫(xiě)入訪問(wèn)地址值和訪問(wèn)模式指示器的裝置;用于確定數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第一部分與上下文變化值相匹配的裝置;用于確定訪問(wèn)模式指示器指示處理器處于監(jiān)管者模式的裝置;以及用于將上下文改變?yōu)榕c數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第二部分相關(guān)聯(lián)的上下文的裝置。
為了更好地理解本申請(qǐng),現(xiàn)在將通過(guò)示例參考附圖,其中:圖1示意性示出了適于采用本申請(qǐng)一些實(shí)施例的示例裝置;圖2更為詳細(xì)地示意性示出了根據(jù)本申請(qǐng)一些實(shí)施例的監(jiān)視器塊;圖3示出了根據(jù)本申請(qǐng)一些實(shí)施例的監(jiān)視器塊初始化的操作流程圖;圖4示出了根據(jù)本申請(qǐng)一些實(shí)施例的監(jiān)視器塊改變上下文操作的操作流程圖;圖5示出了根據(jù)本申請(qǐng)一些實(shí)施例的監(jiān)視器塊的指令檢查操作的操作流程圖;圖6示出了根據(jù)本申請(qǐng)一些實(shí)施例的監(jiān)視器塊的組合檢查操作的操作流程圖7更為詳細(xì)地示意性示出了根據(jù)本申請(qǐng)另外一些實(shí)施例的監(jiān)視器塊;圖8示出了根據(jù)本申請(qǐng)一些實(shí)施例的圖7所示的監(jiān)視器塊的初始化的操作流程圖;圖9示出了根據(jù)本申請(qǐng)一些實(shí)施例的圖7所示的監(jiān)視器塊改變上下文操作的操作流程圖;圖10示出了根據(jù)本申請(qǐng)一些實(shí)施例的圖7所示的監(jiān)視器塊的指令檢查操作的操作流程圖;圖11示出了根據(jù)本申請(qǐng)一些實(shí)施例的圖7所示的監(jiān)視器塊的組合檢查操作的操作流程圖;圖12示出了根據(jù)一些實(shí)施例的圖7所示的監(jiān)視器塊的示例輸入/輸出的表;圖13示出了根據(jù)一些實(shí)施例的圖7所示的監(jiān)視器塊的示例寄存器排列的表;圖14至17示出了根據(jù)本申請(qǐng)一些實(shí)施例的定義圖7所示的監(jiān)視器表的示例寄存器ifetch的寄存器相關(guān)數(shù)據(jù)的表;圖18至20示出了根據(jù)一些實(shí)施例的定義圖7所示的監(jiān)視器塊的示例寄存器dfetch的寄存器數(shù)據(jù)的表;圖21至24示出了根據(jù)一些實(shí)施例的定義圖7所示的監(jiān)視器塊的示例寄存器失敗(failure)寄存器的表;圖25更為詳細(xì)地示出了定義圖7所示的監(jiān)視器塊的示例性寄存器上下文地址(context address)寄存器的表;以及圖26更為詳細(xì)地示出了定義圖7所示的監(jiān)視器塊的上下文標(biāo)識(shí)值寄存器的表。
具體實(shí)施例方式以下更為詳細(xì)地對(duì)用于提供共享存儲(chǔ)器控制的適當(dāng)裝置和可能機(jī)制進(jìn)行描述。參考圖1,示出了能夠在其中實(shí)現(xiàn)本申請(qǐng)實(shí)施例的示例系統(tǒng)、設(shè)備或裝置。該裝置被示為包括耦合至存儲(chǔ)器3和監(jiān)視器塊5的中央處理單元I。此外,監(jiān)視器塊5被示出為耦合至安全塊7。在一些實(shí)施例中,該裝置或系統(tǒng)包括中央處理單元(CPU) 1,其可以是任意適當(dāng)?shù)腃PU或CPU核。CPU I可以被配置為進(jìn)行操作或執(zhí)行并發(fā)軟件過(guò)程,例如CPU I可以被配置有多個(gè)虛擬CPU核,每個(gè)虛擬CPU核被配置為執(zhí)行一個(gè)軟件過(guò)程,或者在一些實(shí)施例中,CPUI的集成電路包括多個(gè)CPU核,每個(gè)核被配置為獨(dú)立于其它核進(jìn)行操作并且執(zhí)行指令訪問(wèn)數(shù)據(jù)。在一些實(shí)施例中,該裝置包括耦合至CPU I的存儲(chǔ)器3。存儲(chǔ)器3可以是被配置為存儲(chǔ)可由CPU I訪問(wèn)的數(shù)據(jù)的任意適當(dāng)存儲(chǔ)器設(shè)備。在一些實(shí)施例中,CPU I和存儲(chǔ)器3通過(guò)多于一個(gè)的總線進(jìn)行耦合,例如用于從存儲(chǔ)器向CPU提供指令數(shù)據(jù)并且處理數(shù)據(jù)的單獨(dú)數(shù)據(jù)總線。然而,將要理解的是,在一些實(shí)施例中,指令數(shù)據(jù)和數(shù)據(jù)可以經(jīng)由相同的數(shù)據(jù)總線在CPU I和存儲(chǔ)器3之間進(jìn)行傳輸。一些實(shí)施例中的系統(tǒng)進(jìn)一步包括耦合至CPU I和存儲(chǔ)器3 二者的監(jiān)視器塊5。監(jiān)視器塊5可以被配置為對(duì)指令數(shù)據(jù)總線和數(shù)據(jù)總線上的訪問(wèn)進(jìn)行監(jiān)視。此外,該系統(tǒng)包括安全塊7,根據(jù)本申請(qǐng)的一些實(shí)施例,該安全塊被配置為耦合至監(jiān)視器塊5并且從監(jiān)視器塊5接收指令在哪里執(zhí)行和/或數(shù)據(jù)在預(yù)定區(qū)域之外被訪問(wèn)的指示,并且因此控制系統(tǒng)的重啟以防止對(duì)系統(tǒng)侵入、系統(tǒng)的非法數(shù)據(jù)訪問(wèn)或者病毒或其它不希望代碼的插入。CPU 1、存儲(chǔ)器3和安全塊7的操作在本領(lǐng)域通常是已知的并且為了簡(jiǎn)化本申請(qǐng)實(shí)施例的解釋而將不詳細(xì)進(jìn)行描述。參考圖2,更為詳細(xì)地示出了根據(jù)一些實(shí)施例的示例監(jiān)視器塊5。在一些實(shí)施例中,監(jiān)視器塊5被配置為監(jiān)視CPU I和存儲(chǔ)器3之間的各種存儲(chǔ)器訪問(wèn)。例如,在一些實(shí)施例中,監(jiān)視器塊5可以被配置為接收或探尋(snoop)指令獲取地址(ifetch地址101)、數(shù)據(jù)訪問(wèn)地址(d_access地址103)、數(shù)據(jù)獲取的讀非寫(xiě)指示器(indicator) (r_n_w信號(hào)105),以及監(jiān)管者非用戶指示器(s_n_u信號(hào)107),其指示獲取是在用戶模式中調(diào)用還是由操作系統(tǒng)內(nèi)核在監(jiān)管者模式中調(diào)用。此外,在一些實(shí)施例中,監(jiān)視器塊5可以被配置為經(jīng)由系統(tǒng)中斷耦合109而耦合至CPU 1,從而監(jiān)視器在檢測(cè)到上下文之外的獲取時(shí)能夠在CPU I中發(fā)起系統(tǒng)中斷。監(jiān)視器塊5在一些實(shí)施例中可以包括上下文寄存器160。上下文寄存器可以被配置為存儲(chǔ)監(jiān)視器塊5用來(lái)監(jiān)視指令和/或數(shù)據(jù)訪問(wèn)以確定它們是否為可接受的數(shù)據(jù)或指令訪問(wèn)值并且另外存儲(chǔ)“系統(tǒng)地址(SysAddr) ”以便進(jìn)行快速上下文切換的數(shù)據(jù)值。在一些實(shí)施例中,上下文寄存器160可以包括第一數(shù)量(η)的用戶上下文161。每個(gè)用戶上下文161可以被配置為定義訪問(wèn)在其之內(nèi)對(duì)于該上下文有效的存儲(chǔ)器區(qū)域。在一些實(shí)施例中,用戶上下文161包括被配置為定義能夠從其有效獲取指令的存儲(chǔ)器區(qū)域,被配置為定義能夠針對(duì)上下文從其有效讀取數(shù)據(jù)的存儲(chǔ)器區(qū)域的dregion讀(dregionread),以及被配置為定義能夠針對(duì)上下文從其有效寫(xiě)入數(shù)據(jù)的存儲(chǔ)器區(qū)域的dregion寫(xiě)(dregion write)。第一數(shù)量(η)可以是任意適當(dāng)?shù)纳舷挛臄?shù)量。在一些實(shí)施例中,上下文寄存器160進(jìn)一步包括上下文地址寄存器163。上下文地址寄存器可以另外包括系統(tǒng)地址值(SysAddr)和新上下文值。在一些實(shí)施例中,監(jiān)視器塊5進(jìn)一步包括監(jiān)視器150。在一些實(shí)施例中,監(jiān)視器150可以是用于針對(duì)上下文寄存器160、用戶上下文161和上下文地址寄存器163而監(jiān)視存儲(chǔ)器訪問(wèn)的任意適當(dāng)處理實(shí)體。參考圖3至6對(duì)監(jiān)視器150的操作進(jìn)一步進(jìn)行描述。參考圖3,更為詳細(xì)地示出了監(jiān)視器150關(guān)于監(jiān)視初始化的操作。作為初始操作,系統(tǒng)/裝置以及相關(guān)聯(lián)的監(jiān)視器塊5和監(jiān)視器150能夠被啟動(dòng)或重啟。啟動(dòng)或重啟系統(tǒng)的操作在圖3中由步驟201所示出。此外,在一些實(shí)施例中,系統(tǒng)地址(SysAddr)被選擇定義當(dāng)被CPU輸出時(shí)指示上下文變化的地址。所選擇的系統(tǒng)地址可以是并未準(zhǔn)備用于某用途的任意適當(dāng)存儲(chǔ)器地址。例如,在一些實(shí)施例中,所選擇的系統(tǒng)地址是非映射區(qū)域,這是因?yàn)閺乃鶎ぶ穮^(qū)域讀取或?qū)懭霐?shù)據(jù)的能力是不相關(guān)的。在一些實(shí)施例中,系統(tǒng)地址可以是預(yù)先編程的。選擇系統(tǒng)地址的操作在圖3中由步驟203所示出。此外,在一些實(shí)施例中,可以針對(duì)每個(gè)上下文選擇相關(guān)聯(lián)區(qū)域的范圍。例如,在一些實(shí)施例中,針對(duì)每個(gè)上下文,可以存在至少一個(gè)相關(guān)聯(lián)的指令地址區(qū)域(iregion),從那些地址來(lái)自存儲(chǔ)器的指令訪問(wèn)對(duì)于該上下文而言是合法且被允許的,至少一個(gè)數(shù)據(jù)讀取地址區(qū)域(dregion讀),從那些地址來(lái)自存儲(chǔ)器的讀取訪問(wèn)對(duì)于該上下文而言是合法且被允許的,以及至少一個(gè)數(shù)據(jù)寫(xiě)入地址區(qū)域(dregion寫(xiě)),從那些地址來(lái)自存儲(chǔ)器的寫(xiě)入訪問(wèn)對(duì)于該上下文而言是合法且被允許的。在一些實(shí)施例中,iregion、dregion讀和dregion寫(xiě)可以包括上界區(qū)域地址和下界區(qū)域地址。在以下示例中,邊界為所排列的8個(gè)字節(jié)。在一些實(shí)施例中,區(qū)域可以被“打包(wrapped) ”,其中region_x_upper小于region_x_lower。然而,在一些實(shí)施例中,區(qū)域并不被打包并且被定義為連續(xù)且單調(diào)(monotonic)的地址。在一些實(shí)施例中,每個(gè)區(qū)域是單獨(dú)的,然而可以理解的是,在一些實(shí)施例中,區(qū)域可以是至少部分重疊的。監(jiān)視器150因此在一些實(shí)施例中能夠針對(duì)每個(gè)上下文將iregion、dregion讀和dregion寫(xiě)的值寫(xiě)入或編程到上下文寄存器160的用戶上下文161中。將每個(gè)上下文的iregion、dregion讀和dregion寫(xiě)的值寫(xiě)入寄存器的操作在圖8中由步驟207所示出。此外,監(jiān)視器150能夠被配置為將系統(tǒng)地址(SysAddr)寫(xiě)入或編程到上下文寄存器160的上下文地址寄存器163。在寫(xiě)入?yún)^(qū)域值以及寫(xiě)入系統(tǒng)地址之后,監(jiān)視器150可以被配置為針對(duì)ifetch地址輸入、d_access地址103、r_n_w信號(hào)105、s_n_u信號(hào)107上的指令和數(shù)據(jù)訪問(wèn)而監(jiān)視CPU
1關(guān)于圖4,更為詳細(xì)地示出了監(jiān)視器150切換上下文的操作。監(jiān)視器150在一些實(shí)施例中可以被配置為監(jiān)視來(lái)自d_access地址103的CPU數(shù)據(jù)訪問(wèn)地址值。讀取CPU數(shù)據(jù)訪問(wèn)地址值的操作在圖4中通過(guò)步驟301所示出。監(jiān)視器150因此可以進(jìn)一步被配置為檢查數(shù)據(jù)訪問(wèn)是否以監(jiān)管者操作模式所執(zhí)行,例如通過(guò)測(cè)試監(jiān)管者非用戶信號(hào)(s_n_u信號(hào))105是否為活躍的。在系統(tǒng)地址上為監(jiān)管者模式時(shí),監(jiān)視器150可以被配置為檢查數(shù)據(jù)訪問(wèn)地址的高數(shù)位是否與所存儲(chǔ)上下文地址相匹配。換句話說(shuō),CPU數(shù)據(jù)訪問(wèn)地址是否與系統(tǒng)地址(SysAddr)相匹配。檢查訪問(wèn)是否處于監(jiān)管者模式并且與上下文地址寄存器163中所存儲(chǔ)的系統(tǒng)地址相匹配的操作在圖4中由步驟303所示出。在確定了系統(tǒng)地址訪問(wèn)已經(jīng)被正確檢測(cè)之后,監(jiān)視器150隨后可以被配置為使用數(shù)據(jù)訪問(wèn)地址其余的低數(shù)位來(lái)確定新的或活躍的上下文。從d_access地址的低數(shù)位或最低有效位確定新的上下文值的操作在圖4中由步驟305所示出。監(jiān)視器150隨后可以被配置為激活與活躍的上下文值相關(guān)聯(lián)的iregion、dregion寫(xiě)和dregion讀值。激活適當(dāng)?shù)膇region、dregion寫(xiě)和dregion讀的操作在圖4中由步驟307所示出。在這樣的實(shí)施例中,有可能根據(jù)系統(tǒng)地址匹配、監(jiān)管者模式匹配和激活區(qū)域操作有多快而在單個(gè)指令周期內(nèi)改變上下文。如這里已經(jīng)描述的,系統(tǒng)地址(SysAddr)區(qū)域被選擇為地址映射中寫(xiě)入對(duì)其無(wú)害的某處。此外,只要新的用戶過(guò)程開(kāi)始執(zhí)行,監(jiān)視器塊就將準(zhǔn)備強(qiáng)制相關(guān)聯(lián)的用戶上下文。由監(jiān)視器150強(qiáng)制指令獲取鍵值的操作關(guān)于圖5所示出。在這樣的實(shí)施例中,監(jiān)視器150讀取CPU ifetch地址訪問(wèn)以確定是否已經(jīng)生成了非法指令請(qǐng)求。因此在一些實(shí)施例中,監(jiān)視器150能夠讀取CPU指令訪問(wèn)的ifetch地址101。讀取CPU指令訪問(wèn)的操作在圖5中由步驟401所示出。監(jiān)視器150隨后能夠檢查指令訪問(wèn)地址是否處于當(dāng)前的上下文iregion地址范圍之內(nèi)。在指令不處于指令區(qū)域(iregion)地址的范圍中的情況下,則操作進(jìn)行至確定非法指令讀取。檢查指令是否處于當(dāng)前上下文的地址區(qū)域中的操作在圖5中由步驟403所示出。在一些實(shí)施例中,在通過(guò)檢查之后,監(jiān)視器150確定指令監(jiān)視周期結(jié)束并且指令獲取合法。此外,結(jié)束指令監(jiān)視周期的操作在圖5中由步驟407所示出。在一些實(shí)施例中,當(dāng)范圍檢查失敗時(shí),監(jiān)視器150被配置為在系統(tǒng)中斷耦合109上向CPU生成系統(tǒng)中斷信號(hào)輸出。該系統(tǒng)中斷信號(hào)在一些實(shí)施例中可以被CPU用來(lái)指示針對(duì)當(dāng)前用戶上下文的非法指令正被訪問(wèn)。關(guān)于圖6,示出了監(jiān)視器150所進(jìn)行的強(qiáng)制數(shù)據(jù)訪問(wèn)的操作。在這樣的實(shí)施例中,監(jiān)視器150讀取CPU d_access地址103以及讀非寫(xiě)信號(hào)(r_n_w信號(hào))105以確定是否已經(jīng)生成了非法數(shù)據(jù)請(qǐng)求。讀取CPU數(shù)據(jù)訪問(wèn)值和讀非寫(xiě)信號(hào)的操作在圖6中由步驟501所示出。在一些實(shí)施例中,在讀非寫(xiě)信號(hào)激活的情況下,換句話說(shuō),在數(shù)據(jù)訪問(wèn)是讀訪問(wèn)的情況下,監(jiān)視器150可以被配置為檢查數(shù)據(jù)訪問(wèn)是否處于活動(dòng)或當(dāng)前上下文dregion讀地址區(qū)域之內(nèi)。檢查作為讀取的數(shù)據(jù)訪問(wèn)是否處于當(dāng)前上下文dregion讀地址區(qū)域之內(nèi)的操作在圖6中由步驟503所示出。在一些實(shí)施例中,在讀非寫(xiě)信號(hào)不為活躍的情況下,換句話說(shuō),在數(shù)據(jù)訪問(wèn)是寫(xiě)訪問(wèn)的情況下,監(jiān)視器150可以被配置為檢查數(shù)據(jù)訪問(wèn)是否處于活躍的或當(dāng)前上下文dregion寫(xiě)地址區(qū)域之內(nèi)。檢查作為寫(xiě)入的數(shù)據(jù)訪問(wèn)是否處于當(dāng)前上下文dregion寫(xiě)地址區(qū)域之內(nèi)的操作在圖6中由步驟505所示出。在數(shù)據(jù)訪問(wèn)不處于當(dāng)前上下文dregion內(nèi)的情況下(對(duì)于讀訪問(wèn)是dregion讀而對(duì)于寫(xiě)訪問(wèn)則是dregion寫(xiě)),則監(jiān)視器150可以被配置為在系統(tǒng)中斷耦合109上向CPU生成系統(tǒng)中斷信號(hào)輸出。該系統(tǒng)中斷信號(hào)在一些實(shí)施例中可以被CPU用來(lái)指示針對(duì)當(dāng)前用戶上下文的非法數(shù)據(jù)訪問(wèn)正被處理。生成非法數(shù)據(jù)訪問(wèn)系統(tǒng)中斷的操作在圖6中由步驟509所示出。在數(shù)據(jù)訪問(wèn)處于當(dāng)前上下文dregion內(nèi)的情況下(對(duì)于讀訪問(wèn)是dregion讀而對(duì)于寫(xiě)訪問(wèn)則是dregion寫(xiě)),則監(jiān)視器150可以被配置為結(jié)束數(shù)據(jù)監(jiān)視周期。結(jié)束數(shù)據(jù)監(jiān)視的操作在圖6中由步驟507所示出。
將要理解的是,CPU可以被配置為以任意適當(dāng)方式對(duì)系統(tǒng)中斷進(jìn)行響應(yīng)。關(guān)于圖7,更為詳細(xì)地示出了根據(jù)一些實(shí)施例的另外的示例監(jiān)視器塊1005。在一些實(shí)施例中,監(jiān)視器塊1005包括輸入/輸出塊1110,其被配置為監(jiān)視CPU I和存儲(chǔ)器3之間的存儲(chǔ)器訪問(wèn),并且輸入/輸出塊1110還與安全塊7進(jìn)行通信,諸如在需要時(shí)向安全塊7輸出指示器(indicator)或者從安全塊7接收“范圍”數(shù)據(jù)。關(guān)于圖12,示出了顯示用于輸入/輸出塊的示例輸入和輸出的表。特別地,在一些實(shí)施例中,輸入可以包括至少一個(gè)指令總線監(jiān)視器輸入1601、至少一個(gè)數(shù)據(jù)總線監(jiān)視器輸入1603以及至少一個(gè)到安全塊7的輸出(由fetch_exc印tion輸入1605所示出)。在該示例中,指令總線監(jiān)視器輸入1601被示為指令總線監(jiān)視器(cpU_ifetch_addr〈31:4>)、指令獲取監(jiān)視器(cpu_ifetch_active),以及確定指令獲取是監(jiān)管者指令還是用戶指令的輸入(cpu_ifetch_sup)。此外,在一些實(shí)施例中,數(shù)據(jù)總線監(jiān)視器輸入1603包括數(shù)據(jù)訪問(wèn)地址監(jiān)視器(cpu_dfetch_d_addr<31:4 、數(shù)據(jù)訪問(wèn)監(jiān)視器(cpu_dfetch_active),以及確定從所訪問(wèn)地址是在寫(xiě)入還是在讀取數(shù)據(jù)的輸入(cpu_dfetch_rnw)。監(jiān)視器塊5可以進(jìn)一步包括寄存器區(qū)域1100。寄存器區(qū)域或硬件寄存器區(qū)域可以被配置為存儲(chǔ)監(jiān)視器塊5用來(lái)監(jiān)視指令和/或數(shù)據(jù)訪問(wèn)以確定它們是否是可接受的數(shù)據(jù)或指令訪問(wèn)值的數(shù)據(jù)值。在一些實(shí)施例中,寄存器區(qū)域1100可以包括ifetch區(qū)域1101、dfetch區(qū)域1104、失敗(failure)區(qū)域1105和系統(tǒng)地址區(qū)域1107。ifetch區(qū)域1101例如可以包括指示與上下文/軟件處理能夠從其合法獲得指令的每個(gè)上下文或軟件處理相關(guān)聯(lián)的指令存儲(chǔ)器區(qū)域地址的區(qū)域的一系列寄存器值。ifetch區(qū)域1101的示例例如可以關(guān)于圖13所示出,其中ifetch區(qū)域1101可以被細(xì)分為η個(gè)區(qū)域(其中對(duì)于該示例而言η = O至63)。在一些實(shí)施例中,對(duì)于每個(gè)區(qū)域,ifetch 區(qū)域 1101 包括 ifetch 區(qū)域地址下界(ifetch_retion_〈n>_lower) > ifetch 區(qū)域地址上界值(ifetch_region_〈n>_upper)、標(biāo)簽標(biāo)識(shí)值(ifetch_region_〈n>_tag)以及使能和監(jiān)管者/用戶控制指示器(ifetch_region_〈n>_sup_en)。關(guān)于圖14、15、16和17,根據(jù)一些實(shí)施例更為詳細(xì)地示出了下界、上界、標(biāo)簽和監(jiān)
管者/用戶控制寄存器。關(guān)于圖14,根據(jù)本申請(qǐng)一些實(shí)施例示出了下界ifetch區(qū)域寄存器定義。在這樣的實(shí)施例中,下界寄存器具有(針對(duì)ifetch區(qū)域η)定義地址下界值的數(shù)據(jù),在該示例中,該值被定義為來(lái)自寄存器的位置31:4的數(shù)位。然而,將要理解的是,下界值可以使用任意適當(dāng)?shù)臄?shù)位配置并且定義如CPU所使用的任意形式的地址。關(guān)于圖15,根據(jù)本申請(qǐng)一些實(shí)施例示出了上界ifetch區(qū)域寄存器定義。在該示例中,ifetch區(qū)域η的上界地址值可以由來(lái)自32位寄存器的位置31:4的數(shù)位值所定義。然而,在其它實(shí)施例中,可以使用定義如CPU所使用地址的任意適當(dāng)寄存器配置。關(guān)于圖16,示出了根據(jù)一些實(shí)施例的標(biāo)簽寄存器定義,其中8位值(標(biāo)簽寄存器的數(shù)位位置7:0)定義ifetch區(qū)域η的標(biāo)簽值。
關(guān)于圖17,根據(jù)本申請(qǐng)一些實(shí)施例示出了監(jiān)管者和使能寄存器的定義。在(諸如圖17中所示的)一些實(shí)施例中,使能標(biāo)志位值由監(jiān)管者和使能寄存器的數(shù)位位置O所定義。此外,監(jiān)管者標(biāo)志位值由監(jiān)管者和使能寄存器的數(shù)位位置I所定義,并且定義了定義地址邊界內(nèi)的指令是監(jiān)管者還是用戶指令的監(jiān)管者標(biāo)志。在一些實(shí)施例中,例如監(jiān)管者和使能寄存器的數(shù)位位置2的監(jiān)管者使能標(biāo)志位能夠定義監(jiān)管者使能指令標(biāo)志。如圖13所示,對(duì)于每個(gè)區(qū)域而言,dfetch區(qū)域103也可以從η = O至63而被細(xì)分為四個(gè)部分。在一些實(shí)施例中,dfetch區(qū)域寄存器103可以包括下界地址dfetch區(qū)域(dfetch_retion_<n>_lower)、上界地址 ifetch 區(qū)域(dfetch_retion_〈n>_upper)、使能和只讀控制配置區(qū)域(dfetch_retion_〈n>_config)以及保留區(qū)域。將要理解的是,在一些實(shí)施例中僅需要這些之中的前三個(gè)。關(guān)于圖18,示出了下界dfetch區(qū)域寄存器的示例定義,其中針對(duì)區(qū)域η的dfetch下界地址由寄存器的數(shù)位位置31:4的值所定義。將要理解的是,下界dfetch地址可以為值的任意適當(dāng)配置或數(shù)位位置排列。關(guān)于圖19,示 出了上界區(qū)域寄存器的示例定義,其中針對(duì)區(qū)域η的dfetch上界地址由寄存器的數(shù)位位置31:4的值所定義。將要理解的是,上界dfetch地址可以由任意適當(dāng)?shù)臄?shù)位排列所定義。關(guān)于圖20,示出了配置dfetch寄存器的示例定義。配置dfetch寄存器可以利用確定dfetch區(qū)域的可接受的讀或?qū)憼顟B(tài)的單個(gè)數(shù)位標(biāo)志來(lái)配置。在該示例中,寄存器的數(shù)位位置O被用作指示器,其中活躍的值或值“I”被定義為指示dfetch區(qū)域?yàn)橹蛔x(RO),而不活躍的值或值“O”指示dfetch區(qū)域?yàn)樽x寫(xiě)(RW)。此外,在一些實(shí)施例中,配置dfetch寄存器可以利用指示該區(qū)域是否“使能”的另外數(shù)位標(biāo)志指示器進(jìn)行配置。在該示例中,配置dfetch寄存器的數(shù)位位置I被用作使能標(biāo)
O在一些實(shí)施例中,如圖13所示的失敗區(qū)域105可以被劃分為一系列失敗寄存器指示器。例如,失敗區(qū)域105在一些實(shí)施例中可以包括失敗狀態(tài)寄存器(failure_status)、非法指令獲取地址值指示器(ifetcn_failure_addr)、數(shù)據(jù)地址異常(dfetch_failure_addr)和最后“良好”指令獲取地址值(ifetch_good_addr)。關(guān)于圖21,示出了失敗狀態(tài)(failure_status)寄存器的示例定義。失敗狀態(tài)寄存器在一些實(shí)施例中例如可以在數(shù)位位置O定義第一標(biāo)志數(shù)位,其定義了何時(shí)在任何活躍的iregion之外嘗試ifetch (Ifetch)。此外,在一些實(shí)施例中,失敗狀態(tài)寄存器例如可以在數(shù)位位置I包括另外的標(biāo)志位,其定義無(wú)效的ifetch/dfetch組合(comb)。關(guān)于圖22,示出了 ifetch失敗地址(ifetch_failure_addr)寄存器的示例定義。在一些實(shí)施例中,ifetch失敗地址寄存器例如可以在數(shù)位位置O定義第一標(biāo)志位,其定義在出現(xiàn)異常時(shí)CPU是否處于監(jiān)管者模式(sup)。此外,在一些實(shí)施例中,ifetch失敗地址寄存器例如可以在數(shù)位位置3:1包括定義在出現(xiàn)異常時(shí)的活躍的上下文(context)的值,以及在位置31:4的定義導(dǎo)致該異常的代碼地址(value)的另外值。關(guān)于圖23,示出了 dfetch失敗地址(dfetch_failure_addr)寄存起的示例定義。在一些實(shí)施例中,dfetch失敗地址寄存器例如可以在數(shù)位位置O定義第一標(biāo)志位,其定義在出現(xiàn)異常時(shí)CPU是在嘗試讀取還是寫(xiě)入(rnw)。此外,在一些實(shí)施例中,dfetch失敗地址寄存器例如可以在位置31:4包括定義導(dǎo)致ifetch/dfetch組合異常的數(shù)據(jù)地址的值。關(guān)于圖24,示出了 ifetch最后良好指令地址(ifetch_good_addr)的示例定義。在一些實(shí)施例中,ifetch最后良好指令地址寄存器例如可以在數(shù)位位置31:4定義值,其定義了來(lái)自使能區(qū)域的最后所執(zhí)行指令的代碼地址。在一些實(shí)施例中,如圖13所示,寄存器區(qū)域1100的SysAddr區(qū)域1107可以包括定義“神奇(magic) ”地址的上下文地址(context_address)寄存器。關(guān)于圖25,根據(jù)一些實(shí)施例示出了上下文地址寄存器(context_address)的示例定義。上下文地址寄存器例如可以在寄存器的數(shù)位位置31:7(value)定義值,其定義了“神奇值”,該神奇值在CPU嘗試進(jìn)行訪問(wèn)時(shí)出現(xiàn),用于指示當(dāng)前上下文要有所變化。此外,上下文地址寄存器例如可以在寄存器的數(shù)位位置6:4(current_context)包括另外的值,其定義初始上下文值。此外,如圖13所示,寄存器區(qū)域1100在一些實(shí)施例中可以包括上下文標(biāo)識(shí)值寄存器1109,其中上下文標(biāo)識(shí)寄存器的8個(gè)字節(jié)包含6位的上下文標(biāo)識(shí)值(CID)。在一些實(shí)施例中每個(gè)上下文有一個(gè)CID。這些實(shí)施例中的上下文管理器可以被配置為輸出當(dāng)前上下文的CID以使得片上系統(tǒng)(SOC)的總線知曉哪個(gè)使用上下文在當(dāng)前進(jìn)行操作并且這允許SOC硬件強(qiáng)制進(jìn)行上下文敏感的安全措施。關(guān)于圖26,根據(jù)一些實(shí)施例示出了上下文標(biāo)識(shí)寄存器(CID_n)的示例定義。上下文標(biāo)識(shí)寄存器在一些實(shí)施例中可以包括6位的值,例如寄存器數(shù)位位置5:0 (CID),其定義了要用來(lái)標(biāo)識(shí)上下文的6位的上下文標(biāo)識(shí)(CID)值。在一些實(shí)施例中,監(jiān)視器塊5進(jìn)一步包括系統(tǒng)地址(SysAddr)監(jiān)視器1120。系統(tǒng)地址監(jiān)視器1120被配置為對(duì)寄存器區(qū)域1100進(jìn)行初始化,并且另外被配置為監(jiān)視系統(tǒng)地址值以確定上下文已經(jīng)改變并且因此激活當(dāng)前上下文值。關(guān)于圖8進(jìn)一步詳細(xì)示出了系統(tǒng)地址監(jiān)視器1120的初始化操作。作為初始化操作,系統(tǒng)/裝置可以被啟動(dòng)或重啟。啟動(dòng)或重啟系統(tǒng)的操作在圖8中由步驟1201所示出。此外,在一些實(shí)施例中,選擇定義CPU輸出時(shí)指示上下文變化的地址的系統(tǒng)地址。所選擇的系統(tǒng)地址可以是并非準(zhǔn)備用于某用途的任意適當(dāng)?shù)拇鎯?chǔ)器地址值。例如,在一些實(shí)施例中,所選擇的系統(tǒng)地址是非映射區(qū)域,這是因?yàn)閺乃鶎ぶ穮^(qū)域讀取或?qū)懭霐?shù)據(jù)的能力是不相關(guān)的。在一些實(shí)施例中,系統(tǒng)地址可以由安全塊7來(lái)選擇。在一些實(shí)施例中,安全塊的功能可以與監(jiān)視器塊5相融合。在所示出的示例中,系統(tǒng)地址(SysAddr)被選擇為系統(tǒng)地址空間中128個(gè)字節(jié)的區(qū)域(2n,其中η是上下文的數(shù)量并且在該示例中η = 8)。選擇系統(tǒng)地址的操作在圖8中由步驟1203所示出。此外,在一些實(shí)施例中,安全塊7可以被配置為針對(duì)每個(gè)上下文選擇或定義至少一個(gè)指令地址區(qū)域(iregion)和至少一個(gè)數(shù)據(jù)地址區(qū)域(dregion),來(lái)自那里的訪問(wèn)是合法且被允許的。在以下示例中,安全塊7被配置為針對(duì)八個(gè)上下文中的每一個(gè)定義八個(gè)指令地址區(qū)域和八個(gè)數(shù)據(jù)地址區(qū)域。換句話說(shuō),對(duì)于具有8個(gè)上下文的該示例而言,定義多達(dá)64個(gè)區(qū)域。在一些實(shí)施例中,iregion可以包括上界區(qū)域地址和下界區(qū)域地址。在以下示例中,邊界為所排列的8個(gè)字節(jié)。在一些實(shí)施例中,區(qū)域可以被“打包”,其中region_x_upper小于region_x_lower。然而,在一些實(shí)施例中,區(qū)域并不被打包并且被定義為連續(xù)且單調(diào)的地址。
在一些實(shí)施例中,每個(gè)區(qū)域是單獨(dú)的,然而可以理解的是,在一些實(shí)施例中,區(qū)域可以是至少部分重疊的。如這里所描述的,iregion可以被配置為CPU能夠合法訪問(wèn)代碼指令的區(qū)域,連同定義確定指令代碼是否被允許以CPU監(jiān)管者和/或用戶模式被執(zhí)行的一些標(biāo)志或指示器,并且定義8位的“標(biāo)簽”字段,其指示來(lái)自iregion的代碼被允許訪問(wèn)來(lái)自哪個(gè)dregion的數(shù)據(jù)。此外,在一些實(shí)施例中dregion可以被配置為描述包含可合法尋址數(shù)據(jù)、確定數(shù)據(jù)是只讀(RO)還是讀寫(xiě)(RW)的標(biāo)志或指示器以及使能位的區(qū)域。雖然這里所描述的示例示出了包括8個(gè)iregion和8個(gè)dregion的上下文,但是對(duì)每個(gè)上下文所分配的iregion和dregion的數(shù)量在一些實(shí)施例中可以是動(dòng)態(tài)的,并且另外在一些實(shí)施例中每個(gè)上下文可以多于或少于8個(gè)區(qū)域。此外,雖然所示出的示例定義了八個(gè)上下文的區(qū)域,但是在本申請(qǐng)的一些實(shí)施例中比八個(gè)更多或更少的上下文具有所定義的區(qū)域。在一些實(shí)施例中,系統(tǒng)地址監(jiān)視器1120因此能夠針對(duì)每個(gè)上下文將iregion和dregion值寫(xiě)入或編程到寄存器區(qū)域1100中。將每個(gè)上下文的iregion和dregion值寫(xiě)入寄存器的操作在圖8中由步驟1207所示出。此外,系統(tǒng)地址監(jiān)視器1120可以被配置為將系統(tǒng)地址(SysAddr)寫(xiě)入或編程到寄存器區(qū)域1100的系統(tǒng)地址區(qū)域、特別是上下文地址寄存器(context_address)。在寫(xiě)入上下文iregion和dregion值以及寫(xiě)入系統(tǒng)地址之后,系統(tǒng)地址監(jiān)視器1120可以被配置為激活監(jiān)視器塊5以開(kāi)始針對(duì)指令和數(shù)據(jù)訪問(wèn)監(jiān)視CPU I。關(guān)于圖9示出了系統(tǒng)地址監(jiān)視器1120切換上下文的操作。系統(tǒng)地址監(jiān)視器1120例如可以被配置為讀取CPU數(shù)據(jù)訪問(wèn)地址值。讀取CPU數(shù)據(jù)訪問(wèn)地址值的操作在圖9中通過(guò)步驟1301所示出。系統(tǒng)地址監(jiān)視器1120可以進(jìn)一步被配置為檢查數(shù)據(jù)訪問(wèn)是否以監(jiān)管者操作模式所執(zhí)行。此外,系統(tǒng)地址監(jiān)視器1120可以被配置為檢查數(shù)據(jù)訪問(wèn)地址是否與所存儲(chǔ)的上下文地址相匹配,換句話說(shuō),以下表達(dá)式是否滿足cpu_dfetch_d_addr(31:7) = context_address (31:7) 0換句話說(shuō),CPU數(shù)據(jù)獲取地址是否匹配神奇地址(或系統(tǒng)地址)。檢查訪問(wèn)是否處于監(jiān)管者模式并且與上下文地址值相匹配的操作在圖9中通過(guò)步驟1303所示出。在已經(jīng)確定系統(tǒng)地址訪問(wèn)已經(jīng)被正確檢測(cè)之后,系統(tǒng)地址監(jiān)視器1120隨后可以被配置為確定新的或活躍的上下文。例如,在一些實(shí)施例中,活躍的上下文值可以被定義為cpu_dfetch_d_addr (6:4)數(shù)據(jù)所定義的值。換句話說(shuō),定義新的context (m),其中m取cpu_dfetch_d_addr(6:4)所給出的無(wú)符號(hào)整數(shù)值。在一些實(shí)施例中,可以有以下系統(tǒng)要求,CPU不能在安全塊對(duì)上下文進(jìn)行重新編程的同時(shí)切換至該上下文,這是因?yàn)楫?dāng)它們被復(fù)制到以CPU時(shí)鐘為時(shí)鐘的活動(dòng)上下文寄存器時(shí),以安全塊總線(clk_stbus)為時(shí)鐘的上下文寄存器沒(méi)有重新同步。系統(tǒng)地址監(jiān)視器1120隨后可以被配置為激活與活動(dòng)上下文值相關(guān)聯(lián)的ifetch區(qū)域、dfetch區(qū)域。在一些實(shí)施例中,這可以包括激活ifetch和dfetch寄存器區(qū)域100的使能標(biāo)志值。
激活適當(dāng)ifetch和dfetch區(qū)域的操作在圖9中由步驟1307所示出。此外,在一些實(shí)施例中,確定活動(dòng)上下文方面,系統(tǒng)地址監(jiān)視器1120可以被配置為讀取并輸出從上下文標(biāo)識(shí)(CID_n)寄存器中的安全塊所初始化的查找表取得的上下文標(biāo)識(shí)值。在一些實(shí)施例中,監(jiān)視器塊包括ifetch監(jiān)視器1140。ifetch監(jiān)視器1140可以被配置為監(jiān)視CPU的ifetch地址訪問(wèn)以確定是否已經(jīng)生成了非法指令請(qǐng)求。因此在一些實(shí)施例中,ifetch監(jiān)視器1140能夠讀取CPU指令訪問(wèn)。讀取CPU指令訪問(wèn)的操作在圖10中由步驟1401所示出。ifetch監(jiān)視器1140隨后能夠檢查指令是否處于活躍的區(qū)域中。換句話說(shuō),ifetch監(jiān)視器1140讀取活躍的上下文的上下界地址以確定當(dāng)前CPU的ifetch地址是否處于任何這些活躍的區(qū)域中。(CPU_ifetch_ADDR是否處于活躍的1-region地址范圍內(nèi))。在區(qū)域沒(méi)有打包的情況下,則如果region_x_lower< =地址AND (與)region_x_upper>地址地址處于區(qū)域之內(nèi),在區(qū)域被打包的情況下,則如果region_x_lower〈=地址 OR(或)region_x_upper> 地址地址處于區(qū)域之內(nèi)。在指令不處于任何指令區(qū)域地址的范圍之內(nèi),在操作進(jìn)行至確定非法指令讀取,然而如果指令處于活躍的區(qū)域之內(nèi),則操作進(jìn)行至監(jiān)管者檢查。檢查指令是否處于活躍的區(qū)域之內(nèi)的操作在圖10中由步驟1403所示出。在指令處于活躍的區(qū)域的情況下,則ifetch監(jiān)視器1140可以被配置為檢查中央處理單元處于監(jiān)管者模式,其中地址范圍定義了僅監(jiān)管者被使能。換句話說(shuō),在范圍確定了模式檢查諸如所設(shè)置的ifetch_sup_en(2)示出的被使能,則對(duì)CPU進(jìn)行檢查ifetch_sup_en(l)中所指定的監(jiān)管者模式是否等于監(jiān)管者模式輸入cpu_ifetch_sup。監(jiān)管者模式檢查的操作在圖10中由步驟1405所示出。在檢查通過(guò)的情況下,ifetch監(jiān)視器1140確定指令監(jiān)視周期已經(jīng)結(jié)束并且指令獲取合法。然而,在檢查沒(méi)有通過(guò)的情況下,操作進(jìn)行至非法指令讀取操作。此外,結(jié)束指令監(jiān)視周期的操作在圖10中由步驟1407所示出。在范圍檢查或監(jiān)管者模式檢查失敗的情況下,則ifetch監(jiān)視器1140被配置為向異常生成器1130指示已經(jīng)發(fā)生了故障。在一些實(shí)施例中,監(jiān)視器塊5包括異常生成器1130,其被配置為從ifetch監(jiān)視器1140和/或組合監(jiān)視器1150接收已經(jīng)進(jìn)行了失敗檢查的指示器。異常生成器1130可以進(jìn)一步被配置為確定其是ifetch監(jiān)視器失敗還是組合監(jiān)視器失敗。異常生成器1130在檢測(cè)到ifetch監(jiān)視器失敗指示器時(shí)初始化非法指令讀取操作。在這樣的實(shí)施例中,異常生成器1130能夠被配置為在ifetch指示器的失敗狀態(tài)為“O”的情況下將失敗狀態(tài)ifetch指示器設(shè)置為“I” (failure_status.1fetch ==1)。讀取非法指令并且設(shè)置失敗狀態(tài)的操作在圖10中由步驟1409示出。此外,異常生成器1130可以被配置為聲明獲取異常寄存器(fetch_exception)。聲明獲取異常生成器的操作在圖10的步驟1411中示出。此外,在一些實(shí)施例中,異常生成器1130可以被配置為讀取最后良好地址(ifetch_good_addr),讀取失敗地址(ifetch_failure_addr)。此外,在一些實(shí)施例中,異常生成器1130可以被配置為讀取值的監(jiān)管者模式和當(dāng)前活躍的上下文。讀取最后良好地址、失敗地址以及監(jiān)管者和當(dāng)前活躍的上下文模式的操作在圖10中由步驟1413所示出。在一些實(shí)施例中,異常生成器1130可以被配置為將這些值輸出至安全塊7。安全塊7隨后在接收到這些值時(shí)能夠初始化系統(tǒng)重啟以防止任何進(jìn)一步的侵入或者防止軟件上下文執(zhí)行非法指令代碼。在一些實(shí)施例中,監(jiān)視器塊5可以進(jìn)一步包括組合監(jiān)視器1150。組合監(jiān)視器1150可以被配置為監(jiān)視數(shù)據(jù)訪問(wèn)和指令區(qū)域值以確定針對(duì)存儲(chǔ)器哪里的數(shù)據(jù)訪問(wèn)是非法的。組合監(jiān)視器1150在一些實(shí)施例中可以被配置為讀取CPU數(shù)據(jù)/指令值。讀取CPU數(shù)據(jù)/指令值的操作在圖11中由步驟1501所示出。組合監(jiān)視器1150可以進(jìn)一步被配置為檢查數(shù)據(jù)訪問(wèn)處于活躍的區(qū)域內(nèi)。在一些實(shí)施例中,檢查數(shù)據(jù)訪問(wèn)處于活躍的區(qū)域中的操作包括生成與CPU數(shù)據(jù)獲取值(cpu_dfetch_d_addr)相匹配的活動(dòng)dregion地址范圍的列表。生成與CPU的dfetch地址值相匹配的活動(dòng)dregion地址范圍的列表的操作在圖11中由步驟1503所示出。此外,組合監(jiān)視器1150可以被配置為執(zhí)行數(shù)據(jù)訪問(wèn)檢查。數(shù)據(jù)訪問(wèn)檢查可以包括在數(shù)據(jù)訪問(wèn)是寫(xiě)入并且列表中的數(shù)據(jù)獲取項(xiàng)被定義為只讀的情況下去除任意列表成員。換句話說(shuō),dfetch_region_readonly標(biāo)志被設(shè)置為I而數(shù)據(jù)訪問(wèn)是寫(xiě)訪問(wèn)。在數(shù)據(jù)訪問(wèn)是寫(xiě)入并且列表中的項(xiàng)為只讀的情況下去除列表成員的操作在圖11中由步驟1505所示出。組合監(jiān)視器1150隨后可以被配置為生成組合檢查值。在一些實(shí)施例中,組合檢查值可以包括對(duì)與cpu_ifetch_addr值相匹配的iregion進(jìn)行按位或(OR)。指令檢查值生成的操作在圖11中由步驟1507所示出。組合監(jiān)視器1150隨后可以被配置為生成組合值,其中dregion列表成員與指令檢查值進(jìn)行相與(AND)。生成組合檢查值的操作在圖11中由步驟1509所示出。組合監(jiān)視器1150隨后可以被配置為執(zhí)行空結(jié)果檢查,換句話說(shuō),檢查組合值結(jié)果是否等于零以及另外dfetch是否等于系統(tǒng)地址。執(zhí)行空結(jié)果檢查的操作在圖11中由步驟1511所示出。在結(jié)果等于O并且dfetch不等于系統(tǒng)地址的情況下,則已經(jīng)存在非法數(shù)據(jù)訪問(wèn)的指示器被送至異常生成器1130。在結(jié)果不等于O或dfetch等于系統(tǒng)地址的情況下,則組合監(jiān)視周期結(jié)束。結(jié)束組合周期的操作在圖11中由步驟1512所示出。在一些實(shí)施例中,異常生成器1130可以被配置為在檢測(cè)到來(lái)自組合監(jiān)視器的已經(jīng)發(fā)生非法數(shù)據(jù)訪問(wèn)的指示器時(shí)將失敗狀態(tài)組合寄存器值設(shè)置為l(failUre_StatUS.comb==I)并且進(jìn)一步聲明獲取異常值(fetch_exception)。在異常生成器初始化非法數(shù)據(jù)訪問(wèn)響應(yīng)的操作在圖11中由步驟1513所示出。此外,在一些實(shí)施例中,異常生成器1130在確定失敗狀態(tài)組合設(shè)置時(shí)可以被配置為讀取失敗地址(dfetch_failure_addr),讀取與失敗地址相關(guān)聯(lián)的指令地址(ifetch_failure_addr),并且進(jìn)一步讀取監(jiān)管者模式和當(dāng)前活躍的模式上下文值。
讀取失敗地址、指令地址以及監(jiān)管者和當(dāng)前活動(dòng)上下文值的操作在圖11中由步驟1515所示出。
換句話說(shuō),在failure_status.comb =“1”時(shí),可以讀取dfetch失敗地址,其包含非法數(shù)據(jù)訪問(wèn)的地址。此外,if etch地址包含進(jìn)行非法數(shù)據(jù)訪問(wèn)的指令的地址。將要注意的是,在一些實(shí)施例中,可以讀取ifetch_good_address,然而,這僅能夠依賴于failure_status, ifetch 值也等于 I。
在一些實(shí)施例中,異常生成器1130可以被配置為無(wú)論何時(shí)設(shè)置了 value_status寄存器的任意值都輸出fetch_exception值作為聲明。failure_status寄存器可以在對(duì)其進(jìn)行寫(xiě)入時(shí)被清空。此夕卜,failure_status寄存器可以與時(shí)鐘CPU值同步。將要理解的是,失敗地址寄存器和ifetch良好地址寄存器在沒(méi)有聲明獲取異常值時(shí)沒(méi)有被定義,因?yàn)樗鼈円訡PU時(shí)鐘為時(shí)鐘而沒(méi)有被重新同步到安全總線域中。然而,它們?cè)讷@取和異常值被聲明的同時(shí)被保證是穩(wěn)定的。
—般而言,本發(fā)明的各個(gè)實(shí)施例可以以硬件或?qū)S秒娐?、軟件、邏輯或者其任意組合來(lái)實(shí)現(xiàn)。例如,一些方面可以以硬件來(lái)實(shí)現(xiàn),而其它方面可以以固件或可以由控制器、微處理器或其它計(jì)算設(shè)備所執(zhí)行的軟件來(lái)實(shí)現(xiàn),雖然本發(fā)明并不局限于此。雖然本發(fā)明的各個(gè)方面可以被圖示和描述為框圖、流程圖,或者使用其它一些圖形表示形式進(jìn)行圖示和描述,但是所要理解的是,在非限制性示例中,這里所描述的這些模塊、裝置、系統(tǒng)、技術(shù)或方法可以以硬件、軟件、固件、專用電路或邏輯、通用硬件或控制器或其它計(jì)算設(shè)備,或者其一些組合來(lái)實(shí)現(xiàn)。
本申請(qǐng)的實(shí)施例可以由計(jì)算機(jī)軟件或者硬件或者由軟件和硬件的組合來(lái)實(shí)現(xiàn),該軟件可由移動(dòng)設(shè)備的諸如處理器實(shí)體中的數(shù)據(jù)處理器執(zhí)行。此外,就此而言所要注意的是,如圖中邏輯流程的任意框可以表示程序步驟,或者互連的邏輯電路、塊或功能,或者程序步驟和邏輯電路、塊和功能的組合。軟件可以存儲(chǔ)在諸如存儲(chǔ)器芯片或者處理器內(nèi)實(shí)施的存儲(chǔ)器模塊的物理媒體上,諸如硬盤(pán)或軟盤(pán)的磁性媒體上,以及例如DVD及其數(shù)據(jù)變化形式、⑶的光學(xué)媒體上。
存儲(chǔ)器可以是適于本地技術(shù)上下文的任意類型并且可以使用任意適當(dāng)?shù)臄?shù)據(jù)存儲(chǔ)技術(shù)來(lái)實(shí)現(xiàn),諸如基于半導(dǎo)體的存儲(chǔ)器設(shè)備、磁性存儲(chǔ)器設(shè)備和系統(tǒng)、光學(xué)存儲(chǔ)器設(shè)備和系統(tǒng)、固定存儲(chǔ)器和可移動(dòng)存儲(chǔ)器。數(shù)據(jù)處理器可以是適于本地技術(shù)上下文的任意類型,并且作為非限制性示例可以包括一個(gè)或多個(gè)通用計(jì)算機(jī)、專用計(jì)算機(jī)、微處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、門級(jí)電路以及基于多核處理器架構(gòu)的處理器。
本發(fā)明的實(shí)施例可以在諸如集成電路模塊的各種組件中進(jìn)行實(shí)踐。集成電路的設(shè)計(jì)是通過(guò)(且本身是)高度自動(dòng)化的過(guò)程。復(fù)雜且有力的軟件工具可用于將邏輯水平的設(shè)計(jì)轉(zhuǎn)換為準(zhǔn)備蝕刻并形成在半導(dǎo)體襯底上的半導(dǎo)體電路設(shè)計(jì)。
諸如加利福尼亞Mountain View的Synopsys和加利福尼亞SanJose的CadenceDesign所提供的那些程序使用妥善建立的設(shè)計(jì)規(guī)則以及預(yù)先存儲(chǔ)的設(shè)計(jì)模塊庫(kù)在半導(dǎo)體芯片上自動(dòng)規(guī)劃導(dǎo)線并定位組件。一旦完成了半導(dǎo)體電路的設(shè)計(jì),以標(biāo)準(zhǔn)化電子格式(例如,Opus、⑶SII等)所產(chǎn)生的設(shè)計(jì)可以被傳送至半導(dǎo)體制造工具或“fab”以進(jìn)行制造。
以上描述已經(jīng)通過(guò)示例性且非限制性的示例提供了本發(fā)明示例性實(shí)施例的全面和信息性的描述。然而,當(dāng)結(jié)合附圖和所附權(quán)利要求進(jìn)行閱讀時(shí),鑒于以上描述,各種修改和適配形式對(duì)于本領(lǐng)域技術(shù)人員將變得明顯。然而,本發(fā)明教導(dǎo)的所有這些和類似的修改形式仍然將落入如所附權(quán)利要求所確定的本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種監(jiān)視器,包括: 寄存器,其被配置為存儲(chǔ)至少兩個(gè)上下文以及上下文變化值;以及 上下文選擇器,其被配置為取決于確定上下文變化值與存儲(chǔ)器訪問(wèn)地址的第一部分相匹配,選擇所述兩個(gè)上下文中的至少一個(gè)以進(jìn)行上下文監(jiān)視。
2.根據(jù)權(quán)利要求1的監(jiān)視器,其中所述至少兩個(gè)上下文中的每個(gè)上下文與標(biāo)識(shí)符值相關(guān)聯(lián),并且其中所述上下文選擇器被配置為取決于所述存儲(chǔ)器訪問(wèn)地址的第二部分與上下文相關(guān)聯(lián)的標(biāo)識(shí)符值相匹配,選擇所述兩個(gè)上下文中的所述至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。
3.根據(jù)權(quán)利要求1和2的監(jiān)視器,其中每個(gè)上下文包括以下的至少一個(gè): 指令區(qū)域; 數(shù)據(jù)讀取區(qū)域;以及 數(shù)據(jù)寫(xiě)入?yún)^(qū)域。
4.根據(jù)權(quán)利要求1至3的監(jiān)視器,進(jìn)一步被配置為接收數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址,其中所述數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址是所述存儲(chǔ)器訪問(wèn)地址。
5.根據(jù)權(quán)利要求1至4的監(jiān)視器,進(jìn)一步被配置為接收指示CPU以監(jiān)管者模式進(jìn)行操作的監(jiān)管者模式指示器信號(hào)。
6.根據(jù)權(quán)利要求1至5的監(jiān)視器,進(jìn)一步包括地址監(jiān)視器,其被配置為接收存儲(chǔ)器訪問(wèn)地址并且將所述存儲(chǔ)器訪問(wèn)地址值與所述兩個(gè)上下文中所選擇的至少一個(gè)上下文進(jìn)行比較。
7.根據(jù)權(quán)利要求6的監(jiān)視器,其中`所述地址監(jiān)視器被配置為在所述存儲(chǔ)器訪問(wèn)地址值處于所述兩個(gè)上下文中所選擇的至少一個(gè)上下文之外時(shí)生成系統(tǒng)中斷。
8.根據(jù)權(quán)利要求1至7的監(jiān)視器,進(jìn)一步被配置為接收所述至少兩個(gè)上下文和所述上下文變化值。
9.一種處理器模塊,包括: 中央處理單元; 耦合至所述中央處理單元的存儲(chǔ)器;以及 根據(jù)權(quán)利要求1至8的監(jiān)視器,其被配置為從所述中央處理單元接收所述存儲(chǔ)器訪問(wèn)地址值。
10.根據(jù)權(quán)利要求9的處理器模塊,進(jìn)一步包括安全塊,其被配置為向所述監(jiān)視器輸出至少兩個(gè)上下文和所述上下文變化值。
11.一種監(jiān)視器,包括: 用于存儲(chǔ)至少兩個(gè)上下文和上下文變化值的裝置;以及 用于取決于確定所述上下文變化值與存儲(chǔ)器訪問(wèn)地址的第一部分相匹配,選擇所述兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視的裝置。
12.根據(jù)權(quán)利要求11的監(jiān)視器,其中所述至少兩個(gè)上下文中的每個(gè)上下文與標(biāo)識(shí)符值相關(guān)聯(lián),并且其中用于選擇的裝置進(jìn)一步包括用于取決于所述存儲(chǔ)器訪問(wèn)地址的第二部分與上下文相關(guān)聯(lián)的標(biāo)識(shí)符值相匹配,選擇所述兩個(gè)上下文中的所述至少一個(gè)上下文以進(jìn)行上下文監(jiān)視的裝置。
13.根據(jù)權(quán)利要求11和12的監(jiān)視器,其中每個(gè)上下文包括以下的至少一個(gè):指令區(qū)域; 數(shù)據(jù)讀取區(qū)域;以及 數(shù)據(jù)寫(xiě)入?yún)^(qū)域。
14.根據(jù)權(quán)利要求11至13的監(jiān)視器,進(jìn)一步包括用于接收數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址的裝置,其中所述數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址是所述存儲(chǔ)器訪問(wèn)地址。
15.根據(jù)權(quán)利要求11至14的監(jiān)視器,進(jìn)一步包括用于接收指示CPU以監(jiān)管者模式進(jìn)行操作的監(jiān)管者模式指示器信號(hào)的裝置。
16.根據(jù)權(quán)利要求11至15的監(jiān)視器,進(jìn)一步包括: 用于接收存儲(chǔ)器訪問(wèn)地址的裝置;以及 用于將所述存儲(chǔ)器訪問(wèn)地址值與所述兩個(gè)上下文中所選擇的至少一個(gè)上下文進(jìn)行比較的裝置。
17.根據(jù)權(quán)利要求16的監(jiān)視器,進(jìn)一步包括用于在所述存儲(chǔ)器訪問(wèn)地址值處于所述兩個(gè)上下文中所選擇的至少一個(gè)上下文之外時(shí)生成系統(tǒng)中斷的裝置。
18.根據(jù)權(quán)利要求11至17的監(jiān)視器,進(jìn)一步包括用于接收所述至少兩個(gè)上下文和所述上下文變化值的裝置。
19.一種處理器模塊,包括: 用于操作指令和處理數(shù)據(jù)的裝置; 用于存儲(chǔ)所述指令和所述數(shù)據(jù)的裝置;以及 根據(jù)權(quán)利要求11至18的監(jiān)視器。
20.根據(jù)權(quán)利要求19的處理器模塊,進(jìn)一步包括用于向所述監(jiān)視器輸出所述至少兩個(gè)上下文和所述上下文變化值的裝置。
21.一種用于監(jiān)視存儲(chǔ)器訪問(wèn)的方法,包括: 存儲(chǔ)至少兩個(gè)上下文和上下文變化值;以及 取決于確定所述上下文變化值與存儲(chǔ)器訪問(wèn)地址的第一部分相匹配,選擇所述兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。
22.根據(jù)權(quán)利要求21的方法,其中所述至少兩個(gè)上下文中的每個(gè)上下文與標(biāo)識(shí)符值相關(guān)聯(lián);并且其中選擇進(jìn)一步包括取決于所述存儲(chǔ)器訪問(wèn)地址的第二部分與上下文相關(guān)聯(lián)的標(biāo)識(shí)符值相匹配,選擇所述兩個(gè)上下文中的所述至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。
23.根據(jù)權(quán)利要求21和22的方法,其中每個(gè)上下文包括以下的至少一個(gè): 指令區(qū)域; 數(shù)據(jù)讀取區(qū)域;以及 數(shù)據(jù)寫(xiě)入?yún)^(qū)域。
24.根據(jù)權(quán)利要求21至23的方法,進(jìn)一步包括接收數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址,其中所述數(shù)據(jù)訪問(wèn)存儲(chǔ)器地址是所述存儲(chǔ)器訪問(wèn)地址。
25.根據(jù)權(quán)利要求21至24的方法,進(jìn)一步包括接收指示CPU以監(jiān)管者模式進(jìn)行操作的監(jiān)管者模式指示器信號(hào)。
26.根據(jù)權(quán)利要求21至25的方法,進(jìn)一步包括: 接收存儲(chǔ)器訪問(wèn)地址;以及 將所述存儲(chǔ)器訪問(wèn)地址值與所述兩個(gè)上下文中所選擇的至少一個(gè)上下文進(jìn)行比較。
27.根據(jù)權(quán)利要求26的方法,進(jìn)一步包括在所述存儲(chǔ)器訪問(wèn)地址值處于所述兩個(gè)上下文中所選擇的至少一個(gè)上下文之外時(shí)生成系統(tǒng)中斷。
28.根據(jù)權(quán)利要求21至27的方法,進(jìn)一步包括接收所述至少兩個(gè)上下文和所述上下文變化值。
29.—種編碼有指令的處理器可讀介質(zhì),當(dāng)被處理器所執(zhí)行時(shí),所述指令執(zhí)行根據(jù)權(quán)利要求21至28的方法。
30.一種裝置,包括至少一個(gè)處理器以及包含用于一個(gè)或多個(gè)程序的計(jì)算機(jī)代碼的至少一個(gè)存儲(chǔ)器,所述至少一個(gè)存儲(chǔ)器和所述計(jì)算機(jī)代碼被配置為利用所述至少一個(gè)處理器而使得所述裝置至少執(zhí)行根據(jù)權(quán)利要求21至28的方法。
31.一種監(jiān)視器,包括: 寄存器,其被配置為存儲(chǔ)至少兩個(gè)上下文以及上下文變化值; 輸入,其被配置為接收處理器數(shù)據(jù)寫(xiě)入訪問(wèn)地址值和訪問(wèn)模式指示器;以及上下文選擇器,其被配置為在確定所述數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第二部分與上下文變化值相匹配、并且所述訪問(wèn)模式指示器指示所述處理器處于監(jiān)管者模式時(shí),取決于所述數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第一部分選擇所述兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。
32.—種監(jiān)視方法,包括: 存儲(chǔ)至少兩個(gè)上下文以及上下文變化值; 接收處理器數(shù)據(jù)寫(xiě)入訪問(wèn)地址值和訪問(wèn)模式指示器; 確定所述數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第一部分與所述上下文變化值相匹配; 確定所述訪問(wèn)模式指示器指示所述處理器處于監(jiān)管者模式;以及 將所述上下文改變?yōu)榕c所述數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第二部分相關(guān)聯(lián)的上下文。
33.一種監(jiān)視器,包括: 用于存儲(chǔ)至少兩個(gè)上下文以及上下文變化值的裝置; 用于接收處理器數(shù)據(jù)寫(xiě)入訪問(wèn)地址值和訪問(wèn)模式指示器的裝置; 用于確定所述數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第一部分與所述上下文變化值相匹配的裝置; 用于確定所述訪問(wèn)模式指示器指示所述處理器處于監(jiān)管者模式的裝置;以及 用于將所述上下文改變?yōu)榕c所述數(shù)據(jù)寫(xiě)入訪問(wèn)地址值的第二部分相關(guān)聯(lián)的上下文的裝置。
全文摘要
本發(fā)明涉及硬件監(jiān)視器。其中,一種監(jiān)視器包括寄存器,其被配置為存儲(chǔ)至少兩個(gè)上下文以及上下文變化值;以及上下文選擇器,其被配置為取決于確定上下文變化值與存儲(chǔ)器訪問(wèn)地址的第一部分相匹配,選擇兩個(gè)上下文中的至少一個(gè)上下文以進(jìn)行上下文監(jiān)視。
文檔編號(hào)G06F11/30GK103164316SQ20121056359
公開(kāi)日2013年6月19日 申請(qǐng)日期2012年12月17日 優(yōu)先權(quán)日2011年12月16日
發(fā)明者M·特里莫, P·埃利奧特 申請(qǐng)人:意法半導(dǎo)體(R&D)有限公司