程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 深入了解內存(二)

深入了解內存(二)

編輯:關於SqlServer
在前面的一節文章中我們對於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的模組。芯片數目減少最直接的好處當然是可以減


您正在看的SQLserver教程是:深入了解內存(二)。少功耗了,當然也簡化了生產過程。下面的圖只是為了說明這個問題而制作的,它展示的是一種72線的4MB SIMM內存,采用了4片1Mx8bit DRAM芯片。但是至於是不是真的有這樣的一款產品我也不能確定,因為目前為之我找不到實際的產品相關資料,所以這個只是為了幫助大家理解這個問題,不要對於是否有這樣的產品而斤斤計較。這樣一來,只要4片采用具有8bit位寬的內存顆粒就可以達到同樣的容量,當然這樣的內存條工作原理在理解的過程中比原來略微復雜一點。我們看到在上面的4Mbit×8bit芯片中,依然還是有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的內存做了進一步的了解。這些東西雖然對於現在的用戶似乎有些不太實際,但是對於進一步了解現在的內存還是有相當的幫助的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved