cpu内存干什么?
cpu内存干什么?对内存如何跟CPU搭配始终是热门话题,在网上还有各式各样的说法,下面是小编给大家整理的一些相关知识,希望对大家有帮助!
cpu内存干什么?
1.内存和CPU的有关数据
在正式讨论问题之前,我们首先要把内存的核心频率、时钟频率和数据频率之间的关系搞清楚,而且应该特别熟悉。这是讨论这个问题的基础。见下表:
表1 内存名称及各种频率列表
由表1可见,核心频率、时钟频率和数据频率之间有固定的关系。它们之间的比例关系见表2。
表2. 内存的核心频率、时钟频率和数据频率之间的比例关系
其中的核心频率又称颗粒频率或基本频率;时钟频率又称工作频率、内存频率、I/O频率、DRAM、DRAM Frequency、时脉或内存速度;数据频率又称等效频率或传输通道频率。本文只采用“核心频率”、“时钟频率”和“数据频率”三个名称。对这些名称一定要弄清楚。
另外,有关CPU的名称也是五花八门的。例如,主频又称Core Speed;外频的名称就更多了,如Bus Speed 、汇流排频率、FSB(和前端总线混用)等。
2.内存和CPU搭配的基本原则
我认为:无论你采用的CPU是Intel的,还是AMD的,当选配内存时都必须遵守三条基本原则。
第一条是频率要同步:即内存的核心频率要等于或稍大于CPU的外频。不要给内存加上它不能承受的高频率,否则是频率“过载”。频率“过载”后,内存将拒绝工作。这样,电脑是要蓝屏的。当然,你给它加上低于核心频率的频率时,它会是胜任愉快的。
第二条是带宽要匹配:应该设法使内存的数据带宽跟CPU前端总线的带宽相等,否则,数据的传输能力将受制于带宽较低的那端;
第三条是主板要调控:因为以上两个条件有时是不可能同时能满足的。这就要靠主板来调控,调控的主要方法是异步设置。因为第一条是有关生或死的问题,所以,这一条必须满足。第二条就可以灵活处理了。
另外,当讨论内存跟CPU如何搭配时,必须明确以下事项:
①内存的核心频率小于外频时,内存会拒绝工作。表现是蓝屏。但是,在任何情况下,内存的核心频率大于CPU的外频时,内存都能正常工作。但是,系统也不会承认它的高频率。只承认它的核心频率等于外频。例如,你将DDR2-1066插入外频是200MHz的板子上时,系统将认为这个内存是DDR2-800。
②Intel处理器的前端总线频率(FSB)是外频频率的4倍。但是,在历史上前端总线的频率和外频是同一个,所以,人们还是经常用FSB来表示外频(例如软件CPU-Z就是这样,它表示的“FSB:DRAM”实际上是指“CPU的外频:内存的时钟频率”)。
AMD的内存,在K8以前,也有前端总线,不过,那时的前端总线频率是外频频率的两倍。K8以后AMD的CPU就没有前端总线了。
③当讨论内存跟Intel平台的CPU的匹配时,必须知道CPU的外频或前端总线频率。知道一个就行,因为它们之间是四倍关系,此时,不必关心CPU的主频是多少。
不过,自从有了Intel的i3/i5/i7后,参照的CPU频率已经不是外频和前端总线FSB,而是基本频率BF了。但是,在检测软件CPU-Z中,还是把BF频率称为外频的。在这种情况下,怎样配内存,请参看本文之6。
④当讨论内存跟AMD平台的CPU匹配时,首先必须明确这个CPU是K8的?K10的?还是K8以前的?因为这三种CPU陪内存的方法是截然不同的。
讨论K8以前的CPU时,只需知道外频或FSB;讨论给K8的CPU配内存时,只需知道CPU的主频,不要提HT总线,因为配内存跟HT总线无关;同样的原因,当为K10配内存时,如果你不超频,只需知道CPU或主板支持什么内存就可以了。因为K10架构的CPU配内存时是跟外频挂钩的,而AMD CPU的外频是固定在200 MHz的。
⑤当讨论内存跟CPU的搭配关系时,是根据内存和CPU的参数计算的,不必考虑主板。但是,当你对搭配方案作出选择后,还必须考虑主板是否支持。在一般情况下,主板的频率是应该高于FSB的频率的。
⑥内存的异步就是使加给内存的频率是它能正常工作的频率。一般是指降频。但是,频率降下来的后果就是速度变慢和带宽变窄。所有主板都支持内存异步运行的。但是,支持的程度不同。
⑦从内存跟CPU是否搭配的角度看,配内存时,不必考虑内存的容量是多少。但是,容量超过一定大小时,有时是要考虑主板是否支持的。
⑧内存跟CPU是否匹配,跟CPU是几个核没有什么关系。
以上就是我认为内存匹配的三大原则和八项注意。
3.在Intel平台实现频率同步的方法
在Intel平台,内存频率跟CPU同步的条件就是:内存的核心频率必须等于或稍大于CPU的外频。否则,就是“频率过载”,内存将停止工作,主要的表现形式是蓝屏。
虽然对我这个说法经常听到不同的声音。但是,我坚信我的这个归纳方法是完全能站得住脚的。因为内存能够耐受多大的频率,完全是由核心频率决定的。时钟频率和数据频率都是在核心频率的基础上,通过技术手段放大出来的。当核心频率相等时,不同类型的内存会有不同的时钟频率和数据频率。
例如,在Intel平台,当外频是200MHz时,为了实现频率同步,应该选DDR-400、DDR2-800或DDR3-1600。因为这几种内存的核心频率都是200MHz。
这是十分重要的一条规律。但是,过去,人们都是把内存的同步条件说成“内存的时钟频率(而不是说“内存的核心频率”)等于或稍大于外频频率就是同步”。更多的是模棱两可的说法,比如说“内存的频率等于或稍大于外频,就是同步”。至今在网上的许多文章还是这样说的。相当混乱。
我认为,在SD和DDR时代,说“时钟频率和核心频率相等就是同步”,是完全正确的。但是,在DDR2和DDR3出现以后,再这样说就是完全错误的,因为不同类型的内存。其核心频率跟时钟频率是不同的。因此,两种判别方法存在巨大差异。
不过,囿于习惯,人们还是愿意用时钟频率来跟CPU的外频对比。我认为,按时钟频率跟CPU频率对比的方法来判断内存是否同步也不是不可以的。但是,必须把这个比作适当改动。比如说:“对于SDRAM和DDR,当内存的时钟频率跟CPU的外频相等时,就是内存同步。例如,当外频是200MHz时,应该配DDR-400的内存”;对于DDR2,就应该说:“当内存的时钟频率是外频的两倍时,就是内存同步。例如,当外频是200MHz时,应该配DDR2-800内存”;对于DDR3,就应该说:“当内存的时钟频率是外频的4倍时,就是内存同步。例如当外频是200MHz时,就应该配DDR3-1600内存”。这样说不是太啰嗦了吗!
可是,在检测软件CPU-Z中,就是用CPU的外频(此处称其为FSB)跟时钟频率(此处称为DRAM)的比值关系表示内存是否同步的的。其关系见下表:
表3 内存同步时,CPU的外频跟内存的时钟频率的频率关系
注:在检测软件CPU-Z中,就是用“FSB”表示CPU的外频的,这是历史形成的误用。上表中的“DRAM”是指时钟频率。
知道了以上原则,我们应该选什么样的内存跟CPU来匹配的问题也就迎刃而解了。我认为:对Intel的CPU在i3/i5/i7架构出现以前,只要能知道外频或前端总线频率(FSB=4倍外频)中的一个参数,就可以选择合适的内存了。不同型号的内存有不同的计算方法。具体计算方法是:
①当在Intel平台选择DDR内存时有:
DDR-×××后的三个“×”= FSB值÷2 (1)
例如,当Intel平台的FSB是533MHz时,如果选择DDR内存时,×××=533÷2=266,所以,应该选DDR-266型的内存。这样选也符合“内存的核心频率(133MHz)等于CPU外频(133MHz)”的原则。
②当在Intel平台选择DDR2内存时有:
DDR2-×××后的三个“×”= FSB 值 (2)
例如,当Intel平台的FSB是800 MHz时,如果选择DDR2内存时,×××=FSB值=800,所以,应该选DDR2-800型的内存。这样选也符合“内存的核心频率(200MHz)等于CPU外频(200MHz)”的原则。
③当在Intel平台选择DDR3内存时有:
DDR3-××××后的四个“×”= FSB值×2 (3)
例如,当Intel平台的FSB是800 MHz时,如果选择DDR3内存,就应该选四个“×”等于800×2=1600的内存,即应该选DDR3-1600型的内存。这样选也符合“内存的核心频率(200MHz)等于CPU外频(200MHz)”的原则。
下表就是我根据上述原则计算出来的、根据CPU的参数来选择内存的计算结果。这是根据频率同步的条件计算出来的最高频率。都存在向较低频率异步的空间。(i3/i5/i7架构的CPU如何选内存,见本文的6)
表4.内存同步时外频频率跟内存型号的关系
注①:表中的“频率比”是指同步的情况下,外频跟时钟频率的比,即在CPU-Z中的“FSB:DRAM”值。如果CPU-Z显示的不是这个值,那就是内存频率异步了。
根据CPU-Z中的“FSB:DRAM”比,还可以很容易反求出来在电脑中安装的(或设置的)是什么型号的内存。例如,当你的CPU的外频是200 MHz、而且安装的内存是DDR2时,如果CPU-Z的显示是“FSB:DRAM=1:1.66”的话,那就肯定你安装的内存不是在同步状态。因为DDR2内存同步时,其比是1:2。那么安装的是什么内存呢?可以有下述方法计算出来:因为200:X=1:1.66,所以,X=333。这个333就是实装内存的时钟频率值333 MHz,由此可以断定,这个内存是DDR2-667。
注②:DDR、DDR2和DDR3内存的针脚和插座都是不相同的,不能用错。所以,当选择主板时,要搞清楚主板支持哪类内存。目前,为了用户方便,有的主板同时具有DDR2和DDR3内存插槽。
4.在Intel平台实现带宽相等的计算方法
什么是带宽呢?在计算机领域,带宽又叫频宽,是指在固定的时间内可以传输的数据量,亦即在传输通道中可以传递数据的能力。带宽通常以比特每秒(bps)表示,即每秒可传输的位数。但是,为了简化,通常都是以MB/s或GB/s表示的。带宽的计算方法是:
带宽 = 频率×总线位数/8 (4)
因为电脑内存总线的传输位数是64比特,所以,对于频率是800 MHz的通道来说,带宽 = 800MHz×64b÷8b/B = 6.4 GB/s。
还有一个简捷计算方法,就是
带宽=频率数×8B (5)
例如,当频率等于800 MHz时,带宽就是800 MHz×8B = 6400MB/s = 6.4GB/s。
在表1中已经给出了不同频率和带宽关系的计算结果。
这里说的带宽匹配,实际上就是频率的匹配。对于我们普通使用者,还是按频率来论述比较直观,因为带宽相等,就是频率相等。
带宽匹配的原则是:内存的数据带宽应该跟CPU前端总线FSB的带宽相等,或者说:“内存的数据频率等于CPU的FSB频率,就是带宽匹配”。只有这样才能保证数据的顺利传输。如果有一方的带宽小于另一方,小带宽的一方就构成了“瓶颈”。但是,如果CPU已经选定了,内存的带宽大一些,并没有坏处。
在满足同步的条件下,对DDR2来说,就会自动满足带宽相等的要求,即可以做到内存的传输带宽等于前端总线的带宽;但是,对DDR来说,如果满足了同步的要求,内存的带宽仅是FSB带宽的1/2;对于DDR3来说,如果满足了同步的要求,内存的带宽就是FSB带宽的两倍。这种关系见下表。
表5 内存同步时,FSB的带宽跟内存数据通道的带宽的关系
对内存的同步要求是生或死的问题,所以,必须满足,如果不能满足,必须采取异步运行。但是,对于带宽的要求则比较灵活一些。如果不能满足,也可以用双通道或异步的方法来解决。在DDR时代就是利用双通道的方法解决内存带宽是“瓶颈”的问题的。但是,如果不组成双通道,只用一个内存条,只要频率是同步的,也可以正常工作。
在AMD平台,其内存控制器置入CPU内部了。即CPU直接跟内存打交道了。带宽的问题,已经没有那么重要了。
5.在Intel平台用主板调控内存运行参数的方法
①主板的自动调控作用:其实,根据内存的同步要求选择出来的内存(见表4)就可以正常使用了。但是,也有例外的情况。比如:有的时候,按计算结果,应该用DDR2-800内存才能同步,但是,你手头没有DDR2-800,只有DDR2-667内存,并安装上去了。怎么办呢?要靠主板的调控。只要你没有在BIOS中的“MemClock Mode”中选“Manual”,也没有在“System Memory Multiplier”项更改默认设置“Auto”,主板就会自动根据内存条上SPD资料把加于内存的时钟频率降到333MHz,以使DDR2-667内存的频率不过载。这时CPU-Z的“FSB:DRAM”就是“1:1.66”,而不是“1:2”。这样调整过后,速度降低了,内存的带宽也变小了一些,但是,可以正常运行。
还有,如果满足内存同步需要的内存是DDR2-800,而你却安装或设置了DDR2-1066内存,主板也会把加给内存的频率按DDR2-800对待,CPU-Z对“FSB:DRAM”的显示还是“1:2”,不会显示“1:2.66”。但是,如果你是把内存超频到1066MHz的,CPU-Z则会显示“1:2.66”。
②主板的手动调控方法:如果你要自己用手动设置内存也是可以的。方法是:在BIOS的“Set Memory Clock”项选“Manual”(手动);或在“System Memory Multiplier”项不选择“Auto”,而是选择你实际安装在内存插槽上的内存,设置就会成功的。当然,还是需要主板支持的,也就是说,如果主板上有种这种设置项目才行。
手动设置的选项有多种方法。有的直接用内存芯片名称表示(如华硕的P5E3 WS主板,直接用诸如DDR3-1333表示);有的用数字表示(如技嘉GA-P31-S3G主板就用3.33或4.0表示。3.33就表示DDR2-667内存);当然,有的主板则是用FSB :DRAM的比值表示。
6.在Intel平台没有FSB了,怎么配内存?
Intel 酷睿 i3/i5/i7 CPU是把内存控制器置于CPU内部了。内存控制器控制的QPI(QuickPath Interconnect,快速通道互联)总线频率远高于传统的FSB(一般是外频的18倍),因此,为它选配内存的空间范围也大多了。例如,在过去,当外频是133MHz时,FSB = 4×133 mHz = 533MHz,这种关系是固定的。如果选DDR 内存,最高是DDR-266;如果选DDR2内存,最高是DDR2-533;如果DDR3内存,最高是DDR3-1066。如果你选择更高频率的内存,系统是不承认的,它只能把它们作降格处理。实际上FSB成了“瓶颈”。
自从有了QPI总线以后,选择内存的条件就宽松多了。这时CPU-Z上显示的“外频”133 MHz,已经不是传统意义上的外频了。它被称为基频(BF)。因此,它跟内存频率之间的同步关系也就改变了。例如,当“外频”(基频)是133 MHz时,甚至可以选用DDE3-1600内存了。不过,也不是无限制的。限制到什么程度?这就看CPU或主板的规定了。不过,有个大概估算办法,就是内存的数据频率大致是QPI频率的1/2。具体是多少,要看内存控制器和主板支持到什么程度,不是用户能左右的。
7.内存的双通道的设置问题
首先应该明确,双通道只是为了增大内存的带宽而设计的,因为,在DDR时代,CPU的FSB已经达到800 MHz了,但是,从频率同步的角度看,只能配DDR-400的内存。显然,内存的带宽只是FSB带宽的1/2,内存成了带宽匹配的“瓶颈”,因为CPU有一半的时间要等内存把数据传过来。因此,人们提出了双通道的概念。即在北桥再增加一个内存控制器,另外再增加一个DDR-400内存,使两个DDR-400的内存并联使用,带宽的匹配问题得以解决。
但是,因为双通道中的两个内存是分别受两个内存控制器控制的,组成双通道后,只对内存的带宽有改善,对每个内存的性能指标(如核心频率)并没有任何改善。因此,用两个DDR-400组成双通道时,其性能并不是DDR-800。
网上广泛流传的“用两个DDR2-533组成双通道,用在FSB=1066 MHz平台,就是绝配”的说法是错误的。因为DDR2-533的核心频率是533MHz÷4=166MHz,而FSB=1066MHz时的外频是1066MHz÷4=266MHz 。两个频率并不相等。也就是说,这样配,并不能满足同步条件。硬要这样配电脑是要蓝屏的。因为内存组成双通道后,他们的核心频率并不会提高。
双通道的作用可以这样比喻:马路很宽,可以容得下两辆汽车,可是,只有一辆车来回跑,这不是浪费吗?再买一辆汽车吧,让它们在一条路上并行跑,货运量不就增加一倍了吗!由此可见,双通道只是解决货运量(带宽)的问题。并不是把汽车的速度加倍的问题。也就是说:两个DDR2-533组成双通道,只能提高带宽,并不能提高内存的频率,两个DDR2-533组成双通道后,其效果并不等于一个DDR2-1066。
当然,如果你一定把DDR2-533用于FSB=1066 MHz的平台,也不是不可能,方法就是异步,使加给DDR2-533的频率降下来。但是,主板支持吗?如果是支持的,那么,需要异步运行才可以,这算是“绝配”吗?
8.在AMD CPU K8以前内存的配置方法
在K8以前,AMD内存也有前端总线(FSB),但是,跟Intel内存有一点点差别,就是前端总线频率是外频的两倍(Intel是4倍)。因为内存的同步与否是考虑外频的,所以,当外频跟内存的核心频率相等时就是同步。因此,外频是133MHz时,应该配DDR-266内存;外频是166MHz时,应该配DDR-333内存;外频是200MHz时,应该配DDR-400内存。这些都跟Intel平台是一致的。不同的是:在AMD平台,频率同步了的话,带宽也平衡了。所以,在当时的AMD平台就不存在双通道的问题。
9.AMD CPU K8 时代内存的选配方法
在AMD 的K8以后的CPU中,内存控制器被整合到CPU内部了(见下图),内存直接跟CPU打交道了。前端总线不存在了,跟北桥相连的总线改称HT总线了,这个总线除了不再跟内存联系外,其它的作用跟原前端总线的任务是相同的。
正是由于有了上述改变,所以,在AMD平台配内存时,内存跟CPU的搭配的计算方法也有了很大的变化。因为这时我们关心的只是CPU的主频。无需再考虑FSB和外频了。现在介绍内存跟AMD的CPU的搭配方法如下:
① 首先计算出内存控制器的分频倍数DIV(这种计算是由电脑自动进行的,当然我们也应该掌握):
DIV= CPU的标称主频÷你在BIOS中设置的内存的时钟频率 (6)
这个设置的时钟频率最好跟你实际安装的内存一致。如果不一致,电脑还是根据你的设置值进行计算的。
如果DIV的计算结果不是整数,则进为整数,例如,将7.4进为8。如果计算出来的分频系数小于5,则取为5。上述这些方法都是AMD的设计规定。
② 知道了内存分频倍数DIV以后,通过内存的实际时钟频率用下式计算:
内存的实际时钟频率= CPU的实际主频÷内存的分频倍数 (7)
知道了内存的时钟频率,就可以知道怎样配内存了。比如,你计算出来的时钟频率是是200MHz,而且是选择DDR内存,就应该配DDR-400;你计算出来的时钟频率是是400MHz,如果想配DDR2,则应该选DDR2-800;如果你计算出来的时钟频率是400MHz,想配DDR3内存,还是应该配DDR3-800。因为不管是什么型号的内存,数据频率总是时钟频率的两倍。
例1: CPU是AMD速龙(Athlon)64 3200+,主频是 2.0 GHz,如果打算选用DDR-400的内存并在BIOS做这样的设置时,问:① 分频倍数是多少?② 通过内存的实际频率是多少?
解:① 因为CPU的主频等于2000MHz;DDR-400的时钟频率等于400MHz/2=200MHz,所以,内存的分频倍数DIV=2000 MHz÷200 MHz=10;
② 因为没有对CPU进行超频,所以,它的主频还是2000MHz,所以,通过内存的实际总线频率=2000 MHz÷10=200 MHz,即相当是DDR-400。因此,选择DDR-400内存是可以的。当然,如果主板允许,也可以用两个DDR400组成双通道。以增大数据传输量。
例2: CPU是闪龙3200+,主频是 1.8 GHz,如果选用DDR2-800的内存时,问:① 分频倍数数是多少?② 通过内存的实际时钟频率是多少?(3)如果把主频超到2400 MHz时,应该怎样选择内存?
解:① 分频系数DIV=1800 MHz÷400 MHz=4.5,应向上取为5;
② 通过内存的实际时钟频率=1800 MHz÷5=360 MHz。内存降格使用为DDR2-720。因为内存的频率是向下兼容的,主板都会支持这样的内存。所以,这样配置也是可以的。
(3)如果把主频超到2400 MHz了,则通过内存的时钟频率就是2400 MHz÷5=480 MHz,即需要选择DDR2-960内存。选DDR2-1066吧。(但是,因为主频太低,还要看内存控制器或主板是否支持)
下图就是我根据以上原则把计算结果表格化了,为了简化,在表中没有把分频系数列出来。表中有灰色底纹的数字表示计算出来的分频系数小5。因此,求这些时钟频率时,分频倍数是按分频系数等于5计算的。
我相信,有这个表作参考,内存怎样跟CPU配合就是十分清楚的了。
现在,我们用上面的两个例题为例,研究一下怎么从下表中直接得出配内存的结果:(注:字体时大时小,不是作者的设置,是日志编辑功能的毛病。刚改版,还不完善。气煞人也!)
在第一个例题中的CPU频率是2GHz,在BIOS中设置的内存是DDR-400,因此从这个表就可以查得通过内存的时钟频率是200MHz,即该内存运行在DDR-400。这样选频率正好匹配。
第二个例题:CPU主频是1.8GHz,选得是DDR2-800内存,从表中可以查得内存的运行频率是360MHz,相当是DDR2-720内存。从表中还可以看出:如果你想使这个内存运行在DDR2-800,只有选2.0GHZ或以上的CPU。如果CPU的主频依旧是1.8GHz的话,即使你选用DDR2-1066也于事无补,它只会把内存降格为DDR2-720。有许多网友问:我安装的内存频率频率很高,但是,在CPU-Z中检测出来的频率又很低呢?主要原因是你安装的CPU的频率太低,主板并不支持频率过高的内存的缘故。
表6 AMD的CPU跟内存配合方法一览表
在本表中没有列出相应的分频系数,因而不利于超频时使用。其实,如果做超频操作时,只需把表中的数据乘以“超频后的CPU主频/超频前的CPU主频”就可以得到超频后加于内存的时钟频率了。
从这个表我们就可以清楚地看出来应该怎样选择内存了。比如,当CPU的主频是1600 MHz时,配DDR-400就可以了;当CPU的主频是2000 MHz时,配DDR2-800是正合适的;当CPU的主频是3200 MHz时,配DDR3-1066正合适。我猜想:主板的设计者就是按这个思路来设定主板默认的内存频率的。
这个表是在K8的条件下根据CPU和内存的参数做出的,目前已经发展到K10(似乎没有K9),因此,情况稍有变化。还有一个重要因素也不容忽视,那就是除了主板支持外,内存控制器是否支持这个频率。如果控制器不支持,只有主板支持也是不行的。
如此说来,上表仅是一个原则设定,如果你用CPU-Z进行检测时,其结果跟上表不符,就要从多方面找原因了。
10.AMD K10类CPU内存的匹配方法
AMD的K10 类CPU内存匹配的方法和计算方法较之K8有了很大的变化。其计算顺序是:
第一步:了解你选定的CPU支持什么样的内存。比如,可以是DDR2-800、DDR3-1333等;并且在BIOS的“DRAM Frequency”项中设置这个内存。当然也可以设置其他型号的内存。系统并不理会你插的是什么内存,而是根据你的设置的内存进行计算的;
第二步:根据在BIOS中设定的内存计算出分频系数
内存的分频系数=在BIOS中设定的内存的数据频率÷外频 (8)
内存的数据频率值是多大,可以从内存的型号中知道。例如,DDR2-800的数据频率就是800MHz;DDR3-1333 的数据频率就是1333MHz。依此类推。
由式(8)可知,当在BIOS中设定的内存是DDR2-800时,800 MHz÷200 MHz=4,即分频系数=4;当在BIOS中设置的外频是DDR3-1333时,1333MHz÷200MHz=6.67,即分频系数等于6.67。
第二步:根据下式计算出通过内存的实际数据频率
内存中的实际数据频率=实际外频×分频系数 (9)