存储控制设备、存储设备及存储控制方法与流程

文档序号:12481418阅读:225来源:国知局
存储控制设备、存储设备及存储控制方法与流程

本技术涉及一种存储控制设备。更具体的,本技术涉及一种简化对存储区域的存取的存储控制设备、一种存储设备、一种在存储控制设备中实施的存储控制方法和一种使计算机执行该方法的程序。



背景技术:

在电阻式随机存取存储器(即一种非易失性存储器)中,施加电流脉冲或电压脉冲,以改变存储器单元的电阻值并记录信息。在将单元从低电阻状态切换到高电阻状态的脉冲和将单元从高电阻状态切换到低电阻状态的脉冲之间存在电压或电流的极性和大小的差异。如果将单元切换到低电阻状态的脉冲被施加到已经在低电阻状态的单元上时,单元的性能可能会降低。同样的情况发生在处于高电阻状态的单元上。鉴于这种情况,当在这样的存储器单元上执行写入时,优选是执行这样的控制,如果在施加写入脉冲之前已经读取的单元的电流状态与被写入到单元中的值相同,则任何脉冲都不施加到单元上。当执行这样的控制时,可以延长单元的寿命,并且消除不必要的脉冲施加所消耗的电能。例如,已经建议半导体存储器设备使用相变存储器概念,所述相变存储器使用电阻的变化。为了在存储器设备上执行写入,该半导体存储器设备读取电流值,并将写入脉冲仅施加到将要写入的值与电流值不同的比特位(例如,参见专利文献1)。

引用列表

专利文献

专利文献1:日本专利申请公开号2010-244607



技术实现要素:

本发明所要解决的问题

通过上述的常规技术,在对存储器单元执行写入之前读取电流值,以避免不必要的脉冲施加。然而,在紧接着数据读取后,新数据可能会立刻写入相同地址。在这样的情况下,相同的数据在一行中读取了两次,这是不必要的操作。这种情况发生在磨损均衡(wear-leveling)和数据交换(data swapping),并且在实践中这些操作需要高速处理。

鉴于那些情况,本技术已经被开发,并且旨在当在相同地址连续执行读取和写入的时候,简化对存储区域的存取。

问题的解决方法

本技术已经开发来解决上述问题,并且其第一个方面在于存储设备,包括:存储器读取单元,读取存储在存储器阵列中的预定地址的数据,并将从所述存储器阵列读取的所述数据作为读取数据存储到读取数据保持单元中;读取数据输出单元,向请求者输出保存在所述读取数据保持单元中的所述读取数据;存储器写入单元,根据将要被写入所述存储器阵列中的写入数据和所述读取数据,在所述存储器阵列中的写入目标地址执行写入;控制单元,控制所述存储器写入单元只有在所述写入目标地址与所述预定地址匹配的时候进行操作。本技术的第一方面还在于一种存储控制方法。通过这些,有效地消除了在写入前的预读取处理的需要。

此外,在第一个方面,当发送在所述存储器阵列中的相同地址连续执行读取和写入的命令的时候,所述控制单元可以确定所述写入目标地址与所述预定地址匹配。

此外,在第一个方面,当发送向请求者输出存储在读取数据保持单元中的所述读取数据的命令的时候,所述控制单元可以确定所述写入目标地址与所述预定地址匹配。

此外,在第一个方面,当发送在没有将关于写入目标地址的新的数据存储到读取数据保持单元的情况下执行写入的命令的时候,控制单元可以确定写入目标地址与预定地址匹配。

此外,在第一个方面,控制单元可以包括地址匹配检测单元以确定所述写入目标地址是否与所述预定地址匹配,所述地址匹配检测单元可以检测所述写入目标地址和所述预定地址之间的匹配。

同时,该技术的第二个方面在于一种信息处理系统,包括:存储设备、控制向存储设备存取的请求的存储器控制器和向存储器控制器发送存储设备的存取命令的主机计算机,存储设备包括:存储器读取单元,读取存储在存储器阵列中的预定地址的数据,并将从存储器阵列读取的数据作为读取数据存储到读取数据保持单元中;读取数据输出单元,向请求者输出保存在读取数据保持单元中的读取数据;存储器写入单元,根据将要被写入存储器阵列中的写入数据和读取数据,在存储器阵列中的写入目标地址执行写入;控制单元,控制存储器写入单元只有在写入目标地址与预定地址匹配的时候进行操作。通过这些,有效地消除了在根据来自主机的请求执行写入之前的预读取处理的需求。

本发明的效果

根据本技术,当在相同地址已经成功执行读取和写入的时候,简化对存储区域的存取可以达到很好的效果。应该注意的是,本技术的效果不局限于上述效果,并且可以包括本公开中所描述的任何效果。

附图说明

图1是显示根据本技术的实施例的存储器系统示例配置的示意图。

图2是显示作为根据本技术的实施例的NVM阵列311中非易失性存储器示例的电阻式随机存取存储器的电阻状态的简图。

图3是显示根据本技术的实施例的比较器314的真值表的示例的示意图。

图4是显示根据本技术的实施例的NVM阵列311的检测操作的示例的流程图。

图5是显示根据本技术的实施例的NVM阵列311的编程操作的示例的流程图。

图6是显示根据本技术的实施例的在存储设备300中的地址空间的示例的表。

图7是显示根据本技术的实施例的在存储设备300中处理读取命令的过程的示例的流程图。

图8是显示根据本技术的实施例的在存储设备300中处理读取命令处理过程的示例的时序图。

