双模式纠错码/可写入一次存储器编解码器的制作方法

文档序号:11949867阅读:350来源:国知局
双模式纠错码/可写入一次存储器编解码器的制作方法与工艺
计算机系统包括可操作地检索、处理和存储存储器设备中的数据的处理器。用于计算机系统中的存储器设备包括不同种类的存储器设备,其中不同类型的存储器设备一般具有不同的能力和操作特性。根据所述计算机系统的特定应用的需求,选择用于特定系统的存储器设备类型。例如,某些系统设计需要将数据写到非易失性存储器位置并从其读取数据的能力。然而,由于成本增加和/或性能特性降低,某些存储器设备解决方案(例如电可擦除只读存储器)不适于某些应用。技术实现要素:上面指出的问题能够在用于双模式纠错码(ECC)和可写入一次存储器(WOM)编码及解码的系统中解决,其包括例如用于在WOM模式和ECC模式之间选择一个的控制器。响应于所述控制器的编解码器布置为在所选的模式中操作。所述编解码器在所述ECC模式中操作时,布置为响应于第一接收的数据字的ECC奇偶校验位(paritybit),标识至少一个位错误(biterror)的位位置(bitposition)。所述编解码器在所述WOM模式中操作时,布置为从WOM设备中的编址位置(addressedlocation)接收WOM编码的字、接收要编码并写到所述编址位置的第二接收的数据字以及生成用于写到所述WOM设备中的编址位置的WOM编码的字。用于写到所述编址位置的WOM编码的字可选地是ECC编码的。提出本概述,理解其不用于解释或限制权利要求的范围或含义。进一步地,所述概述既不旨在标识请求保护的主题的关键特征或基本特征,也不旨在用于帮助确定请求保护的主题的范围。附图说明图1显示了根据本公开文件的实例性实施例的一种示意性计算系统。图2为根据本公开文件的实施例、包括管理ECC的WOM的一种处理系统的框图。图3示出了一种实例性存储器系统中的符号级WOM编码。图4为根据本公开文件的实施例、在ECC模式中操作的一种双模式ECC/WOM编解码器的框图。图5为用于根据本公开文件的实施例、在ECC模式中操作的一种双模式ECC/WOM编解码器的数据流图。图6为根据本公开文件的实施例、在WOM模式中操作的一种双模式ECC/WOM编解码器的框图。图7为用于根据本公开文件的实施例、在WOM模式中操作的一种双模式ECC/WOM编解码器的数据流图。图8为根据本公开文件的实施例的一种过程流图。具体实施方式下面的讨论导向本发明的各种实施例。虽然这些实施例中的一个或更多个可能是优选的,但不该将所述公开的实施例解释为或另外用于限制本公开文件、包括权利要求的范围。此外,本领域技术人员会理解下面的描述具有广泛的应用,任意实施例的讨论仅意指那个实施例的实例,不旨在暗示本公开文件、包括权利要求的范围限于那个实施例。整个以下描述——以及权利要求——中的某些术语用于指示特定的系统组件。如本领域技术人员理解的,各种名称可以用来指示组件或系统。因此,本文不必区分名称不同、功能并非不同的组件。进一步地,系统可以是另一系统的子系统。在下面的讨论和权利要求中,术语“包括”和“包含”以开放的方式使用,因此解释为意指“包括,但不限于......”。而且,术语“耦接到”或“与......耦接”(等等)旨在描述间接或直接的电连接。因而,假如第一设备耦接到第二设备,能够通过直接的电连接或经由其它设备和连接的间接电连接进行该连接。术语“部分”可能意指整个部分或小于整个部分的部分。图1显示了根据本公开文件的某些实施例的示意性计算系统100。例如,计算系统100为电子系统129或并入电子系统129,例如计算机、电子控制“盒”或显示器、通信装置(包括发送器)或任意其它类型的布置为生成射频信号的电子系统。在某些实施例中,计算系统100包括兆单元或片上系统(SoC),其包括例如CPU112(中央处理单元)的控制逻辑、存储114(例如,随机存取存储器(RAM))和电源110。CPU112可能是例如CISC型(复杂指令集计算机)CPU、RISC型CPU(精简指令集计算机)、MCU型(微控制器单元)或数字信号处理器(DSP)。存储114(可能是例如处理器上的高速缓存、脱离处理器的高速缓存、RAM、闪存或磁盘存储)存储一个或更多个软件应用130(例如,嵌入式应用),其由CPU112执行时,执行与计算系统100关联的任意适当功能。CPU112包括存储由存储114频繁访问的信息的存储器和逻辑。计算系统100通常受控于使用UI(用户界面)116的用户,在执行软件应用130期间UI(用户界面)116提供输出给所述用户并从其接收输入。使用显示器118、指示灯、扬声器、振动等提供所述输出。使用音频和/或视频输入(例如,使用语音或图像识别)和例如小键盘、开关、邻近探测器、陀螺仪、加速计等电和/或机械设备接收所述输入。CPU112耦接到I/O(输入-输出)端口128,其提供配置为从联网设备131接收输入(和/或提供输出给联网设备131)的接口。联网设备131能够包括任意能够与计算系统100点对点和/或联网通信的设备。计算系统100还能够耦接到外围设备和/或计算设备,包括有形的非瞬时性介质(例如闪存存储器)和/或有线或无线介质。这些及其它输入及输出设备选择性地由使用无线或无线连接的外部设备耦接到计算系统100。存储114能够例如由联网设备131访问。CPU112耦接到I/O(输入-输出)端口128,其提供配置为从外围设备和/或计算设备131接收输入(和/或提供输出给外围设备和/或计算设备131)的接口,所述接口包括有形的(例如,“非瞬时性”)介质(例如闪存存储器)和/或有线或无线介质(例如,联合测试行动小组(JTAG)接口)。这些及其它输入和输出设备选择性地由使用或有线连接的外部设备耦接到计算系统100。CPU112、存储114和电源110能够耦接到外部电源(未示出)或耦接到本地电源(例如电池、太阳能电池、交流发电机、电感场、燃料电池、电容器等)。计算系统100包括存储器138。存储器138适于相对快速的存储器访问,且一般使用固态存储器设备形成。此类固态存储器设备包括(电子纠错码)管理-ECC的WOM(可写入一次存储器)140。WOM140为在(例如)丢弃或擦除之前一般可写入一次(或相对少的次数)的存储器。管理ECC的WOM140写访问一般快于管理ECC的WOM140擦除循环(若有),且在一个实施例中,所述写访问能够将管理ECC的WOM140中的位位置从擦除状态变为写状态(例如“0”到“1”)。所述擦除状态一般取决于所选的技术,因此能够从“0”到“1”,或从“1”到“0”,所述写状态一般与所述擦除状态相反。(某些存储器设备可以在单个存储器单元中存储多个信息位,在此情况下,所写的位包括具有与擦除状态相反的状态的一个或更多个信息位。使用用于有效地写到WOM的WOM码写管理ECC的WOM140,这样被写到的WOM能够无(例如,块)擦除地多次被写。管理ECC的WOM140能够用于提供成本效率的非易失性存储器(NVM),其具有有限的重编程能力和/或数目增加的写/擦除循环(例如,相较于常规的NVM解决方案)。存储器138包括ECC-WOM(双模式)编解码器(编码器/解码器)142。编解码器142可操作地编码/解码ECC码、并编码/解码WOM码。如下讨论的,编解码器142通过使用校正子计算块来计算校正子、通过搜索校正子表来执行ECC操作以定位错误。编解码器142通过将所述校正子计算块用作用于WOM码的解码器来执行WOM操作,并在WOM编码过程期间重用所述校正子表。因此,编解码器142可操作地解码WOM编码、ECC解码的数据字(例如,从WOM设备中唯一编址的位置接收的)。图2为根据本公开文件的实施例、包括管理ECC的WOM的一种处理系统的框图。概言之,处理系统200包括MCU204和存储器控制器210。MCU204和存储器控制器210一般布置在共用基板202上。存储器控制器210通信地耦接到MCU204,并可操作地管理对(至少)管理ECC的WOM140的存储器设备以及例如RAM292、PROM(可编程只读存储器)294、和可选的EEPROM(电可擦除只读存储器)296(其可选地使用不同于基板202的基板形成)的存储器设备的存储器访问。操作时,存储器控制器210提供的存储器访问包括写操作和读操作。一般来说,如图2所示的上至下方向传输写操作中传递的数据,而以如图2所示的下至上方向传送读操作的数据。因此,主接口220布置为选择(例如,响应于用存储器访问命令提供的系统地址)向其写数据或从其读数据的存储器设备。存储器控制器210包括用于编码和解码ECC和WOM码的编解码器142。可写入一次存储器(WOM)码允许无擦除地写所述存储器多次,这增强了另外受限的设备的可编程性和/或增强了管理ECC的WOM140的写/擦耐久能力。编解码器142为低复杂度的编解码器,其通过在ECC管理器250和WOM管理器260之间共享组件来支持(例如,汉明型)ECC和WOM编解码器功能。编解码器142包括例如ECC管理器250的ECC控制器。写操作期间,ECC管理器250可操作地将纠错码应用于用于写到管理ECC的WOM140的数据。读操作期间,ECC管理器250可操作地评估检索到的数据,且如有需要,所述ECC控制器可操作地响应于所述评估执行纠正动作(例如,使用经由WOM管理器260从管理ECC的WOM140读取的ECC编码的数据来纠正检索到的数据)。编解码器142包括WOM管理器260。写操作期间,WOM管理器260可操作地使用用于将WOM(和ECC)编码的数据写到管理ECC的WOM140的WOM码来编码数据(例如,由使用ECC编码的ECC管理器260编码的数据)。读操作期间,WOM管理器260可操作地解码来自管理ECC的WOM140的WOM编码的数据。在解码所述WOM编码的数据后,将解码的数据传送到ECC管理器250以进一步根据用于初始编码写到管理ECC的WOM140的数据的ECC编码来解码。存储器控制器210包括存储器设备接口270。写操作期间,存储器设备接口270可操作地将编码的数据(例如,由使用ECC编码的ECC管理器260和使用WOM码的WOM管理器260编码的数据)写到管理ECC的WOM140。读操作期间,存储器设备接口270可操作地从管理ECC的WOM140读编码的数据。存储器设备接口270还可操作地对管理ECC的WOM140执行块初始化例程(例如,块擦除管理ECC的WOM140,这样将编址的存储器位置全都擦除/清除至逻辑0状态)。一般地,所述块初始化例程比管理ECC的WOM140的每次读或写循环需要更多的时间执行。在各种实施例中,WOM管理器260可操作地将有效负载数据编码为WOM编码的数据,这样ECC管理器250编码所述WOM编码的数据。类似地,ECC管理器250可操作地解码从存储器检索到的ECC编码的数据,这样WOM管理器260解码所述WOM编码的数据以检索初始编码的有效负载数据。能够使用有限次数地写到WOM存储器的n位符号(n-bitsymbol)来实现WOM编码。例如,表1示出了用于能够写到WOM两次的2位符号的WOM编码(例如,在需要存储器擦除之前)。表12位符号3位WOM码(第一次写)3位WOM码(第二次写)00000111011000111001010111001110表1的各行示出将2位符号WOM编码为3位字段。当将所述WOM编码的数据第一次写到WOM存储器时,仅在所述编码的数据中(最多)设置1位。当将所述WOM编码的数据第二次写到WOM存储器时,在所述编码的数据中设置(三个)位的至少两个。因此,WOM管理器260能够通过读取WOM位置(用于存储WOM编码的符号)中存储的数据(且例如不必依赖用于各存储器位置的独立计数器),来确定写到所述位置的次数。图3示出了一种实例性存储器系统中的符号级WOM编码。概言之,存储器系统300包括符号空间302和WOM码编码的存储器304。符号空间302包括具有值(例如)“00”的2位符号310。在操作312中,根据表1编码符号310。(要理解本文描述的原理及技术能够用于n位符号,且不仅限于2位符号)。WOM码编码的存储器304包括用于存储编码的符号312的3位值(“000”)320(例如,为了简化说明,使用用于WOM码编码的存储器304的擦除的位值“0”)。WOM码编码的存储器304易遭遇位错误,其可能导致数据丢失。在操作322中,存储器位置320的最低有效位发生错误。不管在编码的数据中使用(或不使用)纠错码,在所述编码的数据中可能有单个或多个位错误:纠错码的强度确定了在所述解码的数据中能够纠正的所述编码的数据中的错误的程度。因此,3位值320错误地变为3位值(“001”)330,其表示1位错误。在操作332中,根据表1读取和解码3位值(“001”)330,这样所述2位符号(表示解码的3位值330)具有值“11”。所述实例中的值“1”表示所述符号中的2位错误,尽管在WOM码编码的存储器304中仅发生1位错误。图4为根据本公开文件的实施例、在ECC模式中操作的一种双模式ECC/WOM编解码器的框图。ECC/WOM编解码器400包括解码器(DEC)410、异或(XOR)比较器420、XOR比较器430、m位计数器440、校正子表450和460(如下讨论的,其共同作为单张表操作,或其部分分离地作为两个单独可编址的表操作)、或门470、控制器480和模式选择器490。模式选择器490可操作地根据选择的模式控制ECC/WOM编解码器400的操作。例如,处理器(例如CPU112)通信地耦接到模式选择器490,以将ECC/WOM编解码器400置于ECC模式或WOM模式。通常,ECC/WOM编解码器400可操作地用于编码和解码存储器中存储的数据字。在一个实施例中,在ECC/WOM编解码器400中预期至多1位错误(且是可纠正的)(可能有遭遇一个以上可纠正错误的其它实施例)。下面描述(例如)ECC/WOM编解码器400的ECC模式,而下面关于图6和7描述了ECC/WOM编解码器400的WOM模式。在ECC模式中,编解码器400包括校正子计算块,其可操作地响应于接收到的ECC编码的字(例如,之前存储在存储器中的)计算校正子。如下参考下图讨论的,将计算的校正子用作校正子表450的索引来定位错误(在接收到的ECC编码的字中若有)。例如,响应于在接收到的ECC编码的字中检测到错误,断言信号“错误”(“err”)。如下关于图5讨论的,编解码器400可操作地确定检测到的错误的位位置,这样能够通过切换具有检测到的错误的位的值,纠正具有检测到的错误的位。图5为根据本公开文件的实施例、在ECC模式中操作的一种双模式ECC/WOM编解码器的数据流图。概言之,数据流图500示出在(例如汉明)ECC解码模式中操作的双模式ECC/WOM编解码器400的矩阵操作。对于每个接收的码字,响应于接收到的码字的值计算校正子。通过响应于计算的校正子索引所述校正子表,定位接收到的码字内的错误。数据流图500包括接收到的码字502、校验矩阵510、校正子矩阵520、校正子索引522和错误矢量矩阵530。接收到的码字矩阵502为接收到的码字(例如,接收到的数据矢量)的一维矩阵d[1]至d[15],其中各位易遭遇位错误。位d[1]至d[4]初始编码为数据位,而位d[5]至d[15]初始编码为奇偶校验位。校验矩阵510为具有行512、514、516和518的4x15矩阵,其中各行分别与接收到的码字的数据位(例如,位d[1]至d[4])关联。列c[1]至c[4]各具有一个设置位,其构成了与接收到的码字矩阵502的数据位的特定位的关联。列c[5]至c[15]各具有一个或更多个位,其设置为指示接收到的码字502的数据位的哪些位用于为各相应列c[5]至c[15]生成奇偶校验位。通过将接收到的码字矩阵502与校验矩阵510矢量乘,生成校正子矩阵520。校正子矩阵520指示,例如接收到的码字矩阵502是否无错误(例如,当校正子矩阵的所有位为0),且若否,接收到的码字矩阵502的哪一列包含位错误。当校正子矩阵520包括非零位值时,校正子矩阵520用于给索引522编址,以确定接收到的码字矩阵502的哪一列包含位错误。例如,错误矢量矩阵530包括(ECC)列e[1]至e[15]。所述列中的每列中的非零值指示接收到的码字矩阵502内的特定位的位错误。因此,校正子矩阵520的值用于选择错误矢量矩阵530内的特定行,其中所选的行中的非零位值的位置指示发生检测到的位错误的特定列。错误矢量矩阵530的各行为“陪集首(cosetleader)”,其在编码理论中指示具有最小数目的非零实体的字。图6为根据本公开文件的实施例、在WOM模式中操作的一种双模式ECC/WOM编解码器的框图。一般来说,ECC/WOM编解码器400在WOM模式中可操作地用于根据校正子计算编码和解码存储在存储器中的数据字,其中预期至多1位错误(可由关联的奇偶校验位纠正)。在WOM模式中操作的ECC/WOM编解码器400略微改动(例如,“重用”)在ECC模式中操作时所用的校正子计算块(例如,包括根据汉明解码操作的校正子表450和460)。因为具有码参数(大小)“m”的汉明解码器还能用符号大小mWOM=m-1编码/解码WOM码,所以当写到WOM和从其写的数据的大小小于“m”时,WOM编码/解码过程无需校正子计算块的整个部分。(如下参考图7讨论的,WOM模式的符号为3位长,而ECC模式的符号为4位长)。在WOM模式中,解码器410可操作地解码从WOM存储接收到的WOM编码的字(例如,“OldC”),并响应于此类解码,生成解码的数据(“OldD”)字。接收新数据(“NewD”)字,其具有待写到(例如)与读取OldD相同的WOM存储位置的信息。在区域602中,启动基于搜索的过程以确定候选数据字,响应于所述NewD字生成各候选数据字,且其中候选字中的(至少)一个候选字适于写到同一WOM存储位置。OldD及NewD信号由比较器420比较,其为可操作地作为响应生成第一德尔塔(delta)信号值(例如,“delta1”)的逐位异或门。m位计数器440在搜索过程中可操作地生成迭代处理的且例如与所述第一德尔塔信号值比较的各种计数值,这样确定可接受的WOM编码的候选(例如,如下描述的,在迭代地比较各种计数值与所述第一德尔塔信号值、并处理所述比较结果之后)。各生成的计数值通常不同于之前的计数值,不必按数值连续的顺序生成。m位计数器440生成的计数也用作第一候选数据字,其提供用于编址校正子表460的索引(X1)。校正子表460在WOM模式中可操作地响应于第一候选数据字X1,生成第一WOM编码的候选X1C。比较器430可操作地比较第一德尔塔信号值与m位计数器440生成的计数,以生成候选数据字X2。候选数据字X2可操作地作为用于编址校正子表450的索引。校正子表450在WOM模式中可操作地响应于第一候选数据字X2,生成第二WOM编码的候选X2C。在区域604中评估候选搜索过程的各迭代的成功。例如,第一WOM编码的候选X1C与第二WOM编码的候选X2C进行逻辑或(例如,通过或门470),以生成第二德尔塔信号值(“delta2”)。第二德尔塔信号值与OldC(例如,从WOM存储位置读取的之前编程的WOM编码的值)进行逻辑与(例如,通过控制器480)。假如控制器480操作的结果包含所有0,那么确定已找到合适的用于写到WOM存储位置的德尔塔候选(例如,参见信号“found_delta”),所述搜索过程不必进一步迭代。接着,将适当的德尔塔候选(X1C)写到编址的WOM存储位置。假如控制器480操作的结果包括非0值,那么确定还未找到合适的用于写到WOM存储位置的德尔塔候选,且指示所述搜索过程的至少一次随后迭代。在过程环路的各随后迭代中,生成不同的计数值(例如,通过递增计数器来确定),其用于生成如上讨论的进一步候选值。模式选择器490可操作地选择性将编解码器400置于例如ECC模式(例如,其中执行ECC编码和/或ECC解码功能)或WOM模式模式(例如,其中执行WOM编码和/或WOM解码功能)。“重用”编解码器400的部分(例如,解码器410和校正子表450)(例如在两种模式中可操作),这(例如)降低了另外实现独立的ECC解码器所需的设计复杂性。模式选择器490能够以硬件、软件或两者结合实现,其中在共用或分离的基板上形成所述实现方式。图7为根据本公开文件的实施例、在WOM模式中操作的一种双模式ECC/WOM编解码器的数据流图。概言之,数据流图700示出在WOM模式中操作的双模式ECC/WOM编解码器的矩阵操作。在WOM模式中,使用选择的部分校验矩阵510。例如,接收具有8位的接收到的WOM编码的字。因此,在WOM模式中选择(WOM)列c[1]至c[8]的三行(例如,行512、514、516)。(WOM模式中的)列c[1]至c[3]各具有一个位,其被设置为形成与接收到的码字矩阵的数据位的特定位的关联。列c[4]至c[7]各具有一个或更多个位,其被设置为指示接收到的码字502的数据位的哪些位用于为各相应列c[4]至c[7]生成奇偶校验位。通过将接收到的码字矩阵502与校验矩阵510(的WOM模式选择的位置)矢量乘,生成校正子矩阵X1(如上关于图6讨论的)。校正子矩阵X1用于编址索引522的第一部分702。以类似的方式,校正子矩阵X2(也如上关于图6讨论的)用于编址索引522的第二部分704。在WOM模式中,不同组的选择列用于生成第一WOM编码的候选X1C和第二WOM编码的候选X2C。例如,第一WOM编码的候选X1C与列e[1](与ECC模式列e[2]共享)、列e[2](与ECC模式列e[3]共享)、列e[3](与ECC模式列e[4]共享)、列e[4](与ECC模式列e[6]共享)、列e[5](与ECC模式列e[7]共享)、列e[6](与ECC模式列e[12]共享)和列e[7](与ECC模式列e[10]共享)的上8行关联。还例如,第二WOM编码的候选X2C与列e[1](与ECC模式列e[5]共享)、列e[2](与ECC模式列e[9]共享)、列e[3](与ECC模式列e[15]共享)、列e[4](与ECC模式列e[11]共享)、列e[5](与ECC模式列e[14]共享)、列e[6](与ECC模式列e[13]共享)和列e[7](与ECC模式列e[8]共享)的下8行关联。图8为根据本公开文件的实施例的一种过程流图。过程流始于端802,过程流程进行到操作810。在操作810中,选择操作(例如,可操作的)模式。例如,选择WOM(只写存储器)模式和ECC(纠错码)模式中的一个。因为从WOM设备中的编址位置读取的WOM编码的字还可能是ECC编码的,所以以与用于初始编码所述字的策略类型的次序兼容的次序选择所述模式(例如,解码)。程序流进行到步骤820。在操作820中,例如对从WOM设备接收的编码字执行ECC解码操作。程序流进行到步骤830。在操作830中,当例如覆写之前写到所述WOM设备中的编址位置的编程字时,执行WOM编码/解码操作。例如通过读和解码之前写到所述WOM设备中的编址位置的编程字,执行WOM编码/解码操作。结合新字使用解码的(旧)字来生成适于写到所述WOM设备中的编址位置的WOM编码。程序流进行到步骤840。在操作840中,将生成的具有适于写到所述WOM设备中的编址位置的WOM编码的字存储在所述WOM设备中。一般地,所述WOM设备是块初始化的(其中各WOM位设置或清除成同一逻辑状态),且通过将位从块初始化状态变为写(例如,编程)状态(与所述块初始化状态相反)被写。如上讨论的,通过使用WOM编码,能够覆写特定的WOM存储器位置至少一次。程序流进行到步骤850。在操作850中,检索、解码WOM中存储的字,并评估解码的字。例如,当从WOM设备读取的WOM解码的符号和ECC位指示错误时,ECC控制器可操作地响应于所述评估执行纠正动作(例如,纠正位错误、生成系统中断、用空闲的存储位置替换WOM设备的故障位置等)。程序流进行到程序流终止的端899。上面描述的各种实施例仅通过举例来提供,且不该解释为限制所附的权利要求。本领域技术人员容易认识到无需遵循本文所示、所描述的实例性实施例和应用,就能进行各种修改和改变,而不背离随后的权利要求的真实精神和范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1