CN109753238B - 数据存储设备及其操作方法 - Google Patents

数据存储设备及其操作方法 Download PDF

Info

Publication number
CN109753238B
CN109753238B CN201811272545.2A CN201811272545A CN109753238B CN 109753238 B CN109753238 B CN 109753238B CN 201811272545 A CN201811272545 A CN 201811272545A CN 109753238 B CN109753238 B CN 109753238B
Authority
CN
China
Prior art keywords
data
memory device
host
storage device
controller
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.)
Active
Application number
CN201811272545.2A
Other languages
English (en)
Other versions
CN109753238A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN109753238A publication Critical patent/CN109753238A/zh
Application granted granted Critical
Publication of CN109753238B publication Critical patent/CN109753238B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • G06F12/1425Protection 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 the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection 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 the protection being physical, e.g. cell, word, block for a range
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2236Copy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据存储设备,包括:第一存储器设备,具有包括通用区和主机访问区的缓冲区;第二存储器设备;以及控制器。第一存储器设备可由主机直接访问。控制器控制第一存储器设备或第二存储器设备以存储从主机提供的数据。当从主机提供的数据符合预定条件时,控制器将数据存储在主机访问区中,并生成该数据的元数据。

Description

数据存储设备及其操作方法
相关申请的交叉引用
本申请根据35U.S.C§119要求于2017年11月1日向韩国知识产权局提交的韩国专利申请No.10-2017-0144846的优先权,其公开内容通过引用整体并入本文。
技术领域
本公开涉及一种数据存储设备及其操作方法。
背景技术
半导体存储器设备分为易失性存储器设备和非易失性存储器设备,在易失性存储器设备中,存储的信息在电源被中断时不被保留,非易失性存储器设备即使在电源中断时也保持存储的信息。NAND闪存设备广泛用作非易失性存储器设备。包括NAND闪存设备的数据存储设备包括例如固态驱动器(SSD)。
包括NAND闪存设备的SSD可以实现大的存储容量。然而,与包括动态随机存取存储器(DRAM)的SSD相比,包括NAND闪存设备的SSD的访问速度是低的。
高速非易失性存储器(NVMe)是非易失性存储器的通信标准,为外部主机提供了一种标准,用于将数据读写到位于SSD内部的DRAM中。
发明内容
本发明构思的至少一个实施例提供了一种具有改进的数据输入和输出速度的数据存储设备。
本发明构思的至少一个实施例提供了一种操作具有改进的数据输入和输出速度的数据存储设备的方法。
根据本发明构思的示例性实施例,数据存储设备包括:第一存储器设备,具有包括通用区和主机访问区的缓冲区;第二存储器设备;以及控制器。第一存储器设备可由主机直接访问。控制器控制第一存储器设备或第二存储器设备以存储从主机提供的数据,当从主机提供的数据符合预定条件时,控制器将数据存储在主机访问区中,并基于数据生成元数据。
根据本发明构思的示例性实施例,数据存储设备包括:主机,其提供数据写命令和由数据写命令写入的数据;驱动器,其存储从主机提供的数据;以及交换机,其连接主机和驱动器。驱动器包括第一存储器设备、第二存储器设备和控制器。第一存储器设备具有:缓冲区,包括通用区和主机访问区。控制器控制第一存储器设备或第二存储器设备以存储从主机提供的数据。当从主机提供的数据符合预定条件时,控制器将数据存储在主机访问区中,并且基于数据生成元数据。第一存储器设备可由主机直接访问。
根据本发明构思的示例性实施例,一种操作数据存储设备的方法包括:存储设备的控制器分配在数据存储设备的第一存储器设备中包括的缓冲区的第一部分作为通用区,并且分配缓冲区的第二部分作为主机访问区;控制器接收来自主机的写命令和数据;当该数据符合预定条件时,控制器将该数据存储在主机访问区中,并基于该数据生成元数据;当该数据不符合预定条件时,控制器将该数据存储在第一存储器设备的通用区中;以及控制器将存储在主机访问区中的数据与元数据一起存储在第二存储器设备中。写命令包括第一存储器设备的地址。
根据本发明构思的示例性实施例,数据存储设备包括:易失性存储器设备,包括缓冲区;非易失性存储器设备;以及控制器,被配置为分配缓冲区的第一部分作为通用区,并且分配缓冲区的第二部分作为主机访问区。控制器将来自主机的第一数据存储在通用区中,并且将来自主机的第二数据存储在主机访问区中。控制器防止第一数据从缓冲区复制到非易失性存储设备,并且允许第二数据从缓冲区复制到非易失性存储设备。
附图说明
参考附图,通过详细描述其示例性实施例,本发明构思将变得显而易见,在附图中:
图1是示出了根据本发明构思的示例性实施例的数据存储设备的框图;
图2是更详细地示出了图1的数据存储设备的框图;
图3是用于说明图2的主机接口的配置的框图;
图4是示出了根据本发明构思的示例性实施例的数据存储设备的操作的流程图。
图5是用于说明根据本发明构思的示例性实施例的数据存储设备的操作的框图;
图6是示出了根据本发明构思的示例性实施例的数据存储设备的操作的流程图。
图7A至图7B是用于说明根据本发明构思的一些示例性实施例的数据存储设备的操作的框图;
图8是用于说明根据本发明构思的示例性实施例的数据存储设备的操作的流程图;
图9至图10是用于说明根据本发明构思的示例性实施例的数据存储设备的操作的框图;以及
图11是示出了根据本发明构思的示例性实施例的包括数据存储设备的计算系统的框图。
具体实施方式
图1是示出了根据本发明构思的示例性实施例的数据存储设备的框图,并且图2是更详细地示出了图1的数据存储设备的框图。
参考图1和图2,根据本发明构思的示例性实施例的数据存储设备100包括第一存储器设备110(例如,易失性存储器设备)、第二存储器设备150(例如,非易失性存储器设备)和控制器160(例如,控制电路)。
数据存储设备100可以连接到主机。数据存储设备100可以从主机接收读取、编程和擦除命令,并且可以执行与每个接收到的命令相对应的操作。
信道500连接数据存储设备100和主机。信道500可以用于在主机和数据存储设备100之间交换数据。例如,信道500可以包括通用串行总线(USB)、小型计算机系统接口(SCSI)、高速PCI、ATA、PATA(并行ATA)、SATA(串行ATA)、SAS(串行附接SCSI)和NVMe(高速非易失性存储器)中的至少一个接口,但是本公开不限于此。
在本说明书中,信道500被描述为连接主机和数据存储设备100,同时符合NVMe标准。具体地,信道500可以被配置为符合NVMe 1.2或更高的标准,但是不限于此。
当信道500被配置为符合NVMe 1.2或更高的标准时,数据存储设备100也是支持NVMe 1.2或更高的标准的存储设备。
信道500可以包括用于支持PCIe标准的数据传送的开关。
数据存储设备100可以是例如包括第一存储器设备110和第二存储器设备150的固态驱动器(SSD)。
相反,数据存储设备100可以是存储卡(例如PC卡)、个人计算机存储卡国际协会(PCMCIA)卡、紧凑型闪存卡(CF)、智能媒体卡(SM、SMC)、记忆棒、多媒体卡(MMC、RS-MMC、MMCmicro)、SD卡(SD、miniSD、microSD、SDHC)和通用闪存设备(UFS)。然而,本发明构思不限于此。
第一存储器设备110可以存储从主机提供的数据。第一存储器设备110可以包括例如易失性存储器。具体地,第一存储器设备110可以包括动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM),但是本发明构思不限于此。
在示例性实施例中,当第一存储器设备110包括例如DRAM或SRAM时,第一存储器设备110的操作速度高于第二存储器设备150的操作速度。在示例性实施例中,第一存储器设备110的存储容量小于第二存储器设备150的存储容量。
在实施例中,第一存储器设备110作为数据存储设备100中的一种高速缓冲存储器或缓冲器而操作。因此,数据存储设备100可以在将数据写入第二存储器设备150之前将数据临时存储在第一存储器设备110中。数据存储设备100可以在将从第二存储器设备150读取的数据发送给主机之前将从该数据临时存储在第一存储器设备110中。
第一存储器设备110包括可以从主机直接访问的缓冲区120。此外,第一存储器设备110可以包括除缓冲区120之外的区域。也就是说,第一存储器设备110可以包括从主机直接访问的缓冲区120、以及不直接从主机访问的其他区域。
缓冲区120可以被分配在第一存储器设备110中的存储空间内。数据存储设备100可以包括用于在第一存储器设备110中限定缓冲区120的寄存器。缓冲区120在第一存储器设备110中开始的地址和/或缓冲区120的尺寸可以存储在寄存器中,但是本发明构思不限于此。
当数据存储设备100被配置为符合NVMe 1.2或更高的标准时,缓冲区120可以是控制器存储缓冲器(CMB)。然而,本发明构思不限于此。
缓冲区120包括通用区130和主机访问区140。通用区130存储未提供给第二存储器设备150的数据。存储在通用区130中的数据可以包括例如内核数据。内核数据可以由操作系统使用。在实施例中,控制器160指定用于未提供给第二存储器设备150的数据的通用区130,并且可以将通用区提供给第一存储器设备110。
主机访问区140存储可以提供给第二存储器设备150的数据。在实施例中,主机访问区140临时存储由主机直接请求的数据以记录在第二存储器设备150上。例如,主机的数据可以在该数据被存储在第二存储器设备150中之前临时存储在主机访问区140中。存储在主机访问区140中的数据可以包括例如应用数据或用户数据,但是本发明构思不限于此。
数据存储设备100可以将符合预定条件的数据存储在主机访问区140中。预定条件可以包括例如数据块大小和数据对齐大小。
例如,数据存储设备100可以仅将具有4KB的数据块大小的数据存储在主机访问区140中。尽管确定具有4KB的数据块大小的数据被存储在主机访问区140中,但是当从主机提供其他大小(例如,2KB、8KB等)的数据时,数据存储设备100可以向主机返回错误消息。
备选地,数据存储设备100可以仅将以4KB对齐的数据存储在主机访问区140中。尽管确定以4Kb对齐的数据被存储在主机访问区140中,但是当从主机提供以其他大小(例如,8KB等)对齐的数据时,数据存储设备100可以向主机返回错误消息。
存储在主机访问区140中的数据可能需要满足多个条件。也就是说,存储在主机访问区140中的数据可以是数据块大小为4KB的对齐成4KB的数据。
第二存储器设备150还可以存储从主机提供的数据。第二存储器设备150可以包括例如非易失性存储器155。第二存储器设备150可以包括NAND闪存,但不限于此。
例如,第二存储器设备150可以包括相变RAM(PRAM)、铁电RAM(FRAM)、电阻RAM(RRAM)或磁阻RAM(MRAM)之一。也就是说,作为存储元件,第二存储器设备150还可以使用相变材料、铁电材料、电阻材料和磁隧道结材料来半永久地存储数据。
第二存储器设备150可以接收来自主机的由第一存储器设备110提供并临时存储的数据,并且可以将数据存储在其中。例如,从主机接收到的数据可以在其被发送给第二存储器设备150之前临时存储在第一存储器设备110中。备选地,第二存储器设备150可以将被读取以向主机提供的数据提供给第一存储器设备110,并且第一存储器设备110可以将数据临时存储在其中,然后可以将数据再次发送给主机。例如,从第二存储器设备150读出的数据可以在该数据被发送给主机之前临时存储在第一存储器设备110中。
控制器160可以控制数据存储设备100的操作。具体地,控制器160可以控制数据存储设备100中的第一存储器设备110和第二存储器设备150的操作。下面将描述由控制器160控制的第一存储器设备110和第二存储器设备150的具体操作。
控制器160包括主机接口170、元数据生成器180和闪存接口190。图2中所示的控制器160中的组件是用于说明数据存储设备100和控制器160的操作的最小组件。也就是说,控制器160可以包括除主机接口170、元数据生成器180和闪存接口190之外的许多组件。
主机接口170可以在主机和控制器160之间交换数据。主机接口170可以接收由主机提供给数据存储设备100的数据,并且相反地,可以将由数据存储设备100提供的数据发送给主机。
从主机提供的数据可以经由主机接口170发送给第一存储器设备110。主机接口170可以连接到第一存储器设备110内部的缓冲区120中包括的通用区130和主机访问区140中的每一个。在实施例中,第一信号线将主机接口170连接到第一存储器设备100的第一输入端,用于与通用区130交换数据,并且第二信号线将主机接口170连接到第一存储器设备100的第二输入端,用于与主机访问区140交换数据。
将参考图3更详细地描述主机接口170的示例性详细配置。
图3是用于说明图2的主机接口170的配置的框图。
参考图3,主机接口170包括发送器/接收器171(例如,收发器)和数据确定单元172(例如,被配置为确定数据类型的电路)。
发送器/接收器171可以接收由主机提供给数据存储设备010的数据,并且相反地,发送器/接收器171可以向主机发送由数据存储设备100提供的数据。为了确定主机提供给数据存储设备100的数据的类型,发送器/接收器171可以向数据确定单元172提供接收到的数据。
在实施例中,数据确定单元172确定从发送器/接收器171提供的数据的类型。如上所述,在实施例中,提供给主机接口170以存储在主机访问区140中的数据需要满足预定条件。在实施例中,数据确定单元172确定从发送器/接收器171提供的数据的数据块大小是否与预定条件一致或者数据的对齐是否与预定条件一致。数据确定单元172可以将确定结果提供给发送器/接收器171。在实施例中,数据确定单元172由比较器、算术逻辑单元或一个或多个逻辑电路实现,以确定数据是否具有特定数据块大小或具有特定对齐。
返回参考图2,元数据生成器180基于从主机提供的数据生成元数据。由元数据生成器180生成的数据的元数据可以包括例如纠错码(ECC),用于检查从主机提供的数据中是否存在错误。在实施例中,元数据生成器180是被配置为基于输入数据生成ECC的电路。
ECC可以是,例如,使用诸如里德-所罗门码(RS)、汉明码、循环冗余码(CRC)和低密度奇偶校验(LDPC)的算法形成的纠错码。
元数据生成器180可以基于从主机提供给第一存储器设备110的数据来生成元数据。备选地,元数据生成器180可以基于从第一存储器设备110提供给第二存储器设备的数据来生成元数据。稍后将给出其更详细的描述。
闪存接口190可以用于在控制器160和第二存储器设备150之间交换数据。闪存接口190可以向第二存储器设备150发送由控制器160提供的数据,并且相反地,闪存接口190可以接收由第二存储器设备150向控制器160提供的数据。
图4是示出了根据本发明构思的示例性实施例的操作数据存储设备的方法的流程图。
参考图4,根据本发明构思的示例性实施例的操作数据存储设备的方法包括:从主机接收写命令和数据(S100);确定数据是否将被存储在主机访问区140中(S110);当要将数据存储在主机访问区140中时,基于接收到的数据生成元数据(S120);将接收到的数据存储在缓冲区120内部的主机访问区140中(S130);以及当不要将数据存储在主机访问区140中时,将接收到的数据存储在缓冲区120中的通用区130中(S140)。
将参考图5更详细地描述数据存储设备100的写操作。
图5是用于说明根据本发明构思的示例性实施例的数据存储设备的操作的框图。
参考图5,数据存储设备100从主机接收写命令和数据(S100)。
主机可以向数据存储设备100提供写命令和作为写操作的目标的数据(DATA1)。写命令可以包括第一存储器设备110的地址。具体地,写命令可以包括指示第一存储器设备110中的缓冲区120的地址。
缓冲区120包括如上所述的通用区130和主机访问区140。因此,由主机提供的写命令中包括的地址可以指示缓冲区120中的通用区130或主机访问区140。例如,地址可以指示通用区130内的位置或主机访问区140内的位置。
此外,由主机向数据存储设备100提供的写命令可以包括要由数据存储设备100存储的数据(DATA1)的预定条件。例如,这种条件可以指定由主机提供的数据(DATA1)具有4KB的数据块大小。备选地,上述条件可以指定例如由主机提供的数据(DATA1)以4KB对齐。例如,写命令可以包括指定该条件的数据字段(例如,一个或多个位)。
控制器160基于从主机提供的写命令确定接收到的数据(DATA1)是需要被存储在通用区130中还是需要被存储在主机访问区140中(S110)。
将参考图6更详细地描述关于由控制器160提供的数据(DATA1)是需要被存储在通用区130中还是需要被存储在主机访问区140中的确定。
在由数据存储设备100从主机接收到的写命令中,可以存在接收到的数据(DATA1)存储是需要被存储在通用区130还是需要被存储在主机访问区140中的条件。
例如,当从主机接收到的数据是内核数据时,数据存储设备100可以确定接收到的数据需要被存储在通用区130中。备选地,当从主机提供的数据(DATA1)是用户数据或应用数据时,数据存储设备100可以确定接收到的数据需要被存储在主机访问区140中。
通过使用发送器/接收器171将接收到的写命令或接收到的数据提供给数据确定单元172,并且通过使用数据确定单元172来基于接收到的写命令或接收到的数据确定数据是需要被存储在通用区130还是需要被存储在主机访问区140中,可以执行这样的确定过程。
图6是用于说明根据本发明构思的示例性实施例的利用数据存储设备对接收到的数据进行处理的流程图。
参考图6,数据存储设备确定接收到的数据(DATA1)是否是符合预定条件的数据(S121);如果接收到的数据(DATA1)符合预定条件,则对主机访问区140执行数据(DATA1)写入(S122);并且如果提供的数据(DATA1)不符合预定条件,则生成错误消息(S123)。
在实施例中,由数据存储设备100接收到的写命令指定数据具有4KB的数据块大小,并且当由主机提供给数据存储设备100的数据具有4KB的数据块大小时,数据确定单元172确定接收到的数据符合预定条件。控制器160可以执行数据(DATA1)在主机访问区140中的写入。例如,控制器160可以执行使数据(DATA1)被写入到主机访问区140的操作。
在实施例中,由数据存储设备100接收到的写命令指定数据具有4KB的数据块大小。然而,由主机提供给数据存储设备100的数据可以具有8KB的数据块大小。在这种情况下,数据确定单元172生成错误消息,并且控制器160可以将错误消息传送给主机。
返回参考图4和图5,在确定要将接收到的数据存储在主机访问区140中的情况下,基于接收到的数据(DATA1)生成元数据(S120)。元数据生成器180可以使用从发送器/接收器171提供的数据(DATA1)来生成元数据。
在示例性实施例中,元数据生成器180对接收到的数据(DATAS1),使用诸如里德-所罗门码(RS)、汉明码、循环冗余码(CRC)和低密度奇偶校验(LDPC)之类的算法来生成所形成的ECC,但不限于此。
图7A至图7B是用于说明根据本发明构思的一些示例性实施例的数据存储设备的操作的框图。
首先,参考图7A,元数据生成器180将生成的元数据(META1)提供给第一存储器设备110。第一存储器设备110可以存储从元数据生成器180提供的元数据(META1)。
在示例性实施例中,第一存储器设备110将元数据(META1)存储在缓冲区120中。在示例性实施例中,第一存储器设备1100将元数据(META1)存储在主机访问区140中。
在示例性实施例中,当第一存储器设备110将元数据(META1)存储在主机访问区140中时,第一存储器设备110将数据(DATA1)和元数据(META1)提供给闪存接口190以便将从主机提供的数据(DATA1)存储在第二存储器设备150中。元数据(META1)可以用于对数据(DATA1)执行纠错操作。
在示例性实施例中,第一存储器设备110还将元数据(META1)存储在除缓冲区120之外的区域中。
参考图7B,控制器160还存储由元数据生成器180生成的元数据(META1)。控制器160可以包括用于存储由元数据生成器180生成的元数据(META1)的另一存储器。
当控制器160存储元数据(META1)时,控制器160可以将元数据(META1)提供给类似于闪存接口190的配置,其中,第一存储器设备110将从主机提供的数据(DATA1)发送给闪存接口190。
图8是用于说明根据本发明构思的示例性实施例的数据存储设备的操作的流程图。
参考图8,将描述用于将存储在第一存储器设备110中的数据存储在第二存储器设备150中的操作。首先,确定从第一存储器设备110提供的数据是否是从主机访问区140加载的数据(S200)。当确定了从主机访问区140加载数据时,在第二存储器设备150上执行数据写入(S210)。例如,将加载数据写入到第二存储器设备150。当确定了未从主机访问区140加载数据时(例如,从通用区130加载数据),根据所加载的数据生成元数据(S220),然后在第二存储器设备150上执行数据写入(S210)。例如,根据所加载的数据生成元数据并将其发送给控制器160,然后将所加载的数据写入到第二存储器设备150。
图9至图10是用于说明根据本发明构思的一些示例性实施例的数据存储设备的操作的框图。
参考图9,示出了在第二存储器设备150上写入从主机访问区140加载的数据的操作。
在示例性实施例中,通过从主机接收另一命令(例如,除了初始写命令之外的命令)来启动存储在第一存储器设备110中的数据到第二存储器设备150的移动。在示例性实施例中,自动启动存储在第一存储器设备110中的数据到第二存储器设备的移动,而不从主机接收另一命令。
从主机访问区140加载的数据(DATA1)可以被提供给闪存接口190。当由元数据生成器180生成的元数据(META1)被存储在第一存储器设备110中时,第一存储器设备110可以将数据(DATA1)和元数据(META1)提供给闪存接口190。
在另一实施例中,当控制器160包括存储元数据(META1)的另一存储器时,从存储器加载的元数据(META1)被提供给闪存接口190。
根据本发明构思的示例性实施例的数据存储设备100包括可由主机直接访问的第一存储器设备110。由于数据存储设备100基于提供给第一存储器设备110的数据(DATA1)生成元数据(META1)并使数据(DATA1)向第二存储器设备150移动,因此数据(DATA1)和元数据(META1)不需要将被复制到除第一存储器设备110的缓冲区120之外的空间。
例如,基于由主机提供的数据(DATA1)生成元数据(META1)可以涉及如上所述的RS码或LDPC的计算。当由主机提供并存储在第一存储器设备110中的数据具有构成数据的不同数据块大小或数据对齐大小时,可以不连续地执行元数据生成。因此,可能需要将从主机提供的数据复制到第一存储器设备110中的除缓冲区120之外的部分(例如,通过memcopy操作),并使用复制的数据生成元数据。
在根据本发明构思的示例性实施例的数据存储设备100中,缓冲区120被分配给第一存储器设备110,并且缓冲区120包括由主机直接访问的主机访问区140。此外,可存储在主机访问区140中的数据可以受到预定条件的限制。这些条件可以包括例如块大小和数据对齐大小。
假设在预定条件下仅将有限数据存储在主机访问区140中,元数据生成器180可以连续地生成用于存储在主机访问区140中的数据的元数据。也就是说,可以从接收到的数据(DATA1)生成元数据(META1),而不需要将从主机接收到的数据复制到第一存储器设备110中的除缓冲区120之外的部分。因此,可以快速执行将从主机接收到的数据存储在主机访问区140中并将数据与其对应的元数据一起存储在第二存储器设备150中的操作。
参考图10,示出了将从通用区130加载的数据写入到第二存储器设备150上的操作。
参考图10,当需要将存储在通用区130中的数据写入到第二存储器设备150时,从通用区130加载数据(DATA2),并且将数据(DATA2)提供给元数据生成器180以生成元数据。在该处理中,可能需要将存储在通用区130中的数据(DATA2)复制到除第一存储器设备110的缓冲区120之外的空间的操作。原因在于,与存储在主机访问区140中的数据不同,存储在通用区130中的数据(DATA2)不需要满足预定条件,并且可以具有不同的数据块大小或数据对齐大小的配置。
闪存接口190将从第一存储器设备110提供的数据(DATA2)和从元数据生成器180提供的元数据(META2)提供给第二存储器设备150。第二存储器设备150存储所提供的数据(DATA2)和元数据(META2)。
图11是示出了根据本发明构思的示例性实施例的包括数据存储设备的计算系统的框图。
参考图11,计算系统包括中央处理单元(CPU)1100、网络接口卡(NIC)1200以及连接到PCIe交换机1000的多个SSD 100_1到100_n。
NIC 1200可以接收来自外部源的数据。NIC 1200通过PCIe交换机1000连接到多个SSD 100_1至100_n。与图11所示的配置不同,通过直接连接到CPU 1100,NIC 1200还经由CPU 1100而连接到PCIe交换机1000。
多个SSD 100_1至100_n可以是上面参考图1至图10描述的本发明构思的数据存储设备100。因此,多个SSD 100_1至100_n中的每一个可以分别包括第一存储器设备110、第二存储器设备150和控制器160。
NIC 1200可以通过PCIe交换机1000直接访问SSD(例如,100_1)内的第一存储器设备110。NIC 1200可以将从外部源提供的数据存储在SSD 100_1的主机访问区140中。上述数据可以是符合预定条件(例如,数据块大小或数据对齐大小)的数据。
通过将由预定条件限制的数据存储在主机访问区140中,SSD100_1可以快速地执行元数据的生成和在第二存储器设备150中的存储。
尽管以上参考附图描述了本发明构思的示例性实施例,但是本公开所属技术领域的普通技术人员将理解,这些实施例可以以其他特定方式实现而不改变本公开的技术构思或基本特征。

