學習啦 > 學習電腦 > 電腦硬件知識 > 內(nèi)存知識 >

內(nèi)存基礎知識干貨

時間: 懷健20 分享

內(nèi)存相信大家都聽說過,電腦速度慢了也許身邊的高手會建議我們升級更大容量的內(nèi)存。那么電腦內(nèi)存究竟是干什么用的呢?下面就讓小編帶你去看看內(nèi)存基礎知識大全,希望能幫助到大家!

你不知道的內(nèi)存知識

一、CPU與內(nèi)存

先鋪墊幾個概念,以免后面混亂:

Socket或Processor: 指一個物理CPU芯片,盒裝還是散裝的。上面有很多針腳,直接安裝在主板上。

Core : 指在Processor里封裝一個CPU核心,每個Core都是完全獨立的計算單元,我們平時說的4核心CPU,指的就是Processor里面封裝了4個Core。

HT超線程: 目前Intel與AMD的Processor大多支持在一個Core里并行執(zhí)行兩個線程,此時從操作系統(tǒng)看就相當于兩個邏輯CPU(Logical Processor)。大多數(shù)情況下,我們程序里提到的CPU概念就是指的這個Logical Processor。

咱們先來看幾個問題:

1、CPU可以直接操作內(nèi)存嗎?

可能一大部分老鐵肯定會說:肯定的啊,不能操作內(nèi)存怎么讀取數(shù)據(jù)呢。

其實如果我們用這聰明的大腦想一想,咱們的臺式主機大家肯定都玩過。上面CPU和內(nèi)存條是兩個完全獨立的硬件啊,而且CPU也沒有任何直接插槽用于掛載內(nèi)存條的。

也就是說,CPU和內(nèi)存條是物理隔離的,CPU并不能直接的訪問內(nèi)存條,而是需要借助主板上的其他硬件間接的來實現(xiàn)訪問。

2、CPU的運算速度和內(nèi)存條的訪問速度差距有多大?

呵呵呵,這么說吧,就是一個鴻溝啊,CPU的運算速度與內(nèi)存訪問速度之間的差距是100倍。

而由于CPU與內(nèi)存之間的速度差存在N個數(shù)量級的巨大鴻溝,于是CPU最親密的小伙伴Cache 閃亮登場了。與DRAM 家族的內(nèi)存(Memory)不同,Cache來自SRAM家族。

而DRAM與SRAM的最簡單區(qū)別就是后者特別快,容量特別小,電路結(jié)構非常復雜,造價特別高。

而Cache與主內(nèi)存之間的巨大性能差距主要還是工作原理與結(jié)構不同:

DRAM存儲一位數(shù)據(jù)只需要一個電容加一個晶體管,SRAM則需要6個晶體管。

由于DRAM的數(shù)據(jù)其實是被保存在電容里的,所以每次讀寫過程中的充放電環(huán)節(jié)也導致了DRAM讀寫數(shù)據(jù)有一個延時的問題,這個延時通常為十幾到幾十ns。

內(nèi)存可以被看作一個二維數(shù)組,每個存儲單元都有其行地址和列地址。

由于SRAM的容量很小,所以存儲單元的地址(行與列)比較短,可以被一次性傳輸?shù)絊RAM中。DRAM則需要分別傳送行與列的地址。

SRAM的頻率基本與CPU的頻率保持一致,而DRAM的頻率直到DDR4以后才開始接近CPU的頻率。

3、Cache 是怎么使用的?

其實Cache 是被集成到CPU內(nèi)部的一個存儲單元(平時也被我們稱為高速緩存),由于其造價昂貴,并且存儲容量遠遠不能滿足CPU大量、高速存取的需求。

所以出于對成本的控制,在現(xiàn)實中往往采用金字塔形的多級Cache體系來實現(xiàn)最佳緩存效果。

