CN116168748A - 存储设备、存储设备的操作方法以及控制器的操作方法 - Google Patents

存储设备、存储设备的操作方法以及控制器的操作方法 Download PDF

Info

Publication number
CN116168748A
CN116168748A CN202211303596.3A CN202211303596A CN116168748A CN 116168748 A CN116168748 A CN 116168748A CN 202211303596 A CN202211303596 A CN 202211303596A CN 116168748 A CN116168748 A CN 116168748A
Authority
CN
China
Prior art keywords
read
host
data
dma
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.)
Pending
Application number
CN202211303596.3A
Other languages
English (en)
Inventor
崔镜隐
郑宇圣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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
Priority claimed from KR1020220006688A external-priority patent/KR102547251B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN116168748A publication Critical patent/CN116168748A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供存储设备、存储设备的操作方法以及控制器的操作方法。所述存储设备的操作方法包括:从主机设备接收主机读取命令;识别与所述主机读取命令对应的读取路径是否对应于第一直接存储器访问(DMA)读取路径;以及基于所述读取路径对应于所述第一DMA读取路径,通过主机DMA管理器,将存储在纠错电路的输出缓冲器中的读取数据直接输出到所述主机设备。

Description

存储设备、存储设备的操作方法以及控制器的操作方法
相关申请的交叉引用
本申请要求于2021年11月24日在韩国知识产权局提交的韩国专利申请No.10-2021-0162954以及于2022年1月17日在韩国知识产权局提交的韩国专利申请No.10-2022-0006688的优先权,这些韩国专利申请的全部内容通过引用整体合并于此。
技术领域
本公开涉及存储设备、存储设备的操作方法以及控制器的操作方法。
背景技术
包括非易失性存储器件的存储设备可以用在通用串行总线(USB)驱动器、数码相机、移动电话、智能手机、平板个人计算机(PC)、PC、内存卡、固态硬盘(SSD)等中。存储设备可以被用来存储或移动大量数据。近来,存储设备已经被小型化并且以嵌入的形式实现于电子设备中。
发明内容
本公开的各方面提供了在读取操作中具有减少的读取延迟的控制器、包括该控制器的存储设备及其操作方法。
根据示例实施例的一方面,一种存储设备的操作方法包括:从主机设备接收主机读取命令;识别与所述主机读取命令对应的读取路径是否对应于第一直接存储器访问(DMA)读取路径;以及基于所述读取路径对应于所述第一DMA读取路径,通过主机DMA管理器,将存储在纠错电路的输出缓冲器中的读取数据直接输出到所述主机设备。
根据示例实施例的一方面,一种控制器的操作方法,所述控制器被配置为控制非易失性存储器件,所述操作方法包括:从主机设备接收读取请求;根据所述读取请求的属性来识别读取路径;将与所述读取请求对应的读取命令发送到所述非易失性存储器件;从所述非易失性存储器件接收与所述读取命令对应的读取数据;对所述读取数据执行纠错操作,以获得纠错后的读取数据;以及根据所述读取路径来执行1级直接存储器访问(DMA)操作和2级DMA操作当中的一者,以将所述纠错后的读取数据提供给所述主机设备。
根据示例实施例的一方面,一种存储设备包括:至少一个非易失性存储器件;以及控制器,所述控制器被配置为控制所述至少一个非易失性存储器件。所述控制器包括:主机接口电路,所述主机接口电路被配置为与主机设备接口连接;非易失性存储器接口电路,所述非易失性存储器接口电路被配置为与所述至少一个非易失性存储器件接口连接;纠错电路,所述纠错电路被配置为纠正从所述至少一个非易失性存储器件读取的读取数据的错误并将所述读取数据存储在输出缓冲器中,并且基于读取路径是第一读取路径,在主机直接存储器访问(DMA)管理器的控制下,将存储在所述输出缓冲器中的第一读取数据输出到所述主机接口电路;以及缓冲存储器,所述缓冲存储器被配置为从所述纠错电路的所述输出缓冲器接收所述第一读取数据,并且基于所述读取路径是第二读取路径,在所述主机DMA管理器的控制下,将第二读取数据输出到所述主机接口电路。
根据示例实施例的一方面,一种控制器,其中,所述控制器被配置为控制至少一个非易失性存储器件,所述控制器包括:至少一个处理器;主机接口电路,所述主机接口电路被配置为与主机设备接口连接;非易失性存储器接口电路,所述非易失性存储器接口电路被配置为与所述至少一个非易失性存储器件接口连接;缓冲存储器;纠错电路,所述纠错电路包括输出缓冲器,其中,所述纠错电路被配置为纠正从所述至少一个非易失性存储器件读取的数据中的错误;主机直接存储器访问(DMA)电路,所述主机DMA电路被配置为通过所述主机接口电路直接访问所述纠错电路的所述输出缓冲器和所述缓冲存储器;以及,非易失性存储器(NVM)DMA电路,所述NVM DMA电路被配置为通过所述非易失性存储器接口电路直接访问所述至少一个非易失性存储器件。所述主机DMA电路还被配置为基于读取路径对应于1级DMA操作,直接获得存储在所述纠错电路的所述输出缓冲器中的读取数据,并将所述读取数据提供给所述主机接口电路。所述主机DMA电路还被配置为基于所述读取路径对应于2级DMA操作,控制将存储在所述纠错电路的所述输出缓冲器中的读取数据存储到所述缓冲存储器中,从所述缓冲存储器获得所述读取数据并将所述缓冲存储器的数据输出到所述主机接口电路。
附图说明
通过以下结合附图的描述,将更清楚地理解上述及其他方面、特征和优点,在附图中:
图1是根据示例实施例的主机系统的图;
图2是根据示例实施例的非易失性存储器件的图;
图3是根据示例实施例的存储块的电路图;
图4是根据示例实施例的控制器200的图;
图5是示出根据示例实施例的存储设备的写入路径的图;
图6A和图6B是示出根据示例实施例的存储设备的读取路径的图;
图7是示出根据示例实施例的选择性地应用读取路径的方法的图;
图8是根据示例实施例的存储设备的操作方法的流程图;
图9是根据示例实施例的控制器的操作方法的流程图;
图10是示出根据示例实施例的控制器的操作方法的流程图;
图11是示出根据示例实施例的控制器的操作方法的流程图;
图12是示出根据示例实施例的主机系统的操作方法的梯形图;
图13是示出根据示例实施例的主机系统的操作方法的梯形图;
图14是示出根据示例实施例的通用闪存(UFS)系统2000的图;以及
图15是示出根据示例实施例的数据中心的图。
具体实施方式
在下文中,现在将参照附图详细描述示例实施例。
本公开提供了被配置为控制非易失性存储器件的控制器、包括该控制器的存储设备及其操作方法。本公开提供了用于优化存储器控制器的缓冲器并且提高随机读取性能的缓冲器操作技术。该控制器、存储设备和操作方法可以通过使用用于优化存储器控制器的缓冲器的缓冲器操作技术来提高随机读取性能。该控制器、存储设备和操作方法可以通过根据主机读取请求的属性来选择1级直接存储器访问(DMA)读取操作和2级DMA读取操作中的一者来执行读取操作。结果,可以减少随机读取延迟。此外,由于缓冲器尺寸的减小,存储设备可以实现成本降低。
图1是示出根据示例实施例的主机系统10的图。参照图1,主机系统10可以包括主机设备11和存储设备12。
主机系统10可以通过服务器计算机、个人计算机(PC)、台式计算机、膝上型计算机、工作站计算机、网络附属存储(NAS)、数据中心、互联网数据中心(IDC)、移动计算设备或其他计算设备来实现。例如,移动计算设备可以通过智能手机、平板PC或移动互联网设备(MID)来实现。
主机设备11可以被实现为控制存储设备12的数据处理操作(例如,写入操作或读取操作)。主机设备11可以包括至少一个中央处理单元(CPU)、缓冲存储器、存储器件、存储器控制器、接口电路等。主机设备11可以通过集成电路(IC)、主板或片上系统(SoC)来实现。在示例实施例中,主机设备11可以通过应用处理器或移动应用处理器来实现。
CPU可以通过总线架构与缓冲存储器、存储器控制器和接口电路交换命令或数据。在示例实施例中,总线架构可以是高级微控制器总线架构(AMBA)、AMBA高级可扩展接口(AXI)或AMBA高级高性能总线(AHB)。缓冲存储器可以存储队列。在示例实施例中,缓冲存储器可以通过寄存器或静态随机存取存储器(SRAM)来实现。队列可以包括提交队列。队列可以存储命令(例如,写入命令和读取命令)。在示例实施例中,队列还可以包括完成队列。
存储器件可以通过易失性存储器件或非易失性存储器件来实现。这里,易失性存储器可以通过随机存取存储器(RAM)、SRAM或动态RAM(DRAM)来实现。非易失性存储器可以通过NAND闪存、NOR闪存、相变RAM(PRAM)、磁阻RAM(MRAM)、自旋转移扭矩磁性随机存取存储器(STT-MRAM)、铁电RAM(FRAM)或电阻RAM(RRAM)来实现。存储器控制器可以在CPU的控制下将数据写入到存储器件或读取存储在存储器件中的数据。在示例实施例中,存储器控制器可以具有直接存储器访问(DMA)控制器的功能。接口电路可以通过预定接口连接到存储设备12的主机接口电路(HIF)201。在示例实施例中,预定接口可以包括快速非易失性存储器(NVMe)、快速外围组件互连(PCIe)、串行连接(SATA)、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、通用串行总线(USB)附加SCSI(UAS)、因特网小型计算机系统接口(iSCSI)、光纤通道或以太网上的光纤通道(FCoE)中的至少一种。
存储设备12可以包括至少一个非易失性存储器件(NVM)100和控制器200。
至少一个非易失性存储器件100可以被实现为存储数据。非易失性存储器件100可以是NAND闪存、垂直NAND闪存、NOR闪存、电阻随机存取存储器(RRAM)、相变存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、自旋转移扭矩随机存取存储器(STT-RAM)等。此外,非易失性存储器件100可以被实现为具有三维阵列结构。本公开不仅适用于电荷存储层由导电浮栅构成的闪存器件,也适用于电荷存储层由绝缘膜构成的电荷俘获闪存(CTF)。在下文中,为了便于说明,非易失性存储器件100将被称为垂直NAND闪存器件(VNAND)。
控制器200可以通过用于发送控制信号(例如,命令锁存使能(CLE)信号、地址锁存使能(ALE)信号、芯片使能(CE)信号、写入使能(WE)信号和读取使能(RE)信号)的多个控制引脚连接到至少一个非易失性存储器件100。此外,控制器200可以被实现为通过使用控制信号(CLE信号、ALE信号、CE信号、WE信号、RE信号等)来控制非易失性存储器件100。例如,非易失性存储器件100可以根据CLE信号和ALE信号在WE信号的边沿处锁存命令CMD或地址ADD以执行编程操作、读取操作或擦除操作。例如,可以在读取操作时激活CE信号,可以在命令传输时段期间激活CLE信号,可以在地址传输时段期间激活ALE信号,并且可以在数据通过数据信号线DQ发送的时段期间触发RE信号。可以以与数据输入/输出速度对应的频率触发数据选通信号DQS。可以与数据选通信号DQS同步地顺序发送读取数据。
此外,控制器200可以被实现为控制存储设备12的整体操作。控制器200可以执行诸如以下的各种管理操作:高速缓存/缓冲器管理、固件管理、垃圾收集管理、磨损均衡管理、数据去重管理、读取刷新/回收管理、坏块管理、多流管理、主机数据与非易失性存储器的映射的管理、服务质量(QoS)管理、系统资源分配管理、非易失性存储器队列管理、读取水平管理(read level management)、擦除/编程管理、热/冷数据管理、断电保护管理、动态热管理、初始化管理和独立磁盘冗余阵列(RAID)管理。
此外,控制器200可以包括主机接口电路(HIF)201、非易失性存储器接口电路(NIF)202、缓冲存储器220和纠错电路(ECC)230。
主机接口电路(HIF)201可以被实现为提供与主机设备11接口连接的功能。主机接口电路201可以通过NVMe、PCIe、SATA、SCSI、SAS、UAS、iSCSI、光纤通道、FCoE等与主机设备11交换数据。
非易失性存储器接口电路(NIF)202可以通过非易失性存储器件100中的上述多个管脚交换数据。具体地,非易失性存储器接口电路202可以支持扩展命令协议。
缓冲存储器220可以被实现为临时存储存储设备12的操作所需的数据。在示例实施例中,缓冲存储器220可以通过SRAM来实现。
纠错电路230可以被实现为在写入操作时生成数据的纠错码,并在读取操作时通过使用与读取数据对应的纠错码来纠正错误。
在读取操作时,存储设备12的控制器200可以根据主机命令(或读取请求)的属性通过一次DMA操作将读取数据从纠错电路230的输出缓冲器233发送到主机设备11。例如,读取请求的属性可以基于从主机设备接收到的地址被确定,并且该属性可以指示读取请求是否对应于随机读取操作。在示例实施例中,控制器200可以根据选项(主机命令的属性或来自用户的请求)将读取数据从纠错电路230的输出缓冲器233直接发送到主机设备11,或者可以将读取数据从输出缓冲器233移动到缓冲存储器220,然后将读取数据从缓冲存储器220发送到主机设备11。也就是说,控制器200可以选择第一读取路径和第二读取路径中的一个读取路径,并通过使用选定读取路径将读取数据发送到主机设备11。这里,第一读取路径可以是使用一次DMA操作的路径,并且第二读取路径可以是使用两次DMA操作的路径。
存储设备的一般控制器具有预定大小(例如,NAND页面大小×NAND通道的数目×缓冲比率)的缓冲存储器(例如,SRAM)作为用于读取操作的读取缓冲器。不管主机读取命令的属性如何,一般控制器都通过2级DMA操作将读取数据发送到主机设备。即使在不需要收集用于传输的数据的随机读取操作中,一般控制器也在与其他读取命令相同的初始延迟之后将数据发送到主机设备。
另一方面,根据示例实施例的存储设备12的控制器200可以根据随机读取请求或来自用户的请求通过一次DMA操作将读取数据从纠错电路230的输出缓冲器233发送到主机设备11。因此,与相关技术相比,根据示例实施例的控制器200可以减少读取操作的延迟并能够减小用作读取缓冲器的缓冲存储器220(例如,SRAM)的大小。
根据示例实施例的存储设备12的性能改进可以通过减少随机读取操作中的初始延迟来预期。此外,根据示例实施例的存储设备12可以由于存储设备12中的缓冲存储器220的大小的减小而实现成本降低。
图2是示出根据示例实施例的非易失性存储器件100的图。参照图2,非易失性存储器件100可以包括存储单元阵列110、行译码器(DEC)120、页面缓冲器电路130、输入/输出(I/O)电路140、控制逻辑150、电压发生器160和单元计数器170。
存储单元阵列110可以通过字线WL或选择线SSL和GSL连接到行译码器120。存储单元阵列110可以通过位线BL连接到页面缓冲器电路130。存储单元阵列110可以包括多个单元串。每个单元串的沟道可以沿垂直方向或水平方向形成。每个单元串可以包括多个存储单元。这里,可以基于提供给位线BL或字线WL的电压来对多个存储单元进行编程、擦除或读取。通常,以页为单位执行编程操作,并且以块为单位执行擦除操作。在示例实施例中,存储单元阵列110可以包括二维(2D)存储单元阵列,并且2D存储单元阵列可以包括在行方向和列方向上布置的多个NAND串。
行译码器120可以被实现为根据地址ADD选择存储单元阵列110的存储块BLK1至BLKz中的一个存储块。行译码器120可以根据地址ADD选择选定存储块的字线中的一条字线。行译码器120可以将与操作模式对应的字线电压VWL传送到存储块的选定字线。在编程操作时,行译码器120可以向选定字线施加编程电压和验证电压,并且可以向未选字线施加通过电压。在读取操作时,行译码器120可以向选定字线施加读取电压,并且可以向未选字线施加读取通过电压。
页面缓冲器电路130可以被实现为用作写入驱动器或读出放大器。在编程操作时,页面缓冲器电路130可以向存储单元阵列110的位线施加与要被编程的数据对应的位线电压。在读取操作或验证读取操作时,页面缓冲器电路130可以通过位线BL感测存储在选定存储单元中的数据。包括在页面缓冲器电路130中的多个页面缓冲器中的每一个页面缓冲器可以连接到至少一条位线。
输入/输出电路140可以将外部提供的数据提供给页面缓冲器电路130。输入/输出电路140可以将外部提供的命令CMD提供给控制逻辑150(参见图2)。输入/输出电路140可以将外部提供的地址ADD提供给控制逻辑150或行译码器120。此外,输入/输出电路140可以将由页面缓冲器电路130感测和锁存的数据输出到另一设备。
控制逻辑150可以被实现为基于从控制器200发送的命令CMD来控制行译码器120、页面缓冲器电路130和电压发生器160。此外,控制逻辑150可以被实现为执行基于单元计数的动态读取操作。
电压发生器160可以被实现为在控制逻辑150的控制下生成要被施加到各条字线的各种类型的字线电压和要被供应给形成存储单元的体(bulk)(例如,阱区域)的阱电压。施加到各条字线的字线电压可以包括编程电压、通过电压、读取电压、读取通过电压等。
单元计数器170可以被实现为根据由页面缓冲器电路130感测的数据对与特定阈值电压范围对应的存储单元进行计数。例如,单元计数器170可以通过处理由多个页面缓冲器PB1至PBn中的每一个页面缓冲器感测的数据来对具有特定阈值电压范围内的阈值电压的存储单元的数目进行计数。
图3示出根据示例实施例的存储块BLKi(i是2或更大的整数)的电路图。包括在存储块BLKi中的多个存储NAND串可以在垂直于衬底的方向上形成。
参照图3,存储块BLKi可以包括连接在位线BL1、BL2和BL3与公共源极线CSL之间的多个存储NAND串NS11至NS33。多个存储NAND串NS11至NS33中的每一个存储NAND串可以包括串选择晶体管SST、多个存储单元MC1、MC2、……、和MC8以及接地选择晶体管GST。图3示出多个存储NAND串NS11至NS33中的每一个存储NAND串包括八个存储单元MC1、MC2、……、和MC8的情况,但是示例实施例不一定限于此。
串选择晶体管SST可以连接到对应的串选择线SSL1、SSL2或SSL3。多个存储单元MC1、MC2、……、和MC8可以分别连接到对应的栅极线GTL1、GTL2、……、和GTL8。栅极线GTL1、GTL2、……、和GTL8可以对应于字线,并且栅极线GTL1、GTL2、……、和GTL8中的一些栅极线可以对应于虚拟字线。接地选择晶体管GST可以连接到对应的接地选择线GSL1、GSL2或GSL3。串选择晶体管SST可以连接到对应的位线BL1、BL2或BL3,并且接地选择晶体管GST可以连接到公共源极线CSL。
具有相同高度的字线(例如,WL1)可以共同连接,并且具有相同高度的接地选择线GSL1、GSL2和GSL3和具有相同高度的串选择线SSL1、SSL2和SSL3可以分别彼此分离。图3示出了存储块BLKi连接到八条栅极线GTL1、GTL2、……、和GTL8以及三条位线BL1、BL2和BL3的情况,但是示例实施例不一定限于此。
图4是示出根据示例实施例的控制器200的图。参照图4,控制器200可以包括主机接口电路201、非易失性存储器接口电路202、总线203、至少一个处理器(CPU)210、缓冲存储器220、纠错电路(ECC)230、主机DMA电路240和非易失性存储器DMA电路250。输出缓冲器233可以设置在ECC230中。
主机接口电路201可以被实现为向主机发送数据包(packet)和从主机接收数据包。从主机发送到主机接口电路201的数据包可以包括要被写入到非易失性存储器件100的命令或数据。从主机接口电路201发送到主机的数据包可以包括对于命令的响应或从非易失性存储器件100读取的数据。
存储器接口电路202可以将要被写入到非易失性存储器件100的数据发送到非易失性存储器件100,或者接收从非易失性存储器件100读取的数据。这样的存储器接口电路202可以被实现为符合诸如JEDEC Toggle或开放NAND闪存接口(ONFI)的标准协议。
至少一个处理器(CPU)210可以被实现为控制存储设备12的整体操作。控制器200可以在至少一个CPU 210的控制下执行诸如以下的各种管理操作:高速缓存/缓冲器管理、固件管理、垃圾收集管理、磨损均衡管理、数据去重管理、读取刷新/回收管理、坏块管理、多流管理、主机数据和非易失性存储器的映射的管理、服务质量(QoS)管理、系统资源分配管理、非易失性存储器队列管理、读取水平管理、擦除/编程管理、热/冷数据管理、断电保护管理、动态热管理、初始化管理和独立磁盘冗余阵列(RAID)管理。这样的管理操作可以在硬件、固件或软件中实现。
缓冲存储器220可以临时存储要被写入到非易失性存储器件100的数据或从非易失性存储器件100读取的数据。在示例实施例中,缓冲存储器220可以设置在控制器200中。在另一示例实施例中,缓冲存储器220可以设置在控制器200外部。此外,缓冲存储器220可以通过易失性存储器(例如,静态随机存取存储器(SRAM)、动态RAM(DRAM)或同步RAM(SDRAM))或非易失性存储器(闪存、相变RAM(PRAM)、磁阻RAM(MRAM)、电阻RAM(ReRAM)或铁电RAM(FRAM))来实现。
纠错电路230可以被实现为在编程操作时生成纠错码(ECC)并且在读取操作时通过使用纠错码来恢复数据。也就是说,纠错电路230可以生成用于纠正与从非易失性存储器件100接收的数据对应的故障位或错误位的纠错码(ECC)。此外,纠错电路230可以通过对提供给非易失性存储器件100的数据执行纠错编码来形成被添加了奇偶校验位的数据。奇偶校验位可以被存储在非易失性存储器件100中。
此外,纠错电路230可以对从非易失性存储器件100输出的数据执行纠错解码。纠错电路230可以通过使用奇偶校验来纠正错误。纠错电路230可以通过使用低密度奇偶校验(LDPC)码、Bose-Chaudhuri-Hocquenghem(BCH)码、turbo码、Reed-Solomon码、卷积码、递归系统码(RSC)和诸如网格编码调制(TCM)或块编码调制(BCM)的编码调制来纠正错误。当错误纠正在纠错电路230中是不可能的时,可以执行读取重试操作。
数据包管理器可以根据主机同意的接口的协议来生成数据包,或者从自主机接收到的数据包中解析各种信息。加密装置可以通过使用对称密钥算法对输入到控制器200的数据执行加密操作或解密操作中的至少一者。加密装置可以通过使用高级加密标准(AES)算法来执行数据的加密和解密。加密装置可以包括加密模块和解密模块。在示例实施例中,加密装置可以以硬件、软件或固件实现。加密装置可以执行自加密驱动器(SED)功能或可信计算组(TCG)安全功能。利用SED功能,可以使用加密算法将加密数据存储在非易失性存储器件100中,或者可以对从非易失性存储器件100读取的加密数据进行解密。这样的加密或解密操作可以使用内部生成的加密密钥来执行。TCG安全功能可以提供能够对存储设备12的用户数据进行访问控制的机制。例如,利用TCG安全功能,可以执行用于外部设备与存储设备12之间的认证的过程。在示例实施例中,可选择地启用SED功能或TCG安全功能。
主机DMA电路240可以被实现为控制主机设备11与控制器200之间的DMA操作。主机DMA电路240可以在主机控制器的控制下在编程操作时执行将通过主机接口电路201从主机设备11输入的数据存储在缓冲存储器220中的操作。此外,主机DMA电路240可以在读取操作时执行通过主机接口电路201将存储在缓冲存储器220中的数据输出到主机设备11的操作。在示例实施例中,主机DMA电路240可以被实现为作为主机控制器的组件被包括在主机控制器中。
非易失性存储器DMA电路250可以被实现为控制控制器200与非易失性存储器件100之间的DMA操作。非易失性存储器DMA电路250可以在非易失性存储器控制器的控制下在编程操作时执行通过非易失性存储器接口电路202将存储在缓冲存储器220中的数据输出到非易失性存储器件100的操作。此外,非易失性存储器DMA电路250可以在读取操作时执行通过非易失性存储器接口电路202读取存储在非易失性存储器件100中的数据的操作。
此外,非易失性存储器DMA电路250可以在读取操作时从非易失性存储器接口电路202接收构成读取传输单位的至少一个数据组。非易失性存储器DMA电路250可以将每个数据组划分为具有小于读取传输单位的数据大小的至少两个数据子组。这里,数据子组可以是通过纠错电路230纠错后的数据。在示例实施例中,当第一读取路径被选择时,至少两个数据子组可以被发送到主机DMA电路240。此外,当第二读取路径被选择时,至少两个数据子组可以被顺序地发送到缓冲存储器220。
此外,当将数据子组发送到缓冲存储器220时,非易失性存储器DMA电路250可以将指示读取流的开始的信息输出到缓冲存储器。例如,非易失性存储器DMA电路250可以被实现为作为非易失性存储器控制器的组件被包括在非易失性存储器控制器中。
图5是示出根据示例实施例的存储设备12的写入路径的图。
主机DMA(HDMA)管理器241可以在写入操作时管理主机DMA电路240。主机DMA电路240可以通过主机接口电路201(图1)接收主机设备11(图1)的数据。主机DMA电路240可以从主机设备11顺序地接收构成传输单元的至少一个数据组。HDMA管理器241可以将构成传输单元的数据组划分为至少两个数据子组,并将至少两个数据子组顺序地发送到缓冲存储器220。也就是说,HDMA管理器241可以将具有传输单元的数据大小的一个数据组划分为具有小于传输单元的数据大小的至少两个数据子组,并且将至少两个数据子组发送到缓冲存储器220。
HDMA管理器241可以在将至少两个数据子组当中的第一数据子组发送到缓冲存储器220时,将编程流开始信号输出到缓冲管理器221的调度引擎。这里,调度引擎可以基于编程流开始信号将数据存储预约信号输出到缓冲存储器220。缓冲存储器220可以基于数据存储预约信号确保与至少一个数据组的总数据大小相等的存储空间,来准备缓冲存储器220的写入操作。
HDMA管理器241可以在将至少两个数据子组当中的第一数据子组发送到缓冲存储器220之后,将传输完成信号输出到缓冲管理器221。HDMA管理器241可以基于传输完成信号将包括缓冲存储器220的数据存储空间的位置信息的槽索引(slot index)输出到非易失性DMA(NDMA)管理器251。
NDMA管理器251可以在两个数据子组当中的至少第一数据子组在缓冲存储器220中的存储完成之后,控制非易失性存储器DMA电路250读取存储在缓冲存储器220中的数据,并且通过非易失性存储器接口电路202(图1)将读取的数据输出到非易失性存储器件100。
NDMA管理器251可以基于槽索引输出驱动信号。非易失性存储器DMA电路250可以基于驱动信号读取存储在缓冲存储器220中的数据,并将读取数据输出到纠错电路的编码器231。
总之,根据示例实施例的存储设备12可以在写入操作时通过主机DMA电路240执行将从主机接收的数据发送到缓冲存储器220的操作的同时,利用非易失性存储器DMA电路250执行将存储在缓冲存储器220中的数据输出到纠错电路230的编码器231的操作。
图6A和图6B是示出根据示例实施例的存储设备12的读取路径的图。图6A示出了不通过缓冲存储器220的第一读取路径,并且图6B示出了通过缓冲存储器220的第二读取路径。
无论第一读取路径和第二读取路径的选择如何,都可以在读取操作时通过非易失性存储器接口电路202接收从非易失性存储器件100输出的数据。这里,接收的数据可以是通过纠错电路230的译码器232纠错后的数据。在示例实施例中,非易失性存储器DMA电路250可以从非易失性存储器件100顺序地接收构成读取传输单位的至少一个数据组。
参照图6A,HDMA管理器241可以控制主机DMA电路240通过主机接口电路201将存储在ECC译码器232的输出缓冲器233中的数据输出到主机设备11。
参照图6B,HDMA管理器241可以控制主机DMA电路240执行将存储在ECC译码器232的输出缓冲器233中的数据直接发送到缓冲存储器220的第一DMA读取操作,以及通过主机接口电路201将存储在缓冲存储器220中的数据直接发送到主机设备11的第二DMA读取操作。
在第一DMA读取操作中,HDMA管理器241可以将构成读取传输单位的数据组划分为至少两个数据子组,并且将至少两个数据子组顺序地发送到缓冲存储器220。也就是说,HDMA管理器241可以将具有读取传输单位的数据大小的一个数据组划分为具有小于读取传输单位的数据大小的至少两个数据子组,并且将至少两个数据子组发送到缓冲存储器220。HDMA管理器241可以在将至少两个数据子组当中的第一数据子组发送到缓冲存储器220时,将读取流开始信号输出到缓冲管理器221的调度引擎。调度引擎可以基于读取流开始信号将数据存储预约信号输出到缓冲存储器220。缓冲存储器220可以基于数据存储预约信号确保与至少一个数据组的总数据大小相等的存储空间,来准备缓冲存储器220的写入操作。此外,HDMA管理器241可以在将至少两个数据子组当中的第一数据子组发送到缓冲存储器220之后,将传输完成信号输出到缓冲存储器220。
在第二DMA读取操作中,HDMA管理器241可以在两个数据子组当中的至少第一数据子组在缓冲存储器220中的存储完成之后,控制主机DMA电路240通过主机接口电路201将存储在缓冲存储器220中的数据输出到主机设备11。HDMA管理器241可以基于槽索引输出用于驱动主机DMA电路240的驱动信号。主机DMA电路240可以基于驱动信号读取并输出存储在缓冲存储器220中的数据。主机DMA电路240可以顺序地读取存储在缓冲存储器220中的数据子组,并通过主机接口电路201将读取的数据子组输出到主机设备11。
图7是示出根据示例实施例的通过控制器200选择性地应用读取路径的方法的图。
参照图7,主机读取路径可以被分类为两个路径。经由第一读取路径(即,ReadPath 1),可以通过一次DMA操作将读取数据发送到主机设备11。经由第二读取路径(即,包括Read Path 2-1和Read Path 2-2的Read Path 2),可以通过两次DMA操作将读取数据发送到主机设备11。
当第一读取路径被选定为主机读取路径时,可以通过1级DMA操作将读取数据(例如,4KB数据)从纠错电路230(参见图1)的输出缓冲器233输出到主机设备11。这里,1级DMA操作可以是通过HDMA管理器241将纠错电路230的输出缓冲器233的读取数据发送到主机设备11的操作。
当第二读取路径被选定为主机读取路径时,可以通过2级DMA操作将读取数据(例如,4KB)从纠错电路230(参见图1)的输出缓冲器233输出到主机设备11。这里,2级DMA操作可以包括通过HDMA管理器241将纠错电路230的输出缓冲器233的读取数据(例如,4KB数据)发送到缓冲存储器220(SRAM垃圾收集(GC)缓冲器)的操作和通过HDMA管理器241将收集在缓冲存储器220中的读取数据(例如,32KB数据)发送到主机设备11的操作。
由控制连接到多个通道CH0、CH1、……、和CH#中的每一个通道的至少一个非易失性存储器件的闪存控制器FMC读取的数据可以由纠错电路ECC进行纠错。每个通道的纠错后的数据(例如,4KB)可以被存储在纠错电路ECC的输出缓冲器中。HDMA管理器241可以确定将存储在输出缓冲器中的纠错后的数据是发送到缓冲存储器220还是发送到主机接口电路。例如,HDMA管理器241可以确定是通过第一读取路径Read Path 1还是第二读取路径ReadPath 2将存储在输出缓冲器中的纠错后的数据发送到主机接口电路。
根据示例实施例的存储设备12可以将主机读取路径分类为两个路径,并且根据主机命令的属性或用户的需要,仅通过一次DMA操作将来自纠错电路230的输出缓冲器233的数据发送到主机设备11,或者经由SRAM GC缓冲器220将数据发送到主机设备11。这种选择性地应用读取路径的方法可以用于优化读取操作。具体地,在使用第一读取路径Read Path1的读取操作中,可以通过仅由一次DMA操作将数据传送到主机设备11来减少读取延迟。也就是说,根据示例实施例的存储设备12可以通过根据主机命令的属性或用户的需要选择两个读取路径中的一个读取路径来减少读取操作的延迟。
此外,因为根据示例实施例的缓冲存储器(例如,SRAM)的大小可以被设计为小于根据相关技术的读取缓冲器的大小,所以可以降低成本。在示例实施例中,LDPC输出SRAM可以用作读取缓冲器,从而减少或消除专用读取缓冲器。
如图7所示,HDMA管理器241可以包括确定读取路径的路径确定引擎242。路径确定引擎242可以根据在读取操作时是执行1级DMA操作还是2级DMA操作来确定读取路径。
图8是示出根据示例实施例的存储设备12的操作方法的流程图。参照图8,存储设备12可以如下操作。
存储设备12可以从主机设备11接收主机读取命令(S110)。存储设备12可以根据读取请求(例如,主机读取命令)确定是否执行1级DMA操作(S120)。
当执行使用1级DMA操作的读取操作时,存储设备12可以执行HDMA以将纠错电路230(参见图1)的输出缓冲器233的读取数据发送到主机设备11(S130)。另一方面,当不执行使用1级DMA操作的读取操作时,存储设备12执行2级DMA操作。具体地,存储设备12可以执行第一HDMA以将纠错电路230(参见图1)的输出缓冲器233的读取数据发送到缓冲存储器220(SRAM)(S140)。此后,存储设备12可以执行第二HDMA以将缓冲存储器220(SRAM)的读取数据发送到主机设备11(S145)。
图9是示出根据示例实施例的控制器的操作方法的流程图。参照图9,控制器200可以如下操作。
控制器200可以从主机设备11接收读取请求(S210)。控制器200可以根据读取请求确定读取路径(S220)。这里,读取路径可以包括用于1级DMA操作的第一读取路径或用于2级DMA操作的第二读取路径。控制器200可以通过选定读取路径输出读取数据(S230)。
图10是示出根据另一示例实施例的控制器的操作方法的流程图。参照图10,控制器200可以如下操作。
控制器200可以从主机设备11接收读取请求(S310)。控制器200可以通过分析读取请求来确定读取操作是否是随机读取操作(S320)。当读取操作是随机读取操作时,控制器200可以通过使用1级DMA操作将读取数据输出到主机设备11(S330)。另一方面,当读取操作不是随机读取操作时,控制器200可以通过使用2级DMA操作将读取数据输出到主机设备11(S335)。
图11是示出根据另一示例实施例的控制器的操作方法的流程图。参照图11,控制器200可以如下操作。
控制器200可以根据来自主机设备11的请求来设置指示读取路径的特殊特征寄存器(special feature register,SFR)(S410)。例如,来自主机设备11的请求可以指示1级DMA。一旦从主机设备11接收到读取请求,控制器200就可以优先读取SFR(S420)。可以根据SFR确定读取路径是否是用于1级DMA操作的读取路径(S430)。
当SFR指示用于1级DMA操作的读取路径时,控制器200可以将读取数据输出到主机设备11(S440)。另一方面,当SFR不指示用于1级DMA操作的读取路径时,控制器200可以通过使用2级DMA操作将读取数据输出到主机设备11(S445)。
图12是示出根据示例实施例的主机系统的操作方法的梯形图。参照图12,主机系统可以如下操作。
主机设备HOST可以将读取请求发送到存储设备的控制器CTRL(S12)。控制器CTRL可以接收读取请求并确定读取路径(S13)。控制器CTRL可以将与读取请求对应的读取命令发送到非易失性存储器件NVM(S14)。非易失性存储器件NVM可以基于读取命令执行读取操作(S15)。非易失性存储器件NVM可以将读取数据输出到控制器CTRL(S16)。控制器CTRL可以对读取数据执行纠错操作(S17)。控制器CTRL可以对纠错后的数据执行与选定读取路径对应的DMA操作(S18)。这里,DMA操作可以是1级DMA操作或2级DMA操作。根据DMA操作,可以将读取数据输出到主机设备HOST(S19)。
图13是示出根据另一示例实施例的主机系统的操作方法的梯形图。参照图13,主机系统可以如下操作。
主机设备HOST可以向控制器CTRL请求与DMA路径相关的SFR设置(S20)。控制器CTRL可以根据来自主机设备HOST的请求来设置SFR(S21)。控制器CTRL也可以在没有来自主机设备HOST的请求的情况下根据内部策略来设置SFR。
此后,主机设备HOST可以将读取请求发送到存储设备的控制器CTRL(S22)。控制器CTRL可以接收读取请求并且确定与SRF对应的读取路径(S23)。控制器CTRL可以将与读取请求对应的读取命令发送到非易失性存储器件NVM(S24)。非易失性存储器件NVM可以基于读取命令执行读取操作(S25)。非易失性存储器件NVM可以将读取数据输出到控制器CTRL(S26)。控制器CTRL可以对读取数据执行纠错操作(S27)。控制器CTRL可以对纠错后的数据执行与选定读取路径对应的DMA操作(S28)。这里,DMA操作可以是1级DMA操作或2级DMA操作。根据DMA操作,可以将读取数据输出到主机设备HOST(S29)。
示例实施例适用于通用闪存(UFS)系统。
图14是示出根据示例实施例的UFS系统2000的图。UFS系统2000可以包括UFS主机2100、UFS设备2200和UFS接口2300。参照图1至图13描述的主机系统10的描述可以应用于图14的UFS系统2000。参照图14,UFS主机2100和UFS设备2200可以通过UFS接口2300互连。
UFS主机2100可以包括UFS主机控制器2110、应用2120、UFS驱动器2130、主机存储器2140和UFS互连(UIC)层2150。UFS设备2200可以包括UFS设备控制器2210、非易失性存储器(NVM)2220、存储接口2230、设备存储器2240、UIC层2250和调节器2260。非易失性存储器2220可以包括多个存储单元2221,并且这样的存储单元2221可以包括具有二维(2D)结构或三维(3D)结构的V-NAND闪存,或者可以包括诸如相变随机存取存储器(PRAM)和/或电阻随机存取存储器(RRAM)的其他类型的非易失性存储器。UFS设备控制器2210和非易失性存储器2220可以通过存储接口2230互连。存储接口2230可以被实现为符合诸如toggle或开放NAND闪存接口(ONFI)的标准协议。
应用2120可以指与UFS设备2200通信以使用UFS设备2200的功能的程序。应用2120可以向UFS驱动器2130提供输入-输出请求(IOR),以用于向UFS设备2200的输入/自UFS设备2200的输出。输入-输出请求(IOR)可以指针对数据的读取请求、写入请求和/或丢弃请求,但不限于此。
UFS驱动器2130可以通过UFS-主机控制器接口(HCI)来管理UFS主机控制器2110。UFS驱动器2130可以将由应用2120生成的输入-输出请求转换为由UFS标准定义的UFS命令,并将UFS命令传送给UFS主机控制器2110。一个输入-输出请求可以被转换为多个UFS命令。UFS命令基本上可以是由小型计算机系统接口(SCSI)标准定义的命令,但是也可以是专用于UFS标准的命令。
UFS主机控制器2110可以通过UIC层2150和UFS接口2300将通过由UFS驱动器2130执行的转换而获得的UFS命令发送到UFS设备2200的UIC层2250。在这个过程中,UFS主机控制器2110的UFS主机寄存器2111可以用作命令队列(CQ)。
UFS主机2100的UIC层2150可以包括MIPI M-PHY 2151和MIPI UniPro 2152,并且UFS设备2200的UIC层2250也可以包括MIPI M-PHY 2252和MIPI UniPro 2251。
UFS接口2300可以包括发送参考时钟REF_CLK的线、发送用于UFS设备2200的硬件复位信号RESET_n的线、发送成对的差分输入信号DIN_T和DIN_C的成对的线以及发送成对的差分输出信号DOUT_T和DOUT_C的成对的线。
从UFS主机2100提供给UFS设备2200的参考时钟REF_CLK的频率值可以例如是19.2MHz、26MHz、38.4MHz和52MHz四个值中的一个值,但不一定限于此。UFS主机2100可以在操作期间,即在UFS主机2100与UFS设备2200之间执行数据传输/接收的时间段期间,改变参考时钟REF_CLK的频率值。UFS设备2200可以使用锁相环(PLL)等从自UFS主机2100提供的参考时钟REF_CLK生成各种频率的时钟。此外,UFS主机2100也可以基于参考时钟REF_CLK的频率值来设置UFS主机2100与UFS设备2200之间的数据速率的值。也就是说,可以根据参考时钟REF_CLK的频率值来确定数据速率的值。
UFS接口2300可以支持多个通道,并且每个通道可以被实现为差分线对。例如,UFS接口2300可以包括一个接收通道和一个发送通道。在图14中,发送成对的差分输入信号DIN_T和DIN_C的成对的线可以构成接收通道,发送成对的差分输出信号DOUT_T和DOUT_C的成对的线可以构成发送通道。尽管在图14中示出了一个发送通道和一个接收通道,但是可以修改发送通道的数目和接收通道的数目。
接收通道和发送通道可以以串行通信方式发送数据,并且UFS主机2100和UFS设备2200可以通过接收通道和发送通道彼此分开的结构以全双工方式彼此通信。也就是说,UFS设备2200可以在通过接收通道从UFS主机2100接收数据的同时,通过发送通道将数据发送到UFS主机2100。此外,可以通过同一通道发送自UFS主机2100到UFS设备2200的诸如命令的控制数据和UFS主机2100意图存储在UFS设备2200的非易失性存储器2220中的或从UFS设备2200的非易失性存储器2220中读取的用户数据。因此,除了成对的接收通道和成对的发送通道之外,不需要在UFS主机2100与UFS设备2200之间设置用于数据传输的单独通道。
UFS设备2200的UFS设备控制器2210通常可以控制UFS设备2200的操作。UFS设备控制器2210可以通过作为逻辑数据存储单元的逻辑单元(LU)2211来管理非易失性存储器2220。LU 2211的数目可以是八,但不限于此。UFS设备控制器2210可以包括闪存转换层(FTL),并且可以使用FTL的地址映射信息将从UFS主机2100传送的逻辑数据地址(例如,逻辑块地址(LBA))转换为物理数据地址(例如,物理块地址(PBA))。在UFS系统2000中,用于存储用户数据的逻辑块可以具有预定范围内的大小。例如,逻辑块的最小大小可以被设置为4千字节。应理解的是,逻辑块的大小不限于此。
当来自UFS主机2100的命令通过UIC层2250被输入到UFS设备2200时,UFS设备控制器2210可以根据输入命令执行操作,并且可以在操作完成时将完成响应发送给UFS主机2100。
在示例实施例中,当UFS主机2100意图将用户数据存储在UFS设备2200中时,UFS主机2100可以将数据存储命令发送到UFS设备2200。当从UFS设备2200接收到指示UFS设备2200准备好接收用户数据的准备好传送响应时,UFS主机2100可以将用户数据发送到UFS设备2200。UFS设备控制器2210可以将接收到的用户数据临时存储在设备存储器2240中,并且可以基于FTL的地址映射信息将临时存储在设备存储器2240中的用户数据存储在非易失性存储器2220中的选定位置处。
在示例实施例中,当UFS主机2100意图读取存储在UFS设备2200中的用户数据时,UFS主机2100可以将数据读取命令发送给UFS设备2200。接收数据读取命令的UFS设备控制器2210可以基于数据读取命令从非易失性存储器2220读取用户数据并将读取的用户数据临时存储在设备存储器2240中。在这样的读取过程中,UFS设备控制器2210可以通过使用内置纠错码(ECC)引擎检测并纠正读取的用户数据的错误。
具体地,ECC引擎可以生成用于要写入非易失性存储器2220的写入数据的奇偶校验位,并且如上所述生成的奇偶校验位可以与写入数据一起存储在非易失性存储器2220中。在从非易失性存储器2220读取数据时,ECC引擎可以通过使用从非易失性存储器2220读取的奇偶校验位连同读取数据来校正读取数据的错误,并输出错误被校正的读取数据。
此外,UFS设备控制器2210可以将临时存储在设备存储器2240中的用户数据发送到UFS主机2100。此外,UFS设备控制器2210还可以包括高级加密标准(AES)引擎。AES引擎可以通过使用对称密钥算法对输入到UFS设备控制器2210的数据执行加密操作或解密操作中的至少一者。
UFS主机2100可以将要发送到UFS设备2200的命令顺序地存储在可以用作命令队列的UFS主机寄存器2111中,并且将命令顺序地发送到UFS设备2200。在这种情况下,即使当先前发送的命令仍由UFS设备2200处理时,也就是说,即使在接收到指示由UFS设备2200对先前发送的命令的处理已经完成的通知之前,UFS主机2100也可以将排列在命令队列中的下一命令发送到UFS设备2200。因此,UFS设备2200可以在处理先前发送的命令的同时从UFS主机2100接收下一命令。可以存储在这样的命令队列中的命令的最大数目(队列深度)可以是例如32。此外,命令队列可以被实现为通过头指针和尾指针分别指示存储在队列中的命令串的开始和结束的循环队列类型。
多个存储单元2221中的每一个存储单元可以包括存储单元阵列和控制存储单元阵列的操作的控制电路。存储单元阵列可以包括二维存储单元阵列或三维存储单元阵列。存储单元阵列可以包括多个存储单元。每个存储单元可以是存储一位信息的单阶单元(single level cell,SLC),或者可以是存储两位或更多位信息的单元,诸如多阶单元(multi level cell,MLC)、三阶单元(triple level cell,TLC)或四阶单元(quadruplelevel cell,QLC)。三维存储单元阵列可以包括垂直定向使得至少一个存储单元位于另一存储单元上的垂直NAND串。
VOC、VCCQ1、VCCQ2等可以作为电源电压输入到UFS设备2200。VOC是用于UFS设备2200的主电源电压并且可以具有2.4V至3.6V的值。VCCQ1是用于供应低范围的电压的电源电压,主要用于UFS设备控制器2210,并且可以具有1.14V至1.26V的值。VCCQ2是用于供应低于VCC但高于VCCQ1的电压的电源电压,主要用于诸如MIPI M-PHY 2251的输入/输出接口,并且可以具有1.7V至1.95V的值。可以通过调节器2260将电源电压供应给UFS设备2200的各个组件。调节器2260可以被实现为分别连接到上述电源电压中的不同电源电压的一组单元调节器。
根据示例实施例的存储设备适用于数据服务器系统。
图15是示出应用了根据示例实施例的存储器件的数据中心的图。参照图15,数据中心7000可以包括应用服务器7100至7100n和存储服务器7200至7200m。可以根据示例实施例不同地选择应用服务器7100至7100n的数目和存储服务器7200至7200m的数目,并且应用服务器7100至7100n的数目和存储服务器7200至7200m的数目可以彼此不同。
应用服务器7100可以包括至少一个处理器(例如,CPU)7110和存储器(MEM)7120。存储服务器7200可以包括至少一个处理器7210和存储器7220。以示例的方式描述存储服务器7200,处理器7210可以控制存储服务器7200的整体操作,并且可以访问存储器7220以执行加载到存储器7220的指令和/或数据。存储器7220可以是双倍数据速率同步DRAM(DDRSDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插式存储器模块(DIMM)、Optane DIMM或非易失性DIMM(NVMDIMM)。根据示例实施例,可以不同地选择包括在存储服务器7200中的处理器7210的数目和存储器7220的数目。在示例实施例中,处理器7210和存储器7220可以提供处理器-存储器对。在示例实施例中,处理器7210的数目和存储器7220的数目可以彼此不同。处理器7210可以包括单核处理器或多核处理器。存储服务器7200的上述描述可以类似地应用于应用服务器7100。根据示例实施例,应用服务器7100可以不包括存储设备7150。存储服务器7200可以包括至少一个存储设备7250。可以根据示例实施例不同地选择包括在存储服务器7200中的存储设备7250的数目。
应用服务器7100至7100n和存储服务器7200至7200m可以通过网络7300彼此通信。网络7300可以使用光纤通道(FC)或以太网来实现。在这种情况下,FC是用于相对高速的数据传输的介质,并且可以使用提供高性能/高可用性的光开关。根据网络7300的访问方法,存储服务器7200至7200m可以被设置为文件存储介质、块存储介质或对象存储介质。
在示例实施例中,网络7300可以是仅存储网络,诸如存储区域网络(SAN)。例如,SAN可以是使用FC网络并根据FC协议(FCP)实现的FC-SAN。作为另一示例,SAN可以是使用TCP/IP网络并且根据TCP/IP上的SCSI或互联网SCSI(iSCSI)协议实现的IP-SAN。在另一示例实施例中,网络7300可以是通用网络,诸如TCP/IP网络。例如,网络7300可以根据诸如以太网上的FC(FCoE)、网络附属存储(NAS)、Fabrics上的NVMe(NVMe-oF)的协议来实现。应用服务器7100的描述可以应用于其他应用服务器7100n,并且存储服务器7200的描述也可以应用于其他存储服务器7200m。
应用服务器7100可以通过网络7300将用户或客户端请求要存储的数据存储在存储服务器7200至7200m之一中。此外,应用服务器7100可以通过网络7300从存储服务器7200至7200m之一获取用户或客户端请求要读取的数据。例如,应用服务器7100可以通过web服务器或数据库管理系统(DBMS)来实现。
应用服务器7100可以通过网络7300访问包括在另一应用服务器7100n中的存储器7120n或存储设备7150n,或者可以通过网络7300访问包括在存储服务器7200至7200m中的存储器7220至7220m或存储设备7250至7250m。因此,应用服务器7100可以对存储在应用服务器7100至7100n或存储服务器7200至7200m中的数据执行各种操作。例如,应用服务器7100可以执行用于在应用服务器7100至7100n或存储服务器7200至7200m之间移动或复制数据的命令。此时,数据可以从存储服务器7200至7200m的存储设备7250至7250m直接或者通过存储服务器7200至7200m的存储器7220至7220m移动到应用服务器7100至7100n的存储器7120至7120n。通过网络7300移动的数据可以是用于安全或隐私的加密数据。
以示例的方式描述存储服务器7200,接口7254可以提供处理器7210与控制器7251之间的物理连接以及网络接口卡(NIC)7240与控制器7251之间的物理连接。例如,接口7254可以以直接附加存储(DAS)方式实现,在该方式中,存储设备7250使用专用电缆直接连接。此外,例如,接口7254可以以诸如以下的各种接口方式实现:高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、外围组件互连(PCI)、快速PCI(PCIe)、快速NVM(NVMe)、电气和电子工程师协会(IEEE)1394、通用串行总线(USB)、安全数字(SD)卡、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、通用闪存(UFS)、嵌入式UFS(eUFS)和紧凑型闪存(CF)卡接口。
存储服务器7200还可以包括交换机7230和NIC 7240。交换机7230可以在处理器7210的控制下选择性地将处理器7210与存储设备7250彼此连接或者选择性地将NIC 7240与存储设备7250彼此连接。
在示例实施例中,NIC 7240可以包括网络接口卡、网络适配器等。NIC 7240可以通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络7300。NIC 7240可以包括内部存储器、数字信号处理器(DSP)、主机总线接口等,并且可以通过主机总线接口连接到处理器7210或交换机7230。主机总线接口可以通过上述接口7254的示例之一来实现。在示例实施例中,NIC 7240可以与处理器7210、交换机7230或存储设备7250中的至少一者集成。
在存储服务器7200至7200m或应用服务器7100至7100n中,处理器可以向存储设备7150至7150n和7250至7250m或存储器7120至7120n和7220至7220m发送命令以编程或读取数据。在这种情况下,数据可以是通过ECC引擎纠错后的数据。数据可以是经过数据总线反转(DBI)或数据屏蔽(DM)的数据,并且可以包括循环冗余码(CRC)信息。数据可以是用于安全或隐私的加密数据。
存储设备7150至7150m和7250至7250m可以基于从处理器接收到的读取命令将控制信号、命令和地址信号发送到NAND闪存器件7252至7252m。因此,当从NAND闪存器件7252至7252m读取数据时,RE信号可以被输入为数据输出控制信号并用于将数据输出到DQ总线。可以使用RE信号生成DQS。可以根据WE信号的上升沿或下降沿通过页面缓冲器锁存命令和地址信号。
在示例实施例中,存储设备7150至7150m和7250至7250m可以选择性地应用参照图1至图13描述的读取路径。
控制器7251可以控制存储设备7250的整体操作。在示例实施例中,控制器7251可以包括SRAM。控制器7251可以基于写入命令将数据写入到NAND闪存器件7252,或者可以基于读取命令从NAND闪存器件7252读取数据。例如,可以从存储服务器7200中的处理器7210、另一存储服务器7200m中的处理器7210m或者应用服务器7100中的处理器7110和7110n提供写入命令或读取命令。DRAM 7253可以临时存储(缓冲)要写入到NAND闪存器件7252的数据或从NAND闪存器件7252读取的数据。此外,DRAM 7253可以存储元数据。这里,元数据可以是用户数据或由控制器7251生成的用于管理NAND闪存器件7252的数据。
在根据示例实施例的存储设备及其操作方法中,LDPC输出SRAM可以用作读取缓冲器,从而减少或消除专用读取缓冲器。
在根据示例实施例的存储设备及其操作方法中,可以根据主机命令的属性和用户的需要从两个路径当中选择读取路径。
如上所阐述的,根据示例实施例,控制非易失性存储器件的控制器、包括该控制器的存储设备及其操作方法可以在读取操作中根据读取请求的属性和用户的需要来优化读取路径,从而减少读取延迟,这可以导致性能改善。
尽管已经示出和描述了示例实施例的各方面,但是对于本领域技术人员来说将明显的,在不脱离所附权利要求的范围的情况下,可以进行修改和变型。

Claims (20)

1.一种存储设备的操作方法,所述操作方法包括:
从主机设备接收主机读取命令;
识别与所述主机读取命令对应的读取路径是否对应于第一DMA读取路径,所述DMA即直接存储器访问;以及
基于所述读取路径对应于所述第一DMA读取路径,通过主机DMA管理器,将存储在纠错电路的输出缓冲器中的读取数据直接输出到所述主机设备。
2.根据权利要求1所述的操作方法,所述操作方法还包括:
基于所述读取路径不对应于所述第一DMA读取路径,将存储在所述纠错电路的所述输出缓冲器中的所述读取数据输出到缓冲存储器;以及
通过所述主机DMA管理器,将存储在所述缓冲存储器中的所述读取数据输出到所述主机设备。
3.根据权利要求1所述的操作方法,其中,所述的识别包括:根据所述主机读取命令的属性来选择所述读取路径。
4.根据权利要求1所述的操作方法,其中,所述的识别包括:识别所述主机读取命令是否是随机读取命令。
5.根据权利要求1所述的操作方法,其中,所述的识别包括:读取指示所述第一DMA读取路径的SFR,所述SFR即特殊特征寄存器。
6.根据权利要求5所述的操作方法,所述操作方法还包括:设置所述SFR。
7.根据权利要求5所述的操作方法,所述操作方法还包括:根据来自所述主机设备的请求来设置所述SFR。
8.根据权利要求5所述的操作方法,所述操作方法还包括:根据所述存储设备的内部策略来设置所述SFR。
9.根据权利要求1所述的操作方法,所述操作方法还包括:在非易失性DMA管理器的控制下,将所述读取数据从非易失性存储器件直接发送到所述纠错电路。
10.根据权利要求1所述的操作方法,其中,所述输出缓冲器包括低密度奇偶校验电路的静态随机存取存储器。
11.一种控制器的操作方法,所述控制器被配置为控制非易失性存储器件,所述操作方法包括:
从主机设备接收读取请求;
根据所述读取请求的属性来识别读取路径;
将与所述读取请求对应的读取命令发送到所述非易失性存储器件;
从所述非易失性存储器件接收与所述读取命令对应的读取数据;
对所述读取数据执行纠错操作,以获得纠错后的读取数据;以及
根据所述读取路径来执行1级DMA操作和2级DMA操作当中的一者,以将所述纠错后的读取数据提供给所述主机设备,所述DMA即直接存储器访问。
12.根据权利要求11所述的操作方法,其中,所述读取请求的属性是基于接收到的地址被确定的,并且指示所述读取请求是否是随机读取请求。
13.根据权利要求11所述的操作方法,其中,用于所述1级DMA操作的第一读取路径或用于所述2级DMA操作的第二读取路径被设置在SFR中,所述SFR即特殊特征寄存器,并且识别所述读取路径包括读取所述SFR。
14.根据权利要求13所述的操作方法,所述操作方法还包括:根据来自所述主机设备的请求或根据内部策略来设置所述SFR。
15.根据权利要求11所述的操作方法,其中,所述的执行所述1级DMA操作包括:将所述纠错后的读取数据从纠错电路的输出缓冲器直接发送到所述主机设备,并且
其中,所述的执行所述2级DMA操作包括:将所述纠错后的读取数据从所述输出缓冲器发送到缓冲存储器,并且将至少两条所述纠错后的读取数据从所述缓冲存储器发送到所述主机设备。
16.一种存储设备,包括:
至少一个非易失性存储器件;以及
控制器,所述控制器被配置为控制所述至少一个非易失性存储器件,
其中,所述控制器包括:
主机接口电路,所述主机接口电路被配置为与主机设备接口连接;
非易失性存储器接口电路,所述非易失性存储器接口电路被配置为与所述至少一个非易失性存储器件接口连接;
纠错电路,所述纠错电路被配置为:纠正从所述至少一个非易失性存储器件读取的读取数据的错误并将所述读取数据存储在输出缓冲器中,并且基于读取路径是第一读取路径,在主机DMA管理器的控制下将存储在所述输出缓冲器中的第一读取数据输出到所述主机接口电路,所述DMA即直接存储器访问;以及
缓冲存储器,所述缓冲存储器被配置为:基于所述读取路径是第二读取路径,从所述纠错电路的所述输出缓冲器接收所述第一读取数据,并且在所述主机DMA管理器的控制下将第二读取数据输出到所述主机接口电路。
17.根据权利要求16所述的存储设备,其中,所述控制器还被配置为从所述第一读取路径和所述第二读取路径当中选择一个读取路径作为所述读取路径。
18.根据权利要求16所述的存储设备,其中,所述控制器进一步被配置为:基于从所述主机设备接收到的地址来识别读取请求是否是随机读取请求,并且基于所述读取请求是所述随机读取请求,选择所述第一读取路径作为所述读取路径。
19.根据权利要求16所述的存储设备,其中,所述控制器还包括:特殊特征寄存器,所述特殊特征寄存器被配置为存储指示所述读取路径是所述第一读取路径还是所述第二读取路径的值。
20.根据权利要求16所述的存储设备,其中,所述缓冲存储器是静态随机存取存储器。
CN202211303596.3A 2021-11-24 2022-10-24 存储设备、存储设备的操作方法以及控制器的操作方法 Pending CN116168748A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2021-0162954 2021-11-24
KR20210162954 2021-11-24
KR1020220006688A KR102547251B1 (ko) 2021-11-24 2022-01-17 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
KR10-2022-0006688 2022-01-17

Publications (1)

Publication Number Publication Date
CN116168748A true CN116168748A (zh) 2023-05-26

Family

ID=82846479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211303596.3A Pending CN116168748A (zh) 2021-11-24 2022-10-24 存储设备、存储设备的操作方法以及控制器的操作方法

Country Status (4)

Country Link
US (2) US11841767B2 (zh)
EP (1) EP4187398A1 (zh)
CN (1) CN116168748A (zh)
TW (1) TW202321926A (zh)

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4171518B2 (ja) 1996-02-29 2008-10-22 ソリッド ステート ストレージ ソリューションズ エルエルシー 不揮発性半導体記憶装置
JP2007280140A (ja) 2006-04-07 2007-10-25 Sony Corp 半導体記憶装置および信号処理システム
WO2008016170A1 (en) 2006-07-31 2008-02-07 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
JP5207434B2 (ja) 2007-03-05 2013-06-12 株式会社メガチップス メモリシステム
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8341311B1 (en) 2008-11-18 2012-12-25 Entorian Technologies, Inc System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
TWI521343B (zh) 2011-08-01 2016-02-11 Toshiba Kk An information processing device, a semiconductor memory device, and a semiconductor memory device
US8724361B2 (en) 2012-02-02 2014-05-13 Mauro Pagliato DMA architecture for NAND-type flash memory
KR102002933B1 (ko) 2012-04-09 2019-07-23 삼성전자주식회사 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들
KR102002921B1 (ko) 2012-12-05 2019-07-23 삼성전자주식회사 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
KR20150061393A (ko) * 2013-11-27 2015-06-04 삼성전자주식회사 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법.
KR20160056380A (ko) * 2014-11-10 2016-05-20 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20180049338A (ko) * 2016-10-31 2018-05-11 삼성전자주식회사 저장 장치 및 그것의 동작 방법
KR102347184B1 (ko) 2017-05-23 2022-01-04 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR102310117B1 (ko) 2017-07-07 2021-10-08 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20190018323A (ko) * 2017-08-14 2019-02-22 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US10929309B2 (en) 2017-12-19 2021-02-23 Western Digital Technologies, Inc. Direct host access to storage device memory space
KR20190123984A (ko) 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10877835B2 (en) 2018-07-19 2020-12-29 Micron Technology, Inc. Write buffer management
KR102599188B1 (ko) 2018-11-09 2023-11-08 삼성전자주식회사 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법
KR20210112872A (ko) 2020-03-06 2021-09-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법

Also Published As

Publication number Publication date
EP4187398A1 (en) 2023-05-31
TW202321926A (zh) 2023-06-01
US20230161667A1 (en) 2023-05-25
US11841767B2 (en) 2023-12-12
US20240061746A1 (en) 2024-02-22

Similar Documents

Publication Publication Date Title
KR102381218B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US20180088812A1 (en) Methods of operating storage devices and data storage systems including storage devices
KR102564774B1 (ko) 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법
US12045470B2 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
KR20210006556A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US20220197510A1 (en) Storage device for executing processing code and operating method of the storage device
US11782638B2 (en) Storage device with improved read latency and operating method thereof
US10515693B1 (en) Data storage apparatus and operating method thereof
KR102695482B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US20230141837A1 (en) Device for supporting homomorphic encryption operation and operating method thereof
KR20190037659A (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 데이터 저장 장치
KR102547251B1 (ko) 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
KR20190041082A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11841767B2 (en) Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
KR20220139081A (ko) 비휘발성 메모리 장치에 데이터를 프로그램 및 검증하기 위한 장치 및 방법
KR20220076803A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20230092380A1 (en) Operation method of memory controller configured to control memory device
US20230376247A1 (en) Embedded storage device, host system having the same, and method of operating the same
EP4152333A2 (en) Operation method of memory controller configured to control memory device
US11899941B2 (en) Storage device and operating method thereof
US20230154529A1 (en) Storage controller and storage device including the same
EP4177758A1 (en) A storage device and an operating method of a storage controller thereof
US20230409219A1 (en) Storage device and method of operating the same
US20230393749A1 (en) Method and device of storage data
US20230073239A1 (en) Storage device and method of operating the same

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication