CN116661684B - 一种闪存数据的读取方法、***、设备及介质 - Google Patents
一种闪存数据的读取方法、***、设备及介质 Download PDFInfo
- Publication number
- CN116661684B CN116661684B CN202310528987.3A CN202310528987A CN116661684B CN 116661684 B CN116661684 B CN 116661684B CN 202310528987 A CN202310528987 A CN 202310528987A CN 116661684 B CN116661684 B CN 116661684B
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- request
- reading
- read
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 355
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000013507 mapping Methods 0.000 claims abstract description 135
- 230000008569 process Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- 239000007787 solid Substances 0.000 description 5
- 101150064138 MAP1 gene Proteins 0.000 description 4
- 101100075995 Schizosaccharomyces pombe (strain 972 / ATCC 24843) fma2 gene Proteins 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 101100456045 Schizosaccharomyces pombe (strain 972 / ATCC 24843) map3 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 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 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 229940044442 onfi Drugs 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- LZIAMMQBHJIZAG-UHFFFAOYSA-N 2-[di(propan-2-yl)amino]ethyl carbamimidothioate Chemical compound CC(C)N(C(C)C)CCSC(N)=N LZIAMMQBHJIZAG-UHFFFAOYSA-N 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Software Systems (AREA)
- Read Only Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种闪存数据的读取方法、***、设备及介质,属于存储设备技术领域。方法包括:获取多个闪存数据读取请求,并存放至预设的命令队列中;根据命令队列向闪存发出多个闪存数据读取请求;确定命令队列中的第一数据读取请求和第二数据读取请求;在闪存中使用cache操作读取第一数据读取请求,根据第一数据读取请求进入对应的忙碌状态,以读取第一映射表,并在忙碌状态中使用cache操作读取第二数据读取请求;当第一映射表读取完成后,根据第一映射表获取与第一数据读取请求对应的目标数据,并在根据第二数据读取请求进入对应的忙碌状态之前返回目标数据。本申请能够提高闪存的带宽利用率,提高闪存数据的读取速度。
Description
技术领域
本申请涉及存储设备技术领域,尤其涉及一种闪存数据的读取方法、***、设备及介质。
背景技术
固态硬盘(Solid State Disk,SSD)***中主要包括主控芯片、闪存颗粒和缓存单元三大组件,其中主控芯片承接了整个数据中转,连接闪存芯片和外部接口。闪存颗粒具有读,写,擦除等功能,闪存,其中,NAND闪存是Flash内存的一种。
相关技术中,闪存中需要一个闪存转换层在闪存芯片上实现了一个虚拟块设备,主要透过映射表来把逻辑地址映射到闪存的物理地址。NAND闪存在读取映射表后,会进入Ready Busy状态,不能进行其他操作,必须等到映射表读取完成后才能读数据,闪存的带宽利用率低,降低了闪存数据的读取速度。
发明内容
本申请实施例的主要目的在于提出一种闪存数据的读取方法、***、设备及介质,能够提高闪存的带宽利用率,提高闪存数据的读取速度。
为实现上述目的,本申请实施例的第一方面提出了一种闪存数据的读取方法,所述方法包括:获取多个闪存数据读取请求,并将多个所述闪存数据读取请求存放至预设的命令队列中;根据所述命令队列向闪存发出多个所述闪存数据读取请求;确定所述命令队列中的一个所述闪存数据读取请求为第一数据读取请求,以及所述第一数据读取请求之后的若干个所述闪存数据读取请求为第二数据读取请求;在闪存中使用cache操作读取所述第一数据读取请求,根据所述第一数据读取请求进入对应的忙碌状态,以读取所述第一数据读取请求对应的第一映射表,并在所述忙碌状态中使用cache操作读取所述第二数据读取请求;当所述第一映射表读取完成后,根据所述第一映射表获取与所述第一数据读取请求对应的目标数据,并在根据所述第二数据读取请求进入对应的忙碌状态之前返回所述目标数据。
在一些实施例中,所述第二数据读取请求有多个,所述第二数据读取请求中包括第三数据读取请求和第四数据读取请求,其中,所述第三数据读取请求与所述第一数据读取请求之间共用同一个所述第一映射表;所述根据所述第一映射表获取与所述第一数据读取请求对应的目标数据,并在根据所述第二数据读取请求进入对应的忙碌状态之前返回所述目标数据,包括:根据所述第一映射表获取所述第一数据读取请求对应的第一目标数据,并实时返回所述第一目标数据;根据所述第一映射表获取所述第三数据读取请求对应的第二目标数据,并实时返回所述第二目标数据,之后根据所述第四数据读取请求进入对应的忙碌状态。
在一些实施例中,所述闪存数据读取请求还包括第五数据读取请求;所述方法还包括:在完成所述第二数据读取请求所需要的目标数据的获取后,在闪存中使用cache操作读取所述第五数据读取请求;若所述第五数据读取请求与所述第一数据读取请求之间共用同一个所述第一映射表,直接根据所述第一映射表获取所述第五数据读取请求对应的第三目标数据,并实时返回所述第三目标数据。
在一些实施例中,所述确定所述命令队列中的一个所述闪存数据读取请求为第一数据读取请求,以及所述第一数据读取请求之后的若干个所述闪存数据读取请求为第二数据读取请求,包括:为所述命令队列中的所述闪存数据读取请求配置对应的读取优先级;按照所述读取优先级对多个所述闪存数据读取请求进行排序,其中,所述闪存数据读取请求包括第一数据读取请求和第二数据读取请求,所述第一数据读取请求的读取优先级大于所述第二数据读取请求的读取优先级。
在一些实施例中,所述为所述命令队列中的所述闪存数据读取请求配置对应的读取优先级,包括:获取各个所述闪存数据读取请求进入所述命令队列的时间,根据进入所述命令队列的时间先后顺序确定各个所述闪存数据读取请求对应的读取优先级;或者,获取各个所述闪存数据读取请求所需要的映射表,累计共用对应的映射表的请求数量,并按照同一个映射表对应的请求数量大小,确定各个所述闪存数据读取请求对应的读取优先级;或者,获取各个所述闪存数据读取请求所要读取的数据类型,按照所述数据类型的不同,确定各个所述闪存数据读取请求对应的读取优先级。
在一些实施例中,所述根据所述命令队列向闪存发出多个所述闪存数据读取请求,包括:获取预设的时间阈值或数量阈值;记录所述闪存数据读取请求进入所述命令队列的时间,直至到达所述时间阈值后,根据所述命令队列向闪存发出在所述时间阈值表征的时间范围内获得的多个所述闪存数据读取请求;或者,累计进入所述命令队列中的所述闪存数据读取请求的数量,直至达到所述数量阈值后,根据所述命令队列向闪存发出在所述数量阈值表征的数量范围内获得的多个所述闪存数据读取请求。
在一些实施例中,所述方法还包括:在闪存中使用cache操作读取所述闪存数据读取请求的过程中,获取请求增加或删除指令;根据所述请求增加或删除指令,增加或删除所述命令队列中的所述闪存数据读取请求,得到更新后的所述命令队列;在闪存中使用cache操作读取依次读取更新后的所述命令队列中的所述闪存数据读取请求。
为实现上述目的,本申请实施例的第二方面提出了一种闪存数据的读取***,所述***包括:队列存放模块,用于获取多个闪存数据读取请求,并将多个所述闪存数据读取请求存放至预设的命令队列中;请求发送模块,用于根据所述命令队列向闪存发出多个所述闪存数据读取请求;顺序确定模块,用于确定所述命令队列中的一个所述闪存数据读取请求为第一数据读取请求,以及所述第一数据读取请求之后的若干个所述闪存数据读取请求为第二数据读取请求;闪存读写模块,用于在闪存中使用cache操作读取所述第一数据读取请求,根据所述第一数据读取请求进入对应的忙碌状态,以读取所述第一数据读取请求对应的第一映射表,并在所述忙碌状态中使用cache操作读取所述第二数据读取请求;数据返回模块,用于当所述第一映射表读取完成后,根据所述第一映射表获取与所述第一数据读取请求对应的目标数据,并在根据所述第二数据读取请求进入对应的忙碌状态之前返回所述目标数据。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面实施例所述的闪存数据的读取方法。
为实现上述目的,本申请实施例的第四方面提出了一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面实施例所述的闪存数据的读取方法。
本申请实施例提出的闪存数据的读取方法、***、设备及介质,闪存数据的读取方法可以应用在闪存数据的读取***中。通过执行闪存数据的读取方法,将多个闪存数据读写请求存放至命令队列中,随后向闪存中发送,闪存中使用cache操作读取数据,并在读取签一个请求进入忙碌状态过程中,使用cache操作读取下一个请求,使得闪存在进行忙碌也能先执行请求的读取,并在完成一项映射表的读取后,即可获取请求所需要的目标数据,并在下一个请求的忙碌状态进行之前将得到的目标数据返回,从而可以提高闪存的带宽利用率,提高闪存数据的读取速度。
附图说明
图1是本申请实施例提供的闪存数据的读取方法的流程示意图;
图2是本申请实施例提供的现有技术与本申请实施例方法进行闪存数据的读取的对比示意图;
图3是图1中的步骤S105的流程示意图;
图4是本申请实施例提供的进行闪存数据的读取示意图;
图5是本申请实施例提供的读取第五数据读取请求的流程示意图;
图6是本申请另一个实施例提供的进行闪存数据的读取示意图;
图7是图1中的步骤S103的流程示意图;
图8是图7中的步骤S401的流程示意图;
图9是图1中的步骤S102的流程示意图;
图10是本申请实施例提供的响应增加或删除指令的流程示意图;
图11是本申请实施例提供的闪存数据的读取***的功能模块示意图;
图12是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
固态硬盘(Solid State Device,SSD)具有存取速度快和抗震性能好等优点,固态硬盘的主要存储介质为闪存介质,根据闪存基本储存单元的连接方式不同,可以把闪存产品分为四大类。分别为:NAND闪存、NOR闪存、DINOR(Divided Bit-Line NOR)闪存和AND闪存。
其中,NAND闪存是Flash内存的一种,属于非易失性半导体存储器,一个NAND闪存为一个设备(device),一个设备可以由1个或多个晶片(Die)构成,一个晶片可以分成多个闪存片(Plane),一个闪存片可以分成若干个闪存块(Block),一个块又被分成很多个闪存页(Page)。闪存中需要一个闪存转换层在闪存芯片上实现了一个虚拟块设备,主要透过映射表来把逻辑地址映射到闪存的物理地址,具体的,透过存储器控制芯片将数据写入闪存时,会在每个闪存页的备用区间放入标记,建立逻辑地址映射表,就将每个闪存页中的备用区间数据读取出来即可建立回逻辑地址映射表。
NAND闪存在读取映射表后,会进入Ready Busy状态,然而,相关技术中,NAND闪存进入busy状态不能进行其他操作,需要等NAND闪存重新回到Ready状态才能继续其他操作,比如读,写,擦除等操作。因此闪存的带宽利用率低,降低了闪存数据的读取速度,也影响了闪存的随机读性能。
基于此,本申请实施例提供了一种闪存数据的读取方法、***、设备及介质,可以提高闪存的带宽利用率,提高闪存数据的读取速度,也可以提高闪存的随机读性能。
本申请实施例可以应用在NAND闪存中,在满足本申请实施例要求的前提下,还可以应用在其他闪存中,在此不做具体限制。
本申请实施例提供的闪存数据的读取方法、***、设备及介质,具体通过如下实施例进行说明,首先描述本申请实施例中的闪存数据的读取方法。
图1是本申请实施例提供的闪存数据的读取方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S101至步骤S105。
步骤S101,获取多个闪存数据读取请求,并将多个闪存数据读取请求存放至预设的命令队列中;
示例性的,闪存数据的读取方法(可简称方法)应用在闪存中,或闪存所处的终端或服务器端中。其中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式***,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器。
闪存数据读取请求用于是一个数据请求,是对闪存的读取请求,用于请求读取所需要的数据,该数据存放于闪存中。闪存数据读取请求有多个,可以分别请求获取对应的数据,这些数据可以是不同类型的数据,可以存放在闪存中的不同块中。
命令队列是本申请实施例中所建立的,用于存放闪存数据读取请求的信息队列。本申请实施例中通过建立命令队列,可以提高请求处理的效率,面对多个请求时,可以通过命令队列收集,并统一将请求发送给闪存中进行处理。
步骤S102,根据命令队列向闪存发出多个闪存数据读取请求;
命令队列在存放多个请求后,可以将队列中的请求统一发送到闪存中。可以理解的是,命令队列是存放于主控单元中,主控单元设置有存储模块以存储命令队列,主控单元可以将命令队列中的多个闪存数据读取请求,发送到闪存中,以便闪存进行数据读取。
步骤S103,确定命令队列中的一个闪存数据读取请求为第一数据读取请求,以及第一数据读取请求之后的若干个闪存数据读取请求为第二数据读取请求;
命令队列中的闪存数据读取请求之间是有顺序的,确定好闪存数据读取请求之间的顺序,以便闪存进行请求读取的时候,可以按照顺序进行。闪存数据读取请求有多个,为了方便描述,闪存数据读取请求中包含有第一数据读取请求和第二数据读取请求,“第一数据读取请求”和“第二数据读取请求”之间仅是请求不同,代表不同的请求。
示例性的,本申请实施例中确定命令队列中的一个闪存数据读取请求为第一数据读取请求,第一数据读取请求可以是闪存中第一个读取的请求,也可以是表示某一时刻读取的一个请求。本申请实施例中还需要确定第一数据读取请求之后的若干个闪存数据读取请求为第二数据读取请求,因此,第二数据读取请求的读取顺序是位于第一数据读取请求之后的,第二数据读取请求可以是命令队列中的第二个请求,而当第一数据读取请求不是位于命令队列中的首位时,第二数据读取请求就不是位于队列中的第二个了,其读取顺序随着第一数据读取请求的变化而变化。
第一数据读取请求有一个,表示的是当前所读取的一个请求。第二数据读取请求可以为一个,也可以为多个,当第二数据读取请求为一个时,表示的是闪存读取顺序位于第一数据读取请求之后的那一个闪存数据读取请求,当第二数据读取请求为多个时,表示的是闪存读取顺序位于第一数据读取请求之后的那多个闪存数据读取请求,这些请求之间可以是间隔设置的,也可以是连续的,可以不做具体限制。
步骤S104,在闪存中使用cache操作读取第一数据读取请求,根据第一数据读取请求进入对应的忙碌状态,以读取第一数据读取请求对应的第一映射表,并在忙碌状态中使用cache操作读取第二数据读取请求;
示例性的,NAND闪存芯片支持“cache read”的命令,也即支持cache操作。闪存在onfi接口标准中定义了“read cache”系列命令,包括“read cache sequential”与“readcache random”等。toggle接口标准中定义了类似的“sequentialcacheread”与“randomcacheread”命令。本申请实施例中,将“cacheread”系列命令、“read cache”系列命令等统称为“cache read(快速读取)”命令。主控单元可以向NAND闪存芯片发出的“cacheread”命令,指示NAND芯片从页寄存器读出一个数据页。
本申请实施例中为了实现异步读取数据,在闪存中通过cache操作实现数据的读取,使用cache操作即发出对应的“cache read”的命令。具体的,本申请实施例在闪存中使用cache操作读取第一数据读取请求,读取之后需要读取第一数据读取请求对应的映射表,读取第一数据读取请求的时间是比读取映射表的时间短的,闪存在加载映射表的过程中,会进入Ready Busy状态,简称RB状态,也即忙碌状态,本申请实施例中将第一数据读取请求所需要的映射表描述为第一映射表。
然而,为了实现异步读取数据,提高闪存的带宽利用率,本申请实施例中充分利用闪存的忙碌状态,由于闪存芯片支持“cache read”的命令,因此在忙碌状态中使用cache操作读取第二数据读取请求。可以理解的是,若第二数据读取请求有多个,则在读取第一映射表的忙碌状态中,闪存可以读取多个第二数据读取请求,直至忙碌状态结束,也即直至第一映射表读取完成,若第一映射表完成读取,本申请实施例还需要进一步的操作。
步骤S105,当第一映射表读取完成后,根据第一映射表获取与第一数据读取请求对应的目标数据,并在根据第二数据读取请求进入对应的忙碌状态之前返回目标数据。
示例性的,每一个闪存数据读取请求都请求读取一个数据,本申请实施例中将根据闪存数据读取请求读取到的数据描述为目标数据,可以理解的是,目标数据是存放在闪存数据页中的数据。
示例性的,在上述忙碌状态结束后,第一映射表读取完成,映射表是把逻辑地址映射到闪存的物理地址的表,因此基于第一数据读取请求,可以从映射表中找到所需要的数据,得到目标数据,由于先前进入的是读取第一映射表的忙碌状态,而第二数据读取请求也已经读取完成,需要进入第二数据读取请求对应的第二映射表读取的忙碌状态,但是,本申请实施例中为了提高随机读取的性能,在第一数据读取请求得到的目标数据获取后,就将目标数据返回,包括返回给主控单元,并在完成目标数据的返回后,才进入第二数据读取请求对应的忙碌状态,也就是第二映射表读取的忙碌状态。
如图2所示,图2上方是现有技术中进行闪存数据读取的示意图,图2上方中的map1表示读取第一数据读取请求、RB1表示读取第一映射表的忙碌状态、Date1表示读取到第一数据读取请求所需要的目标数据、map2表示读取第二数据读取请求、RB2表示读取第二数据读取请求对应的映射表的忙碌状态、Date2表示读取到第二数据读取请求所需要的目标数据。图2下方是采用本申请实施例中的方法后进行闪存数据读取的示意图,其各个字符表示的内容与图2上方相同,在此不做赘述。
由图2可知,现有技术中的闪存进入忙碌状态不能进行其他操作,需要等闪存重新回到读取状态才能继续其他操作,这样需要每个请求一个一个轮候执行。但是本申请实施例中,利用了读取映射表的忙绿阶段,使用cache操作读取下一个请求,后续先读到的数据就先行返回,从而可以提高闪存的带宽利用率,提高闪存数据的读取速度,也提高了闪存的随机读性能,尤其是面对众多请求时,本申请实施例所带来的优势更加明显。
综上,本申请实施例通过执行闪存数据的读取方法,将多个闪存数据读写请求存放至命令队列中,随后向闪存中发送,闪存中使用cache操作读取数据,并在读取签一个请求进入忙碌状态过程中,使用cache操作读取下一个请求,使得闪存在进行忙碌也能先执行请求的读取,并在完成一项映射表的读取后,即可获取请求所需要的目标数据,并在下一个请求的忙碌状态进行之前将得到的目标数据返回,从而可以提高闪存的带宽利用率,提高闪存数据的读取速度,也提高了闪存的随机读性能。
示例性的,第二数据读取请求有多个,为了方便描述,本申请实施例的第二数据读取请求中包括第三数据读取请求和第四数据读取请求,其中,第三数据读取请求和第四数据读取请求均为第一数据读取请求之后的两个请求,第三数据读取请求与第一数据读取请求之间共用同一个第一映射表,不仅如此,第三数据读取请求也可以泛指多个与第一数据读取请求之间共用同一个第一映射表的请求,第四数据读取请求则可以泛指第三数据读取请求之后的多个需要其他映射表的请求。
示例性的,第二数据读取请求之后还可以有其他的闪存数据读取请求,当第一数据读取请求的忙碌状态完成之后,得到了第一映射表,此时已经完成第二数据读取请求的读取,尚未进入第二数据读取请求对应的忙碌状态,本申请实施例还可以包括如下:
请参阅图3,在一些实施例中,步骤S105可以包括步骤S201至步骤S202:
步骤S201,根据第一映射表获取第一数据读取请求对应的第一目标数据,并实时返回第一目标数据;
步骤S202,根据第一映射表获取第三数据读取请求对应的第二目标数据,并实时返回第二目标数据,之后根据第四数据读取请求进入对应的忙碌状态。
示例性的,在完成第一映射表的读取后,第一数据读取请求的读取先于其他请求,因此先根据第一映射表获取第一数据读取请求对应的第一目标数据,并实时返回第一目标数据,其中,为了方便描述,将第一数据读取请求所需要读取的数据描述为第一目标数据。
接着,由于事先已经在读取第一映射表的忙碌状态中,完成了第三数据读取请求和第四数据读取请求的读取操作,且第三数据读取请求与第一数据读取请求之间共用同一个第一映射表,此时不再需要通过进入忙碌状态来获取第一映射表,而是直接利用已经获取到的第一映射表,直接根据第一映射表获取第三数据读取请求对应的第二目标数据,并实时返回第二目标数据,为了方便描述,将第三数据读取请求所需要读取的数据描述为第二目标数据。
而由于第四数据读取请求所需要的映射表不是第一映射表,当前没有获取到其所需要的映射表,因此需要根据第四数据读取请求进入对应的忙碌状态,以获取第四数据读取请求所需要的映射表。
如图4所示,图4中的map1表示读取第一数据读取请求、RB1表示读取第一映射表的忙碌状态、Date1表示读取到第一数据读取请求所需要的目标数据、map2表示读取第三数据读取请求、map3表示读取第四数据读取请求、Date2表示读取到第三数据读取请求所需要的目标数据、RB3表示读取第四数据读取请求对应的映射表的忙碌状态、Date3表示读取到第四数据读取请求所需要的目标数据。
由图4可知,执行完map1后,闪存进入RB1这一忙碌状态,并在RB1时完成了map2和map3的执行,完成了第三数据读取请求和第四数据读取请求的读取,在RB1完成后,可以先获取得到Date1并返回,此时由于第三数据读取请求与第一数据读取请求之间共用同一个第一映射表,因此此时可以获取得到Date2并返回,由于第四数据读取请求所需要的映射表还没读取得到,因此进入RB3,随后在读取完所需要的映射表后,获取得到Date3并返回。
本申请实施例中是将多个闪存数据读取请求放在一个命令队列中,闪存根据命令队列中的请求进行数据读取,此时若在完成一类映射表的读取后,后续若有出现需要同类映射表的请求,则不再需要浪费时间重复进行映射表的读取,可以直接利用已经获取到的映射表,获取数据并返回,并在返回数据之后才进入下一个映射表读取的忙碌状态,因此,进一步提高了闪存数据读取的速度,也提高了闪存的随机读性能。
示例性的,第二数据读取请求之后还可以有其他的闪存数据读取请求,当获取完第二数据读取请求所需要的数据之后,还可以继续执行第二数据读取请求之后的请求。为了放便描述,闪存数据读取请求还包括第五数据读取请求,第五数据读取请求是命令队列中位于第二数据获取请求之后的请求,本申请实施例还可以包括如下:
请参阅图5,在一些实施例中,闪存数据的读取方法还可以包括步骤S301至步骤S302:
步骤S301,在完成第二数据读取请求所需要的目标数据的获取后,在闪存中使用cache操作读取第五数据读取请求;
步骤S302,若第五数据读取请求与第一数据读取请求之间共用同一个第一映射表,直接根据第一映射表获取第五数据读取请求对应的第三目标数据,并实时返回第三目标数据。
示例性的,在完成第二数据读取请求所需要的目标数据的获取后,此时若后续的闪存数据读取请求还没有读取,则需要继续进入读取状态。若第二数据读取请求之后还有第五数据读取请求,则闪存中继续使用cache操作读取第五数据读取请求。
第五数据读取请求所需要的映射表可能在之前中并没有被闪存读取,此时就需要继续进入对应的忙碌状态,以获取第五数据读取请求所需要的映射表;反之,若第五数据读取请求所需要的映射表在之前已经被闪存读取,则不再需要进入对应的忙碌状态。示例性的,若第五数据读取请求与第一数据读取请求之间共用同一个第一映射表,则可以直接根据第一映射表获取第五数据读取请求对应的第三目标数据,并实时返回第三目标数据,为了方便描述,将第五数据读取请求所需要读取的数据描述为第三目标数据。
如图6所示,图6是图4之后又执行第五数据处理请求的示意图,其中,相比图4增了map4和Date4,图6中的map4表示读取第五数据读取请求、Date4表示读取到第五数据读取请求所需要的目标数据,也即第三目标数据。
由图6可知,Date3获取并返回后,此时闪存需要读取第五数据读取请求,而第五数据读取请求在之前的忙碌状态中并没有被读取,因此随后执行map4,而此时第五数据读取请求与第一数据读取请求之间共用同一个第一映射表,第一映射表又已经获取完毕,因此直接根据第一映射表获取第五数据读取请求对应的Date4,并返回Date4。
因此,本申请实施例中在执行任务队列中的请求时,若后续读取的请求所需要的映射表已经读取完毕,则可以直接用之前读取到的映射表,无需多余地进入忙碌状态,节省了闪存数据读取的时间。
请参阅图7,在一些实施例中,步骤S103可以包括步骤S401至步骤S402:
步骤S401,为命令队列中的闪存数据读取请求配置对应的读取优先级;
步骤S402,按照读取优先级对多个闪存数据读取请求进行排序,其中,闪存数据读取请求包括第一数据读取请求和第二数据读取请求,第一数据读取请求的读取优先级大于第二数据读取请求的读取优先级。
示例性的,本申请实施例中可以根据读取优先级配置命令队列中各个闪存数据读取请求的顺序。具体的,本申请实施例中为命令队列中的闪存数据读取请求配置对应的读取优先级,读取优先级可以表示各个请求的读取优先顺序,比如,若某个请求优先级大于另一个请求的优先级,则该请求在闪存中先于另一个请求被读取,且其所需要的数据也先于另一个请求的数据被返回。
因此,本申请实施例按照读取优先级对多个闪存数据读取请求进行排序,按照读取优先级的大小进行排序,其中,上述实施例中闪存数据读取请求包括第一数据读取请求和第二数据读取请求,第一数据读取请求的读取优先级大于第二数据读取请求的读取优先级,因此第一数据读取请求先于第二数据读取请求被闪存读取。本申请实施例中通过为请求划分读取优先级,使得重要的数据先可以先被获取,提高了用户的闪存数据读取体验和效率。
需要说明的是若多个请求的读取优先级一样,则可以随机对这些请求进行排列,也可以获取用户的自定义配置信息,根据用户的自定义配置信息对这些读取优先级一样的请求进行排列。
请参阅图8,在一些实施例中,步骤S401可以包括步骤S501至步骤S503:
步骤S501,获取各个闪存数据读取请求进入命令队列的时间,根据进入命令队列的时间先后顺序确定各个闪存数据读取请求对应的读取优先级;
步骤S502,或者,获取各个闪存数据读取请求所需要的映射表,累计共用对应的映射表的请求数量,并按照同一个映射表对应的请求数量大小,确定各个闪存数据读取请求对应的读取优先级;
步骤S503,或者,获取各个闪存数据读取请求所要读取的数据类型,按照数据类型的不同,确定各个闪存数据读取请求对应的读取优先级。
示例性的,读取优先级的获取方式有多种。
示例性的,可以根据各个闪存数据读取请求进入命令队列的时间先后顺序来确定读取优先级,具体的,本申请实施例中可以记录各个闪存数据读取请求进入命令队列的时间,并根据进入命令队列的时间先后顺序确定各个闪存数据读取请求对应的读取优先级,其中,对于先进入命令队列的请求,所确定的读取优先级,先于后续进入命令队列的请求,使得本申请实施例中先进入命令队列的请求可以被先读取,并返回所需要的数据。
示例性的,可以根据各个闪存数据读取请求所需要的映射表来确定读取优先级,具体的,本申请实施例中可以获取各个闪存数据读取请求所需要的映射表,并累计共用对应的映射表的请求数量,并按照同一个映射表对应的请求数量大小,确定各个闪存数据读取请求对应的读取优先级,其中,若一部分请求所需要映射表相同,则记录这些请求的数量,当有多个映射表都对应有多个请求时,对这些请求的数量大小进行排序,将需要同一份映射表最多的请求列较高的优先级,反之,将那些只需要一张映射表的请求列为较低的优先级,使得本申请实施例中可以集中处理需要同一张映射表的请求,在应用中,可以在同一读取优先级的请求中的头一个请求进入忙碌状态后,就完成同一读取优先级请求的读取,随后一起根据同一份映射表返回所需要的数据,提高了闪存数据的获取效率。
示例性的,可以根据各个闪存数据读取请求所需要的数据的数据类型来确定读取优先级,具体的,本申请实施例中获取各个闪存数据读取请求所要读取的数据类型,按照数据类型的不同,确定各个闪存数据读取请求对应的读取优先级,其中,在某些应用场景下,用户所需要获取的数据有重要和次要之分,比如,用户所需要的***数据比较重要,用户获取日志数据为次要,那么对请求的数据类型为***数据的确定的读取优先级,先于请求的数据类型为日志数据的读取优先级,使得本申请实施例中可以先获取命令队列中请求的重要数据,提供了用户的数据读取体验。
请参阅图9,在一些实施例中,步骤S102可以包括步骤S601至步骤S603:
步骤S601,获取预设的时间阈值或数量阈值;
步骤S602,记录闪存数据读取请求进入命令队列的时间,直至到达时间阈值后,根据命令队列向闪存发出在时间阈值表征的时间范围内获得的多个闪存数据读取请求;
步骤S603,或者,累计进入命令队列中的闪存数据读取请求的数量,直至达到数量阈值后,根据命令队列向闪存发出在数量阈值表征的数量范围内获得的多个闪存数据读取请求。
示例性的,本申请实施例中的命令队列在达到一定要求后,就会发送给闪存,以便闪存读取命令队列中的闪存数据读取请求。本申请实施例中会设定所需要的阈值,通过阈值来确定发送命令队列给闪存的时机。
具体的,本申请实施中可以获取预设的时间阈值,时间阈值可以是用户配置后输入得到的,也可以是默认设置的。在闪存数据读取请求进入命令队列的过程中,本申请实施例可以记录请求进入命令队列的时间,可以从第一个请求进入命令队列开始计时,也可以自定义一个开始时间进行计时,并随后不断累计时间,直至时间达到预设的时间阈值后,会认为当前请求获取完毕,需要及时将在时间阈值表征的时间范围内获得的多个闪存数据读取请求,发送给闪存,避免用户查询数据的等待时间太久。
此外,本申请实施中还可以获取预设的数量阈值,数量阈值可以是用户配置后输入得到的,也可以是默认设置的。在闪存数据读取请求进入命令队列的过程中,本申请实施例可以记录命令队列中请求的数量,从第一个请求进入命令队列开始计数,也可以自定义一个开始时间后进行计数,并随后不断累计进入命令队列中的闪存数据读取请求的数量,直至数量达到预设的数量阈值后,会认为当前请求获取完毕,需要将在数量阈值表征的数量范围内获得的多个闪存数据读取请求,发送给闪存,本申请实施例中通过设定闪存处理的请求的数量,可以进一步提高闪存带宽的利用率。
请参阅图10,在一些实施例中,闪存数据的读取方法还可以包括步骤S701至步骤S703:
步骤S701,在闪存中使用cache操作读取闪存数据读取请求的过程中,获取请求增加或删除指令;
步骤S702,根据请求增加或删除指令,增加或删除命令队列中的闪存数据读取请求,得到更新后的命令队列;
步骤S703,在闪存中使用cache操作读取依次读取更新后的命令队列中的闪存数据读取请求。
示例性的,还可以在闪存进行数据读取的过程中,动态调整命令队列中请求的情况。
具体的,本申请实施例中可以在闪存中使用cache操作读取闪存数据读取请求的过程中,获取请求增加或删除指令,用户可能在闪存读取数据的过程中,突然不需要某项数据的读取,此时就可以通过输入请求增加或删除指令来增加或删除命令队列中的请求。
示例的,若用户发出的指令是增加指令,则可以根据增加指令在命令队列中增加新的闪存数据读取请求,并在更新命令队列后,在闪存中使用cache操作读取依次读取更新后的命令队列中的闪存数据读取请求。
进一步的,用户可以配置新增加的闪存数据读取请求的读取优先级,以便其配置在对应的顺序上进行数据读取。
或者,若用户发出的指令是删除指令,则可以根据删除指令在命令队列中删除某项闪存数据读取请求,并在更新命令队列后,在闪存中使用cache操作读取依次读取更新后的命令队列中的闪存数据读取请求。
进一步的,若删除的闪存数据读取请求已经完成读取,则不再读取所需要的映射表,也不需要返回对应的目标数据;若删除的闪存数据读取请求还没有读取,则直接将其从命令队列中删除,后续不再完成对该闪存数据读取请求的读取操作。
请参阅图11,本申请实施例还提供一种闪存数据的读取***,可以实现上述闪存数据的读取方法,闪存数据的读取***包括:
队列存放模块1101,用于获取多个闪存数据读取请求,并将多个闪存数据读取请求存放至预设的命令队列中;
请求发送模块1102,用于根据命令队列向闪存发出多个闪存数据读取请求;
顺序确定模块1103,用于确定命令队列中的一个闪存数据读取请求为第一数据读取请求,以及第一数据读取请求之后的若干个闪存数据读取请求为第二数据读取请求;
闪存读写模块1104,用于在闪存中使用cache操作读取第一数据读取请求,根据第一数据读取请求进入对应的忙碌状态,以读取第一数据读取请求对应的第一映射表,并在忙碌状态中使用cache操作读取第二数据读取请求;
数据返回模块1105,用于当第一映射表读取完成后,根据第一映射表获取与第一数据读取请求对应的目标数据,并在根据第二数据读取请求进入对应的忙碌状态之前返回目标数据。
示例性的,闪存数据的读取***(可简称***)可以执行上述实施例中的闪存数据的读取方法,***应用在闪存中,或闪存所处的终端或服务器端中。其中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式***,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器。
闪存数据读取请求用于是一个数据请求,是对闪存的读取请求,用于请求读取所需要的数据,该数据存放于闪存中。闪存数据读取请求有多个,可以分别请求获取对应的数据,这些数据可以是不同类型的数据,可以存放在闪存中的不同块中。
命令队列是本申请实施例中所建立的,用于存放闪存数据读取请求的信息队列。本申请实施例中通过建立命令队列,可以提高请求处理的效率,面对多个请求时,可以通过命令队列收集,并统一将请求发送给闪存中进行处理。
命令队列在存放多个请求后,可以将队列中的请求统一发送到闪存中。可以理解的是,命令队列是存放于主控单元中,主控单元设置有存储模块以存储命令队列,主控单元可以将命令队列中的多个闪存数据读取请求,发送到闪存中,以便闪存进行数据读取。
命令队列中的闪存数据读取请求之间是有顺序的,确定好闪存数据读取请求之间的顺序,以便闪存进行请求读取的时候,可以按照顺序进行。闪存数据读取请求有多个,为了方便描述,闪存数据读取请求中包含有第一数据读取请求和第二数据读取请求,“第一数据读取请求”和“第二数据读取请求”之间仅是请求不同,代表不同的请求。
示例性的,本申请实施例中确定命令队列中的一个闪存数据读取请求为第一数据读取请求,第一数据读取请求可以是闪存中第一个读取的请求,也可以是表示某一时刻读取的一个请求。本申请实施例中还需要确定第一数据读取请求之后的若干个闪存数据读取请求为第二数据读取请求,因此,第二数据读取请求的读取顺序是位于第一数据读取请求之后的,第二数据读取请求可以是命令队列中的第二个请求,而当第一数据读取请求不是位于命令队列中的首位时,第二数据读取请求就不是位于队列中的第二个了,其读取顺序随着第一数据读取请求的变化而变化。
第一数据读取请求有一个,表示的是当前所读取的一个请求。第二数据读取请求可以为一个,也可以为多个,当第二数据读取请求为一个时,表示的是闪存读取顺序位于第一数据读取请求之后的那一个闪存数据读取请求,当第二数据读取请求为多个时,表示的是闪存读取顺序位于第一数据读取请求之后的那多个闪存数据读取请求,这些请求之间可以是间隔设置的,也可以是连续的,可以不做具体限制。
示例性的,NAND闪存芯片支持“cache read”的命令,也即支持cache操作。闪存在onfi接口标准中定义了“read cache”系列命令,包括“read cache sequential”与“readcache random”等。toggle接口标准中定义了类似的“sequentialcacheread”与“randomcacheread”命令。本申请实施例中,将“cacheread”系列命令、“read cache”系列命令等统称为“cache read(快速读取)”命令。主控单元可以向NAND闪存芯片发出的“cacheread”命令,指示NAND芯片从页寄存器读出一个数据页。
本申请实施例中为了实现异步读取数据,在闪存中通过cache操作实现数据的读取,使用cache操作即发出对应的“cache read”的命令。具体的,本申请实施例在闪存中使用cache操作读取第一数据读取请求,读取之后需要读取第一数据读取请求对应的映射表,读取第一数据读取请求的时间是比读取映射表的时间短的,闪存在加载映射表的过程中,会进入Ready Busy状态,简称RB状态,也即忙碌状态,本申请实施例中将第一数据读取请求所需要的映射表描述为第一映射表。
然而,为了实现异步读取数据,提高闪存的带宽利用率,本申请实施例中充分利用闪存的忙碌状态,由于闪存芯片支持“cache read”的命令,因此在忙碌状态中使用cache操作读取第二数据读取请求。可以理解的是,若第二数据读取请求有多个,则在读取第一映射表的忙碌状态中,闪存可以读取多个第二数据读取请求,直至忙碌状态结束,也即直至第一映射表读取完成,若第一映射表完成读取,本申请实施例还需要进一步的操作。
示例性的,每一个闪存数据读取请求都请求读取一个数据,本申请实施例中将根据闪存数据读取请求读取到的数据描述为目标数据,可以理解的是,目标数据是存放在闪存数据页中的数据。
示例性的,在上述忙碌状态结束后,第一映射表读取完成,映射表是把逻辑地址映射到闪存的物理地址的表,因此基于第一数据读取请求,可以从映射表中找到所需要的数据,得到目标数据,由于先前进入的是读取第一映射表的忙碌状态,而第二数据读取请求也已经读取完成,需要进入第二数据读取请求对应的第二映射表读取的忙碌状态,但是,本申请实施例中为了提高随机读取的性能,在第一数据读取请求得到的目标数据获取后,就将目标数据返回,包括返回给主控单元,并在完成目标数据的返回后,才进入第二数据读取请求对应的忙碌状态,也就是第二映射表读取的忙碌状态。
如图2所示,图2上方是现有技术中进行闪存数据读取的示意图,图2上方中的map1表示读取第一数据读取请求、RB1表示读取第一映射表的忙碌状态、Date1表示读取到第一数据读取请求所需要的目标数据、map2表示读取第二数据读取请求、RB2表示读取第二数据读取请求对应的映射表的忙碌状态、Date2表示读取到第二数据读取请求所需要的目标数据。图2下方是采用本申请实施例中的方法后进行闪存数据读取的示意图,其各个字符表示的内容与图2上方相同,在此不做赘述。
由图2可知,现有技术中的闪存进入忙碌状态不能进行其他操作,需要等闪存重新回到读取状态才能继续其他操作,这样需要每个请求一个一个轮候执行。但是本申请实施例中,利用了读取映射表的忙绿阶段,使用cache操作读取下一个请求,后续先读到的数据就先行返回,从而可以提高闪存的带宽利用率,提高闪存数据的读取速度,也提高了闪存的随机读性能,尤其是面对众多请求时,本申请实施例所带来的优势更加明显。
综上,本申请实施例通过执行闪存数据的读取方法,将多个闪存数据读写请求存放至命令队列中,随后向闪存中发送,闪存中使用cache操作读取数据,并在读取签一个请求进入忙碌状态过程中,使用cache操作读取下一个请求,使得闪存在进行忙碌也能先执行请求的读取,并在完成一项映射表的读取后,即可获取请求所需要的目标数据,并在下一个请求的忙碌状态进行之前将得到的目标数据返回,从而可以提高闪存的带宽利用率,提高闪存数据的读取速度,也提高了闪存的随机读性能。
该闪存数据的读取***的具体实施方式与上述闪存数据的读取方法的具体实施例基本相同,在此不再赘述。在满足本申请实施例要求的前提下,闪存数据的读取***还可以设置其他功能模块,以实现上述实施例中的闪存数据的读取方法。
本申请实施例还提供了一种电子设备,电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述闪存数据的读取方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图12,图12示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器1201,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器1202,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器1202可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1202中,并由处理器1201来调用执行本申请实施例的闪存数据的读取方法;
输入/输出接口1203,用于实现信息输入及输出;
通信接口1204,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线1205,在设备的各个组件(例如处理器1201、存储器1202、输入/输出接口1203和通信接口1204)之间传输信息;
其中处理器1201、存储器1202、输入/输出接口1203和通信接口1204通过总线1205实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述闪存数据的读取方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、***、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的***和方法,可以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (9)
1.一种闪存数据的读取方法,其特征在于,所述方法包括:
获取多个闪存数据读取请求,并将多个所述闪存数据读取请求存放至预设的命令队列中;
根据所述命令队列向闪存发出多个所述闪存数据读取请求;
确定所述命令队列中的一个所述闪存数据读取请求为第一数据读取请求,以及所述第一数据读取请求之后的若干个所述闪存数据读取请求为第二数据读取请求;
在闪存中使用cache操作读取所述第一数据读取请求,根据所述第一数据读取请求进入对应的忙碌状态,以读取所述第一数据读取请求对应的第一映射表,并在所述忙碌状态中使用cache操作读取所述第二数据读取请求;
当所述第一映射表读取完成后,根据所述第一映射表获取与所述第一数据读取请求对应的目标数据,并在根据所述第二数据读取请求进入对应的忙碌状态之前返回所述目标数据;
所述第二数据读取请求有多个,所述第二数据读取请求中包括第三数据读取请求和第四数据读取请求,其中,所述第三数据读取请求与所述第一数据读取请求之间共用同一个所述第一映射表;
所述根据所述第一映射表获取与所述第一数据读取请求对应的目标数据,并在根据所述第二数据读取请求进入对应的忙碌状态之前返回所述目标数据,包括:
根据所述第一映射表获取所述第一数据读取请求对应的第一目标数据,并实时返回所述第一目标数据;
根据所述第一映射表获取所述第三数据读取请求对应的第二目标数据,并实时返回所述第二目标数据,之后根据所述第四数据读取请求进入对应的忙碌状态。
2.根据权利要求1所述的闪存数据的读取方法,其特征在于,所述闪存数据读取请求还包括第五数据读取请求;
所述方法还包括:
在完成所述第二数据读取请求所需要的目标数据的获取后,在闪存中使用cache操作读取所述第五数据读取请求;
若所述第五数据读取请求与所述第一数据读取请求之间共用同一个所述第一映射表,直接根据所述第一映射表获取所述第五数据读取请求对应的第三目标数据,并实时返回所述第三目标数据。
3.根据权利要求1所述的闪存数据的读取方法,其特征在于,所述确定所述命令队列中的一个所述闪存数据读取请求为第一数据读取请求,以及所述第一数据读取请求之后的若干个所述闪存数据读取请求为第二数据读取请求,包括:
为所述命令队列中的所述闪存数据读取请求配置对应的读取优先级;
按照所述读取优先级对多个所述闪存数据读取请求进行排序,其中,所述闪存数据读取请求包括第一数据读取请求和第二数据读取请求,所述第一数据读取请求的读取优先级大于所述第二数据读取请求的读取优先级。
4.根据权利要求3所述的闪存数据的读取方法,其特征在于,所述为所述命令队列中的所述闪存数据读取请求配置对应的读取优先级,包括:
获取各个所述闪存数据读取请求进入所述命令队列的时间,根据进入所述命令队列的时间先后顺序确定各个所述闪存数据读取请求对应的读取优先级;
或者,获取各个所述闪存数据读取请求所需要的映射表,累计共用对应的映射表的请求数量,并按照同一个映射表对应的请求数量大小,确定各个所述闪存数据读取请求对应的读取优先级;
或者,获取各个所述闪存数据读取请求所要读取的数据类型,按照所述数据类型的不同,确定各个所述闪存数据读取请求对应的读取优先级。
5.根据权利要求1所述的闪存数据的读取方法,其特征在于,所述根据所述命令队列向闪存发出多个所述闪存数据读取请求,包括:
获取预设的时间阈值或数量阈值;
记录所述闪存数据读取请求进入所述命令队列的时间,直至到达所述时间阈值后,根据所述命令队列向闪存发出在所述时间阈值表征的时间范围内获得的多个所述闪存数据读取请求;
或者,累计进入所述命令队列中的所述闪存数据读取请求的数量,直至达到所述数量阈值后,根据所述命令队列向闪存发出在所述数量阈值表征的数量范围内获得的多个所述闪存数据读取请求。
6.根据权利要求1所述的闪存数据的读取方法,其特征在于,所述方法还包括:
在闪存中使用cache操作读取所述闪存数据读取请求的过程中,获取请求增加或删除指令;
根据所述请求增加或删除指令,增加或删除所述命令队列中的所述闪存数据读取请求,得到更新后的所述命令队列;
在闪存中使用cache操作读取依次读取更新后的所述命令队列中的所述闪存数据读取请求。
7.一种闪存数据的读取***,其特征在于,所述***包括:
队列存放模块,用于获取多个闪存数据读取请求,并将多个所述闪存数据读取请求存放至预设的命令队列中;
请求发送模块,用于根据所述命令队列向闪存发出多个所述闪存数据读取请求;
顺序确定模块,用于确定所述命令队列中的一个所述闪存数据读取请求为第一数据读取请求,以及所述第一数据读取请求之后的若干个所述闪存数据读取请求为第二数据读取请求;
闪存读写模块,用于在闪存中使用cache操作读取所述第一数据读取请求,根据所述第一数据读取请求进入对应的忙碌状态,以读取所述第一数据读取请求对应的第一映射表,并在所述忙碌状态中使用cache操作读取所述第二数据读取请求;
数据返回模块,用于当所述第一映射表读取完成后,根据所述第一映射表获取与所述第一数据读取请求对应的目标数据,并在根据所述第二数据读取请求进入对应的忙碌状态之前返回所述目标数据;
所述第二数据读取请求有多个,所述第二数据读取请求中包括第三数据读取请求和第四数据读取请求,其中,所述第三数据读取请求与所述第一数据读取请求之间共用同一个所述第一映射表;数据返回模块还用于:
根据所述第一映射表获取所述第一数据读取请求对应的第一目标数据,并实时返回所述第一目标数据;根据所述第一映射表获取所述第三数据读取请求对应的第二目标数据,并实时返回所述第二目标数据,之后根据所述第四数据读取请求进入对应的忙碌状态。
8.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述的闪存数据的读取方法。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的闪存数据的读取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310528987.3A CN116661684B (zh) | 2023-05-10 | 2023-05-10 | 一种闪存数据的读取方法、***、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310528987.3A CN116661684B (zh) | 2023-05-10 | 2023-05-10 | 一种闪存数据的读取方法、***、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116661684A CN116661684A (zh) | 2023-08-29 |
CN116661684B true CN116661684B (zh) | 2024-02-23 |
Family
ID=87723343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310528987.3A Active CN116661684B (zh) | 2023-05-10 | 2023-05-10 | 一种闪存数据的读取方法、***、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116661684B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515221A (zh) * | 2009-03-17 | 2009-08-26 | 成都市华为赛门铁克科技有限公司 | 一种读数据的方法、装置和*** |
CN102081582A (zh) * | 2010-12-08 | 2011-06-01 | 钰创科技股份有限公司 | 在一总线上操作闪存的方法 |
CN102567257A (zh) * | 2011-12-26 | 2012-07-11 | 华中科技大学 | 一种控制多通道固态盘数据读写的方法 |
CN106547480A (zh) * | 2015-09-17 | 2017-03-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据读取方法 |
CN106681654A (zh) * | 2016-09-29 | 2017-05-17 | 合肥兆芯电子有限公司 | 映射表载入方法与存储器存储装置 |
CN108156823A (zh) * | 2016-08-31 | 2018-06-12 | 华为技术有限公司 | 一种闪存介质的访问方法及控制器 |
CN110716691A (zh) * | 2018-07-13 | 2020-01-21 | 华为技术有限公司 | 调度方法、装置、闪存设备和*** |
TWI747660B (zh) * | 2020-12-14 | 2021-11-21 | 慧榮科技股份有限公司 | 多閃存晶片的資料讀取方法及裝置以及電腦程式產品 |
CN114780032A (zh) * | 2022-04-22 | 2022-07-22 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据读取方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100772863B1 (ko) * | 2006-01-13 | 2007-11-02 | 삼성전자주식회사 | 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치 |
-
2023
- 2023-05-10 CN CN202310528987.3A patent/CN116661684B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515221A (zh) * | 2009-03-17 | 2009-08-26 | 成都市华为赛门铁克科技有限公司 | 一种读数据的方法、装置和*** |
CN102081582A (zh) * | 2010-12-08 | 2011-06-01 | 钰创科技股份有限公司 | 在一总线上操作闪存的方法 |
CN102567257A (zh) * | 2011-12-26 | 2012-07-11 | 华中科技大学 | 一种控制多通道固态盘数据读写的方法 |
CN106547480A (zh) * | 2015-09-17 | 2017-03-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据读取方法 |
CN108156823A (zh) * | 2016-08-31 | 2018-06-12 | 华为技术有限公司 | 一种闪存介质的访问方法及控制器 |
CN106681654A (zh) * | 2016-09-29 | 2017-05-17 | 合肥兆芯电子有限公司 | 映射表载入方法与存储器存储装置 |
CN110716691A (zh) * | 2018-07-13 | 2020-01-21 | 华为技术有限公司 | 调度方法、装置、闪存设备和*** |
TWI747660B (zh) * | 2020-12-14 | 2021-11-21 | 慧榮科技股份有限公司 | 多閃存晶片的資料讀取方法及裝置以及電腦程式產品 |
CN114780032A (zh) * | 2022-04-22 | 2022-07-22 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据读取方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116661684A (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11307769B2 (en) | Data storage method, apparatus and storage medium | |
US10216418B2 (en) | Storage apparatus and method for autonomous space compaction | |
KR101791901B1 (ko) | 빅데이터의 효율적인 저장·실시간 분석형 스마트 스토리지 플랫폼장치 및 방법 | |
CN104125163B (zh) | 一种数据处理方法、装置及终端 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
CN107526542A (zh) | 对象存储装置及其操作方法 | |
US20160216915A1 (en) | Controller, flash memory apparatus, method for identifying data block stability, and method for storing data in flash memory apparatus | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN112954244A (zh) | 监控录像的存储实现方法、装置、设备及存储介质 | |
US20200183604A1 (en) | Partitioning graph data for large scale graph processing | |
CN110750211B (zh) | 一种存储空间的管理方法及装置 | |
WO2019174206A1 (zh) | 一种存储设备的数据读取方法、装置、终端设备和存储介质 | |
CN116661684B (zh) | 一种闪存数据的读取方法、***、设备及介质 | |
CN111158606B (zh) | 存储方法、装置、计算机设备和存储介质 | |
CN110554833A (zh) | 存储设备中并行处理io命令 | |
CN115658625B (zh) | 数据解压***、图形处理***、装置、设备及解压方法 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
US11650736B2 (en) | SGL processing acceleration method and storage device | |
CN112395245B (zh) | 处理器的访问装置、方法及计算机设备 | |
CN117724663B (zh) | 一种数据存储方法、***、设备及计算机可读存储介质 | |
CN112395244B (zh) | 处理器的访问装置及方法 | |
CN112395243B (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 |