用于使引导操作系统加速的快速引导列表的制作方法

文档序号:6499566阅读:144来源:国知局
用于使引导操作系统加速的快速引导列表的制作方法
【专利摘要】本公开涉及用于使引导操作系统加速的快速引导列表。一种用于引导到存储在固态驱动器上的操作系统的方法。该方法包含下列步骤:(A)确定引导列表是否具有一个或多个条目;(B)从引导列表预先读取每个条目的一个或多个逻辑块地址;(C)从主机接收命令;(D)如果命令是在预先读取的逻辑块地址的高速缓存区中,则从固态驱动器内部的内存读取命令;和(E)如果命令不在高速缓存中,则从固态驱动器的主要部分读取命令。
【专利说明】用于使引导操作系统加速的快速引导列表
【技术领域】
[0001]本发明一般涉及内存存储设备,并且尤其涉及一种用于实施快速引导列表以使操作系统的引导加速的方法和/或装置。
【背景技术】
[0002]当传统计算机从驱动器引导时,主机将首先从驱动器读取操作系统(OS)文件。一旦OS文件最初已经被安装到驱动器上,(诸如windows、Linux等),OS文件就很少被修改并被保留在一些固定的逻辑块地址(LBA)区中。从引导驱动器读取OS文件至主机要花费时间,即使在使用固态驱动器(SSD)时也是如此。传统上,当引导驱动器被引导时,引导驱动器将等待主机发送读取命令。一旦引导驱动器从主机接收到读取命令,引导驱动器将读取数据,然后将数据发送给主机。这种引导顺序(boot sequence)从传统的硬盘(legacyhard disks)获得,所以存取地址仍旧是至逻辑块地址(LBA)。用于OS的引导程序(bootprocedure)可以被看作为读取许多LBA。

【发明内容】

[0003]本发明涉及一种用于引导到存储在固态驱动器上的操作系统的方法。该方法包含下列步骤:(A)确定引导列表是否具有一个或多个条目(entry),(B)从引导列表预先读取每个条目的一个或多个逻辑块地址,(C)从主机接收命令,(D)如果命令是在预先读取的逻辑块地址的高速缓存区中,则从固态驱动器内部的内存(memory)读取命令,和(E)如果命令不在高速缓存中,则从固态驱动器的主要部分读取命令。
【专利附图】

