CN110275840A - 在存储器接口上的分布式过程执行和文件系统 - Google Patents

在存储器接口上的分布式过程执行和文件系统 Download PDF

Info

Publication number
CN110275840A
CN110275840A CN201910475716.XA CN201910475716A CN110275840A CN 110275840 A CN110275840 A CN 110275840A CN 201910475716 A CN201910475716 A CN 201910475716A CN 110275840 A CN110275840 A CN 110275840A
Authority
CN
China
Prior art keywords
memory
module
interface
data
subsystem
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
CN201910475716.XA
Other languages
English (en)
Other versions
CN110275840B (zh
Inventor
S·伍
R·佩雷戈
P·巴特拉
L·莱
C-M·杨
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.)
Rambus Inc
Original Assignee
Rambus Inc
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
Priority claimed from US14/187,290 external-priority patent/US11048410B2/en
Application filed by Rambus Inc filed Critical Rambus Inc
Priority to CN201910475716.XA priority Critical patent/CN110275840B/zh
Publication of CN110275840A publication Critical patent/CN110275840A/zh
Application granted granted Critical
Publication of CN110275840B publication Critical patent/CN110275840B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在DRAM存储器通道上的存储器模块上包括非易失性存储器(例如,闪存、固态盘)。驻留在DRAM存储器通道上的非易失性存储器可以被集成到操作系统的现有文件系统结构中。驻留在DRAM存储器通道上的非易失性存储器可以被呈现为分布式文件系统的一部分或全部。请求和/或远程过程调用(RPC)请求,或者与请求和/RPC相关联的信息,可以通过DRAM存储器通道被路由至存储器模块,以便于服务计算和/或分布式文件系统命令。

Description

