記憶體速度

雖然名稱叫做記憶體速度,但其實意義上比較接近時脈的概念,也就是「每秒能夠傳輸幾次資料」的意思,與每秒能夠傳輸的資料量 (記憶體頻寬) 有直接關係,原則上在同世代的記憶體產品中,這個數字越大通常帶來的性能就越好 (雖然會跟之後會談的時序有互相拉扯的狀況,時脈提升時往往延遲也難免得要跟著提高,但通常權衡之後大多數情況還是拉高時脈犧牲一些延遲帶來的效果會比較好,而且因為時序的單位是時脈週期,所以時脈拉高也會讓每個時脈週期實際代表的時間縮短,因此時序低會不會比較好其實要計算過才知道)。

如果要用比較直觀的方式描述的話,其實可以將記憶體通道比喻成一整排連動的砲管,並將資料類比為彈藥。多久可以發射一次砲彈這個間距就是就是「記憶體速度」,而一次發射可以發出幾顆砲彈就是「資料通道寬度」,所以平均每秒可以發射多少砲彈就是「每秒資料傳輸率」。

以近二十年內的個人電腦用記憶體發展而言,基本上時脈都落在 100 至 200 MHz 之間 (這個數字是否讓你想起甚麼呢?其實這就是早期電腦在進行處理器超頻的時候設定的「外頻」!外頻超頻比倍頻難超且容易出現奇怪問題的原因其實最主要就是因為超外頻會連帶拉高記憶體跟 PCI Express 等對時脈敏感的裝置的運作時脈)。

記憶體頻寬計算方式

由於歷代發展的特性不同,計算方式也不太一樣,我在五代記憶體當中各選了一組速度來進行理論頻寬的計算,在下列表格中你應該可以大概看出各代記憶體算法之間的不同。

記憶體制式與速度記憶體時脈I/O 倍率記憶體通道寬度雙向同時傳輸理論頻寬
SDRAM (PC100)100 Mhz18 bytes1800 MB/s
DDR-400200 Mhz18 bytes23.2 GB/s
DDR2-667166 Mhz28 bytes25.2 GB/s
DDR3-1066133 Mhz48 bytes28.3 GB/s
DDR4-2133266 Mhz48 bytes216.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 (主流)SDRAM66 MHz528 MB/s
PC100 (主流)SDRAM100 MHz800 MB/s
PC133SDRAM133 MHz1064 MB/s

DDR SDRAM

進入 DDR SDRAM 時期之後就有兩種表示法了,除了大家最常用的 DDR + I/O 速率 (也就是運作時脈乘上 I/O 倍率) 的表示方法之外,還有看起來跟 SDRAM 時代有點像,但是後面數字意義全然不同的傳輸率表示法,DDR SDRAM 在使用 PC 前綴表示速度的時候,後面接的不是運作時脈而是每秒資料傳輸率四捨五入取到百位的數字。

I/O 速率表示法傳輸率表示法制式運作時脈每秒資料傳輸率
DDR-200 (少見)PC-1600DDR100 MHz1600 MB/s
DDR-266 (主流)PC-2100DDR133 MHz2133 MB/s
DDR-333 (主流)PC-2700DDR166 MHz2666 MB/s
DDR-400 (主流)PC-3200DDR200 MHz3200 MB/s