一种主存数据管理方法及装置与流程

专利2023-10-13  111



1.本发明涉及数据处理技术领域,特别是涉及一种主存数据管理方法及装置。


背景技术:

2.数据处理器在运行过程中需要处理的数据可能存储于主存中,这种情况下数据处理器需要访问主存,从主存中读取数据,并写入存取速度较快的高速缓存内,数据处理器可以从高速缓存内读取数据进行数据处理。相关技术中,向主存中存储数据时会将数据存储至已存储数据的尾部,从而保证所存储数据的连续性,在从主存中读取数据时,从已存储数据的首部开始,读取连续的数据。
3.但若主存中位于已存储数据尾部之后的空闲存储空间不足以容纳待存储数据,则采用上述存储方式难以将待存储数据存储至主存中,为此,可以将主存中的已存储数据搬运至主存存储空间的起始位置,从而扩大位于已存储数据尾部之后的空闲存储空间。
4.但在数据搬运过程中主存会处于锁定状态,在主存处于锁定状态时,数据处理器难以访问主存中存储的数据,进而也就是难以对主存进行数据管理。采用相关技术进行主存数据管理过程中,会频繁对已存储数据进行数据搬运,从而影响数据处理器的正常工作,导致数据处理器的利用率较低。


技术实现要素:

5.本发明实施例的目的在于提供一种主存数据管理方法及装置,以降低数据搬运的次数,提高数据处理器的利用率。具体技术方案如下:
6.第一方面,本发明实施例提供了一种主存数据管理方法,上述方法包括:
7.接收待存储数据;
8.判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储所述待存储数据,其中,所述第二存储空间位于所述主存内固定的第一存储空间中,所述第二存储空间的大小小于所述第一存储空间大小,所述写入位置为:最近一次写入数据的数据尾所在的位置;
9.若足以,从所述写入位置开始,将所述待存储数据存储至所述第一空闲空间;
10.若不足以,在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的第一起始位置开始,将所述待存储数据存储至所述第二空闲空间,其中,所述第二空闲空间为:所述第二存储空间内位于读取位置之前的空闲存储空间,所述读取位置为:已存储时长最长数据的数据头所在的位置。
11.本发明的一个实施例中,在所述在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的起始位置开始,将所述待存储数据存储至所述第二空闲空间之前,还包括:
12.将所述第二存储空间的第二起始位置更新为第一位置,其中,所述第一位置为:位于更新前第二起始位置前第二数据量的位置,所述第二数据量为:所述第一空闲空间能够
容纳的数据量;
13.将所述第二存储空间的终止位置更新为第二位置,其中,所述第二位置为:位于更新前终止位置前第二数据量的位置。
14.本发明的一个实施例中,所述方法还包括:
15.在接收到数据处理服务发送的数据提取请求的情况下,读取并向所述数据处理服务发送目标数据,以使得所述数据处理服务对所述目标数据进行处理,其中,所述目标数据为:在所述第二存储空间内位于所述读取位置后的数据;
16.接收所述数据处理服务反馈的处理情况信息;
17.若所述处理情况信息表示处理数据成功,则将所述读取位置更新为第三位置,其中,所述第三位置为:读取前所述数据处理服务成功处理的数据的数据尾所在的位置;
18.若所述处理情况信息表示处理数据失败,则在所述第二存储空间内存在位于读取位置前的数据的情况下,以所述第二存储空间的第二起始位置为尾,将所述目标数据搬运至所述第二起始位置前,将所述第二起始位置与所述读取位置均更新为搬运后所述目标数据数据头所在的位置。
19.本发明的一个实施例中,在所述将所述第二起始位置与所述读取位置均更新为搬运后所述目标数据数据头所在的位置之后,还包括:
20.将所述第二存储空间的终止位置更新为第四位置,其中,所述第四位置为:位于更新前所述终止位置前第一数据量的位置,所述第一数据量为:所述目标数据的数据量。
21.本发明的一个实施例中,所述将所述目标数据搬运至所述第二起始位置前,包括:
22.采用主存复制memcpy方式或主存移动memmove方式,将所述目标数据搬运至所述第二起始位置前;
23.或
24.所述待存储数据为音频数据、图像数据或视频数据。
25.本发明的一个实施例中,所述方法还包括:
26.在所述读取位置位于写入位置前端的情况下,确定第三存储空间的大小是否小于第四存储空间的大小,其中,所述第三存储空间为:所述第二存储空间中位于所述读取位置前的存储空间,所述第四存储空间为:所述第一存储空间中位于所述写入位置后的存储空间;
27.若是,则将所述第二存储空间的第二起始位置更新为所述读取位置,并按照更新前所述第二存储空间的大小,基于更新后所述第二存储空间的第二起始位置更新所述第二存储空间的终止位置。
28.本发明的一个实施例中,所述方法还包括:
29.若所述第一空闲空间足以存储所述待存储数据,向发送所述待存储数据的数据接收服务反馈第一状态信息,其中,所述第一状态信息表示:所述待存储数据存储成功;
30.和/或
31.若所述第一空闲空间不足以存储所述待存储数据,向所述数据接收服务发送第二状态信息,其中,所述第二状态信息表示:所述待存储数据存储失败。
32.第二方面,本发明实施例提供了一种主存数据管理装置,所述装置包括:
33.数据接收模块,用于接收待存储数据;
34.空间判断模块,用于判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储所述待存储数据,其中,所述第二存储空间位于所述主存内固定的第一存储空间中,所述第二存储空间的大小小于所述第一存储空间大小,所述写入位置为:最近一次写入数据的数据尾所在的位置;
35.第一存储模块,用于在所述空间判断模块判定第一空闲空间足以存储所述待存储数据的情况下,从所述写入位置开始,将所述待存储数据存储至所述第一空闲空间;
36.第二存储模块,用于在所述空间判断模块判定第一空闲空间不足以存储所述待存储数据的情况下,在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的第一起始位置开始,将所述待存储数据存储至所述第二空闲空间,其中,所述第二空闲空间为:所述第二存储空间内位于读取位置之前的空闲存储空间,所述读取位置为:已存储时长最长数据的数据头所在的位置。
37.本发明的一个实施例中,所述装置还包括:
38.第一位置更新模块,用于在将所述待存储数据存储至所述第二空闲空间之前,将所述第二存储空间的第二起始位置更新为第一位置,其中,所述第一位置为:位于更新前第二起始位置前第二数据量的位置,所述第二数据量为:所述第一空闲空间能够容纳的数据量;
39.第二位置更新模块,用于将所述第二存储空间的终止位置更新为第二位置,其中,所述第二位置为:位于更新前终止位置前第二数据量的位置。
40.本发明的一个实施例中,所述第二存储模块,具体用于:
41.在所述空间判断模块判定第一空闲空间不足以存储所述待存储数据的情况下,在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的第一起始位置开始,采用主存复制memcpy方式或主存移动memmove方式,将所述目标数据搬运至所述第二起始位置前;
42.或
43.所述待存储数据为音频数据、图像数据或视频数据。
44.本发明的一个实施例中,所述装置还包括:
45.数据读取模块,用于在接收到数据处理服务发送的数据提取请求的情况下,读取并向所述数据处理服务发送目标数据,以使得所述数据处理服务对所述目标数据进行处理,其中,所述目标数据为:在所述第二存储空间内位于所述读取位置后的数据;
46.信息接收模块,用于接收所述数据处理服务反馈的处理情况信息;
47.第三位置更新模块,用于若所述处理情况信息表示处理数据成功,则将所述读取位置更新为第三位置,其中,所述第三位置为:读取前所述数据处理服务成功处理的数据的数据尾所在的位置;
48.第四位置更新模块,用于若所述处理情况信息表示处理数据失败,则在所述第二存储空间内存在位于读取位置前的数据的情况下,以所述第二存储空间的第二起始位置为尾,将所述目标数据搬运至所述第二起始位置前,将所述第二起始位置与所述读取位置均更新为搬运后所述目标数据数据头所在的位置。
49.本发明的一个实施例中,第二位置更新模块,还用于:
50.将所述第二存储空间的终止位置更新为第四位置,其中,所述第四位置为:位于更
新前所述终止位置前第一数据量的位置,所述第一数据量为:所述目标数据的数据量。
51.本发明的一个实施例中,所述装置还包括:
52.大小确定模块,用于在所述读取位置位于写入位置前端的情况下,确定第三存储空间的大小是否小于第四存储空间的大小,其中,所述第三存储空间为:所述第二存储空间中位于所述读取位置前的存储空间,所述第四存储空间为:所述第一存储空间中位于所述写入位置后的存储空间;
53.数据搬运模块,用于若所述大小确定模块的确定结果为第三存储空间的大小小于第四存储空间的大小,则将所述第二存储空间的第二起始位置更新为所述读取位置,并按照更新前所述第二存储空间的大小,基于更新后所述第二存储空间的第二起始位置更新所述第二存储空间的终止位置。
54.本发明的一个实施例中,所述装置还包括:
55.第一信息发送模块,用于若所述第一空闲空间足以存储所述待存储数据,向发送所述待存储数据的数据接收服务反馈第一状态信息,其中,所述第一状态信息表示:所述待存储数据存储成功;
56.和/或
57.第二信息发送模块,用于若所述第一空闲空间不足以存储所述待存储数据,向所述数据接收服务发送第二状态信息,其中,所述第二状态信息表示:所述待存储数据存储失败。
58.第三方面,本发明实施例提供的一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
59.存储器,用于存放计算机程序;
60.处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
61.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
62.第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法步骤。
63.本发明实施例有益效果:
64.由以上可见,应用本发明实施例提供的方案对主存进行数据管理时,若写入位置之后的第一空闲空间能够存储待存储数据,则可以直接将待存储数据存储至第一空闲空间。反之,若第一空闲空间的不足以存储待存储数据,则可以判断读取位置之前的第二空闲空间是否足以存储待存储数据,若足以就可以将待存储数据存储至读取位置之前的第二空闲空间中。而相关技术中,待存储数据会被存储至已存储数据的尾部,也就是已存储数据后的第一空闲空间内。但通过本方案存储数据时,不仅能够将待存储数据写入位于已存储至主存的数据后的第一空闲空间内,在第一空闲空间较小的情况下,也可以将待存储数据存储至读取位置前、与第一空闲空间不同的第二空闲空间中,而此过程中不需要进行相关技术中的数据搬运过程。因此通过本发明实施例在管理主存数据时可以充分利用第一存储空间内的空闲存储空间,从而在能够实现数据存储的情况下,减少数据搬运的次数,提高数据处理器的利用率。
附图说明
65.为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
66.图1a为本发明实施例提供的第一种数据存储结构示意图;
67.图1b为本发明实施例提供的第二种数据存储结构示意图;
68.图1c为本发明实施例提供的第三种数据存储结构示意图;
69.图2a为本发明实施例提供的第一种应用场景示意图;
70.图2b为本发明实施例提供的第二种应用场景示意图;
71.图3为本发明实施例提供的第一种主存数据管理方法的流程示意图;
72.图4a为本发明实施例提供的第四种数据存储结构示意图;
73.图4b为本发明实施例提供的第五种数据存储结构示意图;
74.图4c为本发明实施例提供的第六种数据存储结构示意图;
75.图5为本发明实施例提供的第二种主存数据管理方法的流程示意图;
76.图6a为本发明实施例提供的第七种数据存储结构示意图;
77.图6b为本发明实施例提供的第八种数据存储结构示意图;
78.图7为本发明实施例提供的第三种主存数据管理方法的流程示意图;
79.图8a为本发明实施例提供的第九种数据存储结构示意图;
80.图8b为本发明是实施例提供的一种多媒体数据管理流程示意图;
81.图9为本发明实施例提供的第四种主存数据管理方法的流程示意图;
82.图10为本发明实施例提供的第五种主存数据管理方法的流程示意图;
83.图11为本发明实施例提供的第一种主存数据管理装置的结构示意图;
84.图12为本发明实施例提供的第二种主存数据管理装置的结构示意图;
85.图13为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
86.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
87.由于采用相关技术进行数据存取的过程中,存在频繁对已存储数据进行数据搬运,导致数据处理器的利用率较低的问题。为了解决这一个问题,本发明实施例提供了一种主存数据管理方法及装置。
88.本发明实施例提供了一种主存数据管理方法,上述方法包括:
89.接收待存储数据;
90.判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储上述待存储数据,其中,上述第二存储空间位于上述主存内固定的第一存储空间中,上述第二存储空间的大小小于上述第一存储空间大小,上述写入位置为:最近一次写入数据的数据
register)、高速缓存(cache memory)与主存。上述cpu高速缓存为cpu中包含的数据存储单元,cpu高速缓存的数据存取速度往往小于1ns,主存的数据存取速度往往为65ns左右,两者的存取速度相差较大,另外,cpu高速缓存的存储空间大小往往为4k-64k,主存的存储空间大小往往为4g-32g,两者之间的存储空间大小也相差较大,两者之间直接进行数据交互较为困难,因此可以借助高速缓存实现cpu高速缓存与主存之间的数据交互。
103.高速缓存的存储空间大小往往大于cpu高速缓存的存储空间大小,但小于主存的存储空间大小。例如,上述高速缓存的存储空间大小往往为2m-16mb之间。
104.图2a中cpu高速缓存与高速缓存之间的箭头表示cpu高速缓存与高速缓存之间可以进行数据交互,高速缓存与主存之间的箭头表示高速缓存与主存之间可以进行数据交互。cpu可以控制从主存中提取数据并存储至高速缓存中,再从高速缓存中提取数据并存储至cpu高速缓存中,再对cpu高速缓存中的数据进行数据处理。另外,cpu也可以控制从cpu高速缓存中提取数据并存储至高速缓存中,再从高速缓存中提取数据并存储至主存中。本发明实施例可以应用于将数据存储至主存或从主存中提取数据的过程中。
105.另外,本发明实施例中管理的数据可以为任意类型的数据,例如,上述数据可以为音频数据、图像数据、视频数据等多媒体数据。具体的,上述多媒体数据可以为采集设备采集到的,上述采集设备可以安装于本发明执行主体所在的目标设备上,也可以为目标设备之外的其他设备。其中,上述采集设备可以为:音频采集设备、图像采集设备、视频采集设备等多媒体采集设备。另外,上述多媒体数据也可以为从网络中获取的数据,或其他设备发送至目标设备的,本实施例对此不进行限定。
106.参见图2b,为本发明实施例提供的第二种应用场景示意图,该应用场景中数据处理器所管理的数据是多媒体数据。
107.其中,采集设备与数据接收服务之间的箭头表示采集设备采集到多媒体数据后,可以将包含多媒体数据的数据包发送至目标设备中的数据接收服务,例如,可以通过网络将数据包发送至数据接收服务,数据接收服务接收到数据包后可以向采集设备发送反馈信号,表示目标设备已接收到采集设备所采集的数据包。
108.数据接收服务与主存之间的箭头表示cpu控制将数据接收服务接收到的数据包存储至主存中。主存与数据处理服务之间的箭头表示cpu控制从主存中读取数据,并将读取的数据发送至数据处理服务。本发明提供的方案应用于上述两个过程中。
109.由于本实施例中处理的数据为多媒体数据,此类数据往往为经过封装与编码后的数据。目标设备获得到上述多媒体数据后需要对数据进行拆封装与解码后才能使用。例如,上述多媒体数据的封装格式包括但不限于ps(photoshop)、ts(transport stream,传输流)、iso、mp4、avi等格式,多媒体数据的编码格式包括但不限于h264、h265、vp8、vp9,、hik264、hik265等格式,则上述数据处理服务可以用于对接收到的多媒体数据进行拆封装与解码处理。
110.数据处理服务与业务处理服务之间的箭头表示cpu可以控制将数据处理服务处理后的数据发送至业务处理服务,业务处理服务可以基于数据处理服务处理后的数据进行后续的业务处理,例如,上述业务可以为ai(artificial intelligence,人工智能)业务、视频播放业务等。具体的,上述数据处理服务向业务处理服务发送的数据可以为拆封装并解码后的多媒体数据等。
111.具体的,图示的数据接收服务、数据处理服务与业务处理服务均为目标设备中的虚拟服务。
112.接下来对本发明实施例的具体处理流程进行描述,参见图3,为本发明实施例提供的第一种主存数据管理方法的流程示意图,上述方法包括以下步骤s301-s304。
113.s301:接收待存储数据。
114.其中,上述待存储数据可以是其他设备发送至本实施例执行主体的数据处理器所在的目标设备的、待经由数据处理器处理的数据。
115.s302:判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储上述待存储数据。
116.其中,上述第二存储空间位于上述主存内固定的第一存储空间中,上述第二存储空间的大小小于上述主存的存储空间大小,上述写入位置为:最近一次写入数据的数据尾所在的位置。
117.具体的,上述第一存储空间可以位于主存中的任意固定位置,第一存储空间的起始位置和终止位置固定不变,本发明实施例开始执行时,上述第二存储空间可以位于第一存储空间的中部,也就是在上述第一存储空间中上述第二存储空间之前存在其他存储空间,并且在上述第一存储空间中上述第二存储空间之后存在其他存储空间。上述第二存储空间也可以位于第一存储空间的尾部,也就是在上述第一存储空间中上述第二存储空间之前存在其他存储空间,并且在上述第一存储空间中上述第二存储空间之后不存在其他存储空间。
118.另外,上述写入位置为最近一次写入数据的数据尾所在的位置,也就是随着数据写入,写入位置会逐渐更新。其中,在上述第二存储空间中未写入任何数据时,上述写入位置的初始值可以为第二存储空间中的任意位置,具体的,可以为第二存储空间的第二起始位置,使得在初始状态时位于写入位置后第一空闲空间的大小最大,此时上述第一空闲空间为整个第二存储空间。
119.另外,上述写入位置可以以主存中地址的形式表示,上述第二存储空间也可以以第二存储空间的第二起始位置的地址以及终止位置的地址的形式表示。
120.再者,上述待存储数据可以以数据包的形式表示。
121.本发明的一个实施例中,若上述第一空闲空间足以存储上述待存储数据,可以直接将上述待存储数据存储至上述第一空闲空间,则可以执行步骤s303。
122.反之,若上述第一空闲空间不足以存储上述待存储数据,也就无法将上述待存储数据存储至上述第一空闲空间,则可以执行步骤s304。
123.s303:从上述写入位置开始,将上述待存储数据存储至上述第一空闲空间。
124.具体的,可以采用物理态连续的存储原则,将上述待存储数据的数据头存储至上述写入位置,并按照字节在待存储数据中从前到后的排列顺序,将各个字节从前到后存储至第一空闲空间内,也就是存储后字节在第一空闲空间内的排列顺序与字节在待存储数据中的排列顺序相同。
125.另外,将待存储数据写入第一空闲空间中之后,上述写入位置会更新为最近一次写入数据的数据尾所在的位置,也就是上述待存储数据的数据尾的存储位置,那么在下一次写入新的待存储数据时,所存储的新的待存储数据会从新的写入位置,即本次存储的待
存储数据的数据尾的存储位置开始继续存储,使得相连两次存储的数据之间不会存在间隔。
126.具体的,在上述写入位置以地址的形式表示的情况下,可以在表示更新前写入位置的地址的基础上加上待存储数据的数据量,得到表示更新后的写入位置的地址。
127.参见图4a,为本发明实施例提供的第四种数据存储结构示意图。图中的虚线区域表示第一存储空间的存储空间,实线区域表示第二存储空间,可见本实施例中第二存储空间位于第一存储空间的尾部。
128.图中示出的矩形框a-c分别为依次写入第二存储空间中的数据包a-c,具体的存储过程为:初始状态中第二存储空间为空,写入位置位于第二存储空间的第二起始位置,此时第一空闲空间为上述第二存储空间,数据包a基于写入位置存储至第二存储空间后,写入位置更新为数据包a数据尾的位置,第一空闲空间更新为第二存储空间中位于数据包a之后的空闲存储空间;之后,数据包b基于更新后的写入位置存储至第二存储空间后,写入位置更新为数据包b数据尾的位置,第一空闲空间更新为第二存储空间中位于数据包b之后的空闲存储空间;之后,数据包c基于更新后的写入位置存储至第二存储空间后,写入位置更新为数据包c数据尾的位置,第一空闲空间更新为第二存储空间中位于数据包c之后的空闲存储空间。
129.图4a中包含的实线箭头指示的位置即为当前的写入位置,虚线箭头指示的位置为当前的读取位置,对读取位置的具体描述可以参见下文步骤s304,在此暂不详述。若存在新的数据包d作为待存储数据,则可以通过前述步骤s302判断当前第一空闲空间是否足以存储数据包d,若是,则可以执行本步骤s303将数据包d存储至第一空闲空间内数据包c之后,否则,可以执行步骤s304。
130.由以上过程可见,随着待存储数据的依次写入,写入位置逐渐后移并且第一空闲空间逐渐缩小。
131.s304:在第二空闲空间足以存储上述待存储数据的情况下,从上述第二空闲空间的第一起始位置开始,将上述待存储数据存储至上述第二空闲空间。
132.其中,上述第二空闲空间为:上述第二存储空间内位于读取位置之前的空闲存储空间,上述读取位置为:已存储时长最长数据的数据头所在的位置。
133.在本发明的可选实施例中上述读取位置为在从第二存储空间中读取数据时,所读取数据的起始位置,上述读取位置为已存储时长最长数据的数据头所在的位置,相当于始终优先从第二存储空间中读取存储时长最长的数据。本发明实施例中,从第二存储空间中读取数据的过程与向第二存储空间写入数据的过程可以同步执行。以前述图4a所示的第二存储空间为例,会优先从虚线箭头所指示的读取位置开始读取数据包a的数据。读取数据之后,被读取的数据可能不再存储于第二存储空间中,也就是靠近第二存储空间起始位置的存储空间会优先变更为空闲存储空间。具体的读取过程可以参见下文图7所示的步骤s701,在此暂不详述。
134.具体的,上述读取位置的初始值可以与写入位置的初始值相同。
135.从读取位置起读取数据之后,读取位置之后的数据不再存储于第二存储空间中,原本存储有第二存储空间再次变为空闲存储空间,可以再次存储数据。在提取数据之后,可以将读取位置更新为所读取数据的数据尾原本的存储位置,具体的读取位置更新方式可以
参见下文步骤s703-s704,在此暂不详述。更新后读取位置之前的空闲存储空间变大,即第二空闲空间变大。
136.若第二空闲空间足以存储上述待存储数据,则可以将待存储数据存储至第二空闲空间,否则,第二空闲空间也不足以容纳待存储数据,则第二存储空间当前暂时无法存储待存储数据,则可以结束本发明实施例的流程。
137.具体的,将待存储数据存储至第二空闲空间中的方式与前述将待存储数据存储至第一空闲空间中的方式相似,区别仅为待存储数据首端的存储位置由写入位置变更为第二空闲空间的第一起始位置,本实施例对此不再赘述。
138.另外,在本实施例执行初期,写入第二存储空间的数据较少,位于写入位置之后的第一空闲空间的大小较大,能够容纳较大量的数据,因此新的待存储数据会优先向后存储,也就是新写入第二存储空间中的数据会位于已存储于第二存储空间中的数据之后。由于写入位置位于最近一次写入的数据的数据尾所在的位置,而读取位置位于已存储时长最长的数据的数据头所在的位置,因此读取位置位于写入位置之前。理论上原本位于当前的读取位置之前的数据均已被读取,数据存储区域中、读取位置之前不存在任何数据,读取位置之前的第二空闲空间的第一起始位置即为第二存储空间的第二起始位置,而位于当前的写入位置之后的存储空间内还未存储有任何数据,也就是写入位置之后的第一空闲空间的终止位置即为第二存储空间的终止位置。
139.在将待存储数据存储至第二空闲空间后,写入位置更新为最近一次写入上述第二空闲空间的待存储数据的数据尾所在的位置之后,第二空闲空间的第一起始位置变更为更新后的写入位置,第二空闲空间的终止位置依旧为上述读取位置。也就是,上述第二空闲空间变更为写入位置之后、读取位置之前的空闲存储空间,因此上述第二空闲空间也可以被称为第一空闲空间。在下一次存储待存储数据时,若第一空闲空间足以存储新的待存储数据,则可以执行步骤s303,将待处理数据写入第一空闲空间中。
140.具体的,在上述第二存储空间的第二起始位置以地址的形式表示的情况下,可以在上述地址的基础上加上待存储数据的数据量,得到新的地址,作为指示更新后写入位置的地址。
141.参见图4b,为本发明实施例提供的第五种数据存储结构示意图。
142.与前述图4b所示的实施例相比,若上述数据包a与数据包b中包含的数据被读取,则读取位置更新为数据包b的数据尾原本的存储位置,上述第二空闲空间为第二存储空间中位于读取位置之前,即位于数据包c之前的空闲存储空间。此时,若存储待存储至第二存储空间中的数据包d,且数据包c之后的第一空闲空间不足以存储上述数据包d,但数据包c之前的第二空闲空间足以存储上述数据包d,则可以将数据包d存储至第二空闲空间中。
143.参见图4c,为本发明实施例提供的第六种数据存储结构示意图。
144.与前述图4b所示的实施例相比,图4c示出了将数据包d存储至第二空闲空间中之后第二存储空间的数据存储结构,将数据包d存储至第二空闲空间中之后,上述写入位置更新为数据包d的数据尾的位置,相应的上述第一空闲空间与第二空闲空间均更新为数据包d与数据包c之间的空闲存储空间。
145.由以上可见,应用本发明实施例提供的方案对主存进行数据管理时,若写入位置之后的第一空闲空间能够存储待存储数据,则可以直接将待存储数据存储至第一空闲空
间。反之,若第一空闲空间的不足以存储待存储数据,则可以判断读取位置之前的第二空闲空间是否足以存储待存储数据,若足以就可以将待存储数据存储至读取位置之前的第二空闲空间中。而相关技术中,待存储数据会被存储至已存储数据的尾部,也就是已存储数据后的第一空闲空间内。但通过本方案存储数据时,不仅能够将待存储数据写入位于已存储至主存的数据后的第一空闲空间内,在第一空闲空间较小的情况下,也可以将待存储数据存储至读取位置前、与第一空闲空间不同的第二空闲空间中,而此过程中不需要进行相关技术中的数据搬运过程。因此通过本发明实施例在管理主存数据时可以充分利用第一存储空间内的空闲存储空间,从而在能够实现数据存储的情况下,减少数据搬运的次数,提高数据处理器的利用率。
146.本发明的一个实施例中,在前述图3所示的主存数据管理方法的基础上还包括以下步骤a-步骤b。
147.步骤a:若上述第一空闲空间足以存储上述待存储数据,向发送上述待存储数据的数据接收服务反馈第一状态信息。
148.其中,上述第一状态信息表示:上述待存储数据存储成功。
149.具体的,上述数据接收服务用于接收并向数据处理器发送上述待存储数据,使得数据处理器将待存储数据存储于主存中。上述数据接收服务可以从采集设备、网络等处接收待存储数据。
150.上述数据接收服务接收到上述第一状态信息确定上述待存储数据存储成功,则可以继续发送下一个待存储数据。
151.步骤b:若上述第一空闲空间不足以存储上述待存储数据,向上述数据接收服务发送第二状态信息。
152.其中,上述第二状态信息表示:上述待存储数据存储失败。
153.上述数据接收服务接收到上述第二状态信息确定上述待存储数据存储失败,则可以暂停继续发送待存储数据,或等待预设时长后重新向数据处理器发送待存储数据。
154.根据前文步骤s304处的描述可知,在将数据存储至第二空闲空间之前,第一空闲空间的终止位置为第二存储空间的终止位置,也就是第二存储空间的终止位置之前存在一个连续的、不会被使用的空闲空间,为了充分利用第二存储空间,可以将上述第二存储空间的终止位置之前的空闲空间去除。
155.为此,参见图5,为本发明实施例提供的第二种主存数据管理方法的流程示意图,与前述图3所示的实施例相比,在上述步骤s304前还包括以下步骤s305-s306。
156.s305:将上述第二存储空间的第二起始位置更新为第一位置。
157.其中,上述第一位置为:位于更新前第二起始位置前第二数据量的位置,上述第二数据量为:上述第一空闲空间能够容纳的数据量。
158.s306:将上述第二存储空间的终止位置更新为第二位置。
159.其中,上述第二位置为:位于更新前终止位置前第二数据量的位置。
160.具体的,本发明实施例在位于第二存储空间终止位置前的第一空闲空间不足以存储上述待存储数据的情况下才会执行步骤s305-s306,因此在执行s305时可以确定待存储数据将不会被存储至第一空闲空间中,第一空闲空间将不会被使用。可以去除上述第一空闲空间,将上述第二存储空间的终止位置更新为第二位置,由于上述第二位置为:位于更新
前终止位置前第二数据量的位置,因此相当于将上述第二存储空间的终止位置前移第二数据量。而第二数据量是更新终止位置前第一空闲空间可容纳的数据量,因此相当于更新后第一空闲空间被去除。
161.另外,为了保证第二存储空间的大小不变,第二起始位置可以进行同样幅度的前移,因此可以将第二起始位置更新为第一位置。又由于根据前文步骤s304处的描述,在将数据存储至第二空闲空间之前,第二空闲空间的第一起始位置即为第二存储空间的第二起始位置,因此将第二存储空间的第二起始位置前移,相当于将第二空闲空间的第一起始位置前移,从而扩大了第二空闲空间,使得第二空闲空间能够存储更多数据。在完成第二存储空间的第二起始位置与终止位置的更新之后,再执行步骤s304,将待存储数据写入第二空闲空间内。
162.参见图6a,为本发明实施例提供的第七种数据存储结构示意图,图6a所示的实施例是执行前述步骤s305-s306后,从前述图4b所示的实施例的基础上得到的。与前述图4b相比,对第二起始位置与终止位置进行了相同幅度的前移,原本位于写入位置之后,即数据包c之后的第一空闲空间被去除,而位于读取位置之前的第二空闲空间增大。
163.参见图6b,为本发明实施例提供的第八种数据存储结构示意图,图6b所示的实施例是在图6a所示的第二存储空间的基础上执行前述步骤s304后得到的。与图6a相比,上述读取位置前的第二空闲空间中被写入数据包d,写入位置更新为数据包d的数据尾所在的位置。
164.与未执行步骤s305-s306,而直接将数据包d写入图4b所示的第二空闲空间中得到的前述图4c所示的数据存储结构相比,执行步骤s305-s306之后得到的图6b所示的第二存储空间内,数据包c之后不再存在不会被使用的空闲空间,第二存储空间被充分利用。
165.由以上可见,在第一空闲空间不足以存储待存储数据时,可以将第二存储空间的终止位置与第二起始位置进行同幅度的前移,在不改变第二存储空间的大小的情况下,去除不会被使用的第一空闲空间,并增大第二空闲空间,从而使得第二空闲空间能够存储更多数据,合理利用数据存储资源。
166.参见图7,为本发明实施例提供的第三种主存数据管理方法的流程示意图,上述方法包括以下步骤s701-s704。需要说明的是,由于主存数据管理方法中对写入数据与读取数据的过程能够彼此独立地同步运行,因此用于描述数据读取过程的图7中并未包含图3所示的用于写入数据的步骤。但图7所示的实施例中所读取的数据是通过前述图3所示的实施例写入至第二存储空间中的。
167.s701:在接收到数据处理服务发送的数据提取请求的情况下,读取并向上述数据处理服务发送目标数据,以使得上述数据处理服务对上述目标数据进行处理。
168.其中,上述目标数据为:在上述第二存储空间内位于上述读取位置后的数据。
169.本发明的一个实施例中,可以将位于上述读取位置之后的全部数据作为目标数据发送至数据处理服务,也可以将从读取位置起预设数据量的数据作为目标数据发送至数据处理服务。
170.例如,参见图4a所示的实施例,上述目标数据可以为位于读取位置之后的所有数据,即数据包a-数据包c。也可以为读取位置之后预设数据量的部分数据,例如数据包a-数据包b。
171.另外,上述数据处理服务往往仅能对完整的数据进行处理,而不能对数据中包含的部分字节进行处理,可以将数据处理服务一次性能够成功处理的最少量数据称为一个数据单元。例如,若上述目标数据为矩阵数据,上述数据单元可以为一个矩阵,若上述目标数据为图像数据,上述数据单元可以为一张图像,若上述目标数据为视频数据,上述数据单元可以为一个视频帧,若上述目标数据为音频数据,上述数据单元可以为一个音频帧。
172.具体的,由前文可见各个待存储数据依次存储至第二存储空间后在第二存储空间内彼此相连,相当于各个待存储数据在第二存储空间中完成了数据拼接,数据存储至第二存储空间内之后不再以待存储数据为单位严格区分。能够组成完整数据单元的数据可以来自于同一待存储数据,也可以来自于不同的待存储数据。例如,参见图4a所示的数据存储结构,一个完整数据单元中包含的数据可以全部来自于数据包a,也可以前半部分来自于数据包a,后半部分来自于数据包b。
173.若上述目标数据中包含无法组成完整的数据单元的部分数据,则即使数据处理服务接收到了上述目标数据,也无法对该部分数据进行处理,为了防止该部分数据丢失,可以将该部分数据继续存储于第二存储空间中。而数据处理服务已成功处理的数据不需要继续存储于第二存储空间中,可以从第二存储空间中移除。
174.本发明的一个实施例中,若数据处理服务成功处理了上述目标数据,则上述处理情况信息可以表示数据处理服务处理数据成功,且上述处理情况信息中可以包含数据处理服务成功处理的数据的信息。根据具体情况,上述已处理数据可以为上述目标数据整体,即上述数据处理服务将上述目标数据完全处理,上述已处理数据也可以为上述目标数据的一部分。
175.另外,上述目标数据可能无法组成任何完整的数据单元,数据处理服务也就无法成功完成任何数据处理,因此上述处理情况信息可以表示数据处理服务处理数据失败。
176.s702:接收上述数据处理服务反馈的处理情况信息。
177.s703:若上述处理情况信息表示处理数据成功,则将上述读取位置更新为第三位置。
178.其中,上述第三位置为:读取前上述数据处理服务成功处理的数据的数据尾所在的位置。
179.本发明的一个实施例中,数据处理服务已成功处理的数据不会再被处理,因此此类数据无需继续存储于第二存储空间中,可以从第二存储空间中移除已成功处理的数据,将上述读取位置更新为读取前上述数据处理服务成功处理的数据的数据尾所在的第三位置,使得下一次基于读取位置读取目标数据时,可以从未被成功处理的数据的数据头处开始读取。
180.具体的,上述处理情况信息中可以包含成功处理的数据的处理数据量,则上述第三位置为位于更新前读取位置之后处理数据量的位置。若上述读取位置以地址的形式表示,则可以在指示读取位置的地址的基础上加上上述处理数据量,得到指示第三位置的地址,作为更新后的指示读取位置的地址。
181.以前述图4a所示的数据存储结构为例,位于读取位置之后的目标数据可以为上述数据包a-数据包c,若上述数据包a与数据包b组成完成的数据单元,数据包c不为完整的数据单元。则数据包a与数据包b可以被数据处理服务成功处理,而数据包c未被成功处理,则
可以将数据包a与数据包b移除第二存储空间,并将读取位置更新为数据包b的数据尾原本在第二存储空间中的位置。具体的,更新后第二存储空间内的数据存储结构可以参见前述图4b。
182.s704:若上述处理情况信息表示处理数据失败,则在上述第二存储空间内存在位于读取位置前的数据的情况下,以上述第二存储空间的第二起始位置为尾,将上述目标数据搬运至上述第二起始位置前,将上述第二起始位置与上述读取位置均更新为搬运后上述目标数据数据头所在的位置。
183.具体的,若上述处理情况信息表示处理数据失败,则说明目标数据中不包含任何完整的数据单元,则目标数据依旧需要存储于第二存储空间中,此时第二存储空间内目标数据后不存在其他数据。
184.一种情况下,当前第二存储空间中仅存储有目标数据,则可以等待后续写入第二存储空间中的数据与目标数据共同组成完整的数据单元。
185.另一种情况下,当前第二存储空间内不仅存储有目标数据,若上述第二存储空间内存在位于读取位置前的数据,说明存在通过前述步骤s304写入至第二空闲空间中的数据,该数据写入第二空闲空间时,是以第二空闲空间的第一起始位置为起点写入的,基于前述步骤s304描述的内容,在向第二空闲空间内写入数据之前,第二空闲空间的第一起始位置即为第二存储空间的第二起始位置,也就是位于读取位置前的数据的数据头位于第二起始位置。
186.并且,当前的写入位置位于存储于读取位置前的数据的数据尾,若后续存在新的待存储数据待写入第二存储空间,该待存储数据会从当前的写入位置开始,被写入读取位置前的空闲空间中,也就是不会被写入位于读取位置之后的目标数据之后,因此也不会与目标数据相连组成完整的数据单元。
187.既然不会出现新的数据存储于目标数据之后与目标数据组成完成的数据单元,则可以移动目标数据,将目标数据搬运至位于读取位置前的数据之前,使得目标数据与位于读取位置之前的数据相连,也就是以上述第二存储空间的第二起始位置为尾,将上述目标数据搬运至上述第二起始位置前,使得目标数据与位于读取位置前的数据组成完整的数据单元,实现所存储数据的物理态连续,即数据在主存中连续存储。
188.具体的,可以采用以下步骤c将上述目标数据搬运至上述第二起始位置前。
189.步骤c:采用memcpy(主存复制)或memmove(主存移动)方式,将上述目标数据搬运至上述第二其实位置前。
190.另外,由于目标数据被搬运至第二起始位置之前,也就是被搬运至第二存储空间之外,因此可以调整第二存储空间的位置,将第二存储空间的第二起始位置更新为搬运后上述目标数据数据头所在的位置,从而使得目标数据依旧包含于第二存储空间内。并且,由于已存储时长最长的目标数据的位置发生变化,位于已存储时长最长的数据的数据头的读取位置也随着目标数据发生变化,更新为搬运后目标数据数据头所在的位置。
191.以前述图6b所示的数据存储结构为例,上述数据包c为位于读取位置之后目标数据,读取位置之前存在数据包d,数据包d的数据头位于第二起始位置,则可以将数据包c搬运至第二起始位置之前,并将第二起始位置和读取位置更新为数据包c的数据头所在的位置。
192.参见图8a,为本发明实施例提供的第九种数据存储结构示意图。图8a示出了在图6b所示的数据存储结构的基础上,对数据包c进行数据搬运后第二存储空间的数据存储结构。与前述图6b所示的实施例相比,数据包c当前位于数据包d之前,且第二起始位置和读取位置为数据包c的数据头所在的位置。
193.由以上可见,本发明实施例可以从第二存储空间中读取目标数据,并将目标数据发送至数据处理服务进行处理,再基于数据处理服务反馈的处理情况信息对第二存储空间进行管理。由于本发明实施例中,在写入数据时不严格要求将数据写入已存储至第二存储空间中的数据之后,也就是后写入的、能够与目标数据组成完整数据单元的数据可能不位于目标数据之后,而位于目标数据之前。因此若处理情况信息表示处理失败,目标数据无法组成完整的数据单元,则可以将目标数据搬运至第二预设位置之前,也就是搬运至位于读取位置之前的数据之前,使得目标数据能够与位于读取位置之前的数据相连,从而可能组成完整的数据单元,进行后续正常的数据处理。并且,本方案中搬运的数据的数据量小于一个数据单元的数据量,因此本发明实施例不仅可以降低数据搬运的次数,还可以减少数据搬运的数据量。
194.结合前述图7所示的实施例与前文步骤a-步骤b,在本发明实施例应用于多媒体数据管理时,参见图8b,为本发明是实施例提供的一种多媒体数据管理流程示意图。
195.具体的,数据接收服务向主存发送数据包,主存判断第一空闲空间是否足以存储上述数据包,若足以,则向数据接收服务反馈第一状态信息,若不足以则向数据接收服务反馈第二状态信息。上述数据包中包含封装编码后的多媒体数据。
196.主存将封装编码后的多媒体数据发送至数据处理服务,数据处理服务判断接收到的多媒体数据中是否至少包含完整的一帧数据,若是,则对每一帧数据进行拆封装解码处理,并向数据处理器反馈包含被拆封装解码处理的数据的数据量的表示处理成功的处理情况信息,否则,向数据处理器反馈表示处理失败的处理情况信息。
197.另外,相关技术中,如前文图2a所示的实施例,高速缓存的存储空间大小与主存的存储空间大小相差较大,数据处理器在从主存中读取数据时,每次仅能将少量的、高速缓存能够容纳的数据读取至高速缓存中。又由于数据处理器往往仅能确定请求读取的数据在主存中的大致存储位置,而基于大致存储位置读取的少量的数据可能不是cpu实质请求的数据,上述问题可以被称为缓存缺失(cache miss)。为了获得cpu所请求的数据,cpu需要多次从主存中读取数据,影响cpu的运行效率。而实施例中,明确指明读取数据的读取位置,cpu可以从读取位置起读取数据,发生缓存缺失的问题的频率大幅下降,从而可以提升cpu的运行效率。
198.再者,由以上可见本发明实施例中可能对不包含完整数据单元的目标数据进行数据搬运,将目标数据搬运至更新前的第二存储空间之前,目标数据的最大数据量无限接近于一个完整数据单元的数据量,因此第一存储空间中位于第二存储空间之前的存储空间理论上需要能够容纳一个完整的数据单元,为此可以将第二存储空间的初始位置设置为主存尾部,从而在第二存储空间之前预留足够大的存储空间。另外,可以基于一个完整的数据单元的数据量设置第二存储空间的大小,从而在第二存储空间之前预留足够大的存储空间。例如,上述第二存储空间的大小可以为第一存储空间大小的一半或更小。
199.由于在步骤s704中对第二存储空间的第二起始位置进行了更新,若第二存储空间
的终止位置不随之更新会导致第二存储空间的大小发生变化。
200.为此,参见图9,为本发明实施例提供的第四种主存数据管理方法的流程示意图,与前述图7所示的实施例相比,在上述步骤s704之后还包括以下步骤s705。
201.s705:将上述第二存储空间的终止位置更新为第四位置。
202.其中,上述第四位置为:位于更新前上述终止位置前第一数据量的位置,上述第一数据量为:上述目标数据的数据量。
203.本发明的一个实施例中,由于步骤s704中对目标数据进行搬运后,目标数据的数据尾位于更新前的第二起始位置处,而更新后第二起始位置位于搬运后目标数据的数据头所在的位置,因此相当于第二起始位置前移了目标数据的第一数据量。相应的,为了使得第二起始位置更新后第二存储空间的大小保持不变,可以将第二存储空间的终止位置同样前移第一数据量,即将上述第二存储空间的终止位置更新为第四位置。
204.由以上可见,在第二存储空间的第二起始位置前移之后,本实施例对第二存储空间的终止位置将进行了相同幅度的前移,从而可以使得本实施例中第二存储空间的大小保持不变。
205.参见图10,为本发明实施例提供的第五种主存数据管理方法的流程示意图,与前述图3所示的实施例相比,上述方法还包括以下步骤s307-s308。
206.由前文图5、图7、图9所示的实施例可见,在本发明实施例的运行过程中,第二存储空间的第二起始位置可能发生前移,也就是第二存储空间的位置可能前移,在本发明实施例循环执行的过程中,第二存储位置逐渐前移可能会移动至第一存储空间前端,使得位于第二存储空间之前的存储空间的大小变小,在上述情况下,若对目标数据进行数据搬运,位于第二存储空间之前的存储空间可能难以容纳上述目标数据,为了解决上述问题可以执行步骤s307-s308。
207.s307:在上述读取位置位于写入位置前端的情况下,确定第三存储空间的大小是否小于第四存储空间的大小。
208.其中,上述第三存储空间为:上述第二存储空间中位于上述读取位置前的存储空间,上述第四存储空间为:上述第一存储空间中位于上述写入后的存储空间。
209.具体的,若上述第三存储空间的大小小于第四存储空间的大小,则说明当前第二存储空间中存储的数据靠前,因此可以更新第二存储空间的位置,则执行步骤s308,否则不需要执行任何操作。
210.本发明的一个实施例中,可以在第二存储空间的第二起始位置发生变化后执行步骤s307,也可以按照预设周期执行步骤s307,从而判断是否需要更新第二存储空间的位置。
211.s308:将上述第二存储空间的第二起始位置更新为上述读取位置,并按照更新前上述第二存储空间的大小,基于更新后上述第二存储空间的第二起始位置更新上述第二存储空间的终止位置。
212.具体的,可以将第二存储空间的第二起始位置更新为上述读取位置,相当于将第二存储空间的第二起始位置后移,并按照更新前上述第二存储空间的大小,基于更新后上述第二存储空间的第二起始位置更新上述第二存储空间的终止位置,使得更新前后第二存储空间的大小保持不变。
213.由以上可见,在上述第三存储空间的大小小于第四存储空间的大小时,为了防止
出现第三存储空间难以存储目标数据的问题,可以对第二存储空间的位置进行更新,在不搬运第二存储空间内的数据的情况下,完成第二存储空间的后移。
214.与上述主存数据管理方法相对应,本发明实施例还提供了一种主存数据管理装置。
215.参见图11,为本发明实施例提供的第一种主存数据管理装置的结构示意图,所述装置包括:
216.数据接收模块1101,用于接收待存储数据;
217.空间判断模块1102,用于判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储所述待存储数据,其中,所述第二存储空间位于所述主存内固定的第一存储空间中,所述第二存储空间的大小小于所述第一存储空间大小,所述写入位置为:最近一次写入数据的数据尾所在的位置;
218.第一存储模块1103,用于在所述空间判断模块判定第一空闲空间足以存储所述待存储数据的情况下,从所述写入位置开始,将所述待存储数据存储至所述第一空闲空间;
219.第二存储模块1104,用于在所述空间判断模块判定第一空闲空间不足以存储所述待存储数据的情况下,在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的第一起始位置开始,将所述待存储数据存储至所述第二空闲空间,其中,所述第二空闲空间为:所述第二存储空间内位于读取位置之前的空闲存储空间,所述读取位置为:已存储时长最长数据的数据头所在的位置。
220.由以上可见,应用本发明实施例提供的方案对主存进行数据管理时,若写入位置之后的第一空闲空间能够存储待存储数据,则可以直接将待存储数据存储至第一空闲空间。反之,若第一空闲空间的不足以存储待存储数据,则可以判断读取位置之前的第二空闲空间是否足以存储待存储数据,若足以就可以将待存储数据存储至读取位置之前的第二空闲空间中。而相关技术中,待存储数据会被存储至已存储数据的尾部,也就是已存储数据后的第一空闲空间内。但通过本方案存储数据时,不仅能够将待存储数据写入位于已存储至主存的数据后的第一空闲空间内,在第一空闲空间较小的情况下,也可以将待存储数据存储至读取位置前、与第一空闲空间不同的第二空闲空间中,而此过程中不需要进行相关技术中的数据搬运过程。因此通过本发明实施例在管理主存数据时可以充分利用第一存储空间内的空闲存储空间,从而在能够实现数据存储的情况下,减少数据搬运的次数,提高数据处理器的利用率。
221.本发明的一个实施例中,所述装置还包括:
222.第一位置更新模块,用于在将所述待存储数据存储至所述第二空闲空间之前,将所述第二存储空间的第二起始位置更新为第一位置,其中,所述第一位置为:位于更新前第二起始位置前第二数据量的位置,所述第二数据量为:所述第一空闲空间能够容纳的数据量;
223.第二位置更新模块,用于将所述第二存储空间的终止位置更新为第二位置,其中,所述第二位置为:位于更新前终止位置前第二数据量的位置。
224.由以上可见,在第一空闲空间不足以存储待存储数据时,可以将第二存储空间的终止位置与第二起始位置进行同幅度的前移,在不改变第二存储空间的大小的情况下,去除不会被使用的第一空闲空间,并增大第二空闲空间,从而使得第二空闲空间能够存储更
多数据,合理利用数据存储资源。
225.本发明的一个实施例中,所述第二存储模块1104,具体用于:
226.在所述空间判断模块判定第一空闲空间不足以存储所述待存储数据的情况下,在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的第一起始位置开始,采用主存复制memcpy方式或主存移动memmove方式,将所述目标数据搬运至所述第二起始位置前;
227.或
228.所述待存储数据为音频数据、图像数据或视频数据。
229.参见图12,为本发明实施例提供的第二种主存数据管理装置的结构示意图,所述装置包括:
230.数据读取模块1201,用于在接收到数据处理服务发送的数据提取请求的情况下,读取并向所述数据处理服务发送目标数据,以使得所述数据处理服务对所述目标数据进行处理,其中,所述目标数据为:在所述第二存储空间内位于所述读取位置后的数据;
231.信息接收模块1202,用于接收所述数据处理服务反馈的处理情况信息;
232.第三位置更新模块1203,用于若所述处理情况信息表示处理数据成功,则将所述读取位置更新为第三位置,其中,所述第三位置为:读取前所述数据处理服务成功处理的数据的数据尾所在的位置;
233.第四位置更新模块1204,用于若所述处理情况信息表示处理数据失败,则在所述第二存储空间内存在位于读取位置前的数据的情况下,以所述第二存储空间的第二起始位置为尾,将所述目标数据搬运至所述第二起始位置前,将所述第二起始位置与所述读取位置均更新为搬运后所述目标数据数据头所在的位置。
234.由以上可见,本发明实施例可以从第二存储空间中读取目标数据,并将目标数据发送至数据处理服务进行处理,再基于数据处理服务反馈的处理情况信息对第二存储空间进行管理。由于本发明实施例中,在写入数据时不严格要求将数据写入已存储至第二存储空间中的数据之后,也就是后写入的、能够与目标数据组成完整数据单元的数据可能不位于目标数据之后,而位于目标数据之前。因此若处理情况信息表示处理失败,目标数据无法组成完整的数据单元,则可以将目标数据搬运至第二预设位置之前,也就是搬运至位于读取位置之前的数据之前,使得目标数据能够与位于读取位置之前的数据相连,从而可能组成完整的数据单元,进行后续正常的数据处理。并且,本方案中搬运的数据的数据量小于一个数据单元的数据量,因此本发明实施例不仅可以降低数据搬运的次数,还可以减少数据搬运的数据量。
235.本发明的一个实施例中,第四位置更新模块1204,还用于:
236.将所述第二存储空间的终止位置更新为第四位置,其中,所述第四位置为:位于更新前所述终止位置前第一数据量的位置,所述第一数据量为:所述目标数据的数据量。
237.由以上可见,在第二存储空间的第二起始位置前移之后,本实施例对第二存储空间的终止位置将进行了相同幅度的前移,从而可以使得本实施例中第二存储空间的大小保持不变。
238.本发明的一个实施例中,所述装置还包括:
239.大小确定模块,用于在所述读取位置位于写入位置前端的情况下,确定第三存储
空间的大小是否小于第四存储空间的大小,其中,所述第三存储空间为:所述第二存储空间中位于所述读取位置前的存储空间,所述第四存储空间为:所述第一存储空间中位于所述写入位置后的存储空间;
240.数据搬运模块,用于若所述大小确定模块的确定结果为第三存储空间的大小小于第四存储空间的大小,则将所述第二存储空间的第二起始位置更新为所述读取位置,并按照更新前所述第二存储空间的大小,基于更新后所述第二存储空间的第二起始位置更新所述第二存储空间的终止位置。
241.由以上可见,在上述第三存储空间的大小小于第四存储空间的大小时,为了防止出现第三存储空间难以存储目标数据的问题,可以对第二存储空间的位置进行更新,在不搬运第二存储空间内的数据的情况下,完成第二存储空间的后移。
242.本发明的一个实施例中,所述装置还包括:
243.第一信息发送模块,用于若所述第一空闲空间足以存储所述待存储数据,向发送所述待存储数据的数据接收服务反馈第一状态信息,其中,所述第一状态信息表示:所述待存储数据存储成功;
244.和/或
245.第二信息发送模块,用于若所述第一空闲空间不足以存储所述待存储数据,向所述数据接收服务发送第二状态信息,其中,所述第二状态信息表示:所述待存储数据存储失败。
246.本发明实施例还提供了一种电子设备,如图13所示,包括处理器1301、通信接口1302、存储器1303和通信总线1304,其中,处理器1301,通信接口1302,存储器1303通过通信总线1304完成相互间的通信,
247.存储器1303,用于存放计算机程序;
248.处理器1301,用于执行存储器1303上所存放的程序时,实现上述主存数据管理方法任一所述的方法步骤。
249.应用本发明实施例提供的电子设备进行主存数据管理时,应用本发明实施例提供的方案对主存进行数据管理时,若写入位置之后的第一空闲空间能够存储待存储数据,则可以直接将待存储数据存储至第一空闲空间。反之,若第一空闲空间的不足以存储待存储数据,则可以判断读取位置之前的第二空闲空间是否足以存储待存储数据,若足以就可以将待存储数据存储至读取位置之前的第二空闲空间中。而相关技术中,待存储数据会被存储至已存储数据的尾部,也就是已存储数据后的第一空闲空间内。但通过本方案存储数据时,不仅能够将待存储数据写入位于已存储至主存的数据后的第一空闲空间内,在第一空闲空间较小的情况下,也可以将待存储数据存储至读取位置前、与第一空闲空间不同的第二空闲空间中,而此过程中不需要进行相关技术中的数据搬运过程。因此通过本发明实施例在管理主存数据时可以充分利用第一存储空间内的空闲存储空间,从而在能够实现数据存储的情况下,减少数据搬运的次数,提高数据处理器的利用率。
250.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
251.通信接口用于上述电子设备与其他设备之间的通信。
252.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
253.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
254.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一主存数据管理方法的步骤。
255.具体的,上述计算机可读存储介质为本发明实施例中的主存,数据处理器在接收到待存储数据后可以将待存储数据暂存至数据处理器内部的高速缓存中,再将数据处理器内部的高速缓存内的数据转移并存储至计算机可读存储介质,即主存中;在需要读取数据时,数据处理器也可以从计算机可读存储介质,即主存中提取已存储的数据,并暂存至数据处理器内部的高速缓存中。
256.数据处理器内部的高速缓存的数据存取速度往往小于1ns,主存的数据存取速度往往为65ns左右,两者的存取速度相差较大,另外,数据处理器内部的高速缓存的存储空间大小往往为4k-64k,主存的存储空间大小往往为4g-32g,两者之间的存储空间大小也相差较大,两者之间直接进行数据交互较为困难,因此可以借助数据处理器外部的高速缓存实现数据处理器内部的高速缓存与主存之间的数据交互。
257.数据处理器外部的高速缓存的存储空间大小往往大于数据处理器内部的高速缓存的存储空间大小,但小于主存的存储空间大小。例如,上述高速缓存的存储空间大小往往为2m-16mb之间。
258.具体的,数据处理器可以在获取到待存储数据后可以将数据存储至数据处理器内部的存储单元,即数据处理器内部的高速缓存中,再将数据处理器内部的高速缓存中的数据转移并存储至数据处理器外部的高速缓存中,之后再控制数据处理器外部的高速缓存将所存储的数据转移并存储至计算机可读存储介质,即主存内。
259.在数据处理器从计算机可读存储介质,即主存中读取所存储的数据时,数据处理器可以先控制计算机可读存储介质将所读取的数据存储至数据处理器外部的高速缓存中,再控制数据处理器外部的高速缓存将所存储的数据存储至数据处理器内部的高速缓存中。
260.执行本发明实施例提供的应用于代理端的计算机可读存储介质中存储的计算机程序进行主存数据管理时,应用本发明实施例提供的方案对主存进行数据管理时,若写入位置之后的第一空闲空间能够存储待存储数据,则可以直接将待存储数据存储至第一空闲空间。反之,若第一空闲空间的不足以存储待存储数据,则可以判断读取位置之前的第二空闲空间是否足以存储待存储数据,若足以就可以将待存储数据存储至读取位置之前的第二空闲空间中。而相关技术中,待存储数据会被存储至已存储数据的尾部,也就是已存储数据后的第一空闲空间内。但通过本方案存储数据时,不仅能够将待存储数据写入位于已存储
至主存的数据后的第一空闲空间内,在第一空闲空间较小的情况下,也可以将待存储数据存储至读取位置前、与第一空闲空间不同的第二空闲空间中,而此过程中不需要进行相关技术中的数据搬运过程。因此通过本发明实施例在管理主存数据时可以充分利用第一存储空间内的空闲存储空间,从而在能够实现数据存储的情况下,减少数据搬运的次数,提高数据处理器的利用率。
261.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一主存数据管理方法的步骤。
262.执行本发明实施例提供的计算机程序进行主存数据管理的情况下,应用本发明实施例提供的方案对主存进行数据管理时,若写入位置之后的第一空闲空间能够存储待存储数据,则可以直接将待存储数据存储至第一空闲空间。反之,若第一空闲空间的不足以存储待存储数据,则可以判断读取位置之前的第二空闲空间是否足以存储待存储数据,若足以就可以将待存储数据存储至读取位置之前的第二空闲空间中。而相关技术中,待存储数据会被存储至已存储数据的尾部,也就是已存储数据后的第一空闲空间内。但通过本方案存储数据时,不仅能够将待存储数据写入位于已存储至主存的数据后的第一空闲空间内,在第一空闲空间较小的情况下,也可以将待存储数据存储至读取位置前、与第一空闲空间不同的第二空闲空间中,而此过程中不需要进行相关技术中的数据搬运过程。因此通过本发明实施例在管理主存数据时可以充分利用第一存储空间内的空闲存储空间,从而在能够实现数据存储的情况下,减少数据搬运的次数,提高数据处理器的利用率。
263.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
264.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
265.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、
电子设备、计算机可读存储介质和计算机程序产品而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
266.以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

