CN111679783A - 存储器控制器 - Google Patents

存储器控制器 Download PDF

Info

Publication number
CN111679783A
CN111679783A CN201910181860.2A CN201910181860A CN111679783A CN 111679783 A CN111679783 A CN 111679783A CN 201910181860 A CN201910181860 A CN 201910181860A CN 111679783 A CN111679783 A CN 111679783A
Authority
CN
China
Prior art keywords
data
memory
clock driver
coupled
register clock
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.)
Pending
Application number
CN201910181860.2A
Other languages
English (en)
Inventor
马青江
山岗
李春一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Montage Technology Shanghai Co Ltd
Original Assignee
Montage Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Montage Technology Shanghai Co Ltd filed Critical Montage Technology Shanghai Co Ltd
Priority to CN201910181860.2A priority Critical patent/CN111679783A/zh
Priority to US16/721,932 priority patent/US10929318B2/en
Publication of CN111679783A publication Critical patent/CN111679783A/zh
Pending legal-status Critical Current

Links

Images

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/1673Details of memory controller using buffers
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • 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/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/0658Controller construction 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol

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)
  • Computer Security & Cryptography (AREA)
  • Dram (AREA)

Abstract

本申请公开了一种存储器控制器,其耦接到存储模块以控制对所述存储模块的访问,所述存储模块包括一个或多个存储体,每个存储体包括多个存储单元。所述存储器控制器包括:寄存时钟驱动器,其耦接到所述存储模块,用于向所述存储模块提供数据访问命令以控制对所述存储模块的访问;一个或多个数据缓冲器,其耦接到所述寄存时钟驱动器,并且每个数据缓冲器通过一个存储体数据接口耦接到一个存储体;其中,至少一个所述存储体数据接口包括多个数据总线,并且每个数据总线分别与所述存储体数据接口所耦接的存储体中的一个或多个存储单元耦接,使得所述存储体能够在所述寄存时钟驱动器的控制下通过所述多个数据总线分别与所述数据缓冲器进行数据交互。

Description

