具体实施方式
下面将参考附图详细描述半导体存储装置的示例性实施例。首先,将描述根据实施例的半导体存储器装置的基本配置。之后,将描述用于解决多个半导体存储芯片中的可用存储区域的容量变化的问题的配置。
将参考图1描述根据本实施例的半导体存储器装置的硬件配置。半导体存储器装置50包括处理器51、引导只读存储器(ROM)52、SATA/SAS接口55、存储器控制器53、动态随机存取存储器(DRAM)54、NAND控制器57A到57F、多个半导体存储器元件(NAND)58A到58F、以及连接这些部件的总线56。在不需使NAND控制器57A到57F彼此区分开的情况下,可将它们简单地描述为NAND控制器57。在不需使半导体存储器元件58A到58F彼此区分开的情况下,可将它们简单地描述为半导体存储器元件58。
SATA/SAS接口55在处理器51的控制下控制与作为半导体存储器装置50的高级设备的主机的通信。引导ROM 52存储在电源接通时执行的程序。在半导体存储器元件58中存储各种系统程序。处理器51在电源接通时从引导ROM 52读取程序,执行该程序,根据该程序将存储在半导体存储器元件58中的各种系统程序传送到DRAM 54,并执行DRAM 54上的系统程序,从而控制整个半导体存储器装置50以实现各种功能。具体地,处理器51解释通过SATA/SAS接口55从主机发送的命令,并根据该命令控制数据向半导体存储器元件58的写入和数据从半导体存储器元件58的读取。
存储器控制器53控制DRAM 54。DRAM 54存储各种数据和各种程序。在实施例中,DRAM 54存储稍后描述的正向查找表和位向量表。NAND控制器57控制半导体存储器元件58并包括错误校正电路。
半导体存储器元件58对应于半导体芯片。例如,其实在NAND型闪速存储器中使用的存储器元件。这样的半导体存储器元件58不能随机读/写,而是以称为页的单位进行读/写。多个页形成称为块的存储区域。这里假定一页由4KB构成,而一块由64页形成。每个半导体存储器元件58由多个块构成。在实施例中,如图1所示,半导体存储器元件58的数目为六个。将信道(CH0到CH5)分别分配给半导体存储器元件58A到58F。将这些信道当中的信道(CH5)分配作为在其中写入冗余信息的信道,将其他信道(CH0到CH4)分配作为在其中写入请求由主机写入的数据的信道。使用信道CH0到CH5的页作为集合以构成错误校正码。信道CH0到CH4分别对应于半导体存储器元件58A到58E,而信道CH5对应于半导体存储器元件58F。如稍后所述,在请求由主机写入的数据大于页尺寸的情况下,半导体存储器装置50将数据分割成多个段,并将以页为单位分割的数据分配并写入各自的信道CH0到CH4。即,在实施例的基本配置中,半导体存储器装置50将请求以预定单位写入的预定数目的数据段以及通过使用各数据段计算出的用于校正各数据段的错误的冗余信息分别写入到不同的半导体存储器元件58中,从而由这些数据和冗余信息构成错误校正码。作为错误校正码,例如,使用奇偶校验码。在这样的基本配置中,稍后将描述用于解决半导体存储器装置50的半导体存储器元件58A到58F中的可用存储区域的容量变化的问题的配置。
这里,将描述用于写入半导体存储器元件58的写入方法。NAND型半导体存储器元件通常采用日志结构方法。以页的顺序而与由主机指定的逻辑块地址(LBA)无关地以页为单位顺序地在已擦除的块中写入数据,存储指示出数据被写入的物理存储位置的物理地址(PA)与逻辑块地址之间的关联,并使用地址的关联来读取数据。该系统称为日志结构方法。在日志结构方法中,在写入之前需要擦除块。块擦除是要将构成块的所有位都设定为“1”。半导体存储器装置50以块为单位进行这种擦除,并以页为单位进行向已擦除的块的写入。因此,在NAND型半导体存储器元件58中,可以将数据顺序地写入在已擦除的块中的未写入的页,而已写入的页不能被添加页。通过在主机中使用的逻辑块地址来指示响应于来自主机的请求的数据写入。另一方面,数据和冗余信息向半导体存储器元件58的写入是以页的升序根据半导体存储器元件58的物理块地址进行的而与逻辑块地址无关。物理块地址与逻辑块地址之间的关联被存储在稍后描述的正向查找表中。当在先前数据请求中指定的逻辑块地址被再次指定的情况下由主机请求写入新数据时,半导体存储器装置50将该新数据写入已擦除块的未写入的页。在该情况下,将先前对其进行对应于该逻辑块地址的写入的页设定为无效,并将对其写入新数据的页设定为有效。半导体存储器装置50在构造上述错误校正码的同时写入新数据和冗余信息。
在该日志结构方法中,当通过连续写入而增加被无效的页数时,在半导体存储器元件58中可实现写入的容量(称为可实现的容量)变小。在信息可被写入的新擦除的块的数目(即,在擦除之后尚未写入信息的块(称为空闲块)的数目)减少的时刻,不能确保构成错误校正码的块的组(称为逻辑块),出现写入不可能状态。为了防止该情况,在半导体存储器装置50中,在适当的时机进行无用信息收集(garbage collection)。在半导体存储器元件58中进行的无用信息收集将被特别地称为压缩。图2为用于解释压缩的概念图。半导体存储器装置50收集在包含被无效的页的块中的未被无效的逻辑块地址中写入的数据(称为有效数据),并将所收集的有效数据重新写入空闲块中,从而将有效数据移动到空闲块。之后,半导体存储器装置50擦除这些块从而产生新的空闲块。在半导体存储器装置50中,通过进行这样的压缩,不可写入的块重新变为可写入的,这允许保留空闲块。此外,如果由于移动数据而在有效数据被写入的块中存在未写入的页,则数据被重新写入剩余的未写入的页。
需要至少一个空闲块以进行这样的压缩,这意味着在NAND型半导体存储器元件58中实施的容量(称为实施容量)大于写入可被实际实现的容量。在实施例中,实施容量和可实现容量之间的差称为备用容量。当备用容量小时,半导体存储器装置50必须频繁地进行压缩,这对其操作有很大的影响。参考图2,已经描述了基于块单位的压缩。在实施例中,逻辑块是基本单位,因此为每个信道保留空闲块以构成逻辑块,并且基于逻辑块单位进行压缩。
接下来,将参考图3描述在半导体存储器装置20中实现的功能。半导体存储器装置50包括主机接口单元60、缓冲器控制器61、地址转译单元62、CH分配单元63、压缩候补检测器64、管理表更新单元65、NAND控制器66A到66F、数据缓冲器67、压缩读取队列(queue)68以及管理表69。通过由处理器51执行程序和SATA/SAS接口55的功能来实现主机接口单元60的功能。当处理器51执行程序时,实现地址转译单元62、CH分配单元63、管理表更新单元65、压缩候补检测器64、以及缓冲器控制器61的功能。NAND控制器66A到66F的功能分别对应于NAND控制器57A到57F,并通过处理器51执行程序和分别对应于NAND控制器66A到66F的NAND控制器57A到57F的功能而实现。NAND控制器66A到66F以一对一对应的方式分别对应于信道CH0到CH5被分配给的半导体存储器元件58A到58F。在不需使NAND控制器66A到66F彼此区分开的情况下,可将它们简单地描述为NAND控制器66。数据缓冲器67、压缩读取队列68以及管理表69为例如存储在DRAM 54上的信息。
主机接口单元60是控制主机与半导体存储器装置50之间的通信的接口。主机接口单元60接收从主机发送的命令。当该命令请求写入具有指定的逻辑块地址的数据时,主机接口单元60将该命令(称为写命令)发送到稍后描述的地址转译单元62。当被请求写入的数据的尺寸等于或小于页尺寸时,主机接口单元60将该数据发送到稍后描述的缓冲器控制器61。当该数据的尺寸大于页尺寸时,主机接口单元60将该数据分割成多个页单位的段并将由此分割的数据(称为经分割的数据段)发送到缓冲器控制器61。这是因为,逻辑块地址与物理块地址之间的转译是基于页单位进行的。例如,主机接口单元60将128KB的数据分割成32段4KB的数据。为了便于描述,将响应于写命令而发送到缓冲器控制器61的数据或经分割的数据段称为写目标数据。
在从主机发送到命令请求读取具有指定的逻辑块地址的数据的情况下,如果被请求读取的数据的尺寸等于或小于页尺寸,主机接口单元60将该命令(称为读命令)发送到地址转译单元62。在被请求读取的数据的尺寸大于页尺寸时,主机接口单元60将请求基于页单位读取数据的命令(读命令)发送到地址转换器62。主机接口单元60通过使用由从主机发送的命令指定的逻辑块地址而计算要被读取的每段数据的逻辑块地址,并将请求读取具有所计算出的逻辑块地址的数据的读命令发送到地址转译单元62。主机接口单元60通过稍后描述的缓冲器控制器61读出将被读取的存储在读取缓冲器67中的指定区域中的数据,并将其发送到主机。
管理表69包括正向查找表和位向量表。正向查找表是表明写目标的逻辑块地址与指示出写目标数据在半导体存储器元件58中被写入的物理存储位置之间的关联的信息,并且包括使写目标数据和冗余信息与指定写目标数据和冗余信息被写入的半导体存储器元件58中的多个存储区域中的每一个的信息相关联的信息。在确定物理块地址时使用这样的正向查找表,该物理块地址指示出与由主机指定的逻辑块地址相关联的数据被存储的半导体存储元件58上的位置。图4是示出正向查找表的数据配置的图。如图4中所示,正向查找表具有LBA表和逻辑到物理转译表。LBA表包括作为其索引的逻辑块地址和条目(entry),条目包括信道号码、赋予页的页号码、以及赋予在其中存储数据的逻辑块的逻辑块号码。基于在来自主机的数据写请求中指定的逻辑块地址来计算每个写目标数据的逻辑块地址。
逻辑块号码是使写目标数据与冗余信息彼此相关联的识别信息,并且是以产生它们的顺序而被赋予每一个块的号码。在该实施例中信道号码是CH0到CH4,并且指示出包括与逻辑块地址相关联的数据存储于其中的物理块的半导体存储器元件58被连接到哪一个信道。页号码指示出与该逻辑块地址相关联的数据被存储在由逻辑块号码和信道号码识别的物理块的哪一页中。例如,可以以物理块地址的顺序提供页号码,或者物理块地址本身可以被提供作为页号码。
逻辑到物理转译表是指定在半导体存储器元件58中指定多个存储区域的区域指定信息,写目标数据和冗余信息将被写入所述多个存储区域,并且,该逻辑到物理转译表在其中存储逻辑块号码和与该逻辑块相关联的信道的物理块以使它们彼此对应。逻辑到物理转译表在其中存储作为索引的逻辑块号码,存储与该逻辑块相关联的信道的物理块的地址(物理块地址)。在这样的配置中,使用在与一个逻辑块地址对应的LBA表中的条目中所存储的逻辑块号码作为索引,利用该索引指定与该逻辑块相关的逻辑到物理转译表中的条目。接下来,从逻辑到物理转译表中的条目中所存储的物理块当中指定这样的半导体存储器元件58中的物理块,该半导体存储器元件58被连接到在LBA表中的条目中所记录的信道号码的信道。利用在LBA表中的条目中所包括的页号码来指定这样的页,与逻辑块地址对应的数据被写入该页中。
如上所述,基于页单位在信道CH0到CH4中存储由主机要求的将被写入的数据,并且在信道H5中写入将被附加而构成错误校正码的冗余信息。因此,冗余信息被写入由逻辑到物理转译表中的每个条目指示的信道CH5的物理块地址的存储区域中。由于不存在对应于冗余信息的逻辑块地址,因此与该冗余信息有关的条目未被记录在LBA表中。关于冗余信息的信息被记录在逻辑到物理转译表中的条目中。每次在半导体存储器元件58中写入写目标数据和冗余信息时,更新正向查找表。稍后将描述如何更新正向查找表。
接下来,将参考图5描述位向量表。位向量表是这样的表,其以物理块的顺序以二值表示在与逻辑块相关联的物理块当中的在信道CH0到CH4中的每个信道上的每个物理块中的哪个页是有效数据被写入的页(称为有效页)。每个页的该二值表示称为位向量。如果位向量的值为“1”,这意味着该页是有效页,而如果位向量的值为“0”,这意味着该页不是有效页(无效)。在初始状态下,位向量的值都被设定为“0”。
在实施例中,在与逻辑块相关联的物理块当中,写目标数据被写入的信道为五个信道CH0到CH4,并且,如果假设一个物理块包括64个页,则一个逻辑块包括320个页。因此,对应的位向量的数目为每逻辑块320个。如图5所示,对于每个逻辑块,位向量表包括作为其索引的上述逻辑块号码、位向量、以及计数器,其中位向量与在信道CH0到CH4的每个物理块中所包括的每个页相关联,而这些物理块与逻辑块号码将被赋予其的逻辑块相关联。在实施例中,提前将逻辑到物理转译表中的条目和位向量表中的位向量设置为使逻辑到物理转译表中的索引匹配位向量表中的索引。在图5中,以信道CH0到CH4的每个物理块的页的顺序设置位向量,使得从左边开始为CH0的第一页、第二页、......、CH0的最后一页、CH1的第一页、第二页、......、CH1的最后一页等等。计数器表示其值为“1”的位向量的总数目。由于其对应的位向量具有值“1”的页是有效页,因此计数器表示在逻辑块中的有效页的数目。在这样的配置中,每次主机请求写入数据时,更新位向量表。稍后将描述如何更新位向量表。
返回去参考图3进行描述。地址转译单元62接收来自主机接口单元60的命令。当该命令是读命令时,地址转译单元62使用由该读命令指定的逻辑块地址而参照管理表69中的正向查找表,并且确定信道和由该读命令请求读取的数据被写入的页的物理块地址。地址转译单元62指定信道和物理块地址,并将请求读取数据的命令通过CH分配单元63而发送到NAND控制器66。
相反地,当从主机接口单元60接收到的命令为写命令时,地址转译表单元62将写命令发送到稍后描述的CH分配单元63。
响应于在稍后描述的压缩读取队列68中存储的压缩读命令,地址转译单元62将请求读取在具有由压缩读命令指定的物理块地址的有效页中的数据(有效数据)的命令发送到与这样的信道对应的NAND控制器66,具有包括该有效页的物理块的半导体存储器元件58被连接到该信道。通过NAND控制器66从半导体存储器元件58读出该有效数据,并通过缓冲器控制器61将该有效数据存储在数据缓冲器67中。地址转译单元62将请求写入该有效数据的命令(称为压缩写命令)发送到CH分配单元63。
CH分配单元63接收来自地址转译单元62的命令,并且当该命令是写命令时,确定写目标数据将被写入的信道。例如,CH分配单元63在除了向其中写入冗余信息的信道(在该情况下为信道CH5)之外的信道中以4KB为单位以循环的方式进行写操作,并根据循环的次序确定数据被写入的信道。然后,CH分配单元63将请求写入该写目标数据的命令发送到与所确定的信道对应的NAND控制器66。
相反地,在请求读取具有由来自地址转译单元62的命令指定的信道和指定的物理块地址的数据的情况下,将请求读取具有所指定的物理块地址的数据的命令发送到与该指定的信道对应的NAND控制器66。在从地址转译单元62接收到的命令为压缩写命令的情况下,CH分配单元63根据循环的次序确定数据将被写入的信道,并将请求写入有效数据的命令发送到与所确定的信道对应的NAND控制器66。
NAND控制器66接收来自CH分配单元63的命令,并根据该命令存取对应的半导体存储器元件58。具体地,当该命令请求写入数据时,NAND控制器66通过缓冲器控制器61而获得写目标数据,并将该写目标数据写入半导体存储器元件58。在写入时,NAND控制器66将写入指针设定为指向对应的半导体存储器元件58的已擦除块中的未写入的页,将写目标数据写入在由写入指针指向的位置处的页,然后更新该写入指针以指向作为在经历了写入的页之后的下一页的未写入的页的位置。因此,写入指针的值改变以顺序地指向下一个写入位置。例如,当由每个信道中的15位的物理块地址识别块且块包括64个页时,写入指针具有总共15+6=21个位。
这里,下面将描述写目标数据和冗余信息的数据配置。NAND控制器66将错误校正码(称为页ECC)附加到写目标数据,该错误校正码用于检测和校正写目标数据本身和由写命令指定的逻辑块地址的错误。假定页ECC包括诸如用于检测数据错误的CRC码和用于校正数据错误的ECC码的代码。页ECC还包括CRC码的原因在于,存在当数据错误不能用ECC码校正的假校正的可能性。图6是示例出冗余信息被附加至其的写目标数据的图。NAND控制器66将这样的页ECC和逻辑块地址被附加至其的写目标数据写入在如上所述确定的每个信道中的半导体存储器元件58中的写入指针所指向的页。写目标数据具有页单位的尺寸。假定半导体存储器元件58的页尺寸等于包括写目标数据以及所附加的页ECC和逻辑块地址的整个数据的尺寸。基于由写命令指定的逻辑块地址通过每个NAND控制器66来计算每个经分割的数据段的逻辑块地址。相反地,与CH5对应的NAND控制器66F将用于检测和校正冗余信息本身的错误的页ECC附加到冗余信息,所计算的用于构成错误校正码的冗余信息被写入该信道CH5。NAND控制器66F将页ECC被附加至其的冗余信息写入由写入指针指向的半导体存储器元件58F中的页中。
接下来,将描述通过循环处理将作为写目标数据的多个经分割的数据段写入信道CH0到CH5。图7是用于说明由循环处理进行的写入的图。为了简化该图,未示出附加到经分割的数据段的逻辑块地址。如图所示,以循环方式从信道CH0到信道CH4顺序地写入经分割的数据段,写入的方式使得第一经分割的数据D1在时刻T1被写入信道CH0且下一经分割的数据D2在时刻T2被写入信道CH1。当经分割的数据D5在时刻T5被写入信道CH4时,计算在时刻T1被写入信道CH0的经分割的数据D1、在时刻T2被写入信道CH1的经分割的数据D2、在时刻T3被写入信道CH2的经分割的数据D3、在时刻T4被写入信道CH3的经分割的数据D4的奇偶性p以及在时刻T5被写入信道CH4的经分割的数据D5的奇偶性P作为冗余信息,并且将该冗余信息P写入信道CH5中。在进一步写入经分割的数据段时,以循环的方式从CH0开始顺序地写入数据。通过以循环的方式写入经分割的数据段,均匀地进行对信道的写入操作。在该图的实例中,示出了随着时间的流逝按信道的次序写入数据的状态。然而,本发明不限于该实例。数据可以被同时写入两个或更多个信道。
接下来,将参考图8描述错误校正码的配置。为了便于说明,在该图中,未示出附加到将被写入每个信道CH0到CH4的经分割的数据段的逻辑块地址。如图8所示,对应于信道CH5的NAND控制器66F计算在信道CH0到CH4中写入的数据中的相同偏移位置处的字节的异或,并将由此计算出的值作为冗余信息写入信道CH5的半导体存储器元件58F中的相同偏移位置中。即,错误校正码由在信道CH0到CH5的相同偏移位置处的字节构成。
返回去参考图3进行描述。当从CH分配单元63接收到的命令请求读取具有指定的物理块地址的数据时,NAND控制器66使用该物理块地址从与半导体存储器元件58中的该物理块地址对应的位置读出数据,并将读出的数据发送到缓冲器控制器61。如果在从半导体存储器元件58读出的数据中存在错误,则NAND控制器66检测并校正该错误。稍后将描述检测和校正数据错误的方法。当从地址转译单元62接收到的命令请求读取具有指定的物理块地址的有效页中的数据(有效数据)时,NAND控制器66通过使用该物理块地址读出在与半导体存储器元件58中的该物理块地址对应的页中写入的数据,并将读出的数据存储在数据缓冲器67中。当从CH分配单元63接收到的命令请求写入有效数据时,NAND控制器66通过缓冲器控制器61检索(retrieve)写目标有效数据,并将该有效数据写入半导体存储器元件58。
压缩候补检测器64参照包括在管理表69中的位向量表,确定用于压缩的候补的逻辑块,并将这样的命令(称为压缩读命令)发送到压缩读取队列68,该命令指定逻辑块中的有效页的物理块地址并请求读取该有效页。
数据缓冲器67是用于存储写目标数据的缓冲器。压缩读取队列68是存储请求读取用于压缩的有效页的命令的先进先出缓冲器。
缓冲器控制器61管理作为多个区域的数据缓冲器67,并管理对应于该命令的数据被存储于其中的区域。具体地,缓冲器控制器61响应于写命令而将从主机接口单元60发送的写目标数据存储到数据缓冲器67中,并将该写目标数据发送到与由CH分配单元63确定要写入的信道对应的NAND控制器66。通过NAND控制器66将该写目标数据写入半导体存储器元件58中。响应于读命令,缓冲器控制器61将从NAND控制器66发送的数据存储到数据缓冲器67中的指定区域中,然后将该数据发送到主机接口单元60。通过主机接口单元60将该数据发送到主机。响应于压缩读命令,缓冲器控制器61通过NAND控制器66将从半导体存储器元件58读出的数据存储到数据缓冲器67中。
在从主机接收到请求写入具有指定的逻辑块地址的数据的命令(写命令)的情况下,管理表更新单元65参照正向查找表,更新位向量表,并进一步更新正向查找表。具体地,管理表更新单元65首先参照正向查找表以查找与对应于该逻辑块地址的物理块地址相关联的数据(即,与该逻辑地址相关联的数据)被写入哪个块中的哪个页中。如果在正向查找表中未存储与该逻辑块地址相关联的物理块地址,则尚未进行与该逻辑块地址相关联的数据的写入。在该情况下,管理表更新单元65将位向量表中的对应于与该逻辑块地址相关联的写目标数据被写入的页的位向量的值设定为“1”。通过写入指针指向写目标数据被写入的页。管理表更新单元65使与包括该页的物理块相关联的逻辑块中的有效页的数目的计数器的值增加1。
相反地,如果当管理表更新单元65参照正向查找表时与该逻辑块地址相关联的物理块地址存在于正向查找表中,则在之前已进行了与该逻辑块地址相关联的数据的写入。在该情况下,由于用于本次写入的写命令,需要使之前写入的数据无效。为了该目的,管理表更新单元65将与这样的物理块地址处的页对应的位向量的值设定为“0”,该物理块地址被存储在用于由写命令指定的逻辑块地址而参照的正向查找表的条目中。另外,管理表更新单元65使具有包括该页的物理块的逻辑块中的有效页的数目的计数器的值减小1。管理表更新单元65将与写目标数据要被写入的页对应的位向量的值设定为“1”,并使与包括该页的物理块相关联的逻辑块中的有效页的数目的计数器的值增加1。通过每次在进行数据的写入时都进行更新,位向量表和有效页的数目的计数器总是指示出有效页的位置及其数目。最后,管理表更新单元65在正向查找表中的与该逻辑块地址对应的条目中记录写目标数据被写入的物理块地址。
接下来,将描述根据实施例由半导体存储器装置50进行的处理的过程。首先,将参考图9描述响应于来自主机的写命令通过半导体存储器装置50在半导体存储器元件58中写入写目标数据的过程。在开始写之前,半导体存储器装置50提前保留用于信道的空闲块。当从主机接收到请求写入具有指定的逻辑块地址的数据的写命令(步骤S1)时,半导体存储器装置50在每个信道中选择一个空闲块并通过使信道CH0到CH5的空闲块相关联并构成逻辑块。半导体存储器装置50将逻辑块号码赋予该逻辑块并将作为索引的该逻辑块号码以及信道中的物理块当中的与该逻辑块相关联的各物理块地址记录到逻辑到物理转译表中。此时,半导体存储器装置50设置逻辑到物理转译表条目的分类顺序(sorting order)、逻辑到物理转译表条目中的信道中的物理块的物理块地址的分类顺序、以及位向量表中的位向量,以便可通过使用逻辑到物理转译表中的索引来参照与该逻辑块相关联的每个物理块的位向量。半导体存储器装置50为每个信道设定用于指示物理块将被写入的页的写入指针以及在每个物理块中的与该逻辑块相关联的物理块地址。在开始写之前,半导体存储器装置50将每个信道的写入指针设定为指向该信道的头部处的物理块的第一页。
半导体存储器装置50确定由写命令请求写入的数据的尺寸是否等于或小于页尺寸(步骤S2)。在数据的尺寸等于或小于页尺寸(步骤S2中的是)的情况下,半导体存储器装置50在数据缓冲器67中存储数据(写目标数据)(步骤S4)。相反地,在由写命令请求写入的数据的尺寸大于页尺寸(步骤S2中的否)的情况下,导体存储器装置50将该数据分割为以页为单位的多个段(步骤S3)并将经分割的数据段(写目标数据)记录到数据缓冲器67中(步骤S4)。
半导体存储器装置50基于由写命令指定的逻辑块地址而参照正向查找表,并且当在其中已经记录了与写目标数据的逻辑块地址对应的物理块地址时,半导体存储器装置50在例如DRAM 54中存储该物理块地址作为旧物理块地址(步骤S5)。半导体存储器装置50确定写目标数据将以循环方式被写入的信道(步骤S6)并将具有附加至其的页ECC和逻辑块地址的写目标数据写入由所确定的信道的半导体存储器元件58中的写入指针所指向的页(步骤S7)。然后,半导体存储器装置50将每个信道的写入指针更新为指向在该写目标数据被写入的页之后的下一个未写入的页(步骤S8)。
图10是示出随着时间的流逝在信道CH0中写入作为写目标数据的经分割的数据段的状态的图。首先,在时刻t0,保留空闲块。在时刻t1,将第一经分割的数据D1写入在时刻t0保留的空闲块中的第一页(位于头部或末端)中。在时刻t2,以循环方式在信道CH0中的第二页中写入新确定的经分割的数据D6。相似地,在时刻t3,在第三页中写入经分割的数据D11。在时刻t4,在第四页中写入经分割的数据D16。以这样的方式,在物理块中以升序确定经分割的多段数据被写入的页而与逻辑块地址无关。每次在进行写入时都将写入指针设定为指向以升序将数据写入其中的页。在实施例中,以循环方式均匀地进行对信道的写入操作,从而在每个信道中由写入指针指向的页号码之间的差最大为1。当在逻辑块中的最后一页上完成了写入时,在各信道中由写入指针指向的页号码是相同的。
如上所述,无论由来自主机的写命令指定的逻辑块地址的值如何,都以预定的顺序分配目标数据被写入的页的物理块地址,并且数据被写入这些页中。
返回去参考图9进行描述。当写入写目标数据时,半导体存储器装置50将写目标数据的逻辑块地址与该写目标数据将被写入的页的物理块地址之间的关联性记录到图4所示的正向查找表中(步骤S9)。如果该写目标数据是经分割的数据段,则半导体存储器装置50基于由写命令指定的逻辑块地址而计算经分割的数据段的物理块地址中的每一个。由于经分割的数据段以页为单位,半导体存储器装置50计算通过顺序地将页尺寸(4KB)附加到所指定的逻辑块地址而获得的值作为经分割的数据段的逻辑块地址。然后,半导体存储器装置50将该逻辑块地址、与写目标被写入的每个信道的物理块相关联的逻辑块的逻辑块号码以及指示出在当前处理中写目标数据被写入的信道和页的信道号码和页号码记录到LBA表中。在上述实例中,由更新之前的写入指针的较低的六位指示出页号码,因此可以使用该值作为页号码。每次在进行写目标数据的写入时,半导体存储器装置50更新正向查找表,如上所述。
此外,半导体存储器装置50参照位向量表,将与在步骤S5中存储在DRAM 54中的旧物理块地址的页对应的位向量的值设定为“0”,并使与包括该页的物理块相关联的逻辑块的有效页的数目的计数器的值减小1(步骤S10)。旧物理块地址指示出与由在步骤S10中接收到的写命令指定的逻辑块地址相关联的先前向其写入数据的页。因此,位向量的值被设定为“0”,并且与包括该页的物理块相关联的逻辑块中的有效页的数目的计数器的值减小1。此外,半导体存储器装置50将与在步骤S7中写目标数据被写入的页对应的位向量的值设定为“1”,并使包括该页的逻辑块的有效页的数目的计数器的值增加1(步骤S11)。以这样的方式,在写入写目标数据时,半导体存储器装置50更新位向量表。
在步骤S7中,在完成了写目标数据向信道CH0到CH4的写入之后,半导体存储器装置50计算在信道CH0到CH4中的写目标数据中的相同偏移位置处的字节的异或并将该值写入信道CH5中的相同偏移位置中,从而写入冗余信息。
在写入指针到达所有信道(CH0到CH5)中的块的末端并且数据变得不能被新写入该逻辑块中的情况下,半导体存储器装置50构造新的逻辑块。构造逻辑块的方法如上所述。向新的逻辑块写入经分割的数据段和冗余信息的方法也如上所述。
接下来,将参考图11描述半导体存储器装置50根据来自主机的读命令而从半导体存储器元件58读出数据的过程。当从主机接收到请求读取具有指定的逻辑块地址的数据的读命令(步骤S20)时,半导体存储器装置50确定由读命令请求读出的数据的尺寸是否等于或小于页尺寸(步骤S21)。在该数据的尺寸等于或小于页尺寸(步骤S21中的是)的情况下,半导体存储器装置50通过使用由该读命令指定的逻辑块地址而参照正向查找表的LBA表并确定逻辑块号码。接下来,半导体存储器装置50通过使用所确定的逻辑块号码而参照逻辑到物理转译表并确定将从其中读出数据的信道、物理块和页(步骤S23)。半导体存储器装置50从对应于所确定的信道的半导体存储器元件58中读出数据(步骤S24)。
相反地,在由读命令请求读出的数据的尺寸大于页尺寸(步骤S21中的否)的情况下,半导体存储器装置50对读取进行分割以使将被读出的数据变为以页为单位的数据段。也就是,半导体存储器装置50通过使用由该读命令指定的逻辑块地址而计算将被读出的数据段的逻辑块地址中的每一个(步骤S22)。半导体存储器装置50通过使用计算出的每一个逻辑块地址而参照正向查找表的LBA表并确定每一个逻辑块号码。接下来,半导体存储器装置50通过使用所确定的逻辑块号码中的每一个而参照逻辑到物理转译表并确定将从其中读出数据的信道、物理块和页中的每一个(步骤S23)。半导体存储器装置50从与所确定的信道对应的半导体存储器元件58中读出数据段(步骤S24)。
通过附加到数据的页ECC来确保在步骤S24中读出的数据的有效性。也就是,半导体存储器装置50通过使用附加到所读出的数据的页ECC而检测并可校正该数据中的错误。然而,当存在不能用页ECC校正的错误时,存在在半导体存储器元件58中发生故障和在数据中发生异常的可能性。在这样的情况下(步骤S25中的否),半导体存储器装置50通过使用在数据的读出时使用的逻辑块地址来参照正向查找表、确定与已从其中读出数据的信道的物理块相关联的逻辑块(步骤S27),读出在与所确定的逻辑块相关联的其他信道的物理块中写入的其他数据段和冗余信息,并通过使用该其他数据段和冗余信息而恢复包括不可校正的错误的数据。
作为实例,图12是示出恢复由于在例如信道CH3的半导体存储器元件58中发生故障而变为异常的数据的状态的图。具体而言,半导体存储器装置50读出除了与在步骤S27中确定的逻辑块相关联的物理块即从其中读出不能被校正的错误数据的物理块之外的信道的物理块中写入的其他条的数据和冗余信息(在信道CH0、CH1、CH2和CH4中写入的数据段和在信道CH5中写入的冗余信息)。半导体存储器装置50通过获得在所述其他数据段和冗余信息中的相同偏移处的异或(即,在相同偏移位置处的按字节的异或)而恢复信道CH3中的数据。半导体存储器装置50将恢复的数据存储在数据缓冲器67中(步骤S28)并前进到步骤S29。
由于存在在从其中读出错误数据的页中发生异常的高度可能性,半导体存储器装置50将恢复的数据重新写入不同的页。半导体存储器装置50通过使用在数据的读取时使用的逻辑块地址而更新位向量表和正向查找表。更新表的方法如上所述。作为更新的结果,从其中读出错误数据的页的位向量被更新为“0”,恢复的数据被写入的页的位向量被更新为“1”,并且将恢复的数据被写入的页的物理块地址记录在用于由读命令指定的逻辑块地址的正向查找表的条目中。
在步骤S24中读出的数据中不存在错误的情况下,半导体存储器装置50将该数据存储在数据缓冲器67中的指定区域中,并前进到步骤S29。即使在步骤S24中读出的数据中存在错误,半导体存储器装置50也可利用页ECC校正数据(步骤S26),将校正后的数据存储在数据缓冲器67中的指定区域中,并前进到步骤S29。在步骤S29中,半导体存储器装置50将存储在数据缓冲器67中的指定区域中的数据发送到主机。
当在步骤S20中接收到的读命令请求读取多个数据段时,半导体存储器装置50可根据由该命令指定的逻辑块地址而从与不同的逻辑块相关联的信道的物理块读取数据。由于如上所述在读取数据时可独立地访问这些信道,因此可以响应于来自主机的请求而读出数据,并且迅速向主机发送该数据。
接下来,将参考图13描述把被写入在要经受压缩的逻辑块中的有效数据移动到空闲块的过程。半导体存储器装置50将“M=4096”设定为有效页的数目的最大值,并将“K=0”设定为位向量表中的每个逻辑块的条目的索引(步骤S40)。半导体存储器装置50通过参照位向量表而逐一地对每个逻辑块顺序地读出有效页的数目的计数器的值(步骤S41),并确定计数器的值是否小于M(步骤S42)。在有效页的数目的计数器的值等于或大于M(步骤S42中的否)的情况下,该装置前进到步骤S44。在有效页的数目的计数器的值小于M(步骤S42中的是)的情况下,半导体存储器装置50用计数器的值来替代M的值,并在步骤S41中将有效页的数目的计数器的值的读取所利用的条目的索引的值设定为K(步骤S43),并前进到步骤S44。
在步骤S44中,半导体存储器装置50确定是否已对位向量表中的所有逻辑块读出了有效页的数目的计数器的值。在对所有逻辑块读出了有效页的数目的计数器的值(步骤S44中的否)的情况下,半导体存储器装置50使K的值增加1(步骤S45)并返回到步骤S41。在步骤S41中,半导体存储器装置50按位向量表中的K的顺序读出尚未读出的逻辑块中的有效页的数目的计数器的值。相反地,在已对所有逻辑块读出了有效页的数目的计数器的值(步骤S44中的是)的情况下,半导体存储器装置50将K的值设定为作为候补的逻辑块的索引以进行在逻辑到物理转译表中的压缩(步骤S46)。如上所述,由于条目被设置为可使用逻辑到物理转译表的索引来参照位向量表,因此可以使用位向量表中的条目的索引K作为逻辑到物理转译表中的条目的索引。半导体存储器装置50对与在逻辑到物理转译表中的索引K所指示的条目的逻辑块相关联的信道CH0到CH4中的每个物理块确定其在位向量表中的位向量指示“1”的页(有效页)中所存储的数据(有效数据),并将所有有效数据读出到数据缓冲器67。半导体存储器装置50提取附加到有效数据的逻辑块地址(步骤S47)。
半导体存储器装置50以类似于如上所述响应于写命令而进行数据写入的方式写入在步骤S47中读出的每段有效数据。也就是,半导体存储器装置50以循环方式从信道CH0到CH4当中确定有效数据将被写入的信道,并将该有效数据写入由该信道中的半导体存储器元件58中的已擦除块中的写入指针指示的页。之后,半导体存储器装置50将写入指针更新为指向在该有效数据被写入的页之后的下一未写入的页。基于在信道CH0到CH4中写入的数据而计算冗余信息,并将该冗余信息写入信道CH5中。半导体存储器装置50将被附加到写入的有效数据的逻辑块地址与该有效数据被写入的页的物理块地址之间的关联性记录到正向查找表中以更新该表(步骤S48)。更新正向查找表的方法如上所述。在压缩时,通过更新正向查找表,可以使数据的逻辑块地址与物理块地址之间的关联性总是保持正常。由于逻辑块地址被附加到数据,可以在进行压缩时容易地更新逻辑块地址与数据被写入的物理块地址之间的关联性。
当完成了从数据缓冲器67读出加载到数据缓冲器67的所有有效页中的数据(步骤S49中的是)并完成了向半导体存储器元件58的写入时,半导体存储器装置50对与步骤S46中作为要进行的压缩的候补的逻辑块相关联的信道CH0到CH5中的物理块进行擦除操作,并完成压缩处理。
进行压缩处理的时机可以为例如当通过对逻辑块的构成进行检查而获得的空闲块的数目等于或小于预定数目时的时机。
如上所述,在使用多个半导体存储器元件以便即使在半导体存储器元件中的任一个发生故障时也可以对数据进行存取的配置中,基于页单位写入数据。以页单位分割大于页尺寸的数据。之后,将经分割的数据段分配到半导体存储器元件58并写入每个半导体存储器元件58中的页,以便均匀地进行对半导体存储器元件58的写操作。通过将用于被写入多个半导体存储器元件的页中的数据的冗余信息写入单个半导体存储器元件的页中,由多个半导体存储器元件的页构成错误校正码。基于页单位进行数据读取,并且,当在数据中出现异常时,认为该异常出现在该数据被写入的半导体存储器元件58中的页中,通过使用在包括异常页的半导体存储器装置以及其他半导体存储器元件构成的错误校正码而恢复数据。
通过这样的配置,相对于向多个页(在上述实例中为五个页)的数据写入,可以将与该数据对应的冗余信息的写入抑制为一个页。相比而言,在HDD的RAID中,相对于一个页的数据写入,与该数据对应的冗余信息的写入为一个页。在实施例中,可以将该冗余信息的写入抑制为1/N(在上述实例中为五分之一)。如上所述,由于在NAND型半导体存储器元件中写入次数受到限制,在抑制了写入冗余信息的次数的同时,可以改善半导体存储器装置50的可靠性。
在HDD的RAID中,当在数据中出现异常时,认为在其中存储数据的整个HDD出现故障,卸下该HDD,并利用在其中存储故障数据的HDD和其他HDD之中构成的错误校正码来恢复数据。在实施例中,即使当在数据中出现异常,也可以将其处理为作为半导体存储器元件的一部分的块或页的故障,而不是整个半导体存储器元件的故障。因此,还可以处理较小单位的错误。即使当整个半导体存储器元件出现故障,也可以利用在其中存储该故障数据的半导体存储器元件以及其他半导体存储器元件之中构成的错误校正码来恢复在该半导体存储器元件中写入的数据。因此,可以实现极高的可靠性。
通过这样的配置,即使当由于在半导体存储器元件中的故障等等而在数据中出现异常,也可以利用错误校正码恢复该数据。因此,可以改善半导体存储器装置50的可靠性,并且可以抑制受到限制的半导体存储器元件的写入次数的增加。
在实施例中,通过提供位向量表,可以高速且有效地进行压缩。为了进行压缩,半导体存储器装置50必须识别块中的有效数据被写入其中的有效页,获得对应于该有效页的逻辑块地址,移动该有效数据,并进行使该逻辑块地址与数据被移动到的页的物理块地址相关联的更新处理。可以通过正向查找表进行有效页的识别和物理块地址的更新。然而,正向查找表是通过被优化为使用逻辑块地址作为索引的搜索而构成的。因此,在进行压缩时通过正向查找表对有效页的识别和对物理块地址的更新引起搜索时间的惩罚增加。
经历了压缩的逻辑块具有所期望的小的有效页数目。其原因在于,通过使用压缩而移动有效页,获得了许多空闲块。为了选择具有小的有效页数目的逻辑块,可以选择具有其值为“1”的位向量的小数目的条目。为了对其值为“1”的位向量的数目进行计数,例如,可以提供群体(population)计算(总之,对其值为“1”的位的数目的计数)。然而,当条目的位宽度大(在该实例中为320位)时,难以计算一个周期(cycle)中的位的数目。因此,在实施例中,半导体存储器装置50根据位向量的值的改变来更新图5所示的有效页的数目的计数器的值。在检索要经历压缩的逻辑块时,通过检索在位向量表中具有有效页的计数器的最小数目的条目,获得该逻辑块。可以通过一次读取与所有逻辑块有关的条目的有效页的数目的计数器的每个值来检索其中有效页的数目的计数器的值最小的条目。因此,在实施例的半导体存储器装置50中,通过参照位向量表,可以容易地检索具有小的有效页数目的逻辑块,并且可以高速且有效地进行压缩。
上面描述了半导体存储器装置50的基本配置。接下来,将描述用于解决在半导体存储器装置50的半导体存储器元件58A到58F中的可用存储区域的容量变化的问题的配置。在上述基本配置中,当从主机接收到请求写入数据的写命令时,半导体存储器装置50在每个信道中选择一个空闲块并构成与信道CH0到CH5中的已擦除块相关联的逻辑块。然而,当每次需要逻辑块时都选择可写空闲块(物理块)而构成逻辑块时,由于NAND型的半导体存储器元件的性质,不能有效地使用物理块,这会引起性能的劣化和可靠性的降低。图14是示出在信道CH0到CH5中可用物理块的数目变化的状态的概念图。在该图中,不能被物理地使用的物理块被涂黑,并且由白色空白表示可用块。在NAND型的半导体存储器元件中,即使当在单个存储器芯片上安装了指定数目(例如,4096个)的物理块,实际上,由于制造工艺等等的影响,并不总是能使用所有的被安装的物理块,存在不可用的物理块。不可用的物理块的数目在半导体存储器元件之间变化。因此,如图14所示,存在在信道CH0到CH5中被示出为白色空白的可用物理块的数目变化的可能性。在这种状态下,当每次从各信道选择可用物理块以通过使所选择的块相关联而构成逻辑块时,可构成的逻辑块的数目受到在具有最小的可用物理块数目的信道中的可用物理块数目的限制。在图14的实例中,具有最小的可用物理块数目的信道为信道CH3。因此,在半导体存储器装置50中可构成的逻辑块的数目与信道CH3的可用物理块数目相同。在该情况下,在除了信道CH3以外的信道中,存在未被使用的可用物理块。这意味着半导体存储器装置50的可存储容量显著减小,因此,备用容量减小。如上所述,当备用容量减小时,必须频繁地进行压缩,因而对性能产生不利影响。因此,通过使除了信道CH3以外的信道中的可用物理块尽可能多地可用,可以抑制对性能的该不利影响。
在这种配置中,半导体存储器装置50在与信道CH0到CH5对应的半导体存储器元件58A到58F的每一个中存储指示出是否可以使用每一个物理块的使用状态信息。在请求写入数据的情况下,参照使用状态信息,确定规定数目或更少(第一规定数目)的半导体存储器元件58。从所确定的数目的半导体存储器元件58选择物理块以构成逻辑块。通过在所确定的数目的半导体存储器元件58中写入预定单位的数据和冗余信息,由规定的数目或更少的数据段和冗余信息构成错误校正码,所述冗余信息是通过使用规定的数目(第二规定数目)的数据段计算出的并用于校正第二规定的数目的数据段中的错误。所述第二规定数目是一个或更大,并等于或小于通过从半导体存储器元件58的所确定的数目减去在其中写入冗余信息的半导体存储器元件58的数目而获得的值。
将具体地描述这种配置。图15是示例出半导体存储器装置50的功能配置的图。如图15所示,在本配置中,半导体存储器装置50具有主机接口单元60、缓冲器控制器61、地址转译单元62、CH分配单元63、压缩候补检测器64、管理表更新单元65、NAND控制器66A到66F、数据缓冲器67、压缩读取队列68以及管理表69,另外,还具有NAND状态管理单元70和逻辑块管理单元71。NAND状态管理单元70的功能是通过由处理器51的程序执行以及分别与NAND控制器66A到66F对应的NAND控制器57A到57F的功能而实现的。逻辑块管理单元71的功能是通过由处理器51的程序执行而实现的。管理表69具有正向查找表、位向量表,另外还具有物理块表。
本配置在CH分配单元63和管理表更新单元65的功能方面不同于上述基本配置。CH分配单元63接收来自地址转译单元62的命令,并且当该命令是写命令时,请求稍后描述的逻辑块管理单元71构成逻辑块并将请求向根据该写命令而由逻辑块管理单元71确定的信道写入写目标数据的命令发送到与该信道对应的NAND控制器66。在每个信道中更新写入指针时,如果在至少一个信道中写目标数据被写入的页为物理块中的最后一页,则CH分配单元63请求逻辑块管理单元71构成新的逻辑块。
以与上述基本配置相似的方式,当从主机接收到请求写入具有指定的逻辑块地址的数据的命令(写命令)时,管理表更新单元65参照正向查找表,更新位向量表,并更新正向查找表。在本配置中,响应于来自逻辑块管理单元71的请求而更新正向查找表中的逻辑到物理转译表。管理表更新单元65根据来自稍后描述的NAND状态管理单元70的请求而将状态信息存储或更新到物理块表。
NAND状态管理单元70被连接到NAND控制器66A到66F和管理表更新单元65,分别从NAND控制器66A到66F获得半导体存储器元件58A到58F的状态,并请求管理表更新单元65将半导体存储器元件58A到58F的状态存储到物理块表中。半导体存储器元件58的状态指示出半导体存储器元件58中的所有物理块中的每一个的使用状态。物理块的使用状态或者为可以在其中写入数据的可用状态(空闲块),或者为在其中已经写入了数据且在直到进行擦除之前不能写入数据的不可用状态(使用状态),或者写入和使用是不可能的。半导体存储器元件58的状态可通过从NAND状态管理单元70向NAND控制器66发送请求或者通过来自NAND控制器66的通知而获得。优选地,在将半导体存储器转置50实际用作存储器装置之前的准备阶段获得半导体存储器元件58的状态。
物理块表存储指示出半导体存储器元件58A到58F上的每个物理块的使用状态的使用状态信息。图16是示例出物理块表的数据配置的图。如图16所示,物理块表在其中存储用于每个信道CH0到CH5的信道号码、半导体存储器元件58中的可用物理块的最大数目、在半导体存储器元件58中作为可用空闲块的物理块的数目、以及指示出在半导体存储器元件58中所有物理块中的每一个的使用状态的使用状态信息。物理块是否可被使用是由NAND状态管理单元70确定的,并且确定结果通过NAND状态管理单元70和管理表更新单元65而被存储在物理块表中作为使用状态信息。在处于可用状态的物理块中写入数据的情况下,通过管理表更新单元65相应地更新使用状态信息。
当CH分配单元63请求构成逻辑块时,逻辑块管理单元71参照物理块表而确定用于构成逻辑块的物理块的信道。具体而言,当逻辑块管理单元71参照物理块表时,以及当所有信道CH0到CH5中的每一个的可用物理块的数目大于“0”时,逻辑块管理单元71确定通过使信道CH0到CH5的物理块以与上述基本配置相似的方式相关联而构成逻辑块。此外,逻辑块管理单元71确定将冗余信息写入具有最大信道号码的信道CH5。逻辑块管理单元71对除了冗余信息被写入的信道CH5以外的信道CH0到CH4以每4KB的循环方式进行写入操作,并根据循环处理的顺序而确定数据将被写入的信道。相反地,在CH0到CH5中的至少一个中可用物理块的数目为“0”的情况下,逻辑块管理单元71确定通过使除了其可用物理块的数目为“0”的信道之外的信道的物理块相关联而构成逻辑块。例如,在其可用物理块的数目为“0”的信道为信道CH3的情况下,逻辑块管理单元71确定通过使信道CH0到CH5的物理块相关联而构成逻辑块。然后,逻辑块管理单元71确定信道当中的在构成逻辑块时所不包括的具有最大信道号码的信道CH5作为冗余信息被写入的信道,在除了冗余信息被写入的信道CH5之外的信道CH0到CH2和CH4中以每4KB的循环方式进行写入操作,并根据循环顺序确定数据被写入的信道。之后,在任何情况下,逻辑块管理单元71将请求写入该写目标数据的命令发送到CH分配单元63。逻辑块管理单元71请求管理表更新单元65进行将指定与该逻辑块相关联的信道的物理块的信息以及指定冗余信息被写入的信道的信息记录到逻辑到物理转译表中的处理。
下面将参考图17描述在本配置中正向查找表的数据配置。在本配置中的正向查找表中所包括的逻辑到物理转译表中,记录作为索引的逻辑块号码、与该逻辑块相关联的信道的物理块的地址(物理块地址)以及冗余信息被写入的信道的信道号码。
在通过使除了信道CH5之外的信道CH0到CH4中的物理块相关联而构成逻辑块的情况下,在信道CH0到CH4中具有最大信道号码的信道为信道CH4。因此,在其中冗余信息被写入具有最大信道号码的信道的本配置中,在逻辑块中冗余信息被写入的信道为信道CH4。在该情况下,逻辑块管理单元71通过管理表更新单元65将指定冗余信息被写入的信道的信道号码CH4记录到图17的逻辑到物理转译表中。
接下来,将描述在本配置中由半导体存储器装置50进行的处理的过程。首先,将参考图18描述构造物理块表的处理的过程。半导体存储器装置50通过NAND状态管理单元70的功能对每个信道进行步骤S60到S67中的处理。首先,半导体存储器装置50将将要处理的物理块的号码“i”设定为“0”(步骤S60)。半导体存储器装置50通过与将要处理的信道对应的NAND控制器66检查属于与将要处理的信道对应的半导体存储器元件58的物理块中的物理块号码“i”的物理块是否可被使用(步骤S61)。作为检查物理块是否可被使用的方法,可以使用在NAND型半导体存储器元件中确定的方法。在物理块可用的情况下(步骤S62中的是),半导体存储器装置50通过管理表更新单元65的功能存取物理块表,并在与将要处理的信道对应的半导体存储器元件58的使用状态信息中将物理块号码“i”的物理块的使用状态记录为“可用”(步骤S63)。半导体存储器装置50将使用状态信息中的可用物理块的最大号码以及作为可用且空闲的块的物理块的数目中的每一者都增加1(步骤S64)。
相反地,在将要处理的物理块不可用的情况下(步骤S62中的否),半导体存储器装置50通过管理表更新单元65的功能访问物理块表,并在与将要处理的信道对应的半导体存储器元件58的使用状态信息中将物理块号码“i”的物理块的使用状态记录为“不可用”(步骤S66)。之后,半导体存储器装置50通过NAND状态管理单元70的功能对于属于与将要处理的信道有关的半导体存储器元件58的所有物理块确定是否物理块可用,即,确定物理块号码“i”是否已达到“(半导体存储器元件58的物理块的总数)-1”(步骤S65)。在确定结果为否定的情况下(步骤S65中的否),半导体存储器装置50使物理块号码“i”增加1(步骤S67),返回到步骤S61,并确定将要处理的新物理块是否被检验为可用。在属于与将要处理的信道对应的半导体存储器元件58的所有物理块都被检验了是否可用的情况下(步骤S65中的是),半导体存储器装置50对将要处理的新信道进行步骤S60到S67中的处理。在对所有的信道都完成了步骤S60到S67中的处理的情况下,半导体存储器装置50完成该处理。结果,对于属于与每个信道对应的半导体存储器元件58的所有物理块,存储使用状态(其为可用状态或不可用状态)。之后,如下所述,在可用物理块中写入数据的情况下,通过管理表更新单元65的功能,将该物理块的使用状态更新为“使用中”。
接下来,将参考图9描述根据来自主机的写命令通过参照如上所述构造的物理块表而由半导体存储器装置50在半导体存储器元件58中写入写目标数据的过程。当在步骤S1中接收到来自主机的写命令时,半导体存储器装置50通过逻辑块管理表71的功能参照物理块表确定用于构造逻辑块的物理块的信道。在信道的使用状态信息中可用物理块和空闲块的数目的全部都大于“0”的情况下,半导体存储器装置50以与上述基本配置相似的方式确定通过使信道CH0到CH5的物理块相关联而构成逻辑块并在具有最大信道号码的信道CH5中写入冗余信息。然后,半导体存储器装置50在每个信道中保留空闲块。半导体存储器装置50将逻辑块号码赋予该逻辑块,并使用该逻辑块号码作为索引来将为每个信道保留的作为空闲块的物理块的物理块地址和冗余信息被写入的信道的信道号码记录到逻辑到物理转译表中,将这些物理块的每一个的使用状态更新为“使用中”,并通过使作为可用且空闲块的物理块的数目减小1而对其进行更新。半导体存储器装置50进行步骤S2到S11中的处理。在步骤S8中,在更新每个信道中的写入指针时,在写目标数据被写入的页为该物理块中的最后一页的情况下,半导体存储器装置50参照物理块表并构成新逻辑块。
在多次进行这样的写处理的同时,其作为可用且空闲块的物理块的数目变为“0”的信道在其他信道之前出现。具体而言,在通过使信道CH0到CH5的物理块相关联而构成逻辑块时,出现不具有可用空闲块的信道。在构成逻辑块时,在参照物理块表存在其作为可用且空闲块的物理块的数目变为“0”的信道的情况下,半导体存储器装置50确定通过使除了该信道之外的信道的物理块相关联而构成逻辑块。例如,在图14的实例中,当与具有最小可用物理块的信道CH3对应的半导体存储器元件58D的可用空闲块的数目变为“0”时,在信道CH3中不能保留空闲块。因此,在步骤S1中,半导体存储器装置50确定通过使除了信道CH3之外的信道CH0到CH2、CH4和CH5的物理块相关联而构成逻辑块。在排除了信道CH3之后,信道CH5具有最大信道号码,因此确定将冗余信息写入信道CH5。在如上所述构成逻辑块的情况下,如图17所示,半导体存储器装置50使用逻辑块号码作为索引将在信道CH0到CH2、CH4和CH5中保留的作为空闲块的物理块的物理块地址记录到逻辑到物理转译表中。如图17所示,半导体存储器装置50将构成逻辑块时未被关联的信道CH3中的物理块的物理块地址作为“-1”而记录到逻辑到物理转译表中。也就是,“-1”指示出其物理块未被用作逻辑块的信道。以与基本配置相似的方式,在恢复数据的情况下,当半导体存储器装置50参照逻辑到物理转译表并从与该逻辑块相关联的信道的物理块读取数据时,半导体存储器装置50可以确定不需要从图18所示的其物理块地址为“-1”的物理块读取数据。
即使在通过写操作排除了不具有可用空闲块的信道而构成逻辑块的情况下,半导体存储器装置50还在步骤S1之后进行步骤S2到S11中的处理。在步骤S6中,在图17的实例中,半导体存储器装置50通过循环方式在除了信道CH3之外的信道CH0、CH1、CH2和CH4中确定写目标数据将被写入的信道。在步骤S8中,半导体存储器装置50将写入指针设定为在每个信道CH0、CH1、CH2、CH4和CH5的每个物理块中指向写目标数据接下来被写入的页以及与该逻辑块相关联的每个物理块的物理块地址。在步骤S10中,半导体存储器装置50参照位向量表,对信道CH0、CH1、CH2、CH4和CH5将与在步骤S5中被存储在DRAM 54中的旧物理块地址的页对应的位向量的值设定为“0”,并使与包括该页的物理块相关联的逻辑块中的有效页的数目的计数器的值减小1。
将参考图19描述在通过使除了信道CH3之外的信道CH0、CH1、CH2、CH4和CH5的物理块相关联而构成逻辑块的情况下通过循环处理将多个经分割的数据段写入信道CH0、CH1、CH2和CH4中的物理块的情形。在图19中,为了简化该图,与图7一样地未示出被附加到经分割的数据段的逻辑块地址。假定在该逻辑块中的信道CH5中写入错误校正码。如图19所示,第一经分割的数据D1在时刻t1被写入信道CH0且下一经分割的数据D2在时刻t2被写入信道CH1。经分割的数据D3在时刻t3被写入信道CH2且经分割的数据D4在时刻t4被写入信道CH4。当经分割的数据D4在时刻t4被写入信道CH4时,计算经分割的数据D1到D4的奇偶性作为冗余信息,并且将该冗余信息P写入信道CH5中。在进一步写入经分割的数据段时,只要数据被写入逻辑块中,就在排除信道CH3的同时通过循环的方式从CH0开始顺序地写入数据。在图19的实例中,示出了随着时间的流逝顺序地将数据写入信道的状态。然而,本发明不限于该实例。数据可以被同时写入两个或更多个信道。
接下来,将参考图20描述在通过使除了信道CH3之外的信道CH0、CH1、CH2、CH4和CH5中的物理块相关联而构成逻辑块的情况下错误校正码的配置。为了简化该图,与图8一样地,未示出附加到将经分割的数据的逻辑块地址。在该逻辑块中,错误校正码被写入信道CH5中。如图20所示,对应于信道CH5的NAND控制器66F计算在信道CH0、CH1、CH2和CH4中写入目标数据中的相同偏移位置处的字节的异或,并将由此计算出的值作为冗余信息写入信道CH5的半导体存储器元件58F中的相同偏移位置中。即,错误校正码由在信道CH0、CH1、CH2、CH4和CH5中的相同偏移位置处的字节构成。
接下来,将参考图11描述根据来自主机的读命令而由半导体存储器装置50从半导体存储器元件58读取数据的处理的过程。将作为实例来描述读取如图17所示的在与排除了信道CH3的信道CH0、CH1、CH2、CH4和CH5的物理块相关联的逻辑块中写入的数据的情况。以与基本配置相似的方式,半导体存储器装置50进行步骤S20到S23中的处理。在步骤S23中,半导体存储器装置50参照逻辑到物理转译表并确定信道CH0到CH2、CH4和CH5的物理块作为将要从其中读取数据的信道的逻辑块。由于在图17所示例的逻辑到物理转译表中在信道CH3中的物理块的物理块的物理块地址中存储了“-1”,半导体存储器装置50可以确定信道CH3的物理块未与该逻辑块相关联,因此,不需要从信道CH3读取数据。之后,半导体存储器装置50进行步骤S24到S28中的处理。在步骤S28中,在读出与所确定的逻辑块相关联的其他信道的物理块中写入的其他的数据段和冗余信息时,半导体存储器装置50从除了信道CH3之外的信道读出其他条的数据和冗余信息。在与信道CH0、CH1、CH2、CH4和CH5的物理块相关联的逻辑块中,来自主机的读命令不请求从该信道读取数据,这是因为没有进行向信道CH3的物理块写入数据。在步骤S28中,在读出了其他的数据段和冗余信息之后,半导体存储器装置50通过使用所读出的其他的数据段和冗余信息来恢复错误数据。
作为实例,图21是示出在与图20所示的信道CH0、CH1、CH2、CH4和CH5的物理块相关联的逻辑块中恢复由于在信道CH2的半导体存储器元件58中发生的故障而变为异常的数据的状态的图。具体而言,半导体存储器装置50读出除了与在步骤S27中确定的逻辑块相关联的物理块即从其中读出不能被校正的错误数据的物理块之外的信道的物理块中写入的其他的数据段和冗余信息(在信道CH0、CH1和CH4中写入的数据和在信道CH5中写入的冗余信息)。半导体存储器装置50通过获得在所述其他的数据段和冗余信息中的相同偏移处的异或(即,在相同偏移位置处的字节的异或)而恢复信道CH2中的数据。半导体存储器装置50将恢复后的数据存储在数据缓冲器67中并前进到步骤S29。
将参考图13描述移动在逻辑块中写入的有效数据以进行对空闲块的压缩的过程。与上述基本配置中一样地,半导体存储器装置50进行步骤S40到S49中的处理。当半导体存储器装置50将与图17所示的除了信道CH3之外的信道CH0、CH1、CH2、CH4和CH5的物理块相关联的逻辑块设定为将要进行压缩的候补时,在步骤S47中,半导体存储器装置50为与逻辑到物理转译表中的条目的逻辑块相关联的信道CH0、CH1、CH2、CH4和CH5中的每一个物理块确定其在位向量表中的位向量示出“1”的页(有效页)中存储的数据(有效数据),并将所有有效数据加载到数据缓冲器67。具体而言,在与图17所示的除了信道CH3之外的信道CH0、CH1、CH2、CH4和CH5的物理块相关联的逻辑块中,半导体存储器装置50可以确定信道CH3的物理块不与该逻辑块相关联,因此,不需要从信道CH3读取数据,这是因为,在逻辑到物理转译表中在信道CH3的物理块的物理块地址中存储了“-1”。
通过上述配置,可以通过使数目小于预定值的信道的物理块相关联而构成逻辑块。因此,即使当半导体存储器装置50的信道中的可用物理块的数目如图14所示变化时,也可以增加可构成的逻辑块的数目。因此,可以抑制备用容量的减小。结果,可以降低进行压缩的频率,从而可以抑制半导体存储器装置50的性能的劣化。
[修改]
本发明不限于以上给出的实施例,而是可以在不偏离本发明的精神的情况下被实施为具有各种修改的实现组件。此外,通过适当地组合在实施例中公开的多个组件,本发明可以被实施为各种形式。例如,可以省略在实施例中给出的一些组件。此外,可以适当地组合不同实施例中的一些组件。另外,可以进行下面作为实例描述的各种修改。
在上述实施例中,在半导体存储器装置50中执行的各种程序可被存储在连接到网络(例如因特网)的计算机上,并通过经由该网络下载而提供这些程序。各种程序可以以可被安装或执行的文件的形式被记录在诸如CD-ROM、软盘(FD)、CD-R或数字多功能盘(DVD)的计算机可读的记录介质中,并被提供作为计算机程序产品。
在上述实施例中,可以通过硬件实现处理器51的部分功能。半导体存储器装置50可以具有多个处理器51,并且可以通过所述多个处理器51来实现上述功能。通过这样的配置,可以实现更高的处理速度。
在上述实施例中,正向查找表和位向量表被存储在DRAM 54中,但本发明不限于此。例如,这些表可以被存储在半导体存储器元件58中,并且当通过处理器51使用这些表时在DRAM 54中高速缓存这些表。
在上述实施例中,ECC码被附加到页单位的每个数据作为页ECC。然而,ECC码可被附加到小于页的单位(例如,512字节的扇区单位)。通过这样的配置,在数据中的错误不能以小于页的单位被校正的情况下,可以认为在该数据中出现异常,并通过使用由多个信道构成的错误校正码恢复该数据。
在上述实施例中,由多个信道构成错误校正码的单位被设定为字节,但本发明不限于此,可以使用比字节大或小的尺寸来作为单位。虽然使用奇偶校验码作为错误校正码,但本发明不限于奇偶校验码。可以设定多条冗余信息,并可以使用里德所罗门码。利用里德所罗门码,可以恢复其中由于在多个半导体存储器元件58中的故障而出现异常的数据。
在上述实施例中,数据被写入的信道的数目为四个,用于数据的冗余信息被写入的信道的数目为一个,构成错误校正码的信道的数目为五个,但本发明不限于此。此外,在上述实施例中,将与逻辑块相关联的物理块所存在于其中的半导体存储器元件58被连接至的信道当中的具有最大信道号码的信道设定为构成错误校正码的冗余信息被写入的信道,但本发明不限于此。该信道可被分配到每个构成错误校正码的单元。
在上述实施例中,信道一对一地对应于半导体存储器元件58,但本发明不限于此。信道可以一对多地对应于半导体存储器元件58,即,多个半导体存储器元件58可被分配到一个信道。在该情况下,用于识别各半导体存储器元件58的识别号码被分配到半导体存储器元件58。为每个信道的每个块记录识别号码和物理块地址。例如,如果向每个信道分配八个半导体存储器元件,则将总共15个位记录作为逻辑到物理转译表中的每个信道的每个块的识别号码和物理块地址,这15个位包括用于识别半导体存储器元件的3个位和用于识别包括在每个半导体存储器元件中的4096个块的12个位。
在该情况下,如图22所示,物理块表可被构造为对于每个信道包括信道号码、用于识别被分配到该信道的半导体存储器元件58的识别号码(芯片号码)、在该半导体存储器元件58中的可用物理块的最大数目、在该半导体存储器元件58中的作为可用空闲块的物理块的数目、以及在该半导体存储器元件58中的所有物理块的使用状态。虽然芯片号码和信道号码被记录在图22中的不同区域中,但只要可以通过使用半导体存储器元件58的序列号等等来确定半导体存储器元件58,就可以将它们记录在一个区域中。此外,如图23所示,在构造物理块表的处理中,NAND状态管理单元70可以对信道中的多个半导体存储器元件58中的每一个进行步骤S60到S67中的处理。
在上述实施例中,为了使逻辑到物理转译表的设置简单,希望地,将逻辑到物理转译表中的条目的数目和每个信道中的用于构成连接到该信道的半导体存储器元件的物理块的总数目设置为彼此相等。由于逻辑到物理转译表上的条目的数目和信道CH0中的物理块的数目彼此相等,因此逻辑到物理转译表可被构造为由与该逻辑块相关联的信道CH0中的物理块的物理块号码确定记录逻辑块的条目的位置。例如,以升序将物理块号码赋予构成连接到该信道的半导体存储器元件58的物理块。在该情况下,与该逻辑块相关联的信道CH0中的物理块的物理块号码可被设定为用作逻辑到物理转译表的索引的逻辑块号码。或者,可以将逻辑到物理转译表中的条目记录在列表结构中。
在上述实施例中,与逻辑块相关联的信道中的物理块的物理块地址被记录在逻辑到物理转译表中;然而,本发明不限于此。可以记录物理块号码。在逻辑到物理转译表中,在存在其物理块不与信道CH0到CH5中的逻辑块相关联的信道的情况下,将“-1”记录在该信道的物理块的物理块地址中。然而,本发明不限于该实施例。
在上述实施例中,物理块表的配置不限于上述配置。
在上述实施例中,半导体存储器装置50将逻辑块地址附加到半导体存储器元件58中的写目标数据。然而,半导体存储器装置50还可包括物理到逻辑转译表(不同于逻辑到物理转译表),其表明被写入半导体存储器元件58中的数据的作为索引的物理块地址与数据的逻辑块地址之间的关联性,而不是附加逻辑块地址。然后,在压缩时,半导体存储器装置50可以使用从半导体存储器元件58读出的有效数据的物理块地址,参照物理到逻辑转译表以获得对应于物理块地址的逻辑块地址,并使用所获得的逻辑块地址更新作为压缩的结果的正向查找表。
在上述实施例中,当将信道分配给写目标数据时,在将数据分配到信道CH0到CH3中的至少一个之后不存在写目标数据的状态持续预定时间的情况下,将在信道CH1到CH4当中的未对其分配写目标数据的信道中的对应页中的虚数据(例如,其位全为“0”的数据)以及通过使用在信道CH1到CH4中的对应页中的数据计算的冗余信息写入信道CH5中的对应页中。通过这样的结构,可以避免这样的可能性,即,没有为在信道CH0到CH4中的对应页中已写入数据的信道中的数据构成错误校正码,并且当在该数据中出现错误时,不能恢复该数据。
在上述实施例中,可以不在将半导体存储器装置50实际用作存储器装置之前,而是例如周期性地在半导体存储器装置50的操作期间或与某个事件联合地,NAND状态管理单元70获得半导体存储器元件58的状态。例如,图1所示的处理器51在其中具有计时器,在该计时器中设定合适的值,并周期性地检查半导体存储器元件58的状态。在该情况下,NAND状态管理单元70可以检查作为在物理块表的使用状态信息中的使用状态而被存储为“可用”或“使用中”的物理块是否实际处于不可用状态。作为检查物理块的使用状态的方法,以与以上相似的方式,可以使用在NAND芯片中确定的方法。对于作为检查的结果实际处于不可用状态的所确定的物理块中,NAND状态管理单元70将使用状态信息更新为使该物理块的使用状态在物理块表中位“不可用”。
此外,例如,在NAND控制器66不能向/从半导体存储器元件58中的物理块写入或擦除数据的情况下,或者在读取时利用页ECC的校正失败的情况下,通过从NAND控制器66向NAND状态管理单元70通知该事实,NAND状态管理单元70可以根据该半导体存储器元件58或该物理块中的状态改变而获得该半导体存储器元件58的状态。在该情况下,NAND状态管理单元70检查对其进行写入、擦除或利用页ECC的校正已失败的物理块是否实际不可用。在结果确定该物理块实际不可用的情况下,NAND状态管理单元70可以通过管理表更新单元65将使用状态信息更新为使在物理块表中该物理块的使用状态被设定为“不可用”。
在作为任何检查的结果确定该物理块处于不可用状态时的时刻,存在在该物理块中存储了有效数据的可能性。在该情况下,半导体存储器装置50可以对与该物理块相关联的逻辑块进行压缩。以这样的方式,将存储在该物理块中的有效数据移动到另一逻辑块。
在上述实施例中,当从主机接收到写命令并进行数据写入时,半导体存储器装置50构成逻辑块。然而,本发明不限于此。可以在例如将半导体存储器装置50实际用作存储器装置之前的准备阶段构造逻辑块。在该情况下,在构造物理块表之后,逻辑块管理单元71参照物理块表而构造逻辑块,并通过管理表更新单元65而将指示出与该逻辑块相关联的信道中的每一个物理块的信息记录到逻辑到物理转译表中。
在上述实施例中,通过从预定数目的信道获得可用物理块并使所获得的块相关联而构成逻辑块。此外,仅仅在与特定信道对应的半导体存储器元件58的物理块当中没有数据被写入其中的可用物理块的数目变为“0”之后,通过使预定数目或更少的信道的物理块相关联而构成逻辑块。然而,本发明不限于此。例如,可以通过根据可用物理块的数目间歇地使比预定数目少的信道的物理块相关联而构成逻辑块。也就是,半导体存储器装置50可以根据可用物理块的数目选择性地进行通过使预定数目的信道的物理块相关联构成逻辑块或者通过使比预定数目少的信道的物理块相关联而构成逻辑块。具体而言,例如,当在半导体存储器装置50被实际用作存储器装置之前构成物理块表时与特定信道对应的半导体存储器元件58的可用物理块的最大数目等于或大于半导体存储器元件58的物理块的总数目的三分之一且小于一半的情况下,在构成逻辑块时,在构造逻辑块时每三次中有一次不使该信道的物理块被关联。在所述最大值等于或大于总数的三分之二时,在构成逻辑块时,总是使该信道的物理块被关联。在所述最大值等于或大于总数的五分之一且小于三分之一时,在构成逻辑块时,构成逻辑块的每两次中有一次不使该信道的物理块被关联。如上所述,选择并关联信道的频率必须根据可用物理块的数目的增加/减少而增加/减少。其原因在于,可用物理块的数目在使用半导体存储器装置50时由于半导体存储器元件58的疲劳而减少。例如,考虑到半导体存储器装置50的信道中的可用物理块的数目的平衡,通过还使用在每两次中有一次不使从具有最小可用物理块数目的信道选择的物理块与从其他信道选择的物理块相关联的条件下构造逻辑块方法,必须将逻辑块配置为尽可能多。
在上述实施例中,可以调整器物理块未被用于构成逻辑块的信道的数目。例如,在如上所述具有六个信道的半导体存储器装置50中,在使所有信道中的物理块相关联的情况下,即使当一个信道被用于冗余信息,用于冗余信息的信道与用于写目标数据的信道的比率也为1∶5。然而,在逻辑块中的一个信道被用于其中存在其物理块未被用于构成逻辑块的三个信道的逻辑块中的冗余信息时,写目标数据被写入的信道仅仅为两个信道,并且用于写入冗余信息的信道的相对比率增加。这意味着冗余信息的写入对半导体存储器装置50施加的影响大。
因此,在确定其物理块将与逻辑块相关联的信道的数目时,逻辑块管理单元71通过使用半导体存储器装置50的性能来调整其物理块将不被关联的信道的数目,并调整在半导体存储器装置50中分配的信道的总数目、与在半导体存储器装置50中分配的每个信道对应的半导体存储器元件58中的可用物理块的数目的变化等等。例如,逻辑块管理单元71参照物理块表而检查分别与在半导体存储器装置50中分配的信道对应的每个半导体存储器元件58中的可用物理块的数目。在作为检查的结果与其他信道相比两个信道中的可用物理块的数目大大减少的情况下,例如以允许其物理块被关联的多至两个信道的方式调整其物理块未被使用的信道的数目。在该情况下,逻辑块管理单元71将其物理块不与逻辑块关联的信道的数目的下限调整为四个。逻辑块管理单元71通过使构成连接到四个到六个信道的半导体存储器元件58的物理块相关联而构成逻辑块。也就是,在该情况下,将被用于计算冗余信息的将要写入的数据段的数目的下限被设定为三个数据段,逻辑块管理单元71确定三到五段数据段被写入的信道,并将所确定的信道的物理块与用于写入冗余信息的信道的物理块相关联,从而构成逻辑块。
这样的配置可以防止这样的情况,即,通过不使物理块与逻辑块相关联,信道的使用效率降低,冗余信息的相对比率增大,并且半导体存储器元件58的使用效率降低。
在上述实施例中,半导体存储器装置50可以在每次构成逻辑块时都改变其物理块未被关联的信道。当不使用仅仅特定信道的物理块而构成逻辑块时,信道的使用效率降低,另外,在其他信道上的负载增加,恐怕会使半导体存储器装置50的可靠性降低。为了避免这种情况,例如,逻辑块管理单元71在不使用某信道的物理块的条件下构成逻辑块,之后,在构成新逻辑块时,在不使用除了该信道之外的信道中的任何物理块的条件下构成新逻辑块。通过在分配在半导体存储器装置50中的所有信道中改变每次构成逻辑块时其物理块不被关联的信道,分配在半导体存储器装置50中的所有信道的使用效率变为几乎相同,还可以保持可靠性。
在上述实施例中,当逻辑块管理单元71构成逻辑块时,通过参照物理块表中的可用物理块的数目来确定其物理块将被关联的信道。然而,存在其物理块可被关联的信道的数目变为一个或更少的情况。此外,为了提供作为半导体存储器装置50的令人满意的性能,考虑除了逻辑块之外还存在这样的阈值,该阈值为可用物理块的最小要求数目。在这种情况下,逻辑块管理单元71不能构成新逻辑块。在该情况下,逻辑块管理单元71会停止半导体存储器装置50的操作。为了停止半导体存储器装置50的操作,例如,图1所示的处理器51向用于控制整个半导体存储器装置50而执行的程序通知不能从逻辑块管理单元71构成逻辑块的事实并请求停止操作。如在修改例中所述,在半导体存储器装置50被实际用作存储器装置之前构成逻辑块的情况下,逻辑块管理单元71会在单元71变为不能构成新逻辑块时的时间点处完成构成逻辑块的处理。
根据上述至少一个实施例的半导体存储器装置,该半导体存储器装置包括具有可写存储区域的多个半导体存储器芯片,在所述可写存储区域中写入由信息处理设备请求写入的数据。所述数据具有预定单位的一个或多个第一数据的段,并且一个或多个所述第一数据的段包括第二数据。所述半导体存储器装置包括:确定单元,其被配置为确定所述第一数据的段将被写入的预定数目或更少的半导体存储器芯片;写控制器,其被配置为将所述第一数据的段和冗余信息写入由所述确定单元确定的半导体存储器芯片中的所述可写存储区域中,所述冗余信息是从所述第二数据计算出的且被用于校正所述第二数据中的错误;以及存储单元,其被配置为在其中存储识别信息和区域指定信息以使所述识别信息和区域指定信息彼此相关联,所述识别信息使所述第二数据和所述冗余信息相关联,并且所述区域指定信息指定所述半导体存储器芯片中的包括在所述第二数据中的所述第一数据的段和所述冗余信息将被写入的存储区域。因此,在具有多个半导体存储器芯片的半导体存储器装置中,在解决了在半导体存储器芯片中可用存储区域的容量变化的问题并抑制了向半导体存储器元件写入数据的次数的增加的同时,可以解决半导体存储器芯片中的故障,并可以改善可靠性。
虽然已经描述了特定的实施例,但这些实施例仅仅是以实例的方式给出的,并不旨在限制本发明的范围。实际上,可以以各种其他形式实施本文中描述的新颖实施例;此外,可以进行对本文中公开的实施例的形式上的各种省略、替代和改变而不偏离本发明的精神。所附权利要求及其等效物旨在覆盖落在本发明的范围和精神内的这种形式或修改。