CN103995756A - 存储控制器、存储设备、信息处理系统和存储控制方法 - Google Patents

存储控制器、存储设备、信息处理系统和存储控制方法 Download PDF

Info

Publication number
CN103995756A
CN103995756A CN201410037583.5A CN201410037583A CN103995756A CN 103995756 A CN103995756 A CN 103995756A CN 201410037583 A CN201410037583 A CN 201410037583A CN 103995756 A CN103995756 A CN 103995756A
Authority
CN
China
Prior art keywords
error message
address
errors
storer
message management
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.)
Granted
Application number
CN201410037583.5A
Other languages
English (en)
Other versions
CN103995756B (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of CN103995756A publication Critical patent/CN103995756A/zh
Application granted granted Critical
Publication of CN103995756B publication Critical patent/CN103995756B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step

Abstract

本发明涉及存储控制器、存储设备、信息处理系统和存储控制方法。在本发明中,管理在多个存储器地址的信息并基于错误信息在存储器中确定刷新对象的地址。由此,提供了恰当地控制非易失性存储器的刷新处理的效果。

Description

存储控制器、存储设备、信息处理系统和存储控制方法
技术领域
本发明涉及存储控制器。具体地,本发明涉及用于非易失性存储器的存储控制器、用于非易失性存储器的存储设备、用于非易失性存储器的信息处理系统、该信息处理系统中的处理方法以及用于使计算机执行所述处理方法的程序。
背景技术
在信息处理系统中,动态随机存取存储器(DRAM)等被用作工作存储器(work memory)。DRAM通常是易失性存储器,当电源停止时,会丢失其存储内容。另一方面,近年来,非易失性存储器(NVM)被使用。非易失性存储器大致地分为用于在以大数据为单位的情况下支持数据存取的闪速存储器(flash memory)以及用于在以小数据为单位的情况下提供高速随机存取的非易失性RAM(non-volatile RAM,NVRAM)。闪速存储器以NAND型闪速存储器作为代表。另一方面,非易失性RAM以电阻式RAM(ReRAM)、相变式RAM(PCRAM)以及磁阻式RAM(MRAM)作为代表。
在非易失性存储器中,为了避免存储状态随着时间流逝而改变的情况,可在存储状态改变之前执行如下刷新处理,在该刷新处理中,重写存储状态以对其进行校正。在相关领域的已知存储器系统中,存在如下存储器系统,如果在从非易失性存储器读取数据时检出错误,该存储器系统的存储器控制器在不从主机计算机接收命令的情况下自发地执行刷新处理(例如,参照日本未经审查专利申请2008-192267)。另外,还提出如下一种存储器系统,在该系统中,主机计算机在读取数据时接收错误检测的通知,并且主机计算机在合适时机执行刷新命令(例如,参照日本未经审查的专利申请2008-192267)。在刷新处理中,对检出错误的数据执行错误校正,并且将已校正的数据写入非易失性存储器。
在相关领域的上述技术中,当存储器控制器在读取命令的执行期间自发地执行刷新处理时,除了与读取命令的执行相关联地发生从非易失性存储器的数据读取处理之外,还发生写入处理。因此,与不执行刷新处理的情况相比,增加了用于完成读取命令所需要的时间,这导致读取命令的性能降低。
另外,假设在完成读取命令之后且在执行后续的读取命令或写入命令之前存储器控制器自发地执行刷新处理的情况。在这种情况下,如果主机计算机在刷新处理期间执行后续的命令,那么在对非易失性存储器的用于刷新处理的存取完成之前,都需要一直等候对非易失性存储器的用于后续处理的存取。换言之,最终这引起读取命令和写入命令的性能降低。
另一方面,假设响应于源自主机计算机的指令而执行刷新处理的情况。在这种情况下,当在读取命令的执行期间检出错误时,在完成读取命令处理之后,错误的出现被通知给主机计算机。主机计算机选择发出刷新命令的时机并基于所通知的信息发出刷新命令。为了抑制写入命令和读取命令的性能降低,主机计算机需要在不执行写入命令或读取命令的时机执行刷新命令。然而,当由于处于不允许立即执行刷新命令的状态中的多个命令而连续地执行写入命令和读取命令并且检出了错误时,不允许正确地保持错误信息。
发明内容
期望恰当地控制非易失性存储器的刷新处理。
根据本发明的实施例,提供一种存储控制器,其包含:错误信息管理部,其管理存储器的多个地址的错误信息;以及刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象的地址。相应地,提供了基于多个地址的错误信息来确定刷新对象的地址的功能。
根据本发明的实施例,提供一种存储控制方法,其包含:管理存储器的多个地址的错误信息;以及基于所述错误信息在所述存储器中确定刷新对象的地址。相应地,提供了基于多个地址的错误信息来确定刷新对象的地址的功能。
在本发明的各个实施例中,所述错误信息管理部可以将检出错误处的地址与检出的错误数量相关联以作为所述错误信息进行管理,并且所述刷新对象确定部可以基于所述错误数量将与所述错误数量相关联的所述检出错误处的地址确定为所述刷新对象的地址。相应地,提供了基于错误数量来确定刷新对象的地址的功能。
在本发明的各个实施例中,所述错误信息管理部基于所述错误数量确定是否从管理对象排除所述错误信息。相应地,提供了从管理对象中排除地址的功能。
在本发明的各个实施例中,所述错误信息管理部还将管理读取次数和所述检出错误处的地址相关联以作为所述错误信息进行管理,并且所述刷新对象确定部基于所述读取次数将与所述读取次数相关联的所述检出错误处的地址确定为所述刷新对象的地址。相应地,提供了基于读取次数来确定刷新对象的地址的功能。
在本发明的各个实施例中,当在所述存储器中出现错误时,所述错误信息管理部基于预先指定的条件确定是否从管理对象中排除所述错误信息。相应地,提供了基于指定的条件将错误从管理对象中排除的功能。
在本发明的各个实施例中,所述错误信息管理部将所述存储器的检出错误处的物理地址和检测的错误数量相关联以作为所述错误信息进行管理,并且所述刷新对象确定部基于所述错误数量将与所述错误数量相关联的所述物理地址确定为所述刷新对象的地址。相应地,提供了从与错误数量相关联的物理地址来确定刷新对象的地址的功能。
在本发明的各个实施例中,还可以提供地址转换部,其用于将所述存储器的用于从主机计算机到所述存储器的存取命令的逻辑地址转换成所述存储器的物理地址。所述错误信息管理部将所述存储器的检出错误处的逻辑地址与检出的错误数量相关联以作为所述错误信息进行管理。所述刷新对象确定部基于所述错误数量选择与所述错误数量相关联的逻辑地址,并使用所述地址转换部将该逻辑地址转换成物理地址以将该物理地址确定为所述刷新对象的地址。相应地,提供了从与错误数量相关联的逻辑地址来确定刷新对象的地址的功能。
在本发明的各个实施例中,所述错误信息管理部保持所述存储器的地址中存储的与所述错误信息相关联的数据,并在存取所述存储器的地址时使用所述数据。该数据关联到错误信息。相应地,提供了在不存取存储器的情况下使用与错误信息相关联的数据的功能。
在本发明的各个实施例中,除了所述数据以外,所述错误信息管理部还保持错误校正码。相应地,提供了在不存取存储器的情况下使用与错误信息相关联的数据和错误校正码的功能。
在本发明的各个实施例中,只有当包含在所述错误信息中的所述错误数量满足预定条件时,所述错误信息管理部才保持所述数据。相应地,提供了只有当指定的条件被满足时才能在不进行存取的情况下使用数据的功能。
在本发明的各个实施例中,所述错误信息管理部在从主机计算机接收所述错误信息的获取命令时将所述错误信息通知给所述主机计算机。相应地,提供了响应于来自主机计算机的命令使主机计算机获得错误信息的功能。
根据本发明的一个实施例,提供一种存储设备,其包含:存储器;错误信息管理部,其管理存储器的多个地址的错误信息;以及刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象的地址。相应地,提供了基于多个存储器地址的错误信息来确定刷新对象的地址的功能。
根据本发明的一个实施例,提供一种信息处理系统,其包含:存储器;主机计算机,其发出关于存储器的存取命令;错误信息管理部,其管理存储器的多个地址的错误信息;以及刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象的地址。相应地,提供了基于存储器的多个地址中的根据来自主机计算机的命令存取的错误信息来确定刷新对象的地址的功能。
在本发明的实施例中,主机计算机可以包含错误信息管理部和刷新对象确定部。相应地,提供了基于存储器的多个地址的错误信息使主机计算机来确定刷新对象的地址的功能。
根据本发明的各个实施例,提供了恰当地控制非易失性存储器的刷新处理的效果。
应当理解的是,以上的一般性描述和以下的详细描述均是示例性的,并且旨在提供对所要求保护的技术的进一步说明。
附图说明
所包括的附图提供了对本发明的进一步理解,并且被结合到说明书中以构成说明书的一部分。附图说明了实施例,并与说明书一起解释了本发明的原理。
图1是示出了根据本发明第一实施例的信息处理系统的构造示例的示意图;
图2是示出了根据本发明第一实施例的存储器300的存储结构的示意图;
图3是示出了根据本发明第一实施例的表管理部220的构造示例的示意图;
图4是示出了根据本发明第一实施例的错误信息管理表221的结构示例的示意图;
图5是示出了根据本发明第一实施例的地址转换表222的结构示例的示意图;
图6是示出了根据本发明第一实施例的读取命令处理的处理过程的示例的流程图;
图7是示出了根据本发明第一实施例的错误信息管理表的更新的处理过程的示例的流程图;
图8是示出了根据本发明第一实施例的错误信息管理表的更新的第一示例的示意图;
图9是示出了根据本发明第一实施例的错误信息管理表的更新的第二示例的示意图;
图10是示出了根据本发明第一实施例的错误信息管理表的更新的第三示例的示意图;
图11是示出了根据本发明第一实施例的刷新命令处理的处理过程的示例的流程图;
图12是示出了根据本发明第一实施例的刷新命令处理的示例的示意图;
图13是示出了根据本发明第一实施例的写入命令处理的处理过程的示例的流程图;
图14是示出了根据本发明第一实施例的变形例的表管理部220的构造示例的示意图;
图15是示出了根据本发明第一实施例的变形例的管理对象地址表223的结构示例的示意图;
图16是示出了根据本发明第一实施例的变形例的错误信息管理表的更新的处理过程的示例的流程图;
图17是示出了根据本发明第一实施例的变形例的错误信息管理表221的结构示例的示意图;
图18是示出了根据本发明第一实施例的变形例的刷新命令处理的处理过程的示例的流程图;
图19是示出了根据本发明的第二实施例的错误信息管理表221的结构示例的示意图;
图20是示出了根据本发明第二实施例的错误信息管理表的更新的处理过程的示例的流程图;
图21是示出了根据本发明第三实施例的错误信息管理表221的结构示例的示意图;
图22是示出了根据本发明第四实施例的错误信息管理表221的结构示例的示意图;
图23是示出了根据本发明第四实施例的刷新命令处理的处理过程的示例的流程图;
图24是示出了根据本发明第五实施例的错误信息管理表221的结构示例的示意图;
图25是示出了根据本发明第五实施例的错误信息管理表的更新的处理过程的示例的流程图;
图26是示出了根据本发明第五实施例的刷新命令处理的处理过程的示例的流程图;
图27是示出了根据本发明第六实施例的表信息获取命令处理的处理过程的示例的流程图;
图28是示出了根据本发明第六实施例的刷新命令处理的处理过程的示例的流程图;
图29是示出了根据本发明第七实施例的信息处理系统的构造示例的示意图;
图30是示出了根据本发明第七实施例的读取命令处理的处理过程的示例的流程图;
图31是示出了根据本发明第七实施例的错误信息管理表的更新的处理过程的示例的流程图;
图32是示出了根据本发明第七实施例的刷新命令处理的处理过程的示例的流程图;
图33是示出了根据本发明第七实施例的写入命令处理的处理过程的示例的流程图。
具体实施方式
在下文中,将说明本发明的一些实施例。说明将以下面的顺序给出。
1.第一实施例(由存储器控制器管理错误信息的示例)
2.第二实施例(使用逻辑地址管理错误信息的示例)
3.第三实施例(将数据、ECC和错误信息一起保持的示例)
4.第四实施例(将数据和错误信息一起保持的示例)
5.第五实施例(基于错误数量来防止数据保持的示例)
6.第六实施例(将错误信息通知给主机计算机的示例)
7.第七实施例(由主机计算机管理错误信息的示例)
1.第一实施例
信息处理系统的构造
图1是示出了根据本发明第一实施例的信息处理系统的构造示例的示意图。该信息处理系统包含主机计算机100、存储器控制器200以及存储器300。存储器控制器200和存储器300构成存储系统。
主机计算机100用于向存储器300发出用于请求数据的读取、写入或刷新等的命令。
存储器控制器200用于从主机计算机100接收命令以执行到存储器300的数据写入以及执行从存储器300的数据读取。当存储器控制器200接收写入命令时,存储器控制器200将从主机计算机100接收到的数据写入存储器300。另外,当存储器控制器200接收读取命令时,存储器控制器200从存储器300读取数据,并将数据传输到主机计算机100。而且,当存储器控制器200接收刷新命令时,存储器控制器200从存储器300读取数据,并将读取的数据重写到存储器300。
在写入命令和读取命令中,使用了用于指示存储器300的存储位置的头部的逻辑地址以及数据大小。在第一实施例中,逻辑地址是被分配到如下区域的位置信息,该区域被划为数个512字节单元。在写入命令和读取命令中,由主机系统规定的数据大小的值是由512×n个字节代表的值“n”。由存储器控制器200将逻辑地址转换成物理地址。物理地址是被分配到存储器300中的存储单元的地址。
存储器控制器200包括ECC生成部210、表管理部220、错误检测校正部230、处理器240、主机接口201以及存储器接口203。这些部件通过总线280互相连接。
ECC生成部210用于生成存储器300中所存储的数据的错误校正码(ECC,error correcting code)。错误检测校正部230用于对从存储器300读取的数据执行错误检测和校正处理。
处理器240用于控制整个存储器控制器200。该处理器240执行存储在ROM中的软件(未示出)。处理器240对主机计算机100发出的命令进行解析以向存储器300提供必要的请求。注意,在本发明中,处理器240是“刷新对象确定部”的具体示例。
表管理部220用于管理将稍后进行描述的错误信息管理表以及地址转换表等。
主机接口201连接到主机计算机100,主机接口201用于从主机计算机100接收命令以及用于向/从主机计算机100发送/接收数据。
存储器接口203连接到存储器300,存储器接口203用于向存储器300发送请求和写入数据以及用于接收从存储器300读取的数据。
存储器300是存储器控制器200的控制对象,在本示例中,主要地,假设非易失性存储器是存储器300。
存储器的结构
图2是示出了根据本发明第一实施例的存储器300的存储结构的示例的示意图。存储器300由528字节的物理页构成。基于物理页执行从存储器控制器200到存储器300的写入请求和读取请求。物理地址被分派到每一个物理页作为唯一的地址。
将添加有16字节ECC的512字节数据写入一个物理页。该512字节数据是响应于写入命令和读取命令而由主机计算机100存取的数据。该512字节数据是表管理部220的管理对象。假设添加到512字节数据的16字节ECC具有8位的校正能力。
表管理部的构造
图3是示出了根据本发明第一实施例的表管理部220的构造示例的示意图。表管理部220包括错误信息管理表221和地址转换表222。
错误信息管理表221用于管理存储器300中出现的错误的有关信息。注意,本发明中,错误信息管理表221是“错误信息管理部”的具体示例。
地址转换表222用于将逻辑地址转换成存储器300中的物理地址。注意,在本发明中,地址转换表222是“地址转换部”的具体示例。
图4是示出了根据本发明第一实施例的错误信息管理表221的结构示例的示意图。错误信息管理表221保持多个条目。多个条目中的每者均成对地包含存储器300的出现错误处的物理地址和所检出的错误的数量(即,物理地址和错误数量被成对地包含在条目中)。错误数量表示被检出错误的位的数量。
将错误数量是“0”的条目作为空条目进行处理。空条目的物理地址作为无效值而被忽略。在本示例中,在四个条目中的三个条目是有效的。
顺便一提,在本示例中,虽然以错误数量的降序说明了条目,但是在错误信息管理表221的操作中不需要以降序进行排序。另外,可不将错误数量是“0”的条目作为空条目进行处理,而替代地,除了错误数量和物理地址之外,还可以提供用于区分条目的有效性和无效性的标记。
图5是示出了根据本发明第一实施例的地址转换表222的结构示例的示意图。地址转换表222保持逻辑地址和存储器300的物理地址(即,逻辑地址和物理地址成对地包含在表中)。在第一实施例中,以512字节为单位对逻辑地址进行寻址。被写入一个逻辑地址的512字节数据被写入到存储器300的一个物理页。因此,一个逻辑地址被转换成一个物理地址。
读取命令处理的操作
图6是示出了根据本发明第一实施例的读取命令处理的处理过程的示例的流程图。换言之,该处理过程是当存储器控制器200从主机计算机100接收读取命令时执行的处理过程。
首先,基于读取对象的首逻辑地址和主机接口201所接收的数据的大小,处理器240将处理划分成逻辑地址单位(步骤S911)。一个处理处理一个逻辑地址。例如,在“0”被指定为读取对象的首地址,并且“1”被指定为数据大小的情况下,执行一个处理。在“0”被指定为读取对象的首逻辑地址,并且“2”被指定为数据大小的情况下,处理被划分成两个处理。
处理器240确定将要读取的逻辑地址(步骤S912)。基于各个读取对象的首逻辑地址,依次确定待读取的逻辑地址。例如,在“0”被指定为读取对象的首逻辑地址并且“2”被指定为数据大小的情况下,首先经历处理的逻辑地址被确定为“0”。接着,后续经历处理的逻辑地址被确定是“1”。
处理器240使用保持在表管理部220中的地址转换表222将被确定为待读取的逻辑地址转换成物理地址(步骤S913)。
处理器240指定在步骤S913中转换的物理地址以执行对存储器300的读取请求(步骤S914)。从存储器300读取的数据具有包括ECC的528个字节。
从存储器300读取的数据和ECC被传输到错误检测校正部230。在错误检测校正部230中,对包含数据和ECC的528字节数据执行错误检测。当错误被检出时,获得了错误位的数量(错误数量)(步骤S915)。当错误未被检出时,错误位的数量被设置成0。
处理器240确定在步骤S915中获得的错误数量是否为0(步骤S916)。当错误数量是0时,换言之,当未检出错误时(步骤S916:是),跳过接下来的步骤S917至S920的处理。
当检出了错误时,处理器240确定检出的错误数量是否超出可校正的错误数量(在这种情况下是“8”)(步骤S917)。当检出的错误数量超出可校正的错误数量时(步骤S917:否),处理器240将读取命令处理中的错误发生通知给主机计算机100以终止该读取命令处理(步骤S934)。
另一方面,当检出的错误数量在可校正的错误数量之内时,错误检测校正部230对从存储器300传输的528字节数据执行错误校正(步骤S918)。在错误校正之后,处理器240执行保持在表管理部220中的错误信息管理表221的更新(步骤S920)。
在错误检测和错误校正之后或在未检出错误时,经由主机接口201将不包含ECC的512字节数据传输到主机计算机100(步骤S931)。
接着,在读取命令处理中,处理器240将传输到主机计算机100的数据的大小总和与由读取命令指定的数据大小进行比较(步骤S932)。当所传输的数据的大小总和小于指定的数据大小(步骤S932:否)时,重复步骤S912以及接下来的步骤的处理。另一方面,当传输的数据的大小总和达到指定的数据大小(步骤S932:是)时,处理器240将读取命令处理的正常完成通知给主机计算机100以终止读取命令处理(步骤S933)。
错误信息管理表的更新处理的操作
图7是示出了根据本发明第一实施例的错误信息管理表的更新处理过程的示例的流程图。
首先,确定在步骤S915中检出错误处的物理地址是否是注册在错误信息管理表221的物理地址(步骤S923)。当检出错误处的物理地址是注册的物理地址时(在步骤S923:是),确定检出的错误数量是否大于注册的错误数量(步骤S928)。当检出的错误数量大于注册的错误数量时(步骤S928:是),使用检出的错误数量来更新错误信息管理表221中相应条目中的错误数量(步骤S929)。
当检出错误处的物理地址未注册在错误信息管理表221中时(步骤S923:否),确定错误信息管理表221是否具有空条目(步骤S924)。当错误信息管理表221具有空条目时(步骤S924:是),将检出错误处的物理地址和检出的错误数量注册到该空条目(步骤S927)。
另一方面,当错误信息管理表221不具有空条目时(步骤S924:否),检出的错误数量与注册在各个条目中的错误数量之中的最小值进行比较(步骤S925)。当检出的错误数量大于最小值时(步骤S925:是),使用检出的错误数量和检出错误处的物理地址来更新具有最小值的条目(步骤S926)。
顺便一提的是,当在步骤S925中将检出的错误数量与注册在各个条目中的错误数量之中的最小值进行比较时,可以在检出的错误数量大于或等于最小值时执行步骤S926的处理。
图8是示出了根据本发明第一实施例的错误信息管理表的更新的第一示例的示意图。本示例是在步骤S927中将检出错误处的物理地址和检出的错误数量注册到空条目的情况下的示例。结果发现,将新的内容添加到第四条目。
图9是示出了根据本发明第一实施例的错误信息管理表的更新的第二示例的示意图。本示例是在步骤S929中使用检出的错误数量来更新错误信息管理表221中的相应条目中的错误数量的情况下的示例。结果发现,将第四条目中的错误数量从“3”更新成“4”。
图10是示出了根据本发明第一实施例的错误信息管理表的更新的第三示例的示意图。本示例是在步骤S926中使用检出的错误数量以及检出错误的物理地址来更新具有错误数量的最小值的条目的情况下的示例。结果发现,在第四条目中,将具有错误数量“3”的物理地址“0x00001234”更新成具有错误数量“4”的物理地址“0x00000001”。换言之,将物理地址“0x00001234”的条目逐出,并且被具有较大的错误数量的物理地址“0x00000001”取代。
刷新命令处理的操作
图11是示出了根据本发明第一实施例的刷新命令处理的处理过程的示例的流程图。换言之,该处理过程是当存储器控制器200从主机计算机100接收刷新命令时执行的处理过程。
首先,处理器240确定错误信息管理表221是否具有有效条目(步骤S941)。有效条目是错误数量不为零的条目。当错误信息管理表221不具有有效条目时(步骤S941:否),处理器240将刷新命令处理的正常完成通知给主机计算机100以终止刷新命令处理(步骤S949)。另一方面,当错误信息管理表221具有有效条目时(步骤S941:是),处理器240执行下面的处理。
处理器240从有效条目中选择待刷新的物理地址(步骤S942)。在第一实施例中,假设以具有较大的错误数量的物理地址的次序执行处理,并且当错误数量在一些物理地址之间相同时,以物理地址的升序选择将要刷新的物理地址。
处理器240指定在步骤S942中选择的物理地址以从存储器300的指定物理地址读取数据,并将所读取的数据传输到错误检测校正部230(步骤S943)。此时,被传输的数据的大小是528字节。
错误检测校正部230对在步骤S943中传输的528字节数据执行错误检测,当错误被检出时,错误检测校正部230进一步执行错误校正(步骤S944)。
将该528字节数据(其包含16字节ECC以及在步骤S944中被校正的512字节数据)从错误检测校正部230传输,并然后将其写入到存储器300的在步骤S942中选择的物理地址(步骤S946)。
接着,错误信息管理表221中的被刷新的条目中的错误数量被更新成“0”,这使得被刷新的条目成为空条目(步骤S948)。之后,重复步骤S941和接下来的步骤中的处理。
顺便一提的是,在本示例中,假设错误信息管理表221中的所有有效条目都被刷新。然而,主机计算机100可以指定在执行刷新命令时的最大的条目数量。在这种情况下,在步骤S941中,确定经历了步骤S943至S948中的处理的条目的数量是否小于最大的条目数量,以及是否存在未经历步骤S943至S948中的处理的条目。
图12是示出了根据本发明第一实施例的刷新命令的处理的示例的示意图。在本示例中,结果发现,第一条目被刷新,且由此被更新成空条目。
刷新命令的执行时机(execution timing)
刷新命令的执行时机是由主机计算机100确定的。执行时机的示例可以包含周期性的时机、电源关闭前的时机、主机计算机未执行读取命令和写入命令时的时机以及在主机计算机变换成诸如睡眠模式等低电能消耗模式之前的时机。
在读取命令结束时,可以将错误信息管理表221的状态通知给主机计算机100,作为由主机计算机100使用的用于确定刷新命令的执行时机的信息。例如,可以通知错误信息管理表221中的有效条目的数量,即,错误数量不是零的条目的数量。
有效条目数量的通知使主机计算机100能够在条目数量超过可由错误信息管理表221管理的条目数量(在上述示例中是四个条目)之前发出刷新命令。另外,有效条目数量的通知使主机计算机100能够只有在错误信息管理表221具有有效条目时才会发出刷新命令。相应地,能够抑制控制器的与命令处理相关的开销。
另外,为了减少到主机计算机100的通知的数量,主机计算机100可以在存储器控制器200中提前设定通知条件,且只有在满足条件时才会发出通知。设定通知条件的方法的示例可以包括例如主机计算机100通过使用命令等来设定条件的方法以及例如在出厂时在主机计算机100使用存储器系统之前设定条件的方法。例如,在“有效条目的数量大于或等于三个”的条件被设置为主机计算机100的通知条件的情况下,在读取命令完成时,如果错误信息管理表221中的有效条目的数量变成“三个”或“四个”则发出通知。
顺便一提的是,在假设用于刷新的专用命令的情况下给出了说明。然而,当从主机计算机100接收另一个命令时,除执行该命令之外,可以执行参照图11说明的刷新处理。例如,可想到的是,当接收到ATA/ATAPI命令集(ATA8-ACS)中所定义的清除缓存(FLUSH CACHE)命令或清除外部缓存(FLUSH CACHE Ext)命令时,除了这些命令的执行之外,还执行刷新处理。在ATA8-ACS的示例中,可以使用立即待机(STANDBY IMMEDIATE)命令、休眠(SLEEP)命令等。另外,也可以使用小型计算机系统接口批命令3(SCSI Block commands-3,SBC-3)中定义的同步缓存(SYNCHRONIZE CACHE)命令、启停单位(START/STOPUNIT)命令等。注意,在这些情况下,在刷新处理完成之后向主机计算机100发送处理完成通知。
写入命令处理的操作
图13是示出了根据本发明第一实施例的写入命令处理的处理过程的示例的流程图。换言之,该处理过程是当存储器控制器200从主机计算机100接收写入命令时执行的处理过程。
处理器240基于由主机接口201接收的写入对象的首逻辑地址和数据大小将处理划分成逻辑地址单位(步骤S951)。一个逻辑地址由一个处理来处理。例如,在“0”被指定作为写入对象的首地址而“1”被指定作为数据大小的情况下,执行一个处理。在“0”被指定作为写入对象的首逻辑地址而“2”被指定作为数据大小的情况下,该处理被划分成两个处理。
处理器240选择并确定将要经历写入处理的逻辑地址(步骤S952)。在第一实施例中,基于各个写入对象的首逻辑地址的次序来确定将要经历写入处理的逻辑地址。在“0”被指定作为由写入命令指定的首逻辑地址,并且“2”被指定作为数据大小时,第一个将要经历处理的逻辑地址被确定成“0”。后续地,将要经历处理的逻辑地址被确定是“1”。
处理器240通过使用保持在表管理部220中的地址转换表222将在步骤S952中选择的逻辑地址转换成物理地址(步骤S953)。
处理器240将由主机接口201接收的一个逻辑地址的512字节数据传输到ECC生成部210(步骤S954)。ECC生成部210针对所接收的512字节数据生成16字节ECC。
处理器240指定在步骤S953中获取的物理地址以将从ECC生成部210传输的528字节数据写入到存储器300的指定物理地址(步骤S955)。
处理器240确定在步骤S953中获取的物理地址是否被注册在错误信息管理表221的条目中(步骤S956)。当物理地址被注册时(步骤S956:是),处理器240将如下条目中的错误数量更新成“0”,在该条目中注册有在步骤S955中写入的物理地址。结果,该条目成为空条目(步骤S957)。
在写入命令处理中,处理器240将被写入到存储器300的数据的大小总和与由写入命令指定的数据大小进行比较(步骤S958)。当被写入的数据的大小总和小于指定的数据大小时(步骤S958:否),重复步骤S952以及后面的步骤的处理。另一方面,当写入的数据的大小总和达到指定的数据大小时(步骤S958:是),处理器240将写入命令处理的正常完成通知给主机计算机100以终止该写入命令处理(步骤S959)。
如前所述,根据本发明的第一实施例,基于由错误信息管理表221管理的错误信息,可以恰当地确定存储器300中的刷新对象地址。
表管理部的变形例
图14是示出了本发明的第一实施例的变形例的表管理部220的构造示例的示意图。除了错误信息管理表221和地址转换表222之外,表管理部220还包含管理对象地址表223和管理对象错误数量设定部224。
管理对象地址表223保持用于确定检出错误处的逻辑地址是否是错误信息管理表221中的管理对象的信息。例如,当由于某个逻辑地址在短期内被重写等原因而将该逻辑地址从用于刷新的管理对象中排除时,使用该表。
管理对象错误数量设定部224保持将要在错误信息管理表221中管理的错误数量之中的最小值。它在将错误数量为小的逻辑地址从管理对象排除的情况下使用。例如,当“3”被保持在管理对象错误数量设定部224中时,执行控制使得错误信息管理表221不管理检出的错误数量是“1”或“2”的逻辑地址。
注意,虽然说明了将被管理的错误数量之中的最小值的示例,但是也可以保持被从管理对象中排除的错误数量之中的最大值。
图15是示出了根据本发明第一实施例的变形例的管理对象地址表223的结构示例的示意图。管理对象地址表223保持当检出错误时将被错误信息管理表221管理的逻辑地址。换言之,假设将包含在如下范围内的逻辑地址包含在错误信息管理表221的管理对象中,该范围是由管理对象地址表223保持的大小和作为起始点的地址(起始逻辑地址)表示。在管理对象地址表223中,用逻辑扇区作为单位对起始逻辑地址寻址。例如,允许将512个字节假定为逻辑扇区。
顺便一提的是,假设在错误信息管理表221中保持管理对象的逻辑地址。然而,可在错误信息管理表221中保持从管理对象排除的逻辑地址。
图16是示出了根据本发明第一实施例的变形例的错误信息管理表的更新的处理过程的示例的流程图。变形例的处理过程的示例与参照图7说明的处理过程的示例的不同在于,步骤S921和S922的处理被加入到处理的第一阶段。
首先,确定与检出错误处的物理地址相对应的逻辑地址是否是错误信息管理表221中的管理对象逻辑地址(步骤S921)。当与检出错误处的物理地址相对应的逻辑地址不是管理对象时(步骤S921:否),终止处理而不更新错误信息管理表221。
接着,确定检出的错误数量是否是错误信息管理表221中管理对象的错误数量(步骤S922)。当检出的错误数量不是管理对象的错误数量时(步骤S922:否),终止处理而不更新错误信息管理表221。后续的处理与参照图7说明的处理过程的示例中的那些步骤相似。
在逻辑地址被从错误信息管理表中的管理对象排除时所指定的逻辑地址的示例可以包含在通过写入命令频繁地写入数据且不需要刷新的逻辑地址。
作为设定逻辑地址是否被包括到管理对象中的方法,第一,可以想到如下方法,在该方法中,主机计算机100使用命令等来指定是否将某个逻辑地址包括到错误信息管理表221的管理对象中。而且,第二,可以想到如下方法,在该方法中,定义了作为读取命令参数的标记,该标记用于区分经历读取命令处理的逻辑地址是否被包括到管理对象中,并且在读取命令的执行时,主机计算机100使用该标记来指定逻辑地址。此外,第三,可以想到如下方法,在该方法中,例如,在出厂时,在主机计算机100使用存储器系统之前指定逻辑地址是否被包括到管理对象中。
作为将检出的错误数量为小的物理页从错误信息管理表221的管理对象中排除的情况下的示例,可以想到的是,检出的错误数量是1位或2位或更小的物理页被从管理对象中排除。这在由于读取时的噪声等的影响而频繁出现1位或2位的错误的情况下是有效的。
作为设定检出的错误数量是否被包括到管理对象中的方法,第一,可以想到如下方法,在该方法中,主机计算机100利用命令等来指定管理对象错误数量。第二,可以想到如下方法,在该方法中,将“管理对象错误数量”定义为允许由读取命令指定的参数,并且主机计算机100指定该参数以执行读取命令。另外,第三,可以想到如下方法,在该方法中,例如,在出厂时,在主机计算机100使用存储器系统之前指定管理对象错误数量。
如前所述,根据本变形例,能够预先指定将要在错误信息管理表221中管理的错误信息的条件。
错误信息管理表的变形例
图17是示出了根据本发明的第一实施例的变形例的错误信息管理表221的结构示例的示意图。除了参照图4说明的之外,错误信息管理表221还将读取次数保持在每一个条目中。可以以较大的读取次数的次序确定刷新的优先顺序。
当物理地址被注册在错误信息管理表221时,读取次数被设定成“1”。当将要通过读取命令读取的物理地址是注册的物理地址时,增加读取次数。
如前所述,根据本变形例,能够基于错误信息管理表221中管理的读取次数确定存储器300中的刷新对象的地址。
刷新命令处理的变形例
在不允许对出现错误处的物理地址进行过度写入(overwriting)的非易失性存储器的情况下,在刷新时,需要改变写入目的地的物理地址。另外,还存在如下情况:即使在允许过度写入的非易失性存储器的情况下,也期望在刷新时改变写入目的地的物理地址。在这种情况下,在刷新命令中可以提供标记,并且主机计算机100可以指示存储器控制器200改变写入目的地的物理地址。而且,存储器控制器200可以在刷新时自发地改变写入目的地的物理地址。当刷新时使写入目的地的物理地址以这种方式改变时,如下所述,刷新命令处理的内容有所不同。
图18是示出了根据本发明第一实施例的变形例的刷新命令处理的处理过程的示例的流程图。本变形例中,处理过程的示例在步骤S945至步骤S947的处理中与参照图11说明的处理过程的示例有所不同。
在执行错误校正之后(步骤S944),在存储器300中搜索可写入数据的物理地址,并且选择所检出的物理地址(步骤S945)。接着,当将包括16字节ECC和在步骤S944中校正的512字节数据的528字节数据从错误检测校正部230传输时,指定在步骤S945中选择的物理地址,并且将数据写入存储器300的指定物理地址(步骤S946)。接着,在这种情况下,由于已经改变了物理地址,所以对地址转换表222进行更新(步骤S947)。换言之,使用在步骤S945中选择的物理地址来更新在步骤S942中选择的物理地址的值。其他的处理与参照图11说明的处理过程的示例中的处理相似。
如前所述,根据本变形例,能够在刷新时改变写入目的地的物理地址。
2.第二实施例
在上述第一实施例中,保持了多个条目,且存储器300的错误出现处的物理地址和检出的错误数量成对地包含在这些条目中。然而,可以使用存储器300的逻辑地址。在第二实施例中,存储器300的逻辑地址用于管理错误信息。
错误信息管理表的结构
图19是示出了根据本发明的第二实施例的错误信息管理表221的结构示例的示意图。根据第二实施例的错误信息管理表221保持多个条目,且存储器的错误出现处的逻辑地址和检出的错误数量成对地包含在这些条目中。
读取命令处理的操作
在本发明的第二实施例中,虽然错误信息是使用存储器300的逻辑地址进行管理的,但是,在错误信息管理表221的更新中,除了以下面的方式注册逻辑页以外,读取命令处理的操作基本上与参照图6和图7说明的操作相似(步骤S920)。
图20是示出了根据本发明第二实施例的错误信息管理表221的更新的处理过程的示例的流程图。
首先,确定在步骤S915中检出错误处的逻辑地址是否是注册在错误信息管理表221中的逻辑地址(步骤S963)。当检出错误处的逻辑地址是注册的逻辑地址时(步骤S963:是),确定检出的错误数量是否大于注册的错误数量(步骤S968)。当检出的错误数量大于注册的错误数量时(步骤S968:是),使用检出的错误数量来更新错误信息管理表221中的相应条目中的错误数量(步骤S969)。
当检出错误处的逻辑地址未注册在错误信息管理表221中(步骤S963:否),确定错误信息管理表221是否具有空条目(步骤S964)。当错误信息管理表221具有空条目时(步骤S964:是),将检出错误处的逻辑地址和错误数量注册到空条目(步骤S967)。
另一方面,当错误信息管理表221不具有空条目时(步骤S964:否),将检出的错误数量与注册在各个的条目上的错误数量之中的最小值进行比较(步骤S965)。当检出的错误数量大于最小值时(步骤S965:是),使用检出的错误数量和检出错误处的逻辑地址更新具有最小值的条目(步骤S966)。
刷新命令处理的操作
在本发明的第二实施例中,虽然错误信息是用存储器300的逻辑地址的使用来管理的,但是,除了在步骤S942中,从有效条目中选择待刷新的逻辑地址,并且利用地址转换表222将待刷新的逻辑地址转换成相应的物理地址以外,刷新命令处理的操作基本上与参照图11说明的操作相似。在第二实施例中,选择了错误数量为大的逻辑地址。另外,假设当错误数量在一些逻辑地址之间相同时,以逻辑地址的升序选择待刷新的逻辑地址。
写入命令处理的操作
在本发明的第二实施例中,虽然使用存储器300的逻辑地址来管理错误信息,但是,除了在步骤S957,处理器240将在步骤S955中经历了写入的逻辑地址处的条目中的错误数量更新成“0”,并使该条目成为空条目之外,写入命令处理的操作基本上与参照图13说明的操作相似。
如前所述,根据本发明的第二实施例,能够基于由错误信息管理表221中的逻辑地址管理的错误信息来恰当地确定存储器300中的刷新对象地址。
3.第三实施例
在上述第一实施例中,在错误信息管理表221中保持有多个条目,且存储器300的错误出现处的物理地址和检出的错误数量成对地包含在这些条目中。在第三实施例中,在错误信息管理表221中还保持并管理读取数据。当在错误信息管理表221中管理从存储器300读取的读取数据时,由于在刷新命令处理中不执行从存储器的数据读取,所以减少了刷新命令的处理时间。
错误信息管理表的结构
图21是示出了根据本发明第三实施例的错误信息管理表221的结构示例的示意图。根据第三实施例的错误信息管理表221保持多个条目,在这些条目中,存储器300的错误出现处的逻辑地址、检出的错误数量以及从存储器300读取的读取数据是彼此关联的。在这种情况下,假设了包含512字节数据和16字节ECC的528字节读取数据。
读取命令处理的操作
在本发明的第三实施例中,虽然将528字节数据保持在错误信息管理表221中,但是,除了步骤S926和步骤S927中的处理如下所述有所不同之外,读取命令处理的操作基本上与参照图6和图7说明的操作相似。
具体地,在步骤S926,在条目中,对检出的错误数量及其物理地址进行更新,并且将已校正的528字节数据保持在错误信息管理表221中。
另外,在步骤S927中,将检出错误的物理地址以及检出的错误数量注册到空条目,并且将已校正的528字节数据保持在错误信息管理表221中。
刷新命令处理的操作
在本发明的第三实施例中,虽然将528字节数据保持在错误信息管理表221中,但是,除了步骤S943至S946的处理如下所述有所不同之外,刷新命令处理的操作基本上与参照图11说明的操作相似。
具体地,由于在错误信息管理表221中保存已校正的数据,所以从存储器300读取数据的处理以及接着步骤S943和步骤S944中的校正错误的处理是不需要的。
另外,在步骤S946中,将保持在错误信息管理表221中的数据进行传输,并指定在步骤S942中选择的物理地址,接着,将数据写入到存储器300的指定物理地址。
写入命令处理的操作
在本发明的第三实施例中,虽然将528字节数据保持在错误信息管理表221中,但是,写入命令处理的操作基本上与参照图13说明的操作相似。
如前所述,根据本发明的第三实施例,将已校正的528字节数据保持在错误信息管理表221中,这能够省去从存储器300的数据读取。结果,能够减少用于刷新命令处理的处理时间。
4.第四实施例
在上述第三实施例中,将包含512字节数据和16字节ECC的528字节数据保持在错误信息管理表221中。在第四实施例中,错误信息管理表221保持和管理不包含ECC的数据。当通过错误信息管理表221管理从存储器300读取的读取数据时,由于不执行从存储器300的数据读取,所以在刷新命令处理时,如同第三实施例,减少了用于刷新命令的处理时间。
错误信息管理表的结构
图22是示出了根据本发明第四实施例的错误信息管理表221的结构示例的示意图。根据本发明第四实施例的错误信息管理表221包含多个条目,在这些条目中,存储器300的错误出现处的逻辑地址、检出的错误数量以及从存储器300读取的读取数据是彼此关联的。在本示例中,假设了不包含ECC的512字节读取数据。
读取命令处理的操作
在本发明的第四实施例中,虽然将512字节数据保持在错误信息管理表221中,但是,除了在步骤S926和S927的处理如下所述有所不同之外,读取命令处理的操作基本上与参照图6和图7说明的操作相似。
具体地,在步骤S926中,使用检出的错误数量及其物理地址来更新具有最小值的条目,并且将已校正的512字节数据保持在错误信息管理表221中。
而且,在步骤S927中,将检出错误的物理地址和错误数量注册到空条目,并且将已校正的512字节数据保持在错误信息管理表221中。
刷新命令处理的操作
在本发明的第四实施例中,虽然将512字节数据保持在错误信息管理表221中,但是,除了在ECC生成过程和数据写入过程中的处理如下所述有所不同之外,刷新命令的操作基本上与参照图11说明的操作相似。
图23是示出了本发明的第四实施例的刷新命令处理的处理过程的示例的流程图。
首先,处理器240确定错误信息管理表221是否具有有效条目(步骤S971)。有效条目是在错误数量不为零的条目。当错误信息管理表221不具有有效条目时(步骤S971:否),处理器240将刷新命令处理的正常完成通知给主机计算机100以终止刷新命令处理(步骤S979)。另一方面,当错误信息管理表221具有有效条目时(步骤S971:是),处理器240执行下面的处理。
处理器240从有效条目中选择将要刷新的物理地址(步骤S972)。在第四实施例中,假设:以具有较大的错误数量的物理地址的顺序来执行处理,当错误数量在某些物理地址之间相同时,以物理地址的升序选择待刷新的物理地址。
处理器240将512字节数据从表管理部220传输到ECC生成部210,接着,ECC生成部210针对所接收的512字节数据生成16字节ECC(步骤S974)。
处理器240指定在步骤S972中选择的物理地址以将从ECC生成部210传输的528字节数据写入到存储器300的指定物理地址(步骤S976)。
接着,将错误信息管理表221中的已刷新条目中的错误数量更新成“0”,这使得经刷新的条目成为空条目(步骤S978)。之后,重复步骤S971和后面的步骤的处理。
写入命令处理的操作
在本发明的第四实施例中,虽然将512字节数据保持在错误信息管理表221中,但是,写入命令处理的操作基本上与参照图13说明的操作相似。
如前所述,根据本发明的第四实施例,将已校正的512字节数据保持在错误信息管理表221中,这能够省去从存储器300的数据读取。结果,能够减少用于刷新命令处理的处理时间。
5.第五实施例
在上述第三实施例或第四实施例中,将数据保持在错误信息管理表221的所有条目中。在第五实施例中,只保持了用于如下物理页的数据,在该物理页中检出的错误数量为大。在出现了大的错误数量的物理页中,在近期的读取数据时可能出现不可校正的错误。因此,对于这种物理页,将数据原样地保持以在后续的读取操作中使用。所谓的缓冲存储器(cachememory)的效果是预期的。结果,能够在减小错误信息管理表221的大小的同时防止不可校正的错误以确保高的可靠性。
错误信息管理表的结构
图24是示出了根据本发明的第五实施例的错误信息管理表221的结构示例的示意图。在根据第五实施例的错误信息管理表221中,只将出现的错误的数量是6位或更多处的物理地址的数据保持在相应的条目中。换言之,执行控制使得数据没有被保持在出现错误的数量小于6位的条目中。
读取命令处理的操作
在本发明的第五实施例中,虽然只将检出的错误数量为大处的物理页的数据保持在错误信息管理表221中,但是,除了错误信息更新处理如下所述有所不同之外,读取命令处理的操作基本上与参照图6和图7说明的处理相似。
图25是示出了本发明第五实施例的错误信息管理表的更新的处理过程的示例的流程图。
首先,确定在步骤S915中检出错误处的物理地址是否是注册在错误信息管理表221的物理地址(步骤S983)。当检出错误处的物理地址是注册的物理地址时(步骤S983:是),确定检出的错误数量是否大于注册的错误数量(步骤S988)。当检出的错误数量大于注册的错误数量时(步骤S988:是),使用检出的错误数量来更新错误信息管理表221的相应条目中的错误数量(步骤S989)。
当检出错误处的物理地址未被注册在错误信息管理表221时(步骤S983:否),确定错误信息管理表221是否具有空条目(步骤S984)。当错误信息管理表221具有空条目时(步骤S984:是),将检出错误处的物理地址以及检出的错误数量注册到空条目(步骤S987)。
另一方面,当错误信息管理表221不具有空条目时(步骤S984:否),将检出的错误数量与注册在各个条目的错误数量之中的最小值进行比较(步骤S985)。当检出的错误数量大于最小值时(步骤S985:是),使用检出的错误数量及其物理地址来更新具有最小值的条目(步骤S986)。
在步骤S986、步骤S987或步骤S989中执行错误信息管理表221的注册或更新之后,确定检出的错误数量是否超过“5”(步骤S981)。结果,当检出的错误数量超过“5”时(步骤S981:是),将由错误检测校正部230校正的数据保持在错误信息管理表221中(步骤S982)。
刷新命令处理的操作
本发明的第五实施例中,虽然在错误信息管理表221中保持仅用于检出的错误数量为大的物理页的数据,但是,除了数据读取过程中的处理如下所述有所不同以外,刷新命令处理的操作基本上与参照图11说明的操作相似。
图26是示出了根据本发明第五实施例的刷新命令处理的处理过程的示例的流程图。
首先,处理器240确定错误信息管理表221是否具有有效条目(步骤S991)。有效条目是错误数量不是零的条目。当错误信息管理表221不具有有效条目时(步骤S991:否),处理器240将刷新命令处理的正常完成通知给主机计算机100以终止刷新命令处理(步骤S999)。另一方面,当错误信息管理表221具有有效条目时(步骤S991:是),处理器240执行后面的处理。
处理器240从有效条目中选择待刷新的物理地址(步骤S992)。在第五实施例中,假设:以具有大的错误数量的物理地址的顺序执行处理,并且当错误数量在某些物理地址之间相同时,以物理地址的升序选择将要刷新的物理地址。
当与在步骤S992中选择的物理地址相对应的错误数量未超过“5”时(步骤S993:否),指定该物理地址,并且从存储器300的该指定物理地址读取数据以将其传输到错误检测校正部230(步骤S994)。此时,被传输的数据大小是528字节。另一方面,当与在步骤S992中选择的物理地址相对应的错误数量超过“5”时(步骤S993:是),读取在错误信息管理表221中保持的数据,而不存取存储器300(步骤S995)。
错误检测校正部230对所读取的528字节数据执行错误检测,当检出错误时,错误检测校正部230进一步执行错误校正(步骤S996)。
将包含在步骤S996中校正的512字节数据以及16字节ECC的528字节数据从错误检测校正部230传输,并且指定在步骤S952中选择的物理地址,以及将上述528字节数据写入存储器300的指定物理地址(步骤S997)。
接着,将错误信息管理表221中的经刷新的条目中的错误数量更新成“0”,这使该条目成为空条目(步骤S998)。之后,重复步骤S991以及后面的步骤的处理。
写入命令处理的操作
在本发明的第五实施例中,虽然只将用于检出错误的数量为大的物理页的数据保存在错误信息管理表221中,但是,写入命令处理的操作基本上与参照图13说明的操作相似。
如前所述,根据本发明的第五实施例,不但在减小错误信息管理表221的大小的同时,还能够防止不可校正的错误以确保高的可靠性,而且能够减少用于刷新命令处理的处理时间。
6.第六实施例
在上述第一实施例中,错误信息由存储器控制器200管理并且未将其内容通知给主机计算机100。然而,主机计算机100可以具有获得错误信息的功能。于是,能够指定将被实际刷新的条目的数量,并且允许主机计算机100提前估计用于完成刷新命令所需要的时间。期望主机计算机100执行将要由存储器系统执行的命令的有效调度。而且,在多个存储器控制器和多个存储器连接到主机计算机100的系统中,允许主机计算机100抓取每一个存储器控制器的状态。换言之,在仔细查看从各个存储器控制器通知的信息并考虑到由各个存储器控制器管理的存储器的状态之后,允许主机计算机100执行待存储的数据的分配。
在第六实施例中,主机计算机100包含用于获得错误信息管理表221的信息的表信息获取命令。假设:允许通过表信息获取命令来获得错误信息管理表221中的所有条目的数量、数据被注册在错误信息管理表221上的条目的数量、错误数量和相应逻辑地址的列表等。在这种情况下,刷新命令可以将诸如待刷新的条目的数量、待刷新的错误数量之中的最小值、待刷新的逻辑地址等信息指定为参数。
顺便一提的是,在上述第一实施例中,存储器控制器200根据出现错误的数量以物理地址的优先顺序执行刷新。然而,主机计算机100可以指定逻辑地址来执行刷新。指定逻辑地址使主机计算机100能够优先地执行必要数据的刷新,而不考虑出现错误的数量。作为在不考虑错误数量的情况下待刷新的数据,例如,假设了存储器系统中的文件系统的管理信息等。
第六实施例与第一实施例的不同在于增加了表信息获取命令且刷新命令处理是不同的。以下将说明这些不同点。
表信息获取命令处理的操作
图27是示出了根据本发明第六实施例的表信息获取命令处理的处理过程的示例的流程图。
处理器240对错误信息管理表221中所有条目的数量进行计数(步骤S811)。在图4中的错误信息管理表221的示例中,所有条目的数量是“4”。
处理器240对错误信息管理表221中有效条目的数量进行计数(步骤S812)。在图4中的错误信息管理表221的示例中,有效条目的数量是“3”。
处理器240使用地址转换表222将各个有效条目的物理地址转换成逻辑地址(步骤S813)。
接着,处理器240将错误信息发送到主机计算机100(步骤S814)。此时,错误信息包含在步骤S811中获得的所有条目的数量、在步骤S812中获得的有效条目的数量、在步骤S813获得的逻辑地址以及从错误信息管理表221获得的错误数量。
之后,处理器240将表信息获取命令处理的正常完成通知给主机计算机100(步骤S815)。
刷新命令处理的操作
图28是示出了根据本发明第六实施例的刷新命令处理的处理过程的示例的流程图。
处理器240确定错误信息管理表221是否具有满足由主机计算机100指定的条件的条目(步骤S821)。当错误信息管理表221具有满足条件的条目时(步骤S821:是),处理器240执行步骤S822和后面的步骤的处理。当错误信息管理表221不具有满足条件的条目时(否步骤S821),处理器240执行步骤S827以及后面的步骤的处理。
当在步骤S821中主机计算机100指定待刷新的条目的数量时,对在步骤S823至S826中经历处理的条目进行计数,并且确定所计数的条目的数量是否等于所指定的条目数量。当两者彼此不相等时,换言之,当在步骤S823至S826中经历处理的条目的数量小于指定的条目数量时,确定出错误信息管理表221具有满足由主机指定的条件的条目,并且处理器240执行步骤S822以及后面的步骤的处理。另外,当在步骤S821中主机计算机100指定待刷新的错误数量的最小值时,处理器240对错误数量大于或等于指定的错误数量的条目执行刷新处理。而且,当在步骤S821中主机计算机100指定待刷新的逻辑地址时,处理器240将错误信息管理表221的物理地址转换成逻辑地址。接着,确定是否存在与指定的逻辑地址匹配的逻辑地址。
当在步骤S821中错误信息管理表221具有满足条件的条目时(步骤S821:是),处理器240执行下面的处理。处理器240从有效条目中选择待刷新的物理地址(步骤S822)。在第六实施例中,假设:以具有较大的错误数量的物理地址的次序执行处理,并且当错误数量在某些物理地址之间相同时,以物理地址的升序选择待刷新的物理地址。
处理器240指定在步骤S822中选择的物理地址以从存储器300读取数据,接着,将所读取的数据传输到错误检测校正部230(步骤S823)。此时,被传输的数据的大小是528字节。
错误检测校正部230对在步骤S823中传输的528字节数据执行错误检测,并且当检出错误时,错误检测校正部230执行错误校正(步骤S824)。
将包含在步骤S824中校正的512字节数据和16字节ECC的528字节数据从错误检测校正部230传输,指定在步骤S822中选择的物理地址,并且将528字节数据写入到存储器300的指定物理地址(步骤S825)。
接着,将错误信息管理表221中的经刷新的条目中的错误数量更新成“0”,这使该条目成为空条目(步骤S826)。之后,重复步骤S821以及后面的步骤中的处理。
当在步骤S821中错误信息管理表221不具有满足条件的条目时(步骤S821:否),处理器240执行后面的处理。处理器240确定在由主机计算机100指定的条件与错误信息管理表221之间是否存在失配(步骤S827)。当不存在失配时(步骤S827:否),处理器240将刷新命令处理的正常完成通知给主机计算机100以终止刷新命令处理(步骤S828)。当存在失配时(步骤S827:是),处理器240将指定条件中的失配通知给主机计算机100以终止刷新命令处理(步骤S829)。当在步骤S829中将在步骤S823至S826中经历处理的条目包含在被通知给主机计算机100的内容中时,可以一起通知与执行条件相匹配的条目已经经历了处理的事实以及失配的信息。可以将已经经历了处理的条目的数量作为如下信息进行通知,该信息用于指示与执行条件相匹配的条目已经经历了处理的事实。
当在步骤S827中主机计算机100指定了条目的数量时,并且当错误信息管理表221中的有效条目的数量小于由主机计算机100指定的条目数量时,确定出存在失配。另外,当在步骤S827中主机计算机100指定待刷新的最小错误数量时,并且当由错误信息管理表221管理的所有错误数量均小于由主机计算机100指定的最小错误数量时,确定出存在失配。而且,当在步骤S827中主机计算机100指定待刷新的逻辑地址时,并且当由主机计算机100指定的逻辑地址包含未被错误信息管理表221管理的逻辑地址时,确定出存在失配。
在第六实施例中,说明了如下示例:即使当在由主机计算机100指定的条件和错误信息管理表221之间存在失配时,仍对满足主机计算机100所指定的条件的条目的逻辑地址进行刷新。当在由主机计算机100指定的条件和错误信息管理表221之间存在失配时,可不执行刷新处理。在这种情况下,在执行步骤S821的处理之前执行步骤S827的处理,并且当存在失配时,处理器240将错误结束通知给主机计算机100以终止刷新命令处理。
如前所述,根据本发明的第六实施例,允许主机计算机100获得错误信息管理表221的信息以有效地调度由存储器系统执行的命令。
7.第七实施例
在上述第一至第六实施例中,错误信息由存储器控制器200管理。然而,错误信息可以由主机计算机100管理。在第七实施例中,假设主机计算机100管理错误信息。这使主机计算机100能够抓取错误信息而无需如同第六实施例那样使用表信息获取命令,并且使主机计算机100能够有效地调度由存储器系统执行的命令。
信息处理系统的构造
图29是示出了根据本发明的第七实施例的信息处理系统的构造的示例的示意图。该信息处理系统如同第一至第六实施例一样包含主机计算机100、存储器控制器200和存储器300。存储器控制器200和存储器300构成存储系统。然而,与第一至第六实施例不同的是,错误信息管理表121由主机计算机100管理,并且存储器控制器200包含错误信息保持部250。
错误信息管理表121包含与第一至第六实施例中说明的错误信息管理表221相似的结构,并且管理各个条目中的地址以及检出错误的数量。注意,本发明中,错误信息管理表121是本发明中的“错误信息管理部”的具体示例。
错误信息保持部250用于临时地保持由错误检测校正部230检出的错误数量以及错误出现处的逻辑地址。由错误信息保持部250保持的数据大小是与由主机计算机100按照一个读取命令读取的最大数据大小相对应的大小。例如,在由一个逻辑地址代表的区域的大小是512字节的情况下,当主机计算机100按照一个读取命令至多读取128kB的数据时,允许保持256条错误数量。
读取命令处理的操作
图30是示出了根据本发明第七实施例的读取命令处理的处理过程的示例的流程图。
除了以将错误信息保持在错误信息保持部250中来代替错误信息管理表221的更新处理(步骤S920)之外,第七实施例中的读取命令处理大体上与参照图6说明的第一实施例中的处理相似。换言之,将在步骤S835中检出错误的数量与步骤S832中确定的逻辑地址保持在错误信息保持部250中(步骤S839)。
在处理完成时,处理器240不但将由错误信息保持部250保持的检出错误处的逻辑地址和检出错误的数量通知给主机计算机100,而且还将读取命令的正常完成通知给主机计算机100以终止读取命令处理(步骤S843)。另一方面,当检出错误的数量超过可校正的错误数量时(步骤S837:否),处理器240将读取命令的错误结束通知给主机计算机100以终止读取命令处理(步骤S844)。此时,不但将由错误信息保持部250保持的检出错误处的逻辑地址和错误数量通知给主机计算机100,而且也将在步骤S837确定的可校正的逻辑地址和检出错误的数量超过可校正的错误数量的事实通知给主机计算机100。
顺便一提的是,虽然在本示例的步骤S843和S844中在命令完成通知的时机将逻辑地址以及在读取命令执行期间检出的错误数量通知给主机计算机100,但是通知的方法不局限于此。在命令完成通知时,可以只通知错误检测,且可以通过另一个命令来单独地获得包含检出的逻辑地址和错误数量的信息。
错误信息管理表的更新处理的操作
图31是示出了根据本发明第七实施例的错误信息管理表的更新的处理过程的示例的流程图。在第七实施例中,错误信息管理表的更新处理由主机计算机100执行。具体地,在完成读取命令处理之后,当主机计算机100从存储器控制器200获得错误信息时(检出错误处的逻辑地址和检出错误的数量),主机计算机100更新错误信息管理表121的信息。
首先,确定由主机计算机100从存储器控制器200接收的检出错误处的逻辑地址是否为注册在错误信息管理表121上的逻辑地址(步骤S853)。当检出错误处的逻辑地址是注册的逻辑地址时(步骤S853:是),确定所接收的错误数量是否大于错误数量(步骤S858)。当接收的错误数量大于注册的错误数量时(步骤S858:是),使用所接收的错误数量来更新错误信息管理表121中相应条目中的错误数量(步骤S859)。
当检出错误处的逻辑地址未被注册在错误信息管理表121时(步骤S853:否),确定错误信息管理表121是否具有空条目(步骤S854)。当错误信息管理表121具有空条目时(步骤S854:是),将所接收的错误逻辑地址和所接收的错误数量注册到空条目(步骤S857)。
另一方面,当错误信息管理表121不具有空条目时(步骤S854:否),将所接收的错误数量与注册在各个条目中的错误数量之中的最小值进行比较(步骤S855)。当所接收的错误数量大于最小值时(步骤S855:是),用接收的错误数量及其逻辑地址来更新具有最小值的条目(步骤S856)。
刷新命令处理的操作
在本发明第七实施例中,虽然错误信息由主机计算机100管理,但是除了如下所述的内容之外,刷新命令处理的操作基本上与参照图11说明的操作相似:确定是否存在未经历刷新命令处理的逻辑地址以及是否执行了从逻辑地址到物理地址的地址转换。通过刷新命令,将待刷新的逻辑地址作为参数发送。允许主机计算机100通过一个刷新命令来指定多个逻辑地址。
图32是示出了根据本发明第七实施例的刷新命令处理的处理过程的示例的流程图。
处理器240确定未经历步骤S863至S866中的处理的未处理的逻辑地址是否存在于由主机计算机100指定的逻辑地址中(步骤S861)。当未处理的逻辑地址不存在时(步骤S861:否),处理器240将刷新命令处理的正常完成通知给主机计算机100以终止刷新命令处理(步骤S869)。当未处理的逻辑地址存在时(步骤S861:是),处理器240执行下面的处理。
处理器240从未处理的逻辑地址中选择将要刷新的逻辑地址(步骤S862)。在第七实施例中,假设以升序选择待刷新的逻辑地址。
处理器240使用地址转换表222将在步骤S862中确定的逻辑地址转换成物理地址(步骤S863)。
处理器240指定在步骤S863中转换的物理地址以从存储器300的指定物理地址读取数据,并且将所读取的数据传输到错误检测校正部230(步骤S864)。被传输的数据的大小是528字节。
错误检测校正部230对在步骤S864中传输的528字节数据执行错误检测,并且当检出错误时,错误检测校正部230进一步执行错误校正(步骤S865)。
将包含在步骤S865中校正的512字节数据以及16字节ECC的528字节数据从错误检测校正部230传输,指定在步骤S863中转换的物理地址,并且将528字节数据写入到存储器300的指定物理地址(步骤S866)。之后,重复步骤S861以及后面的步骤的处理。
在主机计算机100从存储器控制器200接收刷新命令处理的完成通知之后,主机计算机100更新错误信息管理表121。主机计算机100使用“0”来更新错误信息管理表121的条目之中的与由刷新命令指定的逻辑地址相对应的条目中的错误数量。
写入命令处理的操作
在本发明的第七实施例中,虽然主机计算机100管理错误信息,但是写入命令处理的操作基本上与参照图13说明的操作相似。然而,虽然在第一实施例中执行将错误信息管理表221的条目更新成空条目的处理(步骤S956和S957),但是在第七实施例中,该处理是不必要的。
图33是示出了本发明第七实施例的写入命令处理的处理过程的示例的流程图。
处理器240基于由主机接口201接收的写入目的地的首逻辑地址和数据大小将处理划分成逻辑地址单位(步骤S871)。一个逻辑地址由一个处理来处理。
处理器240选择并确定待经历写入处理的逻辑地址(步骤S872)。在第七实施例中,基于首逻辑地址依次确定待经历写入处理的逻辑地址。
处理器240使用保持在表管理部220中的地址转换表222将在步骤S872中选择的逻辑地址转换成物理地址(步骤S873)。
处理器240将由主机接口201接收的一个逻辑地址的512字节数据传输到ECC生成部210(步骤S874)。ECC生成部210针对所接收的512字节数据生成16字节ECC。
处理器240指定在步骤S953中获得的物理地址以将从ECC生成部210传输的528字节数据写入到存储器300的该指定物理地址(步骤S875)。
在写入命令处理中,处理器240将已写入存储器300的数据的大小总和与由写入命令指定的数据大小进行比较(步骤S878)。当写入数据的大小总和小于指定的数据大小时(步骤S878:否),重复步骤S872以及下面的步骤的处理。另一方面,当写入数据的大小总和达到指定的数据大小时(步骤S878:是),处理器240将写入命令处理的正常完成通知给主机计算机100以终止写入命令处理(步骤S879)。
在主机计算机100从存储器控制器200接收写入命令处理的完成通知之后,主机计算机100更新错误信息管理表121。主机计算机100使用“0”来更新错误信息管理表121的条目之中的与由写入命令指定的逻辑地址相对应的条目中的错误数量。
如前所述,根据本发明的第七实施例,允许主机计算机100抓取错误信息,这能够有效地调度由存储器系统执行的命令。
顺便一提的是,上述各个实施例是用于实施本发明的示例,并且各个实施例中的要素与所附权利要求中的用于定义本发明的要素具有对应关系。同样地,所附权利要求中的用于定义本发明的要素与本发明各个实施例中具有相同名称的要素具有对应关系。然而,本发明不局限于各个实施例,还可以存在其他的各种变形例,只要它们处于所附的权利要求或其等同物的范围之内。
另外,可以将在上述各个实施例中所描述的处理过程视为具有各个处理系列的方法,并且可以将其视为用于使计算机执行过程序列的程序或用于保持该程序的记录媒介。作为记录媒介,可以使用例如光盘(Compact Disc(CD))、小型磁盘(MiniDisc(MD))、数字通用光盘(DigitalVersatile Disc(DVD)),存储卡、蓝光光盘(Blu-ray Disc)(注册商标)等。
注意,可以如下所述地构造本发明。
(1)一种存储控制器,其包括:
错误信息管理部,其管理存储器的多个地址的错误信息;以及
刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象的地址。
(2)根据(1)所述的存储控制器,其中
所述错误信息管理部将检出错误处的地址与检出的错误数量相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述错误数量将与所述错误数量相关联的所述检出错误处的地址确定为所述刷新对象的地址。
(3)根据(2)所述的存储控制器,其中,所述错误信息管理部基于所述错误数量确定是否从管理对象排除所述错误信息。
(4)根据(2)或(3)所述的存储控制器,其中
所述错误信息管理部还将管理读取次数和所述检出错误处的地址相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述读取次数将与所述读取次数相关联的所述检出错误处的地址确定为所述刷新对象的地址。
(5)根据(1)至(4)中任一项所述的存储控制器,其中,当在所述存储器中出现错误时,所述错误信息管理部基于预先指定的条件确定是否从管理对象中排除所述错误信息。
(6)根据(1)至(5)中任一项所述的存储控制器,其中,
所述错误信息管理部将所述存储器的检出错误处的物理地址和检测的错误数量相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述错误数量将与所述错误数量相关联的所述物理地址确定为所述刷新对象的地址。
(7)根据(1)至(6)中任一项的存储控制器,其还包括:
地址转换部,其将所述存储器的用于从主机计算机到所述存储器的存取命令的逻辑地址转换成所述存储器的物理地址,
其中,所述错误信息管理部将所述存储器的检出错误处的逻辑地址与检出的错误数量相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述错误数量选择与所述错误数量相关联的逻辑地址,并使用所述地址转换部将该逻辑地址转换成物理地址以将该物理地址确定为所述刷新对象的地址。
(8)根据(1)至(7)中任一项的存储控制器,其中,所述错误信息管理部保持所述存储器的地址中存储的与所述错误信息相关联的数据,并在存取所述存储器的地址时使用所述数据。
(9)根据(8)的存储控制器,其中,除了所述数据以外,所述错误信息管理部还保持错误校正码。
(10)根据(8)或(9)的存储控制器,其中,只有当包含在所述错误信息中的所述错误数量满足预定条件时,所述错误信息管理部才保持所述数据。
(11)根据(1)至(10)中任一项的存储控制器,其中,所述错误信息管理部在从主机计算机接收所述错误信息的获取命令时将所述错误信息通知给所述主机计算机。
(12)一种存储设备,其包括:
存储器;
错误信息管理部,其管理存储器的多个地址的错误信息;以及
刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象的地址。
(13)一种信息处理系统,其包括:
存储器;
主机计算机,其发出针对存储器的存取命令;
错误信息管理部,其管理存储器的多个地址的错误信息;以及
刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象的地址。
(14)根据(13)所述的信息处理系统,其中,所述主机计算机包含所述错误信息管理部和所述刷新对象确定部。
(15)一种存储控制方法,其包括:
管理存储器的多个地址的错误信息;以及
基于所述错误信息在存储器中确定刷新对象的地址。
本申请要求于2013年2月14日提交的日本在先专利申请JP2013-026493的权益,其全部内容通过引用的方式合并入本文。

Claims (16)

1.一种存储控制器,其包括:
错误信息管理部,其管理存储器的多个地址的错误信息;以及
刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象的地址。
2.根据权利要求1所述的存储控制器,其中,
所述错误信息管理部将检出错误处的地址与检出的错误数量相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述错误数量将与所述错误数量相关联的所述检出错误处的地址确定为所述刷新对象的地址。
3.根据权利要求2所述的存储控制器,其中,所述错误信息管理部基于所述错误数量确定是否从管理对象排除所述错误信息。
4.根据权利要求2所述的存储控制器,其中,
所述错误信息管理部还将管理读取次数和所述检出错误处的地址相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述读取次数将与所述读取次数相关联的所述检出错误处的地址确定为所述刷新对象的地址。
5.根据权利要求1所述的存储控制器,其中,当在所述存储器中出现错误时,所述错误信息管理部基于预先指定的条件确定是否从管理对象中排除所述错误信息。
6.根据权利要求1所述的存储控制器,其中,
所述错误信息管理部将所述存储器的检出错误处的物理地址和检测的错误数量相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述错误数量将与所述错误数量相关联的所述物理地址确定为所述刷新对象的地址。
7.根据权利要求1所述的存储控制器,其还包括:
地址转换部,其将所述存储器的用于从主机计算机到所述存储器的存取命令的逻辑地址转换成所述存储器的物理地址,
其中,所述错误信息管理部将所述存储器的检出错误处的逻辑地址与检出的错误数量相关联以作为所述错误信息进行管理,并且
所述刷新对象确定部基于所述错误数量选择与所述错误数量相关联的逻辑地址,并使用所述地址转换部将该逻辑地址转换成物理地址以将该物理地址确定为所述刷新对象的地址。
8.根据权利要求2所述的存储控制器,其中,所述错误信息管理部保持所述存储器的地址中存储的与所述错误信息相关联的数据,并在存取所述存储器的地址时使用所述数据。
9.根据权利要求8所述的存储控制器,其中,除了所述数据以外,所述错误信息管理部还保持错误校正码。
10.根据权利要求8所述的存储控制器,其中,只有当包含在所述错误信息中的所述错误数量满足预定条件时,所述错误信息管理部才保持所述数据。
11.根据权利要求1所述的存储控制器,其中,所述错误信息管理部在从主机计算机接收所述错误信息的获取命令时将所述错误信息通知给所述主机计算机。
12.根据权利要求1所述的存储控制器,其中,所述刷新对象确定部改变所述刷新对象的地址,以将所述刷新对象的改变前的地址中存储的数据写入到所述刷新对象的改变后的地址。
13.一种存储设备,其包括:
存储器;以及
根据权利要求1-12中任一项所述的存储控制器,其用于控制所述存储器的存取。
14.一种信息处理系统,其包括:
存储器;
主机计算机,其针对所述存储器发出存取命令;
错误信息管理部,其管理所述存储器的多个地址的错误信息;以及
刷新对象确定部,其基于所述错误信息在所述存储器中确定刷新对象地址。
15.根据权利要求14所述的信息处理系统,其中,所述主机计算机包括所述错误信息管理部和所述刷新对象确定部。
16.一种存储控制方法,其包括:
管理存储器的多个地址的错误信息;以及
基于所述错误信息在所述存储器中确定刷新对象地址。
CN201410037583.5A 2013-02-14 2014-01-26 存储控制器、存储设备、信息处理系统和存储控制方法 Expired - Fee Related CN103995756B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013026493A JP2014157391A (ja) 2013-02-14 2013-02-14 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP2013-026493 2013-02-14

Publications (2)

Publication Number Publication Date
CN103995756A true CN103995756A (zh) 2014-08-20
CN103995756B CN103995756B (zh) 2018-05-11

Family

ID=51298347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410037583.5A Expired - Fee Related CN103995756B (zh) 2013-02-14 2014-01-26 存储控制器、存储设备、信息处理系统和存储控制方法

Country Status (3)

Country Link
US (1) US9405608B2 (zh)
JP (1) JP2014157391A (zh)
CN (1) CN103995756B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107748722A (zh) * 2017-09-30 2018-03-02 华中科技大学 一种保证固态硬盘中数据持续性的自适应数据刷新方法
CN108351816A (zh) * 2015-12-18 2018-07-31 英特尔公司 用于在数据存储设备上执行数据拷贝操作的技术

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102078853B1 (ko) * 2013-11-27 2020-02-18 삼성전자 주식회사 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
US10002044B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US9740558B2 (en) 2015-05-31 2017-08-22 Intel Corporation On-die ECC with error counter and internal address generation
US9916091B2 (en) * 2015-07-13 2018-03-13 Samsung Electronics Co., Ltd. Memory system architecture
US10127101B2 (en) 2015-08-28 2018-11-13 Intel Corporation Memory device error check and scrub mode and error transparency
US10592114B2 (en) * 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10621119B2 (en) 2016-03-03 2020-04-14 Samsung Electronics Co., Ltd. Asynchronous communication protocol compatible with synchronous DDR protocol
JP6697360B2 (ja) 2016-09-20 2020-05-20 キオクシア株式会社 メモリシステムおよびプロセッサシステム
US10691501B1 (en) * 2016-10-25 2020-06-23 Amazon Technologies, Inc. Command invocations for target computing resources
JP2019207524A (ja) * 2018-05-29 2019-12-05 セイコーエプソン株式会社 回路装置、電気光学装置、電子機器及び移動体
US11113007B2 (en) * 2019-05-13 2021-09-07 Micron Technology, Inc. Partial execution of a write command from a host system
KR20210038096A (ko) * 2019-09-30 2021-04-07 에스케이하이닉스 주식회사 메모리 시스템, 데이터 시스템 및 그 동작방법
DE102019216008A1 (de) * 2019-10-17 2021-04-22 Continental Automotive Gmbh Refresh eines nichtflüchtigen Speichermediums

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060039196A1 (en) * 2003-10-03 2006-02-23 Gorobets Sergey A Corrected data storage and handling methods
US20080189588A1 (en) * 2007-02-07 2008-08-07 Megachips Corporation Bit error prevention method and information processing apparatus
CN101622607A (zh) * 2008-02-29 2010-01-06 株式会社东芝 半导体存储装置
CN101627444A (zh) * 2007-10-03 2010-01-13 株式会社东芝 半导体存储装置
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
CN102063940A (zh) * 2009-11-16 2011-05-18 索尼公司 非易失存储器和存储系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US9003102B2 (en) * 2011-08-26 2015-04-07 Sandisk Technologies Inc. Controller with extended status register and method of use therewith
US8898541B2 (en) * 2011-11-30 2014-11-25 Sony Corporation Storage controller, storage device, information processing system, and storage controlling method
US9087614B2 (en) * 2012-11-27 2015-07-21 Samsung Electronics Co., Ltd. Memory modules and memory systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060039196A1 (en) * 2003-10-03 2006-02-23 Gorobets Sergey A Corrected data storage and handling methods
US20080189588A1 (en) * 2007-02-07 2008-08-07 Megachips Corporation Bit error prevention method and information processing apparatus
CN101627444A (zh) * 2007-10-03 2010-01-13 株式会社东芝 半导体存储装置
CN101622607A (zh) * 2008-02-29 2010-01-06 株式会社东芝 半导体存储装置
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
CN102063940A (zh) * 2009-11-16 2011-05-18 索尼公司 非易失存储器和存储系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108351816A (zh) * 2015-12-18 2018-07-31 英特尔公司 用于在数据存储设备上执行数据拷贝操作的技术
CN107748722A (zh) * 2017-09-30 2018-03-02 华中科技大学 一种保证固态硬盘中数据持续性的自适应数据刷新方法
CN107748722B (zh) * 2017-09-30 2020-05-19 华中科技大学 一种保证固态硬盘中数据持续性的自适应数据刷新方法

Also Published As

Publication number Publication date
CN103995756B (zh) 2018-05-11
US20140229761A1 (en) 2014-08-14
US9405608B2 (en) 2016-08-02
JP2014157391A (ja) 2014-08-28

Similar Documents

Publication Publication Date Title
CN103995756A (zh) 存储控制器、存储设备、信息处理系统和存储控制方法
US9141537B2 (en) Magnetic random access memory journal
JP6149598B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US8874830B2 (en) Method for controlling memory array of flash memory, and flash memory using the same
CN103136067A (zh) 存储控制器、存储设备、信息处理系统以及存储控制方法
CN104969168A (zh) 具有用于分级写入的nvram的持久性存储装置
JP6447629B2 (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
US20150154071A1 (en) Data storage device and data access-method
JP2015022516A (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
CN103077094A (zh) 存储控制装置、存储装置、信息处理系统和存储控制方法
US9519541B2 (en) Data storage device and data checking and correction for volatile memory
US20160041872A1 (en) Semiconductor memory device
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP2014086062A (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
JP2014174659A (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
WO2016017321A1 (ja) メモリコントローラ、記憶装置、情報処理システム、および、メモリコントローラ制御方法
JP6493062B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
CN105278871A (zh) 通过在写入相变存储器之前读取来实现增强性能以避免写入取消
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
CN101620575B (zh) 闪存卡及闪存预防数据毁损的方法
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
WO2019244417A1 (ja) 記憶制御装置、記憶装置および記憶制御方法
JP6927228B2 (ja) メモリコントローラ、メモリシステム、情報システムおよびメモリ制御方法
US20140281826A1 (en) Error correction method and memory device
KR20140101626A (ko) 솔리드 스테이트 드라이브의 데이터 처리 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180511

Termination date: 20220126