一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

调整闪速存储器设备的写窗口大小的方法和装置与流程

2022-06-25 15:07:21 来源:中国专利 TAG:


1.本公开总体上涉及闪速存储器相关技术领域,更具体地,涉及调整闪速存储器设备的写窗口大小的方法和装置。


背景技术:

2.相较于诸如硬盘等的传统的存储介质,闪速存储器(flash memory,通常也简称为“闪存”)作为一种电可擦可编程的非易失性半导体存储器具有诸多有利特性,包括读写性能好、抗震性、低功耗、低噪且轻便,等等,因此无论是在工业工程和商用环境、还是在消费电子产品中,都得到的非常广泛的使用。
3.两种主要类型的闪存分别是nand型闪存和nor型闪存。典型的闪存操作包括读、写(编程)和擦除,其中,在将新数据写到闪存中旧数据占据的相同位置之前,需要先擦除旧数据。nor型闪存的优点在于支持随机存取,因此支持芯片内执行(execute in chip,xip),但其擦除和写操作都需要较长时间。nand型闪存结构简单,可以达到较高的存储密度,其采用的是按页(page)进行读写、按块(block)进行擦除,因此更适合于用作大容量存储介质。
4.按照每一个存储单元(memory cell)内所存储的比特数的差异,当前的nand型闪存通常可以包括slc(single-level cell)、mlc(multiple-level cell)、tlc(triple-level cell)、以及qlc(quadruple-level cell)。其中,slc闪存的每个存储单元可以存储1个比特,mlc闪存的每个存储单元可以存储2个比特,tlc闪存的每个存储单元可以存储3个比特,而qlc闪存的每个存储单元则可以存储4个比特,由此使得单位存储成本越来越低。随着半导体技术的演进,未来还会出现更高密度的存储单元。
5.闪存相关技术的发展已经取得了很大的进步,但是在提高闪存性能尤其是写操作的性能等方面,仍然存在着较大的改善空间。


技术实现要素:

