計算機(jī)組成原理—存儲器
計算機(jī)組成原理—硬件結(jié)構(gòu)
二、存儲器
1.概述
存儲器是計算機(jī)系統(tǒng)中的記憶設(shè)備,用來存放程序和數(shù)據(jù)
1.1存儲器的層次結(jié)構(gòu)


緩存-主存層次主要解決CPU和主存速度不匹配的問題,速度接近緩存
主存-輔存層次主要解決存儲系統(tǒng)的容量問題,容量接近與價位接近于輔存
2.主存儲器
2.1概述
主存與CPU的聯(lián)系

- 主存中存儲單元地址的分配
主存各存儲單元的空間是由單元地址號來表示。
字地址使用該地址高位字節(jié)的地址來表示,其字地址是4的整數(shù)倍,正好用地址碼的末兩位來區(qū)別

高地址存高位數(shù)據(jù)
低地址存低位數(shù)據(jù)
設(shè)地址線24位
若字長8位,按字節(jié)尋址的范圍是16M(2的24次方)
若字長16位,按字節(jié)尋址的范圍是8M
若字32位,按字節(jié)尋址的范圍是4M
- 主存的計數(shù)指標(biāo)
主要指標(biāo)是存儲容量和存儲速度
存儲容量:存儲單元個數(shù)*存儲字長(注意單位,是否除以8)
存儲速度,分為存取時間和存取周期
存儲器帶寬:頻率*位數(shù)(1us = 1MHz)
3.半導(dǎo)體存儲芯片
3.1基本結(jié)構(gòu)

3.2譯碼驅(qū)動方式
- 線選法:在矩陣中每次選一行
- 重合法:在矩陣中利用X/Y地址譯碼器找到1位
4.隨機(jī)存取器
4.1靜態(tài)RAM(SRAM)
靜態(tài)RAM是用觸發(fā)器工作原理存儲信息的,存儲信息會保持原狀態(tài),不需要再生
4.1.1SRAM單元電路

4.SRAM的舉例
以Intel 2144為例,1k*4(10根地址線,4根數(shù)據(jù)線)
其內(nèi)部存儲矩陣如下圖所示

此結(jié)構(gòu)將列分為4個組,每組16列,存取時,正好在每組拿一列,4位輸出/輸入
4.2動態(tài)RAM(DRAM)
常見的動態(tài)RAM的基本單元電路有三管式和但管式兩種,都是靠電容存儲電荷原理來寄存信息。需要刷新,一般間隔2ms(一次存取)
4.2.1三管式
單元電路

其中的存儲的0/1與原存信息是相反的
1k*1結(jié)構(gòu)示意圖

4.2.2單管式
單元電路

16k*1結(jié)構(gòu)示意圖

注:此時用了地址線的復(fù)用,先行地址,在列地址
4.3刷新
刷新是一行一行的刷新
4.3.1集中刷新
在2ms內(nèi)選一個時間段進(jìn)行刷新,會存在"死區(qū)"(不能進(jìn)行任何操作)
4.3.2分散刷新
每行都進(jìn)行一次集中刷新,無"死區(qū)",但會使存取周期變長
4.3.3異步刷新
將上述兩種方法結(jié)合,在2ms內(nèi)尋找完成每一行刷新需要的時間間隔,在這個間隔內(nèi)做一次集中刷新
4.3.4指令譯碼階段刷新
不會出現(xiàn)"死區(qū)"
4.4靜態(tài)和動態(tài)的比較
| 動態(tài)RAM | 靜態(tài)RAM | |
|---|---|---|
| 集成度 | 高 | 低 |
| 封裝性 | 低 | 高 |
| 功耗 | 低 | 高 |
| 價格 | 低 | 高 |
| 速度 | 低 | 高 |
| 刷新 | 需要 | 不需要 |
5.存儲器與CPU的連接
5.1存儲容量的擴(kuò)展
- 位擴(kuò)展
位擴(kuò)展是指增加字長,eg:1k * 4的芯片可以變成1k * 8的

- 字?jǐn)U展
字?jǐn)U展是指增加存儲器字的數(shù)量,eg:1k * 8的芯片可以變成2k * 8的

