CN106155926A - 存储器及存储器的数据交互方法 - Google Patents

存储器及存储器的数据交互方法 Download PDF

Info

Publication number
CN106155926A
CN106155926A CN201510167194.9A CN201510167194A CN106155926A CN 106155926 A CN106155926 A CN 106155926A CN 201510167194 A CN201510167194 A CN 201510167194A CN 106155926 A CN106155926 A CN 106155926A
Authority
CN
China
Prior art keywords
data
memorizer
module
volatile
volatile memory
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
CN201510167194.9A
Other languages
English (en)
Other versions
CN106155926B (zh
Inventor
刘杰
马青江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Montage Technology Shanghai Co Ltd
Acrospeed Inc
Original Assignee
Acrospeed 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
Application filed by Acrospeed Inc filed Critical Acrospeed Inc
Priority to CN201510167194.9A priority Critical patent/CN106155926B/zh
Priority to US14/956,395 priority patent/US20160299719A1/en
Publication of CN106155926A publication Critical patent/CN106155926A/zh
Application granted granted Critical
Publication of CN106155926B publication Critical patent/CN106155926B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

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

Abstract

本申请公开了一种存储器。该存储器包括易失性存储模块和非易失性存储模块。存储器通过存储器接口从外部模块接收数据访问命令,并相应地与外部模块交互数据。访问控制模块耦接到存储器接口以接收数据访问命令;非易失性存储模块控制器耦接到非易失性存储模块,接收数据访问命令并且相应地与非易失性存储模块交互数据。数据缓冲模块耦接到易失性存储模块、非易失性存储模块控制器及存储器接口,并且耦接到访问控制模块以接收数据访问命令。数据缓冲模块向非易失性存储模块控制器提供数据访问命令以与非易失性存储模块控制器交互数据。数据缓冲模块包括缓存器,其被用于缓存至少一部分经由数据缓冲模块交互的数据。

Description

存储器及存储器的数据交互方法
技术领域
本申请涉及存储器技术领域,更具体地,涉及一种存储器以及存储器中的数据交互方法。
背景技术
存储器一般可分为易失性存储器(volatile memory)和非易失性存储器(non-volatilememory)。易失性存储器在工作时需要持续为其供电,否则将会导致存储在其中的数据丢失。相反,非易失性存储器不会由于断电而丢失数据,在断电情况下其仍能够保存已存储的数据。此外,非易失性存储器还具有高存储密度、低功耗等优点,但是其数据读写速度通常低于易失性存储器。
在计算机系统和智能设备中,作为中央处理器和硬盘等大容量存储器交互数据的桥梁,内部存储器主要用于暂时存放中央处理器的运算数据以及与硬盘交互的数据。因此,内部存储器通常采用数据读写速度快的易失性存储器。为了利用非易失性存储器断电时仍能存储数据的优点,一些内部存储器产品在其存储模组中同时集成了易失性存储器和非易失性存储器,当系统突然断电时,数据可以从易失性存储器中立即转移到非易失性存储器中。但是,这些内部存储器产品中的非易失性存储器无法直接访问,因而不能有效地利用非易失性存储器的存储能力。
因此,有必要改进现有的存储器,以能够直接地访问其中的非易失性存储器。
发明内容
本申请的一个目的在于改进现有的存储器,以便于能够直接访问其中的非易失性存储器。
在本申请的一个方面,提供了一种存储器。该存储器包括:易失性存储模块;非易失性存储模块;存储器接口,所述存储器通过所述存储器接口从外部模块接收数据访问命令,并且根据所述数据访问命令与所述外部模块交互数据;访问控制模块,其耦接到所述存储器接口以接收数据访问命令;非易失性存储模块控制器,其耦接到所述非易失性存储模块,被配置为接收数据访问命令并且根据所述数据访问命令与所述非易失性存储模块交互数据;数据缓冲模块,其耦接到所述易失性存储模块、所述非易失性存储模块控制器以及所述存储器接口,并且耦接到所述访问控制模块以接收所述数据访问命令,所述数据缓冲模块被配置为向所述非易失性存储模块控制器提供所述数据访问命令以根据所述数据访问命令与所述非易失性存储模块控制器交互数据;其中,所述数据缓冲模块包括缓存器,其被配置为缓存至少一部分经由所述数据缓冲模块交互的数据。
其中,易失性存储模块包括例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或其他类型的易失性存储器;非易失性存储模块包括例如快闪存储器、电可擦除只读存储器、相变存储器或其他类型的非易失性存储器。在一些实施例中,易失性存储模块和非易失性存储模块被集成在同一存储器电路板上。此外,同一存储器电路板上可以包括一颗或多颗易失性存储模块的芯片,或者一颗或多颗非易失性存储模块的芯片。
在一些实施例中,所述至少一部分经由所述数据缓冲模块交互的数据包括在所述存储器接口与所述非易失性存储模块控制器之间交互的数据。
在一些实施例中,所述至少一部分经由所述数据缓冲模块交互的数据还包括在所述易失性存储模块与所述非易失性存储模块控制器之间交互的数据。
在一些实施例中,所述数据缓冲模块被配置为在与所述非易失性存储模块控制器交互数据之前,获取或设置所述非易失性存储模块控制器的状态数据。
在一些实施例中,所述存储器还包括耦接在所述非易失性存储模块控制器与所述数据缓冲模块之间的数据交互通道,其中,所述数据交互通道被配置为接收采样控制信号,并且根据所述采样控制信号在所述非易失性存储模块控制器与所述数据缓冲模块之间传输数据访问命令和数据。
在一些实施例中,所述存储器还包括:访问控制总线,其耦接在所述访问控制模块与所述数据缓冲模块之间,用于将所述数据访问命令由所述访问控制模块提供给所述数据缓冲模块。
在一些实施例中,所述存储器还包括:掉电保存信号通道,其耦接在所述存储器接口与所述非易失性存储模块控制器之间,被配置为从所述存储器接口接收掉电保存信号,并且将其提供给所述非易失性存储模块控制器;所述非易失性存储模块控制器被进一步配置为响应于所述掉电保存信号经由所述数据缓冲模块将存储在所述易失性存储模块中的数据转移到所述非易失性存储模块中。
在一些实施例中,所述缓存器还用于存储所述非易失性存储模块对所述非易失性存储模块进行数据交互操作所需的操作信息和/或命令。
在一些实施例中,所述易失性存储模块包括多个易失性存储单元组,所述数据缓冲模块包括多个数据缓冲单元组,所述缓存器包括多个缓存单元组,其中每个易失性存储单元对应于一个数据缓冲单元组与一个缓存单元组。
在一些实施例中,所述存储器接口为双倍数据率接口。
在本申请的另一方面,还提供了一种计算机系统和移动设备,包括根据前述方面实施例所述的存储器。在一些实施例中,所述非易失性存储模块被配置为用于大容量数据存储。
在本申请的又一方面,还提供了一种存储器,包括:易失性存储模块;非易失性存储模块;存储器接口,所述存储器通过所述存储器接口从外部模块接收数据访问命令,并且根据所述数据访问命令与所述外部模块交互数据;访问控制模块,其耦接到所述存储器接口以接收数据访问命令;非易失性存储模块控制器,其耦接到所述非易失性存储模块,被配置为接收数据访问命令并且根据所述数据访问命令与所述非易失性存储模块交互数据;具有缓存器的数据缓冲模块,其耦接到所述易失性存储模块、所述非易失性存储模块控制器以及所述存储器接口,并且耦接到所述访问控制模块以接收所述数据访问命令;所述缓存器被配置为当数据在所述非易失性存储模块控制器与所述易失性存储模块之间或在所述非易失性存储模块控制器与所述存储器接口之间交互时缓存待交互的数据,并且当数据在所述易失性存储模块与所述存储器接口之间交互时不缓存待交互的数据。
以上为本申请的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本申请范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。
附图说明
通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本申请内容的上述和其他特征。可以理解,这些附图仅描绘了本申请内容的若干实施方式,因此不应认为是对本申请内容范围的限定。通过采用附图,本申请内容将会得到更加明确和详细地说明。
图1示出了根据本申请一个实施例的存储器100;
图2示出了根据本申请一个实施例的存储器200;
图3A至3F示出了图2的存储器利用数据缓冲模块对非易失性存储模块控制器进行状态设置或与其交互数据的流程图;
图4A至4B示出了中央处理器控制图2的存储器中的易失性存储器和非易失性存储器交互数据的流程;
图5A至5G示出了图2的存储器利用数据缓冲模块对非易失性存储模块控制器进行状态设置或与其交互数据的流程图;
图6示出了数据交互通道传输数据的波形图。
具体实施方式
在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本申请的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本申请中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本申请内容的一部分。
图1示出了根据本申请一个实施例的存储器100。该存储器100可以被用于例如计算机系统、移动设备、服务器、智能设备或其他电子设备,并作为其内部存储器使用。该存储器100可以被连接到中央处理器107,以用于存储中央处理器的运算数据以及与硬盘等大容量存储设备交互的数据。在一些实施例中,采用该存储器100的电子设备可以不使用硬盘等大容量存储设备,而是由该存储器100来给大容量数据存储提供存储空间。
如图1所示,该存储器100包括易失性存储模块101和非易失性存储模块103。其中,易失性存储模块101可以是随机存取存储器,非易失性存储模块103可以是快闪存储器。需要说明的是,在此所述的易失性存储模块101和非易失性存储模块103可以包括一个存储芯片,或者也可以包括两个或更多个存储芯片。
存储器100通过存储器接口105与作为外部模块的中央处理器107相互耦接,以在其间交互数据。例如,外部模块107可以是中央处理器或者存储器100外部的需要读写数据的其他模块。外部模块107可以向存储器接口105发送数据访问命令。相应地,存储器接口105接收该数据访问命令,并且根据该数据访问命令与外部模块107交互数据。例如,数据访问命令可以包括:1)将外部数据经由存储器接口105写入到易失性存储模块101中的命令;2)将外部数据经由存储器接口105写入到非易失性存储模块103中的命令;3)将易失性存储模块101中存储的数据转移到非易失性存储模块103中的命令;4)将非易失性存储模块103中存储的数据转移到易失性存储模块101中的命令;5)读取易失性存储模块101中存储的数据、并经由存储器接口105提供给外部模块107的命令;6)读取非易失性存储模块103中存储的数据、并经由存储器接口105提供给外部模块107的命令;等等。为了便于说明,在下文中,上述数据访问命令中与非易失性存储模块103相关的数据访问命令,包括2)、3)、4)和6),被称为特有数据访问命令,而上述数据访问命令中与非易失性存储模块103无关的数据访问命令,包括1)和5),被称为正常数据访问命令。此外,数据访问命令还包括与待交互数据相关联的目标地址,该目标地址可以是数据在易失性存储模块101或非易失性存储模块103中的存储地址。
需要说明的是,在实际应用中,上述数据访问命令可以被分解为多个子命令,或者也可以被相互组合。例如,在一些电子或计算机系统中,中央处理器可能具有多个存储器接口,其分别连接一个存储器,并且这些被连接的存储器分别可以包括易失性存储模块和/或非易失性存储模块。相应地,数据访问命令可以包括将数据从一个存储器接口连接的存储器转移到另一个存储器接口连接的另一个存储器。具体地,可以将数据从一个存储器的易失性存储模块转移到另一个存储器的易失性存储模块或非易失性存储模块,或者可以将数据从一个存储器的非易失性存储模块转移到另一个存储器的易失性存储模块或非易失性存储模块。在实际应用中,可以先将数据转移到提供数据的存储器对应的存储器接口,进而经由中央处理器等外部模块将数据再转移到接收数据的存储器对应的存储器接口。
在一些实施例中,存储器接口105可以是符合双倍数据速率(DDR)标准的存储器接口,包括JEDEC DDR1、DDR2、DDR3、DDR4以及其他双倍数据速率存储器接口标准。此外,存储器接口105也可以是符合其他标准或协议的存储器接口,例如SDRAM或RAMBUS存储器接口。
存储器100还包括访问控制模块109,其耦接到存储器接口105,以接收数据访问命令。根据其所接收的数据访问命令的不同,访问控制模块109控制存储器100进行不同的数据读取和写入操作。这将在下文中详述。
存储器100具有非易失性存储模块控制器111,以用于控制对非易失性存储模块103的读写操作。具体地,非易失性存储模块控制器111接收数据访问命令,并且根据数据访问命令与其所耦接的非易失性存储模块103相互交互数据,例如将数据写入到非易失性存储模块103中,或者从非易失性存储模块103中读取数据。换言之,对非易失性存储模块103的数据访问是由该非易失性存储模块控制器111具体执行的。
存储器100还包括数据缓冲模块113。在易失性存储模块101、非易失性存储模块控制器111以及存储器接口105之间交互的数据需要经由数据缓冲模块113来进行。具体地,数据缓冲模块113耦接到访问控制模块109,以从访问控制模块109接收数据访问命令。此外,该数据缓冲模块113还耦接到易失性存储模块101、非易失性存储模块控制器111以及存储器接口105。这样,在数据访问命令的控制下,数据能够在易失性存储模块101、非易失性存储模块控制器111和存储器接口105这三者之间相互转移。在一些实施例中,数据缓冲模块113与访问控制模块109通过访问控制总线117相互耦接。通过该访问控制总线117,数据访问命令可以由访问控制模块109提供给数据缓冲模块113。
数据缓冲模块113中设置有缓存器115。该缓存器115用于缓存至少一部分经由数据缓冲模块113交互的数据,例如在存储器接口105与非易失性存储模块控制器111之间交互的数据,和/或易失性存储模块101与非易失性存储模块控制器111之间交互的数据。例如,当存储器100响应于数据访问命令2)将外部数据经由存储器接口105写入到非易失性存储模块103中时,待写入的外部数据首先经由存储器接口105转移到数据缓冲模块113中,并且缓存在缓存器115中。之后,数据缓冲模块113与非易失性存储模块控制器111相互通信,以将缓存在缓存器115中的待写入数据发送给非易失性存储模块控制器111,进而由非易失性存储模块控制器111将数据写入到非易失性存储模块103中。对于其他的特定数据访问命令,包括前述的数据访问命令3)、4)和6),存储器100执行这些命令以数据交互的过程中,同样将数据暂时地缓存到缓存器115中。在一些实施例中,缓存器115也可以缓存在数据缓冲模块113与易失性存储模块101之间交互的数据。在另一些实施例中,当执行正常数据访问命令对应的操作时,缓存器115不缓存相应的被交互数据。换言之,当数据被从易失性存储模块101读取出并转移到存储器接口105处时,以及当数据被从存储器接口105写入到易失性存储模块101中时,缓存器115不缓存相应的被交互数据。在这种情况下,数据缓冲模块113主要用于数据信号的延时调整。可以理解,在一些实施例中,缓存器115也可以被用于缓存在存储器接口105与易失性存储模块101之间交互的数据。
非易失性存储模块103的数据存储及读写机制不同于易失性存储模块101。非易失性存储模块控制器111通常设置有状态数据,其存储在状态寄存器中。状态数据例如是非易失性存储模块103的坏块表、存储容量或存储状态等信息。在一些实施例中,数据缓冲模块113在与非易失性存储模块控制器111交互数据之前,还会先获取或设置非易失性存储模块控制器111的状态数据,以便之后能够顺利地完成对非易失性存储模块103的读写操作。具体地,在数据缓冲模块113通过非易失性存储模块控制器111读取非易失性存储模块103中的数据之前,数据缓冲模块113先向非易失性存储模块控制器111发送状态获取命令,以获得相应的状态数据,并且将该状态数据缓存到缓存器115中。之后,数据缓冲模块113进一步地将所缓存的状态数据通过存储器接口105提供给外部模块107。外部模块107根据该状态数据可以确定非易失性存储模块103的状态,以便根据该状态进一步地进行数据读取操作。类似地,在数据缓冲模块113通过非易失性存储模块控制器111向非易失性存储模块103写入数据之前,数据缓冲模块113先通过存储器接口105从外部模块107接收状态设置数据,并且将其缓存在缓存器115中。之后,数据缓冲模块113向非易失性存储模块控制器111发送状态设置命令,并且将所缓存的状态设置数据提供给非易失性存储模块控制器111。这样,非易失性存储模块控制器111可以根据该状态设置数据完成状态设置,以便进一步地进行数据写入操作。
在一些实施例中,非易失性存储模块控制器111对易失性存储模块103进行数据交互操作所需的状态数据和/或设置命令可以被缓存在缓存器115中。例如,访问控制模块109可以将这些状态数据通过访问控制总线117发送给数据缓冲模块113,进而缓存在其中的缓存器115中。这样,当数据缓冲模块113可以根据所缓存的状态数据和/或设置命令直接设置非易失性存储模块控制器111的状态,或者直接获得非易失性存储模块控制器111的状态数据。
在一些实施例中,存储器100还可以包括掉电保存信号通道119,其耦接在存储器接口105与非易失性存储模块控制器111之间。当安装有该存储器100的电子设备突发断电时,外部模块107可以会向存储器接口105发送掉电保存信号。该掉电保存信号通过掉电保存信号通道119提供给非易失性存储模块控制器111。相应地,响应于该掉电保存信号,非易失性存储模块控制器111将替代中央处理器接管对整个存储器的控制,控制访问控制模块与数据缓冲模块,从而控制将存储在易失性存储模块101中的数据转移到非易失性存储模块103中,从而将掉电时的系统运行数据或其他暂存数据保存到在非易失性存储模块103中。存储器100可以用一大容量电容来给上述掉电保存操作供电。
在一些实施例中,存储器可以包括耦接在非易失性存储模块控制器111与数据缓冲模块113之间的数据交互通道121,其中,数据交互通道121被配置为接收采样控制信号,并且根据采样控制信号在非易失性存储模块控制器111与数据缓冲模块113之间传输数据访问命令和数据。
可以看出,对于上述存储器100,由于在数据缓冲模块113中设置了缓存器115以及相应的数据访问通道,因此外部模块107可以对非易失性存储模块103进行读写访问。这样,非易失性存储模块103就可以独立地进行数据存储,例如用于大容量数据存储。在一些情况下,采用存储器100的计算机系统可以不设置硬盘或其他大容量存储设备,而由存储器100中的非易失性存储模块103作为大容量存储设备使用。得益于存储器接口105较高的数据交互速度,这种计算机系统的数据交互速度可以大大提高。此外,上述对非易失性存储模块103的数据访问机制不会影响存储器接口105与易失性存储模块101之间的数据交互,因而能够良好地兼容现有的内部存储器标准。
在图1所示的实施例中,存储器100的易失性存储模块101被表示为包括一个易失性存储单元组。相应地,数据缓冲模块113和缓存器115也分别被表示为包括一个单元组。在实际应用中,根据具体实施例的不同,易失性存储模块也可以包括多个易失性存储单元组。相应地,数据缓冲模块和缓存器也可以分别包括多个单元组。
图2示出了根据本申请一个实施例的存储器200。如图2所示,该存储器200采用分布式存储结构,其中的易失性存储模块201包括多个易失性存储单元组201i。相应地,数据缓冲模块213包括多个数据缓冲单元组213i,其中每个数据缓冲单元组213i包括一个缓存单元组215i。
每个数据缓冲单元组213i通过通道LDQS/LDQ[]耦接到非易失性存储模块控制器211,通过通道MDQS/MDQ[]耦接到一个易失性存储单元组201i,并且通过通道DQS/DQ[]耦接到存储器接口205。其中,非易失性存储模块控制器211进一步地耦接到非易失性存储模块203。
存储器200通过存储器接口205与中央处理器207进行数据交互,具体地,存储器200接收数据访问命令并且根据所接收的数据访问命令与中央处理器207交互数据。此外,存储器200还包括访问控制模块209,其从存储器接口205接收数据访问命令,并且通过访问控制总线217将数据访问命令发送给数据缓冲模组213的每个数据缓冲单元组213i。
在一些实施例中,存储器200可以符合双倍数据速率存储器标准。例如,存储器200可以被符合JEDEC DDR3或LPDDR4标准。在接下来的实施例中,存储器200被示例地结合JEDEC DDR4标准进行说明,但是本领域技术人员可以理解这并非对存储器200应用方式的限制。
如图2所示,访问控制模块209通过命令/地址(Command/Address,C/A)通道耦接存储器接口205以接收数据访问命令。该数据访问命令是由中央处理器207提供的。对于DDR4标准的存储器接口205,该命令/地址信道可以包括管脚A0-A17和/或其他用于传输数据访问命令和地址的管脚。管脚A0-A17中的A0-A9作为行地址,而A11、A13、A17三个管脚被保留未被定义。因此,可以通过定义所保留的管脚A11、A13和A17中的一个或多个管脚,来定义并传输特定数据访问命令。在一些实施例中,A11、A13和A17中的一个或多个管脚可以结合原有的管脚定义(例如A16、A15和A14定义的读、写命令等)以及其他管脚(例如A[9:0])来定义特定数据访问命令。
具体地,表1示出了采用管脚A11结合管脚A[9:0]定义特定数据访问命令。其中,易失性存储模块由VM表示,非易失性存储模块由NVM表示,非易失性存储模块控制器由NVC表示,外部模块(也即中央处理器207)由Host表示,数据缓冲模块由DB表示(下文中相同)。
数据访问命令 数据访问功能描述
RD 将数据VM读取到Host
WR 将数据从Host写入到VM
RD_NVC 将NVC的状态数据转移到DB的缓存器
WR_NVC 用DB的缓存器的数据设置NVC状态
RD_FLASH 将NVM数据读取到DB的缓存器中
WR_FLASH 将DB的缓存器的数据写入到NVM中
RD_DB 将DB的缓存器的数据读取到Host
WR_DB 将Host的数据写入到DB的缓存器中
表1
访问控制模块209根据所接收的数据访问命令,通过访问控制总线217将数据访问命令发送给数据缓冲模块213。在DDR4标准中,访问控制总线217为四位通道BCOM[3:0]。表2示出了根据本申请实施例的访问控制总线传输的命令编码表。其中,编码“1000”和“1001”分别对应于正常写入命令和正常读取命令;而编码“1110”则对应于本申请新定义的特定数据访问命令。换言之,当访问控制模块209接收到的数据访问命令是表1所示的RD和WR命令时,也即与易失性存储模块201读取相关的正常数据访问命令,访问控制模块209提供给访问控制总线217的BCOM[3:0]编码分别为“1000”和“1001”。然而,当访问控制模块209接收到的数据访问命令是表1所示的RD和WR外的其他命令时,也即与非易失性存储模块203相关的特定数据访问命令时,访问控制模块209提供给访问控制总线217的BCOM[3:0]编码分别为“1110”,以指示数据缓冲模块213将要进行的数据访问操作的对象是非易失性存储模块203或涉及缓存器215。
命令 BCOM[3:0]编码
正常写入 1000
正常读取 1001
MRS写入 1011
BCW写入 1100
BCW读取 1101
特定数据访问 1110
保留 1111
NOP(不操作) 1010
表2
在传输了上述命令编码之后,访问控制模块209继续通过访问控制总线217向数据缓冲模块213发送其在命令/地址通道接收的数据访问命令,也即特定数据访问命令或正常数据访问命令。其中,数据访问命令可以采用表3所示的编码表。
命令 BCOM[3:0]编码
RD_NVC 0000
WR_NVC 0001
RD_FLASH 0010
WR_FLASH 0011
RD_DB 0100
WR_DB 0101
RSV(保留) 0110
RSV(保留) 0111
表3
进一步地,数据缓冲模块213根据该数据访问命令与非易失性存储模块控制器211进行数据交互。根据具体实施例的不同,在进行数据交互的过程中,数据缓冲模块213将至少一部分经由其交互的数据缓存到缓存器215中。
图3A至3F示出了利用数据缓冲模块213对非易失性存储模块控制器211进行状态设置或与其交互数据的流程图。接下来,结合图2、图3A至3F以及表1,对非易失性存储模块203的读写操作和状态设置等操作的流程进行进一步说明。
图3A是中央处理器(Host)207获取非易失性存储模块控制器(NVC)211的状态数据的流程300。如图3A所示,在步骤S301,Host 207将RD_NVC命令(经由存储器接口)发送给访问控制模块209。在步骤S302,访问控制模块209通过访问控制总线217将RD_NVC命令发送给数据缓冲模块(DB)213。在步骤S303,DB 213将RD_NVC命令经由通道LDQS/LDQ发送给NVC 211。在步骤S304,NVC 211经由通道LDQS/LDQ将状态数据发送给DB 213,并且将状态数据缓存在缓存器215中。在步骤S305,Host 207将RD_DB命令发送给访问控制模块209。在步骤S306,响应于RD_DB命令,DB 213经由通道DQ将缓存的状态数据(经由存储器接口)发送给Host 207。Host 207相应地接收该状态数据,从而完成状态数据的获取操作。
图3B是Host 207设置NVC 211状态的流程310。如图3B所示,在步骤S311,Host 207将WR_DB命令发送给访问控制模块209。在步骤S312,访问控制模块209通过访问控制总线217将WR_DB命令发送给DB 213。在步骤S313,DB 213经由通道DQ获取设置NVC 213所需的状态数据,并且将其缓存在缓存器215中。在步骤S314,Host 207将WR_NVC命令发送给访问控制模块209。在步骤S315,访问控制模块209通过访问控制总线217将WR_NVC命令发送给DB 213。在步骤S316,DB 213经由通道LDQS/LDQ将状态设置命令发送给NVC 211,并且随后将所缓存的状态数据发送给NVC 211。这样,NVC211响应于该状态设置命令,根据接收到的状态数据来设置NVC 211的状态,从而完成状态设置操作。
图3C是Host 207从非易失性存储模块(NVM)203读取数据的流程320。如图3C所示,在步骤S321,Host 207首先执行图3B所示的流程310,以设置NVC 211的状态,这用于确定读取NVM 203的开始地址和结束地址。在步骤S322,Host 207将RD_FLASH命令发送给访问控制模块209,进而经由访问控制总线217提供给DB 213。在步骤S323,DB 213经由通道LDQS/LDQ将RD_FLASH命令发送给NVC 211。在一些例子中,DB 213还设置寄存器REC_OK=0。该寄存器被设置在DB 213中,用于指示DB 213的操作状态。在步骤S324,响应于RD_FLASH命令,NVC 211从NVM 203读取数据,并且经由通道LDQS/LDQ将数据发送给DB 213。在步骤S325,DB 213经由通道LDQS/LDQ接收NVM203存储的数据,并且在接收完毕后,设置寄存器REC_OK=1。该数据被缓存在缓存器215中。在步骤S326,Host 207读取寄存器REC_OK并检测其值是否被设置为1。在步骤S327,Host 207确定REC_OK=1,则将RD_DB命令发送给访问控制模块209。在步骤S328,Host207经由通道DQ从DB 213接收NVM 203存储的数据,从而完成整个读取数据的流程。
在一些例子中,在步骤S325之后,也可以不进行后续的步骤S326至S328。替代地,Host 207可以将RD_DB命令直接发送给访问控制模块209。之后,Host 207从DB 213接收NVM 203存储的数据,并且同时接收REC_OK的值。如果REC_OK=1,则所接收的NVM数据为有效数据;相反,如果REC_OK=0,则所接收的NVM数据为无效数据。
图3D是Host 207向NVM 203写入数据的流程330。如图3D所示,在步骤S331,Host207首先执行图3B所示的流程310,以设置NVC 211的状态,这用于确定写入NVM 203的开始地址。在步骤S332,Host 207将WR_DB命令发送给访问控制模块209。在步骤S333,访问控制模块209经由访问控制总线217将WR_DB命令发送给DB 213。在步骤S334,DB 213经由通道DQ从Host 207接收待写入的数据,并且设置寄存器SEND_OK=0。该寄存器SEND_OK被设置在DB 213中,用于指示DB 213的操作状态。待写入的数据被缓存在缓存器215中。在步骤S335,Host 207将WR_FLASH命令发送给访问控制模块209。在步骤S336,访问控制模块209经由访问控制总线217将WR_FLASH命令发送给DB 213。在步骤S337,DB 213经由通道LDQS/LDQ将WR_FLASH命令发送给NVC 211,并且设置寄存器SEND_OK=1。在步骤S338,响应于WR_FLASH命令,NVC 211获取缓存在缓存器215中的待写入数据,并且将其写入到NVM 203中,从而完成数据的写入操作。
图3E是Host 207指示将数据从易失性存储模块(VM)201转移到NVM 203中的流程340。如图3E所示,该流程340大体可以分解为两个步骤。首先,在步骤S341,Host 207将RD命令发送给访问控制模块209,由其指示DB 213执行正常数据读取操作。换言之,数据被从VM 201读出,转移到Host 207中。在步骤S342,执行图3D所示的流程330,Host 207将由VM 201读出的数据写入到NVM 203中。这样就完成了数据从VM 201转移到NVM 203的操作。
图3F是Host 207指示将数据从NVM 203转移到VM 201中的流程350。如图3E所示,该流程350大体可以分解为两个步骤。首先,在步骤S351,执行图3C所示的流程320,Host 207从NVM 203读取数据,该数据被转移到Host 207处。接着,在步骤S352,Host 207将WR命令发送给访问控制模块209,由其指示DB 213执行正常数据写入操作。换言之,由NVM 203读出的数据被Host 207提供给DB 213,进而写入到VM 201中。这样就完成了数据从NVM 203转移到VM 201的操作。
可以看出,通过设置表1和表2所示的状态设置命令以及读写命令相关的协议,并且在数据缓冲模块213处设置缓存器215,中央处理器207即可直接访问存储器200内部的非易失性存储模块203,从而充分利用其存储能力。在一些特定的应用场景下,非易失性存储模块203可以具有较大的存储容量,从而作为计算机系统的大容量存储设备。这样,计算机系统就不需要另行配备例如硬盘的大容量存储设备。特别地,由于中央处理器207与存储器200交互的接口具有远高于现有硬盘接口的传输速率,因而中央处理器207能够更加快速地读取或写入数据,从而提高了计算机系统的整体性能。
此外,由于缓存器215是通过独立通道与非易失性存储模块控制器211交互数据的,因此对非易失性存储模块203的访问并不会影响数据缓冲模块213对易失性存储器201和存储器接口205之间的数据交互。换言之,根据本申请实施例的存储器能够很好地兼容现有的存储器标准,并且可以用于现有的计算机系统。
在一些实施例中,图2所示的存储器200也可以采用其他的数据访问协议。表4示出了另一组数据访问命令,其可以采用管脚A13、A11结合管脚A[9:0]以及A[16:14]定义。其中,易失性存储模块由VM表示,非易失性存储模块由NVM表示,非易失性存储模块控制器由NVC表示,外部模块由Host表示,数据缓冲模块由DB表示。
数据访问命令 数据访问功能描述
RD 将数据从VM读取到Host
WR 将数据从Host写入到VM
RD_DRAM 将数据从VM读取到DB的缓存器
WR_DRAM 将DB的缓存器的数据写入到VM中
RD_NVC 将NVC的状态数据转移到DB的缓存器
WR_NVC 用DB的缓存器的数据设置NVC状态
RD_FLASH 将NVM数据读取到DB的缓存器中
WR_FLASH 将DB的缓存器的数据写入到NVM中
RD_DB 将DB的缓存器的数据读取到Host
WR_DB 将Host的数据写入到DB的缓存器中
表4
相应地,当访问控制模块209通过访问控制总线217向数据缓冲模块213传输数据访问命令时,可以采用表5所示的BCOM[3:0]编码。
命令 BCOM[3:0]编码
RD_DRAM 0000
WR_DRAM 0001
RD_NVC 0010
WR_NVC 0011
RD_FLASH 0100
WR_FLASH 0101
RD_DB 0110
WR_DB 0111
表5
可以看出,不同于表1和表3所示的数据访问命令集,表4和表5所示的数据访问命令集中增加了将易失性存储器201中的数据读取并缓存到数据缓冲模块213中的缓存器215的操作,以及相应地将缓存器215中缓存的数据写入到易失性存储器201中的操作。这样,利用数据缓冲模块213及缓存器215中转并缓存数据,易失性存储模块201和非易失性存储模块203可以直接交换数据,而不需要像图3E和3F所示的需要经由外部模块207进行数据中转。这可以有效提高数据交互速率。
对于表4和表5所示的数据访问命令,其中Host 207获取NVC 211的状态数据或者设置NVC 211状态的流程可以参考图3A和3B的相关描述,而Host 207与NVM 203交互数据的流程可以参考图3C和3D的相关描述。在此不再赘述。此外,Host 207控制VM 201和NVM 203交互数据的流程被示于图4A和4B中,其不同于图3E和3F所示的流程。下面结合图4A和4B,对VM 201和NVM 203交互数据的流程进行说明。
图4A示出了Host 207控制从VM 201读取数据,并且将其写入到NVM 203中的流程460。如图4A所示,在步骤S461,Host 207首先执行图3B所示的流程310,以设置NVC211的状态,这用于确定写入NVM 203的开始地址。在步骤S462,Host 207将RD_DRAM命令发送给访问控制模块209。在步骤S463,访问控制模块209经由访问控制总线217将RD_DRAM命令发送给DB 213。在步骤S464,响应于RD_DRAM命令,DB 213经由通道MDQ读取VM 201中存储的数据,并且将其缓存到缓存器215中。之后,DB 213设置寄存器SEND_OK=0。在步骤S465,Host 207将WR_FLASH命令发送给访问控制模块209。在步骤S466,访问控制模块209经由访问控制总线217将WR_FLASH命令发送给DB 213。在步骤S467,DB 213经由通道LDQS/LDQ将WR_FLASH命令及缓存的数据发送给NVC211,并且设置寄存器SEND_OK=1,NVC 211响应WR_FLASH命令,接收缓存在缓存器215中的数据,并且将其写入到NVM 203中,从而完成数据的写入操作。
图4B示出了Host 207控制NVM 203读取数据,并且将其写入到VM 201中的流程470。如图4B所示,在步骤S471,Host 207首先执行图3B所示的流程310,以设置NVC211的状态,这用于确定读取NVM 203的开始地址和结束地址。在步骤S472,Host 207将RD_FLASH命令发送给访问控制模块209,进而经由访问控制总线217提供给DB 213。在步骤S473,DB 213经由通道LDQS/LDQ将RD_FLASH命令发送给NVC 211。在一些例子中,DB 213还设置寄存器REC_OK=0。在步骤S474,响应于RD_FLASH命令,NVC211从NVM 203读取数据,并且经由通道LDQS/LDQ将数据发送给DB 213。在步骤S475,DB 213经由通道LDQS/LDQ接收NVM 203存储的数据,并且在接收完毕后,设置寄存器REC_OK=1。该数据被缓存在缓存器215中。在步骤S476,Host 207读取寄存器REC_OK并检测其值是否被设置为1。在步骤S477,如果Host 207确定REC_OK=1,则将WR_DRAM命令发送给访问控制模块209,该命令进一步地经由访问控制总线217发送给DB 213。在步骤S478,响应于WR_DRAM命令,VM 201经由通道MDQ从DB 213接收其中的缓存器215所缓存的数据,从而完成整个转移数据的流程。可以理解,如果在步骤S477,如果Host 207确定REC_OK的值为0,则等待并重新读取REC_OK。直至检测到REC_OK=1后,再继续执行步骤S478。
表6和表7示出了另一种图2所示的存储器200可以采用的数据访问协议。其中,表6基于访问控制模块209的命令/地址通道的格式定义的数据访问命令,具体地,采用了管脚A11结合管脚A[9:0]来数据访问命令。其中,易失性存储模块由VM表示,非易失性存储模块由NVM表示,非易失性存储模块控制器由NVC表示,外部模块由Host表示,数据缓冲模块由DB表示。
数据访问命令 数据访问功能描述
RD 将数据VM读取到Host
WR 将数据从Host写入到VM
RD_STS 读取DB的缓存器中缓存的操作信息
WR_STS 将操作信息写入到DB的缓存器中
RD_DB 将DB的缓存器中缓存的数据读取到Host
WR_DB 将数据从Host写入到DB的缓存器中
表6
相应地,当访问控制模块209通过访问控制总线217向数据缓冲模块213传输数据访问命令时,可以采用表7所示的BCOM[3:0]编码。
命令 BCOM[3:0]编码
RD_STS 0000
WR_STS 0001
RD_DB 0010
WR_DB 0011
表7
可以看出,由于数据缓冲模块213的缓存器215除了存储待交互的数据之外,还可以还用于存储数据交互操作所需的操作信息和/或命令,因此相比于表1和3或者表4和5所定义的数据访问命令集,表6和7所定义的数据访问命令集较为简单。缓存器215缓存的这些操作信息可以指示数据缓冲模块213执行相应的操作或处理,例如设置数据缓冲模块213中的寄存器,设置非易失性存储模块控制器211中的寄存器,对非易失性存储模块203进行哪些具体操作,等等。这种方式可以简化访问控制模块的设计,将所有的操作信息以协议包的形式封装在缓存器215中,由DB 213和NVC 215来解码协议包,并进行相应的操作。
图5A至5G示出了利用数据缓冲模块213对非易失性存储模块控制器211进行状态设置或与其交互数据的流程图。接下来,结合图2、图5A至5G以及表6至7,对非易失性存储模块203的读写操作和状态设置等操作的流程进行进一步说明。
图5A示出了Host 207从DB 213读取操作信息的流程500。如图5A所示,在步骤S501,Host 207将RD_STS命令发送给访问控制模块209。在步骤S502,访问控制模块209经由访问控制总线217将RD_STS命令发送给数据缓冲模块213。在步骤S503,响应于该RD_STS命令,DB 213将其中缓存的操作信息通过通道DQ以及存储器接口205发送给Host 207。这样,Host 207即得到所需的操作信息。
图5B示出了Host 207设置NVC 211和NVM 203的状态数据,或者将数据访问命令发送给NVC 211的流程510。如图5B所示,在步骤S511,Host 207将WR_STS命令发送给访问控制模块209,并且准备将要发送给DB 213的数据,该数据包括操作信息以及状态数据。在步骤S512,访问控制模块209经由访问控制总线217将WR_STS命令发送给数据缓冲模块213,并且DB 213设置RD_OK=0。在步骤S513,数据缓冲模块213从Host 207接收前述数据,并且根据该数据所包括的操作信息进一步地将状态数据和/或其他数据发送给NVC 211。这样,NVC 211的状态即被设置。
图5C示出了Host 207读取NVC 211和NVM 203状态数据的流程520。如图5C所示,在步骤S521,Host 207首先执行图5B所示的流程510,以将获取NVC 211和NVM 203状态的数据访问命令发送给NVC 211。在步骤S522,响应于所接收到的数据访问命令,NVC 211经由通道LDQS/LDQ将其状态数据发送给DB 213,其中该状态数据被缓存在缓存器215中。在步骤S523,Host 207执行图5A所示的流程,将缓存在DB 213的缓存器215中的NVC和NVM状态数据读取出来。
图5D示出了Host 207读取NVM 203数据的流程530。如图5D所示,在步骤S531,Host 207首先执行图5B所示的流程510,以将包含数据访问命令的操作信息发送给NVC211,其中该数据访问命令指示NVC 211将NVM 203中存储的数据读取到DB 213的缓存器215中。在步骤S532,NVC 211执行所接收到的命令,经由通道LDQS/LDQ将NVM 203数据读取到DB 213中。在步骤S533,DB 213接收到NVM数据后,设置寄存器RD_OK=1。在步骤S534,Host 207使用图5A所示的流程500,以检查寄存器RD_OK的值是否为1。如果确定了寄存器RD_OK的值为1,在步骤S535,Host 207将RD_DB命令发送给访问控制模块209。在步骤S536,访问控制模块209将RD_DB命令转发给DB 213。在步骤S537,Host 207经由通道DQ将缓存器215中缓存的NVM数据读出。这样就完成了数据从NVM 203到Host 207的转移。
图5E示出了Host 207将数据写入到NVM 203中的流程540。如图5E所示,在步骤S541,Host 207执行图5A所示的流程500,检查寄存器WR_OK的值是否为1。如果WR_OK为1,则在步骤S542,Host 207将WR_DB命令发送给访问控制模块209,并且准备待写入的数据。接着,在步骤S543,访问控制模块209将WR_DB命令转发给DB 213。在步骤S544,DB 213将寄存器WR_OK设置为0,DB 213从Host 207接收数据,并且将所接收的数据缓存到缓存器215中。之后,在步骤S545中,Host 207执行图5B所述的流程,以控制DB 213将数据发送给NVC 211。在步骤S546中,DB 213将数据发送给NVC 211,并且设置WR_OK=1。之后,在步骤S547,NVC 211将数据写入到NVM 203中。这样,数据便被由Host 207写入到NVM 203中。
图5F示出了Host 207指示将数据从VM 201转移到NVM 203中的流程550。如图5F所示,在步骤S551,Host 207指示访问控制模块209和DB 213执行RD命令,以获取VM201中存储的数据。在步骤S552,执行图5E所示的流程550,将所获取的数据写入到NVM203中。这样,数据便完成了由VM 201到NVM 203的转移。
图5G示出了Host 207指示将数据从NVM 203转移到VM 201中的流程560。如图5G所示,在步骤S561,执行图5D所示的流程530,Host 207读取NVM 203以获得待交互的数据。在步骤S562,Host 207指示访问控制模块209和DB 213执行WR命令,以将待交互的数据进一步转移到VM 201中。这样,数据便完成了由NVM 203到VM 201的转移。
仍参考图2,每个数据缓冲单元组213i均通过数据交互通道LDQS/LDQ与非易失性存储模块控制器211进行通信。其中,数据交互通道LDQS/LDQ用于接收采样控制信号;并且在采样控制信号的控制下,数据交互通道LDQS/LDQ可以进一步地传输数据访问命令和数据(包括状态数据和操作信息)。在图2所示的实施例中,数据交互通道LDQS/LDQ为双向信号通道。
图6示出了数据交互通道传输数据的波形图。如图6所示,数据交互通道的LDQ[1:0]在空闲时被拉至高电平,也即LDQS=1’b1且LDQ[1:0]=2’b11表示这两个通道空闲。只有在通道空闲时,数据缓冲模块213和非易失性存储模块控制器211才能够占用数据交互通道。当数据缓冲模块213或非易失性存储模块控制器211将要占用数据交互通道LDQ时,其预先发出一开始信号,该开始信号使得数据交互通道在LDQS=1’b1时由2’b11变化为非2’b11的值,例如2’b00、2’b10或2’b01。之后,数据交互通道可以被用于传输数据访问命令和数据。当传输将要结束时,占用数据交互通道的数据缓冲模块213或非易失性存储模块控制器211再发出一结束信号,其在LDQS=1’b1时将由非2’b11的值变化为2’b11。这样,数据交互通道不在被占用。可以理解,上述关于数据交互通道的传输方式仅为示例,在实际应用中,可以根据具体应用需求而做出修改。
应当注意,尽管在上文详细描述中提及了存储器的若干模块或子模块,但是这种划分仅仅是示例性的而非强制性的。实际上,根据本申请的实施例,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
基于图1和图2所述的存储器,以及图3A至图5G所示的数据访问命令,可以实现多种不同的数据访问操作。
在本申请的其他方面,提供了一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述易失性存储模块转移到所述非易失性存储模块;将所述待交互数据从所述易失性存储模块转移到所述存储器接口;将所述待交互数据从所述存储器接口缓存到缓存器中;以及将所述待交互数据从所述缓存器转移到所述非易失性存储模块中。
在本申请的其他方面,还提供了一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述非易失性存储模块转移到所述易失性存储模块;响应于所述数据访问命令:将所述待交互数据从所述非易失性存储模块缓存到缓存器中;将所述待交互数据从所述缓存器转移到所述存储器接口;将所述待交互数据从所述存储器接口转移到所述易失性存储模块中。
在本申请的其他方面,还提供了一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述易失性存储模块转移到所述非易失性存储模块;响应于所述数据访问命令:将所述待交互数据从所述易失性存储模块缓存到缓存器中;以及将所述待交互数据从所述缓存器转移到所述非易失性存储模块。
在本申请的其他方面,还提供了一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述非易失性存储模块转移到所述易失性存储模块;响应于所述数据访问命令:将所述待交互数据从所述非易失性存储模块缓存到所述缓存器中;将所述待交互数据从缓存器转移到所述存储器接口;以及将所述待交互数据从存储器接口转移到所述易失性存储模块。
在本申请的其他方面,还提供了一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述非易失性存储模块转移到所述易失性存储模块;响应于所述数据访问命令:将所述待交互数据从所述非易失性存储模块缓存到缓存器中;将所述待交互数据从所述缓存器转移到所述易失性存储模块中。
在本申请的其他方面,还提供了一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据从所述非易失性存储模块读出;响应于所述数据访问命令:将所述待交互数据从所述非易失性存储模块缓存到所述缓存器中;将所述待交互数据从所述缓存器转移到所述存储器接口。
在一些实施例中,所述数据访问命令进一步地指示将所述待交互数据从转移到另一存储器的易失性存储模块或非易失性存储模块中,所述数据交互方法进一步包括:将转移到所述存储器接口的待交互数据提供给所述另一存储器的存储器接口;将所述待交互数据从所述另一存储器的存储器接口写入到所述另一存储器的易失性存储模块或非易失性存储模块中。
在本申请的其他方面,还提供了一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据写入到所述非易失性存储模块中;响应于所述数据访问命令:将所述待交互数据从所述存储器接口缓存到所述缓存器中;将所述待交互数据从所述缓存器写入非易失性存储模块中。
在一些实施例中,所述数据访问命令进一步指示:在将所述待交互数据写入到所述非易失性存储模块之前,从另一存储器的易失性存储模块或非易失性存储模块中读出所述待交互数据,所述数据交互方法进一步包括:在将所述待交互数据写入到所述非易失性存储模块之前,将所述待交互数据从所述另一存储器的易失性存储模块或非易失性存储模块读出到所述另一存储器的存储器接口;将转移到所述另一存储器的存储器接口的待交互数据提供给所述存储器的存储器接口。这样,存储器可以进一步地将转移到存储器的存储器接口的待交换数据写入到存储器的易失性存储器模块或非易失性存储模块中。
那些本技术领域的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在本申请的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。

