記憶體頻寬
此條目需要補充更多來源。 (2019年2月12日) |
記憶體頻寬是處理器可以從主記憶體讀取數據或將數據儲存到主記憶體的速率。記憶體頻寬通常以位元組/秒為單位表示,但對於自然數據大小不是8位元的倍數的系統,這可能會有所不同。
為給定主記憶體或系統決定的記憶體頻寬通常是最大理論頻寬。實際中的記憶體頻寬將小於(並且不可能超過)所決定的頻寬。存在各種基準測試以使用各種訪問模式來測量持續記憶體頻寬。這些旨在提供對系統在各類實際應用程式上應支援的記憶體頻寬的深入了解。
測量慣例
在「位元組/秒」定義的傳輸數據量中有三種不同的約定:
- bcopy約定:計算每單位時間從主記憶體中的一個位置複製到另一個位置的數據量。例如,在1秒內將100萬位元組從主記憶體中的一個位置到另一個位置將被計為100萬位元組/秒。bcopy約定是自洽的,但不容易擴充,以適用具有更複雜訪問模式的情況,例如三次讀取和一次寫入。
- STREAM約定:計算應用程式代碼顯式讀取的數據量和應用程式代碼顯式寫入的數據量之和。[1]以之前的100萬位元組複製為例,STREAM頻寬將計為1秒內讀取的100萬位元組加上寫入的1百萬位元組,總計每秒200萬位元組。STREAM約定與用戶代碼最直接相關,但可能無法統計硬件實際需要執行的所有數據流量。
- 硬件約定:計算硬件讀取或寫入的實際數據量,無論數據動作是否由用戶代碼明確請求。以相同的100萬位元組複製為例,具有寫分配高速緩衝記憶體策略的電腦系統上的硬件頻寬將會多出100萬位元組的流量,因為硬件在執行儲存之前將目標從主記憶體讀取到高速緩衝記憶體中。這使得硬件實際傳輸總計每秒300萬位元組。硬件約定與硬件直接相關,但可能不代表實現用戶代碼所需的最小數據流量。
- 例如,一些電腦系統能夠使用特殊指令避免寫入分配流量,從而可能導致基於所執行的不同數據流量的誤導。
頻寬計算和命名
命名方式因主記憶體技術而異,但對於商用DDR SDRAM , DDR2 SDRAM和DDR3 SDRAM主記憶體,總頻寬是以下值之乘積:
- 基本DRAM時鐘頻率
- 每時鐘的數據傳輸次數:在「雙倍數據速率」(DDR、DDR2、DDR3、DDR4)主記憶體的情況下是兩次
- 主記憶體匯流排(介面)頻寬:每個DDR、DDR2或DDR3主記憶體介面都是64位元。有時也被稱為1個「行」
- 介面數量 :現代PC通常使用兩個主記憶體介面(雙連結模式)來實現有效的128位元匯流排頻寬
例如,一個電腦有兩個通道的主記憶體,每通道都配備執行在400MHz時鐘頻率的DDR2-800模組,則其理論最大記憶體頻寬為:
- 每秒400,000,000個時鐘×每個時鐘2個通道×每行64個位×2個介面=
- 每秒102,400,000,000(1024億)位元(也就是12,800MB/s或12.8GB/s)
但是該理論最大記憶體頻寬被稱為「突發速率」,是不可持續的。
DDR,DDR2和DDR3模組的命名約定指定了最大速度(例如,DDR2-800)或最大頻寬(例如,PC2-6400)。速度等級(800)不是最大時鐘速度,而是它的兩倍(1600,因為數據速率是加倍的)。頻寬等級(6400)是使用64位元每秒傳輸的最大百萬位元組數。在雙連結模式中,這實際上是128位元。因此,範例中的主記憶體組態可以簡化為:兩個DDR2-800模組以雙連結模式執行。
PC系統主記憶體的常見組態是每個主記憶體條都有兩側主記憶體介面,但在較舊、低階或低功耗裝置中,單連結主記憶體也很常見。一些PC和大多數現代圖形卡還會使用兩個以上的主記憶體介面(例如,Intel的LGA 2011平台和輝達 GeForce GTX 980有四個主記憶體介面)。並列執行多個介面的高效能顯示卡可以獲得非常高的主記憶體匯流排頻寬(例如,NVIDIA GeForce GTX TITAN的384位元和AMD Radeon R9 290X的512位元,分別使用了六個和八個64位元介面)。
ECC位
在具有糾錯主記憶體 (ECC)的系統中,介面的額外頻寬(通常為72而不是64位元)不會被計入頻寬規範中,因為用於糾錯的位不能用於儲存用戶數據。 糾錯位會被認為是主記憶體硬件自身的一部分,而不是儲存在該硬件中的資訊。
參見
參考
BSS Random Access Benchmark Performance Evaluation and Optimization of Random Memory Access on Multicores with High Productivity at ACM/IEEE HiPC 2010 (頁面存檔備份,存於互聯網檔案館)