内存这个概念从接触计算机开始就知道了,那个时候学的的是硬件,主要就是知道计算机比较重要的几大部件就是CPU、内存、硬盘、显卡、网卡等等,那时候解决一些特定问题有时候也会找内存的原因,比如计算机运行缓慢,电脑蓝屏、有时候中了病毒也是从程序 占用内存的多少来判断的,呵呵,都是血一般的教训啊。。
刚刚接触电脑的时候,老师就拿内存的工作原理举例子映射学习。现在好几年过去了。
虽然感觉和内存距离很近,但是不知道它的“内心世界”,就好像还隔绝着一片海洋。希望通过这次对内存的学习总结,能拉近我们的距离。
一、内存构成
内存看着很简单,就是一个长条形的芯片,上面集成了很多的小黑块。从最初的内存K级到M级再到现在的G级,内存存储能力发生了很大的变化。同时变化的也有它的运行速度。
这一个一个的黑框就是主要的逻辑单元,也就是叫做DRAM芯片或者内存颗粒。更换过内存卡的亲们一定知道,不同的机器型号是要买不同的内存条的,不然会有这样那样的问题发生,这是因为各大生产内存的厂商们在规划内存条的功能、性能、规格等标准都略有不同,但是这不影响我们学习内存的工作原理,因为在这方面都是大同小异的。
在上一篇学习cpu中,就有存储器为cpu提供数据和寻找指令地址对应的指令,这个过程称为寻址。
内存是用于存放数据与指令的半导体存储单元,RAM(随机存取存储器)、ROM(只读存储器)及Cache(高速缓存)三部分,cache的存取速率最快,但是它的空间不大。我们一般用户使用的操作系统就被存储在主存里,然后经由cache进入cpu进行运算、控制。辅存包括U盘,移动硬盘,光盘等。
输入输出设备是直接与主存储器进行交互的。
二、内存工作原理
内存在计算机中就像是一个十字路口,他和cpu的交互主要就是存储了数据和指令,然而cpu是如何获得这些内容的,就要看看内存是怎么来工作的的了?以下是单个DRAM芯片进行的指令交换。
DRAM内部工作原理
DRAM是动态随机存取存储器,它是最常见的系统内存,因为持有数据时间很短,所以需要经常刷新存储数据,否则会造成数据丢失。
内存颗粒工作示意图
内存寻址
内存最重要的一点就是可以供cpu进行寻址,找到cpu地址相应的指令和数据。
三、内存访问
cpu最先访问的是cache而不是主存,所以cache和主存间要有一个转换,这里就有了cache和主存的映射方式,主要分为直接相联映射、全相联映射、组相联映射三种方式,
直接相联映射:也称为顺序相联映射,主存中的某模块只能映射到满足特定关系的cache中,这样运行起来比较简单,但是也正是因为主存和cache存在特定关系,如果特定关系里有一个cache已经被占用,那其他和它一样有关系的主存块就会空闲,造成了cache的利用率会很低,
全相联映射:主存中任意一模块都可以映射到cache中,效率高,但是这样使用的资源非常高,很多情况都不适用。
组相联映射:它是全相联映射和直接相联映射的结合,这样将cache分成组,这样就可以使用直接相联映射,然后在各组内部与主存的映射过程使用全相联映射,这样就提高了各组的运行效率。
地址总线
地址总线的数量决定了他最大的寻址范围。就目前来说一般地址总线先字长相同。比如32位计算机拥有32为数据线和32为地线,最大寻址范围是4G(0x00000000 ~ 0xFFFFFFFF)。
总结:
内存的知识其实很重要,它是计算机工作原理的十字路口,和很多部件有交互关系,它像是软件和硬件交互,相互转换的一个阶段。