CN105339905A - 具有对大容量固态存储器资源的独立直接访问的多处理器系统 - Google Patents

具有对大容量固态存储器资源的独立直接访问的多处理器系统 Download PDF

Info

Publication number
CN105339905A
CN105339905A CN201480032741.6A CN201480032741A CN105339905A CN 105339905 A CN105339905 A CN 105339905A CN 201480032741 A CN201480032741 A CN 201480032741A CN 105339905 A CN105339905 A CN 105339905A
Authority
CN
China
Prior art keywords
data
state memory
controller
solid
central processing
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.)
Granted
Application number
CN201480032741.6A
Other languages
English (en)
Other versions
CN105339905B (zh
Inventor
F·R·小卡尔森
M·海默斯坦
B·威尔福德
D·亚力
D·R·爱伯森
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.)
EMC Corp
Original Assignee
EMC Corp
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 EMC Corp filed Critical EMC Corp
Publication of CN105339905A publication Critical patent/CN105339905A/zh
Application granted granted Critical
Publication of CN105339905B publication Critical patent/CN105339905B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

系统包括多个中央处理单元,其中每个中央处理单元连接到至少一个其他中央处理单元和到至少10兆兆字节的固态存储器资源中的根路径。每个中央处理单元在不将固态存储器内容交换到主存储器中的情况下直接地访问固态存储器资源。

Description

