MRD、MAR逻辑上属于主存但物理上属于CPU
CPU外部设备给出地址,通过译码驱动电路在存储矩阵中找到数据,再通过读写电路传输数据
片选线:控制线的一种,用于传递芯片选择信号,用来找到数据存储的目标芯片,CS’芯片选择,CE‘芯片使能
读写控制信号:控制读写信号,如果只有一根读写线,那么WE’0表示写,1表示读,如果有两根OE‘只允许读,WE’只允许写
地址线是单向的,数据线是双向的
将地址线接入地址译码器,通过译码找到指定的一组芯片,然后通过读写信号控制信号的传输
问题:假如是1M*8位那么译码器将位于1M根线!!!
更上面线选法的区别在于将一位改为二维,只有在XY重合的交点才能输出/出数据
跟半导体芯片的重合法相似,只有行列交点能用
读操作流程:预充电信号导通T4打开,由于读数据线与VDD直接相连故读数据为1,传入读信号T2 打开如果Cg=1那么T1打开导致读数据线直接接地,最后读出数据为0,反之为1。因此读出数据与原存储信息相反故保证读操作的正确性需要添加一个非门。写入操作与输入信息相同。
另一种结构的读操作:子痫导通T打开Cg=1则数据线有电流通过,此时数据为1否则为0,写入时数据线为1,Cg进行充电,反之放电。
因为电容长时间后会漏电导致数据丢失故需要定期刷新。
注意:刷新与行地址有关而不是列
以 128 × 128 矩阵为例
专门拿出一段时间用于刷新操作
死区:这段时间用于刷新CPU不能对其进行操作
死区肯定是越少越好故有了下面的分散式刷新
还是以 128 × 128 矩阵为例
这种方式是边读边刷新这样就可以解决死去的问题但是这样也就导致了存取周期的时间翻倍了,而且假如128us内就可以完成刷新全部数据的操作在2ms内就是进行15.6次刷新,这是一种过度刷新降低了CPU的效率
将2ms非为128粉每份15.6us,在每一份中抽出0.5us用于刷新这样就可以实现局部内是集中式刷新,整体式分散式刷新了,并且如果将刷新时间安排的恰当就不会出现死区,比如说将刷新安排在指令译码阶段就不会出现死区
动态RAM(DPAM)一般用作主存 | 静态RAM(SRAM)一般用作Cache缓存 | |
---|---|---|
存储原理 | 电容 | 触发器 |
集成度 | 高 | 低 |
芯片引脚 | 少 | 多 |
功耗 | 小 | 大 |
价格 | 低 | 高 |
速度 | 慢 | 高 |
刷新 | 需要 | 不需要 |
一般用于存储系统程序,系统配置信息等
行列选择线交叉处有 MOS 管为“1”
行列选择线交叉处无 MOS 管为“0”
电可擦写
局部擦写
全部擦写
例如U盘就是Flash Memory
EPROM 价格便宜 集成度高
EEPROM 电可擦洗重写 比 EPROM快 具备 RAM 功能
目的是怎加存储字的字长
将两片芯片用片选线连在一起组成一块新的存储体,其中一块芯片接到高位的四根数据线,另一个芯片接到地位的四根地址线
位扩展的关键就是将两个芯片连接成一个芯片,同时(通过片选线来实现)进行读写操作。
目的是增加存储在的数量
可以将多余的一根地址线当作片选线,例如A10=0则第一个芯片工作,A10=0第二个芯片工作
将两个芯片为一组构成一个1K x 8位的存储体,然后适用多余的两根地址线通过译码器生成四根片选线,利用片选线找到目标存储体
基本方法有:
编码的检测能力和纠错能力取决于任意两组合法代码之间二进制位的最少差异数
编码的最小距离:任意两组合法代码之间 二进制位数 的 最少差异
编码的纠错 、检错能力与编码的最小距离有关
汉明码是具有一位纠错能力的编码
关于汉明码的介绍可以看我的另一篇文章http://t.csdn.cn/ujnc6
增加存储器的带宽
设计:主存控制器16位,存储体64位
这样异常能取出4个数据或指令于数据寄存器中下次直接从数据寄存器中取而不是存储体,相当于缓存
问题:
各个体并行工作
这样就也进行并行存储了,通过体号控制某个存储体体内地址找到具体的位置,这样存储体与存储体之间是相互独立的,可以并行使用
问题:程序是顺序存储的,故会导致某一个存储体过于繁忙,其余存储体过于空闲
用低位存储将原本纵向的存储改为横向的存储,这样就可以让每一个存储体都用上,解决了高位交叉的连续地址读取效率低下的问题
低位交叉的特点:在不改变存取周期的前提下,增加存储器的带宽
在一个单体访存周期中当M0接受到CPU发出的取数指令,M0开始准备数据,在M0准备数据的时候CPU再给M1发生取数指令,依次循环。这样就可以进行并行操作
高位加成主要用于存储器容量的扩展
低位交叉主要用于存储器带宽和速度的提高
在系统时钟的控制下进行读出和写入
CPU 无须等待
由 Rambus 开发,主要解决 存储器带宽 问题
在 DRAM 的芯片内 集成 了一个由 SRAM 组成的 Cache ,有利于 猝发式读取
避免 CPU “空等” 现象
CPU 和主存(DRAM)的速度差异
程序访问的局部性原理:时间局部性,当前使用的指令与数据在不久的将来相邻的指令与数据还要继续被使用到
主存和缓存按块存储
块的大小相同
缓存共有 C 块 主存共有 M 块
M >> C
CPU 欲访问的信息在 Cache 中的 比率
命中率 与 Cache 的 容量 与 块长 有关
一般每块可取 4 ~ 8 个字
块长取一个存取周期内从主存调出的信息长度
效率 e 与 命中率 有关
设 Cache 命中率 为 h,访问 Cache 的时间为 tc ,访问 主存 的时间为 tm
映射:主存与Cache地址之间的映射关系 Map
变换:将主存地址转换为Cache地址
替换机构:当Cache已满时,应该采用替换算法,替换Cache中的内容
当CPU需要的数没有事,主存会先将数据给CPU然后再存入Cache
写操作与读操作不同,写操作需要考虑Cache 和主存的一致性
常见的有两种方法:
片载(片内)Cache
片外 Cache
统一缓存:将指令与数据保存到同一个Cache中
分立缓存:将指令与数据分开保存到指令Cache和数据Cache
主存当中任意一个给的的它都只能映射到某一个指定的Cache块中
具体做法:将主存中一部分对映到Cache中的某一块,且每个部分划分的大小与Cache一样
问题:Cache的利用率低,冲突率高
主存中的任一块可以映射到缓存中的任一块,Cache利用率高
问题:CPU从Cache中取数据时需要遍历一遍Cache,效率低
直接映射与全相联映射走了两个极端
直接映射:一个主存块只能放到一个Cache块中
全相联映射:一个主存块能放在任意一个Cache中
而组相联映射就是这两种映射的折中
先把Cache块分成若干组,每组有若干块
与直接映射比一个主存块可以存放在若干个地方,与全相联映射比,主存块将会存放到某个指定的区域当中,而不是任意
其实直接映射与全相联映射可以理解为组相联映射的一种极端,直接映射就是每组只有一个Cache块,而全相联映射就是分组的时候之分一组
对于分层Cache靠近CPU的Cache要求高速故可以采用直接映射,而远离CPU的Cache可以采用全相联映射,中间部分采用组相联映射。
特点:不直接与 CPU 交换信息
磁表面存储器的技术指标
写线圈通电的方向不同导致产生的磁场方向不同存储体的磁场磁化方向就不同,磁场方向就代表0或1
磁层在旋转,存储体经过读线圈就会切割磁感线产生电流,电流方向代理0或1
(1) 固定磁头和移动磁头
(2) 可换盘和固定盘
硬盘 | 软盘 | |
---|---|---|
速度 | 高 | 低 |
磁头 | 固定、活动、浮动 | 活动、接触盘片 |
盘片 | 固定盘、盘组大部分不可换 | 可换盘片 |
价格 | 高 | 低 |
环境 | 苛刻 | 不苛刻 |
采用光存储技术 利用激光写入和读出
第一代光存储技术 采用非磁性介质 不可擦写
第二代光存储技术 采用磁性介质 可擦写
只读型和只写一次型 热作用(物理或化学变化)
可擦写光盘 热磁效应