在存储器接口上的分布式过程执行和文件系统
分案申请说明
本申请是申请日为2015年02月21日、申请号为201580000052.1、发明名称为“在存储器接口上的分布式过程执行和文件系统”的中国发明专利申请的分案申请。
相关申请的交叉参考
本申请要求2014年2月23日提交的名称为“DISTRIBUTED PROCEDURE EXECUTIONAND FILE SYSTEMS ON A MEMORY INTERFACE”的美国专利申请第14/187,290号的权利,其内容为了所有目的通过引用并入于此。本申请还与2013年3月15日提交的名称为“METHODSAND SYSTEMS THAT COMMUNICATE VIA A MEMORY MODULE INTERFACE”的美国专利临时申请第61/788,196号有关,与2012年12月3日提交的名称为“METHODS AND SYSTEMS FORSUPPORTING FUNCTIONS ON A LEGACY MEMORY INTERFACE”的美国专利临时申请第61/732,898号有关,与2013年10月27日提交的名称为“COMMUNICATION VIA A MEMORY INTERFACE”的美国专利申请第14/064,167号有关,与2011年8月24日提交的名称为“METHODS ANDSYSTEMS FOR MAPPING A PERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的美国专利临时申请第61/526,953号有关,与2012年5月16日提交的名称为“METHODS ANDSYSTEMS FOR MAPPING A PERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的美国专利临时申请第61/647,986号有关,与2012年7月12日提交的名称为“METHODS ANDSYSTEMS FOR MAPPING A PERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的美国专利临时申请第61/670,874号有关,与2012年8月20日提交的名称为“METHODS ANDSYSTEMS FOR MAPPING A PERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的美国专利临时申请第61/691,134号有关,与2012年8月23日提交的名称为“METHODS ANDSYSTEMS FOR MAPPING A PERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的国际申请PCT/US12/52000有关,与2012年8月23日提交的名称为“METHODS AND SYSTEMS FORMAPPING A PERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的国际申请PCT/US12/52043有关,与2012年8月23日提交的名称为“METHODS AND SYSTEMS FOR MAPPING APERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的国际申请PCT/US12/52052有关,以及与2012年8月23日提交的名称为“METHODS AND SYSTEMS FOR MAPPING APERIPHERAL FUNCTION ONTO A LEGACY MEMORY INTERFACE”的国际申请PCT/US12/52059有关,其全部的十一个的内容为了所有目的通过引用并入于此。
附图说明
在附图中通过示例示例的方式而非限制的方式示出本发明,并且其中类似的参考标号指代类似的元件。
图1描绘了根据一个实施例的存储器系统100。系统100包括经由主存储器接口115与存储器模块110交流数据DQ、命令和地址CA的CPU 105。
图2示出了根据一个实施例的数据结构200,外围驱动器146在高速缓存器142中汇集并存储该数据结构200以将命令和数据传送至OPBA命令端口。
图3是示出根据一个实施例的图1中的存储器模块110如何管理来自CPU 105的对于访问主存储器120和来自外围处理器135的支持的OS请求的流程图。
图4描绘了根据另一实施例的存储器系统400。
图5描绘了根据实施例的支持外围命令广播和可配置的数据宽度的存储器模块500。
图6示出了外围驱动器(例如,图1的驱动器146)在高速缓存器中汇集和存储以将指令和数据传送至32个模块500的OPBA命令端口的数据结构600,在四个存储器通道中的每个存储器通道上有8个模块。
图7是混合闪存/DRAM存储器模块的示图。
图8是示出混合闪存/DRAM计算子系统的框图。
图9是混合闪存/DRAM存储器模块的示图。
图10是示出混合闪存/DRAM计算子系统的框图。
图11是混合盘类型非易失性存储和DRAM存储器模块的示图。
图12是示出混合盘类型非易失性存储和DRAM存储器模块计算子系统的框图。
图13是用于访问存储在DRAM存储器通道上的非易失性存储器中的文件数据的系统的示图。
图14是用于远程地访问存储在DRAM存储器通道上的非易失性存储器中的文件数据的系统的示图。
图15是用于使用块I/O存储类型设备命令远程地访问存储在DRAM存储器通道上的非易失性存储器中的文件数据的系统的示图。
图16是用于服务对于存储在DRAM存储器通道上的非易失性存储器中的数据的远程请求的系统的示图。
图17是用于服务向DRAM存储器通道上的固态盘的远程请求的系统的示图。
图18是用于分布式文件处理的系统的示图。
图19是示出操作存储器模块的方法的流程图。
图20是示出操作存储器模块的方法的流程图。
图21是示出操作存储器模块的方法的流程图。
图22是示出操作存储器模块的方法的流程图。
图23是示出服务远程过程调用请求的方法的流程图。
图24是示出传送和服务远程过程调用请求的方法的流程图。
图25是示出执行分布式处理功能的方法的流程图。
图26是示出操作存储器模块的方法的流程图。
图27是计算机的框图。
具体实施方式
在一个实施例中,非易失性存储器(例如,闪存、固态盘)被包括在DRAM存储器通道上的存储器模块上。这帮助由非易失性存储器提供的大容量存储驻留于更接近系统的计算机资源(即,CPU)。此外,CPU和非易失性存储器可以使用DRAM存储器通道的相对高的带宽来传送命令和/或数据(可能经由控制器)。
驻留在DRAM存储器通道上的非易失性存储器可以被集成到流行的操作系统的现有文件系统结构中,以利于采纳到流行的编程范例中。一种这样的集成方法是使驻留在DRAM存储器通道上的非易失性存储器呈现为分布式文件系统的一部分或全部。例如,可以修改流行的操作系统以将驻留在DRAM存储器通道上的非易失性存储器呈现为网络文件系统(NFS)、Hadoop文件系统和/或其他分布式文件系统(DFS)的一部分。远程过程调用(RPC)请求和/或源自本地CPU的请求(使用RPC机制/软件层或者另一种方式),或者与本地请求和/或RPC相关联的信息可以通过DRAM存储器通道被路由至存储器模块,以便于服务计算和/或DFS命令。
图1描绘了根据一个实施例的存储器系统100。系统100包括经由主存储器接口115与存储器模块110交流数据DQ以及命令和地址CA的CPU 105。在该示例中,存储器模块110包括主存储器120,主存储器120由IC主存储器设备125的组来组成。模块110附加地包括专用集成电路(ASIC)130,该专用集成电路(ASIC)130充当缓冲设备以在CPU 105和主存储器120之间中继命令和数据。ASIC 130附加地包括嵌入式处理器135,该嵌入式处理器135共享对于支持外围功能、诸如图形或计算处理的主存储器的访问,用于改善的总体的系统性能。外围接口140以将修改CPU 105的需求最小化或者消除的方式来促进CPU 105和外围处理器135之间的外围命令和数据的通信,从而减少对于采用具有集成处理支持的主存储器模块的实践阻碍。
可能是片上系统(SoC)的CPU105包括高速缓存器142和存储器控制器144,并且执行软件外围驱动器146。如本文详细描述的,驱动器146具有对密钥存储148的访问,并且例如,可以是被提供来支持与模块110的通信的软件和/或固件驱动器。驱动器146可以是由制造商或消费者加载的软件,并且可以考虑到遗留存储器系统与少量硬件修改或无硬件修改的兼容性。
I2C控制器150和相关的串行总线提供可靠的标准化通道,该标准化通道允许CPU105访问来自模块110的特定于模块的配置信息,该配置信息通常存储在EEPROM(未示出)中。该信息用于使用本领域技术人员公知的技术来初始化相对高性能的接口115。在描绘的实施例中使用这些相同的资源以在外围接口140和密钥存储148之间共享密钥。控制器150可以与CPU 105的其他部件集成。
ASIC 130包括两个物理接口(PHY),这两者可以是传统的物理接口。第一物理接口是模块接口152,该模块接口152从控制器144接收外部生成的事务,如模块命令、主存储器地址和模块数据。第二个物理接口是存储器接口154,该存储器接口154支持ASIC 130和主存储器120之间的通信。尽管存储器接口可以是与模块接口相同的类型,但在一些实施例中,存储器接口可以在所使用的信令类型、数据宽度、命令格式或者要求由ASIC 130转换的其他方面上有所不同。桥接电路156包括选择逻辑158和160,它们基于使用模块命令所指定的桥接标准,允许外围接口140桥接主存储器120与CPU 105或者与外围处理器135之间的命令、地址和数据的通信。桥接电路156还允许外围接口140捕获模块数据,该模块数据包括操作代码(“操作码”或“外围命令”)、地址、数据和其他用于外围处理器135的控制信号。模块接口152可以支持与主存储器接口154不同数量的并行数据通道,其中桥接电路156可以针对在接口之间传送的存储数据执行串行化/反串行化操作。
外围接口140功能性地驻留在桥接电路156和外围处理器135之间,并且包括地址-捕获/命令解码器162、操作码端口基地址(OPBA)寄存器164、写数据队列166和读数据队列168、密钥寄存器170、比较器172以及操作码解码器174。这些元件共同允许外围接口140建立操作码开口,该操作码开口与一个或多个主存储器地址的指定的捕获范围相关联,CPU105可以通过该操作码开口向外围处理器135传输操作码和数据。响应于这种操作码,外围处理器135可以通过执行存储在主存储器120中或其他地方的指令来支持各种开口功能。在一些实施例中,外围处理器135具有响应于操作码生成外围存储命令、地址和数据的能力。外围接口用来捕获模块数据的主存储器地址的指定的捕获范围表示在模块接口处可接收的存储器地址的子范围,并且可以位于在用于对主存储器定址的主存储器地址的全范围之外。
主存储器120可包括多个独立的可访问区块或区块组,并且设备125中的一些设备可以被用于存储纠错码。在这种上下文中,“区块(rank)”指代用于单个存储器访问的单独可寻址存储设备的集合。在这种实施例中,不同的区块或区块组可以支持单独的物理存储器接口,诸如用于CPU 105和外围处理器135中的每一个的物理存储器接口。在这种实施例中,向解码器162指定的桥接标准将模块命令、主存储器地址和模块数据从模块接口152传递至存储设备的多个区块中的至少一个区块,并且将外围存储器命令、地址和数据从外围处理器传递至存储设备的多个区块中的至少另一个区块。这样的桥接标准可以是动态地可选的,以支持从两个处理器对主存储器的顺序的或者同时的访问而不会丢失多个区块中的所选的一个区块中的数据,或者在将模块命令、主存储器地址和模块数据从模块接口传递至存储器设备的多个区块中的所选的一个区块与将外围存储命令、地址和数据从外围处理器传递至多个区块中的所选的一个区块之间进行改变。
图2示出了根据一个实施例的数据结构200,外围驱动器146在高速缓存142中汇集并存储该数据结构200以将指令和数据传送至OPBA命令端口。数据结构200将向OPBA行指定通过一个或多个写操作被存储在写数据队列166中的信息。信息以与写数据队列166相同的方式被划分为256个逻辑列,并且每个逻辑列被进一步划分为8个64位字段:指令字段、地址字段、写数据字段、写掩码字段以及预留的四个字段。这些字段都唯一地由图2中的“四字索引”来指定。术语“四字”代表“四倍长字”,其中一个字是16位。
指令字段的八位OP[7:0]用于表示将由操作码解码器174解码的操作码(或者被传递至外围处理器135用于解码)。另外八位BL[7:0]存储突发长度变量,该突发长度变量可以用于指定突然进入队列166的后续写访问的数量。因此,实施例考虑到高效率的开放页面的高达256列的写和读数据突发。可以要求处理器135在执行在位OP[7:0]中编码的任何指令之前完成指定的突发以避免竞态条件。下一指令位M[0]表示是否应用在写掩码字段中指定的数据掩码。位PSB[2:0]是可选的外围选择位,这样说是因为它们指定作为广播命令目标的一个或多个外围处理器。结合图5详细描述了使用PSB位来允许在多个模块处接收的命令将由它们对应的外围处理器中的任何一个外围处理器或组合执行的实施例。指令字段的剩余位63:20是预留的。
地址字段允许CPU 105向外围处理器135指定存储器地址,诸如以标识主存储器中的位置、模块110上的寄存器或者一些其他存储器或功能。这些地址可以映射到ASIC 130的存储器层次结构中的任何地方并且以驱动器146与ASIC 130之间期望的任何方式,而对CPU105或操作系统的影响很小或没有影响。
OPBA列中的写数据字段允许操作码向OPBA传输多达64位的写数据。OPBA的剩余255个列中的每一列都可以包含多达512个附加位的写数据。所有这些写数据都可以作为外围写数据WDp被传递至外围处理器135用于存储和操作。例如,这样的数据可能包括将被存储在主存储器120中或其他地方用于由处理器135执行的处理器指令。
如之前所指出的,数据结构200在高速缓存器142中被创建并且被写入写数据队列166。处理器135可以操作或者存储这一信息并经由读数据队列168将这种操作的结果或者从存储器读取的数据返回至CPU 105。下面指出可能的操作和它们相关联的操作码的非穷尽的列表。
图3是示出根据一个实施例的图1中的存储器模块110如何管理来自CPU 105的对于访问主存储器和来自外围处理器135的支持的OS请求的流程图300。可以使用指向主存储器地址的访问命令来初始化和引导主存储器请求和外围处理器请求两者。
在305处,外围接口140中的解码器162经由命令/地址总线CA捕获来自存储器控制器144的激活命令ACT。解码器162参考寄存器164以确定命令指向的主存储器地址是否与存储的OPBA行相匹配(判定310)。如果不匹配,则该命令是传统的主存储器命令。解码器162将该命令经由选择逻辑160导向主存储器120,以激活(打开)设备125中的被寻址的行(315)。模块110随后接收指向打开的行内的列的一个或多个访问命令。在该实施例中,这种访问命令指定OPBA的库和区块,但是缺少行地址。如For循环320A/B所示,主存储器设备125解码并执行这些命令(325和330)。最后,模块110将接收预充电命令(355),并且设备125将关闭打开的行(340)来为下一次主存储器访问做准备。
返回到判定310,并且假设接收到的命令指向OPBA行,解码器162激活用于对与OPBA行相对应的区块(rank)和库(bank)地址的后续列访问的陷阱(trap)(345)。列命令通常不明确地标识命令所指向的打开行,但是大多数DRAM设备和控制器仅允许在每个区块和库中打开一行。因此,一旦OPBA行被“激活”,指向OPBA区块和库地址的任何列访问命令都可以被陷阱捕获为使用WD队列166或者RD队列168的数据传输。对指向激活的OPBA行的OPBA行和列命令的激活还可以与由解码器162执行的比较并行地被传递至存储器接口154,以避免用于比较操作的潜在增加的延迟。向存储器接口154并行转发OPBA行活动可以导致在主存储器设备125上的活动(这种活动是不重要的),然而,如果OPBA行被选择,则桥接电路156将不向主存储器120或者从主存储器120传递被寻址的数据。解码器162还控制选择逻辑158以将数据总线DQ连接至一对队列166和168,它们分别充当写缓冲器和读缓冲器。
队列166和168中的每个队列存储被划分为256个由列地址唯一标识的64B分段的一个页面(16KB),例如,对主存储器120的页面的分段进行镜像的寻址结构。写队列166有效地代替主存储器中的OPBA行地址来用于写操作,同时读队列168对于读操作进行相同的处理。在该示例中队列166和168为静态随机存取存储器(SRAM),因此从DRAM行要求激活的意义上来说它们不要求“激活”。
一旦解码器162将行激活识别为指向OPBA行并且因此指向“打开的”队列,解码器162就等待指定操作和该操作指向的列的访问命令。然后,解码器162将每个后续的访问命令解码为OPBA行地址解码(For循环350A/B中的355)。如果在该示例中写访问针对第0列、指派的OPBA,则解码器162向操作码解码器174发出控制信号“解码”,使得解码器174从写数据队列166中的第0列地址中解码操作码(365),并将经解码的操作码OpCode和任何相关联的外围写数据WDp传递至外围处理器135。外围处理器135执行操作码OpCode以执行一些外围功能(370),并且这样做可以经由桥接电路156改变主存储器的内容。
针对OPBA行的访问命令可以是针对256列中的任意列。解码器162在每一种情况下对命令信息进行解码并且对队列166和168执行所命令的功能(375)。例如,针对OPBA的行地址的任意列的读命令从读队列168中的指定的位置子集中读取,以及针对同一行的任意列的写命令写入写队列166中的对应的位置子集。最终,模块110将接收针对指派给OPBA的区块和库的预充电命令(380),并且解码器162将释放列地址陷阱(385)。此后,模块110等待下一命令。还应该注意,尽管流程图300示出了用于主存储器访问和OPBA行访问的单独的路径,但典型的存储器控制器将交错多个库和/或区块的存储器命令,因此在许多实例中,CPU105可以在指向不同区块和/或库的连续列访问命令中访问主存储器120并与外围接口140进行通信。
图4描绘了根据另一实施例的存储器系统400。系统400包括与图1的系统100共同的特征,类似标识的元件是相同或相似的。为了简化而大幅省略了共同特征的讨论。具体地,在图4所示实施例中,主存储器120被划分为两个部分120a/120b,它们分别经由存储器接口154a/154b被耦合至ASIC 405。
系统400包括通过主存储器接口互连的CPU 105和存储器模块410,该主存储器接口包括命令/地址总线415和数据总线420,它们中的每一个都包括多个并行通道。命令/地址总线415传送片选、库、行和列(CS/B/R/C)地址信号,以及数据总线420传送数据信号DQ。总线415和420均被示出为包括将途中的位置切换至模块410的信号导线。交叉处示出了在一些系统中做出的信号路由选择,以简化在支持CPU 105的印刷电路板(例如,母板)上的部件布局和线路布线,或者通过减小线路长度或分支长度来提高信号完整性。对于存储器操作,假如将切换应用于读和写两者,通常可以切换数据或地址的一些位的位置而不影响电路性能。一些信号线路因此可以以更加便利或有效的方式来进行布线,而不引入逻辑错误,只要存储器模块仅存储和读取。这种习惯做法有时被称为“搅和(swizzling)”。
不影响主存储器访问的搅和的数据或地址线可以仍然干扰去向外围接口425的命令。例如,交换数据位可以改变嵌入到外围处理器135的写数据中的操作码。因此,外围接口425包括可编程去搅和电路430和相关联的搅和寄存器435,其中后者可以被连接至一些串行存在检查(SPD)逻辑440或其部分。在模块410被置于系统400中之前,EEPROM445或其他存储器利用用于母板的搅和信息、用于寄存器170的密钥和其他初始化信息来编程(EEPROM还可以在模块第一次被连接时由系统编程,或者搅和寄存器435可以在每次重置之后明确地由系统加载)。然后,微控制器450加载寄存器435和170,作为例如校准模块和存储器接口的初始化程序的一部分。因此,去搅和电路430响应于来自寄存器435的去搅和信号DeS通过对在模块接口处并行地接收到的模块数据重新排列来抵消板上搅和。
传统的串行接口455向控制器450提供测试和控制访问。外围接口425如上面结合图1所描述地来操作,因此这里省略了详细的处理。EEPROM 445中的信息包括引导代码,该引导代码可以由控制器450执行,使得当系统400完成上电重置时,模块接口152和存储器接口154,以及480被校准。这些校准过程可以对于CPU 105是透明的。
去搅和电路430没有被示为影响模块接口152与桥接电路156之间的存储器流量。在备选的实施例中,所有存储器流量都被“去搅和”,使得存储在主存储器中的数据可以被外围处理器以一致的存储格式直接访问。
关于接口425的右侧,外围处理器135与外围存储器控制器470相连,该外围存储器控制器470以与存储器控制器144管理针对CPU 105的访问相同的方式管理针对处理器135的对于主存储器120的访问。
在该实施例中,外围处理器135具有对于附加的外围本地存储器设备475的访问,并且经由本地物理接口480和控制器485来获得和管理访问。本地控制器485可以包括对在由主存储器采用的寻址方案和专用于本地存储器的寻址方案之间的地址转换的支持。外围存储器控制器470可以类似地包括对根据处理器135的需求的地址转换的支持。
例如,外围存储设备475可能是高性能的但是相对于主存储器具有较小的可寻址空间以支持改善的外围性能。例如,外围处理器135可以执行存储在(多个)外围存储器设备475中的外围图形指令。不是图形处理或者除图形处理之外,外围功能可以包括网络支持、数据压缩/解压缩、加密/解密、科学计算等。不同的存储器模块能够支持相同或者不同类型的外围处理,或者仅模块的子集可以包括这种支持。用于外围功能的操作对象可以被提供为外围写数据WDp或者从外围写数据WDp中检索到。
图5描绘了根据实施例的支持外围命令广播和可配置的数据宽度的存储器模块500。存储器模块500与图1的模块110类似,类似标识的元件是相同或相似的。模块500与模块110的不同之处在于,模块500的外围接口505的实施例包括外围选择位(PSB)解码器510,该外围选择位(PSB)解码器510允许外围接口505确定广播外围命令是否被指向常驻处理器135。模块500的这一方面在本文参照的相关应用已经被详细说明。模块500与模块110的不同之处还在于,模块500的桥515是基于来自串行存在检查(SPD)存储器520的控制输入可配置为经由数据线DQ[63:0]的全部或者子集来传输宽度为8、16、32或64的数据。支持多种数据宽度的模块,例如可以用于实现动态点对点(DPP)存储器架构。简而言之,DPP架构将点对点信令的性能优势与多点拓扑的灵活性组合到一起。模块500以前面详细说明的方式将对DPP的支持与完成外围处理的能力组合到一起。使用公知的技术,在启动时初始化SPD存储器520以选择期望的宽度。
在这样的上下文中,命令广播指代相同命令到多个外围处理器的同时传送,该多个外围处理器被实例化在相同或不同模块上。有时期望将工作分割成多个类似的任务并且在单独的外围处理器上执行每一个。例如,在视频处理中,已知为分割帧渲染的技术在多个图形处理器中分配将对单个视频帧执行的渲染处理。处理器在帧的不同子集上并行地工作以加快渲染过程。这种并行处理可以在图形之外的许多领域中具有优势。具有模块500的多个实例的存储器系统可以向支持并行处理的多个模块广播相同的命令。在一些实施例中,命令可以指定一个或多个目标处理器,并由此可以被传送至多个外围处理器中的一个外围处理器或任意组合。
图6示出了数据结构600,外围驱动器(例如,图1的驱动器146)在高速缓存器中汇集和存储该数据结构600以将指令和数据传送至32个模块500的OPBA命令端口,其中在四个存储器通道的每个存储器通道上有8个模块。在该示例中,模块是双列直插式模块(DIMM),但是还可以使用其他模块类型。一些实施例附加地支持PSB位字段来以结合图5所详细描述的方式支持广播命令。
图7是混合闪存/DRAM存储器模块的示图。在图7中,计算机系统700包括CPU/存储器控制器子系统710、I/O控制器730和存储器模块720。CPU/存储器控制器子系统710包括耦合至存储器控制器714的CPU 712。一个或多个存储器模块720耦合至子系统710中的存储器控制器714。每个存储器模块720都包括集成电路(IC)设备721、CPU存储器723(又称主存储器)和非易失性存储器728。IC 721包括非易失性存储器控制器725和处理器722。处理器722可以是缓冲设备的一部分。处理器722可以是微处理器、有限状态机或作为缓冲设备的一部分的其他逻辑电路,或者包括微处理器、有限状态机或作为缓冲设备的一部分的其他逻辑电路。存储器723通常包含CPU 712和/或IC 721使用的指令和/或数据。应该理解,CPU 712可以包括多个处理器核。CPU 712可以包括堆叠的裸片设备,其具有例如使用硅穿孔堆叠的一个或多个处理器和/或存储器。CPU 712可以包括和/或作为专用处理器,诸如举例而言,数字信号处理器、图形处理单元(GPU)、阵列处理器、存储管理处理器、数据分析处理器(例如,Hadoop分布式文件系统处理器或MapReduce处理器)、模式识别处理器和/或图像处理处理器(即,图像处理器)。CPU 712可以在模块720之间划分和协调计算过程和任务。
IC 721还可以被称为“运算引擎”、“计算引擎”、“图形处理器”、“渲染引擎”、“处理单元”、“加速器”、“卸载引擎”和/或GPU。IC 721可以包括和/或作为异构处理单元,该异构处理单元包括CPU、GPU、视频处理器等中的一个或多个的功能。IC 721可以包括或者作为串行-ATA(SATA)、串行连接的SCSI(SAS)、eSATA、PATA、IEEE 1394、USB(所有修订版本)、SCSI超级(SCSI Ultra)、光纤通道(FiberChannel)、无限带宽(Infiniband)、雷电(Thunderbolt)或其他工业标准I/O接口(诸如PCI快速——PCIe)。IC 721可以包括或者作为网络处理器单元(NPU),诸如TCP卸载引擎(TOE)、协议转换器(例如,通过SATA的TCP、通过PCIe的TCP、加速SCSI互连等)和/或协议包转换器。IC 721可以包括或者作为固定功能图形处理单元、加密/解密加速器/卸载引擎(例如,用于实现/加速SSL、AEC、DEC等)、压缩器/解压器、正则表达式加速器引擎、数字信号处理器(DSP)、信号路径处理器、傅里叶变换处理器、反傅里叶变换处理器和/或媒体格式编码器/解码器(例如,JPEG、DVX、AVI、MP2、MP3、MP4、蓝光、HD-DVD、DVD等)。还应该理解,模块720可以被耦合至本地SSD/HDD和/或企业存储类型系统,诸如外部盘、外部盘阵列、JBOD、RAID阵列、磁带驱动、光学驱动等。
存储器723通常包括耦合到一起以形成存储空间块的多个存储设备。存储器723可以是或者包括但不限于,SRAM、DDR3、DDR4、DDR5、XDR、XDR2、GDDR3、GDDR4、GDDR5、LPDDR和/或LPDDR2以及后继存储器标准和技术。存储器723可以是或者包括设备的堆叠,诸如硅穿孔(TSV)堆叠和/或混合存储立方体(HMC)。可从Hybrid Memory Cube Consortium(http://hybridmemorycube.org/)得到关于HMC的进一步的信息。
每个IC 721都能够执行各种存储器访问和/或数据处理功能。对于图7所示实施例来说,存储器控制器714还被耦合至I/O控制器730,该I/O控制器730控制数据进出系统的流动。可选的视频输入端口(图7中未示出)可以向存储器控制器714提供数据。显示接口(图7中未示出)可以向一个或多个设备(诸如显示设备或存储设备)提供数据输出。对于支持视频输入或捕获能力的系统来说,存储器控制器714上的视频输入端口是处理视频源数据的传送的一种方式。另一种向系统传送视频输入数据的方式将包括通过I/O控制器730将向存储器控制器714传送来自外围模块的数据。
在图7的示例中,CPU/存储器控制器子系统710被耦合至多个不同的存储器模块720。每个存储器模块720都包括IC 721和非易失性存储器728。IC 721可以是或者包括微处理器、有限状态机或作为缓冲设备的一部分的其他逻辑电路。每个IC 721都能够执行各种数据处理功能。因此,不同(或相同)存储器模块上的IC 721能够同时执行不同的处理功能(即,并行处理)。不同(或相同)存储器模块上的IC 721能够执行各种矢量并行处理,其中在(多个)IC 721之间将功能矢量化并且划分功能。不同(或相同)存储器模块上的IC 721能够执行簇并行处理,其中(多个)IC 721协作以同时(或并行)作用于相同问题。此外,每个IC721能够与其他存储器模块720上的其他IC 721通信。
每个IC 721能够在CPU 712和/或存储器控制器714的帮助下与其他存储器模块720上的其他IC 721通信。模块720和/或IC 721可以是异构的。换句话说,模块720和/或IC721可以不是全部完全相同的。IC 721可以包括不是全部完全相同的多个处理器核。例如,IC 721可以包括CPU类型处理核和GPU类型处理核的混合。模块720和/或IC 721可以在相同时刻执行不同的功能。模块720和/或IC 721可以由不同的供应商来生产。可以添加、减少以及以即插即用方式互换地使用由不同供应商生产的模块720和/或IC 721。模块720和/或IC721可以类似于虚拟机的操作与运行软件、过程、应用和操作系统的独立(和非独立)附件并行地作用。
CPU 712可以控制存储器控制器714以将特定的处理任务(诸如图形处理任务、Hadoop和/或MapReduce任务)分配给IC 721,并且自身可以执行某些处理任务。这些任务可以包括将要处理的数据和/或将要执行的指令。这些任务可以包括执行应用、驱动、软件层、运行时功能和/或操作系统代码中的全部或者部分。尽管在图7中示出三个存储器模块720,但备选的系统可以包含耦合至一个或多个存储器控制器714的任何数量的存储器模块。添加和移除存储器模块720的能力可以提供可升级和可扩展的存储器和计算架构。此外,应该理解,系统700中的模块可以是异构的的。换句话说,系统700中的存储器模块720的集合的一部分可以是混合闪存/DRAM类型模块,而其他部分可以是其他类型的模块(例如,完全地DRAM、完全地存储器和/或完全地非易失性存储器)。系统700可以支持混合类型的模块。还应该理解,混合闪存/DRAM类型模块720是示出可以存在经由存储器通道访问的非易失性、大容量(即,比DRAM模块大)存储的示例。特定的模块720例如可以是全快闪模块,或者甚至可以在模块上包括或不包括DRAM的较新的存储类存储器。
CPU 712可以通过从与模块720相关联的地址开口读取和写入与模块720相关联的地址开口来与IC 721通信。CPU 712可以被配置为使用由任何处理器CPU 712支持的任何高速缓存策略以从该地址开口(或其部分)读取和写入该地址开口(或其部分)。然而,应该理解,在一个实施例中,最有用的高速缓存策略可以被限制于将被CPU 712处理的地址开口(或其部分)配置为不可缓存的存储器(UC)、合并写存储器或写回(WB)。在一个实施例中,这些高速缓存策略可以与某些指令(例如,屏障指令、流负载指令和/或流写入指令)的使用组合以实现CPU 721和IC 721之间最优的(例如,最高的)通信带宽。此外,当地址开口(或其部分)被配置为作为WC或WB进行处理,则至少最小突发尺寸可用于实现CPU 721和IC 721之间最优的(例如,最高的)通信带宽。换句话说,小突发尺寸(例如,小于某个、依赖实现的、每突发的列地址的数量)可以导致比CPU 721和IC 721之间的最优通信带宽小。较大的尺寸(例如,大于某个、依赖实现的、每突发的列地址的数量)可以接近(或近似)CPU 721和IC 721之间的最优(即,最高)通信带宽。应该理解,计算机系统700可以利用统一的存储器架构或不统一的存储器架构。计算机系统700不限于异构存储器。此外,还应该理解,计算机系统700(尤其和CPU 712)可以利用相干或不相干的高速缓存或缓存策略。
还有用的是将地址开口(或其部分)配置为UC,用于测试、易于实现和/或当CPU712和IC 721之间的带宽不是相对高的优先级时。为了测试目的将地址开口(或其部分)配置为WB可能是最有用的。在一些实施例中,将地址开口(或其部分)配置为WC可以导致CPU712和IC 721之间的最大带宽。
在一个实施例中,CPU 712通过从与模块720相关联的地址开口读取和写入与模块720相关联的地址开口来与IC 721通信。该地址开口可以被进一步划分为地址范围(也称端口),该地址范围被配置用于命令、状态和数据的通信。可以配置地址开口的端口并且将其尺寸定为地址(例如,列地址)的块。
在一个实施例中,计算机700上运行的操作系统可以产生指向块I/O和/或存储类型设备的I/O命令。这些块I/O和/或存储类型设备中的一个或多个可以对应于或具有驻留在存储器模块720上的存储数据。响应于用于存储在存储器模块720上的数据的块I/O和/或存储命令,CPU 712可通过从与模块720相关联的地址开口读取和/或写入与模块720相关联的地址开口来将存储器接口命令导向存储器模块720。
为了产生指向块I/O或存储类型设备的I/O命令,计算机700上运行的操作系统内核可以将块设备命令导向通用块层。响应于这些块设备命令,操作系统可以将被导向通用块层的块设备命令转换成向存储器模块720发送的存储器接口命令。
处理器722可以执行块存储I/O驱动器的全部或部分,该块存储I/O驱动器服务用于在非易失性存储器728中存储的数据的块I/O存储类型设备命令。非易失性存储器控制器725可以是或者包括固态盘控制器,该固态盘控制器向处理器722提供块I/O存储接口。该块I/O存储接口可用于去向和来自非易失性存储器728的数据的通信。例如,该块I/O存储接口可以使用SCSI或ATA命令。
在一个实施例中,模块720可以被配置为使用非易失性存储器728服务于对于块I/O存储类型设备命令的RPC请求。这些RPC请求可经由DRAM存储器通道被模块720接收,该DRAM存储器通道操作性地将存储器控制器714耦合至模块720。由模块720服务的RPC请求可以源自不直接与模块720连接的处理器(图7中未示出)(例如,网络上的远程处理器)。
可以在模块720上执行经由DRAM存储器通道被模块720接收的过程调用和过程数据(例如,通过处理器722和/或非易失性存储器控制器725)。这些过程调用和过程数据可以经由定址到模块720的存储器空间(例如,开口)的存储器写事务被传输至模块720。这些过程调用可以包括RPC请求。由模块720执行的过程调用和过程数据可以实现一个或多个虚拟文件系统过程调用。可以使用NFS请求来访问非易失性存储器728,该NFS请求可以经由定址到模块720的存储器空间的存储器写事务被传输至模块720。可以使用HDFS请求来访问非易失性存储器728,该HDFS请求可以经由定址到模块720的存储器空间的存储器写事务被传输至模块720。
可以在模块720上执行经由DRAM存储器通道被模块720接收的过程调用。这些过程调用可包括使用非易失性存储器728服务的块I/O存储类型设备命令。这些过程调用可以包括映射调用,该映射调用指定将由模块对对应的输入数据块执行的专用映射操作。映射操作还可以产生将使用非易失性存储器728来存储的中间数据值。
图8是示出混合闪存/DRAM计算子系统的框图。在图8中,子系统801包括子系统800、本地存储器824和非易失性存储器828。子系统800包括处理器812、逻辑816、存储器控制器817、CA输入接口896、多路复用器(MUX)逻辑819、CA0接口886、CA1接口887、HS串行DQ接口878和非易失性存储器控制器827。子系统800还包括存储器/高速缓存器控制器818。存储器/高速缓存器控制器818被操作性地耦合至本地存储器824。本地存储器824可以包括高速缓存存储器分区和处理器存储器分区。本地存储器824可以通过一个或多个存储器通道被操作性地耦合至子系统800。应该理解,子系统801可以被包括在存储器模块720上。因此,能够看出,子系统800可在存储器模块720中用作IC 721,并且子系统801可以被配置在存储器模块720上。
在一个实施例中,具有子系统801的存储器模块(例如,存储器模块120)可以具有被配置为与存储器控制器连接的存储器接口。子系统800可以是耦合至存储器接口的集成电路设备。子系统800包括处理器812、CA1接口887、非易失性存储器控制器827和到非易失性存储器828的接口。CA1接口887被配置为连接至第一类型的动态存储器集成电路设备。非易失性存储器控制器827被耦合至处理器812。到非易失性存储器828的接口被配置为将非易失性存储器控制器827耦合至至少一个非易失性存储器集成电路设备。多个第一类型的动态存储器集成电路设备被耦合至CA1接口887。至少一个非易失性存储器集成电路设备经由到非易失性存储器828的接口被耦合至子系统800。
子系统801还可以包括本地存储器824。该本地存储器824可以包括至少一个第二类型的动态存储器集成电路设备。本地存储器824可以经由接口连接至子系统800。该接口可以经由存储器/高速缓存器控制器818将本地存储器824耦合至处理器812。本地存储器824可用于缓存在被耦合至CA1接口887的动态存储器集成电路设备中存储的数据。子系统801可以包括被耦合至处理器812和非易失性存储器827的SSD控制器。子系统801可以包括被耦合至处理器812和非易失性存储器控制器827的SATA控制器。非易失性存储器828可以存储处理器812可以引导和执行的操作系统。该操作系统可以是与例如CPU 812引导和运行的操作系统不同的操作系统。存储器模块可以经由存储器接口接收指令,该指令使得处理器812对数据执行操作。子系统800可以经由存储器接口返回这些操作的结果。
在一个实施例中,具有子系统801的存储器模块(例如,存储器模块120)可以具有存储器接口以连接至存储器通道。该存储器模块可以包括多个动态存储器集成电路。该存储器模块可以具有非易失性存储器828,该非易失性存储器828包括至少一个非易失性存储器集成电路设备。存储器模块可以包括子系统800。子系统800包括处理器812、CA1接口887、NV控制器827、CA输入接口896和高速(HS)串行DQ接口878。CA1接口887被耦合至多个动态存储器集成电路。NV控制器827经由接口被耦合至非易失性存储器828。
在一个实施例中,子系统800从被耦合至CA输入接口896的存储器控制器接收存储器命令。响应于该存储器命令,子系统800在耦合至CA1接口887的多个动态存储器集成电路和/或耦合至CA0接口886的多个动态存储器集成电路中存储数据。响应于来自于处理器812的命令,子系统800在非易失性存储器828中存储数据。
图9是混合闪存/DRAM存储器模块的示图。在图9中,计算机系统900包括CPU/存储器控制器子系统910、I/O控制器930和存储器模块920。CPU/存储器控制器子系统910包括耦合至存储器控制器914的CPU 912。一个或多个存储器模块920被耦合至子系统910中的存储器控制器914。每个存储器模块920包括集成电路设备921和CPU存储器923。集成电路设备921包括非易失性存储器928和处理器922。CPU存储器923通常包含由CPU 912使用的指令和/或数据。CPU存储器923可以是动态存储器集成电路。集成电路设备921可以包括其他功能。因此,应该理解,集成电路设备921可以对应于存储器模块720上的IC 721和/或非易失性存储器728或子系统800,并且模块920可以是存储器模块720的实施例。
由于非易失性存储器928被包括在集成电路设备921中,所以可以由处理器922直接访问非易失性存储器928。集成电路设备921可以包括SATA接口。处理器922和/或集成电路设备921与集成电路设备921上的SSD可以经由SATA接口通信。模块920可以包括用于与模块920外部的SSD/HDD通信的SATA连接器。
图10是示出混合闪存/DRAM计算子系统的框图。图10是示出混合闪存/DRAM存储器模块计算子系统的框图。在图10中,子系统1001包括子系统1000和本地存储器1024。子系统1000包括处理器1012、逻辑1016、存储器控制器1017、CA输入接口1096、多路复用器(MUX)逻辑1019、CA0接口1086、CA1接口1087、高速(HS)串行DQ接口1087和非易失性存储器1028。子系统1000还包括存储器/高速缓存器控制器1018。存储器/高速缓存器控制器1018被操作性地耦合至本地存储器1024。本地存储器1024可以通过一个或多个存储器通道被操作性地耦合至子系统1000。应该理解,子系统1001可以被包括在存储器模块920上。因此,能够看出,子系统1000可以用作存储器模块720中的IC 721或者用作存储器模块920中的IC 921,并且子系统1001可以被配置在存储器模块720和/或920上。
在一个实施例中,具有子系统1001的存储器模块(例如,存储器模块120和/或320)可以具有被配置为与存储器控制器连接的存储器接口。子系统1000可以是耦合至存储器接口的集成电路设备。子系统1000包括处理器1012、CA1接口1087和非易失性存储器1028。CA1接口1087被配置为连接至第一类型的动态存储器集成电路设备。非易失性存储器1028被耦合至处理器1012。多个第一类型的动态存储器集成电路设备被耦合至CA1接口1087。
子系统1001还可以包括本地存储器1024。该本地存储器1024可以包括至少一个第二类型的动态存储器集成电路设备。本地存储器1024可以经由接口连接至子系统1000。该接口可以经由存储器/高速缓存器控制器1018将本地存储器1024耦合至处理器1012。本地存储器1024可以用于缓存存储在耦合至CA1接口1087的动态存储器集成电路设备中的数据。非易失性存储器1028可以存储处理器1012可以引导和执行的操作系统。存储器模块可以经由存储器接口接收指令,该指令使得处理器1012对数据执行操作。子系统1000可以经由存储器接口返回这些操作的结果。
在一个实施例中,具有子系统1001的存储器模块(例如,存储器模块120和/或320)可以具有连接至存储器通道的存储器接口。该存储器模块可以包括多个动态存储器集成电路。该存储器模块可以包括子系统1000。子系统1000包括处理器1012、CA1接口1087、CA输入接口1096、高速(HS)串行DQ接口1078和非易失性存储器1028。CA1接口1087被耦合至多个动态存储器集成电路。
在一个实施例中,子系统1000从耦合至CA输入接口1096的存储器控制器接收存储器命令。响应于该存储器命令,子系统1000在耦合至CA1接口1087的多个动态存储器集成电路和/或耦合至CA0接口1086的多个动态存储器集成电路中存储数据。响应于来自处理器1012的命令,子系统1000在非易失性存储器1028中存储数据。
图11是混合盘类型非易失性存储和DRAM存储器模块的示图。图11是混合盘类型非易失性存储和DRAM存储器模块的示图。在图11中,计算机系统1100包括CPU/存储器控制器子系统1110、I/O控制器1130和存储器模块1120。CPU/存储器控制器子系统1110包括耦合至存储器控制器1114的CPU 1112。一个或多个存储器模块1120被耦合至子系统1110中的存储器控制器1114。每个存储器模块1120都包括集成电路设备1121、CPU存储器1123和盘型存储1128。集成电路设备1121包括盘接口1125和处理器1122。CPU存储器1123通常包含由CPU1112使用的指令和/或数据。盘型存储1128通常包含由CPU 1112和/或处理器1122使用的指令和/或数据。CPU存储器1123可以是动态存储器集成电路。集成电路设备1121可以包括其他功能。因此,应该理解,集成电路设备1121可以对应于存储器模块720中的IC 721、存储器模块920中的IC 921或子系统800和/或900,并且模块1120可以是存储器模块720和/或920的实施例。
在图11中示出的模块1120包括盘型存储1128。盘型存储例如可以是或者包括但不限于,固态盘驱动、被控制并组织为盘型大容量存储设备(例如,USB存储棒)的闪存或者小形状因子的磁盘驱动(例如,1.8”或着更小的硬盘驱动)。
盘接口1125管理/控制盘型存储1128。因此,模块1120可以具有DRAM和盘型存储器1128的组合。盘接口1125可以包括(或者可以是)SSD控制器(具有或不具有附加的处理器)。模块1120上的盘接口1125可以经由存储器通道被CPU 1112访问,该存储器通道通常具有比I/O总线更高的带宽。
盘型存储1128可以被处理器1122直接访问。换句话说,盘型存储1128可以被处理器1122访问而不通过存储器控制器1114或依赖于CPU 1112来传递数据/地址。盘接口1125可以是或者包括SATA接口。处理器1122和/或集成电路设备1121和盘型存储1128可以经由SATA接口通信。模块1120可以包括用于与模块1120外部的SSD/HDD通信的SATA连接器。
图12是示出混合盘类型非易失性存储器和DRAM存储器模块计算子系统的框图。在图12中,子系统1201可以包括子系统1200、可选的本地存储器1224和盘型存储1228。子系统1200包括逻辑1216、存储器控制器1217、CA输入接口1296、多路复用器(MUX)逻辑1219、CA0接口1286、CA1接口1287、HS串行DQ接口1278和盘接口1227。子系统1200可以可选地包括处理器1212和存储器/高速缓存器控制器1218。如果被包括,则存储器/高速缓存器控制器1218被操作性地耦合至本地存储器1224(如果被包括)。本地存储器1224可以通过一个或多个存储器通道被操作性地耦合至子系统1200。可以通过一个或多个存储器通道访问本地存储器1224。应该理解,子系统1201可以被包括在存储器模块1120上。因此,能够看出,子系统1200可以被用作存储器模块720中的IC 721、存储器模块921中的IC 921和/或存储器模块1120中的IC 1121,并且子系统1201可以被配置在存储器模块720、920和/或1120上。
在一个实施例中,具有子系统1201的存储器模块(例如,存储器模块720、920和/或1120)可以具有被配置为与存储器控制器连接的存储器接口。子系统1200可以是耦合至存储器接口的集成电路设备。子系统1200包括CA1接口1287和盘接口1227。CA1接口1287被配置为连接至第一类型的动态存储器集成电路设备。盘接口1227可以被耦合至处理器1212(如果存在)。多个第一类型的动态存储器集成电路设备被耦合至CA1接口1287。至少一个盘型存储设备1228经由盘接口1227被耦合至子系统1201。
子系统1201还可以包括本地存储器1224。该本地存储器1224可以包括至少一个第二类型的动态存储器集成电路设备。本地存储器1224可以经由接口连接至子系统1200。该接口可以经由存储器/高速缓存器控制器1218(如果存在)将本地存储器1224(如果存在)耦合至处理器1212(如果存在)。本地存储器1224可以用于缓存存储在被耦合至CA1接口1287的动态存储器集成电路设备中的数据。盘型存储1228可以存储处理器1212(如果存在)可以引导和执行的操作系统。存储器模块可以经由存储器接口接收指令,该指令使得处理器1212(如果存在)对数据执行操作。子系统1200可以经由存储器接口返回这些操作的结果。
在一个实施例中,具有子系统1201的存储器模块(例如,存储器模块720、920和/或1120)可以具有存储器接口以连接至存储器通道。该存储器模块可以包括多个动态存储器集成电路。存储器模块可以具有盘型存储1228。存储器模块可以包括子系统1200。子系统1200包括CA1接口1287、盘接口1227、CA输入接口1296和高速(HS)串行DQ接口1278。CA1接口1287被耦合至多个动态存储器集成电路。盘接口1227经由接口被耦合至盘型存储1228。
在一个实施例中,子系统1200从耦合至CA输入接口1296的存储器控制器接收存储器命令。响应于该存储器命令,子系统1200在耦合至CA1接口1287的多个动态存储器集成电路和/或耦合至CA0接口1286的多个动态存储器集成电路中存储数据。响应于处理器1212的命令,子系统1200可以在盘型存储1228中存储数据。
图13是用于访问存储在DRAM存储器通道上的非易失性存储器中的文件数据的系统的示图。在图13中,系统1300被示为包括软件层和硬件层。具体地,系统1300包括虚拟文件系统(VFS)1302、高速缓存器1304、映射层1310、通用块层1330、I/O调度层1340、块设备驱动器1351、块设备驱动器1352、模块块设备驱动器1360、块存储设备1370和模块1320。映射层1310包括文件系统1311、文件系统1312和块设备文件1313。模块1320包括非易失性存储器1328。适合用作模块1320的模块包括模块720、模块920和/或模块1120。
虚拟文件系统1302被操作性地耦合至高速缓存器1304和映射层1310。高速缓存器1304被操作性地耦合至映射层1310。映射层1310被操作性地耦合至通用块层1330。通用块层1330被操作性地耦合至I/O调度层1340。I/O调度层被操作性地耦合至块设备驱动器1351、块设备驱动器1352和模块块设备驱动器1360。块设备驱动器1351被操作性地耦合至块存储设备1370。模块块设备驱动器被操作性地耦合至模块1320,并且因此还被操作性地耦合至非易失性存储器1328以从非易失性存储器1328中读取数据/向非易失性存储器1328写入数据。
在一个实施例中,应用或操作系统可以访问存储在非易失性存储器1328中的数据,如同数据被存储在盘驱动上的文件中。读(或写)服务程序调用激活VFS 1302功能,该VFS 1302功能被传递了文件描述符和到文件内位置的偏移。VFS 1302功能确定所请求的数据是否已经可用——例如在高速缓存器1304中。如果数据已经可用,则VFS 1302可以完成读(或写)操作。如果数据还不可用,则VFS 1302功能确定如何执行操作(例如,从块设备中读数据/向块设备写数据)。
映射层1310确定文件系统(例如,文件系统1311、文件系统1312)的块大小,并根据文件块号计算目标数据的范围。映射层1310调用访问文件的盘索引节点的文件系统专用函数,并且根据逻辑块号确定所请求数据的位置。该位置可以被传递至通用块层1330。
如果该操作是针对原始块设备文件,则映射层1310不调用文件系统专用方法。相反,映射层1310可以将块设备文件中的偏移转换为存储或存储分区中的对应的位置。该位置可以被传递至通用块层1330。
内核使用通用块层1330来在块设备上发出操作。通用块层1330抽取内核的作为块设备(即,块存储设备1370和模块1320)访问的存储的视图。通用块层1330向I/O调度层1340通知未决的I/O数据事务。I/O调度层1340根据内核策略分类并向适当的块设备驱动器1351-1352和/或模块块设备驱动器1360发出未决的I/O数据事务。
块设备驱动器1351-1352向块存储设备(例如,块存储设备1370)发送适当的块I/O存储类型命令。模块块设备驱动器1360可以将从I/O调度层1340接收的块设备命令转换为向存储器模块1320发送的存储器接口命令。
模块1320上的处理器可以执行模块块设备驱动器1360的所有或部分来服务用于在非易失性存储器1328中存储的数据的服务I/O存储类型设备命令。块I/O存储类型设备命令可以包括例如SCSI或ATA命令。
图14是用于访问存储在DRAM存储器通道上的非易失性存储器中的文件数据的分布式系统的示图。在图14中,分布式文件系统1400包括客户端计算机1410、服务器计算机1430和网络1450。客户端计算机1410包括系统调用层1411、虚拟文件系统层1412、本地文件系统1413、网络文件系统客户端1414、块存储设备1416、远程过程调用客户端存根1415。服务器计算机1430包括系统调用层1431、虚拟文件系统层1432、本地文件系统1433、网络文件系统服务器1434、远程过程调用服务器存根1435和模块1420。模块1420包括处理器1422和非易失性存储器1428。应该理解,模块1420可以是、包括、对应于一个或多个模块720、920或1120或者作为其实施例,或者包括本文所描述的那些模块(例如,IC 721、IC 921、IC 1121、子系统800、子系统1000和/或子系统1200)中的一个或多个元件。
客户端计算机1410的系统调用层1411被操作性地耦合至客户端计算机1410的VFS层1412。VFS层1412被操作性地耦合至客户端计算机1410的本地文件系统1413和NFS客户端1414。本地文件系统1413被操作性地耦合至客户端计算机1410的块存储设备1416。NFS客户端1414被操作性地耦合至RPC客户端存根1415。RPC客户端存根1415经由网络1450被操作性地耦合至服务器计算机1430的RPC服务器存根1435。
服务器计算机1430的系统调用层1431被操作性地耦合至服务器计算机1430的VFS层1412。服务器计算机1430的RPC服务器存根1435被操作性地耦合至NFS服务器1434。NFS服务器1434被操作性地耦合至VFS层1432。VFS层1432被操作性地耦合至服务器计算机1430的本地文件系统1433。服务器计算机1430的本地文件系统1433被操作性地耦合至模块1420。因此,应该理解,模块1420的处理器1422和/或非易失性存储器1428能够经由本地文件系统1433、VFS层1432、NFS服务器1434、RPC服务器存根1435和网络1450被耦合至客户端计算机1410的元件。具体地,模块1420的处理器1422和/或非易失性存储器1428可以经由网络1450被操作性地耦合至客户端计算机1410的VFS层1412和系统调用层1411。因此,对读和/或写由系统调用层接收的数据的请求可以由服务器计算机1430的模块1420上的非易失性存储器1428来服务。
图15是用于使用块I/O存储类型设备命令在DRAM存储器通道上远程地访问存储在非易失性存储器中的文件数据的系统的示图。在图15中,分布式文件系统1500被示为包括服务器计算机1530和网络1550。在图15中没有示出的是客户端计算机,该客户端计算机将经由网络1550操作性地耦合至服务器计算机1530。
服务器计算机1530包括系统调用层1531、虚拟文件系统层1532、本地文件系统1533、网络文件系统服务器1534、远程过程调用服务器存根1535、块设备驱动器1560和模块1520。模块1520包括处理器1522和非易失性存储器1528。应该理解,模块1520可以是、包括、对应于一个或多个模块720、920或1120或者作为其实施例,或者包括本文描述的那些模块(例如,IC 721、IC 921、IC 1121、子系统800、子系统1000和/或子系统1200)中的一个或多个元件。
服务器计算机1530的系统调用层1531被操作性地耦合至VFS层1532。服务器计算机1530的RPC服务器存根1535被操作性地耦合至NFS服务器1534。NFS服务器1534被操作性地耦合至VFS层1532。VFS层1532被操作性地耦合至本地文件系统1533。本地文件系统1533被操作性地耦合至块设备驱动器1560。块设备驱动器1560被操作性地耦合至模块1520。因此,应该理解,模块1520的处理器1522和/或非易失性存储器1528能够经由块设备驱动器1560、本地文件系统1533、VFS层1532、NFS服务器1534、RPC服务器存根1535和网络1550被操作性地耦合至客户端计算机的元件。
在一个实施例中,本地文件系统1533通过从与模块1520相关联的地址开口读取和写入与模块1520相关联的地址开口来与处理器1522和/或非易失性存储器1528通信。该地址开口可以进一步被划分为地址范围(也称端口),它们被配置用于命令、状态和数据的通信。可以配置地址开口的端口并且将其尺寸定为地址(例如,列地址)的块。
在一个实施例中,本地文件系统1533可以产生指向块设备驱动器1560的I/O命令。响应于用于存储在存储器模块1520的非易失性存储器1528中的数据的I/O命令,块设备驱动器1560可以通过从与模块1520相关联的地址开口读取和/或写入与模块1520相关联的地址开口来将存储器接口命令导向存储器模块1520。块设备驱动器1560可以将块设备驱动器1560接收的I/O命令转换为向存储器模块1520发送的存储器接口命令。
图16是用于服务对于存储在DRAM存储器通道上的非易失性存储器中的数据的远程请求的系统的示图。在图16中,分布式文件系统1600被示出为包括服务器计算机1630和网络1650。在图16中没有示出的是客户端计算机,该客户端计算机可以经由网络1650操作性地耦合至服务器计算机1630。
服务器计算机1630包括系统调用层1631、虚拟文件系统层1632、本地文件系统1633、网络文件系统服务器1634、远程过程调用服务器存根1635和模块1620。模块1620包括块设备驱动器1660、处理器1622和非易失性存储器1628。因此,应该明确,除了块设备驱动器的位置,服务器计算机1630与服务器计算机1530类似。在服务器计算机1630中,块设备驱动器1660的全部或部分驻留在模块1620上或在模块1620上执行。因此,模块1620可以使用较高级的抽象经由DRAM存储器通道与本地文件系统1633交互。此外,服务请求所需要的一些处理由模块1602来处理,因此释放服务器计算机1630上的资源。还应该理解,模块1620可以是、包括、对应于一个或多个模块720、920或1120或者作为其实施例,或者包括本文所述这些模块(例如,IC 721、IC 921、IC 1121、子系统800、子系统1000和/或子系统1200)的一个或多个元件。
服务器计算机1630的系统调用层1631被操作性地耦合至VFS层1632。服务器计算机1630的RPC服务器存根1635被操作性地耦合至NFS服务器1634。NFS服务器1634被操作性地耦合至VFS层1632。VFS层1632被操作性地耦合至本地文件系统1633。本地文件系统1633被操作性地耦合至模块1620,因此也被操作性地耦合至块设备驱动器1660。因此,应该理解,模块1620的处理器1622和/或非易失性存储器1628能够经由块设备驱动器1660、本地文件系统1633、VFS层1632、NFS服务器1634、RPC服务器根村1635和网络1650被操作性地耦合至客户端计算机的元件。
在一个实施例中,具体地,本地文件系统1633通过从与模块1620和/或块设备驱动器1660相关联的地址开口读取和写入与模块1620和/或块设备驱动器1660相关联的地址开口来与模块1620的块设备驱动器1660通信。该地址开口可以进一步被划分为被配置用于命令、状态和数据的通信的地址范围(也称端口)。可以配置地址开口的端口并且将其尺寸定为地址(例如,列地址)的块。
在一个实施例中,本地文件系统1633产生指向块设备驱动器1660的I/O命令。具体地,响应于用于在存储器模块1620的非易失性存储器1628中存储的数据的I/O命令,存储器接口命令通过从与模块1620和/或块设备驱动器1660相关联的地址开口读取和/或写入与模块1620和/或块设备驱动器1660相关联的地址开口被导向存储器模块1620。块设备驱动器1660可以将块设备驱动器1660接收的I/O命令转换为向处理器1622和/或非易失性存储器1628发送的命令。
图17是用于服务向DRAM存储器通道上的固态盘的远程请求的系统的示图。在图17中,所示分布式文件系统1700包括服务器计算机1730和网络1750。图17中没有示出的是客户端计算机,该客户端计算机将经由网络1750操作性地耦合至服务器计算机1730。
服务器计算机1730包括系统调用层1731、虚拟文件系统层1732、本地文件系统1733、网络文件系统服务器1734、远程过程调用服务器存根1735和模块1720。模块1720包括处理器1722、固态盘(SSD)控制器1725和非易失性存储器1728。因此,应该明确,服务器计算机1730与服务器计算机1430和服务器计算机530类似,除了模块1720明确包括SSD控制器1725。SSD控制器1725向处理器1722提供块I/O存储接口。该块I/O存储接口可以用于去向/来自非易失性存储器1728的数据的通信。该块I/O存储接口可以使用例如SCSI或ATA命令。处理器1722可以接收来自本地文件系统1733的命令并使用SSD控制器1725和非易失性存储器1728来完成这些命令。如本文所描述的,还应该理解,模块1720可以是、包括、对应于一个或多个模块720、920或1120或作为其实施例,或者包括本文所述这些模块(例如,IC 721、IC921、IC 1121、子系统800、子系统1000和/或子系统1200)的一个或多个元件。
服务器计算机1730的系统调用层1731被操作性地耦合至VFS层1732。服务器计算机1730的RPC服务器存根1735被操作性地耦合至NFS服务器1734。NFS服务器1734被操作性地耦合至VFS层1732。VFS层1732被操作性地耦合至本地文件系统1733。本地文件系统1733被操作性地耦合至模块1720,因此也被操作性地耦合至处理器1722、SSD控制器1725和/或非易失性存储器1728。因此,应该理解,模块1720的处理器1722、SSD控制器1725和/或非易失性存储器1728能够经由处理器1722、本文文件系统1733、VFS层1732、NFS服务器1734、RPC服务器存根1735和网络1750被操作性地耦合至客户端计算机的元件。
在一个实施例中,具体地,本地文件系统1733通过从与模块1720和/或SSD的控制器1725相关联的地址开口读取和写入与模块1720和/或SSD的控制器1725相关联的地址开口来与模块1720的SSD控制器1725通信。该地址开口可以进一步被划分为配置用于命令、状态和数据的通信的地址范围(也称端口)。可以配置地址开口的端口并且将其尺寸定为地址(例如,列地址)的块。
在一个实施例中,本地文件系统1733产生指向SSD控制器1725的I/O命令。具体地,响应于用于在存储器模块1720的非易失性存储器1728中存储的I/O命令,存储器接口命令通过从与模块1720和/或SSD控制器1725相关联的地址开口读取和/或写入与模块1720和/或SSD控制器1725相关联的地址开口被导向存储器模块1720。处理器1722可以将模块1720接收的I/O命令转换为向SSD控制器1725和/或非易失性存储器1728发送的命令。
图18是用于分布式文件处理的系统的示图。在图18中,所示分布式文件处理系统1800包括服务器计算机1830和网络1850。图18中没有示出的是将经由网络1850操作性地耦合至服务器计算机1830的客户端节点、主节点或其他映射处理器计算机。
服务器计算机1830包括系统调用层1831、虚拟文件系统层1832、本地文件系统1833、分布式文件系统服务器1834、远程过程调用服务器存根1835和模块1820。模块1820包括映射功能1829、处理器1822和非易失性存储器1828。在服务器计算机1830中,分布式文件系统的被优化用于映射功能的全部或部分(例如,‘MapReduce’——用于利用集群上的并行的、分布式算法来处理大数据集合)驻留在模块1820上并且在模块1820上执行。还应该理解,模块1820可以是、包括、对应于一个或多个模块720、920或1120或者作为其实施例,或者包括本文所述这些模块(例如,IC 721、IC 921、IC 1121、子系统800、子系统1000和/或子系统1200)中的一个或多个元件。
服务器计算机1830的系统调用层1831被操作性地耦合至VFS层1832。服务器计算机1830的RPC服务器存根1835被操作性地耦合至DFS服务器1834。DFS服务器1834被操作性地耦合至VFS层1832。VFS层1832被操作性地耦合至本地文件系统1833。本地文件系统1833被操作性地耦合至模块1820,因此也被操作性地耦合至映射功能1829。映射功能1829可以使用由非易失性存储器1828存储的数据在处理器1822上执行。因此,应该理解,由映射功能1829执行的映射函数和/或由模块1820的非易失性存储器1828存储的分布式文件系统数据能够经由本地文件系统1833、VFS层1832、DFS服务器1834、RPC服务器存根1835和网络1850被操作性地耦合至客户端计算机或主节点的元件。
在一个实施例中,具体地,本地文件系统1833通过从与模块1820和/或映射功能1829相关联的地址开口读取和写入与模块1820和/或映射功能1829相关联的地址开口来与模块1820的映射功能1829通信。该地址开口可以被进一步划分为被配置用于命令、状态和数据的通信的地址范围(也称端口)。可以配置地址开口的端口并且将其尺寸定为地址(例如,列地址)的块。
可以在模块1820上执行经由DRAM存储器通道被模块1820接收到的用于映射功能1829的过程调用和过程数据(例如,通过处理器1822使用由非易失性存储器1828存储的数据)。这些过程调用和过程数据可以经由定址到模块1820的存储空间(例如,开口)的存储器写事务被传输至模块1820。这些过程调用可以包括RPC请求。由模块1820执行的过程调用和过程数据还可以实现一个或多个虚拟文件系统过程调用。这些过程调用可以包括映射调用,该映射调用指定将由模块1829对使用非易失性存储器1828存储的对应的输入数据块执行。映射操作还可以产生将使用非易失性存储器1828或模块1820上的其他存储器存储的中间数据值。
图19是示出操作存储器模块的方法的流程图。图19所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。在集成电路设备处,接收了来自与存储器模块的存储器接口连接的存储器控制器的存储器命令;集成电路设备具有处理器、第一接口、第二接口和非易失性存储器。第一接口被连接至多个动态存储器集成电路。第二接口接收了来自存储器控制器的存储器命令(1902)。例如,集成电路设备921可以从存储器控制器914(其被耦合至模块920的存储器接口)接收存储器命令。例如,集成电路设备921可以是系统1000。系统1000具有可以连接至CPU存储器923的CA0接口1086和CA1接口1087。系统1000具有NV存储器1028(其可以对应于NV存储器928)。系统1000具有CA输入接口1096,该CA输入接口1096可以接收来自存储器控制器914的存储器命令。
响应于存储器命令,数据被存储在多个动态存储器集成电路中(1904)。例如,响应于经由CA输入接口1096从存储器控制器914接收的命令,系统1000可以将数据存储在连接至CA0接口1086或CA1接口1087的动态存储器集成电路(例如,CPU存储器923)中。
响应于来自处理器的命令,数据被存储在至少一个非易失性存储器集成电路设备中(1906)。例如,系统1000可以响应于处理器1012(或处理器922)并且在NV存储器1028中存储在CPU存储器923、本地存储器1024和/或连接至CA0接口1086和CA1接口1087的动态存储器中所存储的数据。
图20是示出操作存储器模块的方法的流程图。图20所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。在集成电路设备处,接收了来自与存储器模块的存储器接口连接的存储器控制器的存储器命令;集成电路设备具有固态盘控制器电路、第一接口、第二接口和第三接口。第一接口被连接至多个动态存储器集成电路。第二接口被连接至至少一个非易失性存储器集成电路设备。第三接口接收了来自存储器控制器的存储器命令(2002)。例如,集成电路设备721可以从存储器控制器714(其被耦合至模块720的存储器接口)接收存储器命令。例如,集成电路设备721可以是系统800。系统800具有可以连接至CPU存储器723的CA0接口886和CA1接口887。系统800具有NV控制器827(其可以为固态盘控制器电路并且可以对应于NV控制器725)以向NV存储器828(其可以对应于NV存储器728)接口。系统800具有CA输入接口896,该CA输入接口896可以接收来自存储器控制器714的存储器命令。
响应于存储器命令,数据被存储在多个动态存储器集成电路中(2004)。例如,响应于经由CA输入接口896从存储器控制器714接收的命令,系统800可以将数据存储在连接至CA0接口886或CA1接口887的动态存储器集成电路(例如,CPU存储器723)中。
响应于来自固态盘控制器电路的命令,数据被存储在至少一个非易失性存储器集成电路设备中(2006)。例如,系统800可以响应于固态盘控制器电路并且在NV存储器828中存储在CPU存储器723、本地存储器824和/或连接至CA0接口886和CA1接口887的动态存储器中所存储的数据,该固态盘控制器电路是NV控制器827或者被包括在NV控制器827中。
图21是示出操作存储器模块的方法的流程图。图21所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。在集成电路设备处,接收了来自与存储器模块的存储器接口连接的存储器控制器的存储器命令;集成电路设备具有处理器、第一接口、第二接口和第三接口。第一接口被连接至多个动态存储器集成电路。第二接口被连接至至少一个盘型大容量存储设备。第三接口接收了来自存储器控制器的存储器命令(2102)。例如,集成电路设备1121可以从存储器控制器1114(其被耦合至模块1120的存储器接口)接收存储器命令。例如,集成电路设备1121可以是系统1200。系统1200具有可以连接至CPU存储器1123的CA0接口1286和CA1接口1287。系统1200具有盘接口1227(其可以对应于盘接口1125)以向盘型存储1228(其可以对应于盘型存储1228)接口。系统1200具有CA输入接口1296,该CA输入接口1296可以接收来自存储器控制器1114的存储器命令。
响应于存储器命令,数据被存储在多个动态存储器集成电路中(2104)。例如,响应于经由CA输入接口1296从存储器控制器1114接收的命令,系统1200可以将数据存储在连接至CA0接口1286或CA1接口1287的动态存储器集成电路(例如,CPU存储器1123)中。
响应于来自处理器的命令,数据被存储在至少一个盘型大容量存储设备中(2106)。例如,系统1200可以响应于处理器1212(或处理器1122)并且在盘型存储器1228中存储在CPU存储器1123、本地存储器1224和/或连接至CA0接口1286和CA1接口1287的动态存储器中所存储的数据。
图22是示出操作存储器模块的方法的流程图。图22所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。在集成电路设备处,接收了来自与存储器模块的存储器接口连接的存储器控制器的存储器命令;集成电路设备具有处理器、第一接口、第二接口和第三接口。第一接口被连接至多个动态存储器集成电路。第二接口被连接至至少一个非易失性存储器集成电路设备。第三接口接收了来自存储器控制器的存储器命令(2202)。例如,集成电路设备721可以从存储器控制器714(其被耦合至模块720的存储器接口)接收存储器命令。例如,集成电路设备721可以是系统800。系统800具有可以连接至CPU存储器723的CA0接口886和CA1接口887。系统800具有NV控制器827(其可以对应于NV控制器725)以向NV存储器828(可以对应于NV存储器728)接口。系统800具有CA输入接口896,该CA输入接口896可以接收来自存储器控制器714的存储器命令。
响应于存储器命令,数据被存储在多个动态存储器集成电路中(2204)。例如,响应于经由CA输入接口896从存储器控制器714接收的命令,系统800可以将数据存储在连接至CA0接口886或CA1接口887的动态存储器集成电路(例如,CPU存储器723)中。
响应于来自处理器的命令,数据被存储在至少一个非易失性存储器集成电路设备中(2206)。例如,系统800可以响应于处理器812(或处理器722)并且在NV存储器828中存储在CPU存储器723、本地存储器824和/或连接至CA0接口886和CA1接口887的动态存储器中所存储的数据。
图23是示出操作存储器模块的方法的流程图。图23所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。在模块处,经由DRAM存储器通道接收到用于块I/O存储类型设备命令的远程过程调用请求(2302)。例如,模块720可以经由耦合了模块720和存储器控制器714的DRAM存储器通道接收用于块I/O存储类型设备的远程过程调用请求(例如,SSD的块读取)。
使用模块上的非易失性存储来服务块I/O存储类型设备命令(2304)。例如,可以使用存储在非易失性存储器728上的数据来提供远程过程调用响应。可以经由耦合了模块720和存储器控制器714的DRAM通道来传输远程过程调用响应。
图24是示出操作存储器模块的方法的流程图。图24所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。在模块处,接收到通过DRAM存储器通道接口经由存储器写事务被传输至模块的过程调用和过程数据(2402)。例如,通过DRAM存储器通道接口经由存储器写事务被传输至模块的过程调用和过程数据可以被模块720接收,该DRAM存储器通道接口链接模块720和存储器控制器714
执行了过程调用并且通过DRAM存储器通道接口返回了返回的过程结果(2404)。例如,处理器722可以执行过程调用并且生成存储在非易失性存储器728中的过程结果。可以响应于经由DRAM存储器通道接口传输结果数据的读命令返回存储在非易失性存储器728中的过程结果,该DRAM存储器通道接口链接模块720和存储器控制器714。
图25是示出操作存储器模块的方法的流程图。图25所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的的一个或多个元件来执行。在模块处并且经由DRAM存储器通道接口,将由模块执行的过程调用经由DRAM存储器通道上的存储器写事务被接收,该存储器写事务被定址到模块的存储器空间(2502)。例如,模块720可以从存储器控制器714接收定址到模块720的存储器空间的存储器写事务。这些存储器写事务可以传输将由模块执行的过程调用(例如,远程过程调用或者函数调用)。
执行过程调用,该过程调用包括块I/O存储类型设备命令并且包括映射调用,使用非易失性存储来服务该块I/O存储类型设备命令,该映射调用指定将由模块对使用非易失性存储来存储的对应的输入数据块执行的专用映射操作,并且该映射操作还产生使用非易失性存储来存储的中间数据值(2504)。例如,模块720可以被控制为使用利用非易失性存储器728存储的数据来执行“MapReduce”映射类型函数。
图26是示出操作存储器模块的方法的流程图。图26所示步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。在集成电路设备处,接收了来自与存储器模块的存储器接口连接的存储器控制器接收存储器命令;集成电路设备具有处理器、第一接口、第二接口和非易失性存储器。第一接口被连接至多个动态存储器集成电路。第二接口接收了来自存储器控制器的存储器命令(2602)。例如,集成电路设备921可以从存储器控制器914(其被耦合至模块920的存储器接口)接收存储器命令。例如,集成电路设备921可以是系统1000。系统1000具有可以连接至CPU存储器923的CA0接口1086和CA1接口1087。系统1000具有NV存储器1028(可对应于NV存储器928)。系统1000具有CA输入接口1096,该CA输入接口1096可以接收来自存储器控制器914的存储器命令。
响应于存储器命令,数据被存储在多个动态存储器集成电路中(2604)。例如,响应于经由CA输入接口1096从存储器控制器914接收的命令,系统1000可以将数据存储在连接至CA0接口1086或CA1接口1087的动态存储器集成电路(例如,CPU存储器923)中。
响应于来自处理器的命令,数据被存储在至少一个非易失性存储器集成电路设备中(2606)。例如,系统1000可以响应于处理器1012(或处理器922)并且在NV存储器1028中存储在CPU存储器923、本地存储器1024和/或连接至CA0接口1086或CA1接口1087的动态存储器中所存储的数据。
以上描述的系统和设备可以在计算机系统、集成电路中实现或者由计算机系统存储。以上描述的系统还可以存储在非瞬态计算机可读介质上。本文所描述的设备、电路和系统可以使用本领域可用的计算机辅助设计工具来实现,并且通过包含这种电路的软件描述的计算机可读文件来具体化。图19所示的步骤可以由系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个元件来执行。这些软件描述可以是:行为、寄存器传送、逻辑部件、晶体管和布局几何级描述。此外,软件描述可以存储在非暂态存储介质上或者通过载波来传输。
可以实现这种描述的数据格式包括但不限于:支持行为语言、如C的格式,支持寄存器传送级(RTL)语言、如Verilog和VHDL的格式,支持几何描述语言、诸如GDSII、GDSIII、GDSIV、CIF和MEBES的格式,以及其他适当的格式和语言。此外,可以在互联网上或例如经由电子邮件通过各种不同的介质电子地完成这种文件在机器可读介质上的数据传送。注意,可以在机器可读介质,诸如4mm磁带、8mm磁带、3-1/2英寸软盘介质、CD、DVD、蓝光盘等上实现物理文件。
图27示出了计算机系统的框图。计算机系统2700包括通信接口2720、处理系统2730、存储系统2740和用户接口2760。处理系统2730被操作性地耦合至存储系统2740。存储系统2740存储软件2750和数据2770。计算机系统2700可以包括系统100、系统400、模块500、系统700、子系统800、子系统801、系统900、子系统1000、子系统1001、系统1100、子系统1200、子系统1201、系统1300、系统1400、系统1500、系统1600、系统1700、系统1800和/或它们的部件中的一个或多个,或者实现本文所述方法、功能、处理、通信、电路和/或系统的部件。处理系统2730被操作性地耦合至通信接口2720和用户接口2760。计算机系统2700可以包括被编程的通用计算机。计算机系统2700可以包括微处理器。计算机系统2700可以包括可编程电路或专用电路。计算机系统2700可以被分布在多个设备、处理器、存储器和/或接口之中,它们一同包括元件2720-2770。
通信接口2720可以包括网络接口、调制解调器、端口、总线、链接、收发器或其他通信设备。通信接口2720可以被分布在多个通信设备之中。处理系统2730可以包括微处理器、微控制器、逻辑电路或其他处理设备。处理系统2730可以被分布在多个处理设备之中。用户接口2760可以包括键盘、鼠标、声音识别接口、麦克风和扬声器、图形显示器、触摸屏或其他类型的用户接口设备。用户接口2760可以被分布在多个接口设备之中。存储系统2740可以包括磁盘、磁带、集成电路、RAM、ROM、EEPROM、闪存、网络存储器、服务器或其他存储器功能。存储系统2740可以包括计算机可读介质。存储系统2740可以被分布在多个存储器设备之中。
处理系统2730检索和执行来自存储系统2740的软件2750。处理系统2730可以检索和存储数据2770。处理系统2730还可以经由通信接口2720检索和存储数据。处理系统2730可以创建或修改软件2750或数据2770以实现有形的结果。处理系统2730可以控制通信接口2720或用户接口2760以实现有形的结果。处理系统2730可以经由通信接口2720检索和执行远程存储的软件。
软件2750和远程存储的软件可以包括操作系统、实体、驱动器、网络软件以及通常由计算机系统执行的其他软件。软件2750可以包括应用程序、小应用程序、固件或通常由计算机系统执行的机器可读处理指令的其他形式。软件2750或远程存储的软件当被处理系统2730执行时,可以引导计算机系统2700进行操作。
为了说明和描述的目的呈现了前面本发明的描述。其不是排他性地并不将本发明限于公开的具体形式,在上述教导的基础上可以进行其他修改和变化。选择和描述实施例以更好地解释本发明的原理及其实践应用,从而能够使本领域技术人员能够在适合于预期特定应用的各个实施例和各个修改例中使用本发明。除了被现有技术限制的范围,所附权利要求包括本发明的其他可选实施例。

Claims (10)

1.一种存储器系统,包括:
具有存储器控制器的中央处理单元(CPU),所述存储器控制器被配置为使用并行数据通道接收来自模块存储器的模块数据的传送;以及
双列直插式存储器模块(DIMM),所述DIMM被配置为经由所述存储器控制器向所述CPU发送所述模块数据,所述DIMM包括:
模块接口,所述模块接口被配置为使用并行数据通道发送来自所述DIMM的所述模块数据,
非易失性闪存库,以及
一个或多个集成电路,所述一个或多个集成电路被配置为使用所述并行数据通道发送所述模块数据并且使得所述模块数据能够被存储在动态随机存取存储器(DRAM)库中、被写入所述DRAM库以及从所述非易失性闪存库中被读取,其中所述一个或多个集成电路被配置为在由所述DRAM库采用的第一寻址方案和由所述非易失性闪存库采用的第二寻址方案之间转换,所述双列直插式存储器模块还被配置为执行模块块设备驱动器的至少一部分以服务于来自所述CPU的块I/O存储类型设备命令,所述块I/O存储类型设备命令使得所述模块数据从所述非易失性闪存库中被读取。
2.根据权利要求1所述的存储器系统,其中所述集成电路被配置为使得:
所述模块数据能够被写入采用所述第一寻址方案的所述DRAM库;
被写入采用所述第一寻址方案的所述DRAM库的所述模块数据能够被读取;
从非易失性闪存库读取的所述模块数据能够从由非易失性闪存库采用的所述第二寻址方案被转换为由所述DRAM库采用的所述第一寻址方案;以及
被转换为由所述非易失性闪存库采用的所述第二寻址方案的所述模块数据能够被写入采用所述第一寻址方案的所述DRAM库。
3.根据权利要求2所述的存储器系统,其中所述集成电路进一步包括缓冲器。
4.根据权利要求2所述的存储器系统,进一步包括桥接电路,所述桥接电路被配置为使得所述模块数据能够从所述非易失性闪存库中被读取或者被写入所述非易失性闪存库。
5.根据权利要求4所述的存储器系统,其中所述桥接电路被配置为执行串行化操作或反串行化操作。
6.一种双列直插式存储器模块(DIMM),包括:
模块接口,所述模块接口被配置为使用并行数据通道发送来自所述DIMM的模块数据;
非易失性闪存库;以及
一个或多个集成电路,所述一个或多个集成电路被配置为使得所述模块数据能够从所述非易失性闪存库中被读取并且被写入动态随机存取存储器(DRAM)库,所述一个或多个集成电路还被配置为从所述DRAM库读取所述模块数据并经由所述并行数据通道发送从所述DRAM库中读取的所述模块数据,并且其中所述一个或多个集成电路被配置为在由所述DRAM库采用的第一寻址方案和由所述非易失性闪存库采用的第二寻址方案之间转换,所述双列直插式存储器模块执行模块块设备驱动器的至少一部分以服务于块I/O存储类型设备命令,所述块I/O存储类型设备命令使得所述模块数据从所述非易失性闪存库中被读取。
7.根据权利要求6所述的DIMM,其中所述DRAM库位于所述集成电路的外部。
8.根据权利要求6所述的DIMM,其中所述DRAM库包括动态数据率(DDR)存储器,并且所述非易失性闪存库包括固态盘(SSD)。
9.根据权利要求6所述的DIMM,其中所述集成电路被配置为使得:
所述模块数据能够从采用所述第二寻址方案的所述非易失性闪存库中被读取;
从采用所述第二寻址方案的所述非易失性闪存库中读取的所述模块数据能够被写入所述DRAM库;
被写入所述DRAM库的所述模块数据能够从由所述非易失性闪存库采用的所述第二寻址方案被转换为由所述DRAM库采用的所述第一寻址方案;以及
被转换为由所述DRAM库采用的所述第一寻址方案的所述模块数据能够从采用所述第一寻址方案的所述DRAM存储器库中被读取。
10.根据权利要求6所述的DIMM,其中所述集成电路进一步包括缓冲器。
CN201910475716.XA 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统 Active CN110275840B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910475716.XA CN110275840B (zh) 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/187,290 US11048410B2 (en) 2011-08-24 2014-02-23 Distributed procedure execution and file systems on a memory interface
US14/187,290 2014-02-23
PCT/US2015/016985 WO2015127327A1 (en) 2014-02-23 2015-02-21 Distributed procedure execution and file systems on a memory interface
CN201580000052.1A CN105408875B (zh) 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统
CN201910475716.XA CN110275840B (zh) 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201580000052.1A Division CN105408875B (zh) 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统

Publications (2)

Publication Number Publication Date
CN110275840A true CN110275840A (zh) 2019-09-24
CN110275840B CN110275840B (zh) 2024-03-15

Family

ID=52648811

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580000052.1A Active CN105408875B (zh) 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统
CN201910475716.XA Active CN110275840B (zh) 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201580000052.1A Active CN105408875B (zh) 2014-02-23 2015-02-21 在存储器接口上的分布式过程执行和文件系统

Country Status (3)

Country Link
EP (1) EP2911065B1 (zh)
CN (2) CN105408875B (zh)
WO (1) WO2015127327A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214437A (zh) * 2020-09-29 2021-01-12 苏州浪潮智能科技有限公司 一种存储设备及通信方法、装置、计算机可读存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577614B (zh) * 2013-06-29 2020-10-16 华为技术有限公司 数据写入方法及内存系统
US10719474B2 (en) * 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
CN110348211B (zh) * 2018-07-17 2020-10-16 清华大学 记录处理器输入输出操作的方法、装置、系统及介质
US10846155B2 (en) * 2018-10-16 2020-11-24 Samsung Electronics Co., Ltd. Method for NVMe SSD based storage service using RPC and gRPC tunneling over PCIe +
KR102406449B1 (ko) * 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
CN114036085B (zh) * 2021-09-24 2024-04-12 北京无线电测量研究所 基于ddr4的多任务读写调度方法、计算机设备及存储介质
CN114968497B (zh) * 2022-06-06 2023-11-14 中国电信股份有限公司 硬件层的调用方法、装置、设备及存储介质

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742792A (en) * 1993-04-23 1998-04-21 Emc Corporation Remote data mirroring
US6526484B1 (en) * 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
CN1771495A (zh) * 2003-05-07 2006-05-10 国际商业机器公司 分布式文件服务体系结构系统
US7046467B1 (en) * 2003-04-30 2006-05-16 Western Digital Technologies, Inc. Method for generating a format specific data structure in a disk drive having differing surface formats
JP2006228090A (ja) * 2005-02-21 2006-08-31 Ricoh Co Ltd デジタル回路のコントローラ基板
CN101128795A (zh) * 2004-05-11 2008-02-20 米斯特科技有限公司 语义处理器存储服务器架构
US20080082751A1 (en) * 2006-09-28 2008-04-03 Okin Kenneth A Memory modules and programmable heterogeneous memory controllers for main memory
US20080109592A1 (en) * 2006-11-04 2008-05-08 Virident Systems Inc. Seamless application access to hybrid main memory
US20090063784A1 (en) * 2007-08-31 2009-03-05 Gower Kevin C System for Enhancing the Memory Bandwidth Available Through a Memory Module
CN101689145A (zh) * 2007-03-30 2010-03-31 拉姆伯斯公司 包括具有不同类型集成电路存储器设备的分层存储器模块的系统
US20130086309A1 (en) * 2007-06-01 2013-04-04 Netlist, Inc. Flash-dram hybrid memory module
CN103309836A (zh) * 2013-07-11 2013-09-18 无锡云动科技发展有限公司 一种存储装置
CN103488578A (zh) * 2012-12-28 2014-01-01 晶天电子(深圳)有限公司 虚拟存储设备(vmd)应用/驱动器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0421696A3 (en) * 1989-10-02 1992-01-29 Motorola Inc. Staggered access memory
KR100786603B1 (ko) * 2002-11-28 2007-12-21 가부시끼가이샤 르네사스 테크놀로지 메모리 모듈, 메모리시스템 및 정보기기
US7761625B2 (en) * 2006-09-28 2010-07-20 Virident Systems, Inc. Methods for main memory with non-volatile type memory modules, and related technologies
WO2008095201A1 (en) * 2007-02-02 2008-08-07 Psimast, Inc. Processor chip architecture having integrated high-speed packet switched serial interface
US8296496B2 (en) * 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM
CN102110057B (zh) * 2009-12-25 2013-05-08 澜起科技(上海)有限公司 存储器模组及存储器模组内的数据交换方法
WO2013028854A1 (en) * 2011-08-24 2013-02-28 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
US20130246686A1 (en) * 2012-03-19 2013-09-19 Hitachi, Ltd. Storage system comprising nonvolatile semiconductor storage device, and storage control method

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742792A (en) * 1993-04-23 1998-04-21 Emc Corporation Remote data mirroring
US6526484B1 (en) * 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
US7046467B1 (en) * 2003-04-30 2006-05-16 Western Digital Technologies, Inc. Method for generating a format specific data structure in a disk drive having differing surface formats
CN1771495A (zh) * 2003-05-07 2006-05-10 国际商业机器公司 分布式文件服务体系结构系统
CN101128795A (zh) * 2004-05-11 2008-02-20 米斯特科技有限公司 语义处理器存储服务器架构
JP2006228090A (ja) * 2005-02-21 2006-08-31 Ricoh Co Ltd デジタル回路のコントローラ基板
US20080082751A1 (en) * 2006-09-28 2008-04-03 Okin Kenneth A Memory modules and programmable heterogeneous memory controllers for main memory
US20080109592A1 (en) * 2006-11-04 2008-05-08 Virident Systems Inc. Seamless application access to hybrid main memory
CN101689145A (zh) * 2007-03-30 2010-03-31 拉姆伯斯公司 包括具有不同类型集成电路存储器设备的分层存储器模块的系统
US20130086309A1 (en) * 2007-06-01 2013-04-04 Netlist, Inc. Flash-dram hybrid memory module
US20090063784A1 (en) * 2007-08-31 2009-03-05 Gower Kevin C System for Enhancing the Memory Bandwidth Available Through a Memory Module
CN103488578A (zh) * 2012-12-28 2014-01-01 晶天电子(深圳)有限公司 虚拟存储设备(vmd)应用/驱动器
CN103309836A (zh) * 2013-07-11 2013-09-18 无锡云动科技发展有限公司 一种存储装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214437A (zh) * 2020-09-29 2021-01-12 苏州浪潮智能科技有限公司 一种存储设备及通信方法、装置、计算机可读存储介质
CN112214437B (zh) * 2020-09-29 2023-01-10 苏州浪潮智能科技有限公司 一种存储设备及通信方法、装置、计算机可读存储介质

Also Published As

Publication number Publication date
WO2015127327A1 (en) 2015-08-27
CN110275840B (zh) 2024-03-15
EP2911065B1 (en) 2017-12-27
CN105408875A (zh) 2016-03-16
CN105408875B (zh) 2019-06-21
EP2911065A1 (en) 2015-08-26

Similar Documents

Publication Publication Date Title
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
US10445018B2 (en) Switch and memory device
KR101371936B1 (ko) 메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들
EP3647932B1 (en) Storage device processing stream data, system including the same, and operation method thereof
CN106598480B (zh) 具有接口控制机制的电子系统及其操作方法
CN111427808A (zh) 用于管理存储设备和主机单元之间的通信的系统和方法
US11379374B2 (en) Systems and methods for streaming storage device content
US10209922B2 (en) Communication via a memory interface
KR20200017363A (ko) 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭
JP2017016691A (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
US20100185811A1 (en) Data processing system and method
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US11036659B2 (en) Memory system for receiving communication information from external device via virtual channels and control method of memory system
US20130054885A1 (en) Multiport memory element and semiconductor device and system including the same
US20240020062A1 (en) Selective Message Processing by External Processors for Network Data Storage Devices
WO2020247240A1 (en) Extended memory interface
US11579882B2 (en) Extended memory operations
KR20210108487A (ko) 저장 디바이스 동작 오케스트레이션
US11853819B1 (en) Message queues in network-ready storage products having computational storage processors
US20240020029A1 (en) External Data Processing for Network-Ready Storage Products having Computational Storage Processors
US11983434B2 (en) Network-ready storage products with computational storage processors
US11868828B1 (en) Message routing in a network-ready storage product for internal and external processing
US20240020182A1 (en) Storage Products with Connectors to Operate External Network Interfaces
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
US20240022645A1 (en) Network Storage Services Implemented via Storage Products and External Software

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant