CN108519859B - 数据读取方法、装置、设备及介质 - Google Patents

数据读取方法、装置、设备及介质 Download PDF

Info

Publication number
CN108519859B
CN108519859B CN201810277925.9A CN201810277925A CN108519859B CN 108519859 B CN108519859 B CN 108519859B CN 201810277925 A CN201810277925 A CN 201810277925A CN 108519859 B CN108519859 B CN 108519859B
Authority
CN
China
Prior art keywords
data
marked
prp
queue
lbn
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
Application number
CN201810277925.9A
Other languages
English (en)
Other versions
CN108519859A (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.)
Shenzhen Union Memory Information System Co Ltd
Original Assignee
Shenzhen Union Memory Information System 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 Shenzhen Union Memory Information System Co Ltd filed Critical Shenzhen Union Memory Information System Co Ltd
Priority to CN201810277925.9A priority Critical patent/CN108519859B/zh
Publication of CN108519859A publication Critical patent/CN108519859A/zh
Application granted granted Critical
Publication of CN108519859B publication Critical patent/CN108519859B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

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

Abstract

本发明实施例提供了一种数据读取方法、装置、设备及介质。该方法包括:在所述NVME控制器从主机取回逻辑块编号LBN对应的物理区块页PRP时,将该PRP标记为已取回状态;根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序;按照所确定的读取顺序,读取所述从数据存储装置返回的数据。

Description

