存储系统的制作方法

文档序号:11949327阅读:155来源:国知局
存储系统的制作方法与工艺

本申请享有以日本专利申请2015-110461号(申请日:2015年5月29日)为基础申请的优先权。本申请通过参照该基础申请,包含基础申请的全部内容。

技术领域

本实施方式涉及存储系统。



背景技术:

以往,已知有对存储介质使用了NAND型的闪速存储器的存储系统。上述存储系统管理翻译信息,该翻译信息记录了从外部指定的逻辑性的位置信息(逻辑地址)与物理性地表示存储介质内的位置的位置信息(物理地址)之间的对应关系。

另外,在产生了请求写入的数据的传送错误的情况下,存储系统有时请求恢复到即将开始该请求写入的数据的写入之前的状态。将这样的写入模式表述为原子写入(Atomic Write)。



技术实现要素:

本发明的实施方式提供能够有效地执行原子写入的存储系统。

根据一个实施方式,存储系统可以与主机连接。上述存储系统具备非易失性的存储器、数据处理部和管理部。上述数据处理部根据来自上述主机的命令,执行上述主机与上述存储器之间的数据传送。上述管理部对表示逻辑位置信息与物理位置信息的对应关系的第1翻译信息进行管理。上述逻辑位置信息是从上述主机指定的位置信息。上述物理位置信息是物理 地表示上述存储器内的位置的位置信息。上述管理部,在上述数据处理部将第1数据存储于上述存储器的情况下更新第2翻译信息。上述第1数据包含于以第1写入模式从上述主机接收的数据组。上述第2翻译信息是上述第1翻译信息的复本。上述管理部在上述第1写入模式结束的情况下将上述第2翻译信息反映到上述第1翻译信息。

附图说明

图1是表示第1实施方式所涉及的存储系统的构成的一例的图。

图2是表示发送接收原子写入模式的写入命令的一例的图。

图3是示意地表示第1实施方式中的NAND存储器中的数据的处理单位和位置的管理单位的图。

图4是说明区域的图。

图5是说明第1表高速缓存、第2表及第2表高速缓存的图。

图6是表示第2表的数据构成例的图。

图7是表示日志信息的数据构成例的图。

图8是说明倒回处理的一例的流程图。

图9是表示第2实施方式所涉及的存储系统的构成的一例的图。

图10是说明第2表的第2实施方式的高速缓存的图。

图11是说明第2实施方式的数据处理部的工作的流程图。

图12是说明第2实施方式的管理部的工作的流程图。

图13是说明存储系统的安装例的图。

具体实施方式

以下参照附图,详细说明实施方式所涉及的存储系统。另外,本发明并不由这些实施方式所限定。

(第1实施方式)

图1是表示第1实施方式所涉及的存储系统的构成的一例的图。该存储系统1例如是SSD(Solid State Drive,静态驱动器)。以下,举出使用NAND 型的闪速存储器(以下,称为NAND存储器)作为非易失性存储器的情况为例。

存储系统1构成为可以与主机2连接。例如CPU(Central Processing Unit,中央处理单元)、个人计算机、携带用信息设备、服务器等相当于主机2。作为存储系统1与主机2之间的通信的接口标准,可以采用任意的接口标准。在存储系统1也可以同时连接2个以上的主机2。主机2与存储系统1也可以经由网络连接。

存储系统1根据来自主机2的访问请求,在与主机2之间执行数据的发送接收。访问请求包含写入命令及读出命令。访问请求包含逻辑地表示访问位置的地址信息。作为地址信息,可以采用例如LBA(Logical Block Address,逻辑块地址)。另外,在例如采用NVMe作为存储系统1与主机2之间的通信的接口标准的情况下,地址信息也可以包含命名空间的标识信息和LBA。命名空间是由命名空间的标识信息特定的逻辑地址空间。即,在采用NVMe的情况下,存储系统1可以管理多个逻辑地址空间。

存储系统1可以从主机2接收原子写入的模式的写入命令。所谓原子写入,是写入的模式之中的一个。根据原子写入的模式,在以该模式请求写入的用户数据的接收中断了的情况下,请求恢复到即将开始以该模式请求写入的数据的写入之前的状态。关于在从原子写入的模式开始到结束为止的期间请求写入的一个以上的用户数据,从主机2的视点看,或者全部的用户数据被写入,或者一个用户数据也未写入。

图2是表示发送接收原子写入的模式的写入命令的一例的图。将原子写入的模式表述为原子写入模式。主机2在发送原子写入模式的写入命令之前,发送原子写入的开始命令(S101)。原子写入的开始命令附有原子写入ID(AW ID)。存储系统1可以执行多个线程的原子写入。AW ID是用于区别线程的标识信息。所谓线程,是从原子写入开始到原子写入结束为止按照时间序列顺序发布的原子写入模式的多个写入命令的组合。存储系统1在多个线程并行输入的情况下,各线程分别个别地结束。多个线程之中的一个线程由用于结束上述一个线程的结束命令来请求结束。

另外,也可以以线程由与AW ID不同的信息标识的方式来构成存储系统1。例如,原子写入的对象的空间也可以按每个线程由逻辑地址指定。例如,在制约为在一个命名空间无法执行2个以上的线程的情况下,线程可以由命名空间的标识信息标识。

