基于Zynq-7000的片上存储器抗单粒子翻转防护方法技术

技术编号:16455820 阅读:320 留言:0更新日期:2017-10-25 19:55
本发明专利技术涉及一种基于Zynq‑7000的片上存储器抗单粒子翻转防护方法,应用于Zynq‑7000SoC在空间环境下的存储器容错设计中,其目的是为了解决空间环境中单粒子翻转对Zynq‑7000芯片内部片上存储器的数据可靠性的影响,保障Zynq‑7000芯片内部双核处理器之间的正确通信。本发明专利技术结合Zynq‑7000芯片的资源特性,采用软件EDAC方法实现双核处理器与片上存储器之间通信的数据加固操作,采用软件中断方式实现单位错误和双位错误的状态标记以及单位错的双核同步回写操作,在ARM处理器中实现数据的纠一检二和数据回写功能,从而提高Zynq‑7000内片上存储器抗单粒子翻转能力,为Zynq‑7000SoC内双核处理器之间进行数据通信的可靠性提供一种重要手段。

【技术实现步骤摘要】
基于Zynq-7000的片上存储器抗单粒子翻转防护方法
本专利技术涉及软件方法领域,具体应用于星载系统中,具体是一种基于Zynq-7000的片上存储器抗单粒子翻转防护方法。
技术介绍
近年来,商用器件(Commercial-off-the-shelf,COTS)因成本低、性能高、不受国外进口限制等特点被越来越多地应用于航天领域中。其中,Xilinx公司的Zynq-7000系列器件将双核ARM处理器与可编程逻辑、硬IP外设紧密集成,其灵活性和可配置性的完美结合受到小卫星领域的广泛关注,逐步应用于航天领域的工程实践中。Zynq-7000SoCPS部分内的双核ARMCortex-A9处理器可采用非对称多处理(AsymmetricMulti-coreProcessor,AMP)机制以并行或冗余的方式执行不同的任务,使系统性能实现最大化。Zynq-7000SoCPS部分内的片上存储器(On-ChipMemory,OCM)包含256KB的RAM存储空间,具有较高的访问吞吐量,是Zynq-7000SoC片内双核处理器之间进行数据交互和资源共享的重要资源媒介。但Zynq-7000作为COTS器件其抗辐射能力较低,其片上存储器很容易受到对RAM敏感的单粒子翻转的影响,造成存储器数据状态的改变,导致双核处理器通信的失效,甚至导致星载系统指令或数据的失效,引发系统崩溃。在星载系统的设计中,不仅要满足星载系统基本的功能需求,更要考虑星载系统的高可靠性要求。目前,针对单粒子翻转进行存储器加固的常用方法是硬件EDAC电路,主要包括处理器自带EDAC电路和用FPGA实现EDAC电路两类。其中,处理器自带EDAC电路通常由芯片的安全等级决定,如宇航级芯片,而Zynq-7000内的片上存储器仅具有奇偶校验功能,不具备纠错能力,不满足星载系统抗单粒子翻转的需求;用FPGA实现EDAC电路具有设计灵活、可配置的特点,但SRAM型FPGA作为易失性存储,其自身可靠性存在问题,且最重要的是双核处理器与片上存储器已集成在同一芯片中,无法通过外加硬件EDAC电路实现存储器的加固。
技术实现思路
为解决传统硬件EDAC在Zynq-7000内片上存储器OCM加固的局限性,本专利技术提供了一种基于Zynq-7000的片上存储器抗单粒子翻转软件防护设计方法,利用Zynq-7000内双核ARM处理器和软件生成中断(SoftwareGenerateInterrupt,SGI)的资源特性,采用软件EDAC方法实现OCM的数据容错,保障双核通信的可靠性。一种基于Zynq-7000的片上存储器抗单粒子翻转防护方法,CPU0或CPU1中的原始数据通过软件EDAC模块进行编码操作,写入到OCM中;OCM中的Hsiao码数据通过软件EDAC模块进行解码操作,被CPU0或CPU1读取;当数据读取检测到单位错或双位错时,SGI产生软件中断进行双核同步数据回写或通知CPU0和CPU1进行处理,其特征在于:A、关键变量定义及初始化:将需存储在OCM且待加固的变量作为关键变量,定义关键变量的位宽,指定关键变量在OCM中的存储地址,初始化关键变量,并对SGI进行使能;B、数据编解码操作:采用具有纠一检二功能的Hsiao码作为OCM加固的纠错码,根据Hsiao码算法原理,对CPU写入OCM的数据进行编码操作,对CPU从OCM读取的数据进行解码操作;C、错误中断生成:采用Zynq-7000内部软件生成中断SGI处理检测到的错误,当从OCM读取数据检测到单位错时,SGI产生软件中断SEC,通知CPU0和CPU1进行同步回写;当从OCM读取数据检测到双位错时,SGI产生软件中断DED,通知CPU0和CPU1进行处理;D、双核同步回写:当数据读取检测到单位错时,通过Hsiao码解码操作可以得到CPU所需的正确数据,但为便于后续数据的使用需将正确数据回写到OCM中。同时为避免一个CPU在数据回写过程中被另一个CPU访问,采取双核同步回写操作,直到数据回写完成才可以被访问。进一步的,所述的关键变量定义及初始化过程中,将所有存储到OCM的关键变量定义成位宽为32位的无符号长整型数,其中仅低16位有效,高16位全部清0,用作(13,8)Hsiao码校验位的存储;为所有的关键变量分配OCM存储地址,Zynq-7000内OCM默认的映射地址空间为(0x0000_0000~0x0003_FFFF)和(0xFFFF_0000~0xFFFF_FFFF);对存储到OCM的关键变量进行初始化赋值。进一步的,所述的解码操作过程中,当CPU向OCM写入数据时,从CPU0或CPU1中读取原始数据,将原始数据的低16位有效数据拆分成两组8位数据,对8位数据进行移位操作存入一个长度为8的数据位数组中,使数组中各元素最低位的值为8位数据相应位的值;根据上述得到的数据数组与(13,8)Hsiao码算法获取的生成矩阵G,对每一个8位数据进行编码操作,并获取一个长度为5的校验位数组;根据Hsiao码的数据位分配,将两组数据位数组和校验位数组进行移位操作,合成一个32位Hsiao码数据,存入OCM中。进一步的,所述的解码操作过程中,当CPU从OCM读取数据时:从OCM中读取Hsiao码数据,并记录该数据地址,将Hsiao码数据拆分成两组(13,8)Hsiao码数据,对13位编码数据进行移位操作存入一个长度为13的编码位数组中,使数组中各元素最低位的值为编码数据相应位的值;根据上述得到的编码位数组与(13,8)Hsiao码算法获取的监督矩阵H,对每一个编码数据进行解码操作,并获取一个长度为5的校验子数组;将两组校验子数组进行移位操作,使校验子S相应位的值为数组中各元素最低位的值,根据校验子S得到无错、单位错和双位错的错误状态标志,对于无错和单位错可以得到正确的数据,被CPU0或CPU1读取和使用。进一步的,所述的错误中断生成过程中,为单位错和双位错分别分配一个SGIID号,初始化并开启对应的SGI;当检测到错误时,将SGI连接到所有的CPU,通过写Zynq-7000内部ICDSGIR寄存器,产生相应的软件中断,同时对错误状态标志SEC_Flag或DED_Flag置位;进入单位错或双位错对应的软件中断服务函数。进一步的,所述的双核同步回写过程中,当CPU0检测到单位错时:CPU0解码操作对单位错状态标志SEC_Flag置1,CPU0和CPU1同时进入单位错中断服务程序;在CPU0中,获取待回写变量的存储地址和正确数据,并将该正确数据回写到对应的存储地址,将SEC_Flag置0;在CPU1中,等待CPU0完成回写操作,直到SEC_Flag为0。进一步的,所述的双核同步回写过程中,当CPU1检测到单位错时:CPU1解码操作对单位错状态标志SEC_Flag置2,CPU0和CPU1同时进入单位错中断服务程序;在CPU1中,获取待回写变量的存储地址和正确数据,并将该正确数据回写到对应的存储地址,将SEC_Flag置0;在CPU0中,等待CPU1完成回写操作,直到SEC_Flag为0。本专利技术的有益效果是:通过采用本专利技术的技术方案,(1)该方法利用Zynq-7000内部双核ARM处理器和软件生成中断SGI等自带的资源特性,将软件EDAC模块分为数据本文档来自技高网
...
基于Zynq-7000的片上存储器抗单粒子翻转防护方法

【技术保护点】
一种基于Zynq‑7000的片上存储器抗单粒子翻转防护方法,CPU0或CPU1中的原始数据通过软件EDAC模块进行编码操作,写入到OCM中;OCM中的Hsiao码数据通过软件EDAC模块进行解码操作,被CPU0或CPU1读取;当数据读取检测到单位错或双位错时,SGI产生软件中断进行双核同步数据回写或通知CPU0和CPU1进行处理,其特征在于:A、关键变量定义及初始化:将需存储在OCM且待加固的变量作为关键变量,定义关键变量的位宽,指定关键变量在OCM中的存储地址,初始化关键变量,并对SGI进行使能;B、数据编解码操作:采用具有纠一检二功能的Hsiao码作为OCM加固的纠错码,根据Hsiao码算法原理,对CPU写入OCM的数据进行编码操作,对CPU从OCM读取的数据进行解码操作;C、错误中断生成:采用Zynq‑7000内部软件生成中断SGI处理检测到的错误,当从OCM读取数据检测到单位错时,SGI产生软件中断SEC,通知CPU0和CPU1进行同步回写;当从OCM读取数据检测到双位错时,SGI产生软件中断DED,通知CPU0和CPU1进行处理;D、双核同步回写:当数据读取检测到单位错时,通过Hsiao码解码操作可以得到CPU所需的正确数据,但为便于后续数据的使用需将正确数据回写到OCM中,同时为避免一个CPU在数据回写过程中被另一个CPU访问,采取双核同步回写操作,直到数据回写完成才可以被访问。...

