两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種內(nèi)存池版圖解析方法和內(nèi)存池裝置的制造方法

文檔序號(hào):9929437閱讀:535來(lái)源:國(guó)知局
一種內(nèi)存池版圖解析方法和內(nèi)存池裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及內(nèi)存應(yīng)用技術(shù)領(lǐng)域,更具體地說(shuō),涉及一種內(nèi)存池版圖解析方法和內(nèi)存池裝置。
【背景技術(shù)】
[0002]隨著晶體管的特征尺寸進(jìn)入到納米尺寸以后,電路的復(fù)雜度越來(lái)越高,規(guī)模也越來(lái)越大,GDSII格式版圖數(shù)據(jù)的容量規(guī)模呈指數(shù)形式上升趨勢(shì),一個(gè)容量為IG的版圖文件,可能包含的圖素量能夠達(dá)到上億的級(jí)別。面對(duì)大量的EDA數(shù)據(jù)信息,各種仿真軟件(光刻仿真軟件,化學(xué)機(jī)械仿真軟件)在進(jìn)行解析與操作大規(guī)?;蚴浅笠?guī)模版圖文件均遇到了不小的性能方面障礙,如果提高版圖的解析與操作效率,將會(huì)對(duì)整個(gè)仿真、驗(yàn)證的時(shí)間大大縮短。經(jīng)測(cè)試與驗(yàn)證,其中在版圖解析過(guò)程中很大的系統(tǒng)時(shí)間浪費(fèi)在大量的圖素對(duì)象的創(chuàng)建與初始化環(huán)節(jié),動(dòng)態(tài)的向系統(tǒng)申請(qǐng)空間,創(chuàng)建對(duì)象等操作耗費(fèi)了較多的系統(tǒng)時(shí)間,解決這一問(wèn)題能夠大大加速版圖解析時(shí)間。所以如何快速的,靈活的解析版圖文件就顯的尤為重。
[0003]版圖設(shè)計(jì)文件中存在大量的圖素信息,主要是多邊形,直線,文本等,其中絕大部分為多邊形。經(jīng)統(tǒng)計(jì),在一個(gè)容量為IG的版圖,其頂層cell含有的多邊形數(shù)量能達(dá)到上億之多,現(xiàn)有的技術(shù)方案中,當(dāng)應(yīng)用程序解析版圖時(shí),會(huì)將多邊形圖素信息轉(zhuǎn)化為程序的數(shù)據(jù)結(jié)構(gòu),并將向系統(tǒng)申請(qǐng)存儲(chǔ)該數(shù)據(jù)結(jié)構(gòu)的內(nèi)容空間。利用默認(rèn)的內(nèi)存管理函數(shù)new/delete或malloc/free在堆上分配和釋放內(nèi)存會(huì)有一些額外的開銷。
[0004]系統(tǒng)在接收分配一定大小內(nèi)存的請(qǐng)求時(shí),首先查找內(nèi)部維護(hù)的內(nèi)存空閑塊表,并且需要根據(jù)“最先匹配”、“最優(yōu)匹配”或其他算法在內(nèi)存空閑塊表中查找一塊空閑內(nèi)存塊。如果該空閑內(nèi)存塊過(guò)大,還需要切割再劃分。然后系統(tǒng)更新內(nèi)存空閑塊表,完成一次內(nèi)存分配。而在釋放內(nèi)存時(shí),系統(tǒng)會(huì)把需要釋放的內(nèi)存塊重新加入到空閑內(nèi)存塊表中。可能的話,會(huì)把相鄰的空閑塊合并成較大的空閑塊。
[0005]默認(rèn)的內(nèi)存管理函數(shù)還考慮到多線程的應(yīng)用,需要在每次分配和釋放內(nèi)存時(shí)加鎖,同樣增加了開銷、降低了工作效率。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的目的在于提供一種工作效率高的內(nèi)存池版圖解析方法和內(nèi)存池裝置。
[0007]為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了如下技術(shù)方案:
[0008]—種內(nèi)存池版圖解析方法,應(yīng)用于具有多個(gè)大小結(jié)構(gòu)相等的內(nèi)存塊的內(nèi)存池裝置中,包括:
[0009]獲取應(yīng)用程序向系統(tǒng)發(fā)送的操作指令;
[0010]判斷所述操作指令的指令類型;
[0011]當(dāng)所述操作指令為內(nèi)存分配需求指令時(shí),判斷當(dāng)前使用的內(nèi)存塊中是否存在空閑的內(nèi)存單元,如果否,向系統(tǒng)發(fā)送添加內(nèi)存塊指令;
[0012]采用指針將所述系統(tǒng)依據(jù)添加內(nèi)存塊指令添加的內(nèi)存塊與內(nèi)存池中原有的內(nèi)存塊進(jìn)行鏈接;
[0013]其中,所述系統(tǒng)依據(jù)添加內(nèi)存塊指令添加的內(nèi)存塊與內(nèi)存池中原有的內(nèi)存塊的大小、結(jié)構(gòu)相同。
[0014]優(yōu)選的,上述內(nèi)存池版圖解析方法中,所述判斷當(dāng)前使用的內(nèi)存塊中是否存在空閑的內(nèi)存單元,包括:
[0015]內(nèi)存池通過(guò)blockList指針遍歷內(nèi)存塊鏈表,判斷,判斷是否存在bFree的值是否大于O的內(nèi)存塊,如果否,則確定當(dāng)前使用的內(nèi)存塊中不存在空閑的內(nèi)存單元,所述bFree的值用于表征內(nèi)存塊中存在的空閑的內(nèi)存單元的數(shù)量。
[0016]優(yōu)選的,上述內(nèi)存池版圖解析方法中,所述向系統(tǒng)發(fā)送添加內(nèi)存塊指令之后,采用指針將所述系統(tǒng)依據(jù)添加內(nèi)存塊指令添加的內(nèi)存塊與內(nèi)存池中原有的內(nèi)存塊進(jìn)行鏈接之前,還包括:
[0017]當(dāng)檢測(cè)到系統(tǒng)依據(jù)添加內(nèi)存塊指令添加的內(nèi)存塊后,對(duì)所述添加的內(nèi)存塊初始化;
[0018]優(yōu)選的,上述內(nèi)存池版圖解析方法中,所述初始化包括:
[0019]設(shè)置所述添加的內(nèi)存塊的bSize為所有內(nèi)存單元的大小、bFree的值設(shè)置為n-1、bFirst的值設(shè)置為I,所述η為所述內(nèi)存塊中的內(nèi)存單元的數(shù)量,將所述添加的內(nèi)存塊的所有空閑的內(nèi)存單元進(jìn)行鏈接,且每個(gè)空閑的內(nèi)存單元的頭兩個(gè)字節(jié)用來(lái)存儲(chǔ)下一空閑的內(nèi)存單元的編號(hào),所述bFree的值用于表征內(nèi)存塊中存在的空閑的內(nèi)存單元的數(shù)量,所述bFirst的值用于表征內(nèi)存塊中已使用的內(nèi)存單元的數(shù)量。
[0020]優(yōu)選的,上述內(nèi)存池版圖解析方法中,還包括:
[0021]當(dāng)所述操作指令為已使用的內(nèi)存單元的刪除指令時(shí);
[0022]將與所述刪除指令相匹配的內(nèi)存單元返回至內(nèi)存池;
[0023]查找和所述刪除指令相匹配的內(nèi)存單元所屬的內(nèi)存塊;
[0024]將與所述刪除指令相匹配的內(nèi)存單元加到與其匹配的內(nèi)存塊的空閑內(nèi)存單元鏈表的頭部;
[0025]與所述刪除指令相匹配的內(nèi)存單元所述的內(nèi)存塊的bFree的值加I;
[0026]所述bFree的值用于表征內(nèi)存塊中存在的空閑的內(nèi)存單元的數(shù)量。
[0027]優(yōu)選的,上述內(nèi)存池版圖解析方法中,與所述刪除指令相匹配的內(nèi)存單元內(nèi)存塊的bFree的值加I后,還包括:
[0028]判斷所述加I后的bFree的值是否為η,如果是,將bFree值為η的內(nèi)存塊返還釋放給進(jìn)程堆。
[0029]—種內(nèi)存池裝置,包括:
[0030 ]對(duì)象內(nèi)存池和多個(gè)大小、結(jié)構(gòu)相同的內(nèi)存塊;
[0031 ]所述對(duì)象內(nèi)存池,用于獲取并判斷應(yīng)用程序向系統(tǒng)發(fā)送的操作指令的指令類型,當(dāng)所述操作指令為內(nèi)存分配需求指令時(shí),判斷當(dāng)前使用的內(nèi)存塊中是否存在空閑的內(nèi)存單元,如果否,向系統(tǒng)發(fā)送添加內(nèi)存塊指令,采用指針將所述系統(tǒng)依據(jù)添加內(nèi)存塊指令添加的內(nèi)存塊與內(nèi)存池中已經(jīng)使用的內(nèi)存塊進(jìn)行鏈接。
[0032]優(yōu)選的,上述內(nèi)存池裝置中,所述內(nèi)存塊包括:
[0033]用于維護(hù)內(nèi)存塊信息的塊頭結(jié)構(gòu)和多個(gè)內(nèi)存單元,所述塊頭結(jié)構(gòu)用于維護(hù)內(nèi)存塊內(nèi)所有空閑的內(nèi)存單元組成的鏈表,所述每個(gè)空閑的內(nèi)存單元的頭兩個(gè)字節(jié)中存儲(chǔ)有下一個(gè)空閑的內(nèi)存單元的單元編號(hào)。
[0034]優(yōu)選的,上述內(nèi)存池裝置中,所述對(duì)象內(nèi)存池判斷當(dāng)前使用的內(nèi)存塊中是否存在空閑的內(nèi)存單元的工作過(guò)程具體包括:
[0035]通過(guò)采用blockList指針遍歷內(nèi)存塊鏈表,判斷,判斷是否存在bFree的值是否大于O的內(nèi)存塊,如果否,則確定當(dāng)前使用的內(nèi)存塊中不存在空閑的內(nèi)存單元。
[0036]優(yōu)選的,上述內(nèi)存池裝置中,所述對(duì)象內(nèi)存池的工作過(guò)程還包括:當(dāng)檢測(cè)到系統(tǒng)依據(jù)添加內(nèi)存塊指令添加的內(nèi)存塊后,對(duì)所述添加的內(nèi)存塊初始化。
[0037]通過(guò)以上方案可知,在本申請(qǐng)上述方法中,其無(wú)論存儲(chǔ)何種大小的圖素信息時(shí),其采用的內(nèi)存塊的大小以及所述內(nèi)存塊中內(nèi)存單元的大小均是一定的,只是當(dāng)圖素信息較大時(shí),其所占用的內(nèi)存單元或內(nèi)存塊的數(shù)量較多,因此能夠達(dá)到快速分配內(nèi)存塊的目的。
【附圖說(shuō)明】
[0038]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖1為⑶SII文件結(jié)構(gòu)示意圖;
[0040]圖2為本申請(qǐng)實(shí)施例公開的一種內(nèi)存池版圖解析方法的流程圖;
[0041]圖3為本申請(qǐng)實(shí)施例公開的內(nèi)存池裝置的結(jié)構(gòu)示意圖;
[0042]圖4為內(nèi)存池的數(shù)據(jù)結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0043]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0044]申請(qǐng)人經(jīng)研究發(fā)現(xiàn),現(xiàn)有技術(shù)中應(yīng)用程序頻繁地在堆上分配和釋放內(nèi)存,則會(huì)導(dǎo)致性能的損失。并且會(huì)使系統(tǒng)中出現(xiàn)大量的內(nèi)存碎片,降低內(nèi)存的利用率。對(duì)此,本申請(qǐng)?zhí)岢隽艘环N應(yīng)用內(nèi)存池加速版圖解析的方法,致力于結(jié)合版圖文件中圖素的典型特征,建立適合自身特定的內(nèi)存分配模式的自定義內(nèi)存池,來(lái)實(shí)現(xiàn)一個(gè)具體的應(yīng)用程序,該方法同時(shí)能夠大大提尚版圖解析時(shí)間
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
青神县| 宜兴市| 綦江县| 华安县| 融水| 永靖县| 阜宁县| 泾源县| 太和县| 丰原市| 育儿| 三台县| 儋州市| 涞源县| 尼玛县| 南康市| 秭归县| 奉化市| 玛沁县| 文昌市| 潞城市| 阿坝县| 乌兰察布市| 高淳县| 丰县| 南平市| 阆中市| 林口县| 子长县| 新昌县| 右玉县| 黄龙县| 余庆县| 梧州市| 木兰县| 昭觉县| 张家港市| 吴忠市| 定兴县| 安仁县| 阜康市|