数据读取方法、装置、设备及介质
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据读取方法、装置、设备及介质。
背景技术
随着数据存储装置(例如:SSD,即Solid State Drives,固态硬盘)的生产工艺的发展,越来越多的数据存储装置通过内置的NVME(Non-Volatile Memory Express,非易失性存储器规范)控制器实现与主机之间的数据传输。
通常数据在主机中存储的逻辑地址为LBN(Logical Block Number,逻辑块编号),而LBN实际对应的物理地址为PRP(Physical Region Page,物理区域页)。如果主机需要对存储在数据存储装置中的数据进行处理,则首先向NVME控制器发送数据读取命令,以读取待处理的数据。然后NVME控制器从主机取回该待处理的数据具有的LBN对应的PRP,在数据存储装置返回该待处理的数据至NVME控制器后,NVME控制器根据该待处理的数据具有的LBN对应的PRP,把该待处理的数据存放到主机指定的物理地址上。
然而,数据存储装置对数据的返回通常是乱序的,而NVME控制器对数据存储装置返回的数据的读取又是顺序的,这样就会导致以下问题:
当第一笔数据(具有第一LBN)已经从数据存储装置中读取出来的时候,NMVE控制器还未将第一LBN对应的PRP从主机中取回,导致NVME控制器暂时还不能将第一笔数据发送给主机,而如果在从数据存储装置中读取第一笔数据之后,又从数据存储装置中读取出第二笔数据(具有第二LBN)且第二LBN的PRP已经被取回,那么第二笔数据就有可能因为前面的第一笔数据没有被读取而造成第二笔数据的等待。导致NVME控制器向主机传输数据的效率较低。
示例地,如图1所示,假设NVME控制器已经将LBN0、LBN1、LBN2、LBN3各自对应的PRP0、PRP1、PRP2、PRP3取回,剩下的LBN4、LBN5、LBN6的PRP4、PRP5、PRP6还未被取回,而数据存储装置返回数据的顺序为LBN2、LBN4、LBN3,所以NVME控制器顺序读取数据存储装置返回的数据,LBN2可以被读取并发送给主机,而LBN4对应的PRP4还未取回,所以具有LBN4的这笔数据还不能被读取,虽然LBN3对应的PRP3已经被取回,但由于具有LBN4的这笔数据还没有被读取,所以会造成具有LBN3的这笔数据的等待。
发明内容
本发明实施例提供了一种数据读取方法、装置、设备及介质,以提高导致NVME控制器向主机传输数据的效率。
第一方面,本发明实施例提供了一种数据读取方法,应用于NVME控制器,所述方法包括:
在所述NVME控制器从主机取回逻辑块编号LBN对应的物理区块页PRP时,将该PRP标记为已取回状态;
根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序;
按照所确定的读取顺序,读取所述从数据存储装置返回的数据。
可选地,所述方法还包括:
在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级;
根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,包括:
根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,以及所述从数据存储装置返回的数据是否被标记为高优先级,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序,且被标记为高优先级的数据的读取顺序先于未被标记为高优先级的数据。
可选地,在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级,包括:
在所述NVME控制器从主机取回LBN对应的PRP时,检测所述数据存储装置是否返回具有该LBN的数据;
在未检测到所述数据存储装置返回具有该LBN的数据时,等待所述数据存储装置返回具有该LBN的数据,并确定具有该LBN的数据的等待时长;
在具有该LBN的数据的等待时长大于预设时长时,将具有该LBN的数据标记为高优先级。
可选地,在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级,包括:
在所述NVME控制器从主机取回LBN对应的PRP时,确定所述主机对具有该LBN的数据的读取需求;
若所述主机对具有该LBN的数据的读取需求为需要优先读取,则将具有该LBN的数据标记为高优先级。
可选地,所述方法还包括:
接收所述主机发送的数据读取命令;
若所述主机发送的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第一队列中;
若所述主机发送的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第二队列中,所述第二队列与所述第一队列不同;
若所述主机发送的数据读取命令针对的数据对应的PRP未被标记为已取回状态,则将该数据读取命令添加到第三队列中,所述第三队列与所述第一队列及所述第二队列均不同;
按照所确定的读取顺序,读取所述从数据存储装置返回的数据,包括:
检测所述第一队列是否非空;
在检测到所述第一队列非空时,执行所述第一队列中的数据读取命令;
在执行完所述第一队列中的所有数据读取命令之后,检测所述第二队列是否非空;
在检测到所述第二队列非空时,执行所述第二队列中的数据读取命令,直到检测到所述第一队列非空时返回步骤执行所述第一队列中的数据读取命令,或者直到执行完所述第二队列中的所有数据读取命令。
可选地,所述方法还包括:
定时轮询所述第三队列中的数据读取命令;
在所述第三队列中的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第一队列中;
若所述第三队列中的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第二队列中。
第二方面,本发明实施例提供了一种数据读取装置,应用于NVME控制器,所述装置包括:
标记模块,被配置为在所述NVME控制器从主机取回逻辑块编号LBN对应的物理区块页PRP时,将该PRP标记为已取回状态;
第一确定模块,被配置为根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序;
读取模块,被配置为按照所确定的读取顺序,读取所述从数据存储装置返回的数据。
可选地,所述装置还包括:
第二确定模块,被配置为在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级;
所述第一确定模块包括:
第一确定子模块,被配置为根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,以及所述从数据存储装置返回的数据是否被标记为高优先级,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序,且被标记为高优先级的数据的读取顺序先于未被标记为高优先级的数据。
可选地,所述第二确定模块包括:
第一检测子模块,被配置为在所述NVME控制器从主机取回LBN对应的PRP时,检测所述数据存储装置是否返回具有该LBN的数据;
等待子模块,被配置为在未检测到所述数据存储装置返回具有该LBN的数据时,等待所述数据存储装置返回具有该LBN的数据,并确定具有该LBN的数据的等待时长;
第一标记子模块,被配置为在具有该LBN的数据的等待时长大于预设时长时,将具有该LBN的数据标记为高优先级。
可选地,所述第二确定模块包括:
第二确定子模块,被配置为在所述NVME控制器从主机取回LBN对应的PRP时,确定所述主机对具有该LBN的数据的读取需求;
第二标记子模块,被配置为若所述主机对具有该LBN的数据的读取需求为需要优先读取,则将具有该LBN的数据标记为高优先级。
可选地,所述装置还包括:
接收模块,被配置为接收所述主机发送的数据读取命令;
第一添加模块,被配置为若所述主机发送的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第一队列中;
第二添加模块,被配置为若所述主机发送的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第二队列中,所述第二队列与所述第一队列不同;
第三添加模块,被配置为若所述主机发送的数据读取命令针对的数据对应的PRP未被标记为已取回状态,则将该数据读取命令添加到第三队列中,所述第三队列与所述第一队列及所述第二队列均不同;
所述读取模块包括:
第二检测子模块,被配置为检测所述第一队列是否非空;
第一执行子模块,被配置为在检测到所述第一队列非空时,执行所述第一队列中的数据读取命令;
第三检测子模块,被配置为在执行完所述第一队列中的所有数据读取命令之后,检测所述第二队列是否非空;
第二执行子模块,被配置为在检测到所述第二队列非空时,执行所述第二队列中的数据读取命令,直到检测到所述第一队列非空时返回步骤执行所述第一队列中的数据读取命令,或者直到执行完所述第二队列中的所有数据读取命令。
可选地,所述装置还包括:
轮询子模块,被配置为定时轮询所述第三队列中的数据读取命令;
第四添加模块,被配置为在所述第三队列中的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第一队列中;
第五添加模块,被配置为若所述第三队列中的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第二队列中。
第三方面,本发明实施例提供了一种数据读取设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
本发明实施例提供的数据读取方法、装置、设备及介质,NVME控制器对PRP的状态进行记录,如果NVME控制器从主机取回某一LBN对应的PRP,则将该PRP标记为已取回状态,然后NVME控制器对从数据存储装置返回的数据进行重新排序,排序规则是将对应的PRP被标记为已取回状态的数据前置,最后按照重新排序后的顺序读取从数据存储装置返回的数据,从而达到优先读取已取回对应的PRP的数据,因而,已取回对应的PRP的数据不会因为之前的数据对应的PRP还未取回而暂时等待。NVME控制器能够及时读取对应的PRP已被取回的数据,并及时将读取到的数据发送给主机,减少了数据的等待时间,提高了NVME控制器向主机传输数据的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例涉及的相关技术的示意图。
图2是本发明实施例提供的数据读取方法的流程图。
图3是本发明实施例提供的数据读取装置的示意图。
图4是本发明实施例提供的数据读取设备的示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例提供了一种数据读取方法,应用于NVME控制器。图2是本发明实施例提供的数据读取方法的流程图,如图2所示,该方法包括以下步骤:
步骤S11:在所述NVME控制器从主机取回逻辑块编号LBN对应的物理区块页PRP时,将该PRP标记为已取回状态;
步骤S12:根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序;
步骤S13:按照所确定的读取顺序,读取所述从数据存储装置返回的数据。
本发明实施例中,为避免后一笔数据因为前一笔数据没有被读取而造成后一笔数据的等待,提出对PRP的状态进行记录,如果NVME控制器从主机取回某一LBN对应的PRP,则将该PRP标记为已取回状态,然后NVME控制器对从数据存储装置返回的数据进行重新排序,排序规则是将对应的PRP被标记为已取回状态的数据前置,最后按照重新排序后的顺序读取从数据存储装置返回的数据,从而达到优先读取已取回对应的PRP的数据,因而,已取回对应的PRP的数据不会因为之前的数据对应的PRP还未取回而暂时等待。
具体地,一方面,NVME控制器每从主机取回一个LBN对应的PRP,就将该PRP标记为已取回状态,因而NVME控制器对PRP的状态进行了记录。另一方面,NVME控制器接收从数据存储装置返回的数据,并根据返回的数据对应的PRP是否被标记为已取回状态,确定对返回的数据的读取顺序,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序。在确定返回的数据的读取顺序之后,NVME控制器按照所确定的读取顺序,读取返回的数据。
本公开实施例中,NVME控制器能够及时读取对应的PRP已被取回的数据,并及时将读取到的数据发送给主机,减少了数据的等待时间,提高了NVME控制器向主机传输数据的效率。
可选地,在本公开另一实施例中,数据读取方法还包括以下步骤:
在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级。该步骤有且不限于以下两种实施方式:
第一种实施方式:在所述NVME控制器从主机取回LBN对应的PRP时,检测所述数据存储装置是否返回具有该LBN的数据;在未检测到所述数据存储装置返回具有该LBN的数据时,等待所述数据存储装置返回具有该LBN的数据,并确定具有该LBN的数据的等待时长;在具有该LBN的数据的等待时长大于预设时长时,将具有该LBN的数据标记为高优先级。
第二种实施方式:在所述NVME控制器从主机取回LBN对应的PRP时,确定所述主机对具有该LBN的数据的读取需求;若所述主机对具有该LBN的数据的读取需求为需要优先读取,则将具有该LBN的数据标记为高优先级。
相应地,步骤S12包括:
根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,以及所述从数据存储装置返回的数据是否被标记为高优先级,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序,且被标记为高优先级的数据的读取顺序先于未被标记为高优先级的数据。
本公开实施例中,为进一步提高NVME控制器向主机传输数据的效率,提出针对已取回对应的PRP但数据存储装置未返回的数据,当该数据从数据存储装置返回时,NVME控制器优先读取该数据;还提出针对已取回对应的PRP且主机的读取需求为需要优先读取的数据,NVME控制器优先读取该数据。
具体地,由于NVME控制器和数据存储装置两者的效率不同,所以存在NVME控制器取回某一LBN对应的PRP,但具有该LBN的数据还未从数据存储装置返回给NVME控制器的情况,在这种情况下,NVME控制器会等待数据存储装置返回具有该LBN的数据,为提高NVME控制器向主机传输数据的效率,本公开实施例提出针对对应的PRP已取回但未从数据存储装置返回的数据,记录NVME控制器等待该数据的等待时长,如果该等待时长大于预设时长,则该数据需要优先读取,因此将该数据标记为高优先级。NVME控制器在该数据从数据存储装置返回时,优先读取该数据,并发送给主机,提高NVME控制器向主机传输数据的效率。
此外,考虑到主机本身对某些数据的读取需求为优先读取,因而NVME控制器需要尽快将这些数据发送给主机。本公开实施例提出针对主机需要优先读取的数据,将该数据标记为高优先级。NVME控制器在该数据从数据存储装置返回并且取回该数据对应的PRP时,优先读取该数据,并发送给主机,提高NVME控制器向主机传输数据的效率。
可选地,在本公开另一实施例中,数据读取方法还包括以下步骤:
接收所述主机发送的数据读取命令;
若所述主机发送的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第一队列中;
若所述主机发送的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第二队列中,所述第二队列与所述第一队列不同;
若所述主机发送的数据读取命令针对的数据对应的PRP未被标记为已取回状态,则将该数据读取命令添加到第三队列中,所述第三队列与所述第一队列及所述第二队列均不同;
相应地,步骤S13包括以下步骤:
检测所述第一队列是否非空;
在检测到所述第一队列非空时,执行所述第一队列中的数据读取命令;
在执行完所述第一队列中的所有数据读取命令之后,检测所述第二队列是否非空;
在检测到所述第二队列非空时,执行所述第二队列中的数据读取命令,直到检测到所述第一队列非空时返回步骤执行所述第一队列中的数据读取命令,或者直到执行完所述第二队列中的所有数据读取命令。
可选地,结合上一实施例,在本公开另一实施例中,数据读取方法还包括以下步骤:
定时轮询所述第三队列中的数据读取命令;
在所述第三队列中的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第一队列中;
若所述第三队列中的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第二队列中。
具体地,如果主机需要对存储在数据存储装置中的数据进行处理,则首先向NVME控制器发送数据读取命令,以读取待处理的数据。NVME控制器接收主机发送的数据读取命令。
NVME控制器将数据读取命令分为3个队列,一个是优先级高的LBN队列(Q1,即第一队列),一个是已取回PRP的LBN队列(Q2,即第二队列),另外一个是未取回PRP的LBN队列(Q3,即第三队列)。
当软件或者硬件通知NVME控制器读取从数据存储装置返回的数据时,先数据读取命令所属的队列进行判断。如果数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令放在队列Q1中;如果数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令放在队列Q2中。否则,放在队列Q3中。
对于队列Q3来来说,可能过一段时间某一数据对应的PRP已经被取回,所以需要定时对队列Q3中的数据读取命令进行轮询,如果发现某个数据对应的PRP已经被取回,或者某个数据被标记为高优先级,那么就将针对该数据的数据读取命令放到队列Q1或队列Q2,否则再写回队列Q3。
NVME控制器检测队列Q1和队列Q2的状态,如果队列Q1非空,那么NVME控制器优先处理队列Q1中的数据读取命令。当队列Q1中所有命令处理完之后,如果队列Q2非空,那么NVME控制器就开始处理队列Q2中的命令,直到被队列Q1中的命令打断或者队列Q2中所有命令处理完。
基于同一发明构思,本发明实施例还提供一种数据读取装置,应用于NVME控制器。图3是本发明实施例提供的数据读取装置的示意图。如图3所示,该装置200包括:
标记模块201,被配置为在所述NVME控制器从主机取回逻辑块编号LBN对应的物理区块页PRP时,将该PRP标记为已取回状态;
第一确定模块202,被配置为根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序;
读取模块203,被配置为按照所确定的读取顺序,读取所述从数据存储装置返回的数据。
可选地,所述装置还包括:
第二确定模块,被配置为在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级;
所述第一确定模块包括:
第一确定子模块,被配置为根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,以及所述从数据存储装置返回的数据是否被标记为高优先级,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序,且被标记为高优先级的数据的读取顺序先于未被标记为高优先级的数据。
可选地,所述第二确定模块包括:
第一检测子模块,被配置为在所述NVME控制器从主机取回LBN对应的PRP时,检测所述数据存储装置是否返回具有该LBN的数据;
等待子模块,被配置为在未检测到所述数据存储装置返回具有该LBN的数据时,等待所述数据存储装置返回具有该LBN的数据,并确定具有该LBN的数据的等待时长;
第一标记子模块,被配置为在具有该LBN的数据的等待时长大于预设时长时,将具有该LBN的数据标记为高优先级。
可选地,所述第二确定模块包括:
第二确定子模块,被配置为在所述NVME控制器从主机取回LBN对应的PRP时,确定所述主机对具有该LBN的数据的读取需求;
第二标记子模块,被配置为若所述主机对具有该LBN的数据的读取需求为需要优先读取,则将具有该LBN的数据标记为高优先级。
可选地,所述装置还包括:
接收模块,被配置为接收所述主机发送的数据读取命令;
第一添加模块,被配置为若所述主机发送的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第一队列中;
第二添加模块,被配置为若所述主机发送的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第二队列中,所述第二队列与所述第一队列不同;
第三添加模块,被配置为若所述主机发送的数据读取命令针对的数据对应的PRP未被标记为已取回状态,则将该数据读取命令添加到第三队列中,所述第三队列与所述第一队列及所述第二队列均不同;
所述读取模块包括:
第二检测子模块,被配置为检测所述第一队列是否非空;
第一执行子模块,被配置为在检测到所述第一队列非空时,执行所述第一队列中的数据读取命令;
第三检测子模块,被配置为在执行完所述第一队列中的所有数据读取命令之后,检测所述第二队列是否非空;
第二执行子模块,被配置为在检测到所述第二队列非空时,执行所述第二队列中的数据读取命令,直到检测到所述第一队列非空时返回步骤执行所述第一队列中的数据读取命令,或者直到执行完所述第二队列中的所有数据读取命令。
可选地,所述装置还包括:
轮询子模块,被配置为定时轮询所述第三队列中的数据读取命令;
第四添加模块,被配置为在所述第三队列中的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第一队列中;
第五添加模块,被配置为若所述第三队列中的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第二队列中。
本发明实施例提供了一种数据读取设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中数据读取方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中的数据读取方法。
结合图2描述的本发明实施例的数据读取方法可以由数据读取设备来实现。图4示出了本发明实施例提供的数据读取设备的硬件结构示意图。
数据读取设备可以包括处理器301以及存储有计算机程序指令的存储器302。
具体地,上述处理器301可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器302可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器302可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器302可在数据处理装置的内部或外部。在特定实施例中,存储器302是非易失性固态存储器。在特定实施例中,存储器302包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器301通过读取并执行存储器302中存储的计算机程序指令,以实现上述实施例中的任意一种数据读取方法。
在一个示例中,数据读取设备还可包括通信接口303和总线310。其中,如图4所示,处理器301、存储器302、通信接口303通过总线310连接并完成相互间的通信。
通信接口303,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线310包括硬件、软件或两者,将数据读取设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
另外,结合上述实施例中的数据读取方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据读取方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上发送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

Claims (8)

1.一种数据读取方法,其特征在于,应用于NVME控制器,所述方法包括:
在所述NVME控制器从主机取回逻辑块编号LBN对应的物理区块页PRP时,将该PRP标记为已取回状态;
根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序;
按照所确定的读取顺序,读取所述从数据存储装置返回的数据;
所述方法还包括:
在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级;
根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,包括:
根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,以及所述从数据存储装置返回的数据是否被标记为高优先级,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序,且被标记为高优先级的数据的读取顺序先于未被标记为高优先级的数据。
2.根据权利要求1所述的方法,其特征在于,在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级,包括:
在所述NVME控制器从主机取回LBN对应的PRP时,检测所述数据存储装置是否返回具有该LBN的数据;
在未检测到所述数据存储装置返回具有该LBN的数据时,等待所述数据存储装置返回具有该LBN的数据,并确定具有该LBN的数据的等待时长;
在具有该LBN的数据的等待时长大于预设时长时,将具有该LBN的数据标记为高优先级。
3.根据权利要求1所述的方法,其特征在于,在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级,包括:
在所述NVME控制器从主机取回LBN对应的PRP时,确定所述主机对具有该LBN的数据的读取需求;
若所述主机对具有该LBN的数据的读取需求为需要优先读取,则将具有该LBN的数据标记为高优先级。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述主机发送的数据读取命令;
若所述主机发送的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第一队列中;
若所述主机发送的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到第二队列中,所述第二队列与所述第一队列不同;
若所述主机发送的数据读取命令针对的数据对应的PRP未被标记为已取回状态,则将该数据读取命令添加到第三队列中,所述第三队列与所述第一队列及所述第二队列均不同;
按照所确定的读取顺序,读取所述从数据存储装置返回的数据,包括:
检测所述第一队列是否非空;
在检测到所述第一队列非空时,执行所述第一队列中的数据读取命令;
在执行完所述第一队列中的所有数据读取命令之后,检测所述第二队列是否非空;
在检测到所述第二队列非空时,执行所述第二队列中的数据读取命令,直到检测到所述第一队列非空时返回步骤执行所述第一队列中的数据读取命令,或者直到执行完所述第二队列中的所有数据读取命令。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
定时轮询所述第三队列中的数据读取命令;
在所述第三队列中的数据读取命令针对的数据被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第一队列中;
若所述第三队列中的数据读取命令针对的数据未被标记为高优先级且对应的PRP被标记为已取回状态,则将该数据读取命令添加到所述第二队列中。
6.一种数据读取装置,其特征在于,应用于NVME控制器,所述装置包括:
标记模块,被配置为在所述NVME控制器从主机取回逻辑块编号LBN对应的物理区块页PRP时,将该PRP标记为已取回状态;
第一确定模块,被配置为根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序;
读取模块,被配置为按照所确定的读取顺序,读取所述从数据存储装置返回的数据;
所述装置还包括:
第二确定模块,被配置为在所述NVME控制器从主机取回LBN对应的PRP时,确定是否将具有该LBN的数据标记为高优先级;
所述第一确定模块包括:
第一确定子模块,被配置为根据从数据存储装置返回的数据对应的PRP是否被标记为已取回状态,以及所述从数据存储装置返回的数据是否被标记为高优先级,确定对所述从数据存储装置返回的数据的读取顺序,其中,对应的PRP被标记为已取回状态的数据的读取顺序先于对应的PRP未被标记为已取回状态的数据的读取顺序,且被标记为高优先级的数据的读取顺序先于未被标记为高优先级的数据。
7.一种数据读取设备,其特征在于,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如权利要求1-5中任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现如权利要求1-5中任一项所述的方法。
CN201810277925.9A 2018-03-30 2018-03-30 数据读取方法、装置、设备及介质 Active CN108519859B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810277925.9A CN108519859B (zh) 2018-03-30 2018-03-30 数据读取方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810277925.9A CN108519859B (zh) 2018-03-30 2018-03-30 数据读取方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN108519859A CN108519859A (zh) 2018-09-11
CN108519859B true CN108519859B (zh) 2021-04-20

Family

ID=63430989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810277925.9A Active CN108519859B (zh) 2018-03-30 2018-03-30 数据读取方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN108519859B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473126A (zh) * 2009-08-11 2012-05-23 桑迪士克科技股份有限公司 提供闪存系统中的读状态和空闲块管理信息的控制器和方法
CN102473078A (zh) * 2009-08-11 2012-05-23 马维尔国际贸易有限公司 用于从非易失性存储器读取数据的控制器
EP2966562A1 (en) * 2014-07-09 2016-01-13 Nexenta Systems, Inc. Method to optimize inline i/o processing in tiered distributed storage systems
CN105988874A (zh) * 2015-02-10 2016-10-05 阿里巴巴集团控股有限公司 资源处理方法及装置
CN107273053A (zh) * 2017-06-22 2017-10-20 郑州云海信息技术有限公司 一种数据读取的方法与装置
CN107832018A (zh) * 2017-11-22 2018-03-23 深圳忆联信息系统有限公司 一种raid的实施方法及ssd

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038131A (zh) * 2016-02-04 2017-08-11 广明光电股份有限公司 固态硬盘断电保护装置及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473126A (zh) * 2009-08-11 2012-05-23 桑迪士克科技股份有限公司 提供闪存系统中的读状态和空闲块管理信息的控制器和方法
CN102473078A (zh) * 2009-08-11 2012-05-23 马维尔国际贸易有限公司 用于从非易失性存储器读取数据的控制器
EP2966562A1 (en) * 2014-07-09 2016-01-13 Nexenta Systems, Inc. Method to optimize inline i/o processing in tiered distributed storage systems
CN105988874A (zh) * 2015-02-10 2016-10-05 阿里巴巴集团控股有限公司 资源处理方法及装置
CN107273053A (zh) * 2017-06-22 2017-10-20 郑州云海信息技术有限公司 一种数据读取的方法与装置
CN107832018A (zh) * 2017-11-22 2018-03-23 深圳忆联信息系统有限公司 一种raid的实施方法及ssd

