CN104090847A - 一种固态存储设备的地址分配方法 - Google Patents
一种固态存储设备的地址分配方法 Download PDFInfo
- Publication number
- CN104090847A CN104090847A CN201410290432.0A CN201410290432A CN104090847A CN 104090847 A CN104090847 A CN 104090847A CN 201410290432 A CN201410290432 A CN 201410290432A CN 104090847 A CN104090847 A CN 104090847A
- Authority
- CN
- China
- Prior art keywords
- request
- passage
- read
- write
- 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.)
- Granted
Links
Landscapes
- Memory System (AREA)
Abstract
本发明公开了一种固态存储设备的地址分配方法,适用于基于闪存的多通道固态存储设备,属于固态存储领域,解决现有的分配策略中存在的读写请求冲突问题。解决在读写请求混合的工作负载中,请求的响应时间变长的问题。本发明方法包括通道权值的分配,物理地址分配以及冲突预测避免机制。本发明为读、写请求以及垃圾回收操作分配不同的权值,权值可以根据用户的需求调整,以适应不同的读写性能要求,充分利用固态存储设备内部的并行性,并根据负载情况,为写请求选择合适的物理地址,减少写后读冲突并降低垃圾回收操作对写请求的阻塞。实现固态存储设备读写响应时间的降低以及固态存储设备性能的提升。
Description
技术领域
本发明属于固态存储技术领域,更具体地,涉及一种固态存储设备的地址分配方法。
背景技术
固态存储设备是一类有别于机械硬盘的新型计算机存储设备。与传统硬盘相比,基于闪存的固态存储设备具有高密度,低能耗,无噪音,抗震动等特点,同时它具有较低的读写延时以及更高的吞吐率。
由于闪存介质的特点,基于闪存的固态存储设备还具有以下缺陷:
(1)先擦后写:闪存介质在写入数据时不能就地更新,需要先对目标地址的物理块进行擦除操作,然后再进行数据的更新。擦除操作和读写操作的基本单位不同,擦除操作以物理块为单位,读写操作以物理页为单位,通常一个物理块中包含有64或128个物理页。
(2)读、写和擦除操作的速度差异:在闪存介质中,单次的读操作时间约为15-50μs,写操作时间约为200μs,擦除操作时间约为50ms。读写速度的差异会带来读操作的阻塞问题,当读请求在写请求之后到达时,由于较长的写请求处理时间,会导致读请求等待一个较长的时间。擦除操作耗时长,会导致后续请求长时间等待。
(3)闪存寿命:闪存颗粒的寿命是按Program/Erase(编程/擦除)次数计算的,MLC(全称,多阶存储单元闪存)的寿命一般在1000-10000次,SLC(全称,单阶存储单元闪存)则在10万次左右。
为了充分利用闪存芯片的速度优势,并解决闪存芯片存在的问题,在固态存储设备中,加入了一个闪存转换层。闪存转换层主要提供地址映射,垃圾回收以及磨损均衡3个功能。地址映射是闪存转换层的核心,它通过一个映射表提供逻辑地址到物理地址的映射。垃圾回收的作用是回收固态存储设备中的失效页,合并整理为干净的物理块,增加设备的可用空间。磨损均衡用来保证固态存储设备中各个物理块之间擦除次数的均衡,保证固态存储设备的寿命以及可靠性。垃圾回收和磨损均衡等功能都依赖地址映射表来实现。
基于闪存的固态存储通常由多个独立通道组成,每个通道连接多颗闪存芯片,芯片内部又可以分为晶元、分组、块和页。单颗芯片的读写速度,单个通道的传输速度都有限,为了尽可能的提高固态存储设备的性能,就需要充分的利用通道和芯片间的并行性。
固态存储设备中,地址分配是指为需要写到设备中的逻辑页确定空闲物理页,根据选择物理页的范围主要分为静态分配方式、动态分配方式和混合分配方式。不同的地址分配方式对固态存储设备内部的并行性的利用方式不一样,所以对性能有着不同的影响。在通常情况下,静态分配方式的读性能优于动态分配方式,而写性能比动态分配方式差。
在静态分配方式中,逻辑页按预先定义好的规则被分配到指定的通道、芯片、晶元、分组中。根据分配规则的不同,可以分为多种不同的静态分配方式,根据<通道,芯片,晶元,分组>不同的排列组合顺序,可以排列成24种不同的静态分配方式。
在动态分配方式中,逻辑页可以选择设备中所有的空闲物理页。综合考虑通道、芯片、晶元、分组的忙闲,物理块的磨损程度等因素,最终确定分配的具***置。使用全动态的分配方式,可以有效的提高写性能,让写请求在较短的时间获得响应。
混合分配方式结合静态分配方式以及动态分配方式的特点,通道、芯片、晶元、分组4个层次的分配部分使用静态规则指定,部分由动态规则指定。如静态的分配通道,根据忙闲动态的分配芯片、晶元、分组等。
目前,静态地址分配在固态存储设备中广泛应用,静态地址分配可以提供较好的连续读写性能,但随机读写的性能较差。请求分配到固态存储设备内部的具***置,由请求的逻辑地址计算得到,当请求的逻辑地址随机分布时,会出现大量请求对固态存储设备内部通道等资源的争用,导致某些通道内请求十分密集,而某些通道请求较少甚至没有请求访问。尤其是读请求其访问的数据位置已根据地址确定,写请求占用通道资源时,读请求响应时间不断上升,固态存储设备的性能显著下降。
动态地址分配可以提高固态存储设备的写性能,但并不能有效的减少读写请求之间的冲突,读性能较静态地址分配降低。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于通道权值的地址分配方法,其目的在于在固态盘内部实现读写请求调度,充分利用固态存储设备内部的并行性,由此解决固态存储设备在读写混合的工作环境中读写请求对其内部资源争用而导致的性能下降。
为实现上述目的,本发明提供了一种固态存储设备的地址分配方法,所述方法包括如下步骤:
(1)请求接收步骤:固态存储设备接收到由上层文件***发送的读写请求,对接收的请求类型进行判断并进行相应的操作,若为写请求,则直接将请求加入到请求队列队尾,等待处理;若为读请求,则根据请求的逻辑地址查找映射表获得其对应的物理地址,根据物理地址可以计算得到请求对应的通道信息,预先处理读请求对应的权值,根据已知的通道信息,给对应的通道加上读操作的权值,并将此请求加入到请求队列队尾,等待处理;
(2)请求队列处理步骤:固态存储设备对存放在请求队列中未处理的请求采用先进先出的方式进行处理,依次进行地址分配;
(3)读请求分配步骤:若从请求队列取出的请求为读请求,根据请求接收步骤中查找映射表已知的信息,将请求加入到对应通道的通道队列的尾部,等待处理;
(4)写请求分配步骤:若从请求队列取出的请求为写请求,则根据各个通道的权值大小,比较得到权值最小的通道,并根据芯片忙闲信息选择此写请求对应的芯片、晶元、分组、物理块和物理页,并由此计算出对应的物理地址;将请求加入到对应通道的通道队列的尾部,更改对应通道的权值,等待处理;
(5)通道队列处理步骤:闪存控制器从通道队列中取出请求,并根据由请求接收步骤和请求队列处理步骤中获得的请求物理地址、请求大小、请求类型信息,对闪存芯片进行相应的操作,从闪存中读取相应数据信息或将请求携带的数据写入到其物理地址对应的闪存物理页中;当闪存芯片的读写操作完成后,闪存控制器向固态盘控制器返回完成信息,并根据请求的类型更改对应通道的权值;通道内读操作完成则对应通道的权值减去读操作权值,写操作完成则对应通道的权值减去写操作权值;
(6)垃圾回收处理步骤:触发垃圾回收操作时,为进行垃圾回收操作的通道加上垃圾回收操作权值,待垃圾回收操作完成后,对应通道的权值减去垃圾回收操作的权值。
在本发明的一个实施例中,所述请求接收步骤具体包括:
(1.1)固态存储设备接收上层文件***或固态存储设备缓存产生的读写请求,所述读写请求至少包含逻辑页地址、请求大小、读写操作信息,进行子步骤(1.2);
(1.2)判断请求大小是否大于一个物理页的大小,若大于,转子步骤(1.3);否则转子步骤(1.4);
(1.3)计算此请求需要占用的物理页数n,将其划分为n个请求,每个请求对应一个物理页,转子步骤(1.4);
(1.4)判断请求的操作类型,若为写请求,转子步骤(1.7);若为读请求,转子步骤(1.5);
(1.5)根据读请求的逻辑地址查映射表得到对应的物理地址,由物理地址可知此请求所对应的通道i、芯片,i对应固态存储设备中某一通道号,转子步骤(1.6);
(1.6)计算通道i对应通道权值Wi=Wi+WR,WR为读请求权值,转子步骤(1.7);
(1.7)将请求按序加入请求队列的尾部。
在本发明的一个实施例中,所述请求队列处理步骤具体包括:
(2.1)查询请求队列状态,判断请求队列是否为空,是则转子步骤(2.3),否则转子步骤(2.2);
(2.2)读取请求队列队头请求,根据请求操作信息分类,若为读请求,转步骤(3);若为写请求,转步骤(4)。
在本发明的一个实施例中,所述读请求分配步骤具体包括:从请求队列队头取出读请求,由子步骤(1.5)中查得请求对应的通道号i,将此读请求加入通道i队列尾部,转步骤(5)。
在本发明的一个实施例中,所述写请求分配步骤具体包括:
(4.1)从请求队列队头取出写请求,进行子步骤(4.2);
(4.2)由闪存先擦后写特性可知,写请求需要空闲物理页进行存储,比较各个通道权值Wi,找到权值最小的通道j,j对应此时固态存储设备中权值最小的通道,转子步骤(4.3);
(4.3)判断闪存转换层是否支持芯片选择,若支持,转子步骤(4.4);若不支持,将此写请求加入通道j队列尾部,转子步骤(4.5);
(4.4)轮询查找此通道下芯片片选信号R/B,找到空闲芯片k,若所有芯片都不空闲,则选择第一个查询的芯片k,确定请求将要写入的芯片k,将此写请求加入通道j队列尾部,转子步骤(4.5)
(4.5)通道j通道权值Wj=Wi+WW,WW为写请求权值,转步骤(5)
在本发明的一个实施例中,所述通道队列处理步骤具体包括:
(5.1)依次查询通道队列,若通道i队列为空,转步骤(6)并继续查询下一通道,若不为空,转子步骤(5.2);
(5.2)读取通道队列头部请求,获取信息,转子步骤(5.3);
(5.3)处理通道队列队头的请求,若为读请求,转子步骤(5.4);若为写请求,转子步骤(5.5);
(5.4)根据读请求的物理地址,取出物理地址对应的物理页中的数据,并发送给上层应用,当读操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时Wi=Wi-WR,转子步骤(5.1);
(5.5)根据已知的写请求通道、芯片信息,将数据写入对应的空闲物理页中,当写操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时Wi=Wi-WW,转子步骤(5.1)。
在本发明的一个实施例中,所述通道队列处理步骤具体包括:
(6.1)根据通道i空闲物理页比例,判断是否需要进行垃圾回收操作,若不需要进行垃圾回收操作,转子步骤(2.1),若需要进行垃圾回收操作,转子步骤(6.2);
(6.2)执行通道内垃圾回收操作,通道i通道权值Wi=Wi+WGC,WGC为垃圾回收权值,转子步骤(6.3);
(6.3)垃圾回收操作完成,通道i通道权值Wi=Wi-WGC,转步骤(5)。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)相比传统的静态分配方式与动态分配方式,本发明中加入了通道权值。通道权值能表征通道的忙闲程度,当有写请求到达时,可以根据通道权值的比较,选择合适的通道分配请求,充分利用通道间的并行性。
(2)本发明在进行垃圾回收操作时,为对应通道加上垃圾回收操作的权值,写请求处理步骤可以根据通道权值比较,合理的避免垃圾回收操作与写请求操作的冲突,为写请求分配合适的通道,减少写请求响应时间。
(3)本发明在读请求进入固态存储设备,而不是读请求加入通道队列时,给请求对应的通道加上了相应的读操作权值WR,通过这一步骤对权值的操作,提高了此读请求的优先性,降低了此读请求被写请求阻塞的可能性,减少了读写操作的冲突,从而可以提高固态存储设备的性能,降低读写请求的响应时间。
(4)本发明通过通道队列的先进先出策略保证读写请求都能在一定时间内被处理,而不会出现读请求或写请求被长时间阻塞,保证了读写请求的公平性。通过权值的设置以及轮询机制,也保证了写请求在各个通道间的均匀分布。使数据平均的分布在各个通道中,保证了读请求的并行性和性能,同时使各个通道内物理块的磨损程度保持均衡。
(5)本发明可以合理的根据固态存储设备使用的工作环境自定义读写操作的权值WR、WW,从而控制读写操作的优先级,以适应要求不同读写响应时间的工作环境。WR与WW比值越高,则读请求优先级越高,反之则写请求优先级越高。
附图说明
图1为本发明固态存储设备的地址分配方法的流程示意图;
图2为本发明一实施例中请求接收步骤的流程示意图;
图3为本发明一实施例中请求队列处理步骤的流程示意图;
图4为本发明一实施例中读请求分配步骤的流程示意图;
图5为本发明一实施例中写请求分配步骤的流程示意图;
图6为本发明一实施例中通道队列处理步骤的流程示意图;
图7为本发明一实施例中垃圾回收操作步骤的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了清楚地理解本发明,以下对有关概念加以解释:
NAND闪存芯片:闪存芯片技术在1984年由东芝公司发明,是一种电子式可清除程序化只读存储器,它的特点是结构简洁,单位面积的半导体内能实现相当多的数据存储量。这种结构带来的副作用是擦写时不能以bit为单位,而只能以物理块为单位进行大范围的操作。
闪存控制器:管理存储在闪存芯片中的数据,并提供访问接口。
通道:在固态存储设备中连接闪存控制器和闪存芯片,每个通道由多个芯片组成;
物理块:闪存芯片的存储区域,每个闪存芯片中包含若干个物理块,每个物理块中包含恒定数量的物理页,物理块也是擦除操作的基本单位;
物理页:闪存芯片的最小存储单元,物理页是为写请求分配资源的基本单位,根据闪存工艺的不同,不同芯片的物理页大小不同;
逻辑页地址:描述计算机存储设备上数据所在区块的通用机制,指某个数据区块的地址或某个地址所指向的数据区块,可由闪存转换层转换得到物理地址;
空闲物理页:固态存储设备中物理页还没有使用,即其没有数据时,该物理页为空闲物理页,可以用于写请求和垃圾回收操作的分配;
映射表:是保存逻辑页地址与物理页地址之间一一对应关系的数据结构。
垃圾回收:垃圾回收的过程一般是先将选中的物理块中的有效数据转移到其它物理块中,然后对其实施擦除操作。是通过擦除具有较多无效数据的物理块来回收物理页。
请求队列:固态存储设备中用来存放待处理请求的队列,此队列为先进先出队列;
通道队列:固态存储设备中用来存放来自请求队列、经过闪存转换层分配给各个通道的请求,此队列为先进先出队列;
读请求权值WR:根据固态存储设备读取一个物理页数据所需的时间取值,也可用户工作需要自定义;
写请求权值WW:根据固态存储设备写入一个物理页数据所需的时间取值也可根据用户工作需要自定义。读写权值比值越高,则读请求优先级越高,反之则写请求优先级越高;
垃圾回收权值WGC:根据通道内进行垃圾回收操作所需的时间取值,也可根据用户工作需要自定义;
通道权值:由通道队列内的读写请求状态,根据读写请求权值计算统计出此时通道i对应的权值Wi,Wi可以表示此时的通道状态并感知未来一段时间内的通道繁忙程度。
本发明所提供的一种固态存储设备的地址分配方法,采用混合分配方式,由权值计算比较动态得到目标通道,通过检测通道连接的各芯片R/B信号忙闲选择芯片。此方式适用于基于闪存的固态存储设备,如图1所示,本发明方法包括请求接收、请求队列处理、读请求分配、写请求分配、通道队列处理和垃圾回收操作的步骤,包括:
(1)请求接收步骤:固态盘存储设备接收到由上层文件***发送的读写请求,其中包含请求的逻辑地址,请求大小,读写操作等信息,设备对读写请求采用不同的处理策略,对接收的请求类型进行判断并进行相应的操作,若为写请求,则直接将请求加入到请求队列队尾,等待处理,若为读请求,则根据请求的逻辑地址查找映射表获得其对应的物理地址,根据物理地址可以计算得到请求对应的通道信息,预先处理读请求对应的权值,根据已知的通道信息,给对应的通道加上读操作的权值,并将此请求加入到请求队列队尾,等待处理;
(2)请求队列处理步骤:请求队列是固态盘与上层的接口,还未处理的请求都将存放在请求队列中等待处理,请求队列采用先进先出方式设计,队列中的请求依次进行地址分配;
(3)读请求分配步骤:请求队列采用先进先出队列,固态盘控制器取出请求队列队头的请求,对读写请求采用不同的分配策略;若从请求队列取出的请求,根据请求接收步骤中查找映射表已知的信息,将请求从请求队列队头取出,加入到对应通道的通道队列的尾部,等待处理;
(4)写请求分配步骤:若从请求队列取出的请求为写请求,则根据各个通道的权值大小,比较得到权值最小的通道,并根据芯片忙闲等信息选择此写请求对应的芯片、晶元、分组、物理块和物理页,并由此计算出对应的物理地址;将请求从请求队列队头取出,加入到对应通道的通道队列的尾部,更改对应通道的权值,等待处理;
(5)通道队列处理步骤:闪存控制器从通道队列中取出请求,并根据由请求接收步骤和请求队列处理步骤中获得的请求物理地址、请求大小、请求类型等信息,对闪存芯片进行相应的操作,从闪存中读取相应数据信息或将请求携带的数据写入到其物理地址对应的闪存物理页中;当闪存芯片的读写操作完成后,闪存控制器向固态盘控制器返回完成信息,并根据请求的类型更改对应通道的权值;通道内读操作完成则对应通道的权值减去读操作权值,写操作完成则对应通道的权值减去写操作权值;
(6)垃圾回收处理步骤:触发垃圾回收操作时,为进行垃圾回收操作的通道加上垃圾回收操作权值,垃圾回收操作时间较长,权值设置较大,降低写请求分配至该通道的优先级,待垃圾回收操作完成后,对应通道的权值减去垃圾回收操作的权值。
下面对各步骤的详细操作进行具体描述,
(1)请求接收步骤,具体如图2所示,包括如下子步骤:
(1.1)固态存储设备接收上层文件***或固态存储设备缓存产生的读写请求,所述读写请求至少包含逻辑页地址、请求大小、读写操作信息,进行子步骤(1.2);
(1.2)判断请求大小是否大于一个物理页的大小,若大于,转子步骤(1.3);否则转子步骤(1.4);
(1.3)计算此请求需要占用的物理页数n,将其划分为n个请求,每个请求对应一个物理页,转子步骤(1.4);
(1.4)判断请求的操作类型,若为写请求,转子步骤(1.7);若为读请求,转子步骤(1.5);
(1.5)根据读请求的逻辑地址查映射表得到对应的物理地址,由物理地址可知此请求所对应的通道i(i对应固态存储设备中某一通道号)、芯片,转子步骤(1.6);
(1.6)计算通道i对应通道权值Wi=Wi+WR,转子步骤(1.7);
(1.7)将请求按序加入请求队列的尾部,转步骤(2);
(2)请求队列处理步骤,具体如图3所示,包括下述子步骤:
(2.1)查询请求队列状态,判断请求队列是否为空,是则转子步骤(2.3),否则转子步骤(2.2);
(2.2)读取请求队列队头请求,根据请求操作信息分类,若为读请求,转步骤(3);若为写请求,转步骤(4);
(2.3)结束;
(3)读请求分配步骤,具体如图4所示,包括下述子步骤:
(3.1)从请求队列队头取出读请求,由子步骤(1.5)中查得请求对应的通道号i,将此读请求加入通道i队列尾部,转步骤(5);
(4)写请求分配步骤,具体如图5所示,包括下述子步骤:
(4.1)从请求队列队头取出写请求,进行子步骤(4.2);
(4.2)由闪存先擦后写特性可知,写请求需要空闲物理页进行存储,比较各个通道权值Wi,找到权值最小的通道j(j对应此时固态存储设备中权值最小的通道),转子步骤(4.3);
(4.3)判断闪存转换层是否支持芯片选择,若支持,转子步骤(4.4);若不支持,将此写请求加入通道j队列尾部,转子步骤(4.5);
(4.4)轮询查找此通道下芯片片选信号R/B,找到空闲芯片k,若所有芯片都不空闲,则选择第一个查询的芯片k,确定请求将要写入的芯片k,将此写请求加入通道j队列尾部,转子步骤(4.5)
(4.5)通道j通道权值Wj=Wi+WW,转步骤(5);
(5)通道队列处理步骤,具体如图6所示,其子步骤如下:
(5.1)依次查询通道队列,若通道i队列为空,转步骤(6)并继续查询下一通道,若不为空,转子步骤(5.2);
(5.2)读取通道队列头部请求,获取信息,转子步骤(5.3);
(5.3)处理通道队列队头的请求,若为读请求,转子步骤(5.4);若为写请求,转子步骤(5.5);
(5.4)根据读请求的物理地址,取出物理地址对应的物理页中的数据,并发送给上层应用,当读操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时Wi=Wi-WR,转子步骤(5.1);
(5.5)根据已知的写请求通道、芯片信息,将数据写入对应的空闲物理页中,当写操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时Wi=Wi-WW,转子步骤(5.1);
(6)垃圾回收处理步骤,具体如图7所示,其子步骤如下:
(6.1)根据通道i空闲物理页比例,判断是否需要进行垃圾回收操作,若不需要进行垃圾回收操作,转子步骤(2.1),若需要进行垃圾回收操作,转子步骤(6.2);
(6.2)执行通道内垃圾回收操作,通道i通道权值Wi=Wi+WGC,转子步骤(6.3);
(6.3)垃圾回收操作完成,通道i通道权值Wi=Wi-WGC,转步骤(5);
以下结合具体实施例说明本发明的方案,本实施例中的固态存储设备物理容量为512GB,设备内有4个通道,每个通道连接4个32GB闪存芯片。以MT29F256G08CJAAB芯片为例,芯片内物理页大小为8KB,每个物理块内部包含256个物理页,每2048个物理块组成一个分组,两个分组封装为一个晶元,四个晶元组成一个芯片。
连续的写请求:
当请求队列中的请求为连续的写请求时,根据写请求分配步骤(4.2)闪存控制器查询比较各通道的权值,此时通道权值按从小到大排列有一个固定的顺序,例如通道1<通道2<通道3<通道0。根据本发明方案,将请求队列中的写请求依次分配到通道1,通道2,通道3,通道0的队列中,增加对应通道的权值并通过片选信号找到空闲的芯片。因每个通道都有写请求加入,各通道的权值比较顺序不会改变,写请求按顺序均匀的分布在通道1、2、3、0中,读请求访问这些连续数据时,能依通道顺序读出,充分利用固态存储设备内部通道间的并行性。
随机的写请求:
当请求队列中的请求为随机的写请求时,本发明方案处理方式与连续的写请求一样,使随机写性能与连续写性能相当。
连续的读请求:
当请求队列中的请求为连续的读请求时,根据请求接收步骤(1.5),闪存控制器根据读请求逻辑地址(lpn)查映射表得到对应的物理地址。由于读请求的所请求的物理地址已确定,将读请求分配到对应的通道中,等待执行。连续的读请求对应的数据多数为原先已连续写入的数据。根据本发明方案,其数据已均匀的分布在各个通道和芯片中,连续读请求也能充分利用设备的并行性。
随机的读请求:
与连续的读请求处理方式类似。若读请求所请求的数据是在一个连续时间段内发送给固态存储设备的,那么根据本方案处理随机写请求的原则,这些数据也能均匀的分布在各个通道与芯片中。若不是,则可能出现随机的读请求所请求的数据分布在一个通道甚至一个芯片内的情况,此时,后续的请求需要等待前面的请求完成,无法利用闪存设备的并行性,设备的整体性能下降。
读写混合的请求:
写请求较多的情况:
当请求队列内出现读写混合请求时,按照本发明专利的步骤。假设此时所有通道都为空闲状态,即通道权值都为0。此时,写请求1、2、3、4、5依次进入请求队列,写请求1、2、3、4被依次分配到通道0、1、2、3中,等待数据写入到对应的闪存芯片中,此时通道权值W0、W1、W2、W3都加上对应的写请求权值WW。此时读请求1、2进入请求队列,根据读请求的逻辑地址,直接查找映射表得到对应的物理地址,由物理地址计算得出请求数据对应通道0和通道1,此时对通道0,通道1权值W1、W2加上对应的读请求权值WR为WW+WR。此时通道队列最前端的请求为写请求5,根据请求判断步骤(2),请求类型为写请求,转步骤(4)。步骤(4.2)轮询比较各通道的权值W,找到此时通道权值最小的通道2,并将此请求分配到通道2的请求队列中。此时通道2的权值W2=WW+WW。继续处理读请求1、2,写请求5被分配到通道2中,读请求1、2可直接分配到通道0、1中等待执行,而不用等待写请求5执行完毕,导致读请求响应时间的增加。
读请求较多的情况:
当请求队列内出现读写混合请求时,按照本发明专利的步骤。假设此时通道队列内请求分布如下:读请求1、2、3、4,写请求1,读请求6、7、8,写请求2、读请求9、10、11、12、13、14、15、16。此时,根据多次步骤(1.6)的计算,当写请求1处在请求队列队头,进入步骤(4)时,通道权值W0至W3分别为5*WR、3*WR、1*WR以及8*WR,此时通道2对应权值W2最小为1*WR,根据步骤(4.2),将写请求1分配给通道2,并加入通道队列2,由步骤(4.5)W2=1*WR+WW。此时继续处理后续的读请求6、7、8直到写请求2到达请求队列队头,这时读请求1、2、3、4已完成,通道0到3的权值分别为4*WR、3*WR、Ww以及7*WR,此时根据步骤(4.2),得到此时权值最小的通道1,权值为3*WR。将写请求2分配给通道1,此时通道1权值W1=3*WR+Ww。
垃圾回收操作:
当检测到通道i内空闲物理页不足,进行垃圾回收操作时,此时通道i权值加上垃圾回收操作的权值WGC。若此时有写请求访问固态存储设备,根据子步骤(4.2),控制器会根据权值进行判断,选择通道权值最小的通道,若有其他通道的权值小于通道i的权值,此写请求将不会分配给通道i,写请求不必等待垃圾回收操作完成,有效降低写请求的响应时间。
极端情况:
混合请求队列中,读请求连续的读取同一个通道的数据,使此通道的权值保持一个较高的值,此时闪存控制器在分配写请求时,将不会将写请求分配到此通道中,在此通道中避开了读写请求间的阻塞,降低了读写请求的延迟,但减少可供分配给写请求的通道数,减弱了固态存储设备内部通道间的并行性,使固态存储设备的资源得不到充分的利用。同时这也会影响整个固态存储设备的磨损均衡。
与静态分配方式相比,本发明方案可以灵活的选择写请求被分配的通道,并通过权值的设置以及读请求对权值的优先处理保证读请求响应一定的优先程度,并减少各个通道读写请求相互间的干扰,降低读写请求之间的阻塞,减少固态存储设备的读写响应时间。
本发明方案中,请求队列与通道队列都为先进先出(FIFO)队列,各通道并行的处理请求,不关心各请求间的顺序,请求队列与通道队列内的请求顺序执行。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种固态存储设备的地址分配方法,其特征在于,所述方法包括如下步骤:
(1)请求接收步骤:固态存储设备接收到由上层文件***发送的读写请求,对接收的请求类型进行判断并进行相应的操作,若为写请求,则直接将请求加入到请求队列队尾,等待处理;若为读请求,则根据请求的逻辑地址查找映射表获得其对应的物理地址,根据物理地址可以计算得到请求对应的通道信息,预先处理读请求对应的权值,根据已知的通道信息,给对应的通道加上读操作的权值,并将此请求加入到请求队列队尾,等待处理;
(2)请求队列处理步骤:固态存储设备对存放在请求队列中未处理的请求采用先进先出的方式进行处理,依次进行地址分配;
(3)读请求分配步骤:若从请求队列取出的请求为读请求,根据请求接收步骤中查找映射表已知的信息,将请求加入到对应通道的通道队列的尾部,等待处理;
(4)写请求分配步骤:若从请求队列取出的请求为写请求,则根据各个通道的权值大小,比较得到权值最小的通道,并根据芯片忙闲信息选择此写请求对应的芯片、晶元、分组、物理块和物理页,并由此计算出对应的物理地址;将请求加入到对应通道的通道队列的尾部,更改对应通道的权值,等待处理;
(5)通道队列处理步骤:闪存控制器从通道队列中取出请求,并根据由请求接收步骤和请求队列处理步骤中获得的请求物理地址、请求大小、请求类型信息,对闪存芯片进行相应的操作,从闪存中读取相应数据信息或将请求携带的数据写入到其物理地址对应的闪存物理页中;当闪存芯片的读写操作完成后,闪存控制器向固态盘控制器返回完成信息,并根据请 求的类型更改对应通道的权值;通道内读操作完成则对应通道的权值减去读操作权值,写操作完成则对应通道的权值减去写操作权值;
(6)垃圾回收处理步骤:触发垃圾回收操作时,为进行垃圾回收操作的通道加上垃圾回收操作权值,待垃圾回收操作完成后,对应通道的权值减去垃圾回收操作的权值。
2.如权利要求1所述的方法,其特征在于,所述请求接收步骤具体包括:
(1.1)固态存储设备接收上层文件***或固态存储设备缓存产生的读写请求,所述读写请求至少包含逻辑页地址、请求大小、读写操作信息,进行子步骤(1.2);
(1.2)判断请求大小是否大于一个物理页的大小,若大于,转子步骤(1.3);否则转子步骤(1.4);
(1.3)计算此请求需要占用的物理页数n,将其划分为n个请求,每个请求对应一个物理页,转子步骤(1.4);
(1.4)判断请求的操作类型,若为写请求,转子步骤(1.7);若为读请求,转子步骤(1.5);
(1.5)根据读请求的逻辑地址查映射表得到对应的物理地址,由物理地址可知此请求所对应的通道i、芯片,i对应固态存储设备中某一通道号,转子步骤(1.6);
(1.6)计算通道i对应通道权值Wi=Wi+WR,WR为读请求权值,转子步骤(1.7);
(1.7)将请求按序加入请求队列的尾部。
3.如权利要求1或2所述的方法,其特征在于,所述请求队列处理步骤具体包括:
(2.1)查询请求队列状态,判断请求队列是否为空,是则转子步骤(2.3),否则转子步骤(2.2);
(2.2)读取请求队列队头请求,根据请求操作信息分类,若为读请求,转步骤(3);若为写请求,转步骤(4)。
4.如权利要求1或2所述的方法,其特征在于,所述读请求分配步骤具体包括:从请求队列队头取出读请求,由子步骤(1.5)中查得请求对应的通道号i,将此读请求加入通道i队列尾部,转步骤(5)。
5.如权利要求1或2所述的方法,其特征在于,所述写请求分配步骤具体包括:
(4.1)从请求队列队头取出写请求,进行子步骤(4.2);
(4.2)由闪存先擦后写特性可知,写请求需要空闲物理页进行存储,比较各个通道权值Wi,找到权值最小的通道j,j对应此时固态存储设备中权值最小的通道,转子步骤(4.3);
(4.3)判断闪存转换层是否支持芯片选择,若支持,转子步骤(4.4);若不支持,将此写请求加入通道j队列尾部,转子步骤(4.5);
(4.4)轮询查找此通道下芯片片选信号R/B,找到空闲芯片k,若所有芯片都不空闲,则选择第一个查询的芯片k,确定请求将要写入的芯片k,将此写请求加入通道j队列尾部,转子步骤(4.5)
(4.5)通道j通道权值Wj=Wi+WW,WW为写请求权值,转步骤(5) 。
6.如权利要求1或2所述的方法,其特征在于,所述通道队列处理步骤具体包括:
(5.1)依次查询通道队列,若通道i队列为空,转步骤(6)并继续查询下一通道,若不为空,转子步骤(5.2);
(5.2)读取通道队列头部请求,获取信息,转子步骤(5.3);
(5.3)处理通道队列队头的请求,若为读请求,转子步骤(5.4);若为写请求,转子步骤(5.5);
(5.4)根据读请求的物理地址,取出物理地址对应的物理页中的数据,并发送给上层应用,当读操作完成后,更新芯片片选信号R/B,将此请求从 通道队列中删除,此时Wi=Wi-WR,转子步骤(5.1);
(5.5)根据已知的写请求通道、芯片信息,将数据写入对应的空闲物理页中,当写操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时Wi=Wi-WW,转子步骤(5.1)。
7.如权利要求1或2所述的方法,其特征在于,所述垃圾回收处理步骤具体包括:
(6.1)根据通道i空闲物理页比例,判断是否需要进行垃圾回收操作,若不需要进行垃圾回收操作,转子步骤(2.1),若需要进行垃圾回收操作,转子步骤(6.2);
(6.2)执行通道内垃圾回收操作,通道i通道权值Wi=Wi+WGC,WGC为垃圾回收权值,转子步骤(6.3);
(6.3)垃圾回收操作完成,通道i通道权值Wi=Wi-WGC,转步骤(5)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410290432.0A CN104090847B (zh) | 2014-06-25 | 2014-06-25 | 一种固态存储设备的地址分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410290432.0A CN104090847B (zh) | 2014-06-25 | 2014-06-25 | 一种固态存储设备的地址分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104090847A true CN104090847A (zh) | 2014-10-08 |
CN104090847B CN104090847B (zh) | 2017-01-11 |
Family
ID=51638565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410290432.0A Active CN104090847B (zh) | 2014-06-25 | 2014-06-25 | 一种固态存储设备的地址分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104090847B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159836A (zh) * | 2015-08-03 | 2015-12-16 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105718206A (zh) * | 2014-12-03 | 2016-06-29 | 中国人民解放军国防科学技术大学 | 能够感知raid的闪存转换层及其实现方法 |
CN105975209A (zh) * | 2016-04-26 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种多通道数据写入方法和*** |
CN106325994A (zh) * | 2016-08-24 | 2017-01-11 | 广东欧珀移动通信有限公司 | 一种控制写请求的方法及终端设备 |
CN106547703A (zh) * | 2016-10-08 | 2017-03-29 | 华中科技大学 | 一种基于块组结构的ftl优化方法 |
CN107220124A (zh) * | 2017-05-26 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种路径选择方法及装置 |
CN107430552A (zh) * | 2015-03-26 | 2017-12-01 | 阿尔卡特朗讯公司 | 用于在线媒体的基于分级成本的缓存 |
CN107515728A (zh) * | 2016-06-17 | 2017-12-26 | 清华大学 | 发挥闪存设备内部并发特性的数据管理方法和装置 |
CN107885456A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 减少io命令访问nvm的冲突 |
CN107885667A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 降低读命令处理延迟的方法与装置 |
CN108572922A (zh) * | 2017-03-07 | 2018-09-25 | 慧荣科技股份有限公司 | 数据储存装置以及其操作方法 |
CN108829346A (zh) * | 2018-05-28 | 2018-11-16 | 华中科技大学 | 一种适应闪存页差异的固态硬盘的用户写请求处理方法 |
CN109154917A (zh) * | 2016-12-29 | 2019-01-04 | 华为技术有限公司 | 存储***和固态硬盘 |
CN109697032A (zh) * | 2018-12-19 | 2019-04-30 | 中国人民解放军国防科技大学 | 物理地址感知的固态盘请求调度方法及装置 |
CN109726137A (zh) * | 2017-10-27 | 2019-05-07 | 华为技术有限公司 | 固态硬盘垃圾回收任务的管理方法、控制器和固态硬盘 |
CN109783398A (zh) * | 2019-01-18 | 2019-05-21 | 上海海事大学 | 一种基于相关感知页面级ftl固态硬盘性能优化方法 |
CN110515859A (zh) * | 2019-07-09 | 2019-11-29 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
CN110709810A (zh) * | 2017-10-09 | 2020-01-17 | 华为技术有限公司 | 一种垃圾数据清理方法及设备 |
CN111857601A (zh) * | 2020-07-30 | 2020-10-30 | 暨南大学 | 一种基于垃圾回收与通道并行性的固态盘缓存管理方法 |
CN114047712A (zh) * | 2021-10-12 | 2022-02-15 | 中国电子科技集团公司第二十九研究所 | 一种基于反射内存网的半实物仿真***的数据通信方法 |
CN117055820A (zh) * | 2023-10-09 | 2023-11-14 | 苏州元脑智能科技有限公司 | 一种固态硬盘的命令处理方法、固态硬盘和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567257A (zh) * | 2011-12-26 | 2012-07-11 | 华中科技大学 | 一种控制多通道固态盘数据读写的方法 |
US20120311394A1 (en) * | 2011-05-30 | 2012-12-06 | Kabushiki Kaisha Toshiba | Memory system having multiple channels and write control method including determination of error correction channel in memory system |
US20120311235A1 (en) * | 2011-05-30 | 2012-12-06 | Kabushiki Kaisha Toshiba | Memory system having multiple channels and method of generating read commands for compaction in memory system |
CN103135945A (zh) * | 2013-03-25 | 2013-06-05 | 中国人民解放军国防科学技术大学 | 用于ssd的多通道动态读写调度方法 |
-
2014
- 2014-06-25 CN CN201410290432.0A patent/CN104090847B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120311394A1 (en) * | 2011-05-30 | 2012-12-06 | Kabushiki Kaisha Toshiba | Memory system having multiple channels and write control method including determination of error correction channel in memory system |
US20120311235A1 (en) * | 2011-05-30 | 2012-12-06 | Kabushiki Kaisha Toshiba | Memory system having multiple channels and method of generating read commands for compaction in memory system |
CN102567257A (zh) * | 2011-12-26 | 2012-07-11 | 华中科技大学 | 一种控制多通道固态盘数据读写的方法 |
CN103135945A (zh) * | 2013-03-25 | 2013-06-05 | 中国人民解放军国防科学技术大学 | 用于ssd的多通道动态读写调度方法 |
Non-Patent Citations (1)
Title |
---|
胡洋: "高性能固态盘的多级并行性及算法研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718206A (zh) * | 2014-12-03 | 2016-06-29 | 中国人民解放军国防科学技术大学 | 能够感知raid的闪存转换层及其实现方法 |
CN105718206B (zh) * | 2014-12-03 | 2018-08-03 | 中国人民解放军国防科学技术大学 | 能够感知raid的闪存转换层及其实现方法 |
CN107430552A (zh) * | 2015-03-26 | 2017-12-01 | 阿尔卡特朗讯公司 | 用于在线媒体的基于分级成本的缓存 |
CN105159836B (zh) * | 2015-08-03 | 2019-01-08 | 北京联想核芯科技有限公司 | 一种信息处理方法及电子设备 |
CN105159836A (zh) * | 2015-08-03 | 2015-12-16 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105975209A (zh) * | 2016-04-26 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种多通道数据写入方法和*** |
CN107515728B (zh) * | 2016-06-17 | 2019-12-24 | 清华大学 | 发挥闪存设备内部并发特性的数据管理方法和装置 |
CN107515728A (zh) * | 2016-06-17 | 2017-12-26 | 清华大学 | 发挥闪存设备内部并发特性的数据管理方法和装置 |
CN106325994A (zh) * | 2016-08-24 | 2017-01-11 | 广东欧珀移动通信有限公司 | 一种控制写请求的方法及终端设备 |
CN106325994B (zh) * | 2016-08-24 | 2018-05-29 | 广东欧珀移动通信有限公司 | 一种控制写请求的方法及终端设备 |
CN107885456A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 减少io命令访问nvm的冲突 |
CN107885667A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 降低读命令处理延迟的方法与装置 |
CN106547703A (zh) * | 2016-10-08 | 2017-03-29 | 华中科技大学 | 一种基于块组结构的ftl优化方法 |
CN106547703B (zh) * | 2016-10-08 | 2019-05-14 | 华中科技大学 | 一种基于块组结构的ftl优化方法 |
US10768857B2 (en) | 2016-12-29 | 2020-09-08 | Huawei Technologies Co., Ltd. | Storage system having a controller that selects a die of a solid state disk to store data |
CN109154917A (zh) * | 2016-12-29 | 2019-01-04 | 华为技术有限公司 | 存储***和固态硬盘 |
EP3367251A4 (en) * | 2016-12-29 | 2019-04-10 | Huawei Technologies Co., Ltd. | STORAGE SYSTEM AND SOLID STATE |
CN108572922A (zh) * | 2017-03-07 | 2018-09-25 | 慧荣科技股份有限公司 | 数据储存装置以及其操作方法 |
CN107220124B (zh) * | 2017-05-26 | 2021-01-12 | 苏州浪潮智能科技有限公司 | 一种路径选择方法及装置 |
CN107220124A (zh) * | 2017-05-26 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种路径选择方法及装置 |
CN110709810A (zh) * | 2017-10-09 | 2020-01-17 | 华为技术有限公司 | 一种垃圾数据清理方法及设备 |
US11704240B2 (en) | 2017-10-09 | 2023-07-18 | Huawei Technologies Co., Ltd. | Garbage data scrubbing method, and device |
US11126546B2 (en) | 2017-10-09 | 2021-09-21 | Huawei Technologies Co., Ltd. | Garbage data scrubbing method, and device |
CN109726137A (zh) * | 2017-10-27 | 2019-05-07 | 华为技术有限公司 | 固态硬盘垃圾回收任务的管理方法、控制器和固态硬盘 |
CN108829346B (zh) * | 2018-05-28 | 2020-11-17 | 华中科技大学 | 一种适应闪存页差异的固态硬盘的用户写请求处理方法 |
CN108829346A (zh) * | 2018-05-28 | 2018-11-16 | 华中科技大学 | 一种适应闪存页差异的固态硬盘的用户写请求处理方法 |
CN109697032B (zh) * | 2018-12-19 | 2022-01-07 | 中国人民解放军国防科技大学 | 物理地址感知的固态盘请求调度方法及装置 |
CN109697032A (zh) * | 2018-12-19 | 2019-04-30 | 中国人民解放军国防科技大学 | 物理地址感知的固态盘请求调度方法及装置 |
CN109783398A (zh) * | 2019-01-18 | 2019-05-21 | 上海海事大学 | 一种基于相关感知页面级ftl固态硬盘性能优化方法 |
CN110515859A (zh) * | 2019-07-09 | 2019-11-29 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
CN110515859B (zh) * | 2019-07-09 | 2021-07-20 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
CN111857601A (zh) * | 2020-07-30 | 2020-10-30 | 暨南大学 | 一种基于垃圾回收与通道并行性的固态盘缓存管理方法 |
CN111857601B (zh) * | 2020-07-30 | 2023-09-01 | 暨南大学 | 一种基于垃圾回收与通道并行性的固态盘缓存管理方法 |
CN114047712A (zh) * | 2021-10-12 | 2022-02-15 | 中国电子科技集团公司第二十九研究所 | 一种基于反射内存网的半实物仿真***的数据通信方法 |
CN117055820A (zh) * | 2023-10-09 | 2023-11-14 | 苏州元脑智能科技有限公司 | 一种固态硬盘的命令处理方法、固态硬盘和存储介质 |
CN117055820B (zh) * | 2023-10-09 | 2024-02-09 | 苏州元脑智能科技有限公司 | 一种固态硬盘的命令处理方法、固态硬盘和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104090847B (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104090847A (zh) | 一种固态存储设备的地址分配方法 | |
US9652379B1 (en) | System and method for reducing contentions in solid-state memory access | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
US20230259310A1 (en) | Latency-based Scheduling of Command Processing in Data Storage Devices | |
CN109154917B (zh) | 存储***和固态硬盘 | |
US10049040B2 (en) | Just in time garbage collection | |
US7733892B2 (en) | Buffer management method based on a bitmap table | |
US9058208B2 (en) | Method of scheduling tasks for memories and memory system thereof | |
US20200034067A1 (en) | Storage system and data control method | |
CN105117285B (zh) | 一种基于移动虚拟化***的非易失性存储器调度优化方法 | |
TWI681331B (zh) | 記憶體系統及其控制方法 | |
US20190042305A1 (en) | Technologies for moving workloads between hardware queue managers | |
US20220206874A1 (en) | Determination of workload distribution across processors in a memory system | |
CN102279712A (zh) | 一种适用于互联网存储***的存储控制方法、***和装置 | |
CN104866428A (zh) | 数据存取方法和数据存取装置 | |
CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
CN102346682A (zh) | 信息处理装置及信息处理方法 | |
KR20200141212A (ko) | 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 | |
JP2010532061A (ja) | フラッシュメモリシステムにおける段階的ガーベッジコレクションおよびハウスキーピング操作 | |
US11307768B2 (en) | Namespace auto-routing data storage system | |
CN102567225A (zh) | 一种管理***内存的方法及装置 | |
CN108932112B (zh) | 一种固态颗粒的数据读写方法、装置、设备及介质 | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
CN116400982B (zh) | 配置中继寄存器模块的方法和装置、计算设备和可读介质 | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |