先来看下几种常见的概念
计算机系统中存在多种物理存储介质,比较有代表性的有以下几种介质。
- 寄存器(register)
- 高速缓冲存储器(cache),即缓存
- 主存储器(main memory),即内存
- 快闪存储器(flash memory),即闪存
- 磁盘存储器(magnetic-disk storage),即硬盘、磁盘
- 光学存储器(optical storage)
- 磁带存储器(tape storage)
寄存器
寄存器是距离CPU最近、访问数据速度最快的存储介质,用来做一些最基本的指令和地址存储。寄存器从内存中获取数据,然后在CPU中进行处理,处理完后又将数据暂时存放在寄存器中,再从寄存器传输到内存中。寄存器不需要很大容量,但是必须有匹配CPU的数据传输速度,所以它被集成在了CPU内部以节省数据传输的时间,是CPU的一部分。寄存器具有高性能、高耗电的特点,所以造价成本较高。
对计算机存储结构不了解的人可能会问,既然寄存器的速度这么快,为什么不能用寄存器来存储所有数据呢?
- 一是由于上面说过的原因,容量小、造价高;
- 二是这样的设计非常不合理。可以把数据源比作一个菜市场,处理数据的CPU、寄存器就相当于厨房,你不能为了方便,把整个菜市场的食材都搬回厨房。
高速缓冲存储器
高速缓冲存储器就是我们常说的“缓存”。
如果你的程序要获取的数据刚好在寄存器中,则你可以直接获得该数据。如果在内存中,则需50-200个周期。可见速度差别非常大。如果每次寄存器都从内存中去读取数据,则耗费时间将会相当多。为了弥补这一速度差异,工程师们设计了“缓存”这一工作方式。CPU频繁访问的数据被存储在了缓存中。CPU要获取数据时,首先访问缓存,如果命中则得到数据,如果没有命中则再去访问内存。至于缓存怎么判断哪些数据是会被频繁访问的,这就涉及到相关的算法问题了。
缓存使用的是比一般的RAM(Random Access Memory)存取速度更快的SRAM(Static Random Access Memory)。
RAM一般分为静态RAM(static RAM, SRAM)和动态RAM(dynamic RAM, DRAM)。SRAM的速度虽然比DRAM快,但成本高得多,所以不可能将DRAM全部替换成SRAM。但是为了扩大缓存容量,工程师增加了多个高速动态RAM,将原来的SRAM叫做一级缓存,新增的DRAM叫做二级缓存。CPU访问数据先是在一级缓存中找,找不到再到二级缓存中找,再没有就去内存中找。
主存储器
主存储器就是我们常说的(狭义的)“内存”。使用的是DRAM。
它之所以叫动态,是因为将数据写入DRAM后,一段时间过后数据会丢失,需要一个额外的电路不断对其进行刷新操作才行。因为DRAM储存数据利用的是电容中是否有电荷,有代表1,无代表0。但是电容会放电或吸电,刷新操作会对其进行检查。如果电量大于满电量的1/2,则将电充满,否则将电全部放掉。
SRAM虽然不需要刷新操作,但是断电后仍会丢失数据。所以RAM都要在有电源时工作。
内存和缓存在广义上整体被称为内存储器(简称内存)或主存储器,而其他外部不依赖电存储数据的设备(如磁盘、光盘等)统称外存储器或辅助存储器。内存是CPU和外部存储设备之间的桥梁,用来存放那些将要被CPU处理的数据,以及与外部设备交换数据。
除了RAM,还有一种内存被称为ROM(Read Only Memory)。ROM的速度要远远慢于RAM,只能读取,不能写入,可在断电后保存数据。ROM一般用来存储一些固定的系统软件或字库,PC的BIOS芯片就是ROM。由于ROM不能改写、不能升级,现在已经很少使用。早期的游戏卡带也是ROM。
需要指出的是,由于ROM断电后可存储数据,很多人将ROM和硬盘混为一谈,实际上两者完全不同。ROM是内存储器,硬盘是外存储器。
快闪存储器
快闪存储器即是我们常说的”闪存“。不同于内存,它在电源关闭时(或故障时)数据可保存下来。
它是一种外部存储器,多用于照相机、音乐播放器、手机等设备(如SD卡,Secure Digital Memory Card)。现在的游戏卡一般都是闪存。U盘用的也是快闪技术。另外,快闪存储器也在作为磁盘存储器的替代品越来越多地被使用,即所谓的”固态硬盘(ssd,solid state disk)“。
磁盘存储器
磁盘存储器就是”磁盘“、”硬盘“或”机械硬盘“。
是长期联机存储数据的主要介质。为了能够访问数据,系统必须将数据从磁盘移到内存。完成处理后,数据要写回磁盘。由于访问磁盘非常耗时,而且频繁操作磁盘也会造成磁盘损伤,所以有了”磁盘缓存“这一设计。
移动硬盘是机械硬盘还是固态硬盘?
都有。固态的移动硬盘一般较贵,容量较小。
光学存储器
光学存储器最流行的形式就是光盘(Compact Disk, CD)。CD一般容量较小,数字视频光盘(Digital Video Disk, DVD)容量较大一些,可以存储任何数字数据。蓝光DVD拥有更高的容量。
磁带存储器
磁带存储器主要用于备份数据和归档数据,个人一般很少用到。
磁带存储器比磁盘便宜,访问数据比磁盘更慢,容量更大。
最快的存储介质,如缓存和内存,被成为基本存储;磁盘被称为辅助存储或联机存储;磁带、光盘等被称为三级存储或脱机存储。
一、缓存和内存
“缓存”是内存的一部分吗?
很显然,缓存是CPU的一部分,它存在于CPU中
CPU存取数据的速度非常的快,一秒钟能够存取、处理十亿条指令和数据(术语:CPU主频1G),而内存就慢很多,快的内存能够达到几十兆就不错了,可见两者的速度差异是多么的大
缓存是为了解决CPU速度和内存速度的速度差异问题
内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了,CPU只要到缓存中去取就行了,而缓存的速度要比内存快很多
这里要特别指出的是:
- 1.因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。
- 2.因为随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访问最频繁的
- 3.关于一级缓存和二级缓存
为了分清这两个概念,我们先了解一下RAM 和 ROM
RAM(Random Access Memory)和ROM(Read-Only Memory)相对的,RAM是断电以后,其中存储的信息就消失那一种,ROM在断电以后,存储的信息也不会消失那一种
RAM又分两种
- 一种是静态RAM,SRAM(Static Random-Access Memory);
- 一种是动态RAM,DRAM(Dynamic Random Access Memory)
前者的存储速度要比后者快得多,我们现在使用的内存一般都是动态RAM。
有的人就问了,为了增加系统的速度,把缓存扩大不就行了吗?扩大的越大,缓存的数据越多,系统不就越快了吗 ?
缓存通常都是静态RAM,速度是非常的快,
但是静态RAM集成度低(存储相同的数据,静态RAM的体积是动态RAM的6倍),
价格高(同容量的静态RAM是动态RAM的四倍),
由此可见,扩大静态RAM作为缓存是一个非常愚蠢的行为,
但是为了提高系统的性能和速度,我们必须要扩大缓存,
这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做为缓存
这些高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢,
我们把原来的静态ram缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。
一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问。
通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了
二、内存和cpu
CPU是负责运算和处理的,内存是交换数据的。
当程序或者操作者对CPU发出指令,这些指令和数据暂存在内存里,在CPU空闲时传送给CPU,CPU处理后把结果输出到输出设备上,输出设备就是显示器,打印机等。在没有显示完之前,这些数据也保存在内存里,如果内存不足,那么系统自动从硬盘上划分一部分空间作为虚拟内存来用。但写入和读取的速度 跟物理内存差的很远很远,所以,在内存不足的时候,会感到机器反应很慢,硬盘一直在响。
512M的物理内存如果增加到2GB,你会感到电脑变得飞快。但内存512,即使你把CPU从单核换成双核,加速感觉也不明显。
如果你本来就有2G内存,再增加2G,使用起来几乎没有多少性能的改变。在理论上,物理内存太大反而会减慢速度,因为它增加了寻址的时间。