图9是显示根据本技术的实施例的在存储设备300中处理写入命令的过程的示例的流程图。

图10是显示根据本技术的实施例的在存储设备300中处理写入命令的过程的示例的时序图。

图11是显示根据本技术的第一实施例的在存储设备300中处理RW命令的过程的示例的流程图。

图12是显示根据本技术的第一实施例的在存储设备300中处理RW命令的过程的示例的时序图。

图13是显示根据本技术的第一实施例的在将被存储器控制器200执行的命令接收处理中的过程的示例的流程图。

图14是显示根据本技术的第一实施例的在由存储器控制器200执行的命令发送处理中的过程的示例的流程图。

图15是显示根据本技术的第二实施例的在存储设备300中处理DATAOUT命令的过程的示例的流程图。

图16是显示根据本技术的第二实施例的在存储设备300中处理DATAOUT命令的过程的示例的时序图。

图17是显示根据本技术的第三实施例的在存储设备300中只处理BW命令的过程的示例的流程图。

图18是显示根据本技术的第三实施例的在存储设备300中只处理BW命令的过程的示例的时序图。

图19是显示根据本技术的第三实施例的在存储设备300中读取命令之后立即处理BW命令读取命令的过程的示例的时序图。

图20是显示根据本技术的第四实施例的读取地址检测寄存器327的示例配置的表。

图21是显示根据本技术的第四实施例的在将由存储设备300的IF320执行的处理的过程的示例的流程图。

图22是显示根据本技术的第四实施例的在高速写入处理中的过程的示例的时序图。

图23是显示根据本技术的第六实施例的在将由存储器控制器200执行的处理的过程的流程图。

图24是显示根据本技术的第七实施例的在将由存储器控制器200执行的处理过程的流程图。

实施本发明的模式

以下是对实施本技术的模式的描述(在下文中模式将称为实施例)。说明将按下面的顺序进行。

1.第一实施例(使用RW命令的示例)

2.第二实施例(使用DATAOUT命令的示例)

3.第三实施例(使用BW命令的示例)

4.第四实施例(由存储器设备进行的检测被视为触发的示例)

5.第五实施例(主机计算机发送命令的示例)

6.第六实施例(数据交换的示例应用)

7.第七实施例(刷新的示例应用)

<1.第一实施例>

[存储器系统的配置]

图1是显示根据本技术的实施例的存储器系统示例配置的示意图。需要注意的是,在这个示意图和其它示意图中,只显示了电路配置和与各个实施例相关的信号线,但存储器系统还包括其它必要的电路和信号线。

该存储器系统包括主机计算机100、存储器控制器200和一个或多个存储设备300。每个存储设备300包括接口(IF)320和一个或多个储存库(bank)310。

主机计算机100发送命令来请求将在存储设备300上执行的数据读取处理或数据写入处理。该主机计算机100通过Host_CmdAddr信号线109,连续发送指定存储器控制器200操作的命令和指示该命令的操作目标的地址。该主机计算机100还通过Host_Data信号线108向存储器控制器200执行数据发送以及从存储器控制200执行数据接收。

存储器控制器200与主机计算机100通信,以接收命令,并存取存储设备300。该存储器控制器200包括命令地址寄存器210,其暂时存储通过Host_CmdAddr信号线109接收的命令和地址。该存储器控制器200还包括暂时存储接收到的数据的数据缓冲器220。该存储器控制器200还包括状态寄存器230,其存储通过Memory_Status信号线207接收的存储设备300的内部状态。该存储器控制器200还包括执行数据错误检测和校正的ECC电路240。

该存储器控制器200通过IF_CmdAddr信号线209向存储设备300中的IF 320发送指定存储设备300的各种操作的命令和操作目标的地址。存储器控制器200然后通过IF_Data信号线208向IF 320执行数据发送以及从IF 320执行数据接收。该存储器控制器200还通过Memory_Status信号线207从IF 320接收存储设备300的内部状态,并将内部状态存储到状态寄存器230中。

每个储存库310包括非易失性存储器(NVM)阵列311、读取锁存器312、写入锁存器313和比较器314。NVM阵列311是存储数据的存储区域。该NVM阵列311具有由排列为二维或三维晶格的大量非易失性存储器单元形成的结构和控制这些存储器单元的外围电路。读取锁存器312和写入锁存器313是在存取NVM阵列311的时候暂时保存数据的电路。读取锁存器312和写入锁存器313可以由锁存电路、触发电路、SRAM等形成。比较器314由逻辑门形成,并且是比较读取锁存器312的内容和写入锁存器313的内容的电路,并且在由NVM阵列311进行脉冲施加的时候产生参考信号(Data_Set信号线317和Data_Reset信号线318)。

应该注意的是,本实施例中,虽然在存储设备300的储存库310中提供读取锁存器312、写入锁存器313和比较器314,但是这些组件可以提供在存储器控制器200中。

此外,上面描述的IF 320是权利要求的控制单元的示例,但存储器控制器200可以具有控制单元的功能。

[NVM阵列的特性]

图2是显示作为根据本技术的实施例的NVM阵列311中非易失性存储器示例的电阻式随机存取存储器的电阻状态的曲线图。

电阻式随机存取存储器的存储器单元通过设置操作切换到低电阻状态(LRS),并且通过复位操作切换到高电阻状态(HRS)。电阻的状态在低电阻状态和高电阻状态之间可逆切换从而获得可以用一个存储器单元存储1比特位的非易失性存储器。在该实施例中,例如,HRS被定义为记录“0”的状态,并且LRS被定义为记录“1”的状态。

