CN114968856A - 存储器系统及其操作方法 - Google Patents
存储器系统及其操作方法 Download PDFInfo
- Publication number
- CN114968856A CN114968856A CN202110940033.4A CN202110940033A CN114968856A CN 114968856 A CN114968856 A CN 114968856A CN 202110940033 A CN202110940033 A CN 202110940033A CN 114968856 A CN114968856 A CN 114968856A
- Authority
- CN
- China
- Prior art keywords
- memory
- doorbell information
- information
- memory system
- host
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 294
- 238000011017 operating method Methods 0.000 title claims description 11
- 239000000872 buffer Substances 0.000 claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 17
- 238000012937 correction Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 20
- 238000001514 detection method Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 13
- 239000010410 layer Substances 0.000 description 11
- 230000003936 working memory Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 239000000470 constituent Substances 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 1
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 1
- 101001096074 Homo sapiens Regenerating islet-derived protein 4 Proteins 0.000 description 1
- 108700012361 REG2 Proteins 0.000 description 1
- 101150108637 REG2 gene Proteins 0.000 description 1
- 108091058543 REG3 Proteins 0.000 description 1
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 1
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 1
- 102100027336 Regenerating islet-derived protein 3-alpha Human genes 0.000 description 1
- 102100037889 Regenerating islet-derived protein 4 Human genes 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000011810 insulating material Substances 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 239000002346 layers by function Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本公开涉及一种存储器系统及其操作方法。根据本公开的实施例,该存储器系统可以包括缓冲存储器,缓冲存储器用于存储能够存储从主机提取的命令的N个提交队列的尾部门铃信息或者能够存储从主机提取的命令的运行结果的N个完成队列的头部门铃信息。
Description
相关申请的交叉引用
本申请要求于2021年2月18日提交的申请号为10-2021-0021569的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
本公开的实施例涉及一种存储器系统及其操作方法。
背景技术
存储器系统包括基于来自诸如计算机、服务器、智能电话或平板PC或其它电子装置的主机的请求而存储数据的数据存储装置。存储器系统的示例涵盖从传统的基于磁盘的硬盘驱动器(HDD)到诸如固态驱动器(SSD)、通用闪存装置(UFS)或嵌入式MMC(eMMC)装置的基于半导体的数据存储装置。
存储器系统还包括控制存储器装置的存储器控制器。存储器控制器从主机接收命令,并且基于接收到的命令在存储器系统中的一个或多个存储器装置上运行该命令或控制读取操作/写入操作/擦除操作。存储器控制器用于运行固件操作以执行控制这种操作的逻辑操作。
此外,存储器系统基于多个命令队列使用接口与主机通信。在这种情况下,用于在存储器系统和主机之间通信的命令队列可以是存储了待由存储器系统执行的命令的提交队列或者是存储了相应的命令的运行结果的完成队列。
发明内容
本公开的实施例可以提供一种能够有效地管理用于存储门铃信息的资源的存储器系统和该存储器系统的操作方法。
另外,本公开的实施例可以提供一种能够防止限制可用的提交队列和完成队列的数量的问题的存储器系统和该存储器系统的操作方法。
在一个方面,本公开的实施例可以提供一种能够执行与主机的基于预设命令队列的接口操作的存储器系统。
存储器系统可以包括缓冲存储器,用于存储1)能够存储从主机提取的命令的N(其中N是自然数)个提交队列的尾部门铃信息或者2)能够存储命令的运行结果的N个完成队列的头部门铃信息。
在另一个方面,本公开的实施例可以提供一种能够执行与主机的基于预设命令队列的接口操作的存储器系统的操作方法。
存储器系统的操作方法可以包括从主机接收更新请求,该更新请求针对1)能够存储从主机提取的命令的N(其中N是自然数)个提交队列中的一个的尾部门铃信息或者2)能够存储命令的运行结果的N个完成队列中一个的头部门铃信息。
另外,存储器系统的操作方法可以包括在存储尾部门铃信息或头部门铃信息的缓冲存储器中搜索尾部门铃信息或头部门铃信息在缓冲存储器中存储的地址。
进一步,存储器系统的操作方法可以包括更新缓冲存储器中存储的尾部门铃信息或头部门铃信息。
在另一方面,本公开的实施例可以提供一种系统,该系统包括1)包含存储器装置的存储器系统以及2)包含与用于存储器装置的至少一个命令相关联的多个队列的主机。
存储器系统可以进一步包括缓冲存储器,该缓冲存储器被配置为存储带有命令的提交和完成的门铃信息。
存储器系统可以进一步包括一个或多个控制寄存器,该一个或多个控制寄存器被配置为存储关于存储门铃信息的缓冲存储器的位置的信息。
根据本公开的实施例,可以有效地管理用于存储门铃信息的资源,并且防止可用的提交队列和完成队列的数量被限制的问题。
附图说明
图1是示出根据所公开技术的实施例的存储器系统的配置的示意图。
图2是示意性地示出根据所公开技术的实施例的存储器装置的框图。
图3是示出根据所公开技术的实施例的存储器装置的字线和位线的结构的示图。
图4是示出根据本公开的实施例的存储器系统和主机的示意性结构的示图。
图5是示出根据本公开的实施例的存储器系统和主机的操作的示例的序列图。
图6是示出根据本公开的实施例的存储器系统访问缓冲存储器中存储的头部门铃信息或尾部门铃信息的示例的示图。
图7是示出根据本公开的实施例的图6的索引的结构的示例的示图。
图8是示出根据本公开的实施例的控制寄存器之间的偏移的示例的示图。
图9是示出根据本公开的实施例的缓冲存储器中用于存储头部门铃信息或尾部门铃信息的区域的示例的示图。
图10是示出根据本公开的实施例的存储器系统的操作方法的流程图。
图11是示出根据所公开技术的一些实施例的计算系统的配置的示图。
具体实施方式
在下文中,参照附图详细描述本公开的实施例。在整个说明书中,对“实施例”、“另一实施例”等的引用不一定仅针对一个实施例,并且对任何这种短语的不同引用不一定针对相同的实施例。术语“实施例”在本文中使用时不一定指所有实施例。
图1是示出根据所公开技术的实施例的存储器系统100的配置的示图。
在一些实施方案中,存储器系统100可以包括被配置为存储数据的存储器装置110以及被配置为控制存储器装置110的存储器控制器120。
存储器装置110可以包括多个存储块,多个存储块中的每一个包括存储数据的多个存储器单元。存储器装置110可以被配置为响应于从存储器控制器120接收的控制信号而操作。存储器装置110的操作可以包括,例如,读取操作、编程操作(也称为“写入操作”)、擦除操作等。
存储器装置110中的存储器单元用于存储数据并且可以布置在存储器单元阵列中。存储器单元阵列可以被划分为存储器单元的存储块,并且每个块包括存储器单元的不同页面。在NAND闪速存储器装置的典型实施方案中,存储器单元的页面是可以编程或写入的最小存储器单位,并且可以以块为单位擦除存储器单元中存储的数据。
在一些实施方案中,存储器装置110可以被实施为各种类型,诸如双倍数据速率同步动态随机存取存储器(DDR SDRAM)、第四代低功率双倍数据速率(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)或自旋转移力矩随机存取存储器(STT-RAM)。
可以在三维阵列结构中实施存储器装置110。所公开技术的一些实施例可应用于具有电荷存储层的任何类型的闪速存储器装置。在实施方案中,电荷存储层可以由导电材料形成,并且这种电荷存储层可以称为浮置栅极。在另一实施方案中,电荷存储层可以由绝缘材料形成,并且这种闪速存储器装置可以称为电荷撷取闪存(CTF)。
存储器装置110可以被配置为从存储器控制器120接收命令和地址,并且访问存储器单元阵列的使用该地址所选择的区域。也就是说,存储器装置110可以对存储器装置的具有与从存储器控制器120接收的地址相对应的物理地址的存储器区域执行与接收到的命令相对应的操作。
在一些实施方案中,存储器装置110可以执行编程操作、读取操作、擦除操作等。在编程操作期间,存储器装置110可以将数据写入到由地址所选择的区域中。在读取操作期间,存储器装置110可以从由地址所选择的存储器区域读取数据。在擦除操作期间,存储器装置110可以擦除由地址所选择的存储器区域中存储的数据。
存储器控制器120可以控制对存储器装置110执行的写入(编程)操作、读取操作、擦除操作以及后台操作。后台操作可以包括,例如被实施以优化存储器装置110的整体性能的操作,诸如垃圾收集(GC)操作、损耗均衡(WL)操作和坏块管理(BBM)操作。
存储器控制器120可以在主机的请求下控制存储器装置110的操作。可选地,当存储器控制器120执行存储器装置的这些后台操作时,即使不存在来自主机的请求,存储器控制器120也可以控制存储器装置110的操作。
存储器控制器120和主机可以是分开的装置。在一些实施方案中,存储器控制器120和主机可以被集成并且被实施为单个装置。在下面的描述中,作为示例,将把存储器控制器120和主机作为分开的装置进行讨论。
参照图1,存储器控制器120可以包括主机接口(I/F)121、存储器接口(I/F)122和控制电路123。
主机接口(I/F)121可以被配置为提供用于与主机通信的接口。
当从主机HOST接收命令时,控制电路123可以通过主机接口(I/F)121来接收该命令,并且可以执行处理接收到的命令的操作。
存储器接口(I/F)122可以直接或间接地连接到存储器装置110以提供与存储器装置110通信的接口。也就是说,存储器接口(I/F)122可以被配置为向存储器装置110和存储器控制器120提供接口以供存储器控制器120基于来自控制电路123的控制信号和指令对存储器装置110执行存储器操作。
控制电路123可以被配置为通过存储器控制器120来控制存储器装置110的操作。例如,控制电路123可以包括处理器124和工作存储器125。控制电路123可以进一步包括错误检测/校正电路(ECC电路)126等。
处理器124可以控制存储器控制器120的整体操作。处理器124可以执行逻辑操作。处理器124可以通过主机接口(I/F)121来与主机HOST通信。处理器124可以通过存储器接口(I/F)122来与存储器装置110通信。
处理器124可以用于执行与闪存转换层(FTL)相关联的操作以有效地管理对存储器系统100的存储操作。处理器124可以通过FTL将由主机提供的逻辑块地址(LBA)转换为物理块地址(PBA)。FTL可以接收LBA并且通过使用映射表来将该LBA转换为PBA。
基于映射单位,存在各种可以由FTL采用的地址映射方法。典型的地址映射方法可以包括页面映射方法、块映射方法和混合映射方法。
处理器124可以被配置为使从主机接收的数据随机化并且被配置为将经随机化的数据写入存储器单元阵列。例如,处理器124可以通过使用随机化种子来使从主机接收的数据随机化。经随机化的数据被提供到存储器装置110并且被写入存储器单元阵列。
处理器124可以被配置为在读取操作期间使从存储器装置110接收的数据去随机化。例如,处理器124可以通过使用去随机化种子来使从存储器装置110接收的数据去随机化。可以将经去随机化的数据输出到主机HOST。
处理器124可以运行固件(FW)以控制存储器控制器120的操作。也就是说,处理器124可以控制存储器控制器120的整体操作并且为了执行逻辑操作,可以运行(驱动)在启动期间加载到工作存储器125中的固件。
固件是指在某个非易失性存储器上存储并且在存储器系统100内部运行的程序或软件。
在一些实施方案中,固件可以包括各种功能层。例如,固件可以包括闪存转换层(FTL)、主机接口(HIL)以及闪存接口层(FIL)层(HIL)中的至少一个,闪存转换层(FTL)被配置为将主机HOST请求中的逻辑地址转换为存储器装置110的物理地址,主机接口层(HIL)被配置为解译主机HOST向诸如存储器系统100的数据存储装置发出的命令并且被配置为将该命令传递到FTL,闪存接口层(FIL)被配置为将由FTL发出的命令传递到存储器装置110。
例如,固件可以存储在存储器装置110中,然后加载到工作存储器125中。
工作存储器125可以存储固件、程序代码、命令或多条数据以操作存储器控制器120。工作存储器125可以包括,例如,作为易失性存储器的静态RAM(SRAM)、动态RAM(DRAM)和同步RAM(SDRAM)之中的至少一个。
错误检测/校正电路126可以被配置为通过使用错误检测和校正码来检测和校正数据中的一个或多个错误位。在一些实施方案中,进行错误检测和校正的数据可以包括工作存储器125中存储的数据以及从存储器装置110中检索的数据。
可以实施错误检测/校正电路126以通过使用错误校正码来对数据进行解码。可以通过使用各种解码方案来实施错误检测/校正电路126。例如,可以使用执行非系统码解码的解码器或执行系统码解码的解码器。
在一些实施方案中,错误检测/校正电路126可以基于扇区来检测一个或多个错误位。也就是说,每条读取数据中可以包括多个扇区。在本公开中扇区可以指的是小于闪速存储器的读取单位(例如,页面)的数据单位。可以基于地址来映射构成每条读取数据的扇区。
在一些实施方案中,错误检测/校正电路126可以计算位错误率(BER)并且逐个扇区地确定数据中的错误位的数量是否在错误校正能力之内。例如,如果BER高于参考值,则错误检测/校正电路126可以确定相应的扇区中的错误位是不可校正的并且相应的扇区被标记为“失败”。如果BER低于或等于参考值,则错误检测/校正电路126可以确定相应的扇区是可校正的并且相应的扇区可以被标记为“通过”。
错误检测/校正电路126可以连续地对所有读取数据执行错误检测和校正操作。当读取数据中的扇区可校正时,错误检测/校正电路126可以移到下一扇区以检查是否需要对下一扇区执行错误校正操作。在以这种方式完成对所有读取数据的错误检测和校正操作时,错误检测/校正电路126可以获取关于在读取数据中哪个扇区被认为不可校正。错误检测/校正电路126可以向处理器124提供这种信息(例如,不可校正位的地址)。
存储器系统100还可以包括总线127以提供存储器控制器120的构成元件121、122、124、125和126(即,主机接口121、存储器接口122、处理器124、工作存储器125和错误检测/校正电路126)之间的通道。总线127可以例如包括传递各种类型的控制信号和命令的控制总线以及传递各种类型的数据的数据总线。
作为示例,图1示出存储器控制器120的上述构成元件121、122、124、125和126。注意的是,可以省略图中示出的元件中的一些,或者存储器控制器120的上述构成元件121、122、124、125和126中的一些可以集成到单个元件中。另外,在一些实施方案中,可以将一个或多个其它构成元件添加到存储器控制器120的上述构成元件。
图2是示意性地示出根据所公开技术的实施例的存储器装置110的框图。
在一些实施方案中,存储器装置110可以包括存储器单元阵列210、地址解码器220、读取/写入电路230、控制逻辑240和电压生成电路250。
存储器单元阵列210可以包括多个存储块BLK1至BLKz,其中z是大于或等于2的自然数。
在多个存储块BLK1至BLKz中,可以按行和列设置多条字线WL和多条位线BL,并且可以布置多个存储器单元MC。
多个存储块BLK1至BLKz可以通过多条字线WL来连接到地址解码器220。多个存储块BLK1至BLKz可以通过多条位线BL来连接到读取/写入电路230。
多个存储块BLK1至BLKz中的每一个可以包括多个存储器单元。例如,多个存储器单元是非易失性存储器单元。在一些实施方案中,可以以垂直沟道结构布置这些非易失性存储器单元。
存储器单元阵列210可以被配置为具有二维结构的存储器单元阵列。在一些实施例中,存储器单元阵列210可以被布置为三维结构。
存储器单元阵列210中包括的多个存储器单元中的每一个可以存储至少一位数据。例如,存储器单元阵列210中包括的多个存储器单元中的每一个可以是被配置为存储一位数据的单层单元(SLC)。在另一示例中,存储器单元阵列210中包括的多个存储器单元中的每一个可以是被配置为每个存储器单元存储两位数据的多层单元(MLC)。在另一示例中,存储器单元阵列210中包括的多个存储器单元中的每一个可以是被配置为每个存储器单元存储三位数据的三层单元(TLC)。在另一示例中,存储器单元阵列210中包括的多个存储器单元中的每一个可以是被配置为每个存储器单元存储四位数据的四层单元(QLC)。在另一示例中,存储器单元阵列210可以包括多个存储器单元,多个存储器单元中的每一个可以被配置为每个存储器单元存储至少五位数据。
参照图2,地址解码器220、读取/写入电路230、控制逻辑240和电压生成电路250可以作为被配置为驱动存储器单元阵列210的外围电路而操作。
地址解码器220可以通过多条字线WL来连接到存储器单元阵列210。
地址解码器220可以被配置为响应于控制逻辑240的命令和控制信号而操作。
地址解码器220可以通过存储器装置110内的输入/输出缓冲器(未示出)来接收地址。地址解码器220可以被配置为对接收到的地址之中的块地址进行解码。地址解码器220可以基于经解码的块地址来选择至少一个存储块。
地址解码器220可以从电压生成电路250接收读取电压Vread和通过电压Vpass。
地址解码器220可以在读取操作期间将读取电压Vread施加到所选择的存储块内的所选择的字线WL并且将通过电压Vpass施加到剩余的未选择的字线WL。
地址解码器220可以在编程验证操作期间将由电压生成电路250生成的验证电压施加到所选择的存储块内的所选择的字线WL,并且可以将通过电压Vpass施加到剩余的未选择的字线WL。
地址解码器220可以被配置为对接收到的地址之中的列地址进行解码。地址解码器220可以将经解码的列地址传输到读取/写入电路230。
存储器装置110可以逐个页面地执行读取操作和编程操作。在请求读取操作和编程操作时接收的地址可以包括块地址、行地址和列地址中的至少一个。
地址解码器220可以基于块地址和行地址来选择一个存储块和一条字线。可以由地址解码器220对列地址进行解码并且可以向读取/写入电路230提供列地址。
地址解码器220可以包括块解码器、行解码器、列解码器和地址缓冲器中的至少一个。
读取/写入电路230可以包括多个页面缓冲器PB。读取/写入电路230可以在存储器单元阵列210执行读取操作时作为“读取电路”操作,并且可以在存储器单元阵列210执行写入操作时作为“写入电路”操作。
上述读取/写入电路230也称为页面缓冲器电路或数据寄存器电路,该页面缓冲器电路包括多个页面缓冲器PB。读取/写入电路230可以包括参与数据处理功能的数据缓冲器,并且在一些实施方案中,可以进一步包括用于数据高速缓存的高速缓存缓冲器。
多个页面缓冲器PB可以通过多条位线BL来连接到存储器单元阵列210。为了在读取操作和编程验证操作期间检测和感测存储器单元的阈值电压Vth,多个页面缓冲器PB可以连续不断地向连接到存储器单元的位线BL提供感测电流,以在感测节点处检测与根据相应的存储器单元的编程状态而变化的电流量成比例的变化,并且可以将相应的电压保存或锁存为感测数据。
读取/写入电路230可以响应于从控制逻辑240输出的页面缓冲器控制信号而操作。
在读取操作期间,读取/写入电路230感测存储器单元的电压值并且将该电压值作为数据读出。读取/写入电路230临时存储检索到的数据,并且将数据DATA输出到存储器装置110的输入/输出缓冲器。在实施例中,除了页面缓冲器PB或页面寄存器,读取/写入电路230还可以包括列选择电路。
控制逻辑240可以连接到地址解码器220、读取/写入电路230和电压生成电路250。控制逻辑240可以通过存储器装置110的输入/输出缓冲器来接收命令CMD和控制信号CTRL。
控制逻辑240可以被配置为响应于控制信号CTRL而控制存储器装置110的整体操作。控制逻辑240可以输出用于将多个页面缓冲器PB的感测节点的电压电平调整到预充电的电压电平的控制信号。
控制逻辑240可以控制读取/写入电路230以对存储器单元阵列210执行读取操作。电压生成电路250可以响应于从控制逻辑240输出的电压生成电路控制信号而生成在读取操作期间使用的读取电压Vread和通过电压Vpass。
存储器装置110中包括的存储块BLK可以包括多个页面PG。在一些实施方案中,以列进行布置的多个存储器单元形成存储器单元串,并且以行进行布置的多个存储器单元形成存储块。多个页面PG中的每一个联接到字线WL中的一条,并且存储器单元串STR中的每一个联接到位线BL中的一条。
在存储块BLK中,多条字线WL和多条位线BL可以以行和列来布置。例如,可以在行方向上布置多条字线WL中的每一条,并且可以在列方向上布置多条位线BL中的每一条。在另一示例中,可以在列方向上布置多条字线WL中的每一条,并且可以在行方向上布置多条位线BL中的每一条。
在一些实施方案中,多条字线WL和多条位线BL可以彼此交叉,从而寻址多个存储器单元MC的阵列中的单个存储器单元。在一些实施方案中,每个存储器单元MC可以包括晶体管TR,该晶体管TR包括可以保持电荷的材料层。
例如,布置在每个存储器单元MC中的晶体管TR可以包括漏极、源极和栅极。晶体管TR的漏极(或源极)可以直接或经由另一晶体管TR连接到相应的位线BL。晶体管TR的源极(或漏极)可以直接或经由另一晶体管TR连接到源极线(其可以是接地线)。晶体管TR的栅极可以包括被绝缘体围绕的浮置栅极(FG)以及栅极电压被从字线WL施加到的控制栅极(CG)。
在多个存储块BLK1至BLKz中的每一个中,可以在第一最外字线的外侧额外地布置第一选择线(也称为源极选择线或漏极选择线),在两条最外字线之中,该第一最外字线更靠近读取/写入电路230,并且可以在另外的第二最外字线的外侧额外地布置第二选择线(也称为漏极选择线或源极选择线)。
在一些实施方案中,可以在第一最外字线与第一选择线之间额外地布置至少一条虚设字线。另外,可以在第二最外字线与第二选择线之间额外地布置至少一条虚设字线。
可以逐个页面地执行存储块的读取操作和编程操作(写入操作),并且可以逐个存储块地执行擦除操作。
图3是示出根据所本公开技术的实施例的存储器装置110的字线WL和位线BL的结构的示图。
参照图3,存储器装置110具有布置存储器单元MC的内核区域和包括用于执行存储器单元阵列210的操作的电路的辅助区域(除了内核区域之外的剩余区域)。
在内核区域中,在一个方向上布置的一定数量的存储器单元可以称为“页面”PG,而串联联接的一定数量的存储器单元可以称为“存储器单元串”STR。
字线WL1至WL9可以连接到行解码器310。位线BL可以连接到列解码器320。对应于图2的读取/写入电路230的数据寄存器330可以存在于多条位线BL和列解码器320之间。
多条字线WL1至WL9可以对应于多个页面PG。
例如,多条字线WL1至WL9中的每一条可以对应于如图3所示的一个页面PG。当多条字线WL1至WL9中的每一条具有较大的大小时,多条字线WL1至WL9中的每一条可以对应于至少两个(例如,两个或四个)页面PG。每个页面PG是编程操作和读取操作的最小单位,并且相同页面PG内的所有存储器单元MC可以在进行编程操作和读取操作时执行同步操作。
多条位线BL可以连接到列解码器320。在一些实施方案中,多条位线BL可以被划分为奇数编号位线BL和偶数编号位线BL,使得一对奇数编号位线BL和偶数编号位线BL共同联接到列解码器320。
在访问存储器单元MC时,行解码器310和列解码器320用于基于地址来定位期望的存储器单元。
在一些实施方案中,由于存储器装置110的包括编程操作和读取操作的所有数据处理都经由数据寄存器330发生,因此数据寄存器330起着重要作用。如果数据寄存器330的数据处理延迟,则所有其它区域需要等待直到数据寄存器330完成数据处理,从而降低存储器装置110的整体性能。
参照图3所示的示例,在一个存储器单元串STR中,多个晶体管TR1至TR9可以分别连接到多条字线WL1至WL9。在一些实施方案中,多个晶体管TR1至TR9对应于存储器单元MC。在本示例中,多个晶体管TR1至TR9包括控制栅极CG和浮置栅极FG。
多条字线WL1至WL9包括两条最外字线WL1和WL9。可以在第一最外字线WL1外侧额外地布置第一选择线DSL,与另一最外字线WL9相比,第一最外字线WL1更靠近数据寄存器330并且具有更短的信号路径。可以在第二最外字线WL9的外侧额外地布置第二选择线SSL。
由第一选择线DSL控制以导通/关断的第一选择晶体管D-TR具有连接到第一选择线DSL的栅极电极,但不包括浮置栅极FG。由第二选择线SSL控制以导通/关断的第二选择晶体管S-TR具有连接到第二选择线SSL的栅极电极,但不包括浮置栅极FG。
第一选择晶体管D-TR用作将相应的存储器单元串STR连接到数据寄存器330的开关电路。第二选择晶体管S-TR用作将相应的存储器单元串STR连接到源极线SL的开关。也就是说,第一选择晶体管D-TR和第二选择晶体管S-TR可以用于启用或停用相应的存储器单元串STR。
在一些实施方案中,存储器系统100向第一选择晶体管D-TR的栅极电极施加预定的导通电压Vcc,从而导通第一选择晶体管D-TR,并且向第二选择晶体管S-TR的栅极电极施加关断电压(例如,0V),从而关断第二选择晶体管S-TR。
在读取操作或验证操作期间,存储器系统100导通第一选择晶体管D-TR和第二选择晶体管S-TR两者。因此,在读取操作或验证操作期间,电流可以流过相应的存储器单元串STR并流到对应于地的源极线,以便可以测量位线BL的电压电平。然而,在读取操作期间,第一选择晶体管D-TR和第二选择晶体管S-TR之间的导通/关断定时可能存在时间差。
在擦除操作期间,存储器系统100可以通过源极线SL向衬底施加预定电压(例如,+20V)。存储器系统100在擦除操作期间施加一定的电压以允许第一选择晶体管D-TR和第二选择晶体管S-TR两者浮置。因此,所施加的擦除电压可以从所选择的存储器单元的浮置栅极FG移除电荷。
图4是示出根据本公开的实施例的存储器系统100和主机的示意性结构的示图。
存储器系统100可以执行与主机HOST的基于预设命令队列的接口操作。在这种情况下,可以用于在存储器系统100与主机HOST之间通信的基于命令队列的接口可以是串行ATA(SATA)、串列SCSI(SAS)和高速非易失性存储器(NVMe)。
存储器系统100可以包括能够存储数据的缓冲存储器BUF_MEM。例如,缓冲存储器BUF_MEM可以是图1所示的工作存储器125。在另一示例中,缓冲存储器BUF_MEM可以是与工作存储器125分开地添加到存储器控制器120的单独的易失性存储器(例如SRAM、DRAM、SDRAM)。
缓冲存储器BUF_MEM可以存储N(其中N为自然数)个提交队列SQ的尾部门铃信息SQ1TDBL~SQNTDBL和N个完成队列CQ的头部门铃信息CQ1HDBL~CQNHDBL。
为此,存储器系统100可以将缓冲存储器BUF_MEM的部分区域分配为能够存储尾部门铃信息和头部门铃信息的区域。
在这种情况下,将缓冲存储器BUF_MEM的部分区域分配为能够存储尾部门铃信息和头部门铃信息的区域的操作可以由例如图1所示的处理器124或者由再例如存储器系统100中包括的单独的缓冲器分配单元(BAU)执行。另外,能够存储尾部门铃信息和头部门铃信息的区域的大小可以是设定单位(例如,4KB)的倍数。
提交队列SQ是能够存储存储器系统100从主机HOST提取的命令的队列。在主机HOST将命令存储在提交队列SQ中之后,存储器系统100可以从提交队列SQ中提取命令并且运行该命令。
完成队列CQ是能够存储存储器系统100从主机HOST提取的命令的运行结果的队列。当存储器系统100将命令的运行结果存储在完成队列CQ中时,主机HOST可以根据命令的运行结果来执行后续操作。
在本公开的实施例中,主机HOST可以管理N个提交队列SQ1至SQN和N个完成队列CQ1至CQN。在这种情况下,N个提交队列SQ1至SQN和N个完成队列CQ1至CQN可以存储在主机HOST上的存储器中。
在这种情况下,可以根据各种标准来确定N的值。例如,N的值可以由主机HOST任意指定,或者可以根据存储器系统100的性能(例如,可以同时运行的内核的数量)来确定。
N个提交队列SQ1至SQN中的一个和N个完成队列CQ1至CQN中的一个可以构成一个队列对。一个提交队列SQ中存储的命令的运行结果可以存储在与相应的提交队列SQ构成队列对的完成队列CQ中。可以基于N个提交队列SQ1至SQN和N个完成队列CQ1至CQN来构成N个队列对,并且在这种情况下,存储器系统100访问N个队列对中的每一个的优先级可能有所不同。
例如,N个提交队列SQ1至SQN和N个完成队列CQ1至CQN可以被实施为循环队列或线性队列。在图4中,作为示例描述N个提交队列SQ1至SQN和N个完成队列CQ1至CQN为循环队列的情况。
每个提交队列SQ和每个完成队列CQ都可以有头部和尾部。提交队列SQ和完成队列CQ的头部或尾部可以根据在提交队列SQ和完成队列CQ中生成的输入/输出而改变。每个提交队列SQ和每个完成队列CQ的头部和尾部可以是指示相应队列中的特定元素的位置的指针。
提交队列SQ的尾部门铃信息是指示提交队列SQ的尾部已经改变的信息。
在示例中,当主机将命令输入到提交队列SQ时,主机可以将提交队列SQ的尾部门铃信息传输到存储器系统100以通知存储器系统100提交队列SQ的尾部已经改变。在这种情况下,关于提交队列SQ的尾部门铃信息可以包括提交队列SQ的改变后的尾部的值。
存储器系统100可以检查提交队列SQ的尾部门铃信息以确认提交队列SQ的尾部已经改变。进一步,存储器系统100可以基于提交队列SQ的尾部来检查从相应的提交队列SQ中提取哪个命令。
完成队列CQ的头部门铃信息是指示完成队列CQ的头部已经改变的信息。
例如,当存储器系统100处理命令然后将命令的运行结果(例如,成功/失败)输入到完成队列CQ时,可以改变完成队列CQ的头部。此时,主机可以将完成队列CQ的头部门铃信息传输到存储器系统100,以通知存储器系统100完成队列CQ的头部已经改变。在这种情况下,完成队列CQ的头部门铃信息可以包括完成队列CQ的改变后的头部的值。
存储器系统100可以检查完成队列CQ的头部门铃信息以确认相应完成队列CQ的头部已经改变。进一步,存储器系统100可以基于相应的完成队列CQ的头部来检查主机HOST是否已经完成命令处理。
如上所述,在本公开的实施例中,存储器系统100在缓冲存储器BUF_MEM中存储和管理提交队列SQ的尾部门铃信息和完成队列CQ的头部门铃信息。原因如下。
通常,存储器系统100将提交队列SQ的尾部门铃信息和完成队列CQ的头部门铃信息存储在固定大小的寄存器中。
在这种情况下,寄存器的数量和大小在设计阶段是固定的。因此,存储器系统100不可能在不改变存储器系统100的设计的情况下动态地改变寄存器存储门铃信息(即,提交队列SQ的尾部门铃信息和完成队列CQ的头部门铃信息)的间隔。
另外,在寄存器存储门铃信息的间隔的设定值大于或等于特定值的情况下,实施寄存器的硬件逻辑的大小可能超过存储器系统100的允许范围。在这种情况下,为了在存储器系统100的允许范围内实施用于存储门铃信息的寄存器,可以限制可用的提交队列SQ和完成队列CQ的数量。
然而,如果存储器系统100将门铃信息(即提交队列SQ的尾部门铃信息和完成队列CQ的头部门铃信息)存储在缓冲存储器BUF_MEM而不是寄存器中,则存储器系统100可以动态地改变存储门铃信息的位置,而与寄存器存储门铃信息的间隔无关。这是因为缓冲存储器BUF_MEM的存储容量远大于寄存器的存储容量。因此,不存在可用提交队列SQ和完成队列CQ的数量受限的问题。
另外,存储器系统100可以通过改变地址值容易地移动门铃信息在缓冲存储器BUF_MEM上存储的位置。因此,存储器系统100可以更有效地管理存储门铃信息的资源。
在下文中,将描述在主机和存储器系统100的操作期间提交队列SQ、提交队列SQ的尾部门铃信息、完成队列CQ和完成队列CQ的头部门铃信息的改变过程。
图5是示出根据本公开的实施例的存储器系统100和主机HOST的操作的示例的序列图。
参照图5,主机HOST首先可以将命令存储在提交队列SQ中(S510)。接下来,主机HOST可以请求存储器系统100以更新提交队列SQ的尾部门铃信息(S520)。
存储器系统100可以检查提交队列SQ的经更新的尾部门铃信息(S530)。进一步,存储器系统100可以从提交队列SQ中提取提交队列SQ中存储的命令(S540)。
另外,存储器系统100可以运行从提交队列SQ提取的命令(S550)。进一步,存储器系统100可以请求主机以将命令的运行结果(例如,成功/失败)存储在完成队列CQ中(S560)。
主机HOST可以检查存储器系统100的请求并且将相应命令的运行结果存储在完成队列CQ中(S570)。存储器系统100可以请求主机以更新完成队列CQ的头部门铃信息(S580)。
另外,主机HOST可以根据完成队列CQ中存储的命令的运行结果来运行后续操作(S590)。
例如,在成功运行相应的命令的情况下,主机HOST可以将后续命令存储在提交队列SQ中,从而存储器系统100可以运行后续命令。在另一示例中,在运行相应的命令的操作失败的情况下,主机HOST可以再次将相应的命令存储在提交队列SQ中,从而存储器系统100可以重新运行相应的命令。
在下文中,将描述在主机请求更新提交队列的尾部门铃信息或完成队列CQ的头部门铃信息的情况下,存储器系统100访问缓冲存储器BUF_MEM中存储的提交队列SQ的尾部门铃信息或完成队列CQ的头部门铃信息的操作。
图6是示出根据本公开的实施例的存储器系统100访问缓冲存储器BUF_MEM中存储的头部门铃信息或尾部门铃信息的示例的示图。
参照图6,存储器系统100可以进一步包括2N个控制寄存器CTRL_REG。作为示例,控制寄存器CTRL_REG可以被包括在图1所示的处理器124中。
控制寄存器CTRL_REG可以指示用于在缓冲存储器BUF_MEM中搜索尾部门铃信息或头部门铃信息的索引IDX的位置。存储器系统100可以检查主机是否已经请求更新图4中的N个提交队列SQ1至SQN中的一个的尾部门铃信息,或者主机是否已经请求更新图4中的N个完成队列CQ1至CQN中的一个的头部门铃信息,然后可以参考2N个控制寄存器CTRL_REG中的一个。
在这种情况下,每个控制寄存器CTRL_REG不存储全部尾部门铃信息或全部头部门铃信息,而仅指示用于搜索尾部门铃信息或头部门铃信息的索引IDX的位置。因此,无论尾部门铃信息或头部门铃信息的大小如何,与一个门铃信息(尾部门铃信息或头部门铃信息)相对应的控制寄存器CTRL_REG的大小都可以是恒定值(例如,4个字节)。
在图6中,2N个控制寄存器CTRL_REG之中的第一控制寄存器CTRL_REG1可以指示第一索引IDX_1的位置。第一索引IDX_1可以包括用于在缓冲存储器BUF_MEM中搜索第一尾部门铃信息SQ1TDBL的信息,该第一尾部门铃信息SQ1TDBL是N个提交队列SQ1至SQN之中的第一提交队列SQ1的尾部门铃信息。
另外,第二控制寄存器CTRL_REG2可以指示第二索引IDX_2的位置。第二索引IDX_2可以包括用于在缓冲存储器BUF_MEM中搜索第一头部门铃信息CQ1HDBL的信息,该第一头部门铃信息CQ1HDBL是N个完成队列CQ1至CQN之中的第一完成队列CQ1的头部门铃信息。
进一步,第三控制寄存器CTRL_REG3可以指示第三索引IDX_3的位置。第三索引IDX_3可以包括用于在缓冲存储器BUF_MEM中搜索第二尾部门铃信息SQ2TDBL的信息,该第二尾部门铃信息SQ2TDBL是N个提交队列SQ1至SQN之中的第二提交队列SQ2的尾部门铃信息。
另外,第四控制寄存器CTRL_REG4可以指示第四索引IDX_4的位置。第四索引IDX_4可以包括用于在缓冲存储器BUF_MEM中搜索第二头部门铃信息CQ2HDBL的信息,该第二头部门铃信息CQ2HDBL是N个完成队列CQ1至CQN之中的第二完成队列CQ2的头部门铃信息。
作为示例,存储器系统100可以通过单独的地址转换单元(ATU)或通过包括控制寄存器CTRL_REG和缓冲存储器BUF_MEM的一对或多对地址值的表来管理索引IDX。地址转换单元(ATU)可以接收源地址并且输出与源地址相对应的结果地址。
图7是示出根据本公开的实施例的图6的索引IDX的结构的示例的示图。
参照图7,索引IDX可以指示尾部门铃信息或头部门铃信息存储在缓冲存储器BUF_MEM中的地址。存储器系统100可以检查索引IDX的值,并且可以确定关于存储待搜索的提交队列SQ的尾部门铃信息或完成队列CQ的头部门铃信息的缓冲存储器BUF_MEM的地址。
在图7中,第一索引IDX_1指示第一提交队列SQ1的尾部门铃信息SQ1TDBL的地址为第一地址ADDR_1。
另外,第二索引IDX_2指示第一完成队列CQ1的头部门铃信息CQ1HDBL的地址为第二地址ADDR_2。
进一步,第三索引IDX_3指示第二提交队列SQ2的尾部门铃信息SQ2TDBL的地址为第三地址ADDR_3。
另外,第四索引IDX_4指示第二完成队列CQ2的头部门铃信息CQ2HDBL的地址为第四地址ADDR_4。
在图7中,已经示出了顺序地增加第一地址ADDR_1、第二地址ADDR_2、第三地址ADDR_3、第四地址ADDR_4的值,但对于由索引IDX指示的缓冲存储器BUF_MEM上的地址值的模式没有限制的情况。
图8是示出根据本公开的实施例的控制寄存器CTRL_REG之间的偏移的示例的示图。
参照图8,可以根据预设的步幅值DSTRD来确定两个相邻的控制寄存器CTRL_REG之间的偏移。两个相邻的控制寄存器CTRL_REG之间的偏移指两个相邻的控制寄存器CTRL_REG的地址差。当两个控制寄存器CTRL_REG彼此相邻时,这意味着与其他控制寄存器相比,两个控制寄存器CTRL_REG的地址是彼此相邻的。
例如,在步幅值DSTRD增加时,两个相邻的控制寄存器CTRL_REG之间的偏移也会增加。两个相邻的控制寄存器CTRL_REG之间的偏移可以是2(2+DSTRD)个字节。
在图8中,在步幅值DSTRD为0的情况下,两个相邻的控制寄存器CTRL_REG之间的偏移为A。
在步幅值DSTRD为1的情况下,两个相邻的控制寄存器CTRL_REG之间的偏移B大于A。如果步幅值DSTRD为2,则两个相邻的控制寄存器CTRL_REG之间的偏移C大于B。
因此,在两个相邻的控制寄存器CTRL_REG之间的偏移根据步幅值DSTRD增加的情况下,位于两个相邻的控制寄存器CTRL_REG之间的寄存器可以用于其他目的,而不是用于指示门铃信息。
图9是示出根据本公开的实施例的缓冲存储器BUF_MEM中用于存储头部门铃信息或尾部门铃信息的区域的示例的示图。
参照图9,存储器系统100可以基于提交队列SQ的数量、完成队列的数量CQ和步幅值DSTRD来设定缓冲存储器BUF_MEM中用于存储提交队列SQ的尾部门铃信息和完成队列CQ的头部门铃信息的区域的大小。
在示例中,提交队列的数量和完成队列的数量分别为N,并且步幅值DSTRD为D,存储器系统100可以将缓冲存储器BUF_MEM中用于存储提交队列SQ的尾部门铃信息和完成队列CQ的头部门铃信息的区域的大小设定为(2N*(2(2+D)))个字节。
在这种情况下,用于存储提交队列SQ的尾部门铃信息和完成队列CQ的头部门铃信息的区域不一定得是连续的区域,该区域可以由一个或多个不连续的子区域组成。然而,在这种情况下,子区域的大小是设定单位(例如,4KB)的倍数。
图10是示出根据本公开的实施例的存储器系统100的操作方法的流程图。
参照图10,存储器系统100的操作方法可以包括从主机HOST接收N(其中N是自然数)个提交队列SQ中的一个的尾部门铃信息或N个完成队列CQ中的一个的头部门铃信息的更新请求(S1010)。N个提交队列SQ中的每一个都可以存储从主机HOST提取的命令,并且N个完成队列CQ中的每一个都可以存储从主机HOST提取的命令的运行结果。
另外,存储器系统100的操作方法可以包括在存储尾部门铃信息或头部门铃信息的缓冲存储器BUF_MEM中搜索存储尾部门铃信息或头部门铃信息的地址(S1020)。
另外,存储器系统100的操作方法可以包括更新缓冲存储器BUF_MEM中存储的尾部门铃信息或头部门铃信息(S1030)。
例如,可以由存储器系统100中包括的2N个控制寄存器CTRL_REG中的一个指示用于搜索尾部门铃信息或头部门铃信息的索引IDX的位置。
索引IDX可以指示尾部门铃信息或头部门铃信息存储在缓冲存储器BUF_MEM上的地址。
可以根据预设的步幅值DSTRD来确定两个相邻的控制寄存器CTRL_REG之间的偏移。
此外,可以基于提交队列SQ的数量、完成队列CQ的数量和步幅值DSTRD来设定缓冲存储器BUF_MEM中用于存储尾部门铃信息和头部门铃信息的区域的大小。
图11是示出根据所公开技术的实施例的计算系统1100的配置的示图。
参照图11,基于所公开技术的实施例的计算系统1100可以包括:存储器系统100,电连接到系统总线1160;中央处理单元(CPU)1110,被配置为控制计算系统1100的整体操作;随机存取存储器(RAM)1120,被配置为存储与计算系统1100的操作有关的数据和信息;用户接口/用户体验(UI/UX)模块1130,被配置为向用户提供用户环境;通信模块1140,被配置为作为有线和/或无线类型与外部装置通信;以及电源管理模块1150,被配置为管理由计算系统1100使用的电力。
计算系统1100可以是个人计算机(PC)或者可以包括诸如智能电话、平板电脑或各种电子装置的移动终端。
计算系统1100可以进一步包括供应操作电压的电池,并且可以进一步包括应用芯片、图形相关模块、相机图像处理器以及动态随机存取存储器(DRAM)。其他元件对本领域技术人员将显而易见。
存储器系统100可以不仅包括诸如硬盘驱动器(HDD)的被配置为将数据存储在磁盘中的装置,而且还包括诸如固态驱动器(SSD)、通用闪存装置或嵌入式MMC(eMMC)装置的被配置为将数据存储在非易失性存储器中的装置。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、铁电RAM(FRAM)等。另外,存储器系统100可以被实施为各种类型的存储装置并且安装在各种电子装置内部。
基于上述所公开技术的实施例,可以有利地减小存储器系统的操作延迟时间或使存储器系统的操作延迟时间最小化。另外,基于所公开技术的实施例,可以有利地减小在调用特定功能的过程中产生的开销或使在调用特定功能的过程中产生的开销最小化。尽管出于说明的目的已经用特定的特性和变化的细节描述了所公开的技术的各个实施例,但是本领域技术人员将理解的是,可以基于本公开中所公开或说明的内容进行各种修改、添加和替换。
此外,在附图和说明书中已经描述了本公开的实施例。尽管这里使用了特定术语,但是这些仅是为了描述本公开的实施例。因此,本公开不限于上述实施例并且在本公开的构思和范围内可能有许多变型。对于本领域技术人员应该显而易见的是,除了本文所公开的实施例之外,还可以基于本公开的技术范围进行各种修改。可以组合实施例以形成其他实施例。
Claims (11)
1.一种存储器系统,所述存储器系统能够执行与主机的基于预设命令队列的接口操作,所述存储器系统包括:
缓冲存储器,存储N个提交队列的尾部门铃信息或者N个完成队列的头部门铃信息,所述N个提交队列能够存储从所述主机提取的命令,所述N个完成队列能够存储所述命令的运行结果;
其中N是自然数。
2.根据权利要求1所述的存储器系统,进一步包括2N个控制寄存器,其中每个控制寄存器指示用于搜索所述尾部门铃信息或所述头部门铃信息的索引的位置。
3.根据权利要求2所述的存储器系统,其中所述索引指示所述尾部门铃信息或所述头部门铃信息存储在所述缓冲存储器中的地址。
4.根据权利要求2所述的存储器系统,其中根据设定的步幅值来确定两个相邻的控制寄存器之间的偏移。
5.根据权利要求4所述的存储器系统,其中基于所述提交队列的数量、所述完成队列的数量和所述步幅值来设定所述缓冲存储器中的用于存储所述尾部门铃信息或所述头部门铃信息的区域的大小。
6.一种存储器系统的操作方法,所述存储器系统能够执行与主机的基于预设命令队列的接口操作,所述操作方法包括:
从所述主机接收针对N个提交队列中的一个的尾部门铃信息或者N个完成队列中的一个的头部门铃信息的更新请求,所述N个提交队列能够存储从所述主机提取的命令,所述N个完成队列能够存储所述命令的运行结果;
在存储所述尾部门铃信息或所述头部门铃信息的缓冲存储器中搜索所述尾部门铃信息或所述头部门铃信息在所述缓冲存储器中存储的地址;并且
更新所述缓冲存储器中存储的所述尾部门铃信息或所述头部门铃信息,
其中N是自然数。
7.根据权利要求6所述的操作方法,其中由所述存储器系统中包括的2N个控制寄存器中的一个指示用于搜索所述尾部门铃信息或所述头部门铃信息的索引的位置。
8.根据权利要求7所述的操作方法,其中所述索引指示所述尾部门铃信息或所述头部门铃信息在所述缓冲存储器中存储的地址。
9.根据权利要求7所述的操作方法,其中根据设定的步幅值来确定两个相邻的控制寄存器之间的偏移。
10.根据权利要求9所述的操作方法,其中基于所述提交队列的数量、所述完成队列的数量和所述步幅值来设定所述缓冲存储器中的用于存储所述尾部门铃信息或所述头部门铃信息的区域的大小。
11.一种系统,所述系统包括:
存储器系统,包括存储器装置;以及
主机,包括与所述存储器装置的至少一个命令相关联的多个队列,
其中所述存储器系统进一步包括:
缓冲存储器,存储带有所述命令的提交和完成的门铃信息;以及
一个或多个控制寄存器,存储关于存储所述门铃信息的所述缓冲存储器的位置的信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0021569 | 2021-02-18 | ||
KR1020210021569A KR20220118004A (ko) | 2021-02-18 | 2021-02-18 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114968856A true CN114968856A (zh) | 2022-08-30 |
CN114968856B CN114968856B (zh) | 2024-05-28 |
Family
ID=82801207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110940033.4A Active CN114968856B (zh) | 2021-02-18 | 2021-08-16 | 存储器系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11625195B2 (zh) |
KR (1) | KR20220118004A (zh) |
CN (1) | CN114968856B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11868652B2 (en) * | 2021-02-25 | 2024-01-09 | SK Hynix Inc. | Utilization based dynamic shared buffer in data storage system |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020144001A1 (en) * | 2001-03-29 | 2002-10-03 | Collins Brian M. | Apparatus and method for enhanced channel adapter performance through implementation of a completion queue engine and address translation engine |
CN107526695A (zh) * | 2016-06-20 | 2017-12-29 | 北京忆芯科技有限公司 | NVMe配置空间实现方法与装置 |
CN107977164A (zh) * | 2016-10-24 | 2018-05-01 | 三星电子株式会社 | 产生自适应中断的存储装置及其操作方法 |
CN108268331A (zh) * | 2015-04-16 | 2018-07-10 | 谷歌有限责任公司 | 虚拟机系统 |
CN110032332A (zh) * | 2017-11-30 | 2019-07-19 | 三星电子株式会社 | 存储设备和包括存储设备的电子设备 |
US20190243571A1 (en) * | 2019-04-12 | 2019-08-08 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
CN110109626A (zh) * | 2019-05-20 | 2019-08-09 | 哈尔滨工业大学 | 一种基于FPGA的NVMe SSD命令处理方法 |
CN111221476A (zh) * | 2020-01-08 | 2020-06-02 | 深圳忆联信息系统有限公司 | 提升ssd性能的前端命令处理方法、装置、计算机设备及存储介质 |
US20200174819A1 (en) * | 2017-09-26 | 2020-06-04 | Intel Corporation | Methods and apparatus to process commands from virtual machines |
CN111897665A (zh) * | 2020-08-04 | 2020-11-06 | 北京泽石科技有限公司 | 数据队列的处理方法及装置 |
CN112347012A (zh) * | 2016-06-20 | 2021-02-09 | 北京忆芯科技有限公司 | 支持SR-IOV的NVMe控制器及方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523060B1 (en) * | 1995-04-07 | 2003-02-18 | Cisco Technology, Inc. | Method and apparatus for the management of queue pointers by multiple processors in a digital communications network |
US20030145012A1 (en) * | 2002-01-31 | 2003-07-31 | Kurth Hugh R. | Shared resource virtual queues |
US20040019882A1 (en) * | 2002-07-26 | 2004-01-29 | Haydt Robert J. | Scalable data communication model |
US8886741B2 (en) * | 2011-06-21 | 2014-11-11 | Intel Corporation | Receive queue models to reduce I/O cache consumption |
KR20220105304A (ko) * | 2021-01-20 | 2022-07-27 | 에스케이하이닉스 주식회사 | 시스템 및 시스템의 동작 방법 |
US11509592B2 (en) * | 2021-02-08 | 2022-11-22 | Microsoft Technology Licensing, Llc | Dynamic network receiver-driven data scheduling over a datacenter network for managing endpoint resources and congestion mitigation |
-
2021
- 2021-02-18 KR KR1020210021569A patent/KR20220118004A/ko active Search and Examination
- 2021-07-09 US US17/372,053 patent/US11625195B2/en active Active
- 2021-08-16 CN CN202110940033.4A patent/CN114968856B/zh active Active
-
2023
- 2023-03-08 US US18/180,125 patent/US20230221895A1/en active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020144001A1 (en) * | 2001-03-29 | 2002-10-03 | Collins Brian M. | Apparatus and method for enhanced channel adapter performance through implementation of a completion queue engine and address translation engine |
CN108268331A (zh) * | 2015-04-16 | 2018-07-10 | 谷歌有限责任公司 | 虚拟机系统 |
CN107526695A (zh) * | 2016-06-20 | 2017-12-29 | 北京忆芯科技有限公司 | NVMe配置空间实现方法与装置 |
CN112347012A (zh) * | 2016-06-20 | 2021-02-09 | 北京忆芯科技有限公司 | 支持SR-IOV的NVMe控制器及方法 |
CN107977164A (zh) * | 2016-10-24 | 2018-05-01 | 三星电子株式会社 | 产生自适应中断的存储装置及其操作方法 |
US20200174819A1 (en) * | 2017-09-26 | 2020-06-04 | Intel Corporation | Methods and apparatus to process commands from virtual machines |
CN110032332A (zh) * | 2017-11-30 | 2019-07-19 | 三星电子株式会社 | 存储设备和包括存储设备的电子设备 |
US20190243571A1 (en) * | 2019-04-12 | 2019-08-08 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
CN110109626A (zh) * | 2019-05-20 | 2019-08-09 | 哈尔滨工业大学 | 一种基于FPGA的NVMe SSD命令处理方法 |
CN111221476A (zh) * | 2020-01-08 | 2020-06-02 | 深圳忆联信息系统有限公司 | 提升ssd性能的前端命令处理方法、装置、计算机设备及存储介质 |
CN111897665A (zh) * | 2020-08-04 | 2020-11-06 | 北京泽石科技有限公司 | 数据队列的处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
NVM EXPRESS INC: ""NVM Express Base Specification(Revision 1.4)"", pages: 3 * |
Also Published As
Publication number | Publication date |
---|---|
KR20220118004A (ko) | 2022-08-25 |
US20220261185A1 (en) | 2022-08-18 |
US20230221895A1 (en) | 2023-07-13 |
US11625195B2 (en) | 2023-04-11 |
CN114968856B (zh) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11262939B2 (en) | Memory system, memory controller, and operation method | |
US11409470B2 (en) | Memory system, memory controller, and method of operating memory system | |
US20230333932A1 (en) | Memory system and operating method thereof | |
CN114067870A (zh) | 存储器系统、存储器装置以及用于操作存储器装置的方法 | |
CN114863962A (zh) | 存储器系统及其操作方法 | |
CN113703662B (zh) | 存储器系统、存储器控制器及其操作方法 | |
CN114860153A (zh) | 系统及其操作方法 | |
CN114090473A (zh) | 存储器系统、存储器控制器及操作存储器系统的方法 | |
US20230221895A1 (en) | Memory system and operating method of memory system storing doorbell information in the buffer memory | |
CN115963981A (zh) | 存储器系统及存储器系统的操作方法 | |
CN115952115A (zh) | 基于融合链表控制同步操作的存储器控制器及其操作方法 | |
CN116136738A (zh) | 使用外部装置执行后台操作的存储器系统及其操作方法 | |
CN115206393A (zh) | 存储器装置及存储器装置的操作方法 | |
CN114520013A (zh) | 存储器系统及其操作方法 | |
US11355210B2 (en) | Memory system and operating method thereof | |
US12099751B2 (en) | Memory system, memory controller and operating method of the memory system operating as read boost mode | |
US11636007B2 (en) | Memory system and operating method thereof for flushing data in data cache with parity | |
CN115223635A (zh) | 存储器系统及存储器系统的操作方法 | |
KR20220163661A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20240058593A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20230163864A (ko) | 가비지 컬렉션의 희생 블록을 결정하는 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 | |
CN114968078A (zh) | 存储器装置及其操作方法 | |
CN116303107A (zh) | 管理与多个分区相对应的数据的存储器系统及其操作方法 | |
CN114077385A (zh) | 存储器系统、存储器控制器以及操作存储器系统的方法 | |
CN115116517A (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 |