CN104508644A - 智能存储器缓冲器 - Google Patents

智能存储器缓冲器 Download PDF

Info

Publication number
CN104508644A
CN104508644A CN201280075022.3A CN201280075022A CN104508644A CN 104508644 A CN104508644 A CN 104508644A CN 201280075022 A CN201280075022 A CN 201280075022A CN 104508644 A CN104508644 A CN 104508644A
Authority
CN
China
Prior art keywords
memory
data
node
processor
memory node
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
CN201280075022.3A
Other languages
English (en)
Other versions
CN104508644B (zh
Inventor
D.H.庸
N.穆拉利马诺哈
J.常
P.兰加纳桑
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN104508644A publication Critical patent/CN104508644A/zh
Application granted granted Critical
Publication of CN104508644B publication Critical patent/CN104508644B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1066Parity-small-writes, i.e. improved small or partial write techniques in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种示例方法涉及在第一存储器节点处接收要写在第一存储器节点中的存储器位置处的数据。所述数据从一设备接收。在第一存储器节点处,从所述存储器位置读旧数据,而不把所述旧数据发送到所述设备。把所述数据写到所述存储器位置。把所述数据和旧数据从第一存储器节点发送到第二存储器节点以便在没有所述设备确定奇偶校验信息的情况下在第二存储器节点中存储奇偶校验信息。所述奇偶校验信息基于存储在第一存储器节点中的所述数据。

Description

智能存储器缓冲器
政府利益声明
本文公开的发明在由能源部授予的、合同号DE-SC0005026下的政府支持的情况下做出。政府具有本发明中的某些权利。
背景技术
一些计算系统使用随机存取存储器(RAM)设备作为中间存储装置,以便相对快速地访问同样存储在长期机电或光电大容量存储设备(例如,磁存储器、光学存储器等)中的数据。这样,通过把数据从长期大容量存储设备拷贝到中间RAM设备,并且从RAM设备访问数据,计算系统可以执行更快速的数据访问。
长期固态存储器设备包括非易失性随机存取存储器(NVRAM),诸如相变ram(PCRAM)、忆阻器和自旋转移矩随机存取存储器(STT-RAM)。NVRAM设备优于传统动态随机存取存储器(DRAM)的优点在于NVRAM设备能够在给定集成电路(IC)管芯空间上提供比传统DRAM更高的密度。然而,一些NVRAM设备缺乏在DRAM设备上可用的快速访问速度。
附图说明
图1A是具有根据本公开的教导实施的智能存储器缓冲器的示例存储器系统,并且图1B是智能存储器缓冲器的详细框图。
图2是根据本公开的教导的使用彼此通信并且与处理器通信的随机存取存储器(RAM)模块中的智能存储器缓冲器的示例存储器系统。
图3示出可以用于实施独立盘冗余阵列(RAID)存储器系统的互连的存储器节点和处理器的示例系统。
图4是用于与图3的存储器节点一起使用以实施示例RAID存储器系统的示例RAID数据存储组织。
图5是互连的存储器节点和处理器的存储器系统中的现有技术写过程。
图6是根据本公开教导的互连的存储器节点和处理器的存储器系统中的示例写过程。
图7是使用图1A和1B的智能存储器缓冲器来从易失性RAM向非易失性RAM(NVRAM)直写(write-through)数据的示例转发写过程。
图8是在具有图1A和1B的智能存储器缓冲器的两个或更多存储器模块之间执行直接存储器到存储器转移的示例过程。
图9是使用图1A和1B的智能存储器缓冲器所实施的示例动态RAM(DRAM)缓存。
图10是读取跨RAID组织中若干存储器节点而分布的数据的现有技术方式。
图11是根据本公开的教导用于读/写跨图3的RAID组织中若干存储器节点而分布的数据的示例聚集/分散过程。
具体实施方式
本文中公开的示例方法、装置和制品可以被用于使用智能存储器缓冲器来实施存储器系统。所公开的示例可以被用于在具有集成电路(IC)或固态存储器的存储器模块中实施智能存储器缓冲器。这样的存储器可以是易失性存储器(诸如动态随机存取存储器(DRAM)设备或静态随机存取存储器设备)和/或非易失性存储器(诸如闪速设备、忆阻器设备等)。所公开的示例智能存储器缓冲器包括存储器控制器和智能功能性,以使存储器模块能够以自主的方式执行过程而无需在先存储器系统所需要的外部处理器或设备(例如存储器控制器)相对较高水平的干预。这样,所公开的示例智能存储器缓冲器使得能够通过与在先存储器系统中相比需要较少的与处理器和/或存储器控制器的外部通信来更有效率地执行存储器操作。
所公开的示例智能存储器缓冲器具有外部通信接口,所述外部通信接口被标准化以与其它存储器模块、处理器(例如硬件处理器)和/或存储器控制器(例如硬件存储器控制器)进行通信,并且从用于智能存储器缓冲器与共同位于相同板或芯片上的对应存储器IC之间的内部通信(例如存储器模块内通信)的更复杂存储器技术特定的接口中抽象那些外部通信。这样,由本文公开的智能存储器缓冲器所提供的外部接口降低了使存储器模块与彼此和/或与在存储器模块中读和/或写数据的外部设备(例如处理器和/或存储器控制器)对接的复杂性。
在使用IC或固态存储器的在先系统中,自固态存储器外部的处理器和/或控制器在多个操作中被涉及,以使得固态存储器执行复杂过程。例如,当在基于奇偶校验的存储器系统中存储数据时,在先系统的处理器或控制器向固态存储器发出多个命令以便例如读旧数据、写新数据、读旧的奇偶校验信息、确定新的奇偶校验信息和/或写新的奇偶校验信息。本文公开的示例智能缓冲器被配置为:当请求在一个或多个固态存储器模块中读、写和/或修改数据时,减小自外部处理器和/或存储器控制器所需的总线通信的量。
本文公开的智能存储器缓冲器被提供在具有固态存储器设备的存储器模块中。在没有自外部处理器和/或存储器控制器的涉及的情况下和/或在与在先系统所需要的相比具有自外部处理器和/或存储器控制器相对较少涉及的情况下,示例智能存储器缓冲器执行复杂存储器访问和/或存储器管理操作。例如,在实施奇偶校验的存储器模块中,所公开的智能存储器缓冲器可以从处理器接收单个请求或命令以便在存储器模块中的存储器位置处写数据。所公开的智能存储器缓冲器执行另外的操作(例如,读旧数据和旧奇偶校验信息,以及确定新奇偶校验信息)以便在存储器模块中写数据和新奇偶校验信息,而不需要自进行请求的处理器的另外涉及。此外,所公开的智能存储器缓冲器使得能够使用彼此通信的固态存储器模块来实施独立盘冗余阵列(RAID)配置。固态存储器模块的所公开的智能存储器缓冲器经由相同的外部总线彼此通信以便根据一个或多个RAID标准跨固态存储器模块以分布式方式来存储数据和奇偶校验。
存储器模块在本文还称为存储器节点。在一些示例中,当多个存储器模块经由共享的总线彼此通信时,存储器模块被称为存储器系统的存储器节点。照这样,像存储器模块一样,存储器节点包括一个或多个固态存储器设备和对应的智能缓冲器IC,其对一个或多个固态存储器设备执行数据访问和/或管理操作。根据本公开的教导实施的示例存储器模块或存储器节点被示出在图1A和1B中并且在下面被详细描述。
所公开的在存储器节点中写数据的示例方法涉及在第一存储器节点处接收要被写在第一存储器节点中的存储器位置处的数据。在一些这样的示例中,从请求设备接收数据。在第一存储器节点处,从存储器位置读取旧数据,而不把旧数据发送到请求设备。在一些这样的示例中,数据然后被写到存储器位置,并且所述数据和旧数据从第一存储器节点被发送到第二存储器节点以便在不需要请求设备确定奇偶校验信息的情况下在第二存储器节点中存储奇偶校验信息。在一些这样的示例中,奇偶校验信息基于存储在第一存储器节点中的数据。在一些示例中,第二存储器节点至少对所述数据和旧数据执行异或(XOR)操作以生成奇偶校验信息。在其它示例中,代替于把所述数据和旧数据从第一存储器节点发送到第二存储器节点,第一存储器节点对所述数据和旧数据执行XOR操作,并且第一存储器节点把XOR操作的结果发送到第二存储器节点以便把奇偶校验信息存储在第二存储器节点中。在一些示例方法中,在第一存储器节点处接收数据之后,不需要与请求设备进行另外的通信来在存储器位置中写数据,也不需要与请求设备进行另外的通信来把所述数据和旧数据(或所述数据和旧数据的XOR结果)从第一存储器节点发送到第二存储器节点。
在一些示例中,请求设备是处理器,并且第一存储器节点经由网络接口与处理器和第二存储器节点通信。在一些示例中,请求设备是与第一存储器设备进行网络通信的第三存储器节点,并且数据是由与第三存储器节点通信的处理器发起的转发数据。
在一些示例中,所公开的示例方法还包括:响应于节点到节点拷贝请求,把存储在第一存储器节点的存储器位置处的数据从第一存储器节点发送到第三存储器节点以用于写到第三存储器节点。在一些这样的示例中,所公开的示例方法还包括:在第一存储器节点处从请求设备或自第一存储器节点外部的另一请求设备接收节点到节点拷贝请求。在其它这样的示例中,节点到节点拷贝请求是在没有来自外部设备(例如请求设备)的干预的情况下在第一存储器节点处生成的自动事件。
所公开的在联网的存储器组织中存储数据的示例装置包括多个DRAM模块(或其它类型的固态存储器模块)。一些这样的示例的DRAM模块包括网络接口,以把DRAM模块与彼此通信地耦合(例如,经由共享的外部总线),并且把至少一些DRAM模块通信地耦合到一个或多个处理器(和/或存储器控制器)以允许处理器访问被存储在任何DRAM模块中的数据。一些这样的示例的DRAM模块还包括生成奇偶校验信息的逻辑电路,所述奇偶校验信息跨多个动态随机存取存储器模块以分布式布置而存储。在一些示例中,数据和奇偶校验跨以条带状布置(例如根据RAID存储布置)的动态随机存取存储器模块而被存储。在一些示例中,动态随机存取存储器模块被安装在单个印刷电路板(PCB)上。
所公开的读数据的示例装置包括至少一个处理器和多个存储器模块,所述存储器模块与处理器通信并且彼此通信。在一些这样的示例中,处理器把针对数据的请求发送到存储器模块中的第一个,并且数据以分布式配置被存储在至少第一存储器模块和存储器模块的第二个中。在一些这样的示例中,第一存储器模块从第一存储器模块的第一存储器位置检索数据的第一部分。在一些这样的示例中,第二存储器模块从第二存储器模块的第二存储器位置检索数据的第二部分。在一些这样的示例中,第二存储器模块把数据的第一和第二部分发送到处理器。
在一些示例中,第一和第二存储器模块是包括动态随机存取存储器或非易失性存储器中至少一个的固态存储器模块。在一些示例中,第一和第二存储器模块被安装在单个印刷电路板上。在一些示例中,第二存储器模块在第二存储器模块处从第一存储器模块接收数据的第一部分之后检索数据的第二部分。在一些示例中,第二存储器模块在没有接收到直接来自处理器的数据的第二部分的请求的情况下检索数据的第二部分。
图1A示出了经由共享的总线14与处理器10通信的示例存储器模块12和112。在图1A的图示示例中,存储器模块12和112具有与对应的存储器设备通信的对应的智能存储器缓冲器。在本文所公开的示例中,一些或所有存储器模块(例如存储器模块12和112中的一个或两者)可以被永久地装配或安装在计算设备中,和/或一些或所有存储器模块(例如存储器模块112和112中的一个或两者)可以可移除地可安装或可附接到计算设备。
图示示例的存储器模块或存储器节点112包括智能存储器缓冲器100和存储器110。在图示示例中,智能存储器缓冲器100使得能够把示例存储器模块112置于与一个或多个其它存储器模块或节点(例如示例存储器模块12)通信并且与一个或多个处理器(和/或外部存储器控制器)通信,所述一个或多个其它存储器模块或节点具有与智能存储器缓冲器100基本类似或相同的智能存储器缓冲器。这样,本文公开的互连存储器模块的网络允许处理器和/或外部存储器控制器把复杂存储器过程卸载到如下面描述的存储器模块上。
在图示示例中,智能存储器缓冲器100与存储器110共同位于存储器模块112上。在一些示例中,使用PCB来实施存储器模块112,并且智能存储器缓冲器100与存储器110一起安装在PCB上。在其它示例中,使用三维(3D)堆叠芯片封装来实施存储器模块112,其中,实施智能存储器缓冲器100的IC设备和实施存储器110的IC设备在具有其间物理芯片内互连并且具有到网络接口102的外部连接的芯片中堆叠在彼此顶部。
图1B是根据本公开的教导实施的智能存储器缓冲器100的详细框图。在图1B的图示示例中,智能存储器缓冲器包括示例网络接口102、示例控制逻辑104(例如逻辑电路)、示例缓冲器106和示例存储器接口108。虽然图1B图示了实施智能存储器缓冲器100的示例方式,但是图1B中图示的元件、过程和/或设备中的一个或多个可以组合、划分、重新布置、省略、消除和/或以任何其它方式实施。另外,网络接口102、控制逻辑104、缓冲器106或存储器接口108和/或更一般地,图1的示例智能存储器缓冲器100可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实施。因此,例如,网络接口102、控制逻辑104、缓冲器106和存储器接口108中的任一个和/或更一般地,示例智能存储器缓冲器100可以由一个或多个电路、(多个)可编程处理器、(多个)专用集成电路((多个)ASIC)、(多个)可编程逻辑设备((多个)PLD)和/或(多个)现场可编程逻辑设备((多个)FPLD)等来实施。当本专利的装置或系统权利要求中任一个被读成覆盖纯软件和/或固件实施方式时,网络接口102、控制逻辑104、缓冲器106或存储器接口108中的至少一个由此被明确地限定为包括存储软件和/或固件的有形计算机可读介质,诸如RAM、只读存储器(ROM)、缓存等。仍另外地,附加于或替代于图1B中图示的那些,图1B的示例智能存储器缓冲器100可以包括一个或多个元件、过程和/或设备,和/或可以包括多于一个的任何或所有图示的元件、过程和设备。
图示示例的智能存储器缓冲器100被提供有示例网络接口102,以将智能存储器缓冲器100与其它存储器模块或存储器节点的一个或多个智能存储器缓冲器和/或与一个或多个处理器或控制器经由共享的总线(例如图1A的共享的总线14)通信地耦合。在图示示例中,网络接口102被提供有网络路由功能,以管理在智能存储器缓冲器100和经由共享的外部总线(例如图1B的共享的总线14)连接到其的多个设备(例如,具有智能存储器缓冲器的其它存储器模块和/或处理器)之间的通信。这样,包含智能存储器缓冲器100的存储器模块可以同时向一个或多个处理器或控制器提供数据服务,并且能够同时与其它存储器模块通信以执行数据和/或奇偶校验信息的模块到模块(或节点到节点)转移。图示示例的网络接口102使用网络协议来仲裁和管理与其它设备的通信。不像传统存储器接口,网络接口102通过使用分组路由、网络协议和仲裁方案而允许增加的总线容量。
图示示例的智能存储器缓冲器100被提供有控制逻辑104,以在被存储在包含智能存储器缓冲器100的存储器模块的存储器110中的数据和/或奇偶校验信息上管理存储器访问过程和操作。图示示例的控制逻辑104被配置为执行复杂存储器访问操作(例如地址转化、奇偶校验生成、错误校正/检测等),其使得所连接的处理器能够把计算密集的存储器访问过程卸载到智能存储器缓冲器100上。在图示示例中,使用逻辑电路来实施控制逻辑100。然而,软件和/或固件可以附加地或替代地被用于实施控制逻辑104。
图示示例的智能存储器缓冲器100被提供有缓冲器106,以暂时地存储经由网络接口102接收的到来的数据和/或奇偶校验信息和/或暂时地存储用于经由网络接口102传送到其它设备(例如,处理器、外部存储器控制器和/或其它存储器模块的其它智能存储器缓冲器)的外出数据。
图示示例的智能存储器缓冲器100被提供有存储器接口108,以把智能存储器缓冲器100通信地耦合到存储器110。在图示示例中,智能存储器缓冲器100和存储器110共同位于相同存储器模块上(例如安装在相同印刷电路板(PCB)上或堆叠在相同3D堆叠芯片中)。在图示示例中,存储器接口108包括一个或多个技术特定的存储器控制器(例如DRAM控制器、NVRAM控制器等),其根据一个或多个技术特定的工业标准存储器接口(例如由JEDEC固态技术协会采纳的存储器接口标准,诸如DRAM接口、NVRAM接口等)来实施。例如,存储器接口108可以包括DRAM控制器,其具有用以控制预充电定时、行地址选通(RAS)定时、列地址选通(CAS)定时、自刷新模式、突发访问模式、低功率模式等的逻辑。
在图示示例中,存储器接口108是存储器特定的接口,其意图促进与存储器模块的板上的一个或多个特定类型的存储器的通信,而网络接口102不特定于任何类型的存储器技术。这样,具有智能存储器缓冲器(像智能存储器缓冲器100)和具有不同类型的存储器技术的不同存储器模块可以经由它们的网络接口102彼此通信,即使它们的内部存储器通信依照对应于它们相应存储器技术的不同类型的存储器接口。
图示示例的存储器110是固态或IC存储器设备,诸如易失性DRAM设备或非易失性RAM设备。图示示例的智能存储器缓冲器100使得一些存储器模块能够具有易失性DRAM并且其它存储器模块能够具有非易失性RAM。在一些示例中,智能存储器缓冲器100使得能够实施具有在单个存储器模块上的不同类型存储器(诸如不同类型的易失性存储器(例如DRAM和SRAM))、在单个存储器模块上的不同类型非易失性存储器(例如PCRAM和忆阻器)和/或在单个存储器模块上的不同类型易失性和非易失性存储器(例如,DRAM和PCRAM、DRAM和忆阻器等)的混合存储器模块。在一些这样的示例中,为了实施这样的混合存储器模块,存储器接口108可以包括如上面所讨论的多个类型的技术特定的存储器控制器(例如DRAM控制器、PCRAM控制器、忆阻器控制器、SRAM控制器等),以使得存储器缓冲器100能够与相同存储器模块上的不同类型的存储器技术通信。照这样,图示示例的智能存储器缓冲器100使得能够使用存储器模块的阵列来实施存储器系统,存储器模块的阵列具有按以下形式的不同类型的存储器技术:按从一个存储器模块到另一个而不同的存储器技术的形式和/或按在单个存储器模块内具有不同存储器技术的混合存储器模块的形式。
图2是具有示例存储器模块202a-d的示例存储器系统200,示例存储器模块202a-d包括智能存储器缓冲器204a-d。在图示示例中,存储器模块202a-d与图1A和1B的存储器模块112基本上类似或相同,并且智能存储器缓冲器204a-d与图1A和1B的示例智能存储器缓冲器100基本上类似或相同。在图示示例中,根据本公开的教导,智能存储器缓冲器204a-d经由存储器模块间通信206a-f彼此通信并且经由处理器-存储器通信210a-d与处理器208a-d通信。在图示示例中,使用与图1的网络接口102基本上类似或相同的智能存储器缓冲器204a-d的网络接口来实施存储器模块间通信206a-f和处理器-存储器通信210a-d。
智能存储器缓冲器204a-d使得处理器208a-d中的任何一个能够经由存储器模块间通信206a-f和处理器-存储器通信210a-d中的一个或多个来访问被存储在存储器模块202a-d的任何一个中的信息。这样,处理器208a-d可以共享存储器模块202a-d,并且通过把这样的数据存储在存储器模块202a-d的任何一个中来与彼此共享数据。
在一些示例中,存储器模块202a-d的网络使能动态存储器共享。例如,如果存储器模块202a-d通过存储器模块202a-d的网络形成由四个处理器208a-d平等共享的总共1太字节(TB)的存储器(例如每个处理器256吉字节(GB)),则处理器208a-d中的任一个(或在处理器208a-d之一上运行的虚拟机)可以临时需求比256GB更多的容量。在NVRAM设备中的非易失性被用于为快速持久的存储器中对象(诸如存储在文件系统中的文件)提供存储时,可以有利地使用存储器空间在处理器之中的这样的高效共享。
存储器模块间通信206a-f和处理器-存储器通信210a-d表示在存储器模块202a-d和/或处理器208a-d之间传送的信息的逻辑路径,并且不一定是其之间的物理路径。例如,智能存储器缓冲器204a-d和处理器208a-d可以连接到共享的总线(例如图1A的共享的总线14),并且智能存储器缓冲器204a-d和处理器208a-d的网络接口(例如图1的网络接口102)管理和仲裁共享的总线上的通信,以使得信息可以在共享的总线上在任何一个或多个智能存储器缓冲器204a-d和一个或多个处理器208a-d之间经由存储器模块间通信206a-f和/或处理器-存储器通信210a-d被传送。
在图示示例中,智能存储器缓冲器204a-d经由存储器模块202a-d上的对应存储器模块内通信214a-d与RAM设备212a-d(例如IC或固态存储器设备)中对应的一个通信。使用不同于由智能存储器缓冲器204a-d的网络接口(例如图1的网络接口102)实施的存储器模块间通信206a-f和处理器-存储器通信210a-d的一个或多个格式或协议来实施存储器模块内通信214a-d。在图示示例中,存储器模块内通信214a-d特定于RAM设备212a-d的存储器技术的类型。这样,任何存储器模块202a-d可以经由存储器模块间通信206a-f与任何其它存储器模块202a-d通信,而不管是否存储器模块202a-d在它们的RAM设备212a-d中具有相同或不同的存储器技术并且使用不同类型的存储器模块内通信214a-d。
在一些示例中,RAM设备212a-d是全部相同的存储器技术(例如全部DRAM或全部NVRAM),以便形成同质存储器系统。在其它示例中,使用两个或更多不同类型的存储器技术来实施RAM设备212a-d以便形成混合存储器系统。例如,一些RAM设备212a-d可以是一个或多个类型的DRAM或SRAM,并且其它RAM设备212可以是一个或多个类型的NVRAM(例如,相变ram(PCRAM)、忆阻器、自旋转移矩随机存取存储器(STT-RAM)等)。在其它示例中,存储器模块202a-d的存储器设备212a-d可以是除了RAM之外的任何类型的存储器。
使用智能存储器缓冲器204a-d有多个优点。例如,利用智能存储器缓冲器204a-d的网络接口102,不需要针对处理器(或外部存储器控制器)需要与其通信的每个不同类型的存储器技术在处理器(或外部存储器控制器)上提供存储器技术特定的物理信道。这节省处理器芯片上的引出脚使用和引脚复用。通过在处理器的单个物理存储器信道上运行所有存储器访问业务(例如处理器-存储器通信210a-d)而不是在处理器上运行多个物理存储器信道,其中一些信道在长时段内保持空闲(在其期间连接到那些信道的存储器不被访问),网络接口102还改善芯片外信道带宽的使用效率。
智能存储器缓冲器204a-d使得能够如下面详细描述的那样执行直接存储器到存储器数据转移。通过不需要处理器被涉及在对于不同存储器模块之间转移数据所需的每个操作中,直接存储器到存储器数据转移以多种方式改善数据访问效率。例如,在从处理器(或外部存储器控制器)接收到直接存储器到存储器转移请求之后,一个或多个智能缓冲器204a-d可以在没有处理器(或外部存储器控制器)的另外干预的情况下以高效方式管理所请求的指明的存储器模块之间的数据转移。这样的数据转移对于执行以下是有用的:例如,针对DRAM缓存的数据块填充/逐出、在分区的平的存储器空间中的数据页迁移/降级以及高性能计算系统(HPCS)中的检查点设定。此外,直接存储器到存储器转移请求使得处理器能够访问其它存储器同时在存储器模块之间并行完成转移。
在一些示例中,智能存储器缓冲器204a-d被用于实施标签/元数据存储和相关联的缓存控制器用以实施DRAM缓存。由于DRAM存储器相对于传统上用于实施缓存的嵌入式SRAM的较低成本,这样的DRAM缓存可以比在先缓存更加成本有效。
在一些示例中,除了允许处理器把存储器访问密集的操作卸载到智能存储器缓冲器204a-d上之外,智能存储器缓冲器204a-d还被提供有执行以下各项中一个或多个的逻辑(例如图1B的控制逻辑104或其一部分):数据压缩/解压缩、用于提供数据安全性的数据加密/解密、以及用于实施存储器保护的错误校正码(ECC)编码/解码。例如,当对去往NVRAM的DRAM数据(在HPCS中)进行检查点设定时,压缩可以减小检查点存储和时间。在先系统中,DRAM中的数据首先被取出到芯片上缓存,外部处理器压缩数据,并且处理器把经压缩的数据写到NVRAM。然而,本文所公开的示例智能存储器缓冲器可以被用于实施直接存储器到存储器转移(如下面更详细描述的),并且智能存储器缓冲器可以另外被提供有压缩逻辑,用于真时(on-the-fly)压缩数据以使得数据不需要被外部处理器压缩,由此节省外部处理器所需的周期以及处理器和存储器之间总线上的总线周期。
本文公开的示例智能存储器缓冲器还使能NVRAM中所存储的数据的改善的安全性,以使得所存储的数据较不易于受到恶意攻击者的损害,即使在系统断电时。例如,所公开的智能存储器缓冲器可以被提供有解密/加密逻辑,用于实施不同的期望水平的数据安全性以允许针对不同类型的存储器和/或不同类型的数据使用不同安全性策略。在其中存储器模块可移除地可附接或可安装到计算设备的一些示例中,存储器模块上的解密/加密逻辑对于以下是有用的:在存储器模块从计算设备被移除时,保护可移除地可附接的存储器模块(例如即使在没有被有效供电的情况下也使数据持久的NVRAM存储器模块)上的数据不遭偷窃或其它攻击。在存储器模块上提供解密/加密逻辑的另一示例优点是:新的、更新的或不同的(例如更强的)解密/加密算法可以被用户采纳,这通过购买具有解密/加密算法的新存储器模块,代替于需要购买具有新的、更新的或不同的解密/加密算法的新的或不同的计算设备。
在一些示例中,智能存储器缓冲器204a-d通过允许多个处理器跨单个包封(或PCB)内的多个存储器模块或跨分离的包封(或PCB)共享数据来使能在物理互连、存储器空间使用和设备间通信情况下的效率。存储器模块共享还使得存储器模块202a-d能够作为多端口的存储器而操作,以便提供访问的高可用性(针对相同或分离包封(或PCB)中的任何连接的处理器208a-d)和相对强的可靠性,这例如通过实施跨存储器模块202a-d的RAID配置。
RAID配置
图3示出可以用于实施示例独立盘冗余阵列(RAID)存储器系统的互连的存储器节点302(由圆圈表示)和处理器304(由方形表示)的示例系统300。在一些示例中,互连的存储器节点302和处理器304的示例系统300被实施在单个装置或设备上。在其它示例中,互连的存储器节点302被实施在单个装置或设备上,并且处理器304跨一个或多个其它设备而分布并且经由跨分离的设备的设备间通信与存储器节点302通信。
在图示示例中,存储器节点302与图2的存储器模块202a-d基本上类似或相同,并且具有与图1A和1B的智能存储器缓冲器100基本上类似或相同的智能存储器缓冲器。在一些示例中,存储器节点302全都具有DRAM设备或全都具有NVRAM设备。在其它示例中,一些存储器节点302具有DRAM设备并且其它存储器节点302具有NVRAM设备,从而实施混合存储器系统。在任何情况下,存储器节点302的网络接口(例如,图1的网络接口102)把存储器节点302与彼此通信地耦合,并且把至少一些存储器节点通信地耦合到分离的处理器304以允许处理器304访问被存储在任何存储器节点302中的数据。这样,存储器节点302使用存储器模块间通信(例如图2的存储器模块间通信206a-f)来彼此通信,并且使用处理器-存储器通信(例如图2的处理器-存储器通信210a-d)来与处理器304通信,如图3中所示。此外,在存储器节点302中提供的逻辑电路(例如图1B的控制逻辑104)被用于生成奇偶校验信息(例如图4中示出的奇偶校验值‘P’),奇偶校验信息以如下面结合图4所讨论的分布式布置跨多个互连的存储器节点302中的至少一些而存储。
在一些示例中,图3中示出的在存储器节点302和处理器304之间的互连是物理连接。在其它示例中,图3中示出的互连是逻辑连接(仅示出一些逻辑连接),并且存储器节点302和处理器304经由一个物理网络总线而物理连接到彼此,在所述物理网络总线上安装了所有存储器节点302和处理器304。
图4是示例RAID数据存储组织400,用于与图3的存储器节点302一起使用以实施示例RAID存储器系统。在图示示例中,RAID数据组织400被示出为与五个存储器节点302a-e连接。在图4的图示示例中,数据‘A’、‘B’、‘C’和‘D’表示跨以条带状布置的存储器节点302a-e而存储的数据,并且存储在存储器节点302a-e之一中的奇偶校验值‘P’表示跨同样以条带状布置的其它四个存储器节点302a-e而存储的数据的奇偶校验。在图示示例中,奇偶校验‘P’的位置是交错的(如RAID-5系统中类似所做的那样),以便在任何特定存储器位置上不引起争用。使用图4的RAID组织使得每当存储器节点302a-e中的任一个故障时数据能够被恢复。
虽然图4中示出了五个存储器节点302a-e,但是在其它示例中可以使用更少或更多的存储器节点。例如,可以使用4个存储器节点的集合、8个存储器节点的集合和/或任何其它数量的使用本文公开的存储器模块的节点的集合来实施RAID配置。在一些示例中,RAID配置是动态的,其中可以动态地添加另外的存储器节点,并且存储器节点中的智能存储器缓冲器管理所存储数据跨现有和新添加的存储器节点的重新分布。在一些示例中,RAID配置是静态的,其中存储器节点的数量不改变。此外,虽然图4中示出了单个奇偶校验,但是可以替代地采用双奇偶校验(如在RAID-6中类似地使用的)来提供从两个存储器节点的故障中恢复的能力。
写过程
图1的示例智能存储器缓冲器100对于实施互连的存储器模块(例如,图2的存储器模块202a-d)的阵列是有用的,与使用在先存储器技术可实现的相比,所述阵列使能相对更高效的处理器到存储器的写操作。
图5示出实施基于奇偶校验的数据保护的存储器系统500中的处理器502和存储器节点504之间的现有技术写过程。图5的现有技术写过程涉及处理器502相对高水平的干预或涉及,以把数据写到存储器节点504并且把奇偶校验写到另一存储器节点506。图5的现有技术写过程需要在四个步骤中涉及处理器502。在第一通信508中,处理器502从存储器节点504读取旧数据。在第二通信510中,处理器502把新数据写到存储器节点504。在第三通信512中,处理器502从存储器节点506读取旧的奇偶校验信息以使得处理器502可以生成新的奇偶校验信息。处理器502通过对旧数据、新数据和旧奇偶校验执行异或(XOR)操作(例如,新奇偶校验=旧数据(XOR)新数据(XOR)旧奇偶校验)来生成新的奇偶校验信息。在处理器502生成新的奇偶校验信息之后,处理器502在第四通信514中把新的奇偶校验信息写到存储器节点506。
图6是在实施基于奇偶校验的数据保护的示例存储器系统600中的示例处理器602和示例存储器节点604之间的根据本公开教导的示例写过程。图示示例的写过程可以结合图3和4的RAID配置和/或结合任何其它存储器配置而被使用。在图6的示例写过程中,示例存储器节点604把数据写到其存储器,并且示例存储器节点606把奇偶校验信息写到其存储器。图示示例的示例存储器节点604和606与图1的存储器模块112基本类似或相同。
在图示示例中,处理器602把单个写请求通信608发送到存储器节点604,请求把新数据写到存储器节点604中的存储器位置。在处理器602把写请求通信608发送到存储器节点604之后,存储器节点604和606在没有处理器602另外干预的情况下处置用于写数据和奇偶校验的操作。例如,存储器节点604的智能存储器缓冲器从由处理器602指定的存储器位置读取旧数据,并且把新数据写到所述存储器位置(操作610)。在图示示例中,存储器节点604的智能存储器缓冲器不把旧数据发送回到处理器602,如图5的现有技术写过程中进行的那样,其中存储器节点504在通信508处把旧数据发送到处理器502。
存储器节点604的智能存储器缓冲器把旧数据和新数据发送到存储器节点606(通信612)。在图示示例中,存储器节点604的智能存储器缓冲器对旧数据和新数据执行异或(XOR)操作,并且在通信612处把XOR操作的结果发送到存储器节点606。在其它示例中,存储器节点604的智能存储器缓冲器不对旧数据和新数据执行XOR操作,并且替代地,在从存储器节点604接收旧数据和新数据之后,存储器节点606对旧数据和新数据执行XOR操作。存储器节点606的智能存储器缓冲器从与存储在存储器节点604中的新数据相对应的奇偶校验存储位置读取旧奇偶校验,并且至少基于存储在存储器节点604中的新数据确定并写入新奇偶校验信息(操作614)。在图示示例中,存储器节点606不需要处理器602确定新的奇偶校验,不像图5的现有技术写过程,其需要与处理器502的通信512和514以使得处理器502能够确定新奇偶校验信息。在图6的图示示例中,存储器节点606的智能存储器缓冲器中的控制逻辑(例如控制逻辑104)通过对旧数据、新数据和旧奇偶校验执行异或(XOR)操作来确定新奇偶校验信息。然而,用于确定奇偶校验信息的其它技术可以替代地由存储器节点606使用。虽然在图6中未示出,但是存储器节点606和/或存储器节点604可以向处理器602发送通信,确认所请求的写操作的成功完成(如果它成功完成的话)或所请求的写操作的未成功完成(如果它未能成功完成的话)。
相对于自图5的处理器502所需的用于实施图5的示例现有技术写过程的通信数量,图6的示例写过程通过需要来自处理器602的较少的通信(例如在图6的图示示例中仅单个通信)来实施根据本文所公开的教导的写过程而使得有更高效的总线利用和更高效使用处理器资源。
转发的写过程
在一些示例中,存储器节点可以请求另一存储器节点执行一个或多个数据写。在一些示例中,存储器节点可以响应于接收到来自处理器(或外部存储器控制器)的写请求而这样做,所述写请求是把数据写到目的地存储器节点,其不同于从处理器接收初始写请求的存储器节点。在一些示例中,存储器节点可以作为DRAM缓存而操作,并且有时可以把写请求转发到NVRAM存储器节点以便直写数据以用于较长期存储在NVRAM存储器节点中。
图7是使用具有智能存储器缓冲器704a-b的存储器模块702a-b以从存储器模块702a的易失性DRAM设备706向存储器模块702b的NVRAM设备708直写数据的示例转发的写过程。图7的图示示例的示例转发的写过程可以结合图3和4的RAID配置和/或结合任何其它存储器配置而被使用。图示示例的智能存储器缓冲器704a-b与图1A和1B的智能存储器缓冲器100基本类似或相同。在混合存储器系统(例如图7的DRAM和NVRAM配置)中,DRAM可以被用作硬件管理的缓存(DRAM缓存)或软件管理的低等待时间物理存储器区(分区的平的存储器空间)。在图7的图示示例中,存储器模块702a是硬件管理的缓存(例如,DRAM缓存),处理器710使用其来相对快速地访问(例如读和/或写)数据,并且存储器模块702b是长期存储装置,其有时被更新以存储来自DRAM设备706的复制数据,用于较长期存储在NVRAM设备708中。在图示示例中,DRAM设备706中的数据是最初源自或源于处理器710处的数据(例如,处理器710把数据写到DRAM设备706)。
在图示示例中,处理器710在存储器模块704a的DRAM设备706上执行DRAM读和/或写操作。在图示示例中,存储器模块702a的智能存储器缓冲器704a把一个或多个写请求714发送到存储器模块702b的智能存储器缓冲器704b。在图示示例中,智能存储器缓冲器704b通过对DRAM设备中所写的相同数据进行写而在NVRAM设备708中复制DRAM设备706的状态(操作716)。
在一些示例中,智能存储器缓冲器704a和/或智能存储器缓冲器704b被提供有对应的压缩/解压缩逻辑718a、718b和/或加密/解密逻辑720a、720b。这样,智能存储器缓冲器704a和/或智能存储器缓冲器704b可以在写到DRAM设备706和/或NVRAM设备708的数据上执行对于实施数据安全性和/或数据压缩特征所需的任何加密/解密和/或压缩/解压缩,而不需要处理器710使用其资源来执行加密/解密和/或压缩/解压缩过程。压缩/解压缩逻辑和/或加密/解密逻辑(例如与压缩/解压缩逻辑718a、718b和/或加密/解密逻辑720a、720b基本类似)可以被提供给本文公开的任何示例智能存储器缓冲器,以使得智能存储器缓冲器能够执行压缩/解压缩过程和/或加密/解密过程,由此允许处理器把这样的过程卸载到示例智能存储器缓冲器。
在一些示例中,一个或多个写请求714对应于在存储器模块702a处从处理器710接收的一个或多个写请求,以使得在智能存储器缓冲器704a把接收自处理器710的数据写在DRAM设备702a中之后,智能存储器缓冲器704b把来自处理器710的具有相同数据的一个或多个写请求转发到智能存储器缓冲器704b,以使得智能存储器缓冲器704b能够将相同数据复制在NVRAM设备702b中用于较长期存储。这样,存储器模块702a作为快速访问DRAM缓存而操作以用于来自处理器710的数据的即时存储,以使得处理器710可以更快速地执行涉及繁重数据访问业务(例如在存储器中存储大文件)的过程,同时存储器模块702a和702b作为并行过程来处置所存储数据到存储器模块702b中的复制以用于长期存储,而不需要处理器710的干预来执行这样的数据复制。
在其它示例中,智能存储器缓冲器704a可以不立即响应于从处理器710接收的(一个或多个)写请求而发送一个或多个写请求通信714。代替地,智能存储器缓冲器704a可以响应于某个其它激励(诸如由智能存储器缓冲器704a的控制逻辑(例如图1B的控制逻辑104)生成的自动事件)而发送一个或多个写请求通信714到存储器模块702b。这样,智能存储器缓冲器704a可以在没有自外部设备的干预(例如没有处理器710的干预)的情况下使用在智能存储器缓冲器704a处生成的自动事件来生成节点到节点拷贝请求。自动事件可以使用定时器、计数器和/或如下那样的任何其它激励来生成:所述任何其它激励生成事件,触发智能存储器缓冲器704a发送(一个或多个)写请求通信714以执行直写过程,从而在NVRAM设备708中复制来自DRAM设备706的数据。
在一些示例中,存储器模块702a是图6的存储器节点604,处理器710是图6的处理器602,并且存储器模块702b是图6的示例存储器系统600中的另一存储器节点。在这样的示例中,响应于从处理器602接收到新数据和写请求通信,存储器节点702a还发送图7的写请求通信714到存储器模块702b。在这样的示例中,存储器模块702b可以与如上结合图6描述的存储器节点604一起工作,以基于在图7的存储器模块702b的NVRAM设备708中复制的新数据而把新奇偶校验信息写在存储器节点604中。
直接存储器到存储器转移
图8是在具有智能存储器缓冲器804b和804c的两个存储器模块802b和802c之间执行直接存储器到存储器转移的示例过程。图8的图示示例的示例直接存储器到存储器转移过程可以结合图3和4的RAID配置和/或结合任何其它存储器配置被使用。图示示例的智能存储器缓冲器804b和804c与图1A和1B的智能存储器缓冲器100基本上类似或相同。图8的示例存储器配置是在存储器模块802a和802b中具有DRAM设备806a和806b和存储器模块802c中具有NVRAM设备808的混合存储器系统。
具有硬件管理的缓存(例如DRAM缓存)和/或软件管理的低等待时间物理存储器区(分区的平的存储器空间)的在先混合存储器系统(例如,图8的存储器配置)使用至/自DRAM和NVRAM的相对大数量的数据转移(例如以执行直写操作、DRAM缓存中的缓存填充/逐出、和/或在分区的平的存储器空间中的页迁移/降级)。在先存储器系统中,存储器设备不能是存储器总线的主导装置(master)。照这样,一些在先系统使用分离的存储器控制器来从一个存储器读取数据块,缓冲数据块,然后把数据块写出到另一存储器,从而执行存储器到存储器转移。这样的现有技术存储器到存储器转移过程的缺点是存储器总线带宽利用不良(转移的实际数据的量是块大小的两倍),在块转移期间存储器控制器不能使用存储器总线来访问其它数据,并且由于频繁的读/写切换,存储器到存储器转移过程产生不良的总线利用。在较新的DRAM设备中,作为指定用于较新DRAM总线的增加的读/写周转损失的结果,读/写切换引起较长延迟。
本文公开的示例智能存储器缓冲器可以被用于实施直接存储器到存储器拷贝操作,其在来自处理器的执行拷贝的初始请求之后需要较少或不需要处理器的干预。例如,在图8的图示示例中,处理器810把块数据转移请求812发送到存储器模块804b,请求把指定的一个或多个数据块从存储器模块804b拷贝到存储器模块804c。存储器模块802b的智能存储器缓冲器804b接收块数据转移请求812,并且智能存储器缓冲器804b与存储器模块802c的智能存储器缓冲器804c通信以便执行所请求的(一个或多个)数据块从DRAM设备806b到NVRAM 808的DRAM到NVRAM拷贝过程814,而没有处理器810的另外干预。这样,处理器810可以继续在存储器模块802a中执行其它过程(包括例如(一个或多个)DRAM访问816)同时智能存储器缓冲器804b和804c并行地执行DRAM到NVRAM拷贝814。
在图示示例中,在初始块数据转移请求812被处理器810发送之后,处理器810不再涉及执行DRAM到NVRAM拷贝过程814,并且当拷贝过程814完成时,智能存储器缓冲器804b或智能存储器缓冲器804c发送通信到处理器810,确认所请求的拷贝过程成功完成。在一些示例中,如果拷贝过程814没有成功完成,则智能存储器缓冲器804b或智能存储器缓冲器804c可以替代地把失败通知传送给处理器810。
DRAM缓存
图9是使用具有示例智能存储器缓冲器904a和DRAM设备906的存储器模块902a实施的示例DRAM缓存。图9的图示示例的示例DRAM缓存可以结合图3和4的RAID配置和/或结合任何其它存储器配置被使用。示例智能存储器缓冲器904a与图1A和1B的智能存储器缓冲器100基本类似。为了在图6的图示示例中使用DRAM设备906作为DRAM缓存,智能存储器缓冲器904a具有附加特征(例如DRAM缓存控制器、标签存储装置和元数据存储装置),所述附加特征使得它能够通过使用标准物品DRAM作为DRAM设备906来实施DRAM缓存。在一些示例中,智能存储器缓冲器904a包括用于实施附加特征的SRAM或嵌入式DRAM(eDRAM)。
在图示示例中,智能存储器缓冲器904a包括DRAM缓存控制器908、用于存储标签和对应的数据或指针的元数据的数据结构910、以及网络接口912(例如与图1的网络接口102基本类似或相同)。在图示示例中,智能存储器缓冲器904a从处理器918(或外部存储器控制器(未示出))接收数据请求916。响应于数据请求916,DRAM缓存控制器908使用存储在元数据的数据结构910中的标签来确定缓存命中/未命中。如果DRAM缓存控制器908确定已发生缓存命中(例如所请求的数据存储在DRAM设备906中),则智能存储器缓冲器904a通过基于存储在元数据的数据结构910中的对应数据指针从DRAM设备906检索所请求的数据来服务数据请求916。如果DRAM缓存控制器908确定请求916导致缓存未命中(例如,所请求数据未被存储在DRAM设备906中),则智能存储器缓冲器904的网络接口912发送数据请求920到另一存储器模块。在图9的图示示例中,网络接口912把数据请求920发送到存储器模块902b以请求在数据请求916中被请求的相同数据。这样,存储器模块902b的智能存储器缓冲器904b可以把所请求数据922从NVRAM设备908发送到初始发送数据请求916的处理器918(或外部存储器控制器)。在图示示例中,智能存储器缓冲器904b通过智能存储器缓冲器904a把所请求数据922发送到处理器918。这样,智能存储器缓冲器904a可以利用所请求数据922来更新DRAM设备906,并且更新元数据的数据结构910中的对应信息。
图9的DRAM缓存配置可以被配置为使用与处理器请求大小不同的DRAM缓存线大小。例如,虽然处理器918请求64字节数据块,但作为DRAM缓存而操作的存储器模块902a可以管理更大的数据块(例如4kB或更大)以便使用诸如扇区缓存或去耦缓存之类的技术来减少标签存储开销。此外,图9的DRAM缓存配置不需要定制设计的DRAM,其也不需要在处理器918或外部存储器控制器处存储标签来实施DRAM缓存。
聚集/分散操作
本文公开的示例智能存储器缓冲器还可以被用于实施存储器系统,所述存储器系统使用聚集操作来读取存储在多个互连存储器节点中的分布式数据和/或使用分散操作来把数据以分布式方式写到多个互连存储器节点。这样,示例智能存储器缓冲器使得能够以比在先存储器系统相对更多的效率来读/写分布式数据。
图10是其中处理器1002可以读取分布在RAID组织中若干存储器节点1004之中的数据的现有技术方式。按照图10的读取分布式数据的现有技术方式,处理器1002把分离的读请求传送到分离的存储器节点1004(例如在图示示例中五个分离的读请求到五个分离的存储器节点1004)以读取跨五个分离的存储器节点1004分布的数据。在图示示例中,五个分离的存储器节点1004中的每个返回具有存储在其中的所请求数据的一部分的对应响应,导致处理器1002需要接收和处理五个分离的响应。这导致处理器和总线资源的不良利用和不良访问时间。
图11是根据本公开教导的示例聚集/分散过程,以使得处理器304能够读/写跨图3的示例系统300的RAID组织中若干存储器节点302分布的数据。图示示例的存储器节点302与图1A和1B的示例存储器模块112基本类似或相同。
在图示示例中,处理器304发送初始数据读请求1102到第一存储器节点302a。初始数据请求1102使得存储器节点302a检索被存储在其存储器设备(例如图1A和1B的存储器110)的存储器位置中的所请求数据的一部分,并且把所检索的部分数据和数据请求转发到第二存储器节点302b。在图11的图示示例中,部分数据和所转发的数据请求由五个存储器节点302a-e之间的箭头表示。当存储器节点302b-e中的每一个从节点302a-d中的前一个接收到部分数据和所转发的数据请求时,进行接收的存储器节点302b-e从其存储器设备中的存储器位置检索其所请求数据的部分,把其数据部分接合或连接(concatenate)到所接收的部分数据,并且把更新的部分数据和所转发的数据请求发送到存储器节点302b-e中的下一个。当聚集序列中的最后一个存储器节点302e检索了其所请求数据的部分时,它把其数据部分接合或连接到它从之前的存储器节点302d接收到的部分数据以形成所请求数据的全部。此外,存储器节点302e在所请求数据响应1104中把所请求数据的全部发送到处理器304。因此,在图示示例中,处理器304仅需要发送出初始数据读请求1102并且接收所请求数据响应1104,而不需要把分离的数据请求发送到存储器节点302a-e中的每一个。这样,存储器节点302b-e检索其所请求数据的相应部分,而不直接从处理器304接收针对这样的数据部分的请求。
跨存储器节点302a-e写数据的数据分散序列可以被类似地实施。在这样的示例中,处理器304发送初始数据写请求(而不是初始数据读请求1102)到存储器节点302a,其具有要写的数据,和数据要被写到的地址范围。存储器节点302a-e中的智能存储器缓冲器然后使用数据写请求中的地址范围以基于在存储器节点302a-e之间发送的所转发的数据写请求(例如,沿着图11中示出的存储器节点302a-e之间的箭头的相同路径)来确定数据的哪些部分应当被写到跨存储器节点302a-e中不同存储器节点的哪些存储器位置。存储器节点302e然后可以发送成功或失败的最终通信到处理器304。这样,处理器304不需要发送分离的写请求到分离的存储器节点302a-e,而是代替地仅需要发送初始数据写请求到存储器节点302a,并且从存储器节点302e接收最终成功或失败通信。
在图示示例中,存储器节点302a-e中的智能存储器缓冲器可以存储映射表,映射表示出存储器节点302a-e中的哪些存储与处理器304在数据读请求(例如初始数据请求1102)和/或数据写请求中传送的存储器地址对应的哪些地址范围。这样,存储器节点302可以确定它们是否被指派了相关数据的地址范围以及哪些其它存储器节点302被指派了与数据读/写请求的不同部分相关的数据的地址范围。
虽然图11的示例示出了跨五个存储器节点302a-e分布的数据,但是图11的聚集/分散技术可以被执行用于跨更少或更多节点分布的数据。
虽然图6-9和11的示例过程被示出和描述为彼此独立,但是在一些示例中,图6-9和11的示例过程中的任何一个或多个可以在使用相同和/或不同存储器模块或存储器节点的相同存储器系统上一起并行或逐一地执行。
虽然上面公开了示例方法、装置和制品,其除了其它组件之外包括在硬件上执行的软件,但是应当注意的是,这样的方法、装置和制品仅是说明性的并且不应当被认为是限制性的。例如,设想了任何或所有这些硬件和软件组件可以排他地体现在硬件中、排他地体现在软件中、排他地体现在固件中或在硬件、软件和/或固件的任意组合中。因此,虽然上面描述了示例方法、装置和制品,但是所提供的示例不是实施这样的方法、装置和制品的唯一方式。因此,虽然已经在本文描述了某些方法、装置和制品,但是本专利的覆盖范围不限于此。相反地,本专利覆盖字面上或在等同原则下清楚地落入权利要求范围内的所有方法、装置和制品。

Claims (15)

1.一种用以在存储器节点中写数据的方法,包括:
在第一存储器节点处接收要写在第一存储器节点中的存储器位置处的新数据,所述新数据从一设备接收;
在第一存储器节点处,从所述存储器位置读旧数据,而不把所述旧数据发送到所述设备;
在第一存储器节点处,把所述新数据写到所述存储器位置;以及
把所述新数据和旧数据从第一存储器节点发送到第二存储器节点以便在没有所述设备确定奇偶校验信息的情况下在第二存储器节点中存储奇偶校验信息,所述奇偶校验信息至少基于存储在第一存储器节点中的所述新数据。
2.如权利要求1中限定的方法,其中所述设备是处理器,并且第一存储器节点经由网络接口与处理器和第二存储器节点通信。
3.如权利要求1中限定的方法,还包括:在第一存储器节点处接收到所述新数据之后,不需要与所述设备进行另外的通信来把所述新数据写在存储器位置中和把所述新数据和旧数据从第一存储器节点发送到第二存储器节点。
4.如权利要求1中限定的方法,其中所述设备是与第一存储器设备进行网络通信的第三存储器节点,所述数据是由与第三存储器节点通信的处理器发起的转发数据。
5.如权利要求1中限定的方法,还包括:响应于节点到节点拷贝请求,把存储在第一存储器节点的存储器位置处的所述数据从第一存储器节点发送到第三存储器节点以用于写到第三存储器节点。
6.如权利要求5中限定的方法,还包括:在第一存储器节点处从请求设备或自第一存储器节点外部的另一请求设备接收节点到节点拷贝请求。
7.如权利要求5中限定的方法,其中节点到节点拷贝请求是在没有来自外部设备的干预的情况下在第一存储器节点处生成的自动事件。
8.一种用以在联网的存储器组织中存储数据的装置,包括:
多个动态随机存取存储器模块;和
动态随机存取存储器模块上的网络接口,用以通信地耦合动态随机存取存储器模块,并且把至少一些动态随机存取存储器模块通信地耦合到处理器以允许处理器访问存储在任何动态随机存取存储器模块中的数据;以及
在动态随机存取存储器模块中的相应动态随机存取存储器模块上的逻辑电路,用以生成奇偶校验信息,所述奇偶校验信息以分布式布置跨所述多个动态随机存取存储器模块而存储。
9.如权利要求8中限定的装置,其中所述数据和奇偶校验跨以条带状布置的动态随机存取存储器模块被存储。
10.如权利要求8中限定的装置,其中所述动态随机存取存储器模块被安装在单个印刷电路板上。
11.一种用以读数据的装置,包括:
处理器;和
多个存储器节点,其与处理器通信并且彼此通信,处理器把针对数据的请求发送到存储器节点中的第一个,所述数据以分布式配置被存储在至少第一存储器节点和存储器节点的第二个中,第一存储器节点从第一存储器节点的第一存储器位置检索所述数据的第一部分,第二存储器节点从第二存储器节点的第二存储器位置检索所述数据的第二部分,并且第二存储器节点把所述数据的第一和第二部分发送到处理器。
12.如权利要求11中限定的装置,其中第一和第二存储器节点是包括动态随机存取存储器或非易失性存储器中至少一个的固态存储器模块。
13.如权利要求11中限定的装置,其中第一和第二存储器节点被安装在单个印刷电路板上。
14.如权利要求11中限定的装置,其中第二存储器节点在第二存储器节点处从第一存储器节点接收所述数据的第一部分之后检索所述数据的第二部分。
15.如权利要求11中限定的装置,其中第二存储器节点在没有直接从处理器接收针对所述数据的第二部分的请求的情况下检索所述数据的第二部分。
CN201280075022.3A 2012-10-30 2012-10-30 智能存储器缓冲器 Active CN104508644B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/062600 WO2014070146A1 (en) 2012-10-30 2012-10-30 Smart memory buffers

Publications (2)

Publication Number Publication Date
CN104508644A true CN104508644A (zh) 2015-04-08
CN104508644B CN104508644B (zh) 2017-12-08

Family

ID=50627846

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280075022.3A Active CN104508644B (zh) 2012-10-30 2012-10-30 智能存储器缓冲器

Country Status (5)

Country Link
US (2) US10019176B2 (zh)
EP (1) EP2915049B1 (zh)
KR (1) KR101630583B1 (zh)
CN (1) CN104508644B (zh)
WO (1) WO2014070146A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020155074A1 (zh) * 2019-01-31 2020-08-06 华为技术有限公司 一种处理装置、方法及相关设备
CN112068983A (zh) * 2019-06-10 2020-12-11 爱思开海力士有限公司 存储器系统及其操作方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940129B2 (en) * 2015-04-24 2018-04-10 Optimum Semiconductor Technologies, Inc. Computer processor with register direct branches and employing an instruction preload structure
US10268416B2 (en) * 2015-10-28 2019-04-23 Advanced Micro Devices, Inc. Method and systems of controlling memory-to-memory copy operations
US10067763B2 (en) 2015-12-11 2018-09-04 International Business Machines Corporation Handling unaligned load operations in a multi-slice computer processor
US20170322843A1 (en) * 2016-05-04 2017-11-09 Sandisk Technologies Inc. Multi-die data storage device with in-memory parity circuitry
KR102553181B1 (ko) * 2016-07-12 2023-07-10 에스케이하이닉스 주식회사 메모리 장치 및 메모리 장치의 동작 방법
KR102540765B1 (ko) * 2016-09-07 2023-06-08 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US10324650B2 (en) 2016-09-23 2019-06-18 Advanced Micro Devices, Inc. Scoped persistence barriers for non-volatile memories
KR102665997B1 (ko) 2016-12-20 2024-05-13 에스케이하이닉스 주식회사 패킷을 부호화하는 장치 및 이를 포함하는 메모리 네트워크에서의 라우팅 방법
US10642520B1 (en) * 2017-04-18 2020-05-05 EMC IP Holding Company LLC Memory optimized data shuffle
US10353606B2 (en) 2017-10-12 2019-07-16 International Business Machines Corporation Partial data replay in a distributed memory buffer system
KR20210066551A (ko) * 2019-11-28 2021-06-07 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US11012511B1 (en) * 2020-01-14 2021-05-18 Facebook, Inc. Smart network interface controller for caching distributed data
US11226767B1 (en) * 2020-09-30 2022-01-18 Micron Technology, Inc. Apparatus with access control mechanism and methods for operating the same
US20220137835A1 (en) * 2020-10-30 2022-05-05 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices
US11567971B2 (en) 2020-11-19 2023-01-31 Samsung Electronics Co., Ltd. Systems, methods, and devices for storage shuffle acceleration
US20220197551A1 (en) * 2020-12-17 2022-06-23 Alibaba Group Holding Limited Storage nodes, integrated circuits and methods for storage node management
US20240036976A1 (en) * 2022-08-01 2024-02-01 Microsoft Technology Licensing, Llc Distributed raid for parity-based flash storage devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742752A (en) * 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US20030033572A1 (en) * 2001-08-09 2003-02-13 Walton John K. Memory system and method of using same
US20110238885A1 (en) * 2009-05-25 2011-09-29 Hitachi, Ltd. Storage subsystem

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2888401B2 (ja) * 1992-08-03 1999-05-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 冗長ディスクドライブアレイに対する同期方法
JP3237736B2 (ja) * 1993-09-07 2001-12-10 ヒュンダイ エレクトロニクス アメリカ データ記憶装置のマトリックス構造
US5594862A (en) * 1994-07-20 1997-01-14 Emc Corporation XOR controller for a storage subsystem
US5737744A (en) 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
JPH09311806A (ja) * 1996-05-24 1997-12-02 Hitachi Ltd データ不正更新の検出方法
WO2000030116A1 (en) * 1998-11-17 2000-05-25 Lexar Media, Inc. Method and apparatus for memory control circuit
US6754678B2 (en) * 1999-12-20 2004-06-22 California Institute Of Technology Securely and autonomously synchronizing data in a distributed computing environment
US6985995B2 (en) * 2002-03-29 2006-01-10 Panasas, Inc. Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
AU2003291014A1 (en) * 2002-11-14 2004-06-15 Isilon Systems, Inc. Systems and methods for restriping files in a distributed file system
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US7584335B2 (en) 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
WO2008131058A2 (en) 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
US8060692B2 (en) 2008-06-27 2011-11-15 Intel Corporation Memory controller using time-staggered lockstep sub-channels with buffered memory
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US8832370B2 (en) 2010-02-12 2014-09-09 Netapp, Inc. Redundant array of independent storage
US8103903B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742752A (en) * 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US20030033572A1 (en) * 2001-08-09 2003-02-13 Walton John K. Memory system and method of using same
US20110238885A1 (en) * 2009-05-25 2011-09-29 Hitachi, Ltd. Storage subsystem

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020155074A1 (zh) * 2019-01-31 2020-08-06 华为技术有限公司 一种处理装置、方法及相关设备
CN112068983A (zh) * 2019-06-10 2020-12-11 爱思开海力士有限公司 存储器系统及其操作方法

Also Published As

Publication number Publication date
CN104508644B (zh) 2017-12-08
EP2915049A1 (en) 2015-09-09
US10585602B2 (en) 2020-03-10
KR101630583B1 (ko) 2016-06-14
EP2915049A4 (en) 2016-11-02
US10019176B2 (en) 2018-07-10
WO2014070146A1 (en) 2014-05-08
KR20150036281A (ko) 2015-04-07
EP2915049B1 (en) 2020-03-04
US20180307420A1 (en) 2018-10-25
US20150193158A1 (en) 2015-07-09

Similar Documents

Publication Publication Date Title
US10585602B2 (en) Smart memory buffers
US10261902B2 (en) Parallel processing of a series of data units for writing
US10379948B2 (en) Redundancy coding stripe based on internal addresses of storage devices
US9921751B2 (en) Methods and systems for mapping a peripheral function onto a legacy memory interface
CN104794070B (zh) 基于动态非覆盖raid技术的固态闪存写缓存系统及方法
US10140136B2 (en) Distributed virtual array data storage system and method
US10891078B2 (en) Storage device with a callback response
TW201923575A (zh) 運作中磁碟冗餘陣列同位計算
US10289507B1 (en) Distributed rebuild of failed storage device
US20080086603A1 (en) Memory management method and system
CA2738733A1 (en) System and method of providing multiple virtual machines with shared access to non-volatile solid-state memory using rdma
US11681553B2 (en) Storage devices including heterogeneous processors which share memory and methods of operating the same
WO2019070433A1 (en) REDUNDANCY CODING BAND BASED ON COORDINATED INTERNAL ADDRESS SCHEME THROUGH MULTIPLE DEVICES
US10515014B1 (en) Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
CN107729536A (zh) 一种数据存储方法和装置
US20210103517A1 (en) Operating method of memory system and host recovering data with write error
WO2015145617A1 (ja) ストレージシステム及び記憶制御方法
CN106919339B (zh) 一种硬盘阵列及硬盘阵列处理操作请求的方法
US10503416B1 (en) Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
US10474391B2 (en) Storage system and method for executing file-based firmware commands and collecting response data
US10496284B1 (en) Software-implemented flash translation layer policies in a data processing system
US11334490B2 (en) Multi-value mapping for object store
WO2016122602A1 (en) Systems and methods for sharing non-volatile memory between multiple access models
EP4246330A1 (en) Storage device and operating method thereof
US20230325093A1 (en) Storage device and operating method thereof

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170122

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, L.P.

GR01 Patent grant
GR01 Patent grant