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