CN114185816A - 存储器***及其操作方法 - Google Patents

存储器***及其操作方法 Download PDF

Info

Publication number
CN114185816A
CN114185816A CN202110602002.8A CN202110602002A CN114185816A CN 114185816 A CN114185816 A CN 114185816A CN 202110602002 A CN202110602002 A CN 202110602002A CN 114185816 A CN114185816 A CN 114185816A
Authority
CN
China
Prior art keywords
cache
data
memory
line
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110602002.8A
Other languages
English (en)
Inventor
金到训
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN114185816A publication Critical patent/CN114185816A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Read Only Memory (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

所公开技术的实施例涉及一种存储器***及其操作方法。根据所公开技术的实施例,存储器***可以检查与被配置为高速缓存映射数据的N个高速缓存行相对应的N个标记组,每个标记组包括M个标记,每个标记指示针对相应高速缓存行中包括的M个数据单位中的每一个是否已经进行高速缓存命中,高速缓存命中指示特定数据条被存储在映射高速缓存中;可以基于与N个高速缓存行之中的第一高速缓存行相对应的第一标记组中包括的、指示相应数据单位的高速缓存命中的标记的数量来确定是否高速缓存目标映射数据。

Description

存储器***及其操作方法
相关申请的交叉引用
本专利文件要求于2020年9月14日向韩国知识产权局提交的申请号为10-2020-0117455的韩国专利申请的优先权和权益,该韩国专利申请通过引入整体并入本文。
技术领域
所公开技术的实施例涉及一种存储器***及其操作方法。
背景技术
存储器***可以包括存储数据的存储装置。这种存储器***可以基于来自诸如计算机、移动装置(例如,智能电话或平板电脑)或其他类似电子装置的主机的请求而操作。存储器***的示例可以包括从传统的硬盘驱动器(HDD)到基于半导体的数据存储装置,诸如固态驱动器(SSD)、通用闪存(UFS)装置或嵌入式MMC(eMMC)装置。
存储器***可以进一步包括用于控制存储器装置的存储器控制器。存储器控制器可以从主机接收命令,并且运行命令或控制对存储器***中包括的存储器装置的读取操作/写入操作/擦除操作。存储器控制器还可以用于运行固件以执行用于控制这些操作的逻辑操作。
存储器***可以管理用于执行读取、写入和擦除存储器装置中的数据的操作的映射数据。存储器***可以包括用于高速缓存映射数据映射高速缓存(map cache)以快速访问映射数据。
发明内容
所公开技术的实施例可以提供一种能够通过将被访问的可能性高的映射数据预先高速缓存在映射高速缓存中来增加映射高速缓存的命中率的存储器***及其操作方法。
另外,所公开技术的实施例可以提供一种能够通过增加映射高速缓存的命中率来快速处理从主机接收到的请求的存储器***及其操作方法。
在一方面,本公开的实施例可以提供一种存储器***,该存储器***包括存储器装置以及存储器控制器,存储器控制器与存储器装置通信并且被配置成控制存储器装置。
存储器控制器可以包括映射高速缓存,该映射高速缓存包括被配置成高速缓存映射数据的N个高速缓存行,其中N个高速缓存行中的每一个包括M个数据单位,N和M是等于或大于2的正整数。
存储器控制器可以包括高速缓存行控制电路,该高速缓存行控制电路与映射高速缓存通信,并且被配置成控制与N个高速缓存行相对应的N个标记组,其中N个标记组中的每一个包括M个标记。每个标记可以指示针对相应高速缓存行中包括的M个数据单位中的每一个是否已经进行高速缓存命中,该高速缓存命中指示特定数据条被存储在映射高速缓存中。
高速缓存行控制电路可以基于与N个高速缓存行之中的第一高速缓存行相对应的第一标记组中包括的、指示相应数据单位的高速缓存命中的标记的数量来确定是否高速缓存目标映射数据。
高速缓存行控制电路可以从存储器装置读取目标映射数据,并且将目标映射数据高速缓存在N个高速缓存行之中的第二高速缓存行中。
在另一方面,本公开的实施例可以提供一种存储器***的操作方法。
存储器***的操作方法可以包括检查与N个高速缓存行相对应的N个标记组,N个高速缓存行中的每一个被配置为高速缓存映射数据并且包括M个数据单位。N个标记组中的每一个可以包含M个标记。M个标记中的每一个可以指示针对相应高速缓存行中包括的M个数据单位中的每一个是否已经进行高速缓存命中,该高速缓存命中指示特定数据条被存储在映射高速缓存中。在这种情况下,N和M可以是等于或大于2的正整数。
存储器***的操作方法可以包括:基于与N个高速缓存行之中的第一高速缓存行相对应的标记组中包括的、指示相应数据单位的高速缓存命中的标记的数量来确定是否高速缓存目标映射数据。
存储器***的操作方法可以包括执行将目标映射数据高速缓存在N个高速缓存行之中的第二高速缓存行中,或者跳过对目标映射数据的高速缓存。
根据本公开的实施例,可以通过将被访问的可能性高的映射数据预先高速缓存在映射高速缓存中来增加映射高速缓存的命中率。
另外,根据本公开的实施例,可以通过增加映射高速缓存的命中率来快速处理从主机接收到的请求。
附图说明
图1是示出根据所公开技术的实施例的存储器***的配置的示意图。
图2是示意性地示出根据所公开技术的实施例的存储器装置的框图。
图3是示出根据所公开技术的实施例的存储器装置的字线和位线的结构的示图。
图4是根据所公开技术的实施例的存储器***的示意性配置图。
图5是根据所公开技术的实施例的映射高速缓存的配置图。
图6是示出根据所公开技术的实施例的将目标映射数据高速缓存在映射高速缓存中的操作的示图。
图7是示出根据所公开技术的实施例的确定是否将目标映射数据高速缓存在映射高速缓存中的操作的示例的流程图。
图8是示出根据所公开技术的实施例的目标映射数据的地址值的示例的示图。
图9是示出根据所公开技术的实施例的针对高速缓存行的标记组中可以同时设置的标记的数量的示图。
图10是示出根据所公开技术的实施例的高速缓存行控制电路确定是否跳过将目标映射数据高速缓存在映射高速缓存中的操作的流程图。
图11是示出根据所公开技术的实施例的由高速缓存行控制电路并行地控制的K个标记组的示图。
图12是示出确定图11的K值的示例的示图。
图13是示出根据所公开技术的实施例的高速缓存行控制电路的示例的示图。
图14是示出根据所公开技术的实施例的操作存储器***的方法的示图。
图15是示出基于所公开技术的实施例的计算***的配置的示图。
具体实施方式
在下文中,参照附图详细描述所公开技术的实施例。在整个说明书中,对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任意这种短语的不同参考不一定针对相同的实施例。术语“实施例”在本文中使用时不一定指所有实施例。
图1是示出基于所公开技术的实施例的存储器***100的示意性配置的示图。
在一些实施方案中,存储器***100可以包括被配置成存储数据的存储器装置110以及被配置成控制存储器装置110的存储器控制器120。
存储器装置110可以包括多个存储块,该多个存储块中的每一个包括用于存储数据的预定数量的存储器单元。存储器装置110可以被配置成响应于从存储器控制器120接收到的控制信号而操作。例如,存储器装置110的操作可以包括读取操作、编程操作(也被称为“写入操作”)和擦除操作。
存储器装置110中的存储器单元用于存储数据,并且可以布置在存储器单元阵列中。在存储器装置110是闪速存储器装置的一些实施方案中,存储器单元阵列可以被划分为存储器单元的存储块,并且每个块包括存储器单元的不同页面。在NAND闪存存储器装置的一些实施方案中,单元的页面是可以被编程(或写入)和读取的最小存储器单位,并且可以在块级别擦除存储在存储器单元中的数据。
在一些实施方案中,存储器装置110可以被实施为诸如以下的各种类型:双倍数据速率同步动态随机存取存储器(DDR SDRAM)、低功率双倍数据速率***(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器、电阻随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)或自旋转移力矩随机存取存储器(STT-RAM)。
存储器装置110可以被实施为三维阵列结构。所公开技术的一些实施例可以应用于具有电荷存储层的任何类型的闪速存储器装置。在一些实施方案中,电荷存储层可以由导电材料形成,并且这种电荷存储层可以被称为浮栅。在另一实施方案中,电荷存储层可以由绝缘材料形成,并且这种闪速存储器装置可以被称为电荷撷取闪存(CTF)。
存储器装置110可以被配置成从存储器控制器120接收命令和地址,以访问利用地址选择的存储器单元阵列的区域。也就是说,存储器装置110可以对存储器装置中的、具有与从存储器控制器120接收的地址相对应的物理地址的存储器区域执行与所接收的命令相对应的操作。
在一些实施方案中,除其他操作之外,存储器装置110可以执行编程操作、读取操作以及擦除操作。在编程操作期间,存储器装置110可以将数据写入(“编程”)到由地址选择的区域。在读取操作期间,存储器装置110可以从由地址选择的存储器区域读取数据。在擦除操作期间,存储器装置110可以擦除在由地址选择的存储器区域中存储的数据。
存储器控制器120可以控制待对存储器装置110执行的写入(编程)操作、读取操作、擦除操作和后台操作。后台操作可以包括被实施以优化存储器装置110的整体性能的操作,诸如垃圾收集(GC)操作、损耗均衡(WL)操作和坏块管理(BBM)操作。
存储器控制器120可以在主机的请求下控制存储器装置110的操作。可选地,当存储器控制器120执行存储器装置的这种后台操作时,存储器控制器120可以在即使没有来自主机的请求的情况下控制存储器装置110的操作。
存储器控制器120和主机可以是分离的装置。在一些实施方案中,存储器控制器120和主机可以被集成在单个装置中。在以下描述中,作为示例,存储器控制器120和主机是分离的装置。
参照图1,存储器控制器120可以包括存储器接口122、控制电路123和主机接口121。
主机接口121可以被配置成提供用于与主机通信的接口。
当从主机HOST接收命令时,控制电路123可以通过主机接口121接收命令,并且可以执行处理所接收的命令的操作。
存储器接口122可以直接或间接地连接到存储器装置110以提供用于与存储器装置110通信的接口。也就是说,存储器接口122可以被配置成为存储器装置110和存储器控制器120提供接口,用于存储器控制器120基于来自控制电路123的控制信号和指令对存储器装置110执行存储器操作。
控制电路123可以被配置成通过存储器控制器120来控制存储器装置110的操作。例如,控制电路123可以包括处理器124和工作存储器125。控制电路123可以进一步包括错误检测/校正电路(ECC电路)126。
处理器124可以控制存储器控制器120的全部操作。处理器124可以执行逻辑操作。处理器124可以通过主机接口121与主机HOST通信。处理器124可以通过存储器接口122与存储器装置110通信。
处理器124可以用于运行闪存转换层(FTL)以有效地管理对存储器***100的存储器操作。例如,处理器124可以通过FTL将由主机提供的逻辑块地址(LBA)转换为物理块地址(PBA)。FTL可以接收LBA并且通过使用映射表将LBA转换为PBA。
基于映射单位,存在FTL可以采用的各种地址映射方法。典型的地址映射方法可以包括页面映射方法、块映射方法以及混合映射方法。
处理器124可以被配置成使从主机接收到的数据随机化以将经随机化的数据写入到存储器单元阵列。例如,处理器124可以通过使用随机化种子使从主机接收的数据随机化。经随机化的数据被提供到存储器装置110并且被写入到存储器单元阵列。
在读取操作期间,处理器124可以被配置成使从存储器装置110接收的数据去随机化。例如,处理器124可以通过使用去随机化种子使从存储器装置110接收的数据去随机化。经去随机化的数据可以被输出到主机HOST。
处理器124可以运行固件(FW)以控制存储器控制器120的操作。换言之,处理器124可以控制存储器控制器120的全部操作,并且为了执行逻辑操作,可以执行(驱动)在启动期间加载到工作存储器125中的固件。
固件是指在某个非易失性存储器上存储,并且在存储器***100内部运行的程序或软件。
在一些实施方案中,固件可以包括各种功能层。例如,固件可以包括闪存转换层(FTL)、主机接口层(HIL)和闪存接口层(FIL)中的至少一个,FTL被配置成将主机HOST请求中的逻辑地址转换为存储器装置110的物理地址;HIL被配置成解释主机HOST向诸如存储器***100的数据存储装置发出的命令并将该命令传递到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。
存储器***100还可以包括总线127,以在存储器控制器120的组成元件121、122、124、125和126之间提供通道。例如,总线127可以包括用于传递各种类型的控制信号和命令的控制总线以及用于传递各种类型的数据的数据总线。
通过示例的方式,图1中示出存储器控制器120的上述组成元件121、122、124、125和126。注意的是,可以省略存储器控制器120的上述组成元件121、122、124、125和126中的一些,或者存储器控制器120的上述组成元件121、122、124、125和126中的一些可以集成到单个元件中。另外,在一些实施方案中,一个或多个其他组成元件可以添加到存储器控制器120的上述组成元件。
在下文中,将参照图2更详细地描述存储器装置110。
图2是示意性地示出基于所公开技术的实施例的存储器装置110的框图。
在一些实施方案中,基于所公开技术的实施例的存储器装置110可以包括存储器单元阵列210、地址解码器220、读取/写入电路230、控制逻辑240和电压生成电路250。
存储器单元阵列210可以包括多个存储块BLK1-BLKz,其中z是等于或大于2的自然数。
在多个存储块BLK1-BLKz中,多个字线WL和多个位线BL可以沿行和列布置,并且可以布置多个存储器单元MC。
多个存储块BLK1-BLKz可以通过多个字线WL连接到地址解码器220。多个存储块BLK1-BLKz可以通过多个位线BL连接到读取/写入电路230。
多个存储块BLK1-BLKz中的每一个可以包括多个存储器单元。例如,多个存储器单元是非易失性存储器单元。在一些实施方案中,这些非易失性存储器单元可以以垂直沟道结构布置。
存储器单元阵列210可以被配置为具有二维结构的存储器单元阵列,并且在一些实施方案中,可以以三维结构布置。
存储器单元阵列210中包括的多个存储器单元中的每一个可以存储至少一位数据。例如,存储器单元阵列210中包括的多个存储单元中的每一个可以是被配置成每存储器单元存储一位数据的单层单元(SLC)。作为另一示例,存储器单元阵列210中包括的多个存储单元中的每一个可以是被配置成每存储器单元存储两位数据的多层单元(MLC)。作为另一示例,存储器单元阵列210中包括的多个存储单元中的每一个可以是被配置成每存储器单元存储三位数据的三层单元(TLC)。作为另一示例,存储器单元阵列210中包括的多个存储单元中的每一个可以是被配置成每存储器单元存储四位数据的四层单元(QLC)。作为另一示例,存储器单元阵列210可以包括被配置成每存储器单元存储至少五位数据的多个存储器单元。
参照图2,地址解码器220、读取/写入电路230、控制逻辑240和电压生成电路250可以作为被配置成驱动存储器单元阵列210的***电路而操作。
地址解码器220可以通过多个字线WL连接到存储器单元阵列210。
地址解码器220可以被配置成响应于控制逻辑240的命令和控制信号而操作。
地址解码器220可以通过存储器装置110内部的输入/输出缓冲器接收地址。地址解码器220可以被配置成解码接收到的地址之中的块地址。地址解码器220可以基于经解码的块地址来选择至少一个存储块。
地址解码器220可以从电压生成电路250接收读取电压Vread和通过电压Vpass。
当在读取操作期间施加读取电压时,地址解码器220可以将读取电压Vread施加到所选择的存储块内部的所选择的字线WL,并且可以将通过电压Vpass施加到剩余的未选择字线WL。
在编程验证操作期间,地址解码器220可以将由电压生成电路250生成的验证电压施加到所选择的存储块内部的所选择的字线WL,并且可以将通过电压Vpass施加到剩余的未选择字线WL。
地址解码器220可以被配置成对接收到的地址之中的列地址进行解码。地址解码器220可以将经解码的列地址传输至读取/写入电路230。
存储器装置110可以逐页面地执行读取操作和编程操作。当请求读取操作或编程操作时接收的地址可以包括块地址、行地址和列地址中的至少一个。
地址解码器220可以基于块地址和行地址来选择一个存储块和一个字线。列地址可以由地址解码器220解码,并且可以被提供到读取/写入电路230。
地址解码器220可以包括块解码器、行解码器、列解码器和地址缓冲器中的至少一个。
读取/写入电路230可以包括多个页面缓冲器PB。读取/写入电路230可以在存储器单元阵列210执行读取操作时作为“读取电路”而操作,并且在存储器单元阵列210执行写入操作时作为“写入电路”而操作。
上述的读取/写入电路230也被称为包括多个页面缓冲器PB的页面缓冲器电路或数据寄存器电路。读取/写入电路230可以包括可以保持用于数据处理的数据的数据缓冲器,并且在一些实施方案中,可以进一步包括用于数据高速缓存的高速缓存缓冲器。
多个页面缓冲器PB可以通过多个位线BL连接到存储器单元阵列210。为了在读取操作和编程验证操作期间检测或感测存储器单元的阈值电压Vth,多个页面缓冲器PB可以将感测电流连续地供应到与存储器单元连接的位线BL,以在感测节点处检测基于相应存储器单元的编程状态而流过的电流量的变化,并且可以将相应电压保持或锁存为感测数据。
读取/写入电路230可以响应于从控制逻辑240输出的页面缓冲器控制信号而操作。
在读取操作期间,读取/写入电路230感测存储器单元中的电压值,并且该电压值作为数据被读出。读取/写入电路230临时存储检索到的数据,并且将数据DATA输出到存储器装置110的输入/输出缓冲器。在实施例中,除页面缓冲器PB或页面寄存器之外,读取/写入电路230可以包括列选择电路。
控制逻辑240可以连接到地址解码器220、读取/写入电路230和电压生成电路250。控制逻辑240可以通过存储器装置110的输入/输出缓冲器来接收命令CMD和控制信号CTRL。
控制逻辑240可以被配置成响应于控制信号CTRL控制存储器装置110的全部操作。控制逻辑240可以输出用于调整多个页面缓冲器PB的感测节点处的电压电平的控制信号。
控制逻辑240可以控制读取/写入电路230对存储器单元阵列210中的存储器单元执行读取操作。电压生成电路250可以响应于由控制逻辑240提供的电压生成电路控制信号来生成在读取操作期间使用的读取电压Vread和通过电压Vpass。
存储器装置110中包括的存储块BLK可以由多个页面PG组成,多个页面PG中的每一个包括多个存储器单元。在一些实施方案中,多个存储器单元可以以多个串布置。多个页面PG可以映射到多个字线WL,并且多个串STR可以映射到多个位线BL。
在存储块BLK中,多个字线WL和多个位线BL可以沿行和列布置。例如,多个字线WL中的每一个可以布置在行方向上,多个位线BL中的每一个可以布置在列方向上。又例如,多个字线WL中的每一个可以沿列方向布置,多个位线BL中的每一个可以沿行方向布置。
当从上方观察时,多个字线WL和多个位线BL可以彼此相交,从而限定包括多个存储器单元MC的存储器单元阵列。每个存储器单元MC可以具有布置在其中的晶体管TR。
例如,布置在每个存储器单元MC中的晶体管TR可以包括漏极、源极和栅极。晶体管TR的漏极(或源极)可以直接地或经由另一晶体管TR连接到相应位线BL。晶体管TR的源极(或漏极)可以直接或经由另一晶体管TR连接到源极线(该源极线可以接地)。晶体管TR的栅极可以包括被绝缘体包围的浮栅(FG)和从字线WL向其施加栅极电压的控制栅(CG)。
在多个存储块BLK1-BLKz的每一个中,第一选择线(也称为源极选择线或漏极选择线)可以附加地布置在两个最外字线之中的、更靠近读取/写入电路230的第一最外字线的外部,并且第二选择线(也称为漏极选择线或源极选择线)可以附加地布置在另外的第二最外字线的外部。
在一些情况下,可以在第一最外字线和第一选择线之间附加地布置至少一个虚设字线。另外,可以在第二最外字线和第二选择线之间附加地布置至少一个虚设字线。
可以逐页面地执行存储块的读取操作和编程操作(写入操作),并且可以逐存储块地执行擦除操作。
图3是示出基于所公开技术的实施例的存储器装置110的字线WL和位线BL的结构的示图。
参照图3,存储器装置110具有存储器单元MC集中于此的内核区域和与除内核区域以外的其余区域相对应的辅助区域。辅助区域包括用于支持存储器单元阵列210的操作的电路。
内核区域可以包括页面PG和串STR。在一些实施方案中,当从上方观察时,多个字线WL1-WL9和多个位线BL被布置成相交。
字线WL1-WL9可以连接到行解码器310。位线BL可以连接到列解码器320。对应于图2的读取/写入电路230的数据寄存器330可以存在于多个位线BL和列解码器320之间。
多个字线WL1-WL9可以对应于多个页面PG。
例如,如图3所示,多个字线WL1-WL9中的每一个可以对应于一个页面PG。当多个字线WL1-WL9中的每一个的大小较大时,多个字线WL1-WL9中的每一个可以对应于至少两个(例如,两个或四个)页面PG。每个页面PG是与进行编程操作和读取操作有关的最小单位,并且在进行编程操作和读取操作时,相同页面PG内的所有存储器单元MC可以同时执行操作。
多个位线BL可以连接到列解码器320。在一些实施方案中,可以将多个位线BL划分为奇数编号的位线BL和偶数编号的位线BL,使得一对奇数编号的位线BL和偶数编号的位线BL共同联接到列解码器320。
地址可用于访问内核区域中的一个或多个存储器单元MC。可以通过输入/输出端将地址提供到行解码器310和列解码器320以选择相应的目标存储器单元。在该专利文件的背景下,词语“目标存储器单元”可以用来表示指定被存储器控制器或用户访问的存储器单元MC中的一个,并且在一些实施方案中,存储器单元MC可以位于连接到行解码器310的字线WL1-WL9与连接到列解码器320的位线BL之间的相交处。
在一些实施方案中,因为存储器装置110进行的所有数据处理,包括编程操作和读取操作,都是经由数据寄存器330发生,所以数据寄存器330起着重要的作用。如果数据寄存器330进行的数据处理被延迟,则所有其它区域需要等待,直到数据寄存器330完成数据处理,从而使存储器装置110的整体性能劣化。
参照图3所示的示例,在一个串STR中,多个晶体管TR1-TR9可以分别连接到多个字线WL1-WL9。在一些实施方案中,多个晶体管TR1-TR9对应于存储器单元MC。在该示例中,多个晶体管TR1-TR9包括控制栅CG和浮栅FG。
多个字线WL1-WL9包括两个最外字线WL1和WL9。第一选择线DSL可以附加地布置在第一最外字线WL1的外侧,第一最外字线WL1与另外的最外字线WL9相比更靠近数据寄存器330并且具有更短的信号路径。第二选择线SSL可以附加地布置在另外的第二最外字线WL9的外侧。
由第一选择线DSL控制导通/关断的第一选择晶体管D-TR具有连接到第一选择线DSL的栅电极,但是不包括浮栅FG。由第二选择线SSL控制导通/关断的第二选择晶体管S-TR具有连接到第二选择线SSL的栅电极,但是不包括浮栅FG。
第一选择晶体管D-TR用作将相应的串STR连接到数据寄存器330的开关电路。第二选择晶体管S-TR用作将相应的串STR连接到源极线SL的开关电路。也就是说,第一选择晶体管D-TR和第二选择晶体管S-TR可以用于启用或禁用相应的串STR。
在编程操作期间,存储器***100利用电子填充待被编程的目标存储器单元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都浮置。因此,所施加的擦除电压可以将电荷从所选择的存储块中的存储器单元的浮栅FG移除。
当存储器控制器执行固件操作时,由于固件中的错误而可能生成不可执行的命令,并且存储器控制器有可能接收到这种不可执行的命令。在一些情况下,存储器装置不会做出响应以通知存储器控制器已经生成了不可执行的命令,因此当存储器***由于不可执行的命令而发生故障时,存储器控制器无法识别故障的原因。可以在各种实施例中实施在该专利文件中所公开的技术,以识别已经针对存储器装置发出了不可执行的命令。
返回参照图1,用于实施所公开技术的存储器***100可以管理用于执行读取、写入和擦除存储器装置110中的数据的操作的映射数据。存储器***可以包括特殊的高速缓存存储器装置,作为与存储器装置分开的映射高速缓存,用于高速缓存映射数据以快速访问映射数据而无需访问存储器装置110。如下面图4中的示例所示,该映射高速缓存可以是存储器控制器120的一部分。该映射高速缓存可以用于存储也被存储在存储器装置110中的某些数据,并且这些数据被称为高速缓存命中。当计算机处理器(例如,CPU)需要访问这种数据时,可以从映射高速缓存高速访问这种数据,而不是去往存储器装置110。对于仅存储在存储器装置110中而未高速缓存在映射高速缓存中的数据,这种数据是高速缓存未命中,并且只能通过以较慢的速度从存储器装置读取该数据来进行访问。
在这种情况下,当被高速缓存在映射高速缓存中的数据的命中率较高时,存储器***可以快速访问映射数据,并且可以快速处理读取、写入和擦除存储器装置中的数据的操作。
图4是基于所公开技术的一些实施例的存储器***100的示意性配置图。
参照图4,存储器***100的存储器控制器120可以包括映射高速缓存MAP_CACHE和高速缓存行控制电路CLCC。
映射高速缓存MAP_CACHE可以包括N个高速缓存行CACHE_LINE,每个高速缓存行CACHE_LINE用于高速缓存映射数据(其中N是等于或大于2的自然数)。高速缓存行CACHE_LINE指映射高速缓存MAP_CACHE的基本单位,并且映射高速缓存MAP_CACHE可以以高速缓存行CACHE_LINE为单位高速缓存映射数据。例如,如果高速缓存行CACHE_LINE的大小是64字节,则映射高速缓存MAP_CACHE可以以64字节为单位高速缓存映射数据,因此具有小于64字节的大小(例如,32字节、16字节)的映射数据可能不会被高速缓存在映射高速缓存MAP_CACHE中。
如果映射数据被高速缓存在映射高速缓存MAP_CACHE中,则存储器控制器120可以访问映射高速缓存MAP_CACHE中的映射数据,并且如果映射数据没有被高速缓存在映射高速缓存MAP_CACHE中,则存储器控制器120可以从存储器装置110读取映射数据,然后将该映射数据高速缓存在映射高速缓存MAP_CACHE中。映射高速缓存MAP_CACHE可以位于存储器控制器120的工作存储器125中。
映射高速缓存MAP_CACHE可以高速缓存各种类型的映射数据。例如,可以被高速缓存在映射高速缓存MAP_CACHE中的映射数据的类型如下。
1.L2V数据类型
具有L2V数据类型的映射数据可以指示从主机传输的逻辑地址(LA)与存储器装置110的虚拟物理地址(VA)之间的映射关系。在这种情况下,虚拟物理地址可以对应于虚拟闪速存储器的物理地址,虚拟闪速存储器的物理地址可以通过虚拟闪存层对应于存储器装置110的物理地址。
2.VPT数据类型
具有VPT数据类型的映射数据可以指示位于由映射数据指示的地址处的页面是否为有效页面。
3.日志数据类型
具有日志数据类型的映射数据可以指示映射数据的变化,并可以用于跟踪映射数据的变化历史。
4.其它数据类型
具有除L2V数据、VPT数据和日志数据之外的其它数据类型的映射数据可以指示信息(例如,每个存储块的读取计数和擦除计数)。
高速缓存行控制电路CLCC可以控制与在映射高速缓存MAP_CACHE中包括的N个高速缓存行CACHE_LINE相对应的N个标记组。
当高速缓存行CACHE_LINE包括M个数据单位(其中M是等于或大于2的自然数)时,与每个高速缓存行相对应的标记组可以包括M个标记,M个标记指示针对M个数据单位中的每一个是否已进行高速缓存命中。当存储器控制器120接收到指令或数据访问请求时,检查映射高速缓存MAP_CACHE以查看所请求的项目是否在映射高速缓存MAP_CACHE中。如果是,则称为高速缓存“命中”,并且从映射高速缓存MAP_CACHE中检索该项目。标记可以指示包括设置状态或复位状态的两个状态。设置状态可以具有第一值(例如,1),并且复位状态可以具有第二值(例如,0)。下面将参照图5详细描述高速缓存行和标记组的配置。
与高速缓存行CACHE_LINE相对应的标记组可以与相应高速缓存行一起位于映射高速缓存MAP_CACHE中,或者可以与相应高速缓存行分开地位于高速缓存行控制电路CLCC中,或者可以位于处于映射高速缓存MAP_CACHE和高速缓存行控制电路CLCC外部的单独的易失性存储器中。
在一些实施方案中,高速缓存行控制电路CLCC可以是位于存储器控制器120的处理器124外部的单独的逻辑电路。高速缓存行控制电路CLCC可以通过微处理器、CPU、FPGA、ASIC和其它可编程逻辑元件的组合来实施。
图5是根据所公开技术的实施例的映射高速缓存MAP_CACHE的配置图。
参照图5,在映射高速缓存MAP_CACHE中包括的N个高速缓存行CACHE_LINE中的每一个可以包括M个数据单位DU1至DUM。例如,一个高速缓存行可以包括具有4字节大小的8个数据单位,并且高速缓存行的总大小可以是4字节*8=32字节。
另外,如以上参照图4所述,可以存在与N个高速缓存行CACHE_LINE相对应的N个标记组FLG_SET。
每个标记组可以包括M个标记F1至FM,该M个标记F1至FM指示针对在相应高速缓存行中包括的M个数据单位DU1至DUM是否已经进行高速缓存命中。
当针对数据单位发生高速缓存命中时,可以设置标记。
例如,当在高速缓存行中包括的M个数据单位DU1至DUM中的数据单位DU1被命中时,可以设置与该数据单位DU1相对应的标记F1。
再例如,当在高速缓存行中包括的M个数据单位DU1、DU2、......、DUM中的数据单位DU2被命中时,可以设置与该数据单位DU2相对应的标记F2。
当从映射高速缓存MAP_CACHE中逐出与每个标记相对应的数据单位时,可以复位该标记。
上述标记组FLG_SET可以使用各种数据结构来实施。例如,标记组FLG_SET可以被实施为位图。在这种情况下,位图中包括的每个位可以对应于一个标记。在另一示例中,标记组FLG_SET可以被实施为表。在这种情况下,表中包括的每个表条目可以对应于一个标记。
在上文中,已经描述了在映射高速缓存MAP_CACHE中包括的高速缓存行CACHE_LINE和与每个高速缓存行相对应的标记组FLG_SET。
在下文中,将描述高速缓存行控制电路CLCC基于针对在映射高速缓存MAP_CACHE中包括的N个高速缓存行CACHE_LINE中的一个的标记组FLG_SET,确定待高速缓存在映射高速缓存MAP_CACHE中的目标映射数据TGT_MAP_DATA的操作。
图6是示出根据所公开技术的实施例的将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中的操作的示图。
参照图6,高速缓存行控制电路CLCC可以检查与在映射高速缓存MAP_CACHE中包括的N个高速缓存行CACHE_LINE之中的第一高速缓存行CACHE_LINE_1相对应的标记组FLG_SET中设置的标记的数量(①)。例如,在与第一高速缓存行CACHE_LINE_1相对应的标记组FLG_SET中包括的标记的数量是8的情况下,高速缓存行控制电路CLCC可以确认设置的标记是4个。
另外,高速缓存行控制电路CLCC可以基于在与第一高速缓存行CACHE_LINE_1相对应的标记组FLG_SET中设置的标记的数量,来确定是否高速缓存目标映射数据TGT_MAP_DATA(②)。目标映射数据TGT_MAP_DATA可以从存储器装置110高速缓存在映射高速缓存MAP_CACHE中。
目标映射数据TGT_MAP_DATA是由高速缓存行控制电路CLCC确定很有可能被存储器控制器120访问的映射数据。高速缓存行控制电路CLCC可以从存储器装置110中存储的映射数据中选择目标映射数据TGT_MAP_DATA。
为了高速缓存目标映射数据TGT_MAP_DATA,高速缓存行控制电路CLCC可以从存储器装置110读取目标映射数据TGT_MAP_DATA,并且将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中包括的N个高速缓存行CACHE_LINE之中的第二高速缓存行CACHE_LINE_2中(③)。在这种情况下,第二高速缓存行CACHE_LINE_2是与第一高速缓存行CACHE_LINE_1不同的高速缓存行。
基于以上所述,高速缓存行控制电路CLCC可以检查与第一高速缓存行CACHE_LINE_1相对应的标记组FLG_SET的状态,并且在被存储器控制器120访问之前,将可能被存储器控制器120访问的目标映射数据TGT_MAP_DATA预先高速缓存在映射高速缓存MAP_CACHE中。
因此,当存储器控制器120访问目标映射数据TGT_MAP_DATA时,在映射高速缓存MAP_CACHE中发生高速缓存命中。因此,存储器控制器120可以访问在映射高速缓存MAP_CACHE中包括的第二高速缓存行CACHE_LINE_2中的目标映射数据TGT_MAP_DATA,而无需从存储器装置110中搜索目标映射数据TGT_MAP_DATA。这可以增加映射高速缓存MAP_CACHE的命中率。
在下文中,将参照图7说明高速缓存行控制电路CLCC基于针对第一高速缓存行CACHE_LINE_1的标记组FLG_SET中设置的标记的数量来确定是否将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中的操作的示例。
图7是示出基于所公开技术的实施例的确定是否将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中的操作的示例的流程图。
参照图7,高速缓存行控制电路CLCC可以检查与第一高速缓存行CACHE_LINE_1相对应的标记组中设置的标记的数量A(S710)。
高速缓存行控制电路CLCC可以确定在步骤S710中检查的A的值是否等于或大于阈值(S720)。
在A的值大于或等于阈值的情况(S720为是)下,高速缓存行控制电路CLCC可以将目标映射数据TGT_MAP_DATA高速缓存在第二高速缓存行CACHE_LINE_2中(S730)。在A的值小于阈值(S720为否)时,高速缓存行控制电路CLCC可以不将目标映射数据TGT_MAP_DATA高速缓存在第二高速缓存行CACHE_LINE_2中(S740)。
例如,如果阈值为5,则当与第一高速缓存行CACHE_LINE_1相对应的标记组中设置的标记数量等于或大于5时,高速缓存行控制电路CLCC可以将目标映射数据TGT_MAP_DATA高速缓存在第二高速缓存行CACHE_LINE_2中。
虽然在图7中,将与第一高速缓存行CACHE_LINE_1相对应的标记组中设置的标记的数量(A)与阈值进行比较,但是也可以使用与第一高速缓存行CACHE_LINE_1相对应的标记组中的设置标记比来代替设置的标记的数量(A)。例如,可以通过将A的值除以在标记组中包括的所有标记的数量来获得设置标记比。为了确定是否高速缓存目标映射数据TGT_MAP_DATA,可以将设置标记比与阈值比值进行比较。
基于标记组FLG_SET中设置的标记的数量来确定是否将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中的原因如下。
通常,当主机顺序地读取用户数据或将用户数据写入到存储器***100时,在被高速缓存在映射高速缓存MAP_CACHE中的、一个高速缓存行中包括的M个数据单位被依次命中之后,存储器控制器120访问被高速缓存在相应高速缓存行中的映射数据的后续映射数据的可能性高。在这种情况下,由于该后续映射数据尚未被存储器控制器120访问,因此可能发生高速缓存未命中。
另外,即使当主机将用户数据随机地写入到存储器***100时,也可以顺序地访问映射数据之中的VPT数据。在这种情况下,在映射高速缓存MAP_CACHE中的、高速缓存了VPT数据的一个高速缓存行中包括的M个数据单位被依次命中之后,很可能将会访问被高速缓存在相应高速缓存行中的映射数据的后续映射数据。
因此,高速缓存行控制电路CLCC可以检查在与相应高速缓存行相对应的标记组中设置的标记的数量,并且如果设置的标记数量大于或等于阈值,则可以确定在被高速缓存在相应高速缓存行中的映射数据之后的后续映射数据将很快被存储器控制器120访问的可能性高。因此,高速缓存行控制电路CLCC可以将后续映射数据预先高速缓存在映射高速缓存MAP_CACHE中,使得当后续映射数据被访问时发生高速缓存命中。因此,高速缓存行控制电路CLCC可以增加映射高速缓存MAP_CACHE的命中率,并且快速处理从主机接收到的请求(例如,读取请求/写入请求)。
在下文中,将描述后续映射数据的位置。
图8是示出根据所公开技术的实施例的目标映射数据TGT_MAP_DATA的地址值的示例的示图。
在图8中,假定被高速缓存在第一高速缓存行CACHE_LINE_1中的映射数据具有A0的地址值。被高速缓存在第一高速缓存行CACHE_LINE_1中的映射数据可以存储在数据单位DU1至DUM中。
在这种情况下,当在针对第一高速缓存行CACHE_LINE_1的标记组FLG_SET中设置的标记的数量大于或等于阈值时,可以将在地址A0之后的地址A1中存储的映射数据确定为待高速缓存在第二缓存行CACHE_LINE_2中的目标映射数据TGT_MAP_DATA。在这种情况下,被高速缓存在第一高速缓存行CACHE_LINE_1中的映射数据可以是与目标映射数据TGT_MAP_DATA相邻地存储在存储器装置110中的映射数据。
地址A1和地址A0可以彼此连续。
作为示例,可以基于高速缓存行CACHE_LINE的大小来确定A1的值。A1的值可以是通过将高速缓存行CACHE_LINE的大小与A0相加而获得的值。
例如,假定A0的值为0x1000,并且高速缓存行CACHE_LINE的大小为0x40。在这种情况下,A1的值可以是0x1000+0x40=0x1040。当从地址0x1000开始的0x40字节的映射数据被高速缓存在第一高速缓存行CACHE_LINE_1中时,高速缓存行控制电路CLCC可以将与被高速缓存在第一高速缓存行CACHE_LINE_1中的映射数据相邻的目标映射数据TGT_MAP_DATA高速缓存在第二高速缓存行CACHE_LINE_2中。
图9是示出基于所公开技术的一些实施例的针对高速缓存行CACHE_LINE的标记组FLG_SET中可以同时设置的标记的数量的示图。
参照图9,高速缓存行控制电路CLCC可以基于针对映射高速缓存MAP_CACHE的数据访问单位来确定在标记组中同时设置的标记的数量。可以基于存储器控制器120一次可以从映射高速缓存MAP_CACHE访问的映射数据的大小来确定针对映射高速缓存MAP_CACHE的数据访问单位。
假设针对映射高速缓存MAP_CACHE的数据访问单位是高速缓存行CACHE_LINE中包括的数据单位DU的大小的C倍(C是2或更大的自然数)。在这种情况下,高速缓存行控制电路CLCC可以在标记组FLG_SET中同时设置C个标记。例如,如果数据单位DU是4字节并且C是8,则高速缓存行控制电路CLCC可以在标记组FLG_SET中同时设置八个标记。
在另一示例中,假设针对映射高速缓存MAP_CACHE的数据访问单位与在高速缓存行CACHE_LINE中包括的数据单位DU相同,则高速缓存行控制电路CLCC可以在标记组FLG_SET中设置1个标记。
在上文中,已经描述了高速缓存行控制电路CLCC将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中的操作。
但是,当目标映射数据TGT_MAP_DATA已经被高速缓存在映射高速缓存MAP_CACHE中时,可以跳过高速缓存行控制电路CLCC将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中的操作。
图10是示出根据所公开技术的实施例的高速缓存行控制电路CLCC确定是否跳过将目标映射数据TGT_MAP_DATA高速缓存在映射高速缓存MAP_CACHE中的操作的流程图。
参照图10,高速缓存行控制电路CLCC可以在映射高速缓存MAP_CACHE中搜索待被高速缓存在映射高速缓存MAP_CACHE中的目标映射数据TGT_MAP_DATA(S1010)。
高速缓存行控制电路CLCC可以确定目标映射数据TGT_MAP_DATA是否先前已被高速缓存在映射高速缓存MAP_CACHE中(S1020)。当主机随机地读取用户数据或将用户数据写入到存储器***100时,有可能目标映射数据TGT_MAP_DATA已经被高速缓存在映射高速缓存MAP_CACHE中。
在目标映射数据TGT_MAP_DATA预先已被高速缓存在映射高速缓存MAP_CACHE中的情况(S1020为是)下,高速缓存行控制电路CLCC可以跳过将目标映射数据TGT_MAP_DATA高速缓存在第二高速缓存行CACHE_LINE_2中的操作(S1030)。这是因为没有必要将目标映射数据TGT_MAP_DATA一式两份地高速缓存在映射高速缓存MAP_CACHE中。
另一方面,在目标映射数据TGT_MAP_DATA处于未被高速缓存在映射高速缓存MAP_CACHE中的状态的情况(S1020为否)下,高速缓存行控制电路CLCC可以将目标映射数据TGT_MAP_DATA高速缓存在第二高速缓存行CACHE_LINE_2中(S1040)。
在上文中,已经描述了高速缓存行控制电路CLCC控制针对一个高速缓存行的标记组的操作。
在下文中,将描述高速缓存行控制电路CLCC并行地控制一个或多个标记组的操作。
图11是示出根据所公开技术的实施例的由高速缓存行控制电路CLCC并行地控制的K个标记组的示图。
参照图11,高速缓存行控制电路CLCC可以并行地控制在映射高速缓存MAP_CACHE中包括的N个高速缓存行CACHE_LINE之中的最多K个高速缓存行(其中,K是小于或等于N的自然数)的标记组FLG_SET。在这种情况下,高速缓存行控制电路CLCC并行地控制针对K个高速缓存行的标记组FLG_SET的特征可以是指高速缓存行控制电路CLCC可以处理针对K个高速缓存行的标记组FLG_SET之中的任意标记组,而不是顺序地处理针对每个高速缓存行的标记组。
高速缓存行控制电路CLCC可以同时控制针对K个高速缓存行中的每一个的标记组FLG_SET。例如,当存储器控制器120通过不同的进程或线程同时访问N个高速缓存行CACHE_LINE之中的多个高速缓存行时,高速缓存行控制电路CLCC可以控制与正被访问的多个高速缓存行中的每一个相对应的多个标记组。
在这种情况下,高速缓存行控制电路CLCC可以通过并行地控制多个标记组而不是顺序地控制,将需要被预先高速缓存的映射数据快速地高速缓存在映射高速缓存MAP_CACHE中。
图12是示出确定图11的K值的示例的示图。
参照图12,可以根据能够被高速缓存在映射高速缓存MAP_CACHE中包括的N个高速缓存行CACHE_LINE中的映射数据的类型的数量以及可访问N个高速缓存行CACHE_LINE的实例(instance)的数量来确定K值。
在这种情况下,映射数据的类型可以例如是L2V数据类型或VPT数据类型。
实例可以是用于执行访问被高速缓存在映射高速缓存MAP_CACHE中的映射数据的操作的单位,并且可以是线程或进程。FTL可以管理一个以上实例。
在图12中,假设存在可以被高速缓存在N个高速缓存行CACHE_LINE中的两种类型的映射数据(L2V数据类型或VPT数据类型)。此外,假设可访问N个高速缓存行CACHE_LINE的实例的数量为L。
在这种情况下,K值可以是(2*L),其是映射数据的2种类型和实例的数量L的乘积。这是指当可访问N个高速缓存行CACHE_LINE的所有实例都具有访问两种不同类型的映射数据的访问流时,可以同时访问多达(2*L)个高速缓存行。
同时,为了并行地高速缓存针对K个高速缓存行的标记组,高速缓存行控制电路CLCC可以包括用于高速缓存针对K个高速缓存行的标记组的标记组高速缓存。在下文中,将在图13中对此进行详细描述。
图13是示出根据所公开技术的实施例的高速缓存行控制电路CLCC的示例的示图。
在图13中,高速缓存行控制电路CLCC可以将针对N个高速缓存行CACHE_LINE之中的、待并行控制的K个高速缓存行的标记组高速缓存在标记组高速缓存FLG_SET_CACHE中。
同时,当高速缓存行控制电路CLCC访问针对N个高速缓存行CACHE_LINE的标记组之中的、未被高速缓存在标记组高速缓存FLG_SET_CACHE中的任意一个标记组时,高速缓存行控制电路CLCC可以将相应标记组高速缓存在标记组高速缓存FLG_SET_CACHE中。在这种情况下,为了确保用于将相应标记组高速缓存在标记组高速缓存FLG_SET_CACHE中的空间,高速缓存行控制电路CLCC可以从标记组高速缓存FLG_SET_CACHE逐出已被高速缓存在标记组高速缓存FLG_SET_CACHE中的K个标记组中的任意一个。在这种情况下,用于逐出已被高速缓存在标记组高速缓存FLG_SET_CACHE中的K个标记组中的任意一个的策略可以是例如最近最少使用(LRU)、最不频繁使用(LFU)或先进先出(FIFO)。
图14是示出根据所公开技术的实施例的操作存储器***100的方法的示图。
参照图14,存储器***100的操作方法可以包括以下步骤:确认与能够高速缓存映射数据的N个高速缓存行CACHE_LINE中的每一个相对应的N(N是2或更大的自然数)个标记组FLG_SET(S1410)。每个标记组可以包括M个标记,M个标记指示针对在相应高速缓存行中包括的M(M是2或更大的自然数)个数据单位是否已经进行高速缓存命中。
另外,存储器***100的操作方法可以包括以下步骤:基于与N个高速缓存行CACHE_LINE之中的第一高速缓存行CACHE_LINE_1相对应的标记组中设置的标记的数量,确定是否高速缓存目标映射数据TGT_MAP_DATA(S1420)。
另外,存储器***100的操作方法可以包括以下步骤:从存储器装置110读取目标映射数据TGT_MAP_DATA,并且将目标映射数据TGT_MAP_DATA高速缓存在N个高速缓存行CACHE_LINE之中的第二高速缓存行CACHE_LINE_2中(S1430)。
在步骤S1430中,当在与第一高速缓存行CACHE_LINE_1相对应的标记组中设置的标记的数量等于或大于阈值时,存储器***100可以将目标映射数据TGT_MAP_DATA高速缓存到第二高速缓存行CACHE_LINE_2。在这种情况下,目标映射数据TGT_MAP_DATA的地址值可以是被高速缓存在第一高速缓存行CACHE_LINE_1中的映射数据的地址的后续地址值。
同时,在步骤S1410中,存储器***100可以并行检查针对N个高速缓存行CACHE_LINE之中的最多K个高速缓存行(K是小于N的自然数)的标记组。在这种情况下,可以基于能够被高速缓存在N个高速缓存行中的映射数据的类型的数量以及可访问N个高速缓存行的实例的数量来确定K值。
上述存储器控制器120的操作可以被控制电路123控制,并且可以以处理器124运行或驱动固件的方式来执行,对存储器控制器120的所有操作被编程在该固件中。
图15是示出根据所公开技术的实施例的计算***1500的配置的示图。
参照图15,根据所公开技术的实施例的计算***1500可以包括:存储器***100,电连接到***总线1560;CPU 1510,被配置成控制计算***1500的全部操作;RAM 1520,被配置成存储与计算***1500的操作有关的数据和信息;用户界面/用户体验(UI/UX)模块1530,被配置成向用户提供用户环境;通信模块1540,被配置成作为有线和/或无线类型与外部装置通信;以及电源管理模块1550,被配置成管理由计算***1500使用的电力。
计算***1500可以是个人计算机(PC)或者可以包括诸如智能手机、平板电脑的移动终端或各种电子装置。
计算***1500可以进一步包括用于供应工作电压的电池,并且可以进一步包括应用芯片组、图形相关模块、相机图像处理器和DRAM。其它元件对于本领域技术人员而言将是显而易见的。
存储器***100不仅可以包括诸如硬盘驱动器(HDD)的、被配置成将数据存储在磁盘中的装置,还可以包括被配置成将数据存储在非易失性存储器中的装置,诸如固态驱动器(SDD)、通用闪存装置或嵌入式MMC(eMMC)装置。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、铁电RAM(FRAM)等。另外,存储器***100可以被实施为各种类型的存储装置,并且被安装在各种电子装置内部。
基于上述所公开技术的实施例,可以减少或最小化存储器***的操作延迟时间。另外,可以以减少或最小化在调用特定功能的进程中发生的开销的方式来实施所公开技术。虽然出于说明性目的已经描述了所公开技术的各种实施例,但是基于本专利文件中所描述和示出的内容,可以对所公开的实施例和其它实施例进行各种修改、增加和替换。

Claims (17)

1.一种存储器***,包括:
存储器装置,存储数据;以及
存储器控制器,与所述存储器装置通信并且控制所述存储器装置,
其中所述存储器控制器包括:
映射高速缓存,包括高速缓存映射数据的N个高速缓存行,其中所述N个高速缓存行中的每一个包括M个数据单位,N和M是等于或大于2的正整数;以及
高速缓存行控制电路,与所述映射高速缓存通信,并且控制与所述N个高速缓存行相对应的N个标记组,其中所述N个标记组中的每一个包括M个标记,每个标记指示针对相应高速缓存行中包括的M个数据单位中的每一个是否已经进行高速缓存命中,所述高速缓存命中指示特定数据条被存储在所述映射高速缓存中,
其中所述高速缓存行控制电路进一步基于与所述N个高速缓存行之中的第一高速缓存行相对应的第一标记组中包括的、指示相应数据单位的高速缓存命中的标记的数量来确定是否高速缓存目标映射数据。
2.根据权利要求1所述的存储器***,其中所述高速缓存行控制电路进一步从所述存储器装置读取所述目标映射数据,并且将所述目标映射数据高速缓存在所述N个高速缓存行之中的第二高速缓存行中。
3.根据权利要求2所述的存储器***,其中所述高速缓存行控制电路进一步:在所述标记的数量等于或大于阈值的情况下,将所述目标映射数据高速缓存在所述第二高速缓存行中。
4.根据权利要求3所述的存储器***,其中所述目标映射数据具有地址,所述地址具有通过将所述第一高速缓存行的大小与被高速缓存在所述第一高速缓存行中的映射数据的地址相加而获得的值。
5.根据权利要求1所述的存储器***,其中每个标记具有第一值或第二值,所述第一值指示针对所述相应数据单位已经发生所述高速缓存命中,所述第二值指示针对所述相应数据单位尚未发生所述高速缓存命中。
6.根据权利要求5所述的存储器***,其中所述高速缓存行控制电路基于所述映射高速缓存的数据访问单位的大小来确定所述标记组中同时具有所述第一值的标记的数量。
7.根据权利要求1所述的存储器***,其中所述高速缓存行控制电路进一步:在所述目标映射数据先前被高速缓存在所述映射高速缓存中的情况下,跳过对所述目标映射数据的高速缓存。
8.根据权利要求1所述的存储器***,其中所述高速缓存行控制电路进一步并行地控制与K个高速缓存行相对应的K个标记组,其中K是小于或等于N的自然数。
9.根据权利要求8所述的存储器***,其中基于被高速缓存在所述N个高速缓存行中的映射数据的类型的数量以及访问所述N个高速缓存行的实例的数量来确定K。
10.根据权利要求9所述的存储器***,其中所述映射数据的类型包括L2V数据类型或VPT数据类型,所述L2V数据类型指示逻辑地址和虚拟地址之间的映射关系,所述VPT数据类型指示由所述映射数据指示的区域的有效性。
11.根据权利要求8所述的存储器***,其中所述高速缓存行控制电路包括高速缓存针对所述K个高速缓存行的标记组的标记组高速缓存。
12.一种存储器***的操作方法,包括:
检查与N个高速缓存行相对应的N个标记组,所述N个高速缓存行中的每一个高速缓存映射数据并且包括M个数据单位,其中所述N个标记组中的每一个包含M个标记,并且所述M个标记中的每一个指示针对相应高速缓存行中包括的所述M个数据单位中的每一个是否已经进行高速缓存命中,所述高速缓存命中指示特定数据条被存储在所述映射高速缓存中,N和M是等于或大于2的正整数;
基于与所述N个高速缓存行之中的第一高速缓存行相对应的标记组中包括的、指示相应数据单位的高速缓存命中的标记的数量来确定是否高速缓存目标映射数据;以及
执行将所述目标映射数据高速缓存在所述N个高速缓存行之中的第二高速缓存行中,或者跳过对所述目标映射数据的高速缓存。
13.根据权利要求12所述的操作方法,其中执行高速缓存的步骤包括:当与所述第一高速缓存行相对应的所述标记组中的所述标记的数量等于或大于阈值时,从存储器装置读取所述目标映射数据。
14.根据权利要求13所述的操作方法,其中所述目标映射数据具有被高速缓存在所述第一高速缓存行中的映射数据的地址之后的地址值。
15.根据权利要求12所述的操作方法,其中每个标记具有第一值或第二值,所述第一值指示针对所述相应数据单位已经发生所述高速缓存命中,所述第二值指示针对所述对应数据单位尚未发生所述高速缓存命中。
16.根据权利要求12所述的操作方法,其中检查所述N个标记组包括并行地检查与K个高速缓存行相对应的K个标记组,其中K是小于或等于N的自然数。
17.根据权利要求16所述的操作方法,其中基于被高速缓存在所述N个高速缓存行中的映射数据的类型的数量以及访问所述N个高速缓存行的实例的数量来确定K。
CN202110602002.8A 2020-09-14 2021-05-31 存储器***及其操作方法 Pending CN114185816A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200117455A KR20220035568A (ko) 2020-09-14 2020-09-14 메모리 시스템 및 메모리 시스템의 동작 방법
KR10-2020-0117455 2020-09-14

Publications (1)

Publication Number Publication Date
CN114185816A true CN114185816A (zh) 2022-03-15

Family

ID=80539286

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110602002.8A Pending CN114185816A (zh) 2020-09-14 2021-05-31 存储器***及其操作方法

Country Status (3)

Country Link
US (1) US11416401B2 (zh)
KR (1) KR20220035568A (zh)
CN (1) CN114185816A (zh)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051249B2 (en) 2006-05-29 2011-11-01 Sandisk Il Ltd. Method for preloading data to improve data-retrieval times
US8612666B2 (en) * 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
US10452556B2 (en) * 2015-09-11 2019-10-22 Toshiba Memory Corporation Memory device and information processing device
US10866896B2 (en) * 2015-09-30 2020-12-15 Arm Limited Apparatus and method for prefetching access request addresses in an adjacent region of memory
US10067881B2 (en) * 2016-06-15 2018-09-04 Western Digital Technologies, Inc. Compression and caching for logical-to-physical storage address mapping tables
US10387320B2 (en) 2017-05-12 2019-08-20 Samsung Electronics Co., Ltd. Integrated confirmation queues
KR20190057887A (ko) * 2017-11-21 2019-05-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190087217A (ko) * 2018-01-16 2019-07-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6967986B2 (ja) * 2018-01-29 2021-11-17 キオクシア株式会社 メモリシステム
US10824568B2 (en) * 2018-07-25 2020-11-03 Western Digital Technologies, Inc. Speculative pre-fetching of flash translation layer tables for use with solid state systems
JP2020154603A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
KR20220035568A (ko) 2022-03-22
US20220083471A1 (en) 2022-03-17
US11416401B2 (en) 2022-08-16

Similar Documents

Publication Publication Date Title
US11386005B2 (en) Memory system, memory controller, and method of operating memory system for caching journal information for zone in the journal cache
US20230333932A1 (en) Memory system and operating method thereof
CN114067870A (zh) 存储器***、存储器装置以及用于操作存储器装置的方法
US11301174B2 (en) Memory system, memory controller and method for operating memory system
US20210365382A1 (en) Memory system, memory controller, and operation method thereof
CN113535598A (zh) 存储器***、存储器控制器以及存储器***的操作方法
CN111831584A (zh) 存储器***、存储器控制器及操作存储器控制器的方法
US11941272B2 (en) Memory system and operating method of memory system
CN115952115A (zh) 基于融合链表控制同步操作的存储器控制器及其操作方法
CN116136738A (zh) 使用外部装置执行后台操作的存储器***及其操作方法
CN114520013A (zh) 存储器***及其操作方法
CN114090473A (zh) 存储器***、存储器控制器及操作存储器***的方法
CN114530173A (zh) 存储器***及其操作方法
CN112131143A (zh) 存储器***、存储器控制器及元信息存储装置
US11416401B2 (en) Memory system and operating method thereof
US11669266B2 (en) Memory system and operating method of memory system
US11636007B2 (en) Memory system and operating method thereof for flushing data in data cache with parity
US20230376246A1 (en) Memory system, memory controller and operating method of the memory system operating as read boost mode
US20230205687A1 (en) Controller and operating method thereof
US20220300187A1 (en) Memory system and operating method thereof
US20230205458A1 (en) Memory controller and operating method thereof
US20220391139A1 (en) Memory system and operating method thereof
CN113535607A (zh) 存储器***、存储器控制器以及存储器***的操作方法
CN114968078A (zh) 存储器装置及其操作方法
CN115617708A (zh) 设置随机存取存储器的操作频率的***及其操作方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination