CN111061591B - 基于存储器完整性检查控制器实现数据完整性检查的系统和方法 - Google Patents

基于存储器完整性检查控制器实现数据完整性检查的系统和方法 Download PDF

Info

Publication number
CN111061591B
CN111061591B CN201911121342.8A CN201911121342A CN111061591B CN 111061591 B CN111061591 B CN 111061591B CN 201911121342 A CN201911121342 A CN 201911121342A CN 111061591 B CN111061591 B CN 111061591B
Authority
CN
China
Prior art keywords
memory
page
check code
check
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911121342.8A
Other languages
English (en)
Other versions
CN111061591A (zh
Inventor
马鹏
梅冰清
刘佩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 32 Research Institute
Original Assignee
CETC 32 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 32 Research Institute filed Critical CETC 32 Research Institute
Priority to CN201911121342.8A priority Critical patent/CN111061591B/zh
Publication of CN111061591A publication Critical patent/CN111061591A/zh
Application granted granted Critical
Publication of CN111061591B publication Critical patent/CN111061591B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

基于存储器完整性检查控制器实现数据完整性检查的系统和方法,包括:步骤M1:主存储器数据的完整性检查以页为单位,页大小固定为预设值;步骤M2:每个存储器页都有一个属性,整个存储器的页属性存储在存储器中;步骤M3:根据页属性生成相应的校验码,存储在存储器的页属性校验码区域;步骤M4:数据载入存储器时生成的校验码存储在存储器中的校验码存储区域;步骤M5:根据存储器数据的地址获取存储器页属性,重新生成校验码,并与缓存在存储器校验码区域中相应页的校验码比较,执行存储器数据完整性检查。本发明通过专用硬件逻辑实现存储器数据完整性的检查,几乎不增加中央处理器的负载。

Description

基于存储器完整性检查控制器实现数据完整性检查的系统和 方法
技术领域
本发明涉及数据完整性保护,具体地,涉及一种基于硬件实现存储器数据完整性检查的方法,高安全嵌入式计算机的存储器控制器硬件实现,尤其涉及一种基于存储器完整性检查控制器实现数据完整性检查的系统和方法。
背景技术
计算机的基本组成单元包括:中央处理器(即CPU)、存储器、输入设备和输出设备,其组成结构框图见图1所示。程序的代码和数据缓存在主存储器(即内存)中,中央处理器从主存储器读取程序的代码并执行,从而实现程序的预期操作。如果主存储器中的程序代码和数据被破坏,则中央处理器在执行程序代码时,执行操作的动作序列不可预期,最终不能实现程序的预期操作结果。
程序的代码和数据从硬盘载入到主存储器,或者通过网络传输到主存储器,这个过程可能因硬件故障等原因,导致缓存在主存储器中的程序数据完整性被破坏。此外,计算机感染病毒,病毒程序可能恶意篡改、破坏内存中的程序代码。为此,在一些高安全性要求的计算机中,需要有检查存储器数据完整性的设施。
最常用的方法是软件方法,即开发一个检查存储器数据完整性程序A,程序A为被检查的程序B计算生成一个校验码X。在程序B以及程序B的校验码X载入主存储器后,由程序A为程序B计算生成一个校验码X’,如果当前计算生成的校验码X’和预先载入的校验码X相等,则表示存储器中的程序B数据完整性正确,处理器可以执行程序B的代码。否则表示程序B的数据完整性被破坏。
针对大多数应用场景,软件方法都是适用的。但软件方法会增加了CPU的负载。执行存储器数据完整性检查时,CPU首先读取存储器中的数据,然后计算校验码,最后与预期的校验码比较,从而判断存储器中的数据是否被破环。这个计算过程需要占用CPU的较大计算和访存能力。。
在一些安全性要求较高的场合,例如面向服务器板卡管理控制的BMC控制器,其在刷新服务器的BIOS时,服务器的BIOS程序暂存在BMC的主存储器中,如果BIOS数据被破坏,则服务器将无法正常启动。基于安全的考虑,在BMC主存储器中的BIOS程序在任何时刻都不能破坏数据完整性。如果用软件方式实现存储器数据完整性检查,则BMC控制器的处理器核心负载太重。因此,在这样的场合一般是用专用硬件来实现存储器数据完整性检查。硬件实现存储器数据完整性检查的专利较少,只有一些公开发表的论文,例如论文“HardwareMechanisms for Memory Integrity Checking”介绍了一种检查存储器数据完整性的方法和硬件实现方案,该文主要从优化HASH值(用作校验码)的计算着手。
针对服务器板卡管理控制器BMC的高安全、高可靠要求,需要一种实时检查存储器数据完整性的方法和设施。本技术针对存储器数据完整性实时检查的需求,提出了硬件实现完整性检查的方法和逻辑设计方案。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种实现存储器数据完整性检查的系统和方法。
根据本发明提供的一种存储器完整性检查控制器,包括:存储器完整性检查控制器与CPU核心、DMA控制器一样,作为片上总线的主设备,主动访问主存储器;
存储器完整性检查控制器包括:配置接口、AXI总线接口、DMA控制器、两块缓存单元和异或/加运算的运算单元;
所述配置接口:用于访问存储器完整性检查控制器内部的可编程寄存器,包括页属性基地址寄存器和页校验码基地址寄存器,按APB总线规范设计;
所述AXI总线接口:是一个AXI主设备接口,在AXI总线上发起存储器读写操作;
所述DMA控制器:主动读写存储器;
所述两块缓存单元:缓存从存储器中读出的数据;
所述异或/加运算的运算单元:对缓存中的数据执行异或运算或加运算,具体的运算规则通过配置寄存器控制。
根据本发明提供的一种基于存储器完整性检查控制器实现数据完整性检查的方法,运用上述存储器完整性检查控制器,包括:
步骤M1:主存储器数据的完整性检查以页为单位,页大小固定为预设值;
步骤M2:每个存储器页都有一个属性,存储器完整性检查控制器根据属性值执行页的数据的完整性检查,整个存储器的页属性存储在存储器中;
步骤M3:数据载入存储器时,启动存储器完整性检查控制器,为受保护的存储器页生成校验码,存储在存储器的页属性校验码区域;
步骤M4:数据载入存储器时生成的校验码存储在存储器中的校验码存储区域;
步骤M5:根据存储器数据的地址获取存储器页属性,重新生成校验码,并与缓存在存储器校验码区域中相应页的校验码比较,执行存储器数据完整性检查。
优选地,所述步骤M2包括:
每个页的属性是两位,页属性包括:跳过模式、ECC模式、调试模式和MIC模式;
跳过模式:存储器完整性检查控制器不需要对页执行数据完整性检查;
ECC模式:存储器完整性检查控制器需要对页执行完整性检查,且对出现的一位错误纠错;两位及以上的错误报告中断事件;
调试模式:存储器完整性检查控制器用于调试,选择ECC模式或MIC模式;
MIC模式:存储器完整性检查控制器对页执行数据完整性检查,出现错误时以中断事件报告;
MIC模式代表只做存储器数据完整性检查;
ECC模式代表既做检查,也做一位错误情况下的纠错操作。
优选地,所述步骤M2包括:
整个存储器的页属性存储的存储器的基地址由存储器完整性检查控制器中的页属性基地址寄存器指定,页属性存储器区域的基地址页边界对齐的。
优选地,所述步骤M3包括:
步骤M3.1:页属性为ECC模块,按ECC码生成方式,为每个页生成ECC校验码;每个预设大小的页,将生成预设位的ECC校验码,以字为单位,存储在存储器的页属性校验码区域;
步骤M3.2:页属性为MIC模式,以字为单位,将所有的字累加,从而生成校验码;每个预设大小的页,将生成预设位的MIC校验码,以字为单位,存储在存储器的页属性校验码区域。
优选地,所述步骤M5包括:
步骤M5.1:页属性为ECC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的ECC校验码,并与数据载入时生成的ECC校验码比较,数据载入时生成的ECC校验码存储在校验码存储区域;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值相等时,则认为数据完整;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值不等时,则将重新计算的ECC校验码和存储在存储器的页属性校验码区域的ECC码进行异或运算,根据运算结果确定是一位错,还是一位以上的错误,当是一位错误,则纠正一位错误;当是一位以上的错误,则产生中断事件,由管理软件决定如何进行数据完整性保护和修复;
步骤M5.2:页属性为MIC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的MIC校验码,并与数据载入时生成的MIC校验码比较,数据载入时生成的MIC校验码存储在校验码存储区域;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值相等时,则认为存储器中的页数据是完整的;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值不等时,将以中断的形式报告给处理器,由管理软件决定修复方法。
根据本发明提供的一种基于存储器完整性检查控制器实现数据完整性检查的系统,运用上述存储器完整性检查控制器,包括:
模块M1:主存储器数据的完整性检查以页为单位,页大小固定为预设值;
模块M2:每个存储器页都有一个属性,令存储器完整性检查控制器根据属性值执行页的数据的完整性检查,整个存储器的页属性存储在存储器中;
模块M3:数据载入存储器时,令存储器完整性检查控制器为受保护的存储器页生成校验码,存储在存储器的页属性校验码区域;
模块M4:数据载入存储器时生成的校验码存储在存储器中的校验码存储区域;
模块M5:根据存储器数据的地址获取存储器页属性,重新生成校验码,并与缓存在存储器校验码区域中相应页的校验码比较,执行存储器数据完整性检查。
优选地,所述模块M2包括:
每个页的属性是两位,页属性包括:跳过模式、ECC模式、调试模式和MIC模式;
跳过模式:存储器完整性检查控制器不需要对页执行数据完整性检查;
ECC模式:存储器完整性检查控制器需要对页执行完整性检查,且对出现的一位错误纠错;两位及以上的错误报告中断事件;
调试模式:存储器完整性检查控制器用于调试,选择ECC模式或MIC模式;
MIC模式:存储器完整性检查控制器对页执行数据完整性检查,出现错误时以中断事件报告;
MIC模式代表只做存储器数据完整性检查;
ECC模式代表既做检查,也做一位错误情况下的纠错操作。
优选地,所述模块M2包括:
令存储器完整性检查控制器中的页属性基地址寄存器指定整个存储器的页属性存储的存储器的基地址,页属性存储器区域的基地址页边界对齐的。
优选地,所述模块M3包括:
模块M3.1:页属性为ECC模块,按ECC码生成方式,为每个页生成ECC校验码;每个预设大小的页,将生成预设位的ECC校验码,以字为单位,存储在存储器的页属性校验码区域;
模块M3.2:页属性为MIC模式,以字为单位,将所有的字累加,从而生成校验码;每个预设大小的页,将生成预设位的MIC校验码,以字为单位,存储在存储器的页属性校验码区域。
优选地,所述模块M5包括:
模块M5.1:页属性为ECC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的ECC校验码,并与数据载入时生成的ECC校验码比较,数据载入时生成的ECC校验码存储在校验码存储区域;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值相等时,则认为数据完整;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值不等时,则将重新计算的ECC校验码和存储在存储器的页属性校验码区域的ECC码进行异或运算,根据运算结果确定是一位错,还是一位以上的错误,当是一位错误,则纠正一位错误;当是一位以上的错误,则产生中断事件,由管理软件决定如何进行数据完整性保护和修复;
模块M5.2:页属性为MIC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的MIC校验码,并与数据载入时生成的MIC校验码比较,数据载入时生成的MIC校验码存储在校验码存储区域;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值相等时,则认为存储器中的页数据是完整的;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值不等时,将以中断的形式报告给处理器,由管理软件决定修复方法。
与现有技术相比,本发明具有如下的有益效果:
1、通过专用硬件逻辑实现存储器数据完整性的检查,几乎不增加中央处理器的负载;
2、存储器完整性检查控制器具有多种功能,除了可以执行存储器数据完整性检查外,还可以作为异或运算的加速引擎使用,或作为DMA控制器使用;
3、具备对4KB大小存储器页的ECC检错纠错功能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为计算机组成结构框图;
图2为存储器数据完整性检查控制器在系统中的逻辑位置示意图;
图3为页属性组织结构;
图4为页校验码在存储器中的组织;
图5为页的逻辑组织结构;
图6为BMC控制器的结构框图;
图7为存储器完整性检查控制器结构框图;
图7中,BUF用于缓存读入的页数据;BUFB表示缓存的ECC校验码或MIC校验码中间计算结果。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
当操作系统或应用程序载入数据到存储器中时,如果需要对相应数据进行数据完整性检查与保护,则根据数据在存储器中所占的页,及保护属性,启动存储器完整性检查控制器,生成校验码,并把页属性信息更新到页属性存储区域,将生成的校验码更新到校验码存储器中。图2展示了存储器完整性检查控制器在系统中的逻辑位置,存储器完整性检查控制器与CPU核心、DMA控制器一样,作为片上总线的主设备,可以主动访问主存储器。
图5为存储器完整性检查控制器结构框图,存储器完整性检查控制器有有两个对外的接口:(1)配置接口:用于访问存储器完整性检查控制器内部的可编程寄存器,包括页属性基地址寄存器、页校验码基地址寄存器等,按APB总线规范设计;(2)AXI总线接口:是一个AXI主设备接口,可以在AXI总线上发起存储器读写操作。在存储器完整性检查控制器内部,有一个DMA控制器,可以主动去读写存储器。在存储器完整性检查控制器内部,还有两块缓存,缓存从存储器中读出的数据。此外,存储器完整性检查控制器中,还有一个异或/加运算的运算单元。可以对缓存中的数据执行异或运算或加运算,具体的运算规则可以通过配置寄存器控制。上述存储器完整性检查控制器已经在一款BMC控制器中以一个独立的模块逻辑实现。
存储器完整性检查控制器具有多种功能,除了可以执行存储器数据完整性检查外,还可以作为异或运算的加速引擎使用,或作为DMA控制器使用;具体使用方法,由实现存储器完整性检查控制器的具体逻辑电路决定。
BMC控制器的结构框图如图6所示,BMC控制器的主存储器是512MB DDR存储器。CPU核、存储器完整性检查控制器、通用DMA控制器、专用DMA控制器、LPC桥、PCIe桥等主设备均可以产生访问DDR存储器的读写事务。
根据本发明提供的一种存储器完整性检查控制器,存储器完整性检查控制器的结构框图如图7所示,包括:存储器完整性检查控制器与CPU核心、DMA控制器一样,作为片上总线的主设备,主动访问主存储器;
存储器完整性检查控制器包括:存储器完整性检查控制器有两个对外的接口:配置接口:用于访问存储器完整性检查控制器内部的可编程寄存器,包括页属性基地址寄存器、页校验码基地址寄存器等,按APB总线规范设计;AXI总线接口:是一个AXI主设备接口,可以在AXI总线上发起存储器读写操作。
存储器完整性检查控制器内部有一个DMA控制器,可以主动去读写存储器。在存储器完整性检查控制器内部,还有两块缓存,缓存从存储器中读出的数据。此外,存储器完整性检查控制器中,还有一个异或/加运算的运算单元。可以对缓存中的数据执行异或运算或加运算,具体的运算规则可以通过配置寄存器控制。上述存储器完整性检查控制器已经在一款BMC控制器中以一个独立的模块逻辑实现。
根据本发明提供的一种基于存储器完整性检查控制器实现数据完整性检查的方法,运用上述存储器完整性检查控制器,包括:
步骤M1:主存储器数据的完整性检查以页为单位,页大小固定为4KB;
页是对存储器空间划分的单位,4KB大小的存储空间为1页,与计算机的存储管理单元MMU所说的页概念相似。
步骤M2:每个存储器页都有一个属性,存储器完整性检查控制器根据这个属性值执行页的数据的保护检查,整个存储器的页属性存储在存储器中;
具体地,所述步骤M2包括:
每个页的属性是两位,页属性包括:跳过模式、ECC模式、调试模式和MIC模式;
跳过模式:存储器完整性检查控制器不需要对页执行数据完整性检查;
ECC模式:存储器完整性检查控制器需要对页执行完整性检查,且对出现的一位错误纠错;两位及以上的错误报告中断事件;
调试模式:存储器完整性检查控制器用于调试,选择ECC模式或MIC模式;
MIC模式:存储器完整性检查控制器对页执行数据完整性检查,出现错误时以中断事件报告;
MIC模式代表只做存储器数据完整性检查;
ECC模式代表既做检查,也做一位错误情况下的纠错操作。
存储器可以用ECC模式生成ECC校验码生成算法生成校验码,也可以用累加算法生成MIC模式的校验码,在调试模式,用户可以自定义校验码生成算法。
更为具体地,所述步骤M2包括:
整个存储器的页属性存储的存储器的基地址由存储器完整性检查控制器中的页属性基地址寄存器指定,页属性存储器区域的基地址页边界对齐的。
步骤M3:数据载入存储器时,启动存储器完整性检查控制器,为受保护的存储器页生成校验码,存储在存储器的页属性校验码区域;
具体地,所述步骤M3包括:
步骤M3.1:页属性为ECC模块,按ECC码生成方式,为每个页生成ECC校验码;每个4KB大小的页,将生成22位的ECC校验码,以字(32位)为单位,存储在存储器的页属性校验码区域;见图4所示,校验码基地址由存储器完整性检查控制器的寄存器指定,校验码存储器区域的基地址必须是也边界对齐的。
存储器的数据逻辑结构如图3所示,生成ECC码的规则是:
Figure BDA0002275545260000091
步骤M3.2:页属性为MIC模式,以字为单位,将所有的字累加,从而生成校验码;即:
MIC={BYTE3,BYTE2,BYTE1,BYTE0}+
{BYTE7,BYTE6,BYTE5,BYTE4}+
{BYTE4095,BYTE4094,BYTE4093,BYTE4092}。
每个4KB大小的页,将生成32位的MIC校验码,以字(32位)为单位,存储在存储器的页属性校验码区域。见图4所示,存放校验码的存储区域必须是页边界对齐,其基地址由存储器完整性检查控制器的寄存器指定,校验码存储器区域的基地址必须是页边界对齐的。
步骤M4:数据载入存储器时生成的校验码存储在存储器中的校验码存储区域;
数据是指将载入到存储器中的程序或数据,载入的源头可以是网络、硬盘、U盘等,例如从网络下载一个BIOS程序,暂存在内存中,这个过程就是本文所说的数据载入存储器。
步骤M5:根据存储器数据的地址获取存储器页属性,重新生成校验码,并与缓存在存储器校验码区域中相应页的校验码比较,执行存储器数据完整性检查。
具体地,所述步骤M5包括:
数据在存储器中后,可能会被破坏,例如宇宙射线引起的单粒子事件、病毒程序的恶意破坏等。因此,需要定时检查存储器数据的完整性,或使用存储器数据之前,先检查一下存储器数据的完整性。检查的过程,就是重新计算校验码,并与缓存在存储器中的校验码比较,从而判断数据是否被破坏。
步骤M5.1:页属性为ECC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的ECC校验码,并与数据载入时生成的ECC校验码比较,数据载入时生成的ECC校验码存储在校验码存储区域;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值相等时,则认为数据完整;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值不等时,则将重新计算的ECC校验码和存储在存储器的页属性校验码区域的ECC码进行异或运算,根据运算结果确定是一位错,还是一位以上的错误,当是一位错误,则纠正一位错误;当是一位以上的错误,则产生中断事件,由管理软件决定如何进行数据完整性保护和修复;
步骤M5.2:页属性为MIC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的MIC校验码,并与数据载入时生成的MIC校验码比较,数据载入时生成的MIC校验码存储在校验码存储区域;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值相等时,则认为存储器中的页数据是完整的;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值不等时,将以中断的形式报告给处理器,由管理软件决定修复方法。例如:重新载入数据或暂时不修复。
根据本发明提供的一种基于存储器完整性检查控制器实现数据完整性检查的系统,运用上述存储器完整性检查控制器,包括:
模块M1:主存储器数据的完整性检查以页为单位,页大小固定为4KB;
页是对存储器空间划分的单位,4KB大小的存储空间为1页,与计算机的存储管理单元MMU所说的页概念相似。
模块M2:每个存储器页都有一个属性,存储器完整性检查控制器根据这个属性值执行页的数据的保护检查,整个存储器的页属性存储在存储器中;
具体地,所述模块M2包括:
每个页的属性是两位,页属性包括:跳过模式、ECC模式、调试模式和MIC模式;
跳过模式:存储器完整性检查控制器不需要对页执行数据完整性检查;
ECC模式:存储器完整性检查控制器需要对页执行完整性检查,且对出现的一位错误纠错;两位及以上的错误报告中断事件;
调试模式:存储器完整性检查控制器用于调试,选择ECC模式或MIC模式;
MIC模式:存储器完整性检查控制器对页执行数据完整性检查,出现错误时以中断事件报告;
MIC模式代表只做存储器数据完整性检查;
ECC模式代表既做检查,也做一位错误情况下的纠错操作。
存储器可以用ECC模式生成ECC校验码生成算法生成校验码,也可以用累加算法生成MIC模式的校验码,在调试模式,用户可以自定义校验码生成算法。
更为具体地,所述模块M2包括:
整个存储器的页属性存储的存储器的基地址由存储器完整性检查控制器中的页属性基地址寄存器指定,页属性存储器区域的基地址页边界对齐的。
模块M3:数据载入存储器时,启动存储器完整性检查控制器,为受保护的存储器页生成校验码,存储在存储器的页属性校验码区域;
具体地,所述模块M3包括:
模块M3.1:页属性为ECC模块,按ECC码生成方式,为每个页生成ECC校验码;每个4KB大小的页,将生成22位的ECC校验码,以字(32位)为单位,存储在存储器的页属性校验码区域;见图4所示,校验码基地址由存储器完整性检查控制器的寄存器指定,校验码存储器区域的基地址必须是也边界对齐的。
存储器的数据逻辑结构如图3所示,生成ECC码的规则是:
Figure BDA0002275545260000121
模块M3.2:页属性为MIC模式,以字为单位,将所有的字累加,从而生成校验码;即:
MIC={BYTE3,BYTE2,BYTE1,BYTE0}+
{BYTE7,BYTE6,BYTE5,BYTE4}+
{BYTE4095,BYTE4094,BYTE4093,BYTE4092}。
每个4KB大小的页,将生成32位的MIC校验码,以字(32位)为单位,存储在存储器的页属性校验码区域。见图4所示,存放校验码的存储区域必须是页边界对齐,其基地址由存储器完整性检查控制器的寄存器指定,校验码存储器区域的基地址必须是页边界对齐的。
模块M4:数据载入存储器时生成的校验码存储在存储器中的校验码存储区域;
数据是指将载入到存储器中的程序或数据,载入的源头可以是网络、硬盘、U盘等,例如从网络下载一个BIOS程序,暂存在内存中,这个过程就是本文所说的数据载入存储器。
模块M5:根据存储器数据的地址获取存储器页属性,重新生成校验码,并与缓存在存储器校验码区域中相应页的校验码比较,执行存储器数据完整性检查。
具体地,所述模块M5包括:
数据在存储器中后,可能会被破坏,例如宇宙射线引起的单粒子事件、病毒程序的恶意破坏等。因此,需要定时检查存储器数据的完整性,或使用存储器数据之前,先检查一下存储器数据的完整性。检查的过程,就是重新计算校验码,并与缓存在存储器中的校验码比较,从而判断数据是否被破坏。
模块M5.1:页属性为ECC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的ECC校验码,并与数据载入时生成的ECC校验码比较,数据载入时生成的ECC校验码存储在校验码存储区域;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值相等时,则认为数据完整;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值不等时,则将重新计算的ECC校验码和存储在存储器的页属性校验码区域的ECC码进行异或运算,根据运算结果确定是一位错,还是一位以上的错误,当是一位错误,则纠正一位错误;当是一位以上的错误,则产生中断事件,由管理软件决定如何进行数据完整性保护和修复;
模块M5.2:页属性为MIC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的MIC校验码,并与数据载入时生成的MIC校验码比较,数据载入时生成的MIC校验码存储在校验码存储区域;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值相等时,则认为存储器中的页数据是完整的;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值不等时,将以中断的形式报告给处理器,由管理软件决定修复方法。例如:重新载入数据或暂时不修复。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (9)

1.一种基于存储器完整性检查控制器实现数据完整性检查的方法,其特征在于,运用存储器完整性检查控制器执行如下步骤:
步骤M1:主存储器数据的完整性检查以页为单位,页大小固定为预设值;
步骤M2:每个存储器页都有一个属性,存储器完整性检查控制器根据属性值执行页的数据的完整性检查,整个存储器的页属性存储在存储器中;
步骤M3:数据载入存储器时,启动存储器完整性检查控制器,为受保护的存储器页生成校验码,存储在存储器的页属性校验码区域;
步骤M4:数据载入存储器时生成的校验码存储在存储器中的校验码存储区域;
步骤M5:根据存储器数据的地址获取存储器页属性,重新生成校验码,并与缓存在存储器校验码区域中相应页的校验码比较,执行存储器数据完整性检查;
所述存储器完整性检查控制器,包括:存储器完整性检查控制器与CPU核心、DMA控制器一样,作为片上总线的主设备,主动访问主存储器;
存储器完整性检查控制器包括:配置接口、AXI总线接口、DMA控制器、两块缓存单元和异或/加运算的运算单元;
所述配置接口:用于访问存储器完整性检查控制器内部的可编程寄存器,包括页属性基地址寄存器和页校验码基地址寄存器,按APB总线规范设计;
所述AXI总线接口:是一个AXI主设备接口,在AXI总线上发起存储器读写操作;
所述DMA控制器:主动读写存储器;
所述两块缓存单元:缓存从存储器中读出的数据;
所述异或/加运算的运算单元:对缓存中的数据执行异或运算或加运算,具体的运算规则通过配置寄存器控制。
2.根据权利要求1所述的一种基于存储器完整性检查控制器实现数据完整性检查的方法,其特征在于,所述步骤M2包括:
每个页的属性是两位,页属性包括:跳过模式、ECC模式、调试模式和MIC模式;
跳过模式:存储器完整性检查控制器不需要对页执行数据完整性检查;
ECC模式:存储器完整性检查控制器需要对页执行完整性检查,且对出现的一位错误纠错;两位及以上的错误报告中断事件;
调试模式:存储器完整性检查控制器用于调试,选择ECC模式或MIC模式;
MIC模式:存储器完整性检查控制器对页执行数据完整性检查,出现错误时以中断事件报告;
MIC模式代表只做存储器数据完整性检查;
ECC模式代表既做检查,也做一位错误情况下的纠错操作。
3.根据权利要求1所述的一种基于存储器完整性检查控制器实现数据完整性检查的方法,其特征在于,所述步骤M2包括:
整个存储器的页属性存储的存储器的基地址由存储器完整性检查控制器中的页属性基地址寄存器指定,页属性存储器区域的基地址页边界对齐的。
4.根据权利要求1所述的一种基于存储器完整性检查控制器实现数据完整性检查的方法,其特征在于,所述步骤M3包括:
步骤M3.1:页属性为ECC模块,按ECC码生成方式,为每个页生成ECC校验码;每个预设大小的页,将生成预设位的ECC校验码,以字为单位,存储在存储器的页属性校验码区域;
步骤M3.2:页属性为MIC模式,以字为单位,将所有的字累加,从而生成校验码;每个预设大小的页,将生成预设位的MIC校验码,以字为单位,存储在存储器的页属性校验码区域。
5.根据权利要求1所述的一种基于存储器完整性检查控制器实现数据完整性检查的方法,其特征在于,所述步骤M5包括:
步骤M5.1:页属性为ECC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的ECC校验码,并与数据载入时生成的ECC校验码比较,数据载入时生成的ECC校验码存储在校验码存储区域;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值相等时,则认为数据完整;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值不等时,则将重新计算的ECC校验码和存储在存储器的页属性校验码区域的ECC码进行异或运算,根据运算结果确定是一位错,还是一位以上的错误,当是一位错误,则纠正一位错误;当是一位以上的错误,则产生中断事件,由管理软件决定如何进行数据完整性保护和修复;
步骤M5.2:页属性为MIC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的MIC校验码,并与数据载入时生成的MIC校验码比较,数据载入时生成的MIC校验码存储在校验码存储区域;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值相等时,则认为存储器中的页数据是完整的;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值不等时,将以中断的形式报告给处理器,由管理软件决定修复方法。
6.一种基于存储器完整性检查控制器实现数据完整性检查的系统,其特征在于,运用存储器完整性检查控制器,包括:
模块M1:主存储器数据的完整性检查以页为单位,页大小固定为预设值;
模块M2:每个存储器页都有一个属性,令存储器完整性检查控制器根据属性值执行页的数据的完整性检查,整个存储器的页属性存储在存储器中;
模块M3:数据载入存储器时,令存储器完整性检查控制器为受保护的存储器页生成校验码,存储在存储器的页属性校验码区域;
模块M4:数据载入存储器时生成的校验码存储在存储器中的校验码存储区域;
模块M5:根据存储器数据的地址获取存储器页属性,重新生成校验码,并与缓存在存储器校验码区域中相应页的校验码比较,执行存储器数据完整性检查;
所述存储器完整性检查控制器,包括:存储器完整性检查控制器与CPU核心、DMA控制器一样,作为片上总线的主设备,主动访问主存储器;
存储器完整性检查控制器包括:配置接口、AXI总线接口、DMA控制器、两块缓存单元和异或/加运算的运算单元;
所述配置接口:用于访问存储器完整性检查控制器内部的可编程寄存器,包括页属性基地址寄存器和页校验码基地址寄存器,按APB总线规范设计;
所述AXI总线接口:是一个AXI主设备接口,在AXI总线上发起存储器读写操作;
所述DMA控制器:主动读写存储器;
所述两块缓存单元:缓存从存储器中读出的数据;
所述异或/加运算的运算单元:对缓存中的数据执行异或运算或加运算,具体的运算规则通过配置寄存器控制。
7.根据权利要求6所述的一种基于存储器完整性检查控制器实现数据完整性检查的系统,其特征在于,所述模块M2包括:
每个页的属性是两位,页属性包括:跳过模式、ECC模式、调试模式和MIC模式;
跳过模式:存储器完整性检查控制器不需要对页执行数据完整性检查;
ECC模式:存储器完整性检查控制器需要对页执行完整性检查,且对出现的一位错误纠错;两位及以上的错误报告中断事件;
调试模式:存储器完整性检查控制器用于调试,选择ECC模式或MIC模式;
MIC模式:存储器完整性检查控制器对页执行数据完整性检查,出现错误时以中断事件报告;
MIC模式代表只做存储器数据完整性检查;
ECC模式代表既做检查,也做一位错误情况下的纠错操作。
8.根据权利要求6所述的一种基于存储器完整性检查控制器实现数据完整性检查的系统,其特征在于,所述模块M2包括:
令存储器完整性检查控制器中的页属性基地址寄存器指定整个存储器的页属性存储的存储器的基地址,页属性存储器区域的基地址页边界对齐的。
9.根据权利要求6所述的一种基于存储器完整性检查控制器实现数据完整性检查的系统,其特征在于,所述模块M3包括:
模块M3.1:页属性为ECC模块,按ECC码生成方式,为每个页生成ECC校验码;每个预设大小的页,将生成预设位的ECC校验码,以字为单位,存储在存储器的页属性校验码区域;
模块M3.2:页属性为MIC模式,以字为单位,将所有的字累加,从而生成校验码;每个预设大小的页,将生成预设位的MIC校验码,以字为单位,存储在存储器的页属性校验码区域;
所述模块M5包括:
模块M5.1:页属性为ECC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的ECC校验码,并与数据载入时生成的ECC校验码比较,数据载入时生成的ECC校验码存储在校验码存储区域;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值相等时,则认为数据完整;
当重新计算的ECC校验码与校验码存储区域存储的数据载入时生成的ECC码值不等时,则将重新计算的ECC校验码和存储在存储器的页属性校验码区域的ECC码进行异或运算,根据运算结果确定是一位错,还是一位以上的错误,当是一位错误,则纠正一位错误;当是一位以上的错误,则产生中断事件,由管理软件决定如何进行数据完整性保护和修复;
模块M5.2:页属性为MIC模式,将根据存储器数据的地址获取存储器页属性,重新计算页的MIC校验码,并与数据载入时生成的MIC校验码比较,数据载入时生成的MIC校验码存储在校验码存储区域;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值相等时,则认为存储器中的页数据是完整的;
当重新计算页的MIC校验码与数据载入时生成的MIC校验码值不等时,将以中断的形式报告给处理器,由管理软件决定修复方法。
CN201911121342.8A 2019-11-15 2019-11-15 基于存储器完整性检查控制器实现数据完整性检查的系统和方法 Active CN111061591B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911121342.8A CN111061591B (zh) 2019-11-15 2019-11-15 基于存储器完整性检查控制器实现数据完整性检查的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911121342.8A CN111061591B (zh) 2019-11-15 2019-11-15 基于存储器完整性检查控制器实现数据完整性检查的系统和方法

Publications (2)

Publication Number Publication Date
CN111061591A CN111061591A (zh) 2020-04-24
CN111061591B true CN111061591B (zh) 2023-06-23

Family

ID=70297965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911121342.8A Active CN111061591B (zh) 2019-11-15 2019-11-15 基于存储器完整性检查控制器实现数据完整性检查的系统和方法

Country Status (1)

Country Link
CN (1) CN111061591B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115220972A (zh) * 2022-06-07 2022-10-21 中科驭数(北京)科技有限公司 设备故障检测方法、装置、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268423A (zh) * 2016-12-31 2018-07-10 英特尔公司 实现用于具有写到读依赖关系的稀疏线性代数运算的增强的并行性的微架构
CN109036493A (zh) * 2018-06-11 2018-12-18 西北工业大学 一种具有检错纠错机制的NAND Flash控制器
WO2019036563A1 (en) * 2017-08-17 2019-02-21 Microchip Technology Incorporated SYSTEMS AND METHODS FOR VERIFYING THE INTEGRITY OF CODES OR DATA IN A MIXED SECURITY SYSTEM WHILE PRESERVING CONFIDENTIALITY

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268423A (zh) * 2016-12-31 2018-07-10 英特尔公司 实现用于具有写到读依赖关系的稀疏线性代数运算的增强的并行性的微架构
WO2019036563A1 (en) * 2017-08-17 2019-02-21 Microchip Technology Incorporated SYSTEMS AND METHODS FOR VERIFYING THE INTEGRITY OF CODES OR DATA IN A MIXED SECURITY SYSTEM WHILE PRESERVING CONFIDENTIALITY
CN109036493A (zh) * 2018-06-11 2018-12-18 西北工业大学 一种具有检错纠错机制的NAND Flash控制器

Also Published As

Publication number Publication date
CN111061591A (zh) 2020-04-24

Similar Documents

Publication Publication Date Title
US10789117B2 (en) Data error detection in computing systems
CN107357666B (zh) 一种基于硬件保护的多核并行系统处理方法
US6539503B1 (en) Method and apparatus for testing error detection
CN103140841B (zh) 保护存储器的部分的方法和装置
US8572441B2 (en) Maximizing encodings of version control bits for memory corruption detection
US8751736B2 (en) Instructions to set and read memory version information
CN1926518A (zh) 运行时间安全保证的自动存储器检测器及其方法
US11544223B2 (en) Write operation verification method and apparatus
US8707102B2 (en) Method and program for verifying operation of processor
US9037788B2 (en) Validating persistent memory content for processor main memory
CN103226499A (zh) 一种恢复内部存储器中的异常数据的方法及装置
Chen et al. Memguard: A low cost and energy efficient design to support and enhance memory system reliability
CN117136355A (zh) 在卸载操作中使用的错误校验数据
CN111061591B (zh) 基于存储器完整性检查控制器实现数据完整性检查的系统和方法
US8910004B2 (en) Information processing apparatus, and method of controlling information processing apparatus
WO2022146790A1 (en) Providing host-based error detection capabilities in a remote execution device
CN112558884B (zh) 数据保护方法以及基于NVMe的存储设备
US8751898B2 (en) Utilizing error correcting code data associated with a region of memory
CN113553211A (zh) 一种核心转储文件的生成方法、计算设备及存储介质
US9135110B2 (en) Method and device for enhancing the reliability of a multiprocessor system by hybrid checkpointing
US20230367912A1 (en) Semiconductor chip apparatus and method for checking the integrity of a memory
US20230359523A1 (en) Memory integrity check
CN117472560A (zh) 跨多个内核的软件共享
JP2013020515A (ja) メモリ冗長化装置、メモリ冗長化方法、及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant