記憶體頻寬處理器可以從內存讀取數據或將數據儲存到內存的速率。記憶體頻寬通常以位元組/秒為單位表示,但對於自然數據大小不是8位元的倍數的系統,這可能會有所不同。

為給定內存或系統決定的記憶體頻寬通常是最大理論頻寬。實際中的記憶體頻寬將小於(並且不可能超過)所決定的頻寬。存在各種基準測試以使用各種訪問模式來測量持續記憶體頻寬。這些旨在提供對系統在各類實際應用程式上應支援的記憶體頻寬的深入了解。

測量慣例 編輯

在「位元組/秒」定義的傳輸數據量中有三種不同的約定:

  1. bcopy約定:計算每單位時間從內存中的一個位置複製到另一個位置的數據量。例如,在1秒內將100萬位元組從內存中的一個位置到另一個位置將被計為100萬位元組/秒。bcopy約定是自洽的,但不容易擴充,以適用具有更複雜訪問模式的情況,例如三次讀取和一次寫入。
  2. STREAM約定:計算應用程式代碼顯式讀取的數據量和應用程式代碼顯式寫入的數據量之和。[1]以之前的100萬位元組複製為例,STREAM頻寬將計為1秒內讀取的100萬位元組加上寫入的1百萬位元組,總計每秒200萬位元組。STREAM約定與用戶代碼最直接相關,但可能無法統計硬件實際需要執行的所有數據流量。
  3. 硬件約定:計算硬件讀取或寫入的實際數據量,無論數據動作是否由用戶代碼明確請求。以相同的100萬位元組複製為例,具有寫分配高速緩衝記憶體策略的電腦系統上的硬件頻寬將會多出100萬位元組的流量,因為硬件在執行儲存之前將目標從內存讀取到高速緩衝記憶體中。這使得硬件實際傳輸總計每秒300萬位元組。硬件約定與硬件直接相關,但可能不代表實現用戶代碼所需的最小數據流量。
例如,一些電腦系統能夠使用特殊指令避免寫入分配流量,從而可能導致基於所執行的不同數據流量的誤導。

頻寬計算和命名 編輯

命名方式因內存技術而異,但對於商用DDR SDRAMDDR2 SDRAMDDR3 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和大多數現代圖形卡還會使用兩個以上的內存介面(例如,IntelLGA 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頁面存檔備份,存於互聯網檔案館

  1. ^
    STREAM基準測試常見問題:計數位元組和FLOPS: http頁面存檔備份,存於互聯網檔案館) : //www.cs.virginia.edu/stream/ref.html#counting頁面存檔備份,存於互聯網檔案館

外部連結 編輯