具有多通道指令預取功能的存儲控制電路的製作方法
2023-09-21 03:22:00 1
專利名稱:具有多通道指令預取功能的存儲控制電路的製作方法
技術領域:
本發明涉及一種存儲器控制電路,尤其涉及一種具有多通道指令預取功能的SDRAM/DRAM存儲器控制電路。
背景技術:
SDRAM/DRAM(Synchronous Dynamic Random Access Memory/Dynamic RandomAccess Memory)是一種常用的同步動態隨機存儲器/動態隨機存儲器,以陣列方式存儲數據,因此,每個數據都具有行列地址。如圖1所示,當CPU讀取一個數據時,需向存儲器晶片組發起一個激活命令Ac,將該數據所在的行地址的所有數據均傳輸到敏感放大器上進行讀寫,其中,一行的數據稱之為一頁,大小通常是512~2048位元組,之後控制器再發讀命令RD或寫命令WR,即根據列地址在敏感放大器中找出所要讀取的數據。每次存取數據以組(Burst)為單位,其組可以是1、2、4、8或1024個字/字節等,每個命令之間都需要周期等待。當發出寫命令後,下一個周期就能寫入數據,但如果發出的是讀命令,將需要額外的2~3個等待周期,亦稱為CAS(ColumnAddress Strobe)等待。特別地,如果存取數據的行地址與當前敏感放大器的行地址不一致,將發生頁不命中,此時需要將原來頁的內容通過預充電命令Pr放回至存儲器晶片組中,再把需要存取數據的行的內容通過激活命令Ac將整頁的數據傳輸到敏感放大器中進行存取,如圖2所示。如果存取數據的行地址與當前敏感放大器的行地址一致,將發生頁命中,就可以直接訪問,不需要預充電命令Pr和激活命令Ac。在訪問SDRAM/DRAM存儲器時,還可採用訪問存儲器後就通過預充電命令Pr將當前頁面關閉,如圖3所示,該預充電命令Pr是在讀取存儲器時發起的,所以其操作時間與讀取存儲器時間重疊;在下一次訪問時,需要使用激活命令Ac先打開要訪問的頁面,才能進行存儲器的讀取或寫入。
在傳統的存儲器(如SDRAM/DRAM)硬體電路設計中,通常是根據外部存儲器的特性來設計訪問存儲器的控制電路。通常在SDRAM/DRAM控制器中引入緩衝器FIFO(FirstInput First Output)先進先出隊列來存儲數據。當SDRAM/DRAM控制器向SDRAM/DRAM存儲器請求訪問時,SDRAM/DRAM控制器以成組(Burst)的方式讀取存儲數據,一次成組的數量可以是1、2、4、8或1024個字/字節等。當數據被一次讀入到FIFO中後,處理器就訪問FIFO中的內容。如果此時處理器訪問完FIFO中的內容,且需要訪問下一個數據時,就需要SDRAM/DRAM控制器再次發起SDRAM/DRAM存儲器的訪問請求。在向SDRAM/DRAM存儲器發起訪問請求時,總存在一個CAS等待時間。因此,SDRAM/DRAM控制器每次向SDRAM/DRAM存儲器讀取數據時都要有一個額外的2~3個等待周期延遲。這個延遲使得處理器進入等待狀態,增加了程序執行的時間,降低了系統運行的效率。所以,如何降低讀數據等待延遲,減少CAS等待時間成為了SDRAM/DRAM控制器中的緩衝器優化設計的主要考慮因素之一。
發明內容
本發明的目的在於克服現有技術之不足,提供一種具有多通道指令預取功能的SDRAM/DRAM存儲器控制電路,降低讀數據等待延遲時間,從而提高微處理器執行程序的速度。
本發明的上述目的由以下技術方案實現本發明的具有多通道指令預取功能的存儲控制電路,如圖5所示,包括SDRAM/DRAM邏輯控制電路,指令預取緩衝器,地址比較器,總線接口,SDRAM/DRAM讀寫控制電路,地址解碼器,片外SDRAM/DRAM存儲體。指令預取緩衝器至少有兩個通道,如L1和L2,全部的指令預取緩衝器的字節數是片外SDRAM/DRAM存儲體的頁字節的整數倍。
SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路發出SDRAM/DRAM讀/寫控制信號,完成對片外SDRAM/DRAM存儲體的讀寫控制,通過總線接口的數據總線為指令預取緩衝器提供讀取得指令。指令預取緩衝器通過總線接口的數據總線為CPU中的指令寄存器提供需要執行的指令。地址解碼器在SDRAM/DRAM邏輯控制電路的控制下解析地址,並輸出給地址比較器,地址比較器產生地址命中信號控制指令預取緩衝器中的一個通道工作,為CPU提供需要執行的指令,地址比較器產生地址不命中信號傳送給SDRAM/DRAM邏輯控制電路,用於打斷CPU從指令預取緩衝器中取指以及控制為指令預取緩衝器重新從片外SDRAM/DRAM存儲體讀取指令。在CPU訪問片外SDRAM/DRAM存儲體讀取指令時,通過總線接口向SDRAM/DRAM邏輯控制電路發出總線請求信號,並通過總線接口中的地址總線將地址傳輸給地址解碼器。
地址比較器中寄存有指令預取緩衝器中所存放指令的地址,當CPU取指時,總線接口來的地址總線信號經地址解碼器解碼送到地址比較器與所存放的地址進行比較,如果此時兩者的地址相同,即地址命中,地址比較器產生地址命中信號,控制當前需要取指的指令預取緩衝器中的一個通道緩衝器工作,並通過總線接口中的數據總線直接從當前工作的指令預取緩衝器中的一個通道緩衝器取指令;如果CPU所需要執行的指令不在指令預取緩衝器中,即執行了跳轉指令,並且跳轉的目的地址不在指令預取緩衝器中指令的地址範圍,此時地址比較器經過地址比較產生地址不命中信號,並通知SDRAM/DRAM邏輯控制電路,打斷指令預取動作,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體按其工作時序要求先發出預充電命令Pr將當前頁面關閉,再發出激活命令Ac打開要訪問的頁面,指令預取緩衝器中的第一個通道指令預取緩衝器L1重新從跳轉指令的目的地址處從片外SDRAM/DRAM存儲體讀取指令,其後指令預取緩衝器中其他通道指令預取緩衝器順序從片外SDRAM/DRAM存儲體進行指令讀取。
當CPU順序執行指令時,所需要執行的指令從指令預取緩衝器中當前正在工作通道的緩衝器取完指令後,將轉向指令預取緩衝器中的下一個通道緩衝器去取指,所述的所有指令預取緩衝器的各通道在地址比較器輸出的地址命中信號控制下按順序周而復始地交替方式工作。當CPU訪問指令預取緩衝器中當前正在工作通道的指令預取緩衝器時,SDRAM/DRAM邏輯控制電路將按照設定的時序邏輯主動通過SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發起讀指令RD操作,以填充指令預取緩衝器中的下一個通道指令預取緩衝器,使得讀取指令和CAS等待時間重疊,從而保證當CPU訪問完當前工作通道的指令預取緩衝器時,可以無CAS延遲地訪問下一個通道指令預取緩衝器中存放的指令。
較為典型的是指令預取緩衝器有兩個通道L1和L2,即可保證CPU在順序執行指令時,可以無CAS等待時間地從指令預取緩衝器中取指執行指令。兩個通道指令預取緩衝器L1和L2交替桌球式工作,地址比較器有兩路輸出的地址命中信號分別控制兩個通道的指令預取緩衝器L1和L2交替桌球式工作,兩個通道指令預取緩衝器L1和L2與總線接口的數據總線相連。
本發明的優點及效果是提供一種可以使CPU從片外SDRAM/DRAM存儲體讀取指令時,減少CPU訪問片外SDRAM/DRAM存儲體的CAS等待時間。如圖4所示,在從SDRAM/DRAM存儲體中讀取指令填充指令預取緩衝器時,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路進行對指令預取緩衝器的一個通道緩衝器(如L1)從片外SDRAM/DRAM存儲體填充指令的同時,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出下一個讀指令命令RD,經過有CAS的等待時間,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路進行對指令預取緩衝器的一個通道緩衝器(如L2)從片外SDRAM/DRAM存儲體填充指令。SDRAM/DRAM讀寫控制電路發出下一個讀指令RD後的CAS等待時間與上一個從片外SDRAM/DRAM存儲體讀取指令填充指令預取緩衝器的時間相互重疊,從而保證了CPU順序執行指令時,可以無CAS等待時間地指令預取緩衝器中獲得需要執行的指令。
一般電腦程式中存在大量的循環結構,如for、while和do...while等語句結構,在指令的安排上表現為循環條件判斷-循環體-再回到循環條件判斷的指令組織結構,或者是循環體-循環條件判斷-再回到循環體的開始處。在循環結構的程序中,因存在跳轉指令,指令預取緩衝器的預取指操作會被同一條跳轉指令多次打斷,為減少CPU從指令預取緩衝器取指執行被打斷的次數,減少因增加對片外SDRAM/DRAM存儲體發出預充電命令Pr關閉當前頁面和發出激活命令Ac激活要訪問的頁面而帶來的CPU等待時間,本發明增設兩組指令預取緩衝器L1和L2以及R1和R2,指令預取緩衝器選擇電路,跳轉地址判斷電路,加鎖器電路,如圖6所示。指令預取緩衝器選擇電路受控於地址解碼器的輸出信號,其輸出兩路信號分別連接地址比較器1和地址比較器2,用於選擇一組指令預取緩衝器為當前的工作組,地址比較器1控制指令預取緩衝器的兩個通道L1和L2的內部切換工作,地址比較器2控制指令預取緩衝器的兩個通道R1和R2的內部切換工作,跳轉地址判斷電路受控於地址解碼器,其輸出控制加鎖器電路,加鎖器電路的輸出控制指令預取緩衝器的兩個通道R1和R2的取指鎖定與解鎖。在CPU執行循環結構的程序時,第二組指令預取緩衝器R1和R2用於存放循環條件判斷部分的指令,或者循環體開始部分的指令,第一組指令預取緩衝器周而復始地交替工作用於存放循環體部分的指令,從而減少了CPU執行跳轉指令時打斷當前正在工作的指令預取緩衝器重新取指的次數,減少了因需要對片外SDRAM/DRAM存儲體發出預充電命令Pr和激活命令Ac而使CPU處於等待的時間。
本發明的優點及效果還表現在當CPU執行循環結構的指令序列時,提供一種採用兩組指令預取緩衝器,減少因CPU在執行跳轉指令而打斷指令預取緩衝器預取指令操作的次數,從而減少SDRAM/DRAM讀寫控制電路對片外SDRAM/DRAM存儲體發出預充電命令Pr和激活命令Ac的次數,減少CPU訪問外存時的等待時間。使用第二組指令預取緩衝器鎖定循環程序結構的條件判斷部分的指令,或者循環體開始部分的指令,使用第一組指令預取緩衝器執行循環體部分的指令,從而減少了因循環體指令執行結束返回到條件判斷部分指令執行這一過程的打斷指令預取操作的次數,或者經循環條件判斷返回到循環體開始處這一過程的打斷指令預取操作的次數。當CPU執行指令為跳轉指令時,跳轉的目的地址通過總線接口的地址總線送到地址解碼器,其輸出送到地址比較器1和地址比較器2,地址比較器與跳轉的目的地址進行比較,如果跳轉的目的地址在當前正在工作的指令預取緩衝器中指令的地址範圍內,CPU繼續在當前工作的指令預取緩衝器中取指執行;如果跳轉的目的地址不在當前正在工作的指令預取緩衝器中指令的地址範圍內,也不在第二組指令預取緩衝器中指令的地址範圍內,則打斷當前正在工作的指令預取緩衝器工作,轉到由第二組指令預取緩衝器預取工作,CPU在第二組指令預取緩衝器中取指執行;如果跳轉的目的地址不在當前正在工作的指令預取緩衝器中指令的地址範圍內,而在第二組指令預取緩衝器中指令的地址範圍內,則轉到由第二組指令預取緩衝器預取工作並鎖定第二組指令預取緩衝器,此時,第二組指令預取緩衝器鎖定循環結構程序的條件判斷部分的指令,或者循環體開始部分的指令。
本發明在SDRAM/DRAM邏輯控制電路中設置有一頁不命中懲罰電路,如圖7所示,其包含有頁面比較器,頁面命中計數器,當前頁地址寄存器。在取指令填充指令預取緩衝器時將頁地址打入當前頁地址寄存器中,來自總線接口中地址總線的跳轉目的地址經地址解碼器送到SDRAM/DRAM邏輯控制電路中的頁面比較器與SDRAM/DRAM邏輯控制電路中的當前頁地址寄存器的當前頁地址進行比較,頁面比較器輸出的比較結果對頁面命中計數器進行加1、減1或置數操作。當CPU執行跳轉指令並且轉移的目的地址連續不在當前頁面中的次數超過懲罰狀態設定值時,啟動頁不命中懲罰電路,改變對片外SDRAM/DRAM存儲體的讀取指令的控制方式,採用發出激活命令Ac激活所要訪問的頁面,指令預取緩衝器取指填充,隨後,發出預充電命令Pr關閉當前訪問的頁面的工作方式,從而使預充電所需等待時間Pt與讀取指令填充指令預取緩衝器的時間重疊,減少CPU執行指令的等待時間。當CPU執行跳轉指令並且轉移的目的地址連續在當前頁面中的次數超過關閉懲罰狀態設定值時,關閉頁不命中懲罰電路,退出懲罰狀態,恢復到對片外SDRAM/DRAM存儲體的讀取指令的控制方式,採用直接從片外SDRAM/DRAM存儲體的當前頁面讀取指令填充指令預取緩衝器的工作方式。一般懲罰狀態設定值為兩次計數,關閉懲罰狀態設定值為四次計數。
本發明的優點及效果還表現在指令預取緩衝器預取指令時,連續出現跳轉指令,並且跳轉的目的地址均不在當前頁面中,此時,在每一次對指令預取緩衝器預取指令時,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出預充電命令Pr關閉當前頁面,使預充電等待時間Pt與讀取指令的時間重疊,如圖3所示。從而減少當CPU執行跳轉指令並且連續跳轉不在當前頁面時的等待時間。
圖1是SDRAM/DRAM頁命中時的讀寫時序圖;圖2是SDRAM/DRAM頁不命中時的讀寫時序圖;圖3是訪問SDRAM/DRAM後即關閉頁面的時序圖;圖4是本發明的雙通道預取指令緩衝器訪問SDRAM/DRAM時序圖;圖5是本發明的雙通道預取指令存儲控制電路原理圖;圖6是本發明的兩組雙通道預取指令存儲控制電路原理圖;圖7是本發明的頁不命中懲罰電路原理圖;
圖8是本發明的兩組雙通道預取指令存儲控制電路工作流程圖;圖9是本發明的頁不命中懲罰電路工作流程圖;圖10是循環條件判斷在前的循環語句流程圖;圖11是循環條件判斷在後的循環語句流程圖。
附圖符號說明At激活等待時間;Pt預充電等待時間;CAS讀操作等待時間;Ac激活命令;Pr預充電命令;RD讀操作;WR寫操作;Dx總線上的傳輸數據。
具體實施例方式
下面結合附圖與具體實施方式
對本發明作進一步詳細描述。
如圖5所示,雙通道預取指令存儲控制電路,其中包括兩個通道的指令預取緩衝器L1和L2。指令預取緩衝器L1和L2的字節數是片外SDRAM/DRAM存儲體的頁字節的整數倍,如每個通道預取指令緩衝器長度為32Bytes,即4條指令,片外SDRAM/DRAM存儲體的頁字節數應為64的整數倍。指令預取緩衝器在從片外SDRAM/DRAM存儲體預取指令時,具有數據對齊功能,即指令預取緩衝器的第一個通道存放的第一條指令應當來源於片外SDRAM/DRAM存儲體頁內地址為64的整數倍存放的指令,可以是0、64、128、192、......等地址存放的指令,該功能由地址解碼器完成。雙通道預取指令緩衝器L1和L2採用桌球工作方式,當第一個通道指令預取緩衝器L1在SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路讀取片外SDRAM/DRAM存儲體中4條指令填充的同時,發出下一個讀指令命令RD,在CAS讀取等待時間結束時完成前4條的讀取和填充,即可進行下4條指令的讀取並填充第二個通道指令預取緩衝器L2。在CPU結束第一個通道4條指令的訪問後,可以無等待地讀取第二個通道指令預取緩衝器L2裡面的指令執行,同時第一個通道指令預取緩衝器L1預取接下來的4條指令。兩個通道如此反覆的交替工作,使得CAS讀取等待時間重疊,再者,因為指令預取緩衝器是在片內的,所以CPU對它的訪問無需等待。如果CPU是以流水線的方式取指令工作,則每一個時鐘可以執行一條指令,當CPU經過四個時鐘周期把指令預取緩衝器L1裡的指令執行完畢後,指令預取緩衝器L2已經填滿,CPU可以無CAS等待地執行指令預取緩衝器L2中的下一條指令;此時的指令預取緩衝器L1中的指令被執行過,因此可以通過SDRAM/DRAM邏輯控制電路接著片外SDRAM/DRAM存儲體發起讀指令請求,填充下一個4條指令。L1與L2以桌球的工作方式保證了CPU始終是在無CAS時鐘周期等待的情況下運行,提高了取指令的效率,加快了系統運行速度。縮短了系統的執行時間。兩個通道的指令預取緩衝器L1和L2可以是不等長度的,從方便具體電路設計考慮,等長的指令預取緩衝器為優選。指令預取緩衝器可以是兩個通道以上,當指令預取緩衝器有多個通道時,各通道預取指令在地址比較器的控制下,按照順序填充,並循環周而復始地輪流工作,某一時刻只有一個通道的指令預取緩衝器工作填充指令。從方便具體電路設計考慮,兩個指令預取緩衝器即可實現CPU無CAS等待時間地執行指令,而且電路設計簡單,故為優選方案。
程序中存在大量的循環結構,如圖10和圖11所示,從其生成目標代碼來看,一般有兩種結構,圖10為循環條件判斷在前的循環語句結構流程圖,即循環條件判斷在前,循環體在後。圖11為循環條件判斷在後的循環語句結構流程圖,即開始為循環體,其後為循環條件判斷。當CPU執行循環指令序列時,會多次執行同一條跳轉指令,多次打斷指令預取緩衝器的預取指操作,為此本發明通過增加一組指令預取緩衝器來減少指令預取的打斷次數。如圖6所示,兩組雙通道預取指令存儲控制電路,與圖5相比,多了一組指令預取緩衝器R1和R2,同時在地址解碼電路和地址比較電路之間增加了一個指令預取緩衝器選擇電路,該電路用於選擇當前是哪一組指令預取緩衝器在工作。同時還增加了一個跳轉地址判斷電路,判斷程序是否出現循環狀態。還增加了一個對第二組指令預取緩衝器R1和R2進行鎖定和解鎖的加鎖器電路,當程序出現循環結構時,使用第二組指令預取緩衝器鎖定循環程序結構的條件判斷部分的指令,或者循環體開始部分的指令,使用第一組指令預取緩衝器執行循環體部分的指令,從而減少了因循環返回跳轉這一過程的打斷指令預取操作的次數。結合圖8所示來說明,兩組雙通道預取指令存儲控制電路工作過程開始CPU訪問片外SDRAM/DRAM存儲體讀取指令時,通過總線接口向SDRAM/DRAM邏輯控制電路發出總線請求信號,並通過總線接口中的地址總線將地址傳輸給地址解碼器,地址解碼器在SDRAM/DRAM邏輯控制電路的控制下解析地址,並輸出給指令預取緩衝器選擇電路用於選擇第一組指令預取緩衝器為當前工作組,為CPU提供需要執行的指令。當CPU執行跳轉指令且不命中第一組指令預取緩衝器L1和L2的指令地址時,即地址比較器1輸出不命中信號給SDRAM/DRAM邏輯控制電路。在SDRAM/DRAM邏輯控制電路的控制下,地址解碼器控制指令預取緩衝器選擇電路選擇第二組指令預取緩衝器R1和R2工作,只進行一次指令讀取填充並鎖定SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體按其工作時序要求先發出預充電命令Pr將當前頁面關閉,經過預充電等待時間Pt後再發出激活命令Ac打開要訪問的頁面,經過激活等待時間At再發出讀操作命令RD,經過CAS等待時間,第二組指令預取緩衝器R1和R2重新從跳轉指令的目的地址處從片外SDRAM/DRAM存儲體讀取指令,當第二組指令預取緩衝器R1和R2取指填充滿指令後,由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器R1和R2進行加鎖,然後就轉向對第一組指令預取緩衝器L1和L2取指填充。此時,CPU執行完第二組緩衝器中的指令時,轉回第一組緩衝器去取指執行,第一組指令預取緩衝器繼續為CPU提供預取指令。如果CPU取指執行第二組指令預取緩衝器中的指令有跳轉指令且轉移的目的地址超出第二組指令緩衝器中指令的地址範圍,由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器R1和R2進行解鎖,CPU打斷執行第二組指令預取緩衝器中的指令,重新跳轉指令的目的地址處從片外SDRAM/DRAM存儲體讀取指令填充第二組指令預取緩衝器R1和R2一次,由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器R1和R2進行加鎖,CPU繼續從第二組指令預取緩衝器中取指執行。當執行完第二組指令預取緩衝器中的指令後,繼續從第一組指令預取緩衝器L1和L2中取指令執行,並在第一組指令預取緩衝器L1和L2內周而復始地交替工作。如果CPU在執行第一組指令預取緩衝器中的指令再次碰到跳轉指令,則跳轉的目的地址由總線接口的地址總線經地址解碼器解碼送到跳轉地址判斷電路進行判斷當跳轉的目的地址與第二組指令預取緩衝器中指令的地址相同時,說明第二組指令預取緩衝器鎖定循環條件判斷部分的指令,或者鎖定循環體開始部分的指令,通過SDRAM/DRAM邏輯控制電路控制CPU轉向從第二組指令預取緩衝器中取指執行;如果地址不同,則加鎖器電路在跳轉地址判斷電路的控制下發出解鎖信號,將第二組指令預取緩衝器R1和R2中的指令內容解鎖,並回到對第二組指令預取緩衝器R1和R2從片外SDRAM/DRAM存儲體中取指填充滿,由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器R1和R2進行加鎖。如此周而復始地工作,始終企圖通過第二組指令預取緩衝器來存放循環程序結構的條件判斷部分的指令序列,或者循環體開始部分的指令序列,使用第一組指令預取緩衝器的不斷預取指令為CPU提供循環體部分指令的執行。這種兩組指令預取緩衝器結構電路以及控制工作的方法適用於如for、while和do...while...等循環語句,這些循環語句在編譯後生成指令序列時,往往是條件判斷部分的指令序列在前面,循環體指令序列在後面,如圖10所示,或者是循環體在前,循環條件判斷在後,如圖11所示。
當程序在執行過程中發生跳轉,而該跳轉的地址範圍超過了片外SDRAM/DRAM存儲體當前存放在敏感放大器裡的地址時,外部存儲器發生頁面不命中事件。此時需要使用預充電命令Pr關閉當前頁面,再使用激活命令Ac打開所要訪問的頁面。這一預充電到激活過程使得CPU處於等待狀態,增加了程序的執行時間,降低了系統的性能,本發明技術方案中採用具有頁不命中懲罰控制電路來減少這種等待時間。從圖3中可以看出,如果採用讀取指令後就關閉頁面的做法,則每次都需要發起激活命令Ac,增加了處理器的等待時問。但如果每次訪問外部存儲器都發生頁面不命中時,則可以省去預充電命令Pr帶來的等待時間。因此,本發明的設計方案是當連續訪問外部存儲器時都是在同一個頁面時,可以不必要採用讀取指令RD後就關閉頁面的做法,而是一直將頁面打開;當訪問外部存儲器時連續出現所訪問的指令地址不在同一頁範圍內,則採用讀取指令RD後就關閉頁面的做法,即每次訪問結束後始終關閉存儲器頁面,以節約預充電操作時間Pt。圖7為頁面不命中懲罰電路,在SDRAM/DRAM邏輯控制電路中增加有頁面比較器,頁面命中計數器,當前頁地址寄存器。其控制過程如圖9所示一開始先激活所需要訪問的頁面,然後CPU取指令。然後判斷當前所取指令是否在當前頁面中(即頁命中),如果是,則頁面命中計數器清0,然後繼續CPU取指;反之,此時發生頁面不命中,則需要預充電命令Pr關閉當前頁面,同時頁面命中計數器加1。然後再判斷頁面命中計數器當前的計數值是否超過2,如果是,則證明連續兩次頁面不命中,進入懲罰狀態;否則,如果計數值沒有超過2,則直接激活所要訪問的頁面,並且讓CPU取指令。當電路進入懲罰狀態時,設置頁面命中計數器為4,並激活所要訪問的頁面,然後同時執行取指令和預充電命令Pr,這樣可以省去下一次的預充電操作時間Pt。然後判斷取指是否頁命中,如果頁面不命中,則頁面命中計數器重新設置為4,再回到激活、讀取指令、預充電關閉頁面的工作方式;否則,頁面命中計數器減1,隨後判斷當前頁面命中計數器是否為0,如果為0,則證明有連續四次的頁命中,應該退出頁面不命中懲罰狀態;否則,則還在懲罰狀態,激活所要訪問的頁面,依舊同時執行取指令和預充電命令。
對於具有兩組指令預取緩衝器的電路可以在進行預取指是否命中當前頁面判斷的同時,對是否命中另一組指令預取緩衝器中指令的地址進行判斷,如果命中也可視為命中頁面並轉入另一組指令預取緩衝器工作。電路進入懲罰狀態的條件可以連續兩次不命中,也可以是連續三次不命中等。電路退出懲罰狀態的條件可以是連續四次命中,也可以是三次等。
採用雙通道預取指令緩衝器的桌球工作方式,在讀指令時覆蓋CAS等待時間,可以大大降低指令執行時間。而採用兩組指令預取緩衝器的工作方式,可以避免很多因為循環跳轉而重新填充預取指令緩衝器的情況。通過使用頁面不命中懲罰控制電路,使得程序在執行過程中可以節約很多預充電操作和預充電一激活操作帶來的處理器等待時間。在引入了雙通道預取指令緩衝器之後,比傳統嵌入式系統在性能上平均提升了40%,功耗也因頁面不命中率的減少而降低。傳統的SDRAM/DRAM控制器在進行一次成組傳輸時(如一次成組傳輸為4個字),則首先需要2~3個CAS的時鐘等待,然後是4個時鐘周期的傳輸時間(傳一個字需要一個時鐘時間),所以總共需要6~7個時鐘周期才能填充好FIFO,只有填充好FIFO後處理器才能讀取指令。根據處理器的流水性作業特徵,執行一個指令只需消耗一個時鐘周期。因此,從取這四條指令(每條指令佔一個字)指令到執行完指令實際消耗的周期數為10~11。在引入預取功能後,在第一個通道指令預取緩衝器填充好後,第二個通道指令預取緩衝器便開始填充,所以當處理器訪問完第一個通道指令預取緩衝器後,便可以無等待的訪問第二個通道指令預取緩衝器。因此,只要指令是順序執行,就可以始終無延遲的取指令。在這種情況下,從取指令到指令執行完畢系統總共消耗了4個時鐘周期。可以看出其效率大為提升,提升比例約為64%((11-4)/11)。而在多媒體實驗中,訪問指令時間佔到了總的執行時間的64%左右,所以在引入指令預取功能後,系統總的提升時間約為64%×64%=40%。通過了MP3、JPEG、MPEG-4等多媒體實驗證明,其性能平均提升實為40%左右。
權利要求
1.一種具有多通道指令預取功能的存儲控制電路,包括總線接口,SDRAM/DRAM讀寫控制電路,地址解碼器,片外SDRAM/DRAM存儲體,SDRAM/DRAM讀寫控制電路發出SDRAM/DRAM讀/寫控制信號,完成對片外SDRAM/DRAM存儲體的讀寫控制;其特徵在於還包括有地址比較器,SDRAM/DRAM邏輯控制電路,至少兩個通道的指令預取緩衝器(L1、L2)通過總線接口的數據總線為CPU中的指令寄存器提供需要執行的指令,全部的指令預取緩衝器(L1、L2)的字節數是片外SDRAM/DRAM存儲體的頁面字節的整數倍,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路工作;在CPU訪問片外SDRAM/DRAM存儲體讀取指令時,通過總線接口向SDRAM/DRAM邏輯控制電路發出總線請求信號,並通過總線接口中的地址總線將地址傳輸給地址解碼器,地址解碼器在SDRAM/DRAM邏輯控制電路的控制下解析地址,並輸出給地址比較器,地址比較器產生地址命中信號控制指令預取緩衝器(L1、L2)中的一個通道工作,為CPU提供需要執行的指令,地址比較器產生地址不命中信號傳送給SDRAM/DRAM邏輯控制電路,用於打斷CPU從指令預取緩衝器(L1、L2)中取指並讓指令預取緩衝器(L1、L2)重新從片外SDRAM/DRAM存儲體讀取指令;地址比較器中寄存有指令預取緩衝器(L1、L2)中所存放指令的地址,當CPU取指時,總線接口傳遞來的地址總線信號經地址解碼器解碼送到地址比較器與所存放的地址進行比較,如果此時兩者的地址相同,即地址命中,地址比較器產生地址命中信號,控制當前需要取指的指令預取緩衝器(L1、L2)中的一個通道緩衝器工作,並通過總線接口中的數據總線直接從當前工作的指令預取緩衝器(L1、L2)中的一個通道緩衝器取指令;如果CPU所需要執行的指令不在指令預取緩衝器(L1、L2)中,即執行了跳轉指令,此時地址比較器經過地址比較產生地址不命中信號,並通知SDRAM/DRAM邏輯控制電路,打斷指令預取動作,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體按其工作時序要求先發出預充電命令(Pr)將當前頁面關閉,經預充電等待時間(Pt)延遲後,再發出激活命令(Ac)打開要訪問的頁面,經激活等待時間(At)延遲後,指令預取緩衝器(L1、L2)中的第一個通道指令預取緩衝器(L1)重新從跳轉指令的目的地址處從片外SDRAM/DRAM存儲體讀取指令,其後指令預取緩衝器(L1、L2)中其他通道指令預取緩衝器順序從片外SDRAM/DRAM存儲體進行讀取指令;當CPU順序執行指令時,所需要執行的指令從指令預取緩衝器(L1、L2)中當前正在工作通道的緩衝器取完指令後,將轉向指令預取緩衝器(L1、L2)中的下一個通道緩衝器去取指,所述的所有指令預取緩衝器(L1、L2)在地址比較器輸出的地址命中信號控制下按順序周而復始地交替方式工作;當CPU訪問指令預取緩衝器(L1、L2)中當前正在工作通道的指令預取緩衝器時,SDRAM/DRAM邏輯控制電路將按照設定的時序邏輯主動通過SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發起讀指令(RD)操作,以填充指令預取緩衝器(L1、L2)中的下一個通道指令預取緩衝器,保證當CPU訪問完當前工作通道的指令預取緩衝器時,可以無CAS延遲地訪問下一個通道指令預取緩衝器中存放的指令。
2.根據權利要求1所述的具有多通道指令預取功能的存儲控制電路,其特徵是所述的指令預取緩衝器(L1、L2)有兩個通道,第一通道指令預取緩衝器(L1)和第二通道指令預取緩衝器(L2)交替桌球式工作,所述的地址比較器有兩路輸出的地址命中信號分別控制兩個通道的指令預取緩衝器(L1、L2)交替桌球式工作,所述的兩個通道指令預取緩衝器(L1、L2)與總線接口的數據總線相連。
3.根據權利要求1或2所述的具有多通道指令預取功能的存儲控制電路,其特徵在於還有指令預取緩衝器選擇電路,跳轉地址判斷電路,加鎖器電路,所述的指令預取緩衝器(L1、L2,R1、R2)有兩組;指令預取緩衝器選擇電路受控於所述的地址解碼器的輸出信號,其輸出兩路信號分別連接地址比較器1和地址比較器2,用於選擇一組指令預取緩衝器為當前的工作組,地址比較器1控制第一組指令預取緩衝器(L1、L2)的內部切換工作,地址比較器2控制第二組指令預取緩衝器(R1、R2)的內部切換工作,跳轉地址判斷電路受控於地址解碼器,其輸出控制加鎖器電路,加鎖器電路的輸出控制第二組指令預取緩衝器(R1、R2)的取指鎖定與解鎖;在CPU順序執行指令時,地址解碼器控制指令預取緩衝器選擇電路選擇第一組指令預取緩衝器(L1、L2)工作,當CPU第一次執行跳轉指令且不命中第一組指令預取緩衝器(L1、L2)時,地址解碼器控制指令預取緩衝器選擇電路選擇第二組指令預取緩衝器(R1、R2)工作,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體按其工作時序要求先發出預充電命令(Pr)將當前頁面關閉,經預充電等待時間(Pt)延遲後,再發出激活命令(Ac)打開要訪問的頁面,經激活等待時間(At)延遲後,第二組指令預取緩衝器(R1、R2)重新從跳轉指令的目的地址處從片外SDRAM/DRAM存儲體讀取指令,當第二組指令預取緩衝器(R1、R2)取指填充滿指令後,由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器(R1、R2)進行加鎖,然後就轉向對第一組指令預取緩衝器(L1、L2)取指填充;SDRAM/DRAM邏輯控制電路控制CPU從第二組指令預取緩衝器(R1、R2)中獲取指令執行,當CPU取指執行第二組指令預取緩衝器(R1、R2)中的指令有跳轉指令且轉移的目的地址超出第二組指令緩衝器(R1、R2)中指令的地址範圍時,由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器(R1、R2)進行解鎖,CPU打斷執行第二組指令預取緩衝器(R1、R2)中的指令,重新跳轉指令的目的地址處從片外SDRAM/DRAM存儲體讀取指令填充第二組指令預取緩衝器(R1、R2),由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器(R1、R2)進行加鎖,CPU繼續從第二組指令預取緩衝器(R1、R2)中取指執行;當執行完第二組指令預取緩衝器(R1、R2)中的指令後,繼續從第一組指令預取緩衝器(L1、L2)中取指令執行,並在第一組指令預取緩衝器(L1、L2)內周而復始地交替工作,直到遇到跳轉指令;如果CPU在執行第一組指令預取緩衝器(L1、L2)中的指令再次碰到跳轉指令,則跳轉的目的地址由總線接口的地址總線經地址解碼器解碼送到跳轉地址判斷電路進行判斷,當跳轉的目的地址與第二組指令預取緩衝器(R1、R2)中指令的地址相同時,通過SDRAM/DRAM邏輯控制電路控制CPU轉向從第二組指令預取緩衝器(R1、R2)中取指執行;如果地址不同,則加鎖器電路在跳轉地址判斷電路的控制下發出解鎖信號,將第二組指令預取緩衝器(R1、R2)中的指令內容解鎖,並回到對第二組指令預取緩衝器(R1、R2)從片外SDRAM/DRAM存儲體中取指填充滿指令,由地址解碼器經跳轉地址判斷電路控制加鎖器電路對第二組指令預取緩衝器(R1、R2)進行加鎖。
4.根據權利要求3所述的具有多通道指令預取功能的存儲控制電路,其特徵是所述的SDRAM/DRAM邏輯控制電路中含有頁面不命中懲罰電路,其包含有頁面比較器,頁面命中計數器,當前頁地址寄存器,在取指令填充指令預取緩衝器(L1、L2,R1、R2)時將頁地址記錄在打入當前頁地址寄存器中;在起初取指填充指令預取緩衝器時,地址信號通過總線接口的地址總線傳輸給片外SDRAM/DRAM存儲體,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出激活命令(Ac)打開所要訪問的頁面,經激活等待時間(At)延遲後,當前工作組的指令預取緩衝器(L1、L2,R1、R2)通過數據總線填充指令;當CPU執行來自當前工作組的指令預取緩衝器(L1、L2,R1、R2)中的指令是跳轉指令時,來自總線接口中地址總線的跳轉目的地址經地址解碼器送到SDRAM/DRAM邏輯控制電路中的頁面比較器與SDRAM/DRAM邏輯控制電路中的當前頁地址寄存器的當前頁地址進行比較,當比較結果是同一頁時,頁面比較器的輸出使SDRAM/DRAM邏輯控制電路中的頁面命中計數器清零,當前工作組的指令預取緩衝器(L1、L2,R1、R2)繼續按照片外SDRAM/DRAM存儲體頁命中的工作時序取指填充;當比較結果不是在同一頁時,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出預充電命令(Pr)關閉當前訪問的頁面,並且頁面比較器的輸出使SDRAM/DRAM邏輯控制電路中的頁面命中計數器加1計數一次;當頁面命中計數器計數值小於懲罰狀態設定值時,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出激活命令(Ac)打開所要訪問的頁面;當頁面命中計數器計數值大於等於懲罰狀態設定值時,即進入懲罰狀態,頁面命中計數器預置為關閉懲罰狀態設定值,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出激活命令(Ac)激活所要訪問的頁面,當前工作組的指令預取緩衝器(L1、L2,R1、R2)按照片外SDRAM/DRAM存儲體的工作時序取指填充,隨後,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出預充電命令(Pr)關閉當前訪問的頁面;在電路處在懲罰狀態下,當CPU執行來自當前工作組的指令預取緩衝器(L1、L2,R1、R2)中的指令是跳轉指令時,來自總線接口中地址總線的跳轉目的地址經地址解碼器送到SDRAM/DRAM邏輯控制電路中的頁面比較器與SDRAM/DRAM邏輯控制電路中的當前頁地址寄存器的當前頁地址進行比較,當比較結果不是同一頁時,頁面比較器的輸出使頁面命中計數器重新置為關閉懲罰狀態設定值,SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出激活命令(Ac)激活所要訪問的頁面,當前工作組的指令預取緩衝器(L1、L2,R1、R2)按照片外SDRAM/DRAM存儲體的工作時序取指填充;如果比較結果是當前頁面,頁面比較器的輸出使頁面命中計數器減1計數;當頁面計數器的值為零時,即退出懲罰狀態,回到由SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出一次激活命令(Ac)激活需要訪問的頁面,當前工作組的指令預取緩衝器(L1、L2,R1、R2)從片外SDRAM/DRAM存儲體取指填充的工作狀態;如果頁面命中計數器不為零,則仍在懲罰狀態,由SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出激活命令(Ac)激活需要訪問的頁面,然後當前工作組的指令預取緩衝器(L1、L2,R1、R2)從片外SDRAM/DRAM存儲體取指填充,指令填充滿後,再由SDRAM/DRAM邏輯控制電路控制SDRAM/DRAM讀寫控制電路向片外SDRAM/DRAM存儲體發出預充電命令(Pr)關閉當前訪問的頁面。
5.根據權利要求4所述的具有多通道指令預取功能的存儲控制電路,其特徵是所述的懲罰狀態設定值為兩次計數,所述的關閉懲罰狀態設定值為四次計數。
全文摘要
本發明公開了一種具有多通道指令預取功能的存儲控制電路,涉及微處理器內部的存儲控制電路。包括有兩個指令預取緩衝器(L1、L2),SDRAM/DRAM邏輯控制電路,總線接口,地址解碼器,地址比較器,SDRAM/DRAM讀寫控制電路以及片外SDRAM/DRAM存儲體等。兩個通道指令預取緩衝器採用桌球方式工作,從而使在讀取片外SDRAM/DRAM存儲體中的指令填充指令預取緩衝器時,消除了CAS的等待時間。同時採用兩組指令預取緩衝器,減少了在程序出現循環時因打斷當前正在工作的指令預取緩衝器,重新預取指令而增加的預充電和激活的等待時間。採用頁面不命中懲罰控制電路,減少了在程序連續出現跳轉時的預充電時間。
文檔編號G06F12/08GK101078979SQ20071002483
公開日2007年11月28日 申請日期2007年6月29日 優先權日2007年6月29日
發明者凌明, 張宇, 史先強, 肖建, 陸生禮, 時龍興 申請人:東南大學