CN110580227B - 自适应nvm命令生成方法与装置 - Google Patents
自适应nvm命令生成方法与装置 Download PDFInfo
- Publication number
- CN110580227B CN110580227B CN201810581871.5A CN201810581871A CN110580227B CN 110580227 B CN110580227 B CN 110580227B CN 201810581871 A CN201810581871 A CN 201810581871A CN 110580227 B CN110580227 B CN 110580227B
- Authority
- CN
- China
- Prior art keywords
- read
- nvm
- command
- adaptive
- generation method
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 230000003044 adaptive effect Effects 0.000 title claims abstract description 79
- 238000012545 processing Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 14
- 230000004044 response Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000003909 pattern recognition Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0656—Data buffering 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]
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)
Abstract
本申请涉及存储设备技术领域,尤其涉及自适应NVM命令生成方法与装置,其中自适应NVM命令生成方法包括:获取读NVM芯片提供的LUN的读消息;识别读消息所形成的访问模式;根据访问模式生成NVM接口命令。本申请通过根据数据访问的特点,而自适应地选择不同的读命令,提升了存储设备的性能。
Description
技术领域
本申请涉及存储设备技术领域,尤其涉及在存储设备中根据访问数据的模式自适应地生成访问NVM芯片的命令的方法与装置。
背景技术
参看图1,展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA、IDE、USB、PCIE、NVMe(NVM Express)、SAS、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片105以及可选地固件存储器110。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器。控制部件104在运行时从固件存储器110加载固件。固件存储器110可以是NOR闪存、ROM、EEPROM,也可以是NVM芯片105的部分。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元(LUN)、平面(Plane)的含义,其为现有技术的一部分。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
发明内容
NVM芯片提供多种读命令。常见的读命令从NVM芯片的NVM存储介质读取完整页的数据,一些读命令从NVM存储介质读取部分页(例如半页、1/4页,或者指定的其他长度)数据,一些类型的读命令从NVM芯片的页缓存中读取数据,一些类型的读命令读出的数据具有较高的错误率而另一些类型的读命令具有较低的错误率。不同类型的读命令还具有各自的处理延迟。本申请通过根据数据访问的特点,而自适应地选择不同的读命令,提升了存储设备的性能。
根据本申请的第一方面,提供了根据本申请第一方面的第一自适应NVM命令生成方法,包括:获取读NVM芯片提供的LUN的读消息;识别读消息所形成的访问模式;根据访问模式生成NVM接口命令。
根据本申请的第一方面的第一自适应NVM命令生成方法,其中,若识别的访问模式为连续物理地址访问模式,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
根据本申请的第一方面的第一自适应NVM命令生成方法,其中,若识别的访问模式为连续物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,其中读页缓存命令指示从页缓存中读取数据。
根据本申请的第一方面的第三自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
根据本申请的第一方面的第三或第四自适应NVM命令生成方法,其中,若读消息访问的物理地址被页缓存中数据的物理地址覆盖,则命中页缓存;反之,则未命中页缓存。
根据本申请的第一方面的第二至第四自适应NVM命令生成方法之一,其中,将根据普通读命令从LUN中读出的完整物理页的数据存储于缓存中。
根据本申请的第一方面的第六自适应NVM命令生成方法,其中,所述缓存为NVM芯片提供的页缓存。
根据本申请的第一方面的第七自适应NVM命令生成方法,其中,将数据存储于页缓存中后记录NVM芯片的页缓存中存储的数据的物理地址。
根据本申请的第一方面的第二至第四自适应NVM命令生成方法之一,其中,舍弃通过普通读命令从LUN中读出的数据中未被读消息所指定的部分。
根据本申请的第一方面的第一至第九自适应NVM命令生成方法之一,其中,若识别的访问模式为随机物理地址访问模式,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
根据本申请的第一方面的第一至第九自适应NVM命令生成方法之一,其中,若识别读消息为随机物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,从页缓存中读取数据。
根据本申请的第一方面的第十一自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据
根据本申请的第一方面的第十一或十二自适应NVM命令生成方法,其中,将小尺寸读命令从LUN中读出的数据存储于页缓存中。
根据本申请的第一方面的第十三自适应NVM命令生成方法,其中,将数据缓存于页缓存中后记录NVM芯片的页缓存中存储的数据的物理地址。
根据本申请的第一方面的第一至第十四自适应NVM命令生成方法之一,其中,根据连续多条读消息访问的物理地址连续,识别出当前访问模式为连续物理地址访问模式。
根据本申请的第一方面的第一至第十四自适应NVM命令生成方法之一,其中,若连续多条读消息访问的物理地址不连续,则识别出当前访问模式为随机物理地址访问模式。
根据本申请的第一方面的第一至第十四自适应NVM命令生成方法之一,其中,若当前预读模式计数大于阈值T1,则识别出当前的访问模式是连续物理地址访问模式。
根据本申请的第一方面的第十七自适应NVM命令生成方法,其中,若更新后当前预读模式计数小于阈值T1,则识别出当前的访问模式是随机物理地址访问模式。
根据本申请的第一方面的第十七自适应NVM命令生成方法,其中,当前预读模式计数小于阈值T2,并且阈值T1不小于阈值T2,则识别出当前的访问模式是随机物理地址访问模式。
根据本申请的第一方面的第十九自适应NVM命令生成方法,其中,若当前预读模式计数小于阈值T1,且不小于阈值T2,则不改变在所述LUN上的当前访问模式。
根据本申请的第一方面的第十七至第二十自适应NVM命令生成方法之一,其中,若当前读消息访问的物理地址同上一次读消息访问的物理地址重叠,将读消息访问的LUN的当前预读模式计数增加指定的值;若当前读消息访问的物理地址同上一次读消息访问的物理地址不重叠,将读消息访问的LUN的当前预读模式计数减去指定的值。
根据本申请的第二方面,提供了根据本申请第二方面的第一自适应NVM命令生成方法,包括:获取读NVM芯片提供的LUN的读消息;根据读消息中指示的访问模式生成NVM接口命令。
根据本申请的第二方面的第一自适应NVM命令生成方法,其中,还包括:根据来自外部设备的读指令生成访问模式在根据读指令生成的访问LUN的读消息中指示访问模式。
根据本申请的第二方面的第二自适应NVM命令生成方法,其中,若读指令形成了顺序流,则为顺序流中读指令所对应的读消息所指示的访问模式为连续物理地址访问模式。
根据本申请的第二方面的第三自适应NVM命令生成方法,其中,非顺序流中的读指令所对应的读消息指示的访问模式为随机物理地址访问模式。
根据本申请的第二方面的第三自适应NVM命令生成方法,其中,为对顺序流产生的预读指令所对应的读消息所指示的访问模式为连续物理地址访问模式。
根据本申请的第二方面的第三或第五自适应NVM命令生成方法,其中,为顺序流中读指令生成访问第一通道的第一LUN的第一读消息,与访问第二通道的第二LUN的第二读消息,并为第一读消息与第二读消息指示的访问模式为连续物理地址访问模式。
根据本申请的第二方面的第二自适应NVM命令生成方法,其中,在根据读指令生成的访问至少两个LUN的读消息中指示相同的访问模式。
根据本申请的第二方面的第二至第七自适应NVM命令生成方法之一,其中,若识别的访问模式为随机物理地址访问模式,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
根据本申请的第二方面的第二至第七自适应NVM命令生成方法之一,其中,若识别的读消息为随机物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,从页缓存中读取数据。
根据本申请的第二方面的第九自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
根据本申请的第二方面的第一至第七自适应NVM命令生成方法之一,其中,若识别的访问模式为连续物理地址访问模式,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
根据本申请的第二方面的第一至第七自适应NVM命令生成方法之一,其中,若识别的访问模式为连续物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,其中读页缓存命令指示从页缓存中读取数据。
根据本申请的第二方面的第十二自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
根据本申请的第二方面的第九或第十自适应NVM命令生成方法,其中,将根据普通读命令从LUN中读出的完整物理页的数据存储于页缓存中。
根据本申请的第二方面的第十四自适应NVM命令生成方法,其中,将数据存储于页缓存中后记录NVM芯片的页缓存中存储的数据的物理地址。
根据本申请的第三方面,提供了根据本申请第三方面的第一自适应NVM命令生成方法,包括:根据来自外部设备的读指令判断是否生成预读消息;若需要生成预读消息,则识别为读指令生成的读消息与预读消息所访问的各个LUN;根据读消息和预读消息在各个LUN上访问的数据大小指示访问各个LUN使用的访问模式。
根据本申请的第三方面的第一自适应NVM命令生成方法,其中,若读消息与预读消息的物理地址指示访问LUN的完整物理页地址,则访问模式为连续物理地址访问模式。
根据本申请的第三方面的第二自适应NVM命令生成方法,其中,若读消息与预读消息的物理地址指示访问LUN的部分物理页地址,则访问模式为随机物理地址访问模式。
根据本申请的第四方面,提供了根据本申请第四方面的第一存储设备,包括:控制部件和NVM芯片,控制部件执行上述任一项所述的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了现有技术的存储设备的框图;
图2是根据本申请实施例的控制部件的介质接口控制器的框图;
图3是根据本申请实施例的控制部件的介质接口控制器的框图;
图4展示了根据本申请实施例的自适应生成NVM命令的示意图;
图5展示了根据本申请又一实施例的自适应生成NVM命令的示意图;
图6是根据本申请实施例的识别读消息的访问模式的流程图;
图7是根据本申请又一实施例的存储设备的框图;
图8展示了根据本申请另一实施例的自适应生成NVM命令的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2是根据本申请实施例的控制部件的介质接口控制器的框图。图2中的介质接口控制器包括NVM命令处理单元210。NVM命令处理单元210接收来自控制部件(也参看图1的控制部件)的访问NVM芯片的消息。来自控制部件的消息可包括指示读出、写入、删除NVM芯片的消息,还可以包括指示读取NVM芯片状态、读取或设置NVM芯片特征(Feature)的消息,以及也可以包括用户自定义消息。NVM命令处理单元210从控制部件获取消息,并根据消息的指示向NVM芯片发送符合NVM芯片接口标准的NVM接口命令或依照NVM芯片接口标准从NVM芯片接收数据或状态。可以理解地,虽然在图2中展示了控制部件向介质接口控制器是提供消息,但介质接口控制器是控制部件的组成部分。控制部件的其他部分产生访问NVM芯片的消息并提供给NVM命令处理单元210。
NVM命令处理单元210耦合到多个NVM芯片。在图2的实施例中,NVM命令处理单元210通过2个通道(通道1与通道2)耦合到4颗NVM芯片,每个NVM芯片包括2个LUN。在通道1的NVM芯片(NVM 0与NVM 1)各自提供LUN 0与LUN 1,在通道2的NVM芯片(NVM 2与NVM 3)各自提供LUN 0与LUN 1。可以理解的,NVM接口控制器可耦合更多的通道,并访问更多的NVM芯片与更多的LUN。
介质接口控制器对多个访问NVM芯片的消息并行处理。NVM命令处理单元可包括多个硬件实例,各个实例并行处理多个NVM接口命令。硬件实例访问各自对应的NVM芯片或LUN。作为举例,硬件实例是CPU以及在CPU上运行的微指令序列。
图3是根据本申请又一实施例的控制部件的介质接口控制器的框图。
NVM命令处理单元310从控制部件获取访问NVM芯片的消息。介质接口控制器耦合到多个LUN(示出为LUN 0、LUN 1、LUN 2与LUN 3)。NVM芯片为各个LUN提供页缓存。通过使用NVM接口命令,NVM命令处理单元310可选地将要写入LUN的数据也存储在页缓存,将从LUN读出的数据存储在页缓存,或者从LUN的页缓存读取数据。
为向NVM芯片的LUN写入数据,介质接口控制器向LUN发出编程命令,并将被编程的数据传输到LUN。LUN收到数据并存储在页缓存中,还将页缓存中的数据存储在LUN的NVM存储介质。为从LUN读出数据,介质接口控制器向LUN发出读命令或者读页缓存的命令,其中读页缓存的命令将LUN的页缓存中的数据读出,并传输给介质接口控制器。
命令处理单元310还为各个LUN维护描述符。图3展示了LUN 0描述符、LUN 1描述符、LUN 2描述符与LUN 3描述符。LUN描述符记录各个LUN被使用的情况,例如,LUN的页缓存中缓存的数据的物理地址、缓存的数据大小,和/或该LUN上的当前预读模式计数。根据本申请的实施例,NVM命令处理单元根据LUN描述符与当前对该LUN的数据访问需求而生成适当种类的NVM接口命令,以优化存储设备的性能。例如,若NVM命令处理单元310识别出要读取的物理地址同页缓存的数据的物理地址一致,则生成读页缓存的命令以低延迟地从页缓存获取要读出的数据;若要读取的数据的物理地址同页缓存的物理地址不同,则生成读命令以从LUN的NVM存储介质获取数据。
图4展示了根据本申请实施例的自适应生成NVM命令的示意图。
NVM命令处理单元310获取读NVM芯片的LUN的读消息(410)。根据收到的读消息识别访问该LUN的多个读消息所形成的访问模式(420),根据访问模式选择为读消息而生成的NVM接口命令(430或440)。
作为举例,若识别出当前的访问模式是连续物理地址访问模式,前面已经处理了连续的多个访问连续物理地址的读消息,则生成普通读命令(430)。利用普通读命令,从LUN读出完整物理页的数据(例如大于读消息要读取的数据量),并提供给控制部件或者缓存在页缓存中。
作为举例,若前面已经处理了连续的多个访问连续物理地址的读消息,响应于又收到访问连续物理地址的读消息,则设置当前的访问模式为连续物理地址访问模式。在连续物理地址访问模式下,后续的读消息以很大几率读取临近于当前读消息访问的物理地址的后续物理地址,并且该后续物理地址对应的数据已被之前的普通读命令读出到控制部件的缓存或页缓存,通过从控制部件的缓存或页缓存获取后续读消息需要的数据将显著降低读消息的处理延迟。可选地,为了简便的目的,利用普通读命令读出的数据的未被读消息所指定的部分,无须被缓存而是被丢弃。
依然作为举例,若识别出当前的访问模式是随机物理地址访问模式,预测前后的读消息访问的物理地址呈随机分布而没有关联,则生成小尺寸读命令(440)。利用小尺寸读命令从LUN读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。NVM芯片处理小尺寸读命令的时间一般短于处理普通读命令的时间,从而也降低了读消息处理延迟。
图5展示了根据本申请又一实施例的自适应生成NVM命令的示意图。
NVM命令处理单元310获取读NVM芯片的LUN的读消息(510)。根据收到的读消息识别访问该LUN的多个读消息所形成的访问模式(520),根据访问模式选择为读消息而生成的NVM接口命令。
作为举例,若识别出当前的访问模式是顺序连续物理地址访问模式,此时有较大概率在页缓存中发现读消息要访问的数据。此时还检查读消息是否命中页缓存(530)。例如,比较读消息访问的物理地址是否被页缓存中的数据的物理地址范围所覆盖。若读消息命中了页缓存,根据读消息生成读页缓存命令(560),以从页缓存获取数据。若读消息未命中页缓存,根据读消息生成普通读命令(540),并将读出的数据除了提供给控制部件,还缓存在页缓存中,以及更新同当前被访问的LUN的LUN描述符,在LUN描述符中记录页缓存中的数据的物理地址。可选地,在一些情况下,估计页缓存被命中的几率不高,而不检查页缓存是否命中,也不将读出数据缓存在页缓存中,从而减少这些不必要的操作来降低读消息的处理延迟。
依然可选地,响应于获取读消息,在识别访问模式之前判断页缓存是否命中。若命中了页缓存,生成读页缓存命令而从页缓存中读出数据。
返回参看图5,作为举例,若识别出当前的访问模式是随机物理地址访问模式,则生成小尺寸读命令(550)。利用小尺寸读命令从LUN读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
可选地,即使识别出当前的访问模式是随机物理地址访问模式,也检查读消息是否命中页缓存。若读消息命中了页缓存,根据读消息生成读页缓存命令,以从页缓存获取数据。若读消息未命中页缓存,根据读消息生成小尺寸读命令,并将读出的数据除了提供给控制部件,还缓存在页缓存中,以及更新同当前被访问的LUN的LUN描述符,在LUN描述符中记录页缓存中的数据的物理地址。依然可选地,若识别出当前的访问模式是随机物理地址访问模式,对于根据小尺寸读命令读出的数据,不将读出的数据缓存在页缓存中,以提高页缓存的命中率。
本申请的实施例提供了多种识别读消息的访问模式的方式。作为举例,根据连续的多条读消息访问连续的物理地址,而识别出当前访问模式是连续物理地址访问模式,反之则识别出当前访问模式是随机物理地址访问模式。作为又一个例子,控制部件提供给NVM命令处理单元的读消息指示了当前访问模式,NVM命令处理单元采用读消息中指示的当前访问模式。
图6是根据本申请再一实施例的识别读消息的访问模式的流程图。
NVM处理单元对各个LUN,应用根据图6的实施例展示的处理流程。如无特别指示,在对根据图6的实施例的描述中,各读消息访问相同的LUN。
根据图6的例子中,响应于收到读消息(610),NVM命令处理单元判断该当前的读消息访问的物理地址是否同上一次读消息访问的物理地址重叠(620)。作为举例,当前的读消息与上一读消息访问的物理地址重叠,意味着对该读消息的处理有机会利用之前读消息的处理结果。例如,在页缓存中存储了待读取的数据,而当前的读消息命中了页缓存。
若判断出当前的读消息与上一读消息访问的物理地址重叠,并将在读消息访问的LUN的描述符中记录的当前预读模式计数(记为C)增加指定的值(记为P),即将C更新为C+P(630)。若判断当前的读消息与上一读消息访问的物理地址不重叠,将在读消息访问的LUN的描述符中记录的当前预读模式计数(记为C)减去指定的值(记为N),即将C更新为C-N(640)。例如,P与N为正整数。
将更新后的当前预读模式计数C同指定阈值T1做比较。若当前预读模式计数C大于阈值T1(650),而识别出当前访问模式是连续物理地址访问模式(660)。若当前预读模式计数C小于阈值T1,再将当前预读模式计数C同指定阈值T2比较,若当前预读模式计数C小于阈值T2(670),而识别出当前访问模式是随机物理地址访问模式(690)。若当前预读模式计数C不小于阈值T2,则不改变在该LUN上的当前访问模式(680)。阈值T1大于或等于阈值T2。
在可选的实施方式中,在步骤650,将更新后的当前预读模式计数C同指定阈值T1做比较。若当前预读模式计数C大于阈值T1,而识别出当前访问模式是连续物理地址访问模式。若当前预读模式计数C小于阈值T1,而识别出当前访问模式是随机物理地址访问模式。
图7是根据本申请又一实施例的存储设备的框图。存储设备的控制部件(也参看图1,控制部件104)通过多个通道耦合到NVM芯片(NVM 0到NVM 7)。图7中,由“CH”以及随后的附图标记指示通道。每个通道可耦合一颗或两颗NVM芯片。以及作为举例,每个NVM芯片提供多个LUN。
图7的实施例中,展示了8个通道,其中CH 0~CH7的每个,被设置了一颗包含4个LUN的NVM芯片(NVM 0到NVM 7)。
控制部件包括对应于各个通道的NVM命令处理单元(图7中未示出)。对于图7展示的8个通道(CH 0到CH7)的每个,由对应的NVM命令处理单元处理访问各自通道上的LUN的消息。
在一些实施例中,对各个LUN的当前访问模式的识别,由控制部件的其他部分(称为全局访问模式识别单元)而非介质接口控制器来处理。通过全局访问模式识别单元得以识别存储设备的完整地址空间上的访问模式,并在提供给介质接口控制器的各个NVM命令处理单元的访问消息中指示各个LUN的当前访问模式。从而NVM命令处理单元可根据消息中携带的对当前访问模式的指示而为处理读消息而生成恰当的NVM接口命令。
图8展示了根据本申请另一实施例的自适应生成NVM命令的示意图。
响应于来自主机或诸如垃圾回收单元的读指令,存储设备的控制部件生成要访问各个LUN的读消息(810),而全局访问模式识别单元为访问各个LUN的读消息生成当前访问模式(820),并将读消息与其当前访问模式一同发送给介质接口控制器。作为举例,全局访问模式识别单元响应于读指令形成了顺序流,为顺序流中的读指令所对应的读消息指示当前访问模式是连续物理地址访问模式,而为非属于顺序流的读指令指示当前访问模式是随机物理地址访问模式。可选地或进一步地,全局访问模式识别单元还响应于对顺序流产生的预读指令所对应的读消息指示当前访问模式是连续物理地址访问模式。由于属于顺序流的读指令或预读指令可能访问较多的数据(例如128KB),控制部件为这样的读指令或预读指令生成访问多个通道的多个读消息,而全局访问模式识别单元为每个读消息都指示其当前访问模式是连续物理地址访问模式。
在申请号为2018103554271的中国专利申请(发明名称为,顺序流检测与数据预读)中提供了顺序流检测与数据预读的方式,将其全文通过引用合并于此。现有技术或将来产生的顺序流检测和/或数据预读技术,也可应用于本申请的实施例而识别读命令形成了顺序流,以及产生预读消息。
参看图8,全局访问模式识别单元为访问每个通道或每个LUN的读消息指示其当前地址访问模式。作为举例,在通道0,为其上的LUN生成的读消息所指示的当前地址访问模式是随机物理地址访问模式,相应地,对应于通道0的NVM命令处理单元生成小尺寸读命令(830),并发送给通道0上的LUN。在通道1-通道3,为其上的LUN生成的读消息所指示的当前地址访问模式是连续物理地址访问模式。以通道2为例,相应地,对应于通道2的NVM命令处理单元根据接收的读消息检查其是否命中页缓存(840)。若读消息命中了页缓存,根据读消息生成读页缓存命令(860),以从通道2上的LUN的页缓存获取数据。若读消息未命中页缓存,根据读消息生成普通读命令以访问通道2上的LUN(850),并将读出的数据除了提供给控制部件,还缓存在通道2上的LUN的页缓存中,以及更新当前被访问的LUN的LUN描述符,在LUN描述符中记录页缓存中的数据的物理地址。可选地,在一些情况下,估计页缓存被命中的几率不高,而不检查页缓存是否命中,也不将读出数据缓存在页缓存中,从而减少这些不必要的操作来降低读消息的处理延迟。
在根据本申请的又一实施方式中,响应于来自主机的读指令,存储设备的控制部件首先检查是否要根据读指令而生成预读消息。若无须生成预读消息,则根据读指令生成发送给介质接口控制器的读消息,并连同读消息而指示当前访问模式为随机地址访问模式。若要根据收到的读指令而生成预读消息,则进一步识别为读指令生成的读消息与预读消息所访问的各个LUN,并根据读消息与预读消息在各个LUN上访问的数据大小而指示对应的LUN使用随机物理地址访问模式还是连续物理地址访问模式。例如,读消息与预读消息指示访问通道0上的LUN 0的完整物理页、通道1上的LUN 1的完整物理页、通道2上的LUN 2的部分物理页,则向对应通道0与通道1的NVM命令处理单元分别指示使用连续物理地址访问模式,向对应通道2的NVM命令处理单元指示使用随机物理地址访问模式。
本申请实施例还提供了一种存储设备,包括:控制部件和NVM芯片,控制部件执行上述实施例中所提供的自适应NVM命令生成方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (35)
1.一种自适应NVM命令生成方法,包括:
获取读NVM芯片提供的LUN的读消息;
识别读消息所形成的访问模式;
根据访问模式生成NVM接口命令;
若识别的访问模式为连续物理地址访问模式,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
2.根据权利要求1所述的自适应NVM命令生成方法,其中,若识别的访问模式为连续物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;
若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,其中读页缓存命令指示从页缓存中读取数据。
3.根据权利要求2所述的自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
4.根据权利要求2或3所述的自适应NVM命令生成方法,其中,若读消息访问的物理地址被页缓存中数据的物理地址覆盖,则命中页缓存;反之,则未命中页缓存。
5.根据权利要求2或3所述的自适应NVM命令生成方法,其中,将根据普通读命令从LUN中读出的完整物理页的数据存储于缓存中;其中,所述缓存为NVM芯片提供的页缓存。
6.根据权利要求5所述的自适应NVM命令生成方法,其中,将数据存储于页缓存中后记录NVM芯片的页缓存中存储的数据的物理地址。
7.根据权利要求2或3所述的自适应NVM命令生成方法,其中,舍弃通过普通读命令从LUN中读出的数据中未被读消息所指定的部分。
8.根据权利要求1至3任一项所述的自适应NVM命令生成方法,其中,若识别的访问模式为随机物理地址访问模式,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
9.根据权利要求1至3任一项所述的自适应NVM命令生成方法,其中,若识别读消息为随机物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,从页缓存中读取数据。
10.根据权利要求9所述的自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
11.根据权利要求9所述的自适应NVM命令生成方法,其中,将小尺寸读命令从LUN中读出的数据存储于页缓存中。
12.根据权利要求11所述的自适应NVM命令生成方法,其中,将数据缓存于页缓存中后记录NVM芯片的页缓存中存储的数据的物理地址。
13.根据权利要求1至3任一项所述的自适应NVM命令生成方法,其中,根据连续多条读消息访问的物理地址连续,识别出当前访问模式为连续物理地址访问模式。
14.根据权利要求1至3任一项所述的自适应NVM命令生成方法,其中,若连续多条读消息访问的物理地址不连续,则识别出当前访问模式为随机物理地址访问模式。
15.根据权利要求1至3任一项所述的自适应NVM命令生成方法,其中,若当前预读模式计数大于阈值T1,则识别出当前的访问模式是连续物理地址访问模式。
16.根据权利要求15所述的自适应NVM命令生成方法,其中,若更新后当前预读模式计数小于阈值T1,则识别出当前的访问模式是随机物理地址访问模式。
17.根据权利要求15所述的自适应NVM命令生成方法,其中,当前预读模式计数小于阈值T2,并且阈值T1不小于阈值T2,则识别出当前的访问模式是随机物理地址访问模式。
18.根据权利要求17所述的自适应NVM命令生成方法,其中,若当前预读模式计数小于阈值T1,且不小于阈值T2,则不改变在所述LUN上的当前访问模式。
19.根据权利要求15所述的自适应NVM命令生成方法,其中,若当前读消息访问的物理地址同上一次读消息访问的物理地址重叠,将读消息访问的LUN的当前预读模式计数增加指定的值;若当前读消息访问的物理地址同上一次读消息访问的物理地址不重叠,将读消息访问的LUN的当前预读模式计数减去指定的值。
20.一种自适应NVM命令生成方法,包括:
获取读NVM芯片提供的LUN的读消息;
根据读消息中指示的访问模式生成NVM接口命令;
若访问模式为连续物理地址访问模式,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
21.根据权利要求20所述的自适应NVM命令生成方法,其中,还包括:
根据来自外部设备的读指令生成访问模式在根据读指令生成的访问LUN的读消息中指示访问模式。
22.根据权利要求21所述的自适应NVM命令生成方法,其中,若来自外部设备的读指令形成了顺序流,则为顺序流中读指令所对应的读消息所指示的访问模式为连续物理地址访问模式。
23.根据权利要求22所述的自适应NVM命令生成方法,其中,非顺序流中的读指令所对应的读消息指示的访问模式为随机物理地址访问模式。
24.根据权利要求22所述的自适应NVM命令生成方法,其中,为对顺序流产生的预读指令所对应的读消息所指示的访问模式为连续物理地址访问模式。
25.根据权利要求22至24任一项所述的自适应NVM命令生成方法,其中,为顺序流中读指令生成访问第一通道的第一LUN的第一读消息,与访问第二通道的第二LUN的第二读消息,并为第一读消息与第二读消息指示的访问模式为连续物理地址访问模式。
26.根据权利要求21所述的自适应NVM命令生成方法,其中,在根据读指令生成的访问至少两个LUN的读消息中指示相同的访问模式。
27.根据权利要求21至24任一项所述的自适应NVM命令生成方法,其中,若识别的访问模式为随机物理地址访问模式,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
28.根据权利要求21至24任一项所述的自适应NVM命令生成方法,其中,若识别的读消息为随机物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,从页缓存中读取数据。
29.根据权利要求28所述的自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为小尺寸读命令,其中小尺寸读命令指示从LUN中读出小于完整物理页大小的数据或同读消息要读取的数据大小相同的数据。
30.根据权利要求20至24任一项所述的自适应NVM命令生成方法,其中,若识别的访问模式为连续物理地址访问模式,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
31.根据权利要求20至24任一项所述的自适应NVM命令生成方法,其中,若识别的访问模式为连续物理地址访问模式,还检查读消息是否命中NVM芯片提供的页缓存;若读消息命中页缓存,则生成的NVM接口命令为读页缓存命令,其中读页缓存命令指示从页缓存中读取数据。
32.根据权利要求31所述的自适应NVM命令生成方法,其中,若读消息未命中页缓存,则生成的NVM接口命令为普通读命令,其中普通读命令指示从LUN中读出完整物理页的数据。
33.根据权利要求28所述的自适应NVM命令生成方法,其中,将根据普通读命令从LUN中读出的完整物理页的数据存储于页缓存中。
34.根据权利要求33所述的自适应NVM命令生成方法,其中,将数据存储于页缓存中后记录NVM芯片的页缓存中存储的数据的物理地址。
35.一种存储设备,包括:控制部件和NVM芯片,所述控制部件执行如权利要求1至34任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810581871.5A CN110580227B (zh) | 2018-06-07 | 2018-06-07 | 自适应nvm命令生成方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810581871.5A CN110580227B (zh) | 2018-06-07 | 2018-06-07 | 自适应nvm命令生成方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110580227A CN110580227A (zh) | 2019-12-17 |
CN110580227B true CN110580227B (zh) | 2024-04-12 |
Family
ID=68809713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810581871.5A Active CN110580227B (zh) | 2018-06-07 | 2018-06-07 | 自适应nvm命令生成方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110580227B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791790B (zh) * | 2022-06-22 | 2022-09-09 | 北京得瑞领新科技有限公司 | Ssd读性能优化方法、装置、存储介质及存储设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197141A (en) * | 1988-01-30 | 1993-03-23 | Nec Corporation | Software controlled method of issuing hardware control commands to memory controller from prefetch unit by combining request code and address specified in program instructions |
CN106951374A (zh) * | 2016-01-06 | 2017-07-14 | 北京忆芯科技有限公司 | 用于检查块页地址的方法及其装置 |
CN107797760A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 基于缓存优化写命令处理的方法、装置与驱动器 |
CN107797938A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 加快去分配命令处理的方法与存储设备 |
CN107797759A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 访问缓存信息的方法、装置与驱动器 |
CN107885456A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 减少io命令访问nvm的冲突 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102070136B1 (ko) * | 2013-05-03 | 2020-01-28 | 삼성전자주식회사 | 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 |
-
2018
- 2018-06-07 CN CN201810581871.5A patent/CN110580227B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197141A (en) * | 1988-01-30 | 1993-03-23 | Nec Corporation | Software controlled method of issuing hardware control commands to memory controller from prefetch unit by combining request code and address specified in program instructions |
CN106951374A (zh) * | 2016-01-06 | 2017-07-14 | 北京忆芯科技有限公司 | 用于检查块页地址的方法及其装置 |
CN107797760A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 基于缓存优化写命令处理的方法、装置与驱动器 |
CN107797938A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 加快去分配命令处理的方法与存储设备 |
CN107797759A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 访问缓存信息的方法、装置与驱动器 |
CN107885456A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 减少io命令访问nvm的冲突 |
Also Published As
Publication number | Publication date |
---|---|
CN110580227A (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10564853B2 (en) | System and method for locality detection to identify read or write streams in a memory device | |
US11500772B2 (en) | Method and apparatus for cache write overlap handling | |
CN106448737B (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
CN108920387B (zh) | 降低读延迟的方法、装置、计算机设备及存储介质 | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
US12111759B2 (en) | Method and storage device for parallelly processing the deallocation command | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
US8255663B2 (en) | System and method for processing read request | |
US20170270045A1 (en) | Hybrid memory device and operating method thereof | |
US20190035445A1 (en) | Method and Apparatus for Providing Low Latency Solid State Memory Access | |
US10120793B2 (en) | Memory device and non-transitory computer readable recording medium | |
US20230342294A1 (en) | Memory device and non-transitory computer readable recording medium | |
CN108572932B (zh) | 多平面nvm命令融合方法与装置 | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
CN112765055B (zh) | 存储设备的控制部件 | |
CN108628759B (zh) | 乱序执行nvm命令的方法与装置 | |
CN110580227B (zh) | 自适应nvm命令生成方法与装置 | |
CN111290974B (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN112148626A (zh) | 压缩数据的存储方法及其存储设备 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
KR102692838B1 (ko) | 저장 디바이스들에 대한 강화된 선판독 능력 | |
CN111258491B (zh) | 降低读命令处理延迟的方法与装置 | |
CN114610654A (zh) | 一种固态存储设备以及向其写入数据的方法 | |
CN112578993B (zh) | 多平面nvm处理编程出错的方法与存储设备 | |
CN109213424B (zh) | 并发io命令的无锁处理方法 |
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 | ||
CB02 | Change of applicant information |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |