CN117909252A - 存储介质、调度和执行主机数据更新命令的方法及装置 - Google Patents

存储介质、调度和执行主机数据更新命令的方法及装置 Download PDF

Info

Publication number
CN117909252A
CN117909252A CN202211239107.2A CN202211239107A CN117909252A CN 117909252 A CN117909252 A CN 117909252A CN 202211239107 A CN202211239107 A CN 202211239107A CN 117909252 A CN117909252 A CN 117909252A
Authority
CN
China
Prior art keywords
host
data update
host data
command
commands
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
CN202211239107.2A
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 CN202211239107.2A priority Critical patent/CN117909252A/zh
Priority to US18/230,391 priority patent/US20240118833A1/en
Publication of CN117909252A publication Critical patent/CN117909252A/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/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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]

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种计算机可读取存储介质、调度和执行主机数据更新命令的方法及装置,其中该方法由处理单元执行,包含:依据从主机端接收的用于更新数据的主机命令的类型和参数,产生第三主机数据更新命令,并且标记为第一类型的主机数据更新命令;响应第三主机数据更新命令中的第三逻辑地址相同于第一队列中的多个第一主机数据更新命令中的一个的第一逻辑地址的情况,将重复的第一逻辑地址从匹配的第一主机数据更新命令中移除;响应第三主机数据更新命令中的第三逻辑地址相同于第二队列中的多个第二主机数据更新命令中的一个的第二逻辑地址的情况,将重复的第二逻辑地址从匹配的第二主机数据更新命令中移除;以及将第三主机更新命令推入第一队列。

Description

存储介质、调度和执行主机数据更新命令的方法及装置
技术领域
本发明涉及存储装置,特别涉及一种计算机可读取存储介质、调度和执行主机数据更新命令的方法及装置。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的组字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、擦除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中擦除操作的最小数据块)。然而,为了提升闪存模块的数据更新效能,主机数据更新命令的执行顺序可能和主机端发出的用于更新数据的相应主机命令的顺序不同,因而可能发生脏写入(Dirty Write)的情况。因此.本发明提出一种计算机可读取存储介质、调度和执行主机数据更新命令的方法及装置,用于避免脏写入的错误。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。
本发明涉及一种调度和执行主机数据更新命令的方法,由处理单元执行,包含:依据从主机端接收的用于更新数据的主机命令的类型和参数,产生第三主机数据更新命令,并且标记为第一类型的主机数据更新命令;响应第三主机数据更新命令中的第三逻辑地址相同于第一队列中的多个第一主机数据更新命令中的一个的第一逻辑地址的情况,将重复的第一逻辑地址从匹配的第一主机数据更新命令中移除;响应第三主机数据更新命令中的第三逻辑地址相同于第二队列中的多个第二主机数据更新命令中的一个的第二逻辑地址的情况,将重复的第二逻辑地址从匹配的第二主机数据更新命令中移除;以及将第三主机更新命令推入第一队列。
本发明还涉及一种计算机可读取存储介质,用于存储能够被处理单元加载并执行的程序代码,并且所述程序代码被所述处理单元执行时实现如上所述的调度和执行主机数据更新命令的方法。
本发明还涉及一种调度和执行主机数据更新命令的装置,包含:随机存取存储器,配置空间给第一队列和第二队列;以及处理单元,耦接随机存取存储器。处理单元用于依据从主机端接收的用于更新数据的主机命令的类型和参数,产生第三主机数据更新命令,并且标记为第一类型的主机数据更新命令;响应第三主机数据更新命令中的第三逻辑地址相同于第一队列中的多个第一主机数据更新命令中的一个的第一逻辑地址的情况,将重复的第一逻辑地址从匹配的第一主机数据更新命令中移除;响应第三主机数据更新命令中的第三逻辑地址相同于第二队列中的多个第二主机数据更新命令中的一个的第二逻辑地址的情况,将重复的第二逻辑地址从匹配的第二主机数据更新命令中移除;以及将第三主机更新命令推入第一队列。
上述实施例的优点之一,通过如上所述的调度和执行主机数据更新命令的方法,可避免因为主机数据更新命令的执行顺序和主机端发出的用于更新数据的相应主机命令的顺序不同,而发生脏写入的错误。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的系统架构图。
图2为依据本发明实施例的闪存模块的示意图。
图3为依据本发明实施例的随机写入命令队列和连续写入命令队列的示意图。
图4为依据本发明实施例的调度和执行主机数据更新命令方法的流程图。
图5为依据本发明实施例的调度和执行主机数据更新命令方法的流程图。
附图标记说明:
10 电子装置
110 主机端
130 闪存控制器
131 主机接口
132 总线
134 处理单元
136 随机存取存储器
138 直接存储器存取控制器
139 闪存接口
150:151 接口
153#0~153#15 NAND闪存单元
CH#0~CH#3 通道
CE#0~CE#3 启动信号
310 顺序更新命令队列
330 随机更新命令队列
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、操作处理、部件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、操作处理、部件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连接、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图1。电子装置10包含主机端(Host Side)110、闪存控制器130及闪存模块150,并且闪存控制器130及闪存模块150可合称为装置端(Device Side)。电子装置10可实施于个人电脑、笔记本电脑(Laptop PC)、平板电脑、移动电话、数字相机、数字摄像机、智能电视、智能电冰箱等电子产品之中。主机端110与闪存控制器130的主机接口(HostInterface)137可以通用串行总线(Universal Serial Bus,USB)、高级技术附件(advancedtechnology attachment,ATA)、串行高级技术附件(serial advanced technologyattachment,SATA)、快速外设元件互联(peripheral component interconnect express,PCI-E)、通用闪存存储(Universal Flash Storage,UFS)、嵌入式多媒体卡(EmbeddedMulti-Media Card,eMMC)等通信协议彼此通信。闪存控制器130的闪存接口(FlashInterface)139与闪存模块150可以双倍数据率(Double Data Rate,DDR)通信协议彼此通信,例如,开放NAND闪存(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDRToggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,单一处理器、具并行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收主机命令,例如写入命令(Write Command)、丢弃命令(DiscardCommand)、擦除命令(Erase Command)等,依据主机命令的类型和其中携带参数产生主机数据更新命令(Host Data-update Command),调度并执行这些命令。闪存控制器130另包含随机存取存储器(Random Access Memory,RAM)136,可实施为动态随机存取存储器(DynamicRandom Access Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)或上述两者的结合,用于配置空间作为数据缓冲区,存储从主机端110读取并即将写入闪存模块150的使用者数据(也可称为主机数据),以及从闪存模块150读取并即将输出给主机端110的使用者数据。随机存取存储器136另可存储执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(Host-to-Flash/H2FTable)、闪存-主机对照表(Flash-to-Host/F2H Table)等。闪存接口139包含NAND闪存控制器(NAND Flash Controller,NFC),提供存取闪存模块150时需要的功能,例如命令串行器(Command Sequencer)、低密度奇偶校验(Low Density Parity Check,LDPC)等。
闪存控制器130中可配置总线架构(Bus Architecture)132,用于让元件之间彼此耦接以传递数据、地址、控制信号等,这些元件包含主机接口131、处理单元134、RAM 136、直接存储器存取(Direct Memory Access,DMA)控制器138、闪存接口139等。DMA控制器138可依据处理单元134的指令,通过总线架构132在元件间迁移数据,例如,将主机接口131或闪存接口139中特定数据缓存器(Data Buffer)的数据搬到RAM 136中的特定地址,将RAM136中特定地址的数据搬到将主机接口131或闪存接口139中的特定数据缓存器等。
闪存模块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可将数据更新的长而连续的主机命令和短而分散的主机命令分开调度及执行。闪存控制器130依据主机命令的类型和其中携带参数产生主机数据更新命令,并且主机数据更新命令可表示为以下的数据结构:{SN,LA,Len,PA},其中,SN代表主机命令的序号,LA代表开始逻辑地址,Len代表逻辑地址的长度,PA代表开始物理地址。主机命令的序号可代表主机命令到达闪存控制器130的时间顺序,数字越小代表越早到达闪存控制器130。逻辑地址可为逻辑区块地址(Logical Block Address,LBA)、主机页面编号(Host Page Number)等。一个逻辑区块地址可指向512K字节的数据,而一个主机页面可指向八个连续的逻辑区块地址(也就是4K字节)的数据。物理地址可包含通道编号、逻辑单位号(Logical Unit Number,LUN)、页面编号、区段编号,或者以上的任意组合的信息,能够让闪存接口139解译来和闪存模块150进行一系列的信号交互,完成特定的数据写入操作。当物理地址为全“0”(也就是空值NULL)时,代表此数据更新命令是根据主机丢弃命令或者主机擦除命令所产生的。当物理地址能够被闪存接口139解译出时,代表此数据更新命令是根据主机写入命令所产生的。举例来说,根据LBA#100~LBA#115的主机写入命令,可产生主机数据更新命令{1,100,16,PA={CH#0,LUN#1,P#0~P#1}},其中的物理地址可由闪存控制器130依据闪存模块150的物理设置和默认的规则来指派。根据LBA#100~LBA#115的主机丢弃或者擦除命令,可产生数据更新命令{2,100,16,PA=NULL}。
参考图3,RAM 136配置空间给顺序更新命令队列(Sequential-update CommandQueue,SCQ)310,用于依照到达闪存控制器130的时间顺序存储主机端110发送的顺序主机数据更新命令,例如逻辑区块地址长度(Logical Block Address,LBA Length)大于1的主机数据更新命令。RAM 136还配置空间给随机更新命令队列(Random-update CommandQueue,RCQ)330,用于依照到达闪存控制器130的时间顺序存储主机端110发送的随机主机数据更新命令,例如LBA长度等于1的主机数据更新命令。顺序更新命令队列310和随机更新命令队列330中的任何一个可存储数百或者数千笔的主机数据更新命令。顺序更新命令队列310和随机更新命令队列330可为循环式队列(Cyclical Queue),其操作基本原则是由结束位置(如指针T所指的位置)新增主机数据更新命令(可称为入列),并且由开始位置(如指针H所指的位置)移出主机数据更新命令(可称为出列)。也就是说,第一个新增至队列的命令,也将会是第一个被移出和处理的,符合先进先出(First-In First-Out,FIFO)的原则。
举例来说,处理单元134在执行固件转换层(Firmware Translation Layer,FTL)的程序代码时,完成如下的主机数据更新命令的产生和入列:首先,通过主机接口131依序收到5个主机写入命令:W1={LBA#200~215,D1};W2={LBA#300,D2}:W3={LBA#400~415,D3}:W4={LBA#300~315,D4}:W5={LBA#200}。主机写入命令W1指示写入逻辑地址LBA#200~215的数据D1,主机写入命令W2指示写入逻辑地址LBA#300的数据D2,主机写入命令W3指示写入逻辑地址LBA#400~415的数据D3,主机写入命令W4指示写入逻辑地址LBA#300~315的数据D4,主机写入命令W5指示写入逻辑地址LBA#200的数据D5。接着,分别为主机写入命令W1至W5产生主机数据更新命令DU1={1,200,16,PA#1};DU2={2,300,1,PA#2};DU3={3,400,16,PA#3};DU4={4,300,16,PA#4};DU5={5,200,1,PA#5}。经过更新类型的判断,依序将主机数据更新命令DU1、DU3、DU4(可称为顺序更新命令,Sequential Update Command,SUC)推入顺序更新命令队列310,将主机数据更新命令DU2、DU5(可称为随机更新命令,Random Update Command,RUC)推入随机更新命令队列330。
主机数据更新命令DU2={2,300,1,PA#2}和主机数据更新命令DU4={4,300,16,PA#4}中含有相同的逻辑地址LBA#300,而且DU2必须早于DU4被执行。主机数据更新命令DU1={1,200,16,PA#1}和主机数据更新命令DU5={5,200,1,PA#5}中含有相同的逻辑地址LBA#200,而且DU1必须早于DU5被执行。
在一些实施方式中,闪存控制器130可采取顺序更新优先(Sequential-updateFirst)的原则来移出和处理顺序更新命令队列310和随机更新命令队列330中的主机数据更新命令。也就是说,闪存控制器130先执行完主机数据更新命令DU1、DU3、DU4之后,再执行主机数据更新命令DU2、DU5。然而,因为DU2的执行晚于DU4,造成逻辑地址LBA#300的最终更新结果并不是主机端110期望的执行完主机数据更新命令DU4的结果,发生脏写入的情况。
在另一些实施方式中,闪存控制器130可采取随机更新(Random-update First)优先的原则来移出和处理顺序更新命令队列310和随机更新命令队列330中的主机数据更新命令。也就是说,闪存控制器130先执行完主机数据更新命令DU2、DU5之后,再执行主机数据更新命令DU1、DU3、DU4。然而,因为DU1的执行晚于DU5,造成逻辑地址LBA#200的最终更新结果并不是主机端110期望的执行完主机数据更新命令DU5的结果,发生脏写入的情况。
为了解决如上所述实施方式所产生的脏写入的问题,本发明实施例提出一种主机数据更新命令的调度机制。参考图4所示的方法流程图,此方法由处理单元134在加载和执行FTL时执行,不断地从主机端110接收数据更新的主机命令,根据主机命令的类型和其中携带的参数产生主机数据更新命令,并且使用顺序更新命令队列310和随机更新命令队列330来调度这些主机数据更新命令,并且使用默认的规则来执行这些主机数据更新命令。详细说明如下:
步骤S412:判断是否通过主机接口131从主机端110接收到数据更新的主机命令,例如主机写入、丢弃、擦除命令等。如果是,流程继续进行步骤S422的处理;否则,流程继续进行步骤S414的处理。
步骤S414:如果目前没有待处理的数据更新的主机命令时,等待一段默认的时间。
步骤S422:获取数据更新的主机命令的内容。
步骤S424:根据主机命令的类型和其中携带的参数产生主机数据更新命令,并且依据主机命令中携带的逻辑地址长度将此主机数据更新命令标记为顺序更新命令(SUC)或者随机更新命令(RUC)。主机数据更新命令的数据结构和产生细节,以及标记为SUC或者RUC的判断细节,可参考如上段落的说明,为求简明不再赘述。
步骤S432:判断此主机数据更新命令是否为SUC且SCQ 310已经满了,或者此主机数据更新命令中的逻辑地址是否已经存在于SCQ 310的其他主机数据更新命令之中。如果是,流程继续进行步骤S434的处理;否则,流程继续进行步骤S442的处理。
步骤S434:依序推出和执行SCQ 310中的所有SUC。例如,针对一个或多个写入数据的SUC,处理单元134可从RAM 136的缓冲区读取待写入的主机数据,驱动闪存接口139以将主机数据写入特定物理地址,接着,更新F2H表和/或H2F表中的相应记录以反映已执行的数据写入操作。针对一个或多个丢弃数据的SUC,处理单元134可从RAM 136的暂存H2F中删除特定逻辑地址的记录。针对一个或多个擦除数据的SUC,处理单元134可驱动闪存接口139以擦除特定物理地址,接着,更新H2F表中的相应记录以反映已执行的数据擦除操作。步骤S434可确保SCQ 310中具有全部或者部分相同逻辑地址的SUC的执行早于此主机数据更新命令的执行。
步骤S442:判断此主机数据更新命令是否为RUC且RCQ 330已经满了,或者此主机数据更新命令中的逻辑地址是否已经存在于RCQ 330的其他主机数据更新命令之中。如果是,流程继续进行步骤S444的处理;否则,流程继续进行步骤S452的处理。
步骤S444:依序推出和执行RCQ 330中的所有RUC。例如,针对一个或多个写入数据的RUC,处理单元134可从RAM 136的缓冲区读取待写入的主机数据,驱动闪存接口139以将主机数据写入特定物理地址,接着,更新F2H表和/或H2F表中的相应记录以反映已执行的数据写入操作。针对一个或多个丢弃数据的RUC,处理单元134可从RAM 136的暂存H2F中删除特定逻辑地址的记录。针对一个或多个擦除数据的RUC,处理单元134可驱动闪存接口139以擦除特定物理地址,接着,更新H2F表中的相应记录以反映已执行的数据擦除操作。步骤S434可确保RCQ 330中具有全部或者部分相同逻辑地址的RUC的执行早于此主机数据更新命令的执行。
步骤S452:判断此主机数据更新命令是否为SUC且其中的逻辑地址已经存在于RCQ330的其他主机数据更新命令之中,或者此主机数据更新命令是否为RUC且其中的逻辑地址已经存在于SCQ 310的其他主机数据更新命令之中。如果是,流程继续进行步骤S454的处理;否则,流程继续进行步骤S462的处理。
步骤S462:将此主机数据更新命令推入SCQ 310和RCQ 330中的相应一个。如果此主机数据更新命令为SUC,则推入SCQ 310。如果此主机数据更新命令为RUC,则推入RCQ330。
以下举实例来说明图4的方法执行。一开始,SCQ 310和RCQ 330为空的队列。
处理单元134在时间点t1收到主机写入命令W1={LBA#200~215,D1}(步骤S422),根据W1的内容产生主机更新命令DU1={1,200,16,PA#1}并标记为SUC(步骤S424)。因为三个判断都不符合,主机更新命令DU1={1,200,16,PA#1}推入SCQ 310,此时SCQ 310包含{DU1},而RCQ 330为空队列(步骤S462)。
处理单元134在时间点t2收到主机写入命令W2={LBA#300,D2}(步骤S422),根据W2的内容产生主机更新命令DU2={2,300,1,PA#2}并标记为RUC(步骤S424)。因为三个判断都不符合,主机更新命令DU2={2,300,1,PA#2}推入RCQ 330,此时SCQ 310包含{DU1},而RCQ 330包含{DU2}(步骤S462)。
处理单元134在时间点t3收到主机写入命令W3={LBA#400~415,D3}(步骤S422),根据W3的内容产生主机更新命令DU3={3,400,16,PA#3}并标记为SUC(步骤S424)。因为三个判断都不符合,主机更新命令DU3={3,400,16,PA#3}推入SCQ 310,此时SCQ 310包含{DU1,DU3},而RCQ 330包含{DU2}(步骤S462)。
处理单元134在时间点t4收到主机写入命令W4={LBA#300~315,D4}(步骤S422),根据W4的内容产生主机更新命令DU4={4,300,16,PA#4}并标记为SUC(步骤S424)。因为主机更新命令DU4中的逻辑地址LBA#300部分相同于RCQ 330中的DU2中的逻辑地址LBA#300~315(步骤S452中“是”的路径),依序推出和执行SCQ 310中的主机更新命令DU1和DU3,以及RCQ 330中的主机更新命令DU2(步骤S454)。接着,将主机更新命令DU4={4,300,16,PA#4}推入SCQ 310,此时SCQ 310包含{DU4},而RCQ 330为空队列(步骤S462)。
处理单元134在时间点t5收到主机写入命令W5={LBA#200}(步骤S422),根据W5的内容产生主机更新命令DU5={5,200,1,PA#5}并标记为RUC(步骤S424)。因为三个判断都不符合,主机更新命令DU5={5,200,1,PA#5}推入RCQ330,此时SCQ 310包含{DU4},而RCQ 330包含{DU5}(步骤S462)。
为了解决如上所述实施方式所产生的脏写入的问题,本发明实施例提出另一种主机数据更新命令的调度机制。参考图5所示的方法流程图,此方法由处理单元134在加载和执行FTL时执行,不断地从主机端110接收数据更新的主机命令,根据主机命令的类型和其中携带的参数产生主机数据更新命令,并且使用顺序更新命令队列310和随机更新命令队列330来调度这些主机数据更新命令,并且使用默认的规则来执行这些主机数据更新命令。详细说明如下:
步骤S512、S514、S522、S524的技术内容分别类似于步骤S412、S414、S422、S424,为求简明,不再赘述。
步骤S532:判断SCQ 310是否已经满了。如果是,流程继续进行步骤S534的处理;否则,流程继续进行步骤S542的处理。
步骤S534的技术内容类似于步骤S434,为求简明,不再赘述。
步骤S542:判断RCQ 330是否已经满了。如果是,流程继续进行步骤S544的处理;否则,流程继续进行步骤S552的处理。
步骤S544的技术内容类似于步骤S444,为求简明,不再赘述。
步骤S552:判断此主机数据更新命令中的逻辑地址是否和SCQ 310和RCQ 330中的任何SUC或RUC的逻辑地址相同。如果是,流程继续进行步骤S554的处理;否则,流程继续进行步骤S562的处理。
步骤S554:将重复的逻辑地址从SCQ 310和RCQ 330中的相应主机数据更新命令删除。
步骤S562的技术内容类似于步骤S462,为求简明,不再赘述。
以下举实例来说明图5的方法执行。一开始,SCQ 310和RCQ 330为空的队列。处理单元134分别在时间点t1、t2、t3收到主机写入命令W1={LBA#200~215,D1}、W2={LBA#300,D2}、W3={LBA#400~415,D3}(步骤S522),分别根据W1、W2、W3的内容产生主机更新命令DU1={1,200,16,PA#1}、DU2={2,300,1,PA#2}、DU3={3,400,16,PA#3},并分别标记为SUC、RUC、SUC(步骤S424)。因为主机更新命令DU1、DU2、DU3都无法通过三个判断,主机更新命令DU1、DU3推入SCQ 310,主机更新命令DU2推入RCQ330(步骤S462)。在主机写入命令W3处理完后,SCQ 310包含{DU1,DU3},而RCQ 330包含{DU2}。
处理单元134在时间点t4收到主机写入命令W4={LBA#300~315,D4}(步骤S522),根据W4的内容产生主机更新命令DU4={4,300,16,PA#4}并标记为SUC(步骤S524)。因为主机更新命令DU4中的逻辑地址LBA#300相同于RCQ330中的DU2中的逻辑地址LBA#300~315(步骤S552中“是”的路径),将重复的逻辑地址从RCQ 330中的DU2删除,使得原本的主机更新命令DU2={2,300,1,PA#2},改变成为DU2’={2,NULL,0,NULL}(步骤S554)。接着,将主机更新命令DU4={4,300,16,PA#4}推入SCQ 310,此时SCQ 310包含{DU1,DU3,DU4},而RCQ330包含{DU2’}(步骤S562)。在这里需要注意的是,由于主机更新命令DU2’的逻辑地址为NULL,此命令将来从RCQ 330推出后,并不会被执行。
处理单元134在时间点t5收到主机写入命令W5={LBA#200}(步骤S522),根据W5的内容产生主机更新命令DU5={5,200,1,PA#5}并标记为RUC(步骤S524)。因为主机更新命令DU5中的逻辑地址LBA#200部分相同于RCQ 330中的DU1中的逻辑地址LBA#200~215(步骤S552中“是”的路径),将重复的逻辑地址从SCQ 310中的DU1删除,使得原本的主机更新命令DU1={1,200,16,PA#1},改变成为DU1’={1,201,15,PA#1’}(步骤S554)。接着,将主机更新命令DU5={5,200,1,PA#5}推入RCQ 330,此时SCQ 310包含{DU1’,DU3,DU4},而RCQ 330包含{DU2’,DU5}(步骤S562)。
逻辑地址的更新操作和主机数据更新命令的入列操作会不断的执行,直到SCQ310或RCQ 330满了。一旦SCQ 310满了(步骤S532中“是”的路径),依序推出和执行SCQ 310中的所有主机更新命令(步骤S534)。一旦RCQ 330满了(步骤S542中“是”的路径),依序推出和执行RCQ 330中的所有主机更新命令(步骤S544)。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如主机端中的应用程序、装置端中的固件转换层(Firmware Translation Layer,FTL)、特定硬件的驱动程序、或软件程序。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD-ROM、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1、图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图4至图5的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,本领域技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明优选实施例,然而其并非用以限定本发明的范围,本领域技术人员在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所限定的内容为准。

Claims (15)

1.一种调度和执行主机数据更新命令的方法,其由处理单元执行,其特征在于,所述调度和执行主机数据更新命令的方法包含:
提供第一队列和第二队列,其中,所述第一队列包含多个第一主机数据更新命令,每个所述第一主机数据更新命令为第一类型的主机数据更新命令并且包含第一逻辑地址,所述第二队列包含多个第二主机数据更新命令,以及每个所述第二主机数据更新命令为第二类型的主机数据更新命令并且包含第二逻辑地址;
依据从主机端接收的用于更新数据的主机命令的类型和参数,产生第三主机数据更新命令,并且标记所述第三主机数据更新命令为所述第一类型的主机数据更新命令,其中,所述第三主机更新命令包含第三逻辑地址;
响应所述第三逻辑地址相同于所述多个第一主机数据更新命令中的一个的所述第一逻辑地址的情况,将重复的所述第一逻辑地址从匹配的所述第一主机数据更新命令中移除;
响应所述第三逻辑地址相同于所述多个第二主机数据更新命令中的一个的所述第二逻辑地址的情况,将重复的所述第二逻辑地址从匹配的所述第二主机数据更新命令中移除;以及
将所述第三主机更新命令推入所述第一队列。
2.如权利要求1所述的调度和执行主机数据更新命令的方法,其特征在于,所述第一类型的主机数据更新命令为顺序主机更新命令,以及所述第二类型的主机更新命令为随机主机更新命令。
3.如权利要求2所述的调度和执行主机数据更新命令的方法,其特征在于,所述顺序主机更新命令的逻辑区块地址长度大于1,以及所述随机主机更新命令的逻辑区块地址长度等于1。
4.如权利要求1所述的调度和执行主机数据更新命令的方法,其特征在于,所述第一类型的主机数据更新命令为随机主机更新命令,以及所述第二类型的主机更新命令为顺序主机更新命令。
5.如权利要求4所述的调度和执行主机数据更新命令的方法,其特征在于,所述顺序主机更新命令的逻辑区块地址长度大于1,以及所述随机主机更新命令的逻辑区块地址长度等于1。
6.如权利要求1所述的调度和执行主机数据更新命令的方法,其特征在于,包含:
响应所述第一队列已满的情况,推出并执行所述第一队列中的所有所述第一主机数据更新命令。
7.如权利要求6所述的调度和执行主机数据更新命令的方法,其特征在于,包含:
响应所述第二队列已满的情况,推出并执行所述第二队列中的所有所述第二主机数据更新命令。
8.一种计算机可读取存储介质,用于存储能够被处理单元执行的程序代码,其特征在于,所述程序代码被所述处理单元执行时实现如权利要求1至7中任一项所述的调度和执行主机数据更新命令的方法。
9.一种调度和执行主机数据更新命令的装置,其特征在于,包含:
随机存取存储器,配置空间给第一队列和第二队列,其中,所述第一队列包含多个第一主机数据更新命令,每个所述第一主机数据更新命令为第一类型的主机数据更新命令并且包含第一逻辑地址,所述第二队列包含多个第二主机数据更新命令,以及每个所述第二主机数据更新命令为第二类型的主机数据更新命令并且包含第二逻辑地址;以及
处理单元,耦接所述随机存取存储器,用于依据从所述主机端接收的用于更新数据的主机命令的类型和参数,产生第三主机数据更新命令,并且标记所述第三主机数据更新命令为所述第一类型的主机数据更新命令,其中,所述第三主机更新命令包含第三逻辑地址;响应所述第三逻辑地址相同于所述多个第一主机数据更新命令中的一个的所述第一逻辑地址的情况,将重复的所述第一逻辑地址从匹配的所述第一主机数据更新命令中移除;响应所述第三逻辑地址相同于所述多个第二主机数据更新命令中的一个的所述第二逻辑地址的情况,将重复的所述第二逻辑地址从匹配的所述第二主机数据更新命令中移除;以及将所述第三主机更新命令推入所述第一队列。
10.如权利要求9所述的调度和执行主机数据更新命令的装置,其特征在于,所述第一类型的主机数据更新命令为顺序主机更新命令,以及所述第二类型的主机更新命令为随机主机更新命令。
11.如权利要求10所述的调度和执行主机数据更新命令的装置,其特征在于,所述顺序主机更新命令的逻辑区块地址长度大于1,以及所述随机主机更新命令的逻辑区块地址长度等于1。
12.如权利要求9所述的调度和执行主机数据更新命令的装置,其特征在于,所述第一类型的主机数据更新命令为随机主机更新命令,以及所述第二类型的主机更新命令为顺序主机更新命令。
13.如权利要求12所述的调度和执行主机数据更新命令的装置,其特征在于,所述顺序主机更新命令的逻辑区块地址长度大于1,以及所述随机主机更新命令的逻辑区块地址长度等于1。
14.如权利要求9所述的调度和执行主机数据更新命令的装置,其特征在于,所述处理单元用于响应所述第一队列已满的情况,推出并执行所述第一队列中的所有所述第一主机数据更新命令。
15.如权利要求14所述的调度和执行主机数据更新命令的装置,其特征在于,所述处理单元用于响应所述第二队列已满的情况,推出并执行所述第二队列中的所有所述第二主机数据更新命令。
CN202211239107.2A 2022-10-11 2022-10-11 存储介质、调度和执行主机数据更新命令的方法及装置 Pending CN117909252A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211239107.2A CN117909252A (zh) 2022-10-11 2022-10-11 存储介质、调度和执行主机数据更新命令的方法及装置
US18/230,391 US20240118833A1 (en) 2022-10-11 2023-08-04 Method and non-transitory computer-readable storage medium and apparatus for scheduling and executing host data-update commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211239107.2A CN117909252A (zh) 2022-10-11 2022-10-11 存储介质、调度和执行主机数据更新命令的方法及装置

Publications (1)

Publication Number Publication Date
CN117909252A true CN117909252A (zh) 2024-04-19

Family

ID=90574338

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211239107.2A Pending CN117909252A (zh) 2022-10-11 2022-10-11 存储介质、调度和执行主机数据更新命令的方法及装置

Country Status (2)

Country Link
US (1) US20240118833A1 (zh)
CN (1) CN117909252A (zh)

Also Published As

Publication number Publication date
US20240118833A1 (en) 2024-04-11

Similar Documents

Publication Publication Date Title
JP5384576B2 (ja) 複数の異種のソリッドステート・ストレージ・ロケーションの選択的利用
CN104281413A (zh) 命令队列管理方法、存储器控制器及存储器储存装置
CN115113799A (zh) 主机命令的执行方法及装置
CN111796759A (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
CN113448487B (zh) 写入闪存管理表的计算机可读取存储介质、方法及装置
CN113495850B (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
US11494113B2 (en) Computer program product and method and apparatus for scheduling execution of host commands
TWI818762B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
CN117909252A (zh) 存储介质、调度和执行主机数据更新命令的方法及装置
CN117909251A (zh) 存储介质、调度和执行主机数据更新命令的方法及装置
TWI805505B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
CN116340047A (zh) 驱动独立磁碟冗余数组引擎的方法和装置
CN114625307A (zh) 计算机可读存储介质、闪存芯片的数据读取方法及装置
TW202137006A (zh) 寫入閃存管理表的電腦程式產品及方法及裝置
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
TWI822516B (zh) 執行主機寫入命令的方法及電腦程式產品及裝置
TWI822517B (zh) 執行主機寫入命令的方法及電腦程式產品及裝置
CN116149540A (zh) 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置
US20240202112A1 (en) Method and non-transitory computer-readable storage medium and apparatus for executing host write commands
TWI758745B (zh) 排程主機命令執行的電腦程式產品及方法及裝置
US20240201902A1 (en) Method and non-transitory computer-readable storage medium and apparatus for executing host write commands
CN112115067B (zh) 闪存物理资源集合管理装置及方法及计算机可读取存储介质
TW201445312A (zh) 資料讀取方法、快閃記憶體控制器與儲存系統
CN118072792A (zh) 主机命令的逻辑地址区间搜索方法及装置
CN118069028A (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