[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN118193146A - 存储介质、执行主机写入命令的方法及装置 - Google Patents

存储介质、执行主机写入命令的方法及装置 Download PDF

Info

Publication number
CN118193146A
CN118193146A CN202211606841.8A CN202211606841A CN118193146A CN 118193146 A CN118193146 A CN 118193146A CN 202211606841 A CN202211606841 A CN 202211606841A CN 118193146 A CN118193146 A CN 118193146A
Authority
CN
China
Prior art keywords
write command
host
random
queue
sequential
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
CN202211606841.8A
Other languages
English (en)
Inventor
邱慎廷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN202211606841.8A priority Critical patent/CN118193146A/zh
Priority to US18/383,063 priority patent/US20240202112A1/en
Publication of CN118193146A publication Critical patent/CN118193146A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种计算机可读存储介质、执行主机写入命令的方法及装置,其中该方法由处理单元执行,包含:提供顺序写入命令队列、随机写入命令队列和标注队列;从主机端接收主机写入命令;以及当侦测到主机写入命令中携带的第一逻辑地址区间和至少一个顺序写入命令中携带的第二逻辑地址区间和/或至少一个随机写入命令中携带的第三逻辑地址区间冲突时,推入纪录至标注队列,以及依据主机写入命令所携带的所述第一逻辑地址区间的长度,将主机写入命令推入顺序写入命令队列或者随机写入命令队列,其中,此纪录指出冲突的顺序写入命令和/或冲突的随机写入命令需要较主机写入命令优先被处理的信息。

Description

存储介质、执行主机写入命令的方法及装置
技术领域
本发明涉及存储装置,特别涉及一种计算机可读存储介质、执行主机写入命令的方法及装置。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的组字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、擦除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中擦除操作的最小数据块)。
然而,在预存模式(Cache Mode)下,欲循序写入或者随机写入的数据可先暂存在闪存控制器中的随机存取存储器一段时间,直到适当的时机再写入闪存模块。然而,写入暂存数据到闪存模块的时间点和长度,将影响整体的系统效能。因此,本发明提出一种计算机可读存储介质、执行主机写入命令的方法及装置。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。
本发明涉及一种执行主机命令的方法,由处理单元执行,包含:提供顺序写入命令队列、随机写入命令队列和标注队列;从主机端接收主机写入命令;以及当侦测到主机写入命令中携带的第一逻辑地址区间和至少一个顺序写入命令中携带的第二逻辑地址区间和/或至少一个随机写入命令中携带的第三逻辑地址区间冲突时,推入纪录至标注队列,以及依据主机写入命令所携带的所述第一逻辑地址区间的长度,将主机写入命令推入顺序写入命令队列或者随机写入命令队列,使得在条件满足时能依据此纪录的内容,较主机写入命令早写入冲突的顺序写入命令所指出的第二逻辑地址区间和/或冲突的随机写入命令所指出的第三逻辑地址区间的使用者数据至闪存模块。
顺序写入命令队列存储多个顺序写入命令,随机写入命令队列存储多个随机写入命令,此纪录指出冲突的顺序写入命令和/或冲突的随机写入命令需要较主机写入命令优先被处理的信息。
本发明还涉及一种计算机可读存储介质,用于存储能够被处理单元加载并执行的程序代码,并且所述程序代码被所述处理单元执行时实现如上所述的执行主机写入命令的方法。
本发明还涉及一种执行主机命令的装置,包含:主机接口;随机存取存储器;和处理单元。随机存取存储器配置空间给顺序写入命令队列、随机写入命令队列和标注队列。处理单元设置以通过主机接口从主机端接收主机写入命令;以及当侦测到主机写入命令中携带的第一逻辑地址区间和至少一个所述顺序写入命令中携带的第二逻辑地址区间和/或至少一个随机写入命令中携带的第三逻辑地址区间冲突时,推入纪录至标注队列,以及依据主机写入命令所携带的第一逻辑地址区间的长度,将主机写入命令推入顺序写入命令队列或者随机写入命令队列,使得在条件满足时能依据纪录的内容,较主机写入命令早写入冲突的顺序写入命令所指出的第二逻辑地址区间和/或冲突的随机写入命令所指出的第三逻辑地址区间的使用者数据至闪存模块。
上述实施例的优点之一,通过如上所述的方法,可在不发生脏写入的情况下提升数据写入效能。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的系统架构图。
图2为依据本发明实施例的闪存模块的示意图。
图3为依据本发明实施例的随机更新命令队列和顺序更新命令队列的示意图。
图4为依据本发明实施例的初始入列结果的示意图。
图5为依据本发明实施例的中间入列结果的示意图。
图6为依据本发明实施例的固件转换层的框图。
图7为依据本发明实施例的主机写入命令的处理方法流程图。
图8为依据本发明实施例的主机写入命令的数据写入方法的流程图。
图9至图13为依据本发明实施例的中间入列结果的示意图。
附图标记说明:
10电子装置
110主机端
130闪存控制器
131主机接口
132总线
134处理单元
135、135#0~135#7搜索引擎
136随机存取存储器
138直接存储器存取控制器
139闪存接口
150闪存模块
151接口
153#0~153#15NAND闪存单元
CH#0~CH#3通道
CE#0~CE#3启动信号
310循序写入队列
330随机写入命令队列
610命令调度模块
630数据写入模块
650标注队列
S710~S760方法步骤
S810~S850方法步骤
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、操作处理、部件和/或组件,但并不排除可添加更多的技术特征、数值、方法步骤、操作处理、组件、部件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序、先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连接、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图1。电子装置10包含主机端(Host Side)110、闪存控制器130及闪存模块150,并且闪存控制器130及闪存模块150可合称为装置端(DeviceSide)。电子装置10可实施于个人电脑、笔记本电脑(Laptop PC)、平板电脑、移动电话、数码相机、数字摄像机、智能电视、智能电冰箱、车用电子系统(Automotive Electronics System)等电子产品之中。主机端110与闪存控制器130的主机接口(Host Interface)137可以通用串行总线(UniversalSerial Bus,USB)、高级技术附件(advanced technology attachment,ATA)、串行高级技术附件(serial advanced technology attachment,SATA)、快速外设元件互联(peripheralcomponent interconnect express,PCI-E)、通用闪存存储(UniversalFlash Storage,UFS)、嵌入式多媒体卡(Embedded Multi-Media Card,eMMC)等通信协议彼此通信。闪存控制器130的闪存接口(Flash Interface)139与闪存模块150可以双倍数据率(Double DataRate,DDR)通信协议彼此通信,例如,开放NAND闪存(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDR Toggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,单一处理器、具并行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行软件和/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收主机命令,例如读取命令(Read Command)、写入命令(Write Command)、丢弃命令(Discard Command)、擦除命令(Erase Command)等,依据主机命令的类型和其中携带参数产生主机数据更新命令(Host Data-update Command),调度并执行这些命令。闪存控制器130另包含随机存取存储器(Random AccessMemory,RAM)136,可实施为动态随机存取存储器(Dynamic Random AccessMemory,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)与控制信号(ControlSignal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(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可设置专属的搜索引擎135,包含如寄存器、比较器、输出逻辑等数字电路,用于让处理单元134驱动以判断一个主机写入命令的逻辑地址区间是否和顺序写入命令队列310或随机写入命令队列330中纪录的逻辑地址区间发生冲突(或者部分重叠)。由于逻辑地址区间的比对需要大量的运算时间,让处理单元134在设定一个主机写入命令的逻辑地址区间到搜索引擎135的输入寄存器之后,就可以离开去执行其他的操作。在一段默认的时间后,处理单元134可读取搜索引擎135的输出寄存器的值,以判断搜索是否结束,判断输入的逻辑地址区间是否和顺序写入命令队列310或随机写入命令队列330中纪录的逻辑地址区间发生冲突,以及顺序写入命令队列310或随机写入命令队列330中发生冲突的节点。在另一些实施例中,多个逻辑地址区间的比对可使用搜索程序代码实施,并且在处理单元134加载并执行搜索程序代码时,完成如上所述的判断,以及输出搜索结果。
参考图3,RAM 136配置空间给顺序写入命令队列(Sequential-writeCommandQueue,SCQ)310,用于依照到达闪存控制器130的时间顺序存储主机端110发送的顺序主机写入命令,例如逻辑区块地址长度(Logical BlockAddress,LBA Length)大于1的主机数据更新命令。RAM 136还配置空间给随机写入命令队列(Random-write Command Queue,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依序从主机端110收到8个主机写入命令:W0={LBA#0~499,D0};W1={LBA#1000~1499,D1};W2={LBA#2000~2499,D2};W3={LBA#3000~3499,D3};W4={LBA#500,D4};W5={LBA#1500,D5};W6={LBA#2500,D6};W7={LBA#3500,D7}。主机写入命令W0指示写入逻辑地址LBA#0~499的数据D0,主机写入命令W1指示写入逻辑地址LBA#1000~1499的数据D1,主机写入命令W2指示写入逻辑地址LBA#2000~2499的数据D2,主机写入命令W3指示写入逻辑地址LBA#3000~3499的数据D3,主机写入命令W4指示写入逻辑地址LBA#500的数据D4,主机写入命令W5指示写入逻辑地址LBA#1500的数据D5,主机写入命令W6指示写入逻辑地址LBA#2500的数据D6,主机写入命令W7指示写入逻辑地址LBA#3500的数据D7。参考图4的入列结果示意图,接着,FTL依据数据的LBA长度将主机写入命令W0至W3(可称为顺序写入命令)推入顺序写入命令队列310,以及将主机写入命令W4至W7(可称为随机写入命令)推入随机写入命令队列330。
为了提升闪存模块150的数据写入效能,闪存控制器130可使用特定政策来处理顺序写入命令和随机写入命令。然而,这可能造成主机写入命令的数据的实际写入顺序和主机端发出的顺序不同,因而发生脏写入(Dirty Write)的情况。例如,接续图4所示的示例,FTL通过主机接口131收到主机写入命令W8={LBA#100,D8},指示写入逻辑地址LBA#100的数据D8。主机写入命令W8的入列结果如图5所示。假设闪存控制器130采取随机写入优先(Random-write First)的原则来移出和处理顺序写入命令队列310和随机写入命令队列330中的主机写入命令:也就是说,闪存控制器130先执行完主机写入命令W4~W8之后,再执行主机写入命令W0~W3。因为主机写入命令W0的执行晚于主机写入命令W8,造成闪存模块150中所存储的逻辑地址LBA#100的数据是D0,并不是主机端110期望的数据D8,发生脏写入的情况。
参考图6,为了在不发生脏写入的情况下提升数据写入效能,本发明实施例提出在FTL中设置独立执行的命令调度模块610和数据写入模块630,以及在RAM 136中配置空间来存储标注队列(Mark Queue)650。
命令调度模块610包含程序代码,用于在被处理单元134执行时,侦测每个通过主机接口131从主机端110所接收到的主机写入命令的逻辑地址区间(可称为第一逻辑地址区间)是否和顺序写入命令队列310中的至少一个顺序写入命令中携带的逻辑地址区间(可称为第二逻辑地址区间)和/或随机写入命令队列330中至少一个随机写入命令中携带的逻辑地址区间(可称为第三逻辑地址区间)冲突。一旦发现冲突,则命令调度模块610在标注队列650中推入一个纪录,用于指出冲突的顺序写入命令和/或冲突的随机写入命令需要较接收到的主机写入命令优先被处理的信息,以及根据主机写入命令所携带的逻辑地址区间的长度,将接收到的主机写入命令推入顺序写入命令队列310或者随机写入命令队列330,使得在特定条件满足时能依据标注队列650的此纪录的内容,较此主机写入命令早写入冲突的顺序写入命令所指出的逻辑地址区间和/或冲突的随机写入命令所指出的逻辑地址区间的使用者数据至闪存模块150。
数据写入模块630包含程序代码,用于在被处理单元134执行时依据标注队列650中的纪录的内容,从顺序写入命令队列310获取冲突的顺序写入命令及之前的顺序写入命令中所携带的逻辑地址区间(可称为第一逻辑地址区间),和/或从随机写入命令队列330获取冲突的随机写入命令及之前的随机写入命令中所携带的逻辑地址区间(可称为第二逻辑地址区间);从随机存取存储器136的指定地址(可称为第一地址)读取第一逻辑地址区间的使用者数据,和/或从随机存取存储器136的指定地址(可称为第二地址)读取第二逻辑地址区间的使用者数据;以及写入第一逻辑地址区间的使用者数据,和/或第二逻辑地址区间的使用者数据至闪存模块150。数据写入模块630会在满足特定条件时被触发,完成实际的数据写入操作。此外,为了让不同主机命令的延迟时间(Latency)尽可能一致且满足规范的要求,数据写入模块630也可控制一次写入闪存模块150的数据量。
标注队列650可实施为符合先进先出原则的循环式队列,用于存储多笔纪录。每笔纪录存储顺序写入命令队列310或随机写入命令队列330的特定节点及其之前节点的所有主机写入命令所关联的使用者数据需要优先被写入到闪存模块150的信息。
数据写入模块630的触发条件可为:从主机端110接收到进入休眠模式(SleepMode)、省电模式(Power Saving Mode)或其他类似模式的指令,但还没有从主机端110接收到离开休眠模式、省电模式或其他类似模式的指令的期间;或者顺序写入命令队列310、随机写入命令队列330或标注队列650中被占用的节点数超过特定阈值。阈值可设为顺序写入命令队列310、随机写入命令队列330或标注队列650的指定百分比的节点总数,例如,可设为60%到90%中的任意百分比。
参考图7所示的主机写入命令的处理方法流程图,此方法由处理单元134在加载和执行命令调度模块610时实施,用以反复地从主机端110接收主机写入命令,依据欲写入数据的逻辑地址长度将主机写入命令推入顺序写入命令队列310或随机写入命令队列330,并且视情况推入纪录到标注队列650。详细说明如下:
步骤S710:通过主机接口131从主机端110接收主机写入命令,包含开始逻辑地址和长度等信息,此开始逻辑地址和长度可定义一段连续的逻辑地址区间。除了主机写入命令外,命令调度模块610还通过主机接口131从主机端110接收此主机写入命令所指示写入的使用者数据,并且驱动DMA控制器138将使用者数据存储到RAM 136中的指定地址。
步骤S720:判断主机写入命令中携带的任何逻辑地址是否和顺序写入命令队列310或随机写入命令队列330中纪录的逻辑地址冲突。如果是,则流程继续进行步骤S730的处理;否则,流程继续进行步骤S740的处理。命令调度模块610可驱动专属的搜索引擎135,或者加载并执行搜索程序代码来完成判断。
步骤S730:推入至少一个记录到标注队列650。新入列的纪录数目等于和顺序写入命令队列310及随机写入命令队列330中发生冲突的主机写入命令的数目。每个新增加的纪录关联于顺序写入命令队列310或随机写入命令队列330中的发生冲突的一个主机写入命令,并且这些纪录依据冲突的主机写入命令的入列时间从先到后依序入列到标注队列650。
步骤S740:依据主机写入命令中所携带的长度判断此主机写入命令是否为顺序写入命令。例如,如果长度大于默认阈值,则判断此主机写入命令为顺序写入命令。流程继续进行步骤S750的处理。如果长度等于或小于默认阈值,则判断此主机写入命令不是顺序写入命令(也就是随机写入命令).流程继续进行步骤S760的处理。在一些实施例中,默认阈值可设为1。
步骤S750:将此主机写入命令推入顺序写入命令队列310。除了此顺序写入命令外,还可以在入列节点中纪录RAM 136中的地址,用于存储此顺序写入命令的欲写入的使用者数据。
步骤S760:将此主机写入命令推入随机写入命令队列330。除了此随机写入命令外,还可以在入列节点中纪录RAM 136的地址,用于存储此随机写入命令的欲写入的使用者数据。
参考图8所示的主机写入命令的数据写入方法的流程图,此方法由处理单元134在加载和执行数据写入模块630时实施,用以参考顺序写入命令队列310和随机写入命令队列330的主机写入命令,以及标注队列650的纪录来完成实际的数据写入操作。详细说明如下:
步骤S810:判断标注队列650中是否存在任何的纪录。如果是,代表已经存在需要优先被处理的主机写入命令,则流程继续进行步骤S820的处理;否则,代表不存在需要优先被处理的主机写入命令,流程继续进行步骤S830的处理。
步骤S820:参考标注队列650中的内容,以从顺序写入命令队列310或随机写入命令队列330中获取需要优先被处理的主机写入命令。
步骤S830:依据特定政策从顺序写入命令队列310或随机写入命令队列330中获取主机写入命令。特定政策可以指,例如,顺序写入命令优先、随机写入命令优先、到达时间优先或其他类似的调度政策。
步骤S840:通过DMA控制器138从RAM 136的指定地址读取相应于获取的主机写入命令的使用者数据,并且驱动闪存接口139以写入使用者数据到闪存模块150。
步骤S850:判断闪存控制器130是否还有运算资源可以执行后续的数据写入操作。如果是,则流程继续进行步骤S810的处理;否则,流程结束,直到下一次触发条件成立。闪存控制器130还有运算资源的情况,例如:闪存控制器130还没有从主机端110接到指令,指示闪存控制器130离开休眠模式、省电模式或其他类似模式;或者,没有比写入操作更高优先级的任务,正等待闪存控制器130执行。
以下举出更多使用个案来说明图7和图8所示方法的运行:接续图4所示的示例,当接收到主机写入命令W8后(步骤S710),命令调度模块610侦测到主机写入命令W8中携带的逻辑地址LBA#100和顺序写入命令队列310的第0个节点中的主机写入命令W0中携带的逻辑地址区间LBA#0~499发生冲突(步骤S720中“是”的路径),推入纪录:M0=Q0[0]到标注队列650,其中Q0[0]代表顺序写入命令队列310中的第0个节点(步骤S730),并且将主机写入命令W8推入随机写入命令队列330(步骤S760)。执行后的队列内容如图9所示。
接着,当接收到主机写入命令W9={LBA#1200~1299,D9}后(步骤S710),命令调度模块610侦测到主机写入命令W9中携带的逻辑地址区间LBA#1200~1299和顺序写入命令队列310的第1个节点中的主机写入命令W1中携带的逻辑地址区间LBA#1000~1499发生冲突(步骤S720中“是”的路径),推入纪录:M1=Q0[1]到标注队列650,其中Q0[1]代表顺序写入命令队列310中的第1个节点(步骤S730),并且将主机写入命令W8推入顺序写入命令队列310(步骤S750)。执行后的队列内容如图10所示。
接着,当接收到主机写入命令W10={LBA#2300~2799,D10}后(步骤S710),命令调度模块610侦测到主机写入命令W10中携带的逻辑地址区间LBA#2300~2799和顺序写入命令队列310的第2个节点中的主机写入命令W2中携带的逻辑地址区间LBA#2000~2499以及随机写入命令队列330的第2个节点中的主机写入命令W6中携带的逻辑地址LBA#2500发生冲突(步骤S720中“是”的路径),推入纪录:M2=Q0[2]+Q1[2]到标注队列650,其中Q0[2]代表顺序写入命令队列310中的第2个节点,Q1[2]代表随机写入命令队列330中的第2个节点(步骤S730),并且将主机写入命令W10推入顺序写入命令队列310(步骤S750)。执行后的队列内容如图11所示。
接着,假设触发数据写入操作的条件满足,数据写入模块630发现标注队列650中存在纪录(步骤S810中“是”的路径),根据默认的最大写入数据量从顺序写入命令队列310推出主机写入命令W0和W1,而主机写入命令W0和W1的待写入数据是标注队列650的最上面两个纪录M0和M1所指出需要优先写入的数据,从RAM 136的指定位置依序读取主机写入命令W0和W1所指示写入的使用者数据D0和D1(步骤S820)。数据写入模块630驱动闪存接口139以依序写入使用数据D0和D1到闪存模块150(步骤S840)。执行后的队列内容如图12所示。
接着,当接收到主机写入命令W11={LBA#4000~4499,D11}后(步骤S710),命令调度模块610侦测到主机写入命令W11中携带的逻辑地址区间LBA#4000~4499没有和顺序写入命令队列310以及随机写入命令队列330中的任何主机写入命令中携带的逻辑地址区间或逻辑地址发生冲突(步骤S720中“否”的路径)将主机写入命令W11推入顺序写入命令队列310(步骤S750)。执行后的队列内容如图13所示。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如装置端中的固件转换层(Firmware Translation Layer,FTL)、特定硬件的驱动程序等。此外,也可实现于如上所示的其他类型程序。本领域技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读存储介质,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
计算机可读存储介质包含挥发性和非挥发性、可卸载和不可卸载的介质,其以任何方法或技术来实现信息的存储,如计算机可读指令、数据结构、程序模块、或其他数据。计算机可读存储介质包含但不限于RAM、ROM、EEPROM、闪存或其他存储器、CD-ROM、DVD、蓝光盘或其他光存储介质、磁卡、磁带、硬盘或其他磁性存储介质,或者其他可以用以存储让指令执行系统所需要和存取的信息的载具。需要注意的是,计算机可读存储介质可以是纸张或者其他适当介质,用以打印程序代码,使其程序代码能够通过电性方式获取,例如通过光学扫描纸张或其他介质,接着在必要的情况下,编译、解译或以其他适当方法处理后,接着再存储到计算机的存储器中。
虽然图1至图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图7至图8的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,本领域技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明优选实施例,然而其并非用以限定本发明的范围,本领域技术人员在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所限定的内容为准。

Claims (13)

1.一种执行主机写入命令的方法,其由处理单元执行,其特征在于,所述执行主机写入命令的方法包含:
提供顺序写入命令队列、随机写入命令队列和标注队列,其中,所述顺序写入命令队列存储多个顺序写入命令,所述随机写入命令队列存储多个随机写入命令;
当侦测到所述主机写入命令中携带的第一逻辑地址区间和至少一个所述顺序写入命令中携带的第二逻辑地址区间和/或至少一个所述随机写入命令中携带的第三逻辑地址区间冲突时,推入纪录至所述标注队列,以及依据所述主机写入命令所携带的所述第一逻辑地址区间的长度,将所述主机写入命令推入所述顺序写入命令队列或者所述随机写入命令队列,其中,所述纪录指出冲突的顺序写入命令和/或冲突的随机写入命令需要较所述主机写入命令优先被处理的信息,
使得在条件满足时能依据所述纪录的内容,较所述主机写入命令早写入所述冲突的顺序写入命令所指出的所述第二逻辑地址区间和/或所述冲突的随机写入命令所指出的所述第三逻辑地址区间的使用者数据至闪存模块。
2.如权利要求1所述的执行主机写入命令的方法,其特征在于,包含:
当侦测到所述主机写入命令中携带的所述第一逻辑地址区间没有和任何所述顺序写入命令中携带的所述第二逻辑地址区间以及没有和任何所述随机写入命令中携带的所述第三逻辑地址区间冲突时,依据所述主机写入命令所携带的所述第一逻辑地址区间的所述长度,将所述主机写入命令推入所述顺序写入命令队列或者所述随机写入命令队列。
3.如权利要求1所述的执行主机写入命令的方法,其特征在于,包含:
当所述主机写入命令所携带的所述第一逻辑地址区间的所述长度大于阈值时,将所述主机写入命令推入所述顺序写入命令队列;以及
当所述主机写入命令所携带的所述第一逻辑地址区间的所述长度小于或等于所述阈值时,将所述主机写入命令推入所述随机写入命令队列。
4.如权利要求3所述的执行主机写入命令的方法,其特征在于,所述阈值设为1。
5.如权利要求3所述的执行主机写入命令的方法,其特征在于,包含:
将所述主机写入命令所携带的所述第一逻辑地址区间的关联使用者数据存储至随机存取存储器的第一地址;以及
在所述顺序写入命令队列或所述随机写入命令队列中的入列节点,纪录所述随机存取存储器的所述第一地址。
6.如权利要求1所述的执行主机写入命令的方法,其特征在于,包含:
依据所述标注队列中的所述纪录的内容,从所述顺序写入命令队列获取所述冲突的顺序写入命令及之前的顺序写入命令中所携带的所述第二逻辑地址区间,和/或从所述随机写入命令队列获取所述冲突的随机写入命令及之前的随机写入命令中所携带的所述第三逻辑地址区间;
从随机存取存储器的第二地址读取所述第二逻辑地址区间的使用者数据,和/或从所述随机存取存储器的第三地址读取所述第三逻辑地址区间的使用者数据;以及
写入所述第二逻辑地址区间的使用者数据,和/或所述第三逻辑地址区间的使用者数据至所述闪存模块。
7.一种计算机可读存储介质,用于存储能够被处理单元执行的程序代码,其特征在于,所述程序代码被所述处理单元执行时实现如权利要求1至6中任一项所述的执行主机写入命令的方法。
8.一种执行主机写入命令的装置,其特征在于,包含:
主机接口,耦接主机端;
随机存取存储器,配置空间给顺序写入命令队列、随机写入命令队列和标注队列,其中,所述顺序写入命令队列存储多个顺序写入命令,所述随机写入命令队列存储多个随机写入命令;以及
处理单元,耦接所述随机存取存储器和所述主机接口,设置以通过所述主机接口从所述主机端接收主机写入命令;以及当侦测到所述主机写入命令中携带的第一逻辑地址区间和至少一个所述顺序写入命令中携带的第二逻辑地址区间和/或至少一个所述随机写入命令中携带的第三逻辑地址区间冲突时,推入纪录至所述标注队列,以及依据所述主机写入命令所携带的所述第一逻辑地址区间的长度,将所述主机写入命令推入所述顺序写入命令队列或者所述随机写入命令队列,其中,所述纪录指出冲突的顺序写入命令和/或冲突的随机写入命令需要较所述主机写入命令优先被处理的信息,使得在条件满足时能依据所述纪录的内容,较所述主机写入命令早写入所述冲突的顺序写入命令所指出的所述第二逻辑地址区间和/或所述冲突的随机写入命令所指出的所述第三逻辑地址区间的使用者数据至闪存模块。
9.如权利要求8所述的执行主机写入命令的装置,其特征在于,所述处理单元设置以当侦测到所述主机写入命令中携带的所述第一逻辑地址区间没有和任何所述顺序写入命令中携带的所述第二逻辑地址区间以及没有和任何所述随机写入命令中携带的所述第三逻辑地址区间冲突时,依据所述主机写入命令所携带的所述第一逻辑地址区间的所述长度,将所述主机写入命令推入所述顺序写入命令队列或者所述随机写入命令队列。
10.如权利要求8所述的执行主机写入命令的装置,其特征在于,所述处理单元设置以当所述主机写入命令所携带的所述第一逻辑地址区间的所述长度大于阈值时,将所述主机写入命令推入所述顺序写入命令队列;以及当所述主机写入命令所携带的所述第一逻辑地址区间的所述长度小于或等于所述阈值时,将所述主机写入命令推入所述随机写入命令队列。
11.如权利要求10所述的执行主机写入命令的装置,其特征在于,所述阈值设为1。
12.如权利要求10所述的执行主机写入命令的装置,其特征在于,所述处理单元设置以将所述主机写入命令所携带的所述第一逻辑地址区间的关联使用者数据存储至所述随机存取存储器的第一地址;以及在所述顺序写入命令队列或所述随机写入命令队列中的入列节点,纪录所述随机存取存储器的所述第一地址。
13.如权利要求8所述的执行主机写入命令的装置,其特征在于,包含:
闪存接口,耦接所述闪存模块,
其中,所述处理单元设置以依据所述纪录的内容,从所述顺序写入命令队列获取所述冲突的顺序写入命令及之前的顺序写入命令中所携带的所述第二逻辑地址区间,和/或从所述随机写入命令队列获取所述冲突的随机写入命令及之前的随机写入命令中所携带的所述第三逻辑地址区间;从所述随机存取存储器的第二地址读取所述第二逻辑地址区间的使用者数据,和/或从所述随机存取存储器的第三地址读取所述第三逻辑地址区间的使用者数据;以及驱动所述闪存接口以写入所述第二逻辑地址区间的使用者数据,和/或所述第三逻辑地址区间的使用者数据至所述闪存模块。
CN202211606841.8A 2022-12-14 2022-12-14 存储介质、执行主机写入命令的方法及装置 Pending CN118193146A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211606841.8A CN118193146A (zh) 2022-12-14 2022-12-14 存储介质、执行主机写入命令的方法及装置
US18/383,063 US20240202112A1 (en) 2022-12-14 2023-10-24 Method and non-transitory computer-readable storage medium and apparatus for executing host write commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211606841.8A CN118193146A (zh) 2022-12-14 2022-12-14 存储介质、执行主机写入命令的方法及装置

Publications (1)

Publication Number Publication Date
CN118193146A true CN118193146A (zh) 2024-06-14

Family

ID=91405712

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211606841.8A Pending CN118193146A (zh) 2022-12-14 2022-12-14 存储介质、执行主机写入命令的方法及装置

Country Status (2)

Country Link
US (1) US20240202112A1 (zh)
CN (1) CN118193146A (zh)

Also Published As

Publication number Publication date
US20240202112A1 (en) 2024-06-20

Similar Documents

Publication Publication Date Title
CN111796759A (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
CN115113799A (zh) 主机命令的执行方法及装置
CN109213423B (zh) 基于地址屏障无锁处理并发io命令
CN113448487B (zh) 写入闪存管理表的计算机可读取存储介质、方法及装置
CN118193146A (zh) 存储介质、执行主机写入命令的方法及装置
CN118193144A (zh) 存储介质、执行主机写入命令的方法及装置
TWI822516B (zh) 執行主機寫入命令的方法及電腦程式產品及裝置
US11494113B2 (en) Computer program product and method and apparatus for scheduling execution of host commands
TWI822517B (zh) 執行主機寫入命令的方法及電腦程式產品及裝置
CN114625307A (zh) 计算机可读存储介质、闪存芯片的数据读取方法及装置
CN113495850A (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
CN109213424B (zh) 并发io命令的无锁处理方法
TWI758745B (zh) 排程主機命令執行的電腦程式產品及方法及裝置
US12147334B2 (en) Apparatus and method for searching for logical address ranges of host commands
US20240177777A1 (en) Method and non-transitory computer-readable storage medium and apparatus for executing host commands
US20240176734A1 (en) Apparatus and method for searching for logical address ranges of host commands
US20240118833A1 (en) Method and non-transitory computer-readable storage medium and apparatus for scheduling and executing host data-update commands
US20240118832A1 (en) Method and non-transitory computer-readable storage medium and apparatus for scheduling and executing host data-update commands
TWI818762B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
TWI844174B (zh) 主機命令的邏輯位址區間搜索方法及裝置
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
TWI774277B (zh) 主機命令的執行方法及裝置
TWI805505B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
TWI814647B (zh) 執行主機命令的方法及電腦程式產品及裝置
CN116149540A (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