一种基于多通道闪存的读写分离方法与流程

文档序号:20916453发布日期:2020-05-29 13:35阅读:176来源:国知局
一种基于多通道闪存的读写分离方法与流程

本发明涉及闪存堆叠技术领域,尤其是一种基于多通道闪存的读写分离方法。



背景技术:

在闪存设备上,读写之间会产生严重的干扰,特别是对于写密集型场合下,写操作对读产生的影响更大。当写操作在闪存芯片中正在处理时,读操作被发到同一芯片,则会发生读取和写入干扰。此时读请求必须等待写请求执行完成后才能进行处理,而一个写操作在目前先进的闪存中处理所花费的时间大概是1毫秒至3毫秒,一个读请求处理相对要快很多,大概是50微妙至80微妙。两者相差近60倍,这将会导致读性能严重下降。闪存设备上有一部分数据是只读型数据,一部分数据是只写型数据,还有少部分数据是混合型数据。而大部分的读操作发生在只读型数据上,大部分的写操作发生在只写型数据上。

现有技术的闪存设备上,读写请求在每块芯片上的分布是均匀的,那么写请求将会严重影响读性能。尤其,随着闪存的发展,闪存中的读写干扰问题越来越严重,这极大地影响了读性能。基于闪存的读写访问特征,对闪存的读写请求进行分离,可以较大程度地降低读写之间的干扰,提高读性能。



技术实现要素:

本发明的目的是针对现有技术的不足而设计的一种基于多通道闪存的读写分离方法,采用对闪存中的读写请求进行选择性分离并根据访问特征动态迁移的方式,使得尽可能多的读请求发生在读区域上,写请求发生在写区域上,以实现读写之间的分离,优化数据的放置,降低读写之间的干扰,改善读性能,有效提高快页访问的效率,并减少对慢页访问的影响,大大提高了闪存的读性能。

本发明的目的是这样实现的:一种基于多通道闪存的读写分离方法,其特点是将多通道闪存按读区域和写区域划分,并根据历史访问情况确定当前被访问的数据应该放在哪一个区域,如放置错误则需要对数据进行迁移,使其尽可能多的读请求发生在读区域上,写请求发生在写区域上,以实现读写之间的分离,降低读写干扰,从而提升读性能。

所述读区域和写区域划分是在闪存控制器中添加读写数据放置组件和数据动态迁移组件,并通过在映射表中添加记录历史访问的次数和操作类型。

所述读写数据放置组件是根据历史访问进行预判数据应该放置的区域,即将读写请求分离为只读型数据、只写型数据和混合型数据。

所述数据动态迁移组件是根据历史访问对不断变化的读写访问进行动态识别,并将放置不准确的数据进行迁移,以确保读区域上只发生读取操作,而写区域上只发生写入操作。

所述只读型数据为访问的读请求数与总访问次数的占比超过阈值的数据;所述只写型数据为访问的写请求与总访问次数的占比超过阈值的数据;所述混合型数据为只读型数据和只写型数据之外的其余数据。

所述数据动态迁移需在映射表中每一项添加位数,记录前几次的操作类型,并且设置迁移阈值,即从读区域迁移到写区域的写阈值tw和从写区域迁移到读区域的读阈值tr,对于读区域发生写入次数超过tw的数据在更新操作时将数据迁移到写区域;对于在写区域发生读取次数超过tr的数据在本次读取的时将数据迁移到写区域。

本发明与现有技术相比具有优化数据的放置,使得尽可能多的读请求发生在读区域上,写请求发生在写区域上,以实现读写之间的分离,降低读写之间的干扰,改善读性能,有效提高快页访问的效率,最大限度地减少对慢页访问的影响,大大提高了闪存的读性能。

附图说明

图1为固态硬盘架构图;

图2为本发明的读写分离架构图;

图3为读写数据放置示意图;

图4为数据动态迁移示意图。

具体实施方式

参阅附图1,本发明通过对整个闪存设备进行划分,分为读区域和写区域,并根据历史访问情况确定当前被访问的数据应该放在哪一个区域。如果放置错误了,那么需要对数据进行迁移,使得尽可能多的读请求发生在读区域上,写请求发生在写区域上,以实现读写之间的分离,降低读写干扰,从而提升读性能。

通过以下具体实施例对本发明作进一步的详细说明。

实施例1

参阅附图2,本发明根据ssd的存取特性,以通道为粒度将ssd划分为读写区域,并将读数据和写数据分别分配到这两个区域。在访问过程中,如果读区域上只发生读取操作而写区域上只发生写入操作,那么读写之间将不会产生干扰,从而读性能将大大提升。然而,将ssd按读、写两个区域划分存在着:除了只读和只写型数据之外,还有一部分是混合型数据;读写分区的方式将降低区域的并行度,如果负载对并行性很敏感,那么效果可能并不乐观。为了解决这些问题,

本发明设计了一种动态迁移方法,该方法旨在根据数据的访问特性动态放置这些数据。闪存单元以通道为粒度划分为读区域和写区域,其中读区域两个通道,写区域两个通道,并在闪存传输层中,添加读写数据放置组件和数据动态迁移组件。对于读写数据的放置:ssd划分为两个区域后,根据数据的访问特征决定放在哪个区域,对于只读型的数据,大部分访问的都是读请求,因此将这类数据放在读区域,对于只写型数据也采用类似的方法。

参阅附图3,从主机端接收读写请求,其中数据a和数据b是只读型数据,数据c和数据d是只写型数据。因此,数据a和数据b被放在读区域,而数据c和数据d被放在写区域。

上述数据动态迁移方法,在读写数据放置方法的基础上,依然存在一部分的混合型数据,因此,在这类数据上,读写请求的比重都比较高。对于这些混合型数据采用数据动态迁移方法,主要分为两类,一类是将数据从读区域迁移至写区域;一类是将数据从写区域迁移至读区域。对于第一类情况,如果当前数据在读区域而有大量的写操作发生,那么需要将数据从当前所在的读区域迁移至写区域;对于第二类情况,如果当前数据在写区域而有大量的读操作发生,那么需要将数据从当前所在的写区域迁移至读区域。然而,上述解决方案的重点是如何确定迁移的阈值,对于读到写区域的迁移,它没有成本,但如果它们是不正确的,则在写区域中会发生更多的读取。对于从写区域到读区域的迁移,它引入了额外的写入成本,如果它们是不正确的,在读区域将会发生更多的写操作。将读区域发生迁移的阈值标记为tr和写区域发生迁移的阈值标记为tw,同时考虑了成本和收益。一旦在写入区域连续读取tr次数后,它们会被迁移;一旦在读取区域被连续写入tw次数后,则它们被迁移。

参阅附图4,其中,数据a上发生写操作达到阈值和数据c上发生读操作达到阈值,它们被迁移。通过读写数据放置方法和数据动态迁移方法,以实现读请求和写请求尽可能的分离,减少读写之间的干扰,以提高读性能。

上述读写数据放置组件和数据动态迁移组件的实现过程,主要分为以下几个步骤:

a、初步判断当前访问的数据是只读型数据还是只写型数据,如果是只读型数据,通过读写数据放置组件的识别,放入读区域;如果是只写型数据,通过读写数据放置组件的识别,并放入写区域。

b、将只读型数据和只写型数据分别放入读区域和写区域,但依然有一部分放置不准确的混合型数据,对于这类数据,通过数据动态迁移组件的识别,对其进行动态迁移。

c、在动态迁移过程中,如果当前读取的数据在写区域,并且连续读取的次数达到阈值,则进行迁移;如果当前写入的数据在读区域,并且连续写的次数达到阈值,那么将当前写请求分配到写区域。否则,依然在原先的区域进行读写操作。

所述读写数据放置组件和数据动态迁移组件针对只读型数据、只写型数据以及混合型数据放置做出了合理的解决。其中,读写数据放置组件只根据访问特征进行数据放置判别,而数据动态迁移组件则根据历史访问记录进行迁移。该方案存在的问题是:闪存内部的并行性下降,不但影响了读区域的读请求并行,而且也会影响写区域的写请求并行。对大量的负载进行测试,发现大部分的负载在通道数高于一定数量之后,对并行的要求几乎不变了。因此,对于多通道的闪存,只需要保证读通道的数量在一定阈值以上,确保不受并行的影响即可。通过读写数据放置方法和数据动态迁移方法,以实现读请求和写请求尽可能的分离,减少读写之间的干扰,以提高读性能,且由于混合型的数据占比并不高,因此迁移所产生的开销是非常小的。

以上只是对本发明作进一步的说明,并非用以限制本专利,凡为本发明等效实施,均应包含于本专利的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1