于是出現(xiàn)了,一級Cache(L1 Cache)、二級Cache(L2 Cache)及三級Cache(L3 Cache)。每一級都犧牲了部分性能指標來換取更大的容量,目的也是存儲更多的熱點數(shù)據(jù)。

以Intel家族Intel SandyBridge架構的CPU為例:

L1 Cache容量為64KB,訪問速度為1ns左右

L2Cache容量擴大4倍,達到256KB,訪問速度則降低到3ns左右

L3 Cache的容量則擴大512倍,達到32MB,訪問速度也下降到12ns左右(也比訪問主存的105ns(40ns+65ns)快一個數(shù)量級)

L3 Cache是被一個Socket上的所有CPU Core共享的,其實最早的L3 Cache被應用在AMD發(fā)布的K6-III處理器上,當時的L3 Cache受限于制造工藝,并沒有被集成到CPU內(nèi)部,而是被集成在主板上,如圖:

從上圖我們也能看出來,CPU如果要訪問內(nèi)存中的數(shù)據(jù),則需要經(jīng)過L1、L2、L3三道關卡,就是這三個Cache中都沒有需要的數(shù)據(jù),才會從主內(nèi)存中直接進行讀取。

最后我們來看下Intel Sandy Bridge CPU的架構圖:

二、多核CPU與內(nèi)存共享的問題

問題: Cache一致性問題

多核CPU共享內(nèi)存的問題也被稱為Cache一致性問題。

其實就是多個CPU核心看到的Cache數(shù)據(jù)應該是一致的,在某個數(shù)據(jù)被某個CPU寫入自己的Cache(L1 Cache)以后,其他CPU都應該能看到相同的Cache數(shù)據(jù)。

如果在自己的Cache中有舊數(shù)據(jù),則拋棄舊數(shù)據(jù)。

考慮到每個CPU都有自己內(nèi)部獨占的Cache,所以這個問題與分布式Cache保持同步的問題是同一類問題

目前業(yè)界公認的解決一致性問題的最佳方案就是Intel 的MESI協(xié)議了,大多數(shù)SMP架構都采用了這一方案。

解決方案:MESI

不知道大家還記得Cache Line 嗎,就是我們常說的高速緩存中緩存條目里面的那個緩存行。

其實仔細想想,在進行I/O操作從來不以字節(jié)為單位,而是以塊為單位,有兩個原因:

I/O 操作比較慢,所以讀一個字節(jié)與讀連續(xù)N個字節(jié)的花費時間基本相同

數(shù)據(jù)訪問一般都具有空間連續(xù)的特征

所以CPU針對Memory的讀寫也采用了類似于I/O塊的方式

實際上,CPU Cache(高速緩存)里最小的存儲單元就是Cache line(緩存行),Intel CPU 的一個Cache Line存儲64個字節(jié)。

每一級Cache都被劃分為很多組Cache Line,典型的情況就是4條Cache Line為一組。

當Cache從Memory中加載數(shù)據(jù)時,一次加載一條Cache Line的數(shù)據(jù)

如圖我們可以看到,每個Cache Line 頭部都有兩個Bit來標識自身狀態(tài),總共四種:

M(Modified):修改狀態(tài),在其他CPU上沒有數(shù)據(jù)的副本,并且在本CPU上被修改過,與存儲器中的數(shù)據(jù)不一致,最終必然會引發(fā)系統(tǒng)總線的寫指令,將Cache Line中的數(shù)據(jù)寫回Memory中。

E(E__clusive):獨占狀態(tài),表示當前Cache Line中的數(shù)據(jù)與Memory中的數(shù)據(jù)一致,此外,在其他CPU上沒有數(shù)據(jù)的副本。

S(Shared):共享狀態(tài),表示Cache Line中的數(shù)據(jù)與Memory中的數(shù)據(jù)一致,而且當前CPU至少在其他某個CPU中有副本。

