本申请基于2011年8月29日提交的编号为2011-186542的日本专利申请并要求该申请的优先权益;该申请的全部内容通过引用的方式并入于此。本申请还基于2011年8月19日提交的编号为2011-179890的在先日本专利申请并要求该申请的优先权益;该申请的全部内容通过引用的方式并入于此。
具体实施方式
根据实施例,信息处理设备包括主机装置和非易失性存储装置。非易失性存储装置被配置为存储在主机装置上执行的正常操作系统,主机装置能够在正常操作系统的控制下将读取和写入命令均发送到非易失性存储装置。非易失性存储装置被配置为存储在主机装置上执行的紧急软件,主机装置能够在紧急软件的控制下仅将读取和写入命令中的读取命令发送到非易失性存储装置。非易失性存储装置被配置为存储当启动信息处理设备时在主机装置上执行的启动载入器,主机装置能够使用启动载入器启动正常操作系统。主机装置被配置为将从非易失性存储装置获取的统计信息与阈值进行比较。主机装置被配置为当统计信息已经超过阈值时,重写启动载入器以便在启动信息处理设备时启动紧急软件。
根据实施例,一种信息处理设备包括安装有性能评估工具的主机设备、包括可读和可写非易失性存储器的外部存储装置、以及连接主机设备和外部存储装置的接口单元。性能评估工具包括访问日志获取单元和性能日志获取单元。访问日志获取单元在OS或主机设备中安装的性能评估工具以外的软件正常访问外部存储装置时,从OS获取包括指令和响应的命令,并且顺序记录该命令作为访问日志。性能日志获取单元通过使用访问日志获取单元记录的访问日志来计算有关外部存储装置的性能信息,并记录该计算结果作为性能信息日志。
非易失性半导体存储器包括安装有擦除/写入/读取单元的存储器,例如,在以块为单位一次擦除数据之后存储数据的情况下执行写入的存储器,以及以页为单位执行读/写的存储器,如NAND型闪存。另一方面,由诸如个人计算机之类的主机设备进行的至第二存储装置(例如硬盘)的数据写入/读取的单元被称为逻辑扇区。逻辑扇区独立于半导体存储装置中的擦除/写入/读取单元而定义。例如,在某些情况下,非易失性半导体存储器中的擦除/写入/读取单元大于主机设备中的写入/读取单元。
而且,当个人计算机的非易失性半导体存储装置由闪存构成时,在某些情况下,如果块上发生编程错误、擦除错误、不可纠正的ECC错误等,则某些块和某些区域不应被用作存储区域。这些块被称为“坏块”(“缺陷块”),并且这些区域被称为“坏区”(“缺陷区”),或者在某些情况下可被称为“坏簇”。当这些缺陷块或缺陷区的数量超过上限时,新的缺陷块或缺陷区便无法注册(register)并且无法重新映射,因此不可能确保缓冲存储器(高速缓冲存储器)中存储的数据以及写入请求针对的数据被写入闪存。这样,当缺陷块的数量或缺陷区的数量超过预定值时,非易失性存储装置突然进入数据不可写入状态,不管闪存是否仍具有空闲空间(free space)(好块)。
作为上述问题的解决方案,存在一种管理在NAND型闪存中产生的坏块和坏簇数量以及在将数据从主机设备写入NAND型闪存时根据坏块数量和坏簇数量切换操作模式的方法。簇是一种管理单元,作为SSD中的逻辑地址。簇大小是逻辑扇区大小的两倍或更大的自然数倍,并且簇地址由阶位高于LBA预定位的位串形成。
在此方法中,SSD的操作模式例如被分为以下三种模式。
·WB模式(回写模式):用于将数据一次写入高速缓冲存储器并根据预定条件将数据清空(flush)到NAND型闪存的正常操作模式。
·WT模式(直写模式):用于每次将在一个写入请求中写入高速缓冲存储器的数据写入NAND型闪存的操作模式。通过每次将数据写入NAND型闪存,确保从主机写入的数据尽可能多。当坏簇表或坏块表上的剩余条目数变得等于或小于预定数量时,SSD转换到WT模式。
·RO模式(只读模式):在该模式中,禁止伴随写入NAND型闪存的所有处理。错误被返回到来自主机的所有写入请求以禁止写入,从而确保当SSD寿命接近到期(其寿命结束)时使得已从主机写入的数据尽可能多。当坏簇表或坏块表中的剩余条目数变得等于或小于预定数量,或者当空闲块变得不足时,SSD转换到RO模式。
在WB模式和WT模式中,SSD从主机接收读取请求和写入请求这两者并执行处理。与之相对,在RO模式中,SSD在从主机接收到读取请求时执行处理,但是响应于来自主机的写入请求,在不执行处理的情况下返回错误。
当SSD连接到安装有诸如Windows(注册商标)之类的操作系统(OS)的主机时,主机将写入请求发送到SSD,并且当写入请求被正常处理时,主机将SSD识别为可用外部存储装置。
另一方面,当已经转变到上述RO模式的SSD连接到安装有Windows(注册商标)的主机时,如果该主机将写入请求发送到SSD,则SSD向主机返回错误,从而在某些情况下,该主机不会将SSD识别为可用外部存储装置。因此,即使处于RO模式(其中数据可读)的SSD连接到主机,也有可能无法从SSD读取之前记录的数据。
如上所述,当SSD已达到其寿命结束或者接近寿命结束时,应该禁止写入SSD。但是,当计算机系统中安装正常操作系统(OS)时,有些数据可在启动时写入SSD,有些数据可在用户不注意的情况下,在后台处理中写入SSD。因此,当SSD已达到其寿命结束或者接近寿命结束时,在计算机系统中安装正常OS的条件下,SSD的可靠性进一步降低并且已写入的数据可能被破坏。
这样,在这些实施例中,当判定SSD已达到寿命结束时,重写启动载入器使得在重启系统时启动例如紧急OS(该紧急OS是不对SSD2执行写入操作的紧急软件),从而防止SSD的可靠性降低以及防止破坏已写入的数据。作为紧急OS,使用在启动时仅对SSD执行读取操作的软件,该软件不会在用户不注意时在后台对SSD执行写入操作。紧急软件包括紧急操作系统。
从信息处理设备发送到外部存储装置(例如,硬盘和固态驱动器(SSD))的主指令包括数据读取指令和数据写入指令。在数据读取指令中,包括有关外部存储装置中的逻辑地址(LBA:逻辑块寻址)和数据长度(传输长度、有效负载长度)的信息的指令从信息处理设备发送到外部存储装置,并且外部存储装置的控制器响应于该指令,从记录介质读取该指令指定的数据,并将该读取的数据返回到信息处理设备。在数据写入指令中,包括有关外部存储装置中的逻辑地址(LBA)和传输长度的信息的指令从信息处理设备发送到外部存储装置,并且当外部存储装置进入可写状态时,信息处理设备将数据发送到外部存储装置,然后外部存储装置的控制器将接收到的数据写入记录介质,作为该指令指定的具有LBA的数据。
测量外部存储装置读写性能的测量包括传输数据速率、处理命令速率、响应时间、处理时间、相对评分等。
传输数据速率是每单位时间传输到外部存储装置以及从外部存储装置传输的数据量。例如,对于数据读取,如果信息处理设备每秒从外部存储装置接收平均250MiB的数据,则外部存储装置的用于读取的传输速率为250MiB/s。
处理命令速率是每单位时间传输到外部存储装置以及从外部存储装置传输的指令数量。例如,对于数据写入,如果信息处理设备每秒完成至外部存储装置的平均100000个指令,则外部存储装置的读取传输速率为100000IOPS。
响应时间是从信息处理设备向外部存储装置发送指令到完成与指令相关的处理的时间。在读取指令的情况下,响应时间是直至信息处理设备响应于指令而接收到数据的时间,并且在写入指令情况下,响应时间是直至信息处理设备从外部存储装置接收到对指令的完成响应的时间。例如,在数据读取指令中,如果信息处理设备需要10毫秒才能完成响应于指令的数据接收,则外部存储装置的响应时间为10毫秒。
处理时间是在启动信息处理设备之后,在该信息处理设备中完成对外部存储装置的特定应用或特定处理所需的时间。例如,如果需要50秒在外部存储装置中复制10千兆字节的文件,则复制10千兆字节的文件的处理时间为50秒。
相对评分是通过对各种条件下的多个评分(例如,传输数据速率、处理命令速率、响应时间和处理时间)进行加权并对其执行加减乘除运算获取的评分。
相对评分的实例包括以下指标:
●PCMark05(商标)http://www.futuremark.com/
●PCMark VANTAGE(商标)
http://www.futuremark.com/
●SYSmark2007Preview(商标)
http://www.bapco.com/
当测量外部存储装置的性能时,条件会发生变化。其中一个主要条件是LBA模式,从该LBA中读取数据(或将数据写入其中)。这些模式大致被分为两类:即顺序模式和随机模式。
顺序模式是其中按顺序提供连续LBA的访问模式。具体而言,顺序模式是这样一种访问模式:其中信息处理设备将具有相对于特定LBA的特定传输长度的读取指令(写入指令)发送到外部存储装置,然后将具有相对于特定LBA(通过在上述LBA的基础上递增所述传输长度获取)的特定传输长度的读取指令(写入指令)发送到外部存储装置,之后,信息处理设备在递增LBA时重复读取命令(写入命令)。随机模式是这样一种访问模式:其中按顺序提供随机的非连续LBA。
当测量外部存储装置的性能时的其它条件包括LBA(从其读取数据或将数据写入其)的范围(访问范围)、当执行读取(写入)时每个命令的数据传输长度(有效负载长度)、当在多线程情况下执行读取(写入)时的线程数量、待读取(写入)的数据内容、测量执行时间等。
在如上存在大量指标和条件的外部存储装置的性能评估中,即使在相同的指标和测量条件下,性能也不总是相同。尤其是,当外部存储装置为SSD时,SSD的性能主要依赖于管理闪存(其是SSD的记录介质)中的物理地址与LBA之间对应关系的逻辑-物理转换表的状态。这是因为在SSD中,逻辑地址(LBA)与物理地址(NAND10中的存储位置)之间的关系并非提前静态地判定,并且采用在写入数据时动态地关联物理地址与LBA的逻辑-物理转换法。例如,当在相同LBA地址中覆写数据时,将执行下面描述的操作。在有效数据存储在逻辑地址A1中并且块B1被用作存储区域的情况下,当对逻辑地址A1的覆写数据(具有块大小)的命令从信息处理设备接收时,保留一个空闲块(块B2)并且在空闲块中写入从信息处理设备接收的数据。之后,逻辑地址A1与块B2关联。因此,块B2变为活动块,并且存储在块B1中的数据失效,这样块B1变为空闲块。通过这种方式,在SSD中,要用作具有同一逻辑地址A1的数据的实际记录区域的块对于每次写入而改变。当选择空闲块时,一般而言,执行损耗均衡处理以使擦除次数(擦除计数)和擦除时间间隔在所有块之间大致相同。
为了从测量结果中消除外部存储装置的内部状态的此类变化,例如,在SNIA中存在测量的预调节标准,固态存储性能测试规范http://www.snia.org/。但是,用户的SSD的内部状态根据用户对SSD的使用、与SSD连接的计算机的硬件环境、在计算机上执行操作的软件类型、操作时间等而变化,这样,根据上述标准执行预调节之后的SSD内部状态不会总是与当用户在各种应用实际由用户操作的状态下(在实际使用时)体验其性能时的SSD内部状态匹配。
用户可通过在实际使用期间不执行预调节的情况下亲自执行测量来获取他/她自己的SSD的性能。因此,用户可以获取与标准化的统一方法相比,相对接近用户体验的性能的性能指标。但是,此方法具有以下问题。
如上所述,SSD的内部状态随时变化,因此很容易受外部访问的影响。这样,测量本身影响SSD的内部状态,从而由于测量导致该内部状态偏离用户实际使用时的内部状态,因此测量结果偏离用户体验的速度。例如,当为了性能测量本身而从计算机对SSD进行顺序写入访问时,作为写入目标的LBA与闪存中的物理地址(数据实际写入的地址)之间的对应关系在SSD中的逻辑-物理转换表中反映出来,从而SSD的内部状态发生变化。这种改变的内部状态影响测量结果,从而SSD的最终计算性能偏离用户实际体验的性能。实际中,许多性能测量工具具有某些规范,其中数十亿字节或更大数据的顺序写入对SSD执行,作为各种测量之前的预调节,因此这些工具测量的性能实质上偏离用户体验的性能。
如上所述,在典型性能测量工具执行的性能测量中,大量数据被从计算机写入SSD,从而使得闪存(SSD的记录介质)的擦除计数增加。闪存的故障率随着擦除计数的增加而增加,因此SSD的可靠性由于性能测量而降低。因此,频繁监测SSD的性能对于用户不是优选的,因为它加速了SSD的可靠性降级。
如上所述,性能测量中的软件和条件会发生变化。读/写、顺序/随机、访问范围、有效负载长度以及线程数通过选择软件和条件来定义。在下文中,这些一般被称为工作负荷。在性能测量期间选择的工作负荷并非总是与在用户通过各种应用操作SSD时出现在SSD中的工作负荷(实际使用的工作负荷)匹配。对于用户很难通过分析SSD与计算机之间的接口协议找到适合用户的工作负荷。
此外,存在一种基于对于外部存储装置的读写量监测外部存储装置性能的软件(请参见监测外部存储装置速度的软件,http://www.forest.impress.co.jp/docs/review/20100222_350600.html和http://hansolav.net/gadgets/drivemeter/)。在该常规技术中,读取传输数据速率和写入传输数据速率定义如下。
(读取传输数据速率)=(测量时段期间读取的数据量)/(测量时间长度)
(写入传输数据速率)=(测量时段期间写入的数据量)/(测量时间长度)
但是,如果软件例如具有等待用户输入的中断或等待CPU响应的中断或在访问外部存储装置期间的其它硬件的中断,则在测量时段期间读取的数据量减少。传输数据速率下降,因为测量时间长度恒定。尤其是,当用户执行基本不访问外部存储装置的应用时,或者当信息处理设备处于空闲状态(其中不执行应用)时,外部存储装置的传输数据速率为零或非常接近零的值,而不管外部存储装置的实际性能。传输数据速率为接近零的值,并不表示用户体验的外部存储装置性能不好。这表示通过此常规技术获取的性能很容易受外部存储装置之外的外部因素影响,从而很难说可获取外部存储装置的性能和用户体验的外部存储装置性能。
基于这些原因,很难说当前性能测量工具执行的性能测量反映每个用户在实际使用中体验的性能。而且,为了外部存储装置的可靠性,不优选在性能测量中执行额外的写入。这些实施例提供在不影响外部存储装置可靠性的情况下,能够实时正确地获取用户在实际使用中体验的外部存储装置性能的性能测量工具。
下面将参考附图详细介绍根据实施例的信息处理设备、用于信息处理设备的控制方法、控制工具、主机设备、存储性能评估工具的非临时记录介质、以及用于外部存储装置的性能评估方法。本发明不限于这些实施例。(第一实施例)
图1示出第一实施例中的计算机系统的配置。计算机系统1包括作为非易失性存储装置的SSD2、主机设备3、以及连接SSD2和主机设备3的存储接口19。在该实施例中,SSD(固态驱动器)被用作非易失性存储装置,但是,例如还可以使用其它非易失性存储装置,如硬盘驱动器、混合式磁盘驱动器、SD卡、USB存储器和直接安装在主板上的NAND型闪存。而且,在该实施例中,ATA(高级技术附件)接口被用作接口19,但是,也可使用其它接口,如USB(通用串行总线)、SAS(串行附接SCSI)、Thunderbolt(注册商标)和PCI Express。CPU(控制电路)4是主机设备3中的中央处理单元,并且CPU4在主机设备3中执行各种操作和控制。CPU4通过南桥7执行SSD2和诸如DVD-ROM之类的光驱10的控制。CPU4通过北桥5执行主存储器6的控制。例如,DRAM可被用作主存储器6。
用户通过诸如键盘14和鼠标15之类的输入设备执行主机设备3的控制,并且来自键盘14和鼠标15的信号通过USB(通用串行总线)控制器13和南桥7在CPU4中被处理。CPU4通过北桥5和显示控制器8将图像数据、文本数据等发送到显示器(显示设备)9。用户可以通过显示器9查看来自主机设备3的图像数据、文本数据等。
CPU4是被设置为控制计算机系统1的操作的处理器并且执行被从SSD2载入到主存储器6的操作系统(OS)100。此外,当光驱10能够对载入的光盘执行读取处理和写入处理中的至少一者时,CPU4执行该处理。而且,CPU4执行存储在ROM11中的固件。固件可以是存储在BIOS(基本输入/输出系统)-ROM11中的系统BIOS,或者可以是存储在ROM11中的统一可扩展固件接口固件(UEFI固件)。ROM11中的固件是用于控制计算机系统1中的硬件的程序。在该实施例中,系统BIOS被用作存储在ROM11中的固件。在该实施例中,OS100可以包括ROM11中的固件。在该实例中,OS100可从SSD2以及从ROM11载入,或者OS100可从SSD20以及从ROM11载入。
此外,CPU4通过南桥7控制LAN(局域网)控制器12。
北桥5是连接到CPU4的本地总线的桥接装置。用于执行对主存储器6的访问控制的存储控制器置于北桥5内。而且,北桥5例如具有执行与显示控制器8通信的功能。
主存储器6中临时存储程序和数据并且充当CPU4的工作区域。主存储器6包括存储OS100的存储区域6A和存储控制工具200的存储区域6B。众所周知,OS是管理整个主机设备3的程序,例如通过管理主机设备3的输入/输出设备以及管理磁盘和存储器来执行控制,以允许软件使用主机设备3的硬件。存储在ROM11中的固件可被载入到区域6A,并且可作为OS的一部分。
显示控制器8是视频再现控制器,用于控制计算机系统1的显示器9。南桥7是连接到CPU4的本地总线的桥接装置。南桥7通过ATA接口19控制SSD2,SSD2是用于存储各种软件和数据的存储装置。
计算机系统1以逻辑扇区为单位访问SSD2。写入命令(写入请求)、读取命令(读取请求)、清空(flush)命令等通过ATA接口19而被输入到SSD2。例如,INCITS ACS-2中描述的WRITE DMA EXT(35h)和INCITS ACS-2中描述的WRITE FPDMA QUEUED(61h)可被用作写入命令。例如,INCITS ACS-2中描述的READ DMA EXT(25h)和INCITSACS-2中描述的READ FPDMA QUEUED(60h)可被用作读取命令。例如,INCITS ACS-2中描述的FLUSH CACHE EXT(EAh)可被用作清除命令。
南桥7具有执行对BIOS-ROM11、光驱10、LAN控制器12,以及USB控制器13的访问控制的功能。键盘14和鼠标15连接到USB控制器13。
例如,如图2所示,当主机设备3的电源关断时,控制工具200被存储在SSD2的NAND型闪存(NAND存储器)16的区域16B中,当主机3启动或者程序开始时,控制工具200从NAND存储器16的区域16B被载入到主存储器6的区域6B内。
例如,如图3所示,当多个非易失性存储装置连接到主机3时,SSD控制工具200可存储在不同于SSD2的非易失性存储装置20的区域20B中,当主机设备3启动或者程序开始时,控制工具200从区域20B载入到主存储器6的区域6B内。尤其是,当非易失性存储装置20被用作用于存储OS的系统驱动器,并且SSD2被用作用于存储用户数据(例如文档、静止图像数据和运动图像数据)的数据驱动器时,就清楚地将驱动器2和驱动器20的作用相互区分而言,例如在使用系统驱动器20作为用于主要存储OS和应用程序的驱动器,以及使用数据驱动器2作为用于存储用户数据的驱动器的情况下,期望将控制工具存储在作为系统驱动器的非易失性存储装置20中。
例如,如图4所示,当主机设备3的电源关断时,控制工具200可存储在主机设备3的ROM11的区域11B中,当主机3启动或者程序开始时,控制工具200从区域11B载入到主存储器6的区域6B内。
例如,如图5所示,当主机设备3的电源关断时,控制工具200可存储在主机设备3的ROM11的区域11B中,当主机3启动或者程序开始时,区域6B可映射在ROM11的区域中,并且可在不将控制工具200载入到主存储器6内的情况下,由CPU4直接从区域11B执行控制工具200。
就节省设置控制工具200所需的用户劳动而言,例如如图2、图3、图4和图5所示,期望计算机系统1在控制工具200存储在SSD2、非易失性存储装置20或ROM11中的状态下运送,到达商店,然后交付给用户。另一方面,就允许用户选择是否安装控制工具以及允许将最新控制工具提供给用户而言,期望控制工具200能够通过从WEB下载或从诸如DVD-ROM和USB存储器之类的外部存储介质安装而存储在SSD2、非易失性存储装置20或ROM11中。
图6是从WEB下载的实例。控制工具200存储在WEB服务器21上的存储介质22的区域22B中,并且控制工具200例如通过LAN控制器12,经由(例如,因特网、局域网和无线LAN)而被下载(或安装)到SSD2的NAND存储器16的区域16B中。在图3的实例中,控制工具200下载或安装到非易失性存储装置20的区域20B中。
图7是从诸如DVD-ROM和CD-ROM之类的光学介质安装的实例。控制工具200存储在诸如DVD-ROM和CD-ROM之类的光学介质23中,并且通过在光驱10中设置光学介质23,借助光驱10而安装在SSD2的NAND存储器16的区域16B(或区域20B)中。图8是从USB存储器安装的实例。控制工具200存储在USB存储器24的区域24B中,并且通过将USB存储器24连接到USB控制器13,借助USB控制器13而安装在SSD2的NAND存储器16的区域16B(或区域20B)中。很明显,可使用诸如SD卡之类的其它外部存储器替代USB存储器24。就易于供用户使用而言,当运送并销售SSD2时,期望将光学介质23或USB存储器24作为配件与SSD2打包在一起。另一方面,光学介质23或USB存储器24可作为软件产品单独销售,或可作为附赠品附加至杂志或图书。
在该实施例中,存在两种OS,即正常OS(第一操作系统)100A和紧急OS(第二操作系统)100B作为OS100。正常OS100A是当SSD2的可靠性未降低时使用的操作系统。如上所述,通过正常OS,某些数据可在启动时被写入SSD,某些数据可在用户不注意的情况下,在后台处理中被写入SSD。如图9所示,当主机设备3的电源关断时,正常OS100A存储在NAND存储器16的区域16D中。紧急OS100B是在SSD2的可靠性降低并且不对SSD2执行写入操作(不支持写入)时使用的操作系统。这表示紧急OS在启动时仅对SSD执行读取操作,并且不在后台对SSD执行写入(用户不希望执行此操作)。当可靠性降低时,紧急OS100B能够对SSD2以外的非易失性存储装置执行写入。而且,当部分数据(例如,有关紧急OS的系统信息)需要被写入SSD2时,紧急OS100B可例外地允许将数据写入SSD2,但是,数据量期望充分小于NAND存储器16的容量。更期望地,为了防止用户错误地发送写入命令以及防止数据被写入SSD2,紧急OS100B禁止执行对SSD2的正常写入命令,并且当数据需要被例外地写入SSD2时,紧急OS100B仅通过使用特殊命令(例如,INCITS ACS-2中描述的SCT Command Transport(SCT命令传输)和对于供应商唯一的命令)的命令来允许对SSD2的写入。
如图9所示,当主机设备3的电源关断时,紧急OS100B存储在NAND存储器16的区域16E中。由于紧急OS100B不在SSD2处于正常状态时使用,因此就防止区域16E中的紧急OS数据被破坏而言,在使用正常OS时期望将区域16E设定为不可从主机设备3写入。例如,当正常OS100A执行操作时,在SSD2中的管理信息中不期望将LBA分配给区域16E,下文将对此进行描述,在这种情况下,当需要执行紧急OS时,LBA被分配给区域16E。备选地,当正常OS100A执行操作时,期望将区域16E设定为受正常OS100A的写保护。
就在SSD2的可靠性降低的状态下尽可能减少对SSD2的访问而言,存储有紧急OS100B的区域16E中的数据量期望显著小于NAND存储器16的容量。紧急OS100B例如可以是通过定制诸如MS-DOS(商标)和Linux之类的OS以禁止对SSD2执行写入而获取的OS,通过将SSD2的备份功能添加到OS而获取的OS,或者是针对SSD2唯一地开发的软件。
当启动计算机系统1时,例如当计算机系统1的电源接通或者OS重启时,主机设备3读取在NAND存储器16的区域16C中写入的启动载入器300,并基于有关启动载入器300的信息判定正常OS100A和紧急OS100B中的哪一者被载入到主机设备3的区域6A内。为此,指示要读取的OS的LBA的OS指针信息OSPT存储在启动载入器300中。当读取启动载入器300时,CPU4从由OS指针信息OSPT指示的LBA作为起点执行读取,然后将读取数据写入主存储器6的区域6A中。启动载入器300被配置为载入处于初始状态的正常OS100A。在SSD2的可靠性降低之后,存储在主存储器6的区域6B中的控制工具200通过重写存储在NAND存储器16的区域16C中的启动载入器300来重建启动载入器300,以读取紧急OS100B。例如,可采用主启动记录(MBR),或者可采用GUID分割表(GPT)作为启动载入器300。
当多个非易失性存储装置连接到主机设备3时,OS可存储在不同于SSD2的非易失性存储装置20中。例如,如图12所示,正常OS和紧急OS均可存储在非易失性存储装置20中,正常OS可存储在SSD2中并且紧急OS可存储在非易失性存储装置20中,或者正常OS可存储在非易失性存储装置20中,并且紧急OS可存储在SSD2中。尤其是,当非易失性存储装置20被用作用于存储OS的系统驱动器,并且SSD2被用作用于存储诸如文档、静止图像数据和运动图像数据之类的用户数据的数据驱动器时,就清楚地将驱动器2和驱动器20的作用相互区分而言,例如在使用系统驱动器20作为用于主要存储OS和应用程序的驱动器,并且使用数据驱动器2作为用于存储用户数据的驱动器的情况下,期望将正常OS存储在作为系统驱动器的非易失性存储装置20中。更期望地,也将紧急OS存储在作为系统驱动器的非易失性存储装置20中。
如图10所示,控制工具200可存储在ROM11中。例如,BIOS-ROM11具有BIOS区域11D和存储有紧急固件(紧急BIOS)的紧急BIOS区域11F以及控制工具20011C。当主机3启动时,BIOS11D和控制工具200被启动,并且BIOS11D将NAND闪存16中存储的OSPT载入到主存储器6内。存储在NAND闪存中的OSPT优选地最初存储正常OS区域16D的起始LBA地址。控制工具200从SSD2获取统计信息并基于统计信息判定载入正常OS100A和紧急OS100B中的哪一者,然后将选择的OS LBA指针写入主存储器6中的OSPT301内。例如,可使用INCITSACS-2中描述的SMART READ DATA(B0h(D0h))、INCITS ACS-2中描述的IDENTIFY DEVICE(ECh)、ACS-2中描述的SCT CommandTransport、或对于供应商唯一的命令读出统计信息。BIOS11D将NAND闪存16中的启动载入器300载入到区域6A内,该启动载入器读取主存储器6中的OSPT301,并且该启动载入器基于主存储器6中的OSPT301将正常OS100A和紧急OS100B中的一者载入到主机设备3的区域6A内。
如图11所示,ROM11中的固件可具有作为正常OS的正常固件和作为紧急OS的紧急固件。例如,如图11所述,BIOS-ROM11具有存储有正常固件(正常BIOS)的正常BIOS区域11D,和存储有紧急固件(紧急BIOS)的紧急BIOS区域11E、以及存储初始程序载入程序(IPL程序)的初始程序载入区(IPL区域),该IPL程序将在BIOS-ROM11100A中存储的BIOS固件载入到主机设备3的区域6A内。控制工具200包括在IPL300中。当启动IPL300时,控制工具200从SSD2获取统计信息并基于统计信息判定将正常BIOS100A和紧急BIOS100B中的哪一者载入到区域6A内,然后将选择的BIOS地址指针写入BIOSPT301(例如,OS的OSPT301)内。例如,可通过使用INCITS ACS-2中描述的SMARTREAD DATA(B0h(D0h))、INCITS ACS-2中描述的IDENTIFY DEVICE(ECh)、ACS-2中描述的SCT Command Transport、或对于供应商唯一的命令读出统计信息。IPL300基于在BIOSPT301中存储的BIOS地址指针将正常BIOS100A和紧急BIOS100B中的一者载入到主机设备3的区域6A内。正常BIOS100A是在SSD2的可靠性未降低时使用的BIOS。通过正常BIOS,某些数据可在启动时被写入SSD,某些数据可在用户不注意的情况下,在后台处理中被写入SSD。紧急BIOS100B是当SSD2的可靠性降低时使用的BIOS并且不对SSD2执行写入(不支持写入)。这表示紧急BIOS在启动时仅对SSD执行读取操作,不在后台对SSD执行写入(用户不希望执行此操作)。当可靠性降低时,紧急BIOS100B能够对SSD2以外的非易失性存储装置执行写入。为了防止用户错误地发送写入命令以及防止数据被写入SSD2,紧急BIOS100B可禁止执行对SSD2的正常写入命令,并且当数据需要被例外地写入SSD2时,紧急BIOS100B可以允许仅通过使用特殊命令(例如,INCITS ACS-2中描述的SCTCommand Transport和对于供应商唯一的命令)的命令写入SSD2。ROM11中的固件可被统一为包括正常固件功能和紧急固件功能的单个固件,该固件可作为由控制工具200排他地选择的正常固件模式或紧急固件模式之一执行操作。
就节省设置紧急OS所需的用户劳动而言,例如如图9、图10、图11和图12所示,期望计算机系统1在紧急OS存储在SSD2、非易失性存储装置20或ROM11中的状态下运送,到达商店,然后交付给用户。另一方面,就允许用户选择是否安装紧急OS以及允许将最新紧急OS提供给用户而言,期望紧急OS能够通过从WEB下载或从诸如DVD-ROM和USB存储器之类的外部存储介质安装而存储在SSD2、非易失性存储装置20或ROM11中。
图13是从WEB下载的实例。紧急OS存储在WEB服务器21上的存储介质22的区域22E中,并且紧急OS借助LAN控制器12,通过网络(例如,因特网、局域网和无线LAN)下载(或安装)到SSD2的NAND存储器16的区域16E中。在图12的实例中,紧急OS下载或安装到非易失性存储装置20的区域20E中。
图14是从诸如DVD-ROM和CD-ROM之类的光学介质安装的实例。紧急OS存储在诸如DVD-ROM和CD-ROM之类的光学介质23的区域23E中,并且通过在光驱10中设置光学介质23,借助光驱10而安装在SSD2的NAND存储器16的区域16E(或区域20E)中。图15是从USB存储器安装的实例。紧急OS存储在USB存储器24的区域24E中,并且通过将USB存储器24连接到USB控制器13,借助USB控制器13而安装在SSD2的NAND存储器16的区域16E(或区域20E)中。很明显,可使用诸如SD卡之类的其它外部存储器替代USB存储器24。就易于供用户使用而言,当运送并销售SSD2时,期望将光学介质23或USB存储器24作为附件与SSD2打包在一起。另一方面,光学介质23或USB存储器24可作为软件产品单独销售,也可作为杂志或图书的附赠品。就简化安装而言,期望将紧急OS和控制工具存储在诸如光学介质23和USB存储器24之类的同一外部存储器中。
图16示出计算机系统1在软件级上的分层结构。被载入到主存储器6内的控制工具200和其它软件(控制工具200以外的软件)一般不直接与SSD2正常通信,而是通过被载入到主存储器6内的OS100与SSD2通信。当控制工具200和其它软件需要将诸如读取请求和写入请求之类的指令发送到SSD2时,控制工具200和其它软件以文件为单位发送访问请求到OS100。OS100参考包括在OS100中的文件管理表,指定SSD2中与产生访问请求所针对的文件对应的逻辑地址(LBA),并且将包括对应LBA的对于接口唯一的指令发送给SSD2。当从SSD2返回响应时,OS100指定对于接口唯一的响应在转换(translation)之后所要返回的软件,并且将响应返回至指定的软件。
接下来,将介绍计算机系统1的配置实例。计算机系统1例如可以实现为桌面计算机或笔记本型便携式计算机。图17是作为计算机系统1的桌面计算机的示意图。桌面计算机包括计算机主体31、显示器9、键盘14、鼠标15等。计算机主体31包括上面安装有硬件的主板30、SSD2、电源单元32等。SSD2通过SATA电缆与主板30进行物理连接,并且通过在主板30上安装的南桥7与在主板上安装的CPU4进行电连接。电源单元32生成在桌面计算机中使用的各种电力并且通过电力电缆向主板30、SSD2等供电。
图18是作为计算机系统1的便携式计算机的示意图。便携式计算机由计算机主体34、显示单元35等组成。例如由LCD(液晶显示器)构成的显示设备9置于显示单元35内。显示单元35附接于计算机主体34,从而可在打开位置与闭合位置之间旋转,在打开位置,主体34的上表面暴露,在闭合位置,主体34的上表面被盖住。主体34具有薄盒状外壳,电源开关36、键盘14、触摸板33等设置在该主体的上表面。而且,与桌面计算机类似,主体34也包括SSD2、主板、电源单元等。
应用于本发明的信息处理设备可以是计算机系统1以外的成像设备(例如照相机和摄像机)、平板计算机、智能电话、游戏机、汽车导航系统等。
接下来,将介绍作为SSD2的主要组件的NAND存储器16。图19示出配置NAND存储器16的NAND存储器芯片80的内部配置实例。NAND存储器16由一个或多个NAND存储器芯片80构成。NAND存储器芯片80包括存储基元(memory cell)阵列,在该阵列中,多个存储基元以矩阵方式排列。配置存储基元阵列所使用的存储晶体管分别由MOSFET(金属氧化物半导体场效应晶体管)构成,该MOSFET具有形成于半导体衬底上的层叠栅结构。层叠栅结构包括形成于半导体衬底上的电荷存储层(浮栅电极)(在半导体衬底与电荷存储层之间具有栅极介电膜)以及形成于浮栅电极上的控制栅电极(在浮栅电极与控制栅电极之间具有栅极间介电膜)。在存储基元晶体管中,阈值电压根据浮栅电极中存储的电子的数目而变化,并且数据根据该阈值电压的差异而存储。在该实施例中,将介绍每个存储基元采用4值存储系统(在该系统中,使用上页和下页存储2位/基元)的写入系统的实例,但是,即使每个存储基元采用2值存储系统的写入系统(使用单个页存储1位/基元)、8值存储系统的写入系统(使用上页、中间页和下页存储3位/基元)、或多值存储系统的写入系统(存储4位/基元或更多),本发明的性质也不改变。而且,存储基元晶体管不限于具有包括浮栅电极的结构,并且可以具有诸如MONOS(金属氧化氮氧化硅)型之类的结构,其中可通过在作为电荷存储层的氮化物界面中捕获电子来调整阈值电压。MONOS型存储基元晶体管可被配置为存储1位,或者可被配置为以类似于MOSFET型存储基元晶体管的方式存储多个值。而且,非易失性存储介质可以是半导体存储介质,其中存储基元是进行三维排列,如公开号为20100172189的美国专利申请和公开号为20100254191的美国专利申请中描述的那样。非易失性存储介质还可以是其它类型的非易失性存储介质,例如ReRAM、硬盘驱动器的盘片(platter)。
如图19所示,NAND存储器芯片80包括存储基元阵列82,该阵列通过以矩阵方式设置存储数据的存储基元而形成。存储基元阵列82包括多个位线、多个字线和一个公共源极线,并且可被电写入数据的存储基元以矩阵方式设置在存储基元阵列82中的位线与字线的交叉处上。用于控制位线的位线控制电路83和用于控制字线的字线控制电路85与存储基元阵列82相连。这表示位线控制电路83通过位线读取存储基元阵列82中的存储基元中的数据,并通过位线将写入控制电压施加于存储基元阵列82中的存储基元以将数据写入存储基元。
列解码器84、数据输入/输出缓冲器89和数据输入/输出端子88连接到位线控制电路83。从存储基元阵列82读取的存储基元中的数据通过位线控制电路83和数据输入/输出缓冲器89,从数据输入/输出端子88输出到外部。而且,从外部输入到数据输入/输出端子88的写数据通过数据输入/输出缓冲器89,被列解码器84输入到位线控制电路83,并且被写入指定的存储基元。
而且,存储基元阵列82、位线控制电路83、列解码器84、数据输入/输出缓冲器89和字线控制电路85连接到控制电路86。控制电路86产生控制信号和用于根据输入到控制信号输入端子87的控制信号控制存储基元阵列82、位线控制电路83、列解码器84、数据输入/输出缓冲器89和字线控制电路85的控制电压。在NAND存储器芯片80中,存储基元阵列82以外的电路部分被称为NAND控制器(NANDC)81。
图20示出图21所示的存储基元阵列82的配置。存储基元阵列82是NAND基元型存储基元阵列并包括多个NAND基元。一个NAND单元包括由串联连接的存储基元构成的存储串MS以及连接到其两端的选择栅S1和S2。选择栅S1连接到位线BL,选择栅S2连接到源极线SRC。设置在同一行上的存储基元MC的控制栅共同连接到字线WL0至WLm-1中的任一字线。而且,第一选择栅S1共同连接到选择线SGD,第二选择栅S2共同连接到选择线SGS。
存储基元阵列82包括一个或多个平面并且一个平面包括多个块。每个块由多个NAND基元构成,并且数据以块为单位擦除。
而且,连接到一个字线的多个存储基元形成一个物理扇区。针对每个物理扇区读写数据(该物理扇区与下面将介绍的LBA的逻辑扇区无关)。在2位/基元写入系统(4值)实例中,例如,2个页的数据存储在一个物理扇区中。另一方面,在1位/基元写入系统(2值)实例中,例如,1个页的数据存储在一个物理扇区中,并且,在3位/基元写入系统(8值)实例中,例如,3个页的数据存储在一个物理扇区中。
在读取操作、程序验证操作、以及程序操作中,根据从下面将描述的SSDC41接收的物理地址选择一字线并且选择一物理扇区。该物理扇区中页的切换通过物理地址执行。在该实施例中,NAND存储器16采用2位/基元写入系统,以便SSDC41确定将2个页(即,上页(上页)和下页(下页))作为物理页分配给物理扇区,并且将物理地址分配给所有这些页。
存储2位/基元的4值NAND存储器被配置为使得一个存储基元中的阈值电压可实现四种类型分布。图21示出存储在4值NAND基元型闪存中的存储基元中的2位4值数据(数据“11”、“01”、“10”和“00”)与存储基元的阈值电压分布之间的关系。在图21中,VA1是在读取物理扇区中2个数据的情况下(其中,仅下页处于写入状态,上页处于未写入状态)施加到选择字线的电压,并且VA1v指示用于在对A1执行写入的情况下检查该写入是否已完成而施加的验证电压。
此外,VA2、VB2、和VC2是在读取物理扇区中4个数据的情况下(其中,下页和上页均处于写入状态)施加到选择字线的电压,并且VA2v、VB2v、和VC2v指示用于在对每个阈值电压分布执行写入的情况下检查该写入是否已完成而施加的验证电压。而且,Vread1和Vread2指示施加到NAND基元当中未选择存储基元的读取电压并将未选择存储基元呈现为导电状态,而不考虑在读取数据的情况下的存储数据。此外,Vev1和Vev2是施加到存储基元以在擦除存储基元中数据的情况下检查擦除是否已完成的擦除验证电压且具有负值。擦除验证电压的大小在考虑相邻存储基元的干扰效应的情况下确定。上述电压之间的大小关系如下所示:
Vev1<VA1<VA1V<Vread1
Vev2<VA2<VA2V<VB2<VB2V<VC2<VC2V<Vread2
擦除验证电压Vev1、Vev2和Vev3如上所述具有负值,但是,在实际擦除验证操作中施加到存储基元MC的控制栅的电压不是负值,而是零或正值。这表示,在实际擦除验证操作中,正电压被施加到存储基元MC的背栅,并且具有零或小于背栅电压的正值的电压被施加到存储基元MC的控制栅。换言之,擦除验证电压VeV1、VeV2和VeV3是其值等于负值的电压。
在块擦除之后存储基元的阈值电压分布ER中,其上限也是负值并且数据“11”被分配。具有数据“11”、“01”、“10”和“00”的存储基元(其中下页和上页均处于写入状态)分别具有正阈值电压分布ER2、A2、B2和C2(A2、B2和C2的下限也是正值),数据“01”的阈值电压分布A2具有最低电压值,数据“00”的阈值电压分布C2具有最高电压值,各个阈值电压分布的电压值具有关系A2<B2<C2。数据“10”的存储基元(其中下页处于写入状态,上页处于未写入状态)具有正阈值电压分布A1(A1的下限也是正值)。图21所示的阈值电压分布只是一个实例,本发明并不限于此。例如,在图21中,介绍了所有阈值电压分布A2、B2和C2为正阈值电压分布,但是,其中阈值电压分布A2为负电压分布并且阈值电压分布B2和C2为正电压分布的情况也包括在本发明的范围内。而且,即使阈值电压分布ER1和ER2具有正值,本发明也不限于此。此外,在该实施例中,对应关系使得ER2、A2、B2和C2上的数据分别对应于“11”、“01”、“10”和“00”,但是,例如可采用其它对应关系,例如“11”、“01”、“00”和“10”。
一个存储基元中的2位数据由下页数据和上页数据构成,并且下页数据和上页数据通过不同的写入操作(即,两个写入操作)而写入存储基元。当数据被表示为“*”时,*表示上页数据,表示下页数据。
首先,将参考图21中的第一至第二阶段介绍对下页数据的写入。所有存储基元具有处于擦除状态的阈值电压分布ER并存储数据“11”。如图21所示,当执行对下页数据的写入时,根据下页数据的值(“1”或“0”),存储基元的阈值电压分布ER被分为两个阈值电压分布(ER1和A1)。当下页数据的值为“1”时,保持处于擦除状态的阈值电压分布ER,以使ER1等于ER,但是,ER1可大于ER。
另一方面,当下页数据的值为“0”时,高电场被施加到存储基元的隧道氧化膜以将电子注入浮栅电极,从而使存储基元的阈值电压Vth增加预定量。具体而言,设定验证电位VA1V并重复写入操作,直到电压变为等于或大于该验证电压VA1V的阈值电压。因此,存储基元变为写入状态(数据“10”)。如果即使写入操作重复预定次数,电压也未达到阈值电压(或者,如果未达到阈值电压的存储基元的数目等于或大于预定值),则对物理页的写入变为“写错误”(“程序错误”)。
接下来,将参考图21中的第二至第三阶段介绍对上页数据的写入。对上页数据的写入基于从芯片外部输入的写入数据(上页数据)和已在存储基元中写入的下页数据来执行。
换言之,如图21中的第二至第三阶段所示,当上页数据的值为“1”时,高电场受到控制以便不被施加到存储基元的隧道氧化膜,从而防止存储基元的阈值电压Vth增加。因此,数据“11”的存储基元(处于擦除状态的阈值电压分布ER1)保持数据“11”,不发生任何变化(ER2),并且数据“10”的存储基元(阈值电压分布A1)保持数据“10”,不发生任何变化(B2)。但是,就确保分布之间的电压容限,期望使用大于上述验证电压VA1V的正验证电压VB2V调整阈值电压分布的下限,从而形成具有窄阈值电压分布宽度的阈值电压分布B2。如果即使下限调整重复预定次数,电压也未达到阈值电压(或者,如果未达到阈值电压的存储基元的数目等于或大于预定值),则对物理页的写入变为“写错误”(“程序错误”)。
另一方面,当上页数据的值为“0”时,高电场被施加到存储基元的隧道氧化膜以将电子注入浮栅电极,从而使存储基元的阈值电压Vth增加预定量。具体而言,设定验证电位VA2V和VC2V并重复写入操作,直到电压变为等于或大于该验证电压VA1V的阈值电压。因此,数据“11”的存储基元(处于擦除状态的阈值电压分布ER1)变为阈值电压分布A2的数据“01”,并且数据“10”(A1)的存储基元变为阈值电压分布C2的数据“00”。此时,使用验证电压VA2V和VC2V调整阈值电压分布A2和C2的下限。如果即使写入操作重复预定次数,电压也未达到阈值电压(或者,如果未达到阈值电压的存储基元的数目等于或大于预定值),则对物理页的写入变为“写错误”(“程序错误”)。
另一方面,在擦除操作中,设定擦除验证电位Vev并重复擦除操作,直到电压变为等于或小于该擦除验证电压Vev的阈值电压。因此,存储基元变为写入状态(数据“00”)。如果即使擦除操作重复预定次数,电压也未达到阈值电压(或者,如果未达到阈值电压的存储基元的数目等于或大于预定值),则对物理页的擦除变为“擦除错误”。
上面是典型的4值存储系统中的数据写入系统实例。在存储3或更多位的多位存储系统中,仅将阈值电压分布分为八种或更多模式的操作根据上页数据进一步添加到上述操作中,且基本操作相同。
接下来,将介绍SSD2的配置实例。如图22所示,SSD2包括NAND型闪存(下文简称为NAND存储器)16(该NAND存储器为非易失性半导体存储器)、接口控制器(IFC)42(其通过ATA接口19执行与主机设备3之间的信号接收与发送)、RAM(随机存取存储器)40(该RAM为半导体存储器并包括高速缓冲存储器(CM)46(高速缓冲存储器46充当接口控制器42与NAND存储器16之间的中间缓冲器)、SSD控制器(SSDC)41(其执行NAND存储器16和RAM40的管理和控制以及接口控制器42的控制)、以及连接这些组件的总线43。
可采用DRAM(动态随机存取存储器)、SRAM(静态随机存取存储器)、FeRAM(铁电随机存取存储器)、MRAM(磁阻随机存取存储器)、PRAM(相变随机存取存储器)、ReRAM(电阻式随机存取存储器)等作为RAM40。RAM40可包括在SSDC41中。
NAND存储器16由多个NAND存储器芯片80构成,并存储主机设备3指定的用户数据,存储管理用户数据的管理表,以及为了备份而存储RAM40管理的管理信息。NAND存储器16包括存储基元阵列82,其中多个存储基元以矩阵方式设置,每个存储基元可使用上页和下页执行多级记录。NAND存储器16由多个存储器芯片构成,每个存储器芯片通过将多个块设置为数据擦除单位来形成。在NAND存储器16中,数据写入和数据擦除针对每个页执行。块由多个页构成。
RAM40包括高速缓冲存储器(CM)46,高速缓冲存储器46充当主机设备3与NAND存储器16之间的数据传输高速缓冲器。此外,RAM40充当管理信息存储器和工作区域存储器。在RAM40的区域40A中管理的管理表通过载入在NAND存储器16的区域40M中存储的各种管理表来获取,例如,在启动SSD2时载入,并且定期地或在关断电源时保存在NAND存储器16的区域40M中。
SSDC41的功能通过处理器实现,该处理器执行存储在NAND存储器16、各种硬件电路等中的系统程序(固件),并且SSDC41针对来自主机设备3的各种命令(例如,写入请求、缓存清空请求和读取请求)执行例如主机设备3与NAND存储器16之间的数据传输控制,执行RAM40和NAND存储器16中存储的各种管理表的更新和管理,执行要写入NAND存储器16的数据的ECC编码,以及执行从NAND存储器16读取的数据的ECC编码,。
当主机设备3将读取请求或写入请求发送到SSD2时,主机设备3通过ATA接口19输入LBA(逻辑块寻址)作为逻辑地址。LBA是逻辑地址,其中从0开始的序列号附加于逻辑扇区(大小:例如,512B)。而且,当向SSD2发出读取请求或写入请求时,除了LBA以外,主机设备3还输入要作为读取请求或写入请求目标的逻辑扇区大小。
IFC42具有接收来自主机设备3的读取请求、写入请求、其它请求和数据,以及将接收的请求和数据发送到SSDC41,在SSDC41的控制下将数据发送到RAM40的功能。
图23示出SSD2中使用的管理信息的配置。如上所述,管理信息以非易失性的方式存储在NAND存储器16的区域40M中。存储在区域40M中的管理信息在启动SSD2时被载入到RAM40的区域40A内并被使用。RAM40中的管理信息44定期地或在关断电源时保存在区域40M中。当RAM40为诸如MRAM、FeRAM和ReRAM之类的非易失性RAM时,该管理信息44只能存储在RAM40中,并且在这种情况下,该管理信息44不存储在NAND存储器16中。为了减少对NAND存储器16的写入量,要存储在管理信息42中的数据期望为通过压缩RAM40的区域40A中存储的数据而获取的数据。而且,为了减少在NAND存储器16中写入数据的频率,期望将存储在RAM40的区域40A中的有关管理信息44的更新信息(差异信息)附加到管理信息45上。
如图23所示,管理信息包括空闲块表(FBT)60、坏块表(BBT)61、活动块表(ABT)62、磁道表(以磁道为单位的逻辑-物理转换表)63、簇表(以簇为单位的逻辑-物理转换表)64、和统计信息65。
如图24所示,LBA是逻辑地址,其中从0开始的序列号附加于逻辑扇区(大小:例如,512B)。在该实施例中,定义由阶位等于或高于LBA的低阶第(s+1)位的位串形成的簇地址以及由阶位等于或高于LBA的低阶第(s+t+1)位的位串形成的磁道地址,作为SSD2的逻辑地址(LBA)的管理单元。换言之,逻辑扇区是主机设备3中的最小访问单元。簇是用于管理SSD中“小数据”的管理单元,并且簇大小被设定为等于逻辑扇区大小的自然数倍的大小。磁道是用于管理SSD中“大数据”的管理单元,并且磁道大小被设定为等于簇大小的两倍或更大自然数倍的大小。因此,当LBA除以磁道大小时,磁道地址为商,并且当LBA除以磁道大小时,磁道内地址为余数;当LBA除以簇大小时,簇地址为商,并且当LBA除以簇大小时,簇内地址为余数。在下面的介绍中,为方便起见,磁道大小等于可在一个物理块中记录的数据大小(当SSDC41中执行的ECC处理的冗余位包括在物理块中时,从大小中排除该冗余位)并且簇大小等于可在一个物理页中记录的数据大小(当SSDC41中执行的ECC处理的冗余位包括在物理页中时,从大小中排除该冗余位)。
空闲块表(FBT)60管理NAND存储器中的物理块(空闲块:FB)的ID(物理块地址),该物理块可在对NAND存储器16执行写入时被新分配以供写入,并不指定其用途。而且,空闲块表60管理每个物理块ID的擦除次数(擦除计数),当擦除块时,SSDC41递增对物理块的擦除计数。
坏块表(BBT)61管理坏块(BB)的ID,这些坏块是由于存在大量错误等而无法用作存储区域的物理块(物理块)。BBT61可以类似于FBT60的方式管理每个物理块ID的擦除计数。
活动块表(ABT)62管理活动块(AB),这些活动块是被指定用途的物理块。而且,活动块表62管理每个物理块ID的擦除计数,当擦除块时,SSDC41递增物理块的擦除计数。
磁道表63管理磁道地址与物理块ID(其中存储对应于该磁道地址的磁道数据)之间的对应关系。
簇表64管理簇地址、物理块ID(其中存储对应于该簇地址的簇数据)与物理块内页地址(其中存储对应于该簇地址的簇数据)之间的对应关系。
统计信息65存储与SSD2可靠性相关的各种参数(X01至X25)。
统计信息65包括坏块总数(统计信息X01)、总擦除计数(统计信息X02)、平均擦除计数(统计信息X03)、NAND存储器中写入错误出现的累计数(统计信息X04)、NAND存储器中擦除错误出现的累计数(统计信息X05)、读取逻辑扇区总数(统计信息X06)、写入逻辑扇区总数(统计信息X07)、不可校正ECC错误计数(统计信息X08)、n位至m位ECC校正单元总数(统计信息X09)、SATA通信中的R错误出现次数(统计信息X10)、SATA通信中的错误出现次数(统计信息X11)、RAM40中的错误出现次数(统计信息X12)、SSD2的总操作时间(统计信息X13)、温度超过推荐操作温度最高值期间的累计时间(统计信息X14)、温度变得低于推荐操作温度最低值期间的累计时间(统计信息X15)、对命令的最大响应时间(统计信息X16)、对命令的平均响应时间(统计信息X17)、NAND存储器的最大响应时间(统计信息X18)、NAND的平均响应时间(统计信息X19)、当前温度(统计信息X20)、最高温度(统计信息X21)、最低温度(统计信息X22)、统计信息增长率(统计信息X23)、NAND垃圾收集(GC)失败标志(统计信息X24)、寿命结束标志(统计信息X25)等。
介绍坏块总数(统计信息X01)。每当SSD2中NAND存储器16的一个物理块添加到坏块中时(每当SSD2中NAND存储器16的一个物理块被标记为坏块时),统计信息X01递增1。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X01重置为0。更期望,将在检测过程中发生错误或在阈值分布之间具有小容限的块提前添加到后面的块中。统计信息X01可直接根据BBT61计算,无需将其存储在统计信息65中。统计信息X01越大,可靠性就降低得越大。
介绍总擦除计数(统计信息X02)。统计信息X02指示SSD2中NAND存储器16的所有块上的累计擦除计数。每当擦除SSD2中NAND存储器16的一个物理块时,统计信息X02递增1。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X02重置为0。统计信息X02可直接根据FBT60、BBT61和ABT62计算,无需将其存储在统计信息65中。统计信息X02越大,可靠性就降低得越大。
介绍平均擦除计数(统计信息X03)。统计信息X03指示SSD2中NAND存储器16的所有块上的每块平均擦除计数。可从目标中排除部分块(例如,存储管理信息的块)以对统计信息X3进行计数。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X03重置为0。统计信息X03可直接根据FBT60、BBT61和ABT62计算,无需将其存储在统计信息65中。统计信息X03越大,可靠性就降低得越大。
介绍NAND存储器中的累计写入错误出现次数(总写入错误计数、总程序错误计数)(统计信息X04)。每当SSD2中的NAND存储器16内在一个写入单元中出现写入错误时,统计信息X04递增1(或者以块为单位递增)。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X04重置为0。统计信息X04越大,可靠性就降低得越大。
介绍NAND存储器中的累计擦除错误出现次数(总擦除次数)(统计信息X05)。期望在制造SSD2时(在检测过程之前)将统计信息X05重置为0。每当SSD2中NAND存储器16的一个块内出现擦除错误时,统计信息X05递增1。可将多个块整体定义为一个擦除单元,并且每当在一个擦除单元中出现擦除错误时,统计信息X05递增1。统计信息X05越大,可靠性就降低得越大。
介绍读取逻辑扇区总数(统计信息X06)。统计信息X06是IFC42发送到主机设备3作为读取数据的数据的逻辑扇区总数。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X06重置为0。统计信息X06越大,可靠性就降低得越大。
介绍写入逻辑扇区总数(统计信息X07)。统计信息X07是IFC42从主机设备3接收作为写入数据的数据的逻辑扇区总数。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X07重置为0。统计信息X07越大,可靠性就降低得越大。
介绍ECC无法校正错误的总次数(不可校正ECC错误计数)(统计信息X08)。当错误位无法通过ECC校正来校正时,统计信息X08每个读取单元递增1。可添加无法校正的错误位的数目估计值或者可添加其中错误无法被校正的块的数目。期望在制造SSD2时(在检测过程之前)将统计信息X08重置为0。统计信息X08越大,可靠性就降低得越大。
介绍n位至m位ECC校正单元总数(n-m ECC错误校正计数)(统计信息X10)。存在0≤n≤m≤最大校正位数的关系,其中n和m为自然数。当对ECC校正单元(例如,物理页)执行ECC校正时,如果所有错误位被成功校正并且校正的错误位数大于等于n且小于等于m,则“n位至m位ECC校正单元总数”每个ECC校正单元递增1。当可通过ECC校正来每个校正单元校正最多64位时,例如,准备八个参数,即,“1位至8位ECC校正单元总数”、“9位至16位ECC校正单元总数”、“17位至24位ECC校正单元总数”、“25位至32位ECC校正单元总数”、“33位至40位ECC校正单元总数”、“41位至48位ECC校正单元总数”、“49位至56位ECC校正单元总数”、以及“57位至64位ECC校正单元总数”。当ECC校正正常执行时,八个参数中的任一者针对每次对一个ECC校正单元的每个ECC校正递增1。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X09重置为0。统计信息X09越大,可靠性就降低得越大。
介绍SATA通信中的R错误出现次数(统计信息X10)。每当SATA标准中出现一个R错误(接收错误,R_ERR)时,统计信息X10递增1。当在主机与SSD之间传输的帧中出现任何错误(例如CRC错误)时,该错误作为R错误进行计数。可采用SATA标准的Phy Event计数器中的任何计数器作为统计信息X10。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X10重置为0。统计信息X10越大,可靠性就降低得越大。
介绍SATA通信中的错误出现次数(统计信息X11)。每当SATA通信中出现不同的异常(R错误以外的异常)时,统计信息X11递增1。例如,当在SSD2与主机设备3之间实际协商的通信速度为较缓慢的速度通信标准时(例如,3Gbps),不管SATA接口19、IFC42和SSDC41是否被设计为满足SATA6Gbps,在SATA通信中都会将此视为错误,并且统计信息X11递增1。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X11重置为0。该值越大,可靠性就降低得越大。
介绍RAM40中的错误出现次数(统计信息X12)。例如,当ECC电路或错误检测电路安装在RAM40或SSDC41上时,如果SSDC41检测到指示无法通过ECC校正错误位的信号,或者指示从RAM40检测到错误位的信号,则统计信息X12递增1。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X12重置为0。该值越大,可靠性就降低得越大。
介绍SSD2的总操作时间(通电小时)(统计信息X13)。SSDC41在SSD2通电的同时对时钟进行计数并从内置时钟电路接收信息,从而递增经过时间。备选地,SSDC41可定期地从主机设备3接收主机设备3中的时间信息,并且可以递增时间信息差。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X13重置为0。该值越大,可靠性就降低得越大。
介绍温度超过推荐操作温度最高值期间的累计时间(统计信息X14)。例如,当在SSD2中设置温度计时(例如,设置在SSD2的衬底上、SSDC41中、以及NAND存储器16中),SSDC41定期地从温度计接收温度信息。当所接收的温度超过推荐操作温度(例如,100℃)时,SSDC41基于从内置时钟或主机设备3获取的时钟或时间信息递增SSD2在估计的操作温度或更高温度上执行操作期间的时间量。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X14重置为0。该值越大,可靠性就降低得越大。
介绍温度变得低于推荐操作温度最低值期间的累计时间(统计信息X15)。当在SSD2中设置温度计时,SSDC41定期地从温度计接收温度信息。当所接收的温度低于推荐操作温度(例如,-40℃)时,SSDC41基于从内置时钟或主机设备3获取的时钟或时间信息递增SSD2在估计的操作温度或更高温度上执行操作期间的时间量。期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X15重置为0。该值越大,可靠性就降低得越大。
介绍对命令的最大响应时间(命令的最大延迟)(统计信息X16)。统计信息X16是在从主机设备3接收命令之后,直到对主机设备3做出响应(或者直到命令执行完成)时所需时间(或时钟数)的最大值。当出现超过X16的响应时间时,该响应时间覆盖X16。统计信息X16可针对每个命令存储。期望在制造SSD2时(在检测过程之前)、在检测SSD2时或者在SSD2运送时将X16重置为0。
介绍对命令的平均响应时间(命令的平均延迟)(统计信息X17)。统计信息X17是在从主机设备3接收命令之后,直到对主机设备3做出响应(或者直到命令执行完成)时所需时间(或时钟数)的平均值。例如,统计信息X17通过将特定数量的响应时间列表存储在RAM40中并计算响应时间列表的平均值来获取。统计信息X17可针对每个命令存储。期望在制造SSD2时(在检测过程之前)、在检测SSD2时或者在SSD2运送时将X17重置为0。
介绍NAND存储器的最大响应时间(NAND存储器的最大延迟)(统计信息X18)。统计信息X18是从SSDC41对NAND存储器16做出指示时到SSDC41接收到响应时(接收到命令执行完成通知)所需时间(或时钟数)的最大值。当出现超过X18的响应时间时,该响应时间覆盖X18。统计信息X18可针对每个命令存储。期望在制造SSD2时(在检测过程之前)、在检测SSD2时或者在SSD2运送时将X18重置为0。
介绍NAND的平均响应时间(NAND存储器的平均延迟)(统计信息X19)。统计信息X19是从SSDC41对NAND存储器16做出指示时到SSDC41接收到响应时(接收到命令执行完成通知)所需时间(或时钟数)的平均值。例如,统计信息X19通过将特定数量的响应时间列表存储在RAM40中并计算响应时间列表的平均值来获取。统计信息X19可针对每个命令存储。期望在制造SSD2时(在检测过程之前)、在检测SSD2时或者在SSD2运送时将X19重置为0。
介绍当前温度(统计信息X20)。当在SSD2中设置温度计时,SSDC41定期地从温度计接收温度信息。SSDC41将从温度计最后接收到的温度存储在统计信息X20中作为当前温度。如果该值非常大(例如,85℃或更高),则判定该值对SSD2的可靠性具有负面影响,如果该值非常小(例如,-10℃或更低),则判定该值对SSD2的可靠性具有负面影响。
介绍最高温度(统计信息X21)。SSDC41将当前温度X20的最大值存储在统计信息X21中作为最高温度。如果该值非常大(例如,85℃或更高),则该值对SSD2的可靠性具有负面影响。当SSDC41从温度计接收到高于X21的当前温度时,SSDC41将X21重写为当前温度。期望在制造SSD2时(在检测过程之前)、在检测SSD2时或者在SSD2运送时将X21重置为与SSD2的操作温度相比足够小的温度(例如,-40℃)。
介绍最低温度(统计信息X22)。SSDC41将当前温度X20的最小值存储在统计信息X22中作为最低温度。如果该值非常小(例如,-40℃或更低),则该值对SSD2的可靠性具有负面影响。当SSDC41从温度计接收低于X22的当前温度时,SSDC41将X22重写为当前温度。期望在制造SSD2时(在检测过程之前)、在检测SSD2时或者在SSD2运送时将X22重置为与SSD2的操作温度相比足够大的温度(例如,120℃)。
介绍统计信息增长率(统计信息X23)。单独存储有关统计信息X01至X19的未更新信息(例如,固定时间之前的值、最后一次接通SSD2时的值、最后一次关断SSD2时的值)。统计信息X23例如通过以下任一方程式定义。
统计信息增长率=(最新统计信息)-(旧信息)
统计信息增长率=((最新统计信息)-(旧信息))/(获取旧信息之后经过的时间)
统计信息增长率=((最新统计信息)-(旧信息))/(获取旧信息之后的NAND访问次数)
期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X23重置为0。该值越大,可靠性就降低得越大。
介绍NAND垃圾收集(GC)失败标志(统计信息X24)。当统计信息X24为1时,即使通过NAND整理(NAND垃圾收集(NAND GC))也无法获取足以用于操作的空闲块。
期望在制造SSD2时(在检测过程之前)或者在检测SSD2时将统计信息X24重置为0。该值越大,可靠性就降低得越大。
介绍寿命结束标志(EOL标志,EOLF)(统计信息X25)。EOL标志根据上述参数计算。例如,EOL标志可根据X01计算,如下所示:
EOLF=0(如果X01的原始值小于或等于X01的RMAX)
EOLF=1(如果X01的原始值大于X01的RMAX)
可存储所有上述参数,或者存储其中的部分参数或仅存储其中的任一个参数,作为统计信息65。
期望将最新信息存储在RAM40的区域40A中,并且定期地备份到NAND存储器16的区域40M中,作为统计信息65。另一方面,统计信息65可仅存储在RAM40和NAND存储器16中的任一者中,或者该统计信息可发送到主机设备3或存储在主机设备3中或与主机设备3相连的存储装置中。
(LBA正向查找转换)
接下来,将参考图25介绍用于从SSD2中的LBA指定物理地址的程序(LBA正向查找转换)。当指定LBA时,SSDC41根据LBA计算磁道地址、簇地址和簇内地址。
SSDC41首先搜索磁道表63并指定对应于所计算的磁道地址的物理ID(物理块地址)(步骤S100和S101)。SSDC41判定所指定的物理块ID是否有效(步骤S102)。当物理块ID不为空(null)时,即,该ID是有效值(步骤S102:是),SSDC41搜索该物理块ID是否存储在ABT62中(步骤S103)。当物理块ID存储在ABT62中时(步骤S104:是),从该物理块ID指定的物理块头位置移位磁道内地址的位置是NAND存储器16中对应于指定的LBA的物理位置(步骤105)。在这种情况下,不需要簇表64来指定NAND存储器16中对应于LBA的物理位置并且此LBA称为“以磁道为单位管理的LBA”。在步骤S104,当物理块ID不存储在ABT62中时(步骤S104:否),指定的LBA不具有物理地址并且此状态被称为“未写入状态”(步骤S106)。
在步骤S102,当对应于指定的磁道地址的物理地址为空,即,无效值时(步骤S102:否),SSDC41根据LBA计算簇地址并搜索簇表64以获取物理块ID和对应的物理块内页地址(对应于根据簇表64计算的簇地址)(步骤S107)。从物理块ID和物理块内页地址指定的物理页的头位置移位簇内地址的位置是NAND存储器16中对应于指定LBA的物理位置。在这种情况下,无法仅通过磁道表63指定NAND存储器16中对应于LBA的物理位置,还需要参考簇表64,此LBA称为“以簇为单位管理的LBA”(步骤S108)。
(读取操作)
接下来,将参考图26和图27介绍SSD2中的读取操作。该实施例中介绍的读取操作是使用INCITS ACS-2中描述的60h READ FPDMAQUEUED的实例。但是,可使用诸如25h READ DMA EXT之类的其它写入命令并且读取命令类型的差别不影响本发明的本质。当SSD2从主机设备3接收读取指令时(步骤S110),SSDC41将该读取指令添加到RAM40中的读取指令队列中(步骤S111),并将指示接收到读取指令的通知返回到主机设备3。
另一方面,当RAM40中的读取指令队列中存在指令时,SSDC41判定读取处理是否可执行(步骤S120)。当SSDC41判定读取处理可执行时,SSDC41根据图25所示的LBA正向查找转换过程,根据从主机设备3接收的LBA指定数据的当前物理位置(步骤S121)。SSDC41从指定位置的物理页读取数据(步骤S123),使用读取数据中的ECC冗余位执行ECC校正(步骤S124),通过IFC42将校正的数据发送到主机设备3(步骤S125),并更新统计信息65。SSDC41可在校正从NAND存储器16读取的数据之前将该数据写入RAM40,然后SSDC41可校正在RAM40中写入的数据并将该数据发送到主机设备3,或者SSDC41可在校正数据之后将校正的数据写入RAM40,并且SSDC41可将在RAM40中写入的数据发送到主机设备3。
在步骤S124,SSDC41尝试通过ECC校正数据,但是,当SSDC41无法校正数据时,SSDC41删除包括无法根据ABT62解码的页的物理块并在BBT61中登记(register)该块,然后在统计信息65中递增不可校正的ECC错误计数(统计信息X08)。此时,期望将块中的数据复制到根据FBT60分配的空闲块,在ABT62中登记空闲块的物理块ID,并将磁道表63和簇表64中的物理块从复制源物理块ID重写到复制目的地物理块ID。可将其中发生不可校正的ECC错误的错误块添加到BBT61中。
(写入操作)
接下来,将参考图28和图29介绍SSD2中的写入操作。该实施例中介绍的写入操作是使用INCITS ACS-2中描述的61h WRITE FPDMAQUEUED的实例。但是,可使用诸如35h WRITE DMA EXT之类的其它写入命令并且写入命令类型的差别不影响本发明的本质。当SSD2从主机设备3接收写入指令时(步骤S130),SSDC41将该写入指令添加到RAM40中的读取指令队列中(步骤S131),并将指示接收到写入指令的通知返回到主机设备3。
另一方面,当RAM40中的写入指令队列中具有指令时,SSDC41判定写入处理是否可执行(步骤S140)。当SSDC41判定写入处理可执行时,SSDC41通知主机设备3可执行写入处理,从主机设备3接收写入数据,对接收到的数据执行ECC编码,并将编码数据存储在RAM40的高速缓冲存储器46中。可将未编码的数据存储在高速缓冲存储器46中,并且可在对NAND存储器16执行写入时对数据进行编码。
接下来,SSDC41读取FBT60(步骤S141)并从FBT60获取空闲块的物理块ID。当没有空闲块时(步骤S142:否),SSDC41对NAND存储器16执行下面将描述的NAND GC(步骤S143),在此NAND GC之后,读取FBT60(步骤S144)并从FBT60获取空闲块的物理块ID。SSDC41对其物理块ID被获取的空闲块执行擦除操作。当出现擦除错误时,该物理块ID被添加到BBT61中并从FBT60删除,并且从S141重新开始处理以再次获取空闲块。即使对于其中发生一次擦除错误的物理块,也可正常地执行擦除,而不会在再次执行擦除操作的某些情况下导致擦除错误,因此,就防止坏块数不必要地增加而言,期望提供每个块的擦除错误发生次数项,作为FBT60或ABT62中针对每个块的统计信息X05,当发生块擦除错误时,递增该统计信息,并且当每个块的擦除错误发生次数变得等于或大于预定值时,在BBT61中登记该块。为了仅将其中连续发生擦除错误的物理块变更为坏块,更期望地,SSCD41提供“每个块的连续擦除错误发生次数”项代替“每个块的擦除错误发生次数”,当发生块擦除错误时,递增该统计信息,并且在可以执行无错误的擦除时将该统计信息重置为0,当“每个块的连续擦除错误发生次数”变得等于或大于预定值时,在BBT61中登记该块。
接下来,为了搜索写入指令指定的LBA是否处于未写入状态,SSDC41根据图25所示的正向查找转换过程判定对应于LAB的有效数据是否已存储在NAND存储器16中(步骤S145和S146)。
当LBA处于未写入状态时(步骤S146:是),SSDC41将存储在高速缓冲存储器46中的接收数据写入空闲块(步骤S147),在ABT62中登记被执行写入的空闲块(新物理块)的ID以及对其的擦除计数,并且从FBT60删除被执行写入的物理块的ID(步骤S151)。此时,通过将所接收的数据的LBA分为以磁道为单位的区段(磁道区段)并判定是否在这些磁道区段中填充数据,判定是否以磁道为单位或以簇为单位管理LBA(步骤S152)。换言之,当磁道区段填充数据时,以磁道为单位管理LBA,当并非所有磁道区段填充数据时,以簇为单位管理LBA。当以簇为单位管理LBA时,重写簇表64并且将LBA与新物理块ID关联(步骤S153),而且,重写磁道表63并且将LBA与无效的物理块ID(例如,空)关联(步骤S153)。当以磁道为单位管理LBA时,重写磁道表63并且将LBA与新物理块ID关联(步骤S154)。
另一方面,在步骤S146,当LBA不处于未写入状态时,SSDC41基于通过正向查找转换获取的物理块ID,从NAND存储器16读取对应物理块中的所有数据,并将数据写入RAM40(步骤S148)。然后,SSDC41将从主机接收并存储在高速缓冲存储器46中的数据覆写(组合)在RAM40中的从NAND存储器16读取并写入RAM40的数据上(步骤S149),并将覆写的数据写入空闲块(步骤S150)。
在步骤S150,当发生写入错误时,物理块ID被添加到BBT61中并从FBT60删除,并且从S141重新开始处理以再次获取空闲块。当SSDC41对其中发生一次写入错误的物理块再次执行写入操作时,SSDC41可能在不导致写入错误的情况下成功地写入数据。因此,就防止不必要地增加坏块数而言,期望提供每个块的写入错误发生次数项,作为FBT60或ABT62中每个块的统计信息X04,当发生块写入错误时,递增该统计信息,并且当“每个块的写入错误发生次数”变得等于或大于预定值时,在BBT61中登记该块。为了仅将其中连续发生写入错误的物理块变更为坏块,更期望地,SSCD41提供“每个块的连续写入错误发生次数”项代替“每个块的写入错误发生次数”,当发生块写入错误时,递增该统计信息,并且在可以执行无错误的写入时将该统计信息重置为0,当“每个块的连续写入错误发生次数”变得等于或大于预定值时,在BBT61中登记该块。
SSDC41在ABT62中注册被执行写入的空闲块(新物理块)的ID以及对其的擦除计数,并且从FBT60删除被执行写入的物理块的ID(步骤S151)。当以簇为单位管理LBA时,SSDC41将簇表64中的旧物理块ID重写为新物理块ID(步骤S152和S153)。当以磁道为单位管理LBA时,SSDC41将磁道表中的旧物理块ID重写为新物理块ID(步骤S152和S154)。此外,SSDC41将旧物理块ID及对其的擦除计数添加到FBT60中并从ABT62删除旧物理块ID及上面的擦除计数(步骤S155)。SSDC41在统计信息65中反映上述写入处理的内容。
(NAND GC)
SSD2中所有LBA的容量被设计为小于SSD2的NAND存储器16的总容量,从而只要写入操作继续以磁道为单位执行,空闲块就不会变得不足。另一方面,当以簇为单位对未写入LBA执行多次写入时,容量大于簇的物理块被分配给一个以簇为单位的写入操作,这样,NAND存储器16中需要容量大于待写入数据的物理块,因此空闲块的数量可能变得不足。当空闲块的数量变得不足时,可通过下面描述的NAND GC新获取空闲块。
将参考图30介绍SSD2中的NAND GC(NAND闪存中数据的垃圾收集)。并非物理块中存储的所有簇总是有效簇,有效簇以外的无效簇不与LBA关联。有效簇是其中写入最新数据的簇,无效簇是因为在不同的位置中写入具有相同LBA的数据而不被引用的簇。物理块具有针对一定量无效簇的数据的空闲空间,空闲块可通过执行收集有效簇中数据并在不同块中重写这些数据的NAND GC来获取。
首先,将选择的物理块ID=i设定为0,并将空闲空间累计量S设定为0(步骤S160)。SSDC41判定ID为i=0的物理块是否被输入磁道表63(步骤S161)。当物理块被输入磁道表时,i递增1(步骤S162),对具有下一数值ID的物理块执行类似的判定(步骤S161)。换言之,当物理块ID包括在磁道表63中时,该物理块中的数据以磁道为单位管理,以便该物理块不包括在NAND GC目标中。
当ID为i的物理块不以磁道为单位管理时(步骤S161:否),SSDC41接着读取簇表64并获取ID为i的物理块中包括的有效簇的所有地址(步骤S163)。然后,SSDC41获取已获取的有效簇的总容量的大小z(步骤S164),在其中v<物理块大小的情况下(步骤S165),SSDC41将该物理块的ID添加到NAND GC目标块列表中(步骤S166)。
此外,SSDC41将已获取的该物理块的簇容量v添加到已获取的簇累计量S中并更新已获取的簇累计量S(步骤S167)。
在步骤S165,当不满足v<物理块大小时(S165:否),或者在步骤S168,当已获取的簇累计量S尚未达到物理块大小时(S168:否),SSDC41使i递增1(步骤S162)并以类似于上面的方式对具有下一数值ID的物理块执行步骤S161至S167中的过程。然后,在步骤S168,SSDC41重复步骤S161至S167中的过程,直到已获取的簇累计量S达到物理块大小。
在步骤S168,当已获取的簇累计量S达到物理块大小时(S168:是),SSDC41从NAND存储器16读取NAND GC目标块列表上所有物理块的所有有效簇的数据,并将其写入RAM40(步骤S169)。而且,SSDC41对NAND GC目标块列表上所有物理块执行擦除处理(步骤S170),从ABT62删除所有已被执行擦除处理的物理块并将它们添加到FBT60中(步骤S171)。此时,擦除计数递增。在步骤S170执行的擦除操作的目标可被限制为作为步骤S172中写入数据目标的块,这是抑制块上的擦除计数所期望的。
当发生擦除错误时,物理块ID被添加到BBT61中并从FBT60删除。当SSDC41再次擦除发生一次擦除错误的物理块时,SSDC41可能在不引起擦除错误的情况下成功完成擦除操作。因此,为了防止不必要地增加坏块数,期望在FBT60或ABT62中针对每个块提供“每个块的擦除错误发生次数”项,当发生块擦除错误时,递增该项,并且当每个块的擦除错误发生次数变得等于或大于预定值时,在BBT61中登记该块。为了仅将其中连续发生擦除错误的物理块变更为坏块,更期望地,SSDC41提供“每个块的连续擦除错误发生次数”项代替“每个块的擦除错误发生次数”,当发生块擦除错误时,递增该项,并且在可以执行无错误的擦除时将该项重置为0,当“每个块的连续擦除错误发生次数”变得等于或大于预定值时,在BBT61中登记该块。
SSDC41从FBT60获取新空闲块,将已写入RAM40的数据写入已获取的空闲块(步骤S172),将被写入数据的空闲块的物理块ID以及对该块的擦除计数添加到ABT62中,然后从FBT60删除被写入数据的块的块ID(步骤S173)。此外,SSDC41更新簇表64中的簇地址、物理块ID以及物理块内页地址以对应于此时的NAND GC(步骤S174)。SSDC41基于上述NAND GC的处理内容更新统计信息65。
在步骤S172,当发生写入错误时,物理块ID被添加到BBT61中并从FBT60删除,然后再次获取空闲块。当SSDC41再次将数据写入发生一次写入错误的物理块时,SSDC41可能在不引起写入错误的情况下成功写入数据。因此,为了防止不必要地增加坏块数,期望在FBT60或ABT62中针对每个块提供“每个块的写入错误发生次数”项,当发生块写入错误时,递增该项,并且当“每个块的写入错误发生次数”变得等于或大于预定值时,在BBT61中登记该块。为了仅将其中连续发生写入错误的物理块变更为坏块,更期望地,SSDC41提供“每个块的连续写入错误发生次数”项,代替“每个块的写入错误发生次数”,当发生块写入错误时,递增该项,并且在可以执行无错误的写入时将该项重置为0,当“每个块的连续写入错误发生次数”变得等于或大于预定值时,在BBT61中登记该块。
在图30的过程中,通过执行优先在空闲块中置入数据来执行NANDGC,但是,也可通过以下方式优先获取空闲块来执行NAND GC:即,在步骤164通过从物理块大小减去已获取簇的容量来获取v,然后在步骤S165判定是否满足v>0,当满足v>0时,继续到步骤S168,当不满足v>0时,继续到步骤S162。
接下来,将参考图31介绍SSD2中的删除通知。删除通知是当主机设备3中的OS100删除数据时,从主机设备3发送到外部存储装置的指令。删除通知的实例例如包括INCITS ATA/ATAPI命令集-2(ACS-2)中描述的Data Set Management Command(数据集管理命令)(被称为修剪(TRIM)命令)。在此方法中,当数据从OS100删除时,将已删除数据所在的逻辑地址区域(LBA区域)通知给外部存储装置,作为由LBA和逻辑扇区数的组合形成的LBA范围条目,以便即使在外部存储装置中,该区域也可用作空闲空间。删除通知允许SSD2获取新空闲块。TRIM命令的功能可通过其它命令实现,例如除了Data Set Management Command以外,还有INCITS ACS-2中描述的SCT Command Transport和对于供应商唯一的命令。当OS100为紧急OS时,为了减少对NAND存储器的写入,期望禁止在紧急OS的情况下发出删除通知。另一方面,删除通知即使在紧急OS的情况下也允许发出,因为在删除通知处理中,最多只有关于管理信息45的重写被写入NAND存储器16并且没有任何用户数据(或极少用户数据)被写入NAND存储器16。
当SSD2从主机设备3接收删除通知时(步骤S180),SSDC41根据图25所示的过程对删除通知中包括的LBA执行LBA正向查找转换。当删除通知中包括的LBA以磁道为单位管理时(步骤S181:是),SSDC41将物理块ID添加到FBT60中并将其从ABT62删除(步骤S184)。另一方面,当删除通知中包括的LBA以簇为单位管理时(步骤S181:否),SSDC41从簇表64删除所有对应于物理块的簇(步骤S182),将适当的有效值(例如,FFFF)写入磁道表63中与磁道(对应于LBA)对应的物理块ID(步骤S183),然后将该物理ID添加到FBT60中并将其从ABT62删除(步骤S184)。在SSD2中,除了NAND GC以外,还可通过删除通知处理获取空闲块。
一般可通过此NAND GC获取用于写入操作的足够空闲块数。当即使通过NAND GC无法获取用于写入操作的足够空闲块数时,期望将统计信息65中的NAND GC失败标志(统计信息X24)设定为1,以便能够向主机设备3通知SSD2无法通过主机设备3获取统计信息65来获取空闲块。为了在NAND GC失败标志设定为1之后SSD2实际停止操作之前(在寿命结束之前)提供时延,在满足下面条件的情况下,期望控制将NAND GC失败标志设定为1。
(通过执行NAND GC获取的空闲块数)<(写入所需的空闲块数)+(余量)
上述NAND GC不仅可在从主机设备3接收写入请求时执行,例如也可以在自上次从主机接收指令起经过预定时间时,或者在从主机设备3接收到用于转换到待机、空闲或休眠状态的命令时执行,或者,例如可以在SSD2通过ACS-2中描述的SCT Command Transport或其它供应商命令从主机设备3接收用于开始NAND GC的指令时执行。当OS100为紧急OS时,为了减少写入NAND存储器的数据,即使自上次从主机设备3接收指令起已经过预定时间时,并且即使在从主机设备3接收到用于转换到待机、空闲或休眠状态的命令时,期望也不执行NAND GC。此外,当OS100为紧急OS时,为了减少写入NAND存储器的数据,期望禁止在紧急OS的情况下发出用于开始NAND GC的指令。
(错误处理)
接下来,将参考图32介绍与SSD2中的NAND存储器16相关的错误处理。诸如用于来自主机设备3的写入请求的处理和NAND GC处理之类的各种处理一般根据上述的方式执行,但是,存在对NAND存储器16的写入操作(编程操作)中发生写入错误的情况、对NAND存储器16的擦除操作(擦除操作)中发生擦除错误的情况、在对NAND存储器16的读取操作中发生不可校正的ECC错误(错误校正处理失败)的情况等,并且需要针对这些情况的例外处理。
当发生上述任一错误时(步骤S190),SSDC41将其中发生错误的物理块添加到BBT61中(步骤S191)并从ABT62和FBT60删除其中发生错误的物理块(步骤S192)以防止随后访问其中发生错误的物理块。此时,其中发生错误的物理块中的数据可被复制到另一物理块。SSDC41基于上述错误处理更新统计信息65。
在上文中,介绍了与读取处理、写入处理和NAND处理相关的错误处理实例,但是,该错误处理不限于这些实例,该错误处理可应用于针对NAND存储器16的所有读取处理、写入处理和错误处理。
(控制工具)
当使用SSD2时,NAND存储器16的每个块的可靠性降低,因此坏块数增加,并且空闲块数和活动块数总量减少。当进一步使用SSD2时(当SSD2磨损时),即使执行NAND GC,也无法保证空闲块数足以执行写入处理,这表示SSD2的寿命结束(EOL,寿命结束)。在下文中,介绍当SSD2达到寿命结束时,对控制工具200的处理。
当控制工具200被激活时,控制工具200驻留在主存储器6中并监测SSD2中的统计信息65。为了持续监测SSD2中的统计信息65,期望在将正常OS100A从区域16D(或20D)读取到区域6A时或者在此操作之后立即,例如通过在正常OS100A的启动程序中注册控制工具200的启动程序,从区域16B(或区域20B)读取控制工具200。例如,当OS100为Windows(注册商标)时,例如,通过在Windows(注册商标)的开始菜单中注册控制工具200,将控制工具200注册为服务,或者在Windows(注册商标)的注册表中注册控制工具200,将控制工具200设定为启动时的常驻程序,从而允许自动激活控制工具200。当BIOS11D被从BIOS-ROM11读到区域6A时,也可从区域11B读取控制工具200。
例如,如图33所示,控制工具200以规则的时间间隔(例如,每1分钟)从SSD2获取统计信息65。作为获取统计信息的方法,例如,可以使用INCITS ACS-2中描述的SMART READ DATA(B0h(D0h))(这是S.M.A.R.T(自监测分析和报告技术)命令,为存储器自诊断功能)、INCITSACS-2中描述的IDENTIFY DEVICE(ECh)、ACS-2中描述的SCTCommand Transport或对于供应商唯一的命令。
图34示出与在SSD2中管理的统计信息65(统计信息X01至X19、X23和X24)相关的表实例。如图34所示,当使用SMART READ DATA(B0h(D0h))读取统计信息65时,将属性ID(属性ID)分配给统计信息65的每个组成部分(X01至X19、X23和X24等)。属性ID可仅被分配给这些组成部分的一部分。SMAB是预定值,作为统计信息65的每个组成部分的标准化最佳值。SMAL是标准化值的下限,用来保证SSD的可靠性,并且SSDC41将SMAL计算为SMAL=SMAB*AMALR(0≤AMALR<1)(SMAL是整数并通过舍入、上舍入小数点之后数字或下舍入小数点之后数字中的任一方法而从小数转换为整数)。SSDC41通过下面的方程式将智能信息的属性值(图34中的“值”)计算为标准化统计值,然后将其发送到控制工具200。属性阈值是图34中的“阈值”,原始值是图34中的“原始值”。
属性值=SMAL+SMAB×(1-AMALR)×(RMAX-原始值)/RMAX
属性阈值=30(固定值)
RMAX=统计信息的原始值上限,用于保证可靠性
原始值=统计信息的原始值
标准化最佳值SMAB可以是任何自然数,例如,可以预定SMAB=100。AMALR可以是任何满足0≤AMALR<1的数值,例如,可以预定AMALR=0.3。而且,可针对X01至X19、X23和X24中的每一者使用不同的RMAX、AMALR和SMAB。当SMAB和AMALR被预定为SMAB=100和AMALR=0.3时,紧接在运送之后SSD2的每个统计信息的属性值为100(作为最佳值),该属性值随着可靠性降低而逐渐降低。当SSD2的可靠性无法再保证时(当统计信息的原始值变得等于或大于RMAX时),该属性值达到30或更低。可使用ACS-2中描述的B0h/DAhSMART RETURN STATUS向主机3通知统计信息65的原始值超过其阈值,并且控制工具200能够根据命令的输出判定原始值是否超过其阈值。
当在分析统计信息的原始值与SSD2的FR之间的关联关系之后SSD2的故障率(FR)超过最大FR时,RMAX优选地预定为等于统计信息的原始值。例如,如图35所示,当年故障率(AFR)超过最大AFR(其在SSD2开发阶段的SSD2规格文件中描述)时,SSD2的供应公司可将RMAX预定为等于统计信息的原始值。AFR可使用威布尔(Weibull)统计法计算。例如,SSD2的供应公司可在SDD2开发阶段,在特定时间段内对大量供测试的SSD2(例如,100个)构成的组执行磨损测试(或老化测试),在这些测试中,在高温下重复执行擦除操作、写入操作、读取操作和读取数据的验证操作以检查NAND存储器16的数据可靠性,同时监测统计信息,并且预定RMAX在AFR达到作为RMAX的固定比率时等于统计信息的原始值。例如,SSD2的供应公司可执行数据保持测试,其中在高温条件下,使磨损的SSD2在特定时间段或更长时间段内不与主机3附接,之后,降低SSD2的温度,由主机3对SSD2执行读取操作,当读取数据无法通过ECC校正时(或者当无法通过ECC校正的数据为固定数量或更多时),将此定义为SSD2的缺陷(故障),并且通过将缺陷数除以被执行等效测试的SSD2数而获取的值用作FR。当AFR显著地超过允许的AFR时,供应公司可将RMAX预定为等于统计信息的原始值。根据下面的定义,RMAX’可通过在RMAX上添加某一余量进行预定,并且可替代RMAX使用。
RMAX’=RMAX-余量
图34中的“最差”可被用作控制工具200的指标以检测(诊断)SSD2的EOL。“最差”被SSDC41计算为属性值的最差值。例如,在X01至X09和X23的情况下,最差例如是SSD2运送之后(或制造SSD2之后),属性值的最小值。过去预定时间段内(滑动窗口内)的属性值的最小值可被用作最差值。通信或处理的过去预定操作计数内(或特定数据量交易内)的属性值的最小值可被用作最差值。
图34中的“原始数据”(原始值)可被用作控制工具200的指标以检测(诊断)SSD2的EOL。统计信息(例如,X01至X09、X23、X24和X25)的原始值作为原始数据被从SSD2发送到控制工具200。在这种情况下,控制工具200已将RMAX存储在控制工具200中,或者通过从SSD2单独地读取RMAX或从其它存储装置读取RMAX来获取RMAX,将RMAX与原始数据进行比较,并且当关系变为原始数据>RMAX或原始数据≥RMAX时,判定SSD2已达到寿命结束(判定SSD2已达到其EOL)。例如,在NAND GC失败标志(统计信息X24)的情况下,如果该标志为1,则控制工具200判定SSD2已达到其EOL。例如,在坏块总数(统计信息X01)的情况下,如果该数量超过预定值,则控制工具200判定SSD2已达到其EOL。统计信息的原始值并不一定需要作为原始数据输出,例如,SSDC41可以将通过对统计信息的原始值执行四种算术运算获取的值作为原始数据发送到到控制工具200,并且通过将该值与以相同方式对RMAX执行四种算术运算获取的值进行比较来执行判定。备选地,SSDC41可以将通过对统计信息的原始值进行加密(或编码)获取的数据作为原始数据发送到控制工具200,然后对该数据进行解密(或解码),并通过将解密后的数据与RMAX进行比较来执行判定。
通过上述方式,控制工具200判定SSD2是否已达到其EOL(SSD2是否处于异常状态),当判定SSD2已达到其EOL时(或者当判定SSD2处于异常状态时),移至寿命到期处理(EOL处理),将在下面对此进行描述(步骤S205)。统计信息65可采取除统计信息X01至X19、X23、X24和X25以外的其它各种形式,并且本发明也可应用于这些形式。而且,尽管X01至X19、X23、X24和X25与FR之间的关系为正相关,但是本发明也可应用于与FR具有负相关的统计信息。例如,可使用SSD2在运送之后所经受的最低温度。在这种情况下,SSD2的供应公司可以预定保证可靠性的下限RMIN代替RMAX,并且当统计信息变得低于RMIN时,主机2判定SSD2已达到其异常状态(或其EOL)。
在图33中,当使用S.M.A.R.T时,控制工具200优选地以规则的时间间隔(例如,每1分钟)获取统计信息(步骤S200:是)。控制工具200发出在ACS-2中描述的B0h/D0h SMART READ DATA,该命令是统计信息获取命令(步骤S201),从SSD2接收包括统计信息的数据(步骤S202),然后诊断该接收的数据(步骤S203)。诊断方法如上所述。在步骤S204,当控制工具200检测到(诊断)SSD2已达到其EOL时(步骤S204:是),该控制工具移至寿命到期处理(EOL处理)(步骤S205)。即使SSD2尚未达到其EOL,控制工具200也可移至步骤S205中的处理,例如,当统计信息超过预定RMAX或者统计信息指示无法在正常操作中采用的异常值时。
还可以通过使用统计信息65以外的信息移至寿命到期处理。例如,如图36所示,控制工具200从OS100可获取(监测)主机3从SSD2接收的响应信息(请参阅图16)(步骤S210)。当主机接收错误响应(错误消息)时,控制工具200判定SSD2进入异常状态,并移至寿命到期处理(步骤S212)。控制工具200可监测任何命令的响应。另一方面,例如,控制工具200优选地仅监测从主机3传送到SSD2的写入命令的响应,该命令的响应从SSD2传送到主机3,例如ACS-2中描述的61h WRITEFPDMA QUEUED和35h WRITE DMA EXT,这是为了减少对CPU4的负荷。尤其是,当SSD2是使用作为专利文献1给出的公开号为2009-0222617的美国专利申请中描述的发明的SSD时,当SSD2已达到其寿命结束时,写入命令的响应作为错误返回,因此,可以在不获取任何统计信息的情况下判定SSD2已达到其寿命结束。不用说,即使SSD2不是使用作为专利文献1给出的公开号为2009-0222617的美国专利申请中的发明的SSD,本发明当然仍适用。
SSDC41可被配置为即使处于专利文献1中的只读模式,也不将错误返回到特殊写入命令(例如,ACS-2中描述的SCT Command Transport和对于供应商唯一的命令)。然后,即使SSD2处于将错误返回到正常写入命令的状态,也可通过使用上述特殊命令执行某些特殊的写入操作,例如下面将描述的重写SSD2中的启动载入器或写入紧急OS。写入SSD2以外的存储装置时不需要这样做。备选地,在正常OS是仅使用特定写入命令(正常写入命令)(例如,61h WRITE FPDMA QUEUED)作为写入命令的OS的情况下,SSDC41可被配置为当SSDC41进入专利文献1中的只读模式时,将错误返回到正常写入命令(例如,61h WRITE FPDMAQUEUED),并且不将错误返回到其它命令(特殊的写入命令)(例如,30h WRITE SECTOR(S))。然后可通过使用特殊的写入命令(例如,30hWRITE SECTOR(S))执行将启动载入器、紧急OS等写入SSD2。
响应受控制工具200监测的命令可以是写入命令以外的命令。例如,控制工具可监测响应(输出)并报告ACS-2中描述的B0H/D4H SMARTEXECUTE OFF-LINE IMMEDIATE或90h EXECUTE DEVICEDIAGNOSTIC的响应。
而且,为了在发生具有再发生高可能性的命令错误时执行寿命到期处理,控制工具200优选地仅在发生多次命令错误时执行寿命到期处理。这是因为,如果特定的命令响应为错误,则当再次发送同一命令时,下面的响应可能不是错误,此时,SSD2可能未达到其EOL。而且,为了严格判定错误再发生的可能性,期望在命令错误连续发生多次时执行寿命到期处理。备选地,如图37所示,当在监测对SSD2的命令的同时错误作为命令响应返回时(步骤S220和S221:是),控制工具200或OS100可重试对SSD2的相同命令(命令重试)(步骤S222),并且当重试的命令为错误时(步骤S223:是),可执行寿命到期处理(步骤S224)。
(寿命到期处理)
接下来,将介绍寿命到期处理(异常状态处理)。在第一实施例中,介绍在正常OS和紧急OS已存储在SSD2中的情况下的寿命到期处理。如图9至图15所示,正常OS100A、紧急OS100B和启动载入器300例如在计算机系统1运送之前由计算机系统1的制造商写入SSD2,或者在计算机系统1运送之后由用户从诸如DVD-ROM、USB存储器和SSD之类的安装盘安装它们来写入SSD2,或者在计算机系统1运送之后由用户从WEB下载安装镜像并使用下载的安装镜像安装它们来写入SSD2。在NAND存储器16中,如图9所示,启动载入器300被写入区域16C,正常OS100A被写入区域16D,紧急OS100B被写入区域16E,并且通过RAM40中存储的管理信息44为区域16C、区域16D和区域16E中的每一者分配LBA。LBA16C被分配给区域16C,LBA16D被分配给区域16D,LBA16E被分配给区域16E。LBA还以类似的方式被分配给存储在启动载入器300中的上述OS指针信息OSPT(指示待读取OS的LBA的指针信息),并且被分配给OSPT的LBA被称为LBAOSPT。LBAOSPT包括在LBA16C中。
控制工具200重写启动载入器300以在下次启动计算机系统1时,将紧急OS100B而非正常OS100A读到主机设备3的主存储器6的区域6A中。当正常OS100A被用作CPU4的OS100时,主机设备3可对SSD2执行写入操作,这样导致进一步缩短SSD2的寿命或破坏被写入SSD2的数据或已写入SSD2的数据。另一方面,如该实施例操作的那样,当紧急OS100B而非正常OS100A被读到主存储器6的区域6A中并且CPU4使用紧急OS100B时,主机3被禁止执行对SSD2的写入操作,以便能够读取SSD2中的数据,并且可以在破坏SSD2中的数据或SSD2呈现为不可读之前将SSD2中存储的用户数据备份到另一存储介质中。
例如,当在图33中的步骤S205调用寿命到期处理时,如图38所示,控制工具200重写启动载入器300以在下次启动计算机系统1时,将紧急OS100B而非正常OS100A读到主存储器6的区域6A中。例如,控制工具200将LBA16E作为写入数据写入LBAOSPT。因此,当下次启动计算机系统1时,CPU4可通过读取OS指针信息OSPT并将读取指令发送到LBA16E(其是OS指针信息OSPT指示的LBA)来读取紧急OS100B。在重写启动载入器300之前或之后,控制工具200可通过显示器9显示消息“SSD已达到其寿命结束。激活紧急OS。”。
如图10所示,如果控制工具200存储在ROM11中并在从SSD2载入OS100之前从ROM11载入,则控制工具200可重写存储在主存储器6中并且在启动主机3时从存储在NAND闪存16中的启动载入器300载入的启动载入器,控制工具200无需重写存储在NAND闪存16中的启动载入器300。然后启动载入器300如上所述基于主存储器6中的OSPT301将正常OS区域16D或紧急BIOS区域16E中的一者读出到主存储器6中的区域6A。
如图11所示,如果控制工具200、正常OS100A(正常BIOS100A)和紧急OS100B(紧急BIOS100B)存储在ROM11中并且在从SSD2载入OS100之前从ROM11载入,则当启动主机3时,控制工具200可重写存储在主存储器6中的BIOSPT301,控制工具200无需重写存储在NAND闪存16中的启动载入器300。然后IPL如上所述基于主存储器6中的BIOSPT301将正常BIOS区域11D或紧急BIOS区域11E中的一者读出到主存储器6中的区域6A。
例如,在图38中,仅执行重写启动载入器300作为寿命到期处理。例如,在图39中,控制工具200通过在步骤S240重写启动载入器之后,将复位命令发送到计算机系统1或将复位命令发送到正常OS(步骤S241)来重新启动计算机系统1。
例如,如图40所示,控制工具200在步骤S250重写启动载入器之后,通过显示器9显示文本“SSD已达到其寿命结束。激活紧急OS。现在重新启动?”以及“确认”按钮。当通过鼠标15或键盘14按下“确认”按钮时(步骤S252:是),控制工具200重新启动计算机系统1(步骤S253)。而且,控制工具200还可以在命令提示屏幕上显示文本“SSD已达到其寿命结束。激活紧急OS。现在重新启动?y:是,n:否”代替显示“确认”按钮,当输入“y”并通过键盘14按下回车键时,控制工具200重新启动计算机系统1。
图41示出重新启动计算机系统1时的操作过程。当重新启动计算机系统1时,CPU4通过使用对应于区域16C和LBAOSPT的LBA从SSD2读取启动载入器300和OS指针信息OSPT(步骤S260)。接下来,CPU4使用启动载入器300执行所需的启动处理并分析OS指针信息OSPT以指定由OS指针信息OSPT指示的LBA。然后,CPU4将对指定LBA的读取指令发送到SSD2以从SSD2读取由OS指针信息OSPT指定的OS。因此,当由OS指针信息OSPT指示的LBA指定区域16D(其是正常OS100A的存储区域)时(步骤S261:是),从区域16D读取正常OS100A并将其写入主存储器6的区域6A(步骤S262),并且,当由OS指针信息OSPT指示的LBA指定区域16E(其是紧急OS100B的存储区域)时(步骤S261:否),从区域16E读取紧急OS100B并将其写入主存储器6的区域6A(步骤S263)。通过这种方式,当重写启动载入器300中的OS指针信息OSPT以通过控制工具200进行的寿命到期处理读取紧急OS100B时,从区域16E读取紧急OS100B并将其写入主存储器6的区域6A。这样便可启动紧急OS100B。
通过这种方式,当统计信息尚未超过阈值时,启动载入器载入正常OS100A,当统计信息已超过阈值时,启动载入器载入紧急OS100B。
(备份功能)
为了便利用户将SSD2中的用户数据备份到其它存储装置,期望在紧急OS100B中添加用户数据备份功能。在SSD2被视为已达到其EOL的状态下,考虑到SSD2的数据保持可靠性降低,因此需要尽快将SSD2中的用户数据保存到其它备份存储装置。
图42是示出为紧急OS100B提供备份功能的情况下,主机设备3的配置的图。备份存储装置(例如,另一SSD和硬盘驱动器)150通过接口19(在该实施例中,采用SATA接口)连接到主机设备3。备份存储装置150不需要在计算机系统1运送时安装,例如,当用户使用单独购买的SSD作为备份存储装置150时,用户可通过SATA电缆将SSD的SATA端口连接到主板30(请参阅图17)以及通过电力电缆将SSD2的电源端口连接到电源单元32。
图43示出在将备份功能添加到紧急OS100B中时,紧急OS100B的启动过程实例。图43中步骤S270至S273的操作与图41中步骤S260至S263的操作相同。在图43中,步骤S274至S276被添加到图41所示的计算机系统1的启动程序中。在启动紧急OS100B之后,例如,当用户通过键盘14或鼠标15从紧急OS100B的程序菜单选择备份功能或者当启动紧急OS100B时,自动开始步骤S274中的处理以及后续步骤。期望在备份处理之前在显示器9上显示消息“现在备份?”和确认按钮,从而允许用户随意选择备份时间。当通过鼠标15或键盘14选择确认按钮时,处理继续到步骤S275中的“是”。备选地,可通过命令提示在显示器9上显示消息“是否备份?是:Y,否:N”,并且可通过从键盘14按下Y按钮和回车键使处理继续到步骤S275中的“是”。当以此方式选择备份功能时(步骤S275:是),紧急OS100B开始备份处理。
作为备份处理内容,例如,紧急OS100B将从SSD2读取的数据写入与从SSD2读取的数据的LBA(SSD2中的LBA)相同的LBA(备份存储装置150中的LBA)(逐LBA备份)。例如,SSD2中LBA=0h的数据被复制到备份存储装置150中的LBA=0h(步骤S276)。而且,SSD2中LBA=234c5h中的数据被复制到备份存储装置150中的LBA=234c5h。数据复制通过以下步骤执行:将例如ACS-2中描述的60h READ FPDMAQUEUED或25h READ DMA EXT命令发送到具有指定LBA和逻辑扇区长度的SSD2,从SSD2接收读取数据并将其写入主存储器6,将例如ACS-2中描述的61h WRITE FPDMA QUEUED或35h WRITE DMAEXT命令发送到具有指定LBA和逻辑扇区长度的备份存储装置150,以及将写入主存储器6的数据发送到备份存储装置150。备份处理可针对整个LBA区域执行,或者可针对LBA区域的一部分执行。
在该备份处理中,紧急OS100B可将SSD2中所有文件复制到备份存储装置150。在许多OS中,用户不通过直接指定LBA访问数据,而是使用文件ID(文件名)访问数据。例如,如图44所示,SSD2存储文件管理表140(元数据140),该表将文件ID与LBA和逻辑扇区长度进行关联。LBA还根据管理信息44被分配给文件管理表140。正常OS100A基于文件管理表140,将从图16所示的其它软件接收的文件ID转换为LBA,并将其发送到SSD2,以及基于文件管理表140,将从SSD2接收的LBA转换为文件ID,并将其发送到其它软件。在备份处理中,紧急OS100B从SSD2读取文件管理表140,针对每个文件ID将读取文件管理表140中对应的LBA上的数据的命令(例如,60h READ FPDMA QUEUED和25h READ DMA EXT命令)发送到SSD2,从SSD2接收读取数据,然后将其写入主存储器6。而且,紧急OS100B读取备份存储装置150中的文件管理表(未示出),将写入主存储器6的数据写入未被分配文件ID的LBA,获取SSD2的所有文件的所有LBA以将被写入的LBA与文件名进行关联,读取已获取的LBA上的所有数据,将读取数据写入备份存储装置150,然后重写备份存储装置150中的文件管理表(未示出)以将被写入的LBA与文件ID进行关联。备份处理可针对所有文件执行,也可对部分文件执行。
而且,在将备份数据写入备份存储装置150时,从SSD2读取的数据可被压缩(编码)和写入。而且,还可以读取SSD2中诸如文件管理表140之类的管理信息,获取有关正在使用的区域和文件的信息,基于已获取的信息针对SSD2中的数据产生ROM映像,然后将所产生的ROM映像存储在备份存储装置150中。
在上面的介绍中,使用了备份存储装置为通过SATA接口连接的SATA装置的情况。也可使用其它备份存储装置。例如,可使用诸如USB存储器之类的USB存储装置151和支持USB接口的SSD作为图45所示的备份存储装置,可使用可写光驱152(例如DVD-R、DVD-RW和蓝光(Blu-ray)(注册商标)盘)作为图46所示的备份存储装置,或者可使用通过因特网或LAN连接的网络存储服务器153(云存储服务器)作为图47所示的备份存储装置。而且,备份功能还可应用于其它实施例。
如图9所示,用于紧急OS100B的存储区域16E与管理信息44中的LBA关联。另一方面,为了防止用户无意中重写区域16E中的数据,紧急OS可记录在存储区域16E中,而不在SSD2运送时分配LBA,并且在执行寿命到期处理时,通过控制工具200将SCT Command Transport或对于供应商唯一的命令发送到SSD2,SSDC41可重写管理信息44并将LBA分配给区域16E。备选地,通过控制工具200将SCT Command Transport或对于供应商唯一的命令(包括被分配LBA的区域16E的LBA范围)发送到SSD2,SSDC41可重写管理信息44,以便区域16E不被分配LBA,并且在执行寿命到期处理时,通过控制工具200将SCT CommandTransport或对于供应商唯一的命令发送到SSD2,SSDC41可重写管理信息44并将LBA分配给区域16E。
通过这种方式,根据第一实施例,控制工具200判定SSD2是否已达到寿命结束,以及SSD2是否处于正常状态,当判定SSD2已达到其寿命结束(其EOL)或SSD2处于异常状态时,控制工具200重写启动载入器300或BIOSPT301,以便启动仅支持读写操作中的读取操作的紧急OS,使得在重新启动计算机系统1时启动紧急OS,这样,禁止对SSD2的写入操作或防止对SSD2的写入操作容易执行,从而抑制SSD2的可靠性降级并防止要写入SSD2的数据和已写入SSD2的数据被破坏,这允许用户容易从SSD2读取用户数据并将用户数据备份到其它存储装置中。
(第二实施例)
在第一实施例中,介绍了正常OS100A和紧急OS100B存储在SSD2的NAND存储器16中的情况。在第二实施例中,介绍正常OS100A存储在SSD2中而紧急OS100B不存储在SSD2中的情况。在第二实施例中,在图37的步骤S224所示的寿命到期处理中执行启动载入器300的重写处理(请参阅图39中的步骤S240)之前或之后,控制工具200从不同于SSD2的外部存储装置20(请参阅图12)将紧急OS100B安装在SSD2的NAND存储器16的区域16E中。就防止用户由于无意中重写SSD2中存储有紧急OS的区域16E而破坏紧急OS数据而言,并且就通过保护区域16E而防止减少SSD2的空闲空间而言,期望采用第二实施例。
而且,例如,如图13所示,在重写启动载入器300之前或之后,控制工具200从WEB服务器21下载紧急OS100B的数据或安装程序,并且基于所下载的数据在SSD2的NAND存储器16的区域16E中安装紧急OS100B。备选地,控制工具200可通过显示器9向用户显示其中存储紧急OS的数据或安装程序的WEB服务器的地址。
备选地,如图14和图15所示,在重写启动载入器300之前或之后,控制工具200可从外部存储介质(诸如DVD-ROM之类的光学介质、USB存储器、SD卡、SSD等)23或24将紧急OS100B安装在SSD2的NAND存储器16的区域16E中。备选地,在重写启动载入器300之前或之后,控制工具200可通过显示器9向用户显示消息以设定其中存储紧急OS100B的安装程序的外部存储介质(诸如DVD-ROM之类的光学介质、USB存储器、SD卡、SSD等)。
当在NAND存储器16中安装紧急OS100B时执行对NAND存储器16的写入,因此,就防止NAND存储器16的可靠性降低和数据破坏而言,期望使紧急OS的数据量显著地小于NAND存储器16的容量。
(第三实施例)
在第三实施例中,将介绍正常OS100A和紧急OS100B存储在不同于SSD2的非易失性存储装置20中的情况下的寿命到期处理。如图12所示,本发明也可应用于正常OS100A和紧急OS100B存储在不同于SSD2的非易失性存储装置20中而不存储在SSD2中的情况,以及这两个OS之一存储在SSD2中而另一个存储在非易失性存储装置20中的情况。在这种情况下,除了SSD2中的启动载入器之外,控制工具200在某些情况下还需要重写非易失性存储装置20中的启动载入器。
当正常OS100A和紧急OS100B存储在不同于SSD2的非易失性存储装置20中时,控制工具200重写存储在非易失性存储装置20中的启动载入器300而不重写SSD2中的启动载入器。
当正常OS100A存储在SSD2中且紧急OS100B存储在非易失性存储装置20中时,期望控制工具200重写SSD2和非易失性存储装置20这两者中的启动载入器。当在非易失性存储装置20从主机设备3移除的状态下启动计算机系统1时,为了防止无意地对SSD2执行写入访问,期望将启动载入器配置为不启动正常OS。
当紧急OS100B存储在SSD2中且正常OS100A存储在非易失性存储装置20中时,期望重写SSD2和非易失性存储装置20这两者中的启动载入器。另一方面,可以仅重写非易失性存储装置20中的启动载入器。在这种情况下,即使当在非易失性存储装置20从主机设备3移除的状态下启动计算机系统1时,也可通过读取SSD2中的启动载入器300,从SSD2的NAND存储器16中的区域16E启动紧急OS。
(第四实施例)
在第四实施例中,将介绍正常OS100A安装在SSD2中而紧急OS未安装在SSD2中的情况。为了尽可能多地抑制访问可靠性降低的SSD2,紧急OS100B期望从不同于SSD2的存储装置启动。在该实施例中,控制工具200具有在寿命到期处理中生成安装有紧急OS的紧急启动盘的功能。
作为紧急启动盘,可采用各种非易失性存储装置,例如USB存储器、SD卡、诸如CD和DVD之类的光学介质、SSD和硬盘驱动器。在该实施例中,介绍从中使用USB存储器作为紧急启动盘的情况。
包括用于生成紧急启动盘的紧急OS数据的数据(映像数据)例如存储在SSD2、其它SSD、USB存储器、SD卡、诸如DVD-ROM驱动器之类的光学介质、以及WEB服务器的存储介质中。在该实施例中,介绍SSD2被用作用于存储安装紧急OS用的映像数据的存储介质的情况。换言之,在该实施例中,安装源映像数据存储在可靠性降低的SSD2本身中。
当安装紧急OS时,从SSD2读取映像数据,一旦执行安装之后,便不再读取相同的映像数据。而且,期望控制工具200具有允许用户在SSD2达到其EOL之前的阶段中任意生成紧急启动盘的功能。
图48示出当生成紧急启动盘时数据移动的概念图。而且,图48示出当生成紧急启动盘时控制工具200的操作过程。当开始寿命到期处理时,期望控制工具200检查USB存储器是否连接到主机设备3的USB控制器13,当USB存储器未连接时,通过显示器9向用户显示消息“生成用于启动紧急OS的USB存储器。请连接USB存储器”。
如图48所示,当USB存储器24连接时,控制工具200从SSD2的NAND存储器16的区域16Q中存储的安装映像数据400中提取紧急OS数据(当紧急OS数据被压缩、加密或编码时,对该数据进行解压缩、解密或解码),并将其复制(安装)到USB存储器24中的区域24R(步骤S280)。接下来,控制工具200重写启动载入器310以便参考用于紧急OS100B的区域24R,使得在读取存储在USB存储器24中的启动载入器310时读取在USB存储器24中安装的紧急OS100B(步骤S281)。具体而言,控制工具200例如将对应于存储区域24R的LBA写入启动载入器310中的OS指针信息OSPT311。
当USB存储器24和SSD2均连接到主机设备3时,期望重写启动载入器310或者使BIOS-ROM11的设置变更为优先启动USB存储器24中的启动载入器310(步骤S282)。步骤S282可不执行。
当USB存储器24未连接到主机设备3时,为了防止正常OS100A从SSD2启动以及对SSD2进行无意的写入访问,在步骤S282,期望重写SSD2中的启动载入器300,以便不从SSD2启动正常OS100A。例如,通过将用于正常OS100A的区域16D以外的LBA或无效LBA写入启动载入器300中的OS指针信息OSPT301,即使读取SSD2中的启动载入器300,也可防止载入正常OS100A。备选地,可重写正常OS100A上的数据。
通过这种方式,当SSD2达到其EOL或者当SSD2进入异常状态时,生成用于启动OS的启动盘,该OS能够读取SSD2中的数据并将SSD2中的数据备份到其它非易失性存储装置,同时抑制SSD2的可靠性降低和SSD2中的数据破坏。
而且,如图50所示,还可以使用诸如MS-DOS(商标)、Linux(商标)、Windows(注册商标)和PE(商标)之类的OS作为紧急OS110B,并且在将紧急OS安装在USB存储器24中的同时将紧急工具210(具有备份SSD2中数据的功能)安装在USB存储器24的区域24S中以允许从紧急OS100B执行紧急工具210。紧急工具210期望具有类似于第一实施例中介绍的备份功能。
图51示出启动主机设备3时的操作。在启动主机设备3时,从USB存储器24读取紧急OS100B并将其写入主存储器6,以便从USB存储器24启动紧急OS100B(步骤S290)。接下来,从USB存储器24读取紧急工具210并将其写入主存储器6,以便从USB存储器24激活紧急工具210(步骤S291)。期望例如通过在紧急OS100B的启动中注册紧急工具210,使得在启动紧急OS100B之后自动激活紧急工具210。
如图52所示,期望紧急OS100B通过显示器19例如显示作为可由用户选择的菜单项之一的备份菜单、消息“是否备份?”和确认按钮,或消息“是否备份?”,以进入等待通过键盘14输入的状态,供用户任意将备份功能设定为可激活状态(步骤S292)。紧急OS100B可自动开始备份。
当通过键盘14或鼠标15选择备份功能激活时(步骤S293),紧急工具210被激活。紧急工具210将SSD2中存储的数据复制到备份存储装置150(步骤S293)。作为备份方法,可采用类似于第一实施例中描述的方法,例如可使用逐LBA备份或逐文件备份。
(第五实施例)
上述实施例允许用户容易地从SSD2读取用户数据,并在抑制SSD2的可靠性降低和SSD2的数据破坏的同时将用户数据备份到其它存储装置。第五实施例提供了一种进一步抑制SSD2的可靠性降低的方法。为SSD2提供了一种在某些情况下在后台执行刷新处理的功能,用于修复由于老化或读取干扰破坏的数据。借助此功能,执行定期读取NAND存储器16的块并将其中存在大量数据错误的块中的数据写入其它块的处理。因此,可减少老化和读取干扰的影响,但是另一方面,可对块执行额外的擦除和写入,从而加速SSD2的可靠性降低。
在该实施例中,控制工具200或紧急OS100B指示SSDC41通过使用刷新控制命令(ACS-2中描述的SCT Command Transport、对于供应商唯一的命令或其它命令)停止执行刷新。响应于刷新控制命令,SSDC41停止刷新处理或将刷新执行间隔(例如,1分钟)设定为更长间隔(例如,2分钟)。在使SSDC41将刷新执行间隔设为更长的情况下,期望在刷新控制命令中明确指定刷新执行间隔。
图53示出当控制工具200发出刷新控制命令时的操作。在这种情况下,控制工具200在图33的步骤S205所示的寿命到期处理中发出刷新控制命令。控制工具200执行图38中介绍的启动载入器300的重写(步骤S300),然后将刷新控制命令发送到SSD2(步骤S301)。
图54示出当紧急OS100B发出刷新控制命令时的操作。在这种情况下,如图41所示,在启动系统时,CPU4从SSD2的NAND存储器16读取包括OS指针信息OSPT的启动载入器300(步骤S310)并指定OS指针信息OSPT所指示的LBA。然后,CPU4通过将对所指定的LBA的读取指令发送到SSD2,从SSD2读取由OS指针信息OSPT指定的OS。当OS指针信息OSPT所指示的LBA指定区域16D(其为用于正常OS100A的存储区域)时(步骤S311:是),从区域16D读取正常OS100A并将其写入主存储器6的区域6A(步骤S312),并且,当OS指针信息OSPT所指示的LBA指定区域16E(其为用于紧急OS100B的存储区域)时(步骤S311:否),从区域16E读取紧急OS100B并将其写入主存储器6的区域6A(步骤S313)。当启动紧急OS100B时,紧急OS100B将刷新控制命令发送到SSD2(步骤314)。
通过这种方式,在第五实施例中,控制工具在寿命到期处理中通过执行控制,禁止或阻止SSD2中的后台写入处理,例如刷新处理,从而可抑制SSD的可靠性降级。
(第六实施例)
在第一实施例中,如图33所示,控制工具200定期获取统计信息,并且在SSD2已达到(接近)其EOL时或紧接在SSD2已达到其EOL之后执行寿命到期处理。控制工具200可基于所获取的统计信息预测SSD2的寿命并通过显示器9通知给SSD2的用户,下面将对此进行描述。
当控制工具200根据图33所示的处理过程定期获取统计信息时,控制工具200将已获取的数据附加到主存储器6,例如,采取图55所示的格式,作为关于统计信息的时间序列数据。统计信息时间序列数据可定期备份到诸如SSD2之类的非易失性存储装置。而且,相对于统计信息时间序列数据,可在每次附加最新数据时擦除旧数据。
而且,控制工具200可通过显示器9以图形的方式向用户显示主存储器6中的统计信息时间序列数据,例如以图56所示的显示格式。
在该实施例中,基于该统计信息时间序列数据执行对SSD2的寿命预测。如图57所示,控制工具200通过使用时间段(从当前时间之前的预定时间段T处的时间A到作为当前时间的时间C)中(X,Y)上的所有数据来获取拟合函数Y=f(X),其中变量Y为特定属性ID的属性值,变量X为时间。换言之,通过使用拟合函数f(X)从X获取Y的预测值。具有多种推导f的方法。例如,f可通过以下方式确定:使用参数a和参数b定义f(X)=aX+b,并且对从时间A到时间C的时间段中(X,Y)上的所有数据使用最小平方法来获取a和b。
然后,获取f(X)的反函数f-1(Y)。当f(X)=aX+b时,获取f-1(Y)=(Y-b)/a。预测的SSD2寿命到期时间为f-1(Y=阈值)。还可以相对于从时间A到时间C的(X,Y)上的所有数据获取拟合函数X=g(Y)并将预测的SSD2寿命到期时间设定为g(Y=阈值)。而且f(X)和g(Y)可被拟合至函数,例如线性函数以外的二次函数。
在该实施例中,使用属性值(=Y)和S.M.A.R.T的阈值预测寿命,但是,还可以使用原始值(原始数据)作为Y来获取f(X)和g(Y)并将预测的寿命到期时间设定为f-1(Y=RMAX)或g(Y=RMAX)或f-1(Y=RMIN)或g(Y=RMIN)。而且,可基于使用SMART信息以外的方法获取的统计信息预测寿命。
控制工具200通过显示器9通知用户以这种方式获取的预测寿命到期时间。作为通知方法,例如可显示诸如“预测寿命到期时间:09/09/1999”之类的文本,或者如图58所示,可显示警告屏幕,例如“SSD的剩余寿命小于30天。请立即备份SSD中的数据并更换新的SSD”。备选地,当SSD的剩余寿命变得小于预定天数时,可通过变更控制工具200的图标颜色来变更在显示器上显示的图标颜色。
(第七实施例)
在第一实施例中,如图42所示,介绍了当正常OS100A和紧急OS100B存储在SSD2的NAND存储器16中时,将SSD2中的数据备份到备份存储装置150的功能。当控制工具200重写启动载入器300(图38中的步骤S230)作为寿命到期处理(图33中的步骤S205)并使用上述逐LBA备份作为备份功能时,期望将通过备份处理复制到备份存储装置150的启动载入器恢复到寿命到期处理之前SSD2的启动载入器300的状态,以便当在SSD2作为旧系统驱动器断开与主机设备3的连接并且备份存储装置150作为新系统驱动器连接到主机设备3之后打开计算机系统1时,正常启动正常OS100A。在该实施例中,介绍在备份操作期间在备份存储装置中重写启动载入器的方法。
图59示出在在备份操作之前或之后,计算机系统1和备份存储装置150的功能配置。在SSD2的NAND存储器16的恢复启动载入器区域16V中,存储用于将启动载入器300恢复到控制工具200重写前的状态的启动载入器恢复信息350。区域16V可在寿命到期处理时被控制工具200分配,在激活控制工具200时被分配,或者在控制工具200安装在SSD2中时被分配。LBA根据SSD2中的管理信息45(请参阅图22)被分配给所分配的区域16V。
图60示出根据该实施例的寿命到期处理的操作过程。在寿命到期处理中,备份存储装置150可不连接到主机设备3。在寿命到期处理中,即,在变更启动载入器300之前,控制工具200将启动载入器300的备份信息(即,启动载入器恢复信息350)写入恢复启动载入器区域16V(步骤S320)。作为待写入区域16V的信息,例如,区域16C中存储的启动载入器300上的所有数据(映像)可被直接复制,或者可在区域16V中记录启动载入器300的数据与将被写入区域16C的新数据之间的差异信息。
当在区域16V中记录差异信息时,例如,如图61所示,可以使用重写差异日志(其中记录重写之前的数据与重写的LBA之间的对应关系)作为差异信息。当采用重写差异日志时,控制工具200将区域16C中存储的启动载入器300中的重写LBA写入重写差异日志的“重写的LBA”,并将重写同一LBA之前的数据写入重写差异日志的“重写前的数据”。例如,当逻辑扇区(LBA的最小单元)为512字节时,重写差异日志的“重写前的数据”的一个元素可以是512字节数据或通过压缩或对重写前的数据执行可逆变换获取的512字节以外的数据。当使用重写差异日志将启动载入器300从新启动载入器恢复到旧启动载入器时,通过针对区域16C,将“重写前的数据”写入由重写差异日志的“重写的LBA”指示的LBA,将启动载入器300恢复到旧启动载入器。
之后,控制工具200重写启动载入器300,从而以类似于第一实施例中介绍的方式,在下次启动计算机系统1时将紧急OS100B而非正常OS100A读到主存储器6(步骤S321)。
为了便利在下面将描述的备份操作期间搜索恢复启动载入器区域16V,期望控制工具200提前将恢复启动载入器区域16V的头LBA(起始LBA)写入启动载入器区域16C(步骤S322)。不一定需要将恢复启动载入器区域16V的头LBA写入启动载入器区域16C,区域16V可通过提前将特定数据模式写入区域16V的头并在下面描述的备份时搜索该特定数据模式来指定,可通过固定地将区域16V与预定的特定LBA进行关联并在下面描述的备份时访问该特定LBA来指定,或者可通过其它方法来指定。
在步骤S321之后,计算机系统1可以类似于第一实施例的方式重启,或者SSD2的刷新控制命令可以类似于第五实施例的方式发送。而且,恢复启动载入器区域16V可存储在SSD2之外的存储装置中。
图62示出紧急OS100B执行的备份操作。在备份时,当备份存储装置150未连接到主机设备3时,用户将备份存储装置150连接到主机设备3。此时,控制工具200可在显示器9上向用户显示消息“请连接备份装置”。
从NAND存储器16的区域16E载入到主存储器6的区域6A内的紧急OS以类似于第一实施例的方式将SSD2中的数据复制到备份存储装置150(步骤330)。例如,当采用逐LBA备份作为备份方法并且SSD2的所有LBA区域被复制到备份存储装置150时,存储在区域16D中的正常OS100A被复制到备份存储装置150的区域150D,存储在区域16U中的其它用户数据被复制到区域150U。存储在启动载入器区域16C中的启动载入器300可被复制到备份存储装置150的区域100C或者可不被复制。存储在区域16E中的紧急OS100B可被复制到备份存储装置150的区域150E或者可不被复制。而且,存储在恢复启动载入器区域16V中的启动载入器恢复信息350可不被复制到备份存储装置150。
紧急OS100B基于启动载入器恢复信息350和启动载入器300上的数据产生要存储在备份存储装置150中的启动载入器320并将所产生的启动载入器320写入备份存储装置150的区域150C,从而当在下次启动计算机系统1期间载入启动载入器320时,将正常OS100A载入到主存储器6的区域6A内(步骤S331)。
在图60的步骤S320中的启动载入器备份处理中,当存储在区域16C中的启动载入器300上的数据(映像)直接被复制到恢复启动载入器区域16V时,在图62的步骤S331,恢复启动载入器区域16V中的启动载入器恢复信息350可直接被复制到备份存储装置150的区域150C。
而且,在图60的S320中的启动载入器备份处理中,在启动载入器区域16C中的重写差异信息记录在恢复启动载入器区域16V中的情况下,尤其是在当启动载入器区域16C从旧启动载入器数据重写为新启动载入器数据时,有关新旧启动载入器数据的重写差异信息记录在恢复启动载入器区域16V中的情况下,在图62的步骤S331,紧急OS100B将启动载入器区域16C中的数据(新启动载入器数据)和启动载入器恢复信息350(存储在恢复启动载入器区域16V中的差异数据)读到主存储器6,基于启动载入器恢复信息350将新启动载入器数据恢复为旧启动载入器数据,并且将已恢复的旧启动载入器数据写入备份存储装置150的区域150C。
在执行上述备份处理之后,当在已达到其寿命结束的SSD2与主机设备3分离(通过从IF0移除SSD2)并且备份存储装置150连接到主机设备3(通过将备份存储装置150连接到IF1)的状态下启动计算机系统1时,主机设备3读取备份存储装置150中的启动载入器320并且主机设备3基于有关启动载入器320的信息,将备份存储装置150中的区域150D载入到主存储器6的区域6A内,以便启动正常OS。当备份存储装置150对应于接口IF0时,备份存储装置150可被SSD2替代,并且备份存储装置150可连接到接口IF0。当备份存储装置150不对应于接口IF0时,备份存储装置150可被SSD2替代,并且备份存储装置150可通过接口转换器连接到接口IF0。
通过这种方式,即使SSD2已达到其EOL,计算机系统1也可在备份存储装置中恢复SSD2中存储的用户数据以及正常OS,并且用户可以在不执行额外的设定并重新安装正常OS的情况下用备份存储装置150替代SSD2,并使用备份存储装置150代替SSD2作为系统驱动器。
(第八实施例)
在该实施例中,当在SSD2从异常状态(寿命到期状态)恢复到正常状态(健康状态)之后启动连接SSD2的主机设备时,控制启动正常OS,而非紧急OS。
作为统计信息,例如,在采用指示可靠性随着其值变大而变差并且具有能够再次恢复到正常值(即使在增加到对可靠性具有不利影响的值之后)的特性的参数(例如,当前温度X20和最高温度X21)的情况下,例如,采用RMAX=85℃作为关于这些统计信息的RMAX,并且当满足其中温度落在操作保证温度之外的条件时(例如,当(统计信息的值)>RMAX或(统计信息的值)≥RMAX时),控制工具200重写启动载入器300,以便在下次启动计算机系统1时,将紧急OS100B而非正常OS100A控制为读到主存储器6。
紧急OS100B在启动之后监测统计信息的值,并且在满足(统计信息的值)≤(RMAX-MAX余量)或(统计信息的值)<(RMAX-MAX余量)且统计信息再次返回到正常值时重写启动载入器300,从而执行在下次启动计算机系统1时使正常OS100A而非紧急OS100B被读到主存储器6的启动载入器恢复处理。
MAX余量为零值或更大值,但是,期望MAX余量是大于零的值,以防止启动载入器300频繁地被重写。当统计信息是当前温度或最高温度时,例如,MAX余量被设定为等于5℃。当使用SMART信息获取统计信息并判定条件时,可使用属性值和阈值,或者可使用原始值与RMAX。而且,当在启动正常OS期间统计信息被从异常状态恢复到正常状态时,可通过控制工具200执行上述启动载入器恢复处理。
作为统计信息,在采用指示可靠性随着其值变小而变差并且具有能够再次恢复到正常值(即使在减小到对可靠性具有不利影响的值之后)的特性的参数(例如,当前温度X20和最低温度X22)的情况下,采用RMIN=-10℃作为RMIN,并且当满足其中温度例如落在操作保证温度之外的条件时(例如,当(统计信息的值)<RMIN或(统计信息的值)≤RMIN时),控制工具200重写启动载入器300,以便在下次启动计算机系统1时,将紧急OS100B而非正常OS100A控制为读到主存储器6。
紧急OS100B在启动之后监测统计信息的值,并且在满足(统计信息的值)≥(RMIN+MIN余量)或(统计信息的值)>(RMIN+MIN余量)且统计信息再次返回到正常值时重写启动载入器300,从而执行在下次启动计算机系统1时使正常OS100A而非紧急OS100B被读到主存储器6的启动载入器恢复处理。
MIN余量为零值或更大值,但是,期望MIN余量是大于零的值,以防止启动载入器300频繁地被重写。当统计信息是当前温度或最低温度时,例如,MIN余量被设定为等于5℃。当使用SMART信息获取统计信息并判定条件时,可使用属性值和阈值,或者可使用原始值与MIN。
接下来,将详细地介绍寿命到期处理中控制工具200的操作。当启动载入器300被从异常状态(寿命到期状态)恢复到正常状态(健康状态)时,期望通过上述启动载入器恢复处理将启动载入器300恢复到在寿命到期处理中重写之前的启动载入器。图63示出在启动载入器恢复处理之前和之后的计算机系统1的功能配置。在SSD2的NAND存储器16的恢复启动载入器区域16V中,存储用于将启动载入器300恢复到控制工具200重写前的状态的启动载入器恢复信息350。区域16V可在寿命到期处理时被控制工具200分配,在激活控制工具200时被分配,或者在控制工具200安装在SSD2中时被分配。LBA根据SSD2中的管理信息45(请参阅图22)分配给所分配的区域16V。而且,该实施例中的区域16V与图59所示的区域16V一样,可被用于在备份时恢复启动载入器,或者可以是不同于图59所示的区域16V的区域。
寿命到期处理的过程与图60所示的过程类似。具体而言,控制工具200在寿命到期处理中将启动载入器300的备份信息(即,启动载入器恢复信息350)写入恢复启动载入器区域16V(步骤S320)。作为待写入区域16V的信息,例如,区域16C中存储的启动载入器300上的数据(映像)可直接复制,或者可记录有关启动载入器的重写差异信息。之后,控制工具200重写启动载入器300,以便在下次启动计算机系统1时将紧急OS100B而非正常OS100A读到主存储器6(步骤S321)。
此外,为了便利在下面将描述的备份操作时搜索恢复启动载入器区域16V,期望控制工具200提前将恢复启动载入器区域16V的头LBA写入启动载入器区域16C(步骤S322)。不一定需要将恢复启动载入器区域16V的头LBA写入启动载入器区域16C,区域16V可通过将特定数据模式写入区域16V的头并在下面描述的备份时搜索该特定数据模式来指定,可通过固定地将区域16V与预定的特定LBA进行关联并在下面描述的备份时访问该特定LBA来指定,或者可通过其它方法来指定。
在步骤S321之后,计算机系统1可以类似于第一实施例的方式重新启动,或者SSD2的刷新控制命令可以类似于第五实施例的方式发送。而且,恢复启动载入器区域16V可存储在SSD2以外的存储装置。
图64示出紧急OS100B执行的启动载入器恢复处理。在寿命到期处理之后(异常状态处理之后),当使用紧急OS启动计算机系统1时,紧急OS100B例如使用上述SMART READ DATA监测统计信息并判定统计信息是否返回到正常值(步骤S340)。当基于上述判定参考,统计信息返回到正常值时(步骤S340:是),紧急OS100B产生启动载入器,该启动载入器进行处理以基于存储在恢复启动载入器区域16V中的启动载入器恢复信息350和存储在启动载入器区域16C中的启动载入器300上的数据,将正常OS100A载入到主存储器6的区域6A内,然后将所产生的启动载入器写入启动载入器区域16C(步骤341)。因此,当启动载入器300在下次启动计算机系统1期间载入时,正常OS100A被载入到主存储器6的区域6A内。
在图60的步骤S320中的启动载入器备份处理中,当存储在区域16C中的启动载入器300上的数据(映像)直接被复制到恢复启动载入器区域16V时,在图64的步骤S341,恢复启动载入器区域16V中的启动载入器恢复信息350可直接被复制到备份存储装置150的区域150C。
而且,在图60的S320中的启动载入器备份处理中,在启动载入器区域16C中的重写差异信息记录在恢复启动载入器区域16V中的情况下,尤其是在当启动载入器区域16C从旧启动载入器数据重写为新启动载入器数据时,有关新旧启动载入器数据的重写差异信息记录在恢复启动载入器区域16V中的情况下,在图64的步骤S341,紧急OS100B将启动载入器区域16C中的数据(新启动载入器数据)和启动载入器恢复信息350(存储在恢复启动载入器区域16V中的差异数据)读到主存储器6,基于启动载入器恢复信息350将新启动载入器数据恢复为旧启动载入器数据,并且将恢复的旧启动载入器数据写入备份存储装置150的区域150C。
通过这种方式,在该实施例中,如图65所示,当统计信息暗示SSD2从正常状态变更为异常状态时,执行用于启动异常状态OS之操作的异常状态到达处理,并且当统计信息暗示SSD2从异常状态返回到正常状态时,执行用于启动正常OS之操作的启动载入器恢复处理。
通过这种方式,即使当在SSD2恢复到正常状态(健康状态)之后SSD2临时进入异常状态时,计算机系统也会启动正常OS,以便用户可以与寿命到期处理之前相同的方式使用SSD2,而不必执行额外的设定和重新安装正常OS。
(第九实施例)
图66示出作为上面安装有外部存储装置的信息处理设备的计算机系统1001的外观配置。图66示出一般桌面型个人计算机1001的配置。作为外部存储装置的SSD1010通过供电的电力电缆1131连接到电源电路1132。SSD1010通过SATA(串行高级技术附件)电缆1136物理连接到主板1130,以便能够与主板1130通信。通过SATA电缆1136实现的通信遵循SATA标准。CPU等(未示出)安装在主板1130上。显示器1133、键盘1134、鼠标1135等连接到主板1130。计算机系统不限于桌面型个人计算机,也可使用膝上型或笔记本个人计算机。
上面安装有外部存储装置的设备系统(主机1100)可以是成像装置,例如照相机和摄像机、游戏机、汽车导航系统等。可使用其它外存储装置(例如硬盘驱动器(HDD)和混合硬盘驱动器(混合HDD))替代SSD1010。而且,在SSD与计算机之间使用的连接标准可以是SATA标准以外的其它接口标准,例如USB(通用串行总线)标准、PCI Express标准或串行附接SCSI(SAS)标准。
图67示出上面安装有SSD1010的主机1100的系统配置实例。主机1100包括CPU1200、北桥1201、诸如DRAM、SRAM和MRAM之类的主存储器1202、显示控制器1203、显示器1133、南桥1205、光驱1206、BIOS-ROM1207、LAN控制器1208、USB控制器1209、键盘1134、鼠标1135等。
CPU1200是处理器,被提供为控制主机1100的操作,并且执行从SSD1010载入到主存储器1202内的操作系统(OS)。此外,当光驱1206能够执行针对已载入光盘的读取处理和写入处理中的至少一者时,CPU1200执行该处理。
而且,CPU1200执行存储在BIOS-ROM1207中的系统BIOS(基本输入输出系统)。系统BIOS是用于控制主机1100中硬件的程序。
北桥1201是与CPU1200的本地总线连接的桥接装置。用于执行主存储器1202的访问控制的存储控制器置于北桥1201内。而且,北桥1201具有例如执行与显示控制器1203通信的功能。
主存储器1202中临时存储程序和数据并充当CPU1200的工作区域。主存储器1202例如由DRAM、SRAM或MRAM构成。显示控制器1203是视频再现控制器,用于控制计算机系统的显示器1133。
南桥1205是与CPU1200的本地总线连接的桥接装置。南桥1205通过ATA接口1090控制SSD1010(其为用于存储各种类型软件和数据的存储装置)。
主机1100以逻辑扇区为单位访问SSD1010。写入命令(写入请求)、读取命令(读取请求)、清空(flush)命令等通过ATA接口1090被输入SSD1010。
南桥1205具有执行BIOS-ROM1207、光驱1206、LAN控制器1208、以及USB控制器1029的访问控制的功能。键盘1134和鼠标1135连接到USB控制器209。
在图67中,当计算机系统的电源关断时,OS1150、性能评估工具1110、访问日志表1120、性能日志表1125和软件(例如,字处理软件、数值软件、游戏软件和图像编辑软件)1140存储在SSD1010中。当主机电源接通或者这些功能被调用时,它们被从SSD1010载入到主存储器1202内。软件1140是性能评估工具1110以外的软件,并且使用SSD1010。性能评估工具1110是执行SSD1010的性能评估的软件并且包括访问信息获取工具1111和性能信息获取工具1112。
如图68所示,例如,当主机1110的电源关断时,性能评估工具1110存储在SSD1010的NAND存储器1020中作为性能评估工具1110A,但是,当主机1100启动或者程序开始时,性能评估工具1110A被从NAND存储器1020载入到主存储器1202内。另一方面,当多个外部存储装置连接到主机1100时,如图69所示,性能评估工具1110可作为性能评估工具1110B存储在不同于SSD1010的外部存储装置1300中,并且在启动主机1100或程序时,性能评估工具1110B可被从外部存储装置1300载入到主存储器1202内。尤其是,当外部存储装置1300被用作用于存储OS1150的系统驱动器并且SSD1010被用作用于存储用户数据(例如,文档、静止图像数据和运动图像数据)的数据驱动器时,为了清楚地将驱动器1010和驱动器1300的作用相互区分,例如在使用外部存储装置1300(其为系统驱动器)作为主要存储OS和应用程序的驱动器,使用SSD(其为数据驱动器)1010作为用于存储用户数据的驱动器的情况下,期望将性能评估工具1110存储在作为系统驱动器的外部存储装置1300中。
为了节省设置性能评估工具所需的用户劳动,例如如图68和图69所示,期望计算机系统1001在性能评估工具存储在SSD1010或外部存储装置1300中的状态下运送,到达商店,然后交付给用户。另一方面,为了允许用户选择是否安装性能评估工具以及允许将最新性能评估工具提供给用户,期望性能评估工具能够通过从WEB下载或从诸如DVD-ROM和USB存储器之类的外部存储介质安装,存储在SSD1010或外部存储装置1300中。
图70示出从WEB下载性能评估工具的实例。在图70中,性能评估工具1110C存储在WEB服务器上的存储介质1400中,并且性能评估工具1110C借助LAN控制器1208,通过网络(例如,因特网、局域网和无线LAN)下载到SSD1010或外部存储装置1300中。
图71示出从诸如DVD-ROM和CD-ROM之类的光学介质安装性能评估工具的实例。性能评估工具1110D存储在诸如DVD-ROM和CD-ROM之类的光学介质1500中,并且通过在光驱1206中设置光学介质1500,借助光驱1206而安装在SSD1010或外部存储装置1300中。
图72示出从USB存储器安装性能评估工具的实例。性能评估工具1110E存储在USB存储器1600中,并且通过将USB存储器1600连接到USB控制器1209,借助USB控制器1209而安装在SSD1010或外部存储装置1300中。很明显,可使用诸如SD卡之类的其它外部存储器替代USB存储器1600。为了使用户易于使用性能评估工具,当运送SSD1010时,期望将光学介质1500或USB存储器1600作为附件与SSD1010打包在一起。另一方面,光学介质1500或USB存储器1600可作为软件产品单独销售,也可作为杂志或图书的附赠品。
访问信息获取工具1111将在OS1150或不同于性能评估工具1110的软件1140正常地访问SSD1010时的命令顺序地记录在访问日志表1120中作为访问日志。性能信息获取工具1112通过使用访问日志表1120中记录的访问日志来计算有关SSD1010的性能信息,然后将该计算结果记录在性能日志表1125中作为性能信息日志。
图73示出主机1100的各元件的层次结构。性能评估工具1110和软件1140通过OS1150与SSD1010通信。具体而言,当性能评估工具1110或软件1140需要访问SSD1010时,性能计算功能1110和软件1140通过OS1150传输指令、响应和数据。
图74示出SSD1010的内部配置实例。SSD1010包括NAND型闪存(下文称为NAND存储器)1020(其为非易失性半导体存储器)、接口控制器1030(其通过ATA接口1090与主机1100通信)、RAM(随机存取存储器)1040(其为易失性半导体存储器并包括高速缓冲存储器(CM)1040a,该CM充当接口控制器1030与NAND存储器1020之间的中间缓冲器)、存储控制器1050(其执行NAND存储器1020和RAM1040的管理和控制以及接口控制器1030的控制)、ECC电路1058(其对从NAND存储器1020读取的数据执行错误校正处理)、以及连接这些组件的总线1057。
可采用DRAM(动态随机存取存储器)、SRAM(静态随机存取存储器)、FeRAM(铁电随机存取存储器)、MRAM(磁阻随机存取存储器)、PRAM(相位电荷随机存取存储器)等作为RAM1040。
NAND存储器1020中存储主机1100指定的用户数据,存储管理用户数据的管理表,以及存储RAM1040管理的管理信息以供备份。NAND存储器1020包括多个存储器芯片并且每个存储器芯片包括多个块作为数据擦除单元。物理块包括多个物理页。物理页作为数据写入和数据读取的单位。
配置NAND存储器1020之存储基元阵列的存储晶体管分别由MOSFET(金属氧化物半导体场效应晶体管)构成,该MOSFET具有形成于半导体衬底上的层叠栅结构。层叠栅结构包括通过栅极介电膜形成于半导体衬底上的电荷存储层(浮栅电极)以及通过栅极间介电膜形成于浮栅电极上的控制栅电极。在存储基元晶体管中,阈值电压根据浮栅电极中存储的电子数而变化,并且数据根据该阈值电压的差异而存储。存储基元晶体管可被配置为存储1位或者可被配置为存储多值(2位或更多位数据)。存储基元晶体管不限于具有包括浮栅电极的结构,并且可以具有诸如MONOS(金属氧化氮氧化硅)型之类的结构,其中阈值电压可通过在作为电荷存储层的氮化物界面中捕获电子来调整。MONOS型存储基元晶体管可被配置为存储1位,或者可被配置为以类似于MOSFET型存储基元晶体管的方式存储多个值。而且,存储基元可以是三维排列的存储基元,如公开号为20100172189的美国专利申请和公开号为20100254191的美国专利申请中描述的那样。
RAM1040包括高速缓冲存储器(CM)1040a,该CM其充当主机1100与NAND存储器1020之间的数据传输高速缓冲器。此外,RAM1040充当管理信息存储器和工作区域存储器。在RAM1040中管理的管理表通过例如在启动时载入NAND存储器1020中存储的各种管理表来获取,并且定期地或在关断电源时被保存在NAND存储器1020中。
存储控制器1050的功能通过处理器(其执行存储在NAND存储器1020中的系统程序(固件))、各种硬件电路等来实现,并且存储控制器1050例如针对来自主机1100的各种指令(例如,写入请求、高速缓存清空请求和读取请求)执行主机1100与NAND存储器1020之间的数据传输控制,执行RAM1040和NAND存储器1020中存储的各种管理表的更新和管理。接口控制器1030在存储控制器1050的控制下,通过ATA接口1090将指令和数据发送到主机1100或者从主机1100接收指令和数据。
当主机1100向SSD1010发送读取请求或写入请求时,主机1100通过ATA接口1090输入LBA(逻辑块寻址)作为逻辑地址。LBA是逻辑地址,其中从0开始的序列号附加于逻辑扇区(大小:例如,512B)。而且,当向SSD1010发出读取请求或写入请求时,除了LBA以外,主机1100还输入要作为读取请求或写入请求目标的逻辑扇区大小。
当从主机1100输入指令时,接口控制器1030接收指令并将接收的指令发送到存储控制器1050。存储控制器1050处理接收到的指令。如上所述,指令包括LBA,并且主机1100通过使用LBA来指定外部存储装置中的数据位置。存储控制器1050通过参考RAM1040中的管理信息,将作为从主机1100接收到的逻辑地址的LBA转换为物理地址。NAND存储器1020中存储基元的物理位置由所转换的物理地址指定。
图75示出SSD1010中使用的管理信息的配置。如上所述,管理信息以非易失性的方式存储在NAND存储器1020中。存储在NAND存储器1020中的管理信息在启动SSD1010时被载入到RAM1040内并进行使用。RAM1040中的管理信息定期地或在关断电源时被保存在NAND存储器1020中。当RAM1040为诸如MRAM和FeRAM之类的非易失性RAM时,该管理信息只能存储在RAM1040中,并且在这种情况下,该管理信息不存储在NAND存储器1020中。
如图75所示,管理信息包括空闲块表1021、活动块表1022、磁道表(以磁道为单位的逻辑-物理转换表)1023和簇表(以簇为单位的逻辑-物理转换表)1024。
如图76所示,LBA是逻辑地址,其中从0开始的序列号附加于逻辑扇区(大小:例如,512B)。在该实施例中,定义由阶位等于或高于LBA的低阶第(s+1)位的位串形成的簇地址以及由阶位等于或高于LBA的低阶第(s+t+1)位的位串形成的磁道地址,作为SSD1010的逻辑地址(LBA)的管理单元。换言之,逻辑扇区是主机1100中的最小访问单元。簇是用于管理SSD中“小数据”的管理单元,并且簇大小被设定为等于逻辑扇区大小的自然数倍的大小。磁道是用于管理SSD中“大数据”的管理单元,并且磁道大小被设定为等于簇大小的两倍或更大自然数倍的大小。因此,当LBA除以磁道大小时,磁道地址为商,并且当LBA除以磁道大小时,磁道内地址为余数;当LBA除以簇大小时,簇地址为商,并且当LBA除以簇大小时,簇内地址为余数。在下面的介绍中,为方便起见,磁道大小等于在一个物理块中可记录的数据大小(当ECC电路1058中执行的错误校正的冗余位包括在物理块中时,排除该冗余位的大小)并且簇大小等于在一个物理页中可记录的数据大小(当ECC电路1058中执行的错误校正的冗余位包括在物理页中时,排除该冗余位的大小)。
·空闲块表(FB表)1021管理NAND存储器中的物理块(空闲块:FB)的ID,该物理块可在对NAND存储器1020执行写入时被新分配以供写入,并不指定其用途。而且,空闲块表1021管理每个物理块ID的擦除计数。
·活动块表(AB表)1022管理活动块(AB),这些活动块是被指定用途的物理块。而且,活动块表1022管理每个物理块ID的擦除计数(擦除计数)。
·磁道表1023管理磁道地址与物理块ID(其中存储对应于该磁道地址的磁道数据)之间的对应关系。
·簇表1024管理簇地址、物理块ID(其中存储对应于该簇地址的簇数据)与物理块内页地址(其中存储对应于该簇地址的簇数据)之间的对应关系。
接下来,将参考图77介绍用于从SSD1010中的LBA指定物理地址的过程(LBA正向查找转换)。当指定LBA时,存储控制器1050根据LBA计算磁道地址、簇地址和簇内地址。
存储控制器1050首先搜索磁道表1023并指定对应于所计算的磁道地址的物理块ID(步骤S1100和S1101)。存储控制器1050判定所指定的物理块ID是否有效(步骤S1102)。当物理块ID不为空(null)时,即,该ID是有效值(步骤S1102中的是),存储控制器1050搜索该物理块ID是否被输入活动块表1022(步骤S1103)。当物理块ID被输入活动块表1022时(步骤S1104中的是),从由该物理块ID指定的物理块头位置移位磁道内地址的位置变为NAND存储器1020中对应于指定LBA的物理位置(步骤S1105)。在这种情况下,不需要簇表1024指定NAND存储器1020中对应于LBA的物理位置并且此LBA称为“以磁道为单位管理的LBA”。在步骤S1104,当物理块ID未被输入活动块表1022时(步骤S1104中的否),指定的LBA不具有物理地址并且此状态被称为“未写入状态”(步骤S1106)。
在步骤S1102,当对应于所指定的磁道地址的物理地址为空,即,无效值时(步骤S1102中的否),存储控制器1050根据LBA计算簇地址并搜索簇表1024以获取物理块ID和对应的物理块内页地址(对应于所计算的簇地址)(步骤S1107)。从由该物理块ID和物理块内页地址指定的物理页头位置移位簇内地址的位置变为NAND存储器1020中对应于指定LBA的物理位置。在这种情况下,无法仅通过磁道表1023指定NAND存储器1020中对应于LBA的物理位置,还需要参考簇表1024,此LBA称为“以簇为单位管理的LBA”(步骤S1108)。
接下来,将参考图78和图79介绍SSD1010中的读取操作。当SSD1010从主机1100接收读取指令时(步骤S1110),存储控制器1050将该读取指令添加到RAM1040中的读取指令队列中(步骤S1111),并将指示接收到读取指令的通知返回到主机1100。
另一方面,当RAM1040中的读取指令队列中具有指令时,存储控制器1050判定读取处理是否可执行(步骤S1120)。当存储控制器1050判定读取处理可执行时,存储控制器1050根据图77所示的LBA正向查找转换过程,基于从主机1100接收到的LBA指定数据的物理位置(步骤S1121)。存储控制器1050从指定位置的物理页读取数据(步骤S1123),并通过接口控制器1030将读取数据发送到主机1100(步骤S1124)。从NAND存储器1020读取的数据可一次写入RAM1040,然后,写入RAM1040的数据可被发送到主机1100。
接下来,将参考图80和图81介绍SSD1010中的写入操作。当SSD1010从主机1100接收写入指令时(步骤S1130),存储控制器1050将该写入指令添加到RAM1040中的写入指令队列中(步骤S1131),并将指示接收到写入指令的通知返回到主机1100。
另一方面,当RAM1040中的写入指令队列中具有指令时,存储控制器1050判定写入处理是否可执行(步骤S1140)。当存储控制器1050判定写入处理可执行时,存储控制器1050通知主机1100可执行写入处理,从主机1100接收写入数据,并将所接收的数据存储在RAM1040的高速缓冲存储器1040a中。接下来,存储控制器1050读取空闲块表1021(步骤S1141)并从空闲块表1021获取空闲块的物理块ID。当没有空闲块时(步骤S1142),存储控制器1050对NAND存储器1020执行下面将描述的整理处理(NAND整理处理)(步骤S1143),之后读取空闲块表1021(步骤S1144)并从空闲块表1021获取空闲块的物理块ID。
接下来,为了搜索由写入指令指定的LBA是否处于未写入状态,存储控制器1050根据图77所示的正向查找转换过程判定对应于LBA的有效数据是否已存储在NAND存储器1020中(步骤S1145和S1146)。
当LBA处于未写入状态时(步骤S1146中的是),存储控制器1050将存储在高速缓冲存储器1040a中的接收数据写入空闲块(步骤S1147),在活动块表1022中登记被写入数据的空闲块(新物理块)的ID及其擦除计数,并且从空闲块表1021删除被写入数据的物理块的ID(步骤S1151)。此时,通过将接收到的数据的LAB分为以磁道为单位的区段(磁道区段)并判定是否在这些磁道区段中填充数据,判定是否以磁道为单位或以簇为单位管理LBA(步骤S1152)。换言之,当磁道区段填充数据时,以磁道为单位管理LBA,当并非所有磁道区段填充数据时,以簇为单位管理LBA。当以簇为单位管理LBA时,重写簇表1024并且将LBA与新物理块ID关联(步骤S1153),而且,重写磁道表1023并且将LBA与无效的物理块ID(例如,空)关联(步骤S1153)。当以磁道为单位管理LBA时,重写磁道表并且LBA与新物理块ID关联(步骤S1154)。
另一方面,在步骤S1146,当LBA不处于未写入状态时,存储控制器1050基于通过正向查找转换获取的物理ID,从NAND存储器1020读取对应物理块中的所有数据,并将数据写入RAM1040(步骤S1148)。然后,存储控制器1050将存储在高速缓冲存储器1040a中的数据和在RAM1040中的从NAND存储器1020读取并写入RAM1040的数据进行组合(步骤S1149)并将组合的数据写入空闲块(步骤S1150)。存储控制器1050在活动块表1022中登记被写入数据的空闲块(新物理块)的ID及其擦除计数,并且从空闲块表删除被写入数据的物理块的ID(步骤S1151)。当以簇为单位管理LBA时,存储控制器1050将簇表1024中的旧物理块ID重写为新物理块ID(步骤S1152和S1153)。当以磁道为单位管理LBA时,存储控制器1050将磁道表中的旧物理块ID重写为新物理块ID(步骤S1152和S1154)。此外,存储控制器1050将旧物理块ID及其擦除计数添加到空闲块表1021中并从活动块表1022删除旧物理块ID及其擦除计数(步骤S1155)。
SSD1010中整个LBA的容量被设计为小于SSD1010的NAND存储器1020的总容量,从而只要以磁道为单位执行写入操作,空闲块就不会变得不足。另一方面,当对未写入LBA以簇为单位执行多次写入时,容量大于簇的物理块被用于一个以簇为单位的写入操作,这样,在NAND存储器1020中需要容量大于待写入数据的物理块,因此空闲块可能变得不足。当空闲块变得不足时,可如下所述通过整理NAND存储器1020(NAND垃圾收集(NAND GC))来获取新的空闲块。
用户数据是否通过管理方法以簇为单位或以磁道为单位进行管理取决于来自主机1100的写入模式。例如,当从主机1100到SSD1010执行大小等于或等大于磁道大小的顺序写入时,写入数据被分布到大于磁道大小的连续LBA区域,这样便可以磁道为单位管理用户数据。另一方面,例如,当从主机1100到SSD1010执行簇大小的随机写入时,写入数据被分散在属于不同磁道的不连续LBA区域上,这样便可以簇为单位管理用户数据。
接下来,将参考图82介绍SSD1010中的NAND GC处理。并非在物理块中存储的所有簇总是有效簇,无效簇(即,有效簇以外的簇)不与LBA关联。有效簇是其中写入最新数据的簇,无效簇是因为在不同的位置中写入具有相同LBA的数据而不被引用的簇。物理块具有针对一定量无效簇的数据的空闲空间,空闲块可通过执行收集有效簇中数据并在不同块中重写该数据的NAND整理处理来获取。
首先,将物理块ID(=i)设定为0,并将空闲空间累计量S设定为0(步骤S1160)。存储控制器1050判定ID为i=0的物理块是否被输入磁道表1023(步骤S1161)。当物理块被输入磁道表时,i递增1(步骤S1162),对具有下一数值ID的物理块执行类似的判定(步骤S1161)。换言之,当物理块ID包括在磁道表1023中时,该物理块中的数据以磁道为单位管理,以便该物理块不包括在NAND整理处理目标中。
当ID为i的物理块不以磁道为单位管理时(步骤S1161中的否),存储控制器1050参考簇表1024并获取在ID为i的物理块中包括的有效簇的所有地址(步骤S1163)。然后,存储控制器1050获取所获取的有效簇的总容量大小z(步骤S1164)。在其中v<物理块大小的情况下(步骤S1165),存储控制器1050将该物理块的ID添加到NAND GC处理目标块列表中(步骤S1166)。此外,存储控制器1050将所获取的该物理块簇容量v添加到所获取的簇累计量S中并更新所获取的簇累计量S(步骤S1167)。
在步骤S1165,当v≥物理块大小时,或者在S1168,当获取的簇累计量S尚未达到物理块大小时,存储控制器1050使i递增1(步骤S1162)并以类似于上面的方式对具有下一数值ID的物理块执行步骤S1161至S1167中的过程。然后,在步骤S1168,存储控制器1050重复步骤S1161至S1167中的过程,直到所获取的簇累计量S达到物理块大小。
在步骤S1168,当获取的簇累计量S达到物理块大小时,存储控制器1050从NAND存储器1020读取NAND GC处理目标块列表上所有物理块的所有有效簇的数据,并将其写入RAM1040(步骤S1169)。而且,存储控制器1050对NAND GC处理目标块列表上所有物理块执行擦除处理(步骤S1170),从活动块表1022删除所有被执行擦除处理的物理块并将它们添加到空闲块表1021中(此时,擦除计数递增,步骤S1171)。然后,存储控制器1050从空闲块表1021获取新空闲块,将在RAM1040中写入的数据写入所获取的空闲块(步骤S1172),将被写入数据的空闲块的物理块ID及对该块的擦除计数添加到活动块表1022中,并从空闲块表1021删除被写入数据的块的块ID(步骤S1173)。此外,存储控制器1050更新簇表1024中的簇地址、物理块ID和物理块内页地址以对应于此时的NAND GC处理(步骤S1174)。
在图82的过程中,NAND GC通过对在空闲块内置入数据设置优先级来处理。另一方面,NAND GC可通过借助以下方式对获取空闲块设置优先级来处理。例如,在步骤1164通过从物理块大小减去所获取簇的容量来获取大小v,然后在步骤S1165判定是否v>0,当v>0时,处理继续到步骤S1168,当v≤0时,处理继续到步骤S1162。
如上所述,NAND GC处理伴随对NAND存储器1020中物理块的许多读取操作、写入操作和擦除操作,因此需要大量时间。这样,如果在空闲块数量变得不足的状态下执行写入,则执行NAND GC处理,从主机1100的角度来看,这样减小写入处理速度。通过这种方式,SSD内部状态随时变化,因此很容易受外部访问的影响。
接下来,将参考图83介绍SSD1010中的删除通知。删除通知是当在主机1100中的OS1150中删除数据时,从主机1100发送到外部存储装置的指令。删除通知的实例例如包括在INCITS ATA/ATAPI命令集-2(ACS-2)中描述的Data Set Management Command(数据集管理命令)(被称为修剪(TRIM)命令)。在此方法中,当数据在OS1150中删除时,将已删除数据所在的逻辑地址区域(LBA区域)通知给外部存储装置,作为由LBA和逻辑扇区数的组合形成的LBA范围条目,以便该区域随后可用作甚至外部存储装置中的空闲空间。删除通知允许SSD1010获取新空闲块。TRIM命令的功能可通过其它命令实现,例如INCITS ACS-2中描述的SCT Command Transport(SCT命令传输)和对于供应商唯一的命令等,替代Data Set Management Command。
当SSD1010从主机1100接收删除通知时(步骤S1180),存储控制器1050根据图77所示的过程对在删除通知中包括的LBA执行LBA正向查找转换。当删除通知中包括的LBA以磁道为单位管理时(步骤S1181中的是),存储控制器1050将物理块ID添加到空闲块表1021中并将其从活动块表1022删除(步骤S1184)。另一方面,当删除通知中包括的LBA以簇为单位管理时(步骤S1181中的否),存储控制器1050从簇表1024删除所有对应于物理块的簇(步骤S1182),将适当的有效值(例如,FFFF)写入磁道表1023中对应于磁道(与LBA对应)的物理块ID(步骤S1183),然后将该物理ID添加到空闲块表1021并将其从活动块表1022删除(步骤S1184)。在SSD1010中,除了NAND GC处理以外,也可通过删除通知处理获取空闲块。
接下来,将介绍SSD1010中的性能降低。图84是SSD1010中的性能降低的概念图。首先,描述写入操作的性能降低(图84中的实线)。紧接在从工厂运送之后,没有数据被写入SSD1010并且所有LBA处于未写入状态,这样,几乎所有物理块为空闲块。在这种状态下,当有从主机1100到SSD10的写入指令时,存储控制器1050可立即将数据写入空闲块。但是,当用户使用SSD1010时,写入量增加,这样空闲块数量减少。尤其是,当小于磁道大小的数据写入多次发生时,数据以簇为单位管理,这样使用容量大于簇的物理块进行一个以簇为单位的写入操作。因此,当数据以簇为单位管理时,NAND存储器1020中需要容量大于待写入数据的物理块,这样,空闲块数量可能变得不足。使NAND GC处理执行的可能性随着剩余的空闲块数减少而增加。而且,当SSD1010中存储的用户数据增加,为了获取一个空闲块而需要在NAND GC处理中读取的活动块数也增加。这样,NAND GC处理所需的时间也增加。
写入所需的时间近似地通过以下方程式表示(实际上,管理表处理时间等也被添加到其中)。
(写入时间)=(对物理块的写入时间)+(NAND GC处理概率)×(NAND GC处理时间)
由于NAND GC处理概率和NAND GC处理时间均随着累计写入数据量增加而增加,因此写入性能以加速度降低。另一方面,在写入性能降低状态下,例如,当执行顺序写入时,以磁道为单位管理的数据比率增加,因此,空闲块数增加,从而恢复写入性能。而且,在写入性能降低状态下,当删除通知针对不处于未写入状态的LBA区域发出时,与不处于未写入状态的LBA区域对应的活动块被释放为空闲块,以此恢复写入性能。
图85示出当来自主机1100的访问频率较低时,由SSD1010本身执行的NAND GC处理程序。当SSD1010在特定时间段内(例如,10秒)或更长时间段内未从主机1100接收到命令(处于空闲状态)时,或者当SSD1010在特定时间段内或更长时间段内未接收到命令(媒体访问命令)(主机1100需要使用该命令访问NAND存储器1020)时(步骤S1190),执行NAND GC处理(步骤S1191)以提前获取空闲块,从而使得能够防止写入性能降低(自动NAND GC处理)。可通过增加使自动NAND GC处理执行的频率来有效地防止性能降低,但是,这样导致NAND存储器1020上的擦除计数增加,此状况变为降低SSD1010可靠性的因素。这样,鉴于性能与可靠性之间的均衡关系,需要适当地调整直至开始NAND GC处理的时间。
接下来,将描述读取操作的性能降低(图84中的虚线)。当读取以磁道为单位管理的用户数据时,通过搜索磁道表1023执行正向查找转换,并且搜索目标元素数量与(总容量)÷(磁道大小)一样小。另一方面,在用户数据以簇为单位管理的情况下,除了磁道表1023以外,还需要通过搜索簇表1024来执行正向查找转换,以便搜索目标元素数量为(总容量)÷(簇大小)的最大值。簇大小一般实质上小于磁道大小,以便簇表1024中的搜索目标元素数量显著地大于磁道表1023中的搜索目标元素数量,从而增加了搜索时间。因此,读取所需的时间增加。例如,当1个磁道由4096个簇构成时,簇表1024中元素数量是磁道表1023中元素数量的4096倍。如上所述,当向SSD1010以簇为单位管理的数据写入增加时,读取性能降低。另一方面,在读取性能降低状态下,例如,当执行顺序写入时,以磁道为单位管理的数据增加,这样恢复读取性能。
图86是示出作为比较实例的一般读取操作的性能测试实例。在读取性能测试中,主机1100执行测试数据模式的顺序写入,以便读到测试目标LBA区域。在写入之后,主机1100测量开始时间并将所测量的开始时间存储在主机1100的主存储器1202中。此外,主机1100通过将用于对测试目标LBA区域进行测试的读取指令发送到SSD1010中来使SSD1010读取写入模式,以及在接收读取数据之后结束读取。然后,主机1100测量读取结束时间并将所测量的结束时间存储在主机1100的主存储器1202中。之后,CPU1200通过从结束时间减去开始时间来获取测试执行时间,并且通过将用于测试的读取数据量除以测试执行时间来获取读取传输数据速率。
图87是示出作为比较实例的一般写入操作的性能测试实例。在写入性能测试中,主机1100对测试目标LBA区域执行预调节数据模式的顺序写入(在某些测试中,不写入预调节模式数据)。在写入之后,主机1100测量开始时间并将所测量的开始时间存储在主机1100的主存储器1202中。此外,主机1100通过将用于对测试目标LBA区域进行测试的写入指令发送到SSD1010来使SSD1010写入写入模式,以及在接收来自主机1100的写入结束通知之后结束写入。然后,主机1100测量写入结束时间并将所测量的结束时间存储在主机1100的主存储器1202中。之后,CPU1200通过从结束时间减去开始时间来获取测试执行时间,并且通过将用于测试的写入数据量除以测试执行时间来获取写入传输数据速率。
通过这种方式,在上述性能测量中,对SSD1010执行大量写入,这样,测量本身影响SSD内部状态,从而因为测量而导致内部状态偏离用户实际使用时的内部状态,这样造成测量结果偏离用户体验的速度。例如,当从主机1100对SSD1010执行顺序写入访问以测量性能时,SSD1010中的管理信息被重写,以便以簇为单位管理的数据变更为以磁道为单位管理的数据,或者空闲块数减少。这样导致写入性能测试和读取性能测试中最终计算的SSD性能偏离用户体验的性能(测量前的性能)。实际上,许多性能测量工具都具有规范,在这些规范中,在各种测量中对SSD执行数十亿字节或更大数据的顺序写入,从而使这些工具测量的性能大幅偏离用户体验的性能。
下面介绍该实施例的主要部分。在该实施例中,性能测量使用图67所示的主存储器1202中的性能评估工具1110执行。如上所述,性能评估工具1110包括访问信息获取工具1111和性能信息获取工具1112。如图73所示,性能评估工具1110将信息发送到OS1150或从OS1150接收信息,而且,与一般软件1140类似,通过OS1150将指令、响应和数据发送到硬件或从硬件接收指令、响应和数据。另一方面,如图88所示,当性能评估工具1110以外的软件1140通过OS1150将命令(指令、响应和数据)发送到SSD1010或从SSD1010接收命令时,性能评估工具1110从OS1150至少接收指令和响应的日志。很明显,性能评估工具1110可以接收指令、响应和数据的日志。
此外,当OS1150根据来自OS1150本身的请求将命令(指令、响应和数据)发送到SSD1010或从SSD1010接收命令时,性能评估工具1110从OS1150接收指令和响应的日志。很明显,性能评估工具1110可以接收数据以及指令和响应的日志。
而且,当性能评估工具1110本身通过OS1150将指令、响应和数据发送到SSD1010或从SSD1010接收指令、响应和数据时,性能评估工具1110可以从OS1150接收指令和响应的日志(很明显,性能评估工具1110可以接收指令、响应和数据的日志),但是,在该实施例中,为了便于理解,性能评估工具1110不从OS1150获取在性能评估工具1110本身与SSD1010之间传输指令、响应和数据时获取的日志。
当OS1150或软件1140访问SSD1010时,性能评估工具1110的访问信息获取工具1111从OS1150接收该访问命令的日志,或者通过OS1150从软件1140接收该访问命令的日志。如图89所示,性能评估工具1110的访问信息获取工具1111接收的访问日志包括时间信息(包含粗略时间戳和精细时间戳的时间戳)、命令方向信息、线程识别信息(队列ID)、命令内容信息、传输长度信息(数据长度信息)、LBA信息等。
粗略时间戳是通过获取将指令、响应或数据发送到SSD1010或从SSD1010接收指令、响应或数据的时间而获取的信息,例如,以秒为单位。该时间可通过OS1150获取并且可从BIOS等获取。可使用传输指令、响应或数据的日志的时间替代传输指令、响应或数据的时间。
精细时间戳是通过获取将指令、响应或数据发送到SSD1010或从SSD1010接收指令、响应或数据的时间而获取的信息,其采用小于秒的单位,例如μ秒。上述时间可通过OS1150获取或者可从BIOS等获取。可使用传输指令、响应或数据的日志的时间替代传输指令、响应或数据的时间。截去表示等于或大于秒的值的数字。在不截去任何数字的情况下,可以μ秒为单位管理时间,并且可以省略粗时间信息项。
命令方向信息是指示该命令是到SSD1010的指令(请求发送)还是来自SSDS1010的响应(完成通知)的信息。例如,在采用SATA标准的情况下,在INCITS ACS-2中描述的60h READ FPDMA QUEUED命令中,当60h READ FPDMA QUEUED命令的Register Host to Device(向装置注册主机)(RegHD)从主机1100发送到SSD1010时,性能评估工具1110的访问信息获取工具1111从OS1150接收日志作为指令(请求发送),当60h READ FPDMA QUEUED命令的Set Device Bit(设置装置位)(SDB)从SSD1010接收时,性能评估工具1110的访问信息获取工具1111从OS1150接收完成通知的日志以指示命令已完成。当RegHD中指定的所有请求数据从SSD1010接收到主机1100时,访问信息获取工具1111可在接收SDB之前接收完成通知。
而且,在SATA标准的61h WRITE FPDMA QUEUED命令中,当61hWRITE FPDMA QUEUED命令的RegHD从主机1100发送到SSD1010时,性能评估工具1110的访问信息获取工具1111从OS1150接收日志作为指令(请求发送),以及当61h WRITE FPDMA QUEUED命令的SDB从SSD1010接收时,性能评估工具1110的访问信息获取工具11111从OS1150接收完成通知的日志以指示命令已完成。当RegHD中指定的所有请求数据从主机1100发送到SSD1010时,访问信息获取工具1111可在SDB被接收之前接收完成通知。
除了命令未结束的异常时间之外,命令还有必要包括一对指令(请求发送)和响应(完成通知)。请求发送指示命令开始,以及响应(完成通知)指示命令结束,这样,它们之差指示执行命令所需的时间。
当通过多个线程执行对SSD1010的请求时,线程识别信息(队列ID)是用于区分线程的ID。该线程可以是在OS1150中管理的线程,也可以是在与SSD1010的接口中管理的线程。在与SSD1010的接口中管理的线程例如是SATA标准的原生指令排序(NCQ),在这种情况下,将0至31分配给队列ID。
命令内容信息例如是识别命令是写入命令还是读取命令的信息。例如,在使用SATA标准的情况下,可以更精细地对有关读取命令和写入命令的信息进行分类,例如,INCITS ACS-2中描述的60h READ FPDMAQUEUED、25h READ DMA EXT、C8h READ DMA等。在该实施例中,为了便于理解,获取该信息只是为了识别命令为写入命令还是读取命令。尽管可以获取写入命令和读取命令以外的命令的日志,但是在该实施例中,仅获取写入和读取命令的日志。在完成通知的情况下,可写入无效值(空)。
传输长度信息是指定从通过命令指定的头LBA起要读取(或要写入的)的长度的信息并且对应于SATA标准的逻辑扇区计数。例如,当传输长度在对LBA=0h的写入命令中为8h逻辑扇区时,从LBA=0h至LBA=7h的连续区域是写入目标,并且其写入数据量为8h逻辑扇区=4KiB。在完成通知的情况下,可写入无效值(空)。
LBA信息是有关命令指定的头LBA的信息。
性能评估工具1110的访问信息获取工具1111从OS1150接收的访问日志顺序存储在图67所示的主存储器1202的访问日志表1120中(另外还有记录方法或环形缓冲方法)。访问日志表1120例如具有图89所示的形式,并且包括时间戳(包括粗略时间戳和精细时间戳)、命令方向信息、线程识别信息(队列ID)、命令内容信息,传输长度信息、LBA信息等。如图90所示,访问日志表1120可由两个分开的日志构成,即,请求发送日志和完成通知日志。在图90中,省略LBA信息。
图91和图92示出通过访问信息获取工具1111另外将日志记录到访问日志表1120的过程。当访问信息获取工具1111检测到读取命令或写入命令被发送到SSD1010时(图91:步骤S1201),访问信息获取工具1111另外将对应于该命令的访问日志记录到访问日志表1120(步骤S1202)。而且,当访问信息获取工具1111检测到从SSD1010接收到对读取命令的响应或对写入命令的响应时(图92:步骤S1211),访问信息获取工具1111另外将对应于该命令响应的访问日志记录到访问日志表1120(步骤S1212)。
存储在访问日志表1120中的访问日志被性能评估工具1110的性能信息获取工具1112转换为性能日志信息,以便另外记录到存储在图67所示的主存储器1202的性能日志表1125。性能日志信息被定期进行计算(例如,每10秒)并且被另外记录到性能日志表1125作为预定时间段的性能信息。图93示出包括时间信息、总传输数据速率、读取传输数据速率、写入传输数据速率等作为记录元素的性能日志表1125的实例。在图93中,传输数据速率被记录为性能信息。另一方面,可记录诸如处理命令速率、响应时间、处理时间、和上述相对评分之类的其它性能。
在这种情况下,时间戳以秒或更长时间为单位管理。可将命令组(它是访问日志表1120中包括的性能计算目标)中最后一个完成的命令的完成时间用作性能日志表的时间戳。该时间戳可以小于秒的单位管理。替代最后一个完成命令的完成时间,可使用命令(对该命令首先发送指令请求)中的指令请求时间,或者可使用性能计算目标的时间范围中的开始时间和结束时间作为性能日志表的时间戳。
总传输数据速率(MiB/s)是从SSD1010读到主机1100的数据或从主机1100写入SSD1010的数据的传输数据速率。在图13中,总传输数据速率的单位为MiB/s,这表示每秒传输的数据量(单位:MiB)。当数据在性能计算目标时间段内根本不传输时,写入无效值(空(NULL))或者不添加该行。
读取传输数据速率(Mi/s)是从SSD1010读到主机1100的数据的传输数据速率。在图93中,读取传输数据速率的单位为MiB/s,这表示每秒传输的数据量(单位:MiB)。当数据读取在性能计算目标时间段内根本未完成时,写入无效值(空)。
写入传输数据速率(MiB/s)是从主机1100写入SSD1010的数据的传输数据速率。在图93中,写入传输数据速率的单位为MiB/s,这表示每秒传输的数据量(单位:MiB)。当数据写入在性能计算目标时间段内根本未完成时,写入无效值(空)。
访问日志由性能信息获取工具1112根据图94和图95所示的过程转换为性能日志。可采用图94和图95所示的过程中的任一者或者可采用图94和图95所示的过程这两者。
在图94所示的过程中,性能信息获取工具1112每预定性能计算时间段通过使用存储在访问日志表1120中的访问日志来计算性能,另外将所计算的性能记录到访问日志表1120。具体而言,当经过预定性能计算时间段(例如,10秒)时(步骤S1220),性能信息获取工具1112通过使用存储在访问日志表1120中的访问日志来计算性能日志信息,例如时间信息、总传输数据速率、读取传输数据速率和写入传输数据速率(步骤S1221),并且另外将所计算的性能日志信息记录到性能日志表1125(步骤S1222)。当性能日志信息被另外记录到性能日志表1125时,性能信息获取工具1112从访问日志表1120擦除用于计算性能的访问日志(步骤S1223)。
在图95所示的过程中,判定访问日志表1120的大小上限。当访问日志表1120的大小达到上限时,性能信息获取工具1112通过使用存储在访问日志表1120中的访问日志来计算性能,并且另外将所计算的性能记录到性能日志表1125。具体而言,当访问日志表1120的大小达到上限时(步骤S1230),性能信息获取工具1112通过使用存储在访问日志表1120中的日志来计算性能日志信息,例如,时间信息、总传输数据速率、读取传输数据速率和写入传输数据速率(步骤S1231),并且另外将所计算的性能日志信息记录到性能日志表1125(步骤S1232)。当性能日志信息被另外记录到性能日志表1125时,性能信息获取工具1112从访问日志表1120擦除用于计算性能的访问日志(步骤S1233)。
在图94和图95的过程的任一者中,用于计算性能的命令被从访问日志表1120擦除,这样,具有大数据大小的访问日志表1120顺序地转换为具有小数据大小的性能日志表1125。
当图94和图95所示的过程同时被使用时,例如可采用下面的方法。具体而言,性能信息获取工具1112每预定性能计算时间段计算性能日志,直到达到访问日志表1120的大小上限,当达到访问日志表1120的大小上限时,性能信息获取工具1112通过使用存储在访问日志表1120中的所有访问日志来计算性能日志,且在此时第一次擦除存储在访问日志表1120中的访问日志。而且,当擦除访问日志时,可仅擦除访问日志表1120的一部分,而非擦除访问日志表1120中的所有元素。在这种情况下,例如,期望从访问日志表1120的旧元素中顺序擦除元素。
以这种方式记录在性能日志表1125中的性能日志被性能信息获取工具1112监测。图96示出性能日志表1125的监测过程。性能信息获取工具1112判定性能日志表1125是否更新(步骤S1240)。当性能日志表1125更新时,性能信息获取工具1112在显示器1133上显示性能日志表1125的历史数据(步骤S1241)。图97示出在显示器1133上显示的性能日志信息的实例。在这种情况下,实时显示总传输数据速率,其中将时间作为横轴。当特定时间段内或更长时间段内没有对SSD1010的任何读取/写入访问时,如图98所示,期望在这段时间内隐藏图形或者清楚地显示在这段时间内无任何访问。
接下来,将详细地介绍性能信息获取工具1112执行的从访问日志到性能日志的转换。在该实例中,阐述计算总传输数据速率的情况。在读取传输数据速率情况下,仅使用读取命令日志(读取请求日志和读取完成日志),在写入传输数据速率的情况下,仅使用写入命令日志(写入请求日志和写入完成日志)。如图99所示,SSD1010在许多情况下被多个线程访问。图99示出具有最大线程数的情况,即32个线程。
在图99中,交叉阴影条和阴影条指示各线程中的命令活动状态,条左端指示命令的请求时间(开始时间),条右端指示命令的完成时间(结束时间)。例如,在第一方DMA读取(fp DMA读取)命令(SATA标准中原生命令排列(NCQ)的读取命令)的情况下,如图100A所示,命令的开始时间是从主机1100向SSD1010发送命令的向装置注册主机(RegHD)FIS(框架指令结构)的时间,命令的结束时间是主机1100从SSD1010接收设置装置位(SDB)FIS的时间。命令的结束时间可以是在接收SDB之前,主机1100完成从SSD1010接收在RegHD中指定的所有请求数据的时间(图100B)。
而且,在第一方DMA写入(fp DMA写入)命令(NCQ的写入命令)的情况下,如图101A所示,命令的开始时间是从主机1100向SD1010发送命令的向装置注册主机(RegHD)FIS的时间,命令的结束时间是主机1100从SSD1010接收设置装置位(SDB)FIS的时间。命令的结束时间可以是在接收SDB之前,主机1100完成将RegHD中指定的所有请求数据发送到SSD1010的时间(图101B)。
本发明甚至可应用于非NCQ命令,例如,在DMA读取命令的情况下,如图102A所示,命令的开始时间是从主机100向SSD1010发送命令的向装置注册主机(Register Host to Device)FIS的时间,命令的结束时间是主机1100从SSD1010接收向主机注册装置(Register Host toDevice)的时间。命令的结束时间可以是在接收SDB之前,主机1100完成从SSD10接收在RegHD中指定的所有请求数据的时间(图102B)。
而且,在DMA写入命令(非NCQ Write命令)的情况下,如图103A所示,命令的开始时间是从主机100向SSD1010发送命令的向装置注册主机FIS的时间,命令的结束时间是主机1100从SSD1010接收向主机注册装置FIS的时间。命令的结束时间可以是在接收SDB之前,主机1100完成将RegHD中指定的所有请求数据发送到SSD1010的时间(图103B)。而且,在该实施例中,描述使用SATA的情况,但是很明显,本发明也可应用于诸如SAS和USB之类的其它接口。
在图99中,时间t0、t1、t2和t3指示计算性能信息的时间。并非所有命令在计算性能信息之前完成,具有跨越由时间t0、t1、t2和t3划分的时间区域Δt1、Δt2、Δt3和Δt4存在的命令(例如,由阴影指示的条)。但是,在时间区域Δt1、Δt2、Δt3和Δt4的每一者中,针对SSD1010的命令并非总是活动的。正活动的命令指示该命令正在SSD1010中执行。命令不活动的时间段例如指示主机1100中的CPU1200正等待操作的时间段和等待用户操作的时间段。命令不活动的时间段例如为SSD1010的空闲状态、待机状态和休眠状态。
图104示出作为性能信息的传输数据速率的计算过程实例。在该过程中,计算传输数据速率,其中包括多个线程。换言之,传输数据速率通过综合判定多个线程进行计算。而且,该过程示出时间tn-1至时间tn之间的传输数据速率的计算过程,每性能计算时间段重复此过程。当计算开始被触发时,性能信息获取工具112读取访问日志表1120(步骤S1250)。性能信息获取工具1112基于记录在访问日志表1120中的时间信息,获取时间tn-1与时间tn之间的时间(命令不活动时间)(其中,对SSD1010的任何命令不活动)之和δn(步骤S1251)。在下文中,时间和δn被称为不活动总时间。在图99所示的实例中,命令在时间t0与时间t1之间的多个线程的任一线程中活动,因此δn=0。在时间t1与时间t2之间,存在δa作为命令不活动时间,因此δn=δa。在时间t2与时间t3之间,存在δb和δc作为命令不活动时间,因此δn=δb+δc。
接下来,性能信息获取工具1112从性能测量目标时间段中的结束时间tn减去性能测量目标时间段中的开始时间tn-1以获取性能测量目标时间段Δtn。此外,性能信息获取工具1112从性能测量目标时间段Δtn减去不活动总时间δn以获取有效性能测量目标时间段Δtn’(=Δtn-δn)(步骤S1252)。这样,该过程通过减去不活动总时间δn,允许性能信息获取工具1112从性能测量中排除SSD1010以外的因素,例如主机1100中CPU1200的操作时间和等待用户响应的时间段。
接下来,性能信息获取工具1112基于访问日志表1120中记录的信息获取命令列表(这些命令在时间tn-1与时间tn之间开始和完成)并通过求和它们的传输长度来计算总数据量(=S0)(步骤S1253)。而且,性能信息获取工具1112基于访问日志表1120中记录的信息获取命令列表(这些命令在作为上一时间段的时间tn-2与时间tn-1之间开始,且在作为当前时间段的时间tn-1与时间tn之间完成)并计算每个命令的数据量与由下面的方程式定义的贡献的乘积之总和(=S1)(步骤S1254)。
(贡献)=(时间tn-1与时间tn之间的命令活动时间)/(时间tn-2与时间tn之间的命令活动时间)
图105示出跨越两个时间段(t0至t1和t1至t2)存在的命令,其中B是时间t0与时间t1之间的命令活动时间,C是时间t1与时间t2之间的命令活动时间,A是时间t0与时间t2之间的命令活动时间。相对于该命令,时间t0与时间t1之间的时间段中的贡献为B/A,时间t1与时间t2之间的时间段中的贡献为C/A。通过这种方式,当前时间段中的命令(在上一时间段中开始,在当前时间段中结束)的数据量通过使用每个时间段中的活动时间按比例分配命令的总数据量来进行计算。
接下来,性能信息获取工具1112基于访问日志表1120中记录的信息获取命令列表(这些命令在作为当前时间段的时间tn-1与时间tn之间开始,在作为下一时间段的时间tn与时间tn+1之间完成)并计算每个命令的数据量与上述贡献的乘积之总和(S=2)(步骤S1255)。
此外,性能信息获取工具1112通过以下方程式计算传输数据速率(步骤S1256)。
(传输数据速率)=(S0+S1+S2)/Δtn’
在图104的过程中,通过参考性能测量目标时间段(tn-1至tn)之前和之后的一个时间段(tn-2至tn-1和tn至tn+1)来计算传输数据速率。当在性能测量目标时间段(tn-1至tn)中结束的命令在该性能测量目标时间段之前的n个时间段(n为自然数)开始时,可通过参考从性能测量目标时间段(tn-1至tn)至作为性能测量目标时间段(tn-1至tn)之前n个时间段的时间段来计算传输数据速率,其中采用类似于图105所示的方法的比例分配法。类似地,当在性能测量目标时间段(tn-1至tn)中开始的命令在该性能测量目标时间段之后的n个时间段(n为自然数)结束时,可通过参考从性能测量目标时间段(tn-1至tn)到作为性能测量目标时间段(tn-1至tn)之后n个时间段的时间段来计算传输数据速率。
图106示出作为性能信息的处理命令速率的计算过程实例。如上所述,处理命令速率是每单位时间发送到SSD1010以及从SSD1010接收的指令数。图106中的处理内容与在图104所示的传输数据速率计算中的一个命令的数据量被设定为1的情况完全相同。当计算开始被触发时,性能信息获取工具1112读取访问日志表1120(步骤S1260)。性能信息获取工具1112基于记录在访问日志表1120中的时间信息,获取时间tn-1与时间tn之间的时间(命令不活动时间)(其中针对SSD1010的任何命令均不活动)之和δn(步骤S1261)。
接下来,性能信息获取工具1112从性能测量目标时间段中的结束时间tn减去性能测量目标时间段中的开始时间tn-1以获取性能测量目标时间段Δtn。此外,性能信息获取工具1112从性能测量目标时间段Δtn减去不活动总时间δn以获取有效性能测量目标时间段Δtn’(=Δtn-δn)(步骤S1262)。接下来,性能信息获取工具1112基于访问日志表1120中记录的信息获取命令列表(这些命令在时间tn-1与时间tn之间开始和完成)并通过对列表中的命令计数来计算命令数(=S0)(步骤S1263)。而且,性能信息获取工具1112基于访问日志表1120中记录的信息获取命令列表(这些命令在作为上一时间段的时间tn-2与时间tn-1之间开始,在作为当前时间段的时间tn-1与时间tn之间完成)并以类似于上面的方式计算每个命令对当前时间段的贡献,从而计算贡献之总和(=S1)(步骤S1264)。接下来,性能信息获取工具1112基于访问日志表1120中记录的信息针对命令(这些命令在作为当前时间段的时间tn-1与时间tn之间开始,在作为下一时间段的时间tn与时间tn+1之间完成)执行类似的计算以计算贡献之总和(=S2)(步骤S1265)。此外,性能信息获取工具1112根据以下方程式计算处理命令速率(步骤S1266)。
(处理命令速率)=(S0+S1+S2)/Δtn’
图107示出作为性能信息的平均响应时间的计算过程实例。当计算开始被触发时,性能信息获取工具1112读取访问日志表1120(步骤S1270)。性能信息获取工具1112基于在访问日志表1120中记录的信息,获取命令数(=D)(这些命令在时间tn-1与时间tn之间的性能测量目标时间段期间完成)(步骤S1271),计算命令(这些命令在时间tn-1与时间tn之间完成)活动期间的总时间(=S)(步骤S1272),以及将S除以D,从而推导出平均响应时间(步骤S1273)。
在采用最大响应时间作为其它性能信息的情况下,通过性能信息获取工具1112参考访问日志表1120获取在时间tn-1与时间tn之间完成的命令当中的最大命令活动时间,获取最大响应时间。而且,可在计算命令响应时间时,使用应用或应用的各线程而非命令的活动时间来计算应用处理时间。在计算应用处理时间时,例如,当没有对SSD的访问时(例如,当等待CPU完成处理或等待用户输入时),期望从应用执行时间减去对SSD没有访问期间的时间来计算应用处理时间。而且,可通过在各种评分的计算过程中对上述各种评分或各种参数的结果执行加减乘除来获取相对评分。
如上所述,性能日志另外被记录到主机1100的主存储器1202。如果性能日志仅存储在主存储器1202中,则当主机1100的电源关断时,将丢失上面的信息。因此,如图108所示,性能信息获取工具1112可判定性能日志的大小是否已达到特定的指定值(步骤S1280)。当性能日志的大小已达到特定的指定值时(步骤S1280中的是),性能信息获取工具1112将性能日志记录在SSD1010或其它外部存储装置(例如,HDD和USB存储器)(步骤S1281),之后删除主存储器1202中存储的性能日志(步骤S1282)。在SSD1010中记录性能日志之后,存储在主存储器1202中的性能日志可以保留,而不必删除。当主机1100的电源先关断后接通时,性能评估工具1110再次将存储在SSD1010或其它外部存储装置中的性能日志读到主存储器1202。
也可应用图109所示的方法。具体而言,性能信息获取工具1112判定自上次存储性能日志起是否经过特定的时间段(例如,10分钟)(步骤S1290)。当经过特定的时间段时,性能信息获取工具1112将性能日志记录在SSD1010或其它外部存储装置(例如,HDD和USB存储器)中(步骤S1291),并且之后删除主存储器1202中存储的性能日志(步骤S1292)。在这种情况下,在SSD1010中记录性能日志之后,也可以保留存储在主存储器1202中的性能日志,而不必删除。
在图104所示的性能计算过程中,针对所有线程(例如,ATA标准的NCQ中的标签和OS中的线程)综合计算性能。另一方面,可针对每个线程计算性能信息。尤其是,当针对每个线程(例如,SSD的一部分)可以独立地控制对NAND存储器1020的访问时,期望针对每个线程获取性能信息。在下文中,示出针对每个线程计算总传输数据速率的情况作为每个线程的性能信息。可通过下面的方式计算其它性能指标(例如,读取传输数据速率、写入传输数据速率、处理命令速率、响应时间、处理时间和相对评分)作为性能信息。
图110是计算ATA标准的NCQ中每个标签的性能信息的实例。另一方面,可计算每个线程的性能信息,除了NCQ之外,例如还有OS1150中每个线程编号的性能信息和其它标准中每个线程的性能信息。在图110中,Q0、Q1、…以及Q31分别对应于ATA标准的NCQ中的标签编号=0、1、…以及31,从而使得线程(队列)总数为32。通过类似于图99的方式,交叉阴影条和阴影条分别指示线程中命令的活动状态,其中条左端指示命令的开始时间(例如,发送命令的RegHD的时间),条右端指示命令的结束时间(例如,接收命令的SDB的时间)。时间t0、t1、t2和t3指示计算性能信息的时间。阴影条指示跨越由时间t0、t1、t2和t3划分的时间区域而存在的命令。而且,如上所述,在时间区域Δt1、Δt2、Δt3和Δt4的每一者中,针对SSD1010的命令并非总是活动的,存在其中命令不活动的时间段δ,例如,主机1100中的CPU1200等待操作的时间段和等待用户操作的时间段。
在图104所示的程序中,通过综合判定所有线程来计算性能,这样,不活动时间段就是其中在多个线程中,没有任何针对SSD1010的命令是活动的时间段(请参阅图99中的δa、δb和δc)。当单独计算每个线程的性能信息时,如图110所示,任何不具有用于每个线程的条的时间段都是其中不执行命令的不活动时间段δ(δ1、δ2…)。因此,例如,时间t0与时间t1之间的时间段中的线程Q0的有效性能测量目标时间段Δtn’可通过计算Δt1-δ1来获取。而且,时间t0与时间t1之间的时间段中的线程Q1的有效性能测量目标时间段Δtn’可通过计算Δt1-(δ2+δ3)来获取。而且,时间t0与时间t1之间的时间段中的线程Q5的有效性能测量目标时间段Δtn’可通过计算Δt1-(δ4+δ5+δ6)来获取。
接下来,将参考图104介绍计算传输数据速率作为每个线程的性能信息的实例中的过程。当计算开始被触发时,性能信息获取工具1112读取访问日志表1120(步骤S1250)。性能信息获取工具1112基于记录在访问日志表1120中的时间信息,获取一个线程(在该实例中,线程Qx(x=0、1、2、…、31))中的时间tn-1与时间tn之间的不活动时间δ的时间之和δn(步骤S251)。接下来,性能信息获取工具1112从性能测量目标时间段中的结束时间tn减去性能测量目标时间段中的开始时间tn-1以获取性能测量目标时间段Δtn。此外,性能信息获取工具1112从性能测量目标时间段Δtn减去不活动总时间δn以获取有效性能测量目标时间段Δtn’(=Δtn-δn)(步骤S1252)。
接下来,性能信息获取工具1112基于访问日志表1120中记录的信息获取线程Qx的命令列表(这些命令在时间tn-1与时间tn之间开始和完成)并通过对它们的传输长度求和来计算总数据量(=S0)(步骤S1253)。而且,性能信息获取工具1112基于访问日志表1120中记录的信息获取线程Qx命令列表(这些命令在作为上一时间段的时间tn-2与时间tn-1之间开始,在作为当前时间段的时间tn-1与时间tn之间完成)并以类似于上面的方式计算每个命令对当前时间段的贡献,以计算每个命令的数据量与对应贡献的乘积之总和(=S1)(步骤S1254)。接下来,性能信息获取工具1112基于访问日志表1120中已记录的信息,通过对线程Qx的每个命令执行类似的计算(这些命令在作为当前时间段的时间tn-1与时间tn之间开始,在作为下一时间段的时间tn与时间tn+1之间完成)来计算贡献,从而计算每个命令的数据量与对应贡献的乘积之总和(S=2)(步骤S1255)。此外,性能信息获取工具1112根据以下方程式计算线程Qx中的当前时间段的传输数据速率(步骤S1256)。
(传输数据速率)=(S0+S1+S2)/Δtn’
针对每个线程重复地执行此处理。
图111示出当计算每个线程的传输数据速率时,性能日志表1125的实例。如图111所示,在性能日志表1125中,针对每个线程中的每个测量目标时间段记录总传输数据速率。可以计算总传输数据速率、读取传输数据速率和写入传输数据速率中的每一者,作为性能日志。备选地,可以计算传输数据速率、处理命令速率、响应时间、处理时间和相对评分中的每一者,作为性能日志。此外,可以将多个线程(队列)组合在一起,例如(Q1和Q2)和(Q3和Q4),并且可以针对每个组记录性能日志。采用类似于图97的方式,可以在显示器1133上通过图形显示性能日志。此外,采用类似于图98的方式,当在某个线程中对SSD1010在某个时间段或更长时间段内没有进行读/写访问时,期望隐藏该线程中该时间段的图,或者明确显示在该时间段内没有访问该线程。
通过这种方式,根据第九实施例,在主机1100的正常使用期间,主机1100获取软件1140或OS1150发送到SSD1010以及从SSD1010接收的命令的访问日志,将访问日志存储在访问日志表1120中,并且通过使用所存储的访问日志来计算有关SSD1010的性能信息,以便不会出现用于测量性能的特殊写入以及用于测量性能的特殊测量时间段。因此,可以正确获取外部存储装置的随时变化的性能信息,其非常接近于在实际使用时用户体验的性能,并且不会对外部存储装置的可靠性产生不利影响。此外,当使用时间信息计算性能信息时,使用通过排除针对外部存储装置的命令不活动之期间的时间而获取的有效时间信息,计算性能信息,以便可以正确获取外部存储装置的性能,而不会受到例如等待用户输入的时间段或者等待CPU或其它硬件响应的时间段的影响。仅当将性能日志存储在SSD1010中时,才向SSD1010进行额外写入。性能日志的数据大小非常小,以便对SSD1010的性能和可靠性的影响非常低,并且当性能信息获取时间间隔更长时,可以进一步减小其影响。
(第十实施例)
在第十实施例中,将性能日志分类为顺序访问(顺序读取和顺序写入)和随机访问(随机读取和随机写入),并且根据传输长度(数据长度)进一步分类。图112示出应用第十实施例的性能日志表1125,并且示出数据传输速率作为性能信息。如图112所示,将性能日志表1125分类为四个表,即,顺序读取、顺序写入、随机读取和随机写入。此外,根据多个不同的传输长度对每个表进行分类。例如,SSD1010的性能在以下两种情况之间变得不同:每传输长度=4KiB(这是小的大小)执行顺序访问的情况,以及每传输长度=128KiB(这是相对大的大小)执行顺序访问的情况,以便本实施例根据传输长度执行性能分类。
图113示出识别将访问日志信息分类为顺序访问还是随机访问的过程的实例。性能信息获取工具1112读取按时间顺序记录在访问日志表1120中的访问日志信息,根据访问日志信息是读取命令还是写入对每个访问日志信息进行分类,并且根据传输长度进一步分类(步骤S1300)。接下来,针对根据读取命令或写入命令和传输长度分类的一个组,性能信息获取工具1112判定包括在访问日志信息中的命令的LBA是否与通过以下操作获取的结果相同:将在上一个访问日志信息中包括的传输长度加到在上一个访问日志信息中包括的命令的LBA(步骤S1301)。当LBA与结果相同时,将访问日志信息分类为顺序访问(步骤S1303)。此外,当步骤S1301中的判定为“否”时,性能信息获取工具1112判定在紧接在该访问日志信息之后的访问日志信息中包括的命令的LBA是否与通过以下操作获取的结果相同:将包括在访问日志信息中的传输长度加到包括在访问日志信息中的命令的LBA(步骤S1302)。当LBA与结果相同时,将访问日志信息分类为顺序访问(步骤S1303),并且当LBA与结果不相同时,将访问日志信息分类为随机访问(步骤S1304)。针对每个分类的组执行这种处理。
在上面的处理中,当具有多个线程时,期望通过综合判断线程,判定将访问日志信息分类为顺序访问还是随机访问。此外,在当前命令和下一个命令的LBA的连续性对于预定数量的命令或更多命令持续时,可以将访问日志信息确定为顺序访问,并且在连续性对于预定数量的命令或更多命令未持续时,可以将访问日志信息确定为随机访问。此外,在当前命令和下一个命令的LBA的连续性对于预定数据大小或更多数据大小持续时,可以将访问日志信息确定为顺序访问,并且在连续性未持续预定数据大小或更多数据大小时,可以将访问日志信息确定为随机访问。
在步骤S1301,不必根据传输长度对组进行分类,并且可以包括所有传输长度来计算性能。
根据第十实施例,因为将性能日志分类为顺序访问或随机访问,可以针对每个顺序访问和随机访问单独评估SSD的性能。此外,因为根据传输长度对性能日志进行分类,可以针对每个传输长度单独评估SSD的性能。(第十一实施例)
在第十一实施例中,性能信息获取工具1112基于实时监测的性能信息检测SSD1010的性能降低,并且执行处理以便恢复SSD1010的性能。如上所述,当SSD1010的性能降低时,传输数据速率下降,处理命令速率下降,响应时间增加,并且处理时间增加。相对评分下降取决于每个评分值定义。可以通过将性能数据与边界条件比较,检测SSD1010的性能降低。边界条件例如是传输数据速率的下限、处理命令速率的下限、响应时间的上限、处理时间的上限、或者相对评分的阈值。当SSD1010的传输数据速率小于传输数据速率的下限时,SSD1010的性能降低。当处理命令速率小于处理命令速率的下限时,SSD1010的性能降低。当响应时间大于响应时间的上限时,SSD1010的性能降低。当处理时间大于处理时间的上限时,SSD1010的性能降低。当相对评分超过相对评分的阈值时,SSD1010的性能降低。在下面,仅描述传输数据速率的情况,但可以在其它性能指数的情况下执行类似的处理。此外,例如可以基于在设计SSD时的预期设计值或者提供给客户的最低规范,确定每个边界条件值。
图114示出当传输数据速率变得低于下限时,通过发出删除通知(例如,TRIM命令)来恢复性能的过程。性能信息获取工具1112根据性能日志表1125中存储的信息,判定传输数据速率是否变得低于下限(步骤S1310)。当传输数据速率变得低于下限时,性能信息获取工具1112从OS1150获取文件管理信息(OS1150的元数据),根据获取的文件管理信息,获取其中数据对于OS1150无效的LBA区域中的LBA(步骤S1311),并且向获取的LBA区域发出删除通知(例如,TRIM命令)(步骤S1312)。因此,SSD1010中的空闲块数量增加,因此恢复SSD1010的性能。
图115示出当传输数据速率变得低于下限时,通过在主机1100上执行磁盘碎片整理来恢复性能的过程。当传输数据速率变得低于下限时(步骤S1320),性能信息获取工具1112例如通过使用安装在主机1100中的文件优化工具(碎片整理工具),在主机1100中执行碎片整理(步骤S1321)。通常,如图116A所示,随着外部存储装置使用的发展,文件或空闲空间的LBA成碎片。OS1150通常以文件为单位管理用户数据,并且在某些情况下,相同文件中的数据存储在不连续的LBA区域中(图116A中所示的文件“a.dat”)。此时,当读取成碎片的文件“a.dat”时,需要将读取命令分给每个LBA区域,从而读取性能降低。在碎片整理功能中,将成碎片的数据重新定位到连续LBA区域以便消除成碎片的状态,如图116B所示。这种通过碎片整理进行的性能恢复具有的作用是:减少要在非易失性存储装置1010中处理的读取命令的数量。因此,例如对于其它非易失性存储装置(例如硬盘驱动器以及包括作为存储介质的NAND闪存的SSD)很有用。此外,在硬盘驱动器中,如果作为读取目标的LBA区域成碎片,则头查找操作的数量增加并且性能降低,从而碎片整理有效。
如图116C所示,在OS1150的文件管理表中的未存储数据的LBA区域(空闲空间)在不连续的LBA区域上成碎片,这是由于用户使用该区域。在这种状态下,当用户新生成并且更新文件时,OS1150在某些情况下分配成碎片的LBA区域以进行数据写入。此时,否则向连续LBA区域仅一次写入完成的写入操作在某些情况下导致写入到多个成碎片的LBA区域,从而使写入性能降低。在碎片整理功能中,如图116D所示,重新定位LBA以便将用户数据移动到成碎片的空闲空间以填充成碎片的空闲空间,从而消除空闲空间的碎片。因此,提高外部存储装置的写入性能。这种通过碎片整理进行的性能恢复具有的作用是:减少要在非易失性存储装置1010中处理的写入命令的数量。因此,例如对于其它非易失性存储装置(例如硬盘驱动器以及包括作为存储介质的NAND闪存的SSD)很有用。此外,在硬盘驱动器中,如果作为写入目标的LBA区域成碎片,则头查找操作的数量增加并且性能降低,从而碎片整理有效。
图117示出当传输数据速率变得低于下限时,通过将指令发送到SSD1010以强制执行NAND GC处理来恢复性能的过程。例如可以通过INCITS ACS-2中描述的SCT Command Transport(SCT命令传输)、对于供应商唯一的命令等执行指令。当传输数据速率变得低于下限时(步骤S1330),性能评估工具1110将指令发送到SSD1010以使SSD1010执行NAND GC处理(步骤S1331)。因此,在SSD1010中执行NAND GC处理,并且空闲块数量增加,从而恢复SSD1010的性能。
图118示出在传输数据速率变得低于下限时通过以下操作恢复性能的过程:通过在某个时间段或更长时间段内禁止软件1140或OS1150将任何指令发送到SSD1010,或者禁止软件1140或OS1150将介质访问命令(用于访问NAND存储器1020的命令,例如写入命令、读取命令)发送到SSD1010,使得在SSD1010中执行上述自动NAND GC处理。当传输数据速率变得低于下限时(步骤S1340),性能信息获取工具1112在某个时间段或更长时间内禁止软件1140或OS1150将任何指令发送到SSD1010,或者禁止软件1140或OS1150将介质访问命令发送到SSD1010(步骤S1341)。通过这种方式使得在SSD1010中执行NAND GC处理,以便SSD1010中的空闲块数量增加,从而恢复SSD1010的性能。
图119示出硬盘驱动器(HDD)的传输数据速率的LBA依赖性。通常,在HDD中,具有较小LBA的数据位于HDD磁盘的外周边,具有较大LBA的数据位于HDD磁盘的内周边。因为磁盘的角速度恒定,在HDD的外周边,头在每单位时间通过的位数量较大,在HDD的内周边,头在每单位时间通过的位数量较小。因此,如图119所示,当LBA变得较大时性能降低。
图120示出在采用HDD作为外部存储装置的情况下性能恢复的过程。当传输数据速率变得低于下限时(步骤S1350),性能信息获取工具1112将具有大LBA的数据移动到具有小LBA的空闲LBA空间(步骤S1351)。因此,可以恢复HDD的性能降低。
如上所述,当传输数据速率变得低于下限时,可以通过传输各种命令或者控制SSD以优化SSD,恢复SSD的性能。本实施例的优化功能并不限于在本实施例中描述的优化功能的特定实例。
当超过上面使用的边界条件值时,可以向用户显示警告消息,而不是执行上述性能优化。此外,可以在外部存储装置的设计阶段将上述边界条件值(例如上限和下限)设置为固定值,或者可以在以后动态变更。例如,如果即使通过执行上面的优化也未恢复性能,或者如果太频繁地进行优化,则性能信息获取工具1112可以增加上限(减小下限)。将动态边界条件值存储在如图121所示的主机1100的主存储器1202中。在图121中,在主存储器1202中提供存储边界条件值的边界条件值存储区域1126。此外,如图122所示,当边界条件改变时(步骤S1360),性能评估工具1110可以将改变的边界条件值存储在SSD1010中(步骤S1361),以便防止在计算机系统断电时值丢失。
当判定边界条件值时,可以根据存储在性能日志表1125中的过去性能信息计算边界条件。例如,如果将第一次供电之后的预定时间段(例如,1个月)内的平均性能信息存储在SSD1010中,并且例如使用该平均性能信息的0.8倍作为边界条件,则当性能从紧接在运送之后的性能降低20%时,对SSD1010执行上面的优化。
(第十二实施例)
在上面的实施例中,性能评估工具1110被配置为以便访问信息获取工具(访问信息获取程序)1111总是监测有关软件1140的访问信息,并且还将访问信息记录到访问日志表1120。另一方面,当主机1100的CPU性能极低时,并且当访问信息获取工具1111导致的CPU负荷高时,可以降低获取访问信息的频率以便提高OS1150和软件1140的计算处理效率。因此,当性能评估工具1110的性能信息获取工具1112定期从OS1150获取CPU利用率时,如果主机1100的CPU利用率是预定值或更高值,则可以卸载访问信息获取工具1111以便不获取访问日志。
图123示出性能信息获取工具1112根据CPU利用率卸载和重新载入访问信息获取工具1111的过程。在启动主机1100之后,启动性能评估工具1110的性能信息获取工具1112,并且性能信息获取工具1112载入访问信息获取工具1111(步骤S1570)。性能信息获取工具1112定期从OS1150获取CPU利用率,并且判定CPU利用率是否是预定值J1(例如,80%)或更高值(步骤S1571)。当CPU利用率是预定值J1或更高值时,性能信息获取工具1112判定CPU负荷过高,并且卸载(或禁用)访问信息获取工具1111以便优先处理其它应用(步骤S1572)。此后,性能信息获取工具1112定期从OS1150获取CPU利用率,并且判定CPU利用率是否是预定值J2(例如,60%)或更低值(步骤S573)。当CPU利用率是预定值J2或更低值时,性能信息获取工具1112判定CPU负荷减少,并且重新载入访问信息获取工具1111以便继续获取访问日志(步骤S1570)。
预定值J1和J2期望具有J1>(J2+余量)的关系,以便防止频繁切换载入和卸载访问信息获取工具1111,并且防止切换本身成为主机1100的负担。例如,将余量设置为大约20%。此外,期望使用于在步骤S1573中获取CPU利用率的时间间隔长于用于在步骤S1571中获取CPU利用率的时间间隔,以便防止当CPU负荷高时,监测本身成为CPU的负担。
图124示出性能信息获取工具1112以规则的时间间隔卸载和重新载入访问信息获取工具1111的过程。在载入访问信息获取工具1111(步骤S1580)之后,性能信息获取工具1112判定是否经过特定时间段(例如,1小时)(步骤S1581)。当经过该特定时间段时,性能信息获取工具1112卸载访问信息获取工具1111(步骤S1582)。此后,性能信息获取工具1112判定是否经过特定时间段(例如,1小时)(步骤S1583)。当经过该特定时间段时,性能信息获取工具1112重新载入访问信息获取工具1111并且继续获取访问日志(步骤S1580)。通过这种方式,以规则的时间间隔切换获取访问日志的时间段和不获取访问日志的时间段。
尽管描述了特定的实施例,但这些实施例仅通过举例的方式提供,并且并非旨在限制本发明的范围。实际上,可以以各种其它形式体现在此描述的新颖实施例;此外,在不偏离本发明的精神的情况下,可以在此处描述的实施例的形式方面做出各种省略、替换和变更。所附权利要求及其等同物旨在涵盖属于本发明的范围和精神内的此类形式或修改。