具有对大容量固态存储器资源的独立直接访问的多处理器系统
相关申请的交叉引用
本申请要求2013年4月9日提交的第61/810,197序列号美国临时专利申请的优先权,该申请的内容通过引用被合并于此。
技术领域
本发明总体上涉及信息处理。更具体地,本发明涉及具有大型和优化的闪速存储器资源的计算系统。
背景技术
随着越来越大量的数据变得可用于分析,商业和政府需要能够针对更快、更准确的决策制定和更高效的操作来开发该数据。
发明内容
系统包括一些中央处理单元,其中每个中央处理单元连接到至少一个其他中央处理单元和到至少10兆兆字节的固态存储器资源中的根路径。每个中央处理单元在不将固态存储器内容交换到主存储器中的情况下直接地访问固态存储器资源。
附图说明
与结合附图所采取的以下详细描述相结合地更全面地理解本发明,在附图中:
图1图示出根据本发明的实施例配置的系统;
图2图示出根据本发明的实施例配置的根模块;
图3图示出根据本发明的实施例所利用的分枝和树体系结构;
图4图示出根据本发明的实施例所利用的分枝体系结构;
图5图示出根据本发明的实施例所利用的流编码和解码技术;
图6图示出可以根据本发明的实施例被利用的现成的组件;
图7图示出根据本发明的实施例所利用的存储器控制器;
图8图示出可以根据本发明的实施例被利用的闪存接口;
图9图示出根据本发明的实施例所利用的优先级FIFO方案;
图10图示出可以根据本发明的实施例被利用的存储器体系结构;
图11图示出根据本发明的实施例所利用的逻辑单元FIFO控制器;
图12图示出根据本发明的实施例配置的逻辑单元控制器;
图13图示出根据本发明的实施例所利用的闪速存储器接口;
图14图示出根据本发明的实施例所利用的数据保护系统;
图15图示出根据本发明的实施例所利用的存储器缓冲器;
图16图示出根据本发明的实施例所利用的根复合体(rootcomplex);
图17图示出根据本发明的实施例所利用的地址映射方案。
贯穿附图的若干视图,相同的附图标记指的是对应的部分。
具体实施方式
计算装置是具有被设计为提供特定计算功能的集成软件的专用硬件设备。计算装置在任何基本方式方面与通用计算机并无不同,但是典型地不被配置为允许顾客改变软件或重新配置硬件。所公开的系统能够运行非常宽范围的应用,并且在这种意义上,可以将所公开的系统看做通用计算机器。它们实施高效地创建非常大的共享存储器的更为经济的体系结构。
所公开的系统开发低成本固态设备,由此提供“FlashAsMemoryTM”。这意味着,固态设备(例如,闪速存储器芯片)具有处理器的存储空间中的地址。因而,处理器能够直接地访问“闪速存储器”中的数据,而不用首先必须将其交换到处理器的主存储器中,在某些实施例中,存储器空间是超大型的,例如,数十兆兆字节到许多千兆字节。因此,使用特殊的设计和技术,如下所述。这些特殊的设计和技术支持系统上的并行操作。
设计和技术包括由硬件和软件两者构成的许多互连组件。每个组件具有完整系统的操作所需要的独特的特性和功能。当被互连时,这些组件创建期望的计算能力。
在图1中给出本发明的实施例的框图。其包括通过存储器速度接口102互连的(有时被称为群集连接)、每个具有许多计算核的若干CPU100。每个CPU具有高速缓存104和局部存储器105——在这种情况下是DRAM或另一种类似类型的存储器。每个CPU100也拥有操作为扩展的固态存储器的局部存储器根108。计算核执行存在于局部存储器105中或通过存储器控制器110所连接的分枝112上的软件栈106。在一个实施例中,软件栈包括应用程序、数据库、块驱动器,以及损耗级别可靠性可用性可服务性(RAS)模块,如下面所讨论的。该框图用图表示出本发明的许多可能配置之一。
能够由计算机服务的同时数据访问的数量限制许多数据驱动的应用的性能。增加数量的计算核使该问题更糟。所公开的系统提供具有到包围计算核的CPU的多根互连的大量存储器芯片。其提供对数据的高效并行应用访问。专业系统软件管理计算和数据访问的高效调度。
能够在适于特定使用模式的各种配置中构建所公开的系统。可以对于诸如这些大容量存储器消耗应用的大量特定使用:商业智能、商业分析、地质地震、医学成像、社交联网和病人管理,来优化本发明。
在一个实施例中,根存储器控制器110连接到每个包括多个核的互连CPU100的复合体,并且驱动分枝112和叶子114的分级体系。注意到,每个分枝附接到另一个分枝或许多叶子或两者的混合。叶子114由闪速存储器或其他固态或数字存储器组成。具体地,可能存在通过分枝附接到单个根的1024个或更多个存储器芯片(例如,FPGA或ASIC)。每个CPU复合体能够被连接到八个或更多根。因此,如果图1是精确的且按比例的,固态存储器叶子的数量将淹没该图。在该体系结构中,CPU具有可以被并行访问的数以千计的存储器目标。CPU复合体中的CPU的数量以及存储器树的尺寸和数量也能够增加到非常大量。平衡反映了特定使用(应用)的需要。该体系结构中的组件由硬件和软件两者组成。他们可以包括以下:
1.数据管理系统
可以是并且往往是以下的数据库或数据管理系统:
1)多线程的;
2)利用单个共享存储器模型或者分布式存储器模型、或者两者的组合,以便实现高并行度。在一些实施例中,这可以是每个CPU线程将其状态高速缓存在存储器中的高速缓存一致性存储器模型。
2.存储器管理系统
能够是并且往往是以下的存储器管理系统:
1)多线程的以开发大型多核系统;
2)高度并行的;
3)非常大容量的;
4)作为比喻:沿存储器管理系统向下移动引起增长的并行性。随着存储器访问从根移动到分枝、到叶子,使在每个级别的并行操作有效地增加。
3.高速缓存管理系统
在一些实施例中维持计算机系统中的独立节点(或核)上的数据一致性的高速缓存管理系统。
4.存储器系统
每个存储器系统由根、分枝和叶子组成,如上所述。在一个实施例中,存在有时在本文被称为存储器模块(MM)的四个根。在概念上,根替代计算机的底板中的四个存储器扩展卡。它们连接到分发网络,提供对每个连接到许多叶子的许多分枝的接口。
图2示出单个根108,其包括两个存储器接口200、两个分枝接口202、十六个分枝,以及十六个叶子(每个叶子包含至少一个固态设备)。图3是分枝接口202和其到具有对应的叶子114的分枝112的集合的连接的更详细描绘。在一个实施例中,对于其一半可用于用户应用并且其一半被分配给冗余和系统使用的总共32TB的系统,每个根具有总共8TB的闪存。在其他的实施例中,存储器资源对应用或冗余的分配可以是不同的或者可以通过应用直接地或间接地对该分配进行控制。
每个分枝接口具有执行软件栈206的内部存储器204。软件可以包含双数据速率(DDR)控制器、目标路由软件,RAS模块和非阻塞并行固态接口(NBSI)驱动器。分枝接口可以具有FPGA或ASICS形式的计算资源。
存储器接口连接到其中所有CPU可以访问所有存储器的处理器间数据分发网络。我们将存储器描述为由分枝和叶子组成的多根树,如以下详细描述的。我们将计算复合体描述为共享存储器多处理器,其可以是统一类型或非统一类型。根可以是局部地或远程地连接的许多实例之一。互连技术可以影响系统的一些运作,但是其不一定改变基本体系结构或其操作。
在一个实施例中,利用专用硬件来实施存储器主控制器(MMC)和存储器从控制器(MSG)。根是MMC,而分枝是MSG并且叶子是固态存储器设备。例如,AlteraStratixVFPGA可以用于MMC和MSG两者。在这种情况下,每个FPGA具有以12.8Gb/s操作的48个串行链路,并且来自每个MMC的三个链路到达十六个MSG设备中的每一个。每个MSC进而连接到16个叶子,每个是固态存储器设备,例如32GB单层单元(SLC)NAND闪存设备。包括其中组件和它们的互连实时地发生变化的实施方式的许多其他实施方式是可能的。
在一个实施例中,存储器分枝是具有许多附接的叶子的组件,其中每个叶子是闪速存储器芯片,如图3中所示。图4图示出具有执行软件栈402的叶子接口控制器400的分枝112。软件栈402可以包括网络驱动器、RAS、纠错码(ECC)、数据库引擎、数据压缩引擎、加密引擎和固态驱动器。这些组件提供在没有将存储在叶子中的数据移动到另一个处理单元的情况下对其执行计算任务的装置。注意到,栈靠近介质,这是因为在根和分枝中存在计算资源。
在替换实施例中,存储器分枝是具有附接的许多分枝和叶子的组件,其中每个分枝执行相同的或者不同的软件栈。在异构系统中,每个分枝可以察觉到其邻居并且在网络驱动器、RAS、纠错码、数据库引擎、数据压缩引擎和固态驱动器的实施中进行协作。
在另外的实施例中,如同具有叶子的情况,分枝包含在对叶子读取/写入数据时实施迅速搜索或压缩/解压的大量计算资源。局部处理器能够在CPU、分枝和根组件之间对在通信通道中存在的数据分组进行加密、压缩、擦拭(scrub)、确认、编码和解码以及对报头和命令信息进行路由、确认、编码和解码。
分枝最后结束于叶子。每个叶子是进行动作以将数据页读取和写入到非易失性存储器中的设备。可以以许多形式实施叶子。存储器管理系统对叶子的页的使用进行控制。叶子可以以各种技术来实施,但是它们具有也能够读取已经被写入的数据页的属性。叶子不需要关于设备类型或操作参数是同质的或异质的。
在另外的实施例中,叶子包含在对叶子读取/写入数据时实施迅速搜索或压缩/解压的大量计算资源。局部处理器能够在CPU、分枝和根组件之间对在通信通道中存在的数据分组进行加密、压缩、擦拭、确认、编码和解码以及对报头和命令信息进行路由、确认、编码和解码。
在一些实施例中,一个或多个多层体系结构覆盖根-分枝-叶子结构并且包括用于进行编码和解码的不同的技术,如下所述。
在一些实施例中,存储器叶子具有对冗余系统中的镜像存储器空间的端口访问。在一个实施例中,大致一半存储器系统存储数据并且另一半的存储器空间支持快速的数据访问。在另一个中,保留一小部分物理存储器以便提供足够的性能。在另外的实施例中,存储器使用使低效率最小化的特别设计的方法来跨独立的叶子分发数据。在另一个实施例中,存储器组件本身可以由一起产生期望行为的独立组件组成。在另外的实施例中,分段系统具有在发生独立的域的故障时保持有效的隔离的域。在一个实施例中,这些组件是相互依赖的。为了使整体系统高效地运行,互连组件依赖于彼此以进行正确的运作和彼此的工作的及时的完成。
本发明是由可以具备具有不同的使用的不同的实施方式产生机制的若干互相关联的部分组成的计算系统。这些组件的高效交互创建在另外难达到的级别的系统性能。在以下阐述中,我们列举若干组件和它们的运作。
本发明的一个实施例在损耗存储器和对存储器写入方面提供性能改善。资源(计算的、存储器、连接带宽,等等)的整合创建用于优化的机会。当许多服务器尝试服务于尝试访问相同的数据的许多客户端时,数据一致性变为重要的需求。多级高速缓存的使用进一步使可用于解决这些问题的体系结构复杂化。
本发明的实施例是通过跨一组设备的所有来分布工作以改善该组设备的性能的机制。传统的固态盘(SSD)进行设备内的“损耗均衡”并且每当设备需要擦除块时必须这样做。这是因为它们仅能够在它们的设备内分布写入,即使更高级别实体设法在其他设备上分布写入时也是如此。在单个设备上执行独立动作的成本比将写入整合时执行的成本高得多。所公开的系统优化大量通道上的擦除和写入以便提高整体性能。其包括在基本上没有增加客户端所看到的操作的等待时间的情况下明智地散布工作的“选择”机制和实时优化机制。
例如,在图1和/或图2的体系结构中使用该技术,示例事务是使用日志结构来分布数据页以增加回收擦除的块(例如,“无用单元收集”)的效率。将存储器的页映射到核的虚拟存储地址空间中。以顺序的方式将页写入到连续的固态存储器地址。可以将这些写入操作分组在一起以便更高效地利用存储器设备的带宽。例如,可以将四个页同时地写入到特定闪存设备的四个平面上。该方法在移动到闪存设备的下一个块之前填充闪存设备的一个块。因此,对于在再次执行写入操作之前以类似顺序执行删除操作的许多应用;能够同时地从相同的块回收许多删除的页。在其他情况中,可以将写入操作指配到不同的块以便最大化可以回收的页的数量。
本发明的另一方面是在存储器分级体系中在存储器组件之间高效地移动块的机制。在以上示例中,我们具有在从固态设备访问数据时所牵涉的处理器的分级体系(CPU、根、分枝)。任何时间,数据从分级体系的一级移动到另一级,就可能存在性能处罚。相反地,如果在没有越级的情况下执行操作,则通常会实现性能改善。
实现性能增益的机会的一个示例在固态介质的擦除操作期间发生。为擦除做准备,人们必须移动包含仍然处于使用中(“有用”)的数据的所有页。CPU不需要在这个时候检查该数据;因此我们通过不利用该数据跨越至CPU的分级体系的级来实现性能增益。某些实施例能够将该数据从分枝移动到分支并且一些从根移动到根。在根之间的移动的情况下,我们将副本移动到CPU并且移动回原始根或另一个根。这些副本要求CPU中的存储器空间,这进而影响可用于根缓冲器管理的存储器、CPU上的高速缓存利用率,和CPU缓冲器。能够使用CPU中的加载/存储模型或使用根中的直接存储器存取(DMA)模型来实现从根内或者从根到根的数据移动。能够在操作系统层中或潜在地在根本身中、或者甚至使用将两者组合的分布式机制来进行使用一个路径还是其他路径的判定。
本发明的另一个实施例涉及分布读取以最大化性能的机制。由于具有不同的等待时间、吞吐量,和访问方法的设备针对数据进行演化,CPU不能访问数据并且预计到它们预计在DRAM中已经达到的均匀性能。该机制使读取并行以便实现来自非DRAM设备的极高吞吐量。这些性能级别是与其他方式相比更接近DRAM速度的数量级。
在一个实施例中,我们检查包含具有长等待时间和复合访问机制的、具有STB的数据的固态存储器模块的系统。具体地,与使用具有256GB的数据的DRAM模块进行的单个64字节读取相比,根上的固态介质(存储器模块)允许2048个同时的4096字节读取。在该实施例中,系统上的每个4096页花费100μ秒并且DRAM上的每个4096字节读取花费100μ秒。在该实施例中,在同时读取之后,对于系统每页存在附加的5μ秒。
尽管使用DRAM比读取单个页快100倍,但当读取2048个页时,DRAM仅仅比公开的系统快5倍。使用更多存储器芯片组成的更大的实施例使该差别显著地缩小。
我们的发明包括实现如上所述的并行性的软件、固件和硬件设计。本发明具体化一种机制,其中已经使读取请求和/或数据为分布式的,使得随后的读取能够在存储器系统中利用并行性。通过将很可能被同时地读取的数据页放置在不同的(独立的)设备(通道)上来实施基本技术。在一个实施例中,相对于先前写入的页,将每个页写入到不同的通道(或分枝)上的设备上。
本发明的另一个方面是分布写入以最大化性能的机制,同时有效利用缓冲器和通道带宽。先前注意到,读取请求和/或数据必须已经是分布式的,使得随后的读取能够利用并行性。本发明的该实施例分布数据写入以促进随后的读取的并行性。
在一个实施例中,使用Linux操作系统。像大多数现代的操作系统一样,Linux使用DRAM中的数据缓冲将至/来自的存储器管理系统、像涡流盘或固态介质的数据设备。应用可以通过直接地使用Linux的DRAM、使用Linux的DRAM作为分级区,或通过向Linux提供对应用的DRAM的引用来写入数据。在所有这些情况中,写入在时间和空间上是分布式的。
所公开的系统具有巨大数量的独立操作单元。我们跨那些单元来分布页写入。这是时间分布,这是因为我们基于页准备好写入的时间来在不同的单元中写入页。
该分布以两种方式帮助性能。第一,正如读取一样,系统能够进行对独立的单元(叶子)的同时写入,实现并行性。第二,随后的读取也将是分布式的并且因此能够利用并行性。因为存在那么多的叶子,考虑到时间分布和许许多多单元,读取不太可能彼此冲突。
本发明的另一个方面是跨通道或逻辑单元实施损耗组的机制。所公开的技术是高效地重新使用存储器的“擦除块”并且跨页均匀地划分使用的方法。可以在软件栈206中,或在根108(例如,图2的RAS)执行该技术,或通过两者共同操作来最优地执行该技术。
块擦除机制非常类似于存储器空间回收(例如,无用单元收集)地进行工作。然而,机制对正常无用单元收集技术不进行的三个增加的复杂情形进行处理。第一,在大的连续的大块能够被再次写入之前必须擦除页。第二,页最终损坏,因此人们必须实施损耗均衡。第三,希望在尽可能多的通道上散布业务以便得到最好的读取和写入性能。通过实施增强一代的(generational)无用单元收集程序(garbagecollector),人们能够实现良好的性能(解决点1和3),同时仍然提供良好的损耗均衡(解决点2)。
在一代无用单元收集程序中,将所有新的对象放置在年轻一代的池中。在对年轻一代的池执行无用单元收集之后,将经受得住收集的对象放置在旧的一代池中。将第二次经受得住收集的对象放置在甚至更旧的池中,等等。使用闪存作为存储媒介的简单的实施方式将导致极其坏的损耗均衡。与用于旧的一代的块相比,将更频繁地擦除用于年轻存储代的块。我们通过周期性地改变物理闪存块所属于的代来避免该问题。通过将具有高擦除计数的页移动到旧的一代中,我们减少那些页将在将来看见的擦除的数量。在不同的闪存通道之间平衡用于不同的代的块。这保证人们能够跨许多不同的通道散布读取和写入业务。
本发明的另一个实施例涉及积累的冗余的数据保护条带。本发明的该实施例使用到故障无关的存储器设备上的简单的(例如,XOR)借记/贷记计算指令来积累数据保护条带。该技术包括用于受损数据块的快速重建的方法。可以将该机制体现在系统的CPU、根或分枝中。根据特定实施例,它将以不同的方式与RAS实施例交互。
施加到具有大量不对称读写次数的设备的擦除码需要限制开销以及提供漏检错误的大幅减小的方式,另外,低的计算开销以及有限的空间是高度理想的。我们给出一种利用可调整的错误检测和校正级别擦除在空间和时间上实现低的、固定的开销的编码数据的机制。
在所公开的写入机制之上构建以下数据保护方案。图5图示出17个数据块的流。在该示例中,一次针对四个数据块计算奇偶校验值,但是能够对任何数量的数据块使用该技术。奇偶校验值利用数据块的滑动窗口。为了改善效率,在先计算的奇偶校验值(例如,PI)经受异或(XOR)操作,具有与新的数据块(例如,D5)相结合的结果。能够对于所有新的到达的数据级联该方式。图5提供建立方式的有效性的数学基础。该方式将低的固定计算开销与固定空间需求相结合。实际上,该机制利用包含被一起异或的数据块的“移动窗口”以形成奇偶校验块。随着窗口移动,新的块被异或到奇偶校验块并且先前异或到奇偶校验块的旧的块被再次异或到奇偶校验块。这有效地添加新的块并且移除旧的块,因而“移动窗口”。
本发明的另一个实施例涉及当直接读取等待先前请求的擦除或比读取慢的其他操作时从奇偶校验重构数据,以完成和释放通道。可以在图1中的CPU上运行的软件栈中的软件中实施该功能。具体地,在该实施例中,在软件栈的底部实施该功能。通常,功能涉及用于通过当主设备忙时从存储在不同的设备上的冗余数据重构被访问的数据以最小化读取操作的等待时间的方法。
为不同的通道(例如,从CPU起通过根到叶子的链路)指配存储页。每个叶子存储许多数据页。一次可以从叶子仅仅读取单个数据页或者仅仅将单个数据页写入到叶子。有时将叶子内的页擦除。与进行读取或写入相比,执行擦除或其他慢操作花费长得多的时间,并且许多读取和写入同时地跨叶子发生。因此,在擦除操作在进行的情况下,希望避免从叶子读取。
因此,除数据页之外,我们还存储数据保护页。也就是说,对于给定数据页A,我们对存储在不同的叶子上的、用于A的数据保护页的集合进行存储。在数据页A丢失的情况下,能够通过读取用于A的一些数据保护页以及一些其他数据页(不包括A)来重构数据页A的内容。值得注意的是,能够在不用必须访问A存在于其中的叶子的情况下重构数据页A的内容。
该技术的通常应用是在包含A的页(或者甚至整个叶子或分枝)丢失的情况下重构A的内容。然而,我们也能够如下使用机制来改善性能:如果包含A的叶子忙并且将长时间地忙,代替直接地读取A,我们能够从必要的数据保护信息重构A。在擦除的情况下,经常地,与等待擦除完成相比,这将允许更快地满足对于A的请求。该技术能够与移动窗口技术相结合以迅速地重构数据。
实施该技术的另一种方式是利用RAID5等(或其他RAID)擦除码。这意指计算许多数据页的异或以产生奇偶校验页或计算更复杂的代码,例如,允许需要的数据的恢复的低密度奇偶校验码或所谓的Raptor码。
本发明的另一个实施例涉及用于分层存储器中的高效读取缓冲器利用率的机制。该问题是通过更高效的缓冲器利用率来改善系统性能。不是在软件发出读取命令时分配缓冲器,而是仅仅在数据变得可用之前分配缓冲器(缓式分配)。这允许软件读取在较小数量的缓冲器上进行统计复用。在缓冲器的数量为有限的系统中,这导致更好的总体系统性能。
当CPU将数据从较慢的资源读取到较快的资源中(诸如从闪速存储器读取到高速存储器中)时,CPU分配较快的资源中的缓冲器并且等待较慢的设备填充指定的缓冲器。从操作的开始直到数据最终被返回之前,可以由操作系统将缓冲器处理为“忙”。利用该想法,系统发出读取,但是不预分配用于数据的缓冲器。较慢的系统(从中进行读取)将仅仅在将数据传递到CPU之前分配缓冲器并且然后利用数据填充缓冲器。这允许缓冲器在较短时间段内“忙”。该机制改善较快的资源中的缓冲器的利用率,这进而导致增加的系统性能并且减小特定性能级别所需要的缓冲器的数量。
本发明的另一个实施例涉及优化性能同时最小化叶子资源的数据保护方案。数据保护(DP)奇偶校验生成大体上较简单并且非常快速。大量比特错误需要很长时间来校正。实际上,遭遇的大多数错误具有小数量的错误比特。
本发明的一个实施例生成大量奇偶校验比特并且具有双重校正算法。能够在分枝或叶子中在硬件中校正小数量的错误比特,保持硬件实现较小。如果大量比特错误发生,则能够通过使用所有(或更多)与数据一起存储的较大数量的奇偶校验比特来在软件或固件中校正它们。
该分层机制改善空间和计算效率。该机制将数据保护分为两个部分:具有有限的纠错能力的一个较小的部分,以及较慢的但是具有软件中的纠错能力的更有能力的部分(或一些其他“高级别”的处理)。对于所有所需校正当中的99.999%而言,叶子内部的校正逻辑将足够。然而,当叶子不能校正数据时,软件将使用其附加的能力来校正数据。这相对于具有未被非常频繁地使用的扩展能力的单个、较大的叶子块对小的、频繁地使用的叶子校正块加非常少发生地所使用的软件校正块做出权衡。做出该折衷导致小得多的、更好利用的叶子块并且改善叶子的空间效率。该机制能够被串联到若干级中,每个级对先前的级的数据校正能力加以改进。最后,能够应用其他系统级的数据保护以从其他叶子上的冗余副本恢复丢失的数据。基于块的代码(例如,BCH或里德-索罗蒙码)能够执行该功能。此外,可以使用特别设计的低密度奇偶校验(LDPC)码。该“软错误”技术允许从设备再读取数据并且组合若干读取尝试以产生更好的错误率并且也能够与以上技术相结合以将错误检测和校正与要求更复杂逻辑的罕见情况分离。
以下讨论涉及本发明的组件的各个特定实施例。如先前所讨论的,系统组件包括与点到点分布式系统和多根、冗余的并行可访问的(分枝的)存储器相连接的多处理器/多核复合体。可以利用诸如图6中示出的市场上可买到的组件来配置系统。
多核、多处理器、服务器类、硬件平台用于实施本发明的实施例。在一个实例中,IBM3850/3950X5系统(基于英特尔Boxboro-EX平台)作为主机。工作模型包含具有64兆兆字节的闪速存储器的4个存储器模块(根)和4个DRAM存储器板。闪速存储器一小部分可用于用户应用。该一小部分可以根据使用历史和当前、测量的性能级别而变化。该系统代表在具有高速点到点、高速缓存一致性存储器互连的非统一存储器体系结构(NUMA)配置中连接的许多多处理器系统。
硬件组件可以包括:
o系统基板(母板)
o可扩展存储器接口(SMI)板(根)
o闪存模块基板(分枝)
o存储器模块子卡(叶子))
o支持机械、热和电力系统。
图6示出可以用于实施本发明的多核、服务器类平台。具体地,该图是IBMX53850底板的框图。基于英特尔的Boxboro-EX平台,其包括经由快速路径互联(QPI)链路互连的四个Xeon8870(Westmere)CPU。
每个Xeon芯片具有两个存储器控制器。每个存储控制器在锁步中运行两个英特尔SMI(可扩展存储器互连)链路以便实施到存储器(具有校验比特的144比特)的128比特宽数据路径。每个SMI链路与英特尔7510可扩展存储器缓冲器芯片进行通信,该英特尔7510可扩展存储器缓冲器芯片进而将SMI请求转换为双数据速率类型三(DDR3)同步DRAM事务。在每个7510上存在两个DDR3链路。Xeon处理器执行128比特操作并且不使用DDR3链路上的数据掩码比特。
存储控制器和纵横开关矩阵(Crossbar)是分布式存储器结构,其被设计为在串行链路接口和MSC内部的闪存控制器之间传送数据页。存储控制器是系统中的分枝。闪存页是所利用的特定芯片的属性,但是通常其是4KB存储块。擦除块是多个闪存页尺寸(例如,256KB或512KB)。
存储控制器用于缓冲闪存页并且控制因特拉肯(Interlaken)接口和闪存控制器之间的消息。Interlaken是用于将布线(独立的数据连接)结合的互连协议。也就是说,其是与多个通道的单个逻辑连接。MSC具有结合的数据传送通道(例如2个Interlaken接口)(每个MMC一个)。软件可以将在两个MMC之间均匀的页调度到分枝中。在一个实施例中,每个MSC存在32个分枝。由于在每个MMC上存在入站页和出站页,所以能够将数据路径分成4个主要部分。
从32个分枝复用到MMCO的业务
从32个分枝复用到MMC1的业务
从MMCO解复用到分枝的业务
从MC1解复用到分枝的业务
在图7中示出这一点。项700表示一个数据路径;项702表示另一数据路径等等。还在图中示出了统计信息块704,其仅仅向MMCO发送STATS(统计信息)消息。
该分布式存储器设计本身非常适合于Altera芯片体系结构,其遍及设备散布其m20k存储器。来自分枝的128比特数据路径将通过InterlakenFIFO706被携带并且进入分枝FIFO的“顶部”接口中。存在Interlaken接口和分枝之间的时钟域改变。这在分枝FIFO的“底部”接口完成。在图8中示出了示例性接口。
将该整体存储控制器构建为分布式FIFO800的集合。该实施例具有简单的FIFO,但是能够对仅仅由报头组成的消息给予优先级。在从Interlaken706到闪存控制器802的“南行”方向中,这允许读取请求“赶上”写入页。在北行方向中,这允许写入完成赶上读取页。将仅仅需要把进入闪存控制器的FIFO改变为优先级FIFO。
优先级FIFO允许报头和页为同时传输到Interlaken接口706作好准备。如果Interlaken接口706是用于页的、而不是用于报头的流量控制器,则报头可以围绕读取页流过,允许写入完成同时任何其他不能够继续。这情形将使存储一致性变得困难或不可能维持。
为确保存储器内容的一致性,可以使用基于优先级的机制。在图9中示出的优先级FIFO由两个FIFO组成:从存储器900构建的较大的一个FIFO和逻辑902构建的较小的一个FIFO。在输入处的解复用块904将检查消息类型并且将消息转发到适当的(短或长)FIFO。在FIFO的输出侧上,采用简单的优先级方案的调度器906选择接下来哪个FIFO发送其消息(具有附属的页)。
在一个实施例中,数据路径接口是具有128数据比特的通常的4线(START、END、VALID、READY)类型接口。这些接口将用于对接到Interlaken块以及FIFO的两侧中。这也能够用于将业务流控制到复用器中。该接口可以用于所有存储控制器中的块。
图9的两种FIFO类型能够使用4线(START、END、VALID、READY(开始、结束、有效、准备))接口——尽管两个准备信号能够用来选择从根保持哪个队列,诸如图2中示出的。
闪存控制器连接到存储控制器的底部并且对一个闪存通道进行控制并且对闪存设备的操作进行控制。图10图示出示例性存储器和闪存控制器体系结构,在一个实施例中,每个MSC具有32个闪存控制器。每个闪存控制器与一个8比特闪存通道进行通信。每个闪存设备具有两个通道,其中每个通道4个逻辑单元(LUN)。因此每个闪存控制器对其进行通信的通道上的4个LUN进行控制。
叶子存储控制器连接到存储控制器FIFO1000、1002、1004和1006。在该工作模型中,从“闪速”存储器芯片构造叶子。当需要将数据发送到闪存通道时,当写入页到达闪存控制器并且由通道调度和控制块读取时,将写入页存储在写入页缓冲存储器中。来自闪存的读取页被存储在读取页缓冲存储器中并且然后酌情被向上发送给MMC0或MMC1。
在一个实施例中,将闪存控制器分成5个主要部分:命令和页解析器1008、LUN控制器FIFO1010、LUN控制器1012、通道调度和控制1014以及数据保护。在该设计中可以在许多位置中对到闪存控制器的命令进行解析。这些可以包括:在闪存控制器的顶部的基于贷记的流控制、命令解析器、LUN控制器、通道调度器和解复用块。基于贷记的流控制块可以从MMC接收CREDIT(贷记)命令。这些命令用作空操作(NOP)命令以仅仅携带从MMC到MSC的缓冲器满信息。贷记控制器从数据流移除这些命令。在MSC设计页面上在主MSC框图中示出了该块。在图10中示出的闪存控制器框图中示出了对命令进行解析的所有其他块。
如参考图11所示,命令和页面解析器1008具体地寻找页和写入命令。页命令引起许多事情发生。第一,从写入页缓冲存储器1102中分配缓冲器并且将该缓冲器的地址放置到用于寻址的LUN的页队列1104中。然后将页的剩余部分从输入FIFO(例如,1000)转移到被分配的存储器缓冲器中。然后由命令解析块1008从数据流中移除PAGE(页)命令。
命令解析器块1008利用状态机检查写入命令,如果两个页到达、而后面是写入1页命令,则存在错误,因为FREE_BUFFER(释放_缓冲器)命令被插入到命令队列中并且LUN控制器释放缓冲器而不是其分配的和不用的叶子。一旦检测到校正写入命令,则将其放置到写队列1106中。所有其他命令进入到“其他”队列1108中。FREEJBUFFER命令进入到写队列1106中。
LUN控制器不得不了解哪些命令被指定给闪存以及它能够处理哪些。LUN控制器能够直接地处理写入_错误、查验(ping)以及释放_缓冲器。所有其他命令具有一些闪存交互并且将由通道调度器处理。LUN控制器执行从读取缓冲存储器的缓冲器分配以及写入缓冲存储器中的缓冲器释放。
通道调度器对用于读取、写入和执行命令的操作码进行解析。这些是主命令。也将RESET_LUN(复位_LUN)和RESET_MSC(复位_MSC)理解为它们在闪存设备上完成复位LUN操作。通道调度器向闪存发出合适的读取和写入命令并且在缓冲器之间移动数据。通过LUN控制器将完成命令与用于读取命令的缓冲器地址一起传递到完成队列1110中。
解复用1112将完成的命令传递到适当的MMCFIFO中。它也不得不理解操作码命令。读取完成具有在LUNFIFO中的并行页地址信息。解复用器1112生成用于闪存页到适当的MMC的传输的正确形式的PAGE命令。
将命令解析到两个组中并且绑定到两个队列——写入队列1106和用于所有其他命令的队列1108上。将所有数据页放置到写入页缓冲器1102中并且将缓冲器的地址传递到页队列1104中。使写入与其他命令分离允许相对于写入命令使读取优先化。
在返回方向(即,从闪存设备到MMC)中,对其存在响应的所有命令以执行的次序被放置在完成队列1112中。任何页数据(即,读取页)把数据放置在读取页缓冲区1114中且在页队列1104中传递该缓冲器的地址。
在图12中示出LUN控制器的实施例。LUN控制器直接地连接到LUNFIFO。LUN控制器具有两个主要命令组:到达闪存设备的命令和不到达闪存设备的命令。例如,PING是不到达闪存设备的命令的示例。在LUN控制器中完全地执行查验命令。PING命令通过命令调度器进来并且被直接地发送到LUNFIFO中的完成队列1112。也在LUN控制器中完全地处理WRITE_ERROR(写入_错误)和FREE_BUFFER。
所有其他命令具有与闪存设备的一些交互。
RESET_MSC命令复位读取和写入缓冲存储器两者中的所有缓冲器。它也中止进行中的任何命令并且向闪存设备发出RESET_LUN命令。应当仅仅在没有其他命令在进行时才调度RESET_MSG命令。
通常,LUN控制器将向通道调度控制器“呈现”命令。这意味着,有效命令由操作码0、1或2个闪存地址以及还有读取和写入缓冲器地址组成。在写入的情况下,在写入地址中指定的存储器位置用于在闪存地址对闪存进行写入。在读取情况下,闪存地址用于读取页并且其被写入到通过读取地址所指定的缓冲器。
LUN控制器将保持读取、写入和闪存地址和操作码(在以上图的底部示出),直到通道调度器已将通过闪存通道传递命令并且具有结果为止。在命令结束时,将来自闪存设备的状态传递到LUN控制器中,并且LUN控制器将状态比特写入到返回消息中并且终止命令。一旦命令完成,通道调度器指示应当释放多少缓冲器(在写入情况下)或现在应当分配多少缓冲器(在读取情况下)。在那之后,命令调度器选择应当读取哪个命令队列并且将下一个命令呈现给通道调度器以用于闪存设备中的执行。
图13图示出根据本发明的实施例所利用的通道调度器和控制块。通道调度器被配置用于闪存设备初始化并且复用来自LUN控制器的命令请求以及数据传递。在一个实施例中,通过8比特闪存通道将所有命令和数据传递到闪存设备。初始化包括到闪存设备的初始RESET_LUN指令以及然后是启动同步传递模式的命令(闪存以异步模式出现)。如果人们需要设置驱动器强度和其他初始化参数,则初始化ROM用于在命令模式中通过接口引导命令。一旦初始化了所有四个LUN,就启动主命令轮询循环,通常,READ_STATUS_ENHANCED(读取_状态_增强)命令用于了解LUN是否空闲和了解在先的命令是否已经完成。该命令也具有副作用——当寻址到特定LUN时,所有其他LUN不能驱动数据或从8比特数据总线读取数据。
如果闪存设备中的LUN是空闲的并且命令是可用的,则将命令发送给LUN。在写入的情况下,也通过通道将数据传递到LUN。一旦命令在进行中,利用READ_STATUS_ENHANCED命令对内部的闪存BUSY(忙)状态进行轮询。一旦命令完成,将从命令返回的状态返回到LUN控制器。在读取命令的情况下,通过通道从闪存设备读取数据并且将数据发送给读取页缓冲存储器。在擦除的情况下,不需要通过闪存通道传递页数据。
可以在三个步骤中执行数据保护:向原始数据添加保护奇偶校验比特、对数据比特和奇偶校验比特进行处理以了解是否存在任何错误(生成校验子(syndrome)以指示哪些比特是错误的)并且校正发现的错误(如果有的话)并且恢复原始的数据比特。往往围绕FIFO将最后两者结合。通常,将数据划为若干块。一个问题是,数据的校正要求数据块和关于要校正哪些比特的信息,并且当“要调整的比特”信息可用时,块往往已经“过去”。在图14中示出这些块。具体地,该图用于图示出校验比特的块1400、调整比特的块1402和添加比特的块1404。
添加DP比特块1404接受如由页解析器所写入的4kB页并且每512B的数据插入额外的104B。由于我们写入页,每512B变为包括奇偶校验字节的616B。当添加DP比特块1404需要对存储器进行写入时,它能够暂停页的流并且使输入FIFO稍微备份(backup),因此奇偶校验比特的插入相当直接。写入页缓冲器中的闪存页现在受到保护并且能够被写出到闪存。
过些时间后,当我们从闪存读取页时,从闪存读取受保护的页并且受保护的页通过检查DP比特块传递。该块直接地将字节传递到读取页缓冲器中,但是使用数据字节和奇偶校验字节来生成指示每个块中的错误是什么的校验子。校验子信息与缓冲器地址一起通过LUN控制器中的先前未指定的队列传递。
当从读取页缓冲器读取闪存页数据时,能够对616字节块应用在校验子中指定的校正,并且能够将他们作为512B校正块写入到解复用块1406中。如果校验子显著地大于预期的,则可以使用FIFO。
在一个实施例中,到闪存控制器的输入包括与16比特数据一起的4线握手。4线是以另一个方向中的开始_比特、结束_比特、有效和准备流动。闪存控制器的底部与实际的闪存设备衔接并且因此通过用于设备的数据表来指定端口指派。
系统基板(SBB)经由底部侧上的八个连接器附接到计算机底板中的四个根接口板(RIB)。四个存储器模块基板(MMBB)卡片插进SBB的顶边上的连接器。不同于功率分布,SBB仅仅是用于简化到计算机底板的连接的互连机制。
承载卡作为用于十六个分枝的基板。存在每个根一个承载卡且每个系统多达八个。该板通过合适的连接器提供至承载卡的功率分布。冗余的可热插拔的电源也对接到该板。
分枝卡被设计为现场可更换单元(FRU)。它由单个叶子控制器和十六个固态设备组成。6U外壳可以被安装在计算机上方的19"机架中。由于是EMI屏蔽,包括电源和足以使单元冷却的风扇。
现成的12V电源能以220VAC或1l0VAC运行以对单元供电。12V电压干线被酌情分布并且被向下调整到所需的较低电压。局部电压调节器(VR)和低压差稳压器(LDO)提供调节。
对单元供电的12V的使用将使对电池备用早期写入终止(EWT)的最终的支持更简单。不间断电源(UPS)在AC输入的电平进行操作。
存储器缓冲器(例如,英特尔7510可扩展存储器缓冲器)在概念上基于在JESD82-20A中所描述的JEDEC全缓冲双线存储模块(FBDIMM)高级存储器缓冲器(AMB)。图15示出作为两个独立的AMB1500、1502(每个操作一对DDR3RDIMM)的存储器缓冲器的逻辑视图。与JEDECAMB不同,英特尔7510不支持菊花链接。因而,对于SMIB卡上的两个SMI总线中的每个,需要一个7510芯片。
与分枝和叶子相结合的根复合体创建用于将被写入到叶子中的固态存储器(例如闪速存储器)的页中的数据的页的分布式网络。图16是示出...的根复合体的代表。
为工作模型创建的软件包括Linux块设备驱动器和存储器模块模拟器。模拟和单元测试框架可用于运行Linux块设备驱动器和存储器模块模拟器。
软件组件典型地包括商业智能应用、欺诈检测应用、程序控制交易应用,或要求大数据集以及因此大容量存储器的其它应用。此外,应用往往要求对数据的随机访问和高读取/写入比率。这些应用是所有者/用户能够直接地将到结果的时间转化为利益的类型。诸如社交联网、大量玩家联机游戏和实时数据采掘之类的要求快速的、往往实时的响应的其它应用具有对于用于保持被处理的数据的大容量存储器的类似的需求。
理想地,应用要求很少或不要求修改以在系统中运行。尽管如此,能够总是通过调谐/修改应用来获取应用优点,以对系统的硬件和软件组件进行利用。
在一个或多个实施例中,数据库是具有接近100TB或更大的数据集的相关数据库或对象数据库。不能使用基于DRAM的存储器系统成本有效地处理这些数据集,并且不能使用基于磁盘的系统在合理时间中处理这些数据集。对于在多核/多处理器环境中的执行所设计的数据库维持算法和支持这些环境的接口。本发明可以善加利用这些接口。可以修改一些数据库以便提供跨许多存储块来分布数据访问的并行执行。闪存存储硬件需要使由操作系统所请求的逻辑数据地址与闪存存储硬件的物理地址解耦。在最小程度上,使呈现给操作系统的数据地址空间从闪存设备的物理地址空间去耦。必须以单个存储数据页的粒度——其用于该系统是4096字节页来执行该重新映射。同样有用的是,能够在物理级重新映射闪存,以便处理坏块更换并且执行用于损耗均衡的块再排序。能够在硬件中处理此类重新映射,但是也可以通过对闪存块执行附加级别的地址转换来在软件中执行该重新映射。在擦除快级别执行此类块再排序。
我们将由操作系统看见的地址空间作为数据地址空间(DAS)来提出。该空间中的地址被称作数据地址(DA)。数据地址的页码部分是数据页码(DPN)。
我们将闪存存储的虚拟地址空间作为闪存虚拟地址空间(FVAS)来提出。该空间中的地址被称作闪存虚拟地址(FVA)。闪存虚拟地址的页码部分是闪存虚拟页码(FVPN)。
最后,我们将闪存存储的物理地址空间作为闪存物理地址空间(FPAS)来提出。该空间中的地址被称作闪存物理地址(FPA)。闪存地址的页码部分是闪存物理页码(FPPN)。请注意,在x86中,已经存在公知的术语:虚拟地址(VA)、虚拟页码(VPN)、线性地址(LA)、线性页码(LPN)、物理地址(PA),和物理页码(PPN)。我们不想使用术语逻辑地址或物理地址,以便避免与具有相同的首字母缩略词的x86术语的混淆。因而,我们通过引用闪存虚拟或闪存物理地址而非引用仅仅虚拟或物理地址来显示地进行消歧。在图17中示出数据地址空间、闪存虚拟地址空间,和闪存物理地址之间的映射。
负责并行地提供数据的固件对尺寸可以变化的数据块进行操作。与较大的块相比,更迅速地提供较小的块。可以在ASIC或其他硬件中实施固件。
本发明的实施例涉及计算机存储产品,其具有在其上具有用于执行各种计算机实施的操作的计算机代码的非暂时型计算机可读存储介质。介质和计算机代码可以是为了本发明被特别地设计和构造的那些,或它们可以具有公知的种类并且对计算机软件领域的技术人员而言可得到的。示例计算机可读介质包括但不限于:特别地被配置为存储和执行程序代码的磁性介质、光介质、磁光介质和硬件设备,诸如专用集成电路(“ASIC”)、可编程逻辑设备(“PLD”)以及ROM和RAM设备。计算机代码的示例包括诸如由编译器产生的机器代码,以及由计算机使用解释器执行的包含高级代码的文件。例如,可以使用C++,或其他面向对象的程序设计语言和开发工具来实施本发明的实施例。可以代替机器可执行的软件指令,或与其结合,在硬布线电路中实施本发明的另一个实施例。
为了解释,以上描述使用特定命名法来提供对本发明的彻底的理解。然而,将对本领域技术人员明显的是,为了实践本发明特定细节并不是必需的。因此,为了说明和描述目的而给出本发明的特定实施例的以上描述。它们并不意图是穷尽性的或者将本发明限制为所公开的精确形式;很明显地,考虑到以上教导,许多修改和变化是可能的。选择和描述了实施例以便最好地解释本发明的原理和其实际应用,由此使得其他本领域技术人员能够在适于所预期的特定使用的各种修改的情况下最好地利用本发明和各个实施例,意图是由所附权利要求和它们的等同替换限定本发明的范围。

