




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入了解內存(一) /sqlserver/t592911005.htmlDRAM和SRAM基礎知識 RAM(Random Access Memory)隨機存取存儲器對於系統性能的影響是每個PC用戶都非常清楚的,所以很多朋友趁著現下的內存價格很低紛紛擴容了內存,希望借此來得到更高的性能。 不過現下市場是多種內存類型並存的,SDRAM、DDR SDRAM、RDRAM等等,如果你使用的還是非常古老的系統,可能還需要EDO DRAM、FP DRAM(塊頁)等現下不是很常見的內存。對於很多用戶或者有一定經驗的高級用戶來說,他可能能說出Athlon XP和Pentium 4的主要不同點,能知道GeForce3和Radeon之間的區別,但是如果真的讓他說出各種內存之間的實現機理的主要差別或者解釋CAS 2和CAS 3之間的主要差別的話,就可能不是非常的清楚了。畢竟CPU和顯卡之類的東西更容易引起我們的興趣。我個人在這方面的知識也是比較片面甚至是一知半解的,所以一直在收集這個方面的資料。在網上有很多很好的資源,其中Ars technica、Aceshardware、simpletech等網站的資料對於我系統的了解這個方面的知識有很大的幫助。本文主要以Ars technica的文章為基礎編寫而成,為大家比較詳細的介紹RAM方面的知識。雖然RAM的類型非常的多,但是這些內存在實現的機理方面還是具有很多相同的地方,所以本文的將會分為幾個部分進行介紹,第一部分主要介紹SRAM和異步DRAM(asynchronous DRAM),在以後的章節中會對於實現機理更加複雜的FP、EDO和SDRAM進行介紹,當然還會包括RDRAM和SGRAM等等。對於其中同你的觀點相悖的地方,歡迎大家一起進行技術方面的探討。 存儲原理 為了便於不同層次的讀者都能基本的理解本文,所以我先來介紹一下很多用戶都知道的東西。RAM主要的作用就是存儲代碼和數據供CPU在需要的時候調用。但是這些數據並不是像用袋子盛米那么簡單,更像是圖書館中用有格子的書架存放書籍一樣,不但要放進去還要能夠在需要的時候準確的調用出來,雖然都是書但是每本書是不同的。對於RAM等存儲器來說也是一樣的,雖然存儲的都是代表0和1的代碼,但是不同的組合就是不同的數據。讓我們重新回到書和書架上來,如果有一個書架上有10行和10列格子(每行和每列都有0-9的編號),有100本書要存放在裡面,那么我們使用一個行的編號一個列的編號就能確定某一本書的位置。如果已知這本書的編號87,那么我們首先鎖定第8行,然後找到第7列就能準確的找到這本書了。在RAM存儲器中也是利用了相似的原理現下讓我們回到RAM存儲器上,對於RAM存儲器而言數據匯流排是用來傳入數據或者傳出數據的。因為存儲器中的存儲空間是如果前面提到的存放圖書的書架一樣透過一定的規則定義的,所以我們可以透過這個規則來把數據存放到存儲器上相應的位置,而進行這種定位的工作就要依靠位址匯流排來實現了。對於CPU來說,RAM就象是一條長長的有很多空格的細線,每個空格都有一個唯一的位址與之相對應。如果CPU想要從RAM中調用數據,它首先需要給位址匯流排發送位址數據定位要存取的數據,然後等待若干個時鐘週期之后,數據匯流排就會把數據傳輸給CPU。下面的示意圖可以幫助你很好的理解這個過程。上圖中的小園點代表RAM中的存儲空間,每一個都有一個唯一的位址線同它相連。當位址解碼器接收到位址匯流排送來的位址數據之后,它會根據這個數據定位CPU想要調用的數據所在的位置,然後數據匯流排就會把其中的數據傳送到CPU。上面所列舉的例子中CPU在一行數據中每次知識存取一個位元組的數據,但是在現實世界中是不同的,通常CPU每次需要調用32bit或者是64bit的數據(這是根據不同計算機系統的數據匯流排的位寬所決定的)。如果數據匯流排是64bit的話,CPU就會在一個時間中存取8個位元組的數據,因為每次還是存取1個位元組的數據,64bit匯流排將不會顯示出來任何的優勢,women工作的效率將會降低很多。 從“線”到“矩陣” 如果RAM對於CPU來說僅僅是一條“線”的話,還不能體現實際的營運情況。因為如果實際情況真的是這樣的話,在實際製造晶片的時候,會有很多實際的困難,特別是在需要設計大容量的RAM的時候。所以,一種更好的能夠降低成本的方法是讓存儲訊息的“空格”排列為很多行每個“空格”對應一個bit存儲的位置。這樣,如果要存儲1024bits的數據,那么你只要使用32x32的矩陣就能夠達到這個目的了。很明顯,一個32x32的矩陣比一個1024bit的行設備更緊湊,實現起來也更加容易。請看下圖知道了RAM的基本架構是什麼樣子的,我們就下面談談當存儲位元組的過程是怎樣的上面的示意圖顯示的也僅僅是最簡單狀態下的情況,也就是當內存條上僅僅只有一個RAM晶片的情況。對於X86處理器,它透過位址匯流排發出一個具有22位二進製數字的位址編碼其中11位是行位址,另外11位是列位址,這是透過RAM位址界面進行分離的。行位址解碼器(row decoder)將會首先確定行位址,然後列位址解碼器(column decoder)將會確定列位址,這樣就能確定唯一的存儲數據的位置,然後該數據就會透過RAM數據界面將數據傳到數據匯流排。另外,需要注意的是,RAM內部存儲訊息的矩陣並不是一個正方形的,也就是行和列的數目不是相同的行的數目比列的數目少。(後面我們在討論DRAM的過程中會講到為什麼會這樣) 上面的示意圖粗略的概括了一個基本的SRAM晶片是如何工作的。SRAM是“static RAM(靜態隨機存儲器)”的簡稱,之所以這樣命名是因為當數據被存入其中后不會消失(同DRAM動態隨機存儲器是不同,DRAM必須在一定的時間內不停的刷新才能保持其中存儲的數據)。一個SRAM單元通常由4-6只晶體管組成,當這個SRAM單元被賦予0或者1的狀態之后,它會保持這個狀態直到下次被賦予新的狀態或者斷電之后才會更改或者消失。SRAM的速度相對比較快,而且比較省電,但是存儲1bit的訊息需要4-6只晶體管製造成本太高了(DRAM只要1只晶體管就可以實現)。 RAM晶片 前面的介紹都相對比較簡單、抽象。下面我們會結合實際的RAM晶片進行介紹。在談到這個問題的時候,我們會涉及到一個比較重要的技術封裝。你應該聽說過諸如30線SIMMS、72線SIMMS和168線DIMMS或者RIMMs其中的一個或者幾個術語吧。如果要解釋這些術語之間的不同,就應該了解RAM的封裝技術。 SRAM晶片早期的SRAM晶片採用了20線雙列直插(DIPDual Inline Package)封裝技術,它們之所以具有這么多的針腳,是因為它們必須 上圖顯示的是SRAM晶片,但是並不是下面示意圖中的SRAM晶片 下面的是一個16K x 1-bit SRAM晶片的針腳功能示意圖 . A0-A13是位址輸入信號引腳CS是晶片選擇引腳在一個實際的系統中,一定具有很多片SRAM晶片,所以需要選擇究竟從那一片SRAM晶片中寫入或者讀取數據WE是寫入啟用引腳(如上表,在CS、WE上面的線我沒有寫入,表示低電平有效或者是邏輯0時有效)當SRAM得到一個位址之后,它需要知道進行什麼操作,究竟是寫入還是讀取,WE就是告訴SRAM要寫入數據Vcc是供電引腳Din是數據輸入引腳Dout是數據輸出引腳GND是接地引腳Output Enable(OE)有的SRAM晶片中也有這個引腳,但是上面的圖中並沒有。這個引腳同WE引腳的功能是相對的,它是讓SRAM知道要進行讀取操作而不是寫入操作。從Dout引腳讀取1bit數據需要以下的步驟 1)透過位址匯流排把要讀取的bit的位址傳送到相應的讀取位址引腳(這個時候/WE引腳應該沒有激活,所以SRAM知道它不應該執行寫入操作)2)激活/CS選擇該SRAM晶片3)激活/OE引腳讓SRAM知道是讀取操作第三步之后,要讀取的數據就會從DOut引腳傳輸到數據匯流排。怎么過程非常的簡單吧?同樣,寫入1bit數據的過程也是非常的簡單的。 1)透過位址匯流排確定要寫入訊息的位置(確定/OE引腳沒有被激活)2)透過數據匯流排將要寫入的數據傳輸到Dout引腳3)激活/CS引腳選擇SRAM晶片4)激活/WE引腳通知SRAM知道要盡心寫入操作經過上面的四個步驟之后,需要寫入的數據就已經放在了需要寫入的地方。 DRAM晶片現下我們知道了在一個簡單的SRAM晶片中進行讀寫操作的步驟了了,然後我們來了解一下普通的DRAM晶片的工作情況。DRAM相對於SRAM來說更加複雜,因為在DRAM存儲數據的過程中需要對於存儲的訊息不停的刷新,這也是它們之間最大的不同。下面讓我們看看DRAM晶片的針腳的作用。最早、最簡單也是最重要的一款DRAM晶片是Intel在1979年發布的2188,這款晶片是16Kx1 DRAM 18線DIP封裝。“16K x 1”的部分意思告訴我們這款晶片可以存儲16384個bit數據,在同一個時期可以同時進行1bit的讀取或者寫入操作。(很抱歉找不到這款晶片的實物圖片,只好自己簡單的畫了一個示意圖) 上面的示意圖可以看出,DRAM和SRAM之間有著明顯的不同。首先你會看到位址引腳從14根變為7根,那么這顆16K DRAM是如何完成同16K SRAM一樣的工作的呢?答案很簡單,DRAM透過DRAM界面把位址一分為二,然後利用兩個連續的時鐘週期傳輸位址數據。這樣就達到了使用一半的針腳實現同SGRAM同樣的功能的目的,這種技術被稱為多路技術(multiplexing)。那么為什麼好減少位址引腳呢?這樣做有什麼好處呢?前面我們曾經介紹過,存儲1bit的數據SRAM需要4-6個晶體管但是DRAM僅僅需要1個晶體管,那么這樣同樣容量的SRAM的體積比DRAM大至少4倍。這樣就意味著你沒有足夠空間安放同樣數量的引腳(因為針腳並沒有因此減少4倍)。當然為了安裝同樣數量的針腳,也可以把晶片的體積加大,但是這樣就提升晶片的生產成本和功耗,所以減少針腳數目也是必要的,對於現下的大容量DRAM晶片,多路尋址技術已經是必不可少的了。當然多路尋址技術也使得讀寫的過程更加複雜了,這樣在設計的時候不僅僅DRAM晶片更加複雜了,DRAM界面也要更加複雜,在我們介紹DRAM讀寫過程之前,請大家看一張DRAM晶片內部架構示意圖在上面的示意圖中,你可以看到在DRAM架構中相對於SRAM多了兩個部分由/RAS (Row Address Strobe行位址脈波選通器)引腳控制的行位址門閂線路(Row Address Latch)和由/CAS(Column Address Strobe列位址脈波選通器)引腳控制的列位址門閂線路(Column Address Latch)。 1)透過位址匯流排將行位址傳輸到位址引腳2)/RAS引腳被激活,這樣行位址被傳送到行位址門閂線路中3)行位址解碼器根據接收到的數據選擇相應的行 4)/WE引腳被確定不被激活,所以DRAM知道它不會進行寫入操作5)列位址透過位址匯流排傳輸到位址引腳6)/CAS引腳被激活,這樣列位址被傳送到行位址門閂線路中7)/CAS引腳同樣還具有/OE引腳的功能,所以這個時候Dout引腳知道需要向外輸出數據。 8) /RAS和/CAS都不被激活,這樣就可以進行下一個週期的數據操作了。其實DRAM的寫入的過程和讀取過程是基本一樣的,所以如果你真的理解了上面的過程就能知道寫入過程了,所以這裡我就不贅述了。(只要把第4步改為/WE引腳被激活就可以了)。我們已經提到過,DRAM同SRAM最大的不同就是不能比較長久的保持數據,這項特性使得這種存儲介質對於我們幾乎沒有任何的作用。但是DRAM設計師利用刷新的技術使得DRAM稱為了現下對於我們最有用處的存儲介質。這裡我僅僅簡要的提及一下DRAM的刷新技術,因為在後面介紹FP、EDO等類型的內存的時候,你會發現它們具體的實現過程都是不同的。 DRAM內僅僅能保持其內存儲的電荷非常短暫的時間,所以它需要在其內的電荷消失之前就進行刷新直到下次寫入數據或者計算機斷電才停止。每次讀寫操作都能刷新DRAM內的電荷,所以DRAM就被設計為有規律的讀取DRAM內的內容。這樣做有下面幾個好處。第一,僅僅使用/RAS激活每一行就可以達到全部刷新的目的;第二,DRAM控制單元來控制刷新,這樣可以防止刷新操作干擾有規律的讀寫操作。在文章的開始,我曾經說過一般行的數目比列的數據少。現下我可以告訴為什麼會這樣了,因為行越少用戶刷新的時間就會越少。 OK時間不早了,今天就先介紹到這裡,希望這裡介紹的DRAM和SRAM的晶片的基本工作原理對你有些幫助。深入了解內存(二)在前面的一節文章中我們對於DRAM和SRAM的基本工作原理做了一些簡單的介紹,在我們所列舉的例子中都是介紹了最基本的存儲單元的工作模式,所以應該不難理解,看到很多朋友對於這個方面的東西很感興趣,今天我就繼續介紹關於RAM(Random Access Memory)的部分知識。 理解這個部分知識,是更好的了解以後我們介紹各種RAM的實際工作情況的基礎。在SRAM或者DRAM的每一個基本存儲單位(也就是上一節仲介紹用來存儲1bit訊息的存儲單位)都只能存儲0或者1這樣的數據,而且在上一節中IDT6167和Intel 2188晶片都僅僅只有Din(數據輸入)和Dout(數據輸出界面),而CPU存取數據的時候是按照位元組(也就是8bit)來存儲的,那么RAM究竟如何滿足CPU的這樣的要求呢? 首先為了能存儲1位元組(8 bit)的訊息,就需要8個1bit RAM基本存儲單元堆疊在一起,這也意味著這8顆晶片被賦予了同樣的位址。下面的示意圖可以幫助你比較形象的了解這一點(下圖所示的圖例中僅僅畫了4個存儲單元,大家當成8個來看就可以了)。通常這8顆1bit晶片是透過位址匯流排和數據匯流排在PCB(印刷電路板)上連接而成的,對於CPU來說它就是一顆8bit的RAM晶片,而不再是獨立的8個1 bit晶片。在上圖所示的位址匯流排位寬是22bit,這樣這個位址匯流排所能控制的存儲模塊的容量應該是222=4194304bit,也就是4MB的容量;數據匯流排的位寬是8bit,就是透過剛才提到的8個1bit的基本存儲單元的Dout並聯在一起實現的這樣也能夠滿足CPU的要求了。(對於這種存儲顆粒我們稱之為4194304 x 8模塊或者4Mx8,注意這裡的“M”不是“MByte”而是“Mbit”)。為了舉例說明,我們用一條TI(德儀公司)出品的TM4100GAD8 SIMM內存為例來說明,因為這種內存的構造相對比較簡單,便於大家理解。TM4100GAD8基於4M x 8模塊製造,容量4MB,採用30線SIMM封裝。如果前面我說的東西你看明白了,就應該知道這條內存採用了4Mx1 DRAM顆粒。下面的數據是我在TI官方網站上找到的(目前很少有公司的網站還提供自己以前產品的數據) 在上面的示意圖中,A0 A10是位址輸入引腳/CAS:行位址脈波選通器引腳DQ1 DQ8數據輸入/數據輸出引腳NC空信號引腳/RAS列位址脈波選通器引腳VSS接地引腳/W寫入啟用引腳VCC 5V供電引腳 上面的電路示意圖應該能夠讓我們更加清楚的理解這個問題,TM4100GAD8由8片4096x1bit晶片組成,VCC和VSS為所有的晶片提供5v的電壓。每個晶片都具有/RAS、/CAS、/W引腳同內存相應的引腳連通。每個晶片都具有不同的數據輸出/輸出界面。這樣我們應該就能夠知道RAM是如何滿足CPU存取數據的需要的了。 關於Bank的問題 前面我們講述的都是8bit的內存,現下這種東西我們基本上都接觸不到了,更常用的是32bit、64bit或者128bit。由於前面我們已經講到了4Mx1bit模塊實現bit輸入輸出的方法,所以我們很容易想到我們把足夠多的晶片放在一個模塊中就可以了。不過在實際應用中,僅僅這樣做還是不行的,這裡就需要引入bank的概念,bank是由多個模塊組成的。請看下面的示意圖上面的示意圖顯示的是由4組8bit模塊組成的一個bank,如果構成模塊的是4194304 x 1晶片,那么每個模塊的架構應該是4194304x8(4MB),這樣4個模塊就能組成一個位寬為32bit的bank,容量為16MB。當存儲數據的時候,第一模塊存儲位元組1,第二個模塊存儲位元組2,第三個模塊存儲位元組3,第四個模塊存儲位元組4,第五個模塊存儲位元組5如此循環知道達到內存所能達到的最高容量。文章讀到這裡,我們應該能知道,當我們的系統使用這種類型的內存時,可以透過兩種模式來增加這種類型內存的容量。第一種就是透過增加每一個獨立模塊的容量來增加bank的容量,另外一個方法就是增加bank的數目。這樣如果讓這種類型的內存的容量提升到32MB,可以把每個模塊的容量從4MB提升到8MB或者增加bank的數目。前面我們用來舉例的這種30線的SIMM一般是用在486級別的電腦上的,而現下的Pentium級別的電腦所使用的內存同這個是不同的。而截止到現下,我的這篇文章還沒有涉及到我們目前所使用的內存,不過不要著急,相信充分的理解我現下所談論的東西將有助於你理解以後的內容。不過這裡可以先告訴大家的是Pentium級別的內存和486系統的內存之間的主要差異在於它們的RAM晶片。 SIMM和DIMM 前面我們既然提到了30線的DIMM,那么我們就來介紹一下SIMM以及與之相對應的DIMM。其實SIMM和DIMM都是內存條的封裝形式的一種(這裡說的不是晶片的封裝形式),因為每片內存顆粒無法直接同計算機進行連接並且通訊的,並且它們單顆顆粒的容量有限而且涉及到前面提及的數據傳輸位寬等方面的原因,所以內存廠商需要透過一定的形式把它們組織到一起,這樣就產生了不同的內存封裝形式。 首先我們來介紹一下SIMM,如下圖(上面一條是30線DIMM內存,下面一條是72線DIMM內存) 在DIMM內存中的顆粒採用了DIP(Dual Inline Package雙列直插封裝)封裝,如上圖中黑色的晶片。早期的內存顆粒是直接焊接在主板上面的,這樣如果一片內存出現故障,那么整個主板都要報廢了。后來在主板上出現了內存顆粒插槽,這樣就可以更換內存顆粒了,但是熱膨脹的緣故,每使用一段時間你就需要打開機箱把內存顆粒按回插槽。除了這些原因,更重要的是我們前面提到的數據匯流排位寬等方面的原因使得工程師著手設計了SIMM(Single Inline Memory Module)封裝和DIMM(Double Inline Memory Module)的內存,它們透過主板上的內存插槽同主板進行通訊。這樣的設計解決了原來所有的問題。SIMM內存根據引腳分為30線和72線,目前我們都很少用到了。 SIMM根據內存顆粒分佈可以分為單面內存和雙面內存,一般的容量為1、4、16MB的SIMM內存都是單面的,更大的容量的SIMM內存是雙面的。在我們本文中所列舉的TM4100GAD8就是一款30線的內存,它每次僅能傳輸8bit的數據從前面的示意圖中我們也知道這30線引腳中有11線是位址引線,8線是數據引線,還有其它的控制引線,對於當時的封裝工藝這已經是比較不錯了。比較細心的讀者會問為什麼還有三條空信號引腳?因為這種內存的數據輸出匯流排位寬只有8bit,所以即使將空信號引腳轉換為位址匯流排提升尋址範圍,但是並沒有足夠多的引腳用於數據的輸出。72線的SIMM內存的容量不但可以更大,而且數據匯流排的位寬也得到了極大的提升。一條72線SIMM內存的數據匯流排位寬是32bit,它的數據輸出能力大大提升了。 DIMM是目前我們使用的內存的主要封裝形式,比如SDRAM、DDR SDRAM、RDRAM,其中SDRAM具有168線引腳並且提供了64bit數據尋址能力。DIMM的工作電壓一般是3.3v或者5v,並且分為unbuffered和buffered兩種。上圖上面的內存就是168線的SDRAM,而下面的內存是72線的SIMM。需要指出的是在SIMM和DIMM內存之間不僅僅是引腳數目的不同,另外在電氣特性、封裝特點上都有明顯的差別,特別是它們的晶片之間的差別相當的大。因為按照原來內存製造方法,製造這種內存的時候是不需要把64個晶片組裝在一起構成一個64bit的模塊的,得益於今年來生產工藝的提升和改進,現下的高密度DRAM晶片可以具有不止一個Din和Dout信號引腳,並且可以根據不同的需要在DRAM晶片上製造4、8、16、32或者64條數據引腳。如果一個DRAM晶片具有8個數據引腳,那么這個基本儲存單元一次就可以輸出8bit的數據,而不像是在原來的TM4100GAD8 SIMM晶片中每次僅僅能輸出1bit數據了。這樣的話,如果我們需要製造一個同TM4100GAD8一樣容量的內存,那么我們可以不使用前面所使用的4M x 1bit晶片,而是採用1M x 8bit晶片,這樣僅僅需要4片晶片就可以得到一個容量為4MB,位寬為32bit的模組。晶片數目減少最直接的好處當然是可以減少功耗了,當然也簡化了生產過程。下面的圖只是為了說明這個問題而製作的,它展示的是一種72線的4MB SIMM內存,採用了4片1Mx8bit DRAM晶片。但是至於是不是真的有這樣的一款產品我也不能確定,因為目前為之我找不到實際的產品相關資料,所以這個只是為了幫助大家理解這個問題,不要對於是否有這樣的產品而斤斤計較。這樣一來,只要4片採用具有8bit位寬的內存顆粒就可以達到同樣的容量,當然這樣的內存條工作原理在理解的過程中比原來略微複雜一點。我們看到在上面的4Mbit8bit晶片中,依然還是有10條位址匯流排引腳,但是/CAS和/RAS引腳卻從原來的1條增加到4條。當然數據輸入輸出引腳線數目是32條。其實TI公司的TM124BBJ32F和TM248CBJ32F前面的我所列舉的例子是比較相似的 這兩款內存的容量均為4MB,位寬為32bit,當然也屬於DRAM了。TM124BBJ32F內存為單面而TM248CBJ32F雙面的兩種模式,不過其中單面TM124BBJ32F有些奇怪,在它的內存條上只有兩顆內存晶片,這樣每顆內存晶片應該是2MBx16bit。另外,雙面的TM248CBJ32F由4片1Mx8bit DRAM晶片組成。 上面的示意圖和表格是TM124BBJ32F和TM248CBJ32F的示意圖和表格,我們可以很容易的理解它們的工作模式。對於TM124BBJ32F來說因為是2MBx16bit的顆粒,所以當RAS0引腳為低電平時,DQ0-DQ15輸出/輸入引腳有效,所以它可以同時傳送一個16bit數據;讓RAS1引腳為低電平時,DQ16-DQ31輸出/輸入引腳有效,也可以一次傳送一個16bit數據。對於TM248CBJ32F來說因為是1MBx8bit的顆粒,所以情況同前面是不同的,當RAS0引腳為低電平時,DQ0-DQ7輸出/輸入引腳有效,所以它可以同時傳送一個8bit數據;讓RAS1引腳為低電平時,DQ6-DQ15輸出/輸入引腳有效,也可以一次傳送一個8bit數據;讓RAS2引腳為低電平時,DQ16-DQ23輸出/輸入引腳有效,也可以一次傳送一個8bit數據;讓RAS3引腳為低電平時,DQ24-DQ31輸出/輸入引腳有效,也可以一次傳送一個8bit數據(注意這裡雖然都是控制輸出8bit或者16bit位址,但是它們之間分別代表的含義是不同的)。當然在確定位址的時候,還是需要CAS控制電路配合的。今天我們對於32bit的內存做了進一步的了解。這些東西雖然對於現下的用戶似乎有些不太實際,但是對於進一步了解現下的內存還是有相當的幫助的。深入了解內存(三)DRAM讀取過程這個系列的文章已經寫了兩篇了,但是我們幾乎還沒有談到我們都關心的一些問題,比如 CAS-2和CAS-3之間的區別什麼的。現下我們對於DRAM的基礎知識已經有了一個基本的了解,下面的文章就是給大家介紹一些現代的內存技術。 DRAM讀取過程 其實我們在以前的文章中已經討論過DRAM的讀寫過程了,不過對於內存比較了解的朋友都會發現下前面的介紹中僅僅是對於內存的大致讀取過程進行了簡述,很多重要的細節都沒有詳細的討論。所以我們在文章的這一節的內容中對於這個過程進行詳細的討論。下面就是異步內存的讀取過程的步驟,因為異步DRAM的營運並不需要同處理器同頻,它的時序信號控制、尋址等操作基本上說是獨立控制的,也就是由內存晶片本身所控制,所以在討論起來比較簡單,我們僅僅需要考慮DRAM本身的情況就可以了(這個系列的文章也是本著循序漸進的原則讓大家更好的理解內存的工作原理的) 1) 行位址透過位址匯流排傳輸到位址引腳2) /RAS引腳被激活,列位址就會被放入行位址選通電路( Row Address Latch:在文章的前面部分我們把它翻譯為列位址門閂電路)3) 行位址解碼器( Row Address Decoder)選擇正確的行然後送到傳感放大器( sense amps)4) /WE引腳此時不被激活,所以 DRAM知道它們不是進行寫操作5) 列位址透過位址匯流排傳輸到位址引腳6) /CAS引腳被激活,列位址就可以被送到列位址選通器( Column Address Latch)7) /CAS引腳也被當作輸出啟動信號( Output Enable),因為一旦 /CAS信號被放到傳感放大器,就因為這時需要的數據已經找到,所以Dout針腳開始有效,數據可以從內存中傳輸到系統了8) /RAS和 /CAS引腳停止激活,等待下一個讀取命令在內存的讀取過程中,需要我們考慮的有兩個主要類型的延遲。第一類的是連續的DRAM讀操作之間的延遲。內存不可能在進行完一個讀取操作之后就立刻進行第兩個讀取操作,因為DRAM的讀取操作包括電容器的充電和放電另外還包括把信號傳送出去的時間,所以在兩個讀取操作中間至少留出足夠的時間讓讓內存進行這些方面的操作。在連續的兩次讀取操作之間,第一種類型的延遲包括 /RAS和 /CAS預充電延遲時間。在 /RAS被激活並且失活之后,你必須給它足夠的時間為下次激活做好準備。下圖可以幫助你更好了解這個過程。 /CAS預充電的過程失一樣的,你只要把上圖種的“RAS”換成“CAS”就可以了。從前面我們介紹的DRAM讀取過程的8個步驟中,我們可以了解到 /RAS和 /CAS預充電過程是依次進行的,所以我們在一定的時間裡只能進行有限次數的讀取操作。特別是在第8個步驟中,當一次讀取操作週期結束之后,我們必須讓 /RAS和/CAS引腳都失活。實際上,在你讓它們失活之后,必須等待預充電過程結束之后才能開始下一個操作(或者還是讀取操作、或者是寫入操作、或者是刷新操作)。當然在兩次讀取操作之間的預充電時間不是限制DRAM速度的唯一原素。第二種延遲類型是叫做內部讀取延遲( inside-the-read)。這種延遲同同兩次讀取操作之間的延遲非常的相似,但是不是由停止 /RAS和/CAS激活而產生的,而是由於要激活 /RAS和/CAS而產生的。比如,行存取時間(tRAC)它就是在你激活RAS和數據最終出現下數據匯流排之間的時間。同樣的列存取時間 (tCAC)就是激活 /CAS引腳和數據最終出現下數據匯流排上之間的時間。下面的示意圖可以幫助你更好的理解這兩種類型的延遲上面的圖僅僅是一個示意圖,下面的時序圖可以幫助你了解不同的延遲時間發生的順序 現下讓我們花一點時間結合前面介紹的讀取過程來研究一下上面的這張示意圖 1) 首先看上圖第一行,在預充電期間行位址透過位址匯流排傳輸到位址引腳,這個期間RAS未被激活,在第三行Address BUS中我們看到數據在這個期間正在行位址匯流排上,這個期間CAS也處於預充電狀態;2) 依然看上圖第一行, /RAS引腳被激活(RAS Active,灰色的部分),列位址就會被放入行位址選通電路(第三行Address Bus中所示),這個期間CAS依然處於預充電狀態;在/RAS被激活的同時,tRAC(行存取時間)開始如上圖最後一行Data Bus所示。3) 在/RAS被激活以後,行位址解碼器( Row Address Decoder)選擇正確的行然後送到傳感放大器( sense amps)4) 在這個期間/WE引腳一直處於不激活的狀態,所以 DRAM知道它們不是進行寫操作這個狀態將一直持續到開始執行寫操作才結束5) 列位址透過位址匯流排傳輸到位址引腳6) /CAS引腳被激活(如上圖第三行),列位址就可以被送到列位址選通器( Column Address Latch),這個時候tCAC(列位址訪問時間)開始計時7) 在/CAS處於激活狀態期間的末尾,/RAS停止激活也就大約在這個時間附近找到的數據被傳送到數據匯流排進行數據傳送(如圖data Bus),在數據匯流排進行數據傳輸的過程中,位址匯流排是處於空閒狀態的,它並不接受新的數據在數據開始創送的同時tRAC和tCAC都結束了。8)就在數據在數據匯流排上傳輸期間,/CAS引腳也被停止激活就是得到一個高電平,從而開始進入到預充電期。RAS和CAS會同時處於預充電期,直到下次/RAS被激活進入到下一個讀取操作的週期。相信經過這樣的說明大家應該了解DRAM的讀取過程了。在這個基礎上我們就可以開始認識SIMM或者DIMM的潛伏期( latency)問題了。首先我們來繼續澄清一下幾個概念。 DRAM潛伏期類型分為兩種訪問時間( access time)和週期時間( cycle time)。其中訪問時間( access time)同前面我們談論的第二種類型的延遲有關,也就是同讀取週期中的延遲時間;而週期時間(cycle time)同我們前面談論的第一種類型的延遲有關,也就是受到兩個讀取週期之間的延遲時間影響。當然潛伏期的時間很短,都是用納秒來衡量的。對於異步 DRAM晶片,訪問時間就是從行位址到達行位址引腳的時間起截至到數據被傳輸到數據引腳的時間段。這樣,訪問時間為60納秒的 DIMM意味著當我們下達讀取數據的命令后,位址數據被送到位址引腳之后要等待60納米才能達到數據輸出引腳。週期時間,從字面上理解就是從兩個連續讀取操作之間的時間間隔。如何儘可能的減小DRAM的週期時間和訪問時間是我們這篇文章后半部分將要詳細的討論的問題。我們平時說到DRAM內存是多少多少納秒,這裡指的一般是訪問時間(我們也會對於為什麼採取這樣的標稱方法進行解釋)。我們都知道訪問時間越短,意味著內存工作頻率會越高。當然內存工作頻率越高,意味著可以適應外頻更高的處理器。如果處理器的時鐘週期較短,而DRAM的潛伏期較長,處理器在很多時間裡都是等到DRAM傳送數據。因此當DRAM一定時,比如時潛伏期為70納秒,那么一顆 1GHz PIII等待數據的時間將會比一顆 400MHz PII處理器長。當然出現這樣的現象是每個用戶都不願意看到的,當的使用的內存速度越慢或者說你的處理器相對越快,你的處理器就會由更多的性能都被這樣的等待浪費了。深入了解内存(四)快頁模式內存在深入了解內存(三)DRAM讀取過程一文中我們介紹了DRAM的詳細的讀取過程,在本文的這一節中我們將要開始了解FPM DRAM( Fast Page Mode DRAM),也就是我們常說的快頁內存。 之所以稱之為快頁內存,因為它以4位元組突發模式傳送數據,這4個位元組來自同一列或者說同一頁。 如何理解這種讀取模式呢?FPM DRAM如果要突發4個位元組的數據,它依然需要依次的讀取每一個位元組的數據,比如它要讀取第一個位元組的數據,這個時候的情況同前面介紹的DRAM讀取模式是一樣的(我們依然透過讀取下面的FPM讀取時序圖來了解它的工作模式)首先行位址被傳送到行位址引腳,在/RAS引腳被激活之前,RAS處於預充電狀態,CAS也處於預充電狀態,當然/WE此時依然是高電平,FPM至少知道自己不會進行寫操作。/RAS引腳被賦予低電平而被激活,行位址被送到行位址選通器,然後選擇正確的行送到傳感放大器,就在/RAS引腳被激活的同時,tRAC開始計時CAS一直處於預充電狀態,直到列位址被傳送到列位址引腳並且 /CAS引腳得到一個低電平而被激活(tCRC時間開始計時),然後下面的事情我們也應該很清楚了,列位址被送到列位址選通器,然後需要讀取的數據位置被鎖定,這個時候Dout引腳被激活,第一組數據就被傳送到數據匯流排上對於原來介紹的DRAM,這個時候一個讀取週期就結束了,不過對於FPM則不同,在傳送第一組數據期間,CAS失活(RAS依然保持著激活狀態)並且進入預充電狀態,等待第二組列位址被傳送到列位址引腳,然後進行第二組數據的傳輸,如此周而複始直至4組數據全部找到並且傳輸完畢當第四組數據開始傳送的時候,RAS和CAS相繼失活進入到預充電狀態,這樣FPM的一個完整的讀取週期方告結束。FPM之所以能夠實現這樣的傳輸模式,就是因為所需要讀取的4個位元組的行位址是相同的但是列位址不同,所以它們不必為了得到一個相同的列位址而去做重複的工作。這樣的工作模式顯然相對於普通的DRAM模式節省了很多的時間,特別是節省了3次RAS預充電的時間和3個tRAC時間,從而進一步提升的效率。我想你一定看到過諸如6333這樣的內存標注方法,其中的6表示從最初狀態讀取第一組數據需要6個時鐘週期,而讀取另外三個數據僅僅需要3個時鐘週期就能達到目的了。需要特別指出的是,在上面的時序圖中,我們並沒有標注出 FPM DRAM進行第二個、第三個、第四個數據輸出的前進行新的列位址選通的時間,但是從上面的示意圖中我們可以看到Col.2同Data1和D2之間都沒有重疊,所以這三個數據的輸出是進行完畢一個再進行的另一個,因此再上一次數據傳輸完畢到下一次列位址傳輸之間還有一點小小的延遲。請看下圖EDO DRAM( Extended Data Out DRAM擴展數據輸出DRAM)在介紹FPM的讀取過程的最後我著重提到了 FPM DRAM是在上一次的數據讀取完畢才會進行下一個數據的讀取,但是對於EDO DRAM卻是完全不一樣的。 EDO DRAM可以在輸出數據的同時進行下一個列位址選通,我們依然結合下面的EDO讀取時序圖來了解EDO DRAM讀取數據的過程RAS在結束上一次的讀取操作之后,進入預充電狀態,當接到讀取數據的請求之后,行位址首先透過位址匯流排傳輸到位址引腳,在這個期間CAS依然處於預充電狀態/RAS引腳被激活,列位址開始經過行位址選通電路和行位址解碼器進行行位址的選擇,就在這個同時tRAC週期開始,因為是讀取操作/WE引腳一直沒有被激活,所以內存知道自己進行的是讀取操作而不是寫操作在CAS依然進行預充電的過程中,列位址被送到列位址選通電路選擇出來合適的位址,當/CAS被激活的同時tCAC週期開始,當tCAC結束的時候,需要讀取的數據將會透過數據引腳傳輸到數據匯流排。從開始輸出第一組數據的時候,我們就可以體會到EDO同FPM之間的區別了在tCAC週期結束之前,CAS失活並且開始了預充電,第二組列位址傳輸和選通也隨即開始,第一數據還沒有輸出完畢之前,下一組數據的tCAC週期就開始了顯然這樣進一步的節省了時間。就在第二組數據輸出前,CAS再次失活為第三組數據傳輸列位址做起了準備如此的設計使得EDO內存的性能比起FPM的性能提升了大約20-40%.正是因為EDO的速度比FPM快,所以它可以營運在更高的匯流排頻率上。所以很多的EDO RAM可以營運在66MHz的頻率上,並且一般標注為5222。SDRAM主要談論我們大家都能接觸到的SDRAM內存了,首先得承認SDRAM同我們之前介紹的異步DRAM是差別非常大的。它的基本原理同前面提到的DRAM還是基本一樣的(比如基本存儲單元都是按照陣列排列,都有RAS和CAS的概念),不過這些存儲單元的組織和控制同DRAM就具有相當大的差別了。在前面我們討論其它類型的內存都是採用了以具體的產品為例來講述的,所以這裡我們依然採用這種形式,這次我們以 MICRON MT48LC4M4A1 16MB SDRAM為例。(如果你感興趣可以去網站查找相應的資料)。如果你還記得我們在前面介紹的DRAM相關內容,那么應該還記得 DRAM是以bank來組織存儲單元的。因為每個內存bank的位寬是同數據匯流排阿位寬一樣的。所以對於SIMM,你必須把多個SIMM放在一個bank之中來滿足32bit或者64bit數據匯流排的要求。DIMM具有更多阿引腳,所以單個DIMM可以提供足夠的同數據匯流排相適應的位寬這樣每個bank只要一個DIMM就可以了。而且 SDRAM更進一步的是可以在單個的DIMM中存在多個bank,這樣不但能夠滿足數據匯流排的需要還能進一步的提升匯流排的性能。下面就讓我來解釋一下在我們前面討論的DRAM讀取模式中,當一個讀取週期結束后,/RAS和/CAS都必須停止激活然後有一個短暫的預充電期才能進入到下一次的讀取週期中。但是一個具有兩個bank的SDRAM的模組中,其中一個bank在進行預充電的期間另一個bank卻可以被調用這樣當你需要讀取已經預充電的bank的數據時,就無需等待而是可以直接調用了。為了實現這個功能,SDRAM就需要增加對於多個bank的管理,這樣就可以實現控制其中的bank進行預充電,並且在需要使用的時候隨時調用了。這樣一個具有兩個bank的SDRAM一般會多一根叫做BA0的引腳,實現下兩個bank之間的選擇一般的BA0是低電平表示Bank0被選擇,而BA0是高電平Bank1就會被選中。可見,雖然SDRAM在基本的原理上比如基本存儲的架構都是基本一樣的,但是在整個內存架構的組織上是不同的,而且在存儲單元的控制上也是有著相當大的區別的。因為異步DRAM同處理器和晶片的時鐘並沒有什麼關係,所以晶片組只能按照DRAM內存的時序要求“被動”的操作DRAM控制引腳。SDRAM因為要同CPU和晶片組共享時鐘,所以晶片組可以主動的在每個時鐘的上升沿發給引腳控制命令。上圖顯示的就是MT48LC4M4A1 16MB SDRAM內存顆粒的引腳示意圖,它採用了50引腳的TSOP封裝,符合PC100規範。這種內存顆粒將同系統時鐘同步營運。這種內存顆粒的架構1Mx16-512Kx16x2,每bank行位址數目是11,列位址數目是8。我們首先來介紹一下這種內存顆粒的引腳定義A0A10位址輸入引腳,當ACTIVE命令和READ/WRITE命令時,來決定使用某個bank內的某個基本存儲單元。CLK時鐘信號輸入引腳CKEClock Enable,高電平時有效。當這個引腳處於低電平期間,提供給所有bank預充電和刷新的操作/CS晶片選擇(Chip Select),SDRAM DIMM一般都是多存儲晶片架構,這個引腳就是用於選擇進行存取操作的晶片/RAS:行位址選擇(Row Address Select)/CAS:列位址選擇(Column Address Select)/WE:寫入信號(Write Enable)DQ0DQ15:數據輸入輸出界面BABank位址輸入信號引腳,BA信號決定了由激活哪一個bank、進行讀寫或者預充電操作;BA也用於定義Mode暫存器中的相關數據。NC空引腳DQM: 這個引腳的主要用於屏蔽輸入/輸出,功能相當於/OE引腳( Output Enable)。 VDDQDQ供電引腳,可以提升抗干擾強度VSSQDQ供電接地引腳VSS內存晶片供電接地引腳VDD內存晶片供電引腳,提供+3.3V 0.3V(上面的列表項目和示意圖中,前面標有“/”或者“#”標記的表示在低電平下有效)下面的表格在不同的狀態下(或者說不同命令下)的各個引腳的信號。“H”代表高電平,“L”代表低電平,“X”代表可以是任何狀態,也就是該引腳同該命令並沒有直接的關係。功能 /CS /RAS /CAS /WE DQM ADDR. COMMAND INHIBIT (NOP) H X X X X X NO OPERATION (NOP) L H H H X X ACTIVE (選擇bank並且激活相應的行) L L H H X Bank/Row READ (選擇bank和列位址,並且開始突發讀取) L H L H X Bank/Col WRITE (選擇 bank和列位址,並且開始突發寫入) L H L L X Bank/Col BURST TERMINATE(停止當前的突發狀態) L H H L X X PRECHARGE (讓相應的bank中的行失活或者讓該bank失活) L L H L X Code AUTO REFRESH(進入自動刷新模式) L L L H X X LOAD MODE REGISTER L L L L X Op-code 寫入啟用/輸出啟用L寫入禁止/輸出禁止H如果你對於我們前面介紹的內容有了真的有所了解了,看到上面的晶片引腳示意圖和各個針腳的功能示意圖就基本對於SDRAM的工作工程有了一個基本的了解了,在下面的章節裡我們就對於這個過程進行詳細的介紹,首先我們對於一些基本的概念做一些了解。這條SDRAM顆粒採用了雙bank(每bank 512K x 16 DRAM)的工作電壓是3.3V,並且採用同步界面模式(所有的信號都是時鐘信號的上升沿觸發)。每一個512K x 16-bitbank由2,048行乘以256列個基本存儲單元構成,輸出數據位寬是16 bit。Read和write操作都是透過突發導向模式訪問SDRAM的;這種訪問模式以訪問指定的區域開始的,然後按照預先設定的模式定位其它的數據的所在。每次訪問都是以ACTIVE命令啟動的,然後僅僅跟著一個READ或者WRITE命令。不過在進行所有這些操作之前,SDRAM必須首先進行初始化。初始化SDRAM在上電之后,必須首先按照預定的模式進行初始化才能正常的營運。一旦VDD和VDDQ被同時供電並且時鐘穩定下來,SDRAM就需要一個100微秒的延遲,在這個時間段中COMMAND INHIBIT和NOP指令有效,這個過程實際上就是內存的自檢過程,一旦這個過程透過之后一個PRECHARGE命令就會緊緊隨著最後一個COMMAND INHIBIT或者NOP指令而生效,這個期間所有的內存都處於空閒(idle)狀態,隨后會執行兩個
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年4月重庆市綦江区万东镇新招录公益性岗位人员模拟试卷及答案详解(各地真题)
- 2025年国网陕西省电力有限公司第二批录用人选模拟试卷及1套完整答案详解
- 2025江苏中国矿业大学徐海学院招聘专任教师1人模拟试卷及一套答案详解
- 2025湖州安吉县城市建设投资集团有限公司下属子集团招聘11人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025年陕西汉水电力实业(集团)有限责任公司招聘(2人)考前自测高频考点模拟试题及1套完整答案详解
- 2025广西农垦集团第一批公开招聘381人考前自测高频考点模拟试题有答案详解
- 2025广东南粤银行分行行长、副行长等岗位招聘模拟试卷及答案详解(新)
- 2025福建福州市水路运输事业发展中心招聘编外人员1人考前自测高频考点模拟试题及答案详解(必刷)
- 2025内蒙古赤峰市教育局赤峰蒙古族中学第二批次“绿色通道”引进高层次教师模拟试卷及参考答案详解1套
- 2025辽宁抚顺高新热电有限责任公司招聘专业技术人员的二次考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025至2030 中国热成型钢(PHS)行业现状调查与前景策略研究报告
- 第一章第二节《孟德尔自由组合定律应用9331变形及致死现象》课件-人教版必修二
- 培训机构教务老师工作计划
- 《乐东黎族自治县国土空间总体规划 (2020-2035)》
- 《探索人工智能:机器翻译课件解析》
- 门机控制器调试手册
- 湖北省武汉市外国语学校2024-2025学年上学期10月九年级物理试题(含解析)
- 2025年上海市青浦区中考英语一模试卷
- 初中生物教师培训讲座
- 知识付费合同协议范本
- 学校体育学(唐炎-刘昕版)重点、知识点
评论
0/150
提交评论