保护存储器的方法、装置和系统的制作方法

文档序号:6563630阅读:222来源:国知局
专利名称:保护存储器的方法、装置和系统的制作方法
技术领域
本发明涉及用于保护存储器免受未授权访问的技术。
背景技术
计算机通过使用多程序系统利用了诸如存储器和中央处理器单元(CPU)之类的各种资源,多程序系统通过在多个进程之间进行切换来执行多个进程,例如程序、任务和工作。
这种计算机包含的风险是,特定进程所使用的存储器中的数据能够被另一进程访问或者覆盖并被损害。
为了保护数据免受这种风险,z/Architechture Principles ofOperation(IBM;SA22-7832-00;2000年12月;页3-9到3-12)公开了一种典型技术,该技术通过预先存储关于每个预定大小(例如4千字节)的存储器区域的存储密钥,并检验进程的存储密钥与该进程要访问的存储器的密钥是否符合,从而确定可访问性。
然而,使用存储密钥的存储器保护方法除了需要其中存储数据的存储器之外,还需要其中存储密钥的存储器。因此增加了硬件的数量。
而且,由于数据是按照4千字节的页为单位进行保护的,因此小数据的保护浪费了一些未被使用的存储器区域。尽管通过用更小的单元来分配存储密钥能够解决该问题,但是该解决方案将需要更多的存储器来存储该存储密钥。

发明内容
根据本发明的一个方面,一种用于保护存储器的装置包括奇偶校验(parity)生成器,其生成要写入到所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥并用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,其将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器中读出的所述请求源在所述访问密钥寄存器设定所述访问密钥;校正子(syndrome)计算器,其从所述第三数据计算校正子;以及确定单元,其根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
根据本发明的另一个方面,一种用于保护存储器的系统包括处理器;存储器控制器;以及保护外部存储器的存储器保护装置。所述存储器保护装置包括奇偶校验生成器,其生成要写入到所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,其将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器中读出的所述请求源在所述访问密钥寄存器设定所述访问密钥;校正子计算器,其从所述第三数据计算校正子;以及确定单元,根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
根据本发明的另一个方面,一种用于保护存储器的系统包括存储器控制器;以及保护外部存储器的存储器保护装置。所述存储器保护装置包括奇偶校验生成器,其生成要写入到所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器中读出的所述请求源在所述访问密钥寄存器设定所述访问密钥;校正子计算器,其从所述第三数据计算校正子;以及确定单元,其根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
根据本发明的另一个方面,一种用于保护存储器的系统包括存储器;以及保护所述存储器的存储器保护装置。所述存储器保护装置包括奇偶校验生成器,其生成要写入到所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,其将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器中读出的所述请求源在所述访问密钥寄存器设定所述访问密钥;校正子计算器,其从所述第三数据计算校正子;以及确定单元,其根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
根据本发明的另一个方面,一种保护存储器的方法包括生成要写入到所述存储器的第一数据的奇偶校验;通过将所述奇偶校验加入到所述第一数据来获得第二数据;设定对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;将所述第三数据写入所述存储器;通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器中读出的所述请求源在所述访问密钥寄存器设定所述访问密钥;从所述第三数据计算校正子;以及根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。


