DDR內(nèi)存的終極優(yōu)化(轉(zhuǎn)載)_第1頁(yè)
DDR內(nèi)存的終極優(yōu)化(轉(zhuǎn)載)_第2頁(yè)
DDR內(nèi)存的終極優(yōu)化(轉(zhuǎn)載)_第3頁(yè)
DDR內(nèi)存的終極優(yōu)化(轉(zhuǎn)載)_第4頁(yè)
DDR內(nèi)存的終極優(yōu)化(轉(zhuǎn)載)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論