在S101,主机2例如开始AW ID="0"的线程。主机2在开始命令的发送后,可以发送属于由该开始命令开始的线程的、原子写入模式的写入命令(S102)。原子写入模式的写入命令包含AW ID。存储系统1基于原子写入模式的写入命令中包含的AW ID,可以识别该写入命令所属的线程。主机2在原子写入模式的写入命令的期间,可以发送通常的写入命令、即非原子写入模式的写入命令(S103)。非原子写入模式的写入命令不包含AW ID。或者,非原子写入模式的写入命令,也可以包含无效值(例如“NULL”)作为AW ID。主机2在结束一个线程之前,可以发送开始其他线程的开始命令(S104),或者发送上述其他线程的写入命令(S105)。所谓其他线程的写入命令,是属于其他线程的写入命令。在S105的处理中,在AW ID="0"的线程的结束之前,AW ID="1"的线程开始。主机2在结束AW ID="0"的线程之前,可以发送用于结束AW ID="1"的线程的结束命令(S106)。由于结束命令包含AW ID,所以存储系统1可以识别结束的线程。另外,主机2也可以在结束AW ID="1"的线程之前,发送结束AW ID="0"的线程的结束命令。在图2的例子中,主机2再次发送AW ID="0"的线程的写入命令(S107),此后,发送结束AW ID="0"的线程的结束命令(S108)。

存储系统1具备主机接口部11、NAND存储器12、NAND控制器13、RAM(Random Access Memory,随机存取存储器)14及控制部15。

控制部15由例如CPU(Central Processing Unit,中央处理单元)等运算装置构成。控制部15通过执行预先在存储系统1内的预定的位置存储的程序,作为数据处理部151及管理部152起作用。程序的存储位置任意地设计。例如,程序预先存储在NAND存储器12,在启动时加载到RAM14。控制部15执行加载到了RAM14的程序。数据处理部151的功能之中的一部分或全部也可以由硬件实现。管理部152的功能之中的一部分或全部也可 以由硬件实现。

数据处理部151执行主机2与NAND存储器12之间的数据传送。数据处理部151在向NAND存储器12写入用户数据的情况下,向NAND存储器12写入与该用户数据对应的写入日志1223(后述)。

管理部152执行管理信息的管理。管理信息包含翻译信息、统计信息、块信息等。翻译信息是记录了逻辑地址与表示NAND存储器12内的物理性的位置的地址信息(物理地址)的对应关系的信息。统计信息是记录了存储系统1的使用状况、通电时间、断电的次数等的信息。块信息是例如按每个物理块(后述)记录了改写次数、有效的数据数等的信息。管理部152执行逻辑地址与物理地址之间的翻译。

管理部152在线程中断了的情况下,执行将翻译信息恢复到该线程开始之前的状态的处理(以下称为倒回处理)。所谓线程中断,指未将由构成该线程的一系列写入命令请求写入的用户数据全部写入到NAND存储器12的事件。例如,在线程的接收过程中存储系统1断电了的情况下,该线程被中断。

主机接口部11是用于与主机2进行通信的接口装置。例如主机接口部11在数据处理部151的控制下,执行主机2与RAM14之间的用户数据的传送。

NAND控制器13是用于进行对NAND存储器12的访问的接口装置。NAND控制器13在由控制部15进行的控制下,执行RAM14与NAND存储器12之间的用户数据或管理信息的传送。详细情况省略,但是NAND控制器13可以进行纠错处理。

NAND存储器12是作为存储器起作用的非易失性的存储介质。NAND存储器12由一个以上的芯片构成。

图3是示意地表示第1实施方式中的NAND存储器12中的数据的处理单位和位置的管理单位的图。在构成NAND存储器12的芯片的内部,数据的存储区域由多个物理块构成。各物理块由多个物理页构成。物理页是可以进行写入及读出的访问的单位。可以一并进行数据擦除的最小单位是物 理块。

在数据的存储区域,对比1物理页小的单位分配物理地址。这里,将被分配物理地址的单位表述为簇。翻译信息以簇为单位进行管理。1簇的大小既可以与来自主机2的最小的访问单位相等,也可以不同。在图3的例子中,设为1物理页由10个簇构成。在图3的例子中,设为1物理块由n(n是自然数)个物理页构成。

RAM14是用于暂时存储数据的存储介质。作为RAM14,例如可以采用比NAND存储器12高速的种类的存储介质。作为RAM14,例如可以采用易失性或非易失性的存储介质。作为RAM14,例如可以采用DRAM(动态RAM)、SRAM(静态RAM)、FeRAM(铁电RAM)、MRAM(磁阻RAM)、PRAM(相变RAM)等。

在NAND存储器12,确保管理信息区域121及用户数据区域122。各区域121、122例如由多个物理块构成。用户数据区域122存储从主机2请求写入的一个以上的数据(用户数据1221)及日志信息1222。这里,设为各用户数据1221的大小为簇的大小来进行说明。

管理信息区域121存储第1表1211。另外,管理信息区域121确保存储一个以上的第2表1213的LUT区域1212。LUT区域1212由例如多个物理块构成。第1表1211及一个以上的第2表1213构成翻译信息。

RAM14确保写入缓冲器141、读出缓冲器142及LUT高速缓存区域144。另外,RAM14存储第1表高速缓存143。

写入缓冲器141及读出缓冲器142是主机2与NAND存储器12之间的数据传送的缓冲器。写入缓冲器141及读出缓冲器142按照FIFO的规则输入输出数据。写入缓冲器141存储主机接口部11从主机2接收到的用户数据。写入缓冲器141中存储的用户数据由NAND控制器13写入到用户数据区域122。读出缓冲器142存储由NAND控制器13从用户数据区域122读出的用户数据1221。读出缓冲器142中存储的用户数据1221由主机接口部11向主机2传送。

