考虑总字节写入需求时设置高速缓冲存储器的大小的制作方法

xiaoxiao2021-3-1  225

考虑总字节写入需求时设置高速缓冲存储器的大小的制作方法
【专利说明】考虑总字节写入需求时设置高速缓冲存储器的大小
[0001] 相关申请的交叉引用
[0002] 本申请要求2014年10月6日提交的名称为"MANAGEMENT SCHEMES FOR NAND FLASH WITH VARIABLE-SIZED CACHE(具有可变大小的高速缓冲存储器的与非快闪存储 器的管理方案)"的美国临时专利申请N〇.62/060,387和2015年9月2日提交的名称为 "SIZING A CACHE WHILE TAKING INTO ACCOUNT A TOTAL BYTES WRITTEN REQUIREMENT(考 虑总字节写入需求时设置高速缓冲存储器的大小)"的美国专利申请No. 14/843, 632的优 先权,其全部内容通过引用合并于此用于所有目的。
【背景技术】
[0003] 在一些固态储存系统中,固态储存介质或驱动器的一小部分被设计为高速缓冲存 储器。(注意高速缓冲存储器在固态储存介质本身上,而不是在(固态)储存控制器上)。 在一些情况下,高速缓冲存储器使用每个单元储存1位的单级单元(SLC)来实现,而常规 驱动器(即,不在高速缓冲存储器中的其余的固态储存介质)使用一些密集单元技术(诸 如,每个单元储存2位的多级单元(MLC)或每个单元储存3位的三级单元(TLC))。由于不 同的密度,与常规驱动器相比,高速缓冲存储器将具有更快的读取时间和写入时间,更加容 错,且能够承受更多的编程和擦除(P/E)循环。因为SLC与MLC(或TLC)之间的位密度差, 因此缺点是高速缓冲存储器中的块将具有比常规驱动器中的块小的容量。能够更好地选择 高速缓冲存储器的大小(例如,在允许高速缓冲存储器改变大小的模式期间)的新技术是 期望的。
【附图说明】
[0004] 在下面的【具体实施方式】和附图中公开了本发明的各种实施例。
[0005] 图1是图示至少部分地基于总字节写入(total bytes written,TBW)需求来设置 高速缓冲存储器的大小的过程的实施例的流程图。
[0006] 图2是图示包括可变大小的高速缓冲存储器的固态储存系统的实施例的示图。
[0007] 图3是图示判断固态储存系统是处于可变大小模式还是处于固定大小模式的过 程的实施例的流程图。
[0008] 图4是图示高速缓冲存储器大小(s)对可变大小模式中的剩余P/E循环(PER)的 曲线图的实施例的示图。
[0009] 图5是图示至少部分地基于TBW需求来确定高速缓冲存储器的大小的过程的实施 例的流程图。
[0010] 图6是图示至少部分地基于固态储存系统在固定大小模式期间的未来状态来确 定高速缓冲存储器的大小的过程的实施例的流程图。
[0011] 图7是图示缩小高速缓冲存储器的大小的过程的实施例的流程图。
[0012] 图8是图示用于写入固态储存设备(包括高速缓冲存储器和常规驱动器)的过程 的实施例的流程图。
[0013] 图9是图示高速缓冲存储器扩大大小的过程的实施例的流程图。
[0014] 图10是图示有助于磨损均衡的块交换(block swapping)过程的实施例的流程 图。
【具体实施方式】
[0015] 本发明能够以很多方式(包括方法、装置、系统、组合物、在计算机可读储存介质 上实施的计算机程序产品和/或处理器(诸如,被配置为执行储存在耦接至处理器的存储 器中和/或由耦接至处理器的存储器提供的指令的处理器))来实现。在该说明书中,这些 实施方式或本发明可以采用的任何其他形式可以被称为技术。一般而言,在本发明的范围 内可以改变所公开过程的步骤的顺序。除非另有说明,否则组件(诸如,被描述为被配置为 执行任务的处理器或存储器)可以实施为被临时配置为在给定时间执行任务的一般组件 或被制造为执行任务的特定组件。如本文所用的,术语"处理器"指被配置为处理数据(诸 如,计算机程序指令)的一个或更多个器件、电路和/或处理核。
[0016] 在下面本发明的一个或更多个实施例的【具体实施方式】与图示本发明的原理的附 图一起被提供。虽然结合这样的实施例来描述本发明,但是本发明不局限于任何实施例。本 发明的范围仅由权利要求限制,并且本发明包括很多替代、修改和等同物。在下面的描述中 阐述了很多具体细节以便提供对本发明的全面理解。出于示例的目的来提供这些细节,并 且在不存在一些或全部这些具体细节的情况下可以根据权利要求来实践本发明。出于清楚 的目的,未详细描述与本发明相关的技术领域中已知的技术材料,使得本发明没有被不必 要地混淆。
[0017] 图1是图示至少部分地基于总字节写入(TBW)需求来设置高速缓冲存储器的大小 的过程的实施例的流程图。例如,该过程可以用于设置固态储存介质或驱动中的高速缓冲 存储器的大小(例如,如果需要,一次或多次),使得响应时间被改善或最优化,而不使高速 缓冲存储器如此之大以至于违反TBW需求(例如,在未来)。在一些实施例中,该过程由固 态储存设备控制器执行,固态储存设备控制器控制固态储存驱动器或介质如何被划分为高 速缓冲存储器部分和常规驱动器部分。在一些实施例中,当允许高速缓冲存储器改变大小 时,该过程在可变大小模式或时段期间执行。
[0018] 在100处,获取与固态储存设备关联的总字节写入(TBW)需求。不同于其他类型 的储存设备(诸如,硬盘驱动器(HDD)),固态储存设备随使用而磨损。更具体地,编程和擦 除(P/E)循环破坏固态储存单元中的电绝缘,使它们随着固态储存介质经历的P/E循环的 数量的增加而关于电荷"泄漏"。为了简单起见,有时假设当达到某一最大数量的P/E循环 时固态储存单元磨损。根据固态储存设备如何因编程和擦除而磨损,系统制造商常常具有 固态储存介质制造商必须满足的总字节写入(TBW)需求。
[0019] TBW需求通常是关于从主机发送至固态储存设备控制器的写入数据量。这意味着 写入放大(write amplification, WA)越多(例如,其中WA被定义为固态储存介质或驱动 器的写入的总数量(例如,主机写入加上开销写入)与主机写入的数量的比率),固态储存 介质将必须越鲁棒,以便承受由较大WA值造成的额外开销写入。在一个示例中,256GB的固 态储存驱动具有与其关联的1TB的TBW需求。如果所有写入均匀地遍布于固态储存介质, 则每个块(或更通常地,位置)被写入大约4次。然而,要注意的是,必须支持写入位置的 任何顺序或组合,因此固态储存介质必须(还)能够容忍被发送至相同逻辑块地址的1TB 的写入数据(作为示例)。
[0020] 在102处,至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储 器的大小。以下更详细地描述一些这种示例。
[0021] 在104处,高速缓冲存储器的大小被调整为确定大小。在一些实施例中,高速缓冲 存储器的大小可以在可变大小模式期间根据需要来调整多次。在一个示例中,对于更简单 系统(例如,具有有限处理能力的消费产品),可以在可变大小模式开始时设置一次高速缓 冲存储器的大小。对于更关注性能且存在更多可用的处理资源的系统(例如,企业系统), 可以在可变大小模式期间根据需要来重新设置高速缓冲存储器的大小多次。
[0022] 高速缓冲存储器通常具有比常规驱动器低的位密度。在以下描述的一些示例中, 高速缓冲存储器每单元储存1位,而常规驱动器每单元储存2位。由于块的总数量(即,高 速缓冲存储器中的块的数量加上常规驱动器中的块的数量)是固定的,因此增大高速缓冲 存储器的大小会减小总储存容量或全部储存容量,因为高速缓冲存储器通常每个块具有较 少位。
[0023] 较小总储存容量(由增大的高速缓冲存储器大小而造成的)意味着主机写入和开 销写入更加集中,使得每个块要经历更多的编程和擦除。危险是如果高速缓冲存储器过大, 则将违反TBW需求,因为过大的高速缓冲存储器将使P/E计数超过最大P/E计数(例如,假 设块在最大P/E计数处磨损)。换句话说,在高速缓冲存储器的大小与满足TBW需求的裕 度(例如,根据块在最大P/E计数处磨损之前的过量或剩余P/E循环而测量的)之间存在 折衷。
[0024] 在一些实施例中,图1的过程用于选择高速缓冲存储器的最大可能大小以改善性 能,但不是如此之大以至于违反TBW需求(例如,因为超过某一最大数量的P/E循环)。即, 该技术使高速缓冲存储器的大小能够被设置,使得系统以用于满足TBW需求的较小裕度为 代价而具有改善的性能(例如,当满足TBW需求时,单元接近于磨损,但实际上未达到某一 最大P/E循环计数(为了简单起见,假设在某一最大P/E循环计数处所述单元失效))。
[0025] 改变高速缓冲存储器的大小(例如,与贯穿固态储存系统的生命周期保持固定的 高速缓冲存储器的大小相反)的一个好处在于:能够将系统的吞吐量增加(其中较大的高 速缓冲存储器大小是期望的,因为当存在高速缓冲存储器命中时其允许更快的响应时间) 至TBW需求允许的程度,而没有实际违反TBW需求。
[0026] 下面的附图示出执行图1中描述的过程的固态储存系统的示例。
[0027] 图2是图示包括可变大小的高速缓冲存储器的固态储存系统的实施例的示图。固 态储存设备控制器200是执行图1的过程的系统的一个示例。在一些实施例中,固态储存 设备控制器200是半导体器件(诸如,专用集成电路(ASIC)或现场可编程门阵列(FPGA))。
[0028] 在所示示例中,固态储存设备220被划分为高速缓冲存储器222和常规驱动器 224。在该具体示例中,高速缓冲存储器使用每单元储存1位的单级单元(SLC)来实现。高 速缓冲存储器222实现为SLC使得其能够以较少错误来更快地回读。由于只存在两个分布 (例如,一个是0和一个是1),因此电压分布定位更远,以及因此存在较少的回读错误和需 要执行的纠错解码的较少循环。
[0029] 相反地,常规驱动器224使用每单元储存2位的多级单元(MLC)来实现。结果,存 在4个分布(例如,一个是00, 一个是01,一个是10和一个是11),以及它们必须挤入与两 个SLC分布相同的电压范围中。因此MLC分布与SLC分布相比相互更接近,以及因此将发 生更多的回读错误并且将需要执行纠错解码的更多错误循环。这是为什么SLC高速缓冲存 储器222与MLC常规驱动器224相比能够以较少错误而被更快地回读。在一些实施例中, 常规驱动器224使用每单元储存3位的三级单元(TLC)来实现。
[0030] 主机接口 204从主机(未示出)接收读取指令和写入指令。在主机接口 204的内 部是写入字节计数器202,其计数从主机接收到的写入数据量。在一些实施例中,从写入字 节计数器202获取TBW P(t)的值(已经被写入并且对TBW需求计数的主机数据量)。
[0031] 在该示例中,高速缓冲存储器控制器206定期地确定高速缓冲存储器222的大小, 并且是执行图1中的步骤102的组件的一个示例。在一些实施例中,逻辑至物理(L2P)映 射表208用于记录固态储存设备220的哪个部分属于高速缓冲存储器222和固态储存设备 220的哪个部分属于常规驱动器224。例如,L2P映射表208可以包括在高速缓冲存储器222 和常规驱动器224中的(例如,物理)地址的范围。
[0032] 在一些实施例中,固态储存设备220被配置为支持高速缓冲存储器,高速缓冲存 储器的大小是可配置的或另外可调整的。在一些这样的实施例中,固态储存设备220可 以暴露对固态储存设备控制器220的接口或控制,以为高速缓冲存储器222和常规驱动器 224(例如,SLC、MLC、三级单元(TLC)等)指定位密度,并且指定哪些(例如,物理)地址在 高速缓冲存储器中和哪些(例如,物理)地址在常规驱动器中。
[0033] 在如何使用高速缓冲存储器222和常规驱动器224的一个示例中,主机(未示出) 意识到存在高速缓冲存储器,并且有能力标记、贴标签或以其它方式指示(如果需要)什么 主机写入数据应当被储存在高速缓冲存储器222中和什么主机写入数据应当被储存在常 规驱动器224中。例如,如果由主机接口 204接收到的主机写入包括高速缓冲存储器标签, 则该写入数据被储存在高速缓冲存储器222中。如果否,则写入数据被储存在常规驱动器 224 中。
[0034] 可替代地,主机没有意识到高速缓冲存储器和/或不具有对什么主机写入数据被 储存在高速缓冲存储器中的控制。在这样的系统的一个示例中,温度识别器212确定从主 机接收到的写入数据的温度。如果数据在未来不久将被无效(或至少被认为是无效的)或 被另外地重写,则数据是热的。如果数据在很长时间内保持有效(即,未被重写),则数据 是冷的。主机写入温度识别器212可以使用任何合适的技术来确定从主机接收到的写入数 据的温度。基于由温度识别器212确定的温度,热数据被储存在高速缓冲存储器222中而 冷数据被储存在常规驱动器224中。如何将数据分配至高速缓冲存储器222和常规驱动器 224的这些示例仅是说明性的而非意在进行限制。
[0035] 如以下将更详细描述的,为了调整高速缓冲存储器222的大小(参见,图1中的步 骤104),可以在一些实施例中使用垃圾收集器210。可替代地,在高速缓冲存储器222或常 规驱动器224中可以已经存在(例如,未执行垃圾收集)足够的空闲块(free block)(即, 空的且可用于被写入的块)被再分配为另一种块,并且调整大小是相对简单的过程(例如, 高速缓冲存储器控制器206更新储存在逻辑至物理映射表208中的信息,使得空块(empty block)从高速缓冲存储器222移动至常规驱动器器224,或反之亦然)。
[0036] 在一些实施例中,固态储存设备220包括被称为预留空间(overprovisioning)的 一些额外容量(例如,非宣称的)。例如,具有7%的预留空间的(据称)1GB驱动器实际上 具有1. 07GB的实际储存空间。
[0037] 在一些实施例中,固态储存系统以可变大小模式开始(例如,在可变大小模式中 允许高速缓冲存储器222的大小改变),并且以固定大小模式结束(例如,在固定大小模式 中高速缓冲存储器222的大小是固定的)。下面的附图示出一个这种例子。
[0038] 图3是图示判断固态储存系统是处于可变大小模式还是处于固定大小模式的过 程的实施例的流程图。在一些实施例中,该过程由固态储存设备控制器执行。
[0039] 在300处,判断是否已经满足一个或更多个固定大小模式标准。例如,假设存在某 一值PE R,PER是能够由固态储存介质在切换至固定大小模式之前的可变大小模式期间经历 的P/E循环的数量。例如,对固态储存介质(例如,高速缓冲存储器或常规驱动器)的所有 编程操作和擦除操作将对该PE R值计数。如果P/E计数(例如,对于整个固态储存介质或 驱动器作为整体)满足卩匕值,则将满足示例性固定大小模式标准。
[0040] 如以下将更详细地描述的,改变高速缓冲存储器的大小(例如,在可变大小模式 期间从第一 /起始高速缓冲存储器大小至第二高速缓冲存储器大小)有时对应于改变per 值(例如,从第一 /起始?匕值至第二PE ^直)。因此,在一些实施例中,步骤300处的决定 或测试包括判断PEjf数是否与当前或最新PE ^直匹配。
[0041] 如果满足固定大小模式标准,则在步骤302处获取固定大小。例如,可以存在高速 缓冲存储器应当被设置的某一预定义大小。在一些实施例中,在图1的步骤102处的大小 计算假定了高速缓冲存储器在固定大小模式期间的特定大小,并且在步骤302处获取在计 算中使用的该大小。
[0042] 在304处,将高速缓冲存储器的大小调整为固定大小。在一些实施例中,垃圾收集 用于重新设置高速缓冲存储器和常规驱动器器的大小。在一些实施例中,在高速缓冲存储 器和常规驱动器器中存在足够的空闲块,使得重新设置大小的过程相对简单。
[0043] 然后该过程结束,因为一旦高速缓冲存储器处于固定大小模式就不允许随后改变 高速缓冲存储器的大小。
[0044] 如果在步骤300处不满足固定大小模式标准,则执行图1的过程,因为系统(仍) 处于可变大小模式。要注意的是,可能不期望不断地重新计算高速缓冲存储器大小并连续 地调整它,因此在该过程经由"否"路径退出步骤300之后,图1的过程可以不立即开始。
[0045] 在图1的过程结束之后,在步骤300处(再次)判断是否满足固定大小模式标准。 即,虽然该系统以可变大小模式开始并且被允许从可变大小模式转为固定大小模式,但是 不允许该系统从固定大小模式转为可变大小模式。
[0046] 下面的附图描述在图1的步骤102处如何确定高速缓冲存储器的大小的更具体的 示例。首先,讨论详细的示例。然后,讨论关于详细的示例的一些概括。
[0047] TBWR(t)是在时间t处保持被写入(例如,为了满足TBW需求)的数据量(例如, 以MB、TB等)。例如,下标R表示剩余。TBW R⑴能够被写为:
[0049] 其中:
[0050]