Claims (26)

1.一种存储器,其特征在于,包括:
易失性存储模块;
非易失性存储模块;
存储器接口,所述存储器通过所述存储器接口从外部模块接收数据访问命令,并且根据所述数据访问命令与所述外部模块交互数据;
访问控制模块,其耦接到所述存储器接口以接收数据访问命令;
非易失性存储模块控制器,其耦接到所述非易失性存储模块,被配置为接收数据访问命令并且根据所述数据访问命令与所述非易失性存储模块交互数据;
数据缓冲模块,其耦接到所述易失性存储模块、所述非易失性存储模块控制器以及所述存储器接口,并且耦接到所述访问控制模块以接收所述数据访问命令,所述数据缓冲模块被配置为向所述非易失性存储模块控制器提供所述数据访问命令以根据所述数据访问命令与所述非易失性存储模块控制器交互数据;
其中,所述数据缓冲模块包括缓存器,其被配置为缓存至少一部分经由所述数据缓冲模块交互的数据。
2.根据权利要求1所述的存储器,其特征在于,所述至少一部分经由所述数据缓冲模块交互的数据包括在所述存储器接口与所述非易失性存储模块控制器之间交互的数据。
3.根据权利要求2所述的存储器,其特征在于,所述至少一部分经由所述数据缓冲模块交互的数据还包括在所述易失性存储模块与所述非易失性存储模块控制器之间交互的数据。
4.根据权利要求1所述的存储器,其特征在于,所述数据缓冲模块被配置为在与所述非易失性存储模块控制器交互数据之前,获取或设置所述非易失性存储模块控制器的状态数据。
5.根据权利要求1所述的存储器,其特征在于,所述存储器还包括耦接在所述非易失性存储模块控制器与所述数据缓冲模块之间的数据交互通道,其中,
所述数据交互通道被配置为接收采样控制信号,并且根据所述采样控制信号在所述非易失性存储模块控制器与所述数据缓冲模块之间传输数据访问命令和数据。
6.根据权利要求5所述的存储器,其特征在于,所述数据交互通道是双向信号通道。
7.根据权利要求1所述的存储器,其特征在于,所述存储器还包括:
访问控制总线,其耦接在所述访问控制模块与所述数据缓冲模块之间,用于将所述数据访问命令由所述访问控制模块提供给所述数据缓冲模块。
8.根据权利要求1所述的存储器,其特征在于,所述存储器还包括:
掉电保存信号通道,其耦接在所述存储器接口与所述非易失性存储模块控制器之间,被配置为从所述存储器接口接收掉电保存信号,并且将其提供给所述非易失性存储模块控制器;
所述非易失性存储模块控制器被进一步配置为响应于所述掉电保存信号控制所述访问控制模块与所述数据缓冲模块,以将存储在所述易失性存储模块中的数据转移到所述非易失性存储模块中。
9.根据权利要求1所述的存储器,其特征在于,所述缓存器还用于存储对所述非易失性存储模块进行数据交互操作所需的操作信息和/或命令。
10.根据权利要求1所述的存储器,其特征在于,所述易失性存储模块包括多个易失性存储单元组,所述数据缓冲模块包括多个数据缓冲单元组,所述缓存器包括多个缓存单元组,其中每个易失性存储单元对应于一个数据缓冲单元组与一个缓存单元组。
11.根据权利要求1所述的存储器,其特征在于,所述存储器接口为双倍数据率接口。
12.一种计算机系统,包括根据权利要求1至11中任一项所述的存储器。
13.一种移动设备,包括根据权利要求中1至11中任一项所述的存储器。
14.根据权利要求12所述的计算机系统或根据权利要求13所述的移动设备,其特征在于,所述非易失性存储模块被用于大容量数据存储。
15.一种存储器,其特征在于,包括:
易失性存储模块;
非易失性存储模块;
存储器接口,所述存储器通过所述存储器接口从外部模块接收数据访问命令,并且根据所述数据访问命令与所述外部模块交互数据;
访问控制模块,其耦接到所述存储器接口以接收数据访问命令;
非易失性存储模块控制器,其耦接到所述非易失性存储模块,被配置为接收数据访问命令并且根据所述数据访问命令与所述非易失性存储模块交互数据;
具有缓存器的数据缓冲模块,其耦接到所述易失性存储模块、所述非易失性存储模块控制器以及所述存储器接口,并且耦接到所述访问控制模块以接收所述数据访问命令;所述缓存器被配置为当数据在所述非易失性存储模块控制器与所述易失性存储模块之间或在所述非易失性存储模块存储器与所述存储器接口之间交互时缓存待交互的数据,并且当数据在所述易失性存储模块与所述存储器接口之间交互时不缓存待交互的数据。
16.一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:
通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述易失性存储模块转移到所述非易失性存储模块;
响应于所述数据访问命令:
将所述待交互数据从所述易失性存储模块转移到所述存储器接口;
将所述待交互数据从所述存储器接口缓存到缓存器中;以及
将所述待交互数据从所述缓存器转移到所述非易失性存储模块中。
17.一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:
通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述易失性存储模块转移到所述非易失性存储模块;
响应于所述数据访问命令:
将所述待交互数据从所述易失性存储模块缓存到缓存器中;以及
将所述待交互数据从所述缓存器转移到所述非易失性存储模块。
18.一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:
通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述非易失性存储模块转移到所述易失性存储模块;
响应于所述数据访问命令:
将所述待交互数据从所述非易失性存储模块缓存到所述缓存器中;
将所述待交互数据从缓存器转移到所述存储器接口;以及
将所述待交互数据从存储器接口转移到所述易失性存储模块。
19.一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:
通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据由所述非易失性存储模块转移到所述易失性存储模块;
响应于所述数据访问命令:
将所述待交互数据从所述非易失性存储模块缓存到缓存器中;
将所述待交互数据从所述缓存器转移到所述易失性存储模块中。
20.一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:
通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据从所述非易失性存储模块读出;
响应于所述数据访问命令:
将所述待交互数据从所述非易失性存储模块缓存到所述缓存器中;
将所述待交互数据从所述缓存器转移到所述存储器接口。
21.根据权利要求20所述的数据交互方法,其特征在于,所述数据访问命令进一步地指示将所述待交互数据从转移到另一存储器的易失性存储模块或非易失性存储模块中,所述数据交互方法进一步包括:
将转移到所述存储器接口的待交互数据提供给所述另一存储器的存储器接口;
将所述待交互数据从所述另一存储器的存储器接口写入到所述另一存储器的易失性存储模块或非易失性存储模块中。
22.一种存储器的数据交互方法,其中所述存储器包括易失性存储模块和非易失性存储模块,所述存储器通过存储器接口与外部模块进行数据交互,并且所述存储器包括位于其内部的缓存器,所述数据交互方法包括:
通过所述存储器接口接收数据访问命令,所述数据访问命令指示将待交互数据写入到所述非易失性存储模块中;
响应于所述数据访问命令:
将所述待交互数据从所述存储器接口缓存到所述缓存器中;
将所述待交互数据从所述缓存器写入非易失性存储模块中。
23.根据权利要求22所述的数据交互方法,其特征在于,所述数据访问命令进一步指示:在将所述待交互数据写入到所述非易失性存储模块之前,从另一存储器的易失性存储模块或非易失性存储模块中读出所述待交互数据,所述数据交互方法进一步包括:
在将所述待交互数据写入到所述非易失性存储模块之前,将所述待交互数据从所述另一存储器的易失性存储模块或非易失性存储模块读出到所述另一存储器的存储器接口;
将转移到所述另一存储器的存储器接口的待交互数据提供给所述存储器的存储器接口。
24.根据权利要求16至23中任一项所述的数据交互方法,其特征在于,所述数据访问命令被缓存在所述缓存器中。
25.根据权利要求16至23中任一项所述的数据交互方法,其特征在于,所述缓存器被设置在所述存储器的数据缓冲模块中。
26.根据权利要求25所述的数据交互方法,其特征在于,所述数据缓冲模块包括多个数据缓冲单元组,所述缓存器包括多个缓存单元组,其中每个易失性存储单元对应于一个数据缓冲单元组与一个缓存单元组。
CN201510167194.9A 2015-04-09 2015-04-09 存储器及存储器的数据交互方法 Active CN106155926B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510167194.9A CN106155926B (zh) 2015-04-09 2015-04-09 存储器及存储器的数据交互方法
US14/956,395 US20160299719A1 (en) 2015-04-09 2015-12-02 Memory device and method for data exchanging thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510167194.9A CN106155926B (zh) 2015-04-09 2015-04-09 存储器及存储器的数据交互方法

