CN113778317A - 计算机可读取存储介质、调度主机命令的方法及装置 - Google Patents
计算机可读取存储介质、调度主机命令的方法及装置 Download PDFInfo
- Publication number
- CN113778317A CN113778317A CN202010524205.5A CN202010524205A CN113778317A CN 113778317 A CN113778317 A CN 113778317A CN 202010524205 A CN202010524205 A CN 202010524205A CN 113778317 A CN113778317 A CN 113778317A
- Authority
- CN
- China
- Prior art keywords
- host
- queue
- flash memory
- user data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000015654 memory Effects 0.000 claims abstract description 92
- 238000012545 processing Methods 0.000 claims abstract description 57
- 239000000284 extract Substances 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种计算机可读取存储介质、调度主机命令的方法及装置,计算机可读取存储介质用于存储能够被闪存控制器的处理单元执行的程序代码,所述程序代码被所述处理单元执行时实现以下步骤:依照到达所述闪存控制器的时间顺序从第一队列的顶端迁移一或多个主机写命令至第二队列,使得第一队列的顶端存储主机读命令;从第一队列的顶端提取主机读命令;执行主机读命令,用于从闪存模块读取用户数据;以及回复用户数据给主机端。由此,本发明通过如上所述的两个队列的设置以及所述的调度机制,可避免主机读命令想取得的用户数据因为长数据的写入而不能及时回复给主机端,造成应用程序的开启不顺。
Description
技术领域
本发明涉及存储装置,尤指一种计算机可读取存储介质、调度主机命令的方法及装置。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
一般来说,闪存控制器会以先进先出的顺序来执行主机发出的命令,例如主机读命令、主机写命令、主机抹写命令等,用于从闪存单元的指定地址读取用户数据,写入用户数据到闪存单元的指定地址,或者抹写闪存单元中的指定物理块。此外,为了提升闪存单元的空间使用,闪存控制器可能主动安排垃圾回收程序(Garbage Collection,GC Process)需要执行的控制器读指令、控制器写指令等。当主机读命令的到达时间晚于大量文件的主机写命令,和/或GC程序需要执行的GC读指令、GC写指令时,就需要等待之前的命令都执行完。然而,这些主机读命令有可能是主机端开启应用程序时需要读取特定地址的用户数据,如果不能及时回复将造成应用程序的开启不顺,造成使用者认为固态硬盘(Solid StateDisk,SSD)产品的效能不佳。因此,本发明提出一种计算机可读取存储介质、调度主机命令的方法及装置,用于解决如上所述的问题。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。
本发明涉及一种计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的程序代码,并且所述程序代码被所述处理单元执行时实现以下步骤:依照到达所述闪存控制器的时间顺序从第一队列的顶端迁移一或多个主机写命令至第二队列,使得第一队列的顶端存储主机读命令;从第一队列的顶端提取主机读命令;执行主机读命令,用于从闪存模块读取用户数据;以及回复用户数据给主机端。
本发明还涉及一种调度主机命令的方法,由闪存控制器执行,包含:依照到达所述闪存控制器的时间顺序从第一队列的顶端迁移一或多个主机写命令至第二队列,使得第一队列的顶端存储主机读命令;从第一队列的顶端提取主机读命令;执行主机读命令,用于从闪存模块读取用户数据;以及回复用户数据给主机端。
如上所述闪存控制器中的随机存取存储器配置所述第一队列和所述第二队列,第一队列用于依照到达闪存控制器的时间顺序存储主机端发出的主机命令。
本发明还涉及一种调度主机命令的装置,包含:随机存取存储器;闪存接口,耦接闪存模块;主机接口,耦接主机端;和处理单元,耦接随机存取存储器、闪存接口和主机接口。处理单元依照到达所述装置的时间顺序从第一队列的顶端迁移一个或多个主机写命令至第二队列,使得第一队列的顶端存储主机读命令;从第一队列的顶端提取主机读命令;执行主机读命令,用于驱动闪存接口从闪存模块读取用户数据;以及驱动主机接口回复用户数据给主机端。
上述实施例的优点之一,通过所述两个队列的设置以及所述的调度机制,可避免主机读命令想取得的用户数据因为长数据的写入而不能及时回复给主机端,造成应用程序的开启不顺。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的系统架构图。
图2为依据本发明实施例的闪存模块的示意图。
图3为依据一些实施方式的原生命令队列的示意图。
图4为依据本发明实施例的原生命令队列和原生写命令队列的示意图。
图5为依据本发明实施例的写入程序的方法流程图。
图6为依据本发明实施例的垃圾回收程序的方法流程图。
图7为依据本发明实施例的读取程序的方法流程图。
其中,附图中符号的简单说明如下:
10:电子装置;110:主机端;130:闪存控制器;131:主机接口;132:总线;134:处理单元;136:随机存取存储器;138:直接存储存取控制器;139:闪存接口;150:闪存模块;151:接口;153#0~153#15:NAND闪存单元;CH#0~CH#3:通道;CE#0~CE#3:启动信号;300:原生命令队列;400:原生写命令队列;S510~S570:方法步骤;S610~S650:方法步骤;S710~S730:方法步骤。
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、操作、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、操作、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图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)、快速非易失存储器(Non-Volatile Memory Express,NVMe)、嵌入式多媒体卡(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)、抹除命令(Erase Command)等,调度并执行这些命令。闪存控制器130还包含随机存取存储器(Random Access Memory,RAM)136,可实施为动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static RandomAccess Memory,SRAM)或上述两者的结合,用于配置空间作为数据缓冲区,存储从主机端110读取并即将写入闪存模块150的用户数据(也可称为主机数据),以及从闪存模块150读取并即将输出给主机端110的用户数据。随机存取存储器136还可存储执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(Host-to-Flash,H2F Table)、闪存-主机对照表(Flash-to-Host,F2H Table)等。闪存接口139包含NAND闪存控制器(NAND FlashController,NFC),提供存取闪存模块150时需要的功能,例如命令串行器(CommandSequencer)、低密度奇偶校验(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中的特定地址,将RAM 136中的特定地址的数据搬到主机接口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间的数据与命令传递,包含数据线(Data Line)、时钟信号(Clock Signal)与控制信号(Control Signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(Chip Enable,CE)、地址提取启动(AddressLatch Enable,ALE)、命令提取启动(Command Latch Enable,CLE)、写入启动(WriteEnable,WE)等控制信号。
参考图2,闪存模块150中的接口151可包含四个输入输出通道(I/O channels,以下简称通道)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闪存单元。
在一些实施方式中,RAM 136配置空间给原生命令队列(Native Command Queue,NCQ),用于依照命令到达闪存控制器130的时间顺序存储主机端110发送的命令,例如主机读命令、主机写命令、主机抹写命令等。参考图3,NCQ300包含多笔项目(Entry)形成的集合(Collection)。原生命令队列300中的每一笔项目可存储一个主机命令,例如主机读命令(以“R”代表)、主机写命令(以“W”代表)等。NCQ 300的操作基本原则是由结束位置(如指针T所指的位置)新增项目(可称为入列),并且由开始位置(如指针H所指的位置)移除项目(可称为出列)。也就是说,第一个新增至NCQ 300的命令,也将会是第一个被移出的,符合先进先出(First-In First-Out,FIFO)的原则。位在第8个项目的主机读命令必须等第0到7个主机写命令都执行完才能执行。然而,此主机读命令可能是根据主机端110开启应用程序时需要读取特定地址的用户数据而发出的,而之前的8个主机写命令的执行可能是需要花费一段时间的长数据写入,使得此主机读命令想取得的用户数据不能及时回复给主机端110,造成应用程序的开启不顺,更糟的是,让使用者认为固态硬盘(Solid State Disk,SSD)产品的效能不佳。
为了解决如上所述实施方式的问题,本发明实施例提出一种主机命令的调度机制,用于让主机读命令不因为长数据写入的主机写命令的执行而太晚被提取及执行。在一般情况下,新调度机制可让主机读命令的优先权高于主机写命令,让闪存控制器130能够优先服务主机读命令。参考图4,除了NCQ 300以外,RAM 136另配置空间给原生写命令队列(Native Command Queue-Write,NCQ-W)400,用于依照到达闪存控制器130的时间顺序存储从NCQ 300迁移的主机写命令。举例来说,由于如图3所示的NCQ 300中包含了主机读命令,并且在第0至第7个项目的主机写命令之后,因此,新的调度机制将NCQ300中的第0至第7个项目的主机写命令先迁移到NCQ-W 400,使得处理单元134能够先从NCQ 300中提取并执行第0到第1个主机读命令。详细来说,处理单元134依照第0到第1个主机读命令中携带的信息驱动闪存接口139从闪存模块150读取用户数据,并且驱动主机接口131回复用户数据给主机端110。所属技术领域人员可让NCQ-W 400的深度D2小于NCQ 300的深度D1。例如,D1为20、32、64时,D2可分别设为10、16、32。通过NCQ 300和NCQ-W 400的设置,以及如上所述的调度机制,可避免主机读命令想取得的用户数据因为长数据的写入而不能及时回复给主机端110,造成应用程序的开启不顺。
为了让主机读命令能够尽快被执行,处理单元134加载和执行相关固件或软件指令时会在多个时间点从NCQ 300迁移主机写命令到NCQ-W 400主机读命令,并侦测NCQ 300中是否存在任何主机读命令。详细说明如下:
参考图5,为相应于如上所述的调度机制,本发明实施例提出一种写入程序,由处理单元134加载和执行相关固件或软件指令时实施。在写入程序中,处理单元134分批次提取并执行NCQ-W 400中的主机写命令,并且在每个批次中执行不超过默认数目的主机写命令,用于避免因执行主机写命令的时间过久而阻碍了未完成的垃圾回收程序(GarbageCollection,GC Procedure)和/或造成主机读命令的执行逾时。在每个批次中,如果有未完成的GC处理,处理单元134先执行一段时间的未完成GC处理,然后才提取和执行NCQ-W 400中不超过默认数目的主机写命令。此外,如果NCQ 300中存在主机读命令,处理单元134先执行主机读命令,然后才提取和执行NCQ-W 400中不超过默认数目的主机写命令。
当闪存模块150中的闲置块(Spare Blocks)的数量少于阈值时,闪存控制器130需要花费时间执行GC程序,避免闪存模块150因可用空间不足而无法再写入数据。详细来说,处理单元134驱动闪存接口139将闪存模块150中存储的多个物理块中破碎的用户数据搜集起来,并将搜集的用户数据写入闪存模块150中新的物理块,用于使这些释放出来的物理块可在抹除后被其他用户数据使用。
图5的详细步骤说明如下:
步骤S510:判断是否存在未完成的GC程序。如果是,流程继续步骤S520的处理;否则,流程继续步骤S530的处理。需要注意的是,如果不先执行GC程序来释放出更多的可用空间,可能会让主机写命令在执行时发生空间不足的情况。处理单元134可在执行GC程序的过程中,于RAM 136中记录一个公用变量(Public Variable),用于指出GC程序还需要的时间(也可称为剩余时间)。处理单元134可通过公用变量判断是否存在未完成的GC程序。如果公用变量的值大于0,则代表存在未完成的GC程序。如果公用变量的值等于0,则代表不需要执行GC程序、即不存在未完成的GC程序。
步骤S520:进入GC程序。GC程序的技术细节将在图6中描述。在这里需要注意的是,当GC程序离开后,将回到写入程序并继续步骤S530的处理。
步骤S530:从NCQ 300的顶端迁移主机写命令到NCQ-W 400,直到在NCQ 300的顶端发现了主机读命令,或NCQ 300空了,或NCQ-W 400满了为止。处理单元134可反复执行一个循环,直到上述条件中的一个满足为止。在每一回合,处理单元134先检查上述条件是否满足,并且,当所有条件都不满足时,从NCQ 300的顶端迁移一个主机写命令到NCQ-W 400的底端。
步骤S540:判断NCQ 300中是否存在主机读命令。如果是,流程继续步骤S550的处理;否则,流程进行步骤S560的处理。
步骤S550:进入读取程序。读取程序的技术细节将在图7中描述。在这里需要注意的是,当读取程序离开后,将回到写入程序并继续步骤S560的处理。
步骤S560:从NCQ-W 400的顶端提取并执行NCQ-W 400中不超过默认数目的主机写命令。参考图2,为了优化闪存模块150的写入操作,举例来说,处理单元134可将提取的主机写命令所指示写入的用户数据切割成固定的长度,例如16K字节,并且驱动闪存接口139通过通道CH#0到CH#3并行地写入启动的NAND闪存单元。接着,处理单元134可驱动主机接口131回复这些提取的主机写命令已经执行完毕的信息给主机端110。
步骤S570:判断是否执行完NCQ-W 400中所有的主机写命令。如果是,流程离开写入程序;否则,流程进行步骤S510的处理。
参考图6,为相应于如上所述的调度机制,本发明实施例提出一种GC程序,由处理单元134加载和执行相关固件或软件指令时实施。处理单元134分段执行GC程序,用于避免因执行GC程序的时间过久而让主机写命令的执行逾时。在每个批次中,如果NCQ 300中存在主机读命令,处理单元134先执行主机读命令,然后才执行一段时间的GC操作。需要注意的是,GC程序并不只能从写入程序触发,也可以是处理单元134在执行优化的背景程序时触发。详细步骤说明如下:
步骤S610:从NCQ 300的顶端迁移主机写命令到NCQ-W 400,直到在NCQ 300的顶端发现了主机读命令,或NCQ 300空了,或NCQ-W 400满了为止。详细技术细节可参考步骤S530的说明,为求简明不再赘述。
步骤S620:判断NCQ 300中是否存在主机读命令。如果是,流程继续步骤S630的处理;否则,流程进行步骤S640的处理。
步骤S630:进入读取程序。读取程序的技术细节将在图7中描述。在这里需要注意的是,当读取程序离开后,将回到写入程序并继续步骤S640的处理。
步骤S640:执行一段时间的GC操作。
步骤S650:计算未完成GC程序所需要的时间。处理单元134可更新RAM136中的公用变量,用于指出未完成GC程序所需要的时间给其他程序参考。
从图5和图6所示的方法可知,当NCQ 300中存在主机读命令时,写入程序和GC程序都需要暂停来让主机读命令先执行。然而,闪存控制器130也需要保证主机写命令不能逾时,否则,主机端110可能认为先前发送给闪存控制器130的主机写命令发生逾时而采取一些错误回复行动,例如重送主机写命令。
为避免如上所述的问题,参考图7,本发明实施例提出一种读取程序,由处理单元134加载和执行相关固件或软件指令时实施。详细步骤说明如下:
步骤S710:判断NCQ-W 400中是否存在即将逾时的主机写命令。如果是,流程继续步骤S720的处理;否则,流程进行步骤S730的处理。在每个主机写命令进入NCQ 300时,都会给予一个时间戳(Timestamp),用于记录此主机写命令进入闪存控制器130的时间点。处理单元134可判断NCQ-W 400顶端的主机写命令的时间戳距离现在所经过的时间是否大于默认阈值,如果是,则代表NCQ-W 400顶端的主机写命令即将逾时。
步骤S720:从NCQ-W 400的顶端提取并执行即将逾时的主机写命令。处理单元134可执行一个循环,持续搜集位于NCQ-W 400顶端的主机写命令,直到NCQ-W 400不存在即将逾时的主机写命令,或者NCQ-W 400空了为止。接着,为了优化闪存模块150的写入操作,举例来说,处理单元134可将搜集到的主机写命令所指示写入的用户数据切割成固定的长度,例如16K字节,并且驱动闪存接口139通过通道CH#0到CH#3并行地写入启动的NAND闪存单元。接着,处理单元134可驱动主机接口131回复这些搜集到的主机写命令已经执行完毕的信息给主机端110。
步骤S730:从NCQ 300的顶端提取并执行主机读命令。处理单元134可执行一个循环,持续提取并执行位于NCQ 300顶端的主机读命令,直到NCQ300的顶端不是主机读命令,或者NCQ 300空了为止。在每一个回合中,处理单元134可取得主机读命令指示的逻辑地址(例如,逻辑区块地址(Logical Block Address,LBA)),并通过搜索逻辑-物理映射表(Logical-to-Physical,L2P Table)来得到此逻辑地址的用户数据实际存储于闪存模块150的物理地址。接着,处理单元134可驱动闪存接口139从闪存模块150读取此物理地址的用户数据并驱动主机接口131将读取的用户数据回复给主机端110。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(Firmware Translation Layer,FTL)、计算机中特定硬件的驱动程序等。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD-ROM、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1、图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图5到图7的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (10)
1.一种计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的程序代码,其中,所述闪存控制器中的随机存取存储器配置空间给第一队列和第二队列,所述第一队列用于依照到达所述闪存控制器的时间顺序存储主机端发出的主机命令,其特征在于,所述程序代码被所述处理单元执行时实现以下步骤:
依照到达所述闪存控制器的时间顺序从所述第一队列的顶端迁移一个或多个主机写命令至所述第二队列,使得所述第一队列的顶端存储主机读命令;
从所述第一队列的顶端提取所述主机读命令;
执行所述主机读命令,用于从闪存模块读取用户数据;以及
回复所述用户数据给所述主机端。
2.如权利要求1所述的计算机可读取存储介质,其特征在于,所述程序代码被所述处理单元执行时实现以下步骤:
在所述主机读命令执行前,判断所述第二队列是否存在即将逾时的主机写命令;以及
当所述第二队列存在即将逾时的主机写命令时,从所述第二队列提取并执行所述即将逾时的主机写命令,
其中,所述即将逾时的主机写命令指其时间戳距离现在所经过的时间大于阈值的主机写命令。
3.如权利要求1所述的计算机可读取存储介质,其特征在于,所述程序代码被所述处理单元执行时实现以下步骤:
在所述主机读命令执行后,执行一段时间的垃圾回收操作,用于将所述闪存模块中存储的多个物理块中破碎的用户数据搜集起来,并将所搜集的用户数据写入所述闪存模块中新的物理块。
4.如权利要求1所述的计算机可读取存储介质,其特征在于,所述程序代码被所述处理单元执行时实现以下步骤:
执行一段时间的垃圾回收操作后,从所述第二队列的顶端提取所述主机写命令;以及
执行所述主机写命令,
其中,所述垃圾回收操作将所述闪存模块中存储的多个物理块中破碎的用户数据搜集起来,并将所搜集的用户数据写入所述闪存模块中新的物理块。
5.一种调度主机命令的方法,由闪存控制器执行,其中,所述闪存控制器中的随机存取存储器配置空间给第一队列和第二队列,所述第一队列用于依照到达所述闪存控制器的时间顺序存储主机端发出的主机命令,其特征在于,所述调度主机命令的方法包括:
依照到达所述闪存控制器的时间顺序从所述第一队列的顶端迁移一个或多个主机写命令至所述第二队列,使得所述第一队列的顶端存储主机读命令;
从所述第一队列的顶端提取所述主机读命令;
执行所述主机读命令,用于从闪存模块读取用户数据;以及
回复所述用户数据给所述主机端。
6.一种调度主机命令的装置,其特征在于,包括:
随机存取存储器,配置空间给第一队列和第二队列,其中,所述第一队列用于依照到达闪存控制器的时间顺序存储主机端发出的主机命令;
闪存接口,耦接闪存模块;
主机接口,耦接所述主机端;以及
处理单元,耦接所述随机存取存储器、所述闪存接口和所述主机接口,依照到达所述装置的时间顺序从所述第一队列的顶端迁移一个或多个主机写命令至所述第二队列,使得所述第一队列的顶端存储主机读命令;从所述第一队列的顶端提取所述主机读命令;执行所述主机读命令,用于驱动所述闪存接口从所述闪存模块读取用户数据;以及驱动所述主机接口回复所述用户数据给所述主机端。
7.如权利要求6所述的调度主机命令的装置,其特征在于,所述处理单元在所述主机读命令执行前,判断所述第二队列是否存在即将逾时的主机写命令;以及当所述第二队列存在即将逾时的主机写命令时,从所述第二队列提取并执行所述即将逾时的主机写命令,用于驱动所述闪存接口写入指定的用户数据到所述闪存模块。
8.如权利要求7所述的调度主机命令的装置,其特征在于,所述即将逾时的主机写命令指其时间戳距离现在所经过的时间大于阈值的主机写命令。
9.如权利要求6所述的调度主机命令的装置,其特征在于,所述处理单元在所述主机读命令执行后,执行一段时间的垃圾回收操作,用于驱动所述闪存接口将所述闪存模块中存储的多个物理块中破碎的用户数据搜集起来,并将所搜集的用户数据写入所述闪存模块中新的物理块。
10.如权利要求6所述的调度主机命令的装置,其特征在于,所述处理单元在执行一段时间的垃圾回收操作后,从所述第二队列的顶端提取所述主机写命令;以及执行所述主机写命令,用于驱动所述闪存接口写入指定的用户数据到所述闪存模块,所述垃圾回收操作将所述闪存模块中存储的多个物理块中破碎的用户数据搜集起来,并将所搜集的用户数据写入所述闪存模块中新的物理块。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010524205.5A CN113778317A (zh) | 2020-06-10 | 2020-06-10 | 计算机可读取存储介质、调度主机命令的方法及装置 |
US17/122,588 US11494113B2 (en) | 2020-06-10 | 2020-12-15 | Computer program product and method and apparatus for scheduling execution of host commands |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010524205.5A CN113778317A (zh) | 2020-06-10 | 2020-06-10 | 计算机可读取存储介质、调度主机命令的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113778317A true CN113778317A (zh) | 2021-12-10 |
Family
ID=78825448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010524205.5A Pending CN113778317A (zh) | 2020-06-10 | 2020-06-10 | 计算机可读取存储介质、调度主机命令的方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11494113B2 (zh) |
CN (1) | CN113778317A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230409239A1 (en) * | 2022-06-21 | 2023-12-21 | Micron Technology, Inc. | Efficient command fetching in a memory sub-system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226457A (zh) * | 2008-01-25 | 2008-07-23 | 中兴通讯股份有限公司 | 一种磁盘阵列的在线扩容系统及方法 |
US20150331633A1 (en) * | 2012-12-18 | 2015-11-19 | Telefonica, S.A. | Method and system of caching web content in a hard disk |
CN107728953A (zh) * | 2017-11-03 | 2018-02-23 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘混合读写性能的方法 |
CN107967224A (zh) * | 2017-10-12 | 2018-04-27 | 记忆科技(深圳)有限公司 | 一种固态硬盘提升性能一致性的方法 |
CN110083304A (zh) * | 2018-01-25 | 2019-08-02 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
WO2020077495A1 (zh) * | 2018-10-15 | 2020-04-23 | 华为技术有限公司 | 命令调度方法、装置及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8521980B2 (en) | 2009-07-16 | 2013-08-27 | Mosaid Technologies Incorporated | Simultaneous read and write data transfer |
US9535627B2 (en) * | 2013-10-02 | 2017-01-03 | Advanced Micro Devices, Inc. | Latency-aware memory control |
US10025531B2 (en) | 2015-09-10 | 2018-07-17 | HoneycombData Inc. | Reducing read command latency in storage devices |
US9977623B2 (en) | 2015-10-15 | 2018-05-22 | Sandisk Technologies Llc | Detection of a sequential command stream |
US10642536B2 (en) | 2018-03-06 | 2020-05-05 | Western Digital Technologies, Inc. | Non-volatile storage system with host side command injection |
KR20190112446A (ko) | 2018-03-26 | 2019-10-07 | 삼성전자주식회사 | 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법 |
US10678478B2 (en) * | 2018-08-24 | 2020-06-09 | Apple Inc. | Ordering memory requests based on access efficiency |
-
2020
- 2020-06-10 CN CN202010524205.5A patent/CN113778317A/zh active Pending
- 2020-12-15 US US17/122,588 patent/US11494113B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226457A (zh) * | 2008-01-25 | 2008-07-23 | 中兴通讯股份有限公司 | 一种磁盘阵列的在线扩容系统及方法 |
US20150331633A1 (en) * | 2012-12-18 | 2015-11-19 | Telefonica, S.A. | Method and system of caching web content in a hard disk |
CN107967224A (zh) * | 2017-10-12 | 2018-04-27 | 记忆科技(深圳)有限公司 | 一种固态硬盘提升性能一致性的方法 |
CN107728953A (zh) * | 2017-11-03 | 2018-02-23 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘混合读写性能的方法 |
CN110083304A (zh) * | 2018-01-25 | 2019-08-02 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
WO2020077495A1 (zh) * | 2018-10-15 | 2020-04-23 | 华为技术有限公司 | 命令调度方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11494113B2 (en) | 2022-11-08 |
US20210389904A1 (en) | 2021-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11960396B2 (en) | Method and computer program product for performing data writes into a flash memory | |
CN111399750B (zh) | 闪存数据写入方法及计算机可读取存储介质 | |
CN108628543B (zh) | 垃圾回收方法以及使用该方法的装置 | |
CN114371812B (zh) | 控制器及其操作方法 | |
CN111796759A (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
CN115113799A (zh) | 主机命令的执行方法及装置 | |
TWI626540B (zh) | 一般及垃圾回收的資料存取方法以及使用該方法的裝置 | |
CN113448487B (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
US11556276B2 (en) | Memory system and operating method thereof | |
CN113778317A (zh) | 计算机可读取存储介质、调度主机命令的方法及装置 | |
CN113495850B (zh) | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 | |
TWI758745B (zh) | 排程主機命令執行的電腦程式產品及方法及裝置 | |
CN114625307A (zh) | 计算机可读存储介质、闪存芯片的数据读取方法及装置 | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI810876B (zh) | 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置 | |
TWI822517B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
US11941246B2 (en) | Memory system, data processing system including the same, and operating method thereof | |
CN112732171B (zh) | 控制器及其操作方法 | |
CN116149540A (zh) | 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置 | |
US20240201902A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for executing host write commands | |
EP4345628A1 (en) | Method of optimizing quality of service (qos) in solid-state drives (ssds) and an ssd thereof | |
US20230305711A1 (en) | Memory controller and data processing method for processing disordered read-out data | |
US20240202112A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for executing host write commands | |
CN117909252A (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 |