计算机缓存初识

127 阅读3分钟

这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

前言

缓存这个技术,做过业务开发的同学应该都非常熟悉了。我们会将一些频繁使用的数据插入至缓存中,避免重复的查询,导致性能问题,特别是在高并发的场景下,数百万的查询请求直接打到数据库上,数据库肯定是支撑不了的,所以在查询数据库前,可以设置缓存,这是应对高并发场景的策略之一。但是我们所使用的缓存技术都是比较成熟的了,那么我们今天就来探究一下缓存的起源。

机器指令执行

上一篇我们说到,计算机会将我们的文本源程序翻译成可执行文件,可以被加载到内存中,由系统执行。shell执行一系列的指令加载可执行文件,这些指令将文件中的代码和数据从磁盘复制到主存中,利用直接存储器存储(DMA)技术,数据可以不通过处理器而直接从磁盘到达主存中。加载完成后,处理器就开始执行程序中的机器语言指令,将数据的字节从主存复制到寄存器文件,再从寄存器文件复制到显示设备上。

计算机缓存

计算机系统花费大量的时间把信息从一个地方挪到另一个地方,程序最初的机器指令是放到磁盘上,当程序加载时,代码和数据被复制到主存,当处理器执行程序时,指令又从主存复制到处理器上。这些复制就是会产生开销,会减慢程序“真正”的功能做,所以要使复制操作尽可能快的完成。

根据机械原理,较大的存储设备要比较小的存储设备运行的慢,而快速设备的造价远高于同类的低速设备。比如说,一个系统上的磁盘驱动器可能比主存大1000倍,但对于处理器而言,从磁盘驱动器上读取一个字的时间开销比主存中读取的开销大1000万倍。一个典型的寄存器文件只存储几百字节的信息,然而在主存里可能存放几十亿字节,然而,处理器从寄存器文件中读数据比主存中读取几乎快100倍。随着半导体技术的进步,处理器与主存之间的差距还在持续增大。加快处理器的运行速度比加快主存的运行速度要容易和便宜的多。

针对这种差异,系统设计者采用更小更快的存储设备,称为高速缓存器(Cache memory),作为暂时的集结区域,存储处理器近期可能会需要的信息。典型的高速缓存器有以下几种: L1高速缓存:位于处理器芯片上,容量为数万字节,访问速度几乎和访问寄存器文件一样快
L2高速缓存:容量为数十万到数百万字节,通过一条特殊的总线连接到处理器,访问速度比L1高速缓存长5倍,但是比访问主存的时间快5~10倍。
L1和L2高速缓存使用一种叫做静态随机访问存储器(SRAM)的硬件技术实现的。

原理

系统可以获取一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。通过在高速缓存中存放可能经常访问的数据,大部分的内存操作都能在高速缓存中完成。

结论

通过了解缓存的原理,可以提升我们对缓存的认知度。