1、內存基礎
RDRAM(Rambus)、DDR SDRAM甚至是EDO RAM在本質上講是一樣的。RDRAM、DDR RAM、SDRAM、EDO RAM都屬于DRAM(Dynamic RAM),即動態內存。所有的DRAM基本單位都是由一個晶體管和一個電容器組成。
上圖只是DRAM一個基本單位的結構示意圖:電容器的狀態決定了這個DRAM單位的邏輯狀態是1還是0,一個電容器可以存儲一定量的電子或者是電荷。一個充電的電容器在數字電子中被認為是邏輯上的1,而“空”的電容器則是0。電容器不能持久的保持儲存的電荷,所以內存需要不斷定時刷新,才能保持暫存的數據。電容器可以由電流來充電—當然這個電流是有一定限制的,否則會把電容擊穿。同時電容的充放電需要一定的時間,雖然對于內存基本單位中的電容這個時間很短,只有大約0.2-0.18微秒,但是這個期間內存是不能執行存取操作的。
內存至少要每64ms刷新一次,這也就意味著內存有1%的時間要用來刷新。內存自動刷新的關鍵在于當對內存單元進行讀取操作時保持內存的內容不變—所以DRAM單元每次讀取操作之后都要進行刷新:執行一次回寫操作,因為讀取操作也會破壞內存中的電荷,也就是說對于內存中存儲的數據是具有破壞性的。所以內存不但要每64ms刷新一次,每次讀操作之后也要刷新一次。這樣就增加了存取操作的周期,當然潛伏期也就越長。
SRAM,靜態(Static)RAM不存在刷新的問題,一個SRAM基本單元包括4個晶體管和2個電阻。它不是通過利用電容充放電的特性來存儲數據,而是利用設置晶體管的狀態來決定邏輯狀態—同CPU中的邏輯狀態一樣。讀取操作對于SRAM不是破壞性的,所以SRAM不存在刷新的問題。
2、SDRAM的結構和功能
內存最基本的單位是內存“細胞”—也就是我們前面展示給大家DRAM基本單元示意圖所示的部分,對這個部分通稱為DRAM基本單元。每個DRAM基本單元代表一個“位”—Bit(也就是一個比特),并且有一個由列地址和行地址定義的唯一地址。8個比特組成一個字節,它可代表256種組合(即2的八次冪),字節是內存中最小的可尋址單元。
很多DRAM基本單元連接到同一個列線(Row line)和同一個行線(Column line),組成了一個矩陣結構,這個矩陣結構就是一個Bank。大部分的SDRAM芯片由4個Bank組成,而SDRAM DIMM(Dual Inline Memory Module雙列直插式)可能由8或者16個芯片組成。SDRAM DIMM有14條地址線和64bit數據線。
每一個內存bank都有一個傳感放大器(sense ampplifier),用來放大從基本單元讀出(或者寫入)內容時電荷。傳感放大器根據從芯片組發送來的行地址讀出相應的數據,這個讀出過程需要一定的時間這就是RAS到CAS的延遲,簡稱TRCD。不同質量的SDRAM的TRCD需要2或者3個周期。現在已經有了正確的行地址,不過還不知道確切的到那個基本單元去獲得信息。CAS延遲時間就是內存用于取得正確的列地址所需要的時間。
注:Latency(延遲)是一種等待的時間,這與內存芯片本身有關。那個C或CAS指的是Column Address Strobe(行地址控制器)。我們不妨將內存想成儲存數據的數組、或是表格。為了要確定每個數據的位置,我們會將這些位置以行與列的方式來編號。如此一來,正如所想見的,除了CAS(行地址控制器)以外,還有RAS(列地址控制器)。
內存基本單元就把信號發送到DIMM的輸出緩存,這樣芯片組就可以讀取它們了。現在我們有了前8個字節的內容,以及在傳感放大器中有了正確的行地址,等到下面的24個字節的過程就簡單了。這時就由內部計數器負責把下一個列地址的內存基本單元的內容發送到DIMM的輸出緩存當中。這樣每個時鐘周期都有8個字節傳送到輸出緩存中,這種模式就叫做“突發模式”。
主內存的延遲時間(也就是所謂的潛伏期,從FSB到DRAM)等于下列時間的綜合:FSB同主板芯片組之間的延遲時間(+/- 1個時鐘周期),芯片組同DRAM之間的延遲時間(+/- 1個時鐘周期),RAS到CAS延遲時間:RCD(2-3 個時鐘周期,用于決定正確的行地址),CAS延遲時間 (2-3 時鐘周期,用于決定正確的列地址),另外還需要1個時鐘周期來傳送數據,數據從DRAM輸出緩存通過芯片組到CPU的延遲時間(+/- 2個時鐘周期)。
可以看出,一個真正的PC100的SDRAM(CAS=2)的內存取得最前八個字節的時間是9個時鐘周期,而另外24個字節只是需要3個時鐘周期,這樣PC100的SDRAM取得32個字節的數據只是需要12個時鐘周期。對于同樣的情況,也就是當二級緩存未命中的時候,CPU從內存取得數據所需要的延遲時間需要用如下方法計算:CPU倍頻×內存延遲時間=CPU延遲時間。如果500MHZ(5×100MHz)的CPU需要5×9個延遲周期。也就是說如果二級緩存沒有命中,CPU需要45個時鐘中期才能得到新的數據。
究竟是什么決定DRAM速度?SDRAM是多bank結構,芯片組可以保持一部分曾經訪問過的Bank的行地址,也就是說保持一部分已經被打開的“頁面”。如果需要訪問的數據在同一列中,那么芯片組不需要等待傳感器進行變換—這種情況就叫做頁面命中。
這時RAS到CAS延遲時間就是0個時鐘周期,只需要經過CAS延遲就能在內存緩沖調入正確數據。所以,頁面命中就意味著我們只需要等待列地址的確立,就能得到需要的數據了。不過有的情況下,芯片組請求的內存頁面不是處于打開的狀態,這就叫做頁面失效。在這種情況下,RAS到CAS延遲時間將是2或者3時鐘周期(根據內存的品質不同而不同)。這種情況就是前面我們討論過的情形。
如果芯片組已經保持了某一個Bank的某一個行地址,也就是在某一個bank已經打開了一個頁面,而請求的數據是位于同一個bank的不同行地址的數據,這種情況是最糟糕的。這樣就意味著傳感放大器需要首先回寫舊的行地址,然后再轉換新的行地址。回寫舊的行地址所占用的時間叫做“預轉換時間”(Precharge time),當遇到這種情況時,是最壞的情況。
這么說可能有點復雜,我們換個簡單點的說法:為了要讀出或寫入某筆數據,內存控制芯片會先傳送列的地址,接下來RAS信號就會被激活。然而,在存取行的數據前,還需要幾個執行周期才行,這就是所謂的RAS-to-CAS延遲時間。同樣的,在CAS信號被執行后,也同樣需要幾個周期。使用標 準PC133的SDRAM大約是2到3個周期;而DDR RAM則是4到5個周期。在DDR中,真正的CAS延遲時間則是2到2.5個執行周期。
RAS-to-CAS的時間則視技術而定,大約是5到7個周期,這也是延遲的基本因素。你也可以說與CL2.5(DDR)或CL3(SDRAM)比起來,CL2內存更具優勢。理論上,這是事實,但還有其它的因素會影響這個數據,例如,新一代處理器的高速緩存較有效率,這表示處理器比較少直接從內存讀取數據。再者,列的數據會比較常被存取,所以RAS-to-CAS的發生機率也大,讀取的時間也會變多。最后,有時會發生同時讀取大量數據的情形,在這種情形下,相鄰的內存數據會一次被讀取出來,CAS延遲時間只會發生一次。
三、內存的發展歷程
起初,電腦所使用的內存是一塊塊的IC,我們必須把它們焊接到主機板上才能正常使用,一旦某一塊內存IC壞了,必須焊下來才能更換,這實在是太費勁了。后來,電腦設計人員發明了模塊化的條裝內存,每一條上集成了多塊內存IC,相應地,在主板上設計了內存插槽,這樣,內存條就可隨意拆卸了,從此,內存的維修和擴充都變得非常方便。
在80286主板時代的時候,內存條為30pin、256kb,而且必須是由9片顆粒(其中8片為數據位,1片為校驗位)組成一個bank(組)。到了486時代內存主要是30PIN SIMM FPM和72PIN SIMM FPM二分天下。FPM RAM也稱“快頁模式內存”,是用在486及奔騰級計算機的普通內存,為72線,5V電壓,帶寬為32bit,速度基本都在60ns以上。
EDO(EXTENDED DATA OUT)RAM也稱“擴展數據輸出內存”與FPM RAM有基本相同的應用范圍,有72線和168線之分,5V電壓,帶寬32bit,速度基本都是40ns以上。由于奔騰及其以上級別的CPU數據總線寬度都是64bit甚至更高,所以EDO RAM與FPM RAM都必須成對使用。
隨著時代的發展,Intel發布了Celeron系列處理器以及相關的主板芯片組,內存進入了了SDRAM時代,SD(Synchronous Dynamic)RAM也稱“同步動態內存”,都是168線、帶寬64bit、3.3V電壓,其工作原理是將RAM與CPU以相同的時鐘頻率進行控制,使RAM和CPU的外頻同步,徹底取消等待時間。
伴隨著Intel在推出PC100后,由于技術的發展,PC100內存的800MB/S帶寬已經不能滿足需求,而PC133的帶寬提高并不大(1064MB/S),同樣不能滿足日后的發展需求。此時,Intel為了達到獨占市場的目的,與Rambus聯合在PC市場推廣Rambus DRAM。
Rambus DRAM是Rambus公司最早提出的一種內存規格。它采用了一種和SDRAM不同的架構—新一代高速簡單內存架構,基于一種類RISC(Reduced Instruction Set Computing,精簡指令集計算機)理論,這個理論可以減少數據的復雜性,使得整個系統性能得到提高。
Rambus使用400MHz的16位總線,在一個時鐘周期內,可以在上升沿和下降沿同時傳輸數據,這樣它的實際速度就為400MHz×2=800MHz,理論帶寬為(16位×2×400MHz/8)1.6GB/s,相當于PC100的兩倍。另外,Rambus也可以儲存9位字節,額外的一位是屬于保留位,可能以后會作為ECC(Error Checking and Correction,錯誤檢查修正)校驗。
由于RDRAM的工藝復雜,價格過高,而且Rambus公司還要收取相應的版權收費,再加上鬧得沸沸揚揚的i820回收事件。其它廠家出于市場考慮,根據Rambus雙向脈沖的特點,提出了DDR SDRAM,也就是我們現在最主流的內存條。
最初DDR內存并未得到Intel的支持,只有少部分使用Athlon處理器的芯片組才支持,但是隨著市場的擴大,Intel也漸漸的按捺不住,這種焦急在威盛電子推出P4X266芯片組后終于爆發,推出了Intel使用DDR內存的第一種P4芯片組—i845D。嚴格說來,直到這個時候,Intel還沒有完全拋棄支持RDRAM內存的i850芯片組。
DDR SDRAM(Dual Date Rate SDRAM)簡稱DDR,也就是“雙倍速率SDRAM“的意思。DDR SDRAM也可以說是傳統SDRAM的升級版本,最重要的改變是在數據傳輸界面上。
DDR在時鐘信號上升沿與下降沿各傳輸一次數據,這使得DDR的數據傳輸速度為傳統SDRAM的兩倍。由于僅多采用了下降緣信號,因此并不會造成能耗增加。至于定址與控制信號則與傳統SDRAM相同,僅在時鐘上升緣傳輸。
它另一個明顯的改變就是增加了一個雙向的數據控制接腳。當系統中某個控制器發出一個寫入命令時,一個DQS信號便會由內存控制器送出至內存。而傳統SDRAM的DQS接腳則用來在寫入數據時做數據遮罩同步傳輸,不會有某個人數據傳輸較快,而有些數據傳輸較慢的情況。 隨著Intel新一代芯片組—i915/925的發布,我們又迎來了內存的又一個“春天”,DDR II。
DDR-II內存將是現有DDR-I內存的換代產品,它們的工作時鐘預計將為400MHz或更高。從JEDEC組織者闡述的DDR-II標準來看,針對PC等市場的DDR-II內存將擁有400-、533、667MHz等不同的時鐘頻率。
高端的DDR-II內存將擁有800-、1000MHz兩種頻率。DDR-II內存將采用200-、220-、240-針腳的FBGA封裝形式。最初的DDR-II內存將采用0.13微米的生產工藝,內存顆粒的電壓為1.8V,容量密度為512MB。
DDR-II將采用和DDR-I內存一樣的指令,但是新技術將使DDR-II內存擁有4到8路脈沖的寬度。DDR-II將融入CAS、OCD、ODT等新性能指標和中斷指令。DDR-II標準還提供了4位、8位512MB內存1KB的尋址設置,以及16位512MB內存2KB的尋址設置。DDR-II內存標準還包括了4位預取數(pre-fetch of 4 bits)性能,DDR-I技術的預取數位只有2位。
結語:
縱觀以上的內存歷史,我們看到從最早只能達到30ns、256KB的內存條到SDRAM一統天下,延續到現今內存主流DDR I,而現如今DDR II也浮出水面,還有尚未塵埃落定的QBM內存,時代的發展促進著計算機技術的不斷進步,處在這個技術飛速發展的年代,未來也許還有更多的精彩。