專利名稱:一種用于動態(tài)管理片上指令便簽存儲器的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于動態(tài)管理片上指令便簽存儲器的方法,具體涉及一種用于動 態(tài)管理片上指令便簽存儲器的方法。
背景技術(shù):
在嵌入式系統(tǒng)中,處理器的片上存儲器通常采用SRAM結(jié)構(gòu),主要分為高速緩存 (cache)和便簽存儲器(scratchpad-memory,SPM)兩種類型。便簽存儲器是一種快速的、 由編譯器進(jìn)行管理的片上存儲器,它和高速緩存相比在實時性、功耗和面積上都有很大的 優(yōu)勢,因此便簽存儲器更加適合嵌入式系統(tǒng)的需要。現(xiàn)有的指令便簽存儲器的管理策略,采用靜態(tài)管理的模式,即在程序運行前,指令 便簽存儲器的內(nèi)容已經(jīng)被分配好,而且在程序執(zhí)行的過程中,其內(nèi)容保持不變。對于嵌入式 應(yīng)用而言靜態(tài)管理模式下的便簽存儲器性能優(yōu)于Cache,然而卻無法適應(yīng)應(yīng)用程序的動態(tài) 特性,沒有靈活性。
發(fā)明內(nèi)容
本發(fā)明的目的在于,為克服針對傳統(tǒng)靜態(tài)指令便簽存儲器無法適應(yīng)程序動態(tài)特性 的不足,提出了一種用于動態(tài)管理片上指令便簽存儲器的方法。本發(fā)明提出的一種用于動態(tài)管理片上指令便簽存儲器的方法,該方法用于對片上 便簽存儲器的內(nèi)容進(jìn)行動態(tài)管理,所述的方法包含如下步驟1)對高級語言源程序進(jìn)行基于典型輸入的剖面分析,得到應(yīng)用程序的執(zhí)行剖面信 息;2)對源程序進(jìn)行控制流分析,得到程序的控制流圖;3)根據(jù)得到的程序剖面信息和控制流圖,對應(yīng)用程序進(jìn)行分析,識別程序中的候 選程序遷移點;4)根據(jù)得到的候選程序遷移點,再結(jié)合相關(guān)參數(shù)建立收益模型,針對不同候選程 序遷移點計算將程序基本塊進(jìn)行動態(tài)遷移所獲得的初始性能收益;5)根據(jù)得到的基本塊的初始性能收益,同時考慮若干因素,決定是否進(jìn)行程序塊 的動態(tài)遷移;6)根據(jù)做出的遷移方案,在程序遷移點處插入控制程序塊遷移的指令,將程序塊 從片外傳輸?shù)狡希?)對源程序進(jìn)行二次編譯,得到源程序?qū)?yīng)的匯編程序進(jìn)行匯編,并和其他經(jīng)過 編譯的應(yīng)用程序、庫函數(shù)進(jìn)行鏈接,最終得到動態(tài)利用片上指令便簽存儲器的二進(jìn)制可執(zhí) 行文件。上述技術(shù)方案,步驟1)所述的程序的執(zhí)行剖面信息包括程序基本塊的大小、執(zhí) 行的次數(shù)或分支頻率。上述技術(shù)方案,步驟3) 所述的識別程序遷移點的類型包含函數(shù)開始、循環(huán)入口處和循環(huán)結(jié)束處。循環(huán)入口前后的程序局部性發(fā)生明顯的變化,并且循環(huán)體的執(zhí)行頻率遠(yuǎn) 高于循環(huán)入口處及以前的代碼的執(zhí)行頻率,因而動態(tài)遷移操作的開銷能夠被補償;算法在 函數(shù)入口點和循環(huán)結(jié)束處的程序點可以利用連續(xù)串行執(zhí)行的基本塊特點,補償動態(tài)遷移操 作開銷,進(jìn)而獲得更大的收益。其中,步驟3)所述的識別程序遷移點的步驟,具體的考慮因 素包含在程序遷移點之后,程序基本塊執(zhí)行的局部性發(fā)生明顯變化,并且程序遷移點的 執(zhí)行頻率小于被遷移程序基本塊的執(zhí)行頻率,這樣動態(tài)遷移操作的開銷才能通過被遷移程 序塊所獲得的收益獲得補償。上述技術(shù)方案,步驟4)所述的相關(guān)參數(shù)包含程序基本塊的大小、將程序放在片 上便簽存儲器時獲得的收益和將程序進(jìn)行動態(tài)遷移的額外開銷,其中,所述的收益和開銷, 能夠通過運行時間、功耗、或面積以及三者結(jié)合綜合考慮衡量得到。上述技術(shù)方案,步驟5)所述的若干因素包含便簽存儲器的可用空閑存儲空間、 程序基本塊的生存期和遷移操作的開銷;且步驟5)所述的動態(tài)遷移之前能進(jìn)行優(yōu)化步驟, 該步驟為將連續(xù)的程序基本塊進(jìn)行合并后再遷移,或?qū)?dāng)前生存的程序基本塊覆蓋便簽 存儲器中已經(jīng)死亡的基本塊。即當(dāng)當(dāng)程序塊不在生存的時候,可以被當(dāng)前生存的程序塊覆 蓋;片上便簽存儲器的可用空閑存儲空間,當(dāng)剩余存儲空間不多的時候,可以盡量放一些小 的程序基本塊來提升便簽存儲器的利用率。上述技術(shù)方案,步驟6)所述的動態(tài)遷移操作,通過逐條指令讀寫存儲器的方式完 成,或通過直接存儲器訪問的方式來完成。其中,動態(tài)遷移操作的實現(xiàn)方式,會影響步驟4) 收益模型。本發(fā)明的優(yōu)點在于,建立了多種候選程序遷移點模型,并根據(jù)需要建立針對性能、 功耗等多種目的的收益模型,同時在動態(tài)塊遷移過程中考慮到了程序塊生存期、剩余存儲 空間大小、遷移操作的開銷等因素,利用存儲器讀寫操作或者直接存儲訪問等多種方式進(jìn) 行動態(tài)程序塊遷移,最終達(dá)到了高效、動態(tài)管理片上指令便簽存儲器的目的。該方法能夠達(dá) 到提升嵌入式系統(tǒng)性能、降低嵌入式系統(tǒng)功耗等目的。
圖1給出了本發(fā)明的一種用于動態(tài)管理片上指令便簽存儲器的方法的詳細(xì)流程 圖。
具體實施例方式下面結(jié)合附圖和具體實施方式
對本發(fā)明做進(jìn)一步說明。該方法具體工作步驟如圖 1所示1.對高級語言源程序文件進(jìn)行靜態(tài)控制流分析或者基于典型輸入的剖面分析,得 到包含基本塊大小、執(zhí)行頻率、執(zhí)行次數(shù)等的程序執(zhí)行剖面信息和程序的控制流圖;2.根據(jù)剖面信息和控制流圖,分析源程序,找出候選的動態(tài)程序遷移點。程序遷移 點要選在其后的程序局部性發(fā)生明顯改變的程序點,同時要保證程序遷移點的執(zhí)行頻率小 于被遷移程序塊的執(zhí)行頻率,這樣才能使插入的遷移操作的開銷得到補償;
3.根據(jù)收益模型計算程序塊進(jìn)行動態(tài)遷移的初始收益,該收益模型可以是功耗收益、性能收益或者多種收益的綜合考慮,該收益模型主要基于剖面分析得到的基本塊大小、 基本塊的執(zhí)行次數(shù)、頻率以及將基本塊進(jìn)行動態(tài)遷移的開銷等因素;
4.根據(jù)程序基本塊的生存期、便簽存儲器的剩余空間等因素,決定是否進(jìn)行動態(tài) 遷移。在動態(tài)遷移之前,可以進(jìn)行多種優(yōu)化操作,例如將連續(xù)的程序基本塊進(jìn)行合并后再遷 移,可以減少動態(tài)遷移開銷;將當(dāng)前生存的程序基本塊覆蓋便簽存儲器中已經(jīng)死亡的基本 塊,可以提升便簽存儲器的利用率;5.根據(jù)步驟4做出的程序動態(tài)遷移的決策,在程序中插入動態(tài)遷移操作。動態(tài)遷 移的實現(xiàn),可以是通過逐條指令讀寫存儲器的方式,也可以通過直接存儲訪問的方式,具體 實現(xiàn)方式的不同會對步驟3采用的收益模型產(chǎn)生影響;6.在考慮動態(tài)遷移操作之后,產(chǎn)生源程序的匯編語言程序;7.將當(dāng)前應(yīng)用程序?qū)?yīng)的匯編程序進(jìn)行匯編后,和其他經(jīng)過相同處理過程的庫函 數(shù)程序合并,并進(jìn)行鏈接操作,得到可執(zhí)行文件。通過以上步驟,本發(fā)明可以對片上指令便簽存儲器進(jìn)行高效的動態(tài)管理,達(dá)到提 升嵌入式系統(tǒng)性能、降低嵌入式系統(tǒng)功耗等目的。最后所應(yīng)說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參 照實施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對本發(fā)明的技術(shù)方 案進(jìn)行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明 的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
一種用于動態(tài)管理片上指令便簽存儲器的方法,該方法用于對片上便簽存儲器的內(nèi)容進(jìn)行動態(tài)管理,所述的方法包含如下步驟1)對高級語言源程序進(jìn)行基于典型輸入的剖面分析,得到應(yīng)用程序的執(zhí)行剖面信息;2)對源程序進(jìn)行控制流分析,得到程序的控制流圖;3)根據(jù)得到的程序剖面信息和控制流圖,對應(yīng)用程序進(jìn)行分析,識別程序中的候選程序遷移點;4)根據(jù)得到的候選程序遷移點,再結(jié)合相關(guān)參數(shù)建立收益模型,針對不同候選程序遷移點計算將程序基本塊進(jìn)行動態(tài)遷移所獲得的初始性能收益;5)根據(jù)得到的基本塊的初始性能收益,同時考慮若干因素,決定是否進(jìn)行程序塊的動態(tài)遷移;6)根據(jù)做出的遷移方案,在程序遷移點處插入控制程序塊遷移的指令,將程序塊從片外傳輸?shù)狡希?)對源程序進(jìn)行二次編譯,得到源程序?qū)?yīng)的匯編程序進(jìn)行匯編,并和其他經(jīng)過編譯的應(yīng)用程序、庫函數(shù)進(jìn)行鏈接,最終得到動態(tài)利用片上指令便簽存儲器的二進(jìn)制可執(zhí)行文件。
2.根據(jù)權(quán)利要求1所述的用于動態(tài)管理片上指令便簽存儲器的方法,其特征在于,步 驟1)所述的程序的執(zhí)行剖面信息包括程序基本塊的大小、執(zhí)行的次數(shù)或分支頻率。
3.根據(jù)權(quán)利要求1所述的用于動態(tài)管理片上指令便簽存儲器的方法,其特征在于,步 驟3)所述的識別程序遷移點的類型包含函數(shù)開始、循環(huán)入口處和循環(huán)結(jié)束處。
4.根據(jù)權(quán)利要求1所述的用于動態(tài)管理片上指令便簽存儲器的方法,其特征在于,步 驟4)所述的相關(guān)參數(shù)包含程序基本塊的大小、將程序放在片上便簽存儲器時獲得的收益和將程序進(jìn)行動態(tài)遷移 的額外開銷,其中,所述的收益和開銷,能夠通過運行時間、功耗、或面積以及三者綜合考慮 衡量得到。
5.根據(jù)權(quán)利要求1所述的用于動態(tài)管理片上指令便簽存儲器的方法,其特征在于,步 驟5)所述的若干因素包含便簽存儲器的可用空閑存儲空間、程序基本塊的生存期和遷移 操作的開銷。
6.根據(jù)權(quán)利要求1所述的用于動態(tài)管理片上指令便簽存儲器的方法,其特征在于,步 驟5)所述的動態(tài)遷移之前能進(jìn)行優(yōu)化步驟,該步驟為將連續(xù)的程序基本塊進(jìn)行合并后再 遷移,或?qū)?dāng)前生存的程序基本塊覆蓋便簽存儲器中已經(jīng)死亡的基本塊。
7.根據(jù)權(quán)利要求1所述的用于動態(tài)管理片上指令便簽存儲器的方法,其特征在于,步 驟6)所述的動態(tài)遷移操作,通過逐條指令讀寫存儲器的方式完成,或通過直接存儲器訪問 的方式來完成。
全文摘要
本發(fā)明提出一種用于動態(tài)管理片上指令便簽存儲器的方法,所述的方法包含如下步驟對高級語言源程序進(jìn)行基于典型輸入的剖面分析,得到應(yīng)用程序的運行信息;對源程序進(jìn)行控制流分析,得到程序的控制流圖;根據(jù)程序運行信息和控制流圖,識別程序中的候選程序遷移點;建立收益代價模型,計算將程序基本塊動態(tài)遷移到片上獲得的初始性能收益;根據(jù)初始性能收益,同時結(jié)合便簽存儲器的可用空閑存儲空間、程序基本塊的生存期、遷移操作的開銷等因素,決定是否進(jìn)行程序塊動態(tài)遷移;在有性能收益的前提下,才進(jìn)行程序塊動態(tài)遷移即在程序遷移點處插入進(jìn)行程序塊遷移的指令,將程序塊從片外動態(tài)遷移到片上。本發(fā)明提升了嵌入式系統(tǒng)性能、降低嵌入式系統(tǒng)功耗。
文檔編號G06F9/48GK101853183SQ201010178169
公開日2010年10月6日 申請日期2010年5月14日 優(yōu)先權(quán)日2010年5月14日
發(fā)明者侯朝煥, 張鐵軍, 時磊, 洪纓, 王東輝, 王紅梅 申請人:中國科學(xué)院聲學(xué)研究所