CN114518839A - 存储器控制器 - Google Patents
存储器控制器 Download PDFInfo
- Publication number
- CN114518839A CN114518839A CN202110716219.1A CN202110716219A CN114518839A CN 114518839 A CN114518839 A CN 114518839A CN 202110716219 A CN202110716219 A CN 202110716219A CN 114518839 A CN114518839 A CN 114518839A
- Authority
- CN
- China
- Prior art keywords
- request
- write
- tpu
- controller
- data
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- 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/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Abstract
本公开涉及一种用于控制存储器装置的控制器,该控制器可以包括:请求接收器,被配置为从可操作地联接到控制器的主机接收包括逻辑地址的请求;依赖性检查器,被配置为从请求接收器获取请求并检查该请求的依赖性,依赖性指示是否存在影响处理该请求的任何先前未完成请求;映射管理器,被配置为响应于请求对先前未完成请求不具有依赖性的检查结果,生成包括被映射到该请求的逻辑地址的物理地址的命令;以及命令提交器,被配置为向存储器装置提供由映射管理器所生成的命令,其中请求接收器、依赖性检查器、映射管理器和命令提交器被构造为配置数据管线。
Description
相关申请的交叉引用
本专利文件要求于2020年11月18日提交的、申请号为10-2020-0154440的韩国专利申请的优先权和权益,该韩国专利申请通过引用整体并入本文。
技术领域
所公开技术的各个实施例涉及一种用于控制存储器装置的控制器。
背景技术
计算机环境范例已经转变为普适计算,这使得能够随时随地使用计算系统。因此,诸如移动电话、数码相机和膝上型计算机的便携式电子装置的使用已经迅速增长。这些便携式电子装置通常使用具有用于存储数据的一个或多个存储器装置的存储器系统。存储器系统可以用作便携式电子装置的主存储器装置或辅助存储器装置。
由于存储器系统不需要机械驱动部件,因此存储器系统提供诸如优异的稳定性和耐久性、高信息访问速度以及低功耗的优点。具有这些优点的存储器系统的示例包括通用串行总线(USB)存储器装置、具有各种接口的存储卡以及固态驱动器(SSD)。
发明内容
各个实施例涉及一种可以通过同时执行数据输入/输出(I/O)操作和存储器管理操作来提高存储器系统的性能的控制器及其操作方法。
而且,各个实施例涉及一种可以使用管线(pipeline)来提高数据I/O操作的吞吐量的控制器及其操作方法。
在实施例中,一种用于控制存储器装置的控制器可以包括:请求接收器,被配置为从可操作地联接到控制器的主机接收包括逻辑地址的请求;依赖性检查器,被配置为从请求接收器获取请求并检查该请求的依赖性,依赖性指示是否存在影响处理该请求的任何先前未完成请求;映射管理器,被配置为响应于请求对先前未完成请求不具有依赖性的检查结果,生成包括被映射到该请求的逻辑地址的物理地址的命令;以及命令提交器,被配置为向存储器装置提供由映射管理器所生成的命令,其中请求接收器、依赖性检查器、映射管理器和命令提交器被构造为配置数据管线,使得请求接收器、依赖性检查器、映射管理器和命令提交器的操作按顺序(in series)执行。
请求接收器可以包括:主机张量处理单元(tensor processing unit,TPU),被配置为确定请求的类型为写入请求或读取请求,并且基于该请求的类型,将该请求提供到写入输入/输出(I/O)TPU或读取I/O TPU;写入I/O TPU,被配置为将写入请求切片为多个请求,并且将切片后的多个请求提供到依赖性检查器;以及读取I/O TPU,被配置为将读取请求提供到依赖性检查器。
映射管理器可以包括:主机读取TPU,被配置为搜索与请求的逻辑地址相对应的物理地址,该请求对应于读取请求;以及后TPU,被配置为基于所搜索到的物理地址来生成与读取请求相对应的读取命令。
命令提交器可以包括:通道TPU,被配置为控制通道直接存储器访问(directmemory access,DMA)向存储器装置提供读取命令;读取路径TPU,被配置为控制读取路径从存储器装置获取与读取命令相对应的读取数据并且对所获取的读取数据执行错误校正码(ECC)解码;以及闪存接口层(FIL)内核,被配置为控制读取路径TPU和通道TPU。
控制器可以进一步包括:中央处理单元(CPU),被配置为执行地址映射操作,以通过将主机的逻辑地址映射到存储器装置的物理地址来生成映射数据;以及存储器,被配置为存储包括映射数据的映射表。
依赖性检查器可以包括:检查TPU,被配置为检查请求对未完成修剪请求(trimrequest)的依赖性,并且请求CPU对已经被检查为对未完成修剪请求具有依赖性的请求执行相应的操作。
检查TPU可以被配置为在请求的逻辑地址与未完成修剪请求的逻辑地址相同的情况下,检查出该请求对未完成修剪请求具有依赖性。
CPU可以被配置为在请求对应于写入请求的情况下,延迟处理该请求,直到未完成修剪请求被完全处理。
CPU可以被配置为向主机提供指示与请求相对应的逻辑地址已经被修剪的响应。
依赖性检查器可以包括:写入高速缓存TPU,被配置为请求CPU对已经被检查为对未完成写入请求具有依赖性的请求执行相应的操作。
写入高速缓存TPU可以被配置为在请求的逻辑地址与未完成写入请求的逻辑地址相同的情况下,检查出该请求对未完成写入请求具有依赖性。
CPU可以被配置为在请求对应于写入请求的情况下,延迟处理该请求,直到未完成写入请求被完全处理。
CPU可以被配置为在请求对应于读取请求的情况下,在存储器中搜索与未完成写入请求相关联的数据。
CPU可以确定存储器装置中的、映射表的至少一部分待被编程到的存储器区域的物理地址,并且生成包括该物理地址的映射清除请求。
映射管理器可以包括:映射清除TPU,被配置为使用由CPU所确定的物理地址来更新映射表;以及后TPU,被配置为基于所确定的物理地址来生成与映射清除请求相对应的写入命令。
控制器可以进一步包括:写入聚合器,被配置为聚合写入请求以将与已经被检查为对先前未完成请求不具有依赖性的写入请求相关联的写入数据条带化,并且向CPU提供针对聚合后的写入请求的地址映射请求。
控制器可以进一步包括:一个或多个依赖性检查器以及一个或多个写入聚合器,其中一个或多个依赖性检查器并行操作,并且一个或多个写入聚合器并行操作。
写入聚合器可以包括:写入队列TPU,被配置为使从依赖性检查器获取的写入请求排队;以及清除TPU,被配置为通过将所排队的写入请求的写入数据条带化来聚合所排队的写入请求,并且将聚合后的写入请求提供到CPU。
清除TPU可以被配置为通过确定写入数据中包括的数据组块的地址中的一些来将写入数据条带化,该数据组块被编程到存储器装置中包括的多个存储器管芯。
CPU可以响应于地址映射请求,通过将聚合后的写入请求的逻辑地址映射到存储器装置的物理地址来生成映射数据。
映射管理器可以包括:写入TPU,被配置为使用由CPU所生成的映射数据来更新映射表;以及后TPU,被配置为基于所映射的物理地址来生成与写入请求相对应的写入命令。
命令提交器可以包括:写入路径TPU,被配置为控制写入路径获取与写入命令相对应的写入数据并且对所获取的写入数据执行错误校正码编码;通道TPU,被配置为控制通道直接存储器访问(DMA)向存储器装置提供写入命令和来自写入路径的数据;以及闪存接口层(FIL)内核,被配置为控制写入路径TPU和通道TPU。
CPU可以i)确定垃圾收集操作的源块和目的块,ii)生成针对源块的读取请求并将所生成的读取请求提供到映射管理器,并且iii)响应于与读取请求相关联的数据在存储器中的缓冲,生成针对目的块的写入请求并将所生成的写入请求提供到写入聚合器。
映射管理器可以进一步包括:垃圾收集读取TPU,被配置为通过参考映射表来搜索与来自CPU的垃圾收集读取请求的逻辑地址相对应的物理地址。
控制器可以进一步包括:主机DMA,被配置为在没有CPU、请求接收器、依赖性检查器、映射管理器和命令提交器的干预的情况下,在主机和存储器之间执行数据输入/输出(I/O)操作。
根据本实施例,可以提供一种可以通过同时执行数据I/O操作和存储器管理操作来提高存储器系统的性能的控制器及其操作方法。
此外,可以提供一种可以使用管线来提高数据I/O操作的吞吐量的控制器及其操作方法。
附图说明
图1是示意性地示出根据所公开技术的实施例的包括存储器系统的数据处理系统的示例的示图。
图2是示出存储器装置内的存储器单元阵列的示例性配置的电路图。
图3是示意性地示出根据所公开技术的实施例的控制器的示图。
图4是用于描述根据所公开技术的实施例的控制器的写入操作的流程图。
图5是用于描述根据所公开技术的实施例的控制器的读取操作的流程图。
图6是用于描述根据所公开技术的实施例的控制器的后台操作的流程图。
图7是示出根据所公开技术的实施例的控制器的示图。
图8至图10是用于描述根据主机的写入请求的控制器的操作的示例的示图。
图11至图13是用于描述根据主机的读取请求的控制器的操作的示例的示图。
图14是示意性地示出根据所公开技术的实施例的控制器的示图。
具体实施方式
在下文中,将参照附图详细描述所公开技术的各个实施例。
图1是示出根据所公开技术的实施例的数据处理系统100的框图。
参照图1,数据处理系统100可以包括主机102,主机102可操作地联接到与主机102通信的存储器系统110。
主机102可以包括诸如移动电话、MP3播放器和膝上型计算机的各种便携式电子装置中的任意一种,或者诸如台式计算机、游戏机、电视(TV)或投影仪的各种非便携式电子装置中的任意一种。
主机102可以包括至少一个操作系统(OS),该OS可以管理和控制主机102的全部功能和操作,并且使用数据处理系统100或存储器系统110提供主机102和用户之间的操作。OS可以支持与用户的使用目的和用途相对应的功能和操作。例如,根据主机102的移动性,可以将OS划分为通用OS和移动OS。根据用户的环境,可以将通用OS划分为个人OS和企业OS。
存储器系统110可以响应于来自主机102的请求而操作以存储主机102的数据。存储器系统110的非限制性示例可以包括固态驱动器(SSD)、多媒体卡(MMC)、安全数字(SD)卡、通用串行总线(USB)装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体卡(SMC)或者个人计算机存储卡国际协会(PCMCIA)卡和记忆棒。MMC可以包括嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC等。SD卡可以包括迷你SD卡和/或微型SD卡。
存储器系统110可以被实现为各种类型的存储装置。这些存储装置的示例可以包括但不限于诸如动态随机存取存储器(DRAM)和静态RAM(SRAM)的易失性存储器装置,以及诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电RAM(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)、电阻式RAM(RRAM或ReRAM)或闪速存储器的非易失性存储器装置。闪速存储器可以具有三维(3D)堆叠结构。
存储器系统110可以包括控制器130和存储器装置150。存储器装置150可以存储主机102的数据,并且控制器130可以控制将数据存储到存储器装置150中。
控制器130和存储器装置150可以被集成到单个半导体装置中。例如,控制器130和存储器装置150可以被集成为一个半导体装置以配置固态驱动器(SSD)。当存储器系统110被实施为SSD时,可以提高连接到存储器系统110的主机102的操作速度。另外,控制器130和存储器装置150可以被集成为一个半导体装置以构成存储卡。例如,控制器130和存储器装置150可以构成诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)卡、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、安全数字(SD)卡或通用闪存(UFS)装置,多媒体卡(MMC)包括缩小尺寸的MMC(RS-MMC)和微型MMC,安全数字(SD)卡包括迷你SD卡、微型SD卡和SDHC卡。
存储器系统110的非限制性应用示例可以包括计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航系统、黑匣子、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、构成数据中心的存储装置、能够在无线环境下传输/接收信息的装置、构成家庭网络的各种电子装置中的一种、构成计算机网络的各种电子装置中的一种、构成远程信息处理网络的各种电子装置中的一种、射频识别(RFID)装置或构成计算系统的各种组件中的一种。
存储器装置150可以是非易失性存储器装置,并且即使没有供应电力也可以保留存储器装置150中存储的数据。存储器装置150可以通过编程操作存储从主机102提供的数据,并且通过读取操作将存储器装置150中存储的数据提供到主机102。
存储器装置150可以包括多个存储器管芯DIE1和DIE2,多个存储器管芯DIE1和DIE2通过多个通路WAY1和WAY2以及多个通道CH1和CH2联接到控制器130。
存储器装置150可以包括闪速存储器装置。闪速存储器装置可以将数据存储在包括存储器单元晶体管的存储器单元阵列中。闪速存储器装置可以具有存储器管芯、平面、存储块和页面的分层结构。一个存储器管芯一次可以接收一个命令。闪速存储器装置可以包括多个存储器管芯。一个存储器管芯可以包括多个平面,并且多个平面可以并行处理由存储器管芯所接收的命令。平面中的每一个可以包括多个存储块。存储块可以对应于擦除操作的最小单位。一个存储块可以包括多个页面。页面可以对应于写入操作的最小单位。
根据一个存储器单元中可以存储的位的数量,存储器单元可以被称为单层单元(SLC)、多层单元(MLC)、三层单元(TLC)或四层单元(QLC)。
根据存储器单元的层级,联接到一个字线的存储器单元可以包括多个逻辑页面。例如,TLC存储块的每个字线可以与作为逻辑页面的MSB(最高有效位)页面、CSB(中央有效位)页面和LSB(最低有效位)页面相关联。
根据所公开技术的实施例,将存储器装置150描述为非易失性存储器,诸如闪速存储器,例如,NAND闪速存储器。然而,存储器装置150可以以诸如以下的各种形式实现:相变随机存取存储器(PCRAM)、电阻式随机存取存储器(RRAM或ReRAM)、铁电随机存取存储器(FRAM)或自旋转移扭矩磁性随机存取存储器(STT-RAM或STT-MRAM)。
图2是示出存储器装置150内的存储器单元阵列的示例性配置的电路图。
参照图2,存储器装置150中包括的存储块330可以包括多个单元串340,多个单元串340联接到相应的多个位线BL0至BLm-1。每列的单元串340可以包括一个或多个漏极选择晶体管DST以及一个或多个源极选择晶体管SST。在漏极选择晶体管DST和源极选择晶体管SST之间,可以串联联接多个存储器单元或存储器单元晶体管MC0至MCn-1。在实施例中,存储器单元MC0至MCn-1中的每一个可以由能够存储多个位的数据信息的MLC实现。单元串340中的每一个可以电联接到多个位线BL0至BLm-1之中的相应的位线。例如,如图2所示,第一单元串联接到第一位线BL0,并且最后的单元串联接到最后的位线BLm-1。作为参考,在图2中,“DSL”表示漏极选择线,“SSL”表示源极选择线,并且“CSL”表示公共源极线。
存储器装置150可以进一步包括电压供应装置310,电压供应装置310根据操作模式提供待供应到字线(WL0至WLn-1)的字线电压,该字线电压包括编程电压、读取电压和通过电压。电压供应装置310的电压生成操作可以由控制电路(未示出)控制。基于控制电路的控制,电压供应装置310可以选择存储器单元阵列的存储块(或扇区)中的一个,选择所选择的存储块的字线中的一个,并且将字线电压提供到所选择的字线和未选择的字线。
存储器装置150可以包括由控制电路控制的读取和写入(读取/写入)电路320。在验证/正常读取操作期间,读取/写入电路320可以作为用于从存储器单元阵列读取数据的读出放大器进行操作。在编程操作期间,读取/写入电路320可以作为用于根据待被存储在存储器单元阵列中的数据来驱动位线的写入驱动器进行操作。在编程操作期间,读取/写入电路320可以从缓冲器(未示出)接收待存储到存储器单元阵列中的数据,并且根据接收的数据驱动位线。读取/写入电路320可以包括分别对应于列(或位线)或列对(或位线对)的多个页面缓冲器(PB)322至326,并且页面缓冲器322至326中的每一个可以包括多个锁存器(未示出)。
由控制器130响应于从主机102输入的请求或命令而执行的操作可以被认为是前台操作。重新参照图1,控制器130可以响应于从主机102接收的请求而执行前台操作。例如,控制器130可以响应于来自主机102的写入请求而控制存储器装置150的编程操作,并且响应于来自主机102的读取请求而控制存储器装置150的读取操作。
从主机102提供到控制器130的写入请求或读取请求可以包括主机102中使用的逻辑地址。例如,该逻辑地址可以是在主机102的操作系统的文件系统中使用的LBA(逻辑块地址)。
可以通过与逻辑地址不同的物理地址来识别存储器装置150的存储器区域。例如,可以将不同的物理地址分配给存储器装置150的各页面。控制器130可以通过将逻辑地址和物理地址进行映射来生成映射数据,以便控制存储器装置150。控制器130可以基于逻辑地址将映射数据以映射表的格式存储在控制器130的内部存储器中,该映射数据指示与逻辑地址相对应的物理地址。
映射表中存储的映射数据的最小单位可以被称为映射条目。例如,一个映射条目可以对应于存储器装置150的一个或多个页面的数据。一个映射条目可以包括与对应于映射条目的数据相关联的逻辑地址信息和物理地址信息。根据实施方案,当页面的大小为4KB时,一个映射条目可以对应于每4KB或16KB数据。然而,对应于一个映射条目的数据的大小不限于此。
存储器装置150可以具有不支持重写功能的特性,而编程操作的单位不同于擦除操作的单位。因此,控制器130可以解除特定逻辑地址和物理地址之间的现有映射,以便改变与该逻辑地址相关联的数据,将改变后的数据编程到存储器装置150的另一区域,通过将该逻辑地址映射到改变后的数据被编程到的区域的物理地址来生成新的映射数据,并且使用所生成的映射数据来更新映射表。例如,当逻辑地址和物理地址之间的映射改变时,控制器130可以生成新的映射条目,并且使用所生成的映射条目来更新存储器中存储的映射表。
控制器130可以响应于主机102的修剪请求而解除逻辑地址和物理地址之间的现有映射。该修剪请求可以指示包括关于不再使用的逻辑地址的信息的请求,并且由主机102提供该修剪请求以便请求存储器系统110解除不再使用的逻辑地址的映射。
在下文中,将逻辑地址和物理地址进行映射或者通过解除逻辑地址和物理地址之间的现有映射来改变映射数据的操作将被称为地址映射操作。除了地址映射操作,响应于主机102的请求而访问存储器装置150的一系列操作将被称为数据I/O操作。
控制器130可以通过参考映射表将逻辑地址转换为物理地址,以便执行数据I/O操作。例如,为了处理读取请求,控制器130可以在映射表中搜索包括读取请求的逻辑地址的映射条目。控制器130可以基于映射条目将该逻辑地址转换为物理地址。控制器130可以控制存储器装置150从该物理地址所指示的区域读取数据。
控制器130可以执行对存储器装置150的后台操作以及前台操作。例如,对存储器装置150的后台操作可以包括GC(垃圾收集)操作、损耗均衡操作、映射更新操作、存储块管理操作等。与响应于从主机102输入的请求而执行的一般操作或前台操作相比,后台操作可以使用存储器系统110或控制器130的较少资源。
控制器130可以包括诸如CPU(中央处理单元)的处理器。当CPU执行所有的数据I/O操作、地址映射操作和后台操作时,控制器130可能难以仅通过一个CPU而展现出存储器系统110的规格所需的吞吐量。例如,当在一个CPU执行GC操作的同时请求数据I/O操作时,控制器130可以在GC操作结束之后执行数据I/O操作。当在GC操作结束之后执行数据I/O操作时,数据I/O操作可能延迟,并且吞吐量可能降低。
当控制器130包括并行控制数据输入/输出操作、地址映射操作和后台操作的多个CPU时,存储器系统110的吞吐量可以提高。然而,随着控制器130中CPU的数量增加,控制器130的芯片大小可能增加,并且功耗也可能增加。
根据本实施例,控制器130可以包括一个或多个CPU以及多个TPU(张量处理单元)。多个TPU可以在没有CPU的干预的情况下执行数据I/O操作。CPU可以执行包括地址映射操作和后台操作的存储器管理操作。图1示意性地示出控制平面210和I/O平面230。控制平面210可以包括CPU(未示出),并且I/O平面230可以包括多个TPU(未示出)。
CPU和多个TPU可以同时操作。因此,控制器130可以并行执行存储器管理操作和数据I/O操作。当并行执行存储器管理操作和数据I/O操作时,数据I/O操作可以不因存储器管理操作而延迟,并且数据I/O操作的吞吐量可以提高。
作为通用处理器的CPU可以包括多个逻辑门,例如,七百万个逻辑门,以便支持各种计算。另一方面,作为在各种操作之中的一些计算中专用的处理器的TPU可以比CPU包括更少数量的逻辑门,例如,200,000个逻辑门。因此,即使当控制器130使用多个TPU执行数据I/O操作时,与多个CPU并行执行数据I/O操作、地址映射操作和后台操作时相比,控制器130的芯片大小和功耗也可以减小。
对于数据I/O操作,可以在TPU中的每一个中驱动固件。当存储器系统110启动时,存储器装置150中存储的多条固件可以被加载到控制器130的内部存储器,并且在各TPU中驱动。存储器装置150中存储的多条固件可以改变。当使用多个TPU执行数据I/O操作时,与使用难以修改的硬件电路执行数据I/O操作时相比,可以使控制器130更容易适应各种使用环境。
多个TPU可以配置管线以提高数据I/O操作的吞吐量。管线用于生成数据流逻辑包(data flow logic package)。管线被配置为包括一系列数据处理步骤,使得每个步骤传递作为下一步骤的输入的输出。将参照图3提供关于包括配置管线的多个TPU的控制器130的更详细描述。
图3是示意性地示出根据本实施例的控制器130的示图。具体地,图3是示出控制器130的基于功能进行分类的块的框图。
如参照图1所描述的,控制器130可以包括控制平面210和I/O平面230。控制平面210可以执行参照图1描述的存储器管理操作,并且在数据I/O操作中执行例外处置。控制平面210可以被实施为被称为FTL(闪存转换层)212的固件。
I/O平面230可以包括作为逻辑块的请求接收器232、依赖性检查器234、写入聚合器236、映射管理器238和命令提交器242。I/O平面230中包括的逻辑块中的每一个可以被实施为一条或多条固件。逻辑块可以配置数据I/O操作的管线。除了例外情况,I/O平面230可以在没有控制平面210的任何干预的情况下,执行与特定请求相对应的数据I/O操作并处理该请求。例如,例外情况可以包括需要地址映射操作来处理请求的情况或者请求对在该请求之前接收的请求具有依赖性的情况。下面将详细描述请求具有依赖性的情况。
当数据I/O操作的例外情况发生时,I/O平面230可以向控制平面210提供例外信号。控制平面210可以响应于该例外信号而执行数据I/O操作。
控制平面210可以执行存储器管理操作。控制平面210可以执行数据I/O操作以便执行存储器管理操作。例如,控制平面210需要控制存储器装置150的读取操作和编程操作以便执行GC操作。控制平面210可以向I/O平面230提供控制信号,并且控制I/O平面230执行用于执行存储器管理操作所需的数据I/O操作。
在下文中,将描述I/O平面230中包括的各逻辑块的功能。
请求接收器232可以从主机102接收请求。请求接收器232可以解析接收的请求,并且确定接收的请求的类型。例如,可以确定请求的类型为读取请求、写入请求和修剪请求中的任意一个。
请求接收器232可以根据与请求相关联的数据的大小,将请求切片为多个请求。
请求接收器232可以被配置为处理主机102的命令和数据,并且可以通过诸如以下的各种接口协议中的一种或多种与主机102通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-e或PCIe)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)或电子集成驱动器(IDE)。
依赖性检查器234可以确定或检查从请求接收器232接收的请求对在当前接收的请求之前接收的未完成请求的依赖性。在未完成请求影响接收的请求的处理顺序的情况下,依赖性检查器234可以确定接收的请求具有依赖性。
在一些实施方案中,依赖性检查器234可以检查请求对未完成修剪请求、未完成写入请求等的依赖性。修剪请求被配置为优化存储器装置中在将新数据写入存储元件之前擦除存储元件的块的垃圾收集操作和擦除操作。例如,当先前接收的修剪请求未被完全处理时,与未完成修剪请求相关联的逻辑地址和物理地址之间的映射可能尚未被解除。此外,当先前接收的写入请求未被完全处理时,与未完成写入请求相关联的数据可能尚未被编程到存储器装置150。当接收的请求的逻辑地址与未完成修剪请求或未完成写入请求的逻辑地址相同时,如果未完成修剪请求或未完成写入请求在接收的请求之前未被处理,则关于逻辑地址的数据可能不会被正常地存储在存储器装置150中。当接收的请求的逻辑地址与未完成修剪请求或未完成写入请求的逻辑地址相同时,依赖性检查器234可以确定接收的请求具有依赖性。
依赖性检查器234可以响应于写入请求而高速缓存与写入请求相关联的逻辑地址,直到存储器装置150完成编程操作,并且响应于修剪请求而将与修剪请求相关联的逻辑地址显示为位图,直到解除与修剪请求相关联的物理地址和逻辑地址之间的映射。当与从请求接收器232接收的请求相关联的逻辑地址对应于高速缓存的逻辑地址和被显示为位图的逻辑地址时,依赖性检查器234可以确定逻辑地址具有依赖性。
写入聚合器236可以使从依赖性检查器234接收的写入请求在写入队列中排队,并且聚合排队的写入请求。聚合写入请求的操作可以包括将与排队的写入请求相关联的数据条带化的操作。数据的条带化包括跨多个存储装置(例如,存储器管芯)分布的逻辑上连续的数据的分段。
图1所示的多个存储器管芯DIE1和DIE2可以并行执行编程操作或读取操作。存储器管芯中的每一个可以执行单触发编程操作,在单触发编程操作中,基于存储块的存储器单元层级,通过一个编程周期对与一个字线相关联的多个逻辑页面进行编程。单触发编程操作是指通过一个编程周期对可以存储在多个逻辑页面中的数据进行存储的编程操作。
条带化操作可以包括决定多个数据组块的通路地址使得多个数据组块可以被分布和编程到多个存储器管芯的操作。条带化操作可以进一步包括决定多个数据组块的逻辑页面地址使得多个数据组块可以被单触发编程的操作。当与排队的写入请求相关联的数据的大小的总和达到预定大小时,写入聚合器236可以将数据条带化。预定大小可以基于页面大小、一个通道中包括的存储器管芯的数量以及存储器单元层级来确定。在下文中,预定大小被称为条带化大小。
当数据被条带化时,多个存储器管芯DIE1和DIE2可以同时对数据进行编程,并且同时读取数据。因此,存储器系统110的吞吐量可以提高。写入聚合器236可以向FTL 212提供例外信号以对聚合后的写入请求的逻辑地址进行映射。
响应于请求,映射管理器238可以将待执行该请求的区域的逻辑地址转换为物理地址,并且基于该物理地址生成待提供到存储器装置150的命令。映射管理器238可以更新存储器144中已经因FTL 212的地址映射操作而改变的映射数据。映射管理器238可以响应于FTL 212的映射清除请求,将存储器144中存储的映射表的至少一部分存储在存储器装置150中。
命令提交器242可以使用所生成的命令来控制存储器装置150。
命令提交器242可以用作将控制器130和存储器装置150接口连接的存储器/存储接口,使得控制器130响应于来自主机102的请求而控制存储器装置150。当存储器装置150为闪速存储器或者具体地为NAND闪速存储器时,命令提交器242可以基于CPU 134的控制生成存储器装置150的控制信号并处理待提供到存储器装置150的数据。命令提交器242可以用作处理控制器130和存储器装置150之间的命令和数据的接口(例如,NAND闪存接口)。在一些实施方案中,命令提交器242可以支持控制器130和存储器装置150之间的数据传送。
图4是用于描述根据所公开技术的实施例的控制器130的写入操作的流程图。
在步骤S402中,请求接收器232可以从主机102接收与写入请求相对应的请求。如稍后将在本文件中说明的,请求接收器232包括主机TPU组,该主机TPU组确定来自主机102的请求的类型。因此,请求接收器232识别来自主机102的请求为写入请求或读取请求。
对应于写入请求的写入数据可以在没有控制平面210和I/O平面230的干预的情况下,通过主机DMA(直接存储器访问)(未示出)而被缓冲到控制器130的内部缓冲器中。当写入数据被完全缓冲到缓冲器中时,请求接收器232可以向主机102提供响应。
在步骤S404中,依赖性检查器234可以确定从请求接收器232接收的请求是否对已经在该接收的请求之前接收但尚未被完全处理的请求具有依赖性。
当接收的请求不具有依赖性(步骤S404中为“否”)时,依赖性检查器234可以将接收的请求提供到写入聚合器236。在步骤S408中,写入聚合器236可以使接收的请求在写入队列中排队。
当接收的请求具有依赖性(步骤S404中为“是”)时,依赖性检查器234可以将例外信号提供到FTL 212。在步骤S406中,FTL 212可以延迟处理接收的请求,直到未完成请求被完全处理。当未完成请求被完全处理时,FTL 212可以将控制信号提供到写入聚合器236。写入聚合器236可以响应于控制信号而执行步骤S408。
在步骤S410中,写入聚合器236可以确定请求排队结果是否指示与在写入队列中排队的写入请求相关联的数据的大小的总和达到预定的条带化大小。
当数据的大小的总和未达到预定的条带化大小(步骤S410中为“否”)时,写入聚合器236可以在写入数据正被缓冲在缓冲器中的同时结束写入操作。
当数据的大小的总和达到预定的条带化大小(步骤S410中为“是”)时,写入聚合器236可以将例外信号提供到FTL 212。在步骤S412中,FTL 212可以响应于例外信号而对在写入队列中排队的写入请求执行地址映射操作,从而将写入请求的逻辑地址映射到物理地址。当地址映射操作被完全执行时,FTL 212可以向映射管理器238提供控制信号。
在步骤S414中,映射管理器238可以将已经因地址映射操作而改变的映射数据更新到存储器144中。
在步骤S416中,映射管理器238可以基于写入请求的物理地址来生成用于控制存储器装置150的写入命令。
在步骤S418中,命令提交器242可以基于来自映射管理器238的写入命令来控制存储器装置150的编程操作。
图5是用于描述根据所公开技术的实施例的控制器130的读取操作的流程图。
在步骤S502中,请求接收器232可以从主机102接收与读取请求相对应的请求。
在步骤S504中,依赖性检查器234可以确定从请求接收器232接收的读取请求是否对未完成修剪请求具有依赖性(即,修剪依赖性)。
当读取请求对未完成修剪请求具有依赖性(步骤S504中为“是”)时,与修剪请求相关联的物理地址和逻辑地址之间的映射可能尚未被解除。然而,因为主机102已经提供了修剪请求,所以主机102可以请求存储器系统110反映该修剪请求。在步骤S506中,依赖性检查器234可以向FTL 212提供例外信号。FTL 212可以响应于例外信号而通过请求接收器232向主机102提供响应,该响应指示与读取请求相关联的逻辑地址已经被修剪。
当读取请求对未完成修剪请求不具有依赖性(步骤S504中为“否”)时,在步骤S508中,依赖性检查器234可以确定读取请求是否对未完成写入请求具有依赖性(即,写入依赖性)。
当读取请求对未完成写入请求具有依赖性(步骤S508中为“是”)时,与写入请求相关联的数据可能尚未被编程到存储器装置150,并且数据可能被缓冲在缓冲器中。因为主机102已经提供了写入请求,所以主机102可以向存储器系统110提供与写入请求具有相同地址的读取请求,以便请求存储器系统110提供该数据。在步骤S510中,依赖性检查器234可以向FTL 212提供例外信号。FTL 212可以响应于例外信号而向主机102提供在缓冲器中缓冲的数据。
当读取请求对未完成写入请求不具有依赖性(步骤S508中为“否”)时,依赖性检查器234可以将该读取请求提供到映射管理器238。在步骤S512中,映射管理器238可以通过参考控制器130中存储的映射数据,将读取请求的逻辑地址转换为物理地址。
在步骤S514中,映射管理器238可以基于物理地址来生成用于控制存储器装置150的读取命令。
在步骤S516中,命令提交器242可以基于来自映射管理器238的读取命令来控制存储器装置150的读取操作。
图6是用于描述根据所公开技术的实施例的控制器130的后台操作的流程图。
图6示出控制器130的GC操作。控制器130可以执行收集源块的有效数据并将所收集的数据存储在目的块中的GC操作,从而获得存储器装置150的可用空间。
在步骤S602中,FTL 212可以触发GC操作。FTL 212可以在存储器装置150的存储块之中选择源块和目的块,以便执行GC操作。
在步骤S604中,FTL 212可以生成GC读取请求,以便收集源块的有效数据。FTL 212可以向映射管理器238提供控制信号以执行GC读取请求。
在步骤S606中,映射管理器238可以通过参考控制器130中存储的映射数据,确定待响应于GC读取请求而读取的有效数据的逻辑地址和物理地址。映射管理器238可以基于有效数据的物理地址来生成读取命令。
在步骤S608中,命令提交器242可以基于读取命令来控制存储器装置150的读取操作。从存储器装置150读取的数据可以被缓冲到控制器130的内部缓冲器中。
在步骤S610中,FTL 212可以生成针对所缓冲的数据的GC写入请求。FTL 212可以向写入聚合器236提供控制信号以执行GC写入请求。
在步骤S612中,写入聚合器236可以使GC写入请求在写入队列中排队。在实施方案中,主机写入请求(从主机接收的写入请求)和GC写入请求可以在不同的写入队列中排队。写入聚合器236可以使GC写入请求在写入队列中排队,直到与在写入队列中排队的GC写入请求相关联的数据的大小的总和达到条带化大小。当数据的大小的总和达到条带化大小时,写入聚合器236可以向FTL 212提供例外信号。
在步骤S614中,FTL 212可以在GC写入请求的逻辑地址和物理地址之间执行地址映射操作,使得数据可以被存储在目的块中。当地址映射操作被完全执行时,FTL 212可以向映射管理器238提供控制信号。
在步骤S616中,映射管理器238可以将因地址映射操作而改变的映射数据更新到存储器144中。
在步骤S618中,映射管理器238可以基于写入请求的物理地址来生成用于控制存储器装置150的写入命令。
在步骤S620中,命令提交器242可以基于来自映射管理器238的写入命令来控制存储器装置150的编程操作,从而将源块的有效数据存储在目的块中。
将参照图7详细描述在控制器130中实施参照图3描述的逻辑块的示例。
图7是详细示出根据本实施例的控制器130的示图。
控制器130可以包括CPU 134、多个TPU和存储器144。可以按功能对多个TPU进行分组。参照图3,多个TPU可以包括主机TPU组132、高速缓存TPU组136、映射TPU组138和NVM TPU组142。在实施方案中,一个TPU组可以共享LLC(最末级高速缓存(Last Level Cache))(未示出)。
CPU 134、多个TPU和存储器144可以通过总线146彼此联接。
存储器144可以用作存储器系统110和控制器130的工作存储器,并且存储用于驱动存储器系统110和控制器130的数据。例如,存储器144可以临时存储在主机102和存储器装置150之间输入/输出的数据。存储器144可以存储用于地址转换操作的映射数据。存储器144可以存储用于存储器管理操作的元数据,诸如读取计数信息、有效页面信息和日志数据。
存储器144可以被实施为易失性存储器。例如,存储器144可以被实施为SRAM(静态随机存取存储器)或DRAM(动态随机存取存储器)。存储器144可以被设置在控制器130的内部或外部。图1示出被设置在控制器130中的存储器144。在实施例中,存储器144可以被实施为外部易失性存储器装置,该外部易失性存储器装置具有用于在存储器144和控制器130之间输入/输出数据的存储器接口。
主机TPU组132可以驱动参照图3描述的请求接收器232。主机TPU组132可以包括主机TPU(HTPU)402、写入I/O TPU(WIO TPU)404和读取I/O TPU(RIO TPU)406。
主机TPU 402可以解析从主机102接收的请求,并且确定该请求的类型。当请求是写入请求时,主机TPU 402可以将该请求提供到写入I/O TPU 404,并且当请求是读取请求时,主机TPU 402可以将该请求提供到读取I/O TPU 406。
写入I/O TPU 404可以向高速缓存TPU组136提供从主机TPU 402接收的写入请求。写入I/O TPU 404可以基于与写入请求相关联的数据的大小将请求切片为多个请求,并且将切片后的多个请求提供到高速缓存TPU组136。例如,当接收针对128KB数据的写入请求时,写入I/O TPU 404可以将写入请求切片为32个写入请求,切片后的每个写入请求针对4KB数据,4KB数据对应于地址映射的最小单位。地址映射的最小单位不限于此。在实施方案中,写入I/O TPU 404和高速缓存TPU组136可以通过与总线146分开的接口彼此联接。
读取I/O TPU 406可以向高速缓存TPU组136提供从主机TPU 402接收的读取请求。类似于写入I/O TPU 404,读取I/O TPU 406可以基于与读取请求相关联的数据的大小将请求切片为多个请求,并且将切片后的多个请求提供到高速缓存TPU组136。在实施方案中,读取I/O TPU 406和高速缓存TPU组136可以通过与总线146分开的接口彼此联接。
高速缓存TPU组136可以驱动已经参照图3描述的依赖性检查器234和写入聚合器236。高速缓存TPU组136可以包括检查TPU(CHK TPU)422、写入高速缓存TPU(WRC TPU)424、写入队列TPU(WRQ TPU)426和清除TPU(FLU TPU)428。
依赖性检查器234可以由检查TPU 422和写入高速缓存TPU 424驱动。
检查TPU 422可以确定从写入I/O TPU 404或读取I/O TPU 406接收的请求是否对未完成修剪请求具有依赖性。
映射表可能不会反映指示修剪请求的逻辑地址的映射已经被解除的信息,直到该修剪请求被完全处理。当控制器130在修剪请求被完全处理之前处理逻辑地址与修剪请求的逻辑地址相同的读取请求或写入请求时,错误数据可能被提供到主机102,或者来自主机102的数据可能不会被正常地存储在存储器装置150中。因此,检查TPU422可以确定从写入I/O TPU 404或读取I/O TPU 406接收的请求的逻辑地址是否与未完成修剪请求的逻辑地址相同。
例如,当从写入I/O TPU 404接收修剪请求时,检查TPU 422可以在修剪位图上显示修剪请求的逻辑地址。检查TPU 422可以向CPU134周期性地提供例外信号以解除修剪位图上显示的逻辑地址的映射。当修剪请求被CPU 134完全处理时,检查TPU 422可以移除修剪位图的显示。
检查TPU 422可以通过参考修剪位图来确定接收的请求的逻辑地址是否与未完成修剪请求的逻辑地址相同。当接收的请求的逻辑地址与未完成修剪请求的逻辑地址相同时,检查TPU 422可以向CPU 134提供针对接收的请求的例外信号,使得接收的请求可以在修剪请求被完全处理之后处理。当接收的请求的逻辑地址与未完成修剪请求的逻辑地址不相同时,检查TPU 422可以将接收的请求提供到写入高速缓存TPU 424。
写入高速缓存TPU 424可以确定从检查TPU 422接收的请求是否对未完成写入请求具有依赖性。
当控制器130在针对特定逻辑地址的写入请求被完全处理之前处理针对该特定逻辑地址的后续请求时,错误数据可能被提供到主机102,或者被存储在存储器装置150中。
写入高速缓存TPU 424可以将关于未完成写入请求的逻辑地址信息存储在写入高速缓存中。例如,写入高速缓存可以被包括在高速缓存TPU组136的LLC中。当接收的请求的逻辑地址与未完成写入请求的逻辑地址相同时,写入高速缓存TPU 424可以向CPU 134提供针对接收的请求的例外信号,使得接收的请求可以在未完成写入请求被完全处理之后处理。
当接收的请求是读取请求并且其逻辑地址与未完成写入请求的逻辑地址不相同时,写入高速缓存TPU 424可以将接收的请求提供到映射TPU组138。在实施方案中,写入高速缓存TPU 424和映射TPU组138可以通过与总线146分开的接口彼此联接。
当接收的请求是写入请求并且其逻辑地址与未完成写入请求的逻辑地址不相同时,写入高速缓存TPU 424可以将接收的请求提供到写入队列TPU 426。
写入聚合器236可以由写入队列TPU 426和清除TPU 428驱动。
写入队列TPU 426可以使写入请求在写入队列中排队。例如,写入队列可以被包括在高速缓存TPU组136的LLC中。当预定数量的写入请求排队时,写入队列TPU 426可以将写入请求提供到清除TPU428。例如,写入请求的预定数量可以指示在写入请求的数据的大小的总和达到条带化大小时写入请求的数量。
清除TPU 428可以聚合写入请求,以将与来自写入队列TPU 426的写入请求相关联的数据条带化。例如,清除TPU 428可以以基于存储器装置150的数量以及存储器装置150的存储器单元层级和性能要求而确定的顺序将数据条带化。清除TPU 428可以聚合写入请求,以将数据以数据被条带化的顺序编程到存储器装置150。清除TPU 428可以向CPU 134提供例外信号以对聚合后的写入请求的逻辑地址进行映射。
CPU 134可以包括内核(CORE)442和DTCM(数据紧密联接存储器(Data Tightly-Coupled Memory))444。内核442可以通过驱动参照图3描述的FTL 212来执行存储器管理操作。DTCM 444可以存储需要不断确保在内核442中的访问时间(access time)的数据。
内核442可以响应于来自清除TPU 428的例外信号,通过对聚合后的写入请求的逻辑地址进行映射来改变映射数据。内核442可以响应于来自检查TPU 422的例外信号,通过解除修剪请求的逻辑地址的地址映射来改变映射数据。
内核442可以基于改变后的映射数据来控制映射TPU组138更新存储器144中存储的映射表。内核442可以生成映射清除请求,使得更新后的映射表可以被周期性地编程到存储器装置150,并且确定更新后的映射表待被编程到的存储器区域的物理地址。
内核442可以响应于来自检查TPU 422和写入高速缓存TPU 424的例外信号而对具有依赖性的请求进行调度。内核442还可以执行参照图1描述的后台操作。
内核442可以将请求存储在DTCM 444中,并且向映射TPU组138提供控制信号。DTCM444中存储的请求可以包括地址已经被完全映射的写入请求、映射数据更新请求、具有依赖性的请求或后台操作中包括的数据I/O请求。如果必要,内核442可以将改变后的映射数据与请求一起存储在DTCM 444中。
映射TPU组138可以驱动参照图3描述的映射管理器238。映射TPU组138可以包括前TPU(Pre TPU)462、映射清除TPU(MAP-F TPU)464、主机读取TPU(HT-R TPU)466、GC读取TPU(GC-R TPU)468、全写入TPU(AL-W TPU)470和后TPU(Post TPU)472。
前TPU 462可以获取DTCM 444中存储的请求和改变后的映射数据。前TPU 462可以基于所获取的请求的类型,将所获取的请求提供到映射清除TPU 464、主机读取TPU 466、GC读取TPU 468和全写入TPU 470中的任意一个。
映射清除TPU 464可以响应于来自CPU 134的映射清除请求,将映射表待被编程到的存储器区域的物理地址更新到存储器144的映射表中。该物理地址可以从CPU 134获取。映射清除TPU 464可以进一步将有效页面表、日志数据等更新到存储器144中。
主机读取TPU 466可以针对来自主机102的主机读取请求执行地址转换操作。主机读取TPU 466可以通过参考存储器144中存储的映射表来搜索与读取请求的逻辑地址相对应的物理地址。主机读取TPU466可以更新存储器144中存储的读取计数信息。
GC读取TPU 468可以针对GC操作中包括的GC读取请求执行地址转换操作。GC读取TPU 468可以通过参考存储器144中存储的映射表来搜索与读取请求的逻辑地址相对应的物理地址。GC读取TPU 468可以更新存储器144中存储的读取计数信息。
全写入TPU 470可以响应于写入请求,基于改变后的映射数据来更新存储器144的映射表。写入请求可以包括来自主机102的写入请求以及后台操作中包括的写入请求。全写入TPU 470可以进一步将有效页面表、日志数据等更新到存储器144中。
后TPU 472可以基于映射清除TPU 464、主机读取TPU 466、GC读取TPU 468或全写入TPU 470所转换或更新的物理地址来生成与请求相对应的命令,并且将所生成的命令提供到NVM TPU组142。命令可以包括描述符,该描述符包括命令的类型、与命令相关联的物理地址以及存储器装置150的字线电压电平。命令的类型可以包括读取命令和写入命令。可以基于GC读取请求或主机读取请求来生成读取命令。可以基于写入请求或映射清除请求来生成写入命令。命令可以被称为IOP。
NVM TPU组142可以包括FIL(闪存接口层)内核(FIL CORE)482、IOPT 484、写入路径TPU(WR TPU)486、写入路径(WRP)488、通道TPU(CH-TPU)490、通道DMA(CH-DMA)492、读取路径TPU(RD TPU)494、读取路径(RDPs)496和完成TPU(CPL TPU)498。NVM TPU组142可以包括参照图3描述的NVM CMD提交器242。
FIL内核482可以通过参考来自后TPU 472的命令的描述符来控制写入路径TPU486、通道TPU 490和读取路径TPU 494。在实施方案中,FIL内核482可以被实施为通用处理器内核。
IOPT(IOP TCM)484可以是FIL内核482的TCM(紧密联接存储器)。从后TPU 472接收的命令可以被存储在IOPT 484中。FIL内核482可以从IOPT 484获取命令。
通道DMA 492可以将命令提供到存储器装置150,并且在存储器144和存储器装置150之间执行数据I/O操作。通道TPU 490可以基于FIL内核482的控制来控制通道DMA 492。基于联接到存储器装置150的通道的数量,多个通道TPU 490和多个通道DMA 492可以被包括在NVM TPU组142中。
写入路径488是从存储器144输出的数据在通过通道DMA 492被存储在存储器装置150中之前所穿过的路径。写入路径488可以通过对穿过写入路径488的数据执行ECC(错误校正码)编码来将奇偶校验位添加到该数据。写入路径TPU 486可以在FIL内核482的控制下控制写入路径488。
读取路径496是从存储器装置150输出的数据在通过通道DMA492提供到该读取路径496之后在被存储在存储器144中之前所穿过的路径。读取路径496可以对穿过读取路径496的数据执行ECC解码。读取路径TPU 494可以基于FIL内核482的控制来控制读取路径496。基于联接到存储器装置150的通道的数量,多个读取路径TPU 494和多个读取路径496可以被包括在NVM TPU组142中。
参照图7描述的TPU可以同时操作,并且配置数据I/O操作的管线。除了例外情况以外,管线可以在没有CPU 134的干预的情况下执行数据I/O操作。因此,存储器系统110的吞吐量可以提高。
在下文中,将参照图8至图10描述根据实施例的控制器130的写入操作。
图8是用于描述当写入队列中的数据的大小未达到条带化大小时控制器130的写入操作的示图。图8的操作可以对应于已经参照图4描述的步骤S402、S404、S408和S410。
在步骤S802中,主机TPU 402可以从主机102接收请求。主机TPU402可以解析该请求,并且在确定该请求为写入请求时将该请求提供到写入I/O TPU 404。
在步骤S804中,写入I/O TPU 404可以基于与写入请求相关联的写入数据的大小将该请求切片为多个写入请求,并且将切片后的多个写入请求提供到检查TPU 422。
在步骤S806中,检查TPU 422可以确定从写入I/O TPU 404接收的写入请求是否对未完成修剪请求具有依赖性。
图8示出接收的写入请求对未完成修剪请求不具有依赖性的情况。在步骤S810中,检查TPU 422可以将接收的写入请求提供到写入高速缓存TPU 424。写入高速缓存TPU 424可以确定从检查TPU 422接收的写入请求是否对未完成写入请求具有依赖性。
图8示出接收的写入请求对未完成写入请求不具有依赖性的情况。在步骤S814中,写入高速缓存TPU 424可以将接收的写入请求提供到写入队列TPU 426。写入队列TPU 426可以使接收的写入请求在写入队列中排队。
对应于写入请求的写入数据可以在没有CPU 134和多个TPU的干预的情况下,通过主机DMA(未示出)存储在存储器144中。一旦写入数据被存储在存储器144中,甚至在写入数据尚未被编程到存储器装置150之前,主机TPU组132就可以向主机102提供对写入请求的完成响应。
在步骤S816中,清除TPU 428可以通过将与在写入队列中排队的写入请求相对应的数据组块条带化来聚合写入请求。例如,清除TPU428可以确定与各写入请求相对应的数据组块的通路地址和逻辑页面地址,使得数据组块可以被分布和编程到多个存储器管芯,并且被单触发编程到多个逻辑页面。
清除TPU 428可以响应于写入请求而将数据组块条带化,直到与排队的写入请求相对应的数据的大小的总和达到条带化大小或者从主机102接收到清除请求,然后结束写入操作。
图9是用于描述当写入队列中的数据的大小的总和达到条带化大小时控制器130的写入操作的示图。图9的操作可以对应于已经参照图4描述的步骤S402、S404和S408至S418。
图9所示的步骤S802至S816可以与参照图8描述的步骤S802至S816相同。
在步骤S918中,当与排队的写入请求相对应的数据的大小的总和达到条带化大小或者从主机102接收到清除请求时,清除TPU 428可以向内核442提供例外信号,以对聚合后的写入请求的逻辑地址进行映射。
在步骤S920中,内核442可以响应于例外信号而执行将逻辑地址映射到物理地址的地址映射操作。内核442可以将聚合后的写入请求和通过地址映射操作所生成的映射数据存储在DTCM 444中。
在一些实施方案中,内核442可以进一步执行后台操作以便执行地址映射操作。例如,内核442可以执行存储块管理操作,该存储块管理操作包括分配开放块的操作以及检测坏块的操作。
在处理写入请求时,内核442的地址映射操作可能占用大量的时间。内核442的地址映射操作可能不需要每次从主机102接收到写入请求时都执行。例如,在预定数量的写入请求在写入队列中排队之前,可以不执行内核442的地址映射操作。因此,尽管内核442干预地址映射操作,但是写入请求的整体吞吐量可以提高。
在步骤S922中,前TPU 462可以从DTCM 444获取写入请求和映射数据。
在步骤S924中,前TPU可以解析所获取的请求,并且当所获取的请求被确定为写入请求时,将写入请求和映射数据提供到全写入TPU470。
在步骤S926中,全写入TPU 470可以使用映射数据来更新存储器144中存储的映射表。
在步骤S928中,当映射表被更新时,全写入TPU 470可以向后TPU472提供写入请求以及映射数据中包括的物理地址。
在步骤S930中,后TPU 472可以基于来自全写入TPU 470的写入请求和物理地址,生成用于控制存储器装置150的写入命令。后TPU472可以将所生成的写入命令提供到IOPT484。
在步骤S932和S938中,FIL内核482可以从IOPT 484获取命令,并且确定所获取的命令为写入命令。FIL内核482可以响应于写入命令而控制通道TPU 490和写入路径TPU486。
在步骤S934和S936中,FIL内核482可以通过通道DMA 492向存储器装置150提供写入命令。写入路径TPU 486可以在FIL内核482的控制下,控制写入路径488从存储器144获取写入数据。
在步骤S940和S942中,通道TPU 490可以在FIL内核482的控制下,控制通道DMA492向存储器装置150提供从写入路径488获取的写入数据。存储器装置150可以响应于写入命令而对写入数据进行编程。
当写入数据被完全编程时,在步骤S944中,完成TPU 498可以从存储器装置150接收响应。基于该响应,完成TPU 498可以完全处理写入请求或向内核442提供例外信号。
图10是用于描述当写入请求对未完成请求具有依赖性时控制器130的写入操作的示图。图10的操作可以对应于已经参照图4描述的步骤S402至S408。
步骤S802至S810可以与参照图8描述的步骤S802至S810相同。
当步骤S806和S810的确定结果指示接收的请求对未完成修剪请求或未完成写入请求具有依赖性时,在步骤S1008中,依赖性检查器234可以向内核442提供例外信号。内核442可以响应于例外信号而延迟处理接收的请求,直到未完成修剪请求或未完成写入请求被完全处理。
当未完成请求被完全处理时,在步骤S1012中,内核442可以向写入队列TPU 426提供控制信号。写入队列TPU 426可以响应于该控制信号而使接收的请求在写入队列中排队。
在接收的请求排队之后,可以以与参照图8的步骤S816以及图9的步骤S918至S944描述的相同方式来处理排队的请求。
在下文中,将参照图11至图13描述根据实施例的控制器130的读取操作。
图11是用于描述针对主机102的读取请求的控制器130的操作的示图。例如,图11示出读取请求对未完成修剪请求或未完成写入请求不具有依赖性的情况。图11的操作可以对应于已经参照图5描述的步骤S502、S504、S508和S512至S516。
在步骤S1102中,主机TPU 402可以从主机102接收请求。主机TPU402可以解析该请求,并且在确定该请求为读取请求时将该请求提供到读取I/O TPU 406。
在步骤S1104中,读取I/O TPU 406可以基于与读取请求相关联的读取数据的大小,向检查TPU 422提供读取请求。
在步骤S1106中,检查TPU 422可以确定从读取I/O TPU 406接收的读取请求是否对未完成修剪请求具有依赖性。
当接收的读取请求对未完成修剪请求不具有依赖性时,在步骤S1110中,检查TPU422可以将接收的读取请求提供到写入高速缓存TPU 424。写入高速缓存TPU 424可以确定从检查TPU 422接收的读取请求是否对未完成写入请求具有依赖性。
当接收的读取请求对未完成写入请求不具有依赖性时,在步骤S1114中,写入高速缓存TPU 424可以将接收的读取请求提供到前TPU462。
在步骤S1116中,前TPU 462可以解析从写入高速缓存TPU 424获取的请求,并且当确定该请求为来自主机102的读取请求时,将该请求提供到主机读取TPU 466。
在步骤S1118中,主机读取TPU 466可以通过参考存储器144中存储的映射表来搜索被映射到读取请求的逻辑地址的物理地址,并且将逻辑地址转换为搜索到的物理地址。
在步骤S1120中,主机读取TPU 466可以将读取请求以及搜索到的物理地址提供到后TPU 472。
在步骤S1122中,后TPU 472可以基于来自主机读取TPU 466的读取请求和物理地址,生成用于控制存储器装置150的读取命令。后TPU472可以将所生成的读取命令提供到IOPT 484。
在步骤S1124和S1126中,FIL内核482可以从IOPT 484获取命令,并且确定所获取的命令为读取命令。通道DMA 492可以在FIL内核482的控制下将读取命令提供到存储器装置150。存储器装置150可以响应于读取命令而执行读取操作。
在步骤S1128和S1130中,通道TPU 490可以在FIL内核482的控制下,控制通道DMA492向读取路径496提供从存储器装置150获取的读取数据。读取数据可以通过读取路径496存储在存储器144中,并且通过主机DMA(未示出)提供到主机102。
图12示出当读取请求对未完成修剪请求具有依赖性时控制器130的操作。图12的操作可以对应于已经参照图5描述的步骤S502至S506。
步骤S1102至S1106可以与参照图11描述的步骤S1102至S1106相同。
当步骤S1106的确定结果指示接收的读取请求对未完成修剪请求具有依赖性时,在步骤S1208中,检查TPU 422可以向内核442提供针对接收的读取请求的例外信号。内核442可以响应于例外信号而向主机102提供响应,该响应指示接收的读取请求的逻辑地址已经被修剪。
确定读取请求对未完成修剪请求的依赖性并且执行例外处置的操作可以防止存储器系统110响应于读取请求而向主机102提供错误数据的问题。
图13示出当读取请求对未完成写入请求具有依赖性时控制器130的操作。图13示出当读取请求对未完成修剪请求不具有依赖性时控制器130的操作。图13的操作可以对应于已经参照图5描述的步骤S502、S504、S508和S510。
步骤S1102至S1106和S1110可以与参照图11描述的步骤S1102至S1106和S1110相同。
当步骤S1110的确定结果指示接收的读取请求对未完成写入请求具有依赖性时,在步骤S1312中,写入高速缓存TPU 424可以向内核442提供针对接收的读取请求的例外信号。
在步骤S1314中,内核442可以响应于例外信号而在存储器144中搜索与未完成写入请求相对应的数据,并且将搜索到的数据提供到主机102。
确定读取请求对未完成写入请求的依赖性并且执行例外处置的操作可以防止存储器系统110响应于读取请求而向主机102提供错误数据的问题。
根据本实施例,控制器130中包括的多个TPU可以配置管线以执行数据I/O操作。因此,存储器系统110在写入操作和读取操作上的吞吐量可以提高。
当多个TPU构成管线时,数据I/O操作的吞吐量可以由需要最长请求处理时间的TPU确定。多个TPU中的至少一些TPU可以彼此并行配置,以便缩短处理时间。将参照图14描述至少一些TPU并行配置的控制器130的示例。
图14是示意性地示出根据实施例的控制器130的示图。
如参照图1所描述的,控制器130可以包括控制平面210和I/O平面230。控制平面210可以执行参照图1描述的存储器管理操作,并且在数据I/O操作中执行例外处置。
I/O平面230可以包括作为逻辑块的请求接收器232、依赖性检查器234、写入聚合器236、映射管理器238和命令提交器242。I/O平面230中包括的逻辑块对应于参照图3描述的那些逻辑块。
逻辑块可以配置数据I/O操作的管线。当逻辑块之中的依赖性检查器234和写入聚合器236占用大量的时间来执行数据I/O操作时,可能在依赖性检查器234和写入聚合器236中出现瓶颈。当依赖性检查器234和写入聚合器236中出现这种瓶颈时,数据I/O操作的吞吐量可能被限制为依赖性检查器234和写入聚合器236的吞吐量。
因此,控制器130可以包括多个依赖性检查器234和多个写入聚合器236,并且多个依赖性检查器234和多个写入聚合器236可以被配置为并行操作。例如,控制器130可以包括彼此并行操作的多个高速缓存TPU组136。当多个依赖性检查器234和多个写入聚合器236并行操作时,瓶颈可以被消除,并且数据I/O操作的吞吐量可以提高。
根据一些实施例,控制器130可以包括被配置为执行数据I/O操作的多个TPU以及被配置为执行存储器管理操作的CPU。多个TPU可以配置数据I/O操作的管线。存储器管理操作可以包括地址映射操作和后台操作。根据一些实施例,数据I/O操作和存储器管理操作可以并行执行,这可以提高存储器系统110的吞吐量。
尽管出于说明性目的描述了各个实施例,但是可以基于本专利文件中公开和/或示出的内容对所公开技术的所公开实施例和其它实施例进行各种改变和修改。
Claims (25)
1.一种用于控制存储器装置的控制器,包括:
请求接收器,从可操作地联接到所述控制器的主机接收包括逻辑地址的请求;
依赖性检查器,从所述请求接收器获取所述请求并检查所述请求的依赖性,所述依赖性指示是否存在影响处理所述请求的任何先前未完成请求;
映射管理器,响应于所述请求对所述先前未完成请求不具有依赖性的检查结果,生成包括被映射到所述请求的逻辑地址的物理地址的命令;以及
命令提交器,向所述存储器装置提供由所述映射管理器所生成的命令,
其中所述请求接收器、所述依赖性检查器、所述映射管理器和所述命令提交器配置数据管线,使得所述请求接收器、所述依赖性检查器、所述映射管理器和所述命令提交器的操作按顺序执行。
2.根据权利要求1所述的控制器,其中所述请求接收器包括:
主机张量处理单元即主机TPU,确定所述请求的类型为写入请求或读取请求,并且基于所述请求的类型,将所述请求提供到写入输入/输出TPU即写入I/O TPU或读取I/O TPU;
所述写入I/O TPU,将所述写入请求切片为多个请求,并且将切片后的多个请求提供到所述依赖性检查器;以及
所述读取I/O TPU,将所述读取请求提供到所述依赖性检查器。
3.根据权利要求1所述的控制器,其中所述映射管理器包括:
主机读取张量处理单元即主机读取TPU,搜索与所述请求的逻辑地址相对应的物理地址,所述请求对应于读取请求;以及
后TPU,基于所搜索到的物理地址来生成与所述读取请求相对应的读取命令。
4.根据权利要求3所述的控制器,其中所述命令提交器包括:
通道TPU,控制通道直接存储器访问即通道DMA向所述存储器装置提供所述读取命令;
读取路径TPU,控制读取路径从所述存储器装置获取与所述读取命令相对应的读取数据并且对所获取的读取数据执行错误校正码解码即ECC解码;以及
闪存接口层内核即FIL内核,控制所述读取路径TPU和所述通道TPU。
5.根据权利要求1所述的控制器,进一步包括:
中央处理单元即CPU,执行地址映射操作,以通过将所述主机的逻辑地址映射到所述存储器装置的物理地址来生成映射数据;以及
存储器,存储包括所述映射数据的映射表。
6.根据权利要求5所述的控制器,其中所述依赖性检查器包括:
检查张量处理单元即检查TPU,检查所述请求对未完成修剪请求的依赖性,并且请求所述CPU对已经被检查为对所述未完成修剪请求具有依赖性的所述请求执行相应的操作。
7.根据权利要求6所述的控制器,其中在所述请求的逻辑地址与所述未完成修剪请求的逻辑地址相同的情况下,所述检查TPU检查出所述请求对所述未完成修剪请求具有依赖性。
8.根据权利要求6所述的控制器,其中在所述请求对应于写入请求的情况下,所述CPU延迟处理所述请求,直到所述未完成修剪请求被完全处理。
9.根据权利要求6所述的控制器,其中所述CPU向所述主机提供指示与所述请求相对应的逻辑地址已经被修剪的响应。
10.根据权利要求5所述的控制器,其中所述依赖性检查器包括:
写入高速缓存张量处理单元即写入高速缓存TPU,请求所述CPU对已经被检查为对未完成写入请求具有依赖性的所述请求执行相应的操作。
11.根据权利要求10所述的控制器,其中在所述请求的逻辑地址与所述未完成写入请求的逻辑地址相同的情况下,所述写入高速缓存TPU检查出所述请求对所述未完成写入请求具有依赖性。
12.根据权利要求11所述的控制器,其中在所述请求对应于写入请求的情况下,所述CPU延迟处理所述请求,直到所述未完成写入请求被完全处理。
13.根据权利要求11所述的控制器,其中在所述请求对应于读取请求的情况下,所述CPU在所述存储器中搜索与所述未完成写入请求相关联的数据。
14.根据权利要求5所述的控制器,其中所述CPU确定所述存储器装置中的、所述映射表的至少一部分待被编程到的存储器区域的物理地址,并且生成包括所述物理地址的映射清除请求。
15.根据权利要求14所述的控制器,其中所述映射管理器包括:
映射清除张量处理单元即映射清除TPU,使用由所述CPU所确定的物理地址来更新所述映射表;以及
后TPU,基于所确定的物理地址来生成与所述映射清除请求相对应的写入命令。
16.根据权利要求5所述的控制器,进一步包括:
写入聚合器,聚合写入请求以将与已经被检查为对所述先前未完成请求不具有依赖性的写入请求相关联的写入数据条带化,并且向所述CPU提供针对聚合后的写入请求的地址映射请求。
17.根据权利要求16所述的控制器,进一步包括:
一个或多个依赖性检查器以及一个或多个写入聚合器,
其中所述一个或多个依赖性检查器并行操作,并且
所述一个或多个写入聚合器并行操作。
18.根据权利要求16所述的控制器,其中所述写入聚合器包括:
写入队列张量处理单元即写入队列TPU,使从所述依赖性检查器获取的写入请求排队;以及
清除TPU,通过将所排队的写入请求的写入数据条带化来聚合所排队的写入请求,并且将聚合后的写入请求提供到所述CPU。
19.根据权利要求18所述的控制器,其中所述清除TPU通过确定所述写入数据中包括的数据组块的地址中的一些来将所述写入数据条带化,所述数据组块被编程到所述存储器装置中包括的多个存储器管芯。
20.根据权利要求16所述的控制器,其中所述CPU响应于所述地址映射请求,通过将聚合后的写入请求的逻辑地址映射到所述存储器装置的物理地址来生成映射数据。
21.根据权利要求16所述的控制器,其中所述映射管理器包括:
写入张量处理单元即写入TPU,使用由所述CPU所生成的映射数据来更新所述映射表;以及
后TPU,基于所映射的物理地址来生成与所述写入请求相对应的写入命令。
22.根据权利要求21所述的控制器,其中所述命令提交器包括:
写入路径TPU,控制写入路径获取与所述写入命令相对应的写入数据并且对所获取的写入数据执行错误校正码编码;
通道TPU,控制通道直接存储器访问即通道DMA向所述存储器装置提供所述写入命令和来自所述写入路径的数据;以及
闪存接口层内核即FIL内核,控制所述写入路径TPU和所述通道TPU。
23.根据权利要求16所述的控制器,其中所述CPUi)确定垃圾收集操作的源块和目的块,ii)生成针对所述源块的读取请求并将所生成的读取请求提供到所述映射管理器,并且iii)响应于与所述读取请求相关联的数据在所述存储器中的缓冲,生成针对所述目的块的写入请求并将所生成的写入请求提供到所述写入聚合器。
24.根据权利要求23所述的控制器,其中所述映射管理器进一步包括:
垃圾收集读取张量处理单元即垃圾收集读取TPU,通过参考所述映射表来搜索与来自所述CPU的垃圾收集读取请求的逻辑地址相对应的物理地址。
25.根据权利要求5所述的控制器,进一步包括:
主机直接存储器访问即主机DMA,在没有所述CPU、所述请求接收器、所述依赖性检查器、所述映射管理器和所述命令提交器的干预的情况下,在所述主机和所述存储器之间执行数据输入/输出操作即数据I/O操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0154440 | 2020-11-18 | ||
KR1020200154440A KR20220067797A (ko) | 2020-11-18 | 2020-11-18 | 메모리 컨트롤러 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114518839A true CN114518839A (zh) | 2022-05-20 |
Family
ID=81586642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110716219.1A Withdrawn CN114518839A (zh) | 2020-11-18 | 2021-06-28 | 存储器控制器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11675537B2 (zh) |
KR (1) | KR20220067797A (zh) |
CN (1) | CN114518839A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116643945A (zh) * | 2023-05-31 | 2023-08-25 | 合芯科技有限公司 | 一种二级缓存的数据检测方法、系统及计算机设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240095165A1 (en) * | 2022-09-15 | 2024-03-21 | Western Digital Technologies, Inc. | Efficient l2p dram for high-capacity drives |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4967680B2 (ja) * | 2007-01-23 | 2012-07-04 | ソニー株式会社 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
TWI521343B (zh) * | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
KR101876574B1 (ko) | 2012-02-02 | 2018-07-09 | 에스케이하이닉스 주식회사 | 데이터 입출력 컨트롤러 및 이를 포함하는 시스템 |
KR20140057454A (ko) * | 2012-11-02 | 2014-05-13 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 이와 통신하는 호스트 장치 |
US10146440B2 (en) * | 2016-12-20 | 2018-12-04 | Intel Corporation | Apparatus, system and method for offloading collision check operations in a storage device |
KR102398201B1 (ko) | 2017-06-30 | 2022-05-17 | 삼성전자주식회사 | 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치 |
-
2020
- 2020-11-18 KR KR1020200154440A patent/KR20220067797A/ko unknown
-
2021
- 2021-04-09 US US17/227,140 patent/US11675537B2/en active Active
- 2021-06-28 CN CN202110716219.1A patent/CN114518839A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116643945A (zh) * | 2023-05-31 | 2023-08-25 | 合芯科技有限公司 | 一种二级缓存的数据检测方法、系统及计算机设备 |
CN116643945B (zh) * | 2023-05-31 | 2023-12-15 | 合芯科技有限公司 | 一种二级缓存的数据检测方法、系统及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
US11675537B2 (en) | 2023-06-13 |
US20220156002A1 (en) | 2022-05-19 |
KR20220067797A (ko) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10657041B2 (en) | Data management method and storage device performing the same | |
KR101730991B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
US10180805B2 (en) | Memory system and operating method thereof | |
CN109783397B (zh) | 存储器系统及其操作方法 | |
US11226895B2 (en) | Controller and operation method thereof | |
CN110232035B (zh) | 存储器系统以及存储器系统的操作方法 | |
KR102564774B1 (ko) | 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법 | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
US20100211820A1 (en) | Method of managing non-volatile memory device and memory system including the same | |
KR20210017481A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
KR102567224B1 (ko) | 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템 | |
CN110310691B (zh) | 存储器系统中的工作负载预测及其方法 | |
US11537318B2 (en) | Memory system and operating method thereof | |
CN110888825B (zh) | 在存储器系统中处理数据的设备和方法 | |
KR20150112075A (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
CN114371812B (zh) | 控制器及其操作方法 | |
KR102559549B1 (ko) | 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치 | |
CN114518839A (zh) | 存储器控制器 | |
KR20200044461A (ko) | 메모리 시스템 및 그것의 동작방법 | |
CN110618786A (zh) | 存储器系统及存储器系统的操作方法 | |
US20220155995A1 (en) | Controller and operating method thereof | |
CN111752468A (zh) | 存储器系统及其操作方法 | |
CN110928806A (zh) | 存储器系统及其操作方法 | |
CN110413219B (zh) | 存储器控制器、存储器系统及其操作方法 | |
CN110309075B (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220520 |
|
WW01 | Invention patent application withdrawn after publication |