第1表1211及一个以上的第2表1213高速缓存到RAM14,在RAM14 上更新。LUT高速缓存区域144是高速缓存第2表1213的区域。将在LUT高速缓存区域144中高速缓存的第2表1213表述为第2表高速缓存145。第1表高速缓存143是高速缓存到了RAM14的第1表1211。

通过使用图4、图5及图6来说明翻译信息。管理部152将翻译信息层次化为2个以上的层次。这里作为一例,管理部152将翻译信息作为2层的表组进行管理。第1表1211及第1表高速缓存143相当于第1层的表。一个以上的第2表1213及一个以上的第2表高速缓存145相当于第2层的表。

管理部152将逻辑地址空间分割为多个部分空间。将部分空间表述为区域(Region)。图4是说明区域的图。各区域包含逻辑地址连续的多个簇。这里,各区域包含m(m是自然数)个簇。各区域通过区域编号(Region No.)标识。区域编号例如通过使逻辑地址向右方向移动而获得。区域#i是从逻辑地址i*m到逻辑地址((i+1)*m-1)为止的范围。区域内的地址由从区域的开头起的偏移表现。比逻辑地址的预定的位高位的位相当于区域编号,比逻辑地址的上述预定的位低位的位相当于区域内的地址。

图5是说明第1表高速缓存143、第2表1213及第2表高速缓存145的图。第1表高速缓存143按每个区域记录表地址。所谓表地址,是物理性地表示第2表1213或第2表高速缓存145的存储位置的地址信息。这里,第1表高速缓存143按每个区域记录表示第2表高速缓存145的存储位置的RAM14内的表地址和表示第2表1213的存储位置的NAND存储器12内的表地址这双方。在关于某区域未高速缓存第2表高速缓存145的情况下,记录无效值(例如“NULL”),作为与该区域对应的第2表高速缓存145的存储位置的表地址。管理部152基于是否记录有“NULL”作为RAM14内的表地址,可以判定关于上述某区域是否高速缓存有第2表高速缓存145。另外,关于各区域是否高速缓存有第2表高速缓存145的管理,不限于上述的方法。

图6是表示第2表1213的数据构成例的图。第2表1213及第2表高速缓存145例如具有相同的数据构成。第2表1213按每个区域内的地址记 录物理性地表示用户数据1221的存储位置的地址(数据地址)。在各区域由m个簇构成的情况下,第2表145具备至少m个条目。对于未与物理地址对应的逻辑地址,在第2表145记录无效值(例如“NULL”)。

管理部152从NAND存储器12向RAM14读出翻译信息,使用读出到了RAM14的翻译信息。所谓使用,包含更新及参照。管理部152例如向RAM14读出第1表1211的全部条目,作为第1表高速缓存143。管理部152例如向LUT高速缓存区域144读出在LUT区域1212存储的一个以上的第2表1213之中至少包含使用对象的条目的第2表1213。

通过管理部152对读出到了RAM14的翻译信息进行更新,在RAM14存储的翻译信息成为与在NAND存储器12存储的翻译信息不同的状态。将与在NAND存储器12存储的翻译信息不同的、在RAM14存储的翻译信息的状态表述为脏。管理部152将翻译信息之中的脏的部分在预定的定时写入到NAND存储器12。翻译信息之中的脏的部分通过写入到NAND存储器12,转变到非脏的状态。脏还是非脏的管理的单位任意地设计。管理部152例如关于第1表高速缓存143,按每个条目管理脏还是非脏。管理部152例如按每个第2表高速缓存145管理脏还是非脏。

例如,数据处理部151在从写入缓冲器141向NAND存储器12写入用户数据时,关于表示用户数据的位置的逻辑地址,向管理部152发送用于更新该逻辑地址与物理地址的对应关系的更新请求。管理部152基于该更新请求,更新包含由更新请求指定的逻辑地址的第2表高速缓存145。管理部152将更新后的第2表高速缓存145设为脏进行管理。另外,管理部152将第1表高速缓存143的记录之中指示脏的第2表高速缓存145的记录设为脏进行管理。管理部152向LUT区域1212写入脏的第2表高速缓存145后,将该第2表高速缓存145设为非脏进行管理。管理部152在根据第2表高速缓存145的向LUT区域1212的写入而更新第1表高速缓存143的记录之中的脏的记录后,向管理信息区域121写入更新后的记录。管理部152在向管理信息区域121写入更新后的记录后,将该记录设为非脏进行管理。

向NAND存储器12写入翻译信息之中的脏的部分的定时任意地设计。例如,基于翻译信息之中的脏的部分的合计大小来确定定时。例如,在翻译信息之中的脏的部分的合计大小超过了预定的阈值的定时,上述脏的部分之中的一部分或全部写入到NAND存储器12。另外,在断电时,翻译信息之中的至少脏的部分写入到NAND存储器12。在存储系统1具备电池的情况下,在断电时,管理部152也可以通过在该电池中蓄积的能量进行驱动。在断电时,翻译信息之中的至少脏的部分写入到管理信息区域121。在NAND存储器12除了管理信息区域121及用户数据区域122之外还具有用于紧急地转移管理信息的区域(紧急转移区域)的情况下,翻译信息之中的至少脏的部分可写入紧急转移区域。这样,管理部152以尽可能不丧失翻译信息之中的脏的部分的方式管理RAM14内的翻译信息。

另外,第1表1211既可以具有与第1表高速缓存143相同的数据构成,也可以具有省略了LUT高速缓存区域144内的表地址的记录的数据构成。

图7是表示日志信息1222的数据构成例的图。日志信息1222包含一个以上的写入日志1223。各写入日志1223是以簇为单位表示用户数据1221向NAND存储器12写入时的逻辑地址与物理地址的对应关系的信息。例如,一个日志信息1222包含对应的一个物理页中所包含的全部簇的写入日志1223。日志信息1222与某一个用户数据1221对应。例如,日志信息1222写入到各物理块内的预定位置的簇(例如最后的簇)。在本实施方式中,用于在原子写入模式的线程中断了的情况下使翻译信息恢复到将由该线程的最初的写入命令请求写入的用户数据向NAND存储器12写入前的状态的信息附加到写入日志1223。

写入日志1223包含逻辑地址200、旧物理地址201、新物理地址202、AW ID203及开始结束标志204。旧物理地址201是用户数据1221的写入前与逻辑地址200相对应的物理地址。新物理地址202是通过写入对应的用户数据1221,与逻辑地址200新对应的物理地址。换言之,新物理地址202是表示对应的用户数据1221的写入位置的物理地址。AW ID203附于以原子写入模式请求写入的用户数据1221的写入日志1223。AW ID203 与原子写入模式的写入命令中包含的AW ID相等。开始结束标志204是表示是否是在线程的最初写入的用户数据1221的开始标志和表示是否是在线程的最后写入的用户数据1221的结束标志的组合。即,开始结束标志204具有至少2位的大小。开始结束标志204基于开始命令及结束命令而操作。

以下说明从写入缓冲器141向NAND存储器12写入由非原子写入模式的写入命令请求写入的用户数据的情况。数据处理部151向写入日志1223写入逻辑地址200、旧物理地址201及新物理地址202。数据处理部151不使用AW ID203及开始结束标志204。例如,数据处理部151在AW ID203记录无效值(“NULL”等)。数据处理部151在开始结束标志204不设立开始标志也不设立结束标志。

以下说明从写入缓冲器141向NAND存储器12写入由原子写入模式的写入命令请求写入的用户数据的情况。数据处理部151除了向写入日志1223记录逻辑地址200、旧物理地址201及新物理地址202以外,还记录AW ID203。数据处理部151对由各线程的最初的写入命令请求写入的用户数据,在写入日志1223的开始结束标志204设立开始标志。数据处理部151对由各线程的最后的写入命令请求写入的用户数据,在写入日志1223的开始结束标志204设立结束标志。数据处理部151对由属于各线程的写入命令之中不相当于各线程的最初的写入命令及各线程的最后的写入命令的任何一个的写入命令请求写入的用户数据,在开始结束标志204不设立开始标志也不设立结束标志。

例如,结束命令由数据处理部151存储在写入缓冲器141。数据处理部151在向NAND存储器12写入由原子写入模式的写入命令请求写入的用户数据时,通过参照写入缓冲器141,判定在该写入对象的用户数据后是否在不介有由与该写入对象的用户数据同一线程的写入命令请求写入的用户数据的接收的情况下接收到结束命令。在不介有由与写入对象的用户数据同一线程的写入命令请求写入的用户数据的接收而接收到结束命令的情况下,数据处理部151判定为写入对象的用户数据是由线程的最后的写入 命令请求写入的用户数据。

在线程中断了的情况下,在存在由该中断了的线程的写入命令请求写入且向NAND存储器12写入完毕的用户数据的情况下,表示该用户数据的存储位置的物理地址通过倒回处理,从与逻辑地址相对应的状态转变到与逻辑地址不相对应的状态。与逻辑地址不相对应的状态的用户数据不可以从主机2访问。从而,若从主机2的视点看,则认为到线程中断为止向存储系统1发送了的用户数据未写入到NAND存储器12。即,在线程中断了的情况下,若从主机2的视点看,则由于认为存储系统1恢复到该线程开始前的状态,所以原子写入的工作得以实现。

图8是说明倒回处理的一例的流程图。首先,管理部152将线程中断的发生时刻下的第1表高速缓存143复原到RAM14。

接着,管理部152从在中断发生时最后写入的写入日志1223,按照与写入顺序相反的顺序,读出预定个数的写入日志1223(S201)。管理部152基于所读出的预定个数的写入日志1223,确定取消对象的线程(S202)。

具体地,例如,管理部152从所读出的预定个数的写入日志1223,提取全部的AW ID。例如,在所读出的预定个数的写入日志1223包含记录了AW ID="0"的写入日志1223、记录了AW ID="1"的写入日志1223及记录了AW ID="2"的写入日志1223的情况下,管理部152提取AW ID="0"、AW ID="1"及AW ID="2"。然后,管理部152从所读出的预定个数的写入日志1223,检索具有结束标志的写入日志1223。在取得了具有结束标志的写入日志1223的情况下,管理部152取得在具有结束标志的写入日志1223中记录的AW ID。通过排除所记录的AW ID,取得表示中断了的线程的AW ID。管理部152将中断了的线程确定为取消对象的线程。

在S202的处理之后,管理部152选择在中断的发生时最后写入的写入日志1223(S203)。然后,管理部152判定所选择的写入日志1223是否是与取消对象的线程有关的写入日志1223(S204)。所选择的写入日志1223是否是与中断了的线程有关的写入日志1223,可以基于在所选择的写入日志1223中记录的AW ID203是否包含于表示中断了的线程的AW ID中的任一 个来判定。

在所选择的写入日志1223是与取消对象的线程有关的写入日志1223的情况下(S204,是),管理部152取得逻辑地址200和旧物理地址201。然后,管理部152将翻译信息中与所取得的逻辑地址200相对应的物理地址改变为所取得的旧物理地址201(S205)。

