• Memory Access vs CPU Speed_你真的了解CPU和内存吗?


    Memory Access vs CPU Speed

    How fast your memory can catch up with your CPU's speed in this GHz era?

    Memory Access

    Figure: Memory Access Speed

    Marks: Speed measured in MegaHertz (MHz). Hz=1/Second. Bus is the data path in a computer.

    Nowadays, all the CPUs are measured in Gigahertz (GHz). Memories just can races to MHz. How do they work together?

    CPU

    CPU is the place where all the actual computing is done. The higher speed performs faster result in computing. However the rest of components (so far) can't catch up the speed with CPU due to the technology limitation. Chipset is actually governing how information travels between CPU and the other components. On above graphic, we example CPU clock is 133MHz to communicate with other components, but the CPU core speed is actually 2.65GHz (133MHz x 20 Core/Bus Ratio. Different CPU models have different core/Bus ratio range, some are from 4 to 20, and some are from 2 to 15.

    Front Side Bus

    Chipset contains several "controllers" to govern different information. The controller which establishes the information flow between memory and CPU is North Bridge. Data speed between CPU and North Bridge use the CPU clock and be called Front Side Bus (FSB). FSB should equal to CPU clock, but nowadays we read/hear about 400MHz/533 FSB those are actually the efficiency by dual channels and double data rate. For example, the FSB is 133(MHz) x2 (dual channels) x (double data rate) = 533 MHz (virtual working efficiency).

    Memory Speed and data speed

    Memory speed also measured in memory clock. DDR (Double Data Rate) will twice the data transaction. Nowadays most of bus wide are 64 bits base that means the bus can path 8 Bytes data (64 bits/8 = 8 Bytes). How to calculate data the memory can carry through in one second? Taking an example of DDR 333 (which is actually 166MHz x 2) to multiply 8 Bytes (64bits' Bus) will get 2656MB/sec.

    Memory performance comparing with FSB

    If we calculate the data traveling speed between North Bridge and CPU, we have to use the efficiency of FBS to multiply bus wide's data. For example, the 133MHz CPU Clock (FSB is also 133MHz) which virtual working efficiency FSB between CPU and North Bridge is 533MHz (133MHz x 2 x2) multiplies 8 Bytes (64 Bits' bus) we will get 4264MB/sec. Comparing the data speed of DDR333 can carry through is still far behind the 533MHz FSB can take. So, there always has room to improve the speed of memory.

    CPU主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的工作频率(主频)包括两部分:外频与倍频,两者的乘积就是主频。倍频的全称为倍频系数。CPU的主频与外频之间存在着一个比值关系,这个比值就是倍频系数,简称倍频。倍频可以从1.5一直到23以至更高,以0.5为一个间隔单位。外频与倍频相乘就是主频,所以其中任何一项提高都可以使CPU的主频上升。由于主频并不直接代表运算速度,所以在一定情况下,很可能会出现主频较高的CPU实际运算速度较低的现象。因此主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能.

    大家知道,计算机系统的时钟速度是以频率来衡量的。晶体振荡器控制着时钟速度,在石英晶片上加上电压,其就以正弦波的形式震动起来,这一震动可以通过晶片的形变和大小记录下来。晶体的震动以正弦调和变化的电流的形式表现出来,这一变化的电流就是时钟信号。而内存本身并不具备晶体振荡器,因此内存工作时的时钟信号是由主板芯片组的北桥或直接由主板的时钟发生器提供的,也就是说内存无法决定自身的工作频率,其实际工作频率是由主板来决定的。

    再说说为什么会有前端总线一说吧,总线是将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。通俗的说,就是多个部件间的公共连线,用于在各个部件之间传输信息。人们常常以MHz表示的速度来描述总线频率。总线的种类很多,前端总线的英文名字是Front Side Bus,通常用FSB表示,是将CPU连接到北桥芯片的总线。计算机的前端总线频率是由CPU和北桥芯片共同决定的。

    北桥芯片负责联系内存、显卡等数据吞吐量最大的部件,并和南桥芯片连接。CPU就是通过前端总线(FSB)连接到北桥芯片,进而通过北桥芯片和内存、显卡交换数据。前端总线是CPU和外界交换数据的最主要通道,因此前端总线的数据传输能力对计算机整体性能作用很大,如果没足够快的前端总线,再强的CPU也不能明显提高计算机整体速度。数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率,即数据带宽=(总线频率×数据位宽)÷8。目前PC机上所能达到的前端总线频率有266MHz、333MHz、400MHz、533MHz、800MHz几种,前端总线频率越大,代表着CPU与北桥芯片之间的数据传输能力越大,更能充分发挥出CPU的功能。现在的CPU技术发展很快,运算速度提高很快,而足够大的前端总线可以保障有足够的数据供给给CPU,较低的前端总线将无法供给足够的数据给CPU,这样就限制了CPU性能得发挥,成为系统瓶颈。

    外频与前端总线频率的区别:前端总线的速度指的是CPU和北桥芯片间总线的速度,更实质性的表示了CPU和外界数据传输的速度。而外频的概念是建立在数字脉冲信号震荡速度基础之上的,也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一万万次,它更多的影响了PCI及其他总线的频率。之所以前端总线与外频这两个概念容易混淆,主要的原因是在以前的很长一段时间里(主要是在Pentium 4出现之前和刚出现Pentium 4时),前端总线频率与外频是相同的,因此往往直接称前端总线为外频,最终造成这样的误会。随着计算机技术的发展,人们发现前端总线频率需要高于外频,因此采用了QDR(Quad Date Rate)技术,或者其他类似的技术实现这个目的。这些技术的原理类似于AGP的2X或者4X,它们使得前端总线的频率成为外频的2倍、4倍甚至更高,从此之后前端总线和外频的区别才开始被人们重视起来。

    再说说AMD和INTER的区别吧AMD与Intel目前最大的区别就是指令集的区别,双核的概念AMD早就应用了,只不过不如现在的双芯处理器那么的成熟。这也就是为什么英特尔用G代表,而AMD用XXXX+来代表编号,英特尔高频低能,AMD低频高能,所以为什么一般同档次的产品AMD的主频比英特尔的低,其实并不低,只是表现方法不同罢了。例如AMD的2500+就相当于英特尔的2.5G。 

    CPU的处理性能不应该单去看主频,而INTEL正是基于相当相当一部分人对CPU的不了解,采用了加长管线的做法来提高频率,从而误导了相当一部分的人盲目购买。CPU的处理能力简单地说可以看成:实际处理能力=主频*执行效率,就拿P4E来说他的主频快是建立在使用了更长的管线基础之上的,而主频只与每级管线的执行速度有关与执行效率无关,加长管线的好处在与每级管线的执行速度较快,但是管线越长(级数越多)执行效率越低下,AMD的PR值可能会搞得大家一头雾水,但是却客观划分了与其对手想对应的处理器的能力。为什么实际频率只有1.8G的AMD 2500+处理器运行速度比实际频率2.4G的P4-2.4B还快?为什么采用0.13微米制程的Tulatin核心的处理器最高只能做到1.4G,反而采用0.18微米制程的Willamette核心的处理器却能轻松做到2G?下面我们就来分析一下到底是什么原因导致以上两种“怪圈”的存在。 

    每块CPU中都有“执行管道流水线”的存在(以下简称“管线”),管线对于CPU的关系就类似汽车组装线与汽车之间的关系。CPU的管线并不是物理意义上供数据输入输出的的管路或通道,它是为了执行指令而归纳出的“下一步需要做的事情”。每一个指令的执行都必须经过相同的步骤,我们把这样的步骤称作“级”。管线中的“级”的任务包括分支下一步要执行的指令、分支数据的运算结果、分支结果的存储位置、执行运算等等…… 最基础的CPU管线可以被分为5级: 1、取指令 2、译解指令 3、演算出操作数 4、执行指令 5、存储到高速缓存 你可能会发现以上所说的5级的每一级的描述都非常的概括,同时如果增加一些特殊的级的话,管线将会有所延长: 1、取指令1 2、取指令2 3、译解指令1 4、译解指令2 5、演算出操作数 6、分派操作 7、确定时 8、执行指令 9、存储到高速缓存1 10、存储到高速缓存2 无论是最基本的管线还是延长后的管线都是必须完成同样的任务:接受指令,输出运算结果。两者之间的不同是:前者只有5级,其每一级要比后者10级中的每一级处理更多的工作。如果除此以外的其它细节都完全相同的话,那么你一定希望采用第一种情况的“5级”管线,原因很简单:数据填充5级要比填充10级容易的多。而且如果处理器的管线不是始终充满数据的话,那么将会损失宝贵的执行效率——这将意味着CPU的执行效率会在某种程度上大打折扣。 

    那么CPU管线的长短有什么不同呢?——其关键在于管线长度并不是简单的重复,可以说它把原来的每一级的工作细化,从而让每一级的工作更加简单,因此在“10级”模式下完成每一级工作的时间要明显的快于“5级”模式。最慢的(也是最复杂)的“级”结构决定了整个管线中的每个“级”的速度——请牢牢记住这一点! 我们假设上述第一种管线模式每一级需要1个时钟周期来执行,最慢可以在1ns内完成的话,那么基于这种管线结构的处理器的主频可以达到1GHz(1/1ns = 1GHz)。现在的情况是CPU内的管线级数越来越多,为此必须明显的缩短时钟周期来提供等于或者高于较短管线处理器的性能。好在,较长管线中每个时钟周期内所做的工作减少了,因此即使处理器频率提升了,但每个时钟周期缩短了,每个“级”所用的时间也就相应的减少了,从而可以让CPU运行在更高的频率上了。 

    如果采用上述的第二种管线模式,可以把处理器主频提升到2GHz,那么我们应该可以得到相当于原来的处理器2倍的性能——如果管线一直保持满载的话。但事实并非如此,任何CPU内部的管线在预读取的时候总会有出错的情况存在,一旦出错了就必须把这条指令从第一级管线开始重新执行,稍微计算一下就可以得出结论:如果一块拥有5级管线的CPU在执行一条指令的时候,当执行到第4级时出错,那么从第一级管线开始重新执行这条指令的速度,要比一块拥有10级管线的CPU在第8级管线出错时重新执行要快的多,也就是说我们根本无法充分的利用CPU的全部资源,那么我们为什么还需要更高主频的CPU呢?? 

    回溯到几年以前,让我们看看当时1.4GHz和1.5GHz的奔腾四处理器刚刚问世之初的情况:当时Intel公司将原奔腾三处理器的10级管线增加到了奔腾四的20级,管线长度一下提升了100%。最初上市的1.5GHz奔腾四处理器曾经举步维艰,超长的管线带来的负面影响是由于预读取指令的出错从而造成的执行效率严重低下,甚至根本无法同1GHz主频的奔腾三处理器相对垒,但明显的优势就是大幅度的提升了主频,因为20级管线同10级管线相比,每级管线的执行时间缩短了,虽然执行效率降低了,但处理器的主频是根据每级管线的执行时间而定的,跟执行效率没有关系,这也就是为什么采用0.18微米制程的Willamette核心的奔腾四处理器能把主频轻松做到2G的奥秘! 固然,更精湛的制造工艺也能对提升处理器的主频起到作用,当奔腾四换用0.13微米制造工艺的Northwood 核心后,主频的优势才大幅度体现出来,一直冲到了3.4G,长管线的CPU只有在高主频的情况下才能充分发挥优势——用很高的频率、很短的时钟周期来弥补它在预读取指令出错时重新执行指令所浪费的时间。 但是,拥有20级管线、采用0.13微米制程的Northwood核心的奔腾四处理器的理论频率极限是3.5G,那怎么办呢?Intel总是会采用“加长管线”这种屡试不爽的主频提升办法——新出来的采用Prescott核心的奔腾四处理器(俗称P4-E),居然采用了31级管线,通过上述介绍,很明显我们能得出Prescott核心的奔四处理器在一个时钟周期的处理效率上会比采用Northwood核心的奔四处理器慢上一大截,也就是说起初的P4-E并不比P4-C的快,虽然P4-E拥有了更大的二级缓存,但在同频率下,P4-E绝对不是P4-C的对手,只有当P4-E的主频提升到了5G以上,才有可能跟P4-3.4C的CPU对垒,著名的CPU效能测试软件SuperPi就能反应出这一差距来:P4-3.4E的处理器,运算Pi值小数点后100万位需要47秒,这仅相当于P4-2.4C的成绩,而P4-3.4C运算只需要31秒,把同频率下的P4-3.4E远远的甩在了后面!! AMD 2500+处理器,采用了10级管线,只有1.8G的主频却能匹敌2.4G的P4;苹果电脑的G4处理器,更是采用了7级管线,只有1.2G的主频却能匹敌2.8C的P4,这些都要归功于更短的管线所带来的更高的执行效率,跟它们相比,执行效率方面Intel输在了管线长度上,但主频提升方面Intel又赢在了管线长度上,因为相对于“管线”这个较专业的问题,大多数消费者还是陌生的,人们只知道“处理器的主频越高速度就越快”这个片面的、错误的、荒谬的理论!!这就是Intel的精明之处!!! 

    内存主频和CPU主频一样,习惯上被用来表示内存的速度,它代表着该内存所能达到的最高工作频率。内存主频是以MHz(兆赫)为单位来计量的。内存主频越高在一定程度上代表着内存所能达到的速度越快。内存主频决定着该内存最高能在什么样的频率正常工作。目前较为主流的内存频率室333MHz和400MHz的DDR内存,以及533MHz和667MHz的DDR2内存。    

    DDR内存和DDR2内存的频率可以用工作频率和等效频率两种方式表示,工作频率是内存颗粒实际的工作频率,但是由于DDR内存可以在脉冲的上升和下降沿都传输数据,因此传输数据的等效频率是工作频率的两倍;而DDR2内存每个时钟能够以四倍于工作频率的速度读/写数据,因此传输数据的等效频率是工作频率的四倍。例如DDR 200/266/333/400的工作频率分别是100/133/166/200MHz,而等效频率分别是200/266/333/400MHz;DDR2 400/533/667/800的工作频率分别是100/133/166/200MHz,而等效频率分别是400/533/667/800MHz。

    内存异步工作模式包含多种意义,在广义上凡是内存工作频率与CPU的外频不一致时都可以称为内存异步工作模式。首先,最早的内存异步工作模式出现在早期的主板芯片组中,可以使内存工作在比CPU外频高33MHz或者低33MHz的模式下(注意只是简单相差33MHz),从而可以提高系统内存性能或者使老内存继续发挥余热。其次,在正常的工作模式(CPU不超频)下,目前不少主板芯片组也支持内存异步工作模式,例如Intel 910GL芯片组,仅仅只支持533MHz FSB即133MHz的CPU外频,但却可以搭配工作频率为133MHz的DDR 266、工作频率为166MHz的DDR 333和工作频率为200MHz的DDR 400正常工作(注意此时其CPU外频133MHz与DDR 400的工作频率200MHz已经相差66MHz了),只不过搭配不同的内存其性能有差异罢了。再次,在CPU超频的情况下,为了不使内存拖CPU超频能力的后腿,此时可以调低内存的工作频率以便于超频,例如AMD的Socket 939接口的Opteron 144非常容易超频,不少产品的外频都可以轻松超上300MHz,而此如果在内存同步的工作模式下,此时内存的等效频率将高达DDR 600,这显然是不可能的,为了顺利超上300MHz外频,我们可以在超频前在主板BIOS中把内存设置为DDR 333或DDR 266,在超上300MHz外频之后,前者也不过才DDR 500(某些极品内存可以达到),而后者更是只有DDR 400(完全是正常的标准频率),由此可见,正确设置内存异步模式有助于超频成功。 

    简单的说内存同步异步,是指内存的频率和CPU的外频,FSB比较。 如果是相同的就是同步了,不相同的自然就是异步 ,比如你的C4的FSB是400,相对应的你的内存最好是DDR 400的啦。 现在高端的P4的FSB是800,我们用双通道的DDR 400才能满足同步的需要。 那更高端的P4的FSB有1066,我们就至少需要DDR 533的内存或是 DDR 2 533的内存频率。 相比AMD的CPU。 举个例子,一般现在SEMPRON(754针脚),它的外频是200。。我们就只要DDR 400就满足了需要。但是它只能超外频,一般都能超到260或是更高的,一般的DDR内存到不了那么高的频率,比如DDR 440 450左右,,所以内存就只能工作在异步模式下。如果是462接口的U,它的外频有266/333/400的。所以有DDR 400就够它们的需要。

    细心的朋友可能会发现,在品牌机的广告中对于内存的规格往往只粗略标注“DDR 256MB”或“DDR2 356MB”字样,对于内存频率的重要指标(如“DDR 400”)却是犹抱琵琶半遮面,是厂家忘记了吗?那这种频率/带宽上的差异又会给我们带来什么样的影响呢?
    带宽是影响CPU和内存数据交换的关键因素,要让两者发挥最佳性能,CPU的外频和总线带宽最好与内存相匹配。

    计算公式:对于Intel主流处理器而言,CPU前端总线带宽=前端总线频率(FSB)×64位总线位宽÷8。比如,外频为133MHz的P4 CPU的FSB为533MHz带宽为533×64÷8=4.2GB/s。
    小知识:相对于Intel的CPU提到的前端总线,现在的AMD的处理器已经没有了前端总线的概念,因为其内存控制器是集成在处理器内部的,而Intel平台则还是在主板芯片组上。
    内存的频率和带宽的关系可以用下面的公式来计算:内存带宽=内存倍速×内存频率×内存总线位宽÷8(SD内存倍速=1,DDR/DDR2内存倍速=2,双通道DDR内存倍速=4)。如DDR400的带宽为:2×200×64÷8=3.2GB/s。

    大家根据上面给出的计算方法,应该可以很简单就找到适合自己CPU的内存,内存带宽必须大于或等于CPU所需带宽,没有瓶颈才能发挥CPU的性能。

    另外,AMD处理器内建内存控制器在内存性能上有优势,构建双通道比较好 ,INTEL平台的内存控制器在主板芯片组上延时稍微高些.AMD处理器支持双通道的处理器有AM2接口的全系列和939接口处理器 .AMD处理器的游戏性能好象好些 还有就是AMD的主板相对便宜些.所以除了比较近的单核AMD性价比更高,双核的话当然还是扣肉!

  • 相关阅读:
    assign、weak
    iOS 使用 github
    iOS 知识点
    thinkphp 具体常量,在view里面使用
    一个php+jquery+json+ajax实例
    php pdo操作
    nginx缓存
    php模版静态化技术
    php模版静态化原理
    thinkphp实现多数据库操作
  • 原文地址:https://www.cnblogs.com/jjkv3/p/2454146.html
Copyright © 2020-2023  润新知