一种固态存储设备的地址分配方法
【专利摘要】本发明公开了一种固态存储设备的地址分配方法,适用于基于闪存的多通道固态存储设备,属于固态存储领域,解决现有的分配策略中存在的读写请求冲突问题。解决在读写请求混合的工作负载中,请求的响应时间变长的问题。本发明方法包括通道权值的分配,物理地址分配以及冲突预测避免机制。本发明为读、写请求以及垃圾回收操作分配不同的权值,权值可以根据用户的需求调整,以适应不同的读写性能要求,充分利用固态存储设备内部的并行性,并根据负载情况,为写请求选择合适的物理地址,减少写后读冲突并降低垃圾回收操作对写请求的阻塞。实现固态存储设备读写响应时间的降低以及固态存储设备性能的提升。
【专利说明】一种固态存储设备的地址分配方法
【技术领域】
[0001] 本发明属于固态存储【技术领域】,更具体地,涉及一种固态存储设备的地址分配方 法。
【背景技术】
[0002] 固态存储设备是一类有别于机械硬盘的新型计算机存储设备。与传统硬盘相比, 基于闪存的固态存储设备具有高密度,低能耗,无噪音,抗震动等特点,同时它具有较低的 读写延时以及更高的吞吐率。
[0003] 由于闪存介质的特点,基于闪存的固态存储设备还具有以下缺陷:
[0004] (1)先擦后写:闪存介质在写入数据时不能就地更新,需要先对目标地址的物理 块进行擦除操作,然后再进行数据的更新。擦除操作和读写操作的基本单位不同,擦除操作 以物理块为单位,读写操作以物理页为单位,通常一个物理块中包含有64或128个物理页。
[0005] (2)读、写和擦除操作的速度差异:在闪存介质中,单次的读操作时间约为 15-50 μ s,写操作时间约为200 μ s,擦除操作时间约为50ms。读写速度的差异会带来读操 作的阻塞问题,当读请求在写请求之后到达时,由于较长的写请求处理时间,会导致读请求 等待一个较长的时间。擦除操作耗时长,会导致后续请求长时间等待。
[0006] (3)闪存寿命:闪存颗粒的寿命是按Program/Erase (编程/擦除)次数计算的, MLC(全称,多阶存储单元闪存)的寿命一般在1000-10000次,SLC(全称,单阶存储单元闪 存)则在10万次左右。
[0007] 为了充分利用闪存芯片的速度优势,并解决闪存芯片存在的问题,在固态存储设 备中,加入了一个闪存转换层。闪存转换层主要提供地址映射,垃圾回收以及磨损均衡3个 功能。地址映射是闪存转换层的核心,它通过一个映射表提供逻辑地址到物理地址的映射。 垃圾回收的作用是回收固态存储设备中的失效页,合并整理为干净的物理块,增加设备的 可用空间。磨损均衡用来保证固态存储设备中各个物理块之间擦除次数的均衡,保证固态 存储设备的寿命以及可靠性。垃圾回收和磨损均衡等功能都依赖地址映射表来实现。
[0008] 基于闪存的固态存储通常由多个独立通道组成,每个通道连接多颗闪存芯片,芯 片内部又可以分为晶元、分组、块和页。单颗芯片的读写速度,单个通道的传输速度都有限, 为了尽可能的提高固态存储设备的性能,就需要充分的利用通道和芯片间的并行性。
[0009] 固态存储设备中,地址分配是指为需要写到设备中的逻辑页确定空闲物理页,根 据选择物理页的范围主要分为静态分配方式、动态分配方式和混合分配方式。不同的地址 分配方式对固态存储设备内部的并行性的利用方式不一样,所以对性能有着不同的影响。 在通常情况下,静态分配方式的读性能优于动态分配方式,而写性能比动态分配方式差。 [0010] 在静态分配方式中,逻辑页按预先定义好的规则被分配到指定的通道、芯片、晶 元、分组中。根据分配规则的不同,可以分为多种不同的静态分配方式,根据〈通道,芯片, 晶元,分组〉不同的排列组合顺序,可以排列成24种不同的静态分配方式。
[0011] 在动态分配方式中,逻辑页可以选择设备中所有的空闲物理页。综合考虑通道、芯 片、晶元、分组的忙闲,物理块的磨损程度等因素,最终确定分配的具体位置。使用全动态的 分配方式,可以有效的提高写性能,让写请求在较短的时间获得响应。
[0012] 混合分配方式结合静态分配方式以及动态分配方式的特点,通道、芯片、晶元、分 组4个层次的分配部分使用静态规则指定,部分由动态规则指定。如静态的分配通道,根据 忙闲动态的分配芯片、晶元、分组等。
[0013] 目前,静态地址分配在固态存储设备中广泛应用,静态地址分配可以提供较好的 连续读写性能,但随机读写的性能较差。请求分配到固态存储设备内部的具体位置,由请求 的逻辑地址计算得到,当请求的逻辑地址随机分布时,会出现大量请求对固态存储设备内 部通道等资源的争用,导致某些通道内请求十分密集,而某些通道请求较少甚至没有请求 访问。尤其是读请求其访问的数据位置已根据地址确定,写请求占用通道资源时,读请求响 应时间不断上升,固态存储设备的性能显著下降。
[0014] 动态地址分配可以提高固态存储设备的写性能,但并不能有效的减少读写请求之 间的冲突,读性能较静态地址分配降低。
【发明内容】
[0015] 针对现有技术的以上缺陷或改进需求,本发明提供了一种基于通道权值的地址分 配方法,其目的在于在固态盘内部实现读写请求调度,充分利用固态存储设备内部的并行 性,由此解决固态存储设备在读写混合的工作环境中读写请求对其内部资源争用而导致的 性能下降。
[0016] 为实现上述目的,本发明提供了一种固态存储设备的地址分配方法,所述方法包 括如下步骤:
[0017] (1)请求接收步骤:固态存储设备接收到由上层文件系统发送的读写请求,对接 收的请求类型进行判断并进行相应的操作,若为写请求,则直接将请求加入到请求队列队 尾,等待处理;若为读请求,则根据请求的逻辑地址查找映射表获得其对应的物理地址,根 据物理地址可以计算得到请求对应的通道信息,预先处理读请求对应的权值,根据已知的 通道信息,给对应的通道加上读操作的权值,并将此请求加入到请求队列队尾,等待处理;
[0018] (2)请求队列处理步骤:固态存储设备对存放在请求队列中未处理的请求采用先 进先出的方式进行处理,依次进行地址分配;
[0019] (3)读请求分配步骤:若从请求队列取出的请求为读请求,根据请求接收步骤中 查找映射表已知的信息,将请求加入到对应通道的通道队列的尾部,等待处理;
[0020] (4)写请求分配步骤:若从请求队列取出的请求为写请求,则根据各个通道的权 值大小,比较得到权值最小的通道,并根据芯片忙闲信息选择此写请求对应的芯片、晶元、 分组、物理块和物理页,并由此计算出对应的物理地址;将请求加入到对应通道的通道队列 的尾部,更改对应通道的权值,等待处理;
[0021] (5)通道队列处理步骤:闪存控制器从通道队列中取出请求,并根据由请求接收 步骤和请求队列处理步骤中获得的请求物理地址、请求大小、请求类型信息,对闪存芯片进 行相应的操作,从闪存中读取相应数据信息或将请求携带的数据写入到其物理地址对应的 闪存物理页中;当闪存芯片的读写操作完成后,闪存控制器向固态盘控制器返回完成信息, 并根据请求的类型更改对应通道的权值;通道内读操作完成则对应通道的权值减去读操作 权值,写操作完成则对应通道的权值减去写操作权值;
[0022] (6)垃圾回收处理步骤:触发垃圾回收操作时,为进行垃圾回收操作的通道加上 垃圾回收操作权值,待垃圾回收操作完成后,对应通道的权值减去垃圾回收操作的权值。
[0023] 在本发明的一个实施例中,所述请求接收步骤具体包括:
[0024] (1. 1)固态存储设备接收上层文件系统或固态存储设备缓存产生的读写请求,所 述读写请求至少包含逻辑页地址、请求大小、读写操作信息,进行子步骤(1.2);
[0025] (1. 2)判断请求大小是否大于一个物理页的大小,若大于,转子步骤(1. 3);否则 转子步骤(1. 4);
[0026] (1. 3)计算此请求需要占用的物理页数n,将其划分为η个请求,每个请求对应一 个物理页,转子步骤(1.4);
[0027] (1. 4)判断请求的操作类型,若为写请求,转子步骤(1. 7);若为读请求,转子步骤 (1.5);
[0028] (1. 5)根据读请求的逻辑地址查映射表得到对应的物理地址,由物理地址可知此 请求所对应的通道i、芯片,i对应固态存储设备中某一通道号,转子步骤(1. 6);
[0029] (1. 6)计算通道i对应通道权值1 = Wi+Wp WK为读请求权值,转子步骤(1. 7);
[0030] (1. 7)将请求按序加入请求队列的尾部。
[0031] 在本发明的一个实施例中,所述请求队列处理步骤具体包括:
[0032] (2. 1)查询请求队列状态,判断请求队列是否为空,是则转子步骤(2. 3),否则转 子步骤(2. 2);
[0033] (2. 2)读取请求队列队头请求,根据请求操作信息分类,若为读请求,转步骤(3); 若为写请求,转步骤(4)。
[0034] 在本发明的一个实施例中,所述读请求分配步骤具体包括:从请求队列队头取出 读请求,由子步骤(1. 5)中查得请求对应的通道号i,将此读请求加入通道i队列尾部,转步 骤(5)。
[0035] 在本发明的一个实施例中,所述写请求分配步骤具体包括:
[0036] (4. 1)从请求队列队头取出写请求,进行子步骤(4. 2);
[0037] (4. 2)由闪存先擦后写特性可知,写请求需要空闲物理页进行存储,比较各个通 道权值I,找到权值最小的通道j,j对应此时固态存储设备中权值最小的通道,转子步骤 (4. 3);
[0038] (4. 3)判断闪存转换层是否支持芯片选择,若支持,转子步骤(4. 4);若不支持,将 此写请求加入通道j队列尾部,转子步骤(4. 5);
[0039] (4. 4)轮询查找此通道下芯片片选信号R/B,找到空闲芯片k,若所有芯片都不空 闲,则选择第一个查询的芯片k,确定请求将要写入的芯片k,将此写请求加入通道j队列尾 部,转子步骤(4.5)
[0040] (4. 5)通道j通道权值Wj = Wi+Ww,Ww为写请求权值,转步骤(5)
[0041] 在本发明的一个实施例中,所述通道队列处理步骤具体包括:
[0042] (5. 1)依次查询通道队列,若通道i队列为空,转步骤(6)并继续查询下一通道,若 不为空,转子步骤(5.2);
[0043] (5. 2)读取通道队列头部请求,获取信息,转子步骤(5. 3);
[0044] (5. 3)处理通道队列队头的请求,若为读请求,转子步骤(5. 4);若为写请求,转子 步骤(5. 5);
[0045] (5. 4)根据读请求的物理地址,取出物理地址对应的物理页中的数据,并发送给上 层应用,当读操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时I = Wi-^,转子步骤(5. 1);
[0046] (5.5)根据已知的写请求通道、芯片信息,将数据写入对应的空闲物理页中,当写 操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时1 = Wi-Ww,转子步 骤(5. 1)。
[0047] 在本发明的一个实施例中,所述通道队列处理步骤具体包括:
[0048] (6. 1)根据通道i空闲物理页比例,判断是否需要进行垃圾回收操作,若不需要进 行垃圾回收操作,转子步骤(2. 1),若需要进行垃圾回收操作,转子步骤(6.2);
[0049] (6. 2)执行通道内垃圾回收操作,通道i通道权值A = Wi+Wm Wcc为垃圾回收权 值,转子步骤(6.3);
[0050] (6. 3)垃圾回收操作完成,通道i通道权值% = Wi-W^转步骤(5)。
[0051] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效 果:
[0052] (1)相比传统的静态分配方式与动态分配方式,本发明中加入了通道权值。通道权 值能表征通道的忙闲程度,当有写请求到达时,可以根据通道权值的比较,选择合适的通道 分配请求,充分利用通道间的并行性。
[0053] (2)本发明在进行垃圾回收操作时,为对应通道加上垃圾回收操作的权值,写请求 处理步骤可以根据通道权值比较,合理的避免垃圾回收操作与写请求操作的冲突,为写请 求分配合适的通道,减少写请求响应时间。
[0054] (3)本发明在读请求进入固态存储设备,而不是读请求加入通道队列时,给请求对 应的通道加上了相应的读操作权值W K,通过这一步骤对权值的操作,提高了此读请求的优 先性,降低了此读请求被写请求阻塞的可能性,减少了读写操作的冲突,从而可以提高固态 存储设备的性能,降低读写请求的响应时间。
[0055] (4)本发明通过通道队列的先进先出策略保证读写请求都能在一定时间内被处 理,而不会出现读请求或写请求被长时间阻塞,保证了读写请求的公平性。通过权值的设置 以及轮询机制,也保证了写请求在各个通道间的均匀分布。使数据平均的分布在各个通道 中,保证了读请求的并行性和性能,同时使各个通道内物理块的磨损程度保持均衡。
[0056] (5)本发明可以合理的根据固态存储设备使用的工作环境自定义读写操作的权值 WK、W w,从而控制读写操作的优先级,以适应要求不同读写响应时间的工作环境。WK与Ww比 值越高,则读请求优先级越高,反之则写请求优先级越高。
【专利附图】
【附图说明】
[0057] 图1为本发明固态存储设备的地址分配方法的流程示意图;
[0058] 图2为本发明一实施例中请求接收步骤的流程示意图;
[0059] 图3为本发明一实施例中请求队列处理步骤的流程示意图;
[0060] 图4为本发明一实施例中读请求分配步骤的流程示意图;
[0061] 图5为本发明一实施例中写请求分配步骤的流程示意图;
[0062] 图6为本发明一实施例中通道队列处理步骤的流程示意图;
[0063] 图7为本发明一实施例中垃圾回收操作步骤的流程示意图。
【具体实施方式】
[0064] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要 彼此之间未构成冲突就可以相互组合。
[0065] 为了清楚地理解本发明,以下对有关概念加以解释:
[0066] NAND闪存芯片:闪存芯片技术在1984年由东芝公司发明,是一种电子式可清除程 序化只读存储器,它的特点是结构简洁,单位面积的半导体内能实现相当多的数据存储量。 这种结构带来的副作用是擦写时不能以bit为单位,而只能以物理块为单位进行大范围的 操作。
[0067] 闪存控制器:管理存储在闪存芯片中的数据,并提供访问接口。
[0068] 通道:在固态存储设备中连接闪存控制器和闪存芯片,每个通道由多个芯片组 成;
[0069] 物理块:闪存芯片的存储区域,每个闪存芯片中包含若干个物理块,每个物理块中 包含恒定数量的物理页,物理块也是擦除操作的基本单位;
[0070] 物理页:闪存芯片的最小存储单元,物理页是为写请求分配资源的基本单位,根据 闪存工艺的不同,不同芯片的物理页大小不同;
[0071] 逻辑页地址:描述计算机存储设备上数据所在区块的通用机制,指某个数据区块 的地址或某个地址所指向的数据区块,可由闪存转换层转换得到物理地址;
[0072] 空闲物理页:固态存储设备中物理页还没有使用,即其没有数据时,该物理页为空 闲物理页,可以用于写请求和垃圾回收操作的分配;
[0073] 映射表:是保存逻辑页地址与物理页地址之间一一对应关系的数据结构。
[0074] 垃圾回收:垃圾回收的过程一般是先将选中的物理块中的有效数据转移到其它物 理块中,然后对其实施擦除操作。是通过擦除具有较多无效数据的物理块来回收物理页。
[0075] 请求队列:固态存储设备中用来存放待处理请求的队列,此队列为先进先出队 列;
[0076] 通道队列:固态存储设备中用来存放来自请求队列、经过闪存转换层分配给各个 通道的请求,此队列为先进先出队列;
[0077] 读请求权值WK:根据固态存储设备读取一个物理页数据所需的时间取值,也可用 户工作需要自定义;
[0078] 写请求权值Ww :根据固态存储设备写入一个物理页数据所需的时间取值也可根据 用户工作需要自定义。读写权值比值越高,则读请求优先级越高,反之则写请求优先级越 商;
[0079] 垃圾回收权值Wec 4艮据通道内进行垃圾回收操作所需的时间取值,也可根据用户 工作需要自定义;
[0080] 通道权值:由通道队列内的读写请求状态,根据读写请求权值计算统计出此时通 道i对应的权值Wi,Wi可以表示此时的通道状态并感知未来一段时间内的通道繁忙程度。
[0081] 本发明所提供的一种固态存储设备的地址分配方法,采用混合分配方式,由权值 计算比较动态得到目标通道,通过检测通道连接的各芯片R/B信号忙闲选择芯片。此方式 适用于基于闪存的固态存储设备,如图1所示,本发明方法包括请求接收、请求队列处理、 读请求分配、写请求分配、通道队列处理和垃圾回收操作的步骤,包括:
[0082] (1)请求接收步骤:固态盘存储设备接收到由上层文件系统发送的读写请求,其 中包含请求的逻辑地址,请求大小,读写操作等信息,设备对读写请求采用不同的处理策 略,对接收的请求类型进行判断并进行相应的操作,若为写请求,则直接将请求加入到请求 队列队尾,等待处理,若为读请求,则根据请求的逻辑地址查找映射表获得其对应的物理地 址,根据物理地址可以计算得到请求对应的通道信息,预先处理读请求对应的权值,根据已 知的通道信息,给对应的通道加上读操作的权值,并将此请求加入到请求队列队尾,等待处 理;
[0083] (2)请求队列处理步骤:请求队列是固态盘与上层的接口,还未处理的请求都将 存放在请求队列中等待处理,请求队列采用先进先出方式设计,队列中的请求依次进行地 址分配;
[0084] (3)读请求分配步骤:请求队列采用先进先出队列,固态盘控制器取出请求队列 队头的请求,对读写请求采用不同的分配策略;若从请求队列取出的请求,根据请求接收步 骤中查找映射表已知的信息,将请求从请求队列队头取出,加入到对应通道的通道队列的 尾部,等待处理;
[0085] (4)写请求分配步骤:若从请求队列取出的请求为写请求,则根据各个通道的权 值大小,比较得到权值最小的通道,并根据芯片忙闲等信息选择此写请求对应的芯片、晶 元、分组、物理块和物理页,并由此计算出对应的物理地址;将请求从请求队列队头取出,力口 入到对应通道的通道队列的尾部,更改对应通道的权值,等待处理;
[0086] (5)通道队列处理步骤:闪存控制器从通道队列中取出请求,并根据由请求接收 步骤和请求队列处理步骤中获得的请求物理地址、请求大小、请求类型等信息,对闪存芯片 进行相应的操作,从闪存中读取相应数据信息或将请求携带的数据写入到其物理地址对应 的闪存物理页中;当闪存芯片的读写操作完成后,闪存控制器向固态盘控制器返回完成信 息,并根据请求的类型更改对应通道的权值;通道内读操作完成则对应通道的权值减去读 操作权值,写操作完成则对应通道的权值减去写操作权值;
[0087] (6)垃圾回收处理步骤:触发垃圾回收操作时,为进行垃圾回收操作的通道加上 垃圾回收操作权值,垃圾回收操作时间较长,权值设置较大,降低写请求分配至该通道的优 先级,待垃圾回收操作完成后,对应通道的权值减去垃圾回收操作的权值。
[0088] 下面对各步骤的详细操作进行具体描述,
[0089] (1)请求接收步骤,具体如图2所示,包括如下子步骤:
[0090] (1. 1)固态存储设备接收上层文件系统或固态存储设备缓存产生的读写请求,所 述读写请求至少包含逻辑页地址、请求大小、读写操作信息,进行子步骤(1.2);
[0091] (1.2)判断请求大小是否大于一个物理页的大小,若大于,转子步骤(1.3);否则 转子步骤(1. 4);
[0092] (1. 3)计算此请求需要占用的物理页数n,将其划分为η个请求,每个请求对应一 个物理页,转子步骤(1.4);
[0093] (1. 4)判断请求的操作类型,若为写请求,转子步骤(1. 7);若为读请求,转子步骤 (1.5);
[0094] (1. 5)根据读请求的逻辑地址查映射表得到对应的物理地址,由物理地址可知此 请求所对应的通道i(i对应固态存储设备中某一通道号)、芯片,转子步骤(1.6);
[0095] (1. 6)计算通道i对应通道权值1 = Wi+WK,转子步骤(1. 7);
[0096] (1. 7)将请求按序加入请求队列的尾部,转步骤⑵;
[0097] (2)请求队列处理步骤,具体如图3所示,包括下述子步骤:
[0098] (2. 1)查询请求队列状态,判断请求队列是否为空,是则转子步骤(2. 3),否则转 子步骤(2. 2);
[0099] (2. 2)读取请求队列队头请求,根据请求操作信息分类,若为读请求,转步骤(3); 若为写请求,转步骤(4);
[0100] (2. 3)结束;
[0101] (3)读请求分配步骤,具体如图4所示,包括下述子步骤:
[0102] (3. 1)从请求队列队头取出读请求,由子步骤(1. 5)中查得请求对应的通道号i, 将此读请求加入通道i队列尾部,转步骤(5);
[0103] (4)写请求分配步骤,具体如图5所示,包括下述子步骤:
[0104] (4. 1)从请求队列队头取出写请求,进行子步骤(4. 2);
[0105] (4. 2)由闪存先擦后写特性可知,写请求需要空闲物理页进行存储,比较各个通道 权值I,找到权值最小的通道j (j对应此时固态存储设备中权值最小的通道),转子步骤 (4. 3);
[0106] (4. 3)判断闪存转换层是否支持芯片选择,若支持,转子步骤(4. 4);若不支持,将 此写请求加入通道j队列尾部,转子步骤(4. 5);
[0107] (4. 4)轮询查找此通道下芯片片选信号R/B,找到空闲芯片k,若所有芯片都不空 闲,则选择第一个查询的芯片k,确定请求将要写入的芯片k,将此写请求加入通道j队列尾 部,转子步骤(4.5)
[0108] (4. 5)通道j通道权值% = Wi+Ww,转步骤(5);
[0109] (5)通道队列处理步骤,具体如图6所示,其子步骤如下:
[0110] (5. 1)依次查询通道队列,若通道i队列为空,转步骤(6)并继续查询下一通道,若 不为空,转子步骤(5.2);
[0111] (5. 2)读取通道队列头部请求,获取信息,转子步骤(5. 3);
[0112] (5.3)处理通道队列队头的请求,若为读请求,转子步骤(5.4);若为写请求,转子 步骤(5. 5);
[0113] (5. 4)根据读请求的物理地址,取出物理地址对应的物理页中的数据,并发送给上 层应用,当读操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时I = Wi-^,转子步骤(5. 1);
[0114] (5.5)根据已知的写请求通道、芯片信息,将数据写入对应的空闲物理页中,当写 操作完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时1 = Wi-Ww,转子步 骤(5. 1);
[0115] (6)垃圾回收处理步骤,具体如图7所示,其子步骤如下:
[0116] (6. 1)根据通道i空闲物理页比例,判断是否需要进行垃圾回收操作,若不需要进 行垃圾回收操作,转子步骤(2. 1),若需要进行垃圾回收操作,转子步骤(6.2);
[0117] (6. 2)执行通道内垃圾回收操作,通道i通道权值1 = Wi+W%,转子步骤(6. 3);
[0118] (6. 3)垃圾回收操作完成,通道i通道权值% = H,转步骤(5);
[0119] 以下结合具体实施例说明本发明的方案,本实施例中的固态存储设备物理容量为 512GB,设备内有4个通道,每个通道连接4个32GB闪存芯片。以MT29F256G08CJAAB芯片 为例,芯片内物理页大小为8KB,每个物理块内部包含256个物理页,每2048个物理块组成 一个分组,两个分组封装为一个晶元,四个晶元组成一个芯片。
[0120] 连续的写请求:
[0121] 当请求队列中的请求为连续的写请求时,根据写请求分配步骤(4. 2)闪存控制器 查询比较各通道的权值,此时通道权值按从小到大排列有一个固定的顺序,例如通道1〈通 道2〈通道3〈通道0。根据本发明方案,将请求队列中的写请求依次分配到通道1,通道2, 通道3,通道0的队列中,增加对应通道的权值并通过片选信号找到空闲的芯片。因每个通 道都有写请求加入,各通道的权值比较顺序不会改变,写请求按顺序均匀的分布在通道1、 2、3、0中,读请求访问这些连续数据时,能依通道顺序读出,充分利用固态存储设备内部通 道间的并行性。
[0122] 随机的写请求:
[0123] 当请求队列中的请求为随机的写请求时,本发明方案处理方式与连续的写请求一 样,使随机写性能与连续写性能相当。
[0124] 连续的读请求:
[0125] 当请求队列中的请求为连续的读请求时,根据请求接收步骤(1. 5),闪存控制器根 据读请求逻辑地址(lpn)查映射表得到对应的物理地址。由于读请求的所请求的物理地址 已确定,将读请求分配到对应的通道中,等待执行。连续的读请求对应的数据多数为原先已 连续写入的数据。根据本发明方案,其数据已均匀的分布在各个通道和芯片中,连续读请求 也能充分利用设备的并行性。
[0126] 随机的读请求:
[0127] 与连续的读请求处理方式类似。若读请求所请求的数据是在一个连续时间段内发 送给固态存储设备的,那么根据本方案处理随机写请求的原则,这些数据也能均匀的分布 在各个通道与芯片中。若不是,则可能出现随机的读请求所请求的数据分布在一个通道甚 至一个芯片内的情况,此时,后续的请求需要等待前面的请求完成,无法利用闪存设备的并 行性,设备的整体性能下降。
[0128] 读写混合的请求:
[0129] 写请求较多的情况:
[0130] 当请求队列内出现读写混合请求时,按照本发明专利的步骤。假设此时所有通道 都为空闲状态,即通道权值都为0。此时,写请求1、2、3、4、5依次进入请求队列,写请求1、 2、3、4被依次分配到通道0、1、2、3中,等待数据写入到对应的闪存芯片中,此时通道权值 W0、W1、W2、W3都加上对应的写请求权值W w。此时读请求1、2进入请求队列,根据读请求的 逻辑地址,直接查找映射表得到对应的物理地址,由物理地址计算得出请求数据对应通道ο 和通道1,此时对通道0,通道1权值W1、W2加上对应的读请求权值WK为Ww+WK。此时通道队 列最前端的请求为写请求5,根据请求判断步骤(2),请求类型为写请求,转步骤(4)。步骤 (4. 2)轮询比较各通道的权值W,找到此时通道权值最小的通道2,并将此请求分配到通道2 的请求队列中。此时通道2的权值W2 = Ww+Ww。继续处理读请求1、2,写请求5被分配到通 道2中,读请求1、2可直接分配到通道0、1中等待执行,而不用等待写请求5执行完毕,导 致读请求响应时间的增加。
[0131] 读请求较多的情况:
[0132] 当请求队列内出现读写混合请求时,按照本发明专利的步骤。假设此时通道队列 内请求分布如下:读请求1、2、3、4,写请求1,读请求6、7、8,写请求2、读请求9、10、11、12、 13、14、15、16。此时,根据多次步骤(1.6)的计算,当写请求1处在请求队列队头,进入步骤 (4)时,通道权值W0至W3分别为5*W K、3*WK、1*WK以及8*WK,此时通道2对应权值W2最小 为1*W K,根据步骤(4. 2),将写请求1分配给通道2,并加入通道队列2,由步骤(4. 5) W2 = 1*WK+Ww。此时继续处理后续的读请求6、7、8直到写请求2到达请求队列队头,这时读请求 1、2、3、4已完成,通道0到3的权值分别为4*W K、3*WK、Ww以及7*WK,此时根据步骤(4. 2), 得到此时权值最小的通道1,权值为3*WK。将写请求2分配给通道1,此时通道1权值W1 = 3*WK+Ww。
[0133] 垃圾回收操作:
[0134] 当检测到通道i内空闲物理页不足,进行垃圾回收操作时,此时通道i权值加上垃 圾回收操作的权值W e。。若此时有写请求访问固态存储设备,根据子步骤(4. 2),控制器会 根据权值进行判断,选择通道权值最小的通道,若有其他通道的权值小于通道i的权值,此 写请求将不会分配给通道i,写请求不必等待垃圾回收操作完成,有效降低写请求的响应时 间。
[0135] 极端情况:
[0136] 混合请求队列中,读请求连续的读取同一个通道的数据,使此通道的权值保持一 个较高的值,此时闪存控制器在分配写请求时,将不会将写请求分配到此通道中,在此通道 中避开了读写请求间的阻塞,降低了读写请求的延迟,但减少可供分配给写请求的通道数, 减弱了固态存储设备内部通道间的并行性,使固态存储设备的资源得不到充分的利用。同 时这也会影响整个固态存储设备的磨损均衡。
[0137] 与静态分配方式相比,本发明方案可以灵活的选择写请求被分配的通道,并通过 权值的设置以及读请求对权值的优先处理保证读请求响应一定的优先程度,并减少各个通 道读写请求相互间的干扰,降低读写请求之间的阻塞,减少固态存储设备的读写响应时间。
[0138] 本发明方案中,请求队列与通道队列都为先进先出(FIFO)队列,各通道并行的处 理请求,不关心各请求间的顺序,请求队列与通道队列内的请求顺序执行。
[0139] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以 限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含 在本发明的保护范围之内。
【权利要求】
1. 一种固态存储设备的地址分配方法,其特征在于,所述方法包括如下步骤: (1) 请求接收步骤:固态存储设备接收到由上层文件系统发送的读写请求,对接收的 请求类型进行判断并进行相应的操作,若为写请求,则直接将请求加入到请求队列队尾,等 待处理;若为读请求,则根据请求的逻辑地址查找映射表获得其对应的物理地址,根据物理 地址可以计算得到请求对应的通道信息,预先处理读请求对应的权值,根据已知的通道信 息,给对应的通道加上读操作的权值,并将此请求加入到请求队列队尾,等待处理; (2) 请求队列处理步骤:固态存储设备对存放在请求队列中未处理的请求采用先进先 出的方式进行处理,依次进行地址分配; (3) 读请求分配步骤:若从请求队列取出的请求为读请求,根据请求接收步骤中查找 映射表已知的信息,将请求加入到对应通道的通道队列的尾部,等待处理; (4) 写请求分配步骤:若从请求队列取出的请求为写请求,则根据各个通道的权值大 小,比较得到权值最小的通道,并根据芯片忙闲信息选择此写请求对应的芯片、晶元、分组、 物理块和物理页,并由此计算出对应的物理地址;将请求加入到对应通道的通道队列的尾 部,更改对应通道的权值,等待处理; (5) 通道队列处理步骤:闪存控制器从通道队列中取出请求,并根据由请求接收步骤 和请求队列处理步骤中获得的请求物理地址、请求大小、请求类型信息,对闪存芯片进行相 应的操作,从闪存中读取相应数据信息或将请求携带的数据写入到其物理地址对应的闪存 物理页中;当闪存芯片的读写操作完成后,闪存控制器向固态盘控制器返回完成信息,并根 据请求的类型更改对应通道的权值;通道内读操作完成则对应通道的权值减去读操作权 值,写操作完成则对应通道的权值减去写操作权值; (6) 垃圾回收处理步骤:触发垃圾回收操作时,为进行垃圾回收操作的通道加上垃圾 回收操作权值,待垃圾回收操作完成后,对应通道的权值减去垃圾回收操作的权值。
2. 如权利要求1所述的方法,其特征在于,所述请求接收步骤具体包括: (1. 1)固态存储设备接收上层文件系统或固态存储设备缓存产生的读写请求,所述读 写请求至少包含逻辑页地址、请求大小、读写操作信息,进行子步骤(1.2); (1.2)判断请求大小是否大于一个物理页的大小,若大于,转子步骤(1.3);否则转子 步骤(1. 4); (1. 3)计算此请求需要占用的物理页数n,将其划分为η个请求,每个请求对应一个物 理页,转子步骤(1.4); (1.4)判断请求的操作类型,若为写请求,转子步骤(1.7);若为读请求,转子步骤 (1.5); (1. 5)根据读请求的逻辑地址查映射表得到对应的物理地址,由物理地址可知此请求 所对应的通道i、芯片,i对应固态存储设备中某一通道号,转子步骤(1. 6); (1. 6)计算通道i对应通道权值A = Wi+Wp WK为读请求权值,转子步骤(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)由闪存先擦后写特性可知,写请求需要空闲物理页进行存储,比较各个通道权值 Wp找到权值最小的通道j,j对应此时固态存储设备中权值最小的通道,转子步骤(4. 3); (4.3)判断闪存转换层是否支持芯片选择,若支持,转子步骤(4.4);若不支持,将此写 请求加入通道j队列尾部,转子步骤(4. 5); (4. 4)轮询查找此通道下芯片片选信号R/B,找到空闲芯片k,若所有芯片都不空闲,则 选择第一个查询的芯片k,确定请求将要写入的芯片k,将此写请求加入通道j队列尾部,转 子步骤(4. 5) (4. 5)通道j通道权值W」=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,将此请求从通道队列中删除,此时I = Wi-^,转子步骤(5. 1); (5.5) 根据已知的写请求通道、芯片信息,将数据写入对应的空闲物理页中,当写操作 完成后,更新芯片片选信号R/B,将此请求从通道队列中删除,此时1 = Wi-Ww,转子步骤 (5. 1)。
7. 如权利要求1或2所述的方法,其特征在于,所述垃圾回收处理步骤具体包括: (6. 1)根据通道i空闲物理页比例,判断是否需要进行垃圾回收操作,若不需要进行垃 圾回收操作,转子步骤(2. 1),若需要进行垃圾回收操作,转子步骤(6.2); (6. 2)执行通道内垃圾回收操作,通道i通道权值t = Wi+W^ Wec为垃圾回收权值,转 子步骤(6. 3); (6. 3)垃圾回收操作完成,通道i通道权值% = Wi-W^转步骤(5)。
【文档编号】G06F12/02GK104090847SQ201410290432
【公开日】2014年10月8日 申请日期:2014年6月25日 优先权日:2014年6月25日
【发明者】童薇, 罗锐, 刘景宁, 冯丹, 余晨晔, 冒伟 申请人:华中科技大学