CN112711377A - 分布式存储***的存储节点及其操作方法 - Google Patents

分布式存储***的存储节点及其操作方法 Download PDF

Info

Publication number
CN112711377A
CN112711377A CN202010881403.7A CN202010881403A CN112711377A CN 112711377 A CN112711377 A CN 112711377A CN 202010881403 A CN202010881403 A CN 202010881403A CN 112711377 A CN112711377 A CN 112711377A
Authority
CN
China
Prior art keywords
data
memory
block
block group
write
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
CN202010881403.7A
Other languages
English (en)
Other versions
CN112711377B (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.)
Industry Academic Cooperation Foundation of Yonsei University
SK Hynix Inc
Original Assignee
Industry Academic Cooperation Foundation of Yonsei University
SK Hynix 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 Industry Academic Cooperation Foundation of Yonsei University, SK Hynix Inc filed Critical Industry Academic Cooperation Foundation of Yonsei University
Publication of CN112711377A publication Critical patent/CN112711377A/zh
Application granted granted Critical
Publication of CN112711377B publication Critical patent/CN112711377B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1064Adding 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 cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请提供一种分布式存储***的存储节点及其操作方法。一种存储器控制器可以包括:数据控制器,被配置成接收来自主机的写入请求和与该写入请求相对应的写入数据,并且被配置成基于写入请求中包括的块组类型信息,确定待存储写入数据的存储块的物理地址;存储器控制组件,被配置成将用于指示存储块存储写入数据的编码命令、物理地址和写入数据提供到存储器装置,其中块组类型信息是关于写入数据指示数据块组的类型还是编码块组的类型的信息,数据块组和编码块组是由主机对原始数据执行擦除编码操作生成的。

Description