例如,管理部152通过参照所复原的第1表高速缓存143,取得记录了与所取得的逻辑地址200相关的对应关系的第2表1213的存储位置。然后,管理部152从所取得的存储位置读出第2表1213,将所读出的第2表1213作为第2表高速缓存145存储到LUT高速缓存区域144。管理部152根据在LUT高速缓存区域144存储第2表高速缓存145这一情况,更新第1表高速缓存143。然后,管理部152在第2表高速缓存145上,执行基于S205的处理进行的改变。管理部152将通过S205的处理改变后的第2表高速缓存145设为脏进行管理。管理部152将第1表高速缓存143的记录之中指示由S205的处理改变后的第2表高速缓存145的记录设为脏进行管理。

在S205的处理之后,管理部152判定在所选择的写入日志1223中是否设立了开始标志(S206)。在所选择的写入日志1223中设立了开始标志的情况下(S206,是),管理部152从取消对象的线程删除在所选择的写入日志1223中记录的AW ID203所表示的线程(S207)。在所选择的写入日志1223中未设立开始标志的情况下(S206,否)或S207的处理之后,管理部152判定是否还存在取消对象的线程(S208)。

在选择的写入日志1223不是与取消对象的线程有关的写入日志1223的情况下(S204,否)或者还存在取消对象的线程的情况下(S208,是),管理部152新选择在当前选择中的写入日志1223的前一个写入的写入日志1223(S209),并关于新选择的写入日志1223执行S204的处理。在不存在取消对象的线程的情况下(S208,否),管理部152结束倒回处理。

这样,根据第1实施方式,数据处理部151在用户数据向NAND存储器12的每次写入时记录写入日志1223。另外,数据处理部151在写入日 志1223记录原子写入的开始及原子写入的结束。管理部152在线程中断了的情况下,通过按照与写入顺序相反的顺序读出写入日志1223,将翻译信息恢复到线程中断之前的状态。由此,原子写入的工作得以实现。

另外,根据以上的说明,数据处理部151无论请求写入了用户数据的写入命令是原子写入模式的写入命令还是非原子写入模式的写入命令,都在向NAND存储器12写入该用户数据时发布更新请求。数据处理部151在请求写入了用户数据的写入命令是原子写入模式的写入命令的情况下,也可以将更新请求在内部预先排队,在确认了结束命令的接收后向管理部152发送在内部排队了的更新请求。由此,由于在线程的结束后更新翻译信息,所以不进行倒回处理便可实现原子写入的工作。

另外,根据以上的说明,管理部152以尽可能不丧失翻译信息之中的脏的部分的方式管理RAM14内的翻译信息。在丧失了翻译信息之中的脏的部分的情况下,管理部152通过例如按照与写入顺序相反的顺序参照写入日志1223,来重新构建翻译信息。管理部152在重新构建翻译信息时,确定取消对象的线程,按照与写入顺序相反的顺序读出写入日志1223。管理部152在读出并非与取消对象的线程有关的写入日志1223的写入日志1223且该写入日志1223的逻辑地址200与翻译信息中任一物理地址都不相对应的情况下,在翻译信息以覆写形式记录在该写入日志1223中记录的逻辑地址200与在该写入日志1223中记录的新物理地址202的对应关系。管理部152在读出了与取消对象的线程有关的写入日志1223的情况下,读出下一写入日志1223。管理部152通过对依次读出的写入日志1223进行上述的处理,来重新构建翻译信息。

(第2实施方式)

图9是表示第2实施方式所涉及的存储系统的构成的一例的图。另外,对于具有与第1实施方式相同功能的构成要素标注与第1实施方式相同的名称及符号。对于具有与第1实施方式相同功能的构成要素,省略说明。

存储系统1a可以与主机2连接。存储系统1a也可以构成为与多个主机2连接。存储系统1a与第1实施方式的存储系统1同样,可以从主机2接 收原子写入模式的写入命令。存储系统1a具备主机接口部11、NAND存储器12、NAND控制器13、RAM14及控制部15。控制部15通过执行预先在存储系统1a内的预定位置存储的程序,作为数据处理部151a及管理部152a起作用。

数据处理部151a执行主机2与NAND存储器12之间的数据传送。管理部152a执行管理信息的管理。管理信息包含翻译信息、统计信息、块信息等。管理部152a执行逻辑地址与物理地址之间的翻译。管理部152a以尽可能不丧失翻译信息之中的脏的部分的方式管理RAM14内的翻译信息。

在NAND存储器12,确保有管理信息区域121及用户数据区域122。用户数据区域122存储一个以上的用户数据1221及日志信息1222。在第2实施方式中,也可以不记录日志信息1222。管理信息区域121存储第1表1211。另外,管理信息区域121确保存储一个以上的第2表1213的LUT区域1212。RAM14确保写入缓冲器141、读出缓冲器142及LUT高速缓存区域144。RAM14存储第1表高速缓存143。LUT高速缓存区域144存储第2表1213。

图10是说明第2表1213的第2实施方式的高速缓存的图。在第2实施方式中,各区域的第2表1213可作为一个第2表高速缓存145a而进行高速缓存。另外,各区域的第2表1213在作为一个第2表高速缓存145a而进行高速缓存的同时,也可作为一个以上的第2表高速缓存145b而进行高速缓存。各第2表高速缓存145b通过复制对应的区域的第2表高速缓存145a而生成。与某区域相关的第2表高速缓存145b的个数等于该区域的第2表1213的使用所需的线程的数量。即,按每个线程对第2表高速缓存145b进行高速缓存。

