欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

從可公開(kāi)訪問(wèn)的儲(chǔ)存裝置訪問(wèn)有關(guān)數(shù)據(jù)處理機(jī)狀態(tài)的私有數(shù)據(jù)的制作方法

文檔序號(hào):6500625閱讀:211來(lái)源:國(guó)知局
專利名稱:從可公開(kāi)訪問(wèn)的儲(chǔ)存裝置訪問(wèn)有關(guān)數(shù)據(jù)處理機(jī)狀態(tài)的私有數(shù)據(jù)的制作方法
背景本發(fā)明的一些實(shí)施方案涉及處理器如何從計(jì)算機(jī)系統(tǒng)的儲(chǔ)存裝置(storage)讀取數(shù)據(jù)和將數(shù)據(jù)寫入儲(chǔ)存裝置。還描述了其他的實(shí)施方案。
由于各種設(shè)計(jì)考慮,一些處理器可以將私有狀態(tài)數(shù)據(jù)寫入可公開(kāi)訪問(wèn)儲(chǔ)存裝置的區(qū)域中。該私有狀態(tài)的格式、語(yǔ)義和位置可以在各種設(shè)計(jì)實(shí)現(xiàn)中有所不同。在描述處理器的文獻(xiàn)中,這樣的儲(chǔ)存區(qū)域常被標(biāo)記為“保留的”,表示它們的內(nèi)容不應(yīng)被讀取或修改,因?yàn)樗麄儼ㄋ接袪顟B(tài)。不幸的是,因?yàn)樵摂?shù)據(jù)被寫入到可公開(kāi)訪問(wèn)儲(chǔ)存裝置,所以軟件應(yīng)用、操作系統(tǒng)或外部代理(agent)(比如輸入輸出設(shè)備)可以訪問(wèn)該儲(chǔ)存區(qū)域(storage region)并且不當(dāng)使用存儲(chǔ)在其中的私有狀態(tài)。這些未經(jīng)核準(zhǔn)的實(shí)體對(duì)該私有狀態(tài)的訪問(wèn)和使用可能給處理器和平臺(tái)制造商和終端用戶帶來(lái)錯(cuò)誤和/或不期望的影響。
附圖簡(jiǎn)要說(shuō)明本發(fā)明的實(shí)施方案是以實(shí)施例的方式而非限制的方式在附圖中說(shuō)明的。在附圖中,同樣的標(biāo)號(hào)表示相似的要素。應(yīng)該注意到,本公開(kāi)中的提到的本發(fā)明的“一個(gè)”實(shí)施方案不一定是指同一實(shí)施方案,并且他們表示至少一個(gè)實(shí)施方案。


圖1示出了根據(jù)本發(fā)明的實(shí)施方案,可以混淆/編碼私有狀態(tài)數(shù)據(jù)的公開(kāi)儲(chǔ)存裝置的計(jì)算機(jī)系統(tǒng)的方框圖。
圖2描述了根據(jù)本發(fā)明的實(shí)施方案,描繪從私有狀態(tài)儲(chǔ)存區(qū)域讀取已編碼私有狀態(tài)數(shù)據(jù)值的方法的流程圖。
圖3描述了根據(jù)本發(fā)明的實(shí)施方案,描繪將已編碼私有狀態(tài)數(shù)據(jù)值寫入私有狀態(tài)儲(chǔ)存區(qū)域的方法的流程圖。
圖4示出了根據(jù)本發(fā)明的實(shí)施方案的計(jì)算機(jī)系統(tǒng)的方框圖,在所述計(jì)算機(jī)系統(tǒng)中處理器被設(shè)計(jì)為當(dāng)私有狀態(tài)數(shù)據(jù)被寫入公開(kāi)儲(chǔ)存裝置時(shí)混淆/編碼所述私有狀態(tài)數(shù)據(jù)。
圖5描述了根據(jù)本發(fā)明的實(shí)施方案,可用于實(shí)現(xiàn)混淆/編碼私有數(shù)據(jù)的示例性功能部件。
圖6描述了根據(jù)本發(fā)明的實(shí)施方案的部分示例性的地址混淆/編碼單元的更詳細(xì)的邏輯圖。
詳細(xì)描述在處理器操作期間,寫入儲(chǔ)存裝置(例如存儲(chǔ)器(memory))的處理器狀態(tài)可以包括兩類信息或數(shù)據(jù)。一類在此被稱為體系結(jié)構(gòu)數(shù)據(jù),而另一類被稱作針對(duì)實(shí)現(xiàn)的數(shù)據(jù)(在此也稱為“私有數(shù)據(jù)”或“私有狀態(tài)數(shù)據(jù)”)。
體系結(jié)構(gòu)數(shù)據(jù)是狀態(tài)信息,所述狀態(tài)信息對(duì)于所有制造商指定的特定類別的處理器是共同的,也就是具有基本相同的硬件和軟件間的高級(jí)接口。該接口被稱為指令集體系結(jié)構(gòu)(ISA)。在各種處理器實(shí)現(xiàn)上使用相同的ISA促進(jìn)(facilitate)為一個(gè)實(shí)現(xiàn)特別編寫的軟件在隨后的實(shí)現(xiàn)上運(yùn)行而不用改動(dòng)的能力。
ISA定義了運(yùn)行于處理器上的軟件可用的狀態(tài)、格式和語(yǔ)義,以及可用的操作接口(例如指令、事件)。部分ISA規(guī)范描述了處理器如何使用一個(gè)或更多個(gè)機(jī)器儲(chǔ)存裝置(例如存儲(chǔ)器)的區(qū)域來(lái)幫助(facilitate)其操作。這些儲(chǔ)存區(qū)域可以被處理器駐留其中的數(shù)據(jù)處理機(jī)中的軟件和其他設(shè)備(例如輸入輸出設(shè)備等)訪問(wèn)。處理器可以使用這些儲(chǔ)存區(qū)域來(lái)存儲(chǔ)體系結(jié)構(gòu)數(shù)據(jù)和私有狀態(tài)數(shù)據(jù)。
例如,考慮具有Intel公司制造的IntelPentium處理器的ISA的處理器,在此稱為IA-32 ISA。在某些操作期間,所述處理器可以利用儲(chǔ)存裝置中的區(qū)域。例如當(dāng)IA-32 ISA處理器進(jìn)入系統(tǒng)管理模式時(shí),它將各種數(shù)值存入儲(chǔ)存裝置中被稱為系統(tǒng)管理(SMM)狀態(tài)保存區(qū)的區(qū)域。各種體系結(jié)構(gòu)數(shù)據(jù)(例如各種機(jī)器寄存器比如ESI、EBP等)以ISA的文檔指明的格式被存入ISA的文檔中指明的位置。此外,各種私有數(shù)據(jù)被存入系統(tǒng)管理狀態(tài)保存區(qū)。在ISA的文檔中,這些私有狀態(tài)數(shù)據(jù)被標(biāo)記為“保留的”;該私有數(shù)據(jù)的內(nèi)容、格式和語(yǔ)義在ISA文檔中并未指明。這些“保留的”儲(chǔ)存裝置的區(qū)域在此被稱為“私有狀態(tài)區(qū)域”。
不同的處理器可以被設(shè)計(jì)具有不同的私有狀態(tài)數(shù)據(jù),在此也被稱為“私有數(shù)據(jù)”。例如,這樣做可以改善性能或降低制造成本。例如,可以添加新的內(nèi)部寄存器,可以以不同的方式使用一些舊的內(nèi)部寄存器,可以改變要寫入儲(chǔ)存裝置的寄存器內(nèi)容的格式或位置以獲得更高的效率。因此這些較新的處理器的私有數(shù)據(jù)將與那些較老版本的處理器在內(nèi)容、格式、語(yǔ)義或位置上有所差異。
當(dāng)私有狀態(tài)數(shù)據(jù)存儲(chǔ)在可公開(kāi)訪問(wèn)的區(qū)域,如主存儲(chǔ)器或其他儲(chǔ)存裝置時(shí),將出現(xiàn)困難。在此,對(duì)于例如基本輸入輸出設(shè)備(BIOS)、操作系統(tǒng)、虛擬機(jī)管理器或管理程序(hypervisor)、設(shè)備驅(qū)動(dòng)的軟件,或例如I/O設(shè)備或其他外部代理的應(yīng)用和硬件來(lái)說(shuō)對(duì)該私有狀態(tài)數(shù)據(jù)的訪問(wèn)(也就是讀和/或?qū)?是可能的。這些實(shí)體對(duì)該私有狀態(tài)數(shù)據(jù)的使用可以給處理器和平臺(tái)制造商和終端用戶帶來(lái)錯(cuò)誤和/或不期望的影響。例如,如果應(yīng)用依賴于一個(gè)處理器實(shí)現(xiàn)中可用的具體的私有狀態(tài)數(shù)據(jù),那么當(dāng)該應(yīng)用運(yùn)行在以不同方式實(shí)現(xiàn)(或根本沒(méi)有實(shí)現(xiàn))私有狀態(tài)的不同的處理器實(shí)現(xiàn)上時(shí)它可能錯(cuò)誤地運(yùn)行(functionincorrectly)。由于內(nèi)部處理器到存儲(chǔ)器的一致行為/策略(policy)隨著實(shí)現(xiàn)發(fā)生改變,依賴于私有數(shù)據(jù)的軟件也可能會(huì)失效。對(duì)于私有狀態(tài)數(shù)據(jù)的軟件依賴可能復(fù)雜化和/或限制處理器制造商可用的與私有狀態(tài)的使用有關(guān)的實(shí)現(xiàn)選擇方案。因此,處理器制造商常常在文檔中將這些私有數(shù)據(jù)(和它在存儲(chǔ)器區(qū)域中的儲(chǔ)存裝置)記為“保留的”,表示其在未來(lái)的實(shí)現(xiàn)中可以改變。
上面提到的在較新的機(jī)器中運(yùn)行舊軟件的能力假定舊軟件沒(méi)有不當(dāng)訪問(wèn)機(jī)器的私有數(shù)據(jù)(私有數(shù)據(jù)可以隨著較新版本的機(jī)器改變)。然而,已經(jīng)發(fā)現(xiàn)的是,軟件開(kāi)發(fā)者正在編寫的應(yīng)用和操作系統(tǒng)程序的做法恰恰相反,即訪問(wèn)和依賴于存儲(chǔ)在例如主存儲(chǔ)器中的私有數(shù)據(jù)。這產(chǎn)生了問(wèn)題,因?yàn)檩^舊的軟件可能在較新的機(jī)器上不能正確地運(yùn)行,即使較新的機(jī)器與較舊的機(jī)器具有相同的體系結(jié)構(gòu)數(shù)據(jù)并且還能夠“理解”較舊的訪問(wèn)已存儲(chǔ)狀態(tài)數(shù)據(jù)的機(jī)制(例如加載和存儲(chǔ)ISA中定義的指令)。這是因?yàn)橐恍┗蛩兴接袛?shù)據(jù)可能在較新的機(jī)器中已經(jīng)發(fā)生了改變,導(dǎo)致軟件錯(cuò)誤地運(yùn)行(function)。此外制造商可能不愿意對(duì)其處理器的未來(lái)版本增加改進(jìn),因?yàn)檫@樣作將冒著與較舊的軟件不兼容問(wèn)題的風(fēng)險(xiǎn)。
根據(jù)本發(fā)明的實(shí)施方案,描述了數(shù)據(jù)處理機(jī)和操作方法,所述數(shù)據(jù)處理機(jī)和方法并不鼓勵(lì)軟件開(kāi)發(fā)者編寫依賴于存儲(chǔ)在儲(chǔ)存裝置的可公開(kāi)訪問(wèn)區(qū)域的私有狀態(tài)數(shù)據(jù)(例如特定值、特定值的位置、語(yǔ)義或格式)的軟件。這可以允許所述機(jī)器的未來(lái)版本隨著機(jī)器內(nèi)部硬件設(shè)計(jì)的發(fā)展呈現(xiàn)出(exhibit)關(guān)于可能需要的私有數(shù)據(jù)的不同行為,但還是呈現(xiàn)出相同的運(yùn)行較舊軟件所需的ISA。
本發(fā)明的一些實(shí)施方案鼓勵(lì)使用結(jié)構(gòu)化(architected)接口,所述接口連接到被存為私有狀態(tài)數(shù)據(jù)的數(shù)據(jù)。例如可以通過(guò)指定要被訪問(wèn)的數(shù)據(jù)的特征,而不是所述數(shù)據(jù)在私有狀態(tài)數(shù)據(jù)區(qū)域中的位置來(lái)提供訪問(wèn)被存為私有狀態(tài)數(shù)據(jù)的數(shù)據(jù)的指令。在提供體系結(jié)構(gòu)機(jī)制來(lái)訪問(wèn)數(shù)據(jù)的同時(shí),這允許了在如何存儲(chǔ)數(shù)據(jù)(例如在私有狀態(tài)區(qū)域中)方面的實(shí)現(xiàn)自由度。例如,假設(shè)存儲(chǔ)在IA-32 ISA的系統(tǒng)管理狀態(tài)保存區(qū)(如上所述)的數(shù)據(jù)元素(dataelement)是CS段(segment)的基地址值。該數(shù)據(jù)元素在狀態(tài)保存區(qū)的儲(chǔ)存位置沒(méi)有在ISA規(guī)范中詳細(xì)指明。相反,可以由ISA提供不直接對(duì)該數(shù)據(jù)尋址的指令。該數(shù)據(jù)元素可以以任何處理器實(shí)現(xiàn)所期望的方式被編碼和被存入狀態(tài)保存區(qū)(或者它根本就不被存入存儲(chǔ)器的私有狀態(tài)區(qū),并且改為保留(retain)在例如處理器中的特殊寄存器中或位置上)。
相比于指定的結(jié)構(gòu)化接口,本發(fā)明允許以阻止數(shù)據(jù)的快速軟件解碼的方式來(lái)編碼私有狀態(tài)數(shù)據(jù)。本發(fā)明的實(shí)施方案可以根據(jù)目標(biāo)處理器和平臺(tái)改變編碼復(fù)雜性。一旦獲悉目標(biāo)處理器,本領(lǐng)域的技術(shù)人員可以選擇本發(fā)明的實(shí)施方案,該實(shí)施方案確?;谲浖挠糜趯?duì)選定的編碼進(jìn)行解碼的方法要比使用指定(prescribed)接口(比如指令)花費(fèi)更長(zhǎng)的時(shí)間。例如,未指定的軟件方法可以在400個(gè)時(shí)鐘內(nèi)(例如使用特定指令和算法)對(duì)特定私有狀態(tài)數(shù)據(jù)解碼,而體系結(jié)構(gòu)上指定的指令和方法可以在400個(gè)時(shí)鐘的一小部分時(shí)間內(nèi)實(shí)現(xiàn)。本發(fā)明的實(shí)施方案在于使用特定的標(biāo)準(zhǔn)(metrics)來(lái)評(píng)價(jià)私有狀態(tài)解碼的成本,包括例如時(shí)間(速度)和功耗的標(biāo)準(zhǔn)。
使用在這里,術(shù)語(yǔ)“編碼”包括諸如加密、譯成密碼、格式化、或具體位(bit)模式的指派或解釋。本發(fā)明的實(shí)施方案的編碼在此被稱為“混淆”私有數(shù)據(jù)。
現(xiàn)參照?qǐng)D1,示出了計(jì)算機(jī)系統(tǒng)的方框圖。軟件120運(yùn)行在平臺(tái)硬件102上。平臺(tái)硬件120可以是個(gè)人計(jì)算機(jī)(PC)、主機(jī)、手持設(shè)備、便攜式計(jì)算機(jī)、機(jī)頂盒,或任何其他計(jì)算系統(tǒng)。平臺(tái)硬件102包括處理器110、儲(chǔ)存裝置130并且可以包括一個(gè)或更多個(gè)輸入輸出(I/O)設(shè)備140。
處理器110可以是任何類型的能夠執(zhí)行軟件的處理器,例如微處理器、數(shù)字信號(hào)處理器、微控制器等。處理器110可以包括用于執(zhí)行本發(fā)明的實(shí)施方法的特定方法實(shí)施方案的微碼、可編程邏輯或硬編碼邏輯。雖然圖1只顯示了一個(gè)這樣的處理器110,但是在系統(tǒng)中可以存在一個(gè)或更多個(gè)處理器。
所述一個(gè)或更多個(gè)I/O設(shè)備140可以是,例如示例性的網(wǎng)絡(luò)接口卡、通信端口、視頻控制器、盤控制器、系統(tǒng)總線和控制器(例如PCI、ISA、AGP)或集成到平臺(tái)芯片組邏輯或處理器中的設(shè)備(例如實(shí)時(shí)時(shí)鐘、可編程定時(shí)器、性能計(jì)數(shù)器)。一些或所有I/O設(shè)備140可以擁有直接存儲(chǔ)器訪問(wèn)(DMA)能力,以允許它們?cè)讵?dú)立于處理器110或軟件120或者在處理器110或軟件120的控制下對(duì)儲(chǔ)存裝置130進(jìn)行讀和/或?qū)憽?br> 儲(chǔ)存裝置130可以是硬盤、軟盤、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、緩存存儲(chǔ)器(cachememory)、只讀存儲(chǔ)器(ROM)、閃存存儲(chǔ)器、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)、以上設(shè)備的任何組合或任何其他類型的可被處理器110訪問(wèn)的儲(chǔ)存介質(zhì)。儲(chǔ)存裝置130可以存儲(chǔ)用于執(zhí)行本發(fā)明的方法實(shí)施方案的指令和/或數(shù)據(jù)。儲(chǔ)存裝置130可以是處理器的寄存器(register)文件的可公開(kāi)訪問(wèn)區(qū)域,或可以是位于處理器的外部的區(qū)域,例如主存儲(chǔ)器。
關(guān)于機(jī)器狀態(tài)112的數(shù)據(jù),例如某些內(nèi)部寄存器114的內(nèi)容,被寫入儲(chǔ)存裝置130中的私有狀態(tài)區(qū)域132,其中被寫入的狀態(tài)數(shù)據(jù)是“已編碼的”或“已混淆的”。因此,雖然因?yàn)闋顟B(tài)數(shù)據(jù)可以被運(yùn)行在平臺(tái)硬件102上的I/O設(shè)備140或軟件120(例如操作系統(tǒng)122,應(yīng)用軟件124)訪問(wèn),所以所述狀態(tài)數(shù)據(jù)被寫入的位置是公開(kāi)的,但編碼操作使得狀態(tài)數(shù)據(jù)很難以及時(shí)的方式進(jìn)行逆操作(即被解碼)。要從儲(chǔ)存裝置130中恢復(fù)狀態(tài)數(shù)據(jù)時(shí),可以應(yīng)用特定的解碼處理,例如由處理器制造商定義的處理器發(fā)起的(processor-initiated)解碼處理。對(duì)解碼處理的控制可以聯(lián)系到特定的處理器功能,例如如下所述特定的指令和控制信號(hào)。用于訪問(wèn)狀態(tài)數(shù)據(jù)的未指定的方法(替代的軟件指令和算法)不會(huì)激活這些控制并因此其成本可能更高。
已恢復(fù)的狀態(tài)數(shù)據(jù)可以隨后置入本地狀態(tài)112中,所述本地狀態(tài)112可以被或不可以被軟件120或I/O設(shè)備140訪問(wèn)。本地狀態(tài)112可以是例如在內(nèi)部緩存或寄存器中的區(qū)域,所述內(nèi)部緩存或寄存器對(duì)于經(jīng)過(guò)指令集體系結(jié)構(gòu)(ISA)的不受控制的訪問(wèn)是不可獲得的。在一些情況下本地狀態(tài)不能被軟件或其他外部代理(例如I/O設(shè)備)訪問(wèn)。在一些情況下,一些或所有的本地狀態(tài)可以被軟件或其他外部代理訪問(wèn)。在其他情況下本地狀態(tài)可以通過(guò)特定的接口(例如指令)被間接訪問(wèn)。由于其相對(duì)于處理器是內(nèi)部的并且不在“公開(kāi)”儲(chǔ)存裝置中,處理器可以嚴(yán)格規(guī)定對(duì)本地狀態(tài)的訪問(wèn)。
雖然被寫入儲(chǔ)存裝置130的可公開(kāi)訪問(wèn)區(qū)域的狀態(tài)數(shù)據(jù)是已編碼的形式,制造商定義的指令可以被軟件用于恢復(fù)儲(chǔ)存裝置130中的數(shù)據(jù),所述指令可以是用于處理器的ISA的一部分。編碼應(yīng)該足夠健壯(strong)以阻止軟件開(kāi)發(fā)者在試圖訪問(wèn)狀態(tài)數(shù)據(jù)時(shí)繞過(guò)(circumvent)該指令。在下面將參照?qǐng)D5描述使用微操作或硬件控制信號(hào)來(lái)讀取或恢復(fù)儲(chǔ)存裝置的狀態(tài)數(shù)據(jù)所需的內(nèi)部邏輯的實(shí)施例。
在一個(gè)實(shí)施方案中,用到的編碼處理只需要足夠健壯以使得軟件120的設(shè)計(jì)者在寫軟件時(shí)應(yīng)用處理器制造商指定的技術(shù)來(lái)從存儲(chǔ)器訪問(wèn)狀態(tài)數(shù)據(jù),而不是繞過(guò)該技術(shù)。在其他情況下,如果制造商想使軟件開(kāi)發(fā)者訪問(wèn)和依賴存儲(chǔ)器中的狀態(tài)數(shù)據(jù)(包括特定值、特定值的位置、語(yǔ)義或格式)變得更加困難,編碼可以更加健壯一些。
用于控制私有狀態(tài)的編碼和解碼的控制信號(hào)可以與例如硬件狀態(tài)機(jī)、處理器指令(也被稱作微指令)、操作模式(例如PAL模式)或模式位或指令操作組、微碼或微碼操作(uop)和硬件控制信號(hào)或事件耦合,或被它們?cè)L問(wèn)。
可以使用各種類型的編碼處理。寫入儲(chǔ)存裝置的私有狀態(tài)區(qū)域的數(shù)據(jù)可以在存儲(chǔ)之前被改變。這種類型的編碼處理被稱為數(shù)據(jù)編碼??商鎿Q地,可以改變用于訪問(wèn)私有狀態(tài)區(qū)域中的私有狀態(tài)的地址。這種類型的編碼處理被稱為地址混淆,并且從原始地址到已混淆地址的轉(zhuǎn)化(transformation)稱為地址映射。數(shù)據(jù)編碼和地址混淆如下所述。
編碼處理可以是靜態(tài)的或動(dòng)態(tài)的。靜態(tài)編碼在機(jī)器運(yùn)行時(shí)(并且在執(zhí)行編碼處理時(shí))不隨時(shí)間改變。(靜態(tài)編碼可以在處理器初始化/重啟或引導(dǎo)(boot)階段改變或被重新配置,但不在隨后的運(yùn)行操作期間改變或被重新配置。)產(chǎn)生靜態(tài)編碼的處理稱為靜態(tài)混淆??商鎿Q地,在處理器運(yùn)行時(shí)編碼處理可以產(chǎn)生隨時(shí)間改變的編碼結(jié)果。這些處理在此被稱為動(dòng)態(tài)混淆。
例如,寫入儲(chǔ)存裝置130中的給定私有狀態(tài)的元素內(nèi)容的儲(chǔ)存格式可以在機(jī)器執(zhí)行期間改變。在此這被稱為動(dòng)態(tài)混淆。例如,每當(dāng)狀態(tài)數(shù)據(jù)需被寫入儲(chǔ)存裝置時(shí),根據(jù)(處理器產(chǎn)生和追蹤的)隨機(jī)或偽隨機(jī)序列,所述格式可以在大字節(jié)序(big-endian)和小字節(jié)序(little-endian)之間改變;這個(gè)改變可以只影響要讀取和寫入私有數(shù)據(jù)的存儲(chǔ)器區(qū)域。再次重申(again),在此的目的是使得從儲(chǔ)存裝置130中的可公開(kāi)訪問(wèn)的儲(chǔ)存區(qū)域快速逆操作和解碼狀態(tài)數(shù)據(jù)變得困難。
在一個(gè)實(shí)施方案中,當(dāng)私有狀態(tài)數(shù)據(jù)被寫入儲(chǔ)存裝置時(shí),它被寫入到具有連續(xù)地址的儲(chǔ)存區(qū)域中(例如主存儲(chǔ)器)。在其他實(shí)施方案中所述私有數(shù)據(jù)區(qū)域可以是不連續(xù)的,由多于一個(gè)不同的儲(chǔ)存區(qū)域構(gòu)成。編碼沒(méi)有必要完全占用(populate)私有狀態(tài)區(qū)域;也就是說(shuō)一些位或字節(jié)(byte)可以保持為未使用??梢酝ㄟ^(guò)改變私有狀態(tài)區(qū)域大小,例如使其比嚴(yán)格要求的存儲(chǔ)私有數(shù)據(jù)的裝置更大,來(lái)獲得一些設(shè)計(jì)編碼和/或混淆函數(shù)的自由。(例如,如稍后描述的,這將允許使用更大的MISR(多輸入轉(zhuǎn)換寄存器)多項(xiàng)式。)在本發(fā)明的實(shí)施方案中,多字節(jié)(例如32位“長(zhǎng)”整數(shù))狀態(tài)數(shù)據(jù)值被分成幾部分,所述幾部分隨后被存儲(chǔ)到不連續(xù)的位置,而不是全部按順序存儲(chǔ)。因此,4字節(jié)的值可以被分成4個(gè)1字節(jié)的值存儲(chǔ)到私有狀態(tài)區(qū)域中的不連續(xù)的位置。在機(jī)器正在操作時(shí),所述4個(gè)1字節(jié)的值所存儲(chǔ)的位置可以動(dòng)態(tài)并且以隨機(jī)的方式改變。當(dāng)然,實(shí)施方案應(yīng)該能夠定位和解碼這些數(shù)據(jù)。注意到在使用多次存儲(chǔ)器訪問(wèn)來(lái)存儲(chǔ)或加載單個(gè)數(shù)據(jù)值的情況下,ISA可以對(duì)訪問(wèn)的原子性施加某些要求。
在本發(fā)明的實(shí)施方案中,用于訪問(wèn)儲(chǔ)存裝置的地址位是經(jīng)過(guò)編碼的。對(duì)地址位的編碼可以改變地址位的排序(或地址位的組)。給定存儲(chǔ)器區(qū)域中從小端序(little-endian)到大端序(big-endian)格式的轉(zhuǎn)換(switching)可以是這樣的實(shí)施例。其他地址混合(mix)映射是可能的,其中一些可能涉及更繁復(fù)的轉(zhuǎn)化。
另一種類型的地址編碼將一組K個(gè)不同的地址映射到另一組K個(gè)不同的地址;即叢數(shù)學(xué)角度來(lái)說(shuō),映射是雙射的(bijective)(既是單射的(一對(duì)一)也是滿射的(映成的(onto)))。在此,較高的地址位可以保持不變,而較低順序的地址位發(fā)生改變。在這些情形下,構(gòu)建將給定存儲(chǔ)器范圍映射回到其自身的映射是可能的。也就是說(shuō),存儲(chǔ)器范圍的基地址偏移是相同的而且存儲(chǔ)器區(qū)域的大小是相同的。這是一個(gè)有吸引力的解決方案因?yàn)橹挥写鎯?chǔ)器范圍內(nèi)的數(shù)據(jù)是“已混淆的”。也就是說(shuō),只有在所述范圍內(nèi)的地址位是混合的。圖4和圖6提供了一個(gè)這樣的映射和相關(guān)聯(lián)的地址混合機(jī)制的實(shí)施例。
當(dāng)私有狀態(tài)區(qū)域的大小或基地址是低于N元邏輯的冪時(shí),地址混淆機(jī)制可能更加易于使用。大多數(shù)當(dāng)前的處理器使用二元邏輯,因此大小或基地址是2的冪的私有狀態(tài)區(qū)域是優(yōu)選的。(在此討論了二元邏輯和算術(shù)運(yùn)算(arithmetic),但是在適當(dāng)?shù)臅r(shí)候可以使用N元邏輯和算術(shù)運(yùn)算并且認(rèn)為它用于一般的情況)。可以使用過(guò)濾器和其他的機(jī)制(mechanism)來(lái)管理其大小和基地址不是N元邏輯的冪的私有狀態(tài)區(qū)域。這些地址位操作可以與各種存儲(chǔ)器組織和虛擬存儲(chǔ)器技術(shù)(例如分頁(yè)、分段等)共存。
地址混淆機(jī)制可以改變存儲(chǔ)器中的數(shù)據(jù)的布局(layout),并且用于混合數(shù)據(jù),但有時(shí)只在儲(chǔ)存裝置的粒度(granularity)范圍內(nèi)操作。在大多數(shù)當(dāng)前的處理器中,主存儲(chǔ)器是可字節(jié)尋址的,因此數(shù)據(jù)元素的單個(gè)字節(jié)的位置可以在私有狀態(tài)區(qū)域中重新排列,但是單個(gè)字節(jié)內(nèi)的數(shù)據(jù)位不被地址混淆改變(但是數(shù)據(jù)編碼機(jī)制可以改變它們)。
在這些地址映射實(shí)施方案中,經(jīng)過(guò)一些解碼處理可以提取出(extract)原始地址映射。這個(gè)提取處理是應(yīng)用地址映射函數(shù)的逆函數(shù)(inverse function)的應(yīng)用。根據(jù)該要求選擇映射函數(shù);并非所有的地址映射函數(shù)都是可逆的。
本發(fā)明的實(shí)施方案對(duì)寫入儲(chǔ)存裝置的數(shù)據(jù)位進(jìn)行編碼。這些數(shù)據(jù)編碼可以重組(reshape)存入私有狀態(tài)區(qū)域中的數(shù)據(jù),而不一定受尋址能力約束條件例如可尋址儲(chǔ)存裝置的尺寸所限制。數(shù)據(jù)段可以與其他數(shù)據(jù)段交換。例如,每一個(gè)字節(jié)中的兩個(gè)半字節(jié)(nibble)(也就是一個(gè)字節(jié)中的4位段)可以互相交換。數(shù)據(jù)編碼可以用常量異或掩碼經(jīng)過(guò)逐位異或得到。數(shù)據(jù)也可以是用多輸入反饋位移寄存器(MISR)的輸出經(jīng)過(guò)逐位異或得到。數(shù)據(jù)編碼可以使用加密函數(shù)來(lái)實(shí)現(xiàn)。在這些實(shí)施方案中,可以通過(guò)一些解碼處理提取出原始數(shù)據(jù)。該解碼處理應(yīng)該確保它快于在所述平臺(tái)上運(yùn)行的軟件可用的解碼方法(例如使用ISA定義的加載和儲(chǔ)存操作、數(shù)學(xué)操作等)。例如,圖4中的表470和480示出了應(yīng)用于給定16字節(jié)范圍的存儲(chǔ)器地址中的數(shù)據(jù)的類似于維吉尼亞加密的使用。
上面列出的一些實(shí)施方案可以使用靜態(tài)映射實(shí)現(xiàn)。也就是說(shuō),他們?cè)谔幚砥骰蚱脚_(tái)運(yùn)行期間不發(fā)生改變。在設(shè)計(jì)時(shí)、制造期間、制造后期或系統(tǒng)操作早期(例如系統(tǒng)引導(dǎo)期間、系統(tǒng)上電時(shí)、系統(tǒng)重啟時(shí))可以設(shè)置適當(dāng)?shù)挠成洹?梢曰虿豢梢杂孟嗤撵o態(tài)映射配置不同處理器。如果直到系統(tǒng)可操作時(shí)(例如在系統(tǒng)引導(dǎo)時(shí))映射才綁定(bound),那么可能每次處理器引導(dǎo)時(shí)要選擇新的映射。在實(shí)施方案中,每個(gè)不同的控制集(例如操作模式、指令組)可以使用不同的映射配置。在一個(gè)控制集中,映射保持恒定。但是,在指令組或模式之間,映射可以(或不可以)不同。
可以用在處理器操作期間改變的動(dòng)態(tài)映射來(lái)實(shí)現(xiàn)其他實(shí)施方案。在實(shí)施方案中,僅在當(dāng)前儲(chǔ)存裝置中的任何私有狀態(tài)區(qū)域中不存在已編碼數(shù)據(jù)時(shí),映射配置才可以發(fā)生改變。該實(shí)施方案可以使用計(jì)數(shù)器,所述計(jì)數(shù)器在已編碼數(shù)據(jù)被寫入儲(chǔ)存裝置的私有狀態(tài)區(qū)域時(shí)激活該私有狀態(tài)區(qū)域并遞增。當(dāng)該私有狀態(tài)區(qū)域不再被認(rèn)為是活動(dòng)的時(shí),計(jì)數(shù)器遞減。計(jì)數(shù)器為零時(shí)可以改變映射配置。在實(shí)施方案中,為每一個(gè)私有狀態(tài)區(qū)域?qū)⒂成渑渲么娴接成涿枋龇?。映射描述符可以存?chǔ)在私有狀態(tài)區(qū)域自身中的已知、未被編碼的位置,或者由追蹤結(jié)構(gòu)(例如隊(duì)列或查找表)來(lái)分別維護(hù),所述追蹤結(jié)構(gòu)可以駐留在處理器的內(nèi)部或外部。在實(shí)施方案中,對(duì)于每個(gè)私有狀態(tài)區(qū)域可能有不同映射。
圖2描述了根據(jù)本發(fā)明的實(shí)施方案用于從私有狀態(tài)儲(chǔ)存區(qū)域讀取已編碼私有狀態(tài)數(shù)據(jù)值的處理200。處理可以由包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上運(yùn)行)或兩者組合的處理邏輯執(zhí)行。在一個(gè)實(shí)施方案中,在圖1的處理器110中實(shí)現(xiàn)處理邏輯。
參照?qǐng)D2,處理200從處理邏輯確定數(shù)據(jù)元素(data element)的地址(處理方框202)開(kāi)始。接著,處理邏輯確定數(shù)據(jù)元素是否以已編碼的形式存儲(chǔ)在儲(chǔ)存裝置的私有狀態(tài)區(qū)域中(處理方框204)。
本發(fā)明的實(shí)施方案使用微碼產(chǎn)生的或硬件產(chǎn)生的控制信號(hào),所述控制信號(hào)向處理邏輯指示所請(qǐng)求的數(shù)據(jù)元素需要進(jìn)行解碼。缺少這個(gè)信號(hào)將導(dǎo)致指向方框250的“否”路徑的執(zhí)行。
如果數(shù)據(jù)元素不需被解碼,那么處理邏輯前進(jìn)到處理方框250,其中處理邏輯從儲(chǔ)存裝置加載處理方框202中確定的地址上的數(shù)據(jù)元素。所述處理可以隨后終止。加載的數(shù)據(jù)不被解碼;也就是說(shuō)不執(zhí)行地址或數(shù)據(jù)解碼。注意到該路徑上讀取的數(shù)據(jù)可以是普通的(也就是說(shuō)不是私有狀態(tài)數(shù)據(jù)),或它可以是已編碼形式的私有狀態(tài)數(shù)據(jù)(但是以非指定的方式被訪問(wèn))。
但是,如果數(shù)據(jù)元素需要進(jìn)行解碼,隨后處理邏輯基于處理方框202中確定的地址確定數(shù)據(jù)元素所存儲(chǔ)的地址(該地址可以是被混淆的) (處理方框210)。處理邏輯隨后從儲(chǔ)存裝置加載處理方框210中確定的地址上的數(shù)據(jù)元素(處理方框220)。處理邏輯隨后將處理步驟220中從私有狀態(tài)儲(chǔ)存區(qū)域加載的數(shù)據(jù)元素解碼(處理方框230)。已解碼的值是處理200的結(jié)果。所述處理可以隨后終止。該已解碼狀態(tài)常被置于私有狀態(tài)緩存或處理器的私有、本地狀態(tài)中。
圖3描述了根據(jù)本發(fā)明的實(shí)施方案用于將私有狀態(tài)數(shù)據(jù)值存入私有狀態(tài)儲(chǔ)存區(qū)域的處理300。處理可以由包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上運(yùn)行)或兩者組合的處理邏輯執(zhí)行。在實(shí)施方案中,在圖1的處理器110中實(shí)現(xiàn)處理邏輯。
參照?qǐng)D3,處理300從處理邏輯確定數(shù)據(jù)元素的數(shù)據(jù)值和儲(chǔ)存地址(處理方框302)開(kāi)始。隨后處理邏輯確定是否要被存儲(chǔ)的數(shù)據(jù)元素是私有狀態(tài)元素(處理方框304),所述私有狀態(tài)元素以已編碼的形式存儲(chǔ)在儲(chǔ)存裝置的私有狀態(tài)區(qū)域中。
本發(fā)明的實(shí)施方案使用微碼產(chǎn)生的或硬件產(chǎn)生的控制信號(hào)來(lái)給處理邏輯發(fā)信號(hào)通知正被寫入的數(shù)據(jù)元素需要進(jìn)行編碼。缺少這個(gè)信號(hào)將導(dǎo)致指向方框350的“否”路徑的執(zhí)行。
如果數(shù)據(jù)元素不需以已編碼的形式存儲(chǔ)在私有狀態(tài)區(qū)域中,那么處理邏輯前進(jìn)到處理方框350,其中該處理邏輯將數(shù)據(jù)元素以未編碼(未修改)的形式存儲(chǔ)到儲(chǔ)存裝置中在處理方框302確定的地址上。所述處理可以隨后終止。寫入的數(shù)據(jù)是未經(jīng)編碼的。
但是,如果數(shù)據(jù)元素要以已編碼的形式存儲(chǔ)到私有狀態(tài)區(qū)域,那么處理邏輯隨后對(duì)數(shù)據(jù)元素編碼(處理方框310)并且確定在其上存儲(chǔ)數(shù)據(jù)元素的已混淆的地址(處理方框320)。處理邏輯隨后將現(xiàn)有的已編碼數(shù)據(jù)元素存到儲(chǔ)存裝置中在處理方框320確定的地址上(處理方框330),所述處理可以隨后終止。
注意到處理方框310和處理方框320中執(zhí)行的處理可以以相反的順序執(zhí)行,也就是地址值的混淆先于數(shù)據(jù)的編碼。一些實(shí)施方案將執(zhí)行這兩個(gè)處理方框中的一個(gè)而不是兩個(gè)都執(zhí)行。一些實(shí)施方案可以并行執(zhí)行這兩個(gè)處理方框。
現(xiàn)在翻到圖4,以方框圖的形式描述了計(jì)算機(jī)系統(tǒng)402。該系統(tǒng)402具有處理器404,所述處理器被設(shè)計(jì)成支持上述用于混淆儲(chǔ)存裝置中的私有狀態(tài)數(shù)據(jù)的方法學(xué)。處理器404具有標(biāo)準(zhǔn)緩存410和私有緩存416,其中后者不能被運(yùn)行于系統(tǒng)402的軟件訪問(wèn)并且用于以未編碼(未混淆的)的形式存儲(chǔ)私有狀態(tài)數(shù)據(jù)。在本實(shí)施方案中,也提供了系統(tǒng)芯片組406以允許處理器404與存儲(chǔ)器408通信。芯片組406可以包括存儲(chǔ)器控制器(未示出)以及其他連接計(jì)算機(jī)的外部設(shè)備所需的邏輯器件(也未示出)。在一些實(shí)施方案中,可以在處理器404中實(shí)現(xiàn)芯片組406的功能性或功能子集。
在圖4中示出了存儲(chǔ)器408,所述存儲(chǔ)器408可用于將處理器404的已編碼私有狀態(tài)數(shù)據(jù)存入可公開(kāi)訪問(wèn)區(qū)域418。這是一個(gè)將密碼應(yīng)用于處理器404的內(nèi)部處理器狀態(tài)值,以免通過(guò)簡(jiǎn)單的監(jiān)視和讀取存儲(chǔ)器408將其實(shí)際值輕易的恢復(fù)或逆操作的實(shí)施例。
如上所述,可以以各種方式完成存儲(chǔ)于已編碼私有狀態(tài)區(qū)域418中的數(shù)據(jù)的混淆。圖4示出了一個(gè)這樣機(jī)制的實(shí)施例,其中既有數(shù)據(jù)值被編碼也有數(shù)據(jù)布局被編碼/混淆。使用維吉尼亞密加密對(duì)表470中的第一數(shù)據(jù)值進(jìn)行編碼,產(chǎn)生了表480所示的數(shù)據(jù)值(下面描述)。隨后應(yīng)用了從私有狀態(tài)數(shù)據(jù)的邏輯地址值到物理地址值的特殊映射,其中映射結(jié)果如表490所示。所述物理地址指示了私有狀態(tài)數(shù)據(jù)被存儲(chǔ)在存儲(chǔ)器中的實(shí)際位置。因此可以說(shuō)物理地址是由對(duì)邏輯地址的編碼產(chǎn)生的。
圖4中標(biāo)題為“已解密地址/數(shù)據(jù)”的表470具有一列示例性的邏輯地址和他們相關(guān)的私有狀態(tài)數(shù)據(jù)值,所述數(shù)據(jù)值以未編碼的形式存儲(chǔ)在緩存416中。在此選用所有的0數(shù)據(jù)值來(lái)體現(xiàn)結(jié)果編碼。注意到“X”表示狀態(tài)數(shù)據(jù)的虛擬和物理地址的未編碼的高位。標(biāo)題為“私有狀態(tài)存儲(chǔ)器地址映射”的表490示出了在未編碼和已編碼地址之間映射的實(shí)施例。在此只對(duì)低序的4位進(jìn)行編碼。
圖6描述了可用于圖4的系統(tǒng)的可編程(參數(shù)化的)地址映射函數(shù)的實(shí)施方案。在圖6中,將用P0=1、P1=1、P2=0、P3=0加載多項(xiàng)式控制寄存器604以實(shí)現(xiàn)本原多項(xiàng)式x4+x1+x0并且用全0加載可選掩碼寄存器610。該邏輯是控制一般的w位寬的MISR的等式的變體(adaptation),并且可用于構(gòu)建(construct)各種地址編碼的組合邏輯。參數(shù)化的MISR狀態(tài)等式是Si(t+1)=Si-1(t)+Ii+(Pi·Sw-1(t)),1≤i≤w-1S0(t+1)=I0+(P0·Sw-1(t))
在此運(yùn)算符“+”表示模2加法(XOR),并且“·”表示模2乘法(AND)。參數(shù)“t”表示時(shí)間(時(shí)鐘滴答),Si表示第i個(gè)觸發(fā)器狀態(tài),Ii表示第i個(gè)輸入向量的位并且Pi表示第i個(gè)多項(xiàng)式系數(shù)。Pw的系數(shù)隱含為1。為完成圖4的地址混合實(shí)施方案,用對(duì)應(yīng)的地址Ai值來(lái)替換所有Si(t),并且用輸出Oi來(lái)替換Si(t+1)。其他實(shí)施方案也是可能的。
序?yàn)閣的本原多項(xiàng)式是有用的,因?yàn)樗麄兛梢援a(chǎn)生“最大的序列”;也就是說(shuō),他們可以產(chǎn)生完全w位寬的二進(jìn)制組合或模式??梢允褂酶哌_(dá)300級(jí)(degree)(300位寬)或更高階(order)的本原多項(xiàng)式。
使用圖4來(lái)描述以上的功能,為了訪問(wèn)邏輯地址偏移量為0001的數(shù)據(jù)(如表項(xiàng)471所示),訪問(wèn)物理存儲(chǔ)器的0010位置(如表項(xiàng)491所示)。在這種情況中與該地址相關(guān)的未編碼的內(nèi)容值(見(jiàn)表項(xiàng)471)恰好都是0。但是,如表項(xiàng)481所示以已編碼形式存儲(chǔ)時(shí),非0的位串(也就是11110101)出現(xiàn)在存儲(chǔ)器408的公開(kāi)區(qū)域418中。(之后將更詳細(xì)地描述該編碼的加密)。雖然為了方便起見(jiàn)示出了有限的位寬,該技術(shù)可以被應(yīng)用于更寬或并行的(parallel)、按位分割的(bit-sliced)數(shù)據(jù)中。
如圖4所示,存儲(chǔ)器408中已編碼私有狀態(tài)數(shù)據(jù)的儲(chǔ)存和恢復(fù)可以用圖5所示邏輯塊來(lái)實(shí)現(xiàn)。對(duì)于這個(gè)實(shí)施例來(lái)說(shuō),在存儲(chǔ)和恢復(fù)儲(chǔ)存裝置的私有狀態(tài)數(shù)據(jù)時(shí),已經(jīng)定義了處理器所使用的特殊微操作(例如控制信號(hào))。
地址發(fā)生單元(AGU)504接收特殊微操作并且在本實(shí)施方案中計(jì)算具有高位部分和低位部分的邏輯地址。在實(shí)施方案中,邏輯地址是虛擬地址。在另一個(gè)實(shí)施方案中,如圖5所示,邏輯地址是如在IntelPentium處理器中找到的線性地址。在再一個(gè)實(shí)施方案中,邏輯地址是物理地址并且無(wú)需對(duì)高地址位進(jìn)行翻譯。在圖5中,地址的高位部分流入線性到物理地址翻譯塊(也稱為翻譯參考緩沖器或TLB)508,所述翻譯塊將該線性地址的高位部分(可以是虛擬頁(yè)數(shù))翻譯成部分物理地址509。
在本實(shí)施方案中的地址混淆/編碼單元514用于接收線性地址值的低位部分,所述線性地址值與處理器的給定私有狀態(tài)數(shù)據(jù)相關(guān)聯(lián)。對(duì)應(yīng)地,所述地址混淆單元514翻譯該線性地址低位部分,以提供物理地址509的另一部分。例如,正如參考上面圖1和圖4描述的,物理地址這部分的值是線性地址被混合或被編碼的版本(version)。
在實(shí)施方案中,特殊微操作或微碼操作信號(hào)(控制信號(hào))確定地址編碼單元514是否對(duì)低序地址位進(jìn)行編碼。如果控制信號(hào)未被斷言,該低序地址位可以以未編碼的形式通過(guò)或繞過(guò)所述單元514。即使在編碼控制信號(hào)(或多個(gè)信號(hào))被斷言時(shí),一些地址位也可以以未編碼的形式通過(guò)。例如,當(dāng)私有狀態(tài)存儲(chǔ)器區(qū)域小于低序位可以尋址的地址空間大小時(shí),只要地址位的子集需要進(jìn)行編碼,這種情況可以發(fā)生。存在著其他實(shí)施方案,其中地址編碼在線性到物理地址的翻譯之后進(jìn)行并且因此可以處理比虛擬存儲(chǔ)器頁(yè)大的地址空間的編碼。如圖5所示的實(shí)施方案的優(yōu)點(diǎn)在于線性到物理地址的翻譯與編碼操作并行進(jìn)行而不是串行進(jìn)行,所以潛在地它更快一些。同樣,編碼操作通常只對(duì)私有狀態(tài)存儲(chǔ)器區(qū)域小于虛擬存儲(chǔ)器頁(yè)大小的情況才有必要。
在連接物理地址的高位部分(由TLB508產(chǎn)生)和物理地址的低位部分(由地址混淆/編碼單元514產(chǎn)生)時(shí),產(chǎn)生物理地址509,所述物理地址509指向存儲(chǔ)器408中的存有給定狀態(tài)數(shù)據(jù)的實(shí)際位置。在本實(shí)施方案中,物理地址509首先應(yīng)用于緩存410中并且如果導(dǎo)致了未命中,從存儲(chǔ)器408中取出所述位置的內(nèi)容或者將所述位置的內(nèi)容輸入存儲(chǔ)器408中(依賴于所述操作是加載還是儲(chǔ)存)。存儲(chǔ)器層次的其他排列是可能的。
注意到在本實(shí)施方案中,已指派的用于存儲(chǔ)私有狀態(tài)數(shù)據(jù)的存儲(chǔ)器408中的區(qū)域可以只占用頁(yè)的一部分并且可以與虛擬存儲(chǔ)器頁(yè)邊界對(duì)齊。在那種情況下,只有線性地址的頁(yè)偏移部分(也就是線性地址的低位部分)才能通過(guò)地址混淆/編碼單元514,以產(chǎn)生已編碼的物理頁(yè)偏移??梢圆捎闷渌麑?shí)現(xiàn)。此外,地址混淆/編碼單元514可以包含范圍選擇邏輯以便只有存儲(chǔ)器的特定區(qū)域內(nèi)的地址被編碼。使用該邏輯,儲(chǔ)存區(qū)域可以不必與虛擬存儲(chǔ)器頁(yè)邊界對(duì)齊或,如早些所述,大小不必是2的冪??梢允褂梦⒋a、軟件、查找表、固定功能邏輯、可編程邏輯或這些技術(shù)的任何組合來(lái)內(nèi)部實(shí)現(xiàn)地址混淆/編碼單元514(關(guān)于一個(gè)這樣的實(shí)現(xiàn)的關(guān)鍵部件可見(jiàn)圖6)。
仍舊參考圖5,注意到在本實(shí)施方案中處理器的標(biāo)準(zhǔn)緩存410用于存儲(chǔ)已編碼或已混淆的私有狀態(tài)數(shù)據(jù)。當(dāng)要傳送來(lái)自緩存410或存儲(chǔ)器408的已編碼內(nèi)容510時(shí),可以使用數(shù)據(jù)解碼/編碼單元524對(duì)其進(jìn)行解碼。在本實(shí)施方案中,已解碼的內(nèi)容值520隨后存入處理器的私有狀態(tài)區(qū)域516中。如以前,緩存410和存儲(chǔ)器408是可公開(kāi)訪問(wèn)的(例如被操作系統(tǒng)訪問(wèn)),而私有狀態(tài)區(qū)域只能被處理器內(nèi)部的工作訪問(wèn)。在將私有狀態(tài)數(shù)據(jù)以已編碼形式寫入儲(chǔ)存裝置時(shí),數(shù)據(jù)編碼/解碼單元524也可反過(guò)來(lái)使用。在這樣的實(shí)施方案中,所述單元524對(duì)源于私有狀態(tài)區(qū)域516的內(nèi)容值進(jìn)行編碼。
在一些實(shí)施方案中,可以在處理器的ISA中提供特殊的指令以訪問(wèn)一些或所有的私有狀態(tài)數(shù)據(jù)。這些指令在其執(zhí)行時(shí)可以導(dǎo)致來(lái)自私有狀態(tài)區(qū)域516的未編碼數(shù)據(jù)的傳輸(見(jiàn)圖5),或它們可以發(fā)送(dispatch)特殊的微操作或硬件控制信號(hào)以訪問(wèn)存儲(chǔ)器408中的區(qū)域418(見(jiàn)圖4),其中私有狀態(tài)數(shù)據(jù)以已編碼形式存儲(chǔ)于所述存儲(chǔ)器408中。雖然ISA的其他指令(例如普通的加載和儲(chǔ)存指令)可以訪問(wèn)存儲(chǔ)器408和/或緩存410的公開(kāi)區(qū)域,這些讀訪問(wèn)的結(jié)果是私有狀態(tài)數(shù)據(jù)值,所述私有狀態(tài)數(shù)據(jù)值地址值是被混淆的和/或其數(shù)據(jù)內(nèi)容是被編碼的。因此,在沒(méi)有特殊的硬件的幫助下,不可能以一種快速的方式逆操作或以其他方式恢復(fù)私有狀態(tài)數(shù)據(jù)。
例如,雖然上述機(jī)制具有在處理器設(shè)備內(nèi)部實(shí)現(xiàn)的邏輯部件,但是可以采用其他組織在系統(tǒng)芯片組中實(shí)現(xiàn)一些或所有的編碼邏輯。此外,可以定義特殊的總線周期來(lái)訪問(wèn)存儲(chǔ)器408的私有狀態(tài)區(qū)域418(圖4)。
現(xiàn)在翻到圖6,示出了示例性的、可編程的4位、地址位的混淆(編碼)機(jī)制的更詳細(xì)設(shè)計(jì)。該設(shè)計(jì)可以用于圖5的地址混淆/編碼單元514中并且可用于產(chǎn)生圖4中的邏輯到物理地址的映射(用于低階的位)。
圖6的邏輯圖是使用上述方法的4位寬,具有四次多項(xiàng)式的多輸入線性反饋轉(zhuǎn)換寄存器(MISR)組合邏輯部分的實(shí)施方案。多項(xiàng)式控制寄存器604,可選掩碼寄存器610和輸入地址源606流入該組合邏輯。注意到該邏輯不是完整的MISR,但確實(shí)對(duì)MISR的映射屬性起平衡作用(leverage)。
圖6中的多項(xiàng)式控制寄存器604加載的是多項(xiàng)式的二元系數(shù)。例如,為了配置圖6的電路以實(shí)現(xiàn)圖4中描述的邏輯到物理地址映射,所述映射采用本原(primitive)多項(xiàng)式x4+x1+x0進(jìn)行映射,將把二元系數(shù)P0=1,P1=1,P2=0,P3=0加載進(jìn)多項(xiàng)式控制寄存器604中。如果可選掩碼寄存器610置為0000,地址位向量0000將映射到0000。輸入地址源606表示要被編碼的4位邏輯地址。可選掩碼源610(例如控制寄存器)允許構(gòu)建不同的映射。
如上所述,掩碼寄存器610和多項(xiàng)式控制寄存器604可以在運(yùn)行時(shí)間動(dòng)態(tài)改變。例如,在上電重啟處理期間,被加載的值可以從偽隨機(jī)數(shù)據(jù)源得到。這可以阻止訪問(wèn)私有狀態(tài)數(shù)據(jù)的嘗試或繞過(guò)任何指定的訪問(wèn)方法(例如上述的特殊ISA指令)的嘗試。圖6是合理有效的實(shí)施方案,所述實(shí)施方案允許對(duì)二元系數(shù)和掩碼值的編程,并且允許使用適量的具有相對(duì)少的門延遲的硬件??梢允褂闷渌壿嬙O(shè)計(jì)來(lái)實(shí)現(xiàn)地址混淆/編碼單元514??梢允褂酶郊拥倪壿嫽騼?nèi)容可尋址存儲(chǔ)器(CAM)來(lái)進(jìn)一步限制地址位編碼機(jī)制可修改的地址范圍。此外,可以為編碼和解碼處理設(shè)計(jì)更加復(fù)雜的邏輯以例如加強(qiáng)編碼操作(如果需要的話)。
私有狀態(tài)數(shù)據(jù)的內(nèi)容值的編碼可以以一種類似于上述的地址混淆的方式完成。一種方法是和要被編碼的私有狀態(tài)的給定元素的內(nèi)容一起,在邏輯地址偏移中進(jìn)行XOR(針對(duì)私有狀態(tài)數(shù)據(jù)的對(duì)齊區(qū)域),或在一些常量種子值(seed value)中進(jìn)行XOR。可以在私有狀態(tài)數(shù)據(jù)值流上使用更加復(fù)雜的編碼機(jī)制??梢岳贸跏嫉姆N子來(lái)使用反饋轉(zhuǎn)換寄存器技術(shù)(線性、非線性、多輸入等)的變量。初始的種子可以被定義為加載到反饋轉(zhuǎn)換寄存器的初始狀態(tài)。對(duì)于每一個(gè)連續(xù)的數(shù)據(jù)值,轉(zhuǎn)換寄存器可以是先進(jìn)的,并且其內(nèi)容逐位與內(nèi)部寄存器的內(nèi)容進(jìn)行XOR。這稱為維吉尼亞(Vigenère)加密,并且在上面圖4的表470,480中示出了該密碼的實(shí)施例,其中,表470中的每一個(gè)未編碼內(nèi)容(數(shù)據(jù))值是0(例如表項(xiàng)471)但是在以已編碼形式存儲(chǔ)到存儲(chǔ)器408中的480中(例如表項(xiàng)481)時(shí),不出現(xiàn)這樣的值。利用該密碼,可以使用轉(zhuǎn)換寄存器來(lái)產(chǎn)生偽隨機(jī)的逐位XOR掩碼序列。在這種情況中,當(dāng)每一個(gè)偽隨機(jī)字節(jié)寬度的掩碼由MISR產(chǎn)生(見(jiàn)480)時(shí),它與地址序列中的下一個(gè)數(shù)據(jù)值逐位進(jìn)行XOR。只需要多項(xiàng)式和初始轉(zhuǎn)換寄存器種子值來(lái)再次產(chǎn)生嚴(yán)格相同的序列。在實(shí)施方案中,編碼和/或解碼單元的配置信息(例如多項(xiàng)式和初始種子)可以與已編碼狀態(tài)區(qū)域一起存入存儲(chǔ)器408。為了解碼私有狀態(tài),配置信息(例如多項(xiàng)式和初始種子)將被取出(并且可以使用另外的固定編碼技術(shù)對(duì)其解碼),并且隨后被使用。只要以相同的順序?qū)⑿蛄兄械拿總€(gè)掩碼施加于對(duì)應(yīng)的數(shù)據(jù)(例如每個(gè)可尋址數(shù)據(jù)單元應(yīng)用一個(gè)掩碼),逐位XOR掩碼操作(masking)將產(chǎn)生(解碼出)原始數(shù)據(jù)。如前所述,可以使用不同的方法和修改限制條件來(lái)改變多項(xiàng)式和初始MISR種子值(例如引導(dǎo)時(shí)間,運(yùn)行時(shí)間等)。為了恢復(fù)原始數(shù)據(jù),應(yīng)當(dāng)應(yīng)用與最初使用的編碼方法相對(duì)應(yīng)的解碼方法,也就是撤銷編碼操作。維吉尼亞加密只是私有狀態(tài)數(shù)據(jù)值編碼機(jī)制的一個(gè)實(shí)施例,它是有效的并且允許使用簡(jiǎn)單的二元系數(shù)列表、種子等進(jìn)行的編程和適量的只具有少數(shù)門延遲的硬件。其他實(shí)施方案也是可能的。
在本發(fā)明的實(shí)施方案中,處理器可以在處理器的操作模式間轉(zhuǎn)換時(shí)使用儲(chǔ)存裝置中的私有狀態(tài)區(qū)域132(見(jiàn)圖1)。例如,處理器在進(jìn)入上述的系統(tǒng)管理模式(SMM)時(shí)可以訪問(wèn)私有狀態(tài)區(qū)域。操作模式間的這些轉(zhuǎn)換在此稱為模式切換。例如,模式切換包括普通與系統(tǒng)管理模式間、虛擬機(jī)系統(tǒng)中虛擬機(jī)(VM)和虛擬機(jī)監(jiān)視器(VMM)間、用戶級(jí)的操作系統(tǒng)進(jìn)程和操作系統(tǒng)內(nèi)核(kernel)的移動(dòng)等。
在本發(fā)明的實(shí)施方案中,在私有狀態(tài)區(qū)域的指派之后,處理器在任何時(shí)候可以使用儲(chǔ)存裝置中的私有狀態(tài)區(qū)域132。例如,在虛擬機(jī)系統(tǒng)中,在虛擬機(jī)操作期間,VMM可以在儲(chǔ)存裝置中分配區(qū)域以供處理器使用。VMM可以給處理器指示私有狀態(tài)區(qū)域的位置(例如通過(guò)執(zhí)行ISA中定義的指令)。處理器接收該指示后,可以隨意利用它認(rèn)為合適的私有狀態(tài)區(qū)域。例如,在VM和VMM轉(zhuǎn)換期間(也就是在模式切換點(diǎn)),處理器可以訪問(wèn)私有狀態(tài)區(qū)域。此外,處理器可以在VM或VMM操作期間訪問(wèn)所述區(qū)域。例如,處理器可以訪問(wèn)私有狀態(tài)區(qū)域的控制信息或者處理器可以將暫時(shí)值存入私有狀態(tài)區(qū)域中。
ISA還可以提供機(jī)制,通過(guò)該機(jī)制VMM可以指示(designate)私有狀態(tài)區(qū)域不應(yīng)再被使用(例如通過(guò)執(zhí)行指令)。在其他實(shí)施方案中,可以使用其他方法指派私有狀態(tài)區(qū)域。例如可以通過(guò)對(duì)特定模式寄存器(MSR)的寫操作、執(zhí)行ISA中的指令、對(duì)儲(chǔ)存裝置中的位置的寫操作等來(lái)指派私有狀態(tài)區(qū)域。
雖然上面的實(shí)施例可以在執(zhí)行單元和邏輯電路的環(huán)境中描述本發(fā)明的實(shí)施方案,但是可以以軟件的方式來(lái)完成本發(fā)明的其他實(shí)施方案。例如,在一些實(shí)施方案中,本發(fā)明可以作為計(jì)算機(jī)程序產(chǎn)品或軟件被提供,所述產(chǎn)品或軟件可以包括在其上存儲(chǔ)有指令的機(jī)器或計(jì)算機(jī)可讀介質(zhì),所述指令可用于對(duì)計(jì)算機(jī)(或其他電子設(shè)備)進(jìn)行編程已執(zhí)行根據(jù)本發(fā)明實(shí)施方案的處理。在其他實(shí)施方案中,可以用特定的硬件組件來(lái)執(zhí)行操作,所述硬件組件包括微碼、硬連線邏輯或可編程計(jì)算機(jī)組件和傳統(tǒng)硬件組件的任何組合。
因此,機(jī)器可讀介質(zhì)可以包括任何可用于存儲(chǔ)和傳輸機(jī)器(例如計(jì)算機(jī))可讀形式的信息的器件,但是不限于軟盤、光盤、致密盤、致密盤只讀存儲(chǔ)器(CD-ROM)、以及磁光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、磁或光卡、閃存存儲(chǔ)器、通過(guò)互聯(lián)網(wǎng)、電、光、聲或其它形式的傳播信號(hào)(如載波,紅外信號(hào),數(shù)字信號(hào)等)等的傳輸。
此外,設(shè)計(jì)可能經(jīng)歷從建立到仿真到加工(fabrication)各種階段。表示設(shè)計(jì)的數(shù)據(jù)可以以多種方式來(lái)表示該設(shè)計(jì)。首先,在仿真中發(fā)揮作用的硬件可以使用硬件描述語(yǔ)言或另外的功能描述語(yǔ)言來(lái)表示。再者,在設(shè)計(jì)過(guò)程的一些階段可以生產(chǎn)具有邏輯和/或晶體管門的電路級(jí)模型。此外,大多數(shù)設(shè)計(jì)在某個(gè)階段達(dá)到了數(shù)據(jù)表示硬件模型中各種器件的物理位置的級(jí)別。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是為掩模指明不同掩模(mask)層上各種特征存在或不存在的數(shù)據(jù),所述掩模用于生產(chǎn)集成電路。在所述設(shè)計(jì)的任何表示中,可以以機(jī)器可讀介質(zhì)的任何形式來(lái)存儲(chǔ)數(shù)據(jù)。被調(diào)制或另外產(chǎn)生的用于傳輸這些信息的光或電波、存儲(chǔ)器,或磁或光存儲(chǔ)例如盤片可以是機(jī)器可讀介質(zhì)。任何這些介質(zhì)可以“攜帶”或“指示”設(shè)計(jì)或軟件信息。在指示或攜帶有代碼或設(shè)計(jì)的電子載波被傳送到了執(zhí)行拷貝、緩沖或重新傳送電信號(hào)的程度時(shí),創(chuàng)建新的拷貝。因此,通信提供商或網(wǎng)絡(luò)提供商可以復(fù)制具體實(shí)施本發(fā)明的技術(shù)的制品(例如載波)。
在前述的說(shuō)明書中,參考各種技術(shù)描述了本發(fā)明,所述各種技術(shù)用于從可公開(kāi)訪問(wèn)儲(chǔ)存裝置中訪問(wèn)有關(guān)數(shù)據(jù)處理機(jī)的狀態(tài)的數(shù)據(jù)。但是,應(yīng)該意識(shí)到,正如所附權(quán)利要求書所闡述的,所做的各種修改和變化沒(méi)有背離本發(fā)明的實(shí)施方案的較寬的精神和范圍。因此,本說(shuō)明書和附圖可以被視為描述性的而非限制性的。
權(quán)利要求
1.一種用于操作數(shù)據(jù)處理機(jī)的方法,包括a)使用處理器對(duì)私有狀態(tài)數(shù)據(jù)應(yīng)用編碼處理,其中所述私有狀態(tài)數(shù)據(jù)捕獲所述處理器的狀態(tài);b)將所述已編碼私有狀態(tài)數(shù)據(jù)寫入儲(chǔ)存裝置中的位置,所述位置對(duì)于為所述處理器編寫的軟件是可訪問(wèn)的;以及c)根據(jù)可以撤銷所述編碼處理的解碼處理從所述儲(chǔ)存裝置恢復(fù)所述私有狀態(tài)數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其中所述編碼處理不鼓勵(lì)試圖通過(guò)不是所述解碼處理的處理從所述儲(chǔ)存裝置恢復(fù)所述私有狀態(tài)數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其中所述編碼處理只是足夠健壯來(lái)使得所述軟件的設(shè)計(jì)者在編寫所述軟件時(shí)應(yīng)用所述處理器制造商指定的技術(shù)來(lái)訪問(wèn)儲(chǔ)存裝置中的所述私有狀態(tài)數(shù)據(jù)而不是繞過(guò)所述技術(shù)。
4.如權(quán)利要求3所述的方法,其中所述私有狀態(tài)數(shù)據(jù)是指以下中的一個(gè)a)所述處理器的內(nèi)部寄存器的所述內(nèi)容,所述內(nèi)容在軟件開(kāi)發(fā)者要用到的所述處理器的指令手冊(cè)中沒(méi)有明確標(biāo)識(shí),以及b)所述處理器的內(nèi)部寄存器的所述內(nèi)容,所述內(nèi)容在軟件開(kāi)發(fā)者要用到的所述處理器的指令手冊(cè)中明確標(biāo)識(shí),但以一種軟件開(kāi)發(fā)者要用到的所述處理器的指令手冊(cè)中沒(méi)有明確標(biāo)識(shí)的格式或位置被存儲(chǔ)。
5.如權(quán)利要求1所述的方法,其中所述私有狀態(tài)數(shù)據(jù)被寫入a)所述處理器寄存器文件中的可公開(kāi)訪問(wèn)位置,b)緩存,以及c)存儲(chǔ)器中的一個(gè)。
6.如權(quán)利要求1所述的方法,其中,在重復(fù)a)-b)時(shí),所述編碼處理是這樣的處理,在這樣的處理中所述處理器的給定內(nèi)部寄存器的被寫入內(nèi)容的位置至少隨意改變一次。
7.如權(quán)利要求1所述的方法,其中,在重復(fù)a)-b)時(shí),所述編碼處理是這樣的處理,在這樣的處理中所述處理器的給定內(nèi)部寄存器的所述被寫入內(nèi)容的儲(chǔ)存格式至少在大端序和小端序之間隨意改變一次。
8.如權(quán)利要求1所述的方法,其中,所述編碼處理是這樣的處理,在這樣的處理中密碼被應(yīng)用于給定內(nèi)部寄存器的內(nèi)容以產(chǎn)生隨后寫到儲(chǔ)存裝置中所述位置的已編碼值。
9.如權(quán)利要求1所述的方法,還包括將所述已恢復(fù)狀態(tài)數(shù)據(jù)存入所述處理器的私有儲(chǔ)存空間。
10.一種制品,包括數(shù)據(jù)處理機(jī),所述數(shù)據(jù)處理機(jī)具有私有內(nèi)部狀態(tài),所述內(nèi)部狀態(tài)當(dāng)所述機(jī)器執(zhí)行提供給它作為部分程序的指令時(shí)改變,其中所述機(jī)器對(duì)關(guān)于所述內(nèi)部狀態(tài)的數(shù)據(jù)進(jìn)行編碼并且將所述已編碼狀態(tài)數(shù)據(jù)寫入儲(chǔ)存單元中的位置,其中所述位置可以被所述機(jī)器的指令集體系結(jié)構(gòu)訪問(wèn)。
11.如權(quán)利要求10所述的制品,其中所述數(shù)據(jù)處理機(jī)是處理器,所述處理器具有特殊的讀微操作,在所述處理器從所述儲(chǔ)存單元恢復(fù)所述狀態(tài)數(shù)據(jù)時(shí)被使用。
12.如權(quán)利要求11所述的制品,其中所述處理器還包括內(nèi)部緩存并且也把所述已編碼狀態(tài)數(shù)據(jù)寫到所述緩存的公開(kāi)位置。
13.如權(quán)利要求11所述的制品,其中所述處理器恢復(fù)所述狀態(tài)數(shù)據(jù)并且將所述已恢復(fù)狀態(tài)數(shù)據(jù)寫到所述數(shù)據(jù)處理機(jī)的私有位置。
14.如權(quán)利要求11所述的制品,其中所述處理器恢復(fù)所述狀態(tài)數(shù)據(jù)并且用所述已恢復(fù)狀態(tài)數(shù)據(jù)配置自身以準(zhǔn)備恢復(fù)執(zhí)行掛起的任務(wù)。
15.如權(quán)利要求11所述的制品,其中所述處理器是這樣的處理器,即存在為所述處理器而由制造商定義的指令,所述指令在其被所述處理器執(zhí)行時(shí)恢復(fù)所述儲(chǔ)存單元的所述狀態(tài)數(shù)據(jù)。
16.如權(quán)利要求10所述的制品,其中所述數(shù)據(jù)處理機(jī)是處理器,為所述處理器定義了用于訪問(wèn)所述儲(chǔ)存單元的所述已編碼狀態(tài)數(shù)據(jù)的特殊的微操作,并且其中所述處理器還包括地址混淆單元,用于接收與所述處理器給定的狀態(tài)數(shù)據(jù)相關(guān)聯(lián)的地址值,所述地址值已從所述特殊微操作的發(fā)送中獲得,所述混淆單元提供已編碼的物理地址值,所述值指向所述給定狀態(tài)數(shù)據(jù)存入其中的所述儲(chǔ)存單元中的實(shí)際位置。
17.如權(quán)利要求10所述的制品,其中所述數(shù)據(jù)處理機(jī)是處理器,為所述處理器定義了用于訪問(wèn)所述儲(chǔ)存單元的所述已編碼狀態(tài)數(shù)據(jù)的硬件控制信號(hào),并且其中所述處理器還包括內(nèi)部緩存,數(shù)據(jù)轉(zhuǎn)換單元從所述內(nèi)部緩存接收作為從所述硬件控制信號(hào)中獲得的緩存命中的結(jié)果的數(shù)據(jù)值,,所述轉(zhuǎn)換單元將所述數(shù)據(jù)值解碼成所述處理器的實(shí)際狀態(tài)數(shù)據(jù)。
18.一種計(jì)算機(jī)系統(tǒng),包括處理器;以及主存儲(chǔ)器,所述主存儲(chǔ)器可通信地耦合到所述處理器并且具有被指定用于以已編碼形式存儲(chǔ)所述處理器的私有數(shù)據(jù)的公開(kāi)區(qū)域。
19.如權(quán)利要求18所述系統(tǒng),其中所述處理器在將所述私有狀態(tài)數(shù)據(jù)存入所述公開(kāi)區(qū)域之前對(duì)所述私有狀態(tài)數(shù)據(jù)編碼。
20.如權(quán)利要求18所述系統(tǒng),其中所述處理器在使用從所述公開(kāi)區(qū)域讀取的值之前對(duì)其進(jìn)行解碼。
21.如權(quán)利要求18所述系統(tǒng),其中所述處理器還包括內(nèi)部?jī)?chǔ)存單元,其中指定了公開(kāi)區(qū)域用于以已編碼形式存儲(chǔ)所述私有狀態(tài)數(shù)據(jù)的拷貝。
22.如權(quán)利要求21所述系統(tǒng),其中所述內(nèi)部?jī)?chǔ)存單元是緩存和寄存器文件中的一個(gè)。
23.如權(quán)利要求21所述系統(tǒng),其中在所述內(nèi)部?jī)?chǔ)存單元中指定私有區(qū)域用于以未經(jīng)編碼的形式存儲(chǔ)所述私有狀態(tài)數(shù)據(jù)。
24.如權(quán)利要求18所述系統(tǒng),還包括將所述處理器可通信地耦合到所述主存儲(chǔ)器的系統(tǒng)芯片組。
25.一種操作數(shù)據(jù)處理機(jī)的方法,包括對(duì)關(guān)于所述機(jī)器的狀態(tài)的私有狀態(tài)數(shù)據(jù)進(jìn)行編碼;以及將所述已編碼私有狀態(tài)數(shù)據(jù)寫入儲(chǔ)存裝置的位置,所述位置對(duì)運(yùn)行于所述機(jī)器的軟件是可訪問(wèn)的。
26.如權(quán)利要求25所述方法,所述編碼操作還包括對(duì)所述私有數(shù)據(jù)的值進(jìn)行加密以產(chǎn)生所述已編碼私有數(shù)據(jù)。
27.如權(quán)利要求25所述方法,其中關(guān)于所述機(jī)器的所述狀態(tài)的所述私有數(shù)據(jù)是寄存器值和所述儲(chǔ)存裝置的值中的一個(gè)。
28.如權(quán)利要求25所述方法,其中所述編碼操作包括用于混淆所述私有數(shù)據(jù)的地址值的地址編碼。
29.如權(quán)利要求25所述方法,還包括根據(jù)解碼處理從所述儲(chǔ)存空間中恢復(fù)所述私有數(shù)據(jù)。
30.如權(quán)利要求29所述方法,其中所述恢復(fù)操作包括從存儲(chǔ)器中讀取多個(gè)值;以及組合所述讀取的多個(gè)值以形成所述私有數(shù)據(jù)的單個(gè)未經(jīng)編碼的值。
31.如權(quán)利要求29所述方法,其中所述恢復(fù)操作包括從存儲(chǔ)器的一個(gè)或更多個(gè)不連續(xù)的位置中讀取多個(gè)值;組合所述讀取的多個(gè)值以形成單個(gè)值;以及對(duì)所述單個(gè)值進(jìn)行解碼以形成所述私有數(shù)據(jù)的未經(jīng)編碼的值。
32.如權(quán)利要求25所述方法,所述私有數(shù)據(jù)是指以下中的一個(gè)a)所述機(jī)器的內(nèi)部寄存器的內(nèi)容,所述內(nèi)容在軟件開(kāi)發(fā)者要用到的所述機(jī)器的指令手冊(cè)中沒(méi)有明確標(biāo)識(shí),b)所述機(jī)器的內(nèi)部寄存器的內(nèi)容,所述內(nèi)容在軟件開(kāi)發(fā)者要用到的所述機(jī)器的指令手冊(cè)中明確標(biāo)識(shí),但以軟件開(kāi)發(fā)者要用到的所述機(jī)器的指令手冊(cè)中沒(méi)有明確標(biāo)識(shí)的格式或位置被存儲(chǔ)。
33.如權(quán)利要求29所述方法,還包括將所述已恢復(fù)私的有數(shù)據(jù)存入所述機(jī)器的私有儲(chǔ)存裝置。
全文摘要
根據(jù)本發(fā)明的實(shí)施方案,描述了操作數(shù)據(jù)處理機(jī)的方法,其中有關(guān)機(jī)器狀態(tài)的數(shù)據(jù)被寫入儲(chǔ)存裝置的位置上。所述位置可被為機(jī)器編寫的軟件訪問(wèn)。被寫入的狀態(tài)數(shù)據(jù)是已被編碼的??梢愿鶕?jù)解碼處理從儲(chǔ)存裝置恢復(fù)該狀態(tài)數(shù)據(jù)。還描述了其他實(shí)施方案并且主張對(duì)它們的權(quán)利要求。
文檔編號(hào)G06F21/00GK1886711SQ200480035019
公開(kāi)日2006年12月27日 申請(qǐng)日期2004年11月7日 優(yōu)先權(quán)日2003年11月26日
發(fā)明者斯科特·魯濱遜, 古斯塔沃·艾斯皮諾薩, 史蒂文·貝內(nèi)特 申請(qǐng)人:英特爾公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
丹凤县| 乐平市| 金塔县| 闻喜县| 霞浦县| 大方县| 安图县| 永靖县| 赤城县| 江西省| 广南县| 泾阳县| 九龙坡区| 太白县| 聊城市| 光泽县| 榆社县| 古交市| 江津市| 普宁市| 金川县| 肇庆市| 临沧市| 上林县| 永福县| 固始县| 普洱| 澳门| 阿鲁科尔沁旗| 马公市| 水富县| 石河子市| 大同县| 志丹县| 泰兴市| 开远市| 白朗县| 衡山县| 辉县市| 灵寿县| 藁城市|