智能百科 > 科技百科 >

计算机内存基础硬核知识

时间: 小龙 科技百科

我们都知道,计算机是处理数据的设备,而数据的主要存储位置就是磁盘和内存,并且对于程序员来讲,CPU 和内存是我们必须了解的两个物理结构,它是你通向高阶程序员很重要的桥梁,下面就让小编带你去看看计算机内存基础硬核知识,希望能帮助到大家!

计算机内存基础硬核知识篇1

刻意追求内存频率意义不大,因为决定内存性能的重要指标还有内存时序(时序本身也可以体现出内存颗粒的品质如何)。市面上很多DDR4-2666内存的报价甚至还低于当前DDR4-2400,原因就是这些所谓的DDR4-2666内存的时序普遍很难看(偏高/一般都是CL19),众所周知,时序越高性能越差。目前主流内存频率为2400MHz~3200MHz,实际上2133也一样能用,而且最便宜。

再有就是目前英特尔平台只有Z系列、__系列芯片组可以使用超过2666/2933频率的内存,其他芯片组如B360/B365/B460无法突破这一限制,上高频内存会降频运行,具体限制情况请参照表格说明。用B360主板搭配3000MHz甚至3200MHz以上的高频内存意义不大,最终还是降频到2400/2666运行。B460主板搭配i7/i9处理器时,可以考虑3000频率的内存。

AMD芯片组虽然基本都不会限制运行频率,都可以超频支持高频内存,但是AMD处理器本身不争气,内存兼容性问题比较普遍,搭配高频内存极易翻车。AMD的三代锐龙对高频内存支持的友好性大幅提升,这样一来或许会带动3000~3600MHz区间高频内存的销量大幅上涨。一代、二代锐龙(包括APU)建议搭配3000MHz以下的内存。

从表格可以看出英特尔平台主板除了Z系列的都是不支持超频的,但是也要注意虽然主板支持最高频率可能是2666、2933,但是也要看具体CPU支持的频率。

AMD平台理论上是没有具体限制的,但是要看主板的内存供电和CPU对内存频率的兼容;一代锐龙普遍兼容性比较差,一般上2666就可以了,供电比较好的主板可以上2933;二代锐龙兼容性有提升,一般上2933就可以了,供电比较好的主板可以上3200-3433,三代锐龙兼容性大大提升,市面上的正规内存都是基本可以是用的,因为三代锐龙内存频率影响cpu性能一般建议上3600频率的就可以了,因为除了__399/TR__40平台的其他三代锐龙内存控制器它最高支持3600频率,运气好的能达到3800,在往上面的频率性能只会倒退。

从上面表格可以看出英特尔九代CPU及之前到6代买2666频率的内存条就可以了,这里为什么没有说i3之前的只支持到2400,因为现在市面上的内存条基本2400和2666价格差不多,很多都是同价格,所以上2666的就可以了,以后升级CPU了还能小小提升一下性能还不用换内存条;

十代英特尔就比较坑了,i5之前都最高只支持到2666频率的,所以装机的如果不考虑以后升级cpu的就可以直接买2666的就可以了,如果考虑以后升级的可以直接买3000频率的内存条,i7、i9可以直接运行在2933频率上。

内存容量

① 品牌方面,你自己信赖啥就选啥,不用考虑很多,内存很难坏,品牌内存均为终身质保,一小部分牌子才会保修3~5年;

② 部分主板与部分内存可能会有兼容性问题,遇到这类情况建议通过升级BIOS来进行解决,或尝试更换合适的内存。

★ 4GB(~流行):当前来看只能满足基本的上网、看视频、聊天、入门游戏及轻度办公需求;(都了就不太推荐了)

★ 8GB(当前主流):当前可以满足入门设计、多任务办公、大型单机普通爱好者;

★ 16GB(当前~未来5年主流):当前可以满足主流设计、渲染、大型单机爱好者;(只要是玩稍微大型一点的游戏都建议上16G内存,8G__2形成双通道,17年吃鸡游戏大火,这游戏就很吃内存)

★ 32GB或更高(~):当前主要是高预算或特殊高需求群体会安装如此多的的内存。(一小部分游戏也吃高内存比如:逃离塔科夫,当然最近3000系显卡出了,高端用户4K144hz运行的话也建议上32G内存,当然一般买这配置的了一般都会上也不需要小编说(贫穷的小编))

常见问题

【Q】如何组双通道内存?组双通道内存有什么要求?