Claims (20)

1.一种数据存储设备,包括:
第一存储器设备,其包括缓冲区,所述缓冲区包括通用区和主机访问区,其中,所述第一存储器设备能够由主机直接访问;
第二存储器设备;以及
控制器,其控制所述第一存储器设备或所述第二存储器设备以存储从所述主机接收到的数据,
其中,当从所述主机提供的数据符合预定条件时,所述控制器将所述数据存储在所述主机访问区中,并基于所述数据生成元数据。
2.根据权利要求1所述的数据存储设备,其中,所述控制器将存储在所述主机访问区中的数据与所述元数据一起存储在所述第二存储器设备中。
3.根据权利要求2所述的数据存储设备,其中,所述控制器不将存储在所述主机访问区中的数据存储在除所述第一存储器设备的缓冲区之外的区域中。
4.根据权利要求1所述的数据存储设备,其中,所述第一存储器设备将内核数据存储在所述通用区中,并且
所述第一存储器设备将应用数据或用户数据存储在所述主机访问区中。
5.根据权利要求1所述的数据存储设备,其中,所述第一存储器设备是易失性存储器,并且所述第二存储器设备是非易失性存储器。
6.根据权利要求1所述的数据存储设备,其中,所述缓冲区是控制器存储器缓冲区(CMB)。
7.根据权利要求1所述的数据存储设备,其中,所述元数据包括纠错码(ECC)。
8.根据权利要求1所述的数据存储设备,其中,当从所述主机接收到的数据不符合所述预定条件时,所述控制器将所述数据存储在所述通用区中。
9.根据权利要求8所述的数据存储设备,其中,所述控制器加载存储在所述通用区中的数据,基于所加载的数据生成元数据,并且将所加载的数据和所述元数据存储在所述第二存储器设备中。
10.一种数据存储设备,包括:
主机,其提供数据写命令和由所述数据写命令写入的数据;
驱动器,其存储从所述主机提供的数据;以及
交换机,其连接所述主机和所述驱动器,
其中,所述驱动器包括:
第一存储器设备,其包括缓冲区,所述缓冲区包括通用区和主机访问区,其中,所述第一存储器设备能够由所述主机直接访问;
第二存储器设备;以及
控制器,其控制所述第一存储器设备或所述第二存储器设备以存储从所述主机提供的数据,
其中,当从所述主机提供的数据符合预定条件时,所述控制器将所述数据存储在所述主机访问区中,并且基于所述数据生成元数据。
11.根据权利要求10所述的数据存储设备,其中,所述交换机包括外围组件互连高速(PCIe)交换机。
12.根据权利要求10所述的数据存储设备,其中,所述驱动器是固态驱动器(SSD)。
13.根据权利要求12所述的数据存储设备,其中,所述第一存储器设备是易失性存储器,并且所述第二存储器设备是非易失性存储器。
14.根据权利要求10所述的数据存储设备,其中,当从所述主机提供的数据不符合所述预定条件时,所述控制器将所述数据存储在所述通用区中。
15.根据权利要求14所述的数据存储设备,其中,所述控制器加载存储在所述通用区中的数据,基于所加载的数据生成元数据,并且将所加载的数据和所述元数据存储在所述第二存储器设备中。
16.一种操作数据存储设备的方法,所述方法包括:
由所述存储设备的控制器分配在所述数据存储设备的第一存储器设备中包括的缓冲区的第一部分作为通用区,并且分配所述缓冲区的第二部分作为主机访问区;
由所述控制器接收来自主机的写命令和数据,所述写命令包括所述第一存储器设备的地址;
当所述数据符合预定条件时,由所述控制器将所述数据存储在所述主机访问区中,并基于所述数据生成元数据;
当所述数据不符合所述预定条件时,由所述控制器将所述数据存储在所述第一存储器设备的通用区中;以及
由所述控制器将存储在所述主机访问区中的数据与所述元数据一起存储在第二存储器设备中。
17.根据权利要求16所述的方法,还包括:
由所述控制器加载存储在所述第一存储器设备的通用区中的数据;
由所述控制器基于所加载的数据生成元数据;以及
由所述控制器将所加载的数据和所加载的数据的元数据存储在所述第二存储器设备中。
18.根据权利要求16所述的方法,其中,存储在所述主机访问区中的数据不被存储在除所述第一存储器设备的缓冲区之外的区域中。
19.根据权利要求16所述的方法,其中,所述缓冲区是控制器存储器缓冲区(CMB)。
20.根据权利要求19所述的方法,其中,所述元数据包括纠错码(ECC)。
CN201811272545.2A 2017-11-01 2018-10-29 数据存储设备及其操作方法 Active CN109753238B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170144846A KR102281966B1 (ko) 2017-11-01 2017-11-01 데이터 스토리지 장치 및 그 동작 방법
KR10-2017-0144846 2017-11-01

