CN114649012A - 存储器控制器和包括存储器控制器的存储装置 - Google Patents
存储器控制器和包括存储器控制器的存储装置 Download PDFInfo
- Publication number
- CN114649012A CN114649012A CN202110897235.5A CN202110897235A CN114649012A CN 114649012 A CN114649012 A CN 114649012A CN 202110897235 A CN202110897235 A CN 202110897235A CN 114649012 A CN114649012 A CN 114649012A
- Authority
- CN
- China
- Prior art keywords
- physical address
- read
- read command
- command
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/12—Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
-
- 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
- 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
- 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
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7207—Details relating to flash memory management management of metadata or control data
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)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种存储器控制器和包括存储器控制器的存储装置。存储器控制器包括:命令存储器件,包括第一读取命令队列和第二读取命令队列;命令生成控制器,用于将响应于读取请求而生成的第一读取命令和第一物理地址存储在第一读取命令队列中;命令调度控制器,用于响应于从命令生成控制器提供的调度事件信号而搜索第一物理地址组,第一物理地址组包括至少一个第二物理地址和第一物理地址,第二物理地址包括与第一读取命令队列中存储的物理地址之中的物理地址的平面编号相等的平面编号。
Description
相关申请的交叉引用
本申请要求于2020年12月18日向韩国知识产权局提交的申请号为10-2020-0178159的韩国专利申请的优先权,并且该韩国专利申请通过引用整体并入本文。
技术领域
本文描述的一个或多个实施例涉及一种存储器控制器和包括存储器控制器的存储装置。
背景技术
存储器控制器可以基于来自主机的指令来控制将数据存储在存储器装置中。易失性存储器装置在被供电时存储数据。在电力中断时丢失数据。易失性存储器装置的示例包括静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。非易失性存储器装置即使在电力中断时也存储数据。非易失性存储器装置的示例包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEROM)和闪速存储器。
发明内容
本文描述的一个或多个实施例提供了一种能够提高读取操作的性能的存储器控制器。一个或多个附加实施例包括可配备有这种存储器控制器的存储装置。
根据本公开的一方面,提供了一种存储器控制器,包括:命令存储器件,包括第一读取命令队列和第二读取命令队列,第一读取命令队列被配置成基于索引编号存储读取命令和与读取命令相对应的物理地址,其中读取命令指示包括多个存储块的存储器装置读取存储器装置中存储的数据,并且其中物理地址中的每一个与平面编号、块编号和页面编号相对应;命令生成控制器,被配置成响应于读取请求而生成第一读取命令,将逻辑地址转换为第一物理地址,并将第一读取命令和第一物理地址存储在第一读取命令队列中;命令调度控制器,被配置成响应于来自命令生成控制器的调度事件信号而搜索第一物理地址组,第一物理地址组包括至少一个第二物理地址和第一物理地址,该第二物理地址包括与第一读取命令队列中存储的物理地址相对应的页面编码,其中命令调度控制器被配置成将第二物理地址组和第一物理地址组顺序地调度到第二读取命令队列的连续索引编号中,第二物理地址组包括至少一个物理地址,第二物理地址组的至少一个物理地址的平面编号与第一读取命令队列中存储的第一物理地址组的平面编号不同。
根据本公开的另一方面,提供了一种存储器控制器,包括:命令存储器件,包括第一读取命令队列、第二读取命令队列和第三读取命令队列,其中第一读取命令队列被配置成存储第一物理地址和第一读取命令,第一读取命令指示存储器装置在执行后台操作的同时执行读取操作,并且其中第一物理地址与第一平面编号、第一块编号和第一页面编号相对应;命令生成控制器,被配置成响应于在执行后台操作的同时提供的读取请求,将逻辑地址转换为第二物理地址,并且生成指示存储器装置读取存储器装置中存储的数据的第二读取命令,并且将第二读取命令和第二物理地址存储在第二读取命令队列中,其中第二物理地址与第二平面编号、第二块编号和第二页面编号相对应;命令调度控制器,被配置成根据第一页面编号是否与第二页面编号相等来将第一物理地址、第二物理地址和第二读取命令调度到第三读取命令队列中。
根据本公开的又一方面,提供了一种存储装置,包括:存储器装置,包括多个平面;以及存储器控制器,被配置成响应于读取请求而将第一读取命令和第一物理地址存储在第一读取命令队列中,第一读取命令指示存储器装置执行读取操作,读取操作包括通过使用映射到逻辑地址的第一物理地址来读取存储器装置中存储的数据,其中存储器控制器进一步被配置成根据调度顺序来将第一读取命令队列中存储的读取命令和物理地址顺序地提供到存储器装置,并且其中每个物理地址包括平面编号、块编号和页面编号,并且当调度到第一读取命令队列的索引编号之中的第一优先级索引编号中的第二物理地址的页面编号与第一物理地址的页面编号相等时,存储器控制器被配置成将第一物理地址调度到第一优先级索引编号中。
附图说明
现在将在下文中参照附图更充分地描述示例性实施例;然而,实施例可以以不同的形式实现,并且不应当被解释为受限于本文阐述的实施例。相反,提供这些实施例以使得本公开将是彻底且完整的,并将把示例实施例的范围充分传达给本领域技术人员。
在附图中,为了清楚地示出,可能夸大尺寸。将理解的是,当元件被称为在两个元件“之间”时,该元件可以是这两个元件之间的唯一元件,或者也可能存在一个或多个中间元件。相同的附图标记始终指代相同的元件。
图1示出了存储系统的实施例。
图2示出了包括多个平面的实施例。
图3示出了存储器装置的实施例。
图4示出了存储器控制器的实施例。
图5示出了提供调度事件信号的实施例。
图6示出了提供调度事件信号的实施例。
图7示出了提供调度事件信号的实施例。
图8示出了命令存储器件的实施例。
图9示出了将读取命令和物理地址存储在读取命令队列中的实施例。
图10示出了读取操作的实施例。
图11示出了将一个读取命令队列中存储的读取命令和物理地址调度到另一读取命令队列中的实施例。
图12示出了读取操作的实施例。
图13示出了将一个读取命令队列中存储的读取命令和物理地址调度到另一读取命令队列中的实施例。
图14示出了读取操作的实施例。
图15示出了命令存储器件的实施例。
图16示出了调度读取命令和物理地址的实施例。
图17示出了读取操作的实施例。
图18示出了操作存储器控制器的方法的实施例。
图19示出了存储器控制器的实施例。
图20示出了存储卡系统的实施例。
图21示出了固态驱动器系统的实施例。
图22示出了用户系统的实施例。
具体实施方式
出于描述根据本公开的概念的实施例的目的,本文公开的特定结构或功能描述仅是说明性的。根据本公开的构思的实施例可以以各种形式实施,并且不能被解释为限于本文阐述的实施例。
图1是示出根据实施例的存储系统的示图。存储系统可以被实施为包括例如个人计算机(PC)、数据中心、以及企业型数据存储系统、直连式存储装置(DAS)的数据处理系统、包括存储区域网络(SAN)的数据处理系统、包括网络连接存储的数据处理系统、或者其它类型的系统或装置。
参照图1,存储系统可以包括存储装置1000和主机400。存储装置1000可以根据诸如以下的主机400的请求来存储数据:移动电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、TV、平板PC或车载信息娱乐系统。
根据作为与主机400的通信方案的主机接口,存储装置1000可以被制造为各种类型的存储装置中的任意一种。示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC(micro-MMC)、安全数字(SD)卡、迷你SD卡、微型SD卡、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体卡(SMC)、记忆棒等。
存储装置1000可以被制造为各种类型的封装中的任意一种。示例包括堆叠封装(POP)、系统级封装(SIP)、片上系统(SOC)、多芯片封装(MCP)、板上芯片(COB)、晶圆级制造封装(WFP)和晶圆级堆叠封装(WSP)。
在实施例中,可以提供如图1所示的一个存储装置1000。然而,本公开不限于此,可以提供两个或更多个存储装置1000。多个存储装置1000可以通过使用将多个存储装置1000作为一个存储装置进行操作的独立磁盘冗余阵列(RAID)方案或廉价磁盘冗余阵列(RAID)方案来操作。
存储装置1000可以包括存储器装置100和存储器控制器200。存储器装置100可以在存储器控制器200的控制下操作。例如,存储器装置100可以从存储器控制器200接收命令和地址,并且访问存储器单元之中由地址选择的存储器单元。存储器装置100可以对由地址选择的存储器单元执行由命令指示的操作。
命令可以是例如编程命令、读取命令或擦除命令。编程命令可以指示存储器装置以执行编程操作(或写入操作)。读取命令可以指示存储器装置100以执行读取操作。擦除命令可以指示存储器装置100以执行擦除操作。因此,由命令中的相应一个命令指示的操作可以是例如编程操作(或写入操作)、读取操作或擦除操作。
附加地,编程操作可以是存储器装置100在存储器控制器200的控制下存储从主机400提供的数据的操作。在一个实施例中,编程操作可以是将数据存储在存储器装置100中的多个存储块之中的任意一个存储块中的操作。
例如,存储器装置100可以接收编程命令、地址和数据,并且将数据编程在由地址选择的存储器单元中。可以将待编程在所选择的存储器单元中的数据称为写入数据。写入数据可以包括从主机400提供的数据(或用户数据)和该数据的元数据。
读取操作可以是存储器装置100在存储器控制器200的控制下读取存储器装置100中存储的读取数据的操作。例如,存储器装置100可以接收读取命令和地址,并且从由存储器单元阵列中由地址选择的区域读取数据。可以将存储器装置100中存储的数据之中的待从所选择的区域读取的数据定义为读取数据。
擦除操作可以是存储器装置100在存储器控制器200的控制下擦除存储器装置100中存储的数据的操作。在一个实施例中,擦除操作可以擦除存储器装置100中的多个存储块之中的任意一个存储块中存储的数据。例如,存储器装置100可以接收擦除命令和地址,并且擦除由地址选择的区域中存储的数据。
存储器装置100可以被实施为易失性存储器装置或非易失性存储器装置。易失性存储器装置的示例包括双倍数据速率同步动态随机存取存储器(DDR SDRAM)、第四代低功率双倍数据速率(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)等。非易失性存储器装置的示例可以包括电阻式随机存取存储器(ReRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、自旋转移扭矩随机存取存储器(STT-RAM)和闪速存储器。闪速存储器可以包括例如NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器等。出于示意性目的,假设存储器装置100是NAND闪速存储器。
存储器装置100可以在存储器控制器200的控制下存储写入数据,或者可以读取所存储的读取数据并将读取数据提供到存储器控制器200。
存储器装置100可以包括多个平面101、102、103和104。平面的数量可以为如图1所示的4个,但本公开不限于此。每个平面可以包括存储器单元阵列,存储器单元阵列包括用于存储写入数据的存储器单元。存储器单元阵列可以包括多个存储块。存储块可以是用于执行擦除数据的擦除操作的单位。存储块可以包括多个页面,每个页面对应于用于执行存储写入数据的编程操作或读取所存储的读取数据的读取操作的单位。
存储器单元可以被配置为以下中的任意一种:存储一位数据的单层单元(SLC)、存储两位数据的多层单元(MLC)、存储三位数据的三层单元(TLC)和存储四位数据的四层单元(QLC)。然而,本公开不限于此,存储器单元可以存储5位或更多位数据。
在实施例中,存储器装置100可以使用例如平面交错方案(plane interleavingscheme)来执行由命令指示的操作。平面交错方案可以是对两个或更多个平面中的相应平面的操作至少彼此部分重叠(overlap)的方案。例如,存储器装置100可以执行对第零平面101的读取操作和对第一平面102的读取操作,以彼此重叠。然而,本公开不限于此。
存储器控制器200可以控制存储装置1000的全部操作。例如,当向存储装置1000施加电力时,存储器控制器200可以运行指令(例如,固件)。当存储器装置100是闪速存储器装置时,固件可以包括主机接口层、闪存转换层和闪存接口层。例如,可以从外部电源供应电力。
主机接口层可以控制主机400与存储器控制器200之间的操作。
闪存转换层可以将从主机400提供的逻辑地址转换为物理地址,并且可以控制存储器控制器200与存储器装置100之间的通信。
存储器控制器200可以响应于主机400的写入请求、读取请求和擦除请求而控制存储器装置100以分别执行编程操作、读取操作和擦除操作。
在编程操作中,存储器控制器200可以向存储器装置100提供编程命令、物理地址和写入数据。在实施例中,在编程操作中,存储器控制器200可以向存储器装置100提供编程命令和物理地址。而且,存储器控制器200可以向缓冲存储器提供清除命令以将缓冲存储器中临时存储的数据提供(或清除)到存储器装置100。当缓冲存储器中临时存储的数据提供到存储器装置100时,可以擦除缓冲存储器中临时存储的数据。
在读取操作中,存储器控制器200可以向存储器装置100提供读取命令和物理地址。
在擦除操作中,存储器控制器200可以向存储器装置100提供擦除命令和物理地址。
在实施例中,物理地址可以包括平面编号、块编号、页面编号和子页面编号。
存储器控制器200可以自主地生成命令、地址和数据,而不管从主机400提供的任何请求。存储器控制器200可以将自主生成的命令、地址和数据传输到存储器装置100。例如,存储器控制器200可以生成用于执行后台操作的命令、地址和数据。而且,存储器控制器200可以向存储器装置100提供命令、地址和数据。执行后台操作的命令例如可以是编程命令或读取命令。
后台操作可以是损耗均衡、读取回收和垃圾收集中的至少一种。损耗均衡可以包括例如静态损耗均衡、动态损耗均衡等。静态损耗均衡可以包括存储存储块的擦除次数并且将几乎不执行任何擦除或任何写入操作的冷数据移动到擦除次数最多的存储块中的操作。动态损耗均衡可以包括存储存储块的擦除次数并且将数据编程到擦除次数最少的存储块中的操作。
读取回收可以包括在存储块中存储的数据中出现不可校正的错误之前将该存储块中存储的数据移动到另一存储块的操作。
垃圾收集可以包括将存储块之中的坏块中包括的有效数据复制到空闲块并且擦除坏块中的无效数据的操作。将坏块中的有效数据复制到空闲块可以包括将坏块中的有效数据移动到空闲块。
在实施例中,存储器控制器200可以控制存储器装置100以在预定时段(例如,空闲时段或另一时段)执行后台操作。空闲时段可以包括例如不提供主机400的任何请求的时段。在一个实施例中,空闲时段可以包括对应于从向主机400提供对主机400的请求的响应的时间到向存储装置1000提供主机400的后续请求的时间的时段。
在实施例中,存储器控制器200可以控制两个或更多个存储器装置100。存储器控制器200可以根据例如交错方案来控制存储器装置100,以提高操作性能。交错方案可以包括控制对两个或更多个存储器装置100的操作彼此重叠。
存储器控制器200可以将命令和物理地址顺序地存储在至少一个命令队列中,并且可以根据调度顺序向存储器装置提供命令队列中存储的命令和物理地址。可以根据先进先出(FIFO:first-in first-out)方案来输出命令队列中存储的命令和物理地址。然而,本公开不限于此。
例如,存储器控制器200可以将读取命令和物理地址顺序地存储在读取命令队列中,并且将读取命令队列中存储的读取命令和物理地址顺序地提供到存储器装置100。
在一个示例中,存储器控制器200可以将编程命令和物理地址存储在编程命令队列中,并将读取命令和物理地址存储在读取命令队列中。而且,存储器控制器200可以首先将编程命令和物理地址提供到存储器装置100并且然后将读取命令和物理地址提供到存储器装置100。
存储器控制器200可以将擦除命令提供到存储器装置100。在存储器装置100响应于擦除命令而执行擦除操作的同时,存储器控制器200可以从主机400接收请求(例如,读取请求)。存储器控制器200可以响应于主机400的请求而提供暂停命令。暂停命令可以指示存储器装置100暂停擦除操作。在将暂停命令提供到存储器装置100之后,存储器控制器200可以将指示存储器装置100执行与主机400的请求相对应的操作的命令(例如,读取命令)提供到存储器装置100。存储器装置100可以响应于暂停命令而暂停擦除操作,并且响应于命令(例如,读取命令)而执行操作(例如,读取操作)。在与请求相对应的操作完成之后,存储器控制器200可以将恢复命令提供到存储器装置100。恢复命令可以指示存储器装置100恢复擦除操作。存储器装置100可以响应于恢复命令而恢复擦除操作。
当擦除命令响应于恢复命令而恢复时,在擦除操作正常执行之前可能存在特定准备时间。该准备时间可以是在正常执行擦除操作之前延迟的时间。当主机400在准备时间期间向存储器控制器200提供请求(例如,读取请求)时,指示存储器装置100执行与该请求相对应的操作的命令(例如,读取命令)可以连续地存储在命令队列中。当命令在命令队列中连续地排队时,对主机400的请求的响应可能延迟。
当指示对多个平面101、102、103和104之中的任意一个平面进行操作的命令顺序地存储在命令队列中时,可以仅当由首先输出的命令指示的操作完成时将接着待输出的命令提供到存储器装置100。例如,在执行由首先输出的命令指示的操作的同时,接着待输出的命令可以在命令队列中排队。在一个实施例中,当指示对第零平面101进行编程操作的编程命令和指示对第零平面101进行读取操作的读取命令顺序地存储在每个命令队列中时,基于该编程命令和该读取命令,在执行编程操作的同时读取命令可以在命令队列中排队。
在由首先输出的命令指示的操作没有完成而是继续执行的同时,可以将主机400的读取请求提供到存储器控制器200。针对主机400的读取请求的读取命令可以存储在读取命令队列中,并且当读取命令在读取命令队列中连续地排队时对主机400的读取请求的响应可能延迟。
在实施例中,响应于来自主机400的读取请求,存储器控制器200可以将第一读取命令和映射到从主机400提供的逻辑地址的第一物理地址存储在第一读取命令队列中。存储器控制器200可以比较第一读取命令队列中存储的物理地址。存储器控制器200可以将被调度到第一读取命令队列的索引编号之中的第一优先级索引编号中的第二物理地址的页面编号与第一物理地址的页面编号进行比较。当第一物理地址的页面编号与第二物理地址的页面编号相同时,存储器控制器200可以将第一物理地址调度到第一读取命令队列的索引编号之中的第一优先级索引编号中。存储器控制器200可以根据调度顺序,将第一读取命令队列中存储的读取命令和物理地址顺序地提供到存储器装置100。
在一个实施例中,存储器控制器200可以响应于从主机400提供的读取请求而生成第一读取命令,将从主机400提供的逻辑地址转换为第一物理地址,并且将第一读取命令与第一物理地址存储在第一读取命令队列中。而且,存储器控制器200可以搜索第一物理地址组,第一物理地址组包括至少一个第二物理地址和响应于已经发生调度事件的第一物理地址,第二物理地址包括与第一读取命令队列中存储的物理地址之中的第一物理地址相等的页面编号。而且,存储器控制器200可以将第二物理地址组和第一物理地址组顺序地调度到第二读取命令队列的连续索引编号中,第二物理地址组包括平面编号与第一读取命令队列中存储的物理地址之中与第一物理地址组的所有平面编号不同的所有物理地址。
在一个实施例中,在执行后台操作的同时,存储器控制器200可以将指示存储器控制器100执行读取操作的第一读取命令和第一物理地址存储在第一读取命令队列中。而且,在执行后台操作的同时,存储器控制器200可以响应于从主机400提供的读取请求而将第二读取命令和第二物理地址存储在第二读取命令队列中。而且,存储器控制器200可以根据通过比较第一物理地址与第二物理地址而获得的结果,将第一物理地址、第二物理地址和第二读取命令调度到第三读取命令队列中。物理地址组中的物理地址的数量可以为一个或多个,并且物理地址组的数量可以为一个或多个。
在将恢复命令提供到存储器装置100之后,可能发生调度事件。例如,在与从将恢复命令提供到存储器装置100的时间到将暂停命令提供到存储器装置100的时间相对应的时段内,可能发生调度事件。在例如擦除操作完成时或编程操作(或写入操作)完成之前,可能发生调度事件。
存储器控制器200可以包括命令生成控制器210、命令存储器件220和命令调度控制器230。命令生成控制器210可以响应于主机400的请求而生成命令。例如,命令生成控制器210可以响应于主机400的读取请求而生成读取命令。例如,命令生成控制器210可以响应于主机400的写入请求而生成编程命令。例如,命令生成控制器210可以响应于主机400的擦除请求而生成擦除命令。例如,命令生成控制器210可以生成暂停命令或恢复命令。
命令生成控制器210可以将从主机400提供的逻辑地址转换为物理地址。在实施例中,命令生成控制器210可以被实施为闪存转换层。命令生成控制器210可以将命令存储器件220中存储的命令和物理地址提供到存储器装置100。
在实施例中,命令生成控制器210可以将擦除命令提供到存储器装置100,响应于在擦除操作期间由主机400提供的请求,将暂停命令提供到存储器装置100,并且当与该请求相对应的操作完成时将恢复命令提供到存储器装置100。在实施例中,在将恢复命令提供到存储器装置100之后,命令生成控制器210可以将调度事件信号提供到命令调度控制器230。将参照图5描述实施例。
在一个实施例中,在从将指示存储器装置100执行擦除操作或写入操作的命令提供到存储器装置100的时间起测量的预定时段过去之后,命令生成控制器210可以将调度事件信号提供到命令调度控制器230。将参照图6和图7描述实施例。
命令存储器件220可以存储命令和物理地址。命令存储器件220可以包括至少一个读取命令队列。例如,命令存储器件220可以包括读取命令队列、编程命令队列或擦除命令队列中的一个或多个。
响应于调度事件信号,命令调度控制器230可以在第一读取命令队列中存储的物理地址之中搜索至少一个第二物理地址,第二物理地址包括与第一物理地址的页面编号相等的页面编号。第一物理地址和至少一个第二物理地址可以在第一物理地址组中。命令调度控制器230可以在第一读取命令队列中存储的物理地址之中搜索第二物理地址组。第二物理地址组可以包括具有与第一物理地址组的所有平面编号不同的平面编号的所有物理地址。命令调度控制器230可以将第一物理地址组和第二物理地址组调度在例如第二读取命令队列的连续索引编号中。
在一个实施例中,存储装置1000可以包括仅在从电源供应电力时存储数据的缓冲存储器。缓冲存储器可以在存储器控制器200中。在一个实施例中,缓冲存储器可以在存储器控制器200外部并且联接到存储器控制器200。例如,缓冲存储器可以易失性存储器装置,例如双倍数据速率同步动态随机存取存储器(DDR SDRAM)、第四代低功率双倍数据速率(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)和Rambus动态随机存取存储器(RDRAM)。
主机400可以通过接口与存储装置1000通信。接口可以被实施为例如串行高级技术附件(SATA)接口、高速SATA(SATAe)接口、串列小型计算机系统接口(SAS)接口、高速外围组件互连(PCIe)接口、高速非易失性存储器(NVMe)接口、高级主机控制器接口(AHCI)接口或多媒体卡接口。然而,本公开不限于此。
主机400可以将数据存储在存储装置1000中,或者可以与存储装置1000通信以获取存储装置1000中存储的数据。在实施例中,主机400可以向存储装置1000提供用于请求存储装置1000存储数据的写入请求。而且,主机400可以向存储装置1000提供写入请求、数据以及用于识别数据的逻辑地址。
响应于从主机400提供的写入请求,存储装置1000可以将写入数据(例如,包括由主机400提供的数据和元数据)存储在存储器装置100中,并且可以将表示写入数据的存储已经完成的响应提供到主机400。
在实施例中,主机400可以向存储装置1000提供用于请求存储装置1000将存储装置1000中存储的数据提供到主机400的读取请求。而且,主机400可以将读取请求和读取地址提供到存储装置1000。
响应于从主机400提供的读取请求,存储装置1000可以从非易失性存储器装置100读取与由主机400提供的读取地址相对应的读取数据,并且可以向主机400提供读取数据作为对读取请求的响应。
图2是示出根据实施例的多个平面PLANE0、PLANE1、PLANE2和PLANE3的示图。平面PLANE0、PLANE1、PLANE2和PLANE3可以例如与图1中所示的平面101、102、103和104相对应。
参照图2,平面PLANE0、PLANE1、PLANE2和PLANE3可以连接到一个通道。在实施例中,从每个平面输出的数据可以通过一个通道顺序地提供到存储器控制器200。例如,在从平面PLANE0、PLANE1、PLANE2和PLANE3之中的任意一个平面输出的数据通过一个通道提供到存储器控制器200之后,从平面PLANE0、PLANE1、PLANE2和PLANE3中的另一平面输出的数据可以通过该一个通道提供到存储器控制器200。因此,在一个实施例中,两个或更多个平面可以不同时地通过一个通道输出数据。
平面PLANE0、PLANE1、PLANE2和PLANE3中的每一个可以包括多个存储块MB1、MB2、MB3、……、和MBm,其中m为2或更大的自然数。在实施例中,存储块MB1、MB2、MB3、……、和MBm可以包括一个或多个系统块和一个或多个用户块。例如,第一存储块MB1和第二存储块MB2可以是系统块并且第三至第m存储块MB3至MBm可以是用户块。
系统块可以存储元数据,元数据包括映射数据、有效性数据(validity data)、不可校正错误数据、操作数据等。映射数据可以是表示逻辑地址与物理地址之间的映射关系的数据。有效性数据可以是表示从主机400提供的数据(或用户数据)的有效性的数据。不可校正错误数据可以是表示从主机400提供的数据(或用户数据)是具有不可校正错误数据的数据。操作数据可以是表示命令队列中存储的物理地址是从来自主机400的逻辑地址转换而来的地址还是为执行后台操作而生成的地址的数据。然而,本公开不限于此。
用户块可以存储例如从主机400提供的数据和元数据。可以包括多个用户块。
存储块MB1、MB2、MB3、……、和MBm中的每一个可以包括多个页面PAGE1、PAGE2、……、和PAGEn,其中n为2或更大的自然数。页面PAGE1、PAGE2、……、和PAGEn中的每一个可以根据作为执行读取操作的单位的读取单位而被划分为虚拟子页面SP0、SP1、SP2和SP3。可以基于页面大小和子页面数量来预先确定读取单位。例如,当页面大小为16KB,子页面数量为4时,读取单位可以为4KB。然而,本公开不限于此。在一个或多个实施例中,术语“子页面”、“切片(slice)”、“区段”等可以具有相同含义。
在实施例中,物理地址可以包括平面编号、块编号、页面编号和子页面编号。平面编号可以指示平面PLANE0、PLANE1、PLANE2和PLANE3之中的任意一个平面。块编号可以指示一个平面中的多个存储块MB1、MB2、MB3、……、和MBm之中的任意一个存储块。页面编号可以指示一个存储块中的多个页面PAGE1、PAGE2、……、和PAGEn之中的任意一个页面。子页面编号可以指示一个页面中的子页面SP0、SP1、SP2和SP3中的一个。
图3是示出存储器装置100的实施例的示图,存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130。
存储器单元阵列110可以包括多个存储块MB1至MBk(k为正整数)。所示的存储块MB1至MBk的数量仅是示例,并且在另一实施例中可以是不同的数量。
存储块MB1至MBk中的每一个可以连接到局部线LL和位线BL1至BLn(n为正整数)。局部线LL可以连接到行解码器122和存储块MB1至MBk中的每一个。局部线LL可以包括第一选择线、第二选择线以及布置在第一选择线与第二选择线之间的多个字线。局部线LL可以进一步包括布置在第一选择线与字线之间的虚设线、布置在第二选择线与字线之间的虚设线、以及管线。
位线BL1至BLn可以共同连接到存储块MB1至MBk。
存储块MB1至MBk可以以二维结构或三维结构来实施。例如,具有二维结构的存储块MB1至MBk中的存储器单元可以沿与衬底平行的方向布置。例如,具有三维结构的存储块MB1至MBk中的存储器单元可以沿与衬底垂直的方向堆叠。
外围电路120可以包括电压生成器121、行解码器122、页面缓冲器组123、列解码器124、输入/输出电路125和感测电路126。电压生成器121可以响应于操作命令OP_CMD而生成用于编程操作、读取操作和擦除操作的各种操作电压Vop。而且,电压生成器121可以响应于操作命令OP_CMD而选择性地使局部线LL放电。例如,电压生成器121可以在控制逻辑130的控制下,生成编程电压、验证电压、通过电压、导通电压、读取电压、擦除电压、源极线电压等。
在实施例中,电压生成器121可以通过调节外部电源电压来生成内部电源电压。由电压生成器121生成的内部电源电压可以用作存储器装置100的操作电压。
在实施例中,电压生成器121可以使用外部电源电压或内部电源电压来生成多个电压。例如,电压生成器121可以包括用于接收内部电源电压的多个泵浦(pumping)电容器,并且可以在控制逻辑130的控制下通过选择性地启用泵浦电容器来生成多个电压。所生成的电压可以通过行解码器122被供应到存储器单元阵列110。
行解码器122可以响应于行地址RADD将操作电压Vop传送到局部线LL。可以通过局部线LL将操作电压Vop传送到存储块MB1至MBk之中的所选择的存储块。
例如,在编程操作中,行解码器122可以将编程电压施加到所选择的字线,并且将电平低于编程电压的电平的编程通过电压施加到未选择的字线。在编程验证操作中,行解码器122可以将验证电压施加到所选择的字线,并且将高于验证电压的验证通过电压施加到未选择的字线。
在读取操作中,行解码器122可以将读取电压施加到所选择的字线,并且将高于读取电压的读取通过电压施加到未选择的字线。
在擦除操作中,行解码器122可以根据经解码的地址来选择一个存储块。在擦除操作中,行解码器122可以将参考(例如,接地)电压施加到连接到所选择的存储块的字线。
页面缓冲器组123可以包括分别通过第一位线BL1至第n位线BLn连接到存储器单元阵列110的第一页面缓冲器PB1至第n页面缓冲器PBn。第一至第n页面缓冲器PB1至PBn可以在控制逻辑130的控制下操作。例如,第一至第n页面缓冲器PB1至PBn可以响应于页面缓冲器控制信号PBSIGNALS而操作。例如,在读取操作或验证操作中,第一至第n页面缓冲器PB1至PBn可以临时存储通过第一至第n位线BL1至BLn接收的数据,或者感测位线BL1至BLn的电压或电流。
在编程操作中,当将编程电压施加到所选择的字线时,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn将通过列解码器124和输入/输出电路125接收的数据DATA传送到所选择的存储器单元。根据所传送的数据DATA,对所选择的页面的存储器单元进行编程。连接到施加有编程允许电压(例如,接地电压)的位线的存储器单元可以具有增加的阈值电压。可以维持连接到施加有编程禁止电压(例如,电源电压)的位线的存储器单元的阈值电压。
在验证操作中,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn从所选择的存储器单元感测所选择的存储器单元中存储的数据。
在读取操作中,第一至第n页面缓冲器PB1至PBn可以在列解码器124的控制下通过第一至第n位线BL1至BLn从所选择的页面的存储器单元中感测数据DATA,并且将所感测的数据DATA输出到输入/输出电路125。
在擦除操作中,第一至第n页面缓冲器PB1至PBn可以使第一至第n位线BL1至BLn浮置。
列解码器124可以响应于列地址CADD而在输入/输出电路125与页面缓冲器组123之间传送数据。例如,列解码器124可以通过数据线DL与第一至第n页面缓冲器PB1至PBn交换数据,或者通过列线CL与输入/输出电路125交换数据。
输入/输出电路125可以将从存储器控制器200传送的命令CMD和地址ADD传送到控制逻辑130,或者与列解码器124交换数据DATA。
在读取操作或验证操作中,感测电路126可以响应于允许位VRY_BIT<#>生成参考电流,并且通过将从页面缓冲器组123接收的感测电压VPB与由参考电流生成的参考电压进行比较,输出通过信号PASS或失败信号FAIL。
控制逻辑130可以响应于命令CMD和地址ADD而通过输出操作命令OP_CMD、行地址RADD、页面缓冲器控制信号PBSIGNALS和允许位VRY_BIT<#>来控制外围电路120。
图4是示出存储器控制器200的实施例的示图,存储器控制器200可以包括命令生成控制器210、命令存储器件220和命令调度控制器230。
参照图4,命令生成控制器210可以从主机400接收读取请求。命令生成控制器210可以生成指示存储器装置响应于读取请求而读取存储器装置中存储的数据的第一读取命令。可以响应于主机400当前提供的读取请求而生成第一读取命令。
命令生成控制器210可以将从主机400提供的逻辑地址转换为第一物理地址。第一物理地址可以是与第一读取命令一起被提供的物理地址。在一个实施例中,第一物理地址可以是与命令存储器件220中存储的读取命令一起被提供的物理地址。
命令生成控制器210可以将第一读取命令和第一物理地址提供到命令存储器件220。命令生成控制器210可以生成调度事件信号,并且将调度事件信号提供到命令调度控制器230。命令存储器件220可以存储读取命令和物理地址。可以在生成第一读取命令和第一物理地址之前生成命令存储器件220中存储的读取命令和物理地址。
在实施例中,命令存储器件220可以包括第一读取命令队列和第二读取命令队列。第一读取命令队列可以在调度事件发生之前存储读取命令和物理地址。第二读取命令队列可以是在调度事件发生之后重新排列并存储读取命令和物理地址的读取命令队列。
命令调度控制器230可以在第一读取命令队列中存储的物理地址之中搜索第一物理地址组和第二物理地址组。命令调度控制器230可将第一物理地址组和第二物理地址组调度到第二读取命令队列中。
图5是示出提供调度事件信号的操作的实施例的示图。参照图5,在时间T1,命令生成控制器210可以将擦除命令ECMD提供到存储器装置100。存储器装置100可以响应于擦除命令ECMD而开始擦除操作。
在时间T2,主机400可以将请求提供到命令生成控制器210。主机400的请求可以是例如写入请求或读取请求。命令生成控制器210可以将暂停命令SPD_CMD提供到存储器装置100。存储器装置100可以响应于暂停命令SPD_CMD而暂停在时间T1开始的擦除操作。
在时间T3,命令生成控制器210可以将与在时间T2提供的主机400的请求相对应的命令CMD提供到存储器装置100。当主机400的请求为写入请求时,命令CMD可以为编程命令。在一个实施例中,当主机400的请求为读取请求时,命令CMD可以为读取命令。存储器装置100可以响应于命令CMD执行由命令CMD指示的操作。
在时间T4,存储器装置100可以完成由命令CMD指示的操作。命令生成控制器210可以将恢复命令RSM_CMD提供到存储器装置100。存储器装置100可以响应于恢复命令RSM_CMD而恢复在时间T2暂停的擦除操作。存储器装置100可能需要特定准备时间以正常执行擦除操作。该准备时间可以被称为恢复延迟时间。例如,当在时间T4恢复擦除操作时,可以在恢复延迟时间过去之后从T6开始正常执行擦除操作。
在恢复延迟时间期间,主机400可以将读取请求提供到命令生成控制器210。每当主机400的读取请求被提供到命令生成控制器210时,读取命令和物理地址可以顺序地存储在命令存储器件220中包括的第一读取命令队列中。当第一读取命令队列中存储的读取命令和物理地址在第一读取命令队列中连续地排队时,对主机400的读取请求的响应可能延迟。
在实施例中,在时间T5,在将恢复命令RSM_CMD提供到存储器装置100之后,命令生成控制器210可以将调度事件信号EVT_SIG提供到命令调度控制器230。
图6是示出提供调度事件信号的操作的实施例的示图。
参照图6,命令生成控制器210可以不生成暂停命令SPD_CMD和恢复命令RSM_CMD。在从将图5所示的命令CMD提供到存储器装置100起经过预定时段之后,命令生成控制器210可以输出调度事件信号EVT_SIG。
在时间T1’,命令生成控制器210可以将编程命令PCMD提供到存储器装置100。存储器装置100可以响应于编程命令PCMD而开始编程操作(或写入操作)。可能需要时间以正常完成编程操作。该时间可以称为编程操作时间tPROG。关于编程操作时间tPROG的信息(或数据)可以存储在存储器装置100中的多个存储块MB1、MB2、MB3、……、和MBm之中被分配为CAM块的存储块中。存储器控制器200可在启动时从存储器装置100获取关于编程操作时间tPROG的信息。编程操作时间tPROG可以是例如从时间T1’到时间T3’相对应的时段。
在将编程命令PCMD提供到存储器装置100的时间之后经过编程操作时间tPROG之前,命令生成控制器210可以将调度事件信号EVT_SIG提供到命令调度控制器230。
在实施例中,在将编程命令PCMD提供到存储器装置100的时间之后经过预定的第一参考时间tSET1的时间,命令生成控制器210可以将调度事件信号EVT_SIG提供到命令调度控制器230。例如,在时间T1’之后经过预定的第一参考时间tSET1的时间可以为T2’。关于第一参考时间tSET1的信息(或数据)可以存储在存储器装置100中的多个存储块MB1、MB2、MB3、……、和MBm之中被分配为CAM块的存储块中。存储器控制器200可以在启动时从存储器装置100获取关于第一参考时间tSET1的信息。在实施例中,第一参考时间tSET1可以短于编程操作时间tPROG。
在时间T3’,命令生成控制器210可以将用于检查编程操作的结果的命令提供到存储器装置100。
图7是示出提供调度事件信号的操作的实施例的示图。
参照图7,在时间T1’,命令生成控制器210可以将擦除命令ECMD提供到存储器装置100。存储器装置100可以响应于擦除命令ECMD而开始擦除操作。
可能需要正常完成擦除操作的时间可以是擦除操作时间tER。关于擦除操作时间tER的信息(或数据)可以存储在存储器装置100中的多个存储块MB1、MB2、MB3、……、和MBm之中被分配为CAM块的存储块中。存储器控制器200可在启动时从存储器装置100获取关于擦除操作时间tER的信息。擦除操作时间tER可以是例如与从时间T1’到时间T5’相对应的时段。在一个实施例中,擦除操作时间tER可以长于图6所示的编程操作时间tPROG。
在将擦除命令ECMD提供到存储器装置100的时间之后经过擦除操作时间tER之前,命令生成控制器210可以将调度事件信号EVT_SIG提供到命令调度控制器230。
在实施例中,在将擦除命令ECMD提供到存储器装置100的时间之后经过预定的第二参考时间tSET2的时间,命令生成控制器210可以将调度事件信号EVT_SIG提供到命令调度控制器230。例如,在时间T1’之后经过预定的第二参考时间tSET2的时间可以为T4’。
关于第二参考时间tSET2的信息(或数据)可以存储在存储器装置100中的多个存储块MB1、MB2、MB3、……、和MBm之中被分配为CAM块的存储块中。存储器控制器200可以在启动时从存储器装置100获取关于第二参考时间tSET2的信息。在实施例中,第二参考时间tSET2可以比擦除操作时间tER短。在实施例中,第二参考时间tSET2可以等于第一参考时间tSET1或比第一参考时间tSET1长。
图8是示出命令存储器件220的实施例的示图,命令存储器件220可以包括第一读取命令队列221和第二读取命令队列222。
第一读取命令队列221可以基于索引编号顺序地存储读取命令RCMD和物理地址Physical Address。例如,包括平面编号0P0、块编号100BLK100、页面编号30PG30、子页面编号0至3S0至S3的物理地址和读取命令RCMD1可以存储在第一读取命令队列221的索引编号0Index0中。
包括平面编号0P0、块编号200BLK200、页面编号10PG10、子页面编号3S3的物理地址和读取命令RCMD2可以存储在第一读取命令队列221的索引编号1Index1中。
包括平面编号1P1、块编号301BLK301、页面编号50PG50、子页面编号0和1S0和S1的物理地址和读取命令RCMD3可以存储在第一读取命令队列221的索引编号2Index2中。
包括平面编号3P3、块编号903BLK903、页面编号75PG75、子页面编号1S1的物理地址和读取命令RCMD4可以存储在第一读取命令队列221的索引编号3Index3中。
读取命令RCMD1、RCMD2、RCMD3和RCMD4以及分别存储在第一读取命令队列221的Index0、Index1、Index2和Index3的备用列中的物理地址可以被顺序地提供到存储器装置100。例如,读取命令RCMD1、RCMD2、RCMD3和RCMD4以及物理地址中的相应一个可以根据预定的次序(例如,从第一读取命令队列221的备用列Index0、Index1、Index2和Index3的最小编号开始)来顺序地提供。在另一实施例中,预定的次序可以是不同的次序。在调度事件发生之前,第二读取命令队列222可以为空。
图9是示出将读取命令和相应的物理地址存储在第一读取命令队列中的操作的实施例的示图。
参照图9,在读取命令RCMD1、RCMD2、RCMD3和RCMD4以及物理地址分别存储在第一读取命令队列221的备用列Index0、Index1、Index2和Index3中的同时,命令生成控制器210可以将例如映射到逻辑地址的物理地址和从主机400提供的读取命令存储在第一读取命令队列221中。例如,包括平面编号1P1、块编号201BLK201、页面编号30PG30、子页面编号2S2的物理地址和读取命令可以存储在第一读取命令队列221的索引编号Index4中。
在一个实施例中,可以根据先进先出(FIFO)方案来输出命令队列中存储的命令和物理地址。例如,可以首先输出第一读取命令队列221的索引编号0Index0中存储的物理地址和读取命令RCMD1。接着可以输出第一读取命令队列221的索引编号1Index1中存储的物理地址和读取命令RCMD2,依此类推。
图10是示出例如根据图9的实施例所执行的读取操作的实施例的示图。
参照图9和图10,可以将第一读取命令队列221的索引编号0Index0中存储的物理地址和读取命令RCMD1提供到存储器装置100。存储器装置100可以响应于读取命令RCMD1而对具有包括平面编号0P0、块编号100BLK100、页面编号30PG30和子页面编号0S0的物理地址的单个平面(例如,第零平面101)的页面执行读取操作。对单个平面的页面执行的读取操作可以称为单平面读取操作SP read。可以输出通过单平面读取操作SP read的数据(DATAOUT)。可以通过通道将输出数据提供到存储器控制器200。
接着,可以将第一读取命令队列221的索引编号1Index1中存储读取命令RCMD2和物理地址提供到存储器装置100。存储器装置100可以响应于读取命令RCMD2而对与包括平面编号0P0、块编号200BLK200、页面编号10PG10和子页面编号3S3的物理地址相对应的子页面执行读取操作PGS read。可以输出通过读取操作PGS read的子页面中存储的数据(DATAOUT)。
在第一读取命令队列221的索引编号1Index1中存储的读取命令RCMD2被提供到存储器装置100之后,可以将第一读取命令队列221的索引编号2Index2中存储的读取命令RCMD3和物理地址提供到存储器装置100。存储器装置100可以响应于读取命令RCMD3而对具有包括平面编号1P1、块编号301BLK301、页面编号50PG50和子页面编号0和1S0和S1的物理地址的单个平面(例如,第一平面102)的页面执行单平面读取操作SP read。
因为第一读取命令队列221的索引编号1Index1中存储的物理地址的平面编号与第一读取命令队列221的索引编号2Index2中存储的物理地址的平面编号彼此不同,所以存储器装置100可以使用平面交错方案对具有平面编号0P0的第零平面101和具有平面编号1P1的第一平面102执行读取操作。例如,对第零平面101进行的读取操作PGS read和对第一平面102进行的单平面读取操作SP read可以彼此部分重叠。
在通过对第零平面101执行的读取操作PGS read输出的数据提供到存储器控制器200之后,输出由对第一平面102执行的单平面读取操作SP read的待输出的数据。原因在于多个平面(例如,图1所示的平面101至104或者图2所示的平面PLANE0、PLANE1、PLANE2和PLANE3)连接到一个通道。
接着,可以将第一读取命令队列221的索引编号3Index3中存储的读取命令RCMD4和物理地址提供到存储器装置100。存储器装置100可以响应于读取命令RCMD4而对与包括平面编号3P3、块编号903BLK903、页面编号75PG75和子页面编号1S1的物理地址相对应的子页面执行读取操作PGS read。可以输出通过读取操作PGS read的子页面中存储的数据(DATA OUT)。
接着,可以将第一读取命令队列221的索引编号4Index4中存储的读取命令和物理地址提供到存储器装置100。存储器装置100可以执行读取操作PGS read,并且可以输出通过读取操作PGS read的子页面中存储的数据(DATA OUT)。
第一读取命令队列221中存储的读取命令和物理地址可以在存储器装置100执行例如如上参照图5所描述的擦除操作的同时排队。读取命令和物理地址可以在第一读取命令队列221的相应索引编号中持续等待,直到当前存储器装置100中执行的操作完成。因此,针对主机400的读取请求执行读取操作的时间(或读取忙碌时间tR)增加,读取操作的性能下降,并且针对主机400的读取请求的读取响应延迟。
为了减轻这种顾虑,根据第一读取命令队列221中存储的物理地址是否要提供到存储器装置100,可以根据特定的输出顺序再次调度第一读取命令队列221。
图11是示出将第一读取命令队列中存储的读取命令和物理地址调度到第二读取命令队列中的操作的实施例的示图。出于示出的目的,在图11中,假设第一物理地址是包括平面编号1P1、块编号201BLK201、页面编号30PG30和子页面编号2S2的物理地址。
参照图11,命令调度控制器230可以在第一读取命令队列221中存储的物理地址之中搜索包括与第一物理地址的页面编号相等的页面编号的至少一个第二物理地址。在实施例中,第一物理地址和至少一个第二物理地址可以是具有不同平面编号的物理地址。例如,第一读取命令队列221的索引编号0Index0中存储的物理地址可以是具有与第一物理地址的平面编号不同的平面编号和/或具有与第一物理地址的页面编号不同的页面编号的物理地址。
命令调度控制器230可以将第一读取命令、与至少一个第二物理地址相对应的至少一个第二读取命令、以及第一物理地址组调度到第二读取命令队列222的索引编号之中的任意一个索引编号中。例如,第一读取命令队列221的索引编号0Index0中存储的物理地址和第一物理地址可以被调度到第二读取命令队列222的索引编号0Index0中。
与第一物理地址相对应的第一读取命令和与第一读取命令队列221的索引编号0Index0中存储的物理地址相对应的第二读取命令也可以被调度到第二读取命令队列222的索引编号0Index0中。
第二读取命令队列222的索引编号0Index0中存储的读取命令RCMD1可以包括第一读取命令和第二读取命令。第二读取命令队列222的索引编号0Index0可以是第一优先级索引编号。
在一个实施例中,第一物理地址和至少一个第二物理地址可以具有相同的平面编号和/或相同的块编号。命令调度控制器230可以把第一物理地址组调度到在第二读取命令队列222的索引编号之中的任意一个索引编号中。而且,命令调度控制器230可以把第一读取命令或与至少一个第二物理地址相对应的至少一个第二读取命令调度到第二读取命令队列222的索引编号之中的一个索引编号中。
在一个实施例中,当(在第一读取命令队列221中存储的物理地址之中)不存在任何包括与第一物理地址的页面编码相等的页面编码的物理地址时,可以例如如图9所示将第一物理地址调度到第二读取命令队列222的索引编号4Index4中。
图12是示出根据图11所示的实施例所执行的读取操作的实施例的示图。
参照图11和图12,可以将第二读取命令队列222的索引编号0Index0中存储的读取命令RCMD1和物理地址提供到存储器装置100。存储器装置100可以响应于读取命令RCMD1而同时对具有第二读取命令队列222的索引编号0Index0中存储的物理地址的每个平面的页面执行读取操作MP read。对每个平面的页面同时执行的读取操作可以定义为多平面读取操作MP read。
可以输出通过对第零平面101执行多平面读取操作MP read的数据(DATAOUT)。接着,可以输出通过对第一平面102执行多平面读取操作MP read的数据(DATA OUT)。
第二读取命令队列的索引编号1Index1、索引编号2Index2和索引编号3Index3中的每一个中存储的读取命令和物理地址可以顺序地提供到存储器装置100,并且存储器装置100可以响应于每个读取命令而顺序地执行读取操作。上面已经参照图10进行描述。
如上所述,因为读取命令队列被重新排列,所以可以减少执行对于主机400的读取请求的读取操作的所有感测操作的次数。因此,可以减少或防止对主机400的读取请求的响应被延迟的现象,并且因此可以提高读取操作的性能。
图13是示出将第一读取命令队列中存储的读取命令和物理地址调度到第二读取命令队列中的操作的实施例的示图。出于示出的目的,假设第一物理地址是包括平面编号1P1、块编号201BLK201、页面编号30PG30和子页面编号2S2的物理地址。
参照图13,如参照图11所述,第一读取命令队列221的索引编号0Index0中存储的物理地址和第一物理地址可以被调度到第二读取命令队列222的索引编号0Index0中。与第一物理地址相对应的第一读取命令和与第一读取命令队列221的索引编号0Index0中存储的物理地址相对应的第二读取命令也可以被调度到第二读取命令队列222的索引编号0Index0中。
在实施例中,命令调度控制器230可以在第一读取命令队列221中存储的物理地址之中搜索第二物理地址组。而且,命令调度控制器230可以将第一物理地址组和第二物理地址组顺序地调度到第二读取命令队列222的连续索引编号中。例如,第一读取命令队列221的索引编号3Index3中存储的物理地址可以包括在第二物理地址组中。
当第一物理地址组存储在第二读取命令队列222的索引编号0Index0中时,第一读取命令队列221的索引编号3Index3中存储的物理地址和读取命令可以被调度到第二读取命令队列222的索引编号1Index1中。第二读取命令队列222的索引编号1Index1中存储的读取命令RCMD2的数量可以为一个。
第一读取命令队列221的索引编号1Index1中存储的物理地址和读取命令可以被调度到第二读取命令队列222的索引编号3Index3中。
第一读取命令队列221的索引编号2Index2中存储的物理地址和读取命令可以被调度到第二读取命令队列222的索引编号2Index2中。
图14是示出根据图13所示的实施例所执行的读取操作的实施例的示图。
参照图13和图14,可以将第二读取命令队列222的索引编号0Index0中存储的读取命令RCMD1和物理地址提供到存储器装置100。存储器装置100可以执行多平面读取操作MPread。可以顺序地输出通过多平面读取操作MP read的数据(DATA OUT)。
在第二读取命令队列222的索引编号0Index0中存储的读取命令RCMD2被提供到存储器装置100之后,可以将第二读取命令队列222的索引编号1Index1中存储的读取命令RCMD2和物理地址提供到存储器装置100。存储器装置100可以执行读取操作PGS read。
存储器装置100可以使用平面交错方案对具有平面编号0P0的第零平面101、具有平面编号1P1的第一平面102和具有平面编号2P2的第二平面103中的每一个执行读取操作。因此,多平面读取操作MP read和读取操作PGS read可以彼此部分重叠。
在顺序地输出通过多平面读取操作MP read的数据(DATA OUT)之后,可以输出通过读取操作PGS read的数据。
当第二读取命令队列222的索引编号2Index2中存储的读取命令RCMD3和物理地址可以被提供到存储器装置100时,存储器装置100可以执行读取操作SP read,并且可以输出通过读取操作SP read的数据。
当第二读取命令队列222的索引编号3Index3中存储的读取命令RCMD4和物理地址被提供到存储器装置100时,存储器装置100可以执行读取操作PGS read,并且可以输出通过读取操作PGS read的数据。
如上所述,因为读取命令队列被重新排列,所以可以减少执行对于主机400的读取请求而执行的读取操作所需的所有感测操作的次数,可以防止对主机400的读取请求的响应延迟的现象,并且可以提高读取操作的性能。
图15是命令存储器件220’的一个实施例的示意图,命令存储器件220’可以包括第一读取命令队列221’、第二读取命令队列222’和第三读取命令队列223’。
第一读取命令队列221’可以是存储指示存储器装置100在执行后台操作的同时执行读取操作的第一读取命令和第一物理地址的读取命令队列。例如,第一读取命令队列221’中存储的第一物理地址可以包括平面编号0P0、块编号100BLK100、页面编号5PG5、子页面编号0S0和子页面编号1S1。第一读取命令BRCMD1可以是指示存储器装置100在垃圾收集操作中读取牺牲块中包括的有效数据的命令。然而,本公开不限于此。
第二读取命令队列222’可以与上面参照图8描述的第一读取命令队列221相同。在一个实施例中,第二读取命令队列222’可以与上面参照图8描述的第二读取命令队列222相同。
图16是示出调度读取命令和物理地址的操作的实施例的示图。
参照图16,第一读取命令指示存储器装置100在执行后台操作的同时执行读取操作,并且第一物理地址可以存储在第一读取命令队列221’中。第一物理地址可以包括平面编号0P0、块编号100BLK100、页面编号5PG5、子页面编号0S0和子页面编号1S1。
在执行后台操作的同时,主机400可以将读取请求提供到命令生成控制器210。
命令生成控制器210可以响应于主机400的读取请求而生成第二读取命令。命令生成控制器210可以将从主机400提供的逻辑地址转换为第二物理地址。命令生成控制器210可以将第二读取命令和第二物理地址存储在第二读取命令队列222’中。第二物理地址可以包括例如平面编号0P0、块编号101BLK101、页面编号5PG5和子页面编号0S0。
命令调度控制器230可以比较第一物理地址的第一页面编号与第二物理地址的第二页面编号。例如,可以检查第一页面编号和第二页面编号是否相同。命令调度控制器230可以根据第一页面编号和第二页面编号是否相同来将第一物理地址、第二物理地址和第二读取命令调度到第三读取命令队列223’中。
在实施例中,第一物理地址的第一平面编号可以与第二物理地址的第二平面编号不同。命令调度控制器230可以将第一读取命令、第一物理地址、第二物理地址和第二读取命令调度到第三读取命令队列223’的第一优先级索引编号中。例如,第一物理地址和第二物理地址可以被调度到第三读取命令队列223’的索引编号0Index0中。另外,读取命令可以被调度到第三读取命令队列223’的索引编号0Index0中。第三读取命令队列223’的索引编号0Index0中存储的读取命令RCMD1可以包括与第一物理地址相对应的读取命令和与第二物理地址相对应的读取命令。
在一个实施例中,第一物理地址的第一平面编号可以与第二物理地址的第二平面编号相等,并且第一物理地址的第一块编号可以与第二物理地址的第二块编号相等。命令调度控制器230可以将第一物理地址、第二物理地址和第二读取命令(或第一读取命令)调度到第三读取命令队列223’的第一优先级索引编号中。
第一物理地址和第二物理地址可以组合在第三读取命令队列223’中。可以丢弃第一读取命令队列221’中存储的读取命令BRCMD1和物理地址。
图17是示出根据图16所示的实施例所执行的读取操作的实施例的示图。
参照图16和图17,可以将第三读取命令队列223’的索引编号0Index0中存储的读取命令RCMD1、第一物理地址和第二物理地址提供到存储器装置100。读取命令RCMD1可以包括指示存储器装置100读取具有第一物理地址的第一平面的页面的读取命令(例如,第一读取命令)以及指示存储器装置100读取具有第二物理地址的第二平面的页面的读取命令(例如,第二读取命令)。
存储器装置100可以响应于读取命令RCMD1而对具有第一物理地址的第一平面的页面和具有第二物理地址的第二平面的页面同时执行读取操作。例如,存储器装置100可以对具有第一物理地址的第一平面和具有第二物理地址的第二平面执行多平面读取操作MPread。
当执行多平面读取操作MP read时,存储器装置100可以将第一平面的页面中存储的数据和第二平面的页面中存储的数据顺序地提供到存储器控制器200。例如,当对第零平面101和第一平面102执行的多平面读取操作MP read完成时,可以输出第一平面102的页面中存储的数据(DATA OUT),并且然后可以输出第零平面101的页面中存储的数据(DATAOUT)。例如,通过对第零平面101进行读取操作来输出数据的时间和通过对第一平面102进行读取操作来输出数据的时间之间可能出现不同的ΔT。这是因为对从主机400提供的读取请求的响应出现在后台操作之前。
如上所述,因为读取命令队列被重新排列,所以可以减少执行关对于主机400的读取请求而执行的读取操作的所有感测操作的次数。因此,可以减少或防止对主机400的读取请求的响应被延迟的现象,进而可以提高读取操作的性能。
图18是示出操作存储器控制器200的方法的实施例的示图。
参照图18,该方法包括,在S110,存储器控制器200从主机400接收读取请求和逻辑地址。
在S120,存储器控制器200生成读取命令,并且将逻辑地址转换为物理地址。
在S130,存储器控制器200确定转换后的物理地址和读取命令队列中预先存储的物理地址是否可组合。如上所述,可以通过确定物理地址的平面编号是否彼此不同以及物理地址的页面编号是否相同来获知物理地址是否可组合,通过确定物理地址是否都具有相同的平面编号、相同的块编号和相同的页面编号或者通过确定是否使用平面交错方案来执行读取操作。
在S140,当物理地址可组合时(S130,是),存储器控制器200通过组合物理地址来重新排列读取命令队列。如上所述,通过组合物理地址来重新排列读取命令队列可以包括将转换后的物理地址调度到读取命令队列中预先存储的物理地址的备用列中,使得可以执行多平面读取操作MP read或单平面读取操作SP read。
在S150,当物理地址不可组合时(S130,否),存储器控制器200将所生成的读取命令和转换后的物理地址存储在读取命令队列中。例如,存储器控制器200将所生成的读取命令和转换后的物理地址存储在读取命令队列中的空的备用列中。这可以与上面描述的相同。
在S160,存储器控制器200可以根据调度顺序,将读取命令队列中存储的读取命令和物理地址顺序地输出到存储器装置100。
图19是示出存储器控制器200的实施例的示图,存储器控制器200可以包括处理器201、RAM 202、错误校正码(ECC)电路203、主机接口204、ROM 205和闪存接口206。处理器201可以控制存储器控制器200的全部操作。
RAM 202可以用作存储器控制器200的缓冲存储器、高速缓存存储器、工作存储器等。示例性地,RAM 202可以是缓冲存储器。
ECC电路203可以生成用于校正从存储器装置100接收的数据的失败位或错误位的ECC。ECC电路203可以通过对提供到存储器装置100的数据执行ECC编码来生成添加奇偶校验位的数据。奇偶校验位可以被存储在存储器装置100中。ECC电路203可以对从存储器装置100输出的数据执行ECC解码。
ECC电路203可以使用奇偶校验来校正错误。例如,ECC电路203可以通过使用诸如以下的各种编码调制来校正错误:LDPC码、BCH码、turbo码、里德-所罗门码(Reed-Solomoncode)、卷积码、RSC、TCM和BCM。
在编程操作中,ECC电路203可以计算待编程到存储器装置100的数据的ECC值。在读取操作中,ECC电路203可以基于ECC值对从存储器装置100读取的数据执行错误校正操作。在失效数据的恢复操作中,ECC电路203可以对从存储器装置100恢复的数据执行错误校正操作。
存储器控制器200可以通过主机接口204与外部装置(例如,主机400、应用处理器等)通信。
ROM 205可以以固件的形式存储存储器控制器200的操作的各种信息。
存储器控制器200可以通过闪存接口206与存储器装置100通信。存储器控制器200可以通过闪存接口206将命令CMD、地址ADDR、控制信号CTRL等传输到存储器装置100,并且接收数据DATA。
闪存接口206可以包括例如NAND接口。
图20是示出存储卡系统2000的实施例的示图,存储卡系统2000可以包括存储器装置2100、存储器控制器2200和连接器2300。
存储器装置2100可以利用诸如以下的各种非易失性存储器装置来实施:电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋扭矩转移磁性RAM(STT-MRAM)。
存储器控制器2200连接到存储器装置2100,并且可以访问存储器装置2100。例如,存储器控制器2200可以控制存储器装置2100的读取操作、写入操作、擦除操作和后台操作。存储器控制器2200提供存储器装置2100与主机Host之间的接口。存储器控制器2200可以运行控制存储器装置2100的指令(例如,驱动固件)。存储器控制器2200可以被实施为例如参照图1描述的存储器控制器200。
存储器控制器2200可以包括诸如随机存取存储器(RAM)、处理单元、主机接口、存储器接口和错误校正器的组件。而且,存储器控制器2200可以通过连接器2300与外部装置通信。存储器控制器2200可以根据特定的通信协议与外部装置(例如,主机400)通信。示例性地,存储器控制器2200可以通过各种通信协议中的至少一种与外部装置通信。示例包括通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和NVMe。示例性地,连接器2300可以由上述各种通信协议中的至少一种来定义。
存储器装置2100和存储器控制器2200可以被集成到单个半导体装置中以构成存储卡。存储卡的示例包括PC卡(个人计算机存储卡国际协会(PCMCIA))、紧凑型闪存(CF)卡、智能媒体卡(SM和SMC)、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC和eMMC)、SD卡(SD、迷你SD、微型SD和SDHC)以及通用闪存(UFS)。
图21是示出固态驱动器(SSD)系统的实施例的示图,固态驱动器(SSD)系统可以包括主机400和SSD 3000。SSD 3000通过信号连接器3001与主机400交换信号SIG,并且通过电源连接器3002接收电力PWR。
SSD 3000可以包括SSD控制器3200,多个闪速存储器3100_1、3100_2和3100_n,辅助电源3300以及缓冲存储器3400。根据实施例,SSD控制器3200可以执行与参照图1描述的存储器控制器200相同的功能。
而且,SSD控制器3200可以响应于从主机400接收的信号SIG而控制多个闪速存储器3100_1、3100_2和3100_n。例如,信号SIG可以是基于主机400与SSD 3000之间的接口的信号。例如,信号SIG可以是由诸如以下的接口中的至少一种来定义的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和NVMe。
辅助电源3300通过电源连接器3002连接到主机400。辅助电源3300可以接收从主机400输入的电力PWR并且可以使用电力PWR来执行充电操作。当来自主机400的电力供应不平稳时,辅助电源3300可以提供SSD 3000的电力。示例性地,辅助电源3300可以位于SSD3000中或者位于SSD 3000的外部。例如,辅助电源3300可以位于主板上,并且将辅助电力提供到SSD 3000。
缓冲存储器3400可以临时存储数据。例如,缓冲存储器3400可以临时存储从主机400接收的数据或从多个闪速存储器3100_1、3100_2和3100_n接收的数据,或者临时存储闪速存储器3100_1、3100_2和3100_n的元数据(例如,映射表)。缓冲存储器3400可以包括诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器,或者诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器。
图22是示出用户系统4000的实施例的示图,用户系统4000可以应用到本文描述的存储装置的任意实施例。
参照图22,用户系统4000包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。应用处理器4100可以驱动用户系统4000中包括的组件、操作系统(OS)、用户程序等。例如,应用处理器4100可以包括用于控制用户系统4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可以被设置为片上系统(SOC)。
存储器模块4200可以作为用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器而操作。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2SDRAM、DDR3 SDRAM、LPDDR SDRAM、LPDDR2 SDRAM和LPDDR3 SDRAM的一个或多个易失性随机存取存储器或者诸如PRAM、ReRAM、MRAM和FRAM的一个或多个非易失性随机存取存储器。应用处理器4100和存储器模块4200可以通过基于堆叠封装(PoP)来进行封装而被设置为例如一个半导体封装。
网络模块4300可以与外部装置通信。例如,网络模块4300可以支持诸如以下的无线通信:码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、Wimax、WLAN、UWB、蓝牙和Wi-Fi。网络模块4300可以包括在例如应用处理器4100中。
存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将其中存储的数据传输到应用处理器4100。例如,存储模块4400可以利用诸如以下的非易失性半导体存储器装置来实施:相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(ReRAM)、NAND闪存、NOR闪存或具有三维结构的NAND闪存。示例性地,存储模块4400可以被设置为可移动驱动器,诸如用户系统4000的存储卡或外部驱动器。
例如,存储模块4400可以作为例如参照图1所描述的存储装置1000来操作。存储模块4400可以包括多个非易失性存储器装置,多个非易失性存储器装置可以作为参照图1描述的存储装置100进行操作。
用户接口4500可以包括用于向应用处理器4100输入数据或命令并且/或者向外部装置输出数据的一个或多个接口。例如,用户接口4500可以包括诸如以下的用户输入接口:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件。用户接口4500可以包括诸如以下的用户输出接口:液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监视器。
根据一个实施例,一种设备包括控制器,该控制器被配置成对第一读取命令队列中存储的信息执行重新排列操作。控制器例如可以是根据本文描述的实施例描述的命令调度控制器,并且第一读取命令队列也可以根据任意实施例。
在操作中,控制器可以运行非暂时性计算机可读介质中存储的指令以执行相对于第一读取命令队列和第二读取命令队列的重新排列操作。例如,控制器可以运行指令以接收与读取命令相对应的第一物理地址和存储器装置的第一平面编号,确定具有第二平面编号的第一读取命令队列中的第一物理地址组,并且将信息存储在第二读取命令队列中,该第二读取命令队列表示第一读取命令队列中存储的重新排列的信息。重新排列的信息将第一物理地址分组进第一物理地址组中。
另外,控制器可以运行指令以调度对包括第一物理地址的第一物理地址组中的物理地址执行读取操作。在一个实施例中,可以在第一读取命令队列和第二读取命令队列两者中都包括的第二物理地址组之前调度第一物理地址组中的第一物理地址。而且,第一平面编号与第二平面编号相等。
根据一个或多个实施例,提供了一种能够提高读取操作的性能的存储器控制器,并且还提供了包括这种存储器控制器的存储装置。
本文描述的方法、进程和/或操作可以由待由计算机、处理器、控制器或其它信号处理装置运行的代码或指令来执行。计算机、处理器、控制器或其它信号处理装置可以是本文描述的那些或者除了本文描述的元件之外的那些。因为详细描述了形成该方法(或计算机、处理器、控制器或其它信号处理装置的操作)的基础的算法,所以用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理装置转变为用于执行本文的方法的专用处理器。
当至少部分地在软件中实施时,控制器、处理器、装置、模块、调度器、单元、多路复用器、生成器、逻辑、接口、解码器、驱动器、发生器和其它信号生成和信号处理特征可能包括例如用于存储待由例如计算机、处理器、微处理器、控制器或其它信号处理装置运行的代码或指令的存储器或其它存储装置。计算机、处理器、微处理器、控制器或其它信号处理装置可以是本文描述的那些或者除了本文描述的元件之外的那些。因为详细描述了形成该方法(或计算机、处理器、微处理器、控制器或其它信号处理装置的操作)的基础的算法,所以用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理装置转变为用于执行本文描述的方法的专用处理器。
虽然已经参照本公开的某些示例性实施例示出和描述了本公开,但是本领域技术人员将理解的是,在不脱离由所附权利要求及其等同方案所限定的本公开的精神和范围的情况下,可以进行形式和细节上的各种改变。因此,本公开的范围不应限于上述示例性实施例,而是应当不仅由所附权利要求书确定而且还应由其等同方案确定。
在上述实施例中,可以选择性地执行所有步骤或可以省略部分步骤。在每个实施例中,这些步骤不一定按照所描述的次序执行,并且可以重新排列。在本说明书中的实施例和附图仅是便于对本公开的理解的示例,并且本公开不限于此。也就是说,对于本领域技术人员应当显而易见的是,可以基于本公开的技术范围进行各种修改。
同时,已经在附图和说明书中描述了本公开的示例性实施例。虽然本文使用了特定术语,但是这些仅是为了解释本公开的实施例。因此,本公开不限于上述实施例,并且在本公开的精神和范围内可以有许多变型。对于本领域技术人员应当显而易见的是,除了本文公开的实施例之外,还可以基于本公开的技术范围进行各种修改。可以组合实施例以形成附加的实施例。
Claims (20)
1.一种存储器控制器,包括:
命令存储器件,包括第一读取命令队列和第二读取命令队列,所述第一读取命令队列基于索引编号存储读取命令和与所述读取命令相对应的物理地址,其中所述读取命令指示包括多个存储块的存储器装置读取所述存储器装置中存储的数据,并且其中所述物理地址中的每一个与平面编号、块编号和页面编号相对应;
命令生成控制器,响应于读取请求而生成第一读取命令,将逻辑地址转换为第一物理地址,并将所述第一读取命令和所述第一物理地址存储在所述第一读取命令队列中;以及
命令调度控制器,响应于来自所述命令生成控制器的调度事件信号而搜索第一物理地址组,所述第一物理地址组包括至少一个第二物理地址和所述第一物理地址,所述第二物理地址包括与所述第一读取命令队列中存储的物理地址相对应的页面编码,
其中所述命令调度控制器将第二物理地址组和所述第一物理地址组顺序地调度到所述第二读取命令队列的连续索引编号中,所述第二物理地址组包括至少一个物理地址,所述第二物理地址组的至少一个物理地址的平面编号与所述第一读取命令队列中存储的所述第一物理地址组的平面编号不同。
2.根据权利要求1所述的存储器控制器,其中所述命令生成控制器:
将擦除命令提供到所述存储器装置,所述擦除命令指示所述存储器装置执行擦除操作,所述擦除操作包括擦除所述多个存储块中的一个存储块中存储的数据,
将暂停命令提供到所述存储器装置,所述暂停命令指示所述存储器装置响应于请求而暂停擦除操作,
将恢复命令提供到所述存储器装置,所述恢复命令指示所述存储器装置在与所述请求相对应的操作结束之后恢复所述擦除操作,并且
在输出所述恢复命令后,将所述调度事件信号提供到所述命令调度控制器。
3.根据权利要求1所述的存储器控制器,其中所述命令生成控制器:
将命令提供到所述存储器装置,所述命令指示所述存储器装置执行擦除操作或者执行写入操作,所述擦除操作包括擦除所述多个存储块中的一个存储块中存储的数据,所述写入操作包括将数据存储在所述多个存储块中的一个存储块中,并且
在从将所述命令提供到所述存储器装置时起经过预定的时段之后,将所述调度事件信号提供到所述命令调度控制器。
4.根据权利要求1所述的存储器控制器,其中所述第一物理地址和所述至少一个第二物理地址具有相同的平面编号和相同的块编号。
5.根据权利要求4所述的存储器控制器,其中所述命令调度控制器将所述第一读取命令和所述第一物理地址组调度到所述第二读取命令队列的一个索引编号中。
6.根据权利要求1所述的存储器控制器,其中所述第一物理地址与所述至少一个第二物理地址具有不同的平面编号。
7.根据权利要求6所述的存储器控制器,其中所述命令调度控制器将所述第一读取命令、与所述至少一个第二物理地址相对应的至少一个第二读取命令和所述第一物理地址组调度到所述第二读取命令队列的一个索引编号中。
8.一种存储器控制器,包括:
命令存储器件,包括第一读取命令队列、第二读取命令队列和第三读取命令队列,其中所述第一读取命令队列存储第一物理地址和第一读取命令,所述第一读取命令指示存储器装置在执行后台操作的同时执行读取操作,并且其中所述第一物理地址与第一平面编号、第一块编号和第一页面编号相对应;
命令生成控制器,响应于在执行所述后台操作的同时提供的读取请求,将逻辑地址转换为第二物理地址,并且生成指示所述存储器装置读取所述存储器装置中存储的数据的第二读取命令,并且将所述第二读取命令和所述第二物理地址存储在所述第二读取命令队列中,其中所述第二物理地址与第二平面编号、第二块编号和第二页面编号相对应;以及
命令调度控制器,根据所述第一页面编号是否与所述第二页面编号相等来将所述第一物理地址、所述第二物理地址和所述第二读取命令调度到所述第三读取命令队列中。
9.根据权利要求8所述的存储器控制器,其中
所述第一平面编号与所述第二平面编号相等,
所述第一块编号与所述第二块编号相等,并且
所述命令调度控制器将所述第一物理地址、所述第二物理地址和所述第二读取命令调度到所述第三读取命令队列的第一优先级索引编号中。
10.根据权利要求9所述的存储器控制器,其中
所述第一平面编号与所述第二平面编号不同,并且
所述命令调度控制器将所述第一读取命令、所述第一物理地址、所述第二物理地址和所述第二读取命令调度到所述第三读取命令队列的第一优先级索引编号中。
11.一种存储装置,包括:
存储器装置,包括多个平面;以及
存储器控制器,响应于读取请求而将第一读取命令和第一物理地址存储在第一读取命令队列中,所述第一读取命令指示所述存储器装置执行读取操作,所述读取操作包括通过使用映射到逻辑地址的所述第一物理地址来读取所述存储器装置中存储的数据,
其中所述存储器控制器进一步根据调度顺序来将所述第一读取命令队列中存储的读取命令和物理地址顺序地提供到所述存储器装置,并且其中
每个物理地址包括平面编号、块编号和页面编号,并且
当调度到所述第一读取命令队列的索引编号之中的第一优先级索引编号中的第二物理地址的页面编号与所述第一物理地址的页面编号相等时,所述存储器控制器将所述第一物理地址调度到所述第一优先级索引编号中。
12.根据权利要求11所述的存储装置,其中
所述第一物理地址和所述第二物理地址是具有相同平面编号、相同块编号和相同页面编号的物理地址,并且
所述存储器控制器将所述第一物理地址调度到所述第一优先级索引编号中。
13.根据权利要求12所述的存储装置,其中所述存储器装置:
响应于与所述第二物理地址相对应的第二读取命令,对具有所述第一物理地址和所述第二物理地址的单个平面的页面执行读取操作;并且
将所述单个平面的页面中存储的数据提供到所述存储器控制器。
14.根据权利要求11所述的存储装置,其中
所述第一物理地址和所述第二物理地址具有不同的平面编号和相同的页面编号,并且
所述存储器控制器将所述第一读取命令和所述第一物理地址调度到所述第一优先级索引编号中。
15.根据权利要求14所述的存储装置,其中所述存储器装置:
响应于与第二物理地址相对应的所述第二读取命令和所述第一读取命令而同时对具有所述第一物理地址的第一平面的页面和具有所述第二物理地址的第二平面的页面执行读取操作;并且
将所述第一平面的页面中存储的数据和所述第二平面的页面中存储的数据顺序地提供到所述存储器控制器。
16.根据权利要求11所述的存储装置,其中
当所述第一物理地址的页面编码与所述第二物理地址的页面编码不同时,所述存储器控制器将在所述第一读取命令队列中存储的读取命令和物理地址之后输出的所述第一读取命令和所述第一物理地址调度到索引编号中。
17.根据权利要求16所述的存储装置,其中所述存储器装置:
响应于与所述第二物理地址相对应的所述第二读取命令,对具有所述第二物理地址的平面的页面执行读取操作;并且
在对具有所述第二物理地址的平面的读取操作完成之后,响应于所述第一读取命令而对具有所述第一物理地址的平面的页面执行读取操作。
18.根据权利要求16所述的存储装置,其中所述存储器控制器:
响应于调度事件的发生,在所述第一读取命令队列中存储的物理地址和所述第一物理地址之中搜索包括所有具有不同平面编号的所有物理地址的物理地址组;并且
将在所述第一读取命令队列中存储的物理地址之中除了所述物理地址组之外的其它物理地址以及所述第一物理地址、所述物理地址组和读取命令顺序地调度到第二读取命令队列的连续索引编号中。
19.根据权利要求18所述的存储装置,其中
所述存储器装置响应于与所述物理地址组相对应的读取命令对多个平面顺序地执行读取操作,并且
所述读取操作彼此部分重叠。
20.根据权利要求19所述的存储装置,其中所述存储器装置将从每个平面输出的数据顺序地提供到所述存储器控制器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0178159 | 2020-12-18 | ||
KR1020200178159A KR20220087782A (ko) | 2020-12-18 | 2020-12-18 | 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114649012A true CN114649012A (zh) | 2022-06-21 |
Family
ID=81992454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110897235.5A Withdrawn CN114649012A (zh) | 2020-12-18 | 2021-08-05 | 存储器控制器和包括存储器控制器的存储装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11861223B2 (zh) |
KR (1) | KR20220087782A (zh) |
CN (1) | CN114649012A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220087782A (ko) | 2020-12-18 | 2022-06-27 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
KR20220087785A (ko) | 2020-12-18 | 2022-06-27 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
CN115843379A (zh) * | 2021-07-21 | 2023-03-24 | 美光科技公司 | 用来改进顺序存储器命令性能的存储器命令聚合 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100120518A (ko) | 2009-05-06 | 2010-11-16 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법 |
US8533435B2 (en) | 2009-09-24 | 2013-09-10 | Nvidia Corporation | Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict |
US9189389B2 (en) | 2013-03-11 | 2015-11-17 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
WO2015025357A1 (ja) * | 2013-08-19 | 2015-02-26 | 株式会社 東芝 | メモリシステム |
KR20170085286A (ko) * | 2016-01-14 | 2017-07-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9792995B1 (en) | 2016-04-26 | 2017-10-17 | Sandisk Technologies Llc | Independent multi-plane read and low latency hybrid read |
KR20170141298A (ko) | 2016-06-14 | 2017-12-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR102615659B1 (ko) * | 2016-07-08 | 2023-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
JP2018120305A (ja) * | 2017-01-23 | 2018-08-02 | 東芝メモリ株式会社 | 半導体記憶装置及びその制御方法 |
US10540116B2 (en) * | 2017-02-16 | 2020-01-21 | Toshiba Memory Corporation | Method of scheduling requests to banks in a flash controller |
KR102474035B1 (ko) | 2017-08-18 | 2022-12-06 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20190089365A (ko) | 2018-01-22 | 2019-07-31 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
CN108829348B (zh) | 2018-05-29 | 2022-03-04 | 上海兆芯集成电路有限公司 | 存储器装置及命令重排序方法 |
US11048571B2 (en) | 2018-12-12 | 2021-06-29 | International Business Machines Corporation | Selectively performing multi-plane read operations in non-volatile memory |
US11221795B2 (en) | 2019-02-25 | 2022-01-11 | International Business Machines Corporation | Queue management for multiway queues |
US11216189B2 (en) | 2019-04-01 | 2022-01-04 | Silicon Motion, Inc. | Method and computer program product for reading partial data of a page on multiple planes |
US11126369B1 (en) * | 2020-02-28 | 2021-09-21 | Western Digital Technologies, Inc. | Data storage with improved suspend resume performance |
KR20220087785A (ko) | 2020-12-18 | 2022-06-27 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
KR20220087782A (ko) | 2020-12-18 | 2022-06-27 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
-
2020
- 2020-12-18 KR KR1020200178159A patent/KR20220087782A/ko active Search and Examination
-
2021
- 2021-07-01 US US17/365,160 patent/US11861223B2/en active Active
- 2021-08-05 CN CN202110897235.5A patent/CN114649012A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
KR20220087782A (ko) | 2022-06-27 |
US20220197560A1 (en) | 2022-06-23 |
US11861223B2 (en) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107957958B (zh) | 存储器系统及其操作方法 | |
KR102542375B1 (ko) | 데이터 처리 시스템 및 그의 동작 방법 | |
US11775223B2 (en) | Memory controller and storage device including 1HE same | |
KR20180008951A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20190074677A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20180069960A (ko) | 메모리 시스템 및 그의 동작 방법 | |
US11861223B2 (en) | Memory controller and storage device for scheduling addresses | |
KR20180079584A (ko) | 컨트롤러 및 컨트롤러의 동작 방법 | |
KR20190031683A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20180090124A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20180114649A (ko) | 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법 그리고 멀티 프로세서 시스템 | |
KR20190008643A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20190040598A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US20190347193A1 (en) | Memory system and operating method thereof | |
KR20180118926A (ko) | 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법 | |
US11016881B2 (en) | Memory system and operating method thereof | |
US11243715B2 (en) | Memory controller and operating method thereof | |
US11042317B2 (en) | Memory system for reducing fragmentation based on sequential index and operating method thereof | |
KR20180106017A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
CN111258920A (zh) | 存储器系统、存储器系统的操作方法和控制器 | |
US11676643B2 (en) | Memory device, storage device, and method of operating memory controller to output read data in response to read enable signal | |
US11449259B2 (en) | Memory controller and operating method thereof | |
KR20190083052A (ko) | 컨트롤러 및 그것의 동작방법 | |
CN112711377A (zh) | 分布式存储系统的存储节点及其操作方法 | |
KR20210085499A (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: 20220621 |