会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~

存储器系统

阅读:636发布:2021-03-02

IPRDB可以提供存储器系统专利检索,专利查询,专利分析的服务。并且本发明涉及一种存储器系统,该存储器系统可包括:非易失性存储器装置;易失性存储器,临时存储写入数据;以及控制器,适于:当输入正常写入数据时,在易失性存储器中分配正常写入缓冲器;当输入被分组到第一事务中的第一写入数据和与第一事务的总大小有关的第一总大小信息时,在易失性存储器中分配第一写入缓冲器;当输入被分组到第二事务中的第二写入数据和与第二事务的总大小有关的第二总大小信息时,在易失性存储器中分配第二写入缓冲器;对第一和第二写入缓冲器的大小进行管理以分别响应于第一和第二总大小信息来改变第一和第二写入缓冲器的大小,并且对正常写入缓冲器的大小进行管理以将正常写入缓冲器的大小固定为设定大小。,下面是存储器系统专利的具体信息内容。

1.一种存储器系统,包括:

非易失性存储器装置;

易失性存储器,临时存储从主机输入的写入数据;以及

控制器:

当从所述主机输入未被分组到事务中的正常写入数据时,在所述易失性存储器中分配正常写入缓冲器,当输入被分组到第一事务中的第一写入数据和与所述第一事务的总大小有关的第一总大小信息时,在所述易失性存储器中分配第一写入缓冲器,当输入被分组到第二事务中的第二写入数据和与所述第二事务的总大小有关的第二总大小信息时,在所述易失性存储器中分配第二写入缓冲器,对所述第一写入缓冲器和所述第二写入缓冲器的大小进行管理,以分别响应于所述第一总大小信息和所述第二总大小信息来改变所述第一写入缓冲器和所述第二写入缓冲器的大小,并且对所述正常写入缓冲器的大小进行管理以将所述正常写入缓冲器的大小固定为设定大小。

2.根据权利要求1所述的存储器系统,其中所述控制器进一步:根据所述第一总大小信息来检查所述第一写入数据的第一确定大小,并且在所述易失性存储器中以所述第一确定大小的量来分配所述第一写入缓冲器,并且根据所述第二总大小信息来检查所述第二写入数据的第二确定大小,并且在所述易失性存储器中以所述第二确定大小的量来分配所述第二写入缓冲器。

3.根据权利要求2所述的存储器系统,其中所述控制器进一步:针对所述第一写入缓冲器中存储的所述第一写入数据,检查所述第一事务被提交还是被中止;

在检查到所述第一事务被提交的情况下执行第一写入操作,所述第一写入操作通过对所述第一写入缓冲器执行第一清除操作来将所述第一写入缓冲器中存储的所述第一写入数据存储在所述非易失性存储器装置中,然后释放所述易失性存储器中的所述第一写入缓冲器;并且在检查到所述第一事务被中止的情况下,释放所述易失性存储器中的所述第一写入缓冲器。

4.根据权利要求3所述的存储器系统,其中所述控制器进一步:针对所述第二写入缓冲器中存储的所述第二写入数据,检查所述第二事务被提交还是被中止;

在检查到所述第二事务被提交的情况下执行第二写入操作,所述第二写入操作通过对所述第二写入缓冲器执行第二清除操作来将所述第二写入缓冲器中存储的所述第二写入数据存储在所述非易失性存储器装置中,然后释放所述易失性存储器中的所述第二写入缓冲器;并且在检查到所述第二事务被中止的情况下,释放所述易失性存储器中的所述第二写入缓冲器。

5.根据权利要求4所述的存储器系统,其中所述控制器进一步:在检查到所述第一事务被提交的时间和检查到所述第二事务被提交的时间处于第一设定时间间隔内的情况下,使所述第一清除操作的开始时间和所述第二清除操作的开始时间同步。

6.根据权利要求5所述的存储器系统,其中当所述第一清除操作的开始时间和所述第二清除操作的开始时间同步时,所述控制器使与所述第一写入操作的完成相对应的第一确认信号传输到所述主机的时间和与所述第二写入操作的完成相对应的第二确认信号传输到所述主机的时间同步。

7.根据权利要求5所述的存储器系统,其中当生成第一确认信号的时间和生成第二确认信号的时间处于第二设定时间间隔内时,所述控制器使所述第一确认信号传输到所述主机的时间和所述第二确认信号传输到所述主机的时间同步。

8.根据权利要求4所述的存储器系统,其中:

所述控制器从所述主机接收分别对应于所述写入数据的多个写入命令,与所述写入命令相对应的各个所述写入数据的事务信息分别包括在所述写入命令中,所述写入数据中的每个的事务信息包括事物标识信息,即事务ID信息、提交信息和中止信息,与所述第一写入数据之中的、所述第一事务的开始数据相对应的写入命令中另外包括所述第一总大小信息,并且与所述第二写入数据之中的、所述第二事务的开始数据相对应的写入命令中另外包括所述第二总大小信息。

9.根据权利要求8所述的存储器系统,其中所述控制器进一步:检查各个所述写入数据的事务信息中的事务ID信息,

在检查到被分组到所述第一事务中的所述第一写入数据的事务ID信息被设定为第一值的情况下,通过在所述易失性存储器中分配所述第一写入缓冲器来存储所述第一写入数据,在检查到被分组到所述第二事务中的所述第二写入数据的事务ID信息被设定为第二值的情况下,通过在所述易失性存储器中分配所述第二写入缓冲器来存储所述第二写入数据,并且在检查到所述正常写入数据的事务ID信息未被设定并因此所述正常写入数据未被分组到事务中的情况下,通过在所述易失性存储器中分配所述正常写入缓冲器来存储所述正常写入数据。

10.一种存储器系统,包括:

非易失性存储器装置;

易失性存储器,临时存储从主机输入的写入数据;以及

控制器:

在所述易失性存储器中分配多个写入缓冲器,所述多个写入缓冲器中的每个具有定义大小,将从所述主机输入的并且未被分组到事务中的正常写入数据存储在未被设定为专用于事务的写入缓冲器中,并且当从所述主机输入被分组到第一事务中的第一写入数据和与所述第一事务的总大小有关的第一总大小信息时,根据所述第一总大小信息,针对所述第一事务设定第一专用选项,所述第一专用选项用于专有地使用所述写入缓冲器之中的至少一个第一写入缓冲器。

11.根据权利要求10所述的存储器系统,其中所述控制器进一步:在从所述主机输入所述第一写入数据的时间,检查所述写入缓冲器的各自的空白空间,根据所检查到的空白空间和所述第一总大小信息,针对所述写入缓冲器之中的最少数量的写入缓冲器设定所述第一专用选项,并且使用所述最少数量的写入缓冲器作为所述至少一个第一写入缓冲器。

12.根据权利要求11所述的存储器系统,其中所述控制器进一步:当从所述主机输入被分组到第二事务中的第二写入数据和与所述第二事务的总大小有关的第二总大小信息时,根据所述第二总大小信息,针对所述第二事务设定第二专用选项,所述第二专用选项用于专有地使用除所述第一写入缓冲器以外的剩余写入缓冲器之中的至少一个第二写入缓冲器。

13.根据权利要求12所述的存储器系统,其中所述控制器进一步:在从所述主机输入所述第二写入数据的时间,检查所述剩余写入缓冲器的各自的空白空间,根据所检查到的空白空间和所述第二总大小信息,针对所述剩余写入缓冲器之中的最少数量的写入缓冲器设定第二专用选项,并且使用所述最少数量的写入缓冲器作为所述至少一个第二写入缓冲器。

14.根据权利要求13所述的存储器系统,其中所述控制器进一步:针对所述至少一个第一写入缓冲器中存储的所述第一写入数据,检查所述第一事务被提交还是被中止,在检查到所述第一事务被提交的情况下执行第一写入操作,所述第一写入操作通过对所述至少一个第一写入缓冲器执行第一清除操作来将所述至少一个第一写入缓冲器中存储的所述第一写入数据存储在所述非易失性存储器装置中,然后针对所述至少一个第一写入缓冲器重新设定所述第一专用选项,并且在检查到所述第一事务被中止的情况下,丢弃所述至少一个第一写入缓冲器中存储的所述第一写入数据,然后针对所述至少一个第一写入缓冲器重新设定所述第一专用选项。

15.根据权利要求14所述的存储器系统,其中所述控制器进一步:针对所述至少一个第二写入缓冲器中存储的所述第二写入数据,检查所述第二事务被提交还是被中止,在检查到所述第二事务被提交的情况下执行第二写入操作,所述第二写入操作通过对所述至少一个第二写入缓冲器执行第二清除操作来将所述至少一个第二写入缓冲器中存储的所述第二写入数据存储在所述非易失性存储器装置中,然后针对所述至少一个第二写入缓冲器重新设定所述第二专用选项,并且在检查到所述第二事务被中止的情况下,丢弃所述至少一个第二写入缓冲器中存储的所述第二写入数据,然后针对所述至少一个第二写入缓冲器重新设定所述第二专用选项。

16.根据权利要求15所述的存储器系统,其中所述控制器进一步:在检查到所述第一事务被提交的时间和检查到所述第二事务被提交的时间处于第一设定时间间隔内的情况下,使所述第一清除操作的开始时间和所述第二清除操作的开始时间同步。

17.根据权利要求16所述的存储器系统,其中当所述第一清除操作的开始时间和所述第二清除操作的开始时间同步时,所述控制器使与所述第一写入操作的完成相对应的第一确认信号传输到所述主机的时间和与所述第二写入操作的完成相对应的第二确认信号传输到所述主机的时间同步。

18.根据权利要求16所述的存储器系统,其中当生成与所述第一写入操作的完成相对应的第一确认信号的时间和生成与所述第二写入操作的完成相对应的第二确认信号的时间处于第二设定时间间隔内时,所述控制器使所述第一确认信号传输到所述主机的时间和所述第二确认信号传输到所述主机的时间同步。

19.根据权利要求14所述的存储器系统,其中:

所述控制器从所述主机接收分别对应于所述写入数据的多个写入命令,与所述写入命令相对应的各个所述写入数据的事务信息分别包括在所述写入命令中,所述写入数据中的每个的事务信息包括事务标识信息,即事务ID信息、提交信息和中止信息,与所述第一写入数据之中的、所述第一事务的开始数据相对应的写入命令中另外包括所述第一总大小信息,并且与所述第二写入数据之中的、所述第二事务的开始数据相对应的写入命令中另外包括所述第二总大小信息。

20.根据权利要求19所述的存储器系统,其中所述控制器进一步:检查各个所述写入数据的事务信息中的事务ID信息,

在检查到被分组到所述第一事务中的所述第一写入数据的事务ID信息被设定为第一值的情况下,通过在所述写入缓冲器之中设定所述至少一个第一写入缓冲器来存储所述第一写入数据,在检查到被分组到所述第二事务中的所述第二写入数据的事务ID信息被设定为第二值的情况下,通过在所述剩余写入缓冲器之中设定所述至少一个第二写入缓冲器来存储所述第二写入数据,并且在检查到所述正常写入数据的事务ID信息未被设定并因此所述正常写入数据未被分组到事务中的情况下,将所述正常写入数据存储在所述写入缓冲器之中的、除所述第一写入缓冲器和所述第二写入缓冲器以外的剩余的写入缓冲器中。

说明书全文

存储器系统

[0001] 相关申请的交叉引用
[0002] 本申请要求于2018年8月27日提交的申请号为10-2018-0100118的韩国专利申请的优先权,其整体通过引用并入本文。

技术领域

[0003] 各个实施例涉及一种存储器系统,且更特别地,涉及一种存储被分组到事务中的多个写入数据的存储器系统。

背景技术

[0004] 计算机环境范例已经变为可随时随地使用的普适计算系统。因此,诸如移动电话、数码照相机和笔记本电脑的便携式电子装置的使用已经迅速增加。这些便携式电子装置通常使用具有一个或多个存储器装置的存储器系统来存储数据。存储器系统可用作便携式电子装置的主存储装置或辅助存储装置。
[0005] 因为存储器系统没有移动部件,所以它们可提供优良的稳定性、耐用性、高信息访问速度以及低功耗。具有这些优点的存储器系统的示例包括通用串行总线(USB)存储器装置、具有各种接口的存储卡和固态驱动器(SSD)。

发明内容

[0006] 各个实施例涉及一种能够高效地管理被分组到事务中的多个写入数据的存储器系统。
[0007] 在实施例中,一种存储器系统可包括:非易失性存储器装置;易失性存储器,适于临时存储从主机输入的写入数据;以及控制器,适于:当从主机输入未被分组到事务中的正常写入数据时,在易失性存储器中分配正常写入缓冲器;当输入被分组到第一事务中的第一写入数据和与第一事务的总大小有关的第一总大小信息时,在易失性存储器中分配第一写入缓冲器;当输入被分组到第二事务中的第二写入数据和与第二事务的总大小有关的第二总大小信息时,在易失性存储器中分配第二写入缓冲器;管理第一和第二写入缓冲器的大小以分别响应于第一和第二总大小信息来对第一和第二写入缓冲器的大小进行改变;并且管理正常写入缓冲器的大小以将正常写入缓冲器的大小固定为设定大小。
[0008] 控制器可进一步:根据第一总大小信息检查第一写入数据的第一确定大小,并且在易失性存储器中以第一确定大小的量来分配第一写入缓冲器,并且根据第二总大小信息检查第二写入数据的第二确定大小,并且在易失性存储器中以第二确定大小的量来分配第二写入缓冲器。
[0009] 控制器可进一步:针对第一写入缓冲器中存储的第一写入数据,检查第一事务被提交还是被中止;在检查到第一事务被提交的情况下执行第一写入操作,其中第一写入操作通过对第一写入缓冲器执行第一清除操作来将第一写入缓冲器中存储的第一写入数据存储在非易失性存储器装置中,然后释放易失性存储器中的第一写入缓冲器;并且在检查到第一事务被中止的情况下,释放易失性存储器中的第一写入缓冲器。
[0010] 控制器可进一步:针对第二写入缓冲器中存储的第二写入数据,检查第二事务是被提交还是被中止;在检查到第二事务被提交的情况下执行第二写入操作,其中第二写入操作通过对第二写入缓冲器执行第二清除操作来将第二写入缓冲器中存储的第二写入数据存储在非易失性存储器装置中,然后释放易失性存储器中的第二写入缓冲器;并且在检查到第二事务被中止的情况下,释放易失性存储器中的第二写入缓冲器。
[0011] 控制器可进一步:在检查到第一事务被提交的时间和检查到第二事务被提交的时间处于第一设定时间间隔内的情况下,使第一清除操作的开始时间和第二清除操作的开始时间同步。
[0012] 当第一清除操作的开始时间与第二清除操作的开始时间同步时,控制器可使与第一写入操作的完成相对应的第一确认信号传输到主机的时间和与第二写入操作的完成相对应的第二确认信号传输到主机的时间同步。
[0013] 当生成第一确认信号的时间和生成第二确认信号的时间处于第二设定时间间隔内时,控制器可使第一确认信号传输到主机的时间和第二确认信号传输到主机的时间同步。
[0014] 控制器可从主机接收分别与写入数据相对应的多个写入命令,写入命令中可分别包括与该写入命令相对应的各个写入数据的事务信息,写入数据中的每一个的事务信息可包括事务ID(标识)信息、提交信息和中止信息,与第一写入数据之中的、第一事务的开始数据相对应的写入命令中可另外包括第一总大小信息,并且与第二写入数据之中的、第二事务的开始数据相对应的写入命令中可另外包括第二总大小信息。
[0015] 控制器可进一步:检查各个写入数据的事务信息中的事务ID信息;在检查到被分组到第一事务中的第一写入数据的事务ID信息被设定为第一值的情况下,通过在易失性存储器中分配第一写入缓冲器来存储第一写入数据;在检查到被分组到第二事务中的第二写入数据的事务ID信息被设定为第二值的情况下,通过在易失性存储器中分配第二写入缓冲器来存储第二写入数据;并且在检查到正常写入数据的事务ID信息未被设定并因此正常写入数据未被分组到事务中的情况下,通过在易失性存储器中分配正常写入缓冲器来存储正常写入数据。
[0016] 在实施例中,一种存储器系统可包括:非易失性存储器装置;易失性存储器,适于临时存储从主机输入的写入数据;控制器,适于:在易失性存储器中分配多个写入缓冲器,多个写入缓冲器中的每一个具有定义大小,将从主机输入的并且未被分组到事务中的正常写入数据存储在未被设定为专用于事务的写入缓冲器中,并且当从主机输入被分组到第一事务中的第一写入数据和与第一事务的总大小有关的第一总大小信息时,根据第一总大小信息,针对第一事务设定第一专用选项,其中第一专用选项用于专有地使用写入缓冲器之中的至少一个第一写入缓冲器。
[0017] 控制器可进一步:在从主机输入第一写入数据的时间,检查写入缓冲器的各自的空白空间,根据检查到的空白空间和第一总大小信息,针对写入缓冲器之中的最少数量的写入缓冲器设定第一专用选项,并且使用该最少数量的写入缓冲器作为至少一个第一写入缓冲器。
[0018] 控制器可进一步:当从主机输入被分组到第二事务中的第二写入数据和与第二事务的总大小有关的第二总大小信息时,根据第二总大小信息,针对第二事务设定第二专用选项,其中第二专用选项用于专有地使用除第一写入缓冲器以外的剩余写入缓冲器之中的至少一个第二写入缓冲器。
[0019] 控制器可进一步:当从主机输入第二写入数据时,检查剩余写入缓冲器的各自的空白空间,根据检查到的空白空间和第二总大小信息,对剩余写入缓冲器之中的最少数量的写入缓冲器设定第二专用选项,并且使用该最少数量的写入缓冲器作为至少一个第二写入缓冲器。
[0020] 控制器可进一步:针对至少一个第一写入缓冲器中存储的第一写入数据,检查是提交还是中止了第一事务;在检查到第一事务被提交的情况下执行第一写入操作,其中第一写入操作通过对至少一个第一写入缓冲器执行第一清除操作来将至少一个第一写入缓冲器中存储的第一写入数据存储在非易失性存储器装置中,然后针对至少一个第一写入缓冲器重新设定第一专用选项;在检查到第一事务被中止的情况下,丢弃该至少一个第一写入缓冲器中存储的第一写入数据,然后针对该至少一个第一写入缓冲器重新设定第一专用选项。
[0021] 控制器可进一步:针对至少一个第二写入缓冲器中存储的第二写入数据,检查第二事务被提交还是被中止;在检查到第二事务被提交的情况下执行第二写入操作,其中第二写入操作通过对至少一个第二写入缓冲器执行第二清除操作来将至少一个第二写入缓冲器中存储的第二写入数据存储在非易失性存储器装置中,然后针对至少一个第二写入缓冲器重新设定第二专用选项;在检查到第二事务被中止的情况下,丢弃该至少一个第二写入缓冲器中存储的第二写入数据,然后针对该至少一个第二写入缓冲器重新设定第二专用选项。
[0022] 控制器可进一步:在检查到第一事务被提交的时间和检查到第二事务被提交的时间处于第一设定时间间隔内的情况下,使第一清除操作的开始时间和第二清除操作的开始时间同步。
[0023] 当第一清除操作的开始时间与第二清除操作的开始时间同步时,控制器可使与第一写入操作的完成相对应的第一确认信号传输到主机的时间和与第二写入操作的完成相对应的第二确认信号传输到主机的时间同步。
[0024] 当生成与第一写入操作的完成相对应的第一确认信号的时间和生成与第二写入操作的完成相对应的第二确认信号的时间处于第二设定时间间隔内时,控制器可使第一确认信号传输到主机的时间和第二确认信号传输到主机的时间同步。
[0025] 控制器可从主机接收分别对应于写入数据的多个写入命令,写入命令中可分别包括与写入命令相对应的各个写入数据的事务信息,写入数据中的每一个的事务信息可包括事务ID(标识)信息、提交信息和中止信息,与第一写入数据之中的、第一事务的开始数据相对应的写入命令可另外包括第一总大小信息,并且与第二写入数据之中的、第二事务的开始数据相对应的写入命令可另外包括第二总大小信息。
[0026] 控制器可进一步:检查各个写入数据的事务信息中的事务ID信息;在检查到被分组到第一事务中的第一写入数据的事务ID信息被设定为第一值的情况下,通过在写入缓冲器之中设定第一写入缓冲器来存储第一写入数据;在检查到被分组到第二事务中的第二写入数据的事务ID信息被设定为第二值的情况下,通过在剩余写入缓冲器之中设定至少一个第二写入缓冲器来存储第二写入数据;并且在检查到正常写入数据的事务ID信息未被设定并因此正常写入数据未被分组到事务中的情况下,将正常写入数据存储在写入缓冲器之中的、除第一和第二写入缓冲器以外的剩余的写入缓冲器中。
[0027] 在实施例中,一种存储器系统可包括:非易失性存储器装置,适于存储写入数据;易失性存储器装置,适于缓冲写入数据;以及控制器,适于控制非易失性存储器装置以通过将缓冲的写入数据清除到非易失性存储器装置中来存储写入数据。当写入数据被识别为事务数据时,控制器可根据写入数据的总大小来在易失性存储器装置内分配可变大小的第一缓冲器空间。当写入数据被识别为与事务数据不同的正常数据时,控制器可在易失性存储器装置内分配固定大小的第二缓冲器空间。
[0028] 在本技术中,当从主机输入被分组到事务中的写入数据时,在易失性存储器中分配专用的事务写入缓冲器。可将事务写入缓冲器与用于管理正常写入数据的正常写入缓冲器区分开。由此,可高效地管理事务写入数据。
[0029] 而且,在完成至少两个事务时,可在可能范围内最大程度地彼此同步执行对事务写入缓冲器的清除操作。由此,简化了确保事务数据的算法。
[0030] 此外,在清除事务写入缓冲器时,在可能范围内最大程度地同步传输到主机的确认信号。由此,在存储器系统中,将确认信号传输到主机的次数最小化。

附图说明

[0031] 图1和图2是帮助说明根据本公开的实施例的包括存储器系统的数据处理系统的配置的示图。
[0032] 图3A至图3D和图4A至图4D是帮助说明根据本公开的实施例的存储器系统的操作的示图。
[0033] 图5A至图5C是帮助说明根据本公开的实施例的存储器系统的操作的流程图。
[0034] 图6和图7是帮助说明根据本公开的另一实施例的包括存储器系统的数据处理系统的配置的示图。
[0035] 图8A至图8E和图9A至图9D是帮助说明根据本公开的另一实施例的存储器系统的操作的示图。
[0036] 图10A至图10C是帮助说明根据本公开的另一实施例的存储器系统的操作的流程图。

