本发明关连于一种闪存装置,特别是一种于控制逻辑错误时重新配置存储控制器的方法以及使用该方法的装置。
背景技术:
对于以现场可程序化逻辑门阵列(FPGA,Field-Programmable Gate Array)封装的固态硬盘(SSD,Solid State Drive)储存系统中的控制器,单粒子翻转(SEU,Single Event Upset)是造成控制逻辑错误的原因之一。单粒子翻转是微电子装置中的敏感装置因为阿尔法粒子或宇宙射线冲击造成的状态翻转。因此,本发明提出一种于控制逻辑错误时重新配置控制器中的逻辑的方法以及使用该方法的装置,用以克服上述的问题。
技术实现要素:
本发明的实施例提出一种于控制逻辑错误时重新配置存储控制器的方法,由处理单元执行,包含下列步骤。判断存储控制器发生错误后,驱动存储控制器的固定区域中的重配置控制逻辑,用以重新程序化存储控制器的整个可重配置区域,其中,可重配置区域以现场可程序化逻辑门阵列实施。
本发明的实施例提出一种于控制逻辑错误时重新配置控制器的装置,包含固定区域与可重配置区域。固定区域包含处理单元以及重配置控制逻辑。处理单元判断存储控制器发生错误后,驱动存储控制器 的固定区域中的重配置控制逻辑,用以重新程序化存储控制器的整个可重配置区域。可重配置区域以现场可程序化逻辑门阵列实施。
【附图说明】
图1是依据本发明实施例的固态硬盘储存系统的系统架构图。
图2是依据本发明实施例的闪存中的储存单元示意图。
图3是依据本发明实施例的存储控制器的逻辑分割示意图。
图4是依据本发明实施例的重新配置存储控制器的方法流程图。
图5是依据本发明实施例的重新配置存储控制器的方法流程图。
【符号说明】
10 系统; 110 处理单元;
120 只读存储器; 130 静态随机存取内存;
140 动态随机存取内存;
150 存取界面; 160 主装置;
170 存取界面; 180 储存单元;
210 内存单元数组; 220 行译码单元;
230 列编码单元; 240 地址单元;
250 数据缓存器; 300a 可重配置区域;
300b 固定区域; 310 重配置控制逻辑;
S410~S480 方法步骤 S510~S520 方法步骤。
【具体实施方式】
以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之 后的权利要求范围。
必须了解的是,使用于本说明书中的”包含”、”包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、操作处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、操作处理、组件、组件,或以上的任意组合。
于权利要求中使用如”第一”、"第二"、"第三"等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
图1是依据本发明实施例的固态硬盘储存系统的系统架构图。固态硬盘储存系统的系统架构10中包含只读存储器120,储存重新配置存储控制器的信息。于此须注意的是,此信息也可备份在储存单元180中。当处理单元110执行静态随机存取内存130的控制核心算法时,根据主装置160通过存取接口150发出的命令,写入数据到储存单元180中的指定地址,或者从储存单元180中的指定地址读取数据。详细来说,处理单元110可通过存取接口170写入数据到储存单元180中的指定地址,以及从储存单元180中的指定地址读取数据。系统架构10使用数个电子信号来协调处理单元110与储存单元180间的数据与命令传递,包含数据线(data line)、频率信号(clock signal)与控制信号(control signal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(chip enable,CE)、地址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、写入致能(write enable,WE)等控制信号。存取接口170可采用双倍数据率(double data rate,DDR)通信协议与储存单元180沟通,例如,开放NAND快闪(open NAND flash interface,ONFI)、双倍数据率开关(DDR toggle)或其他接口。处理单元110另可使用存取接口150通过指定通信协议与主装置160进行沟通,例如,通用串行总线(universal serial bus,USB)、先进技术附着(advanced technology attachment,ATA)、序列先进技术附着(serial advanced technology attachment,SATA)、快速周边组件互联(peripheral component interconnect express,PCI-E)或其他接口。处理单元110、只读存储器120、静态随机存取内存130、存取接口150及170可统称为一个存储控制器(storage controller)。
图2是依据本发明实施例的闪存中的储存单元示意图。储存单元180可包含由MxN个内存单元(memory cells)组成的数组(array)210,而每一个内存单元储存至少一个位(bit)的信息。闪存可以是NAND型闪存,或其他种类的闪存。为了正确存取信息,行译码单元220用以选择内存单元数组210中指定的行,而列编码单元230用以选择指定行中一定数量的字节的数据作为输出。地址单元240提供行信息给行译码器220,其中定义了选择内存单元数组210中的那些行。相似地,列译码器230则根据地址单元240提供的列信息,选择内存单元数组210的指定行中一定数量的列进行读取或写入操作。行可称为为字符线(wordline),列可称为位线(bitline)。数据缓存器(data buffer)250可储存从内存单元数组210读取出的数据,或欲写入内存单元数组210中的数据。内存单元可为单层式单元(single-level cells,SLCs)、多层式单元(multi-level cells,MLCs)或三层式单元(triple-level cells,TLCs)。
图3是依据本发明实施例的存储控制器的逻辑分割示意图。存储控制器可包含可重配置区域(reconfigurable region)130a及固定区域(fixed region)300b。固定区域300b可包含输出入控制逻辑(I/O control logic)、主装置通信逻辑(master-device communications logic)及重配置控制逻辑(re-configuration control logic)310等。固定区域300b另可包含处理单元110的运算逻辑单元,用以依据加载的固件进行数学运算以及控制其他组件。例如,输出入控制逻辑包含对只读存储器120以及静态随机存取内存130等的输出入控制。主装置通信逻辑可实施于存取接口150。固定区域300b中的逻辑不能重新配置。可重配置区域300a以 现场可程序化逻辑门阵列实施。可重配置区域300a包含固态硬盘储存系统的控制核心算法,可占超过存储控制器的90%空间。可重配置区域300a包含可程序化逻辑区块的数组及阶层式可重新组态的相互连结,使得区块与区块可连接在一起,例如,数个逻辑闸可依据不同组态相互连接在一起。一些逻辑区块可组态来执行复杂的综合性功能,或者是简单的逻辑闸,例如与门(AND)、或门(OR)、互斥或门(XOR)等。一些逻辑区块可包含存储元件,由简单的触发器(flip-flops)或完整的记忆块组成。可重配置区域300a中的控制核心算法以及固定区域300b中的逻辑可组织成数个码区段(code segments),并在每一个码区段加上循环冗余校验码(CRC-Cyclic Redundancy Check)进行保护。译码单元可使用循环冗余校验码检查存储控制器中的控制核心算法及逻辑是否发生错误,并且当错误发生时尝试修正其中的错误。然而,当控制核心算法及逻辑无法修复时(亦可称为控制逻辑错误),需要执行一个方法,用以重新配置存储控制器。控制逻辑错误也可以代表存储控制器发生错误。
于一种实施方式中,存储控制器可检测可重配置区域300a的哪个部分发生不可恢复的错误,接着,仅重新组态发生错误的部分。为完成此检测需要实施特定的硬件电路以及/或软件指令。或者是,需要花费额外的时间来完成此检测,在主装置160所发出的命令超时前,可能造成来不及完成重新组态以及处理此命令。于另一种实施方式,存储控制器可重新组态整个可重配置区域300a而不进行如上所述的检测。图4是依据本发明实施例的重新配置存储控制器的方法流程图。熟习此技艺人士理解当存储控制器接收到主装置160所发出的命令时,使用控制核心算法来驱动存取接口170,用以完成此命令,例如数据读取命令、数据写入命令等。在使用控制核心算法前,译码单元需要先检查存储控制器中的控制核心算法及逻辑是否正确。当译码单元无法修复于存储控制器的控制核心算法及逻辑中发生的错误时,可发出最高优先权的中断给处理单元110。当处理单元110接收到中断后(步骤S410),暂停存取(步骤S420)。换句话说,处 理单元110并不使用包含无法恢复错误的控制核心算法来驱动存取接口170。接着,储存目前的执行状态(例如,执行变量值,尚未写入储存单元180的数据,已读取但尚未回复给主装置160的数据等)于动态随机存取内存140(步骤S430)。详细来说,于步骤S430,处理单元110驱动输出入控制逻辑储存目前的执行状态至动态随机存取内存140。处理单元110驱动重配置控制逻辑310的开始执行重配置操作,用以重新程序化整个可重配置区域300a(步骤S440)。详细来说,重配置控制逻辑310通过输出入控制逻辑驱动读取只读存储器120中储存的信息,例如使用硬件描述语言(HDL,Hardware Description Language)撰写的指令、逻辑区块间相互连接的对照表等,并根据此信息来重新程序化整个可重配置区域300a。接着,反复执行一个循环,用以询问重配置控制逻辑310重配置操作是否完成(步骤S450)。当重配置控制逻辑310回复重配置操作完成的消息后(步骤S450中”是”的路径),处理单元110启动整个存储控制器的再初始化操作(re-initiation operation),使得存储控制器处于可用状态(步骤S460)。接着,从动态随机存取内存140恢复(restore)执行状态(步骤S470),以及根据恢复的执行状态恢复存取(resume access)(步骤S480)。通过以上的方法,尚未执行完的操作可以从断点继续执行。存储控制器仅在短暂的时间(少于1秒)失效,重配置之后则恢复正常。
图5是依据本发明实施例的重新配置存储控制器的方法流程图。当暂停存取后(步骤S420),完成当前管道(pipeline)中操作(步骤S510)。当完成当前管道(pipeline)中操作后(步骤S510),处理单元110驱动重配置控制逻辑310的开始执行重配置操作,用以重新程序化整个可重配置区域300a(步骤S440)。接着,当处理单元110启动整个存储控制器的再初始化操作,使得存储控制器处于可用状态后(步骤S460),恢复存取(步骤S520)。步骤S410、S420、S440、S450、S460的详细技术内容请参考图4的说明,为求简洁不再赘述。
关于如何判断上述存储控制器发生錯誤,请参考图4及图5 描述的方法流程:一些实施例是通过中断处理程序(interrupt handler)的机制检测发生单粒子翻转错误,一旦接收到中断,接着进行重新组态。于一些实施例中,处理单元110也可周期性的询问(polling)译码单元是否发生单粒子翻转错误。一旦译码单元回复发生单粒子翻转错误,则进行重新组态。
虽然图1中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,已达成更佳的技术效果。此外,虽然图4、图5的流程图采用指定的顺序来执行,但是在不违法发明精神的情况下,熟习此技艺人士可以在达到相同效果的前提下,修改该多个步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,熟习此技艺人士亦可以将若干步骤整合为一个步骤,或者是除了该多个步骤外,循序或平行地执行更多步骤,本发明亦不因此而局限。
虽然本发明使用以上实施例进行说明,但需要注意的是,该多个描述并非用以限缩本发明。相反地,此发明涵盖了熟习此技艺人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。