存儲器的層次結構
1.存儲器的分類
層次分類
主存儲器(內存):存放程序和數據,CPU可以直接隨機訪問,可以和高速緩衝存儲器(Cache)以及輔助存儲器交換數據。特點是容量較小,存取速度較快,每位價格較高
輔助存儲器:外存,存放暫時不用的程序和數據,以及永久保存的信息,不能與Cpu直接交換信息,特點是容量大存取速度慢,成本低。
高速緩衝存儲器:Cache,位於主存和CPU之間,用來存放正在執行的程序段和數據
cpu不能直接訪問硬盤
多級存儲系統
主存和Cache之間的數據調動由硬件自動完成
主存和外存是由硬件和操作系統共同完成的
半導體隨機存儲器
1.半導體存儲芯片的基本結構
半導體存儲芯片內有存儲矩陣(存儲體),譯碼驅動電路和讀寫電路
- 存儲矩陣:由大量相同的位存儲單元陣列構成
- 譯碼驅動:將來自地址總線的地址信號翻譯成對應的存儲單元的選通信號,該信號在讀寫電路的配合下完成對選中單元的讀寫操作
- 讀寫電路:包括讀出放大器和寫入電路,用來完成讀寫操作
- 讀/寫控制線:決定芯片進行讀寫操作
- 片選線:確定哪個存儲芯片被選中
- 地址線:是單向輸入的,其位數與存儲字的個數有關
- 數據線:雙向的,位數與讀寫的數據位有關,數據線和地址線共同反映存儲芯片容量的大小。
2.隨機存儲器
3..只讀存儲器ROM
ROM和RAM都支持隨機存取的存儲器,ROM一旦有信息不會隨斷電丟失,結構簡單,位密度比可讀寫存儲器高,非易失性
掩膜式只讀存儲器(MROM):寫入後無法改變,可靠性高,集成度高,價格便宜,靈活性差
一次可編程只讀存儲器(PROM):寫入無法改變
可擦除可編程只讀存儲器(EPROM):可以改寫,全部擦出後編程,紫外線擦除和電擦除,寫入時間長
閃速存儲器(Flash Menory):
固態硬盤(Solid State Drives)
主存儲器與CPU的連接
1.連接原理
- 主存儲器通過數據總線,地址總線和控制總線與CPU連接,
- 數據總線的位數與工作頻率的乘積正比於數據傳輸率
- 地址總線的位數決定了可尋址的最大內存空間
- 控制總線(寫讀)指出總線週期的類型和本次輸入/輸出操作完成的時刻
2.位擴展法
對存儲芯片擴位(即進位擴展,用多個存儲器件對字長進行擴充,增加存儲字長),使其擴展位數與CPU的數據線數相等。位擴展的連接方式是將多個存儲芯片的地址端,片選端和讀寫控制端相應並聯,數據端分析引出。
3.字擴展法
指增加存儲器中字的數量,位數不變。字擴展將芯片的地址線,數據線,讀寫控制線相應並聯,由片信號來區分各芯片的地址範圍。
4.字位同時擴展法
即增加字數量,也增加字長;
5.存儲芯片的地址分配和片選
CPu要實現對存儲單元的訪問,首先要選擇存儲芯片,即進行片選;,然後再爲選中的芯片依地址碼選擇相應的存儲單元,以進行數據數據的存取,即字選。
片內的字選通常是由CPU送出的N條低位地址線完成的,地址線直接接到所有存儲芯片的地址輸入端。
1)線選法
用除片內尋址外的高位地址線直接分別接至各個存儲芯片的片選端,片選地址線每次尋址時只能有一位有效,不允許同時多位有效;優點:不需要地址譯碼器,線路簡單。缺點:地址空間不連續,選片的地址線必須分時爲低電平,不能充分利用系統的存儲空間,造成地址資源浪費。
2)譯碼片選法
用除片內尋址外的高位地址線通過地址譯碼器芯片產生片選信號。
6.存儲器與CPU的連接
1) 合理選擇存儲芯片
存儲芯片類型(RAM和ROM)和數量的選擇。選擇ROM存放系統程序,標準子程序和各類常數,RAM是爲用戶編程而設置的。
2)地址線的選擇
存儲容量不同地址線數不同,通常將CPU地址線得低位與存儲芯片得地址相連接,,以選擇芯片中的某一單元,
3)數據線的連接
CPU得數據線與存儲芯片得數據線數不一定相等,想等時可以直接連接;不相等時必須對存儲芯片擴位。
4)讀寫命令線的連接
一般可以直接與存儲芯片得讀寫控制端相連,通常高電平爲讀,低電平爲寫
5)片選線得連接
雙口RAM和多模塊存儲器
爲提高CPU訪問存儲器的速度,可以採用雙端口存儲器,多模塊存儲器等技術,同屬並行技術,前者空間並行,後者時間並行。
1.雙端口RAM
指同一個存儲器有左右兩個獨立的端口,分別具有兩組相互獨立的地址線、數據線和讀寫控制線,允許倆個獨立的控制器同時異步的訪問存儲單元,兩個端口地址不同,兩個端口上進行讀寫操作一定不會發生衝突。
兩個端口同時存取存儲器的同一地址單元時,就會因數據衝突造成數據存儲或讀取錯誤;
- 兩個端口同時對同一地址單元寫入數據,發生寫入錯誤
- 兩個端口同時對同一地址單元,一個寫入,另一個讀出數據,發生讀出錯誤
2.多模塊存儲器
1) 單體多字存儲器
特點:只有一個存儲體,每個存儲單元存儲m個字,總線寬度爲m個字,一次並行讀出m個字,地址必須順序排列並處於同一存儲單元。
單體多字系統在一個存取週期內,從同一地址取出m條指令,逐條將指令送至CPU執行,每隔1/m存取週期;
缺點:指令和數據在主存內必須是連續存放的。
2)多體並行存儲器
由多體模塊組成,每個模塊都有相同的容量和存取速度,各模塊都有獨立的讀寫控制電路,地址寄存器和數據寄存器。
- 高位交叉編址:高位地址表示體號,低位地址爲體內地址(順序存儲器)
- 低位交叉編址:低位地址爲體號,高位爲體內地址
模塊字長等於數據總線寬度,模塊存取一個字的存取週期T,總線傳送週期爲r,爲實現流水線方式存取,存儲器交叉模塊數應大於等於: m=T/r
m爲交叉存取度,連續時間需要 T+(m+1)r . 順序方式連續讀取m各字需要mT
模塊序號=訪問地址%存儲器交叉模塊數
虛擬存儲器
主存和聯機工作的輔存構成了虛擬存儲器,虛擬存儲器是透明的。
3.段式虛擬存儲器
段式虛擬存儲器中的段是按程序得邏輯結構劃分的,各段長度因程序而異,把虛擬地址分爲兩部分:段號和段內地址。虛擬地址到實際地址之間的變換是由段表來實現的。段表是程序的邏輯段和在主存中存放地址的對照表。段表每一行記錄了與某個段對應的段號,裝入位,段起點和段長等信息。具有邏輯獨立性,易於編譯,管理,修改和保護,便於多道程序的共享。
5.快表TLB
把經常訪問的頁表放在高速緩衝器組成的快表中,放在主存上的頁表表示慢表,同時進行查找,
6.虛擬存儲器與Cache比較
不同:
- Cache主要解決系統速度,而虛擬存儲器爲了解決主存容量
- Cache全由硬件實現,是硬件存儲,對程序員透明;虛擬存儲器由OS和硬件共同實現,是邏輯上的存儲器,對系統程序員不透明,對應用程序員透明。