Claims (21)

1.一种系统,该系统包括;
多个中央处理单元,其中每个中央处理单元连接到至少一个其他中央处理单元和到至少10兆兆字节的固态存储器资源中的根路径,其中每个中央处理单元在不将固态存储器内容交换到主存储器中的情况下直接访问固态存储器资源。
2.根据权利要求1所述的系统,其中每个中央处理单元在不干扰由另一个中央处理单元进行的访问的情况下独立地访问固态存储器资源。
3.根据权利要求1所述的系统,其中所述根路径包括具有存储器接口和分枝接口的至少一个根,其中所述分枝接口提供对单独的叶子接口控制器的接口,其中所述分枝接口被配置有计算资源以协调单独的固态存储器叶子中的数据搜索以及对从所述单独的固态存储器叶子检索的数据进行的数据处理。
4.根据权利要求3所述的系统,其中每个单独的叶子接口控制器被配置有计算资源以搜索单独的固态存储器叶子内的数据以及用于对从所述单独的固态存储器叶子检索的数据进行的数据处理。
5.根据权利要求1所述的系统,该系统该包括:
耦合到所述多个中央处理单元的根处理器,其中所述根处理器被配置为利用独立的固态存储器通道针对所述固态存储器资源独立地擦除和写入数据的页。
6.根据权利要求1所述的系统,其中所述多个中央处理单元被配置用于通过根控制器和分枝控制器的分级体系直接地访问固态存储器资源,其中所述根控制器和分枝控制器被配置为在没有来自任何中央处理单元的监督的情况下在单独的根控制器和单独的分支控制器之间选择性地移动数据。
7.根据权利要求6所述的系统,其中叶子控制器响应于来自根控制器或分支控制器的请求独立地在叶子之间移动数据。
8.根据权利要求1所述的系统,其中所述多个中央处理单元被配置用于通过开发与所述固态存储器资源相关联的并行性、被配置用于串接的数据读取的根控制器和分枝控制器的分级体系来直接地访问固态存储器资源。
9.根据权利要求8所述的系统,其中所述根控制器利用至单独的叶子的分枝连接来分发一连串读取请求,使得每个单独的读取涉及不同的叶子。
10.根据权利要求8所述的系统,其中所述分支控制器分发一连串读取请求,使得每个读取涉及不同的叶子。
11.根据权利要求1所述的系统,其中所述多个中央处理单元被配置用于通过被配置用于将分布式数据写入到所述固态存储器资源以促进在从所述固态存储器资源进行的随后的数据读取中的并行性的根控制器和分枝控制器的分级体系来直接地访问固态存储器资源。
12.根据权利要求1所述的系统,该系统还包括:
连接到所述多个中央处理单元的多个根处理器,所述根处理器被配置为:
将所述固态存储器资源组织到资源池中,
维持每个资源池的擦除计数,以及
执行其中基于所述资源池的擦除计数周期性地改变所指派的一代资源池的一代无用单元收集程序协议。
13.根据权利要求12所述的系统,其中所述多个根处理器被配置为利用所指派的一代资源池以跨至所述固态存储器资源的通信通道平衡业务。
14.根据权利要求1所述的系统,该系统还包括移动窗口前向纠错码累积器,被配置为向先前被积累的数据校正码递增地添加到达的数据符号并且移除先前被积累的数据校正码。
15.根据权利要求1所述的系统,其中所述多个中央处理单元被配置用于通过确定数据段的主要主机不可用并且从冗余的主机检索所述数据段来直接地访问固态存储器资源。
16.根据权利要求15所述的系统,其中由中央处理单元基于从所述冗余主机检索的数据保护码来重构所述数据段。
17.根据权利要求15所述的系统,其中由根处理器基于从所述冗余主机检索的数据保护码来重构所述数据段。
18.根据权利要求15所述的系统,其中由分枝处理器基于从所述冗余主机检索的数据保护码来重构所述数据段。
19.根据权利要求15所述的系统,其中由叶子处理器基于从所述冗余主机检索的数据保护码来重构所述数据段。
20.根据权利要求1所述的系统,其中所述多个中央处理单元被配置为:
发出对内部存储器资源的读取命令,
从所述固态存储器资源请求数据,
从所述固态存储器资源接收所述内部存储器资源内的分配的资源的命令,以及
将数据填充在分配的资源中。
21.根据权利要求1所述的系统,其中中央处理单元的网络被配置用于通过被配置为校正硬件中的小比特错误的分支控制器和叶控制器的分级体系来直接地访问固态存储器资源,其中所述中央处理单元被配置为执行软件以校正大比特错误。
CN201480032741.6A 2013-04-09 2014-04-09 具有对大容量固态存储器资源的独立直接访问的多处理器系统 Active CN105339905B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361810197P 2013-04-09 2013-04-09
US61/810,197 2013-04-09
PCT/US2014/033454 WO2014169015A1 (en) 2013-04-09 2014-04-09 Multiprocessor system with independent direct access to bulk solid state memory resources

