一种支持上注的容错存储器控制器的制作方法

文档序号:15850941发布日期:2018-11-07 09:54阅读:325来源:国知局
一种支持上注的容错存储器控制器的制作方法
本发明属于集成电路设计领域,涉及适用于空间飞行器程序上注的容错型存储器控制技术,具体为一种支持上注的容错存储器控制器。
背景技术
得益于微电子技术的飞速发展,空间飞行器广泛采用集成电路实现其小型化、多功能、低功耗的目标。然而,受空间辐射环境的影响,空间高能粒子可能导致集成电路存储器中存储值发生翻转而产生错误的逻辑表达,影响器件的正常功能,被称为单粒子翻转。随着航天应用的不断深入,航天电子器件多采用多模冗余、多机备份和纠检错技术(edac)进行单粒子防护,其中,edac技术通过增加冗余校验码方式对核心数据进行算法保护,已经逐步成为空间微处理器主流的容错技术。传统的空间微处理器至少需要prom和sram两类存储器分别存放指令和数据,其中当prom程序区发生不可恢复的严重故障时,可以将sram中备份的程序重新上注到prom中。但是,当prom和sram分别增加edac校验存储器后,执行程序的重新上注将会产生新的问题。这是因为,控制器的工作模式分为正常模式和测试模式,在正常模式下,校验区为透明不可见区域,而在测试模式下,允许统一对prom和sram的edac存储器进行读写。这种测试模式的设计保证了在地面调试中能够通过注错验证纠检错逻辑的正确性,但是,这种无差别的测试模式导致在空间运行中一旦处于edac测试模式下,那么控制器内部的数据通道因完全切换至edac存储器,导致上注程序无法执行而失败。因此,容错型存储控制器如何兼顾程序上注,已经成为空间微处理器设计亟待解决的问题。中国专利cn104597807a,名称为一种星载综合电子cpu翻转加固系统及方法,将传统非容错式的微处理器通过外接一个asic转换芯片,将访问数据扩展出edac校验码,并扩展外接edac存储器,通过这种方式实现了星载综合电子cpu的可靠性加固。中国专利cn105373444a,名称为一种8位宽外部存储器控制器edac校验码的生成方法,它讨论了将数据和校验码统一存储于一个存储体中时,通过一种edac校验码的生成方法,将校验码从存储器的尾地址逆序存储,从而能够降低存储控制器因检测外部存储容量而决定校验码起始地址的设计复杂度。中国专利cn105760250a,名称为一种具有码流纠检错功能的单粒子加固fpga配置电路,它是通过一个编码/纠错电路主动对sram型fpga的配置文件进行检验,对发现的单位错进行修正,以保证fpga编程程序的正确性。中国专利cn106328195a,名称为一种抗单粒子翻转的sram,是将edac算法实现于存储器内部,不需要控制器额外的实现纠检错逻辑,在对存储器读写访问时,存储器自身进行数据的检查与纠错。然而,以上发明专利并未涉及到当发生不可恢复的多位故障时,如何保证程序的重新上注过程,而仅实现了单位错的故障修复机制,并不满足实际空间应用需求。静态存储器作为星载综合电子系统中不可或缺的电子元件,被广泛用于存储程序与数据,即使目前采用抗辐照工艺及抗辐照版图设计技术,仍无法回避单粒子翻转问题,需要采用程序上注的方式实现核心程序的复写,因此存储控制器必须具备程序上注功能。经检索相关专利,尚未发现有解决该问题的方法。技术实现要素:针对现有技术中存在的问题,本发明提供一种支持上注的容错存储器控制器,不受存储器件类型的限制,所实现的上注模式并不影响程序的正常执行,有效应对了单粒子效应对星载微处理器的影响。本发明是通过以下技术方案来实现:一种支持上注的容错存储器控制器,包括总线接口、配置寄存器、状态机、编码器与解码器、数据接口pad_data和数据接口pad_edac;所述总线接口挂接于微处理器芯片内部的系统总线上,通过标准的片内总线传递微处理器发出的访存操作;总线接口分别与配置寄存器、状态机、编码器与解码器交互连接;所述的标准的片内总线传递的信号包括选择使能信号、访问地址以及读写数据;当微处理器通过总线接口配置访问配置寄存器时,总线接口仅用于向配置寄存器中设置各种配置参数,所述配置参数输出至状态机、编码器和解码器,用于控制状态机访问外部存储器的时间值以及控制编码器和解码器的启动和停止;所述的外部存储器包括数据存储器prom和数据存储器sram,以及校验存储器prom_edac和校验存储器sram_edac;当微处理器通过总线接口访问外部存储器时,总线接口将访问读写操作发送至状态机模块;状态机用于根据读写操作以及配置寄存器的参数值,组织外部存储器的片选信号、读使能信号和写使能信号的时序;编码器用于写访问,将写数据按照edac算法进行编码,生成相应的校验元;解码器用于读访问,将数据存储器的数据和校验存储器中的校验元同时送入解码器,解码器按照纠错算法进行检查,纠正出发生的一位错误或检测出发生的两位错误;所述的数据接口pad_data和数据接口pad_edac分别连接编码器与解码器,用于将单向数据信号转换为双向数据信号与外部存储器互连。优选的,数据接口pad_edac用于将编码器的输出传送至校验存储器prom_edac和校验存储器sram_edac,还用于将这两个校验存储器的校验码返回至解码器;数据接口pad_data用于将编码器的输出传送至数据存储器prom和数据存储器sram,还用于将这两个存储器的数据返回至解码器。优选的,当总线接口在检测到有效的访问控制信号后,即按照总线协议锁存访问地址和读写数据。优选的,所述的编程配置寄存器为5位可读写的编程配置寄存器,用于区分数据存储器prom和数据存储器sram,以及校验存储器prom_edac和校验存储器sram_edac;可读写的5位分别用于表示系统处于编程模式、当前编程目标为校验存储器prom_edac、当前编程目标为数据存储器prom、当前编程目标为校验存储器sram_edac和当前编程目标为数据存储器sram,其复位值均为0。优选的,数据存储器prom和校验存储器prom_edac两者共用一个片选信号prom_cs,数据存储器sram和校验存储器sram_edac两者共用一个片选信号sram_cs,数据存储器prom和数据存储器sram共用读信号oe和写信号we,校验存储器prom_edac和校验存储器sram_edac共用读信号oe_edac和写信号we_edac。进一步,微处理芯片的程序存放在数据存储器sram中,程序的校验码存放在校验存储器sram_edac中,当对数据存储器prom上注时;按顺序向存储器控制器的密码寄存器1和密码寄存器2中分别写入有效指令,配置编程配置寄存器开启对数据存储器prom进行编程之后,再次按顺序向密码寄存器1和密码寄存器2写入有效指令,配置编程配置寄存器开启对校验存储器prom_edac进行编程。再进一步,对数据存储器prom进行编程时,片选信号sram_cs、读信号oe和读信号oe_edac均正常工作;数据存储器sram并未处于编程模式,正常的运行指令并对数据存储器prom进行编程写操作,片选prom_cs和写信号we正常工作,写信号we_edac关闭;片选信号sram_cs和片选信号prom_cs择一工作。进一步,对校验存储器prom_edac进行编程时,片选信号sram_cs、读信号oe和读信号oe_edac均正常工作;数据存储器sram并未处于编程模式,正常的运行指令并对校验存储器prom_edac进行编程写操作,片选prom_cs和写信号we_edac正常工作,写信号we关闭;片选信号sram_cs和片选信号prom_cs择一工作。与现有技术相比,本发明具有以下有益的技术效果:本发明基于edac纠检错算法,将prom和sram的统一控制模式分解为数据域和校验域的独立控制模式,从而构建了支持星载微处理器程序运行和校验元上注并行执行的模式。通过采用纠检错设计结构与可独立控制的配置寄存器相结合的策略,实现了空间程序的上注,所取得的效果如下:1)针对空间环境中的单粒子翻转引发的集成电路故障问题,本发明在微处理器的存储器控制器中集成了用于纠检错的edac编码器和解码器,它不依赖于特定的edac算法,同时新增的纠检错逻辑和操作对程序员透明,使得既有的程序可以无缝移植到该容错存储器控制器结构上。2)本发明提出的控制器采用独立控制的编程模式,实现了外部不同类型存储器的数据域和校验域的定向访问,避免了由于控制模式的不可区分造成的程序无法上注的问题。3)本发明具有显著的可扩展性,其不局限于片外存储器的类型、容量、数量,可以扩展编程配置寄存器而支持更多数量的外接存储器。4)本发明具有良好的可移植性和可复用性,一方面挂接于标准的片内总线之上,同时对外连接的是标准存储器接口,因此构成了可复用的ip,用于soc系统快速设计。附图说明图1为本发明实例中所述的支持上注的容错存储器控制器结构框图。图2为本发明实例中所述的上注过程示意图。具体实施方式下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。如图1所示,本发明所述的支持上注的容错存储器控制器,挂接于微处理器芯片内部的系统总线上,通过标准的片内总线传递微处理器发出的访存操作。该标准的片内总线传递的信号包括选择使能信号、访问地址以及读写数据。本发明所述的存储器控制器,包括总线接口、配置寄存器、状态机、编码器与解码器、两个数据pad(pad_data和pad_edac)。总线接口在检测到有效的访问控制信号后,即按照总线协议锁存地址和数据。总线访问的对象有两类,配置寄存器和外部存储器。当微处理器需要配置访问配置寄存器时,总线接口仅用于向配置寄存器中设置各种配置参数,这些配置参数输出至状态机、编码器和解码器,可以控制状态机访问外部存储器的时间值以及控制编码器和解码器的启动和停止。一般而言,微处理器上电后,程序首先应访问配置寄存器以确定后续工作时的各项参数。当总线接口访问的是外部存储器时,总线接口将访问读写操作发送至状态机模块。状态机的作用是根据读写操作以及配置寄存器的参数值,组织片外prom和sram的数据存储器(prom和sram)以及校验存储器(prom_edac和sram_edac)的片选(prom_cs、sram_cs)、读使能(oe、oe_edac)和写使能(we、we_edac)信号的时序。编码器的作用主要针对写访问,它将写数据按照一定的edac算法进行编码,生成相应的校验元。解码器的作用主要是针对读访问,将数据存储器的数据和校验存储器中的校验元同时送入解码器,解码器按照纠错算法进行检查,能够纠正出发生的一位错误,也能检测出发生的两位错误。例如一个32位的写数据,按照(40,32)海明码的算法规则,可以由编码器生成一个8位的校验元,共组成40位数据,当这40位数据中发生任意一位的翻转错误,则均能被解码器纠正并写回对应存储体中,而当发生任意两位的翻转错误时,解码器能够识别并报告出错。两个数据pad(pad_data和pad_edac)作用是将片内单向的数据信号转换成双向数据信号,以便与片外存储器进行连接,其中,pad_edac可以将编码器的输出传送至prom_edac和sram_edac两个校验元存储器,也可以将这两个存储器的校验码返回至解码器,pad_data可以将编码器的输出传送至prom和sram两个数据存储器,也可以将这两个存储器的数据返回至解码器。为了能够利用上述控制器的硬件结构进行数据存储器和校验存储器的独立测试,传统的存储器控制器在配置寄存器中设置了3位可读写(r/w)的编程配置寄存器,如表1所示:第0位为编程模式使能位,当其为1时,可以选择置第1位或第2位为1有效。当第1位test_data有效时,表示对prom和sram的数据域进行测试,当第2位test_edac有效时,表示对prom和sram的校验域进行测试。至于区分prom和sram,则根据总线接口的访问地址进行区分。表1传统的编程配置寄存器定义位名称类型备注0progr/w为1表示系统处于空间编程模式,复位值为01test_datar/w为1表示当前编程目标为校验域,复位值为02test_edacr/w为1表示当前编程目标为数据域,复位值为031~3test_rom_edacr/w保留,读出为0但是,这种方案存在无法上注的缺陷,例如当程序在sram执行,需要对prom的edac校验域进行烧写,此时表1中需置第0位和第1位为1。但是由于编程模式不对两种存储器进行区分,sram也将处于edac校验存储器访问模式,导致sram数据存储器无法读取指令,从而上注失败。为此,本发明提出了如表2所示的5位可读写(r/w)的编程配置寄存器,区分了prom和sram的数据域及校验域。同样的,当程序在sram执行时,对prom的edac校验域进行上注时,令表2中的第0位和第1位置1,那么此时sram及sram_edac存储器仍然处于正常执行指令的工作状态,而对prom的访问则只有prom_edac存储器被激活,从而完成其校验域的上注烧写。表2本发明提出的编程配置寄存器定义位名称类型备注0progr/w为1表示系统处于空间编程模式,复位值为01test_rom_edacr/w为1表示当前编程目标为prom校验域,复位值为02test_rom_datar/w为1表示当前编程目标为prom数据域,复位值为03test_ram_edacr/w为1表示当前编程目标为sram校验域,复位值为04test_ram_datar/w为1表示当前编程目标为sram数据域,复位值为031~5test_rom_edacr/w保留,读出为0图2用于描述在本发明所述设计方法和实现电路下的上注过程示意图。外部存储器包括prom和sram,其中prom_edac为prom的校验存储器,两者共用一个片选信号prom_cs,sram_edac为sram的校验存储器,两者共用一个片选信号sram_cs。此外,prom和sram作为数据域,共用了读信号oe和写信号we,prom_edac和sram_edac作为校验域,共用了读信号oe_edac和写信号we_edac。实际运行时,程序在sram中存放,程序的校验码在sram_edac中存放,此时需要执行对prom的上注。根据表3和表4所示,首先,按顺序向存储器控制器的密码寄存器1和密码寄存器2中分别写入0x12345678和0x87654321,然后置表2编程配置寄存器为0x5,开启对prom数据域的编程,此时sram并未处于编程模式(sram_cs、oe、oe_edac信号正常工作),sram可以正常的运行指令并对prom数据存储器进行编程写操作(prom_cs、we正常工作,但we_edac关闭)。这里两个片选信号sram_cs和prom_cs不会同时工作,因此保证了同一时刻只有sram的程序执行或者prom数据域的上注操作。之后,再次按顺序写密码寄存器1和密码寄存器2,然后置表2编程配置寄存器为0x3,开启对prom校验域的编程,此时sram同样处于正常运行指令状态(sram_cs、oe、oe_edac信号正常工作),同时对prom校验存储器编程(prom_cs、we_edac正常工作,但we关闭),这里两个片选信号sram_cs和prom_cs同样不会同时工作。至此,完成了prom数据域和校验域的分别上注过程,实现对出错程序的重新复写。表3密码寄存器1位名称类型备注31~0code1w用于编程配置寄存器的写保护,写入0x12345678有效表4密码寄存器2位名称类型备注31~0code2w用于编程配置寄存器的写保护,写入0x87654321有效本发明已经应用于一款兼容sparcv8结构处理器的soc中,该soc使用了本发明中的一种支持上注的容错存储器控制器设计方法及实现电路,不仅能够有效对外部存储器中出现的少量单粒子翻转错误进行纠错报错,同时也能够通过执行程序上注而对较多翻转错误的存储器进行复写,保证了空间程序的正确执行,具有较高的可移植性和可复用性。该soc芯片已完成流片,所述电路结构功能正常,符合预期设计目标。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1