CN116931812A - 因应主机丢弃命令的数据存取方法和存储介质和装置 - Google Patents

因应主机丢弃命令的数据存取方法和存储介质和装置 Download PDF

Info

Publication number
CN116931812A
CN116931812A CN202210335258.1A CN202210335258A CN116931812A CN 116931812 A CN116931812 A CN 116931812A CN 202210335258 A CN202210335258 A CN 202210335258A CN 116931812 A CN116931812 A CN 116931812A
Authority
CN
China
Prior art keywords
discard
host
extended
address
command
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
CN202210335258.1A
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.)
Silicon Motion Inc
Original Assignee
Silicon Motion 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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to CN202210335258.1A priority Critical patent/CN116931812A/zh
Priority to US18/110,747 priority patent/US20230315622A1/en
Publication of CN116931812A publication Critical patent/CN116931812A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

一种因应主机丢弃命令的数据存取方法、计算机可读取存储介质和装置。该方法包含:在随机存取存储器中配置空间给扩展式丢弃表,包含多个项目,而每个项目记载已经丢弃的使用者数据的逻辑地址;从主机端接收主机丢弃命令,指出不再使用的使用者数据的第一逻辑地址;新增包含第一逻辑地址的新项目至扩展式丢弃表;以及设定性能引擎中的开始地址寄存器和结束地址寄存器,用于重新定义随机存取存储器中存储的扩展式丢弃表的地址范围。通过性能引擎的设置和扩展式丢弃表的使用,避免处理单元耗费过多的运算资源来判断主机写入命令所要写入的使用者数据的逻辑地址或者主机读取命令所要读取的使用者数据的逻辑地址是否落入之前已经丢弃的逻辑地址区间。

Description

因应主机丢弃命令的数据存取方法和存储介质和装置
技术领域
本发明涉及存储装置,特别是,本发明涉及一种因应主机丢弃命令的数据存取方法、计算机可读取存储介质及装置。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。为了提升闪存控制器的执行效能,本发明提出一种因应主机丢弃命令的数据存取方法、计算机可读取存储介质及装置。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺失,实为有待解决的问题。
本发明涉及一种因应主机丢弃命令的数据存取方法,由处理单元执行,包含:在随机存取存储器中配置空间给扩展式丢弃表,包含多个项目,而每个所述项目记载已经丢弃的使用者数据的逻辑地址;从主机端接收主机丢弃命令,指出不再使用的使用者数据的第一逻辑地址;新增包含所述第一逻辑地址的新项目至所述扩展式丢弃表;以及设定性能引擎中的开始地址寄存器和结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围,使得所述性能引擎通过在所述随机存取存储器中的所述地址范围搜索所述扩展式丢弃表以判断特定逻辑地址的使用者数据是否已经不再使用。
本发明还涉及一种计算机可读取存储介质,包含计算机程序。当处理单元加载及执行计算机程序时,实施如上所示的因应主机丢弃命令的数据存取方法。
本发明还涉及一种因应主机丢弃命令的数据存取装置,包含:随机存取存储器;性能引擎;和处理单元。随机存取存储器用于配置空间给扩展式丢弃表,其包含多个项目,而每个所述项目记载已经丢弃的使用者数据的逻辑地址。性能引擎包含开始地址寄存器和结束地址寄存器,用于定义所述随机存取存储器中存储所述扩展式丢弃表的地址范围。处理单元用于从主机端接收主机丢弃命令,其指出不再使用的使用者数据的第一逻辑地址;新增包含所述第一逻辑地址的新项目至所述扩展式丢弃表;以及设定所述性能引擎中的所述开始地址寄存器和所述结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围,使得所述性能引擎通过在所述随机存取存储器中的所述地址范围搜索所述扩展式丢弃表以判断特定逻辑地址的使用者数据是否已经不再使用。
上述实施例的优点之一,通过性能引擎的设置和扩展式丢弃表的使用,避免处理单元耗费过多的运算资源来判断主机写入命令所要写入的使用者数据的逻辑地址或者主机读取命令所要读取的使用者数据的逻辑地址是否落入之前已经丢弃的逻辑地址区间。
本发明的其他优点将配合以下的说明和说明书附图进行更详细的解说。
附图说明
此处所说明的说明书附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的系统架构图。
图2为依据本发明实施例的闪存模块的示意图。
图3为依据本发明实施例的性能引擎和随机存取存储器的框图。
图4为依据本发明实施例的执行主机丢弃命令的方法流程图。
图5为依据本发明实施例的主机写入命令执行后的扩展式丢弃表的更新方法的流程图。
图6为依据本发明实施例的执行主机读取命令的方法流程图。
图7为依据本发明实施例的执行主机丢弃命令的方法流程图。
图8为依据本发明实施例的主机写入命令执行后的丢弃命令和扩展式丢弃表的更新方法的流程图。
图9为依据本发明实施例的执行主机读取命令的方法流程图。
其中,附图标记:
10 电子装置
110 主机端
130 闪存控制器
131 主机接口
132 总线架构
134 处理单元
136 随机存取存储器
137 性能引擎
138 直接存储器存取控制器
139 闪存接口
150 闪存模块
151 接口
153#0~153#15 NAND闪存单元
CH#0~CH#3 通道
CE#0~CE#3 启动信号
310 搜索电路
322 开始地址寄存器
324 结束地址寄存器
330#0~330#7 目标寄存器
350#0~350#7 结果寄存器
S410~S430 方法步骤
S510~S540 方法步骤
S610~S640 方法步骤
S710~S720 方法步骤
S810~S820 方法步骤
S910~S924 方法步骤
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用在本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、元件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。使用于描述组件之间关系的其他语词也可类似方式解读,例如“介于”相对于“直接介于”,或者是“邻接”相对于“直接邻接”等等。
参考图1。电子装置10包含:主机端(Host Side)110、闪存控制器130及闪存模块150,并且闪存控制器130及闪存模块150可合称为装置端(Device Side)。电子装置10可实施于个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数码相机、数码摄影机等电子产品之中。主机端110与闪存控制器130的主机接口(Host Interface)131可以通用串行总线(Universal Serial Bus,USB)、先进技术附件(Advanced TechnologyAttachment,ATA)、串行先进技术附件(Serial Advanced Technology Attachment,SATA)、快速外设组件互联(Peripheral Component Interconnect Express,PCI-E)、通用闪存存储(Universal Flash Storage,UFS)、嵌入式多媒体卡(Embedded Multi-Media Card,eMMC)等通信协议彼此通信。闪存控制器130的闪存接口(Flash Interface)139与闪存模块150可以双倍数据率(Double Data Rate,DDR)通信协议彼此通信,例如,开放NAND闪存接口(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDR Toggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,单处理器、具有并行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收主机命令,例如读取命令(Read Command)、写入命令(Write Command)、抹除命令(Erase Command)等,调度并执行这些命令。闪存控制器130还包含随机存取存储器(Random Access Memory,RAM)136,可实施为动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)或上述两者的结合,用于配置空间作为数据缓冲区,存储从主机端110读取并即将写入闪存模块150的用户数据(也可称为主机数据),以及从闪存模块150读取并即将输出给主机端110的用户数据。随机存取存储器136还可存储执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(Host-to-Flash,H2F Table)、闪存-主机对照表(Flash-to-Host,F2H Table)等。闪存接口139包含NAND闪存控制器(NAND Flash Controller,NFC),提供存取闪存模块150时需要的功能,例如命令串行器(Command Sequencer)、低密度奇偶校验(Low Density Parity Check,LDPC)等。
在一些实施例中,处理单元134可服从eMMC的规范,例如于2019年1月发表的《EMBEDDED MULTI-MEDIA CARD(e·MMC),ELECTRICAL STANDARD(5.1)》的第6.6.12节,通过主机接口131从主机端110接收丢弃命令(Discard Command)。在另一些实施例中,处理单元134可服从UFS的规范,例如于2020年1月发表的UNIVERSAL FLASH STORAGE(UFS),Version3.1的第11.3.26节,通过主机接口131从主机端110接收解除映射命令(UNMAP Command)。如果解除映射命令中的单元描述符(Unit Descriptor)的参数”bProvisioningType”设为”02h”时,代表这是一个丢弃命令。主机端110可发送如上所述的主机丢弃命令给闪存控制器130,用以指出不再使用的使用者数据的逻辑地址,例如以主页面编号(Host PageNumber)、逻辑区块地址(Logical Block Address,LBA)等方式表示。不同于主机抹除命令,闪存控制器130于执行主机丢弃命令时,不需要将用以存储指定逻辑地址的数据的存储单元进行物理的抹除,只需要标记此逻辑地址的数据已经不存在。在合适的时候,闪存控制器130执行垃圾回收程序来搜集相应于标记的逻辑地址的物理存储单元并进行抹除。
闪存控制器130中可配置总线架构(Bus Architecture)132,用于让组件之间彼此耦接以传递数据、地址、控制信号等,这些组件包含:主机接口131、处理单元134、RAM 136、直接存储器存取(Direct Memory Access,DMA)控制器138、闪存接口139等。于一些实施例中,主机接口131、处理单元134、RAM 136、DMA控制器138与闪存接口139可通过单一总线彼此耦接。于另一些实施例中,闪存控制器130中可配置高速总线,用于让处理单元134、DMA控制器138与RAM 136彼此耦接,并且配置低速总线,用于让处理单元134、DMA控制器138、主机接口131与闪存接口139彼此耦接。DMA控制器138可依据处理单元134的指令,通过总线架构132在组件间迁移数据,例如,将主机接口131或闪存接口139中特定数据缓存器(DataBuffer)的数据搬到RAM136中的特定地址,将RAM 136中特定地址的数据搬到将主机接口131或闪存接口139中的特定数据缓存器等。
总线包含并行的物理线,连接闪存控制器130中两个以上的元件。总线是一种共享的传输媒体,在任意的时间上,只能有两个装置可以使用这些线来彼此通信,用于传递数据。数据及控制信号能够在元件间分别沿数据和控制线进行双向传播,但另一方面,地址信号只能沿地址线进行单向传播。例如,当处理单元134想要读取RAM 136的特定地址上的数据时,处理单元134在地址线上传送此地址给RAM 136。接着,此地址的数据会在数据线上回复给处理单元134。为了完成数据读取操作,控制信号会使用控制线进行传递。
闪存模块150提供大量的存储空间,通常是数百个千兆字节(Gigabytes,GB),甚至是多个万亿字节(Terabytes,TB),用于存储大量的用户数据,例如高分辨率图片、影片等。闪存模块150中包含控制电路以及存储器数组,存储器数组中的存储单元可在抹除后配置为单层式单元(Single Level Cells,SLCs)、多层式单元(Multiple Level Cells,MLCs)、三层式单元(Triple Level Cells,TLCs)、四层式单元(Quad-Level Cells,QLCs)或上述的任意组合。处理单元134通过闪存接口139写入用户数据到闪存模块150中的指定地址(目的地址),以及从闪存模块150中的指定地址(来源地址)读取用户数据。闪存接口139使用多个电子信号来协调闪存控制器130与闪存模块150间的数据与命令传递,包含数据线(DataLine)、时钟信号(Clock Signal)与控制信号(Control Signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(Chip Enable,CE)、地址提取启动(Address Latch Enable,ALE)、命令提取启动(Command Latch Enable,CLE)、写入启动(Write Enable,WE)等控制信号。
参考图2,闪存模块150中的接口151可包含四个输入输出通道(I/Ochannels,以下简称通道)CH#0至CH#3,每一个通道连接四个NAND闪存单元,例如,信道CH#0连接NAND闪存单元153#0、153#4、153#8及153#12,依此类推。每个NAND闪存单元可封装为独立的芯片(die)。闪存接口139可通过接口151发出启动信号CE#0至CE#3中的一个来启动NAND闪存单元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接着以并行的方式从启动的NAND闪存单元读取用户数据,或者写入用户数据至启动的NAND闪存单元。
在先前的一些实施方式中,闪存控制器130可在RAM 136中配置空间给丢弃队列(Discard Queue)。丢弃队列包含多个节点,而每个节点用于存储一个主机丢弃命令所指示的丢弃使用者数据的逻辑地址区间的信息。表1显示示例的丢弃队列:
表1
节点编号 开始地址 长度
0 P#100 32
1 P#200 4
2 P#300 64
3 P#500 8
例如,每个节点存储一个丢弃命令所指示的开始主页面编号及长度。如上所述的第0至第3个示例节点包含如下的信息,先前接收到的4个丢弃命令分别指示将主页面P#100~P#131、P#200~P#203、P#300~P#363和P#500~P#507的使用者数据丢弃。然而,当处理单元134每次通过主机接口131从主机端110接收到主机读取命令时,都需要耗费运算资源搜索丢弃队列以判断主机读取命令所要读取的使用者数据是否已经丢弃。如果读取的使用者数据已经丢弃,则处理单元134通过主机接口131回复主机端110错误信息,或者是虚假值(Dummy Value)。当处理单元134每次通过主机接口131从主机端110接收到主机写入命令时,也需要耗费运算资源搜索丢弃队列以判断主机写入命令所要写入的使用者数据的逻辑地址是否落入之前已经丢弃的逻辑地址区间。
为了降低处理单元134的负担以提升闪存控制器130的整体效能,闪存控制器130可在RAM 136中配置空间给扩展式丢弃表(Expanded Discard Table),并使用专用的性能引擎137来搜索扩展式丢弃表。扩展式丢弃表可包含1024个项目,每个项目记载已经丢弃的使用者数据的逻辑地址,或者空值(NULL value)。需要注意的是,本领域技术人员可依据系统的需要在RAM 136中配置更多或更少的空间来存储扩展式丢弃表,本发明并不限于在扩展式丢弃表只能包含1024个项目。表2显示示例的扩展式丢弃表:
表2
对比于表1,概念上来说,表1中的第0个项目的信息可扩展成为表2中的第0个到第31个项目,分别记录主页面编号P#100到P#131;表1中的第1个项目的信息可扩展成为表2中的第32个到第35个项目,分别记录主页面编号P#200到P#203,依此类推。处理单元134在依据主机放弃命令中携带的信息新增项目到扩展式丢弃表时可进行排序,让逻辑地址能够以升幂或降幂的方式排列,以利专用的性能引擎137进行搜寻。
参考图3。性能引擎137可包含开始地址寄存器322和结束地址寄存器324,用于让处理单元134定义扩展式丢弃表在RAM 136中的地址区间。由于扩展式丢弃表所存储的项目数量是可变动的,因此每当更新完扩展式丢弃表的内容,处理单元134就要重新设定开始地址寄存器322和结束地址寄存器324,用于让搜索电路310能够在开始地址寄存器322和结束地址寄存器324所规范的RAM 136的地址区间进行搜索。例如,因应表2的内容,开始地址寄存器322存储存储器地址“ExpDiscardTable_start”,结束地址寄存器324存储ExpDiscardTable_star+107。性能引擎137可包含八个目标寄存器330#0~330#7,用于让处理单元134指示搜索电路310在扩展式丢弃表中搜索最多八个主页面编号。性能引擎137可包含八个结果寄存器350#0~350#7,用于让搜索电路310可分别存储对应于目标寄存器330#0~330#7的搜索结果。例如,结果寄存器350#0存储目标寄存器330#0所指示的主页面编号的搜索结果,结果寄存器350#1存储目标寄存器330#1所指示的主页面编号的搜索结果,依此类推。举例来说,结果寄存器可为16比特的寄存器,其中的第15比特存储是否命中的信息,如果命中时,第14至第0比特存储扩展式丢弃表中命中的项目编号。处理单元134可读取结果寄存器350#0~350#7中任意一个的值来获取相应目标寄存器中的主页面编号是否出现在扩展式丢弃表中的信息,以及,如果命中的话,此主页面编号存在扩展式丢弃表中的哪个项目。需要注意的是,本领域技术人员可依据系统的需要在性能引擎137中配置更多或更少对的目标寄存器和结果寄存器,本发明并不限于在性能引擎137中只能包含八对的目标寄存器和结果寄存器。所属技术领域人员可使用习知的电路来实作搜索电路310,用于让搜索电路310在扩展式丢弃表中完成线性搜索(Linear Search)、二元搜索(BinarySearch)、指数搜索(Exponential Search)、费波南西搜索(Fibonacci Search)等。
在一些实施例中,处理单元134和性能引擎137之间可使用专用导线连接,用于让处理单元134通过专用导线设定开始地址寄存器322、结束地址寄存器324和目标寄存器330#0~330#7,并且从结果寄存器350#0~350#7读取搜索结果。
在另一些实施例中,处理单元134可通过共享的总线架构132设定性能引擎137中的开始地址寄存器322、结束地址寄存器324和目标寄存器330#0~330#7,并且从性能引擎137中的结果寄存器350#0~350#7读取搜索结果。
在一些实施例中,性能引擎137和RAM 136之间可使用专用导线连接,用于让性能引擎137通过专用导线读取RAM 136中特定地址的值。
在另一些实施例中,性能引擎137可通过共享的总线架构132和DAM控制器138读取RAM 136中特定地址的值。
因应扩展式丢弃表和性能引擎137的技术方案,本发明实施例提出一种主机丢弃命令的执行方法,由处理单元134载入和执行相关固件或软件指令时实施。此方法反复执行,用于处理从主机端110接收到的主机丢弃命令。参考图4,详细步骤说明如下:
步骤S410:通过主机接口131从主机端110接收第一个(下一个)主机丢弃命令,主机丢弃命令用以指出不再使用的使用者数据的逻辑地址。
步骤S420:根据主机丢弃命令所指示的丢弃使用者数据的逻辑地址更新RAM 136中存储的扩展式丢弃表的内容。更新后的扩展式丢弃表的项目会依据逻辑地址做升幂或降幂的排序。
步骤S430:根据更新后的扩展式丢弃表设定性能引擎137中的开始地址寄存器322和结束地址寄存器324。
假设在一个循环中的步骤S420执行前,扩展式丢弃表如表2所示:在处理单元134接收到指示丢弃主页面P#400~P#403的使用者数据时(步骤S410),表2的扩展式丢弃表可更新成为下表3所示(步骤S420):
表3
接着,处理单元134将结束地址寄存器324设定为ExpDiscardTable_star+111(步骤S430)。
因应扩展式丢弃表和性能引擎137的技术方案,本发明实施例提出一种主机写入命令执行后的扩展式丢弃表的更新方法,由处理单元134载入和执行相关固件或软件指令时实施。此方法反复执行,用于在每个主机写入命令执行后适应性地更新扩展式丢弃表。参考图5,详细步骤说明如下:
步骤S510:执行第一个(下一个)主机写入命令,用于将指定逻辑地址的使用者数据通过闪存接口139写入闪存模块150。
步骤S520:判断写入使用者数据的逻辑地址是否出现在扩展式丢弃表中。如果是,则流程继续进行步骤S530的处理;否则,流程继续进行步骤S510的处理。处理单元134可将逻辑地址设定到性能引擎137中的目标寄存器330#0~330#7,并且驱动性能引擎137搜索扩展式丢弃表以判断这些逻辑地址是否出现在扩展式丢弃表中。需要注意的是,处理单元134设定目标寄存器330#0~330#7和驱动性能引擎137后,就可以接着处理其他的任务。一段默认的时间后,处理单元134检查性能引擎137中的结果寄存器350#0~350#7以判断这些逻辑地址是否出现在扩展式丢弃表中。当所有的逻辑地址都判断完成后,处理单元134才继续进行下个步骤的处理。
步骤S530:删除出现在扩展式丢弃表中的逻辑地址的相应项目。
步骤S540:根据更新后的扩展式丢弃表设定性能引擎137中的结束地址寄存器324。
假设在一个循环中的步骤S510执行前,扩展式丢弃表如表2所示:在处理单元134执行完主页面P#200~P#203的使用者数据的主机写入命令时(步骤S510),处理单元134将逻辑地址P#200~P#203设定到性能引擎137中的目标寄存器330#0~330#3,并且驱动性能引擎137搜索扩展式丢弃表以判断这些逻辑地址是否出现在扩展式丢弃表中(步骤S520)。当发现逻辑地址P#200~P#203都出现在扩展式丢弃表时(步骤S520中“是”的路径),处理单元134可更新扩展式丢弃表成为下表4所示(步骤S530):
表4
接着,处理单元134将结束地址寄存器324设定为ExpDiscardTable_star+103(步骤S540)。
因应扩展式丢弃表和性能引擎137的技术方案,本发明实施例提出一种主机读取命令的执行方法,由处理单元134载入和执行相关固件或软件指令时实施。此方法反复执行,用于在每个主机读取命令执行时根据扩展式丢弃表的内容选择性地回复虚假数据或者真实的使用者数据给主机端110。参考图6,详细步骤说明如下:
步骤S610:提取第一个(下一个)主机写入命令,指示闪存控制器130读取指定逻辑地址的使用者数据。
步骤S620:判断欲读取的使用者数据的任何逻辑地址是否出现在扩展式丢弃表中。如果是,则流程继续进行步骤S630的处理;否则,流程继续进行步骤S640的处理。处理单元134可将逻辑地址设定到性能引擎137中的目标寄存器330#0~330#7,并且驱动性能引擎137搜索扩展式丢弃表以判断这些逻辑地址是否出现在扩展式丢弃表中。需要注意的是,处理单元134设定目标寄存器330#0~330#7和驱动性能引擎137后,就可以接着处理其他的任务。一段默认的时间后,处理单元134检查性能引擎137中的结果寄存器350#0~350#7以判断这些逻辑地址是否出现在扩展式丢弃表中。当所有的逻辑地址都判断完成后,处理单元134才继续进行下个步骤的处理。
步骤S632:对于出现在扩展式丢弃表中的逻辑地址,驱动主机接口131回复虚假值给主机端110。
步骤S634:驱动闪存接口139从闪存模块150读取其他没有出现在扩展式丢弃表中的逻辑地址的使用者数据,并且驱动主机接口131回复读出的使用者数据给主机端110。
步骤S640:驱动闪存接口139从闪存模块150读取指定逻辑地址的使用者数据,并且驱动主机接口131回复读出的使用者数据给主机端110。
在一些实施例中,闪存控制器130可在RAM 136中配置空间给扩展式丢弃表和丢弃队列。如果一个主机丢弃命令所指示的丢弃使用者数据的逻辑地址长度超过或者等于指定数目时(例如,超过或者等于32时),将主机丢弃命令中携带的信息存储在丢弃队列中的一个节点。如果一个主机丢弃命令所指示的丢弃使用者数据的逻辑地址长度低于指定数目时,将主机丢弃命令中携带的信息存储在扩展式丢弃表中的一个或者多个连续项目。例如,当先前接收到的4个丢弃命令分别指示将主页面P#100~P#131、P#200~P#203、P#300~P#363和P#500~P#507的使用者数据丢弃时,这4个丢弃命令所指示的信息会记录在如下表5所示的丢弃队列和如下表6所示的扩展式丢弃表:
表5
节点编号 开始地址 长度
0 P#100 32
1 P#300 64
表6
因应丢弃队列、扩展式丢弃表和性能引擎137的技术方案,本发明实施例提出一种主机丢弃命令的执行方法,由处理单元134载入和执行相关固件或软件指令时实施。此方法反复执行,用于处理从主机端110接收到的主机丢弃命令。参考图7,其和图4的不同在于图7在步骤S410之后插入步骤S710的判断,并且在判断成立后加上步骤S720的处理,详细说明如下:
步骤S710:判断主机丢弃命令所指示丢弃的使用者数据的逻辑地址长度是否超过或者等于指定数目(例如,32)。如果是,则流程继续进行步骤S720的处理;否则,流程继续进行步骤S420的处理。
步骤S720:根据主机丢弃命令所指示的丢弃使用者数据的逻辑地址更新RAM 136中存储的丢弃队列的内容。
图7中的步骤S410至S430的技术细节可参考图4的相应说明,为求简明不再赘述。
因应丢弃队列、扩展式丢弃表和性能引擎137的技术方案,本发明实施例提出一种主机写入命令执行后的丢弃队列和扩展式丢弃表的更新方法,由处理单元134载入和执行相关固件或软件指令时实施。此方法反复执行,用于在每个主机写入命令执行后适应性地更新丢弃队列和扩展式丢弃表。参考图8,其和图5的不同在于,图8在步骤S510之后新增了步骤S810的判断,并且在判断成立后加上步骤S820的处理。详细说明如下:
步骤S810:判断写入使用者数据的逻辑地址是否出现在丢弃队列中。如果是,则流程继续进行步骤S820的处理;否则,流程继续进行步骤S510的处理。
步骤S820:更新丢弃队列中的内容已反映主机写入命令执行结果。假设在一个循环中的步骤S510执行前,丢弃队列如表5所示:在处理单元134执行完主页面P#100~P#131的使用者数据的主机写入命令时(步骤S510),处理单元134可删除丢弃队列中的第0个节点而成为下表7所示(步骤S820):
表7
节点编号 开始地址 长度
0 P#300 64
图8中的步骤S510、S530至S430的技术细节可参考图5的相应说明,为求简明不再赘述。在这里需要注意的是,在性能引擎137的协助下,步骤S520至S540的操作可与步骤S810至S820的操作并行执行。
因应丢弃队列、扩展式丢弃表和性能引擎137的技术方案,本发明实施例提出一种主机读取命令的执行方法,由处理单元134载入和执行相关固件或软件指令时实施。此方法反复执行,用于在每个主机读取命令执行时根据丢弃队列和扩展式丢弃表的内容选择性地回复虚假数据或者真实的使用者数据给主机端110。参考图9,其和图6的不同在于其分别以步骤S910、S922、S924取代图6的步骤S620、S632、S634,详细说明如下:
步骤S910:判断欲读取的使用者数据的逻辑地址是否出现在扩展式丢弃表和丢弃队列的至少一者之中。如果是,则流程继续进行步骤S922的处理;否则,流程继续进行步骤S640的处理。处理单元134可将逻辑地址设定到性能引擎137中的目标寄存器330#0~330#7,并且驱动性能引擎137搜索扩展式丢弃表以判断这些逻辑地址是否出现在扩展式丢弃表中。需要注意的是,处理单元134设定目标寄存器330#0~330#7和驱动性能引擎137后,就可以接着搜索丢弃队列,用于判断这些逻辑地址是否出现在丢弃队列中。一段默认的时间后,处理单元134检查性能引擎137中的结果寄存器350#0~350#7以判断这些逻辑地址是否出现在扩展式丢弃表中。当所有的逻辑地址都判断完成后,处理单元134才继续进行下个步骤的处理。
步骤S922:对于出现在扩展式丢弃表或者丢弃队列中的每个逻辑地址,驱动主机接口131回复虚假值给主机端110。
步骤S924:驱动闪存接口139从闪存模块150读取其他没有出现在扩展式丢弃表和丢弃队列中的逻辑地址的使用者数据,并且驱动主机接口131回复读出的使用者数据给主机端110。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(Firmware Translation Layer,FTL)、特定硬件的驱动程序等。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD-ROM、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1至图3中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图4至图9的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,本领域技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (15)

1.一种因应主机丢弃命令的数据存取方法,由处理单元执行,其特征在于,所述因应主机丢弃命令的数据存取方法包括:
在随机存取存储器中配置空间给扩展式丢弃表,其中,所述扩展式丢弃表包含多个项目,每个所述项目记载已经丢弃的使用者数据的逻辑地址;
从主机端接收主机丢弃命令,其中,所述主机丢弃命令指出不再使用的使用者数据的第一逻辑地址;
新增包含所述第一逻辑地址的新项目至所述扩展式丢弃表;以及
设定性能引擎中的开始地址寄存器和结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围,使得所述性能引擎通过在所述随机存取存储器中的所述地址范围搜索所述扩展式丢弃表以判断特定逻辑地址的使用者数据是否已经不再使用。
2.如权利要求1所述的因应主机丢弃命令的数据存取方法,其特征在于,所述扩展式丢弃表的多个所述项目依据所述逻辑地址以升幂或降幂的方式排列。
3.如权利要求1所述的因应主机丢弃命令的数据存取方法,其特征在于,包括:
执行主机写入命令以写入第二逻辑地址的使用者数据至闪存模块;以及
当所述第二逻辑地址出现在所述扩展式丢弃表之中时,从所述扩展式丢弃表删除包含所述第二逻辑地址的项目,并且依据更新后的所述扩展式丢弃表的内容设定所述性能引擎中的所述结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围。
4.如权利要求1所述的因应主机丢弃命令的数据存取方法,其特征在于,包括:
从主机端接收主机读取命令,其中,所述主机读取命令指示读取第三逻辑地址的使用者数据;以及
当所述第三逻辑地址出现在所述扩展式丢弃表之中时,回复虚假数据给所述主机端。
5.如权利要求1所述的因应主机丢弃命令的数据存取方法,其特征在于,包括:
在随机存取存储器中配置空间给丢弃队列,其中,所述丢弃队列包含多个节点,每个所述节点用于存储已经丢弃的使用者数据的逻辑地址区间;
判断所述主机丢弃命令所指出的不再使用的使用者数据的所述第一逻辑地址的数量是否超过或者等于指定数目;
当所述第一逻辑地址的所述数量超过或者等于所述指定数目时,新增包含所述第一逻辑地址的新项目至所述扩展式丢弃表,以及设定所述性能引擎中的所述开始地址寄存器和所述结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围;以及
当所述第一逻辑地址的所述数量低于所述指定数目时,新增包含所述第一逻辑地址的新节点至所述丢弃队列。
6.如权利要求5所述的因应主机丢弃命令的数据存取方法,其特征在于,包括:
执行所述主机端发送的主机写入命令,其中,所述主机写入命令指示写入第四逻辑地址的使用者数据到闪存模块;
当所述第四逻辑地址出现在所述扩展式丢弃表中时,从所述扩展式丢弃表删除所述第四逻辑地址的相应项目,并且依据更新后的扩展式丢弃表的内容设定所述性能引擎中的所述结束地址寄存器,用于定义所述随机存取存储器中的新地址范围;以及
当所述第四逻辑地址出现在所述丢弃队列中时,更新所述丢弃队列中的内容以反映所述主机写入命令的执行结果。
7.如权利要求5所述的因应主机丢弃命令的数据存取方法,其特征在于,包括:
从主机端接收主机读取命令,其中,所述主机读取命令指示读取第五逻辑地址的使用者数据;以及
当所述第五逻辑地址出现在所述扩展式丢弃表或者所述丢弃队列之中时,回复虚假数据给所述主机端。
8.一种计算机可读取存储介质,用于存储能够被处理单元执行的计算机程序,其特征在于,所述计算机程序被所述处理单元执行时实现如权利要求1至7中任一项所述的因应主机丢弃命令的数据存取方法。
9.一种因应主机丢弃命令的数据存取装置,其特征在于,包括:
随机存取存储器,用于配置空间给扩展式丢弃表,其中,所述扩展式丢弃表包含多个项目,每个所述项目记载已经丢弃的使用者数据的逻辑地址;
性能引擎,包含开始地址寄存器和结束地址寄存器,用于定义所述随机存取存储器中存储所述扩展式丢弃表的地址范围;以及
处理单元,耦接所述随机存取存储器和所述性能引擎,用于从主机端接收主机丢弃命令,其中,所述主机丢弃命令指出不再使用的使用者数据的第一逻辑地址;新增包含所述第一逻辑地址的新项目至所述扩展式丢弃表;以及设定所述性能引擎中的所述开始地址寄存器和所述结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围,使得所述性能引擎通过在所述随机存取存储器中的所述地址范围搜索所述扩展式丢弃表以判断特定逻辑地址的使用者数据是否已经不再使用。
10.如权利要求9所述的因应主机丢弃命令的数据存取装置,其特征在于,所述扩展式丢弃表的多个所述项目依据所述逻辑地址以升幂或降幂的方式排列。
11.如权利要求9所述的因应主机丢弃命令的数据存取装置,其特征在于,所述处理单元执行主机写入命令以写入第二逻辑地址的使用者数据至闪存模块;以及当所述第二逻辑地址出现在所述扩展式丢弃表之中时,从所述扩展式丢弃表删除包含所述第二逻辑地址的项目,并且依据更新后的所述扩展式丢弃表的内容设定所述性能引擎中的所述结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围。
12.如权利要求9所述的因应主机丢弃命令的数据存取装置,其特征在于,所述处理单元从主机端接收主机读取命令,其中,所述主机读取命令指示读取第三逻辑地址的使用者数据;以及当所述第三逻辑地址出现在所述扩展式丢弃表之中时,回复虚假数据给所述主机端。
13.如权利要求9所述的因应主机丢弃命令的数据存取装置,其特征在于,
所述随机存取存储器配置空间给丢弃队列,其中,所述丢弃队列包含多个节点,每个所述节点用于存储已经丢弃的使用者数据的逻辑地址区间,
所述处理单元判断所述主机丢弃命令所指出的不再使用的使用者数据的所述第一逻辑地址的数量是否超过或者等于指定数目;当所述第一逻辑地址的所述数量超过或者等于所述指定数目时,新增包含所述第一逻辑地址的新项目至所述扩展式丢弃表,以及设定所述性能引擎中的所述开始地址寄存器和所述结束地址寄存器,用于重新定义所述随机存取存储器中存储的所述扩展式丢弃表的地址范围;以及当所述第一逻辑地址的所述数量低于所述指定数目时,新增包含所述第一逻辑地址的新节点至所述丢弃队列。
14.如权利要求13所述的因应主机丢弃命令的数据存取装置,其特征在于,所述处理单元执行所述主机端发送的主机写入命令,其中,所述主机写入命令指示写入第四逻辑地址的使用者数据到闪存模块;当所述第四逻辑地址出现在所述扩展式丢弃表中时,从所述扩展式丢弃表删除所述第四逻辑地址的相应项目,并且依据更新后的扩展式丢弃表的内容设定所述性能引擎中的所述结束地址寄存器,用于定义所述随机存取存储器中的新地址范围;以及当所述第四逻辑地址出现在所述丢弃队列中时,更新所述丢弃队列中的内容以反映所述主机写入命令的执行结果。
15.如权利要求13所述的因应主机丢弃命令的数据存取装置,其特征在于,所述处理单元从主机端接收主机读取命令,其中,所述主机读取命令指示读取第五逻辑地址的使用者数据;以及当所述第五逻辑地址出现在所述扩展式丢弃表或者所述丢弃队列之中时,回复虚假数据给所述主机端。
CN202210335258.1A 2022-03-31 2022-03-31 因应主机丢弃命令的数据存取方法和存储介质和装置 Pending CN116931812A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210335258.1A CN116931812A (zh) 2022-03-31 2022-03-31 因应主机丢弃命令的数据存取方法和存储介质和装置
US18/110,747 US20230315622A1 (en) 2022-03-31 2023-02-16 Method and non-transitory computer-readable storage medium and apparatus for data access in response to host discard commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210335258.1A CN116931812A (zh) 2022-03-31 2022-03-31 因应主机丢弃命令的数据存取方法和存储介质和装置

Publications (1)

Publication Number Publication Date
CN116931812A true CN116931812A (zh) 2023-10-24

Family

ID=88194428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210335258.1A Pending CN116931812A (zh) 2022-03-31 2022-03-31 因应主机丢弃命令的数据存取方法和存储介质和装置

Country Status (2)

Country Link
US (1) US20230315622A1 (zh)
CN (1) CN116931812A (zh)

Also Published As

Publication number Publication date
US20230315622A1 (en) 2023-10-05

Similar Documents

Publication Publication Date Title
KR101993704B1 (ko) 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법
US10725902B2 (en) Methods for scheduling read commands and apparatuses using the same
KR20200025184A (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
CN107797755B (zh) 固态硬盘系统的原子写入方法以及使用该方法的装置
CN112214240B (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
CN111796759A (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
CN115113799A (zh) 主机命令的执行方法及装置
KR20210083448A (ko) 비지도 학습 기법을 사용하는 스토리지 장치 및 그것의 메모리 관리 방법
US20180275915A1 (en) Methods for regular and garbage-collection data access and apparatuses using the same
CN107797756B (zh) 固态硬盘系统的优先写入方法以及使用该方法的装置
CN113448487B (zh) 写入闪存管理表的计算机可读取存储介质、方法及装置
CN113495850B (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
TWI749490B (zh) 寫入閃存管理表的電腦程式產品及方法及裝置
CN116931812A (zh) 因应主机丢弃命令的数据存取方法和存储介质和装置
TWI810876B (zh) 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置
CN114625307A (zh) 计算机可读存储介质、闪存芯片的数据读取方法及装置
CN113778317A (zh) 计算机可读取存储介质、调度主机命令的方法及装置
CN108572920B (zh) 避免读取扰动的数据搬移方法以及使用该方法的装置
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
US20230161713A1 (en) Method and non-transitory computer-readable storage medium and apparatus for updating host-to-flash address mapping table
KR102583244B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20230305711A1 (en) Memory controller and data processing method for processing disordered read-out data
TWI758745B (zh) 排程主機命令執行的電腦程式產品及方法及裝置
TWI822516B (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