專利名稱:保護內(nèi)存中應用程序的方法、內(nèi)存控制器和處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及內(nèi)存中的應用程序,特別涉及保護內(nèi)存中應用程序的方法、內(nèi)存控制器和處理器。
背景技術(shù):
云計算是一種基于互聯(lián)網(wǎng)的計算新方式,通過互聯(lián)網(wǎng)上異構(gòu)、自治的服務為個人和企業(yè)用戶提供按需即取的計算。云計算通常認為包括以下幾個層次的服務基礎(chǔ)設(shè)施即服務(IaaS),平臺即服務(PaM)和軟件即服務(SaM)。然而云計算環(huán)境缺少可見性和可控性,應用程序的執(zhí)行都是在企業(yè)網(wǎng)絡之外進行操作,因此保證應用程序在云計算環(huán)境中的安全性很困難,未授權(quán)入侵者包括黑客常常利用網(wǎng)絡漏洞來獲得訪問和未授權(quán)權(quán)限,盜取并破解應用程序,使包括用戶商業(yè)秘密、個人隱私等在內(nèi)的關(guān)鍵信息數(shù)據(jù)泄漏出去,給用戶帶來無法彌補的損失。雖然用戶可以使用軟件實現(xiàn)的安全方案和機制來構(gòu)建云計算環(huán)境中的可信計算系統(tǒng),例如軟件授權(quán)認證,然而有經(jīng)驗的黑客能夠讀取密鑰并破解,最終導致應用程序被盜取、破解。在共享虛擬內(nèi)存的環(huán)境中不確定因素更多,因此在遠程云計算環(huán)境中如何保障內(nèi)存中的應用程序的安全,使之不被盜取、破解是一個極大的挑戰(zhàn)。
發(fā)明內(nèi)容
本發(fā)明提供一種保護內(nèi)存中應用程序的方法、內(nèi)存控制器和處理器。根據(jù)本發(fā)明的第一方面,提供一種保護內(nèi)存中應用程序的方法,其中所述應用程序按照高速緩存行的大小被緩存為內(nèi)存行,該方法包括響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的;通過對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值;根據(jù)標記位的值將所述標記內(nèi)存行復原為所述內(nèi)存行;根據(jù)標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行。根據(jù)本發(fā)明的第二方面,提供一種保護內(nèi)存中應用程序的內(nèi)存控制器,其中所述應用程序按照高速緩存行的大小被緩存為內(nèi)存行,該內(nèi)存控制器包括讀取模塊,被配置為響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的;ECC校驗模塊,被配置為通過對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值;復原模塊,被配置為根據(jù)標記位的值將所述標記內(nèi)存行復原為所述內(nèi)存行;加載判斷模塊,被配置為根據(jù)標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行。根據(jù)本發(fā)明的第三方面,提供一種包括根據(jù)本發(fā)明第二方面的內(nèi)存控制器的處理器。
根據(jù)本發(fā)明實施例的方法、內(nèi)存控制器和處理器,通過硬件實現(xiàn)對內(nèi)存中應用程序的保護,有效避免了在遠程應用的環(huán)境中應用程序被盜取、破解。
結(jié)合附圖,通過參考下列詳細的示例性實施例的描述,將會更好地理解本發(fā)明本身、優(yōu)選的實施方式以及本發(fā)明的目的和優(yōu)點,其中圖1示出根據(jù)本發(fā)明一個實施例對內(nèi)存中應用程序提供保護機制的處理器架構(gòu)圖;圖2示出根據(jù)本發(fā)明的一個實施例在內(nèi)存控制器中實現(xiàn)保護內(nèi)存中的應用程序的方法;圖3示出根據(jù)本發(fā)明的一個實施例向內(nèi)存中加載標記內(nèi)存行和ECC校驗和的過程;圖4示出標記內(nèi)存行和ECC編碼產(chǎn)生的示例;圖5示出對標記內(nèi)存行執(zhí)行ECC校驗獲得標記位的示例;圖6示出本發(fā)明一個實施例的根據(jù)第一校驗結(jié)果A和第二校驗結(jié)果B確定內(nèi)存行的標記位的值的狀態(tài)表;圖7示出采用多數(shù)判決的方法確定標記位s的值的示例;圖8示出根據(jù)本發(fā)明一個實施例的保護內(nèi)存中應用程序的內(nèi)存控制器的結(jié)構(gòu)框圖;圖9示出加載應用程序的硬件控制邏輯真值表;以及圖10示出加載應用程序的控制邏輯電路示意圖。
具體實施例方式以下結(jié)合附圖描述根據(jù)本發(fā)明實施例的方法,將會更好地理解本發(fā)明的目的和優(yōu)
點ο本發(fā)明實施例的保護內(nèi)存中的應用程序的方法實現(xiàn)在提供解密加速功能的處理器上,圖1示出根據(jù)本發(fā)明一個實施例對內(nèi)存中應用程序提供保護機制的處理器架構(gòu)圖, 利用專門由硬件電路單元構(gòu)成的解密加速器對加密的應用程序代碼進行解密,能夠避免軟件解密過程中可能帶來的應用程序代碼被破解或被讀取的風險。本發(fā)明的核心思想是實現(xiàn)對內(nèi)存中的應用程序可執(zhí)行代碼的保護,為需要特別保護的應用程序設(shè)置保護標記位,并對現(xiàn)有技術(shù)對內(nèi)存中數(shù)據(jù)進行ECC(錯誤檢查和糾正)校驗的機制進行改進,有效識別出內(nèi)存中應用程序的保護標記位,從而拒絕處理器的加載數(shù)據(jù)訪問請求。圖2示出根據(jù)本發(fā)明的一個實施例在內(nèi)存控制器中實現(xiàn)保護內(nèi)存中的應用程序的方法,其中所述應用程序按照高速緩存行的大小被緩存為內(nèi)存行,該方法包括以下步驟 在步驟S201,響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的;在步驟S202,利用所述ECC校驗和對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值;在步驟S203,根據(jù)標記位的值將所述標記內(nèi)存行復原為所述內(nèi)存行;以及在步驟S204,根據(jù)標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行。具體地,在步驟S201,響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的,圖3示出根據(jù)本發(fā)明的一個實施例向內(nèi)存中加載標記內(nèi)存行和ECC校驗和的過程,包括在步驟S301,響應于接收到處理器的應用程序加載請求,接收所述內(nèi)存行和用于標識所述內(nèi)存行的標記位。具體地,根據(jù)本發(fā)明的一個實施例,對于保護應用程序的情況, 接收到處理器的加載應用程序的請求,DMA控制器將加密應用程序從硬盤加載到內(nèi)存。解碼加速器接收到處理器發(fā)出的解密控制指令,從解密控制指令中提取出加密的應用程序的內(nèi)存地址;并從提取的內(nèi)存地址讀取加密的應用程序并解密;為解密的應用程序設(shè)置保護標記位,例如“1”,表示該應用程序需要保護;然后,將解密的應用程序每次按照高速緩存行(catcheline)的大小寫入內(nèi)存,例如,高速緩存行的大小是128byte,每次向內(nèi)存寫入 128byte的應用程序代碼,并存儲為內(nèi)存行,此外,為了有效記錄標記位,在處理器與內(nèi)存控制器之間的數(shù)據(jù)總線上額外增加一位記錄標記位的數(shù)據(jù)線,因此在寫入內(nèi)存之前,多個內(nèi)存行和對應的標記位被緩存在內(nèi)存控制器中。而對于其它不需要保護的情況,實際并不需要添加額外的標記位,即默認為添加的非保護標記位為“0”。在步驟S302,對所述內(nèi)存行執(zhí)行ECC編碼產(chǎn)生對應于所述內(nèi)存行的ECC校驗和。 內(nèi)存是一種電子器件,在其工作過程中難免會出現(xiàn)錯誤,而對于穩(wěn)定性要求高的用戶來說, 內(nèi)存錯誤可能會引起致命性的問題,因此,服務器系統(tǒng)的內(nèi)存通常通過ECC(錯誤檢查和糾正)校驗進行保護,從而將使整個服務器系統(tǒng)在工作時更趨于安全穩(wěn)定,圖4示出標記內(nèi)存行和ECC編碼產(chǎn)生的示例,其中Ivb1. . . . b63是64比特的內(nèi)存行,s位是為該內(nèi)存行添加的標記位,利用現(xiàn)有技術(shù)中的ECC編碼方法為每64比特指令數(shù)據(jù)Iv b” . . . b63產(chǎn)生8位單錯糾正雙錯檢測(SECDED)位,即,P0......P70在步驟S303,將所述內(nèi)存行的預定位與標記位進行異或邏輯運算產(chǎn)生所述標記內(nèi)存行。參照圖4,其中在內(nèi)存行Ivb1. . . . b63中指定k為的預定位,將k與標記位s進行異或,產(chǎn)生內(nèi)存行bQ,b” . . . b63的標記內(nèi)存行cQ,C1.....C63。在步驟S304,將所述標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和寫入內(nèi)存。在完成向內(nèi)存加載應用程序之后,處理器發(fā)出指令或數(shù)據(jù)的加載請求。具體地,在步驟S201,響應于接收到處理器的加載請求,內(nèi)存控制器從內(nèi)存中讀取多個標記內(nèi)存行和對應于所述多個內(nèi)存行的ECC校驗和,以圖4為例,讀取標記多個標記內(nèi)存行Ctl,C1……C63 和多個對應于8位單錯糾正雙錯檢測(SE⑶ED)位P(1......p7。在步驟S202,利用所述ECC校驗和對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值。具體地,對標記內(nèi)存行進行ECC校驗產(chǎn)生第一校驗結(jié)果;對標記內(nèi)存行的預定位進行非邏輯運算產(chǎn)生新標記內(nèi)存行,其中標記內(nèi)存行的預定位與產(chǎn)生標記內(nèi)存行的預定位對應一致;對所述新標記內(nèi)存行進行ECC校驗產(chǎn)生第二校驗結(jié)果;根據(jù)第一校驗結(jié)果和第二校驗結(jié)果獲得對應于標記內(nèi)存行的內(nèi)存行的標記位的值。本領(lǐng)域技術(shù)人員可以理解,由內(nèi)存行和標記位產(chǎn)生標記內(nèi)存行并不限于邏輯或運算,而可以由任何具有恢復標記位的值的功能的邏輯運算來實現(xiàn)。其中根據(jù)第一校驗結(jié)果和第二校驗結(jié)果確定對應于標記內(nèi)存行的內(nèi)存行的標記位的值,其中確定標記位的值的方法包括如果第一校驗結(jié)果表明所述標記內(nèi)存行的預定位錯誤,并且第二校驗結(jié)果表明所述新標記內(nèi)存行未出錯,那么確定標記位的值為保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行未出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行的預定位錯誤,那么確定標記位的值為非保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行出現(xiàn)兩位錯,并且第二校驗結(jié)果表明所述新內(nèi)存行中除預定位之外的1位出錯,那么確定標記位的值為保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行中除預定位之外的1位出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行出現(xiàn)兩位錯,那么確定標記位的值為非保護標記位;以及如果第一校驗結(jié)果和第二校驗結(jié)果均表明內(nèi)存行出現(xiàn)大于等于兩位錯,那么標記位的值呈現(xiàn)未知無法確定的狀態(tài)。根據(jù)本發(fā)明的一個實施例,在根據(jù)本發(fā)明實施例的方法確定每個內(nèi)存行對應的標記位的值之后,為了避免由于傳輸?shù)腻e誤引起多于兩個的誤碼,導致無法確定標記位的值, 對于按照高速緩存行(cacheline)的大小一次寫入的內(nèi)存行,進一步根據(jù)多數(shù)判決的原理確定標記位的值,因為對于按照高速緩存行的大小每次寫入內(nèi)存的內(nèi)存行,設(shè)置的標記位是相同的,因此對按照高速緩存行的大小一次寫入的內(nèi)存行依據(jù)多數(shù)判決的原理能夠確定出正確的標記位的值。圖5示出對標記內(nèi)存行執(zhí)行ECC校驗獲得標記位的示例,首先,利用8位單錯糾
正雙錯檢測(SE⑶ED)位P(1......p7對標記內(nèi)存行Ctl,C1……C63進行ECC校驗,產(chǎn)生8位
ECC第一校驗結(jié)果A (Atl......A7);接著對標記內(nèi)存行Ctl,C1……C63中的標記位Ctl進行非
邏輯運算,即,使Ctl與“1”進行異或,產(chǎn)生新標記內(nèi)存行屯,屯……d63 ;接著利用8位單錯
糾正雙錯檢測(SE⑶ED)位P(1......p7對新標記內(nèi)存行Cltl,Cl1……d63進行ECC校驗,產(chǎn)生8
位ECC第二校驗結(jié)果B (B0......B7)。由于ECC的單錯糾正雙錯檢測(SE⑶ED)位能夠能糾
正1個比特錯誤和檢測2個比特錯誤,因此根據(jù)ECC校驗結(jié)果Atl......A7和ECC校驗結(jié)果
B0......B7能夠糾正1個比特錯誤和檢測兩個比特錯誤。結(jié)合Atl......A7和Btl......B7糾
錯和檢錯結(jié)果,確定標記位的值。圖6示出本發(fā)明一個實施例的根據(jù)第一校驗結(jié)果A和第二校驗結(jié)果B確定內(nèi)存行的標記位的值的狀態(tài)表,由表中可見包括五種情形,第一種情形,如果第一校驗結(jié)果A表明標記內(nèi)存行Ctl,C1……C63的預定位N出錯,并且第二校驗結(jié)果B表明內(nèi)存行Iv b” . . . b63 未出錯,那么確定標記位s的值為保護標記位“ 1”;第二種情形,如果第一校驗結(jié)果A表明內(nèi)存行Iv b” . . . b63未出錯,并且第二校驗結(jié)果B表明內(nèi)存行Iv b” . . . b63的預定位k出錯, 那么確定標記位S的值為非保護標記位“0”;第三種情形,如果第一校驗結(jié)果A表明兩位錯, 并且第二校驗結(jié)果B表明內(nèi)存行Ivb1. . . . b63除預定位k之外有一位bx錯,那么確定標記位s的值為保護標記位“1” ;第四種情形,如果第一校驗結(jié)果A表明內(nèi)存行Iv b” . . . b63除預定位k之外有一位bx錯,并且第二校驗結(jié)果B表明內(nèi)存行Iv b” . . . b63有兩位錯,那么確定標記位s的值為非保護標記位“0”;第五種情形,對于第一校驗結(jié)果和第二校驗結(jié)果均表明內(nèi)存行內(nèi)存行K,b” . . . b63出現(xiàn)大于等于兩位錯,那么標記位的值呈現(xiàn)未知無法確定的狀態(tài)。為了避免出現(xiàn)第五種情形,根據(jù)本發(fā)明的實施例,可以采用多數(shù)判決的方法確保標記位s的值的正確性,圖7示出采用多數(shù)判決的方法確定標記位s的值的示例,假設(shè)高速緩存行的大小是32byte,因此一次向內(nèi)存控制器寫入的數(shù)據(jù)是32byte加上一個標記位,由此產(chǎn)生4個內(nèi)存行,對于一次寫入的32byte指令數(shù)據(jù),標記位是相同的,因此在根據(jù)本發(fā)明實施例的方法確定每個內(nèi)存行對應的標記位的值之后,根據(jù)多數(shù)判決的原理確定正確的標記位的值,如圖7所示,根據(jù)各自內(nèi)存行的第一校驗結(jié)果A和第二校驗結(jié)果B,分別得到四個標記位s的值,分別是1、1、0、1,通過多數(shù)判決確定標記位s的值是保護標記位“1”,從而避免由于傳輸?shù)腻e誤引起的多于兩個的誤碼,導致無法確定標記位的值。在步驟S203,根據(jù)標記位的值將所述多個標記內(nèi)存行復原為所述內(nèi)存行。根據(jù)圖 5的示例,預先確定保護標記位為“1”,而非保護標記位為“0”。在這種情形下,如果滿足第一種情形,即第一校驗結(jié)果A表明預定位Cltl出錯,并且第二校驗結(jié)果B表明未出錯,那么確定標記位s的值為“1”,因此將Ctl進行非邏輯運算,復原出原來的內(nèi)存行Iv b” . . . b63。如果滿足第二種情形,即,第一校驗結(jié)果A表明未出錯,并且第二校驗結(jié)果B表明預定位h出錯,那么確定標記位s的值為“0”,因此標記內(nèi)存行Ctl,C1……C63即為原來的內(nèi)存行Iv b” . . . b63。如果滿足第三種情形,即,第一校驗結(jié)果A表明兩位錯,并且第二校驗結(jié)果B表明除預定位k之外的一位bx錯,那么確定標記位s的值為“ 1 ”,因此將Ctl進行非邏輯運算,并且將cx進行非邏輯運算,從而復原出原來的內(nèi)存行Ivbpub63t5如果滿足第四種情形,即, 第一校驗結(jié)果A表明除預定位k之外的一位bx錯,并且第二校驗結(jié)果B表明兩位錯,那么確定標記位s的值為“0”,因此標記內(nèi)存行Ctl,C1……C63即為原來的內(nèi)存行Iv b” . . . b63, 從而復原出原來的內(nèi)存行Iv b^ ... b63。在步驟S204,根據(jù)標記位的值和處理器的訪問類型確定是否加載所述內(nèi)存行。具體地,如果確定標記位的值為保護標記位并且處理器的訪問類型為數(shù)據(jù)獲取請求,則禁止將應用程序加載到數(shù)據(jù)緩存器(D-cache),從而實現(xiàn)了對應用程序的保護,防止應用程序被讀取和破解;如果確定標記位的值為保護標記位并且訪問類型為指令獲取請求,則允許將應用程序加載到指令緩存器(I-cache),執(zhí)行應用程序;如果確定標記位的值是非保護標記位并且訪問類型為數(shù)據(jù)獲取請求,則允許將應用程序加載到數(shù)據(jù)緩存器(D-cache);如果確定標記位的值是非保護標記位并且訪問類型為指令獲取請求,則允許將應用程序加載到指令緩存器(I-cache)?;谕话l(fā)明構(gòu)思,本發(fā)明提出一種保護內(nèi)存中應用程序的內(nèi)存控制器,圖8示出根據(jù)本發(fā)明一個實施例的保護內(nèi)存中應用程序的內(nèi)存控制器的結(jié)構(gòu)框圖800,該內(nèi)存控制器包括讀取模塊801,被配置為響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的;ECC校驗模塊802,被配置為通過對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值;復原模塊803,被配置為根據(jù)標記位的值將所述標記內(nèi)存行復原為所述內(nèi)存行;加載判斷模塊804,被配置為根據(jù)標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行。所述內(nèi)存控制器還包括接收模塊,被配置為響應于接收到處理器的應用程序加載請求,從解密加速器接收所述內(nèi)存行和用于標識所述內(nèi)存行的標記位;ECC編碼模塊,對所述內(nèi)存行執(zhí)行ECC編碼產(chǎn)生對應于所述內(nèi)存行的ECC校驗和,其中ECC編碼模塊可以利用現(xiàn)有技術(shù)中的任何ECC編碼硬件實現(xiàn)方案來實現(xiàn);標記內(nèi)存行產(chǎn)生模塊,被配置為將所述內(nèi)存行的預定位與標記位進行異或產(chǎn)生標記內(nèi)存行;以及寫內(nèi)存模塊,將所述標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和寫入內(nèi)存。
其中ECC校驗模塊進一步被配置為對標記內(nèi)存行進行ECC校驗產(chǎn)生第一校驗結(jié)果;對標記內(nèi)存行的預定位進行非邏輯運算產(chǎn)生新標記內(nèi)存行;對所述新標記內(nèi)存行進行 ECC校驗產(chǎn)生第二校驗結(jié)果;根據(jù)第一校驗結(jié)果和第二校驗結(jié)果獲得所述標記內(nèi)存行的標記位的值,ECC校驗模塊可以在現(xiàn)有的ECC校驗電路的基礎(chǔ)上加以實現(xiàn)。根據(jù)本發(fā)明的一個實施例,如果第一校驗結(jié)果表明所述標記內(nèi)存行的預定位錯誤,并且第二校驗結(jié)果表明所述新標記內(nèi)存行未出錯,那么確定標記位的值為保護標記位; 如果第一校驗結(jié)果表明所述標記內(nèi)存行未出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行的預定位錯誤,那么確定標記位的值為非保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行出現(xiàn)兩位錯,并且第二校驗結(jié)果表明所述新內(nèi)存行中除預定位之外的1位出錯,那么確定標記位的值為保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行中除預定位之外的 1位出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行出現(xiàn)兩位錯,那么確定標記位的值為非保護標記位;以及如果第一校驗結(jié)果和第二校驗結(jié)果均表明內(nèi)存行出現(xiàn)大于等于兩位錯, 那么標記位的值呈現(xiàn)未知無法確定的狀態(tài)。根據(jù)本發(fā)明的一個實施例,進一步包括用于利用多數(shù)判決的原理確定所述內(nèi)存行對應的標記位的值的確定模塊。根據(jù)本發(fā)明的一個實施例,其中加載判斷模塊進一步被配置為如果確定標記位的值為保護標記位并且處理器的加載訪問請求為數(shù)據(jù)獲取請求,則禁止加載所述內(nèi)存行; 如果確定標記位的值為保護標記位并且處理器的加載訪問請求為指令獲取請求,則允許加載所述內(nèi)存行;如果確定標記位的值為非保護標記位并且處理器的加載訪問請求為數(shù)據(jù)獲取請求,則允許加載所述內(nèi)存行;如果確定標記位的值為非保護標記位并且處理器的加載訪問請求為指令獲取請求,則允許加載所述內(nèi)存行,從硬件實現(xiàn)上,按照上述的加載邏輯增加控制邏輯電路來控制應用程序的加載,圖9示出加載應用程序的硬件控制邏輯真值表, 其中指令獲取請求表示為“ 1 ”,數(shù)據(jù)獲取請求表示為“0”,保護標記位表示為“ 1 ”,非保護標記位表示為“0”,可以看到只有在標記位的值為保護標記位,并且訪問類型為數(shù)據(jù)獲取請求時禁止加載應用程序,而其它情況則允許,圖10示出加載應用程序的控制邏輯電路示意圖,利用非門和與門組合的邏輯控制電路能夠有效防止重要應用程序不會被讀取或盜取。本發(fā)明還提供一種保護內(nèi)存中應用程序的處理器,該處理器集成有具有上述描述特性的內(nèi)存控制器。應當理解,本發(fā)明的至少某些方面可以可替代地以程序產(chǎn)品實現(xiàn)。定義有關(guān)本發(fā)明的功能的程序可以通過各種信號承載介質(zhì)被傳送到數(shù)據(jù)存儲系統(tǒng)或計算機系統(tǒng),所述信號承載介質(zhì)包括但不限于,不可寫存儲介質(zhì)(例如,CD-ROM)、可寫存儲介質(zhì)(例如,軟盤、硬盤驅(qū)動器、讀/寫CD ROM、光介質(zhì))以及諸如包括以太網(wǎng)的計算機和電話網(wǎng)絡之類的通信介質(zhì)。因此應當理解,在此類信號承載介質(zhì)中,當攜帶或編碼有管理本發(fā)明中的方法功能的計算機可讀指令時,代表本發(fā)明的可替代實施例。本發(fā)明可以硬件、軟件、固件或其組合的方式實現(xiàn)。本發(fā)明可以集中的方式在一個計算機系統(tǒng)中實現(xiàn),或以分布方式實現(xiàn),在這種分布方式中,不同的部件分布在若干互連的計算機系統(tǒng)中。適于執(zhí)行本文中描述的方法的任何計算機系統(tǒng)或其它裝置都是合適的。優(yōu)選地,本發(fā)明以計算機軟件和通用計算機硬件的組合的方式實現(xiàn),在這種實現(xiàn)方式中,當該計算機程序被加載和執(zhí)行時,控制該計算機系統(tǒng)而使其執(zhí)行本發(fā)明的方法,或構(gòu)成本發(fā)明的系統(tǒng)。
10
上面出于舉例說明的目的,給出了本發(fā)明的優(yōu)選實施例的說明。優(yōu)選實施例的上述說明不是窮盡的,也不打算把本發(fā)明局限于公開的明確形式,顯然鑒于上述教導,許多修改和變化是可能的。對本領(lǐng)域的技術(shù)人員來說顯而易見的這種修改和變化包括在由附加的權(quán)利要求限定的本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種保護內(nèi)存中應用程序的方法,其中所述應用程序按照高速緩存行的大小被緩存為內(nèi)存行,該方法包括響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的錯誤檢查和糾正ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的;利用所述內(nèi)存行的ECC校驗和對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值;根據(jù)所述標記位的值將所述標記內(nèi)存行復原為所述內(nèi)存行;以及根據(jù)所述標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行。
2.根據(jù)權(quán)利要求1所述的方法,其中在從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和之前還包括加載應用程序,其中加載應用程序包括響應于接收到處理器的應用程序加載請求,接收所述內(nèi)存行和用于標識所述內(nèi)存行的標記位;對所述內(nèi)存行執(zhí)行ECC編碼產(chǎn)生對應于所述內(nèi)存行的ECC校驗和;將所述內(nèi)存行的預定位與所述內(nèi)存行的標記位進行邏輯運算產(chǎn)生標記內(nèi)存行;以及將所述標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和寫入內(nèi)存。
3.根據(jù)權(quán)利要求2所述的方法,其中通過對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述標記內(nèi)存行的標記位的值進一步包括對所述標記內(nèi)存行進行ECC校驗產(chǎn)生第一校驗結(jié)果; 對所述標記內(nèi)存行的預定位進行非邏輯運算產(chǎn)生新標記內(nèi)存行; 對所述新標記內(nèi)存行進行ECC校驗產(chǎn)生第二校驗結(jié)果; 根據(jù)第一校驗結(jié)果和第二校驗結(jié)果獲得所述內(nèi)存行的標記位的值。
4.根據(jù)權(quán)利要求3所述的方法,其中根據(jù)第一校驗結(jié)果和第二校驗結(jié)果獲得所述內(nèi)存行的標記位的值進一步包括如果第一校驗結(jié)果表明所述標記內(nèi)存行的預定位錯誤,并且第二校驗結(jié)果表明所述新標記內(nèi)存行未出錯,那么確定標記位的值為保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行未出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行的預定位錯誤,那么確定標記位的值為非保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行出現(xiàn)兩位錯,并且第二校驗結(jié)果表明所述新內(nèi)存行中除預定位之外的一位出錯,那么確定標記位的值為保護標記位;以及如果第一校驗結(jié)果表明所述標記內(nèi)存行中除預定位之外的1位出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行出現(xiàn)兩位錯,那么確定標記位的值為非保護標記位。
5.根據(jù)權(quán)利要求4所述的方法,進一步包括利用多數(shù)判決的原理確定多個所述內(nèi)存行對應的標記位的值。
6.根據(jù)權(quán)利要求4或5所述的方法,其中根據(jù)標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行進一步包括如果確定標記位的值為保護標記位并且處理器的加載訪問請求為數(shù)據(jù)獲取請求,則禁止加載所述內(nèi)存行。
7.根據(jù)權(quán)利要求6所述的方法,其中所述保護標記位是由解密加速器為應用程序設(shè)置的。
8.一種保護內(nèi)存中應用程序的內(nèi)存控制器,其中所述應用程序按照高速緩存行的大小被緩存為內(nèi)存行,該內(nèi)存控制器包括讀取模塊,被配置為響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的;ECC校驗模塊,被配置為利用所述內(nèi)存行的ECC校驗和對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值;復原模塊,被配置為根據(jù)標記位的值將所述標記內(nèi)存行復原為所述內(nèi)存行; 加載判斷模塊,被配置為根據(jù)標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行。
9.根據(jù)權(quán)利要求8所述的內(nèi)存控制器,還包括接收模塊,被配置為響應于接收到處理器的應用程序加載請求,從解密加速器接收所述內(nèi)存行和用于標識所述內(nèi)存行的標記位;ECC編碼模塊,對所述內(nèi)存行執(zhí)行ECC編碼產(chǎn)生對應于所述內(nèi)存行的ECC校驗和; 標記內(nèi)存行產(chǎn)生模塊,被配置為將所述內(nèi)存行的預定位與標記位進行異或邏輯運算產(chǎn)生標記內(nèi)存行;以及寫內(nèi)存模塊,將所述標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和寫入內(nèi)存。
10.根據(jù)權(quán)利要求9所述的內(nèi)存控制器,其中ECC校驗模塊進一步被配置為 對所述標記內(nèi)存行進行ECC校驗產(chǎn)生第一校驗結(jié)果;對所述標記內(nèi)存行的預定位進行非邏輯運算產(chǎn)生新標記內(nèi)存行; 對所述新標記內(nèi)存行進行ECC校驗產(chǎn)生第二校驗結(jié)果; 根據(jù)第一校驗結(jié)果和第二校驗結(jié)果獲得所述標記內(nèi)存行的標記位的值。
11.根據(jù)權(quán)利要求10所述的內(nèi)存控制器,其中ECC校驗模塊進一步被配置為如果第一校驗結(jié)果表明所述標記內(nèi)存行的預定位錯誤,并且第二校驗結(jié)果表明所述新標記內(nèi)存行未出錯,那么確定標記位的值為保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行未出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行的預定位錯誤,那么確定標記位的值為非保護標記位;如果第一校驗結(jié)果表明所述標記內(nèi)存行出現(xiàn)兩位錯,并且第二校驗結(jié)果表明所述新內(nèi)存行中除預定位之外的一位出錯,那么確定標記位的值為保護標記位;以及如果第一校驗結(jié)果表明所述標記內(nèi)存行中除預定位之外的1位出錯,并且第二校驗結(jié)果表明所述新標記內(nèi)存行出現(xiàn)兩位錯,那么確定標記位的值為非保護標記位。
12.根據(jù)權(quán)利要求11所述的內(nèi)存控制器,進一步包括用于利用多數(shù)判決的原理確定多個所述內(nèi)存行對應的標記位的值的確定模塊。
13.根據(jù)權(quán)利要求11或12所述的內(nèi)存控制器,其中加載判斷模塊進一步被配置為 如果確定標記位的值為保護標記位并且處理器的加載訪問請求為數(shù)據(jù)獲取請求,則禁止加載所述內(nèi)存行。
14.根據(jù)權(quán)利要求13所述的內(nèi)存控制器,其中所述保護標記位是由解密加速器為應用程序設(shè)置的。
15. 一種保護內(nèi)存中應用程序的處理器,包括根據(jù)權(quán)利要求8-14任一個所述的內(nèi)存控制器。
全文摘要
本發(fā)明公開一種保護內(nèi)存中應用程序的方法、內(nèi)存控制器和處理器,其中所述應用程序按照高速緩存行的大小被緩存為內(nèi)存行,該方法包括響應于處理器的加載訪問請求,從內(nèi)存中讀取標記內(nèi)存行和對應于所述內(nèi)存行的ECC校驗和,其中所述標記內(nèi)存行是通過對所述內(nèi)存行的預定位和用于標識所述內(nèi)存行的標記位進行邏輯運算獲得的;利用所述ECC校驗和對所述標記內(nèi)存行執(zhí)行ECC校驗獲得所述內(nèi)存行的標記位的值;根據(jù)標記位的值將所述標記內(nèi)存行復原為所述內(nèi)存行;根據(jù)標記位的值和處理器的加載訪問請求的類型確定是否加載所述內(nèi)存行。
文檔編號G06F12/14GK102346715SQ20101024471
公開日2012年2月8日 申請日期2010年7月30日 優(yōu)先權(quán)日2010年7月30日
發(fā)明者侯銳, 劉亮, 戈弋, 李立 申請人:國際商業(yè)機器公司