【A】组双通道内存只需接口相同,能同时被系统点亮识别即可,不用在意容量或者频率。两根不同频率的内存条是可以一起使用的,使用的过程中,高频率的内存条会自动降频到低频的内存条的频率来使用的。参数不同的两根(或4根)内存组的双通道叫做“弹性双通道”。这里还需要注意,一般只有2根内存插槽的主板组双通道时,只要插满自然就是双通道了,如果是4根插槽的板子,插两根时,必须插1、3位置或者2、4位置(也就是间隔一个空位/以靠近CPU的第一根插槽位为1)才可以组成双通道,但一定是优先插2、4位,其次才是1、3位。

__系列主板和TR系列主板是支持4通道的所以可以按照主板说明书插对应内存条以达到最大性能,避免性能浪费,比如你想买16G的内存条就买8__2的形成双通道,如果是四通道的话买4__4的,不过一般都是最低上32G的所以是8__4。

计算机内存基础硬核知识篇2

一、CPU与内存

先铺垫几个概念,以免后面混乱:

Socket或Processor: 指一个物理CPU芯片,盒装还是散装的。上面有很多针脚,直接安装在主板上。

Core : 指在Processor里封装一个CPU核心,每个Core都是完全独立的计算单元,我们平时说的4核心CPU,指的就是Processor里面封装了4个Core。

HT超线程:目前Intel与AMD的Processor大多支持在一个Core里并行执行两个线程,此时从操作系统看就相当于两个逻辑CPU(Logical Processor)。大多数情况下,我们程序里提到的CPU概念就是指的这个Logical Processor。

咱们先来看几个问题:

1、CPU可以直接操作内存吗?

可能一大部分老铁肯定会说:肯定的啊,不能操作内存怎么读取数据呢。

其实如果我们用这聪明的大脑想一想,咱们的台式主机大家肯定都玩过。上面CPU和内存条是两个完全独立的硬件啊,而且CPU也没有任何直接插槽用于挂载内存条的。

也就是说,CPU和内存条是物理隔离的,CPU并不能直接的访问内存条,而是需要借助主板上的其他硬件间接的来实现访问。

2、CPU的运算速度和内存条的访问速度差距有多大?

呵呵呵,这么说吧,就是一个鸿沟啊,CPU的运算速度与内存访问速度之间的差距是100倍。

而由于CPU与内存之间的速度差存在N个数量级的巨大鸿沟,于是CPU最亲密的小伙伴Cache 闪亮登场了。与DRAM 家族的内存(Memory)不同,Cache来自SRAM家族。

而DRAM与SRAM的最简单区别就是后者特别快,容量特别小,电路结构非常复杂,造价特别高。

而Cache与主内存之间的巨大性能差距主要还是工作原理与结构不同:

DRAM存储一位数据只需要一个电容加一个晶体管,SRAM则需要6个晶体管。

由于DRAM的数据其实是被保存在电容里的,所以每次读写过程中的充放电环节也导致了DRAM读写数据有一个延时的问题,这个延时通常为十几到几十ns。

内存可以被看作一个二维数组,每个存储单元都有其行地址和列地址。

由于SRAM的容量很小,所以存储单元的地址(行与列)比较短,可以被一次性传输到SRAM中。DRAM则需要分别传送行与列的地址。

SRAM的频率基本与CPU的频率保持一致,而DRAM的频率直到DDR4以后才开始接近CPU的频率。

3、Cache 是怎么使用的?

其实Cache 是被集成到CPU内部的一个存储单元(平时也被我们称为高速缓存),由于其造价昂贵,并且存储容量远远不能满足CPU大量、高速存取的需求。

所以出于对成本的控制,在现实中往往采用金字塔形的多级Cache体系来实现最佳缓存效果。

于是出现了,一级Cache(L1 Cache)、二级Cache(L2 Cache)及三级Cache(L3 Cache)。每一级都牺牲了部分性能指标来换取更大的容量,目的也是存储更多的热点数据。

以Intel家族Intel SandyBridge架构的CPU为例:

L1 Cache容量为64KB,访问速度为1ns左右

L2Cache容量扩大4倍,达到256KB,访问速度则降低到3ns左右

L3 Cache的容量则扩大512倍,达到32MB,访问速度也下降到12ns左右(也比访问主存的105ns(40ns+65ns)快一个数量级)

L3 Cache是被一个Socket上的所有CPU Core共享的,其实最早的L3 Cache被应用在AMD发布的K6-III处理器上,当时的L3 Cache受限于制造工艺,并没有被集成到CPU内部,而是被集成在主板上,如图:

从上图我们也能看出来,CPU如果要访问内存中的数据,则需要经过L1、L2、L3三道关卡,就是这三个Cache中都没有需要的数据,才会从主内存中直接进行读取。

最后我们来看下Intel Sandy Bridge CPU的架构图:

二、多核CPU与内存共享的问题

