这里主要看存储的整体结构,cache,内存
这里看存储结构是按什么样的层次来划分存储结构,速度由慢到快,容量由大到小,这是基于性价比的考虑,所以分为多级多层次,可以做到提高速度的同时没有增加多少成本
在整个存储结构中,速度最快效率最高的,是CPU里面的运算器控制器里面相应的寄存器,但其容量极小,如果容量大则成本很高
下来是Cache,即高速缓存存储器
下面看这之中是怎么工作的,如从内存到CPU
这中间的Cache不是必须的步骤,拿掉Cache可以一样运行,因为CPU的相关数据可以直接跟内存做交换,但就是它比加上Cache的情况要慢上百倍
所以加上Cache,其里面的数据是以K(兆),M(千兆)等为单位
而内存里面的数据单位是G,现在我们常看到的都是8G,12G,16G等
首先Cache里面的所有内容都是来自内存的,所以Cache里面存的是主存的一部分(量很少)内容,从二者的数据单位差也可以看到
之所以加上Cache的速度能提高成百上千倍是因为有局部性原理的存在
局部性原理:就是指在程序运行过程中,如果是在执行某条指令,刚刚执行完这条指令后很可能要再次执行,即它会频繁不断的执行相同块里面的内容,这种刚刚用完立刻再用称为时间局部性
例如,循环结构就具有这种特性,比如循环体里面要执行100万次,而循环上面的语句和循环下面的语句,也就是初始化语句和输出结果的语句,往往都只执行一次
这时把中间循环体的语句放入到Cache中去,此时CPU和Cache就会频繁的交互,即不需要CPU和内存进行交互了,这样的话速度就极大的提升了
同理,内存与外存之间也有类似的情况,需要运行的东西也会先从外存转到内存
Cache还有一个显著特色是,按内容存取,指我们存信息时,会考虑这个信息的内容,不同的内容存到不同的区域,要读取某个信息出来时,通过信息的内容一算,就知道信息它在哪个块中
这种按内容存取的存储器又叫作相联存储器,其速度效率会远高于普通的按地址的存储方式