Publications (2)

Publication Number Publication Date
CN109753238A CN109753238A (zh) 2019-05-14
CN109753238B true CN109753238B (zh) 2023-12-22

Family

ID=66244952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811272545.2A Active CN109753238B (zh) 2017-11-01 2018-10-29 数据存储设备及其操作方法

Country Status (3)

Country Link
US (1) US10490237B2 (zh)
KR (1) KR102281966B1 (zh)
CN (1) CN109753238B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309077B (zh) * 2019-06-28 2021-06-11 清华大学 主机与设备协同工作的闪存转换层构建方法及装置
KR20230072886A (ko) * 2021-11-18 2023-05-25 에스케이하이닉스 주식회사 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101965559A (zh) * 2007-12-27 2011-02-02 普莱恩特技术股份有限公司 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152542A (ja) 2008-12-24 2010-07-08 Toshiba Corp メモリシステム
KR101717081B1 (ko) 2011-03-23 2017-03-28 삼성전자주식회사 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
JP2013222435A (ja) 2012-04-19 2013-10-28 Toshiba Corp 半導体記憶装置及びその制御方法
US9552297B2 (en) * 2013-03-04 2017-01-24 Dot Hill Systems Corporation Method and apparatus for efficient cache read ahead
KR102002921B1 (ko) 2012-12-05 2019-07-23 삼성전자주식회사 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
KR102011135B1 (ko) 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US20140258610A1 (en) * 2013-03-07 2014-09-11 Lsi Corporation RAID Cache Memory System with Volume Windows
US9208074B2 (en) 2013-08-30 2015-12-08 Silicon Motion, Inc. Updating address mapping in sub-intervals in a flash memory data storage device
KR20150055413A (ko) 2013-11-13 2015-05-21 에스케이하이닉스 주식회사 데이터 저장 장치
US10255188B2 (en) * 2014-03-17 2019-04-09 Vmware, Inc. Migrating workloads across host computing systems based on cache content usage characteristics
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US9703699B2 (en) * 2014-09-17 2017-07-11 Kabushiki Kaisha Toshiba Hybrid-HDD policy for what host-R/W data goes into NAND
US10025530B2 (en) * 2014-09-29 2018-07-17 Western Digital Technologies, Inc. Optimized garbage collection for solid-state storage devices
KR102466412B1 (ko) * 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101965559A (zh) * 2007-12-27 2011-02-02 普莱恩特技术股份有限公司 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器

