CN111984457B - 对存储信息更新的方法和装置 - Google Patents

对存储信息更新的方法和装置 Download PDF

Info

Publication number
CN111984457B
CN111984457B CN201910436048.XA CN201910436048A CN111984457B CN 111984457 B CN111984457 B CN 111984457B CN 201910436048 A CN201910436048 A CN 201910436048A CN 111984457 B CN111984457 B CN 111984457B
Authority
CN
China
Prior art keywords
information
data information
candidate
data
written
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
CN201910436048.XA
Other languages
English (en)
Other versions
CN111984457A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910436048.XA priority Critical patent/CN111984457B/zh
Priority to PCT/CN2020/078768 priority patent/WO2020233203A1/zh
Publication of CN111984457A publication Critical patent/CN111984457A/zh
Priority to US17/230,056 priority patent/US11914895B2/en
Application granted granted Critical
Publication of CN111984457B publication Critical patent/CN111984457B/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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1056Updating check bits on partial write, i.e. read/modify/write
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Abstract

本申请实施例提供对存储的信息更新的方法和装置。控制器根据存储的数据信息和存储的错误校验码(ECC)校验信息对所述存储的数据信息执行ECC译码,生成纠错后的码字,所述纠错后的码字包括纠错后的数据信息。控制器根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息。控制器根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作,将所述候选写入的数据信息中未掩码的内容写入到内存中。通过本方法,使得候选写入的数据信息中只有没有被掩码的内容需要被写入,从而节省了因为更新数据内容的写入操作的功耗及时延。

Description

