存儲器
1.存儲器的分類
1. 按與CPU的連接和功能分類
==主存儲器(CPU可以直接訪問)==
CPU能直接訪問的存儲器,用來存放當前運行的程序和數據。由於設在主機內部,所以又稱內存儲器,簡稱內存或主存。
==輔助存儲器(CPU不能直接訪問)==
是爲了解決主存容量不足而設置的存儲器,用來存放當前不參加運行的程序和數據。當需要運行存放在輔存中的程序時,需要將所需內容成批地調入內存供CPU使用,CPU不能直接訪問輔存。由於輔存是外部設備的一種,所以又稱爲外存儲器,簡稱外存。
高速緩存存儲器
是一種介於主存與CPU之間,用來解決CPU與主存間速度匹配問題的高速小容量的存儲器。用來存放CPU立即要運行或剛使用過的程序和數據。
2. 按存取方式分類
隨機存取存儲器(RAM, random access memory)
存儲器任何單元的內容均可以按其地址隨機讀取或寫入,而且存取時間與單元的物理位置==無關==。
==一般主存儲器主要由RAM組成。==
只讀存儲器(ROM, read only memory)
任何單元的內容只能隨機的讀取信息,而不能寫入信息。ROM可以作爲主存的一部分,用以存放不變的程序和數據。
順序存取存儲器(SAM, sequential access memory)
存儲器所存信息的排列、尋址和讀寫操作都是按順序進行的,並且存取時間與信息在存儲器中的物理位置==有關==。
直接存取存儲器(DAM, direct access memory)
3. 按存儲介質分類
凡具有兩個穩定物理狀態,可以用來記憶二進制代碼的文職或物理器件均成爲存儲介質。
磁芯存儲器
半導體存儲器
可分爲雙極型和MOS型
磁表面存儲器
光存儲器
2. 主存的組成和基本操作
基本組成
基本組成框架(看計算機組成原理 P140):
地址總線
–>地址寄存器
–>地址譯碼與驅動電路
–>==存儲陣列== <–>讀寫電路
<–>數據寄存器
<–>地址總線
==存儲器==:存儲器的核心部分,是存儲二進制信息的主體,也成爲存儲體。
存儲體==由大量存儲單元構成==,爲了區分各個存儲單元,把它們進行統一編號,這個編號稱爲地址,又稱地址碼。==地址碼與存儲單元是一一對應的,每個存儲單元都有自己唯一的地址。==
==編址單位==:可尋址的最小單位。
某些計算機按字(word)編址的,最小可尋址信息單元爲一個機器字,連續的存儲器地址對應於連續的機器字。
多數計算機是按字節(byte)編址的,最小尋址單位爲一個字節。一個32位字長的按字節尋址的計算機,一個存儲器字包含四個可單獨尋址的字節單元,由==地址的低兩位區分==(siehe Folien RO_VL13 s.57)。
==地址寄存器==:用於存放所要訪問的存儲單元的地址。
要對某一存儲單元進行存取操作,首先要通過地址總線把要被訪問的單元的地址放到地址寄存器中。
==地址譯碼與驅動電路==
把地址寄存器中的地址進行譯碼,通過對應的地址選擇線到存儲陣列中找到要訪問的存儲單元並驅動其完成指定的操作。
讀寫電路與數據寄存器
(==存儲陣列,讀寫電路,數據寄存器,數據總線之間都是雙箭頭)==
作用是:根據CPU的讀寫指令,把數據寄存器的內容寫入被訪問的存儲單元,或者從被訪問單元中讀出信息送入數據寄存器中,以供CPU或IO使用(所以它們之間的箭頭是雙向的 –> 既能寫也能讀)
讀:讀出的信息需先放到數據寄存器,然後通過數據總線傳送給CPU或者IO系統
寫:必須先將要寫入的信息經數據總線傳入數據寄存器,再經讀寫電路寫入被訪問的存儲單元
時序控制電路
用於接收來自CPU的讀寫控制信號,產生存儲器操作所需的各種時序控制信號,控制存儲器完成指定的操作。
若存儲器採用異步控制的方式,當一個存取操作完成,該控制電路還應該出存儲器操作完成(MFC)信號
基本操作
主存用來==存放CPU正在運行的程序和數據==,和CPU的關係最爲密切。主存與CPU之間的連接是由總線支持的。(連接方式見計算機組成原理 p141)
CPU | 總線 | 主存 |
---|---|---|
MAR | —> | 地址 |
MDR | <–> | Data |
讀寫控制信號 | – R/W –> | 時序控制電路 |
… | <– MFC – | 時序控制電路 |
+ 讀:當CPU要從存儲器中讀取一個字
1. CPU把被訪單元的地址地址送到存儲器地址寄存器MAR(Memory Address Register)
2. 經地址總線把地址傳送給主存,同時發出“讀”命令
3. 存儲器通過時序控制電路接到“讀”命令,根據地址從被選存儲單元中讀出信息,並經數據總線送入存儲器數據寄存器MDR(Memory Data Register)。
**==MAR和MAR都是位於CPU內==**
寫:爲了存一個字到主存
- CPU把要存入的存儲單元地址經MAR送入主存,並把要存入的信息字送入MDR,發出“寫”命令。
- 存儲器在這個命令的控制下,經數據總線把MDR的內容寫入指定地址的存儲單元。
3.存儲器的主要技術指標
衡量一個半導體存儲器的主要技術指標有:
1. 存儲容量
指半導體存儲芯片所能存儲的二進制信息的位數,單位是==kb==(kilo**==Bits==)、==mb==(mega==Bits==**)等。
注意與==計算機系統的存儲容量==區分
討論芯片容量,單位是 ==bit==
討論計算機存儲器容量,單位是 ==Byte==
2. 速度
由於存儲芯片的工作速度慢於CPU的工作速度,所以存儲芯片的工作速度直接影響CPU執行指令的速度(回憶MIMA中取指令的5個Takt的過程,以及store和load的指令的執行過程)。
存儲芯片的速度通常用==取數時間(Memory Access Time)==和==存取週期(Memory Cycle Time)==來表示。
(1)Memory Access Time (訪問時間、取數時間)
指 ==從啓動一次存儲器存取操作到完成該操作所經歷的時間==,通常被記爲 ==tAA==
對存儲器的某一個單元進行一次“讀”操作,例如CPU取指令或者取數據,訪問時間就是指 從把要被訪問的存儲單元的地址加載到存儲器芯片的==地址引腳==上開始,直到讀取的數據或者指令在存儲器芯片的==數據引腳==上可以使用爲止,兩者之間的時間差就是訪問時間。
另一個常見的參數:==tCA==
指: 從加載到存儲器芯片的選片(chip select, CS)信號引腳上的選片信號有效開始,知道讀取的數據或指令在存儲器芯片的數據引腳上可以使用爲止的這段時間間隔。
(2)Memory Cycle Time(存取週期、讀寫週期)
指: ==對存儲器進行連續兩次存取操作所需要的最小時間間隔==。
通常:== Memory Cycle Time >= Memory Access Time==(有些存儲器在一次存取操作後需要有一定的恢復時間)
(3)總線帶寬(頻寬、數據傳輸率)
==存儲器帶寬、頻寬 = 存儲器總線寬度 / 存取週期==
指 ==存儲器在單位時間內所存取的二進制信息的位數==
(4)價格
常用每位價格來衡量:
存儲器容量爲S位, 總價格爲C,每位價格:
c = C / S
半導體存儲器的總價格正比於存儲容量,反比於存取時間。容量、速度、價格三個指標相互矛盾、相互制約 –> 高速存儲器旺旺價格也高,因而容量不可能很大。
存儲器系統的層次結構
存儲器系統層次 | 訪問時間 | 存儲容量 |
---|---|---|
1.寄存器 | 幾ns | 128個Byte就合適 |
2.高速緩存存儲器 | 寄存器的幾倍 | 幾mB |
3.主存 | 幾十ns | 幾十mB到數千mB |
4.硬盤 | 幾GB到幾十GB | 最少要10ms以上 |
5.光盤、磁帶 | 如果加上介質的取出和插入驅動器的時間,得以秒來計算 | 一般脫機存放,容量只受限於用戶的預算 |
從上往下,有三個關鍵參數==逐漸增大==
訪問時間逐漸增長
- 寄存器:幾ns
- 高速緩存:寄存器的幾倍
- 主存:幾十ns
- 磁盤:最少要10ms以上
- 磁帶、光盤:如果加上介質的取出和插入驅動器的時間,得以秒來計算
存儲容量逐漸增大
同樣的錢能買到的存儲容量增大(存儲每位的價格 (
c = C / S
) 逐漸減小)