Also Published As

Publication number Publication date
US10490237B2 (en) 2019-11-26
KR20190049231A (ko) 2019-05-09
CN109753238A (zh) 2019-05-14
US20190130947A1 (en) 2019-05-02
KR102281966B1 (ko) 2021-07-26

Similar Documents

Publication Publication Date Title
KR102530905B1 (ko) 메모리 시스템 및 그의 동작 방법
CN109426449B (zh) 存储器系统及其操作方法
US11354250B2 (en) Apparatus for transmitting map information in memory system
US11294597B2 (en) Apparatus and method for transferring internal data of memory system in sleep mode
KR20200043676A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11520694B2 (en) Data storage device and operating method thereof
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
KR20200122685A (ko) 메모리 시스템 내에서 서로 다른 종류의 데이터를 처리하기 위한 장치 및 방법
KR102373315B1 (ko) 메모리 시스템 및 그것의 동작방법
CN109753238B (zh) 数据存储设备及其操作方法
CN110389907B (zh) 电子装置
KR20210077230A (ko) 메모리 시스템의 동작 방법 및 장치
KR20210012641A (ko) 메모리 시스템, 데이터 시스템 및 그 동작방법
US10642531B2 (en) Atomic write method for multi-transaction
KR20200087487A (ko) 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
US20170329709A1 (en) Memory system having multiple cache pages and operating method thereof
KR20210152738A (ko) 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법
KR20210038096A (ko) 메모리 시스템, 데이터 시스템 및 그 동작방법
KR20210045114A (ko) 메모리 블록을 효율적으로 관리할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법
KR102389542B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20210026832A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법
US11422889B2 (en) Memory system and controller for storing map data of volatile memory into nonvolatile memory device during power off operation
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
US9652378B2 (en) Writing method, memory controller and memory storage device
KR102422032B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

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