【技术特征摘要】
1.一种基于Zynq-7000的片上存储器抗单粒子翻转防护方法,CPU0或CPU1中的原始数据通过软件EDAC模块进行编码操作,写入到OCM中;OCM中的Hsiao码数据通过软件EDAC模块进行解码操作,被CPU0或CPU1读取;当数据读取检测到单位错或双位错时,SGI产生软件中断进行双核同步数据回写或通知CPU0和CPU1进行处理,其特征在于:A、关键变量定义及初始化:将需存储在OCM且待加固的变量作为关键变量,定义关键变量的位宽,指定关键变量在OCM中的存储地址,初始化关键变量,并对SGI进行使能;B、数据编解码操作:采用具有纠一检二功能的Hsiao码作为OCM加固的纠错码,根据Hsiao码算法原理,对CPU写入OCM的数据进行编码操作,对CPU从OCM读取的数据进行解码操作;C、错误中断生成:采用Zynq-7000内部软件生成中断SGI处理检测到的错误,当从OCM读取数据检测到单位错时,SGI产生软件中断SEC,通知CPU0和CPU1进行同步回写;当从OCM读取数据检测到双位错时,SGI产生软件中断DED,通知CPU0和CPU1进行处理;D、双核同步回写:当数据读取检测到单位错时,通过Hsiao码解码操作可以得到CPU所需的正确数据,但为便于后续数据的使用需将正确数据回写到OCM中,同时为避免一个CPU在数据回写过程中被另一个CPU访问,采取双核同步回写操作,直到数据回写完成才可以被访问。2.根据权利要求1所述的基于Zynq-7000的片上存储器抗单粒子翻转防护方法,其特征在于:所述的关键变量定义及初始化过程中,将所有存储到OCM的关键变量定义成位宽为32位的无符号长整型数,其中仅低16位有效,高16位全部清0,用作(13,8)Hsiao码校验位的存储;为所有的关键变量分配OCM存储地址,Zynq-7000内OCM默认的映射地址空间为(0x0000_0000~0x0003_FFFF)和(0xFFFF_0000~0xFFFF_FFFF);对存储到OCM的关键变量进行初始化赋值。3.根据权利要求1所述的基于Zynq-7000的片上存储器抗单粒子翻转防护方法,其特征在于:所述的解码操作过程中,当CPU向OCM写入数据时,从CPU0或CPU1中读取原始数据,将原始数据的低16位有效数据拆分成两组8位数据,对8位数据进行移位操作存入一个长度为8的数据位数组中,使数组中各元素最低位的值为8位数据相应位的值;根据上述得到的数据数组与(13,8)Hsiao码算法获取的生成矩阵G,...

【专利技术属性】
技术研发人员:彭喜元沈露崔秀海彭宇王少军
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:黑龙江,23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1