DDR之內(nèi)存時(shí)序
當(dāng)我們購買內(nèi)存條的時(shí)候,會(huì)看到內(nèi)存條有如下規(guī)格11-11-11-28,它代表什么意思呢?
它是一種內(nèi)存時(shí)序,指的是內(nèi)存在處理各種任務(wù)時(shí),遇到的固有延遲的一種數(shù)值描述。
簡單講,就是CPU在向內(nèi)存索要數(shù)據(jù),或者在向內(nèi)存寫入數(shù)據(jù)的時(shí)候,內(nèi)存要經(jīng)歷一系列的操作,才能把CPU想要的數(shù)據(jù)給出來或?qū)戇M(jìn)去,這一系列的操作所需要花費(fèi)的時(shí)間周期就是內(nèi)存時(shí)序。
這四個(gè)數(shù)值分別表示CL,tRCD,tRP,tRAS,單位ns。這個(gè)數(shù)值越短,表示延遲越低,內(nèi)存的性能越好。
其實(shí)時(shí)序還有很多,只不過這四個(gè)參數(shù)相對(duì)來說比較重要。
在講解之前,我們了解一下內(nèi)存是怎么存取數(shù)據(jù)的。首先要知道SDRAM(內(nèi)存顆粒),DDR就是將這些顆粒集成在一起,然后再加一個(gè)控制器。
內(nèi)存在存取數(shù)據(jù)時(shí),是以行列的方式進(jìn)行,跟excel表格類似,通過行列方式定位數(shù)據(jù),這個(gè)表格我們稱為邏輯BANK(L-BANK)。
SDRAM內(nèi)部L-BANK示意圖 8X8陣列
B:L-BANK(邏輯logic bank)地址編號(hào)
C:column列支持編號(hào)
R:row行地址編號(hào)
如果我們要找到BANK中的黃色位置,先指定L-BANK地址B1,然后指定行地址R6,再指定列地址C4,最終就能找到尋址單元。
談到BANK,我們順便了解一下RANK這個(gè)概念(經(jīng)常容易搞混,分不清楚)
DDR數(shù)據(jù)存儲(chǔ)時(shí),以64bit數(shù)據(jù)線為例,CPU每次從內(nèi)存里面讀取數(shù)據(jù)都是一次64bits,而內(nèi)存顆粒一般沒有64bit,大多為4bits,8bits,16bits。為了湊夠CPU訪問所需的64bits,假設(shè)每個(gè)顆粒是8bits,就需要8個(gè)顆粒并在一起,并在一起的8個(gè)顆粒就叫Rank。
假設(shè)內(nèi)存芯片基本上是8個(gè)L-BANK地址,也就是8個(gè)這樣的表格。
在了解數(shù)據(jù)如何存取后,下面具體看一下這四個(gè)參數(shù):
1、tRCD
內(nèi)存行地址傳輸?shù)搅械刂返难舆t時(shí)間為tRCD(RAS to CAS delay),因?yàn)樵谛屑せ蠲畎l(fā)出之后,芯片存儲(chǔ)陣列電子元件響應(yīng)需要一定的時(shí)間。
簡單說,在內(nèi)存控制器接收到行的指令后,需要等待一定的時(shí)間才能訪問這一行,這個(gè)等待時(shí)間就是tRCD。
tRCD以時(shí)鐘周期為單位,例:tRCD=2,代表延遲兩個(gè)時(shí)鐘周期。
這個(gè)參數(shù)對(duì)系統(tǒng)影響不大,因?yàn)槌绦虼鎯?chǔ)數(shù)據(jù)到內(nèi)存中是一個(gè)持續(xù)過程。同一個(gè)程序中一般都會(huì)在同一行中尋址。
2、CL
內(nèi)存先確定了行,要想找出數(shù)據(jù),還需要確定列,這時(shí)我們就能準(zhǔn)確的找到目標(biāo)數(shù)據(jù)。
內(nèi)存確定了行數(shù)之后,還需要等待一定的時(shí)間才能訪問具體列數(shù),這個(gè)等待的時(shí)間就是CL,CL就是列地址訪問的延遲時(shí)間,是時(shí)序中最重要的參數(shù)。
關(guān)于CL這里必須強(qiáng)調(diào)幾點(diǎn):
-
CL(CAS Latency,CAS潛伏期),在頻率相同的情況下,CL值越小,內(nèi)存速度越快。由于CL只在讀取時(shí)出現(xiàn),所以CL又被稱為讀取潛伏期。
-
CL的值隨著內(nèi)存頻率的增加而增大。
-
CL數(shù)值也以時(shí)鐘周期數(shù)表示,因此必須知道內(nèi)存的頻率才可以知道CL延遲的具體時(shí)間,比較才會(huì)更有意義,例:
DDR-400內(nèi)存,CL=2.5,時(shí)鐘頻率為200MHz,實(shí)際CL=12.5ns。
DDR2-800內(nèi)存,CL=5,時(shí)鐘頻率為400MHz,實(shí)際也是CL=12.5ns。
二者一樣。
-
選擇購買內(nèi)存時(shí),最好選擇同樣CL值的內(nèi)存,不同速度的內(nèi)存混插在系統(tǒng)內(nèi),會(huì)以較慢的那塊內(nèi)存來運(yùn)行,從而造成資源的浪費(fèi)。
3、tRP
tRP(RAS Precharge Time )行預(yù)充電時(shí)間。假如當(dāng)前尋址的存儲(chǔ)單元是B1、R5、C2。如果接下來的尋址命令是B1、R6、C2,由于是同一L-Bank的不同行,那么就必須要先把R5關(guān)閉,才能對(duì)R6進(jìn)行尋址。
從開始關(guān)閉現(xiàn)有的工作行,到可以打開新的工作行之間的間隔就是tRP,單位也是時(shí)鐘周期數(shù)。
4、tRAS
tRAS,表示內(nèi)存行有效至預(yù)充電的最短周期 ,可以簡單理解成內(nèi)存寫入或讀取數(shù)據(jù)的一個(gè)時(shí)間,一般接近前三個(gè)參數(shù)的總和。
調(diào)整這個(gè)參數(shù)須要結(jié)合具體狀況而定,通常咱們最好設(shè)在5-10之間。這個(gè)參數(shù)要根據(jù)實(shí)際狀況而定,并非說越大或越小就越好。
若tRAS的周期太長,會(huì)影響系統(tǒng)的性能。
若tRAS的周期太短,則可能因缺少足夠的時(shí)間而沒法完成數(shù)據(jù)傳輸,容易引起數(shù)據(jù)丟失或損壞。該值通常設(shè)定為CAS latency + tRCD + 2個(gè)時(shí)鐘周期。
最后簡單概況一下: