衡量CPU的主要性能指标 - liviamarre/myRoad GitHub Wiki
衡量CPU的主要性能指标
主频
主频也叫时钟频率,单位是MHz(或GHz),*用来表示CPU的运算、处理数据的速度。*CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出现了偏差。至今,没有一条确定的公式能够实现主频和实际的运算速度两者之间的数值关系,即使是两大处理器厂家Intel英特尔和AMD,在这点上也存在着很大的争议,从Intel的产品的发展趋势,可以看出Intel很注重加强自身主频的发展。像其他的处理器厂家,有人曾经拿过一块1G的全美达处理器来做比较,它的运行效率相当于2G的Intel处理器。
外频
外频是CPU的基准频率,单位是MHz。CPU的外频决定着整块主板的运行速度。通俗地说,在台式机中,所说的超频,都是超CPU的外频(当然一般情况下,CPU的倍频都是被锁住的)相信这点是很好理解的。但对于服务器CPU来讲,超频是绝对不允许的。前面说到CPU决定着主板的运行速度,两者是同步运行的,如果把服务器CPU超频了,改变了外频,会产生异步运行,(台式机很多主板都支持异步运行)这样会造成整个服务器系统的不稳定。
前端总线(FSB)频率
前端总线(FSB)频率(即总线频率)是直接影响CPU与内存直接数据交换速度。有一条公式可以计算,即数据带宽=(总线频率×数据位宽)/8,数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率。比方,现在的支持64位的至强Nocona,前端总线是800MHz,按照公式,它的数据传输最大带宽是6.4GB/秒。外频与前端总线(FSB)频率的区别:前端总线的速度指的是数据传输的速度,外频是CPU与主板之间同步运行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一亿次;而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是100MHz×64bit÷8bit/Byte=800MB/s。
CPU的位和字长
倍频系数
倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频越高CPU的频率也越高。但实际上,在相同外频的前提下,高倍频的CPU本身意义并不大。这是因为CPU与系统之间数据传输速度是有限的,一味追求高倍频而得到高主频的CPU就会出现明显的“瓶颈”效应—CPU从系统中得到数据的极限速度不能够满足CPU运算的速度。
缓存
缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。
CPU扩展指令集
CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3、SSE4系列和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。
node,core,CPU和GPU的关系
-
node和CPU是等价的,其标志就是都有自己的cache和主存,有独立的支持电路。
-
一个CPU上可能有多个core,每个core是一个独立的计算单元,同一个CPU的多个core共用缓存和主存。
-
processor更多的是OS角度看到的逻辑处理器,由于CPU可以有多个物理核,而在操作系统的角度看,一个核就是一个逻辑处理器和独立的计算单元,所以processor的个数往往多于CPU的个数。
-
多个CPU可以共享内存和统一寻址,即DSM或SMP结构,也可以不共享内存,每个CPU都有自己独立专用的内存空间和地址,例如集群系统。
-
关于多个单核CPU与多核CPU。
- 从通信角度来看,多核CPU通过芯片内部总线通信,而多CPU往往需要通过主板总线、以太网或光纤通信。因此,多个单核CPU运行多线程程序时,由于每个线程需要独立运行在一个CPU上,则线程间通信开销较大。
- 从布线的角度,每个CPU都有独立的cache、主存和支持电路,因此主板布线难度较大。而多核CPU对主板空间的占用较小,布线压力较小。目前大部分主板仅支持单CPU,一般商用机器多采用多核单CPU的架构,系统具有多个逻辑核心,而少数高端机器和分布式系统需要更强的多任务并行计算能力,会采用多CPU架构。
- 从程序设计的角度,多核CPU可以通过软件封装被普通用户视为一个处理器,原来在单机上运行的程序不用更改就能执行,可以提高PC的计算能力而不增加程序的复杂性。而多CPU由于存在CPU间的数据一致性、主从关系控制等,导致程序实现、调试和运行的复杂性较高。
- 从程序运行的角度,多CPU运行时线程间的协作需要通过网络或主板总线完成,效率较低从而影响总体性能,而多核CPU可以通过共享的cache和主存完成,协同效率更高。然而在同时运行多个大型程序时,多个进程会分时使用多核CPU,程序切换开销较大。
- 从使用范围的角度,多CPU常见于分布式系统,多用于cluster,云计算平台等,该架构简单清晰,可以用商用机做数量堆叠,具有成本优势,适用于大计算量和对速度时间不敏感的任务,最大的瓶颈在于I/O,尤其是多个CPU之间的通信和协同,效率较低。而多核CPU架构适用于对I/O速度要求较高的应用,成本较高。
-
关于CPU与GPU。CPU为中央处理器,CPU为图形处理器。两者都有总线与外界联系,有自己的数字逻辑运算单元和缓存体系,都是为完成计算任务而设计。二者的区别主要表现为:
-
从功能和原理来看,CPU主要用于管理硬件和保证操作系统及应用程序的运行,包含运算单元、控制单元和缓存等,其能够处理显示数据但效率较低。GPU是一种特殊用途的CPU,为加速视频游戏和显示而设计的。在三维游戏和显示中,往往需要对海量数据执行相同的操作,因此GPU采用众核结构把相同的指令发送到所有核上,每个核采用不同的输入数据执行相同的操作,同时针对3D图形处理进行专门的指令集优化和硬件设计。
-
从结构上,CPU的核数比GPU少,但其每个核拥有足够大的缓存和数字逻辑运算单元,并辅助有很多加速分支等复杂逻辑判断的硬件,因此擅长处理具有复杂计算步骤和数据依赖的计算任务,而GPU的核数很多,被称为众核,但每个核比较简单,拥有的缓存较少,数字逻辑运算单元的数量也较少,擅长对海量数据执行相同的操作,同时GPU针对视频和显示任务的特点进行专门的指令集优化和硬件设计以加速。

-
从程序设计的角度看,为CPU编写程序时,往往倾向于利用复杂的逻辑结构优化算法,以减小计算任务的运行时间,为GPU编写程序时,则会利用其数据计算能力的优势,通过提高数据吞吐量来减小计算任务的运行时间。
-