电脑的脉搏—时钟频率的来龙去脉
PCSHOW.net 作者:《微型计算机》陈忠民 2005-10-04
一首美妙的乐曲会有一个主旋律,而电脑的主旋律就是CPU的时钟频率。主频、外频和倍频,它们从何而来?锁频、超频,又是怎么回事呢?
电脑中有许许多多的半导体芯片,每个芯片都是在特定的时钟频率下进行工作的。时钟发生器提供给芯片的时钟信号是一个连续的脉冲信号,而脉冲就相当于芯片的脉搏,每一次脉冲到来,芯片内的晶体管就改变一次状态,让整个芯片完成一定任务。
电脑中的芯片绝大多数属于数字逻辑芯片,数字芯片中众多的晶体管全都工作在开关状态,它们的导通和关断动作无不是按照时钟信号的节奏进行的。如果时钟频率过高,就可能出现晶体管的状态来不及变化的情况,产生死锁或随机性误操作。所以,每一款芯片都有自己的频率极限。
一、频率是什么?
频率用f表示,基本单位为"1次/秒",记做Hz(赫兹)。1Hz就是每秒一次,10Hz是每秒10次(图1)。不过,Hz这个单位在电脑里面太小了,因此通常以KHz、MHz或GHz来表示信号频率。随着频率的攀升,若干年以后恐怕需要使用THz作为频率的单位了(表1)。
图1: 脉冲波头越多则频率越高
表1: 频率表示法
频率单位 kHz MHz GHz THz
换算关系 1×10^3Hz 1×10^6Hz 1×10^9Hz 1×10^12Hz
英文名称 Kilo Hz Mega Hz Giga Hz Tera Hz
中文名称 千赫兹 兆赫兹 吉赫兹 太赫兹
1.周期与频率
在电脑技术中,与频率相对应的一个常用术语是周期。周期是频率的倒数,频率越高,周期越短。譬如时钟频率为1GHz时,其时钟周期为1纳秒(表2)。
表2:频率与周期对照表
时钟频率 时钟周期 时钟频率 时钟周期
5MHz 200ns 133MHz 7.5ns
10MHz 100ns 166MHz 6.0ns
20MHz 50ns 200MHz 5.0ns
25MHz 40ns 250MHz 4.0ns
33MHz 30ns 300MHz 3.3ns
40MHz 25ns 333MHz 3.0ns
50MHz 20ns 400MHz 2.5ns
66MHz 15ns 500MHz 2.0ns
80MHz 12ns 800MHz 1.2ns
100MHz 10ns 1GHz 1.0ns
120MHz 8.3ns 4GHz 0.25ns
2.带宽与频率
与频率相关的另一个参数是数据传输率,也称为"带宽",用于衡量数据通信速度的快慢。通常情况下,带宽=时钟频率×(位宽÷8)。譬如PCI总线的时钟频率为33.33MHz,因其位宽为32bit,所以其带宽为33.33×(32÷8)=133MB/s。
3.CPU的频率
在286及以前的电脑中,CPU的频率与外部总线的频率相同。Intel 386电脑中采用了时钟分频方式,时钟电路提供给CPU的时钟信号的频率66MHz,而CPU内部则以33MHz的频率工作。Intel 80486 DX2则采用倍频方式,它允许CPU以2倍或3倍于外部总线的速度运行,但仍以原有时钟频率与外界通讯。进入Pentium时代以后,倍频技术获得广泛应用,目前处理器的倍频已达20倍。
系统时钟频率:通常也称作"外频"——CPU外部总线的时钟频率。外频由频率合成器芯片提供,后文将对频率合成器芯片进行详细介绍。主频:主频是CPU内核(整数和浮点运算器)电路的实际运行频率,由外频(或前端总线频率)与倍率共同决定,也即:主频=外频×倍率。
前端总线频率:前端总线(Front Side Bus,FSB)频率是CPU和北桥芯片间进行数据交换的频率,它与外频既有联系,又有区别。外频是前端总线时钟信号的频率,而前端总线频率是指数据传输的频率。对于Pentium 4处理器来说,由于采用了QDR(Quad Data Rate,4倍数据比率)技术,1个时钟周期内可以传输4次数据,所以前端总线频率相当于外频的4倍:FSB 800MHz的处理器,外频只有200MHz。
二、谁在产生频率?
我们可以将作为频率源的时钟信号发生器看作电脑的心脏。只有心脏跳动起来,电脑才能工作。
1.振荡源:晶体振荡器
芯片本身通常并不具备时钟信号源,因此须由专门的时钟电路提供时钟信号,石英晶体振荡器(Quartz Crystal OSC)就是一种最常用的时钟信号振荡源。
石英晶体就是纯净的二氧化硅,是二氧化硅的单晶体,即我们常说的水晶。石英晶体有天然(Crude)晶体和人工合成(synthetic)晶体两种。天然石英晶体的杂质含量和形态等大多并不统一,因此电子线路中的晶体振荡器多使用人造石英晶体。
从一块晶体上按一定的方位角切下薄片(称为"晶片"),在晶片的两个表面上涂覆一层薄薄的银层后接上一对金属板,焊接引脚,并用金属外壳封装,就构成了石英晶体振荡器(图2)。
图2:a、b 石英晶体振荡器。示意图(左),实物图(右)。
石英晶片之所以能当为振荡器使用,是基于它的压电效应:在晶片的两个极上加一电场,会使晶体产生机械变形;在石英晶片上加上交变电压,晶体就会产生机械振动,同时机械变形振动又会产生交变电场,虽然这种交变电场的电压极其微弱,但其振动频率是十分稳定的。当外加交变电压的频率与晶片的固有频率(由晶片的尺寸和形状决定)相等时,机械振动的幅度将急剧增加,这种现象称为"压电谐振"。
压电谐振状态的建立和维持都必须借助于振荡器电路才能实现。图3是一个串联型振荡器,晶体管T1和T2构成的两级放大器,石英晶体XT与电容C2构成LC电路。在这个电路中,石英晶体相当于一个电感,C2为可变电容器,调节其容量即可使电路进入谐振状态。该振荡器供电电压为5V,输出波形为方波。
图3:有源晶体振荡器
小知识:有源晶振与无源晶振
在电子学上,通常将含有晶体管元件的电路称作"有源电路"(如有源音箱、有源滤波器等),而仅由阻容元件组成的电路称作"无源电路"。电脑中的晶体振荡器也分为无源晶振和有源晶振两种类型。无源晶振与有源晶振的英文名称不同,无源晶振为crystal(晶体),而有源晶振则叫做oscillator(振荡器)。无源晶振是有2个引脚的无极性元件,需要借助于时钟电路才能产生振荡信号,自身无法振荡起来,所以"无源晶振"这个说法并不准确;有源晶振有4只引脚,是一个完整的振荡器,其中除了石英晶体外,还有晶体管和阻容元件,因此体积较大。
图4:
石英晶体振荡器的频率稳定度可达10^-9/日,甚至10^-11。例如10MHz的振荡器,频率在一日之内的变化一般不大于0.1Hz。因此,完全可以将晶体振荡器视为恒定的基准频率源(石英表、电子表中都是利用石英晶体来做计时的基准频率)。从PC诞生至现在,主板上一直都使用一颗14.318MHz的石英晶体振荡器作为基准频率源。至于始终沿用14.318MHz这个频率的原因,或许是保持兼容性的需要吧。但是,笔者在显卡、闪存盘和手机中也发现了14.318MHz的晶振,就不知道是什么原因了。
主板上除了这颗14.318MHz的晶振,还能找到一颗频率为32.768MHz的晶振,它被用于实时时钟(RTC)电路中,显示精确的时间和日期。
2.分频器与倍频器
将脉冲频率降低n倍,这就是分频器的作用。在第一代PC机中,石英晶体振荡器输出的频率为14.318MHz,而Intel 8086处理器的主频为4.77MHz,后者刚好是前者的1/3。变换频率的工作是在Intel 8284(时钟发生器/驱动器)中完成的,因为Intel 8284芯片中集成了三分频电路,能够将晶体振荡器产生的脉冲信号降低3倍后,提供给CPU和外设(图5)。
图5: 第一代PC的时钟电路
随着CPU主频的提高,需要将晶体振荡器提高若干倍才能满足CPU的需要,于是在时钟电路中倍频器取代了分频器的位置。如果说分频器进行的是除法运算,倍频器则进行了乘法运算,它将晶体振荡器的频率提高n倍。
三、时钟芯片:可编程的频率合成器
整合的时钟电路,是硬件技术进步的一个标志。电脑中的不同设备对时钟频率的要求是不一样的,如果你从废物箱中找来一块286主板,可以看到有好几颗晶振排列在一起。电脑中的CPU,AGP插槽、PCI插槽、硬盘接口、USB端口和PS/2端口等在通信速度上有很大差异,所以需要提供不同的时钟频率,譬如PCI要求33MHz、USB为48MHz等(图6)。可是,一只石英振荡器只能提供一种频率,所以主板制造商通常将这些原本散布在主机板上各处的振荡电路整合成一颗"频率合成器(Frequency Synthesizer)"芯片,对晶体振荡器产生的脉冲信号进行分频(或倍频),以便为不同运行速度的芯片(或设备)提供所需要的时钟频率。
图6: i875P主板上各种设备的速度
普通分频器为整数分频器,其输出频率与输入频率之间为整数倍的关系,只能分段调节频率,不能满足精密调节的要求。频率合成器是"分数分频器",可对输出频率进行精细调节。研发工程师可自由地设计电路中的各种频率,不再受限于石英震荡晶体的固定频率规格。目前电脑中的时钟芯片一般都具有"分数分频"能力,可以根据需要将调节步长设计到1%,甚至0.1%。为了指导和规范频率合成器的设计和应用,Intel制定了频率合成器设计指南,如CK97、CK40X等,适用于最新Pentium 4处理器的规范是CK410。
1.频率调节原理
频率合成器是一个具有频率负反馈的时钟信号系统(图7),其中使用了两个分频器,Mdiv用于降低基准频率,Ndiv则用于对VCO进行分频。晶体振荡器(OSC)产生的频率fi经M分频器后得到参考频率fref,它与反馈频率ffd分别送入鉴频器(Frequency Detector,FD)的两个反向输入端,鉴频器输出一个反映两者之商的直流电压,并经低通滤波器(Low Pass Filter,LPF)滤除交流分量后,提供给压控振荡器(Voltage Controlled Oscillator,VCO)输出频率信号fout。
图7: 频率合成原理图
频率合成器的输出频率fout与输入频率fin之间的关系可以用公式fout=fin×(N+k/M)来表示,其中N、M和K均为整数,K可取0~M间的任意整数。非整数值N+k/M通常写作N.F,这里的圆点代表小数点,N表示频率的整数部分,而F=k/M则表示频率的小数部分。在输入频率fin、N和M均不改变的条件下,只要修改k值即可得到所需要频率值fout。
在频率合成器芯片中,有专门的SMBus接口电路,这是芯片的寄存器与外部联络的途径,有了它,就能够通过BIOS或软件对寄存器进行改写。频率寄存器中的每一位数据有两种可能,"0"或"1",那么当这几位按不同状态进行组合时就可得到多种外频输出。
频率合成器的频率调节精度与频率寄存器的位数有关,譬如,如果频率寄存器为5位,则调节步长为1MHz。为数越多,调节精度越高。在实用的频率合成器中,Mdiv和Ndiv两个分频器均为可编程的,只要用户设定相应的fout数值,BIOS便能自动给出N、M和K的值,并通过SMBus总线写入相应的寄存器中。
2.PLL实现相位同步的自动控制原理
时钟芯片是电脑的心脏,其性能和稳定性直接决定着整个硬件系统的性能。采用频率合成器一方面可以节省成本与主板空间,更为重要的目的是使主板各芯片以及外部设备的时钟信号与CPU的时钟信号之间保持严格的同步关系,以保证正确地交换数据。FS芯片不仅具有倍频/分频功能,更主要的特点就是具有相位锁定功能——输出信号的相位被强制跟参考信号的相位保持一致。因此,频率合成器输出的各种时钟信号虽然频率各不相同,但它们在相位上是完全一致的,它们都与参考信号源保持相位同步。
为了实现相位锁定,VCO输出的时钟信号与参考频率信号在鉴相器中进行相位比较,如果两者相位不同,就会输出一个与相位差大小成比例的误差电压;误差电压的极性决定了电荷泵内的电流源是吸收还是送出电流,所以电荷会流入或流出滤波器内的电容器,电荷流动的数量与相位差的大小成正比。压控振荡器是一个受电压控制的振荡器,内部的变容二极管两端电压变化时,其电容量会随之改变,从而改变振荡器的频率。
压控振荡器是PLL电路的核心单元,相位控制过程是依靠改变压控振荡器的输入电压(即调谐电压)实现的,调谐电压的大小和极性决定了相位调整是滞后还是超前,从而使相位误差得以校正。
3.频率合成器的其它功能
在主板设计中使用频率合成器芯片,可以很容易地实现时钟频率的调整和相位锁定。除了这些功能,频率合成器还允许主板设计工程师通过微调各种接口时钟之间的时钟延迟,使各种相关接口的组件保持同步,方便了设计和调试工作(图8)。
此外,频率合成器芯片在系统稳定性和安全性方面也是可以有所作为的。一方面,可以对不需要调整的频率进行锁定,防止因CPU超频而导致其它设备失效的情况;另一方面,一些频率合成器芯片中还设计了"看门狗"功能,一旦超频失败导致死机时,此功能可以对频率寄存器进行清零,使系统按照CPU的默认频率正常启动。
目前,频率合成器芯片的应用已经十分普遍,常见的有ICS、Cypress、IDT、Realtek和Winbond等品牌。不过,在nForce2主板中,已经找不到频率合成器的身影,因为频率合成功能已经整合到IGP/SPP芯片中了。
图8: 频率合成器整体结构
四、CPU和内存频率的"按需供应"机制
CPU时钟频率的设置不仅影响系统性能,还会影响CPU的安全。我们已经知道,CPU的核心频率是由外频和倍频两个参数共同决定的,那么CPU的时钟频率到底是如何得来的呢?
1.BSEL信号设定CPU外频
CPU制造商和主板制造商共同开发时钟频率的自动设置技术,其中,CPU外频是频率合成器提供的,而倍频则由CPU自身进行设定。为了实现对外频的调节和控制,早期主板通过跳线设定的方式让频率合成器产生不同的外频,后来在CPU外频设定引脚和频率合成器之间建立了一个逻辑信号转换芯片,使CPU外频可以通过BIOS或超频软件进行调节。
上文已述,改变频率合成器的输出频率,是通过修改它的控制寄存器的频率控制位实现的。寄存器中的数据发生变化时,频率合成器的工作状态也随之改变,从而实现不同频率的输出。由于不同型号的CPU有着不同的外频,因此电脑在启动时就要告诉频率合成器按照怎样一个频率来启动系统,这一功能是通过CPU的BSEL(FSB_Sense)引脚来实现的,BSEL信号通过SMBus总线将二进制数值存放到频率合成器的频率寄存器中,频率合成器按照所设定的编码/频率表,实现了CPU对频率合成器的控制。譬如,Socket 478封装的各款处理器,外频是由BSEL(AD5)和BSEL0(AD6)两个引脚来控制的,两者不同的电平组合决定了CPU的外频(表3)。
表3:Socket 478之频率设置
BSEL BSEL0 外频
0 0 100MHz
0 1 133MHz
1 0 200MHz
2.FID信号设置CPU倍频
如同CPU供电电路使用VID(Voltage Identify,电压识别码)信号自动设置电压值一样,CPU倍频的设置是采用FID(Frequency Identify,频率识别码)信号来设置的(表4)。这样不仅能实现CPU工作频率的自动识别和设置,还能有效地防止不法商家对其进行Remark。
表4:FID电平与倍率对照表
FID[3] FID[2] FID[1] FID[0] CPU倍频
0 0 0 0 11
0 0 0 1 11.5
0 0 1 0 12
0 0 1 1 ≥12.5
0 1 0 0 5
0 1 0 1 5.5
0 1 1 0 6
0 1 1 1 6.5
1 0 0 0 7
1 0 0 1 7.5
1 0 1 0 8
1 0 1 1 8.5
1 1 0 0 9
1 1 0 1 9.5
1 1 1 0 10
1 1 1 1 10.5
图9是AMD Athlon系列处理器的倍频信号工作流程,当RESET#信号到来时,处理器将FID信号送给逻辑信号转换芯片,由该芯片产生SIP(Serialization Initialization Packet,串行初始化数据包),对系统总线进行初始化和设置。
在CPU上设置了一些称为金桥的连接线,FID信号的电平可以通过改变金桥的通断进行设置,金桥接通时为低电平,断开时则为高电平。FID信号在内置倍频控制单元内生成,并经内置FID驱动电路对信号进行放大后,从FID引脚送至逻辑信号转换芯片,产生的SIP数据包再从BP_FID引脚返回到CPU。这样,CPU内部的频率合成电路便可以将倍频与外频两个信号一起合成CPU的核心频率。
图9: CPU倍频信号工作流程
3.内存频率的设置
早期主板上内存总线时钟信号也是由频率合成器产生的,不过较新的主板已经撇开了主板上的频率合成器芯片,而由北桥芯片完成内存总线时钟频率的设定,这在业界被称作"内存异步",如图10。
与CPU频率的自动设置原理相似,北桥芯片内的频率合成器也是通过一定的手段实现自动设置频率的。内存的频率由内存条上的SPD(Serial Presence Detect 内存序列存储芯片)提供。SPD类似于主板上的BIOS,存储了内存芯片的内存容量、工作频率、延迟时间(CAS、tRCD、tRP、tCA)及工作电压和厂商信息等,北桥芯片通过SMBus总线的SDA引脚读取每个DIMM的SPD中的参数,SPD芯片的信息就会被记录在北桥芯片内PLL电路的寄存器(Register)中。
图10: 内存时钟频率的自动设置
内存总线时钟与系统时钟的频率往往并不相同,譬如系统时钟为133MHz,而内存时钟的频率为200MHz时,两者之间存在67MHz的差异,这种频率上的差异被称为"内存异步"。不过,为了实现内存与CPU之间的同步通信,两个总线在相位上仍然需要保持同步。实现相位的同步在技术上并不困难,只要北桥芯片中的PLL电路与频率合成器中的PLL电路使用同一个参考频率fref就可以了。
事实上,即插即用的外部设备的频率设置与内存频率的自动设置原理基本相同,主机通过读取设备中ROM芯片中包括频率在内的特征参数,然后自动分配系统资源,自动配置驱动程序,使得设备可以正常工作。
五、为电脑把脉
1.检试实际频率,释放设备潜能
Intel Processor Frequency ID Utility是Intel公司发布的CPU的检测软件,该软件列出了"报告频率"和"预期频率"两项数据,前一项表示被测试CPU的当前运行速度,后一项表示被测试CPU出厂时所设计的最高操作速度(图11)。如果两者数据一致,即说明CPU未被超频。如果报告频率低于预期频率,则说明处理器的能力没有发挥出来。
使用测试软件能够大致了解各设备的工作状态,对优化系统性能非常重要。与上述检测软件类似的还有很多,所有需要测试的频率都可以通过测试软件显示出来。不过,一些高级玩家怀疑软件测出的频率是否准确。这种怀疑不是没有根据的,因为检测软件运行的平台,是基于参考频率fref的。如果参考频率自身都不准确,软件测出的频率值也就难以保证。不过,要精确地测量时钟信号的频率时,可以使用示波器(图12)。
图11: Intel测试软件的频率测试界面
图12: 示波器测出PCI总线时钟频率为33MHz
外部设备的性能与接口电路工作频率之间有着密切关系。以硬盘为例,如果使用AIDA32等软件测出硬盘的最高UDMA传输模式为UDMA 6(ATA-133),但当前UDMA传输模式为UDMA 1(ATA-33)。即硬盘本来可以工作在133MHz的频率下,而接口却只以33MHz的频率交换数据。那么就会极大地降低硬盘性能。遇到这种情况,说明设备的潜能没有发挥出来,应检查BIOS中的接口模式选择是否正确或通过安装相关IDE驱动程序来解决。
2.防止心跳过速
频率过低造成设备性能低下,相反,如果频率过高则会造成设备工作不稳定,甚至彻底罢工。平时我们在对显示芯片和显存进行超频之后,显示画面出现花屏就属于典型案例。因为心跳过速而导致设备不能工作的情况,在电脑故障中占有相当大的比重。因为种种原因,一些设备工作频率实际上是达不到标称频率的。对于此类问题的处理,笔者在"电脑故障降频诊断法"(《微型计算机》2003年第17期)一文中已有详细介绍。在此需要补充一点,如果CPU超频失败导致不能启动后,将CMOS放电,BIOS会以100MHz外频的安全模式启动,并不会造成严重后果。
六、写在最后
在电脑的实际使用过程中,相信大部分DIYer对于"频率"一词的兴趣一开始都建立在对CPU、内存、显示核心和显存的超频之上。同时我们也相信,本文关于频率的深入探讨对您而言,不论是解决电脑故障还是享受超频的快感,都将起到极大的帮助。不过,在此我们仍然强调一点——当您把玩"频率游戏"时,请记住"超频"是把双刃剑,它能让您感受到运行速度的提升,但稳定性下降、系统崩溃,甚至硬件损坏等风险也会时刻相随!