I(Invalid):無效狀態(tài),在當前Cache Line中沒有有效數(shù)據(jù)或者該Cache Line數(shù)據(jù)已經(jīng)失效,不能再用;當Cache要加載新數(shù)據(jù)時,優(yōu)先選擇此狀態(tài)的Cache Line,此外,Cache Line的初始狀態(tài)也是I狀態(tài)

在對Cache(高速緩存)的讀寫操作引發(fā)了Cache Line(緩存行)的狀態(tài)變化,因而可以將其理解為一種狀態(tài)機模型。

但MESI的復雜和獨特之處在于狀態(tài)有兩種視角:

一種是當前讀寫操作(Local Read/Write)所在CPU看到的自身的Cache Line狀態(tài)及其他CPU上對應的Cache Line狀態(tài)

另一種是一個CPU上的Cache Line狀態(tài)的變遷會導致其他CPU上對應的Cache Line狀態(tài)變遷。

如下所示為MESI協(xié)議的狀態(tài)圖:

具體MESI的實現(xiàn)過程可以看我另一篇文章: 看懂這篇,才能說了解并發(fā)底層技術

深入理解不一致性內(nèi)存

MESI協(xié)議解決了多核CPU下的Cache一致性問題,因而成為SMP架構的唯一選擇,而SMP架構近幾年迅速在PC領域(__86)發(fā)展。

SMP架構是一種平行的架構,所有CPU Core都被連接到一個內(nèi)存總線上,它們平等訪問內(nèi)存,同時整個內(nèi)存是統(tǒng)一結(jié)構、統(tǒng)一尋址的。

如下所示給出了SMP架構的示意圖:

隨著CPU核心數(shù)量的不斷增加,SMP架構也暴露出天生的短板,其根本瓶頸是共享內(nèi)存總線的帶寬無法滿足CPU數(shù)量的增加,同時,在一條“馬路”上通行的“車”多了,難免會陷入“擁堵模式”。

不知道你是否聽說過總線風暴,可以看下:總線風暴

在這種情況下,分布式解決方案應運而生,系統(tǒng)的內(nèi)存與CPU進行分割并捆綁在一起,形成多個獨立的子系統(tǒng),這些子系統(tǒng)之間高速互聯(lián),這就是NUMA(None Uniform Memory Architecture)架構,如下圖所示。

可以看出,NUMA架構中的內(nèi)存被分割為獨立的幾塊,被不同CPU私有化了。

因此在CPU訪問自家內(nèi)存的時候會非??欤谠L問其他CPU控制的內(nèi)存數(shù)據(jù)時,則需要通過內(nèi)部互聯(lián)通道訪問。

NUMA架構的優(yōu)點就是其伸縮性,就算擴展到幾百個CPU也不會導致性嚴重的下降。

NUMA技術的特點

在NUMA架構中引入了一個重要的新名詞——Node

一個Node由一個或者多個Socket Socket組成,即物理上的一個或多個CPU芯片組成一個邏輯上的Node

我們來看一個Dell PowerEdge系列服務器的NUMA的架構圖:

從上圖可以看出其特點:

4個處理器形成4個獨立的NUMA Node由于每個Node都為8 Core,支持雙線程

每個Node里的Logic CPU數(shù)量都為16個,占每個Node分配系統(tǒng)總內(nèi)存的1/4

每個Node之間都通過Intel QPI(QuickPath Interconnect)技術形成了點到點的全互聯(lián)處理器系統(tǒng)

NUMA這種基于點到點的全互聯(lián)處理器系統(tǒng)與傳統(tǒng)的基于共享總線的處理器系統(tǒng)的SMP還是有巨大差異的。

在這種情況下無法通過嗅探總線的方式來實現(xiàn)Cache一致性,因此為了實現(xiàn)NUMA架構下的Cache一致性,Intel引入了MESI協(xié)議的一個擴展協(xié)議——MESIF

針對NUMA的支持

NUMA架構打破了傳統(tǒng)的“全局內(nèi)存”概念,目前還沒有任意一種編程語言從內(nèi)存模型上支持它,當前也很難開發(fā)適應NUMA的軟件。

Java在支持NUMA的系統(tǒng)里,可以開啟基于NUMA的內(nèi)存分配方案,使得當前線程所需的內(nèi)存從對應的Node上分配,從而大大加快對象的創(chuàng)建過程

在大數(shù)據(jù)領域,NUMA系統(tǒng)正發(fā)揮著越來越強大的作用,SAP的高端大數(shù)據(jù)系統(tǒng)HANA被SGI在其UV NUMA Systems上實現(xiàn)了良好的水平擴展

在云計算與虛擬化方面,OpenStack與VMware已經(jīng)支持基于NUMA技術的虛機分配能力,使得不同的虛機運行在不同的Core上,同時虛機的內(nèi)存不會跨越多個NUMA Node

內(nèi)存知識掃盲

帶你先認識一下內(nèi)存

內(nèi)存,也叫內(nèi)存儲器,是一種快速存儲設備,在計算機角色扮演里占據(jù)著核心的位置。現(xiàn)在的內(nèi)存條是一塊長方形薄片狀的電路板,上面焊接有很多黑色“方塊”的存儲芯片,讓人在主板上可以一眼發(fā)現(xiàn)它。

▲內(nèi)存條下方都會帶有一個缺口用于辨別安裝方向,防止用戶誤安裝

▲內(nèi)存條局部細節(jié)

可在很久以前,內(nèi)存是作為一塊IC電子元件焊接在主板上的,這種“焊接”技術會給后期的維護、維修帶去極大的問題和麻煩。因此,機智的人類發(fā)明了更為人性化的“插拔式”內(nèi)存條,然后再在主板上設計一個安裝插槽,一切就妥妥得了。

▲筆記本內(nèi)存插槽

▲臺式機內(nèi)存插槽(紅色和黃色的長條形區(qū)域)

內(nèi)存有哪幾種?

如果不算離我們生活比較遠的服務器內(nèi)存,內(nèi)存有兩種規(guī)格:筆記本內(nèi)存和臺式內(nèi)存。從本質(zhì)功能來講,兩者大同小異,只是外觀尺寸的差異。

▲上方為筆記本內(nèi)存,下方為臺式機內(nèi)存

▲已經(jīng)安裝有內(nèi)存的臺式機主板

內(nèi)存條的發(fā)展

內(nèi)存條從最早發(fā)展到現(xiàn)在,大致經(jīng)歷了了SIMM、EDO DRAM、SDRAM、DDR這幾個階段的技術革新。其中最為大家熟悉的DDR作為一種在性能與成本之間折中的解決方案,從出生就占據(jù)著市場,并在頻率上一直“高歌猛進”,由此DDR2、DDR3、DDR4、DDR5應勢而生...

DDR2相比于第一代DDR,優(yōu)勢在于頻率和功耗有一定的提升,在實際的應用方面,因為DDR2自身的不足,所以在歷史的舞臺上它也只是一個“過客”。

它的下一代產(chǎn)品DDR3橫空出世,又再次成為了人們關注的對象。DDR3集成了高密度的閃存顆粒,這對于降低高容量內(nèi)存成本及減少生產(chǎn)支出都是有極大幫助的,可謂是推廣大容量內(nèi)存的源動力。目前該內(nèi)存仍然是市場消費的主力。

相比而言,DDR4是最新的內(nèi)存型號,由于處于普及初期因此市場占有率不高,但是它確實是新配機用戶的首選。它和DDR3基本的技術相差不大,但DDR4的重心是在提高頻率和帶寬上,因此未來的市場應該是屬于DDR4的。