第2表高速缓存145a及第2表高速缓存145b记录指针210及AW ID211。第2表高速缓存145b的AW ID211表示该第2表高速缓存145b的使用所需的线程。

第2表高速缓存145a的存储位置由第1表高速缓存143表示。第2表高速缓存145b的存储位置不由第1表高速缓存143表示。指针210构成列 表结构,该列表结构用于从第2表高速缓存145a参照以该第2表高速缓存145a作为复制源的一个以上的第2表高速缓存145b的存储位置。即,在存在以第2表高速缓存145a作为复制源的一个以上的第2表高速缓存145b的情况下,第2表高速缓存145a的指针210表示一个以上的第2表高速缓存145b之中的一个第2表高速缓存145b的存储位置。另外,在不另外存在第2表高速缓存145b的情况下,在上述一个第2表高速缓存145b的指针210记录表示列表结构的终端的值(例如“NULL”)。在存在另外的一个以上的第2表高速缓存145b的情况下,上述一个第2表高速缓存145b的指针210表示另外的一个以上的第2表高速缓存145b之中的一个第2表高速缓存145b的存储位置。在不存在以第2表高速缓存145a作为复制源的第2表高速缓存145b的情况下,在该第2表高速缓存145a的指针210记录例如表示列表结构的终端的值。

另外,第2表高速缓存145a与以该第2表高速缓存145a作为复制源的一个以上的第2表高速缓存145b的对应关系的管理的方法不限于仅使用了指针210的列表结构的管理方法。第2表高速缓存145a与以该第2表高速缓存145a作为复制源的一个以上的第2表高速缓存145b的对应关系也可以使用另行设置的表来管理。另外,也可以在第1表高速缓存143设置专用的条目,通过该专用的条目管理第2表高速缓存145a与以该第2表高速缓存145a作为复制源的一个以上的第2表高速缓存145b的对应关系。指针210也可以是双方向的指针。

在由原子写入模式的写入命令请求写入的用户数据向NAND存储器12的写入时,管理部152a使用对应的线程的第2表高速缓存145b。在由非原子写入模式的写入命令请求写入的用户数据向NAND存储器12的写入时及自NAND存储器12的用户数据的读出时,管理部152a使用第2表高速缓存145a。

图11是说明第2实施方式的数据处理部151a的工作的流程图。数据处理部151a判定是否接收到写入命令(S301)。在接收到写入命令的情况下(S301,是),数据处理部151a将由该写入命令请求写入的用户数据存储在 写入缓冲器141(S302)。在未接收到写入命令的情况下(S301,否),数据处理部151a跳过S302的处理。

接着,数据处理部151a判定是否到达写入定时(S303)。可以将任意的定时设定成写入定时。例如,基于写入缓冲器141中存储的用户数据的合计大小,确定写入定时。例如,写入定时是写入缓冲器141中存储的用户数据的合计大小超过了预定的阈值的定时。例如,写入定时是从主机2接收到Flush命令的定时。所谓Flush命令,是用于将在写入缓冲器141中存储且未向NAND存储器12写入的全部用户数据写入到NAND存储器12的命令。

在到达了写入定时的情况下(S303,是),数据处理部151a从写入缓冲器141选择一个用户数据(S304)。数据处理部151a将所选择的用户数据写入到NAND存储器12(S305)。数据处理部151a判定所写入的用户数据是否是以原子写入模式的写入命令请求写入的用户数据(S306)。在所写入的用户数据不是以原子写入模式的写入命令请求写入的用户数据的情况下(S306,否),数据处理部151a向管理部152a发送第1更新请求(S307)。在所写入的用户数据是以原子写入模式的写入命令请求写入的用户数据的情况下(S306,是),数据处理部151a向管理部152a发送第2更新请求(S308)。

第1更新请求及第2更新请求是用于翻译信息的更新的请求。第1更新请求至少包含逻辑地址、旧物理地址及新物理地址。第1更新请求所包含的逻辑地址是由请求写入用户数据的写入命令指定的逻辑地址。旧物理地址是在用户数据的写入前与第1更新请求所包含的逻辑地址对应的物理地址。新物理地址是通过写入用户数据而与逻辑地址新对应的物理地址。

第2更新请求除了逻辑地址、旧物理地址及新物理地址以外,至少还包含AW ID。第2更新请求所包含的AW ID表示请求写入了所写入的用户数据的写入命令所属的线程。

在未到达写入定时的情况下(S303,否)或在S307的处理或S308的处理之后,数据处理部151a判定是否接收到结束命令(S309)。在接收到结束命令的情况下(S309,是),数据处理部151a向管理部152a发送更新确定请求 (S310)。

更新确定请求是用于使与通过结束命令结束的线程对应的第2表高速缓存145b反映到复制源的第2表高速缓存145a的请求。更新确定请求至少包含表示通过结束命令结束的线程的AW ID。另外,数据处理部151a在关于由结束命令中包含的AW ID所确定的线程的写入命令请求写入的全部写入数据发送了第2更新请求后,发送更新确定请求。

在未接收到结束命令的情况下(S309,否)或在S310的处理之后,数据处理部151a判定是否接收到读出命令(S311)。在接收到读出命令的情况下(S311,是),数据处理部151a向管理部152a发送翻译请求(S312)。翻译请求至少包含由读出命令指定的逻辑地址。管理部152a对翻译请求中包含的逻辑地址进行翻译,并向数据处理部151a返回通过翻译获得的物理地址。数据处理部151a从返回的物理地址表示的位置向写入缓冲器141读出用户数据(S313)。数据处理部151a向主机2发送读出到了写入缓冲器141的用户数据(S314)。在S314的处理之后,数据处理部151a再次执行S301的处理。