- 字,位擴(kuò)展
將上面兩種擴(kuò)展結(jié)合
5.2存儲器和CPU的連接
- 選擇合適的芯片(種類,個數(shù))
- 數(shù)據(jù)線
- 地址線
- 控制線
- 片選信號:位擴(kuò)展:串聯(lián)(一起選用);字?jǐn)U展:互斥(只用一個)
5.2.1數(shù)據(jù)線(2個為例)
- 位擴(kuò)展:一個芯片連高位,一個芯片連接低位
- 字?jǐn)U展:對應(yīng)相連即可

5.2.2地址線
- 位擴(kuò)展:對應(yīng)相連即可
- 字?jǐn)U展:先連低位,如有剩余,則連片選等

5.2.3控制
- 若只有一個讀寫,則連接MAR
5.2.4片選信號
基本思想:位擴(kuò)展:串聯(lián)(一起選用);字?jǐn)U展:互斥(只用一個)
6.存儲器地校驗
6.1漢明碼地組成
漢明碼具有一位糾錯能力,默認(rèn)偶檢驗(可以改為奇檢驗)
漢明碼 = 信息碼 + 校驗碼
設(shè)信息碼個數(shù)為n,校驗碼地個數(shù)為k,則要滿足n + k <= 2^k - 1

- 校驗碼的存放位置
從低到高位依次為,2^k(k從零開始...)
- 校驗碼0/1的選擇
若是偶檢驗,使該位與其校驗位的1的個數(shù)為偶數(shù);奇檢驗反之
- 判斷與之對應(yīng)的校驗位
將所有位數(shù)的二進(jìn)制寫出,位數(shù)由校驗碼的個數(shù)而定,將1作為對應(yīng)的標(biāo)準(zhǔn)
eg:4位信息碼,3位校驗碼

C是校驗碼,b是信息碼
C1的校驗位:3、5、7、(9)
C2的校驗位:3、6、7、(10)
C3的校驗位:5、6、7
(C4的校驗位:9、10)
6.2糾錯過程
由上述的規(guī)則來判斷是哪一位的0/1出錯
注:有的位置被多個校驗碼校驗,注意檢查
7.提高訪存速度的措施
7.1單體多字系統(tǒng)
如下圖,可以使主存寬帶提高4倍,提高了單體存儲器的工作速度

7.2多體并行系統(tǒng)
- 高位交叉編址的多體存儲器

- 低位交叉編址的多體存儲器

若存期周期位T,總線傳輸速率為r
低位:t = T + (n-1) * r
高位:t = n * T
8.高速緩存存儲器
8.1概述

Cache-主存存儲空間的基本結(jié)構(gòu)
CPU讀取主存某字時,有命中和不命中兩種
- 命中:主存塊已調(diào)入緩存塊
- 不命中:欲訪問的主存塊沒有調(diào)入緩存塊
有關(guān)命中率的計算
命中率 = 命中次數(shù)/總訪問次數(shù)
平均訪問時間 = 命中率 * 訪問Cache的時間 + 未命中率 * 訪問主存的時間
訪問效率 = 訪問Cache的時間 / 平均訪問時間 * 100%
8.2Cache-主存地址映射
計算主存地址時,從右往左算(2的多少次方)
- 直接映射
每個主存塊只與一個緩存塊對應(yīng)

字塊內(nèi)地址:判斷字字塊的存錯單元的個數(shù)
Cache字塊地址:判斷Cache的塊數(shù)
主存塊標(biāo)記:判斷主存的塊數(shù),并減去上述兩個位數(shù)的和
- 全相聯(lián)映射
每個主存塊與任意緩存塊對應(yīng)

字塊內(nèi)地址:判斷字字塊的存錯單元的個數(shù)
主存塊標(biāo)記:判斷主存的塊數(shù),并減去上述位數(shù)
- 組相聯(lián)映射
主存塊只與一個緩存組對應(yīng),每個主存塊與對應(yīng)緩存組的任意緩存塊對應(yīng)

字塊內(nèi)地址:判斷字字塊的存錯單元的個數(shù)
組地址:判斷Cache的組數(shù)
主存塊標(biāo)記:判斷主存的塊數(shù),并減去上述兩個位數(shù)的和
浙公網(wǎng)安備 33010602011771號