從2001年DDR內(nèi)存面世以來發(fā)展到今天,已經(jīng)走過了DDR、DDR2、DDR3、DDR4四個(gè)大的規(guī)格時(shí)代了(DDR5現(xiàn)在也出來了)。內(nèi)存的工作頻率也從DDR時(shí)代的266MHz進(jìn)化到了今天的3200MHz。這個(gè)頻率在操作系統(tǒng)里叫Speed、在內(nèi)存術(shù)語里叫等效頻率、或干脆直接簡稱頻率。這個(gè)頻率越高,每秒鐘內(nèi)存IO的吞吐量越大。但其實(shí)內(nèi)存有一個(gè)最最基本的頻率叫核心頻率,是實(shí)際內(nèi)存電路的工作時(shí)的一個(gè)振蕩頻率。它是內(nèi)存工作的基礎(chǔ),很大程度上會(huì)影響內(nèi)存的IO延遲。我今天想給大家揭開另外一面,這個(gè)叫核心頻率的東東其實(shí)在最近的18年里,基本上就沒有什么太大的進(jìn)步。
1、內(nèi)存Speed
在Linux上可以查看到你機(jī)器上內(nèi)存的Speed。
上述命令可以看出每一個(gè)插槽上內(nèi)存物理設(shè)備的情況,由于結(jié)果太長我只抽取了其中一個(gè)內(nèi)存的信息列了出來。對于我們開發(fā)者來說,其中有兩個(gè)數(shù)據(jù)比較關(guān)鍵。
Speed: 1067 MHz:每秒能進(jìn)行內(nèi)存數(shù)據(jù)傳輸?shù)乃俣龋?/p>
Data Width: 64 bits:內(nèi)存工作一次傳輸?shù)臄?shù)據(jù)寬度
我的機(jī)器上所有的內(nèi)存條的Speed都是1067(大家別笑話,因?yàn)槲业臏y試機(jī)器是線上過保淘汰下來的機(jī)器,所以老了一點(diǎn)點(diǎn))。把Data Width和Speed相乘后得到的就是數(shù)據(jù)帶寬了。我們把歷史上各個(gè)階段的內(nèi)存的Speed和帶寬匯總了一下,如下圖。
2、內(nèi)存背后的秘密-核心頻率
通過Linux我們只看到了內(nèi)存的一個(gè)Speed,它是數(shù)據(jù)傳輸?shù)念l率。這個(gè)頻率又叫Data Speed,或等效頻率。各個(gè)商家在內(nèi)存的銷售頁面上也把這個(gè)頻率標(biāo)在特別明顯的位置,提醒消費(fèi)者他家的內(nèi)存有多快多快。但其實(shí)從內(nèi)存條的技術(shù)參數(shù)上來講,有個(gè)最為重要的頻率,是核心頻率,它是內(nèi)存電路的震蕩頻率,是內(nèi)存一切工作的基石。
我們來看一下各代內(nèi)存的更全面詳細(xì)的數(shù)據(jù)。
我匯總了從SDR時(shí)代,一直到目前主流的DDR4的內(nèi)存的頻率表對比。大家可以看到核心頻率已經(jīng)多年沒有實(shí)質(zhì)性進(jìn)步了,這是受物理材料的極限限制,內(nèi)存的核心頻率一直在133MHz~200MHz之間徘徊。我們所看到的內(nèi)存Speed是在這個(gè)核心頻率的基礎(chǔ)上,通過各種技術(shù)手段放大出來的。之所以我們感覺內(nèi)存在越來越快,就是放大技術(shù)手段在不斷進(jìn)步而已。
SDR時(shí)代:在最古老的SDR(Single Data Rate SDRAM)年代里,一個(gè)時(shí)鐘脈沖只能在脈沖上沿時(shí)傳輸數(shù)據(jù),所以也叫單倍數(shù)據(jù)傳輸率內(nèi)存。這個(gè)時(shí)期內(nèi)存的提升方法就是提升內(nèi)存電路的核心頻率。
DDR時(shí)代:但是內(nèi)存制造商們發(fā)現(xiàn)核心頻率到了200MHz再提升的話,難度就很大了。所以在電路時(shí)鐘周期內(nèi)預(yù)取2bit,輸出的時(shí)候就在上升期和下降期各傳輸一次數(shù)據(jù)。所以核心頻率不變的情況下,Speed(等效頻率)就翻倍了。
DDR2時(shí)代:同樣是在上下沿各傳一次數(shù)據(jù),但將Prefech提升為4,每個(gè)電路周期一次讀取4bit。所以DDR2的Speed(等效頻率)就達(dá)到了核心頻率的4倍。
DDR3時(shí)代:同樣也是上下沿各傳一次數(shù)據(jù),進(jìn)一步將Prefect提升為8。所以DDR3的等效頻率可以達(dá)到核心頻率的8倍。
DDR4時(shí)代:這時(shí)預(yù)取的提升已經(jīng)非常困難,所以和DDR3一樣,Prefech仍然為8。內(nèi)存制造商們又另辟蹊徑,提出了Bank Group設(shè)計(jì)。允許各個(gè)Bank Group具備獨(dú)立啟動(dòng)操作讀、寫等動(dòng)作特性。所以等效頻率可以提升到核心頻率的16倍。
內(nèi)存還有個(gè)概念叫IO頻率、也叫時(shí)鐘頻率。簡單理解為將DDR內(nèi)存的Speed頻率除以2,就是內(nèi)存的IO頻率。這個(gè)必須和CPU的外頻相匹配才能工作。例如對于DDR3來說,假如核心頻率133Mhz的內(nèi)存工作頻率下,匹配533MHz的CPU外頻,其IO頻率就是533Mhz。數(shù)據(jù)傳輸因?yàn)樯舷卵囟伎梢詡鳎允呛诵念l率的8倍,也就是1066MHz。
我曾試圖在Linux下找到能查看核心頻率和IO頻率的命令,但是沒有找到,在售的各種內(nèi)存條似乎也很少會(huì)提及它。但我們是IT從業(yè)人員,非普通用戶。因此我覺得大家有必要來了解這個(gè)原理。(事實(shí)上,這兩個(gè)頻率會(huì)影響后面討論的內(nèi)存的延遲參數(shù),而延遲參數(shù)又決定了內(nèi)存的真正性能)
匯總一句話,內(nèi)存真正的工作頻率是核心頻率,時(shí)鐘頻率和數(shù)據(jù)頻率都是在核心頻率的基礎(chǔ)上,通過技術(shù)手段放大出來的。內(nèi)存越新,放大的倍數(shù)越多。但其實(shí)這些放大手段都有一些局限性。比如你的內(nèi)存數(shù)據(jù)存儲(chǔ)并不連續(xù),這時(shí)候DDR2、DDR3的數(shù)據(jù)預(yù)取對你幫助并不大。再比如你的進(jìn)程數(shù)據(jù)都存在一個(gè)Bank Group里,你的進(jìn)程內(nèi)存IO就根本不會(huì)達(dá)到DDR4廠家宣傳的速度。
3、擴(kuò)展:內(nèi)存延遲
除了頻率以外,內(nèi)存還有幾個(gè)比較重要的參數(shù),但是同樣在Linux里沒有找到查看的命令。內(nèi)存的銷售頁面想找到這幾個(gè)參數(shù)也不是特別容易。
所有的內(nèi)存條都有CL-tRCD-tRP-tRAS四個(gè)參數(shù)。其中最重要的是CL-tRCD-tRP這三個(gè)參數(shù),只要你費(fèi)點(diǎn)勁,所有的在售內(nèi)存你都能找到這3個(gè)值。例如經(jīng)典的DDR3-1066、DDR3-1333及DDR3-1600的CL值分別為7-7-7、8-8-8及9-9-9?,F(xiàn)在京東上一條比較流行的臺式機(jī)內(nèi)存金士頓(Kingston)DDR4 2400 8G,其時(shí)序是17-17-17。
第四個(gè)參數(shù)有時(shí)候會(huì)被省略。原因有二,第一:現(xiàn)在的開發(fā)者不需要直接和內(nèi)存打交道,而操作系統(tǒng)呢又做的比較內(nèi)存友好,很少會(huì)有這個(gè)開銷真正發(fā)生。第二,這個(gè)開銷的值要比其它的值大很多,實(shí)在不太好看。商家為了內(nèi)存能多賣一些,干脆就避而不談了。
好了,問題來了。為什么內(nèi)存越進(jìn)步,延遲周期反而會(huì)變大了呢?
這就是因?yàn)檠舆t周期使用延遲時(shí)間除以內(nèi)存Speed算出來的。這其實(shí)根本就不科學(xué),最科學(xué)的辦法應(yīng)該是用延遲時(shí)間來評估。
延遲時(shí)間很大程度上是受內(nèi)存的核心頻率的制約的。而這些年核心頻率又基本上沒有進(jìn)步,所以延遲時(shí)間也不會(huì)有實(shí)質(zhì)的降低。內(nèi)存的制造商們又為了頻率數(shù)據(jù)好看,能多賣些內(nèi)存,非得采用Speed作為主周期來用。導(dǎo)致在用這個(gè)周期一衡量,貌似延遲周期就越來越大了。今天就帶大家了解到這里,后面我會(huì)用實(shí)驗(yàn)來讓你理解你的內(nèi)存的實(shí)際延時(shí)。
審核編輯:劉清
-
DDR
+關(guān)注
關(guān)注
11文章
712瀏覽量
65387 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3034瀏覽量
74130 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
594瀏覽量
27438
發(fā)布評論請先 登錄
相關(guān)推薦
評論