CN103914401B - 具有多处理器的存储设备 - Google Patents

具有多处理器的存储设备 Download PDF

Info

Publication number
CN103914401B
CN103914401B CN201310003617.4A CN201310003617A CN103914401B CN 103914401 B CN103914401 B CN 103914401B CN 201310003617 A CN201310003617 A CN 201310003617A CN 103914401 B CN103914401 B CN 103914401B
Authority
CN
China
Prior art keywords
memory cell
cell group
storage device
circuit
address
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
Application number
CN201310003617.4A
Other languages
English (en)
Other versions
CN103914401A (zh
Inventor
季茂林
王祎磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201310003617.4A priority Critical patent/CN103914401B/zh
Publication of CN103914401A publication Critical patent/CN103914401A/zh
Application granted granted Critical
Publication of CN103914401B publication Critical patent/CN103914401B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

提供了一种数据存储设备,包括主机接口,多个存储器芯片;每个存储器芯片中包括第一多个存储单元,由第二多个存储单元组成存储单元组,每个存储单元组内的存储单元可并行访问;所述数据存储设备还包括存储单元组地址生成电路,用于根据从主机接口接收的第一地址生成第一存储单元组地址,其中所述第一存储单元组地址用于访问第一存储单元组。

Description

具有多处理器的存储设备
技术领域
本发明涉及固态存储设备(Solid Storage Device,SSD),更具体地,本发明涉及存储设备的多个处理器的调度及地址生成。
背景技术
同机械式硬盘相类似,固态存储设备(SSD)也是用于计算机系统的大容量、非易失性存储设备。固态存储设备一般以闪存(Flash)作为存储介质。高性能的固态存储设备被用于高性能计算机。高性能计算机通常具有多个中央处理器(CPU,Central Process Unit),而每个CPU可包括多个CPU核。
随着固态存储设备的存储容量增加,固态存储设备中所包括的闪存芯片的数量和/或存储容量也随之增加,闪存芯片中存在缺陷的概率也随之增加,以及在系统访问闪存芯片的过程中出现错误的概率也在增加。参看图1,在公开号为US20100268985A1的美国专利申请中,公开了在固态存储系统中的数据恢复方法和设备。图1中,存储设备包括存储器目标(target)组510-513以及520。存储器目标是NAND闪存封装内的共享芯片使能(CE,ChipEnable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic Unit Number)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。
图1中,数据寄存器(0-n)(501-504)分别耦合到存储器目标组510-513。数据寄存器R500耦合到存储器目标组520。存储器目标组520存储冗余数据。来自存储器目标组510-513以及520的数据通过数据重建电路650执行异或操作,从而在数据存在错误的情况下,可通过数据重建电路650纠正错误。因而,利用RAID(Redundant Array of InexpensiveDisks)技术,提高了固态存储设备的可靠性。
在图2中,公开号为US20080209116A1的美国专利申请公开了具有多处理器的闪存存储设备。存储设备200包括主机接口控制器204。存储设备200还包括多个处理器单元202(1-n)。每个处理器单元具有专用的RAM。专用的RAM用于缓存数据和其他数据管理功能。RAM还包括闪存管理数据(FMD,Flash ManagementData)表,其包括逻辑块地址(LBA,LogicBlock Address)和闪存的状态。处理器单元202(1-n)是低成本处理器。每个处理器单元具有专用的总线205(1-n)耦合到闪存201(1-n)。处理器单元用于处理来自主机的命令。在图2中,处理器单元202(1-n)与闪存201(1-n)是一一对应关系,在其他实施方式中,处理器单元与闪存之间可用其它方式耦合。数据流控制器203通过总线连接到主机接口控制器204,数据流控制器203确定要使用哪个闪存通道,即,要使用哪个处理器单元。数据流 控制器203可顺序处理访问请求,即将第一个请求发送给处理器202(1),将下一个请求发送给处理器202(2)。数据流控制器203也可随机选择处理请求的处理器202(1-n)。在其他实施例中,也可为某一处理器单元分配特定的闪存空间。例如,为处理器202(1)分配用于存储例程数据的闪存部分,而将处理器202(2)分配用于存储备份数据的闪存部分。通过在存储设备中提供多个处理器,提高了存储设备的IO请求处理能力以及扩展性。
然而,对于现有技术中随机或顺序给处理器分配请求的方式,需要每个处理器都处理整个闪存地址空间的访问请求,这将导致大的资源使用开销或冲突。而对于给各个处理器分配特定用途的数据空间的方式,则将导致在系统运行期间,各处理器的利用率不均衡。
发明内容
根据本发明的第一方面,提供了一种存储设备,包括主机接口,多个存储器芯片;每个存储器芯片中包括第一多个存储单元,由第二多个存储单元组成存储单元组,每个存储单元组内的存储单元可并行访问;所述数据存储设备还包括存储单元组地址生成电路,用于根据从主机接口接收的第一地址生成第一存储单元组地址,其中所述第一存储单元组地址用于访问第一存储单元组。
根据本发明的第一方面的存储设备,其中每个存储芯片中的多个存储单元的每个是逻辑单元、管芯或平面。
根据本发明的第一方面的存储设备,其中所述存储单元组地址生成电路将所述第一地址除以数据存储设备中的存储单元组的数量,得到第一商和第一余数,所述第一商作为第一存储单元组地址。
根据本发明的第一方面的存储设备,还包括多个处理器,所述多个处理器中的第一处理器接收所述第一存储单元组地址,并将所述第一存储单元组地址用于对所述第一存储单元组的访问。
根据本发明的第一方面的所述的存储设备,其中将所述第一余数相对于所述多个处理器的数量求模,得到第一模,基于所述第一模选择所述第一处理器。
根据本发明的第一方面的存储设备,其中以轮转方式或者随机方式选择所述第一处理器。
根据本发明的第一方面的存储设备,还包括存储单元组计数电路,用于获取所述数据存储设备中的存储单元的第一数量,并基于所述第一数量确定所述数据存储设备中的存储单元组的数量。
根据本发明的第一方面的存储设备,还包括第一电路板,所述第一电路板上布置有多个存储芯片;其中所述存储单元组计数电路获得所述第一电路板上的存储单元的所述第一数量。
根据本发明的第一方面的存储设备,还包括第一电路板与第二电路板,所述第一电路板上布置有多个存储芯片,所述第二电路板上布置有多个存储芯片;
其中所述存储单元组计数电路获得所述第一电路板与所述第二电路板上的存储单元的所述第一数量。
根据本发明的第一方面的存储设备,其中每个存储单元组包括N个存储单元,其中所述第一数量除以N得到所述数据存储设备中的存储单元组的数量。
根据本发明的第一方面的存储设备,其中所述第一存储单元组的多个存储单元包含于第一存储器芯片内。
根据本发明的第一方面的存储设备,其中所述对所述第一存储单元组的访问包括所述第一存储单元组中的多个或全部存储单元。
根据本发明的第二方面,提供了一种服务器,包括根据本发明的第一方面的存储设备,所述存储设备与所述服务器通过所述主机接口相耦合。
根据本发明的第三方面,提供了一种用于存储设备的方法,所述存储设备包括多个主机接口以及多个存储器芯片,所述方法包括:接收来自主机的第一地址;基于所述第一地址生成第一存储单元组地址,其中所述第一存储单元组地址用于访问第一存储单元组,以及其中每个存储器芯片中包括第一多个存储单元,由第二多个存储单元组成存储单元组,每个存储单元组内的存储单元可并行访问。
根据本发明的第三方面的方法,其中每个存储芯片中的多个存储单元的每个是管芯、逻辑单元或平面。
根据本发明的第三方面的方法,其中生成所述第一存储单元组地址是通过将所述第一地址除以数据存储设备中的存储单元组的数量,得到第一商和第一余数,所述第一商作为第一存储单元组地址。
根据本发明的第三方面的方法,其中所述存储设备还包括多个处理器,所述方法还包括:由所述多个处理器中的第一处理器接收所述第一存储单元组地址,并将所述第一存储单元组地址用于对所述第一存储单元组的访问。
根据本发明的第三方面的方法,其中将所述第一余数相对于所述多个处理器的数量求模,得到第一模,基于所述第一模选择所述第一处理器。
根据本发明的第三方面的方法,其中以轮转方式或者随机方式选择所述第一处理器。
根据本发明的第三方面的方法,还包括获取所述数据存储设备中的存储单元的第一数量,并基于所述第一数量确定所述数据存储设备中的存储单元组的数量。
根据本发明的第三方面的方法,其中所述存储设备还包括第一电路板,所述第一电路板上布置有多个存储芯片;以及其中获取所述数据存储设备中的存储单元的第一数量为获得所述第一电路板上的存储单元的所述第一数量。
根据本发明的第三方面的方法,其中所述存储设备还包括第一电路板与第二电路板,所述第一电路板上布置有多个存储芯片,所述第二电路板上布置有多个存储芯片;以及其中获取所述数据存储设备中的存储单元的第一数量为获得所述第一电路板与所述第二电路板上的存储单元的所述第一数量。
根据本发明的第三方面的方法,其中每个存储单元组包括N个存储单元,其中所述第一数量除以N得到所述数据存储设备中的存储单元组的数量。
根据本发明的第三方面的方法,其中所述第一存储单元组的多个存储单元包含于第一存储器芯片内。
根据本发明的第三方面的方法的方法,其中所述对所述第一存储单元组的访问包括所述第一存储单元组中的多个或全部存储单元。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是根据现有技术的存储设备的结构框图;
图2是根据现有技术的另一存储设备的结构框图;
图3是根据本发明的实施例的存储设备的正视图;
图4A-4E是根据本发明的实施例的存储设备的电路子板的闪存芯片与控制电路的连接方式的原理图;
图5是示出了根据本发明的实施例的存储设备的存储单元的组织方式的原理图;
图6是示出了实施本发明的实施例的地址映射关系的图;
图7是示出了实施本发明的实施例的存储单元组地址与处理器的映射关系的图;
图8是根据本发明存储设备的原理框图;
图9是根据本发明的实施例的存储系统的框图;以及
图10A、10B是根据本发明的实施例的处理方法的流程图。
具体实施方式
图3是根据本发明的实施例的存储设备的正视图。图3所示的存储设备包括电路母板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向存储设备提供存储容量。虽然在图3中示出了在电路子板410-440的每个上放置三块闪存芯片,所属领域技术人员将意识到也可以在电路子板410-440上放置其他数量的闪存芯片,例如,在电路子板410上与闪存芯片411-413所在的表面相对的表面上放置闪存芯片。所属领域技术人员还将意识到可将不同数量的电路子板连接到电路母板400。
虽然在图3中示出了包括闪存芯片的具有PCIE接口的存储设备,但所属领域技术人员将意识到,其仅是一种举例,本发明可适用于具有其他功能的多种电子设备,并且可通过多种接口方式耦合到计算机,多种接口包括但不限于SATA(SerialAdvanced TechnologyAttachment,串行高级技术附件)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,快速外围组件互连)、SCSI(SmallComputer System Interface,小型计算机系统接口)、IDE(IntegratedDriveElectronics,集成驱动器电子)等。并且,本发明也适用于包括闪存以外的其他类型的存储芯片,例如,相变存储器、电阻存储器、铁电存储器等。
在电路母板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 SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制电路660也可以包括处理器或者控制器。控制电路660中可包括一个、两个或多个处理器核,每个处理器核用于控制或访问多个电路子卡的部分或全部。每个处理器核也可用于访问或控制电路子卡上的多个闪存芯片的部分或全部。
如图3所示的电路母板400上还布置有连接器628和629。通过连接器628与629还可以将分别将电路子板连接到电路母板400。从而,在如图3所示的具有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所产生的热量传递到存储设备外部。
图4A-4E是根据本发明的实施例的存储设备的电路子板410的闪存芯片与控制电路660的连接方式的原理图。电路子板420-440可通过同样方式连接到控制电路660。为了促进多个闪存芯片的操作的并行性,以及节约控制多个闪存芯片所需要的控制电路660的IO资源,将电路子板410上的多个闪存芯片布置在多个通道内。每个通道内的布置有一个或多个闪存芯片,每个通道内的多个闪存芯片共用数据和/或控制总线,并且为了能够访问各个闪存芯片,每个通道内的多个闪存芯片的芯片使能(Chip Enable,CE)端口,可由控制电路660单独地控制。
参看图4A,电路子板410上布置有3个通道。闪存芯片411、414包括在第一通道中,并通过共用的总线490耦合到控制电路660。控制电路660可以独立地控制闪存芯片411、414的CE端口。闪存芯片412、415包括在第二通道中,并通过共用的总线492耦合到控制电路660。控制电路660可以独立地控制闪存芯片412、415的CE端口。闪存芯片413、416包括在第三通道中,并通过共用的总线494耦合到控制电路660。控制电路660可以独立地控制闪存芯片413、416的CE端口。
可选地,每个通道上可以有其他数量的闪存芯片。参看图4B,闪存芯片411、412与413包括在第一通道中,并通过共用的总线490耦合到控制电路660。控制电路660可以独立地控制闪存芯片411、412与413的CE端口。闪存芯片414、415与416包括在第二通道中,并通过共用的总线494耦合到控制电路660。控制电路660可以独立地控制闪存芯片414、415与416的CE端口。
依然可选地,每个通道上可以具有不同数量的闪存芯片。参看图4C,闪存芯片411、414包括在第一通道中,并通过共用的总线490耦合到控制电路660。控制电路660可以独立地控制闪存芯片411、414的CE端口。闪存芯片412、415包括在第二通道中,并通过共用的总线492耦合到控制电路660。控制电路660可以独立地控制闪存芯片412、415的CE端口。闪存芯片413包括在第三通道中,并通过总线494耦合到控制电路660。控制电路660可以控制闪存芯片413的CE端口。注意到在图4C中,没有提供闪存芯片416。同样注意到,在图4C中,第一通道与第二通道中,布置有2个闪存芯片,而在第三通道中,仅布置有1个闪存芯片,即,每个通道上具有不同数量的闪存芯片。需要指出的是,虽然在每个通道上具有不同数量的闪存芯片,但每个通道上的存储容量可以相同也可以不同。当图4C中的闪存芯片411-415具有相同的存储容量时,第三通道上的存储容量是第一通道的存储容量的一半。也可以提供闪存芯片413,使得其存储容量是闪存芯片411、412、414或415的二倍,从而使得每个通道上的存储容量相同。
依然需要指出的是,虽然在图4C的实施例中,不包括闪存芯片416,但是,在与之相对应的电路子板中,优选地,提供与包括6个闪存芯片的电路子板相同的接口布置。即,虽然包括6个闪存芯片的电路子板,不需要在接口中提供耦合到闪存芯片416的CE端口的引线,但为多种不同的电路子板提供相同的接口布置是有利的,这将允许在电路母板400的连接器上耦合不同的电路子板,从而提高存储设备的灵活性,并简化了存储设备400的安装过程,因为具有特定存储容量或闪存芯 片数量的电路子板410不限于安装在特定的母板连接器上。
在一个实施例中,在电路子板410的接口中,提供3根引线,每根引线通过其传输的电信号指示第一通道、第二通道与第三通道中的一个通道上布置有1个闪存芯片或是2个闪存芯片。所属领域技术人员也可以意识到其他指示电路子板410的配置的方式。例如,在电路子板410的接口中,提供2根引线,其可以传递“00”、“01”、“10”以及“11”四种不同的状态,每个状态指示电路子板410的一种特定配置。接口引线所指示的,还可以是电路子板410上的存储芯片的数量,或者电路子板410上提供的存储容量,或者电路子板410上所包括的通道数量与每个通道内的闪存芯片配置(数量和/或存储容量)。
参看图4D,闪存芯片411、414包括在第一通道中,并通过共用的总线490耦合到控制电路660。控制电路660可以独立地控制闪存芯片411、414的CE端口。闪存芯片412包括在第二通道中,并通过总线492耦合到控制电路660。控制电路660可以控制闪存芯片412的CE端口。闪存芯片413包括在第三通道中,并通过总线494耦合到控制电路660。控制电路660可以控制闪存芯片413的CE端口。
参看图4E,闪存芯片411包括在第一通道中,并通过总线490耦合到控制电路660。控制电路660可以独立地控制闪存芯片411的CE端口。闪存芯片412包括在第二通道中,并通过总线492耦合到控制电路660。控制电路660可以独立地控制闪存芯片412的CE端口。闪存芯片413包括在第三通道中,并通过总线494耦合到控制电路660。控制电路660可以独立地控制闪存芯片413的CE端口。
图5是示出了根据本发明的实施例的存储设备的存储单元的组织方式的原理图。将存储设备中的逻辑单元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,因而需要将来自主机的线性地址(逻辑地址)映射到各个存储单元组,即将逻辑地址转换为存储单元组地址。图6是示出了根据本发明的实施例的地址映射关系的原理图。在所公开的实施例中,存储设备400包括m个存储单元组,每个存储单元组包括n个数据块。存储设备400向使用该存储设备400的主机呈现出具有0~(nm-1)(以4KB/8KB/16KB数 据块为单位)地址范围的逻辑地址空间。逻辑单元可包括多个存储块,每个存储块可包括多个页,典型地,一页为4KB或8KB或16KB大小。为了清楚,这里不关心逻辑单元内部的数据组织方式。在一个实施例中,逻辑地址为LBA(Logic BlockAddress,逻辑块地址)
表540展示出存储设备400向主机呈现出具有以数据块为单位的0~(nm-1)的地址范围。而表550则展示出与表540的每个逻辑地址相对应的,体现为存储单元组地址与存储单元组内偏移的地址形式。表550中,横向位置对应于各个存储单元组,而纵向位置对应于存储单元组内的各个存储单元组内偏移。当每个存储单元组包括n个数据块时,表550的纵向位置包括n个不同的存储单元组内偏移。例如,对于表540中的逻辑地址0,映射为表550中的0号存储单元组与0号存储单元组内偏移。而表540中的逻辑地址1,映射为表550中的1号存储单元组与0号存储单元组内偏移。表540中的逻辑地址m,映射为表550中的0号存储单元组与1号存储单元组内偏移。表540中的逻辑地址nm-1,映射为表550中的m-1号存储单元组与n-1号存储单元组内偏移。表540与表550的映射关系可以表示为,将逻辑地址除以存储设备400中存储单元组的个数,所得的余数作为存储单元组地址,而所得的商作为存储单元组内偏移。存储单元组地址对应于存储设备400的电路子板(410-440)的形成一个存储单元组的特定闪存芯片的特定多个逻辑单元(或管芯)。而存储单元组内偏移指示了在存储单元组内的线性地址空间。
可以使用除法器将表540中的逻辑地址映射为表550中的存储单元组地址与存储单元组内偏移。也可使用查找表的方式实现映射。并且当使用查找表时,可以在逻辑地址,到存储单元组地址与存储单元组内偏移的映射中,采用其他的映射关系。可以在存储设备400启动或者存储设备400的配置发生改变时通过对电路子板(410-440)的配置的枚举而发现存储单元组的数量以及存储单元组内的用于存储用户数据的逻辑单元的数量确定存储设备400向主机呈现的逻辑地址空间的大小,并建立逻辑地址到存储单元组地址与存储单元组内偏移的映射关系。
在本发明的实施例中,将逻辑单元组织为存储单元组,并且以存储单元组为单元存储用户数据以及冗余数据,而控制电路660使用存储单元组地址与存储单元组内偏移访问相应的存储单元组。在一个实施例中,控制电路660包括两个处理器。将对存储单元组的访问请求以近似相等的概率分配给两个处理器以对存储单元组进行访问是有利的。以及分配给两个处理器的存储单元组相互独立是有利的,这样可以减少资源使用开销或冲突。所属领域技术人员将意识到,控制电路660可包括其他数量的处理器,将对存储单元组的访问请求以近似相等的概率分配给其他数量的处理器以对存储单元组进行访问也是有利的。
图7是示出了实施本发明的实施例的存储单元组地址与处理器的映射关系的图。作为举例,图7的实施例中控制电路660包括两个处理器,其处理器编号分别为0和1。在图7的表560的行562,给出了编号为0或1的处理器相对于多个存储单元组的分配方式。具体地,将访问存储单元组地址0的请求传送给处理器0进行处理,将访问存储单元组地址1的请求传送给处理器1进行处理,将访问存储单元组地址2的请求传送给处理器0处理,以及将访问存储单元组m-1的请求传送给处理器1处理(这里,m为偶数)。换句话说,将存储单元组地址对处理器的数量求模(或存储单元组地址除以处理器的数量所得的余数),结果作为处理对应该存储单元组地址的请求的处理器的编号。所属领域技术人员将意识到,可以采用其他方式将对应于存储单元组的请求分配给多个处理器之一。例如,将多个请求按顺序或者轮询的方式发送给多个处理器之一,或者将多个请求随机发送给多个处理器之一。
图8是根据本发明的存储设备的原理框图。存储设备的控制电路660耦合到电路子板410、420。电路子板410、420各自通过专用总线耦合到控制电路660。存储设备中还可以包括更多的电路子板。控制电路660还通过主机接口720耦合到主机720。控制电路660还包括处理器726、728,存储单元计数电路724以及存储单元组地址生成电路722。
存储单元地址生成电路724获取电路子板410、420的配置。具体地,存储单元地址生成电路724获得电路子板410、420的每个的逻辑单元的数量,并计算出存储设备上的所有电路子板410、420所具有的逻辑单元的总量,记为S。进而,存储单元计数电路724计算出存储设备向主机710呈现的线性地址(逻辑地址)空间的范围。在一个例子中,每个存储单元组包括N=L+M个逻辑单元,其中L个逻辑单元用于存储用户数据,而M个逻辑单元用于存储冗余数据。那么,在每逻辑单元包含b个数据块的情况下,存储设备向主机710呈现出的线性地址(逻辑地址)空间范围是0~S*L*b/N(以数据块为单位)。存储单元计数电路724还计算出存储设备的存储单元组的数量,例如通过计算S/N,得到存储设备的存储单元组的数量,并将该数量S/N发送给存储单元组地址生成电路722。
当接收到来自主机的访问请求,提取出其中所包括的逻辑地址,将该逻辑地址发送给存储单元组地址生成电路722。存储单元组地址计算电路将该逻辑地址除以存储单元组的数量S/N,所得到的余数Q为存储单元组地址,即该逻辑地址所对应的数据块位于存储单元组地址为Q的存储单元组中。进而,将该逻辑地址除以S/N所得到的商作为存储单元组内偏移,并完成访问请求。存储单元组内偏移指示了存储单元组内的线性地址空间。在一个例子中,通过用于存储单元组的地址映射表,将用于该存储单元组的存储单元组内偏移映射为用于该存储单元组的数据块的物理地址。
在一个实施例中,主机的访问请求的逻辑地址所对应的数据块大小,不同于存储单元组内的数据块大小。例如,来自主机的LBA对应的数据块为4KB,而存储设备的存储单元组的数据块(例如,页)为8KB,那么,存储单元组地址生成电路722将该LBA右移一位,以舍弃该LBA的最低位,再将右移后的LBA除以存储单元组的数量S/N,将结果的余数Q作为存储单元组地址,将结果的商作为存储单元组内偏移。类似地,当LBA对应的数据块为4KB,而存储设备的存储单元组的数据块为16KB时,存储单元组地址生成电路722将该LBA右移二位,再将右移后的LBA除以存储单元组的数量S/N。
存储单元组地址生成电路722将生成的存储单元组地址发送给处理器726或处理器728。在优选的实施例中,将为偶数的存储单元组地址发送给处理器726,而将为奇数的存储单元组地址发送给处理器728。使得处理器726与728分别处理对不同的存储单元组的访问请求,并且,处理器726与728处理访问请求的概率大体上相同。可以有其他方式将访问请求发送给处理器726与728。例如,在计算出的存储单元组地址的最低位为0时,将该存储单元组地址发送给处理器726,而在计算出的存储单元组地址的最低位为1时,将该存储单元组地址发送给处理器728。还可以将存储单元组地址除以处理器的数量,根据所得的余数,将存储单元组地址发送给相应的处理器,例如,在余数为0时,将存储单元组发送给处理器726(0号处理器),而在余数为1时,将存储单元组地址发送给处理器728(1号处理器)。在另一个实施例中,还可以根据访问请求的先后顺序,顺序分配给处理器726或728,或者将存储单元组地址随机分配给处理器726或728。
在另一个实施例中,控制电路410包括三个或更多的处理器。所属领域技术人员将意识到可以采用对存储单元组地址相对于处理器数量求模,并基于所得的余 数,将存储单元组地址发送给与该余数相对应的处理器。也可以采用随机分配或者顺序分配等方式,选择处理访问请求的处理器。
在依然另一个实施例中,不是基于存储单元组地址计算接收该存储单元组地址的处理器,而是基于来自主机接口720的逻辑地址(或LBA)计算接收相应存储单元组地址的处理器。
处理器726与728将接收到的存储单元组地址用于对相应的存储单元组的访问。由于每个存储单元组中包括多个逻辑单元,处理器726和728还计算数据在存储单元组的多个逻辑单元之间的分布。在一个例子中,来自主机接口720的访问请求所对应的数据块大小,不同于在存储单元组的多个逻辑单元中执行一次存/取操作的数据块大小,在此情况下,处理器726与728可将来自主机的多个访问请求所对应的数据块合并,以写入存储单元组,或者将从存储单元组中读出相应数据,将其与访问请求所对应的数据合并,再写入存储单元组。在存储单元组包括N个逻辑单元的情况下,将合并后的数据以容错编码方式写入N个逻辑单元中。在另一个例子中,处理器726与728处理将从存储单元组中读出的数据,从中提取出对应于来自主机接口720的访问请求的数据,并发送给主机710。
图9是根据本发明的实施例的存储系统的框图。根据本发明实施例的存储系统包括主机710与存储设备400。可将一个或多个存储设备400连接到主机710。在一个例子中,存储设备400通过PCIE接口连接到主机710。还可以用多种其它接口将存储设备400耦合到主机710,多种接口包括但不限于SATA、USB、PCIE、SCSI、IDE、FC等。
图10A、10B是根据本发明的实施例的处理方法的流程图。在存储设备运行期间,接收来自主机的访问请求(1010)。存储设备的存储单元组地址生成电路722基于访问请求中的逻辑地址(例如LBA),生成存储单元组地址(1020)。在一个例子中,通过用逻辑地址除以存储设备的存储单元组的数量,将所得的余数作为存储单元组地址。(获取存储单元组数量)还可以采用例如查找表的方式,将逻辑地址映射为存储单元组地址。选择存储设备中的多个处理器之一,将存储单元组地址发送给所选择的处理器(1030)。在一个例子中,基于存储单元组地址对处理器数量求模来选择处理器。在另一个例子中,将对应于访问请求的存储单元组地址顺序或随机地发送给多个处理器之一。在依然另一个例子中,基于访问请求中的逻辑地址对处理器数量求模来选择处理器。接下来,被选择的处理器将接收到的存储单元组地址用于对相应的存储单元组的访问(1040)。
为获得存储设备中存储单元组的数量,在存储设备上电(1050)后,获取存储设备中的存储单元(例如,逻辑单元)的数量(1050)。在一个例子中,控制电路660检测耦合到存储设备的多个电路子板的配置,并得到每个电路子板的存储单元的数量,对各个电路子板的存储单元的数量求和,得到存储设备的存储单元数量。接下来,计算存储设备中的存储单元组的数量(1070)。当每个存储单元组中包括N=M+L个存储单元时,将存储设备中的存储单元的数量S除以N,所得的商为存储设备的存储单元组的数量。以及保存所得到的存储单元组的数量(1080)。可将计算出的存储单元组的数量保存到存储设备的非易失性存储器中,使得存储设备下一次上电后,无需再执行步骤1050到步骤1080。当存储设备的存储单元数量发生变化后(例如,耦合到存储设备的电路子卡发生变化,或者电路子卡上的存储器芯片发生故障),重新执行步骤1050-步骤1080,以获得变化后的存储设备中的存储单元组的数量。
已经为了示出和描述的目的而展现了对本发明的描述,并且不旨在以所公开的形式穷尽或限制本发明。对所属领域技术人员,许多调整和变化是显而易见的。

Claims (5)

1.一种存储设备,包括主机接口、多个存储器芯片以及多个处理器;
每个存储器芯片中包括第一多个逻辑单元,由第二多个逻辑单元组成存储单元组,每个存储单元组内的逻辑单元可并行访问;
所述主机接口用于接收来自主机的访问请求,所述访问请求包括逻辑地址;
所述存储设备还包括存储单元组地址生成电路,用于将从主机接口接收的所述逻辑地址除以存储设备中的存储单元组的数量得到第一商和第一余数,所述第一余数作为第一存储单元组地址,其中所述第一存储单元组地址用于访问第一存储单元组;以及
所述多个处理器中的第一处理器接收所述第一存储单元组地址,并将所述第一存储单元组地址用于对所述第一存储单元组的访问;其中将所述第一余数相对于所述多个处理器的数量求模,得到第一模,基于所述第一模选择第一处理器。
2.根据权利要求1所述的存储设备,还包括存储单元组计数电路,用于获取所述存储设备中的逻辑单元的第一数量,并基于所述第一数量确定所述存储设备中的存储单元组的数量。
3.根据权利要求2所述的存储设备,还包括第一电路板与第二电路板,所述第一电路板上布置有多个存储芯片,所述第二电路板上布置有多个存储芯片;
其中所述存储单元组计数电路获得所述第一电路板与所述第二电路板上的逻辑单元的所述第一数量。
4.根据权利要求1-3之一所述的存储设备,其中所述第一存储单元组的多个逻辑单元包含于第一存储器芯片内。
5.一种服务器,包括如权利要求1-4之一所述的存储设备,所述存储设备与所述服务器通过所述主机接口相耦合。
CN201310003617.4A 2013-01-06 2013-01-06 具有多处理器的存储设备 Active CN103914401B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310003617.4A CN103914401B (zh) 2013-01-06 2013-01-06 具有多处理器的存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310003617.4A CN103914401B (zh) 2013-01-06 2013-01-06 具有多处理器的存储设备

Publications (2)

Publication Number Publication Date
CN103914401A CN103914401A (zh) 2014-07-09
CN103914401B true CN103914401B (zh) 2017-05-10

Family

ID=51040101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310003617.4A Active CN103914401B (zh) 2013-01-06 2013-01-06 具有多处理器的存储设备

Country Status (1)

Country Link
CN (1) CN103914401B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102617801B1 (ko) * 2018-10-24 2023-12-27 에스케이하이닉스 주식회사 메모리 장치 및 그의 리드 동작 방법
CN110209606B (zh) * 2019-04-30 2021-01-22 杭州电子科技大学 一种基于PCIe的多接口存储设备的控制方法
CN110262993B (zh) * 2019-06-11 2022-02-08 浙江华创视讯科技有限公司 输入信息的读取方法及电路、存储介质、电子装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1417687A (zh) * 2001-11-07 2003-05-14 富士通株式会社 存储器件及其内部控制方法
CN1720590A (zh) * 2002-10-28 2006-01-11 桑迪士克股份有限公司 非易失性存储系统中的自动磨损平衡
CN203102262U (zh) * 2013-01-06 2013-07-31 北京忆恒创源科技有限公司 具有多处理器的存储设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5706754B2 (ja) * 2011-05-13 2015-04-22 キヤノン株式会社 データ処理装置及びデータ処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1417687A (zh) * 2001-11-07 2003-05-14 富士通株式会社 存储器件及其内部控制方法
CN1720590A (zh) * 2002-10-28 2006-01-11 桑迪士克股份有限公司 非易失性存储系统中的自动磨损平衡
CN203102262U (zh) * 2013-01-06 2013-07-31 北京忆恒创源科技有限公司 具有多处理器的存储设备

Also Published As

Publication number Publication date
CN103914401A (zh) 2014-07-09

Similar Documents

Publication Publication Date Title
CN106537365B (zh) 用于交错存储器操作的方法和系统
CN102622189B (zh) 存储虚拟化的装置、数据存储方法及系统
CN103218270B (zh) 具有多个固态盘的计算机
CN108874303B (zh) 非易失性存储器命令冲突避免的储存系统和方法
CN106873903B (zh) 数据存储方法及装置
CN103150261B (zh) 用于同时访问多个固态盘的方法与装置
US8949509B2 (en) Mass storage systems and methods using solid-state storage media and ancillary interfaces for direct communication between memory cards
EP3910488A1 (en) Systems, methods, and devices for near data processing
KR20160033643A (ko) 지능형 데이터 배치
US20180356996A1 (en) Storage system having an adaptive workload-based command processing clock
US11797387B2 (en) RAID stripe allocation based on memory device health
CN103176858B (zh) 具有多个固态盘的存储设备
US11157212B2 (en) Virtual controller memory buffer
CN103914401B (zh) 具有多处理器的存储设备
US11126367B2 (en) Storage system and method for determining ecosystem bottlenecks and suggesting improvements
CN103914409B (zh) 用于具有多处理器的存储设备的方法
US8996805B2 (en) Shared cache module and method thereof
CN109597565B (zh) 虚拟Plane管理
CN103914396B (zh) 用于存储设备的地址映射方法
US10264097B2 (en) Method and system for interactive aggregation and visualization of storage system operations
CN203191967U (zh) 计算机系统
CN203102262U (zh) 具有多处理器的存储设备
CN203191968U (zh) 具有多个固态盘的存储设备
CN103440177A (zh) 一种基于numa多物理层分区的存储控制冗余方法
CN114527936A (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
GR01 Patent grant
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