用于评估修剪指令的执行的方法和主机装置制造方法

文档序号:6533728阅读:177来源:国知局
用于评估修剪指令的执行的方法和主机装置制造方法
【专利摘要】提供一种用于评估修剪指令的执行的方法和主机装置。在一个实施例中,获得发送给存储装置的修剪和写入指令的踪迹。对于所述踪迹中的每个修剪指令,识别对于与所述修剪指令相同的逻辑块地址(LBA)的后续的写入指令,以及计算所述修剪和写入指令之间的经过时间。该信息可以用于显示柱状图,和/或优化存储装置何时执行修剪指令和/或主机装置何时发出修剪指令。
【专利说明】用于评估修剪指令的执行的方法和主机装置

【技术领域】
[0001]本申请主张美国临时申请N0.61/654,006的优先权,该申请在2012年5月31日提交,因此在此通过参照方式而合并。

【背景技术】
[0002]基于NAND技术的非易失性存储器存储装置采用擦除/编程周期,如果在写入时没有空余的块,那么该周期会影响性能。当前的基于NAND的存储装置在存储块没有使用时,主动将其擦除,从而提高性能。目前,一些主机装置可以对NAND发送“修剪(trim)”指令,从而指示存储装置某一逻辑块地址(LBA)不在被主机的文件系统所使用。但是,为了有效率地使用修剪指令需要进行调整(tuning)和分析从而确保获得足够的空余块,并且确保修剪指令本身不会降低系能/耐久度。微软的Performance Toolkit包括在驱动器水平上记录输入/输出的能力,但是其缺乏适当地评估修剪指令的有效性从而优化性能所需的分析能力。


【发明内容】

[0003]本发明的实施例通过权利要求限定,并且该部分中的任何内容都不应当视作对于这些权利要求的限制。
[0004]通过介绍的方式,下面的实施例涉及用于评估修剪指令的执行的方法和主机装置。在一个实施例中,获得发送到存储装置的少量的修剪和写入指令。对于该少量中的每个修剪指令,识别作为该修剪指令的对于相同逻辑块地址(LBA)的后续的写入指令,并且计算该修剪和写入指令之间的经过时间。该信息可以用于显示数据的柱状图,和/或优化存储装置何时执行修剪指令和/或主机装置何时发出修剪指令。也可以有其他实施例,这些实施例的每个都可以单独使用或者组合使用。下面将结合附图来描述各种实施例。

【专利附图】

【附图说明】
[0005]图1是一个实施例的示例的主机装置和存储装置的方框图。
[0006]图2是一个实施例的修剪指令分析进程的流程图。
[0007]图3是一个实施例的修剪指令分析进程所产生的柱状图。
[0008]图4是一个实施例的使用空余空间分析的修剪指令分析进程的流程图。
[0009]图5是一个实施例的使用物理空余块计数分析的修剪指令分析进程的流程图。

