参考:http://www.cnblogs.com/xulei/archive/2009/01/12/1374125.html
频率单位 kHz MHz GHz THz
换算关系 1×10^3Hz 1×10^6Hz 1×10^9Hz 1×10^12Hz
英文名称 Kilo Hz Mega Hz Giga Hz Tera Hz
中文名称 千赫兹 兆赫兹 吉赫兹 太赫兹
在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。
芯片本身通常并不具备时钟信号源,因此须由专门的时钟电路提供时钟信号,石英晶体振荡器(Quartz Crystal OSC)就是一种最常用的时钟信号振荡源。石英晶体就是纯净的二氧化硅,是二氧化硅的单晶体,即我们常说的水晶。
石英晶体有天然(Crude)晶体和人工合成(synthetic)晶体两种。天然石英晶体的杂质含量和形态等大多并不统一,因此电子线路中的晶体振荡器多使用人造石英晶体。
从一块晶体上按一定的方位角切下薄片(称为"晶片"),在晶片的两个表面上涂覆一层薄薄的银层后接上一对金属板,焊接引脚,并用金属外壳封装,就构成了石英晶体振荡器(如下图)。
图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)电路中,显示精确的时间和日期。
将脉冲频率降低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。
频率合成器是一个具有频率负反馈的时钟信号系统(图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总线写入相应的寄存器中。
时钟芯片是电脑的心脏,其性能和稳定性直接决定着整个硬件系统的性能。
采用频率合成器一方面可以节省成本与主板空间,更为重要的目的是使主板各芯片以及外部设备的时钟信号与CPU的时钟信号之间保持严格的同步关系,以保证正确地交换数据。
FS芯片不仅具有倍频/分频功能,更主要的特点就是具有相位锁定功能——输出信号的相位被强制跟参考信号的相位保持一致。
因此,频率合成器输出的各种时钟信号虽然频率各不相同,但它们在相位上是完全一致的,它们都与参考信号源保持相位同步。
为了实现相位锁定,VCO输出的时钟信号与参考频率信号在鉴相器中进行相位比较,如果两者相位不同,就会输出一个与相位差大小成比例的误差电压;
误差电压的极性决定了电荷泵内的电流源是吸收还是送出电流,所以电荷会流入或流出滤波器内的电容器,电荷流动的数量与相位差的大小成正比。
压控振荡器是一个受电压控制的振荡器,内部的变容二极管两端电压变化时,其电容量会随之改变,从而改变振荡器的频率。
压控振荡器是PLL电路的核心单元,相位控制过程是依靠改变压控振荡器的输入电压(即调谐电压)实现的,调谐电压的大小和极性决定了相位调整是滞后还是超前,从而使相位误差得以校正。
在主板设计中使用频率合成器芯片,可以很容易地实现时钟频率的调整和相位锁定。
除了这些功能,频率合成器还允许主板设计工程师通过微调各种接口时钟之间的时钟延迟,使各种相关接口的组件保持同步,方便了设计和调试工作(图8)。
此外,频率合成器芯片在系统稳定性和安全性方面也是可以有所作为的:
一方面,可以对不需要调整的频率进行锁定,防止因CPU超频而导致其它设备失效的情况;
另一方面,一些频率合成器芯片中还设计了"看门狗"功能,一旦超频失败导致死机时,此功能可以对频率寄存器进行清零,使系统按照CPU的默认频率正常启动。
目前,频率合成器芯片的应用已经十分普遍,常见的有ICS、Cypress、IDT、Realtek和Winbond等品牌。不过,在nForce2主板中,已经找不到频率合成器的身影,因为频率合成功能已经整合到IGP/SPP芯片中了。
图8: 频率合成器整体结构
CPU时钟频率的设置不仅影响系统性能,还会影响CPU的安全。我们已经知道,CPU的核心频率是由外频和倍频两个参数共同决定的,那么CPU的时钟频率到底是如何得来的呢?
CPU制造商和主板制造商共同开发时钟频率的自动设置技术,其中,CPU外频是频率合成器提供的,而倍频则由CPU自身进行设定。
为了实现对外频的调节和控制,早期主板通过跳线设定的方式让频率合成器产生不同的外频,后来在CPU外频设定引脚和频率合成器之间建立了一个逻辑信号转换芯片,使CPU外频可以通过BIOS或超频软件进行调节。
上文已述,改变频率合成器的输出频率,是通过修改它的控制寄存器的频率控制位实现的。
寄存器中的数据发生变化时,频率合成器的工作状态也随之改变,从而实现不同频率的输出。
由于不同型号的CPU有着不同的外频,因此电脑在启动时就要告诉频率合成器按照怎样一个频率来启动系统,这一功能是通过CPU的BSEL(FSB_Sense)引脚来实现的,BSEL信号通过SMBus总线将二进制数值存放到频率合成器的频率寄存器中,频率合成器按照所设定的编码/频率表,实现了CPU对频率合成器的控制。
譬如,Socket 478封装的各款处理器,外频是由BSEL(AD5)和BSEL0(AD6)两个引脚来控制的,两者不同的电平组合决定了CPU的外频。
如同CPU供电电路使用VID(Voltage Identify,电压识别码)信号自动设置电压值一样,CPU倍频的设置是采用FID(Frequency Identify,频率识别码)信号来设置的(表4)。
这样不仅能实现CPU工作频率的自动识别和设置,还能有效地防止不法商家对其进行Remark。
图9是AMD Athlon系列处理器的倍频信号工作流程,当RESET#信号到来时,处理器将FID信号送给逻辑信号转换芯片,由该芯片产生SIP(Serialization Initialization Packet,串行初始化数据包),对系统总线进行初始化和设置。
在CPU上设置了一些称为金桥的连接线,FID信号的电平可以通过改变金桥的通断进行设置,金桥接通时为低电平,断开时则为高电平。
FID信号在内置倍频控制单元内生成,并经内置FID驱动电路对信号进行放大后,从FID引脚送至逻辑信号转换芯片,产生的SIP数据包再从BP_FID引脚返回到CPU。
这样,CPU内部的频率合成电路便可以将倍频与外频两个信号一起合成CPU的核心频率。
图9: CPU倍频信号工作流程
早期主板上内存总线时钟信号也是由频率合成器产生的,不过较新的主板已经撇开了主板上的频率合成器芯片,而由北桥芯片完成内存总线时钟频率的设定,这在业界被称作"内存异步",如图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芯片中包括频率在内的特征参数,然后自动分配系统资源,自动配置驱动程序,使得设备可以正常工作。
初始化后以每秒约18.2次发出脉冲,这些脉冲经过操作系统计算形成BIOS日时钟计数。
保存在BIOS数据区(0040:006CH~0040:006FH)的两个变量timer__low和timer__high中。每次脉冲调用计时器中断(INT 08H)。
中断08H服务程序对这两个计时变量进行操作,即每次对低字time__low单元加1,并当该单元复位(计满65536次)时,向高字timer__high进1。
因此,这两个计时变量保持着日时钟的踪迹;其中,高字记录小时,低字记录分、秒。
INT 08H是个硬中断,只要硬件未被禁止,无论CPU在做什么,它都保持进行。
一种计算时、分和秒的时钟PC的实时时钟,由电池驱动,关机后它仍然正常运行。
当PC启动后,DOS可从机器的实时时钟读取时间并把转换为BIOS日时钟读数。
此后该值每秒自动增加18.2,当DOS需要了解时间时,它再把日历钟计数转换回到时/分/秒格式。
PC微机通过每秒钟执行18.2次INT 08H中断,来完成对BIOS日时钟计时;而读取或修改这个计数器的值则是由日时钟I/O中断INT 1AH完成。
如果INT 1AH中断修改了计数器值,则系统日时钟将按这个新值开始计时。此外,INT 1AH还可完成读取、设置系统的实时钟以及设置报警时钟等功能。