存储器控制器
技术领域
本申请涉及存储器技术领域,更具体地,涉及一种存储器控制器。
背景技术
在现今的计算机系统中,内存模组通常包括内存缓冲芯片,其作为中央处理器(CPU)存取内存数据的必由通路,用于提升内存数据访问的速度及稳定性,以匹配CPU日益提高的运行速度及性能。常见的内存缓冲芯片包括:寄存时钟驱动器(RCD),可用来存储缓冲来自CPU的地址、命令和控制信号;以及数据缓冲器(DB),可用来存储缓冲来自存储单元的数据信号。
然而,在密集计算应用中,CPU与内存模组之间的接口带宽依然难以满足需求。因此,有必要提供一种改进的存储器系统。
发明内容
本申请的一个目的在于提供一种存储器控制器以满足高数据吞吐量应用对内存模块带宽的需求。
根据本申请的一些方面,提供了一种存储器控制器,其耦接到存储模块以控制对所述存储模块的访问,所述存储模块包括一个或多个存储体,每个存储体包括多个存储单元。所述存储器控制器包括:寄存时钟驱动器,其耦接到所述存储模块,用于向所述存储模块提供数据访问命令以控制对所述存储模块的访问;一个或多个数据缓冲器,其耦接到所述寄存时钟驱动器,并且每个数据缓冲器通过一个存储体数据接口耦接到一个存储体;其中,至少一个所述存储体数据接口包括多个数据总线,并且每个数据总线分别与所述存储体数据接口所耦接的存储体中的一个或多个存储单元耦接,使得所述存储体能够在所述寄存时钟驱动器的控制下通过所述多个数据总线分别与所述数据缓冲器进行数据交互。
在一些实施例中,所述寄存时钟驱动器包括配置单元,所述寄存时钟驱动器和所述数据缓冲器基于所述配置单元的状态工作在第一模式或第二模式,其中,在所述第一模式下,所述寄存时钟驱动器从主控制器接收所述数据访问命令,并且响应于所述数据访问命令实现所述主控制器经由所述数据缓冲器对所述存储模块的访问;在所述第二模式下,所述寄存时钟驱动器产生所述数据访问命令,以指示所述数据缓冲器根据所述数据访问命令对所述存储模块访问。
在一些实施例中,所述寄存时钟驱动器通过命令/地址总线从所述主控制器接收状态控制信息,所述寄存时钟驱动器根据所述状态控制信息设置所述配置单元的状态。
在一些实施例中,所述寄存时钟驱动器通过SMBus接口耦接到所述主控制器,并且所述主控制器通过SMBus接口改变或读取所述寄存时钟驱动器中配置单元的状态。
在一些实施例中,所述数据缓冲器与所述寄存时钟驱动器耦接并从所述寄存时钟驱动器接收操作命令,所述操作命令指示所述数据缓冲器工作在第一模式或第二模式。
在一些实施例中,所述数据缓冲器包括逻辑控制单元、多路选择单元和第一计算单元,所述逻辑控制单元从所述寄存时钟驱动器接收所述操作命令,当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第一模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述主控制器之间的数据交互;当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第二模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述第一计算单元之间的数据交互。
在一些实施例中,所述寄存时钟驱动器包括第二计算单元,所述第二计算单元与每个所述数据缓冲器中的多路选择单元耦接,当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第二模式时,所述逻辑控制单元还控制所述多路选择单元进行所述一个或多个存储单元与所述第二计算单元之间的数据交互。
在一些实施例中,所述数据缓冲器包括逻辑控制单元和多路选择单元,所述寄存时钟驱动器包括计算单元,所述计算单元与每个所述数据缓冲器中的多路选择单元耦接,所述逻辑控制单元从所述寄存时钟驱动器接收所述操作命令,当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第一模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述主控制器之间的数据交互;当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第二模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述计算单元之间的数据交互。
在本申请的另一些方面,还提供了一种存储器系统,其包括上述方面的存储器控制器和存储模块。
在本申请的又一些方面,还提供了一种计算机系统,其包括上述方面的存储器系统。
以上为本申请的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本申请范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。
附图说明
通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本申请内容的上述和其他特征。可以理解,这些附图仅描绘了本申请内容的若干实施方式,因此不应认为是对本申请内容范围的限定。通过采用附图,本申请内容将会得到更加明确和详细地说明。
图1示出了根据本申请一个实施例的存储器系统;
图2示出了图1的存储器系统中的寄存时钟驱动器的一种示例性结构;
图3示出了图1的存储器系统中的数据缓冲器的一种示例性结构;
图4示出了根据本申请一个实施例的密集计算方法的流程图;
图5示出了根据本申请另一个实施例的密集计算方法的流程图;
图6示出了根据本申请又一个实施例的密集计算方法的流程图;
图7示出了根据本申请另一个实施例的存储器系统;
图8示出了图7的存储器系统中的寄存时钟驱动器的一种示例性结构;
图9示出了根据本申请另一个实施例的存储器系统;
图10示出了根据本申请又一个实施例的存储器系统。
具体实施方式
在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本申请的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本申请中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本申请内容的一部分。
图1示出了根据本申请一个实施例的存储器系统100。
如图1所示,存储器系统100包括存储模块,所述存储模块包括多个存储体102,每个存储体102包括两个存储单元104,用于存储数据。在一些实施例中,存储模块可以是符合JEDEC双倍速率同步动态随机存取存储器(SDRAM)标准的存储模块,例如包括JEDEC DDR1、DDR2、DDR3、DDR4、DDR5以及其他双倍速率存储器标准。此外,存储模块也可以是符合其他标准或协议的内部存储器,例如SDRAM或RAMBUS内部存储器,也可以是符合未来存储器标准或协议的存储器。在一些实施例中,存储模块可以包括易失性存储器(例如,动态随机存储器)、非易失性存储器(快闪存储器,例如NAND或NOR快闪存储器)或者这两者的组合。在另一些实施例中,存储模块还可以是采用不同的生产工艺制造的新型存储器,包括但不限于:磁阻式存储器、相变存储器、电阻式存储器、半浮栅存储器,或者任意类型的其他存储器。需要说明的是,图1仅作为示例,在其他实施例中,存储模块也可以只包括一个存储体,或者每个存储体包括多于两个的存储单元,每个存储体中的存储单元的数量可以相同或者不同。此外需要说明的是,在此所述的存储单元可以是一颗内存颗粒,也可以包括两颗或更多颗内存颗粒。
如图1所示,存储器系统100还包括存储器控制器,存储器控制器包括寄存时钟驱动器(RCDX)106和多个数据缓冲器(DBX)108。
具体地,寄存时钟驱动器106耦接在主控制器110(例如,CPU)和存储模块之间,其可以从主控制器110接收包括访问地址和访问类型的数据访问命令。例如,数据访问命令可以是对存储模块中的一个或多个数据存储地址(即访问地址)进行访问(例如读取或写入)的命令。在一些实施例中,寄存时钟驱动器106通过命令/地址(Command/Address,C/A)总线耦接到主控制器110以接收数据访问命令。对于符合DDR4标准的存储器系统,该C/A总线可以包括管脚A0-A17、管脚BG0-BG1和/或管脚BA0-BA1。其中,管脚BG0-BG1用于确定存储模块中的哪个存储体组(Memory Bank Group)被处理,例如被写入或被读取;管脚BA0-BA1用于确定存储模块中的哪个存储体(Memory Bank)被处理;而管脚A0-A17则用于寻址并确定一个存储体中的哪一个存储单元被处理。此外,A16(RAS_n)、A15(CAS_n)以及A14(WE_n)这三个管脚的输入可以用于确定被输入的数据访问命令,例如读取命令、写入命令以及其他被预先定义的控制命令。在本申请的实施例中,在一些情况下,同一存储体包括的多个存储单元对应的片选信号可以被同时置为有效,这样这些存储单元可以通过各自的数据总线与数据缓冲器进行数据交互。寄存时钟驱动器106从主控制器110接收到数据访问命令后,进行相应处理分析后并将数据访问命令提供给存储体102或存储单元104。另外,寄存时钟驱动器106还对数据访问命令进行处理以产生操作命令,例如读取命令或写入命令等,并提供到数据缓冲器108。例如,如图1所示,该操作命令可以通过寄存时钟驱动器106与数据缓冲器108之间的数据缓冲器控制总线(BCOM)来传输。
如图1所示,多个数据缓冲器108分别耦接到寄存时钟驱动器106,并且每个数据缓冲器108通过一个存储体数据接口耦接到一个对应的存储体102。此外,每个数据缓冲器108还耦接到主控制器110以与其进行数据交互。该存储体数据接口包括多个数据总线112,使得对应存储体中的存储单元能够在所述寄存时钟驱动器106的控制下通过所述多个数据总线112分别与所述数据缓冲器108进行数据交互。在一些实施例中,每个存储体数据接口中数据总线112的数量与对应的存储体102中存储单元104的数量相同,使得每个存储单元104能够通过各自的数据总线112与数据缓冲器108交互数据。例如,图1中的存储单元(A)和存储单元(B)分别通过各自的数据总线QDQ0和QDQ1耦接到对应的数据缓冲器108。可以理解,在每个存储单元均通过各自的数据总线与数据缓冲器进行数据交互时,寄存时钟驱动器可以向每个存储单元提供有效的片选信号,以使得这些存储单元能够被使能以进行数据交互。在另一些实施例中,一个或多个存储体数据接口的数据总线112的数量也可以小于对应存储体102中存储单元104的数量,使得该存储体数据接口中的一些数据总线与对应存储体中的一个存储单元相耦接并进行数据交互,而该存储体数据接口中的另一些数据总线则与对应存储体中的多个存储单元耦接。例如,一个存储体具有4个存储单元MC0-MC3,而该存储体耦接的存储体数据接口具有2个数据总线DB0和DB1,那么可以存储单元MC0可以与一个数据总线DB0耦接,而其他存储单元MC1-MC3可以通过与另一个数据总线DB1耦接;或者存储单元MC0和MC1可以与数据总线DB0耦接,而存储单元MC2和MC3可以与数据总线DB1耦接。需要说明的是,图1仅作为示例,在其他实施例中,存储器控制器也可以只包括一个数据缓冲器,其对应地耦接到一个存储体。在另一些实施例中,每个存储体数据接口也可以仅包括一个数据总线,其耦接到对应存储体中的每个存储单元。
下面结合图2和图3对图1中的寄存时钟驱动器106和数据缓冲器108进一步说明。
如图2所示,寄存时钟驱动器106包括配置单元1062,寄存时钟驱动器106以及数据缓冲器108基于配置单元1062的状态可以工作在两种不同的模式下,也即工作于第一模式(一些实施例中也称为普通系统内存模式)或第二模式(一些实施例中也称为密集计算模式)下。具体地,寄存时钟驱动器106中可设置寄存时钟驱动功能模块1064和虚拟主机功能模块1066。根据具体实施例的不同,时钟驱动功能模块1064可以具有或不具有数据/信号处理能力。例如,时钟驱动功能模块1064可以仅负责将接收自DCA总线的命令转发给QCA总线。在第一模式下,寄存时钟驱动功能模块1064工作,此时寄存时钟驱动器106主要通过该寄存时钟驱动功能模块1064控制主控制器对存储模块的访问,这大体与现有寄存时钟驱动器(例如DDR4或DDR5标准)的工作模式和标准相兼容;在第二模式下,虚拟主机功能模块1066工作,此时寄存时钟驱动器106可以不依赖主控制器而单独控制对存储模块的访问。在一些实施例中,寄存时钟驱动功能模块1064和虚拟主机功能模块1066可以分别由软件、硬件、固件或其组合来实现。例如,寄存时钟驱动功能模块1064和虚拟主机功能模块1066可以是专用集成电路或现场可编程逻辑阵列芯片。寄存时钟驱动器106还包括数据缓冲器控制器1068,用于将操作命令通过BCOM总线传输到数据缓冲器108。当寄存时钟驱动器106工作在第一模式下,寄存时钟驱动功能模块1064从主控制器110接收数据访问命令提供到存储模块,并根据接收的数据访问命令产生操作命令,并将其通过数据缓冲器控制器1068以及BCOM总线提供到数据缓冲器108,进而经由数据缓冲器108与存储模块交互数据。当寄存时钟驱动器106工作在第二模式下,虚拟主机功能模块1066产生数据访问命令提供到存储模块,并产生操作命令以通过数据缓冲器控制器1068及BCOM总线提供到数据缓冲器108。所述操作命令还指示了寄存时钟驱动器106工作在第一模式或第二模式,使得数据缓冲器108能够进入对应的工作模式来进行相应的操作。
在一些实施例中,配置单元1062可以为寄存器,通过改变寄存器的值或数据可以改变或设置配置单元1062的状态。在一些实施例中,寄存时钟驱动器106通过命令/地址总线从主控制器110接收的数据访问命令还包括状态控制信息,或者单独从主控制器110接收状态控制信息,这样寄存时钟驱动器106可以根据接收的状态控制信息改变配置单元1062的状态。状态控制信息可以通过用于设置寄存时钟驱动器106中各个寄存器(包括配置单元1062在内)的值或状态的控制指令来进行设置。例如,在符合DDR4协议的实施例中,寄存时钟驱动器106从主控制器接收的状态控制信息包含在WRC命令中,因而可以通过WRC命令包含的参数来设置配置单元1062的状态。再例如,在符合DDR5协议的实施例中,主控制器可以通过MRW命令来设置配置单元1062的状态。在另一些实施例中,寄存时钟驱动器106还可以根据自身运行要求而自主地改变或设置配置单元1062的状态。在另一些实施例中,配置单元1062还可以通过SMBus接口耦接到主控制器110,从而主控制器110可以通过SMBus接口改变或读取所述配置单元的状态。
如图3所示,每个数据缓冲器108包括逻辑控制单元1082、多路选择单元1084和计算单元1086。在一些实施例中,多路选择单元1084可以为多路复用器/多路分配器(MUX/DeMUX)电路,计算单元1086可以为神经网络处理器或其他具有计算能力的处理模块。例如,计算单元1086可以被用于加密/解密或编码/解码的计算。在另一些实施例中,计算单元1086也可以进行任意所需的计算或数据处理。逻辑控制单元1082从寄存时钟驱动器106的数据缓冲器控制器1068接收操作命令,当操作命令指示寄存时钟驱动器106工作在第一模式时,逻辑控制单元1082控制多路选择单元1084进行由数据访问命令确定的存储单元与主控制器110之间的数据交互。例如,数据访问命令指示读取如图1中所示存储单元(B),而存储单元(B)通过数据总线QDQ1耦接到数据缓冲器108,则逻辑控制单元1082产生相应控制信号并提供到多路选择单元1084,通过多路选择单元1084将从存储单元(B)读取的数据通过数据总线DDQ传输到主控制器110。写入操作的处理类似,在此不再赘述。
当操作命令指示寄存时钟驱动器106工作在第二模式时,逻辑控制单元1082控制多路选择单元1084进行由数据访问命令确定的存储单元与计算单元1086之间的数据交互。例如,数据访问命令指示对图1中所示存储单元(A)和存储单元(B)进行移位操作,存储单元(A)和存储单元(B)分别通过数据总线QDQ0和QDQ1耦接到数据缓冲器108,则逻辑控制单元1082产生相应控制信号并提供到多路选择单元1084,通过多路选择单元1084控制将从存储单元(A)和存储单元(B)读取的数据传输到计算单元1086,进行移位操作后,再通过数据总线QDQ0和QDQ1回传到存储单元(A)和存储单元(B)。可以看出,由于图1中存储单元(A)和存储单元(B)分别通过数据总线QDQ0和QDQ1耦接到数据缓冲器108,数据可以同时通过两条数据总线QDQ0和QDQ1传输,与现有的两个存储单元共享一个数据总线的方案相比,存储模块与数据缓冲器108之间的带宽成倍增加。类似地,如果一个存储体中包括了四个存储单元,而这四个存储单元通过四条数据总线(例如图3中的数据总线QDQ0、QDQ1、QDQ2和QDQ3)分别连接到数据缓冲器108,则与四个存储单元共享一个数据总线的方案相比,存储模块与数据缓冲器108之间的带宽增加到四倍。在一些实施例中,在同一次操作过程中,数据缓冲器108可以通过数据总线中的一部分(例如QDQ0和QDQ1)向对应的存储体写入数据,并且同时通过数据总线中的另一部分(例如QDQ2和QDQ3)从对应的存储体读出数据。这种操作方式可以有效减少整体的读写时间。
本申请的存储器系统中,寄存时钟驱动器和数据缓冲器可工作在两种模式下。一种工作模式使存储器系统对应于普通系统内存,如果收到主控制器的读写命令,寄存时钟驱动器的寄存时钟驱动功能模块工作,数据缓冲器只需要根据数据访问命令判断读写目的是哪个存储单元,即可将相应完成该存储单元与主控制器之间的数据交互。而在另一种工作模式下(也可称为密集计算工作模式),存储器系统集成了计算功能,可直接用于密集计算,此时,寄存时钟驱动器的虚拟主机功能模块工作,寄存时钟驱动器同时发送计算命令至多个存储体或多个存储单元,这些存储体或存储单元即会根据计算命令将其存储的数据同时传输至对应的数据缓冲器的计算单元进行密集计算,带宽得到成倍增加。另外,这种密集计算工作模式与通过主控制器进行计算相比,将密集计算卸载(off loading)到存储器系统,不需要主控制器与存储模块之间频繁的数据搬运,有利于提升系统的计算能力。
需要说明的是,在图1所示的实施例中,每个存储体102的存储单元分别通过一个数据总线耦接到对应的数据缓冲器。在一些替代的实施例中,也可以每个存储体中的存储单元均共用一个数据总线耦接到对应的数据缓冲器。在此情况下,寄存时钟驱动器可以通过片选信号控制存储体中的哪个存储单元通过该数据总线与数据缓冲器进行数据交互,进而将交互的数据提供给寄存时钟驱动器进行计算处理,和/或将计算结果由寄存时钟驱动器提供给数据缓冲器。
图4示出了根据本申请一个实施例的密集计算方法400的流程图。该方法应用于主控制器与存储器系统(例如上述实施例中的存储器系统100),由包括该主控制器和存储器系统的计算机系统实施。在密集计算开始之前,主控制器和存储器系统可以工作在普通系统内存模式。
在主控制器确定将要进行密集计算时,主控制器向存储器系统发送计算模式(S402)的指示。该计算模式指示存储器系统将要进行的计算类型,例如,乘法、卷积、或者其他在人工智能、加解密、视频编解码等计算密集型应用中所使用的算法。可以理解,计算模式的具体内容可以根据实际应用的需求进行调整和设计。
接着,主控制器向存储器系统发送待计算的输入数据(S404),例如图4所示的输入数据0至输入数据n。在一些实施例中,主控制器可以通过存储器系统的数据缓冲器将这些输入数据写入存储模块,具体的写入控制可以由寄存时钟驱动器响应于主控制器的命令来进行控制。在一些实施例中主控制器发送的数据被加扰并受ECC保护,存储器系统需要通过内部逻辑模块来进行数据解扰和ECC解码。
接着,主控制器向存储器系统发送开始计算的指令(S406)。例如,在符合DDR4协议的实施例中,主控制器可以通过WRC命令向存储器系统发送开始计算的命令。再例如,在符合DDR5协议的实施例中,主控制器可以通过MRW命令向存储器系统发送开始计算的命令。在一些实施例中,主控制器通过经由命令/地址总线提供的数据访问命令或者SMBus接口改变寄存时钟驱动器中配置单元的状态,通知寄存时钟驱动器切换至密集计算模式,寄存时钟驱动器再将这一通知通过BCOM总线发送给数据缓冲器;接着,数据缓冲器也将其工作模式切换至密集计算模式。在寄存时钟驱动器切换至密集计算模式后,寄存时钟驱动器内部的虚拟主机功能模块启动密集计算功能,产生数据访问命令提供到存储模块,并产生操作命令经由数据缓冲器控制器提供到数据缓冲器,该操作命令指示了要进行的计算类型,以及存储模块的哪些存储地址需要被访问以配合读出和写入数据。
接着,数据缓冲器根据数据访问命令从存储模块中获取数据,并在逻辑控制单元的控制下将其提供到计算单元;计算单元再根据操作命令对这些数据进行相应的计算;待计算完成后,数据缓冲器将计算结果写回存储模块;接着存储器系统向主控制器发送计算完成中断(S408),该计算完成中断通知主控制器密集计算已经完成。在一些实施例中,存储器系统可以使用alert_n信号线向主控制器发送计算完成中断。alert_n为寄存时钟驱动器和主控制器之间的信号线,可以用于当存储模组中出现命令/数据校验错误时通知主控制器,通过alert_n信号线的复用,能够实现向主控制器发送计算完成中断的功能。可以理解,在不同的实施例中,存储器系统也可以使用耦接在主控制器与寄存时钟驱动器之间的其他信号线来反馈计算完成的信息。
根据实施例的不同,存储模块中读出数据的存储地址可以与存储模块中写入数据的存储地址相同或不同。
最后,主控制器在接收到计算完成中断后从存储模块中读取计算结果(S410)。
在上述方法400中,密集计算完成后,存储器系统向主控制器发送计算完成中断以通知主控制器计算完成。但在另一些实施例中,存储器系统也可以采用被动通知方式,例如,存储器控制器中的寄存时钟驱动器待密集计算完成后,切换至正常的普通系统内存模式并通过BCOM通知数据缓冲器也切换回普通系统内存模式,同时寄存时钟驱动器还改变其配置单元的状态以指示密集计算完成;主控制器可以通过SMBus接口读取寄存时钟驱动器中配置单元的状态,发现密集计算完成,再从存储模块中读取计算结果。在又一些实施例中,在密集计算完成后,存储器系统还可以将指示密集计算完成的状态信息存储入数据缓冲器或者存储模块中,由主控制器来读取该状态信息。
需要说明的是,在密集计算过程中,主控制器无法访问参与密集计算的存储体,这可以避免密集计算过程被主控制器不必要的破坏。可选地,主控制器可以提供额外的命令来指示密集计算的中止,考虑到可能出现的系统需求。在此情况下,寄存时钟驱动器或数据缓冲器可以在中止计算后发送一计算未完成的反馈信息。在一些实施例中,在具有多存储体的存储器系统中,虽然不能够访问正在参与密集计算的存储体,但主控制器仍可以访问其他工作在普通系统内存模式的存储体。例如,数据缓冲器可以提供RTT功能,这使得主控制器能够访问同一通道中的工作在普通系统内存模式下的其他存储体。
还需要说明的是,当前技术中的计算机系统为了提高整体的内存性能,在进行内存地址编址时会将不同的内存模组(如DIMM条)地址进行交错编排(interleave),形成交错地址映射表。这样主控制器在进行数据写入和读写操作时,数据会分散到不同的内存模组。也就是说,各个内存模组的数据都是不完整的。而在执行图4所示的密集计算方法400时,每一个执行密集计算的模组需要得到完整的数据,因此参与密集计算的模组不能被编入交错地址映射表。为此,在本发明的一些实施例中,通过修改BIOS来解除对这些内存模组的地址交错编排。例如,在内存地址解码器将系统地址解析到内存地址的过程中,通常会涉及:1、对系统地址到通道地址的解码(System→Channel);2、通道地址到存储器阵列地址的解码(Channel→Rank);3、阵列地址到内存地址的解码(Rank→Dram)三个步骤。在一些实施例中,可以通过修改BIOS来实现对上述解析过程中前两个步骤的修改,从而解除对参与密集计算的内存模组的地址交错编排。
图5示出了根据本申请另一个实施例的密集计算方法500的流程图。与图4所示方法400批量处理n+1个数据不同,方法500中,对n+1个数据依次进行处理。具体地,主控制器向存储器系统发送计算模式的指示,再向存储器系统发送数据0,并紧接着发送开始计算命令指示存储器系统对数据0进行计算。类似地,发送数据1,发送对数据1的开始计算命令……发送数据n,发送对数据n的开始计算命令。另外,在方法500中,并不是等待在对n+1个数据处理完成后再读出结果,而是对任一数据计算结束后,存储器系统都可以向主控制器发送计算完成中断,通知主控制器读取计算结果。如图5所示,在主控制器向存储器系统发送输入数据m之前,存储器系统向主控制器发送对应数据0的计算完成中断,主控制器从存储器系统中读取数据0的计算结果。相比于图4所示的计算流程,由于计算数据的提供较为碎片化,因此图5所示的计算流程响应速度较快。
图6示出了根据本申请另一个实施例的密集计算方法600的流程图。与图4所示方法400中只包括一个存储体相比不同,方法600中,包括了多个用于密集计算的存储体。主控制器可以向多个存储体发送输入数据和计算指令,并读取计算结果,从而整个密集计算系统的运算能力可以得到成倍提升。需要说明的是,方法600采用了与方法400类似的批量处理模式,即向存储体0同时发送数据0,m,m*2,...;向存储体1同时发送数据1,m+1,m*2+1,...;……;向存储体m-1同时发送数据m-1,m*2-1,m*3-1,...。也就是说,待计算的数据被大体平均地分配给m个存储体,并且进行大体并行地计算。但在另一些实施例中,存储体1至m-1中的一个或多个也可以采用如图5所示方法500类似的逐次处理模式,对多个数据逐次进行处理。
以上结合图1-图3描述了本申请的存储器系统及存储器控制器,并结合图4-6描述了使用这些存储器系统即存储器控制器进行密集计算的方法。但需要指出的是,本申请的存储器系统及存储器控制器还具有其他的实现方式。
图7示出了根据本申请另一个实施例的存储器系统700的示意图。与图1的存储器系统100相比,图1的存储器系统100中,计算单元集成在数据缓冲器中而寄存器时钟驱动器负责调度控制;而图7的存储器系统700中,寄存时钟驱动器706和每个数据缓冲器708之间增加了高速接口710(XDQ),寄存时钟驱动器706也包括计算单元7062(同时参考图8)。计算单元7062通过高速接口XDQ耦接到每个数据缓冲器708的多路选择单元,当寄存时钟驱动器工作在第二模式(密集计算模式)时,数据缓冲器708中的逻辑控制单元还控制多路选择单元进行存储单元与寄存时钟驱动器706中的计算单元7062之间的数据交互。这样,除每个数据缓冲器708中的计算单元之外,寄存时钟驱动器706中的计算单元7062也可以承担一部分计算任务。例如,寄存时钟驱动器706中的计算单元7062可以承担与存储器系统700的全局任务相关的计算。
图9示出了根据本申请又一个实施例的存储器系统900的示意图。与图1的存储器系统100相比,存储器系统900的数据缓冲器908中包括逻辑控制单元和多路选择单元而没有计算单元,计算单元设置在寄存时钟驱动器906中,并且计算单元与每个数据缓冲器908中的多路选择单元耦接。当操作命令指示寄存时钟驱动器906工作在密集计算模式时,数据缓冲器908中的逻辑控制单元控制多路选择单元进行存储单元与寄存时钟驱动器906中的计算单元之间的数据交互。也就是说,计算任务全部由寄存时钟驱动器906中的计算单元承担,所有数据需要经由耦接在数据缓冲器与寄存时钟驱动器之间的数据总线910(XDQ)在寄存时钟驱动器与存储单元之间交互。需要说明的是,在图9的存储器系统900中,作为示例,每个数据缓冲器908通过一个数据总线912与多个存储单元耦接,但在另一些示例中,与图1的存储器系统100类似,每个数据缓冲器908也可以以一对一或一对多的方式通过多个数据总线912与多个存储单元耦接。
图10示出了根据本申请又一个实施例的存储器系统1000的示意图。与图9的存储器系统900类似,计算单元设置在寄存时钟驱动器1006中,但存储器系统1000不再包括数据缓冲器,而是包括切换模块1008,其耦接在寄存时钟驱动器1006及主控制器与存储模块之间,用于从主控制器(图中未示出)或寄存时钟驱动器1006接收切换控制信号,并且响应于切换控制信号切换寄存时钟驱动器1006及主控制器中的一个与存储模块进行数据交互。每个切换模块通过分别的数据总线与存储体以及寄存时钟驱动器耦接。在一些实施例中,切换模块可以是例如多路复用器。
当寄存时钟驱动器1006工作在密集计算模式时,寄存时钟驱动器1006中的计算单元对接收自存储模块的数据进行计算,并且将计算结果通过切换模块返回到存储模块。需要说明的是,在图10的存储器系统1000中,作为示例每个切换模块1008通过一个数据总线1012(QDQ)与多个存储单元耦接,但在另一些示例中,与图1的存储器系统100类似,每个切换模块1008也可以以一对一或一对多的方式通过多个数据总线1012与多个存储单元耦接。
采用图7、9和10中的存储器系统进行密集计算的方法可以参考图4-6,其不同之处仅在于不同存储器系统内计算单元和数据总线设置的不同,因此此处不再详细描述。
可以理解,本申请的实施例的存储器系统可以被应用于存储器,并且这种存储器系统也可以被用于不同的计算机系统中。
应当注意,尽管在上文详细描述中提及了用于存储器控制器的若干模块或子模块以及密集计算方法的若干步骤,但是这种划分仅仅是示例性的而非强制性的。实际上,根据本申请的实施例,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
本技术领域的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在本申请的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。

Claims (10)

1.一种存储器控制器,其耦接到存储模块以控制对所述存储模块的访问,所述存储模块包括一个或多个存储体,每个存储体包括多个存储单元,所述存储器控制器包括:
寄存时钟驱动器,其耦接到所述存储模块,用于向所述存储模块提供数据访问命令以控制对所述存储模块的访问;
一个或多个数据缓冲器,其耦接到所述寄存时钟驱动器,并且每个数据缓冲器通过一个存储体数据接口耦接到一个存储体;其中,至少一个所述存储体数据接口包括多个数据总线,并且每个数据总线分别与所述存储体数据接口所耦接的存储体中的一个或多个存储单元耦接,使得所述存储体能够在所述寄存时钟驱动器的控制下通过所述多个数据总线分别与所述数据缓冲器进行数据交互。
2.根据权利要求1所述的存储器控制器,其特征在于,所述寄存时钟驱动器包括配置单元,所述寄存时钟驱动器和所述数据缓冲器基于所述配置单元的状态工作在第一模式或第二模式,其中,
在所述第一模式下,所述寄存时钟驱动器从主控制器接收所述数据访问命令,并且响应于所述数据访问命令实现所述主控制器经由所述数据缓冲器对所述存储模块的访问;
在所述第二模式下,所述寄存时钟驱动器产生所述数据访问命令,以指示所述数据缓冲器根据所述数据访问命令对所述存储模块访问。
3.根据权利要求2所述的存储器控制器,其特征在于,所述寄存时钟驱动器通过命令/地址总线从所述主控制器接收状态控制信息,所述寄存时钟驱动器根据所述状态控制信息设置所述配置单元的状态。
4.根据权利要求2所述的存储器控制器,其特征在于,所述寄存时钟驱动器通过SMBus接口耦接到所述主控制器,并且所述主控制器通过SMBus接口改变或读取所述寄存时钟驱动器中配置单元的状态。
5.根据权利要求1所述的存储器控制器,其特征在于,所述数据缓冲器与所述寄存时钟驱动器耦接并从所述寄存时钟驱动器接收操作命令,所述操作命令指示所述数据缓冲器工作在第一模式或第二模式。
6.根据权利要求5所述的存储器控制器,其特征在于,所述数据缓冲器包括逻辑控制单元、多路选择单元和第一计算单元,
所述逻辑控制单元从所述寄存时钟驱动器接收所述操作命令,
当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第一模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述主控制器之间的数据交互;
当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第二模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述第一计算单元之间的数据交互。
7.根据权利要求6所述的存储器控制器,其特征在于,所述寄存时钟驱动器包括第二计算单元,所述第二计算单元与每个所述数据缓冲器中的多路选择单元耦接,
当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第二模式时,所述逻辑控制单元还控制所述多路选择单元进行所述一个或多个存储单元与所述第二计算单元之间的数据交互。
8.根据权利要求5所述的存储器控制器,其特征在于,所述数据缓冲器包括逻辑控制单元和多路选择单元,所述寄存时钟驱动器包括计算单元,所述计算单元与每个所述数据缓冲器中的多路选择单元耦接,
所述逻辑控制单元从所述寄存时钟驱动器接收所述操作命令,
当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第一模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述主控制器之间的数据交互;
当所述操作命令指示所述寄存时钟驱动器和所述数据缓冲器工作在第二模式时,所述逻辑控制单元控制所述多路选择单元进行所述一个或多个存储单元与所述计算单元之间的数据交互。
9.一种存储器系统,包括根据权利要求1-8中任一项所述的存储器控制器和存储模块。
10.一种计算机系统,包括根据权利要求9所述的存储器系统。
CN201910181860.2A 2019-03-11 2019-03-11 存储器控制器 Pending CN111679783A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910181860.2A CN111679783A (zh) 2019-03-11 2019-03-11 存储器控制器
US16/721,932 US10929318B2 (en) 2019-03-11 2019-12-20 Memory controller enabling dual-mode access to memory module

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910181860.2A CN111679783A (zh) 2019-03-11 2019-03-11 存储器控制器

