計算機組成原理---第四章 存儲器(上)

存儲器

功不唐捐

筆記框架:

概述

4.1.1存儲器分類

存儲器分類

4.1.2 存儲器的層次結構

1.存儲器速度,容量和價位的關係
存儲器的層次結構
沒有哪個存儲器是可以同時滿足這三個要求的

這就形成了不同的存儲結構之間相互組合最終組成一個如下存儲系統層次結構

2.存儲系統層次結構
兩個層次
(1)緩存-主存
解決問題:CPU 與 主存 速度不匹配問題
完成:硬件完成
透明:透明(程序員不用知道內部如何實現)
(2)主存-輔存
解決問題:存儲系統的容量問題
完成:硬件+操作系統(軟件)

爲了增加 主存和輔存的容量這裏添加了虛擬存儲器,程序員會得到一個更大的存儲空間,將虛擬地址轉換爲邏輯地址後對數據進行存取,而這一過程對程序員是透明的。對於虛擬存儲器的深入理解可以看鏈接

4.2 主存儲器

4.2.1概述

1.主存儲器的詳細構成

在這裏插入圖片描述

2.主存儲器與 CPU 的連接

在這裏插入圖片描述

讀數據: CPU 將該字的地址送到 MAR ,經地址線轉到主存,讀出此單元的數據。內存將數值讀到數據總線上再由 CPU 控制 MDR 送到相應的部件上

存數據: CPU 將該字所在主存儲單元的地址 由 MAR 送到地址主線,將字節信息存入 MDR,CPU 再向內存發出寫命令,再將 MDR 的信息寫入對應的地址線上傳給相應的部件

3.主存中存儲單元地址的分配

地址分配問題就是在已知地址線,電腦位數的情況下,以按字,按字節尋址內存的尋址範圍是多少,即如何給內存單元進行編號。筆記進行了單獨的整理

按字節/字尋址

題:一個機型:有24根地址線,字長爲32位,則

每一個存儲字包含4個字節,按字存儲需要兩根地址線

按字節尋址
224 = 16M
按字尋址
224-2 =4M

另一個機型:有24根地址線,字長爲16位,則

每一個存儲字包含2個字節,按字存儲需要一根地址線

按字節尋址
224 = 16M
按字尋址
224-1 =8M

4.主存的技術指標

主存的技術指標

4.2.2 半導體存儲芯片

什麼是存儲芯片

在這裏插入圖片描述

在內存條中這樣的一個個的黑色方塊就是存儲芯片,芯片中有:具有記憶功能的存儲矩陣,譯碼驅動電路和讀/寫單路等,下面將從芯片整體出發逐個剖析芯片內部

1.半導體存儲芯片的基本結構

內存芯片的結構
存儲芯片包含三部分:譯碼驅動存儲矩陣, 讀/寫電路
其中存儲芯片依靠:地址總線,數據總線,控制總線(片選線+讀/寫控制線)與外部鏈接。下面是這幾個概念的解釋

(1)譯碼驅動:將地址總線的地址送來的地址號翻譯成對應存儲單元的選擇信號
(2)讀/寫電路:用來完成讀寫操作
(3)地址線:單項輸入,將地址輸入由 CPU 或其它設備用來尋找數據。上圖有對於地址線,數據線的計算問題,具體計算可見按字節/字尋址
(4)數據線:雙向傳輸,與數據的輸入輸出有關
(5)片選線:用於選擇芯片 ,判斷所給出的地址是否是針對這個存儲芯片的地址,被選擇的存儲單元與字節是否在此芯片當中。用 CS(有上劃線)或CE(有上劃線)信號判斷

帶上劃線的信號什麼意思
帶有上劃線的信號是指,該信號在低電平有效,如果一個信號 CE 爲低電平狀態則代表這個芯片就是所選的芯片

(6)讀/寫控制線:決定芯片的讀/寫操作,可用 WE一個信號的兩種狀態表示寫/寫操作,或者 OE(上劃線)及 WE(上劃線)兩個信號分別表示讀操作和寫操作
(7)芯片的組合:

數據存儲

例如:一個芯片的大小爲 16K * 1位,如果想要一個 64K * 8 位的內存,首先將8個內存芯片組成一組,要有四組,所以一共有32個芯片,這32個芯片被片選線進行連接。
第一組存儲芯片的地址爲:0 ~ 16K-1
第二組存儲芯片的地址爲:16K ~ 32K-1
第三組存儲芯片的地址爲:32K ~ 48K-1
第四組存儲芯片的地址爲:48 ~ 64K-1
所以如果想訪問 地址65535 時 ,在最後一列的那八個的片選器是有效的

2.半導體存儲芯片的譯碼驅動方式

主要是用於:地址總線給出了地址後如何在內存中找到存儲單元

