CN110532199A - 预读方法及其存储控制器 - Google Patents

预读方法及其存储控制器 Download PDF

Info

Publication number
CN110532199A
CN110532199A CN201810502510.7A CN201810502510A CN110532199A CN 110532199 A CN110532199 A CN 110532199A CN 201810502510 A CN201810502510 A CN 201810502510A CN 110532199 A CN110532199 A CN 110532199A
Authority
CN
China
Prior art keywords
read command
command
read
description symbol
descriptor
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.)
Granted
Application number
CN201810502510.7A
Other languages
English (en)
Other versions
CN110532199B (zh
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.)
Beijing Yixin Technology Co Ltd
Original Assignee
Beijing Yixin Technology Co Ltd
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 Beijing Yixin Technology Co Ltd filed Critical Beijing Yixin Technology Co Ltd
Priority to CN202310645298.0A priority Critical patent/CN116644004A/zh
Priority to CN201810502510.7A priority patent/CN110532199B/zh
Publication of CN110532199A publication Critical patent/CN110532199A/zh
Application granted granted Critical
Publication of CN110532199B publication Critical patent/CN110532199B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了了预读方法及其存储控制器。所公开的预读方法包括如下步骤:获取读命令;判断读命令是否命中预读命令描述符;若读命令命中预读命令描述符,用所述预读命令描述符更新读命令描述符;根据所述读命令描述符处理读命令。

Description

预读方法及其存储控制器
技术领域
本申请涉及存储设备,更具体地,涉及在存储设备中预读数据的方法以及实施预读的存储控制器。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
发明内容
本申请需要在存储设备中提供预读能力,以提供更低的访问延迟与更好的服务质量。
根据本申请的第一方面,提供了根据本申请第一方面的第一读命令处理方法,其中,包括如下步骤:获取读命令;判断读命令是否命中预读命令描述符;若读命令命中预读命令描述符,用所述预读命令描述符更新读命令描述符;根据所述读命令描述符处理读命令。
根据本申请第一方面的第一读命令处理方法,提供了根据本申请第一方面的第二读命令处理方法,其中,若读命令未命中预读命令描述符,清空预读命令表。
根据本申请第一方面的第一或第二读命令处理方法,提供了根据本申请第一方面的第三读命令处理方法,其中,用预读命令描述符更新读命令描述符后,生成新的预读命令,并根据所述新的预读命令更新所述预读命令描述符。
根据本申请第一方面的第一至三任一项的读命令处理方法,提供了根据本申请第一方面的第四读命令处理方法,其中,为用所述预读命令描述符更新读命令描述符,将所述预读命令描述符记录的预读命令访问的地址作为所述读命令描述符的读命令访问的地址,将该预读命令描述符记录的缓存单元作为所述读命令描述符的缓存单元,以及还在所述读命令描述符中记录命中了所述预读描述符的读命令指示的主机地址。
根据本申请第一方面的第一至三任一项的读命令处理方法,提供了根据本申请第一方面的第五读命令处理方法,其中,将所述预读命令描述符记录的状态复制到所述读命令描述符,从而根据生成或更新的读命令描述符处理该读命令。
根据本申请第一方面的第一至五任一项的读命令处理方法,提供了根据本申请第一方面的第六读命令处理方法,其中,还包括:递增预读命令描述符记录的预读命令访问的地址,生成访问递增后的地址的预读命令,为生成的预读命令分配新的缓存单元,并在该预读命令描述符中记录新分配的缓存单元。
根据本申请第一方面的第一至六任一项的读命令处理方法,提供了根据本申请第一方面的第七读命令处理方法,其中,响应于获取读命令,若读命令表有空闲条目,则为获取的读命令生成读命令描述符,读命令描述符被记录在读命令表中。
根据本申请第一方面的第一至七任一项的读命令处理方法,提供了根据本申请第一方面的第八读命令处理方法,其中,若读命令未命中预读命令描述符,清空预读命令表,释放其中的所有预读命令描述符。
根据本申请第一方面的第八读命令处理方法,提供了根据本申请第一方面的第九读命令处理方法,其中,响应于预读命令表被清空,生成新的预读命令与对应的预读命令标识符以填充预读命令表,并对预读命令进行处理。
根据本申请第一方面的第八读命令处理方法,提供了根据本申请第一方面的第十读命令处理方法,其中,响应于预读命令表被清空,不立即生成新的预读命令。
根据本申请第一方面的第一至十任一项的读命令处理方法,提供了根据本申请第一方面的第十一读命令处理方法,其中,响应于收到读命令,根据读命令生成预读命令,并生成对应的预读命令描述符以填充预读命令表,并对预读命令进行处理。
根据本申请第一方面的第一至十一任一项的读命令处理方法,提供了根据本申请第一方面的第十二读命令处理方法,其中,预读命令表具有预读空闲与预读忙两种状态;当预读命令表中没有预读命令描述符,控制部件也没有在处理任何预读命令时,预读命令表处于预读空闲状态;预读忙状态指示有预读命令正在被处理;当有预读命令被生成,预读命令表从预读空闲状态变为预读忙状态。
根据本申请第一方面的第十二的读命令处理方法,提供了根据本申请第一方面的第十三读命令处理方法,其中,在预读空闲状态下,响应于收到读命令,无须检查读命令是否命中预读命令描述符,而处理读命令。
根据本申请第一方面的第十二的读命令处理方法,提供了根据本申请第一方面的第十四读命令处理方法,其中,响应于对预读命令表清空的发起或完成,预读命令表从预读忙状态变为预读空闲状态。
根据本申请第一方面的第一至十四任一项的读命令处理方法,提供了根据本申请第一方面的第十五读命令处理方法,其中,预读命令描述符具有多个可能的状态,状态包括预读命令空闲状态、预读命令开始状态、预读命令命中状态和/或预读命令释放状态;响应于预读命令描述符初始化,或者预读命令描述符未被用于描述预读命令,预读命令描述符处于预读命令空闲状态;响应于生成了预读命令,并在预读命令描述符中记录了预读命令的信息,预读命令描述符的状态从预读命令空闲状态变为预读命令开始状态;响应于读命令命中了预读命令描述符,被命中的预读命令描述符的状态从预读命令开始状态变为预读命令命中状态。
根据本申请第一方面的第十五的读命令处理方法,提供了根据本申请第一方面的第十六读命令处理方法,其中,响应于根据预读命令描述符生成同预读命令描述符对应的读命令描述符,预读命令描述符的状态从预读命令命中状态变为预读命令开始状态。
根据本申请第一方面的第十五的读命令处理方法,提供了根据本申请第一方面的第十七读命令处理方法,其中,响应于读命令未命中任何预读命令描述符,而发起清空预读命令表,相应地将预读命令表中的所有处于预读命令开始或预读命令命中状态的预读命令描述符的状态设置为“预读命令释放”状态。
根据本申请第一方面的第十五的读命令处理方法,提供了根据本申请第一方面的第十八读命令处理方法,其中,在预读命令释放状态,清空预读命令描述符,释放预读命令描述符指示的缓存单元,停止预读命令描述符所对应的从非易失性存储器读出数据的操作,丢弃预读命令描述符所对应的从非易失性存储器读出的数据。
根据本申请第一方面的第十六至十八任一项的读命令处理方法,提供了根据本申请第一方面的第十九读命令处理方法,其中,响应于清空预读命令描述符之一的操作完成,将预读命令描述符的状态从预读命令释放变为预读命令空闲状态。
根据本申请第一方面的第八至十九任一项的读命令处理方法,提供了根据本申请第一方面的第二十读命令处理方法,其中,将预读命令表的所有预读命令描述符的清空操作完成,作为预读命令表清空操作的完成标志。
根据本申请的第二方面,提供了根据本申请第二方面的第一控制部件,其中,包括主机接口、命令处理单元和介质接口;主机接口用于通主机交换命令与数据;命令处理单元与主机接口耦合,用于接收读命令实施预读,维护主机命令表与预读命令表;读命令表中记录了读命令描述符,预读命令表中记录了预读命令描述符;命令处理单元识别读命令命中了预读命令描述符而从预读命令表获取被命中的预读命令描述符,用该预读命令描述符生成读命令描述符;介质接口与命令处理单元耦合,用于将从命令处理单元接收的数据发送给非易失性存储器芯片,和/或从非易失性存储器芯片中读出数据。
根据本申请的第二方面的第一控制部件,提供了根据本申请第二方面的第二控制部件,其中,在命令处理单元的指示下,将要写入的数据通过主机接口从主机传输到外部存储器中的缓存单元,以及还将缓存单元中的数据通过介质接口传输到非易失性存储器中。
根据本申请的第二方面的第一或二控制部件,提供了根据本申请第二方面的第三控制部件,其中,命令处理单元比较读命令访问的地址同预读命令表的预读命令描述符所指示的预读命令访问的地址是否一致,来识别读命令是否命中预读命令描述符。
根据本申请的第二方面的第一控制部件,提供了根据本申请第二方面的第四控制部件,其中,为用所述预读命令描述符更新读命令描述符,命令处理单元将所述预读命令描述符记录的预读命令访问的地址作为所述读命令描述符的主机命令访问的地址,将该预读命令描述符记录的缓存单元作为所述读命令描述符的缓存单元,以及还在所述读命令描述符中记录命中了所述预读描述符的主机命令指示的主机地址。
根据本申请的第二方面的第二控制部件,提供了根据本申请第二方面的第五控制部件,其中,命令处理单元生成预读命令,通过生成存储在预读命令表中的预读描述符来指示生成的预读命令。
根据本申请的第二方面的第二控制部件,提供了根据本申请第二方面的第六控制部件,其中,命令处理单元响应于根据预读命令描述符生成了读命令描述符,将预读命令描述符释放。
根据本申请的第二方面的第一控制部件,提供了根据本申请第二方面的第七控制部件,其中,主机命令表与预读命令表各自包括多个条目;主机命令表的条目为主机命令描述符,预读命令表的条目为预读命令描述符。
根据本申请的第二方面的第一至七任一项的控制部件,提供了根据本申请第二方面的第八控制部件,其中,主机命令表容纳的读命令描述符数量对应于控制部件在同一时刻正在处理的读命令的最大数量。
根据本申请的第二方面的第八控制部件,提供了根据本申请第二方面的第九控制部件,其中,若读命令表无法容纳更多的读命令描述符,命令处理单元暂停处理读命令,直到有读命令被处理完成使得对应的读命令描述符被释放。
根据本申请的第二方面的第一至九任一项的控制部件,提供了根据本申请第二方面的第十控制部件,其中,读命令描述符中记录了读命令访问的地址与容纳待读出数据的外部存储器的缓存单元,以及可选地用于接收待读出数据的主机地址。
根据本申请的第二方面的第十控制部件,提供了根据本申请第二方面的第十一控制部件,其中,命令处理单元处理读命令描述符所指示的读命令。
根据本申请的第二方面的第十一控制部件,提供了根据本申请第二方面的第十二控制部件,其中,为处理读命令,从读命令描述符获取读命令访问的逻辑地址,将逻辑地址转换为物理地址,并将通过介质接口从非易失性存储器读出的数据搬移到读命令描述符所指示的缓存单元,以及将读出数据通过主机接口发送给发出读命令的主机。
根据本申请的第二方面的第一至七的控制部件,提供了根据本申请第二方面的第十三控制部件,其中,预读命令描述符由命令处理单元生成,并被添加到预读命令表,预读命令描述符中记录了预读命令访问的地址与缓存单元,以及预读命令描述符中没有记录主机的地址。
根据本申请的第二方面的第十三控制部件,提供了根据本申请第二方面的第十四控制部件,其中,为处理读命令,从读命令描述符获取读命令访问的逻辑地址,并将通过介质接口从非易失性存储器读出的数据搬移到预读命令描述符所指示的缓存单元。
根据本申请的第二方面的第五至十四任一项的控制部件,提供了根据本申请第二方面的第十五控制部件,其中,在预读命令描述符中记录预读命令描述符的状态,指示预读命令描述符对应的预读命令被执行的阶段。
根据本申请的第二方面的第十五控制部件,提供了根据本申请第二方面的第十六控制部件,其中,预读命令描述符的状态包括预读命令空闲状态、预读命令开始状态、预读命令命中状态和/或预读命令释放状态;响应于预读命令描述符初始化,或者预读命令描述符未被用于描述预读命令,预读命令描述符处于预读命令空闲状态;响应于生成了预读命令,并在预读命令描述符中记录了预读命令的信息,预读命令描述符的状态从预读命令空闲状态变为预读命令开始状态;响应于读命令命中了预读命令描述符,被命中的预读命令描述符的状态从预读命令开始状态变为预读命令命中状态;响应于读命令未命中任何预读命令描述符,而发起清空预读命令表,相应地将预读命令表中的所有处于预读命令开始或预读命令命中状态的预读命令描述符的状态设置为“预读命令释放”状态。
根据本申请的第二方面的第十五或十六的控制部件,提供了根据本申请第二方面的第十七控制部件,其中,为根据预读命令描述符生成读命令描述符,命令处理单元将预读命令描述符记录的状态复制到读命令描述符。
根据本申请的第二方面的第十七控制部件,提供了根据本申请第二方面的第十八控制部件,其中,响应于读命令命中了预读命令描述符,根据预读命令描述符生成读命令描述符,若该读命令描述符指示待读取数据已经在缓存单元中,将读取的数据从缓存单元搬移到读命令描述符所记录的主机地址。
根据本申请的第二方面的第一控制部件,提供了根据本申请第二方面的第十九控制部件,其中,若读命令命中了预读命令描述符,根据预读命令描述符生成读命令描述符,若预读命令读取的数据尚未被搬移到缓存单元,在数据被从非易失性存储器读出后,指示将读出的数据搬移到读命令描述符所指示的主机地址。
根据本申请的第二方面的第一控制部件,提供了根据本申请第二方面的第二十控制部件,其中,命令处理单元若识别出读命令未命中预读命令表的任何一个预读命令描述符,将预读命令表清空,释放其中的所有预读命令描述符。
根据本申请的第三方面,提供了根据本申请第三方面的第一存储设备,其中,包括控制部件、外部存储器和非易失性存储器,控制部件为根据为根据本申请第二方面的第一至二十控制部件。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1本申请提供的现有技术中固态存储设备的内部结构示意图;
图2为本申请实施例的固态存储设备的内部结构示意图;
图3为本申请实施例的处理读命令的流程图;
图4为本申请实施例的预读命令表的状态图;
图5为本申请实施例的预读命令描述符的状态图;
204—控制部件;110—外部存储器;210—主机接口;
220—介质接口;240—命令处理单元;
270—后端处理单元;242—主机命令表;248—预读命令表。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2展示了根据本申请实施例的存储设备的框图。根据本申请实施例的存储设备的控制部件实施预读操作。
参看图2,存储设备的控制部件204包括主机接口210、用于访问NVM芯片105的介质接口220、命令处理单元240与后端处理单元270。
主机接口210用于同主机交换命令与数据。
作为一个实施例,主机与存储设备通过NVMe/PCIe协议通信,主机接口210处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。
命令处理单元240耦合到主机接口210,用于接收并处理主机发送给存储设备的IO命令。
后端处理单元270接收IO命令(IO命令形态因命令处理单元240的处理而发生变化,这里为了表达简洁而统称为IO命令),并访问一个或多个NVM芯片。
可选地,后端处理单元270利用现有技术处理IO命令,或者利用将来产生的技术处理IO命令。
控制部件还耦合到外部存储器(例如,DRAM)110。
继续参看图2,外部存储器110的部分空间(缓存单元0、缓存单元1……缓存单元7)被用作缓存。缓存单元具有指定的大小。例如,缓存单元指定大小为512字节、1KB、2KB、4KB等。
命令处理单元240管理缓存单元的分配和使用。示例性地,对于写命令,在命令处理单元240的指示下,将要写入的数据通过主机接口210从主机传输到外部存储器110中的缓存单元,以及还将缓存单元中的数据通过介质接口220传输到NVM芯片105。
对于读命令,命令处理单元240识别缓存单元是否命中。若缓存单元命中,在缓存管理单元260的指示下,从缓存单元获取数据发送给主机。若缓存单元未命中,从NVM芯片105获取数据(搬移到缓存单元)并发送给主机。
后端处理单元270包括FTL模块,用于将IO命令的逻辑地址转换为物理地址。后端处理单元270还对NVM芯片及其上的数据实施管理,提供磨损均衡、垃圾回收等服务。
可选地,存储设备向主机暴露物理地址空间,诸如遵循(开放通道SSD,OpenChannel SSD,OCSSD)协议的物理地址空间。从而在IO命令中指示要访问的物理地址。从而后端处理单元270无须使用FTL模块进行从逻辑地址到物理地址的转换。
命令处理单元240还根据接收的IO命令实施预读。命令处理单元240维护主机命令表242与预读命令表248。主机命令表242与预读命令表248各自包括多个条目。主机命令表242的条目称为主机命令描述符,预读命令标248的条目称为预读命令描述符。
响应于从主机接口210接收IO命令,示例性地,以读命令为例,命令处理单元240为读命令生成读命令描述符,并将读命令描述符存储在主机命令表242。从而主机命令表242容纳的读命令描述符数量对应于控制部件204在同一时刻正在处理的读命令的最大数量。在读命令表无法容纳更多的读命令描述符时,命令处理单元240暂停处理IO命令,直到有读命令被处理完成被释放对应的读命令描述符。
读命令描述符中记录了读命令访问的地址(存储设备的逻辑地址或物理地址)与容纳待读出数据的DRAM 110的缓存单元,以及可选地用于接收待读出数据的主机地址。对于读命令描述符所指示的读命令,指示后端处理单元270对读命令继续处理。
示例性地,为处理读命令,从读命令描述符获取读命令访问的逻辑地址,通过介质接口220向NVM芯片发出命令,并将从NVM芯片读出的数据搬移到读命令描述符所指示的缓存单元,以及将读出数据通过主机接口210发送给发出读命令的主机。
预读命令描述符中记录了预读命令访问的地址(存储设备的逻辑地址或物理地址)与容纳待读出数据的DRAM 110的缓存单元。预读命令描述符中没有记录主机的地址。预读命令描述符由命令处理单元240生成,并添加到预读命令表248。命令处理单元240处理预读读命令描述符所指示的预读命令,或指示后端处理单元270对预读命令继续处理。
例如,若命令处理单元240处理预读读命令描述符所指示的预读命令,从读命令描述符获取读命令访问的逻辑地址,将逻辑地址转换为物理地址,并将通过介质接口从非易失性存储器读出的数据搬移到读命令描述符所指示的缓存单元,以及将读出数据通过主机接口发送给发出读命令的主机。
示例性地,若后端处理单元270处理预读命令,则通过FTL表将逻辑地址转换为物理地址,并通过介质接口220向NVM芯片发出命令,并将从NVM芯片读出的数据搬移到预读命令描述符所指示的缓存单元。
可选地,在预读命令描述符中还记录状态,预读命令描述符的状态,指示了预读命令描述符对应的预读命令被执行的阶段,例如,已经启动了从NVM芯片到缓存单元的数据搬移,有读命令命中了该预读命令,预读描述符正在被释放等。
命令处理单元240生成预读命令,并通过生成存储在预读命令表248中的预读描述符来指示所生成的预读命令。命令处理单元240根据现有技术或将来产生的多种策略生成预读命令。例如响应于从读命令中识别出顺序流,而生成读取顺序流的数据的预读命令。
命令处理单元240还识别读命令是否命中了预读命令描述符。对于从主机接口210接收的读命令,命令处理单元240比较读命令访问的地址同预读命令表248中的预读命令描述符所指示的预读命令访问的地址是否一致(例如,相同或相重叠),来识别读命令是否命中预读命令描述符。若读命令命中了预读命令描述符,命令处理单元240从预读命令表248获取被命中的预读命令描述符,用该预读命令描述符生成读命令描述符。
示例性地,为用所述预读命令描述符更新读命令描述符,命令处理单元240将所述预读命令描述符记录的预读命令访问的地址作为所述读命令描述符的主机命令访问的地址,将该预读命令描述符记录的缓存单元作为所述读命令描述符的缓存单元,以及还在所述读命令描述符中记录命中了所述预读描述符的主机命令指示的主机地址。
可选地,为根据预读命令描述符生成读命令描述符,命令处理单元240也将预读命令描述符记录的状态复制到读命令描述符。从而当该预读命令描述符指示待读取数据已经在缓存单元中时,通过读命令描述符知晓读取的数据已出现在缓存单元中,并将读取的数据从缓存单元搬移到读命令描述符所记录的主机地址,以完成对命中了预读命令描述符的读命令的处理。即使在识别出读命令命中了预读命令描述符时,根据预读命令描述符生成读命令描述符,若预读命令读取的数据尚未被搬移到缓存单元,通过读命令描述符中记录的预读命令描述符的状态,也知晓预读命令的处理进展,并在数据被从NVM芯片读出(例如搬移到缓存单元)后,再搬移到读命令描述符所指示的主机地址。
进一步地,响应于根据预读命令描述符生成了读命令描述符,还将该预读命令描述符释放。从而在预读命令表248中释放出新的空间以容纳新的预读命令描述符,从而命令处理单元240生成新的预读命令以实施预读,并生成新的预读命令描述符。
可选地,命令处理单元240若识别出读命令未命中预读命令表248的任何一个预读命令描述符,还将预读命令表248清空,释放其中的所有预读命令描述符。并按常规方式处理读命令。
图3展示了根据本申请实施例处理读命令并实施预读的流程图。
命令处理单元240(也参看图2)从主机接口210获取读命令(310)。根据读命令生成读命令描述符,并将生成的读命令描述符记录在读命令表(320)。
可选地,仅在读命令表有空闲条目时,才为获取的读命令生成读命令描述符,使得读命令描述符总是可被记录在读命令描述符表中。
依然可选地,步骤320同步骤330的顺序可以变化,例如在识别读命令是否命中了预读命令描述符之一后才根据情况选择生成读命令描述符。
在步骤330,识别读命令是否命中预读命令表248中的一个或多个预读命令描述符(330)。
若读命令命中了预读命令描述符,用被命中的预读命令描述符中记录的信息更新或生成同读命令对应的读命令描述符(340)。
示例性地,将预读命令描述符记录的预读命令访问的地址作为读命令描述符的读命令访问的地址,将该预读命令描述符记录的缓存单元作为读命令描述符的缓存单元,以及还在读命令描述符中记录命中了预读描述符的读命令指示的主机地址。
可选地,也将预读命令描述符记录的状态复制到读命令描述符。从而根据生成或更新的读命令描述符处理该读命令(350)。
可选地或进一步地,对于被读命令命中的预读命令描述符,更新该预读命令描述符(360)。通过为该预读命令描述符生成新的预读命令来更新该预读命令描述符。例如,递增该预读命令描述符记录的预读命令访问的地址,生成访问递增后的地址的预读命令,为生成的预读命令分配新的缓存单元,并在该预读命令描述符中记录新分配的缓存单元。指示后端处理单元270对新生成的预读命令继续处理。
在步骤330,若读命令未命中预读命令表248中的任何预读命令描述符(330),命令处理单元240清空预读命令表248,释放其中的所有预读命令描述符,并按常规方式处理读命令。
可选地,响应于预读命令表248被清空,还生成新的预读命令与对应的预读命令标识符以填充预读命令表,并对预读命令进行处理。
可选地,响应于预读命令表248被清空,不立即生成新的预读命令,以降低因预读命令引起的对读带宽的占用。
可选地,在步骤310,响应于收到读命令,根据读命令生成预读命令,并生成对应的预读命令描述符以填充预读命令表(380),并对预读命令进行处理。命令处理单元240根据现有技术或将来产生的多种策略根据读命令生成预读命令。例如响应于从读命令中识别出顺序流,而生成读取顺序流的数据的预读命令。
图4展示了根据本申请实施例的关联于预读命令表的状态图。
可以理解地,根据图4的实施例的状态图也关联于控制部件实施的整体预读操作。
根据图4的状态图展示了“预读空闲”与“预读忙”两种状态。当预读命令表中没有预读命令描述符,控制部件204也没有在处理任何预读命令时,处于“预读空闲”状态。在“预读空闲”状态下,命令处理单元240对于接收的读命令,无须检查其是否命中预读命令描述符,因为不存在有效的预读命令描述符。而当有预读命令被生成,从“预读空闲”状态变为“预读忙”状态。“预读忙”状态指示有预读命令正在被处理,从而命令处理单元240对于接收的读命令,可以检查其是否命中预读命令描述符。当预读命令表被清空,例如发生了读命令未命中任何预读命令描述符的情形(也参看图3,330),发起对预读命令表的清空。
示例性地,响应于对预读命令表清空的发起或完成,从“预读忙”状态变为“预读空闲”状态。
图5展示了根据本申请实施例的关联于预读命令描述符的状态图。
可以理解地,为每个预读命令描述符记录其状态,例如在预读命令描述符中记录其状态。
预读命令描述符的状态包括“预读命令空闲”状态、“预读命令开始”状态、“预读命令命中”状态和/或“预读命令释放”状态。
响应于预读命令描述符初始化,或者预读命令描述符未被用于描述预读命令,预读命令描述符处于“预读命令空闲”状态。
响应于生成了预读命令,并在预读命令描述符中记录了该预读命令的信息,该预读命令描述符的状态从“预读命令空闲”状态变为“预读命令开始”状态。这也意味着开始了对该预读命令的处理。
响应于有读命令命中了预读命令描述符,将该被命中的预读命令描述符的状态从“预读命令开始”状态变为“预读命令命中”状态。
对于“预读命令命中”状态的预读命令描述符,由于将生成同该预读命令描述符对应的读命令描述符,读命令处理单元240可选地更新该预读命令描述符以生成新的预读命令,在此情况下,该预读命令描述的状态从“预读命令命中”状态变为“预读命令开始”状态。这也意味着再次开始了对新生成的预读命令的处理。
可选地,响应于读命令未命中任何预读命令描述符,而发起清空预读命令表,相应地将预读命令表中的所有处于预读命令开始或预读命令命中状态的预读命令描述符的状态从“预读命令开始”状态变为“预读命令释放”状态。在“预读命令释放”状态,清空预读命令描述符,释放预读命令描述符指示的缓存单元,停止预读命令描述符所对应的从NVM芯片读出数据的操作,丢弃预读命令描述符所对应的从NVM芯片读出的数据。
依然可选地,响应于清空预读命令描述符之一的操作完成,将该预读命令描述符的状态从“预读命令释放”变为“预读命令空闲”状态。
可选地,若预读命令表的所有预读命令描述符的清空操作完成,作为预读命令表清空操作的完成标志。依然可选地,将预读命令表的所有预读命令描述符的清空操作的发起,作为预读命令表清空操作的发起。
本申请实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本申请实施例的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本申请的很多修改和其他实施方式。因此,应该理解,本申请不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

Claims (10)

1.一种读命令处理方法,其特征在于,包括如下步骤:
获取读命令;
判断读命令是否命中预读命令描述符;
若读命令命中预读命令描述符,用所述预读命令描述符更新读命令描述符;
根据所述读命令描述符处理读命令。
2.根据权利要求1的读命令处理方法,其特征在于,若读命令未命中预读命令描述符,清空预读命令表。
3.根据权利要求1或2的读命令处理方法,其特征在于,用预读命令描述符更新读命令描述符后,生成新的预读命令,并根据所述新的预读命令更新所述预读命令描述符。
4.根据权利要求1-3任一项的读命令处理方法,其特征在于,为用所述预读命令描述符更新读命令描述符,将所述预读命令描述符记录的预读命令访问的地址作为所述读命令描述符的读命令访问的地址,将该预读命令描述符记录的缓存单元作为所述读命令描述符的缓存单元,以及还在所述读命令描述符中记录命中了所述预读描述符的读命令指示的主机地址。
5.根据权利要求1-3任一项的读命令处理方法,其特征在于,将所述预读命令描述符记录的状态复制到所述读命令描述符,从而根据生成或更新的读命令描述符处理该读命令。
6.根据权利要求1-5任一项的读命令处理方法,其特征在于,还包括:递增预读命令描述符记录的预读命令访问的地址,生成访问递增后的地址的预读命令,为生成的预读命令分配新的缓存单元,并在该预读命令描述符中记录新分配的缓存单元。
7.根据权利要求1-6任一项的读命令处理方法,其特征在于,预读命令表具有预读空闲与预读忙两种状态;
当预读命令表中没有预读命令描述符,控制部件也没有在处理任何预读命令时,预读命令表处于预读空闲状态;
预读忙状态指示有预读命令正在被处理;当有预读命令被生成,预读命令表从预读空闲状态变为预读忙状态。
8.根据权利要求1-7任一项的读命令处理方法,其特征在于,预读命令描述符具有多个可能的状态,状态包括预读命令空闲状态、预读命令开始状态、预读命令命中状态和/或预读命令释放状态;
响应于预读命令描述符初始化,或者预读命令描述符未被用于描述预读命令,预读命令描述符处于预读命令空闲状态;
响应于生成了预读命令,并在预读命令描述符中记录了预读命令的信息,预读命令描述符的状态从预读命令空闲状态变为预读命令开始状态;
响应于读命令命中了预读命令描述符,被命中的预读命令描述符的状态从预读命令开始状态变为预读命令命中状态。
9.一种控制部件,其特征在于,包括主机接口、命令处理单元和介质接口;
主机接口用于通主机交换命令与数据;
命令处理单元与主机接口耦合,用于接收读命令实施预读,维护主机命令表与预读命令表;读命令表中记录了读命令描述符,预读命令表中记录了预读命令描述符;
命令处理单元识别读命令命中了预读命令描述符而从预读命令表获取被命中的预读命令描述符,用该预读命令描述符生成读命令描述符;
介质接口与命令处理单元耦合,用于将从命令处理单元接收的数据发送给非易失性存储器芯片,和/或从非易失性存储器芯片中读出数据。
10.一种存储设备,其特征在于,包括外部存储器和非易失性存储器以及根据权9的控制部件。
CN201810502510.7A 2018-05-23 2018-05-23 预读方法及其存储控制器 Active CN110532199B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202310645298.0A CN116644004A (zh) 2018-05-23 2018-05-23 预读方法及其存储控制器
CN201810502510.7A CN110532199B (zh) 2018-05-23 2018-05-23 预读方法及其存储控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810502510.7A CN110532199B (zh) 2018-05-23 2018-05-23 预读方法及其存储控制器

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310645298.0A Division CN116644004A (zh) 2018-05-23 2018-05-23 预读方法及其存储控制器

Publications (2)

Publication Number Publication Date
CN110532199A true CN110532199A (zh) 2019-12-03
CN110532199B CN110532199B (zh) 2023-06-20

Family

ID=68657531

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310645298.0A Pending CN116644004A (zh) 2018-05-23 2018-05-23 预读方法及其存储控制器
CN201810502510.7A Active CN110532199B (zh) 2018-05-23 2018-05-23 预读方法及其存储控制器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310645298.0A Pending CN116644004A (zh) 2018-05-23 2018-05-23 预读方法及其存储控制器

Country Status (1)

Country Link
CN (2) CN116644004A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116504293A (zh) * 2023-06-27 2023-07-28 芯天下技术股份有限公司 nor flash的读取方法、装置、存储芯片及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538284A (zh) * 2003-04-14 2004-10-20 ��ʽ���������Ƽ� 存储设备
CN101021816A (zh) * 2007-03-22 2007-08-22 北京中星微电子有限公司 一种读取数据的方法及装置
JP2010128960A (ja) * 2008-11-28 2010-06-10 Internatl Business Mach Corp <Ibm> プリフェッチ命令生成方法、コンパイラ、及びプログラム
CN103250141A (zh) * 2010-12-01 2013-08-14 国际商业机器公司 联网的客户端-服务器体系结构中的预读处理
CN105183398A (zh) * 2015-09-28 2015-12-23 联想(北京)有限公司 一种存储设备、电子设备及数据处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538284A (zh) * 2003-04-14 2004-10-20 ��ʽ���������Ƽ� 存储设备
CN101021816A (zh) * 2007-03-22 2007-08-22 北京中星微电子有限公司 一种读取数据的方法及装置
JP2010128960A (ja) * 2008-11-28 2010-06-10 Internatl Business Mach Corp <Ibm> プリフェッチ命令生成方法、コンパイラ、及びプログラム
CN103250141A (zh) * 2010-12-01 2013-08-14 国际商业机器公司 联网的客户端-服务器体系结构中的预读处理
CN105183398A (zh) * 2015-09-28 2015-12-23 联想(北京)有限公司 一种存储设备、电子设备及数据处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周宏伟,张民选: "高性能微处理器中采用多种预取技术的指令Cache设计" *
郑通,郭卫斌,范贵生: "HDFS中海量小文件合并与预取优化方法的研究" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116504293A (zh) * 2023-06-27 2023-07-28 芯天下技术股份有限公司 nor flash的读取方法、装置、存储芯片及设备
CN116504293B (zh) * 2023-06-27 2023-10-13 芯天下技术股份有限公司 nor flash的读取方法、装置、存储芯片及设备

