一种控制多通道固态盘数据读写的方法

文档序号:6443503阅读:349来源:国知局
专利名称:一种控制多通道固态盘数据读写的方法
技术领域
本发明涉及一种固态盘(SSD)的控制技术领域,尤其是涉及一种控制多通道固态盘的数据读写方法。
背景技术
SSD (Solid State Disk)指的是使用NAND Flash组成的固态盘。固态盘与目前的传统硬盘相较,具有读写速度快,低功耗、抗震、稳定性高、耐低温等优点。随着Flash芯片的单片容量越来越大、价格越来越低,基于Flash的固态盘已成为一种主流存储设备。其不仅在消费电子产品中被广泛应用,在企业级应用中也占有一席之地。固态盘的特别之处在于没有机械结构,利用传统的NAND Flash特性,按页写入、按块擦除的方式,其读写的效率依赖读写布局的方法设计。主机端接口和Flash控制器的速度严重不匹配是影响SSD性能的主要原因。Flash 的读写延迟,导致单片Flash读写速度不高,接口带宽受限。由于MLC(Multi-Level Cell) Flash的出现,这个问题变得越来越严重。目前,常用的Flash接口的读写带宽在一般情况下平均可以达到40MB/s和8MB/s,但是,主机互联的逻辑接口如SATA接口可以达到150MB/ s, PCI-E接口的速度就更高了,这导致主机端接口和Flash控制器的速度严重不匹配。随着 Flash应用技术的逐步提高,用户对设备的读写速度要求也逐渐提高,单颗粒或者单通道的闪存设备接口带宽已经远远不能满足用户的要求。为了解决闪存芯片接口的带宽瓶颈,采用多通道的设计。采用多通道的设计,主要是为了解决闪存芯片的读写延迟问题。多通道SSD的优点在于能够多通道同时进行操作, 可以成倍的提高闪存设备的接口带宽,从而提高SSD的性能。如图1所示的SSD,每个通道都有自己独立的闪存通道控制器,通道间相互独立。主机系统发送的命令和数据,必须经过主机接口,可以采用USB,Fiber Channel,PCIExpress,SATA等形式的接口。因为Flash有较长时间的读写延迟,所以,采用多通道的形式,可以使Flash控制器的性能和主机接口的性能相匹配。SDRAM主要用来存放缓冲的数据和系统的映射表以及一些元数据信息。DMA 控制器控制数据在主机接口和SDRAM、主机接口和闪存控制器、SDRAM和闪存控制器之间的数据传输,可以加快数据的流动,减少数据传输的时间。每个通道都有独立Flash控制器, 可以独立控制Flash的读写操作,从而不受其他通道的干扰。