问题:Cache一致性问题

多核CPU共享内存的问题也被称为Cache一致性问题。

其实就是多个CPU核心看到的Cache数据应该是一致的,在某个数据被某个CPU写入自己的Cache(L1 Cache)以后,其他CPU都应该能看到相同的Cache数据。

如果在自己的Cache中有旧数据,则抛弃旧数据。

考虑到每个CPU都有自己内部独占的Cache,所以这个问题与分布式Cache保持同步的问题是同一类问题

目前业界公认的解决一致性问题的最佳方案就是Intel 的MESI协议了,大多数SMP架构都采用了这一方案。

解决方案:MESI

不知道大家还记得Cache Line 吗,就是我们常说的高速缓存中缓存条目里面的那个缓存行。

其实仔细想想,在进行I/O操作从来不以字节为单位,而是以块为单位,有两个原因:

I/O 操作比较慢,所以读一个字节与读连续N个字节的花费时间基本相同

数据访问一般都具有空间连续的特征

所以CPU针对Memory的读写也采用了类似于I/O块的方式

实际上,CPU Cache(高速缓存)里最小的存储单元就是Cache line(缓存行),Intel CPU 的一个Cache Line存储64个字节。

每一级Cache都被划分为很多组Cache Line,典型的情况就是4条Cache Line为一组。

当Cache从Memory中加载数据时,一次加载一条Cache Line的数据

如图我们可以看到,每个Cache Line 头部都有两个Bit来标识自身状态,总共四种:

M(Modified):修改状态,在其他CPU上没有数据的副本,并且在本CPU上被修改过,与存储器中的数据不一致,最终必然会引发系统总线的写指令,将Cache Line中的数据写回Memory中。

E(E__clusive):独占状态,表示当前Cache Line中的数据与Memory中的数据一致,此外,在其他CPU上没有数据的副本。

S(Shared):共享状态,表示Cache Line中的数据与Memory中的数据一致,而且当前CPU至少在其他某个CPU中有副本。

I(Invalid):无效状态,在当前Cache Line中没有有效数据或者该Cache Line数据已经失效,不能再用;当Cache要加载新数据时,优先选择此状态的Cache Line,此外,Cache Line的初始状态也是I状态

在对Cache(高速缓存)的读写操作引发了Cache Line(缓存行)的状态变化,因而可以将其理解为一种状态机模型。

但MESI的复杂和独特之处在于状态有两种视角:

一种是当前读写操作(Local Read/Write)所在CPU看到的自身的Cache Line状态及其他CPU上对应的Cache Line状态

另一种是一个CPU上的Cache Line状态的变迁会导致其他CPU上对应的Cache Line状态变迁。

如下所示为MESI协议的状态转换图:

具体MESI的实现过程可以看我另一篇

计算机内存基础硬核知识篇3

一、电脑软硬件基础知识

1、CPU型号怎么看?

CPU是一台电脑的核心,而目前笔记本市场基本被Intel(英特尔)的CPU垄断。而Intel的CPU型号命名还算比较有规律。

以i7-6920HQ为例:

四位数的头一个数字是6指的是代际,也就是是英特尔第六代处理器。目前英特尔在市面上是4、5、6三代处理器并存。老于4代的处理器现在比较少见,一般也不推荐。

920是它的SKU值,可以理解为是一个编号。用来区分不同性能的CPU型号。

数字后面紧跟着的字母是H,代表的是处理器的功耗/性能类别。类似的有U(超低功耗15W)、M(仅出现在5代以前)、H(高性能35W/45W)。需要注意的是:功耗大不仅意味着更大的耗电量,也表示CPU的发热量越大。进而对笔记本的散热系统有更高的要求。所以主打高性能的笔记本(比如游戏本),几乎没有轻薄、长续航的。

最后一个产品线后缀,有Q(四核处理器)、K(开放超频)两种情况。而双核、不可超频的处理器没有这个后缀,也是最常见的。

什么?看完了还是不懂怎么选?简单来说,如果你在乎功耗(省电)的话,代际越新越省电。比如6代比4代更省电。而在同一代中,U比H省电,而H又比HQ/HK省电。

2、关于电脑性能

如果你想了解性能的话,这就有些麻烦了。

诸如i7>i5>i3这样的说法,基本不靠谱。因为这种说法仅仅在同一代处理器,同一功耗级别下才成立。如果跨代、跨系列地比较,就会出现诸如i5-6300HQ性能强于i7-6600U、i3-6100H和i7-4610Y性能差不多,这样不太好理解的情况。所以光看型号判断性能真的是不太靠谱。为了方便起见,我推荐一个方便(但并非完全严谨)的方法给大家:查Passmark评分

9168