《具有多个固态盘的存储设备.pdf》由会员分享,可在线阅读,更多相关《具有多个固态盘的存储设备.pdf(20页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103176858 A (43)申请公布日 2013.06.26 CN 103176858 A *CN103176858A* (21)申请号 201310077076.X (22)申请日 2013.03.11 G06F 11/10(2006.01) G06F 3/06(2006.01) (71)申请人 北京忆恒创源科技有限公司 地址 100085 北京市海淀区上地信息路 2 号 创业园 D 栋 609 (72)发明人 殷雪冰 路向峰 (54) 发明名称 具有多个固态盘的存储设备 (57) 摘要 提供了具有多个固态盘的存储设备。该存储 设备包括网络适配器、 控制器以及耦。
2、合到所述控 制器的多个驱动器 ; 所述网络适配器将所述存储 设备耦合到网络, 并接收来自客户端的访问请求, 所述访问请求指示第一数据写入用于所述存储设 备的第一逻辑地址 ; 所述控制器为所述第一逻辑 地址生成第一物理地址, 并生成写入命令发送给 所述多个驱动器之一, 其指示将所述第一数据写 入所述第一物理地址 ; 所述控制器还确定是否生 成校验数据, 若是, 基于所述第一数据生成第一校 验数据, 并生成第二写入命令发送给所述多个驱 动器之一, 其指示将所述第一校验数据写入第二 物理地址。 本发明解决了固态盘形成的RAID存储 设备中写放大问题, 延长了存储设备的使用寿命。 (51)Int.Cl。
3、. 权利要求书 1 页 说明书 11 页 附图 7 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书11页 附图7页 (10)申请公布号 CN 103176858 A CN 103176858 A *CN103176858A* 1/1 页 2 1. 一种存储设备, 包括网络适配器、 控制器以及耦合到所述控制器的多个驱动器 ; 所述网络适配器将所述存储设备耦合到网络, 并接收来自客户端的访问请求, 所述访问请求指示将第一数据写入用于所述存储设备的第一逻辑地址 ; 所述控制器为所述第一逻辑地址生成第一物理地址, 并生成写入命令发送给所述多个 驱动器之一, 其指。
4、示将所述第一数据写入所述第一物理地址所指示的存储位置 ; 所述控制器还确定是否生成校验数据, 若是, 基于所述第一数据生成第一校验数据, 并 生成第二写入命令发送给所述多个驱动器之一, 其指示将所述第一校验数据写入第二物理 地址所指示的存储位置。 2. 根据权利要求 1 所述的存储设备, 还包括 : 所述控制器将元数据存储于所述多个驱动器中的一个或多个, 所述元数据指示所述第 一物理地址、 所述第二物理地址具有关联关系。 3. 根据权利要求 1 所述的存储设备, 其中所述控制器通过选择所述多个驱动器中的第 一驱动器来为所述第一逻辑地址生成第一物理地址, 所述第一物理地址指示所述第一驱动 器中的。
5、存储位置。 4. 根据权利要求 3 所述的存储设备, 其中在所述控制器中为每个驱动器维护写指针, 写指针指示写入数据的物理地址 ; 所述控制器还基于所选择的第一驱动器的写指针生成所 述第一物理地址, 并使所述第一驱动器的写指针递增。 5. 根据权利要求 1 所述的存储设备, 其中所述控制器响应于接收将第一数据写入用于 所述存储设备的第一逻辑地址的请求, 分配存储单元组, 所述存储组包括多个存储单元, 所 述多个存储单元中的每个位于所述多个驱动器之一。 6. 根据权利要求 5 所述的存储设备, 其中所述控制器为存储单元组维护写指针, 写指 针指示所述存储单元组中的一个存储单元, 所述控制器基于所。
6、分配的存储单元组的写指针 生成所述第一物理地址, 并使所分配的存储单元组的写指针指示所述存储单元组中的另一 个存储单元。 7. 根据权利要求 5 所述的存储设备, 其中响应于分配存储单元组, 所述控制器查询所 述存储单元组的各个存储单元所在的多个驱动器的状态, 并基于所述状态从所述存储单元 组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址, 所述第一物理地址指示 所选择的存储单元。 8. 根据权利要求 1 所述的存储设备, 其中如果所述存储设备已经收到用于生成校验数 据的 N 个数据, 则所述控制器确定生成校验数据, N 是自然数。 9. 根据权利要求 1 或 8 所述的存储设备, 其。
7、中如果所述存储设备尚未收到用于生成校 验数据的N个数据, 则所述控制器填充预定数据来形成用于生成校验数据的N个数据, 并确 定生成校验数据。 10.根据权利要求1或8所述的存储设备, 其中如果所述存储设备尚未收到用于生成校 验数据的 N 个数据, 则所述控制器发起用于所述多个驱动器的一个或多个的垃圾回收操作 来形成用于生成校验数据的 N 个数据, 并确定生成校验数据。 权 利 要 求 书 CN 103176858 A 2 1/11 页 3 具有多个固态盘的存储设备 技术领域 0001 本发明涉及固态存储设备 (Solid Storage Device,SSD) , 更具体地, 本发明涉及 用于。
8、同时访问多个固态盘的存储设备。 背景技术 0002 同机械式硬盘相类似, 固态存储设备也是用于计算机系统的大容量、 非易失性存 储设备。固态存储设备一般以闪存 (Flash) 作为存储介质。高性能的固态存储设备被用于 高性能计算机。 0003 存储器目标 (Target) 是 NAND 闪存封装内的共享芯片使能 (CE,Chip Enable) 信 号的一个或多个逻辑单元 (Logic Unit) 。每个逻辑单元具有逻辑单元号 (LUN,Logic Unit Number) 。NAND 闪存封装内可包括一个或多个管芯 (Die) 。典型地, 逻辑单元对应于单一的 管芯。逻辑单元可包括多个平面 。
9、(Plane) 。逻辑单元内的多个平面可以并行存取, 而 NAND 闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从 http:/www. /media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx 获 得的 “Open NAND Flash Interface Specification(Revision3.0) ” 中, 提供了关于目标 (target) 、 逻辑单元、 LUN、 平面 (Plane) 的含义, 其为现有技术的一部分。 0004 固态存储设备可具有扩展卡形状, 可安装到主板上的 PCIE 或者类。
10、似的接口。固态 存储设备还可具有3.5、 2.5或1.8英寸驱动器形状, 可安装到机架或盘阵设备中, 其一般被 称为固态盘 (Solid State Disk) 。 0005 公开号为 CN102656567A 的中国专利申请公开了固态存储器件内的数据管理。参 看图 1, 固态存储器件的一组页被称为 “步距 (stride) ” , 每个步距包括来自每个通道的一 组页, 其中每个通道的一组页被称为 “条”(strip) 。 对于标识了LBA (Logic Block Address, 逻辑块地址) 的写入请求, 实施在步距内的从 LBA 到 PBA(Physical Block Address。
11、, 物理 块地址) 的映射, 并填充步距内的每个条 (图 1 中的 id 分别为 31、 52、 44、 67 的条) 。对步距 内多个条的填充可以是连续或并行的。这样, 将 RAID(Redundant Array of Independent Disks, 独立磁盘冗余阵列) 模式引入到固态存储设备中, 提高了固态存储设备的性能与可 靠性。 0006 然而, 存储设备中可能多个固态盘或多个存储卡, 每个固态盘或存储卡可能具有 不同的容量和性能, 随着时间的流逝, 各个固态盘或存储卡也会表现出不同的特性。 在写入 数据时, 考虑各个固态盘或存储卡的特定性能将有助于提高存储设备的性能。 以及,。
12、 写入请 求中所携带的数据量可能与 “步距” 的数据容量不同。需要提供相应的手段来匹配来自客 户端的访问请求与存储设备的存储单元的容量。 发明内容 0007 本发明解决了固态盘形成的 RAID 存储设备中写放大问题, 延长了存储设备的使 用寿命。 说 明 书 CN 103176858 A 3 2/11 页 4 0008 根据本发明的第一方面, 提供了一种用于访问存储设备的多个驱动器的方法, 所 述方法包括 : 接收将第一数据写入用于所述存储设备的第一逻辑地址的请求 ; 0009 为所述第一逻辑地址生成第一物理地址 ; 生成写入命令, 其指示将所述第一数据 写入所述第一物理地址 ; 确定是否生成。
13、校验数据 ; 若是, 基于所述第一数据生成第一校验 数据, 并将所述第一校验数据写入第二物理地址。 0010 根据本发明的第一方面的方法, 还包括 : 在所述多个驱动器中的一个或多个上存 储元数据, 所述元数据指示所述第一物理地址、 所述第二物理地址具有关联关系。 0011 根据本发明的第一方面的方法, 其中通过选择所述多个驱动器中的第一驱动器来 为所述第一逻辑地址生成第一物理地址, 所述第一物理地址指示所述第一驱动器中的存储 位置。 0012 根据本发明的第一方面的方法, 其中为每个驱动器提供写指针, 写指针指示写入 数据的物理地址, 基于所选择的第一驱动器的写指针生成所述第一物理地址, 并。
14、使所述第 一驱动器的写指针递增。 0013 根据本发明的第一方面的方法, 其中响应于接收将第一数据写入用于所述存储设 备的第一逻辑地址的请求, 分配存储单元组, 所述存储组包括多个存储单元, 所述多个存储 单元中的每个位于所述多个驱动器之一。 0014 根据本发明的第一方面的方法, 其中所述存储单元为一个或多个页。 0015 根据本发明的第一方面的方法, 其中为存储单元组提供写指针, 写指针指示所述 存储单元组中的一个存储单元, 基于所分配的存储单元组的写指针生成所述第一物理地 址, 并使所分配的存储单元组的写指针指示所述存储单元组中的另一个存储单元。 0016 根据本发明的第一方面的方法, 。
15、其中响应于分配存储单元组, 基于所述存储单元 组的各个存储单元所在的多个驱动器的状态, 从所述存储单元组中选择一个存储单元来为 所述第一逻辑地址生成第一物理地址, 所述第一物理地址指示所选择的存储单元。 0017 根据本发明的第一方面的方法, 其中为所述多个驱动器中的每个驱动器提供写队 列, 用于在将写入命令发送给驱动器之前存储写入命令。 0018 根据本发明的第一方面的方法, 其中如果已经收到用于生成校验数据的 N 个数 据, 则确定生成校验数据, N 是自然数。 0019 根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N 个数 据, 填充预定数据来形成用于生成校验数据的。
16、 N 个数据, 并确定生成校验数据。 0020 根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N 个数 据, 通过执行垃圾回收操作来形成用于生成校验数据的 N 个数据, 并确定生成校验数据。 0021 根据本发明的第一方面的方法, 其中在所述请求中指示生成校验数据。 0022 根据本发明的第一方面的方法, 其中所述请求中指示所述 N 的值。 0023 根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N 个数 据, 且所述请求中指示生成校验数据, 填充数据来形成用于生成校验数据的 N 个数据, 并生 成校验数据。 0024 根据本发明的第一方面的方法, 其中。
17、如果尚未收到用于生成校验数据的 N 个数 据, 且强制计算校验数据的事件发生, 填充数据来形成用于生成校验数据的 N 个数据, 并生 成校验数据。 说 明 书 CN 103176858 A 4 3/11 页 5 0025 根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N 个数 据, 且所述请求中指示生成校验数据, 执行垃圾回收操作来形成用于生成校验数据的 N 个 数据, 并生成校验数据。 0026 根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N 个数 据, 且强制计算校验数据的事件发生, 执行垃圾回收操作来形成用于生成校验数据的 N 个 数据, 并生成。
18、校验数据。 0027 根据本发明的第二方面, 提供了一种用于访问存储设备的多个驱动器的装置, 所 述装置包括 : 用于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求的模块 ; 用于为所述第一逻辑地址生成第一物理地址的模块 ; 用于生成写入命令的模块, 所述写入 命令指示将所述第一数据写入所述第一物理地址 ; 用于确定是否生成校验数据的模块 ; 用 于在确定生成校验数据的情况下基于所述第一数据生成第一校验数据, 并将所述第一校验 数据写入第二物理地址的模块。 0028 根据本发明的第三方面, 提供了一种存储设备, 包括网络适配器、 控制器以及耦合 到所述控制器的多个驱动器 ; 所述网络适。
19、配器将所述存储设备耦合到网络, 并接收来自客 户端的访问请求, 所述访问请求指示将第一数据写入用于所述存储设备的第一逻辑地址 ; 所述控制器为所述第一逻辑地址生成第一物理地址, 并生成写入命令发送给所述多个驱动 器之一, 其指示将所述第一数据写入所述第一物理地址 ; 所述控制器还确定是否生成校验 数据, 若是, 基于所述第一数据生成第一校验数据, 并生成第二写入命令发送给所述多个驱 动器之一, 其指示将所述第一校验数据写入第二物理地址。 0029 根据本发明的第三方面的存储设备, 还包括 : 所述控制器将元数据存储于所述多 个驱动器中的一个或多个, 所述元数据指示所述第一物理地址、 所述第二物。
20、理地址具有关 联关系。 0030 根据本发明的第三方面的存储设备, 其中所述控制器通过选择所述多个驱动器中 的第一驱动器来为所述第一逻辑地址生成第一物理地址, 所述第一物理地址指示所述第一 驱动器中的存储位置。 0031 根据本发明的第三方面的存储设备, 其中在所述控制器中为每个驱动器维护写指 针, 写指针指示写入数据的物理地址 ; 所述控制器还基于所选择的第一驱动器的写指针生 成所述第一物理地址, 并使所述第一驱动器的写指针递增。 0032 根据本发明的第三方面的存储设备, 其中所述控制器响应于接收将第一数据写入 用于所述存储设备的第一逻辑地址的请求, 分配存储单元组, 所述存储组包括多个存。
21、储单 元, 所述多个存储单元中的每个位于所述多个驱动器之一。 0033 根据本发明的第三方面的存储设备, 其中所述控制器为存储单元组维护写指针, 写指针指示所述存储单元组中的一个存储单元, 所述控制器基于所分配的存储单元组的写 指针生成所述第一物理地址, 并使所分配的存储单元组的写指针指示所述存储单元组中的 另一个存储单元。 0034 根据本发明的第三方面的存储设备, 其中响应于分配存储单元组, 所述控制器查 询所述存储单元组的各个存储单元所在的多个驱动器的状态, 并基于所述状态从所述存储 单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址, 所述第一物理地址 指示所选择的存储单元。。
22、 说 明 书 CN 103176858 A 5 4/11 页 6 0035 根据本发明的第三方面的存储设备, 其中所述控制器为所述多个驱动器中的每个 驱动器提供写队列, 所述写队列用于在将写入命令发送给驱动器之前存储写入命令。 0036 根据本发明的第三方面的存储设备, 其中如果所述存储设备已经收到用于生成校 验数据的 N 个数据, 则所述控制器确定生成校验数据, N 是自然数。 0037 根据本发明的第三方面的存储设备, 其中如果所述存储设备尚未收到用于生成校 验数据的N个数据, 则所述控制器填充预定数据来形成用于生成校验数据的N个数据, 并确 定生成校验数据。 0038 根据本发明的第三方。
23、面的存储设备, 其中如果所述存储设备尚未收到用于生成校 验数据的 N 个数据, 则所述控制器发起用于所述多个驱动器的一个或多个的垃圾回收操作 来形成用于生成校验数据的 N 个数据, 并确定生成校验数据。 0039 根据本发明的第三方面的存储设备, 其中所述请求中指示所述 N 的值。 0040 根据本发明的第三方面的存储设备, 其中在所述请求中指示生成校验数据。 0041 根据本发明的第三方面的存储设备, 其中所述请求中指示所述 N 的值。 0042 根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个 数据, 且所述请求中指示生成校验数据, 填充数据来形成用于生成校验数。
24、据的 N 个数据, 并 生成校验数据。 0043 根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个 数据, 且强制计算校验数据的事件发生, 填充数据来形成用于生成校验数据的 N 个数据, 并 生成校验数据。 0044 根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个 数据, 且所述请求中指示生成校验数据, 执行垃圾回收操作来形成用于生成校验数据的 N 个数据, 并生成校验数据。 0045 根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个 数据, 且强制计算校验数据的事件发生, 执行垃圾回收操作来形成用于生成校验。
25、数据的 N 个数据, 并生成校验数据。 0046 根据本发明的第四方面, 提供了一种计算机系统, 包括主板、 布置于主板上的扩展 卡、 CPU 以及耦合到所述扩展卡的多个驱动器 ; 所述 CPU 把将第一数据写入第一逻辑地址的 请求发送给所述扩展卡 ; 所述扩展卡为所述第一逻辑地址生成第一物理地址, 并生成写入 命令发送给所述多个驱动器之一, 所述写入命令指示将所述第一数据写入所述第一物理地 址 ; 所述扩展卡还确定是否生成校验数据, 若是, 基于所述第一数据生成第一校验数据, 并 生成第二写入命令发送给所述多个驱动器之一, 所述第二写入命令指示将所述第一校验数 据写入第二物理地址。 0047。
26、 根据本发明的第四方面的计算机系统, 还包括 : 所述扩展卡将元数据存储于所述 多个驱动器中的一个或多个, 所述元数据指示所述第一物理地址、 所述第二物理地址具有 关联关系。 0048 根据本发明的第四方面的计算机系统, 其中所述扩展卡通过选择所述多个驱动器 中的第一驱动器来为所述第一逻辑地址生成第一物理地址, 所述第一物理地址指示所述第 一驱动器中的存储位置。 0049 根据本发明的第四方面的计算机系统, 其中在所述扩展卡中为每个驱动器维护写 说 明 书 CN 103176858 A 6 5/11 页 7 指针, 写指针指示写入数据的物理地址 ; 所述扩展卡还基于所选择的第一驱动器的写指针 。
27、生成所述第一物理地址, 并使所述第一驱动器的写指针递增。 0050 根据本发明的第四方面的计算机系统, 其中所述扩展卡响应于接收将第一数据写 入用于所述存储设备的第一逻辑地址的请求, 分配存储单元组, 所述存储组包括多个存储 单元, 所述多个存储单元中的每个位于所述多个驱动器之一。 0051 根据本发明的第四方面的计算机系统, 其中所述扩展卡为存储单元组维护写指 针, 写指针指示所述存储单元组中的一个存储单元, 所述扩展卡基于所分配的存储单元组 的写指针生成所述第一物理地址, 并使所分配的存储单元组的写指针指示所述存储单元组 中的另一个存储单元。 0052 根据本发明的第四方面的计算机系统, 。
28、其中响应于分配存储单元组, 所述扩展卡 查询所述存储单元组的各个存储单元所在的多个驱动器的状态, 并基于所述状态从所述存 储单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址, 所述第一物理地 址指示所选择的存储单元。 0053 根据本发明的第四方面的计算机系统, 其中所述扩展卡为所述多个驱动器中的每 个驱动器提供写队列, 所述写队列用于在将写入命令发送给驱动器之前存储写入命令。 0054 根据本发明的第四方面的计算机系统, 其中如果所述扩展卡已经收到用于生成校 验数据的 N 个数据, 则确定生成校验数据, N 是自然数。 0055 根据本发明的第四方面的计算机系统, 其中如果所述扩。
29、展卡尚未收到用于生成校 验数据的N个数据, 则所述扩展卡填充预定数据来形成用于生成校验数据的N个数据, 并确 定生成校验数据。 0056 根据本发明的第四方面的计算机系统, 其中如果所述扩展卡尚未收到用于生成校 验数据的 N 个数据, 则所述扩展卡发起用于所述多个驱动器的一个或多个的垃圾回收操作 来形成用于生成校验数据的 N 个数据, 并确定生成校验数据。 0057 根据本发明的第四方面的计算机系统, 其中所述请求中指示所述 N 的值。 0058 根据本发明的第四方面的计算机系统, 其中所述请求中指示所述 N 的值。 0059 根据本发明的第四方面的计算机系统, 其中在所述请求中指示生成校验数。
30、据。 0060 根据本发明的第四方面的计算机系统, 其中所述请求中指示所述 N 的值。 0061 根据本发明的第四方面的计算机系统, 其中如果尚未收到用于生成校验数据的 N 个数据, 且所述请求中指示生成校验数据, 填充数据来形成用于生成校验数据的 N 个数据, 并生成校验数据。 0062 根据本发明的第四方面的计算机系统, 其中如果尚未收到用于生成校验数据的 N 个数据, 且强制计算校验数据的事件发生, 填充数据来形成用于生成校验数据的 N 个数据, 并生成校验数据。 0063 根据本发明的第四方面的计算机系统, 其中如果尚未收到用于生成校验数据的 N 个数据, 且所述请求中指示生成校验数据。
31、, 执行垃圾回收操作来形成用于生成校验数据的 N 个数据, 并生成校验数据。 0064 根据本发明的第四方面的计算机系统, 其中如果尚未收到用于生成校验数据的 N 个数据, 且强制计算校验数据的事件发生, 执行垃圾回收操作来形成用于生成校验数据的 N 个数据, 并生成校验数据。 说 明 书 CN 103176858 A 7 6/11 页 8 附图说明 0065 当连同附图阅读时, 通过参考后面对示出性的实施例的详细描述, 将最佳地理解 本发明以及优选的使用模式和其进一步的目的和优点, 其中附图包括 : 0066 图 1 展示了现有技术中的固态硬盘的数据组织 ; 0067 图 2 是根据本发明的。
32、实施例的存储设备的数据组织 ; 0068 图 3 是根据本发明实施例的计算机系统的框图 ; 0069 图 4 是根据本发明实施例的访问多个驱动器的方法的流程图 ; 0070 图 5 是根据本发明进一步实施例的访问多个驱动器的方法的流程图 ; 0071 图 6 是根据本发明依然进一步实施例的访问多个驱动器的方法的流程图 ; 以及 0072 图 7 是根据本发明实施例的存储设备的框图。 具体实施方式 0073 图2是根据本发明的实施例的存储设备的数据组织。 存储设备包括固态盘200、 固 态盘 220固态盘 260。每个固态盘可以是具有标准尺寸的 3.5、 2.5 或 1.8 英寸驱动器。 固态盘。
33、 200 可包括闪存芯片 201 与闪存芯片 202。固态盘 220 包括闪存芯片 221, 而固态盘 260 包括闪存芯片 261。固态盘 200 也可包括不同数量的闪存芯片。以及固态盘 200、 固态 盘 220 与固态盘 260 可分别包括不同数量和 / 或不同容量的闪存芯片。固态盘中的闪存芯 片可组织为多个通道, 以在所使用的接口引脚数量和多个闪存芯片的并行访问之间进行取 舍。例如, 在申请号为 201210448894.1、 201210449387.X 的中国专利申请中提供了多种将 闪存芯片组织为通道的方式。 0074 作为举例, 闪存芯片 201 包括多个块, 例如块 0、 块 。
34、1、 块 2 和块 3。闪存芯片中也可 以包括其他数量的块。在每个块中包括多个页。对于 NAND 闪存, 以页为单位进行读、 写操 作, 而以块为单位实施擦除操作, 这是由 NAND 闪存的物理结构决定的。作为举例, 闪存芯片 201 还包括平面 0 与平面 1。平面 0 包括块 0 与块 2, 而平面 1 包括块 1 与块 3。平面 0 与 平面 1 各自具有页寄存器, 使得位于平面 0 的块与位于平面 1 的块可以并行操作。闪存芯 片可以具有不同数量的页。闪存芯片还可以包括一个或多个管芯。 0075 根据本发明的实施例, 固态盘 200 的页 211、 固态盘 220 的页 231 与固态。
35、盘 260 的 页 261 被分组在一起, 组成存储单元组。在申请号为 201310003789.1 与 201310003898.3 的中国专利申请中提供了将来自主机的逻辑地址映射到存储单元组的方式。 存储单元组中 的各个页被一起操作, 其中可以存储用户数据以及由用户数据产生的校验数据。当存储单 元组中的一个或多个页损坏时, 可基于存储单元组中的其他页来恢复损坏的数据。 例如, 存 储单元组可包括 N+P 个页, 其中 N 个页用于存储用户数据, 而 P 个页用于存储校验数据。优 选地, 分配存储单元组, 使得当移除固态盘 200、 220 与 260 中的一个或多个时, 可利用剩余 的固态。
36、盘恢复所移除固态盘中存储的数据。在一个例子中, 页 211、 页 231 与页 261 分别在 固态盘 200、 固态盘 220 与固态盘 260 中具有相同的物理地址, 这样可以容易地确定组成存 储单元组的各个页, 而无须附加的元数据。以这种方式, 盘 200 的芯片 201 的块 0 的页 1、 盘 220 的芯片 221 的块 0 的页 1 与盘 260 的芯片 261 的块 0 的页 1 组成另一个存储单元组。 虽然在图2的实施例中示出了存储单元组包括3个页, 可以理解, 存储单元组可以具有其他 说 明 书 CN 103176858 A 8 7/11 页 9 不同数量的页。 0076 。
37、在一个实施例中, 存储单元组中包括来个多个固态盘 (200、 220 与 260) 的每一个 的页。在另一个实施例中, 存储单元组中包括来自多个固态盘的一个或多个的页。存储单 元组中也可以包括来自一个固态盘的多个页。 0077 继续参照图 2, 在一个实施例中, 页 215、 页 235 与页 265 组成存储单元组。页 215、 页 235 与页 265 可具有相同或不同的物理地址, 因而需要提供附加的元数据来指示页 215、 页 235 与页 265 组成了存储单元组。可以在页 215、 页 235 与页 265 的带外 (Out-Of-Band) 数据中存储元数据, 还可以在页215、 。
38、页235与页265的用户数据区中存储元数据 (相应地降 低用户数据的存储容量) , 还可以在其他页中存储元数据。由于闪存中的页可能损坏, 利用 元数据指示组成存储单元组的多个页, 可以有效地将损坏的页排除, 并利用具有相同或不 同物理地址的页组成存储单元组, 从而提高存储空间的利用率。 0078 图 3 是根据本发明实施例的计算机系统的框图。计算机 300 包括主板 310。主板 310 上布置有中央处理单元 (CPU,Central Processing Unit) 312 以及扩展卡 314。主板 310上还可布置有芯片组、 存储器等部件。 扩展卡314用于将多个存储盘耦合到计算机300。。
39、 扩展卡 314 可通过诸如 PCIE(Peripheral Component Interconnect Express, 快速外围 组件互连) 、 PCI(Peripheral Component Interconnect, 外围组件互连) 等多种接口耦合到 主板 310。扩展卡 314 可通过多种接口耦合存储盘, 多种接口包括但不限于 SATA(Serial Advanced Technology Attachment, 串行高级技术附件) 、 USB(Universal Serial Bus, 通 用串行总线) 、 PCIE、 SCSI(Small Computer SystemInt。
40、erface, 小型计算机系统接口) 、 IDE (Integrated Drive Electronics, 集成驱动器电子) 等。多个存储盘包括盘 320、 322、 324 和 326。扩展卡 314 可耦合不同数量的存储盘。扩展卡 314 中可包括闪存转换层 (Flash Translation Layer,FTL) 部件, 用以将基于逻辑地址的存储盘访问请求转换为基于物理地 址的存储盘访问请求。 存储盘可以是固态盘, 固态盘以闪存芯片作为存储介质, 固态盘也适 用于其他类型的存储芯片, 例如, 相变存储器、 电阻存储器、 铁电存储器等。 0079 在一个实施例中, 主板 310 中可。
41、以不包括扩展卡 314, 而通过设置在主板 310 上的 诸如 PCIE、 IDE、 SCSI、 和 / 或 SATA 等接口, 将盘 320、 322、 324 和 326 耦合到主板 310。以 及, 在计算机 300 的操作系统或应用程序中提供闪存转换层软件, 用以将基于逻辑地址的 存储盘访问请求转换为基于物理地址的存储盘访问请求。 还可以将闪存转换层部件设置在 CPU、 芯片组或其他集成电路中。 0080 扩展卡 314 上可布置有控制电路, 用以实施将在图 4- 图 6 中描述的各操作来控制 对盘 320、 322、 324、 326 的访问。控制电路可以是 FPGA (Field-。
42、programmable gate array, 现场可编程门阵列) 、 ASIC(Application Specific Integrated Circuit, 应用专用集成电 路) 或者其组合的形式。控制电路也可以包括一个或多个处理器或者控制器。闪存转换层 部件可在 FPGA、 ASIC 中以硬件电路形式实现, 也可采用运行在处理器或控制器中的软件形 式实现。 0081 图4是根据本发明实施例的访问多个驱动器的方法的流程图。 在步骤400, 接收写 请求。写请求可以来自计算机 300 的 CPU312。写请求可由运行在计算机 300 上的操作系统 或者应用软件发出, 并指示将数据写入到诸。
43、如固态盘的存储设备中。写请求中可以携带或 者指示逻辑地址, 逻辑地址指示存储设备所展现的逻辑地址空间。 说 明 书 CN 103176858 A 9 8/11 页 10 0082 在步骤 410, 获取物理地址。基于写请求获得逻辑地址, 例如可以从写请求中提取 逻辑地址, 也可以基于写请求中的指示 (例如, 对存储逻辑地址的存储空间的指示, 或相对 于前一逻辑地址的偏移) 来间接提取逻辑地址。接着, 通过映射表将逻辑地址转换为物理 地址。在进一步的实施例中, 多个固态盘中的多个页被分组在一起, 组成存储单元组。通过 映射表或顺序映射方式将逻辑地址转换为用于存储单元组的地址。 对于连续接收到的写。
44、请 求, 将其逻辑地址转换为相同的存储单元组地址, 直到填充了存储单元组中的 N 个数据页。 进而基于存储单元组的地址获得物理地址。 所得到的物理地址指示了该存储单元组中的存 储单元。而写请求或者逻辑地址可以无需维护存储单元组结构。 0083 在步骤 420, 基于物理地址, 将写请求所指示的数据写入存储设备。在一个实施例 中, 为每个固态盘提供写队列, 以先进先出的方式基于物理地址将数据写入存储设备。 在另 一个实施例中, 为多个或所有固态盘提供共享的写队列。 在进一步的实施例中, 存储单元组 中包括多个页, 而写入请求对对应的数据少于存储单元组的容量。 则还缓存写入数据, 用以 为对应的存。
45、储单元组生成校验数据。在一个实施例中, 还向存储设备写入指示存储单元组 信息的元数据。 0084 在步骤430, 判断是否生成校验数据。 若否, 则返回步骤400以接收其他的写请求。 若是, 则在步骤440计算校验数据。 基于N个页的用户数据计算得到P个页的校验数据。 例 如, 可采用奇偶校验计算校验数据, 也可以采用所有领域惯用的其他校验数据生成方式。 在 一个实施例中, 计算校验数据之前, 临时存储对应于一个存储单元组的用户数据, 而在计算 校验数据后, 可释放临时存储用户数据的存储区。还基于存储单元组地址, 确定用于存储 P 个页的校验数据的物理地址。 0085 在步骤450, 基于物理。
46、地址, 将校验数据写入存储设备。 可提供写队列, 以先进先出 方式将校验数据写入存储设备。在一个实施例中, 还向存储设备写入指示存储单元组信息 的元数据。 0086 图 5 是根据本发明进一步实施例的访问多个驱动器的方法的流程图。图 5 中所示 出的流程图, 相对于图 4 中的流程图, 进一步展示了基于写请求所对应的逻辑地址获取物 理地址的多种方式。 0087 在步骤 500, 接收写请求。 0088 通过步骤 511 与步骤 512, 展示了一种获取物理地址的方式。在步骤 511, 分配多 个固态盘之一。可通过多种方式分配固态盘。例如, 可通过轮转方式分配固态盘 ; 可通过查 询固态盘的状态。
47、, 并选择处于空闲状态的固态盘的方式分配固态盘 ; 还可通过比较对应于 固态盘的写入队列的长度, 选择写入队列较短的固态盘的方式分配固态盘。在步骤 512, 针 对选定的固态盘, 将逻辑地址映射到指示该固态盘的物理地址。物理地址可指示该固态盘 的页的物理位置。在一个实施例中, 为连续的多个写请求分配的来自一个或多个固态盘的 多个页组成存储单元组。 存储单元组的N个页可来自N个固态盘的每一个, N个页可位于各 固态盘的相同位置或不同位置。存储单元组的 N 个页也可以来自一个或少于 N 个固态盘。 0089 通过步骤 513 与步骤 514, 展示了又一种获取物理地址的方式。在步骤 513, 分配。
48、 多个固态盘之一。可通过多种方式分配固态盘。例如, 可通过轮转方式分配固态盘 ; 可通过 查询固态盘的状态, 并选择处于空闲状态的固态盘的方式分配固态盘 ; 还可通过比较对应 于固态盘的写入队列的长度, 选择写入队列较短的固态盘的方式分配固态盘。在步骤 514, 说 明 书 CN 103176858 A 10 9/11 页 11 针对选定的固态盘, 将该固态盘的写指针作为要写入数据的物理地址, 并递增该写指针。 以 此方式, 每个固态盘具有用于其自身的写指针, 写指针指示了要写入数据的位置, 使得在一 个固态盘上的连续的写操作可在该固态盘的连续的物理地址上进行, 进而可降低在擦除均 衡过程中所。
49、引起的写放大效应, 从而提高存储设备的使用寿命。物理地址可指示该固态盘 的页的物理位置。在一个实施例中, 为连续的多个写请求分配的来自一个或多个固态盘的 多个页组成存储单元组。 存储单元组的N个页可来自N个固态盘的每一个, N个页可位于各 固态盘的相同位置或不同位置。存储单元组的 N 个页也可以来自一个或少于 N 个固态盘。 0090 通过步骤515与步骤516, 展示了又一种获取物理地址的方式。 在步骤515, 分配存 储单元组。存储单元组包括多个页。构成存储单元在的多个页来自多个固态盘。例如, 存 储单元组可包括 N+P 个页, N 个页用于存储用户数据, 而 P 个页用于存储校验数据。N+P 个 页来自 N+P 个固态盘, 每个固态盘提供一个页。在另一个实施例中, N+P 个页来自少于 N+P 个固态盘。 在一个实施例中, 包括多个固态盘的存储设备初始化期间, 确定存储单元组的数 量以及存储。