亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

具有多通道指令預(yù)取功能的存儲(chǔ)控制電路的制作方法

文檔序號(hào):6571812閱讀:275來(lái)源:國(guó)知局
專利名稱:具有多通道指令預(yù)取功能的存儲(chǔ)控制電路的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種存儲(chǔ)器控制電路,尤其涉及一種具有多通道指令預(yù)取功能的SDRAM/DRAM存儲(chǔ)器控制電路。
背景技術(shù)
SDRAM/DRAM(Synchronous Dynamic Random Access Memory/Dynamic RandomAccess Memory)是一種常用的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器/動(dòng)態(tài)隨機(jī)存儲(chǔ)器,以陣列方式存儲(chǔ)數(shù)據(jù),因此,每個(gè)數(shù)據(jù)都具有行列地址。如圖1所示,當(dāng)CPU讀取一個(gè)數(shù)據(jù)時(shí),需向存儲(chǔ)器芯片組發(fā)起一個(gè)激活命令A(yù)c,將該數(shù)據(jù)所在的行地址的所有數(shù)據(jù)均傳輸?shù)矫舾蟹糯笃魃线M(jìn)行讀寫(xiě),其中,一行的數(shù)據(jù)稱之為一頁(yè),大小通常是512~2048字節(jié),之后控制器再發(fā)讀命令RD或?qū)懨頦R,即根據(jù)列地址在敏感放大器中找出所要讀取的數(shù)據(jù)。每次存取數(shù)據(jù)以組(Burst)為單位,其組可以是1、2、4、8或1024個(gè)字/字節(jié)等,每個(gè)命令之間都需要周期等待。當(dāng)發(fā)出寫(xiě)命令后,下一個(gè)周期就能寫(xiě)入數(shù)據(jù),但如果發(fā)出的是讀命令,將需要額外的2~3個(gè)等待周期,亦稱為CAS(ColumnAddress Strobe)等待。特別地,如果存取數(shù)據(jù)的行地址與當(dāng)前敏感放大器的行地址不一致,將發(fā)生頁(yè)不命中,此時(shí)需要將原來(lái)頁(yè)的內(nèi)容通過(guò)預(yù)充電命令Pr放回至存儲(chǔ)器芯片組中,再把需要存取數(shù)據(jù)的行的內(nèi)容通過(guò)激活命令A(yù)c將整頁(yè)的數(shù)據(jù)傳輸?shù)矫舾蟹糯笃髦羞M(jìn)行存取,如圖2所示。如果存取數(shù)據(jù)的行地址與當(dāng)前敏感放大器的行地址一致,將發(fā)生頁(yè)命中,就可以直接訪問(wèn),不需要預(yù)充電命令Pr和激活命令A(yù)c。在訪問(wèn)SDRAM/DRAM存儲(chǔ)器時(shí),還可采用訪問(wèn)存儲(chǔ)器后就通過(guò)預(yù)充電命令Pr將當(dāng)前頁(yè)面關(guān)閉,如圖3所示,該預(yù)充電命令Pr是在讀取存儲(chǔ)器時(shí)發(fā)起的,所以其操作時(shí)間與讀取存儲(chǔ)器時(shí)間重疊;在下一次訪問(wèn)時(shí),需要使用激活命令A(yù)c先打開(kāi)要訪問(wèn)的頁(yè)面,才能進(jìn)行存儲(chǔ)器的讀取或?qū)懭搿?br> 在傳統(tǒng)的存儲(chǔ)器(如SDRAM/DRAM)硬件電路設(shè)計(jì)中,通常是根據(jù)外部存儲(chǔ)器的特性來(lái)設(shè)計(jì)訪問(wèn)存儲(chǔ)器的控制電路。通常在SDRAM/DRAM控制器中引入緩沖器FIFO(FirstInput First Output)先進(jìn)先出隊(duì)列來(lái)存儲(chǔ)數(shù)據(jù)。當(dāng)SDRAM/DRAM控制器向SDRAM/DRAM存儲(chǔ)器請(qǐng)求訪問(wèn)時(shí),SDRAM/DRAM控制器以成組(Burst)的方式讀取存儲(chǔ)數(shù)據(jù),一次成組的數(shù)量可以是1、2、4、8或1024個(gè)字/字節(jié)等。當(dāng)數(shù)據(jù)被一次讀入到FIFO中后,處理器就訪問(wèn)FIFO中的內(nèi)容。如果此時(shí)處理器訪問(wèn)完FIFO中的內(nèi)容,且需要訪問(wèn)下一個(gè)數(shù)據(jù)時(shí),就需要SDRAM/DRAM控制器再次發(fā)起SDRAM/DRAM存儲(chǔ)器的訪問(wèn)請(qǐng)求。在向SDRAM/DRAM存儲(chǔ)器發(fā)起訪問(wèn)請(qǐng)求時(shí),總存在一個(gè)CAS等待時(shí)間。因此,SDRAM/DRAM控制器每次向SDRAM/DRAM存儲(chǔ)器讀取數(shù)據(jù)時(shí)都要有一個(gè)額外的2~3個(gè)等待周期延遲。這個(gè)延遲使得處理器進(jìn)入等待狀態(tài),增加了程序執(zhí)行的時(shí)間,降低了系統(tǒng)運(yùn)行的效率。所以,如何降低讀數(shù)據(jù)等待延遲,減少CAS等待時(shí)間成為了SDRAM/DRAM控制器中的緩沖器優(yōu)化設(shè)計(jì)的主要考慮因素之一。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)之不足,提供一種具有多通道指令預(yù)取功能的SDRAM/DRAM存儲(chǔ)器控制電路,降低讀數(shù)據(jù)等待延遲時(shí)間,從而提高微處理器執(zhí)行程序的速度。
本發(fā)明的上述目的由以下技術(shù)方案實(shí)現(xiàn)本發(fā)明的具有多通道指令預(yù)取功能的存儲(chǔ)控制電路,如圖5所示,包括SDRAM/DRAM邏輯控制電路,指令預(yù)取緩沖器,地址比較器,總線接口,SDRAM/DRAM讀寫(xiě)控制電路,地址譯碼器,片外SDRAM/DRAM存儲(chǔ)體。指令預(yù)取緩沖器至少有兩個(gè)通道,如L1和L2,全部的指令預(yù)取緩沖器的字節(jié)數(shù)是片外SDRAM/DRAM存儲(chǔ)體的頁(yè)字節(jié)的整數(shù)倍。
SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路發(fā)出SDRAM/DRAM讀/寫(xiě)控制信號(hào),完成對(duì)片外SDRAM/DRAM存儲(chǔ)體的讀寫(xiě)控制,通過(guò)總線接口的數(shù)據(jù)總線為指令預(yù)取緩沖器提供讀取得指令。指令預(yù)取緩沖器通過(guò)總線接口的數(shù)據(jù)總線為CPU中的指令寄存器提供需要執(zhí)行的指令。地址譯碼器在SDRAM/DRAM邏輯控制電路的控制下解析地址,并輸出給地址比較器,地址比較器產(chǎn)生地址命中信號(hào)控制指令預(yù)取緩沖器中的一個(gè)通道工作,為CPU提供需要執(zhí)行的指令,地址比較器產(chǎn)生地址不命中信號(hào)傳送給SDRAM/DRAM邏輯控制電路,用于打斷CPU從指令預(yù)取緩沖器中取指以及控制為指令預(yù)取緩沖器重新從片外SDRAM/DRAM存儲(chǔ)體讀取指令。在CPU訪問(wèn)片外SDRAM/DRAM存儲(chǔ)體讀取指令時(shí),通過(guò)總線接口向SDRAM/DRAM邏輯控制電路發(fā)出總線請(qǐng)求信號(hào),并通過(guò)總線接口中的地址總線將地址傳輸給地址譯碼器。
地址比較器中寄存有指令預(yù)取緩沖器中所存放指令的地址,當(dāng)CPU取指時(shí),總線接口來(lái)的地址總線信號(hào)經(jīng)地址譯碼器譯碼送到地址比較器與所存放的地址進(jìn)行比較,如果此時(shí)兩者的地址相同,即地址命中,地址比較器產(chǎn)生地址命中信號(hào),控制當(dāng)前需要取指的指令預(yù)取緩沖器中的一個(gè)通道緩沖器工作,并通過(guò)總線接口中的數(shù)據(jù)總線直接從當(dāng)前工作的指令預(yù)取緩沖器中的一個(gè)通道緩沖器取指令;如果CPU所需要執(zhí)行的指令不在指令預(yù)取緩沖器中,即執(zhí)行了跳轉(zhuǎn)指令,并且跳轉(zhuǎn)的目的地址不在指令預(yù)取緩沖器中指令的地址范圍,此時(shí)地址比較器經(jīng)過(guò)地址比較產(chǎn)生地址不命中信號(hào),并通知SDRAM/DRAM邏輯控制電路,打斷指令預(yù)取動(dòng)作,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體按其工作時(shí)序要求先發(fā)出預(yù)充電命令Pr將當(dāng)前頁(yè)面關(guān)閉,再發(fā)出激活命令A(yù)c打開(kāi)要訪問(wèn)的頁(yè)面,指令預(yù)取緩沖器中的第一個(gè)通道指令預(yù)取緩沖器L1重新從跳轉(zhuǎn)指令的目的地址處從片外SDRAM/DRAM存儲(chǔ)體讀取指令,其后指令預(yù)取緩沖器中其他通道指令預(yù)取緩沖器順序從片外SDRAM/DRAM存儲(chǔ)體進(jìn)行指令讀取。
當(dāng)CPU順序執(zhí)行指令時(shí),所需要執(zhí)行的指令從指令預(yù)取緩沖器中當(dāng)前正在工作通道的緩沖器取完指令后,將轉(zhuǎn)向指令預(yù)取緩沖器中的下一個(gè)通道緩沖器去取指,所述的所有指令預(yù)取緩沖器的各通道在地址比較器輸出的地址命中信號(hào)控制下按順序周而復(fù)始地交替方式工作。當(dāng)CPU訪問(wèn)指令預(yù)取緩沖器中當(dāng)前正在工作通道的指令預(yù)取緩沖器時(shí),SDRAM/DRAM邏輯控制電路將按照設(shè)定的時(shí)序邏輯主動(dòng)通過(guò)SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)起讀指令RD操作,以填充指令預(yù)取緩沖器中的下一個(gè)通道指令預(yù)取緩沖器,使得讀取指令和CAS等待時(shí)間重疊,從而保證當(dāng)CPU訪問(wèn)完當(dāng)前工作通道的指令預(yù)取緩沖器時(shí),可以無(wú)CAS延遲地訪問(wèn)下一個(gè)通道指令預(yù)取緩沖器中存放的指令。
較為典型的是指令預(yù)取緩沖器有兩個(gè)通道L1和L2,即可保證CPU在順序執(zhí)行指令時(shí),可以無(wú)CAS等待時(shí)間地從指令預(yù)取緩沖器中取指執(zhí)行指令。兩個(gè)通道指令預(yù)取緩沖器L1和L2交替乒乓式工作,地址比較器有兩路輸出的地址命中信號(hào)分別控制兩個(gè)通道的指令預(yù)取緩沖器L1和L2交替乒乓式工作,兩個(gè)通道指令預(yù)取緩沖器L1和L2與總線接口的數(shù)據(jù)總線相連。
本發(fā)明的優(yōu)點(diǎn)及效果是提供一種可以使CPU從片外SDRAM/DRAM存儲(chǔ)體讀取指令時(shí),減少CPU訪問(wèn)片外SDRAM/DRAM存儲(chǔ)體的CAS等待時(shí)間。如圖4所示,在從SDRAM/DRAM存儲(chǔ)體中讀取指令填充指令預(yù)取緩沖器時(shí),SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路進(jìn)行對(duì)指令預(yù)取緩沖器的一個(gè)通道緩沖器(如L1)從片外SDRAM/DRAM存儲(chǔ)體填充指令的同時(shí),SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出下一個(gè)讀指令命令RD,經(jīng)過(guò)有CAS的等待時(shí)間,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路進(jìn)行對(duì)指令預(yù)取緩沖器的一個(gè)通道緩沖器(如L2)從片外SDRAM/DRAM存儲(chǔ)體填充指令。SDRAM/DRAM讀寫(xiě)控制電路發(fā)出下一個(gè)讀指令RD后的CAS等待時(shí)間與上一個(gè)從片外SDRAM/DRAM存儲(chǔ)體讀取指令填充指令預(yù)取緩沖器的時(shí)間相互重疊,從而保證了CPU順序執(zhí)行指令時(shí),可以無(wú)CAS等待時(shí)間地指令預(yù)取緩沖器中獲得需要執(zhí)行的指令。
一般計(jì)算機(jī)程序中存在大量的循環(huán)結(jié)構(gòu),如for、while和do...while等語(yǔ)句結(jié)構(gòu),在指令的安排上表現(xiàn)為循環(huán)條件判斷-循環(huán)體-再回到循環(huán)條件判斷的指令組織結(jié)構(gòu),或者是循環(huán)體-循環(huán)條件判斷-再回到循環(huán)體的開(kāi)始處。在循環(huán)結(jié)構(gòu)的程序中,因存在跳轉(zhuǎn)指令,指令預(yù)取緩沖器的預(yù)取指操作會(huì)被同一條跳轉(zhuǎn)指令多次打斷,為減少CPU從指令預(yù)取緩沖器取指執(zhí)行被打斷的次數(shù),減少因增加對(duì)片外SDRAM/DRAM存儲(chǔ)體發(fā)出預(yù)充電命令Pr關(guān)閉當(dāng)前頁(yè)面和發(fā)出激活命令A(yù)c激活要訪問(wèn)的頁(yè)面而帶來(lái)的CPU等待時(shí)間,本發(fā)明增設(shè)兩組指令預(yù)取緩沖器L1和L2以及R1和R2,指令預(yù)取緩沖器選擇電路,跳轉(zhuǎn)地址判斷電路,加鎖器電路,如圖6所示。指令預(yù)取緩沖器選擇電路受控于地址譯碼器的輸出信號(hào),其輸出兩路信號(hào)分別連接地址比較器1和地址比較器2,用于選擇一組指令預(yù)取緩沖器為當(dāng)前的工作組,地址比較器1控制指令預(yù)取緩沖器的兩個(gè)通道L1和L2的內(nèi)部切換工作,地址比較器2控制指令預(yù)取緩沖器的兩個(gè)通道R1和R2的內(nèi)部切換工作,跳轉(zhuǎn)地址判斷電路受控于地址譯碼器,其輸出控制加鎖器電路,加鎖器電路的輸出控制指令預(yù)取緩沖器的兩個(gè)通道R1和R2的取指鎖定與解鎖。在CPU執(zhí)行循環(huán)結(jié)構(gòu)的程序時(shí),第二組指令預(yù)取緩沖器R1和R2用于存放循環(huán)條件判斷部分的指令,或者循環(huán)體開(kāi)始部分的指令,第一組指令預(yù)取緩沖器周而復(fù)始地交替工作用于存放循環(huán)體部分的指令,從而減少了CPU執(zhí)行跳轉(zhuǎn)指令時(shí)打斷當(dāng)前正在工作的指令預(yù)取緩沖器重新取指的次數(shù),減少了因需要對(duì)片外SDRAM/DRAM存儲(chǔ)體發(fā)出預(yù)充電命令Pr和激活命令A(yù)c而使CPU處于等待的時(shí)間。
本發(fā)明的優(yōu)點(diǎn)及效果還表現(xiàn)在當(dāng)CPU執(zhí)行循環(huán)結(jié)構(gòu)的指令序列時(shí),提供一種采用兩組指令預(yù)取緩沖器,減少因CPU在執(zhí)行跳轉(zhuǎn)指令而打斷指令預(yù)取緩沖器預(yù)取指令操作的次數(shù),從而減少SDRAM/DRAM讀寫(xiě)控制電路對(duì)片外SDRAM/DRAM存儲(chǔ)體發(fā)出預(yù)充電命令Pr和激活命令A(yù)c的次數(shù),減少CPU訪問(wèn)外存時(shí)的等待時(shí)間。使用第二組指令預(yù)取緩沖器鎖定循環(huán)程序結(jié)構(gòu)的條件判斷部分的指令,或者循環(huán)體開(kāi)始部分的指令,使用第一組指令預(yù)取緩沖器執(zhí)行循環(huán)體部分的指令,從而減少了因循環(huán)體指令執(zhí)行結(jié)束返回到條件判斷部分指令執(zhí)行這一過(guò)程的打斷指令預(yù)取操作的次數(shù),或者經(jīng)循環(huán)條件判斷返回到循環(huán)體開(kāi)始處這一過(guò)程的打斷指令預(yù)取操作的次數(shù)。當(dāng)CPU執(zhí)行指令為跳轉(zhuǎn)指令時(shí),跳轉(zhuǎn)的目的地址通過(guò)總線接口的地址總線送到地址譯碼器,其輸出送到地址比較器1和地址比較器2,地址比較器與跳轉(zhuǎn)的目的地址進(jìn)行比較,如果跳轉(zhuǎn)的目的地址在當(dāng)前正在工作的指令預(yù)取緩沖器中指令的地址范圍內(nèi),CPU繼續(xù)在當(dāng)前工作的指令預(yù)取緩沖器中取指執(zhí)行;如果跳轉(zhuǎn)的目的地址不在當(dāng)前正在工作的指令預(yù)取緩沖器中指令的地址范圍內(nèi),也不在第二組指令預(yù)取緩沖器中指令的地址范圍內(nèi),則打斷當(dāng)前正在工作的指令預(yù)取緩沖器工作,轉(zhuǎn)到由第二組指令預(yù)取緩沖器預(yù)取工作,CPU在第二組指令預(yù)取緩沖器中取指執(zhí)行;如果跳轉(zhuǎn)的目的地址不在當(dāng)前正在工作的指令預(yù)取緩沖器中指令的地址范圍內(nèi),而在第二組指令預(yù)取緩沖器中指令的地址范圍內(nèi),則轉(zhuǎn)到由第二組指令預(yù)取緩沖器預(yù)取工作并鎖定第二組指令預(yù)取緩沖器,此時(shí),第二組指令預(yù)取緩沖器鎖定循環(huán)結(jié)構(gòu)程序的條件判斷部分的指令,或者循環(huán)體開(kāi)始部分的指令。
本發(fā)明在SDRAM/DRAM邏輯控制電路中設(shè)置有一頁(yè)不命中懲罰電路,如圖7所示,其包含有頁(yè)面比較器,頁(yè)面命中計(jì)數(shù)器,當(dāng)前頁(yè)地址寄存器。在取指令填充指令預(yù)取緩沖器時(shí)將頁(yè)地址打入當(dāng)前頁(yè)地址寄存器中,來(lái)自總線接口中地址總線的跳轉(zhuǎn)目的地址經(jīng)地址譯碼器送到SDRAM/DRAM邏輯控制電路中的頁(yè)面比較器與SDRAM/DRAM邏輯控制電路中的當(dāng)前頁(yè)地址寄存器的當(dāng)前頁(yè)地址進(jìn)行比較,頁(yè)面比較器輸出的比較結(jié)果對(duì)頁(yè)面命中計(jì)數(shù)器進(jìn)行加1、減1或置數(shù)操作。當(dāng)CPU執(zhí)行跳轉(zhuǎn)指令并且轉(zhuǎn)移的目的地址連續(xù)不在當(dāng)前頁(yè)面中的次數(shù)超過(guò)懲罰狀態(tài)設(shè)定值時(shí),啟動(dòng)頁(yè)不命中懲罰電路,改變對(duì)片外SDRAM/DRAM存儲(chǔ)體的讀取指令的控制方式,采用發(fā)出激活命令A(yù)c激活所要訪問(wèn)的頁(yè)面,指令預(yù)取緩沖器取指填充,隨后,發(fā)出預(yù)充電命令Pr關(guān)閉當(dāng)前訪問(wèn)的頁(yè)面的工作方式,從而使預(yù)充電所需等待時(shí)間Pt與讀取指令填充指令預(yù)取緩沖器的時(shí)間重疊,減少CPU執(zhí)行指令的等待時(shí)間。當(dāng)CPU執(zhí)行跳轉(zhuǎn)指令并且轉(zhuǎn)移的目的地址連續(xù)在當(dāng)前頁(yè)面中的次數(shù)超過(guò)關(guān)閉懲罰狀態(tài)設(shè)定值時(shí),關(guān)閉頁(yè)不命中懲罰電路,退出懲罰狀態(tài),恢復(fù)到對(duì)片外SDRAM/DRAM存儲(chǔ)體的讀取指令的控制方式,采用直接從片外SDRAM/DRAM存儲(chǔ)體的當(dāng)前頁(yè)面讀取指令填充指令預(yù)取緩沖器的工作方式。一般懲罰狀態(tài)設(shè)定值為兩次計(jì)數(shù),關(guān)閉懲罰狀態(tài)設(shè)定值為四次計(jì)數(shù)。
本發(fā)明的優(yōu)點(diǎn)及效果還表現(xiàn)在指令預(yù)取緩沖器預(yù)取指令時(shí),連續(xù)出現(xiàn)跳轉(zhuǎn)指令,并且跳轉(zhuǎn)的目的地址均不在當(dāng)前頁(yè)面中,此時(shí),在每一次對(duì)指令預(yù)取緩沖器預(yù)取指令時(shí),SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出預(yù)充電命令Pr關(guān)閉當(dāng)前頁(yè)面,使預(yù)充電等待時(shí)間Pt與讀取指令的時(shí)間重疊,如圖3所示。從而減少當(dāng)CPU執(zhí)行跳轉(zhuǎn)指令并且連續(xù)跳轉(zhuǎn)不在當(dāng)前頁(yè)面時(shí)的等待時(shí)間。