Publications (2)

Publication Number Publication Date
CN105339905A true CN105339905A (zh) 2016-02-17
CN105339905B CN105339905B (zh) 2018-11-06

Family

ID=51655326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480032741.6A Active CN105339905B (zh) 2013-04-09 2014-04-09 具有对大容量固态存储器资源的独立直接访问的多处理器系统

Country Status (5)

Country Link
US (2) US9519615B2 (zh)
EP (1) EP2984570A4 (zh)
JP (1) JP6216441B2 (zh)
CN (1) CN105339905B (zh)
WO (1) WO2014169015A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113126900A (zh) * 2019-12-30 2021-07-16 美光科技公司 用于存储器子系统的媒体管理的单独核心
CN114243849A (zh) * 2021-12-23 2022-03-25 广东佳的美智能科技有限公司 移动电源芯片数据校准系统及共享移动电源系统
CN115878047A (zh) * 2023-01-19 2023-03-31 苏州浪潮智能科技有限公司 一种数据一致性校验方法、装置、设备及存储介质

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102214511B1 (ko) * 2014-02-17 2021-02-09 삼성전자 주식회사 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법
US9891837B2 (en) * 2014-09-08 2018-02-13 Toshiba Memory Corporation Memory system
US9817753B2 (en) 2015-11-02 2017-11-14 International Business Machines Corporation Flash memory management
CN106934081B (zh) 2015-12-29 2020-03-20 伊姆西Ip控股有限责任公司 磁盘驱动器模拟方法和装置
FR3061379B1 (fr) * 2016-12-22 2022-08-12 Expway Procede de transmission de donnees incluant une correction d’erreur directe
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11112978B2 (en) * 2020-02-04 2021-09-07 EMC IP Holding Company LLC Routing to obtain user data in a geographically distributed data storage environment
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093717A (zh) * 2006-03-13 2007-12-26 英特尔公司 具有多个次级端口的输入/输出代理
CN101180596A (zh) * 2005-04-21 2008-05-14 提琴存储器公司 一种互连系统
US20130042119A1 (en) * 2005-04-21 2013-02-14 Violin Memory, Inc. Interconnection system
US20130067138A1 (en) * 2011-09-09 2013-03-14 Ocz Technology Group Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL7909178A (nl) * 1979-12-20 1981-07-16 Philips Nv Rekenmachine met verspreide redundantie welke is verdeeld over verschillende isolatiegebieden voor fouten.
JPH1139245A (ja) * 1997-07-15 1999-02-12 Toshiba Corp 半導体デバイス制御装置および半導体デバイス制御方法
US5870412A (en) * 1997-12-12 1999-02-09 3Com Corporation Forward error correction system for packet based real time media
JP3939975B2 (ja) * 2001-12-14 2007-07-04 松下電器産業株式会社 ガベージコレクション装置、ガベージコレクション方法及びガベージコレクションプログラム
JP4079684B2 (ja) * 2002-05-08 2008-04-23 株式会社日立製作所 ヒープメモリ管理方法およびそれを用いた計算機システム
JP2006085557A (ja) * 2004-09-17 2006-03-30 Toshiba Corp メモリ管理装置及びデータ処理装置
US7882320B2 (en) 2006-05-23 2011-02-01 Dataram, Inc. Multi-processor flash memory storage device and management system
US20080282024A1 (en) 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7827357B2 (en) * 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
US20090228762A1 (en) * 2008-03-07 2009-09-10 Kabushiki Kaisha Toshiba Inforamtion Precessing Apparatus and Non-Volatile Semiconductor Memory Drive
GB2513551B (en) * 2010-09-24 2018-01-10 Ibm High-speed memory system
US8874850B1 (en) * 2012-05-10 2014-10-28 Netapp, Inc. Hierarchically tagged cache
US9348758B2 (en) * 2012-09-24 2016-05-24 Sk Hynix Memory Solutions Inc. Virtual addressing with multiple lookup tables and RAID stripes
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
DE102014101185A1 (de) * 2014-01-31 2015-08-06 Hyperstone Gmbh Verfahren zur Verwaltung von Flash-Speichern mit gemischten Speichertypen unter Verwendung einer fein-granulierten Zuordnung logischer auf physikalische Speicheradressen

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101180596A (zh) * 2005-04-21 2008-05-14 提琴存储器公司 一种互连系统
US20130042119A1 (en) * 2005-04-21 2013-02-14 Violin Memory, Inc. Interconnection system
CN101093717A (zh) * 2006-03-13 2007-12-26 英特尔公司 具有多个次级端口的输入/输出代理
US20130067138A1 (en) * 2011-09-09 2013-03-14 Ocz Technology Group Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113126900A (zh) * 2019-12-30 2021-07-16 美光科技公司 用于存储器子系统的媒体管理的单独核心
US12001330B2 (en) 2019-12-30 2024-06-04 Micron Technology, Inc. Separate cores for media management of a memory sub-system
CN114243849A (zh) * 2021-12-23 2022-03-25 广东佳的美智能科技有限公司 移动电源芯片数据校准系统及共享移动电源系统
CN115878047A (zh) * 2023-01-19 2023-03-31 苏州浪潮智能科技有限公司 一种数据一致性校验方法、装置、设备及存储介质
CN115878047B (zh) * 2023-01-19 2023-06-16 苏州浪潮智能科技有限公司 一种数据一致性校验方法、装置、设备及存储介质

