用于非易失性存储器的优化的冷引导的制作方法

文档序号:6485398阅读:173来源:国知局
用于非易失性存储器的优化的冷引导的制作方法
【专利摘要】各种实施例针对用于更快的固态驱动器(SSD)启动的装置和方法。在启动时,SSD控制算法可以加载上下文的非逻辑到物理(L2P)部分并且发信号通知系统:SSD就绪。上下文可以包括关于SSD的各种状态数据。在发信号通知SSD可以预备接收访问请求之后,SSD控制算法可以开始顺序地加载L2P表的段。然而,当所请求的段尚未被加载时可以阻止对L2P表的访问。在这样的情况下,SSD控制算法然后可以不按顺序加载所请求的段并且然后服务于所述访问请求。
【专利说明】用于非易失性存储器的优化的冷引导
【背景技术】
[0001]当前的固态驱动器(SSD)具有在数秒量级上的启动(boot-up)时间,这意味着驱动器在被通电的数秒之后预备服务于输入/输出(1)请求。针对SSD的启动时间可以用以下各项的总和表征:(i)硬件加电启动时间;(ii)ROM启动时间;(iii)引导装入程序(bootloader)启动时间;以及(iv)固件初始化时间。以上中的最长时间可能花费在固件初始化阶段中。固件初始化需要较多的时间是因为它需要读入逻辑到物理(L2P)间接表,其可能典型地在数百兆字节的量级上。除了 L2P表之外,固件还可能需要恢复描述NAND和固件状态的某些其它数据。该状态数据可以被共同称作为“上下文”。
[0002]固件可以在干净关机(clean shutdown)时将上下文保存到非易失性存储器并且可以在加电时读回上下文。L2P表形成压倒性的(overwhelming)上下文块。其余上下文的大小在数百千字节的量级上,其显著小于L2P表的数百兆字节。因此,L2P表加载时间主要包括针对SSD的通电启动时间。
[0003]当前SSD在空闲时也消耗数十毫瓦的功率(典型地为100mW),因为SSD内部的SSD控制器和动态随机存取存储器(DRAM)二者必须保持通电以维持SSD状态。因此,可能存在对解决这些和其它问题的改进技术的需要。
【专利附图】