內(nèi)存規(guī)格不斷升級,運行頻率越來越高,如DDR3 1600、DDR3 2400最后的1600和2400數(shù)字就代表了內(nèi)存的運行頻率是1600MHz或2400MHz,頻率越高,內(nèi)存單位時間內(nèi)可以處理的數(shù)據(jù)越多,因此執(zhí)行效率更高,電腦整體速度更快。如果你是一個發(fā)燒友,DDR4是你不二的選擇。當然也需要相應的主板來匹配,因為每一代內(nèi)存在接口或電壓規(guī)格上會有所不同,不同代的內(nèi)存之間不能通用。

內(nèi)存條為什么會影響電腦性能

其實很簡單!我們運行一款軟件后,CPU或顯卡要對數(shù)據(jù)進行處理,而且這個數(shù)據(jù)傳輸?shù)倪^程是動態(tài)的,也就是說CPU要不斷地從硬盤讀或?qū)憯?shù)據(jù)。如我們編輯文檔時的存儲或翻頁等操作,但是硬盤的速度非常慢,而CPU的處理速度極為快,硬盤非常慢的讀寫速度無法滿足CPU極快的處理速度,因此經(jīng)常會出現(xiàn)CPU等待硬盤數(shù)據(jù)傳輸過來的情況,嚴重影響電腦性能的發(fā)揮甚至說是完全無法使用。這時候就需要“中轉(zhuǎn)站”來存放臨時數(shù)據(jù),CPU提前將要處理器的數(shù)據(jù)存放到內(nèi)存中,需要使用時直接從里面尋找,這樣就可以達到高效執(zhí)行的目的。

▲鼠標右鍵打開我的電腦即可看到系統(tǒng)已經(jīng)安裝的內(nèi)存容量(黃色字樣)

因此內(nèi)存越大,CPU可以提前緩存的文件或數(shù)據(jù)更多,電腦運行的速度越快,這也是為什么內(nèi)存容量小的電腦,經(jīng)常會出現(xiàn)硬盤燈常亮、電腦卡頓的現(xiàn)象,原因就在于內(nèi)存容量不夠用,CPU將硬盤當作數(shù)據(jù)“緩存空間”,這就導致速度跟不上趟的硬盤拖累了整臺電腦。還有一點值得注意的是存儲在內(nèi)存里的數(shù)據(jù)都是暫時的,關機或者斷電后就會消失。

從市場反饋的結(jié)果來看,價格在200元左右的8GB、DDR3 1600MHz的臺式機內(nèi)存是消費的“香餑餑”。筆者看來,這個標準是完全可以滿足大部分消費者日常使用中各種臨時數(shù)據(jù)存儲和傳遞的需求了。當然,現(xiàn)在內(nèi)存價格便宜了,配備16GB也不是什么奢侈的事情了。

內(nèi)存條常識

1、內(nèi)存條介紹

內(nèi)存條是一種比固態(tài)硬盤更先進的存儲技術,它的讀寫速度比硬盤快上十倍有余,以現(xiàn)在主流的DDR4代內(nèi)存條為例,它的讀寫速度可以輕松達到7000MB/s以上,而傳統(tǒng)的機械硬盤最高也就不超過300MB/s,即使是最厲害的固態(tài)硬盤,也就3000MB/s的樣子。想比內(nèi)存也是慢了許多。

由于CPU處理數(shù)據(jù)的速度是超級快的,而硬盤的讀寫速度又很慢,他們在進行數(shù)據(jù)交換的時候就產(chǎn)生了一個速度上的矛盾,這個時候讀寫速度超快的內(nèi)存條就可以幫上大忙了。當我們開機或打開軟件的時候,硬盤就會把這些軟件需要用到的數(shù)據(jù)傳輸?shù)絻?nèi)存條里保存起來。(這就是開機速度和打開軟件或打開游戲的速度,傳統(tǒng)的機械硬盤傳輸這個數(shù)據(jù)到內(nèi)存條的速度很慢,所以開機和打開軟件的速度很慢)。

