一种适用于大规模集成电路后端设计的内存管理方法技术

技术编号:32110716 阅读:21 留言:0更新日期:2022-01-29 18:53
一种适用于大规模集成电路后端设计的内存管理方法,包括以下步骤:接收用户的内存申请,并确认为存盘申请数据内存;根据数据类型,在内存空间中创建Block块;创建数组和对象;创建Chunk块;进行集成电路设计的数据建模;将设计数据以二进制形式持久化存储到磁盘、载入到内存;当所述内存申请为临时申请数据内存,将临时数据在堆空间进行分配。本发明专利技术的适用于大规模集成电路后端设计的内存管理方法,在满足继承电路设计的数据建模的基础上,通过虚拟内存技术,突破物理内存的容量限制;又通过内存二进制存储技术,以及脏页标记技术,达到增量快照保存,按需保存与加载,实现内存的高效灵活加载与存储。活加载与存储。活加载与存储。

【技术实现步骤摘要】
一种适用于大规模集成电路后端设计的内存管理方法


[0001]本专利技术涉及电子设计自动化(Electronic Design Automation,EDA)工具
,具体来说,涉及一种适用于大规模集成电路后端设计的内存管理方法。

技术介绍

[0002]在集成电路芯片特征尺寸不断变小的今天,集成电路后端自动化设计面临巨大的挑战,主要表现为:随着特征尺寸逐渐变小,目前先进工艺已达到3nm,接近硅材料物理极限,单位面积的电路规模需求依旧按照摩尔定律增加;随着芯片设计的系统复杂性增强,设计的芯片面积当前也对应增加,进一步加大了集成电路规模;先进工艺对EDA工具要求更加精细,需增加对应的数据结构,进一步增加EDA工具的数据规模。
[0003]内存管理方法属于EDA工具数据库中核心的管理模块之一,其直接影响EDA工具运行的高效性、准确性与稳定性,属于EDA工具底层核心模块之一。当前先进集成电路设计均达到百亿晶体管量级,数据模型的复杂性增加,对内存管理的要求提出很大的挑战。目前传统的内存管理通过序列化与反序列实现输入与输出,这种方式在巨大的数据量面前,效率并不高,使得在集成电路设计过程大量时间消耗在设计文件的读入与写出上。同时若都加载到物理内存中,以当前计算机实际物理内存空间大小,很难去承载集成电路设计全量数据。如何设计一个满足当前海量数据集成电路设计空间要求以及高效读写效率,稳定内存管理系统,在EDA工具软件设计与实现中,被认为是极具挑战的问题之一。
[0004]在过去的几十年中,传统的计算机内存管理技术,例如内存池(memory pool)技术或传统的TCmalloc技术,已被广泛应用于EDA工具中,成为在领域中传统的内存管理方法。目前国外EDA软件厂家均在传统技术的基础上,实现软件的内存申请释放,对于内存中的数据,以序列化与反序列化的方式与磁盘进行交互,最终通过磁盘文件数据来进行设计的传输。同时随着当前云服务(cloud)的兴起,EDA工具也慢慢开始上云的进程,内存管理的架构也面临着适应分布式,云端化的挑战。
[0005]在目前传统的内存管理方法中,由于数据的序列化和反序列需要遍历整个集成电路物理实现数据库,是一种相对低效的持久化方式,对于使用方来说加载耗时过长。同时按照内存池技术对内存进行的回收与管理,对当前分布式的需求并不友好。另外当一个集成电路设计数据达到Tib量级时,当前计算机物理内存容量难以支持全量加载。
[0006]考虑到当前传统的计算机内存管理技术并不能完美适配超大规模集成电路全量数据要求,且对于海量数据序列化反序列化耗时较长,且对于分布式数据库并不友好。针对当前的超大规模集成电路设计要求,EDA软件工具需要设计一种新型内存管理方法以适配。当前脱离传统技术适用于EDA工具领域的高效的内存管理方法在当前仍处于探索阶段。

技术实现思路

[0007]为了解决现有技术存在的不足,本专利技术的目的在于提供一种适用于大规模集成电路后端设计的内存管理方法,基于虚拟内存技术与内存二进制存储技术,突破内存数据加
载的容量限制,实现数据的高速加载与存储,同时通过脏页标记技术设计的增量快照保存。
[0008]为实现上述目的,本专利技术提供的适用于大规模集成电路后端设计的内存管理方法,包括以下步骤:接收用户的内存申请,并确认为存盘申请数据内存;在内存空间中创建Block块;创建数组和对象;创建Chunk块;进行集成电路设计的数据建模;将设计数据以二进制形式持久化存储到磁盘、载入到内存;当所述内存申请为临时申请数据内存,将临时数据在堆空间进行分配。
[0009]进一步地,所述存盘申请数据内存,为数据库向内存申请的数据。
[0010]进一步地,所述在内存空间中创建Block块的步骤,还包括,对每种type的数据类型均会创建对应type的block块,每个design块,包含多个block;每个block对象维护其type_,以及一个vector<Chunk*>关联所有的数据。
[0011]进一步地,所述创建Chunk块的步骤,还包括,每一个chunk块对应内存空间的一段地址,大小为1M或128M;将Chunk块在内存地址中按size对齐;在chunk块中,包括用于记录chunk块信息的header。
[0012]进一步地,所述chunk块信息的header,包括,真实数据的start_addr_、chunk块在block块中的对应的chunk_id_、block_关联其从属的block块,以及为持久化增量保存支持所标记脏页的bitmap。
[0013]进一步地,所述进行集成电路设计的数据建模的步骤,还包括,以objectid实现索引,进行集成电路设计的数据建模;对象指针object*与objectid的相互转换方法如下:objectid与object*的转换:数据模型中存储的其它object均为ID表示,ID统一为32位,表示该object在其对应type block中的位移;在计算objectid时,获取object所在chunk块的位置,在加上其偏移,增加一个design指针的入参;object* 到objectid的转换:根据地址判断其所在chunk块的类型;通过掩码得到其所在chunk块;通过chunk块,得到前面所有满chunk块的id加上其在chunk块中offset得到objectid。
[0014]进一步地,所述将设计数据以二进制形式持久化存储、载入到内存的步骤,还包括,auto save调用持久化策略:对于update_record左边的bitmap位,搜集page id,调用update;对于update_record右边的bitmap位,调用append;存储完成后,update_record移动到末尾,bitmap重置。
[0015]进一步地,所述将设计数据以二进制形式持久化存储、载入到内存的步骤,还包括,以全量设计或单个设计对象为单位存储与载入;存储设计数据时,向持久化模块传入Design *:根据地址获取该设计的全局ID,存入元设计;将设计以二进制的形式与BlocksMetaprotobuf序列化形式一起存储至元数据文件;载入设计数据时,先从元设计中获取全局ID,找到ID对应的地址,将磁盘上的设计加载至对应地址。
[0016]为实现上述目的,本专利技术还提供一种电子设备,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行如上文所述的适用于大规模集成电路后端设计的内存管理方法的步骤。
[0017]为实现上述目的,本专利技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行如上文所述的适用于大规模集成电路后端设计的内存管理方法的步骤。
[0018]本专利技术的适用于大规模集成电路后端设计的内存管理方法,与现有技术相比较,具有以下有益效果:在满足继承电路设计的数据建模的基础上,通过虚拟内存技术,突破物理内存的容量限制;又本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种适用于大规模集成电路后端设计的内存管理方法,包括以下步骤:接收用户的内存申请,并确认为存盘申请数据内存;根据数据类型,在内存空间中创建Block块;创建数组和对象;创建Chunk块;进行集成电路设计的数据建模;将设计数据以二进制形式持久化存储到磁盘、载入到内存;当所述内存申请为临时申请数据内存,将临时数据在堆空间进行分配。2.根据权利要求1所述的适用于大规模集成电路后端设计的内存管理方法,其特征在于,所述存盘申请数据内存,为数据库向内存申请的数据。3.根据权利要求1所述的适用于大规模集成电路后端设计的内存管理方法,其特征在于,所述根据数据类型,在内存空间中创建Block块的步骤,还包括,对每种type的数据类型均会创建对应type的block块,每个design块,包含多个block,对于一个type,有且仅有一个block;每个block对象维护其type_,以及一个vector<Chunk*>关联所有的数据。4.根据权利要求1所述的适用于大规模集成电路后端设计的内存管理方法,其特征在于,所述创建Chunk块的步骤,还包括,每一个chunk块对应内存空间的一段地址,大小为1M或128M;将Chunk块在内存地址中按size对齐;在chunk块中,包括用于记录chunk块信息的header。5.根据权利要求4所述的适用于大规模集成电路后端设计的内存管理方法,其特征在于,所述chunk块信息的header,包括,真实数据的start_addr_、chunk块在block块中的对应的chunk_id_、block_关联其从属的block块,以及为持久化增量保存支持所标记脏页的bitmap。6.根据权利要求1所述的适用于大规模集成电路后端设计的内存管理方法,其特征在于,所述进行集成电路设计的数据建模的步骤,还包括,以objectid实现索引,进行集成电路设计的数据建模;对象指针object*与objectid的相互转换方法如下:objectid与object*的转换:数据模型中存储的其它objec...

【专利技术属性】
技术研发人员:陆昆陈刚谭小慧
申请(专利权)人:南京集成电路设计服务产业创新中心有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1