Publications (1)

Publication Number Publication Date
CN111679783A true CN111679783A (zh) 2020-09-18

Family

ID=72423676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910181860.2A Pending CN111679783A (zh) 2019-03-11 2019-03-11 存储器控制器

Country Status (2)

Country Link
US (1) US10929318B2 (zh)
CN (1) CN111679783A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111694772A (zh) * 2019-03-11 2020-09-22 澜起科技股份有限公司 存储器控制器
US11487339B2 (en) * 2019-08-29 2022-11-01 Micron Technology, Inc. Operating mode register
US11797229B2 (en) * 2020-07-02 2023-10-24 Micron Technology, Inc. Multiple register clock driver loaded memory subsystem
CN115718562A (zh) * 2021-08-24 2023-02-28 澜起科技股份有限公司 存储器控制器以及用于控制对存储模块的访问的方法
US20230177173A1 (en) * 2021-12-05 2023-06-08 PUFsecurity Corporation Electronic device and method for performing permission management of storage device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216751A (zh) * 2008-01-21 2008-07-09 戴葵 基于分布存储结构的具有数据处理能力的动态随机存储器装置
US20150199266A1 (en) * 2014-01-16 2015-07-16 Carnegie Mellon University 3dic memory chips including computational logic-in-memory for performing accelerated data processing
US20150294698A1 (en) * 2014-03-21 2015-10-15 Diablo Technologies Inc. System and Method for Offsetting The Data Buffer Latency of a Device Implementing a JEDEC Standard DDR-4 LRDIMM Chipset
CN107644173A (zh) * 2016-07-20 2018-01-30 澜起科技(上海)有限公司 用于控制应用程序访问存储器的方法和装置
CN107958679A (zh) * 2016-10-14 2018-04-24 三星电子株式会社 存储器模块和用于存储器模块的处理数据缓冲器
CN108492839A (zh) * 2016-02-03 2018-09-04 爱思开海力士有限公司 存储系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017023508A1 (en) * 2015-08-06 2017-02-09 Rambus Inc. High performance, high capacity memory modules and systems
US10401899B2 (en) * 2016-05-25 2019-09-03 Integrated Device Technology, Inc. Register clock driver for DDR5 memory
KR102701812B1 (ko) * 2016-07-27 2024-09-03 에스케이하이닉스 주식회사 휘발성 메모리를 캐쉬로 사용하는 비휘발성 메모리 시스템
US10628343B2 (en) * 2017-02-03 2020-04-21 Futurewei Technologies, Inc. Systems and methods for utilizing DDR4-DRAM chips in hybrid DDR5-DIMMs and for cascading DDR5-DIMMs
US10565144B2 (en) * 2017-10-27 2020-02-18 Integrated Device Technology, Inc. Double data rate controllers and data buffers with support for multiple data widths of DRAM
US10769082B2 (en) * 2018-05-01 2020-09-08 Integrated Device Technology, Inc. DDR5 PMIC interface protocol and operation

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216751A (zh) * 2008-01-21 2008-07-09 戴葵 基于分布存储结构的具有数据处理能力的动态随机存储器装置
US20150199266A1 (en) * 2014-01-16 2015-07-16 Carnegie Mellon University 3dic memory chips including computational logic-in-memory for performing accelerated data processing
US20150294698A1 (en) * 2014-03-21 2015-10-15 Diablo Technologies Inc. System and Method for Offsetting The Data Buffer Latency of a Device Implementing a JEDEC Standard DDR-4 LRDIMM Chipset
CN108492839A (zh) * 2016-02-03 2018-09-04 爱思开海力士有限公司 存储系统
CN107644173A (zh) * 2016-07-20 2018-01-30 澜起科技(上海)有限公司 用于控制应用程序访问存储器的方法和装置
CN107958679A (zh) * 2016-10-14 2018-04-24 三星电子株式会社 存储器模块和用于存储器模块的处理数据缓冲器

