一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种集成电路后端设计的内存管理方法与流程

2022-11-28 11:42:14 来源:中国专利 TAG:


1.本发明涉及集成电路,尤其涉及一种集成电路后端设计的内存管理方法。


背景技术:

2.在现实生活中,有些情况会产生大量的数据而且需要存储设备对这些大量的数据进行及时的存储。视频监控行业就具有这样的一种特点,在一些中小型的视频监控项目中,摄像头有几百上千路,而大型或者超大型的则有上万路的摄像头,特别是现在摄像头已经变成高清化,这也就是说对于视频监控在短时间内会产生大量的数据,而且这些数据如果不能在一个短时间内进行存储的话将会丢失。
3.现在很多的视频厂商使用一些通用的存储设备,对视频数据进行存储,经常看到监控厂商抱怨视频出现了丢帧现象。视频丢帧也就是出现了视频数据丢失,而对存储进行检查的时候,网络带宽完全能满足需要,磁盘io,等并没有出现瓶颈。这常常是技术人员很头痛。
4.因为数据量大,路数多,而且还常常实现数据流的爆发等问题。视频数据存储的过程中,内核常常先把数据存入缓存中,然后再调用刷写线程把数据刷入磁盘等存储设备,而内存是很多的进程共用的,内核需要对数据流进行内存分配,申请相关的内存页耗费大量时间,而有可能在内存申请时候数据流过来时没有足够的内存进行存放,这就造成了视频丢帧。
5.在视频监控(数据备份)应用中,有一个非常显著的特点就是写入量远远大于读的概率,且数据写入相对平稳,但是每一时刻写入的数据量都非常大,而且写入后基本不需要马上进行读取,也即写入内存后,即可以写入磁盘不要担心这会影响读取的效率。针对这些应用特点,提出一种基于内存替换,以使整个写入的过程变得平滑,改善写入性能的方法。


技术实现要素:

