请求读取方法、装置、可读存储介质及电子设备与流程

文档序号:27948012发布日期:2021-12-11 15:48阅读:97来源:国知局
请求读取方法、装置、可读存储介质及电子设备与流程

1.本发明涉及存储器技术领域,特别是涉及一种请求读取方法、装置、可读存储介质及电子设备。


背景技术:

2.目前针对请求顺序读性能优化的手段主要包括预取机制和流处理机制等。在dramless(dynamic random access memory

less,动态随机存取存储器

内存降低)的ssd(solid state disk,固态硬盘)的应用场景中,由于dramless ssd的读缓存空间比较小,当请求的大小达到或者超过128kb的带宽时,预取策略便无法有效的适用。而流处理机制采用硬件来实现数据的小粒度(例如4kb)快速传输,恰好可以弥补读缓存空间不足的影响。
3.然而,对于连续的非对齐请求顺序读场景下,由于两个连续请求相邻的不对齐部分需要重复读两次,导致一份不对齐的4k数据需要消耗两个4k传输单元,极大的影响着流处理机制的效率。


技术实现要素:

4.本发明所要解决的技术问题是:提供一种请求读取方法、装置、可读存储介质及电子设备,提高非对齐请求读取性能。
5.为了解决上述技术问题,本发明采用的技术方案为:
6.一种请求读取方法,包括步骤:
7.接收读请求;
8.确定所述读请求的非对齐部分;
9.将所述非对齐部分依次预取到读缓存中;
10.从所述读缓存中读取并传输所述非对齐部分。
11.为了解决上述技术问题,本发明采用的另一种技术方案为:
12.一种请求读取装置,包括:
13.接收模块,用于接收读请求;
14.确定模块,用于确定所述读请求的非对齐部分;
15.预取模块,用于将所述非对齐部分依次预取到读缓存中;
16.读取传输模块,用于从所述读缓存中读取并传输所述非对齐部分。
17.为了解决上述技术问题,本发明采用的另一种技术方案为:
18.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述请求读取方法中的各个步骤。
19.为了解决上述技术问题,本发明采用的另一种技术方案为:
20.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述请求读取方法中的各个步骤。
21.本发明的有益效果在于:确定读请求的非对齐部分,并将非对齐部分依次预取至读缓存中,然后再从读缓存中对非对齐部分进行读取并传输,对于连续的非对齐请求而言,两个连续请求相邻的非对齐部分,就能够存储在同一个读取单元中,不需要像现有技术通过重复读两次,并且需要消耗两个传输单元进行传输,能够在同一个读取单元中同时读取到两个连续的非对齐请求的相邻非对齐部分并进行传输,从而避免了对相邻非对齐部分的重复读取和重复传输,提高读请求读取效率的同时降低了存储空间的消耗,从而提高了对非对齐请求的读取性能。
附图说明
22.图1为本发明实施例的一种请求读取方法的步骤流程图;
23.图2为本发明实施例的一种请求读取方法的分解示意图;
24.图3为本发明实施例的一种请求读取方法的逻辑地址和映射地址的关系示意图;
25.图4为本发明实施例的一种请求读取方法的结构示意图;
26.图5本发明实施例的一种电子设备的结构示意图。
具体实施方式
27.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
28.请参照图1,本发明一实施例提供一种请求读取方法,包括步骤:
29.接收读请求;
30.确定所述读请求的非对齐部分;
31.将所述非对齐部分依次预取到读缓存中;
32.从所述读缓存中读取并传输所述非对齐部分。
33.由上述描述可知,本发明的有益效果在于:确定读请求的非对齐部分,并将非对齐部分依次预取至读缓存中,然后再从读缓存中对非对齐部分进行读取并传输,对于连续的非对齐请求而言,两个连续请求相邻的非对齐部分,就能够存储在同一个读取单元中,不需要像现有技术通过重复读两次,并且需要消耗两个传输单元进行传输,能够在同一个读取单元中同时读取到两个连续的非对齐请求的相邻非对齐部分并进行传输,从而避免了对相邻非对齐部分的重复读取和重复传输,提高读请求读取效率的同时降低了存储空间的消耗,从而提高了对非对齐请求的读取性能。
34.进一步地,所述确定所述读请求的非对齐部分包括:
35.将所述读请求分解为头部、主体部和尾部;
36.将所述读请求的所述头部和尾部确定为所述读请求的非对齐部分。
37.由上述描述可知,通过将读请求分解为头部、主体部和尾部,并将读请求的头部和尾部标识为非对齐部分,从而当接收读请求后能够快速的将请求的头部和尾部确认为请求中的非对齐部分,并将请求的头部和尾部预取到读缓存中,从而提高了读取效率。
38.进一步地,所述将所述读请求分解为头部、主体部和尾部包括:
39.将所述读请求对应的逻辑地址以预设映射单元为单位进行分解;
40.将分解后的读请求中能够完整映射到对应的映射单元的部分确定为所述读请求
的主体部;
41.将分解后的读请求中不能够完整映射到对应的映射单元并且逻辑地址较小的部分确定为所述读请求的头部;
42.将分解后的读请求中不能够完整映射到对应的映射单元并且逻辑地址较大的部分确定为所述读请求的尾部。
43.由上述描述可知,将读请求对应的逻辑地址以预设映射单元为单位进行分解,并根据分解后的请求是否能够完整映射到对应的映射单元确定逻辑地址中请求的对齐部分和非对齐部分,并且通过逻辑地址的大小判断非对齐部分中的头部和尾部,从而能够快速的判断出当前请求中的对齐部分和非对齐部分以及头部、尾部和主体部对应的逻辑地址,提高对请求中非对齐部分的判断效率,进而提高读取效率。
44.进一步地,还包括:
45.将所述主体部确定为所述读请求的对齐部分;
46.将所述对齐部分存储至闪存中;
47.通过流处理机制读取并传输所述闪存中的所述对齐部分。
48.由上述描述可知,通过将对齐部分和非对齐部分进行分别存储,从而能够采用不同的读取方式对待读取请求的非对齐部分和对齐部分进行读取,并且采用流处理机制的方式进行读取,能够更快速的将缓存中的数据存储至主机中;同时,流处理机制能够支持多笔度请求并发执行,进一步提高读取请求的效率。
49.进一步地,所述传输所述非对齐部分包括:
50.由固件传输所述非对齐部分;
51.所述传输所述闪存中的所述对齐部分包括:
52.由硬件传输所述对齐部分。
53.由上述描述可知,通过固件对请求的非对齐部分进行传输,而由硬件对请求的对齐部分进行传输,采用不同的读取方式对读请求的非对齐部分和对齐部分进行分别读取,从而大大提高了对读取请求的读取效率。
54.进一步地,所述确定所述读请求的非对齐部分之前还包括:
55.判断所述读请求是否为连续的非对齐请求,若是,则执行所述确定所述读请求的非对齐部分的步骤;若否,则进行常规读取。
56.由上述描述可知,通过对读请求的连续性和对齐性进行判断,只有当待读取的请求为多条连续的非对齐请求时才启动预读取模式,避免当只有一条读请求或连续的对齐请求时仍然启动预读取模式,从而减少了系统不必要的耗能。
57.进一步地,所述判断所述读请求是否为连续的非对齐请求包括:
58.判断所述读请求的逻辑地址是否与映射单元的映射地址对齐,并且判断所述读请求的尾地址与下一个读请求的首地址是否连续,若不对齐并且连续,则所述读请求为连续的非对齐请求。
59.由上述描述可知,通过判断读请求的逻辑地址是否与映射单元的映射地址对齐,以及判断读请求的尾地址与下一个读请求的首地址是否连续来判断当前读请求与下一个读请求的连续性以及对齐性,不仅能够快速地判断待读取请求的连续性以及对齐性,且判断方式简单,从而提高读取效率。
60.请参照图4,本发明另一实施例提供了一种请求读取装置,包括:
61.接收模块,用于接收读请求;
62.确定模块,用于确定所述读请求的非对齐部分;
63.预取模块,用于将所述非对齐部分依次预取到读缓存中;
64.读取传输模块,用于从所述读缓存中读取并传输所述非对齐部分。
65.本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述请求读取方法中的各个步骤。
66.为了解决上述技术问题,本发明采用的另一种技术方案为:
67.请参照图5,本发明另一实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述请求读取方法中的各个步骤。
68.本发明上述请求读取方法、装置、计算机可读存储介质及电子设备能够适用于dramless类型的ssd,以下通过具体实施方式进行说明:
69.实施例一
70.请参照图1,一种请求读取方法,包括步骤:
71.s1、接收读请求;
72.s2、确定所述读请求的非对齐部分;
73.具体的,将所述读请求分解为头部、主体部和尾部,如在程序命令中,可将所述头部、主体部和尾部分别标记为head、body和tail;将所述读请求的所述头部和尾部确定为所述读请求的非对齐部分,即所述head和所述tail为非对齐部分;将所述主体部确定为所述读请求的对齐部分,即所述body为对齐部分;
74.s3、将所述非对齐部分依次预取到读缓存中;
75.s4、从所述读缓存中读取并传输所述非对齐部分;
76.其中,将所述非对齐部分依次预取到读缓存中时,将所述对齐部分依次存储至闪存中;并且通过流处理机制读取所述闪存中的所述对齐部分后,由硬件传输所述对齐部分;而通过固件传输所述非对齐部分;
77.请参照图2,以请求大小为128k对上述的流程步骤进行具体说明:
78.预设第一条请求为req0,第二条请求为req1,第三条请求为req2,且所述请求req0、所述请求req1和所述请求req2为连续的不对齐请求;当接收所述请求req0时,对所述请求req0进行常规读取,并将所述请求req0拆分为head0、body0和tail0;具体的,确定所述请求req0的非对齐部分,由于为第一条请求,因此请求req0的head0部分不需要进行缓存读取,因此非对齐部分只有tail0;将所述请求req0的tail0储存至所述读缓存中的第一个4k单元中;读取所述请求req0的同时,对所述请求req1和所述请求req2进行预读取;确定所述请求req1和所述请求req2中的非对齐部分;对所述请求req1和所述请求req2进行分解,将所述请求req1和所述请求req2对应的逻辑区块地址(logical block address,lba)根据映射单元的大小4k进行对齐分解,所述head的大小为2k,所述body的大小为124k,所述tail的大小为2k,分别得到:
79.所述请求req1包括:head1、body1和tail1;
80.所述请求req2包括:head2、body2和tail2;
81.再依次将所述请求req1中的head1和tail2以及所述请求req2中的head2和tail2储存至读缓存中;对每个所述head或tail以4k大小进行预取;以4k大小将所述请求req1中的head1储存至所述读缓存中的第一个4k单元中,与所述请求req0的tail0共用一个所述读缓存的4k;即前一条请求的tail与当前请求的head放置在同一个所述读缓存的4k中;再次以4k大小对所述请求req1中的tail1进行预取时,由于所述请求req1中的tail1与所述请求req2中的head2为连续的不对齐部分,两个不对齐的部分构正好成一个4k,因此预取所述请求req1中的tail1时,同时将所述请求req2中的head2也储存至同一个所述缓存的4k中,则在需要读取req2时只需要直接从缓存中获取;最后再以4k大小对所述请求req2中的tail2进行预取,储存在所述读缓存的另一个4k单元内;
82.当预取到所述请求req1中的body1时,将所述请求req1中的body1储存至nand(计算机闪存设备)中;当预取到所述请求req2中的body2时,将所述请求req2中的body2也储存至nand中,并与所述请求req1中的body1有序排列;
83.当对请求进行读取时,对于命中到的所读缓存中的head或tail,由固件启动数据传输;对于命中的到nand中的body采用流处理机制进行处理,读取完成后由硬件进行数据传输;其主要原理为:硬件内部包含一定的buffer例如128k,在处理所述读请求的时候,将所述读请求拆分为4k粒度进行处理,将nand中读到的每个4k快速传输至host(主机)缓存,完成后立即释放对应的4k buffer,同时支持多笔所述读请求并发执行,来达到高效的缓存利用率;
84.若所述读缓存的大小为256k,则可以满足接近64个128k不对齐请求的head和tail,缓存效果比较好,命中的数据可以直接返回;
85.其中,步骤s1之前还包括步骤s0、判断所述读请求是否为连续的非对齐请求:
86.判断所述读请求的逻辑地址是否与映射单元的映射地址对齐,并且判断所述读请求的尾地址与下一个读请求的首地址是否连续,若不对齐并且连续,则所述读请求为连续的非对齐请求,执行所述确定所述读请求的非对齐部分的步骤;若所述请求不连续或为对齐的连续请求,则进行常规读取。
87.实施例二
88.本实施例与实施一的不同在于,限定了分解所述请求的方法;
89.所述将所述读请求分解为头部、主体部和尾部包括:
90.将所述读请求对应的逻辑地址以预设映射单元为单位进行分解;将分解后的读请求中能够完整映射到对应的映射单元的部分确定为所述读请求的主体部;将分解后的读请求中不能够完整映射到对应的映射单元并且逻辑地址较小的部分确定为所述读请求的头部;将分解后的读请求中不能够完整映射到对应的映射单元并且逻辑地址较大的部分确定为所述读请求的尾部;
91.请参照图3,将所述请求req1和所述请求req2对应的lba进行4k对齐分解;如所述请求req1的lba的sector(扇区)范围为4

