Re: [閒聊]內存定址速度,好像大家都不關心?
我不太確定底下這些有沒有幫助 :Q
※ 引述《RisingForce (DD)》之銘言:
: ※ [本文轉錄自 C_and_CPP 看板 #1DX4728p ]
: 作者: DrStein (啤酒肚) 看板: C_and_CPP
: 標題: [閒聊]內存定址速度,好像大家都不關心?
: 時間: Sat Mar 19 13:40:15 2011
不是不關心,而是內存(RAM)到緩存(cache)的速度,
啊...實際上就等於記憶體控制器如何去存取DRAM的速度.
對程式設計者來說黑箱的因素太大.最佳化比較單純的
RAM種類如SRAM,1T-SRAM,RAMBUS DRAM(不算太單純但比SDRAM好)
不是主記憶體的主流,而自JEDEC SDRAM以降的體系(包含到目前的DDR2/DDR3)
由於是持續演進的,它的存取規則與cycle的關係雖然可以預期在哪個範圍,
可是很難計算出怎麼樣的位址間隔對它是最佳化的存取順序.
再說就算固定變成成同一個記憶體控制器上好了(意思是,同一顆北橋晶片或者是
同一顆cpu...),記憶體組態不同,使用者插1GBx2雙通道,1GBx2但是單通道,2GBx2,
2GB+1GB,512MBx4等等.這些不同的實體組態會導致記憶體控制器的Bank Open/Close
的policy都不同,最佳化的存取順序也不同.組態只要變化就不同,根本就不能設計
只針對記憶體控制器的效能而非針對cache最佳化的code.....
介紹RAM的文件很多,不過介紹到記憶體控制器如何運作基本的文件我也只看過一篇
An introduction to SDRAM and memory controllers (Benny Akesson),
另外手邊若有Computer Architecture:A Quantitiative Approch第二版的,也有介紹
如何應用Bank Interleave去最佳化.三版四版的有沒有拿掉我不確定....
不然若要詳細知道這問題,從基本功開始練起,可以參閱近期有本書:Memory Systems:
Cache,DRAM and Disks看建立基本觀念後能不能想出一些做法.
基本上我是認為除非組態已經很確定了例如嵌入式系統,否則針對記憶體控制器的
最佳化實在是沒有投入的效益.....一般程式設計者能知道(假如有)scratchpad memory
如何應用,preload指令,改變資料排列的順序或者是大小以適應cache等的做法
(同樣CAAQA第二版也有詳細介紹...新版不太記得)就已經很夠用了.
另外文中提到硬體上的分級是有可能的,因為不同記憶體控制器的實做規則不同
的確會影響很大的效能,比如Sis當年搶先推出首款雙通道DDR-400的655Max,
不過它的記憶體存取效能還輸給Intel E7205裝雙通道DDR-266...不過目前
記憶體控制器都內建在cpu中了,所以能做分級變成cpu層級的問題而不是晶片組.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.182.84
※ 編輯: jk21234 來自: 114.37.182.84 (03/19 22:04)
推
03/19 22:27, , 1F
03/19 22:27, 1F
推
03/19 22:28, , 2F
03/19 22:28, 2F
推
03/19 23:58, , 3F
03/19 23:58, 3F
推
03/20 00:04, , 4F
03/20 00:04, 4F
推
03/20 14:35, , 5F
03/20 14:35, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):