專利名稱:支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于嵌入式可重構(gòu)技術(shù)領(lǐng)域,具體涉及一種支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng)。
背景技術(shù):
可重構(gòu)系統(tǒng)因兼具硬件的高效率和軟件的靈活性,是嵌入式媒體處理、無(wú)線通信等應(yīng)用領(lǐng)域的理想架構(gòu)選擇。可重構(gòu)陣列是可重構(gòu)系統(tǒng)的主要運(yùn)算部件,擁有海量的計(jì)算資源和充足的路由資源,通過(guò)對(duì)其運(yùn)算單元的功能和路由進(jìn)行合理配置,可以充分的發(fā)掘應(yīng)用的數(shù)據(jù)并行性和指令并行性來(lái)提高性能。相對(duì)于通用處理器,可重構(gòu)陣列在處理計(jì)算密集型應(yīng)用方面的優(yōu)勢(shì)明顯。媒體處理等計(jì)算密集型應(yīng)用對(duì)數(shù)據(jù)通量的需求很大,在可重構(gòu)陣列具有豐富計(jì)算資源的條件下,數(shù)據(jù)訪存往往是制約其性能提高的瓶頸,因此能否提供足夠大的有效帶寬來(lái)匹配陣列的計(jì)算能力成為決定可重構(gòu)陣列性能的關(guān)鍵因素??芍貥?gòu)系統(tǒng)通常擁有多種片上存儲(chǔ)器,用于存儲(chǔ)全局輸入輸出數(shù)據(jù)以及多個(gè)計(jì)算任務(wù)間的中間數(shù)據(jù),并可以被陣列中具有訪存功能的可重構(gòu)單元訪問(wèn)。在用可重構(gòu)系統(tǒng)進(jìn)行計(jì)算密集型應(yīng)用的加速時(shí),陣列中的可重構(gòu)單元會(huì)通過(guò)執(zhí)行加載/存儲(chǔ)操作對(duì)片上存儲(chǔ)器進(jìn)行大量的并行讀寫,而由于片上存儲(chǔ)器的端口數(shù)限制會(huì)導(dǎo)致頻繁的訪存沖突,訪存請(qǐng)求往往無(wú)法及時(shí)被處理,陣列在相當(dāng)多的時(shí)間處于停頓狀態(tài)。這導(dǎo)致可重構(gòu)系統(tǒng)的計(jì)算性能嚴(yán)重受制于片上存儲(chǔ)器的訪問(wèn)效率。針對(duì)提高訪問(wèn)可重構(gòu)系統(tǒng)的片上存儲(chǔ)器的效率的問(wèn)題,當(dāng)前的主要解決方法有以下兩種
O使用存儲(chǔ)隊(duì)列機(jī)制來(lái)提高訪問(wèn)片上存儲(chǔ)器的效率。這種方案使用一種“訪存隊(duì)列”來(lái)實(shí)現(xiàn)多個(gè)訪存行為的流水化,并把訪存延時(shí)作為編譯器可見(jiàn)的參數(shù),依賴編譯器來(lái)合理調(diào)度訪存操作。這種方法的主要不足是硬件實(shí)現(xiàn)較復(fù)雜,硬件開(kāi)銷較大,且對(duì)編譯器的調(diào)度能力提出了較高要求。2)在陣列實(shí)際使用所需數(shù)據(jù)前,提前通過(guò)其他模塊把數(shù)據(jù)從存儲(chǔ)器中取出并搬運(yùn)至數(shù)據(jù)輸入FIFO (First In First Out,先入先出隊(duì)列)或巾貞緩沖中。這種方案采用了預(yù)取的機(jī)制來(lái)重疊數(shù)據(jù)的搬運(yùn)與陣列的計(jì)算,以此隱藏訪存延時(shí)。這種方法的不足是,當(dāng)前的編譯技術(shù)難以對(duì)這種預(yù)取機(jī)制進(jìn)行有效的調(diào)度,因而往往依賴編程人員分析算法的數(shù)據(jù)流特點(diǎn),并由編程人員在程序中顯式指定數(shù)據(jù)的預(yù)取操作,加重了編程人員的負(fù)擔(dān)。因此,當(dāng)前的提高可重構(gòu)系統(tǒng)片上存儲(chǔ)器訪問(wèn)效率的方法存在硬件實(shí)現(xiàn)復(fù)雜,編譯支持不足等問(wèn)題。
發(fā)明內(nèi)容
發(fā)明目的針對(duì)上述現(xiàn)有技術(shù)存在的問(wèn)題和不足,本發(fā)明的目的是提供一種支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),通過(guò)采用動(dòng)態(tài)自啟發(fā)的預(yù)取方法,同時(shí)結(jié)合傳統(tǒng)的數(shù)據(jù)重用方法,可以用較少的資源實(shí)現(xiàn)可重構(gòu)陣列對(duì)片上存儲(chǔ)器中數(shù)據(jù)的自發(fā)的預(yù)取和重用,有效的提高了可重構(gòu)陣列訪問(wèn)片上存儲(chǔ)器的效率,避免了當(dāng)前的可重構(gòu)陣列對(duì)片上存儲(chǔ)器的訪問(wèn)優(yōu)化技術(shù)中存在的缺乏編譯器支持的問(wèn)題。技術(shù)方案為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用的技術(shù)方案為一種支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),該可重構(gòu)系統(tǒng)包括可重構(gòu)陣列、數(shù)據(jù)預(yù)取與重用模塊和數(shù)據(jù)流控制模塊;
所述可重構(gòu)陣列通過(guò)其內(nèi)部的可重構(gòu)單元執(zhí)行的數(shù)據(jù)訪問(wèn)指令,向所述數(shù)據(jù)預(yù)取與重用模塊發(fā)出數(shù)據(jù)訪問(wèn)請(qǐng)求,并接收數(shù)據(jù)預(yù)取與重用模塊返回的數(shù)據(jù);
所述數(shù)據(jù)預(yù)取與重用模塊用于接收并記錄可重構(gòu)陣列發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求,根據(jù)所記錄的數(shù)據(jù)訪問(wèn)請(qǐng)求動(dòng)態(tài)生成預(yù)取地址;同時(shí),接收并緩存預(yù)取到的數(shù)據(jù)和上一次被可重構(gòu)陣列訪問(wèn)過(guò)的地址和對(duì)應(yīng)的數(shù)據(jù),判斷可重構(gòu)陣列當(dāng)前所要訪問(wèn)的數(shù)據(jù)是否已被緩存,若已被緩存,則直接將該數(shù)據(jù)發(fā)送給可重構(gòu)陣列,若沒(méi)有被緩存,則把當(dāng)前的數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)流控制模塊;
所述數(shù)據(jù)流控制模塊用于接收所述數(shù)據(jù)預(yù)取與重用模塊發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求,對(duì)片上存儲(chǔ)器進(jìn)行實(shí)際的數(shù)據(jù)訪問(wèn),然后將所取到的數(shù)據(jù)發(fā)送至數(shù)據(jù)預(yù)取與重用模塊。進(jìn)一步的,所述數(shù)據(jù)預(yù)取與重用模塊包括
地址生成子模塊,用于地址比較并產(chǎn)生預(yù)取地址;數(shù)據(jù)預(yù)取子模塊,用于產(chǎn)生預(yù)取控制信號(hào);數(shù)據(jù)重用子模塊,用于寄存當(dāng)前數(shù)據(jù)和預(yù)取數(shù)據(jù),判斷訪問(wèn)地址反饋重用數(shù)據(jù);以及邏輯控制子模塊,用于監(jiān)視和控制預(yù)取和重用的工作過(guò)程;
其中,所述地址生成子模塊與數(shù)據(jù)預(yù)取子模塊、數(shù)據(jù)重用子模塊和邏輯控制子模塊通信聯(lián)接;數(shù)據(jù)預(yù)取子模塊與地址生成子模塊和邏輯控制子模塊通信聯(lián)接;數(shù)據(jù)重用子模塊與地址生成子模塊和邏輯控制子模塊通信聯(lián)接。進(jìn)一步的,所述地址生成子模塊根據(jù)邏輯控制子模塊發(fā)出的使能信號(hào),連續(xù)記錄可重構(gòu)陣列最近兩次發(fā)起的數(shù)據(jù)訪問(wèn)地址,根據(jù)記錄的地址進(jìn)行一次減法和一次加法計(jì)算,動(dòng)態(tài)生成預(yù)取地址,并將最近一次數(shù)據(jù)訪問(wèn)地址和預(yù)取地址輸出給數(shù)據(jù)預(yù)取子模塊和數(shù)據(jù)重用子模塊。預(yù)取地址具體計(jì)算方法如下
設(shè)最近兩次訪存地址分別為current_addr、previous_addr,則通過(guò)如下計(jì)算,得到預(yù)取地址/Tre/eictat/i/r
prefetch_addr = curren t_addr + {curren t_addr _ previous_addr)
進(jìn)一步的,所述數(shù)據(jù)預(yù)取子模塊根據(jù)邏輯控制子模塊發(fā)出的使能信號(hào),在數(shù)據(jù)流控制模塊的傳輸空閑階段,根據(jù)地址生成子模塊產(chǎn)生的預(yù)取地址向數(shù)據(jù)流控制模塊發(fā)出數(shù)據(jù)訪問(wèn)請(qǐng)求。進(jìn)一步的,所述數(shù)據(jù)重用子模塊根據(jù)邏輯控制子模塊發(fā)出的使能信號(hào),寄存當(dāng)前數(shù)據(jù)和預(yù)取數(shù)據(jù);同時(shí),接收可重構(gòu)陣列下一次發(fā)出的數(shù)據(jù)訪問(wèn)地址并判斷該地址所對(duì)應(yīng)的數(shù)據(jù)是否已經(jīng)被數(shù)據(jù)重用子模塊寄存,若已被寄存,則直接將該數(shù)據(jù)發(fā)送給可重構(gòu)陣列,若沒(méi)有被寄存,則把該數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)流控制模塊。進(jìn)一步的,所述寄存當(dāng)前數(shù)據(jù)為更新可重構(gòu)陣列最近一次發(fā)起的數(shù)據(jù)訪問(wèn)請(qǐng)求所取到的數(shù)據(jù);所述寄存預(yù)取數(shù)據(jù)為更新數(shù)據(jù)預(yù)取子模塊最近一次發(fā)起的數(shù)據(jù)訪問(wèn)請(qǐng)求所取到的數(shù)據(jù)。
進(jìn)一步的,所述判斷該地址所對(duì)應(yīng)的數(shù)據(jù)是否已經(jīng)被數(shù)據(jù)重用子模塊寄存,其判斷方法為分別對(duì)兩對(duì)地址輸入進(jìn)行比較,這兩對(duì)地址輸入如下
第一對(duì)地址輸入為當(dāng)前可重構(gòu)陣列發(fā)起的數(shù)據(jù)訪問(wèn)地址和最近一次數(shù)據(jù)訪問(wèn)地址; 第二對(duì)地址輸入為當(dāng)前可重構(gòu)陣列發(fā)起的數(shù)據(jù)訪問(wèn)地址和預(yù)取地址;
若所述兩對(duì)地址中有任何一對(duì)地址相同,則判斷該地址所對(duì)應(yīng)的數(shù)據(jù)已經(jīng)被數(shù)據(jù)重用子模塊寄存,滿足數(shù)據(jù)重用要求,若所述兩對(duì)地址均不同,則判斷該地址所對(duì)應(yīng)的數(shù)據(jù)未被數(shù)據(jù)重用子模塊寄存。進(jìn)一步的,所述邏輯控制子模塊用于監(jiān)視當(dāng)前的數(shù)據(jù)訪問(wèn)行為,并控制地址生成子模塊、數(shù)據(jù)預(yù)取子模塊和數(shù)據(jù)重用子模塊工作過(guò)程,實(shí)現(xiàn)數(shù)據(jù)預(yù)取與重用模塊在可重構(gòu)系統(tǒng)中的協(xié)同工作。進(jìn)一步的,所述邏輯控制子模塊按照如下規(guī)則設(shè)置數(shù)據(jù)預(yù)取與重用模塊的狀態(tài) 在可重構(gòu)陣列尚未發(fā)起過(guò)數(shù)據(jù)訪問(wèn)請(qǐng)求的情況下,數(shù)據(jù)預(yù)取與重用模塊處于IDLE (空
閑)態(tài),此時(shí)若可重構(gòu)陣列發(fā)起數(shù)據(jù)訪問(wèn)請(qǐng)求,則數(shù)據(jù)預(yù)取與重用模塊的狀態(tài)被設(shè)置為MISS(不命中)態(tài);
在MISS態(tài)下,聯(lián)接地址生成子模塊和數(shù)據(jù)重用子模塊的使能信號(hào)被設(shè)為有效,當(dāng)可重構(gòu)陣列再一次執(zhí)行數(shù)據(jù)訪問(wèn)請(qǐng)求時(shí),數(shù)據(jù)重用子模塊進(jìn)行判斷,若滿足數(shù)據(jù)重用要求則保持MISS態(tài),否則數(shù)據(jù)預(yù)取與重用模塊的狀態(tài)被設(shè)置為PREFETCH (預(yù)取)態(tài);
在PREFETCH態(tài)下,數(shù)據(jù)預(yù)取子模塊的使能信號(hào)被設(shè)為有效,并把地址生成子模塊產(chǎn)生的預(yù)取地址發(fā)送給數(shù)據(jù)流控制流模塊,等待數(shù)據(jù)流控制模塊完成訪存行為,數(shù)據(jù)預(yù)取與重用模塊進(jìn)入WAIT (等待)態(tài);
在WAIT態(tài)下,當(dāng)可重構(gòu)陣列執(zhí)行數(shù)據(jù)訪問(wèn)請(qǐng)求時(shí),有如下三種結(jié)果第一種,當(dāng)前的數(shù)據(jù)訪問(wèn)地址不能滿足數(shù)據(jù)重用要求,這種情況下數(shù)據(jù)預(yù)取與重用模塊被設(shè)置為IDLE態(tài);第二種,當(dāng)前的數(shù)據(jù)訪問(wèn)地址與數(shù)據(jù)重用子模塊中的最近一次數(shù)據(jù)訪問(wèn)地址相等,這種情況下數(shù)據(jù)預(yù)取與重用模塊保持WAIT態(tài);第三種,當(dāng)前的數(shù)據(jù)訪問(wèn)地址與數(shù)據(jù)重用子模塊中的預(yù)取地址相等,這種情況下數(shù)據(jù)預(yù)取與重用模塊被設(shè)為PREFETCH態(tài)。有益效果本發(fā)明提出的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),用較少的資源實(shí)現(xiàn)了對(duì)可重構(gòu)系統(tǒng)的片上存儲(chǔ)器中數(shù)據(jù)的預(yù)取和重用功能,可以有效的提高可重構(gòu)陣列訪問(wèn)片上存儲(chǔ)器的效率。本發(fā)明所提出的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其對(duì)片上存儲(chǔ)器中數(shù)據(jù)的預(yù)取和重用是硬件自發(fā)的行為,對(duì)編譯器來(lái)說(shuō)是不可見(jiàn)的,這就避免了當(dāng)前可重構(gòu)陣列對(duì)片上存儲(chǔ)器的訪問(wèn)優(yōu)化技術(shù)中存在的缺乏編譯器支持的問(wèn)題。本發(fā)明實(shí)現(xiàn)的預(yù)取功能有助于實(shí)現(xiàn)訪存與運(yùn)算的重疊進(jìn)行,提高資源利用率。本發(fā)明實(shí)現(xiàn)的重用功能有助于減少不必要的存儲(chǔ)器訪問(wèn),緩解訪存瓶頸。
圖1是本發(fā)明支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng)的結(jié)構(gòu)示意 圖2是本發(fā)明的數(shù)據(jù)預(yù)取與重用模塊的工作流程 圖3是本發(fā)明的數(shù)據(jù)預(yù)取與重用模塊的結(jié)構(gòu)示意 圖4是本發(fā)明的數(shù)據(jù)預(yù)取與重用模塊的狀態(tài)轉(zhuǎn)換示意圖。
圖中有可重構(gòu)陣列1、數(shù)據(jù)預(yù)取與重用模塊2、數(shù)據(jù)流控制模塊3、可重構(gòu)單元4、地址生成子模塊5、數(shù)據(jù)預(yù)取子模塊6、數(shù)據(jù)重用子模塊7、邏輯控制子模塊8。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說(shuō)明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明的各種等價(jià)形式的修改均落于本申請(qǐng)所附權(quán)利要求所限定的范圍。本發(fā)明所提出的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng)如圖1所示,該可重構(gòu)系統(tǒng)包括可重構(gòu)陣列1、數(shù)據(jù)預(yù)取與重用模塊2和數(shù)據(jù)流控制模塊3。可重構(gòu)陣列I是可重構(gòu)系統(tǒng)的主要運(yùn)算模塊,其由若干可重構(gòu)單元4組成??芍貥?gòu)陣列通過(guò)其內(nèi)部的可重構(gòu)單元4執(zhí)行的數(shù)據(jù)訪問(wèn)指令,向數(shù)據(jù)預(yù)取與重用模塊2發(fā)出數(shù)據(jù)訪問(wèn)請(qǐng)求,并接收數(shù)據(jù)預(yù)取與重用模塊2返回的數(shù)據(jù)。數(shù)據(jù)流控制模塊3用于接收數(shù)據(jù)預(yù)取與重用模塊2發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求,對(duì)片上存儲(chǔ)器進(jìn)行實(shí)際的訪問(wèn),然后將所取到的數(shù)據(jù)發(fā)送至數(shù)據(jù)預(yù)取與重用模塊2。數(shù)據(jù)預(yù)取與重用模塊2負(fù)責(zé)進(jìn)行數(shù)據(jù)預(yù)取與重用的管理,其工作流程如圖2所示,其接收并記錄可重構(gòu)陣列I發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求,根據(jù)所記錄的信息動(dòng)態(tài)生成數(shù)據(jù)預(yù)取地址,并根據(jù)預(yù)取地址向數(shù)據(jù)流控制模塊發(fā)出數(shù)據(jù)訪問(wèn)請(qǐng)求;同時(shí),接收并緩存預(yù)取到的數(shù)據(jù)和上一次被可重構(gòu)陣列I訪問(wèn)過(guò)的數(shù)據(jù),判斷可重構(gòu)陣列I當(dāng)前所要訪問(wèn)的數(shù)據(jù)是否已被緩存,若已被緩存,則直接將該數(shù)據(jù)發(fā)送給可重構(gòu)陣列1,若沒(méi)有被緩存,則把當(dāng)前的數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)流控制模塊3。如圖3所示,數(shù)據(jù)預(yù)取與重用模塊2包括四個(gè)子模塊地址生成子模塊5用于地址比較并產(chǎn)生預(yù)取地址,數(shù)據(jù)預(yù)取子模塊6用于產(chǎn)生預(yù)取控制信號(hào),數(shù)據(jù)重用子模塊7用于寄存當(dāng)前數(shù)據(jù)和預(yù)取數(shù)據(jù),判斷訪問(wèn)地址反饋重用數(shù)據(jù),邏輯控制子模塊8用于監(jiān)視和控制預(yù)取和重用的工作過(guò)程;其中,地址生成子模塊5與數(shù)據(jù)預(yù)取子模塊6、數(shù)據(jù)重用子模塊7和邏輯控制子模塊8通信聯(lián)接;數(shù)據(jù)預(yù)取子模塊6與地址生成子模塊5和邏輯控制子模塊8通信聯(lián)接;數(shù)據(jù)重用子模塊7與地址生成子模塊5和邏輯控制子模塊8通信聯(lián)接;邏輯控制子模塊8分別與數(shù)據(jù)預(yù)取與重用模塊2的所有其他子模塊聯(lián)接。以下舉例說(shuō)明數(shù)據(jù)預(yù)取與重用模塊2的工作方式。假設(shè)可重構(gòu)陣列I發(fā)起的數(shù)據(jù)加載操作的地址依次為0x00,0x00, 0x04, 0x08, 0x10。數(shù)據(jù)預(yù)取與重用模塊2的狀態(tài)轉(zhuǎn)換規(guī)則如圖4所示,在可重構(gòu)陣列I尚未發(fā)起過(guò)數(shù)據(jù)加載操作的情況下,數(shù)據(jù)預(yù)取與重用模塊2的狀態(tài)為IDLE態(tài)。當(dāng)可重構(gòu)陣列I發(fā)起首次數(shù)據(jù)加載操作時(shí),數(shù)據(jù)預(yù)取與重用模塊2的狀態(tài)被邏輯控制子模塊8設(shè)置為MISS態(tài),在MISS態(tài)下,地址生成子模塊5和數(shù)據(jù)重用子模塊7的使能信號(hào)被設(shè)為有效,同時(shí),本次訪存地址0x00和所取到的數(shù)據(jù)分別被數(shù)據(jù)重用子模塊7寄存。
可重構(gòu)陣列I第二次發(fā)起數(shù)據(jù)加載操作,訪存地址為0x00,數(shù)據(jù)重用子模塊7對(duì)當(dāng)前訪存地址0x00和上一次訪存地址0x00進(jìn)行判斷比較,判斷結(jié)果為當(dāng)前訪存地址0x00滿足數(shù)據(jù)重用要求,因此寄存在數(shù)據(jù)重用子模塊7中的上次訪存所取數(shù)據(jù)被立刻返回給可重構(gòu)陣列1,數(shù)據(jù)預(yù)取與重用模塊2的狀態(tài)保持MISS態(tài)。本次訪存地址0x00被數(shù)據(jù)重用子模塊7寄存。
可重構(gòu)陣列I第三次發(fā)起數(shù)據(jù)加載操作,訪存地址為0x04,數(shù)據(jù)重用子模塊7對(duì)當(dāng)前訪存地址0x04和上一次的訪存地址0x00進(jìn)行判斷比較,判斷結(jié)果為當(dāng)前訪存地址0x04不滿足數(shù)據(jù)重用的要求,數(shù)據(jù)預(yù)取與重用模塊2的狀態(tài)被設(shè)置為PREFETCH態(tài)。當(dāng)前訪存地址0x04以及所取到的數(shù)據(jù)被數(shù)據(jù)重用子模塊7寄存,地址生成子模塊5生成預(yù)取地址0x08。在PREFETCH態(tài)下,數(shù)據(jù)預(yù)取子模塊6的使能信號(hào)被設(shè)為有效,根據(jù)地址生成子模塊5生成的預(yù)取地址0x08向數(shù)據(jù)流控制模塊3發(fā)起數(shù)據(jù)訪存請(qǐng)求,并把所預(yù)取到的數(shù)據(jù)寄存在數(shù)據(jù)重用子模塊7中,發(fā)起預(yù)取后,數(shù)據(jù)預(yù)取與重用模塊2進(jìn)入WAIT態(tài)??芍貥?gòu)陣列I第四次發(fā)起數(shù)據(jù)加載操作,訪存地址為0x08,數(shù)據(jù)重用子模塊7對(duì)當(dāng)前訪存地址0x08和上一次的訪存地址0x04以及預(yù)取地址0x08進(jìn)行判斷比較,判斷結(jié)果為當(dāng)前訪存地址與預(yù)取地址相等,這表明數(shù)據(jù)預(yù)取命中,寄存在數(shù)據(jù)重用子模塊7中的預(yù)取數(shù)據(jù)被立刻返回給可重構(gòu)陣列I。因?yàn)轭A(yù)取命中,數(shù)據(jù)預(yù)取與重用模塊2被設(shè)為PREFETCH態(tài)。同時(shí)當(dāng)前訪存地址0x08以及本次訪存數(shù)據(jù)被數(shù)據(jù)重用子模塊7寄存,地址生成子模塊5生成預(yù)取地址OxOC。在PREFETCH態(tài)下,數(shù)據(jù)預(yù)取子模塊6利用地址生成子模塊5產(chǎn)生的預(yù)取地址OxOC向數(shù)據(jù)流控制模塊3發(fā)起數(shù)據(jù)訪問(wèn)請(qǐng)求并把所預(yù)取到的數(shù)據(jù)寄存在數(shù)據(jù)重用子模塊7中,發(fā)起預(yù)取后,數(shù)據(jù)預(yù)取與重用模塊2進(jìn)入WAIT態(tài)??芍貥?gòu)陣列I第五次發(fā)起數(shù)據(jù)加載操作,訪存地址為0x10,數(shù)據(jù)重用子模塊7對(duì)當(dāng)前訪存地址0x10和上一次的訪存地址0x08以及預(yù)取地址OxOC進(jìn)行判斷比較,判斷結(jié)果為預(yù)取和重用都失效,數(shù)據(jù)預(yù)取與重用模塊2被設(shè)置為IDLE態(tài)。作為對(duì)比實(shí)驗(yàn),設(shè)直了對(duì)比驗(yàn)證系統(tǒng)A、對(duì)比驗(yàn)證系統(tǒng)B。其中,對(duì)比驗(yàn)證系統(tǒng)A,即傳統(tǒng)的不支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng)。對(duì)比驗(yàn)證系統(tǒng)B,即本發(fā)明所提出的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,采用同樣的數(shù)字信號(hào)處理核心DSPStone作為測(cè)試矢量,對(duì)比驗(yàn)證系統(tǒng)B可以獲得對(duì)比驗(yàn)證系統(tǒng)A的平均1. 73倍的性能提升,即可重構(gòu)系統(tǒng)計(jì)算效率平均提高了1. 73倍。
權(quán)利要求
1.一種支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,該可重構(gòu)系統(tǒng)包括可重構(gòu)陣列(I)、數(shù)據(jù)預(yù)取與重用模塊(2 )和數(shù)據(jù)流控制模塊(3 );所述可重構(gòu)陣列(I):通過(guò)其內(nèi)部的可重構(gòu)單元(4)執(zhí)行的數(shù)據(jù)訪問(wèn)指令,向所述數(shù)據(jù)預(yù)取與重用模塊(2)發(fā)出數(shù)據(jù)訪問(wèn)請(qǐng)求,并接收數(shù)據(jù)預(yù)取與重用模塊(2)返回的數(shù)據(jù);所述數(shù)據(jù)預(yù)取與重用模塊(2):用于接收并記錄可重構(gòu)陣列(I)發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求, 根據(jù)所記錄的數(shù)據(jù)訪問(wèn)請(qǐng)求動(dòng)態(tài)生成預(yù)取地址;同時(shí),接收并緩存預(yù)取到的數(shù)據(jù)和上一次被可重構(gòu)陣列(I)訪問(wèn)過(guò)的地址和對(duì)應(yīng)的數(shù)據(jù),判斷可重構(gòu)陣列(I)當(dāng)前所要訪問(wèn)的數(shù)據(jù)是否已被緩存,若已被緩存,則直接將該數(shù)據(jù)發(fā)送給可重構(gòu)陣列(I ),若沒(méi)有被緩存,則把當(dāng)前的數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)流控制模塊(3);所述數(shù)據(jù)流控制模塊(3):用于接收所述數(shù)據(jù)預(yù)取與重用模塊(2)發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求,對(duì)片上存儲(chǔ)器進(jìn)行實(shí)際的數(shù)據(jù)訪問(wèn),然后將所取到的數(shù)據(jù)發(fā)送至數(shù)據(jù)預(yù)取與重用模塊 (2)。
2.根據(jù)權(quán)利要求1所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述數(shù)據(jù)預(yù)取與重用模塊(2)包括地址生成子模塊(5),用于地址比較并產(chǎn)生預(yù)取地址;數(shù)據(jù)預(yù)取子模塊(6),用于產(chǎn)生預(yù)取控制信號(hào);數(shù)據(jù)重用子模塊(7),用于寄存當(dāng)前數(shù)據(jù)和預(yù)取數(shù)據(jù),判斷訪問(wèn)地址反饋重用數(shù)據(jù);以及邏輯控制子模塊(8),用于監(jiān)視和控制預(yù)取和重用的工作過(guò)程;其中,所述地址生成子模塊(5)與數(shù)據(jù)預(yù)取子模塊(6)、數(shù)據(jù)重用子模塊(7)和邏輯控制子模塊(8)通信聯(lián)接;數(shù)據(jù)預(yù)取子模塊(6)與地址生成子模塊(5)和邏輯控制子模塊(8) 通信聯(lián)接;數(shù)據(jù)重用子模塊(7)與地址生成子模塊(5)和邏輯控制子模塊(8)通信聯(lián)接。
3.根據(jù)權(quán)利要求2所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述地址生成子模塊(5)根據(jù)邏輯控制子模塊(8)發(fā)出的使能信號(hào),連續(xù)記錄可重構(gòu)陣列(I)最近兩次發(fā)起的數(shù)據(jù)訪問(wèn)地址,根據(jù)記錄的地址進(jìn)行一次減法和一次加法計(jì)算,動(dòng)態(tài)生成預(yù)取地址,并將最近一次數(shù)據(jù)訪問(wèn)地址和預(yù)取地址輸出給數(shù)據(jù)預(yù)取子模塊(6)和數(shù)據(jù)重用子模塊 (7)。
4.根據(jù)權(quán)利要求2所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述數(shù)據(jù)預(yù)取子模塊(6)根據(jù)邏輯控制子模塊(8)發(fā)出的使能信號(hào),在數(shù)據(jù)流控制模塊(3)的傳輸空閑階段,根據(jù)地址生成子模塊(5)產(chǎn)生的預(yù)取地址向數(shù)據(jù)流控制模塊(3)發(fā)出數(shù)據(jù)訪問(wèn)請(qǐng)求。
5.根據(jù)權(quán)利要求2所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述數(shù)據(jù)重用子模塊(7)根據(jù)邏輯控制子模塊(8)發(fā)出的使能信號(hào),寄存當(dāng)前數(shù)據(jù)和預(yù)取數(shù)據(jù);同時(shí),接收可重構(gòu)陣列(4)下一次發(fā)出的數(shù)據(jù)訪問(wèn)地址并判斷該地址所對(duì)應(yīng)的數(shù)據(jù)是否已經(jīng)被數(shù)據(jù)重用子模塊(7)寄存,若已被寄存,則直接將該數(shù)據(jù)發(fā)送給可重構(gòu)陣列(1),若沒(méi)有被寄存,則把該數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)流控制模塊(3 )。
6.根據(jù)權(quán)利要求5所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述寄存當(dāng)前數(shù)據(jù)為更新可重構(gòu)陣列(I)最近一次發(fā)起的數(shù)據(jù)訪問(wèn)請(qǐng)求所取到的數(shù)據(jù);所述寄存預(yù)取數(shù)據(jù)為更新數(shù)據(jù)預(yù)取子模塊(6)最近一次發(fā)起的數(shù)據(jù)訪問(wèn)請(qǐng)求所取到的數(shù)據(jù)。
7.根據(jù)權(quán)利要求5所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述判斷該地址所對(duì)應(yīng)的數(shù)據(jù)是否已經(jīng)被數(shù)據(jù)重用子模塊(7)寄存,其判斷方法為分別對(duì)兩對(duì)地址輸入進(jìn)行比較,這兩對(duì)地址輸入如下第一對(duì)地址輸入為當(dāng)前可重構(gòu)陣列(I)發(fā)起的數(shù)據(jù)訪問(wèn)地址和最近一次數(shù)據(jù)訪問(wèn)地址; 第二對(duì)地址輸入為當(dāng)前可重構(gòu)陣列(I)發(fā)起的數(shù)據(jù)訪問(wèn)地址和預(yù)取地址; 若所述兩對(duì)地址中有任何一對(duì)地址相同,則判斷該地址所對(duì)應(yīng)的數(shù)據(jù)已經(jīng)被數(shù)據(jù)重用子模塊(7)寄存,滿足數(shù)據(jù)重用要求,若所述兩對(duì)地址均不同,則判斷該地址所對(duì)應(yīng)的數(shù)據(jù)未被數(shù)據(jù)重用子模塊(7)寄存。
8.根據(jù)權(quán)利要求2所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述邏輯控制子模塊(8)用于監(jiān)視當(dāng)前的數(shù)據(jù)訪問(wèn)行為,并控制地址生成子模塊(5)、數(shù)據(jù)預(yù)取子模塊(6)和數(shù)據(jù)重用子模塊(7)工作過(guò)程,實(shí)現(xiàn)數(shù)據(jù)預(yù)取與重用模塊(2)在可重構(gòu)系統(tǒng)中的協(xié)同工作。
9.根據(jù)權(quán)利要求2所述的支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),其特征在于,所述邏輯控制子模塊(8)按照如下規(guī)則設(shè)置數(shù)據(jù)預(yù)取與重用模塊(2)的狀態(tài) 在可重構(gòu)陣列(I)尚未發(fā)起過(guò)數(shù)據(jù)訪問(wèn)請(qǐng)求的情況下,數(shù)據(jù)預(yù)取與重用模塊(2)處于IDLE態(tài),此時(shí)若可重構(gòu)陣列(I)發(fā)起數(shù)據(jù)訪問(wèn)請(qǐng)求,則數(shù)據(jù)預(yù)取與重用模塊(2)的狀態(tài)被設(shè)置為MISS態(tài); 在MISS態(tài)下,聯(lián)接地址生成子模塊(5)和數(shù)據(jù)重用子模塊(7)的使能信號(hào)被設(shè)為有效,當(dāng)可重構(gòu)陣列(I)再一次執(zhí)行數(shù)據(jù)訪問(wèn)請(qǐng)求時(shí),數(shù)據(jù)重用子模塊(7)進(jìn)行判斷,若滿足數(shù)據(jù)重用要求則保持MISS態(tài),否則數(shù)據(jù)預(yù)取與重用模塊(2)的狀態(tài)被設(shè)置為PREFETCH態(tài); 在PREFETCH態(tài)下,數(shù)據(jù)預(yù)取子模塊(6)的使能信號(hào)被設(shè)為有效,并把地址生成子模塊(5)產(chǎn)生的預(yù)取地址發(fā)送給數(shù)據(jù)流控制流模塊(3),等待數(shù)據(jù)流控制模塊(3)完成訪存行為,數(shù)據(jù)預(yù)取與重用模塊(2)進(jìn)入WAIT態(tài); 在WAIT態(tài)下,當(dāng)可重構(gòu)陣列(I)執(zhí)行數(shù)據(jù)訪問(wèn)請(qǐng)求時(shí),有如下三種結(jié)果第一種,當(dāng)前的數(shù)據(jù)訪問(wèn)地址不能滿足數(shù)據(jù)重用要求,這種情況下數(shù)據(jù)預(yù)取與重用模塊(2)被設(shè)置為IDLE態(tài);第二種,當(dāng)前的數(shù)據(jù)訪問(wèn)地址與數(shù)據(jù)重用子模塊(7)中的最近一次數(shù)據(jù)訪問(wèn)地址相等,這種情況下數(shù)據(jù)預(yù)取與重用模塊(2)保持WAIT態(tài);第三種,當(dāng)前的數(shù)據(jù)訪問(wèn)地址與數(shù)據(jù)重用子模塊(7)中的預(yù)取地址相等,這種情況下數(shù)據(jù)預(yù)取與重用模塊(2)被設(shè)為PREFETCH 態(tài)。
全文摘要
本發(fā)明公開(kāi)了一種支持?jǐn)?shù)據(jù)預(yù)取與重用的可重構(gòu)系統(tǒng),包括可重構(gòu)陣列、數(shù)據(jù)預(yù)取與重用模塊和數(shù)據(jù)流控制模塊。數(shù)據(jù)預(yù)取與重用模塊可以記錄數(shù)據(jù)流訪問(wèn)行為,采用動(dòng)態(tài)自啟發(fā)的預(yù)取方法,同時(shí)結(jié)合傳統(tǒng)的數(shù)據(jù)重用方法,能夠?qū)崿F(xiàn)如下兩種訪存管理方式比較最近兩次訪存地址,動(dòng)態(tài)計(jì)算得到預(yù)取地址,在數(shù)據(jù)傳輸?shù)目障叮瑢?shí)現(xiàn)數(shù)據(jù)預(yù)取操作;緩存現(xiàn)有數(shù)據(jù)和預(yù)取數(shù)據(jù),并判斷最新的訪存數(shù)據(jù)是否在重用數(shù)據(jù)空間,直接反饋緩存的數(shù)據(jù)。本發(fā)明可以達(dá)到良好的訪存效率,同時(shí)可以避免復(fù)雜的硬件實(shí)現(xiàn)和對(duì)編譯器的復(fù)雜要求。
文檔編號(hào)G06F9/38GK103019657SQ201210584470
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年12月31日 優(yōu)先權(quán)日2012年12月31日
發(fā)明者劉波, 齊志, 葛偉, 杜越, 曹鵬, 楊軍 申請(qǐng)人:東南大學(xué)