<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

保護內存中應用程序的方法、內存控制器和處理器的制作方法

文檔序號:6607198閱讀:243來源:國知局
專利名稱:保護內存中應用程序的方法、內存控制器和處理器的制作方法
技術領域
本發明涉及內存中的應用程序,特別涉及保護內存中應用程序的方法、內存控制器和處理器。
背景技術
云計算是一種基于互聯網的計算新方式,通過互聯網上異構、自治的服務為個人和企業用戶提供按需即取的計算。云計算通常認為包括以下幾個層次的服務基礎設施即服務(IaaS),平臺即服務(PaM)和軟件即服務(SaM)。然而云計算環境缺少可見性和可控性,應用程序的執行都是在企業網絡之外進行操作,因此保證應用程序在云計算環境中的安全性很困難,未授權入侵者包括黑客常常利用網絡漏洞來獲得訪問和未授權權限,盜取并破解應用程序,使包括用戶商業秘密、個人隱私等在內的關鍵信息數據泄漏出去,給用戶帶來無法彌補的損失。雖然用戶可以使用軟件實現的安全方案和機制來構建云計算環境中的可信計算系統,例如軟件授權認證,然而有經驗的黑客能夠讀取密鑰并破解,最終導致應用程序被盜取、破解。在共享虛擬內存的環境中不確定因素更多,因此在遠程云計算環境中如何保障內存中的應用程序的安全,使之不被盜取、破解是一個極大的挑戰。

發明內容
本發明提供一種保護內存中應用程序的方法、內存控制器和處理器。根據本發明的第一方面,提供一種保護內存中應用程序的方法,其中所述應用程序按照高速緩存行的大小被緩存為內存行,該方法包括響應于處理器的加載訪問請求,從內存中讀取標記內存行和對應于所述內存行的ECC校驗和,其中所述標記內存行是通過對所述內存行的預定位和用于標識所述內存行的標記位進行邏輯運算獲得的;通過對所述標記內存行執行ECC校驗獲得所述內存行的標記位的值;根據標記位的值將所述標記內存行復原為所述內存行;根據標記位的值和處理器的加載訪問請求的類型確定是否加載所述內存行。根據本發明的第二方面,提供一種保護內存中應用程序的內存控制器,其中所述應用程序按照高速緩存行的大小被緩存為內存行,該內存控制器包括讀取模塊,被配置為響應于處理器的加載訪問請求,從內存中讀取標記內存行和對應于所述內存行的ECC校驗和,其中所述標記內存行是通過對所述內存行的預定位和用于標識所述內存行的標記位進行邏輯運算獲得的;ECC校驗模塊,被配置為通過對所述標記內存行執行ECC校驗獲得所述內存行的標記位的值;復原模塊,被配置為根據標記位的值將所述標記內存行復原為所述內存行;加載判斷模塊,被配置為根據標記位的值和處理器的加載訪問請求的類型確定是否加載所述內存行。根據本發明的第三方面,提供一種包括根據本發明第二方面的內存控制器的處理器。
根據本發明實施例的方法、內存控制器和處理器,通過硬件實現對內存中應用程序的保護,有效避免了在遠程應用的環境中應用程序被盜取、破解。


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