Also Published As

Publication number Publication date
US10929318B2 (en) 2021-02-23
US20200293467A1 (en) 2020-09-17

Similar Documents

Publication Publication Date Title
US10725956B2 (en) Memory device for a hierarchical memory architecture
US9818707B2 (en) Stacked memory chip having reduced input-output load, memory module and memory system including the same
CN111679783A (zh) 存储器控制器
CN108780423B (zh) 多级存储器管理电路、管理方法和管理设备
EP3033749B1 (en) Apparatuses and methods for configuring i/o of memory for hybrid memory modules
US7411859B2 (en) Multi-port memory device for buffering between hosts
US10599206B2 (en) Techniques to change a mode of operation for a memory device
US20160203091A1 (en) Memory controller and memory system including the same
JP5599969B2 (ja) マルチポートメモリ、および該マルチポートメモリを備えるコンピュータシステム
KR20200108768A (ko) 연산 처리를 수행하는 메모리 장치 및 메모리 장치의 동작방법
US10032494B2 (en) Data processing systems and a plurality of memory modules
US20210349839A1 (en) Multi-ported nonvolatile memory device with bank allocation and related systems and methods
US9607667B1 (en) Memory device and electronic apparatus including the same
US10372346B2 (en) Extensible storage system controller
US20220365697A1 (en) Independent parallel plane access in a multi-plane memory device
WO2015127327A1 (en) Distributed procedure execution and file systems on a memory interface
US20240161794A1 (en) Internal and external data transfer for stacked memory dies
WO2022011312A1 (en) Checking status of multiple memory dies in a memory sub-system
CN111694772A (zh) 存储器控制器
EP4375840A1 (en) Memory controller, electronic system including the same and method of controlling memory access
US9176906B2 (en) Memory controller and memory system including the same
US20190096459A1 (en) Memory devices for performing multiple write operations and operating methods thereof
US12046322B2 (en) Configurable data protection circuitry for memory devices
US20230297520A1 (en) Compute express link memory and storage module
US20240118970A1 (en) Techniques for memory scrubbing associated with reliability availability and serviceability features

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