Re: [閒聊]內存定址速度,好像大家都不關心?

看板C_and_CPP作者 ( 1569 11 /47)時間14年前 (2011/03/19 22:04), 編輯推噓5(500)
留言5則, 5人參與, 最新討論串2/2 (看更多)
我不太確定底下這些有沒有幫助 :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
Good
03/19 22:28, 2F

03/19 23:58, , 3F
軟體只能做資結和演法 看怎麼樣提升 不過有些部份硬體做死
03/19 23:58, 3F

03/20 00:04, , 4F
其實原文應該是問mem定址速度 why不是廠商區隔產品策略?
03/20 00:04, 4F

03/20 14:35, , 5F
專業推:)
03/20 14:35, 5F
文章代碼(AID): #1DXBVShj (C_and_CPP)
文章代碼(AID): #1DXBVShj (C_and_CPP)