Also Published As

Publication number Publication date
JP6216441B2 (ja) 2017-10-18
US9519615B2 (en) 2016-12-13
US20140304460A1 (en) 2014-10-09
JP2016514881A (ja) 2016-05-23
CN105339905B (zh) 2018-11-06
EP2984570A1 (en) 2016-02-17
EP2984570A4 (en) 2017-11-08
US10410693B2 (en) 2019-09-10
US20170076763A1 (en) 2017-03-16
WO2014169015A1 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
CN105339905B (zh) 具有对大容量固态存储器资源的独立直接访问的多处理器系统
US11340794B2 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
CN106462510B (zh) 具有独立直接接入大量固态存储资源的多处理器系统
AU2014236657B2 (en) Synchronous mirroring in non-volatile memory systems
US10140136B2 (en) Distributed virtual array data storage system and method
US8719520B1 (en) System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
US9164689B2 (en) Data storage system and method of processing a data access request
US20160253125A1 (en) Raided MEMORY SYSTEM
CN105843557B (zh) 冗余存储系统、冗余存储方法和冗余存储装置
US8966170B2 (en) Elastic cache of redundant cache data
US11010054B1 (en) Exabyte-scale data processing system
CN104956309A (zh) 存储系统及数据管理方法
KR20120071058A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10678470B2 (en) Computer system,control method for physical storage device,and recording medium
US10515014B1 (en) Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
US10503416B1 (en) Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
US10713334B1 (en) Data processing system with a scalable architecture over ethernet
US10496284B1 (en) Software-implemented flash translation layer policies in a data processing system
Rosenfeld et al. Raidp: replication with intra-disk parity
US20240103731A1 (en) Non-volatile storage device offloading of host tasks
US20240103756A1 (en) Non-volatile storage device offloading of host tasks
US20240103765A1 (en) Non-volatile storage device offloading of host tasks
CN101149946B (zh) 一种处理流媒体数据的方法
CN116401063A (zh) 一种raid的资源分配方法、装置、设备及介质
Pan Data Management on Non-Volatile Memory: From Mobile Applications to Large-Scale Databases

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