对存储信息更新的方法和装置
技术领域
本申请涉及通信技术领域,尤其涉及对存储的信息更新的方法和装置。
背景技术
在计算机领域中,内存是计算机系统的重要组成部分。计算机系统中内存的种类比较多,如随机存储器(random access memory,RAM)、闪存Flash及只读存储器(read onlymemorty,ROM)等。RAM是最为常见的系统内存,可以随机地对存储单元进行读出和写入操作。根据数据存储方式,RAM可以分为静态随机存取存储器(static RAM,SRAM)和动态随机存取存储器(dynamic RAM,DRAM)。
内存在使用的过程中,受到电路自身影响或者外界干扰,所存储的比特会出现比特翻转导致存储的数据错误。比特翻转是指,写入内存中的正确数据经过一段时间后可能会发生变化,使得正确的数据变为了错误的数据。
针对内存的上述缺陷,目前釆用错误校验码(Error Correcting Code,ECC)的校验机制,对内存中存储的数据进行错误检测及纠正。每当数据写入内存时,ECC使用ECC编码算法对数据进行计算,生成所述数据信息的ECC校验信息。所述数据信息的ECC校验信息简称为ECC校验信息,或校验信息。当写入内存的数据信息从内存中读出时,ECC译码器可以结合所述ECC校验信息采用ECC译码算法进行纠错操作,生成纠错后的数据信息。
传统的对已存储在内存中的数据进行更新方式包括:读出存储的数据信息进行ECC译码后并根据ECC译码生成的纠错后的数据信息进行更新;然后将更新的且包含了ECC纠错后的数据信息进行ECC编码,生成写入的数据信息和写入的ECC校验信息,将编码后生成的所述写入的数据信息和写入的ECC校验信息代替已存储的数据信息和ECC校验信息写入内存。因此,在对存储在内存中的码字(code-word)中数据信息进行更新时,写入内存中的信息为基于一次读出的存储的码字和更新的信息的全部数据信息。但是可能内存中所述存储的码字只有少数的数据(比如1比特或几比特)需要更新,大部分数据可能不需要重新进行写入操作。如果将码字的数据全部重新写入,不但会使得执行写操作过程中会浪费功耗,而且会增加写操作所需的时间。
发明内容
本申请实施例提供了对存储的信息更新的方法和装置,可以实现在对已存储在内存中的数据进行更新时,只需写入与已存储在内存中码字的数据信息不同的数据内容,而不需要将所述码字的数据信中已存储在内存中的所有的数据内容再次写入内存,从而可以减少写入时功耗的浪费以及执行写入操作的时间。
为达到上述目的,本申请实施例提供如下技术方案:
第一方面,本申请实施例提供一种对存储的信息更新的方法。控制器根据存储的数据信息和存储的错误校验码(ECC)校验信息对所述存储的数据信息执行ECC译码,生成纠错后的码字,所述纠错后的码字包括纠错后的数据信息。控制器根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息。控制器根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作。所述控制器将候选写入的数据信息中未掩码的内容写入到内存。通过本方法,使得写入的数据信息为所述候选写入的数据信息中没有被掩码的数据内容,而对于所述候选写入的数据信息中被掩码掉的数据内容不会写入到内存中,从而节省了因为更新数据内容的写入操作的功耗及时延。此外,本发明在写入信息前对已存储的信息进行了纠错,使得更新的内容基于纠错后的内容,保证了更新内容的准确性。
一种可能的实现方式中,所述更新数据的指示用于指示所述存储的数据信息中需更新的数据位置,所述控制器进一步根据所述更新数据的指示生成更新的数据信息。所述根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息包括:根据所述纠错后的数据信息和所述更新的数据信息生成所述候选写入的数据信息。通过本方法,只需指明需更新的位置,即可完成更新,使得更新更为灵活。
一种可能的实现方式中,所述根据所述纠错后的数据信息和更新的数据信息生成候选写入的数据信息包括:对所述纠错后的数据信息和所述更新的数据信息执行异或处理,生成所述候选写入的数据信息。通过异或处理生成所述候选写入的数据信息,使得操作简单。
一种可能的实现方式中,所述更新数据的指示用于指示更新的数据内容和更新的数据位置,所述根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息包括:根据所述更新的数据位置,使用所述更新的数据内容替换所述纠错后的数据信息中相同位置的数据内容。通过提供另一种更新数据指示,以及通过替换的方式生成所述候选写入的数据信息,使得更新更为灵活。
一种可能的实现方式中,所述控制器进一步对所述存储的数据信息和所述候选写入的数据信息执行异或处理,生成针对所述候选写入的数据信息的掩码控制信号,并根据所述针对所述候选写入的数据信息的掩码控制信号对所述候选写入的数据信息执行掩码操作。通过掩码操作,使得写入的数据信息更少,节省写入时间和消耗。
一种可能的实现方式中,所述控制器组合所述存储的数据信息和所述存储的ECC校验信息,生成存储的码字。通过本方法,为数据信息和ECC校验信息分开存储提供解决方案。
一种可能的实现方式中,所述控制器对所述候选写入的数据信息进行ECC编码,生成候选写入的ECC校验信息,以及将所述候选写入的ECC校验信息写入到所述内存中。通过本方法,使得所述候选的ECC校验信息也被写入到所述内存中,有利于更新后的数据信息使用ECC校验信息进行校验,保证信息的准确。
一种可能的实现方式中,所述纠错后的码字进一步包括纠错后的ECC校验信息,所述控制器进一步根据所述纠错后的ECC校验信息和更新的ECC校验信息生成候选写入的ECC校验信息;根据所述存储的ECC校验信息对所述候选写入的ECC校验信息执行掩码操作,以及将所述候选写入的ECC校验信息中未掩码的内容写入到内存中。通过本方法,对候选写入的ECC校验信息也进行掩码操作,减少写入的时间和消耗。
一种可能的实现方式中,所述控制器进一步对所述候选写入的数据信息进行ECC编码,生成候选写入的ECC校验信息,以及根据所述存储的ECC校验信息对所述候选写入的ECC校验信息执行掩码操作。所述控制器将所述候选写入的ECC校验信息中未掩码的内容写入到内存中。通过本方法,对候选写入的ECC校验信息也进行掩码操作,减少写入的时间和消耗。
一种可能的实现方式中,所述根据所述纠错后的ECC校验信息和更新的ECC校验信息生成候选写入的ECC校验信息包括:对所述纠错后的ECC校验信息和所述更新的ECC校验信息执行异或处理,生成候选写入的ECC校验信息。
一种可能的实现方式中,所述控制器进一步对所述候选写入的ECC校验信息和所述存储的ECC校验信息进行异或处理,生成针对所述候选写入的ECC校验信息的掩码控制信号,所述根据所述存储的ECC校验信息对所述候选写入的ECC校验信息执行掩码操作包括:根据所述针对所述候选写入的ECC校验信息的掩码控制信号对所述候选写入的ECC校验信息执行掩码操作。通过本方法,对候选写入的ECC校验信息也进行掩码操作,减少写入的时间和消耗。
第二方面,本发明实施例提供一种装置,该装置包括控制器和内存。所述内存用于存储数据信息和与所述数据信息对应的错误校验码(ECC)校验信息。所述控制器用于执行上述第一方面控制器执行的任何步骤。
第三方面,本发明实施例提供一种芯片,该芯片包括核心处理器和控制器。所述核心处理器用于通过所述控制器与内存交换数据。所述控制器用于执行上述第一方面控制器执行的任何步骤。
一种可能的实现方式中,所述芯片进一步包括内存,所述内存用于存储数据信息和与所述数据信息对应的错误校验码(ECC)校验信息。
第四方面,本发明实施例提供一种控制器。所述控制器包括处理电路和内存接口电路。所述内存接口电路用于提供所述控制器和内存之间的接口。所述处理电路用于通过所述内存接口电路与的内存交互,并执行上述第一方面控制器执行的任何步骤。
第五方面,本发明实施例提供一种装置。所述装置包括处理器和存储器。所述存储器用于存储计算机执行指令;所述处理器用于当该装置运行时,执行所述存储器存储的该计算机执行指令,以使该装置执行上述第一方面控制器执行的任何步骤。
第六方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任意一项所述的数据信息的生成方法。
第七方面,本发明实施例提供了一种装置,该装置包括错误校验码(ECC)译码器、候选信息生成模块和掩码控制模块。所述ECC译码器用于根据存储的数据信息和存储的错误校验码(ECC)校验信息对所述存储的数据信息执行ECC译码,生成纠错后的数据信息。所述候选信息生成模块用于根据所述纠错后的数据信息和更新的数据信息生成候选写入的数据信息。所述掩码控制模块根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作,使得所述候选写入的数据信息中未掩码的内容被写入到内存中。
第八方面,本发明实篱例提供了一种计算机程序产品,当该计算机产品被执行时,其用于执行上述方面所述的方法。
通过本发明实施例上述各方面的方法,针对需更新的数据内容,控制器对存储的数据信息进行纠错后再与更新的数据信息进行异或处理,并执行掩码操作生成写入的据信息数,使得写入的数据信息为所述候选写入的数据信息中没有被掩码的数据内容,而对于所述候选写入的数据信息中被掩码掉的数据内容不会写入到内存中,从而节省了单次因为更新数据内容的写入操作的功耗及时延。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为本发明实施例提供的装置的结构示意图;
图2为本申请实施例提供的对存储的信息更新的方法流程图;
图3为本申请实施例提供的在同一内存中存储的数据信息和ECC校验信息的示意图;
图4为本申请实施例提供的在不同内存中分别存储的数据信息和ECC校验信息的示意图;
图5为本申请实施例提供的控制器结构示意图;
图6A为本申请实施例提供的对存储的信息更新的方法的流程示意图;
图6B为本申请实施例提供的存储的数据信息De的示意图;
图6C为本申请实施例提供的更新的数据信息Df的示意图;
图6D为本申请实施例提供的根据掩码控制信号进行掩码操作并写入数据的示意图;
图6E为本申请实施例提供的根据掩码控制信号进行掩码操作并写入数据的另一示意图;
图7A为本申请实施例提供的对存储的信息更新的方法的另一流程示意图;
图7B为本申请实施例提供的根据纠错的数据信息和更新的数据信息生成候选写入的数据信息的示意图;
图8为本申请实施例提供的对存储的信息更新的方法的另一流程示意图;
图9为本申请实施例提供的对存储的信息更新的方法的另一流程示意图;
图10为本申请实施例提供的对存储的信息更新的方法的另一流程示意图;
图11为本申请实施例提供的对存储的信息更新的方法的另一流程示意图;
图12为本申请实施例提供的控制器的另一结构示意图;
图13为本申请实施例提供的包括控制器的装置的另一结构示意图;
图14为本申请实施例执行控制器功能的装置的另一结构示意图。
具体实施方式
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本发明实施例中数据信息指k比特的数据序列。ECC校验信息为p比特的数据序列。码字为n比特的数据序列。其中,n比特等于k比特加p比特。本发明实施例的数据内容,指特定比特的取值。本发明实施例中的数据位置指在数据信息、ECC校验信息或码字中的比特的位置,如第1比特,第3比特。更新的数据内容指需要更新的比特对应的取值,如针对第3比特和第5比特的取值,如0或1。
本发明实施例,在对存储在内存中的数据信息进行部分更新的场景下,由控制器对存储在内存中的数据信息进行ECC译码后生成纠错后的数据信息。所述控制器根据纠错后的数据信息和更新数据的指示(比如更新的数据位置,或更新的数据内容和位置)生成候选写入的数据信息。所述控制器根据存储的数据信息和所述候选写入的数据信息,确定实际需要更新的比特或字节,以及将所述候选写入的数据信息中所述确定的比特或字节写入到内存中。通过本方法,避免了将所述候选写入的数据信息的所有内容全部写入到内存中,减少了对已存储的数据信息进行更新时的写入操作的功耗和时延。
作为一个例子,包含ECC校验信息的码字Ce为72比特,码字Ce包括64比特的数据信息De和8比特的ECC校验信息Pe。所述控制器在对所述存储的数据信息De进行更新时,如更新其中1个或2个比特,根据ECC校验信息Pe对存储的数据信息De进行ECC译码生成的纠错后的数据信息,再根据更新的1个或2个比特的信息和所述纠错后的数据信息生成64比特的候选写入的数据信息Dn。所述控制器根据存储的数据信息De和所述候选写入的数据信息Dn确定实际需要更新的比特或字节(比如只需更新的1个或2个比特的值,或更新的1个或2个比特的值以及在ECC译码时被纠错的比特的值)。因此,只有所述确定的1或2个比特(或字节)的值需要写入内存中,而不需将整个候选写入的数据信息Dn的64个比特的全部内容都写入内存中,减少写入操作的功耗和时延。
图1为本发明实施例提供的用以对存储的信息更新的装置的架构示意图。如图1所示,装置100至少可以包括控制器106,处理器110和至少一个内存108。控制器106通过系统总线与处理器110和内存108进行数据交换。
在本实施例中,控制器106可以与处理器110集成在同一芯片,控制器106也可以是单独的芯片。控制器106、处理器110和内存108也可以集成在同一芯片。控制器106可实现对存储在内存中的数据信息和ECC校验信息进行控制和读写。需要说明的是,本发明实施例提供的装置中,除了图1所示的器件外,装置100还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器110为控制器106提供计算和处理能力,以及能够对内存108、缓存及磁盘的访问实现。
控制器(Controller)106用于控制内存108以及管理与规划从内存108到处理器110间的数据传输的总线电路控制器。控制器106可以由硬件实现,也可以由软件来实现。实际应用中,控制器106可以控制必要的逻辑以将数据写入内存108或从内存108中获取数据。
一个或多个内存108。内存108是装置100的主存。内存108通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。处理器110能够通过控制器106访问内存108,对内存108进行读操作和写操作。一个或多个内存108用于存储数据信息以及存储所述数据信息的ECC校验信息。所述数据信息和ECC校验信息可如图3所示存储在同一个内存中,还可以如图4所示分别存储在不同的内存中。内存108可以是RAM、Flash、ROM等。
图2为本发明实施例提供的一种对存储的信息更新的方法流程图。执行该方法的控制器可以为图1中的控制器106。该方法包括:
步骤202、控制器106获取存储在内存108中的数据信息和ECC校验信息。
所述数据信息和ECC校验信息可以存储在一个内存108中,也可以存储在不同的内存108中。
步骤204、控制器106对所述存储的数据信息和ECC校验信息进行ECC译码,生成纠错后的数据信息。
步骤206、控制器106接收更新数据的指示,以更新存储在内存108中的数据信息。
所述更新数据的指示用于指示所述存储的数据信息中需更新的数据位置(比如指示第几比特需要更新)。或所述更新的数据指示用于指示更新的数据内容和更新的数据位置(比如指示需更新的比特位置和取值)。
步骤208、控制器106根据所述纠错后的数据信息和所述更新数据的指示生成候选写入的数据信息。
控制器106可以对所述纠错后的数据信息和所述更新的数据信息执行异或处理,生成所述候选写入的数据信息。或控制器106根据所述更新的数据位置,使用所述更新的数据内容替换所述纠错后的数据信息中相同位置的数据内容,生成所述候选写入的数据信息。
步骤210、控制器106根据所述存储的数据信息和所述候选写入的数据信息,确定实际需要更新的比特或字节;
所述确定实际需要更新的比特或字节可以为:控制器106根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作,所述候选写入的数据信息中没有被掩码的内容为实际需要更新的比特或字节。所述确定实际需要更新的比特或字节还可以为:控制器106比如所述存储的数据信息和所述候选写入的数据信息,所述候选写入的数据信息中与所述存储的数据信息取值不同的比特或字节为实际需要更新的比特或字节。
步骤212、控制器106将所述候选写入的数据信息中所述确定的实际需要更新比特或字节写入到内存中。
在图2对应的方法实施例中,控制器106对所述存储的数据信息进行纠错生成纠错后的数据信息,再根据所述纠错后的数据信息与更新数据的指示生成候选写入的数据信息,并根据所述存储的数据信息对所述候选写入的数据信息确定实际需要更新的比特或字节,将所述所述确定的比特或字节的内容写入到内存中。本发明实施例针对需更新的数据信息,进行最小化的写入操作。在存储的数据信息中只有几个比特甚至一个比特需要更新的场景下,无需更新存储的数据信息中的所有比特的内容,节省了单次写入操作的功耗及时延。此外,本发明在写入信息前对已存储的信息进行了纠错,使得更新的内容基于纠错后的内容,保证了更新内容的准确性。
图3为本发明实施例提供的内存108存储的码字(code-word)的形式。码字包含数据信息以及该数据信息的ECC校验信息。同一码字的数据信息以及该数据信息对应的ECC校验信息存储于同一个内存108中。比如,所述数据信息以及该数据信息对应的ECC校验信息具有相同的读写地址,控制器106可以通过所述读写地址一次性获取所述数据信息和对应的ECC校验信息。图1中的内存108可以为图3的形式,同一码字的数据信息102和ECC校验信息104存储在同一个内存中。
图4为本发明实施例提供的存储的码字的另一种可选方式。在此种可选方式中,码字的数据信息和对应的ECC校验信息存储在不同的内存108之中。比如,内存108-1中存储码字的数据信息,内存108-2存储码字的ECC校验信息。也即数据信息和ECC校验信息具有不同的读写地址。装置100中存储有数据信息和ECC校验信息在不同内存中的存储地址的映射表,或在不同内存中的存储地址(如数据信息的存储地址和ECC校验信息的存储地址)和码字的映射关系表。比如在装置100中的硬盘或flash中存储数据信息和ECC校验信息的存储地址的映射表。控制器106根据所述映射表分别读取所述数据信息和与所述数据信息对应的ECC校验信息。图1的装置示意图中,码字的存储也可以采用图4中的形式,即同一码字的数据信息和所述ECC校验信息存储在不同的内存108中。
图5为本发明实施例提供的控制器的结构示意图。如图5所示,控制器106包含ECC译码器501、ECC编码器502、候选信息生成模块503、控制信号生成模块504、掩码控制模块505、序列生成模块506和组合模块507。控制器106可以是图1中的控制器。
ECC译码器501用于根据存储的数据信息和存储的ECC校验信息对所述存储的数据信息执行ECC译码,生成纠错后的码字,所述纠错后的码字包括纠错后的数据信息;
候选信息生成模块503用于根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息;
掩码控制模块505根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作,所述候选写入的数据信息中未掩码的内容被写入到内存中。
进一步的,控制器106中的各模块可以执行图6A、图7A、图8-图11以及上述图4的方法流程中的控制器106的相应模块执行的步骤。
图6A为本发明实施例提供的对存储的信息更新的方法流程示意图。执行该方法的控制器可以为图4或图5中的控制器106。即执行图6A中方法的控制器106包括ECC译码器501、ECC编码器502、候选信息生成模块503、控制信号生成模块504、掩码控制模块505以及序列生成模块506。该方法中,码字的存储方式采用图3示意的方式,即码字的数据信息和ECC校验信息储存在同一个内存108中。
在图6A提供的实施例中,控制器106根据更新内容的指示生成更新的码字Cf,将根据纠错后的码字Cc与所述更新的码字Cf生成候选写入的码字Cn。然后控制器106根据存储的码字Ce对候选写入的码字Cn进行掩码操作,将所述候选写入的码字Cn中未掩码的内容写入到内存108中。该方法包括如下步骤:
步骤601、ECC译码器501以及控制信号生成模块504获取存储在内存108中的码字Ce。所述存储在内存108中的码字简称存储的码字Ce
所述存储的码字Ce包含存储的数据信息De以及与数据信息对应的ECC校验信息Pe,即Ce=[De Pe]。
值得说明的是,本发明实施例中的获取可以是读取、主动获取、或接收。
作为一个例子,假设存储的码字Ce的长度为n比特。所述存储的数据信息De的长度为k比特,存储的ECC校验信息Pe的长度为p比特。即n=k+p。
所述存储的数据信息De可以参考图6B所示。在图6B中,存储的数据信息De包括k个比特,每一个小格代表一个比特。一个字节包括连续的8个比特。
步骤602、候选信息生成模块503获取ECC译码器501生成的纠错后的码字Cc
ECC译码器501在获取所述存储的码字Ce后,对所述存储的码字Ce进行ECC译码,生成纠错后的码字Cc。所述纠错后的码字Cc包括纠错后的数据信息Dc和纠错后的ECC校验信息Pc。所述纠错后的ECC校验信息为所述纠错后的数据信对应的ECC校验信息。
步骤603-1、序列生成模块506获取更新数据的指示,并根据所述更新数据的指示生成需要更新的数据信息。所述更新数据的指示用于指示所述存储的码字Ce中需要更新的数据位置。
内存108中所述存储的码字Ce的数据需要更新时,可能只需要更新所述存储的码字Ce中部分比特(比如一个或几个比特)的取值。序列生成模块506获取所述更新数据的指示,根据所述更新的数据位置生成更新的数据信息Df。所述更新的数据信息Df为与所述存储的数据信息De长度相同的比特序列,即所述更新的数据信息Df为长度等于k的比特序列。所述Df中取值为1的比特指示了需要更新的数据位置,比如存储的数据信息De中第1个比特、第3个比特等。如图6C所示,如果存储的数据信息De的第3-5个比特的取值需要更新,其他比特不需要更新,在所述更新的数据信息Df中,序列生成模块506将需更新的比特设置为1,不更新的比特设置为0。则更新的数据信息Df为[0,0,1,1,1,0,…,0]。
值得说明的是,步骤601和603-1没有时间的先后顺序。
步骤603-2、ECC编码器502获取所述更新的数据信息Df。所述更新的数据信息Df为长度等于k的比特序列。所述更新的数据信息Df中取值为1的比特为在存储的码字Ce中需要更新的比特。
值得说明的是,步骤601和603-2没有时间的先后顺序。
步骤604、候选信息生成模块503获取ECC编码器502生成的更新的码字Cf
ECC编码器502获取所述更新的数据信息Df后,对所述更新的数据信息Df进行ECC编码,生成更新的码字Cf。所述更新的码字Cf包括更新的数据信息Df和更新的ECC校验信息Pf。所述更新的ECC校验信息Pf为所述更新的数据信息Df对应的ECC校验信息Pf
值得说明的是,步骤602和604没有时间的先后顺序。
步骤605、掩码控制模块505以及控制信号生成模块504获取候选信息生成模块503生成的候选写入的码字Cn
在ECC译码器501生成所述纠错后的码字Cc以及ECC编码器502生成所述更新的码字Cf后,候选信息生成模块503根据所述纠错后的码字Cc以及所述更新的码字Cf生成候选写入的码字Cn。所述候选写入的码字Cn的部分内容会被写入到内存108中。所述候选写入的码字Cn包含候选写入的数据信息Dn和候选写入的ECC校验信息Pn
作为一个例子,候选信息生成模块503可对所述纠错后的码字Cc以及所述更新的码字Cf执行异或处理,生成所述候选写入的码字Cn。即Cn=Cf^Cc。异或是一种逻辑运算,在执行异或处理a和b(如a^b)时,对a和b的数据序列进行逐比特位比较。如果a、b两个数据在相同比特位的值不同,则异或结果为1。如果a、b两个值相同,异或结果为0。比如,a=[0011110101],b=[0000111000],a^b=[0011001101]。因此,在Cf^Cc时,Cf和Cc的相同比特位的值如果相同,由Cn在对应比特的取值为0,反之取值为1。
步骤606、掩码控制模块505获取控制信号生成模块504生成的掩码控制信号S。
控制信号生成模块504在获取候选信息生成模块503生成的所述候选写入的码字Cn后,根据所述候选写入的码字Cn与所述存储的码字Ce生成针对所述候选写入的码字Cn的掩码控制信号S。
比如,控制信号生成模块504对所述候选写入的码字Cn与所述步骤601中存储的码字Ce进行异或处理,生成掩码控制信号S。即S=Cn^Ce。所述掩码控制信号简称控制信号。所述掩码控制信号S可用于对候选写入的码字Cn执行掩码操作。所述掩码操作指对一串二进制数字,通过与目标数字(即所述候选写入的码字Cn)的按位操作,屏蔽当前的输入位。进一步的,所述针对候选写入的码字Cn的掩码控制信号S包括针对候选写入的数据信息Dn的掩码控制信号S1和针对所述候选写入的ECC校验信息Pn的掩码控制信号S2。
所述针对候选写入的码字Cn的掩码控制信号S为长度等于n的比特序列,用于指示对具有相同长度的所述候选写入的码字Cn执行掩码操作。控制信号生成模块504在对所述候选写入的码字Cn与所述存储的码字Ce执行处理时(比如异或处理)时,比较所述候选写入的码字Cn和所述存储的码字Ce。如Cn相同位置的数值与Ce相同位置的数值相同,则控制信号S的相应位置的内容为0。如Cn相同位置的数值与Ce相同位置的数值不同,则控制信号S的相应位置的内容为1。
可参考图6D所示,所述候选写入的码字Cn的长度为n比特,包括k比特的数据信息,p比特的ECC校验信息。图6D中的掩码控制信号S的长度也为n比特。图6D中所示的掩码控制信号S中,内容为1的比特指示对于所述候选写入的码字的相应比特不执行掩码操作。内容为0(图中未示出)的比特指示对于所述候选写入的码字的相应比特执行掩码操作。根据图6D中所示的掩码控制信号S,掩码控制模块505对所述候选写入的码字Cn的第1比特和第5比特的不执行掩码操作,而对所述候选写入的码字Cn的其它比特执行掩码操作。
步骤607、掩码控制模块505对所述候选写入的码字Cn执行掩码操作,以使得所述候选写入的码字Cn中未掩码的内容被写入内存108中。
所述未掩码的内容包括所述候选写入的码字Cn中未掩码的数据内容和/或未掩码的ECC校验内容。所述掩码控制模块505在获取控制信号生成模块504生成的掩码控制信号S后,根据所述掩码控制信号S对所述候选写入的码字Cn执行掩码操作。掩码(data mask)技术,可以屏蔽指定位(比如比特或字节)从而达到按位(如比特或字节)操作。所述掩码操作指一串二进制数字,通过与目标数字的按位操作,屏蔽当前的输入位。
掩码控制模块505根据图6D的掩码控制信号S对所述候选写入的码字Cn进行掩码操作。如果掩码控制信号S的相应位置(如比特)的内容为为0,则对所述候选写入的码字Cn的相应位置执行掩码操作。即所述候选写入的码字Cn中的相应位置的内容被屏蔽,不需要写入到存储模块中。如果控制信号S中内容为1的位置,所述候选写入的码字Cn中的相应位置的内容不被屏蔽,需要写入到内存108中。仍以图6D为例,控制信号S中的第1,5比特的取值为1,其他比特的取值为0(图中未示出)。所述候选写入的码字Cn中的除第1和5个比特以外的比特的内容都被掩码,不用存储到所述存储的码字Ce的相应位置中。只有第1和第5个比特的内容需要写入到内存中。
仍以图6D为例,所述n比特的更新后的码字Cu中的第1和第5比特的数据内容为写入的更新的数据内容。所述更新后的码字Cu的其它位置仍然是所述存储的码字Ce的相应位置的信息。因此,通过本方法,当对存储的数据进行部分更新时,只需写入少量的更新的比特(如第1和第5比特),节省了写入的时间和功耗。
作为另一种可选方式,掩码控制模块505还可以以字节为单位执行掩码操作。掩码控制模块505在收到控制信号生成模块504生成的控制信号S后,确定所述控制信号S中相应字节的所有比特的取值都为0之后,对该字节执行掩码操作。如图6E所示,n比特的掩码控制信号S包含针对m个字节的掩码控制信号。第1字节内的所有比特的取值均为0。第m字节中的第2,4,6,7,8比特为1,其他比特为0。由于第m字节中至少一个比特的取值不为0,因此掩码控制模块505对于第m字节不执行掩码操作,第m字节的内容需要写入到内存108中。因此,在n比特的更新后的码字Cu中,第m字节的内容是写入的更新的数据内容。
此外,为了提升掩码效率,掩码控制模块505还可以以多个字节为单位执行掩码操作。比如,只有当相邻两个或多个字节的所有比特的取值都为0时,掩码控制模块505才对所述候选写入的码字的相应位置的内容执行掩码操作。
也就是说,所述根据所述控制信号S对所述候选写入的码字Cn执行掩码操作可以为:掩码控制模块505屏蔽所述候选写入的码字Cn中控制信号S中取值为0的比特,或屏蔽所述候选写入的码字Cn中控制信号S中所有比特取值0的字节,或屏蔽所述候选写入的码字Cn中控制信号S指示相邻的多个字节中所有比特取值为0的所述相邻的多个字节。
通过本发明实施例提供的方法,针对更新数据的位置生成更新的码字,控制器106根据对所述存储的码字进行纠错后生成的纠错后的码字以及根据所述更新的码字生成所述候选写入的码字。控制器106对所述候选写入的码字执行掩码操作,将所述候选写入的码字中没有被掩码的内容写入到内存中。本发明给出了一种针对需更新的比特序列及相应的ECC信息,进行最小化的写入操作。在存储的字节中只有部分比特甚至一个比特需要更新的场景下,无需更新字节的所有比特,节省了单次写入操作的功耗及时延。此外,本发明在更新前对已存储的信息进行了纠错,使得更新的内容为基于纠错后的内容,保证了更新内容的准确性。
图7A为本发明实施例提供的对存储的信息更新的方法流程示意图。执行该方法的控制器可以为图5中的控制器106。即控制器106包括ECC译码器501、ECC编码器502、候选信息生成模块503、控制信号生成模块504以及掩码控制模块505。该方法中,码字的存储方式采用图3示意的方式,即码字的数据信息和ECC校验信息储存在同一个内存108中。
与图6A中控制器106接收的是更新数据位置,根据更新的数据位置生成更新的数据信息,并对更新的数据信息ECC编码生成需更新的码字,然后对纠错后的码字以及需要更新的码字生成候选写入的码字Cn。而在图7A提供的实施例中,控制器106接收的是更新的数据位置和更新的数据内容,并根据纠错后的数据信息Dc与所述更新的数据内容和所述数据位置生成候选写入的数据信息Dn。ECC编码器502对所述候选写入的数据信息Dn进行ECC编码生成候选写入的码字Cn。图7A提供的方法包括如下步骤:
步骤701、ECC译码器501以及控制信号生成模块504获取存储在内存108中的码字Ce。所述存储的码字Ce包含存储的数据信息De和与所述数据信息对应的ECC校验信息Pe。即Ce=[De Pe]。
作为一个例子,假设存储的码字Ce的长度为n比特。所述存储的数据信息De的长度为k比特,存储的ECC校验信息Pe的长度为n-k比特。
ECC译码器501以及控制信号生成模块504获取的存储的数据信息可以参数图6B所示。在图6B中,存储的数据信息De包括k比特,每一个小格代表一比特。一个字节包括连续的8比特。
步骤702、候选信息生成模503获取ECC译码器501生成的纠错后的数据信息Dc
ECC译码器502在获取所述存储的码字Ce后,对所述存储的码字Ce进行ECC译码,生成纠错后的码字Cc,所述纠错后的码字Cc包含所述纠错后的数据信息Dc和纠错后的ECC校验信息Pc
作为一个例子,所述纠错后的数据信息Dc参考图7B所示。图7B中1小格代表1比特。其中,第3-5比特为需要更新的比特。
步骤703、候选信息生成模块503获取更新数据的指示,并根据所述更新数据的指示生成候选写入的数据信息。所述更新数据的指示用于指示更新的数据内容和更新的数据位置。
当内存中存储的码字的相应位置的数据内容需要进行更新时,在一些逻辑计算操作中,只需要将纠错后的数据信息的部分r个连续比特进行更新,其他数据信息保留。r为等于或大于1的正整数。
值得说明的是,步骤701和703没有时间的先后顺序。
步骤704、ECC编码器502获取候选信息生成模块503生成的候选写入的数据信息Dn
在获取所述更新的数据内容和的所述更新的数据位置后,候选信息生成模块503根据所述更新的数据位置,使用所述更新的数据内容替换所述纠错后的数据信息Dc的相应位置(比特)的内容。
作为另一种可选方式,控制器106还可以包括序列生成模块506,序列生成模块506获取更新的数据内容,并根据更新的数据内容生成更新的数据信息Df。如图7B所示,所述更新的数据信息Df为k比特的数据序列。在所述更新的数据信息Df中,第3-5个比特的内容为更新的数据内容。候选信息生成模块503在获取所述纠错后的数据信息Dc以及更新的数据信息Df以后,将Dc中的第3-5比特替换为Df中的3-5比特的内容,Dc中的其他位置的数据保留,从而生成所述候选写入的数据信息Dn
步骤705、控制信号生成模块504以及掩码控制模块505获取ECC编码器502生成的所述候选写入的码字Cn
ECC编码器502对所述候选写入的数据信息Dn进行ECC编码,生成所述候选写入的码字Cn。所述候选写入的码字Cn包括所述候选写入的数据信息Dn以及候选写入的ECC校验信息Pn。所述候选写入的ECC校验信息Pn为ECC编码器502根据所述候选写入的数据信息Dn进行ECC编码生成的。
步骤706、掩码控制模块505获取控制信号生成模块504生成的掩码控制信号S。
控制信号生成模块504获取到所述候选写入的码字Cn后,根据所述候选写入的码字Cn与所述步骤701中存储的码字Ce生成针对所述候选写入的码字Cn掩码控制信号S。掩码控制模块505生成针对所述候选写入的码字Cn的掩码控制信号S可参考图6A对应的实施例中步骤606的描述,本发明实施例在此不再详述。
步骤707、掩码控制模块505对所述候选写入的码字Cn执行掩码操作,以使得未掩码的内容被写入内存108中。
所述未掩码的内容包括未掩码的数据内容和/或未掩码的ECC校验内容。所述掩码控制模块505在获取控制信号生成模块504生成的掩码控制信号S后,根据所述掩码控制信号S对所述候选写入的码字Cn执行掩码操作。
作为另一种可选方式,掩码控制模块505还可以以一个或多个字节为单位执行掩码操作。掩码控制模块505对以一个或多个字节为单位的掩码操作可以参见图6A对应实施例的描述,本发明实施例在些不再详述。
也就是说,所述根据所述控制信号S对所述候选写入的码字Cn执行掩码操作可以为:掩码控制模块505屏蔽所述候选写入的码字Cn中控制信号S中取值为0的比特,或屏蔽所述候选写入的码字Cn中控制信号S中所有比特取值为0的字节,或屏蔽所述候选写入的码字Cn中控制信号S指示相邻的多个字节中所有比特为取值为0的所述相邻的多个字节。
控制器106将所述候选写入的码字Cn中未掩码的内容写入到内存108中。
通过图7所示的方法,控制器106处理更新的数据时,对于存储的数据信息De进行ECC纠错生成纠错后的数据信息Dc。控制器106根据更新的数据内容和数据位置以及所述纠错后的数据信息Dc生成所述候选写入的数据信息Dn,根据所述候选写入的数据信息Dn生成所述候选写入的码字Cn。控制器106对所述候选写入的码字Cn执行掩码操作,将所述候选写入的码字Cn中没有被掩码的内容写入到内存108中。本发明给出了一种针对需更新的数据信息及相应的ECC信息,进行最小化的写入操作。在存储的数据信息De中只有部分比特的数据甚至一个比特的数据需要更新的场景下,无需更新字节的所有比特,节省了单次写入操作的功耗及时延。此外,本发明在更新前对已存储的信息进行了纠错,使得更新的内容为基于纠错后的内容,保证了更新内容的准确性。
图8为本发明实施例提供的对存储的信息更新的方法流程图。执行该方法的控制器可以为图5中的控制器106。即控制器106包括ECC译码器501、ECC编码器502、候选信息生成模块503、控制信号生成模块504、掩码控制模块505、序列生成模块506以及组合模块507。该方法中,码字的存储方式采用图4示意的方式,即码字的数据信息和ECC校验信息储存在不同的内存108中。即同一码字的数据信息和ECC校验信息具有不同的读取地址。
图8提供的实施例与图6A类似,即控制器106接收的是更新的数据内容,并根据更新的数据内容生成更新的数据信息。与图6A提供的实施例相比,图8中的数据信息De和ECC校验信息Pe分别存储在不同的内存108中。比如,数据信息De存储在内存108-1,ECC校验信息Pe存储在内存108-2中。与图6的控制器106不同的是,图8中的控制器106还包含组合模块507,用于将存储在不同内存中的数据信息De和ECC校验信息Pe组合为码字Ce。图8提供的方法包括如下步骤:
步骤801、组合模块507获取存储在内存108-1中的数据信息De
此外,控制信号生成模块504也获取存储在内存108-1中所述数据信息De
步骤801’、组合模块507获取与所述数据信息De对应的存储于内存108-2中的ECC校验信息Pe。所述存储的数据信息De对应的ECC校验信息Pe简称为存储的ECC校验信息Pe
在本实施例中,内存108-1和内存108-2对同一个码字(比如Ce)的数据信息De和校验信息进行映射存储Pe
值得说明的是,步骤801和801’没有执行的先后顺序。
步骤802、ECC译码器501获取组合模块507生成的组合的码字Ce
组合模块507在获取存储的数据信息De和存储的ECC校验信息Pe后,组合所述存储的数据信息De和所述存储的ECC校验信息Pe,生成组合的码字Ce,即Ce=[De Pe]。
组合模块507组合所述存储的数据信息De和存储的ECC校验信息Pe可以采用现有的组合方式,本发明实施例在此不再详述。
步骤803、候选信息生成模块503获取ECC译码器501生成的纠错后的码字Cc
ECC译码器501在获取所述组合的码字Ce后,对所述组合的码字Ce进行译码,生成纠错后的码字Cc。所述纠错后的码字Cc包括纠错后的数据信息Dc和纠错后的ECC校验信息Pc
步骤804-1,804-2与步骤603-1和603-2相同。本发明实施例在此不再详述。
步骤805、候选信息生成模块503获取ECC编码器502生成的更新的码字Cf
ECC编码器502获取所述更新的数据信息Df后,对所述更新的数据信息Df进行ECC编码,生成更新的码字Cf。所述更新的码字Cf包括所述更新的数据信息Df和更新的ECC校验信息Pf。所述更新的ECC校验信息Pf为所述更新的数据信息Df对应的的ECC校验信息Pf
步骤806、掩码控制模块505以及控制信号生成模块504获取候选信息生成模块503生成的候选写入的数据信息Dn
候选信息生成模块503在获取所述纠错后的码字Cc以及所述更新的码字Cf后,根据所述纠错后的码字Cc以及所述更新的码字Cf生成候选写入的码字Cn。所述候选写入的码字Cn的部分内容会被写入到内存108。所述候选写入的码字Cn包含候选写入的数据信息Dn和候选写入的ECC校验信息Pn
比如,候选信息生成模块503可采用异或的方式,对所述纠错后的码字Cc以及所述更新的码字Cf执行异或操作,生成候选写入的码字Cn。即Cn=Cf^Cc
步骤807、控制器将所述候选写入的ECC校验息Pn写入至内存108-2中。
在候选信息生成模块503生成候选写入的码字Cn后,掩码控制模块505获取所述候选写入的数据信息Dn。所述候选写入的ECC校验信息Pn被写入内存108-2中。
步骤808、掩码控制模块505获取控制信号生成模块504生成的掩码控制信号S。
控制信号生成模块504在获取候选信息生成模块503生成的所述候选写入的码字Cn后,根据将所述候选写入的码字Cn与所述步骤601中存储的码字Ce生成掩码控制信号。
比如,控制信号生成模块504将所述候选写入的码字Cn包含的所述候选写入的数据信息Dn与所述步骤801中获取的存储的数据信息De进行异或处理,生成所述掩码控制信号S。即S=Dn^De.所述掩码控制信号S包含针对所述候选写入的数据信息Dn的掩码控制信号S1。
控制信号生成模块504对候选写入的数据信息Dn与存储的数据信息De进行异或处理的方法参考上606的描述,本发明实施例不再详述。
步骤809、掩码控制模块505对所述候选写入的数据信息Dn执行掩码操作,将所述候选写入的数据信息Dn中未掩码的内容被写入内存108-1中。
所述未掩码的内容为未掩码的数据内容,即未掩码的比特的取值。所述掩码控制模块505在获取控制信号生成模块504生成的掩码控制信号S后,根据所述掩码控制信号S对所述候选写入的数据信息Dn执行掩码操作。
也就是说,所述根据所述控制信号S对所述候选写入的数据信息Dn执行掩码操作可以为:掩码控制模块505屏蔽所述候选写入的数据信息Dn中控制信号S取值为0的比特,或掩码控制模块505屏蔽所述候选写入的数据信息Dn中控制信号S指示所有比特取值0的字节。
图9为本发明实施例提供的对存储的信息更新的方法流程图。执行该方法的控制器可以为图5中的控制器106。即控制器106包括ECC译码器501、ECC编码器502、候选信息生成模块503、控制信号生成模块504、掩码控制模块505以及组合模块507。该方法中,码字的存储方式采用图4示意的方式,即码字的数据信息和ECC校验信息储存在不同的内存中。
图9提供的实施例的流程与图7A类似,控制器106接收的是更新的数据内容和数据位置,候选信息生成模块203根据所述更新的数据内容和数据位置以及纠错后的数据信息生成候选写入的数据信息。与图7A提供的实施例相比,图9中的数据信息和ECC校验信息分别存储在不同的内存中。比如,数据信息存储在内存108-1,ECC校验信息存储在内存108-2中。因此,在译码器501进行译码前,组合模块507需要先将存储的ECC校验信息和数据信息组合,生成组合的码字。图9提供的方法包括如下步骤:
步骤901、组合模块507获取存储在内存108-1中的数据信息De
此外,控制信号生成模块504也获取存储在内存108-1中所述数据信息De
步骤901’、组合模块507获取与所述数据信息对应的存储于内存108-2中的ECC校验信息Pe。所述存储的数据信息对应的ECC校验信息Pe简称为存储的ECC校验信息Pe
在本实施例中,内存108-1和内存108-2对同一个码字(比如Ce)的数据信息De和ECC校验信息Pe进行映射存储。
值得说明的是,步骤901和901’没有执行的先后顺序。
步骤902、ECC译码器501获取组合模块507生成的组合的码字Ce,所述组合的码字Ce也是存储的码字Ce
组合模块507在获取所述存储的数据信息De和存储的ECC校验信息Pe后,组合所述存储的数据信息De和存储的ECC校验信息Pe,生成组合后的的码字Ce,即Ce=[De Pe]。
组合模块507组合所述存储的数据信息De和存储的ECC校验信息Pe可以采用现有的组合方式,本发明实施例在此不再详述。
步骤903、候选信息生成模块503获取ECC译码器501生成的纠错后的数据信息Dc
ECC译码器501在获取所述存储的码字Ce后,对所述存储的码字Ce进行ECC译码,生成纠错后的码字Cc。所述纠错后的码字Cc包括纠错后的数据信息Dc和纠错后的ECC校验信息Pc
步骤904、候选信息生成模块503获取更新数据的指示,所述更新数据的指示用于指示所述存储的数据信息中需更新的数据位置及需更新的数据内容。
步骤904参考图7A对应方法的步骤703,本发明实施例在此不再详述。
值得说明的是,步骤901、901’、和步骤904没有时间的先后顺序。
步骤905、ECC编码器502获取候选信息生成模块503生成的候选写入的数据信息Dn
参考图7A对应方法的步骤704,本发明实施例在此不再详述。
此外,控制信号生成模块504和掩码控制模块505也获取候选信息生成模块503生成的所述候选写入的数据信息Dn
步骤906、ECC编码器502生成候选写入的ECC校验信息Pn,以使得控制器将所述候选写入的ECC校验信息Pn被写入内存108-2中。
ECC编码器502对所述候选写入的数据信息Dn进行ECC编码,生成候选写入的码字Cn。所述候选写入的码字Cn包括所述候选写入的数据信息Dn以及候选写入的ECC校验信息Pn。所述候选写入的ECC校验信息Pn的所有内容均被写入到内存108-2中。
步骤907、掩码控制模块505获取控制信息生成模块504生成的掩码控制信号S。
控制信息生成模块504在获取所述候选写入的数据信息Dn后,根据将所述候选写入的数据信息Dn与所述存储的数据信息De生成掩码控制信号S。比如,控制信息生成模块504将所述候选写入的数据信息Dn与所述存储的数据信息De进行异或处理,生成所述掩码控制信号S。即S=Dn^De.所述掩码控制信号S为针对所述候选写入的数据信息Dn的掩码控制信号S1。
控制信息生成模块504对所述候选写入的数据信息Dn与所述存储的数据信息De进行异或处理的方法参考上706的描述,本发明实施例不再详述。
步骤908、掩码控制模块505对所述候选写入的数据信息Dn执行掩码操作,以使得控制器106将所述候选写入的数据信息Dn中未掩码的内容写入内存108-1中。
步骤908可参考步骤808的说明,本发明实施例不再详述。
通过本发明实施例,针对需更新的数据内容及相应的ECC信息,控制器进行最小化的写入操作。在存储的字节中只有部分比特甚至一个比特需要更新的场景,无需更新字节的所有比特,节省了单次写入操作的功耗及时延。
图10为本发明实施例提供的对存储的信息更新的方法流程图。执行该方法的控制器可以为图5中的控制器106。即控制器106包括ECC译码器501、ECC编码器502、候选信息生成模块503、控制信号生成模块504、掩码控制模块505、序列生成模块506以及组合模块507。该方法中,码字的存储方式采用图4示意的方式,即码字的数据信息和ECC校验信息储存在不同的内存中。
图10提供的实施例与图6A和图8对应的实施例类似,即控制器106接收的是更新的数据内容,并根据更新的数据内容生成更新的数据信息。与图6实施例相比,图10对应的实施例中ECC校验信息和数据信息存储在不同的内存中。与图8提供的实施例相比,图10提供的实施例中控制器508不仅对候选写入的数据信息Dn进行掩码操作,还对候选写入的ECC校验信息Pn进行掩码操作。图10提供的方法包括如下步骤:
步骤1001、1001’和1002与步骤801、801’和802相同,本发明实施例不再详述。
此外,控制信号生成模块504还获取组合模块507生成的组合的码字Ce
步骤1003、候选信息生成模块503获取ECC译码器501生成的纠错后的数据信息Dc
步骤1003的详述描述参见步骤602,本发明实施例在此不再详述
步骤1004-1和1004-2与步骤804-1和804-2的描述相同,本发明实施例不再详述。
步骤1005、候选信息生成模块503获取ECC编码器502生成的更新的码字Cf
ECC编码器502对所述更新的数据信息Df进行ECC编码,生成更新的码字Cf。所述更新的码字Cf包括更新的数据信息Df和更新的ECC校验信息Pf。所述更新的ECC校验信息Pf为与所述更新的数据信息Df对应的ECC校验信息Pf
值得说明的是,步骤1002和1005没有时间的先后顺序。
步骤1006-1007与步骤605-606相同,本发明实施例在此不再详述。
步骤1007生成的掩码控制信号S包括针对所述候选写入的数据信息的掩码控制信号S1和针对所述候选写入的ECC校验信息的掩码控制信号S2.
步骤1008、掩码控制模块505对所述候选写入的数据信息Dn执行掩码操作,以使得所述候选写入的数据信息Dn中未掩码的内容被写入内存108-1中。
步骤1008与步骤808的描述相同,本发明实施例在此不再详述。
步骤1009、掩码控制模块505对所述候选写入的ECC校验信息Pn执行掩码操作,以使得所述候选写入的ECC校验信息Pn中未掩码的内容被写入内存108-2中。
所述掩码控制模块505在获取控制信号生成模块504发送的掩码控制信号S后,根据所述掩码控制信号S中包含的所述针对所述候选写入的ECC校验信息的掩码控制信号S2对所述候选写入的ECC校验信息Pn执行掩码操作,以使得所述候选写入的ECC校验信息Pn中未掩码的内容被写入内存108-2中。。
也就是说,所述根据所述控制信号S对所述候选写入的码字Cn执行掩码操作可以为:掩码控制模块505屏蔽所述候选写入的ECC校验信息Pn中所述掩码控制信号S2指示为0的比特,或掩码控制模块505屏蔽所述候选写入的ECC校验信息Pn中控制信号S2指示所有比特取值为0的字节。
通过本方法,控制器106在处理更新的数据的过程中,对于存储的数据进行ECC纠错后再与更新的数据信息Df组合,再掩码写入。减少了写入数据的数量,降低写入操作的时间和功耗。
图11为本发明实施例提供的对存储的信息更新的方法流程图。即执行该方法的控制器可以为图5中的控制器106。即控制器106包括ECC译码器501、ECC编码器502、候选信息生成模块503、控制信号生成模块504、掩码控制模块505以及组合模块507。该方法中,码字的存储方式采用图4示意的方式,即码字的数据信息和ECC校验信息存储在不同的内存108中。
图11提供的实施例的流程与图7A和图9对应的实施例类似,即控制器106接收的是更新的数据内容和数据位置,候选信息生成模块203根据所述更新的数据内容和数据位置以及纠错后的数据信息生成候选写入的数据信息。与图7A对应的实施例相比,图11对应的实施例中ECC校验信息和数据信息存储在不同的内存108中。与图9提供的实施例相比,图11所示的实施例中控制器508不仅对候选写入的数据信息Dn进行掩码处理,还对候选写入的ECC校验信息Pn进行掩码处理,从而使得写入内存108中的数据更少。图11提供的方法包括如下步骤:
步骤1101、1101’和1102与步骤801、801’和802相同,本发明实施例不再赘述。
此外,控制信号生成模块504还获取组合模块507生成的组合的码字Ce
步骤1103、候选信息生成模块503获取ECC译码器501生成的纠错后的数据信息Dc
步骤1103的详述描述参见步骤602,本发明实施例在此不再详述
步骤1104、候选信息生成模块503获取更新的数据内容和位置,所述更新的数据内容用于更新所述存储的数据信息中相应位置的内容。
步骤1104参考图7A对应方法的步骤703,本发明实施例在此不再详述。
值得说明的是,步骤1101、1101’、和步骤1104没有时间的先后顺序。
步骤1105、ECC编码器502获取候选信息生成模块503生成的候选写入的数据信息Dn
参考图7A对应方法的步骤704,本发明实施例在此不再详述。
步骤1106-1107与步骤705-706相同,本发明实施例在此不再详述。
步骤1108和1109的描述与步骤1008和1009的描述相同,本发明实施例在此不再详述。
通过本方法,控制器106在更新数据时,对于获取后的数据进行ECC纠错后再与更新的数据序更Df组合,再掩码写入。减少了写入数据的数量,降低写入操作时间和功耗。
值得说明的是,控制器106中的各模块执行图6、图7A、图8-11所示的步骤时,可以采用软件定义来方式执行,也可以采用硬件来执行。比如,通过候选信息生成电路(如组合电路或异或电路)生成候选写入的数据信息。通过控制信号生成电路(如异或电路)来生成控制信号。通过掩码控制电路来执行掩码操作。编码器和译码器也可以通过电路的方式来实现。异或电路可以为XOR电路。
此外,上述存储的信息更新的方法流程(比如图2、图6、图7A、图8-11对应的流程中),控制器106还可以为图12中的控制器的结构。如图12所示,控制器106包含内存接口电路1501、处理电路1502和处理器接口电路1503。处理器接口电路1503提供控制器106和处理器110之间的接口。控制器106通过处理器接口电路1503从处理器110接收请求,并且将所述请求的处理结果发送到处理器110。
内存接口电路1501提供控制器106和内存108之间的接口。通过内存接口电路1501,命令和地址从控制器106传输到内存108,数据在控制器106和内存108之间交换。此外,通过内存接口电路1501,存储在内存108中的信息被传送到控制器106。
处理电路421通过处理器接口电路450获取图1中处理器110的指示并执行,以及执行图2、图6A、图7A、图8-图11中控制器106执行的所有功能。
图13为本发明实施例提供的包括控制器的装置另一结构示意图。该装置用于实现对存储的信息更新的方法。如图13所示,装置1300至少可以包括处理器1302、控制器106以及内存108。与图1所示装置100不同的是,图13所示的装置1300中,控制器106和多个处理器核1304集成在处理器1302中。需要说明的是,除了图13所示的器件外,计算机系统1300还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器1302是计算机系统1300的运算核心和控制核心(Control Unit)。处理器1302可以是一个芯片,如系统芯片(system on chip,SOC)。芯片102中还可以包括多个处理器核(core)104。处理器1302还可以是一块超大规模的集成电路。处理器核104通过操作系统和其他软件程序,实现对内存108、缓存及磁盘的访问。可以理解的是,在本发明实施例中,处理器1302中的Core 1304可以是中央处理器(Central Processing unit,CPU),还可以是其他特定集成电路(Application Specific Integrated Circuit,ASIC)。
控制器(Controller)106是装置1300控制内存108并用于管理与规划从内存108到Core1304间的数据传输的总线电路控制器。通过控制器106,内存108与Core 1304之间可以交换数据。控制器106可以是一个单独的芯片,并通过系统总线与Core 1304连接。控制器106也可以被集成到处理器1302中(如图13所示),也可以被内置于其它芯片中。控制器106用于执行图6A、图7A、图8-图11中控制器106执行的任何步骤。图13中的控制器106也可以采用图2,图3或图12的任一结构。
内存108可以是DRAM 108,包括多个通道(channel)1310。每个通道1310中可以包括至少一个rank,每个rank中可以包括至少一个bank。本领域技术人员可以知道,rank指的是连接到同一个片选(chip select)信号的内存颗粒(chip)。控制器106能够对同一个rank中的chip进行写操作,而在同一个rank的chip也共享同样的控制信号。控制器106可以通过内存总线分别访问DRAM 108中各个通道内的Rank中的数据。
值得说明的是,图1和图13中示出的内存108置于处理器之外。在本发明实施例中,所述一个或多个内存108还可以是集成在处理器中(如SOC芯片中的内存),控制器106通过控制集成在处理器中的内存108来实现对存储的信息更新的方法。
图14所示为本申请实施例提供的执行控制器功能的装置的另一结构示意图。该装置1400包括处理器1401,通信线路1402,存储器1403以及至少一通信接口1404。
处理器1401可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。处理器1401可以执行上述控制器执行的任一功能。
通信线路1402可包括一通路,在上述组件之间传送信息。
通信接口1404,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器1403可以是内存,如只读存储器ROM、随机存储器RAM、闪存Flash等。存储器可以是独立存在,通过通信线路1402与处理器1401相连接。存储器1403也可以和处理器1401集成在一起。
其中,存储器1403用于存储执行本申请方案的计算机执行指令,并由处理器1401来控制执行。处理器1401用于执行存储器1403中存储的计算机执行指令,从而实现本申请上述实施例提供的对存储的信息更新的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在本发明的本实施例中,该控制器106以采用集成的方式划分各个功能模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integratedcircuit,ASIC),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到控制器106可以采用图2、图3或图14任一所示的形式。
在上述实施例中,控制器106可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (28)