通过向一个存储器单元的两端施加被称为设置脉冲的电压(或电流)脉冲执行设置操作。通过向存储器单元的两端施加被称为复位脉冲的电压(或电流)脉冲执行复位操作。

[比较器]

图3是显示根据本技术的实施例的比较器314的真值表的示例的示意图。在将要被写入的值(Compare_W)与已存在的值(Compare_R)相同的情况下,比较器314向Data_Set信号线317和Data_Reset信号线318都输出“0”。另一方面,在Compare_W不同于Compare_|R的情况下,如果Compare_W是1,则仅向Data_Set信号线317输出“1”,并且如果Compare_W是0,则仅向Data_Reset信号线318输出“1”。

应该注意的是,虽然比较器314的每个输入/输出是图中所示的示例中的一个比特位,但是比较器314的每个输入/输出可以是两个或更多个比特位。在这种情况下,基于上面描述的真值表的操作在每个输入/输出的各个比特位上并行执行。

[NVM阵列的操作]

根据本技术的NVM阵列311根据来自IF 320的Array_Control信号线322的值操作通过Array_Address信号线321指定的存储器单元。

NVM阵列311包括设置或复位存储器单元所必需的数据输入总线(Data_Set信号线317和Data_Reset信号线318)。NVM阵列311还包括输出从存储器单元读取的数据的总线(Read_Latch_In信号线319)。NVM阵列311还通过Array_Status信号线326通知IF 320它自己的状态。

NVM阵列311识别作为Array_Control信号线322的信号的“检测”和“编程”,并且当除了上述的其他信号被输入时什么也不做。

当Array_Status信号线326显示“就绪”时,IF 320输出作为Array_Control信号线322的信号的“检测”或“编程”。通过这样的做法,IF 320使NVM阵列311开始新的检测或新的编程操作。

当Array_Status信号线326显示表示“编程中”或“检测中”时,禁止IF 320向Array_Control信号线322输出“检测”或“编程”。

应该注意的是,Read_Latch_In信号线319是权利要求的存储器读取单元的示例。

图4是显示根据本技术的实施例的NVM阵列311的检测操作的示例的流程图。当从IF 320向Array_Control信号线322输出“检测”的时候,该检测操作开始。

首先,NVM阵列311设置Array_Status信号线326为“检测中”(步骤S911)。NVM阵列311参考输出到Array-Address信号线321的地址值(图中所示的示例中是“0”),测量在相应地址的存储器单元的电阻值,并通过比较电阻值与读取阈值确定其逻辑值(步骤S912)。以这种方式的读取的数据被输出给Read_Latch_In信号线319(步骤S913)。

NVM阵列311设置Array_Status信号线326为“就绪”,并且检测操作随后完成(步骤S914)。

图5是显示根据本技术的实施例的NVM阵列311的编程操作的示例的流程图。当“编程”从IF 320输出作为Array_Control信号的时候,该编程操作开始。例如,操作目标的地址(Array_Address)是“0”,并且已经写在地址#0的值是“0011”。此外,Data_Set信号线317设置为“0100”,并且Data_Reset信号线318设置为“0010”。

首先,NVM阵列311设置Array_Status信号线326为“编程中”(步骤S921)。然后,NVM阵列311参考Data_Set信号线317,从地址#0的比特位串中仅选择由Data_Set信号线317的值指示的比特位,并将设置脉冲施加到选中的比特位(步骤S922)。在示例中,由于Data_Set信号线317是“0100”,则只选择第二高的比特位,并且地址#0从“0011”被重新写入为“0111”。然后测量具有施加于其上的脉冲的比特位的电阻,并进行检查以确定是否读出“1”。如果由设置脉冲引起的电阻变化没有完成的,并且没有读出“1”(在步骤S923中的否),再次施加设置脉冲。

然后NVM阵列311参考Data_Reset信号线318,从地址#0的比特位串中仅选择由Data_Reset信号线318的值指示的比特位,并将复位脉冲通过与上面类似的方式施加到选定的比特位(步骤S924)。然后,进行检查,以确定是否适当地读出“0”。如果没有读出“0”(在步骤S924中的否),再次施加复位脉冲。在示例中由于Data_Reset信号线318是“0010”,只选择第三高的比特位,并且地址#0从“0111”被重新写入为“0101”。

NVM阵列311设置Array_Status信号线326为“就绪”,并且随后完成编程操作(步骤S926)。

[地址空间]

图6是显示根据本技术的实施例的在存储设备300中的地址空间的示例的表。在本实施例中,由IF_CmdAddr信号线209指示的地址包括储存库序号以及唯一地分配到储存库中NVM阵列311的各自最小存取单位的数字。例如,最小存取单位是1K字节。

地址是由总共19个比特位形成的,较高的三比特位表示储存库序号,并且较低的16个比特位表示储存库中的地址。一个存储设备300包括8个(2的立方)储存库,并且一个储存库包括65536(2的16次方)个地址。在这里,每个存储设备300的记录容量是8×65536×1K字节=512M字节。

[命令]

从存储器控制器200存取存储设备300的存取操作由读出命令、写入命令和RW命令三个命令的组合执行。下面将描述各个操作。应该注意的是,RW命令是如权利要求描述的连续执行从存储器阵列读取以及在相同地址写入的命令的示例。

图7是显示根据本技术的实施例的在存储设备300中处理读取命令的过程的示例的流程图。此外,图8是显示根据本技术的实施例的在存储设备300中处理读取命令处理的过程的示例的时序图。在本示例的情况中,由IF_CmdAddr信号线209指定的地址是在储存库#0中的地址#0。

