




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
DDR內存的終極優化(轉載)2004年的春天,ZOL準時拉開了DDR400內存專題的序幕。在我們逐步向您展示其魅力之前,請先來了解一下優化內存的相關知識。也許您已經有所了解,但絕不是全部。希望這些內容對您今后的應用有所幫助。正文:有關內存優化的文章其實已經有很多了,可能大家都沒覺得沒什么了不起的,不就是那幾個參數嗎?這還用講?但是,我相信90%以上的人并沒有完全真正理解那些時序參數的含義。我敢說,目前很多的優化原則都是有問題的,甚至有誤導的傾向!本人在此之前曾有一篇專門探討內存原理與相關參數的大型專題(文章發表于《電腦高手》),其中所講到的一些原理其實對優化就有很大的啟發意義。的確,雖然在BIOS中就是那么幾個可以調節的內存時序參數,但如果不正確了解它們的意思,并不是每個人都知道如何正確的調節。有人可能會說,這有什么難的,與時序相關的時序參數,肯定都是越小越好呀,錯!這就是我今天要著重講到的問題。1、認識內存相關工作流程與參數首先,我們還是先了解一下內存的大體結構工作流程,這樣會比較容量理解這些參數在其中所起到的作用。這部分的講述以SDRAM為例,因為時序圖看起來會簡單一些,但相關概念與DDRSDRAM的基本相同。SDRAM的內部是一個存儲陣列,將數據“填”進去,你可以它想象成一張表格。和表格的檢索原理一樣,先指定一個行(Row),再指定一個列(Column),我們就可以準確地找到所需要的單元格,這就是內存芯片尋址的基本原理。對于內存,這個單元格可稱為存儲單元,那么這個表格(存儲陣列)叫什么呢?它就是邏輯Bank(LogicalBank,下文簡稱L-Bank)。SDRAM內部L-Bank示意圖,這是一個8X8的陣列,B代表L-Bank地址編號,C代表列地址編號,R代表行地址編號。如果尋址命令是B1、R2、C6,就能確定地址是圖中紅格的位置目前的內存芯片基本上都是4個L-Bank設計,也就是說一共有4個這樣的“表格”。尋址的流程也就是——先指定L-Bank地址,再指定行地址,然后指列地址最終的確尋址單元。在實際工作中,L-Bank地址與相應的行地址是同時發出的,此時這個命令稱之為“行有效”或“行激活”(RowActive)。在此之后,將發送列地址尋址命令與具體的操作命令(是讀還是寫),這兩個命令也是同時發出的,所以一般都會以“讀/寫命令”來表示列尋址。根據相關的標準,從行有效到讀/寫命令發出之間的間隔被定義為tRCD,即RAStoCASDelay(RAS至CAS延遲,RAS就是行地址選通脈沖,CAS就是列地址選通脈沖),大家也可以理解為行選通周期。tRCD是SDRAM的一個重要時序參數,可以通過主板BIOS經過北橋芯片進行調整。廣義的tRCD以時鐘周期(tCK,ClockTime)數為單位,比如tRCD=2,就代表延遲周期為兩個時鐘周期,具體到確切的時間,則要根據時鐘頻率而定,對于PC100SDRAM(時鐘頻率等同于DDR-200),tRCD=2,代表20ns的延遲,對于PC133(時鐘頻率等于DDR-266)則為15ns。圖中顯示的是tRCD=3接下來,相關的列地址被選中之后,將會觸發數據傳輸,但從存儲單元中輸出到真正出現在內存芯片的I/O接口之間還需要一定的時間(數據觸發本身就有延遲,而且還需要進行信號放大),這段時間就是非常著名的CL(CASLatency,列地址脈沖選通潛伏期)。CL的數值與tRCD一樣,以時鐘周期數表示。如DDR-400,時鐘頻率為200MHz,時鐘周期為5ns,那么CL=2就意味著10ns的潛伏期。不過,CL只是針對讀取操作,對于SDRAM,寫入是沒有潛伏期的,對于DDRSDRAM,寫入潛伏期在0.75至1.25個時針周期之間。圖中標準CL=2,tAC是有關內部信號處理的周期,可以不用關心目前內存的讀寫基本都是連續的,因為與CPU交換的數據量以一個CacheLine(即CPU內Cache的存儲單位)的容量為準,一般為64字節。而現有的P-Bank位寬為8字節,那么就要一次連續傳輸8次,這就涉及到我們也經常能遇到的突發傳輸的概念。突發(Burst)是指在同一行中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸的周期數就是突發長度(BurstLengths,簡稱BL)。在進行突發傳輸時,只要指定起始列地址與突發長度,內存就會依次地自動對后面相應數量的存儲單元進行讀/寫操作而不再需要控制器連續地提供列地址(SDRAM與DDRSDRAM的突發傳輸對列尋址的操作數量有所不同,在此不再細說)。這樣,除了第一筆數據的傳輸需要若干個周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個數據只需一個周期的即可獲得。突發連續讀取模式:只要指定起始列地址與突發長度,后續的尋址與數據的讀取自動進行,而只要控制好兩段突發讀取命令的間隔周期(與BL相同)即可做到連續的突發傳輸。在數據讀取完之后,為了騰出讀出放大器以供同一L-Bank內其他行的尋址并傳輸數據,內存芯片將進行預充電的操作來關閉當前工作行。還是以上面那個L-Bank示意圖為例。當前尋址的存儲單元是B1、R2、C6。如果接下來的尋址命令是B1、R2、C4,則不用預充電,因為讀出放大器正在為這一行服務。但如果地址命令是B1、R4、C4,由于是同一L-Bank的不同行,那么就必須要先把R2關閉,才能對R4尋址。從開始關閉現有的工作行,到可以打開新的工作行之間的間隔就是tRP(RowPrechargecommandPeriod,行預充電有效周期),單位也是時鐘周期數。本圖為一個完整的從行尋址到行關閉的時序圖,圖中所表示的tRCD=2、CL=2、tRP=2從上圖中我們還發現了一個在DDRSDRAM時代經常被人提起,也經常會在BIOS中出現的參數——tRAS。tRAS在內存規范中的解釋是ACTIVEtoPRECHARGEcommand,即從行有效命令發出至預充電命令發出之間的間隔。這也是本專題第一部分中所要重要談到的話題。在深入分析它之前,我們先了解一下哪些因素會影響到內存的性能。在講完SDRAM的基本工作原理和主要操作之后,我們現在要重要分析一下SDRAM的時序與性能之間的關系,它不再局限于芯片本身,而是要從整體的內存系統去分析。這也是廣大DIYer所關心的話題。比如CL值對性能的影響有多大幾乎是每個內存論壇都會有討論,今天我們就詳細探討一下。這里需要強調一點,對于內存系統整體而言,一次內存訪問就是對一個頁(Page)的訪問。由于在P-Bank中,每個芯片的尋址都是一樣的,所以可以將頁訪問“濃縮”等效為對每芯片中指定行的訪問,這樣可能比較好理解。但為了與官方標準統一,在下文中會經常用頁來描述相關的內容,請讀者注意理解。可能很多人還不清楚頁的概念,在這里有必要先講一講。從狹義上講,內存芯片芯片中每個L-Bank中的行就是頁,即一行為一頁。但從廣義上說,頁是從整體角度講的,這個整體就是內存子系統。對于內存模組,與之進行數據交換的單位就是P-Bank的位寬。由于目前還沒有一種內存芯片是64bit位寬的,所以就必須要用多個芯片的位寬來集成一個P-Bank。如我們現在常見的內存芯片是8bit位寬的,那么就需要8顆芯片組成一個P-Bank才能使系統正常工作。而CPU對內存的尋址,一次就是一個P-Bank,P-Bank內的所有芯片同時工作,這樣對P-Bank內所有的芯片的尋址都是相同的。比如尋址指令是B1、C2、R6,那么該P-Bnak內的芯片的工作狀態都是打開B1的L-Bank的第C2行。好了,所謂廣義上的頁就是指P-Bank所包括的芯片內相同L-Bank內的相同工作行的總集合。頁容量對于內存子系統而言是一個很重要的指標。這個參數取決于芯片的容量與位寬的設計。由于與本文的關系不大,就不具體舉例了。早期Intel845芯片組MCH的資料:它可以支持2、4、8、16KB的頁容量總之,我們要知道,由于尋址對同一L-Bank內行地址的單一性,所以一個L-Bank在同一時間只能打開一個頁面,一個具有4個L-Bank的內存芯片,可以打開4個頁面。這樣,以這種芯片組成的P-Bank,也就最后具備了4個頁面,這是目前DDRSDRAM內存模中每個P-Bank的頁面最大值。1、影響性能的主要時序參數在講完內存的基本操作流程與相關的tRP、tRCD、CL、BL之后,我們就開始深入分析這些參數對內存性能的影響。所謂的影響性能是并不是指SDRAM的帶寬,頻率與位寬固定后,帶寬也就不可更改了。但這是理想的情況,在內存的工作周期內,不可能總處于數據傳輸的狀態,因為要有命令、尋址等必要的過程。但這些操作占用的時間越短,內存工作的效率越高,性能也就越好。非數據傳輸時間的主要組成部分就是各種延遲與潛伏期。通過上文的講述,大家應該很明顯看出有三個參數對內存的性能影響至關重要,它們是tRCD、CL和tRP。按照規定,每條正規的內存模組都應該在標識上注明這三個參數值,可見它們對性能的敏感性。以內存最主要的操作——讀取為例。tRCD決定了行尋址(有效)至列尋址(讀/寫命令)之間的間隔,CL決定了列尋址到數據進行真正被讀取所花費的時間,tRP則決定了相同L-Bank中不同工作行轉換的速度?,F在可以想象一下對某一頁面進行讀取時可能遇到的幾種情況(分析寫入操作時不用考慮CL即可):1、要尋址的行與L-Bank是空閑的。也就是說該L-Bank的所有行是關閉的,此時可直接發送行有效命令,數據讀取前的總耗時為tRCD+CL,這種情況我們稱之為頁命中(PH,PageHit)。2、要尋址的行正好是現有的工作行,也就是說要尋址的行已經處于選通有效狀態,此時可直接發送列尋址命令,數據讀取前的總耗時僅為CL,這就是所謂的背靠背(BacktoBack)尋址,我們稱之為頁快速命中(PFH,PageFastHit)或頁直接命中(PDH,PageDirectHit)。3、要尋址的行所在的L-Bank中已經有一個行處于活動狀態(未關閉),這種現象就被稱作尋址沖突,此時就必須要進行預充電來關閉工作行,再對新行發送行有效命令。結果,總耗時就是tRP+tRCD+CL,這種情況我們稱之為頁錯失(PM,PageMiss)。顯然,PFH是最理想的尋址情況,PM則是最糟糕的尋址情況。上述三種情況發生的機率各自簡稱為PHR——PHRate、PFHR——PFHRate、PMR——PMRate。因此,系統設計人員(包括內存與北橋芯片)都盡量想提高PHR與PFHR,同時減少PMR,以達到提高內存工作效率的目的。二、增加PHR的方法顯然,這與預充電管理策略有著直接的關系,目前有兩種方法來盡量提高PHR。自動預充電技術就是其中之一,它自動的在每次行操作之后進行預充電,從而減少了日后對同一L-Bank不同行尋址時發生沖突的可能性。但是,如果要在當前行工作完成后馬上打開同一L-Bank的另一行工作時,仍然存在tRP的延遲。怎么辦?此時就需要L-Bank交錯預充電了。早期非常令人關注的VIA4路交錯式內存控制,就是在一個L-Bank工作時,對另一個L-Bank進行預充電或者尋址(如果要尋址的L-Bank是關閉的)。這樣,預充電與數據的傳輸交錯執行,當訪問下一個L-Bank時,tRP已過,就可以直接進入行有效狀態了,如果配合得理想,那么就可以實現無間隔的L-Bank交錯讀/寫(一般的,交錯操作都會用到自動預充電),這是比PFH更好的情況,但它只出現在后續的數據不在同一頁面的時時候。當時VIA聲稱可以跨P-Bank進行16路內存交錯,并以LRU(LeastRecentlyUsed,近期最少使用)算法進行交錯預充電/尋址管理。L-Bank交錯自動預充電/讀取時序圖:L-Bank0與L-Bank3實現了無間隔交錯讀取,避免了tRP與tRCD對性能的影響,是最理想的狀態三、增加PFHR的方法無論是自動預充電還是交錯工作的方法都無法消除同行(頁面)尋址時tRCD所帶來的延遲。要解決這個問題,就要盡量讓一個工作行在進行預充電前盡可能多的接收工作命令,以達到背靠背的效果,此時就只剩下CL所造成的讀取延遲了(寫入時沒有延遲)。如何做到這一點呢?這就是北橋芯片的責任了?,F在我們就又接觸到tRAS這個參數,在BIOS中所設置的tRAS是指行有效至預充電的最短周期,在內存規范中定義為tRAS(min),過了這個周期后就可以發出預充電指令。對于SDRAM和DDRSDRAM而言,一般是預充電命令至少要在行有效命令5個時鐘周期之后發出,最長間隔視芯片而異(目前的DDRSDRAM標準一般基本在70000ns左右),否則工作行的數據將有丟失的危險。那么這也就意味著一個工作行從有效(選通)開始,可以有70000ns的持續工作時間而不用進行預充電。顯然,只要北橋芯片不發出預充電(包括允許自動預充電)的命令,行打開的狀態就會一直保持。在此期間的對該行的任何讀寫操作也就不會有tRCD的延遲??梢?,如果北橋芯片在能同時打開的行(頁)越多,那么PFHR也就越大。需要強調的是,這里的同時打開不是指對多行同時尋址(那是不可能的),而是指多行同時處于選通狀態。我們可以看到一些SDRAM芯片組的資料中會指出可以同時打開多少個頁的指標,這可以說是決定其內存性能的一個重要因素。Intel845芯片組MCH的資料:其中表明它可以支持24個頁面同時處于打開狀態但是,可同時打開的頁數也是有限制的。從SDRAM的尋址原理講,同一L-Bank中不可能有兩個打開的行(讀出放大器只能為一行服務),這就限制了可同時打開的頁面總數。以SDRAM有4個L-Bank,北橋最多支持8個P-Bank(4條DIMM)為例,理論上最多只能有32個頁面能同時處于打開的狀態。而如果只有一個P-Bank,那么就只剩下4個頁面,因為有幾個L-Bank才能有同時打開幾個行而互不干擾。Intel845的MHC雖然可以支持24個打開的頁面,那也是指6個P-Bank的情況下(845MCH只支持6個P-Bank)??梢?45已經將同時打開頁數發揮到了極致。不過,同時打開頁數多了,也對存取策略提出了一定的要求。理論上,要盡量多地使用已打開的頁來保證最短的延遲周期,只有在數據不存在(讀取時)或頁存滿了(寫入時)再考慮打開新的指定頁,這也就是變向的連續讀/寫。而打開新頁時就必須要關閉一個打開的頁,如果此時打開的頁面已是北橋所支持的最大值但還不到理論極限的話(如果已經達到極限,就關閉有沖突的L-Bank內的頁面即可),就需要一個替換策略,一般都是用LRU算法來進行,這與VIA的交錯控制大同小異?;氐秸},雖然tRAS代表的是最小的行有效至預充電期限,但一般的,北橋芯片一般都會在這個期限后第一時間發出預充電指令(自動預充電時,會在tRAS之后自動執行預充電命令),只有在與其他操作相沖突時預充電操作才被延后(比如,DDRSDRAM標準中規定,在讀取命令發出后不能立即發出預充電指令)。因此,tRAS的長短一直是內存優化發燒友所爭論的話題,在最近一兩年,由于這個參數在BIOS選項中越來越普及,所以也逐漸被用戶所關注。其實,在SDRAM時代就沒有對這個參數有刻意的設定,在DDRSDRAM的官方組織JEDEC的相關標準中,也沒有把其列為必須標明的性能參數(CL、tRCD、tRP才是),tRAS應該是某些主板廠商炒作出來的,并且在主板說明書上也注明越短越好。其實,縮小tRAS的本意在于,盡量壓縮行打開狀態下的時間,以減少同L-Bank下對其他行進行尋址時的沖突,從內存的本身來講,這是完全正確的做法,符合內存性能優化的原則,但如果放到整體的內存系統中,伴隨著主板芯片組內存頁面控制管理能力的提升,這種做法可能就不見得是完全正確的,在下文中我們會繼續分析tRAS的不同長短設置對內存性能所帶來的影響。四、BL長度對性能的影響從讀/寫之間的中斷操作我們又引出了BL(突發長度)對性能影響的話題。首先,BL的長短與其應用的領域有著很大關系,下表就是目前三個主要的內存應用領域所使用的BL,這是廠商們經過多年的實踐總結出來的。BL與相應的工作領域BL越長,對于連續的大數據量傳輸很有好處,但是對零散的數據,BL太長反而會造成總線周期的浪費,雖然能通過一些命令來進行終止,便也占用了控制資源。以P-Bank位寬64bit為例,BL=4時,一個突發操作能傳輸32字節的數據,為了滿足CacheLine的容量需求,還得多發一次,如果是BL=8,一次就可以滿足需要,不用再次發出讀取指令。而對于2KB的數據,BL=4的設置意味著要每隔4個周期發送新的列地址,并重復63次。而對于BL=256,一次突發就可完成,并且不需要中途再進行控制,但如果僅傳輸64字節,就需要額外的命令來中止BL=256的傳輸。而額外的命令越多,越占用內存子系統的控制資源,從而降低總體的控制效率。從這可以看出BL對性能的影響因素,這也是為什么PC上的內存子系統的BL一般為4或8的原因。但是不是8比4好,或者4比8好呢?并不能統一而論,這在下文會分析到。到此,大家應該有一些優化的眉目了吧。我們可以先做一下界定,任何情況下,只要數值越小或越大(單一方向),內存的性能會越好的參數為絕對參數,而數值越小或越大對性能的影響不固定的參數則為相對參數。那么,CL、tRCD、tRP顯然就是絕對參數,任何情況下減少它們的周期絕對不會錯。而且從上文的分析可以發現,從重要性來論,優先優化的順序也是CL→tRCD→tRP,因為CL的遇到的機會最多,tRCD其次,tRP如果頁面交錯管理的好,大多不受影響。而BL、tRAS等則可以算是相對參數。也正是由于這些相對參數的存在,才使得內存優化不再那么簡單。好了,上面已經講完基本的相關參數與原理,下面就結合實際來看看具體如何設置。目前,以Intel和NVIDIA為首的Intel與AMD平臺都進入了雙通道時代,這也是今后的主要潮流。所以我們這次也是以雙方的雙通道平臺為試驗平臺,分別是875P和nForce2。鑒于AMD64離我們還比較遠,因此我們沒有在AMD64的雙通道平臺上進行測試。首先要講明,Intel865/875的雙通道與nForce2的雙通道不是一碼事。兩者目前還沒有可比性。簡而言之,865/875只用一個128bit位寬的內存控制器控制兩個通道,這就意味著發給兩個通道的尋址指令是一模一樣的,從而也要求組成雙通道的內存模組的容量、位寬設計完全一樣,因為不同位寬的芯片,尋址指令也不一樣,而一個內存控制器是無法發出兩套指令的。nForce2則是兩個獨立的控制器分別控制兩個不同的通道,這樣每個通道的內存模組的架構就可以不同,因為指令也是獨立的。但是nForce2在雙通道帶寬合成方面會有比較大的麻煩,畢竟內存地址的轉換是相當復雜的。所以,nForce2與865/875代表了兩種設計。而這樣的設計體現出來的內存配置也有了變化。在下文中,我們以875P平臺為主nForce2平臺為輔,來進行優化試驗。先讓我們看看875P內存頁面控制方面的一些特點:Intel875P的頁面控制特性,可以發現雙通道與單通道時有所不同目前的875P主板都是4條DIMM的設計,可以最大安裝4條雙P-Bank的內存模組,也就是說一共是8個P-Bank,合32個頁面。但從上圖中可以發現,當為雙通道時,最多可打開的頁面數減半,變成16個,但頁面容量則翻了一倍。這就是意味著,組成雙通道在兩條內存模組在控制器的眼中就是一條128bit位寬的模組,由于尋址指令相同,所以兩個通道內的相同P-Bank里內存芯片在同一時間的工作行相同,這樣便使可打開的頁面數減少,但頁容量增加。相反,如果是單通道,則與845主板一樣,簡單的累加各內存模組的頁面就可以了,頁面數量可以達到最多,但容量不會成倍增加。不要小看這點區別,頁面的多少與容量關系到內存控制器能力的發揮。比如交錯控制,如果有32個頁面可供選擇,絕對比4個頁面時輕松一些,尋址沖突可以進一步減少,反過來,頁面容量的提高,可以允許更長時間的背靠背式的尋址,這也對提高內存效率提供了幫助。關鍵就在于控制器怎么協調好頁面數量與頁面容量之間的關系。從中可以發現,頁面容量固定不變,頁面數則成倍增加。在下面的優化實驗中,我們主要考驗頁面數以及tRAS這個參數的不同設定在不同內存配置下對性能的影響。此外,我們還會討論BL、刷新周期等BIOS可能出現的調整參數對性能的影響。這里需要指出,本專題中(包括后面的內存測試),數字A-B-C-D分別對應的參數是:CL-tRCD-tRP-tRAS。首先們進行的是在875P上的全面測試實驗,此時我們將在BIOS默認的參數基礎上進行調校,PAT與HT均為打開狀態,BL=8,刷新周期設為Auto,時序方面分別設定為2-3-3-5和2-3-3-8。一、PCMark04測試PCMark04具有一個比較專業且全面的內存測試功能,但普通的內存測試項目只有16個,本次我們通過高級設置調出全部的44項測試選項。通過上面的成績可以發現,2-3-3-8一直比2-3-3-5的性能要好,并且隨著頁面數量的增加,這種優勢也更大。我們選擇2-3-3-8得分最高的1GB配置下的成績詳細列出來,大家可以從中看出一些特點。從中可以看出,2-3-3-8取得了大多數測試的勝利,雖然有些測試成績差異很小,應該屬于測試誤差范圍之內,但我們可以發現這種領先呈“塊狀”分布,所以也應該有一定的代表性,尤其是“塊拷貝(讀后寫)”,2-3-3-8的性能明顯占優。而且除了隨機訪問性能以外,2-3-3-8在大容量數據傳輸方面都要好于2-3-3-5。二、ADIA323.93測試AIDIA323.93是一款兼系統資源查看與簡單測試的軟件,不過其內存帶寬測試功能還是經常被人所用到。ADIA323.93的測試相對簡單一些,從中可以發現2-3-3-5在少頁面時讀取性能要占優級,但到了16個頁面時,被2-3-3-8反超,同時2-3-3-8一直保持著寫入性能方面的優勢。三、3DMark2001SE測試3DMark2001SE是一款老牌的D3D測試軟件,雖然主要是考驗顯卡的能力,但由于內存子系統也是圖形處理中的重要環節,所以在顯卡處理能力很強大時,仍可以看出內存子系統的測試中的些微影響,而GF5900Ultra提供了很大的表現空間。其實,在測試中,兩種時序下所體現的性能差異并不明顯(也許這個測試對內存本來就不是很敏感),甚至可以懷疑是測試的誤差。另外,在測試中我還發現一個現象,2-3-3-5的性能表現不穩定,有時會比2-3-3-8低出2、3百分,這可能是因為短tRAS造成了頁面管理的不確定性(有時可以預充電,有時則要推遲)。相比下,2-3-3-8表現得相對穩定一些。不過,也能看出在頁面增多的情況下,2-3-3-8有領先的趨勢。四、AquaMark3.0測試AquaMark3.0與3DMark2001SE一樣,只不過將測試平臺指向了DX9,從中我們發現其與3DMark2001SE有相似的表現。在4、8頁面時,2-3-3-8沒有什么優勢,在16頁面時后來者居上。五、SandraStandard2004SP1測試這也是著名的測試軟件了,經常能在網上看到網友在比試該軟件所給出的內存帶寬貼圖。與前面的測試所體現出來的差不多,頁面少的時候,2-3-3-5占先,頁面多的時候,2-3-3-8會反超。六、ScienceMark2.0beta測試筆者認為ScienceMark是一個比較優秀的測試軟件,測試的項目也比較多,而其所自帶的內存測試功能也別具特色。ScienceMark的測試結果與前面所體現的不太一樣,頁面少的時候2-3-3-5反而更低,但兩者都從頁面數量的提高中獲益。而且,值得注意的是,在8個頁面時,2-3-3-8的表現最好,不光帶寬領先,而且在延遲方面也有了大的進步。不過,在16頁面時,2-3-3-8的延遲方面就全面落后了。我感覺ScienceMark采用了與眾不同的測試邏輯與方法,但也從側面反映了兩種tRAS設置的一些差異。七、QuakeIIIArena1.32測試QuakeIII就不用我多說了,它的引擎效率極為出眾,至今仍然是一款出色的測試軟件,并且,它對內存的效率也是比較敏感的。是不是有些吃驚,隨著頁面的增加,2-3-3-5與2-3-3-8的性能都有較為明顯的增長。難道是Q3很吃內存。我想應該不是,如果你打開任務管理器,就會發現Q3的內存占用量并不高,512MB已經能滿足要求了。之所以能出現4、5幀的性能增長,原因除了1GB內存本身對WindowsXP更適合外,可能就在于頁面的增多,提高了內存管理效率,進一步的降低了尋址沖突。而2-3-3-8的優勢也在8個頁面時開始發揮出來。在測試中,我們感覺到Q3對默認的HQ(800X600)模式似乎有著優化,它在測試中的表現最為穩定,而且性能提升顯著。Fastest模式由于顯卡基本上是在等內存提供“原料”,所以對內存的效率也非常的敏感。而在HQ(1280X1024)模式下處理的重任則落在了顯卡身上,內存的供給倒是其次了。不過,與3DMark2001SE的表現相似,2-3-3-5的性能表現不是很穩定,有時5次測試結果中最好成績與最差成績會有比較大的差距,這可能也由于較短的行選通周期所帶來的頁面管理不確定性所造成的。八、nForce2平臺下的測試升技的AN7主板可調節的tRAS范圍出奇的大,最高可到15,最低達到1。我們選擇了3和15兩個較為極端的參數進行了對比測試,測試結果與875P平臺相差不多,但優劣并不是很明顯。以下是PCMark04的測試結果。AIDA32的測試只在1GB容量下進行,2-3-3-15的讀/寫速度(MB/s)為2991/1135,2-3-3-3時為2950/1080。在Q3的測試中,1.5GB時,2-3-3-15出現了稍微明顯的領先(約一幀)。1GB時,兩者的表現基本持平。對于這個表現,筆者認為首先可能因為是頁面容量不夠大所至,由于不像875P那樣的雙通道,nForce2平臺測試中的頁面容量只有16KB,我們在P75P平臺上進行的1.5GB單通道(頁面容量降低為16KB)測試也反映出這一點,PCMark04的分值非常接近。另外,這可能也與nForce2的頁面管理策略以及tRAS并不是越大越好有關。通過前面的技術分析,我們知道它是一個相對參數,不是說越大或者越小,性能就肯定會越好,它還要結合具體的情況而定,它應該與頁面數、頁面容量和芯片組的管理能力之間有一個比較好的平衡點。由于時間的關系,我們沒有進行15以下的tRAS的測試,畢竟我們這次不是針對某一芯片組的優化探討,而是從一個總體上講述總的優化原則。但從一些論壇的反映來看,11似乎是一個比較好設置水平,普遍反映它比tRAS=5時的性能好好,有興趣的朋友可以自己試試。九、BL與內存刷新率對性能的影響既然Q3對內存性能如此感冒,我們就在華碩的P4C800主板上進行了其他的實驗——BL與內存刷新率的調整。下圖就是P4C800的BIOS中內存設置的介面,P4P800與之相同。將ConfigureDRAMTimingbySPD設為Disable后,會出現BL(DRAMBurstLength)的調節選項,我們將其調成4,然后再進行Q3測試。測試的結果令人稱奇。我們在2GB的內存容量下,Fastest模式下較原來的BL=8提高了兩幀,HQ與HQ(1280X1024)模式下也都提高了1幀,這是很不錯的成績嘛。看到這里,可能會有人奇怪,不是聽說BL越長越好嗎?怎么會這樣?其實,原因在上文已經講到,當875組成雙通道時,接口的位寬是128bit,合16個字節。而與CPU交換數據的基本單位是64字節,所以雙通道時只需傳輸4個周期即可。因此,大多數情況下BL=4是雙通道Pentium4主板的一個更佳的選擇。BL=8雖然一次能傳送128字節,但如果遇到不需要傳送這么多的時候(小數據傳輸)反而會耽誤時間。不過,在單通道主板或非875這種類型的雙通道主板上,BL=8則是正確的選擇??梢?,BL這個參數,不能像CL那樣可以予以定論??傊?,如果是雙通道Pentium4或AMD64的用戶,當你的日常工作很普通,沒有什么大數據量的讀寫應用,BL=4可能會比較適合,如果經常進行大規模數據處理,可能BL=8反而更好。后來,在進一步的Q3測試中,我們還發現小tRAS似乎更適合采用短BL,大tRAS則與長BL是個好的組合。接著我們在BIOS設置中打開圖中畫紅圈的內存刷新率選項。其中除了AUTO之外,還有15.6μs、7.8μs、64μs、64T幾個選項。不明白意思的人,可能就會想肯定是越小越好,其實不然。目前市場上的內存模組基本都是采用32M×8bit的256Mb芯片,這類芯片的刷新設計都是8K/64ms,也就是說刷新周期是7.8125μs,意味著每隔7.8125μs刷新一行,此時如果趕上要進行操作就只能自認倒霉,所以加大刷新間隔將有助于降低“自認倒霉”的概率。主板BIOS中所提供的就是這一選項,其中的64T,筆者分析T可能是指時鐘周期,如果是DDR-400的話,T就是5ns,64T就是320ns,這是非常短的,而此次測試所使用的內存正常情況下是7.8μs的刷新率,那么我們就可以調高一倍至15.6μs。測試的結果,Q3在Fastest模式下,在BL=4的基礎上再次增加3幀的的成績,HQ與HQ(1280X1024)模式下也都再次提高了1幀。不過,當我們把刷新率再往高調,似乎就沒有什么作用了。需要注意的是,刷新率不宜調得過長,否則可能會引起數據丟失,導致系統的不穩定,15.6μs應試是一個比較好的選擇。另外,P4C800/P4P800中BIOS中的DRAMIdleTimer(空閑計時)對內存性能的影響并不大,建議設為Auto即可。在上文中,我們引入了很多鮮為人知的一些概念。由此我們會發現以往的優化原則基本上存在著很多盲目的成分。目前幾乎所有的內存優化與測試文章(包括國外的一些知名網站)都告訴讀者,只要是和內存沾邊的時序參數,越小越好!但當你看過本文后,又會有何感想呢?顯然,之前的優化原則并不嚴謹也缺乏科學的論證。在經歷了優化實驗后,我們可以試著總結其中的原因,以進一步探討tRAS對內存性能所帶來的影響。前文已經講過,tRAS的本意是想盡量減少行尋址的沖突,降低PMR,但這是從內存芯片本身角度出發的,如果從內存子系統的全局考慮,它可能會減少背靠背操作的機率。下面是筆者根據JEDEC發布的DDRSDRAM官方標準制作的時序示意圖。從中我們可以發現短tRAS在某些情況下性能表現不佳的原因。當BL=8、tRAS=5時,第二個可能出現的讀取命令會因預充電而延后,使得連續突發傳輸無法進行,不能進行背靠背操作當BL=4、tRAS=5時,第三個可能出現的讀取命令會因預充電而延后,使得連續突發傳輸無法進行,只完成了一次背靠背操作當BL=8、tRAS=8時,第二個讀取指令會在預充電之前發出,并使預充電延后,從而完成了一次背靠背操作當BL=4、tRAS=8時,第三個讀取指令會在預充電之前發出,從而完成了兩次背靠背操作當BL=8、tRAS=5時,由于DDRSDRAM在寫入時的時序限制,預充電最早可以出現的時間大大延長當BL=4、tRAS=5時,由于DDRSDRAM在寫入時的時序限制,預充電最早可以出現的時間被延后至第8個時鐘周期當BL=8、tRAS=8時,由于DDRSDRAM在寫入時的時序限制,預充電最早可以出現的時間與Tras=5時一樣當BL=4、tRAS=8時,預充電不會被拖后,而且之前有4個時鐘周期可以接受寫入指令,比tRAS=5多一個,增加了背靠背操作的機會。從以上的分析中,我們能發現一些tRAS對背靠背操作的一些影響(似乎對讀取的影響比對寫入的影響大一點,對于上文的PCMark04的詳細測試數據,也可以發現這一點),但當tRCD越長,留給讀/寫命令至預充電命令之間的時間越短時,短tRAS相對于長tRAS的這方面差距才會慢慢變小。但是,我們不能抹殺短tRAS在降低PMR方面的貢獻,尤其是當可供管理的頁面較少時,短tRAS的優勢就會比較明顯。如果tRAS較長,頁面關得慢,且總頁面數量又少,很可能會出現芯片組周轉不開從而增加PMR的情況。但當芯片組可控制的頁面增多后,長tRAS在背靠背操作方面的優勢就會逐漸顯現,因為通過芯片組的調度,尋址沖突已經不再那么嚴重了。不過,有人可能會發現BIOS中往往不會提供相關的設置選項,或者提供的選項不夠用怎么辦(比如875支持Tras=10,但P4C800和P4P800都只能到8),這可怎么辦呢?其實,除了BIOS可以調節內存的時序參數,有些軟件也可以,如著名的WPCREDIT,就可以更改某些芯片組的內存控制器的寄存器,但是,目前大眾能了解的寄存設置情況只有Intel的芯片。所以,在此我也不打算詳細介紹軟件修改的方法,更何況875/865要想調出相關的設備寄存器還需要先改動其他的寄存器,比較麻煩,而且許多875/865主板是不可改的。至于其他的芯片組,大家可以通過在BIOS改變一些選項,然后用CPU-Z之類的軟件導出寄存器,通過對比能發現一些不同,然后試著用WPCREDIT進行修改,但這么做會非常繁瑣,并且在不知道寄存器的位數類型(8、16還32bit)時,抱著“瞎貓碰死耗子”的心態去嘗試會比較危險。所以,在此我只講講大概的方法,并不會提倡這種人工修改寄存器的方式。至此,我們可以總結出以下幾點內存優化的原則和相關的技巧,供大家參考:1、對內存的優化要從系統整體出發,不要局限于內存模組或內存芯片本身的參數,而忽略了內存子系統的其他要素2、目前的芯片組都具備多頁面管理的能力,所以如果可能,請盡量選擇雙P-Bank的內存模組以增加系統內存的頁面數量。但怎么分辨是單P-Bank還是雙P-Bank呢?就目前市場上的產品而言,256MB的模組基本都是單P-Bank的,雙面但每面只有4顆芯片的也基本上是單P-Bank的,512MB的雙面模組則基本都是雙P-Bank的3、頁面數量的計算公式為:P-Bank數量X4,如果是Pentium4或AMD64的雙通道平臺,則還要除以2。比如兩條單面256MB內存,就是2X4=8個頁面,用在875上組成雙通道就成了4個頁面4、CL、tRCD、tRP為絕對性能參數,在任何平臺下任何時候,都應該是越小越好,調節的優化順序是CL→tRCD→tRP5、當內存頁面數為4時,tRAS設置短一些可能會更好,但最好不要小于5。另外,短tRAS的內存性能相對于長tRAS可能會產生更大的波動性,對時鐘頻率的提高也相對敏感6、當內存頁面數大于或等于8時,tRAS設置長一些會更好7、對于875和865平臺,雙通道時頁面數達到8或者以上時,內存性能更好8、對于非雙通道Pentium4與AMD64平臺,tRAS長短之間的性能差異要縮小9、Pentium4或AMD64的雙通道平臺下,BL=4大多數情況下是更好的選擇,其他情況下BL=8可能是更好的選擇,請根據自己的實際應用有針對的調整10、適當加大內存刷新率可以提高內存的工作效率,但也可能降低內存的穩定性小提示:BIOS中內存相關參數的設置要領AutomaticConfiguration“自動設置”(可能的選項:On/Off或Enable/Disable)可能出現的其他描述為:DRAMAuto、TimingSelectable、TimingConfiguringBySPD等,如果你要手動調整你的內存時序,你應該關閉它,之后會自動出現詳細的時序參數列表。BankInterleaving(可能的選項:Off/Auto/2/4)這里的Bank是指L-Bank,目前的DDRRAM的內存芯片都是由4個L-Bank所組成,為了最大限度減少尋址沖突,提高效率,建議設為4(Auto也可以,它是根據SPD中的L-Bank信息來自動設置的)。BurstLength“突發長度”(可能的選項:4/8)一般而言,如果是AMDAthlonXP或Pentium4單通道平臺,建議設為8,如果是Pentium4或AMD64的雙通道平臺,建議設為4。但具體的情況要視具體的應用而定。CASLatency“列地址選通脈沖潛伏期”(可能的選項:1.5/2/2.5/3)BIOS中可能的其他描述為:tCL、CASLatencyTime、CASTimingDelay。不用多說,能調多短就調多短。CommandRate“首命令延遲”(可能的選項:1/2)這個選項目前已經非常少見,一般還被描述為DRAMCommandRate、CMDRate等。由于目前的DDR內存的尋址,先要進行P-Bank的選擇(通過DIMM上CS片選信號進行),然后才是L-Bank/行激活與列地址的選擇。這個參數的含義就是指在P-Bank選擇完之后多少時間可以發出具體的尋址的L-Bank/行激活命令,單位是時鐘周期。顯然,也是越短越好。但當隨著主板上內存模組的增多,控制芯片組的負載也隨之增加,過短的命令間隔可能會影響穩定性。因此當你的內存插得很多而出現不太穩定的時間,才需要將此參數調長。目前的大部分主板都會自動設置這個參數,而從上文的ScienceMark2.0測試中,大家也能察覺到容量與延遲之間的關系。RASPrechargeTime“行預充電時間”(可能的選項:2/3/4)BIOS中的可能其他描述:tRP、RASPrecharge、Prechargetoactive。通過上文的講述,大家現在應該明白它也是越小越RAS-to-CASDelay“行尋址至列尋址延遲時間”(可能的選項:2/3/4/5)BIOS中的可能其他描述:tRCD、RAStoCASDelay、ActivetoCMD等。數值越小越好。ActivetoPrechargeDelay“行有效至行預充電時間”(可能的選項:1……5/6/7……15)BIOS中的可能其他描述:tRAS、RowActiveTime、PrechargeWaitState、RowActiveDelay、RowPrechargeDelay等。根據上文的分析,這個參數要根據實際情況而定,具體設置思路見上文,并不是說越大或越小就越好。好了,到這里,有關內存優化的探討就告一段落,即使知道了相關的原則與方法,下面就要選選合適的“武器”了,敬請期待本專題的第二部分:《19款內存橫向測試》。接下來,相關的列地址被選中之后,將會觸發數據傳輸,但從存儲單元中輸出到真正出現在內存芯片的I/O接口之間還需要一定的時間(數據觸發本身就有延遲,而且還需要進行信號放大),這段時間就是非常著名的CL(CASLatency,列地址脈沖選通潛伏期)。CL的數值與tRCD一樣,以時鐘周期數表示。如DDR-400,時鐘頻率為200MHz,時鐘周期為5ns,那么CL=2就意味著10ns的潛伏期。不過,CL只是針對讀取操作,對于SDRAM,寫入是沒有潛伏期的,對于DDRSDRAM,寫入潛伏期在0.75至1.25個時針周期之間。圖中標準CL=2,tAC是有關內部信號處理的周期,可以不用關心目前內存的讀寫基本都是連續的,因為與CPU交換的數據量以一個CacheLine(即CPU內Cache的存儲單位)的容量為準,一般為64字節。而現有的P-Bank位寬為8字節,那么就要一次連續傳輸8次,這就涉及到我們也經常能遇到的突發傳輸的概念。突發(Burst)是指在同一行中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸的周期數就是突發長度(BurstLengths,簡稱BL)。在進行突發傳輸時,只要指定起始列地址與突發長度,內存就會依次地自動對后面相應數量的存儲單元進行讀/寫操作而不再需要控制器連續地提供列地址(SDRAM與DDRSDRAM的突發傳輸對列尋址的操作數量有所不同,在此不再細說)。這樣,除了第一筆數據的傳輸需要若干個周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個數據只需一個周期的即可獲得。突發連續讀取模式:只要指定起始列地址與突發長度,后續的尋址與數據的讀取自動進行,而只要控制好兩段突發讀取命令的間隔周期(與BL相同)即可做到連續的突發傳輸。在數據讀取完之后,為了騰出讀出放大器以供同一L-Bank內其他行的尋址并傳輸數據,內存芯片將進行預充電的操作來關閉當前工作行。還是以上面那個L-Bank示意圖為例。當前尋址的存儲單元是B1、R2、C6。如果接下來的尋址命令是B1、R2、C4,則不用預充電,因為讀出放大器正在為這一行服務。但如果地址命令是B1、R4、C4,由于是同一L-Bank的不同行,那么就必須要先把R2關閉,才能對R4尋址。從開始關閉現有的工作行,到可以打開新的工作行之間的間隔就是tRP(RowPrechargecommandPeriod,行預充電有效周期),單位也是時鐘周期數。本圖為一個完整的從行尋址到行關閉的時序圖,圖中所表示的tRCD=2、CL=2、tRP=2從上圖中我們還發現了一個在DDRSDRAM時代經常被人提起,也經常會在BIOS中出現的參數——tRAS。tRAS在內存規范中的解釋是ACTIVEtoPRECHARGEcommand,即從行有效命令發出至預充電命令發出之間的間隔。這也是本專題第一部分中所要重要談到的話題。在深入分析它之前,我們先了解一下哪些因素會影響到內存的性能。在講完SDRAM的基本工作原理和主要操作之后,我們現在要重要分析一下SDRAM的時序與性能之間的關系,它不再局限于芯片本身,而是要從整體的內存系統去分析。這也是廣大DIYer所關心的話題。比如CL值對性能的影響有多大幾乎是每個內存論壇都會有討論,今天我們就詳細探討一下。這里需要強調一點,對于內存系統整體而言,一次內存訪問就是對一個頁(Page)的訪問。由于在P-Bank中,每個芯片的尋址都是一樣的,所以可以將頁訪問“濃縮”等效為對每芯片中指定行的訪問,這樣可能比較好理解。但為了與官方標準統一,在下文中會經常用頁來描述相關的內容,請讀者注意理解??赡芎芏嗳诉€不清楚頁的概念,在這里有必要先講一講。從狹義上講,內存芯片芯片中每個L-Bank中的行就是頁,即一行為一頁。但從廣義上說,頁是從整體角度講的,這個整體就是內存子系統。對于內存模組,與之進行數據交換的單位就是P-Bank的位寬。由于目前還沒有一種內存芯片是64bit位寬的,所以就必須要用多個芯片的位寬來集成一個P-Bank。如我們現在常見的內存芯片是8bit位寬的,那么就需要8顆芯片組成一個P-Bank才能使系統正常工作。而CPU對內存的尋址,一次就是一個P-Bank,P-Bank內的所有芯片同時工作,這樣對P-Bank內所有的芯片的尋址都是相同的。比如尋址指令是B1、C2、R6,那么該P-Bnak內的芯片的工作狀態都是打開B1的L-Bank的第C2行。好了,所謂廣義上的頁就是指P-Bank所包括的芯片內相同L-Bank內的相同工作行的總集合。頁容量對于內存子系統而言是一個很重要的指標。這個參數取決于芯片的容量與位寬的設計。由于與本文的關系不大,就不具體舉例了。早期Intel845芯片組MCH的資料:它可以支持2、4、8、16KB的頁容量總之,我們要知道,由于尋址對同一L-Bank內行地址的單一性,所以一個L-Bank在同一時間只能打開一個頁面,一個具有4個L-Bank的內存芯片,可以打開4個頁面。這樣,以這種芯片組成的P-Bank,也就最后具備了4個頁面,這是目前DDRSDRAM內存模中每個P-Bank的頁面最大值。1、影響性能的主要時序參數在講完內存的基本操作流程與相關的tRP、tRCD、CL、BL之后,我們就開始深入分析這些參數對內存性能的影響。所謂的影響性能是并不是指SDRAM的帶寬,頻率與位寬固定后,帶寬也就不可更改了。但這是理想的情況,在內存的工作周期內,不可能總處于數據傳輸的狀態,因為要有命令、尋址等必要的過程。但這些操作占用的時間越短,內存工作的效率越高,性能也就越好。非數據傳輸時間的主要組成部分就是各種延遲與潛伏期。通過上文的講述,大家應該很明顯看出有三個參數對內存的性能影響至關重要,它們是tRCD、CL和tRP。按照規定,每條正規的內存模組都應該在標識上注明這三個參數值,可見它們對性能的敏感性。以內存最主要的操作——讀取為例。tRCD決定了行尋址(有效)至列尋址(讀/寫命令)之間的間隔,CL決定了列尋址到數據進行真正被讀取所花費的時間,tRP則決定了相同L-Bank中不同工作行轉換的速度?,F在可以想象一下對某一頁面進行讀取時可能遇到的幾種情況(分析寫入操作時不用考慮CL即可):1、要尋址的行與L-Bank是空閑的。也就是說該L-Bank的所有行是關閉的,此時可直接發送行有效命令,數據讀取前的總耗時為tRCD+CL,這種情況我們稱之為頁命中(PH,PageHit)。2、要尋址的行正好是現有的工作行,也就是說要尋址的行已經處于選通有效狀態,此時可直接發送列尋址命令,數據讀取前的總耗時僅為CL,這就是所謂的背靠背(BacktoBack)尋址,我們稱之為頁快速命中(PFH,PageFastHit)或頁直接命中(PDH,PageDirectHit)。3、要尋址的行所在的L-Bank中已經有一個行處于活動狀態(未關閉),這種現象就被稱作尋址沖突,此時就必須要進行預充電來關閉工作行,再對新行發送行有效命令。結果,總耗時就是tRP+tRCD+CL,這種情況我們稱之為頁錯失(PM,PageMiss)。顯然,PFH是最理想的尋址情況,PM則是最糟糕的尋址情況。上述三種情況發生的機率各自簡稱為PHR——PHRate、PFHR——PFHRate、PMR——PMRate。因此,系統設計人員(包括內存與北橋芯片)都盡量想提高PHR與PFHR,同時減少PMR,以達到提高內存工作效率的目的。二、增加PHR的方法顯然,這與預充電管理策略有著直接的關系,目前有兩種方法來盡量提高PHR。自動預充電技術就是其中之一,它自動的在每次行操作之后進行預充電,從而減少了日后對同一L-Bank不同行尋址時發生沖突的可能性。但是,如果要在當前行工作完成后馬上打開同一L-Bank的另一行工作時,仍然存在tRP的延遲。怎么辦?此時就需要L-Bank交錯預充電了。早期非常令人關注的VIA4路交錯式內存控制,就是在一個L-Bank工作時,對另一個L-Bank進行預充電或者尋址(如果要尋址的L-Bank是關閉的)。這樣,預充電與數據的傳輸交錯執行,當訪問下一個L-Bank時,tRP已過,就可以直接進入行有效狀態了,如果配合得理想,那么就可以實現無間隔的L-Bank交錯讀/寫(一般的,交錯操作都會用到自動預充電),這是比PFH更好的情況,但它只出現在后續的數據不在同一頁面的時時候。當時VIA聲稱可以跨P-Bank進行16路內存交錯,并以LRU(LeastRecentlyUsed,近期最少使用)算法進行交錯預充電/尋址管理。L-Bank交錯自動預充電/讀取時序圖:L-Bank0與L-Bank3實現了無間隔交錯讀取,避免了tRP與tRCD對性能的影響,是最理想的狀態三、增加PFHR的方法無論是自動預充電還是交錯工作的方法都無法消除同行(頁面)尋址時tRCD所帶來的延遲。要解決這個問題,就要盡量讓一個工作行在進行預充電前盡可能多的接收工作命令,以達到背靠背的效果,此時就只剩下CL所造成的讀取延遲了(寫入時沒有延遲)。如何做到這一點呢?這就是北橋芯片的責任了?,F在我們就又接觸到tRAS這個參數,在BIOS中所設置的tRAS是指行有效至預充電的最短周期,在內存規范中定義為tRAS(min),過了這個周期后就可以發出預充電指令。對于SDRAM和DDRSDRAM而言,一般是預充電命令至少要在行有效命令5個時鐘周期之后發出,最長間隔視芯片而異(目前的DDRSDRAM標準一般基本在70000ns左右),否則工作行的數據將有丟失的危險。那么這也就意味著一個工作行從有效(選通)開始,可以有70000ns的持續工作時間而不用進行預充電。顯然,只要北橋芯片不發出預充電(包括允許自動預充電)的命令,行打開的狀態就會一直保持。在此期間的對該行的任何讀寫操作也就不會有tRCD的延遲??梢姡绻睒蛐酒谀芡瑫r打開的行(頁)越多,那么PFHR也就越大。需要強調的是,這里的同時打開不是指對多行同時尋址(那是不可能的),而是指多行同時處于選通狀態。我們可以看到一些SDRAM芯片組的資料中會指出可以同時打開多少個頁的指標,這可以說是決定其內存性能的一個重要因素。Intel845芯片組MCH的資料:其中表明它可以支持24個頁面同時處于打開狀態但是,可同時打開的頁數也是有限制的。從SDRAM的尋址原理講,同一L-Bank中不可能有兩個打開的行(讀出放大器只能為一行服務),這就限制了可同時打開的頁面總數。以SDRAM有4個L-Bank,北橋最多支持8個P-Bank(4條DIMM)為例,理論上最多只能有32個頁面能同時處于打開的狀態。而如果只有一個P-Bank,那么就只剩下4個頁面,因為有幾個L-Bank才能有同時打開幾個行而互不干擾。Intel845的MHC雖然可以支持24個打開的頁面,那也是指6個P-Bank的情況下(845MCH只支持6個P-Bank)??梢?45已經將同時打開頁數發揮到了極致。不過,同時打開頁數多了,也對存取策略提出了一定的要求。理論上,要盡量多地使用已打開的頁來保證最短的延遲周期,只有在數據不存在(讀取時)或頁存滿了(寫入時)再考慮打開新的指定頁,這也就是變向的連續讀/寫。而打開新頁時就必須要關閉一個打開的頁,如果此時打開的頁面已是北橋所支持的最大值但還不到理論極限的話(如果已經達到極限,就關閉有沖突的L-Bank內的頁面即可),就需要一個替換策略,一般都是用LRU算法來進行,這與VIA的交錯控制大同小異。回到正題,雖然tRAS代表的是最小的行有效至預充電期限,但一般的,北橋芯片一般都會在這個期限后第一時間發出預充電指令(自動預充電時,會在tRAS之后自動執行預充電命令),只有在與其他操作相沖突時預充電操作才被延后(比如,DDRSDRAM標準中規定,在讀取命令發出后不能立即發出預充電指令)。因此,tRAS的長短一直是內存優化發燒友所爭論的話題,在最近一兩年,由于這個參數在BIOS選項中越來越普及,所以也逐漸被用戶所關注。其實,在SDRAM時代就沒有對這個參數有刻意的設定,在DDRSDRAM的官方組織JEDEC的相關標準中,也沒有把其列為必須標明的性能參數(CL、tRCD、tRP才是),tRAS應該是某些主板廠商炒作出來的,并且在主板說明書上也注明越短越好。其實,縮小tRAS的本意在于,盡量壓縮行打開狀態下的時間,以減少同L-Bank下對其他行進行尋址時的沖突,從內存的本身來講,這是完全正確的做法,符合內存性能優化的原則,但如果放到整體的內存系統中,伴隨著主板芯片組內存頁面控制管理能力的提升,這種做法可能就不見得是完全正確的,在下文中我們會繼續分析tRAS的不同長短設置對內存性能所帶來的影響。四、BL長度對性能的影響從讀/寫之間的中斷操作我們又引出了BL(突發長度)對性能影響的話題。首先,BL的長短與其應用的領域有著很大關系,下表就是目前三個主要的內存應用領域所使用的BL,這是廠商們經過多年的實踐總結出來的。BL與相應的工作領域BL越長,對于連續的大數據量傳輸很有好處,但是對零散的數據,BL太長反而會造成總線周期的浪費,雖然能通過一些命令來進行終止,便也占用了控制資源。以P-Bank位寬64bit為例,BL=4時,一個突發操作能傳輸32字節的數據,為了滿足CacheLine的容量需求,還得多發一次,如果是BL=8,一次就可以滿足需要,不用再次發出讀取指令。而對于2KB的數據,BL=4的設置意味著要每隔4個周期發送新的列地址,并重復63次。而對于BL=256,一次突發就可完成,并且不需要中途再進行控制,但如果僅傳輸64字節,就需要額外的命令來中止BL=256的傳輸。而額外的命令越多,越占用內存子系統的控制資源,從而降低總體的控制效率。從這可以看出BL對性能的影響因素,這也是為什么PC上的內存子系統的BL一般為4或8的原因。但是不是8比4好,或者4比8好呢?并不能統一而論,這在下文會分析到。到此,大家應該有一些優化的眉目了吧。我們可以先做一下界定,任何情況下,只要數值越小或越大(單一方向),內存的性能會越好的參數為絕對參數,而數值越小或越大對性能的影響不固定的參數則為相對參數。那么,CL、tRCD、tRP顯然就是絕對參數,任何情況下減少它們的周期絕對不會錯。而且從上文的分析可以發現,從重要性來論,優先優化的順序也是CL→tRCD→tRP,因為CL的遇到的機會最多,tRCD其次,tRP如果頁面交錯管理的好,大多不受影響。而BL、tRAS等則可以算是相對參數。也正是由于這些相對參數的存在,才使得內存優化不再那么簡單。好了,上面已經講完基本的相關參數與原理,下面就結合實際來看看具體如何設置。目前,以Intel和NVIDIA為首的Intel與AMD平臺都進入了雙通道時代,這也是今后的主要潮流。所以我們這次也是以雙方的雙通道平臺為試驗平臺,分別是875P和nForce2。鑒于AMD64離我們還比較遠,因此我們沒有在AMD64的雙通道平臺上進行測試。首先要講明,Intel865/875的雙通道與nForce2的雙通道不是一碼事。兩者目前還沒有可比性。簡而言之,865/875只用一個128bit位寬的內存控制器控制兩個通道,這就意味著發給兩個通道的尋址指令是一模一樣的,從而也要求組成雙通道的內存模組的容量、位寬設計完全一樣,因為不同位寬的芯片,尋址指令也不一樣,而一個內存控制器是無法發出兩套指令的。nForce2則是兩個獨立的控制器分別控制兩個不同的通道,這樣每個通道的內存模組的架構就可以不同,因為指令也是獨立的。但是nForce2在雙通道帶寬合成方面會有比較大的麻煩,畢竟內存地址的轉換是相當復雜的。所以,nForce2與865/875代表了兩種設計。而這樣的設計體現出來的內存配置也有了變化。在下文中,我們以875P平臺為主nForce2平臺為輔,來進行優化試驗。先讓我們看看875P內存頁面控制方面的一些特點:Intel875P的頁面控制特性,可以發現雙通道與單通道時有所不同目前的875P主板都是4條DIMM的設計,可以最大安裝4條雙P-Bank的內存模組,也就是說一共是8個P-Bank,合32個頁面。但從上圖中可以發現,當為雙通道時,最多可打開的頁面數減半,變成16個,但頁面容量則翻了一倍。這就是意味著,組成雙通道在兩條內存模組在控制器的眼中就是一條128bit位寬的模組,由于尋址指令相同,所以兩個通道內的相同P-Bank里內存芯片在同一時間的工作行相同,這樣便使可打開的頁面數減少,但頁容量增加。相反,如果是單通道,則與845主板一樣,簡單的累加各內存模組的頁面就可以了,頁面數量可以達到最多,但容量不會成倍增加。不要小看這點區別,頁面的多少與容量關系到內存控制器能力的發揮。比如交錯控制,如果有32個頁面可供選擇,絕對比4個頁面時輕松一些,尋址沖突可以進一步減少,反過來,頁面容量的提高,可以允許更長時間的背靠背式的尋址,這也對提高內存效率提供了幫助。關鍵就在于控制器怎么協調好頁面數量與頁面容量之間的關系。從中可以發現,頁面容量固定不變,頁面數則成倍增加。在下面的優化實驗中,我們主要考驗頁面數以及tRAS這個參數的不同設定在不同內存配置下對性能的影響。此外,我們還會討論BL、刷新周期等BIOS可能出現的調整參數對性能的影響。這里需要指出,本專題中(包括后面的內存測試),數字A-B-C-D分別對應的參數是:CL-tRCD-tRP-tRAS。首先們進行的是在875P上的全面測試實驗,此時我們將在BIOS默認的參數基礎上進行調校,PAT與HT均為打開狀態,BL=8,刷新周期設為Auto,時序方面分別設定為2-3-3-5和2-3-3-8。一、PCMark04測試PCMark04具有一個比較專業且全面的內存測試功能,但普通的內存測試項目只有16個,本次我們通過高級設置調出全部的44項測試選項。通過上面的成績可以發現,2-3-3-8一直比2-3-3-5的性能要好,并且隨著頁面數量的增加,這種優勢也更大。我們選擇2-3-3-8得分最高的1GB配置下的成績詳細列出來,大家可以從中看出一些特點。從中可以看出,2-3-3-8取得了大多數測試的勝利,雖然有些測試成績差異很小,應該屬于測試誤差范圍之內,但我們可以發現這種領先呈“塊狀”分布,所以也應該有一定的代表性,尤其是“塊拷貝(讀后寫)”,2-3-3-8的性能明顯占優。而且除了隨機訪問性能以外,2-3-3-8在大容量數據傳輸方面都要好于2-3-3-5。二、ADIA323.93測試AIDIA323.93是一款兼系統資源查看與簡單測試的軟件,不過其內存帶寬測試功能還是經常被人所用到。ADIA323.93的測試相對簡單一些,從中可以發現2-3-3-5在少頁面時讀取性能要占優級,但到了16個頁面時,被2-3-3-8反超,同時2-3-3-8一直保持著寫入性能方面的優勢。三、3DMark2001SE測試3DMark2001SE是一款老牌的D3D測試軟件,雖然主要是考驗顯卡的能力,但由于內存子系統也是圖形處理中的重要環節,所以在顯卡處理能力很強大時,仍可以看出內存子系統的測試中的些微影響,而GF5900Ultra提供了很大的表現空間。其實,在測試中,兩種時序下所體現的性能差異并不明顯(也許這個測試對內存本來就不是很敏感),甚至可以懷疑是測試的誤差。另外,在測試中我還發現一個現象,2-3-3-5的性能表現不穩定,有時會比2-3-3-8低出2、3百分,這可能是因為短tRAS造成了頁面管理的不確定性(有時可以預充電,有時則要推遲)。相比下,2-3-3-8表現得相對穩定一些。不過,也能看出在頁面增多的情況下,2-3-3-8有領先的趨勢。四、AquaMark3.0測試AquaMark3.0與3DMark2001SE一樣,只不過將測試平臺指向了DX9,從中我們發現其與3DMark2001SE有相似的表現。在4、8頁面時,2-3-3-8沒有什么優勢,在16頁面時后來者居上。五、SandraStandard2004SP1測試這也是著名的測試軟件了,經常能在網上看到網友在比試該軟件所給出的內存帶寬貼圖。與前面的測試所體現出來的差不多,頁面少的時候,2-3-3-5占先,頁面多的時候,2-3-3-8會反超。六、ScienceMark2.0beta測試筆者認為ScienceMark是一個比較優秀的測試軟件,測試的項目也比較多,而其所自帶的內存測試功能也別具特色。ScienceMark的測試結果與前面所體現的不太一樣,頁面少的時候2-3-3-5反而更低,但兩者都從頁面數量的提高中獲益。而且,值得注意的是,在8個頁面時,2-3-3-8的表現最好,不光帶寬領先,而且在延遲方面也有了大的進步。不過,在16頁面時,2-3-3-8的延遲方面就全面落后了。我感覺ScienceMark采用了與眾不同的測試邏輯與方法,但也從側面反映了兩種tRAS設置的一些差異。七、QuakeIIIArena1.32測試QuakeIII就不用我多說了,它的引擎效率極為出眾,至今仍然是一款出色的測試軟件,并且,它對內存的效率也是比較敏感的。是不是有些吃驚,隨著頁面的增加,2-3-3-5與2-3-3-8的性能都有較為明顯的增長。難道是Q3很吃內存。我想應該不是,如果你打開任務管理器,就會發現Q3的內存占用量并不高,512MB已經能滿足要求了。之所以能出現4、5幀的性能增長,原因除了1GB內存本身對WindowsXP更適合外,可能就在于頁面的增多,提高了內存管理效率,進一步的降低了尋址沖突。而2-3-3-8的優勢也在8個頁面時開始發揮出來。在測試中,我們感覺到Q3對默認的HQ(800X600)模式似乎有著優化,它在測試中的表現最為穩定,而且性能提升顯著。Fastest模式由于顯卡基本上是在等內存提供“原料”,所以對內存的效率也非常的敏感。而在HQ(1280X1024)模式下處理的重任則落在了顯卡身上,內存的供給倒是其次了。不過,與3DMark2001SE的表現相似,2-3-3-5的性能表現不是很穩定,有時5次測試結果中最好成績與最差成績會有比較大的差距,這可能也由于較短的行選通周期所帶來的頁面管理不確定性所造成的。八、nForce2平臺下的測試升技的AN7主板可調節的tRAS范圍出奇的大,最高可到15,最低達到1。我們選擇了3和15兩個較為極端的參數進行了對比測試,測試結果與875P平臺相差不多,但優劣并不是很明顯。以下是PCMark04的測試結果。AIDA32的測試只在1GB容量下進行,2-3-3-15的讀/寫速度(MB/s)為2991/1135,2-3-3-3時為2950/1080。在Q3的測試中,1.5GB時,2-3-3-15出現了稍微明顯的領先(約一幀)。1GB時,兩者的表現基本持平。對于這個表現,筆者認為首先可能因為是頁面容量不夠大所至,由于不像875P那樣的雙通道,nForce2平臺測試中的頁面容量只有16KB,我們在P75P平臺上進行的1.5GB單通道(頁面容量降低為16KB)測試也反映出這一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 意識流技法在現當代文學中的運用試題及答案
- 2025年普通邏輯考試的復習注意事項試題及答案
- 康復醫療服務行業市場細分與2025年區域發展分析報告
- 2025年網絡直播行業自律規范與內容監管策略優化報告
- 2025年在線教育平臺用戶增長與留存策略教育平臺用戶滿意度提升研究報告
- 探索數字化技術在提升醫療質量中的應用-以口腔醫學為例
- 如何打造員工喜愛的內部社交平臺-以永輝超市為例
- 確保Msoffice考試合格的試題及答案
- 實操技巧與Photoshop試題及答案
- 可穿戴設備在養老護理中的創新應用研究
- 夜場水煙合作協議書
- 河南省青桐鳴大聯考普通高中2024-2025學年高三考前適應性考試地理試題及答案
- 管道勞務分包協議書
- 2025年中考理化生實驗操作考試考務培訓大綱
- 拆遷服務方案
- 2025-2030中國鋰電子電池行業市場深度調研及前景趨勢與投資研究報告
- 天津市部分區小學2025年小升初數學自主招生備考卷含解析
- 2021年高考地理試卷(全國甲卷)(空白卷)
- (二模)2024~2025學年度蘇錫常鎮四市高三教學情況調研(二)數學試卷(含答案詳解)
- 2024初級社會工作者職業資格筆試題庫附答案
- 江蘇省南京市建鄴區2023-2024學年八年級下學期期末考試物理試題【含答案解析】
評論
0/150
提交評論