1.一种对存储的信息更新的方法,其特征在于,包括:
根据存储的数据信息和存储的错误校验码ECC校验信息对所述存储的数据信息执行ECC译码,生成纠错后的码字,所述纠错后的码字包括纠错后的数据信息;
根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息;
根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作;
将所述候选写入的数据信息中未掩码的内容确定为实际需要更新的比特或字节的内容,并将所述实际需要更新的比特或字节的内容写入到内存中。
2.如权利要求1所述的方法,其特征在于,所述更新数据的指示用于指示所述存储的数据信息中需更新的数据位置,该方法进一步包括:根据所述需更新的数据位置生成更新的数据信息;
所述根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息包括:根据所述纠错后的数据信息和所述更新的数据信息生成所述候选写入的数据信息。
3.如权利要求2所述的方法,其特征在于:所述根据所述纠错后的数据信息和更新的数据信息生成候选写入的数据信息包括:
对所述纠错后的数据信息和所述更新的数据信息执行异或处理,生成所述候选写入的数据信息。
4.如权利要求1所述的方法,其特征在于,所述更新数据的指示用于指示更新的数据内容和更新的数据位置,所述根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息包括:
根据所述更新的数据位置,使用所述更新的数据内容替换所述纠错后的数据信息中相同位置的数据内容。
5.如权利要求3所述的方法,其特征在于,该方法进一步包括:对所述存储的数据信息和所述候选写入的数据信息执行异或处理,生成针对所述候选写入的数据信息的掩码控制信号;
所述根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作包括:根据所述针对所述候选写入的数据信息的掩码控制信号对所述候选写入的数据信息执行掩码操作。
6.如权利要求1-5任一所述的方法,其特征在于,该方法进一步包括:组合所述存储的数据信息和所述存储的ECC校验信息,生成存储的码字。
7.如权利要求1-5任一所述的方法,其特征在于,该方法进一步包括:
对所述候选写入的数据信息进行ECC编码,生成候选写入的ECC校验信息;
将所述候选写入的ECC校验信息写入到所述内存中。
8.如权利要求1-5任一所述的方法,其特征在于,所述纠错后的码字进一步包括纠错后的ECC校验信息,该方法进一步包括:
对所述更新的数据信息进行ECC编码,生成更新的ECC校验信息;
根据所述纠错后的ECC校验信息和更新的ECC校验信息生成候选写入的ECC校验信息;
根据所述存储的ECC校验信息对所述候选写入的ECC校验信息执行掩码操作;
将所述候选写入的ECC校验信息中未掩码的内容写入到内存中。
9.如权利要求1-5任一所述的方法,其特征在于,该方法进一步包括:
对所述候选写入的数据信息进行ECC编码,生成候选写入的ECC校验信息;
根据所述存储的ECC校验信息对所述候选写入的ECC校验信息执行掩码操作;
将所述候选写入的ECC校验信息中未掩码的内容写入到内存中。
10.如权利要求8所述的方法,其特征在于,所述根据所述纠错后的ECC校验信息和更新的ECC校验信息生成候选写入的ECC校验信息包括:
对所述纠错后的ECC校验信息和所述更新的ECC校验信息执行异或处理,生成所述候选写入的ECC校验信息。
11.如权利要求8所述的方法,其特征在于,该方法进一步包括:
对所述候选写入的ECC校验信息和所述存储的ECC校验信息进行异或处理,生成针对所述候选写入的ECC校验信息的掩码控制信号;
所述根据所述存储的ECC校验信息对所述候选写入的ECC校验信息执行掩码操作包括:根据所述针对所述候选写入的ECC校验信息的掩码控制信号对所述候选写入的ECC校验信息执行掩码操作。
12.如权利要求1所述的方法,其特征在于,该方法进一步包括:
接收所述更新数据的指示。
13.一种对存储的信息更新的装置,其特征在于,包括控制器和内存,
所述内存用于存储数据信息和与所述数据信息对应的错误校验码ECC校验信息;
所述控制器用于:
根据存储的数据信息和存储的错误校验码ECC校验信息对所述存储的数据信息执行ECC译码,生成纠错后的码字,所述纠错后的码字包括纠错后的数据信息;
根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息;
根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作;
将所述候选写入的数据信息中未掩码的内容确定为实际需要更新的比特或字节的内容,并将所述实际需要更新的比特或字节的内容写入到内存中。
14.如权利要求13所述的装置,其特征在于:所述控制器用于执行权利要求2-11任一所述的方法。
15.一种系统芯片,其特征在于包括:核心处理器和控制器,其中
所述核心处理器用于通过所述控制器与内存交换数据;
所述控制器用于执行权利要求1-12任一所述的方法。
16.一种控制器,其特征在于:包括处理电路和内存接口电路,
所述内存接口电路用于提供所述控制器和内存之间的接口;
所述处理电路用于通过所述内存接口电路与的内存交互,并执行权利要求1-12任一所述的方法。
17.一种对存储的信息更新的装置,其特征,包括:处理器和存储器;
所述存储器用于存储计算机执行指令;
所述处理器用于当该装置运行时,执行所述存储器存储的该计算机执行指令,以使该装置执行权利要求1-12任一所述的方法。
18.一种对存储的信息更新的装置,其特征在于:包括错误校验码ECC译码器、候选信息生成模块、和掩码控制模块,其中,
所述ECC译码器用于根据存储的数据信息和存储的错误校验码ECC校验信息对所述存储的数据信息执行ECC译码,生成纠错后的码字,所述纠错后的码字包括纠错后的数据信息;
所述候选信息生成模块用于根据所述纠错后的数据信息和更新数据的指示生成候选写入的数据信息;
所述掩码控制模块根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作,所述候选写入的数据信息中未掩码的内容确定为实际需要更新的比特或字节的内容,并将所述实际需要更新的比特或字节的内容被写入到内存中。
19.如权利要求18所述的装置,其特征在于:所述更新数据的指示用于指示所述存储的码字中需更新的数据位置,该装置进一步包括:序列生成模块,用于根据所述需更新的数据位置生成更新的数据信息。
20.如权利要求19所述的装置,其特征在于:
所述候选信息生成模块用于对所述纠错后的数据信息和所述更新的数据信息执行异或处理,生成所述候选写入的数据信息。
21.如权利要求18所述的装置,其特征在于:所述更新数据的指示用于指示更新的数据内容和更新的数据位置。
22.如权利要求21所述的装置,其特征在于:
所述候选信息生成模块用于根据所述更新的数据位置,使用所述更新的数据内容替换所述纠错后的数据信息中与所述更新的数据位置相同位置的数据内容,以生成所述候选写入的数据信息。
23.如权利要求21所述的装置,其特征在于,该装置进一步包括:序列生成模块,用于根据所述更新数据的指示生成更新的数据信息;
所述候选信息生成模块用于根据所述更新的数据信息和所述纠错后的数据信息中的数据内容,生成所述候选写入的数据信息。
24.如权利要求18-23任一所述的装置,其特征在于:该装置进一步包括控制信号生成模块,用于对所述存储的数据信息和所述候选写入的数据信息执行异或处理,生成针对所述候选写入的数据信息的掩码控制信号;
所述根据所述存储的数据信息对所述候选写入的数据信息执行掩码操作包括:根据所述候选写入的数据信息的掩码控制信号对所述候选写入的数据信息执行掩码操作。
25.如权利要求18-23任一所述的装置,其特征在于:所述装置进一步包括组合模块,所述组合模块用于,组合所述存储的数据信息和所述存储的ECC校验信息,生成所述存储的码字。
26.如权利要求18-23任一所述的装置,其特征在于,所述装置进一步包括ECC编码模块,
所述ECC编码模块用于对所述候选写入的数据信息进行ECC编码,生成候选写入的ECC校验信息,所述候选写入的ECC校验信息被写入到所述内存中。
27.如权利要求18-23任一所述的装置,其特征在于,所述装置进一步包括ECC编码模块,
所述ECC编码模块用于对所述候选写入的数据信息进行ECC编码,生成候选写入的ECC校验信息;
所述掩码控制模块进一步用于:根据所述存储的ECC校验信息对所述候选写入的ECC校验信息执行掩码操作,所述候选写入的ECC校验信息中未掩码的内容被写入到内存中。
28.权利要求24所述的装置,其特征在于,
所述控制信号生成模块进一步用于对所述候选写入的ECC校验信息和所述存储的ECC校验信息执行异或处理,生成针对所述候选写入的ECC校验信息的掩码控制信号;
所述掩码控制模块进一步用于根据所述针对候选的ECC校验信息的掩码控制信号对所述候选写入的ECC校验信息执行掩码操作,所述候选写入的ECC校验信息中未掩码的内容被写入到内存中。
CN201910436048.XA 2019-05-23 2019-05-23 对存储信息更新的方法和装置 Active CN111984457B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910436048.XA CN111984457B (zh) 2019-05-23 2019-05-23 对存储信息更新的方法和装置
PCT/CN2020/078768 WO2020233203A1 (zh) 2019-05-23 2020-03-11 对存储信息更新的方法和装置
US17/230,056 US11914895B2 (en) 2019-05-23 2021-04-14 Method for updating stored information and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910436048.XA CN111984457B (zh) 2019-05-23 2019-05-23 对存储信息更新的方法和装置