6.在发明内容部分中,以简化的形式介绍一些选出的概念,其将在下面的具体实施方式部分中被进一步描述。该发明内容部分并非是要标识出所要求保护的主题的任何关键特征或必要特征,也不是要被用于帮助确定所要求保护的主题的范围。
7.根据本公开的一个方面,提供了一种调整闪速存储器设备的写窗口大小的方法,所述方法包括:判断针对闪速存储器设备的当前操作命令的类型;响应于判定所述当前操作命令是写命令,将当前的写命令指示的写数据的大小累加到写数据总量上,其中,所述写数据总量用于指示包括当前的写命令在内的已接收到的一个或多个写命令所指示的写数据的大小的总和;以及当所述写数据总量达到一个或多个等级的阈值数据量中的一个等级的阈值数据量时,将所述闪速存储器设备的写窗口大小调整为与所达到的等级的阈值数据量相对应的预设写窗口大小,其中,所述一个或多个等级中的每一个等级的阈值数据量对应于一个不同的预设写窗口大小。
8.根据本公开的另一个方面,提供了一种计算设备,所述计算设备包括:至少一个处
理器;以及存储器,其耦合到所述至少一个处理器并用于存储指令,其中,所述指令在由所述至少一个处理器执行时,使得所述至少一个处理器执行本文中所述的任一方法。
9.根据本公开的再一个方面,提供了一种闪速存储器设备,所述闪速存储器设备包括:由一个或多个闪速存储器构成的存储器阵列;以及耦合到所述存储器阵列并用于控制所述存储器阵列的操作的控制器,其中,所述控制器被配置为执行本文中所述的任一方法。
10.根据本公开的又一个方面,提供了一种调整闪速存储器设备的写窗口大小的装置,所述装置包括用于执行本文中所述的任一方法的模块。
11.根据本公开的另一个方面,提供了一种计算机可读存储介质,其上存储有指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行本文中所述的任一方法。
12.根据本公开的再一个方面,提供了一种计算机程序产品,其包括指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行本文中所述的任一方法。
13.本公开中提供的机制能够实现闪速存储器设备的写窗口大小的动态调整,由此可以在出现连续写的场景时,有效提升写操作的时间占比,改善整个写操作的性能。
附图说明
14.在附图中对本公开的实现以示例的形式而非限制的形式进行了说明,附图中相似的附图标记表示相同或类似的部件,其中:
15.图1示出了根据本公开的一些实现的示例性闪速存储器设备的框图;
16.图2示出了根据本公开的一些实现的示例性方法的流程图;
17.图3示出了根据本公开的一些实现的示例性操作的流程图;
18.图4示出了根据本公开的一些实现的调整写窗口大小的示例;
19.图5示出了根据本公开的一些实现的示例性方法的流程图;
20.图6示出了根据本公开的一些实现的示例性写窗口大小调整装置的框图;以及
21.图7示出了根据本公开的一些实现的示例性计算设备的框图。
具体实施方式
22.在以下的说明书中,出于解释的目的,阐述了大量具体细节。然而,应当理解的是,本公开的实现无需这些具体细节就可以实施。在其它实例中,并未详细示出公知的电路、结构和技术,以免影响对说明书的理解。
23.说明书通篇中对“一个实现”、“实现”、“示例性实现”、“一些实现”、“各种实现”等的引述表示所描述的本公开的实现可以包括特定的特征、结构或特性,然而,并不是说每个实现都必须要包含这些特定的特征、结构或特性。此外,一些实现可以具有针对其它实现描述的特征中的一些、全部,或者不具有针对其它实现描述的特征。
24.以最有助于理解所要求保护的主题的方式,可能会将各种操作描述为依次序的多个分立的动作或操作。然而,描述的次序并不应当被解释为暗示这些操作必然是依赖于次序的。尤其是,这些操作可以不按照所呈现的次序来执行。在另外的一些实现中,还可以执行各种另外的操作,和/或忽略各种已经描述的操作。
25.在说明书和权利要求书中,可能会出现的短语“a和/或b”用来表示以下之一:(a)、
(b)、(a和b)。类似地,可能会出现的短语“a、b和/或c”用来表示以下之一:(a)、(b)、(c)、(a和b)、(a和c)、(b和c)、(a和b和c)。
26.首先参考图1,其示出了根据本公开的一些实现的示例性闪速存储器设备100的框图。如图1所示,示例性闪速存储器设备100典型地可以包括存储器阵列110以及控制器120。
27.存储器阵列110可以由一个或多个闪速存储器构成,如图中所示的闪速存储器130-1至130-n。在根据本公开的一些实现中,这样的闪速存储器是nand型闪速存储器,然而其它类型的闪速存储器也是可行的,例如包括但不限于nor型闪速存储器。这里所示的闪速存储器130-1至130-n中的每一个可以是指一个单独的闪速存储器芯片(chip),也可以是指一个闪速存储器管芯(die),其中多个管芯可以被封装在同一个芯片中,或者可以是指任何其它层级的闪速存储器结构,然而本公开并不限于此。
28.控制器120耦合到存储器阵列110,并且用于控制存储器阵列110的操作,包括对存储器阵列110中的闪速存储器130-1至130-n中的每一个闪速存储器的读、写(编程)和擦除等操作。
29.控制器120或其至少一部分可以用计算设备的典型结构来实现,这样的计算设备可以包括至少一个处理器140、以及耦合到处理器140并用于存储指令的存储器(未示出)。当所述指令被处理器140执行时,使得处理器140执行本文中所述的方法。所述指令可以是闪速存储器设备100的固件的一部分,然而本公开并限于于此。所述固件中可以实现有闪存转换层(flash translation layer,ftl),用于实现针对闪速存储器的地址映射、磨损均衡、垃圾回收等功能。在根据本公开的一些实现中,本文中所述的调整闪速存储器设备的写窗口大小的机制即可以由ftl来实施。此外,在一些实现中,所述固件可以被存储在闪速存储器130-1至130-n中的一个或多个闪速存储器中,在闪速存储器设备100上电时被加载并执行。
30.在根据本公开的一些实现中,控制器120中可以实现主机接口150,其用于将控制器120通信地耦合到主机设备(未示出),由此可以接收来自主机设备的针对闪速存储器设备100的操作命令和相关的数据,并且向主机设备返回相应操作命令的结果。在一些实现中,控制器120中还可以实现有闪速存储器接口160,其用于将控制器120耦合到存储器阵列110,实现二者间的双向通信。
31.此外,在根据本公开的一些实现中,控制器120中还可以包括缓冲器170。在一些实现中,缓冲器170可以被实施为非易失性随机存取存储器(nvram),例如,可以用磁阻式随机存取存储器(mram)来实现缓冲器170,然而本公开并不限于此。可以被缓存在缓冲器170中的数据可以包括但不限于:伴随着通过主机接口150从主机设备接收到的写命令的写数据,这些写数据最终将被写入到存储器阵列110中的一个或多个闪速存储器中;在写操作期间为了实现磨损均衡等功能而暂时从存储器阵列110中的一个或多个闪速存储器的目标位置中读出的数据,等等。此外,在一些实现中,缓冲器170的一部分还可以被分配为用于存储检查点(checkpoint)数据。检查点数据会在被一定条件触发的检查点操作中写入到存储器阵列110中的一个或多个闪速存储器中。
32.闪速存储器设备100可以是符合嵌入式多媒体卡(emmc)规范、通用闪存存储(ufs)规范、快速非易失性存储器(nvme)规范、或任何其它相关规范的闪速存储器设备。
33.上面描述了根据本公开的一些实现的闪速存储器设备100的示例性架构,然而本
领域技术人员应理解的是,其它结构的闪速存储器设备100也同样是可行的。例如,不同于图1中所示的主机接口150、闪速存储器接口160以及缓冲器170均被包含在控制器120中这样的结构的是,在一些实现中,主机接口150、闪速存储器接口160以及缓冲器170中的一个或多个可以是独立于控制器120的单独部件,它们之间可以通过特定的协议/总线/接口通信地耦合。本公开并不限于上述及其它特定示例。
34.检查点(checkpoint)操作被引入到针对闪速存储器设备100的操作中的目的之一是,防止因为闪速存储器设备100的异常掉电而导致用户有效数据丢失。
35.更具体地,在依据已接收到的一个或多个写命令而向存储器阵列140中的闪速存储器写入数据的过程中,也会向闪速存储器中写入一些与当前已写入的数据相关联的信息,即前述的检查点数据。典型地,这样的信息可以是由在闪速存储器设备100的控制器120上运行的固件中的ftl来维护的。例如,这种信息可以包括逻辑到物理地址映射关系表(可简称为“l2p表”)。来自主机设备的用户写命令是以逻辑地址(lba,例如,以页为单位)指示的,ftl通过更新和维护l2p表,将逻辑地址转换成存储器阵列140中的闪速存储器所使用的物理地址,把写指令所指示的写数据写入到闪速存储器中由相应的物理地址指示的位置中。
36.此外,这种信息还可以包括指示固件的运转状况的信息,并且在一些实现中,这种信息还可以包括特定固件自定义的一些信息,等等。然而,本公开并不限于此。
37.本领域技术人员可以理解的是,由于已利用检查点操作将这样的信息写入到存储器阵列110中的闪速存储器中,即便是闪速存储器设备100突然出现异常掉电等故障,也可以通过在再次上电后从闪速存储器中读出该信息来最大限度地恢复那些依据写命令而写入的数据。
38.然而,要注意的是,检查点操作并不是伴随着每一笔数据写入同步发生的。相反,每当按照已接收到的一个或多个写命令向存储器阵列140中的闪速存储器写入了来自主机设备的一定数据量时,会触发一次检查点操作,完成相关信息的写入。这里所说的一定数据量,也就是通常所说的写窗口大小(window size)。作为示例,这样的写窗口大小可能被设置为16mb,而这16mb可能是多个写命令所指示的写数据的大小的总和,可能正好是一个写命令所指示的写数据的大小,或者可能仅仅是一个写命令所指示的写数据的大小的一部分。无论如何,在ftl的控制下,每当累计写入的数据达到了16mb时,就会触发一次检查点操作来写入相关的信息。对于所设置的写窗口大小可能并不是单位写大小(例如,4kb)的整数倍的情形,ftl可以在一旦累计写入的数据超过了写窗口大小时就触发一次检查点操作。此外,检查点操作还涉及其它的处理。
39.以出现连续的多个大数据量的写指令的场景为例,从时间角度上看,写操作可以被视为由多个写回合组成,每个写回合包括一个写窗口大小(如前所示的16mb)的数据所需的写入时间、以及一次检查点操作所需的执行时间。
40.闪速存储器相关技术在不断发展,操作带宽越来越大,固件的逻辑也得到进一步的优化,这两方面都使得完成一个写窗口大小的数据写入所需的时间在逐渐降低。然而与之相对的,执行一次检查点操作所需的时间尚未得到有效改善。这就使得在每个写回合中,检查点操作的时间占比被拉大,对整个写操作的性能改进带来不利影响。
41.图2示出了根据本公开的一些实现的示例性方法200的流程图。方法200可以用于
实现本文中公开的针对闪速存储器设备的写窗口大小的动态调整。例如,方法200可以在图1中所示的控制器120或任何类似的或相关的实体中实现。在根据本公开的一些实现中,方法200是通过闪速存储器设备100的固件中的闪存转换层ftl来实施的。
42.示例性方法200开始于步骤210,在该步骤中,判断针对闪速存储器设备的当前操作命令的类型。结合图1中的示例,这里所说的操作命令,在一些实现中,可以是指通过闪速存储器设备100的主机接口150接收到的来自主机设备的操作命令本身,而在另一些实现中,也可以是指由主机接口150和/或闪速存储器设备100中的控制器120中的软/硬件逻辑对通过主机接口150接收到的来自主机设备的操作命令进行处理(如转换)之后获得的操作命令。例如,所述的处理或转换可以包括,将接收到的来自主机设备的一个写命令(例如,写数据大小为1mb)拆分为多个单位写大小(例如,4kb)的写命令。然而本公开并不限于此。
43.根据本公开,可以将针对闪速存储器设备的操作命令划分为两种类型,即写命令、以及非写命令(如,读命令)。响应于在步骤210判定针对闪速存储器设备100的当前操作命令是写命令,方法200前进到步骤220,在该步骤中,将当前的写命令指示的写数据的大小累加到写数据总量上,所述写数据总量用于指示包括当前的写命令在内的已接收到的一个或多个写命令所指示的写数据的大小的总和。
44.考虑当前接收到的写命令(例如,写数据大小为1mb)是第一个写命令的情况,所述写数据总量的值之前为零,在加上当前的写命令所指示的写数据的大小之后变为1mb。根据本公开,随着后续的一个或多个写命令的到来,所述写数据总量的值会相应地累积变大,直到被重置归零,如后文中详述的。
45.在步骤220之后,方法200前进到步骤230,在该步骤中,判断所述写数据总量是否达到一个或多个等级的阈值数据量中的一个等级的阈值数据量。如果在步骤230中判定所述写数据总量达到一个或多个等级的阈值数据量中的一个等级的阈值数据量,则在步骤240,将所述闪速存储器设备的写窗口大小调整为与所达到的等级的阈值数据量相对应的预设写窗口大小,其中,所述一个或多个等级中的每一个等级的阈值数据量对应于一个不同的预设写窗口大小。
46.在步骤240的调整完毕之后,方法200进行到步骤250,在该步骤中,等待下一个操作命令,并且随着下一个操作命令的出现,方法200跳转回步骤210,开始新一轮的处理。由此实现了方法200的流程的循环执行。该流程的循环执行可以一直持续到被其它状况打断为止,例如,闪速存储器设备100掉电关机、因闪速存储器设备100因长时间无操作而进入待机/休眠状态,等等,本公开并不限于此。
47.另一方面,如果在步骤230中判定所述写数据总量并未达到一个或多个等级的阈值数据量中的一个等级的阈值数据量,则方法200直接进行到步骤250,等待下一个操作命令的出现。也就是说,在这种情况下保持当前的写窗口大小不变。
48.此外,在根据本公开的一些实现中,响应于在步骤210中判定针对闪速存储器设备100的当前操作命令不是写命令(即,“非写命令”),方法200进行到步骤260,在该步骤中,对所述写数据总量进行重置,并且在步骤270中,将所述写窗口大小恢复为默认写窗口大小。然后,方法200同样前进到步骤250,等待下一个操作命令的出现。
49.利用图2所示的示例性方法,写窗口大小在初始时可以为默认的大小(例如,16mb),对于连续的多个写命令,可以对这些写命令所指示的写数据的大小进行统计,累加
到写数据总量上。当累积的写数据总量达到一定水平(一个等级的阈值数据量)时,可以将默认的写窗口大小动态增大到与该等级的阈值数据量相对应的预设写窗口大小(例如,28mb)。如前所述,每当写入的数据达到或超过写窗口大小时,就会触发一次检查点操作来写入相关的信息。因此,写窗口大小的增大,意味着在每一个写回合中执行检查点操作所需的时间占比相应降低,从一定量的写数据来看,也意味着检查点操作的触发频率得以降低。由此,可以在出现连续的多个写命令的情况下,改善整个写操作的性能。
50.一旦遇到了当前接收到的操作命令不是写命令(例如,是读命令)的情况,就认为此前的连续写的场景已经被打断,因此出于数据安全等方面的考虑,就将此前累积的写数据总量重置为零,并且将所述写窗口大小(例如,此前已经被从16mb增大到28mb)恢复为默认的大小(如前所述,16mb)。由此,开始针对可能出现的新一轮的连续多个写命令的统计及相应的处理。
51.此外,通过设置多个不同等级的阈值数据量和相应的预设写窗口大小,可以随着累积的写数据总量的逐渐增大(例如,连续的多个写命令,中间没有被打断),对写窗口大小进行不同等级的动态调整,即,逐渐增大当前的写窗口大小,直到达到允许的最大值。由此可以实现在连续写的场景下写操作性能的平稳提升。
52.下面结合图3来描述根据本公开的一些实现,与图2中所示的步骤230(判断所述写数据总量是否达到一个或多个等级的阈值数据量中的一个等级的阈值数据量)和步骤240(将所述闪速存储器设备的写窗口大小调整为与所达到的等级的阈值数据量相对应的预设写窗口大小)有关的示例性操作。
53.在图3所示的示例中,假定设置了三个等级的阈值数据量,分别记为t1、t2、和t3,与之相对应的预设写窗口大小则分别为默认写窗口大小 n、默认写窗口大小 2n、以及默认写窗口大小 3n,其中,n表示一特定的数据量。在该示例中,默认写窗口大小 3n也是可允许的动态调整的最大值。作为一个示例,默认写窗口大小=16mb,而n=12mb。
54.参见图3,基于在前述的步骤220中确定的写数据总量(这里以wtotal来表示)开始相应的判断和处理。具体地,如果在步骤310判定wtotal《t1,那么将当前的写窗口大小仍保持为默认写窗口大小(步骤320),然后可以进行到前述的步骤250。如果在在步骤310中判定为否,而接着在步骤330中判定t2》wtotal≥t1,那么在步骤340中,将当前的写窗口大小增大到默认写窗口大小 n(参见上述示例,16mb 12mb=28mb);如果在步骤330中判定为否,而接着在步骤350中判定t3》wtotal≥t2,那么在步骤360中,将当前的写窗口大小增大到默认写窗口大小 2n(继续上述示例,16mb 24mb=40mb);如果在步骤350中的判定为否,也就意味着wtotal≥t3,那么在步骤370中,将当前的写窗口大小增大到默认写窗口大小 3n(继续上述示例,16mb 36mb=52mb),这也是可允许的动态调整的最大值。无论是哪一种调整,之后都可以继续进行到前述的步骤250。
55.需要注意的是,图3所描绘的内容的仅为示例而非限制。取决于实际需求和设计约束,可以实施更多或更少的等级,可以有不同方式的判断逻辑,并且相应的写窗口大小的可改变幅度也可以按需设置,而非图3中所示的按固定量递增。
56.图4示出了根据本公开的一些实现的调整写窗口大小的示例。对于连续写的场景,当满足一定条件达成了本公开中所提出的改进,即动态调整写窗口大小之后,原先的固定的写窗口大小可以被增大,那么对于同等量的写数据来说,检查点操作被触发的频率得以
降低,执行检查点操作的时间占比相应地减少了。因此,写操作的性能得到了提升。而且,利用本公开中所提出的机制,还可以随着写数据总量的积累,分等级地进一步增大写窗口大小,由此进一步降低检查点操作的触发频率,提升性能。
57.图5示出了根据本公开的一些实现的示例性方法500的流程图。方法500可以视为是图2所示的方法200的一种替代性实现。在图5中,那些与图2中的步骤相同的步骤沿用了图2的附图标记,在这里不再赘述。不同之处在于,在方法500中,响应于在步骤210中判定针对闪速存储器设备100的当前操作命令不是写命令(即,“非写命令”),并不是直接执行前述的步骤260和270,而是要首先判断所述当前操作命令是否要使用所述闪速存储器设备100的缓冲器170中已被占用的区域(步骤580)。
58.在根据本公开的一些实现中,响应于此前已经实现的写窗口大小的动态调整,当前的写窗口大小可能已经被增大了较大幅度。写窗口大小的增大,意味着对应的被缓存在缓冲器170中的、待通过被触发的检查点操作写入到闪速存储器设备中的检查点数据(例如,l2p表)的数据量也相应地增大了,并且可能会占用到为其它类型的操作命令预留的区域。
59.因此,如果步骤580中的判定结果为否,即,当前的非写命令并不使用缓冲器170中已被占用的区域,则可视为这一命令的出现并不会真正影响到此前可能已经形成的连续写的场景,因此方法500可以直接转到前述的步骤250,等待下一个操作命令的出现。也就是说,这种情况下可以令当前的写窗口大小(其可能已经是利用本公开中描述的机制增大后的)保持不变。
60.反之,如果在步骤580中判定所述当前操作命令要使用缓冲器170中已被占用的区域,则可以出于数据安全、避免干涉等的考虑,方法500可以转为执行前述的步骤260和270,即重置写数据总量、并将写窗口大小恢复为默认写窗口大小。
61.相较于图2所示的示例性方法200,图5所示的替代性实现为闪速存储器的写操作性能的进一步优化提供了可能。
62.上面主要结合图2和图5描述了根据本公开的一些实现的示例性方法。应理解的是,这里给出示例性方法200和示例性方法500仅是出于举例说明的目的,这些示例性方法的其它变型也是可行的,而并不背离本公开中描述的发明构思。例如,在一些实现中,还可以有更多或更少的操作步骤;在一些实现中,一些步骤可以被进一步拆分;在一些实现中,一些步骤可以被合并;而在一些实现中,一些步骤可以并非按照所示的顺序来执行,等等,本公开并不限于此。
63.下面参考图6,其示出了根据本公开的一些实现的示例性写窗口大小调整装置600的框图。写窗口大小调整装置600可以用于实现本文中公开的针对闪速存储器设备的写窗口大小的动态调整。例如,写窗口大小调整装置600可以在图1中所示的控制器120或任何类似的或相关的实体中实现。
64.如图6所示,写窗口大小调整装置600可以包括判断模块610,其用于判断针对闪速存储器设备的当前操作命令的类型。写窗口大小调整装置600还可以包括累加模块620,其用于响应于判定所述当前操作命令是写命令,将当前的写命令指示的写数据的大小累加到写数据总量上,其中,所述写数据总量用于指示包括当前的写命令在内的已接收到的一个或多个写命令所指示的写数据的大小的总和。此外,写窗口大小调整装置600还可以包括调
整模块630,其用于当所述写数据总量达到一个或多个等级的阈值数据量中的一个等级的阈值数据量时,将所述闪速存储器设备的写窗口大小调整为与所达到的等级的阈值数据量相对应的预设写窗口大小,其中,所述一个或多个等级中的每一个等级的阈值数据量对应于一个不同的预设写窗口大小。
65.此外,在一些实现中,写窗口大小调整装置600的上述模块中的一个或多个中还可以包括进一步的子模块、和/或写窗口大小调整装置600还可以包括附加的模块,用于执行说明书中已经描述的其它操作。此外,在一些实现中,写窗口大小调整装置600的各种模块还可以取决于实际需求进行组合或拆分。上述及其它变型均落入本公开的范围之内。
66.本领域技术人员可以理解,示例性的写窗口大小调整装置600可以用软件、硬件、固件、或其任意组合来实现。
67.图7示出了根据本公开的一些实现的示例性计算设备700的框图。计算设备700可以用于实现本文中公开的针对闪速存储器设备的写窗口大小的动态调整。例如,计算设备700例如可以在图1中所示的控制器120或任何类似的或相关的实体中实现。
68.如图7所示,计算设备700可以包括至少一个处理器710。处理器710可以包括任意类型的通用处理单元(例如:cpu、gpu,等等)、专用处理单元、核心、电路、控制器,等等。此外,计算设备700还可以包括耦合到处理器710的存储器720。存储器720可以包括任意类型的可以用于存储数据的介质。在一些实现中,存储器720被配置为存储指令,所述指令在执行时使得至少一个处理器710执行本公开中描述的操作,例如,结合图2的示例性方法200的流程图、图5的示例性方法500的流程图而描述的。
69.尽管未在图7中示出,但是本领域技术人员能够理解,计算设备700还可以包括其它部件。此外,在一些实现中,上述及其它部件之间可以经由一种或多种总线/互连来相互通信,所述总线/互连可以支持任何合适的总线/互连协议,包括外围组件互连(pci)、快速pci(pcie)、通用串行总线(usb)、串行附接scsi(sas)、串行ata(sata)、光纤通道(fc)、系统管理总线(smbus),或其它合适的协议。
70.本领域技术人员可以理解,对于计算设备700的结构的上述描述仅仅是示例性而非限制性的,其它结构的设备也是可行的,只要能够用来实现本公开中所讨论的功能。
71.本公开的各种实现可以使用硬件单元、软件单元或其组合来实现。硬件单元的示例可以包括设备、部件、处理器、微处理器、电路、电路元件(例如、晶体管、电阻器、电容器、电感器,等等)、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、存储单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组,等等。软件单元的示例可以包括软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。确定一个实现是使用硬件单元和/或软件单元来实施的可以取决于多种因素而变化,例如期望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度,以及其它的设计或性能约束,正如一个给定的实现所期望的。
72.本公开的一些实现可以包括制品。制品可以包括存储介质,其用于存储逻辑。存储介质的示例可以包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易
失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器,等等。逻辑的示例可以包括各种软件单元,例如软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。在一些实现中,例如,制品可以存储可执行的计算机程序指令,其在被处理器执行时,使得处理器执行本文中所述的方法和/或操作。可执行的计算机程序指令可以包括任意合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码,等等。可执行的计算机程序指令可以根据预定义的用于命令计算机来执行特定功能的计算机语言、方式或语法来实现。所述指令可以使用任意适当的高级的、低级的、面向对象的、可视化的、编译的和/或解释的编程语言来实现。
73.下面描述本公开的一些示例性实现。
74.示例1可以包括一种调整闪速存储器设备的写窗口大小的方法,所述方法包括:判断针对闪速存储器设备的当前操作命令的类型;响应于判定所述当前操作命令是写命令,将当前的写命令指示的写数据的大小累加到写数据总量上,其中,所述写数据总量用于指示包括当前的写命令在内的已接收到的一个或多个写命令所指示的写数据的大小的总和;以及当所述写数据总量达到一个或多个等级的阈值数据量中的一个等级的阈值数据量时,将所述闪速存储器设备的写窗口大小调整为与所达到的等级的阈值数据量相对应的预设写窗口大小,其中,所述一个或多个等级中的每一个等级的阈值数据量对应于一个不同的预设写窗口大小。
75.示例2可以包括前述示例1所述的主题,其中,所述方法还包括:响应于判定所述当前操作命令不是写命令:重置所述写数据总量;以及将所述写窗口大小恢复为默认写窗口大小。
76.示例3可以包括前述示例1所述的主题,其中,所述方法还包括:响应于判定所述当前操作命令不是写命令:判断所述当前操作命令是否要使用所述闪速存储器设备的缓冲器中已被占用的区域;响应于判定所述当前操作命令要使用所述缓冲器中已被占用的区域,则:重置所述写数据总量;以及将所述写窗口大小恢复为默认写窗口大小。
77.示例4可以包括前述示例3所述的主题,其中,所述方法还包括:响应于判定所述当前操作命令并不使用所述缓冲器中已被占用的区域,则令所述写窗口大小保持不变。
78.示例5可以包括前述示例1-4中的任意一项所述的主题,其中,所述方法还包括:每当按照已接收到的一个或多个写命令向所述闪速存储器设备中的闪速存储器写入了达到或超过所述写窗口大小的数据时,触发检查点操作,所述检查点操作用于将与所写入的数据相关联的信息写入所述闪速存储器中。
79.示例6可以包括前述示例1-5中的任意一项所述的主题,其中,所述闪速存储器设备是nand型闪速存储器设备。
80.示例7可以包括前述示例1-6中的任意一项所述的主题,其中,所述写窗口大小的调整是通过所述闪速存储器设备的固件中的闪存转换层(ftl)来实施的。
81.示例8可以包括前述示例1-7中的任意一项所述的主题,其中,所述闪速存储器设备是符合嵌入式多媒体卡(emmc)规范、通用闪存存储(ufs)规范、或者快速非易失性存储器(nvme)规范的闪速存储器设备。
82.示例9可以包括一种计算设备,所述计算设备包括:至少一个处理器;以及存储器,其耦合到所述至少一个处理器并用于存储指令,其中,所述指令在由所述至少一个处理器执行时,使得所述至少一个处理器执行前述示例1-8中的任意一项所述的方法。
83.示例10可以包括一种闪速存储器设备,所述闪速存储器设备包括:由一个或多个闪速存储器构成的存储器阵列;以及耦合到所述存储器阵列并用于控制所述存储器阵列的操作的控制器,其中,所述控制器被配置为执行前述示例1-8中的任意一项所述的方法。
84.示例11可以包括一种调整闪速存储器设备的写窗口大小的装置,所述装置包括用于执行前述示例1-8中的任意一项所述的方法的模块。
85.示例12可以包括一种计算机可读存储介质,其上存储有指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行前述示例1-8中的任意一项所述的方法。
86.示例13可以包括一种计算机程序产品,其包括指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行前述示例1-8中的任意一项所述的方法。
87.上面已经描述的包括所公开的架构的示例。当然并不可能描述部件和/或方法的每种可以想见的组合,但是本领域技术人员可以理解,许多其它的组合和排列也是可行的。因此,该新颖架构旨在涵盖落入所附权利要求的精神和范围之内的所有这样的替代、修改和变型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献