[0052] 表1:等式⑴中的输入
[0053] 等式(1)中的一些输入(诸如,C(t)和WA(s))随s(即,高速缓冲存储器的大小) 而变化。如上所述,c(t)取决于s,因为高速缓冲存储器和常规驱动器通常具有不同的位密 度(例如,SLC和MLC),因此总容量将取决于高速缓冲存储器的大小。类似地,如果容量随 s而变化,则写入放大也随s而变化。例如,假设高速缓冲存储器的大小增大,使得固态储存 驱动器(作为整体)的容量减小。这将趋于引起更多的垃圾收集,进而将引起更多的写入 放大。
[0054] 等式⑴中的一些输入(诸如,PEeaehe和PE fegulaf)随PER而变化。由于高速缓冲存 储器和常规驱动器在固定大小模式期间的大小被预定义,因此需要由高速缓冲存储器和常 规驱动器支持的P/E循环的数量取决于在可变大小模式期间将处理或另外地经历多少P/E 循环(即,PER),以便稍后它们在固定大小模式期间不需要被处理。
[0055] 剩余的输入Ceaehe、Cfegu1' WAeaeh% WA fegulal'既不取决于s也不取决于PE R〇
[0056] TBWR(t)可以被写为如下,其中该不等式从TBW需求获取:
[0057 ] TBffR(t) ^ TBff(t)-TBffP(t) (2)
[0058] 其中,TBWp(t)是时间t处已经被写入的数据量(例如,以MB、TB等为单位)(例 如,以及其对TBW需求计数)。例如,下标P可以表示过去或先前。在一个示例中,在主机接 口(例如,其在固态储存设备控制器中)中存在计数器,其计数从主机发送至固态储存设备 控制器的写入数据量,并且从这样的计数器获取TBW P (t)。
[0059] 等式⑴中的输入取决于s、PER或不取决于s和PE R意味着存在s和PE啲组合, 该组合不违反等式(2)。换句话说,高速缓冲存储器的大小可以在可变大小模式期间根据需 要而调整多次,其中,每次认真选择s和ΡΕ??得等式(2)保持。例如,在时间0处的初始 化大小期间,高速缓冲存储器的大小被设置为s D并且ΡΕ^设置为PER,。,其中(sQ,PER,。)不 违反等式(2)。在时间^处的较晚时间点(仍在可变大小模式期间)处,高速缓冲存储器 的大小可以被设置为 Sl并且PER被设置为PEu,其中(SpPEy)不违反等式(2)。假设由于 固态储存驱动器(作为整体)已经经历PE RfP/E循环,因此满足当前PER值(在该时间点 当前PER值是PE Ril)。然后该系统被切换至固定大小模式,例如通过将高速缓冲存储器的大 小设置为某一预定义大小并且将常规驱动器的大小设置为另一预定义大小。
[0060] 下面的附图示出使用等式(1)获取的(S,PER)的示例性组合,其不引起等式(2)被 违反。
[0061] 图4是图示高速缓冲存储器大小(s)对可变大小模式中的剩余P/E循环的曲线图 的实施例的示图。在所示示例中,示图400的X轴是高速缓冲存储器大小(s),而示图400 的y轴是可变大小模式中的剩余P/E循环(PE R)。
[0062] 阴影区402示出不违反TBW需求(例如,在等式⑵中所表示的)的(s,PER)的 组合。只要在阴影区402中选择数据点,计算选中的高速缓冲存储器大小就不违反TBW需 求。例如,如果数据点A(410)、B(412)、C(414)或D(416)被选中,则高速缓冲存储器大小 与剩余P/E循环的对应组合(即,(s A,PER,A)、(SB,PER, B)、(Sc、PER』)和(SD,PER, D))将不违 反TBW需求。与此相反,点E (418)(其在阴影区402的外部)对应于(SE,PEr,e)的数据点, (S E,PEr,e)是违反TBW需求的组合。
[0063] 例如,假设点B (412)被选中。高速缓冲存储器将被设置为SB的大小,以及PE RiB的 P/E计数将用于确定何时从可变大小模式切换至固定大小模式。
[0064] 在一些实施例中,与点C(414)关联的高速缓冲存储器大小被选中,因为其通过选 择最大的高速缓冲存储器大小(其不违反TBW需求)而使吞吐量最优化。例如,这在响应 时间是高优先级的应用中可能是期望的。在一些实施例中,与点B(412)关联的高速缓冲存 储器大小被选中,因为其是性能与裕度量(TBW需求满足于该裕度量)之间更均衡的折衷。 在一些实施例中,与点A(410)关联的高速缓冲存储器大小被选中。这在响应时间不是所关 心的而重要的是具有满足TBW需求的大量裕度的应用中可能是期望的。
[0065] 注意如果需要,则高速缓冲存储器可以在可变大小模式期间根据需要而被多次重 新设置大小。每次执行图1的过程,可以重新绘制或重新计算示出不违反TBW需求的(S, PER)的组合的新图表。例如,更新的或更当前的信息可以影响等式⑴的输入,该输入进而 影响不违反TBW需求的(s,PE R)的组合。
[0066] 在图1的上下文中,步骤102可以按照该图中示出的示例以下面方式来执行。
[0067] 图5是图示至少部分地基于TBW需求来确定高速缓冲存储器的大小的过程的实施 例的流程图。在一些实施例中,图1中的步骤102包括图5的过程。
[0068] 在500处,确定(1)高速缓冲存储器大小和(2)可变大小模式中的剩余编程和擦 除(P/E)计数的多个组合,该多个组合不违反TBW需求。例如,在图4中,阴影区(402)示 出不违反TBW需求的(s,PE R)的组合。
[0069] 在502处,选中多个组合中的一个,其中与选中组合对应的高速缓冲存储器大小 是确定的高速缓冲存储器大小,以及与选中组合对应的剩余P/E计数与可变大小模式的结 束相关联。可以采用任何合适的选择技术(以上描述一些示例)。
[0070] 返回等式(1),在可变大小模式期间执行高速缓冲存储器大小的确定,但是考虑固 态储存设备在稍后的固定大小模式期间将处于什么状态。下面的附图示出了这种示例。
[0071] 图6是图示至少部分地基于固态储存系统在固定大小模式期间的未来状态来确 定高速缓冲存储器的大小的过程的实施例的流程图。在一些实施例中,图1中的步骤102 包括图6的过程。
[0072] 在600处,确定(1)高速缓冲存储器大小和(2)可变大小模式中的剩余编程和擦 除(P/E)计数的多个组合,该多个组合不违反TBW需求,其中该确定至少部分地基于固态储 存设备在可变大小模式之后的固定大小模式期间的未来状态。例如,未来状态可以包括下 列项中的一个或更多个:PE eaehe、PEfegu1' Ceaehe、Cfegu1' WAeaeheS WA fegulaf(参见表 1)。
[0073] 在602处,选中多个组合中的一个,其中与选中组合对应的高速缓冲存储器大小 是确定的高速缓冲存储器大小,以及与选中组合对应的剩余P/E计数与可变大小模式的结 束相关联。以上描述了一些示例。
[0074] 返回图1,步骤104与将高速缓冲存储器的大小(和相应地,常规驱动器的大小) 调整为确定大小相关联。下面的附图描述了一个这种示例。
[0075] 图7是图示缩小高速缓冲存储器的大小的过程的实施例的流程图。例如,当需要 缩小高速缓冲存储器的大小时,图1中的步骤104可以包括图7的过程。注意图7的过程 相应地引起常规驱动器的大小增大。
[0076] 在700处,判断是否减小高速缓冲存储器大小。如果不需要减小高速缓冲存储器 大小,则该过程结束。(注意在某些情况下,在图7的过程结束之后,接下来执行图8的步骤 816)该检查明确地图示了图7与缩小高速缓冲存储器的大小(例如,和不扩大高速缓冲存 储器的大小)有关。
[0077] 如果在700处确定不需要减小高速缓冲存储器大小,则在702处判断是否了设置 大小再分配标志。大小再分配标志用于确保至多一个重调大小的操作立刻运行。如果在 702处已经设置了大小再分配标志,则该过程将继续步骤702处的检查直到标志被清除。
[0078] 如果(或一旦)大小再分配标志在步骤702处被清除,则在步骤704处设置大小 再分配标志(例如,使得在该重调大小的过程运行时不能运行另一个重调大小的过程)。然 后在706处,一个或更多个空高速缓冲存储器块被指定为空常规驱动器块。根据实施方案, 可以以各种方式(例如,通过改变对应于高速缓冲存储器/常规驱动器且被储存在逻辑至 物理映射表中的(例如,物理)地址,或者如果固态储存驱动被配置为管理和/或记录其本 身的什么部分对应于高速缓冲存储器和其本身的什么部分对应于常规驱动器,则将该改变 通知固态储存驱动本身)来记录该改变。
[0079] 在该特定示例中,假设该系统在高速缓冲存储器中保持最小数量的空闲块,使得 一个或更多个空闲块能够被传送至常规驱动器。照此,在该示例中,不需要在706处的指定 之前执行垃圾收集或另外地使高速缓冲存储器块空闲。然而,在步骤706的指定之后,可能 需要执行垃圾收集以便增加空高速缓冲存储器块,使得满足最小值。
[0080] 对于常规驱动器是满的时的情形来说,始终确保存在至少最小数量的空高速缓冲 存储器块是有利的(例如,利用的LBA范围等于用户容量)。如果没有维持最小数量的空高 速缓冲存储器块,则高速缓冲存储器通常通过将来自高速缓冲存储器的数据垃圾收集至常 规驱动器中来使块空闲。然而,当常规驱动器是满的时这将是不可能的,因为无处放置来自 高速缓冲存储器的有效数据。照此,该情形发生时,可以期望总是维持某一最小数量的空高 速缓冲存储器块。另一优点是能够相当快地完成缩小大小(例如,不需要等待垃圾收集,在 一些系统中仅允许垃圾收集在特定时间处和/或在已经执行特定数量的主机访问之后发 生)。
[0081] 下面的附图示出可以执行图7的高速缓冲存储器缩小大小的过程的示例性更大 上下文。
[0082] 图8是图示用于写入至固态储存设备(包括高速缓冲存储器和常规驱动器)的过 程的实施例的流程图。在所示示例中,该过程图示高速缓冲存储器缩小大小的过程如何或 何时被合并至固态储存系统的操作的大上下文中的示例。该过程可以由固态储存设备控制 器(诸如,图2中的控制器200)执行。
[0083] 在800处,主机数据被写入至高速缓冲存储器。在该示例中,新写入数据总是被写 入至高速缓冲存储器中,即使其最终目的地是常规驱动器。在一些情况下,例如,如果数据 被分类为热数据或者主机已经指示写入数据应当被储存在高速缓冲存储器中,则数据可以 保持在那里。可 替代地,如果数据被分类为冷数据或者主机指示其应当被储存在常规驱动 器中,则数据可以被传送至常规驱动器。例如,与常规驱动器相比,数据可以更快地写入高 速缓冲存储器,因此为了加速写入时间,数据被首先写入高速缓冲存储器,然后从高速缓冲 存储器复制(如果需要)到常规驱动器。
[0084] 在802处,判断开放的高速缓冲存储器块是否由主机数据充满。例如,当将主机数 据写入至高速缓冲存储器时,高速缓冲存储器中的当前开放块可以变满并且需要在高速缓 冲存储器中开放主机数据被指向和被写入的新块。如果在802处开放的高速缓冲存储器块 是不满的,则该过程返回至步骤800处的写入主机数据。例如,开放的高速缓冲存储器块可 能还未完全满,因此不需要开放新块。
[0085] 如果在步骤802处确定开放的高速缓冲存储器块是满的,则在步骤804处判断最 小数量的空高速缓冲存储器块是否可用。类似于上述示例,在高速缓冲存储器中维持最小 数量的空高速缓冲存储器块。如果在步骤804处最小数量的空高速缓冲存储器块可用,则 在806处开放高速缓冲存储器块以及在步骤800处写入更多的主机数据。
[0086] 如果在步骤804处最小数量的空高速缓冲存储器块不可用,则在808处对高速缓 冲存储器执行垃圾收集,其中在摄取的高速缓冲存储器块中的有效数据被输出至常规驱动 器。这导致块在高速缓冲存储器中被空闲。
[0087] 在810处,判断垃圾收集是否已经实现最小数量的空高速缓冲存储器块。如果是, 则在812处重置大小再分配标志并且该过程结束。注意在步骤812处清除该标志使能够操 作另一个高速缓冲存储器重调大小过程(参见例如,图7中的步骤702处的检查的描述)。
[0088] 如果在步骤810处通过垃圾收集未实现最小数量的空高速缓冲存储器块,则在 814处判断开放的常规驱动器块是否根据垃圾收集而充满。如果是,则执行图7的过程(即, 缩小高速缓冲存储器的大小,这导致空闲块被增加至常规驱动器)。
[0089] 在执行图7的过程之后,在步骤816处,为使用空常规驱动器块(其来自高速缓冲 存储器缩小大小的过程)的垃圾收集过程开放常规驱动器块。在步骤816处开放常规驱动 器块之后,或者如果在步骤814处决定不开放常规驱动器块,则在步骤808处再次执行垃圾 收集。
[0090] 图8中示出的过程是相对详细的示例。更一般地,可以在步骤816处开放常规驱 动器块之前执行图7的过程,然后在步骤808处执行垃圾收集。将高速缓冲存储器缩小大 小的过程合并至垃圾收集过程的一个优点是高速缓冲存储器的垃圾收集过程已经存在并 且有时间被最优化。即,已经存在减少高速缓冲存储器的大小的过程(并且该过程有时间 被细化),因此不需要"无谓的重复劳动"。第二优点是高速缓冲存储器的垃圾收集必须发 生,因此同时发生高速缓冲存储器缩小大小的操作没有引入新的开销操作。
[0091] 自然地,在一些情况下可以增大高速缓冲存储器的大小。以下是这种过程的示例。
[0092] 图9是图示高速缓冲存储器扩大大小的过程的实施例的流程图。在一些实施例 中,图1中的步骤104包括图9的过程。在900处,判断是否增大高速缓冲存储器大小。如 果是,则在902处判断最小数量的空常规驱动器块是否可用。如在以上示例中,该系统确保 在常规驱动器(就像高速缓冲存储器)中至少存在某一最小数量的空块。
[0093] 如果在902处最小数量的空常规驱动器块可用,则在908处将一个或更多个空常 规驱动器块指定为空高速缓冲存储器块。如果在902处最小数量的空常规驱动器块不可 用,则该系统通过安排常规驱动器的垃圾收集来使一些块空闲。在该示例中,垃圾收集等待 直到某一预定义时间或预定义事件,以便缩减开销写入(例如,如写入放大所测量的)。
[0094] 步骤906查看垃圾收集是否已经完成。该过程将在步骤906处等待直到垃圾收集 已经完成。一旦在步骤906处垃圾收集已经完成,或如果在步骤902处最小数量的空常规 驱动器块是可用的,则在908处一个或更多个空常规驱动器块被指定为空高速缓冲存储器 块。
[0095] 磨损均衡(wear leveling)是通过其具有较低P/E计数的块被空闲使得新空闲的 块有希望能够被写入,从而导致固态储存设备的P/E计数更加均等的过程。不仅在高速缓 冲存储器和常规驱动器中进行磨损均衡,还在高速缓冲存储器与常规驱动器之间进行磨损 均衡,使得所有块同时磨损(例如,独立于它们是在高速缓冲存储器中还是在常规驱动器 中)。下面的附图示出可以有助于磨损均衡的示例性块交换过程。在一些实施例中,结合图 1来执行下面的过程。
[0096] 图10是图示有助于磨损均衡的块交换过程的实施例的流程图。在所示示例中,独 立地对高速缓冲存储器和常规驱动器执行垃圾收集和磨损均衡(例如,其中对于高速缓冲 存储器和常规驱动器中的源块(source block)和/或目的块(destination block),垃圾 收集和/或磨损均衡过程使用不同的选择技术),以及每当对高速缓冲存储器或常规驱动 器执行磨损均衡或垃圾收集时可以执行该过程。在该示例中,假设高速缓冲存储器和常规 驱动器中的每个具有它们自己的空块池或空闲块池。不存在(例如)高速缓冲存储器和常 规驱动器二者共享的公共空块池(至少在这个例子中)。
[0097] 在1000处,判断高速缓冲存储器是否具有比常规驱动器高的平均P/E计数。如果 是,则在1002处,具有最高P/E计数的空闲高速缓冲存储器块与具有最低P/E计数的空闲 常规驱动器块交换。另一方面,如果常规驱动器具有较高P/E计数,则在1004处,具有最低 P/E计数的空闲高速缓冲存储器块与具有最高P/E计数的空闲常规驱动器块交换。
[0098] 上述过程的一个优点是其考虑了当前系统条件,使得储存设备(即,高速缓冲存 储器或常规驱动器)的变得更加磨损的部分从驱动器的其他部分得到具有低(较低)P/E 计数的块。另一优点是其不需要(额外)数据写入,因此其具有低的开销且不影响WA。 [0099] 注意以上过程是被动过程,并且可以执行更主动或积极的技术,其中额外垃圾收 集操作和/或新垃圾收集操作和/或磨损均衡操作被主动触发以使块空闲并且随后交换 块。例如,图10中示出的过程不采取行动并且等待使用现存的或当前的垃圾收集操作和/ 或磨损均衡操作来块被空闲。自然地,更主动或更积极的交换技术将对WA做出不利的贡 献。
[0100] 虽然已经出于清楚理解的目的相当详细地描述了前述实施例,但是本发明不局限 于所提供的细节。存在很多实现本发明的可替换方式。公开的实施例是说明性的而不是限 定性的。
[0101] 通过以上实施例可以看出,本发明提供以下技术方案。
[0102] 技术方案1. 一种系统,包括:
[0103] 固态储存设备;以及
[0104] 固态储存设备控制器,被配置为:
[0105] 获取与固态储存设备关联的总字节写入TBW需求;
[0106] 至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储器的大小; 以及
[0107] 将高速缓冲存储器的大小调整为确定大小。
[0108] 技术方案2.如技术方案1所述的系统,其中,固态储存设备控制器包括半导体器 件,半导体器件包括下列项中的一个或更多个:专用集成电路ASIC或现场可编程门阵列 FPGA〇
[0109] 技术方案3.如技术方案1所述的系统,其中,高速缓冲存储器包括多个单级单元 SLC,而固态储存设备的常规驱动器部分包括下列项中的一个或更多个:多个多级单元MLC 或多个三级单元TLC。
[0110] 技术方案4.如技术方案1所述的系统,其中,固态储存设备控制器还被配置为:
[0111] 判断是否已经满足一个或更多个固定大小模式标准;
[0112] 如果已经满足固定大小模式标准,则:
[0113] 获取固定大小;以及
[0114] 将高速缓冲存储器的大小调整为固定大小;以及
[0115] 如果未满足固定大小模式标准,则执行获取、判断和调整的步骤。
[0116] 技术方案5.如技术方案1所述的系统,其中,固态储存设备控制器被配置为确定 高速缓冲存储器的大小,包括:
[0117] 确定(1)高速缓冲存储器大小与(2)可变大小模式中的剩余编程和擦除P/E计数 的多个组合,所述多个组合不违反TBW需求;以及
[0118] 选择所述多个组合中的一个,其中,与选中组合对应的高速缓冲存储器大小是确 定的高速缓冲存储器大小,以及与选中组合对应的剩余P/E计数与可变大小模式的结束相 关联。
[0119] 技术方案6.如技术方案5所述的系统,其中,确定所述多个组合至少部分地基于 固态储存设备在可变大小模式之后的固定大小模式期间的未来状态。
[0120] 技术方案7.如技术方案1所述的系统,其中:
[0121] 高速缓冲存储器的大小被缩小;以及
[0122] 固态储存设备控制器被配置为缩小高速缓冲存储器的大小,包括:
[0123] 判断是否设置了大小再分配标志;以及
[0124] 如果确定未设置大小再分 配标志,则:
[0125] 设置大小再分配标志;以及
[0126] 将一个或更多个空高速缓冲存储器块指定为空常规驱动器块。
[0127] 技术方案8.如技术方案7所述的系统,其中,固态储存设备控制器还被配置为:
[0128] 对高速缓冲存储器执行垃圾收集过程,其中摄取的高速缓冲存储器块中的有效数 据被输出至常规驱动器;以及
[0129] 为使用空常规驱动器块的垃圾收集过程开放常规驱动器块,空常规驱动器块来自 高速缓冲存储器缩小大小的过程。
[0130] 技术方案9.如技术方案1所述的系统,其中固态储存设备控制器还被配置为:
[0131] 判断高速缓冲存储器是否具有比常规驱动器高的平均编程和擦除P/E计数;
[0132] 如果确定高速缓冲存储器具有较高的平均P/E计数,则将具有最高P/E计数的一 个或更多个空闲高速缓冲存储器块与具有最低P/E计数的一个或更多个空闲常规驱动器 块交换;以及
[0133] 如果确定常规驱动器具有较高的平均P/E计数,则将具有最低P/E计数的一个或 更多个空闲高速缓冲存储器块与具有最高P/E计数的一个或更多个空闲常规驱动器块交 换。
[0134] 技术方案10. -种方法,包括:
[0135] 获取与固态储存设备关联的总字节写入TBW需求;
[0136] 至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储器的大小; 以及
[0137] 将高速缓冲存储器的大小调整为确定大小。
[0138] 技术方案11.如技术方案10所述的方法,其中所述方法由半导体器件执行,半导 体器件包括下列项中的一个或更多个:专用集成电路ASIC或现场可编程门阵列FPGA。
[0139] 技术方案12.如技术方案10所述的方法,其中高速缓冲存储器包括多个单级单元 SLC,而固态储存设备的常规驱动器部分包括下列项中的一个或更多个:多个多级单元MLC 或多个三级单元TLC。
[0140] 技术方案13.如技术方案10所述的方法,还包括:
[0141] 判断是否已经满足一个或更多个固定大小模式标准;
[0142] 如果已经满足固定大小模式标准,则:
[0143] 获取固定大小;以及
[0144] 将高速缓冲存储器的大小调整为固定大小;以及
[0145] 如果未满足固定大小模式标准,则执行获取、判断和调整的步骤。
[0146] 技术方案14.如技术方案10所述的方法,其中,确定高速缓冲存储器的大小包 括:
[0147] 确定(1)高速缓冲存储器大小和(2)可变大小模式中的剩余编程和擦除P/E计数 的多个组合,所述多个组合不违反TBW需求;以及
[0148] 选择所述多个组合中的一个,其中,与选中组合对应的高速缓冲存储器大小是确 定的高速缓冲存储器大小,以及与选中组合对应的剩余P/E计数与可变大小模式的结束相 关联。
[0149] 技术方案15.如技术方案14所述的方法,其中,确定所述多个组合至少部分地基 于固态储存设备在可变大小模式之后的固定大小模式期间的未来状态。
[0150] 技术方案16.如技术方案10所述的方法,其中:
[0151] 高速缓冲存储器的大小被缩小;以及
[0152] 缩小高速缓冲存储器的大小,包括:
[0153] 判断是否设置了大小再分配标志;以及
[0154] 如果确定未设置大小再分配标志,则:
[0155] 设置大小再分配标志;以及
[0156] 将一个或更多个空高速缓冲存储器块指定为空常规驱动器块。
[0157] 技术方案17.如技术方案16所述的方法还包括:
[0158] 对高速缓冲存储器执行垃圾收集过程,其中摄取的高速缓冲存储器块中的有效数 据被输出至常规驱动器;以及
[0159] 为使用空常规驱动器块的垃圾收集过程开放常规驱动器块,空常规驱动器块来自 高速缓冲存储器缩小大小的过程。
[0160] 技术方案18.如技术方案10所述的方法还包括:
[0161] 判断高速缓冲存储器是否具有比常规驱动器高的平均编程和擦除P/E计数;
[0162] 如果确定高速缓冲存储器具有较高的平均P/E计数,则将具有最高P/E计数的一 个或更多个空闲高速缓冲存储器块与具有最低P/E计数的一个或更多个空闲常规驱动器 块交换;以及
[0163] 如果确定常规驱动器具有较高的平均P/E计数,则将具有最低P/E计数的一个或 更多个空闲高速缓冲存储器块与具有最高P/E计数的一个或更多个空闲常规驱动器块交 换。
[0164] 技术方案19. 一种计算机程序产品,所述计算机程序产品实现为非临时计算机可 读储存介质并且包括计算机指令,所述计算机指令用于:
[0165] 获取与固态储存设备关联的总字节写入TBW需求;
[0166] 至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储器的大小; 以及
[0167] 将高速缓冲存储器的大小调整为确定大小。
[0168] 技术方案20.如技术方案19所述的计算机程序产品,其中确定高速缓冲存储器的 大小包括:
[0169] 确定(1)高速缓冲存储器大小和(2)可变大小模式中的剩余编程和擦除P/E计数 的多个组合,所述多个组合不违反TBW需求;以及
[0170] 选择所述多个组合中的一个,其中,与选中组合对应的高速缓冲存储器大小是确 定的高速缓冲存储器大小,以及与选中组合对应的剩余P/E计数与可变大小模式的结束相 关联。
【主权项】
1. 一种系统,包括: 固态储存设备;以及 固态储存设备控制器,被配置为: 获取与固态储存设备关联的总字节写入TBW需求; 至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储器的大小;以及 将高速缓冲存储器的大小调整为确定大小。2. 如权利要求1所述的系统,其中,固态储存设备控制器包括半导体器件,半导体器件 包括下列项中的一个或更多个:专用集成电路ASIC或现场可编程门阵列FPGA。3. 如权利要求1所述的系统,其中,高速缓冲存储器包括多个单级单元SLC,而固态储 存设备的常规驱动器部分包括下列项中的一个或更多个:多个多级单元MLC或多个三级单 元TLC〇4. 如权利要求1所述的系统,其中,固态储存设备控制器还被配置为: 判断是否已经满足一个或更多个固定大小模式标准; 如果已经满足固定大小模式标准,则: 获取固定大小;以及 将高速缓冲存储器的大小调整为固定大小;以及 如果未满足固定大小模式标准,则执行获取、判断和调整的步骤。5. 如权利要求1所述的系统,其中,固态储存设备控制器被配置为确定高速缓冲存储 器的大小,包括: 确定(1)高速缓冲存储器大小与(2)可变大小模式中的剩余编程和擦除P/E计数的多 个组合,所述多个组合不违反TBW需求;以及 选择所述多个组合中的一个,其中,与选中组合对应的高速缓冲存储器大小是确定的 高速缓冲存储器大小,以及与选中组合对应的剩余P/E计数与可变大小模式的结束相关 联。6. 如权利要求5所述的系统,其中,确定所述多个组合至少部分地基于固态储存设备 在可变大小模式之后的固定大小模式期间的未来状态。7. 如权利要求1所述的系统,其中: 高速缓冲存储器的大小被缩小;以及 固态储存设备控制器被配置为缩小高速缓冲存储器的大小,包括: 判断是否设置了大小再分配标志;以及 如果确定未设置大小再分配标志,则: 设置大小再分配标志;以及 将一个或更多个空高速缓冲存储器块指定为空常规驱动器块。8. 如权利要求7所述的系统,其中,固态储存设备控制器还被配置为: 对高速缓冲存储器执行垃圾收集过程,其中摄取的高速缓冲存储器块中的有效数据被 输出至常规驱动器;以及 为使用空常规驱动器块的垃圾收集过程开放常规驱动器块,空常规驱动器块来自高速 缓冲存储器缩小大小的过程。9. 一种方法,包括: 获取与固态储存设备关联的总字节写入TBW需求; 至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储器的大小;以及 将高速缓冲存储器的大小调整为确定大小。10.-种计算机程序产品,所述计算机程序产品实现为非临时计算机可读储存介质并 且包括计算机指令,所述计算机指令用于: 获取与固态储存设备关联的总字节写入TBW需求; 至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储器的大小;以及 将高速缓冲存储器的大小调整为确定大小。
【专利摘要】获取与固态储存设备关联的总字节写入TBW需求。至少部分地基于TBW需求来确定与固态储存设备关联的高速缓冲存储器的大小。将高速缓冲存储器的大小调整为确定大小。
【IPC分类】G06F12/08
【公开号】CN105487986
【申请号】CN201510642769
【发明人】唐翔宇, 弗雷德里克·K.H.·李
【申请人】爱思开海力士有限公司
【公开日】2016年4月13日
【申请日】2015年9月30日
【公告号】US20160098350

最新回复(0)