一種ddr2-sdram控制器及其低延遲優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及自動(dòng)測(cè)試平臺(tái)設(shè)計(jì)領(lǐng)域,具體涉及DDR2-SDRAM存儲(chǔ)控制器設(shè)計(jì),用于 為系統(tǒng)訪存任務(wù)提供存儲(chǔ)服務(wù)。
【背景技術(shù)】
[0002] 目前各個(gè)公司推出的DDR2-SDRAM控制器產(chǎn)品都是面向通用應(yīng)用。而在普通應(yīng)用 場(chǎng)合,對(duì)存儲(chǔ)控制器的帶寬要求高于延時(shí),因此目前推出的這些控制器也主要專注于對(duì)存 儲(chǔ)帶寬的優(yōu)化上。而在RF自動(dòng)測(cè)試平臺(tái)中,由于應(yīng)用場(chǎng)合的限制,導(dǎo)致任務(wù)的響應(yīng)與處理 有著嚴(yán)格的時(shí)序要求,因此存儲(chǔ)控制器訪存延時(shí)同樣重要。
[0003] 隨著RF自動(dòng)測(cè)試平臺(tái)的廣泛應(yīng)用,急需要一種針對(duì)類似系統(tǒng)應(yīng)用特點(diǎn)而設(shè)計(jì)的 存儲(chǔ)控制器。本發(fā)明即在仔細(xì)分析該類系統(tǒng)工作過(guò)程和存儲(chǔ)需求的基礎(chǔ)上,從實(shí)時(shí)性需求 的角度出發(fā),設(shè)計(jì)一款低延時(shí)的多端口 DDR2-SDRAM控制器。
【發(fā)明內(nèi)容】
[0004] 技術(shù)問(wèn)題:本發(fā)明針對(duì)RF自動(dòng)測(cè)試平臺(tái)的實(shí)時(shí)性需求,提出了一種改進(jìn)的 DDR2-SDRAM控制器及低延遲優(yōu)化方法,采用革新的訪存序列和刷新機(jī)制,從而降低存儲(chǔ)控 制器的最大訪存延遲。
[0005] 技術(shù)方案:
[0006] 本發(fā)明采用如下技術(shù)方案:
[0007] -種用于RF自動(dòng)測(cè)試平臺(tái)的低延遲DDR2-SDRAM控制器,包含
[0008] 用戶接口模塊,用于服務(wù)前端ADC/DAC的訪存請(qǐng)求;
[0009] 指令生成模塊,生成訪存指令;
[0010] 刷新模塊,負(fù)責(zé)存儲(chǔ)器刷新操作;
[0011] 其特征在于:
[0012] 用戶接口模塊包含多個(gè)用戶接口,每個(gè)用戶接口分別為一個(gè)邏輯資源私有;所述 邏輯資源由控制器根據(jù)存儲(chǔ)器的rank和bank結(jié)構(gòu)對(duì)存儲(chǔ)器存儲(chǔ)空間進(jìn)行劃分得來(lái),邏輯 資源的地址空間相互獨(dú)立;訪存任務(wù)通過(guò)對(duì)用戶接口的占用實(shí)現(xiàn)與邏輯資源的一一對(duì)應(yīng), 指令生成模塊按順序服務(wù)各用戶接口的訪存請(qǐng)求;刷新模塊在每60個(gè)訪存指令周期的結(jié) 尾輸出一個(gè)刷新指令序列,通過(guò)行訪問(wèn)刷新存儲(chǔ)陣列中的指定行。
[0013] 一種用于RF自動(dòng)測(cè)試平臺(tái)的DDR2-SDRAM控制器的低延遲優(yōu)化方法,其特征在 于:
[0014] 1)根據(jù)存儲(chǔ)器的rank和bank結(jié)構(gòu),將存儲(chǔ)器存儲(chǔ)空間劃為多個(gè)獨(dú)立的邏輯資源, 每個(gè)邏輯資源為一個(gè)用戶接口私有;
[0015] 2)合理的分配各訪存任務(wù)的地址空間,在平臺(tái)工作過(guò)程中,并行工作的訪存任務(wù) 通過(guò)對(duì)用戶接口的占用實(shí)現(xiàn)與存儲(chǔ)器邏輯資源之間一一對(duì)應(yīng);
[0016] 3)按順序服務(wù)各用戶接口的訪存請(qǐng)求,避免相鄰訪存請(qǐng)求間的地址相關(guān)性,從而 可以配合使用固定的訪存指令序列而不會(huì)違反DDR2-SDRAM操作時(shí)序;
[0017] 4)改進(jìn)刷新機(jī)制,控制器在60個(gè)訪存指令周期的結(jié)尾安排1個(gè)刷新周期,通過(guò)行 訪問(wèn)刷新存儲(chǔ)陣列中的指定行,將刷新時(shí)間化整為零,降低了訪存請(qǐng)求和刷新請(qǐng)求沖突對(duì) 訪存延遲的影響。
[0018] 有益效果:
[0019] 本發(fā)明合理的分配各訪存任務(wù)的地址空間,按順序服務(wù)各用戶接口的訪存請(qǐng)求, 避免了相鄰訪存請(qǐng)求間的地址相關(guān)性,從而可以配合使用固定的訪存指令序列而不會(huì)違反 DDR2-SDRAM操作時(shí)序;改進(jìn)刷新機(jī)制,將刷新時(shí)間化整為零,降低了訪存請(qǐng)求和刷新請(qǐng)求 沖突對(duì)訪存延遲的影響。
[0020] 本發(fā)明在保證了 RF自動(dòng)測(cè)試平臺(tái)帶寬需求的情況下,顯著降低了訪存延遲,提高 了系統(tǒng)的實(shí)時(shí)性能。
【附圖說(shuō)明】
[0021] 圖1為本發(fā)明整體結(jié)構(gòu)框圖;
[0022] 圖2為本發(fā)明存儲(chǔ)資源劃分示意圖;
[0023] 圖3為本發(fā)明訪存序列示意圖;
[0024] 圖4為本發(fā)明訪存序列生成模塊結(jié)構(gòu)圖;
[0025] 圖5為本發(fā)明刷新周期指令序列示意圖;
[0026] 圖6為本發(fā)明刷新模塊結(jié)構(gòu)圖;
【具體實(shí)施方式】
[0027] 下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的說(shuō)明。
[0028] 如圖1所示,針對(duì)DDR2-SDRAM控制器要實(shí)現(xiàn)的功能,利用模塊化的思想,整個(gè)控制 器的控制邏輯可以分為5個(gè)模塊,分別是初始化模塊,用戶接口模塊,指令生成模塊,主控 制模塊和數(shù)據(jù)通路模塊。
[0029] 本發(fā)明針對(duì)的RF自動(dòng)測(cè)試平臺(tái)中AD/DA數(shù)據(jù)采集發(fā)送系統(tǒng)要求至少有4路可以 并行工作的數(shù)據(jù)通路,因此控制器設(shè)計(jì)有4個(gè)用戶接口用于服務(wù)前端ADC/DAC的訪存請(qǐng)求。 在進(jìn)行采集工作時(shí),每個(gè)AD占用一個(gè)用戶接口以實(shí)現(xiàn)對(duì)存儲(chǔ)器的并行訪問(wèn)。AD采集為連續(xù) 的數(shù)據(jù)流,數(shù)據(jù)存入一段連續(xù)的邏輯地址空間,且各路AD優(yōu)先級(jí)相同,工作也互不影響。因 此只需在采集開(kāi)始之前對(duì)同時(shí)工作的各路AD數(shù)據(jù)的存儲(chǔ)地址空間進(jìn)行合理分配,使其訪 存空間互不重合,即可實(shí)現(xiàn)各個(gè)訪存任務(wù)對(duì)存儲(chǔ)器的訪問(wèn)在采集工作過(guò)程中相互獨(dú)立。利 用這一特點(diǎn),本發(fā)明控制器根據(jù)存儲(chǔ)器的rank和bank結(jié)構(gòu),將存儲(chǔ)空間劃分為4個(gè)邏輯資 源,并分配給4個(gè)用戶接口,每個(gè)用戶接口分別為一個(gè)邏輯資源私有。對(duì)于AD而言,由于每 路AD分配不同的用戶接口,從而形成與存儲(chǔ)器所劃分邏輯資源的一一對(duì)應(yīng)。對(duì)于DA和USB 等數(shù)據(jù)讀取任務(wù)而言,只要通過(guò)對(duì)任務(wù)所占用戶接口的調(diào)度,即可實(shí)現(xiàn)對(duì)整個(gè)存儲(chǔ)空間的 讀取訪問(wèn)。本發(fā)明控制器將SDRAM存儲(chǔ)資源劃分為4塊邏輯資源,分別分配給4個(gè)用戶接 口,因此控制器省略了仲裁模塊,由指令生成模塊直接處理各個(gè)用戶接口發(fā)來(lái)的讀寫請(qǐng)求。 初始化模塊負(fù)責(zé)DDR2-SDRAM的初始化工作。主控制模塊包括了控制器的主控制狀態(tài)機(jī)和 刷新模塊。用戶接口與前端AD/DA的數(shù)據(jù)通道相連,負(fù)責(zé)處理到來(lái)的讀寫請(qǐng)求,并返回相關(guān) 數(shù)據(jù)。而數(shù)據(jù)通道則負(fù)責(zé)相關(guān)數(shù)據(jù)在各層級(jí)之間的傳輸。相比于其他DDR2-SDRAM控制器, 本發(fā)明改進(jìn)重點(diǎn)在于指令生成模塊和刷新模塊。下面將詳細(xì)闡述這兩個(gè)模塊的設(shè)計(jì)。
[0030] 指令生成模塊
[0031] 如圖2所示,根據(jù)所選用的內(nèi)存模組的結(jié)構(gòu)特點(diǎn),本發(fā)明將整個(gè)存儲(chǔ)空間劃分為4 個(gè)獨(dú)立的資源,分別為各個(gè)用戶接口所私有。每個(gè)資源由一個(gè)rank中的兩個(gè)bank組成。通 過(guò)周期性地向各個(gè)獨(dú)立的資源發(fā)送訪存指令,既利用了 bank并行機(jī)制,也預(yù)防了各個(gè)資源 間指令的相互影響沖突。
[0032] 在指令生成模塊的設(shè)計(jì)中,訪存指令序列的設(shè)計(jì)是整個(gè)模塊設(shè)計(jì)的核心。指令序 列的設(shè)計(jì)非常具有技巧性。既要滿足DDR2-SDRAM對(duì)指令的時(shí)序要求,又要盡可能地隱藏指 令間的時(shí)序間隔,通過(guò)流水線式發(fā)送來(lái)提高控制器的帶寬性能。為了做到控制器的延時(shí)可 估算,本發(fā)明采用固定長(zhǎng)度的指令序列,模塊以13個(gè)時(shí)鐘為周期周期性地訪問(wèn)4塊存儲(chǔ)資 源。這樣利用了 bank并行機(jī)制提高了帶寬,并且避免了由于訪問(wèn)同一塊資源所造成的高延 時(shí)。
[0033] 下面將詳細(xì)說(shuō)明本發(fā)明所采用的訪存指令序列設(shè)計(jì)。假設(shè)用戶接口發(fā)送來(lái)的訪存 請(qǐng)求為對(duì)rankO的0號(hào)資源和2號(hào)資源進(jìn)行讀操作,對(duì)rankl的1號(hào)資源進(jìn)行寫操作,對(duì) rankl的3號(hào)資源進(jìn)行空操作,相應(yīng)的訪存指令隊(duì)列如圖3所示。所涉及時(shí)序參數(shù)如表1所 不。
[0034] 表1 DDR2-400 DIMM 時(shí)序參數(shù)
[0037] 模塊將用戶接口送來(lái)的每個(gè)訪存請(qǐng)求轉(zhuǎn)換為三個(gè)訪存指令:一個(gè)行訪問(wèn)指令 RAS,一個(gè)自動(dòng)延遲列訪問(wèn)指令(posted-CAS)和一個(gè)空指令。這三個(gè)指令組成一個(gè)基本的 訪存指令組合。由前文敘述可知,為了滿足行列訪問(wèn)指令間的時(shí)序要求tRm,RAS指令和緊跟 著的CAS指令間必須間隔3個(gè)時(shí)鐘周期。但是圖3可知,如果等待3個(gè)時(shí)鐘周期再發(fā)出對(duì) 〇號(hào)資源訪問(wèn)的CAS指令,則該指令將會(huì)與1號(hào)資源的RAS指令處于同一時(shí)鐘周期,造成指 令總線沖突。因此,本發(fā)明利用DDR2-SDRAM所提供的自動(dòng)延遲列訪問(wèn)機(jī)制(posted-CAS), 將附加延遲AL設(shè)置為2。這樣DRAM芯片將在收到CAS指令后延時(shí)2個(gè)周期再執(zhí)行列訪問(wèn) 操作。正如圖3所示,在0號(hào)資源的CAS指令發(fā)出2個(gè)周期后被延遲了的列訪問(wèn)指令才出 現(xiàn)在了相應(yīng)的rank上。利用這種機(jī)制,訪存的指令得以流水線式并發(fā)。
[0038] DDR2-SDRAM的行訪問(wèn)指令是將DRAM存儲(chǔ)陣列中的一行轉(zhuǎn)存到行緩存中。列訪問(wèn) 指令可以是讀指令也可以是寫指令,并緊接著8*4 = 32byte的突發(fā)數(shù)據(jù)傳輸。4步長(zhǎng)的突 發(fā)數(shù)據(jù)傳輸會(huì)占用數(shù)據(jù)總線兩個(gè)時(shí)鐘周期(每個(gè)周期上下時(shí)鐘沿各傳一次數(shù)據(jù))。在這里, 設(shè)計(jì)使用了自動(dòng)預(yù)充電機(jī)制(Auto-precharge),即在被訪問(wèn)行的列訪問(wèn)完成后立即自動(dòng)進(jìn) 行預(yù)充電操作,為下一次的行訪問(wèn)做準(zhǔn)備。如圖3中3號(hào)資源所示,如果用戶接口沒(méi)有對(duì)相 應(yīng)的存儲(chǔ)資源發(fā)起訪問(wèn),則在該資源的訪問(wèn)時(shí)間內(nèi),模塊向內(nèi)存模組發(fā)送空指令(NOP)。
[0039] 讀訪問(wèn)延時(shí)和寫訪問(wèn)延時(shí)之間相差一個(gè)周期,這使得讀寫訪問(wèn)處理的時(shí)序也不相 同。本模塊設(shè)計(jì)的指令序列在兩個(gè)連續(xù)的訪存指令組合間插入了一個(gè)NOP指令,這避免了 數(shù)據(jù)總線上的讀寫沖突。在資源劃分時(shí),相鄰的資源隸屬于不同的rank,這樣在周期性的順 序訪問(wèn)各個(gè)資源時(shí),就不會(huì)對(duì)同一個(gè)rank發(fā)起連續(xù)地兩次訪問(wèn)。這樣避免了對(duì)同一個(gè)rank I/O資源的競(jìng)爭(zhēng),滿足了讀寫訪問(wèn)之間的時(shí)序要求。另外,這樣做也滿足了 4個(gè)bank同時(shí)激 活的最大時(shí)間限制,因?yàn)榭刂破髦芷谛缘匕l(fā)出圖3所示的指令序列,在任意的13個(gè)時(shí)鐘周 期內(nèi),對(duì)同一個(gè)rank而言被激活的bank都不超過(guò)4個(gè)。
[0040] 在使用