查看單個文章
舊 2005-12-10, 03:40 PM   #6 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

1、影響效能的主要時序參數


在講完記憶體的基本操作流程與相關的 tRP、tRCD、CL、BL 之後,我們就開始深入分析這些參數對記憶體效能的影響。所謂的影響效能是並不是指 SDRAM 的帶寬,頻率與位寬固定後,帶寬也就不可更改了。但這是理想的情況,在記憶體的工作週期內,不可能總處於資料傳輸的狀態,因為要有指令、尋址等必要的程序。但這些操作佔用的時間越短,記憶體工作的效率越高,效能也就越好。
非資料傳輸時間的主要組成部分就是各種延遲與潛伏期。

通過上文的講述,大家應該很明顯看出有三個參數對記憶體的效能影響至關重要,它們是 tRCD、CL 和 tRP。按照規定,每條正規的記憶體模組都應該在標幟上註明這三個參數值,可見它們對效能的敏感性。
以記憶體最主要的操作——讀取為例。tRCD 決定了行尋址(有效)至列尋址(讀 / 寫指令)之間的間隔 ,CL 決定了列尋址到資料進行真正被讀取所花費的時間,tRP 則決定了相同 L-Bank 中不同工作行轉換的速度。現在可以想像一下對某一頁面進行讀取時可能遇到的幾種情況(分析寫入操作時不用考慮 CL 即可):
1、要尋址的行與 L-Bank 是空閒的。也就是說該 L-Bank 的所有行是關閉的,此時可直接傳送行有效指令,資料讀取前的總耗時為 tRCD+CL,這種情況我們稱之為頁命中 (PH,Page Hit)。

2、要尋址的行正好是現有的工作行,也就是說要尋址的行已經處於選通有效狀態,此時可直接傳送列尋址指令,資料讀取前的總耗時僅為 CL,這就是所謂的背靠背 (Back to Back)尋址,我們稱之為頁快速命中(PFH,Page Fast Hit)或頁直接命中(PDH,Page Direct Hit)。

3、要尋址的行所在的 L-Bank 中已經有一個行處於活動狀態(未關閉),這種現象就被稱作尋址衝突,此時就必須要進行預充電來關閉工作行,再對新行傳送行有效指令。結果,總耗時就是 tRP+tRCD+CL,這種情況我們稱之為頁錯失 (PM,Page Miss)。
顯然,PFH 是最理想的尋址情況,PM 則是最糟糕的尋址情況。



上述三種情況發生的機率各自簡稱為 PHR —— PH Rate、PFHR —— PFH Rate、PMR —— PM Rate。因此,系統設計人員(包括記憶體與北橋晶片)都盡量想提高 PHR 與 PFHR,同時減少 PMR,以達到提高記憶體工作效率的目的。

2、增加 PHR 的方法

顯然,這與預充電管理原則有著直接的關係,目前有兩種方法來盡量提高 PHR。

自動預充電技術就是其中之一,它自動的在每次行操作之後進行預充電,從而減少了日後對同一 L-Bank 不同行尋址時發生衝突的可能性。但是,如果要在當前行工作完成後馬上開啟同一 L-Bank 的另一行工作時,仍然存在 tRP 的延遲。怎麼辦? 此時就需要 L-Bank 交錯預充電了。
早期非常令人關注的VIA 4路交錯式記憶體控制,就是在一個L-Bank工作時,對另一個L-Bank進行預充電或者尋址(如果要尋址的L-Bank是關閉的)。


這樣,預充電與資料的傳輸交錯執行,當訪問下一個L-Bank時,tRP已過,就可以直接進入行有效狀態了,如果配合得理想,那麼就可以實現無間隔的L-Bank交錯讀/寫(一般的,交錯操作都會用到自動預充電),這是比PFH更好的情況,但它只出現在後續的資料不在同一頁面的時時候。當時VIA聲稱可以跨P-Bank進行16路記憶體交錯,並以LRU(Least Recently Used,近期最少使用)算法進行 交錯預充電/尋址管理。

