从程序员视角浅入浅出了解计算机硬件——概述
从程序员视角浅入浅出了解计算机硬件——CPU
从程序员视角浅入浅出了解计算机硬件——内存
从程序员视角浅入浅出了解计算机硬件——硬盘
前言
内存(Memory)是计算机的重要部件,用于存储数据和指令的重要组件,是冯诺依曼计算机中是的存储器部分。作为与CPU进行沟通的桥梁,内存用于临时存储计CPU中的运算数据,以及与硬盘、网卡等外部组件数据,以便CPU能够快速访问和处理这些信息。计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。
在正文开始前,让我们先思考以下几个问题:
- 3000MHz的内存频率,难道能媲美CPU的频率?
- 内存的读写速度有多快,传输带宽多少?时间级别是多少?
- Redis声称吞吐量可达到 10W/每秒,对内存来说有压力吗?
内存简介
存储器可以分为易失性存储器和非易失性存储器。易失性存储器指的是当电源关闭时会丢失其中存储的数据,典型的例子是RAM。非易失性存储器则是在断电后能够保持其中存储的数据,典型的例子包括硬盘驱动器、固态硬盘和闪存存储器,具体分类如图1所示。
本文主要讨论的是RAM和CPU的三级缓存。RAM是指计算机中的主要内存,用于存储正在运行的程序和数据;Cache是位于CPU和内存之间的高速缓存,用于临时存储CPU需要频繁访问的数据,以提高数据访问速度。
内存的基本结构
内存通常由许多存储单元组成,每个存储单元都有一个唯一的行列地址,可以存储一个字节的数据。通过这种结构,计算机可以根据地址快速地读取或写入数据。内存跟我们平常用的表格很像,最小的存储单元为cell,相当于表格中的一个小格子,具有行列地址,可以存储1bit数据(0或1)。行列的所有格子组成的存储阵列成为bank,一块内存内部划分出多个bank, 访问的时候指定bank编号,就可以访问指定的bank。
内存操作流程
CPU 对内存的操作通常包括地址计算、发起内存请求、内存访问、数据传输等步骤,这些步骤构成了 CPU 对内存进行读取和写入操作时的基本流程。 CPU 通过这些步骤与内存进行通信,实现了对数据的读取和存储。
- 地址计算:CPU 根据指令中提供的内存地址以及当前的地址计算方式(例如基址寻址、相对寻址等),计算将要读取或写入的内存地址。
- 发起内存请求:CPU 通过总线系统将内存地址发送到内存控制器,请求对应内存位置的数据读取或写入。
- 内存访问:内存控制器接收到CPU 的请求后,根据请求的地址进行相应的读取或写入操作。
- 数据传输:内存控制器从内存中读取需要的数据,或者将CPU 提供的数据写入内存中,并通过总线系统将数据传输回到 CPU。
内存参数
图4为内存的的详情页,比起CPU的参数,内存条的参数少了很多,只有容量、频率、时序。
内存性能可以通过以下指标来衡量:
- 带宽(Bandwidth):内存带宽指的是内存模块与CPU 或其他组件之间传输数据的速度。它通常以每秒传输的数据量(如GB/s)来衡量。
- 延迟(Latency):内存延迟是指从发出读取请求到数据实际可用之间的时间间隔。较低的延迟意味着内存可以更快地响应请求。
- 时序(Timing):内存