259,而每一映射单元包括8位,如映射单元中0

7为一个单元,7

15为另一个映射单元;以此类推所述请求req1对应的最后一个映射单元为256

263;其中,head1部分对应的lba范围为4

7,body1部分对应的lba范围为8

255,tail1部分对应的lba范围为256

259;所述请求req2的lba的sector范围为260

515;映射;其中,head2部分对应的lba范围为260

263,body2部分对应的lba范围为264

511,tail1部分对应
的lba范围为512

515;由于所述请求req1在映射单元0上的映射位置为4

7,并未将所述映射单元0中的映射地址填满,因此所述请求req1未完全映射在所述映射单元0上,因此逻辑地址4

7对应的部分为所述请求req1的非对齐部分;同时,由于所述请求req1在映射单元32上的映射位置为256

259,并未将所述映射单元32中的映射地址填满,因此所述请求req1的逻辑地址未完全映射在所述映射单元32上,因此逻辑地址256

259对应的部分为所述请求req1的非对齐部分;并且,由于逻辑地址4

7的大小小于逻辑地址256

259的大小,因此可知,逻辑地址4

7为所述请求req1的head1,逻辑地址256

259为所述请求req1的tail1;以此类推,得到所述请求req2的非对齐部分的逻辑地址为260

263和512

515,且逻辑地址260

263为所述请求req2的head2,逻辑地址512

515为所述请求req2的tail2。
92.实施例三
93.请参照图4,一种请求读取装置,包括:
94.接收模块,用于接收读请求;
95.确定模块,用于确定所述读请求的非对齐部分;
96.预取模块,用于将所述非对齐部分依次预取到读缓存中;
97.读取传输模块,用于从所述读缓存中读取并传输所述非对齐部分。
98.实施例四
99.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例一或二中任一个中的请求读取方法中的各个步骤。
100.实施例五
101.请参照图5,一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例一或二中任一个中的请求读取方法中的各个步骤。
102.综上所述,本发明提供的请求读取方法、装置、可读存储介质及电子设备,通过读请求对应的逻辑地址和映射地址之间的关系将读请求分解为头部、尾部和主体部,并确定头部和尾部为非对齐部分,确定主体部为对齐部分,再将非对齐部分依次预取至读缓存中而将对齐部分依次储存至闪存设备中,读取非对齐部分时,从读缓存中对非对齐部分进行读取并通过固件进行传输,对于连续的非对齐请求而言,两个连续请求相邻的非对齐部分,就能够存储在同一个读取单元中,不需要像现有技术通过重复读两次,并且需要消耗两个传输单元进行传输,能够在同一个读取单元中同时读取到两个连续的非对齐请求的相邻非对齐部分并进行传输,从而避免了对相邻非对齐部分的重复读取和重复传输,而读取对齐部分时则通过流处理机制进行读取并采用硬件进行传输,通过对读请求的对齐部分和非对齐部分分别采用不同读取和传输方式,提高了读请求读取效率的同时降低了存储空间的消耗,不仅可以减少dramless的sdd对非对齐请求的读数据量,而且还可以进一步提升dramless的sdd对非对齐请求的读取效率,从而达到提高了dramless的sdd读取性能。
103.在本技术所提供的上述实施例中,应该理解到,所揭露的方法、装置、计算机可读存储介质以及电子设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一
些接口,装置或组件或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
104.所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部组件来实现本实施例方案的目的。
105.另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个组件单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
106.所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
107.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
108.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
109.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1