記憶體事物顆粒

2021-08-16 08:01:43 字數 1427 閱讀 4980

經實驗得:

以此求gtx1050ti的記憶體事物顆粒大小:

載入顆粒

在請求記憶體量<32位元組時,載入顆粒是32位元組。

在請求記憶體量》32位元組時,載入顆粒是16位元組。

儲存顆粒

無論什麼情況都是32位元組。

小的記憶體顆粒適合做亂序的記憶體請求問題,因為記憶體事物效率相對較高。但在處理對齊合併記憶體請求時,由於顆粒小記憶體事物會增多,頻寬會下降。

所以各有所長。另外gtx1050ti的理論全域性記憶體頻寬是112g/s,實際頻寬是程式處理資料量/所耗時間的結果,是實際值。另外1m資料的賦值操作實驗一,耗時84us左右

核函式處理了1m的4位元組的inti的賦值運算:

b[i] = a[i];

套用公式一:262144×n×100% = 1<<20*4得:

載入顆粒16位元組

同理 儲存顆粒32位元組

核函式處理了1m的4位元組的float的加法賦值運算:

c[i] = a[i]+b[i];

套用公式一:524288×n×100%=1<<20×4×2 //最後的成2是因為處理了兩倍的載入資料量。得:

載入顆粒16位元組

同理 儲存顆粒32位元組

重複實驗一併開啟一級快取:

實驗發現:以上實驗結果都是在預設條件下:禁用一級快取(書上的預設情況是啟用一級快取)

下面啟用一級快取發現:

猜想:啟用一級快取,顆粒肯定會變大,且對這種對齊合併問題,記憶體效率應該是100%,(只要記憶體顆粒不大於32*4),速度應該加快。

但實驗結果是:

1.耗時(速度)與不啟用一樣。

2.載入記憶體效率是50%

如果按實際計算,

儲存和載入的顆粒都是32,頻寬提高一倍是應該的,但為什麼載入的效率是50%?

本篇的實驗和書上的啟用128,不啟用32位元組不相同,可能是現代的gpu全域性記憶體訪問的模式發生了變化,與之前版本的gpu不同而造成的。

最近的實驗發現,對全域性記憶體的訪問與書上有些不同,有很多疑問,可能是現代gpu的革新造成的,所以本篇所計算的16位元組的載入顆粒大小也可能是錯誤的,因為在nvidia官方文件裡說說明了3.0以上的計算能力的gpu預設的載入儲存顆粒都是32。還有在看自己的device屬性的時候,發現,我的gpu跟本沒有l1一級快取。所以記憶體訪問這裡就當成乙個黑箱,先不去管它,但後面解釋的共享記憶體等都是沒有問題的。

記憶體顆粒的理解

由於工藝上的原因,這個陣列不可能做得太大,所以一般記憶體晶元中都是將記憶體容量分成幾個陣列來製造,也就是說存在記憶體晶元中存在多個邏輯 bank,隨著晶元容量的不斷增加,邏輯bank數量也在不斷增加,目前從32mb到1gb的晶元基本都是4個。晶元組本身設計時在乙個時鐘週期內只允許對乙個邏輯bank進...

認識記憶體顆粒編號含義

認識記憶體的效能引數一般方法是讀取spd晶元中的資訊,但由於spd資訊需要在開機狀態下檢視,而且有一些不法商家也會刷寫spd晶元中的資訊來欺騙消費者。因此,認識記憶體更好的辦法是識別記憶體顆粒的編號,當然不能是被打磨過的。通過檢視顆粒編號的含義,可以更好地識別記憶體是否為 下面我們以市面上最常見的h...

記憶體顆粒位寬和容量 DRAM與記憶體基礎概念

sdram 與記憶體基礎概念 一 sdram 記憶體模組與基本結構 我們平時看到的 sdram 都是以模組形式出現,為什麼要做成這種形式呢?這首先要接觸到 兩個概念 物理 bank 與晶元位寬。pc133 時代的168pin sdram dimm 物理bank 傳統記憶體系統為了保證 cpu的正常工...