具体实施方式

[0037] 以下将参照附图更详细地描述各个实施例。然而,本发明可以不同形式实现,并且不应被解释为限于本文阐述的实施例。相反地,提供这些实施例以使本公开是彻底且充分的,并且将本发明的范围全面地传达给本领域技术人员。在整个公开中,相同的附图标记在本发明的各个附图和实施例中始终表示相同的部件。而且,在整个说明书中,对“实施例”、“另一实施例”、“第一实施例”、“第二实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。
[0038] <第一实施例>
[0039] 图1和图2是帮助说明根据本公开的第一实施例的包括存储器系统的数据处理系统的配置的示图。
[0040] 参照图1,数据处理系统包括主机A10和存储器系统A20。存储器系统A20包括控制器A30、第一非易失性存储器装置A40、第二非易失性存储器装置A50和第三非易失性存储器装置A60。
[0041] 作为参考,在图1和图2中,存储器系统A20中包括三个非易失性存储器装置A40、A50和A60。然而,这仅仅是示例;存储器系统中可包括多于或少于三个的非易失性存储器装置。该布置用于以下描述中,但如上所述,本发明不限于这种布置。
[0042] 主机A10将与用户请求相对应的多个命令传输到存储器系统A20,因此,存储器系统A20执行与命令相对应的操作,即执行与用户请求相对应的操作。虽然在单个存储器系统A20的情景下描述本发明的实施例,但数据处理系统可包括一个或多个存储器系统A20。
[0043] 存储器系统A20响应于主机A10的请求进行操作,特别是存储待由主机A10访问的数据。换言之,存储器系统A20可用作主机A10的主存储器装置或辅助存储器装置。根据与主机A10联接的主机接口协议,存储器系统A20可由各种存储装置中的任意一种来实现。例如,存储器系统A20可通过以下中的任意一种来实现:固态驱动器(SSD),MMC、eMMC(嵌入式MMC)、RS-MMC(缩小尺寸的MMC)和微型-MMC形式的多媒体卡,SD、迷你-SD和微型-SD形式的安全数字卡,通用串行总线(USB)存储装置,通用闪存(UFS)装置,紧凑式闪存(CF)卡,智能媒体卡,记忆棒等。
[0044] 存储器系统A20可集成到一个半导体装置中并配置存储卡。例如,存储器系统A20可配置诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)卡,紧凑式闪存(CF)卡,SM和SMC形式的智能媒体卡,记忆棒,MMC、RS-MMC和微型-MMC形式的多媒体卡,SD、迷你-SD、微型-SD和SDHC形式的安全数字卡,和/或通用闪存(UFS)装置。
[0045] 又例如,存储器系统A20可配置计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航装置、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、配置数据中心的存储装置、能够在无线环境下传输和接收信息的装置、配置家庭网络的各种电子装置之一、配置计算机网络的各种电子装置之一、配置远程信息处理网络的各种电子装置之一、RFID(射频识别)装置或配置计算系统的各种组件之一。
[0046] 存储器系统A20可包括诸如易失性存储器装置或者非易失性存储器装置的存储装置,其中易失性存储器装置诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM),非易失性存储器装置诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)和/或闪速存储器。
[0047] 存储器系统A20包括易失性存储器144,用于临时存储从主机A10输入的写入数据WDATA。
[0048] 响应于从主机A10输入的、未被分组到事务中的正常写入数据NMAL_WDATA,控制器A30在易失性存储器144中分配正常写入缓冲器A31。
[0049] 当从主机A10输入了被分组到第一事务中的第一写入数据TRAN_WDATA1和与第一事务的总大小有关的第一总大小信息TTSIZE1时,控制器A30在易失性存储器144中分配第一写入缓冲器A32。
[0050] 当从主机A10输入了被分组到第二事务中的第二写入数据TRAN_WDATA2和与第二事务的总大小有关的第二总大小信息TTSIZE2时,控制器A30在易失性存储器144中分配第二写入缓冲器A33。
[0051] 写入数据WDATA被分组到事务中的事实表示写入数据WDATA之中的用于相同目的的多个写入数据WDATA被分组到一个事务中。
[0052] 例如,在数据库中,用于校正、添加和更新已存储数据的数据可根据它们各自的用途而被分组到各个事务中。在这方面,用于校正数据库的数据可被分组到一个事务组中,而用于添加数据库的数据可被分组到另一事务组中。
[0053] 因此,当被分组到一个事务中的写入数据TRAN_WDATA1或TRAN_WDATA2从主机A10传输到控制器A30时,仅存在提交状态或中止状态,在提交状态中,所有写入数据TRAN_WDATA1或TRAN_WDATA2都被正常地传输和存储并因此是有效的,而在中止状态中,写入数据TRAN_WDATA1或TRAN_WDATA2中的任意一个或两者未被正常地传输和存储,或者根据主机A10的中止请求,所有写入数据TRAN_WDATA1或TRAN_WDATA2都是无效的。也就是说,被分组到一个事务中的写入数据TRAN_WDATA1或TRAN_WDATA2仅在处于提交状态时,它们才是有意义的,因为所有这些数据都被正常地传输和存储并因此都是有效的。
[0054] 例如,为了使从主机A10传输到控制器A30的写入数据WDATA之中的、被分组到第一事务中的第一写入数据TRAN_WDATA1在控制器A30中被检查为提交状态,所有多个第一写入数据TRAN_WDATA1都应当被正常地从主机A10传输到控制器A30,并且被完全地存储在控制器A30中,同时,不应当存在来自主机A10的中止请求。如果即使多个第一写入数据TRAN_WDATA1中的任意一个未被正常地传输和存储,或者从主机A10接收到中止请求,则在控制器A30中,所有的第一写入数据TRAN_WDATA1都被检查为中止状态。
[0055] 类似地,为了使从主机A10传输到存储器系统A20的写入数据WDATA之中的、被分组到第二事务中的第二写入数据TRAN_WDATA2在存储器系统A20中被检查为提交状态,所有多个第二写入数据TRAN_WDATA2都应当被正常地从主机A10传输到存储器系统A20,并且被完全地存储在存储器系统A20中,同时,不应当存在来自主机A10的中止请求。如果即使多个第二写入数据TRAN_WDATA2中的任意一个未被正常传输和存储,或者从主机A10发出了中止请求,则在存储器系统A20中,所有的第二写入数据TRAN_WDATA2都被检查为中止状态。
[0056] 作为参考,通过如上所述的将被分组到事务中的写入数据TRAN_WDATA1或TRAN_WDATA2分类为提交状态或中止状态来对它们进行管理的操作,通常可被称为确保事务操作。
[0057] 在图1中不使用实线而是使用虚线来示出分配在控制器A30的易失性存储器144中的正常写入缓冲器A31的原因在于:当从主机A10输入正常写入数据NMAL_WDATA时,控制器A30才分配正常写入缓冲器A31。也就是说,在未从主机A10输入正常写入数据NMAL_WDATA的情况下,控制器A30可不在易失性存储器144中分配正常写入缓冲器A31。
[0058] 类似地,在图1中不使用实线而是使用虚线来示出分配在控制器A30的易失性存储器144中的第一写入缓冲器A32的原因在于:当从主机A10输入被分组到第一事务中的第一写入数据TRAN_WDATA1时,控制器A30才分配第一写入缓冲器A32。也就是说,在未从主机A10输入被分组到第一事务中的第一写入数据TRAN_WDATA1的情况下,控制器A30可不在易失性存储器144中分配第一写入缓冲器A32。
[0059] 类似地,在图1中不使用实线而是使用虚线来示出在控制器A30的易失性存储器144中分配的第二写入缓冲器A33的原因在于:当从主机A10输入被分组到第二事务中的第二写入数据TRAN_WDATA2时,控制器A30才分配第二写入缓冲器A33。也就是说,在未从主机A10输入被分组到第二事务中的第二写入数据TRAN_WDATA2的情况下,控制器A30可不在易失性存储器144中分配第二写入缓冲器A33。
[0060] 控制器A30在易失性存储器144中分配被固定为设定或预设大小的正常写入缓冲器A31,然后将从主机A10输入的正常写入数据NMAL_WDATA存储在正常写入缓冲器A31中。
[0061] 第一写入缓冲器A32的大小可根据第一总大小信息TTSIZE1而变化。
[0062] 换言之,响应于从主机A10输入的被分组到第一事务中的第一写入数据TRAN_WDATA1和第一总大小信息TTSIZE1,控制器A30检查用于第一写入数据TRAN_WDATA1的第一确定大小并且在易失性存储器144中以第一确定大小的量分配第一写入缓冲器A32。
[0063] 因此,第一写入缓冲器A32的大小可取决于第一总大小信息TTSIZE1。
[0064] 例如,如果在第一时间响应于第一总大小信息TTSIZE1检查到第一确定大小为“5”,则控制器A30在第一时间在易失性存储器144中分配能够存储五段第一写入数据TRAN_WDATA1的存储器区域,并将该存储器区域作为第一写入缓冲器A32进行管理。
[0065] 又例如,如果在除第一时间之外的第二时间响应于第一总大小信息TTSIZE1检查到第一确定大小为“3”,则控制器A30在第二时间在易失性存储器144中分配能够存储三段第一写入数据TRAN_WDATA1的存储器区域,并将该存储器区域作为第一写入缓冲器A32进行管理。
[0066] 进一步地,第二写入缓冲器A33的大小可根据第二总大小信息TTSIZE2而变化。
[0067] 换言之,响应于从主机A10输入的被分组到第二事务中的第二写入数据TRAN_WDATA2和第二总大小信息TTSIZE2,控制器A30检查用于第二写入数据TRAN_WDATA2的第二确定大小并且在易失性存储器144中以第二确定大小的量分配第二写入缓冲器A33。
[0068] 因此,第二写入缓冲器A33的大小可取决于第二总大小信息TTSIZE2。
[0069] 例如,如果在第三时间响应于第二总大小信息TTSIZE2检查到第二确定大小为“6”,则控制器A30在第三时间在易失性存储器144中分配能够存储六段第二写入数据TRAN_WDATA2的存储器区域,并将该存储器区域作为第二写入缓冲器A33进行管理。
[0070] 又例如,如果在除第三时间之外的第四时间响应于第二总大小信息TTSIZE2检查到第二确定大小为“4”,则控制器A30在第四时间在易失性存储器144中分配能够存储四段第二写入数据TRAN_WDATA2的存储器区域,并将该存储器区域作为第二写入缓冲器A33进行管理。
[0071] 参照图2,示出了上面参照图1描述的存储器系统A20的详细配置。
[0072] 首先,存储器系统A20中包括的控制器A30响应于来自主机A10的请求控制第一至第三非易失性存储器装置A40、A50和A60。例如,控制器A30将从第一至第三非易失性存储器装置A40、A50和A60读取的数据提供到主机A10,并且将从主机A10提供的数据存储在第一至第三非易失性存储器装置A40、A50和A60中。为此,控制器A30控制第一至第三非易失性存储器装置A40、A50和A60的操作,诸如读取操作、写入操作、编程操作和擦除操作。
[0073] 详细地,存储器系统A20中包括的控制器A30包括主机接口(HOST INTERFACE)132、处理器(PROCESSOR)134、存储器144、第一存储器接口(MEMORY INTERFACE1)B10、第二存储器接口(MEMORY INTERFACE2)B20和第三存储器接口(MEMORY INTERFACE3)B30。
[0074] 主机接口132执行交换待在控制器A30与主机A10之间传输的命令和数据的操作,并且可被配置成通过诸如以下的各种接口协议中的至少一种来与主机A10通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-E)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)和MIPI(移动工业处理器接口)。主机接口32可通过被称为主机接口层(HIL)的固件来驱动,作为与主机A10交换数据的区域。
[0075] 第一至第三存储器接口B10、B20和B30用作执行控制器A30与第一至第三非易失性存储器装置A40、A50和A60之间的接口连接的存储器/存储接口,以允许控制器A30响应于来自主机A10的请求来控制各个第一至第三非易失性存储器装置A40、A50和A60。在第一至第三非易失性存储器装置A40、A50和A60中的每一个都是闪速存储器,特别是NAND闪速存储器的情况下,第一至第三存储器接口B10、B20和B30中的每一个在处理器134的控制下生成用于控制第一至第三非易失性存储器装置A40、A50和A60中的每一个的控制信号,并且作为NAND闪存控制器(NFC)处理数据。
[0076] 第一至第三存储器接口B10、B20和B30中的每一个可支持在控制器A30和第一至第三非易失性存储器装置A40、A50和A60中的每一个之间处理命令和数据的接口,例如NAND闪存接口的操作,特别是支持控制器A30与第一至第三非易失性存储器装置A40、A50和A60中的每一个之间的数据输入/输出,并且第一至第三存储器接口B10、B20和B30中的每一个可通过被称为闪存接口层(FIL)的固件来驱动,作为与第一至第三非易失性存储器装置A40、A50和A60中的每一个交换数据的区域。
[0077] 作为存储器系统A20和控制器A30的工作存储器的存储器144存储用于驱动存储器系统A20和控制器A30的数据。详细地,当控制器A30响应于来自主机A10的请求控制第一至第三非易失性存储器装置A40、A50和A60时,例如,当控制器A30控制第一至第三非易失性存储器装置A40、A50和A60的诸如读取操作、写入操作、编程操作和擦除操作的操作时,存储器144临时存储应当进行管理的数据。
[0078] 存储器144可通过易失性存储器来实现。例如,存储器144可通过静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实现。
[0079] 存储器144可设置在控制器A30内部,如图2所示,或者可设置在控制器A30外部。在存储器144设置在控制器A30外部的情况下,存储器144应当由外部易失性存储器来实现,其中数据通过单独的存储器接口(未示出)从控制器A30输入到该外部易失性存储器,并且从该外部易失性存储器输出到控制器A30。
[0080] 存储器144存储在控制第一至第三非易失性存储器装置A40、A50和A60的操作的过程中应当进行管理的数据。对于这种数据存储,存储器144可包括程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
[0081] 图2中描述的存储器144对应于上面参照图1描述的易失性存储器144。在这方面,上面参照图1描述的易失性存储器144仅用作图2中描述的存储器144的角色之中的写入缓冲器的角色。因此,如上面针对图1中的易失性存储器144所述,图2所示的存储器144包括正常写入缓冲器A31、第一写入缓冲器A32和第二写入缓冲器A33。
[0082] 响应于来自主机A10的写入请求或读取请求,处理器134控制控制器A30的操作,特别是控制对第一至第三非易失性存储器装置A40、A50和A60的编程操作或读取操作。处理器134驱动被称为闪存转换层(FTL)的固件,以控制控制器A30对第一至第三非易失性存储器装置A40、A50和A60的一般操作。处理器134可通过微处理器或中央处理单元(CPU)来实现。
[0083] 例如,通过处理器134,控制器A30在第一至第三非易失性存储器装置A40、A50和A60中执行从主机A10请求的操作,即,利用第一至第三非易失性存储器装置A40、A50和A60来执行与从主机A10接收的命令相对应的命令操作。控制器A30可执行例如以下的前台操作作为与从主机A10接收的命令相对应的命令操作:与写入命令相对应的编程操作、与读取命令相对应的读取操作、与擦除命令相对应的擦除操作、或者与作为设置命令的设置参数命令或设置特征命令相对应的参数设置操作。
[0084] 控制器A30可通过处理器134对第一至第三非易失性存储器装置A40、A50和A60执行后台操作。对第一至第三非易失性存储器装置A40、A50和A60的后台操作可包括将第一至第三非易失性储器装置A40、A50和A60中的存储块MEMORY BLOCK<0,1,2,……>之中的存储块中存储的数据复制到另一存储块的操作,例如垃圾收集(GC)操作。对第一至第三非易失性存储器装置A40、A50和A60的后台操作可包括在第一至第三非易失性存储器装置A40、A50和A60中的存储块MEMORY BLOCK<0,1,2,……>之中交换存储的数据的操作,例如损耗均衡(WL)操作。对第一至第三非易失性存储器装置A40、A50和A60的后台操作可包括将控制器A30中存储的映射数据存储在第一至第三非易失性存储器装置A40、A50和A60中的存储块MEMORY BLOCK<0,1,2,……>中的操作,例如映射清除操作。对第一至第三非易失性存储器装置A40、A50和A60的后台操作可包括对第一至第三非易失性存储器装置A40、A50和A60的坏块管理操作,例如,检查和处理第一至第三非易失性存储器装置A40、A50和A60中包括的多个存储块MEMORY BLOCK<0,1,2,……>之中的坏块。
[0085] 控制器A30可通过处理器134,对应于访问第一至第三非易失性存储器装置A40、A50和A60中的存储块MEMORY BLOCK<0,1,2,……>的操作来生成和管理日志数据。访问第一至第三非易失性存储器装置A40、A50和A60中的存储块MEMORY BLOCK<0,1,2,……>的操作包括对第一至第三非易失性存储器装置A40、A50和A60中的存储块MEMORY BLOCK<0,1,2,……>执行前台操作或后台操作。
[0086] 在控制器A30的处理器134中,可包括用于对第一至第三非易失性存储器装置A40、A50和A60执行坏块管理的单元(未示出)。这种单元执行坏块管理,坏块管理包括识别第一至第三非易失性存储器装置A40、A50和A60中包括的多个存储块MEMORY BLOCK<0,1,2,……>之中的坏块,并且将识别出的坏块作为坏的处理。坏块管理表示,在第一至第三非易失性存储器装置A40、A50和A60是闪速存储器,例如NAND闪速存储器的情况下,因为当写入数据,例如编程数据时,由于NAND闪速存储器的特性可能出现编程失败,所以将已经出现编程失败的存储块作为坏的处理,并且将编程失败的数据写入(即,编程)到新的存储块中。
[0087] 控制器A30通过处理器134执行传输待在控制器A30与第一至第三非易失性存储器装置A40、A50和A60之间输入/输出的命令和数据的操作。待在控制器A30与第一至第三非易失性存储器装置A40、A50和A60之间输入/输出的命令和数据可从主机A10传输到控制器A30,或者可在控制器A30内部生成。
[0088] 控制器A30可通过上述的处理器134、主机接口132和存储器144执行以下操作:检查从主机A10输入的写入数据WDATA是否被分组到事务中,从而分类为未被分组到事务中的正常写入数据NMAL_WDATA与被分组到事务中的第一写入数据TRAN_WDATA1和第二写入数据TRAN_WDATA2。
[0089] 而且,控制器A30可通过上述的处理器134、主机接口132和存储器144执行以下操作:在存储器144中分配正常写入缓冲器A31,用于临时存储未被分组到事务中的正常写入数据NMAL_WDATA。
[0090] 此外,控制器A30可通过上述的处理器134、主机接口132和存储器144执行以下操作:检查与被分组到第一事务中的第一写入数据TRAN_WDATA1一起输入的第一总大小信息TTSIZE1,从而在存储器144中分配第一写入缓冲器A32,用于临时存储第一写入数据TRAN_WDATA1。
[0091] 另外,控制器A30可通过上述的处理器134、主机接口132和存储器144执行以下操作:检查与被分组到第二事务中的第二写入数据TRAN_WDATA2一起输入的第二总大小信息TTSIZE2,从而在存储器144中分配第二写入缓冲器A33,用于临时存储第二写入数据TRAN_WDATA2。
[0092] 即使没有供电,存储器系统A20中的第一至第三非易失性存储装置A40、A50和A60也可保留存储的数据。特别地,存储器系统A20中的第一至第三非易失性存储器装置A40、A50和A60可通过写入操作存储从主机A10提供的写入数据WDATA,并且可通过读取操作将所存储的读取数据(未示出)提供到主机A10。
[0093] 虽然第一至第三非易失性存储器装置A40、A50和A60可由诸如闪速存储器(例如,NAND闪速存储器)的非易失性存储器来实现,但应当注意的是,第一至第三非易失性存储器装置A40、A50和A60可由诸如以下的存储器之中的任意一种存储器来实现:相变存储器(相变随机存取存储器(PCRAM))、电阻式存储器(电阻式随机存取存储器(RRAM(ReRAM)))、铁电存储器(铁电随机存取存储器(FRAM))和自旋转移力矩磁性存储器(STT-RAM:自旋转移力矩磁性随机存取存储器(STT-MRAM))。
[0094] 第一至第三非易失性存储器装置A40、A50和A60包括多个存储块MEMORY BLOCK<0,1,2,……>。换言之,第一至第三非易失性存储器装置A40、A50和A60可通过写入操作将从主机A10提供的写入数据WDATA存储在存储块MEMORY BLOCK<0,1,2,……>中,并且可通过读取操作将存储块MEMORY BLOCK<0,1,2,……>中存储的读取数据(未示出)提供到主机A10。
[0095] 第一至第三非易失性存储器装置A40、A50和A60中包括的存储块MEMORY BLOCK<0,1,2,……>中的每一个包括多个页面P<0,1,2,3,4,……>。而且,虽然未在附图中详细示出,但页面P<0,1,2,3,4,……>中的每一个包括多个存储器单元。
[0096] 根据存储块中包括的一个存储器单元中可存储或表达的位的数量,第一至第三非易失性存储器装置A40、A50和A60中包括的存储块MEMORY BLOCK<0,1,2,……>中的每一个可以是单层单元(SLC)存储块或多层单元(MLC)存储块。SLC存储块包括由每个存储1位的存储器单元实现的多个页面,并且具有优异的数据计算性能和高耐久性。MLC存储块包括由每个存储多位数据(例如,2位或更多位)的存储器单元实现的多个页面,并且因为具有比SLC存储块更大的数据存储空间,所以MLC存储块可比SLC存储块更高度地集成。
[0097] 特别地,MLC存储块可以是MLC存储块、三层单元(TLC)存储块、四层单元(QLC)存储块或多层单元存储块,其中MLC存储块包括由每个能够存储2位数据的存储器单元实现的多个页面,TLC存储块包括由每个能够存储3位数据的存储器单元实现的多个页面,QLC存储块包括由每个能够存储4位数据的存储器单元实现的多个页面,多层单元存储块包括由每个能够存储5位或更多位数据的存储器单元实现的多个页面。
[0098] 图3A至图3D和图4A至图4D是帮助说明根据本公开的第一实施例的存储器系统的操作的示图。
[0099] 首先,下面将描述控制器A30将从主机A10输入的写入数据WDATA分类为正常写入数据NMAL_WDATA、第一写入数据TRAN_WDATA1和第二写入数据TRAN_WDATA2的方案。
[0100] 详细地,当从主机A10向存储器系统A20输入写入数据WDATA时,一起输入了分别对应于写入数据WDATA的段或项的写入命令(未示出),以及分别包括在写入命令中的写入数据WDATA的事务信息(未示出)。
[0101] 在写入数据WDATA中的每一个的事务信息中,可包括事务ID(标识)信息TRID、事务提交信息(未示出)和事务中止信息(未示出)。
[0102] 因此,存储器系统A20中包括的控制器A30可检查写入命令中包括的事务信息中的事务ID信息TRID,从而可将未被分组到事务中的写入数据WDATA分类为正常写入数据NMAL_WDATA或被分组到事务中的写入数据WDATA分类为事务写入数据TRAN_WDATA1或TRAN_WDATA2。
[0103] 例如,控制器A30可将从主机A10输入的写入数据WDATA之中的、事务ID信息TRID具有值1的写入数据WDATA分类为第一写入数据TRAN_WDATA1。
[0104] 类似地,控制器A30可将从主机A10输入的写入数据WDATA之中的、事务ID信息TRID具有值2的写入数据WDATA分类为第二写入数据TRAN_WDATA2。
[0105] 此外,控制器A30可将从主机A10输入的写入数据WDATA之中的、事务ID信息TRID未被设定为任何值的写入数据WDATA分类为正常写入数据NMAL_WDATA。
[0106] 作为参考,事务ID信息TRID未被设定为任何值的事实可表示:将事务ID信息TRID设定为定义初始值或作为事务ID信息无意义的值的情况。
[0107] 在与被分组到事务中的写入数据TRAN_WDATA1或TRAN_WDATA2的开始数据相对应的第一写入命令或第二写入命令中,还另外包括与写入数据TRAN_WDATA1或TRAN_WDATA2的总大小有关的总大小信息TTSIZE1或TTSIZE2。
[0108] 例如,在与被分组到第一事务中的第一写入数据TRAN_WDATA1的开始数据相对应的第一写入命令中,还另外包括与第一写入数据TRAN_WDATA1的总大小有关的第一总大小信息TTSIZE1。
[0109] 由于这个事实,控制器A30可在从主机A10输入第一写入数据TRAN_WDATA1之中的将首先输入的开始数据之前,通过检查第一写入命令来检查第一总大小信息TTSIZE1。
[0110] 也就是说,控制器A30可在从主机A10输入第一写入数据TRAN_WDATA1之前通过检查第一总大小信息TTSIZE1来检查第一写入数据TRAN_WDATA1的第一确定大小,并且可在易失性存储器144中以该第一确定大小的量来分配第一写入缓冲器A32。
[0111] 因此,控制器A30可在易失性存储器144中将第一确定大小的存储器区域分配为第一写入缓冲器A32,然后可将第一写入数据TRAN_WDATA1存储在第一写入缓冲器A32中。
[0112] 类似地,在与被分组到第二事务中的第二写入数据TRAN_WDATA2的开始数据相对应的第二写入命令中,还另外包括与第二写入数据TRAN_WDATA2的总大小有关的第二总大小信息TTSIZE2。
[0113] 由于这个事实,控制器A30可在从主机A10输入第二写入数据TRAN_WDATA2之中的将首先输入的开始数据之前,通过检查第二写入命令来检查第二总大小信息TTSIZE2。
[0114] 也就是说,控制器A30可在从主机A10输入第二写入数据TRAN_WDATA2之前通过检查第二总大小信息TTSIZE2来检查该第二写入数据TRAN_WDATA2的第二确定大小,并且可在易失性存储器144中以第二确定大小的量来分配第二写入缓冲器A33。
[0115] 因此,控制器A30可在易失性存储器144中将第二确定大小的存储器区域分配为第二写入缓冲器A33,然后可将第二写入数据TRAN_WDATA2存储在第二写入缓冲器A33中。
[0116] 如上所述,控制器A30在易失性存储器144中分配正常写入缓冲器A31、第一写入缓冲器A32和第二写入缓冲器A33。然后,在特定时间,控制器A30通过对正常写入缓冲器A31、第一写入缓冲器A32和第二写入缓冲器A33中的每一个的清除操作,将数据从正常写入缓冲器A31、第一写入缓冲器A32和第二写入缓冲器A33清除到非易失性存储器装置A40、A50和A60中。
[0117] 首先,在正常写入缓冲器A31的情况下,因为正常写入缓冲器A31具有固定为设定大小的存储空间,所以在正常写入数据NMAL_WDATA以设定大小存储在正常写入缓冲器A31中时,控制器A30对正常写入缓冲器A31执行清除操作,从而执行将正常写入缓冲器A31中存储的正常写入数据NMAL_WDATA存储在非易失性存储器装置A40、A50和A60中的正常写入操作。
[0118] 在第一写入缓冲器A32的情况下,因为第一写入缓冲器A32具有与第一总大小信息TTSIZE1相对应的第一确定大小的存储空间,所以在第一写入数据TRAN_WDATA1以第一确定大小存储在第一写入缓冲器A32中时,控制器A30检查是否完成对第一写入数据TRAN_WDATA1的提交。作为检查的结果,在完成了对第一写入缓冲器A32中存储的第一写入数据TRAN_WDATA1的提交的情况下,控制器A30对第一写入缓冲器A32执行第一清除操作,从而执行将第一写入缓冲器A32中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置A40、A50和A60中的第一写入操作。在执行第一写入操作之后,控制器A30释放易失性存储器144中的第一写入缓冲器A32。
[0119] 即使在将第一写入数据TRAN_WDATA1以第一确定大小存储在第一写入缓冲器A32中之前,控制器A30也在每个确定时间检查第一写入数据TRAN_WDATA1是否被中止。作为检查的结果,在第一写入缓冲器A32中存储的第一写入数据TRAN_WDATA1被中止的情况下,控制器A30释放易失性存储器144中的第一写入缓冲器A32。检查第一写入数据TRAN_WDATA1是否被中止的确定时间可以是第一写入数据TRAN_WDATA1中的每一个被输入到第一写入缓冲器A32中的时间。
[0120] 在第二写入缓冲器A33的情况下,因为第二写入缓冲器A33具有与第二总大小信息TTSIZE2相对应的第二确定大小的存储空间,所以在第二写入数据TRAN_WDATA2以第二确定大小存储在第二写入缓冲器A33中时,控制器A30检查是否完成对第二写入数据TRAN_WDATA2的提交。作为检查的结果,在完成对第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2的提交的情况下,控制器A30对第二写入缓冲器A33执行第二清除操作,从而执行将第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置A40、A50和A60中的第二写入操作。在执行第二写入操作之后,控制器A30释放易失性存储器144中的第二写入缓冲器A33。
[0121] 即使在第二写入数据TRAN_WDATA2以第二确定大小存储在第二写入缓冲器A33中之前,控制器A30也在每个确定时间检查第二写入数据TRAN_WDATA2是否被中止。作为检查的结果,在第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2被中止的情况下,控制器A30释放易失性存储器144中的第二写入缓冲器A33。检查第二写入数据TRAN_WDATA2是否被中止的确定时间可以是第二写入数据TRAN_WDATA2中的每一个被输入到第二写入缓冲器A33中的时间。
[0122] 在检查到第一事务被提交的时间和检查到第二事务被提交的时间之间的差处于第一设定时间间隔内的情况下,控制器A30使对应于第一事务的提交而对第一写入缓冲器A32执行第一清除操作的时间和对应于第二事务的提交而对第二写入缓冲器A33执行第二清除操作的时间同步。
[0123] 在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,这表示开始执行第一写入操作的时间和开始执行第二写入操作的时间同步,其中第一写入操作将第一写入缓冲器A32中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置A40、A50和A60中,并且第二写入操作将第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置A40、A50和A60中。因此,很有可能完成执行第一写入操作的时间和完成执行第二写入操作的时间没有较大差异。
[0124] 因此,在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,控制器A30可使第一确认信号传输到主机A10的时间和第二确认信号传输到主机A10的时间同步,其中第一确认信号用于通知主机A10完成了与第一清除操作相关联的、在第一清除操作之后进行的第一写入操作的执行,并且第二确认信号用于通知主机A10完成了与第二清除操作相关联的、在第二清除操作之后进行的第二写入操作的执行。
[0125] 当然,即使在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,也可能存在完成执行第一写入操作的时间和完成执行第二写入操作的时间具有较大差异的情况。
[0126] 因此,即使在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,仅在生成第一确认信号的时间和生成第二确认信号的时间处于第二设定时间间隔内的情况下,控制器A30可使第一确认信号传输到主机A10的时间和第二确认信号传输到主机A10的时间同步,其中第一确认信号用于通知主机A10完成了与第一清除操作相关联的第一写入操作的执行,并且第二确认信号用于通知主机A10完成了与第二清除操作相关联的第二写入操作的执行。
[0127] 总之,控制器A30可通过仅检查第一清除操作的执行时间和第二清除操作的执行时间是否同步来执行第一同步操作,第一同步操作使第一确认信号传输到主机A10的时间和第二确认信号传输到主机A10的时间同步。
[0128] 而且,即使在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,也仅在生成第一确认信号的时间和生成第二确认信号的时间处于第二设定时间间隔内的情况下,控制器A30才可执行第二同步操作,第二同步操作使第一确认信号传输到主机A10的时间和第二确认信号传输到主机A10的时间同步。
[0129] 作为参考,第一同步操作和第二同步操作是不能同时执行的操作。因此,在控制器A30执行第一同步操作的情况下,不执行第二同步操作。相反,在控制器A30执行第二同步操作的情况下,不执行第一同步操作。可预先根据存储器特性和设计者的选择来定义控制器A30将执行第一同步操作还是第二同步操作。
[0130] 可预先根据存储器系统的特性和设计者的选择来定义第一设定时间间隔,第一设定时间间隔用作确定是否使第一清除操作的执行时间和第二清除操作的执行时间同步的参考。
[0131] 类似地,可预先根据存储器系统的特性和设计者的选择来定义第二设定时间间隔,第二设定时间间隔用作确定是否使第一确认信号传输到主机A10的时间和第二确认信号传输到主机A10的时间同步的参考。
[0132] 参照图3A,可假设从主机A10输入了总共九段写入数据WDATA。没有预先定义从主机A10输入九段写入数据WDATA的顺序,并且可假设这些数据是随机输入的。
[0133] 详细地,通过检查从主机A10输入的九段写入数据WDATA的各自的事务ID信息TRID,控制器A30分类为三段第一写入数据TRAN_WDATA1、两段第二写入数据TRAN_WDATA2和四段正常写入数据NMAL_WDATA。
[0134] 更详细地,控制器A30确定在从主机A10输入的九段写入数据WDATA之中,作为事务ID信息TRID具有值1的三段写入数据WDATA的0、1和2是被分组到第一事务中的写入数据WDATA,并且将它们分类为第一写入数据TRAN_WDATA1。
[0135] 在与被分组到第一写入数据TRAN_WDATA1中的0、1和2之中的、作为开始数据的0相对应的第一写入命令(未示出)中,包括第一总大小信息TTSIZE1。因此,控制器A30可从对应于0的第一写入命令中检查到第一总大小信息TTSIZE1为5。当检查到第一总大小信息TTSIZE1为5时,控制器A30在易失性存储器144中分配用于总共五段写入数据的存储器区域,并且将该存储器区域作为第一写入缓冲器A32进行管理。
[0136] 也就是说,在输入被分组到第一写入数据TRAN_WDATA1中的0、1和2之中的、作为开始数据的0之前,控制器A30可在易失性存储器144中分配具有能够存储五段写入数据的空间的第一写入缓冲器A32。
[0137] 在从主机A10输入了所有九段写入数据WDATA之后,控制器A30可检查到只有0、1和2作为被分组到第一事务中的第一写入数据TRAN_WDATA1存在。换言之,在从主机A10输入了九段写入数据WDATA时,控制器A30可检查到尚未完成提交第一事务(事务未完成)。
[0138] 总之,控制器A30将作为三段第一写入数据TRAN_WDATA1的0、1和2存储在具有能够存储总共五段写入数据的空间的第一写入缓冲器A32中,并且保流了可用于其余两段写入数据的空间。
[0139] 进一步地,控制器A30确定在从主机A10输入的九段写入数据WDATA之中,作为事务ID信息TRID具有值2的两段写入数据WDATA的110和111是被分组到第二事务中的写入数据WDATA,并且将它们分类为第二写入数据TRAN_WDATA2。
[0140] 在与被分组到第二写入数据TRAN_WDATA2中的110与111之中的、作为开始数据的110相对应的第二写入命令(未示出)中,包括第二总大小信息TTSIZE2。因此,控制器A30可从对应于110的第二写入命令中检查到第二总大小信息TTSIZE2为4。当检查到第二总大小信息TTSIZE2为4时,控制器A30在易失性存储器144中分配用于总共四段写入数据的存储器区域,并且将该存储器区域作为第二写入缓冲器A33进行管理。
[0141] 也就是说,在输入被分组到第二写入数据TRAN_WDATA2中的110与111之中的、作为开始数据的110之前,控制器A30可在易失性存储器144中分配具有能够存储四段写入数据的空间的第二写入缓冲器A33。
[0142] 在从主机A10输入所有九段写入数据WDATA之后,控制器A30可检查到只有110和111作为被分组到第二事务中的第二写入数据TRAN_WDATA2存在。换言之,在从主机A10输入了九段写入数据WDATA时,控制器A30可检查到尚未完成提交第二事务(事务未完成)。
[0143] 总之,控制器A30将作为两段第二写入数据TRAN_WDATA2的110和111存储在具有能够存储总共四段写入数据的空间的第二写入缓冲器A33中,并且保留了可用于其余两段写入数据的空间。
[0144] 此外,控制器A30确定在从主机A10输入的九段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的A、B、C和D是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0145] 在与被分组到正常写入数据NMAL_WDATA中的A、B、C和D之中的、作为开始数据的A相对应的写入命令(未示出)中包括的事务ID信息TRID未被设定为任何值。
[0146] 因此,当检查到与A相对应的写入命令中包括的事务ID信息TRID未被设定为任何值时,控制器A30在易失性存储器144中分配用于总共10段写入数据的存储器区域,并且将该存储器区域作为正常写入缓冲器A31进行管理。
[0147] 控制器A30分配用于10段写入数据的易失性存储器144的空间作为正常写入缓冲器A31的原因在于:将作为正常写入缓冲器A31的参考的设定大小假设为10。因此,在设定大小为20的情况下,控制器A30可分配用于20段写入数据的易失性存储器144的空间作为正常写入缓冲器A31。
[0148] 总之,控制器A30将作为四段正常写入数据NMAL_WDATA的A、B、C和D存储在具有能够存储总共10段写入数据的空间的正常写入缓冲器A31中,并且将可用于其余六段写入数据的空间保留为空白。
[0149] 在如上所述输入九段写入数据WDATA的图3A的状态下,因为正常写入缓冲器A31中未充满正常写入数据NMAL_WDATA,所以这不是应当清除正常写入缓冲器A31的情况。类似地,因为第一事务和第二事务都没有完成,所以这不是应当清除第一写入缓冲器A32和第二写入缓冲器A33的情况。
[0150] 参照图3B,接着图3A所示的状态,可假设从主机A10输入总共八段写入数据WDATA。没有预先定义从主机A10输入八段写入数据WDATA的顺序,并且可假设这些数据是随机输入的。
[0151] 详细地,通过检查从主机A10输入的八段写入数据WDATA的各自的事务ID信息TRID,控制器A30分类为两段第一写入数据TRAN_WDATA1、两段第二写入数据TRAN_WDATA2和四段正常写入数据NMAL_WDATA。
[0152] 更详细地,控制器A30确定在从主机A10输入的八段写入数据WDATA之中,作为事务ID信息TRID具有值1的两段写入数据WDATA的3和4是被分组到第一事务中的写入数据WDATA,并且将它们分类为第一写入数据TRAN_WDATA1。
[0153] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储被分组到第一事务中的第一写入数据TRAN_WDATA1的第一写入缓冲器A32。
[0154] 因此,控制器A30立即将被分组到第一写入数据TRAN_WDATA1中的3和4存储在第一写入缓冲器A32中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了第一写入缓冲器A32作为能够存储总共五段写入数据的空间,并且该第一写入缓冲器A32仅存储了作为三段写入数据的0、1和2,并且保留了可用于其它两段写入数据的空间。
[0155] 由于这个事实,如图3B所示,控制器A30立即将被分组到第一写入数据TRAN_WDATA1中的3和4存储在第一写入缓冲器A32中,而无需单独的附加操作。当在图3B中被分组到第一写入数据TRAN_WDATA1的3和4被存储在第一写入缓冲器A32中时,第一写入缓冲器A32的整个空间,即能够存储五段写入数据的空间变为充满。
[0156] 在随着作为被分组到第一事务中的第一写入数据TRAN_WDATA1的0、1、2、3和4全部被存储在第一写入缓冲器A32中,第一写入缓冲器A32的整个空间变为充满时,控制器A30可检查到处于完成了第一事务的提交的状态(事务完成)。
[0157] 进一步地,控制器A30确定在从主机A10输入的八段写入数据WDATA之中,作为事务ID信息TRID具有值2的两段写入数据WDATA的112和113是被分组到第二事务中的写入数据WDATA,并且将它们分类为第二写入数据TRAN_WDATA2。
[0158] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储被分组到第二事务中的第二写入数据TRAN_WDATA2的第二写入缓冲器A33。
[0159] 因此,控制器A30立即将被分组到第二写入数据TRAN_WDATA2中的112和113存储在第二写入缓冲器A33中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了第二写入缓冲器A33作为能够存储总共四段写入数据的空间,并且该第二写入缓冲器A33仅存储了作为两段写入数据的110和111,并且保留了可用于存储其它两段写入数据的空间。
[0160] 由于这个事实,如图3B所示,控制器A30立即将被分组到第二写入数据TRAN_WDATA2中的112和113存储在第二写入缓冲器A33中,而无需单独的附加操作。当在图3B中被分组到第二写入数据TRAN_WDATA2的112和113被存储在第二写入缓冲器A33中时,第二写入缓冲器A33的整个空间,即能够存储四段写入数据的空间变为充满。
[0161] 在随着作为被分组到第二事务中的第二写入数据TRAN_WDATA2的110、111、112和113全部被存储在第二写入缓冲器A33中,第二写入缓冲器A33的整个空间变为充满时,控制器A30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0162] 此外,控制器A30确定在从主机A10输入的八段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的E、F、G和H是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0163] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储未被分组到事务中的正常写入数据NMAL_WDATA的正常写入缓冲器A31。
[0164] 因此,控制器A30立即将被分组到正常写入数据NMAL_WDATA中的E、F、G和H存储在正常写入缓冲器A31中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了正常写入缓冲器A31作为能够存储总共10段写入数据的空间,并且正常写入缓冲器A31仅存储了作为四段写入数据的A、B、C和D,并且保留了可用于存储六段写入数据的空间。
[0165] 由于这个事实,如图3B所示,控制器A30立即将被分组到正常写入数据NMAL_WDATA中的E、F、G和H存储在正常写入缓冲器A31中,而无需单独的附加操作。在图3B中,随着被分组到正常写入数据NMAL_WDATA的E、F、G和H被存储在正常写入缓冲器A31中,作为八段正常写入数据NMAL_WDATA的A、B、C、D、E、F、G和H被存储在具有能够存储总共10段写入数据的空间的正常写入缓冲器A31中,并且仍然存在可用于存储其余两段正常写入数据NMAL_WDATA的空白空间。
[0166] 在接着图3A所示的状态的图3B的状态中,另外输入了八段写入数据WDATA,因为正常写入缓冲器A31中未充满正常写入数据NMAL_WDATA,所以这不是应当清除正常写入缓冲器A31的情况。然而,因为第一事务和第二事务都是完成提交的,所以这是应当清除第一写入缓冲器A32和第二写入缓冲器A33的情况。
[0167] 当图3A所示的状态改变为图3B所示的状态时,因为假设从主机A10输入的写入数据WDATA的输入顺序是随机的,所以完成第一事务的提交的时间可能先于完成第二事务的提交的时间,或者完成第二事务的提交的时间可能先于完成第一事务的提交的时间。
[0168] 在完成第一事务的提交的时间先于完成第二事务的提交的时间的情况下,可假设在从完成了第一事务的提交的时间起的第一设定时间间隔内完成了第二事务的提交。
[0169] 相反,在完成第二事务的提交的时间先于完成第一事务的提交的时间的情况下,可假设在从完成了第二事务的提交的时间起的第一设定时间间隔内完成了第一事务的提交。
[0170] 以这种方式,在完成第一事务的提交的时间与完成第二事务的提交的时间之间的差处于第一设定时间间隔内的情况下,控制器A30使对应于第一事务的提交而对第一写入缓冲器A32执行第一清除操作FLUSH1的时间和对应于第二事务的提交而对第二写入缓冲器A33执行第二清除操作FLUSH2的时间同步。
[0171] 以这种方式,通过使第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步,可以认为使开始执行第一写入操作WRITE1的时间和开始执行第二写入操作WRITE2的时间同步,其中第一写入操作WRITE1将第一写入缓冲器A32中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置A40、A50和A60中,并且第二写入操作WRITE2将第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置A40、A50和A60中。
[0172] 因此,如在图4A所示的第一同步操作的情况下,当第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步时,控制器A30可使第一确认信号ACK1传输到主机A10的时间和第二确认信号ACK2传输到主机A10的时间同步,其中第一确认信号ACK1用于通知主机A10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机A10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0173] 当然,如在图4B所示的第一同步操作的情况下,当第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间不同步时,控制器A30可不使第一确认信号ACK1传输到主机A10的时间和第二确认信号ACK2传输到主机A10的时间同步,其中第一确认信号ACK1用于通知主机A10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机A10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0174] 而且,如图4C所示的第二同步操作的情况,即使在第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步的情况下,仅在生成第一确认信号ACK1的时间和生成第二确认信号ACK2的时间处于第二设定时间间隔内的情况下,控制器A30可使第一确认信号ACK1传输到主机A10的时间和第二确认信号ACK2传输到主机A10的时间同步,其中第一确认信号ACK1用于通知主机A10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机A10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0175] 当然,如图4D所示的第二同步操作的情况,即使在第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步的情况下,在生成第一确认信号ACK1的时间和生成第二确认信号ACK2的时间不处于第二设定时间间隔内的情况下,控制器A30可不使第一确认信号ACK1传输到主机A10的时间和第二确认信号ACK2传输到主机A10的时间同步,其中第一确认信号ACK1用于通知主机A10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机A10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0176] 再次参照图3B,在完成第一写入操作WRITE1的执行之后,控制器A30释放易失性存储器144中的第一写入缓冲器A32(写入缓冲器1释放)。也就是说,在执行第一写入操作WRITE1之后,控制器A30释放易失性存储器144中的、当从主机A10输入第一写入数据TRAN_WDATA1时在易失性存储器144中分配的第一写入缓冲器A32。
[0177] 类似地,在完成第二写入操作WRITE2的执行之后,控制器A30释放易失性存储器144中的第二写入缓冲器A33(写入缓冲器2释放)。也就是说,在执行第二写入操作WRITE2之后,控制器A30释放易失性存储器144中的、当从主机A10输入第二写入数据TRAN_WDATA2时在易失性存储器144中分配的第二写入缓冲器A33。
[0178] 参照接着图3A所示的状态的图3C,可假设从主机A10输入总共七段写入数据WDATA。没有预先定义从主机A10输入七段写入数据WDATA的顺序,并且可假设它们是随机输入的。
[0179] 详细地,通过检查从主机A10输入的七段写入数据WDATA的各自的事务ID信息TRID,控制器A30分类为一段第一写入数据TRAN_WDATA1、两段第二写入数据TRAN_WDATA2和四段正常写入数据NMAL_WDATA。
[0180] 更详细地,控制器A30确定在从主机A10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值1的一段写入数据WDATA的3是被分组到第一事务中的写入数据WDATA,并且被分类为第一写入数据TRAN_WDATA1。
[0181] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储被分组到第一事务中的第一写入数据TRAN_WDATA1的第一写入缓冲器A32。
[0182] 因此,控制器A30立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器A32中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了第一写入缓冲器A32作为能够存储总共五段写入数据的空间,并且该第一写入缓冲器A32仅存储了作为三段写入数据的0、1和2,并且保留了可用于存储其它两段写入数据的空间。
[0183] 由于这个事实,如图3C所示,控制器A30立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器A32中,而无需单独的附加操作。在图3C中,随着被分组到第一写入数据TRAN_WDATA1的3被存储在第一写入缓冲器A32中,作为四段第一写入数据TRAN_WDATA1的0、1、2和3被存储在具有能够存储总共五段写入数据的空间的第一写入缓冲器A32中,并且第一写入缓冲器A32中仍然存在可用于存储其余一段写入数据的空间。
[0184] 由于只有作为被分组到第一事务中的第一写入数据TRAN_WDATA1的0、1、2和3被存储在第一写入缓冲器A32中,所以控制器A30可检查到第一写入缓冲器A32中存在剩余空间,所以处于未完成第一事务的提交的状态(事务未完成)。
[0185] 进一步地,控制器A30确定在从主机A10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值2的两段写入数据WDATA的112和113是被分组到第二事务中的写入数据WDATA,并且将它们分类为第二写入数据TRAN_WDATA2。
[0186] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储被分组到第二事务中的第二写入数据TRAN_WDATA2的第二写入缓冲器A33。
[0187] 因此,控制器A30立即将被分组到第二写入数据TRAN_WDATA2中的112和113存储在第二写入缓冲器A33中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了第二写入缓冲器A33作为能够存储总共四段写入数据的空间,并且第二写入缓冲器A33仅存储了作为两段写入数据的110和111,并且保留了可用于其它两段写入数据的空间。
[0188] 由于这个事实,如图3C所示,控制器A30立即将被分组到第二写入数据TRAN_WDATA2中的112和113存储在第二写入缓冲器A33中,而无需单独的附加操作。当在图3C中,被分组到第二写入数据TRAN_WDATA2的112和113被存储在第二写入缓冲器A33中时,第二写入缓冲器A33的整个空间,即能够存储四段写入数据的空间变为充满。
[0189] 在随着作为被分组到第二事务中的第二写入数据TRAN_WDATA2的110、111、112和113全部被存储在第二写入缓冲器A33中,第二写入缓冲器A33的整个空间变为充满时,控制器A30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0190] 此外,控制器A30确定在从主机A10输入的七段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的E、F、G和H是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0191] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储未被分组到事务中的正常写入数据NMAL_WDATA的正常写入缓冲器A31。
[0192] 因此,控制器A30立即将被分组到正常写入数据NMAL_WDATA中的E、F、G和H存储在正常写入缓冲器A31中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了正常写入缓冲器A31作为能够存储总共10段写入数据的空间,并且正常写入缓冲器A31仅存储了作为四段写入数据的A、B、C和D,并且保留了可用于其它六段写入数据的空间。
[0193] 由于这个事实,如图3C所示,控制器A30立即将被分组到正常写入数据NMAL_WDATA中的E、F、G和H存储在正常写入缓冲器A31中,而无需单独的附加操作。随着在图3C中,被分组到正常写入数据NMAL_WDATA中的E、F、G和H被存储在正常写入缓冲器A31中,作为八段正常写入数据NMAL_WDATA的A、B、C、D、E、F、G和H被存储在具有能够存储总共10段写入数据的空间的正常写入缓冲器A31中,因此仍然存在可用于存储其余两段写入数据的空间。
[0194] 在接着图3A所示的状态的图3C的状态中,另外输入了七段写入数据WDATA,因为正常写入缓冲器A31中未充满正常写入数据NMAL_WDATA,所以这不是应当清除正常写入缓冲器A31的情况。而且,因为未完成第一事务的提交,所以这不是应当清除第一写入缓冲器A32的情况。然而,因为完成了第二事务的提交,所以这是应当清除第二写入缓冲器A33的情况。
[0195] 当图3A所示的状态改变为图3C所示的状态时,第一事务维持未完成第一事物的提交的状态,并且第二事务转换为完成第二事务的提交的状态。因此,在如图3C所示的状态中,可能看不出将完成第一事务的提交的时间,但可看出完成第二事务的提交的时间先于完成第一事务的提交的时间。由此,可假设未在从完成第二事务的提交的时间起的第一设定时间间隔内完成第一事务的提交。
[0196] 以这种方式,在完成第一事务的提交的时间与完成第二事务的提交的时间的差不在第一设定时间间隔内的情况下,控制器A30可不使对应于第一事务的提交而对第一写入缓冲器A32执行第一清除操作FLUSH1的时间和对应于第二事务的提交而对第二写入缓冲器A33执行第二清除操作FLUSH2的时间同步。
[0197] 换言之,在对与完成提交的第二事务相对应的第二写入缓冲器A33执行第二清除操作FLUSH2之后,当在不处于第一设定时间间隔内的某个时间完成第一事务的提交时,可对与第一事务相对应的第一写入缓冲器A32执行第一清除操作FLUSH1。
[0198] 以这种方式,通过不使第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步,可认为控制器A30可不使开始执行第一写入操作WRITE1的时间和开始执行第二写入操作WRITE2的时间同步,其中第一写入操作WRITE1将第一写入缓冲器A32中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置A40、A50和A60中,并且第二写入操作WRITE2将第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置A40、A50和A60中。因此,很有可能完成执行第一写入操作的时间和完成执行第二写入操作的时间具有较大差异。
[0199] 因此,如在图4B中所示的第一同步操作的情况下,当第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间不同步时,控制器A30可不使第一确认信号ACK1传输到主机A10的时间和第二确认信号ACK2传输到主机A10的时间同步,其中第一确认信号ACK1用于通知主机A10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机A10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0200] 因为在图3C中假设第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间不同步,所以不可能执行图4C和图4D所示的第二同步操作。
[0201] 再次参照图3C,在完成第二写入操作WRITE2的执行之后,控制器A30释放易失性存储器144中的第二写入缓冲器A33(写入缓冲器2释放)。也就是说,在执行第二写入操作WRITE2之后,控制器A30释放易失性存储器144中的当从主机A10输入第二写入数据TRAN_WDATA2时在易失性存储器144中分配的第二写入缓冲器A33。
[0202] 相反,因为处于未对第一写入缓冲器A32执行第一清除操作FLUSH1和随后的第一写入操作WRITE1的状态,所以第一写入缓冲器A32可持续地保持被分配在易失性存储器144中的状态。
[0203] 参照接着图3A所示的状态的图3D,可假设从主机A10输入总共七段写入数据WDATA。没有预先定义从主机A10输入七段写入数据WDATA的顺序,并且可假设它们是随机输入的。
[0204] 详细地,通过检查从主机A10输入的七段写入数据WDATA的各自的事务ID信息TRID,控制器A30分类为一段第一写入数据TRAN_WDATA1、两段第二写入数据TRAN_WDATA2和四段正常写入数据NMAL_WDATA。
[0205] 更详细地,控制器A30确定在从主机A10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值1的一段写入数据WDATA的3是被分组到第一事务中的写入数据WDATA,并且将其分类为第一写入数据TRAN_WDATA1。
[0206] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储被分组到第一事务中的第一写入数据TRAN_WDATA1的第一写入缓冲器A32。
[0207] 因此,控制器A30立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器A32中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了第一写入缓冲器A32作为能够存储总共五段写入数据的空间,并且该第一写入缓冲器A32仅存储了作为三段写入数据的0、1和2,并且保留了可用于存储其它两段写入数据的空间。
[0208] 由于这个事实,如图3D所示,控制器A30立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器A32中,而无需单独的附加操作。在图3D中,随着被分组到第一写入数据TRAN_WDATA1的3被存储在第一写入缓冲器A32中,作为四段第一写入数据TRAN_WDATA1的0、1、2和3被存储在具有能够存储总共五段写入数据的空间的第一写入缓冲器A32中,因此仍然存在可用于存储其余一段写入数据的空间。
[0209] 在作为被分组到第一事务中的第一写入数据TRAN_WDATA1的0、1、2和3被存储在第一写入缓冲器A32中时,控制器A30可能从主机A10接收第一事务被中止的信息。例如,在被分组到第一写入数据TRAN_WDATA1中的3被存储在第一写入缓冲器A32中之后,可以从主机A10传输包括第一事务的中止信息的单独命令。根据这一事实,可检查到在仅作为被分组到第一事务中的第一写入数据TRAN_WDATA1的0、1、2和3被存储在第一写入缓冲器A32中的状态下,第一事务被中止(事务中止)。
[0210] 进一步地,控制器A30确定在从主机A10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值2的两段写入数据WDATA的112和113是被分组到第二事务中的写入数据WDATA,并且将它们分类为第二写入数据TRAN_WDATA2。
[0211] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储被分组到第二事务中的第二写入数据TRAN_WDATA2的第二写入缓冲器A33。
[0212] 因此,控制器A30立即将被分组到第二写入数据TRAN_WDATA2中的112和113存储在第二写入缓冲器A33中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了第二写入缓冲器A33作为能够存储总共四段写入数据的空间,并且该第二写入缓冲器A33仅存储了作为两段写入数据的110和111,并且保留了可用于存储其它两段写入数据的空间。
[0213] 由于这个事实,如图3D所示,控制器A30立即将被分组到第二写入数据TRAN_WDATA2中的112和113存储在第二写入缓冲器A33中,而无需单独的附加操作。当在图3D中,被分组到第二写入数据TRAN_WDATA2的112和113被存储在第二写入缓冲器A33中时,第二写入缓冲器A33的整个空间,即能够存储四段写入数据的空间变为充满。
[0214] 在随着作为被分组到第二事务中的第二写入数据TRAN_WDATA2的110、111、112和113全部被存储在第二写入缓冲器A33中,第二写入缓冲器A33的整个空间变为充满时,控制器A30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0215] 此外,控制器A30确定在从主机A10输入的七段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的E、F、G和H是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0216] 通过上面参照图3A描述的操作,已经在易失性存储器144中分配了用于存储未被分组到事务中的正常写入数据NMAL_WDATA的正常写入缓冲器A31。
[0217] 因此,控制器A30立即将被分组到正常写入数据NMAL_WDATA中的E、F、G和H存储在正常写入缓冲器A31中,而无需单独的附加操作。通过上面参照图3A描述的操作,已经在易失性存储器144中分配了正常写入缓冲器A31作为能够存储总共10段写入数据的空间,并且正常写入缓冲器A31仅存储了作为四段写入数据的A、B、C和D,并且保留了可用于其它六段写入数据的空间。
[0218] 由于这个事实,如图3D所示,控制器A30立即将被分组到正常写入数据NMAL_WDATA中的E、F、G和H存储在正常写入缓冲器A31中,而无需单独的附加操作。在图3D中,随着被分组到正常写入数据NMAL_WDATA中的E、F、G和H被存储在正常写入缓冲器A31中,作为八段正常写入数据NMAL_WDATA的A、B、C、D、E、F、G和H被存储在具有能够存储总共10段写入数据的空间的正常写入缓冲器A31中,因此仍然存在可用于其余两段正常写入数据NMAL_WDATA的空间。
[0219] 在接着图3A所示的状态的图3D的状态中,另外输入了七段写入数据WDATA,因为正常写入缓冲器A31中未充满正常写入数据NMAL_WDATA,所以这不是应当清除正常写入缓冲器A31的情况。而且,因为第一事务被中止,所以这不是应当清除第一写入缓冲器A32的情况。然而,因为完成了第二事务的提交,所以这是应当清除第二写入缓冲器A33的情况。
[0220] 当图3A所示的状态改变为图3D所示的状态时,第一事务被转换为中止,并且第二事务被转换为完成第二事务的提交的状态。因此,在如图3D所示的状态中,不可能完成第一事务的提交。因此,可确定在从完成第二事务的提交的时间起的第一设定时间间隔内未提交第一事务。
[0221] 独立于完成第二事务的提交,在第一事务被中止的情况下,控制器A30对应于第一事务的中止而释放易失性存储器144中的第一写入缓冲器A32(写入缓冲器1释放)。
[0222] 进一步地,独立于第一事务被中止,对应于完成第二事务的提交,仅对第二写入缓冲器A33执行第二清除操作FLUSH2,因此执行第二写入操作WRITE2,第二写入操作WRITE2将第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2存储到非易失性存储器装置A40、A50和A60中。
[0223] 因为在图3D中假设不对第一写入缓冲器A32执行第一清除操作FLUSH1,所以不执行图4A至图4D所示的第一同步操作和第二同步操作。
[0224] 再次参照图3D,在完成第二写入操作WRITE2的执行之后,控制器A30释放易失性存储器144中的第二写入缓冲器A33(写入缓冲器2释放)。也就是说,在执行第二写入操作WRITE2之后,控制器A30释放易失性存储器144中的、当从主机A10输入第二写入数据TRAN_WDATA2时在易失性存储器144中分配的第二写入缓冲器A33。
[0225] 相反,在检查到第一事务的中止时,控制器A30释放易失性存储器144中的第一写入缓冲器A32。
[0226] 从以上描述显而易见的是,当从主机A10输入被分组到第一事务中的第一写入数据TRAN_WDATA1时,根据本公开的第一实施例的存储器系统A20可在易失性存储器144中分配专用于第一事务的第一写入缓冲器A32。而且,当从主机A10输入被分组到第二事务中的第二写入数据TRAN_WDATA2时,根据本公开的第一实施例的存储器系统A20可在易失性存储器144中分配专用于第二事务的第二写入缓冲器A33。可将第一写入缓冲器A32与第二写入缓冲器A33彼此区分开。类似地,可将第一和第二写入缓冲器A32和A33与用于管理正常写入数据NMAL_WDATA的正常写入缓冲器A31区分开。由此,根据本公开的第一实施例的存储器系统A20可有效地管理事务写入数据。
[0227] 进一步地,根据本公开的第一实施例的存储器系统A20使当第一事务被提交时执行待在第一写入缓冲器A32中执行的第一清除操作的时间和当第二事务被提交时执行待在第二写入缓冲器A33中执行的第二清除操作的时间同步到可能范围内的最大程度。由此,可通过进行同步来开始第一写入操作WRITE1和第二写入操作WRITE2,其中第一写入操作WRITE1将第一写入缓冲器A32中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置A40、A50和A60中,第二写入操作WRITE2将第二写入缓冲器A33中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置A40、A50和A60中,并且通过将第一写入数据TRAN_WDATA1和第二写入数据TRAN_WDATA2共同地存储在非易失性存储器装置A40、A50和A60中的特定存储空间中,可增加集中存储第一写入数据TRAN_WDATA1和该第二写入数据TRAN_WDATA2的可能性。即,可简化用于确保第一事务和第二事务的算法。
[0228] 此外,当第一和第二写入缓冲器A32和A33在同步状态下被清除时,根据本公开的第一实施例的存储器系统A20在可能范围内最大程度地使第一和第二确认信号ACK1和ACK2传输到主机A10以通知主机A10完成了同步的第一和第二写入操作WRITE1和WRITE2的时间同步。也就是说,存储器系统A20可在一个时刻将两个确认信号ACK1和ACK2传输到主机A10。由此,可最小化将确认信号从存储器系统A20传输到主机A10的次数。
[0229] 图5A至图5C是帮助说明根据本公开的第一实施例的存储器系统的操作的流程图。
[0230] 参照图5A,当写入数据WDATA从主机A10传输到存储器系统A20时,开始根据本公开的第一实施例的存储器系统A20的操作(S5)。
[0231] 检查在步骤S5中传输的写入数据WDATA是否是事务的开始数据(S10)。
[0232] 在步骤S10中,在写入数据WDATA是事务的开始数据的情况下(是),存储器系统A20生成用于存储事务的事务数据的专用事务写入缓冲器(S20)。在步骤S20中,根据事务的数量来生成专用事务写入缓冲器。也就是说,针对第一事务生成第一事务写入缓冲器,并且针对第二事务生成第二事务写入缓冲器。在步骤S20中,专用事务写入缓冲器的大小可取决于与事务的开始数据一起传输的事务的总大小信息。
[0233] 在步骤S10中,在写入数据WDATA不是事务的开始数据的情况下(否),可认为在步骤S5中传输的写入数据WDATA是正常写入数据NMAL_WDATA或是除了事务的开始数据之外的其它数据。
[0234] 在步骤S5中传输的写入数据WDATA是正常写入数据NMAL_WDATA的情况下,将写入数据WDATA存储在正常写入缓冲器中(S30)。
[0235] 在步骤S5中传输的写入数据WDATA是除了事务的开始数据之外的另一数据的情况下,将写入数据WDATA存储在于步骤S20中生成的事务写入缓冲器中(S30)。在步骤S30中,检查在步骤S5中传输的写入数据WDATA是哪种事务,并且将写入数据WDATA存储在与检查到的事务相对应的事务写入缓冲器中。换言之,在步骤S30中,在步骤S5中传输的写入数据WDATA是第一事务的另一数据的情况下,将写入数据WDATA存储在第一事务写入缓冲器中,并且在步骤S5中传输的写入数据WDATA是第二事务的另一数据的情况下,将写入数据WDATA存储在第二事务写入缓冲器中。
[0236] 在步骤S30之后,检查在事务写入缓冲器之中是否存在完成提交的缓冲器(S40)。
[0237] 在步骤S40中,在不存在完成提交的缓冲器的情况下(否),在步骤S5中输入新的写入数据WDATA之前,不执行单独的操作。
[0238] 在步骤S40中,在存在完成提交的缓冲器的情况下(是),检查是否完成了另一事务的提交(S50)。换言之,通过步骤S40和步骤S50,可检查是否提交了至少两个事务。
[0239] 在作为步骤S50的结果,仅提交了一个事务的情况下(否),仅单独清除完成提交的事务写入缓冲器(S80)。在步骤S80中清除的事务写入缓冲器没有与另一事务写入缓冲器同时清除。
[0240] 在作为步骤S50的结果,提交了至少两个事务写入缓冲器的情况下(是),检查至少两个事务的提交时间是否处于第设定一时间间隔(设定时间1)内(S60)。也就是说,检查在步骤S40中检查到提交的事务(事务写入缓冲器)的提交时间和在步骤S50中检查到提交的事务(事务写入缓冲器)的提交时间是否处于第一设定时间间隔(设定时间1)内(S60)。
[0241] 在步骤S60中,在至少两个事务的提交时间之间的差超过第一设定时间间隔(设定时间1)的情况下(否),不使对完成提交的至少两个事务写入缓冲器的清除操作同步(S80)。也就是说,不使对在步骤S40中检查到提交的事务(事务写入缓冲器)的清除操作和对在步骤S50中检查到提交的事务(事务写入缓冲器)的清除操作同步(S80)。
[0242] 在步骤S60中,在至少两个事务写入缓冲器的提交时间之间的差处于第一设定时间间隔(设定时间1)内的情况下(是),使对完成提交的至少两个事务写入缓冲器的清除操作同步(S70)。也就是说,使对在步骤S40中检查到提交的事务(事务写入缓冲器)的清除操作和对在步骤S50中检查到提交的事务(事务写入缓冲器)的清除操作同步(S70)。
[0243] 在步骤S70中,使对完成提交的至少两个事务写入缓冲器的清除操作同步之后,如下所述,可通过参照图5B和图5C来选择和执行两个操作中的任意一个操作。
[0244] 参照图5B,对应于在步骤S70中同步了对完成提交的至少两个事务写入缓冲器的清除操作,使将至少两个事务写入缓冲器中存储的事务数据存储在非易失性存储器装置A40、A50和A60中的至少两个写入操作(写入非易失性存储器,事务写入缓冲器)同步(S90)。
[0245] 因为在步骤S70和步骤S90中,同步了对完成提交的至少两个事务写入缓冲器的清除操作并因此同步了至少两个写入操作,所以在图5B中,不另外检查单独的条件,并且使用于通知主机A10完成了至少两个写入操作的至少两个确认信号(与(事务写入)缓冲器相对应的写入完成的Ack)传输到主机A10的时间同步(S100)。
[0246] 参照图5C,对应于在步骤S70中同步了对完成提交的至少两个事务写入缓冲器的清除操作,使用于将至少两个事务写入缓冲器中存储的事务数据存储在非易失性存储器装置A40、A50和A60中的至少两个写入操作(写入非易失性存储器,事务写入缓冲器)同步(S90)。
[0247] 在步骤S70和步骤S90中同步了对完成提交的至少两个事务写入缓冲器的清除操作并因此同步了至少两个写入操作之后,在图5C中,检查完成至少两个写入操作的时间之间的差是否处于第二设定时间间隔(设定时间2)内(S110)。
[0248] 在步骤S110中,在完成至少两个写入操作的时间之间的差处于第设定二时间间隔(设定时间2)内的情况下(是),使至少两个确认信号(与(事务写入)缓冲器相对应的写入完成的Ack)传输到主机A10的时间同步(S120),其中至少两个确认信号用于通知主机A10完成了至少两个写入操作。
[0249] 在步骤S110中,在完成至少两个写入操作的时间之间的差超过第二设定时间间隔(设定时间2)的情况下(否),不使至少两个确认信号(与(事务写入)缓冲器相对应的写入完成的Ack)传输到主机A10的时间同步(S130),其中至少两个确认信号用于通知主机A10完成了至少两个写入操作。
[0250] <第二实施例>
[0251] 图6和图7是帮助说明根据本公开的第二实施例的包括存储器系统的数据处理系统的配置的示图。
[0252] 参照图6,根据本公开的第二实施例的数据处理系统包括主机C10和存储器系统C20。存储器系统C20包括控制器C30、第一非易失性存储器装置C40、第二非易失性存储器装置C50和第三非易失性存储器装置C60。
[0253] 作为参考,在图6和图7中,存储器系统C20中包括三个非易失性存储器装置C40、C50和C60。然而,如前所述,这仅仅是示例。
[0254] 主机C10将与用户请求相对应的多个命令传输到存储器系统C20,因此,存储器系统C20执行与命令相对应的操作,即执行与用户请求相对应的操作。
[0255] 存储器系统C20响应于主机C10的请求进行操作,特别是存储待由主机C10访问的数据。换言之,存储器系统C20可用作主机C10的主存储器装置或辅助存储器装置。根据与主机C10联接的主机接口协议,存储器系统C20可被实现为各种存储装置中的任意一种。例如,存储器系统C20可被实现为诸如以下的各种存储装置中的任意一种:固态驱动器(SSD),MMC、eMMC(嵌入式MMC)、RS-MMC(缩小尺寸的MMC)和微型-MMC形式的多媒体卡,SD、迷你-SD和微型-SD形式的安全数字卡,通用串行总线(USB)存储装置,通用闪存(UFS)装置,紧凑式闪存(CF)卡,智能媒体卡,记忆棒等。
[0256] 而且,存储器系统C20可集成到一个半导体装置中并配置存储卡。例如,存储器系统C20可配置诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)卡,紧凑式闪存(CF)卡,SM和SMC形式的智能媒体卡,记忆棒,MMC、RS-MMC和微型-MMC形式的多媒体卡,SD、迷你-SD、微型-SD和SDHC形式的安全数字卡以及通用闪存(UFS)装置。
[0257] 又例如,存储器系统C20可配置计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航装置、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、配置数据中心的存储装置、能够在无线环境下传输和接收信息的装置、配置家庭网络的各种电子装置之一、配置计算机网络的各种电子装置之一、配置远程信息处理网络的各种电子装置之一、RFID(射频识别)装置或配置计算系统的各种组件之一。
[0258] 存储器系统C20可包括诸如易失性存储器装置或非易失性存储器装置的存储装置,其中易失性存储器装置诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM),非易失性存储器装置诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)和闪速存储器。
[0259] 存储器系统C20包括易失性存储器144,用于临时存储从主机C10输入的写入数据WDATA。
[0260] 控制器C30在易失性存储器144中分配每个具有预定义大小的多个写入缓冲器C31、C32、C33和C34。控制器C30将从主机C10输入且未被分组到事务中的正常写入数据NMAL_WDATA存储在多个写入缓冲器C31、C32、C33和C34之中的、未被设定为专用于事务的写入缓冲器中。
[0261] 当从主机C10输入了被分组到第一事务中的第一写入数据TRAN_WDATA1和与第一事务的总大小有关的第一总大小信息TTSIZE1时,控制器C30响应于第一总大小信息TTSIZE1,针对第一事务设定第一专用选项,第一专用选项用于专有地使用多个写入缓冲器C31、C32、C33和C34之中的至少一个第一写入缓冲器。
[0262] 详细地,当从主机C10输入第一写入数据TRAN_WDATA1时,控制器C30检查多个写入缓冲器C31、C32、C33和C34的各自的空白空间,响应于检查到的空白空间和第一总大小信息TTSIZE1,针对多个写入缓冲器C31、C32、C33和C34之中的、可组合的最少数量的写入缓冲器设定第一专用选项,并且使用该最少数量的写入缓冲器作为第一写入缓冲器。
[0263] 而且,当从主机C10输入了被分组到第二事务中的第二写入数据TRAN_WDATA2和与第二事务的总大小有关的第二总大小信息TTSIZE2时,响应于第二总大小信息TTSIZE2,控制器C30针对第二事务设定第二专用选项,第二专用选项用于专有地使用多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中的至少一个第二写入缓冲器。
[0264] 详细地,在从主机C10输入第二写入数据TRAN_WDATA2时,控制器C30检查多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器的各自的空白空间,响应于检查到的空白空间和第二总大小信息TTSIZE2,针对多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中的可组合的最少数量的写入缓冲器设定第二专用选项,并且使用该最少数量的写入缓冲器作为第二写入缓冲器。
[0265] 作为参考,通过假设被分组到第一事务中的第一写入数据TRAN_WDATA1比被分组到第二事务中的第二写入数据TRAN_WDATA2更早输入,假设对专用于第一事务的第一写入缓冲器的设定先于对专用于第二事务的第二写入缓冲器的设定。因此,当设定第一写入缓冲器时,通过在多个写入缓冲器C31、C32、C33和C34之中选择至少一个写入缓冲器来设定第一写入缓冲器,但是当设定第二写入缓冲器时,通过在多个写入缓冲器C31、C32、C33和C34之中的除被设定为第一写入缓冲器的写入缓冲器之外的剩余写入缓冲器之中选择至少一个写入缓冲器来设定第二写入缓冲器。
[0266] 总之,在从主机C10输入写入数据WDATA之前,控制器C30在易失性存储器144中分配多个写入缓冲器C31、C32、C33和C34。以这种方式,在易失性存储器144中首先分配多个写入缓冲器C31、C32、C33和C34。此后,在从主机C10输入了被分组到事务中的写入数据WDATA的情况下,控制器C30将多个写入缓冲器C31、C32、C33和C34之中的至少一个写入缓冲器设定为专用于事务,然后将被分组到事务中的写入数据WDATA共同存储在被设定为专用于事务的写入缓冲器中。在从主机C10输入了正常写入数据NMAL_WDATA的情况下,通过将正常写入数据NMAL_WDATA适当地分布到多个写入缓冲器C31、C32、C33和C34之中的未被设定为专用于事务的写入缓冲器来进行存储。
[0267] 写入数据WDATA被分组到事务中的事实表示:在写入数据WDATA之中的用于相同用途的多个写入数据WDATA被分组到一个事务中。
[0268] 例如,在数据库中,用于诸如校正、添加和更新已存储数据的用途的数据可根据各自的用途而被分组到各个事务中。在这方面,用于校正数据库的数据可被设定为被分组到一个事务组中,而用于添加数据库的数据可被设定为被分组到另一事务组中。
[0269] 因此,当被分组到一个事务中的写入数据TRAN_WDATA1或TRAN_WDATA2从主机C10传输到存储器系统C20时,仅存在提交状态或中止状态,在提交状态中,所有写入数据TRAN_WDATA1或TRAN_WDATA2都被正常地传输和存储并且因此是有效的,而在中止状态中,即使是写入数据TRAN_WDATA1或TRAN_WDATA2中的任意一个未被正常地传输和存储,或者根据主机C10的中止请求,所有写入数据TRAN_WDATA1或TRAN_WDATA2都是无效的。也就是说,仅当被分组到一个事务中的写入数据TRAN_WDATA处于提交状态时,它们才是有意义的,因为它们全部都被正常地传输和存储并且因此都是有效的。
[0270] 例如,为了使从主机C10传输到存储器系统C20的写入数据WDATA之中的、被分组到事务中的第一写入数据TRAN_WDATA1在存储器系统C20中被检查为提交状态,多个第一写入数据TRAN_WDATA1中的全部都应当被正常地从主机C10传输到存储器系统C20,并且被完全地存储在存储器系统C20中,同时不应当存在来自主机C10的中止请求。即使多个第一写入数据TRAN_WDATA1中的任意一个未被正常地传输和存储,或者从主机C10接收到中止请求,则所有的第一写入数据TRAN_WDATA1在存储器系统C20中都被检查为中止状态。
[0271] 类似地,为了使从主机C10传输到存储器系统C20的写入数据WDATA之中的、被分组到第二事务中的第二写入数据TRAN_WDATA2在存储器系统C20中被检查为提交状态,多个第二写入数据TRAN_WDATA2中的全部都应当被正常地从主机C10传输到存储器系统C20,并且被完全地存储在存储器系统C20中,同时不应当存在来自主机C10的中止请求。如果即使多个第二写入数据TRAN_WDATA2中的任意一个未被正常传输和存储,或者从主机C10接收到中止请求,则所有的第二写入数据TRAN_WDATA2在存储器系统C20中都被检查为中止状态。
[0272] 作为参考,通过如上所述的将被分组到事务中的写入数据TRAN_WDATA1或TRAN_WDATA2分类为提交状态或中止状态来对它们进行管理的操作,通常可被称为确保事务操作。
[0273] 在图6中以实线示出在控制器C30的易失性存储器144中分配的多个写入缓冲器C31、C32、C33和C34的原因在于:在从主机C10输入写入数据WDATA之前,控制器C30在易失性存储器144中分配多个写入缓冲器C31、C32、C33和C34。
[0274] 控制器C30通过将多个写入缓冲器C31、C32、C33和C34固定为预定义大小来设定多个写入缓冲器C31、C32、C33和C34。
[0275] 响应于当从主机C10输入被分组到第一事务中的第一写入数据TRAN_WDATA1时与第一写入数据TRAN_WDATA1一起输入的第一总大小信息TTSIZE1,控制器C30检查用于第一写入数据TRAN_WDATA1的第一确定大小,然后检查在易失性存储器144中预先分配的写入缓冲器C31、C32、C33和C34之中是否存在空白空间能够容纳第一确定大小的写入缓冲器。
[0276] 在多个写入缓冲器C31、C32、C33和C34之中的仅一个写入缓冲器中存在能够容纳第一确定大小的空白空间的情况下,针对该一个写入缓冲器设定第一专用选项,并且选择该一个写入缓冲器作为第一写入缓冲器。
[0277] 在多个写入缓冲器C31、C32、C33和C34之中的两个或更多个写入缓冲器中的每一个中存在能够容纳第一确定大小的空白空间的情况下,针对每个能够容纳第一确定大小的两个或更多个写入缓冲器之中的、空白空间大小为最小的写入缓冲器设定第一专用选项,并且选择相应的写入缓冲器作为第一写入缓冲器。
[0278] 在多个写入缓冲器C31、C32、C33和C34之中的任意一个写入缓冲器的空白空间大小不能容纳第一确定大小,并且通过对至少两个写入缓冲器的空白空间求和所获得的大小可容纳第一确定大小的情况下,针对空白空间被求和所获得的大小最接近第一确定大小的至少两个写入缓冲器中的所有写入缓冲器设定第一专用选项,并且选择相应的至少两个写入缓冲器作为第一写入缓冲器。
[0279] 响应于当从主机C10输入被分组到第一事务中的第一写入数据TRAN_WDATA1之后,从主机C10输入被分组到第二事务中的第二写入数据TRAN_WDATA2时与第二写入数据TRAN_WDATA2一起输入的第二总大小信息TTSIZE2,控制器C30检查用于第二写入数据TRAN_WDATA2的第二确定大小,然后检查在易失性存储器144中预先分配的写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中是否存在空白空间能够容纳第二确定大小的写入缓冲器。
[0280] 在多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中的仅一个写入缓冲器中存在能够容纳第二确定大小的空白空间的情况下,针对该一个写入缓冲器设定第二专用选项,并且选择该一个写入缓冲器作为第二写入缓冲器。
[0281] 在多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中的两个或更多个写入缓冲器中的每一个中存在能够容纳第二确定大小的空白空间的情况下,针对每个能够容纳第二确定大小的两个或更多个写入缓冲器之中的、空白空间大小为最小的写入缓冲器设定第二专用选项,并且选择相应的写入缓冲器作为第二写入缓冲器。
[0282] 在多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中的任意一个写入缓冲器的空白空间大小不能容纳第二确定大小,并且通过对至少两个写入缓冲器的空白空间求和所获得的大小可容纳第二确定大小的情况下,针对空白空间被求和所获得的大小最接近第二确定大小的至少两个写入缓冲器中的所有写入缓冲器设定第二专用选项,并且选择相应的至少两个写入缓冲器作为第二写入缓冲器。
[0283] 参照图7,可看到上面参照图6描述的存储器系统C20的详细配置。
[0284] 首先,存储器系统C20中包括的控制器C30响应于来自主机C10的请求而控制第一至第三非易失性存储器装置C40、C50和C60。例如,控制器C30将从第一至第三非易失性存储器装置C40、C50和C60读取的数据提供到主机C10,并且将从主机C10提供的数据存储在第一至第三非易失性存储器装置C40、C50和C60中。为此,控制器C30控制第一至第三非易失性存储器装置C40、C50和C60的操作,诸如读取操作、写入操作、编程操作和擦除操作。
[0285] 详细地,存储器系统C20中包括的控制器C30包括主机接口(HOST INTERFACE)132、处理器(PROCESSOR)134、存储器144、第一存储器接口(MEMORY INTERFACE1)D10、第二存储器接口(MEMORY INTERFACE2)D20和第三存储器接口(MEMORY INTERFACE3)D30。
[0286] 主机接口132执行交换待在存储器系统C20与主机C10之间传输的命令和数据的操作,并且可被配置成通过诸如以下的各种接口协议中的至少一种来与主机C10通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-e或PCIe)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)和MIPI(移动工业处理器接口)。主机接口32可通过被称为主机接口层(HIL)的固件来驱动,作为与主机C10交换数据的区域。
[0287] 第一至第三存储器接口D10、D20和D30用作执行控制器C30与第一至第三非易失性存储器装置C40、C50和C60之间的接口连接的存储器/存储接口,以允许控制器C30响应于来自主机C10的请求来控制各个第一至第三非易失性存储器装置C40、C50和C60。在第一至第三非易失性存储器装置C40、C50和C60中的每一个都是闪速存储器,特别是在第一至第三非易失性存储器装置C40、C50和C60中的每一个都是NAND闪速存储器的情况下,第一至第三存储器接口D10、D20和D30中的每一个生成用于第一至第三非易失性存储器装置C40、C50和C60中的每一个的控制信号,并且在处理器134的控制下,作为NAND闪存控制器(NFC)处理数据。
[0288] 第一至第三存储器接口D10、D20和D30中的每一个可支持在控制器C30与第一至第三非易失性存储器装置C40、C50和C60中的每一个之间处理命令和数据的接口,例如NAND闪存接口的操作,特别是支持控制器C30与第一至第三非易失性存储器装置C40、C50和C60中的每一个之间的数据输入/输出,并且第一至第三存储器接口D10、D20和D30中的每一个可通过被称为闪存接口层(FIL)的固件来驱动,作为与第一至第三非易失性存储器装置C40、C50和C60中的每一个交换数据的区域。
[0289] 作为存储器系统C20和控制器C30的工作存储器的存储器144存储用于驱动存储器系统C20和控制器C30的数据。详细地,当控制器C30响应于来自主机C10的请求控制第一至第三非易失性存储器装置C40、C50和C60时,例如,当控制器C30控制第一至第三非易失性存储器装置C40、C50和C60的诸如读取操作、写入操作、编程操作和擦除操作的操作时,存储器144临时存储应当进行管理的数据。
[0290] 存储器144可通过易失性存储器来实现。例如,存储器144可通过静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实现。
[0291] 存储器144可设置在控制器C30内部,如图7所示,并且可设置在控制器C30外部。在存储器144设置在控制器C30外部的情况下,存储器144应当由外部易失性存储器来实现,其中数据通过单独的存储器接口(未示出)从控制器C30输入到该外部易失性存储器,并且从该外部易失性存储器输出到控制器C30。
[0292] 存储器144存储在控制第一至第三非易失性存储器装置C40、C50和C60的操作的过程中应当进行管理的数据。对于这种数据存储,存储器144可包括程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
[0293] 图7中描述的存储器144是与上面参照图6描述的易失性存储器144相对应的部件。在这方面,上面参照图6描述的易失性存储器144仅用作图7中描述的存储器144的角色之中的写入缓冲器的角色。因此,如上面针对图6中的易失性存储器144所述,图7所示的存储器
144中包括多个写入缓冲器C31、C32、C33和C34。
[0294] 响应于来自主机C10的写入请求或读取请求,处理器134控制控制器C30的整个操作,特别是控制对第一至第三非易失性存储器装置C40、C50和C60的编程操作或读取操作。处理器134驱动被称为闪存转换层(FTL)的固件,以控制控制器C30对第一至第三非易失性存储器装置C40、C50和C60的一般操作。处理器134可通过微处理器或中央处理单元(CPU)来实现。
[0295] 例如,通过处理器134,控制器C30在第一至第三非易失性存储器装置C40、C50和C60中执行从主机C10请求的操作,即利用第一至第三非易失性存储器装置C40、C50和C60来执行与从主机C10接收的命令相对应的命令操作。控制器C30可执行例如以下的前台操作作为与从主机C10接收的命令相对应的命令操作:与写入命令相对应的编程操作、与读取命令相对应的读取操作、与擦除命令相对应的擦除操作、或者与作为设置命令的设置参数命令或如设置特征命令相对应的参数设置操作。
[0296] 控制器C30可通过处理器134对第一至第三非易失性存储器装置C40、C50和C60执行后台操作。对第一至第三非易失性存储器装置C40、C50和C60的后台操作可包括将第一至第三非易失性储器装置C40、C50和C60中的每一个的存储块MEMORY BLOCK<0,1,2,……>之中的特定存储块中存储的数据复制到另一特定存储块中的操作,例如垃圾收集(GC)操作。对第一至第三非易失性存储器装置C40、C50和C60的后台操作可包括在第一至第三非易失性存储器装置C40、C50和C60中的每一个的存储块MEMORY BLOCK<0,1,2,……>之中交换存储的数据的操作,例如损耗均衡(WL)操作。对第一至第三非易失性存储器装置C40、C50和C60的后台操作可包括将控制器C30中存储的映射数据存储在第一至第三非易失性存储器装置C40、C50和C60中的每一个的存储块MEMORY BLOCK<0,1,2,……>中的操作,例如映射清除操作。对第一至第三非易失性存储器装置C40、C50和C60的后台操作可包括对第一至第三非易失性存储器装置C40、C50和C60的坏块管理操作,例如,检查和处理第一至第三非易失性存储器装置C40、C50和C60中的每一个中包括的多个存储块MEMORY BLOCK<0,1,2,……>之中的坏块。
[0297] 控制器C30可通过处理器134,对应于访问第一至第三非易失性存储器装置C40、C50和C60中的每一个中的存储块MEMORY BLOCK<0,1,2,……>的操作来生成和管理日志数据。访问第一至第三非易失性存储器装置C40、C50和C60中的每一个的存储块MEMORY BLOCK<0,1,2,……>的操作包括对第一至第三非易失性存储器装置C40、C50和C60中的每一个的存储块MEMORY BLOCK<0,1,2,……>执行前台操作或后台操作。
[0298] 在控制器C30的处理器134中,可包括用于对第一至第三非易失性存储器装置C40、C50和C60执行坏块管理的单元(未示出)。用于执行坏块管理的单元执行坏块管理,坏块管理检查第一至第三非易失性存储器装置C40、C50和C60中的每一个中包括的多个存储块MEMORY BLOCK<0,1,2,……>之中的坏块,并且将检查到的坏块作为坏的处理。坏块管理表示,在第一至第三非易失性存储器装置C40、C50和C60中的每一个是闪速存储器,例如是NAND闪速存储器的情况下,因为当写入数据,例如编程数据时,由于NAND闪速存储器的特性可能出现编程失败,所以将已经出现编程失败的存储块作为坏的处理,并且将编程失败的数据写入(即,编程)到新的存储块中。
[0299] 控制器C30通过处理器134执行传输待在控制器C30与第一至第三非易失性存储器装置C40、C50和C60之间输入/输出的命令和数据的操作。待在控制器C30与第一至第三非易失性存储器装置C40、C50和C60之间输入/输出的命令和数据可从主机C10传输到控制器C30,或者可在控制器C30内部生成。
[0300] 控制器C30可通过上述处理器134、主机接口132和存储器144执行以下操作:检查从主机C10输入的写入数据WDATA是否被分组到事务中,从而分类为未被分组到事务中的正常写入数据NMAL_WDATA与被分组到事务中的第一写入数据TRAN_WDATA1和第二写入数据TRAN_WDATA2。
[0301] 而且,控制器C30可通过上述的处理器134、主机接口132和存储器144执行以下操作:在存储器144中分配多个写入缓冲器C31、C32、C33和C34,用于临时存储从主机C10输入的写入数据WDATA。
[0302] 控制器C30可通过上述的处理器134和存储器144将正常写入数据NMAL_WDATA临时存储在存储器144中分配的多个写入缓冲器C31、C32、C33和C34之中的、未被设定为专用于事务的写入缓冲器中。
[0303] 此外,控制器C30可通过上述的处理器134、主机接口132和存储器144执行以下操作:检查与被分组到第一事务中的第一写入数据TRAN_WDATA1一起输入的第一总大小信息TTSIZE1,根据检查结果在多个写入缓冲器C31、C32、C33和C34之中设定专用于第一事务的至少一个第一写入缓冲器,从而临时存储第一写入数据TRAN_WDATA1。
[0304] 进一步地,控制器C30可通过上述的处理器134、主机接口132和存储器144执行以下操作:检查与被分组到第二事务中的第二写入数据TRAN_WDATA2一起输入的第二总大小信息TTSIZE2,根据检查结果在多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中设定专用于第二事务的至少一个第二写入缓冲器,从而临时存储第二写入数据TRAN_WDATA2。
[0305] 即使没有供电,第一至第三非易失性存储装置C40、C50和C60中的每一个也可保留存储的数据。特别地,第一至第三非易失性存储器装置C40、C50和C60中的每一个可通过写入操作存储从主机C10提供的写入数据WDATA,并且可通过读取操作将所存储的读取数据(未示出)提供到主机C10。
[0306] 虽然第一至第三非易失性存储器装置C40、C50和C60中的每一个可由诸如闪速存储器(例如,NAND闪速存储器)的非易失性存储器来实现,但应当注意的是,第一至第三非易失性存储器装置C40、C50和C60中的每一个可由诸如以下的存储器之中的任意一种存储器来实现:相变存储器(PCRAM:相变随机存取存储器)、电阻式存储器(RRAM(ReRAM):电阻式随机存取存储器)、铁电存储器(FRAM:铁电随机存取存储器)和自旋转移力矩磁性存储器(STT-RAM(STT-MRAM):自旋转移力矩磁性随机存取存储器)。
[0307] 第一至第三非易失性存储器装置C40、C50和C60中的每一个包括多个存储块MEMORY BLOCK<0,1,2,……>。换言之,第一至第三非易失性存储器装置C40、C50和C60中的每一个可通过写入操作将从主机C10提供的写入数据WDATA存储在存储块MEMORY BLOCK<0,1,2,……>中,并且可通过读取操作将存储块MEMORY BLOCK<0,1,2,……>中存储的读取数据(未示出)提供到主机C10。
[0308] 第一至第三非易失性存储器装置C40、C50和C60的每一个中包括的存储块MEMORY BLOCK<0,1,2,……>中的每一个包括多个页面P<0,1,2,3,4,……>。而且,虽然未在附图中详细示出,但页面P<0,1,2,3,4,……>的每一个中包括多个存储器单元。
[0309] 根据存储块中包括的一个存储器单元中可存储或表达的位的数量,第一至第三非易失性存储器装置C40、C50和C60的每一个中包括的存储块MEMORY BLOCK<0,1,2,……>中的每一个可被分类为单层单元(SLC)存储块或多层单元(MLC)存储块。SLC存储块包括由每个存储1位的存储器单元实现的多个页面,并且具有优异的数据计算性能和高耐久性。MLC存储块包括由每个存储多位数据(例如,2位或更多位)的存储器单元实现的多个页面,并且因为具有比SLC存储块更大的数据存储空间,所以MLC存储块可比SLC存储块更高度地集成。
[0310] 特别地,MLC存储块可被分类为MLC存储块、三层单元(TLC)存储块、四层单元(QLC)存储块或多层单元存储块,其中MLC存储块包括由每个能够存储2位数据的存储器单元实现的多个页面的,TLC存储块包括由每个能够存储3位数据的存储器单元实现的多个页面,QLC存储块包括由每个能够存储4位数据的存储器单元实现的多个页面,多层单元存储块包括由每个能够存储5位或更多位数据的存储器单元实现的多个页面。
[0311] 图8A至图8E和图9A至图9D是帮助说明根据本公开的第二实施例的存储器系统的操作的示图。
[0312] 首先,下面将参照图8A至图8E中使用的若干附图标记来描述上面参照图6和图7描述的控制器C30将从主机C10输入的写入数据WDATA分类为正常写入数据NMAL_WDATA、第一写入数据TRAN_WDATA1和第二写入数据TRAN_WDATA2的方案。
[0313] 详细地,当从主机C10向存储器系统C20输入写入数据WDATA时,一起输入了分别对应于写入数据WDATA的写入命令(未示出),并且写入命令中分别包括写入数据WDATA的事务信息(未示出)。
[0314] 在写入数据WDATA中的每一个的事务信息中,可包括事务ID(标识)信息TRID、事务提交信息(未示出)和事务中止信息(未示出)。
[0315] 因此,存储器系统C20中包括的控制器C30可检查写入命令中包括的事务信息中的事务ID信息TRID,从而可将写入数据WDATA分类为未被分组到事务中的正常写入数据NMAL_WDATA或被分组到事务中的事务写入数据TRAN_WDATA1或TRAN_WDATA2。
[0316] 例如,控制器C30可将从主机C10输入的写入数据WDATA之中的、事务ID信息TRID具有值1的写入数据WDATA分类为第一写入数据TRAN_WDATA1。
[0317] 类似地,控制器C30可将从主机C10输入的写入数据WDATA之中的、事务ID信息TRID具有值2的写入数据WDATA分类为第二写入数据TRAN_WDATA2。
[0318] 此外,控制器C30可将从主机C10输入的写入数据WDATA之中的、事务ID信息TRID未被设定为任何值的写入数据WDATA分类为正常写入数据NMAL_WDATA。
[0319] 作为参考,事务ID信息TRID未被设定为任何值的事实可表示:将事务ID信息TRID设定为预定义初始值或作为事务ID信息无意义的值的情况。
[0320] 在与被分组到事务中的写入数据TRAN_WDATA1或TRAN_WDATA2的开始数据相对应的写入命令中,还另外包括与写入数据TRAN_WDATA1或TRAN_WDATA2的总大小有关的总大小信息TTSIZE1或TTSIZE2。
[0321] 例如,在与被分组到第一事务中的第一写入数据TRAN_WDATA1的开始数据相对应的第一写入命令中,另外包括与第一写入数据TRAN_WDATA1的总大小有关的第一总大小信息TTSIZE1。
[0322] 由于这个事实,在从主机C10输入第一写入数据TRAN_WDATA1之中的、将首先输入的开始数据之前,控制器C30可通过检查第一写入命令来检查第一总大小信息TTSIZE1。
[0323] 也就是说,在从主机C10输入第一写入数据TRAN_WDATA1之前,控制器C30可通过检查第一总大小信息TTSIZE1来检查第一写入数据TRAN_WDATA1的第一确定大小。
[0324] 类似地,在与被分组到第二事务中的第二写入数据TRAN_WDATA2的开始数据相对应的第二写入命令中,另外包括与第二写入数据TRAN_WDATA2的总大小有关的第二总大小信息TTSIZE2。
[0325] 由于这个事实,在从主机C10输入第二写入数据TRAN_WDATA2之中的、将首先输入的开始数据之前,控制器C30可通过检查第二写入命令来检查第二总大小信息TTSIZE2。
[0326] 也就是说,在从主机C10输入第二写入数据TRAN_WDATA2之前,控制器C30可通过检查第二总大小信息TTSIZE2来检查第二写入数据TRAN_WDATA2的第二确定大小。
[0327] 在从主机C10输入写入数据WDATA之前,控制器C30在易失性存储器144中分配多个写入缓冲器C31、C32、C33和C34。以这种方式,将多个写入缓冲器C31、C32、C33和C34中的每一个固定为预定义大小。例如,如图8A至图8E中示例性示出的,可将预定义大小设定为6。也就是说,多个写入缓冲器C31、C32、C33和C34中的每一个可存储六段写入数据。
[0328] 以这种方式,在易失性存储器144中预先分配多个写入缓冲器C31、C32、C33和C34之后,当从主机C10输入未被分组到事务中的正常写入数据NMAL_WDATA时,控制器C30通过将正常写入数据NMAL_WDATA分布到多个写入缓冲器C31、C32、C33和C34之中的、未被设定为专用于事务的写入缓冲器来进行存储。
[0329] 在易失性存储器144中预先分配多个写入缓冲器C31、C32、C33和C34之后,当从主机C10输入被分组到第一事务中的第一写入数据TRAN_WDATA1和与第一事务的总大小有关的第一总大小信息TTSIZE1时,控制器C30响应于第一总大小信息TTSIZE1,针对第一事务设定第一专用选项,第一专用选项用于专有地使用多个写入缓冲器C31、C32、C33和C34之中的至少一个第一写入缓冲器。
[0330] 而且,在易失性存储器144中预先分配多个写入缓冲器C31、C32、C33和C34之后,当从主机C10输入被分组到第二事务中的第二写入数据TRAN_WDATA2和与第二事务的总大小有关的第二总大小信息TTSIZE2时,控制器C30响应于第二总大小信息TTSIZE2,针对第二事务设定第二专用选项,第二专用选项用于专有地使用多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中的至少一个第二写入缓冲器。
[0331] 控制器C30通过将正常写入数据NMAL_WDATA适当地分布到多个写入缓冲器C31、C32、C33和C34之中的、未被设定为专用于事务的写入缓冲器来存储正常写入数据NMAL_WDATA。换言之,不单独地存在专用于存储正常写入数据NMAL_WDATA的写入缓冲器。因此,可不预先定义将通过被分布到多个写入缓冲器C31、C32、C33和C34而进行存储的正常写入数据NMAL_WDATA存储在非易失性存储器装置C40、C50和C60中的时间。
[0332] 在被设定为专用于第一事务的第一写入缓冲器的情况下,第一写入缓冲器具有等于或大于与第一总大小信息TTSIZE1相对应的第一确定大小的存储空间。因为在第一写入数据TRAN_WDATA1以与第一确定大小相对应的量存储在第一写入缓冲器中时确定是否完成了第一事务的提交,所以控制器C30可意识到不再输入第一写入数据TRAN_WDATA1。因此,在第一写入数据TRAN_WDATA1以与第一确定大小相对应的量存储在第一写入缓冲器中时,控制器C30检查是否完成了第一事务的提交。作为检查的结果,在完成第一写入缓冲器中存储的第一写入数据TRAN_WDATA1的提交的情况下,控制器C30对第一写入缓冲器执行第一清除操作,从而执行将第一写入缓冲器中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置C40、C50和C60中的第一写入操作。在执行第一写入操作之后,控制器C30针对第一写入缓冲器重新设定第一专用选项。针对第一写入缓冲器重新设定第一专用选项的事实表示第一写入缓冲器不再被专用于第一事务。
[0333] 即使在第一写入数据TRAN_WDATA1以第一确定大小存储在第一写入缓冲器中之前,控制器C30也在每个确定时间检查第一写入数据TRAN_WDATA1是否被中止。作为检查的结果,在第一写入缓冲器中存储的第一写入数据TRAN_WDATA1被中止的情况下,控制器C30丢弃第一写入缓冲器中存储的第一写入数据TRAN_WDATA1,并且针对第一写入缓冲器重新设定第一专用选项。检查第一写入数据TRAN_WDATA1是否被中止的确定时间可以是第一写入数据TRAN_WDATA1中的每一个被输入到第一写入缓冲器中的时间。
[0334] 在被设定为专用于第二事务的第二写入缓冲器的情况下,第二写入缓冲器具有等于或大于与第二总大小信息TTSIZE2相对应的第二确定大小的存储空间。因为在第二写入数据TRAN_WDATA2以与第二确定大小相对应的量存储在第二写入缓冲器中时确定是否完成了第二事务的提交,所以控制器C30可意识到不再输入第二写入数据TRAN_WDATA2。因此,在第二写入数据TRAN_WDATA2以与第二确定大小相对应的量存储在第二写入缓冲器中时,控制器C30检查是否完成了第二事务的提交。作为检查的结果,在完成了第二写入缓冲器中存储的第二写入数据TRAN_WDATA2的提交的情况下,控制器C30对第二写入缓冲器执行第二清除操作,从而执行将第二写入缓冲器中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置C40、C50和C60中的第二写入操作。在执行第二写入操作之后,控制器C30针对第二写入缓冲器重新设定第二专用选项。针对第二写入缓冲器重新设定第二专用选项的事实表示第二写入缓冲器不再被专用于第二事务。
[0335] 即使在第二写入数据TRAN_WDATA2以第二确定大小存储在第二写入缓冲器中之前,控制器C30也在每个确定时间检查第二写入数据TRAN_WDATA2是否被中止。作为检查的结果,在第二写入缓冲器中存储的第二写入数据TRAN_WDATA2被中止的情况下,控制器C30丢弃第二写入缓冲器中存储的第二写入数据TRAN_WDATA2,并且针对第二写入缓冲器重新设定第二专用选项。检查第二写入数据TRAN_WDATA2是否被中止的确定时间可以是第二写入数据TRAN_WDATA2中的每一个被输入到第二写入缓冲器中的时间。
[0336] 在检查到第一事务被提交的时间和检查到第二事务被提交的时间处于第一设定时间间隔内的情况下,控制器C30使对应于第一事务的提交而对第一写入缓冲器执行第一清除操作的时间和对应于第二事务的提交而对第二写入缓冲器执行第二清除操作的时间同步。
[0337] 在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,可认为开始执行第一写入操作的时间和开始执行第二写入操作的时间同步,其中第一写入操作将第一写入缓冲器中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置C40、C50和C60中,并且第二写入操作将第二写入缓冲器中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置C40、C50和C60中。因此,很有可能完成执行第一写入操作的时间和完成执行第二写入操作的时间没有较大差异。
[0338] 因此,在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,控制器C30可使第一确认信号传输到主机C10的时间和第二确认信号传输到主机C10的时间同步,其中第一确认信号用于通知主机C10完成了与第一清除操作相关联的第一写入操作的执行,并且第二确认信号用于通知主机C10完成了与第二清除操作相关联的第二写入操作的执行。
[0339] 当然,即使在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,也可能存在完成执行第一写入操作的时间和完成执行第二写入操作的时间具有较大差异的情况。
[0340] 因此,即使在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,仅在生成第一确认信号的时间和生成第二确认信号的时间处于第二设定时间间隔内的情况下,控制器C30可使第一确认信号传输到主机C10的时间和第二确认信号传输到主机C10的时间同步,其中第一确认信号用于通知主机C10完成了与第一清除操作相关联的第一写入操作的执行,并且第二确认信号用于通知主机C10完成了与第二清除操作相关联的第二写入操作的执行。
[0341] 总之,控制器C30可通过仅检查第一清除操作的执行时间和第二清除操作的执行时间是否同步来执行第一同步操作,第一同步操作使第一确认信号传输到主机C10的时间和第二确认信号传输到主机C10的时间同步。
[0342] 而且,即使在第一清除操作的执行时间和第二清除操作的执行时间同步的情况下,也仅在生成第一确认信号的时间和生成第二确认信号的时间之间的差处于第二设定时间间隔内的情况下,控制器C30才可执行第二同步操作,第二同步操作使第一确认信号传输到主机C10的时间和第二确认信号传输到主机C10的时间同步。
[0343] 作为参考,第一同步操作和第二同步操作是不能同时执行的操作。因此,在控制器C30执行第一同步操作的情况下,不执行第二同步操作。相反,在控制器C30执行第二同步操作的情况下,不执行第一同步操作。可预先根据存储器特性和设计者的选择来定义控制器C30将执行第一同步操作还是第二同步操作。
[0344] 可预先根据存储器系统的特性和设计者的选择来定义第一设定时间间隔,第一设定时间间隔用作确定是否使第一清除操作的执行时间和第二清除操作的执行时间同步的参考。
[0345] 类似地,可预先根据存储器系统的特性和设计者的选择来定义第二设定时间间隔,第二设定时间间隔用作确定是否使第一确认信号传输到主机C10的时间和第二确认信号传输到主机C10的时间同步的参考。
[0346] 参照图8A,可假设处于控制器C30在第一时间之前已经在易失性存储器144中分配每个能够存储六段写入数据WDATA的四个写入缓冲器C31、C32、C33和C34的状态。
[0347] 接着,可假设在第一时间从主机C10输入总共四段写入数据WDATA。控制器C30可检查从主机C10输入的各个四段写入数据WDATA的事务ID信息TRID,并且可将所有四段写入数据WDATA分类为未被分组到事务中的正常写入数据NMAL_WDATA。
[0348] 然后,控制器C30在第一时间检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中是否存在被设定为专用于事务的写入缓冲器。作为检查的结果,处于在第一时间在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34都未被设定为专用于事务的状态。
[0349] 因此,控制器C30可通过将作为在第一时间从主机C10输入的四段正常写入数据NMAL_WDATA的A、B、C和D适当地分布到四个写入缓冲器C31、C32、C33和C34来进行存储。例如,在附图中,作为在第一时间从主机C10输入的四段正常写入数据NMAL_WDATA的A、B、C和D之中的在前的两段写入数据的A和B被存储在第一写入缓冲器C31中。然后,作为在第一时间从主机C10输入的四段正常写入数据NMAL_WDATA的A、B、C和D之中的随后的两段写入数据的C和D被存储在第二写入缓冲器C32中。
[0350] 总之,控制器C30分布地存储作为在第一时间从主机C10输入的四段正常写入数据NMAL_WDATA的A、B、C和D,两个两个地存储在四个写入缓冲器C31、C32、C33和C34之中的第一写入缓冲器C31和第二写入缓冲器C32中。因此,在每个具有能够存储六段写入数据的存储空间的第一写入缓冲器C31和第二写入缓冲器C32的每一个中,存储了两段正常写入数据NMAL_WDATA,并且仍然存在可用于其它四段写入数据的空白空间。
[0351] 参照图8B,可假设在接续图8A所示的第一时间的第二时间,从主机C10输入总共五段写入数据WDATA。没有预先定义从主机C10输入五段写入数据WDATA的顺序,并且可假设它们是随机输入的。
[0352] 详细地,控制器C30检查在第二时间从主机C10输入的各个五段写入数据WDATA的事务ID信息TRID,并且将五段写入数据WDATA分类为三段第一写入数据TRAN_WDATA1和两段正常写入数据NMAL_WDATA。
[0353] 更详细地,控制器C30确定在第二时间从主机C10输入的五段写入数据WDATA之中,作为事务ID信息TRID具有值1的三段写入数据WDATA的0、1和2是被分组到第一事务中的写入数据WDATA,并且将它们分类为第一写入数据TRAN_WDATA1。
[0354] 在与被分组到第一写入数据TRAN_WDATA1中的0、1和2之中的、作为开始数据的0相对应的第一写入命令(未示出)中,包括第一总大小信息TTSIZE1。因此,控制器C30可从对应于0的第一写入命令中检查到第一总大小信息TTSIZE1为5。
[0355] 以这种方式,在检查到第一总大小信息TTSIZE1为5之后,控制器C30检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中是否存在具有能够存储被分组到第一事务中的总共五段第一写入数据TRAN_WDATA1的空白空间的写入缓冲器。
[0356] 作为检查的结果,因为如上所述在第一时间在四个写入缓冲器C31、C32、C33和C34之中的第一写入缓冲器C31和第二写入缓冲器C32的每一个中存储了两段正常写入数据NMAL_WDATA,所以第一写入缓冲器C31和第二写入缓冲器C32中的每一个具有可用于其它四段写入数据的空白空间。因此,第一写入缓冲器C31和第二写入缓冲器C32中的每一个不适于容纳被分组到第一事务中的总共五段第一写入数据TRAN_WDATA1。
[0357] 另一方面,因为如上所述尚未在第一时间在四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33和第四写入缓冲器C34的每一个中存储写入数据,所以第三写入缓冲器C33和第四写入缓冲器C34中的每一个具有可用于其它六段写入数据的空白空间。因此,第三写入缓冲器C33和第四写入缓冲器C34中的每一个适于容纳被分组到第一事务中的总共五段第一写入数据TRAN_WDATA1。
[0358] 换言之,在四个写入缓冲器C31、C32、C33和C34之中的一个或多个写入缓冲器C33和C34的每一个中存在能够容纳第一确定大小的空白空间。
[0359] 因为如上所述尚未在第一时间在四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33和第四写入缓冲器C34的每一个中存储写入数据,所以在第二时间,第三写入缓冲器C33和第四写入缓冲器C34以相同的方式处于它们中的每一个具有可用于六段写入数据的空白空间的状态。
[0360] 因此,可针对四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33和第四写入缓冲器C34中的任意一个写入缓冲器设定第一专用选项,并且将相应的写入缓冲器作为第一写入缓冲器进行管理。作为参考,在图8B中示出了针对第三写入缓冲器C33设定第一专用选项,因此将第三写入缓冲器C33专用于第一事务。
[0361] 以这种方式,在输入被分组到第一写入数据TRAN_WDATA1中的0、1和2之中的、作为开始数据的0之前,控制器C30可检查第一总大小信息TTSIZE1,从而将预先在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33设定为专用于第一事务的第一写入缓冲器。
[0362] 当在第二时间从主机C10输入所有五段写入数据WDATA之后,控制器C30可检查到只有0、1和2作为被分组到第一事务中的第一写入数据TRAN_WDATA1存在。换言之,当在第二时间从主机C10输入了五段写入数据WDATA时,控制器C30可检查到尚未完成提交第一事务(事务未完成)。
[0363] 总之,控制器C30在第二时间选择具有能够存储总共六段写入数据的空间的第三写入缓冲器C33作为专用于第一事务的第一写入缓冲器,将作为从主机C10输入的三段第一写入数据TRAN_WDATA1的0、1和2存储在第三写入缓冲器C33中,并且保留了可用于其余三段写入数据的空间。
[0364] 此外,控制器C30确定在第二时间从主机C10输入的五段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的E和F是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0365] 接着,控制器C30在第二时间检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中是否存在被设定为专用于事务的写入缓冲器。作为检查的结果,处于第三写入缓冲器C33在第二时间被设定为专用于第一事务的状态。作为参考,为了使第三写入缓冲器C33在第二时间被设定为专用于第一事务的第一写入缓冲器,应当被输入至少一段第一写入数据TRAN_WDATA1。因此,假设图8B表示在输入正常写入数据NMAL_WDATA之前输入了至少一段第一写入数据TRAN_WDATA1的情况。
[0366] 因此,控制器C30可通过将作为在第二时间从主机C10输入的两段正常写入数据NMAL_WDATA的E和F适当地分布到四个写入缓冲器C31、C32、C33和C34之中的、除被设定为专用于第一事务的第三写入缓冲器C33之外的剩余写入缓冲器C31、C32和C34来进行存储。例如,在附图中,作为在第二时间从主机C10输入的两段正常写入数据NMAL_WDATA的E和F被存储在第一写入缓冲器C31中。
[0367] 总之,控制器C30将作为在第二时间从主机C10输入的两段正常写入数据NMAL_WDATA的E和F存储在四个写入缓冲器C31、C32、C33和C34之中的第一写入缓冲器C31中。因此,在具有能够存储六段写入数据的存储空间的第一写入缓冲器C31中,因为在第一时间和第二时间中的每一个时间存储了两段写入数据,所以存储了总共四段正常写入数据NMAL_WDATA,因此仍然存在可用于其它两段写入数据的空间。
[0368] 参照图8C,可假设,在接续图8B所示的第二时间的第三时间,从主机C10输入总共八段写入数据WDATA。没有预先定义从主机C10输入八段写入数据WDATA的顺序,并且可假设它们是随机输入的。
[0369] 详细地,控制器C30检查在第三时间从主机C10输入的各个八段写入数据WDATA的事务ID信息TRID,并且将八段写入数据WDATA分类为两段第一写入数据TRAN_WDATA1、四段第二写入数据TRAN_WDATA2和两段正常写入数据NMAL_WDATA。
[0370] 更详细地,控制器C30确定在第三时间从主机C10输入的八段写入数据WDATA之中,作为事务ID信息TRID具有值1的两段写入数据WDATA的3和4是被分组到第一事务中的写入数据WDATA,并且将它们分类为第一写入数据TRAN_WDATA1。
[0371] 此时,通过上面参照图8B描述的在第二时间的操作,处于以下状态:在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33已被设定为专用于第一事务,并且被用作存储第一写入数据TRAN_WDATA1的第一写入缓冲器。
[0372] 因此,控制器C30在第三时间立即将被分组到第一写入数据TRAN_WDATA1中的3和4存储在第一写入缓冲器中,而无需单独的附加操作。此时,通过上面参照图8B描述的在第二时间的操作,处于以下状态:控制器C30已将能够存储总共六段写入数据的第三写入缓冲器C33设定为专用于第一事务的第一写入缓冲器,并且第三写入缓冲器C33仅存储了作为三段写入数据的0、1和2,并且保留了可用于其它三段写入数据的空间。
[0373] 由于这个事实,控制器C30在第三时间立即将被分组到第一写入数据TRAN_WDATA1中的3和4存储在第一写入缓冲器中,而无需单独的附加操作。以这种方式,当被分组到第一写入数据TRAN_WDATA1中的3和4在第三时间被存储在第一写入缓冲器中,变成以下状态:第一写入数据TRAN_WDATA1被存储在第一写入缓冲器中的可用于存储六段写入数据的空间中的、能够存储五段写入数据的空间中。
[0374] 在作为被分组到第一事务中的第一写入数据TRAN_WDATA1的0、1、2、3和4被存储在第一写入缓冲器中,并因此第一写入数据TRAN_WDATA1被存储在第一写入缓冲器中的可用于存储六段写入数据的空间中的、能够存储五段写入数据的空间中时,控制器C30可检查到处于完成了第一事务的提交的状态(事务完成)。
[0375] 总之,通过在第三时间将作为从主机C10输入的两段第一写入数据TRAN_WDATA1的3和4另外存储在第三写入缓冲器C33中,其中第三写入缓冲器C33在上述缝纫第二时间被设定为专用于第一事务的第一写入缓冲器,控制器C30可检查到处于完成了第一事务的提交的状态(事务完成)。
[0376] 进一步地,控制器C30确定在第三时间从主机C10输入的八段写入数据WDATA之中,作为事务ID信息TRID具有值2的四段写入数据WDATA的110、111、112和113是被分组到第二事务中的写入数据WDATA,并且将它们分类为第二写入数据TRAN_WDATA2。
[0377] 在与被分组到第二写入数据TRAN_WDATA2中的110、111、112和113之中的、作为开始数据的110相对应的第二写入命令(未示出)中,包括第二总大小信息TTSIZE2。因此,控制器C30可从对应于110的第二写入命令中检查到第二总大小信息TTSIZE2为4。
[0378] 以这种方式,在检查到第二总大小信息TTSIZE2为4之后,控制器C30检查在易失性存储器144中分配的、除被设定为专用于第一事务的第一写入缓冲器之外的剩余的写入缓冲器C31、C32和C34之中,是否存在具有能够存储被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2的空白空间的写入缓冲器。
[0379] 作为检查的结果,处于以下状态:四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33在上述的第二时间已被设定为专用于第一事务的第一写入缓冲器。
[0380] 因此,检查在除第三写入缓冲器C33之外的剩余的三个写入缓冲器C31、C32和C34之中,是否存在具有能够存储被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2的空白空间的写入缓冲器。
[0381] 作为检查的结果,因为随着在上述的第一时间和第二时间中的每一个时间存储了两段正常写入数据NMAL_WDATA,总共四段正常写入数据NMAL_WDATA已被存储在三个写入缓冲器C31、C32和C34之中的第一写入缓冲器C31中,所以处于第一写入缓冲器C31具有能够存储其它两段写入数据的空白空间的状态。因此,第一写入缓冲器C31不适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0382] 因为在上述的第一时间已在三个写入缓冲器C31、C32和C34之中的第二写入缓冲器C32中存储了两段正常写入数据NMAL_WDATA,所以处于第二写入缓冲器C32具有能够存储四段写入数据的空白空间的状态。因此,第二写入缓冲器C32适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0383] 因为在上述的第一时间和第二时间,尚未在三个写入缓冲器C31、C32和C34之中的第四写入缓冲器C34中存储写入数据,所以处于第四写入缓冲器C34具有可用于存储六段写入数据的空间的状态。因此,第四写入缓冲器C34适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0384] 换言之,在三个写入缓冲器C31、C32和C34之中的一个或多个写入缓冲器C32和C34的每一个中存在能够容纳第二确定大小的空白空间。
[0385] 以这种方式,因为一个或多个写入缓冲器C32和C34中的每一个具有能够容纳第二确定大小的空白空间,所以控制器C30针对空白空间的大小相对较小的写入缓冲器设定第二专用选项,并且将相应的写入缓冲器作为第二写入缓冲器进行管理。也就是说,控制器C30针对第二写入缓冲器C32设定第二专用选项,并且将第二写入缓冲器C32作为第二写入缓冲器进行管理,其中在各自具有等于或大于第二确定大小的空白空间的第二写入缓冲器C32和第四写入缓冲器C34之中,第二写入缓冲器C32的空白空间的大小相对较小。
[0386] 以这种方式,控制器C30可在输入被分组到第二写入数据TRAN_WDATA2的110、111、112和113之中的、作为开始数据的110之前检查第二总大小信息TTSIZE2,从而将在易失性存储器144中预先分配的四个写入缓冲器C31、C32、C33和C34之中的第二写入缓冲器C32设定为专用于第二事务的第二写入缓冲器。
[0387] 因此,在第三时间,每次输入从主机C10输入的八段写入数据WDATA之中的被分组到第二事务的四段第二写入数据TRAN_WDATA2中的每一个时,控制器C30将四段第二写入数据TRAN_WDATA2中的每一个存储在被设定为专用于第二事务的第二写入缓冲器中。
[0388] 以这种方式,因为被分组到第二写入数据TRAN_WDATA2的110、111、112和113在第三时间被存储在第二写入缓冲器中,所以变成以下状态:第二写入数据TRAN_WDATA2被存储在第二写入缓冲器中包括的可用于四段写入数据的整个空白空间中。
[0389] 在作为被分组到第二事务中的第二写入数据TRAN_WDATA2的110、111、112和113被存储在第二写入缓冲器中,并因此第二写入数据TRAN_WDATA2被存储在第二写入缓冲器中包括的可用于四段写入数据的整个空白空间中时,控制器C30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0390] 总之,通过在第三时间选择具有用于总共四段写入数据的空间的第二写入缓冲器C32作为专用于第二事务的第二写入缓冲器,并且存储作为从主机C10输入的四段第二写入数据TRAN_WDATA2的110、111、112和113,控制器C30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0391] 此外,控制器C30确定在第三时间从主机C10输入的八段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的G和H是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0392] 接着,控制器C30在第三时间检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中是否存在被设定为专用于事务的写入缓冲器。作为检查的结果,处于以下状态:在第三时间,第三写入缓冲器C33被设定为专用于第一事务,第二写入缓冲器C32被设定为专用于第二事务。作为参考,为了使第二写入缓冲器C32在第三时间被设定为专用于第二事务的第二写入缓冲器,应当输入至少一段第二写入数据TRAN_WDATA2。因此,假设图8C表示在输入正常写入数据NMAL_WDATA之前输入了至少一段第二写入数据TRAN_WDATA2的情况。
[0393] 因此,控制器C30可通过将作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H适当地分布到四个写入缓冲器C31、C32、C33和C34之中的、除被设定为专用于第一事务的第三写入缓冲器C33和被设定为专用于第二事务的第二写入缓冲器C32之外的剩余的写入缓冲器C31和C34来对它们进行存储。例如,在附图中,作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H被存储在第四写入缓冲器C34中。
[0394] 总之,控制器C30将作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H存储在四个写入缓冲器C31、C32、C33和C34之中的第四写入缓冲器C34中。因此,在具有用于六段写入数据的存储空间的第四写入缓冲器C34中,在第三时间存储了两段正常写入数据NMAL_WDATA,并且将用于四段写入数据的空间保留为空白。
[0395] 在如图8C所示的状态中,因为第一事务和第二事务两者完成提交,所以处于应当清除第一写入缓冲器和第二写入缓冲器的情况。
[0396] 因为假设在第三时间从主机C10输入写入数据WDATA的输入顺序是随机的,所以完成第一事务的提交的时间可先于完成第二事务的提交的时间,或者完成第二事务的提交的时间可先于完成第一事务的提交的时间。
[0397] 在完成第一事务的提交的时间先于完成第二事务的提交的时间的情况下,可假设在从完成了第一事务的提交的时间起的第一设定时间间隔内完成了第二事务的提交。
[0398] 相反,在完成第二事务的提交的时间先于完成第一事务的提交的时间的情况下,可假设在从完成了第二事务的提交的时间起的第一设定时间间隔内完成了第一事务的提交。
[0399] 以这种方式,在完成第一事务的提交的时间与完成第二事务的提交的时间之间的差处于第一设定时间间隔内的情况下,控制器C30使对应于第一事务的提交而对第一写入缓冲器执行第一清除操作FLUSH1的时间和对应于第二事务的提交而对第二写入缓冲器执行第二清除操作FLUSH2的时间同步。
[0400] 以这种方式,通过使第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步,可以认为使开始执行第一写入操作WRITE1的时间和开始执行第二写入操作WRITE2的时间同步,其中第一写入操作WRITE1将第一写入缓冲器中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置C40、C50和C60中,并且第二写入操作WRITE2将第二写入缓冲器中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置C40、C50和C60中。
[0401] 因此,如在图9A所示的第一同步操作的情况下,当第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步时,控制器C30可使第一确认信号ACK1传输到主机C10的时间和第二确认信号ACK2传输到主机C10的时间同步,其中第一确认信号ACK1用于通知主机C10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机C10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0402] 当然,如在图9B所示的第一同步操作的情况下,当第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间不同步时,控制器C30可不使第一确认信号ACK1传输到主机C10的时间和第二确认信号ACK2传输到主机C10的时间同步,其中第一确认信号ACK1用于通知主机C10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机C10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0403] 而且,在如图9C所示的第二同步操作的情况下,即使在第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步的情况下,仅在生成第一确认信号ACK1的时间和生成第二确认信号ACK2的时间处于第二设定时间间隔内的情况下,控制器C30可使第一确认信号ACK1传输到主机C10的时间和第二确认信号ACK2传输到主机C10的时间同步,其中第一确认信号ACK1用于通知主机C10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机C10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0404] 当然,在如图9D所示的第二同步操作的情况下,即使在第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步的情况下,在生成第一确认信号ACK1的时间和生成第二确认信号ACK2的时间之间的差不处于第二设定时间间隔内的情况下,控制器C30可不使第一确认信号ACK1传输到主机C10的时间和第二确认信号ACK2传输到主机C10的时间同步,其中第一确认信号ACK1用于通知主机C10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机C10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0405] 再次参照图8C,在完成第一写入操作WRITE1的执行之后,控制器C30重新设定对专用于第一事务的第一写入缓冲器的设定。也就是说,在上述的第二时间,通过针对在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33设定第一专用选项,控制器C30已经使用第三写入缓冲器C33作为专用于第一事务的第一写入缓冲器。因此,通过在第三时间完成第一写入操作WRITE1的执行之后,重新设定针对第一写入缓冲器的第一专用选项,已用作第一写入缓冲器的第三写入缓冲器C33可不像第二时间那样被专用于第一事务。即,在第三时间之后,在第二时间和第三时间已被专用于存储第一写入数据TRAN_WDATA1的第三写入缓冲器C33可用于存储例如正常写入数据NMAL_WDATA。
[0406] 类似地,在完成第二写入操作WRITE2的执行之后,控制器C30重新设定对专用于第二事务的第二写入缓冲器的设定。也就是说,在第三时间,通过针对在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第二写入缓冲器C32设定第二专用选项,控制器C30已经使用第二写入缓冲器C32作为专用于第二事务的第二写入缓冲器。因此,通过在第三时间完成第二写入操作WRITE2的执行之后重新设定针对第二写入缓冲器的第二专用选项,已用作第二写入缓冲器的第二写入缓冲器C32可不像在第三时间那样被专用于第二事务。即,在第三时间之后,在第三时间已被专用于存储第二写入数据TRAN_WDATA2的第二写入缓冲器C32可用于存储例如正常写入数据NMAL_WDATA。
[0407] 参照图8D,可假设在接续图8B所示的第二时间的第三时间,从主机C10输入总共七段写入数据WDATA。没有预先定义从主机C10输入七段写入数据WDATA的顺序,并且可假设它们是随机输入的。
[0408] 详细地,控制器C30检查在第三时间从主机C10输入的各个七段写入数据WDATA的事务ID信息TRID,并且将七段写入数据WDATA分类为一段第一写入数据TRAN_WDATA1、四段第二写入数据TRAN_WDATA2和两段正常写入数据NMAL_WDATA。
[0409] 更详细地,控制器C30确定在第三时间从主机C10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值1的一段写入数据WDATA的3是被分组到第一事务中的写入数据WDATA,并且将它分类为第一写入数据TRAN_WDATA1。
[0410] 此时,通过上面参照图8B描述的在第二时间的操作,处于以下状态:在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33已被设定为专用于第一事务,并且被用作存储第一写入数据TRAN_WDATA1的第一写入缓冲器。
[0411] 因此,控制器C30在第三时间立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器中,而无需单独的附加操作。此时,通过上面参照图8B描述的在第二时间的操作,处于以下状态:控制器C30已将用于总共六段写入数据的第三写入缓冲器C33设定为专用于第一事务的第一写入缓冲器,并且第三写入缓冲器C33仅存储了作为三段写入数据的0、1和2,并且将用于三段写入数据的空间保留为空白。
[0412] 由于这个事实,控制器C30在第三时间立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器中,而无需单独的附加操作。以这种方式,因为被分组到第一写入数据TRAN_WDATA1中的3在第三时间被存储在第一写入缓冲器中,所以变成以下状态:第一写入数据TRAN_WDATA1被存储在第一写入缓冲器中包括的能够存储六段写入数据的总空间中的用于四段写入数据的空间中。
[0413] 当在第三时间从主机C10输入所有七段写入数据WDATA之后,控制器C30可检查到只有0、1、2和3作为被分组到第一事务中的第一写入数据TRAN_WDATA1存在。换言之,控制器C30可检查到,在从主机C10输入七段写入数据WDATA时,尚未完成提交第一事务(事务未完成)。
[0414] 总之,在将作为在第三时间从主机C10输入的一段第一写入数据TRAN_WDATA1的3另外存储在于上述的第二时间被设定为专用于第一事务的第一写入缓冲器的第三写入缓冲器C33中之后,控制器C30将用于其余两段写入数据的空间保留为空白。
[0415] 进一步地,控制器C30确定在第三时间从主机C10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值2的四段写入数据WDATA的110、111、112和113是被分组到第二事务中的写入数据WDATA,并且将它们分类为第二写入数据TRAN_WDATA2。
[0416] 在与被分组到第二写入数据TRAN_WDATA2中的110、111、112和113之中的、作为开始数据的110相对应的第二写入命令(未示出)中,包括第二总大小信息TTSIZE2。因此,控制器C30可从对应于110的第二写入命令中检查到第二总大小信息TTSIZE2为4。
[0417] 以这种方式,在检查到第二总大小信息TTSIZE2为4之后,控制器C30检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的、除被设定为专用于第一事务的第一写入缓冲器之外的剩余的写入缓冲器C31、C32和C34之中,是否存在具有能够存储被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2的空白空间的写入缓冲器。
[0418] 作为检查的结果,处于四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33在上述的第二时间已被设定为专用于第一事务的第一写入缓冲器的状态。
[0419] 因此,检查在四个写入缓冲器C31、C32、C33和C34之中的、除第三写入缓冲器C33之外的剩余的三个写入缓冲器C31、C32和C34之中是否存在具有能够存储被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2的空白空间的写入缓冲器。
[0420] 作为检查的结果,因为随着在上述的第一时间和第二时间中的每一个时间存储了两段正常写入数据NMAL_WDATA,总共四段正常写入数据NMAL_WDATA已被存储在三个写入缓冲器C31、C32和C34之中的第一写入缓冲器C31中,所以处于第一写入缓冲器C31具有可用于其它两段写入数据的空白空间的状态。因此,第一写入缓冲器C31不适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0421] 因为在上述的第一时间已在三个写入缓冲器C31、C32和C34之中的第二写入缓冲器C32中存储了两段正常写入数据NMAL_WDATA,所以处于第二写入缓冲器C32具有可用于四段写入数据的空白空间的状态。因此,第二写入缓冲器C32适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0422] 因为在上述的第一时间和第二时间尚未在三个写入缓冲器C31、C32和C34之中的第四写入缓冲器C34中存储写入数据,所以处于第四写入缓冲器C34具有可用于六段写入数据的空白空间的状态。因此,第四写入缓冲器C34适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0423] 换言之,在三个写入缓冲器C31、C32和C34之中的一个或多个写入缓冲器C32和C34的每一个中存在能够容纳第二确定大小的空白空间。
[0424] 以这种方式,因为一个或多个写入缓冲器C32和C34中的每一个具有能够容纳第二确定大小的空白空间,所以控制器C30针对空白空间的大小相对较小的写入缓冲器设定第二专用选项,并且将相应的写入缓冲器作为第二写入缓冲器进行管理。也就是说,控制器C30针对第二写入缓冲器C32设定第二专用选项,并且将第二写入缓冲器C32作为第二写入缓冲器进行管理,其中在各自具有等于或大于第二确定大小的空白空间的第二写入缓冲器C32和第四写入缓冲器C34之中,第二写入缓冲器C32的空白空间的大小相对较小。
[0425] 以这种方式,控制器C30可在输入被分组到第二写入数据TRAN_WDATA2的110、111、112和113之中的、作为开始数据的110之前检查第二总大小信息TTSIZE2,从而将在易失性存储器144中预先分配的四个写入缓冲器C31、C32、C33和C34之中的第二写入缓冲器C32设定为专用于第二事务的第二写入缓冲器。
[0426] 因此,在第三时间,每次输入从主机C10输入的七段写入数据WDATA之中的被分组到第二事务的四段第二写入数据TRAN_WDATA2中的每一个时,控制器C30将四段第二写入数据TRAN_WDATA2中的每一个存储在被设定为专用于第二事务的第二写入缓冲器中。
[0427] 以这种方式,因为被分组到第二写入数据TRAN_WDATA2中的110、111、112和113在第三时间被存储在第二写入缓冲器中,所以变成以下状态:第二写入数据TRAN_WDATA2被存储在第二写入缓冲器中包括的能够存储四段写入数据的整个空白空间中。
[0428] 在作为被分组到第二事务中的第二写入数据TRAN_WDATA2的110、111、112和113被存储在第二写入缓冲器中,并因此第二写入数据TRAN_WDATA2被存储在第二写入缓冲器中包括的能够存储四段写入数据的整个空白空间中时,控制器C30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0429] 总之,通过在第三时间选择具有能够存储总共四段写入数据的空间的第二写入缓冲器C32作为专用于第二事务的第二写入缓冲器,并且存储作为从主机C10输入的四段第二写入数据TRAN_WDATA2的110、111、112和113,控制器C30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0430] 此外,控制器C30确定在第三时间从主机C10输入的七段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的G和H是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0431] 接着,控制器C30在第三时间检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中是否存在被设定为专用于事务的写入缓冲器。作为检查的结果,处于以下状态:在第三时间,第三写入缓冲器C33被设定为专用于第一事务,第二写入缓冲器C32被设定为专用于第二事务。作为参考,为了使第二写入缓冲器C32在第三时间被设定为专用于第二事务的第二写入缓冲器,应当输入至少一段第二写入数据TRAN_WDATA2。因此,假设图8D表示在输入正常写入数据NMAL_WDATA之前输入了至少一段第二写入数据TRAN_WDATA2的情况。
[0432] 因此,控制器C30可通过将作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H适当地分布到四个写入缓冲器C31、C32、C33和C34之中的、除被设定为专用于第一事务的第三写入缓冲器C33和被设定为专用于第二事务的第二写入缓冲器C32之外的剩余的写入缓冲器C31和C34来对它们进行存储。例如,在附图中,作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H被存储在第四写入缓冲器C34中。
[0433] 总之,控制器C30将作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H存储在四个写入缓冲器C31、C32、C33和C34之中的第四写入缓冲器C34中。因此,在具有能够存储六段写入数据的存储空间的第四写入缓冲器C34中,在第三时间存储了两段正常写入数据NMAL_WDATA,并且将可用于四段写入数据的空间保留为空白。
[0434] 在如图8D所示的状态中,因为第一事务未完成提交,并且第二事务完成提交,所以处于不需要对第一写入缓冲器执行清除操作而应当清除第二写入缓冲器的情况。
[0435] 当图8B所示的状态改变为图8D所示的状态时,第一事务维持未完成第一事物的提交的状态,并且第二事务转换为完成第二事务的提交的状态。因此,在如图8D所示的状态中,可能看不出将完成第一事务的提交的时间,但可看出完成第二事务的提交的时间先于完成第一事务的提交的时间。由此,可假设未在从完成第二事务的提交的时间起的第一设定时间间隔内完成第一事务的提交。
[0436] 以这种方式,在完成第一事务的提交的时间与完成第二事务的提交的时间超过第一设定时间间隔的情况下,控制器C30可不使对应于第一事务的提交而对第一写入缓冲器执行第一清除操作FLUSH1的时间和对应于第二事务的提交而对第二写入缓冲器执行第二清除操作FLUSH2的时间同步。
[0437] 换言之,在对与完成提交的第二事务相对应的第二写入缓冲器执行第二清除操作FLUSH2之后,当在不处于第一设定时间间隔内的某个时间完成第一事务的提交时,可对与第一事务相对应的第一写入缓冲器执行第一清除操作FLUSH1。
[0438] 以这种方式,通过不使第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间同步,可认为不使开始执行第一写入操作WRITE1的时间和开始执行第二写入操作WRITE2的时间同步,其中第一写入操作WRITE1将第一写入缓冲器中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置C40、C50和C60中,并且第二写入操作WRITE2将第二写入缓冲器中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置C40、C50和C60中。因此,很有可能完成执行第一写入操作的时间和完成执行第二写入操作的时间具有较大差异。
[0439] 因此,如在图9B所示的第一同步操作的情况下,当第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间不同步时,控制器C30可不使第一确认信号ACK1传输到主机C10的时间和第二确认信号ACK2传输到主机C10的时间同步,其中第一确认信号ACK1用于通知主机C10完成了与第一清除操作FLUSH1相关联的第一写入操作WRITE1的执行,并且第二确认信号ACK2用于通知主机C10完成了与第二清除操作FLUSH2相关联的第二写入操作WRITE2的执行。
[0440] 因为在图8D中假设第一清除操作FLUSH1的执行时间和第二清除操作FLUSH2的执行时间不同步,所以不可能执行图9C和图9D所示的第二同步操作。
[0441] 再次参照图8D,在完成第二写入操作WRITE2的执行之后,控制器C30重新设定对专用于第二事务的第二写入缓冲器的设定。也就是说,在第三时间,通过针对在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第二写入缓冲器C32设定第二专用选项,控制器C30已经使用第二写入缓冲器C32作为专用于第二事务的第二写入缓冲器。因此,通过在第三时间完成第二写入操作WRITE2的执行之后重新设定针对第二写入缓冲器的第二专用选项,已用作第二写入缓冲器的第二写入缓冲器C32可不像在第三时间那样被专用于第二事务。即,在第三时间之后,在第三时间已被专用于存储第二写入数据TRAN_WDATA2的第二写入缓冲器C32,可用于存储例如正常写入数据NMAL_WDATA。
[0442] 相反,因为处于未对第一写入缓冲器执行第一清除操作FLUSH1和随后的第一写入操作WRITE1的状态,所以即使在第三时间之后,也针对第一写入缓冲器持续保持第一专用选项,并且第一写入缓冲器继续专用于第一事务。
[0443] 参照图8E,可假设,在接续图8B所示的第二时间的第三时间,从主机C10输入总共七段写入数据WDATA。没有预先定义从主机C10输入七段写入数据WDATA的顺序,并且可假设它们是随机输入的。
[0444] 详细地,控制器C30检查在第三时间从主机C10输入的各个七段写入数据WDATA的事务ID信息TRID,并且将七段写入数据WDATA分类为一段第一写入数据TRAN_WDATA1、四段第二写入数据TRAN_WDATA2和两段正常写入数据NMAL_WDATA。
[0445] 更详细地,控制器C30确定在第三时间从主机C10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值1的一段写入数据WDATA的3是被分组到第一事务中的写入数据WDATA,并且将它分类为第一写入数据TRAN_WDATA1。
[0446] 此时,通过上面参照图8B描述的在第二时间的操作,处于以下状态:在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33已被设定为专用于第一事务,并且被用作存储第一写入数据TRAN_WDATA1的第一写入缓冲器。
[0447] 因此,控制器C30在第三时间立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器中,而无需单独的附加操作。此时,通过上面参照图8B描述的在第二时间的操作,处于以下状态:控制器C30已将能够存储总共六段写入数据的第三写入缓冲器C33设定为专用于第一事务的第一写入缓冲器,并且第三写入缓冲器C33仅存储了作为三段写入数据的0、1和2,并且保留了可用于三段写入数据的空间。
[0448] 由于这个事实,控制器C30在第三时间立即将被分组到第一写入数据TRAN_WDATA1中的3存储在第一写入缓冲器中,而无需单独的附加操作。以这种方式,因为被分组到第一写入数据TRAN_WDATA1中的3在第三时间被存储在第一写入缓冲器中,所以变成以下状态:第一写入数据TRAN_WDATA1被存储在第一写入缓冲器中包括的能够存储六段写入数据的总空白空间中的用于四段写入数据的空间中。
[0449] 总之,在将作为在第三时间从主机C10输入的一段第一写入数据TRAN_WDATA1的3另外存储在于上述的第二时间被设定为专用于第一事务的第一写入缓冲器的第三写入缓冲器C33中之后,控制器C30将可用于其余的两段写入数据的空间保留为空白。
[0450] 在作为被分组到第一事务中的第一写入数据TRAN_WDATA1的0、1、2和3被存储在第一写入缓冲器中时,控制器C30可能从主机C10接收第一事务被中止的信息。例如,在被分组到第一写入数据TRAN_WDATA1中的3被存储在第一写入缓冲器中之后,可以从主机C10传输包括第一事务的中止信息的单独命令。根据这一事实,可以检查到在仅作为被分组到第一事务中的第一写入数据TRAN_WDATA1的0、1、2和3被存储在第一写入缓冲器中的状态下,第一事务被中止(事务中止)。
[0451] 进一步地,控制器C30确定在第三时间从主机C10输入的七段写入数据WDATA之中,作为事务ID信息TRID具有值2的四段写入数据WDATA的110、111、112和113是被分组到第二事务中的写入数据WDATA,并且将它们分类为第二写入数据TRAN_WDATA2。
[0452] 在与被分组到第二写入数据TRAN_WDATA2中的110、111、112和113之中的、作为开始数据的110相对应的第二写入命令(未示出)中,包括第二总大小信息TTSIZE2。因此,控制器C30可从对应于110的第二写入命令中检查到第二总大小信息TTSIZE2为4。
[0453] 以这种方式,在检查到第二总大小信息TTSIZE2为4之后,控制器C30检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的、除被设定为专用于第一事务的第一写入缓冲器之外的剩余的写入缓冲器C31、C32和C34之中,是否存在具有能够存储被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2的空白空间的写入缓冲器。
[0454] 作为检查的结果,处于四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33已在上述的第二时间被设定为专用于第一事务的第一写入缓冲器的状态。
[0455] 因此,检查在除第三写入缓冲器C33之外的剩余的三个写入缓冲器C31、C32和C34之中是否存在具有能够存储被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2的空白空间的写入缓冲器。
[0456] 作为检查的结果,因为随着在上述的第一时间和第二时间中的每一个时间存储了两段正常写入数据NMAL_WDATA,总共四段正常写入数据NMAL_WDATA已被存储在三个写入缓冲器C31、C32和C34之中的第一写入缓冲器C31中,所以处于第一写入缓冲器C31具有可用于其它两段写入数据的空白空间的状态。因此,第一写入缓冲器C31不适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0457] 因为在上述的第一时间已在三个写入缓冲器C31、C32和C34之中的第二写入缓冲器C32中存储了两段正常写入数据NMAL_WDATA,所以处于第二写入缓冲器C32具有可用于四段写入数据的空白空间的状态。因此,第二写入缓冲器C32适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0458] 因为尚未在上述的第一时间和第二时间在三个写入缓冲器C31、C32和C34之中的第四写入缓冲器C34中存储写入数据,所以处于第四写入缓冲器C34具有能够存储六段写入数据的空白空间的状态。因此,第四写入缓冲器C34适于容纳被分组到第二事务中的总共四段第二写入数据TRAN_WDATA2。
[0459] 换言之,在三个写入缓冲器C31、C32和C34之中的一个或多个写入缓冲器C32和C34的每一个中存在能够容纳第二确定大小的空白空间。
[0460] 以这种方式,因为一个或多个写入缓冲器C32和C34中的每一个具有能够容纳第二确定大小的空白空间,所以控制器C30针对空白空间的大小相对较小的写入缓冲器设定第二专用选项,并且将相应的写入缓冲器作为第二写入缓冲器进行管理。也就是说,控制器C30针对第二写入缓冲器C32设定第二专用选项,并且将第二写入缓冲器C32作为第二写入缓冲器进行管理,其中在各自具有等于或大于第二确定大小的空白空间的第二写入缓冲器C32和第四写入缓冲器C34之中,第二写入缓冲器C32的空白空间的大小相对较小。
[0461] 以这种方式,控制器C30可在输入被分组到第二写入数据TRAN_WDATA2的110、111、112和113之中的、作为开始数据的110之前检查第二总大小信息TTSIZE2,从而将在易失性存储器144中预先分配的四个写入缓冲器C31、C32、C33和C34之中的第二写入缓冲器C32设定为专用于第二事务的第二写入缓冲器。
[0462] 因此,在第三时间,在每次输入从主机C10输入的七段写入数据WDATA之中的、被分组到第二事务的四段第二写入数据TRAN_WDATA2中的每一个时,控制器C30将四段第二写入数据TRAN_WDATA2中的每一个存储在被设定为专用于第二事务的第二写入缓冲器中。
[0463] 以这种方式,因为被分组到第二写入数据TRAN_WDATA2中的110、111、112和113在第三时间被存储在第二写入缓冲器中,所以变成以下状态:第二写入数据TRAN_WDATA2被存储在第二写入缓冲器中包括的能够存储四段写入数据的整个空白空间中。
[0464] 在作为被分组到第二事务中的第二写入数据TRAN_WDATA2的110、111、112和113被存储在第二写入缓冲器中,并因此第二写入数据TRAN_WDATA2被存储在第二写入缓冲器中包括的能够存储四段写入数据的整个空白空间中时,控制器C30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0465] 总之,通过在第三时间选择具有能够存储总共四段写入数据的空间的第二写入缓冲器C32作为专用于第二事务的第二写入缓冲器,并且存储作为从主机C10输入的四段第二写入数据TRAN_WDATA2的110、111、112和113,控制器C30可检查到处于完成了第二事务的提交的状态(事务完成)。
[0466] 此外,控制器C30确定在第三时间从主机C10输入的七段写入数据WDATA之中,作为事务ID信息TRID未被设定为任何值的写入数据WDATA的G和H是未被分组到事务中的写入数据WDATA,并且将它们分类为正常写入数据NMAL_WDATA。
[0467] 接着,控制器C30在第三时间检查在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中是否存在被设定为专用于事务的写入缓冲器。作为检查的结果,处于以下状态:在第三时间,第三写入缓冲器C33被设定为专用于第一事务,第二写入缓冲器C32被设定为专用于第二事务。作为参考,为了使第二写入缓冲器C32在第三时间被设定为专用于第二事务的第二写入缓冲器,应当输入至少一段第二写入数据TRAN_WDATA2。因此,假设图8E表示在输入正常写入数据NMAL_WDATA之前输入了至少一段第二写入数据TRAN_WDATA2的情况。
[0468] 因此,控制器C30可通过将作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H适当地分布到四个写入缓冲器C31、C32、C33和C34之中的、除被设定为专用于第一事务的第三写入缓冲器C33和被设定为专用于第二事务的第二写入缓冲器C32之外的剩余的写入缓冲器C31和C34来对它们进行存储。例如,在附图中,作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H被存储在第四写入缓冲器C34中。
[0469] 总之,控制器C30将作为在第三时间从主机C10输入的两段正常写入数据NMAL_WDATA的G和H存储在四个写入缓冲器C31、C32、C33和C34之中的第四写入缓冲器C34中。因此,在具有能够存储六段写入数据的存储空间的第四写入缓冲器C34中,在第三时间存储了两段正常写入数据NMAL_WDATA,并且仍然存在可用于四段写入数据的空间。
[0470] 在如图8E所示的状态中,因为第一事务被中止,并且第二事务完成提交,所以处于不需要对第一写入缓冲器执行清除操作而应当清除第二写入缓冲器的情况。
[0471] 当图8B所示的状态改变为图8E所示的状态时,第一事务转换为被中止的状态,并且第二事务转换为完成第二事务的提交的状态。因此,在如图8E所示的状态中,不可能完成第一事务的提交。因此,可确定第一事务未在从完成第二事务的提交的时间起设定的第一时间间隔内提交。
[0472] 以这种方式,独立于完成第二事务的提交,在第一事务被中止的情况下,对应于第一事务的中止,控制器C30丢弃第一写入缓冲器中存储的第一写入数据TRAN_WDATA1,然后重新设定针对专用于第一事务的第一写入缓冲器的设定。也就是说,通过针对在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第三写入缓冲器C33设定第一专用选项,控制器C30在第二时间已经使用第三写入缓冲器C33作为专用于第一事务的第一写入缓冲器。因此,在第三时间对应于第一事务的中止而丢弃第一写入缓冲器中存储的第一写入数据TRAN_WDATA1之后,因为重新设定针对专用于第一事务的第一写入缓冲器的设定,所以已用作第一写入缓冲器的第三写入缓冲器C33可不像在第二时间那样被专用于第一事务。即,在第三时间之后,在第二时间和第三时间已被专用于存储第一写入数据TRAN_WDATA1的第三写入缓冲器C33可用于存储例如正常写入数据NMAL_WDATA。
[0473] 进一步地,独立于第一事务被中止,对应于完成第二事务的提交,对第二写入缓冲器执行第二清除操作FLUSH2,因此执行第二写入操作WRITE2,第二写入操作WRITE2将第二写入缓冲器中存储的第二写入数据TRAN_WDATA2存储到非易失性存储器装置C40、C50和C60中。
[0474] 因为在图8E中假设不执行对第一写入缓冲器的第一清除操作FLUSH1,所以不执行图9A至图9D所示的第一同步操作和第二同步操作。
[0475] 再次参照图8E,在完成第二写入操作WRITE2的执行之后,控制器C30重新设定针对专用于第二事务的第二写入缓冲器的设定。也就是说,通过针对在易失性存储器144中分配的四个写入缓冲器C31、C32、C33和C34之中的第二写入缓冲器C32设定第二专用选项,控制器C30在第三时间已经使用第二写入缓冲器C32作为专用于第二事务的第二写入缓冲器。因此,通过在第三时间完成第二写入操作WRITE2的执行之后重新设定针对第二写入缓冲器的第二专用选项,已用作第二写入缓冲器的第二写入缓冲器C32可不像在第三时间那样被专用于第二事务。即,在第三时间之后,在第三时间已被专用于存储第二写入数据TRAN_WDATA2的第二写入缓冲器C32可用于存储例如正常写入数据NMAL_WDATA。
[0476] 从以上描述中显而易见的是,当从主机C10输入被分组到第一事务中的第一写入数据TRAN_WDATA1时,根据本公开的第二实施例的存储器系统C20可针对在易失性存储器144中分配的多个写入缓冲器C31、C32、C33和C34之中的第一写入缓冲器设定第一专用选项,并且可针对第一事务专有地使用第一写入缓冲器。而且,当从主机C10输入被分组到第二事务中的第二写入数据TRAN_WDATA2时,根据本公开的第二实施例的存储器系统C20可针对在易失性存储器144中分配的多个写入缓冲器C31、C32、C33和C34之中的、除第一写入缓冲器之外的剩余写入缓冲器之中的第二写入缓冲器设定第二专用选项,并且可针对第二事务专有地使用第二写入缓冲器。可将第一写入缓冲器与第二写入缓冲器彼此区分开。由此,根据本公开的第二实施例的存储器系统C20可有效地管理事务写入数据。
[0477] 进一步地,根据本公开的第二实施例的存储器系统C20使当第一事务被提交时执行待在第一写入缓冲器中执行的第一清除操作的时间和当第二事务被提交时执行待在第二写入缓冲器中执行的第二清除操作的时间同步到可能范围内的最大程度。由此,可通过进行同步来开始第一写入操作WRITE1和第二写入操作WRITE2,其中第一写入操作WRITE1将第一写入缓冲器中存储的第一写入数据TRAN_WDATA1存储在非易失性存储器装置C40、C50和C60中,第二写入操作WRITE2将第二写入缓冲器中存储的第二写入数据TRAN_WDATA2存储在非易失性存储器装置C40、C50和C60中,并且通过将第一写入数据TRAN_WDATA1和第二写入数据TRAN_WDATA2共同地存储在非易失性存储器装置C40、C50和C60中的特定存储空间中,可增加集中存储第一写入数据TRAN_WDATA1和第二写入数据TRAN_WDATA2的可能性。即,可简化用于确保第一事务和第二事务的算法。
[0478] 此外,当第一和第二写入缓冲器C32和C33在同步状态下被清除时,根据本公开的第二实施例的存储器系统C20在可能范围内最大程度地使第一和第二确认信号ACK1和ACK2传输到主机C10以通知主机C10完成了同步的第一和第二写入操作WRITE1和WRITE2的时间同步。也就是说,存储器系统C20可在一个时刻将两个确认信号ACK1和ACK2传输到主机C10。由此,可最小化将确认信号从存储器系统C20传输到主机C10的次数。
[0479] 图10A至图10C是帮助说明根据本公开的第二实施例的存储器系统的操作的流程图。
[0480] 参照图10A,当写入数据WDATA从主机C10传输到存储器系统C20时,开始根据本公开的第二实施例的存储器系统C20的操作(L5)。
[0481] 检查在步骤L5中传输的写入数据WDATA是否是事务的开始数据(L10)。
[0482] 在步骤L10中,在写入数据WDATA是事务的开始数据的情况下(是),存储器系统C20在所设置的易失性存储器144中预先分配的多个写入缓冲器C31、C32、C33和C34之中搜索适于存储事务数据的至少一个写入缓冲器(搜索合适的写入缓冲器),并且将至少一个写入缓冲器设定为专用于事务的专用写入缓冲器(设置专用写入缓冲器)(L20)。在步骤L20中的搜索适于存储事务数据的至少一个写入缓冲器表示:搜索包括等于或大于事务总大小的空白空间的至少一个写入缓冲器,其中事务总大小是在步骤L10中根据与事务的开始数据一起传输的总大小信息TTSIZE来识别的。
[0483] 在步骤L20,以与事务的种类相对应的数量,将新的写入缓冲器设定为专用于事务的专用写入缓冲器(设定专用写入缓冲器)。也就是说,针对第一事务设定专用于第一事务的第一专用写入缓冲器,并且针对第二事务设定专用于第二事务的第二专用写入缓冲器。
[0484] 在步骤L10中,在写入数据WDATA不是事务的开始数据的情况下(否),可认为在步骤L5中传输的写入数据WDATA是正常写入数据NMAL_WDATA或者是除了事务的开始数据之外的其它数据。
[0485] 在步骤L5中传输的写入数据WDATA是正常写入数据NMAL_WDATA的情况下,将写入数据WDATA存储在未被设定为专用于事务的公共写入缓冲器中(公共写入缓冲器)(L30)。
[0486] 在步骤L5中传输的写入数据WDATA是除了事务的开始数据之外的另一数据的情况下,将写入数据WDATA存储在步骤L20中设定为专用于事务的专用写入缓冲器(专用写入缓冲器)中(L30)。在步骤L30中,检查在步骤L5中传输的写入数据WDATA的事务的种类,并且将写入数据WDATA存储在与检查到的事务的种类相对应的、专用于事务的专用写入缓冲器中。换言之,在步骤L30中,在步骤L5中传输的写入数据WDATA是第一事务的另一数据的情况下,将写入数据WDATA存储在专用于第一事务的第一专用写入缓冲器中,并且在步骤L5中传输的写入数据WDATA是第二事务的另一数据的情况下,将写入数据WDATA存储在专用于第二事务的第二专用写入缓冲器中。
[0487] 在步骤L30之后,检查在专用于事务的专用写入缓冲器之中是否存在完成提交的缓冲器(L40)。
[0488] 在步骤L40中,在不存在完成提交的缓冲器的情况下(否),在步骤L5中输入新的写入数据WDATA之前,不执行单独的操作。
[0489] 在步骤L40中,在存在完成提交的缓冲器的情况下(是),检查是否完成了另一事务的提交(L50)。换言之,通过步骤L40和步骤L50,可检查是否提交了至少两个事务。
[0490] 在作为步骤L50的结果,仅提交了一个专用写入缓冲器的情况下(否),仅单独清除被提交的一个专用写入缓冲器(L80)。在步骤L80中被清除的专用写入缓冲器不与另一专用写入缓冲器同时清除。
[0491] 在作为步骤L50的结果,提交了至少两个专用写入缓冲器的情况下(是),检查至少两个专用写入缓冲器的提交时间是否处于第一设定时间间隔(设定时间1)内(L60)。也就是说,检查在步骤L40中被检查到提交的专用写入缓冲器(专用写入缓冲器)的提交时间和在步骤L50中被检查到提交的专用写入缓冲器(专用写入缓冲器)的提交时间是否处于第一设定时间间隔(设定时间1)内(L60)。
[0492] 在步骤L60中,在至少两个专用写入缓冲器的提交时间超过第一设定时间间隔(设定时间1)的情况下(否),不使对完成提交的至少两个专用写入缓冲器的清除操作同步(L80)。也就是说,不使对在步骤L40中被检查到提交的专用写入缓冲器(专用写入缓冲器)的清除操作和对在步骤L50中被检查到提交的专用写入缓冲器(专用写入缓冲器)的清除操作同步(L80)。
[0493] 在步骤L60中,在至少两个专用写入缓冲器的提交时间之间的差处于第一设定时间间隔(设定时间1)内的情况下(是),使对完成提交的至少两个专用写入缓冲器的清除操作同步(L70)。也就是说,使对在步骤L40中被检查到提交的专用写入缓冲器(专用写入缓冲器)的清除操作和对在步骤L50中被检查到提交的专用写入缓冲器(专用写入缓冲器)的清除操作同步(L70)。
[0494] 在步骤L70中使对完成提交的至少两个专用写入缓冲器的清除操作同步之后,将如下通过参照图10B和图10C描述选择和执行两个操作中的任意一个操作。
[0495] 参照图10B,对应于在步骤L70中使对完成提交的至少两个专用写入缓冲器的清除操作同步,使将至少两个专用写入缓冲器中存储的事务数据存储在非易失性存储器装置C40、C50和C60中的至少两个写入操作(写入至非易失性存储器,专用写入缓冲器)同步(L90)。
[0496] 因为在步骤L70和步骤L90中同步了对完成提交的至少两个专用写入缓冲器的清除操作并因此同步了至少两个写入操作,所以在图10B中,不另外检查单独的条件,并且使至少两个确认信号(与(专用写入)缓冲器相对应的写入完成的ACK)传输到主机C10的时间同步(L100),其中至少两个确认信号用于通知主机C10完成了至少两个写入操作。
[0497] 参照图10C,对应于在步骤L70中同步了对完成提交的至少两个专用写入缓冲器的清除操作,使将至少两个专用写入缓冲器中存储的事务数据存储在非易失性存储器装置C40、C50和C60中的至少两个写入操作(写入至非易失性存储器,专用写入缓冲器)同步(L90)。
[0498] 在步骤L70和步骤L90中同步了对完成提交的至少两个专用写入缓冲器的清除操作并因此同步了至少两个写入操作之后,在图10C中,检查完成至少两个写入操作的时间是否处于第二设定时间间隔(设定时间2)内(L110)。
[0499] 在步骤L110中,在完成至少两个写入操作的时间处于第二设定时间间隔(设定时间2)内的情况下(是),使至少两个确认信号(与(专用写入)缓冲器相对应的写入完成的ACK)传输到主机C10的时间同步(L120),其中至少两个确认信号用于通知主机C10完成了至少两个写入操作。
[0500] 在步骤L110中完成至少两个写入操作的时间超过第二设定时间间隔(设定时间2)的情况下(否),不使至少两个确认信号(与(专用写入)缓冲器相对应的写入完成的ACK)传输到主机C10的时间同步(L130),其中至少两个确认信号用于通知主机C10完成了至少两个写入操作。
[0501] 虽然已经示出和描述了各个实施例,但是对于本领域技术人员根据本公开将显而易见的是,在不脱离如所附权利要求所限定的本发明的精神和范围的情况下,可进行各种改变和变型。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用