欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

靜態(tài)存儲的分配方法和裝置的制作方法

文檔序號:6530515閱讀:416來源:國知局
專利名稱:靜態(tài)存儲的分配方法和裝置的制作方法
技術領域
本發(fā)明涉及數(shù)據存儲技術領域,特別是指一種靜態(tài)存儲的分配方法和裝置。
背景技術
靜態(tài)存儲分配是指在程序編譯時完成的存儲地址的分配,靜態(tài)存儲分配與在程序 運行時完成的動態(tài)存儲分配不同。靜態(tài)分配沒有運行時的開銷,對程序的性能沒有影響,不 存在動態(tài)分配時可能出現(xiàn)的分配失敗等問題。靜態(tài)存儲分配的靈活性差比較差,主要體現(xiàn)在一個變量往往在程序的整個生存 期都一直占據所分配的存儲空間,降低了存儲空間使用上的靈活性。現(xiàn)有技術中,在htel 8051的一些C語言編譯器里,實現(xiàn)了一定程度的存儲復用。 例如下面的兩個函數(shù)fl、f2,如果它們不可能同時處于活動狀態(tài)(被調用狀態(tài)),那么可以 將Π、f2里靜態(tài)分配的變量vl、v2復用同一 100字節(jié)的存儲空間。若不進行復用,則需要 200個字節(jié)的存儲空間。void fl(){static char vl[100];}void f2 (){static char v2[100];}上述復用技術僅限于函數(shù)內部定義的靜態(tài)變量,而不能處理函數(shù)的全局變量。

