為增進(jìn)大家對內(nèi)存的認(rèn)識,本文將為大家介紹高頻率內(nèi)存的優(yōu)勢。此外,小編還將對虛擬內(nèi)存加以探討。
我們每天都在同內(nèi)存打交道,但大家對內(nèi)存真的了解嗎?上篇文章中,我們對服務(wù)器內(nèi)存以及服務(wù)器內(nèi)存技術(shù)有所介紹,為增進(jìn)大家對內(nèi)存的認(rèn)識,本文將為大家介紹高頻率內(nèi)存的優(yōu)勢。此外,小編還將對虛擬內(nèi)存加以探討。如果你對內(nèi)存及其相關(guān)知識具有興趣,不妨繼續(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)存還在帶寬上有升級,功耗更低等。
關(guān)于內(nèi)存和頻率的關(guān)系就介紹到這里,簡單來說,頻率是決定內(nèi)存性能的重要因素,不同代內(nèi)存往往頻率都不同,在相同容量下,內(nèi)存頻率越高,其性能往往更好。而在現(xiàn)實(shí)使用中,有適合不僅看理論,比如買的是DDR4 3000內(nèi)存,但由于主板僅支持DDR4 2400,那么DDR4 3000高頻內(nèi)存只能識別到DDR4 2400,對于這部分用戶來說,DDR4 3000由于電腦不能完全識別,顯得并不是特別合適,因此實(shí)際內(nèi)存選擇時,還需要看實(shí)際需求與價格。
二、內(nèi)存頻率是否越高越好
理論上來講,在同代相同容量內(nèi)存中,內(nèi)存頻率越高,速度就越快。也就是說,頻率是決定內(nèi)存性能的一個非常重要的因素。
其實(shí),電腦內(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)存的一項(xiàng)主要任務(wù),就是存儲進(jìn)程的相關(guān)數(shù)據(jù)。我們之前已經(jīng)看到過進(jìn)程空間的程序段、全局?jǐn)?shù)據(jù)、棧和堆,以及這些這些存儲結(jié)構(gòu)在進(jìn)程運(yùn)行中所起到的關(guān)鍵作用。有趣的是,盡管進(jìn)程和內(nèi)存的關(guān)系如此緊密,但進(jìn)程并不能直接訪問內(nèi)存。在Linux下,進(jìn)程不能直接讀寫內(nèi)存中地址為0x1位置的數(shù)據(jù)。進(jìn)程中能訪問的地址,只能是虛擬內(nèi)存地址(virtual memory address)。操作系統(tǒng)會把虛擬內(nèi)存地址翻譯成真實(shí)的內(nèi)存地址。這種內(nèi)存管理方式,稱為虛擬內(nèi)存(virtual memory)。
每個進(jìn)程都有自己的一套虛擬內(nèi)存地址,用來給自己的進(jìn)程空間編號。進(jìn)程空間的數(shù)據(jù)同樣以字節(jié)為單位,依次增加。從功能上說,虛擬內(nèi)存地址和物理內(nèi)存地址類似,都是為數(shù)據(jù)提供位置索引。進(jìn)程的虛擬內(nèi)存地址相互獨(dú)立。因此,兩個進(jìn)程空間可以有相同的虛擬內(nèi)存地址,如0x10001000。虛擬內(nèi)存地址和物理內(nèi)存地址又有一定的對應(yīng)關(guān)系,如圖1所示。對進(jìn)程某個虛擬內(nèi)存地址的操作,會被CPU翻譯成對某個具體內(nèi)存地址的操作。
圖 虛擬內(nèi)存地址和物理內(nèi)存地址的對應(yīng)
應(yīng)用程序來說對物理內(nèi)存地址一無所知。它只可能通過虛擬內(nèi)存地址來進(jìn)行數(shù)據(jù)讀寫。程序中表達(dá)的內(nèi)存地址,也都是虛擬內(nèi)存地址。進(jìn)程對虛擬內(nèi)存地址的操作,會被操作系統(tǒng)翻譯成對某個物理內(nèi)存地址的操作。由于翻譯的過程由操作系統(tǒng)全權(quán)負(fù)責(zé),所以應(yīng)用程序可以在全過程中對物理內(nèi)存地址一無所知。因此,C程序中表達(dá)的內(nèi)存地址,都是虛擬內(nèi)存地址。比如在C語言中,可以用下面指令來打印變量地址:
intv = 0;
printf(“%p”,(void*)&v);
本質(zhì)上說,虛擬內(nèi)存地址剝奪了應(yīng)用程序自由訪問物理內(nèi)存地址的權(quán)利。進(jìn)程對物理內(nèi)存的訪問,必須經(jīng)過操作系統(tǒng)的審查。因此,掌握著內(nèi)存對應(yīng)關(guān)系的操作系統(tǒng),也掌握了應(yīng)用程序訪問內(nèi)存的閘門。借助虛擬內(nèi)存地址,操作系統(tǒng)可以保障進(jìn)程空間的獨(dú)立性。只要操作系統(tǒng)把兩個進(jìn)程的進(jìn)程空間對應(yīng)到不同的內(nèi)存區(qū)域,就讓兩個進(jìn)程空間成為“老死不相往來”的兩個小王國。兩個進(jìn)程就不可能相互篡改對方的數(shù)據(jù),進(jìn)程出錯的可能性就大為減少。
另一方面,有了虛擬內(nèi)存地址,內(nèi)存共享也變得簡單。操作系統(tǒng)可以把同一物理內(nèi)存區(qū)域?qū)?yīng)到多個進(jìn)程空間。這樣,不需要任何的數(shù)據(jù)復(fù)制,多個進(jìn)程就可以看到相同的數(shù)據(jù)。內(nèi)核和共享庫的映射,就是通過這種方式進(jìn)行的。每個進(jìn)程空間中,最初一部分的虛擬內(nèi)存地址,都對應(yīng)到物理內(nèi)存中預(yù)留給內(nèi)核的空間。這樣,所有的進(jìn)程就可以共享同一套內(nèi)核數(shù)據(jù)。共享庫的情況也是類似。對于任何一個共享庫,計(jì)算機(jī)只需要往物理內(nèi)存中加載一次,就可以通過操縱對應(yīng)關(guān)系,來讓多個進(jìn)程共同使用。IPO中的共享內(nèi)存,也有賴于虛擬內(nèi)存地址。
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3063瀏覽量
74374 -
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137818 -
DDR4
+關(guān)注
關(guān)注
12文章
322瀏覽量
40984
發(fā)布評論請先 登錄
相關(guān)推薦
虛擬內(nèi)存是什么_虛擬內(nèi)存有什么用
![<b class='flag-5'>虛擬內(nèi)存</b>是什么_<b class='flag-5'>虛擬內(nèi)存有</b>什么用](https://file1.elecfans.com//web2/M00/A6/DA/wKgZomUMQN-AVZnTAABf1kokxy8156.png)
評論