專利名稱:一種ddr控制器及請求調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字集成電路DDR控制器設(shè)計領(lǐng)域,具體說是一種DDR控制器及請求調(diào)度方法。所述DDR指DDR2/3 (DDR2或DDR3)。
背景技術(shù):
隨著計算機系統(tǒng)的迅速發(fā)展,現(xiàn)代計算機系統(tǒng)越來越受主存儲器性能的限制。處理器的性能以每年60%的速度在增長,而主存儲器芯片帶寬僅僅以每年10%的速度在增長。在速度方面,主存儲器和處理器一直保持了大約一個數(shù)量級的差距。為使主存儲器帶寬能夠匹配處理器性能所花費的代價越來越大,計算機系統(tǒng)設(shè)計者必須盡力去縮小處理器和主存儲器之間的性能差距。DDR2/3控制器的請求調(diào)度方法就是對主存儲器訪問的相關(guān)操作進行合理調(diào)度的技術(shù),通過該調(diào)度縮短訪存時間,從而達到提高主存儲器帶寬的目的。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種DDR控制器及請求調(diào)度方法,應(yīng)用于高速通信系統(tǒng)傳輸芯片設(shè)計中數(shù)據(jù)的存儲及轉(zhuǎn)發(fā),相比較傳統(tǒng)控制器,采用基于DRAM結(jié)構(gòu)特性的請求調(diào)度,大大降低請求的延遲,提高傳輸時數(shù)據(jù)總線的利用率,相同配置下可以得到更大總線帶寬。為達到以上目的,本發(fā)明采取的技術(shù)方案是:一種DDR控制器,其特征在于,包括:AHB接口適配模塊10,若干客戶請求發(fā)送模塊11,客戶接口模塊12,端口調(diào)度模塊13,BANK調(diào)度模塊14,解釋模塊15,PUB_PHY適配模塊16,DDR2/3PHY模塊17,DDR2/3器件18,接口數(shù)據(jù)緩存模塊19,數(shù)據(jù)處理模塊20,微機口配置模塊21,時鐘管理模塊22 ;AHB接口適配模塊10完成將AHB總線上的請求轉(zhuǎn)換到DDR控制器設(shè)計的私有接口,并將轉(zhuǎn)換后的請求輸出到客戶接口模塊12 ;客戶請求發(fā)送模塊11完成客戶請求適配到DDR控制器設(shè)計的私有接口,并將轉(zhuǎn)換后的請求輸出到客戶接口模塊12 ;客戶接口模塊12完成應(yīng)用客戶請求吸收和數(shù)據(jù)交換,客戶地址到DDR地址的映射,讀寫請求地址分配和回收,并具有分配地址檢錯保護能力,讀、寫請求順序響應(yīng)功能,客戶時鐘域與DDR3C核心控制層時鐘域的相互切換功能;端口調(diào)度模塊13,其完成根據(jù)不同端口配置的請求的優(yōu)先級對請求的執(zhí)行順序進行調(diào)度,將請求根據(jù)端口優(yōu)先級順序輸出給BANK調(diào)度模塊14 ; BANK調(diào)度模塊14完成根據(jù)請求的BANK地址及讀寫類型來進行請求順序的調(diào)整,輸出給下游解釋模塊15,目的是盡可能的將相同BANK地址的請求分散開,將相同讀寫類型的請求連續(xù)起來,從而使下游解釋模塊的解釋命令效率更高;解釋模塊15,主要完成維持DRAM的刷新、對業(yè)務(wù)的讀寫請求進行命令調(diào)度,按照DDR2/3協(xié)議將仲裁后的客戶讀、寫請求解釋為DRAM命令,完成請求業(yè)務(wù)的分割,完成DDR自刷新模式及省電模式功能;PUB_PHY適配模塊16主要完成控制器輸出的DRAM命令和讀、寫數(shù)據(jù)與不同廠家DDR-PHY的適配;其實現(xiàn)DRAM的初始化及通過微機口來對DRAM進行測試的功能;DDR2/3PHY模塊17完成DDR控制器和DDR2/3器件18之間的連接,進行電氣信號的轉(zhuǎn)換、寫電平校準、讀數(shù)據(jù)采集和讀取數(shù)據(jù)偏移校正等工作;接口數(shù)據(jù)緩存模塊19緩存接口發(fā)來的讀寫數(shù)據(jù);數(shù)據(jù)處理模塊20包括讀數(shù)據(jù)處理模塊201和寫數(shù)據(jù)處理模塊202兩部分,在讀/寫接口緩沖的數(shù)據(jù)讀取/寫入過程,基于每次分割后的列動作,產(chǎn)生接口緩沖的讀/寫信息,計算命令到數(shù)據(jù)的整個路徑延時;微機口配置模塊21通過微機口來配置控制器需要使用的各種參數(shù)配置,以滿足不同應(yīng)用需求;時鐘管理模塊22提供設(shè)計所需要的時鐘源。在上述技術(shù)方案的基礎(chǔ)上,所述客戶請求發(fā)送模塊11根據(jù)客戶要求支持讀寫合一端口、單獨寫端口或單獨讀端口。在上述技術(shù)方案的基礎(chǔ)上,客戶接口模塊12具有自檢功能,在沒有客戶請求的情況下能發(fā)出一系列具有校驗性質(zhì)的讀寫請求。在上述技術(shù)方案的基礎(chǔ)上,端口調(diào)度模塊13作為仲裁調(diào)度模塊,其在遇到相同優(yōu)先級下采用輪詢調(diào)度的方法,保證高優(yōu)先級端口請求的延遲較短,得到更大的總線帶寬。在上述技術(shù)方案的基礎(chǔ)上,所述DDR控制器的各模塊完全以硬件FPGA形式實現(xiàn)。一種DDR控制器的請求調(diào)度方法,其特征在于,包括以下步驟:步驟1:用戶通過客戶請求發(fā)送模塊11向客戶接口模塊12發(fā)出數(shù)據(jù)的讀寫請求,所述數(shù)據(jù)的讀寫請求至少包括請求類型、地址、長度、ID號,客戶接口模塊12暫時將請求存入模塊內(nèi)的緩存中,等待下游端口調(diào)度模塊13給出響應(yīng)ACK信號后,順序向端口調(diào)度模塊13發(fā)出請求;其中:數(shù)據(jù)通路寫方向,寫數(shù)據(jù)存入按照請求信息中的頁面地址存入客戶接口模塊12的寫緩存中,等待后續(xù)的解釋模塊15解釋該請求時再將寫數(shù)據(jù)發(fā)出;數(shù)據(jù)通路讀方向,接收到解釋模塊15的讀脈沖后,根據(jù)讀使能信號將讀回的數(shù)據(jù)暫存到讀緩存中,按照客戶讀請求來的次序依次彈出讀數(shù)據(jù);步驟2:客戶接口模塊12發(fā)出的請求在端口調(diào)度模塊13和BANK調(diào)度模塊14內(nèi)根據(jù)請求的端口號及BANK地址進行調(diào)度;步驟3:經(jīng)過調(diào)度后的請求順序進入解釋模塊15內(nèi)的請求等待隊列中,按照DDR的協(xié)議中規(guī)定的時序要求將請求解釋成DDR識別的指令;步驟4:解釋模塊15發(fā)出的DDR指令,經(jīng)過PUB_PHY適配模塊16來調(diào)整指令及數(shù)據(jù)間的相位關(guān)系,然后進入PHY模塊17內(nèi)進行電平轉(zhuǎn)換輸出到DDR器件18。在上述技術(shù)方案的基礎(chǔ)上,當每次請求完成后,在客戶接口模塊12內(nèi)部,客戶的地址需要按照請求輸入的次序順序釋放。在上述技術(shù)方案的基礎(chǔ)上,端口調(diào)度模塊13和BANK調(diào)度模塊14的具體調(diào)度過程如下:首先,請求在端口調(diào)度模塊13內(nèi)會根據(jù)請求端口的優(yōu)先級進行初步的調(diào)度,高優(yōu)先級優(yōu)先,同優(yōu)先級下使用Roundrobin輪詢算法進行仲裁;然后,根據(jù)請求的BANK地址及讀寫類型將請求分入不同的隊列中,BANK調(diào)度模塊14會在不同的隊列的請求間進行間插調(diào)度,最大程度保證不連續(xù)調(diào)用同一個BANK的請求;同時,BANK調(diào)度模塊14還會保證讀寫請求“捆綁”輸出,即保證一段時間內(nèi)DDR數(shù)據(jù)總線傳輸方向一致,減少不必要的讀寫切換時間;另外,BANK調(diào)度模塊14還有超時保護機制,保證不會出現(xiàn)某種類型的請求總是得不到響應(yīng)的問題出現(xiàn)。在上述技術(shù)方案的基礎(chǔ)上,所述客戶接口模塊12包括以下功能子模塊:讀數(shù)據(jù)緩存119、讀請求扭序120、讀響應(yīng)隊列121、讀BUFF頁面指針122、客戶地址到緩存頁面的地址映射125、請求信息緩存隊列124、寫B(tài)UFF頁面指針126、寫請求扭序127、寫響應(yīng)隊列128、寫數(shù)據(jù)緩存129 ;客戶接口模塊12的工作流程如下:對于寫請求的處理,客戶端在收到寫響應(yīng)cli_waq_ack后,向客戶接口模塊12發(fā)出寫請求、客戶信息及數(shù)據(jù),客戶信息中的地址信息經(jīng)過客戶地址到緩存頁面的地址映射125子模塊轉(zhuǎn)換為客戶接口可識別的頁面地址page_addr,并與其他請求信息一起存入請求信息緩存隊列124中;寫數(shù)據(jù)cli_wd根據(jù)映射后的緩存頁面地址page_addr存入寫數(shù)據(jù)緩存寫數(shù)據(jù)緩存129中;同時記錄客戶接口中緩存的寫請求個數(shù)的寫B(tài)UFF頁面指針126加I ;然后等待下游的端口調(diào)度模塊13中的請求等待隊列不滿時,就按隊列次序順序彈出請求及信息;當下游的解釋模塊15完成某個寫請求的解釋后,會通過寫數(shù)據(jù)處理模塊202向客戶接口模塊12發(fā)出取該請求數(shù)據(jù)的請求;由于下游模塊會對請求執(zhí)行次序進行一定的調(diào)度,因此寫數(shù)據(jù)處理模塊202返回的寫響應(yīng)為亂序釋放;為了防止客戶端出現(xiàn)地址沖突的問題,客戶接口模塊12會將亂序釋放的寫響應(yīng)存入寫響應(yīng)隊列128中,最后根據(jù)實際寫請求進入的順序依次通過寫請求扭序127順序輸出寫完成指示及ID信息;對于讀請求的處理,請求信息的存入及地址映射原理同寫請求的處理;當解釋模塊15完成讀請求的解釋后,等待一定延遲后將讀數(shù)據(jù)根據(jù)讀BUFF頁面指針122存入讀數(shù)據(jù)緩存119的相應(yīng)位置,等待讀響應(yīng)隊列121中返回的響應(yīng)進入,在讀請求扭序120扭序成請求進入的次序后,然后順序向客戶發(fā)出讀數(shù)據(jù)及ID信息。本發(fā)明所述的DDR控制器及請求調(diào)度方法,調(diào)度方法具有高效率,可以靈活支持DDR2/3器件的控制器設(shè)計及實現(xiàn)裝置,有效解決目前數(shù)字傳輸芯片中數(shù)據(jù)通過DDR器件存儲轉(zhuǎn)發(fā)效率較低的瓶頸問題,以及硬件實現(xiàn)存儲器訪問調(diào)度算法的實現(xiàn)問題。
本發(fā)明有如下附圖:圖1:高速DDR2/3控制器的結(jié)構(gòu)示意圖。圖2:客戶接口模塊工作流程圖。圖3:請求仲裁的結(jié)構(gòu)示意圖。圖4:請求仲裁的工作流程圖。
具體實施例方式以下結(jié)合附圖對本發(fā)明作進一步詳細說明。如圖1所示,本發(fā)明所述的DDR控制器(DDR3C控制器),是一種結(jié)構(gòu)上含有用戶接口及DDR器件物理層(PHY),功能上兼容一般數(shù)據(jù)請求及AHB類請求的DDR2/3的控制器裝置,其包括:AHB接口適配模塊(AHB_APT) 10,若干客戶請求發(fā)送模塊(CLI_H0ST) 11,客戶接口模塊(CLI_INF) 12,端口調(diào)度模塊(P0RT_SCH) 13,BANK 調(diào)度模塊(BANK_SCH) 14,解釋模塊(DDR3CTR) 15,PUB_PHY 適配模塊 16,DDR2/3PHY 模塊 17,DDR2/3 器件 18,接口數(shù)據(jù)緩存模塊19,數(shù)據(jù)處理模塊(W/RDCC) 20,微機口配置模塊(UPI_DDR3C) 21,時鐘管理模塊(CLK_MANAGE) 22 ;AHB接口適配模塊10完成將AHB總線上的請求轉(zhuǎn)換到DDR控制器設(shè)計的私有接口,并將轉(zhuǎn)換后的請求輸出到客戶接口模塊12 ;客戶請求發(fā)送模塊11完成客戶請求適配到DDR控制器設(shè)計的私有接口,并將轉(zhuǎn)換后的請求輸出到客戶接口模塊12 ;所述客戶請求發(fā)送模塊11根據(jù)客戶要求支持讀寫合一端口、單獨寫端口或單獨讀端口;圖1所示實施例中,設(shè)有N個客戶請求發(fā)送模塊11,N值為大于等于I的正整數(shù);客戶接口模塊12完成應(yīng)用客戶請求吸收和數(shù)據(jù)交換,客戶地址到DDR地址的映射,讀寫請求地址分配和回收,并具有分配地址檢錯保護能力,讀、寫請求順序響應(yīng)功能,客戶時鐘域與DDR3C核心控制層時鐘域的相互切換功能;另外,本模塊還具有自檢功能,在沒有客戶請求的情況下能發(fā)出一系列具有校驗性質(zhì)的讀寫請求,便于使用者對設(shè)計進行調(diào)試;端口調(diào)度模塊13,亦可稱為仲裁調(diào)度模塊,其完成根據(jù)不同端口配置的請求的優(yōu)先級對請求的執(zhí)行順序進行調(diào)度,將請求根據(jù)端口優(yōu)先級順序輸出給BANK調(diào)度模塊14 ;相同優(yōu)先級下采用輪詢調(diào)度的方法,保證高優(yōu)先級端口請求的延遲較短,得到更大的總線帶寬;BANK調(diào)度模塊14完成根據(jù)請求的BANK地址及讀寫類型來進行請求順序的調(diào)整,輸出給下游解釋模塊15,目的是盡可能的將相同BANK地址的請求分散開,將相同讀寫類型的請求連續(xù)起來,從而使下游解釋模塊的解釋命令效率更高;解釋模塊15,亦稱為讀寫請求解釋模塊,主要完成維持DRAM的刷新、對業(yè)務(wù)的讀寫請求進行命令調(diào)度,按照DDR2/3協(xié)議將仲裁后的客戶讀、寫請求解釋為DRAM命令,完成請求業(yè)務(wù)的分割,完成DDR自刷新模式及省電模式(低功耗設(shè)計)等功能;PUB_PHY適配模塊16主要完成控制器輸出的DRAM命令和讀、寫數(shù)據(jù)與不同廠家DDR-PHY的適配;另外,DRAM的初始化及通過微機口來對DRAM進行測試的功能也在此實現(xiàn);針對不同的廠家或DDR2/3類型,這個模塊需要調(diào)整;DDR2/3PHY模塊17完成DDR控制器和DDR2/3器件18之間的連接,進行電氣信號
的轉(zhuǎn)換、寫電平校準、讀數(shù)據(jù)采集和讀取數(shù)據(jù)偏移校正等工作;接口數(shù)據(jù)緩存模塊19緩存接口發(fā)來的讀寫數(shù)據(jù);數(shù)據(jù)處理模塊20包括讀數(shù)據(jù)處理模塊201 (RDCC)和寫數(shù)據(jù)處理模塊202 (WDCC)
兩部分,在讀/寫接口緩沖的數(shù)據(jù)讀取/寫入過程,基于每次分割后的列動作,產(chǎn)生接口緩沖的讀/寫信息,計算命令到數(shù)據(jù)的整個路徑延時;微機口配置模塊21通過微機口來配置控制器需要使用的各種參數(shù)配置,目的是使本發(fā)明可以滿足不同應(yīng)用需求;時鐘管理模塊22提供設(shè)計所需要的時鐘源。本發(fā)明所述的DDR2/3控制器的設(shè)計完全以硬件FPGA形式實現(xiàn)。通過微機口(UPI)對控制器進行關(guān)于DDR參數(shù)及控制器特性的簡單配置,就可以實現(xiàn)通過硬件接口向DDR2/3器件存儲轉(zhuǎn)發(fā)數(shù)據(jù)。對于高速通信中需要進行大量數(shù)據(jù)存儲轉(zhuǎn)發(fā)的系統(tǒng),使用本發(fā)明設(shè)計,在可承受的硬件代價下(硬件面積較小復(fù)雜度不高),可以得到較高的數(shù)據(jù)總線利用率(數(shù)據(jù)傳輸帶寬)。另外,本發(fā)明支持AHB總線類的CPU請求,并通過仲裁算法保證AHB類的請求得到較快的響應(yīng)。其具有以下特色和優(yōu)點:1、同時兼容DDR2/3協(xié)議;2、支持業(yè)界標準 DDR PHY Interface〗.I ;3、低面積、低客戶請求延時的設(shè)計結(jié)構(gòu);4、同時支持AMBA AXI/AHB及業(yè)務(wù)類請求,端口可靈活配置;5、高效的請求調(diào)度方法(基于客戶請求及DRAM特性)保證高帶寬利用率及低延時; 6、支持低功耗設(shè)計,降低系統(tǒng)功耗;7、采用1:2的控制器與DRAM時鐘頻率比,降低設(shè)計部分時序;8、具有自檢功能,在不接外在接口的情況下可以測試控制器及DDR器件的工作情況。針對上述DDR控制器,本發(fā)明還給出了該DDR控制器的請求調(diào)度方法,包括以下步驟:步驟1:用戶通過客戶請求發(fā)送模塊11(該模塊包括兩類請求:一般客戶端口請求及AHB接口類請求)向客戶接口模塊12發(fā)出數(shù)據(jù)的讀寫請求(包括請求類型、地址、長度、ID等),客戶接口模塊12暫時將請求存入模塊內(nèi)的緩存中,等待下游端口調(diào)度模塊13給出響應(yīng)ACK信號后,順序向端口調(diào)度模塊13發(fā)出請求;數(shù)據(jù)通路寫方向,寫數(shù)據(jù)存入按照請求信息中的頁面地址存入客戶接口模塊12的寫緩存中,等待后續(xù)的解釋模塊15解釋該請求時再將寫數(shù)據(jù)發(fā)出;數(shù)據(jù)通路讀方向,接收到解釋模塊15的讀脈沖后,根據(jù)讀使能信號將讀回的數(shù)據(jù)暫存到讀緩存中,按照客戶讀請求來的次序依次彈出讀數(shù)據(jù);由于進入客戶接口模塊12的請求需要經(jīng)過下游端口調(diào)度模塊13和BANK調(diào)度模塊14的亂序調(diào)度,因此在解釋模塊15中有可能出現(xiàn)前面到的請求還未執(zhí)行,后面的請求就讀寫了相同的地址的沖突情況。為了避免這種請求地址沖突的情況,當每次請求完成后,在客戶接口模塊12內(nèi)部,客戶的地址需要按照請求輸入的次序順序釋放;步驟2:客戶接口模塊12發(fā)出的請求會在端口調(diào)度模塊13和BANK調(diào)度模塊14內(nèi)根據(jù)請求的端口號及BANK地址進行一定程度地調(diào)度。調(diào)度的作用:一是保證低延時端口請求的高優(yōu)先級,二是提高下游解釋模塊的解釋效率,從而得到DDR數(shù)據(jù)總線上的高吞吐率。端口調(diào)度模塊13和BANK調(diào)度模塊14的具體調(diào)度過程如下:
首先,請求在端口調(diào)度模塊13內(nèi)會根據(jù)請求端口的優(yōu)先級進行初步的調(diào)度,高優(yōu)先級優(yōu)先,同優(yōu)先級下使用Roundrobin輪詢算法進行仲裁;然后,根據(jù)請求的BANK地址及讀寫類型將請求分入不同的隊列中(DDR共8個BANK,每個BANK分為讀、寫兩個隊列,共16個隊列),BANK調(diào)度模塊14會在不同的隊列的請求間進行間插調(diào)度,最大程度保證不連續(xù)調(diào)用同一個BANK的請求;同時,BANK調(diào)度模塊14還會保證讀寫請求“捆綁”輸出,即保證一段時間內(nèi)DDR數(shù)據(jù)總線傳輸方向一致,減少不必要的讀寫切換時間;另外,BANK調(diào)度模塊14還有超時保護機制,保證不會出現(xiàn)某種類型的請求總是得不到響應(yīng)的問題出現(xiàn);步驟3:經(jīng)過調(diào)度后的請求順序進入解釋模塊15內(nèi)的請求等待隊列中,按照DDR的協(xié)議中規(guī)定的時序要求將請求解釋成DDR識別的指令;具體解釋過程中,一方面,解釋模塊15會順序解釋并執(zhí)行等待隊列隊首請求的讀寫動作,另一方面,如果模塊檢測到隊列中有其他請求需要提前準備的需求(比如充電或激活),則會在執(zhí)行列動作的間隔中,插空執(zhí)行隊列中請求的充電或激活動作;另外,解釋模塊還需要完成DDR規(guī)定的刷新操作及省電模式下的自刷新操作;步驟4:解釋模塊15發(fā)出的DDR指令,經(jīng)過PUB_PHY適配模塊16來調(diào)整指令及數(shù)據(jù)間的相位關(guān)系,然后進入PHY模塊17內(nèi)進行電平轉(zhuǎn)換輸出到DDR器件18 ;PUB_PHY適配模塊16接口通過簡單處理可靈活適配到不同的PHY接口上,方便通用;為了降低整個設(shè)計的時序要求,本發(fā)明設(shè)計采用控制核心層使用低頻時鐘,在PUB_PHY模塊倍頻到DDR高頻時鐘的方法,即解釋模塊在低頻時鐘下并行輸出兩條通路的命令、地址及雙倍位寬的數(shù)據(jù),在PUB_PHY模塊中使用倍頻時鐘采樣后合并成一條通路輸出給DDR ;接口間具體的時序關(guān)系滿足業(yè)界標準 DDR PHY Interface2.1。如圖2所示為本發(fā)明所述的DDR2/3控制器設(shè)計的客戶接口模塊12的工作流程圖,其中客戶接口模塊12的具體實施包括以下功能子模塊:讀數(shù)據(jù)緩存119、讀請求扭序120、讀響應(yīng)隊列121、讀BUFF頁面指針122、客戶地址到緩存頁面的地址映射125、請求信息緩存隊列124、寫B(tài)UFF頁面指針126、寫請求扭序127、寫響應(yīng)隊列128、寫數(shù)據(jù)緩存129。本發(fā)明實施例的DDR2/3控制器設(shè)計的客戶接口模塊12可以適用于讀寫合一的客戶接口、獨立的讀接口、獨立的寫接口,AHB類客戶接口(前端需增加AHB總線的適配電路模塊)。在不同的應(yīng)用場景下,可以通過配置來選擇接口的類型??蛻艚涌谀K12的工作流程如下:I)對于寫請求的處理,客戶端在收到寫響應(yīng)cli_waq_ack后,向客戶接口模塊12發(fā)出寫請求、客戶信息(包括地址、長度、ID、掩碼等)及數(shù)據(jù),客戶信息中的地址信息經(jīng)過客戶地址到緩存頁面的地址映射125子模塊轉(zhuǎn)換為客戶接口可識別的頁面地址page_addr,并與其他請求信息一起存入請求信息緩存隊列124 (異步FIFO組成)中;寫數(shù)據(jù)cli_wd根據(jù)映射后的緩存頁面地址page_addr存入寫數(shù)據(jù)緩存寫數(shù)據(jù)緩存129中;同時記錄客戶接口中緩存的寫請求個數(shù)的寫B(tài)UFF頁面指針126加I ;然后等待下游的端口調(diào)度模塊13中的請求等待隊列不滿時(即反壓ACK信號有效),就按隊列次序順序彈出請求及信息;當下游的解釋模塊15完成某個寫請求的解釋后,會通過寫數(shù)據(jù)處理模塊202 (WDCC,圖1中數(shù)據(jù)處理模塊20的子模塊)向客戶接口模塊12發(fā)出取該請求數(shù)據(jù)的請求;由于下游模塊(端口調(diào)度模塊13,BANK調(diào)度模塊14)會對請求執(zhí)行次序進行一定的調(diào)度,因此寫數(shù)據(jù)處理模塊202返回的寫響應(yīng)為亂序釋放;為了防止客戶端出現(xiàn)地址沖突的問題(例如因為請求調(diào)度后,某個DDR地址還沒被寫之前就被讀),客戶接口模塊12會將亂序釋放的寫響應(yīng)存入寫響應(yīng)隊列(異步FIFO) 128中,最后根據(jù)實際寫請求進入的順序依次通過寫請求扭序127順序輸出寫完成指示及ID信息;2)對于讀請求的處理,請求信息的存入及地址映射原理同寫請求的處理;當解釋模塊15完成讀請求的解釋后,等待一定延遲后將讀數(shù)據(jù)根據(jù)讀BUFF頁面指針122存入讀數(shù)據(jù)緩存119的相應(yīng)位置,等待讀響應(yīng)隊列121中返回的響應(yīng)進入,在讀請求扭序120扭序成請求進入的次序后,然后順序向客戶發(fā)出讀數(shù)據(jù)及ID信息。如圖3所示為本發(fā)明所述的DDR2/3控制器設(shè)計的用于實現(xiàn)請求仲裁功能的端口調(diào)度模塊13及BANK調(diào)度模塊14的結(jié)構(gòu)框圖,即請求仲裁功能的具體實施包括以下功能模塊:端口調(diào)度模塊13、BANK調(diào)度模塊14。各個端口的請求并行進入端口調(diào)度模塊13,按照優(yōu)先級、連續(xù)請求間相同BANK地址的請求分離、讀寫類型一致的請求捆綁執(zhí)行等調(diào)度原則下串行輸出。如圖4所示為本發(fā)明所述的DDR2/3控制器設(shè)計的請求調(diào)度(請求仲裁)功能的具體工作流程圖。由于DDR器件的獨特的三維存儲結(jié)構(gòu)(DDR地址分為Bank塊地址),Row (行地址)和Column (列地址)三部分),其存取數(shù)據(jù)的性能高度依賴于所執(zhí)行命令的模式(即各個業(yè)務(wù)間命令的執(zhí)行次序)。通過分析發(fā)現(xiàn),對請求按照相同BANK地址離散化、讀寫類型一致的請求捆綁執(zhí)行的原則進行亂序調(diào)度,可以顯著的提高存儲器的性能(帶寬、延時等)。本發(fā)明實施例的DDR2/3控制器設(shè)計按照上面的調(diào)度原則進行請求調(diào)度,其工作流程如下:整個調(diào)度分為兩個階段,端口調(diào)度(端口仲裁,即一次仲裁)以及BANK調(diào)度(BANK仲裁,即二次仲裁)。首先,各個客戶接口模塊12的請求并行進入端口調(diào)度模塊13,端口調(diào)度模塊13會根據(jù)每個接口所配置的請求優(yōu)先級將請求進行分組(步驟100設(shè)計支持接口可以配置I一8種優(yōu)先級,I優(yōu)先級最高),然后各組優(yōu)先級請求進入該組相對應(yīng)的輪叫調(diào)度Roundrobin (Round-Robin Scheduling)輪詢模塊(簡稱為RR模塊)內(nèi)(步驟101),等待下游步驟102彈出一個請求后,啟動相應(yīng)優(yōu)先級RR模塊的輪詢,選出該優(yōu)先級的下一個待輸出的請求。每種優(yōu)先級下的RR模塊選擇的等待輸出請求,會按照固定的優(yōu)先級順序(1 — 8)(步驟102),串行輸出進入BANK調(diào)度模塊14。BANK調(diào)度模塊14會根據(jù)請求的BANK地址,將輸入請求分為8個BANK管理單元BMU (步驟103),在每個BANK管理單元內(nèi)部根據(jù)端口配置的端口類型(讀寫合一、單獨寫、單獨讀)將請求存入三個隊列中(步驟104),然后各個BANK管理單元隊列中隊首的請求按照讀寫類型分別進入讀或?qū)慠R模塊內(nèi)(步驟105),根據(jù)請求類型選擇狀態(tài)機給出的選擇信號來從讀或?qū)慠R模塊內(nèi)選擇請求輸出(步驟106),最終串行輸出調(diào)度后的請求(步驟109)。讀寫類型請求的選擇是由一個請求類型選擇狀態(tài)機來確定(步驟107),該狀態(tài)機會根據(jù)微機口配置的讀寫請求的最長執(zhí)行時間以及反饋回來的當前輸出的請求BANK地址來調(diào)整輸出請求的類型。另外,為了保證從BANK調(diào)度模塊14串行輸出的請求BANK地址的分散性,當前輸出的請求的BANK地址會被記錄,并反饋回讀和寫RR模塊的入口處,在一段時間內(nèi)(配置值)屏蔽該類BANK地址的請求再次進入讀和寫RR模塊內(nèi)(步驟108)。經(jīng)過上述兩階段調(diào)度的請求流,具有請求的BANK地址離散化、讀寫類型捆綁,并兼顧了客戶端口的優(yōu)先級的特點,大大調(diào)高了下游解釋模塊進行命令解釋的效率,提高了整個控制器的轉(zhuǎn)發(fā)性能。
上述本發(fā)明的實施例按照本發(fā)明技術(shù)方案的控制方法為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍包括且不限于該實施例。本說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
權(quán)利要求
1.一種DDR控制器,其特征在于,包括:AHB接口適配模塊(10),若干客戶請求發(fā)送模塊(11),客戶接口模塊(12 ),端口調(diào)度模塊(13),BANK調(diào)度模塊(14),解釋模塊(15),PUB_PHY適配模塊(16),DDR2/3PHY模塊(17),DDR2/3器件(18),接口數(shù)據(jù)緩存模塊(19),數(shù)據(jù)處理模塊(20 ),微機口配置模塊(21),時鐘管理模塊(22 ); AHB接口適配模塊(10)完成將AHB總線上的請求轉(zhuǎn)換到DDR控制器設(shè)計的私有接口,并將轉(zhuǎn)換后的請求輸出到客戶接口模塊(12); 客戶請求發(fā)送模塊(11)完成客戶請求適配到DDR控制器設(shè)計的私有接口,并將轉(zhuǎn)換后的請求輸出到客戶接口模塊(12 ); 客戶接口模塊(12)完成應(yīng)用客戶請求吸收和數(shù)據(jù)交換,客戶地址到DDR地址的映射,讀寫請求地址分配和回收,并具有分配地址檢錯保護能力,讀、寫請求順序響應(yīng)功能,客戶時鐘域與DDR3C核心控制層時鐘域的相互切換功能; 端口調(diào)度模塊(13),其完成根據(jù)不同端口配置的請求的優(yōu)先級對請求的執(zhí)行順序進行調(diào)度,將請求根據(jù)端口優(yōu)先級順序輸出給BANK調(diào)度模塊(14); BANK調(diào)度模塊(14)完成根據(jù)請求的BANK地址及讀寫類型來進行請求順序的調(diào)整,輸出給下游解釋模塊(15),目的是盡可能的將相同BANK地址的請求分散開,將相同讀寫類型的請求連續(xù)起來,從而使下游解釋模塊的解釋命令效率更高; 解釋模塊(15),主要完成維持DRAM的刷新、對業(yè)務(wù)的讀寫請求進行命令調(diào)度,按照DDR2/3協(xié)議將仲裁后的客戶讀、寫請求解釋為DRAM命令,完成請求業(yè)務(wù)的分割,完成DDR自刷新模式及省電模式功能; PUB_PHY適配模塊(16)主要完成控制器輸出的DRAM命令和讀、寫數(shù)據(jù)與不同廠家DDR-PHY的適配;其實現(xiàn)DRAM的初始化及通過微機口來對DRAM進行測試的功能; DDR2/3PHY模塊(17)完成DDR控制器和DDR2/3器件(18)之間的連接,進行電氣信號的轉(zhuǎn)換、寫電平校準、讀數(shù)據(jù)采集和讀取數(shù)據(jù)偏移校正等工作; 接口數(shù)據(jù)緩存模塊(19)緩存接口發(fā)來的讀寫數(shù)據(jù); 數(shù)據(jù)處理模塊(20)包括讀數(shù)據(jù)處理模塊(201)和寫數(shù)據(jù)處理模塊(202)兩部分,在讀/寫接口緩沖的數(shù)據(jù)讀取/寫入過程,基于每次分割后的列動作,產(chǎn)生接口緩沖的讀/寫信息,計算命令到數(shù)據(jù)的整個路徑延時; 微機口配置模塊(21)通過微機口來配置控制器需要使用的各種參數(shù)配置,以滿足不同應(yīng)用需求; 時鐘管理模塊(22)提供設(shè)計所需要的時鐘源。
2.如權(quán)利要求1所述的DDR控制器,其特征在于:所述客戶請求發(fā)送模塊(11)根據(jù)客戶要求支持讀寫合一端口、單獨寫端口或單獨讀端口。
3.如權(quán)利要求1所述的DDR控制器,其特征在于:客戶接口模塊(12)具有自檢功能,在沒有客戶請求的情況下能發(fā)出一系列具有校驗性質(zhì)的讀寫請求。
4.如權(quán)利要求1所述的DDR控制器,其特征在于:端口調(diào)度模塊(13)作為仲裁調(diào)度模塊,其在遇到相 同優(yōu)先級下采用輪詢調(diào)度的方法,保證高優(yōu)先級端口請求的延遲較短,得到更大的總線帶寬。
5.如權(quán)利要求1所述的DDR控制器,其特征在于:所述DDR控制器的各模塊完全以硬件FPGA形式實現(xiàn)。
6.一種DDR控制器的請求調(diào)度方法,其特征在于,包括以下步驟: 步驟1:用戶通過客戶請求發(fā)送模塊(11)向客戶接口模塊(12)發(fā)出數(shù)據(jù)的讀寫請求,所述數(shù)據(jù)的讀寫請求至少包括請求類型、地址、長度、ID號,客戶接口模塊(12)暫時將請求存入模塊內(nèi)的緩存中,等待下游端口調(diào)度模塊(13)給出響應(yīng)ACK信號后,順序向端口調(diào)度模塊(13)發(fā)出請求; 其中: 數(shù)據(jù)通路寫方向,寫數(shù)據(jù)存入按照請求信息中的頁面地址存入客戶接口模塊(12)的寫緩存中,等待后續(xù)的解釋模塊(15)解釋該請求時再將寫數(shù)據(jù)發(fā)出; 數(shù)據(jù)通路讀方向,接收到解釋模塊(15)的讀脈沖后,根據(jù)讀使能信號將讀回的數(shù)據(jù)暫存到讀緩存中,按照客戶讀請求來的次序依次彈出讀數(shù)據(jù); 步驟2:客戶接口模塊(12)發(fā)出的請求在端口調(diào)度模塊(13)和BANK調(diào)度模塊(14)內(nèi)根據(jù)請求的端口號及BANK地址進行調(diào)度; 步驟3:經(jīng)過調(diào)度后的請求順序進入解釋模塊(15 )內(nèi)的請求等待隊列中,按照DDR的協(xié)議中規(guī)定的時序要求將請求解釋成DDR識別的指令; 步驟4:解釋模塊(15)發(fā)出的DDR指令,經(jīng)過PUB_PHY適配模塊(16)來調(diào)整指令及數(shù)據(jù)間的相位關(guān)系,然后進入PHY模塊(17)內(nèi)進行電平轉(zhuǎn)換輸出到DDR器件(18)。
7.如權(quán)利要求6所述的方法,其特征在于:當每次請求完成后,在客戶接口模塊(12)內(nèi)部,客戶的地址需要按照請求輸入的次序順序釋放。
8.如權(quán)利要求6所述的方法,其特征在于,端口調(diào)度模塊(13)和BANK調(diào)度模塊(14)的具體調(diào)度過程如下: 首先,請求在端口調(diào)度模塊(13)內(nèi)會根據(jù)請求端口的優(yōu)先級進行初步的調(diào)度,高優(yōu)先級優(yōu)先,同優(yōu)先級下使用輪叫調(diào)度Roundrobin輪詢算法進行仲裁; 然后,根據(jù)請求的BANK地址及讀寫類型將請求分入不同的隊列中,BANK調(diào)度模塊(14 )會在不同的隊列的請求間進行間插調(diào)度,最大程度保證不連續(xù)調(diào)用同一個BANK的請求;同時,BANK調(diào)度模塊(14)還會保證讀寫請求“捆綁”輸出,即保證一段時間內(nèi)DDR數(shù)據(jù)總線傳輸方向一致,減少不必要的讀寫切換時間;另外,BANK調(diào)度模塊(14)還有超時保護機制,保證不會出現(xiàn)某種類型的請求總是得不到響應(yīng)的問題出現(xiàn)。
9.如權(quán)利要求6所述的方法,其特征在于,所述客戶接口模塊(12)包括以下功能子模塊:讀數(shù)據(jù)緩存(119 )、讀請求扭序(120 )、讀響應(yīng)隊列(121)、讀BUFF頁面指針(122 )、客戶地址到緩存頁面的地址映射(125)、請求信息緩存隊列(124)、寫B(tài)UFF頁面指針(126)、寫請求扭序(127)、寫響應(yīng)隊列(128)、寫數(shù)據(jù)緩存(129); 客戶接口模塊(12)的工作流程如下: 對于寫請求的處理,客戶端在收到寫響應(yīng)cli_waq_ack后,向客戶接口模塊(12)發(fā)出寫請求、客戶信息及數(shù)據(jù),客戶信息中的地址信息經(jīng)過客戶地址到緩存頁面的地址映射(125)子模塊轉(zhuǎn)換為客戶接口可識別的頁面地址page_addr,并與其他請求信息一起存入請求信息緩存隊列(124)中;寫數(shù)據(jù)cli_wd根據(jù)映射后的緩存頁面地址page_addr存入寫數(shù)據(jù)緩存寫數(shù)據(jù)緩存(129)中;同時記錄客戶接口中緩存的寫請求個數(shù)的寫B(tài)UFF頁面指針(126)加I;然后等待下游的端口調(diào)度模塊(13)中的請求等待隊列不滿時,就按隊列次序順序彈出請求及信息;當下游的解釋模塊(15)完成某個寫請求的解釋后,會通過寫數(shù)據(jù)處理模塊(202 )向客戶接口模塊(12 )發(fā)出取該請求數(shù)據(jù)的請求;由于下游模塊會對請求執(zhí)行次序進行一定的調(diào)度,因此寫數(shù)據(jù)處理模塊(202)返回的寫響應(yīng)為亂序釋放;為了防止客戶端出現(xiàn)地址沖突的問題,客戶接口模塊(12)會將亂序釋放的寫響應(yīng)存入寫響應(yīng)隊列(128)中,最后根據(jù)實際寫請求進入的順序依次通過寫請求扭序(127)順序輸出寫完成指示及ID信息; 對于讀請求的處理,請求信息的存入及地址映射原理同寫請求的處理;當解釋模塊(15)完成讀請求的解釋后,等待一定延遲后將讀數(shù)據(jù)根據(jù)讀BUFF頁面指針(122)存入讀數(shù)據(jù)緩存(119)的相應(yīng)位置,等待讀響應(yīng)隊列(121)中返回的響應(yīng)進入,在讀請求扭序(120)扭序成請求進入的次序后,然后順序向客戶發(fā)出讀數(shù)據(jù)及ID信息。
全文摘要
本發(fā)明涉及一種DDR控制器及請求調(diào)度方法,該控制器包括AHB接口適配模塊(10),若干客戶請求發(fā)送模塊(11),客戶接口模塊(12),端口調(diào)度模塊(13),BANK調(diào)度模塊(14),解釋模塊(15),PUB_PHY適配模塊(16),DDR2/3PHY模塊(17),DDR2/3器件(18),接口數(shù)據(jù)緩存模塊(19),數(shù)據(jù)處理模塊(20),微機口配置模塊(21),時鐘管理模塊(22)。本發(fā)明所述的DDR控制器及請求調(diào)度方法,應(yīng)用于高速通信系統(tǒng)傳輸芯片設(shè)計中數(shù)據(jù)的存儲及轉(zhuǎn)發(fā),相比較傳統(tǒng)控制器,采用基于DRAM結(jié)構(gòu)特性的請求調(diào)度,大大降低請求的延遲,提高傳輸時數(shù)據(jù)總線的利用率,相同配置下可以得到更大總線帶寬。
文檔編號G11C7/22GK103198856SQ20131009601
公開日2013年7月10日 申請日期2013年3月22日 優(yōu)先權(quán)日2013年3月22日
發(fā)明者王穎偉, 馮波, 張睿 申請人:烽火通信科技股份有限公司