有兩種方法 : 線選法重合法
1.線選法
線選法
特點:一根字選線對應一根存儲單元
工作原理: 這裏有 4根地址線 A1,A2,A3,A4,這四根地址線可以表示 16 個存儲單元,在內存中對應了16根字線,可以看到是 0~15,選中0000這個存儲單元,其餘 15根不選中。用下面的8根位線直接爲單元內每一位傳輸數據

缺點: 如果有一個 1M 的地址線,那麼在內存中就要部署 220個字線,來對這 1M 的存儲單元寫入數據,這樣會對內存電路集成中造成很大困難,所以這種方法更適合存儲量不大的芯片

2.重合法
在這裏插入圖片描述

特點: 將線選法中單一的地址譯碼器分成了行地址譯碼器和列地址譯碼器,行和列的交匯處共同鎖定一個單元
工作原理: 加入選中行地址譯碼器爲 00000,這時0行一整行都被選中。然後讓列地址譯碼器爲00000,那麼就可以確定是0行0列的這個單元
適用性: 更適合存儲大的內存芯片

4.2.3隨機存儲器(RAM)

隨機存儲器可以分爲:靜態RAM(SRAM) 與 動態 RAM(DRAM) 。根據不同的特性在電腦中承擔的任務也不同

1.靜態 RAM

(1)靜態 RAM 的基本電源電路

基本電源電路:用於存儲 0/1 代碼的那一塊電路

T1~T4是用來保存數據的觸發器。觸發器用於保存數據,保存電路的狀態
當進行數據傳輸時,片選器選中的整行行開關會被全部打開,但是隻有列地址是通着的那一列上的觸發器纔會被保存數據。A 是觸發器的源端,A’ 是觸發器的非端

讀操作
下方的圖是由 6根 MOS(晶體管的一種)組成的基本電路
在這裏插入圖片描述
首先經過譯碼之後相應的 T5,T6打開;其次讓 T7,T8打開。假設觸發器已存有 1 信號,即A點爲高電平,這時 T6被接通

在這裏插入圖片描述
再由位線 A 通過T8作爲讀出放大器的輸入信號,在讀選擇有效時將 1 輸出

寫操作
寫1
根據譯碼將響應的 T5,T6,T7,T8晶體管打開,寫選擇器有效

在這裏插入圖片描述
同過 DIN 這條線將數據由左右兩端進行輸入分別通向 A,A’,最終將數據寫入

在這裏插入圖片描述
左邊的電路有取反操作,保證了 A’ 中寫入的數據是相反的,最終完成寫的操作

(2)靜態RAM芯片存儲矩陣

Intel2114

這是一個Intel2114 RAM芯片,下面是它的結構

A0~A9 是10根地址線,說明有 1M 的存儲單元
I/O1~I/O4 是四根數據線,可以存放 4位的數據,一次讀取四位的數據
WE,CS 分別是片選線與讀寫控制線,低電平有效
於是就組成了一個 1K x 4位 爲的芯片,這個存儲矩陣由 64 x 64 個基本單元電路組成

下面是針對這個芯片整體的讀寫過程,相比於上面更加宏觀

讀操作
在這裏插入圖片描述
2114結構可以一次傳輸 4 位的數據,所以可以將這個64 * 64的矩陣分爲4組,每組裏面有16個單元。

在這裏插入圖片描述
假設我將行地址譯碼輸入000000,則會選中0行的所有單元,也就是上方圖紫色的單元;列地址譯碼輸入0000,則會選中每一組的第一個單元;行選擇,列選擇同時工作,由下方的 WE,CE同時控制就可以實現對於黃色框的讀數據操作。
根據上面的基本電路的知識,最終通過讀寫電路將 A端與A’ 端的數據讀取出來

寫操作結構相似

2.動態RAM

(1)動態 RAM 的基本單元電路
常見的動態 RAM 基本單元電路有 三管式和單管式兩種。與靜態RAM的觸發器不同,動態RAM使用電容存儲數據,電容中有電荷爲1否則爲0

a. 三管式
在這裏插入圖片描述
T1,2,3 三個控制管,通過他們控制數據讀出和寫入
T2讀,T3寫,保存在 Cg電容當中

b.單管
在這裏插入圖片描述
通過 T 這個控制管,將數據保存在 Cs電容當中

(2)對基本單元電路如何讀出和寫入

a.三管式

讀操作

如果進行讀操作,首先將 T4晶體管進行通電,VDD通過T4讀數據線進行充電,讀選擇信號有效,T2也就會被導通。
在這裏插入圖片描述
如果Cg沒有進行充電是0,也就是我們想要讀出的數據是0,T1不用進行通電,電流只通過T2傳到讀數據線,最終的結果是高電平1。讀取的數據也是1.
在這裏插入圖片描述
如果我們想要讀出的數據是1,Cg中的數據是1,則 T1進行通電,那麼電流就會通過 T1,T2同時放電,高電平變低電平,於是讀數據線的數據就是0。

