專利名稱:一種存儲器的控制方法、存儲器控制器和存儲器控制系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲控制技術(shù),尤其涉及一種存儲器的控制方法、存儲器控制器和存儲器控制系統(tǒng)。
背景技術(shù):
隨著集成技術(shù)的發(fā)展,可以將傳統(tǒng)技術(shù)中的各單個(gè)芯片集成在一個(gè)芯片上
實(shí)現(xiàn)。例如,在高清電視(HDTV)片上系統(tǒng)(SOC)設(shè)計(jì)中,釆用了將各單芯片,如CPU,音頻視頻解碼單元、存儲器、顯示器件及外圍接口等,整合在單一芯片中的技術(shù)。其中,存儲器通常選取高速的雙倍數(shù)據(jù)傳輸速度同步動(dòng)態(tài)隨機(jī)存取存儲器(Double-Data-Rate Synchronous DRAM, DDR SDRAM )。
DDR SDRAM中存儲單元的地址由三維的地址空間組成:存儲體(Bank)地址,行地址,列地址。DDR SDRAM由多個(gè)存儲體組成,每個(gè)存儲體之間的凄史據(jù)存取是獨(dú)立的,每個(gè)存儲體可以包括若干行的存儲單元。
利用存儲體地址確定需要進(jìn)行數(shù)據(jù)存取的存儲單元所在的存儲體,對該存儲單元進(jìn)行訪問時(shí)首先根據(jù)行地址進(jìn)行行激活(Active》操作, 一旦一行被激活,一行中的存儲信息都被讀入行緩存中;然后,根據(jù)列地址對該行的相應(yīng)列激活,確定出該存儲單元,同時(shí)對該存儲單元進(jìn)行讀寫操作。
對上述的數(shù)據(jù)讀寫操作,DDR SDRAM可采用頁保持打開(Open page)策略或者頁保持關(guān)閉(Closepage)策略。頁保持打開策略是當(dāng)進(jìn)行完讀寫操作后不進(jìn)行預(yù)充電(Precharge),使其保持激活狀態(tài)。頁保持關(guān)閉策略是當(dāng)進(jìn)行完讀寫操作后馬上進(jìn)行預(yù)充電,使其進(jìn)入空閑狀態(tài)。對行命中的情況,即當(dāng)前待處理的命令是在當(dāng)前存儲體已激活的行中,頁保持打開策略可以減少行激活的時(shí)間,減少訪問延遲;但對于行缺失的情況,即當(dāng)前待處理的命令不在當(dāng)前存儲體已激活的行中,頁保持打開策略需要首先關(guān)閉當(dāng)前存儲體,再重新激活,與頁保持關(guān)閉策略相比,增加了關(guān)閉當(dāng)前存儲體的延遲,降低了系統(tǒng)的性能。
且DDR SDRAM進(jìn)行讀寫操作時(shí),數(shù)據(jù)總線需要在讀寫命令之間進(jìn)行切換,
5寫命令到讀命令之間至少在數(shù)據(jù)總線上增加寫恢復(fù)時(shí)間和讀延遲時(shí)間,讀命令到寫命令之間至少在數(shù)據(jù)總線上增加了 一個(gè)時(shí)鐘的延遲。
現(xiàn)有技術(shù)通常采用固定的頁保持打開或者頁保持關(guān)閉策略,或者利用已經(jīng)執(zhí)行的命令來預(yù)測下一個(gè)命令的狀態(tài),確定是使用頁保持打開策略或者頁保持關(guān)閉策略。在進(jìn)行讀寫操作時(shí),按照接收到的命令的順序逐次執(zhí)行。然而,現(xiàn)
有技術(shù)存在的缺點(diǎn)是明顯的
例如,對頁保持打開策略或者頁保持關(guān)閉策略的選取,釆用固定的方式時(shí),不夠靈活,無法適應(yīng)不同命令的不同特點(diǎn),造成了訪問延時(shí);采用預(yù)測的方式時(shí),由于已執(zhí)行的命令與待處理的命令之間關(guān)聯(lián)不強(qiáng),會產(chǎn)生預(yù)測錯(cuò)誤而帶來延遲,現(xiàn)有技術(shù)中的方法不能充分利用頁保持打開策略和頁保持關(guān)閉策略的優(yōu)點(diǎn),增加了訪問的延遲。在數(shù)據(jù)讀寫時(shí),讀寫命令之間的頻繁切換,也極大地削減了數(shù)據(jù)總線的處理效率,占用了過多的數(shù)據(jù)帶寬,降低了系統(tǒng)的性能。
然而,片上系統(tǒng)中的各個(gè)處理模塊在運(yùn)行時(shí)都需要與DDR SDRAM交換數(shù)據(jù),系統(tǒng)要求具有高性能的DDR SDRAM,現(xiàn)有技術(shù)中控制DDR SDRAM的方法已成為制約片上系統(tǒng)開發(fā)的瓶頸, 一個(gè)適合整個(gè)系統(tǒng)的存儲控制器是目前HDTV SOC設(shè)計(jì)中的熱點(diǎn)。
發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明的實(shí)施例提供一種存儲器的控制方法、存儲器控制器和存儲器控制系統(tǒng),能夠充分利用頁保持打開策略和頁保持關(guān)閉策略的優(yōu)勢,減少讀寫命令的反轉(zhuǎn),大大降低了存儲器進(jìn)行數(shù)據(jù)訪問時(shí)的延遲,顯著增加了數(shù)據(jù)總線的可利用帶寬,提高了系統(tǒng)的性能。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案
一種存儲器的控制方法,所述方法包括
獲取存儲體存儲體的運(yùn)行狀態(tài);
獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息;根據(jù)所述運(yùn)行狀態(tài)和地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所釆用的控制策進(jìn)一步的,所述運(yùn)行狀態(tài)為激活狀態(tài),所述激活狀態(tài)為存儲體當(dāng)前被激活
時(shí)所處的狀態(tài),所述地址信息包括行地址;
所述根據(jù)所述運(yùn)行狀態(tài)信息和地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控制策略為
判斷所述存儲體中激活行的行地址與所述下一個(gè)命令的行地址是否一致,若是,采用頁保持打開策略;若否,采用頁保持關(guān)閉策略。
進(jìn)一步的,所述方法還包括按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn)行排序;
所述排序規(guī)則包括禁止規(guī)則和重排規(guī)則,所述禁止規(guī)則優(yōu)先于所述重排規(guī)
則;
所述禁止規(guī)則包括
當(dāng)所述命令在命令隊(duì)列中的駐留時(shí)間超出預(yù)定值時(shí),禁止新入隊(duì)的命令排在所述命令前;
當(dāng)新入隊(duì)的命令的地址與命令隊(duì)列中命令的地址相同時(shí),禁止新入隊(duì)的命令排在所述命令前,所述地址包括存儲體地址、行地址和列地址;
當(dāng)所述的命令來自同 一個(gè)端口且所述命令的命令類型相同時(shí),禁止對所述命令進(jìn)行排序;
所述重排規(guī)則包括
行地址相同時(shí),將新入隊(duì)的命令排在所述命令的下一位置;
當(dāng)新入隊(duì)的命令與命令隊(duì)列中的命令類型相同時(shí),將新入隊(duì)的命令排在所述命令的下一位置。
一種存儲器控制器,包括
存儲體調(diào)度器,用于獲取存儲體的運(yùn)行狀態(tài);
命令前向觀測單元,用于獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息;
策略確定單元,用于根據(jù)所述存儲體調(diào)度器獲取的運(yùn)行狀態(tài)和所述命令前向觀測單元獲取的地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控制策略,所述策略包括頁保持打開策略和頁保持關(guān)閉策略。
進(jìn)一步的,上述存儲器控制器還包括
命令排序單元,用于按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn) 行排序;所述命令前向觀測單元,還用于獲取經(jīng)所述命令排序單元排序后的待 執(zhí)行命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息。
進(jìn)一步的,還包括至少兩個(gè)命令隊(duì)列構(gòu)建寄存器,
所述命令隊(duì)列構(gòu)建寄存器,用于保存命令的信息,向所述命令前向觀測單 元提供該命令相應(yīng)的信息,并根據(jù)所述命令排序單元的排序結(jié)果更新所保存的 命令的信息,其中,所述命令的信息包括命令的存儲體地址、4亍地址和列地址, 命令類型。
一種存儲器控制系統(tǒng),所述系統(tǒng)包括存儲器控制器和DDR SDRAM,所述 DDR SDRAM包括至少兩個(gè)存儲體,
所述存儲器控制器包括,存儲體調(diào)度器,用于獲取存儲體的運(yùn)行狀態(tài);命 令前向觀測單元,用于獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令 的地址信息;策略確定單元,用于根據(jù)所述存儲體調(diào)度器獲取的運(yùn)行狀態(tài)和所 述命令前向觀測單元獲取的地址信息動(dòng)態(tài)確定對所述存+者體當(dāng)前所釆用的控制 策略,并將該策略對應(yīng)的命令進(jìn)行解釋后發(fā)送至DDR SDRAM,所述策略包括 頁保持打開策略和頁保持關(guān)閉策略;
所述DDR SDRAM,用于按照所述存儲器控制器解釋后的命令進(jìn)行相應(yīng)操作。
其中,所述存儲器控制器還包括命令排序單元,用于按照預(yù)定的排序規(guī) 則,對待執(zhí)行命令隊(duì)列中的命令進(jìn)行排序,并將排序后命令的信息發(fā)送到所述 存儲器控制器的命令前向觀測單元;
所述命令前向觀測單元,還用于獲取經(jīng)所述命令排序單元排序后的待執(zhí)行 命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息。
本發(fā)明實(shí)施例提供的技術(shù)方案,采用了命令前向預(yù)測的機(jī)制,即根據(jù)待執(zhí) 行命令的信息確定當(dāng)前采用的控制策略,能夠根據(jù)不同命令的不同特點(diǎn)動(dòng)態(tài)確 定當(dāng)前采用的策略,從而能夠充分利用頁保持打開策略和頁保持關(guān)閉策略的優(yōu)點(diǎn);同時(shí),該技術(shù)方案可以對命令隊(duì)列中的命令進(jìn)行重排序,增加行命中的操 作,減少讀寫命令的切換。本發(fā)明實(shí)施例提供的技術(shù)方案大大降低了存儲器進(jìn) 行數(shù)據(jù)訪問時(shí)的延遲,顯著增加了數(shù)據(jù)總線的可利用帶寬,提高了系統(tǒng)的性能。
圖1為本發(fā)明實(shí)施例提供的一種存儲器的控制方法流程示意圖; 圖2為本發(fā)明實(shí)施例提供的構(gòu)建的命令隊(duì)列結(jié)構(gòu)的簡化示意圖; 圖3為本發(fā)明提供的存儲器控制器結(jié)構(gòu)的簡化示意圖; 圖4為本發(fā)明實(shí)施例提供的存儲器控制系統(tǒng)結(jié)構(gòu)示意圖; 圖5為本發(fā)明實(shí)施例提供的存儲器控制系統(tǒng)原理示意圖。
具體實(shí)施例方式
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將結(jié)合附圖對本發(fā)明的 實(shí)施例進(jìn)行詳細(xì)的介紹,下面的描述僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域 普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以沖艮據(jù)這些實(shí)施例獲 得本發(fā)明的其他的實(shí)施方式。
本發(fā)明實(shí)施例主要通過一種命令前向預(yù)測的機(jī)制,動(dòng)態(tài)控制頁保持打開策 略與頁保持關(guān)閉策略;同時(shí),構(gòu)建了命令隊(duì)列結(jié)構(gòu),利用該命令隊(duì)列結(jié)構(gòu)對命 令進(jìn)行重排序,從而能夠大大降低了存儲器進(jìn)行數(shù)據(jù)訪問時(shí)的延遲,顯著增加 了數(shù)據(jù)總線的可利用帶寬,提高了系統(tǒng)的性能。
在本發(fā)明實(shí)施例中,對存儲器的控制主要以對DDR SDRAM的控制為例進(jìn) 行說明,但不局限于此,可適用于對任何類型存儲器的控制。
本發(fā)明實(shí)施例提供了一種存儲器的控制方法,如圖l所示,所述方法包括
步驟T1:獲取存儲體的運(yùn)行狀態(tài);
存儲體的運(yùn)行狀態(tài)可包括三種空閑狀態(tài),激活狀態(tài)和等待狀態(tài)。 等待狀態(tài)指當(dāng)存儲體接受了命令之后,按照命令協(xié)議時(shí)間的進(jìn)行等待,在
此等待狀態(tài)下存儲體不接收下一命令;當(dāng)達(dá)到等待時(shí)間后,當(dāng)前一個(gè)執(zhí)行的命
令為激活、讀、寫命令,跳入激活狀態(tài)。
空閑狀態(tài)表明存儲體當(dāng)前沒有被激活(即存儲體當(dāng)前不存在被激活的行)。當(dāng)需要對該存儲體進(jìn)行讀寫操作時(shí),會先對該存儲體發(fā)送一個(gè)行激活的命令, 存儲體先跳入等待狀態(tài),然后進(jìn)入激活狀態(tài)。
激活狀態(tài),表明當(dāng)前的存儲體處于激活狀態(tài),即存儲體當(dāng)前存在被激活的行。
在本發(fā)明實(shí)施例中,可通過為每個(gè)存儲體設(shè)置存儲體調(diào)度器,來指示存儲
體的運(yùn)行狀態(tài),存々者體調(diào)度器可按照DDR SDRAM的命令協(xié)議對相應(yīng)的存儲體 進(jìn)行監(jiān)測,以提供該存儲體的運(yùn)行狀態(tài)。
步驟T2:獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信
自-
上述的地址信息主要包括命令的行地址,也可以包括列地址。
在存儲體執(zhí)行當(dāng)前的命令的同時(shí),會對待執(zhí)行的命令隊(duì)列中的命令進(jìn)行搜 索,利用搜索結(jié)果來獲取該存儲體對應(yīng)的待執(zhí)行命令隊(duì)列中的第一個(gè)命令(即 下一個(gè)要執(zhí)行的命令),搜索的方式可以為搜索命令隊(duì)列t的每個(gè)命令的行地址 和存儲體地址,從而找A所述存儲體對應(yīng)的下一個(gè)命令的行地址。
步驟T3:根據(jù)所述運(yùn)行狀態(tài)和地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用 的控制策略,所述策略包括頁保持打開策略和頁保持關(guān)閉策略。
根據(jù)存儲體調(diào)度器獲知存儲體的運(yùn)行狀態(tài),當(dāng)存書者體的運(yùn)行狀態(tài)為激活狀 態(tài)時(shí),判斷所述存儲體中激活行的行地址與所述下一個(gè)命令的行地址是否一致, 若是,即屬于行命中的情況,這時(shí),采用頁保持打開策略;若否,即屬于行缺 失的情況,這時(shí),采用頁保持關(guān)閉策略。
進(jìn)一步的,本發(fā)明實(shí)施例還可利用前向預(yù)測的結(jié)果,控制對處于空閑狀態(tài) 的存儲體的激活操作,具體包括如下處理
根據(jù)獲取到的該存儲體在待執(zhí)行命令隊(duì)列中的下一個(gè)命令的地址信息,如 行地址,通過激活所述存儲體中相同的行來激活該存儲體,這樣當(dāng)執(zhí)行下一個(gè) 命令時(shí),屬于行命中的情況,則采用頁保持打開策略,以減少訪問延時(shí)。
為了提高總線效率,在本發(fā)明實(shí)施例中,還包括按照預(yù)定的排序規(guī)則, 對待執(zhí)行命令隊(duì)列中的命令進(jìn)行排序;
這時(shí)上述步驟T2為獲取排序后的待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的
10下一個(gè)命令的地址信息。即在進(jìn)行前向預(yù)測時(shí),利用排序后的命令動(dòng)態(tài)確定所 釆用的策略。
首先,構(gòu)建命令隊(duì)列結(jié)構(gòu)以進(jìn)入隊(duì)列的命令進(jìn)行重排序,這里,本發(fā)明實(shí)
施例提供了一種利用寄存器組來實(shí)現(xiàn)的排序的處理方法,具體包括如下處理 進(jìn)入隊(duì)列結(jié)構(gòu)的命令根據(jù)排序規(guī)則,獲知自己在隊(duì)列的位置后,將該命令
信息存至隊(duì)列,并調(diào)整在命令隊(duì)列中的其他命令的位置。當(dāng)讀取命令時(shí)每次只
讀取隊(duì)列中的第一個(gè)命令,當(dāng)?shù)?一個(gè)命令被取出時(shí)那么隊(duì)列中的剩下的命令則
前移,直到隊(duì)列中無命令。
可選的,如圖2所示,命令隊(duì)列結(jié)構(gòu)可由8個(gè)寄存器組成。每個(gè)寄存器保
存命令的駐留時(shí)間、行地址、列地址、存儲體地址、命令類型和數(shù)據(jù)長度的信 臺
其中,隊(duì)列結(jié)構(gòu)的頭,也就是0位置對應(yīng)的寄存器,是單方向命令只能由l
位置的寄存器進(jìn)從o位置的寄存器直接出。執(zhí)行命令讀取時(shí),總是從o位置的 寄存器進(jìn)行命令讀取,然后進(jìn)行命令解釋。
其余位置的寄存器采用雙向移動(dòng)的方向,即可^^前后的寄存器讀取命令也 可將命令送入前后的寄存器。寄存器的移動(dòng)根據(jù)當(dāng)前有無新的命令以及o位置 的命令是否已取出決定。
如杲當(dāng)前不執(zhí)行命令讀取,有新命令進(jìn)入時(shí),命令隊(duì)列中有三個(gè)命令分別
位于0位置的寄存器,l位置的寄存器,2位置的寄存器,新命令的位置落在l 位置的寄存器。則此時(shí)O位置的命令保持不變,l位置的命令被新的命令取代, 而原來的l, 2位置的命令則移動(dòng)到2, 3位置。
如果當(dāng)前執(zhí)行命令讀取,且有新命令進(jìn)入時(shí),命令隊(duì)列中有三個(gè)命令分別 位于0位置的寄存器,l位置的寄存器,2位置的寄存器,新命令的位置落在l 位置的寄存器。則此時(shí)新命令放在位置0,而l, 2位置的命令保持不變。
當(dāng)命令隊(duì)列已滿時(shí),下一個(gè)新的命令不能夠進(jìn)入隊(duì)列。可為隊(duì)列結(jié)構(gòu)中的 命令設(shè)置計(jì)數(shù)器,以記錄該命令的駐留時(shí)間,例如,根據(jù)命令在隊(duì)列的時(shí)間, 每個(gè)周期計(jì)數(shù)器加1,當(dāng)超過系統(tǒng)預(yù)設(shè)值之后保持該計(jì)數(shù)器的值保持不變。
下面對上述命令隊(duì)列的排序規(guī)則進(jìn)行說明。排序規(guī)則根據(jù)已在命令隊(duì)列中的命令信息明確新命令擺放的位置,主要包
括禁止規(guī)則和重排規(guī)則,所述禁止規(guī)則優(yōu)先于所述重排規(guī)則;
禁止規(guī)則包括命令駐留時(shí)間超出時(shí)禁止;讀寫地址重疊時(shí)禁止;命令源
重合時(shí)讀寫命令禁止;重排規(guī)則包括行命中優(yōu)先;讀寫命令相同優(yōu)先。
經(jīng)過上述排序規(guī)則過濾之后,得到當(dāng)前命令的存放位置。下面分別對各個(gè)
規(guī)則進(jìn)行說明。
1、 命令駐留時(shí)間超出時(shí)禁止
為了防止命令等待的時(shí)間過長導(dǎo)致"餓死"的情況,如對命令2 ( cmd2 ), 由于其的優(yōu)先級較低,很多后來的命令先于cmd2執(zhí)行,從而導(dǎo)致cmd2長時(shí)間 得不到響應(yīng),影響系統(tǒng)的效率。
因此,設(shè)定計(jì)數(shù)器計(jì)算并記錄命令的駐留時(shí)間,當(dāng)獲知cmd2在命令隊(duì)列 中的等待時(shí)間超出預(yù)定時(shí)間(如32個(gè)周期)后,禁止新入隊(duì)的命令先于cmd2 執(zhí)行,從而保證了 cmd2在一定的時(shí)間內(nèi)得到響應(yīng)。
2、 讀寫地址重疊時(shí)禁止
系統(tǒng)中寫命令是對已指定的地址中的數(shù)據(jù)進(jìn)行更新;讀命令是獲取已指定 的地址中的數(shù)據(jù)。地址重疊的意思是讀寫命令的存儲體地址、行地址即列地址 相同。
為防止當(dāng)采用命令排序后,地址重疊可能引入的沖突。例如,假設(shè)原始數(shù) 據(jù)為D0,進(jìn)行一次寫之后的數(shù)據(jù)為Dl,進(jìn)行第二次寫之后的數(shù)據(jù)為D2,可能 會帶來如下沖突
讀后寫沖突此時(shí)期望的讀數(shù)據(jù)為寫命令更新后的D1。但當(dāng)讀和寫順序顛 倒后讀的數(shù)據(jù)為更新之前的數(shù)據(jù)D0。
寫后寫沖突此時(shí)期望的寫之后的最終數(shù)據(jù)為D2。但當(dāng)寫操作之間的順序 顛倒后得到的最終數(shù)據(jù)為Dl。
寫后讀沖突此時(shí)期望的讀數(shù)據(jù)為DO,但當(dāng)讀和寫顛倒順序之后數(shù)據(jù)為Dl。
為避免上述沖突的發(fā)生,當(dāng)新入隊(duì)的命令與待執(zhí)行隊(duì)列中的命令的地址重 疊時(shí),禁止新入隊(duì)的命令排在所述命令前。3. 命令源重合時(shí)讀寫命令禁止
每一命令來自一個(gè)端口 (源)。同一的端口的讀寫命令是按照一定順序發(fā)送 過來的。
對于讀操作來說,該端口的期望讀命令返回的數(shù)據(jù)是按照讀命令發(fā)送的順 序傳遞。如果重排順序,那么需要一個(gè)將順序恢復(fù)的機(jī)制,而這種實(shí)現(xiàn)方式的 代價(jià)比較大,所以不對同一端口的讀操作進(jìn)行重新排序。
對于寫命令來說,如果重排順序,那么寫命令對應(yīng)數(shù)據(jù)也要按照排序后的 順序來傳輸,這種實(shí)現(xiàn)方式的代價(jià)比較大,所以不對同一端口的寫操作進(jìn)行重 新排序。
但對于來自同一端口的讀操作和寫操作,可以進(jìn)行排序。 即當(dāng)所述的命令來自同 一個(gè)端口且所述命令的命令類型相同時(shí),禁止對所 述命令進(jìn)行排序,該命令類型包括讀命令和寫命令。
4. 行命中優(yōu)先
行命中是新入隊(duì)的命令與命令隊(duì)列中某一命令的存儲體地址和行地址相同 時(shí),將該新入隊(duì)的命令放到所述命令的下一位,從而避免了屬于行命中情況的 兩個(gè)的命令之間,存在行缺失情況時(shí),增加行預(yù)充電延時(shí)和行激活延時(shí)。
5. 讀寫命令相同優(yōu)先
該規(guī)則將讀命令或?qū)懨钍占谝黄?,即若新入?duì)的命令與命令隊(duì)列中命 令的命令類相同,將新入隊(duì)的命令放到與該命令類型相同的命令的下一位。從
而減少讀寫命令的反轉(zhuǎn),減少DDR SDRAM的命令流水線與數(shù)據(jù)流水線的空閑 狀態(tài)。
其中,當(dāng)出現(xiàn)同時(shí)滿足行命中優(yōu)先和讀寫命令相同優(yōu)先的情況時(shí),首先考 慮讀寫命令相同優(yōu)先的規(guī)則,在此基礎(chǔ)上,再考慮行命中優(yōu)先的規(guī)則。
通過將上面幾項(xiàng)的排序原則結(jié)合起來,可以得到新入隊(duì)命令最合適的位置, 得到一個(gè)重排序的命令序列,利用排序后的命令序列對DDR SDRAM進(jìn)行控制, 可以大大提高總線效率。
為了清楚理解本發(fā)明實(shí)施例,下面結(jié)合具體的示例進(jìn)行說明。 若系統(tǒng)當(dāng)前的命令隊(duì)列結(jié)構(gòu)中有三個(gè)命令CmdO、 Cmdl和Cmd2,待入隊(duì)的新命令為Cmdjn,設(shè)置系統(tǒng)預(yù)定的命令駐留時(shí)間為32個(gè)周期。即未排序前 命令的順序?yàn)镃mdO, Cmdl, Cmd2, Cmd—in, 其中,各命令的具體命令信息如下
(1 ) CmdO的信息
命令類型讀,存儲體地址=0,行地址0, 列地址0, 長度16, 命令端口 0, 駐留時(shí)間10
(2) Cmdl的信息
命令類型讀,存儲體地址=1,行地址2,列地址128, 長度16, 命令端口 1,駐留時(shí)間8
(3) Cmd2的信息
命令類型寫,存儲體地址=0,行地址3,列地址36, 長度16,命令端口 2 駐留時(shí)間5
(4) Cmdjn的信息
命令類型讀,存儲體地址=0,行地址0,列地址36, 長度16,命令端口 3駐留時(shí)間0
根據(jù)上述各個(gè)命令的信息,將待進(jìn)入隊(duì)列的新命令與隊(duì)列中已有的命令進(jìn) 行比較可知存在如下結(jié)論
A. 所有命令的駐留時(shí)間都小于32。隊(duì)列中不存在命令駐留時(shí)間超出禁止 的情況。
B. 沒有地址重疊的命令,不存在讀寫地址重疊時(shí)禁止情況。
C. 不存在命令源重合讀寫命令禁止情況。
D. Cmdjn與CmdO的存儲體地址,行地址相同,屬于行命中的情況,滿足 行命中優(yōu)先情況。
E:Cmd—in與CmdO, Cmdl的讀寫命令相同,滿足讀寫命令相同優(yōu)先的情況。
綜合上述結(jié)論得到,將新的命令的位置重排在CmdO位置之后,則此時(shí)命 令隊(duì)列中的命令為
CmdO, Cmdjn, Cmdl,Cmd2未排序前執(zhí)行命令時(shí),進(jìn)行如下操作
CmdO, Cmdl正常執(zhí)行。Cmd2與Cmd0的存儲體地址相同而行地址不同, 屬于行缺失情況,則采用頁保持打開策略執(zhí)行Cmd2命令時(shí),會首先關(guān)閉存儲 體O,進(jìn)行行預(yù)充電,等待行預(yù)充電延時(shí)后激活存儲體O,等待行激活延時(shí)后執(zhí) 行cmd2。然后Cmdjn也是與Cmd2存儲體地址相同而行地址不同,執(zhí)行同樣 的操作,首先關(guān)閉存儲體0,等待行預(yù)充電延時(shí)后激活存儲體O,等待行激活延 時(shí)后執(zhí)行Cmd_in。
進(jìn)行排序后執(zhí)行命令時(shí),進(jìn)行如下操作
Cmd0正常執(zhí)行。Cmdjn與Cmd0的存儲體地址相同而行地址相同,采用 頁保持打開策略,可以直接執(zhí)行Cmdjn,而且此時(shí)相比較排序前的順序來說, CmdO, Cmd—in都是存儲體0命令,占用存儲體0的時(shí)間相對充足,可以用于掩 藏較長的Cmd 1的激活時(shí)間或關(guān)閉時(shí)間。Cmd2與Cmd_in的存儲體地址相同而 行地址不同,那么Cmd2命令在執(zhí)行的時(shí)候,會首先關(guān)閉存儲體0,等待行預(yù)充 電延時(shí)后激活存儲體O,等待行激活延時(shí)后執(zhí)行cmd2。因而重排序后所花的時(shí) 間減少了行預(yù)充電延時(shí)+行激活延時(shí)+掩藏Cmdl的命令時(shí)間。
進(jìn)一步的,結(jié)合上述的前向預(yù)測機(jī)制,由于DDR SDRAM命令協(xié)議的特點(diǎn), 同一存儲體的命令是有空隙的,采用在命令空隙的時(shí)候,對命令隊(duì)列中的命令 進(jìn)4亍前向預(yù)測。
此時(shí)存儲體O調(diào)度器的狀態(tài)處于等待狀態(tài),若存儲體1調(diào)度器處于空閑狀態(tài)。
命令隊(duì)列的命令為
Cmd0, Cmdjn, Cmdl, Cmd2, 對當(dāng)前的處理進(jìn)4亍分析,可得到如下結(jié)論
對CmdO, Cmd0為存儲體0的命令,命令隊(duì)列中存儲體0對應(yīng)的下一個(gè)命 令為Cmdjn, Cmd0和Cmdjn屬于行命中的情況,等待狀態(tài)結(jié)束進(jìn)入激活狀態(tài), 執(zhí)行Cmd0時(shí)采用頁保持打開策略;
對Cmd—in , Cmd—in為存儲體0的命令,直接執(zhí)行該命令;
對Cmdl, Cmdl為存儲體1的命令,存儲體1調(diào)度器處于空閑狀態(tài),需要
15執(zhí)行激活命令,激活存儲體1時(shí),利用Cmdl命令的行地址對存儲體1進(jìn)行激 活,即激活存儲體1中Cmdl命令的行地址對應(yīng)的行,以避免行缺失的情況;
對Cmd2 , Cmd2為存儲體0的命令,由于隊(duì)列前端已有同存儲體0的命令, 即Cmd2不是存儲體0對應(yīng)的待執(zhí)行命令的第一個(gè)命令,所以暫不不處理,當(dāng) 執(zhí)行Cmd—in時(shí),發(fā)現(xiàn)存儲體0的下一個(gè)待執(zhí)行命令,即Cmd2,屬于行缺失的 情況,則確定當(dāng)前采用頁保持關(guān)閉策略。
由上所述,確認(rèn)下一個(gè)命令為存儲體1的激活命令,該命令只要滿足DDR SDRAM命令協(xié)議就可以執(zhí)行。采用上述處理方式,能夠使對存儲體l的激活操 作在執(zhí)行Cmdjn的空隙中執(zhí)行,可以有效的掩藏激活操作的等待時(shí)間,降低了 數(shù)據(jù)訪問的延時(shí)。
本發(fā)明還提供了一種存儲器控制器,如圖3所示,包括
存儲體調(diào)度器31 ,用于獲取存儲體的運(yùn)行狀態(tài);
命令前向觀測單元32,用于獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下 一個(gè)命令的地址信息;
策略確定單元33,用于根據(jù)所述存儲體調(diào)度器31獲取的運(yùn)行狀態(tài)和所述命 令前向觀測單元32獲取的地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控制策 略,所述策略包括頁保持打開策略和頁保持關(guān)閉策略。
進(jìn)一步的,上述存儲器控制器還包括
命令排序單元,用于按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn) 行排序;
所述命令前向觀測單元32,還用于獲取經(jīng)所述命令排序單元排序后的待執(zhí) 行命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息。
進(jìn)一步的,為保障命令排序單元能夠?qū)﹃?duì)列進(jìn)行排序,上述存儲器控制器 還包括至少兩個(gè)命令隊(duì)列構(gòu)建寄存器,用以構(gòu)建命令隊(duì)列結(jié)構(gòu)
所述命令隊(duì)列構(gòu)建寄存器,用于保存命令的信息,向所述命令前向觀測單 元提供該命令相應(yīng)的信息,并根據(jù)所述命令排序單元的排序結(jié)果更新所保存的 命令的信息,其中,所述命令的信息包括命令的存儲體地址、行地址和列地址, 命令類型。調(diào)度、存儲體之間DDR SDRAM命令協(xié)議控制和對DDR SDRAM命令的解釋。當(dāng)命令隊(duì)列中有命令, 存儲器控制器從命令隊(duì)列中的第 一位取命令,定義為當(dāng)前命令。
該存儲器控制器采用了全流水線的操作,在每一周期根據(jù)各個(gè)存儲體反饋 的信息、DDR SDRAM的命令流水線與數(shù)據(jù)流水線的信息確定下一個(gè)時(shí)鐘周期 將要執(zhí)行的DDR SDRAM命令。當(dāng)前命令執(zhí)行完后則從命令隊(duì)列取下一個(gè)命令, 直到命令隊(duì)列空。
進(jìn)一步的該存儲器控制器還要處理自動(dòng)刷新、低功耗、模式寄存器配置等 功能。
由于每個(gè)時(shí)鐘周期的每個(gè)存儲體可選取出 一個(gè)命令,但DDR SDRAM的命 令總線每個(gè)時(shí)鐘周期只能執(zhí)行一個(gè)命令,需要對命令進(jìn)行選擇。本發(fā)明實(shí)施例 根據(jù)時(shí)間優(yōu)先的原則進(jìn)行選擇。
存儲器控制器當(dāng)前處理的存儲體優(yōu)先級最高,有行缺失命令那么在采用自 動(dòng)刷新讀寫命令,這樣可以提前使該存儲體進(jìn)入頁保持關(guān)閉狀態(tài),而且因?yàn)樽?動(dòng)刷新命令不占用DDR SDRAM命令總線帶寬,減少了命令執(zhí)行的延遲。對于 其他的存儲體來說,存儲器控制器根據(jù)命令所在的命令隊(duì)列位置的次序,確定 選用哪個(gè)存儲體執(zhí)行下一步的命令。
本發(fā)明實(shí)施例提供的存儲器控制器中各功能模塊的具體工作方式參見本發(fā) 明的方法實(shí)施例。
本發(fā)明實(shí)施例提供的技術(shù)方案,采用了命令前向預(yù)測的機(jī)制,即根據(jù)待執(zhí) 行命令的信息確定當(dāng)前采用的控制策略,能夠根據(jù)不同命令的不同特點(diǎn)動(dòng)態(tài)確 定當(dāng)前釆用的策略,從而能夠充分利用頁保持打開策略和頁保持關(guān)閉策略的優(yōu) 點(diǎn);同時(shí),該技術(shù)方案可以對命令隊(duì)列中的命令進(jìn)行重排序,增加行命中的操 作,減少讀寫命令的切換。本發(fā)明實(shí)施例提供的技術(shù)方案大大降低了存儲器進(jìn) 行數(shù)據(jù)訪問時(shí)的延遲,顯著增加了數(shù)據(jù)總線的可利用帶寬,提高了系統(tǒng)的性能。
本發(fā)明實(shí)施例一種存儲器控制系統(tǒng),如圖4所示,所述系統(tǒng)包括存儲器控 制器41和雙倍數(shù)據(jù)傳輸速度同步動(dòng)態(tài)隨機(jī)存取存儲器DDR SDRAM42,所述 DDR SDRAM42包括至少兩個(gè)存儲體,
1所述存儲器控制器41包括,存儲體調(diào)度器,用于獲取存儲體的運(yùn)行狀態(tài); 命令前向觀測單元,用于獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命 令的地址信息;策略確定單元,用于根據(jù)所述存儲體調(diào)度器獲取的運(yùn)行狀態(tài)和 所述命令前向觀測單元獲取的地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控 制策略,并將該策略對應(yīng)的命令進(jìn)行解釋后發(fā)送至DDRSDRAM42,所述策略 包括頁保持打開策略和頁保持關(guān)閉策略;
所述DDR SDRAM42,用于按照所述存儲器控制器41解釋后的命令進(jìn)行相 應(yīng)操作。
進(jìn)一步的,所述存儲器控制器41還包括
命令排序單元,用于按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn) 行排序,并將排序后命令的信息發(fā)送到所述存儲器控制器的命令前向觀測單元;
所述存儲器控制器的命令前向觀測單元,還用于荻取經(jīng)所述命令排序單元 排序后的待執(zhí)行命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息。
如圖5所示,為本發(fā)明實(shí)施例提供的存儲器控制系統(tǒng)的原理圖,由寄存器 組(如由8個(gè)寄存器構(gòu)成的寄存器組)構(gòu)建命令隊(duì)列結(jié)構(gòu),新命令到來時(shí),根 據(jù)排序規(guī)則進(jìn)行命令重排序,同時(shí),利用命令前向預(yù)測機(jī)制對寄存器組中的命 令進(jìn)行前向觀測,確定采用的控制策略,存儲器控制器對整個(gè)系統(tǒng)的操作進(jìn)行 控制,將最終解釋輸出的命令發(fā)送給DDR SDRAM。
本發(fā)明實(shí)施例提供的技術(shù)方案,采用了命令前向預(yù)測的機(jī)制,即根據(jù)待執(zhí) 行命令的信息確定當(dāng)前采用的控制策略,能夠根據(jù)不同命令的不同特點(diǎn)動(dòng)態(tài)確 定當(dāng)前采用的策略,從而能夠充分利用頁保持打開策略和頁保持關(guān)閉策略的優(yōu) 點(diǎn);同時(shí),該技術(shù)方案可以對命令隊(duì)列中的命令進(jìn)行重排序,增加行命中的操 作,減少讀寫命令的切換。本發(fā)明實(shí)施例提供的技術(shù)方案大大降低了存儲器進(jìn) 行數(shù)據(jù)訪問時(shí)的延遲,顯著增加了數(shù)據(jù)總線的可利用帶寬,提高了系統(tǒng)的性能。
通過程序指令相關(guān)硬件完成。所述實(shí)施例對應(yīng)的軟件可以存儲在一個(gè)計(jì)算機(jī)可 存儲讀取的介質(zhì)中。
以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范周并不局限于
18此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到 變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng) 以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1、一種存儲器的控制方法,其特征在于,所述方法包括獲取存儲體的運(yùn)行狀態(tài);獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息;根據(jù)所述運(yùn)行狀態(tài)和地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控制策略,所述策略包括頁保持打開策略和頁保持關(guān)閉策略。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括 所述運(yùn)行狀態(tài)為激活狀態(tài),所述激活狀態(tài)為存儲體當(dāng)前被激活時(shí)所處的狀態(tài),所述地址信息包括行地址;所述根據(jù)所述運(yùn)行狀態(tài)信息和地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用 的控制策略為判斷所述存儲體中激活行的行地址與所述下一個(gè)命令的行地址是否 一致, 若是,采用頁保持打開策略;若否,采用頁保持關(guān)閉策略。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括 所述運(yùn)行狀態(tài)包括空閑狀態(tài)和等待狀態(tài),所述空閑狀態(tài)為存儲體當(dāng)前未被激活時(shí)所處的狀態(tài);所述等待狀態(tài)為存儲體接收命令后按照命令協(xié)議等待時(shí)所 處的狀態(tài);當(dāng)所述存儲體處于空閑狀態(tài)時(shí),利用所述下一個(gè)命令的地址信息對所述存 儲體進(jìn)行激活,以^使所述存儲體進(jìn)入激活狀態(tài);當(dāng)所述存^(諸體處于等待狀態(tài)時(shí), 不執(zhí)行下一個(gè)命令。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括 按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn)行排序; 所述獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息為獲取排序后的待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信自
5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述排序規(guī)則包括禁止規(guī)則 和重排規(guī)則,所述禁止規(guī)則優(yōu)先于所述重排規(guī)則;所述禁止規(guī)則包括當(dāng)所述命令在命令隊(duì)列中的駐留時(shí)間超出預(yù)定值時(shí),禁止新入隊(duì)的命令排在所述命令前;當(dāng)新入隊(duì)的命令的地址與命令隊(duì)列中命令的地址相同時(shí),禁止新入隊(duì)的命 令排在所述命令前,所述地址包括存儲體地址、4亍地址和列地址;當(dāng)所述的命令來自同 一個(gè)端口且所述命令的命令類型相同時(shí),禁止對所述 命令進(jìn)行排序;所述重排規(guī)則包括行地址相同時(shí),將新入隊(duì)的命令排在所述命令的下一位置;當(dāng)新入隊(duì)的命令與命令隊(duì)列中的命令類型相同時(shí),將新入隊(duì)的命令排在所 述命令的下一位置。
6、 一種存儲器控制器,其特征在于,包括 存儲體調(diào)度器,用于獲取存儲體的運(yùn)行狀態(tài);命令前向觀測單元,用于獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一 個(gè)命令的地址信息;策略確定單元,用于根據(jù)所述存儲體調(diào)度器獲取的運(yùn)行狀態(tài)和所述命令前 向觀測單元獲取的地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控制策略,所 述策略包括頁保持打開策略和頁保持關(guān)閉策略。
7、 根據(jù)權(quán)利要求6所述的存儲器控制器,其特征在于,所述控制器還包括 命令排序單元,用于按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn)行排序;所述命令前向觀測單元,還用于獲取經(jīng)所述命令排序單元排序后的待執(zhí)行 命令隊(duì)列中所述存儲體對應(yīng)的下 一個(gè)命令的地址信息。
8、 根據(jù)權(quán)利要求6所述的存儲器控制器,其特征在于,所述控制器還包括 至少兩個(gè)命令隊(duì)列構(gòu)建寄存器,所述命令隊(duì)列構(gòu)建寄存器,用于保存命令的信息,向所述命令前向觀測單 元提供該命令相應(yīng)的信息,并根據(jù)所述命令排序單元的排序結(jié)果更新所保存的 命令的信息,其中,所述命令的信息包括命令的存儲體地址、;f亍地址和列地址,命令類型。
9、 一種存儲器控制系統(tǒng),其特征在于,所述系統(tǒng)包括存儲器控制器和雙倍 數(shù)據(jù)傳輸速度同步動(dòng)態(tài)隨機(jī)存取存儲器DDR SDRAM,所述DDR SDRAM包括 至少兩個(gè)存儲體,所述存儲器控制器包括,存儲體調(diào)度器,用于獲取存儲體的運(yùn)行狀態(tài);命 令前向觀測單元,用于獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令 的地址信息;策略確定單元,用于根據(jù)所述存儲體調(diào)度器獲取的運(yùn)行狀態(tài)和所 述命令前向觀測單元獲取的地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控制 策略,并將該策略對應(yīng)的命令進(jìn)行解釋后發(fā)送至DDR SDRAM,所述策略包括 頁保持打開策略和頁保持關(guān)閉策略;所述DDR SDRAM,用于按照所述存儲器控制器解釋后的命令進(jìn)行相應(yīng)操作。
10、 根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述存儲器控制器還包括 命令排序單元,用于按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn)行排序,并將排序后命令的信息發(fā)送到所述存儲器控制器的命令前向觀測單元; 所述命令前向觀測單元,還用于獲取經(jīng)所述命令排序單元排序后的待執(zhí)行 命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息。
全文摘要
本發(fā)明公開了一種存儲器的控制方法、存儲器控制器和存儲器控制系統(tǒng),涉及存儲控制技術(shù),能夠充分利用頁保持打開策略和頁保持關(guān)閉策略的優(yōu)勢,減少讀寫命令的反轉(zhuǎn),大大降低了存儲器進(jìn)行數(shù)據(jù)訪問時(shí)的延遲,顯著增加了數(shù)據(jù)總線的可利用帶寬,提高了系統(tǒng)的性能。本發(fā)明提供的存儲器的控制方法包括獲取存儲體的運(yùn)行狀態(tài);獲取待執(zhí)行的命令隊(duì)列中所述存儲體對應(yīng)的下一個(gè)命令的地址信息;根據(jù)所述運(yùn)行狀態(tài)信息和地址信息動(dòng)態(tài)確定對所述存儲體當(dāng)前所采用的控制策略,所述策略包括頁保持打開策略和頁保持關(guān)閉策略。同時(shí),該方法還包括按照預(yù)定的排序規(guī)則,對待執(zhí)行命令隊(duì)列中的命令進(jìn)行排序。本發(fā)明適用于任何對存儲器進(jìn)行控制的場景。
文檔編號G06F13/16GK101639817SQ20091012920
公開日2010年2月3日 申請日期2009年3月13日 優(yōu)先權(quán)日2009年3月13日
發(fā)明者何云鵬, 劉宇軒, 李建威 申請人:青島海信信芯科技有限公司