要拆线辣,吃好吃的辣
主存储器
SRAM和DRAM
Cache用SRAM和主存用DRAM分别是贵的便宜的,快的慢的,集成度低的高的,容量小的大的,功耗高的低的。都是易失性半导体存储器。ROM属于非易失性存储器。
SRAM时用双稳态触发器(六晶体管MOS)记忆信息,DRAM用三极管的上的栅极电容存储信息,需要刷新,通常电容上的信息只能维持1-2ms。
SRAM送地址行列同时送,DRAM分两次送(引脚也较少了)。
刷新分为集中刷新,一次性都刷新有死区;分散刷新,对每行的刷新分配到各个工作周期中,前半周期用于读写,后半周期用于刷新,增大了存储周期,但没有死区;异步刷新2ms除以行数,获得刷新间隔,没到这个间隔对一行进行刷新。
存储器芯片内部有存储体、I/O、地址移码、控制电路等。
算引脚数量记得读写信号和片选信号;
ROM
- 掩模式只读存储器Mask Read Only Memory
- 一次可编程只读存储器Programmable Read Only Memory
- 可擦除可编程只读存储器Erasable Programmable Read Only Memory
- Flash存储器
- 固态硬盘 Solid State Drives
主存组成
编制单位指具有相同地址的那些存储元件构成一个单位,可按字节,也可按字,通常采用字节编址。
为了减少DRAM芯片引脚数,采用地址引脚复用技术,行地址列地址通过相同的引脚分两次引入。
多模块存储器
一种空间并行技术
单体多姿存储器
存储器只有一个存储体,每个存储单元存储m个字,一次读出m个字。在一个读周期内能够取出m条指令,但转移指令和连续存放的操作数就不方便了
多体并行存储器
- 高位交叉编址
高位为体号,低位为体内地址。低位地址送到由高位确定的模块内进行译码,按顺序访问模块,不能提高存储器吞吐率
- 低位交叉编址
低位为体号,高位为体内地址,每个模块按“模m”编址,每个模块只能低地位地址模m与体号相等的数据。
这样就可以采取流水线的方式并行存取了,存取周期为T,传输周期为r,那么模块书m应该大于等于T/r。
主存与CPU的连接
连接原理
- 数据总线,位数与工作频率的乘积正比与传输速率
- 地址总线,位数决定寻址的最大内存空间
- 控制总线
扩容
- 位扩展法,地址端、片选端、读写控制端并联,数据端分别引出
- 字扩展法,地址高位为片选信号,低位为片内地址
- 字位同时扩展法
地址分配和片选
- 线选法,选择位为0的那个地方
- 译码片选择法
外存
平均存取时间,寻道时间(磁头移到磁道)+旋转延迟时间(磁头定位到扇区,平均为转一圈的一半)+传输时间(传输数据时间)
高速缓存
局部性原理
映射方式
- 直接映射
主存块号=主存地址/Cache行长
Cache行号=主存块号\%Cache行数
主存块号的低c位为装入cache的行号,其余的高m-c位位标记。
存在cache里的时标记、数据和一些辅助位,行号就不存了。
- 全相联映射
想放哪放哪,那就不用行号了,全都是标记。
- 组相联映射
将cache分组,组间使用直接映射,组内全相联映射。
在直接映射中的行号变为组号。
注意怎么算cache容量标记+辅助位+数据
替换算法
- RAND
- FIFO
- LRU
- LFU
写策略
- 写命中
- 全写法(全部都写)
- 回写法(回去再写)
- 写不命中
- 写分配法,从主存中调入cache,试图利用空间局限性
- 非写分配法,不调入cache
通常全写法和非写分配法合用,回写法和写分配法合用。
虚拟存储器
页式虚拟存储器
大概的访问流程
- 找TLB,在获取物理地址
- 不在TLB,访问页表,在主存,更新TLB,获取物理地址
- 不在页表,页表有空位,从外存调入,无空位置换,获取物理地址
- 有了物理地址找Cache,找到就访问
- 没找到,如果有个空位调入,没空位置换目设置标记和有效位等,访问数据
页表
长度固定,用页表,行号代表虚拟页号,获得物理页号与业内地址组成物理地址
快表
感觉就是页表的cache。
段式虚拟存储器
虚拟地址分为段号和段内地址,段表力有段首址,装入位,段长、
按逻辑分段
段页式虚拟存储器
分段,段内分页。每个程序一个段表,每段一个页表。