Also Published As

Publication number Publication date
CN108519859A (zh) 2018-09-11

Similar Documents

Publication Publication Date Title
CN105468548B (zh) 串行外围接口的通信
CN108491335B (zh) 处理映射表项的方法、装置、设备及介质
US7987298B2 (en) System and method for detecting the status of a universal serial bus port of a mobile phone
CN108519859B (zh) 数据读取方法、装置、设备及介质
CN111857546A (zh) 用于处理数据的方法、网络适配器和计算机程序产品
CN102204199A (zh) 用于通信接口的位反转
CN112817804A (zh) 基于电脑风扇口的故障检测方法、装置、设备及存储介质
CN112540729A (zh) 数据下载的方法、装置、智能卡及存储介质
CN112737841B (zh) 物联网下行数据通信控制方法、装置、设备及存储介质
CN111381840B (zh) 应用程序更新的方法、装置和设备
CN118152119A (zh) 数据异步迁移方法、装置、设备及介质
CN118250245A (zh) 信息处理方法、装置、设备、计算机存储介质及车辆
CN117499334B (zh) 一种车辆智能通信方法、终端设备与存储介质
CN114710450B (zh) 流量控制方法、装置、设备及计算机存储介质
CN116669006A (zh) 蓝牙连接建立方法、装置、电子设备及计算机存储介质
CN108965214B (zh) 数据处理方法、装置及计算机存储介质
CN117082475A (zh) 数据传输方法、装置、设备、存储介质及程序产品
CN116932594A (zh) 数据获取方法
CN117785392A (zh) 进程调度方法、装置、设备、存储介质及车辆
CN117667320A (zh) 任务处理方法、装置、设备、介质及车辆
CN118193147A (zh) 任务执行方法、装置、设备及计算机可读存储介质
CN117472430A (zh) 数据的获取方法、装置、设备及计算机存储介质
WO2010061482A1 (ja) 試験装置、シリアル伝送システム、プログラム、および、記録媒体
CN117762317A (zh) 一种数据存储方法、装置、终端设备、无人车和存储介质
CN116009795A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190812

Address after: 518067 Dongjiaotou Workshop D24/F-02, Houhai Avenue, Shekou Street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Yi Lian Information System Co., Ltd.

Address before: 100176 Beijing Daxing District Beijing Economic and Technological Development Zone No. 58 Jinghai Road, No. 5 Building No. 3, No. 305

Applicant before: Beijing legend core technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant