瀏覽單個文章
Artx1
Master Member
 

加入日期: Jun 2002
您的住址: 耗電量頗高的地方.
文章: 1,959
我們來引點文章吧.

引用:
這裡就先談談 JEDEC SDRAM 一些「基本觀念」。其實無論是 SDR SDRAM、DDR SDRAM 以及 DDR II,基本架構都是不變的。

首先,就是 "prefetch" 這個觀念。在過去的 DRAM 設計中,prefetch 為何會被導入?主因就是希望搭配 prefetch 以及 multiple internal bank,可以允許讓 DRAM cell 以比外部為低的時脈運作,在輸出的時候透過多組 output buffer進行 interleave 以達成較內部DRAM array 數倍的時脈輸出資料;換句話說,電力消耗和雜訊都可以因此減少,這個因素在實作 burst 存取時更是重要。

那麼 SDRAM 是怎樣的情況?在 JEDEC 的定義中,有一個很有名的 "2n rule",它包含了兩個要素:(這裡必須注意一點,如果 SDRAM 本身可以進行 back-to-back CAS access,2n rule 本身就沒有重要性,pipelined address lockahead 這裡暫時不提。)

第一、2bit 的 prefetch buffer。

第二、column address to column address 的 cycle 數為 2 cycle,如果讀寫的command 是在奇數或偶數 cycle 被發出,那麼新的 column address 就在其對應的奇偶數 cycle 出現。就某種意義而言,這就代表 JEDEC SDRAM 的 DRAM array 是以外部 I/O 的一半時脈在運作的。

DDR SDRAM 又是怎麼一回事呢?很簡單,把 SDRAM 中原本 2 cycle 的 CAS-to-CAS縮成 1 cycle、也就是讓 DRAM array 跑 "full speed",不就得了?當然,實際上電路的修改是省不了的,最起碼除了必須以 differential clock 去取代原本的 single clock 外,也必須增加額外的 delay lock loop 去對齊資料輸出與輸入 DRAM 的時脈。

如果 prefetch 的寬度越寬,越可以確保越快速的未中斷資料流,這對於「隱藏」因為precharge、RAS/CAS 等所造成的 latency、達成高度的運作管線化非常的有幫助。

但是為何我們不一口氣做到 8n、16n 甚至 32n 呢?prefetch buffer 寬度的增加意味著更多數量的 output register,這些都會增加晶片的面積;另一個隱而不現的就是 bank 數目的增加,也會降低晶片的電路密度,也等於增加晶片的面積。另外,如果碰到內部資料發生 thrashing 所造成的隨機定址,也會增加額外的耗電。

這裡就可以明白為何早期的 DRAM 多半都是以 2bit prefetch 為主,這樣子也就可以了解 DDR II 的原理了:它只是將 2n rule 改成 4n rule 罷了;同理可證,DDR II 起碼需要四組 internal bank (JEDEC 官方規格是固定在 4 bank) 以及 4bit 的 prefetch buffer。

除此之外,DDR II 還有一些地方和 DDR 不太相同,除了 command bus 是 DRAM array 的兩倍時脈外,為了有效提高 command bus 的利用率,中斷類型的 command 皆被取消、read latency 僅比 write latency 多出一個 cycle、posted CAS 等等,這些多少可以提升整體有效頻寬比例。不過就整體來看,DDR II 普遍在 CAS latency 遠長於 SDR/DDR SDRAM,這部份落後後者應該是跑不掉的,雖然應該有很多技巧可以利用。

為什麼 NV30 的性能不太可能大幅領先 R300?這點絕對是很關鍵性的因素。Samsung 的 K4N26323AE-GC 在 500MHz 下竟然有著驚人的 7 "clock" CAS latency,理論頻寬也比 R300 小一截。也許 NV30 本身可以倚賴「效率」來彌補這段差距,但是就算足以扯平,可以領先的幅度恐怕也不會太大,這裡更不提 ATi 如果拉高 R300 時脈、在沒有使用 FSAA 後的結果。

(by Waterball)
舊 2003-06-13, 10:27 PM #66
回應時引用此文章
Artx1離線中