CN112445733A - 存储器系统、存储器控制器以及操作方法 - Google Patents
存储器系统、存储器控制器以及操作方法 Download PDFInfo
- Publication number
- CN112445733A CN112445733A CN202010305496.9A CN202010305496A CN112445733A CN 112445733 A CN112445733 A CN 112445733A CN 202010305496 A CN202010305496 A CN 202010305496A CN 112445733 A CN112445733 A CN 112445733A
- Authority
- CN
- China
- Prior art keywords
- buffer
- read
- write
- slot
- slots
- 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.)
- Withdrawn
Links
Images
Classifications
-
- 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
- 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/0614—Improving the reliability of 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0653—Monitoring storage devices or 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/0658—Controller construction 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
-
- 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/26—Sensing or reading circuits; Data output circuits
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)
- Read Only Memory (AREA)
Abstract
本公开的实施例涉及存储器系统、存储器控制器以及操作方法,该存储器系统、存储器控制器以及操作方法:将缓冲池中多个缓冲槽中的一个或多个分配到写入缓冲器作为写入缓冲槽,或者分配到读取缓冲器作为读取缓冲槽;配置分别指示剩余分配时段的关于各个写入缓冲槽和各个读取缓冲槽的计数信息的初始值;并且当将数据写入到写入缓冲器时,更新关于至少一些写入缓冲槽中的每一个的计数信息,或者当从读取缓冲器读出数据时,更新关于至少一些读取缓冲槽中的每一个的计数信息,从而提供最佳的数据读取性能和写入性能并最小化在动态地改变缓冲器大小的过程中导致的开销。
Description
相关申请的交叉引用
本申请要求于2019年8月30日向韩国知识产权局提交的申请号为10-2019-0107212的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
本公开的实施例涉及一种存储器系统、存储器控制器以及操作方法。
背景技术
存储器系统基于诸如计算机、移动终端(例如,智能电话、平板PC等)或各种其他电子装置等的主机的请求来存储数据。存储器系统可以包括诸如固态驱动器(SSD)、通用闪存(UFS)装置、嵌入式MMC(eMMC)装置等的用于将数据存储在非易失性存储器中的装置,或者诸如硬盘驱动器(HDD)的将数据存储在磁盘中的装置。
存储器系统可以进一步包括用于控制存储器装置的存储器控制器。存储器控制器可以从主机接收命令,并且基于接收到的命令,可以执行或控制从存储器系统中包括的易失性存储器或非易失性存储器读取数据、将数据写入其中或向其中擦除数据的操作。另外,存储器控制器可以驱动用于执行逻辑运算的固件以运行或控制这些操作。
存储器控制器使用读取缓冲器进行读取操作,并使用写入缓冲器进行写入操作。在这种情况下,在有限的缓冲器空间内提供最佳性能的读取缓冲器和写入缓冲器中的每一个的大小可能会随时间持续变化。因此,需要存储器控制器动态地改变这些缓冲器中的每一个的大小,同时最小化由缓冲器大小的改变所造成的开销。
发明内容
本公开的实施例可以提供一种能够提供最佳读取性能和写入性能的存储器系统、存储器控制器和操作方法。
另外,本公开的实施例可以提供一种能够最小化在动态地改变缓冲器大小的过程中引起的开销的存储器系统、存储器控制器和操作方法。
根据一方面,本公开的实施例可以提供一种存储器系统,该存储器系统包括:存储器装置,包括多个存储块;以及存储器控制器,被配置成控制该存储器装置。
存储器控制器可以将缓冲池中的多个缓冲槽中的一个或多个分配到写入缓冲器作为写入缓冲槽或分配到读取缓冲器作为读取缓冲槽。
存储器控制器可以配置分别指示剩余分配时段的关于各个写入缓冲槽和各个读取缓冲槽的计数信息的初始值。
当数据被写入到写入缓冲器时,存储器控制器可以更新关于至少一些写入缓冲槽中的每一个的计数信息。
可选地,当从读取缓冲器读出数据时,存储器控制器可以更新关于至少一些读取缓冲槽中的每一个的计数信息。
当对写入缓冲槽之中的目标写入缓冲槽的写入操作完成时,存储器控制器可以将关于目标写入缓冲槽的计数信息的值减小第一值。
当关于目标写入缓冲槽的计数信息的值小于或等于第一阈值计数值时,存储器控制器可以将目标写入缓冲槽归还到缓冲池。
当对读取缓冲槽之中的目标读取缓冲槽的读取操作完成时,存储器控制器可以将关于目标读取缓冲槽的计数信息的值减小第二值。
当关于目标读取缓冲槽的计数信息的值小于或等于第二阈值计数值时,存储器控制器可以将目标读取缓冲槽归还到缓冲池。
存储器控制器可以基于写入缓冲槽的数量(L)、从主机接收的写入数据的大小(M)或写入缓冲槽的大小(N)来确定关于写入缓冲槽中的每一个的计数信息的初始值。
存储器控制器可以基于读取缓冲槽的数量(L')、读取数据的大小(M')和读取缓冲槽的大小(N')来确定关于读取缓冲槽中的每一个的计数信息的初始值。
根据另一方面,本公开的实施例可以提供一种存储器控制器,该存储器控制器包括:存储器接口,被配置成与包括多个存储块的存储器装置通信;以及控制电路,被配置成控制存储器装置。
控制电路可将缓冲池中的多个缓冲槽中的一个或多个分配到写入缓冲器作为写入缓冲槽或分配到读取缓冲器作为读取缓冲槽。
控制电路可以配置分别指示剩余分配时段的关于各个写入缓冲槽和各个读取缓冲槽的计数信息的初始值。
当数据被写入到写入缓冲器时,控制电路可以更新关于至少一些写入缓冲槽中的每一个的计数信息。
可选地,当从读取缓冲器读出数据时,控制电路可以更新关于至少一些读取缓冲槽中的每一个的计数信息。
当对写入缓冲槽之中的目标写入缓冲槽的写入操作完成时,控制电路可以将关于目标写入缓冲槽的计数信息的值减小第一值。
当关于目标写入缓冲槽的计数信息的值小于或等于第一阈值计数值时,控制电路可以将目标写入缓冲槽归还到缓冲池。
当对读取缓冲槽之中的目标读取缓冲槽的读取操作完成时,控制电路可以将关于目标读取缓冲槽的计数信息的值减小第二值。
当关于目标读取缓冲槽的计数信息的值小于或等于第二阈值计数值时,控制电路可以将目标读取缓冲槽归还到缓冲池。
控制电路可以基于写入缓冲槽的数量(L)、从主机接收的写入数据的大小(M)和写入缓冲槽的大小(N)来确定关于写入缓冲槽中的每一个的计数信息的初始值。
控制电路可以基于读取缓冲槽的数量(L')、读取数据的大小(M')和读取缓冲槽的大小(N')来确定关于读取缓冲槽中的每一个的计数信息的初始值。
根据另一方面,本公开的实施例可以提供一种操作存储器控制器的方法。
操作存储器控制器的方法可以包括以下步骤:将缓冲池中的多个缓冲槽动态地配置为写入缓冲器中的一个或多个写入缓冲槽或读取缓冲器中的一个或多个读取缓冲槽。
操作存储器控制器的方法可以包括以下步骤:配置分别指示剩余分配时段的关于各个写入缓冲槽和各个读取缓冲槽的计数信息的初始值。
操作存储器控制器的方法可以包括以下步骤:当将数据写入到写入缓冲器时,更新关于至少一些写入缓冲槽中的每一个的计数信息,或者当从读取缓冲器读出数据时,更新关于至少一些读取缓冲槽中的每一个的计数信息。
根据另一方面,本公开的实施例可以提供一种控制器,该控制器包括具有多个槽的池、缓冲器和处理器。
处理器可以将一个或多个槽分配到缓冲器,并为所分配的槽中的每一个设置计数值。
每次将从主机提供的数据写入相应的分配的槽中或从分配的槽中读出数据到主机时,处理器可以减小所分配的槽中的每一个的计数值。
当相应槽的计数值达到阈值时,处理器可以将每个槽归还到池。
根据本公开的实施例,可以提供最佳的读取性能和写入性能。
另外,根据本公开的实施例,可以最小化在动态地改变缓冲器大小的过程中引起的开销。
附图说明
通过下面结合附图的详细描述,本公开的上述和其他方面、特征和优点将变得更加明显,其中:
图1是示意性地示出根据本公开的实施例的存储器系统的配置的示图;
图2是示意性地示出根据本公开的实施例的存储器装置的框图;
图3是示意性地示出根据本公开的实施例的存储器装置的存储块的示图;
图4是示出根据本公开的实施例的存储器装置的字线和位线的结构的示图;
图5是示出根据本公开的实施例的在存储器系统中配置写入缓冲器和读取缓冲器的示例的示图;
图6是示出根据本公开的实施例的更新关于存储器系统中的一些写入缓冲槽或读取缓冲槽的计数信息的示例的示图;
图7是示出根据本公开的实施例的减小存储器系统中的写入缓冲槽的计数信息值的示例的示图;
图8是示出根据本公开的实施例的将写入缓冲槽归还到存储器系统中的缓冲池的示例的示图;
图9是示出图7和图8所描述的操作的流程图;
图10是示出根据本公开的实施例的减小关于存储器系统中的读取缓冲槽的计数信息值的示例的示图;
图11是示出根据本公开的实施例的将读取缓冲槽归还到存储器系统中的缓冲池的示例的示图;
图12是示出图10和图11所描述的操作的流程图;
图13是示出根据本公开的实施例的在存储器系统中配置写入缓冲器的示例的示图;
图14是示出根据本公开的实施例的在存储器系统中根据写入命令的优先级来不同地设置写入缓冲槽的数量的示例的示图;
图15是示出根据本公开的实施例的设置关于存储器系统中的每个写入缓冲槽的计数信息的初始值的示例的示图;
图16是示出根据本公开的实施例的在存储器系统中配置读取缓冲器的示例的示图;
图17是示出根据本公开的实施例的在存储器系统中根据读取命令的优先级来不同地设置读取缓冲槽的数量的示例的示图;
图18是示出根据本公开的实施例的设置关于存储器系统中的每个读取缓冲槽的计数信息的初始值的示例的示图;
图19是示出根据本公开的实施例的操作存储器控制器的方法的流程图;并且
图20是示出根据本公开的实施例的计算系统的配置的示图。
具体实施方式
下面参照附图详细描述本公开的实施例。在整个说明书中,对“实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。
图1是示意性地示出根据本公开的实施例的存储器系统100的配置的示图。
参照图1,存储器系统100可以包括用于存储数据的存储器装置110、用于控制存储器装置110的存储器控制器120等。
存储器装置110包括多个存储块,并且响应于存储器控制器120的控制而操作。在这种情况下,存储器装置110的操作可以包括例如读取操作、编程操作(也称为“写入操作”)、擦除操作等。
存储器装置110可以包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元(以下简称为“单元”)。这样的存储器单元阵列可以存在于存储块内部。
例如,存储器装置110可以被实施为诸如以下的各种类型的存储器中的任意一种:双倍数据速率同步动态随机存取存储器(DDR SDRAM)、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功耗DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、3D NAND闪速存储器、NOR闪速存储器、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)和/或自旋转移力矩随机存取存储器(STT-RAM)。
存储器装置110可以被配置为三维阵列结构。本公开的实施例可以应用于电荷存储层由绝缘膜形成的电荷撷取闪存(CTF),以及电荷存储层由导电浮栅形成的闪速存储器装置。
存储器装置110被配置成从存储器控制器120接收命令、地址等,并访问由存储器单元阵列中的地址选择的区域。也就是说,存储器装置110可以针对由地址选择的区域执行与命令对应的操作。
例如,存储器装置110可以执行编程操作、读取操作、擦除操作等。在这方面,在编程操作期间,存储器装置110可以将数据编程在由地址选择的区域中。在读取操作中,存储器装置110可以从由地址选择的区域读取数据。在擦除操作中,存储器装置110可以擦除存储在由地址选择的区域中的数据。
存储器控制器120可以控制对存储器装置110的写入(编程)操作、读取操作、擦除操作和后台操作。后台操作可以包括例如垃圾收集(GC)、损耗均衡(WL)或坏块管理(BBM)。
存储器控制器120可以根据主机(HOST)的请求来控制存储器装置110的操作。可选地,在没有主机请求的情况下,存储器控制器120也可以控制存储器装置110的操作。
存储器控制器120和主机可以是单独的装置。可选地,存储器控制器120和主机可以被集成到一个装置中。在下面的描述中,通过示例的方式,将存储器控制器120和主机视为单独的装置。
参照图1,存储器控制器120可以包括存储器接口122、控制电路123和主机接口121。
主机接口121提供用于与主机通信的接口。
控制电路123可以通过主机接口121从主机接收命令,并且可以处理接收到的命令。
存储器接口122连接到存储器装置110,以便提供用于与存储器装置110通信的接口。也就是说,存储器接口122可以被配置成响应于控制电路123的控制来提供存储器装置110与存储器控制器120之间的接口。
控制电路123执行存储器控制器120的全部控制操作,从而控制存储器装置110。为此,例如,控制电路123可以包括处理器124和/或工作存储器125。在实施例中,控制电路123可以进一步包括错误检测和校正电路(ECC电路)126。
处理器124可以控制存储器控制器120的全部操作,并且可以执行逻辑运算。处理器124可以通过主机接口121与主机通信,并且可以通过存储器接口122与存储器装置110通信。
处理器124可以执行闪存转换层(FTL)的功能。处理器124可以通过闪存转换层(FTL)将由主机提供的逻辑块地址(LBA)转换为物理块地址(PBA)。闪存转换层(FTL)可以接收逻辑块地址(LBA),并且可以借由映射表将其转换为物理块地址(PBA)。
FTL可以依照映射单位使用几种映射地址的方法中的任意一种。典型的地址映射方法包括页面映射方法、块映射方法和混合映射方法。
处理器124被配置成使从主机接收的数据随机化。例如,处理器124可以使用随机化种子来使从主机接收的数据随机化。经随机化的数据作为待存储的数据被提供到存储器装置110,并且被编程在存储器单元阵列中。
处理器124被配置成在读取操作期间使从存储器装置110接收的数据去随机化。例如,处理器124可以使用去随机化种子使从存储器装置110接收的数据去随机化。经去随机化的数据可以被输出到主机。
处理器124可以运行固件以控制存储器控制器120的操作。换言之,处理器124可以在启动时运行(驱动)加载在工作存储器125中的固件,以便控制存储器控制器120的全部操作并执行逻辑运算。
固件是在存储器系统100中运行的程序,并且可以包括各种功能层。
例如,固件可以包括以下中的一个或多个:闪存转换层(FTL),执行来自主机的逻辑地址和存储器装置110的物理地址之间的转换;主机接口层(HIL),解释来自主机的命令并将其传输到闪存转换层(FTL);以及闪存接口层(FIL),将由闪存转换层(FTL)指示的命令传输到存储器装置110。
例如,固件可以存储在存储器装置110中,然后可以被加载在工作存储器125中。
工作存储器125可以存储用于驱动存储器控制器120的固件、程序代码、命令或数据。工作存储器125可以包括例如作为易失性存储器的静态RAM(SRAM)、动态RAM(DRAM)和/或同步DRAM(SDRAM)。
错误检测和校正电路126可以被配置成检测使用错误校正码识别的数据的错误位并且对检测到的错误位进行校正。此处,被识别的数据可以是存储在工作存储器125中的数据或从存储器装置110读取的数据。
可以实施错误检测和校正电路126,以便利用错误校正码对数据进行解码。错误检测和校正电路126可以被实施为各种代码解码器中的任意一种。例如,可以使用执行非系统码解码的解码器或执行系统码解码的解码器。
例如,错误检测和校正电路126可以针对每条读取数据以扇区为单位检测错误位。也就是说,每条读取数据可以包括多个扇区。扇区可以表示比作为闪速存储器的读取单位的页面小的数据单位。构成每条读取数据的扇区可以通过地址彼此对应。
错误检测和校正电路126可以产生误码率(BER),并且可以以扇区为单位确定校正是否可行。例如,如果误码率(BER)高于参考值,则错误检测和校正电路126可以确定相应扇区是不可校正的(失败)。另一方面,如果误码率(BER)小于参考值,则错误检测和校正电路126可以确定相应扇区是可校正的(通过)。
错误检测和校正电路126可以对所有读取数据顺序地执行错误检测和校正操作。如果读取数据中包括的扇区是可校正的,则错误检测和校正电路126可以省略对下一读取数据的相应扇区的错误检测和校正操作。如果如上所述完成了对所有读取数据的错误检测和校正操作,则错误检测和校正电路126可以将被确定为不可校正的扇区检测为最后一个。可以将一个或多个扇区确定为不可校正的。错误检测和校正电路126可以将关于被确定为不可校正的扇区的信息(例如,地址信息)传输到处理器124。
总线127可以被配置成提供存储器控制器120的元件121、122、124、125和126之间的通道。总线127可以包括例如用于传输各种控制信号、命令等的控制总线,以及用于传输各种数据的数据总线。
图1所示的存储器控制器120的元件仅是示例。这些元件中的一些可以被省略,和/或两个或更多个元件可以被集成到一个元件中。当然,存储器控制器120可以包括附加元件。
参照图2更详细地描述存储器装置110。
图2是示意性地示出根据本公开的实施例的存储器装置110的框图。
参照图2,存储器装置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中的多个存储器单元中的每一个可以是存储一位数据的单层单元(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的读取操作期间作为“读取电路”而操作,并且可以在其写入操作期间作为“写入电路”而操作。
上述读取和写入电路230也可以被称为包括多个页面缓冲器(PB)的“页面缓冲器电路”或“数据寄存器电路”。此处,读取和写入电路230可以包括执行数据处理功能的数据缓冲器,并且在某些情况下,可以进一步包括执行高速缓存功能的高速缓存缓冲器。
多个页面缓冲器(PB)可以通过多个位线(BL)连接到存储器单元阵列210。为了在读取操作和编程验证操作期间感测存储器单元的阈值电压(Vth),多个页面缓冲器(PB)可以继续向连接到存储器单元的位线(BL)供应感测电流,并且可以检测根据相应的存储器单元的编程状态流经感测节点的电流量的改变,然后将其锁存为感测数据。
读取和写入电路230可以响应于从控制逻辑240输出的页面缓冲器控制信号而操作。
在读取操作中,读取和写入电路230感测存储器单元的数据,从而临时存储读取数据,然后将数据(DATA)输出到存储器装置110的输入/输出缓冲器。在实施例中,读取和写入电路230可以包括列选择电路以及页面缓冲器(PB)或页面寄存器。
控制逻辑240可以连接到地址解码器220、读取和写入电路230、电压生成电路250等。控制逻辑240可以通过存储器装置110的输入/输出缓冲器接收命令(CMD)和控制信号(CTRL)。
控制逻辑240可以被配置成响应于控制信号(CTRL)控制存储器装置110的全部操作。控制逻辑240可以输出用于调整多个页面缓冲器(PB)的感测节点的预充电电位电平的控制信号。
控制逻辑240可以控制读取和写入电路230,以便执行存储器单元阵列210的读取操作。电压生成电路250可以响应于从控制逻辑240输出的电压生成电路控制信号来生成在读取操作中使用的读取电压(Vread)和通过电压(Vpass)。
图3是示意性地示出根据本公开的实施例的存储器装置110的代表性存储块BLK的示图。
参照图3,存储器装置110中包括的存储块(BLK)可以被配置为例如彼此交叉的多个页面(PG)和多个串(STR)。
多个页面(PG)对应于多个字线(WL),并且多个串(STR)对应于多个位线(BL)。
多个字线(WL)和多个位线(BL)可以被布置成在存储块(BLK)中彼此交叉。例如,多个字线(WL)可以沿行方向布置,并且多个位线(BL)可以沿列方向布置。作为另一示例,多个字线(WL)可以沿列方向布置,并且多个位线(BL)可以沿行方向布置。
多个字线(WL)和多个位线(BL)彼此交叉,从而限定了多个存储器单元(MC)。晶体管(TR)可以设置在每个存储器单元(MC)中。
例如,设置在每个存储器单元(MC)中的晶体管(TR)可以包括漏极、源极、栅极等。晶体管(TR)的漏极(或源极)可以直接地或经由另一晶体管(TR)连接到相应的位线BL。晶体管(TR)的源极(或漏极)可以直接地或经由另一晶体管(TR)连接到源极线(可以地)。晶体管(TR)的栅极可以包括浮置栅极(FG)和控制栅极(CG),其中浮置栅极(FG)由绝缘体包围,并且栅极电压被从字线(WL)施加到控制栅极(CG)。
多个存储块(BLK1)至(BLKz)中的每一个可以进一步包括布置在两个最外字线之中更靠近读取和写入电路230的第一最外字线外部的第一选择线(也被称为“源极选择线”或“漏极选择线”)以及布置两个最外字线之中第二最外字线外部的第二选择线(也被称为“漏极选择线”或“源极选择线”)。
在某些情况下,可以在第一最外字线和第一选择线之间进一步布置一个或多个虚设字线。另外,可以在第二最外字线和第二选择线之间进一步布置一个或多个虚设字线。
利用如图3所示的存储块结构,可以以页面为单位执行读取操作和编程操作(写入操作),并且可以以存储块为单位执行擦除操作。
图4是示出根据本公开的实施例的存储器装置110的字线(WL)和位线(BL)的结构的示图。
参照图4,存储器装置110包括存储器单元(MC)位于其中的内核区域,以及与内核区域分开、用于支持存储器单元阵列210的操作的辅助区域。
内核区域可以包括页面PG和串STR。在内核区域中,多个字线(WL1)至(WL9)和多个位线(BL)布置成彼此交叉。
多个字线(WL1)至(WL9)可以连接到行解码器410,并且多个位线(BL)可以连接到列解码器420。在多个位线(BL)和列解码器420之间可以设置对应于读取和写入电路230的数据寄存器430。
多个字线(WL1)至(WL9)对应于多个页面(PG)。
例如,如图4所示,多个字线(WL1)至(WL9)中的每一个可以对应于一个页面(PG)。可选地,如果多个字线(WL1)至(WL9)中的每一个的大小较大,则多个字线(WL1)至(WL9)中的每一个可以对应于两个或更多个(例如,两个或四个)页面(PG)。页面(PG)可以是用于执行编程操作和读取操作的最小单位。在编程操作和读取操作期间,相同页面(PG)中的所有存储器单元(MC)可以同时执行操作。
多个位线(BL)可以被划分为可以连接到列解码器420的奇数位线(BL)和偶数位线(BL)。
为了访问存储器单元(MC),首先,地址可以经由输入/输出端子通过行解码器410和列解码器420进入内核区域,并且可以指定目标存储器单元。指定目标存储器单元表示访问与行解码器410连接的字线(WL1)至(WL9)和与列解码器420连接的位线(BL)彼此交叉的位置的存储器单元(MC),以便将数据编程到存储器单元(MC)或从存储器单元(MC)读取经编程的数据。
第一方向(例如,X轴方向)上的页面(PG)由公共字线(WL)限定,并且第二方向(例如,Y轴方向)上的串(STR)由公共位线(BL)限定(连接)。被公共线限定表示该线由具有相同结构的材料构成并且同时地向该线施加相同的电压。然而,由于电压降,施加到串联连接的最前面的存储器单元(MC)的电压可能与施加到中间位置的存储器单元(MC)或施加到最后面的存储器单元(MC)的电压略有不同。
由于存储器装置110的所有数据处理都是由通过数据寄存器430进行编程和读取来执行的,因此数据寄存器430起到关键作用。如果数据寄存器430的数据处理缓慢,则所有其他区域必须等待,直到数据寄存器430完成数据处理为止。另外,如果数据寄存器430的性能劣化,则存储器装置110的整体性能可能降低。
参照图4中的示例,一个串(STR)可以具有连接到多个字线(WL1)至(WL9)的多个晶体管(TR1)至(TR9)。设置有多个晶体管(TR1)至(TR9)的区域对应于存储器单元(MC)。多个晶体管(TR1)至(TR9)包括如上所述的控制栅极(CG)和浮置栅极(FG)。
多个字线(WL1)至(WL9)包括两个最外字线(WL1)和(WL9)。就信号路径而言,第一选择线(DSL)可以布置在更靠近数据寄存器430的第一最外字线(WL1)外部,并且第二选择线(SSL)可以布置在第二最外字线(WL9)外部。
由第一选择线(DSL)导通和关断的第一选择晶体管(D-TR)仅具有连接到第一选择线(DSL)的栅电极,并且不包括浮置栅极(FG)。由第二选择线(SSL)导通和关断的第二选择晶体管(S-TR)仅具有连接到第二选择线(SSL)的栅电极,并且不包括浮置栅极(FG)。
第一选择晶体管(D-TR)用作导通或关断相应的串(STR)与数据寄存器430之间的连接的开关。第二选择晶体管(S-TR)用作导通或关断相应的串(STR)与源极线(SL)之间的连接的开关。也就是说,第一选择晶体管(D-TR)和第二选择晶体管(S-TR)设置在串(STR)的两端,并且用作用于连接和断开信号的关守(gatekeepers)。
在编程操作期间,由于存储器系统100必须将电子填充在待被编程的位线(BL)的目标存储器单元(MC)中,因此存储器系统100将设置的导通电压(Vcc)施加到第一选择晶体管(D-TR)的栅电极,从而导通第一选择晶体管(D-TR),并且将设置的关断电压(例如,0V)施加到第二选择晶体管(S-TR)的栅电极,从而关断第二选择晶体管(S-TR)。
在读取操作或验证操作期间,存储器系统100导通第一选择晶体管(D-TR)和第二选择晶体管(S-TR)两者。因此,电流可以通过相应的串(STR)到达对应于地的源极线(SL),从而可以测量位线(BL)的电压电平。然而,在读取操作中,第一选择晶体管(D-TR)和第二选择晶体管(S-TR)之间的导通-关断定时可能有所不同。
在擦除操作期间,存储器系统100可以通过源极线(SL)将设置的电压(例如,+20V)供应到衬底。在擦除操作中,存储器系统100使第一选择晶体管(D-TR)和第二选择晶体管(S-TR)都浮置以产生无穷大电阻。因此,该结构被配置成使得第一选择晶体管(D-TR)和第二选择晶体管(S-TR)的作用被消除,并且使得电子仅通过浮置栅极(FG)与衬底之间的电势差移动。
图5是示出根据本公开的实施例的在存储器系统100中设置写入缓冲器和读取缓冲器的示例的示图。
参照图5,存储器系统100中包括的存储器控制器120可以将缓冲池(BUF_POOL)中包括的K个缓冲槽(SLOT_1、SLOT_2、SLOT_3、SLOT_4、SLOT_5、SLOT_6、……、SLOT_K-1和SLOT_K)(其中“K”是2或更大的自然数)动态地配置为写入缓冲器(WR_BUF)中的一个或多个写入缓冲槽(SLOT_1、SLOT_4和SLOT_6)或读取缓冲器(RD_BUF)中的一个或多个读取缓冲槽(SLOT_2、SLOT_3和SLOT_5)。
尽管在图5中示出了写入缓冲器(WR_BUF)和读取缓冲器(RD_BUF)中的每一个包括三个缓冲槽,但是这些缓冲器中的任意一个中的缓冲槽的数量不限于此。
写入缓冲器(WR_BUF)是用于临时存储写入存储器装置110的数据的空间。因此,对写入缓冲器(WR_BUF)的写入缓冲槽执行写入操作表示将被写入存储器装置110的数据临时存储在写入缓冲槽中。
读取缓冲器(RD_BUF)是用于临时存储从存储器装置110读取的数据的空间。因此,对读取缓冲器(RD_BUF)的读取缓冲槽执行读取操作表示将从存储器装置110读取的数据临时存储在读取缓冲槽中。
缓冲池(BUF_POOL)是用于分配写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)的存储器区域。例如,缓冲池(BUF_POOL)可以位于存储器控制器120中的工作存储器125上。
缓冲池(BUF_POOL)中的一个或多个缓冲槽可以在写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)中,但不能同时在两者之中。缓冲池中的一个或多个缓冲槽可以不在写入缓冲器或读取缓冲器中。
缓冲槽可以在第一时间包括在写入缓冲器(WR_BUF)中,并且可以在第二时间包括在读取缓冲器(RD_BUF)中。
有多种方法可确定缓冲池(BUF_POOL)中每个缓冲槽的大小。
例如,缓冲池(BUF_POOL)中的各个缓冲槽的大小可以是统一的,并且可以是页面大小(例如,4KB)的整数倍。这是由于以下事实:在存储器装置110中以页面为单位执行数据读取操作和写入操作,并且如果各个缓冲槽的大小统一,则可以最小化用于确定写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)中包括的缓冲槽的数量和位置的操作。
作为另一示例,缓冲池(BUF_POOL)中的缓冲槽可以被划分为多个缓冲槽组,并且相同缓冲槽组中的每个缓冲槽的大小可以相同,但不同组中的缓冲槽可以具有不同的大小。例如,缓冲槽组1中的缓冲槽的大小可以与页面大小相同(例如,4KB),并且缓冲槽组2中包括的缓冲槽的大小可以是页面大小的两倍(例如,则4KB*2=8KB)。
可以选择使用指示缓冲池(BUF_POOL)中包括的缓冲槽属于写入缓冲器(WR_BUF)还是读取缓冲器(RD_BUF)的各种方法中的任意一种。
例如,存储器控制器120可以使用针对缓冲池(BUF_POOL)中包括的所有缓冲槽的使能位图来指示每个缓冲槽是包括在写入缓冲器(WR_BUF)中还是读取缓冲器(RD_BUF)中。
在与使能位图的缓冲槽(SLOT_1)对应的元件中的字段之中,如果与写入缓冲器(WR_BUF)对应的字段值为“1”,则表示缓冲槽(SLOT_1)包括在写入缓冲器(WR_BUF)中,并且如果字段值为“0”,则表示缓冲槽(SLOT_1)不包括在写入缓冲器(WR_BUF)中。
同样,在与使能位图的缓冲槽(SLOT_1)对应的元件中的字段之中,如果与读取缓冲器(RD_BUF)对应的字段值为“1”,则表示缓冲槽(SLOT_1)包括在读取缓冲器(RD_BUF)中,并且如果字段值为“0”,则表示缓冲槽(SLOT_1)不包括在读取缓冲器(RD_BUF)中。
如上所述,存储器控制器120可以将缓冲池(BUF_POOL)中包括的缓冲槽动态地分配到写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)。因此,存储器控制器120可以在设置写入缓冲器(WR_BUF)和读取缓冲器(RD_BUF)的大小时响应于写入操作与读取操作的比率随时间的改变。
在这种情况下,存储器控制器120可以设置计数信息的初始值,例如,关于写入缓冲器(WR_BUF)中包括的各个写入缓冲槽和读取缓冲器(RD_BUF)中包括的各个读缓冲槽的计数信息(CNT),其指示分配到写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)中的一个的剩余时段。
在这种情况下,剩余时段表示写入缓冲槽或读取缓冲槽保持分配到写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)的时间。
此后,存储器控制器120可以根据设置的计数信息(CNT)动态地管理待分配到写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)的缓冲槽。
在这种情况下,可以根据需要存储在写入缓冲器WR_BUF中的数据的总大小,将关于写入缓冲器WR_BUF中包括的各个写入缓冲槽的计数信息(CNT)的初始值设置成不同。
例如,假设写入缓冲器(WR_BUF)将总共44KB的数据存储在写入缓冲槽(SLOT_1、SLOT_4和SLOT_6)中,并且图5中每个写入缓冲槽的大小为4KB。在这种情况下,为了将4KB的写入数据写入到写入缓冲器(WR_BUF)11次(=44KB/4KB),存储器控制器120可以将关于SLOT_1、SLOT_4和SLOT_6的计数信息CNT的初始值设置成使得关于这些写入缓冲槽的计数信息CNT的初始值的总和对应于4KB被写入的次数“11”,其在该示例中为11。
在图5中,关于写入缓冲槽(SLOT_1)的计数信息(CNT)的初始值为“4”;写入缓冲槽(SLOT_4)的计数信息(CNT)的初始值为“5”;写入缓冲槽(SLOT_6)的计数信息(CNT)的初始值为“2”;且计数信息(CNT)的初始值的总和为11(=4+5+2)。
同样,可以根据需要存储在读取缓冲器(RD_BUF)中的数据的总大小,将关于读取缓冲器(RD_BUF)中包括的各个读取缓冲槽的计数信息(CNT)的初始值设置成不同。
例如,假设读取缓冲器(RD_BUF)将总共32KB的数据存储在读取缓冲槽(SLOT_2、SLOT_3和SLOT_5)中,并且每个读取缓冲槽的大小为4KB。在这种情况下,为了从读取缓冲器(RD_BUF)读出4KB的数据8次(=32KB/4KB),存储器控制器120可以将SLOT_2、SLOT_3和SLOT_5的计数信息CNT的初始值设置成使得这些读取缓冲槽的计数信息CNT的初始值的总和为“8”,其为读出4KB的数据的次数。
在图5中,关于读取缓冲槽(SLOT_2)的计数信息CNT的初始值为“3”;关于读取缓冲槽(SLOT_3)的计数信息(CNT)的初始值为“3”;关于读取缓冲槽(SLOT_5)的计数信息(CNT)的初始值为“2”;且计数信息(CNT)的初始值的总和为8(=3+3+2)。
如上所述设置的关于各个写入缓冲槽和读取缓冲槽的计数信息(CNT)的值可以在执行写入操作或读取操作时被更新。详细地,当数据被写入到写入缓冲器时,存储器控制器120可以更新关于至少一些写入缓冲槽的计数信息。可选地,当从读取缓冲器读出数据时,存储器控制器120可以更新关于至少一些读取缓冲槽的计数信息。
图6是示出根据本公开的实施例的更新关于存储器系统100中的一些写入缓冲槽或读取缓冲槽的计数信息的示例的示图。
参照图6,对于写入缓冲器(WR_BUF)中的写入缓冲槽(SLOT_1、SLOT_4和SLOT_6),关于写入缓冲槽(SLOT_1)的计数信息(CNT)的初始值为“4”;关于写入缓冲槽(SLOT_4)的计数信息(CNT)的初始值为“5”;关于写入缓冲槽(SLOT_6)的计数信息(CNT)的初始值为“2”。
另外,对于读取缓冲器(RD_BUF)中的读取缓冲槽(SLOT_2、SLOT_3和SLOT_5),关于读取缓冲槽(SLOT_2)的计数信息(CNT)的初始值为“3”;关于读取缓冲槽(SLOT_3)的计数信息(CNT)的初始值为“3”;关于读取缓冲槽(SLOT_5)的计数信息(CNT)的初始值为“2”。
在这种情况下,假设存储器系统100的存储器控制器120将待被写入存储器装置110的数据存储在SLOT_1中。因此,关于SLOT_1的CNT可从“4”改变为“3”。
随后,假设存储器控制器120将从存储器装置110读取的数据存储在SLOT_3中。在这种情况下,关于SLOT_3的CNT从“3”可改变为“2”。
存储器控制器120可以如上所述改变关于写入缓冲槽或读取缓冲槽的计数信息,从而动态地配置分配到写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)的缓冲槽。
如上所述,存储器控制器120基于计数信息(CNT)动态地配置分配到写入缓冲器(WR_BUF)或读取缓冲器(RD_BUF)的缓冲槽的原因如下。
如上所述,由于写入操作与读取操作的比率可随时间改变,因此存储器控制器120必须根据其动态地改变写入缓冲器(WR_BUF)和读取缓冲器(RD_BUF)的大小。
例如,假设整个缓冲器区域的大小为10KB,并且写入操作与读取操作的比率在第一时间为5:5,则存储器控制器120优选地将5KB区域分配到写入缓冲器(WR_BUF),并且将5KB区域分配到读取缓冲器(RD_BUF),以获得最佳的读取/写入性能。
此后,如果写入/读取比在第二时间改变为8:2,则存储器控制器120应改变分配。在这种情况下,存储器控制器120优选地将分配到写入缓冲器(WR_BUF)的5KB中的3KB分配到读取缓冲器(RD_BUF),以获得最佳的读取/写入性能。
然而,存储器控制器120不知道分配到写入缓冲器(WR_BUF)的5KB区域的不再被使用的一部分。这是由于以下事实:待被写入存储器装置110的数据可能尚未存储在写入缓冲器(WR_BUF)中,或者即使数据存储在写入缓冲器(WR_BUF)中,也可能未将数据写入存储器装置110。
因此,在整个写入操作完成之后,存储器控制器120可以将分配到写入缓冲器(WR_BUF)的5KB区域中的3KB分配到读取缓冲器(RD_BUF)。在这种情况下,由于增加读取缓冲器(RD_BUF)的大小需要时间,因此读取性能可能会降低。
因此,为了解决这个问题,在本公开的实施例中,存储器控制器120以缓冲槽为单位分配写入缓冲器(WR_BUF)和读取缓冲器(RD_BUF),并且使用关于每个缓冲槽的计数信息,从而快速地识别不再需要用于读取操作或写入操作的部分。
因此,存储器控制器120能够最小化在动态地改变写入缓冲器和读取缓冲器的大小的过程中引起的开销。另外,存储器控制器120可以将不再需要用于读取操作或写入操作的缓冲槽直接归还到缓冲池,使得可以将所归还的缓冲槽立即用于另一读取操作或写入操作,从而提供最佳的数据读取和写入性能。
在下文中,描述了存储器系统100的存储器控制器120动态地改变写入缓冲器(WR_BUF)和读取缓冲器(RD_BUF)的大小的具体示例。
图7是示出根据本公开的实施例的减小存储器系统100中的写入缓冲槽的计数信息值的示例的示图。
参照图7,如果对写入缓冲器(WR_BUF)中的写入缓冲槽(SLOT_1、SLOT_4和SLOT_6)之中的一个目标写入缓冲槽(TGT_WR_BUF_SLOT)的写入操作完成,则存储器系统100的存储器控制器120可以将关于TGT_WR_BUF_SLOT的CNT减小第一值。
在这种情况下,对TGT_WR_BUF_SLOT的写入操作的完成表示已将存储在槽中的所有数据写入存储器装置110,或者已将具有设置大小的所有数据写入存储器装置110。
例如,在TGT_WR_BUF_SLOT大小是4KB的情况下,如果将4KB的数据写入存储器装置110,或者如果将设置的大小为2KB的数据写入存储器装置110,则可以确定对TGT_WR_BUF_SLOT的写入操作已经完成。
假设在图7中,关于写入缓冲槽(SLOT_1)的计数信息(CNT)的初始值为“4”,关于写入缓冲槽(SLOT_4)的计数信息(CNT)的初始值为“5”,并且关于写入缓冲槽(SLOT_6)的计数信息(CNT)的初始值为“2”。另外,假设计数信息(CNT)的值每次减小的第一值是“1”。
首先,如果将写入缓冲槽(SLOT_1)配置为目标写入缓冲槽(TGT_WR_BUF_SLOT),则在对写入缓冲槽(SLOT_1)的写入操作完成之后,关于写入缓冲槽(SLOT_1)的计数信息(CNT)的值从“4”减小“1”,减为“3”。
此后,如果将写入缓冲槽(SLOT_4)配置为目标写入缓冲槽(TGT_WR_BUF_SLOT),则在对写入缓冲槽(SLOT_4)的写入操作完成之后,关于写入缓冲槽(SLOT_4)的计数信息(CNT)的值从“5”减小“1”,减为“4”。
图8是示出根据本公开的实施例的将写入缓冲槽归还到存储器系统100中的缓冲池的示例的示图。
参照图8,如果关于写入缓冲器(WR_BUF)中的写入缓冲槽(SLOT_1、SLOT_4和SLOT_6)之中的一个目标写入缓冲槽(TGT_WR_BUF_SLOT)的计数信息的值小于或等于第一阈值计数值,则存储器系统100的存储器控制器120可以将目标写入缓冲槽(TGT_WR_BUF_SLOT)归还到缓冲池(BUF_POOL)。
在图8中,假设第一阈值计数值为零。第一阈值计数值可以预先确定。
当将数据写入SLOT_1、SLOT_4和SLOT_6时,关于这些槽中的每一个的CNT不断减少。随后,假设在目标写入缓冲槽(TGT_WR_BUF_SLOT)是写入缓冲槽(SLOT_1)的情况下,关于写入缓冲槽(SLOT_1)的计数信息(CNT)的值从“1”改变为“0”。
在这种情况下,存储器控制器120将写入缓冲槽(SLOT_1)归还到缓冲池(BUF_POOL)。当执行新的写入操作或读取操作时,归还到缓冲池(BUF_POOL)的写入缓冲槽(SLOT_1)可以再次被包括在写入缓冲器或读取缓冲器中。
图9是示出参照图7和图8描述的操作的流程图。
在下文中,描述了存储器控制器120执行参照图7和图8描述的操作的示例。
存储器控制器120可以从写入缓冲器中的写入缓冲槽之中选择目标写入缓冲槽(S910)。另外,存储器控制器120可以对所选择的目标写入缓冲槽执行写入操作(S920)。
此后,存储器控制器120确定对目标写入缓冲槽的写入操作是否已经完成(S930)。如果写入操作尚未完成(在步骤S930中为“否”),则存储器控制器120返回到步骤S920。另一方面,如果写入操作已经完成(在步骤S930中为“是”),则存储器控制器120可以将关于目标写入缓冲槽的计数信息的值减小第一值(S940)。
接下来,存储器控制器120确定关于目标写入缓冲槽的计数信息的值是否小于或等于第一阈值计数值(S950)。如果是这样(在步骤S950中为“是”),则存储器控制器120将目标写入缓冲槽归还到缓冲池(S960)。另一方面,如果计数信息的值超过第一阈值计数值(在步骤S950中为“否”),则存储器控制器120将目标写入缓冲槽保持在写入缓冲器中(S970)。
此后,存储器控制器120返回到步骤S910中的操作以开始另一迭代。
图10是示出根据本公开的实施例的减小关于存储器系统100中的读取缓冲槽的计数信息的值的示例的示图。
参照图10,如果关于读取缓冲器(RD_BUF)中的读取缓冲槽(SLOT_2、SLOT_3和SLOT_5)之中的一个目标读取缓冲槽(TGT_RD_BUF_SLOT)的读取操作完成,则存储器系统100的存储器控制器120可以将关于TGT_RD_BUF_SLOT的CNT减小第二值。第二值可以与参照图7描述的第一值相同或不同。
在这种情况下,对TGT_RD_BUF_SLOT的读取操作完成表示该槽中存储的所有数据都被主机(HOST)读出或准备由主机读出,或者具有设置大小的所有数据都被主机读出或准备由主机读出。
例如,在TGT_RD_BUF_SLOT的大小为4KB的情况下,如果主机(HOST)读出4KB的数据,或者如果主机读出2KB的设置大小的数据,则可以确定对TGT_RD_BUF_SLOT的读取操作已完成。
假设在图10中,关于读取缓冲槽(SLOT_2)的计数信息CNT的初始值为“3”,关于读取缓冲槽(SLOT_3)的计数信息(CNT)的初始值为“3”,并且关于读取缓冲槽(SLOT_5)的计数信息(CNT)的初始值为“2”。另外,假设计数信息(CNT)的值每次减小的第二值是“1”。
首先,如果将读取缓冲槽(SLOT_2)配置为目标读取缓冲槽(TGT_RD_BUF_SLOT),则在对SLOT_2的读取操作完成后,关于SLOT_2的计数信息(CNT)的值从“3”减少“1”,减为“2”。
此后,如果将读取缓冲槽(SLOT_3)配置为目标读取缓冲槽(TGT_RD_BUF_SLOT),则在对SLOT_3的读取操作完成后,关于SLOT_3的计数信息(CNT)的值从“3”减少“1”,减为“2”。
图11是示出根据本公开的实施例的将读取缓冲槽归还到存储器系统100中的缓冲池的示例的示图。
参照图11,如果关于读取缓冲器(RD_BUF)中的读取缓冲槽(SLOT_2、SLOT_3和SLOT_5)之中的目标读取缓冲槽(TGT_RD_BUF_SLOT)的计数信息的值小于或等于第二阈值计数值,则存储器系统100的存储器控制器120可以将目标读取缓冲槽(TGT_RD_BUF_SLOT)归还到缓冲池(BUF_POOL)。
假设图11中第二阈值计数值为零。第二阈值计数值可以预先确定。
当将数据写入各个读取缓冲槽(SLOT_2、SLOT_3和SLOT_5)时,关于这些写入缓冲槽中的每一个的计数信息(CNT)的值都会减小。随后,假设如果TGT_RD_BUF_SLOT为SLOT_2,则关于SLOT_2的计数信息(CNT)的值从“1”改变为“0”。
在这种情况下,存储器控制器120将读取缓冲槽(SLOT_2)归还到缓冲池(BUF_POOL)。当执行新的写入操作或读取操作时,归还到缓冲池(BUF_POOL)的读取缓冲槽(SLOT_2)可以再次被包括在写入缓冲器或读取缓冲器中。
图12是示出结合图10和图11描述的操作的流程图。
在下文中,描述了存储器控制器120执行参照图10和图11描述的操作的示例。
存储器控制器120可以从读取缓冲器中的读取缓冲槽之中选择目标读取缓冲槽(S1210)。另外,存储器控制器120可以对在步骤S1210中选择的目标读取缓冲槽执行读取操作(S1220)。
此后,存储器控制器120确定对目标读取缓冲槽的读取操作是否已经完成(S1230)。如果读取操作尚未完成(在步骤S1230中为“否”),则存储器控制器120返回到步骤S1220。另一方面,如果读取操作已经完成(在步骤S1230中为“是”),则存储器控制器120可以将关于目标读取缓冲槽的计数信息的值减小第二值(S1240)。
接下来,存储器控制器120确定关于目标读取缓冲槽的计数信息的值是否小于或等于第二阈值计数值(S1250)。如果是这样(在步骤S1250中为“是”),则存储器控制器120将目标读取缓冲槽归还到缓冲池(S1260)。另一方面,如果计数信息的值超过第二阈值计数值(在步骤S1250中为“否”),则存储器控制器120将目标读取缓冲槽保持在读取缓冲器中(S1270)。
此后,存储器控制器120返回到步骤S1210中的操作以开始另一迭代。
在下文中,参照图13至图15描述根据写入命令来设置写入缓冲器中包括的写入缓冲槽的数量以及关于各个写入缓冲槽的计数信息的初始值的详细方法。
图13是示出根据本公开的实施例的在存储器系统100中配置写入缓冲器的示例的示图。
存储器系统100的存储器控制器120可以基于写入缓冲槽的数量“L”、从主机(HOST)接收的写入数据的大小“M”和/或写入缓冲槽的大小“N”,确定关于各个写入缓冲槽的计数信息的初始值。
在图13中,存储器控制器120处理指示写入64KB数据的操作的写入命令(WR_CMD)。另外,写入缓冲器(WR_BUF)包括四个写入缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4),并且写入缓冲槽中的每一个的大小为4KB。
在这种情况下,为了使存储器控制器120写入64KB的数据,写入4KB数据的操作必须执行16次。因此,存储器控制器120配置关于各个写入缓冲槽的计数信息(CNT),使得关于四个写入缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4)的计数信息(CNT)的值的总和为16。例如,在图13中,存储器控制器120将关于四个写入缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4)中的每一个的CNT配置为4。
如上所述,当存储器控制器120配置写入缓冲器(WR_BUF)时,用于处理写入操作的吞吐量可以根据写入缓冲器(WR_BUF)中包括的写入缓冲槽的数量而变化。
例如,在存储器控制器120处理写入32KB数据的操作的情况下,如果将大小为4KB的四个写入缓冲槽分配到写入缓冲器(WR_BUF),则最多可以同时执行16KB数据的写入操作。另一方面,如果将大小为4KB的两个写入缓冲槽分配到写入缓冲器(WR_BUF),则最多仅可以同时执行8KB数据的写入操作。因此,分配到写入缓冲器(WR_BUF)的写入缓冲槽越多,用于处理写入操作的吞吐量就越高。
图14是示出根据本公开的实施例的在存储器系统100中根据写入命令的优先级来不同地设置写入缓冲槽的数量的示例的示图。
参照图14,可以基于写入命令的优先级来确定写入缓冲槽的数量。
可以基于从主机(HOST)接收到的写入命令的信息由存储器控制器120确定写入命令的优先级。例如,如果在写入命令中设置了指示命令需要紧急处理的标志,则存储器控制器120可以确定相应的写入命令的优先级高于其他命令。另一方面,如果在写入命令中未设置指示命令需要紧急处理的标志,或者如果写入命令指示顺序地写入大量数据,则存储器控制器120可以确定相应的写入命令的优先级低于其他命令。
存储器控制器120可以执行控制,使得在其写入命令具有更高优先级的情况下,更多的写入缓冲槽被分配到写入缓冲器。在图14中,由于写入命令(WR_CMD_1)具有更高的优先级,因此存储器控制器120执行控制,使得四个写入缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4)被分配到写入缓冲器。另一方面,由于写入命令(WR_CMD_2)具有较低的优先级,因此存储器控制器120执行控制,使得两个写入缓冲槽(SLOT_1和SLOT_2)被分配到写入缓冲器。
在这种情况下,由于写入命令(WR_CMD_1)和写入命令(WR_CMD_2)均请求写入64KB数据的操作,因此关于写入缓冲器(WR_BUF)中的写入缓冲槽的计数信息(CNT)的值的总和必须相等。
因此,当处理具有较低优先级的写入命令时,可以确定关于写入缓冲器(WR_BUF)中的每个写入缓冲槽的计数信息(CNT)的值较大。
在图14中,当处理写入命令(WR_CMD_2)时,关于每个写入缓冲槽的计数信息(CNT)的值为8,该值大于当处理写入命令(WR_CMD_1)时关于每个写入缓冲槽的计数信息(CNT)的值“4”。
因此,当处理写入命令(WR_CMD_1)时,存储器控制器120可以以高吞吐量执行写入操作,并且可以将所分配的写入缓冲槽快速地归还到缓冲池。另一方面,当处理写入命令(WR_CMD_2)时,存储器控制器120可以以低吞吐量执行写入操作,并且可以将所分配的写入缓冲槽缓慢地归还到缓冲池。
图15是示出根据本公开的实施例的设置关于存储器系统100中的每个写入缓冲槽的计数信息CNT的初始值的示例的示图。
在图15中,存储器控制器120处理指示写入30KB的数据的操作的写入命令(WR_CMD)。写入缓冲器(WR_BUF)包括三个写入缓冲槽(SLOT_1、SLOT_2和SLOT_3),写入缓冲槽中的每一个的大小为4KB。
在这种情况下,写入缓冲槽的数量为L(=3);从主机(HOST)接收的写入数据的大小为M(=30KB);并且写入缓冲槽的大小为N(=4KB)。
存储器控制器120执行控制,使得关于写入缓冲器(WR_BUF)中包括的三个写入缓冲槽(SLOT_1、SLOT_2和SLOT_3)的计数信息(CNT)的值的总和为在三个写入缓冲槽即SLOT_1、SLOT_2和SLOT_3的示例中,计数信息CNT的值的总和可以是 此处,总和调高到最接近的整数。
在这种情况下,存储器控制器120可以如下地设置计数信息(CNT)的初始值,使得关于写入缓冲器(WR_BUF)中包括的三个写入缓冲槽(SLOT_1、SLOT_2和SLOT_3)的计数信息(CNT)的值尽可能地统一。
首先,存储器控制器120可以将关于三个写入缓冲槽(SLOT_1、SLOT_2和SLOT_3)之中的个写入缓冲槽中的每一个的计数信息(CNT)的初始值设置为值在该示例中,关于这2个写入缓冲槽中的每一个的计数信息CNT的初始值可以被设置为
另外,存储器控制器120可以将关于三个写入缓冲槽(SLOT_1、SLOT_2和SLOT_3)之中的个写入缓冲槽的计数信息CNT的初始值设置为值在该示例中,可以将关于该(=3-(8mod 3))写入缓冲槽的计数信息CNT的初始值设置为值 此处,该操作包括调低到最接近的整数。在这种情况下,写入缓冲槽之间的计数信息(CNT)的差异被设置为1或更小。
存储器控制器120将关于写入缓冲器(WR_BUF)中包括的各个写入缓冲槽的计数信息(CNT)的初始值设置为尽可能地统一的操作,旨在令使用被分配到写入缓冲器的写入缓冲槽的写入操作的吞吐量最大化。
这是由于以下事实:如果关于被分配到写入缓冲器的写入缓冲槽之中的特定写入缓冲槽的计数信息CNT的值太大,则整体写入操作的处理变慢,因为在剩余写入缓冲槽尽早归还到缓冲池后,仅使用特定写入缓冲槽来执行写入操作。
在下文中,将参照图16至图18描述根据读取命令设置读取缓冲器中包括的读取缓冲槽的数量以及关于各个读取缓冲槽的计数信息的初始值的详细方法。
图16是示出根据本公开的实施例的在存储器系统100中配置读取缓冲器的示例的示图。
存储器系统100的存储器控制器120可以基于读取缓冲槽的数量“L”、读取数据的大小“M”和/或读取缓冲槽的大小“N”,来确定关于读取缓冲槽中的每一个的计数信息的初始值。
在图16中,存储器控制器120处理指示读取64KB的数据的操作的读取命令(RD_CMD)。另外,读取缓冲器(RD_BUF)包括四个读取缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4),并且读取缓冲槽中的每一个的大小为4KB。
在这种情况下,为了使存储器控制器120读取64KB的数据,读取4KB数据的操作必须执行16次。因此,存储器控制器120配置关于各个读取缓冲槽的计数信息(CNT),使得关于四个读取缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4)的计数信息(CNT)的值的总和为16。例如,在图16中,存储器控制器120进行配置,使得关于四个读取缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4)的计数信息(CNT)的值分别为4。
类似于写入缓冲器(WR_BUF),当存储器控制器120配置读取缓冲器(RD_BUF)时,用于处理读取操作的吞吐量可以根据读取缓冲器(RD_BUF)中包括的读取缓冲槽的数量而变化。
例如,在存储器控制器120处理读取32KB的数据的操作的情况下,如果将大小为4KB的四个读取缓冲槽分配到读取缓冲器(RD_BUF),则最多可以同时执行16KB的数据的读取操作。另一方面,如果将大小为4KB的两个读取缓冲槽分配到读取缓冲器(RD_BUF),则最多仅可以同时执行8KB的数据的读取操作。因此,分配到读取缓冲器(RD_BUF)的读取缓冲槽越多,处理读取操作的吞吐量就越高。
图17是示出根据本公开的实施例的在存储器系统100中根据读取命令的优先级来不同地设置读取缓冲槽的数量的示例的示图。
参照图17,可以基于读取命令的优先级来确定读取缓冲槽的数量。
类似于写入命令,可以基于从主机(HOST)接收的读取命令的信息由存储器控制器120确定读取命令的优先级。例如,如果在读取命令中设置了指示命令需要紧急处理的标志,则存储器控制器120可以确定相应的读取命令的优先级高于其他命令。另一方面,如果在读取命令中未设置指示命令需要紧急处理的标志,或者如果读取命令指示顺序地读取大量数据,则存储器控制器120可以确定相应的读取命令的优先级低于其他命令。
存储器控制器120可以执行控制,使得针对具有更高优先级的读取命令将更多读取缓冲槽分配到读取缓冲器。在图17中,由于读取命令(RD_CMD_1)具有较高的优先级,因此存储器控制器120执行控制,使得将四个读取缓冲槽(SLOT_1、SLOT_2、SLOT_3和SLOT_4)分配到读取缓冲器。另一方面,由于读取命令(RD_CMD_2)具有较低的优先级,因此存储器控制器120执行控制,使得将两个(少于四个)读取缓冲槽(SLOT_1和SLOT_2)分配到读取缓冲器。
在这种情况下,由于读取命令(RD_CMD_1)和读取命令(RD_CMD_2)都请求读取64KB的数据的操作,因此关于读取缓冲器(RD_BUF)中包括的读取缓冲槽的计数信息(CNT)的值的总和必须相等。
因此,当处理具有较低优先级的读取命令时,可以将关于读取缓冲器(RD_BUF)中包括的每个读取缓冲槽的计数信息(CNT)的值确定为更大。
在图17中,当处理读取命令(RD_CMD_2)时关于每个读取缓冲槽的计数信息(CNT)的值为8,该值大于当处理读取命令(RD_CMD_1)时关于每个读取缓冲槽的计数信息(CNT)的值“4”。
因此,当处理读取命令(RD_CMD_1)时,存储器控制器120可以以高吞吐量执行读取操作,并且可以将所分配的读取缓冲槽快速地归还到缓冲池。另一方面,当处理读取命令(RD_CMD_2)时,存储器控制器120可以以低吞吐量执行读取操作,并且可以将所分配的读取缓冲槽缓慢地归还到缓冲池。
图18是示出根据本公开的实施例的设置关于存储器系统100中的每个读取缓冲槽的计数信息(CNT)的初始值的示例的示图。
在图18中,存储器控制器120处理指示读取30KB的数据的操作的读取命令(RD_CMD)。读取缓冲器(RD_BUF)包括三个读取缓冲槽(SLOT_1、SLOT_2和SLOT_3),读取缓冲槽中的每一个的大小为4KB。
在这种情况下,读取缓冲槽的数量为L'=3;从主机(HOST)接收的读取命令的读取大小为M'=30KB;并且读取缓冲槽的大小为N'=4KB。
在这种情况下,存储器控制器120可以如下设置计数信息(CNT)的初始值,使得关于读取缓冲器(RD_BUF)中包括的三个读取缓冲槽(SLOT_1、SLOT_2和SLOT_3)的计数信息(CNT)的值尽可能地统一。
首先,存储器控制器120可以将关于三个读取缓冲槽(SLOT_1、SLOT_2、SLOT_3)之中的个读取缓冲槽的计数信息(CNT)的初始值设置为值在该示例中,关于这两个缓冲槽中的每一个的计数信息CNT的初始值可以被设置为
另外,存储器控制器120可以将关于个读取缓冲槽的计数信息CNT的初始值设置为在该示例中,可以将关于该(=3–(8mod 3))读取缓冲槽的计数信息CNT的初始值设置为值在这种情况下,读取缓冲槽之间的计数信息(CNT)的差异为1或更小。
类似于写入缓冲器(WR_BUF),存储器控制器120将关于读取缓冲器(RD_BUF)中包括的各个读取缓冲槽的计数信息(CNT)的初始值设置为尽可能地统一的操作,旨在令使用被分配到读取缓冲器的读取缓冲槽的读取操作的吞吐量最大化。
这是由于以下事实:如果关于被分配到读取缓冲器的读取缓冲槽之中的特定读取缓冲槽的计数信息(CNT)的值太大,则整个读取操作的处理变慢,因为在剩余读取缓冲槽尽早归还到缓冲池之后,仅使用特定读取缓冲槽来执行读取操作。
图19是示出根据本公开实施例的用于操作存储器控制器120的方法的流程图。
操作存储器控制器120的方法可以包括:动态地配置缓冲池中包括的一个或多个缓冲槽之中的写入缓冲器中的一个或多个写入缓冲槽或者读取缓冲器中的一个或多个读取缓冲槽(S1910)。
另外,操作存储器控制器120的方法可以包括设置关于在步骤S1910中配置的写入缓冲槽和读取缓冲槽中的每一个的计数信息的初始值。每个计数值指示分配到相关联的写入缓冲器或读取缓冲器的剩余时段(S1920)。
另外,该方法可以包括:当数据被写入到写入缓冲器时,通过存储器控制器120更新关于至少一些写入缓冲槽的计数信息,或者当从读取缓冲器读出数据时,更新关于至少一些读取缓冲槽的计数信息(S1930)。如前所述,更新哪个写入缓冲槽或读取缓冲槽取决于写入操作或读取操作的细节。
上述存储器控制器120的操作可以由控制电路123控制,并且处理器124可以运行(驱动)固件,在该固件中执行存储器控制器120的所有操作。
图20是示意性地示出根据本公开的实施例的计算系统2000的框图。
参照图20,计算系统2000可以包括:电连接到系统总线2060的存储器系统100;用于控制计算系统2000的全部操作的中央处理单元(CPU)2010;用于存储与计算系统2000的操作有关的数据和信息的随机存取存储器(RAM)2020;用于为用户提供用户环境的用户接口/用户体验(UI/UX)模块2030;用于通过有线和/或无线通信与外部装置通信的通信模块2040;用于管理计算系统2000所使用的电力的电源管理模块2050;等等。
计算系统2000可以是个人计算机(PC),或者可以包括诸如智能电话、平板PC等的移动终端,或各种其他电子装置中的任意一种。
计算系统2000可以进一步包括用于供应工作电压的电池、应用芯片组、图形相关模块、相机图像处理器(CIS)、DRAM等等。当然,计算系统可以包括本领域技术人员所理解的其他组件。
存储器系统100可以包括诸如固态驱动器(SSD)、通用闪存(UFS)装置、嵌入式MMC(eMMC)装置等的用于将数据存储在非易失性存储器中的装置。可选地,存储器系统100可以包括诸如硬盘驱动器(HDD)的用于将数据存储在磁盘中的装置。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、铁电RAM(FRAM)等中的任意一种。另外,存储器系统100可以被实施为各种类型的存储装置中的任意一种,并且可以被安装到各种电子装置中的任意一种。
尽管已经说明和描述了本公开的实施例,但是本领域技术人员将理解的是,在不脱离如所附权利要求中公开的本公开的范围和精神的情况下,可以进行各种修改、添加和替换。因此,所公开的实施例仅作为示例呈现。本发明的范围涵盖落入包括其等同方案的权利要求的范围内的所有布置和配置。
Claims (20)
1.一种存储器系统,包括:
存储器装置,包括多个存储块;以及
存储器控制器,控制所述存储器装置,
其中所述存储器控制器:
将缓冲池中多个缓冲槽中的一个或多个分配到写入缓冲器作为写入缓冲槽,或分配到读取缓冲器作为读取缓冲槽;
配置分别指示剩余分配时段的关于各个写入缓冲槽和各个读取缓冲槽的计数信息的初始值;并且
当将数据写入所述写入缓冲器时,更新关于至少一些所述写入缓冲槽中的每一个的所述计数信息,或者当从所述读取缓冲器读出数据时,更新关于至少一些所述读取缓冲槽中的每一个的所述计数信息。
2.根据权利要求1所述的存储器系统,其中当对所述写入缓冲槽之中的目标写入缓冲槽的写入操作完成时,所述存储器控制器将关于所述目标写入缓冲槽的计数信息的值减小第一值。
3.根据权利要求2所述的存储器系统,其中当关于所述目标写入缓冲槽的计数信息的值小于或等于第一阈值计数值时,所述存储器控制器将所述目标写入缓冲槽归还到所述缓冲池。
4.根据权利要求1所述的存储器系统,其中当对所述读取缓冲槽之中的目标读取缓冲槽的读取操作完成时,所述存储器控制器将关于所述目标读取缓冲槽的计数信息的值减小第二值。
5.根据权利要求4所述的存储器系统,其中当关于所述目标读取缓冲槽的计数信息的值小于或等于第二阈值计数值时,所述存储器控制器将所述目标读取缓冲槽归还到所述缓冲池。
6.根据权利要求1所述的存储器系统,其中所述存储器控制器基于写入缓冲槽的数量即L、从主机接收的写入数据的大小即M和/或所述写入缓冲槽的大小即N来确定关于所述写入缓冲槽中的每一个的计数信息的初始值。
7.根据权利要求6所述的存储器系统,其中基于与所述写入数据对应的写入命令的优先级来确定所述写入缓冲槽的数量即L。
9.根据权利要求1所述的存储器系统,其中所述存储器控制器基于读取缓冲槽的数量即L'、读取数据的大小即M'和/或所述读取缓冲槽的大小即N'来确定关于所述读取缓冲槽中的每一个的计数信息的初始值。
10.根据权利要求9所述的存储器系统,其中基于与所述读取数据对应的读取命令的优先级来确定所述读取缓冲槽的数量即L'。
12.一种存储器控制器,包括:
存储器接口,与包括多个存储块的存储器装置通信;以及
控制电路,控制所述存储器装置,
其中所述控制电路进一步:
将缓冲池中多个缓冲槽中的一个或多个分配到写入缓冲器作为写入缓冲槽,或分配到读取缓冲器作为读取缓冲槽;
配置分别指示剩余分配时段的关于各个写入缓冲槽和各个读取缓冲槽的计数信息的初始值;并且
当将数据写入所述写入缓冲器时,更新关于至少一些所述写入缓冲槽中的每一个的所述计数信息,或者当从所述读取缓冲器读出数据时,更新关于至少一些所述读取缓冲槽中的每一个的所述计数信息。
13.根据权利要求12所述的存储器控制器,其中当对所述写入缓冲槽之中的目标写入缓冲槽的写入操作完成时,所述控制电路将关于所述目标写入缓冲槽的计数信息的值减小第一值。
14.根据权利要求13所述的存储器控制器,其中当关于所述目标写入缓冲槽的计数信息的值小于或等于第一阈值计数值时,所述控制电路将所述目标写入缓冲槽归还到所述缓冲池。
15.根据权利要求12所述的存储器控制器,其中当对所述读取缓冲槽之中的目标读取缓冲槽的读取操作完成时,所述控制电路将关于所述目标读取缓冲槽的计数信息的值减小第二值。
16.根据权利要求15所述的存储器控制器,其中当关于所述目标读取缓冲槽的计数信息的值小于或等于第二阈值计数值时,所述控制电路将所述目标读取缓冲槽归还到所述缓冲池。
17.根据权利要求12所述的存储器控制器,其中所述控制电路基于写入缓冲槽的数量即L、从主机接收的写入数据的大小即M和/或所述写入缓冲槽的大小即N来确定关于所述写入缓冲槽中的每一个的计数信息的初始值。
19.根据权利要求12所述的存储器控制器,其中所述控制电路基于读取缓冲槽的数量即L'、读取数据的大小即M'和/或所述读取缓冲槽的大小即N'来确定关于所述读取缓冲槽中的每一个的计数信息的初始值。
20.一种操作存储器控制器的方法,所述方法包括:
将缓冲池中的多个缓冲槽动态地配置为写入缓冲器中的一个或多个写入缓冲槽或者读取缓冲器中的一个或多个读取缓冲槽;
配置分别指示剩余分配时段的关于各个写入缓冲槽和各个读取缓冲槽的计数信息的初始值;并且
当将数据写入到所述写入缓冲器时,更新关于至少一些所述写入缓冲槽中的每一个的计数信息,或者当从所述读取缓冲器读出数据时,更新关于至少一些所述读取缓冲槽中的每一个的计数信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0107212 | 2019-08-30 | ||
KR1020190107212A KR102635689B1 (ko) | 2019-08-30 | 2019-08-30 | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445733A true CN112445733A (zh) | 2021-03-05 |
Family
ID=74681174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010305496.9A Withdrawn CN112445733A (zh) | 2019-08-30 | 2020-04-17 | 存储器系统、存储器控制器以及操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11262939B2 (zh) |
KR (1) | KR102635689B1 (zh) |
CN (1) | CN112445733A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11520502B2 (en) | 2019-12-31 | 2022-12-06 | Micron Technology, Inc. | Performance control for a memory sub-system |
US20220043588A1 (en) * | 2020-08-06 | 2022-02-10 | Micron Technology, Inc. | Localized memory traffic control for high-speed memory devices |
US11249830B1 (en) | 2020-08-14 | 2022-02-15 | Micron Technology, Inc. | Detecting page fault traffic |
US20230066344A1 (en) * | 2021-08-27 | 2023-03-02 | Micron Technology, Inc. | Efficient buffer management for media management commands in memory devices |
US20230143926A1 (en) * | 2021-11-08 | 2023-05-11 | Western Digital Technologies, Inc. | Dynamic Controller Buffer Management and Configuration |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3607439B2 (ja) * | 1996-11-11 | 2005-01-05 | 株式会社日立製作所 | 半導体集積回路装置 |
JPH11273243A (ja) * | 1998-03-20 | 1999-10-08 | Toshiba Corp | ディスク装置及び同装置に適用されるライトバッファ制御方法 |
JPH11317000A (ja) * | 1998-04-30 | 1999-11-16 | Toshiba Corp | ディスク記憶装置及び同装置における電力供給制御方法 |
US6173378B1 (en) * | 1998-09-11 | 2001-01-09 | Advanced Micro Devices, Inc. | Method for ordering a request for access to a system memory using a reordering buffer or FIFO |
US6631446B1 (en) * | 2000-10-26 | 2003-10-07 | International Business Machines Corporation | Self-tuning buffer management |
US7114043B2 (en) * | 2002-05-15 | 2006-09-26 | Broadcom Corporation | Ambiguous virtual channels |
KR100453196B1 (ko) | 2002-05-22 | 2004-10-15 | (주)쎄트렉아이 | 소프트웨어 버퍼링 방법 및 이를 이용한 실시간 데이터저장장치, 그리고 그 기록매체 |
US8005794B2 (en) * | 2003-10-31 | 2011-08-23 | Oracle America, Inc. | Mechanism for data aggregation in a tracing framework |
US7437716B1 (en) * | 2003-11-14 | 2008-10-14 | Sun Microsystems, Inc. | Separation of data from metadata in a tracing framework |
US8032674B2 (en) * | 2004-07-19 | 2011-10-04 | Marvell International Ltd. | System and method for controlling buffer memory overflow and underflow conditions in storage controllers |
US7469312B2 (en) * | 2005-02-24 | 2008-12-23 | International Business Machines Corporation | Computer system bus bridge |
JP2009123320A (ja) | 2007-10-25 | 2009-06-04 | Panasonic Corp | 情報記録装置 |
US9298393B2 (en) * | 2008-06-12 | 2016-03-29 | Seagate Technology Llc | Buffer management for increased write speed in large sector data storage device |
JP2010015613A (ja) * | 2008-07-01 | 2010-01-21 | Fujitsu Ltd | 記憶装置、記憶装置の制御方法及び制御プログラム |
US8335911B2 (en) * | 2009-05-21 | 2012-12-18 | Oracle America, Inc. | Dynamic allocation of resources in a threaded, heterogeneous processor |
KR101155113B1 (ko) * | 2009-06-08 | 2012-06-12 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 소자 및 그 동작 방법 |
US8762682B1 (en) * | 2010-07-02 | 2014-06-24 | Western Digital Technologies, Inc. | Data storage apparatus providing host full duplex operations using half duplex storage devices |
WO2012169032A1 (ja) * | 2011-06-09 | 2012-12-13 | 富士通株式会社 | バッファ装置,バッファ制御装置,及びバッファ制御方法 |
KR101858560B1 (ko) * | 2011-11-24 | 2018-05-18 | 삼성전자주식회사 | 불휘발성 메모리 장치의 동작 방법과 상기 불휘발성 메모리 장치를 포함하는 메모리 시스템의 동작 방법 |
KR102074329B1 (ko) | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
KR20180062247A (ko) * | 2016-11-30 | 2018-06-08 | 삼성전자주식회사 | 효율적인 버퍼 할당을 수행하는 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10282301B2 (en) * | 2017-05-18 | 2019-05-07 | Avago Technologies International Sales Pte. Limited | Method and system for hardware accelerated read-ahead caching |
KR102450514B1 (ko) * | 2017-09-19 | 2022-10-05 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법 |
US10733110B1 (en) * | 2017-12-04 | 2020-08-04 | Amazon Technologies, Inc. | Collecting statistics for persistent memory |
US10936496B2 (en) * | 2019-06-07 | 2021-03-02 | Micron Technology, Inc. | Managing collisions in a non-volatile memory system with a coherency checker |
-
2019
- 2019-08-30 KR KR1020190107212A patent/KR102635689B1/ko active IP Right Grant
-
2020
- 2020-03-19 US US16/823,583 patent/US11262939B2/en active Active
- 2020-04-17 CN CN202010305496.9A patent/CN112445733A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US11262939B2 (en) | 2022-03-01 |
KR102635689B1 (ko) | 2024-02-14 |
US20210064274A1 (en) | 2021-03-04 |
KR20210026431A (ko) | 2021-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11262939B2 (en) | Memory system, memory controller, and operation method | |
CN114863962A (zh) | 存储器系统及其操作方法 | |
CN114489466A (zh) | 存储器系统及其操作方法 | |
CN112860176A (zh) | 存储器系统、存储器控制器及其操作方法 | |
KR20210097353A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
US20210365382A1 (en) | Memory system, memory controller, and operation method thereof | |
CN112349315B (zh) | 存储器系统、存储器控制器和操作方法 | |
CN113903384A (zh) | 存储器系统、存储器控制器以及操作存储器系统的方法 | |
US20230221895A1 (en) | Memory system and operating method of memory system storing doorbell information in the buffer memory | |
KR20220049109A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
CN115963981A (zh) | 存储器系统及存储器系统的操作方法 | |
US11474726B2 (en) | Memory system, memory controller, and operation method thereof | |
CN115952115A (zh) | 基于融合链表控制同步操作的存储器控制器及其操作方法 | |
US11137942B2 (en) | Memory system, memory controller, and method of operating a memory system for determining a number of hit and miss requests about map segments in a map cache and determining whether or not to perform data read operation in parallel | |
CN112445726A (zh) | 存储器系统、存储器控制器及操作方法 | |
CN112748870A (zh) | 存储器系统、存储器控制器及操作存储器控制器的方法 | |
CN112783426A (zh) | 存储器系统、存储器控制器和操作存储器控制器的方法 | |
US20240004566A1 (en) | Memory system for managing namespace using write pointer and write count, memory controller, and method for operating memory system | |
US20230297502A1 (en) | Memory system, memory controller and operating method of the memory system for controlling garbage collection | |
US20230376246A1 (en) | Memory system, memory controller and operating method of the memory system operating as read boost mode | |
KR20210132806A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
CN112667145A (zh) | 存储器系统、存储器控制器以及操作方法 | |
KR20230163864A (ko) | 가비지 컬렉션의 희생 블록을 결정하는 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 | |
KR20220101264A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20230094588A (ko) | 복수의 존들에 대응하는 데이터를 관리하는 메모리 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210305 |