關於記憶體的功能與用處,前面已經講過很多所以在本節就不再贅述了,從前面介紹過的內容我們可以得知,記憶體對電腦的性能影響在不少時候其實是很明顯的 (雖然一樣有邊際遞減效應,把記憶體容量加高十倍並不會讓電腦變成十倍快,但當記憶體不足的時候速度是有可能剩下不到一半的),要描述其重要性的話,其實也可以說處理器跟記憶體兩者合起來才足以類比成人類的大腦,記憶體扮演如此重要的角色,因此記憶體的規格自然也會對電腦的性能有很大的影響。
Table of Contents
記憶體規格概觀
整體來說記憶體規格大致上可以分為制式、速度、容量、時序、額外功能、組成形式等六大層面,而以近年的狀況而言,我們在選購記憶體的時候往往比較在意制式、速度與容量這三項,一般來說在購物網站上,甚至是實體通路店家往往也只會提及這部分,但在廠商提供規格書就會詳細列出所有層面的規格了。
如果你是第一次看,可能會覺得上圖下半部出現的那串文字很像外星語言吧?相信再經過本篇的說明之後,你應該會變得稍微能夠讀懂下半部的完整規格,而且會發現原來記憶體的種類有這麼多 (而且個人電腦使用的還是最低階的 XD)。
記憶體頻寬
咦?怎麼出現了個上面沒提到的東西呢,其實並不奇怪,因為我們對記憶體的要求其實就是兩個面向而已,其一是頻寬 (bandwidth) 要盡可能的高,也就是單位時間內能傳輸的資料越多越好,其二則是延遲 (lantacy) 要盡可能短,也就是需要的等待時間越短越好。
而記憶體頻寬最主要的決定因素就是前面談過的記憶體規格中的制式與速度兩項,我打算先分別介紹之後再談頻寬的計算方式與我們用於溝通時使用的表示法。
記憶體制式
記憶體制式 (其實你要說種類或是類別也可以,基本上是英文中 Category 的意義) 是選購記憶體時最基本的一項規格之一,因為記憶體的制式必須要與主機板上的記憶體插槽配對 (其實是受到北橋晶片或是處理器中的記憶體控制器影響),如果選錯的話是根本裝不上去的 (不同制式的記憶體在物理外觀上就能看出有所不同),而記憶體制式基本上也決定了「這類記憶體」的腳位定義、資料通道的寬度、工作電壓等參數。
由於本系列以個人電腦為主,所以在這裡我就只談在個人電腦上獲得廣泛使用的記憶體制式,近二十年內個人電腦記憶體的主流基本上都是 SDRAM (Synchronous Dynamic Random Access Memory, 同步動態隨機存取記憶體),迄今先後有五代不同的產品先後在個人電腦領域中獲得廣泛的應用,也就是上面這張曾經出現在上一節的譜系圖中,左下角紅框的部分。
記憶體制式 | 運作時脈 | 匯流排時脈 | 預取長度 | 工作電壓 | 腳位 |
SDRAM | 66 ~ 133 | 66 ~ 133 | 無 | 3.3 V | 168 pin |
DDR SDRAM | 100 ~ 200 | 100 ~ 200 | 2n | 2.5 V | 184 pin |
DDR2 SDRAM | 100 ~ 266 | 200 ~ 533 | 4n | 1.8 V | 240 pin |
DDR3 SDRAM | 100 ~ 266 | 400 ~ 1066 | 8n | 1.5 V | 240 pin |
DDR4 SDRAM | 133 ~ 266 | 1066 ~ 2133 | 8n | 1.2 V | 288 pin |
由於我打算在之後用一整篇文章的篇幅來介紹 SDRAM、DDR、DDR2、DDR3、DDR4 的特性與演變,所以記憶體制式的部分就先談到這裡。
記憶體速度
雖然名稱叫做記憶體速度,但其實意義上比較接近時脈的概念,也就是「每秒能夠傳輸幾次資料」的意思,與每秒能夠傳輸的資料量 (記憶體頻寬) 有直接關係,原則上在同世代的記憶體產品中,這個數字越大通常帶來的性能就越好 (雖然會跟之後會談的時序有互相拉扯的狀況,時脈提升時往往延遲也難免得要跟著提高,但通常權衡之後大多數情況還是拉高時脈犧牲一些延遲帶來的效果會比較好,而且因為時序的單位是時脈週期,所以時脈拉高也會讓每個時脈週期實際代表的時間縮短,因此時序低會不會比較好其實要計算過才知道)。
如果要用比較直觀的方式描述的話,其實可以將記憶體通道比喻成一整排連動的砲管,並將資料類比為彈藥。多久可以發射一次砲彈這個間距就是就是「記憶體速度」,而一次發射可以發出幾顆砲彈就是「資料通道寬度」,所以平均每秒可以發射多少砲彈就是「每秒資料傳輸率」。
以近二十年內的個人電腦用記憶體發展而言,基本上時脈都落在 100 至 200 MHz 之間 (這個數字是否讓你想起甚麼呢?其實這就是早期電腦在進行處理器超頻的時候設定的「外頻」!外頻超頻比倍頻難超且容易出現奇怪問題的原因其實最主要就是因為超外頻會連帶拉高記憶體跟 PCI Express 等對時脈敏感的裝置的運作時脈)。
記憶體頻寬計算方式
由於歷代發展的特性不同,計算方式也不太一樣,我在五代記憶體當中各選了一組速度來進行理論頻寬的計算,在下列表格中你應該可以大概看出各代記憶體算法之間的不同。
記憶體制式與速度 | 記憶體時脈 | I/O 倍率 | 記憶體通道寬度 | 雙向同時傳輸 | 理論頻寬 |
SDRAM (PC100) | 100 Mhz | 1 | 8 bytes | 1 | 800 MB/s |
DDR-400 | 200 Mhz | 1 | 8 bytes | 2 | 3.2 GB/s |
DDR2-667 | 166 Mhz | 2 | 8 bytes | 2 | 5.2 GB/s |
DDR3-1066 | 133 Mhz | 4 | 8 bytes | 2 | 8.3 GB/s |
DDR4-2133 | 266 Mhz | 4 | 8 bytes | 2 | 16.7 GB/s |
首先,個人電腦用的 SDRAM 迄今一直都維持 64bit 的通道寬度 (這裡是指單通道而言),換算單位之後即是 8 bytes (1 byte = 8 bit),而從 DDR 開始引入雙向可以同時傳輸的技術,讓雙倍資料傳輸量成為可能,因此 DDR 之後的各代記憶體最後都會乘一個 2,至於 I/O 倍率的部分則主要受到預取 (Prefetch) 機制的影響,DDR2 的預取量為 DDR 的兩倍,而 DDR3 的預取量則又是 DDR2 的兩倍,但在升級 DDR4 時則沒有再提升。
從這個地方也可以看出為什麼在很多時候我們寧願犧牲一點延遲,讓時序不要那麼好看也要提高記憶體的運作時脈,因為上面的運算方式中間可都是「乘號」,時脈往上拉高 33 Mhz 每秒鐘就可以帶來數百 MB 甚至數 GB 額外的資料傳輸量!
記憶體制式與速度表示法
這個部分其實有點複雜,但看文件的時候確實每種表示法都會看到,其實各種表示法表達的東西都是一模一樣的,只是各家廠商為了宣傳需要,或是延續過去習慣而發明了各種跟 JEDEC 官方宣布不同的表示方法而已。
SDRAM
在 SDRAM 的時代由於僅此一種別無分號所以基本上沒有出甚麼亂子,大家就是用運作時脈來稱呼這類記憶體而已,JEDEC 官方使用的表示法與慣用表示法相同,使用 PC 前綴加上運作時脈表示。
慣用表示法 | 制式 | 運作時脈 | 每秒資料傳輸率 |
PC66 (主流) | SDRAM | 66 MHz | 528 MB/s |
PC100 (主流) | SDRAM | 100 MHz | 800 MB/s |
PC133 | SDRAM | 133 MHz | 1064 MB/s |
DDR SDRAM
進入 DDR SDRAM 時期之後就有兩種表示法了,除了大家最常用的 DDR + I/O 速率 (也就是運作時脈乘上 I/O 倍率) 的表示方法之外,還有看起來跟 SDRAM 時代有點像,但是後面數字意義全然不同的傳輸率表示法,DDR SDRAM 在使用 PC 前綴表示速度的時候,後面接的不是運作時脈而是每秒資料傳輸率四捨五入取到百位的數字。
I/O 速率表示法 | 傳輸率表示法 | 制式 | 運作時脈 | 每秒資料傳輸率 |
DDR-200 (少見) | PC-1600 | DDR | 100 MHz | 1600 MB/s |
DDR-266 (主流) | PC-2100 | DDR | 133 MHz | 2133 MB/s |
DDR-333 (主流) | PC-2700 | DDR | 166 MHz | 2666 MB/s |
DDR-400 (主流) | PC-3200 | DDR | 200 MHz | 3200 MB/s |
DDR2 SDRAM
DDR2 SDRAM 使用的表示法大致上與 DDR SDRAM 相同,其中傳輸率表示法則將 PC 前綴改為 PC2 以和 DDR SDRAM 作區別,值得注意的是這一世代開始出亂子了,傳輸率表示法的部分有些廠商為了表示自己的產品比別人稍快,所以故意在傳輸率表示法上多加一百,其實基本上意義是一樣的。
I/O 速率表示法 | 傳輸率表示法 | 制式 | 運作時脈 | 每秒資料傳輸率 |
DDR2-400 (少見) | PC2-3200 | DDR2 | 100 MHz | 3200 MB/s |
DDR2-533 | PC2-4200 | DDR2 | 133 MHz | 4266 MB/s |
DDR2-667 (主流) | PC2-5300 | DDR2 | 166 MHz | 5333 MB/s |
DDR2-800 (主流) | PC2-6400 | DDR2 | 200 MHz | 6400 MB/s |
DDR2-1066 (少見) | PC2-8500 | DDR2 | 266 MHz | 8533 MB/s |
DDR3 SDRAM
DDR3 SDRAM 的表示法也大致與 DDR2 SDRAM 相同,但是在此代中開始流行「原廠超頻記憶體」,也就是出廠前已經由原廠先超頻過的記憶體,因此在實際購買上產生了一些混亂,例如有不少標示為 DDR3-1866 的記憶體其實是 DDR3-1600 硬超上去的,而基本上 DDR3-2133 由於在 DDR4 量產開賣之後才被 JEDEC 納入正式規格中,因此幾乎沒有原生的 DDR3-2133 記憶體,所能見到的應該幾乎都是超頻版本,至於 DDR3-2400 則是廠商自創的規格,並沒有納入 JEDEC 規格書中。
I/O 速率表示法 | 傳輸率表示法 | 制式 | 運作時脈 | 每秒資料傳輸率 |
DDR3-800 (少見) | PC3-6400 | DDR3 | 100 MHz | 6400 MB/s |
DDR3-1066 | PC3-8500 | DDR3 | 133 MHz | 8533 MB/s |
DDR3-1333 (主流) | PC3-10600 | DDR3 | 166 MHz | 10.4 GB/s |
DDR3-1600 (主流) | PC3-12800 | DDR3 | 200 MHz | 12.5 GB/s |
DDR3-1866 | PC3-14900 | DDR3 | 233 MHz | 14.6 GB/s |
DDR3-2133 (少見) | PC3-17000 | DDR3 | 266 MHz | 16.7 GB/s |
DDR3-2400 (規格外) | PC3-19200 | DDR3 | 300 MHz | 18.8 GB/s |
DDR4 SDRAM
在 DDR4 世代中,JEDEC 官方將記憶體模組的表示法改為與習慣相同的用法,也就是下表中的 PC4 表示法,是以 I/O 速率為主,但實際上還有不少廠商仍然習慣使用傳輸率表示法,因此在文件上顯得雜亂許多,雖然 DDR4 是從 DDR4-1600 起跳,但實際上能買到的絕大多數模組在上市時就已經是原生 DDR4-2133 了,至於 DDR4-2666 與 DDR4-3200 則是廠商自創的規格,目前還沒有納入 JEDEC 規格書中。
I/O 速率表示法 | PC4 表示法 | 傳輸率表示法 | 制式 | 運作時脈 | 每秒資料傳輸率 |
DDR4-1600 (少見) | PC4-1600 | PC4-12800 | DDR4 | 200 MHz | 12.5 GB/s |
DDR4-1866 | PC4-1866 | PC4-14900 | DDR4 | 233 MHz | 14.6 GB/s |
DDR4-2133 (主流) | PC4-2133 | PC4-17000 | DDR4 | 266 MHz | 16.7 GB/s |
DDR4-2400 | PC4-2400 | PC4-19200 | DDR4 | 300 MHz | 18.8 GB/s |
DDR4-2666 (規格外) | PC4-2666 | PC4-21300 | DDR4 | 333 MHz | 20.8 GB/s |
DDR4-3200 (規格外) | PC4-3200 | PC4-25600 | DDR4 | 400 MHz | 25.0 GB/s |