CN102779017B - 一种固态盘中数据缓存区的控制方法 - Google Patents
一种固态盘中数据缓存区的控制方法 Download PDFInfo
- Publication number
- CN102779017B CN102779017B CN201210219545.2A CN201210219545A CN102779017B CN 102779017 B CN102779017 B CN 102779017B CN 201210219545 A CN201210219545 A CN 201210219545A CN 102779017 B CN102779017 B CN 102779017B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- buffer area
- data buffer
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明一种固态盘的数据缓存区控制方法,包括(1)设置第一计数器和第二计数器,分别用于记录提前写回的数据量和已被提前写回的数据量;(2)比较两计数器值的大小,如果第二计数器值小于第一计数器,则跳转到步骤(3),否则跳到步骤(4);(3)从数据缓存区中寻找一个保存有未被写回的数据的节点,将其提前写回闪存,同时根据该节点的数据量修改第二计数器的值,跳转到步骤(2);(4)检测是否有外部写请求,在有时执行该外部写请求,并调整第一计数器的值,跳转到步骤(2)。本发明适不受可扩展性的影响,对采用不同数据缓存区排序方法的固态盘设备都适用,可以在不同负载和使用环境下,提高固态盘的写操作性能。
Description
技术领域
本发明属于固态盘存储领域,具体涉及一种基于闪存的固态盘中数据缓存区的控制方法。
背景技术
固态盘是近十年出现的一种新型计算机外存储设备。通常,固态盘分一下几种类型:基于闪存的固态盘、基于动态随机存储器的固态盘、基于其他固态介质的固态盘。目前应用最广泛的是基于闪存的固态盘。闪存是一种具有高密度,大容量,非易失性等特点的新型存储介质,它相对磁介质,具有较低的读写延时、较低的能耗;但是闪存芯片自身存在的一些缺陷限制了这类存储器的应用。其一,必须先擦除后写入,擦除操作的单元为块,写入操作的单元为页,一个块中有多个页。其二,闪存的擦除次数是有限的。固态盘中除了一个处理器、大量的闪存芯片外,还有一个或多个内存芯片。内存芯片的主要作用是用作数据缓冲区,即,在固态盘工作过程中存放经常读写的数据。
为了提高固态盘的读写性能,通常,固态盘中存在多个通道,每个通道上有多个闪存芯片,多个通道和芯片同时工作可以提高读写带宽。固态盘中存在一个内存空间,用作数据缓存区,固态盘中数据缓存区是用户数据在内存中存放的区域,它利用一段时间内,请求可能重复出现的特点,将重复出现的请求通过访问内存而直接被响应,减少访问闪存的次数。因为相对闪存,内存的读写速度较为快速。所以数据缓冲区可以提高固态盘的性能,同时减少了闪存的写操作次数,降低了擦除次数,从而提高了固态盘的寿命。
因为内存的读写速度快,为了提高固态盘性能,需要使大量的外部请求由固态盘内存服务,避免由固态盘中的闪存芯片服务。通常,为了使尽可能多的外部请求由内存服务,传统的方法是设计各种各样的缓存数据排序算法,即,采用不同的规则,将数据缓存区中的数据进行排序,在服务外部请求时,存在两种可能:(1)当外部请求的数据存在于数据缓冲区时,内存直接服务该请求;(2)当数据不存在数据缓冲区时,需要将数据缓冲区中的部分数据写回闪存,为外部数据腾出空间,然后再将外部数据写到数据缓冲区中。在情况(2)中,外部请求只有等待数据缓冲区中写回闪存的数据完全写回之后才能被记录在内存中,因此,这种写回闪存的操作被称之为被动式写回。传统固态盘缓存管理算法均是被动式写回,这种被动式写回是影响固态盘性能的直接原因。
发明内容
本发明所解决的技术问题在于,提出一种固态盘的数据缓存区控制方法,在不增加固态盘的系统开销的前提下,使得尽可能多的请求由数据缓冲区服务,减少实时的被动式写回操作,确保固态盘性能得到明显提高。
为实现上述目的,本发明采用如下技术方案:
一种固态盘的数据缓存区管理方法,包括如下具体步骤:
(1)建立两个计数器DAT、WAN。计数器DAT用作控制提前写回数据缓冲区中数据的数量,既提前写回的阈值;计数器WAN用作记录已经被提前写回的数据量。在进行初始化时,将计数器DAT赋初值,初值通常设置为数据缓存区的数据总量×10%。因为计数器DAT的值在固态盘运行过程中将实时地修改,因此初始化时的赋值也可为其他值;计数器WAN置为0。
(2)比较计数器WAN与计数器DAT的关系,如果WAN<DAT,将进一步执行步骤(3),否则直接跳到步骤(4)。
该步骤中,比较计数器WAN与计数器DAT的关系时,可以先判断当前固态盘的工作状态,即固态盘中部分通道和芯片未处于工作状态时再进行计数器的比较。
(3)从数据缓存区中寻找一个保存有未被写回的数据的节点,将这个节点的数据提前写回闪存,并将其标记为已写回节点,同时根据该节点的数据量修改计数器WAN的值。然后回到步骤(2)。
在这个步骤中,需要实时监测外部请求,如果执行提前写回闪存的操作导致外部请求延时,将暂停写回操作,优先服务外部请求。服务完该外部请求之后再恢复提前写回操作的执行。
(4)检测是否有外部请求,当有外部请求到达时,立即执行该请求。并且根据外部请求的数据是否存在于数据缓存区的情形,调整计数器DAT的值。最后回到步骤(2)。
本发明的关键是提前写回操作,它与传统的数据缓存中的被动式写回操作相对应。被动式写回操作指的是,在传统的数据缓存中,当外部请求的数据需要写到缓存中,才将缓存中的数据写回闪存,这个写回闪存的过程是实时的,因为外部请求只有当这个实时写回操作完成之后才能被服务。提前写回操作指的是,在外部请求数据到达之前,提前将数据缓存区中的部分数据写回闪存,这样当外部请求到达时,将已经被写回的数据删除,然后将新数据记录在数据缓存区中。通过提前写回缓存数据,可以加快固态盘的写操作响应速度,从而提高固态盘性能。
在本发明中,数据缓存区中存在两种类型的数据:未写回的数据、已被写回的数据。通常在数据缓存区中,所有的数据以某种方式进行排序,例如最近最少使用(LRU)、最不经常使用(LFU)等。在本发明中,数据缓存区中的两种类型的数据在一起进行排序。在步骤(3)中,为了寻找一个未被写回的数据,按照这个顺序的逆序进行寻找,首先找到的未被写回的数据就是这次提前写回操作需要写回的数据。
在本发明的步骤(3)中,当固态盘正在执行数据缓存区中的提前写回操作时,外部请求到达固态盘,将中止正在进行的提前写回操作,优先服务外部请求的读写操作,即立即跳转到步骤(4)。
在本发明的步骤(4)中,依据外部写请求的数据是否命中数据缓存区中已被写回的数据,对DAT进行消减;依据外部写请求数据没有命中数据缓存区时,数据缓存区中是否还存在已被写回的数据,对DAT进行增加。在本发明的步骤(4)中主要是对写操作的操作方法的改进,具体读操作的操作方式按照常规读操作方式操作即可。
本发明的方法可以使得尽可能多的写请求直接由固态盘中的数据缓存区服务,避免了实时的写闪存操作,加快了写请求的响应时间,从而提高了固态盘整体的读写性能。
附图说明
图1为本发明实施例的整体流程图;
图2为本发明实施例的数据缓存区结构图;
图3为本发明实施例的写操作的数据存在于数据缓存区时的操作示意图;
图4为本发明实施例的写操作的数据不存在于数据缓存区时的操作示意图。
具体实施方式
下面将结合具体实施例中的附图,对本发明的技术方案进行清楚、完整的描述。
如图1,本实施例的固态盘数据缓存区控制方法,可以主动自适应地适应不同负载的特点,明显地提高固态盘的写操作速度,具体包括如下步骤:
第一步:在固态盘上电开始工作后,进行固态盘的初始化工作,在完成其他常规初始化工作的同时,需要建立两个计数器,分别为DAT和WAN。这两个计数器分别记录:数据缓存区中允许提前写回的最大数据量;数据缓存区中当前已经被提前写回的数据量。
在进行初始化时,将计数器DAT赋初值,初值通常优选设置为数据缓存区的数据总量×10%。因为计数器DAT的值在固态盘运行过程中将实时地修改,因此初始化时的赋值也可为其他值;计数器WAN置为0。
第二步:需要判断固态盘当前的工作状态以及比较计数器DAT与WAN的值。目前,固态盘均是基于多通道多芯片的并行结构,通常一个固态盘中包括多个通道,每个通道上包括多个芯片,当外部请求需要被服务时,固态盘中的这些通道和芯片并未全部服务这个外部请求,而是部分通道、芯片服务该请求,而另外一部分通道、芯片处于空闲状态。在这个步骤中,需要判断、寻找固态盘中处于空闲状态的通道、芯片。如果存在处于空闲状态的通道、芯片,比较计数器DAT与WAN的值,判断是否需要提前写回数据缓存区中的部分数据。根据比较结果,将分别执行不同的步骤。当WAN<DAT时,执行第三步;当WAN>=DAT时,执行第四步。
第三步:在数据缓存区中寻找一个节点,将该节点中的数据提前写回到闪存中。
由于在本实施例中,数据缓存区中存在被提前写回的数据节点,因此数据缓存区中存在两种类型的数据节点,如图2中所示,包括已写回节点和普通节点。已写回节点指数据已经被提前写回到闪存中的节点,普通节点表示数据还未写回闪存的节点。所有的节点按照特定的缓存节点排序策略进行排序,在本实施例中以最近最少使用策略LRU为例进行说明,如图2,但并不限定于这种策略,其他缓存节点排序策略也适用,如最不经常使用策略LFU。除此之外,已写回节点也进行排序,称之为已写回节点队列,最先被提前写回的节点处于该已写回节点队列的队首;最近被提前写回的节点处于该已写回节点队列的队尾。在整个节点的LRU队列中,存在一个指针,指向下一个可提前写回的数据节点,该数据节点是LRU队列中从队尾到队首逆序方向的第一个普通节点。在本步骤中,将这个指针所指的数据节点提前写回,同时将这个数据节点的数据量增加到计数器WAN上。
在本实施例的数据缓存区中,普通节点的数据与闪存中保存的数据不同,而已写回节点的数据与闪存中保存的数据完全一致。本发明正是利用已写回节点的数据与闪存数据的一致性特点,在数据缓存区空间不足时,直接删除已写回节点,避免产生实时的写闪存操作,从而提高固态盘写操作性能。
第四步:如图1中第四点所述,当WAN>=DAT时,无需进行提前写回操作,将检测外部请求。当外部没有请求到达时,返回到第二步;当有外部请求到达时,需要根据该请求的数据是否存在于数据缓存区,以及存在于数据缓存区的那个区域进行不同的处理。图3、图4是外部请求到达时,4种可能的情况。在四种情况中,1、2分别是当写请求的数据存在于数据缓存区中的两种情况,如图3所示;3、4分别是当写请求的数据不存在于数据缓存区中的两种情况,如图4所示。
当写请求的数据存在于数据缓存区时,因为数据缓存区存在两种类型的节点:普通节点和已写回节点。如果这个数据是属于普通节点的数据,需要将包含这个数据的节点移动到数据缓存区的LRU队列的队首,如图3中子图a所示;如果这个数据属于已写回节点的数据,也需要将其移动到数据缓存区的LRU队列的队首,同时将其从已写回节点的队列中移除,即该节点从已写回节点变为普通节点,如图3中子图b所示。
当写请求的数据不存在于数据缓存区时,如果已写回节点的数量不为零,将已写回节点队列中队首节点删除,腾出空间后,将该写请求的数据添加到数据缓存区的LRU队列的队首,如图4中子图a所示;如果已写回节点的数据量为零,将数据缓存区的LRU队列的队尾节点写回闪存,该写请求的数据需要等待队尾节点的数据写回闪存的操作完成之后,才能被添加到数据缓存区的LRU队列的队首,如图4中子图b所示。
计数器DAT是控制提前写回的阈值,它随着时间变化动态调整的。具体的调整方法如图3中子图b和图4中子图b所示。
如图3中子图a,当写请求的数据存在于数据缓存区中的已写回节点,需要将计数器DAT的值减小,减小的过程采用以下公式:
DAT(新值)=DAT(旧值)-n(1)
在公式(1)中,n表示写请求数据量大小。
如图4中子图b,当写请求的数据到达时,该数据不存在与数据缓存区中,并且数据缓存区中已写回节点数量为零,需要将计数器DAT的值增大,增大的过程采用以下公式:
DAT(新值)=DAT(旧值)+m(2)
在公式(2)中,m表示写请求的数据量大小。
在执行完第三步、第四步之后,将回到第二步循环执行。因此,在本发明中,第二步、第三步、第四步是一个无限循环过程。
Claims (8)
1.一种固态盘中数据缓存区的控制方法,包括如下具体步骤:
(1)设置第一计数器(DAT)和第二计数器(WAN),其中该第一计数器(DAT)用于记录提前写回数据缓冲区中数据的数量,该第二计数器(WAN)用于记录已被提前写回的数据量;
(2)比较所述第一计数器(DAT)和第二计数器(WAN)值的大小,如果第二计数器(WAN)值小于第一计数器(DAT),则跳转到步骤(3),否则直接跳到步骤(4);
(3)执行提前写回操作,即从所述数据缓存区中寻找一个保存有未被写回的数据的节点,将该节点的数据提前写回闪存,并将其标记为已写回节点,同时根据该节点的数据量修改第二计数器(WAN)的值,并跳转到步骤(2);
(4)在有外部写请求到达时,执行该外部写请求,并且根据该外部请求的数据是否存在于数据缓存区,调整数据缓存区的节点队列,并相应调整第一计数器(DAT)的值,再跳转到步骤(2),其中,所述数据缓存区的节点队列指数据缓存区所有的节点按照缓存节点排序策略进行排序的队列,该队列包括由已写回节点组成的已写回节点队列,且其位于该数据缓存区的队列的队尾。
2.根据权利要求1所述的固态盘中数据缓存区的控制方法,其特征在于,所述的步骤(4)中:
(4.1)当写请求的数据存在于数据缓存区时,如果该写请求的数据是属于普通节点的数据,则将包含该写请求的数据的节点移动到数据缓存区的队列的队首;如果该写请求的数据属于已写回节点的数据,则将其移动到数据缓存区的队列的队首,同时将其从已写回节点的队列中移除,即该节点从已写回节点变为普通节点;
(4.2)当写请求的数据不存在于数据缓存区时,如果已写回节点的数量不为零,将该已写回节点队列中队首节点删除,将该写请求的数据添加到数据缓存区的队列的队首;如果已写回节点的数据量为零,将数据缓存区的队列的队尾节点写回闪存,待队尾节点的数据写回闪存的操作完成之后,将该写请求的数据添加到数据缓存区的队列的队首;
其中,所述普通节点指数据还未写回闪存的节点,所述已写回节点指数据已经被提前写回到闪存中的节点。
3.根据权利要求2所述的固态盘中数据缓存区的控制方法,其特征在于,在写请求的数据属于数据缓存区中的已写回节点时,将第一计数器(DAT)的值减小,减小公式为:
DAT(新值)=DAT(旧值)-n
其中,n表示写请求数据量大小。
4.根据权利要求2或3所述的固态盘中数据缓存区的控制方法,其特征在于,在写请求的数据不存在于数据缓存区中且数据缓存区中已写回节点数量为零时,将第一计数器DAT的值增大,增大公式如下:
DAT(新值)=DAT(旧值)+m
其中,m表示写请求的数据量大小。
5.根据权利要求1所述的固态盘中数据缓存区的控制方法,其特征在于,所述缓存节点排序策略为最近最少使用(LRU)或最不经常使用(LFU)。
6.根据权利要求1-3和5之一所述的固态盘中数据缓存区的控制方法,其特征在于,所述步骤(3)中,所述寻找的保存有未被写回的数据的节点指数据缓存区的队列中沿队尾到队首方向的第一个普通节点。
7.根据权利要求1-3和5之一所述的固态盘中数据缓存区的控制方法,其特征在于,在执行所述步骤(3)中的提前写回操作时,若有外部读写请求到达固态盘,中止正在进行的提前写回操作,优先服务外部请求的读写操作。
8.根据权利要求1-3和5之一所述的固态盘中数据缓存区的控制方法,其特征在于,所述步骤(1)中,对所述第一计数器(DAT)赋初值为数据缓存区的数据总量×10%,对第二计数器(WAN)赋初值0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210219545.2A CN102779017B (zh) | 2012-06-29 | 2012-06-29 | 一种固态盘中数据缓存区的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210219545.2A CN102779017B (zh) | 2012-06-29 | 2012-06-29 | 一种固态盘中数据缓存区的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102779017A CN102779017A (zh) | 2012-11-14 |
CN102779017B true CN102779017B (zh) | 2016-04-13 |
Family
ID=47123942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210219545.2A Active CN102779017B (zh) | 2012-06-29 | 2012-06-29 | 一种固态盘中数据缓存区的控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102779017B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744624B (zh) * | 2014-01-10 | 2017-09-22 | 浪潮电子信息产业股份有限公司 | 一种实现存储系统ssd缓存数据选择性升级的系统架构 |
CN111913649B (zh) * | 2019-05-09 | 2022-05-06 | 深圳大普微电子科技有限公司 | 一种固态硬盘的数据处理方法及装置 |
CN111414318B (zh) * | 2020-03-24 | 2022-04-29 | 江南大学 | 一种基于提前更新的数据一致性实现方法 |
CN113093999B (zh) * | 2021-05-07 | 2022-11-18 | 厦门市美亚柏科信息股份有限公司 | 一种基于自适应锁的缓存淘汰方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1704910A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种磁盘阵列结构中的写处理方法 |
CN102063386A (zh) * | 2010-12-17 | 2011-05-18 | 曙光信息产业(北京)有限公司 | 一种单载体多目标的缓存系统的缓存管理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4429780B2 (ja) * | 2004-03-31 | 2010-03-10 | 富士通株式会社 | 記憶制御装置、制御方法、および制御プログラム。 |
KR101472967B1 (ko) * | 2007-12-14 | 2014-12-16 | 삼성전자주식회사 | 라이트 백 동작을 수행하는 캐시 메모리, 이의 동작 방법, 및 이를 포함하는 시스템 |
-
2012
- 2012-06-29 CN CN201210219545.2A patent/CN102779017B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1704910A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种磁盘阵列结构中的写处理方法 |
CN102063386A (zh) * | 2010-12-17 | 2011-05-18 | 曙光信息产业(北京)有限公司 | 一种单载体多目标的缓存系统的缓存管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102779017A (zh) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI446345B (zh) | 用來進行區塊管理之方法以及記憶裝置及控制器 | |
US9342458B2 (en) | Cache allocation in a computerized system | |
US10649890B2 (en) | Information processing system, storage control apparatus, storage control method, and storage control program | |
US9274865B2 (en) | Implementing enhanced buffer management for data storage devices | |
WO2019178845A1 (zh) | 一种存储介质垃圾回收方法、存储介质和程序产品 | |
CN103440207A (zh) | 缓存方法及装置 | |
CN102779017B (zh) | 一种固态盘中数据缓存区的控制方法 | |
WO2009006803A1 (fr) | Procédé et appareil pour effectuer un nivellement d'usure en mémoire | |
US20140258672A1 (en) | Demand determination for data blocks | |
CN108776614A (zh) | 存储块的回收方法和装置 | |
US8719235B2 (en) | Controlling tape layout for de-duplication | |
CN103985393A (zh) | 一种多光盘数据并行管理方法及装置 | |
CN107329902A (zh) | 数据储存装置以及快闪存储器控制方法 | |
US8868853B2 (en) | Data processing device, data recording method and data recording program | |
CN108563586B (zh) | 一种分离固态盘中垃圾回收数据与用户数据的方法 | |
CN102681792A (zh) | 一种固态盘内存分区方法 | |
CN112306404B (zh) | 一种瓦记录磁盘数据布局方法、系统及相关设备 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
Oe et al. | On-The-Fly Automated Storage Tiering (OTF-AST) | |
US10585592B2 (en) | Disk area isolation method and device | |
US11301395B2 (en) | Method and apparatus for characterizing workload sequentiality for cache policy optimization | |
CN110275678B (zh) | 一种基于stt-mram的固态存储器件随机访问性能提升方法 | |
CN111859038A (zh) | 一种分布式存储系统数据热度统计方法、装置 | |
KR101191650B1 (ko) | 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법 | |
CN103412727A (zh) | 优化固态硬盘的删减命令的方法及其固态硬盘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |