一臺(tái)電腦的性能怎么樣,很多人會(huì)看處理器、顯卡,而除了這兩者,內(nèi)存的重要性緊跟其后。內(nèi)存也是我們平常接觸最頻繁的計(jì)算機(jī)硬件之一,它的容量的大小、頻率的高低,與電腦運(yùn)行的快慢有密切的關(guān)系。相信大部分消費(fèi)者在購(gòu)買(mǎi)內(nèi)存時(shí)看且僅看容量、頻率這兩項(xiàng)參數(shù)。但事實(shí)上,影響內(nèi)存性能的還有一項(xiàng)重要參數(shù),就是內(nèi)存時(shí)序。
那么什么是內(nèi)存時(shí)序?這是小編在本文想和大家探討的。我們暫且拋開(kāi)定義,從內(nèi)存的一些運(yùn)行原理說(shuō)起。
首先,內(nèi)存是什么??jī)?nèi)存是與CPU直接溝通的橋梁。打個(gè)比方,如果把CPU比作一個(gè)工廠,它是負(fù)責(zé)處理數(shù)據(jù)的。數(shù)據(jù)從哪里來(lái)?當(dāng)然是從硬盤(pán)中來(lái),所以硬盤(pán)相當(dāng)于一個(gè)原料產(chǎn)地。
早期的電腦是沒(méi)有內(nèi)存的,CPU直接從硬盤(pán)中讀取數(shù)據(jù),就像工廠直接從原料產(chǎn)地采集數(shù)據(jù)原料。但是隨著技術(shù)的發(fā)展,CPU工廠的處理能力極大提升,遠(yuǎn)遠(yuǎn)甩開(kāi)了硬盤(pán)的運(yùn)力,但是數(shù)據(jù)還是要從硬盤(pán)中讀取啊,需要遷就硬盤(pán)的運(yùn)力,所以CPU的發(fā)揮空間被大大限制了。
怎么辦?這個(gè)時(shí)候,人們想到了一個(gè)方法——臨時(shí)倉(cāng)庫(kù)。
你硬盤(pán)不是追不上CPU的速度嗎?那就不讓CPU直接找硬盤(pán)了,我們可以在工廠和原料產(chǎn)地之間設(shè)立一個(gè)前置的臨時(shí)倉(cāng)庫(kù),先屯一批貨在倉(cāng)庫(kù)里,這個(gè)臨時(shí)倉(cāng)庫(kù),就是內(nèi)存。
CPU需要數(shù)據(jù),直接從臨時(shí)倉(cāng)庫(kù)中讀取,不再直接讀取硬盤(pán)了。而這個(gè)臨時(shí)倉(cāng)庫(kù)的運(yùn)轉(zhuǎn)速度是硬盤(pán)的幾十倍不等,能夠滿(mǎn)足CPU處理速度的需要,所以它就會(huì)不斷將CPU需要處理的數(shù)據(jù)預(yù)存在倉(cāng)庫(kù)里,這樣,整個(gè)電腦的性能、效率都大大提高。
講到這里,相信大家對(duì)這個(gè)臨時(shí)倉(cāng)庫(kù)就很感興趣了,很想走進(jìn)倉(cāng)庫(kù),看看它自己是怎么運(yùn)轉(zhuǎn)的,和工廠之間又是怎樣工作的。
先說(shuō)說(shuō)臨時(shí)倉(cāng)和工廠之間是怎樣溝通的吧。
我們知道,在CPU里面,都有一個(gè)內(nèi)存控制器,它就是工廠中負(fù)責(zé)和臨時(shí)倉(cāng)庫(kù)直接溝通物流的窗口。
當(dāng)CPU需要處理“XXX小姐姐”的數(shù)據(jù),就大喊一聲“我要XXX小姐姐的數(shù)據(jù)!”然后這條指令在工廠內(nèi)部各個(gè)部門(mén)之間傳遞、轉(zhuǎn)化,到達(dá)內(nèi)存控制器,內(nèi)存控制器負(fù)責(zé)和倉(cāng)庫(kù)溝通“XXX小姐姐”的數(shù)據(jù)在哪里。
插一句,具體工廠內(nèi)部這個(gè)指令是怎么傳遞的,比較復(fù)雜。簡(jiǎn)單來(lái)說(shuō),指令首先會(huì)被傳遞到內(nèi)存管理單元,在這里進(jìn)行虛實(shí)轉(zhuǎn)換,然后發(fā)往總線(xiàn),總線(xiàn)再把命令傳遞給內(nèi)存控制器,內(nèi)存控制器接到命令后,對(duì)命令進(jìn)行分析,了解自己的任務(wù),然后找到臨時(shí)倉(cāng)庫(kù)。
內(nèi)存控制器和內(nèi)存之間溝通的物流線(xiàn)路,就是內(nèi)存通道(Channel)。很顯然,這樣的通道多多益善,畢竟多一條通道,就可以增加一倍的流通效率。不過(guò),一個(gè)內(nèi)存控制器只能控制一個(gè)內(nèi)存通道,就目前消費(fèi)級(jí)數(shù)據(jù)處理的需求來(lái)講,兩個(gè)通道基本也就足夠了,當(dāng)然也有三通道、四通道的,根據(jù)大家的需求和預(yù)算來(lái)吧。
順著內(nèi)存通道,就可以找到內(nèi)存,也就是臨時(shí)倉(cāng)庫(kù)了。那么這個(gè)臨時(shí)倉(cāng)庫(kù)是什么樣的呢?它是以怎樣的方式存在?
我們知道,數(shù)據(jù)是被存在內(nèi)存顆粒里的,內(nèi)存顆粒我們叫Chip。內(nèi)存顆粒是內(nèi)存的關(guān)鍵部件,就好像倉(cāng)庫(kù)里一個(gè)個(gè)庫(kù)房,只不過(guò)打造這樣的庫(kù)房需要很高的技術(shù),不是隨便一個(gè)廠商都能生產(chǎn)出來(lái)的,畢竟它裝載的貨物非常獨(dú)特,像三星、海力士等等,就是打造這樣的庫(kù)房的高手。
說(shuō)起來(lái),早期這個(gè)“臨時(shí)倉(cāng)庫(kù)”是比較簡(jiǎn)陋的,直接以庫(kù)房的形式存在,即內(nèi)存顆粒是直接被插在主板上的,后來(lái)才被焊在一塊模塊化的電路板上,這個(gè)電路板,其實(shí)就是內(nèi)存條。早期的叫SIMM,在內(nèi)存發(fā)展進(jìn)入SDRAM時(shí)代后,SIMM逐漸被DIMM取代。兩者的區(qū)別和發(fā)展過(guò)程,這里就不方便展開(kāi)啦。
這么說(shuō)吧,現(xiàn)在來(lái)講,DIMM就是內(nèi)存條的基本形態(tài),在上面打的比方中,其實(shí)就是臨時(shí)倉(cāng)庫(kù)的實(shí)體形態(tài)。內(nèi)存條上一排黑色的小芯片,就是內(nèi)存顆粒(Chip),也就是庫(kù)房。數(shù)據(jù),就是從不同的庫(kù)房里取出,然后發(fā)往CPU這個(gè)工廠的。很多時(shí)候,我們看到一個(gè)內(nèi)存條上有8個(gè)內(nèi)存顆粒,當(dāng)然也有四個(gè)或者16個(gè)的,這是巧合嗎?
不是,這其實(shí)和CPU有關(guān)。我們剛才說(shuō)到,內(nèi)存控制器是CPU中和內(nèi)存對(duì)接的窗口,而這個(gè)窗口的運(yùn)力是有限制的。目前,內(nèi)存控制器和內(nèi)存對(duì)接的接口位寬主要是64 bit,也就是一個(gè)時(shí)鐘周期里可以向內(nèi)存發(fā)送或讀取64 bit的數(shù)據(jù),而一個(gè)內(nèi)存顆粒的位寬比較小,有4 bit的,8 bit的,也有16 bit的,當(dāng)少數(shù)也會(huì)有32 bit的,所以,實(shí)際應(yīng)用時(shí)需要把多個(gè)內(nèi)存顆粒并聯(lián)起來(lái),成為一個(gè)64 bit的集合,從而來(lái)滿(mǎn)足CPU的運(yùn)力要求。
而這樣的一個(gè)集合,叫做Rank。目前絕大多數(shù)的內(nèi)存條都有1個(gè)或者2個(gè)Rank。通常同種內(nèi)存顆粒下,Rank數(shù)越多,可做的內(nèi)存容量就越大。例如通常我們?cè)趦?nèi)存條上會(huì)看到1R×8或者2R×8的參數(shù),其中R就代表Rank,8代表內(nèi)存顆粒的位寬為8bit。1R×8代表這個(gè)DIMM上有1×(64÷8)=8個(gè)內(nèi)存顆粒,2R×8代表這個(gè)DIMM上有2×(64÷8)=16個(gè)內(nèi)存顆粒。注意,CPU一次只能對(duì)一個(gè)Rank進(jìn)行訪問(wèn)和操作。
OK,我們想象一下,在這個(gè)內(nèi)存這個(gè)臨時(shí)倉(cāng)庫(kù)中,有一排(1個(gè)Rank)的庫(kù)房(內(nèi)存顆粒),它們負(fù)責(zé)與不遠(yuǎn)處的工廠(CPU)溝通、運(yùn)輸原材料(數(shù)據(jù))。接下來(lái),就該研究一下工廠到底是怎樣和這些庫(kù)房溝通的了,工廠想要哪些數(shù)據(jù)?這些數(shù)據(jù)在哪里?。窟@些總該弄清楚吧。
這就涉及到一個(gè)關(guān)鍵的步驟了:尋址。
前面我們說(shuō)到當(dāng)CPU喊出“我要XXX小姐姐的數(shù)據(jù)”時(shí),其實(shí)發(fā)出的本質(zhì)上是一個(gè)地址指令,根據(jù)這條地址在內(nèi)存中可以找到對(duì)應(yīng)的數(shù)據(jù)。再看內(nèi)存這里,剛才我們已經(jīng)講到了庫(kù)房,也就是內(nèi)存顆粒了,數(shù)據(jù)就儲(chǔ)藏在里面。干過(guò)倉(cāng)儲(chǔ)工作的人都知道,庫(kù)房里的貨物不是隨便擺放的,需要遵循一定的排列體系。內(nèi)存顆粒也是一樣,所以我們接下來(lái)要看一下里面數(shù)據(jù)存取的邏輯結(jié)構(gòu),看看這個(gè)“庫(kù)房”里的“貨物”是怎樣擺放的。
前面我們講到的最小單元是Chip,也就是庫(kù)房,現(xiàn)在我們走進(jìn)這個(gè)庫(kù)房里,你會(huì)看到庫(kù)房里排列著一排一排的貨架,而每一個(gè)貨架中,有一個(gè)一個(gè)整齊劃一的小方格抽屜組成的陣列,而貨物,就分別放在這些小方格抽屜里。
初中我們就學(xué)過(guò)坐標(biāo)系,OK,如果我們將這些小方格抽屜組成的陣列按照橫軸和縱軸進(jìn)行編號(hào),那么每一個(gè)方格抽屜就有了自己的坐標(biāo),這樣,拿貨的時(shí)候就可以精確定位到每一個(gè)方格抽屜了。
這就是內(nèi)存顆粒內(nèi)部存取數(shù)據(jù)的邏輯。當(dāng)然,你可能會(huì)問(wèn),為什么內(nèi)存顆粒內(nèi)部存取數(shù)據(jù)的邏輯要是這樣的呢?這個(gè)解釋起來(lái)相當(dāng)復(fù)雜,簡(jiǎn)單來(lái)回答,主要是從降低成本的角度來(lái)考慮的,DRAM設(shè)計(jì)的目標(biāo)之一就是降低晶體管使用的成本。
在內(nèi)存顆粒內(nèi)部,晶體管充放電時(shí),電壓和電荷需要管理,這個(gè)管理單元叫做Sense Amplifier(傳感放大器),這種傳感放大器本身由更多的晶體管組成,成本較高,所以在設(shè)計(jì)的時(shí)候,需要盡可能減少傳感放大器,所以一個(gè)晶體管對(duì)應(yīng)一個(gè)傳感放大器就別想了,太高成本??茖W(xué)家發(fā)現(xiàn),當(dāng)晶體管形成方格陣列時(shí),就可以在不影響穩(wěn)定性的前提下最大程度減少傳感放大器的數(shù)量,所以,我們就能看到內(nèi)存顆粒內(nèi)部為由最小存儲(chǔ)單元組成的存儲(chǔ)陣列。
在內(nèi)存中,這樣的一個(gè)存儲(chǔ)整列,我們把它稱(chēng)作一個(gè)邏輯Bank(L-Bank)或者直接叫做Bank,這一個(gè)Bank也就是我們前面說(shuō)的貨架。一個(gè)內(nèi)存顆粒中,由多個(gè)Bank組成,具體有多少個(gè)Bank,這并非固定的,而是隨著內(nèi)存技術(shù)的發(fā)展而變化的。
再來(lái)看單一的Bank,其中我們剛才所說(shuō)的最小存儲(chǔ)單元,也就是一個(gè)方格抽屜,被稱(chēng)作“Cell”,它能存儲(chǔ)的數(shù)據(jù)量,其實(shí)也就是內(nèi)存顆粒的位寬。精確定位到這一個(gè)方格,很容易,我們只需要知道它在哪一個(gè)Bank的第幾行(Row)第幾列(Column)。
這就是尋址的過(guò)程。
有了這個(gè)做基礎(chǔ),接下來(lái),我們終于要講到內(nèi)存時(shí)序了。
以小編手上的這條內(nèi)存為例,在它的標(biāo)簽上,有這樣一組參數(shù):CL 16-18-18-38。這一串?dāng)?shù)字,其實(shí)就是內(nèi)存時(shí)序(不同的內(nèi)存有不同的內(nèi)存時(shí)序)。而這四個(gè)數(shù)據(jù),對(duì)應(yīng)四個(gè)性能參數(shù),他們分別是CL、TRCD、TRP和TRAS。對(duì)于這四個(gè)參數(shù),我們未必需要了解它們對(duì)應(yīng)的學(xué)名,但是需要知道他們分別表達(dá)什么意思。
首先是CL,它的意思是發(fā)送一個(gè)列地址到內(nèi)存與數(shù)據(jù)開(kāi)始響應(yīng)之間時(shí)延。這是從已經(jīng)打開(kāi)正確行的DRAM讀取第一比特內(nèi)存所需的周期數(shù)。也就是說(shuō),當(dāng)我們要找到一個(gè)數(shù)據(jù)時(shí),確定在哪個(gè)Bank后,然后確定在哪一行,再確定在哪一列。
用之前的例子來(lái)說(shuō)明,就是CPU工廠發(fā)出指令,包含行地址和列地址等信息,假設(shè)是在第q個(gè)貨架的第n行第m列。臨時(shí)倉(cāng)庫(kù)接到信息后,先派工作人員找到對(duì)應(yīng)庫(kù)房的第q個(gè)貨架旁,找到這個(gè)數(shù)據(jù)(貨物)所在的第n行,然后再看貨物所在的第m列。注意,從你開(kāi)始找第m列的那一刻開(kāi)始,到這個(gè)貨物被找到,并被運(yùn)輸出倉(cāng)庫(kù),這個(gè)過(guò)程需要的時(shí)間,就是CL時(shí)延。顯然,我們希望這個(gè)數(shù)字越小越好。
第二個(gè)數(shù)字TRCD,意思打開(kāi)一行內(nèi)存并訪問(wèn)其中的列所需的最小時(shí)延。這個(gè)很好理解。上面說(shuō)的CL時(shí)延,是從你開(kāi)始找第m列開(kāi)始的,但是在這之前,你確定了貨物所在的第n行,然后開(kāi)始找其中的第m列,這兩個(gè)行為之間,也是需要間隔的,這個(gè)間隔的時(shí)間,就是TRCD時(shí)延。
TRP是第三個(gè)數(shù)字,意思是發(fā)出預(yù)充電命令與打開(kāi)下一行之間所需的最小時(shí)鐘周期數(shù)。我們接著用上面的例子來(lái)說(shuō)明。CPU工廠發(fā)出指令,不會(huì)一次只要一個(gè)貨物(數(shù)據(jù)),前面我們說(shuō)過(guò),是64bit的數(shù)據(jù),所以工作人員在找到第一個(gè)貨物的時(shí)候,還要接著找下一個(gè)貨物。當(dāng)然,找的方法和上一個(gè)一樣,還是先從行開(kāi)始定位。
但是,工作人員在找到上一個(gè)貨物和開(kāi)始找下一個(gè)貨物之間,總是需要先休息一會(huì)。這個(gè)休息的時(shí)間在內(nèi)存里叫做預(yù)充電。TRP時(shí)延就是從發(fā)出預(yù)充電指令,到開(kāi)始找下一個(gè)貨物的第n行,這個(gè)過(guò)程需要的時(shí)間。
最后一個(gè)數(shù)字是TRAS,它的解釋是行活動(dòng)命令與發(fā)出預(yù)充電命令之間所需的最小時(shí)延。我們?nèi)匀挥蒙厦娴倪@個(gè)例子通俗去理解。其實(shí)這個(gè)數(shù)字,表達(dá)的就是一個(gè)總時(shí)間。是什么總時(shí)間呢?就是當(dāng)工作人員找到第q個(gè)貨架第n行開(kāi)始,到系統(tǒng)發(fā)出預(yù)充電,即工作人員開(kāi)始休息這個(gè)過(guò)程的總時(shí)間,不嚴(yán)謹(jǐn)?shù)卣f(shuō),它就是CL+TRCD的時(shí)間之和,當(dāng)然,在實(shí)際內(nèi)存模塊中,數(shù)字上并不是絕對(duì)的。
當(dāng)對(duì)每個(gè)數(shù)字進(jìn)行解釋分析之后,相信大家也就了解內(nèi)存時(shí)序這個(gè)參數(shù)所代表的含義了??陀^上講,我們希望內(nèi)存時(shí)序的這一串?dāng)?shù)字都是越小越快,數(shù)字越小,代表時(shí)延越小,時(shí)延越小,說(shuō)明內(nèi)存運(yùn)行的速度越快。
通常,內(nèi)存時(shí)序中的第一個(gè)數(shù)字,也就是CL的參數(shù)是最重要的,很多廠商甚至也會(huì)在內(nèi)存產(chǎn)品標(biāo)簽中單獨(dú)標(biāo)注CL的值,因?yàn)檫@個(gè)數(shù)字告訴我們要等待多少個(gè)時(shí)鐘周期后才能拿到數(shù)據(jù)。
購(gòu)買(mǎi)小建議:
介紹完了內(nèi)存時(shí)序,相信大家也對(duì)內(nèi)存內(nèi)部的工作原理有了一個(gè)大概的了解。不過(guò)這里要說(shuō)的是,內(nèi)存時(shí)序并不是決定內(nèi)存性能最關(guān)鍵的數(shù)據(jù),這只是影響內(nèi)存性能的重要因素之一。我們不能說(shuō)內(nèi)存時(shí)序更低,內(nèi)存的性能就一定強(qiáng),或者內(nèi)存時(shí)序高,內(nèi)存的性能就一定弱,因?yàn)槲覀儾荒軖侀_(kāi)內(nèi)存的標(biāo)準(zhǔn)和頻率來(lái)孤立地看內(nèi)存時(shí)序。
舉個(gè)例子,如果一塊DDR3的實(shí)際頻率是800MHz。那么它的周期時(shí)間就是1/800MHz=1/(800×10^6Hz)=0.00125μs/周期=1.25ns/周期,我們假定CL都是10,那么這塊內(nèi)存的實(shí)際延遲就是12.5ns。
而我們?cè)僬乙粔K實(shí)際頻率更高的DDR3內(nèi)存,為1600MHz,按照剛才的算法,周期時(shí)間就是0.625ns/周期,那么實(shí)際延遲就是6.25ns。顯然,這個(gè)延遲是要比CL同為10的上一款內(nèi)存更短,即便我們假設(shè)這款內(nèi)存的CL是12,那么它的延遲也只有7.5ns。
所以,內(nèi)存時(shí)序和頻率等參數(shù)都不是孤立來(lái)考察的,如果你對(duì)內(nèi)存有非常嚴(yán)苛的要求,或者用于發(fā)燒級(jí)的場(chǎng)景,那么在看了它的標(biāo)準(zhǔn)、頻率后,也需要考察其內(nèi)存時(shí)序,而如果你只是普通用戶(hù),那么通常優(yōu)先考察頻率是沒(méi)問(wèn)題的,因?yàn)樗鼘?duì)內(nèi)存性能的影響更大。當(dāng)然,通常情況下,高頻率、低內(nèi)存時(shí)序的內(nèi)存,性能自然也是更好的。
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。