本發(fā)明屬于嵌入式系統(tǒng)
技術(shù)領(lǐng)域:
,特別涉及一種基于片上可編程存儲器的嵌入式系統(tǒng)優(yōu)化方法。
背景技術(shù):
:嵌入式系統(tǒng)是根據(jù)應(yīng)用的需要,采用計算機(jī)技術(shù),對軟硬件進(jìn)行裁剪,從而滿足定制要求的專用計算機(jī)系統(tǒng)。隨著嵌入式系統(tǒng)的不斷發(fā)展,性能、功耗與實時性已經(jīng)成為嵌入式系統(tǒng)設(shè)計的主要要求。在嵌入式系統(tǒng)的設(shè)計中,存儲層次的設(shè)計非常重要;存儲層次設(shè)計的優(yōu)劣對嵌入式系統(tǒng)的整體性能、能耗與實現(xiàn)成本有極大的影響。整個系統(tǒng)性能影響最大的不是處理器的執(zhí)行速度,而是存儲器的速度。在存儲器與處理器之間一直存在著的較大的速度差距,即是“存儲墻”(memorywall)問題。隨著處理器計算能力的不斷提高,雖然存儲器的訪問速度也在增加,但是這種差距不但沒有縮小,反而越來越大。處理器與存儲之間的速度差距成為影響系統(tǒng)性能進(jìn)一步提升的主要瓶頸。因此,嵌入式系統(tǒng)中,存儲子系統(tǒng)一直是提高系統(tǒng)性能的瓶頸。不僅如此,在嵌入式系統(tǒng)中,存儲子系統(tǒng)也是系統(tǒng)能耗的主要瓶頸。在嵌入式系統(tǒng)中,存儲子系統(tǒng)的能耗往往達(dá)到了整個系統(tǒng)能耗的50%-70%。soc技術(shù)的發(fā)展使得集縮小處理器與存儲之間的速度差距成為可能。片上不但可以集成存儲器,還提供了高性能的片內(nèi)總線,能夠有效的提高存儲器的速度,同時降低能耗。在soc上,存儲器將占據(jù)片上面積的50%以上。使用片上的存儲器能夠有效的減少系統(tǒng)能耗,提高整體性能。因此,很多嵌入式處理器上都集成了存儲器。在嵌入式系統(tǒng),dram與sram是最常用的兩種存儲器。sram的速度是dram的10-100倍,但是價格也是dram的20倍以上。因此,在嵌入式系統(tǒng)中,dram通常用作容量大的存儲層次,同時,提供較小的sram來存儲最常用的數(shù)據(jù)以減少運行時間。具有sram的系統(tǒng)往往會比僅使用dram的系統(tǒng)性能高20%以上。由于sram的每年提高60%而dram的速度每年只能提高7%,這種性能差距將越來越大。在嵌入式系統(tǒng)的多級存儲層次中,片上可編程存儲器是集成在片上的sram,部分情況下也可以使用dram。片上可編程存儲器與cache不同,由軟件控制,程序員可以通過編程實現(xiàn)對片上可編程存儲器的控制,或者在編譯與運行時進(jìn)行優(yōu)化。通過片上可編程存儲器進(jìn)行優(yōu)化,其根本目標(biāo)是要將程序片段(包括代碼或者數(shù)據(jù))分配到片上可編程存儲器的地址空間。所有這些程序片段被稱為存儲對象(memoryojbect)。由于片上可編程存儲器的大小是有限的,能夠分配到片上可編程存儲器上的存儲對象的數(shù)量也是有限的。優(yōu)化方法需要根據(jù)片上可編程存儲器的大小,從程序的存儲對象中選擇最合適來完成片上可編程存儲器的分配。既有的分配方法中,通常關(guān)注存儲對象的使用頻率,根據(jù)存儲對象的使用頻率大小來作為分配的基本判斷依據(jù)。但是存儲對象的使用方式除了使用頻率相關(guān),也與存儲對象的使用時間等時間因素具有相關(guān)性。技術(shù)實現(xiàn)要素:本發(fā)明的目的在于提供一種基于片上可編程存儲器的嵌入式系統(tǒng)優(yōu)化方法,本發(fā)明從存儲對象的使用頻率、使用時間等為參數(shù)計算存儲對象的調(diào)度優(yōu)先權(quán),再構(gòu)建存儲對象的調(diào)度序列,并完成片上可編程存儲器的優(yōu)化分配。本發(fā)明所采用的技術(shù)方案是:一種基于片上可編程存儲器的嵌入式系統(tǒng)優(yōu)化方法,包括以下步驟:步驟1:對存儲對象的運行時間進(jìn)行分析和標(biāo)記;每個存儲對象是程序的一個片段,這個片段或是代碼、或是數(shù)據(jù)、或是代碼和數(shù)據(jù)的混合體;對于一個程序p,經(jīng)過編譯后生成的所有存儲對象集合為mo(p)=(mo0,mo1,mo2,…,mon-1),共有n個存儲對象;對于mo(p)中的存儲對象moi來說,存儲對象moi的使用頻率記為f(moi),表示存儲對象moi在程序p運行期間的使用次數(shù);存儲對象moi每次被使用的起始時刻記為tj(moi),表示程序p第j次使用存儲對象moi的起始時刻;步驟2:計算存儲對象的調(diào)度優(yōu)先權(quán);步驟3:生成存儲對象在片上可編程存儲器的調(diào)度序列;步驟4:片上可編程存儲空間的分配。本發(fā)明與
背景技術(shù):
相比,具有的有益的效果是:本發(fā)明是一種基于片上可編程存儲器的嵌入式系統(tǒng)優(yōu)化方法,其主要功能是對程序中的存儲對象的運行時間進(jìn)行分析和標(biāo)記,再以存儲對象的使用頻率和使用時間等為參數(shù)計算出存儲對象的調(diào)度優(yōu)先權(quán),然后基于存儲對象的調(diào)度優(yōu)先權(quán)生成存儲對象的調(diào)度序列,最后進(jìn)行片上可編程存儲空間的優(yōu)化分配。(1)高效性。本方法實現(xiàn)基于存儲對象的使用頻率、使用時間等多種參數(shù)的綜合優(yōu)化設(shè)計,構(gòu)建了存儲對象的調(diào)度序列,提高了片上可編程存儲器的利用效率,提升了嵌入式系統(tǒng)的性能;(2)功耗低。本方法實現(xiàn)了片上可編程存儲器的高效利用,有效的提升了存儲對象的分配效率,降低了嵌入式系統(tǒng)功耗。附圖說明圖1是本發(fā)明實施例的流程圖。具體實施方式為了便于本領(lǐng)域普通技術(shù)人員理解和實施本發(fā)明,下面結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步的詳細(xì)描述,應(yīng)當(dāng)理解,此處所描述的實施示例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。請見圖1,本發(fā)明提供的一種基于片上可編程存儲器的嵌入式系統(tǒng)優(yōu)化方法,包括以下步驟:第一步、對存儲對象的運行時間進(jìn)行分析和標(biāo)記;程序在進(jìn)行編譯時生成存儲對象,存儲對象是程序運行時可以調(diào)入片上可編程存儲器的內(nèi)存對象。每個存儲對象是程序的一個片段,這個片段可以是代碼,可以是數(shù)據(jù),也可以是代碼和數(shù)據(jù)的混合體。對于一個程序p,經(jīng)過編譯后生成的所有存儲對象集合為mo(p)=(mo0,mo1,mo2,…,mon-1),共有n個存儲對象。對于mo(p)中的存儲對象moi來說,存儲對象moi的使用頻率記為f(moi),表示存儲對象moi在程序p運行期間的使用次數(shù);存儲對象moi每次被使用的起始時刻記為tj(moi),表示程序p第j次使用存儲對象moi的起始時刻。對于程序pro,編譯后生成的存儲對象有5個,所有存儲對象集合為mo(pro)=(mo0,mo1,mo2,…,mo4)。對于mo(pro)中的存儲對象如下表1所示:表1表1中用(a,b)的形式來表示某個存儲對象每次被程序pro使用的起始時刻,其中a表示程序pro第幾次使用該存儲對象,b表示該存儲對象被程序p使用的起始時刻。例如,對于存儲對象mo0來說,(2,4)表示存儲對象mo0第2次被程序pro使用時的起始時刻是4;對于存儲對象mo4來說,(2,5)表示存儲對象mo4第2次被程序pro使用時的起始時刻是5。第二步、計算存儲對象的調(diào)度優(yōu)先權(quán);對于mo(p)中的存儲對象moi,存儲對象moi一共被程序p使用了m次,m大于等于2,計算存儲對象moi的調(diào)度優(yōu)先權(quán)。存儲對象moi的調(diào)度優(yōu)先權(quán)計算方法為:在上述公式中,pri(moi)表示存儲對象moi的調(diào)度優(yōu)先權(quán)。pri(moi)的值越大,表示存儲對象moi的調(diào)度優(yōu)先權(quán)越高。對于程序pro中各個存儲對象的調(diào)度優(yōu)先權(quán)如下表2所示:表2存儲對象調(diào)度優(yōu)先權(quán)mo00.600mo10.067mo20.036mo30.111mo40.208第三步、生成存儲對象在片上可編程存儲器的調(diào)度序列;根據(jù)第二步中計算出的存儲對象的調(diào)度優(yōu)先權(quán),對mo(p)中所有存儲對象按照存儲對象的調(diào)度優(yōu)先權(quán),進(jìn)行降序排列,形成存儲對象集合a(p)。存儲對象集合a(p)中的所有存儲對象按照存儲對象的調(diào)度優(yōu)先權(quán)的降序排列,即:a(p)=(mo′0,mo′1,mo′2,…,mo′n-1)存儲對象集合a(p)中由所有存儲對象按照存儲對象的調(diào)度優(yōu)先權(quán)進(jìn)行降序排列所形成的序列記為q(p),q(p)即為存儲對象在片上可編程存儲器的調(diào)度序列。根據(jù)表2,程序pro的存儲對象按照存儲對象的調(diào)度優(yōu)先權(quán)進(jìn)行降序排列,所形成的存儲對象集合a(pro)=(mo0,mo4,mo3,mo1,mo2),q(pro)={mo0,mo4,mo3,mo1,mo2}。第四步、片上可編程存儲空間的分配;對于可容納r個存儲對象的片上可編程存儲器s,片上可編程存儲器s所具有的片上可編程存儲空間也為r。片上可編程存儲器s所具有的片上可編程存儲空間單元編號為s0到sr-1。程序p的存儲對象集合a(p)在運行時,為存儲對象集合a(p)中的存儲對象分配片上可編程存儲空間:如果r大于等于n,表明片上可編程存儲器s所具有的片上可編程存儲空間可以容納存儲對象集合a(p)中所有的存儲對象。因此,如果r大于等于n,將存儲對象集合a(p)中所有的存儲對象全部存儲到片上可編程存儲空間中。片上可編程存儲空間的分配完成。如果r小于n,表明片上可編程存儲器s所具有的片上可編程存儲空間不能容納存儲對象集合a(p)中所有的存儲對象。因此,如果r小于n,片上可編程存儲空間的分配方式為:a)將q(p)中前r個存儲對象存儲到片上可編程存儲空間中;b)在程序p執(zhí)行完成之前的某一時刻t,有1個存儲對象mou已經(jīng)被程序p使用完成,不再需要存儲在片上可編程存儲空間單元sk中,此時從q(p)中的第r+1個存儲對象開始,選擇1個存儲對象,這個存儲對象滿足條件c1:具有從q(p)中的第r+1個存儲對象開始的n-r-1個存儲對象中最大的調(diào)度優(yōu)先權(quán)且最后一次被程序p使用的起始時刻大于t。如果找到滿足該條件的存儲對象mov,則將滿足該條件的存儲對象mov存儲到存儲對象mou所在的片上可編程存儲空間單元sk中。c)在程序p運行過程中,重復(fù)步驟b),直到不存在滿足條件c1的存儲對象。片上可編程存儲空間的分配完成。對于可以容納5個存儲對象的片上可編程存儲器s,片上可編程存儲器s所具有的片上可編程存儲空間也為5。片上可編程存儲器s所具有的片上可編程存儲空間單元編號為s0到s4。程序pro的存儲對象集合a(pro)在運行時,為存儲對象集合a(pro)中的存儲對象分配片上可編程存儲空間。由于r=n=5,將mo0,mo4,mo3,mo1,mo2全部存儲到片上可編程存儲空間中,片上可編程存儲空間的分配完成。對于可以容納3個存儲對象的片上可編程存儲器s,片上可編程存儲器s所具有的片上可編程存儲空間也為3。片上可編程存儲器s所具有的片上可編程存儲空間單元編號為s0到s2。程序pro的存儲對象集合a(pro)在運行時,為存儲對象集合a(pro)中的存儲對象分配片上可編程存儲空間。由于r為3,n為5,r小于n,表明片上可編程存儲器s所具有的片上可編程存儲空間不能容納存儲對象集合a(pro)中所有的存儲對象。因此,片上可編程存儲空間的分配方式為:a)將q(pro)中前3個存儲對象mo0,mo4,mo3分別存儲到片上可編程存儲空間單元s0,s1和s2中;b)在程序pro執(zhí)行完成之前的某一時刻t=7,有1個存儲對象mo0已經(jīng)被程序pro使用完成,不再需要存儲在片上可編程存儲空間單元s0中,此時從q(pro)中的第4個存儲對象開始,選擇1個存儲對象,這個存儲對象滿足條件c1:在mo1和mo2這兩個存儲對象中具有最大的調(diào)度優(yōu)先權(quán)且最后一次被程序pro使用的起始時刻大于7。根據(jù)表1和表2,存儲對象mo1的調(diào)度優(yōu)先權(quán)大于存儲對象mo2的調(diào)度優(yōu)先權(quán),并且存儲對象mo1最后一次被程序pro使用的起始時刻為12,則找到滿足該條件的存儲對象為存儲對象mo1,將滿足該條件的存儲對象mo1存儲到存儲對象mo0所在的片上可編程存儲空間單元s0中。c)在程序pro執(zhí)行完成之前的某一時刻t=12,有1個存儲對象mo1已經(jīng)被程序pro使用完成,不再需要存儲在片上可編程存儲空間單元s0中,此時從q(pro)中的第5個存儲對象開始,選擇1個存儲對象,這個存儲對象滿足條件c1:在mo2這個存儲對象中具有最大的調(diào)度優(yōu)先權(quán)且最后一次被程序pro使用的起始時刻大于12。根據(jù)表1和表2,此時只有存儲對象mo1未被存儲到片上可編程存儲空間,并且存儲對象mo2最后一次被程序pro使用的起始時刻為16,則找到滿足該條件的存儲對象為存儲對象mo2,將滿足該條件的存儲對象mo2存儲到存儲對象mo0所在的片上可編程存儲空間單元s0中。d)在程序pro執(zhí)行完成之前的某一時刻t=14,有1個存儲對象mo4已經(jīng)被程序pro使用完成,不再需要存儲在片上可編程存儲空間單元s1中,此時存儲對象mo0,mo1,mo4都已經(jīng)被使用完畢,存儲對象mo2和mo3正存儲在片上可編程存儲空間單元s0和s2中,沒有需要分配到片上可編程存儲空間的存儲對象。片上可編程存儲空間的分配完成。應(yīng)當(dāng)理解的是,本說明書未詳細(xì)闡述的部分均屬于現(xiàn)有技術(shù)。應(yīng)當(dāng)理解的是,上述針對較佳實施例的描述較為詳細(xì),并不能因此而認(rèn)為是對本發(fā)明專利保護(hù)范圍的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明權(quán)利要求所保護(hù)的范圍情況下,還可以做出替換或變形,均落入本發(fā)明的保護(hù)范圍之內(nèi),本發(fā)明的請求保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。當(dāng)前第1頁12