6.为了克服现有技术的不足,本发明的目的之一在于提供一种集成电路后端设计的内存管理方法。
7.本发明的目的之一采用如下技术方案实现:
8.一种集成电路后端设计的内存管理方法,设置内存构架,将内存中用于数据读写的部分进行独立设计,将两块容量完全相同的集成电路集成在一起,每块电路均包括读数据的部分和写数据的部分,设定内存大小为堆栈区域总的大小,每一块的容量都相当于内存中堆区的容量,把栈区容量划到实际栈区所需容量的百分之一百二十,这时剩下的容量就全部用于堆区,该堆区读容量和写容量共同组成堆区全部容量。
9.进行内存切换,即首先将系统设定为内存切换模式。
10.然后系统在刚启动时以通用模式启动,待运行一段时间,系统相关应用完全加载完成,由可以对栈区、读内存区、写内存区的容量进行动态调整的内存管理单元根据系统设定的切换模式,对栈所使用的容量进行检测,然后根据实际的容量加上一定的冗余设定栈
区,然后对于读所使用的内存进行检测,并加上一定的冗余设定读内存,剩下的内存完全映射给写内存,完成内存切换过程。
11.所述内存切换是指写内存的切换,其包括两种状态,0状态和1状态,0状态表示外面数据往内存里写的状态,1状态表示从内存往磁盘的存储设备上刷写的状态。
12.所述内存管理单元对各区的容量使用情况进行跟踪,当某一区的冗余容量小于预设值,则内存管理单元对内存进行调整,当冗余的容量大于预设的值同样对内存进行调整。
13.每块内存中都设置了“满状态”硬件位:当写内存处于0状态,也就是处于外面数据写入内存的状态时,当数据填满了80%的写内存,则“数据满”硬件位将被置1;而另一块处于1状态的内存数据完全刷写完成时,则“满状态”位被置0。
14.内存管理单元还可以根据两块内存的“满状态”位及数据流情况所处的情况进行状态切换,状态切换使用边沿触发器进行触发切换。相比现有技术,本发明的有益效果在于:在文件写入时通过替换内存以使整个写入的过程变得平滑,改善写入性能,数据写入平稳,视频保存完整且不易丢失,调取过程方便易实现,实用性强,易于推广。
15.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
16.附图1为本发明中内存替换情形下读写使用内存示意图。
具体实施方式
17.下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
18.一种集成电路后端设计的内存管理方法,设置内存构架,将内存中用于数据读写的部分进行独立设计,如附图1所示区域中有两块容量相同超大规模集成电路集成在一起。每一块的容量都相当于内存中堆区的容量。堆区容量对于传统的内存管理方法,堆区容量没有固定值,是大小可变的一个区域。为了方便,可以是设定内存大小为堆栈区域总的大小。
19.由于对于视频监控存储或者数据备份等应用业务量比较单一,栈区所需要的容量也比较固定,假定为n,为了有一定冗余,可以把容量划到实际栈区所需容量的百分之一百二十,则这时剩下的容量就全部用于堆区。
20.因为堆区中用于读所需要的容量非常少,可以划很少的一部分用于读,假定为r。
21.然后最后剩下的内存全部用于写内存,假设总的容量为w。
22.完成内存切换的步骤。
23.内存切换是指写内存的切换,写内存有两种状态,0状态和1状态,0状态表示外面数据往内存里写的状态,即写内存状态;1状态表示从内存往磁盘的存储设备上刷写的状态,即写磁盘状态。
24.对于实际使用当中是否需要进行内存替换,可以使用相关的命令对内存进行控
制,如果不需要进行内存替换模式,则只使用内存1,这种情形下,与通常的使用相同,没有区别。
25.内存管理单元可以对栈区,读内存区,写内存区的容量进行动态调整。调整可以按如下方式进行调整。
26.(1)系统设定为内存切换模式。
27.(2)系统在刚启动时都是以通用模式启动,等运行了一段时间,也即系统相关应用完全加载完成,这时可以内存管理器根据系统设定的切换模式,对栈所使用的容量进行检测,然后根据实际的容量加上一定的冗余(如20%)设定栈区,然后对于读所使用的内存进行检测,并加上一定的冗余设定读内存,剩下的内存完全映射给写内存。
28.(3)内存管理单元需要对各区的容量使用情况进行跟踪,但某一区的冗余容量小于预设值,则内存管理单元需要对内存进行调整,当冗余的容量大于预设的值则也需要对内存进行调整。
29.每块内存中都设置了“满状态”硬件位,当写内存处于写的状态时,即0状态时,也就是处于外面数据写入内存的状态时,当数据填满了80%的写内存,则“数据满”硬件位将被置1。而另一块处于刷写状态,即1状态时的内存数据完全刷写完成了,则“满状态”位被置0。
30.内存管理单元还需要能根据两块内存的“满状态”位及数据流情况所处的情况进行状态切换。状态切换使用边沿触发器进行触发切换。为了更好的阐述想法,硬件位使用如下字母进行约定:
31.内存1满状态位m1;
32.内存2满状态位m2;
33.内存1写状态x1;
34.内存2写状态x2;
35.数据流边沿b;
36.需要说明的是第四种情况必须避免。第一种情况表明内存1开始处于写磁盘的状态,而内存2开始处于写内存状态。内存1在刷写完成以后,满状态变成0,如果此时内存2数据已经写到了80%,则数据流如果处于上升沿,则内存将被替换。
37.数据刷写的时候,可以也如通常的刷写一样会对相关的写操作进行合并,以提高磁盘写入的速度。
38.在内存变成刷写磁盘,即1状态后,将对整个写内存进行清空,因此刷写线程不需要考虑是否还需要等待某些写操作以进行写合并。
39.文件系统元数据被读入读内存,数据刷写时,可以根据读内存中的相关各种数据结构的映射关系(如address_space)确定写入的具体位置。
40.通过内存替换后,内存变成了空,每进行一次内存替换,就像得到一块新的内存,因此在外部数据写内存时,在进行内存分配的时候,就不需要进行内存遍历,查询可用内存,或者说可以使内存遍历相对容易。
41.对于内存写满,而刷写没有完成的情况需要避免,因此磁盘系统写入的速度不能低于数据往内存写入的速度,在磁盘选择的时候,一定要对写内存的速度和磁盘写入速度进行计算,否则系统不管如何改进也是无济于事的。
42.上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献