分布式存储***的存储节点及其操作方法
相关申请的交叉引用
本申请要求于2019年10月25日提交的申请号为10-2019-0134130的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
本公开的各个实施例总体涉及一种电子装置,并且更特别地,涉及一种分布式存储***的存储节点以及操作存储节点的方法。
背景技术
随着技术的发展,发生了所谓的“数据***”,表明待存储的数据量迅速增加。因此,能够存储大量数据的并行文件***和分布式存储***被广泛应用于数据中心和高性能计算,并且大容量存储***与所有存储***的比率已逐渐增加,这说明了大容量存储***的重要性。
分布式存储***是一种用于响应于意外的存储错误和失败而复制并存储相同数据以便使用校正方法来恢复数据的方案,从而保证数据的可靠性。分布式存储***的示例有Panasas、并行虚拟文件***(PVFS)、IBM通用并行文件***(GPFS)、Lustre、Ceph等。
存储装置可以是分布式存储***的存储节点。存储装置可以包括存储数据的存储器装置和控制存储器装置的存储器控制器。存储器装置被分类为易失性存储器装置和非易失性存储器装置。
发明内容
本公开的各个实施例针对一种可以更高效地管理数据的分布式存储***的存储节点以及操作该存储节点的方法。
本公开的实施例可以提供一种控制存储器装置的操作的存储器控制器。该存储器控制器可以包括:数据控制器,被配置成接收请求存储器装置存储来自主机的写入数据的写入请求,并且基于写入请求中包括的块组类型信息,确定待存储写入数据的存储块的物理地址;以及存储器控制组件,被配置成将用于指示存储块存储写入数据的编程命令、物理地址以及写入数据提供到存储器装置,其中该块组类型信息指示写入数据的类型为数据块组或编码块组中的一种,数据块组和编码块组是由主机对原始数据执行擦除编码操作生成的。
本公开的实施例可以提供一种控制存储器装置的操作的存储器控制器。该存储器控制器可以包括:数据控制器,被配置成接收请求存储器装置存储来自主机的写入数据的写入请求;错误校正电路,被配置成基于写入请求中包括的块组类型信息,对写入数据执行错误校正编码操作;以及存储器控制组件,被配置成向存储器装置提供用于指示待存储在存储器装置中的经编码的写入数据的编程命令,其中该块组类型信息指示写入数据的类型,其为数据块组和编码块组中的一种,数据块组和编码块组是由主机对原始数据执行擦除编码操作生成的。
本公开的实施例可以提供一种操作存储器控制器的方法,该存储器控制器从主机接收写入数据和写入请求并且控制存储器装置的操作。该方法可以包括:基于写入请求中包括的块组类型信息,确定写入数据是数据块组还是编码块组;根据写入数据是数据块组还是编码块组,对写入数据执行第一错误校正和第二错误校正中的一种;并且控制该存储器装置,以便根据写入数据是数据块组还是编码块组,将写入数据存储在存储器装置中包括的第一存储块和第二存储块中的一个中。
本公开的实施例可以提供一种操作方法,包括控制存储器装置以:响应于包括指示作为数据块组和编码块组中的一个的随附写入数据的写入请求,将数据块组和编码块组分别存储在第一存储单元和第二存储单元中,该第一存储单元的存储密度大于第二存储单元的存储密度;先于第一存储单元,选择第二存储单元作为用于垃圾收集操作的牺牲存储单元;并且先于第二存储单元,选择第一存储单元作为用于读取回收操作的目标存储单元,其中数据块组和编码块组是对原始数据进行擦除编码的结果。
附图说明
图1是示出分布式存储***的配置的示图。
图2是示出诸如图1的存储节点的存储节点的示图。
图3是示出根据本公开的实施例的包括在存储节点中的主机的操作的示图。
图4是示出诸如图3的数据处理器的数据处理器的操作的示图。
图5是示出图4的数据处理器的擦除编码操作的示图。
图6是示出根据本公开的实施例的存储器控制器的配置的示图。
图7是示出根据本公开的实施例的存储器控制器和存储器装置的操作的示图。
图8是示出根据本公开的实施例的存储节点中的主机的操作的流程图。
图9是示出根据本公开的实施例的存储器控制器的操作的流程图。
图10是示出诸如图2的存储器装置的存储器装置的结构的示图。
图11是示出诸如图2的存储器控制器的存储器控制器的实施例的示图。
图12是示出应用了根据本公开的实施例的存储装置的存储卡***的框图。
图13是示出应用了根据本公开的实施例的存储装置的固态驱动器(SSD)***的框图。
图14是示出应用了根据本公开的实施例的存储装置的用户***的框图。
具体实施方式
在本说明书或本申请中引入的本公开的实施例中的特定结构或功能性描述仅用于描述本公开的实施例。该描述不应该被解释为受限于本说明书或本申请中描述的实施例。
在下文中,将参照附图,基于本公开的各个实施例详细地描述本公开。下面将参照附图详细地描述本公开的实施例。
图1是示出分布式存储***的配置的示图。
参照图1,根据本公开的实施例的分布式存储***可以包括客户端组20、网络30和存储组40。客户端组20可以包括多个客户端。在实施例中,每个客户端可以是具有通信功能的电子装置。例如,客户端可以包括以下中的至少一种:智能电话、平板电脑(PC)、移动电话、视频电话、电子书阅读器、台式PC、膝上型PC、笔记本电脑、个人数字助理(PDA)、便携式多媒体播放器(PMP)、MP3播放器、移动医疗器械、相机和可穿戴装置(例如,诸如电子眼镜、电子服装、电子手链、电子项链、电子配件(即,应用配件)、电子纹身或智能手表的头戴式装置(HMD))。
客户端可以通过网络30提供作为待存储在存储组40中的数据的原始数据。客户端组20可以通过文件***接口提供文件操作处理,并且存储组40可以存储并管理从客户端组20接收的原始数据。网络30可以支持能够发送/接收消息的诸如以太网或无限带宽的通信协议。
存储组40可以包括多个存储节点。每个存储节点可以包括处理通过网络30接收的数据的主机和存储由主机处理的数据的存储装置。每个存储节点可以通过网络30接收由相应的客户端提供的原始数据。在实施例中,网络30可以通过无线或有线通信网络相互传送客户端组20和存储组40之间交换的数据。
包括在存储节点中的主机可以执行擦除编码以确保接收到的原始数据的可靠性。而且,主机可以将循环冗余校验(CRC)码添加到已经执行擦除编码的数据。主机可以控制相应的存储装置,使得其中添加了CRC码且已经执行擦除编码的数据存储在存储装置中。
当已经执行擦除编码时,可以从原始数据生成数据块组和编码块组。数据块组可以是通过将接收到的原始数据划分为多个块组从而以分布式方式存储并管理原始数据而生成的数据。
编码块组可以是包括用于标识数据块组的逻辑地址或用于将数据块组解码为原始数据的信息的数据。
当在分布式存储***的存储节点中执行擦除编码时,可能会发生频繁的上下文切换、频繁的I/O操作和高网络流量以及中央处理单元(CPU)的高使用率。为了解决这种问题,根据本公开的实施例的存储节点可以执行控制,使得对通过擦除编码生成的数据块组和编码块组执行使用不同的错误校正码的编码和解码,从而将该数据块组和该编码块组存储在不同的存储块中。在下文中,将参照图2详细地描述根据本公开的实施例的存储组40。
图2是示出诸如图1的存储节点的存储节点的示图。
参照图2,存储节点400可以包括主机300和存储装置50。
主机300可以通过网络接收数据。主机300可以控制存储装置50,以便将接收到的数据存储在存储装置50中。主机300可以使用诸如以下通信方法的各种通信方法中的至少一种与存储装置50通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机***接口(SCSI)、***组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)。
在实施例中,主机300可以包括数据收发器310、数据处理器320和写入请求生成器330。
数据收发器310可以通过网络从参照图1描述的客户端接收原始数据。数据收发器310可以将接收到的原始数据提供到数据处理器320。数据收发器310可以获取存储在存储装置50中的数据,并且可以通过网络将获取的数据提供到客户端。
数据处理器320可以从数据收发器310接收原始数据,并且可以对原始数据执行擦除编码。在实施例中,擦除编码可以是使用里德-所罗门(RS)码执行的编码。擦除编码可以是一种编码方案,通过该方案将已经执行编码的数据的大小变得比原始数据的大小更小。数据处理器320可以通过对原始数据执行擦除编码来生成多个数据块组和多个编码块组。
每当数据块组中的任意一个被更新时,多个编码块组可以被更新。当对数据块组中的任意一个的读取操作失败时,可以读取多个编码块组。其原因是,编码块组是用于恢复失败数据块组的数据。
在实施例中,数据处理器320可以进一步执行将CRC码添加到作为执行擦除编码的结果的数据块组和编码块组的操作。CRC码可以是用于在串行传输方案中验证数据的可靠性的错误检测方法。当将添加了CRC码的数据提供到存储装置50时,存储装置50可以接收经添加CRC码的数据,然后可以对接收到的数据执行CRC解码。
写入请求生成器330可以从数据处理器320接收写入数据,然后可以生成写入请求。写入请求生成器330可以将写入请求和写入数据提供到存储装置50。
写入数据可以指示作为由数据处理器320执行的擦除编码的结果的数据块组和编码块组。可选地,在实施例中,写入数据可以是CRC码添加到数据块组和编码块组的数据。写入请求生成器330可以向存储装置50提供指示待存储在存储装置50中的写入数据的类型是数据块组或编码块组的块组类型信息。例如,写入请求生成器330可以生成包括指示与该写入请求相对应的写入数据是数据块组还是编码块组的块组类型信息的写入请求。写入请求生成器330可以将所生成的写入请求和写入数据提供到存储装置50。
存储装置50可以包括存储器装置100和存储器控制器200。存储装置50可以是一种在主机300的控制下存储数据的装置。根据作为与主机300通信的方案的主机接口,存储装置50可以被制造为各种类型的数据存储装置中的任意一种。例如,存储装置50可以被实施为例如以下的各种类型的存储装置中的任意一种:固态驱动器(SSD),诸如MMC、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)或微型MMC的多媒体卡,诸如SD、迷你SD或微型SD的安全数字卡,通用串行总线(USB)存储装置,通用闪存(UFS)装置,个人计算机存储卡国际协会(PCMCIA)卡型存储装置,***组件互连(PCI)卡型存储装置,高速PCI(PCI-E)卡型存储装置,紧凑型闪存(CF)卡,智能媒体卡和记忆棒。
存储装置50可以被制造为各种类型的封装形式中的任意一种。例如,存储装置50可以被制造为诸如堆叠封装(POP)、***级封装(SIP)、片上***(SOC)、多芯片封装(MCP)、板上芯片(COB)、晶圆级制造封装(WFP)和晶圆级堆叠封装(WSP)的各种类型的封装形式的任意一种。
存储器装置100可以存储数据。存储器装置100可以响应于存储器控制器200的控制而进行操作。存储器装置100可以包括存储器单元阵列,存储器单元阵列包括存储数据的多个存储器单元。
每个存储器单元可以作为能够存储一个数据位的单层单元(SLC)或能够存储两个或更多个数据位的多层单元(MLC)中的任意一种而进行操作。例如,多层单元可以指能够存储两个数据位的MLC、能够存储三个数据位的三层单元(TLC)、能够存储四个数据位的四层单元(QLC)以及能够存储五个或更多个数据位的存储器单元。
存储器单元阵列可以包括多个存储块。每个存储块可以包括多个存储器单元。存储块可以是用于擦除存储在存储器装置100中的数据的单位。在实施例中,每个存储块可以包括多个页面。每个页面可以是用于将数据存储在存储器装置100中或读取存储在存储器装置100中的数据的单位。
在实施例中,存储器装置100可以采取诸如以下的许多替代形式:双倍数据速率同步动态随机存取存储器(DDR SDRAM)、低功率双倍数据速率***(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)SDRAM、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器装置、电阻式RAM(RRAM)、相变随机存取存储器(PRAM)、磁阻RAM(MRAM)、铁电RAM(FRAM)、或自旋转移力矩RAM(STT-RAM)。在本说明书中,为了便于描述,将对作为NAND闪速存储器的存储器装置100进行描述。
存储器装置100可以从存储器控制器200接收命令和地址,并且可以访问由地址选择的存储器单元阵列中的区域。也就是说,存储器装置100可以对由地址选择的区域执行与接收到的命令相对应的操作。例如,存储器装置100可以执行编程操作、读取操作和擦除操作。编程操作可以是将数据存储在存储器装置100中包括的存储器单元中的操作。存储器装置100可以响应于从存储器控制器200接收到的编程命令而执行将数据存储在由地址选择的区域中的编程操作。读取操作可以是使用读取电压感测存储在存储器单元中的数据的操作。存储器装置100可以响应于从存储器控制器200接收到的读取命令而感测存储在由地址选择的区域中的数据。擦除操作可以是删除存储在存储器单元中的数据的操作。存储器装置100可以响应于从存储器控制器200接收到的擦除命令而擦除存储在由地址选择的区域中的数据。在实施例中,擦除存储在存储器单元中的数据可能是降低存储器单元的阈值电压的操作,使得存储器单元的阈值电压属于与擦除状态相对应的阈值电压分布。
存储器控制器200可以控制存储器装置100的全部操作。
当将电力供应到存储装置50时,存储器控制器200可以运行先前存储的固件(FW)。当存储器装置100是闪速存储器装置时,存储器控制器200可以运行诸如闪存转换层(FTL)的固件,以控制主机300与存储器装置100之间的通信。
在实施例中,存储器控制器200可以包括数据控制器210、错误校正电路220和存储器控制组件230。
数据控制器210可以从主机300接收写入数据和写入请求。从主机300接收到的写入请求可以包括数据标识信息,该数据标识信息是指示与写入请求相对应的写入数据是数据块组还是编码块组的信息。
例如,写入请求可以包括用于识别写入数据和写入数据的块组类型信息的逻辑地址(LA)。当输入写入请求时,数据控制器210可以从主机300接收待存储的写入数据。数据控制器210可以生成映射数据,其中输入逻辑地址被映射到指示存储器装置100中包括的存储器单元之中的、待存储写入数据的存储器单元的物理地址的物理地址(PA)。此处,数据控制器210可以基于块组类型信息确定待存储写入数据的物理地址。
也就是说,数据控制器210可以将写入数据的逻辑地址映射到物理地址,以便根据写入数据是对应于编码块组还是数据块组,将从主机输入的写入数据存储在不同的存储块中。
数据控制器210可以将逻辑地址映射到物理地址,以便将数据块组存储在使用MLC(即,能够存储两位或更多位)方案编程的存储块中,并且可以将逻辑地址映射到物理地址,以便将编码块组存储在使用SLC方案编程的存储块中。在实施例中,存储在存储编码块组的存储块中包括的存储器单元中的数据位的数量可以比存储在存储数据块组的存储块中包括的存储器单元中的数据位的数量少。
对数据块组的读取请求的数量可能比对编码块组的读取请求的数量更大。相反,对编码块组执行的更新的数量可比对数据块组执行的更新的数量更大。因此,优点在于,如上所述,当将数据块组和编码块组存储在不同的存储块中时,可以使待对其中存储编码块组的存储块执行读取回收操作的数量最小化。
进一步地,当在对其中存储数据块组的存储块执行读取回收操作或垃圾收集操作的同时请求对数据块组的读取操作时,存储装置可以通过读取编码块组并且将所读取的编码块组提供到主机,执行来自以上参照图1所描述的客户端的读取请求,而不是执行读取相应数据块组的操作。这是由于擦除编码方案(例如,里德-所罗门码)的特征,该擦除编码方案能够使得只要存在预设数量的块组就可以恢复原始数据,而不管块组的类型如何。
错误校正电路220可以使用错误校正码对待存储在存储器装置100中的数据执行编码操作。错误校正电路220可以使用错误校正码执行解码操作,以校正从存储器装置100读取(获取)的数据中包含的错误位。错误校正电路220可以使用低密度奇偶数校验(LDPC)码、博斯-查德胡里-霍昆格姆(BCH)码、turbo码、里德-所罗门码、卷积码、递归***码(RSC)、或诸如网格编码调制(TCM)和分组编码调制(BCM)的编码调制、或汉明码来执行错误校正解码操作。
根据本公开的实施例,错误校正电路220可以使用不同类型的错误校正码对数据块组和编码块组执行错误校正编码操作。例如,错误校正电路220可以使用具有相对大的错误校正能力的错误校正码对编码块组进行编码。错误校正电路220可以使用具有相对小的错误校正能力的错误校正码对数据块组进行编码。例如,错误校正电路220可以使用BCH码对数据块组进行编码,并且可以使用LDPC码对编码块组进行编码。
对编码块组的读取请求的数量可能比对数据块组的读取请求的数量更少。因此,存储编码块组的存储器单元的电荷泄漏程度可能比存储数据块组的存储器单元的电荷泄漏程度更大。因此,应该保证编码块组的更高的可靠性。根据本公开的实施例,编码块组的可靠性可以通过将具有相对高的错误校正能力的错误校正码应用于编码块组来保证。
在各个实施例中,错误校正电路220可以对数据块组和编码块组执行不同的错误校正。例如,错误校正电路220可以仅对编码块组执行错误校正,而不对数据块组执行错误校正。
存储器控制组件230可以将编程数据、物理地址和编程命令提供到存储器装置100。由存储器控制组件230提供的编程命令可以是用于指示存储器装置响应于从主机接收到的写入请求来执行编程操作的命令。编程数据可以是已经由错误校正电路220完成错误校正编码的数据。
图3是示出根据本公开的实施例的包括在存储节点中的主机的操作的示图。
参照图3,主机300可以包括数据收发器310、数据处理器320和写入请求生成器330。
数据收发器310可以如参照图1所描述的通过网络从客户端接收原始数据。在下文中,数据收发器310可以将接收到的原始数据提供到数据处理器320。
数据处理器320可以从数据收发器310接收原始数据,并且可以对原始数据执行擦除编码。其中已经对原始数据执行擦除编码的数据可以是写入数据。数据处理器320可以将写入数据提供到写入请求生成器330。写入数据可以是其中将CRC码添加到通过对原始数据执行擦除编码而生成的数据块组和编码块组的数据。在实施例中,CRC码的添加可以被省略。擦除编码可以是将原始数据划分为容量比原始数据的容量更小的多个块组的操作。
写入请求生成器330可以从数据处理器320接收写入数据,生成写入请求,并且将写入数据和写入请求输出到存储器控制器200。当生成写入请求时,写入请求生成器330还可以生成写入请求中包括的一个或多个位中的写入数据的块组类型信息。也就是说,写入请求可以包括用于识别相应的写入数据和写入数据的块组类型信息的逻辑地址(LA)。块组类型信息可以对应于指示通过擦除编码生成的写入数据是数据块组还是编码块组的信息。
图4是示出诸如图3的数据处理器的数据处理器的操作的示图。
参照图4,数据处理器320可以包括块组生成器321和CRC码处理器322。
块组生成器321可以从数据收发器310接收原始数据,并且可以对原始数据执行擦除编码。例如,块组生成器321可以使用里德-所罗门(RS)码对原始数据进行编码。当已经执行擦除编码时,可以生成多个数据块组和多个编码块组。在各个实施例中,块组生成器321可以将原始数据划分为六个数据块组和三个编码块组,或者划分为十个数据块组和四个编码块组。在本说明书中,描述了执行擦除编码以便将原始数据划分为六个数据块组和三个编码块组的示例。可以将生成的数据块组和编码块组输出到CRC码处理器322。
CRC码处理器322可以从块组生成器321接收数据块组和编码块组,然后可以使用CRC码来执行编码操作。CRC码可以对应于用于在串行传输方案中验证数据的可靠性的错误检测方法。在实施例中,使用CRC码的编码操作可以被省略。
图5是示出图4的数据处理器的擦除编码操作的示图。
参照图5,数据处理器320可以通过执行擦除编码将原始数据划分为多个数据块组D1至D6和多个编码块组C1至C3。擦除编码可以包括各种类型,诸如作为擦除编码的一种类型的RS码,并且根据划分而得到的数据块组和编码块组的数量还可以包括各种类型。在图5的实施例中,示出了使用RS(6,3)里德-所罗门码执行的将原始数据划分为六个数据块组和三个编码块组的擦除编码的结果。当数据块组中的任意一个待进行更新时,则重新执行使用RS码的编码,因此可以更新所有编码块组。
图6是示出根据本公开的实施例的存储器控制器的配置的示图。
参照图6,存储器控制器200可以包括数据控制器210、错误校正电路220和存储器控制组件230。
数据控制器210可以从主机300接收写入数据和写入请求,并且可以基于分配到写入请求的一个或多个位的块组类型信息来控制相应的写入数据的错误校正。如上所述,由于对编码块组的读取请求的数量比对数据块组的读取请求的数量更少,因此在编码块组中发生保留的可能性可能比数据块组中的更大,其中电子由于隧穿而逐渐从编码块组中逸出并且随着时间流逝而丢失数据。因此,需要对编码块组执行错误校正,这需要比数据块组更高的可靠性。因此,当将写入数据提供到错误校正电路220时,数据控制器210可以将数据块组和编码块组输出到待由错误校正电路220对其执行不同的错误校正操作的各个区域。由于对编码块组的错误校正可能需要比对数据块组的错误校正更高的可靠性,因此可以使用能够校正大量错误位的错误校正码。
数据控制器210可以从主机300接收写入数据和写入请求,并且可以控制数据的存储,以便基于分配到写入请求的一个或多个位的块组类型信息来将相应的写入数据存储在不同的存储块中。例如,数据控制器210可以基于块组类型信息,输出与不同的存储块相对应的物理地址。
从数据更新的角度来看,当用新数据更新指示相同原始数据的数据块组中的至少一个数据块组时,可以更新编码块组。也就是说,编码块组可能比数据块组更频繁地更新。因此,先前的编码块组可能是无效的编码块组,而新的编码块组可能是有效的编码块组。因此,当将存储编码块组的存储块分配为与存储数据块组的存储块所不同的块时,在执行垃圾收集操作时优先选择存储编码块组的存储块作为牺牲块,并且因此可以减少搜索牺牲块所需的延迟时间。
从读取操作的角度来看,数据块组可能比编码块组更频繁地被读取。因此,对存储数据块组的存储块执行的读取操作的平均次数可能比对存储编码块组的存储块执行的读取操作的平均次数更大。可以对对其的读取操作的平均次数较大的存储块执行读取回收操作,该读取回收操作读取存储在单个存储块中的数据,通过存储器控制器校正读取数据中的错误,并且将经校正错误的数据写入到另一存储块。因此,可以先于存储编码块组的存储块对存储数据块组的存储块执行读取回收操作。在读取回收操作期间,可以优先地对存储数据块组的存储块执行读取回收操作,并且因此可以减少待对存储编码块组的存储块执行的读取回收操作的次数。
图7是示出根据本公开的实施例的存储器控制器和存储器装置的操作的示图。
参照图7,数据控制器210可以将数据块组和编码块组分别分配到错误校正电路220的不同的错误校正组件。如上所述,由于在编码块组中出现保留的可能性比在数据块组中的更大,因此需要执行具有更高可靠性的错误校正。因此,数据控制器210可以将数据块组输出到第一错误校正组件221,并且可以将编码块组输出到第二错误校正组件222。由第二错误校正组件222执行的错误校正可以是比由第一错误校正组件221执行的错误校正具有更高可靠性的错误校正。例如,第一错误校正组件221可以使用BCH码来执行错误校正,并且第二错误校正组件222可以使用LDPC码来执行错误校正。可以将已经由第一错误校正组件221和第二错误校正组件222对其执行错误校正解码的数据作为编程数据提供到存储器控制组件230。
在实施例中,数据控制器210可以控制数据的存储,以便基于写入请求中包括的块组类型信息,根据写入数据是数据块组还是编码块组来将写入数据存储在不同的存储块中。例如,数据控制器210可以基于块组类型信息,输出与不同的存储块相对应的物理地址。例如,存储器控制器200可以控制存储器装置100,以便将数据块组存储在第一块、第二块和第四块中,并且将编码块组存储在第三块中。
图8是示出根据本公开的实施例的存储节点中的主机的操作的流程图。
参照图8,在步骤S801,主机可以从客户端接收原始数据。
在步骤S803,主机可以通过对原始数据执行擦除编码来生成多个数据块组和编码块组。擦除编码可以是将原始数据划分为多个块组以确保原始数据的可靠性的操作。
在步骤S805,主机可以将CRC码添加到所生成的数据块组和编码块组。循环冗余校验(CRC)码可以对应于用于在串行传输方案中验证数据的可靠性的错误检测方法。
在步骤S807,主机可以生成包括块组类型信息的写入请求。例如,写入请求可以包括使得能够识别写入数据的逻辑地址和块组类型信息。主机可以将相应的写入数据的块组类型信息分配到写入请求的一个或多个冗余位。块组类型信息可以是指示写入数据是数据块组还是编码块组的信息。
在步骤S809,主机可以将写入请求和写入数据输出到存储装置。主机可以通过将相应的写入数据的块组类型信息分配到写入请求并且输出写入请求以及写入数据,来请求存储装置基于块组类型执行不同的操作。
图9是示出根据本公开的实施例的存储器控制器的操作的流程图。
参照图9,在步骤S901,存储器控制器可以从主机接收写入请求。写入请求可以包括使得能够识别写入数据的逻辑地址和块组类型信息。
在步骤S903,存储器控制器可以从主机接收待存储的写入数据。写入数据可以对应于已经对由主机从客户端接收到的原始数据执行擦除编码和CRC的数据。在实施例中,可以省略CRC。因此,写入数据可以对应于数据块组和编码块组中的任意一个。
在步骤S905,存储器控制器可以确定接收到的写入数据是数据块组还是编码块组。例如,存储器控制器可以基于写入请求的一个或多个冗余位中包括的块组类型信息来确定写入数据是数据块组还是编码块组。当输入的写入数据是数据块组时(在步骤S905为是),进程可以进行到步骤S907。当输入的写入数据是编码块组时(在步骤S905为否),进程可以进行到步骤S911。
在步骤S907,存储器控制器可以对与数据块组相对应的写入数据执行第一错误校正。在步骤S911,存储器控制器可以对与编码块组相对应的写入数据执行第二错误校正。例如,存储器控制器可以使用BCH码对数据块组执行错误校正编码,并且可以使用LDPC码对编码块组执行错误校正解码。
在步骤S909,存储器控制器可以将用于识别与数据块组相对应的写入数据的逻辑地址映射到与存储器装置的第一区域相对应的物理地址。在步骤S913,存储器控制器可以将用于识别与编码块组相对应的写入数据的逻辑地址映射到与存储器装置的第二区域相对应的物理地址。第一区域可以指示存储数据块组的存储块。第二区域可以指示存储编码块组的存储块。
在步骤S915,存储器控制器可以生成与从主机接收到的写入请求相对应的编程命令。编程命令可以是控制存储器装置从而使存储器装置执行将输入数据存储在由输入的物理地址所选择的区域中的编程操作的命令。
在步骤S917,存储器控制器可以将编程数据、物理地址和编程命令输出到存储器装置。
图10是示出诸如图2的存储器装置的存储器装置的结构的示图。
参照图10,存储器装置100可以包括存储器单元阵列110、***电路120和控制逻辑130。
存储器单元阵列110包括多个存储块BLK1至BLKz。多个存储块BLK1至BLKz通过行线RL联接到行解码器121。存储块BLK1至BLKz中的每个存储块可以通过位线BL1至BLn联接到页面缓冲器组123。存储块BLK1至BLKz中的每个存储块可以包括多个存储器单元。在实施例中,多个存储器单元可以是非易失性存储器单元。联接到相同字线的存储器单元可以被定义为单个页面。因此,单个存储块可以包括多个页面。
行线RL可以包括至少一条源极选择线、多条字线和至少一条漏极选择线。
包括在存储器单元110中的每个存储器单元可以被实施为能够存储一个数据位的单层单元(SLC)或能够存储两个或更多个数据位的多层单元(MLC)。如上所述,MLC可以指能够存储两个数据位的MLC、能够存储三个数据位的三层单元(TLC)、能够存储四个数据位的四层单元(QLC)或能够存储五个或更多个数据位的存储器单元。
***电路120可以在控制逻辑130的控制下对存储器单元阵列110的所选择的区域执行编程操作、读取操作或擦除操作。***电路120可以驱动存储器单元阵列110。例如,***电路120可以在控制逻辑130的控制下向行线RL和位线BL1至BLn施加各种操作电压或使所施加的电压放电。
***电路120可以包括行解码器121、电压生成器122、页面缓冲器组123、列解码器124和输入/输出电路125。
行解码器121通过行线RL联接到存储器单元阵列110。行线RL可以包括至少一条源极选择线、多条字线和至少一条漏极选择线。在实施例中,字线可以包括普通字线和虚设字线。在实施例中,行线RL可以进一步包括管道选择线。
行解码器121可以在控制逻辑130的控制下进行操作。行解码器121可以从控制逻辑130接收行地址RADD。
行解码器121可以对行地址RADD进行解码。行解码器121根据经解码的行地址选择存储块BLK1至BLKz中的至少一个存储块。进一步地,行解码器121可以选择所选择的存储块的至少一条字线WL,从而根据经解码的地址将由电压生成器122生成的电压施加到至少一条字线WL。
例如,在编程操作期间,行解码器121可以将编程电压施加到所选择的字线,并且将具有比编程电压更低的电平的编程通过电压施加到未选择的字线。在编程验证操作期间,行解码器121可以将验证电压施加到所选择的字线,并且将比验证电压更高的验证通过电压施加到未选择的字线。在读取操作期间,行解码器121可以将读取电压施加到所选择的字线,并且将比读取电压更高的读取通过电压施加到未选择的字线。
在实施例中,存储器装置100的擦除操作基于存储块而执行。在擦除操作期间,行解码器121可以根据经解码的地址选择一个存储块。在擦除操作期间,行解码器1421可以将接地电压施加到联接到所选择的存储块的字线。
电压生成器122可以在控制逻辑130的控制下进行操作。电压生成器122可以使用提供到存储器装置100的外部电源电压来生成多个电压。详细地,电压生成器122可以响应于操作信号OPSIG而生成用于编程操作、读取操作和擦除操作的各种操作电压Vop。例如,电压生成器122可以在控制逻辑130的控制下生成编程电压、验证电压、通过电压、读取电压、擦除电压等。
在实施例中,电压生成器122可以通过调节外部电源电压来生成内部电源电压。由电压生成器122生成的内部电源电压被用作存储器装置100的操作电压。
在实施例中,电压生成器122可以使用外部电源电压或内部电源电压来生成多个电压。
例如,电压生成器122可以包括用于接收内部电源电压的多个泵浦电容器,并且在控制逻辑130的控制下通过选择性地启用多个泵浦电容器来生成多个电压。
可以通过行解码器121将所生成的电压供应到存储器单元阵列110。
页面缓冲器组123包括第一至第n页面缓冲器PB1至PBn。第一至第n页面缓冲器PB1至PBn通过第一至第n位线BL1至BLn联接到存储器单元阵列110。第一至第n页面缓冲器PB1至PBn在控制逻辑130的控制下进行操作。详细地,第一至第n页面缓冲器PB1至PBn可以响应于页面缓冲器控制信号PBSIGNALS而进行操作。例如,在读取操作或验证操作期间,第一至第n页面缓冲器PB1至PBn可以临时存储通过第一至第n位线BL1至BLn接收的数据,或者可以感测第一至第n位线BL1至BLn中的电压或电流。
详细地,在编程操作期间,当将编程脉冲施加到所选择的字线时,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn将通过输入/输出电路125接收的数据DATA传送到所选择的存储器单元。基于所接收的数据DATA来对所选择的页面中的存储器单元进行编程。联接到施加有编程许可电压(例如,接地电压)的位线的存储器单元可以具有增加的阈值电压。联接到施加有编程禁止电压(例如,电源电压)的位线的存储器单元的阈值电压可以被维持。在编程验证操作期间,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn从所选择的存储器单元读取页面数据。
在读取操作期间,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn从所选择的页面的存储器单元中读取数据DATA,并且可以在列解码器124的控制下将读取的数据DATA输出到输入/输出电路125。
在擦除操作期间,第一至第n页面缓冲器PB1至PBn可以使第一至第n位线BL1至BLn浮置。
列解码器124可以响应于列地址CADD,在输入/输出电路125和页面缓冲器组123之间传送数据。例如,列解码器124可以通过数据线DL与第一至第n页面缓冲器PB1至PBn交换数据,或者可以通过列线CL与输入/输出电路125交换数据。
输入/输出电路125可以将从上文参照图2描述的存储器控制器200接收到的命令CMD和地址ADDR传送到控制逻辑130,或者可以与列解码器124交换数据DATA。
在读取操作或验证操作期间,感测电路126可以响应于使能位VRYBIT生成参考电流,并且可以将从页面缓冲器组123接收的感测电压VPB与由参考电流生成的参考电压进行比较,然后输出通过信号PASS或失败信号FAIL。
控制逻辑130可以响应于命令CMD和地址ADDR,通过输出操作信号OPSIG、行地址RADD、页面缓冲器控制信号PBSIGNALS和使能位VRYBIT来控制***电路120。另外,控制逻辑130可以响应于通过信号或失败信号PASS或FAIL来确定验证操作是已通过还是已失败。
图11是示出诸如图2的存储器控制器的存储器控制器的实施例的示图。
参照图11,存储器控制器1000联接到主机Host和存储器装置。响应于来自主机Host的请求,存储器控制器1000可以访问存储器装置。存储器控制器1000可以提供存储器装置和主机Host之间的接口。存储器控制器1000可以运行固件,用于控制存储器装置。
存储器控制器1000可以包括处理器1010、存储器缓冲器1020,错误校正电路(ECC)1030、主机接口1040、缓冲器控制电路1050、存储器接口1060和总线1070。
总线1070可以提供存储器控制器1000的组件之间的通道。
处理器1010可以控制存储器控制器1000的全部操作并且可以执行逻辑运算。处理器1010可以通过主机接口1040与外部主机通信,并且还可以通过存储器接口1060与存储器装置通信。进一步地,处理器1010可以通过缓冲器控制电路1050与存储器缓冲器1020通信。处理器1010可以通过使用存储器缓冲器1020作为工作存储器、高速缓冲存储器或缓冲存储器来控制存储装置的操作。
处理器1010可以执行闪存转换层(FTL)的功能。处理器1010可以通过FTL将由主机提供的逻辑地址(LA)转换成物理地址(PA)。FTL可以接收逻辑地址(LA)并且使用映射表将LA转换成物理地址(PA)。通过FTL执行的地址映射方法的示例可以根据映射单位而包括各种方法。代表性地址映射方法包括页面映射方法、块映射方法和混合映射方法。
处理器1010可以使从主机接收的数据随机化。例如,处理器1010可以使用随机化种子使从主机接收的数据随机化。可以将经随机化的数据作为待存储的数据提供到存储器装置,并且可以将其编程到存储器单元阵列中。
在读取操作期间,处理器1010可以使从存储器装置接收的数据去随机化。例如,处理器1010可以使用去随机化种子来使从存储器装置接收的数据去随机化。可以将经去随机化的数据输出到主机。
在实施例中,处理器1010可以运行软件或固件以执行随机化或去随机化操作。
存储器缓冲器1020可以用作处理器1010的工作存储器、高速缓冲存储器或缓冲存储器。存储器缓冲器1020可以存储由处理器1010运行的代码和命令。存储器缓冲器1020可以存储由处理器1010处理的数据。存储器缓冲器1020可以包括静态RAM(SRAM)或动态RAM(DRAM)。
错误校正电路1030可以执行错误校正。错误校正电路1030可以基于待通过存储器接口1060写入存储器装置的数据来执行错误校正码(ECC)编码。可以通过存储器接口1060将经ECC编码的数据传送到存储器装置。错误校正电路1030可以基于通过存储器接口1060从存储器装置接收的数据来执行ECC解码。在示例中,错误校正电路1030可以包括在存储器接口1060中,作为存储器接口1060的组件。
主机接口1040可以在处理器1010的控制下与外部主机通信。主机接口1040可以使用诸如以下通信方法的各种通信方法中的至少一种执行通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机***接口(SCSI)、***组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)。
缓冲器控制电路1050可以在处理器1010的控制下控制存储器缓冲器1020。
存储器接口1060可以在处理器1010的控制下与存储器装置通信。存储器接口1060可以通过通道向/从存储器装置传输/接收命令、地址和数据。
在实施例中,存储器控制器1000可以不包括存储器缓冲器1020和缓冲器控制电路1050。
在实施例中,处理器1010可以使用代码来控制存储器控制器1000的操作。处理器1010可以从设置在存储器控制器1000中的非易失性存储器装置(例如,ROM)加载代码。在实施例中,处理器1010可以通过存储器接口1060从存储器装置加载代码。
在实施例中,存储器控制器1000的总线1070可以被划分为控制总线和数据总线。数据总线可以被配置成在存储器控制器1000中传输数据,并且控制总线可以被配置成在存储器控制器1000中传输诸如命令或地址的控制信息。数据总线和控制总线可以彼此隔开,并且可以既不相互干扰也不相互影响。数据总线可以联接到主机接口1040、缓冲器控制电路1050、错误校正电路1030和存储器接口1060。控制总线可以联接到主机接口1040、处理器1010、缓冲器控制电路1050、存储器缓冲器1020和存储器接口1060。
图12是示出应用了根据本公开的实施例的存储装置的存储卡***的框图。
参照图12,存储卡***2000可以包括存储器控制器2100、存储器装置2200和连接器2300。
存储器控制器2100联接到存储器装置2200。存储器控制器2100可以访问存储器装置2200。存储器控制器2100可以以与上面参照图2描述的存储器控制器200相同的方式来实施。
在实施例中,存储器控制器2100可以包括诸如RAM、处理器、主机接口、存储器接口和错误校正电路的组件。
存储器控制器2100可以通过连接器2300与外部装置通信。存储器控制器2100可以基于特定的通信协议与外部装置(例如,主机)通信。在实施例中,存储器控制器2100可以通过诸如以下协议的各种通信协议中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、***组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机***接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、WiFi、蓝牙和高速非易失性存储器(NVMe)。在实施例中,连接器2300可以由上述各种通信协议中的至少一种来定义。
在实施例中,存储器装置2200可以被实施为诸如以下的各种非易失性存储器装置中的任意一种:电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)、自旋转移力矩磁性RAM(STT-MRAM)。
存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中以配置存储卡。例如,存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中以配置诸如PC卡(个人计算机存储卡国际协会:PCMCIA)、紧凑型闪存(CF)卡、智能媒体卡(SM或SMC)、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC或eMMC)、SD卡(SD、迷你SD、微型SD或SDHC)或通用闪存(UFS)的存储卡。
图13是示出应用了根据本公开的实施例的存储装置的固态驱动器(SSD)***的框图。
参照图13,SSD***3000可以包括主机3100和SSD 3200。SSD 3200可以通过信号连接器3001与主机3100交换信号SIG,并且可以通过电源连接器3002接收电力PWR。SSD 3200可以包括SSD控制器3210、多个非易失性存储器3221至322n、辅助电源3230和缓冲存储器3240。
根据本公开的实施例,SSD控制器3210可以执行如上参照图2所描述的存储器控制器200的功能。
SSD控制器3210可以响应于从主机3100接收到的信号SIG来控制多个非易失性存储器3221至322n。在实施例中,信号SIG可以指基于主机3100和SSD 3200的接口的信号。例如,信号SIG可以是由诸如以下接口的各种接口中的至少一种来定义的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、***组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机***接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、WiFi、蓝牙和高速非易失性存储器(NVMe)。
辅助电源3230可以通过电源连接器3002联接到主机3100。辅助电源3230可以由主机3100供应电力PWR,并且可以进行充电。当从主机3100的电力供应执行不平稳时,辅助电源3230可以供应SSD 3200的电力。在实施例中,辅助电源3230可以位于SSD 3200的内部或外部。例如,辅助电源3230可以设置在主板中,并且可以将辅助电力供应到SSD3200。
缓冲存储器3240用作SSD 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个非易失性存储器3221至322n接收的数据,或者可以临时存储非易失性存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器,或者诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器。
图14是示出应用了根据本公开的实施例的存储装置的用户***的框图。
参照图14,用户***4000可以包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以运行用户***4000中包括的组件、操作***(OS)或用户程序。在实施例中,应用处理器4100可以包括用于控制用户***4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可以被设置为片上***(SoC)。
存储器模块4200可以用作用户***4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3SDRAM、LPDDR SDRAM、LPDDR2 SDRAM和LPDDR3 SDRAM的易失性RAM或者诸如PRAM、ReRAM、MRAM和FRAM的非易失性RAM。在实施例中,应用处理器4100和存储器模块4200可以基于堆叠封装(POP)来进行封装,然后可以被设置为单个半导体封装。
网络模块4300可以与外部装置通信。例如,网络模块4300可以支持诸如码分多址(CDMA)、全球移动通信***(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、WiMAX、WLAN、UWB、蓝牙或Wi-Fi通信的无线通信。在实施例中,网络模块4300可以包括在应用处理器4100中。
存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将存储在存储模块4400中的数据传输到应用处理器4100。在实施例中,存储模块4400可以被实施为诸如相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、NAND闪速存储器、NOR闪速存储器或具有三维(3D)结构的NAND闪速存储器的非易失性半导体存储器装置。在实施例中,存储模块4400可以被设置为用户***4000的可移动存储介质(即,可移动驱动器),诸如存储卡或外部驱动器。
在实施例中,存储模块4400可以包括多个非易失性存储器装置,每个非易失性存储器装置可以以与上文参照图2描述的存储器装置100相同的方式进行操作。存储模块4400可以以与上文参照图2描述的存储装置50相同的方式进行操作。
用户接口4500可以包括将数据或指令输入到应用处理器4100或者将数据输出到外部装置的接口。在实施例中,用户接口4500可以包括诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像头、麦克风、陀螺仪传感器、振动传感器和压电装置的用户输入接口。用户接口4500可以进一步包括诸如液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监视器的用户输出接口。
根据本公开,提供一种可以更高效地管理数据的分布式存储***的存储节点以及操作该存储节点的方法。
本文已经公开了实施例的示例,并且尽管采用了特定术语,但是仅在一般性和描述性意义上使用和解释这些术语,而不是用于限制的目的。在一些实例中,除非另有特别指出,否则对本领域普通技术人员显而易见的是,截至本申请提交之日,结合特定实施例描述的特征、特性和/或元件可以单独使用,或者结合其它实施例描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解的是,在不脱离如所附权利要求书中所阐述的本公开的精神和范围的情况下,可以进行形式和细节上的各种改变。

Claims (20)

1.一种存储器控制器,所述存储器控制器控制存储器装置的操作,包括:
数据控制器,所述数据控制器:
接收请求所述存储器装置存储来自主机的写入数据的写入请求,并且基于所述写入请求中包括的块组类型信息,确定待存储所述写入数据的存储块的物理地址;以及
存储器控制组件,将指示存储块存储所述写入数据的编程命令、所述物理地址以及所述写入数据提供到所述存储器装置,
其中所述块组类型信息指示所述写入数据的类型为数据块组或编码块组中的一种,所述数据块组和所述编码块组是由所述主机对原始数据执行擦除编码操作生成的。
2.根据权利要求1所述的存储器控制器,其中所述数据控制器通过确定所述写入数据是否为所述数据块组来确定所述物理地址,第一存储块是待存储所述写入数据的存储块。
3.根据权利要求2所述的存储器控制器,其中包括在该第一存储块中的存储器单元被编程为存储两个或更多个数据位。
4.根据权利要求1所述的存储器控制器,其中所述数据控制器通过确定所述写入数据是否为所述编码块组来确定所述物理地址,第二存储块是待存储所述写入数据的存储块。
5.根据权利要求4所述的存储器控制器,其中包括在该第二存储块中的存储器单元被编程为存储一个数据位。
6.根据权利要求1所述的存储器控制器,其中:
所述数据控制器确定所述物理地址以将所述数据块组存储在第一存储块中并且将所述编码块组存储在第二存储块中,并且
其中包括在该第一存储块中的单个存储器单元中存储的数据位的数量比包括在该第二存储块中的单个存储器单元中存储的数据位的数量更少。
7.根据权利要求1所述的存储器控制器,其中所述数据块组和所述编码块组的大小比所述原始数据的大小更小。
8.根据权利要求1所述的存储器控制器,其中所述原始数据从所述数据块组和所述编码块组之中的预设数量的块组中恢复。
9.一种存储器控制器,所述存储器控制器控制存储器装置的操作,包括:
数据控制器,接收请求所述存储器装置存储来自主机的写入数据的写入请求;
错误校正电路,基于所述写入请求中包括的块组类型信息,对所述写入数据执行错误校正编码操作;以及
存储器控制组件,向所述存储器装置提供编程命令,该编程命令指示待存储在所述存储器装置中的经编码的写入数据的编程数据,
其中所述块组类型信息指示所述写入数据的类型为数据块组或编码块组中的一种,所述数据块组和所述编码块组是由所述主机对原始数据执行擦除编码操作生成的。
10.根据权利要求9所述的存储器控制器,其中所述错误校正电路执行所述错误校正编码操作,如果所述写入数据是所述数据块组,则使用第一错误校正码对所述写入数据进行编码,如果所述写入数据是所述编码块组,则使用第二错误校正码对所述写入数据进行编码。
11.根据权利要求10所述的存储器控制器,其中与所述第二错误校正码的错误校正能力相比,所述第一错误校正码的错误校正能力较小。
12.根据权利要求9所述的存储器控制器,其中所述错误校正电路仅对所述编码块组执行所述错误校正编码操作。
13.根据权利要求9所述的存储器控制器,其中所述数据控制器基于所述写入请求中包括的所述块组类型信息,确定待存储所述写入数据的存储块的物理地址。
14.根据权利要求13所述的存储器控制器,其中所述数据控制器通过确定所述写入数据是否为所述数据块组来确定所述物理地址,第一存储块是待存储所述写入数据的存储块。
15.根据权利要求14所述的存储器控制器,其中包括在该第一存储块中的存储器单元被编程为存储两个或更多个数据位。
16.根据权利要求13所述的存储器控制器,其中所述数据控制器通过确定所述写入数据是否为所述编码块组来确定所述物理地址,第二存储块是待存储所述写入数据的存储块。
17.根据权利要求16所述的存储器控制器,其中包括在该第二存储块中的存储器单元被编程为存储一个数据位。
18.根据权利要求13所述的存储器控制器,其中:
所述数据控制器确定所述物理地址以将所述数据块组存储在第一存储块中并且将所述编码块组存储在第二存储块中,并且
其中包括在该第一存储块中的单个存储器单元中存储的数据位的数量比包括在该第二存储块中包括的单个存储器单元中存储的数据位的数量更少。
19.根据权利要求9所述的存储器控制器,其中所述数据块组和所述编码块组的大小比所述原始数据的大小更小,并且
其中所述原始数据从所述数据块组和所述编码块组之中的预设数量的块组中恢复。
20.一种操作存储器控制器的方法,所述存储器控制器从主机接收写入数据和写入请求并且控制存储器装置的操作,所述方法包括:
基于所述写入请求中包括的块组类型信息,确定所述写入数据是数据块组还是编码块组;
根据所述写入数据是所述数据块组还是所述编码块组,对所述写入数据执行第一错误校正和第二错误校正中的一种;并且
控制所述存储器装置,以便根据所述写入数据是所述数据块组还是所述编码块组,将所述写入数据存储在所述存储器装置中包括的第一存储块和第二存储块中的一个中。
CN202010881403.7A 2019-10-25 2020-08-27 分布式存储***的存储节点及其操作方法 Active CN112711377B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190134130A KR20210049619A (ko) 2019-10-25 2019-10-25 분산 저장 시스템의 스토리지 노드 및 그 동작 방법
KR10-2019-0134130 2019-10-25

Publications (2)

Publication Number Publication Date
CN112711377A true CN112711377A (zh) 2021-04-27
CN112711377B CN112711377B (zh) 2023-11-03

Family

ID=75542368

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010881403.7A Active CN112711377B (zh) 2019-10-25 2020-08-27 分布式存储***的存储节点及其操作方法

Country Status (3)

Country Link
US (1) US11281381B2 (zh)
KR (1) KR20210049619A (zh)
CN (1) CN112711377B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115639947A (zh) * 2021-07-19 2023-01-24 华为技术有限公司 数据写入方法、数据读取方法、装置、设备、***及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101241474A (zh) * 2007-02-06 2008-08-13 三星电子株式会社 存储器映射***及方法
CN101673581A (zh) * 2008-06-13 2010-03-17 三星电子株式会社 存取半导体存储设备的存储***和方法
CN109669800A (zh) * 2017-10-13 2019-04-23 爱思开海力士有限公司 用于写入路径错误的高效数据恢复

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3577119B2 (ja) * 1994-11-01 2004-10-13 株式会社ルネサステクノロジ 半導体記憶装置
KR100852193B1 (ko) 2007-05-02 2008-08-13 삼성전자주식회사 오류 제어 코드 장치 및 그 방법
KR102514388B1 (ko) 2016-03-25 2023-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11604690B2 (en) * 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10545823B2 (en) * 2017-10-13 2020-01-28 Cisco Technology, Inc. Accelerating erasure code replication in distributed systems
KR102370278B1 (ko) * 2017-11-30 2022-03-07 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법
KR20210055514A (ko) * 2019-11-07 2021-05-17 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101241474A (zh) * 2007-02-06 2008-08-13 三星电子株式会社 存储器映射***及方法
CN101673581A (zh) * 2008-06-13 2010-03-17 三星电子株式会社 存取半导体存储设备的存储***和方法
CN109669800A (zh) * 2017-10-13 2019-04-23 爱思开海力士有限公司 用于写入路径错误的高效数据恢复

Also Published As

Publication number Publication date
KR20210049619A (ko) 2021-05-06
CN112711377B (zh) 2023-11-03
US11281381B2 (en) 2022-03-22
US20210124503A1 (en) 2021-04-29

Similar Documents

Publication Publication Date Title
CN108121669B (zh) 存储器***及其操作方法
CN109947358B (zh) 存储器***及其操作方法
CN109656837B (zh) 存储器***及其操作方法
CN110825318B (zh) 控制器及其操作方法
CN108108308B (zh) 存储器***及其操作方法
KR20180041898A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN109697171B (zh) 控制器及其操作方法
CN111208938B (zh) 存储器***及其操作方法
US11016881B2 (en) Memory system and operating method thereof
CN109933468B (zh) 存储器***及其操作方法
US20220137883A1 (en) Apparatus and method for processing data in memory system
US20190347193A1 (en) Memory system and operating method thereof
CN110825316A (zh) 控制器及该控制器的操作方法
CN110910941A (zh) 存储器***及其操作方法
CN111290970B (zh) 存储器***及其操作方法
CN110968521B (zh) 存储器***及其操作方法
CN110716881B (zh) 存储器***及其操作方法
CN110196816B (zh) 控制器、其操作方法以及包括控制器的存储器***
CN109426448B (zh) 存储器***及其操作方法
CN111241001B (zh) 数据处理***及其操作方法
CN109947360B (zh) 存储器***及其操作方法
CN112711377B (zh) 分布式存储***的存储节点及其操作方法
CN111258920A (zh) 存储器***、存储器***的操作方法和控制器
CN108108122B (zh) 控制器和存储器***及其操作方法
CN111309247B (zh) 存储器***及其操作方法

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