当存储器控制器200向IF_CmdAddr信号线209输出读取命令和地址#0(在图表中用“R_A0”代表)的时候,开始读取命令的处理。首先,IF320参考储存库#0的Array_Status信号线326,并进行等待直到Array_Status信号线326的值切换为“就绪”(步骤S931和S932)。当Array_Status信号线326切换到“就绪”(在步骤S931中的“是”),IF 320向储存库#0的Array-Address信号线321输出“0”,并向Array_Control信号线322输出“检测”(在图表中用“S”代表)(步骤S933)。因此,NVM阵列311开始检测操作,并且Array_Status信号线326切换到“检测中”。

在经过一定的时间以后,从NVM阵列311读取的数据输出到Read_Latch_In信号线319,并存储到读取锁存器312中。当完成数据输出到Read_Latch_In信号线319时,Array_Status信号线326切换到“就绪”。

IF 320进行等待直到Array_Status信号线326切换到“就绪”(步骤S934和S935)。当Array_Status信号线326切换到“就绪”时(在步骤S934中的“是”),控制信号“R”输出到Latch_Control信号线323,并且存储在读取锁存器312的读取数据通过Read_Latch_Out信号线324被读取。IF320然后通过IF_Data信号线208输出读取数据到存储器控制器200(步骤S936)。

应该注意的是,Read_Latch_Out信号线324是权利要求的读取数据输出单元的示例。

图9是显示根据本技术的实施例的在存储设备300中处理写入命令的过程的示例的流程图。此外,图10是显示根据本技术的实施例的在存储设备300中处理写入命令的过程的示例的时序图。在该示例的情况中,由IF_CmdAddr信号线209指定的地址是在储存库#0中的地址#0。

当存储器控制器200将写入命令和地址#0(在图中用“W_A0”表示)输出到IF_CmdAddr信号线209的时候,开始写入命令的处理。除了发送写入命令,存储器控制器200还输出写入数据(在图中用“W_Data”表示)到IF_Data信号线208。IF 320随后将接收到的写入数据输出到储存库#0的Write_Latch_In信号线325(步骤S941)。

在写入数据输入开始的时候,IF 320参考储存库#0的Array_Status信号线326,并等待直到Array_Status信号线326的值切换到“就绪”(步骤S942和S943)。当Array_Status信号线326切换到“就绪”(在步骤S942中的“是”),IF 320输出“0”到储存库#0的Array-Address信号线321,以及输出“检测”到Array_Control信号线322(步骤S944)。因此,NVM阵列311开始检测操作,并且Array_Status信号线326切换到“检测中”。

在经过一定的时间以后,Array_Status信号线326切换到“就绪”。在该时间点上,已经完成了将从NVM阵列311读取的数据输入到读取锁存器312。IF 320进行等待直到Array_Status信号线326切换到“就绪”(步骤S945和S946)。当Array_Status信号线326切换到“就绪”(在步骤S945中的“是”),IF 320发送控制信号“C”到Latch_Control信号线323,从而指示比较器314以输出存储在读取锁存312和写入锁存器313中的数据。因此,通过检测操作获得的读取数据通过Compare_R信号线315从读取锁存器312输出,并且来自写入锁存器313的写入数据通过Compare_W信号线316输出(步骤S947)。Compare_R信号线315和Compare_W信号线316经受由比较器314执行的操作,被变成Data_Set信号线317和Data_Reset信号线318,并输入到NVM阵列311。

IF 320然后输出“编程”(在图中用“P”表示)到储存库#0的Array_Control信号线322(步骤S948)。因此,NVM阵列311开始编程操作,并且Array_Status信号线326切换到“编程中”。当编程操作完成时,Array_Status信号线326返回到“就绪”。IF 320进行等待直到Array_Status信号线326切换到“就绪”(步骤S951和S952)。当IF 320确认Array_Status信号线326已经切换到“就绪”(在步骤S951中的“是”)时,则写入命令完成。

图11是显示根据本技术的第一实施例的在存储设备300中处理RW命令的过程的示例的流程图。此外,图12是显示根据本技术的第一实施例的在存储设备300中处理RW命令的过程的示例的时序图。在该示例的情况中,由IF_CmdAddr信号线209指定的地址是储存库#0中的地址#0。

当存储器控制器200输出RW命令和地址#0(在图中由“W_A0”表示)到IF_CmdAddr信号线209的时候,开始RW命令的处理。除了发送RW命令,存储器控制器200还输出写入数据(在图中用“W_Data”表示)到IF_Data信号线208。IF 320随后输出接收到的写入数据到储存库#0的Write_Latch_In信号线325(步骤S961)。

在开始写入数据输入时间的时候,IF 320参考储存库#0的Array_Status信号线326,并且等待直到Array_Status信号线326的值切换到“就绪”(步骤S962和S963)。当Array_Status信号线326切换到“就绪”(在步骤S962中的“是”)时,IF 320输出“0”到储存库#0的Array_Address信号线321,并且输出“检测”到Array_Control信号线322(步骤S964)。因此,NVM阵列311开始检测操作,并且Array_Status信号线326切换到“检测中”。