Publications (2)

Publication Number Publication Date
CN111984457A CN111984457A (zh) 2020-11-24
CN111984457B true CN111984457B (zh) 2022-09-02

Family

ID=73437208

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910436048.XA Active CN111984457B (zh) 2019-05-23 2019-05-23 对存储信息更新的方法和装置

Country Status (3)

Country Link
US (1) US11914895B2 (zh)
CN (1) CN111984457B (zh)
WO (1) WO2020233203A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537342A (zh) * 2014-07-11 2017-03-22 Arm 有限公司 事务中寄存器的动态保存
CN106802837A (zh) * 2015-11-26 2017-06-06 华为技术有限公司 一种更新错误检测和纠正ecc码的方法及装置
CN107329850A (zh) * 2017-05-26 2017-11-07 杭州赫智电子科技有限公司 一种满足海量读写次数操作的存储器及数据存储方法
CN109524051A (zh) * 2017-09-18 2019-03-26 三星电子株式会社 用于执行并行读取-修改-写入操作的存储器器件

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620876B2 (en) * 2005-06-08 2009-11-17 Altera Corporation Reducing false positives in configuration error detection for programmable devices
KR100855979B1 (ko) 2007-02-13 2008-09-02 삼성전자주식회사 바이트 마스킹 동작을 위한 반도체 메모리 장치 및 패리티데이터 생성 방법
CN102339641B (zh) * 2010-07-23 2014-12-17 北京兆易创新科技股份有限公司 检错/纠错校验模块及该模块读写数据的方法
US9164834B2 (en) * 2013-05-06 2015-10-20 Samsung Electronics Co., Ltd. Semiconductor memory devices, memory systems including the same and method of writing data in the same
KR20160017922A (ko) * 2014-08-07 2016-02-17 에스케이하이닉스 주식회사 반도체 메모리 장치
US10140175B2 (en) * 2015-11-20 2018-11-27 Qualcomm Incorporated Protecting an ECC location when transmitting correction data across a memory link
US9823964B2 (en) * 2015-12-08 2017-11-21 Nvidia Corporation Method for memory scrub of DRAM with internal error correcting code (ECC) bits during either memory activate and/or precharge operation
US10885991B2 (en) * 2017-04-04 2021-01-05 Sandisk Technologies Llc Data rewrite during refresh window
CN107068194A (zh) * 2017-04-20 2017-08-18 聚辰半导体(上海)有限公司 一种应用在eeprom上的错误纠正编码及相应的eeprom

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537342A (zh) * 2014-07-11 2017-03-22 Arm 有限公司 事务中寄存器的动态保存
CN106802837A (zh) * 2015-11-26 2017-06-06 华为技术有限公司 一种更新错误检测和纠正ecc码的方法及装置
CN107329850A (zh) * 2017-05-26 2017-11-07 杭州赫智电子科技有限公司 一种满足海量读写次数操作的存储器及数据存储方法
CN109524051A (zh) * 2017-09-18 2019-03-26 三星电子株式会社 用于执行并行读取-修改-写入操作的存储器器件