http://photocdn.sohu.com/20050524/Img240073107.GIF
L-Bank 交錯自動預充電 / 讀取時序圖: L-Bank 0 與 L-Bank 3 實現了無間隔交錯讀取,避免了 tRP與tRCD對效能的影響 ,是最理想的狀態
3、增加 PFHR 的方法
無論是自動預充電還是交錯工作的方法都無法消除同行(頁面)尋址時tRCD 所帶來的延遲。要解決這個問題,就要盡量讓一個工作行在進行預充電前盡可能多的接收工作指令,以達到背靠背的效果,此時就只剩下 CL 所造成的讀取延遲了(寫入時沒有延遲)。
如何做到這一點呢?這就是北橋晶片的責任了。



現在我們就又接觸到 tRAS 這個參數,在 BIOS 中所設定的 tRAS 是指行有效至預充電的最短週期,在記憶體規範中定義為 tRAS(min),過了這個週期後就可以發出預充電指令。
對於 SDRAM 和 DDR SDRAM 而言,一般是預充電指令至少要在行有效指令 5 個時鍾週期之後發出,最長間隔視晶片而異(目前的 DDR SDRAM 標準一般基本在 70000ns 左右),否則工作行的資料將有丟失掉的危險。那麼這也就意味著一個工作行從有效(選通)開始,可以有 70000ns 的持續工作時間而不用進行預充電。顯然,只要北橋晶片不發出預充電(包括允許自動預充電)的指令,行開啟的狀態就會一直保持。在此期間的對該行的任何讀寫操作也就不會有 tRCD 的延遲。可見,如果北橋晶片在能同時開啟的行(頁)越多,那麼 PFHR 也就越大。需要強調的是,這裡的同時開啟不是指對多行同時尋址(那是不可能的),而是指多行同時處於選通狀態。我們可以看到一些 SDRAM 晶片組的資料中會指出可以同時開啟多少個頁的指標,這可以說是決定其記憶體效能的一個重要因素。
但是,可同時開啟的頁數也是有限制的。從 SDRAM 的尋址原理講,同一L-Bank 中不可能有兩個開啟的行(讀出放大器只能為一行服務),這就限制了可同時開啟的頁面總數。


以 SDRAM 有 4 個 L-Bank,北橋最多支持 8 個 P-Bank(4 條 DIMM)為例,理論上最多只能有 32 個頁面能同時處於開啟的狀態。而如果只有一個 P-Bank,那麼就只剩下 4 個頁面,因為有幾個 L-Bank 才能有同時開啟幾個行而互不干擾 。Intel 845 的 MHC 雖然可以支持 24 個開啟的頁面,那也是指 6 個 P-Bank 的情況下(845MCH 只支持 6 個 P-Bank)。可見 845 已經將同時開啟頁數發揮到了極致。
不過,同時開啟頁數多了,也對存取原則提出了一定的要求。


理論上,要盡量多地使用已開啟的頁來保證最短的延遲週期,只有在資料不存在(讀取時)或頁存滿了(寫入時)再考慮開啟新的指定頁,這也就是變向的連續讀 / 寫。而開啟新頁時就必須要關閉一個開啟的頁,如果此時開啟的頁面已是北橋所支持的最大值但還不到理論極限的話 (如果已經達到極限,就關閉有衝突的L-Bank內的頁面即可),就需要一個取代原則,一般都是用 LRU 算法來進行,這與 VIA 的交錯控制大同小異。

回到正題,雖然 tRAS 代表的是最小的行有效至預充電期限,但一般的,北橋晶片一般都會在這個期限後第一時間發出預充電指令(自動預充電時,會在tRAS之後自動執行預充電指令),只有在與其他操作相衝突時預充電操作才被延後(比如,DDR SDRAM 標準中規定,在讀取指令發出後不能立即發出預充電指令)。因此,tRAS 的長短一直是記憶體最佳化發燒友所爭論的話題,在最近一兩年,由於這個參數在 BIOS 選項中越來越普及,所以也逐漸被用戶所關注。其實,在 SDRAM 時代就沒有對這個參數有刻意的設定,在 DDR SDRAM 的官方組織 JEDEC 的相關標準中,也沒有把其列為必須標明的效能參數 (CL、tRCD、tRP 才是),tRAS 應該是某些主機板廠商炒作出來的,並且在主機板說明書上也註明越短越好。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次