【附图说明】
[0004]图1A图示了根据实施例的其中主机可以与固态驱动器(SSD)通信的系统的框图。
[0005]图1B图示了根据实施例的其中主机可以与固态驱动器(SSD)通信的系统的框图。
[0006]图1C图示了根据实施例的其中主机可以与固态驱动器(SSD)通信的系统的框图。
[0007]图2图示了根据实施例的逻辑到物理(L2P)段表的一个实施例。
[0008]图3图示了根据实施例的逻辑流的一个实施例。
[0009]图4图示了根据实施例的逻辑流的一个实施例。
[0010]图5图示了可以适于实现本公开的实施例的系统的实施例。
[0011]图6图示了图5的系统可以包含在其中的小形状因子设备的实施例。
【具体实施方式】
[0012]公开了显著加速针对非易失性存储器(NVM)设备(例如SSD)的启动过程并且将NVM设备的空闲功率消耗降低至接近于零的各种实施例。NVM设备可以在系统空闲状态期间断电并且被加电并可以几乎立即开始服务于请求。因为启动时间可以被显著降低,所以对NVM设备进行断电和加电在时间方面可能不成明显的问题。这可能对利用其内的NVM设备的电池供电移动设备尤其具吸引力。
[0013]现在对附图做出参考,其中,贯穿各图,相同的附图标记被用来指相同的元件。在以下描述中,出于解释的目的,陈述大量特定细节以便提供其全面的理解。然而,可能显而易见的是,新颖实施例可以在没有这些特定细节的情况下实践。在其它实例中,众所周知的结构和设备以框图形式示出,以便促进其描述。意图是覆盖落在所要求保护的主题的精神和范围内的所有修改、等价物和替换。
[0014]图1A图示了根据实施例的其中主机110可以与固态驱动器(SSD) 130通信的系统100的框图。主机110可以是较大系统100的一部分并且可以包括处理器115、操作系统(OS) 120以及一个或多个应用125。应用125和操作系统120可以在处理器115的控制之下进行操作。系统100还可以包括在SSD控制器155的控制之下的固态驱动器(SSD)130。SSD 130可以包括动态随机存取存储器(DRAM)组件145、引导装入程序135、只读存储器(ROM) 140、固件150、逻辑到物理(L2P)间接表165以及NAND (或其它NVM) 160。电源105可以被用于向主机110及其组件以及SSD 130及其组件提供电力。
[0015]依据本文描述的实施例,SSD 130可以将加载L2P表165 165推迟直到在引导(boot)之后为止。此外,当检测到空闲时间时可以将L2P表165 165出页面到NAND,从而允许在空闲时间期间将SSD 130断电。
[0016]L2P表165可以将逻辑块地址(LBA)映射到实际上将数据存储到SSD 130内的存储器中的物理地址。为了将数据存取(例如读取或写入)到存储器中,必须加载L2P表165(其将在函数调用中所使用的LBA映射到数据被或将被存储在的物理存储器地址)。
[0017]如先前描述的,针对诸如SSD 130之类的NVM设备的启动时间可以由硬件加电启动时间、ROM启动时间、引导装入程序启动时间和固件初始化时间的总和来表征。最长的时间可能花费在固件初始化阶段中。固件初始化需要较多的时间是因为它需要读入(例如加载)L2P表165。除了 L2P表165之外,固件还可能需要恢复描述NAND和NVM设备的固件状态的某些其它数据。该状态数据可以被共同称作为NVM设备的“上下文”(后文为“上下文”)。固件150可以在干净关机时将上下文保存到NVM设备内的非易失性存储器并且可以在加电时读回上下文。L2P表165形成压倒性的上下文块。其余上下文的大小在数百千字节的量级上,其显著小于L 2P表165的数百兆字节。因此,L2P表165加载时间包括压倒性多数的针对SSD 130或其它NVM设备的通电启动时间。
[0018]由于L2P表165可以存储在一个或多个NAND页160中,因此可能不需要被一次全部加载。L2P表165可以被划分成段。表段可以是在一次操作中可以从NAND加载的数据单元。例如,段大小可以是一个物理NAND页160的大小。段的实际大小可以取决于实现方式。
[0019]在启动时,SSD控制算法可以加载上下文的非L2P部分并且发信号通知系统100:SSD 130就绪。SSD控制算法可以由处理器电路运行。运行SSD控制算法的处理器电路可以以各种方式来实现。在图1A中图示的一个实施例中,运行SSD控制算法的处理器电路可以实现在SSD 130内的嵌入式处理器上的固件150内。在图1B中图示的另一实施例中,运行SSD控制算法的处理器电路可以实现在SSD 130内的硬件(HW)状态机170内。在图1C中图示的又一实施例中,运行SSD控制算法的处理器电路可以在处理器115的控制之下由主机110实现为SSD算法代码175。不考虑实现方式,SSD控制算法管理SSD 130的某些方面。
[0020]参照图1A,在加载上下文的非L2P部分之后,固件150可以运行SSD控制算法以发信号通知主机I1 =SSD 130预备接受访问请求。固件150然后可以运行SSD控制算法以开始加载L2P表165的段。称为“段表”的数据结构可以追踪段的状态。段表可以具有每段一个条目,其指示段的状态。段状态可以包括以下之一:未加载;加载中;或已加载。[0021 ] 当包含访问请求内的LBA的段尚未被加载到L2P表165时,可以阻止对L2P表165的访问请求。固件150可以运行SSD控制算法以顺序地加载段,除非在尚未被加载的段上存在L2P访问请求。在这种情况下,可以不按顺序地加载(例如按需加载)相关段。对被阻止的L2P表请求的代价相对较小(例如100微秒)。对于可以不按顺序加载的访问请求的数量相对小的情况,等待时间的增加对用户而言可能不易察觉。
[0022]参照图1B,在加载上下文的非L2P部分之后,HW状态机170可以运行SSD控制算法以发信号通知主机110 =SSD 130预备接受访问请求。HW状态机170然后可以运行SSD控制算法以开始加载L2P表165的段。称为“段表”的数据结构可以追踪段的状态。段表可以具有指示段的状态的每段一个条目。段状态可以包括以下之一:未加载;加载中;已加载。
[0023]当包含访问请求内的LBA的段尚未被加载到L2P表165中时,可以阻止对L2P表165的访问请求。HW状态机170可以运行SSD控制算法以顺序地加载段,除非在尚未被加载的段上存在L2P访问请求。在这种情况下,可以不按顺序加载(例如按需加载)相关段。
[0024]参照图1C,在加载上下文的非L2P部分之后,处理器115可以运行SSD控制算法代码以使SSD发信号通知主机110:其预备接受访问请求。处理器115可以运行SSD控制算法代码以开始加载L2P表165的段。称为“段表”的数据结构可以追踪段的状态。段表可以具有指示段的状态的每段一个条目。段状态可以包括以下之一:未加载;加载中;已加载。
[0025]当包含访问请求内的LBA的段尚未被加载到L2P表165中时,可以阻止对L2P表165的访问请求。处理器115可以运行SSD控制算法代码以顺序地加载段,除非在尚未被加载的段上存在L2P访问请求。在这种情况下,可以不按顺序加载(例如按需加载)相关段。
[0026]顺序加载可以利用当SSD 130可能空闲时的时间,使得更有可能在段被访问时它们已经被加载。按需加载可以降低在所请求的段尚未被加载的情况下请求可能忍受的等待时间。对于许多应用,I/o访问具有高局域性程度,这意味着相继的访问通常命中(hit)相同段。在这种情况下,只有第一访问可能需要遭受段未命中(miss)代价。因此,按需加载确保等待时间被最小化而顺序加载确保只有最早的访问(例如当驱动器刚刚被引导时)可能遭受未命中。在运行时期间,检查段是否被加载招致最小的开销。
[0027]该方法还可以通过在访问段时预取多个段而被优化。预取可以加速顺序的I/O。另外,典型地在引导时被访问的段可以被检测并且可以甚至在从系统100发出第一 I/O之前开始从NAND页160中取。
[0028]为了功率节省,通过在断电之前在触发时首先将上下文信息保存到NAND,SSD 130可以进入零功率状态。SSD 130然后可以在再加电(power back up)时如以上描述的那样快速恢复。当系统100不需要SSD 130保持带电时,触发可以来自系统100。可替换地,触发可以由SSD 130自身在其检测到空闲时间(例如自上次I/O起过去阈值量的时间)时发起。在后一种情况的一些实现方式中,SSD 130可能需要发信号通知系统100以请求系统100使SSD 130 断电。
[0029]本文描述的实施例确保SSD 130在SSD 130通电之后快得多地预备服务于I/O请求而在L2P表165的段尚未被加载到非易失性存储器时不招致高等待时间。本文描述的实施例还实现SSD 130空闲时间期间的零功率状态。
[0030]图2图示了根据实施例的逻辑到物理(L2P)段表200的一个实施例。L2P段表200可以存储在NAND页中,其可以被划分成段。表段可以涵盖多个逻辑块地址(LBA)。表段可以在一次操作中从NAND加载。例如,表段大小(例如LBA的数量)可以是一个物理NAND页的大小。表段的实际大小可以取决于实现方式。段表200可以追踪包括表200的段的状态。段表200可以具有指示段的状态的每段一个条目。段状态可以包括以下之一:未加载;加载中;或已加载。
[0031]根据示例性L2P段表200,段号1_6已经被加载。段7当前可以正在加载中。剩余段可以具有“未加载”的状态。一个例外可以是段12,其图示有“已加载”的状态。可以基于“按需”请求而已经不按顺序地加载段12。
[0032]本文所包括的是表示用于执行所公开的架构的新颖方面的示例性方法的一组流程图。虽然出于简化解释的目的,本文所示的一个或多个方法(例如以流程图或流程图表的形式)被示出和描述为一系列动作,但是要理解和领会的是,方法不受限于动作的次序,因为依照于此,一些动作可以以不同的次序发生和/或与从本文示出和描述的其它动作同时发生。例如,本领域技术人员将理解和领会到,方法可以可替换地表示为一系列关联状态或事件,诸如在状态图中。而且,并非在方法中说明的所有动作对于新颖实现方式都是必需的。
[0033]图3图示了逻辑流300的一个示例。逻辑流300可以表示由可以实现加载诸如SSD 130之类的非易失性存储器中的L2P表165的本文描述的一个或多个实施例所运行的一些或全部操作。SSD控制算法可以执行L2P表165的加载和访问。SSD控制算法可以实现在固件150、一个或多个HW状态机170或运行SSD控制算法代码的处理器115内。 [0034]可以最初加载上下文的非L2P组件。由于上下文的这部分在大小上的数量级小于L2P表165,因此这部分的启动过程相对较快。一旦已经加载上下文的非L2P组件,SSD 130可以发信号通知主机:其预备开始逐段加载L2P表165。在进入将加载和增加每个后续段的循环之前,段表可以被初始化成加载第一段。这可以被称作顺序加载。有时,访问请求将引用尚未被加载的段。在这样的情况下,可以以“按需”的方式不按顺序地加载所请求的段。在不按顺序的段加载之后,该过程可以返回到在执行“按需”的段加载之前的顺序加载中的点。
[0035]在图3中示出的所图示的实施例中,逻辑流300可以在块310处加载上下文的非L2P组件。例如,在启动时,SSD控制算法可以加载上下文的非L2P部分。针对SSD 130的启动时间可以由硬件加电启动时间、ROM启动时间、引导装入程序启动时间和固件初始化时间的总和来表征。最长时间可能花费在固件初始化阶段中。固件初始化需要较多的时间是因为它需要读入L2P表165。除L2P表165之外,固件还可能需要恢复描述NAND和固件状态的某些其它数据。该状态数据可以被共同称作为“上下文”。L2P表165形成压倒性的上下文块。其余上下文的大小在数百千字节的量级上,其显著小于L2P表165的数百兆字节。在加载L2P表165之前,SSD控制算法可以加载上下文的剩余组件。实施例在该上下文中不受限。
[0036]逻辑流300可以发信号通知主机110 =SSD 130在块315处就绪。例如,SSD控制算法可以确定SSD 130预备一旦已经加载上下文的非L2P组件就接收和处理访问请求。虽然L2P表165可能尚未被完全加载,不过主机110还是告知SSD 130预备接收访问请求。如果接收到针对L2P表165的尚未被加载的段的访问请求,逻辑流(如以下所描述的)可以不按顺序加载段。实施例在该上下文中不受限。
[0037]逻辑流300可以在块320处将Next_segment参数设置成“O”。例如,L2P表165可以包括多个段,其可以例如从I到η顺序编号。最初,L2P表165中的每个段的状态将是“未加载”。默认加载方法是以段号I开始顺序的。因此,加载循环被初始化,使得第一段(例如Segment_number=l)将首先被加载。实施例在该上下文中不受限。
[0038]逻辑流300可以在块325处确定是否L2P表165的所有段已经被加载。例如,循环的第一步骤可以是确定是否已经加载L2P表165的所有段。如果确定已经加载L2P表165的所有段,则逻辑流300在块330处自然终止。如果确定尚未加载L2P表165的所有段,则逻辑流300前进到块335。实施例在该上下文中不受限。
[0039]接下来,逻辑流300可以在块335处确定是否存在未解决的L2P访问请求。例如,SSD控制算法可以基于是否存在对L2P表165未决的访问请求来将逻辑流300的控制引导到合适的块。在可能接收到对L2P表165的访问请求时,逻辑流300可以执行顺序加载。在这样的情况下,逻辑流300可以将控制引导到块340,其中可以执行“按需”段加载。如果不存在未决的L2P访问请求,则顺序加载过程继续并且在块345处,要加载的段号被设置成“Next_segment”。在块 345 处将段号设置成值 “Next_segment” 之后,“Next_segment” 的值在块350处可以增加I以确保通过循环的下一迭代将加载下一段号。实施例在该上下文中不受限。
[0040]逻 辑流300可以跳到与访问请求相关联的段号,在块340处。例如,在完全加载L2P表165之前可能已经接收对L2P表165的访问请求。访问请求可以是读请求或写请求。包含与请求相关联的一个或多个逻辑块地址的段可能尚未被加载。如果请求要等待直到L2P表165顺序地加载段为止,那么可能将不合期望的等待时间引入到系统中。与其允许等待时间发生,SSD控制器155可以跳过与对队列前面的访问请求相关联的段。实施例在该上下文中不受限。
[0041]逻辑流300可以在块355处确定L2P表165的段是否已经被加载。例如,块350可以接收来自顺序段加载控制路径(例如块350)或不按顺序段加载控制路径(例如块340)二者的输入。在任何一种方式下,SSD控制器155可以确定是否已经加载了要加载的当前排队的段。如果当前排队的段已经被加载到L2P表165中,则SSD控制器155可以将控制重定向回循环的顶部而到块325处,其中确定是否已经加载所有段。如果当前排队的段尚未被加载到L2P表165,则SSD控制算法可以将控制重定向到块360。SSD控制算法确保没有L2P表165中的段被加载多于一次。实施例在该上下文中不受限。
[0042]逻辑流300可以在块360处为L2P表165加载当前排队的段。例如,SSD控制器155可以在确定段尚未被加载时将当前排队的段加载到L2P表165中。一旦SSD控制器155结束将段加载到L2P表165中,它可以将控制重定向回循环的顶部而到块325,其中确定是否已经加载所有段。实施例在该上下文中不受限。
[0043]图4图示了逻辑流400的一个实施例。逻辑流400可以表示本文所描述的一个或多个实施例所运行的一些或全部操作,其可以访问L2P表165,即便所述L2P表165尚未被完全加载。L2P表165可以接收访问请求,尽管事实是它可能在请求时尚未被完全加载。在这样的情况下,SSD控制器可以确定L2P表165内的哪段可能与访问请求相关联。SSD控制器然后可以确定该段是否已经被加载到L2P表165中。如果是,则可以正常服务该访问请求。如果该段尚未被加载,则SSD控制器155确定对加载该特定段的请求是否未决。如果不是,则SSD控制器155将这样的请求排入队列以不按顺序加载该段。
[0044]在图4中所示的图示实施例中,逻辑流400可以在块405处从函数接收访问请求。例如,代表应用的处理器115、操作系统150 (或其它系统100组件)可以做出函数调用以访问L2P表165。该函数调用可以包括L2P表165内的特定逻辑块地址(LBA)。实施例在这方面不受限。
[0045]逻辑流400可以在块410处确定与包含在函数调用中的逻辑块地址(LBA)相关联的段号。例如,SSD控制器155可以接收具有相关联的逻辑块地址(LBA)的函数调用。SSD控制器155可以确定哪段包括期望的逻辑块地址(LBA)。确定哪段包括期望的逻辑块地址(LBA)可以是用所请求的LBA (LBA可以从I到η顺序编号)除以每段的LBA数量的问题。回想到每段可以表示定义数量的LBA。该除法的截短结果可以产生与在块405处接收的访问请求的LBA相关联的段号。实施例在该上下文中不受限。
[0046]逻辑流400可以在块415处确定在块410处确定的段是否已经被加载。例如,SSD控制器155可以确定在块410处确定的段号是否已经被加载到L2P表165。如果段号已经被加载到L2P表165,则在块420处可以正常服务该访问请求。如果段号尚未被加载到L2P表165中,则访问请求可以被转发到判定块425。实施例在该上下文中不受限。
[0047]逻辑流400可以在块425处确定对于加载在块410处所确定的段号的请求是否已经被放入到请求队列。例如,SSD控制器155可以确定对于加载在块410处所确定的段号的请求是否已经被放入到请求队列。如果对于加载该段号的请求已经做出并且在处理中,则逻辑流400在将控制返回到块415之前将在块430处等待指定时间段以验证段已经被加载。如果尚未做出对于加载段号的请求,则逻辑流400将控制发送到块435。实施例在该上下文中不受限。
[0048]逻辑流400可以在块435处创建对于加载段号的请求并且将其排入队列。例如,SSD控制器可以创建对于加载在块410处所确定的段号的请求并且将其排入队列。该请求可以在图3的块335处被接收。图3可以负责加载L2P表165,如以上描述的那样。块335可以接收对尚未被加载的段的L2P访问请求,但是可以能够不按顺序加载段以防止等待时间问题使I/O访问请求延迟。一旦已经将对于加载该端的请求转发到与图3相关联的逻辑,则SSD控制器155可以将控制返回到判定块415,其中确定是否已经加载所请求的段。实施例在该上下文中不受限。
[0049]刚刚参照图3-4描述的过程准许与SSD 130相关联的L2P表165的顺序和不按顺序的加载。L2P表165可以被分解成段,其中每一段可以包括逻辑块地址的范围。可以将每个表段设定大小成与用于特定实现方式的NAND页160所容纳的数据量对应。然后可以按照默认顺序加载表段。然而,SSD控制算法可以告知主机110 SSD 130预备被访问,即便L2P表165尚未被完全加载。因此,通过在完全引导之前向主机发信号通知:SSD 130就绪,可以大幅降低引导时间。当针对尚未被加载的L2P表165的一部分做出L2P访问请求时,不按顺序加载包含所请求的逻辑块地址(LBA)的段以防止过度等待时间的问题。总体结果是比等待完全引导快得多地允许对L2P表165的访问。甚至在寻求访问L2P表165的未加载的部分的情况下,等待时间可以通过不按顺序加载所请求的段而得以降低。
[0050]可以基于针对尚未被加载的L2P表165中的段的访问请求而加载不按顺序的段以降低等待时间。可以通过不按顺序加载多个相继段而进一步降低等待时间。例如,可以接收针对尚未被加载的段的请求,使所请求的段不按顺序被加载。然而,对于许多应用,I/o访问具有高本地性程度,这意味着相继访问通常命中相同段或附近段。在这样的情况下,当不按顺序加载所请求的段时加载多个相继段可能是谨慎的。
[0051]因为SSD 130的启动时间可以显著降低,所以在不经历显著的等待时间问题的情况下在系统空闲时间期间使SSD 130断电成为可能。在空闲时间期间使SSD 130断电可能导致对总体系统100的显著节电,这可能对实现在电池供电设备内的系统100尤其有利。当SSD 130被断电时,针对SSD 130的上下文信息可以保存到NAND。当被再加电时,非L2P上下文信息和L2P表165可以如以上实施例中所描述的那样被加载。
[0052]各种实施例公开了用于实现针对SSD 130的启动过程的装置、系统和方法。系统可以包括与附加系统组件通信耦合并且操作以运行软件程序的处理器115。SSD 130可以包括L2P表165,其包括用于将逻辑块地址(LBA)转换到SSD 130中的物理地址的地址映射模式。L2P表165可以被分成多个表段,其中多个段中的每一个可以包括LBA的顺序成组。与处理器115通信耦合的SSD控制算法可以操作成对SSD循环供电。可以执行针对SSD 130的部分启动。
[0053]部分启动不包括L2P表165的加载。一旦部分启动完成,可以发信号通知主机110:SSD 130预备处理访问请求。访问请求可以是由处理器115处理的函数调用并且借助于SSD控制算法和SSD控制器155而被转发到SSD 130。SSD控制算法可以使以顺序方式将多个段加载到L2P表165中。在加载表段的同时,可以在SSD 130处接收指定未加载的段内的LBA的访问请求。SSD 130可以通过在恢复以顺序方式将多个段加载到L2P表165之前将未加载的段不按顺序地加载到L2P表165来处理访问请求。
[0054]在另一个实施例中,SSD控制算法可以操作成将多个附加的未加载段加载到L2P表165中。多个附加的未加载段可以相继于未加载的段。
[0055]SSD控制算法还可以操作成通过在用所请求的LBA除以每段的LBA数量之后取整数值来确定与LBA相关联的段,其中LBA从I到η顺序编号。关于是否已经加载特定段的确定可以在加载特定段之前执行。
[0056]SSD 130可能能够接收访问请求,其中所述访问请求包括LBA。当确定与LBA相关联的段时,可以验证与访问请求中的LBA相关联的段是否已经被加载。如果段已经被加载,SSD 130然后可以服务于针对特定段的访问请求。
[0057]SSD 130可以在不使用时被断电。例如,在处理器115确定SSD 130的空闲状态时或者在SSD 130自身确定空闲状态的情况下SSD 130可以被断电。当处理器115或其它系统组件确定需要SSD 130时,SSD 130可以被再加电。
[0058]可以使用硬件元件、软件元件或者二者的组合实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现实施例可以依照任何数量的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
[0059]图5图示了可以适于实现本公开的NVM引导加载实施例的系统500的实施例。在实施例中,系统500可以是能够实现以上描述的NVM引导加载实施例的系统,尽管系统500不受限于该上下文。例如,系统500可以并入到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备等等。
[0060]在实施例中,系统500包括耦合到显示器520的平台502。平台502可以从诸如一个或多个内容服务设备530或一个或多个内容递送设备540或其它类似内容源之类的内容设备接收内容。包括一个或多个导航特征的导航控制器550可以被用于与例如平台502和/或显示器520交互。在以下更加详细地描述这些组件中的每一个。
[0061]在实施例中,系统500包括耦合到显示器520的平台502。平台502可以从诸如一个或多个内容服务设备530或一个或多个内容递送设备540或其它类似内容源之类的内容设备接收内容。包括一个或多个导航特征的导航控制器550可以被用于与例如平台502和/或显示器520交互。在以下更加详细地描述这些组件中的每一个。
[0062]在实施例中,平台502可以包括芯片组505、一个或多个处理器510、存储器512、储存514、图形子系统515、应用516和/或无线电设备518的任何组合。芯片组505可以提供处理器510、存储器512、储存514、图形子系统515、应用516和/或无线电518之中的互通信。例如,芯片 组505可以包括能够提供与储存514的互通信的存储适配器(未描绘)。
[0063]一个或多个处理器510可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或任何其它的微处理器或中央处理单元(CPU)。在实施例中,一个或多个处理器510可以包括一个或多个双核处理器、一个或多个双核移动处理器等等。
[0064]存储器512可以被实现为易失性存储器设备,诸如,但不限于,随机存储存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM (SRAM)0
[0065]储存514可以被实现为非易失性存储设备,诸如,但不限于,磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附接存储设备、闪速存储器、备有电池的SDRAM (同步DRAM)、网络可访问存储设备。在实施例中,储存514可以包括当例如包括多个硬驱动器时增加针对有价值的数字媒体的存储性能增强保护的技术。
[0066]图形子系统515可以执行诸如静止的或视频的图像的处理以供显示。图形子系统515可以是例如图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以被用于通信耦合图形子系统515和显示器520。例如,接口可以是高清晰度多媒体接口、显示端口、无线HDMI和/或无线HD依从技术中的任何一个。图形子系统515可以集成到处理器510或芯片组505中。图形子系统515可以是通信耦合到芯片组505的独立卡。
[0067]本文描述的图形和/或视频处理技术可以以各种硬件架构实现。例如,图形和/或视频功能可以集成在芯片组内。可替换地,可以使用离散图形和/或视频处理器。作为又一实施例,图形和/或视频功能可以通过包括多核处理器的通用处理器来实现。在另外的实施例中,功能可以以消费电子设备来实现。
[0068]无线电设备518可以包括能够通过使用各种适合的无线通信技术发射和接收信号的一个或多个无线电设备。这样的技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络、蜂窝数据网络(例如3G、LTE)和卫星网络。在跨这样的网络的通信中,无线电设备518可以依照任何版本中的一个或多个适用标准进行操作。
[0069]在实施例中,显示器520可以包括任何电视类型的监视器或显示器。显示器520可以包括例如计算机显示屏、触摸屏显示器、视频监视器、类电视设备和/或电视。显示器520可以是数字和/或模拟的。在实施例中,显示器520可以是全息显示。显示器520还可以是接收视觉投影的透明表面。这样的投影可以传达各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉重叠。在一个或多个软件应用516的控制之下,平台502可以在显示器520上示出用户接口 522。
[0070]在实施例中,一个或多个内容服务设备530可以由任何国家、国际和/或独立服务来主管并且因此经由例如因特网对平台502可访问。一个或多个内容服务设备530可以耦合到平台502和/或显示器520。平台502和/或一个或多个内容服务设备530可以耦合到网络560以向网络560和从网络560传送(例如发送和/或接收)媒体信息。一个或多个内容递送设备540也可以耦合到平台502和/或显示器520。
[0071]在实施例中,一个或多个内容服务设备530可以包括有线电视盒、个人计算机、网络、电话、支持因特网的设备或能够递送数字信息和/或内容的装置以及能够在内容提供商与平台502和/显示器520之间经由网络560或直接地单向或双向传送内容的任何其它的类似设备。将领会到内容可以经由网络560单向和/或双向地传送到系统500中的任何一个组件和内容提供商或从 其进行传送。内容的示例可以包括任何媒体信息,包括例如,视频、音乐、医学和游戏信息等等。
[0072]一个或多个内容服务设备530接收包括媒体信息、数字信息和/或其它内容的诸如有线电视节目之类的内容。内容提供商的示例可以包括任何有线或卫星电视或无线电或因特网内容提供商。所提供的示例并不意指限制本发明的实施例。
[0073]在实施例中,平台502可以从具有一个或多个导航特征的导航控制器550接收控制信号。控制器550的导航特征可以被用于例如与用户接口 522交互。在实施例中,导航控制器550可以是定点设备,其可以是允许用户将空间(例如连续的和多维的)数据输入到计算机中的计算机硬件组件(特别地,人类接口设备)。诸如图形用户界面(GUI)之类的许多系统和电视以及监视器允许用户通过使用身体姿势控制并向计算机或电视提供数据。
[0074]控制器550的导航特征的移动可以通过在显示器上示出的指针、光标、聚焦环或其它视觉指示器的移动而在显示器(例如显示器520)上被回送。例如,在软件应用516的控制之下,位于导航控制器550上的导航特征可以被映射到显示在例如用户接口 522上的虚拟导航特征。在实施例中,控制器550可能不是分离的组件,而是被集成到平台502和/或显示器520中。然而,实施例不限于或者在上下文中示出或者在本文中描述的元件。
[0075]在实施例中,驱动器(未示出)可以包括使得用户能够例如利用在初始启动之后的按钮触摸(在被启用时)来即时开启和关闭像是电视的平台502。在平台被“关闭”时,程序逻辑可以允许平台502将内容串流到媒体适配器或一个或多个其它内容服务设备530或一个或多个内容递送设备540。此外,芯片组505可以包括用于例如5.1环绕立体声和/或高清5.1环绕立体声的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在实施例中,图形驱动器可以包括高速外围组件互连(PCI)图形卡。
[0076]在各种实施例中,可以集成系统500中示出的任何一个或多个组件。例如,可以集成平台502和一个或多个内容服务设备530,或者可以集成平台502和一个或多个内容递送设备540,或者例如可以集成平台502、一个或多个内容服务设备530和一个或多个内容递送设备540。在各种实施例中,平台502和显示器520可以是集成单元。例如,可以集成显示器520和一个或多个内容服务设备530,或者可以集成显示器520和一个或多个内容递送设备540。这些示例并不意指限制本发明。
[0077]在各种实施例中,系统500可以实现为无线系统、有线系统或这二者的组合。当实现为无线系统时,系统500可以包括适于通过无线共享介质进行通信的组件和接口,诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等等。无线共享介质的示例可以包括无线频谱的部分,诸如RF频谱等等。当实现为有线系统时,系统500可以包括适于通过有线通信介质进行通信的组件和接口,诸如输入/输出(I/O)适配器、将I/O适配器与对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等等。有线通信介质的示例可以包括导线、线缆、金属引线、印刷电路板(PCB)、背板、交换结构、半导体材料、双纽线、同轴线缆、光纤等等。
[0078]平台502可以建立一个或多个逻辑或物理信道以传送信息。信息可以包括媒体信息和控制信息。媒体信息可以是指表示用于用户的内容的任何数据。内容的示例可以包括,例如,来自语音对话的数据、视频会议、流视频、电子邮件(“ emai I ”)消息、语音邮件消息、文字数字符号、图形、图像、视频、文本等等。来自语音对话的数据可以是,例如,话音信息、静默周期、背景噪声、舒适噪声、音调等等。控制信息可以是指表示用于自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以被用于路由媒体信息通过系统,或者指示节点以预确定的方式处理媒体信息。然而,实施例不受限于或者在上下文中示出或者在图5中描述的元件。
[0079]如以上所描述的,系统500可以以变化的物理样式或形状因子来体现。图6图示了其中可以体现系统500的小形状因子设备600的实施例。在实施例中,例如,设备600可以被实现为具有无线能力的移动计算设备。例如,移动计算设备可以是指具有处理系统和诸如一个或多个电池之类的移动电源或供应的任何设备。
[0080]如以上所描述的,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超膝上型计算机、平板、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备等等。
[0081]移动计算设备的示例还可以包括被设置成由人穿戴的计算机,诸如手腕计算机、手指计算机、戒指计算机、眼镜计算机、腰带扣计算机、臂章计算机、鞋子计算机、衣物计算机以及其它可穿戴计算机。在实施例中,例如,移动计算设备可以被实现为能够运行计算机应用以及语音通信和/或数据通信的智能电话。尽管一些实施例可以通过作为示例被实现为智能电话的移动计算设备进行描述,但是可以领会到,其它实施例也可以通过使用其它无线移动计算设备来实现。实施例在该上下文中不受限。[0082]如图6中所示,设备600可以包括外壳602、显示器604、输入/输出(I/O)设备606以及天线608。设备600还可以包括导航特征612。显示器604可以包括用于显示适于移动计算设备的信息的任何适合的显示单元。I/O设备606可以包括用于将信息输入到移动计算设备中的任何适合的I/O设备。I/O设备606的示例可以包括文字数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、语音识别设备和软件等等。信息还可以借助于麦克风输入到设备600中。这样的信息可以通过语音识别设备被数字化。实施例在该上下文中不受限。
[0083]可以使用硬件元件、软件元件或这二者的组合来实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现实施例可以依照任何数量的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
[0084]至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表指令实现,其表示处理器内的各种逻辑,当被机器读取时使机器构造逻辑以执行本文所描述的技术。称作“IP核 ”的这样的表示可以存储在有形、机器可读介质上并且供应给各种客户或制造机构以加载到实际上制作逻辑或处理器的构造机器中。
[0085]至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表指令实现,其表示处理器内的各种逻辑,当被机器读取时使机器构造逻辑以执行本文所描述的技术。称作“IP核”的这样的表示可以存储在有形、机器可读介质上并且供应给各种客户或制造机构以加载到实际上制作逻辑或处理器的构造机器中。
[0086]可以使用表述“一个实施例”或“实施例”连同它们的衍生物来描述一些实施例。这些术语意味着关于该实施例描述的特定特征、结构或特性包括在至少一个实施例中。短语“在一个实施例中”在本说明书中的各个位置的出现不一定都是指相同的实施例。另外,可以使用表述“耦合”和“连接”连同它们的衍生物来描述一些实施例。这些术语不一定意图作为彼此的同义词。例如,可以使用术语“连接”和/或“耦合”来描述一些实施例以指示两个或更多元件与彼此直接物理或电气接触。然而,术语“耦合”还可能意味着两个或更多元件并未与彼此直接接触,但仍然与彼此合作或交互。
[0087]要强调的是,提供本公开的摘要以允许读者快速确认技术公开的性质。其在将不被用于解释或限制权利要求的范围或意义的理解上被提交。此外,在前文的【具体实施方式】中可以看到,出于简化本公开的目的而使各种特征一起组成在单个实施例中。这种公开的方法不应被解释为反映所要求保护的实施例需要比明确记载在每个权利要求中的特征更多的特征这一意图。而是,如以下权利要求反映的,发明主题在于比单个公开的实施例的所有特征少。因此以下权利要求以此方式被并入到【具体实施方式】中,其中每个权利要求独立地作为单独的实施例。在随附权利要求中,术语“包含”和“在其中”分别被用作相应术语“包括”和“其中”的简明语言等同物。另外,术语“第一”、“第二”、“第三”等等仅仅被用作标记,并且不旨在将数字需要强加在它们的对象上。
[0088]已经在以上描述的包括所公开的架构的示例。当然,不可能描述组件和/或方法的每一个可想到的组合,但是本领域普通技术人员可以认识到许多另外的组合和排列是可能的。因此,新颖架构旨在涵盖落在随附权利要求的精神和范围内的所有这样的替换、修改和变 型。
【权利要求】
1.一种装置,包括: 运行固态驱动器(SSD)控制算法的处理器电路,其操作成: 对固态驱动器(SSD)循环供电,SSD包括逻辑到物理(L2P)表,其包括用于将逻辑块地址(LBA)转换成SSD中的物理地址的地址映射模式,L2P表被分成多个表段,所述多个段中的每一个包括LBA的顺序成组; 执行针对SSD的部分启动,所述部分启动不包括L2P表的加载; 在完成所述部分启动时发信号通知:SSD预备对访问请求进行处理; 以顺序方式将所述多个段加载到L2P表中;以及 处理指定未加载的段内的LBA的访问请求。
2.权利要求1的装置,所述处理器电路操作成: 将所述未加载的段加载到L2P表中;以及 一旦所述未加载的段已经被加载到L2P表中,就恢复以顺序方式将所述多个段加载到L2P表中。
3.权利要求2的装置,所述处理器电路操作成将多个附加的未加载段加载到L2P表中,所述多个附加的未加 载段相继于所述未加载的段。
4.权利要求2的装置,所述处理器电路操作成通过在用所请求的LBA除以每段的LBA数量之后取整数值来确定与LBA相关联的段,其中LBA从I到η顺序编号。
5.权利要求2的装置,所述处理器电路操作成在加载特定段之前确定所述特定段是否已经被加载。
6.权利要求2的装置,所述处理器电路操作成: 接收访问请求,所述访问请求包括LBA ; 验证与所述访问请求中的LBA相关联的段已经被加载;以及 在验证到所述段已经被加载到L2P表中时,服务于针对特定段的访问请求。
7.权利要求1的装置,所述处理器电路操作成当所述处理器确定针对SSD的空闲状态时使SSD断电。
8.权利要求1的装置,所述SSD操作成当SSD确定其在空闲状态中时发信号通知所述处理器电路:使SSD断电。
9.权利要求7的装置,所述处理器电路操作成当所述处理器确定需要SSD时使SSD加电。
10.权利要求1的装置,所述处理器电路被实现为SSD内的嵌入式处理器上的固件。
11.权利要求1的装置,所述处理器电路被实现为SSD内的硬件状态机。
12.权利要求1的装置,其中所述处理器运行SSD控制算法。
13.—种方法,包括: 使固态驱动器(SSD)通电; 执行针对SSD的部分启动,所述部分启动不包括针对SSD的逻辑到物理(L2P)表的加载,所述L2P表包括用于将逻辑块地址(LBA)转换成SSD中的物理地址的地址映射模式,所述L2P表被分成多个表段,所述多个段中的每一个包括LBA的顺序成组; 在完成所述部分启动时发信号通知=SSD预备对访问请求进行处理; 以顺序方式将所述多个段加载到L2P表中;以及中断所述多个段到L2P表中的顺序加载以处理指定未加载的段内的LBA的访问请求。
14.权利要求13的方法,包括: 将所述未加载的段加载到L2P表中;以及 一旦所述未加载的段已经被加载到L2P表中,就恢复以顺序方式将所述多个段加载到L2P表中。
15.权利要求14的方法,包括将多个附加的未加载段加载到L2P表中,所述多个附加的未加载段相继于所述未加载的段。
16.权利要求13的方法,包括通过在用所请求的LBA除以每段的LBA数量之后取整数值来确定与指定LBA的访问请求相关联的未加载段,其中LBA从I到η顺序编号。
17.权利要求13的方法,包括在加载特定段之前确定所述特定段是否已经被加载。
18.权利要求17的方法,包括: 接收访问请求,所述访问请求包括LBA ; 验证与所述访问请求中的LBA相关联的段已经被加载;以及 在验证到所述段已经被加载时,服务于针对特定段的访问请求。
19.一种系统,包括: 处理器,其与附加系统组件通信耦合并且操作成运行软件程序; 固态驱动器(SSD),SSD包括逻辑到物理(L2P)表,其包括用于将逻辑块地址(LBA)转换成SSD中的物理地址的地址映射模式,L2P表被分成多个表段,所述多个段中的每一个包括LBA的顺序成组;以及 运行固态驱动器(SSD)控制算法的处理器电路,其操作成: 对SSD循环供电; 执行针对SSD的部分启动,所述部分启动不包括L2P表的加载; 在完成所述部分启动时发信号通知:SSD预备对访问请求进行处理; 以顺序方式将所述多个段加载到L2P表中;以及 处理指定未加载的段内的LBA的访问请求。
20.权利要求19的系统,所述处理器电路操作成: 将所述未加载的段加载到L2P表中;以及 一旦所述未加载的段已经被加载到L2P表中,就恢复以顺序方式将所述多个段加载到L2P表中。
21.权利要求20的系统,所述处理器电路操作成将多个附加的未加载段加载到L2P表中,所述多个附加的未加载段相继于所述未加载的段。
22.权利要求20的系统,所述处理器电路操作成通过在用所请求的LBA除以每段的LBA数量之后取整数值来确定与LBA相关联的段,其中LBA从I到η顺序编号。
23.权利要求20的系统,所述处理器电路操作成在加载特定段之前确定所述特定段是否已经被加载。
24.权利要求20的系统,所述处理器电路操作成: 接收访问请求,所述访问请求包括LBA ; 验证与所述访问请求中的LBA相关联的段已经被加载;以及 在验证到所述段已经被加载时,服务于针对特定段的访问请求。
25.权利要求19的系统,所述处理器电路操作成当处理器确定针对SSD的空闲状态时使SSD断电。
26.权利要求19的系统,所述SSD操作成当SSD确定其在空闲状态中时发信号通知所述处理器电路:使SSD断电。
27.权利要求19的系统,所述处理器电路操作成当处理器确定需要SSD时使SSD加电。
28.权利要求19的系统,所述处理器电路被实现为SSD内的嵌入式处理器上的固件。
29.权利要求19的系统,所述处理器电路被实现为SSD内的硬件状态机。
30.权利要求19的系统,其中所述处理器运行SSD控制算法。
31.包括指令的至少一个计算机可读存储介质,当被运行时所述指令使系统进行以下动作: 执行针对SSD的部分启动,所述部分启动不包括针对SSD的逻辑到物理(L2P)表的加载,L2P表包括用于将逻辑块地址(LBA)转换成SSD中的物理地址的地址映射模式,L2P表被分成多个表段,所述多个段中的每一个包括LBA的顺序成组; 在完成所述部分启动时发信号通知:SSD预备对访问请求进行处理; 以顺序方式将所述多个段加载到L2P表中;以及 当接收到指定未加载的段内的LBA的访问请求时,将所述未加载的段加载到L2P表。
32.权利要求31的计算机可读存储介质,包含指令,当被运行时所述指令使系统在一旦所述未加载的段已经被加载到L2P表时恢复以顺序方式将所述多个段加载到L2P表中。
33.权利要求32的计算机可读存储介质,包含指令,当被运行时所述指令使系统将多个附加的未加载段加载到L2P表中,所述多个附加的未加载段相继于所述未加载的段。
34.权利要求34的计算机可读存储介质,包含指令,当被运行时所述指令使系统通过在用所请求的LBA除以每段的LBA数量之后取整数值来确定与LBA相关联的段,其中LBA从I到η顺序编号。
35.权利要求31的计算机可读存储介质,包含指令,当被运行时所述指令使系统在加载特定段之前确定所述特定段是否已经被加载。
36.权利要求35的计算机可读存储介质,包含指令,当被运行时所述指令使系统进行以下动作: 接收访问请求,所述访问请求包括LBA ; 验证与所述访问请求中的LBA相关联的段已经被加载;以及 在验证到所述段已经被加载时,服务于针对特定段的访问请求。
【文档编号】G06F12/00GK104040483SQ201180075991
【公开日】2014年9月10日 申请日期:2011年12月27日 优先权日:2011年12月27日
【发明者】P.拉特恩, R.J.小罗耶, S.纳亚克, S.N.特里卡 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1