在经过一定的时间以后,Array_Status信号线326切换到“就绪”。在该时间点上,完成将从NVM阵列311读取的数据输入到读取锁存器312。IF 320进行等待直到Array_Status信号线326切换到“就绪”(步骤S965和S966)。当Array_Status信号线326切换到“就绪”(在步骤S965中的“是”)时,控制信号“C+R”发送到Latch_Control信号线323。因此,存储在读取锁存器312和写入锁存器313的数据输出到比较器314(步骤S968),并且也输出到Read_Latch_Out信号线324。输出到Read_Latch_Out信号线324的数据是通过IF_Data信号线208从IF 320输出到存储器控制器200(步骤S967)。Compare_R信号线315和Read_Latch_Out信号线324是相互独立的,并且可以同时操作。

IF 320然后输出“编程”(在图中用“P”表示)到储存库#0的Array_Control信号线322(步骤S969)。因此,NVM阵列311开始编程操作,并且Array_Status信号线326切换到“编程中”。当编程操作完成时,Array_Status信号线326返回“就绪”。IF 320进行等待直到Array_Status信号线326切换到“就绪”(步骤S971和S972)。当IF 320确认Array_Status信号线326已经切换到“就绪”(在步骤S971中的是),RW命令完成。

如上所述,在RW命令的处理中,执行与写入命令相同的操作直到数据读出到读取锁存器312,但是存储在读取锁存器的数据不仅输出到比较器314也输出到Read_Latch_Out信号线324。因此,RW命令可以在与写入命令相同的执行时间对相同地址进行写入和读取。

应该注意的是,步骤S964是权利要求的存储器读取步骤的示例。此外,步骤S967是权利要求的读取数据输出步骤的示例。此外,步骤S969是权利要求的存储器写入步骤的示例。

[主机计算机和存储器控制器的操作]

存储器控制器200通过Host_CmdAddr信号线109从主机计算机100接收命令和地址。主机计算机100发送至少两种命令:用于将数据写入存储设备300的Host_WRITE命令和用于从存储设备300读取的Host_READ命令。在这样做时,主机计算机100发送这些命令的存取目标的地址。在发送写入命令的同时,主机计算机100还通过Host_Data信号线108输出写入数据到存储器控制器200。

图13是显示根据本技术的第一实施例的在将被存储器控制器200执行的命令接收处理中的过程的示例的流程图。每次存储器控制器200从主机计算机100收到命令,存储器控制器200就开始该流程图中显示的处理。

如果接收到的命令不是Host_WRITE命令(在步骤S981中的“否”),来自Host_CmdAddr信号线109的信号存储到命令地址寄存器210中(步骤S985)。

如果存储器控制器200接收到Host_WRITE命令(在步骤S981中的“是”),存储器控制器200接收来自Host_Data信号线108的写入数据,并将写入数据存储到数据缓冲器220(步骤S982)。然后进行检查以确定是否命令地址寄存器210包含读取命令,其指向的地址是收到的Host_WRITE命令所指向的地址。如果命令地址寄存器210不包含这些读取命令中的任意一个(在步骤S983中的“否”),写入命令和接收的地址被添加到命令地址寄存器210。如果命令地址寄存器210包含这些读取命令(在步骤S983中的“是”),指向相同地址的读取命令中的最后收到的一个被重新写入,并且变为RW命令(步骤S984)。然后,与Host_WRITE命令一起接收到的并存储到数据缓冲器220中的数据设置为对应于该RW命令的写入数据。

图14是显示根据本技术的第一实施例的在由存储器控制器200执行的命令发送处理中的过程的示例的流程图。存储器控制器200处理命令地址寄存器210中存储的指令。

存储器控制器200以规定的时间间隔从命令地址寄存器210取出最早的(或第一个添加的)命令地址(步骤S991)。然后存储器控制器200参考状态寄存器230,以确定对应于取出的地址的储存库是否是“就绪”。如果储存库不是“就绪”(在步骤S992中的“否”),存储器控制器200结束处理。如果储存库是“就绪”(在步骤S992中的“是”),将取出的命令地址发送到IF_CmdAddr信号线209(步骤S993)。如果取出的命令是写入命令或RW命令(在步骤S994中的“是”),与Host_WRITE命令一起从主机计算机100接收到的写入数据被存储在数据缓冲器220中。因此,将数据发送到IF_Data信号线208(步骤S995)。存储器控制器200从命令地址寄存器210删除最后发送的命令地址(步骤S996),并结束处理。

通过以上一系列的程序,在从主机计算机100将对应于Host_READ命令的读取命令发送到IF 320之前,存储器控制器200确定是否接收到指向相同地址的Host_WRITE命令。对于这样的Host_WRITE命令,存储器控制器200使用RW命令,从而使处理时间可以比在读取命令和写入命令相互独立地执行情况中更短。

如上所述,根据本技术的第一实施例,指向相同地址的读取命令和写入命令由RW命令代替。因此,可以以更高的速度执行处理。

<2.第二实施例>

如上所述,在第一实施例中,IF_Data信号线208是储存库之间共享的数据总线。当在一个储存库中正执行写入或读取时,另一个命令储存库可能会发送给另一个储存库。以这样的方式,可以执行并行操作。然而在第一实施例中,当在RW命令发送给一个储存库之后,读取命令或写入命令发送到另一个储存库的时候,需要避免数据冲突。具体而言,存储器控制器200需要调整命令发送间隔,从而响应RW命令的读取数据的输出和相应下一个命令的数据输入/输出不会互相冲突。特别是,在检测操作所需的时间变化的情况下,难以避免数据冲突。鉴于这种情况,第二实施例为存储设备300定义了DATAOUT命令,只用于从读取锁存器312向IF 320输出数据,并且通过结合写入命令和DATAOUT命令,使得实现与在RW命令的情况中类似的操作。应该注意的是,DATAOUT命令是权利要求中用于向请求者输出存储在读取数据保持单元中的读取数据的命令的示例。