所以對於讀操作讀出的數據最後要加一個 “非門”邏輯判斷

寫操作
與讀操作相似,寫操作只需T3一個晶體管控制,T3通電寫入1,不通電寫入0

讀出與原存信息相反
寫入與輸入信息相同

b.單管

讀操作
在這裏插入圖片描述
如果 CS中保存的是0,則數據線沒有電流
在這裏插入圖片描述
如果 CS中保存的是1,則數據線有電流

寫操作

寫入的是1 : 對電容進行充電
寫入的是 0:對電容進行放電

(2)動態 RAM 芯片存儲矩陣

a.三管式

讀操作

這個芯片有 5根行地址線,5根列地址線。與靜態不同在於添加了兩個不同的選擇線,分別進行讀寫操作。(在靜態中使用的是位線)在這裏插入圖片描述

假如對 行地址譯碼器輸入 00000,所對應的整行會被連通。列地址譯碼器輸入 00000,最終確定所選單元,也就是黃色的單元。同時相應的讀操作的選擇線會被選中,通過讀寫控制電路將數據讀出。

刷新放大器:(三角形區域)因爲電容會漏電,一定時間之後電容的數據會消失,所以要對存儲單元恢復存儲狀態。

寫操作

在這裏插入圖片描述

寫入時換了傳入的地址,最終在黃色單元內進行數據的寫入。

b.單管

芯片結構

單管芯片結構4116單管芯片:這是一個 16K x 1位的存儲芯片,它的特殊之處在於理應該有14根地址線,但是這裏只有7根,地址分兩次傳輸,先送 7位行地址保存到芯片內的行地址緩存器,再傳入列地址。芯片內有時序電路,它受 行地址選通 RAS(上劃線),列地址選通 CAS (上劃線),以及寫允許信號 WE(上劃線)控制

存儲矩陣示意圖

讀操作
在這裏插入圖片描述
假設選中63行0列的單管MOS電路電容當中保存的信息會被送出,到讀放大器的左側,如果電容中有電,讀放大器左側爲1,右側爲0.如果沒有電,左端爲0,右端爲1。相反,讀放大器右側的電路,電容中爲1輸出的就是1

讀放大器左側,有電最後輸出爲0,沒有電輸出爲1
讀放大器右側,有電最後輸出爲1,沒有電輸出爲0

寫操作

在這裏插入圖片描述
寫操作與讀操作一致,放大器右側讀寫始終一致,左側,如果想要寫入1,則保存的是0.

這樣一想,如果我們在左側保存1,實則保存的是0。在讀出的時候由於讀放大器所以再取一次反,讀出的就是1了不用再取反

這樣使寫入與讀取一致

撬撬板電路:讀放大器是一個撬撬板電路,類似一個觸發器,使得左右 兩邊電平相反

(3)動態RAM 的刷新

首先先認識幾個定義

存取週期:對於某個單元存取一次數據所用的時間
刷新週期:存儲單元恢復一次原狀態的時間間隔

  1. 集中刷新

定義:在規定的一個刷新週期內,對全部的存儲單元逐行進行刷新

在這裏插入圖片描述

對一個 128 x 128矩陣的存儲芯片進行刷新,存取週期爲 0.5us,刷新週期爲2ms,是4000個存取週期。
對128行進行逐行刷新共需 64us(128個存取週期)還剩3872個存取週期,用來讓 CPU,I/O設備讀,寫維持信息。
這64us不能進行讀/寫,CPU,I/O設備只能等待,所以這段時間成爲死時間,訪存區成爲死區。死時間率爲 128/4000=3.2%。這也是集中刷新的缺點。

2)分散刷新
定義:對每行存取單元的刷新分散到每個存儲週期完成。將每個單元的存儲週期分爲兩段,每段爲0.5us,tM 段用於tR,tM 可以用於CPU等設備的讀寫操作;tR用於刷新。這樣的好處就是沒有死區

在這裏插入圖片描述
一個128 x 128的矩陣,2ms爲一個刷新週期,可以將數據刷新156遍,但是刷新太過頻繁,系統性能會降低

3)異步刷新
定義: 將前兩種方法結合

在這裏插入圖片描述

存儲週期是0.5us,並且在2ms內將所有行刷新一遍即可,所以每隔15.6us刷新一行,刷新這一行的死時間爲 0.5us,如果說將這段死時間進行合理安排,比如安排CPU譯碼則避免了內存CPU的信息傳輸,避免死時間,提升工作效率

3.靜態 RAM(DRAM) 動態 RAM 比較(SRAM)

在這裏插入圖片描述

靜態 RAM 多用於做 cash ,動態RAM多用於做 內存存儲


總結

l8zNjczMTcwNg==,size_16,color_FFFFFF,t_70)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章