【附图说明】
[0004]从下面详细的描述和所附权利要求以及附图,本发明的实施例将是清晰的,其中:
[0005]图1是本发明的内容的框图;
[0006]图2是本发明的一个实施例的流程图;
[0007]图3是本发明的一个实施例的流程图;
[0008]图4是本发明的一个实施例的流程图;
[0009]图5是本发明的一个实施例的流程图;和
[0010]图6不出LBA的组织结构(organization)图。
【具体实施方式】
[0011]本发明的实施例可以包括提供一种用于实施引导顺序的系统或方法,其可以(i)在固态驱动器(SSD)中使用,(ii)减少从SSD引导操作系统(OS)所需的时间,和/或(iii)在对是引导顺序的SSD进行存取或对是正常读操作的SSD进行存取之间进行区分。
[0012]本发明的一个实施例可以使引导操作系统(OS)加速,尤其是实施在固态驱动器(SSD)上时。可以产生记录许多逻辑块地址(LBA)的快速引导列表,在计算机(或设备)的引导顺序期间主机将读取逻辑块地址(LBA)。列表将被保存于驱动器中的NAND闪存(或其他非易失性内存)中。
[0013]当引导计算机(或设备)时,SSD首先将预先读取引导列表中的LBA,以从引导驱动器读取OS数据。在正常操作期间,几乎所有的主机读取都将是高速缓存-命中的(cache-hit),所以对引导驱动器的控制差不多立即可以将数据返回到主机。
[0014]参考图1,例不本发明的一个实施例的系统70的框图被显不。系统70 —般包含装置80和块(或电路)82。在一个示例中,系统块82可以被实施为设备(或主机),诸如具有非易失性内存电路的移动计算设备。然而,也可以实施其他类型的设备以满足特定实施方式的设计标准。设备80—般包含固态驱动器(SSD)。设备80—般包含块(或电路)84和块(或电路)86。电路84可以包括块(或电路)96。块84被显示为控制器。块96被显示为内存。内存96可以存储固件98,或用于控制电路84和/或电路86的其他软件。固件98可以操作控制器84并包括所描述的快速引导操作。
[0015]在一个实施例中,内存96可以包括用于保持引导列表的高速缓存区。在另一个实施例中,单独的高速缓冲内存可以被实施在控制器电路84上以保持引导列表。高速缓冲内存的特定位置可以变化成满足特定实施方式的设计标准。总之,高速缓存区可以被实施为静态随机存取内存(SRAM)。然而,用于实施高速缓存区的特定类型的内存可以变化成满足特定实施方式的设计标准。
[0016]可以通过电路82产生信号(例如REQ)。可以通过电路84接收信号REQ。信号REQ可以是请求信号,该信号可以用于从电路86存取数据。可以通过电路84产生要提供给电路86的信号(例如I/O)。信号REQ可以包括一个或多个地址位。信号(例如DATA)可以是通过电路82接收的一个或多个数据部分。
[0017]电路82被显示成实施为主机电路。电路82从电路86读取数据和向电路86写数据。电路86—般被实施为诸如NAND闪存的非易失性内存电路。然而,也可以实施其他类型的内存(例如,或闪存等)以满足特定实施方式的设计标准。电路86可以包括许多模块90a-90n。模块90a_90n可以被实施为NAND闪存芯片。在一些实施例中,电路86可以是NAND闪存设备。在其他实施例中,电路84和/或电路86可以被实施为具有一个或多个非易失性设备的固态驱动器的全部或一部分。电路86 —般可操作成在非易失的情况下存储数据。当从电路86读取数据时,电路82可以存取在信号REQ中被识别的一组数据(例如,多位)。在一个示例中,模块90a-90n可以是硬连线至印刷电路板(PCB)的预制模块。在另一个示例中,模块90a-90n可以是可去除模块,其可以用于增加或减少电路86的总尺寸。在一个实施例中,电路86可以包括可去除和/或不可去除的模块90a-90n两者。此外,每个模块90a-90n都可以包括许多个单独的内存元件(element) 92a_92n。
[0018]参考图2,图2显示过程100的图示。过程100 —般包含步骤(或状态)102、判断步骤104、步骤(或状态)106、步骤(或状态)108、步骤(或状态)110、步骤(或状态)112、步骤(或状态)114。步骤102可以是开始状态,步骤104可以确定引导列表是否为空。如果是,则方法100移动到状态106。状态106运行一个顺序以装入(populate)引导列表。如果状态104确定引导列表不为空,则方法100移动到状态108。状态108确定引导操作系统的顺序是应该来自高速缓存区还是来自SSD的NAND元件。如果方法100从NAND元件引导,则方法100移动到状态110。如果方法100从高速缓存区引导,则当OS从高速缓存引导时,方法移动到状态112。状态110和/或状态112都移动到状态114,在状态114处数据被返回到主机82。
[0019]方法100将上电后的前N秒看作OS “载入”时间。在载入时间期间,主机82将读取OS文件。在载入时间内被读取的全部LBA都可以被记录至快速引导列表,其通常被写至NAND。在随后的上电操作期间,SSD固件98将预先读取这个快速引导列表中的所有LBA。当主机82读取OS文件,并且来自主机82的全部读取都是高速缓存命中的时,来自SSD的内部RAM的数据被发送给主机82,这可节省时间。
[0020]方法100在引导文件的LBA与OS的LBA之间进行区分。方法100采用一般基于日志的(log-based)手段。例如,可以设置规定的记录时间(例如N秒)。在一个示例中,记录时间可以被设置为10秒。然而,特定记录时间可以变化成满足特定实施方式的设计标准。例如,5和15秒之间的时间可能是适当的。SSD固件98保持在驱动器引导之后前N秒内存取的全部LBA的列表。列表被保存于NAND闪存媒介。当下一次对OS的引导发生时,SSD固件98从NAND闪存媒介取回列表,然后预先读取列表中记录的全部LBA。在随后的OS引导中大部分LBA读取都将是高速缓存命中的。如果在OS引导程序期间高速缓存缺失,则新LBA可以被添加到列表中。
[0021]参考图3,图3显示出步骤(或子例程)106的更详细的流程图。子例程106 —般包含步骤(或状态)120、步骤(或状态)122、判断步骤(或状态)124、判断步骤(或状态)126,以及步骤(或状态)128和状态110。步骤120开始引导列表记录程序。步骤122等待来自主机82的命令。判断步骤124确定是否已经从主机82接收到命令。如果否,则子例程106返回到步骤122。如果是,则子例程106移动到判断步骤126。判断步骤126确定N秒是否已经过去。一般而言,N可以是被指定为引导时间的预定时间量。如果N秒已经过去,则子例程106移动到状态110。如果否,则子例程106移动到状态128。在步骤128中,子例程106将一个或多个逻辑块地址添加到快速引导列表。接下来,子例程106移动到状态110,状态110从闪存媒介86的NAND元件读取数据。
[0022]参考图4,图4显示出子例程108流程图。子例程108—般包含步骤(或状态)130、步骤(或状态)132、判断步骤(或状态)134、判断步骤(或状态)136、状态112和状态114。状态130可以从引导列表预先读取LBA。状态132可以等待来自主机82的命令。判断状态可以确定是否已经从主机82接收到命令。如果否,则子例程108返回到步骤132。如果是,则子例程108移动到判断状态136。判断状态136确定高速缓存命中(cache hit)是否已经发生。如果是,则子例程108移动到步骤112并从高速缓存读取。如果否,则子例程108移动到步骤114,步骤114将数据返回到主机82。
[0023]参考图5,图5显示出方法200的流程图,图中示出系统80的总体操作。方法200 —般包含步骤(或状态)202、步骤(或状态)204、步骤(或状态)206以及步骤(或状态)208。步骤202 —般包含系统上电模式。步骤208 —般包含SSD上电和最初的模式。步骤206 —般包含读取快速引导列表。步骤208 —般处理快速引导列表。
[0024]参考图6,图6显示出LBA空间的组织结构图。一般而言,LBA空间包括主引导区(MBA)(或主引导记录)、许多引导文件、许多系统文件、和许多用户数据文件。引导文件和系统文件一般被视为操作系统文件,它们被显示为整个LBA空间的子集。LBA空间可以是存储在闪存媒介86中的LBA的图形表示。MBA可以包括与盘分区有关的信息和/或可以包括用于载入操作系统文件的小程序。当OS开始引导过程时引导文件可以被读取。引导文件一般被存储在快速列表中。其余的系统文件可以被操作系统使用,但并非必须在引导过程期间。例如,帮助文件、或并非例行使用的其他驱动器可以是操作系统的一部分,但并非是快速引导列表中必须的。存储在快速引导列表中的特定文件可以变化成满足特定实施方式的设计标准。例如,如果特定驱动器被频繁使用,但对引导操作而言并非是必要的,则所描述的过程将这种驱动器载入到快速引导列表中。
[0025]系统80、和/或方法100的整体操作可以总结如下。系统80上电。SSD 86上电和初始化。SSD固件98从SSD 86媒介读取快速引导列表。系统检查快速引导列表是否为空。如果快速引导列表为空,则SSD将进入快速引导列表记录状态。在这个状态中,SSD将记录主机82在前N秒内读取的LBA (例如,这里N是可变的,通常为10秒)。如果快速弓I导列表不为空,则SSD将从列表预先读取全部LBA至闪存86。然后主机82等待发送命令。在从主机82接收到读取命令后,对接收到命令的时间进行检查以确定是否是在自引导开始的前N秒内接收到命令。接着,对主机82想要读取的数据是否已经被预先读取执行检查。如果高速缓存命中发生,则数据从RAM 86被直接返回到主机82。如果时间是在前N秒内,则LBA被记录,以便从快速引导列表读取。然后数据从内部RAM被读取。用户数据从NAND86被读取。用户数据被返回到主机82。
[0026]在通常可以买到的NAND闪存(例如,使用25nm工艺)中,一页是8KB,并且一块含有256页。读取一页需要的最大时间是75us。将8KB的数据转移出去将需要40us。读取一页并将数据转移出去通常需要大约lOOus。如果读取命令解码和将一个LBA翻译成NAND页需要40us,则从SSD将一个LBA数据转移到主机82需要lus。典型的OS引导读取含有在100,000 LBA范围内的文件。在快速引导操作期间90%的LBA通常导致高速缓存命中。
[0027]不用方法100,正常引导时间将大约是14秒((100us+40us+lus)*100000LBA=14.1s)。用方法100,快速引导时间将在几秒范围内((100us+40us+lus)*100000LBA*10%+(40us+lus)*100000LBA*90%=5.1s)。通过实施方法100,用于OS的引导速度可以在63.83%的范围内得到提闻。
[0028]虽然已经将驱动器80描述为固态驱动器,但是本发明的一个或多个实施例可以实施在硬盘驱动器(HDD)中。虽然快速引导操作的优点在HDD中可能有用,但是当用SSD实施时快速引导操作可以甚至更显著。然而,可以使用任何一种实施方式。
[0029]当在本文中结合“是(单数或复数)”和动词使用时,术语“可以”和“一般而言”意味着表达这样的意图,即,描述是示例性的,并且被认为宽到既足以涵盖在本公开中提供的指定示例又足以涵盖基于本公开能够推演的可替换示例。如在本文中使用的术语“可以”和“一般而言”不应该被解释为必须暗含省略相应的元素的愿望和可能性。
[0030]可以使用一个或多个传统的通用处理器、数字计算机、微处理器、微控制器、RISC(精简指令集计算机)处理器、CISC (复杂指令集计算机)处理器、SMD (单指令多数据)处理器、信号处理器、中央处理单元(CPU)、算术逻辑单元(ALU)、视频数字信号处理器(VDSP)、和/或根据说明书的教义进行编程的类似的计算机器实施通过图2-5的图示执行的功能,正如对相关领域技术人员而言将显而易见的那样。适当的软件、固件、编码、例程、指令、操作码、微代码、和/或程序模块可以易于由熟练的编程者基于本公开的教导进行准备,对相关领域技术人员而言也将是明显的。一般由机器实施方式的一个或多个处理器从一个媒介或几个媒介执行软件。
[0031]还可以通过制备的ASIC (专用集成电路)、平台ASIC、FPGA (现场可编程门阵列)、PLD (可编程逻辑器件)、CPLD (复杂可编程逻辑器件)、门海、FRIC (射频集成电路)、ASSP (专用标准产品)、一个或多个单块集成电路、被安排成倒装芯片模块和/或多芯片模块的一个或多个芯片或裸片(die),或通过使传统组件电路的适当网络互连而实施本发明,正如在本文中描述的那样,它们的更改对本领域技术人员而言将是显而易见的。
[0032]因此本发明还包括计算机产品,其可以是包括指令的存储媒介或媒介和/或传输媒介或媒介,指令可以用于对机器编程以执行依据本发明的一个或多个过程或方法。通过机器执行含在计算机产品中的指令,连同周围电路的操作一起,可以将输入数据变换成存储媒介上的一个或多个文件和/或表示物理对象或本体的一个或多个输出信号,诸如声音和/或视觉描述。存储媒介可以包括、但不限于,包括软盘、硬盘驱动器、磁盘、光盘、⑶-ROM、DVD和磁光盘在内的任何类型的盘,和诸如ROM (只读内存)、RAM (随机存取内存)、EPROM (可擦除可编程ROM)、EEPROM (电可擦除可编程ROM)、UVPROM (紫外线可擦除可编程ROM)、闪存、磁卡、光学卡在内的电路,和/或适于存储电子指令的任何类型的媒介。
[0033]本发明的元件可以形成一个或多个设备、单元、组件、系统、机器和/或装置的一部分或全部。设备可以包括、但不限于,服务器、工作站、存储阵列控制器、存储系统、个人计算机、膝上型计算机、笔记本计算机、掌上型计算机、个人数字助理、便携式电子设备、电池供电设备、机顶盒、编码器、解码器、代码转换器、压缩器、解压缩器、预处理器、后处理器、发射器、接收器、收发器、密码电路、蜂窝电话、数字照相机、定位和/或导航系统、医疗设备、平视显示器、无线设备、声音记录、声音存储和/或声音重放设备、视频记录、视频存储和/或视频重放设备、游戏平台、外围和/或多芯片模块。相关领域技术人员将理解本发明的元件可以被实施在其他类型的设备中以满足特定应用的标准。
[0034]虽然已经参考本发明的实施例显示和描述了本发明,但是本领域技术人员将理解可以不脱离本发明的范围而对形式和细节做出不同的改变。
【权利要求】
1.一种用于引导到存储在固态驱动器上的操作系统的方法,包含下列步骤: (A)确定引导列表是否具有一个或多个条目; (B)从所述引导列表预先读取每个所述条目的一个或多个逻辑块地址; (C)从主机接收命令; (D)如果所述命令是在所述预先读取的逻辑块地址的高速缓存区中,则从固态驱动器内部的内存读取所述命令;和 (E)如果所述命令不在所述高速缓存中,则从所述固态驱动器的主要部分读取所述命令。
2.根据权利要求1所述的方法,其中如果步骤(A)确定所述引导列表不具有任何条目,则执行下列步骤: 确定是否已经从主机接收到命令; 确定预定时间量是否已经 过去;和 如果所述预定时间量已经过去,则将一个或多个逻辑块地址添加到引导列表。
3.根据权利要求1所述的方法,其中如果步骤(A)确定所述引导列表具有条目,则执行下列步骤: 确定哪个所述命令是在所述预先读取的部分中;和 从所述预先读取的部分读取所述命令。
4.根据权利要求1所述的方法,其中在NAND媒介中实施所述固态驱动器的所述主要部分以及所述固态驱动器的所述高速缓存区。
5.根据权利要求1所述的方法,其中所述固态驱动器包含可引导的驱动器,其被配置成将信息存储在按照所述逻辑块地址组织的多个NAND/媒介位置中。
6.根据权利要求1所述的方法,其中所述方法允许在所述引导顺序已经完成后,从主机对所述固态驱动器进行存取。
7.根据权利要求1所述的方法,其中所述固态驱动器包含控制器部分和闪存媒介部分。
8.根据权利要求7所述的方法,其中所述控制器包括被配置成存储所述引导列表的内存。
9.根据权利要求8所述的方法,其中所述内存还包括被配置成控制所述固态驱动器的固件。
10.一种装置,包含: 固态驱动器的控制器,其被配置成从主机设备发送和接收信息;和所述固态驱动器的内存区,其被配置成通过所述控制器进行存取,其中所述控制器通过下列步骤引导操作系统:(i)确定引导列表是否具有一个或多个条目,(ii)从所述引导列表预先读取每个所述条目的一个或多个逻辑块地址,(iii)从主机接收命令,(iv)如果所述命令是在所述预先读取的逻辑块地址的高速缓存区中,则从所述固态驱动器内部的内存读取所述命令,和(V)如果所述命令不在所述高速缓存中,则从所述固态驱动器的主要部分读取所述命令。
11.根据权利要求10所述的装置,其中所述高速缓冲内存被实施为所述控制器的一部分。
12.根据权利要求10所述的装置,其中所述高速缓冲内存被实施为所述闪存媒介的一部分。
【文档编号】G06F12/08GK103970675SQ201310033786
【公开日】2014年8月6日 申请日期:2013年1月29日 优先权日:2013年1月29日
【发明者】马利昭, 董智敏, 吴建刚, 袁戎, 张磊 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1