Publications (2)

Publication Number Publication Date
CN106155926A true CN106155926A (zh) 2016-11-23
CN106155926B CN106155926B (zh) 2019-11-26

Family

ID=57112185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510167194.9A Active CN106155926B (zh) 2015-04-09 2015-04-09 存储器及存储器的数据交互方法

Country Status (2)

Country Link
US (1) US20160299719A1 (zh)
CN (1) CN106155926B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110007850A (zh) * 2018-01-04 2019-07-12 澜起科技股份有限公司 存储器控制器以及用于对存储模块进行访问的方法
CN110134528A (zh) * 2019-04-15 2019-08-16 平安普惠企业管理有限公司 微服务框架的接口信息存储调用方法、装置和终端设备
US10929029B2 (en) 2018-01-04 2021-02-23 Montage Technology Co., Ltd. Memory controller and method for accessing memory modules and processing sub-modules
US11226768B2 (en) 2018-01-04 2022-01-18 Montage Technology Co., Ltd. Memory controller and method for accessing memory module

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031677B1 (en) 2015-10-14 2018-07-24 Rambus Inc. High-throughput low-latency hybrid memory module
KR102491651B1 (ko) * 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US10019367B2 (en) 2015-12-14 2018-07-10 Samsung Electronics Co., Ltd. Memory module, computing system having the same, and method for testing tag error thereof
KR102427323B1 (ko) 2017-11-08 2022-08-01 삼성전자주식회사 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101097562A (zh) * 2006-06-27 2008-01-02 深圳市中兴集成电路设计有限责任公司 一种突破非易失性存储器件速度瓶颈的装置
US7549021B2 (en) * 2006-02-22 2009-06-16 Seagate Technology Llc Enhanced data integrity using parallel volatile and non-volatile transfer buffers
CN102566978A (zh) * 2010-09-30 2012-07-11 Nxp股份有限公司 存储器加速器缓冲器置换方法及系统
CN102662802A (zh) * 2012-05-08 2012-09-12 无锡云动科技发展有限公司 基于非易失性内存的全系统断电恢复方法及设备
CN104021093A (zh) * 2014-06-24 2014-09-03 浪潮集团有限公司 一种基于nvdimm的存储设备的掉电保护方法
WO2014209891A1 (en) * 2013-06-27 2014-12-31 Intel Corporation Hybrid memory device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040190210A1 (en) * 2003-03-26 2004-09-30 Leete Brian A. Memory back up and content preservation
KR100606242B1 (ko) * 2004-01-30 2006-07-31 삼성전자주식회사 불휘발성 메모리와 호스트간에 버퍼링 동작을 수행하는멀티 포트 휘발성 메모리 장치, 이를 이용한 멀티-칩패키지 반도체 장치 및 이를 이용한 데이터 처리장치
US8086785B2 (en) * 2007-02-22 2011-12-27 Mosaid Technologies Incorporated System and method of page buffer operation for memory devices
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
US7934052B2 (en) * 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US7934124B2 (en) * 2008-10-10 2011-04-26 Oracle America, Inc. Self-contained densely packed solid-state storage subsystem
US9430011B2 (en) * 2010-01-25 2016-08-30 Dell Products L.P. Systems and methods for determining the state of health of a capacitor module
GB2510180A (en) * 2013-01-29 2014-07-30 Ibm Selective restoration of data from non-volatile storage to volatile memory
US9348539B1 (en) * 2013-03-12 2016-05-24 Inphi Corporation Memory centric computing
KR102229970B1 (ko) * 2014-06-27 2021-03-22 삼성전자주식회사 불휘발성 메모리, 랜덤 액세스 메모리 및 메모리 컨트롤러를 포함하는 솔리드 스테이트 드라이브
KR102408613B1 (ko) * 2015-08-27 2022-06-15 삼성전자주식회사 메모리 모듈의 동작 방법, 및 메모리 모듈을 제어하는 프로세서의 동작 방법, 및 사용자 시스템
KR102491651B1 (ko) * 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549021B2 (en) * 2006-02-22 2009-06-16 Seagate Technology Llc Enhanced data integrity using parallel volatile and non-volatile transfer buffers
CN101097562A (zh) * 2006-06-27 2008-01-02 深圳市中兴集成电路设计有限责任公司 一种突破非易失性存储器件速度瓶颈的装置
CN102566978A (zh) * 2010-09-30 2012-07-11 Nxp股份有限公司 存储器加速器缓冲器置换方法及系统
CN102662802A (zh) * 2012-05-08 2012-09-12 无锡云动科技发展有限公司 基于非易失性内存的全系统断电恢复方法及设备
WO2014209891A1 (en) * 2013-06-27 2014-12-31 Intel Corporation Hybrid memory device
CN104021093A (zh) * 2014-06-24 2014-09-03 浪潮集团有限公司 一种基于nvdimm的存储设备的掉电保护方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110007850A (zh) * 2018-01-04 2019-07-12 澜起科技股份有限公司 存储器控制器以及用于对存储模块进行访问的方法
CN110008147A (zh) * 2018-01-04 2019-07-12 澜起科技股份有限公司 存储器控制器以及用于对存储模块进行访问的方法
US10929029B2 (en) 2018-01-04 2021-02-23 Montage Technology Co., Ltd. Memory controller and method for accessing memory modules and processing sub-modules
CN110007850B (zh) * 2018-01-04 2021-12-03 澜起科技股份有限公司 存储器控制器以及用于对存储模块进行访问的方法
US11226768B2 (en) 2018-01-04 2022-01-18 Montage Technology Co., Ltd. Memory controller and method for accessing memory module
CN110134528A (zh) * 2019-04-15 2019-08-16 平安普惠企业管理有限公司 微服务框架的接口信息存储调用方法、装置和终端设备

