介绍计算机内存的层次结构

计算机系统中最快的组件是CPU,它们执行指令并处理数据。CPU需要在主存中获取指令和操作数。

当生产主存时,一个主要目标是实现硅芯片上每个单位面积的数据密度,第一优先级可能不是速度,而是容量。

同步动态随机存取存储器(SDRAM)是计算机内存的基本组成部分,它们以相对较低的成本提供了大量的存储容量。然而,SDRAM有一个显著的缺点:速度慢。这种固有的特性可能导致性能瓶颈,因为CPU经常需要花费宝贵的时钟周期等待从SDRAM中读写数据。


这种内存墙来自于我们用于实现SDRAM主存的工艺和处理器不同。用于制造主存的半导体工艺(即DRAM单元)允许高密度的存储单元。不幸的是,这极大地影响了内存的速度,主存比CPU慢十倍或一百倍。

主存也可以使用更快的工艺(SRAM单元)制造,但价格会太高,无法接受。

因此,我们面临以下重要挑战:我们如何在保持系统中大量廉价内存的同时,为CPU提供快速访问指令和操作数的能力?

解决这一挑战的关键在于所谓的内存层次结构。内存层次结构的每个级别都提供了速度和容量之间的权衡。在这个层次结构的顶部是最快但最小的存储组件,如处理器寄存器,而SDRAM则占据了较低的层级。

在内存层次结构中,我们在系统中使用几种不同的内存(就价格和速度而言)。CPU应该只访问小而快的存储指令和操作数的存储器,并保证较快的访问时间。这些小而快的存储器被称为缓存(cache)。如果CPU需要的指令或操作数不在这些小而快的存储器中,那么它们应该从更大、更慢的存储器加载到这些小而快的存储器中。但是,如果CPU只允许访问这些小而快的存储器,我们怎么知道要存储哪些指令和操作数呢?

现代CPU基于冯·诺依曼架构。冯·诺依曼CPU有一个程序计数器(PC),每次从内存中获取指令时都会增加1,因此指向要获取的下一条指令。这意味着,除了跳转指令外,我们非常擅长预测CPU将需要哪些指令。这被称为空间局部性,它表示如果我们正在访问地址A的内存,那么下一次内存访问很可能是地址A+1的内存。此外,我们经常在程序中使用循环,所以我们经常在一段时间内访问同一组内存。这被称为时间局部性。

时间和空间局部性是程序执行期间内存访问模式的基本原则。这些原则对于理解和优化计算机系统的性能,特别是内存层次结构至关重要。

时间局部性指的是程序在短时期内反复访问相同内存位置的倾向。换句话说,如果程序访问了一个特定的内存位置,它很可能会很快再次访问同一个位置。时间局部性最常见的原因是程序循环。例如,在循环中,循环体内的操作数或指令在随后的迭代中经常被访问。此外,从内存中读取或写入的数据项在程序执行的大部分时间内仍然被使用。

小而快的存储器(cache)利用时间局部性,通过存储最近访问的数据和指令,使得对该位置的未来访问更快。

空间局部性指的是程序访问彼此接近的内存位置的倾向。空间局部性最常见的原因是使用程序计数器来寻址指令。cache也利用空间局部性。我们不仅在小而快的存储器中存储请求的数据(指令或操作数),还存储附近的数据。如果程序访问一个位置,来自附近位置的数据在cache中已经准备好了。

64ca75bb76d12732325384831ca5b233.jpeg

如今,计算机系统包含多个CPU核心。每个CPU核心都有两个高速片上一级(L1)缓存,分别用于指令和操作数。回想一下计算机体系结构课程,流水线CPU可以同时访问操作数和指令;因此,我们需要两个独立的缓存,一个用于指令,另一个用于操作数。

这些L1缓存使用最快且最昂贵的半导体工艺制造。它们通常非常小(只有16或32kB),包含CPU核心需要的一小部分指令和数据。如果CPU请求的操作数或指令在缓存中找到,我们说发生了缓存命中,这对于实现高性能计算至关重要,因为它们减少了等待从较慢的存储级别到达数据的时间。由于时间和空间局部性,L1缓存的缓存命中率非常高(通常超过95%)。当CPU请求的数据或指令不在缓存中时,我们说发生了缓存未命中。

如果L1缓存发生缓存未命中,请求的数据或指令将从稍慢且稍大的片上L2缓存复制到L1缓存(在L2缓存命中的情况下)。

如果L2缓存未命中发生,请求的数据或指令将从更慢且更大的L3缓存复制到L2缓存(在L3缓存命中的情况下)。最后,如果L3缓存未命中发生,请求的数据或指令将从非常慢且大的片外主存储器复制到L3缓存。

请注意,几个CPU核心共享同一个L3缓存。

缓存的思想在我们日常生活中以及软件操作系统中非常常见,它们代表了现代计算机系统中最令人惊叹和不可或缺的技术进步之一,悄悄地改变了我们计算机的工作方式。

缓存是高速、小尺寸的存储缓冲区,在弥合CPU的惊人速度和主存(SDRAM)相对较慢的访问时间之间的差距中发挥着关键作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值