Also Published As

Publication number Publication date
CN116644004A (zh) 2023-08-25
CN110532199B (zh) 2023-06-20

Similar Documents

Publication Publication Date Title
US10761977B2 (en) Memory system and non-transitory computer readable recording medium
CN106469122B (zh) 有效数据合并方法、存储器控制器与存储器储存装置
CN106448737A (zh) 读取闪存数据的方法、装置以及固态驱动器
CN110389709A (zh) 顺序流检测与数据预读
CN109101185A (zh) 固态存储设备及其写命令和读命令处理方法
CN108664213A (zh) 基于分布式缓存的原子写命令处理方法与固态存储设备
CN108595349A (zh) 大容量存储设备的地址转换方法与装置
CN108228470A (zh) 一种处理向nvm写入数据的写命令的方法和设备
CN106649144A (zh) 数据储存设备及其操作方法
CN109144885A (zh) 固态存储设备的垃圾回收方法与固态存储设备
CN109558333A (zh) 具有可变额外存储空间(op)的固态存储设备命名空间
US20230281118A1 (en) Memory system and non-transitory computer readable recording medium
CN108228483A (zh) 处理原子写命令的方法和设备
CN110321057A (zh) 具有增强io性能确定性的缓存的存储设备
CN109947669A (zh) Kv存储设备的地址转换方法与系统
CN110377221A (zh) 双端口固态存储设备及其数据处理方法
CN109840048A (zh) 存储命令处理方法及其存储设备
CN109388333A (zh) 降低读命令处理延迟的方法与装置
CN110532199A (zh) 预读方法及其存储控制器
CN110275757A (zh) 利用系统抽象层提供多协议存储设备
CN108664212A (zh) 固态存储设备的分布式缓存
CN108664214A (zh) 用于固态存储设备的分布式缓存的掉电处理方法与装置
CN109213425A (zh) 利用分布式缓存在固态存储设备中处理原子命令
CN110515861A (zh) 处理刷写命令的存储设备及其方法
CN109426436A (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
GR01 Patent grant
GR01 Patent grant