圖1是SDRAM/DRAM頁(yè)命中時(shí)的讀寫(xiě)時(shí)序圖;圖2是SDRAM/DRAM頁(yè)不命中時(shí)的讀寫(xiě)時(shí)序圖;圖3是訪問(wèn)SDRAM/DRAM后即關(guān)閉頁(yè)面的時(shí)序圖;圖4是本發(fā)明的雙通道預(yù)取指令緩沖器訪問(wèn)SDRAM/DRAM時(shí)序圖;圖5是本發(fā)明的雙通道預(yù)取指令存儲(chǔ)控制電路原理圖;圖6是本發(fā)明的兩組雙通道預(yù)取指令存儲(chǔ)控制電路原理圖;圖7是本發(fā)明的頁(yè)不命中懲罰電路原理圖;
圖8是本發(fā)明的兩組雙通道預(yù)取指令存儲(chǔ)控制電路工作流程圖;圖9是本發(fā)明的頁(yè)不命中懲罰電路工作流程圖;圖10是循環(huán)條件判斷在前的循環(huán)語(yǔ)句流程圖;圖11是循環(huán)條件判斷在后的循環(huán)語(yǔ)句流程圖。
附圖符號(hào)說(shuō)明At激活等待時(shí)間;Pt預(yù)充電等待時(shí)間;CAS讀操作等待時(shí)間;Ac激活命令;Pr預(yù)充電命令;RD讀操作;WR寫(xiě)操作;Dx總線上的傳輸數(shù)據(jù)。
具體實(shí)施例方式
下面結(jié)合附圖與具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
如圖5所示,雙通道預(yù)取指令存儲(chǔ)控制電路,其中包括兩個(gè)通道的指令預(yù)取緩沖器L1和L2。指令預(yù)取緩沖器L1和L2的字節(jié)數(shù)是片外SDRAM/DRAM存儲(chǔ)體的頁(yè)字節(jié)的整數(shù)倍,如每個(gè)通道預(yù)取指令緩沖器長(zhǎng)度為32Bytes,即4條指令,片外SDRAM/DRAM存儲(chǔ)體的頁(yè)字節(jié)數(shù)應(yīng)為64的整數(shù)倍。指令預(yù)取緩沖器在從片外SDRAM/DRAM存儲(chǔ)體預(yù)取指令時(shí),具有數(shù)據(jù)對(duì)齊功能,即指令預(yù)取緩沖器的第一個(gè)通道存放的第一條指令應(yīng)當(dāng)來(lái)源于片外SDRAM/DRAM存儲(chǔ)體頁(yè)內(nèi)地址為64的整數(shù)倍存放的指令,可以是0、64、128、192、......等地址存放的指令,該功能由地址譯碼器完成。雙通道預(yù)取指令緩沖器L1和L2采用乒乓工作方式,當(dāng)?shù)谝粋€(gè)通道指令預(yù)取緩沖器L1在SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路讀取片外SDRAM/DRAM存儲(chǔ)體中4條指令填充的同時(shí),發(fā)出下一個(gè)讀指令命令RD,在CAS讀取等待時(shí)間結(jié)束時(shí)完成前4條的讀取和填充,即可進(jìn)行下4條指令的讀取并填充第二個(gè)通道指令預(yù)取緩沖器L2。在CPU結(jié)束第一個(gè)通道4條指令的訪問(wèn)后,可以無(wú)等待地讀取第二個(gè)通道指令預(yù)取緩沖器L2里面的指令執(zhí)行,同時(shí)第一個(gè)通道指令預(yù)取緩沖器L1預(yù)取接下來(lái)的4條指令。兩個(gè)通道如此反復(fù)的交替工作,使得CAS讀取等待時(shí)間重疊,再者,因?yàn)橹噶铑A(yù)取緩沖器是在片內(nèi)的,所以CPU對(duì)它的訪問(wèn)無(wú)需等待。如果CPU是以流水線的方式取指令工作,則每一個(gè)時(shí)鐘可以執(zhí)行一條指令,當(dāng)CPU經(jīng)過(guò)四個(gè)時(shí)鐘周期把指令預(yù)取緩沖器L1里的指令執(zhí)行完畢后,指令預(yù)取緩沖器L2已經(jīng)填滿,CPU可以無(wú)CAS等待地執(zhí)行指令預(yù)取緩沖器L2中的下一條指令;此時(shí)的指令預(yù)取緩沖器L1中的指令被執(zhí)行過(guò),因此可以通過(guò)SDRAM/DRAM邏輯控制電路接著片外SDRAM/DRAM存儲(chǔ)體發(fā)起讀指令請(qǐng)求,填充下一個(gè)4條指令。L1與L2以乒乓的工作方式保證了CPU始終是在無(wú)CAS時(shí)鐘周期等待的情況下運(yùn)行,提高了取指令的效率,加快了系統(tǒng)運(yùn)行速度??s短了系統(tǒng)的執(zhí)行時(shí)間。兩個(gè)通道的指令預(yù)取緩沖器L1和L2可以是不等長(zhǎng)度的,從方便具體電路設(shè)計(jì)考慮,等長(zhǎng)的指令預(yù)取緩沖器為優(yōu)選。指令預(yù)取緩沖器可以是兩個(gè)通道以上,當(dāng)指令預(yù)取緩沖器有多個(gè)通道時(shí),各通道預(yù)取指令在地址比較器的控制下,按照順序填充,并循環(huán)周而復(fù)始地輪流工作,某一時(shí)刻只有一個(gè)通道的指令預(yù)取緩沖器工作填充指令。從方便具體電路設(shè)計(jì)考慮,兩個(gè)指令預(yù)取緩沖器即可實(shí)現(xiàn)CPU無(wú)CAS等待時(shí)間地執(zhí)行指令,而且電路設(shè)計(jì)簡(jiǎn)單,故為優(yōu)選方案。
程序中存在大量的循環(huán)結(jié)構(gòu),如圖10和圖11所示,從其生成目標(biāo)代碼來(lái)看,一般有兩種結(jié)構(gòu),圖10為循環(huán)條件判斷在前的循環(huán)語(yǔ)句結(jié)構(gòu)流程圖,即循環(huán)條件判斷在前,循環(huán)體在后。圖11為循環(huán)條件判斷在后的循環(huán)語(yǔ)句結(jié)構(gòu)流程圖,即開(kāi)始為循環(huán)體,其后為循環(huán)條件判斷。當(dāng)CPU執(zhí)行循環(huán)指令序列時(shí),會(huì)多次執(zhí)行同一條跳轉(zhuǎn)指令,多次打斷指令預(yù)取緩沖器的預(yù)取指操作,為此本發(fā)明通過(guò)增加一組指令預(yù)取緩沖器來(lái)減少指令預(yù)取的打斷次數(shù)。如圖6所示,兩組雙通道預(yù)取指令存儲(chǔ)控制電路,與圖5相比,多了一組指令預(yù)取緩沖器R1和R2,同時(shí)在地址譯碼電路和地址比較電路之間增加了一個(gè)指令預(yù)取緩沖器選擇電路,該電路用于選擇當(dāng)前是哪一組指令預(yù)取緩沖器在工作。同時(shí)還增加了一個(gè)跳轉(zhuǎn)地址判斷電路,判斷程序是否出現(xiàn)循環(huán)狀態(tài)。還增加了一個(gè)對(duì)第二組指令預(yù)取緩沖器R1和R2進(jìn)行鎖定和解鎖的加鎖器電路,當(dāng)程序出現(xiàn)循環(huán)結(jié)構(gòu)時(shí),使用第二組指令預(yù)取緩沖器鎖定循環(huán)程序結(jié)構(gòu)的條件判斷部分的指令,或者循環(huán)體開(kāi)始部分的指令,使用第一組指令預(yù)取緩沖器執(zhí)行循環(huán)體部分的指令,從而減少了因循環(huán)返回跳轉(zhuǎn)這一過(guò)程的打斷指令預(yù)取操作的次數(shù)。結(jié)合圖8所示來(lái)說(shuō)明,兩組雙通道預(yù)取指令存儲(chǔ)控制電路工作過(guò)程開(kāi)始CPU訪問(wèn)片外SDRAM/DRAM存儲(chǔ)體讀取指令時(shí),通過(guò)總線接口向SDRAM/DRAM邏輯控制電路發(fā)出總線請(qǐng)求信號(hào),并通過(guò)總線接口中的地址總線將地址傳輸給地址譯碼器,地址譯碼器在SDRAM/DRAM邏輯控制電路的控制下解析地址,并輸出給指令預(yù)取緩沖器選擇電路用于選擇第一組指令預(yù)取緩沖器為當(dāng)前工作組,為CPU提供需要執(zhí)行的指令。當(dāng)CPU執(zhí)行跳轉(zhuǎn)指令且不命中第一組指令預(yù)取緩沖器L1和L2的指令地址時(shí),即地址比較器1輸出不命中信號(hào)給SDRAM/DRAM邏輯控制電路。在SDRAM/DRAM邏輯控制電路的控制下,地址譯碼器控制指令預(yù)取緩沖器選擇電路選擇第二組指令預(yù)取緩沖器R1和R2工作,只進(jìn)行一次指令讀取填充并鎖定SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體按其工作時(shí)序要求先發(fā)出預(yù)充電命令Pr將當(dāng)前頁(yè)面關(guān)閉,經(jīng)過(guò)預(yù)充電等待時(shí)間Pt后再發(fā)出激活命令A(yù)c打開(kāi)要訪問(wèn)的頁(yè)面,經(jīng)過(guò)激活等待時(shí)間At再發(fā)出讀操作命令RD,經(jīng)過(guò)CAS等待時(shí)間,第二組指令預(yù)取緩沖器R1和R2重新從跳轉(zhuǎn)指令的目的地址處從片外SDRAM/DRAM存儲(chǔ)體讀取指令,當(dāng)?shù)诙M指令預(yù)取緩沖器R1和R2取指填充滿指令后,由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器R1和R2進(jìn)行加鎖,然后就轉(zhuǎn)向?qū)Φ谝唤M指令預(yù)取緩沖器L1和L2取指填充。此時(shí),CPU執(zhí)行完第二組緩沖器中的指令時(shí),轉(zhuǎn)回第一組緩沖器去取指執(zhí)行,第一組指令預(yù)取緩沖器繼續(xù)為CPU提供預(yù)取指令。如果CPU取指執(zhí)行第二組指令預(yù)取緩沖器中的指令有跳轉(zhuǎn)指令且轉(zhuǎn)移的目的地址超出第二組指令緩沖器中指令的地址范圍,由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器R1和R2進(jìn)行解鎖,CPU打斷執(zhí)行第二組指令預(yù)取緩沖器中的指令,重新跳轉(zhuǎn)指令的目的地址處從片外SDRAM/DRAM存儲(chǔ)體讀取指令填充第二組指令預(yù)取緩沖器R1和R2一次,由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器R1和R2進(jìn)行加鎖,CPU繼續(xù)從第二組指令預(yù)取緩沖器中取指執(zhí)行。當(dāng)執(zhí)行完第二組指令預(yù)取緩沖器中的指令后,繼續(xù)從第一組指令預(yù)取緩沖器L1和L2中取指令執(zhí)行,并在第一組指令預(yù)取緩沖器L1和L2內(nèi)周而復(fù)始地交替工作。如果CPU在執(zhí)行第一組指令預(yù)取緩沖器中的指令再次碰到跳轉(zhuǎn)指令,則跳轉(zhuǎn)的目的地址由總線接口的地址總線經(jīng)地址譯碼器譯碼送到跳轉(zhuǎn)地址判斷電路進(jìn)行判斷當(dāng)跳轉(zhuǎn)的目的地址與第二組指令預(yù)取緩沖器中指令的地址相同時(shí),說(shuō)明第二組指令預(yù)取緩沖器鎖定循環(huán)條件判斷部分的指令,或者鎖定循環(huán)體開(kāi)始部分的指令,通過(guò)SDRAM/DRAM邏輯控制電路控制CPU轉(zhuǎn)向從第二組指令預(yù)取緩沖器中取指執(zhí)行;如果地址不同,則加鎖器電路在跳轉(zhuǎn)地址判斷電路的控制下發(fā)出解鎖信號(hào),將第二組指令預(yù)取緩沖器R1和R2中的指令內(nèi)容解鎖,并回到對(duì)第二組指令預(yù)取緩沖器R1和R2從片外SDRAM/DRAM存儲(chǔ)體中取指填充滿,由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器R1和R2進(jìn)行加鎖。如此周而復(fù)始地工作,始終企圖通過(guò)第二組指令預(yù)取緩沖器來(lái)存放循環(huán)程序結(jié)構(gòu)的條件判斷部分的指令序列,或者循環(huán)體開(kāi)始部分的指令序列,使用第一組指令預(yù)取緩沖器的不斷預(yù)取指令為CPU提供循環(huán)體部分指令的執(zhí)行。這種兩組指令預(yù)取緩沖器結(jié)構(gòu)電路以及控制工作的方法適用于如for、while和do...while...等循環(huán)語(yǔ)句,這些循環(huán)語(yǔ)句在編譯后生成指令序列時(shí),往往是條件判斷部分的指令序列在前面,循環(huán)體指令序列在后面,如圖10所示,或者是循環(huán)體在前,循環(huán)條件判斷在后,如圖11所示。
當(dāng)程序在執(zhí)行過(guò)程中發(fā)生跳轉(zhuǎn),而該跳轉(zhuǎn)的地址范圍超過(guò)了片外SDRAM/DRAM存儲(chǔ)體當(dāng)前存放在敏感放大器里的地址時(shí),外部存儲(chǔ)器發(fā)生頁(yè)面不命中事件。此時(shí)需要使用預(yù)充電命令Pr關(guān)閉當(dāng)前頁(yè)面,再使用激活命令A(yù)c打開(kāi)所要訪問(wèn)的頁(yè)面。這一預(yù)充電到激活過(guò)程使得CPU處于等待狀態(tài),增加了程序的執(zhí)行時(shí)間,降低了系統(tǒng)的性能,本發(fā)明技術(shù)方案中采用具有頁(yè)不命中懲罰控制電路來(lái)減少這種等待時(shí)間。從圖3中可以看出,如果采用讀取指令后就關(guān)閉頁(yè)面的做法,則每次都需要發(fā)起激活命令A(yù)c,增加了處理器的等待時(shí)問(wèn)。但如果每次訪問(wèn)外部存儲(chǔ)器都發(fā)生頁(yè)面不命中時(shí),則可以省去預(yù)充電命令Pr帶來(lái)的等待時(shí)間。因此,本發(fā)明的設(shè)計(jì)方案是當(dāng)連續(xù)訪問(wèn)外部存儲(chǔ)器時(shí)都是在同一個(gè)頁(yè)面時(shí),可以不必要采用讀取指令RD后就關(guān)閉頁(yè)面的做法,而是一直將頁(yè)面打開(kāi);當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí)連續(xù)出現(xiàn)所訪問(wèn)的指令地址不在同一頁(yè)范圍內(nèi),則采用讀取指令RD后就關(guān)閉頁(yè)面的做法,即每次訪問(wèn)結(jié)束后始終關(guān)閉存儲(chǔ)器頁(yè)面,以節(jié)約預(yù)充電操作時(shí)間Pt。圖7為頁(yè)面不命中懲罰電路,在SDRAM/DRAM邏輯控制電路中增加有頁(yè)面比較器,頁(yè)面命中計(jì)數(shù)器,當(dāng)前頁(yè)地址寄存器。其控制過(guò)程如圖9所示一開(kāi)始先激活所需要訪問(wèn)的頁(yè)面,然后CPU取指令。然后判斷當(dāng)前所取指令是否在當(dāng)前頁(yè)面中(即頁(yè)命中),如果是,則頁(yè)面命中計(jì)數(shù)器清0,然后繼續(xù)CPU取指;反之,此時(shí)發(fā)生頁(yè)面不命中,則需要預(yù)充電命令Pr關(guān)閉當(dāng)前頁(yè)面,同時(shí)頁(yè)面命中計(jì)數(shù)器加1。然后再判斷頁(yè)面命中計(jì)數(shù)器當(dāng)前的計(jì)數(shù)值是否超過(guò)2,如果是,則證明連續(xù)兩次頁(yè)面不命中,進(jìn)入懲罰狀態(tài);否則,如果計(jì)數(shù)值沒(méi)有超過(guò)2,則直接激活所要訪問(wèn)的頁(yè)面,并且讓CPU取指令。當(dāng)電路進(jìn)入懲罰狀態(tài)時(shí),設(shè)置頁(yè)面命中計(jì)數(shù)器為4,并激活所要訪問(wèn)的頁(yè)面,然后同時(shí)執(zhí)行取指令和預(yù)充電命令Pr,這樣可以省去下一次的預(yù)充電操作時(shí)間Pt。然后判斷取指是否頁(yè)命中,如果頁(yè)面不命中,則頁(yè)面命中計(jì)數(shù)器重新設(shè)置為4,再回到激活、讀取指令、預(yù)充電關(guān)閉頁(yè)面的工作方式;否則,頁(yè)面命中計(jì)數(shù)器減1,隨后判斷當(dāng)前頁(yè)面命中計(jì)數(shù)器是否為0,如果為0,則證明有連續(xù)四次的頁(yè)命中,應(yīng)該退出頁(yè)面不命中懲罰狀態(tài);否則,則還在懲罰狀態(tài),激活所要訪問(wèn)的頁(yè)面,依舊同時(shí)執(zhí)行取指令和預(yù)充電命令。
對(duì)于具有兩組指令預(yù)取緩沖器的電路可以在進(jìn)行預(yù)取指是否命中當(dāng)前頁(yè)面判斷的同時(shí),對(duì)是否命中另一組指令預(yù)取緩沖器中指令的地址進(jìn)行判斷,如果命中也可視為命中頁(yè)面并轉(zhuǎn)入另一組指令預(yù)取緩沖器工作。電路進(jìn)入懲罰狀態(tài)的條件可以連續(xù)兩次不命中,也可以是連續(xù)三次不命中等。電路退出懲罰狀態(tài)的條件可以是連續(xù)四次命中,也可以是三次等。
采用雙通道預(yù)取指令緩沖器的乒乓工作方式,在讀指令時(shí)覆蓋CAS等待時(shí)間,可以大大降低指令執(zhí)行時(shí)間。而采用兩組指令預(yù)取緩沖器的工作方式,可以避免很多因?yàn)檠h(huán)跳轉(zhuǎn)而重新填充預(yù)取指令緩沖器的情況。通過(guò)使用頁(yè)面不命中懲罰控制電路,使得程序在執(zhí)行過(guò)程中可以節(jié)約很多預(yù)充電操作和預(yù)充電一激活操作帶來(lái)的處理器等待時(shí)間。在引入了雙通道預(yù)取指令緩沖器之后,比傳統(tǒng)嵌入式系統(tǒng)在性能上平均提升了40%,功耗也因頁(yè)面不命中率的減少而降低。傳統(tǒng)的SDRAM/DRAM控制器在進(jìn)行一次成組傳輸時(shí)(如一次成組傳輸為4個(gè)字),則首先需要2~3個(gè)CAS的時(shí)鐘等待,然后是4個(gè)時(shí)鐘周期的傳輸時(shí)間(傳一個(gè)字需要一個(gè)時(shí)鐘時(shí)間),所以總共需要6~7個(gè)時(shí)鐘周期才能填充好FIFO,只有填充好FIFO后處理器才能讀取指令。根據(jù)處理器的流水性作業(yè)特征,執(zhí)行一個(gè)指令只需消耗一個(gè)時(shí)鐘周期。因此,從取這四條指令(每條指令占一個(gè)字)指令到執(zhí)行完指令實(shí)際消耗的周期數(shù)為10~11。在引入預(yù)取功能后,在第一個(gè)通道指令預(yù)取緩沖器填充好后,第二個(gè)通道指令預(yù)取緩沖器便開(kāi)始填充,所以當(dāng)處理器訪問(wèn)完第一個(gè)通道指令預(yù)取緩沖器后,便可以無(wú)等待的訪問(wèn)第二個(gè)通道指令預(yù)取緩沖器。因此,只要指令是順序執(zhí)行,就可以始終無(wú)延遲的取指令。在這種情況下,從取指令到指令執(zhí)行完畢系統(tǒng)總共消耗了4個(gè)時(shí)鐘周期??梢钥闯銎湫蚀鬄樘嵘?,提升比例約為64%((11-4)/11)。而在多媒體實(shí)驗(yàn)中,訪問(wèn)指令時(shí)間占到了總的執(zhí)行時(shí)間的64%左右,所以在引入指令預(yù)取功能后,系統(tǒng)總的提升時(shí)間約為64%×64%=40%。通過(guò)了MP3、JPEG、MPEG-4等多媒體實(shí)驗(yàn)證明,其性能平均提升實(shí)為40%左右。
權(quán)利要求
1.一種具有多通道指令預(yù)取功能的存儲(chǔ)控制電路,包括總線接口,SDRAM/DRAM讀寫(xiě)控制電路,地址譯碼器,片外SDRAM/DRAM存儲(chǔ)體,SDRAM/DRAM讀寫(xiě)控制電路發(fā)出SDRAM/DRAM讀/寫(xiě)控制信號(hào),完成對(duì)片外SDRAM/DRAM存儲(chǔ)體的讀寫(xiě)控制;其特征在于還包括有地址比較器,SDRAM/DRAM邏輯控制電路,至少兩個(gè)通道的指令預(yù)取緩沖器(L1、L2)通過(guò)總線接口的數(shù)據(jù)總線為CPU中的指令寄存器提供需要執(zhí)行的指令,全部的指令預(yù)取緩沖器(L1、L2)的字節(jié)數(shù)是片外SDRAM/DRAM存儲(chǔ)體的頁(yè)面字節(jié)的整數(shù)倍,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路工作;在CPU訪問(wèn)片外SDRAM/DRAM存儲(chǔ)體讀取指令時(shí),通過(guò)總線接口向SDRAM/DRAM邏輯控制電路發(fā)出總線請(qǐng)求信號(hào),并通過(guò)總線接口中的地址總線將地址傳輸給地址譯碼器,地址譯碼器在SDRAM/DRAM邏輯控制電路的控制下解析地址,并輸出給地址比較器,地址比較器產(chǎn)生地址命中信號(hào)控制指令預(yù)取緩沖器(L1、L2)中的一個(gè)通道工作,為CPU提供需要執(zhí)行的指令,地址比較器產(chǎn)生地址不命中信號(hào)傳送給SDRAM/DRAM邏輯控制電路,用于打斷CPU從指令預(yù)取緩沖器(L1、L2)中取指并讓指令預(yù)取緩沖器(L1、L2)重新從片外SDRAM/DRAM存儲(chǔ)體讀取指令;地址比較器中寄存有指令預(yù)取緩沖器(L1、L2)中所存放指令的地址,當(dāng)CPU取指時(shí),總線接口傳遞來(lái)的地址總線信號(hào)經(jīng)地址譯碼器譯碼送到地址比較器與所存放的地址進(jìn)行比較,如果此時(shí)兩者的地址相同,即地址命中,地址比較器產(chǎn)生地址命中信號(hào),控制當(dāng)前需要取指的指令預(yù)取緩沖器(L1、L2)中的一個(gè)通道緩沖器工作,并通過(guò)總線接口中的數(shù)據(jù)總線直接從當(dāng)前工作的指令預(yù)取緩沖器(L1、L2)中的一個(gè)通道緩沖器取指令;如果CPU所需要執(zhí)行的指令不在指令預(yù)取緩沖器(L1、L2)中,即執(zhí)行了跳轉(zhuǎn)指令,此時(shí)地址比較器經(jīng)過(guò)地址比較產(chǎn)生地址不命中信號(hào),并通知SDRAM/DRAM邏輯控制電路,打斷指令預(yù)取動(dòng)作,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體按其工作時(shí)序要求先發(fā)出預(yù)充電命令(Pr)將當(dāng)前頁(yè)面關(guān)閉,經(jīng)預(yù)充電等待時(shí)間(Pt)延遲后,再發(fā)出激活命令(Ac)打開(kāi)要訪問(wèn)的頁(yè)面,經(jīng)激活等待時(shí)間(At)延遲后,指令預(yù)取緩沖器(L1、L2)中的第一個(gè)通道指令預(yù)取緩沖器(L1)重新從跳轉(zhuǎn)指令的目的地址處從片外SDRAM/DRAM存儲(chǔ)體讀取指令,其后指令預(yù)取緩沖器(L1、L2)中其他通道指令預(yù)取緩沖器順序從片外SDRAM/DRAM存儲(chǔ)體進(jìn)行讀取指令;當(dāng)CPU順序執(zhí)行指令時(shí),所需要執(zhí)行的指令從指令預(yù)取緩沖器(L1、L2)中當(dāng)前正在工作通道的緩沖器取完指令后,將轉(zhuǎn)向指令預(yù)取緩沖器(L1、L2)中的下一個(gè)通道緩沖器去取指,所述的所有指令預(yù)取緩沖器(L1、L2)在地址比較器輸出的地址命中信號(hào)控制下按順序周而復(fù)始地交替方式工作;當(dāng)CPU訪問(wèn)指令預(yù)取緩沖器(L1、L2)中當(dāng)前正在工作通道的指令預(yù)取緩沖器時(shí),SDRAM/DRAM邏輯控制電路將按照設(shè)定的時(shí)序邏輯主動(dòng)通過(guò)SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)起讀指令(RD)操作,以填充指令預(yù)取緩沖器(L1、L2)中的下一個(gè)通道指令預(yù)取緩沖器,保證當(dāng)CPU訪問(wèn)完當(dāng)前工作通道的指令預(yù)取緩沖器時(shí),可以無(wú)CAS延遲地訪問(wèn)下一個(gè)通道指令預(yù)取緩沖器中存放的指令。
2.根據(jù)權(quán)利要求1所述的具有多通道指令預(yù)取功能的存儲(chǔ)控制電路,其特征是所述的指令預(yù)取緩沖器(L1、L2)有兩個(gè)通道,第一通道指令預(yù)取緩沖器(L1)和第二通道指令預(yù)取緩沖器(L2)交替乒乓式工作,所述的地址比較器有兩路輸出的地址命中信號(hào)分別控制兩個(gè)通道的指令預(yù)取緩沖器(L1、L2)交替乒乓式工作,所述的兩個(gè)通道指令預(yù)取緩沖器(L1、L2)與總線接口的數(shù)據(jù)總線相連。
3.根據(jù)權(quán)利要求1或2所述的具有多通道指令預(yù)取功能的存儲(chǔ)控制電路,其特征在于還有指令預(yù)取緩沖器選擇電路,跳轉(zhuǎn)地址判斷電路,加鎖器電路,所述的指令預(yù)取緩沖器(L1、L2,R1、R2)有兩組;指令預(yù)取緩沖器選擇電路受控于所述的地址譯碼器的輸出信號(hào),其輸出兩路信號(hào)分別連接地址比較器1和地址比較器2,用于選擇一組指令預(yù)取緩沖器為當(dāng)前的工作組,地址比較器1控制第一組指令預(yù)取緩沖器(L1、L2)的內(nèi)部切換工作,地址比較器2控制第二組指令預(yù)取緩沖器(R1、R2)的內(nèi)部切換工作,跳轉(zhuǎn)地址判斷電路受控于地址譯碼器,其輸出控制加鎖器電路,加鎖器電路的輸出控制第二組指令預(yù)取緩沖器(R1、R2)的取指鎖定與解鎖;在CPU順序執(zhí)行指令時(shí),地址譯碼器控制指令預(yù)取緩沖器選擇電路選擇第一組指令預(yù)取緩沖器(L1、L2)工作,當(dāng)CPU第一次執(zhí)行跳轉(zhuǎn)指令且不命中第一組指令預(yù)取緩沖器(L1、L2)時(shí),地址譯碼器控制指令預(yù)取緩沖器選擇電路選擇第二組指令預(yù)取緩沖器(R1、R2)工作,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體按其工作時(shí)序要求先發(fā)出預(yù)充電命令(Pr)將當(dāng)前頁(yè)面關(guān)閉,經(jīng)預(yù)充電等待時(shí)間(Pt)延遲后,再發(fā)出激活命令(Ac)打開(kāi)要訪問(wèn)的頁(yè)面,經(jīng)激活等待時(shí)間(At)延遲后,第二組指令預(yù)取緩沖器(R1、R2)重新從跳轉(zhuǎn)指令的目的地址處從片外SDRAM/DRAM存儲(chǔ)體讀取指令,當(dāng)?shù)诙M指令預(yù)取緩沖器(R1、R2)取指填充滿指令后,由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器(R1、R2)進(jìn)行加鎖,然后就轉(zhuǎn)向?qū)Φ谝唤M指令預(yù)取緩沖器(L1、L2)取指填充;SDRAM/DRAM邏輯控制電路控制CPU從第二組指令預(yù)取緩沖器(R1、R2)中獲取指令執(zhí)行,當(dāng)CPU取指執(zhí)行第二組指令預(yù)取緩沖器(R1、R2)中的指令有跳轉(zhuǎn)指令且轉(zhuǎn)移的目的地址超出第二組指令緩沖器(R1、R2)中指令的地址范圍時(shí),由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器(R1、R2)進(jìn)行解鎖,CPU打斷執(zhí)行第二組指令預(yù)取緩沖器(R1、R2)中的指令,重新跳轉(zhuǎn)指令的目的地址處從片外SDRAM/DRAM存儲(chǔ)體讀取指令填充第二組指令預(yù)取緩沖器(R1、R2),由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器(R1、R2)進(jìn)行加鎖,CPU繼續(xù)從第二組指令預(yù)取緩沖器(R1、R2)中取指執(zhí)行;當(dāng)執(zhí)行完第二組指令預(yù)取緩沖器(R1、R2)中的指令后,繼續(xù)從第一組指令預(yù)取緩沖器(L1、L2)中取指令執(zhí)行,并在第一組指令預(yù)取緩沖器(L1、L2)內(nèi)周而復(fù)始地交替工作,直到遇到跳轉(zhuǎn)指令;如果CPU在執(zhí)行第一組指令預(yù)取緩沖器(L1、L2)中的指令再次碰到跳轉(zhuǎn)指令,則跳轉(zhuǎn)的目的地址由總線接口的地址總線經(jīng)地址譯碼器譯碼送到跳轉(zhuǎn)地址判斷電路進(jìn)行判斷,當(dāng)跳轉(zhuǎn)的目的地址與第二組指令預(yù)取緩沖器(R1、R2)中指令的地址相同時(shí),通過(guò)SDRAM/DRAM邏輯控制電路控制CPU轉(zhuǎn)向從第二組指令預(yù)取緩沖器(R1、R2)中取指執(zhí)行;如果地址不同,則加鎖器電路在跳轉(zhuǎn)地址判斷電路的控制下發(fā)出解鎖信號(hào),將第二組指令預(yù)取緩沖器(R1、R2)中的指令內(nèi)容解鎖,并回到對(duì)第二組指令預(yù)取緩沖器(R1、R2)從片外SDRAM/DRAM存儲(chǔ)體中取指填充滿指令,由地址譯碼器經(jīng)跳轉(zhuǎn)地址判斷電路控制加鎖器電路對(duì)第二組指令預(yù)取緩沖器(R1、R2)進(jìn)行加鎖。
4.根據(jù)權(quán)利要求3所述的具有多通道指令預(yù)取功能的存儲(chǔ)控制電路,其特征是所述的SDRAM/DRAM邏輯控制電路中含有頁(yè)面不命中懲罰電路,其包含有頁(yè)面比較器,頁(yè)面命中計(jì)數(shù)器,當(dāng)前頁(yè)地址寄存器,在取指令填充指令預(yù)取緩沖器(L1、L2,R1、R2)時(shí)將頁(yè)地址記錄在打入當(dāng)前頁(yè)地址寄存器中;在起初取指填充指令預(yù)取緩沖器時(shí),地址信號(hào)通過(guò)總線接口的地址總線傳輸給片外SDRAM/DRAM存儲(chǔ)體,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出激活命令(Ac)打開(kāi)所要訪問(wèn)的頁(yè)面,經(jīng)激活等待時(shí)間(At)延遲后,當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)通過(guò)數(shù)據(jù)總線填充指令;當(dāng)CPU執(zhí)行來(lái)自當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)中的指令是跳轉(zhuǎn)指令時(shí),來(lái)自總線接口中地址總線的跳轉(zhuǎn)目的地址經(jīng)地址譯碼器送到SDRAM/DRAM邏輯控制電路中的頁(yè)面比較器與SDRAM/DRAM邏輯控制電路中的當(dāng)前頁(yè)地址寄存器的當(dāng)前頁(yè)地址進(jìn)行比較,當(dāng)比較結(jié)果是同一頁(yè)時(shí),頁(yè)面比較器的輸出使SDRAM/DRAM邏輯控制電路中的頁(yè)面命中計(jì)數(shù)器清零,當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)繼續(xù)按照片外SDRAM/DRAM存儲(chǔ)體頁(yè)命中的工作時(shí)序取指填充;當(dāng)比較結(jié)果不是在同一頁(yè)時(shí),SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出預(yù)充電命令(Pr)關(guān)閉當(dāng)前訪問(wèn)的頁(yè)面,并且頁(yè)面比較器的輸出使SDRAM/DRAM邏輯控制電路中的頁(yè)面命中計(jì)數(shù)器加1計(jì)數(shù)一次;當(dāng)頁(yè)面命中計(jì)數(shù)器計(jì)數(shù)值小于懲罰狀態(tài)設(shè)定值時(shí),SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出激活命令(Ac)打開(kāi)所要訪問(wèn)的頁(yè)面;當(dāng)頁(yè)面命中計(jì)數(shù)器計(jì)數(shù)值大于等于懲罰狀態(tài)設(shè)定值時(shí),即進(jìn)入懲罰狀態(tài),頁(yè)面命中計(jì)數(shù)器預(yù)置為關(guān)閉懲罰狀態(tài)設(shè)定值,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出激活命令(Ac)激活所要訪問(wèn)的頁(yè)面,當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)按照片外SDRAM/DRAM存儲(chǔ)體的工作時(shí)序取指填充,隨后,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出預(yù)充電命令(Pr)關(guān)閉當(dāng)前訪問(wèn)的頁(yè)面;在電路處在懲罰狀態(tài)下,當(dāng)CPU執(zhí)行來(lái)自當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)中的指令是跳轉(zhuǎn)指令時(shí),來(lái)自總線接口中地址總線的跳轉(zhuǎn)目的地址經(jīng)地址譯碼器送到SDRAM/DRAM邏輯控制電路中的頁(yè)面比較器與SDRAM/DRAM邏輯控制電路中的當(dāng)前頁(yè)地址寄存器的當(dāng)前頁(yè)地址進(jìn)行比較,當(dāng)比較結(jié)果不是同一頁(yè)時(shí),頁(yè)面比較器的輸出使頁(yè)面命中計(jì)數(shù)器重新置為關(guān)閉懲罰狀態(tài)設(shè)定值,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出激活命令(Ac)激活所要訪問(wèn)的頁(yè)面,當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)按照片外SDRAM/DRAM存儲(chǔ)體的工作時(shí)序取指填充;如果比較結(jié)果是當(dāng)前頁(yè)面,頁(yè)面比較器的輸出使頁(yè)面命中計(jì)數(shù)器減1計(jì)數(shù);當(dāng)頁(yè)面計(jì)數(shù)器的值為零時(shí),即退出懲罰狀態(tài),回到由SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出一次激活命令(Ac)激活需要訪問(wèn)的頁(yè)面,當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)從片外SDRAM/DRAM存儲(chǔ)體取指填充的工作狀態(tài);如果頁(yè)面命中計(jì)數(shù)器不為零,則仍在懲罰狀態(tài),由SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出激活命令(Ac)激活需要訪問(wèn)的頁(yè)面,然后當(dāng)前工作組的指令預(yù)取緩沖器(L1、L2,R1、R2)從片外SDRAM/DRAM存儲(chǔ)體取指填充,指令填充滿后,再由SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫(xiě)控制電路向片外SDRAM/DRAM存儲(chǔ)體發(fā)出預(yù)充電命令(Pr)關(guān)閉當(dāng)前訪問(wèn)的頁(yè)面。
5.根據(jù)權(quán)利要求4所述的具有多通道指令預(yù)取功能的存儲(chǔ)控制電路,其特征是所述的懲罰狀態(tài)設(shè)定值為兩次計(jì)數(shù),所述的關(guān)閉懲罰狀態(tài)設(shè)定值為四次計(jì)數(shù)。
全文摘要
本發(fā)明公開(kāi)了一種具有多通道指令預(yù)取功能的存儲(chǔ)控制電路,涉及微處理器內(nèi)部的存儲(chǔ)控制電路。包括有兩個(gè)指令預(yù)取緩沖器(L1、L2),SDRAM/DRAM邏輯控制電路,總線接口,地址譯碼器,地址比較器,SDRAM/DRAM讀寫(xiě)控制電路以及片外SDRAM/DRAM存儲(chǔ)體等。兩個(gè)通道指令預(yù)取緩沖器采用乒乓方式工作,從而使在讀取片外SDRAM/DRAM存儲(chǔ)體中的指令填充指令預(yù)取緩沖器時(shí),消除了CAS的等待時(shí)間。同時(shí)采用兩組指令預(yù)取緩沖器,減少了在程序出現(xiàn)循環(huán)時(shí)因打斷當(dāng)前正在工作的指令預(yù)取緩沖器,重新預(yù)取指令而增加的預(yù)充電和激活的等待時(shí)間。采用頁(yè)面不命中懲罰控制電路,減少了在程序連續(xù)出現(xiàn)跳轉(zhuǎn)時(shí)的預(yù)充電時(shí)間。
文檔編號(hào)G06F12/08GK101078979SQ20071002483
公開(kāi)日2007年11月28日 申請(qǐng)日期2007年6月29日 優(yōu)先權(quán)日2007年6月29日
發(fā)明者凌明, 張宇, 史先強(qiáng), 肖建, 陸生禮, 時(shí)龍興 申請(qǐng)人:東南大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1