[DATAOUT命令]

图15是显示根据本技术的第二实施例的在存储设备300中处理DATAOUT命令的过程的示例的流程图。此外,图16是显示根据本技术的第二实施例的在存储设备300中处理DATAOUT命令的过程的示例的时序图。在本示例的情况中,写入命令和DATAOUT命令二者都发送到储存库#0的地址#0。

当IF 320接收DATAOUT命令时,IF 320输出读取锁存器312的内容到存储器控制器200(步骤S811)。存储器控制器200首先发送写入命令。在通过Memory_Status信号线207检测到NVM阵列311的状态从“检测中”变化到“就绪”之后,存储器控制器200发送DATAOUT命令(在图中用“DO_A0”表示)。因此,在执行从写入锁存器313写入到NVM阵列311的同时(在Array_Status信号线326是“编程中”的同时),可以将数据从读取锁存器312输出。这就是说,可以在与写入命令相同的执行时间里执行在相同地址写入和读取,如同在使用RW命令的情况。

应该注意的是,在上述示例中,DATAOUT命令也像其它的命令一样与地址“0”一起发送,但DATAOUT命令不存取NVM阵列311,并且因此,只需要用于执行的储存库编号。鉴于这种情况,比特位串中只有指示储存库的地址的部分会被输出。

在第一实施例中,从Read_Latch_Out信号线324输出的数据在Array_Status信号线326切换到“就绪”之后立即开始。然而,在第二实施例中,读取数据的输出被稍微延迟。这是因为在第二实施例中,数据在IF 320识别DATAOUT命令之后被输出。此外,在第二实施例中,一个RW命令的功能是通过结合两个命令实现的,并且因此,比第一实施例占用更多的命令总线。

如上所述,根据本技术的第二实施例,指向相同地址的读取命令和写入命令由写入命令和DATAOUT命令的结合代替。因此,可以以更高的速度执行处理。

<3.第三实施例>

上述第一实施例是具有很大的速度增长效应的方法,因为数据可以在与写入命令相同的执行时间里输出。然而,写入数据首先输入,并且然后读取数据输出。因此,IF_Data信号线208的数据顺序是与常规情况反向的,在常规情况下,读取命令和写入命令顺序执行。因此,来自存储器控制器200的控制可能根据存储器系统的配置而变得复杂。

鉴于这种情况,第三实施例提供了用于在保持与常规情况中相同的数据输入/输出顺序的同时提高供处理速度的方法,在常规的情况下读取命令和写入命令顺序执行。具体地说,除了传统的读取命令和传统的写入命令,采用了省略在写入中首先执行的检测操作的盲写(BW)命令。

图17是显示根据本技术的第三实施例的在存储设备300中处理BW命令的过程的示例的流程图。应该注意的是,BW命令是不在相对于权利要求中的写入目标地址的读取数据保持单元中存储新数据而执行写入的命令的示例。

BW的命令的处理与处理传统的写入命令的过程相同,除了跳过了输出“检测”到Array_Control信号线322的过程和接下来的检查Array_Status信号线326的过程。即,图9所示的流程图中的步骤S944步骤至步骤S946被省略。因此,不在这里解释过程。第三实施例中,检测操作被跳过,并且将已经存储在读取锁存器312中的值输出到Compare_R信号线315。

图18是显示根据本技术的第三实施例的在存储设备300中只处理BW命令的过程的示例的时序图。此外,图19是显示根据本技术的第三实施例的在存储设备300中读取命令之后立即处理BW命令的过程的示例的时序图。

由于读取命令首先被处理,读取数据存储在读取锁存器312中。然后,在BW命令的处理中,不执行检测操作,并且已经存储在读取锁存器312中的值被用在由比较器314执行的比较中。因此,可以消除检测操作所需的处理时间。此外,处理顺序类似于常规情况,在常规情况中读取命令和写入命令顺序执行,并且因此,可以避免复杂的控制。

如上所述,根据本技术的第三实施例,指向相同地址的读取命令和写入命令由读取命令和BW命令的结合代替。因此,可以以更高的速度执行处理。

<4.第四实施例>

在上面所述的第一实施例中,存储器控制器200存储来自主机计算机100的指令,并用另一个命令代替指向相同地址的读取命令和写入命令。在第四实施例中,该过程是由存储设备300的IF 320执行的。

图20是显示根据本技术的第四实施例的读取地址检测寄存器327的示例配置的表。在IF 320中提供该读取地址检测寄存器327。一个寄存器编号被分配给每个储存库,并且读取地址检测寄存器327是存储在各个储存库中最后执行读取的地址的寄存器。在第四实施例中,该读取地址检测寄存器327用于切换写入处理的内容。

应该注意的是,读取地址检测寄存器327是权利要求的地址匹配检测单元的示例。

图21是显示根据本技术的第四实施例的由存储设备300的IF 320执行的处理的过程的示例的流程图。在该示例中,地址X属于储存库Y。

当读取命令输出到IF_CmdAddr信号线209(步骤S841中的读取),IF 320通过与传统的读取命令类似的方式执行处理(步骤在S842)。之后,将读取目标地址存储到读取地址检测寄存器327中。具体而言,在地址X属于储存库Y的情况下,在地址X执行读取处理之后,寄存器编码Y写在X上(步骤S843)。

