计算机存储器系统


现代计算机存储系统结构

在这里插入图片描述

存储墙

在这里插入图片描述

可以看出1985~2003年,cpu的频率在一直翻倍(摩尔定律) 。但是到了04年发现Pentium 4E,增加频率导致散热相当困难,而是开启了做了多核CPU,甚至频率进行了降低,例如Core 2 Core i7。

在这里插入图片描述
8086是第一个微处理器,它出现在1978,386是可以能够将很多有意思的应用到个人电脑,因为它扩展到32位,是个通用的CPU。
后来的Pentium 4E发现是一个奇怪的型号,当然有个很好的点,可以在64位上运行32位代码,毕竟大量软件从32位转为64位是比较漫长的。但是在04年单核CPU运行速度一直在上升,但是多个应用CPU的厂商反馈了芯片功耗问题(CPU百瓦),散热相当困难,所以达到了百瓦瓶颈。所以他们没有增加频率,而是做了多核CPU,例如Core 2 Core i7。
发现SRAM可以紧跟CPU,但是在CPU,DRAM,DISK存在很大的差距,并且随着时间的推移,这将越来越糟糕
但是程序需要数据和代码,我们的数据和代码都存储在内存和磁盘中,CPU越来越快,访存速度却保持不变,甚至变慢,那么整个计算机系统不会变快。

而弥补这个差距就是靠局部性

时间局部性:某个数据项在被访问之后可能很快的会被再次访问
空间局部性:某个数据项在被访问之后,与其地址相近的数据项可能很快被访问
大部分程序都包含循环结构,这部分指令和数据将被重复访问,很好体现了时间局部性
指令通常是顺序执行的,因此程序也呈现了很高的空间局部性
数据也同样呈现了很高的空间局部性,例如数组


一般的主存设计

在这里插入图片描述

运作流程

在这里插入图片描述
CPU执行某条指令。他的ALU部件需要这条指令的内容,发送这条指令的虚拟地址,cpu的mmu会查询TLB的映射表是否存在对应的物理位置,如果有就可以生成物理地址,如果没有就会去内存页表(页表中没有需要去外存中找调入),如果找到了,就得到了物理地址,然后再cache中查找有没有这条指令内容,没有就去内存中找,然后内容通过总线传送给CPU,CPU拿到就可以执行了
下面给出王道书上的一种流程图
在这里插入图片描述
其中知道什么是操作系统完成的和硬件完成的,比如
Cache缺失:硬件,为了快
TLB缺失:是软件或硬件,OS有专门的TLB缺失异常程序
页面缺失:软件,OS的缺页异常处理程序

地址转换(cache+页式虚存)408真题

在这里插入图片描述

存储器的速度提升

存储墙是现在影响计算机性能之一,说的就是存储器太慢而CPU太快

采用更高速的器件

DRAM的发展

1. SDRAM

同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM),通常DRAM是有一个异步接口的,这样它可以随时响应控制输入的变化,CPU无需等待。而SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。
SDRAM在计算机中被广泛使用,从起初的SDRAM到之后一代的DDR(或称DDR1),然后是DDR2和DDR3进入大众市场,2015年开始DDR4进入消费市场。

2. RDRAM
3. 带Cache的DRAM

调整主存结构

1. 单体多字系统
2. 多体并行系统

在这里插入图片描述
存储器读取一个字需要一个周期(即存储周期),总线再将此字传输出去需要一个周期(总线周期)

  • 高位交叉编址:高位是体号,低位是体内地址,这种编址依旧是在单个存储体间连续,程序连续存储在同一个存储体内,无法并行
  • 低位交叉系统:低位是体号,高位是体内地址,程序存储在不同的存储体内,无法并行

在这里插入图片描述

假定一个存储器系统支持四体交叉存取,某程序执行过程中,CPU访问的主存地址序列为3,9,17,2,51,37,13,4,8,41,67,10,则哪些地址访问会发生体冲突?
注意:因为前提是四体,所以T肯定满足T=4t,所以只要找到从自身开始四位出现与自己相同的就冲突了
3917251371348416710
311231100132

9和17 17和37 13和37 13和41 4和8


版权声明:本文为qq_42146775原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。