CN103197985B - 存储控制装置 - Google Patents

存储控制装置 Download PDF

Info

Publication number
CN103197985B
CN103197985B CN201210441123.XA CN201210441123A CN103197985B CN 103197985 B CN103197985 B CN 103197985B CN 201210441123 A CN201210441123 A CN 201210441123A CN 103197985 B CN103197985 B CN 103197985B
Authority
CN
China
Prior art keywords
data
memory
unit
correcting code
error correcting
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
CN201210441123.XA
Other languages
English (en)
Other versions
CN103197985A (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
Priority claimed from JP2011244266A external-priority patent/JP2013101455A/ja
Priority claimed from JP2012004578A external-priority patent/JP2013143118A/ja
Application filed by Sony Corp filed Critical Sony Corp
Publication of CN103197985A publication Critical patent/CN103197985A/zh
Application granted granted Critical
Publication of CN103197985B publication Critical patent/CN103197985B/zh
Active 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明了公开了一种存储控制装置。在此所公开的技术的实施例旨在灵活地设置将纠错码附加到存储在存储器中的一组数据序列的规则。存储控制装置具有纠错码附加规则保持块和纠错部。纠错码附加规则保持块通过将把纠错码附加到存储在存储器中的一组数据序列的规则与该组数据序列的每一个地址的数据相关联来保持所述规则。如果发生对存储器的访问,纠错部就根据与发生访问的地址有关的附加规则来对存储在存储器中的一组数据序列执行纠错。

Description

存储控制装置
技术领域
本文中公开的技术涉及存储控制装置。更具体地,本文中公开的技术涉及存储控制装置、存储装置和基于纠错码执行纠错的信息处理***、用于这些装置和***的方法以及使计算机执行这些方法的程序。
背景技术
在存储器的使用中,可附加ECC(纠错码)以检测存储器中存储的数据中的错误并纠正检测到的错误。特别是,对于非易失性存储器,一般性的做法是使用这种纠错码。更具体地,在向存储器写入数据时,纠错码被生成,该纠错码将与数据一起被写入存储器中,并且在读取数据时,同时读出纠错码以执行纠错处理,从而提高存储器数据保持特性。
当使用上面提到的纠错码时,有时期望改变每一个存储器区的数据保持特性的程度。例如,一种半导体存储装置被提出,在其中,通过假设奇数页的错误发生率比偶数页的更高,更多的奇偶校验位被分配给连续的奇数页和偶数页的两页中的奇数页(例如,参照日本专利早期公开No.2009-282923)。
由于数据保持特性随着重写次数增加而恶化,所以附着更强的纠错码会使得可靠性更高。然而,这增加了奇偶校验位的长度,使得有必要增大冗余区的容量;例如,在诸如32个字节的小的数据单位的情况下,出现了存储成本增加的问题。另一方面,在诸如512个字节的大的数据单位的情况下,奇偶校验位占用的容量能够抑制得比较小,从而改善了存储成本增加的问题。因此,在平衡性能和容量效率方面,重要的是通过根据要存储的数据的内容和在其中存储数据的存储单元的状态来选择32个字节和512个字节的数据大小中的最优的一个来存储数据。例如,一种半导体存储器***被提出,其中,通过为存储器中的每一页的数据安排ECC规范信息,第一ECC和第二ECC中的一个被使用(例如参照日本专利早期公开No.2008-192054)。
发明内容
在上面提到的相关技术中,在存储器页之间附加了不同方案的纠错码。然而,应指出的是,在上面提到的相关技术中,根据错误发生率的幅度将更多的奇偶校验位分配给奇数页和偶数页之一,从而使位数的分配自动由错误发生率确定。另一方面,有时期望例如在文件***中增强特定文件的数据保持特性。在这种情况下,有必要从***侧按照期望设置纠错码的方案。
在日本专利早期公开No.2008-192054中公开的相关技术中,通过基于ECC规范信息指定纠错码的类型来选择两种不同纠错码中的其中之一。在这种情况下,要写入到非易失性存储器的基于写的数据的配置由其中存储数据的数据部分和其中存储纠错码等的冗余部分构成。在这种情况下,如果在数据部分中的数据和在冗余部分中的纠错码是以一对一的方式彼此相关的,则可以在每次数据被入一个写单位时生成纠错码。然而,如果其中生成纠错码的大小相对大,则包括在一个写单位中的数据不能单独生成纠错码,从而有必要为延伸两个或多个写单位的数据共同生成纠错码。因此,在写处理中,写单位在纠错码生成后生成。在读处理的情况下,在延伸两个或多个读单位的数据和纠错码绑在一起后执行纠错处理。
因此,本公开提出了与相关技术的方法和装置相关联的上述和其他问题,并通过灵活地设定将纠错码附加到存储器中的一组数据序列的规则来解决了所提出的问题。
在执行本文中公开的技术中并根据其第一种方式,提供了存储控制装置或用于该存储控制装置的存储控制方法。存储控制装置包括:纠错码附加规则保持块,其配置为通过将把纠错码附加到存储在存储器中的一组数据序列的附加规则针对该组数据序列的每一个地址与该组数据序列相关联来保持所述附加规则;和纠错部,其配置为如果发生对存储器的访问,则根据与发生访问的访问地址有关的附加规则来对存储在存储器中的该组数据序列执行纠错。这种新颖的设置允许基于预先为一组数据序列定义的纠错码附加规则来纠错。
在上述第一种方式下,这些附加规则可以定义纠错码从该组数据序列的全部生成的情况以及纠错码从构成该组数据序列的多个部分数据序列中的每一个独立生成的情况中的一种。这种新颖的设置允许基于针对该组所有数据序列或部分数据序列定义的纠错码附加规则来纠错。
在上述第一种方式下,如果与访问地址有关的附加规则被发现定义为纠错码从构成该组数据序列的多个部分数据序列的每一个独立生成,则纠错部可以仅对多个部分数据序列中与访问有关的部分数据序列执行纠错。这种新颖的设置允许跳过对与访问相关联的那些数据序列之外的部分数据序列执行纠错。
在上述第一种方式下,存储控制装置还可具有纠错码生成部,其被配置为如果发生对存储器的写访问,则按照在写访问中指定的附加规则来为与写访问相关联的写数据生成纠错码。这种新颖的设置允许以写访问作为触发来为写数据生成上述纠错码。此外,在上述存储控制装置中,如果与写地址有关的附加规则被发现定义为纠错码从构成该组数据序列的多个部分数据序列的每一个独立生成,则纠错码生成部可以仅为多个部分数据序列中与写访问有关的部分数据序列生成纠错码。这种新颖的设置允许跳过对与写访问相关联的部分数据序列之外的部分数据序列生成纠错码。
在上述第一种方式下,纠错码附加规则保持块可以按照发出请求的主机计算机的指示来保持附加规则。这种新颖的设置允许以主机计算机的指示用作触发来保持附加规则。
在上述第一种方式下,如果发生对存储器的写访问,则纠错码附加规则保持块可通过将在写访问中指定的附加规则与和写访问关联的写地址相关联来保持附加规则。这种新颖的设置允许以写访问作为触发器来保持附加规则。
在上述第一种方式下,存储控制装置还具有地址转换块,其配置为如果存储器的访问地址是逻辑地址,则将逻辑地址转换为物理地址并将物理地址输出到存储器中。在此配置中,纠错码附加规则保持块可以通过将附加规则与该组数据序列中的每一个数据序列的逻辑地址关联来保持附加规则,纠错部可根据与逻辑地址关联的附加规则来对存储在存储器中的该组数据序列执行纠错。这种新颖的设置允许为一组数据序列的每一个逻辑地址定义纠错码附加规则。
在上述第一种方式下,存储控制装置还具有地址转换块,其配置为如果存储器的访问地址是逻辑地址,则将逻辑地址转换为物理地址并将物理地址输出到存储器中。在此配置中,纠错码附加规则保持块可以通过将该组数据序列中的每一个数据序列的物理地址关联来保持附加规则,纠错部可根据与物理地址相关联的附加规则来对存储在存储器中的多组数据序列执行纠错。这种新颖的设置允许为一组数据序列的每一个物理地址定义纠错码附加规则。
在执行本文公开的技术中且根据其第二种方式,提供了一种存储装置。存储装置具有:存储器,其配置将一组数据序列与针对该组数据序列的纠错码存储在数据区以及纠错码;纠错码附加规则保持块,其配置为通过将针对上述该组数据序列的纠错码附加规则与该组数据序列的每一个地址关联来保持所述规则;和纠错部,其配置为如果发生对上述存储器的访问,则根据与每一个访问地址有关的附加规则来对存储在存储器中的上述该组数据序列执行纠错。这种新颖的设置允许基于预先为存储在存储器中的该组数据序列定义的纠错码附加规则来执行纠错。
在上述第二种方式下,附加规则可以定义上述纠错码是从上述该组数据序列的全部生成还是这些代码从构成上述该组数据序列的两个或多个部分数据序列的每一个独立生成。如果附加规则定义为纠错码从构成上述组数据序列的两个或多个部分数据序列的每一个独立生成,则存储器可在与两个或多个部分数据序列的每一个连续位置处存储纠错码。这种新颖的设置有利于在连续的位置存储部分数据序列和纠错码,以共同读出这些部分数据序列和纠错码。
应指出,在上述第二种方式下,上述存储器是非易失性存储器。
在执行在本文中公开的技术中且根据其第三方式,提供了一种信息处理***。该信息处理***具有:存储器,其被配置为存储一组数据序列以及针对该组数据序列的纠错码;纠错码附加规则保持块,其配置为通过将针对上述该组数据序列的纠错码附加规则与该组数据序列的每一个地址关联来保持所述规则;纠错部,其配置为如果发生对上述存储器的访问,则通过根据与各访问地址关联的附加规则来对存储在存储器中的上述该组数据序列执行纠错;和主机计算机,其向上述存储器发出读取或写入上述数据区的请求。这种新颖的设置允许在处理来自主机计算机的对存储器的访问请求时通过根据为存储在存储器中的一组数据序列预先定义的纠错码附加规则来执行纠错。
在本文中公开的技术旨在解决上述问题。在执行上述技术中且根据其第四种方式,提供了一种存储控制装置。该存储控制装置具有第一写单位生成部,其被配置为如果向存储器发出第一种模式的写指令,则通过利用针对与第一种模式的写指令相关联的写数据的第一纠错码以比存储器的访问单位小的第一大小对所述数据进行划界而获得的数据进行配对并将指示第一种模式的模式信息附加到每一对来来生成写数据并作为第一写单位。存储控制装置还具有第二写单位生成部,其被配置为如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并将指示第二种模式的模式信息附加到每一个划界得到的对来生成写数据并作为第二写单位,所述成对数据是通过以比存储器的访问单位大的第二大小和针对与第二种模式的写指令相关联的写数据的第二纠错码对该数据进行划界而获得的。存储控制装置还具有写处理部,其配置为如果向同一存储器发出第一种模式的写指令,则向存储器写第一写单位并作为访问单位,如果是向存储器发出第二种模式的写指令,则向存储器写第二写单位并作为方位单位。这种新颖的设置允许在第一种模式和第二种模式下的任一个中将数据写到存储器中而无需等待生成纠错码。
在上述第四种方式下,存储控制装置还可具有读处理部,其被配置为从存储器读访问单位以提取模式信息。存储控制装置还具有第一纠错处理部,其配置为如果模式信息指示第一种模式,则基于包括在访问单位中的第一大小的数据和第一纠错码来执行纠错。存储控制装置还具有第二纠错处理部,其配置为如果模式信息指示第二种模式,则基于由包括在访问单位中的预定大小限定的数据和第二纠错码来执行纠错。这一新颖的设置允许在第一种模式和第二种模式的任一模式下执行纠错而不用在处理中单独保持中途数据。
在上述第四种方式下,存储控制装置还可具有:第一纠错码生成部,其配置为为第一大小的数据生成第一纠错码;和第二纠错码生成部,其被配置为为第二大小的数据生成第二纠错码。这种新颖的设置允许生成具有与模式信息的大小相匹配的纠错码。
在上述第四种方式下,模式信息可以存储在访问单位的预定位置。该新颖的设置允许通过参考访问单位内的预定位置来确定第一种模式或者第二种模式。在这种情况下,模式信息可以特别存储在访问单位的开始处。这种新颖的设置允许通过参考每一个访问单位的开始来确定第一种模式或者第二种模式。
在上述第四种方式下,第一写单位生成部和第二写单位生成部可以向模式信息附加模式信息的第三纠错码。这种新颖的设置允许模式信息与其他处理中的数据具有独立性。特别是,在这种情况下,上述第三纠错码可以是通过位多数规则执行纠错的纠错码。此外,在这种情况下,上述读处理部可基于模式信息和第三纠错码来对模式信息执行纠错。
在执行在本文中公开的技术中且根据其第五种方式,提供了一种存储装置。存储装置具有通过预定访问单位访问的存储器。存储装置还具有第一写单位生成部,其配置为如果向存储器发出第一种模式的写指令,则通过利用针对与第一种模式的写指令相关联的写数据的第一纠错码以比所述存储器访问单位小的第一大小对该数据进行划界而获得的数据进行配对并将指示第一种模式的模式信息附加到每一对来生成写数据作为第一写单位。存储控制装置还具有第二写单位生成部,其被配置为如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并将指示第二种模式的模式信息附加到每一个划界得到对来生成写数据并作为第二写单位,所述成对数据是通过以比存储器的访问单位的第二大小和针对与第二种模式的写指令相关联的写数据的第二纠错码来对该数据进行划界而获得的。存储控制装置还具有写处理部,其配置为如果向同一存储器发出第一种模式的写指令,则向存储器写第一写单位作为访问单位,如果是向存储器发出第二种模式的写指令,则向存储器写第二写单位作为访问单位。这种新颖的设置允许在第一种模式和第二种模式下的任一个中将数据写到存储器中,而无需等待生成纠错码。应指出的是,在第五种方式下,上述存储器可以是非易失性存储器。
在执行在本文中公开的技术中且根据其第六实施例,提供了一种信息处理***。信息处理***具有通过预定的访问单位访问的存储器。该信息处理***还具有第一写单位生成部,其配置为如果向存储器发出第一种模式的写指令,则通过利用与第一种模式的写指令相关联的写数据的第一纠错码和以比所述存储器的访问单位小的第一大小来对该数据进行划界而获得的数据进行配对并将指示第一种模式的模式信息附加到每一对来生成写数据作为第一写单位。信息处理***还具有第二写单位生成部,其被配置为如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并将指示第二种模式的模式信息附加到每一个划界得到的对来生成写数据并作为第二写单位,所述成对数据是通过以比存储器的访问单元大的第二大小和针对与第二种模式的写指令相关联的写数据的第二纠错码来对该数据进行划界而获得的。该信息处理***还具有写处理部,其配置为如果向同一存储器发出第一种模式的写指令,则向存储器写第一写单位作为访问单位,如果是向存储器发出第二种模式的写指令,则向存储器写第二写单位作为访问单位。该信息处理***还具有向上述存储器发出写指令和读指令的计算机。这种新颖的设置允许在第一种模式和第二种模式下的任一个中按计算机指示将数据写到存储器中而无需等待生成纠错码。
在执行在本文中公开的技术中且根据其第七种方式,提供了一种存储控制方法。该存储控制方法具有以下步骤:如果向存储器发出第一种模式的写指令,则通过利用与第一种模式的写指令相关联的写的第一纠错码以比所述存储器存取单元小的第一大小对该数据进行划界而获得的数据进行配对并将指示第一种模式的模式信息附加到每一对来生成写数据作为第一写单位;该存储控制方法还包括以下步骤:如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并将指示第二种模式的模式信息附加到每一个划界得到的对来生成写数据作为第二写单位,所述成对数据是通过以比存储器访问单位大的第二大小和针对与第二种模式的写指令相关联的写数据的第二纠错码来对该数据进行划界而获得的。该存储控制方法还具有以下步骤:如果向同一存储器发出第一种模式的写指令,则向存储器写第一写单位作为访问单位,如果是向存储器发出第二种模式的写指令,则向存储器写第二写单位作为访问单位。这种新颖的设置允许在第一种模式和第二种模式下的任一个中将数据写到存储器中而无需等待纠错码生成。本技术具有灵活设置将纠错码附加到存储器中一组数据序列中的规则的有益的效果。
附图说明
图1是示出了按照在本文中所公开的技术的第一实施例实现的信息处理***的示例性配置的框图;
图2是示出了在图1中所示的第一实施例中的随机存取存储器的存储器映射的示例性概要的示图;
图3是示出了在图1中所示的存储器的示例性配置的框图;
图4A、4B和4C是示出了在图1中所示的存储器的示例性页结构的示图;
图5是示出了在图2中所示的空页表的示例性配置的示图;
图6是示出了在图2中所示的地址转换表的示例性配置的示图;
图7是示出了按照在本文中所公开的技术的第一实施例实现的ECC类型表的示例性配置的示图;
图8是示出了按照在本文中所公开的技术的第一实施例实现的存储控制装置的示例性功能配置的框图;
图9是示出了在图1中所示的第一实施例中的写数据和逻辑页之间的关系的示图;
图10是示出了在图1中所示的第一实施例中写数据和逻辑页之间关系的另一示图;
图11是表示在图1中所示的信息处理***的示例性读操作的流程图;
图12是表示在图1中所示的信息处理***的示例性写操作的流程图;
图13是表示在图1中所示的信息处理***的逻辑页部分重写处理的示例性操作的流程图;
图14是示出了按照在本文中所公开的技术的第二实施例实现的存储控制装置的示例性功能配置的框图;
图15是示出了按照在本文中所公开的技术的第三实施例实现的信息处理***的示例性配置的框图;
图16是示出了在图15中所示的存储器控制部的示例性功能配置的框图;
图17是示出了在图15中所示的第三实施例中第一写单位的示例性格式配置的示图;
图18是示出了在图15中所示的第三实施例中第二写单位的示例性格式配置的示图;
图19是示出了在图15中所示的第三实施例中模式信息的示例性格式配置的示图;
图20是表示在图15中所示的第三实施例中在32字节模式下的示例性读处理过程的流程图;
图21是表示在图15中所示的第三实施例中在512字节模式下的示例性读处理过程的流程图;
图22是表示在图15中所示的第三实施例中在32字节模式下的示例性写处理过程的流程图;
图23是表示在图15中所示的第三实施例中在512字节模式下的示例性写处理过程的流程图。
具体实施方式
将参照附图通过本公开的实施例来进一步详细说明本公开。说明将按以下顺序完成:
1.第一实施例(为每一个逻辑页地址设置ECC类型的例子)
2.第二实施例(为每一个物理地址设置ECC类型的例子)
3.变形例
4.第三实施例
5.变形例
1.第一实施例
【信息处理***的配置】
现在,参照图1,示出了按照在本文中所公开的技术的第一实施例实现的信息处理***的示例性配置。该信息处理***具有主机计算机100、存储控制装置200和存储器300。主机计算机100在该信息处理***中执行处理操作。存储器300存储主机计算机100执行处理操作所必需的数据。假定该存储器300为非易失性存储器。存储器300使得纠错码(ECC)与数据一起存储,以提高数据的保持特性。存储控制装置200连接在主机计算机100和存储器300之间,以根据主机计算机100的请求来控制存储器300。应指出的是,纠错码也有错误检测功能,故纠错码有时也称为错误检测码。
存储控制装置200具有主机接口201、存储器接口230、控制块240、只读存储器(ROM)250、随机存取存储器(RAM)260和ECC处理块270。这些组件块通过总线280互连。
主机接口201是用于提供与主机计算机100的接口的接口电路。存储器接口230是用于提供与存储器300的接口的接口电路。
控制块240是用于执行存储控制装置200中的各种处理操作的处理装置。ROM 250是只读存储器,用于存储要由控制块240执行的程序以及此执行所需的参数。RAM 260是用于提供控制块240执行处理操作所必需的工作区的存储器。
ECC处理块270执行与存储在存储器300中的纠错码相关联的处理。ECC处理块270包括生成纠错码的功能以及通过使用从存储器300中读出的数据和纠错码来执行纠错的功能,这将在下文中描述。
存储器300的存取空间被划分成固定长度的物理页以进行管理。存储器300的每一物理页被映射到逻辑页。存储器300基本上由主机计算机100通过逻辑地址访问。在下面的说明中,每个逻辑页的数据大小被假定为256个字节并且在每一物理页中存储256字节的数据和16字节的纠错码。然而,应指出的是,这些大小仅是说明性的,因此,在本文中所公开的技术不限于此。
参照图2,示出了按照在本文中所公开的技术的第一实施例实施的RAM 260的存储器映射的示例性概要。在本例子中,RAM 260存储空页表261、地址转换表262、数据缓冲器263、ECC类型表264、逻辑页图像区266和物理页图像区267。应指出的是,控制块240要执行的程序和供此执行使用的区也存储在RAM 260中。
空页表261管理存储器300中的物理页的使用状态。空页表261保持与物理页地址相对应的物理页的使用状态,这将在后面详述。
地址转换表262将从主机计算机100提供的逻辑地址转换成存储器300中的物理地址。地址转换表262保持与逻辑页对应的物理页地址,这将在后面详述。应注意的是,地址转换表262是在本文权利要求的范围内引用的地址转换块的一个例子。
数据缓冲器263保持从主机计算机100发送到存储器300的写数据。在第一实施例中,假定数据缓冲器263保持的数据的大小等于构成从主机发出的写指令的写数据的最大大小。
ECC类型表264以页来管理纠错码的类型。ECC类型表264保存有与逻辑页地址相对应的页的纠错码类型(ECC类型),这将在后面详述。纠错码类型将在后面描述。应指出的是,ECC类型表264是在本文权利要求的范围内引用的纠错码附加规则保持块的一个例子。
逻辑页图像区266是用于保持由主机计算机100把握的逻辑页的图像的区域。物理页图像区267是用于保持存储器300侧的物理页的图像的区域。在第一实施例中,逻辑页图像区266是256个字节的区域,256个字节等于每一个逻辑页的大小,并且物理页图像区267是272个字节的区域,272个字节等于每一个物理页的大小。
在存储控制装置200的电源断开时,在存储器300中的预定位置存储三种类型的表:空页表261、地址转换表262和ECC类型表264。在接通电源时要执行的初始化处理中,存储控制装置200从存储器300的预定位置读出这三种类型的表,并将这些表暂时存储在RAM260中。当电源断开提前预警从主机计算机100传来时,存储控制装置200将这三种类型的表写到存储器300的预定位置。为了尽量减少电源意外断开造成的影响,存储控制装置200以一定的时间间隔或每完成一定数目的处理操作时写入这三种类型的表。
参照图3,示出了图1中所示的第一实施例的存储器300的示例性配置。存储器300具有控制接口310、地址解码器320、存储单元330、页缓冲器340和控制块380。这些组件块通过总线390互联。
控制接口310是用于提供与存储控制装置200的接口的接口电路。控制接口310输入从存储控制装置200传来的信息和数据,输出要传送到存储控制装置200的信息和数据。
存储单元330是存储装置,在本文中它被假定为是非易失性存储器。存储单元330具有一定结构,其中单一存储单元(每个单一存储单元记录1位数据)被二维地排布。例如,存储单元330通过沿着物理页地址垂直排布单一存储单元以形成272个字节的水平排布的物理页来配置。
地址解码器320解码从控制接口310输入的物理页地址,以驱动与该地址的一个物理页相对应的一条字线。在地址解码器320和存储单元330之间布线与所有物理页相对应的字线。与存储单元330中驱动的字线相对应的物理页变成活动的。
页缓冲器340具有与存储单元330中每一个物理页的大小相同的大小。页缓冲器340传输物理页在存储单元330中活动的数据。
控制块380控制存储器300的全部。如果由存储控制装置200发出的指令是写操作,则控制块380将传递到控制接口310的物理地址提供给地址解码器320,以激活在存储单元330上指定的物理页。另外,控制块380将传递到控制接口310的写数据提供给页缓冲器340,以指示存储单元330写操作。结果,数据被写到活动的物理页。
如果由存储控制装置200发出的指令是读操作,则控制块380将传递到控制接口310的物理地址输入到地址解码器320中,以激活在存储单元330上指定的物理页。另外,控制块380指示存储单元330读操作。结果,活动的物理页被读出,并被提供给页缓冲器340。控制块380将被读到页缓冲器340中的数据提供给控制接口310,以通过控制接口310将该数据传送到存储控制装置200中。
应指出的是,在下述说明中,由主机计算机100指定的每一个逻辑地址和在存储控制装置200中处理的每一个逻辑页地址由以“0x”开始的十六进制记数法表示,并且每个物理页地址用十进制记数法表示。
【页结构】
参照图4A至4C,示出了在本文中所公开的技术的第一实施例中的存储器300的页结构的一个例子。如图4A所示,在第一实施例中,存储在存储单元330中的每个物理页的大小为272个字节。当将256字节数据和16字节的纠错码(或奇偶校验位)存储到该物理页时,假定以下两种类型为纠错码附加规则。
在类型A中,如图4B所示,将272字节的物理页分成34字节的子页,每个子页被用来作为32字节的数据和2个字节的奇偶校验位。另一方面,在类型B中,272字节的物理页被用作如图4C所示的256字节的数据和16字节的奇偶校验位。这两种类型中的哪一类被用作纠错码附加规则是由ECC类型表264控制的。应指出的是,一页256字节的数据是在本文权利要求范围内引用的一组数据序列的例子。此外,通过分割一页而得到的子页中的每个子页的32字节的数据是在本文权利要求范围内引用的部分数据序列的例子。
类型A结构具有8个独立的子页,因此,根据ECC处理块270的性能,八个子页能够同时被处理,以提高纠错码生成处理和纠错处理的速度。另外,类型B具有相对长的字长,因此,与类型A相比,类型B需要较长的计算时间,但通过使用计算量较大的低密度奇偶校验(LDPC)编码能够提高数据保持的可靠性。
在图4B中,假定32字节的数据和2字节的奇偶校验位被作为类型A的页结构的一个例子而并排记录。然而,存储单元特性允许这些数据可以由期望的格式分割。例如,2字节的奇偶校验位可以一起被记录在远区域中。
ECC类型规范是由例如写指令执行的。在这种情况下,本规范可以由写指令中的特定字段完成,或者根据需要由另一指令完成。此外,用于设置ECC类型的独立指令可以分开布置。例如,ECC类型设置指令可以紧在写重要文件之前执行,然后可以执行正常的写指令,从而通过ECC类型设置指令所设置的ECC类型执行写操作。
【表配置】
参照图5,示出了在本文中所公开的技术的第一实施例中的空页表261的示例性配置。空页表261保持分别对应于物理页地址的物理页的使用状态。空页表261的每一项(行)是由两个元素构成的:物理页地址和使用状态。
在空页表261中,在每个条目的物理页地址栏中指示的物理页的状态被示在使用状态栏中。此处,使用状态表示三种状态中的任何一种:“未使用”,即没有使用存储单元330中的物理页;“使用中”,即物理页在被使用;“不能使用”,即由于错误等原因当前未使用物理页并且不建议在未来使用物理页。
在空页表261中,条目被按照物理页地址值的升序顺序设置。在空页表261中注册的条目的数目等于设置在存储器300的存储单元330中布置的物理页的数目。
应指出的是,在空页表261中的物理页地址的值从零开始以1递增,因此能够容易地从条目编号来计算。因此,从条目栏删除物理页地址栏使条目配置元素仅由使用状态栏构成也是可行的。
参照图6,示出了在本文中所公开的技术的第一实施例中的地址转换表262的示例性配置。地址转换表262保持分别对应于逻辑页地址的物理页地址。更具体地,地址转换表262示出了供主机计算机100使用的逻辑地址和供存储控制装置200和存储器300使用的物理地址之间的相关性。
在第一实施例的存储控制装置200中,从主机计算机100指定的逻辑地址是基于逻辑页地址管理的。此处,逻辑页基于一一对应的方式与物理页相关,其中一个物理页被分配给一个逻辑页。每一个逻辑页的大小为256个字节,此大小等于每一个物理页中总的数据片段的256个字节。逻辑页地址是通过将从主机100指定的逻辑地址除以逻辑页大小而获得的,此除法的余数作为逻辑页中的偏移地址。
地址转换表262中的每个条目由如下三个元素构成的:逻辑页地址、分配状态和物理页地址。在每个条目的逻辑页地址栏中指示的逻辑页表示其中物理页被分配的“已分配”和其中物理页未被分配的“未分配”。对于分配状态栏为“已分配”的逻辑页,在物理页地址栏中表示对应的物理页的地址。
在图6所示的例子中,在逻辑页地址栏为“0x0000-0002”的条目中,分配状态栏为“未分配”,因此,在物理页地址中显示的值是无关紧要的。因此,物理页地址栏中用于该条目的值的显示为“-”。
在地址转换表262中,条目按照逻辑页地址的值的升序来布置。登记在地址转换表262中条目的数目等于存储控制装置200将对主机计算机100公开的逻辑地址空间的大小(以字节为单位)除以每一个逻辑页的大小(即256个字节)而获得的值。
登记在地址转换表262中的条目的数目小于在存储器300的存储单元330中布置的物理页的数目。这是因为,如上面在空页表261的说明中说明的那样,相对逻辑页的数目而言,物理页的数目具有足够大的裕量,以防止使物理页由于错误等而不可用。
应指出的是,在地址转换表262中的逻辑页地址的值从零开始以1递增,因此能够容易地从条目编号来计算。因此,删除逻辑页地址栏使条目配置元素由分配状态栏和物理页地址栏构成也是切实可行的。
参照图7,示出了在本文所公开的技术的第一实施例中的ECC类型表264的示例性配置。ECC类型表264保持用于与逻辑页地址相对应的页的纠错码的类型(ECC类型)。
ECC类型表264的每一个条目由两个元素构成:逻辑页地址和ECC类型。ECC类型指示在与每一个条目中的逻辑页地址栏对应的逻辑页中的纠错码附加规则属于类型A还是类型B。
在ECC类型表264中,条目按照逻辑页地址的值的升序来布置。ECC类型表264中的登记条目的数目等于由存储控制装置200将对主机计算机100公开的逻辑地址的大小(以字节为单位)除以每一个逻辑页大小(即256个字节)而获得的值。
应指出的是,在ECC类型表264中的逻辑页地址的值从零开始以1递增,因此能够容易地从条目(或行)来计算。因此,从条目中删除逻辑页地址栏使条目配置元素仅由ECC类型构成也是切实可行的。
类似于地址转换表262,登记在ECC类型表264中的条目的数目小于在存储器300中的存储单元330中布置的物理页的数目。
【存储控制装置的功能】
参照图8,示出了在本文中所公开的技术的第一实施例中的存储控制装置200的示例性功能的配置。在本例子中,示出了上述地址转换表262和ECC类型表264。此外,示出了用于ECC处理块270的部件的ECC生成部271和纠错部272。
ECC生成部271根据在写操作时指定的ECC类型生成纠错码。如果要附加纠错码的数据都包含在写数据中,则ECC生成部271通过使用在写指令(或写请求)的写数据生成纠错码。另一方面,如果有必要生成跟随写数据之外的数据的纠错码,则ECC生成部271t还使用从存储器300读出的数据生成纠错码。由ECC生成部271所生成的纠错码与数据一起被存储在存储器300中。在存储生成的纠错码时所用的写地址是从地址转换表262提供的物理地址。同时,在写操作时指定的ECC类型被保持在ECC类型表264中与作为写指令的写地址的逻辑地址相对应的条目中。应指出的是,ECC生成部271是在本文的权利要求范围内所引用的纠错码生成部的一个例子。
纠错部272通过使用从存储器300读出的数据和纠错码执行纠错。在执行纠错时使用的纠错码附加规则从ECC类型表264提供。ECC类型表264基于作为读指令的读地址的逻辑地址输出ECC类型。应指出的是,在存储器300中使用的读地址是从地址转换表262提供的物理地址。根据从ECC类型表264输出的ECC类型,纠错部272执行错误检测,并且若必要则纠错并且输出所得的数据。所输出的数据作为读数据被返回到主机计算机100,或作为构成物理页的数据与写数据一起提供给ECC生成部271。应指出的是,纠错部272是在本文的权利要求范围内引用的纠错部的一个例子。
【写数据和逻辑页之间的关系】
参照图9,示出了在本文中所公开的技术的第一实施例的写数据和逻辑页之间的关系。在本例子中,写指令的起始逻辑地址是“0x0000-0000-00F0”且写大小是512个字节。更具体地,此写指令将数据写到从“0x0000-0000”至“0x0000-0002”的三个逻辑页上。
写指令的处理以逻辑页为单位执行,使得逻辑页必须分解(或分割)成三个逻辑页,如图9所示。在逻辑页“0x0000-0000”中,在写起始位置的页内偏移地址是“0×F0”,页内写大小是16个字节。在逻辑页“0x0000-0001”中,在写起始位置的页内偏移地址为“0x00”,页内写大小是256个字节。在逻辑页“0x000-0002”中,在写起始位置的页内偏移地址为开始的“0x00”,页内写大小是240个字节。
如果对于逻辑页“0x0000-0000”的页内偏移地址不是本例的“0x00”,则该逻辑页的开始处没有重写发生。如果如逻辑页“0×0000-0002”那样页内偏移地址是“0x00”并且页内写大小是小于256个字节,则在该逻辑页的结束处不发生写。
参照图10,示出了用于说明在本文中所公开的技术的第一实施例中的写数据和逻辑页之间关系的另一示意图。在本例子中,写指令的起始逻辑地址是“0x0000-0001-0002”,写大小是128个字节。更具体地,此写指令是小于逻辑页的大小,不超出两个以上的逻辑页,并且只将数据写到逻辑页“0x0000-0001”的一部分。
在这种情况下,在逻辑页“0x0000-0001”中,在写起始位置的页内偏移地址是“0x20”,并且页内写大小是128个字节。如果对于本例中的逻辑页“0x0000-0001”,页内偏移地址不是0且页内写大小小于256个字节,则写发生在逻辑页中的途中。
【信息处理***的操作】
参照图11,示出了表示在本文中公开的技术的第一实施例中的信息处理***的示例性读操作的流程图。首先,由主机计算机100发出的读指令(或读请求)通过主机接口201被输入到存储控制装置200中。读指令由读地址和读数据大小构成。读地址是要读的数据的逻辑地址。
控制块240将构成读指令的读地址和读数据大小分成多个逻辑页单位(步骤S911)。更具体地,这与如上参照图9和图10说明的写操作中以逻辑页为单位的分割实质上相同。因此,可通过为每一个逻辑页计算而得到页内偏移地址和页内读大小。
然后,确定在步骤S911中分割的逻辑页单位内是否存在未进行读处理处理的任何逻辑页单位(步骤S912)。如果不存在未进行读处理处理的逻辑页单位(步骤S912:“否”),则通知主机计算机100读读指令处理结束,从而读操作结束(步骤S922)。
另一方面,如果发现任何逻辑页单位没有进行读处理处理(步骤S912:“是”),则未进行读处理处理的逻辑页单位之一被选择(步骤S913)。此处,假设此选择按照逻辑页地址的升序执行。然后,从地址转换表262和ECC类型表264获得(步骤S914)有关与所选择的逻辑页单位的读处理相对应的逻辑页的信息。
接着,检查物理页是否为要处理的逻辑页分配了物理页(步骤S915)。更具体地,如果分配状态为“未分配”,则过程进行到步骤S919,如果分配状态是“已分配”,则过程进行到步骤S916。
如果分配状态为“未分配”(步骤S915:“否”),则表示与要读的逻辑页相对应的物理页未被分配,因此,准备要发送到主机计算机100的数据(步骤S919)。更具体地,逻辑页图像区266被清零。通过使用诸如“0x00”或“0xFF”的周期性数据或清零之外的预定特定数据进行初始化也是可行的。在本例子中,初始化在每次通过步骤S919时完成,但在RAM区260中布置用于接通电源时进行初始化的特别区域也是切实可行的,例如,以便在用于读未被分配物理页的逻辑页的读指令来到时,将该特别区域中的数据传输到主机计算机100。
将存储器300中分配的用于读的物理页读到未被分配物理页的逻辑页并将此分配的物理页传送到主机计算机100中也是可行的。通过预先写入分配的物理页,因存储器不同而不同的数据能够被传送到主机计算机100。
如果分配状态是“已分配”(步骤S915:“是”),则读对应于该逻辑页的数据(步骤S916)。此时的物理页地址是从在步骤S914中的地址转换表262中读出的物理页地址。此时,存储控制装置200发出读指令,并将物理页地址发送到存储器300。存储器300读与指定的物理页地址相对应的物理页的内容,并将该物理页的内容传送到存储控制装置200。存储控制装置200将从存储器300接收到的物理页的数据存储到物理页图像区267。
接着,ECC处理块270的纠错部272执行纠错(步骤S917)。通过如此做,纠错部272被给予在步骤S914中从ECC类型表264得到ECC类型、物理页图像区267的起始地址和纠错指令。如果ECC类型是类型A,则纠错部272从物理页图像区267的起始地址读出34个字节并解释有2个字节的奇偶校验位被附加到32个字节的用户数据上,从而执行纠错。然后,纠错部272将纠错处理结果写回到物理页图像区267中相同的位置处。该处理被执行8次以完成纠错处理。另一方面,如果类型B被指定用于ECC类型,则纠错部272从物理页图像区267的起始地址读272个字节并解释有16个字节的奇偶校验位被附加到256个字节的用户数据上,从而执行纠错处理。然后,纠错部272将纠错处理结果写回到物理页图像区267中的相同位置处。
然后,控制块240从物理页图像区267提取数据,并且将所提取的数据传递到逻辑页图像区266(步骤S918)中。更具体地,如果类型A被指定用于ECC类型,则从物理页图像区267的开始处读出32个字节,并将这32个字节转移到逻辑页图像区266,从而跳过了两个字节的读处理。该处理被重复八次,以终止用户数据的提取。另一方面,如果类型B被指定用于ECC类型,则从物理页图像区267的开始处读出256个字节,并将这256个字节转移到逻辑页图像区266。
在逻辑页图像区266按上述方法准备(步骤S918或S919)了时,逻辑页图像区266的数据被传输到主机计算机100(步骤S921)。即,数据从逻辑页图像区266的页内偏移地址的位置开始被传输了页内读大小的量。页内偏移地址和页内读大小是在步骤S911中计算的大小。然后,上述从步骤S912起的处理被重复。
应指出的是,在第一实施例中,在数据提取处理中执行数据复制(步骤S918)和传输到主机计算机100的处理(步骤S921);从物理页图像区267立即传输数据也是切实可行的。
参照图12,示出了表示在本文中所公开的技术的第一实施例中的信息处理***的示例性操作流程图。首先,由主机计算机100发出的写指令(或写请求)通过主机接口201被输入到存储控制装置200中。写指令由写地址、ECC类型、写数据大小和写数据构成。写数据被暂时存储在RAM 260的数据缓冲器263中。写地址是要写的数据的逻辑地址。
控制块240如上所述将写地址和构成写指令的写数据大小分割成逻辑页单位(步骤S931)。因此,为每一个逻辑页得到页内偏移地址和页内写大小。此外,控制块240计算具有从主机计算机100提供并暂时存储在数据缓冲器263中被分解用于每个逻辑页的写数据的区域的所有起始地址。逻辑页单位的分割如上参照图9和图10所述。步骤S932及其后的处理在步骤S931中分割的逻辑页单位上重复执行。
然后,判断在步骤S931中分割的逻辑页单位中是否存在未进行写处理处理的逻辑页单位(步骤S932)。如果不存在未进行写处理处理的逻辑页单位(步骤S932:“否”),则通知主机计算机100写指令处理结束,从而写操作结束(步骤S955)。
另一方面,如果发现任何未进行写处理处理的逻辑页单位(步骤S932:是),则未进行写处理处理的逻辑页单位之一被选择(步骤S933)。此处,假设此选择按照逻辑页地址的升序执行。然后,从地址转换表262和ECC类型表264获得有关与所选择的逻辑页单位的写处理相对应的逻辑页的信息(步骤S934)。
接着,检查要处理的逻辑页否被分配了物理页(步骤S935)。更具体地,如果分配状态为“未分配”,则过程进行到步骤S938,如果分配状态是“已分配”,则过程进行到步骤S936。
如果分配状态为“未分配”,则基于空页表261分配可用的物理页(步骤S936)。更具体地,搜索使用状态为“未使用”的条目,并且如果发现了这样的条目,则在使用状态中替换为“使用中”的值。应指出的是,如果在空页表261中没有发现可用的物理页,则将其通知主机计算机100,其描述在此省略。
当分配了物理页时,在地址转换表262中的相应条目中,分配状态变为“已分配”,并同时,所分配的物理页地址被设置为物理页地址(步骤S937)。另外,正在处理的逻辑页已被新分配的信息被记录到作为内部变量的新的页标志。
接下来,判断对正被处理的逻辑页的写操作是否是全部重写该逻辑页(步骤S938)。更具体地,如果在对正被处理的逻辑页的处理中,分割的逻辑页单位的写数据大小的值等于“256”,则判定该逻辑页被全部重写(步骤S938:“是”)。另一方面,如果分割的逻辑页单位的写数据大小的值不等于“256”,则判定该逻辑页被部分重写(步骤S938:“否”)。
如果对正被处理的逻辑页的写操作是重写整个逻辑页(步骤S938:是),则数据缓冲器263的数据被转移到逻辑页图像区266(步骤S939)中。更具体地,用于逻辑页数量的256个字节被从具有暂时存储在数据缓冲器263中被分解用于每一个逻辑页的写数据的区域的起始地址传输给逻辑页图像区266。应指出的是,每一个区域的起始地址是在步骤S931中计算的。
如果对正被处理的逻辑页的写操作不是重写整个逻辑页(步骤S938:“否”),则逻辑页被部分重写(步骤S940)。下面参照图13描述逻辑页的部分重写。
参照图13,示出了指示在本文中所公开的技术的第一实施例中信息处理***的逻辑页部分重写处理的示例性操作的流程图。首先,检查新的页标志(步骤S941)。更具体地,如果在步骤S937中新分配的执行被记录到新的页标志(步骤S941:是)中,则逻辑页图像区266被清空(步骤S942)。
另一方面,如果新分配的执行没被记录到新的页标志(步骤S941:“否”)中,则读出对应于要写的逻辑页的数据(步骤S943:“否”)。对于此时的物理页地址,能够使用在步骤S934中从地址转换表262读出的信息。在这里读的物理页的内容被反映到物理页图像区267中,并且在物理页图像区267中由纠错部272执行纠错。接着,数据部分被从要传送到逻辑页图像区266的物理页图像区267中提取。
接着,在逻辑页图像区266中执行部分写操作(步骤S944)。更具体地,用于页内写大小的重写操作被从逻辑页图像区266中的页内偏移地址的位置起执行。页内偏移地址和页内写大小是在步骤S931中计算的那些。
再次参照图12,物理页图像区267是基于由到目前为止所描述的处理所准备的逻辑页图像区266形成的(步骤S951)。更具体地,如果ECC类型被指定为类型A,则从逻辑页图像区266的开始处读出32个字节并将这32个字节转移到物理页图像区267中,从而跳过两个字节的奇偶校验位的写位置。该处理被重复8次,以终止页结构的形成。另一方面,如果ECC类型被指定为类型B,则从逻辑页图像区266的开始处读出256个字节并将这256个字节转移到物理页图像区267。
接着,ECC处理块270的ECC生成部271执行纠错码生成处理(步骤S952)。通过如此做,从主机计算机100向ECC生成部271给出作为写指令的参数所获得的ECC类型、物理页图像区267的起始地址以及用于生成纠错码(奇偶校验位)的指令。如果ECC类型被指定为类型A,则ECC生成部271从物理页图像区267的开始处读出32个字节,计算2个字节的奇偶校验位并将计算的2个字节的奇偶校验位写回到物理页图像区267中,从而完成34个字节的子页。该处理被重复8次,以完成物理页图像区267。另一方面,如果ECC类型被指定为类型B,则从物理页图像区267的开始处读出256个字节,计算16个字节的奇偶校验位并将计算的16个字节的奇偶校验位写回到物理页图像区267中,从而完成物理页图像区267。
如上所述完成的物理页图像区267的内容被写到存储器300中(步骤S953)。通过如此做,控制块240通过存储器接口230将写指令和物理页地址输出到存储器300。此处,物理页地址是在步骤S943读取的物理页地址或在步骤S936中新分配的物理页。存储器300将所接收的写数据写到由物理页地址指定的物理页中。
然后,控制模块240将从主机计算机100接收的作为写指令的参数的ECC类型写入与ECC类型表264的写地址对应的条目,以更新ECC类型表264(步骤S954)。
应指出的是,可以以任何顺序执行分别在步骤S953和步骤S954中向存储器300的写入以及ECC类型表264的更新;这些处理操作可以在另一处理执行之前或之后进行或同时进行。当这些处理操作完成时,过程返回到步骤S932以从此起重复上述处理。
如上所述,根据在本文中所公开的技术的第一实施例,能够按照期望为ECC类型表264中的每一个逻辑页定义ECC类型。ECC类型的设置能够通过使用由主机计算机100发出的写指令指定,使得写数据的可靠性能够按期望的那样定义。更具体地,从主机计算机100的观点出发的判定可被应用到数据的存储中,而与存储器芯片的预定固定图样或条件无关。
<2.第二实施例>
【存储控制装置的功能】
参照图14,示出了将在本文中所公开的技术的第二实施例中存储控制装置200的示例性功能配置。第二实施例与第一实施例的不同之处在于提供给ECC类型表264的地址是物理地址;在其他各方面中,第二实施例在功能配置上与第一实施例基本上是相同的。
更具体地,在第一实施例中,对每一个逻辑页地址,ECC类型被保持在如图7所示的ECC类型表264中;在第二实施例中,对每一个物理页地址保持ECC类型。因此,要提供给ECC类型表264的地址是物理页地址。结果,在第二实施例中,能够按照期望为ECC类型表264中的每一个物理页定义ECC类型。
<3.变形例>
【在部分重写中跳过纠错码重新计算】
在对ECC类型指定为类型A的页部分重写的情况下,对于不会受到重写影响的子页,不需从开始重新计算纠错码。因此,在本变形例中,不在步骤S952中对在上述重写中不受重写影响的子页执行纠错码重新计算。在这种情况下,在步骤S943中读出的、经纠错并存储在物理页图像区267中的数据能够在不变的情况下使用。应指出的是,此数据能够在如下条件下使用:这种重写是对现有逻辑页的部分重写而不是新的分配,并且ECC类型没有变化。
更具体地,在本变形例中,如果在步骤S943中读出的逻辑页的ECC类型为类型A,则其信息被留下作为现有页可部分重写标志。然后,如果写指令的ECC类型为类型A且现有页可部分重写标志在步骤S952的纠错码生成中是有效的,则对每一个子页上进行以下处理。即,在执行纠错码之前,判断子页是否已被重写。对于不包括在页内重写范围中的子页,跳过纠错码生成处理以及将这些子页向物理页图像区267的输出。对于包含在页重写范围内的子页,执行纠错码生成处理,并且这些子页被输出到物理页图像区267。
因此,在物理页图像区267中仅针对那些与部分重写范围相关的子页准备了具有重新计算和重写的纠错码的数据。
【跳过部分读处理中的纠错】
如果正被处理的每个逻辑页的ECC类型是类型A,仅仅要读的子页需要纠错,从而跳过对其他子页的纠错。更具体地,如果在步骤S917中在执行纠错处理中指定ECC类型为类型A,则对每一个子页执行以下处理。即,在对每一个子页执行纠错处理之前,判断是否请求各子页的传送。如果所关注的子页没有包括在页内读范围内,则跳过对该子页的纠错处理。另一方面,如果每一个子页包括在页内读范围内,则对这些子页执行纠错处理。
因此,在物理页图像区267准备了仅包含在部分读范围内的子页被执行纠错处理的数据。
【在子页单位中的传送】
如果正被处理的每一个逻辑页的ECC类型是类型A,则经纠错的子页可以被顺序地传送到主机计算机100。更具体地,在上述实施例中,纠错处理(步骤S917)、数据提取(步骤S918)和向主机计算机100的传送(步骤S921)是基于逻辑页顺序执行的;基于子页执行这些处理操作也是切实可行的。这增强了这些处理操作的速度。
另外,将子页单位中的传送和上述在部分读操作中纠错处理的跳过相结合使得只有当到主机计算机100的传送是基于子页发生时才允许纠错处理、数据提取以及到主机计算机100的传送。
在上面提到的实施例中描述的处理过程的顺序可以理解为具有这些过程序列的方法、或用于使计算机执行此过程序列的程序、或存储这样的计算机程序的记录介质。对于记录介质,CD(致密盘)、MD(迷你盘)、DVD(数字通用盘)、存储卡、蓝光盘(注册的商标)等可被使用。
<4.第三实施例>
【信息处理***的配置】
参照图15,示出了在本文中所公开的技术的第三实施例中信息处理***的示例性配置。该信息处理***具有主机计算机100、非易失性存储器301和存储器控制部203。存储器控制部203和非易失性存储器301构成了存储器***400。主机计算机100向存储***400发出用于读取或写入数据的请求。
在第三实施例中,非易失性存储器301假定34个字节被用于读取访问单位及写入访问单位。访问单元包含例如数据和纠错码。非易失性存储器301还假定512个字节为执行页访问中的数据页大小。当请求非易失性存储器301读出写数据时,主机计算机100指定纠错码的模式。如果模式指定是第一种模式(32个字节的模式),则页中的每32个数据字节被附加一纠错码。该纠错码被称为第一ECC。另一方面,如果模式指定为第二种模式(512个字节的模式),则页中的所有512个字节的数据被附加一纠错码。该纠错码被称为第二ECC。
非易失性存储器301在其电源断开时保持数据。非易失性存储器301被大致分为与以大的大小进行数据访问兼容的闪存存储器和允许以小的数据单位进行高速随机访问的非易失性随机存取存储器(NVRAM)。典型的闪存存储器是NAND型闪存存储器。另一方面,典型的NVRAM例如是PCRAM、MRAM或ReRAM。
非易失性存储器301具有单元阵列302、存储器缓冲器341和控制接口311。单元阵列302具有存储单元,用于存储位的数据值,存储单元被配置成矩阵状。每个存储单元是非易失性的,即在电源断开时保持数据。存储器缓冲器341保持要写到单元阵列302中的数据或从单元阵列302中读出的数据。控制接口311提供与存储器控制部203的接口。
存储器控制部203控制非易失性存储器301。存储器控制部203具有第一ECC处理块210、第二ECC处理块220、页缓冲区440、控制寄存器450、控制块290、主机接口201和存储器接口202。
第一ECC处理模块210生成第一ECC或基于生成的第一ECC执行纠错。第二ECC处理模块220生成第二ECC或基于生成的第二ECC执行纠错。
页缓冲器440在页中保持512个字节的数据。更具体地,页缓冲器440基于页保持由主机计算机100指定的写数据或从非易失性存储器301读出的数据。
控制寄存器450保持由主机计算机100发出的控制指令或从非易失性存储器301提供的状态。
控制块290在整体上控制存储器控制部203。主机接口201提供与主机计算机100的接口。存储器接口202提供与非易失性存储器301的接口。
【存储器控制部的功能配置】
参照图16,示出了在本文中所公开的技术的第三实施例中的存储器控制部203的示例性功能结构。存储器控制部203具有第一ECC生成部211、第一ECC校正部212、第二ECC生成部221、第二ECC校正部222、第一写单位生成部291、第二写单位生成部292、写处理部293和读处理部294。第一ECC生成部211和第一ECC校正部212具有第一ECC处理块210的功能。第二ECC生成部221和第二ECC校正部222是有第二ECC处理块220的功能。第一写单位生成部291、第二写单位生成部292、写处理部293和读出处理部294具有访问控制块290的功能。
第一ECC生成部211从页缓冲器440供给的32个字节的数据生成第一ECC。第二ECC生成部221从页缓冲器440供给的512个字节的数据生成第二ECC。
第一写单位生成部291对通过用写数据的第一纠错码每32个字节地分割写数据所获得的数据进行配对,并且将指示32个字节的模式的模式信息附加到配对中,从而生成所得到的数据作为第一写单位。
第二写单位生成部292将通过用写数据的第二纠错码每512个字节分割写数据而获得的成对数据分割成预定大小,并附加指示512个字节的模式的模式信息,从而生成所得到的数据作为第二写单位。
写处理部293将第一写单位或第二写单位写到非易失性存储器301中。更具体地,如果发出32字节模式的写指令,写处理部293就以第一写单位作为访问单位将数据写到非易失性存储器301中。如果发出512字节模式的写指令,写处理部293就以第二写单位作为访问单位将数据写到非易失性存储器301中。
读处理部294针对每一个访问单元从非易失性存储器301中读取数据。读处理部294从访问单元中提取模式信息,以判断此访问单位是用32字节模式写入的还是以512字节模式写入的。
如果发现模式信息指示32字节模式,则第一ECC校正部212从包括在访问单位中的32个字节的数据和该32字节数据的第一纠错码执行纠错。如果发现模式信息指示512字节模式,则第二ECC校正部222从每512个字节分割的且包含在访问单位中的数据和此数据的第二纠错码来执行纠错。
【访问单位的格式配置】
参照图17,示出了在本文中所公开的技术的第三实施例中第一写单位的示例性格式结构。每个第一写单位从格式的开始处起具有3位的模式信息、32个字节的数据、4位的附加信息和9位的第一ECC。
模式信息指示访问单位是第一写单位还是第二写单位。在本例子中,访问单位是第一写单位。模式信息不是第一ECC的目标,但如后面将要描述的那样,通过提供冗余位强化了数据保持性。
数据在所有第一写单位中是32个字节长。因此,为了写512个字节的页数据,需要16个第一写单位。附加信息大约是32个字节的数据,并根据需要使用。
第一ECC是针对数据和附加信息生成的第一纠错码。因此,在每一个写单位中独立执行第一ECC的生成、错误检测以及基于生成的第一ECC的校正处理。
参照图18,示出了在本文中所公开的技术的第三实施例中第二写单位的示例性格式结构。第二写单位不具备相等的格式;即,总共16个第二写单位具有512个字节的数据、2个字节的附加信息和117位的第二ECC。在每一个第二写单位的开始处附加有3位的模式信息。
模式信息指示访问单位是第一写单位还是第二写单位。在本例子中,访问单位是第二写单位。模式信息不是第二ECC的目标,但如后面所述,通过提供冗余位强化了数据保持性。
第二ECC是针对数据和附加信息生成的第二纠错码。因此,在总共有16个第二写单位的状态下,执行第二ECC的生成、误差检测和校正处理。
【第一ECC和第二ECC之间的比较】
现在,以位错误率对第一ECC和第二ECC进行相互比较。如果假设在ECC应用之前的位错误率f是独立且等同分布的,则ECC应用后不能纠正的位错误UBE从下面的式(1)中得到,其中,n位之中的c个位是可纠正的。应当注意的是,n表示同时读出的位的数目。
首先,为了对32个字节的数据执行1位的检测和校正处理,需要9位的纠错码。在上面的式(1)中,如果32个字节的位错误率是10-6,则在1位校正后的位错误率约为10-9。为了对32个字节的数据执行2位检测和校正处理,需要18位的纠错码。在上面的式(1)中,如果32个字节的位错误率是10-6,则在2位校正后的位错误率约为10-13
另一方面,为了对512个字节的数据执行3位的检测和校正处理,需要39位的纠错码。在上面的式(1)中,如果512个字节的位错误率是10-6,则在3位校正后的位错误率约为10-14。这等于假定对32个字节的数据进行2位的检测和校正处理时得到的位错误率。
为了对512个字节的数据执行8位检测和校正处理,需要104位的纠错码。在上面的式(1)中,如果512个字节的位错误率是10-6,则在8位校正处理后的位错误率约为10-20,这仍然降低了位错误率。在这种情况下,纠错码的大小比(size ratio)小于当对32个字节的数据执行1位检测和校正处理时获得的纠错码的大小比。
在本实施例中,1位的第一ECC被附加到总计约略小于34个字节的数据和附加信息上,并且117位的第二ECC被附加到总计约为514个字节的数据和附加信息上。因此,与通过第一ECC获得的位错误率相比,通过第二ECC获得的位错误率足够小,与第一ECC的大小比相比,第二ECC的大小比足够小。
参照图19,示出了在本文中所公开的技术的第三实施例中模式信息的示例性格式结构。如上所述,模式信息由三位构成,因此,在正常情况下这种格式的配置有相同的位数。即,“0”指示32个字节的模式,“1”指示512个字节的模式。然而,有可能是任何一个位都被错误地反转,故提供了另外两个位用于冗余。因此,模式基于在这3个位上执行的多数决定(majority decision)的结果来确定。因此,即使发生了1位错误,模式仍能够被正确地确定。即,可以理解的是,在构成模式信息的三个位中,任何一个位作为纠错码附加到其他两个位。
模式信息占据访问单位的开始3位并处在第一写单位和第二写单位的公共位置上。因此,只检查访问单位的开始3位就能够判断模式信息是指示32个字节的模式还是512个字节的模式。应指出的是,在本例子中,模式信息由访问单位的前三个位指示;但是,模式信息可以被布置在第一写单位和第二写单位的其它公共位置中的任何一个公共位置上。
【在32个字节的模式下的读处理过程】
参照图20,示出了表示在本文中所公开的技术的第三实施例中32个字节的示例性读处理过程的流程图。当读指令被发送给非易失性存储器301(步骤S911)时,由读处理部294从非易失性存储器301中读出位于访问单位的开始处的模式信息(步骤S912)。此时,如果模式信息不指示32个字节的模式(步骤S913:否),则此过程由于模式失配配而以错误结束。
如果模式信息是指示32个字节的模式(步骤S913:“是”),则读处理部294读出模式信息之后的数据、附加信息和第一ECC(步骤S914)。接着,数据和附加信息被输入到第一ECC处理模块210的第一ECC校正部212中(步骤S915)。因此,基于第一ECC的错误检测处理被执行。然后,数据被存储在页缓冲器440中(步骤S916)。此时,如果检测到错误(步骤S917:“是”),则对页缓冲器440中的故障位执行纠错处理(步骤S918)。然后,32个字节的数据从页缓冲器440被输出到主机计算机100中(步骤S919)。
【在512个字节的模式下的读处理步骤】
参照图21,示出了表示在本文中所公开的技术的第三实施例中512个字节的示例性读处理过程的流程图。此处,假设用于顺序地访问16个访问单位的控制变量是i,并且“1”替代作为此控制变量i的初始值(步骤S291)。
当读指令被发给非易失性存储器301(步骤S922)时,读处理部294从非易失性存储器301中读出访问单元(步骤S923)。此时,如果模式信息不指示512个字节的模式(步骤S924:否),则此过程由于模式失配而以错误结束。
如果模式信息指示512个字节的模式(步骤S924:“是”),则模式信息之外的信息被输入到第二ECC处理块220的第二ECC校正部222(步骤S925)。因此,顺序地执行基于第二ECC的错误检测处理。随后,数据被存储在页缓冲器440中(步骤S926)。
控制变量i以1递增。步骤S922以及随后步骤的处理被重复,直到控制变量i达到16为止(步骤S927:“否”)。因此,错误检测处理如上所述顺序地执行。然后,当控制变量i为16时(步骤S927:“是”),上述重复被终止(步骤S927:“是”),包括在第16访问单位中的数据和附加信息是第二ECC校正部222的最后输入(步骤S925)。因此,获得了基于第二ECC的错误检测的结果。此时,如果已检测到错误(步骤S929:“是”),则对页缓冲器440中的故障位上执行纠错处理(步骤S931)。接着,页缓冲器440中的512个字节的数据被输出到主机计算机100中(步骤S932)。
在第三实施例中,从非易失性存储器301读出的数据能够根据要求输入到第二ECC校正部222中以通过最后读出的第二ECC进行纠错,从而使得处理中途的数据不需要暂时进行保持。如果例如数据和第二ECC被分散在最后的访问单元之外的单位,则需要从访问单位提取些数据和第二ECC,并保持所提取的数据和第二ECC。在这方面,第三实施例不需要临时保持处理中途的数据,从而节省了存储区。
【在32个字节的模式下的写处理过程】
参照图22,示出了表示在本文中所公的开技术的第三实施例中32个字节的示例性写处理过程的流程图。当与来自主机计算机100的写指令一起接收到写数据时,所接收的写数据和附加信息被存储在页缓冲器440中(步骤S941)。然后,第一ECC生成部211为页缓冲器440中的32个字节的数据和附加信息生成第一ECC(步骤S942)。
接着,如上面参照图17所述的那样,指示32个字节的模式的模式信息被附加到开始,从而随后是数据、附加信息以及第一ECC的第一写单位由第一写单位生成部生成(步骤S943)。
写处理部293向非易失性存储器301发出写指令(步骤S944)。然后,以所生成的第一写单位作为访问单位,在每一个访问单位中执行从存储器接口202到非易失性存储器301的输出(步骤S945)。
【在512个字节的模式下的写处理过程】
参照图23,示出了表示在本文中所公开的技术的第三实施例中512个字节的示例性写处理过程的流程图。在与来自主机计算机100的写指令一起接收到写数据时,所接收的写数据和附加信息被存储在页缓冲器440中(步骤S951)。因此,与每一个随后的访问单位的输出同时地,第二ECC生成部221针对页缓冲器440中的512个字节的数据和附加信息生成第二ECC,(步骤S957)。
另一方面,假设用于顺序地访问16个访问单位的控制变量是i,且“1”替代作为控制变量i的初始值(步骤S952)。接着,如上面参照图18所述的那样,指示512个字节的模式的模式信息被附加到开始处,从而之后跟随数据的第二写单位(#01至#15)由第二写单位生成部292生成(步骤S953)。
写处理部293向非易失性存储器301发出写指令(步骤S954)。然后,以所生成的第二写单位作为访问单位,针对每一个访问单位执行从存储器接口202到非易失性存储器301的输出(步骤S955)。
控制变量i以1递增,并且步骤S953和随后步骤的处理重复进行,直到i达到16为止(步骤S956:“否”)。当控制变量i已经达到16时(步骤S956:“是”),指示512个字节的模式的模式信息如上参照图18所述被附加在第16个第二写单位的开始处,从而之后跟随数据、附加信息以及第二ECC的第二写单位由第二写单位生成部292生成(S963)。
写处理部293向非易失性存储器301发出写指令(步骤S964)。然后,以所生成的第二写单位作为访问单位,针对每一个访问单位执行从存储器接口202到非易失性存储器301的输出(步骤S965)。
在第三实施例中,写数据按照要求被输入第二ECC生成部221并且第二ECC集合起来写入最后的第二写单位中,从而使得在其他第二写单位的写入中无需进行等待。如果例如数据和第二ECC被分散在最后的第二写单位之外的第二写单位中,则最后生成的第二写单位对第二ECC的等待将会发生在对第二写单位的写入中,从而使整个写处理的处理时间延迟。在这方面,根据第三实施例,在对第二写单位的写入中无需等待,从而提高了整个写处理的速度。
如上所述,根据第三实施例,512个字节的模式的中数据和第二ECC的新颖布置节省了读处理所需的存储区,并且,同时,提高了执行写处理的速度。此外,将模式信息布置在访问单位中的预定位置允许快速确定模式;32个字节的模式或512个字节的模式。
<5.变形例>
在上述第三实施例中,假定模式信息不是第一ECC或第二ECC的目标;采用包括冗余位的3位的配置替代模式信息。可替换地,采用其中模式信息是第一ECC或第二ECC的目标的配置是同样可行的。更具体地说,在步骤942中,第一ECC与模式信息一起生成,在步骤S957中,第二ECC与模式信息一起生成。在这种情况下,基于带有模式信息的第一ECC的错误检测在步骤S915中执行,基于带有模式信息的第一ECC的纠错在步骤S917中执行。另外,基于带有模式信息第二ECC的错误检测在步骤S928中执行,基于带有模式信息第二ECC的纠错在步骤S931中执行。
应指出的是,上面描述的实施例对于用于实现在本文中公开的技术仅仅是说明性的。在实施例中描述的事项与定义在本文的权利要求范围公开中的事项分别相关。类似地,定义在本文权利要求范围公开中的事项与在本文中公开的技术实施例中具有相同名称的事项分别相关。然而,在本文中公开的技术不限于这些实施例,应理解的是,可以在不脱离本文权利要求的精神或范围的情况下进行改变和变化。
在上面提到的实施例中描述的处理过程序列可以理解为具有这些过程序列的方法,或用于使计算机执行此过程序列的计算机程序或存储这些计算机程序的记录介质。对于记录介质而言,基于非易失性存储器的存储卡或基于非易失性存储器的SSD(固态驱动器)是可用的。
应指出的是,在本文中公开的技术可采取以下配置。
(1)一种存储控制装置,包括:
纠错码附加规则保持块,其配置为通过将用于向一组数据序附加纠错码的附加规则针对该组数据序列的每个地址与该组数据序列相关联来保所述附加规则;和
纠错部,其配置为如果发生对存储器的访问,则根据发生访问的访问地址有关的附加规则来对存储在存储器中的该组数据序列执行纠错。
(2)在上面第(1)款中所述的存储控制装置,其中,
附加规则定义其中纠错码从该组数据序列的全部中生成以及其中纠错码从构成该组数据序列的多个部分数据序列中的每一个部分数据序列独立生成的情况中的一种。
(3)在上面第(1)或(2)款中所述的存储控制装置,其中,
如果与访问地址有关的附加规则被发现定义纠错码从构成该组数据序列的多个部分数据序列中的每一个部分数据序列生成,则纠错部仅对与所述多个部分数据序列中与访问有关的部分数据序列执行纠错。
(4)在上面第(1)至(3)款任一款中所述的存储控制装置,进一步包括:
纠错码生成部,其被配置为如果发生对存储器的写访问,则按照在写访问中指定的附加规则来为与写访问相关联的写数据生成纠错码。(5)在上面第(4)款中所述的存储控制装置,其中,
如果与写地址有关的附加规则被发现定义纠错码从构成该组数据序列的多个部分数据序列的每一个部分数据序列独立生成,则纠错码生成部仅对所述多个部分数据序列中与写访问有关的部分数据序列生成纠错码。
(6)在上面第(1)至(5)款任一款中所述的存储控制装置,其中,
纠错码附加规则保持块按照发出请求的主机计算机的指示保持附加规则。
(7)在上面第(1)至(6)款任一款中所述的存储控制装置,其中,
如果发生对存储器的写访问,则纠错码附加规则保持块通过将附加规则与和写访问有关的写地址相关联来保持在写访问中指定的附加规则。
(8)在上面第(1)至(7)款任一款中所述的存储控制装置,进一步包括:
地址转换块,其配置为如果对存储器的访问地址是逻辑地址,则将逻辑地址转换为物理地址并将物理地址输出到存储器;
其中,
纠错码附加规则保持块通过将附加规则与该组数据序列组中每一个数据序列的逻辑地址相关联来保持附件规则,并且
纠错部根据与逻辑地址相关联的附加规则来对存储在存储器中的该组数据序列执行纠错。
(9)上述第(1)至(8)款任一款中所述的存储控制装置,还包括:
地址转换块,被配置如果对存储器的访问地址是逻辑地址则将逻辑地址转换为物理地址并将物理地址输出到存储器,
其中,
纠错码附加规则保持块通过该组数据序列中的每个数据序列的物理地址相关联来保持附件规则,并且
纠错部根据与物理地址相关联的附加规则来对存储在存储器中的该组数据序列执行纠错。
(10)一种存储装置,包括:
存储器,其配置为将针对一组数据序列的纠错码与该组数据序列一起存储到数据区中;
纠错码附加规则保持块,其配置为通过将针对上述该组数据序列的纠错码附加规则与每一个上述数据序列的地址相关联来保持所述规则;以及
纠错部,其配置为如果发生对上述存储器的访问,则根据与每一个访问地址有关的上述附加规则来对存储在存储器中的上述该组数据序列执行纠错。
(11)在上面第(10)款中描述的存储装置,其中,
上述附加规则定义上述纠错码是从上述该组数据序列的全部生成或者这些纠错码从构成上述该组数据序列的多个部分数据序列的每一个独立生成;并且
如果附加规则定义纠错码是从构成上述该组数据序列的多个部分数据序列的每一个独立生成,则上述存储器将这些纠错码存储在与多个部分数据序列的每一个连续的位置处。
(12)在上面第(10)或(11)款中描述的存储装置,其中所述存储器是非易失性存储器。
(13)一种信息处理***,包括:
存储器,其存储针对一组数据序列的纠错码;
纠错码附加规则保持块,其配置为通过将用于向存储在存储器中的一组数据序列附加纠错码的附加规则针对该组数据序列的每一个地址与该组数据相关联来保持所述附加规则;
纠错部,其配置为如果发生对所述存储器的访问,则通过按照与发生访问的访问地址相关联的所述附加规则来对存储在所述存储器中的该组数据序列执行纠错;以及
主机计算机,其配置为向存储器发出读或写数据区的请求。
(14)一种存储控制方法,包括:
通过将针对存储在存储器中的一组数据系列的纠错码附加规则与该组数据序列的每一个地址相关联来定义这些附加规则;
如果发生对存储器的访问,则根据与每一个访问地址相关联的附加规则来对存储在存储器中的该组数据序列执行纠错。
(15)一种存储控制装置,包括:
第一写单位生成部,其配置为如果向存储器发出第一种模式的写指令,则对通过利用针对与第一模式的写指令相关联的写数据的第一纠错码以比所述存储器的访问单位小的第一大小对该数据进行划界而获得的数据进行配对,并向每个对附加指示第一模式的信息来生成写数据作为第一写单位;
第二写单位生成部,其配置为如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并且将指示第二种模式的模式信息附加到每一个划界得到的对来生成写数据作为第二写单位,所述成对数据是通过以比存储器的访问单位大的第二大小和针对数据的第二纠错码对与第二种模式的写指令相关联的写数据进行划界获得的;以及
写处理部,其配置为如果向同一存储器发出第一种模式的写指令,则将第一写单位作为访问单位写入存储器,如果向存储器发出第二种模式的写指令,则将第二写单位作为访问单元写入存储器。
(16)在上面第(15)款中描述的存储控制装置,还包括:
读处理部,其被配置为从存储器读访问以提取模式信息;
第一纠错处理部,其配置为如果模式信息指示第一种模式,则基于包括在访问单位中的第一大小的数据和第一纠错码执行纠错;以及
第二纠错处理部,其配置为如果模式信息指示第二种模式,则基于由包括在访问单位中的预定大小划界得到的数据和第二纠错码执行纠错。
(17)在上面第(15)或(16)款中描述的存储控制装置,还包括:
第一纠错码生成部,其配置为为第一大小的数据生成第一纠错码;以及
第二纠错码生成部,其被配置为为第二大小的数据生成第二纠错码。
(18)在上面第(15)至(17)款任一款中描述的存储控制装置,其中
模式信息被存储在访问单位的预定位置。
(19)在上面第(18)款中描述的存储控制装置,其中,
模式信息被存储在访问单位的开始处。
(20)在上面第(15)至(18)款任一款中描述的存储控制装置,其中,
第一写单位生成部和第二写单位生成部将模式信息的第三纠错码附加到模式信息中。
(21)在上面第(20)款中描述的存储控制装置,其中,
第三纠错码是通过位多数规则执行纠错的纠错码。
(22)在上面第(20)款中描述的存储控制装置,其中,
读处理部基于模式信息和第三纠错码对模式信息执行纠错。
(23)一种存储装置,包括:
通过预定访问单位访问的存储器;
第一写单位生成部,其配置为如果向存储器发出第一种模式的写指令,则通过利用针对与第一种模式的写指令相关联数据的第一纠错码以比所述存储器的访问单位小的第一大小对该数据进行划界而获得的数据进行配对并对每个对附加指示第一种模式的附加信息来生成写数据作为第一写单位;
第二写单位生成部,其被配置为如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并将指示第二种模式的模式信息附加到每一个划界得到的对来生成写数据作为第二写单位,所述成数据是通过以比存储器的访问单位大的第二大小和针对与第二种模式的写指令相关联的写数据的第二纠错码对该数据进行划界而获得的;
写处理部,其配置为如果向同一存储器发出第一种模式的写指令,则将第一写单位作为访问单位写入存储器,如果向存储器发出第二种模式的写指令,则将第二写单位作为访问单位写入存储器。
(24)在上面第(23)款中描述的存储装置,其中存储器是非易失性存储器。
(25)一种信息处理***,包括:
通过预定的访问单位访问的存储器;
第一写单位生成部,其配置为如果向存储器发出第一种模式的写指令,则对通过利用针对与第一种模式的写指令相关联的数据的第一纠错码以比所述存储器访问单位小的第一大小对该数据进行划界而获得的数据进行配对并且将指示第一种模式的模式信息附加到每一对来生成写数据作为第一写单位;
第二写单位生成部,其被配置为如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并将指示第二种模式的模式信息附加到每一个划界得到的对来生成写数据作为第二写单位,所述成对数据是通过以比存储器的访问单位大的第二大小和针对与第二种模式的写指令相关联的写数据的第二纠错码还对该数据进行划界而获得的;
写处理部,其配置为如果向同一存储器发出第一种模式的写指令,则将第一写单位作为访问单位写入存储器,如果是向存储器发出第二种模式的写指令,则将第二写单位作为访问单位写入存储器;以及
向上述存储器发出写指令和读指令的计算机。
(26)一种存储控制方法,包括以下步骤:
如果向存储器发出第一种模式的写指令,则对通过利用针对与第一种模式的写指令相关联的数据的第一纠错码以比所述存储器访问单位小的第一大小对该数据进行划界而获得的数据进行配对并将指示第一种模式的模式信息附加到每一对来生成写数据作为第一写单位;
如果向存储器发出第二种模式的写指令,则通过以预定大小对成对数据进行划界并将指示第二种模式的模式信息附加到每一个划界得到的对来生成写数据作为第二写单位,所述成对数据是通过以比存储器的访问单位大的第二大小和针对与第二种模式的写指令相关联的写数据的第二纠错码对该数据进行划界而获得的;
如果向同一存储器发出第一种模式的写指令,则将第一写单位作为访问单位写入存储器,如果向存储器发出第二种模式的写指令,则将第二写单位作为访问单位写入存储器。
本技术中包含在分别于2011年11月8日和2012年1月13日向日本专利局提交的日本优先专利申请JP 2011-244266和JP 2012-004578中公开的那些内容相关的主题,在此通过引用将其全部内容并入于此。

Claims (15)

1.一种存储控制装置,包括:
纠错码附加规则保持块,其配置为通过将把纠错码附加到存储在存储器中的一组数据序列的附加规则针对所述一组数据序列的每一个地址与所述一组数据序列相关联来保持所述附加规则;和
纠错部,其配置为如果发生对所述存储器的访问,则根据与发生所述访问的访问地址有关的所述附加规则来对存储在所述存储器中的所述一组数据序列执行纠错,
其中,如果与所述访问地址有关的附加规则被发现定义为所述纠错码从构成所述一组数据序列的多个部分数据序列的每一个独立生成,则所述纠错部仅对所述多个部分数据序列中与所述访问有关的部分数据序列执行纠错。
2.根据权利要求1所述的存储控制装置,其中,
所述附加规则定义所述纠错码从所述一组数据序列的全部生成的情况和所述纠错码从构成所述一组数据序列的多个部分数据序列中的每一个独立生成的情况中的一种。
3.根据权利要求1所述的存储控制装置,进一步包括:
纠错码生成部,其被配置为如果发生对所述存储器的写访问,则按照在所述写访问中指定的附加规则来为与所述写访问相关联的写数据生成纠错码。
4.根据权利要求3所述的存储控制装置,其中:
如果与所述写地址有关的附加规则被发现定义为所述纠错码从构成所述一组数据序列的多个部分数据序列的每一个独立生成,则所述纠错码生成部仅为所述多个部分数据序列中与所述写访问有关的部分数据序列生成纠错码。
5.根据权利要求1所述的存储控制装置,其中,
所述纠错码附加规则保持块按照发出请求的主机计算机的指示来保持所述附加规则。
6.根据权利要求1所述的存储控制装置,其中:
如果发生对所述存储器的写访问,则所述纠错码附加规则保持块通过将所述附加规则与和所述写访问相关联的写地址进行关联来保持所述写访问中指定的附加规则。
7.根据权利要求1所述的存储控制装置,还包括:
地址转换块,其配置为如果对所述存储器的访问地址是逻辑地址,则将所述逻辑地址转换为物理地址并将所述物理地址输出到所述存储器;
其中,
所述纠错码附加规则保持块通过将所述附加规则与所述一组数据序列中的每一个数据序列的逻辑地址进行关联来保持所述附加规则,且
所述纠错部根据与所述逻辑地址关联的附加规则来对存储在所述存储器中的所述一组数据序列执行纠错。
8.根据权利要求1所述的存储控制装置,还包括:
地址转换块,其配置为如果对所述存储器的访问地址是逻辑地址,则将所述逻辑地址转换为物理地址并将所述物理地址输出到所述存储器;
其中,
所述纠错码附加规则保持块通过将所述一组数据序列的每一个数据序列的物理地址进行关联来保持所述附加规则,且
所述纠错部根据与所述物理地址关联的附加规则来对存储在所述存储器中的所述多个数据序列执行纠错。
9.一种存储控制装置,其包括:
第一写单位生成部,其配置为如果对存储器发出第一种模式的写指令,则通过利用与所述第一模式的写指令相关联的写数据以比所述存储器的访问单位小的第一大小对该写数据进行划界而获得的数据与用于所述数据的第一纠错码进行配对并将指示所述第一种模式的模式信息附加到每一对来生成写数据并作为第一写单位;
第二写单位生成部,其被配置为如果向所述存储器发出第二种模式的写指令,则通过以预定大小对数据和用于所述数据的第二纠错码的对进行划界并将指示所述第二种模式的模式信息附加到每一个被划界的对来生成写数据并作为第二写单位,所述数据是通过以比所述存储器的所述访问单位大的第二大小对与所述第二种模式的写指令相关联的写数据进行划界而获得的;
写处理部,其配置为如果向同一存储器发出所述第一种模式的所述写指令,则向所述存储器写入所述第一写单位作为访问单位,如果向所述存储器发出所述第二种模式的所述写指令,则向所述存储器写入所述第二写单位作为所述访问单位,
其中,所述第一写单位生成部或所述第二写单位生成部向所述模式信息附加所述模式信息的第三纠错码。
10.根据权利要求9所述的存储控制装置,其进一步包括:
读处理部,其被配置为从所述存储器读所述访问单位以提取所述模式信息;
第一纠错处理部,其配置为如果所述模式信息指示所述第一种模式,则基于包括在所述访问单位中的所述第一大小的数据和所述第一纠错码执行纠错;
第二纠错处理部,其配置为如果所述模式信息指示所述第二种模式,则基于包括在所述访问单位中的由所述预定大小划界得到的数据和所述第二纠错码执行纠错。
11.根据权利要求9所述的存储控制装置,还包括:
第一纠错码生成部,其配置为为所述第一大小的数据生成第一纠错码;和
第二纠错码生成部,其配置为为所述第二大小的数据生成第二纠错码。
12.根据权利要求9所述的存储控制装置,其中:
所述模式信息被存储在所述访问单位的预定位置。
13.根据权利要求12所述的存储控制装置,其中:
所述模式信息被存储在所述访问单位的开始处。
14.根据权利要求9所述的存储控制装置,其中:
所述第三纠错码是按照位多数规则执行纠错的纠错码。
15.根据权利要求9所述的存储控制装置,其中:
所述读处理部基于所述模式信息和所述第三纠错码对所述模式信息执行纠错。
CN201210441123.XA 2011-11-08 2012-11-01 存储控制装置 Active CN103197985B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011244266A JP2013101455A (ja) 2011-11-08 2011-11-08 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2011-244266 2011-11-08
JP2012-004578 2012-01-13
JP2012004578A JP2013143118A (ja) 2012-01-13 2012-01-13 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法

Publications (2)

Publication Number Publication Date
CN103197985A CN103197985A (zh) 2013-07-10
CN103197985B true CN103197985B (zh) 2018-07-13

Family

ID=48224594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210441123.XA Active CN103197985B (zh) 2011-11-08 2012-11-01 存储控制装置

Country Status (2)

Country Link
US (1) US20130117632A1 (zh)
CN (1) CN103197985B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140089763A1 (en) * 2012-09-26 2014-03-27 Asolid Technology Co., Ltd. Flash memory and accessing method thereof
KR20150135311A (ko) * 2013-03-25 2015-12-02 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 에러 정정 로직을 갖는 메모리 디바이스
US10102060B2 (en) 2013-08-30 2018-10-16 Hitachi, Ltd. Storage apparatus and data control method of storing data with an error correction code
US9425829B2 (en) * 2014-09-12 2016-08-23 Freescale Semiconductor, Inc. Adaptive error correction codes (ECCs) for electronic memories
TWI531963B (zh) * 2015-06-04 2016-05-01 Accelstor Inc Data storage systems and their specific instruction enforcement methods
US9886194B2 (en) * 2015-07-13 2018-02-06 Samsung Electronics Co., Ltd. NVDIMM adaptive access mode and smart partition mechanism
US9720604B2 (en) * 2015-08-06 2017-08-01 Sandisk Technologies Llc Block storage protocol to RAM bypass
JP7475913B2 (ja) * 2020-03-19 2024-04-30 キオクシア株式会社 不揮発性メモリ及びメモリシステム
JP2022181670A (ja) 2021-05-26 2022-12-08 富士通株式会社 記憶装置及び記憶装置の制御方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101573694A (zh) * 2006-12-19 2009-11-04 英特尔公司 用于小数据结构的ecc保护的方法、***和装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4849975A (en) * 1987-11-10 1989-07-18 International Business Machines Corporation Error correction method and apparatus
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US5917838A (en) * 1998-01-05 1999-06-29 General Dynamics Information Systems, Inc. Fault tolerant memory system
US6216247B1 (en) * 1998-05-29 2001-04-10 Intel Corporation 32-bit mode for a 64-bit ECC capable memory subsystem
US6353910B1 (en) * 1999-04-09 2002-03-05 International Business Machines Corporation Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage
US6738333B1 (en) * 2000-05-30 2004-05-18 Dphi Acquisitions, Inc. Format for recording data in a storage disk
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US7096407B2 (en) * 2003-02-18 2006-08-22 Hewlett-Packard Development Company, L.P. Technique for implementing chipkill in a memory system
US7149945B2 (en) * 2003-05-09 2006-12-12 Hewlett-Packard Development Company, L.P. Systems and methods for providing error correction code testing functionality
US7149950B2 (en) * 2003-09-12 2006-12-12 Hewlett-Packard Development Company, L.P. Assisted memory device for reading and writing single and multiple units of data
JP4260688B2 (ja) * 2004-06-09 2009-04-30 富士通株式会社 データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法
US8671331B2 (en) * 2006-08-25 2014-03-11 Tellabs Operations, Inc. Apparatus and method for communicating FEC mode and alarming mismatch
JP2008077810A (ja) * 2006-09-25 2008-04-03 Toshiba Corp 不揮発性半導体記憶装置
KR101042197B1 (ko) * 2008-12-30 2011-06-20 (주)인디링스 메모리 컨트롤러 및 메모리 관리 방법
KR20100098969A (ko) * 2009-03-02 2010-09-10 삼성전자주식회사 에러 정정 코드들의 신뢰성을 향상시킬 수 반도체 장치, 이를 포함하는 반도체 시스템, 및 에러 정정 코드 처리 방법
TWI419169B (zh) * 2009-04-10 2013-12-11 Phison Electronics Corp 用於快閃記憶體的資料存取方法及其儲存系統與控制器
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
TWI447739B (zh) * 2010-03-22 2014-08-01 Phison Electronics Corp 錯誤校正方法、記憶體控制器與儲存系統
JP2012022422A (ja) * 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
US8392807B2 (en) * 2010-07-23 2013-03-05 Sandisk Technologies Inc. System and method of distributive ECC processing
TWI474329B (zh) * 2010-11-15 2015-02-21 Silicon Motion Inc 提昇錯誤更正能力之方法以及記憶裝置及控制器
WO2012073287A1 (en) * 2010-12-01 2012-06-07 Hitachi, Ltd. Storage control apparatus and storage control method
KR20120064462A (ko) * 2010-12-09 2012-06-19 삼성전자주식회사 메모리 컨트롤러, 이의 오류정정 방법, 및 이를 포함하는 메모리 시스템
US8484542B2 (en) * 2011-02-08 2013-07-09 Sandisk Technologies Inc. Data recovery using additional error correction coding data
US8756398B2 (en) * 2011-02-18 2014-06-17 Synopsys Inc. Partitioning pages of an electronic memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101573694A (zh) * 2006-12-19 2009-11-04 英特尔公司 用于小数据结构的ecc保护的方法、***和装置

Also Published As

Publication number Publication date
CN103197985A (zh) 2013-07-10
US20130117632A1 (en) 2013-05-09

Similar Documents

Publication Publication Date Title
CN103197985B (zh) 存储控制装置
US8291155B2 (en) Data access method, memory controller and memory storage system
CN101772810B (zh) 用于并行存储器阵列的块寻址
TWI425512B (zh) 快閃記憶體控制電路及其儲存系統與資料傳輸方法
CN105474319B (zh) 用于配置混合存储器模块的存储器的i/o的设备及方法
US8416621B2 (en) Non-volatile memory storage apparatus, memory controller and data storing method
JP4842563B2 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
US20210011629A1 (en) Memory device
CN104375951B (zh) 存储器控制装置及其控制方法、主计算机、信息处理***
US8392797B2 (en) Error correcting controller, flash memory chip system, and error correcting method thereof
JP5319723B2 (ja) メモリシステムおよびプログラム
JPWO2005083573A1 (ja) 半導体メモリ装置
TW201227741A (en) Data storage device, user device and data write method
US20100057979A1 (en) Data transmission method for flash memory and flash memory storage system and controller using the same
JP6447629B2 (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
CN103377140B (zh) 存储控制设备、存储设备、信息处理***和处理方法
CN105683897A (zh) 具有陈旧数据机制的数据贮存***及其操作方法
CN106598479A (zh) 闪速存储器的故障安全擦除的方法和装置
US9003153B2 (en) Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
US10140215B1 (en) Low overhead mapping for highly sequential data
JP4460967B2 (ja) メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
CN106021120A (zh) 存储***及其操作方法
US7657697B2 (en) Method of controlling a semiconductor memory device applied to a memory card
US20090210612A1 (en) Memory controller, nonvolatile memory device, and nonvolatile memory system
JP4751037B2 (ja) メモリカード

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