当写入命令输出到IF_CmdAddr信号线209(步骤S841中的写入)时,对应于写入目标储存库的值从读取地址检测寄存器327读取,并与写入目标地址比较(步骤S844)。如果该值与地址匹配(在步骤S845中的“是”),IF 320通过与BW命令相似的方式执行处理(步骤S846)。另一方面,如果该值与地址不匹配(在步骤S845中的“否”),IF 320通过与传统的写入命令类似的方式执行处理(步骤S847)。在与最后读取的地址相同地址执行写入的情况下,在读取处理中执行检测操作。因此,从NVM阵列311读取的数据存储在读取锁存器312中。因此,读取锁存器312中的值可以称为没有检测操作的Compare_R信号,并可以进行正确的写入。

在通过这种方式进行写入后,NVM阵列311中的值已经被更新。即使写入命令随后发送到相同地址,读取锁存器312中的值不能继续作为Compare_R信号。因此,IF 320用无效地址初始化读取地址检测寄存器327中的值(步骤S848)。

在某些情况下,IF 320处理既不是读取命令也不是写入命令的命令(在步骤S841中的“其它”)。例如,可能是暂停存储器存取并进入低功耗状态的命令。如果有随着这样的命令在读取锁存器312中发生变化的可能(在步骤S852中的“是”),读取地址检测寄存器327被初始化(步骤S853)。因此,下一次接收到写入命令在读取锁存器312中的不正确的值不会被作为Compare_R信号线315的值而参考,。

图22是显示根据本技术的第四实施例的在高速写入处理中的过程的示例的时序图。当接收到第一读取命令(在图中由“R_A0”表示),存储目标地址“0”。在接收到指向相同地址的写入命令(在图中由“W_A0”代表)之后,不进行任何检测操作地执行写入。

如上所述,根据本技术的第四实施例,IF 320用读取命令和BW命令的结合代替指向相同地址的读取命令和写入命令。因此,可以以更高的速度执行处理。

<5.第五实施例>

在上述第一实施例中,存储器控制器200检测在指向相同地址的Host_WRITE命令之后发送的Host_READ命令,并且然后发送RW命令。另一方面,在第五实施例中,主机计算机100可以识别将要在刚刚执行读取的地址上执行的写入。在这种情况下,主机计算机100指示存储器控制器200发送RW命令。

Host_RW命令、地址和写入数据从主机计算机100传送到存储器控制器200。一收到Host_RW命令,存储器控制器200就执行图13中所示的类似的处理。具体来说,RW命令和接收地址添加到命令地址寄存器210,并且写入数据存储到数据缓冲器。之后,RW命令和数据通过图14所示的类似的过程被传送到IF 320。

应该注意的是,主机计算机100可以发送在上面的第二和第三实施例中描述的DATAOUT命令或BW命令,替代RW命令。

如上所述,根据本技术的第五实施例,主机计算机100可以识别将在刚执行读取的地址上执行的写入,并指示存储器控制器200发送RW命令等。

<6.第六实施例>

非易失性存储器只允许有限次数的重写。为了有效地延长每次改写的寿命,应该减少单元之间的重写次数的变化。为了控制非易失性存储器中的重写的寿命,数据在具有较大次数的单元和具有较少重写次数的单元之间交换。这是被称为磨损均衡(wear leveling)的处理。此外,在存储器系统中,称为交换区域的区域通常设置在地址空间中,并且主存储器中的数据被暂时保存在交换区域中。主机计算机读取保存在交换区域中的数据,并将数据写入主存储器中,并且还在交换区域中的相同地址写入新的数据。主机计算机经常执行称为数据交换的该操作。第六实施例涉及利用上述第三实施例中的BW的命令加快数据交换的方法。

图23是显示根据本技术的第六实施例的在将由存储器控制器200执行的处理的过程的流程图。主机计算机100将交换(SWAP)命令和两个作为交换目标的地址通过Host_CmdAddr信号线109发送到存储器控制器200。在这里,两个地址指示不同的储存库或不同的存储器设备。

一接收到交换命令(步骤S861),存储器控制器200就通过IF_CmdAddr信号线209向存储设备300发送指向两个地址的读取命令。如果两个地址指示相同的存储设备300(在步骤S862中的“是”),在IF_CmdAddr信号线209或IF_Data信号线208中信号可能互相冲突。因此,两个读取命令以必要的间隔发送,以避免两者之间的冲突(步骤863和S864)。另一方面,如果两个地址指示不同的存储设备300,并且IF_CmdAddr信号线209和IF_Data信号线208相互独立,没有冲突的可能,并且两个读取命令同时发送(步骤S865)。

在一定的时间过去之后,存储器控制器200接收从IF_Data信号线208输出的读取数据。存储器控制器200使数据经受由ECC电路240执行的错误检测和校正,然后将读取的数据到数据缓冲器220中(步骤S866)。在来自两个地址的读取数据存储到数据缓冲器220之后(在步骤S867中的“是”),向两个地址发送BW命令,并且执行高速写入(步骤S868)。

BW命令发送后,Memory_Status信号线207被参考(步骤S869),并进行核对以确认两个地址所属的两个储存库已经从“编程中”切换到“就绪”(步骤S871和S872)。然后处理结束了。

如上所述,根据本技术的第六实施例,BW命令可以加快数据交换。

<7.第七实施例>

在非易失性存储器中,在每次执行读取时记录的值都有轻微的变化。在读取重复一定数量次数之后,读取缺陷可能会发生。这被称为读取干扰。为了防止读取干扰,在读取执行一定次数之后,数据被重写。这被称为刷新。该刷新是通过数据读取后检测和校正错误进行的,并再次在相同地址执行写入。第七实施例涉及使用在上面第三实施例中描述的BW命令的加快刷新的方法。