當軟件打開后,數(shù)據(jù)就是存在內(nèi)存條中了,這個時候讀寫速度超快的內(nèi)存條就可以與CPU以超高的速度進行數(shù)據(jù)傳輸了,這就是為什么你打開軟件和游戲需要等很久,但是在軟件使用和游戲中卻并沒有那么明顯的卡頓的原因了。當我們關閉軟件或者清理后臺進程時,內(nèi)存條里的數(shù)據(jù)就會被刪除掉。所以內(nèi)存中的數(shù)據(jù)是不能長時間存儲的。

注意:筆記本內(nèi)存和臺式機內(nèi)存是不一樣的

2、內(nèi)存條的容量

內(nèi)存條的容量自然就是能存儲的數(shù)據(jù)多少了,我們每打開一個軟件,這些軟件的數(shù)據(jù)都會被保存到內(nèi)存中,如果內(nèi)存條被塞滿,我們繼續(xù)打開其他軟件的時候,CPU就只能從硬盤調(diào)取數(shù)據(jù)了(速度慢),這樣電腦的速度就會很慢并且伴有卡頓現(xiàn)象。

常見的內(nèi)存條容量有 2G、4G、8G、16G

3、內(nèi)存條的顆粒

顆粒就是內(nèi)存條的存儲數(shù)據(jù)的東西,現(xiàn)在主流的顆粒生產(chǎn)商就是;三星、海力士、鎂光這三家。由于顆粒在生產(chǎn)時候會有質(zhì)量參差不齊的情況,所以一些成色極品的顆粒會被挑選出來做成高端超頻內(nèi)存條,而一些成色普通但合格的顆粒會被拿去做成普通內(nèi)存條。所以在購買內(nèi)存條的時候要注意!

4、內(nèi)存條的頻率

常見的有1333MHz、1600MHz、2133MHz、2400MHz、2666MHz、3200MHz,內(nèi)存條的頻率,它可以看成是內(nèi)存條數(shù)據(jù)的傳輸速度,是內(nèi)存條最重要的參數(shù)。各位朋友在購買的時候一定要根據(jù)自己的情況實際選擇哦,這里提醒大家一下,如果兩條內(nèi)存頻率不一致的話,會自動向下兼容的哦。購買時最好先了解自己電腦適合的內(nèi)存條頻率,不然收到貨不兼容就很不爽了

5、單通道與雙通道

打個比方,比如說單通道就是一條雙向車道,雙通道就是兩條雙向車道(帶寬增加),所以說雙通道比較穩(wěn)定一點。

雙通道是能帶來一些性能的提升的,特別是使用CPU核心顯卡的用戶,由于CPU要同時負責程序數(shù)據(jù)和顯示數(shù)據(jù)的處理,需要的數(shù)據(jù)流量更大,所以雙通道帶來的雙倍帶寬才能滿足這么大的數(shù)據(jù)流量的需求。

現(xiàn)在電腦內(nèi)存8G已經(jīng)很常見了,基本上都是雙通道組的,也可以根據(jù)個人習慣來配

8G可以選擇2__4G 16G可以選擇2__8G 32G選擇2__16G

根據(jù)個人需求選擇合適容量的內(nèi)存條。對于普通用戶來說8GB是夠用的,如果是專業(yè)作圖設計或者玩吃雞和大型單機游戲,可以選擇2根8GB組雙通道。如果自己也不知道自己需要多少容量的,可以先買一根8GB的使用,發(fā)現(xiàn)不夠可以再買一根8GB組成雙通道。


內(nèi)存基礎知識干貨相關文章:

內(nèi)存條的基礎知識大全

電腦內(nèi)存基礎知識大全有哪些

內(nèi)存硬核選購知識大全

關于路由器內(nèi)存的基礎知識的介紹

顯示器基礎知識干貨有哪些

西方主要國家知識點干貨匯總

高考語文知識點干貨

關于面粉知識實用干貨

consider的用法總結(jié)干貨

737028