组成原理-存储存储器的相关知识
Posted Mount256
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组成原理-存储存储器的相关知识相关的知识,希望对你有一定的参考价值。
文章目录
1 主存储器
1.1 随机存储器 RAM
特点 | SRAM(静态) | DRAM(动态) |
---|---|---|
存储信息 | 触发器 | 电容 |
破坏性读出 | 否 | 是 |
需要刷新 | 不要 | 需要(分散刷新、集中刷新、异步刷新) |
地址传送 | 行、列地址同时送 | 行、列地址分开两次送(地址复用技术) |
读写速度 | 快 | 慢 |
成本 | 高 | 低 |
用途 | Cache | 主存 |
1.2 只读存储器 ROM
- EPROM、EEPROM、Flash(U盘)
- SSD(固态硬盘)
1.3 串行访问存储器
- 磁带、磁盘、光盘(CD-ROM)
1.4 多模块存储器
- 高位交叉存储器:高位地址表示体号,低位地址表示体内地址
- 低位交叉存储器:低位地址表示体号,高位地址表示体内地址(常考)
2 字长和存储容量
2.1 存储单位
在计算机组成原理课程中,使用 K、M、G、T 均表示以 2 为底的单位。如 2K 个存储单元的意思是 2048 个存储单元,而不是 2000 个。但是,对于磁盘的存储容量及数据传输率,依然使用以 10 为底的单位。
单位 | 大小 | 十六进制数 |
---|---|---|
K | 210 | 400H |
M | 220 | 10,0000H |
G | 230 | ~ |
T | 240 | ~ |
注意!!!408 考试使用 KB、MB、GB、TB 表示 2 为底的存储单位!!!
注意!!!408 考试使用 KB、MB、GB、TB 表示 2 为底的存储单位!!!
注意!!!408 考试使用 KB、MB、GB、TB 表示 2 为底的存储单位!!!
10 为底的存储单位 | 2 为底的存储单位 |
---|---|
KB = 103B | KiB = 210B |
MB = 106B | MiB = 220B |
GB = 109B | GiB = 230B |
TB = 1012B | TiB = 240B |
【例】128 MB = 128 * 220 B = 27 * 220 B = 227 B
16MB = 16 * 220 B = 24 * 220 B = 224 B
2.2 字长
-
字长:用于表示 CPU 内部通用寄存器的宽度。字长包括机器字长、指令字长、存储字长,必须为字节(8 位)的整数倍。
-
机器字长:机器进行一次整数运算所能处理的二进制数据的位数,即 CPU 位数,或简称为字长。
【注】操作系统位数:操作系统可寻址位数(小于等于 CPU 位数)。32 位处理器只能装 32 位操作系统而不能装 64 位操作系统,64 位处理器能装 32 或 64 位操作系统。
名称 | 16 位机器(CPU)中的位数 | 32 位机器(CPU)中的位数 | 64 位机器(CPU)中的位数 |
---|---|---|---|
位 (bit, b) | 1 | 1 | 1 |
字节 (byte, B) | 8 | 8 | 8 |
半字 (1B/2B/4B) | 8 | 16 | 32 |
字 (2B/4B/8B,机器字长) | 16 | 32 | 64 |
双字 | 32 | 64 | 128 |
四字 | 64 | 128 | 256 |
-
指令字长:一个指令字中包含的二进制位数。
-
存储字长:一个存储单元存储的二进制位数。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的 2 倍,则需要 2 个访存周期来取出一条指令;若指令字长等于存储字长,则取指周期等于机器周期。
补充:不同机器下的数据类型长度
类型 | 16 位机器 | 32 位机器 | 64 位机器 |
---|---|---|---|
char | 8 | 8 | 8 |
short | 16 | 16 | 16 |
int | 16 | 32 | 32 |
long | 32 | 32 | 32 |
long long | 64 | 64 | 64 |
float | 16 | 32 | 32 |
double | 64 | 64 | 64 |
2.3 存储容量
存储容量 = 存储单元个数 * 每个存储单元的长度(位数,又称为存储字长)
【例 1】存储器容量为 2M * 8 位,表示该存储器有 2 * 220 = 221 个存储单元(若为 SRAM,则有 21 根地址线),每个存储单元存放 8 位二进制数据(有 8 根数据线,存储字长为 8 位,即 1 字节),存储容量为 2M * 1B = 2MB。
【例 2】存储器容量为 8K * 16 位,表示该存储器有 8 * 210 = 213 个存储单元(若为 SRAM,则有 13 根地址线),每个存储单元存放 16 位二进制数据(有 16 根数据线,存储字长为 16 位,即 2 字节),存储容量为 8K * 2B = 16KB。
- 设 A 存储器容量为 x1 * y1 位,B 存储芯片容量为 x2 * y2 位,则组成 A 存储器所需要的 B 芯片片数为
(x1 * y1)/(x2 * y2)
【例 3】16 片 2K * 4 位的存储芯片,可设计为多少存储容量的 16 位存储器?
设存储单元个数为 M,则有:
(M * 16) / (2K * 4) = 16
,解得 M = 8K。
【例 4】内存按字节编址,地址从 90000H 到 CFFFFH,若用存储容量为 16K * 8 位芯片构成该内存,则需要多少块芯片?
存储单元个数为 D0000H - 90000H = 40000H = 4 * 164 = 218 = 28 * 210 = 256K,且内存按字节编址(8 位),所以有:
(256K * 8) / (16K * 8) = 16
,即需要 16 块芯片。
【例 5】某 32 位机器的内存按字编址,地址从 90000H 到 CFFFFH,若用存储容量为 16K * 8 位芯片构成该内存,则需要多少块芯片?
存储单元个数为 D0000H - 90000H = 40000H = 4 * 164 = 218 = 28 * 210 = 256K,且内存按字编址(每个存储单元大小为 32 位),所以有:
(256K * 32) / (16K * 8) = 64
,即需要 64 块芯片。
2.4 主存容量的扩展
- 位扩展法:8K * 1b --> 8K * 8b
- 字扩展法:16K * 8b --> 64K * 8b
- 字位同时扩展法:16K * 4b --> 64K * 8b
3 磁盘的平均存取时间
- 设磁盘转数为 r 转/秒,每条磁道容量为 N 字节,则磁盘传输速率 = r * N
【注】对于磁盘,K、M、G、T 是以 10 为底的单位,而不是以 2 为底!
1K = 103,1M = 106,1G = 109,1T = 1012
。比如 20MB/s = 20 * 106 B/s ≠ 20 * 220 B/s。
(一个扇区的)平均存取时间 = 寻道时间 + 旋转延迟时间(磁头定位到所在扇区的时间)+ 传输时间(磁头扫过一个扇区所用的时间)
- 默认情况下:
旋转延迟时间 = (旋转一圈的时间 / 2) = (1 / 磁盘转数) / 2
传输时间 = (旋转一圈的时间 / 每条磁道的平均扇区数) = (一个扇区的大小 / 数据传输率)
【注】因为在定位过程中,最多旋转 1 圈,最少不用旋转(0 圈),所以在平均情况下,需要旋转半圈,时间需除于 2。
相关例题
【例 1】设磁盘转速为 7200 转/分,平均寻道时间为 9ms,每条磁道的平均扇区数为 400,则访问一个扇区的平均存取时间是多少?
- 旋转一圈的时间 = (60s / 7200) * 1000 = 8ms,旋转延迟时间 = 1/2 * 旋转一圈所用时间 = 4ms
- 传输时间 = (60s / 7200) / 400 * 1000 = 0.02ms
- 寻道时间 = 9ms
- 平均存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间 = 9ms + 4ms + 0.02ms = 13.02ms
【例 2】设磁盘的转速为 10000 转/分,平均寻道时间为 6ms,磁盘传输速率为 20MB/s,磁盘控制器延迟为 0.2ms,读取一个 4KB 扇区所需的平均时间是多少?
- 旋转一圈的时间 = (60s / 10000) * 1000 = 6ms,旋转延迟时间 = 1/2 * 旋转一圈所用时间 = 3ms
- 传输时间 = 读取时间 + 延迟时间 = (4KB) / (20MB/s) * 1000 + 0.2 = 0.2ms + 0.2ms = 0.4ms
- 寻道时间 = 6ms
- 平均存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间 = 6ms + 3ms + 0.4ms = 9.4ms
以上是关于组成原理-存储存储器的相关知识的主要内容,如果未能解决你的问题,请参考以下文章
(计算机组成原理)第三章存储系统-第六节1:高速缓冲存储器Cache及其相关基本概念程序访问的局部性原理和命中率