图24是显示根据本技术的第七实施例的在将由存储器控制器200执行的处理过程的流程图。当存储器控制器200通过Host_CmdAddr信号线109从主机计算机100接收刷新命令和地址时,该处理中的程序过程开始。首先,通过IF_CmdAddr信号线209发送读取命令到存储设备300中由从主机计算机100接收的地址指示的地址(步骤S881)。在一定的时间过去之后,接收从IF_Data信号线208输出的读取数据,并且是读取数据接受ECC电路240的错误检测和校正(步骤S882)。ECC电路240还输出指示是否已经进行错误校正的信号。存储器控制器200接收该信号。如果尚未进行错误校正(或读取干扰没有发生,并且所有比特位被正确读取)(在步骤S883中的“否”),完成刷新处理而不采用任何动作。另一方面,如果已经进行了错误校正(或读取干扰已经发生,并且已经读取了不正确的值)(在步骤S883中的“是”),校正数据和BW命令传送到地址(步骤S884)。

BW命令传送后,Memory_Status信号线207被参考(步骤S885),并进行核对以确认储存库已经从“编程中”切换到“就绪”(步骤886和S887)。然后该过程结束。

因此,在读取锁存器312中存储的读取数据与ECC进行的误差校正相比较,并通过编程操作将写入电压仅施加给校正的比特位(比特位)。因此,读取干扰被校正。

如上所述,根据本技术的第七实施例,BW命令可以加快刷新。

应该注意的是,上述的实施例是体现了本技术的示例,并且实施例的内容对应于权利要求的主题。同样,权利要求的主题对应于与本技术的实施例中的权利要求的主题相同名字下面的内容。然而,本技术不局限于实施例,并且可以在不偏离技术范围的同时对实施例作出各种改变。

此外,在实施例中描述的处理过程可以被视为包括一系列这些过程的方法,或者可以被视为程序,用于使计算机执行一系列这些程序或存储程序的记录介质。该记录介质可以是,例如光盘(CD)、微型碟片盘(MD)、数字通用光盘(DVD),存储卡,或者Blu-ray(注册商标)盘。

应该注意的是,在本说明书中所描述的有益效果只是示例,并且本技术的有益效果可能包括其它效果。

应注意的是,本技术也可以在下面所描述的配置中体现。

(1)一种存储设备,包括:

存储设备,包括:存储器读取单元,读取存储在存储器阵列中的预定地址的数据,并将从所述存储器阵列读取的所述数据作为读取数据存储到读取数据保持单元中;

读取数据输出单元,向请求者输出保存在所述读取数据保持单元中的所述读取数据;

存储器写入单元,根据将要被写入所述存储器阵列中的写入数据和所述读取数据,在所述存储器阵列中的写入目标地址执行写入;

控制单元,控制所述存储器写入单元只有在所述写入目标地址与所述预定地址匹配的时候,进行操作。

(2)如(1)的存储设备,其中,当发送在所述存储器阵列中的相同地址连续执行读取和写入的命令的时候,所述控制单元确定所述写入目标地址与所述预定地址匹配。

(3)如(1)的存储设备,其中,当发送向请求者输出存储在读取数据保持单元中的所述读取数据的命令的时候,所述控制单元确定所述写入目标地址与所述预定地址匹配。

(4)如(1)的存储设备,其中,当发送在没有将关于所述写入目标地址的新的数据存储到所述读取数据保持单元的情况下执行写入的命令的时候,所述控制单元确定所述写入目标地址与所述预定地址匹配。

(5)如(1)的存储设备,其中,所述控制单元包括地址匹配检测单元以确定所述写入目标地址是否与所述预定地址匹配,所述地址匹配检测单元配置为检测所述写入目标地址和所述预定地址之间的匹配。

(6)一种信息处理系统,包括:存储设备、控制存取所述存储设备的请求的存储器控制器和向所述存储器控制器发送关于所述存储设备的存取命令的主机计算机,

其中,存储设备包括:

存储器读取单元,读取存储在存储器阵列中的预定地址的数据,并将从所述存储器阵列读取的所述数据作为读取数据存储到读取数据保持单元中;

读取数据输出单元,向请求者输出保存在所述读取数据保持单元中的所述读取数据;

存储器写入单元,根据将要被写入所述存储器阵列中的写入数据和所述读取数据,在所述存储器阵列中的写入目标地址执行写入;

控制单元,控制所述存储器写入单元只有在所述写入目标地址与所述预定地址匹配的时候进行操作。

(7)一种存储控制方法,包括:

存储器读取步骤,读取存储在存储器阵列中的预定地址的数据,并将从所述存储器阵列读取的所述数据作为读取数据存储到读取数据保持单元中;

读取数据输出步骤,向请求者输出保存在读取数据保持单元中的读取数据;和

存储器写入步骤,只有当所述存储器阵列中的写入目标地址与所述预定地址匹配的时候,根据将要被写入所述存储器阵列中的写入数据和所述读取数据,在所述存储器阵列中的所述写入目标地址执行写入。

参考符号列表

100 主机计算机

200 存储器控制器

210 命令地址寄存器

220 数据缓冲器

230 状态寄存器

240 ECC电路

300 存储设备

310 储存库

311 NVM阵列

312 读取锁存器

313 写入锁存器

314 比较器

327 读取地址检测寄存器

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1