Also Published As

Publication number Publication date
CN106155926B (zh) 2019-11-26
US20160299719A1 (en) 2016-10-13

Similar Documents

Publication Publication Date Title
CN106155926A (zh) 存储器及存储器的数据交互方法
CN106997324B (zh) 非易失性存储器模块、具有其的计算系统及其操作方法
CN106257400B (zh) 处理设备、计算系统及处理设备访问主存储器的方法
CN102467950B (zh) 伪开漏型输出驱动器、半导体存储器装置及其控制方法
CN101036131B (zh) 支持时间上多路复用的纠错编码的存储器事务猝发操作和存储器组件
US9922686B2 (en) Apparatuses and methods for performing intra-module databus inversion operations
CN102812518B (zh) 存储器存取方法和装置
JP5052842B2 (ja) ポイントツーポイントリンクを有するメモリシステム及び方法
CN107430547A (zh) 用于非易失性存储设备的故障安全写回高速缓存模式设备驱动
US10672474B2 (en) High-performance on-module caching architectures for non-volatile dual in-line memory module (NVDIMM)
US20180285252A1 (en) Optimized memory access bandwidth devices, systems, and methods for processing low spatial locality data
CN103337251B (zh) 动态随机存取存储器及其存取方法
CN107924693A (zh) 多区块系统中的可编程的片上端接定时
US10146711B2 (en) Techniques to access or operate a dual in-line memory module via multiple data channels
CN103680594A (zh) 降低写失败的存储器件、包括该存储器件的系统及其方法
US20190236030A1 (en) Memory module, operation method therof, and operation method of host
CN110007850B (zh) 存储器控制器以及用于对存储模块进行访问的方法
DE102017106713A1 (de) Rechensystem, nichtflüchtiges Speichermodul und Verfahren zum Betreiben einer Speichervorrichtung
CN107527642A (zh) 包括缓冲存储器的存储器器件和存储器模块
KR20170060739A (ko) 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
CN101930407A (zh) 闪速存储器控制电路及其存储系统与数据传输方法
CN104424124B (zh) 内存装置、电子设备和用于控制内存装置的方法
CN103177751B (zh) 一种存储器阵列结构
CN100520959C (zh) 具有9的倍数位的数据输入/输出结构的半导体存储装置
CN106919363A (zh) 一种基于异步先进先出的sdram缓存器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: A6, No. 900 Yishan Road, Xuhui District, Shanghai, 2003

Applicant after: Lanqi Technology Co., Ltd.

Address before: Room A1601, 900 Yishan Road, Xuhui District, Shanghai, 2003

Applicant before: Acrospeed, Inc.

GR01 Patent grant
GR01 Patent grant