C++ 并发编程指南(11)原子操作 | 11.6、计算机内存结构


前言

在探讨计算机的运行效率和数据处理能力时,内存结构无疑是一个至关重要的部分。内存,作为计算机系统中的关键组件,承担着存储数据和指令以供处理器(CPU)快速访问的重要任务。

一、计算机内存结构

1、内存的基本组成

计算机内存的基本组成单元是存储单元。每个存储单元由一个电容和一个晶体管组成,其中电容用于存储数据,而晶体管则负责控制数据的读取和写入。这种设计使得内存能够在计算机运行时快速、准确地存取数据。

2、内存的类型

  • 静态随机存取存储器(SRAM):SRAM使用触发器来存储数据,因此具有较快的读写速度。然而,由于其制造成本较高,SRAM通常被用于高速缓存(Cache)等需要快速访问的场景。
  • 动态随机存取存储器(DRAM):DRAM使用电容来存储数据,虽然读写速度稍慢于SRAM,但其制造成本较低,因此被广泛应用于主存储器(内存条)中。DRAM需要周期性地进行刷新以保持数据的稳定性。

3、内存的结构层次

计算机内存结构通常呈现出一种层次化的特点,从高到低依次为:寄存器、高速缓存(Cache)、主存储器(内存条)和辅助存储器(如硬盘、固态硬盘等)。

  • 寄存器:寄存器是离CPU最近的存储单元,其读写速度最快。CPU可以直接访问寄存器中的数据,无需经过其他存储层次。寄存器通常用于存储CPU正在处理的数据和指令。
  • 高速缓存(Cache):高速缓存位于CPU和主存储器之间,用于缓存主存储器中常用的数据和指令。当CPU需要访问数据时,首先会检查高速缓存中是否存在所需数据。如果存在,则直接从高速缓存中读取数据,从而提高了数据的访问速度。高速缓存通常分为多个层次,如L1 Cache、L2 Cache和L3 Cache等。
  • 主存储器(内存条):主存储器是计算机系统中的主要内存,用于存储正在运行的程序和数据。主存储器通常由多个存储体组成,每个存储体中有许多存储单元。每个存储单元可以存储一个二进制数或一串二进制代码(称为存储字)。存储字的长度可以是8位、16位、32位等。主存储器通过地址线、数据线和控制线等接口与CPU相连,实现数据的快速读写。
  • 辅助存储器:辅助存储器包括硬盘、固态硬盘等存储介质,用于存储大量数据和程序。与主存储器相比,辅助存储器的读写速度较慢,但容量较大且价格相对较低。辅助存储器中的数据在需要时会被加载到主存储器中供CPU处理。

4、CPU架构

下面是一个的多核CPU架构图,如下:

在这里插入图片描述

  • Core:每个Core独享SB与L1
  • SB(Store Buffer):Store Buffer是一个缓冲区,用于暂存CPU的写操作,它允许CPU把数据先写入Store Buffer,然后继续执行其他操作,而不是等待数据被写入缓存或内存后再进行下一步。这样设计的好处是显著降低了内存写延迟对CPU性能的影响。
  • L1 Cache:存储了CPU近期可能访问的数据和指令,且两个L1 Cache独享一个L2 Cache

注意:上面的CPU架构只是部分CPU采用的架构,并不能代表全部。

为什么需要使用Cache?

如果没有Cache,CPU每执行一条指令就要到内存中取数据。执行一条指令只需要几个时钟周期,而取指令需要上百个时钟周期,这就将导致CPU大部分时间都处于等待状态,进而导致执行效率低下,引入了Cache主要解决CPU等待问题。

使用Cache会引入一些新的问题,例如:Cache的一致性、Cache的缺失等,为了解决这些问题,各CPU平台(ARM/X86/IA64)都有自己的解决方案。软件层面(编译器)也会有对应的优化,这导致了CPU执行的程序并不是你写的那个版本,只是从结果上看不出差异而已。

5、局部性原理

在计算机存储结构中,局部性原理是一个重要的概念。局部性原理包括时间局部性和空间局部性两个方面。时间局部性指的是如果一个数据项被访问了,那么它在不久的将来很可能还会被再次访问;空间局部性指的是如果一个数据项被访问了,那么与其相邻的数据项也很可能被访问。基于局部性原理,计算机内存结构通常采用缓存机制来提高数据的访问速度。

6、总结

计算机内存结构是计算机系统中的核心组成部分,其性能直接影响到计算机的运行效率和数据处理能力。通过对内存的基本组成、类型、结构层次以及局部性原理等概念的深入剖析,可以更好地理解计算机内存的工作原理和重要性。

  • 29
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值