CN103914390B - 存储设备 - Google Patents
存储设备 Download PDFInfo
- Publication number
- CN103914390B CN103914390B CN201310003901.1A CN201310003901A CN103914390B CN 103914390 B CN103914390 B CN 103914390B CN 201310003901 A CN201310003901 A CN 201310003901A CN 103914390 B CN103914390 B CN 103914390B
- Authority
- CN
- China
- Prior art keywords
- address
- memory element
- logical
- circuit
- storage device
- 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.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
提供了一种存储设备。包括多个存储单元、存储单元接口电路、地址映射电路和处理器,所述处理器将用于存储设备的逻辑地址发送给所述地址映射电路;所述地址映射电路将所述逻辑地址映射为用于存储单元的物理地址,并将所述物理地址发送给所述存储单元接口电路;所述存储单元接口电路基于所述物理地址访问所述存储单元。
Description
技术领域
本发明涉及固态存储设备(Solid Storage Device,SSD),更具体地,本发明涉及用于存储设备的逻辑地址与物理之间的映射。
背景技术
同机械式硬盘相类似,固态存储设备(SSD)也是用于计算机系统的大容量、非易失性存储设备。固态存储设备一般以闪存(Flash)作为存储介质。高性能的固态存储设备被用于高性能计算机。
存储器目标是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic UnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。
公开号为CN102177556A的中国专利申请公开了一种闪存转换层(FTL,FlashTranslation Layer)。FTL将闪存的存储块形成虚拟存储空间,以使得闪存存储器对主机显示为磁盘驱动器。FTL通过在存储器中产生并维持表,以将来自主机的对磁盘驱动器的一个扇区的请求映射到固态驱动器的闪存芯片中的实际位置。
参看图1,其展示了用于FTL的并行单元的查找表的例子。由于闪存芯片中的逻辑单元(Logic Unit)可以并行方式存取,因而,并行单元可以是一逻辑单元。逻辑单元内可包括多个平面(Plane),并行单元也可为一平面。而对应于图1的例子中,固态驱动器包括8个信道(channel)(也称为“通道”)。每个通道上包括多个闪存芯片,可由2个芯片使能信号控制对每个通道上的闪存芯片的访问。在图1的例子中,每个芯片启用(又称为“芯片使能”)信号对应于一个逻辑单元,而每个逻辑单元具有2个平面。因而,图1的固态驱动器共包括32个并行单元。每个并行单元为一个平面。通过图1中提供的查找表,将0-31的并行单元编号,映射到特定的通道、芯片启用信号、逻辑单元以及平面。
然而,存储设备中可能包括具有不同容量的闪存芯片,不同数量的通道。以及存储设备中可能包括具有不同配置的电路子卡,每个子卡上具有不同数量的通道、不同数量的闪存芯片。这导致在物理配置上,并行单元的排布相对于电路子卡或者闪存芯片并非线性。而主机则需要认为存储空间是连续的。因而,需要在存储设备的物理配置可变的情况下,提供用于存储设备的逻辑地址与物理地址之间的映射。
发明内容
根据本发明的第一方面,提供了用于存储设备的地址映射方法,包括:接收用于存储设备的逻辑地址;将所述逻辑地址映射为用于存储单元的物理地址;基于所述物理地址访问所述存储单元。
根据本发明的第一方面的方法,其中使用查找表将所述逻辑地址映射为用于存储单元的物理地址。
根据本发明的第一方面的方法,包括:获取第一电路板上的存储单元的第一数量,获取第二电路板上的存储单元的第二数量;基于所述第一数量与所述第二数量得到逻辑地址范围,所述逻辑地址的取值在所述逻辑地址范围之内;向主机提供所述逻辑地址范围。
根据本发明的第一方面的方法,包括:基于所述第一数量与所述第二数量,建立查找表,用于将所述逻辑地址范围内的每个逻辑地址映射到用于第一电路板或第二电路板上的存储单元的物理地址。
根据本发明的第一方面的方法,包括:获取第一电路板上的存储单元的第一数量;基于所述第一数量得到逻辑地址范围,所述逻辑地址的取值在所述逻辑地址范围之内;向主机提供所述逻辑地址范围。
根据本发明的第一方面的方法,包括:基于所述第一数量,建立查找表,用于将所述逻辑地址范围内的每个逻辑地址映射到用于第一电路板上的存储单元的物理地址。
根据本发明的第一方面的方法,包括:重新获取所述第一电路板上的存储单元的第三数量,重新获取第二电路板上的存储单元的第四数量;基于所述第三数量与所述第四数量得到第二逻辑地址范围,所述逻辑地址的取值在第二所述逻辑地址范围之内;向主机提供所述第二逻辑地址范围;基于所述第三数量与所述第四数量,建立查找表,用于将所述第二逻辑地址范围内的每个逻辑地址映射到用于第一电路板或第二电路板上的存储单元的物理地址。
根据本发明的第一方面的方法,包括:获取第三电路板上的存储单元的第五数量;基于所述第一数量、所述第二数量与所述第五数量得到第三逻辑地址范围,所述逻辑地址的取值在第三所述逻辑地址范围之内;向主机提供所述第三逻辑地址范围;基于所述第一数量、所述第二数量与所述第五数量,建立查找表,用于将所述第三逻辑地址范围内的每个逻辑地址映射到用于第一电路板、第二电路板或第三电路板上的存储单元的物理地址。
根据本发明的第一方面的方法,包括:重新获取所述第一电路板上的存储单元的第六数量;基于所述第六数量得到第四逻辑地址范围,所述逻辑地址的取值在第四所述逻辑地址范围之内;向主机提供所述第四逻辑地址范围;基于所述第六数量,建立查找表,用于将所述第四逻辑地址范围内的每个逻辑地址映射到用于第一电路板上的存储单元的物理地址。
根据本发明的第一方面的方法,所述存储单元是存储器芯片中的管芯、逻辑单元或平面。
根据本发明的第一方面的方法,其中,所述存储单元中包括多个存储块,当所述存储单元中的存储块损坏时,将所述逻辑地址映射为用于存储单元的物理地址的映射关系保持不变。
根据本发明的第二方面,提供了一种用于存储设备的地址映射方法,包括:接收来自存储单元的用于所述存储单元的物理地址;将所述物理地址映射为逻辑地址;将所述逻辑地址发送给访问所述存储设备的主机。
根据本发明的第二方面的方法,其中使用查找表将所述物理地址映射为逻辑地址。
根据本发明的第二方面述的方法,包括:获取第一电路板上的存储单元单元的第一数量,获取第二电路板上的存储单元的第二数量;基于所述第一数量与所述第二数量得到逻辑地址范围,所述逻辑地址的取值在所述逻辑地址范围之内;向主机提供所述逻辑地址范围。
根据本发明的第二方面的方法,包括:基于所述第一数量与所述第二数量,建立查找表,用于将用于第一电路板或第二电路板上的存储单元的每个物理地址映射到所述逻辑地址范围内的逻辑地址。
根据本发明的第二方面的方法,所述存储单元是存储器芯片中的逻辑单元、管芯或平面。
根据本发明的第二方面的方法,其中,所述存储单元中包括多个存储块,当所述存储单元中的存储块损坏时,将所述物理地址映射为逻辑地址的映射关系保持不变。
根据本发明的第二方面的方法,包括:重新获取所述第一电路板上的存储单元的第三数量,重新获取第二电路板上的存储单元的第四数量;基于所述第三数量与所述第四数量得到第二逻辑地址范围,所述逻辑地址的取值在第二所述逻辑地址范围之内;向主机提供所述第二逻辑地址范围;基于所述第三数量与所述第四数量,建立查找表,用于将用于第一电路板或第二电路板上的存储单元的每个物理地址映射到所述第二逻辑地址范围内的逻辑地址。
根据本发明的第二方面的方法,包括:获取第三电路板上的存储单元的第五数量;基于所述第一数量、所述第二数量与所述第五数量得到第三逻辑地址范围,所述逻辑地址的取值在第三所述逻辑地址范围之内;向主机提供所述第三逻辑地址范围;基于所述第一数量、所述第二数量与所述第五数量,建立查找表,用于将用于第一电路板、第二电路板或第三电路板上的存储单元的每个物理地址映射到所述第三逻辑地址范围内的逻辑地址。
根据本发明的第二方面的方法,包括:重新获取所述第一电路板上的存储单元的第六数量;基于所述第六数量得到第四逻辑地址范围,所述逻辑地址的取值在第四所述逻辑地址范围之内;向主机提供所述第四逻辑地址范围;基于所述第六数量,建立查找表,用于将用于第一电路板上的存储单元的每个物理地址映射到所述第四逻辑地址范围内的逻辑地址。
根据本发明的第三方面,提供了一种存储设备,包括多个存储单元、存储单元接口电路、地址映射电路和处理器,所述处理器将用于存储设备的逻辑地址发送给所述地址映射电路;所述地址映射电路将所述逻辑地址映射为用于存储单元的物理地址,并将所述物理地址发送给所述存储单元接口电路;所述存储单元接口电路基于所述物理地址访问所述存储单元。
根据本发明的第三方面的存储设备,其中所述地址映射电路是查找表电路。
根据本发明的第三方面的存储设备,还包括检测电路、主机接口、第一电路板和第二电路板;所述多个存储单元布置在所述第一电路板和所述第二电路板上;所述检测电路获取所述第一电路板上的存储单元单元的第一数量,获取第二电路板上的存储单元的第二数量;所述主机接口将基于所述第一数量与所述第二数量得到逻辑地址范围发送给主机,其中所述逻辑地址的取值在所述逻辑地址范围之内。
根据本发明的第三方面的存储设备,其中所述处理器基于所述第一数量与所述第二数量,建立查找表,并用所述查找表初始化所述地址映射电路,所述查找表用于将所述逻辑地址范围内的每个逻辑地址映射到用于第一电路板或第二电路板上的存储单元的物理地址。
根据本发明的第三方面的存储设备,其中所述第一数量不同于所述第二数量。
根据本发明的第三方面的存储设备,还包括检测电路、主机接口、第一电路板;所述多个存储单元布置在所述第一电路板上;所述检测电路获取所述第一电路板上的存储单元单元的第一数量;所述主机接口将基于所述第一数量得到的逻辑地址范围发送给主机,其中所述逻辑地址的取值在所述逻辑地址范围之内。
根据本发明的第三方面的存储设备,其中所述存储单元是存储器芯片中的逻辑单元、管芯或平面。
根据本发明的第三方面的存储设备,其中所述存储单元中包括多个存储块,当所述存储单元中的存储块损坏时,所述地址映射电路的将所述逻辑地址映射为用于存储单元的物理地址的映射关系保持不变。
根据本发明的第三方面的存储设备,还包括第二地址映射电路,其中所述存储单元接口电路将来自存储单元的用于所述存储单元的物理地址发送给所述第二地址映射电路;所述第二地址映射电路将所述物理地址映射为逻辑地址,并将所述逻辑地址发送给所述处理器。
根据本发明的第三方面的存储设备,还包括检测电路,所述检测电路获取所述第一电路板上的存储单元单元的第一数量,获取第二电路板上的存储单元的第二数量;所述主机接口将基于所述第一数量与所述第二数量得到逻辑地址范围发送给主机,其中所述逻辑地址的取值在所述逻辑地址范围之内;所述处理器基于所述第一数量与所述第二数量,建立第二查找表,并用所述第二查找表初始化所述第二地址映射电路,所述第二查找表用于将用于第一电路板或第二电路板上的存储单元的物理地址映射到所述逻辑地址范围内的逻辑地址。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1展示了现有技术中用于FTL的并行单元的查找表;
图2是根据本发明的实施例的存储设备的正视图;
图3A是根据本发明的实施例的存储设备的电路子板的正视图;
图3B-3E是根据本发明的实施例的存储设备电路子板的侧视图;
图4是根据本发明的实施例的建立逻辑地址与物理地址的映射的流程图;
图5A-5D展示根据本发明的实施例的在LBA与PBA间进行映射的查找表;
图6是根据本发明的实施例的地址映射方法的流程图;
图7是示出了根据本发明的实施例的存储设备的存储单元的组织方式的原理图;
图8A-8B是示出了实施本发明的实施例的地址映射关系的图;
图8C-8F是示出了实施本发明的在逻辑存储单元组地址与物理存储单元组地址间进行映射的查找表;
图9是根据本发明的实施例的存储单元组地址映射方法的流程图;
图10A-10D是根据本发明的多个实施例的建立逻辑地址与物理地址的映射的流程图;以及
图11是根据本发明的实施例的存储设备的原理框图。
具体实施方式
图2是根据本发明的实施例的存储设备的正视图。图2所示的存储设备包括电路母板400。电路母板400是具有PCIE半高卡形态的电路板,其可以通过PCIE插槽连接到计算机。电路母板400上布置有电路子板410、420、430和440。在一个实施例中,电路子板410、420、430与440上分别布置有闪存芯片411-413、421-423、431-433以及441-443,使得电路子板410、420、430与440向存储设备提供存储容量。虽然在图2中示出了在电路子板410-440的每个上放置三块闪存芯片,所属领域技术人员将意识到也可以在电路子板410-440上放置其他数量的闪存芯片,例如,在电路子板410上与闪存芯片411-413所在的表面相对的表面上放置闪存芯片。所属领域技术人员还将意识到可将不同数量的电路子板连接到电路母板400。
虽然在图2中示出了包括闪存芯片的具有PCIE接口的存储设备,但所属领域技术人员将意识到,其仅是一种举例,本发明可适用于具有其他功能的多种电子设备,并且可通过多种接口方式耦合到计算机,多种接口包括但不限于SATA(SerialAdvanced Technology Attachment,串行高级技术附件)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,快速外围组件互连)、SCSI(Small Computer System Interface,小型计算机系统接口)、IDE(IntegratedDrive Electronics,集成驱动器电子)等。并且,本发明也适用于包括闪存以外的其他类型的存储芯片,例如,相变存储器、电阻存储器、铁电存储器等。
在电路母板400上还布置有控制电路660,用以控制对电路子板410、420、430与440上的闪存芯片的访问,并处理来自计算机的接口命令。电路母板400上还布置有诸如DRAM(Dynamic Random Access Memory,动态随机访问存储器)的存储器662、664、666与668。存储器662、664、666与668可耦合到控制电路660。控制电路660可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制电路660也可以包括处理器或者控制器。控制电路660中可包括一个、两个或多个处理器核,每个处理器核用于控制或访问多个电路子卡的部分或全部。每个处理器核也可用于访问或控制电路子卡上的多个闪存芯片的部分或全部。
如图2所示的电路母板400上还布置有连接器628和629。通过连接器628与629还可以将分别将电路子板连接到电路母板400。从而,在如图2所示的具有PCIE半高卡形态的电路母板400上,可连接多达6块电路子板。电路子板410通过柔性电路板640连接到电路母板400。电路子板420通过柔性电路板642连接到电路母板400。电路子板430通过柔性电路板644连接到电路母板400。电路子板440通过柔性电路板646连接到电路母板400。以类似的方式,电路子板也通过柔性电路板经由连接器628或者629连接到电路母板400。
电路母板400上的多个电路子板彼此平行放置。多个电路子板的长边沿电路母板400的短边放置,多个电路子板的短边沿电路母板400的长边放置。多个电路子板的短边大体上沿同一直线放置。电路子板410与420首尾相对,并共享柔性电路板640、642形成的空间,从而形成电路子板组。电路子板430与440首尾相对,并共享柔性电路板644、646形成的空间,从而形成电路子板组。类似地,连接到连接器628与629的电路子板也首尾相对,并形成电路子板组。多个电路子板与电路母板之间可具有空间,在该空间中可布置其他电子元件。
在优选的实施例中,还提供散热装置,用于将多个电路子板上的闪存芯片和/或控制电路660和/或存储器662、664、666与668所产生的热量传递到存储设备外部。
图3A是实施本发明的实施例的存储设备的子板的正视图。图3A中更清楚地展示了图2中的电路子板410。电路子板420与430可具有与电路子板410相同的物理形态,但可以具有与电路子板410相同或不同的存储容量。在优选的例子中,电路子板420的存储容量是电路子板410的二倍。在电路子板410上布置有闪存芯片411、412与413。在一个例子中,在电路子板410的未示出的一面,也布置有闪存芯片。闪存芯片411、412与413可以是具有相同容量的闪存芯片,也可以是具有不同容量的闪存芯片。电路子板410上的闪存芯片可以组织为多个通道,每个通道上包括两个或者其他数量的闪存芯片。各个通道彼此并行,可以同时向电路母板400传输数据或从电路母板400接收数据。在电路子板410上也可布置具有其他数量的多个闪存芯片。
在可容纳闪存芯片411、412和/或413的情况下,将电路子板410的尺寸设置得尽量小,以便在电路母板400上可布置更多数量的电路子板,从而提高存储设备的容量。由于可在电路母板上布置多块电路子板410、420和/或430,并且电路子板410、420和430可具有彼此不同的容量,因而,存储设备可具有多种不同的存储容量的组合。参看表1,当电路子板410、420和430可具有192GB(Giga Byte)与394GB两种存储容量时,以及当可在电路母板400上布置最多6块电路子板410、420或430时,可得到具有多种不同存储容量的存储设备。虽然在表1中示出了包括4块到6块电路子板的存储设备的配置,但是,也可以在电路母板400上布置1块-3块电路子板,以提供更多不同的存储容量。
表1存储设备存储容量表
由此,通过提供两种不同存储容量的电路子板,得到了具有多种不同容量的存储设备,可满足多种不同场合的需求。
并且,由于电路子板410、420与430具有相同的物理形态,因而电路子板410、420与430在电路母板400上的安装是可互换的,从而简化了安装的过程,并且,当多个电路子板之一出现故障时,也可以容易地更换。以及,通过用更大容量和/或更高性能(访问速度、可靠性等)的电路子板替换电路母板400上已有的电路子板,可容易地实现对存储设备的更新或升级。
所属领域技术人员将意识到,也可以提供具有三种或更多种不同存储容量的电路子板,从而可提供具有更多种存储容量的存储设备。例如,参看表2,在电路子板410上可布置不同数量的存储芯片(例如,3-6个存储芯片),从而,在每个存储芯片具有64GB存储容量的情况下,可提供分别具有192GB、256GB、320GB以及384GB存储容量的电路子板。而通过提供多种具有不同存储容量的电路子板,可得到具有更多种不同存储容量的存储设备。显然,如果电路子板410上的每个存储芯片具有不同的存储容量,则可以提供具有进一步多种不同的存储容量组合的存储设备。
表2电路子板存储容量表
芯片容量 | 芯片数量 | 子卡容量 |
64GB | 3 | 192GB |
64GB | 4 | 256GB |
64GB | 5 | 320GB |
64GB | 6 | 384GB |
图3B-3E是实施本发明的实施例的存储设备的电路子板410的侧视图。在图3B中,电路子板410上布置有存储芯片411、412、413、414、415以及416。当每个存储芯片提供64GB存储容量时,图3B中的电路子板可提供384GB的存储容量。在图3C中,电路子板410上布置有存储芯片411、412、413、414以及415。当每个存储芯片提供64GB存储容量时,图3C中的电路子板可提供320GB的存储容量。在图3D中,电路子板410上布置有存储芯片411、412、413以及414。当每个存储芯片提供64GB存储容量时,图3D中的电路子板可提供256GB的存储容量。在图3E中,电路子板410上布置有存储芯片411、412以及413。当每个存储芯片提供64GB存储容量时,图3E中的电路子板可提供192GB的存储容量。
接下来参看图4,图4是根据本发明的实施例的建立逻辑地址与物理地址的映射的流程图。由于电路母板400上可包括不同数量的电路子板410、420、430,且每个电路子板410、420、430可包括不同数量和/或存储容量的闪存芯片,因而,电路母板400上的存储容量可以不同。当电路母板400上电后,或者电路母板上的电路子板配置发生变化后,要建立逻辑地址与物理地址的映射管理。在一个实施例中,逻辑地址以逻辑单元(Logic Unit)的大小为最小单元,而物理地址也以逻辑单元为最小单元,使得逻辑地址与物理地址具有一一对应的关系。在步骤480,获取电路子板上的逻辑单元的数量。在一个例子中,在电路子板410的接口中,提供3根引线,每根引线通过其传输的电信号指示电路子板410上的配置。例如,电路子板410上包括第一通道、第二通道与第三通道,其中每个通道上布置有1个闪存芯片或是2个闪存芯片。所属领域技术人员也可以意识到其他指示电路子板410的配置的方式。或者该3根引线可指示每个通道上布置的逻辑单元的数量,例如第一通道上布置有8个逻辑单元,第二通道上布置有8个逻辑单元,而第三通道上布置有16个逻辑单元。例如,在电路子板410的接口中,提供2根引线,其可以传递“00”、“01”、“10”以及“11”四种不同的状态,每个状态指示电路子板410的一种特定配置。在电路母板400上包括电路子板410,而电路子板410的配置信息指示电路子板410上包括3个通道,3个通道均包括16个逻辑单元的情况下,可以得到电路母板400上布置的逻辑单元的数量为48个。在另一个例子中,电路母板400包括电路子板410与420,电路子板410上包括24个逻辑单元,而电路子板420上包括48个逻辑单元,从而通过对每个电路子板的逻辑单元数量求和,可以得到电路母板400上布置的逻辑单元的数量为72个,并且可以得到这些逻辑单元在电路子板410与420上的分布。
在步骤482,计算逻辑地址范围。根据已经得到的逻辑单元的数量,可以确定电路母板400的以逻辑单元为最小单位的存储空间的上限,将该上限作为电路母板400或者存储设备提供给主机的逻辑地址空间的上限。当电路母板400包括24个逻辑单元时,对应的以逻辑单元为最小单位的逻辑地址范围是0-23;当电路母板400包括48个逻辑单元时,对应的以逻辑单元为最小单位的逻辑地址范围是0-47。
在步骤484,将计算得到的逻辑地址范围提供给主机,使主机知晓电路母板400或者存储设备所具有的存储容量。在一个例子中,将计算得到的逻辑地址范围存储特定的存储位置——例如寄存器——使得主机可通过对该寄存器的访问,而获知存储设备所具有的存储容量。当存储设备包括48个逻辑单元时,向主机告知存储设备的以逻辑单元为最小单位的逻辑地址范围是0-47。在一个例子中,向主机提供的逻辑地址范围以其他单位作为最小单位,例如,以存储块、存储页或扇区作为最小单位。存储块、存储页或扇区的数量可以是逻辑单元数量的倍数。
在步骤486,建立逻辑地址与物理地址间的双向映射表。在根据本发明的实施例中,逻辑地址空间与物理地址空间是一一映射的。在一个例子中,当逻辑地址空间以逻辑单元作为最小单位时,逻辑地址空间与以闪存芯片的逻辑单元为最小单位的物理地址空间显然具有一一映射关系。在另一个例子中,当主机以存储块、存储页或扇区作为最小单位访问存储设备时,逻辑上连续的多个存储块、存储页或扇区被组织为具有同逻辑单元相同的尺寸,从而形成以逻辑单元作为最小单位的逻辑地址,从而使得逻辑地址空间与以闪存芯片的逻辑单元为最小单位的物理地址空间显然具有一一映射关系。
图5A-5D展示根据本发明实施例的在LBA(逻辑块地址,Logic Block Address)与PBA(物理块地址,Physical Block Address)间进行映射的查找表。在图5A-图5D中,主机以存储块为最小单位访问存储设备。而闪存芯片的逻辑单元包括多个存储块。因而,在根据本发明的实施例中,忽略LBA的若干低位,得到以逻辑单元为最小单位的逻辑地址,以及也忽略PBA中的若干低位,作为以逻辑单元为最小单位的物理地址。通过图5A-5D提供的查找表,在逻辑地址与物理地址之间建立一一对应关系。还将意识到的是,图5A-5D的查找表可以是双向的,既可以通过逻辑地址,得到对应的物理地址;也可以通过物理地址,得到对应的逻辑地址。虽然在图5A-图5D中示出了按照“通道”、“芯片使能”、“逻辑单元”以及“其余位”排列的PBA,所属领域技术人员将意识到,其仅为举例,PBA的排列方式不限于此,例如,PBA也可以按照“芯片使能”、“逻辑单元”、“通道”以及“其余位”的方式排列。并且,PBA还可以描述逻辑单元中所包括的一个或多个平面(Plane)。
参看图5A,存储设备包括4个通道,每个通道上用4个芯片使能信号进行控制,而每个芯片使能信号可控制两个逻辑单元。从而,存储设备提供了32个逻辑单元。在以逻辑单元为最小单位时,主机将获知存储设备的逻辑地址空间为0-31。需要指出的是,主机可以访问逻辑单元内部的存储块、存储页或扇区,但其并非图5A-5D所提供的查找表所关心的内容。回到图5A,例如,主机提供的LBA是“4[X]”,其中“4”代表以逻辑单元为最小单位的逻辑地址,而“[X]”代表逻辑单元内部的存储块、存储页或扇区。通过图5A的查找表,将逻辑地址“4”或LBA“4[X]”映射到通道0、芯片使能2、逻辑单元0。而“[X]”保持不变,因为其并非图5A所提供的查找表所关心的内容。而且,存储单元内部的存储块、存储页或扇区的一部分,被用于冗余存储块、存储页或扇区,使得当存储单元内部的存储块、存储页或扇区损坏时,无需变更查找表中的映射关系,因为“[X]”代表逻辑单元内部的存储块、存储页或扇区,而其并非图5A所提供的查找表所关心的内容。
参看图5B,存储设备包括4个通道,其中通道0用2个芯片使能信号进行控制(原因在于具有较少的闪存芯片),而通道1-3均用4个芯片使能信号进行控制,而每个芯片使能信号控制两个逻辑单元。从而存储设备提供28个逻辑单元。在以逻辑单元为最小单位时,主机将获知存储设备的逻辑地址空间为0-27。通过图5B的查找表,将逻辑地址“4”或LBA“4[X]”映射到通道1、芯片使能0、逻辑单元0。而“[X]”保持不变,因为其并非图5B所提供的查找表所关心的内容。
参看图5C,存储设备包括4个通道,每个通道上用4个芯片使能信号进行控制,而每个芯片使能信号可控制两个逻辑单元。从而,存储设备提供了32个逻辑单元。在以逻辑单元为最小单位时,主机将获知存储设备的逻辑地址空间为0-31。图5C的查找表提供了与图5A的查找表不同的映射关系。通过图5C的查找表,将逻辑地址“5”或LBA“5[X]”映射到通道1、芯片使能2、逻辑单元1。而“[X]”保持不变,因为其并非图5C所提供的查找表所关心的内容。而在图5A中,将将逻辑地址“5”或LBA“5[X]”映射到通道0、芯片使能2、逻辑单元1。
参看图5D,存储设备包括4个通道,其中通道1用2个芯片使能信号进行控制(原因在于具有较少的闪存芯片),而通道0、2与3均用4个芯片使能信号进行控制,而每个芯片使能信号控制两个逻辑单元。从而存储设备提供28个逻辑单元。在以逻辑单元为最小单位时,主机将获知存储设备的逻辑地址空间为0-27。通过图5D的查找表,将逻辑地址“4”或LBA“4[X]”映射到通道0、芯片使能2、逻辑单元0。而“[X]”保持不变,因为其并非图5D所提供的查找表所关心的内容。
虽然在图5A-图5D中提供了特定的逻辑地址与物理地址之间的映射关系,但是所属领域技术人员将意识到,存在多种其他的在逻辑地址与物理地址之间映射方式。由于逻辑地址空间与物理地址空间是一一对应的,通过为逻辑地址空间中的每一个地址,唯一地分配一个物理地址空间中的物理地址,所属领域技术人员将得到在逻辑地址与物理地址之间进行一一映射的多种方式。
图5A-图5D的查找表可被实现为查找表电路。在电路母板400上的电路子板配置不发生改变的情况下,查找表电路无需改变。
接着参看图6,图6是根据本发明的实施例的地址映射方法的流程图。在步骤680,接收命令。在一个例子中,命令是来自主机的用于访问存储设备的命令,在命令中携带或以其他方式指示用于访问存储设备的逻辑地址。而在另一例子中,命令源于需要将从存储设备中读出的数据提供给主机,在命令中携带或指示所读出数据的物理地址。在依然另一个例子中,命令源于存储设备的闪存芯片出现错误,在命令中携带或指示出现错误的位置的物理地址。这些命令的具体含义并非意在限制本发明的保护范围,而是说明存在多种形式和/或用途的命令,需要对其中的物理地址或逻辑地址进行映射。
在步骤682,判断要进行的地址映射的方向,是从逻辑地址到物理地址的映射,还是从物理地址到逻辑地址的映射。可以基于命令的形态和/或用途进行判断,也可以基于命令中的特定结构或编码部分进行判断。
如果要将物理地址映射到逻辑地址,例如,命令源于需要将从存储设备中读出的数据提供给主机,那么,进行到步骤684,基于命令中携带或者由命令所指示的物理地址得到逻辑地址。在一个例子中,可通过如图5A-图5D所提供的查找表将物理地址映射为逻辑地址。在步骤686,根据得到的逻辑地址进行操作。例如,在命令源于需要将从存储设备中读出的数据提供给主机的情况下,将逻辑地址连同读出的数据发送给主机。在另一个例子中,在命令源于存储设备的闪存芯片出现错误的情况下,将逻辑地址和/或错误信息提供给主机。
如果要将逻辑地址映射到物理地址,例如,命令是来自主机的用于访问存储设备的命令,那么,进行到步骤688,基于命令中携带或者由命令所指示的逻辑地址得到物理地址。可通过如图5A-图5D所提供的查找表将逻辑地址映射为物理地址。在步骤690,根据得到的物理地址访问闪存芯片。例如,根据来自主机的命令,用得到的物理地址将数据写入闪存芯片,或者用得到的物理地址从闪存芯片中读出数据。
在步骤692,检测电路母板400上的逻辑单元数量是否发生变化。逻辑单元数量的变化,源于例如向电路母板400插入电路子板410,从电路母板400移除电路子板410等。若逻辑单元的数量发生变化,则转向图4中提供的步骤480,重新获取逻辑单元数量,并建立逻辑地址与物理地址之间的映射表。若逻辑单元数量未发生变化,则无需改变逻辑地址与物理地址之间的映射表,并进行到步骤680,以等待对下一命令的接收。
图7是示出了根据本发明的另一实施例的存储设备的存储单元的组织方式的原理图。将存储设备中的逻辑单元460-472组织为存储单元组。逻辑单元是闪存芯片内的可独立执行命令和报告状态的存储单元。例如,逻辑单元可以是闪存芯片内的一个管芯。在其他配置中,逻辑单元也可以包括多个管芯。每个存储单元组中包括N个逻辑单元,其中L个逻辑单元用于存储用户数据,而M个逻辑单元用于冗余数据,而N=L+M,N、L与M均为自然数。所属领域技术人员将意识到通过调整L与M的数量,可提供不同的容错能力。例如,当L=M=1时,在每个存储单元组中,1个逻辑单元用于存储用户数据,而另1个逻辑单元用于存储备份数据,当用户数据出现错误时,可利用备份数据恢复出现错误的用户数据。在另一个例子中,L=7,而M=1,采用奇偶校验的的方式为用户数据提供保护。也可以采用其他的容错编码方式来提高存储设备的可靠性。控制电路660控制对存储单元组及其中每个逻辑单元的操作,对存储单元组的数据的检错和纠错也由控制电路660实施。
在优选的实施例中,形成存储单元组的N个逻辑单元位于同一闪存芯片。使得在存储单元组发生不可恢复的错误时,可以较小代价移除或替换出现错误的闪存芯片。在另一实施例中,形成存储单元组的N个逻辑单元来自多个或N个电路子板(410-440),使得在存储单元组中的若干逻辑单元故障或者使用寿命将尽时,可通过更换电路子板(410-440)而实现修复。
通过将逻辑单元组织为存储单元组,并且以存储单元组为单元存储用户数据以及冗余数据,可提高存储设备的可靠性。并且,多个逻辑单元可并行访问,因而,以存储单元组为单元写入和读出数据不会影响存储设备的读写性能。所属领域技术人员将意识到,也可以将多个平面或者管芯组织为存储单元组。
然而,在一个例子中,主机以连续的线性地址空间访问存储设备400,因而需要将来自主机的线性地址映射到各个存储单元组,即将线性地址转换为存储单元组地址。图8A是示出了根据本发明的实施例的地址映射关系的原理图。在所公开的实施例中,存储设备400包括m个存储单元组,每个存储单元组包括n个数据块。存储设备400向使用该存储设备400的主机呈现出具有0~(nm-1)(以4KB/8KB/16KB数据块为单位)地址范围的线性地址空间。逻辑单元可包括多个存储块,每个存储块可包括多个页,典型地,一页为4KB或8KB或16KB大小。为了清楚,这里不关心逻辑单元内部的数据组织方式。在一个实施例中,线性地址为LBA(Logic BlockAddress,逻辑块地址)
图8A展示出存储设备400向主机呈现出具有以数据块为单位的0~(nm-1)的线性地址范围。而图8B则展示出与图8A的每个线性地址相对应的,体现为存储单元组地址与存储单元组内偏移的地址形式。图8B中,横向位置对应于各个存储单元组,而纵向位置对应于存储单元组内的各个存储单元组内偏移。当每个存储单元组包括n个数据块时,图8B的纵向位置包括n个不同的存储单元组内偏移。例如,对于图8A中的线性地址0,映射为图8B中的0号存储单元组与0号存储单元组内偏移。而图8A中的线性地址1,映射为图8B中的1号存储单元组与0号存储单元组内偏移。图8A中的线性地址m,映射为图8B中的0号存储单元组与1号存储单元组内偏移。图8A中的线性地址nm-1,映射为图8B中的m-1号存储单元组与n-1号存储单元组内偏移。图8A与图8B的映射关系可以表示为,将线性地址除以存储设备400中存储单元组的个数,所得的余数作为存储单元组地址,而所得的商作为存储单元组内偏移。存储单元组地址对应于存储设备400的电路子板(410-440)的形成一个存储单元组的特定闪存芯片的特定多个逻辑单元(或管芯)。而存储单元组内偏移指示了在存储单元组内的线性地址空间。
可以使用除法器将图8A中的线性地址映射为图8B中的存储单元组地址与存储单元组内偏移。也可使用查找表的方式实现映射。并且当使用查找表时,可以在线性地址,到存储单元组地址与存储单元组内偏移的映射中,采用其他的映射关系。可以在存储设备400启动或者存储设备400的配置发生改变时通过对电路子板(410-440)的配置的枚举而发现存储单元组的数量以及存储单元组内的用于存储用户数据的逻辑单元的数量确定存储设备400向主机呈现的逻辑地址空间的大小,并建立线性地址到存储单元组地址与存储单元组内偏移的映射关系。(除法得到线性的存储单元组)
需要指出的是,图8B中示出的存储单元组,可以是逻辑上的存储单元组(下文中将其称为“逻辑存储单元组”),其并未展现与闪存芯片相关的物理位置信息。因而,还需要将逻辑存储单元组地址映射为物理存储单元组地址。图8C-8F是示出了实施本发明的在逻辑存储单元组地址与物理存储单元组地址间进行映射的查找表。
在一个例子中,主机以LBA访问存储设备。LBA先被转换成逻辑存储单元组地址与组内偏移的形式。在另一个例子中,主机直接以逻辑存储单元组地址与组内偏移的地址形式访问存储设备。参看图8C-图8F,“逻辑存储单元组”列提供了逻辑存储单元组地址以及放置在中括号内的组内偏移。例如,对于“逻辑存储单元组”列的“1[X]”,其中“1”表示逻辑存储单元组地址,而“[X]”表示组内偏移。“[X]”可以存储块或者存储页为单位,在图8C-图8F提供的地址映射中,可忽略组内偏移“[X]”部分。而存储设备中的多个逻辑单元被组织为存储单元组。每个存储单元组包括多个存储块或存储页。
通过图8C-图8F提供的查找表,在逻辑存储单元组地址与物理存储单元组地址之间建立一一对应关系。还将意识到的是,图8C-8F的查找表可以是双向的,既可以通过逻辑存储单元组地址,得到对应的物理存储单元组地址;也可以通过物理存储单元组地址,得到对应的逻辑存储单元组地址。
参看图8C,存储设备包括10个通道,每个通道上包括两个闪存芯片。每个闪存芯片上的多个逻辑单元形成一个存储单元组。从而,存储设备提供了20个存储单元组。在以存储单元组为最小单位时,主机将获知存储设备的逻辑存储单元组地址空间为0-19。需要指出的是,主机可以访问逻辑存储单元组单元内部的存储块、存储页或扇区,但其并非图8C-8F所提供的查找表所关心的内容。回到图8C,例如,主机提供的地址是“4[X]”,其中“4”代表以存储单元组单元为最小单位的逻辑存储单元组地址,而“[X]”代表存储单元组内部的存储块、存储页或扇区。通过图8C的查找表,将地址“4[X]”映射到通道2、芯片0。并且,这里暗示了地址“4[X]”被映射到通道2、芯片0的所有逻辑单元。而“[X]”保持不变,因为其并非图8C所提供的查找表所关心的内容。而物理存储单元组地址代表了存储单元组所在的通道、芯片和/或逻辑单元的信息。
参看图8D,存储设备包括6个通道,每个通道上包括两个闪存芯片。每个闪存芯片包括8个逻辑单元,而每4个逻辑单元组成一个存储单元组。因而,每个闪存芯片包括2个存储单元组。从而存储设备提供24个存储单元组。在以存储单元组为最小单位时,主机将获知存储设备的逻辑存储单元组的地址空间为0-23。通过图8D的查找表,将地址“4[X]”映射到通道1、芯片0、逻辑单元0-3。而“[X]”保持不变,因为其并非图8D所提供的查找表所关心的内容。
参看图8E,存储设备包括6个通道,每个通道上包括两个闪存芯片。每个闪存芯片包括8个逻辑单元,而每8个逻辑单元组成一个存储单元组。在图8E的实施例中,构成一个存储单元组的8个逻辑单元来自两个闪存芯片。而在图8C与图8D的实施例中,构成一个存储单元的多个逻辑单元来自相同的闪存芯片。
回到图8E,存储设备提供了12个存储单元组。在以存储单元组为最小单位时,主机将获知存储设备的逻辑存储单元组地址空间为0-11。通过图8E的查找表,将地址“4[X]”映射到通道2、芯片0、逻辑单元0-3,以及通道2、芯片1、逻辑单元0-3。而“[X]”保持不变,因为其并非图8E所提供的查找表所关心的内容。
继续参看图8F,存储设备包括4个通道,每个通道上包括两个闪存芯片。每个闪存芯片包括2个逻辑单元,而每4个逻辑单元组成一个存储单元组。在图8F的实施例中,构成一个存储单元组的4个逻辑单元来自四个闪存芯片。从而存储设备提供4个存储单元组。在以存储单元组为最小单位时,主机将获知存储设备的逻辑存储单元组地址空间为0-3。通过图8F的查找表,将地址“3[X]”映射到通道0-3、每个通道上的芯片1、每个芯片上的逻辑单元1。而“[X]”保持不变,因为其并非图8F所提供的查找表所关心的内容。
虽然在图8C-图8F中提供了特定的逻辑存储单元组地址与物理存储单元组地址之间的映射关系,但是所属领域技术人员将意识到,存在多种其他的在逻辑存储单元组地址与物理存储单元组地址之间映射方式。由于逻辑存储单元组地址空间与物理存储单元组地址空间是一一对应的,通过为逻辑存储单元组地址空间中的每一个地址,唯一地分配一个物理存储单元组地址空间中的物理地址,所属领域技术人员将得到在逻辑存储单元组地址与物理存储单元组地址之间进行一一映射的多种方式。
图8C-图8F的查找表可被实现为查找表电路。在电路母板400上的电路子板配置不发生改变的情况下,查找表电路无需改变。
接着参看图9,图9是根据本发明的实施例的存储单元组地址映射方法的流程图。在实施地址映射之前,首先获取存储单元组的配置信息,并建立地址映射表。在步骤990,获取存储设备的电路子板上的存储单元组数量。在一个例子中,获取电路子板410上的逻辑单元的数量,并将逻辑单元的数量除以每个存储单元组的逻辑单元数量N,得到存储单元组的数量。在一个例子中,通过电路子板410的接口提供的3根引线,获得电路子板410的逻辑单元的数量。在另一个例子中,电路母板400包括电路子板410与420,电路子板410上包括24个逻辑单元,而电路子板420上包括48个逻辑单元,每个存储单元组包括8个逻辑单元。进而可以得到电路母板400上布置的存储单元组的数量为9个,并且可以得到这些存储单元组在电路子板410与420上的分布。
在步骤992,计算逻辑存储单元组地址范围。根据已经得到的存储单元组的数量,可以确定电路母板400的以存储单元组为最小单位的存储空间的上限,将该上限作为电路母板400或者存储设备提供给主机的逻辑存储单元组地址空间的上限。当电路母板400包括7个存储单元组时,对应的以存储单元组为最小单位的逻辑存储单元组地址范围是0-6。当电路母板400包括48个存储单元组时,对应的以存储单元组为最小单位的逻辑存储单元组地址范围是0-47。
在步骤994,提供计算得到的逻辑存储单元组地址范围。在一个例子中,将逻辑存储单元组地址范围提供给主机,使主机知晓电路母板400或者存储设备所具有的存储容量。在一个例子中,将计算得到的逻辑存储单元组地址范围范围存储特定的存储位置——例如寄存器,主机通过访问该寄存器可获得逻辑存储单元组的地址范围。
在步骤996,建立逻辑存储单元组地址与物理存储单元组地址间的双向映射表。在根据本发明的实施例中,逻辑存储单元组地址空间与物理存储单元组地址空间是一一映射的。在一个例子中,当主机以存储单元组为单位访问存储设备时,主机提供的逻辑存储单元组地址空间与以存储设备上的物理存储单元组地址空间显然具有一一映射关系。在另一个例子中,当主机以存储块、存储页或扇区作为最小单位访问存储设备时,逻辑上连续的多个存储块、存储页或扇区被组织为具有同存储单元组相同的尺寸,从而形成以存储单元组作为单位的逻辑存储单元组地址,从而使得逻辑存储单元组地址空间与以存储设备上的物理存储单元组地址空间具有一一映射关系。
在步骤980,接收命令。在一个例子中,命令是来自主机的用于访问存储设备的命令,在命令中携带或以其他方式指示用于访问存储设备的逻辑存储单元组地址或者可转换为逻辑单元组地址的LBA。而在另一例子中,命令源于需要将从存储设备中读出的数据提供给主机,在命令中携带或指示所读出数据的物理存储单元组地址。在依然另一个例子中,命令源于存储设备的闪存芯片出现错误,在命令中携带或指示出现错误的位置的物理存储单元组地址。这些命令的具体含义并非意在限制本发明的保护范围,而是说明存在多种形式和/或用途的命令,需要对其中的物理存储单元组地址或逻辑存储单元组地址进行映射。
在步骤982,判断要进行的地址映射的方向,是从逻辑存储单元组地址到物理存储单元组地址的映射,还是从物理存储单元组地址到逻辑存储单元组地址的映射。可以基于命令的形态和/或用途进行判断,也可以基于命令中的特定结构或编码部分进行判断。
如果要将物理存储单元组地址映射到逻辑存储单元组地址,例如,命令源于需要将从存储设备中读出的数据提供给主机,那么,进行到步骤984,基于命令中携带或者由命令所指示的物理存储单元组地址得到逻辑存储单元组地址。在一个例子中,可通过如图8C-图8F所提供的查找表将物理存储单元组地址映射为逻辑存储单元组地址。在步骤986,根据得到的逻辑存储单元组地址进行操作。例如,在命令源于需要将从存储设备中读出的数据提供给主机的情况下,将逻辑存储单元组地址或LBA连同读出的数据发送给主机。在另一个例子中,在命令源于存储设备的闪存芯片出现错误的情况下,将逻辑存储单元组地址或LBA和/或错误信息提供给主机。
如果要将逻辑存储单元组地址映射到物理地址,例如,命令是来自主机的用于访问存储设备的命令,那么,进行到步骤988,基于命令中携带或者由命令所指示的逻辑存储单元组地址或LBA得到物理存储单元组地址。可通过如图8C-图8F所提供的查找表将逻辑存储单元组地址映射为物理存储单元组地址。在步骤989,根据得到的物理存储单元组地址访问闪存芯片。例如,根据来自主机的命令,用得到的物理存储单元组地址将数据写入闪存芯片,或者用得到的物理存储单元组地址从闪存芯片中读出数据。
在步骤992,检测电路母板400上的逻辑存储单元组数量是否发生变化。逻辑存储单元组数量的变化,源于例如向电路母板400插入电路子板410,从电路母板400移除电路子板410等。若逻辑存储单元组的数量发生变化,则转向步骤990,重新获取逻辑存储单元组数量,并建立逻辑存储单元组地址与物理存储单元组地址之间的映射表。若逻辑存储单元组数量未发生变化,则无需改变逻辑存储单元组地址与物理存储单元组地址之间的映射表,并进行到步骤980,以等待对下一命令的接收。
在上面的描述中,结合图4、图5A-5D、图6而描述了LBA与PBA之间的地址映射,以及结合图8A-8F、图9而描述了逻辑存储单元组与物理存储单元组之间的地址映射。在可选的实施例中,还可以以平面(Plane)为单位在逻辑地址与物理地址之间进行一一映射。
图10A-10D是根据本发明的实施例的建立逻辑地址与物理地址的映射的流程图。当电路母板400上的电路子板发生变化时,需要重新建立逻辑地址与物理地址之间的映射。
参看图10A,电路母板包括电路子板410与电路子板420。在步骤1000,获取电路子板410上的逻辑单元的数量。在一个例子中,在电路子板410的接口中,提供3根引线,每根引线通过其传输的电信号指示电路子板410上的配置。例如,电路子板410上包括第一通道、第二通道与第三通道,其中每个通道上布置有1个闪存芯片或是2个闪存芯片。所属领域技术人员也可以意识到其他指示电路子板410的配置的方式。或者该3根引线可指示每个通道上布置的逻辑单元的数量,例如第一通道上布置有8个逻辑单元,第二通道上布置有8个逻辑单元,而第三通道上布置有16个逻辑单元。在依然一个例子中,电路子板410的配置信息指示电路子板410上包括3个通道,3个通道均包括16个逻辑单元的情况下,可以得到电路母板400上布置的逻辑单元的数量为48个。
在步骤1002,获取电路子板420上的逻辑单元的数量。在一个例子中,电路母板400包括电路子板410与420,电路子板410上包括24个逻辑单元,而电路子板420上包括48个逻辑单元,从而通过对每个电路子板的逻辑单元数量求和,可以得到电路母板400上布置的逻辑单元的数量为72个,并且可以得到这些逻辑单元在电路子板410与420上的分布。
在步骤1004,计算逻辑地址范围。根据已经得到的逻辑单元的数量,可以确定电路母板400的以逻辑单元为最小单位的存储空间的上限,将该上限作为电路母板400或者存储设备提供给主机的逻辑地址空间的上限。当电路母板400包括72个逻辑单元时,对应的以逻辑单元为最小单位的逻辑地址范围是0-71;当电路母板400包括48个逻辑单元时,对应的以逻辑单元为最小单位的逻辑地址范围是0-47。
在步骤1006,将计算得到的逻辑地址范围提供给主机,使主机知晓电路母板400或者存储设备所具有的存储容量。在一个例子中,将计算得到的逻辑地址范围存储特定的存储位置——例如寄存器——使得主机可通过对该寄存器的访问,而获知存储设备所具有的存储容量。当存储设备包括72个逻辑单元时,向主机告知存储设备的以逻辑单元为最小单位的逻辑地址范围是0-71。在一个例子中,向主机提供的逻辑地址范围以其他单位作为最小单位,例如,以存储块、存储页、扇区或者存储单元组作为最小单位。存储块、存储页或扇区的数量可以是逻辑单元数量的倍数,而每个存储单元组可包括N个逻辑单元。
在步骤1008,建立逻辑地址与物理地址间的双向映射表。在根据本发明的实施例中,逻辑地址空间与物理地址空间是一一映射的。在一个例子中,当逻辑地址空间以逻辑单元作为最小单位时,逻辑地址空间与以闪存芯片的逻辑单元为最小单位的物理地址空间显然具有一一映射关系。在另一个例子中,当主机以存储块、存储页或扇区作为最小单位访问存储设备时,逻辑上连续的多个存储块、存储页或扇区被组织为具有同逻辑单元相同的尺寸,从而形成以逻辑单元作为最小单位的逻辑地址,从而使得逻辑地址空间与以闪存芯片的逻辑单元为最小单位的物理地址空间显然具有一一映射关系。在依然另一个例子中,当主机以存储单元组为最小单位访问存储设备时,建立逻辑存储单元组与物理存储单元组之间的一一映射关系。在另一个例子中,向主机提供以存储块为最小单位的逻辑地址范围,并且建立建立逻辑存储单元组与物理存储单元组之间的一一映射关系,而存储设备将来自主机的以存储块为最小单位的逻辑地址转换为逻辑存储单元组地址。
参看图10B,当向电路母板400上添加第三电路子板(例如电路子板430)后,重新建立逻辑地址与物理地址之间的映射。在步骤1010,向电路母板400插入电路子板430。在步骤1012,获取电路子板430上的逻辑单元的数量。在一个例子中,在电路子板430的接口中,提供3根引线,每根引线通过其传输的电信号指示电路子板410上的配置。
在步骤1014,计算逻辑地址范围。对已经得到的各个电路子板(电路子板410、420与430)的逻辑单元的数量求和,可以确定电路母板400的以逻辑单元为最小单位的存储空间的上限,将该上限作为电路母板400或者存储设备提供给主机的逻辑地址空间的上限。当电路母板400包括72个逻辑单元时,对应的以逻辑单元为最小单位的逻辑地址范围是0-71;当电路母板400包括48个逻辑单元时,对应的以逻辑单元为最小单位的逻辑地址范围是0-47。
在步骤1016,将计算得到的逻辑地址范围提供给主机,使主机知晓电路母板400或者存储设备所具有的存储容量。
在步骤1018,建立逻辑地址与物理地址间的双向映射表。在根据本发明的实施例中,逻辑地址空间与物理地址空间是一一映射的。在一个例子中,当逻辑地址空间以逻辑单元作为最小单位时,逻辑地址空间与以闪存芯片的逻辑单元为最小单位的物理地址空间显然具有一一映射关系。在另一个例子中,当主机以存储块、存储页或扇区作为最小单位访问存储设备时,逻辑上连续的多个存储块、存储页或扇区被组织为具有同逻辑单元相同的尺寸,从而形成以逻辑单元作为最小单位的逻辑地址,从而使得逻辑地址空间与以闪存芯片的逻辑单元为最小单位的物理地址空间显然具有一一映射关系。在依然另一个例子中,当主机以存储单元组为最小单位访问存储设备时,建立逻辑存储单元组与物理存储单元组之间的一一映射关系。在另一个例子中,向主机提供以存储块为最小单位的逻辑地址范围,并且建立建立逻辑存储单元组与物理存储单元组之间的一一映射关系,而存储设备将来自主机的以存储块为最小单位的逻辑地址转换为逻辑存储单元组地址。
参看图10C,当替换了电路母板400的第一电路子板(例如电路子板410)和/或第二电路子板(例如电路子板420)后,重新建立逻辑地址与物理地址之间的映射。在步骤1020,更换电路母板400上的电路子板410。在步骤1022,获取电路子板410上的逻辑单元的数量。在步骤1024,获取电路子板420上的逻辑单元的数量。
在步骤1026,计算逻辑地址范围。对已经得到的各个电路子板(电路子板410与420)的逻辑单元的数量求和,可以确定电路母板400的以逻辑单元为最小单位的存储空间的上限,将该上限作为电路母板400或者存储设备提供给主机的逻辑地址空间的上限。
在步骤1028,将计算得到的逻辑地址范围提供给主机,使主机知晓电路母板400或者存储设备所具有的存储容量。
在步骤1029,建立逻辑地址与物理地址间的双向映射表。在根据本发明的实施例中,逻辑地址空间与物理地址空间是一一映射的。
参看图10D,当从电路母板400移除第一电路子板(例如电路子板410)后,重新建立逻辑地址与物理地址之间的映射。在步骤1030,移除电路母板400上的电路子板410。在步骤1032,获取电路子板420上的逻辑单元的数量。在步骤1034,计算逻辑地址范围。对电路母板400上的电路子板(电路子板410)的逻辑单元的数量求和,可以确定电路母板400的以逻辑单元为最小单位的存储空间的上限,将该上限作为电路母板400或者存储设备提供给主机的逻辑地址空间的上限。在步骤1036,将计算得到的逻辑地址范围提供给主机,使主机知晓电路母板400或者存储设备所具有的存储容量。在步骤1038,建立逻辑地址与物理地址间的双向映射表。在根据本发明的实施例中,逻辑地址空间与物理地址空间是一一映射的。
图11是根据本发明实施例的存储设备的原理框图。存储设备的控制电路660耦合到电路子板410、420。电路子板410、420各自通过专用总线耦合到控制电路660。存储设备中还可以包括更多的电路子板。控制电路660还通过主机接口耦合到主机710。控制电路660还包括处理器728、逻辑地址到物理地址映射表电路732、物理地址到逻辑地址映射表电路734以及闪存接口电路730。
处理器728获取电路子板410、420的配置。具体地,处理器728获得电路子板410、420的每个的逻辑单元的数量,并计算出存储设备上的所有电路子板410、420所具有的逻辑单元的总量。进而,处理器728计算出存储设备向主机710呈现的以逻辑单元为最小单位的逻辑地址的范围。处理器728还建立逻辑地址与物理地址间的双向映射表,并基于逻辑地址到物理地址的映射表而初始化逻辑地址到物理地址映射表电路732,以及基于物理地址到逻辑地址的映射表而初始化物理地址到逻辑地址映射表电路734。逻辑地址到物理地址映射表电路732以及物理地址到逻辑地址映射表电路734可以由查找表电路实现,也可以由FPGA内部或外部的RAM(Random Access Memory,随机访问存储器)实现。闪存接口电路730用于访问电路子板410与420上的多个闪存芯片。虽然在图11中示出了单一的闪存接口电路730,可以理解的是,可以提供多个闪存接口电路730,以对多个电路子板410、420及其上的多个闪存芯片进行并行访问。
在控制电路660中还包括检测电路(未示出),用于检测电路子板410、420的配置,以获取电路子板410、420的每个所提供的逻辑单元的数量。并使处理器728可访问检测电路所获取的电路子板410、420的每个的逻辑单元的数量。检测电路还检测对电路子板410、420的变化(插入、移除等),并在检测到电路子板410、420发生变化时,重新获取电路子板410、420的每个所提供的逻辑单元的数量。并且,响应于检测电路检测到电路子板410、420发生变化,处理器728重新建立逻辑地址到物理地址映射表732与物理地址到逻辑地址映射表734。
参看图6或图9中提供的流程图,当需要将逻辑地址转换为物理地址时,处理器728将从命令中提取的或者以其他方式获得的逻辑地址发送给逻辑地址到物理地址映射表电路732。逻辑地址到物理地址映射表电路732接收逻辑地址作为输入,并产生与其对应的物理地址作为输出,并将输出的物理地址发送给闪存接口电路730。闪存接口电路730基于该物理地址,访问电路子板410和/或420上的闪存芯片。当需要将来自闪存接口电路730的物理地址转换为逻辑地址时,闪存接口电路730将逻辑地址发送给物理地址到逻辑地址映射表电路734。物理地址到逻辑地址映射表电路734接收物理地址作为输入,并产生与之对应的逻辑地址作为输出,并将该逻辑地址发送给处理器728。继而,例如,在需要将从存储设备中读出的数据提供给主机的情况下,将逻辑地址连同读出的数据发送给主机。在另一个例子中,在存储设备的闪存芯片出现错误的情况下,将逻辑地址和/或错误信息提供给主机。
在另一个实施例中,检测电路检测电路子板410与420提供的存储单元组的数量。处理器728用逻辑存储单元组地址到物理存储单元组地址之间的映射关系初始化逻辑地址到物理地址映射表电路732以及物理地址到逻辑地址映射表电路734。处理器732将逻辑存储单元组地址发送给逻辑地址到物理地址映射表电路732,逻辑地址到物理地址映射表电路732生成相应的物理存储单元组地址,并发送给闪存接口电路730,使得闪存接口电路730访问电路子板410与420上的闪存芯片。而闪存接口电路730将物理存储单元组地址发送给物理地址到逻辑地址映射表电路734,物理地址到逻辑地址映射表电路734将映射得到的逻辑存储单元组地址发送给处理器728。
还提供了存储系统。根据本发明实施例的存储系统包括主机710与存储设备400。可将一个或多个存储设备400连接到主机710。在一个例子中,存储设备400通过PCIE接口连接到主机710。还可以用多种其它接口将存储设备400耦合到主机710,多种接口包括但不限于SATA、USB、PCIE、SCSI、IDE、FC等。
已经为了示出和描述的目的而展现了对本发明的描述,并且不旨在以所公开的形式穷尽或限制本发明。对所属领域技术人员,许多调整和变化是显而易见的。
Claims (10)
1.一种存储设备,包括多个存储单元、存储单元接口电路、地址映射电路和处理器,
所述处理器将用于存储设备的逻辑地址发送给所述地址映射电路;
所述地址映射电路将所述逻辑地址映射为用于存储单元的物理地址,并将所述物理地址发送给所述存储单元接口电路;
所述存储单元接口电路基于所述物理地址访问所述存储单元;
所述存储设备还包括检测电路、主机接口、第一电路板;所述多个存储单元布置在所述第一电路板上;所述第一电路板包括多个通道,每个通道上布置有存储单元;
所述检测电路获取所述第一电路板上的存储单元的第一数量;
所述主机接口将基于所述第一数量得到的第一逻辑地址范围发送给主机,其中所述逻辑地址的取值在所述第一逻辑地址范围之内。
2.根据权利要求1所述的存储设备,其中所述地址映射电路是查找表电路。
3.根据权利要求1-2之一所述的存储设备,其中所述存储单元是存储器芯片中的逻辑单元、管芯或平面。
4.根据权利要求3所述的存储设备,其中所述存储单元中包括多个存储块,当所述存储单元中的存储块损坏时,所述地址映射电路的将所述逻辑地址映射为用于存储单元的物理地址的映射关系保持不变。
5.根据权利要求1-2之一所述的存储设备,还包括第二地址映射电路,其中
所述存储单元接口电路将来自存储单元的用于所述存储单元的物理地址发送给所述第二地址映射电路;
所述第二地址映射电路将所述物理地址映射为逻辑地址,并将所述逻辑地址发送给所述处理器。
6.根据权利要求5所述的存储设备,所述存储设备还包括第二电路板;
所述检测电路还获取第二电路板上的存储单元的第二数量;
所述主机接口将基于所述第一数量与所述第二数量得到的第二逻辑地址范围发送给主机,其中所述逻辑地址的取值在所述第二逻辑地址范围之内;以及
所述处理器基于所述第一数量与所述第二数量,建立第二查找表,并用所述第二查找表初始化所述第二地址映射电路,所述第二查找表用于将用于第一电路板或第二电路板上的存储单元的物理地址映射到所述逻辑地址范围内的逻辑地址。
7.根据权利要求3所述的存储设备,还包括第二地址映射电路,其中
所述存储单元接口电路将来自存储单元的用于所述存储单元的物理地址发送给所述第二地址映射电路;
所述第二地址映射电路将所述物理地址映射为逻辑地址,并将所述逻辑地址发送给所述处理器。
8.根据权利要求7所述的存储设备,所述存储设备还包括第二电路板;
所述检测电路还获取第二电路板上的存储单元的第二数量;
所述主机接口将基于所述第一数量与所述第二数量得到的第二逻辑地址范围发送给主机,其中所述逻辑地址的取值在所述第二逻辑地址范围之内;以及
所述处理器基于所述第一数量与所述第二数量,建立第二查找表,并用所述第二查找表初始化所述第二地址映射电路,所述第二查找表用于将用于第一电路板或第二电路板上的存储单元的物理地址映射到所述逻辑地址范围内的逻辑地址。
9.根据权利要求4所述的存储设备,还包括第二地址映射电路,其中
所述存储单元接口电路将来自存储单元的用于所述存储单元的物理地址发送给所述第二地址映射电路;
所述第二地址映射电路将所述物理地址映射为逻辑地址,并将所述逻辑地址发送给所述处理器。
10.根据权利要求9所述的存储设备,所述存储设备还包括第二电路板;
所述检测电路还获取第二电路板上的存储单元的第二数量;
所述主机接口将基于所述第一数量与所述第二数量得到的第二逻辑地址范围发送给主机,其中所述逻辑地址的取值在所述第二逻辑地址范围之内;以及
所述处理器基于所述第一数量与所述第二数量,建立第二查找表,并用所述第二查找表初始化所述第二地址映射电路,所述第二查找表用于将用于第一电路板或第二电路板上的存储单元的物理地址映射到所述逻辑地址范围内的逻辑地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310003901.1A CN103914390B (zh) | 2013-01-06 | 2013-01-06 | 存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310003901.1A CN103914390B (zh) | 2013-01-06 | 2013-01-06 | 存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103914390A CN103914390A (zh) | 2014-07-09 |
CN103914390B true CN103914390B (zh) | 2016-08-17 |
Family
ID=51040091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310003901.1A Active CN103914390B (zh) | 2013-01-06 | 2013-01-06 | 存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103914390B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427200B1 (en) * | 2000-09-27 | 2002-07-30 | Institute For Information Industry | Multiple changeable addressing mapping circuit |
CN1437728A (zh) * | 1999-12-27 | 2003-08-20 | 格里高里·V·朱德诺夫斯基 | 多组、容错、高性能存储器寻址系统及其方法 |
CN101097551A (zh) * | 2006-08-23 | 2008-01-02 | 晶天电子(深圳)有限公司 | 带有闪存控制器的电子数据闪存卡 |
CN203241990U (zh) * | 2013-01-06 | 2013-10-16 | 北京忆恒创源科技有限公司 | 存储设备 |
-
2013
- 2013-01-06 CN CN201310003901.1A patent/CN103914390B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1437728A (zh) * | 1999-12-27 | 2003-08-20 | 格里高里·V·朱德诺夫斯基 | 多组、容错、高性能存储器寻址系统及其方法 |
US6427200B1 (en) * | 2000-09-27 | 2002-07-30 | Institute For Information Industry | Multiple changeable addressing mapping circuit |
CN101097551A (zh) * | 2006-08-23 | 2008-01-02 | 晶天电子(深圳)有限公司 | 带有闪存控制器的电子数据闪存卡 |
CN203241990U (zh) * | 2013-01-06 | 2013-10-16 | 北京忆恒创源科技有限公司 | 存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103914390A (zh) | 2014-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103914395B (zh) | 用于存储设备的地址映射方法 | |
CN102830942B (zh) | 固态硬盘磁盘阵列映射的方法及其固态硬盘 | |
CN107111456B (zh) | 用于生成与主机命令相关联的提示信息的系统和方法 | |
US8848445B2 (en) | System and method for minimizing write amplification while maintaining sequential performance using logical group striping in a multi-bank system | |
CN107066202B (zh) | 具有多个固态盘的存储设备 | |
CN103218270B (zh) | 具有多个固态盘的计算机 | |
JP2017079050A (ja) | 保護されたデータとは別個のパリティデータの記憶 | |
US11010079B2 (en) | Concept for storing file system metadata within solid-stage storage devices | |
US20160210241A1 (en) | Reducing a size of a logical to physical data address translation table | |
CN113467705B (zh) | 数据组块的增强读取 | |
CN103198020B (zh) | 一种提高闪存使用寿命的方法 | |
CN103150261A (zh) | 用于同时访问多个固态盘的方法与装置 | |
CN104331252A (zh) | 异构nand固态硬盘结构及其数据读取管理方法 | |
CN103914396B (zh) | 用于存储设备的地址映射方法 | |
CN104111801A (zh) | 数据存取系统、数据存取装置及数据存取控制器 | |
CN105518612A (zh) | 一种监控数据的写入方法及装置 | |
US8996805B2 (en) | Shared cache module and method thereof | |
CN203241990U (zh) | 存储设备 | |
CN103645995B (zh) | 写数据的方法及装置 | |
CN103914390B (zh) | 存储设备 | |
US10025664B2 (en) | Selective buffer protection | |
CN203191967U (zh) | 计算机系统 | |
CN103914401B (zh) | 具有多处理器的存储设备 | |
CN203191968U (zh) | 具有多个固态盘的存储设备 | |
CN103914409B (zh) | 用于具有多处理器的存储设备的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 312, building D, entrepreneurship Park, No. 2, Shangdi Information Road, Haidian District, Beijing 100085 Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd. |
|
CP03 | Change of name, title or address |