存储
来源:互联网 发布:写作起名软件 编辑:程序博客网 时间:2024/05/02 21:11
RAM(随机访问存储器)
- 静态:
SRAM只要有电,则永远保持
用于高速缓存 - 动态
电容充电,不可持续
用于主存和帧缓存区
d×w(d等于行列之积,w为每个超单元存储的位数)的DRAM芯片通过内存控制器电路与CPU进行交流。
响应时先将目标行复制到缓存区,再选择对应的单元。
位于主板的内存模块封装多个DRAM芯片,当CPU需要取出内存地址A的内容时,将地址广播到每个芯片,读取响应位置的超单元。
ROM(可擦写可编程)
断电后依然能保存信息
磁盘(驱动器):
- 构成
- 由1或多个重叠的盘片构成
- 盘片的表面有磁道(同心圆)
- 每个磁道划分成不同的扇区
容量
记录密度:1英寸磁道放入的位数
磁道密度:盘片中心1英寸范围内的磁道数
面密度:记录密度×磁道密度访问
磁盘控制器必须先对磁盘进行格式化(标识出无法使用的柱面)才能存储数据
主机总线适配器将1个或多个磁盘连接到I/O总线
内存映射I/O:接入总线的设备被映射至1个或多个I/O端口(地址)。CPU由此与磁盘进行通信。
磁盘控制器负责转换三元组(盘面,磁道,扇区)和扇区的逻辑号- 寻道时间
- 旋转时间
- 传送时间
- 构成
闪存:基于EEPROM的非易失性存储器
SSD(固态硬盘):基于闪存的磁盘驱动器,由半导体存储器构成
访问速度快于磁盘
内部封装闪存翻译层和1或多个闪存芯片
闪存由块组成,每个块由页组成
写操作:- 对象已有数据需要先将其复制到一个已擦除过的块中
- 在该页所属的块被擦除
存储器层次结构
1. 越向下,访问速度减慢,容量变大,造价降低
2. 上一层的设备作为下一层的缓存
3. 数据以块作为传送单元。层次越低,块的容量加大。
4. L1高速缓存位于CPU和主存之间(可加入L2、L3高速缓存,通过特殊的总线连接到CPU)
4. 读操作
- 缓存命中:程序需要的第k+1层数据对象d位于第k层
- 缓存不命中:第k层会缓存第k+1层的数据对象
5. 强制性失效: CPU 第一次访问相应缓存块
6. 冲突失效: 不同的缓存块由于索引相同相互替换
7. 容量失效: 有限的缓存容量导致缓存放不下而被替换
- 写操作
- 直写:同时写入低一层
- 写回:当该块的内容需要替换时才写入低一层的缓存
- 当写不命中时,写分配:加载低一层的块并更新,非写分配:只写入低一层
高速缓存存储器的组织结构
- 分为S个组,每组有E行,每行中有B个块
- 行通过有效位表示该行是否为空
- 由于映射的存在,系统通过标记位判断该行是否存储了相应的内容。
- 查找时地址被划分为标记,组索引和块偏移3段
- 直接映射高速缓存:E=1
组相连高速缓存
全相联高速缓存:S=1
组选择,行匹配,字选择(块偏移)
以CP430的高速缓存为例:开始时缓存不命中,存储后由于地址0和1的内容在同一块中,所以读1时可以命中。
地址8的内容位于块4中,块6映射到组0,由于地址8的标记位和缓存的标记位不一致,所以缓存不命中。
float f1(float a[8],float b[8]){ float sum=0.0; int i; for(i=0;i<8;++i) sum+=a[i]+b[i]; return sum;}
当存放数组a和b的不同块被映射到同一组时(例如a[0~3]和b[0~3]映射至组0),导致块之间的抖动,即反复加载和驱逐相同的组。所以将数组a定义为a[12],改变其组索引。图CP432
总线:用于传送字
- 读事务:主存传送数据至CPU
1.CPU将地址由系统和内存总线发送至主存
2.主存将数据由相反方向传递 - 写事务:CPU传送数据至主存
1.CPU将地址由系统和内存总线发送至主存
2.CPU将数据由系统和内存总线发送至主存
1.主存将数据存储到相应地址
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 存储
- 数据存储-简单存储
- 存储过程、存储函数
- 列存储、行存储
- 顺序存储 链式存储
- Android存储-文件存储
- shiro的具体理解
- 多校赛2017 R1
- linux centos修改ssh端口号
- Java 获取系统中可用字体的名字
- 数据集(人数统计、密度分析)
- 存储
- 动态生成input绑定事件无效如:blur
- ajax后台套用两层JSONOBJECT返回到前台的方法
- cfRound425B. Petya and Exam
- uva227 puzzle
- 图片边角形
- HDU1201-18岁生日
- DATAKIT.CrossManager.2017.1.Win32_64 2CD
- 2017多校1 b hdu 6034