基于固态硬盘的重复读性能提升方法、装置和计算机设备与流程

文档序号:32793890发布日期:2023-01-03 21:52阅读:62来源:国知局
基于固态硬盘的重复读性能提升方法、装置和计算机设备与流程

1.本发明涉及固态硬盘技术领域,特别是涉及一种基于固态硬盘的重复读性能提升方法、装置、计算机设备和存储介质。


背景技术:

2.随着固态硬盘技术的发展,ssd(solid state disk,固态硬盘)已经被广泛应用于各种场合,在pc市场已经逐步替代传统的hdd(hard disk drive,硬盘驱动器),从可靠性和性能方面为用户提供较好的体验。
3.ssd固态硬盘作为一种新型存储介质,其采用nand颗粒作为数据存储,相比于传统hdd,其最大优势在于很高的读写性能。然而,在传统技术中ssd处理每一次的host read都需要从nand上去获取数据,进而导致ssd对重复读一段逻辑空间的数据时性能较低。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种基于固态硬盘的重复读性能提升方法、装置、计算机设备和存储介质。
5.一种基于固态硬盘的重复读性能提升方法,所述方法包括:
6.获取主机发送的读命令;
7.通过加速模块比较当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息是否相同;
8.若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息相同,则直接将上次读命令的数据从ram rd buffer传输给主机;
9.若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息不同,则保存当前读命令的逻辑地址和长度。
10.在其中一个实施例中,在所述保存当前读命令的逻辑地址和长度的步骤之后还包括:
11.nvme hw发送中断信息给软件;
12.待所述软件收到中断信息后,从nvme hw中读取命令信息;
13.软件解析命令并发送给ftl。
14.在其中一个实施例中,在所述软件解析命令并发送给ftl的步骤之后还包括:
15.ftl将命令的逻辑地址映射成实际的物理地址,并将读请求发给后端nfc模块;
16.nfc模块收到所述读请求,向nand请求读取数据;
17.nfc hw将读取到的数据发送到ram rd buffer并通知nvme hw。
18.在其中一个实施例中,在所述nfc hw将读取到的数据发送到ram rd buffer并通知nvme hw的步骤之后还包括:
19.nvme hw将数据传给主机,并保存ram rd buffer地址到加速模块;
20.nvme通知软件读命令完成。
21.一种基于固态硬盘的重复读性能提升装置,所述基于固态硬盘的重复读性能提升装置包括:
22.获取模块,所述获取模块用于获取主机发送的读命令;
23.加速模块,所述加速模块用于比较当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息是否相同;
24.第一命令处理模块,所述第一命令处理模块用于若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息相同,则直接将上次读命令的数据从ram rd buffer传输给主机;
25.第二命令处理模块,所述第二命令处理模块用于若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息不同,则保存当前读命令的逻辑地址和长度。
26.在其中一个实施例中,所述第二命令处理模块还用于:
27.nvme hw发送中断信息给软件;
28.待所述软件收到中断信息后,从nvme hw中读取命令信息;
29.软件解析命令并发送给ftl。
30.在其中一个实施例中,所述第二命令处理模块还用于:
31.ftl将命令的逻辑地址映射成实际的物理地址,并将读请求发给后端nfc模块;
32.nfc模块收到所述读请求,向nand请求读取数据;
33.nfc hw将读取到的数据发送到ram rd buffer并通知nvme hw。
34.在其中一个实施例中,所述第二命令处理模块还用于:
35.nvme hw将数据传给主机,并保存ram rd buffer地址到加速模块;
36.nvme通知软件读命令完成。
37.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
38.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
39.上述基于固态硬盘的重复读性能提升方法、装置、计算机设备和存储介质,获取主机发送的读命令;通过加速模块比较当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息是否相同;若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息相同,则直接将上次读命令的数据从ram rd buffer传输给主机;若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息不同,则保存当前读命令的逻辑地址和长度。本发明可以有效地减少软件重复接收命令、解析命令以及逻辑地址转换物理地址的操作,还可以减少从nand中重复读取数据的延迟,进而提升ssd的重复读性能。
附图说明
40.图1为传统技术中ssd读命令处理的示意图;
41.图2为本发明中ssd读命令处理的示意图;
42.图3为一个实施例中基于固态硬盘的重复读性能提升方法的流程示意图;
43.图4为另一个实施例中基于固态硬盘的重复读性能提升方法的流程示意图;
44.图5为再一个实施例中基于固态硬盘的重复读性能提升方法的流程示意图;
45.图6为一个实施例中基于固态硬盘的重复读性能提升装置的结构框图;
46.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
47.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
48.参考图1所示的传统技术中ssd读命令处理的示意图,现有host rd的方案具体包括以下步骤:1.host发一个读命令给ssd。2.ssd的nvme hw收到读命令。3.nvme hw发送中断信息给软件。4.软件收到中断,然后从nvme hw中读取命令信息。5.软件解析命令后,发送给ftl。6.ftl将命令的逻辑地址映射成实际的物理地址,进一步将读请求发给后端nfc模块。7.nfc模块收到读请求,发送nand的read page命令给nfc hw,请求读取数据。8.nfc hw等待nand的read page完成。9.nfc hw将数据发送到ram rd buffer并通知nvme hw。10.nvme hw将数据再传给host。11.nvme hw通知软件rd命令完成。12.软件回收相关资源。13.软件继续重复步骤2~13处理后续的第2个读命令以及后续的重复读命令。
49.由此可以看出,对于相同逻辑空间的host读请求,该方案有两个缺陷:
50.1.从第2个命令开始,仍然需要软件介入,进行命令解析,ftl地址映射,再把读请求发送到nand。
51.2.从第2个命令开始,还是需要从nand上读取数据,读数据其实已经存在于内部ram rd buffer中。
52.基于此,本发明提出了一种基于固态硬盘的重复读性能提升方法,参考图2所示的ssd读命令处理的示意图,在soc中设计了一个hw acc模块,用来解决以上两个延迟缺陷,从而提升ssd的重复读相同逻辑地址的性能。
53.在一个实施例中,如图3所示,提供了一种基于固态硬盘的重复读性能提升方法,该方法包括:
54.步骤302,获取主机发送的读命令;
55.步骤304,通过加速模块比较当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息是否相同;
56.步骤306,若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息相同,则直接将上次读命令的数据从ram rd buffer传输给主机;
57.步骤308,若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息不同,则保存当前读命令的逻辑地址和长度。
58.在本实施例中,提供了一种基于固态硬盘的重复读性能提升方法,该方法可以应用于如图2所示的应用环境中,设计了一个soc hw acc模块来解决ssd上对于重复读相同逻辑地址时每次需要从nand读取,以及需要软件介入进行控制的相关延迟缺陷,可以提升ssd的重复读性能。
59.具体地,首先获取主机发送的读命令。然后,通过加速模块即图中的hw acc模块比较当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息是否相同。
60.若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息相同,
则直接将上次读命令的数据从ram rd buffer传输给主机;若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息不同,则保存当前读命令的逻辑地址和长度。
61.在本实施例中,获取主机发送的读命令;通过加速模块比较当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息是否相同;若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息相同,则直接将上次读命令的数据从ram rd buffer传输给主机;若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息不同,则保存当前读命令的逻辑地址和长度。本方案可以有效地减少软件重复接收命令、解析命令以及逻辑地址转换物理地址的操作,还可以减少从nand中重复读取数据的延迟,进而提升ssd的重复读性能。
62.在一个实施例中,如图4所示,提供了一种基于固态硬盘的重复读性能提升方法,该方法在保存当前读命令的逻辑地址和长度的步骤之后还包括:
63.步骤402,nvme hw发送中断信息给软件;
64.步骤404,待软件收到中断信息后,从nvme hw中读取命令信息;
65.步骤406,软件解析命令并发送给ftl;
66.步骤408,ftl将命令的逻辑地址映射成实际的物理地址,并将读请求发给后端nfc模块;
67.步骤410,nfc模块收到读请求,向nand请求读取数据;
68.步骤412,nfc hw将读取到的数据发送到ram rd buffer并通知nvme hw;
69.步骤414,nvme hw将数据传给主机,并保存ram rd buffer地址到加速模块;
70.步骤416,nvme通知软件读命令完成。
71.具体地,参考图5所示的基于固态硬盘的重复读性能提升方法的流程示意图,具体包括如下步骤:
72.步骤1、host发送读命令。
73.步骤2、ssd的nvme hw收到读命令。
74.步骤3、hw acc比较前一次的读命令的逻辑地址和长度的信息,如果相同则直接进入步骤14,否则认为是新的读命令,保存这个读命令的逻辑地址和长度,然后进入步骤4。
75.步骤4、nvme hw发送中断信息给软件。
76.步骤5、软件收到中断,然后从nvme hw中读取命令信息。
77.步骤6、软件解析命令后,发送给ftl。
78.步骤7、ftl将命令的逻辑地址映射成实际的物理地址,进一步将读请求发给后端nfc模块。
79.步骤8、nfc模块收到读请求,发送nand的read page命令给nfc hw,请求读取数据。
80.步骤9、nfc hw等待nand的read page完成。
81.步骤10、nfc hw将数据发送到ram rd buffer并通知nvme hw。
82.步骤11、nvme hw将数据再传给host,并保存ram rd buffer地址到hw acc模块。
83.步骤12、nvme通知软件rd命令完成。
84.步骤13、软件回收相关资源。
85.步骤14、hw acc直接用步骤11中保存给它的ram rd buffer地址进行数据传输给host。
86.从上面流程可看出,关键步骤3中一旦hw acc模块检查相同读命令,会直接到步骤14,节省了步骤4到步骤13中软件接入的操作和对nand的读操作的延迟,提升了ssd的重复读性能。
87.在本实施例中,通过设计了一个加速模块减少了对于host重复读相同逻辑空间时每次需要从nand读取增加的延迟以及每次软件介入进行控制的相关延迟,有效地提升了ssd的重复读性能。
88.应该理解的是,虽然图3-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
89.在一个实施例中,如图6所示,提供了一种基于固态硬盘的重复读性能提升装置600,该装置包括:
90.获取模块601,所述获取模块用于获取主机发送的读命令;
91.加速模块602,所述加速模块用于比较当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息是否相同;
92.第一命令处理模块603,所述第一命令处理模块用于若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息相同,则直接将上次读命令的数据从ram rd buffer传输给主机;
93.第二命令处理模块604,所述第二命令处理模块用于若当前读命令的逻辑地址和长度信息与上次读命令的逻辑地址和长度信息不同,则保存当前读命令的逻辑地址和长度。
94.在一个实施例中,第二命令处理模块604还用于:
95.nvme hw发送中断信息给软件;
96.待所述软件收到中断信息后,从nvme hw中读取命令信息;
97.软件解析命令并发送给ftl。
98.在一个实施例中,第二命令处理模块604还用于:
99.ftl将命令的逻辑地址映射成实际的物理地址,并将读请求发给后端nfc模块;
100.nfc模块收到所述读请求,向nand请求读取数据;
101.nfc hw将读取到的数据发送到ram rd buffer并通知nvme hw。
102.在一个实施例中,第二命令处理模块604还用于:
103.nvme hw将数据传给主机,并保存ram rd buffer地址到加速模块;
104.nvme通知软件读命令完成。
105.关于基于固态硬盘的重复读性能提升装置的具体限定可以参见上文中对于基于固态硬盘的重复读性能提升方法的限定,在此不再赘述。
106.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理
器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于固态硬盘的重复读性能提升方法。
107.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
108.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
109.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
110.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
111.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
112.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1