第三章 存儲系統
1.存儲系統圖基本概念
1.1存儲器的層次結構
1.2存儲器的分類
1.3存儲器的性能指標
2主存儲器的組成
2.1半導體元件的原理
1)存儲矩陣:由大量相同的位存儲單元陣列構成。
(2)譯碼驅動:將來自地址總線的地址信號翻譯成對應存儲單元的選通信號,該信號在讀寫電路的配合下完成對被選中單元的讀和寫。(包括譯碼器,驅動器)
(3)讀寫電路:完成讀寫操作。(包括讀出放大器,寫入電路)。
(4)讀/寫控制線:控制芯片是進行讀操作還是寫操作。
(5)片選線:存儲器是由很多這樣的芯片組成的,每個芯片的地址范圍都是總體地址的一部分,片選線就是確定究竟是哪個芯片被選中。
(6)地址線:單向輸入的,位數和存儲字的個數有關。
(7)數據線:雙向的,位數和讀出或寫入的數據位數有關。
數據線和地址線共同反映一個芯片的存儲容量的大小,舉個例子,如果地址線有12根,數據線有16根,那么這個芯片的容量就是2^12 × 16=8KB。
這只是半導體芯片的基本結構,根據存儲器的存儲信息原理的不同可以分為SRAM和DRAM。
給電容充電的過程就是寫數據過程 電容充電就是兩電極板 電壓不同 (差別很大) 造成電子移動
放電就是讀數據
2.2存儲芯片的基本原理
芯片中的引腳
尋址
3.SRAM和DRAM
雙穩態觸發器 左右BL BLX兩邊分別讀0 或1
寫入時 1 左邊BL加高電平 右邊BLX加低電平
寫入時 0 左邊BL加低電平 右邊BLX加高電平
刷新
送行列地址
SRAM
SRAM的存儲元(通常把存放一個二進制位的物理器件稱為存儲元)采用的是雙穩態觸發器(六管MOS)來記憶信息的,因此即使信息被讀出后,它仍然會保持其原狀態而不需要再生。當然斷電之后肯定會丟失信息的,畢竟RAM是易失性的存儲器。SRAM的存取速度快,功耗較大,一般用來做Cache。
DRAM
DRAM與SRAM的原理不同,它是利用存儲元電路中柵極電容上的電荷來存儲信息的,常見的DRAM的基本存儲電路通常分為三管式和單管式。DRAM采用地址復用技術,地址線是原來的一半,地址信號分為行和列兩次傳送(這也就是DRAM比SRAM存取速度要慢的因素)。
既然DRAM采用電容上的電荷來存儲信息,而電容上的電荷不可能不丟失,一般情況下,DRAM電容上的電荷只能維持1至2ms,過了這個時間,電荷就丟了,信息也就沒了,所以我們要每隔一定時間對其進行刷新,這個時間通常分為刷新周期。常用的刷新方法有以下三種:
(1)集中刷新:在一個刷新周期內,利用一段固定的時間,依次對存儲器的所有行逐一再生,在此期間停止對存儲器的讀寫操作,這段時間成為“死時間”,又叫訪存的“死區”。顯然這種方法可以讓讀寫操作不受刷新工作的影響,但是在死區不能訪問存儲器,CPU只能干等着。
(2)分散刷新:把對每一行的刷新分散到各個工作周期中去。比較生動地解釋就是,原來我的工作只有存取,現在我的工作多了一個,就是在存取完之后順便再“打掃”一行。這樣,一個存儲器的系統工作周期分為兩部分,前半部分有用正常讀、寫或保持,后半部分用於刷新某一行。這種方法不存在死區,但是增加了系統的存取周期,如果原來存取周期只有0.5us,現在變成了1us,增加的0.5us要刷新一行。
(3)異步刷新:前兩種方法的結合,它可以縮短死時間,又充分利用最大刷新間隔為2ms的特點。做法是將刷新周期除以行數,得到每兩次刷新之間的時間間隔t,邏輯電路每過t就產生一次刷新請求。這樣就避免了使CPU等待過長時間,還減少了刷新次數,提高了工作效率。
區別
1、原理上的不同,SRAM原理是雙穩態觸發器,DRAM是柵極電容上的電荷;原理的不同導致SRAM不用刷新,DRAM要刷新。
2、DRAM采用地址復用,SRAM不是。具體原因是這樣的,存儲芯片上的內容不是我們想象中的那樣,一個地址對應一個存儲單元,然后它們按照一維那樣子順序排列下去,它是個二維的存儲矩陣,之前的存儲芯片基本結構也提到了,所以它芯片內部尋址的時候是分行和列去找的,對於SRAM,它將行列直接傳入進去找到相應存儲單元,但是DRAM通常用作內存而不是Cache,它需要比Cache更大的容量而不是速度,所以在容量大的情況下,它的芯片內行數和列數也多,要一起傳入豈不是要很多根地址線,這是不划算的,所以用地址復用,行和列分別傳入。
總結
4.ROM(只讀存儲器 )
(1)隨機存儲器(RAM,Random Access Memory):任何一個存儲單元的內容都可以隨機存取,存取時間與存儲單元的物理位置無關。計算機中的主存往往采用這種隨機存儲器,按照存儲信息的原理不同可分為靜態RAM(SRAM,原理是觸發器寄存信息)和動態RAM(DRAM,原理是電容充放電寄存信息)。
(2)只讀存儲器(ROM,Read Only Memory):顧名思義,存儲器的內容只能隨機讀出而不能寫入。信息一旦寫入就固定不變了,內容斷電不會丟失。通常用它來存儲固定不變的程序、常數和漢字庫,甚至用於操作系統的固化。它與RAM可以共同作為主存的一部分,統一構成主存的地址域。
ROM派生出很多存儲器,其中也包含可重復寫入的類型,ROM和RAM的存取方式都為隨機存取,廣義上的只讀存儲器已經可以通過電擦除等方式進行寫入了,“只讀”的概念並沒有保留,只保留了斷電內容保留、隨機讀取的特性,其寫入速度比讀取速度慢很多。
ROM的類型:
掩膜式只讀存儲器(MROM,Masked ROM):它的內容由廠家根據用戶的要求在生產中直接寫入,寫入后任何人都無法改變其中的內容。任何人都不可更改
一次可編程只讀存儲器(PROM,Programmable ROM):它可以實現一次性編程的只讀存儲器。允許用戶利用專門的設備寫入自己的 程序,一旦寫入后,內容無法改變。一次之后就不可以更改
可擦除可編程只讀存儲器(EPROM,Erasable Programmable ROM):可由用戶對其內容進行多次改寫。需要修改時先將其內容全部擦除,然后再編程。EPROM由可以分為兩種,紫外線擦除(UVEPROM)和電擦除(EEPRO)。雖然EPROM可以讀寫,但是寫入時間過長,寫入次數有限,不能代替RAM。
閃速存儲器(Flash Memory): (U盤,和SD卡就是閃存 ) 每個存儲元只需單個mos管,位密度比RAM高,它是在EPROM和EEPROM的基礎上發展起來的,可以在不加電的情況下長期保存信息,又能在線多次快速擦除和重寫,價格比EPROM便宜,擦除重寫速度比EEPROM快。
固態硬盤(SSD,Solid State Drives):用固態電子存儲器芯片陣列制成的硬盤,由控制單元和存儲單元(FLASH芯片)組成
可進行多次快速擦除和重寫
(3)串行訪問存儲器:對存儲單元進行讀寫操作時,需要按照其物理位置的先后順序尋址,包括順序存取存儲器(如磁帶)和直接存取存儲器(如磁盤)。需要注意的是這里的直接存取存儲器是介於順序存取和隨機存取之間的,如對磁盤的讀寫,按照柱面號,盤面號,扇區號找到存放信息的小區域,再順序存取所需要的信息。
5.存儲器與CPU的連接
一般的存儲器與CPU連接 暴露出的線
兩種擴展
位擴展 當數據總線寬度>存儲芯片字節時 需要位擴展 也就是把用位數較少的多片存儲器(ROM或RAM)組合成位數更多的存儲器的擴展方法。一般是在字數夠用而每個字的位數不能夠用的情況下使用。
字擴展 擴展主存字數 用多片位寬相同的存儲器(ROM或RAM)芯片擴展包含更多存儲器的過程。字擴展只擴展芯片的容量。
位擴展
擴展為8bit
字擴展
片選信號 1 0 表示 選中和未選中(工作和不工作)
線選法 局限性大
優化
增加一個非門
譯碼片選法
字位同時擴展
6.雙端口RAM和多模塊存儲器
速度上 平均一樣
靈活性 單體多字存儲器更差
7 Cache(高速緩存)
7.1Cache基本原理及概念
例題
7.2Cache和主存的映射方式
三種方式
全相聯映射
直接映射
組相連映射
7.2.1.全相聯映射
7.2.2.直接映射
7.2.3.組相連映射
7.3 Cache 替換算法
每次被訪問的主存塊都會被調入(復制)到Cache中 Cache很小 主存很大 如果Cache滿了怎么辦?------------替換算法
7.3.1 隨機算法
7.3.2 先進先出算法
7.3.3 近期最少使用算法
7.3.4 最不經常使用算法(LFU)
7.4 Cache 寫策略
CPU修改了(Cache中的數據副本,)如何確保主存中數據母本的一致性?——Cache與策略
寫回法
全寫法
寫分配法
非寫分配法
多級Cache
8.虛擬存儲器
8.1頁式存儲器
頁內地址的到校取決於頁的大小 1kb=2~10 10比特表示
引入塊表