技术特征:
1.一种主存数据管理方法,其特征在于,所述方法包括:接收待存储数据;判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储所述待存储数据,其中,所述第二存储空间位于所述主存内固定的第一存储空间中,所述第二存储空间的大小小于所述第一存储空间大小,所述写入位置为:最近一次写入数据的数据尾所在的位置;若足以,从所述写入位置开始,将所述待存储数据存储至所述第一空闲空间;若不足以,在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的第一起始位置开始,将所述待存储数据存储至所述第二空闲空间,其中,所述第二空闲空间为:所述第二存储空间内位于读取位置之前的空闲存储空间,所述读取位置为:已存储时长最长数据的数据头所在的位置。2.根据权利要求1所述的方法,其特征在于,在所述在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的起始位置开始,将所述待存储数据存储至所述第二空闲空间之前,还包括:将所述第二存储空间的第二起始位置更新为第一位置,其中,所述第一位置为:位于更新前第二起始位置前第二数据量的位置,所述第二数据量为:所述第一空闲空间能够容纳的数据量;将所述第二存储空间的终止位置更新为第二位置,其中,所述第二位置为:位于更新前终止位置前第二数据量的位置。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:在接收到数据处理服务发送的数据提取请求的情况下,读取并向所述数据处理服务发送目标数据,以使得所述数据处理服务对所述目标数据进行处理,其中,所述目标数据为:在所述第二存储空间内位于所述读取位置后的数据;接收所述数据处理服务反馈的处理情况信息;若所述处理情况信息表示处理数据成功,则将所述读取位置更新为第三位置,其中,所述第三位置为:读取前所述数据处理服务成功处理的数据的数据尾所在的位置;若所述处理情况信息表示处理数据失败,则在所述第二存储空间内存在位于读取位置前的数据的情况下,以所述第二存储空间的第二起始位置为尾,将所述目标数据搬运至所述第二起始位置前,将所述第二起始位置与所述读取位置均更新为搬运后所述目标数据数据头所在的位置。4.根据权利要求3所述的方法,其特征在于,在所述将所述第二起始位置与所述读取位置均更新为搬运后所述目标数据数据头所在的位置之后,还包括:将所述第二存储空间的终止位置更新为第四位置,其中,所述第四位置为:位于更新前所述终止位置前第一数据量的位置,所述第一数据量为:所述目标数据的数据量。5.根据权利要求3所述的方法,其特征在于,所述将所述目标数据搬运至所述第二起始位置前,包括:采用主存复制memcpy方式或主存移动memmove方式,将所述目标数据搬运至所述第二起始位置前;或
所述待存储数据为音频数据、图像数据或视频数据。6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:在所述读取位置位于写入位置前端的情况下,确定第三存储空间的大小是否小于第四存储空间的大小,其中,所述第三存储空间为:所述第二存储空间中位于所述读取位置前的存储空间,所述第四存储空间为:所述第一存储空间中位于所述写入位置后的存储空间;若是,则将所述第二存储空间的第二起始位置更新为所述读取位置,并按照更新前所述第二存储空间的大小,基于更新后所述第二存储空间的第二起始位置更新所述第二存储空间的终止位置。7.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:若所述第一空闲空间足以存储所述待存储数据,向发送所述待存储数据的数据接收服务反馈第一状态信息,其中,所述第一状态信息表示:所述待存储数据存储成功;和/或若所述第一空闲空间不足以存储所述待存储数据,向所述数据接收服务发送第二状态信息,其中,所述第二状态信息表示:所述待存储数据存储失败。8.一种主存数据管理装置,其特征在于,所述装置包括:数据接收模块,用于接收待存储数据;空间判断模块,用于判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储所述待存储数据,其中,所述第二存储空间位于所述主存内固定的第一存储空间中,所述第二存储空间的大小小于所述第一存储空间大小,所述写入位置为:最近一次写入数据的数据尾所在的位置;第一存储模块,用于在所述空间判断模块判定第一空闲空间足以存储所述待存储数据的情况下,从所述写入位置开始,将所述待存储数据存储至所述第一空闲空间;第二存储模块,用于在所述空间判断模块判定第一空闲空间不足以存储所述待存储数据的情况下,在第二空闲空间足以存储所述待存储数据的情况下,从所述第二空闲空间的第一起始位置开始,将所述待存储数据存储至所述第二空闲空间,其中,所述第二空闲空间为:所述第二存储空间内位于读取位置之前的空闲存储空间,所述读取位置为:已存储时长最长数据的数据头所在的位置。9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。

技术总结
本发明实施例提供了一种主存数据管理方法及装置,涉及数据处理技术领域,上述方法包括:接收待存储数据;判断主存中的第二存储空间内位于写入位置后的第一空闲空间是否足以存储待存储数据,第二存储空间位于主存内固定的第一存储空间中,第二存储空间的大小小于主存的存储空间大小,将存储数据存储至第一空闲空间;若不足以,在第二空闲空间足以存储待存储数据的情况下,从第二空闲空间的第一起始位置开始,将待存储数据存储至第二空闲空间,第二空闲空间为:第二存储空间内位于读取位置之前的空闲存储空间。应用本发明实施例提供的方案可以降低数据搬运的次数,提高数据处理器的利用率。利用率。利用率。


技术研发人员:高旭龙 张欣 陈杰
受保护的技术使用者:杭州海康威视数字技术股份有限公司
技术研发日:2022.07.19
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-5681.html

最新回复(0)