為增進大家對內(nèi)存的認識,本文將為大家介紹高頻率內(nèi)存的優(yōu)勢。此外,小編還將對虛擬內(nèi)存加以探討。
我們每天都在同內(nèi)存打交道,但大家對內(nèi)存真的了解嗎?上篇文章中,我們對服務器內(nèi)存以及服務器內(nèi)存技術有所介紹,為增進大家對內(nèi)存的認識,本文將為大家介紹高頻率內(nèi)存的優(yōu)勢。此外,小編還將對虛擬內(nèi)存加以探討。如果你對內(nèi)存及其相關知識具有興趣,不妨繼續(xù)往下閱讀哦。
一、高頻率內(nèi)存優(yōu)勢
由于決定內(nèi)存性能的核心因素有內(nèi)存容量、帶寬和頻率,而如果在同代內(nèi)存,相同容量條件下,內(nèi)存頻率越高,性能就越好。如果是不同代內(nèi)存,比如DDR3和DDR4內(nèi)存,如果是相同容量下,DDR4內(nèi)存性能肯定在DDR3之上,畢竟DDR4內(nèi)存頻率均在DDR3之上,加之新一代內(nèi)存還在帶寬上有升級,功耗更低等。
關于內(nèi)存和頻率的關系就介紹到這里,簡單來說,頻率是決定內(nèi)存性能的重要因素,不同代內(nèi)存往往頻率都不同,在相同容量下,內(nèi)存頻率越高,其性能往往更好。而在現(xiàn)實使用中,有適合不僅看理論,比如買的是DDR4 3000內(nèi)存,但由于主板僅支持DDR4 2400,那么DDR4 3000高頻內(nèi)存只能識別到DDR4 2400,對于這部分用戶來說,DDR4 3000由于電腦不能完全識別,顯得并不是特別合適,因此實際內(nèi)存選擇時,還需要看實際需求與價格。
二、內(nèi)存頻率是否越高越好
理論上來講,在同代相同容量內(nèi)存中,內(nèi)存頻率越高,速度就越快。也就是說,頻率是決定內(nèi)存性能的一個非常重要的因素。
其實,電腦內(nèi)存由第一代的DDR,發(fā)展到現(xiàn)在最想的DDR4,可以看到,越是最新的內(nèi)存,頻率往往更高,通過內(nèi)存頻率,我們有時候也基本可以判斷內(nèi)存是第幾代的產(chǎn)品。
第一代DDR古董內(nèi)存就不說了,下面主要從DDR3第二代內(nèi)存說起:
DDR2內(nèi)存 頻率:333MHz/400MHz/667MHz/800MHz/1066MHz 工作電壓1.8V;
DDR3內(nèi)存 頻率:1066MHz、1333MHz、1600MHz、2133 工作電壓1.5V;
DDR4內(nèi)存:頻率:2133MHz、2400MHz、3000MHz、3200 工作電壓1.2V;
可以看到,越是新一代內(nèi)存,頻率越高,并且工作電壓由于工藝的提升,電壓更低,功耗還更低。
三、虛擬內(nèi)存
內(nèi)存的一項主要任務,就是存儲進程的相關數(shù)據(jù)。我們之前已經(jīng)看到過進程空間的程序段、全局數(shù)據(jù)、棧和堆,以及這些這些存儲結(jié)構(gòu)在進程運行中所起到的關鍵作用。有趣的是,盡管進程和內(nèi)存的關系如此緊密,但進程并不能直接訪問內(nèi)存。在Linux下,進程不能直接讀寫內(nèi)存中地址為0x1位置的數(shù)據(jù)。進程中能訪問的地址,只能是虛擬內(nèi)存地址(virtual memory address)。操作系統(tǒng)會把虛擬內(nèi)存地址翻譯成真實的內(nèi)存地址。這種內(nèi)存管理方式,稱為虛擬內(nèi)存(virtual memory)。
每個進程都有自己的一套虛擬內(nèi)存地址,用來給自己的進程空間編號。進程空間的數(shù)據(jù)同樣以字節(jié)為單位,依次增加。從功能上說,虛擬內(nèi)存地址和物理內(nèi)存地址類似,都是為數(shù)據(jù)提供位置索引。進程的虛擬內(nèi)存地址相互獨立。因此,兩個進程空間可以有相同的虛擬內(nèi)存地址,如0x10001000。虛擬內(nèi)存地址和物理內(nèi)存地址又有一定的對應關系,如圖1所示。對進程某個虛擬內(nèi)存地址的操作,會被CPU翻譯成對某個具體內(nèi)存地址的操作。
圖 虛擬內(nèi)存地址和物理內(nèi)存地址的對應
應用程序來說對物理內(nèi)存地址一無所知。它只可能通過虛擬內(nèi)存地址來進行數(shù)據(jù)讀寫。程序中表達的內(nèi)存地址,也都是虛擬內(nèi)存地址。進程對虛擬內(nèi)存地址的操作,會被操作系統(tǒng)翻譯成對某個物理內(nèi)存地址的操作。由于翻譯的過程由操作系統(tǒng)全權(quán)負責,所以應用程序可以在全過程中對物理內(nèi)存地址一無所知。因此,C程序中表達的內(nèi)存地址,都是虛擬內(nèi)存地址。比如在C語言中,可以用下面指令來打印變量地址:
intv = 0;
printf(“%p”,(void*)&v);
本質(zhì)上說,虛擬內(nèi)存地址剝奪了應用程序自由訪問物理內(nèi)存地址的權(quán)利。進程對物理內(nèi)存的訪問,必須經(jīng)過操作系統(tǒng)的審查。因此,掌握著內(nèi)存對應關系的操作系統(tǒng),也掌握了應用程序訪問內(nèi)存的閘門。借助虛擬內(nèi)存地址,操作系統(tǒng)可以保障進程空間的獨立性。只要操作系統(tǒng)把兩個進程的進程空間對應到不同的內(nèi)存區(qū)域,就讓兩個進程空間成為“老死不相往來”的兩個小王國。兩個進程就不可能相互篡改對方的數(shù)據(jù),進程出錯的可能性就大為減少。
另一方面,有了虛擬內(nèi)存地址,內(nèi)存共享也變得簡單。操作系統(tǒng)可以把同一物理內(nèi)存區(qū)域?qū)蕉鄠€進程空間。這樣,不需要任何的數(shù)據(jù)復制,多個進程就可以看到相同的數(shù)據(jù)。內(nèi)核和共享庫的映射,就是通過這種方式進行的。每個進程空間中,最初一部分的虛擬內(nèi)存地址,都對應到物理內(nèi)存中預留給內(nèi)核的空間。這樣,所有的進程就可以共享同一套內(nèi)核數(shù)據(jù)。共享庫的情況也是類似。對于任何一個共享庫,計算機只需要往物理內(nèi)存中加載一次,就可以通過操縱對應關系,來讓多個進程共同使用。IPO中的共享內(nèi)存,也有賴于虛擬內(nèi)存地址。
-
內(nèi)存
+關注
關注
8文章
3025瀏覽量
74042 -
C語言
+關注
關注
180文章
7604瀏覽量
136813 -
DDR4
+關注
關注
12文章
321瀏覽量
40794
發(fā)布評論請先 登錄
相關推薦
評論