專利名稱:數(shù)組多引用訪問的分塊方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及編譯方法和編譯器,特別涉及數(shù)組多引用訪問的分塊方法和裝置。
背景技術(shù):
在傳統(tǒng)的處理器體系架構(gòu)中,通常將大容量片上靜態(tài)存儲器(SRAM)存儲器組織為硬件管理的高速緩沖存儲器(Cache)。然而,隨著容量的增大和工藝的發(fā)展,Cache與處理器之間的性能差距越來越大。大容量的Cache使得面積和功耗成為一個重要的問題,因?yàn)镃ache通常消耗259Γ50%的芯片面積和功耗,而且這個比例還在上升。此外,對于很多應(yīng)用,Cache的最近最少使用(LRU :Least Recently Used)替換機(jī)制并不能有效捕獲程序中的局部性。因此,在嵌入式系統(tǒng)和新興的體系結(jié)構(gòu)中,越來越多地將大容量片上SRAM組織為暫存器(SPM Scratch-Pad Memory),米用軟件管理。
在SPM和DRAM (動態(tài)隨機(jī)存取存儲器Dynamic Random Access Memory)共用的存儲架構(gòu)中,SPM為片上存儲器,容量有限;DRAM為主存,容量較大,大數(shù)組一般存儲在DRAM中。對于程序核心段頻繁訪問的大數(shù)組,如果數(shù)組的訪問具有空間局限性,往往需要結(jié)合循環(huán)分塊進(jìn)行數(shù)據(jù)的分塊傳輸優(yōu)化,即在SPM上預(yù)先分配一塊緩沖空間,數(shù)組訪問之前先通過異步塊數(shù)據(jù)傳輸裝置將DRAM中的數(shù)據(jù)傳輸至SPM上,然后將程序核心段頻繁訪問DRAM中數(shù)據(jù)轉(zhuǎn)化為頻繁訪問SPM上的緩沖空間中的臨時(shí)數(shù)據(jù)。而對于應(yīng)用程序循環(huán)中多次引用同一個數(shù)組的情況,程序員在SPM上預(yù)先分配緩沖空間需要特別謹(jǐn)慎,防止出現(xiàn)導(dǎo)致程序語義錯誤的情況,例如,函數(shù)中多次引用一個數(shù)組的情況通常為
for(i=0; i<N; i++)
{
=a[i+p ];a[i+q]=…;//q>p
}如果在程序中給a數(shù)組分別開一個ra_buf [b Ik]用于優(yōu)化數(shù)據(jù)的讀,wa_buf [b Ik]用于優(yōu)化數(shù)據(jù)的寫,那么存在導(dǎo)致程序語義錯誤的隱患。請參考圖1,在上述程序中,如果數(shù)組a兩次引用之間距離d=q_p小于SPM上分配的緩沖大小blk時(shí),將會導(dǎo)致寫的數(shù)據(jù)還沒更新到DRAM中,讀的數(shù)據(jù)已經(jīng)從DRAM中讀出來了,從而導(dǎo)致程序語義錯誤?,F(xiàn)有技術(shù)中,對于SPM和DRAM共用的存儲架構(gòu),存在根據(jù)數(shù)據(jù)分塊結(jié)合循環(huán)分塊的一些基本原理,主要考慮的是挖掘循環(huán)中的局部性,沒有考慮程序中數(shù)據(jù)片上空間整體需求對數(shù)組分塊大小的影響;另外,還有一種二叉樹搜索最優(yōu)分塊大小的方法,著重于開發(fā)核心(Kernel)重用,該算法是一種啟發(fā)式方法,沒有建立詳盡的參數(shù)模型以準(zhǔn)確指導(dǎo)最優(yōu)分塊大小選擇,也沒有同時(shí)考慮預(yù)取和重用優(yōu)化的折中?,F(xiàn)有技術(shù)對于數(shù)組多引用訪問,僅通過分析程序的行為來確定分塊參數(shù),但是由于數(shù)組的分塊優(yōu)化受限于硬件結(jié)構(gòu)的制約,所以不能分析在SPM和DRAM共用的存儲架構(gòu)下的有效分塊參數(shù)。其他有關(guān)數(shù)組多引用訪問的方法還可以參考公開號為CN1329302的中國發(fā)明專利申請,其公開了一種流水線微處理器的循環(huán)高速緩沖存儲器及高速緩存控制器。
發(fā)明內(nèi)容
本發(fā)明解決的·問題是現(xiàn)有技術(shù)不能分析在SPM和DRAM共用的存儲架構(gòu)下的有效分塊參數(shù)。為解決上述問題,本發(fā)明技術(shù)方案提供了一種數(shù)組多引用訪問的分塊方法,包括分析程序內(nèi)各循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離;根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù);輸出數(shù)組訪問的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。可選的,所述計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)包括根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離計(jì)算正確語義下的數(shù)組分塊參數(shù)和緩沖大小參數(shù);結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征優(yōu)化所述數(shù)組分塊參數(shù)和緩沖大小參數(shù)??蛇x的,所述的分析各循環(huán)內(nèi)數(shù)組訪問模式包括先根據(jù)語法樹確定數(shù)組的訪問表達(dá)式,再根據(jù)數(shù)組的訪問表達(dá)式判斷數(shù)組訪問模式??蛇x的,所述數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離保存在循環(huán)信息鏈表中??蛇x的,所述循環(huán)信息鏈表為遍歷應(yīng)用程序控制圖后為每個循環(huán)所創(chuàng)建,所述循環(huán)信息鏈表中還保存有分析所述循環(huán)后收集的變量訪存信息??蛇x的,所述數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離與所述變量訪存信息具有對應(yīng)關(guān)系O為解決上述問題,本發(fā)明技術(shù)方案還提供了一種數(shù)組多引用訪問的分塊裝置,包括分析單元,適于分析程序內(nèi)各循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離;計(jì)算單元,適于在分析單元分析出數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離后,根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù);輸出單元,適于在計(jì)算單元計(jì)算出數(shù)組分塊參數(shù)和緩沖大小參數(shù)后,輸出所述數(shù)組分塊參數(shù)和所述緩沖大小參數(shù)??蛇x的,所述的計(jì)算單元計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)包括根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離計(jì)算正確語義下的數(shù)組分塊參數(shù)和緩沖大小參數(shù);結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征優(yōu)化所述數(shù)組分塊參數(shù)和緩沖大小參數(shù)??蛇x的,所述的分析單元分析各循環(huán)內(nèi)數(shù)組訪問模式包括先根據(jù)語法樹確定數(shù)組的訪問表達(dá)式,再根據(jù)數(shù)組的訪問表達(dá)式判斷數(shù)組訪問模式??蛇x的,還包括填寫單元,適于在所述分析單元根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離分析后,將所述關(guān)聯(lián)類型和關(guān)聯(lián)距離系保存在循環(huán)信息鏈表中??蛇x的,還包括創(chuàng)建單元,適于在遍歷應(yīng)用程序控制圖后創(chuàng)建循環(huán)信息鏈表,分析所述循環(huán),收集變量訪存信息并保存在所述循環(huán)信息鏈表中??蛇x的,所述數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離與所述變量訪存信息具有對應(yīng)關(guān)系O與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案提出了一種數(shù)組多引用訪問的分塊方法和裝置。上述技術(shù)方案中數(shù)組多引用訪問的分塊方法,先分析程序內(nèi)各循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離,該方法引入類別分析和關(guān)聯(lián)分析自動分析程序中數(shù)組多個引用訪問之間的相關(guān)性,通過進(jìn)行不同訪問模式,如區(qū)間訪問、連續(xù)訪問和離散訪問的依賴關(guān)系分析,填寫數(shù)組的關(guān)聯(lián)類型和關(guān)聯(lián)距離信息;然后根據(jù)每個循環(huán)中的數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離計(jì)算可行的數(shù)組分塊參數(shù)和緩沖大小參數(shù),以保證了程序運(yùn)行過程中的正確語義,不存在 導(dǎo)致程序語義錯誤的隱患;同時(shí),在計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)的同時(shí),結(jié)合了存儲系統(tǒng)的結(jié)構(gòu)特征,剔除掉無優(yōu)化價(jià)值的數(shù)組分塊參數(shù)和緩沖大小參數(shù),例如數(shù)組分塊參數(shù)過小,遠(yuǎn)小于異步數(shù)據(jù)塊傳輸?shù)囊粋€內(nèi)存行的大小,或者緩沖大小參數(shù)過大,超出了片上暫存器的容量等情況,最后將有使用價(jià)值的數(shù)組分塊參數(shù)和緩沖大小參數(shù)輸出供編譯器優(yōu)化或者用戶優(yōu)化選擇。因此,本技術(shù)方案的數(shù)組多引用訪問的分塊方法既分析了應(yīng)用程序中多個引用訪問之間的相關(guān)性,又充分考慮了系統(tǒng)存儲架構(gòu)的結(jié)構(gòu)限制,確保所獲得的數(shù)組分塊參數(shù)和緩沖大小參數(shù)在保證程序語義正確的前提下具有使用價(jià)值。
圖I是現(xiàn)有技術(shù)的數(shù)組多引用訪問的分塊方法的操作實(shí)例;圖2是本發(fā)明的數(shù)組多引用訪問的分塊方法的流程示意圖;圖3是本發(fā)明的數(shù)組多引用訪問的分塊裝置的機(jī)構(gòu)示意圖。
具體實(shí)施例方式現(xiàn)有技術(shù)中,對于SPM和DRAM共用的存儲架構(gòu),對于數(shù)組多引用訪問,僅通過分析程序的行為來確定分塊參數(shù),但是由于數(shù)組的分塊受限于硬件結(jié)構(gòu)的制約,所以不能獲得有效分塊參數(shù)。本發(fā)明技術(shù)方案提供了一種數(shù)組多引用訪問的分塊方法,包括分析程序內(nèi)各循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離;根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù);輸出數(shù)組訪問的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。本技術(shù)方案的數(shù)組多引用訪問的分塊方法既分析了應(yīng)用程序中多個引用訪問之間的相關(guān)性,又充分考慮了系統(tǒng)存儲架構(gòu)的結(jié)構(gòu)限制,確保所獲得的數(shù)組分塊參數(shù)和緩沖大小參數(shù)在確保程序語義正確的前提下具有使用價(jià)值。為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖和實(shí)施例對本發(fā)明的具體實(shí)施方式
做詳細(xì)的說明。請參考圖2,其示出了本發(fā)明技術(shù)方案一實(shí)施例的數(shù)組多引用訪問的分塊方法的基本流程,所述的數(shù)組多引用訪問的分塊方法包括步驟S201,遍歷應(yīng)用程序控制圖,為每個循環(huán)創(chuàng)建循環(huán)信息鏈表,分析所述循環(huán),收集變量訪存信息并添加到所述循環(huán)信息鏈表。所述的數(shù)組多引用訪問的分塊方法作為程序編譯方法中的一部分,本實(shí)施例數(shù)組多引用訪問的分塊方法為程序編譯器提供可選的數(shù)組分塊參數(shù)和緩沖大小參數(shù),因此本技術(shù)方案以此前程序編譯過程中編譯器生成的應(yīng)用程序控制圖和語法樹等數(shù)據(jù)結(jié)構(gòu)作為基礎(chǔ)。遍歷應(yīng)用程序控制圖,為每個循環(huán)創(chuàng)建循環(huán)信息鏈表,分析所述循環(huán),收集變量訪存信息并添加到所述循環(huán)信息鏈表。所述的變量訪存信息包括循環(huán)變量信息、數(shù)組訪問信息、循環(huán)語句信息和循環(huán)索引變量信息。本實(shí)施例中,為每個循環(huán)創(chuàng)建循環(huán)信息鏈表后分析所述循環(huán),收集變量訪問信息,具體包括將當(dāng)前循環(huán)的循環(huán)變量添加到循環(huán)信息鏈表;計(jì)算循環(huán)的長度,將循環(huán)體內(nèi)的數(shù)組訪問信息添加到循環(huán)信息鏈表;將循環(huán)中語句的相關(guān)信息添加到循環(huán)信息鏈表;識別循環(huán)的索引變量,將循環(huán)索引變量添加到循環(huán)信息鏈表。步驟S202,根據(jù)函數(shù)調(diào)用關(guān)系,利用調(diào)用過程間信息整理更新所述循環(huán)信息鏈表。本步驟主要針對循環(huán)體中含有函數(shù)調(diào)用的情形,將被調(diào)用函數(shù)中循環(huán)體之外的數(shù)組訪問信息,以及函數(shù)的形參指針等訪問信息更新到上層循環(huán)體中,具體包括將當(dāng)前函數(shù)的數(shù)組訪問、形參指針訪問以及指針訪問,創(chuàng)建變量訪問項(xiàng)并添加到上層循環(huán)信息鏈表。步驟S203,分析所述循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離。分析數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行關(guān)聯(lián)關(guān)系分析。根據(jù)編譯器前端生成的語法樹確定數(shù)組的引用模式,所述的語法樹是按照規(guī)則進(jìn)行推導(dǎo)形成的樹,它是程序語言的結(jié)構(gòu)的圖形表示,代表了句子的推導(dǎo)過程,有利于理解句子語法結(jié)構(gòu)的層次。對于每個循環(huán)中的數(shù)組,都有與之對應(yīng)的語法樹,根據(jù)語法樹確定數(shù)組的訪問表達(dá)式后,再根據(jù)數(shù)組的訪問表達(dá)式判斷數(shù)組訪問模式。所述的數(shù)組訪問模式包括區(qū)間訪問、連續(xù)訪問和離散訪問。連續(xù)訪問具有數(shù)據(jù)訪問的空間局部性,而離散訪問不具有這種空間局部性,所述的空間局部性是指數(shù)組訪問過程中,在訪問了內(nèi)存區(qū)的一個位置,那么內(nèi)存區(qū)的下一個位置也將會被訪問到。對區(qū)間訪問關(guān)聯(lián)性分析的目的是分析區(qū)間訪問之間的關(guān)系,確定多個區(qū)間訪問是否可以共用緩沖,達(dá)到減少緩沖空間需求和減少直接內(nèi)存存取(DMA Direct MemoryAccess)次數(shù)的目的。在本實(shí)施例中,對于區(qū)間訪問,通過“expr&CONST”或者“expr%C0NST”這兩種運(yùn)算,算出數(shù)組變量訪問的最大數(shù)據(jù)區(qū)范圍,expr為循環(huán)的索引變量,CONST為一個較小的整數(shù)常數(shù),與系統(tǒng)存儲架構(gòu)有關(guān)。對于區(qū)間訪問,所述的關(guān)聯(lián)類型包括包含、相交、相離和不確定。對于連續(xù)訪問所述的關(guān)聯(lián)類型包括讀讀相關(guān)、讀寫相關(guān)、讀寫無關(guān)、寫寫相關(guān)、多讀一寫、多讀。本實(shí)施例數(shù)組多引用訪問的分塊方法通過編譯器中的自動分析裝置確定變量之間的關(guān)聯(lián)關(guān)系,計(jì)算出關(guān)聯(lián)數(shù)組之間的關(guān)聯(lián)距離。對于離散訪問,構(gòu)建離散訪問同類項(xiàng),即用同名項(xiàng)組中具有離散訪問屬性的項(xiàng)構(gòu)成離散訪問同類項(xiàng)鏈,如果同名項(xiàng)組中只有讀存在,掃描同類項(xiàng),如果同名項(xiàng)組中存在寫,而且只存在一類同類項(xiàng),緩沖可共用,否則,將所有同類項(xiàng)中的可優(yōu)化標(biāo)記全部置為不可優(yōu)化。·
步驟S204,在所述循環(huán)信息鏈表中填寫數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離。具體為將上述步驟中分析所得的區(qū)間訪問、連續(xù)訪問和離散訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離填寫到對應(yīng)的循環(huán)信息鏈表。步驟S205,根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)。通過前述步驟中所獲得的數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,可以計(jì)算獲得保證程序運(yùn)行過程中正確語義的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。但在暫存器和主存共用的存儲架構(gòu)下,受限于硬件結(jié)構(gòu)的制約,數(shù)組多引用訪問的分塊方法存在更為復(fù)雜的依賴關(guān)系,如果不充分考慮結(jié)合存儲系統(tǒng)的硬件結(jié)構(gòu),雖然可以保證程序語義的正確,但可能帶來優(yōu)化效率低和優(yōu)化無意義的后果。例如,當(dāng)數(shù)組分塊參數(shù)過小,遠(yuǎn)小于異步數(shù)據(jù)塊傳輸?shù)囊粋€內(nèi)存行的大小時(shí),對數(shù)組訪問優(yōu)化本身而言無實(shí)際意義,異步數(shù)據(jù)塊傳輸帶來的優(yōu)化效率極低;或者緩沖大小參數(shù)過大,超出了片上暫存器的容量,那么這種優(yōu)化也無實(shí)際意義。本實(shí)施例中,所述計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)包括根據(jù)數(shù)組訪問的關(guān)聯(lián) 類型和關(guān)聯(lián)距離計(jì)算正確語義下的數(shù)組分塊參數(shù)和緩沖大小參數(shù);結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征優(yōu)化所述數(shù)組分塊參數(shù)和緩沖大小參數(shù)。計(jì)算方法為根據(jù)優(yōu)化規(guī)則和系統(tǒng)參數(shù)定義的規(guī)貝U。計(jì)算原則為在不影響程序語義正確的前提下,計(jì)算所有滿足發(fā)揮系統(tǒng)訪存帶寬的可能分塊參數(shù)和緩沖大小。關(guān)聯(lián)距離和關(guān)聯(lián)類型引入計(jì)算方法中確保所選的數(shù)組分塊參數(shù)和緩沖大小參數(shù)不影響程序語義的正確性,存儲系統(tǒng)結(jié)構(gòu)特征引入計(jì)算方法中確保了所選的這些參數(shù)能夠保證發(fā)揮系統(tǒng)效率,剔除無優(yōu)化價(jià)值的緩沖空間大小參數(shù)和數(shù)組分塊參數(shù),所述的存儲系統(tǒng)結(jié)構(gòu)特征包括內(nèi)存異步數(shù)據(jù)塊傳輸?shù)囊粋€內(nèi)存行大小和暫存器容量大小等。所以,本實(shí)施例的數(shù)組多引用訪問的分塊方法可以確保所獲得的數(shù)組分塊參數(shù)和緩沖大小參數(shù)在保證程序語義正確的前提下具有使用價(jià)值。步驟S206,輸出數(shù)組訪問的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。所述的數(shù)組分塊參數(shù)和緩沖大小參數(shù)在輸出后,供后續(xù)編譯器優(yōu)化選擇或者用戶優(yōu)化選擇。對應(yīng)于上述數(shù)組多引用訪問的分塊方法,本實(shí)施例還提供一種數(shù)組多引用訪問的分塊裝置,請參考圖3,圖3為本實(shí)施例的數(shù)組多引用訪問的分塊裝置。所述數(shù)組多引用訪問的分塊裝置包括創(chuàng)建單元301,更新單元302,分析單元303,填寫單元304,計(jì)算單元305,輸出單元306。所述創(chuàng)建單元301,用于在遍歷應(yīng)用程序控制圖后為每個循環(huán)創(chuàng)建循環(huán)信息鏈表,分析所述循環(huán),收集變量訪存信息并保存在所述循環(huán)信息鏈表中。所述更新單元302,用于在創(chuàng)建單元301收集變量訪存信息并添加到所述循環(huán)信息鏈表后,分析函數(shù)調(diào)用關(guān)系,利用調(diào)用過程間信息整理更新所述循環(huán)信息鏈表。所述分析單元303,用于在創(chuàng)建單元301收集變量訪存信息并添加到所述循環(huán)信息鏈表后,分析所述循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離。所述數(shù)組訪問的關(guān)聯(lián)關(guān)系與所述變量訪存信息具有對應(yīng)關(guān)系。所述的分析單元303分析各循環(huán)內(nèi)數(shù)組訪問模式包括先根據(jù)語法樹確定數(shù)組的訪問表達(dá)式,再根據(jù)數(shù)組的訪問表達(dá)式判斷數(shù)組訪問模式。所述填寫單元304,用于在所述循環(huán)信息鏈表中填寫數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離。所述計(jì)算單元305,用于在填寫單元在循環(huán)信息鏈表中填寫數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離后,根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)。本實(shí)施例中,所述計(jì)算單元305先根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離計(jì)算正確語義下的數(shù)組分塊參數(shù)和緩沖大小參數(shù);再結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征優(yōu)化所述數(shù)組分塊參數(shù)和緩沖大小參數(shù)。所述輸出單元306,用于在計(jì)算單元305計(jì)算出數(shù)組分塊參數(shù)和緩沖大小參數(shù)后,輸出數(shù)組訪問的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。本發(fā)明雖 然已以較佳實(shí)施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)對本發(fā)明技術(shù)方案做出可能的變動和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何簡單修改、等同變化及修飾,均屬于本發(fā)明技術(shù)方案的保護(hù)范圍。
權(quán)利要求
1.一種數(shù)組多引用訪問的分塊方法,其特征在于,包括 分析程序內(nèi)各循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離; 根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù); 輸出數(shù)組訪問的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。
2.如權(quán)利要求I所述的數(shù)組多引用訪問的分塊方法,其特征在于,所述計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)包括 根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離計(jì)算正確語義下的數(shù)組分塊參數(shù)和緩沖大小參數(shù); 結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征優(yōu)化所述數(shù)組分塊參數(shù)和緩沖大小參數(shù)。
3.如權(quán)利要求I所述的數(shù)組多引用訪問的分塊方法,其特征在于,所述的分析各循環(huán)內(nèi)數(shù)組訪問模式包括先根據(jù)語法樹確定數(shù)組的訪問表達(dá)式,再根據(jù)數(shù)組的訪問表達(dá)式判斷數(shù)組訪問模式。
4.如權(quán)利要求I所述的數(shù)組多引用訪問的分塊方法,其特征在于,所述數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離保存在循環(huán)信息鏈表中。
5.如權(quán)利要求4所述的數(shù)組多引用訪問的分塊方法,其特征在于,所述循環(huán)信息鏈表為遍歷應(yīng)用程序控制圖后為每個循環(huán)所創(chuàng)建,所述循環(huán)信息鏈表中還保存有分析所述循環(huán)后收集的變量訪存信息。
6.如權(quán)利要求5所述的數(shù)組多引用訪問的分塊方法,其特征在于,所述數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離與所述變量訪存信息具有對應(yīng)關(guān)系。
7.—種數(shù)組多引用訪問的分塊裝置,其特征在于,包括 分析單元,適于分析程序內(nèi)各循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離; 計(jì)算單元,適于在分析單元分析出數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離后,根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù); 輸出單元,適于在計(jì)算單元計(jì)算出數(shù)組分塊參數(shù)和緩沖大小參數(shù)后,輸出所述數(shù)組分塊參數(shù)和所述緩沖大小參數(shù)。
8.如權(quán)利要求7所述的數(shù)組多引用訪問的分塊裝置,其特征在于,所述的計(jì)算單元計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù)包括 根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離計(jì)算正確語義下的數(shù)組分塊參數(shù)和緩沖大小參數(shù); 結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征優(yōu)化所述數(shù)組分塊參數(shù)和緩沖大小參數(shù)。
9.如權(quán)利要求7所述的數(shù)組多引用訪問的分塊裝置,其特征在于,所述的分析單元分析各循環(huán)內(nèi)數(shù)組訪問模式包括先根據(jù)語法樹確定數(shù)組的訪問表達(dá)式,再根據(jù)數(shù)組的訪問表達(dá)式判斷數(shù)組訪問模式。
10.如權(quán)利要求7所述的數(shù)組多引用訪問的分塊裝置,其特征在于,還包括填寫單元,適于在所述分析單元根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離分析后,將所述關(guān)聯(lián)類型和關(guān)聯(lián)距離系保存在循環(huán)信息鏈表中。
11.如權(quán)利要求10所述的數(shù)組多引用訪問的分塊裝置,其特征在于,還包括創(chuàng)建單元,適于在遍歷應(yīng)用程序控制圖后為每個循環(huán)創(chuàng)建循環(huán)信息鏈表,分析所述循環(huán),收集變量訪存信息并保存在所述循環(huán)信息鏈表中。
12.如權(quán)利要求11所述的數(shù)組多引用訪問的分塊裝置,其特征在于,所述數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離與所述變量訪存信息具有對應(yīng)關(guān)系。
全文摘要
一種數(shù)組多引用訪問的分塊方法和裝置,其中,所述數(shù)組多引用訪問的分塊方法包括分析程序內(nèi)各循環(huán)內(nèi)的數(shù)組訪問模式,根據(jù)所述數(shù)組訪問模式進(jìn)行各循環(huán)內(nèi)數(shù)組訪問的關(guān)聯(lián)關(guān)系分析,所述關(guān)聯(lián)關(guān)系包括關(guān)聯(lián)類型和關(guān)聯(lián)距離;根據(jù)數(shù)組訪問的關(guān)聯(lián)類型和關(guān)聯(lián)距離,結(jié)合存儲系統(tǒng)結(jié)構(gòu)特征計(jì)算數(shù)組分塊參數(shù)和緩沖大小參數(shù);輸出數(shù)組訪問的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。本發(fā)明的數(shù)組多引用訪問的分塊方法分析了應(yīng)用程序中多個引用訪問之間的相關(guān)性,又考慮了系統(tǒng)存儲架構(gòu)的結(jié)構(gòu)限制,確??梢垣@得有效的數(shù)組分塊參數(shù)和緩沖大小參數(shù)。
文檔編號G06F9/30GK102929580SQ20121044205
公開日2013年2月13日 申請日期2012年11月6日 優(yōu)先權(quán)日2012年11月6日
發(fā)明者劉勇, 文延華, 方燕飛, 權(quán)建校, 何王全, 王珊珊 申請人:無錫江南計(jì)算技術(shù)研究所