對於內存性能,最關鍵的指標是“內存延遲”和“帶寬”。現在用戶在購買內存的時候,往往會被“雙通道”、“低延遲”這樣的術語所迷惑。對於普通用戶來說,他們無法理解這些術語的含義以及它們如何影響系統的性能。本文用通俗易懂的術語解釋了內存帶寬和延遲對系統性能的影響。
記憶的基本概念
“什麽是內存,它是做什麽的?”這是很多初學者的疑惑。就我們平時說的內存來說,通常指的是“隨機存取存儲器”(RAM),以插槽的形式連接到主板上。它在CPU和應用程序之間提供了壹個高速緩存區,是緩存(速度快,容量小)和硬盤(速度慢,容量大)之間的橋梁。程序運行時,需要讀寫的數據無法完全加載到緩存中,於是在價格和容量的限制下,形成了寄存器、緩存、內存、硬盤結構的內存子系統。硬盤可以永久存儲數據,但相比較而言,訪問和讀寫數據的速度較慢。
在程序的整個運行過程中,CPU會先從程序計數器中讀取壹條指令,然後解碼這條指令完成壹個操作,最後讀取另壹條指令。整個過程周而復始。在許多程序中,會重復以下步驟。
-& gt;閱讀說明
-& gt;獲取數據a
-& gt;獲取數據b
-& gt;將b添加到a
-& gt;將a存入c。
在這樣的過程中,讀寫操作會發生很多次,最有效的方法就是在Cach中處理指令、數據A、B、C。但是由於緩存容量的限制,有些數據會存儲在內存中,甚至是硬盤上。如果數據在緩存中,那麽CPU在處理過程中被稱為“命中”,可以從緩存中讀取所需的數據,並存儲在更高速的寄存器中以供進壹步處理。如果數據不在緩存中,則稱為“無效”。CPU必須將所需數據從內存(或硬盤)讀入緩存,然後通過緩存將其加載到寄存器中。簡單來說,內存以相對較低的價格和較高的速度提供了存儲數據的空間。
"數據如何從內存加載到CPU?"這往往是用戶會問的另壹個問題。簡單來說,就是通過“總線”完成這樣壹個過程。總線由多條數據線組成,每條數據線只傳輸1位數據,用來表示0和1兩種狀態。對於頻率為800MHz的互連總線,意味著在壹秒鐘內,內存和CPU之間可以有800M的數據交換。這樣的過程通常由北橋芯片控制。總線壹般是半雙工的,即只能同時“發送”或“接收”數據。這裏的總線也就是我們常說的“前端總線”(FSB)。
DDR(雙傳輸速率)技術是近年來興起的壹種內存技術,在內存市場上取得了成功。DDR內存不同於普通SDR內存。對於前幾年主流的SDRAM內存條,只能在系統每個時鐘周期的下降沿(或上升沿)傳輸數據,內存條的電壓在3.3V左右;DDR SDRAM內存模塊可以在每個時鐘周期的上升沿和下降沿同時傳輸數據,因此得名DDR。DDR內存條的電壓在2.5V左右。
"內存是如何尋址的?"簡單來說,內存地址的排列模式與矩陣非常相似。每個內存庫由行和列組成,行和列的交叉點是存儲數據的位置,通常保存0或1。早期的I845芯片組只有四個存儲體,最大內存容量只有2GB。新的Springdale和Canterwood芯片組有8個存儲體,可以支持高達4GB的內存容量。
雙通道存儲器架構
雙通道內存是目前主流的內存芯片。理論上,在雙通道內存控制器的配合下,內存數據的傳輸速率是普通內存的兩倍。為了解釋它的工作原理,我們不妨以高速公路為例。為了增加高速公路的交通吞吐量,在不提高車輛運行速度的情況下,只能擴大道路的寬度。雙通道內存官方是這樣的。通過在北橋芯片中增加存儲控制器,提高了存儲器的峰值帶寬。DDR SDRAM位總線寬度的內存工作在雙通道內存模式,實際總線寬度為128位。
繼續考慮上面的例子,雙通道DDR內存的架構相當於壹條四車道的高速公路,上行和下行分別占用兩個車道。當車輛從壹條高速公路行駛到另壹條高速公路時,如果連接橋的寬度也是四車道,就不會出現瓶頸,所有的車輛(數據)都可以高速通向另壹條高速公路;在系統中,這個橋就是前端總線(FSB)。英特爾使用“四重泵”總線,其帶寬為128位,因此所有數據都可以在內存和高速緩存之間高速傳輸。四總線技術是英特爾能夠脫穎而出的主要原因。早期的i845芯片組采用單通道內存架構,所以傳輸效率不是很高。
對於速龍XP芯片來說,它的FSB達不到128位的帶寬,只有兩個通道連接內存和緩存,所以“四個通道”的數據必須傳輸兩次。對於AMD的雙通道內存架構,壹個通道經常是空閑的。壹種情況下,如果RAM的延遲和FSB的處理速度相等,雙通道存儲器的優勢就能發揮出來。
耽擱
如果要增加內存的帶寬,那麽可以采用上面的簡單方法,即增加內存的通道;因此在每個時鐘周期中,可以處理的數據量隨著通道的增加而增加。由於目前FSB技術的限制,雙通道內存架構被戳中了。如果FSB可以達到256位以上的位寬,那麽肯定會使用4通道和8通道的存儲器架構。對於內存的性能,還有壹個關鍵因素:延遲。
延遲被定義為CPU讀取和執行指令之間的時間段。如果內存需要讀寫數據,這個過程會造成很大的延遲。總的來說,延遲越低,系統的性能越好。然而,減少延遲並不容易。有時候為了減少1個周期的延遲,成本要高壹個數量級。
如果FSB和內存控制器不以相同的時鐘速度運行,它們之間的數據傳輸必須同步。例如,如果FSB頻率和存儲器控制器頻率是5: 4,則在FSB的5個時鐘周期之後,存儲器控制器將僅運行4個周期。也就是說,FSB每五個周期只能與內存控制器同步壹次。如果CPU在第二個時鐘周期發出讀寫命令,FSB必須等待三個周期才能與存儲控制器同步,然後才能傳輸數據。這也是為什麽大部分FSB和內存控制器都采用1: 1分頻的原因。
除了FSB和內存控制器分頻比造成的延遲,主要還是內存模塊本身造成的。當北橋的內存控制器發出讀請求時,會向內存發送壹個“ACTIVE”命令,然後激活內存的“行”和“列”進行tRP,通過BIOS可以調整設置,壹般需要2 ~ 4個時鐘周期。然後,執行“行刷新(RAS)”和“列刷新(CAS)”。這個延遲tRCD是由內存模塊本身的特性決定的,壹般是2 ~ 4個時鐘周期。在讀寫數據的過程中也會出現行延遲(tRAS)和列延遲(TCL)。如果下壹個存儲器讀寫操作在同壹行中,則僅增加CAS延遲;如果下壹個內存是在不同的模塊中完成的,那麽整個讀寫過程必須重新從tRP開始。TRAS通常需要5 ~ 8個時鐘周期。下圖顯示了內存讀寫的完整過程。
因為這些延遲都要發生在讀寫過程中,所以減少讀寫過程中的延遲是壹項艱巨的任務。盡管如此,在過去10年的末期,內存延遲已經從120ns降低到今天的50ns左右。內存的峰值帶寬也從原來的1GB/s(理論上是PC133)提高到了現在的8GB/s(理論上是雙通道PC4000)。
與斯普林代爾/坎特伍德分頻比相關的問題
如上所述,為了避免內存控制器和FSB之間的延遲,它們的時鐘分頻通常設置為1: 1。然而,許多用戶為了獲得更高的性能,經常超頻CPU或內存。對於P4來說,超頻之後,CPU的最高頻率可以達到FSB的250MHz,但是市面上很少有類型的內存可以達到這個頻率。通常用戶使用的是PC3200內存條,所以分頻比通常是4: 5或者3: 4。在許多實際產品中,內存和芯片組可能不兼容,尤其是Springdale/Canterwood芯片組。比如著名的ABIT IC7/IS 7系列主板就拒絕使用1: 1的內存分頻比。Soltek 86SP E-L的主板也會出現這種問題,壹般廠商會通過更新BIOS來解決這類問題。
結論
本文簡單易懂,介紹了內存延遲和帶寬對性能的影響。文章主要針對那些剛涉足DIY的新手;而DIY老手也可以通過這篇文章了解壹些關於記憶的新東西。
全文結束