在計算機的存儲器中,按存儲介質進行分類的話,可將存儲器分成半導體存儲器、磁表面存儲器、磁芯存儲器、光盤存儲器。而除了半導體存儲器中的數據易失以外,其他的存儲介質都具有非易失的特性。
那么,半導體存儲芯片的結構是怎樣的呢?
話不多說,我們來看下吧。
半導體存儲芯片的基本結構
半導體存儲芯片由譯碼驅動電路、存儲矩陣、讀寫電路、地址線、數據線、控制線、片選線組成。其中,譯碼驅動電路、存儲矩陣、讀寫電路屬於核心結構。
存儲矩陣用來存儲0/1代碼,地址線、數據線主要用來連接CPU和外部設備。現在假設CPU或者外部設備給出地址,表示要存/取的數據在存儲矩陣的哪個存儲單元中,然后經過譯碼驅動電路,選擇對應的存儲單元,從而完成存/取數據。
地址線是單向的,由CPU指向存儲器,或者由I/O設備的控制器指向存儲器。數據線是雙向的。由地址線和數據線可以計算出芯片的容量。那么如何計算呢?感興趣的朋友可以閱讀之前的這篇文章。吐血整理!這篇帶你徹底理解主存中存儲單元地址的分配
片選線,也叫做芯片選擇信號,指出這次存/取操作給出的地址是不是這個存儲芯片的地址。半導體存儲芯片的片選線一般有兩種標識方式,表示方式如下所示:
CS(芯片選擇信號),CE(芯片使能信號),低電平表示有效,高電平表示無效,也就是說,如果片選線信號為低電平,則表示想要存/取的數據位於片選線所在的芯片中。
讀寫控制線,表示這次對半導體芯片的操作是讀操作還是寫操作。可以用一根線或者兩根線表示,用一根線表示的話是WE,用兩根線表示的話是WE和OE,具體如下所示:
存儲芯片片選線的作用
接下來我們來詳細討論下存儲芯片中,片選線的作用。
假設CPU現在要求用16K×1位的存儲芯片組成64K×8位的存儲器。如何用16K×1位的存儲芯片組成64K×8位的存儲器?
我們用圖來看下,實際上這個問題解決並不難
16K×1表示存儲容量,每個存儲單元存儲1位的0/1數據。那么,我們用8個這樣的芯片,對8個芯片相同的地址同時進行操作,每個芯片給出1位,8個芯片就構成了16K×8的存儲器。
但是,CPU要求的是64K?這個應該怎么做?
實際上,也不難,每8個芯片分成1組,然后復制4組,就構成了64K×8的存儲器。
在進行讀寫操作時,8個芯片是同時進行工作的,所以,他們的片選線是連接在一起的。
然后對64K的空間進行划分,所以CPU的地址中0-(16K-1)的地址分配到第一組的芯片中,16K-(32K-1)的地址分配到第二組的芯片中,32K-(48K-1)的地址分配到第三組的芯片中,48K-(64K-1)的地址分配到第三組的芯片中分配到第四組的芯片中。
現在假設訪問的地址是65535,進行寫操作,那么這個地址表示的存儲芯片應該在最后一組中,片選信號看到這個地址后,就會選擇最后一組,其他三組芯片對應的片選信號是無效的,就是高電平,最后一組對應的片選信號是有效的,也就是低電平,數據就會保存在最后一組的存儲芯片當中。
半導體存儲芯片的譯碼驅動方式
譯碼驅動電路的作用是:在給出地址之后,根據這個地址取找到這個地址對應的存儲單元。
而半導體存儲芯片的譯碼驅動方式有兩種:線選法,重合法。
我們先來看下線選法
線選法
在上圖中,有A0-A3的4位地址,那么24表示有16個存儲單元,那么每個存儲單元可以存儲多少位?圖中給出的數據線是從D0-D7,一共8位。綜合起來,就表示這是一個16K×8的存儲器。
如何進行選擇?
在上圖中,地址譯碼器輸入的是4根線,輸出的16根線。給定一個輸入,在輸出這一端,只有一根線是有效的,只有一根線上的信號會控制相應的存儲單元中的所有存儲元件進行數據的輸入或者輸出操作。
那么在讀寫控制電路中,如果是讀選通,就會將數據矩陣中的數據進行對外輸出;如果是寫選通,就會將數據寫入到矩陣中的存儲元件中。
現在,來看下具體工作過程:
假設地址譯碼器給出的地址是全0,進行譯碼過后,只有0這根線是有效的,其他的都是無效的。現在進行的是讀操作,那么就會控制讀/寫控制電路打開,使得數據可以從存儲矩陣輸出到數據總線上。只有給定的單元才可以進行輸出。
那么,線選法有沒有缺點呢?缺點是什么?
在上圖的譯碼中,地址線是4根,容量是16K×8,現在的計算機存儲器,並不存在這么小的容量。
現在假設有1M×8的存儲芯片,地址線有20根,經過譯碼器譯碼后就有1M條線,每給出一個地址,1M條線中,只有一條有效。而1M條線,就是1000000條線,做在芯片中將會非常密集,這么高的集成度很難做到。
所以,線選法對於容量很大的存儲器來說,是個不好的方法。
接下來,來看下重合法
重合法
在線性法中,存儲單元的布局方法是一個線性的數組;而在重合法中,存儲單元的布局方法是二維的數組。
在重合法中,將地址分成了兩部分,一部分是X,另一部分是Y,也可以叫做行列地址。行列地址分別進行譯碼,只能有一根線是有效的。具體工作過程:
假設給出的行列地址都是全0,行列地址進行譯碼后只有(0.0)這條線是有效的。只有這條線上的存儲單元被選中。那么這時候,Y0這條線上的開關就會打開,數據就會通過這個開關進行數據輸出。在這個過程當中,X0上的除了Y0上的存儲單元的數據會進行輸入以外,其他的存儲單元上的數據一樣會進行輸出,但是,當數據經過Y31線上的開關時,由於這條線是無效的,數據會被攔截,所以,數據就輸出不了,所以數據沒有到數據線去。那么Y0上的除了X0的存儲單元的數據會進行輸入以外,其他的存儲單元上的數據一樣會進行輸出,同樣的道理,就不另外解釋了。
那么,重合法的優點是什么?
在上面的線選法中,我們是假設有1M×8的存儲芯片,地址線有20根,用線選法的話,經過譯碼器譯碼后就有1M條線。那么,同樣的大小,我們采用重合法的話,地址線就分成兩部分,每一部分都是1K條線,總計就是2K條線,那么,就比線選法進行譯碼的1M條少很多了,這樣子,芯片就能做到很高的集成度。
結語
講了那么多,不知道各位是不是清晰的理解了呢哈哈?