图12是说明第2实施方式的管理部152a的工作的流程图。管理部152a判定是否接收到第1更新请求(S401)。在接收到第1更新请求的情况下(S401,是),管理部152a判定与第1更新请求所包含的逻辑地址相关的第2表1213是否高速缓存在LUT高速缓存区域144(S402)。在该第2表1213未高速缓存在LUT高速缓存区域144的情况下(S402,否),管理部152a将该第2表1213作为第2表高速缓存145a读出到LUT高速缓存区域144(S403)。管理部152a在第2表高速缓存145a的指针210及AW ID211记录“NULL”。

在该第2表1213高速缓存在LUT高速缓存区域144的情况下(S402,是)或在S403的处理之后,管理部152a更新第2表高速缓存145a(S404)。具体地,管理部152a使第1更新请求所包含的逻辑地址,与第1更新请求所包含的新物理地址相对应。在S404的处理之后,管理部152a将第2表高速缓存145a之中的更新后的条目设定为脏(S405)。另外,将第1表高速缓存143之中的表示更新后的第2表高速缓存145a的存储位置的条目设定为 脏(S406)。

在未接收到第1更新请求的情况下(S401,否)或在S406的处理之后,管理部152a判定是否接收到第2更新请求(S407)。在接收到第2更新请求的情况下(S407,是),管理部152a判定用于第2更新请求所包含的逻辑地址的翻译的第2表1213是否高速缓存在LUT高速缓存区域144(S408)。在该第2表1213未高速缓存在LUT高速缓存区域144的情况下(S408,否),管理部152a将该第2表1213作为第2表高速缓存145a读出到LUT高速缓存区域144(S409)。管理部152a在第2表高速缓存145a的指针210及AWID211记录“NULL”。

在该第2表1213高速缓存在LUT高速缓存区域144的情况下(S408,是)或在S409的处理之后,管理部152a判定与由第2更新请求中包含的AW ID表示的线程相关的第2表高速缓存145b(以下称为对象的第2表高速缓存145b)是否高速缓存在LUT高速缓存区域144(S410)。在S410的处理中,管理部152a通过从第2表高速缓存145a按照顺序追随指针210,来检索记录了与第2更新请求中包含的AW ID相同的AW ID211的第2表高速缓存145b。

在对象的第2表高速缓存145b未高速缓存在LUT高速缓存区域144的情况下(S410,否),管理部152a通过向LUT高速缓存区域144的空闲区域复制第2表高速缓存145a,来生成对象的第2表高速缓存145b(S411)。在对象的第2表高速缓存145b的指针210记录NULL。在对象的第2表高速缓存145b的AW ID211记录第2更新请求所包含的AW ID。

在S411的处理之后,管理部152a更新构成列表结构的各指针210(S412)。具体地,例如,管理部152a用表示对象的第2表高速缓存145b的存储位置的地址覆写列表结构的终端的指针210。在对象的第2表高速缓存145b高速缓存在LUT高速缓存区域144的情况下(S410,是)或在S412的处理之后,管理部152a更新对象的第2表高速缓存145b(S413)。具体地,管理部152a使第2更新请求所包含的逻辑地址与第2更新请求所包含的新物理地址相对应。

在未接收到第2更新请求的情况下(S407,否)或在S413的处理之后,管理部152a判定是否接收到更新确定请求(S414)。在接收到更新确定请求的情况下(S414,是),管理部152a使包含更新确定请求中包含的AW ID作为AW ID211的全部第2表高速缓存145b反映到各自对应的第2表高速缓存145a(S415)。

以下说明S415的处理的具体例。管理部152a关注包含更新确定请求中包含的AW ID作为AW ID211的一个第2表高速缓存145b。管理部152a将所关注的第2表高速缓存145b的条目分类为生成该所关注的第2表高速缓存145b后更新了的条目和未更新的条目。管理部152a对未更新的条目,以覆写形式写入在复制源的第2表高速缓存145a记录的值。管理部152a在所关注的第2表高速缓存145b的AW ID211记录NULL,并将第1表高速缓存143更新为表示所关注的第2表高速缓存145b。由此,所关注的第2表高速缓存145b以后作为第2表高速缓存145a进行处理。原来的第2表高速缓存145a例如被删除。管理部152a更新构成列表结构的各指针210。管理部152a关注于包含更新确定请求中包含的AW ID作为AW ID211的全部第2表高速缓存145b的各个,对所关注的各个第2表高速缓存145b执行上述一系列的处理。

在S415的处理之后,管理部152a将成为S415的处理的对象的全部第2表高速缓存145a设定为脏(S416)。另外,将第1表高速缓存143之中表示成为S415的处理对象的第2表高速缓存145a的存储位置的全部条目设定为脏(S417)。

