《一种固态盘中数据缓存区的控制方法.pdf》由会员分享,可在线阅读,更多相关《一种固态盘中数据缓存区的控制方法.pdf(10页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102779017 A (43)申请公布日 2012.11.14 C N 1 0 2 7 7 9 0 1 7 A *CN102779017A* (21)申请号 201210219545.2 (22)申请日 2012.06.29 G06F 3/06(2006.01) (71)申请人华中科技大学 地址 430074 湖北省武汉市洪山区珞瑜路 1037号 (72)发明人冯丹 胡洋 刘景宁 童薇 江泓 田磊 秦亦 (74)专利代理机构华中科技大学专利中心 42201 代理人李佑宏 (54) 发明名称 一种固态盘中数据缓存区的控制方法 (57) 摘要 本发明一种固态盘的数据缓存。
2、区控制方法, 包括(1)设置第一计数器和第二计数器,分别用 于记录提前写回的数据量和已被提前写回的数据 量;(2)比较两计数器值的大小,如果第二计数器 值小于第一计数器,则跳转到步骤(3),否则跳到 步骤(4);(3)从数据缓存区中寻找一个保存有未 被写回的数据的节点,将其提前写回闪存,同时根 据该节点的数据量修改第二计数器的值,跳转到 步骤(2);(4)检测是否有外部写请求,在有时执 行该外部写请求,并调整第一计数器的值,跳转到 步骤(2)。本发明适不受可扩展性的影响,对采用 不同数据缓存区排序方法的固态盘设备都适用, 可以在不同负载和使用环境下,提高固态盘的写 操作性能。 (51)Int.。
3、Cl. 权利要求书2页 说明书4页 附图3页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 4 页 附图 3 页 1/2页 2 1.一种固态盘中数据缓存区的控制方法,包括如下具体步骤: (1)设置第一计数器(DAT)和第二计数器(WAN),其中该第一计数器(DAT)用于记录提 前写回数据缓冲区中数据的数量既提前写回的阈值,该第二计数器(WAN)用于记录已被提 前写回的数据量; (2)比较所述第一计数器(DAT)和第二计数器(WAN)值的大小,如果第二计数器(WAN) 值小于第一计数器(DAT),则跳转到步骤(3),否则直接跳到步骤(4); (3)执行提。
4、前写回操作,即从所述数据缓存区中寻找一个保存有未被写回的数据的节 点,将该节点的数据提前写回闪存,并将其标记为已写回节点,同时根据该节点的数据量修 改第二计数器(WAN)的值,并跳转到步骤(2); (4)在有外部写请求到达时,执行该外部写请求,并且根据该外部请求的数据是否存在 于数据缓存区,调整数据缓存区的节点队列,并相应调整第一计数器(DAT)的值,再跳转到 步骤(2)。 2.根据权利要求1所述的固态盘中数据缓存区的控制方法,其特征在于,所述的步骤 (4)中: (4.1)当写请求的数据存在于数据缓存区时,如果该写请求的数据是属于普通节点的 数据,则将包含该写请求的数据的节点移动到数据缓存区的。
5、队列的队首;如果该写请求的 数据属于已写回节点的数据,则将其移动到数据缓存区的队列的队首,同时将其从已写回 节点的队列中移除,即该节点从已写回节点变为普通节点; (4.2)当写请求的数据不存在于数据缓存区时,如果已写回节点的数量不为零,将该已 写回节点队列中队首节点删除,将该写请求的数据添加到数据缓存区的队列的队首;如果 已写回节点的数据量为零,将数据缓存区的队列的队尾节点写回闪存,待队尾节点的数据 写回闪存的操作完成之后,将该写请求的数据添加到数据缓存区的队列的队首; 其中,所述普通节点指数据还未写回闪存的节点,所述已写回节点指数据已经被提前 写回到闪存中的节点。 3.根据权利要求2所述的固。
6、态盘中数据缓存区的控制方法,其特征在于,在写请求的 数据属于数据缓存区中的已写回节点时,将第一计数器(DAT)的值减小,减小公式为: DAT (新值) =DAT (旧值) -n 其中,n表示写请求数据量大小。 4.根据权利要求2或3所述的固态盘中数据缓存区的控制方法,其特征在于,在写请求 的数据不存在于数据缓存区中且数据缓存区中已写回节点数量为零时,将第一计数器DAT 的值增大,增大公式如下: DAT (新值) =DAT (旧值) +m 其中,m表示写请求的数据量大小。 5.根据权利要求1-4之一所述的固态盘中数据缓存区的控制方法,其特征在于,所述 数据缓存区的节点队列指数据缓存区所有的节点按。
7、照缓存节点排序策略进行排序的队列, 该队列包括由已写回节点组成的的已写回节点队列,且其位于该数据缓存区的队列的队 尾。 6.根据权利要求5所述的固态盘中数据缓存区的控制方法,其特征在于,所述缓存节 点排序策略可以为最近最少使用(LRU)、最不经常使用(LFU)或其他排序策略。 权 利 要 求 书CN 102779017 A 2/2页 3 7.根据权利要求1-6之一所述的固态盘中数据缓存区的控制方法,其特征在于,所述 步骤(3)中,所述寻找的保存有未被写回的数据的节点指数据缓存区的队列中沿队尾到队 首方向的第一个普通节点。 8.根据权利要求1-7之一所述的固态盘中数据缓存区的控制方法,其特征在于。
8、,在执 行所述步骤(3)中的提前写回操作时,若有外部读写请求到达固态盘,中止正在进行的提前 写回操作,优先服务外部请求的读写操作。 9.根据权利要求1-8之一所述的固态盘中数据缓存区的控制方法,其特征在于,所述 步骤(1)中,对所述第一计数器(DAT)赋初值为数据缓存区的数据总量10,对第二计数 器(WAN)赋初值0。 权 利 要 求 书CN 102779017 A 1/4页 4 一种固态盘中数据缓存区的控制方法 技术领域 0001 本发明属于固态盘存储领域,具体涉及一种基于闪存的固态盘中数据缓存区的控 制方法。 背景技术 0002 固态盘是近十年出现的一种新型计算机外存储设备。通常,固态盘分。
9、一下几种类 型:基于闪存的固态盘、基于动态随机存储器的固态盘、基于其他固态介质的固态盘。目前 应用最广泛的是基于闪存的固态盘。闪存是一种具有高密度,大容量,非易失性等特点的新 型存储介质,它相对磁介质,具有较低的读写延时、较低的能耗;但是闪存芯片自身存在的 一些缺陷限制了这类存储器的应用。其一,必须先擦除后写入,擦除操作的单元为块,写入 操作的单元为页,一个块中有多个页。其二,闪存的擦除次数是有限的。固态盘中除了一个 处理器、大量的闪存芯片外,还有一个或多个内存芯片。内存芯片的主要作用是用作数据缓 冲区,即,在固态盘工作过程中存放经常读写的数据。 0003 为了提高固态盘的读写性能,通常,固态。
10、盘中存在多个通道,每个通道上有多个闪 存芯片,多个通道和芯片同时工作可以提高读写带宽。固态盘中存在一个内存空间,用作数 据缓存区,固态盘中数据缓存区是用户数据在内存中存放的区域,它利用一段时间内,请求 可能重复出现的特点,将重复出现的请求通过访问内存而直接被响应,减少访问闪存的次 数。因为相对闪存,内存的读写速度较为快速。所以数据缓冲区可以提高固态盘的性能,同 时减少了闪存的写操作次数,降低了擦除次数,从而提高了固态盘的寿命。 0004 因为内存的读写速度快,为了提高固态盘性能,需要使大量的外部请求由固态盘 内存服务,避免由固态盘中的闪存芯片服务。通常,为了使尽可能多的外部请求由内存服 务,传。
11、统的方法是设计各种各样的缓存数据排序算法,即,采用不同的规则,将数据缓存区 中的数据进行排序,在服务外部请求时,存在两种可能:(1)当外部请求的数据存在于数据 缓冲区时,内存直接服务该请求;(2)当数据不存在数据缓冲区时,需要将数据缓冲区中的 部分数据写回闪存,为外部数据腾出空间,然后再将外部数据写到数据缓冲区中。在情况 (2)中,外部请求只有等待数据缓冲区中写回闪存的数据完全写回之后才能被记录在内存 中,因此,这种写回闪存的操作被称之为被动式写回。传统固态盘缓存管理算法均是被动式 写回,这种被动式写回是影响固态盘性能的直接原因。 发明内容 0005 本发明所解决的技术问题在于,提出一种固态盘。
12、的数据缓存区控制方法,在不增 加固态盘的系统开销的前提下,使得尽可能多的请求由数据缓冲区服务,减少实时的被动 式写回操作,确保固态盘性能得到明显提高。 0006 为实现上述目的,本发明采用如下技术方案: 0007 一种固态盘的数据缓存区管理方法,包括如下具体步骤: 0008 (1)建立两个计数器DAT、WAN。计数器DAT用作控制提前写回数据缓冲区中数据 说 明 书CN 102779017 A 2/4页 5 的数量,既提前写回的阈值;计数器WAN用作记录已经被提前写回的数据量。在进行初始化 时,将计数器DAT赋初值,初值通常设置为数据缓存区的数据总量10。因为计数器DAT 的值在固态盘运行过程。
13、中将实时地修改,因此初始化时的赋值也可为其他值;计数器WAN 置为0。 0009 (2)比较计数器WAN与计数器DAT的关系,如果WAN=DAT时,执行第 四步。 0028 第三步:在数据缓存区中寻找一个节点,将该节点中的数据提前写回到闪存中。 0029 由于在本实施例中,数据缓存区中存在被提前写回的数据节点,因此数据缓存区 中存在两种类型的数据节点,如图2中所示,包括已写回节点和普通节点。已写回节点指数 据已经被提前写回到闪存中的节点,普通节点表示数据还未写回闪存的节点。所有的节点 按照特定的缓存节点排序策略进行排序,在本实施例中以最近最少使用策略LRU为例进行 说明,如图2,但并不限定于这。
14、种策略,其他缓存节点排序策略也适用,如最不经常使用策略 LFU。除此之外,已写回节点也进行排序,称之为已写回节点队列,最先被提前写回的节点 处于该已写回节点队列的队首;最近被提前写回的节点处于该已写回节点队列的队尾。在 整个节点的LRU队列中,存在一个指针,指向下一个可提前写回的数据节点,该数据节点是 LRU队列中从队尾到队首逆序方向的第一个普通节点。在本步骤中,将这个指针所指的数据 节点提前写回,同时将这个数据节点的数据量增加到计数器WAN上。 0030 在本实施例的数据缓存区中,普通节点的数据与闪存中保存的数据不同,而已写 回节点的数据与闪存中保存的数据完全一致。本发明正是利用已写回节点的。
15、数据与闪存数 据的一致性特点,在数据缓存区空间不足时,直接删除已写回节点,避免产生实时的写闪存 操作,从而提高固态盘写操作性能。 0031 第四步:如图1中第四点所述,当WAN=DAT时,无需进行提前写回操作,将检测外 说 明 书CN 102779017 A 4/4页 7 部请求。当外部没有请求到达时,返回到第二步;当有外部请求到达时,需要根据该请求的 数据是否存在于数据缓存区,以及存在于数据缓存区的那个区域进行不同的处理。图3、图 4是外部请求到达时,4种可能的情况。在四种情况中,1、2分别是当写请求的数据存在于数 据缓存区中的两种情况,如图3所示;3、4分别是当写请求的数据不存在于数据缓存。
16、区中的 两种情况,如图4所示。 0032 当写请求的数据存在于数据缓存区时,因为数据缓存区存在两种类型的节点:普 通节点和已写回节点。如果这个数据是属于普通节点的数据,需要将包含这个数据的节点 移动到数据缓存区的LRU队列的队首,如图3中子图a所示;如果这个数据属于已写回节点 的数据,也需要将其移动到数据缓存区的LRU队列的队首,同时将其从已写回节点的队列 中移除,即该节点从已写回节点变为普通节点,如图3中子图b所示。 0033 当写请求的数据不存在于数据缓存区时,如果已写回节点的数量不为零,将已写 回节点队列中队首节点删除,腾出空间后,将该写请求的数据添加到数据缓存区的LRU队 列的队首,如。
17、图4中子图a所示;如果已写回节点的数据量为零,将数据缓存区的LRU队 列的队尾节点写回闪存,该写请求的数据需要等待队尾节点的数据写回闪存的操作完成之 后,才能被添加到数据缓存区的LRU队列的队首,如图4中子图b所示。 0034 计数器DAT是控制提前写回的阈值,它随着时间变化动态调整的。具体的调整方 法如图3中子图b和图4中子图b所示。 0035 如图3中子图a,当写请求的数据存在于数据缓存区中的已写回节点,需要将计数 器DAT的值减小,减小的过程采用以下公式: 0036 DAT (新值) DAT (旧值) -n (1) 0037 在公式(1)中,n表示写请求数据量大小。 0038 如图4中子。
18、图b,当写请求的数据到达时,该数据不存在与数据缓存区中,并且数 据缓存区中已写回节点数量为零,需要将计数器DAT的值增大,增大的过程采用以下公式: 0039 DAT (新值) =DAT (旧值) +m (2) 0040 在公式(2)中,m表示写请求的数据量大小。 0041 在执行完第三步、第四步之后,将回到第二步循环执行。因此,在本发明中,第二 步、第三步、第四步是一个无限循环过程。 说 明 书CN 102779017 A 1/3页 8 图1 图2 说 明 书 附 图CN 102779017 A 2/3页 9 图3 说 明 书 附 图CN 102779017 A 3/3页 10 图4 说 明 书 附 图CN 102779017 A 10 。