保护内存中应用程序的方法、内存控制器和处理器的制作方法

文档序号:6607198阅读:220来源:国知局
专利名称:保护内存中应用程序的方法、内存控制器和处理器的制作方法
技术领域
本发明涉及内存中的应用程序,特别涉及保护内存中应用程序的方法、内存控制器和处理器。
背景技术
云计算是一种基于互联网的计算新方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算。云计算通常认为包括以下几个层次的服务基础设施即服务(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