内存的频率十分奇怪,有的是100的倍数,还有些xx33啊,xx66什么的。排列也是十分的清奇:
我们仔细观察这些可选的频率分布,会发现它们的间隔时松时紧,十分的怪异。
内存频率的这些数字是怎么来的呢?我们来一起抽丝剥茧,来上溯到这一切的源头,位于主板上的一颗小小的晶振。
晶振和BCLK
主板上有好几个晶振,其中最重要的就是XTAL:
它提供了基准的24MHz频率。它接入南桥PCH的嵌入式时钟控制器ICC(Integrated Clock Control),经过其中的PLL和差分器,输出100MHz的时钟信号CLKOUT_CPUBCLK_PIN:
大黑框里面就是ICC
这个CLKOUT_CPUBCLK_PIN就是大名鼎鼎的BCLK:
注意我选择的是不支持超频的Standard Profile,如果是想要超频,需要BIOS选择Overclock profile:
BIOS可以通过调节BCLK PLL来调整输出给CPU的BCLK,可以以1MHz的步进进行调节。这些资料来源于PCH Z270的芯片手册(datasheet)[1]
BCLK也叫做基频(Base Clock,BCLK),它像雪山上留下的第一股泉水,从南桥流出,汇入CPU,从此不断分叉,滋养了其中大多数IP,如内核、核显,也包括今天的主角内存控制器:
它是基准频率,其他的频率都是在它的基础上变换出来的:
CPU中的各个器件并不是工作在100MHz上,各个IP有自己的倍频(Multiplier),来为自己服务。例如CPU内核的频率就是这样计算的:
CPU主频 = 基频BCLK × 倍频
举个例子,标称3.5GHz的CPU,它的基频是100MHz,内核的倍频是35,算下来就是
100 × 35 = 3500MHz=3.5GHz
十分简单,是不是?
慢着,既然内存控制器的频率来源于BCLK,那为什么还有2133这些奇怪的频率呢?
内存频率的Radio
部分源于PC漫长的历史中,内存频率来源于CPU频率,100MHz和133MHz这两个频率被DRAM保留且被发扬广大。从此频率基本都以它们起跳。所以内存频率有两种基频:100MHz模式和133MHz模式。为了得到它们,就需要一个叫做:BCLK到内存频率转化率Radio的东西。BIOS负责设置它。一般这个选项是自动设置的,用户不需要关心,如果需要手动确定频率,则需要填这个值。它在不同厂商BIOS里面的名字各不相同,但意思是一样的,我们来看两种:
这个叫做CPU bus speed : DRAM speed,通俗易懂
各个名字比较接近Spec,估计是BIOS工程师命名的(逃
一般这个Radio可以选择两种:
100 : 100
100 : 133
也就是DRAM基频和BCLK一致,或者给换成133MHz。
好了,有了这两个基频,内存的最终频率和CPU一样,也是:
内存频率 = 内存基频 × 倍频
几道计算题
好了,基本知识讲解到这里结束,我们现在测验!哈哈,同学们别怕,我会和你一起做题的,包会哈。
Q:1400MHz怎么来的?
A:1400MHz = 100基频 x 14倍频 = 1400。很好,很完美。
Q:1333MHz怎么来的?
A:1333MHz = 133基频 x 10倍频 = 1330!似乎哪里不对啊,是不是有误差还是可以四舍五入啥的呢?
Q:2133MHz怎么来的?
A:2133MHz = 133基频 x 16倍频 = 2128?!更不对了,误差好大啊?哪里出了问题呢?
其实这个133MHz是个近似值,真实的值是133.3333333333....MHz,我们保留小数点后4位,重新计算一下后两题,结果四舍五入到整数部分。
Q:1333MHz怎么来的?
A:1333MHz = 133.3333基频 x 10倍频 = 1333
Q:2133MHz怎么来的?
A:2133MHz = 133.3333基频 x 16倍频 = 2133
很有趣,不是吗?还有更有趣的,看下面这个计算:
Q:2400MHz怎么来的?
A:2400MHz = 100基频 x 24倍频 = 2400。
有什么特殊的呢?其实还有另外
一个解:
A:2400MHz = 133.3333基频 x 18倍频 = 2400!
后记
青藏高原唐古拉山上的雪水,顺着山脊潺潺流下,弯弯曲曲而清澈见底。我曾经走在它的旁边,希望能够随着它一起向东,再向东,看看它在哪里得到了力量,变成浩瀚庄伟的长江。
在工作时间,看到时钟图,总线图,我总是有似曾相识的感觉。在那么多枝杈的图景中,一股神奇的力量也在酝酿,让几颗不起眼的晶振,驱动起如此复杂的系统,怎能说不是奇妙的事情?