在未接收到更新确定请求的情况下(S414,否)或在S417的处理之后,管理部152a判定是否接收到翻译请求(S418)。在接收到翻译请求的情况下(S418,是),管理部152a判定与翻译请求中包含的逻辑地址相关的第2表1213是否高速缓存在LUT高速缓存区域144(S419)。在该第2表1213未高速缓存在LUT高速缓存区域144的情况下(S419,否),管理部152a将该第2表1213作为第2表高速缓存145a读出到LUT高速缓存区域144(S420)。管理部152a在第2表高速缓存145a的指针210及AW ID211记录“NULL”。 在该第2表1213高速缓存在LUT高速缓存区域144的情况下(S419,是)或在S420的处理之后,管理部152a基于第2表高速缓存145a,将翻译请求中包含的逻辑地址翻译为物理地址(S421)。管理部152a向数据处理部151a返回通过翻译获得的物理地址。在未接收到翻译请求的情况下(S418,否)或在S421的处理之后,管理部152a再次执行S401的处理。

这样,在第2实施方式中,管理部152a通过复制第2表高速缓存145a,来生成第2表高速缓存145b。管理部152a在将由原子写入模式的写入命令请求写入的用户数据写入到NAND存储器12时,使用第2表高速缓存145b。在原子写入模式的结束时,管理部152a将第2表高速缓存145b反映到第2表高速缓存145a。由于到线程结束为止,第2表高速缓存145a都不由原子写入模式的写入命令的处理更新,所以在线程中断了的情况下且存在由该中断了的线程的写入命令请求写入且向NAND存储器12写入完毕的用户数据的情况下,表示该用户数据的存储位置的物理地址依第2表高速缓存145a,成为与逻辑地址不相对应的状态。从而,由于即使复原了线程中断了的时刻的第2表高速缓存145a,所复原的第2表高速缓存145a的状态也是线程未开始的状态,所以原子写入的工作得以实现。

另外,在数据处理部151将更新请求排队直到线程的结束时为止,且在线程的结束时执行管理部152所排队的全部更新请求的情况下,管理部152需要按每个更新请求访问翻译信息。相对于此,根据第2实施方式,在线程的结束时,由于管理部152a以区域为单位执行翻译信息的反映,所以可以更快地完成线程结束时的翻译信息的更新。

另外,管理部152a在由读出命令请求读出的用户数据1221从NAND存储器12的读出时,使用第2表高速缓存145a。由此,即使在线程的执行中,也可以基于线程未开始的状态的翻译信息,执行自NAND存储器12的用户数据1221的读出。

另外,管理部152a在由非原子写入模式的写入命令请求写入的用户数据向NAND存储器12的写入时,使用第2表高速缓存145a。由此,即使在线程的执行中,也可以基于线程未开始的状态的翻译信息,执行向NAND 存储器12的用户数据的写入。

另外,管理部152a根据结束命令的接收,将第2表高速缓存145b反映到第2表高速缓存145a。由于在线程的结束后使第2表高速缓存145b反映到第2表高速缓存145a,所以存储系统1在线程的结束前保持为由线程的写入命令请求写入的任一用户数据都未被写入的状态,在线程的结束后,转移到由线程的写入命令请求写入的全部用户数据都被写入了的状态。即,原子写入的工作得以实现。

管理部152a对应于由线程的写入命令请求写入的一个以上的用户数据之中最后请求写入的用户数据向NAND存储器12的写入,更新第2表高速缓存145b,之后将该第2表高速缓存145b反映到第2表高速缓存145a。

数据处理部151a可以并行接收多个线程的写入命令。管理部152a按每个线程生成第2表高速缓存145b。由此,存储系统1a可以实现多个线程的原子写入的工作。

结束命令包含用于确定对应的线程的标识信息。由此,存储系统1可以基于结束命令包含的标识信息来确定结束的对象的线程。

存储系统1向外部提供的逻辑地址空间的大小称为标称容量。存储系统1的标称容量比可以写入用户数据1221的区域(即用户数据区域122)的容量小。这是因为,在用户数据区域122存储:存储位置依翻译信息与逻辑地址相对应的用户数据1221和存储位置依翻译信息与逻辑地址不相对应的用户数据1221。从用户数据区域122的容量减去标称容量而获得的容量称为余裕容量。用户数据区域122可以将存储位置依翻译信息与逻辑地址不相对应的用户数据1221最大积聚到余裕容量。在第1实施方式中,通过处理中的全部线程可以从主机2接收的用户数据的合计容量不能超过余裕容量。即,数据处理部151a可以接收的用户数据的从线程的最初的用户数据起直至该线程的最后的第1数据为止的合计大小在存储系统1a的余裕容量以下。

(第3实施方式)

图13是表示存储系统1的安装例的图。存储系统1安装到例如服务器 系统1000。服务器系统1000由盘阵列2000和机架安装服务器3000通过通信接口4000连接而构成。作为通信接口4000的标准,可以采用任意的标准。机架安装服务器3000通过在服务器机架安装一个以上的主机2而构成。多个主机2可以经由通信接口4000访问盘阵列2000。

另外,盘阵列2000通过在服务器机架安装一个以上的存储系统1而构成。盘阵列2000除了存储系统1以外,也可以安装一个以上的硬盘单元。各存储系统1可以执行来自各主机2的命令。另外,各存储系统1具有采用了第1或第2实施方式的构成。由此,各存储系统1可以简单地执行原子写入。

另外,在盘阵列2000中,例如,各存储系统1也可以用作为一个以上的硬盘单元的高速缓存。盘阵列2000也可以安装利用一个以上的存储系统1构建RAID的存储控制单元。

虽然说明了本发明的几个实施方式,但是这些实施方式是作为例子而呈现的,而并非要限定发明的范围。这些新实施方式能够以其他各种方式实施,在不脱离发明的主旨的范围,可以进行各种省略、置换、改变。这些实施方式和/或其变形包含于发明的范围和/或主旨,并且包含于权利要求的范围所记载的发明及其均等的范围。

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