内存是计算机中负责存储数据,保障系统运行的核心部件。内存中的数据是随着系统运行动态变化的临时数据,所以当计算机系统关闭电源时,内存中的数据将全部丢失。
内存最重要的指标是容量,如果容量不够将导致软件无法运行。通常程序启动后会占用一定容量的内存,避免程序运行时频繁与硬盘进行数据交换。如果程序分配到需要的内存空间,程序只能被迫退出。
内存带宽是选择内存时的一个重要性能指标,传输速度由内存频率和数据总线宽度两个参数决定。内存带宽可以看作是一条高速公路,内存频率是高速公路最高的限速,数据总线宽度是公路修了几条车道。速度越快车辆往返的时间越短,单位时间内往返的次数越多。道路越宽一次通行的车辆越多,单次通车数量越多。内存带宽=数据总线 ✖️ 内存频率 ➗8,8是数据位到数据字节的转换,可以理解为是一辆车站路面的宽度。
内存性能与高速公路关系示意图
内存通道是内存模块与内存控制器之间的物理连接。一个内存通道可以理解为一条高速公路,每修一条新高速就可以单独控制数据的传输。当内存支持双通道时,CPU占用一条通道(由于CPU需要频繁访问内存可以简单认为长期占用一个通道),另一条就可以为显卡、IO设备(硬盘、网卡)等提供数据。
影响计算机处理性能的内存是主板上的内存和显卡中的显存。主板上安装的内存只负责存储CPU计算使用的程序和运算数据,显卡上集成的显存只负责存储GPU计算使用的图像数据。这两种内存对内存指标的要求却截然不同。
CPU主要进行通用计算,所以对内存低延时、数据高速传输和数据正确性有更高的要求。特别是服务器上安装的内存对数据正确性的要求更高,内存需要支持ECC(Error-Correcting Code)功能。ECC增加冗余数据位,存储了附加的校验信息,通过这些校验信息可以验证数据在传输或存储过程中是否有错误。内存的ECC功能需要与CPU的ECC功能配对使用才能发挥作用,并且ECC功能对性能有一定的损耗。
GPU在进行图像处理时,需要进行大量的数据处理,所以对内存的容量、内存传输速度和内存带宽更加看重。当GPU作为娱乐设备时,可以关闭ECC功能,不仅可以减少性能消耗还可以提升一点内存容量。但是当GPU作为AI计算资源时,应该打开ECC功能保证运算过程中数据的正确性和完整性。
计算机硬件进入集成电路时代之后,CPU从单核发展到了多核、硬盘从磁性介质替换为半导体。只有内存没有发生翻天覆地的变化,内存的性能跟随着摩尔定律在不断提升。