x86 个人计算机的CPU 主要供货商为 Intel 与AMD,目前(2015)主流的 CPU 都是双核以上的架构了!原本的单核心 CPU 仅有一个运算单元,所谓的多核心则是在一颗 CPU 封装当中嵌入了两个以上的运算核心, 简单的说,就是一个实体的 CPU 外壳中,含有两个以上的 CPU 单元就是了。
不同的 CPU 型号大多具有不同的脚位(CPU 上面的插脚),能够搭配的主板芯片组也不同, 所以当你想要将你的主机升级时,不能只考虑 CPU,你还得要留意你的主板上面所支援的 CPU 型号喔! 不然买了最新的 CPU 也不能够安插在你的旧主板上头的!目前主流的 CPU 有 Intel 的 i3/i5/i7 系列产品中,甚至先后期出厂的类似型号的脚位也不同, 例如 i7-2600 使用 LGA1155 脚位而 i7-4790 则使用 FCLGA1150 脚位,挑选时必须要很小心喔!
我们前面谈到CPU 内部含有微指令集,不同的微指令集会导致 CPU 工作效率的优劣。除了这点之外, CPU 效能的比较还有什么呢?那就是 CPU 的频率了!什么是频率呢?简单的说, 频率就是 CPU 每秒钟可以进行的工作次数。 所以频率越高表示这颗 CPU 单位时间内可以作更多的事情。举例来说, Intel 的 i7-4790 CPU 频率为 3.6GHz, 表示这颗 CPU 在一秒内可以进行 3.6x109 次工作,每次工作都可以进行少数的指令运作之意。
注意:不同的 CPU 之间不能单纯的以频率来判断运算效能喔!这是因为每颗 CPU 的微指令集不相同,架构也不见得一样,可使用的第二层快取及其计算器制可能也不同, 加上每次频率能够进行的工作指令数也不同!所以,频率目前仅能用来比较同款CPU 的速度!
CPU 的工作频率:外频与倍频
早期的 CPU 架构主要透过北桥来链接系统最重要的 CPU、主存储器与显示适配器装置。因为所有的设备都得掉透过北桥来连结,因此每个设备的工作频率应该要相同。 于是就有所谓的前端总线(FSB) 这个东西的产生。但因为 CPU 的指令周期比其他的设备都要来的快,又为了要满足 FSB 的频率,因此厂商就在 CPU 内部再进行加速, 于是就有所谓的外频与倍频了。
总结来说,在早期的 CPU 设计中,所谓的外频指的是 CPU 与外部组件进行数据传输时的速度,倍频则是 CPU 内部用来加速工作效能的一个倍数, 两者相乘才是 CPU 的频率速度。例如 Intel Core 2 E8400 的内频为 3.0GHz,而外频是 333MHz,因此倍频就是 9 倍啰!(3.0G=333Mx9, 其中 1G=1000M)
注意:很多计算机硬件玩家很喜欢玩『超频』,所谓的超频指的是: 将CPU 的倍频或者是外
频透过主板的设定功能更改成较高频率的一种方式。但因为 CPU 的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。
举例来说,像上述 3.0GHz 的 CPU 如果想要超频, 可以将他的外频 333MHz 调整成为 400MHz,但如此一来整个主板的各个组件的运作频率可能都会被增加成原本的 1.333 倍(4/3), 虽然CPU 可能可以到达 3.6GHz,但却因为频率并非正常速度,故可能会造成当机等问题。
但如此一来所有的数据都被北桥卡死了,北桥又不可能比 CPU 更快,因此这家伙常常是系统效能的瓶颈。为了解决这个问题,新的 CPU 设计中, 已经将内存控制器整合到 CPU 内部,而链接 CPU 与内存、显示适配器的控制器的设计,在 Intel 部份使用 QPI (Quick Path Interconnect) 与 DMI 技术, 而 AMD 部份则使用 Hyper Transport 了,这些技术都可以让 CPU 直接与主存储器、显示适配器等设备分别进行沟通,而不需要透过外部的链接芯片了。
因为现在没有所谓的北桥了 (整合到 CPU 内),因此,CPU 的频率设计就无须考虑得要同步的外频,只需要考虑整体的频率即可。 所以,如果你经常有查阅自己 CPU 频率的习惯,当使用 cpu-z 这个软件时,应该会很惊讶的发现到,怎么外频变成 100MHz 而倍频可以到达 30 以上!相当有趣呢!
现在 Intel 的 CPU 会主动帮妳超频喔!例如 i7-4790 这颗 CPU 的规格中, 基本频率为 3.6GHz,但是最高可自动超频到 4GHz 喔! 透过的是 Intel 的 turbo 技术。同时,如果你没有大量
的运算需求,该 CPU 频率会降到 1.xGHz 而已,藉此达到节能省电的目的!所以,各位好朋友, 不需要自己手动超频了!Intel 已经自动帮妳进行超频了...所以,如果妳用 cpu-z 观察 CPU 频率,发现该频率会一直自动变动, 很正常!你的系统没坏掉!
32 位与 64 位的 CPU 与总线『宽度』
从前面的简易说明中,我们知道 CPU 的各项数据通通得要来自于主存储器。因此,如果主存储器能提供给 CPU 的数据量越大的话,当然整体系统的效能应该也会比较快! 那如何知道主存储器能提供的数据量呢?此时还是得要藉由 CPU 内的内存控制芯片与主存储器间的传输速度『前端总线速度(Front Side Bus, FSB) 来说明。
与 CPU 的频率类似的,主存储器也是有其工作的频率,这个频率限制还是来自于 CPU 内的内存控制器所决定的。例:CPU 内建的内存控制芯片对主存储器的工作频率最高可达到1600MHz。这只是工作频率(每秒几次)。一般来说,每次频率能够传输的数据量,大多为 64 位,这个 64 位就是所谓的『宽度』了! 因此,在这个系统中,CPU 可以从内存中取得的最快带宽就是 1600MHz * 64bit = 1600MHz * 8 bytes = 12.8Gbyte/s。
与总线宽度相似的,CPU 每次能够处理的数据量称为字组大小(word size), 字组大小依据 CPU 的设计而有 32 位与 64 位。我们现在所称的计算机是 32 或 64 位主要是依据这个 CPU 解析的字组大小而来的!早期的 32 位 CPU 中,因为 CPU 每次能够解析的数据量有限, 因此由主存储器传来的数据量就有所限制了。这也导致 32 位的 CPU 最多只能支持最大到 4GBytes 的内存。
注意:得利于北桥整合到 CPU 内部的设计,CPU 得以『个别』跟各个组件进行沟通!因此, 每种组件与 CPU 的沟通具有很多不同的方式!例如主存储器使用系统总线带宽来与 CPU 沟通。而显示适配器则透过PCI-E 的序列通道设计来与CPU 沟通喔!详细说明我们在本章稍后的主板部份再来谈谈。
CPU 等级
由于 x86 架构的 CPU 在 Intel 的 Pentium 系列(1993 年)后就有不统一的脚位与设计,为了将不同种类的 CPU 规范等级,所以就有 i386,i586,i686 等名词出现了。基本上,在 Intel Pentium MMX 与 AMD K6 年代的 CPU 称为 i586 等级, 而 Intel Celeron 与 AMD Athlon(K7)年代之后的 32 位 CPU 就称为 i686 等级。 至于目前的 64 位 CPU 则统称为 x86_64 等级。
目前很多的程序都有对 CPU 做优化的设计,万一哪天你发现一些程序是注明给 x86_64 的 CPU 使用时, 就不要将他安装在 686 以下等级的计算机中,否则可是会无法执行该软件的! 不过,在 x86_64 的硬件下倒是可以安装 386 的软件喔!也就是说,这些东西具有向下兼容的能力啦!
超线程 (Hyper-Threading, HT)
我们知道现在的 CPU 至少都是两个核心以上的多核心 CPU 了,但是 Intel 还有个很怪的东西,叫做 CPU 的超线程 (Hyper-Threading) 功能! 那个是啥鬼东西?我们知道现在的 CPU 指令周期都太快了,因此运算核心经常处于闲置状态下。而我们也知道现在的系统大多都是多任务的系统, 同时间有很多的程序会让 CPU 来执行。因此,若 CPU 可以假象的同时执行两个程序,不就可以让系统效能增加了吗?反正 CPU 的运算能力还是没有用完啊!
那是怎么达成的啊这个 HT 功能?强者鸟哥的同事蔡董大大用个简单的说明来解释。在每一个 CPU 内部将重要的缓存器 (register) 分成两群, 而让程序分别使用这两群缓存器。也就是说,可以有两个程序『同时竞争 CPU 的运算单元』,而非透过操作系统的多任务切换! 这一过程就会让 CPU 好像『同时有两个核心』的模样!因此,虽然大部分 i7 等级的 CPU 其实只有四个实体核心,但透过HT 的机制, 则操作系统可以抓到八个核心!并且让每个核心逻辑上分离,就可以同时运作八个程序了。
虽然很多研究与测试中,大多发现 HT 虽然可以提升效能,不过,有些情况下却可能导致效能降低喔!因为,实际上明明就仅有一个运算单元嘛! 不过在鸟哥使用数值模式的情况下,因为鸟哥操作的数值模式主要为平行运算功能,且运算通常无法达到 100% 的 CPU 使用率,通常仅有大约 60% 运算量而已。 因此在鸟哥的实作过程中,这个 HT 确实提升相当多的效能!至少应该可以节省鸟哥大约 30%~50%的等待时间喔!不过网络上大家的研究中, 大多说这个是 case by case,而且使用的软件影响很大!