存储装置及非易失性存储器的控制方法
相关申请
本申请享有以日本专利申请2015-7963号(申请日:2015年1月9日)及日本专利申请2015-110444号(申请日:2015年5月29日)为基础申请的优先权。本申请通过参照这些基础申请,包含基础申请的全部内容。
技术领域
本实施方式涉及存储装置及非易失性存储器的控制方法。
背景技术
固态驱动器(SSD)例如具备NAND型闪速存储器等那样的非易失性存储器。NAND型闪速存储器具备多个块(物理块)。多个块包含在字线与位线的交点配置的多个存储单元。
发明内容
本实施方式提供便利性高的存储装置及非易失性存储器的控制方法。
根据本实施方式,存储装置包含非易失性存储器、控制非易失性存储器的控制电路、存储器。存储器存储控制程序。控制程序包含在由控制电路执行的情况下,从第1程序接收命令并基于命令对控制电路进行控制的驱动程序,使控制电路执行针对非易失性存储器的访问。控制程序管理针对非易失性存储器的管理信息,在从第2程序接收到管理信息的输出命令的情况下,向第2程序发送管理信息,在从第3程序接收到针对非易失性存储器的处理的设定信息的情况下,基于设定信息执行针对非易失性存储器的处理。
附图说明
图1是表示第1实施方式所涉及的信息处理系统的构成的一例的方框图。
图2是表示第1实施方式所涉及的控制程序的构成的一例的方框图。
图3是表示第1实施方式所涉及的存储装置的嵌入状态的一例的方框图。
图4是表示第1实施方式所涉及的信息处理系统的构成要素间的关系的一例的方框图。
图5是表示由第1实施方式所涉及的控制程序及硬件部执行的处理的一例的流程图。
图6是表示第2实施方式所涉及的信息处理系统的构成要素间的关系的一例的方框图。
图7是表示第3实施方式所涉及的存储装置的构成要素间的关系的一例的方框图。
图8是表示第3实施方式所涉及的处理器及存储器的关系的一例的方框图。
图9是表示第3实施方式所涉及的调度器的第1处理的一例的流程图。
图10是表示第3实施方式所涉及的调度器的第2处理的一例的流程图。
图11是表示第3实施方式所涉及的任务间的区域信息的通知状态的一例的方框图。
图12是表示第3实施方式所涉及的任务及存储区域的关系的一例的方框图。
图13是表示第4实施方式所涉及的信息处理系统的详细构成的一例的方框图。
图14是表示第4实施方式所涉及的存储系统的一例的立体图。
具体实施方式
以下,参照附图说明实施方式。在以下的说明中,关于大致同一功能及构成要素标注同一符号,且仅在必要的情况下进行重复说明。
[第1实施方式]
本实施方式说明具备软件定义型(Software Defined)平台的存储装置。
软件定义型平台例如将存储装置的功能从硬件的控制分离,由软件执行控制。
在本实施方式中,设定存储装置例如是SSD,但是也可以是存储卡、硬盘驱动器(HDD)、包含HDD和SSD的混合型存储装置、光盘等各种类别的存储装置。在存储装置为SSD的情况下,该存储装置具有与HDD相同的接口。
作为SSD的存储装置包含非易失性存储器。在本实施方式中,说明非易失性存储器包含NAND型闪速存储器的情况。但是,非易失性存储器例如也包含NOR型闪速存储器、MRAM(Magnetoresistive Random Access Memory:磁阻随机存取存储器)、PRAM(Phase changeRandom Access Memory:相变随机存取存储器)、ReRAM(Resistive Random AccessMemory:电阻随机存取存储器)或FeRAM(Ferroelectric Random Access Memory:铁电随机存取存储器)等非NAND型闪速存储器的其他种类存储器。另外,也可以设定非易失性存储器包含3维存储器。
非易失性存储器按每个擦除单位区域而一并擦除数据。擦除单位区域包含多个写入单位区域及多个读出单位区域。在非易失性存储器为NAND型闪速存储器的情况下,擦除单位区域相当于块。写入单位区域及读出单位区域相当于页。
在本实施方式中,所谓访问,意味着向存储器写入数据及从存储器读出数据这双方。
在本实施方式中,处理单位设为任务。但是,例如也可以使用作业、进程、事务、线程等其他处理单位。例如,线程是与并行处理对应的最小处理单位,换言之,也可以设为若分解则无法同时处理的最小单位。例如,任务也可以设为包含一个以上的线程。例如,进程也可以设为包含一个以上的任务。例如,事务是为了防止矛盾而被管理的处理单位,也可以设为包含一个以上的进程。例如,作业也可以设为针对依赖于信息处理装置或程序的命令而执行的处理的单位。
图1是表示本实施方式所涉及的信息处理系统的一例的方框图。
信息处理系统1包含信息处理装置2和存储装置3。信息处理装置2可以作为与存储装置3对应的主机装置而工作。
存储装置3可以内置于信息处理装置2,信息处理装置2与存储装置3也可以通过网络等连接为可以发送接收数据。存储装置3也可以与多个信息处理装置2连接为可以通信。另外,也可以将多个存储装置3与一个以上的信息处理装置2连接为可以通信。
存储装置3包含作为控制电路的一例的控制器4和非易失性存储器5。控制器4和非易失性存储器5也可以设为可装卸,存储装置3的存储容量能够自由地扩展。这里,所谓存储容量,设为可以写入到存储器的最大的数据量。
控制器4的硬件部包含接口部6、存储器7A、7B、处理器P0~PN、存储器控制器9。控制器4例如与非易失性存储器5电连接。在本实施方式中,以控制器4具备多个处理器P0~PN的情况为例进行说明,但是控制器4中具备的处理器的数量可以在一个以上自由地改变。
接口部6在与例如信息处理装置2等这样的外部装置之间,进行数据、信息、信号、命令等的发送及接收。
存储器7A作为工作用存储器而使用。存储器7A存储例如处理器P0~PN的处理对象的程序、数据、信息等。存储器7A也可以是例如DRAM(Dynamic Random Access Memory:动态随机存取存储器)或SRAM(Static Random Access Memory:静态随机存取存储器)等这样的易失性存储器、或非易失性存储器。
存储器7B例如设为非易失性存储器。但是,存储器7B的一部分也可以是易失性存储器。存储器7B存储地址变换数据10、控制程序11、程序F0~FM。另外,地址变换数据10、控制程序11、程序F0~FM的一部分或全部也可以存储在处理器P0~PN内的存储器、存储器7A、非易失性存储器5等这样的其他存储器。
在图1的例子中,以控制器4具备多个程序F0~FM的情况为例进行说明,但是控制器4中具备的程序的数量可以在一个以上自由地改变。
地址变换数据10是将写入数据或读出数据的逻辑地址(例如逻辑块地址(LogicalBlock Addressing(LBA)))与物理地址(例如物理块地址(Physical Block Addressing(PBA)))相关联的数据,例如是LUT(Look Up Table,查找表)。地址变换数据10既可以设为具有表形式的数据构造,也可以设为具有例如列表形式等这样的其他数据构造。
本实施方式所涉及的软件定义型平台包含控制程序11、控制器4的硬件部、非易失性存储器5。例如,在存储装置3为SSD的情况下,控制程序11、控制器4的硬件部、非易失性存储器5是软件定义型的SSD平台(存储装置平台)。通过使用软件定义型的SSD平台,可以将SSD的功能从硬件的控制分离,实现软件控制。
在本实施方式中,所谓平台,指作为为了使硬件或软件工作而所需的基础的硬件、操作系统(OS)、中间件、它们的组合、设定、环境等的总体。
处理器P0~PN执行控制程序11及程序F0~FM。处理器P0~PN分别具备管理部C0~CN。但是,处理器P0~PN和管理部C0~CN也可以设为独立构成。在本实施方式中,设为处理器P0是主处理器,处理器P1~PN是从属于主处理器而工作的从属处理器。另外,处理器P0也可以设为除了作为主处理器的功能以外,还包含与处理器P1~PN同样地作为从属处理器的功能。例如,作为管理部C0~CN,可以使用队列,以先入先出方式管理等待执行任务。但是,管理部C0~CN中的等待执行任务例如可以基于执行多个等待执行任务之中高优先度的任务等其他基准来进行管理。
控制程序11是以程序F0~FM不依赖于存储装置3的例如控制器4等那样的硬件部的方式,在程序F0~FM与硬件部之间实现基本工作,吸收硬件的差异的公共模块。在本实施方式中,所谓不依赖,设为即使至少进行协作的另一方软件或硬件被取代也可以继续利用的性质。因此,控制程序11遵循API(Application Program Interface,应用程序接口)、例如LBA接口等逻辑接口、物理接口。例如,控制程序11通过API及逻辑接口,可以与不依赖于硬件部的可以取代的SSD模块(例如之后说明的图4的模块131~136)交换数据、信息、信号、命令等。
例如,控制程序11在由控制器4的硬件部执行的情况下,包含经由为了接收命令、信息、数据等而定义的接口接收由程序F0~FM之中的第1程序发布的命令并基于命令来执行针对控制器4的硬件部及非易失性存储器5的控制的驱动程序,使控制器4的硬件部执行针对非易失性存储器5的访问。
另外,控制程序11管理针对非易失性存储器5的管理信息,并在经由接口从程序F0~FM之中的第2程序接收了管理信息的输出命令的情况下,向第2程序发送管理信息。
进而,控制程序11在经由接口从程序F0~FM之中的第3程序接收了针对非易失性存储器5的处理的设定信息的情况下,基于设定信息执行针对非易失性存储器5的处理。
在本实施方式中,第1至第3程序可以自由地组合。
控制程序11进行例如任务的调度。由此,处理器P0监视处理器P1~PN中所具备的管理部C1~CN的状态,将由管理部C0管理的任务分配到等待状态的任务少的管理部C1~CN的任一个。各个处理器P1~PN执行由管理部C1~CN管理的任务。
在本实施方式中,存储器7A、7B中的控制程序11的存储位置、程序F0~FM的存储位置、控制程序11的工作区域的位置、各程序F0~FM的工作区域的位置在存储装置3的启动时确定,在此后启动中不重新配置。
程序F0~FM例如是固件、应用程序、模块或处理程序等这样的各种软件。在本实施方式中,以程序F0~FM为固件的情况为例进行说明,但是关于程序F0~FM的种类不限定于此。
例如,处理器P0~PN通过控制程序11与程序F0~FM的协作,作为接收部81、地址变换部82、写入部83、读出部84起作用。
由于程序F0~FM与控制程序11在存储装置3中协作工作,所以程序F0~FM的软件开发者不必考虑存储装置3的硬件部就可以生成程序F0~FM。
存储器控制器9控制对非易失性存储器5的访问。
在数据写入时,信息处理装置2向存储装置3发送写入命令、写入数据和表示写入数据的逻辑地址。
由处理器P0~PN实现的接收部81从信息处理装置2经由接口部6,接收写入命令、写入数据、逻辑地址。
地址变换部82在由接收部81接收了写入命令的情况下,进行对于地址变换数据10、用于将附加到了写入命令的逻辑地址变换为非易失性存储器5的物理地址的关联。
写入部83经由存储器控制器9,向由地址变换部82获得的非易失性存储器5的物理地址所表示的位置写入写入数据。
在数据读出时,信息处理装置2向存储装置3发送读出命令和表示读出数据的逻辑地址。
接收部81从信息处理装置2经由接口部6,接收读出命令和逻辑地址。
地址变换部82在由接收部81接收了读出命令的情况下,基于地址变换数据10,将附加到了读出命令的逻辑地址变换为物理地址。
读出部84经由存储器控制器9从非易失性存储器5的物理地址所表示的位置,读出读出数据。然后,读出部84将读出数据经由接口部6发送到信息处理装置2。
图2是表示本实施方式所涉及的控制程序11的构成的一例的方框图。
控制程序11遵循API。因此,程序F0~FM可以使用控制程序11的各种功能。
另外,控制程序11遵循例如LBA接口等这样的逻辑接口及例如PBA接口等这样的物理接口。因此,存储装置3可以实现与典型的SSD同样的工作。这里,逻辑接口是例如在与软件之间处理逻辑地址时的标准。物理接口是例如在与硬件之间处理物理地址时的标准。
例如,控制程序11包含模块间通信部111、优先控制部112、中断处理程序113、访问部114、信息管理部115、硬件驱动器116、处理执行部117。
模块间通信部111经由接口,进行例如各种程序间的数据、信息、信号、命令等的发送及接收。
优先控制部112例如根据程序F0~FM的优先度,来切换执行的程序F0~FM。更具体地,优先控制部112例如以任务为单位管理各种程序F0~FM的优先度,优先执行优先度高的任务。
中断处理程序113检测来自存储装置3的任一个硬件或软件的中断事件,执行与检测到的中断相应的处理。
访问部114控制对非易失性存储器5的擦除、读出、写入等基本工作。
信息管理部115管理针对非易失性存储器5的各种管理信息115a。例如,信息管理部115生成及管理包含例如统计信息、合计信息、控制信息等的管理信息115a。由信息管理部115管理的管理信息115a至少是在针对非易失性存储器5的处理中使用的设定信息117a的生成所需的信息。管理信息115a包含例如针对非易失性存储器5所包含的NAND型闪速存储器的各块的擦除次数、针对各块的擦除频度、针对各页的读出次数、针对各页的读出频度、针对各页的写入次数、针对各页的写入频度、各块的大小、各块内的页的数量、各页的大小、推定写入速度、推定写入延迟时间、推定读出速度、推定读出延迟时间等之中的至少一个。
信息管理部115在从程序F0~FM中的任一个接收到管理信息115a的输出命令的情况下,向输出命令的发布源发送管理信息115a。
硬件驱动器116控制存储装置3的各种硬件。作为硬件驱动器116的种类,例如有控制接口部6的驱动器、控制电源的驱动器、控制计时器的驱动器等。
处理执行部117在从程序F0~FM中的任一个接收到针对非易失性存储器5的处理的设定信息117a的情况下,基于设定信息117a,执行针对非易失性存储器5的处理。
例如,设定信息117a可以设为至少在针对非易失性存储器5的处理中使用的参数。更具体地,例如,可以设为:设定信息117a是垃圾收集的执行条件信息,处理执行部117基于垃圾收集的执行条件信息执行垃圾收集。另外,例如也可以设为:设定信息117a是在非易失性存储器5的哪个位置写入怎样的数据的写入位置信息,处理执行部117在非易失性存储器5中的写入位置信息所表示的位置写入数据。
图3是表示本实施方式所涉及的存储装置3的嵌入状态的一例的方框图。在该图3中,以嵌入程序F0的情况为例进行说明,但是在嵌入例如程序F1~FM等这样的其他程序的情况下也同样。
存储装置3的制造商生成存储装置3。存储装置3初始具备包含控制程序11、控制器4的硬件部4H、非易失性存储器5的软件定义型的SSD平台。在本实施方式中,存储装置3初始也可以不具备固件或应用程序等这样的程序F0。这里,所谓初始,例如是产品出厂时、交货时或销售时。另外,存储装置3也可以初始具备与软件定义型的SSD平台协作、制造商推荐的典型的程序或标准的程序。
另外,制造商将支持程序F0的开发的软件开发装置13提供或销售给例如用户、顾客、存储装置3的购入者或软件开发者等这样的第三方。在本实施方式中,以软件开发者使用软件开发装置13的情况为例进行说明。
软件开发装置13具备非易失性存储器5的模拟器、存储装置3的模拟器。由此,例如,即使是与外部网络物理性切断的封闭的开发环境,软件开发者也可以使用软件开发装置13进行程序F0的开发。
软件开发装置13支持由软件开发者进行的程序F0的开发。软件开发者也可以例如是存储装置3的用户或购入者等。在本实施方式中,程序F0是例如用户定义的可以取代模块,是控制程序11的上位层模块。
由于控制程序11遵循API及逻辑接口,所以软件开发者可以有效地生成与存储装置3的用户或购入者的要求相应的程序F0。
若程序F0生成,则存储装置3的用户、购入者或软件开发者对存储装置3嵌入程序F0。
在本实施方式中,由于控制程序11设置于存储装置3,所以程序F0无需感知到硬件部4H便可以工作。
用户或购入者可以在存储装置3中容易地安装、使用适合于自己的程序F0。
在本实施方式中,在非易失性存储器5与硬件4H之间,应用第1接口或协议。在硬件4H与控制程序11之间,应用第2接口或协议。在程序F0~FM与控制程序11之间,应用第3接口或协议。由此,即使非易失性存储器5、硬件4H、控制程序11、程序F0~FM之中的至少一部分被取代,也可以继续利用其他的软件或硬件。
图4是表示本实施方式所涉及的信息处理系统1的构成要素间的关系的一例的方框图。
存储装置3通过主要具备2个抽象化层,来支持可以取代SSD模块131~137的开发。上述程序F0~FM相当于可以取代SSD模块133~136。
第1抽象化层包含软件定义型的SSD平台。软件定义型的SSD平台包含控制程序11、硬件部4H、非易失性存储器5。软件定义型的SSD平台由例如存储装置3的制造商生成,安装到存储装置3。在第1抽象化层中,非易失性存储器5包含多个NAND型闪速存储器B0~BP。
第2抽象化层包含可以取代SSD模块131~137。第2抽象化层在上位执行存储器控制。可以取代SSD模块131~136通过例如API及逻辑接口,可以与控制程序11交换数据、信息、信号、命令等。在第2抽象化层中,中断处理程序137不使用控制程序11便可以与硬件部4H交换数据、信息、信号、命令等。
在第2抽象化层中,SSD模块131及新模块132例如由制造商生成,作为标准的SSD模块或功能嵌入到存储装置3。
模块133~135、驱动模块136、中断处理程序137由软件开发者等第三方生成,嵌入到存储装置3。
SSD模块131、新模块132、模块133~135在与例如信息处理装置2等这样的外部装置中所具备的驱动器141~145之间,可以交换数据、信息、信号、命令等。
驱动模块136、中断处理程序137在与例如网络设备、拍摄装置或传感器等这样的外部硬件部146之间,可以交换数据、信息、信号、命令等。驱动模块136可以控制外部硬件部146。中断处理程序137检测来自外部硬件部146或硬件部4H的中断事件,对硬件部4H或外部硬件部146执行与检测到的中断相应的处理。
图5是表示由本实施方式所涉及的控制程序11及硬件部4H执行的处理的一例的流程图。
在步骤S501,控制程序11从程序F0~FM的任一个,经由接口接收访问命令。例如,控制程序11接收写入命令、逻辑地址、写入数据。例如,控制程序11接收读出命令、逻辑地址。
在步骤S502,控制程序11及硬件部4H基于访问命令,将逻辑地址变换为物理地址,对非易失性存储器5进行写入数据的写入或读出数据的读出。控制程序11在从非易失性存储器5读出了读出数据的情况下,将读出数据发送到读出命令的发布源。
在步骤S503,控制程序11生成针对非易失性存储器5的管理信息115a。
在步骤S504,控制程序11从程序F0~FM的任一个,经由接口接收管理信息115a的输出命令。
在步骤S505,控制程序11基于输出命令,向输出命令的发布源发送管理信息115a。
在步骤S506,控制程序11从程序F0~FM的任一个,经由接口,接收处理执行命令和设定信息117a。
在步骤S507,控制程序11及硬件部4H基于处理执行命令和设定信息117a,执行针对非易失性存储器5的处理。
在以上说明的本实施方式中,无需依赖于存储装置3的硬件部4H,便可以生成程序F0~FM、可以取代SSD模块131~136,并将程序F0~FM、可以取代SSD模块131~136嵌入到存储装置3,并使用存储装置3。
由此,可以使存储装置3的便利性提高。
在本实施方式中,在存储装置3的硬件部4H改变或版本升级了的情况下,在新的存储装置3中也可以继续使用程序F0~FM、可以取代SSD模块131~136。
程序F0~FM、可以取代SSD模块131~136无需感知到存储装置3的硬件部4H,便能够进行开发。
存储装置3的用户或购入者即使在引入新的存储装置3的情况下,也可以在新的存储装置3中继续使用先前生成的程序F0~FM、可以取代SSD模块131~136。
从而,在本实施方式中,可以削减存储装置3的开发、保养、维护的劳力、费用、时间,能够使开发工作有效化。
在本实施方式中,存储装置3的用户或购入者可以使用适于自己的程序F0~FM、可以取代SSD模块131~137。从而,用户容易在存储装置3的运用中引入自己的技巧。
在本实施方式中,存储装置3的制造商可以大量地生产、销售存储装置3。
在本实施方式中,用户可以独自开发例如固件或应用程序等这样的程序F0~FM、可以取代SSD模块131~137,并容易向存储装置3安装程序F0~FM、可以取代SSD模块131~137。
在本实施方式中,可以容易将网络设备、拍摄装置或传感器等这样的外部硬件部146与存储装置3连接,将从外部硬件部146接收到的数据写入到非易失性存储器5。换言之,在本实施方式中,存储装置3可以容易地安装与外部硬件部146之间的接口。从而,本实施方式所涉及的存储装置3适用于例如IoT(Internet of Things,物联网)。
在本实施方式中,例如,存储装置3的制造商向购入、使用本公司的非易失性存储器5的用户低价或无偿提供控制程序11、硬件部4H、软件开发装置13之中的至少一个。由此,存储装置3的制造商可以促进本公司的非易失性存储器5的销售。
在本实施方式中,即使在存储装置3的销售或交货之前,软件开发者也可以使用软件开发装置13来生成程序F0~FM、可以取代SSD模块131~137。在本实施方式中,存储装置3的制造商无需开发对于用户或购入者而言特有的程序,便可以将存储装置3迅速地销售或交货。从而,可以缩短从存储装置3的出厂到用户或购入者使用存储装置3为止的期间。
存储装置3的用户或购入者可以自由地执行垃圾收集的执行条件的改变、垃圾收集的删除、在非易失性存储器5的哪个位置写入怎样的数据的确定,可以根据自己的使用方式来延长非易失性存储器5的寿命。
在本实施方式中,控制程序11的存储位置、程序F0~FM的存储位置、控制程序11的工作用区域的位置、各程序F0~FM的工作用区域的位置在存储装置3的启动时确定,在以后启动中不重新配置。由此,不需要程序及数据的重新配置,可以使存储装置3的工作高速化。
在本实施方式中,即使非易失性存储器5、硬件4H、控制程序11、程序F0~FM、可以取代SSD模块131~137之中的至少一部分被取代,也可以继续利用其他的软件或硬件。例如,即使在伴随着非易失性存储器5的开发而非易失性存储器5的世代发生了改变的情况下,也可以再利用程序F0~FM、可以取代SSD模块131~137、控制器4的硬件部4H及控制程序11。
[第2实施方式]
在本实施方式中,说明在上述第1实施方式中说明了的信息处理系统1的变形例。
在本实施方式中,存储装置3按每个虚拟机分配虚拟存储装置(虚拟SSD)。
图6是表示本实施方式所涉及的信息处理系统的构成要素间的关系的一例的方框图。
本实施方式所涉及的信息处理系统1A具备存储装置3和虚拟机VM0~VMP。
存储装置3具有大的存储容量。存储装置3具备虚拟存储装置VS0~VSP、控制程序11、NAND型闪速存储器B0~BP。NAND型闪速存储器B0~BP相当于上述图1的非易失性存储器5。
虚拟存储装置VS0~VSP分别与虚拟机VM0~VMP相对应。各个虚拟存储装置VS0~VSP可以相互独立地工作,由此实现稳定的性能。
控制程序11可以基于标准命令集(Common Command Set)而工作。控制程序11在存储装置3中,与多个虚拟存储装置VS0~VSP协作。控制程序11对各虚拟存储装置VS0~VSP的参数个别地进行改变及管理。
例如,控制程序11按每个虚拟存储装置VS0~VSP,可以改变存储容量、垃圾收集的设定、过度贮备(プロビショニング)的设定、存储器的粒度(Granularity)的设定、可靠性(纠错能力)的程度。这里,所谓垃圾收集,是自动地释放程序动态地确保的存储区域之中变得不需要的区域的功能。所谓过度贮备,指确保预备区域。所谓存储器的粒度,指例如NAND型闪速存储器的块及页的大小、硬盘的扇区的大小等进行写入的单位的大小、进行读出的单位的大小及进行擦除的单位的大小。
控制程序11可以适宜改变各虚拟存储装置VS0~VSP的数量、各虚拟存储装置VS0~VSP的存储容量。
控制程序11具备按每个虚拟存储装置VS0~VSP而不同的软件端口。控制程序11对各虚拟存储装置VS0~VSP,分配NAND型闪速存储器B0~BP。例如,控制程序11通过与各虚拟存储装置VS0~VSP对应的名字空间,管理对各虚拟存储装置VS0~VSP分配的NAND型闪速存储器B0~BP。换言之,非易失性存储器5被分割为多个名字空间,各虚拟存储装置VS0~VSP与对应于自己的名字空间相对应。
在本实施方式中,所谓名字空间,是通过区分非易失性存储器5中所包含的多个块而获得的存储器的空间。通过按每个虚拟存储装置VS0~VSP来分配名字空间,即使是在虚拟存储装置VS0~VSP之中的至少2个虚拟存储装置中逻辑地址重复的情况下,也可以使用名字空间的标识信息和逻辑地址来访问适合的数据。
在以上说明的本实施方式中,可以将一个存储装置3作为多个虚拟存储装置VS0~VSP来对待,能够进一步使存储装置3的便利性提高。
在本实施方式中,由于使用名字空间来管理NAND型闪速存储器B0~BP针对各虚拟存储装置VS0~VSP的分配,所以可以使从虚拟存储装置VS0~VSP对NAND型闪速存储器B0~BP的访问的精度提高。
在本实施方式中,由于各个虚拟存储装置VS0~VSP可以相互独立地工作,所以可以实现稳定的性能。
[第3实施方式]
在本实施方式中,说明上述第1及第2实施方式的变形例,即由包含调度器的控制程序11控制多个处理器的存储装置。
图7是表示本实施方式所涉及的存储装置3的构成要素间的关系的一例的方框图。在该图7中,控制程序11、模块131~136、中断处理程序137设为软件。驱动器141~145及外部硬件部146设为硬件。
存储装置3包含控制程序11、硬件部4H、多个NAND型闪速存储器B0~BP。硬件部4H包含多个处理器P0~PN和存储器7A。
控制程序11包含作为调度器15的功能。另外,调度器15也可以由硬件实现。
存储器7A由多个处理器P0~PN共享。处理器P0~PN的任一个在存储器7A存储数据、信息、信号、命令,处理器P0~PN之中的其他处理器从存储器7A读出数据、信息、信号、命令,由此可以在处理器P0~PN间交换数据、信息、信号、命令。
例如,在模块131~136与控制程序11之间,设为通过标准的接口可以交换数据、信息、信号、命令。
例如,在SSD模块131~136与外部装置中所具备的驱动器141~145及外部硬件部146之间,设为通过独自的接口可以交换数据、信息、信号、命令。外部硬件部146例如既可以设为相对于存储装置3的外部的存储装置,也可以设为外部的NAND型闪速存储器。
例如,多个NAND型闪速存储器B0~BP由非易失性存储器5的制造商生成。
例如,硬件部4H由控制器4的制造商生成。
例如,控制程序11由非易失性存储器5的制造商、控制器4的制造商或第1软件开发者生成。
例如,模块131、132由非易失性存储器5的制造商、控制器4的制造商或第1软件开发者生成。
例如,模块133~135、驱动模块136、中断处理程序137由第2软件开发者生成。
在本实施方式中,调度器15动态地确定使哪个处理器执行哪个任务。换言之,调度器15是动态的任务调度器。
以下,说明由本实施方式所涉及的控制程序11进行的控制的例子。
图8是表示本实施方式所涉及的处理器P0~P2及存储器7A的关系的一例的方框图。在该图8中,为了使说明简化,以处理器为3个的情况为例进行说明,但是处理器为4个以上的情况也同样。另外,在主处理器P0也包含作为从属处理器的功能的情况下,处理器只要为2个以上即可。
处理器P0~P2分别具备管理部C0~C2和调度器150~152。处理器P0~P2控制硬件部4H的其他硬件,由此控制针对非易失性存储器5的写入数据的写入、读出数据的读出、写入数据的擦除。
管理部C0与处理器P0对应,可以管理多个等待执行任务及其执行顺序。
管理部C1可以管理由处理器P1执行的等待执行处理及其执行顺序。
管理部C2可以管理由处理器P2执行的等待执行处理及其执行顺序。
在本实施方式中,可以由管理部C1、C2管理的最大任务数设为2,但是也可以是3以上。
调度器15包含由处理器P0进行调度的调度器150和由处理器P1进行调度的调度器151和由处理器P2进行调度的调度器152。但是,调度器15也可以不必分散而由例如处理器P0集中地工作。
调度器150是主调度器,向调度器151、152分配管理部C0的等待执行任务,使得从属处理器P1、P2的负荷或管理部C1、C2内的等待执行任务的数量均等化。
调度器151、152是从属的调度器,将处理器P1、P2的处理时间及延迟时间缩短化。
调度器151、152分别求出管理部C1、C2的任务的数量。
调度器151判断由管理部C1管理的等待执行任务的数量是否在第1阈值以下,并将判断结果发送到主调度器150。
调度器152判断由管理部C2管理的等待执行任务的数量是否在第2阈值以下,并将判断结果发送到主调度器150。
调度器150在由管理部C1管理的等待执行任务的数量在第1阈值以下的情况下,向调度器151通知由管理部C0管理的等待执行处理。调度器151通过管理部C1管理从调度器150通知的等待执行处理。
调度器150在由管理部C2管理的等待执行任务的数目在第2阈值以下的情况下,向调度器152通知由管理部C0管理的等待执行处理。调度器152通过管理部C2管理从调度器150通知的等待执行处理。
在本实施方式中,调度器150在存储器7A存储将用于标识等待执行任务的任务标识信息与该等待执行任务的执行优先度相关联的优先度信息16。
调度器150在从管理部C0向管理部C1或管理部C2改变等待执行任务的管理地的情况下,基于优先度信息16,将由管理部C0管理的高优先度的等待执行任务确定为管理地改变的任务。更具体地,例如,调度器150可以将优先度最高的等待执行任务确定为管理地改变的任务。例如,调度器150也可以将由管理部C0管理的等待执行任务中优先度属于上级的组的等待执行任务之中的任一个确定为管理地改变的任务。例如,调度器150也可以在由管理部C0管理优先度为预定的值以上的等待执行任务的情况下,将优先度为预定的值以上的等待执行任务确定为管理地改变的任务,在不由管理部C0管理优先度为预定的值以上的等待执行任务的情况下,按照先入先出方式,确定管理地改变的任务。
以下,在处理器P1、P2中同样的处理使用处理器P1说明,关于处理器P2省略说明或简单地进行说明。
调度器151在由处理器P1结束了任务执行的情况下,执行由管理部C1管理的下一任务。
调度器151在执行由管理部C1管理的下一任务的情况下,基于优先度信息16,将由管理部C1管理的高优先度的等待执行任务确定为接着执行的任务。更具体地,例如,调度器151可以将优先度最高的任务确定为接着执行的任务。例如,调度器151也可以将由管理部C1管理的任务中优先度属于上级的组的任务之中的任一个确定为接着执行的任务。例如,调度器151也可以在由管理部C1管理优先度为预定的值以上的任务的情况下,将优先度为预定的值以上的任务确定为接着执行的任务,在不由管理部C1管理优先度为预定的值以上的任务的情况下,按照先入先出方式,确定接着执行的任务。
调度器151在由处理器P1结束了任务执行的情况下,向调度器150发送表示任务执行结束了这一情况的任务结束信息。调度器150在由管理部C0管理等待执行任务的情况下,确定管理地改变的任务,并向发出了任务结束信息的调度器151通知管理地改变的任务。调度器151通过管理部C1管理从调度器150通知的任务。
调度器151也可以设为在基于由处理器P1执行了的任务而启动新的任务且新的任务由处理器P1、P2之中的一方的处理器执行的情况下,向与一方的处理器对应的调度器通知新的任务。在该情况下,与一方的处理器对应的调度器使与一方的处理器对应的管理部管理新的任务。
调度器151也可以在基于由处理器P1执行了的任务而启动新的任务且新的任务可以由处理器P1、P2之中的任一个执行的情况下,向与处理器P0对应的调度器150通知新的任务。在该情况下,调度器150使管理部C0管理新的任务。
调度器151也可以在基于由处理器P1执行了的任务而启动新的任务且新的任务可以由处理器P1、P2之中的任一个执行且由管理部C1管理的任务的数量在第1阈值以下的情况下,向与处理器P1对应的调度器151通知新的任务。在该情况下,调度器151使管理部C1管理新的任务。
调度器151也可以在基于由处理器P1执行了的任务而启动新的任务且新的任务可以由处理器P1、P2之中的任一个执行且由管理部C2管理的任务的数量在第2阈值以下的情况下,向与处理器P2对应的调度器152通知新的任务。在该情况下,调度器152使管理部C2管理新的任务。
调度器151也可以在基于由处理器P1执行了的任务而启动新的任务且新的任务可以由处理器P1、P2之中的任一个执行且由管理部C2、C3管理的任务的数量比第1阈值及第2阈值多的情况下,向与处理器P0对应的调度器150通知新的任务。在该情况下,调度器150使管理部C0管理新的任务。
由处理器P1、P2执行的任务不包含用于访问硬件部4H的等候会合(待ち合わせ)处理。在该情况下,若由处理器P1、P2开始任务的执行,则除了由处理器P1、P2接收中断等、产生了例外处理的情况外,不产生中断。
控制程序11在存储装置3的启动时或由管理部C1、C2管理的任务由处理器P1、P2执行之前,对全部任务分配必要的存储器7A的存储区域20。
控制程序11将使执行的任务与对该任务分配的存储区域20相关联的区域信息17存储于存储器7A。控制程序11基于区域信息17,确定在执行任务的情况下使用的存储区域20。
控制程序11在停止处理器P1、P2之中的至少一个的情况下,停止从与处理器P0对应的管理部C0向与停止的处理器对应的管理部的、任务的管理地的改变,而从与处理器P0对应的管理部C0向与未停止的处理器对应的管理部改变任务的管理地。例如,处理器通过被停止电源供给而停止。
控制程序11在处理器P1接收到中断的情况下,由与处理器P1对应的管理部C1管理接在中断之后的任务。
控制程序11在任务需要由硬件部4H的一部分执行的情况下,在存储器7A存储将任务与用于标识在该任务的执行中使用的硬件部4H的一部分的硬件标识信息相关联的硬件信息19。控制程序11基于硬件信息19,确定在执行任务的情况下在该任务的执行中使用的硬件部。然后,控制程序11由与所确定的硬件部对应的管理部来管理任务。具体地,控制程序11在从信息处理装置2接收到访问请求和硬件标识信息的情况下,在存储器9存储将基于访问请求的任务与硬件标识信息相关联的硬件信息19。控制程序11在执行基于访问请求的任务的情况下,由与硬件标识信息所表示的处理器对应的管理部来管理该任务。
图9是表示本实施方式所涉及的调度器15的第1处理的一例的流程图。在该图9中,例示了任务的管理地从管理部C0改变为管理部C1为止的处理。但是,任务的管理地从管理部C0改变为例如管理部C2等这样的其他管理部为止的处理也同样。
在步骤S901,调度器15通过管理部C0管理任务。
在步骤S902,调度器15判断由管理部C1管理的任务的数量是否在第1阈值以下。
在由管理部C1管理的任务的数量不在第1阈值以下的情况下,处理转移到步骤S905。
在由管理部C1管理的任务的数量在第1阈值以下的情况下,在步骤S903,调度器15基于优先度信息16,选择管理地从管理部C0改变为管理部C1的任务。
在步骤S904,调度器15将所选择的任务的管理地改变为管理部C1。
在步骤S905,调度器15在处理继续的情况下使处理转移到步骤S901,在处理不继续的情况下结束处理。
图10是表示调度器15的第2处理的一例的流程图。在该图10中,例示了基于执行了的任务启动新的任务且新的任务分配给管理部C0~C2的任一个为止的处理。
在步骤S1001,调度器15判断基于执行了的任务启动的新的任务由处理器P1执行还是由处理器P2执行、还是可以由处理器P1、P2的任一个执行。
在新的任务的执行地为处理器P1的情况下,在步骤S1002,调度器15通过管理部C1管理新的任务。
在新的任务的执行地为处理器P2的情况下,在步骤S1003,调度器15通过管理部C2管理新的任务。
在新的任务的执行地可以为处理器P1、P2的任一个的情况下,在步骤S1004,调度器15通过管理部C0管理新的任务。
图11是表示本实施方式所涉及的任务间的区域信息的通知状态的一例的方框图。
第1任务T1由处理器P1、P2的任一个执行。存储区域181是由第1任务T1使用的存储区域。
第2任务T2由处理器P1、P2的任一个执行。
第2任务T2使用由第1任务T1使用的存储区域181的一部分或全部。在该情况下,第1任务T1向第2任务T2通知存储区域181的区域信息。区域信息例如包含存储区域181的位置信息。
从第1任务T1向第2任务T2的区域信息的通知可以设为在存储装置3的电源接通且向任务T1分配了存储区域181的情况下执行。另外,从第1任务T1向第2任务T2的区域信息的通知也可以基于第2任务T2的启动而执行。
在本实施方式中,控制程序11即使在任务的执行结束了的情况下,也不将与该任务对应的存储区域分配给其他的任务。另外,在任务的执行结束后重新执行同一任务的情况下,重新使用相同存储区域。
任务也可以是引导程序的任务。在该情况下,基于存储装置3的电源接通,执行电源接通处理的任务由处理器P0~P2的管理部C0~C2的任一个管理。
硬件部4H和控制程序11中的至少一方也可以进行错误检测。在检测到错误的情况下,执行纠错处理的任务由处理器P0~P2的管理部C0~C2的任一个管理。
在本实施方式中,存储装置3的控制程序11也可以设为向模块131~136等发送NAND型闪速存储器B0~BP的按每个块的擦除次数、块内的页数、块大小、页大小等这样的存储信息。
控制程序11也可以在从任务接收到NAND型闪速存储器B0~BP的分配请求或释放请求的情况下,执行分配处理或释放处理,向任务通知对任务分配的或释放的NAND型闪速存储器B0~BP的块。
图12是表示本实施方式所涉及的任务及存储区域的关系的一例的方框图。
任务T1~T3之中的至少一个可以从其他多个任务接收请求。
若任务T1执行,则任务T1向在任务T1之后执行的任务T2发送请求和发出了该请求的任务T1的标识信息。另外,任务T1将通过执行而获得的信息存储在与任务T1对应的存储区域181或与任务T2对应的存储区域182。
任务T2使用在存储区域181存储的信息或在存储区域182存储的信息来执行。然会,任务T2向在任务T2之后执行的任务T3发送请求和发出了该请求的任务T2的标识信息。另外,任务T2将通过执行而获得的信息存储在与任务T2对应的存储区域182或与任务T3对应的存储区域183。
例如,在任务T2从多个其他任务接收请求的情况下,任务T1向任务T2发送发出了请求的任务T1的标识信息和在任务T2之后执行的任务T3的标识信息。任务T2使用与任务T1对应的存储区域181或与任务T3对应的存储区域183的信息来执行。然后,任务T2将通过执行而获得的信息存储在与任务T1对应的存储区域181或与任务T3对应的存储区域183。
例如,在任务T2从多个其他任务接收请求的情况下,任务T1向任务T2发送发出了请求的任务T1的标识信息和在任务T2之后执行的任务T3的标识信息。任务T2使用与任务T1对应的存储区域181的信息来执行。然后,任务T2将通过执行而获得的信息存储在与任务T3对应的存储区域183。
控制程序11可以设为在从信息处理装置2接收到命令和后续处理的标识信息的情况下,在命令执行后,执行由后续处理的标识信息表示的任务。由此,可以在基于相同命令执行了处理后,切换后续的处理。
例如,存储装置3的硬件部4H也可以划分为多个部分,后续处理的标识信息表示硬件部4H之中的一部分。
后续处理的标识信息也可以设为在存储装置3内管理的命令队列的队列编号。
在以上说明的本实施方式中,在存储装置3中采用共享并管理物理存储器的存储器共享型并行计算系统(Symmetric Multiprocessing:对称多处理)。
在本实施方式中,可以自动进行模块131~136的调度。
在本实施方式中,容易对存储装置3应用外部装置及外部硬件部136。
在本实施方式中,可以有效地使用存储装置3的多个处理器P0~PN,可以使存储装置3的性能提高。
在本实施方式中,第2软件开发者无需感知任务的调度便可以开发模块133~136。
在本实施方式中,若任务执行,则直至该任务的执行完成为止,都不产生中断。在本实施方式中,直至处理完成为止,在处理器P1、P2间都不发生数据或信息的交换等。在本实施方式中,直至开始任务的执行为止可以调换任务的执行顺序,但是在开始了任务的执行后,不调换任务的执行顺序。在本实施方式中,例如,除了从中断处理程序137接收中断的情况以外,任务的执行都不中断。从而,在本实施方式中,可以在任务执行中减少任务切换的执行,可以使处理高速化。另外,在本实施方式中,任务的总执行时间不变化,仅等待执行时间变化。因此,可以使在存储装置3中产生的延迟时间稳定化。
在本实施方式中,存储器7A的动态分配在存储装置3的启动时执行,在任务的切换时分配不改变。在本实施方式中,在相关联的任务之间的信息的交换中使用共享的存储器7A,在任务间不实施存储器保护。在本实施方式中,参照各任务所对应的存储区域。在本实施方式中,可以减少任务的中断的发生次数及发生频度。从而,在本实施方式中,可以减少由任务的切换导致的延迟时间。
在本实施方式中,可以由多个控制器4使用共享的软件,软件的更新及功能增加容易。
[第4实施方式]
在本实施方式中,说明在上述第1至第3实施方式中说明的信息处理系统1、1A的详细构成。
图13是表示本实施方式所涉及的信息处理系统的详细构成的一例的方框图。
信息处理系统1B包含信息处理装置2和存储系统3B。
本实施方式所涉及的存储系统3B可以执行程序F0~FM、控制程序11。
上述第1至第3实施方式所涉及的存储装置3与存储系统3B对应。
存储装置3的处理器P0~PN与CPU(Central Processing Unit,中央处理单元)43A、43B对应。
接口部6与主机接口41对应。
存储器7A、7B与DRAM47对应。
地址变换数据10与LUT45对应。
存储器控制器9与NANDC(NAND Controller,NAND控制器)50对应。
信息处理装置2作为存储系统3B的主机装置起作用。
存储系统3B的控制器4具备前端4F和后端4B。
前端(主机通信部)4F具备主机接口41、主机接口控制器42、加密/解密部(Advanced Encryption Standard(AES),高级加密标准)44及CPU43F。
主机接口41在与信息处理装置2之间,进行请求(写入命令、读出命令、擦除命令等)、LBA、数据等的通信。
主机接口控制器(控制部)42基于CPU43F的控制,控制上述主机接口41的通信。
加密/解密部44在数据写入工作中,对从主机接口控制器42发送的写入数据(明码文)进行加密。加密/解密部44在数据读出工作中,对从后端4B的读缓冲器RB发送的加密后的读出数据进行解密。另外,也可以不经由该加密/解密部44,而根据需要发送写入数据及读出数据。
CPU43F控制前端4F的上述各构成41、42、44,控制前端4F的全体的工作。
后端(存储器通信部)4B具备写缓冲器WB、读缓冲器RB、LUT45、DDRC46、DRAM47、DMAC48、ECC49、随机化发生器RZ、NANDC50及CPU43B。
写缓冲器(写数据传送部)WB暂时地存储从信息处理装置2发送来的写入数据。具体地,写缓冲器WB暂时地存储数据,直到该写入数据达到适合于非易失性存储器5的预定的数据大小为止。
读缓冲器(读数据传送部)RB暂时地存储从非易失性存储器5读出的读出数据。具体地,在读缓冲器RB中,读出数据以成为适合于信息处理装置2的顺序(信息处理装置2所指定的逻辑地址LBA的顺序)的方式进行排列变换。
LUT45是用于将逻辑地址LBA变换为物理地址PBA的表。
DDRC46控制DRAM47中的DDR(Double Data Rate,双数据速率)。
DRAM47例如是存储LUT45的易失性的存储器。
DMAC(Direct Memory Access Controller,直接存储器访问控制器)48经由内部总线IB,传送写入数据和/或读出数据等。在图13中图示了一个DMAC48,但是控制器4也可以具备2个以上的DMAC48。DMAC48根据需要,设定在控制器4内的各种位置。
ECC49对从写缓冲器WB发送的写入数据附加ECC(Error Correcting Code,纠错码)。ECC49在向读缓冲器RB发送时,使用所附加的ECC,根据需要纠正从非易失性存储器5读出的读出数据。
随机化发生器RZ(或Scrambler,扰频器)在数据写入工作时,使写入数据分散,以便写入数据不偏向非易失性存储器5的特定的页或字线方向等。这样,通过使写入数据分散,可以将写入次数平均化,可以延长非易失性存储器5的存储单元MC的单元寿命。因此,可以提高非易失性存储器5的可靠性。另外,随机化发生器RZ在数据读出工作时,执行写入时的随机化处理的逆处理,恢复原始的数据。
NANDC50为了满足预定的速度的要求,使用多个通道(这里是4个通道CH0~CH3)并行地访问非易失性存储器5。
CPU43B控制后端4B的上述各构成(45~50、RZ),控制后端4B的全体的工作。
另外,图13所示的控制器4的构成是例示,并非要限定于该构成。
图14是表示本实施方式所涉及的存储系统的一例的立体图。
存储系统100具备作为SSD的存储系统3B。
存储系统3B是例如比较小型的模块。另外,存储系统3B的大小及尺寸可以适宜改变为各种大小。
另外,存储系统3B例如可以在企业运用的数据中心或云计算系统中,安装到服务器这样的信息处理装置2来使用。因此,存储系统3B也可以是企业用SSD(eSSD)。
存储系统3B具备例如上方开口的多个连接器(例如卡槽)101。
多个存储系统3B分别安装到信息处理装置2的连接器101,以在近似垂直方向竖立的姿势相互排列而被支撑。根据这样的构成,可以将多个存储系统3B紧凑地汇集安装,能够实现存储系统3B的小型化。进而,本实施方式所涉及的存储系统3B的各形状是2.5型的SFF(Small Form Factor,小型因子)。通过这样的形状,存储系统3B可以实现企业用HDD(eHDD)和互换形状(兼容形状),能够实现与eHDD的容易的系统互换性。
另外,存储系统3B不限于企业用。例如,存储系统3B也可以作为笔记本型便携式计算机或平板型终端这样的消费用的电子设备的存储介质而应用。
如以上所说明,在具有本实施方式中说明的构成的信息处理系统1B及存储系统100中,可以在大容量的存储上获得与上述第1至第3实施方式同样的效果。
虽然说明了本发明的几个实施方式,但是这些实施方式是作为例子而呈现的,而并非要限定发明的范围。这些新实施方式能够以其他各种方式实施,在不脱离发明的主旨的范围,可以进行各种省略、置换、改变。这些实施方式和/或其变形包含于发明的范围和/或主旨,并且包含于权利要求的范围所记载的发明及其均等的范围。