CN113448501A - 存储器系统、存储器控制器及其操作方法 - Google Patents
存储器系统、存储器控制器及其操作方法 Download PDFInfo
- Publication number
- CN113448501A CN113448501A CN202010871987.XA CN202010871987A CN113448501A CN 113448501 A CN113448501 A CN 113448501A CN 202010871987 A CN202010871987 A CN 202010871987A CN 113448501 A CN113448501 A CN 113448501A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- memory
- target
- address
- read
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
-
- 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/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开提供一种被配置为控制存储器装置的存储器控制器。存储器控制器可以包括映射缓冲器、描述符队列和描述符控制器。映射缓冲器可以顺序地存储存储器装置中存储的多个映射段中的映射段。描述符队列可以基于映射缓冲器的多个地址来存储与各个映射段相对应的描述符。描述符控制器可以基于从主机接收到的逻辑地址在所存储的描述符之中搜索目标描述符,并且在搜索目标描述符的同时对所存储的描述符进行重新排序。
Description
相关申请的交叉引用
本申请要求于2020年3月25日提交的申请号为10-2020-0035952的韩国专利申请的优先权,其通过引用整体并入本文。
技术领域
本公开的各个实施例总体涉及一种电子装置,且更特别地,涉及一种存储器系统、存储器控制器和操作该存储器控制器的方法。
背景技术
通常,存储装置在诸如计算机或智能电话的主机装置的控制下存储数据。存储装置可以包括:存储器装置,被配置为存储数据;以及存储器控制器,被配置为控制存储器装置。通常,存在多种类型的存储器装置:易失性存储器装置和非易失性存储器装置。
易失性存储器装置仅在向其供应电力时保留数据;当电源关闭时,存储在其中的数据会丢失。易失性存储器装置的示例包括静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。
即使电源关闭,非易失性存储器装置仍继续存储数据。非易失性存储器装置的示例包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)和闪速存储器。
发明内容
本公开的各个实施例涉及一种具有改进的映射搜索性能的存储器控制器,以及操作该存储器控制器的方法。
本公开的实施例可以提供一种被配置为控制存储器装置的存储器控制器。存储器控制器可以包括映射缓冲器、描述符队列和描述符控制器。映射缓冲器可以顺序地存储存储器装置中存储的多个映射段中的映射段。描述符队列可以基于映射缓冲器的多个地址来存储与各个映射段相对应的描述符。描述符控制器可以基于从主机接收到的逻辑地址在所存储的描述符之中搜索目标描述符,并且在搜索目标描述符的同时对所存储的描述符进行重新排序。
本公开的实施例可以提供一种操作包括映射缓冲器和描述符队列的存储器控制器的方法。该方法可以包括:将从存储器装置加载的映射段顺序地存储在映射缓冲器中;基于映射缓冲器的多个地址,将与各个所加载的映射段相对应的描述符存储在描述符队列中;基于从主机接收到的逻辑地址,在所存储的描述符之中搜索目标描述符;并且在搜索目标描述符的同时对所存储的描述符进行重新排序。
本公开的实施例可以提供一种存储器系统。该存储器系统可以包括:存储器装置、控制器。控制器可以包括映射缓冲器和描述符队列。控制器可以将多个映射段加载到映射缓冲器中。控制器可以将针对所加载的映射段的描述符存储在描述符队列中。控制器可以在所存储的描述符之中搜索针对来自主机的逻辑地址的目标描述符。控制器可以基于目标描述符的搜索结果,对描述符队列中存储的描述符进行重新排序,以按照设定顺序布置描述符。
附图说明
图1是示出根据本公开的实施例的存储装置的示图。
图2是示出诸如图1的存储器装置的配置的示图。
图3是示出诸如图2的存储器单元阵列的示图。
图4是示出诸如图1的存储器控制器的配置和操作的示图。
图5A至图5I是示出根据实施例的正向映射搜索操作和描述符重新排序操作的示图。
图6是示出在映射搜索操作之后的描述符排序操作的示图。
图7A至图7K是示出根据实施例的反向映射搜索操作和描述符重新排序操作的示图。
图8是示出在映射搜索操作之后的描述符排序操作的示图。
图9是示出根据实施例的存储器控制器的操作的流程图。
图10是详细示出存储器控制器的操作的流程图。
图11是示出图10的正向搜索操作的流程图。
图12是示出图11的步骤S1109的流程图。
图13是示出图10的反向搜索操作的流程图。
图14是示出图13的步骤S1309的流程图。
图15是示出图1的存储器控制器的示例的示图。
图16是示出根据本公开的实施例应用存储装置的存储卡系统的框图。
图17是示出根据本公开的实施例应用存储装置的固态驱动器(SSD)系统的框图。
图18是示出根据本公开的实施例应用存储装置的用户系统的框图。
具体实施方式
提供具体结构和功能描述仅用于描述本公开的实施例。然而,本发明可以以不同于本文描述的形式和方式来实施。因此,本发明并不受限于或限于任何公开的实施例。而且,在整个说明书中,对“一个实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的(多个)实施例。
图1是示出根据本公开的实施例的存储装置50的示图。
参照图1,存储装置50可以包括存储器装置100和被配置为控制存储器装置100的操作的存储器控制器200。存储装置50可以在诸如蜂窝电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、TV、平板PC或车载信息娱乐系统的主机300的控制下存储数据。
根据作为与主机300通信的通信系统的主机接口,存储装置50可以被配置为各种存储装置中的任意一种。例如,数据存储装置50可以被配置为:SSD、MMC、eMMC、RS-MMC或微型MMC型多媒体卡SD、迷你SD、微型SD型安全数字卡、通用串行总线(USB)存储装置、通用闪存(UFS)装置、个人计算机存储卡国际协会(PCMCIA)卡型存储装置、外围组件互连(PCI)卡型存储装置、高速PCI(PCI-e或PCIe)卡型存储装置、紧凑式闪存(CF)卡、智能媒体卡和/或记忆棒。
存储装置50可以以各种封装类型中的任意一种的形式来制造。例如,存储装置50可以以如下的形式来制造:堆叠封装(POP)类型、系统级封装(SIP)类型、片上系统(SOC)类型、多芯片封装(MCP)类型、板上芯片(COB)类型、晶圆级制造封装(WFP)类型和/或晶圆级堆叠封装(WSP)类型。
存储器装置100可以将数据存储在其中。存储器装置100可以在存储器控制器200的控制下进行操作。存储器装置100可以包括包含被配置为存储数据的多个存储器单元的存储器单元阵列。
每个存储器单元可以是能够存储单个数据位的单层单元(SLC)、能够存储两个数据位的多层单元(MLC)、能够存储三个数据位的三层单元(TLC)或者能够存储四个数据位的四层单元(QLC)。在实施例中,存储器单元阵列的所有存储器单元具有相同的电平。
存储器单元阵列可以包括多个存储块。每个存储块可以包括多个存储器单元。每个存储块可以包括多个页面。在实施例中,每个页面可以是将数据存储在存储器装置100中或从存储器装置100读取所存储的数据的单位。
每个存储块可以是擦除数据的单位。在实施例中,存储器装置100可以是双倍数据速率同步动态随机存取存储器(DDR SDRAM)、低功率双倍数据速率第四代(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器装置、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)或自旋转移力矩随机存取存储器(STT-RAM)。在本说明书中,描述了在存储器装置100是NAND闪速存储器的情况下的本发明的各方面和特征。
存储器装置100可以从存储器控制器200接收命令和地址,并访问由地址选择的存储器单元阵列的区域。换言之,存储器装置100可以对由地址选择的区域执行由命令指示的操作。例如,存储器装置100可以执行写入(或编程)操作、读取操作和擦除操作。在编程操作期间,存储器装置100可以将数据编程到由地址选择的区域。在读取操作期间,存储器装置100可以从由地址选择的区域读取数据。在擦除操作期间,存储器装置100可以从由地址选择的区域擦除数据。
在实施例中,存储器装置100可以存储包括从主机300接收到的逻辑地址和存储器装置100的物理地址之间的映射数据的多个映射段。
存储器控制器200可以控制存储装置50的全部操作。
当向存储装置50施加电力时,存储器控制器200可以运行固件(FW)。在存储器装置100是闪速存储器装置的情况下,存储器控制器200可以运行诸如闪速转换层(FTL)的固件,用于控制主机300和存储器装置100之间的通信。
在实施例中,存储器控制器200可以从主机300接收数据和逻辑块地址(LBA),并且将LBA转换为指示待存储数据的存储器单元的地址的物理块地址(PBA),该存储器单元被包括在存储器装置100中。
存储器控制器200可以响应于来自主机300的请求,控制存储器装置100执行编程操作、读取操作或擦除操作。在编程操作期间,存储器控制器200可以向存储器装置100提供写入命令、PBA和数据。在读取操作期间,存储器控制器200可以向存储器装置100提供读取命令和PBA。在擦除操作期间,存储器控制器200可以向存储器装置100提供擦除命令和PBA。
在实施例中,在没有来自主机300的请求的情况下,存储器控制器200可以自主地生成命令、地址和数据,并将命令、地址和数据传输到存储器装置100。例如,存储器控制器200可将命令、地址和数据提供到存储器装置100以执行诸如用于损耗均衡的编程操作和用于垃圾收集的编程操作的后台操作。
在实施例中,存储器控制器200可以控制两个或更多个存储器装置100。在这种情况下,存储器控制器200可以以交错方式控制存储器装置100,以便提高操作性能。交错方案可以是至少两个存储器装置100在重叠时间段中进行操作的操作方案。
在实施例中,存储器控制器200可以包括映射缓冲器210和映射管理器220。
映射缓冲器210可以存储存储器装置100中存储的多个映射段之中的映射段。映射缓冲器210可以包括与多个地址中的每一个相对应的存储区域。映射缓冲器210可以将每个映射段存储在与加载的序列中的每个地址相对应的存储区域中。
映射管理器220可以在映射缓冲器210中存储的多个映射段之中搜索与从主机300接收到的逻辑地址相对应的映射数据。映射管理器220可以包括描述符队列,该描述符队列基于映射缓冲器210的多个地址来存储与各个映射段相对应的描述符。描述符队列可以按照从存储器装置100加载映射段的序列来存储与映射段相对应的描述符。描述符可以是指示映射段的索引。
映射管理器220可以基于逻辑地址来确定目标描述符。目标描述符可以是指示包括逻辑地址的映射段的索引。在实施例中,目标描述符可以是逻辑地址值的一部分。
映射管理器220可以在描述符队列中搜索目标描述符。映射管理器220可以在描述符队列中读取与多个地址之中的所选择的地址相对应的描述符。映射管理器220可以确定读取描述符是否与目标描述符匹配。
如果读取描述符与目标描述符匹配,则基于与读取描述符相对应的映射缓冲器的地址,映射管理器220可以在映射缓冲器210中存储的映射段之中搜索包括从主机300接收到的逻辑地址的映射段。映射管理器220可以在相应映射段中搜索与逻辑地址相对应的映射数据。
如果读取描述符与目标描述符不同,则映射管理器220可以改变与目标描述符相关联的所选择的地址,并再次搜索与目标描述符匹配的读取描述符。可以继续该进程直到映射管理器220找到与目标描述符匹配的描述符或者确定不存在匹配项为止。在后一种情况下,映射管理器220可以从存储器装置100中加载存储器装置100中存储的多个映射段之中的由目标描述符指示的映射段。
映射管理器220可以结合在描述符队列中存储的描述符之中搜索目标描述符来对描述符队列中存储的描述符进行重新排序。在实施例中,映射管理器220可以基于描述符队列中存储的描述符的各自的地址以升序对这些描述符进行排序。在另一实施例中,映射管理器220可以基于描述符队列中存储的描述符的各自的地址以降序对这些描述符进行排序。参照图5A至图5I和图7A至图7K描述了描述符的顺序。
主机300可以使用诸如以下的各种通信方法中的至少一种与存储装置50通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和/或低负载DIMM(LRDIMM)通信方法。
图2是示出图1的存储器装置100的配置的示图。
参照图2,存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130。外围电路120可以包括地址解码器121、电压生成器122、读取/写入电路123、数据输入/输出电路124和感测电路125。
存储器单元阵列110可以包括多个存储块BLK1至BLKz。多个存储块BLK1至BLKz通过行线RL联接到地址解码器121。存储块BLK1至BLKz可以通过位线BL1至BLm联接到读取/写入电路123。存储块BLK1至BLKz中的每一个可以包括多个存储器单元。在实施例中,多个存储器单元可以是非易失性存储器单元。多个存储器单元之中的联接到同一字线的存储器单元被定义为一个页面。换言之,存储器单元阵列110可以由多个物理页面形成。在实施例中,存储器单元阵列110中的存储块BLK1至BLKz中的每一个可以包括多个虚设单元。一个或多个虚设单元可以串联联接在漏极选择晶体管和存储器单元之间以及源极选择晶体管和存储器单元之间。
存储器装置100的存储器单元中的每一个可以由能够存储单个数据位的单层单元(SLC)、能够存储两个数据位的多层单元(MLC)、能够存储三个数据位的三层单元(TLC)或者能够存储四个数据位的四层单元(QLC)形成。
外围电路120可以驱动存储器单元阵列110。例如,外围电路120可驱动存储器单元阵列110,以执行编程操作、读取操作或擦除操作。
地址解码器121通过行线RL联接到存储器单元阵列110。行线RL可以包括漏极选择线、字线、源极选择线和公共源极线。在实施例中,字线可以包括普通字线和虚设字线。在实施例中,行线RL可以进一步包括管道选择线。
地址解码器121可在控制逻辑130的控制下进行操作。地址解码器121从控制逻辑130接收地址ADDR。
地址解码器121可以对所接收到的地址ADDR之中的块地址进行解码。地址解码器121可以根据经解码的块地址来选择存储块BLK1至BLKz中的至少一个。地址解码器121可以对所接收到的地址ADDR之中的行地址进行解码。地址解码器121可以根据经解码的行地址来选择所选择的存储块的字线中的至少一个。地址解码器121可以将与电压生成器122一起供应的操作电压Vop施加到所选择的字线。
在编程操作期间,地址解码器121可以将编程电压施加到所选择的字线,并且将低于编程电压的通过电压施加到未选择的字线。在编程验证操作期间,地址解码器121可以将验证电压施加到所选择的字线,并将高于验证电压的验证通过电压施加到未选择的字线。
在读取操作期间,地址解码器121可以将读取电压施加到所选择的字线,并将高于读取电压的读取通过电压施加到未选择的字线。
在实施例中,可以基于存储块来执行存储器装置100的擦除操作。在擦除操作期间,待被输入到存储器装置100的地址ADDR包括块地址。地址解码器121可以对块地址进行解码,并根据经解码的块地址来选择至少一个存储块。在擦除操作期间,地址解码器121可以将接地电压施加到与所选择的存储块联接的字线。
在本公开的实施例中,地址解码器121可以对所传输的地址ADDR之中的列地址进行解码。经解码的列地址可以被传输到读取/写入电路123。例如,地址解码器121可以包括诸如行解码器、列解码器和地址缓冲器的组件。
电压生成器122可以使用供应给存储器装置100的外部电源电压来生成多个操作电压Vop。电压生成器122可在控制逻辑130的控制下进行操作。
在实施例中,电压生成器122可以通过调节外部电源电压来生成内部电源电压。从电压生成器122生成的内部电源电压可以用作存储器装置100的操作电压。
在实施例中,电压生成器122可以使用外部电源电压或内部电源电压来生成多个操作电压Vop。电压生成器122可以生成存储器装置100所需的各种电压。例如,电压生成器122可以生成多个擦除电压、多个编程电压、多个通过电压、多个选择读取电压和多个未选择读取电压。
电压生成器122可以包括被配置为接收内部电源电压的多个泵浦(pumping)电容器以便生成具有各种电压电平的多个操作电压Vop。电压生成器122可以通过在控制逻辑130的控制下选择性地启用多个泵浦电容器来生成多个操作电压Vop。
所生成的操作电压Vop可以由地址解码器121供应给存储器单元阵列110。
读取/写入电路123可以包括第一至第m页面缓冲器PB1至PBm。第一至第m页面缓冲器PB1至PBm可分别通过第一至第m位线BL1至BLm联接到存储器单元阵列110。第一至第m页面缓冲器PB1至PBm在控制逻辑130的控制下进行操作。
第一至第m页面缓冲器PB1至PBm可以与数据输入/输出电路124进行数据DATA通信。在编程操作期间,第一至第m页面缓冲器PB1至PBm可以通过数据输入/输出电路124和数据线DL来接收待被存储的数据DATA。
在编程操作期间,当将编程电压施加到所选择的字线时,第一至第m页面缓冲器PB1至PBm可以通过位线BL1至BLm将通过数据输入/输出电路124接收到的数据DATA传输到所选择的存储器单元。基于所传输的数据DATA对所选择的页面中的存储器单元进行编程。联接到施加有编程使能电压(例如,接地电压)的位线的存储器单元可具有增加的阈值电压。可以保持联接到施加编程禁止电压(例如,电源电压)的位线的存储器单元的阈值电压。在编程验证操作期间,第一至第m页面缓冲器PB1至PBm可以通过位线BL1至BLm从所选择的存储器单元读取数据DATA。
在读取操作期间,读取/写入电路123可以通过位线BL从所选择的页面的存储器单元读取数据DATA,并将所读取的数据DATA存储在第一至第m页面缓冲器PB1至PBm中。
在擦除操作期间,读取/写入电路123可以使位线BL浮置(float)。在实施例中,读取/写入电路123可以包括列选择电路。
数据输入/输出电路124通过数据线DL联接到第一至第m页面缓冲器PB1至PBm。数据输入/输出电路124可以在控制逻辑130的控制下进行操作。
数据输入/输出电路124可以包括用于接收输入数据DATA的多个输入/输出缓冲器(未示出)。在编程操作期间,数据输入/输出电路124可以从外部控制器(例如,图1的控制器200)接收待存储的数据DATA。在读取操作期间,数据输入/输出电路124可以向外部控制器输出从读取/写入电路123中的第一至第m页面缓冲器PB1至PBm接收到的数据DATA。
在读取操作或验证操作期间,感测电路125可以响应于由控制逻辑130生成的使能位信号VRYBIT而生成参考电流,将从读取/写入电路123接收到的感测电压VPB与由参考电流生成的参考电压进行比较,并且将通过信号或失败信号输出到控制逻辑130。
控制逻辑130可以联接到地址解码器121、电压生成器122、读取/写入电路123、数据输入/输出电路124和感测电路125。控制逻辑130可以控制存储器装置100的全部操作。控制逻辑130可以响应于从外部装置传输的命令CMD而操作。
控制电路130可以响应于命令CMD和地址ADD来生成各种信号并控制外围电路120。例如,响应于命令CMD和地址ADDR,控制逻辑130可以生成操作信号OPSIG、地址ADDR、读取/写入电路控制信号PBSIGNALS和使能位VRYBIT。控制逻辑130可以将操作信号OPSIG输出到电压生成器122,将地址ADDR输出到地址解码器121,将读取/写入控制信号输出到读取/写入电路123,并将使能位VRYBIT输出到感测电路125。在验证操作期间,控制逻辑130可以响应于从感测电路125输出的通过信号PASS或失败信号FAIL来确定目标存储器单元是已经通过验证还是未通过验证。
图3是示出图2的存储器单元阵列110的示图。
参照图3,存储器单元阵列110的第一至第z存储块BLK1至BLKz共同连接到第一至第m位线BL1至BLm。在图3中,为清楚起见,仅示出了多个存储块BLK1至BLKz之中的第一存储块BLK1的元件。可以理解的是,存储块BLK2至BLKz中的每一个具有与第一存储块BLK1相同的配置。
存储块BLK1可以包括多个单元串CS1_1至CS1_m(其中m是正整数)。第一至第m单元串CS1_1至CS1_m分别联接到第一至第m位线BL1至BLm。第一至第m单元串CS1_1至CS1_m中的每一个包括漏极选择晶体管DST、彼此串联联接的多个存储器单元MC1至MCn(其中n是正整数)以及源极选择晶体管SST。
第一至第m单元串CS1_1至CS1_m的每一个中的漏极选择晶体管DST的栅极端子联接到漏极选择线DSL1。第一至第m单元串CS1_1至CS1_m的每一个中的第一至第n存储器单元MC1至MCn的栅极端子分别联接到第一至第n字线WL1至WLn。第一至第m单元串CS1_1至CS1_m的每一个中的源极选择晶体管SST的栅极端子联接到源极选择线SSL1。
将基于多个单元串CS1_1至CS1_m中的第一单元串CS1_1来描述每个单元串的配置。将理解的是,其他单元串CS1_1至CS1_m中的每一个具有与第一单元串CS1_1相同的配置。
第一单元串CS1_1中的漏极选择晶体管DST的漏极端子联接到第一位线BL1。第一单元串CS1_1中的漏极选择晶体管DST的源极端子联接到第一单元串CS1_1中的第一存储器单元MC1的漏极端子。第一至第n存储器单元MC1至MCn彼此串联联接。第一单元串CS1_1中的源极选择晶体管SST的漏极端子联接到第一单元串CS1_1中的第n存储器单元MCn的源极端子。第一单元串CS1_1中的源极选择晶体管SST的源极端子联接到公共源极线CSL。在实施例中,公共源极线CSL可以共同联接到第一至第z存储块BLK1至BLKz。
漏极选择线DSL1、第一至第n字线WL1至WLn以及源极选择线SSL1包括在图2的行线RL中。漏极选择线DSL1、第一至第n字线WL1至WLn以及源极选择线SSL1由地址解码器121控制。公共源极线CSL由控制逻辑130控制。第一至第m位线BL1至BLm由读取/入写电路123控制。
图4是示出图1的存储器控制器200的配置和操作的示图。
参照图4,存储器装置100可以存储包括从主机300接收到的逻辑地址和存储器装置100的物理地址之间的映射数据的多个映射段。
在实施例中,存储器控制器200可以包括映射缓冲器210和映射管理器220。
映射缓冲器210可以存储从存储器装置100加载的映射数据。映射数据可以包括存储器装置100中存储的多个映射段中的至少一个映射段。
映射缓冲器210可以包括与多个地址中的每一个相对应的存储区域。映射缓冲器210可以将从存储器装置100接收到的至少一个映射段存储在与所加载的序列中的每个地址相对应的存储区域中。
映射管理器220可以从主机300接收读取请求REQ和逻辑地址LBA。映射管理器220可以响应于读取请求REQ来搜索与该逻辑地址LBA相对应的映射数据。
在实施例中,映射管理器220可以包括描述符控制器221、描述符队列222和写入队列223。
基于映射缓冲器210的多个地址,描述符队列222可以包括对应于各个映射段的描述符。描述符队列222可以按照从存储器装置100加载映射段的序列来存储与映射段相对应的描述符。描述符可以是指示映射段的索引。
描述符控制器221可以在描述符队列222中搜索指示包括逻辑地址LBA的映射段的目标描述符。
描述符控制器221可以基于逻辑地址LBA来确定目标描述符。目标描述符可以是指示包括逻辑地址LBA的映射段的索引。在实施例中,目标描述符可以是LBA值的一部分。
描述符控制器221可以在描述符队列222中读取与多个地址中的所选择的地址相对应的描述符。描述符控制器221可以确定读取描述符是否与目标描述符匹配,即是否与目标描述符相同。
如果读取描述符与目标描述符匹配,则描述符控制器221可以输出匹配成功信息和对应于读取描述符的映射缓冲器210的地址。响应于匹配成功信息,映射管理器220可以基于所输出的地址在映射缓冲器210中存储的映射段之中搜索包括从主机300接收到的逻辑地址LBA的映射段。映射管理器220可以在相应映射段中搜索与逻辑地址LBA相对应的映射数据。
如果读取描述符与目标描述符不同,则描述符控制器221可以改变所选择的地址并再次搜索目标描述符。可以继续该进程直到找到匹配项或确定不存在匹配项为止。在后一种情况下,描述符控制器221可以输出指示描述符队列222中没有目标描述符的匹配失败信息。响应于匹配失败信息,映射管理器220可以基于逻辑地址LBA从存储器装置100加载由存储器装置100中存储的多个映射段之中的目标描述符指示的映射段。
描述符控制器221可以结合在描述符队列222中存储的描述符之中搜索目标描述符来对描述符队列222中存储的描述符进行重新排序。在实施例中,描述符控制器221可以基于映射缓冲器210中的描述符的各自的地址,以升序对描述符队列222中存储的描述符进行排序。在另一实施例中,描述符控制器221可以基于映射缓冲器210中的描述符的各自的地址,以降序对描述符队列222中存储的描述符进行排序。
在下文的描述中,假设描述符控制器221基于多个地址以升序对描述符队列222中存储的描述符进行排序。
描述符控制器221可以基于目标描述符和参考描述符之间的比较结果来确定搜索目标描述符的搜索方向。如果目标描述符大于参考描述符,则描述符控制器221可以确定搜索方向是多个地址变低的方向(反向)。如果目标描述符小于参考描述符,则描述符控制器221可以确定搜索方向是多个地址变高的方向(正向)。可以将参考描述符确定为与存储器装置100中存储的各个映射段相对应的描述符之中的平均值或中值。在实施例中,根据存储器控制器的映射搜索策略,参考描述符可以被确定为各个值中的任意一个。
写入队列223可以存储用于对描述符队列222中存储的描述符进行重新排序的描述符信息。
描述符控制器221可以将从描述符队列222读取的一个或多个描述符的最小值或最大值设置为弹出描述符。弹出描述符可以是临时存储在描述符控制器221中以与读取描述符进行比较的描述符。
在实施例中,当以正向在描述符队列222中搜索目标描述符时,描述符控制器221可以将从描述符队列222读取的一个或多个描述符的最大值设置为弹出描述符。在实施例中,当以反向在描述符队列222中搜索目标描述符时,描述符控制器221可以将从描述符队列222读取的一个或多个描述符的最小值设置为弹出描述符。
描述符控制器221可以读取与多个地址之中的所选择的地址相对应的描述符。描述符控制器221可以确定读取描述符是否与目标描述符匹配。
如果读取描述符与目标描述符不同,则描述符控制器221可以将读取描述符与弹出描述符进行比较。
描述符控制器221可以基于读取描述符和弹出描述符之间的比较结果,将包括先前地址和所选择的地址的读取描述符的描述符信息存储在写入队列223中。描述符控制器221可以将与描述符队列222中的所选择的地址相对应的描述符更新为弹出描述符。在写入队列323已满的情况下,描述符控制器221可以不更新描述符队列222。
描述符控制器221可以根据读取描述符与弹出描述符之间的比较结果,基于先前存储在写入队列223中的描述符信息来更新描述符队列222。
在实施例中,在以正向执行搜索操作的情况下,如果弹出描述符大于读取描述符,则描述符控制器221可以基于读取描述符和弹出描述符之间比较的结果,将包括先前地址和所选择的地址的读取描述符的描述符信息存储在写入队列223中。进一步,描述符控制器221可以将与描述符队列222中的所选择的地址相对应的描述符更新为弹出描述符。
在实施例中,当以正向执行搜索操作时,如果弹出描述符小于读取描述符,则描述符控制器221可以基于先前存储在写入队列223中的描述符信息来更新描述符队列222。描述符控制器221可以将弹出描述符更新为读取描述符。
参照图5A至图5I描述当以正向执行搜索操作时对描述符队列222中存储的描述符进行重新排序的操作。
在实施例中,在以反向执行搜索操作的情况下,如果弹出描述符小于读取描述符,则描述符控制器221可以基于读取描述符和弹出描述符之间比较的结果,将包括先前地址和所选择的地址的读取描述符的描述符信息存储在写入队列223中。进一步,描述符控制器221可以将与描述符队列222中的所选择的地址相对应的描述符更新为弹出描述符。
在实施例中,当以反向执行搜索操作时,如果弹出描述符大于读取描述符,则描述符控制器221可以基于先前存储在写入队列223中的描述符信息来更新描述符队列222。描述符控制器221可以将弹出描述符更新为读取描述符。
参照图7A至图7K描述当以反向执行搜索操作时对描述符队列222中存储的描述符进行重新排序的操作。
图5A至图5I是示出根据实施例的正向映射搜索操作和描述符重新排序操作的示图。
参照图5A,描述符队列可以基于映射缓冲器210的多个地址Addr1至Addr8来存储与映射缓冲器210中存储的各个映射段相对应的描述符。描述符可以是指示映射段的索引。描述符队列可以按照从存储器装置100加载映射段的序列来存储与各个映射段相对应的描述符。
目标描述符可以是指示包括从主机300接收到的逻辑地址的映射段的索引。可以基于逻辑地址来确定目标描述符。在实施例中,目标描述符可以是逻辑地址的部分值。
在参照图5A至图5I的描述中,假设逻辑地址为04405。逻辑地址的前三位可以用作目标描述符,逻辑地址的后两位可以用作偏移量。确定逻辑地址的值和描述符的方法不限于本公开的实施例。
指示包括逻辑地址的映射段的目标描述符可以是44。存储器控制器200可以在描述符队列中搜索目标描述符,并获得与目标描述符相对应的映射缓冲器的地址。存储器控制器200可以基于该地址从映射缓冲器210获得由目标描述符44指示的映射段。存储器控制器200可以参考在获得的映射段中具有偏移量5的映射数据来获得与逻辑地址04405相对应的映射数据。
可以根据目标描述符和参考描述符之间的比较结果来确定搜索方向。如果目标描述符大于参考描述符,则可以将搜索方向确定为反向。如果目标描述符小于参考描述符,则可以将搜索方向确定为正向。在参照图5A至图5I的描述中,假设参考描述符为50。在图5A至图5I中,因为目标描述符44小于参考描述符50,所以可以以正向搜索目标描述符。
在实施例中,描述符队列可以存储分别与地址Addr1至Addr8相对应的描述符7、3、10、13、5、2、1和44。地址的数量不限于本实施例的数量。
参照图5A,因为搜索方向是正向,所以可以将多个地址Addr1至Addr8中的第一地址Addr1确定为所选择的地址。可以读取与所选择的地址相对应的描述符7。可以确定读取描述符7是否与目标描述符44匹配。因为读取描述符7与目标描述符44不匹配,所以可以以所选择的地址增加的方向来执行搜索目标描述符的操作。
可以基于从描述符队列中读取的一个或多个描述符的最大值来确定弹出描述符。因为读取描述符7是从描述符队列读取的一个或多个描述符的最大值,所以可以将读取描述符7设置为弹出描述符。
参照图5B,可以将所选择的地址从第一地址增加到第二地址。先前地址可以是第一地址。可以读取与所选择的地址相对应的描述符3。可以确定读取描述符3是否与目标描述符44匹配。因为读取描述符3与目标描述符44不匹配,所以可以以所选择的地址增加的方向来执行搜索目标描述符的操作。
因为读取描述符3与目标描述符44不匹配,所以可以将读取描述符3与弹出描述符7进行比较。因为弹出描述符7大于读取描述符3,所以可以将包括读取描述符3和作为先前地址的第一地址的描述符信息存储在写入队列中。可以将与作为描述符队列中的所选择的地址的第二地址相对应的描述符3更新为作为弹出描述符的7。
参照图5C,可以将所选择的地址从第二地址增加到第三地址。先前地址可以是第二地址。可以读取与所选择的地址相对应的描述符10。可以确定读取描述符10是否与目标描述符44匹配。因为读取描述符10与目标描述符44不匹配,所以可以以所选择的地址增加的方向来执行搜索目标描述符的操作。
因为读取描述符10与目标描述符44不匹配,所以可以将读取描述符10与弹出描述符7进行比较。因为弹出描述符7小于读取描述符10,所以可以基于写入队列中存储的描述符信息来更新描述符队列。因此,可以将与描述符队列中的第一地址相对应的描述符7更新为描述符3。
可以将弹出描述符确定为从描述符队列读取的一个或多个描述符的最大值。因此,因为弹出描述符7小于读取描述符10,所以可以将弹出描述符7更新为读取描述符10。
参照图5D,所选择的地址可以从第三地址增加到第四地址。先前地址可以是第三地址。可以读取与所选择的地址相对应的描述符13。可以确定读取描述符13是否与目标描述符44匹配。因为读取描述符13与目标描述符44不匹配,所以可以以所选择的地址增加的方向执行搜索目标描述符的操作。
因为读取描述符13与目标描述符44不匹配,所以可以将读取描述符13与弹出描述符10进行比较。因为弹出描述符10小于读取描述符13,所以可以将弹出描述符10更新为读取描述符13。
参照图5E,可以将所选择的地址从第四地址增加到第五地址。先前地址可以是第四地址。可以读取与所选择的地址相对应的描述符5。可以确定读取描述符5是否与目标描述符44匹配。因为读取描述符5与目标描述符44不匹配,所以可以以所选择的地址增加的方向执行搜索目标描述符的操作。
因为读取描述符5与目标描述符44不匹配,所以可以将读取描述符5与弹出描述符13进行比较。因为弹出描述符13大于读取描述符5,所以可以将包括读取描述符5和作为先前地址的第四地址的描述符信息存储在写入队列中。可以将描述符队列中的、与作为所选择的地址的第五地址相对应的描述符5更新为作为弹出描述符的13。
参照图5F,可以将所选择的地址从第五地址增加到第六地址。先前地址可以是第五地址。可以读取与所选择的地址相对应的描述符2。可以确定读取描述符2是否与目标描述符44匹配。因为读取描述符2与目标描述符44不匹配,所以可以以所选择的地址增加的方向执行搜索目标描述符的操作。
因为读取描述符2与目标描述符44不匹配,所以可以将读取描述符2与弹出描述符13进行比较。因为弹出描述符13大于读取描述符2,所以可以将包括读取描述符2和作为先前地址的第五地址的描述符信息存储在写入队列中。可以将与作为描述符队列中的所选择的地址的第六地址相对应的描述符2更新为作为弹出描述符的13。
参照图5G,可以将所选择的地址从第六地址增加到第七地址。先前地址可以是第六地址。可以读取与所选择的地址相对应的描述符1。可以确定读取描述符1是否与目标描述符44匹配。因为读取描述符1与目标描述符44不匹配,所以可以以所选择的地址增加的方向执行搜索目标描述符的操作。
因为读取描述符1与目标描述符44不匹配,所以可以将读取描述符1与弹出描述符13进行比较。因为弹出描述符13大于读取描述符1,所以包括读取描述符1和作为先前地址的第六地址的描述符信息需要存储在写入队列中。但是,因为写入队列已满,所以描述符信息可能不会存储在写入队列中。因此,与作为描述符队列中的所选择的地址的第七地址相对应的描述符1可能不会被更新为作为弹出描述符的13。
参照图5H,可以将所选择的地址从第七地址增加到第八地址。先前地址可以是第七地址。可以读取与所选择的地址相对应的描述符44。可以确定读取描述符44是否与目标描述符44匹配。因为读取描述符44与目标描述符44匹配,所以可以终止搜索目标描述符的操作。
如果参考对应于目标描述符44的映射缓冲器的第四地址来读取映射缓冲器,则可以获得目标描述符44所指示的映射段。如果从所获得的映射段中读取具有偏移量5的映射数据,则可以获得与逻辑地址04405相对应的映射数据。
因为存在写入队列中存储的描述符信息,所以可以基于写入队列中存储的描述符信息来更新描述符队列。因此,与描述符队列中的第四地址相对应的描述符13可以被更新为描述符5。
可以将弹出描述符确定为从描述符队列读取的一个或多个描述符的最大值。因此,因为弹出描述符13小于读取描述符44,所以可以将弹出描述符13更新为读取描述符44。
参照图5I,尽管搜索目标描述符的操作已经终止,但是存在写入队列中存储的描述符信息,从而可以基于写入队列中存储的描述符信息来更新描述符队列。因此,与描述符队列中的第五地址相对应的描述符13可以被更新为描述符2。
图6是示出在映射搜索操作之后的描述符排序操作的示图。
参照图6,可以理解的是,在已经以正向执行了一次映射搜索操作之后,分别对应于第一地址和第二地址的描述符以升序排序。当执行映射搜索操作时,可以基于地址以升序对描述符进行排序。由于已基于地址对描述符队列中存储的描述符进行了排序,如果目标描述符大于参考值,则可以在随后的映射搜索操作中执行反向搜索操作,或者如果目标描述符小于或等于参考值,则可以执行正向搜索操作。因此,可以减少执行映射搜索操作所花费的时间。
在各个实施例中,在已经执行了映射搜索操作之后,可以基于地址以降序对描述符队列中存储的描述符进行排序。
图7A至图7K是示出根据实施例的反向映射搜索操作和描述符重新排序操作的示图。
参照图7A,描述符队列可以是在已经执行了一次参照图5I描述的正向搜索操作之后通过以升序对描述符进行排序而获得的描述符队列。
在参照图7A至图7K的描述中,假设逻辑地址为10001。逻辑地址的前三位可以用作目标描述符,逻辑地址的后两位可以用作偏移量。确定逻辑地址的值和描述符的方法不限于本公开的实施例。
指示包括逻辑地址的映射段的目标描述符可以是100。存储器控制器200可以在描述符队列中搜索目标描述符,并获得与目标描述符相对应的映射缓冲器210的地址。存储器控制器200可以基于该地址从映射缓冲器210获得由目标描述符100指示的映射段。存储器控制器200可以参考在获得的映射段中具有偏移量1的映射数据来获得与逻辑地址10001相对应的映射数据。
可以根据目标描述符和参考描述符之间的比较结果来确定搜索方向。如果目标描述符大于参考描述符,则可以将搜索方向确定为反向。如果目标描述符小于参考描述符,则可以将搜索方向确定为正向。在参照图7A至图7K的描述中,假设参考描述符为50。在图7A至图7K中,因为目标描述符100大于参考描述符50,所以可以以反向搜索目标描述符。
参照图7A和7B,因为搜索方向是反向,所以可以将多个地址Addr1至Addr8中的第八地址确定为所选择的地址。可以读取与所选择的地址相对应的描述符44。可以确定读取描述符44是否与目标描述符100匹配。因为读取描述符44与目标描述符100不匹配,所以可以以所选择的地址减小的方向执行搜索目标描述符的操作。
可以基于从描述符队列中读取的一个或多个描述符的最小值来确定弹出描述符。因为读取描述符44是从描述符队列读取的一个或多个描述符的最小值,所以可以将读取描述符44设置为弹出描述符。
参照图7C,可以将所选择的地址从第八地址减小到第七地址。先前地址可以是第八地址。可以读取与所选择的地址相对应的描述符1。可以确定读取描述符1是否与目标描述符100匹配。因为读取描述符1与目标描述符100不匹配,所以可以以所选择的地址减小的方向执行搜索目标描述符的操作。
因为读取描述符1与目标描述符100不同,所以可以将读取描述符1与弹出描述符44进行比较。因为弹出描述符44大于读取描述符1,所以可以将弹出描述符44更新为读取描述符1。
参照图7D,可以将所选择的地址从第七地址减小到第六地址。先前地址可以是第七地址。可以读取与所选择的地址相对应的描述符13。可以确定读取描述符13是否与目标描述符100匹配。因为读取描述符13与目标描述符100不匹配,所以可以以所选择的地址减小的方向执行搜索目标描述符的操作。
因为读取描述符13与目标描述符100不同,所以可以将读取描述符13与弹出描述符1进行比较。因为弹出描述符1小于读取描述符13,所以可以将包括读取描述符13和作为先前地址的第七地址的描述符信息存储在写入队列中。可以将与作为描述符队列中的所选择的地址的第六地址相对应的描述符13更新为作为弹出描述符的1。
参照图7E,可以将所选择的地址从第六地址减小到第五地址。先前地址可以是第六地址。可以读取与所选择的地址相对应的描述符2。可以确定读取描述符2是否与目标描述符100匹配。因为读取描述符2与目标描述符100不匹配,所以可以以所选择的地址减小的方向执行搜索目标描述符的操作。
因为读取描述符2与目标描述符100不同,所以可以将读取描述符2与弹出描述符1进行比较。因为弹出描述符1小于读取描述符2,所以可以将包括读取描述符2和作为先前地址的第六地址的描述符信息存储在写入队列中。可以将与作为描述符队列中的所选择的地址的第五地址相对应的描述符2更新为作为弹出描述符的1。
参照图7F,可以将所选择的地址从第五地址减小到第四地址。先前地址可以是第五地址。可以读取与所选择的地址相对应的描述符5。可以确定读取描述符5是否与目标描述符100匹配。因为读取描述符5与目标描述符100不匹配,所以可以以所选择的地址减小的方向执行搜索目标描述符的操作。
因为读取描述符5与目标描述符100不同,所以可以将读取描述符5与弹出描述符1进行比较。因为弹出描述符1小于读取描述符5,所以包括读取描述符5和作为先前地址的第五地址的描述符信息需要存储在写入队列中。但是,因为写入队列已满,所以描述符信息可能不会存储在写入队列中。因此,与作为描述符队列中的所选择的地址的第四地址相对应的描述符5可能不会被更新为作为弹出描述符的1。
参照图7G,可以将所选择的地址从第四地址减小到第三地址。先前地址可以是第四地址。可以读取与所选择的地址相对应的描述符10。可以确定读取描述符10是否与目标描述符100匹配。因为读取描述符10与目标描述符100不匹配,所以可以以所选择的地址减小的方向执行搜索目标描述符的操作。
因为读取描述符10与目标描述符100不同,所以可以将读取描述符10与弹出描述符1进行比较。因为弹出描述符1小于读取描述符10,所以包括读取描述符4和作为先前地址的第四地址的描述符信息需要存储在写入队列中。但是,因为写入队列已满,所以描述符信息可能不会存储在写入队列中。因此,与作为描述符队列中的所选择的地址的第三地址相对应的描述符10可能不会被更新为作为弹出描述符的1。
参照图7H,所选择的地址可以从第三地址减小到第二地址。先前地址可以是第三地址。可以读取与所选择的地址相对应的描述符7。可以确定读取描述符7是否与目标描述符100匹配。因为读取描述符7与目标描述符100不匹配,所以可以以所选择的地址减小的方向执行搜索目标描述符的操作。
因为读取描述符7与目标描述符100不同,所以可以将读取描述符7与弹出描述符1进行比较。因为弹出描述符1小于读取描述符7,所以包括读取描述符7和作为先前地址的第三地址的描述符信息需要存储在写入队列中。但是,因为写入队列已满,所以描述符信息可能不会存储在写入队列中。因此,与作为描述符队列中的所选择的地址的第二地址相对应的描述符7可能不会被更新为作为弹出描述符的1。
参照图7I,可以将所选择的地址从第二地址减小到第一地址。先前地址可以是第二地址。可以读取与所选择的地址相对应的描述符3。可以确定读取描述符3是否与目标描述符100匹配。因为读取描述符3与目标描述符100不匹配,并且描述符队列中存储的所有描述符都处于读取状态,所以可以终止搜索目标描述符的操作。
因为读取描述符3与目标描述符100不同,所以可以将读取描述符3与弹出描述符1进行比较。因为弹出描述符1小于读取描述符3,所以包括读取描述符3和作为先前地址的第二地址的描述符信息需要存储在写入队列中。但是,因为写入队列已满,所以描述符信息可能不会存储在写入队列中。因此,与作为描述符队列中的所选择的地址的第一地址相对应的描述符3可能不会被更新为作为弹出描述符的1。
参照图7J,尽管搜索目标描述符的操作已经终止,但是存在写入队列中存储的描述符信息,从而可以基于写入队列中存储的描述符信息来更新描述符队列。因此,与描述符队列中的第七地址相对应的描述符1可以被更新为描述符13。
参照图7K,尽管搜索目标描述符的操作已经终止,但是存在写入队列中存储的描述符信息,从而可以基于写入队列中存储的描述符信息来更新描述符队列。因此,与描述符队列中的第六地址相对应的描述符1可以被更新为描述符2。
图8是图示在映射搜索操作之后的描述符排序操作的示图。
图8示出通过执行参照图5A至图5I描述的正向映射搜索操作而获得的描述符队列以及通过执行参照图7A至图7K描述的反向映射搜索操作而获得的描述符队列。
可以理解的是,在已经以正向执行一次映射搜索操作之后,分别对应于第一地址和第二地址的描述符以升序排列。此后,可以理解的是,在已经以反向执行一次映射搜索操作之后,分别对应于第五地址、第六地址和第七地址的描述符以升序排序。换言之,随着重复执行映射搜索操作,描述符队列中存储的描述符以升序排列。因此,可以减少以根据目标描述符和参考描述符之间的比较结果所确定的搜索方向来搜索目标描述符所花费的时间。
在各个实施例中,当重复执行映射搜索操作时,可以以降序对描述符队列中存储的描述符进行排序。
图9是示出根据实施例的存储器控制器200的操作的流程图。
参照图9,在步骤S901中,存储器控制器200可以基于从主机300接收到的逻辑地址来确定目标描述符。目标描述符可以是指示包括逻辑地址的映射段的索引。在实施例中,可以基于逻辑地址值的一部分来确定目标描述符。
在步骤S903中,存储器控制器200可以结合在描述符队列中存储的描述符之中搜索目标描述符来对描述符队列中存储的描述符进行重新排序。
在实施例中,因为描述符被重新排序作为对目标描述符的搜索的一部分,所以可以减少对描述符队列中存储的描述符进行排序所需的时间,并且还可以减少搜索后续描述符所花费的时间。
图10是详细示出图9的存储器控制器200的操作的流程图。
参照图10,在步骤S1001中,存储器控制器200可以确定目标描述符是否大于参考描述符。作为确定的结果,如果目标描述符大于参考描述符,则该进程可以进行到步骤S1005。如果目标描述符小于或等于参考描述符,则该进程可以进行到步骤S1003。
在步骤S1003中,存储器控制器200可以以正向搜索目标描述符,在搜索目标描述符的过程中对描述符队列中存储的描述符进行重新排序。然后,存储器控制器200可以终止该进程。
在步骤S1005中,存储器控制器200可以以反向搜索目标描述符,在搜索目标描述符的过程中对描述符队列中存储的描述符进行重新排序。然后,存储器控制器200可以终止该进程。
图11是示出图10的正向搜索操作S1003的流程图。
参照图11,在步骤S1101中,存储器控制器200可以将映射缓冲器的多个地址中的起始地址设置为所选择的地址。
在步骤S1103中,存储器控制器200可以读取与所选择的地址相对应的描述符。
在步骤S1105中,存储器控制器200可以确定读取描述符是否与目标描述符匹配。作为确定的结果,如果读取描述符与目标描述符匹配,则该进程可以进行到步骤S1107。如果读取描述符与目标描述符不匹配,则该进程可以进行到步骤S1109。
在步骤S1107中,存储器控制器200可以基于写入队列中存储的描述符信息来更新描述符队列,然后可以终止该进程。
在步骤S1109中,存储器控制器200可以对描述符队列中存储的描述符进行重新排序。
在步骤S1111中,存储器控制器200可以确定所选择的地址是否是映射缓冲器的多个地址中的最后的地址。作为确定的结果,如果所选择的地址是最后的地址,则该进程可以终止。如果所选择的地址不是最后的地址,则该进程可以进行到步骤S1113。
在步骤S1113中,存储器控制器200可以增加所选择的地址,然后返回到步骤S1103。
图12是示出图11的步骤S1109的流程图。
参照图12,在步骤S1201中,存储器控制器200可以确定是否已经设置了弹出描述符。当执行正向搜索操作时,可以将弹出描述符设置为从描述符队列读取的一个或多个描述符的最大值。作为确定的结果,如果还没有设置弹出描述符,则该进程可以进行到步骤S1203。如果已经设置了弹出描述符,则该进程可以进行到步骤S1205。
在步骤S1203中,存储器控制器200可以将读取描述符设置为弹出描述符,然后可以终止该进程。
在步骤S1205中,存储器控制器200可以确定弹出描述符是否大于读取描述符。作为确定的结果,如果弹出描述符大于读取描述符,则该进程可以进行到步骤S1207。如果弹出描述符小于读取描述符,则该进程可以进行到步骤S1213。
在步骤S1207中,存储器控制器200可以确定写入队列是否已满。作为确定的结果,如果写入队列已满,则该进程可以终止。如果写入队列未满,则该进程可以进行到步骤S1209。
在步骤S1209中,存储器控制器200可以将与描述符队列中的所选择的地址相对应的描述符更新为弹出描述符。
在步骤S1211中,存储器控制器200可以将包括读取描述符和先前地址的描述符信息存储在写入队列中,然后可以终止该进程。
在步骤S1213中,可以将弹出描述符更新为读取描述符。
在步骤S1215中,可以基于写入队列中存储的描述符信息来更新描述符队列,然后可以终止该进程。
图13是示出图10的反向搜索操作S1005的流程图。
参照图13,在步骤S1301中,存储器控制器200可以将映射缓冲器的多个地址中的最后的地址设置为所选择的地址。
在步骤S1303中,存储器控制器200可以读取与所选择的地址相对应的描述符。
在步骤S1305中,存储器控制器200可以确定读取描述符是否与目标描述符匹配。作为确定的结果,如果读取描述符与目标描述符匹配,则该进程可以进行到步骤S1307。如果读取描述符与目标描述符不匹配,则该进程可以进行到步骤S1309。
在步骤S1307中,存储器控制器200可以基于写入队列中存储的描述符信息来更新描述符队列,然后可以终止该进程。
在步骤S1309中,存储器控制器200可以对描述符队列中存储的描述符进行重新排序。
在步骤S1311中,存储器控制器200可以确定所选择的地址是否是映射缓冲器的多个地址中的起始地址。作为确定的结果,如果所选择的地址是起始地址,则该进程可以终止。如果所选择的地址不是最后的地址,则该进程可以进行到步骤S1313。
在步骤S1313中,存储器控制器200可以减小所选择的地址,然后返回到步骤S1303。
图14是示出图13的步骤S1109的流程图。
参照图14,在步骤S1401中,存储器控制器200可以确定是否已经设置了弹出描述符。当执行反向搜索操作时,可以将弹出描述符设置为从描述符队列读取的一个或多个描述符的最小值。作为确定的结果,如果还没有设置弹出描述符,则该进程可以进行到步骤S1403。如果已经设置了弹出描述符,则该进程可以进行到步骤S1405。
在步骤S1403中,存储器控制器200可以将读取描述符设置为弹出描述符,然后可以终止该进程。
在步骤S1405中,存储器控制器200可以确定弹出描述符是否小于读取描述符。作为确定的结果,如果弹出描述符小于读取描述符,则该进程可以进行到步骤S1407。如果弹出描述符大于读取描述符,则该进程可以进行到步骤S1413。
在步骤S1407中,存储器控制器200可以确定写入队列是否已满。作为确定的结果,如果写入队列已满,则该进程可以终止。如果写入队列未满,则该进程可以进行到步骤S1409。
在步骤S1409中,存储器控制器200可以将与描述符队列中的所选择的地址相对应的描述符更新为弹出描述符。
在步骤S1411中,存储器控制器200可以将包括读取描述符和先前地址的描述符信息存储在写入队列中,然后可以终止该进程。
在步骤S1413中,可以将弹出描述符更新为读取描述符。
在步骤S1415中,可以基于写入队列中存储的描述符信息来更新描述符队列,然后可以终止该过程。
图15是示出图1的存储器控制器的示例的示图。
参照图15,存储器控制器1000联接到主机和存储器装置。响应于来自主机的请求,存储器控制器1000可以访问存储器装置。例如,存储器控制器1000可以控制存储器装置的写入操作、读取操作、擦除操作和后台操作。存储器控制器1000可以在存储器装置和主机之间提供接口。存储器控制器1000可以驱动用于控制存储器装置的固件。
存储器控制器1000可以包括处理器1010、存储器缓冲器1020、错误校正码(ECC)电路1030、主机接口1040、缓冲器控制器1050、存储器接口1060和总线1070。
总线1070可以在存储器控制器1000的组件之间提供通道。
处理器1010可以控制存储器控制器1000的全部操作,并且可执行逻辑运算。处理器1010可以通过主机接口1040与外部主机通信,并且通过存储器接口1060与存储器装置通信。另外,处理器1010可以通过缓冲器控制器1050与存储器缓冲器1020通信。处理器1010可以通过使用存储器缓冲器1020作为工作存储器、高速缓存储器或缓冲存储器来控制存储装置的操作。
处理器1010可以执行闪存转换层(FTL)的功能。处理器1010可以通过FTL将由主机提供的逻辑块地址(LBA)转换为物理块地址(PBA)。FTL可以接收LBA并且使用映射表将LBA转换成PBA。根据映射的单位,可以使用使用FTL的不同地址映射方法。代表性地址映射方法包括页面映射方法、块映射方法和混合映射方法。
处理器1010可以使从主机接收到的数据随机化。例如,处理器1010可以使用随机化种子来使从主机接收到的数据随机化。可以将经随机化的数据作为待被存储的数据提供到存储器装置,并且可以将经随机化的数据编程到存储器单元阵列。
在读取操作期间,处理器1010可以对从存储器装置100接收到的数据进行去随机化。例如,处理器1010可以使用去随机化种子来对从存储器装置接收到的数据进行去随机化。可以将经去随机化的数据输出到主机。
在实施例中,处理器1010可以驱动软件或固件以执行随机化操作或去随机化操作。
存储器缓冲器1020可以用作处理器1010的工作存储器、高速缓存储器或缓冲存储器。存储器缓冲器1020可以存储待由处理器1010运行的代码和命令。存储器缓冲器1020可以存储待由处理器1010处理的数据。存储器缓冲器1020可以包括静态RAM(SRAM)或动态RAM(DRAM)。
ECC电路1030可以执行错误校正。ECC电路1030可以基于待通过存储器接口1060写入到存储器装置的数据来执行ECC编码操作。可以通过存储器接口1060将经ECC编码的数据传输到存储器装置。ECC电路1030可以对通过存储器接口1060从存储器装置接收到的数据执行ECC解码操作。例如,ECC电路1030可以作为存储器接口1060的组件而被包括在存储器接口1060中。
主机接口1040可在处理器1010的控制下与外部主机通信。主机接口1040可以使用诸如以下的各种通信方法中的至少一种来执行通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和/或低负载DIMM(LRDIMM)通信方法。
缓冲器控制器1050可以在处理器1010的控制下控制存储器缓冲器1020。
存储器接口1060可以在处理器1010的控制下与存储器装置通信。存储器接口1060可以通过通道与存储器装置通信命令、地址和数据。
在另一实施例中,存储器控制器1000可以既不包括存储器缓冲器1020也不包括缓冲器控制器1050。相反,这些组件中的每一个可以设置在存储器控制器1000的外部,或者这些组件中一个或两个的功能可以分布到存储器控制器1000内的其他(多个)组件。
例如,处理器1010可以使用代码来控制存储器控制器1000的操作。处理器1010可以从存储器控制器1000中提供的非易失性存储器装置(例如,只读存储器)中加载代码。可选地,处理器1010可以通过存储器接口1060从存储器装置加载代码。
例如,存储器控制器1000的总线1070可以分为控制总线和数据总线。数据总线可以在存储器控制器1000中传输数据。控制总线可以在存储器控制器1000中传输诸如命令和地址的控制信息。数据总线和控制总线可以分开,使得相互既不干扰也不影响。数据总线可以联接到主机接口1040、缓冲器控制器1050、ECC电路1030和存储器接口1060。控制总线可以联接到主机接口1040、处理器1010、缓冲器控制器1050、存储器缓冲器1020和存储器接口1060。
图16是示出根据本公开的实施例应用存储装置的存储卡系统2000的框图。
参照图16,存储卡系统2000可以包括存储器控制器2100、存储器装置2200和连接器2300。
存储器控制器2100联接到存储器装置2200。存储器控制器2100可以访问存储器装置2200。例如,存储器控制器2100可控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100可以在存储器装置2200和主机之间提供接口。存储器控制器2100可以驱动用于控制存储器装置2200的固件。存储器控制器2100可以以与参照图1描述的存储器控制器200的相同的方式配置。
在实施例中,存储器控制器2100可包括诸如随机存取存储器(RAM)、处理器、主机接口、存储器接口和ECC电路的组件。
存储器控制器2100可以通过连接器2300与外部装置通信。存储器控制器2100可以基于特定通信协议与外部装置(例如,主机)通信。在实施例中,存储器控制器2100可以通过诸如以下的各种通信协议中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCI-e或PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和/或高速非易失性存储器(NVMe)协议。在实施例中,连接器2300可以由上述各种通信协议中的至少一种来定义。
在实施例中,存储器装置2200可以被实施为诸如以下的各种非易失性存储器装置中的任意一种:电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和/或自旋转移力矩磁性RAM(STT-MRAM)。
在实施例中,存储器控制器2100和存储器装置2200可集成到单个半导体装置中以形成诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)、紧凑式闪存(CF)卡、智能媒体卡(例如,SM和SMC)、记忆棒、多媒体卡(例如,MMC、RS-MMC或微型MMC)、安全数字(SD)卡(例如,SD、迷你SD、微型SD或SDHC)或通用闪存(UFS)。
图17是示出根据本公开的实施例应用存储装置的固态驱动器(SSD)系统3000的框图。
参照图17,SSD系统3000可以包括主机3100和SSD 3200。SSD 3200可以通过信号连接器3001与主机3100交换信号SIG,并且可以通过电源连接器3002接收电力PWR。SSD 3200可以包括SSD控制器3210、多个闪速存储器3221至322n、辅助电源3230和缓冲存储器3240。
在实施例中,SSD控制器3210可以执行上文参照图1描述的存储器控制器200的功能。
SSD控制器3210可以响应于从主机3100接收到的信号SIG来控制多个闪速存储器3221至322n。在实施例中,信号SIG可以基于主机3100和SSD 3200之间的接口。例如,信号SIG可以由诸如以下的各种接口中的至少一种来定义:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCI-e或PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和/或高速非易失性存储器(NVMe)接口。
辅助电源3230可以通过电源连接器3002联接到主机3100。可以由主机3100来对辅助电源3230供应电力PWR,并且可以由电力PWR对辅助电源3230进行充电。当来自主机3100的电力供应不平稳时,辅助电源3230可以供应SSD 3200的电力。在实施例中,辅助电源3230可以设置在SSD 3200内或SSD 3200外部。例如,辅助电源3230可以设置在主板中,并且可以向SSD 3200供应辅助电力。
缓冲存储器3240用作SSD 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收到的数据或从多个闪速存储器3221至322n接收到的数据,或者可以临时存储闪速存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可包括诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的各种易失性存储器或诸如FRAM、ReRAM、STT-MRAM和/或PRAM的非易失性存储器中的任意一种。
图18是示出根据本公开的实施例应用存储装置的用户系统4000的框图。
参照图18,用户系统4000可以包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以运行用户系统4000中包括的组件、操作系统(OS)或用户程序。在实施例中,应用处理器4100可以包括用于控制用户系统4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可被设置为片上系统(SoC)。
存储器模块4200可用作用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓存储器。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3SDRAM、LPDDR SDARM、LPDDR2 SDRAM和LPDDR3 SDRAM的易失性RAM,或者诸如PRAM、ReRAM、MRAM和/或FRAM的非易失性RAM。在实施例中,应用处理器4100和存储器模块4200可以基于堆叠封装(POP)被封装,并且然后可以被设置为单个半导体封装。
网络模块4300可以与外部装置通信。例如,网络模块4300可以支持无线通信,诸如码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、WiMAX、WLAN、UWB、蓝牙或Wi-Fi通信。在实施例中,网络模块4300可以包括在应用处理器4100中。
存储模块4400可存储数据。例如,存储模块4400可以存储从应用处理器4100接收到的数据。可选地,存储模块4400可以将存储模块4400中存储的数据传输到应用处理器4100。在实施例中,存储模块4400可以被实施为非易失性半导体存储器装置,诸如相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、NAND闪速存储器、NOR闪速存储器或具有三维(3D)结构的NAND闪速存储器。在实施例中,存储模块4400可以被设置为诸如存储卡的可移动存储介质(即,可移动驱动器),或者用户系统4000的外部驱动器。
在实施例中,存储模块4400可以包括多个非易失性存储器装置,非易失性存储器装置中的每一个可以以与上面参照图1描述的存储器装置相同的方式操作。存储模块4400可以以与上面参照图1描述的存储装置50相同的方式操作。
用户接口4500可包括用于将数据或指令输入到应用处理器4100或用于将数据输出到外部装置的接口。在实施例中,用户接口4500可以包括诸如以下的各种用户输入接口中的任意一种:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和/或压电装置。用户接口4500可以进一步包括诸如以下的各种用户输出接口中的任意一种:液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和/或监控器。
如上所述,本公开的各个实施例可以提供一种具有改进的映射搜索性能的存储器系统、存储器控制器以及操作该存储器控制器的方法。
本文已经公开了各个实施例,并且尽管采用了特定术语,但是仅在一般和描述性意义上使用和解释该特定术语,而不是出于限制的目的。在某些情况下,如本领域普通技术人员在提交本申请时显而易见的,结合特定实施例描述的特征、特点和/或元件可以单独使用或与结合其他实施例描述的特征、特点和/或元件组合使用,除非另有明确说明。因此,本领域技术人员将理解的是,在不脱离所附权利要求中阐述的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。
Claims (20)
1.一种存储器控制器,包括:
映射缓冲器,存储从存储器装置加载的映射段;
描述符队列,基于所述映射缓冲器的多个地址来存储与所述映射段相对应的描述符;以及
描述符控制器,基于从主机接收到的逻辑地址在所存储的描述符之中搜索目标描述符,并且在搜索所述目标描述符的同时对所存储的描述符进行重新排序。
2.根据权利要求1所述的存储器控制器,其中所述描述符控制器从所存储的描述符之中读取与所述多个地址中的所选择的地址相对应的描述符,并且搜索所述目标描述符,改变所选择的地址直到读取描述符与所述目标描述符匹配为止。
3.根据权利要求2所述的存储器控制器,其中所述描述符控制器基于所述目标描述符和参考描述符之间的比较结果,确定搜索所述目标描述符的搜索方向。
4.根据权利要求3所述的存储器控制器,其中,当所述目标描述符大于所述参考描述符时,所述描述符控制器在所述描述符队列中以所选择的地址减小的方向搜索所述目标描述符。
5.根据权利要求3所述的存储器控制器,其中,当所述目标描述符小于或等于所述参考描述符时,所述描述符控制器在所述描述符队列中以所选择的地址增加的方向搜索所述目标描述符。
6.根据权利要求3所述的存储器控制器,其中将所述参考描述符确定为与所述存储器装置中存储的多个映射段相对应的描述符之中的平均值或中值。
7.根据权利要求1所述的存储器控制器,其中所述描述符控制器基于所述多个地址以升序对所存储的描述符进行重新排序。
8.根据权利要求1所述的存储器控制器,其中所述描述符控制器基于所述多个地址以降序对所存储的描述符进行重新排序。
9.根据权利要求2所述的存储器控制器,进一步包括:写入队列,存储用于对所存储的描述符进行重新排序的描述符信息,并且
其中所述描述符控制器将从所述描述符队列中读取的一个或多个描述符的最小值或最大值设置为弹出描述符。
10.根据权利要求9所述的存储器控制器,其中,当所述读取描述符与所述目标描述符不同时,所述描述符控制器基于所述读取描述符和所述弹出描述符之间的比较结果,将包括所述读取描述符和所选择的地址的先前地址的所述描述符信息存储在所述写入队列中,并且将与所述描述符队列中的所选择的地址相对应的描述符更新为所述弹出描述符。
11.根据权利要求9所述的存储器控制器,其中,当所述读取描述符与所述目标描述符不同时,所述描述符控制器根据所述读取描述符和所述弹出描述符之间的比较结果,基于先前存储在所述写入队列中的描述符信息来更新所述描述符队列。
12.一种操作存储器控制器的方法,所述方法包括:
将从存储器装置加载的映射段顺序地存储在映射缓冲器中;
基于所述映射缓冲器的多个地址,将与各个所加载的映射段相对应的描述符存储在描述符队列中;
基于从主机接收到的逻辑地址,在所存储的描述符之中搜索目标描述符;并且
在搜索所述目标描述符的同时对所存储的描述符进行重新排序。
13.根据权利要求12所述的方法,其中搜索所述目标描述符包括:从所存储的描述符之中读取与所述多个地址中的所选择的地址相对应的描述符,并且搜索所述目标描述符,改变所选择的地址直到读取描述符与所述目标描述符匹配为止。
14.根据权利要求13所述的方法,进一步包括:基于所述目标描述符和参考描述符之间的比较结果,确定搜索所述目标描述符的搜索方向。
15.根据权利要求14所述的方法,其中确定所述搜索方向包括:响应于所述目标描述符大于所述参考描述符的结果,将所述搜索方向确定为所述描述符队列中的所述多个地址中的所选择的地址减小的方向。
16.根据权利要求14所述的方法,其中确定所述搜索方向包括:响应于所述目标描述符小于或等于所述参考描述符的结果,将所述搜索方向确定为所述描述符队列中的所述多个地址中的所选择的地址增加的方向。
17.根据权利要求14所述的方法,其中将所述参考描述符确定为与所述存储器装置中存储的多个映射段相对应的描述符之中的平均值或中值。
18.根据权利要求12所述的方法,其中对所述描述符进行重新排序包括:基于所述多个地址以升序对所存储的描述符进行重新排序。
19.根据权利要求12所述的方法,其中对所述描述符进行重新排序包括:基于所述多个地址以降序对所存储的描述符进行重新排序。
20.一种存储器系统,包括:
存储器装置;以及
控制器,包括映射缓冲器和描述符队列,所述控制器:
将多个映射段加载到所述映射缓冲器中;
将针对所加载的映射段的描述符存储在所述描述符队列中;
在所存储的描述符之中搜索针对来自主机的逻辑地址的目标描述符;并且
基于所述目标描述符的搜索结果,对所述描述符队列中所存储的描述符进行重新排序,以按照设定顺序布置所述描述符。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0035952 | 2020-03-25 | ||
KR1020200035952A KR20210119630A (ko) | 2020-03-25 | 2020-03-25 | 메모리 컨트롤러 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448501A true CN113448501A (zh) | 2021-09-28 |
Family
ID=77808501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010871987.XA Withdrawn CN113448501A (zh) | 2020-03-25 | 2020-08-26 | 存储器系统、存储器控制器及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11537515B2 (zh) |
KR (1) | KR20210119630A (zh) |
CN (1) | CN113448501A (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6355636A (ja) * | 1986-08-27 | 1988-03-10 | Hitachi Ltd | デ−タ処理システム |
US6032207A (en) * | 1996-12-23 | 2000-02-29 | Bull Hn Information Systems Inc. | Search mechanism for a queue system |
US7159073B2 (en) * | 2003-03-27 | 2007-01-02 | Stmicroelectronics, Inc. | Data storage and caching architecture |
US9110594B2 (en) * | 2009-11-04 | 2015-08-18 | Seagate Technology Llc | File management system for devices containing solid-state media |
US8655892B2 (en) * | 2010-09-29 | 2014-02-18 | International Business Machines Corporation | Data reorganization |
US10126964B2 (en) | 2017-03-24 | 2018-11-13 | Seagate Technology Llc | Hardware based map acceleration using forward and reverse cache tables |
US10409518B1 (en) * | 2017-04-20 | 2019-09-10 | Seagate Technology Llc | Reordered local data deduplication in storage devices |
KR102606239B1 (ko) | 2017-12-26 | 2023-11-27 | 삼성전자주식회사 | 힙 정렬 기반의 타이밍 컨트롤러, 이를 구비하는 모뎀 칩, 및 집적 회로 |
-
2020
- 2020-03-25 KR KR1020200035952A patent/KR20210119630A/ko active Search and Examination
- 2020-08-05 US US16/985,790 patent/US11537515B2/en active Active
- 2020-08-26 CN CN202010871987.XA patent/CN113448501A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US11537515B2 (en) | 2022-12-27 |
KR20210119630A (ko) | 2021-10-06 |
US20210303464A1 (en) | 2021-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389720B (zh) | 存储装置及其操作方法 | |
CN112905502A (zh) | 存储装置及其操作方法 | |
CN111105832B (zh) | 存储装置和操作存储装置的方法 | |
CN111352855B (zh) | 具有提高的映射更新速度的存储装置及其操作方法 | |
CN111444115B (zh) | 存储装置及其操作方法 | |
CN114267392A (zh) | 存储器控制器、存储装置及其操作方法 | |
CN111984186A (zh) | 装置及其操作方法 | |
CN111580744B (zh) | 存储器控制器及其操作方法 | |
CN112988049A (zh) | 存储装置及其操作方法 | |
CN111752856A (zh) | 存储器控制器及其操作方法 | |
CN114201414A (zh) | 存储装置及其操作方法 | |
CN114115708A (zh) | 存储装置及其操作方法 | |
CN111105836A (zh) | 存储装置及其操作方法 | |
CN114860622A (zh) | 存储装置及操作存储装置的方法 | |
CN111177020A (zh) | 存储装置及其操作方法 | |
CN113535079A (zh) | 存储器控制器以及具有存储器控制器的存储装置 | |
CN111338978B (zh) | 存储装置以及操作存储装置的方法 | |
CN114398295A (zh) | 存储装置及其操作方法 | |
CN111435333B (zh) | 存储装置及其操作方法 | |
CN113223573A (zh) | 存储器控制器及其操作方法 | |
CN112783432A (zh) | 存储装置和其操作方法 | |
CN111338979A (zh) | 存储器控制器及其操作方法 | |
CN114356209A (zh) | 存储装置及其操作方法 | |
CN111506515B (zh) | 存储器控制器及其操作方法 | |
CN113448892A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210928 |