发明内容
本发明解决的技术问题是针对现在多通道固态盘数据写入/读出速度低,磨损不均衡等问题,提出一种控制数据写入/读出的方法。本发明提出的控制数据写入/读出的方法,包括以下处理步骤(1) SSD映射关系的建立。映射表是用来存放读写过程中逻辑地址和物理地址的映射关系的。文件系统请求的是逻辑地址,数据写入/读出时,访问的是SSD的物理地址。需要通过映射表,建立逻辑地址和物理地址的映射关系。
(2)通过DMA方式,将数据批量从主机接口或者SDRAM传送给Flash控制器。(3)选择通道状态为ready的通道。(4)优先服务读请求。根据步骤( 选择的通道,从通道的读请求队列上取下一个读请求或者多个读请求,优先服务读请求。具体为首先,针对所述读请求队列中的任一读请求,根据该任一读请求的逻辑地址查询所述映射表,得到该读请求的物理地址及所在的Chip ;其次,判断chip的状态,如果为ready,则该读请求即为所找到的可服务的读请求,否则,依次判断所述读请求队列中的其他读请求,直到找到所在chip状态为ready的读请求;然后,根据所述所在chip状态为ready的读请求的物理地址,读取数据;(5)如果没有可以服务的读请求,从写请求队列上取下一个或多个写请求,在步骤 (3)选择的通道上,选择状态为ready的chip,将数据写入到该chip的空闲页,修改映射表。优选的,所属步骤(1)中的映射表在系统掉电时,映射表需要回写到Flash。映射表数据和普通数据的写入频率是不同的,所以,为了使这两种数据的写入造成的磨损均衡, 对映射表数据和普通数据不做区分,将映射表中的数据均勻存放在所述固态盘(SSD)的多个flash中。优选的,所属步骤(3)中的状态为ready的通道选择步骤如下初始状态下,令牌由系统随机选择的一个通道所有,选择状态为ready的通道时,从该令牌所有者的下一个通道开始查询通道状态,如果查询到状态为ready的通道,就将令牌传给该通道。如果没有 ready的通道,循环查询所有通道,直到状态为ready的通道出现。优选的,所属步骤(4)中优先服务读请求,原因是Flash读操作比写操作执行时间短,服务读请求比服务写请求需要的时间短。从队首开始,取出读请求队列的逻辑页(LPN) 字段,查询映射表,得到物理页(PPN)字段,判断该页所在的chip是否是ready状态,如果是,响应该读请求,如果不是,判断读请求队列的物理页(PPN)字段,直到发现状态为ready 的chip,响应该请求。优选的,所属步骤(5)中服务写请求,每个通道有一个令牌,初始状态下,令牌由随机选择的一个chip所有,选择状态为ready的chip时,从该令牌所有者的下一个chip 开始查询chip状态,如果查询到状态为ready的chip,就将令牌传给该chip。如果没有状态为ready的chip,循环查询所有chip,直到状态为ready的chip出现。综上所述,本发明控制多通道固态盘数据读写的优势在于实现了接口数据的快速转移,通道间的并行以及通道内的串行流水操作。并且由于采用令牌环的方式,SSD的所有chip之间磨损也是均勻的。


图1是本发明的多通道SSD架构示意图。图2是一种多通道固态盘数据读写流程图。图3是写请求处理流程图。图4是读请求处理流程图。
图5是专用chip存放映射表示意图。图6是各chip的固定位置存放映射表示意图。图7是各chip不固定位置存放映射表示意图。图8是读写请求队列示意图。图9是读写处理过程的通道状态和chip状态示意图。图10是通道间并行和通道内chip之间interleaving示意图。
具体实施例方式下面结合附图和具体实施例对本发明作进一步详细说明。如图2所示,图示了本发明实施例的一种多通道固态盘数据读写方法。所述方法包括步骤S21,建立映射表信息;步骤S22,主机端的待写数据,通过DMA方式,传输到缓冲区;步骤S23,选择状态为ready的通道;步骤S24,判断读请求队列是否为空。如果为空,执行S25,否则,执行S26 ;步骤S25,处理写请求,转到步骤S27 ;步骤S26,处理读请求;步骤S27,判断是否满足数据回写的条件,如接口是否断开,是否断电,如果是,执行S28,否则执行S22 ;步骤S28,将映射表回写到Flash。为了防止数据断电丢失,需要利用定时器,每间隔一段时间,定时器就会自动触发映射表的回写。本实施例中还可以在建立映射表信息的同时建立元数据信息,其中所述元数据包括,坏块表,无效页标记,活动块标记,可用块标记信息等。由于Flash读操作的速度远快于写操作速度,读一页数据的时间大约为写一页数据时间的1/4,所以,根据步骤S24的判断结果,优先服务读请求。同映射表一样,元数据也定期回写到Flash。如图3所示,图2所述的步骤25具体包括步骤S31,判断写请求所在chip状态是否是ready,如果状态为ready,执行步骤 S32,否则,执行步骤S33 ;步骤S32,从写请求队列摘下一个写请求,响应该写请求;步骤S33,令牌加1,传递给下一个chip,转到步骤S31 ;步骤S34,判断数据传输是否完成,如果完成,执行步骤S35,否则,执行步骤S34 ;步骤S35,将通道状态改为ready ;步骤S36,判断写操作中的program是否完成,如果program完成,执行步骤S37, 否则,执行步骤S36;步骤S37,将chip状态改为ready。如图4所示,图2所述的步骤沈具体包括步骤S41,读请求队列的指针指向队首;步骤S42,判断指针所在chip是否是ready状态,如果是,执行步骤S43,否则,执行步骤S44,继续判断指针所在chip是否是ready状态;
步骤S43,从读请求队列摘下该读请求,服务该读请求,转步骤S45 ;步骤S44,指针加1,转步骤S42 ;步骤S45,判断读操作是否完成,如果完成,执行步骤S46,否则,继续执行步骤 S45 ;步骤S46,将chip状态,通道状态改为ready。本实施例中,选择状态为ready的通道通过令牌环实现,具体为初始状态下,令牌由随机一个通道所有,选择状态为ready的通道时,从该令牌所有者的下一个通道开始查询通道状态,如果查询到状态为ready的通道,就将令牌传给该通道,如果没有ready的通道,循环查询所有通道,直到状态为ready的通道出现。本实施例中,选择状态为ready的chip通过令牌环实现,具体为令牌由随机选择的一个chip所有,选择状态为ready的chip时,从该令牌所有者的下一个chip开始查询 chip状态,如果查询到状态为ready的chip,就将令牌传给该chip,如果没有状态为ready 的chip,循环查询所有chip,直到状态为ready的chip出现。从主机文件系统接收的读写命令地址为逻辑扇区地址,为了响应这一命令,需要做地址映射,按照一定的映射策略,会产生映射表。映射表存放的是逻辑地址和物理地址的映射关系。一般,映射表在系统上电的时候存放在SDRAM里,掉电的时候存放在Flash里。 传统的做法是预留一部分Flash空间,专门用作存放映射表,有两种常用方法。一种是如图5,预留专门的chip存储映射表。这种方式映射表专用chip和普通数据chip的写入次数是不均衡,会导致某些chip过早结束寿命。由于每个Flash chip的寿命有限,如果某些chip数据过早失效了,整个SSD的性能会变得不稳定。一种是如图6,在各chip的固定位置存储映射表,一般是每个chip起始的一段连续地址或者是结束的一段连续地址用作存储映射表。假设SSD有N个Flash chip,将映射表的大小分为N份。在系统断电或者是映射表更新的情况下,将映射表回写到这N个 Flashchip,其中,每个Flash chip用固定位置存放映射表。由于映射表数据和普通数据的数据特性不同,映射表在每次系统上电、掉电的过程都会被更新,或每隔一段时间更新或在系统负载较轻的情况下更新。由于Flash每块擦写次数有限,一般SLC NAND Flash为百万次,MLCNand Flash为十万次。如果磨损不均衡,会导致在大多数Flash块磨损较轻的情况下,某些Flash块磨穿,提前结束整个Flash的寿命。映射表的更新频率大于普通数据,将映射表存放在每个Flash chip的固定位置,会导致存放Flash映射表的区域提前磨穿,从而结束整个SSD寿命。本实施例中采用如图7的方法,将映射表均勻的回写在每个Flash块。映射表数据和普通数据不作区分,均勻分布在Flash chip上。Flash块的磨损是均勻的,会延长整个 SSD的寿命。SDRAM的一部分预留为映射表专用,一部分用作数据buffer。所以,读写请求不直接响应,分别存储在不同的请求队列上。主机发送的命令按照命令类型以及到达的先后顺序,分离成读请求队列和写请求队列。如图8,各个通道之间共享写请求队列,每个通道独享读请求队列。读写请求的处理都分为两个步骤,数据传输和数据写入操作。数据传输是指写请求数据经过总线传输至寄存器,读请求数据从寄存器传输至总线。数据写入操作是指写请求数据从寄存器写入闪存介质(这一过程也称为program),读请求数据从介质写入寄存
ο按照图1的SSD架构,各个通道有独立的总线,通道上的chip共用该通道的总线。 chip指的是有独立片选的闪存操作单元。在读写请求的处理过程中,通道状态和chip状态如图9所示。数据传输和数据写入时,该chip状态一直为chip busy。由于每个通道的所有chip共用数据总线,所以,数据传输时,通道状态为channel busy,而数据写入时,通道
channel ready0一个写操作包含三个阶段,命令阶段、数据阶段和编程阶段。命令和地址是在命令阶段传输的。数据阶段执行数据的传输。编程阶段,数据写入到Flash单元,这一过程由硬件自动完成,且编程时间比前两个阶段的时间长。由于各个通道之间是完全独立的,而CPU只有一个,如果使用CPU执行大量的数据阶段的数据传输操作,将大量占用系统总线,影响通道间的读写性能。由于有DMA控制器, CPU仅执行写入命令和地址的操作,而由DMA配合闪存控制器,完成数据的传输。而CPU写命令和地址占用的时间比较短,对于具体的读写操作来说是非常小的,所以从总体上看,通道间是并行工作的。DMA控制器控制数据在主机接口逻辑和闪存控制器、SDRAM和闪存控制器之间的数据传输。主机端的数据传输要快于闪存控制器端的数据传输,所以,增加通道数量可以并行访问不同通道间的Flashchip,通道的带宽和通道数是成比例的。如图10,每个通道都有Flash执行编程操作。从图上可以明显看出,两个Flash在相当长的时间里重叠了 chip busy时间,所以,interleaving技术通过使多个写操作重叠, 有效的隐藏了编程阶段较长的延时,大大减少了系统的编程总时间开销。在如图1所示的多通道架构下,读操作也可以通过多通道并行和通道间interleaving提升性能。
权利要求
1.一种控制多通道固态盘数据读写的方法,具体包括如下步骤(1)建立映射表,用以存放固态盘(SSD)逻辑地址与物理地址之间的映射关系;(2)主机端的待写数据通过DMA方式,传输到通道控制器的缓冲区中;(3)选择一个通道状态为ready的通道;(4)从该状态为ready的通道的读请求队列中,找到一个所在的chip状态为ready的读请求,服务该读请求,读取数据,具体为首先,针对所述读请求队列中的任一读请求,根据该任一读请求的逻辑地址查询所述映射表,得到该读请求的物理地址及所在的chip ;其次,判断chip的状态,如果为ready,则该读请求即为所找到的可服务的读请求,否贝U,依次判断所述读请求队列中的其他读请求,直到找到所在chip状态为ready的读请求;然后,根据所述所在chip状态为ready的读请求的物理地址,读取数据;(5)如果读请求队列为空,则从写请求队列中找到一个所在的chip状态为ready的写请求,将所述缓冲区的数据写入到该chip的空闲页,然后根据该chip和空闲页,修改映射表中相应的逻辑地址和物理地址的对应关系,完成写操作。
2.根据权利要求1所述的方法,其特征在于,所述步骤C3)中选择状态为ready的通道通过令牌环实现,具体为初始状态下,令牌由随机一个通道所有,选择状态为ready的通道时,从该令牌所有者的下一个通道开始查询通道状态,如果查询到状态为ready的通道,就将令牌传给该通道, 如果没有ready的通道,循环查询所有通道,直到状态为ready的通道出现。
3.根据权利要求1或2所述的方法,其特征在于,所述映射表中的数据均勻存放在所述固态盘(SSD)的多个闪存中。
4.根据权利要求1-3之一所述的方法,其特征在于,所述选择状态为ready的chip通过令牌环实现,具体为令牌由随机选择的一个chip所有,选择状态为ready的chip时,从该令牌所有者的下一个chip开始查询chip状态,如果查询到状态为ready的chip,就将令牌传给该chip,如果没有状态为ready的chip,循环查询所有chip,直到状态为ready的chip出现。
5.根据权利要求1-4之一所述的方法,其特征在于,所述多通道固态盘的每个通道均有一个读请求队列。
6.根据权利要求1-5之一所述的方法,其特征在于,所述写请求队列只有一个,由固态盘的所有通道共享。
7.根据权利要求1-6之一所述的方法,其特征在于,所述映射表每间隔一定时间回写到闪存,以防止数据断电丢失。
全文摘要
本发明公开了一种控制多通道固态盘数据读写的方法,包括(1)建立映射表,以存放固态盘逻辑地址与物理地址之间的映射关系;(2)主机端的待写数据通过DMA传输到通道控制器的缓冲区中;(3)选择一个通道状态为ready的通道;(4)从该状态为ready的通道的读请求队列中,找到一个所在的chip状态为ready的读请求,服务该读请求;(5)如果读请求队列为空,从写请求队列中找到一个所在的chip状态为ready的写请求,将缓冲区的数据写入到该chip的空闲页,然后修改映射表中相应的逻辑地址和物理地址的对应关系,完成写操作。本发明的方法实现了接口数据的快速转移,通道间的并行以及通道内的串行流水操作,并且由于采用令牌环的方式,SSD的所有chip之间磨损也是均匀的。
文档编号G06F13/28GK102567257SQ20111044448
公开日2012年7月11日 申请日期2011年12月26日 优先权日2011年12月26日
发明者冯丹, 刘景宁, 张建权, 樊旭光, 秦亦, 童薇, 胡洋 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1