在上體系結構這門課以前,我只知道DRAM用做內存比較多,SRAM用做cache比較多。在今天講到內存技術時,我對於這兩個基礎概念有了更加完整的認識。這篇文章是個人聽課心得,如今分享給各位,僅供參考,如有錯誤多多指正。數組
從名字上看,SRAM與DRAM的區別只在於一個是靜態一個是動態。因爲SRAM不須要刷新電路就可以保存數據,因此具備靜止存取數據的做用。而DRAM則須要不停地刷新電路,不然內部的數據將會消失。並且不停刷新電路的功耗是很高的,在咱們的PC待機時消耗的電量有很大一部分都來自於對內存的刷新。那麼爲何咱們不用SRAM來做爲內存呢?spa
首先來看一張SRAM的基本單元結構圖 再來看看DRAM的基本單元結構圖blog
SRAM存儲一位須要花6個晶體管,而DRAM只須要花一個電容和一個晶體管。cache追求的是速度因此選擇SRAM,而內存則追求容量因此選擇可以在相同空間中存放更多內容而且造價相對低廉的DRAM。內存
咱們姑且不去討論關於SRAM是如何靜態存儲數據(觸發器)的。爲何DRAM須要不斷刷新呢?it
DRAM的數據其實是存在電容裏的。而電容放久了,內部的電荷就會愈來愈少,對外就造成不了電位的變化。並且當對DRAM進行讀操做的時候須要將電容與外界造成迴路,經過檢查是否有電荷流進或流出來判斷該bit是1仍是0。因此不管怎樣,在讀操做中咱們都破壞了原來的數據。因此在讀操做結束後須要將數據寫回DRAM中。在整個讀或者寫操做的週期中,計算機都會進行DRAM的刷新,一般是刷新的週期是4ms-64ms。基礎
關於SRAM和DRAM的尋址方式也有所不一樣。雖然一般咱們都認爲內存像一個長長的數組呈一維排列,但實際上內存是以一個二維數組的形式排列的,每一個單元都有其行地址和列地址,固然cache也同樣。而這二者的不一樣在於對於容量較小的SRAM,咱們能夠將行地址和列地址一次性傳入到SRAM中,而若是咱們對DRAM也這樣作的話,則須要不少不少根地址線(容量越大,地址越長,地址位數越多)。因此咱們選擇分別傳送行地址和列地址到DRAM中。先選中一整行,而後將整行數據存到一個鎖存器中,等待列地址的傳送而後選中所須要的數據。這也是爲何SRAM比DRAM快的緣由之一。im