Also Published As

Publication number Publication date
WO2020233203A1 (zh) 2020-11-26
US20210232341A1 (en) 2021-07-29
CN111984457A (zh) 2020-11-24
US11914895B2 (en) 2024-02-27

Similar Documents

Publication Publication Date Title
US8656252B2 (en) Memory controller and non-volatile storage device
US7206891B2 (en) Multi-port memory controller having independent ECC encoders
US9323602B2 (en) Error correction with extended CAM
US8856427B2 (en) Memory controller and non-volatile storage device
CN114328316B (zh) Dma控制器、soc系统及基于dma控制器的数据搬运方法
KR20160024966A (ko) 데이터 에러 교정용 회로, 장치, 및 방법
US20160283323A1 (en) Error detection using a logical address key
CN111506452B (zh) 数据存储保护方法、装置、计算机设备及存储介质
US9396064B2 (en) Error correction with secondary memory
CN104299637A (zh) 快闪存储器装置及其运作方法
US8898420B2 (en) Non-volatile storage device and a memory controller controlling parity tables of recording regions of the non-volatile storage device
CN110535476B (zh) Ldpc软译码器软信息存储优化方法、装置、计算机设备及存储介质
CN103995785A (zh) 信息处理方法和系统
CN111221746B (zh) 数据储存系统与其相关方法
CN109376028B (zh) 一种pcie设备纠错方法与装置
CN111984457B (zh) 对存储信息更新的方法和装置
US20220405168A1 (en) Controller and storage device
US20230325276A1 (en) Error correction method and apparatus
WO2020052672A1 (zh) Turbo乘积码的译码方法、装置、译码器及计算机存储介质
US11189360B2 (en) Method for managing the memory space of a memory device and corresponding system
US11088711B2 (en) Memory apparatus and data accessing method thereof
CN112540866B (zh) 存储器装置及其数据存取方法
US11852680B1 (en) Test device and test method thereof
TWI723515B (zh) 記憶體裝置及其資料存取方法
CN116820829A (zh) 一种数据纠错方法及装置

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