【具体实施方式】
[0010]主机和存储装置的示例
[0011]下面转到附图,图1是一个实施例的与存储装置100进行通信的主机装置50的方框图。如在此所使用的,“与…进行通信”可以表示直接进行通信或者经由一个或多个组件间接进行通信,该通信有可能在此展示或描述,也可能不。例如,主机装置50和存储装置100可以分别具备配合物理连接器(接口),允许存储装置100可拆卸地与主机装置50连接。主机装置50可以采用任何适合的形式,例如但不限于移动电话、数字媒体播放器、游戏装置、个人数字助手(PDA)、个人计算机(PC)、机器房(k1sk)、机顶盒、电视系统、书籍阅读器、或他们的任意组合。
[0012]本实施例中,存储装置100是大容量存储装置并且采取固态驱动器(SSD)的形式,因为这种存储装置目前支持修剪指令。其他存储装置如果支持修剪指令则可以使用,这些存储装置包括但不限于手持、可拆卸存储卡(例如,安全数字(SD)卡或多媒体卡(MMC))、通用串行总线(USB)装置以及嵌入存储器(例如,主机装置50中嵌入的安全模块),诸如SanDisk公司出品的嵌入iNAND? eSD/eMMC的闪存驱动器。
[0013]如图1所示,存储装置100包括控制器110和存储器120。控制器110包括存储器接口 111,用于与存储器120连接,以及主机接口 112,用于与主机50连接。控制器110也包括中央处理单元(CPU)115。控制器110可以以任何合适方式实施。例如,控制器110可以采用微处理器或处理器以及存储了可由(微)处理器执行的计算机可读取程序代码(例如,软件或固件)计算机可读取介质的形式、逻辑门的形式、开关的形式、换用集成电路(ASIC)的形式、可编程逻辑控制器的形式以及嵌入式微控制器的形式。可以从Marvell或SandForce获得合适的控制器。存储器120可以采用任何合适的形式。在一个实施例中,存储器120采取固态(例如,闪存)存储器的形式。但是,也可以使用其他形式的适于用于修剪指令的存储器,例如采用基于包的写入的光存储器。应当注意的是,图1所示的存储装置100仅仅是很多可能的执行方式中的一种。
[0014]现在转向主机装置50,主机装置50包括控制器160,其具有用于与存储装置100连接的存储装置接口 161。控制器160也包括中央处理单元(CPU) 163、读取存取存储器(RAM) 165以及只读存储器(ROM) 166。存储装置100也包括存储器172,用于存储例如在主机装置50中使用的应用(app)和程序(例如,浏览器、媒体播放器等)。控制器的RAM165和/或存储器172可以用作缓冲器,用于存储要发送给存储装置100的指令。主机装置50可以包括其他组件(例如,显示装置、扬声器、耳机插孔、视频输出连接等),为了简化附图这些组件没有在途I中示出。同样,也可以有其他应用方式的主机装置50。
[0015]在某些环境下,主机装置50可被操作来表现存储装置100中存储的内容。如在此所使用的,“内容”可以采取任何合适的形式,包括但不限于歌曲、电影、游戏、应用(“app”)、游戏安装程序等。根据内容类型不同,“表现”可以表示播放(例如,当内容是歌曲或电影时)、解密(例如,当内容是游戏安装程序时),或者“享受”内容所必须的任何动作。在某些实施例中,主机装置50包括表现内容所必要的软件(例如,媒体播放器),而在其他实施例中,该软件通过存储装置100或其他实体提供给主机装置50。
[0016]涉及评估修剪指令的执行的实施例
[0017]主机50在逻辑块地址(LBA)不在被使用(例如,当用户删除文件时,当文件被移动或碎片整理时等)时可以发出修剪指令来通知存储装置100。响应于该修剪指令,存储装置100可以包含LBA的页面,从而提供额外的空余空间来存放后续写入的数据。来自主机装置50的修剪指令之后常常伴随写入指令,以将数据写入擦除了的LBA。如果存储装置100在从主机装置50接收到修剪指令就执行,则存储装置100可能招致性能损失,因为擦除进程消耗时间并且如果有空余块来执行写入指令则不是立即需要的。取而代之,存储装置100可以通过在空余块中存储数据来执行写入指令,并且此后,在空闲时段执行擦除操作。但是,典型的存储装置在收到修剪指令后即执行。
[0018]下面的实施例提供能够用于分析主机装置发送修剪指令和其对同样的LBA发送后面的写入指令之间的经过时间的技术。该增量时间可以用于评估修剪指令效率,决定存储装置100是否可以延迟或避免修剪指令的执行,而且仍然实现相同或相似的性能水平,就好像修剪指令在接收时立即被执行。该信息也可以用来延迟修剪指令由主机装置50发送给存储装置100的时刻。该信息可以被可视地显示给用户(例如,通过柱状图)和/或可以手动地、自动地或半自动地调整用于执行或发送修剪指令的算法。此外,该分析可以展示该修剪指令一如果立即被执行一是否会通过释放块来提高性能,这些块否则不得不在写入指令执行期间被擦除。
[0019]返回到附图,图2是一个实施例的修剪指令分析进程的流程图200.如图2所示,该进程通过对于从主机50对存储装置100的、包括修剪和写入指令的指令的捕捉踪迹的线性分析而开始(步骤210)。应当注意的是,该进程可以由主机装置50、存储装置100或主机装置50和存储装置100之间的装置(例如,总线分析器)执行。例如,如果有主机装置50执行,则踪迹可以是发送到存储装置100的指令的记录。如果由存储装置100执行,则踪迹可以是由存储装置100从主机装置50接收到的指令的记录。如果有总线分析器或其他中间装置执行,则踪迹可以是在从主机装置50对存储装置100的传输中捕捉的指令。同样,该进程可以在指令被发送到存储装置100的实时,以离线方式被进行。
[0020]下面,决定踪迹中是否有修剪指令(步骤215),并且,如果有,则试图识别对于相同LBA的第一个写入指令(步骤220和225)。这可能调用可能存在于修剪和写入指令之间的跳过读取和其他指令。如果发现对于相同LBA的写入,则计算修剪和写入指令之间的经过时间(步骤230),并且保存该结果的计算(步骤235)(这里,用于柱状图的产生;但是如上所述,该计算可以用来调整修剪执行或传输算法)。
[0021]如果发现对于相同LBA的写入,则决定是否在相同LBA上执行了其他修剪指令而没有介入写入指令(步骤240)。如果执行了另一修剪指令(或者由于错误,或者因为主机装置50的编程),则进程将该事件记录为“双重修剪”事件(步骤245)。另一方面,如果没有执行另一修剪指令,则进程将该事件记录为“从未重写”事件(步骤250)。例如,这在如果主机装置50没有适当地将第一个修剪指令记录为已经发生的情况下可能发生。
[0022]对于踪迹中的剩余的修剪重复上述进程。结果,显示来源于计算的柱状图(步骤255),并且进程结束(步骤260)。图3表示结果的柱状图的一例。该柱状图中,在y轴示出写入次数,在X轴示出在30天期间内修剪和写入指令之间的时间。如图3所示,对于大部分写入,在对于相同的LBA的修剪和写入指令之间有15秒或更多(也有很多“双重修剪”事件和“从未写入”事件)。这表示存储装置100不必立即执行修剪指令,因为在主机装置50对相同的LBA发送写入指令之前平均花费15秒。如果证明写入指令在收到修剪指令起15秒之内被收到,那么如果在存储器中有足够的空余块的话,存储装置100仍可以执行写入指令而不必擦除。否则,存储装置100更早在接收到写入指令时可以执行擦除操作。
[0023]通过该柱状图,用户或技术人员可以调整存储装置100的固件,从而存储装置100将在执行修剪指令之前至少延迟15秒。同样,作为在踪迹中的写入总数的比例而早于15秒发出的来自柱状图的关于写入次数的信息可以被用于对存储装置100通知其应该具有能用的空余块的平均数。如上所述,该分析可由任何合适的装置执行,而且柱状图可以在主机装置50或其他装置上显示。同样,代替显示柱状图或除此以外,通过该进程收集的信息可以用于调整存储装置100和/或主机装置50,从而分别调整执行或传送修剪指令的延迟。
[0024]有很多代替方式可以与这些实施例一同使用。例如,可以使用操作系统空余盘空间询问来通过计算存储装置100可用的理论空余空间从而进一步增强分析。S卩,如果进程知道有多少空余空间,则可以将执行修剪指令以获得更多空余空间的重要性考虑在内(例如,通过根据可用剩余空间来调整执行修剪指令的频度)。这在图4的流程图400中示出。流程图400中的步骤410?460实际上与流程图200中的步骤210?260相同,除了增加的在修剪指令时检查空余空间的步骤之外(步骤422)。这例如可以通过在基于Windows的主机装置中发送获得盘空余空间指令或者在基于Linux的主机装置中发送STAT指令来执行。作为对于该指令的响应,主机装置50将提供其操作系统认为在存储装置上可用的空余空间。这些指令可以周期性地发出,或者在分析开始时发送出一次,然后根据修剪和写入的次数而调整计数。空余空间信息可以与计算出的修剪和写入指令之间的经过时间一起使用来产生柱状图(步骤435)或者执行任何其他的上述优化。
[0025]虽然图4所示的进程提供了比图2所示的进程更精确的分析,但是该分析中使用的空余空间可能不精确,由于信息是来自主机装置的操作系统而非存储装置100,并且假设由主机装置50发送的修剪指令实际上被存储装置100执行。即,被标记为由主机操作系统修剪的任何东西尽管尚未被存储装置100修剪而被标记为空余空间。为了提出这个,在另一实施例中,进程将存储装置100中的实际空余空间考虑在内。该实施例将会连同图5中的流程图500进行说明。在该流程图500中的步骤510?560实际上与图4的流程图400中的步骤410?460相同,除了来自存储装置的闪存转换层(FTL)的物理块/页被检查而不是检查由主机装置50指定的空余空间(步骤522)。(FTL将主机LBA映射到存储器中的物理块。)该操作可以通过对存储装置100的私有指令来执行。与通过上述进程同样,本进程的结构可以用于产生柱状图和/或固件、软件以及基础结构优化,从而提高修剪操作的性能。
[0026]结论
[0027]上述细节的说明应当被理解为发明可以采取的选择的形式的说明而非对于发明的限定。仅仅接下来的权利要求,包括等同范围,用来限定要求保护发明的范围。最后,应当注意的是再次所描述的任何优选实施例的任何方面可以单独或互相组合使用。
【权利要求】
1.一种主机装置,包括: 存储装置接口,所述主机可以通过该存储装置接口与存储装置通信;以及 控制器,与存储装置接口进行通信, 其中,所述控制器被构成为: 获得发送给存储装置的修剪和写入指令的踪迹;并且 对于所述踪迹中的每个修剪指令: 识别对于与所述修剪指令相同的逻辑块地址(LBA)的后续的写入指令;以及 计算所述修剪和写入指令之间的经过时间。
2.如权利要求1所述的主机装置,其中,所述控制器还被构成为: 根据所述计算的经过时间产生柱状图。
3.如权利要求1所述的主机装置,其中,所述控制器还被构成为: 根据所述计算的经过时间调整所述存储装置何时执行修剪指令。
4.如权利要求1所述的主机装置,其中,所述控制器还被构成为: 根据所述计算的经过时间调整所述主机装置何时发出修剪指令。
5.如权利要求1所述的主机装置,其中,所述控制器还被构成为: 如果没有识别对于相同的LBA的后续的写入指令,决定是否对相同的LBA发出了另一修剪指令而没有介入的写入指令。
6.如权利要求5所述的主机装置,其中,所述控制器还被构成为: 如果对相同的LBA发出了另一修剪指令而没有介入的写入指令,则记录双重修剪事件。
7.如权利要求5所述的主机装置,其中,所述控制器还被构成为: 如果对相同的LBA发出了另一修剪指令而没有介入的写入指令,则记录从未重写事件。
8.如权利要求1所述的主机装置,其中,所述控制器还被构成为: 根据主机装置数据决定可用LBA空间。
9.如权利要求8所述的主机装置,其中,所述控制器还被构成为: 根据所述计算的经过时间和所述可用LBA空间调整所述存储装置何时执行修剪指令。
10.如权利要求8所述的主机装置,其中,所述控制器还被构成为: 根据所述计算的经过时间和所述可用LBA空间调整所述主机装置何时发出修剪指令。
11.如权利要求1所述的主机装置,其中,所述控制器还被构成为: 决定所述存储装置中的可用物理块。
12.如权利要求11所述的主机装置,其中,所述控制器还被构成为: 根据所述计算的经过时间和所述可用LBA空间调整所述存储装置何时执行修剪指令。
13.如权利要求11所述的主机装置,其中,所述控制器还被构成为: 根据所述计算的经过时间和所述可用LBA空间调整所述主机装置何时发出修剪指令。
14.一种用于评估修剪指令的执行的方法,所述方法包括: 在存储装置外部的、且与其进行通信的装置中执行如下动作: 获得发送给存储装置的修剪和写入指令的踪迹;并且 对于所述踪迹中的每个修剪指令: 识别是否存在对于与所述修剪指令相同的逻辑块地址(LBA)的后续的写入指令;以及如果存在对于相同的LBA的后续的写入指令,则计算所述修剪和写入指令之间的经过时间。
15.如权利要求14所述的方法,还包括: 根据所述计算的经过时间产生柱状图。
16.如权利要求14所述的方法,还包括: 根据所述计算的经过时间调整所述存储装置何时执行修剪指令。
17.如权利要求14所述的方法,还包括: 根据所述计算的经过时间调整所述主机装置何时发出修剪指令。
18.如权利要求14所述的方法,还包括: 如果没有对于相同的LBA的后续的写入指令,决定是否对相同的LBA发出了另一修剪指令而没有介入的写入指令。
19.如权利要求18所述的方法,还包括: 如果对相同的LBA发出了另一修剪指令而没有介入的写入指令,则记录双重修剪事件。
20.如权利要求18所述的方法,还包括: 如果对相同的LBA发出了另一修剪指令而没有介入的写入指令,则记录从未重写事件。
21.如权利要求14所述的方法,还包括: 根据主机装置数据决定可用LBA空间。
22.如权利要求21所述的方法,还包括: 根据所述计算的经过时间和所述可用LBA空间调整所述存储装置何时执行修剪指令。
23.如权利要求21所述的方法,还包括: 根据所述计算的经过时间和所述可用LBA空间调整所述主机装置何时发出修剪指令。
24.如权利要求14所述的方法,还包括: 决定所述存储装置中的可用物理块。
25.如权利要求24所述的方法,还包括: 根据所述计算的经过时间和所述可用LBA空间调整所述存储装置何时执行修剪指令。
26.如权利要求24所述的方法,还包括: 根据所述计算的经过时间和所述可用LBA空间调整所述主机装置何时发出修剪指令。
27.如权利要求26所述的方法,其中,所述方法由所述主机装置执行。
28.如权利要求26所述的方法,其中,所述方法由所述主机和存储装置之间的装置执行。
29.如权利要求28所述的方法,其中,所述主机和存储装置之间的装置是总线分析仪。
【文档编号】G06F3/06GK104272243SQ201380023365
【公开日】2015年1月7日 申请日期:2013年4月17日 优先权日:2012年5月31日
【发明者】O.科恩, E.索博尔, O.吉拉德, J.G.哈恩 申请人:桑迪士克科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1