图1是根据本发明的第一实施例的存储器保护装置的方框图;图2是用于解释将数据写入到存储器中的过程的示意图;图3是用于解释将数据从存储器中读出的过程的示意图;图4是将数据写入到存储器中的过程的流程图;图5是解释写入过程中的数据流的示意图;图6是将数据从存储器中读出的过程的流程图;图7是解释将数据从存储器中读出的过程的示意图;图8是根据本发明的第三实施例的存储器保护装置的方框图;图9是根据本发明的第四实施例的存储器保护装置的方框图;图10是根据本发明的第五实施例的存储器保护装置的方框图;图11是根据本发明的第八实施例的存储器保护装置的方框图;图12是在写入访问密钥(write-access-key)表中的数据配置的示意图;图13是根据本发明的第九实施例的存储器保护装置的方框图;图14是在读出访问密钥(read-access-key)表中的数据配置的示意图;图15是用于解释选择访问密钥的方法的示意图;图16是根据本发明的第十二实施例的存储器保护装置的方框图;图17是用于解释由数据编辑单元所执行的过程的示意图;以及图18是根据本发明的第十三实施例的存储器保护装置的方框图。
具体实施例方式
以下参考附图详细解释本发明的示例性实施例。本发明并不局限于以下所述的实施例。
如图1所示,根据本发明的第一实施例的存储器保护装置1包括保护处理单元10、处理器20、存储器控制器30和存储器40。存储器控制器30和处理器20通过处理器总线21连接。保护处理单元10是安装在存储器控制器30与存储器40之间的独立设备。更具体而言,保护处理单元10能够是独立的大规模集成电路(LSI)芯片。
存储器40包括纠错码,即错误控制码(ECC)。在此参考图2和3解释ECC。ECC已经广泛用作提高存储器可靠性的一种方法。
通常,如图2所示,将要一次从存储器中读出或者写入到存储器中的n比特的数据D加上m比特的奇偶校验。奇偶检验是从数据D的值中计算出来的。将大小为n+m比特的数据D′写入到存储器中。
如图3所示,要从存储器中读出数据D′,通过用奇偶校验矩阵H中的转置矩阵乘以数据D′来计算m比特的值。m比特的值称为校正子。当校正子为0时,n比特的数据正确。当校正子不为0时,则n比特的数据包含至少一个错误。如果该错误是可纠正的则纠正该错误。
ECC能够以各种方法执行。奇偶校验位的数量、计算该数量的方法、用于计算校正子的奇偶校验矩阵、以及用于根据校正子来发现被纠正的错误的比特位置的方法随着方法不同而不同。单错纠正双错检测(SEC-DED)码广泛地用于计算机系统的存储器中。
根据SEC-DED码,当数据或者其奇偶校验包含单个错误时,定位该错误。当数据或者其奇偶校验包含两个错误时,检测到错误但是不能够定位错误。
通常,将32比特的数据加上7比特的奇偶校验作为ECC。64比特的数据加上8比特的奇偶校验,128比特的数据加上9比特的奇偶校验。
根据如何计算奇偶校验和如何生成奇偶校验矩阵来以各种方法执行SEC-DED码。最普通的方法是扩展汉明码和Hsiao码。在Cambridge University Press,2003中Richard E.Blahut写的AlgebraicCode for Data Transmission的63页描述了扩展汉明码。在IBM Journalof Research and Development,July 1970中M.Y.Hsiao写的A Class ofOptimal Minimum Odd-weight-column SEC-DED Codes的395-401页中描述了Hsiao码。这两种SEC-DED码在解释校正子的值的方法上不同;但是它们在纠错和检错能力上等同。
根据SEC-DED码,当数据正确时,校正子的值为0。当数据包含单个错误时,校正子表示非0值并且该值一对一地对应错误比特位置。通常该值等于与错误比特位置相对应的奇偶校验矩阵中的行的值。
同时,根据扩展汉明码,由奇偶校验计算方法和奇偶校验矩阵所指定的奇偶校验中的比特值始终是1,并且根据Hsiao码,校正子始终包括奇数个表示为1的比特。
当数据包含两个错误时,校正子的值也不为0。在该情况下,根据扩展汉明码,由奇偶校验计算方法和奇偶校验矩阵所指定的奇偶校验中的比特值始终是0。根据Hsiao码,校正子始终包含偶数个表示为1的比特。
当使用SEC-DED码时,通常不考虑数据包含两个以上错误的情况。这是因为如下所述,有时不能将具有三个或者更多错误的数据与具有一个或者两个错误的数据区分开。
当数据包含等于或者多于三个的奇数个错误时,根据扩展汉明码,由奇偶校验计算方法和奇偶校验矩阵所指定的奇偶校验中的比特值始终是1。根据Hsiao码,校正子始终包含奇数个表示为1的比特。其结果与单个错误的情况相同。该结果表示至少包含一个错误;然而,在很多情况下难以确定存在单个错误还是多个错误。
当数据包含等于或者多于四个的偶数个错误时,根据扩展汉明码,由奇偶校验计算方法和奇偶校验矩阵所指定的奇偶校验中的比特值始终是0。根据Hsiao码,校正子始终包含偶数个表示为1的比特。其结果与两个错误的情况相同。
然而,在两个错误的情况中校正子从不表示为0,而在存在四个或者更多偶数个错误时,有时校正子能够表示为0。因此,就存在尽管包含错误但是没有检测到错误的风险。
第一实施例是假设将SEC-DED码用作ECC来进行解释的。在此所使用的SEC-DED是Hsiao码。然而,也能够使用扩展汉明码。还能够使用除了SEC-DED码之外的ECC。
返回对图1的解释,保护处理单元10通过对交叠(overlay)有ECC和用于存储器保护的信息的数据进行存储来实现存储器保护。由于使用了ECC,存储器保护的单位为32比特或者64比特,其等于ECC的单位。因此,是采用与传统技术相比更小的单位来保护存储器的。
保护处理单元10包括奇偶校验生成电路100、第一XOR电路102、访问密钥寄存器110、第二XOR电路120、校正子计算电路122和纠错电路124。
奇偶校验生成电路100生成用于通过存储器控制器30从处理器20获得的数据的奇偶校验,并将该奇偶校验加到数据上。访问密钥寄存器110中保留在处理器20中工作的进程所设定的访问密钥。访问密钥是访问存储器40的密钥。
工作在存储器保护装置1上的操作系统包括在多个程序之间进行切换的功能,以实现多程序。操作系统管理每个进程与其访问密钥之间的对应关系。访问密钥包含对于该进程而言唯一的值。换而言之,不同的进程具有不同的访问密钥。
第一XOR电路102计算包括由奇偶校验生成电路100所生成的奇偶校验的数据与在访问密钥寄存器110中所保留的访问密钥之间的XOR。然后第一XOR电路102将结果写入存储器40。换而言之,第一XOR电路102用作写入单元。
第二XOR电路120计算在存储器40中的数据与在访问密钥寄存器110中所保留的访问密钥之间的XOR。校正子计算电路122从第XOR电路120的计算结果中计算校正子。纠错电路124根据校正子计算电路122所计算的校正子的值根据需要来纠正错误。换而言之,纠错电路124用作输出确定单元。
存储器控制器30能够包含ECC电路。如果是该情况,则保护处理单元10不需要包含奇偶校验生成电路100、校正子计算电路122和纠错电路124。在存储器控制器30中的ECC电路用于取代它们。
参考图4解释将数据写入存储器40的过程。为了切换进程(在步骤S100为“是”),将切换后的访问密钥设定到访问密钥寄存器110(步骤S102)。
奇偶校验生成电路100生成奇偶校验并将其加到要写入存储器40中的数据上(步骤S104)。第一XOR电路102计算加上奇偶校验的数据与在访问密钥寄存器110中保留的访问密钥之间的XOR(步骤S106),并将所计算的数据写入到存储器40(步骤S108)。
如图5所示,当活动进程将数据D写入到存储器40时,ECC加上奇偶校验以生成带有奇偶校验的数据D′。
将等于带有奇偶校验的数据D′与由该进程写入到访问密钥寄存器110中的访问密钥Ka的XOR的值D′XOR Ka,即所存储数据D″写入到存储器40中。
参考图6解释将数据从存储器40读出的过程。为了切换进程(步骤S200为“是”),将切换后的访问密钥设定到访问密钥寄存器110(步骤S202)。
第二XOR电路120从存储器40读出所存储的数据D″(步骤S204),并计算所存储的数据D″与在访问密钥寄存器110中保留的访问密钥之间的XOR(步骤S206)。
校正子计算电路使用ECC计算校正子(步骤S208)。当校正子的值为0时,即当没有检测到错误时(步骤S210为“是”),读出数据D(步骤S212)。
当检测到一个错误时(步骤S210为“否”,步骤S214为“是”),即校正子的值不为0、校正子中表示为1的比特数量为奇数个并且校正子的值等于奇偶校验矩阵中任意行时,纠错电路124纠正错误(步骤S216)并且读出所纠正的数据D(步骤S212)。当检测到两个错误时(步骤S210为“否”,步骤S214为“否”),即当校正子的值不为0并且校正子中表示为1的比特数量为偶数时或者当校正子中表示为1的比特数量为奇数并且校正子的值不同于奇偶校验矩阵中任意行时,输出0数据而不是数据D(步骤S218)。
如图7所示,当活动进程从存储器40读出数据D时,计算等于所存储数据D″,即D′XOR Ka与该进程写入到访问密钥寄存器110中的访问密钥Kb之间XOR的值D″XOR Kb(=D′XOR Ka XOR Kb)。将ECC根据校正子计算电路122的计算结果而对其执行错误检测和纠错的值读出。
当写入和读出采用相同访问密钥(Ka=Kb)时,能够读出正确数据D。当写入和读出采用的访问密钥不同时(Ka≠Kb),从存储器40中读出的所存储数据D″包括与其中Ka XOR Kb等于1的比特数量相同数量的错误。在该情况下,纠错电路124输出0数据。
当读出和写入之间的访问密钥不同时,纠错电路124能够不输出数据而不是输出0数据。
访问密钥包括对于相应进程而言唯一的值。当特定进程试图读出由另一进程写入的数据时,根据第一实施例的存储器保护装置1保护该特定进程不被读出。采用该方式,存储器保护装置1保护数据不受其他进程影响。
多个进程能够共享单个访问密钥。通过共享访问密钥,进程能够共享数据并且能够保护该数据不受其他进程影响。
访问密钥能够是等于或者小于存储器中数据长度(n比特)与奇偶校验长度(m比特)总和(即n+m比特)的任意大小。
如上所述,存储器保护装置1防止未授权的进程读出数据,并保护了该数据,从而仅仅授权的进程能够写入该数据。更具体而言,在将数据写入存储器40之前,存储器保护装置1读出存储器40中的数据。存储器保护装置1取得控制,从而使得数据不能被写入到由于访问密钥不匹配从而该进程不能访问读出的地址中。这就通过小单位实现了写入访问的保护。
作为本发明的第二实施例,在存储器保护装置1中的保护处理单元10能够是安装在任意类型的系统LSI中而不是独立LSI芯片中的知识产权(IP)。
根据第二实施例的存储器保护装置1其他方面配置为与根据第一实施例的存储器保护装置1类似。
如图8所示,根据本发明的第三实施例的存储器保护装置800包括系统LSI 11和存储器40。系统LSI 11包括保护处理单元10、处理器20和存储器控制器30。
存储器控制器30转换处理器总线21与存储器40之间的协议。嵌入保护处理单元10以连接存储器控制器30与存储器40。保护处理单元10能够作为额外功能而嵌入到存储器控制器30中。
存储器保护装置800在其他方面配置为与根据第一实施例的存储器保护装置1类似。
如图9所示,根据本发明的第四实施例的存储器保护装置900包括处理器20、桥LSI 12和存储器40。桥LSI 12包括存储器控制器30和保护处理单元10。
桥LSI 12安装在处理器20与存储器40之间,并连接存储器40和处理器20。
存储器保护装置900在其他方面配置为与根据第一实施例的存储器保护装置1类似。
如图10所示,根据本发明的第五实施例的存储器保护装置1000包括处理器20、存储器控制器30和存储器芯片13。存储器芯片13包括保护处理单元10和存储器40。
由于保护处理单元10耦合到存储器40,因此存储器芯片13能够检测访问密钥的不一致,并防止数据被从存储器芯片13中读出。存储器芯片13能够包含ECC电路。如果是这样,则在存储器芯片13中的保护处理单元10不需要包含奇偶校验生成电路100、校正子计算电路122和纠错电路124。存储器控制器30中的ECC电路用于取代它们。
存储器保护装置1000在其他方面配置为与根据第一实施例的存储器保护装置1类似。
根据本发明的第六个实施例,单个进程能够包括多个访问密钥,并且多个进程能够共享单个密钥。
当需要与设定到访问密钥寄存器110的访问密钥不同的访问密钥时,将所需要的访问密钥设定到访问密钥寄存器110。更具体而言,例如,操作系统能够将所需要的访问密钥设定到访问密钥寄存器110。
根据第六实施例的存储器保护装置1在其他方面配置为与根据第一实施例的存储器保护装置1类似。
根据本发明的第七实施例,存储器保护装置1能够防止在多处理中的多个处理器之间的未授权访问。通过对每个处理器设定访问密钥能够防止来自未授权处理器的访问。
此外,存储器保护装置1能够防止进程和输入/输出(I/O)设备之间的未授权访问,或者在进程、处理器和I/O设备之间的未授权访问。
根据第七实施例的存储器保护装置1在其他方面配置为与根据第一实施例的存储器保护装置1类似。
如图11所示,根据本发明的第八实施例的存储器保护装置1100还包括写入访问密钥表112和写入允许单元114。
如图12所示,写入访问密钥表112将每个访问密钥与存储器起始地址号和存储器结束地址号相关联。写入允许单元114允许将数据写入到与从处理器20获得的访问密钥相关联的存储器起始地址号与存储器结束地址号之间的存储器区域中,并且禁止将数据写入到任何其他区域中。写入访问密钥表112优选地由操作系统生成并存储在保护处理单元10中。
存储器保护装置1100在其他方面配置为与根据第一实施例的存储器保护装置1类似。
如图13所示,根据本发明的第九实施例的存储器保护装置1300中的保护处理单元1310还包括读出访问密钥表116和访问密钥选择单元118。
如图14所示,读出访问密钥表116将每个访问密钥与存储器起始地址号相关联。当处理器20指定特定存储器起始地址号时,访问密钥选择单元118选择与该存储器起始地址号相关联的访问密钥,并将所选择的访问密钥设定到访问密钥寄存器110。读出访问密钥表116优选地由操作系统设定。
与根据第一实施例的存储器保护装置1相同,存储器保护装置1300保护数据免受未授权进程影响。此外,由于为每个存储器地址分配了唯一的访问密钥,因此能够通过存储器地址的预定单元来保护数据。
此外,由于访问密钥是对于每个存储器地址进行管理的,因此即使是在进程并不如同第六实施例中所述那样与访问密钥一一对应时,也能够防止未授权访问。
存储器保护装置1300在其他方面配置为与根据第一实施例的存储器保护装置1类似。
根据本发明的第十实施例的存储器保护装置1设定每个访问密钥,从而使得ECC能够检测到用与对其进行写入所使用的访问密钥不同的不正确访问密钥进行的读出。
为了通过ECC检测到用不正确访问密钥进行的读出,如下所述,选择访问密钥Ka和Kb,从而使得当使用访问密钥Kb读出使用任意访问密钥Ka写入的数据时,由D′XOR Ka XOR Kb计算得到的校正子始终检测为两个错误。能够被检测为单个错误的一对访问密钥并不合乎要求,因为单个错误是通过纠错电路124进行纠正的。
当使用Hsiao SEC-DED码时,当在校正子中表示为1的比特数为偶数并等于或者大于2时,检测到2个错误。选择访问密钥Ka和Kb,以使得在校正子中表示为1的比特数为偶数并等于或者大于2。
为了使通过D′XOR Ka XOR Kb计算得到的校正子始终被检测为两个错误,需要确定访问密钥Ka和Kb从而使得在从Ka XOR Kb计算得到的校正子中表示为1的比特数为偶数并等于或者大于2。
此外,为了使在从Ka XOR Kb计算得到的校正子中表示为1的比特数始终为偶数并等于或者大于2,需要满足以下两个条件。第一个条件是要选择Ka和Kb从而使得从访问密钥Ka计算得到的校正子不同于从访问密钥Kb计算得到的校正子。第二个条件是从各个访问密钥计算得到的校正子中表示为1的比特数固定为偶数或者奇数。
例如,当将8个比特数据加入到64比特数据中并根据条件选择访问密钥时,每次能够存在的访问密钥的数量等于能够用8个比特表示并包括偶数个(或者奇数个)表示为1的比特的校正子的数量,即128。
单个访问密钥能够为72(64+8)比特。每次在2的72次方个访问密钥中满足校正子的条件的访问密钥有128个。
根据本发明的第十实施例的存储器保护装置1在其他方面配置为与根据第一实施例的存储器保护装置1类似。
根据本发明的第十一实施例的存储器保护装置1设定防止存储器40中的数据被不适当读出的访问密钥。根据其他实施例,存储器保护装置1中存储了通过XOR进行交迭(overlap)的用于ECC的信息和用于保护存储器40的信息。因此,只要用正确的访问密钥来读出数据,通常就执行根据ECC的检错和纠错,其中,纠正单个错误并查出两个错误。
然而,当使用与写入数据时所使用的访问密钥不同的不正确的访问密钥对数据进行读出并且同时在存储器中发生了一个或者两个错误时,能够读出数据,就好像使用正确密钥进行读出或者好像检测出单个错误。在该情况下,数据能够被不适当地读出。
为了避免这种风险,选择访问密钥使得任意两个访问密钥之间的汉明距离等于或者大于4。汉明距离是两个值之间的不同比特的数量。如第十实施例中所述,必须确定访问密钥Ka和Kb以使得在从KaXOR Kb计算得到的校正子中表示为1的比特数为偶数并等于或者大于2。
根据该条件,汉明距离能够为2。然而,如果汉明距离为2并且在存储器中发生单个错误,则能够纠正单个错误并检测出另一个错误。在该情况下,不希望的是所检测出的单个错误被纠正并将数据输出。因此,汉明距离必须等于或者大于4。
总结所述条件,选择合乎要求的访问密钥以使得从各个访问密钥计算得到的校正子不同,从各个访问密钥计算得到的校正子中表示为1的比特数固定为偶数或者奇数,并且两个密钥之间的汉明距离等于或者大于4。
当汉明距离等于或者大于4时,使用不同访问密钥读出的数据始终包括至少4个错误。即使是发生一个或者两个错误,在数据中至少检测到两个错误。这就避免了未授权进程通过对单个错误的不适当纠正来读出正确的数据。
参考图15描述了根据以上所述的条件选择访问密钥的一种方法。给出的说明是假设存储器访问的单位是64比特,使用了HsiaoSEC-DED码,并且将8比特的奇偶校验加到64比特的数据上。该方法应用到对不同大小的存储器进行访问并使用另一种ECC方法的其他情况。
将57比特的数准备为访问密钥的种子。选择该数以使得同时存在的多个密钥相互不同。该数是根据需要由计数器等生成的。
另外,能够通过生成随机数并在这些随机数中选择唯一的数来选择该数。能够将该57比特分为多个区域,并且随机数或者计数器能够用于选择在每个区域中的值。所期望的是,基于安全考虑,将该数作为尽可能接近随机数来使用。
将根据SEC-DED码的奇偶校验加到57比特的值上。由于SEC-DED码的特性,这样就在64比特的值之间提供了等于或者大于4的汉明距离,所述64比特的值每个都包括不同的57比特值加上7比特的奇偶校验。7比特的奇偶校验在64比特值中的位置是预先确定的。奇偶校验不必一定是最后7位。
当将64比特值写入到存储器40时,加上8比特的奇偶校验。计算8比特的奇偶校验并将其加到该64比特值上,生成72比特值。从该72比特值中计算得到的校正子为0。
确定期望与访问密钥相对应的校正子。如上所述,在8比特的奇偶校验的情况下,从128个数中选择有效访问密钥,所述128个数中每个包括偶数个(或者奇数个)表示为1的比特。访问密钥的校正子必须不同于任何其他访问密钥的校正子。为了选择生成唯一的校正子的访问密钥,期望使用表等来管理访问密钥。
根据Hsiao SEC-DED码,在与奇偶校验比特位置相对应的奇偶校验矩阵中,列矢量在单一行中为1而在其他行中为0。换而言之,在8比特奇偶校验中的每个比特与8比特的校正子中的每个比特一一对应。
对奇偶校验中的单个比特的转换使校正子中的相应的比特发生转换。因此,计算在72比特值中的奇偶校验和所期望的访问密钥的XOR,并将其嵌入到72比特值的奇偶校验区域中。采用该方式生成的访问密钥的校正子满足所述条件。
根据第十一实施例的存储器保护装置1在其他方面配置为与根据第一实施例的存储器保护装置1类似。
如图16所示,根据本发明的第十二实施例的存储器保护装置1600中的保护处理单元1610还包括数据编辑单元104。
如上所述,通过在存储器40中存储奇偶校验与访问密钥的XOR,能够防止来自其他进程的访问。然而,存在的风险是,由于存储器错误能够将两个错误检测为三个错误(或者一个错误)并能够纠正该数据并将其输出。如果是该情况,则不能读出正确数据。然而,所读出的数据包括部分正确的数据。
存储器保护装置1600中存储了采用在部分正确的数据被读出时可对其进行管理的形式的数据。
如图17所示,数据编辑单元104采用4个比特a、b、c和d来表示单个比特x。换而言之,用四个字来表示单比特值。在此的字定义为ECC的单位。当存储器40包括以64比特为单位的ECC时,单个字包括64比特。
任何单个比特值被选择作为a、b、c和d中的每一个,从而使得其对于要被记录的比特值x满足x=a XOR b XOR c XOR d。期望这4个值是尽可能无规律地随机进行选择的。
所选择的a、b、c和d存储在不同的字中。在图17中,将所述值存储在字W1、W2、W3和W4中。
值a和b存储在比特位置xi中。值c和d存储在比特位置xi-1中。
在字W1和W2中将a和b记录在比特位置xi中的同时,将0记录在字W3的xi中,将1记录在字W4的xi中。
类似的,将0记录在字W1的xi-1中,将1记录在字W2的xi-1中。
例如,当在比特位置xi发生永久故障时,可能存在存储器错误,即,从任意一个表示为0和1的字中读出值1。
在该情况下,当将一个比特划分为4个单个比特值a、b、c和d并且将每个值记录在比特位置xi和xi-1中的一个中时,字W3的比特位置xi中的0转换为1,并在字W3中检测到一个错误。因此,不能检测到值c,并且由此,不能获得能采用c通过XOR进行计算得到的比特值x。即使是当不论存储器错误如何而读出正确的数据时,重建所记录数据的可能性将进一步降低。采用该方式,存储器保护装置1600降低了读出所有4个字的可能性。
这4个比特a、b、c和d的排列并不局限于第十二实施例。比特位置仅仅需要满足以下条件。所有的4个比特具有不同的值,并且4个比特中至少一个位于不同的比特位置中。此外,0和1中任意一个记录在与另一字中的另一比特值相同的比特位置中。
此外,两个比特位置不必须相邻,4个字不必须连续。
存储器保护装置1600在其他方面配置为与根据第一实施例的存储器保护装置1类似。
访问密钥由根据本发明的第十三实施例的存储器保护装置1800中保护处理单元生成。
如图18所示,根据本发明的第十三实施例的存储器保护装置1800中的保护处理单元1810还包括访问密钥生成单元130和访问密钥管理表132,其中访问密钥生成单元130生成访问密钥,访问密钥管理表132保留由访问密钥生成单元130所生成的访问密钥。
访问密钥生成单元130通过存储器控制器30从处理器20获得生成新访问密钥的指令。在获得该指令后,访问密钥生成单元130生成随机数,并根据该随机数生成访问密钥。优选地采用第十和第十一实施例中的任意一个中所描述的方法来生成访问密钥。为了防止使用与已有访问密钥相同的访问密钥,访问密钥生成单元130生成与在访问密钥管理表132中所保留的任意一个访问密钥不相同的访问密钥。
访问密钥生成单元130将所生成的访问密钥通过存储器控制器30返回到处理器20,并同时将其注册到访问密钥管理表132。处理器20采用所获得的访问密钥访问存储器40。
存储器保护装置1800在其他方面配置为与根据第一实施例的存储器保护装置1类似。
当访问密钥返回到处理器20时,由处理器操作系统来管理该访问密钥,并且应用程序能够找到该访问密钥。为了避免这种风险,根据本发明的第十四实施例的存储器保护装置1返回标识相应访问密钥的访问密钥标识(ID),而不是返回访问密钥本身。
根据第十四实施例的存储器保护装置1800中的保护处理单元1810包括将访问密钥与访问密钥ID关联的访问密钥ID表。保护处理单元1810使用访问密钥ID表来根据访问密钥ID识别访问密钥,并将访问密钥设定到访问密钥寄存器110。由于处理器20上的软件不能识别访问密钥的真实值,因此这就提高了数据的安全性。
此外,访问密钥ID表能够采用特定的访问密钥而被存储在存储器40中。这就防止了进程查询访问密钥ID表,除非该进程具有特定的ID表,从而提高了安全性。优选的是,特定访问密钥能够由保护处理单元1810单独查询,并不能够被其他进程使用。
根据第十四实施例的存储器保护装置1800在其他方面配置为与根据第十三实施例的存储器保护装置1800类似。
如第十实施例中所述,将8比特的奇偶校验加到64比特的数据上,有效访问密钥的最大数量为128。根据本发明的第十五实施例的存储器保护装置1合并多个访问密钥,以在不改变存储器中数据宽度的情况下增加有效密钥数。
很多处理器包括缓存存储器,并一次从缓存存储器读出多个字。例如,假设缓存线大小为256比特,处理器顺序地从缓存存储器读出4个64比特字。
换而言之,缓存存储器中的数据是以256比特为单位切分并按单位读出的。将4个访问密钥分配给被顺序地读出的4个字。根据第十五实施例的存储器保护装置1提供了控制,从而使得如果访问密钥即使与4个字中的一个不一致,就不读出4个字中的任一个。这就像使用了128的4次方个访问密钥,从而实现了良好的效果。
根据第十四实施例的存储器保护装置1在其他方面配置为与根据第一实施例的存储器保护装置1类似。
本领域技术人员将容易得到其他优点和修改。因此,本发明在其广泛的各个方面内并不局限于在此所示和所述的特定细节和代表性实施例。因此,在不脱离由所附权利要求及其等同所定义的普遍发明性概念的精神和范围的情况下可以进行各种修改。
权利要求
1.一种用于保护存储器的装置,包括奇偶校验生成器,其生成要写入所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,其将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器读出的所述请求源在所述访问密钥寄存器中设定所述访问密钥;校正子计算器,其从所述第三数据计算校正子;以及确定单元,其根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
2.如权利要求1所述的装置,还包括获取单元,其从所述请求源获取生成所述访问密钥的指令;密钥生成器,其在获取所述指令后,生成对于所述请求源而言唯一的所述访问密钥;以及密钥发送单元,其将所生成的访问密钥发送到所述请求源。
3.如权利要求2所述的装置,其中所述密钥生成器生成满足以下条件的所述访问密钥即使当从所述第二数据、要生成的访问密钥与任意一个已有访问密钥之间的XOR计算所述校正子时,校正子也被检测为两个错误。
4.如权利要求3所述的装置,其中所述密钥生成器生成所述访问密钥,以使得要生成的访问密钥与任意一个已有访问密钥之间的汉明距离等于或者大于4。
5.如权利要求2所述的装置,其中所述密钥生成器为与所述请求源访问所述存储器的单位相对应的多个字中的每一个生成所述访问密钥。
6.如权利要求1所述的装置,还包括写入访问密钥表,其存储与所述访问密钥相关联的所述存储器的存储器地址区域;以及写入允许单元,其允许将所述第三数据写入到在所述写入访问密钥表中、与所述访问密钥相关联的存储器地址区域中,所述访问密钥由所述请求源设定,其中所述写入单元将所述第三数据写入到允许将所述第三数据写入到其中的存储器地址区域中。
7.如权利要求1所述的装置,还包括读出访问密钥表,其存储与所述访问密钥相关联的所述存储器的存储器地址;以及密钥选择单元,其在接收到来自所述请求源的所述存储器地址的指定时,从所述读出访问密钥表中选择与所指定的存储器地址相关联的所述访问密钥,其中所述访问密钥寄存器保存所选择的访问密钥。
8.如权利要求1所述的装置,还包括生成数据的数据编辑单元,所述数据通过4比特数据的XOR来表示要写入到所述存储器的单个比特数据,将所述4比特中的每一个放置在不同的字中,将第一比特和第二比特放置在第一比特位置中,将第三比特和第四比特放置在第二比特位置中,分别将0和1放置在包含所述第一比特和所述第二比特的所述字的所述第二比特位置中,以及分别将0和1放置在包含所述第三比特和所述第四比特的所述字的所述第一比特位置中,其中所述奇偶校验生成器为由所述数据编辑单元所获得的每个所述字生成奇偶校验。
9.如权利要求1所述的装置,其中所述第二操作单元在获取来自所述请求源的写入所述第一数据的请求时,执行所述访问密钥与所述第三数据之间的XOR操作;以及当所述确定单元根据所计算的校正子确定将所述第三数据作为所述第一数据输出时,所述奇偶校验生成器为所述第一数据生成所述奇偶校验。
10.如权利要求1所述的装置,其中所述请求源是处理器和进程中的一个。
11.一种用于保护存储器的系统,所述系统包括处理器;存储器控制器;以及保护外部存储器的存储器保护装置,其中所述存储器保护装置包括奇偶校验生成器,其生成要写入到所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,其将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器读出的所述请求源在所述访问密钥寄存器中设定所述访问密钥;校正子计算器,其从所述第三数据计算校正子;以及确定单元,其根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
12.一种用于保护存储器的系统,所述系统包括存储器控制器;以及保护外部存储器的存储器保护装置,其中所述存储器保护装置包括奇偶校验生成器,其生成要写入到所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,其将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器读出的所述请求源在所述访问密钥寄存器中设定所述访问密钥;校正子计算器,其从所述第三数据计算校正子;以及确定单元,其根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
13.一种用于保护存储器的系统,所述系统包括存储器;以及保护所述存储器的存储器保护装置,其中所述存储器保护装置包括奇偶校验生成器,其生成要写入到所述存储器的第一数据的奇偶校验;奇偶校验加法器,其通过将所述奇偶校验加入到所述第一数据来获得第二数据;访问密钥寄存器,其保存对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;第一操作单元,其通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;写入单元,其将所述第三数据写入所述存储器;第二操作单元,其通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器读出的所述请求源在所述访问密钥寄存器中设定所述访问密钥;校正子计算器,其从所述第三数据计算校正子;以及确定单元,其根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
14.一种保护存储器的方法,其包括生成要写入到所述存储器的第一数据的奇偶校验;通过将所述奇偶校验加入到所述第一数据来获得第二数据;在访问密钥寄存器中设定对于请求将数据写入所述存储器或者将数据从所述存储器中读出的请求源而言唯一的访问密钥,由所述请求源设定所述访问密钥,并且所述访问密钥用于访问所述存储器;通过计算所述第二数据和所述访问密钥之间的XOR来获得第三数据,由请求将数据写入所述存储器的所述请求源在所述访问密钥寄存器中设定所述访问密钥;将所述第三数据写入所述存储器;通过计算所述访问密钥和所述第三数据之间的XOR来获得第四数据,由请求将数据从所述存储器中读出的所述请求源在所述访问密钥寄存器中设定所述访问密钥;从所述第三数据计算校正子;以及根据所计算的校正子确定是否将所述第三数据作为所述第一数据输出。
15.如权利要求14所述的方法,还包括从所述请求源获取生成所述访问密钥的指令;在获得所述指令时,生成对于所述请求源而言唯一的所述访问密钥;以及将所生成的访问密钥发送到所述请求源。
16.如权利要求14所述的方法,还包括允许将所述第三数据写入到与在写入访问密钥表中的、与由所述请求源所设定的访问密钥相关联的存储器地址区域中,所述写入访问密钥表存储与所述访问密钥相关联的所述存储器的存储器地址区域;以及将所述第三数据写入到允许将所述第三数据写入到其中的存储器地址区域中。
17.如权利要求14所述的方法,还包括在接收到来自所述请求源的存储器地址的指定时,从写入访问密钥表中选择与所指定的存储器地址相关联的访问密钥,所述写入访问密钥表保存了与所述访问密钥相关联的所述存储器的存储器地址;以及保存所选择的访问密钥。
18.如权利要求14所述的方法,还包括生成数据,所述数据通过4比特数据的XOR来表示要写入到所述存储器的单个比特数据,将所述4比特中的每一个放置在不同的字中,将第一比特和第二比特放置在第一比特位置中,将第三比特和第四比特放置在第二比特位置中,分别将0和1放置在包含所述第一比特和所述第二比特的所述字的所述第二比特位置中,以及分别将0和1放置在包含所述第三比特和所述第四比特的所述字的所述第一比特位置中,以及为每个所生成的字生成所述奇偶校验。
19.如权利要求14所述的方法,还包括在获取来自所述请求源的写入所述第一数据的请求时,执行所述访问密钥与所述第三数据之间的XOR操作;以及当所述确定单元根据所计算的校正子确定将所述第三数据作为所述第一数据输出时,为所述第一数据生成所述奇偶校验。
20.如权利要求14所述的方法,其中所述请求源是处理器和进程中的一个。
全文摘要
奇偶校验加法器通过将要写入到存储器的第一数据的奇偶校验加入到第一数据中来获得第二数据。访问密钥寄存器保存对于请求源而言唯一的访问密钥。第一操作单元,其通过计算第二数据和访问密钥之间的XOR来获得第三数据,由请求将数据写入存储器的请求源设定所述访问密钥。第二操作单元通过计算访问密钥和第三数据之间的XOR来获得第四数据。校正子计算器从第三数据计算校正子。确定单元根据所计算的校正子确定是否将第三数据作为所述第一数据输出。
文档编号G06F12/14GK1975697SQ200610160469
公开日2007年6月6日 申请日期2006年11月28日 优先权日2005年11月28日
发明者金井达德 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1