發(fā)明內容
本發(fā)明要解決的技術問題是提供一種靜態(tài)存儲的分配方法和裝置,能夠減少對存 儲空間的需求。為解決上述技術問題,本發(fā)明的實施例提供技術方案如下一方面,提供一種靜態(tài)存儲的分配方法,包括步驟1,獲取待優(yōu)化的模塊,所述模塊包括至少兩個相互耦合的函數(shù);步驟2,根據所述函數(shù)之間的耦合關系,生成一模塊模型;所述模塊模型包括函 數(shù)名稱和變量,所述變量包括輸入變量和輸出變量;步驟3,根據所述模塊模型,獲取所述模塊的所有的函數(shù)調度順序;步驟4,獲取所述模塊在每個所述函數(shù)調度順序下對應的所有變量所需存儲空間 的下確界;步驟5,對每一種函數(shù)調度順序,通過遺傳算法優(yōu)化所有變量的地址分配信息,使 所有變量占用的存儲空間的大小趨近或到達所述下確界的最小值;
步驟6,選擇優(yōu)化后所有變量占用的存儲空間最小的函數(shù)調度順序;步驟7,根據選擇的所述函數(shù)調度順序和所述函數(shù)調度順序對應的地址分配信息, 對所述模塊進行編譯,所述地址分配信息包括各變量的起始地址。所述步驟4之后,所述方法還包括將每個所述函數(shù)調度順序按照其對應的所述下確界的大小從小到大排序,選擇前 第一預定數(shù)量個所述函數(shù)調度順序;所述步驟5具體為對選擇出的每一種函數(shù)調度順序,通過遺傳算法優(yōu)化所有變 量的地址分配,使所有變量占用的存儲空間的大小趨近或到達所述下確界的最小值。所述步驟5包括步驟A,設置當前種群Population為初始種群FirstGen,設置當前種群的上一代 種群中的各個體所需存儲空間的最小值LastSize的當前值為無窮大,設置演化時存儲空 間大小未變化的次數(shù)SizeCoimter的當前值為0,設置總演化次數(shù)TotalCoimter的當前值 為0;步驟B,設置當前變異概率值Pmut和當前種群規(guī)模值&。pu ;步驟C,對當前種群Population里的每一個體Candi,使其以所述概率值Pmut進行 變異處理,以概率(I-Pmut)進行交叉處理,產生各新個體NewCandi ;步驟D,從新一代種群NewGen中選出滿足以下公式的個體,并用選擇出的個體組 成選擇出的種群klectedNewGen ;所述公式為對于每一個G e VarGroupi里的任意兩個不同的變量V1. vk,[Addr1, Addr1+^ (V1)-I] Π [Addrk, Addrk+fs (vk)-l] = Φ ;其中,[Addrx,Addrx+fs(vx)-l]表示變量vx所用存儲空間的起止位置所對應的區(qū) 間;步驟E,對選擇出的種群klectedNewGen的各個體,去除未使用的存儲空間;步驟F,將當前種群Population和選擇出的種群^lectedNewGen合并,得到集合 NewAllPopu,將集合NewAllPopu里的各個體按所需存儲空間的大小從小到大排序,從中選 出前第二預定數(shù)量個個體以構成下一代種群NewPopulation,獲取當前種群的各個體所需 存儲空間的最小值NewSize ;所述第二預定數(shù)量小于或等于當前種群規(guī)模值&。pu ;步驟G,將TotalCoimter加1,并使用所述下一代種群更新當前種群;當NewSize 小于LastSize時,將SizeCounter的當前值設置為0,并使用NewSize的值更新LastSize ; 當NewSize大于或等于LastSize時,將SizeCounter的當前值加1 ;步驟H,判斷NewSize是否等于所述下確界中的最小值,如果判斷結果為是,則結 束演化過程;如果判斷結果為否,則轉向步驟工;步驟I,判斷是否滿足(SizeCounter<MAX_N0_IMPR0VEMENT)且(TotalCounter < MAX_T0TAL),如果判斷結果為否,則轉向所述步驟B,否則,結束演化過程,其中,第三預 定值MAX_N0_IMPR0VEMENT、第四預定值MAX_T0TAL為預先設置的值。所述進行變異處理的步驟包括從個體Candi中以等概率選出一組元素<v1; Addr1),產生一個隨機分布于區(qū)間 [l. 的整數(shù)Offset,其中Π表示向上取整運算,Size為個體Candi所需存儲空間的 大小,即 Size = Hiax1 = (Addr^fs (V1)),其中,元素 <v1 Addr1)表示變量 <v1; Addr)和所述變量的起始地址<v1; Addr1);先以預定概率將Offset的當前值生成相反數(shù),并使用所述相反數(shù)更新Offset,然 后使用 <v1 (AddrfOffset) mod (Size-fs (V1)) > 代替 <v1; Addr),得到新個體 NewCandi,其 中,mod表示取余運算;其中,Size = mi 1 = 1..,(Addri+fs(V1))表示如果變量名是為別名變量集定義的替 代名,則返回該別名變量集中各變量所占存儲空間大小的最大值;否則返回變量名所占存 儲空間的大??;所述Offset生成方法為令變量
權利要求
1.一種靜態(tài)存儲的分配方法,其特征在于,包括步驟1,獲取待優(yōu)化的模塊,所述模塊包括至少兩個相互耦合的函數(shù); 步驟2,根據所述函數(shù)之間的耦合關系,生成一模塊模型;所述模塊模型包括函數(shù)名 稱和變量,所述變量包括輸入變量和輸出變量;步驟3,根據所述模塊模型,獲取所述模塊的所有的函數(shù)調度順序; 步驟4,獲取所述模塊在每個所述函數(shù)調度順序下對應的所有變量所需存儲空間的下 確界;步驟5,對每一種函數(shù)調度順序,通過遺傳算法優(yōu)化所有變量的地址分配信息,使所有 變量占用的存儲空間的大小趨近或到達所述下確界的最小值;步驟6,選擇優(yōu)化后所有變量占用的存儲空間最小的函數(shù)調度順序; 步驟7,根據選擇的所述函數(shù)調度順序和所述函數(shù)調度順序對應的地址分配信息,對所 述模塊進行編譯,所述地址分配信息包括各變量的起始地址。
2.根據權利要求1所述的靜態(tài)存儲的分配方法,其特征在于,所述步驟4之后,所述方 法還包括將每個所述函數(shù)調度順序按照其對應的所述下確界的大小從小到大排序,選擇前第一 預定數(shù)量個所述函數(shù)調度順序;所述步驟5具體為對選擇出的每一種函數(shù)調度順序,通過遺傳算法優(yōu)化所有變量的 地址分配,使所有變量占用的存儲空間的大小趨近或到達所述下確界的最小值。
3.根據權利要求1所述的靜態(tài)存儲的分配方法,其特征在于,所述步驟5包括步驟A,設置當前種群Population為初始種群FirstGen,設置當前種群的上一代種群 中的各個體所需存儲空間的最小值LastSize的當前值為無窮大,設置演化時存儲空間大 小未變化的次數(shù)SizeCoimter的當前值為0,設置總演化次數(shù)TotalCoimter的當前值為0 ; 步驟B,設置當前變異概率值Pmut和當前種群規(guī)模值&。pu ;步驟C,對當前種群Population里的每一個體Candi,使其以所述概率值Pmut進行變異 處理,以概率(I-Pmut)進行交叉處理,產生各新個體NewCandi ;步驟D,從新一代種群NewGen中選出滿足以下公式的個體,并用選擇出的個體組成選 擇出的種群klectedNewGen ;所述公式為對于每一個G e VarGroupi里的任意兩個不同的變量V1. vk, [AddrljAddr1+^(V1)-I] Π [Addrk, Addrk+fs (vk)-l] = Φ ;其中,[Addrx, Addrx+fs(νχ)-1]表示變量vx所用存儲空間的起止位置所對應的區(qū)間; 步驟E,對選擇出的種群klectedNewGen的各個體,去除未使用的存儲空間; 步驟F,將當前種群Population和選擇出的種群klectedNewGen合并,得到集合 NewAllPopu,將集合NewAllPopu里的各個體按所需存儲空間的大小從小到大排序,從中選 出前第二預定數(shù)量個個體以構成下一代種群NewPopulation,獲取當前種群的各個體所需 存儲空間的最小值NewSize ;所述第二預定數(shù)量小于或等于當前種群規(guī)模值&。pu ;步驟G,將TotalCoimter加1,并使用所述下一代種群更新當前種群;當NewSize小于 LastSize時,將SizeCounter的當前值設置為0,并使用NewSize的值更新LastSize ;當 NewSize大于或等于LastSize時,將SizeCounter的當前值加1 ;步驟H,判斷NewSize是否等于所述下確界中的最小值,如果判斷結果為是,則結束演化過程;如果判斷結果為否,則轉向步驟I ;步驟 I,判斷是否滿足(SizeCounter < MAX_N0_IMPR0VEMENT)且(TotalCounter < MAX_T0TAL),如果判斷結果為否,則轉向所述步驟B,否則,結束演化過程,其中,第三預 定值MAX_NO_IMPROVEMENT、第四預定值MAX_T0TAL為預先設置的值。
4.根據權利要求3所述的靜態(tài)存儲的分配方法,其特征在于,所述進行變異處理的步 驟包括從個體Candi中以等概率選出一組元素<Vl,Addr1),產生一個隨機分布于區(qū)間 的整數(shù)0ffset,其中π表示向上取整運算,size為個體Candi所需存儲空間的 大小,即 Size = Hiax1 = (Addr^fs (V1)),其中,元素 <v1 Addr1)表示變量 <v1; Addr)和所 述變量的起始地址<v1; Addr1);先以預定概率將Offset的當前值生成相反數(shù),并使用所述相反數(shù)更新Offset,然后使 用 <v1 (AddrfOffset)mod(Size-fs(V1))> 代替 <v1; Addr),得到新個體 NewCandi,其中, mod表示取余運算;其中,Size = max1 = 1...N(Addr1+^(V1))表示如果變量名是為別名變量集定義的替代 名,則返回該別名變量集中各變量所占存儲空間大小的最大值;否則返回變量名所占存儲 空間的大??;所述Offset生成方法為令變量M =—丄,則Offset = M- round (Μ * 1]之間均勻分布的隨機數(shù))+ 1,其中,round表示四舍五入運算。
5.根據權利要求3所述的靜態(tài)存儲的分配方法,其特征在于,所述進行交叉處理的步 驟包括從個體Candi中以等概率選出一組元素<Vl,Addr),從當前種群Population中以等概 率選出異于Candi的一個體Candi2,從Candi2找到V1的起始地址Addr' ” 用 <v1; Addr' !> 代替 <v1; Addr1),得到新個體 NewCandi。
6.根據權利要求3所述的靜態(tài)存儲的分配方法,其特征在于, 所述初始種群FirstGen通過以下步驟生成求出共存變量集的集合VarGroupi中各元素的并集,記作AllVar ; 將AllVar里的所有元素的個數(shù)記作N,得到AllVar里的所有元素的第五預定數(shù)量種 排列,記作Perms,所述第五預定數(shù)量小于或者等于INIT_POPU_SIZE,所述INIT_POPU_SUE 為預先設置值;針對Perms里的每一種排列,得到對應的各個個體,將這些個體組成集合,生成所述初 始種群FirstGen ;所述個體為以下步驟獲取的將種群的各變量按照先后順序依次分配相鄰的存儲空間,即得到對應的個體。
7.根據權利要求6所述的靜態(tài)存儲的分配方法,其特征在于, 所述共存變量集的集合是通過以下步驟獲取的獲取所述模塊按照所述函數(shù)調度順序進行處理時,根據所述模塊執(zhí)行過程中同時存在 的變量的情況,生成與該調度順序對應的共存變量集;組合所述共存變量集,生成共存變量集的集合; 所述下確界是通過以下步驟獲取的獲取每個函數(shù)調度順序的各個所述共存變量集占用的存儲空間的最大值,作為所述函 數(shù)調度順序對應的所有變量所需存儲空間的下確界。
8.根據權利要求1所述的靜態(tài)存儲的分配方法,其特征在于,所述步驟2中模塊模型按 照如下方式生成函數(shù)包括函數(shù)名稱、輸入變量、輸出變量以及輸出變量所占存儲空間的大小;函數(shù)的輸 出變量包括函數(shù)執(zhí)行過程中用到的臨時變量;同一函數(shù)被多次調用時,使用不同的函數(shù)名稱;模塊模型包括輸入變量、輸入變量所占存儲空間的大小、輸出變量、例外變量以及至少 一個別名變量集,所述輸出變量包含所述模塊內的函數(shù)的輸出變量,所述例外變量不被優(yōu) 化處理,每個別名變量集包含多個互為別名關系的變量;當一個變量出現(xiàn)N次寫入,則引入 N個新變量,使得任何一個變量只被寫入一次;新變量與原變量互稱別名,其中,N為大于1 的自然數(shù)。
9.一種靜態(tài)存儲的分配裝置,其特征在于,包括模塊獲取單元,獲取待優(yōu)化的模塊,所述模塊包括至少兩個相互耦合的函數(shù); 模型生成單元,根據所述函數(shù)之間的耦合關系,生成一模塊模型;所述模塊模型包括 函數(shù)名稱和變量,所述變量包括輸入變量和輸出變量;函數(shù)調度順序獲取單元,根據所述模塊模型,獲取所述模塊的所有的函數(shù)調度順序; 下確界獲取單元,獲取所述模塊在每個所述函數(shù)調度順序下對應的所有變量所需存儲 空間的下確界;優(yōu)化單元,對每一種函數(shù)調度順序,通過遺傳算法優(yōu)化所有變量的地址分配信息,使所 有變量占用的存儲空間的大小趨近或到達所述下確界的最小值;選擇單元,選擇優(yōu)化后所有變量占用的存儲空間最小的函數(shù)調度順序; 編譯單元,根據選擇的所述函數(shù)調度順序和所述函數(shù)調度順序對應的地址分配信息, 對所述模塊進行編譯,所述地址分配信息包括各變量的起始地址。
10.根據權利要求9所述的靜態(tài)存儲的分配裝置,其特征在于,所述優(yōu)化單元包括 第一設置子單元,設置當前種群Population為初始種群FirstGen,設置當前種群的上一代種群中的各個體所需存儲空間的最小值LastSize的當前值為無窮大,設置演化時存 儲空間大小未變化的次數(shù)SizeCoimter的當前值為0,設置總演化次數(shù)TotalCoimter的當 前值為0;第二設置子單元,設置當前變異概率值Pmut和當前種群規(guī)模值&。pu ; 變異/交叉子單元,對當前種群Population里的每一個體Candi,使其以所述概率值 Pmut進行變異處理,以概率(I-Pmut)進行交叉處理,產生各新個體NewCandi ;第一選擇子單元,從新一代種群NewGen中選出滿足以下公式的個體,并用選擇出的個 體組成選擇出的種群^lectedNewGen ;所述公式為對于每一個G e VarGroupi里的任意兩個不同的變量V1. vk, [AddrljAddr1+^(V1)-I] Π [Addrk, Addrk+fs (vk)-l] = Φ ;其中,[Addrx, Addrx+fs(νχ)-1]表示變量vx所用存儲空間的起止位置所對應的區(qū)間;存儲空間去除子單元,對選擇出的種群klectedNewGen的各個體,去除未使用的存儲 空間;第二選擇子單元,將當前種群Population和選擇出的種群klectedNewGen合并,得到 集合NewAllPopu,將集合NewAllPopu里的各個體按所需存儲空間的大小從小到大排序,從 中選出前第二預定數(shù)量個個體以構成下一代種群NewPopulation,獲取當前種群的各個體 所需存儲空間的最小值NewSize ;所述第二預定數(shù)量小于或等于當前種群規(guī)模值&。pu ;更新子單元,將TotalCoimter加1,并使用所述下一代種群更新當前種群;當NewSize 小于LastSize時,將SizeCounter的當前值設置為0,并使用NewSize的值更新LastSize ; 當NewSize大于或等于LastSize時,將SizeCounter的當前值加1 ;第一判斷子單元,判斷NewSize是否等于所述下確界中的最小值,如果判斷結果為是, 則結束演化過程;如果判斷結果為否,則啟動第二判斷子單元;第二判斷子單元,判斷是否滿足(SizeCounter<MAX_N0_IMPR0VEMENT)且 (TotalCounter < MAX_T0TAL),如果判斷結果為否,則轉向所述步驟B,否則,結束演化過 程,其中,第三預定值MAX_NO_IMPROVEMENT、第四預定值MAX_T0TAL為預先設置的值。
11.根據權利要求10所述的靜態(tài)存儲的分配裝置,其特征在于,所述變異/交叉子單元 進行變異處理具體為從個體
12.根據權利要求10所述的靜態(tài)存儲的分配裝置,其特征在于,所述變異/交叉子單元 進行交叉處理具體為從個體Candi中以等概率選出一組元素<Vl,Addr),從當前種群Population中以等概 率選出異于Candi的一個體Candi2,從Candi2找到V1的起始地址Addr' ” 用 <v1; Addr' !> 代替 <v1; Addr1),得到新個體 NewCandi。
全文摘要
本發(fā)明提供一種靜態(tài)存儲的分配方法和靜態(tài)存儲的分配裝置,涉及數(shù)據存儲技術領域,為解決現(xiàn)有技術中靜態(tài)存儲時僅限于函數(shù)內部定義的靜態(tài)變量進行存儲優(yōu)化的技術問題而發(fā)明。所述方法包括獲取待優(yōu)化的模塊根據所述函數(shù)之間的耦合關系,生成一模塊模型;獲取所述模塊的所有的函數(shù)調度順序;獲取所述模塊在每個所述函數(shù)調度順序下對應的所有變量所需存儲空間的下確界;對每一種函數(shù)調度順序,通過遺傳算法優(yōu)化所有變量的地址分配信息;選擇優(yōu)化后所有變量占用的存儲空間最小的函數(shù)調度順序;根據選擇的所述函數(shù)調度順序和所述函數(shù)調度順序對應的地址分配信息,對所述模塊進行編譯。本發(fā)明能夠根據函數(shù)的全局變量進行存儲地址的優(yōu)化。
文檔編號G06F12/02GK102096638SQ20101056723
公開日2011年6月15日 申請日期2010年11月25日 優(yōu)先權日2010年11月25日
發(fā)明者厲正吉 申請人:意法·愛立信半導體(北京)有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
和林格尔县| 祁连县| 开阳县| 沙坪坝区| 修文县| 静宁县| 卢龙县| 西和县| 遂溪县| 鄂尔多斯市| 新建县| 南靖县| 治多县| 朝阳县| 龙口市| 江安县| 长白| 泸西县| 南丰县| 隆安县| 军事| 铁力市| 达尔| 周口市| 育儿| 栾川县| 柳江县| 黎平县| 运城市| 项城市| 上饶市| 崇明县| 独山县| 彭泽县| 凤城市| 子长县| 依兰县| 九龙县| 江华| 印江| 和田县|