2.3 中央处理器
数字计算机使用一系列的电信号表示数据,使用数据总线传输数据,使用内存来保存数据。但计算机的主要工作是处理数据,即执行算术运算、排序、制作文档等。
中央处理器(CPU)是计算机中执行处理数据指令的器件。CPU从RAM中接收数据和指令、处理这些指令,再将处理结果送回到RAM中,处理结果可以显示和存储起来。
2.3.1 CPU体系结构
以前,计算机的CPU非常庞大、不可靠,而且要使用大量的电能。1944年制造的ENIAC计算机,有20个处理单元,每个处理单元有2in宽,8in高,CPU的尺寸用英尺来计量,如图2-6所示,可是,今天的处理单元使用毫英寸(0.001in)来度量。
大型机CPU通常包含许多集成电路和电路板,而微机CPU是一个称为微处理器的集成电路(见图2-7),由三部分组成:运算逻辑单元、控制器和寄存器,分别执行处理数据的特定任务。
运算逻辑单元(ALU,又称算术逻辑单元或运算器)执行加减等算术操作,以及比较数据是否相等这些逻辑操作。ALU使用寄存器来保存等待处理的数据。在运算中,算术操作或逻辑操作的结果暂时存放在累加器中。数据可以从累加器被发送到RAM,或者被进一步处理。
图2-6 电子管计算机的内部
图2-7 Intel奔腾E2200 CPU
在CPU控制器的协调和控制下,运算器得到数据,并得知要执行的是逻辑运算还是算术运算。控制器使用指令指针来跟踪要处理的指令顺序。借助于指令指针,控制器顺序地从RAM中取出每个指令,并将它们放到特殊的寄存器——指令寄存器中。然后,控制器翻译指令以决定要实现的操作。按照指令解释,控制器向数据总线发送信号,从RAM中取数据,并发送信号到运算器进行处理。控制器在很大程度上影响着处理器的处理效率,它要执行一系列的指令。
寄存器是用来临时存放数据的高速独立的存储单元,CPU的运算离不开多个寄存器。寄存器包括数据寄存器、指令寄存器和程序计数器等。
2.3.2 指令与指令周期
计算机通过执行一系列简单的步骤(指令)来完成一个复杂的任务。指令控制着计算机执行特定的算术、逻辑或控制运算。一条指令可以分为两部分:操作码和操作数。操作码就是一个类似累加、比较或跳转等操作的控制字。指令的操作数给出了需要处理的数据或数据的地址。
例如,在JMP M1这条指令中,操作码是JMP,操作数是M1。JMP意味着跳转到另外一条指令,M1是将要执行的指令的内存地址。指令JMP M1只有一个操作数,也有很多指令有多个操作数,例如:指令ADD REG1 REG2就包含了两个操作数:REG1和REG2。
CPU可以执行的指令集合称为指令集,计算机要执行的任务必须由指令集中有限的指令通过组合而得到。表2-1给出了一个简单的指令集,计算机使用这些指令来完成所有的任务。
表2-1 简单指令集
“指令周期”是指计算机执行一条指令的过程。每当计算机执行一条指令时都会重复指令周期。指令周期中的步骤是:①获取指令,②解释指令,③执行指令,④指令指针加1。
2.3.3 CPU的性能因素
集成电路技术是制造微型机、小型机、大型机和巨型机CPU的基本技术,它的发展使计算机的速度和能力有了极大的改进。1965年,芯片巨人Intel(英特尔)公司的创始人Gordon Moore给出了著名的“摩尔定律”,他预测芯片上的晶体管数量每隔18~24个月就会翻一番。让所有人感到惊奇的是,这个定律非常精确地预测了芯片30年的发展。1958年第一代集成电路仅仅包含两个晶体管,但是1999年奔腾III处理器已经包含了950万个晶体管,而2008年酷睿45纳米7200处理器集成的晶体管数量已经达到4.1亿个。
集成的晶体管数量越大,就意味着芯片的计算能力越强。各种CPU的速度并不一样,它受到以下几个因素的制约,即时钟频率、字长、高速缓冲存储器,以及指令集的大小。当然,使用高性能CPU的计算机系统并不意味着它在各方面都能够提供较高的性能。计算机系统也有它的薄弱环节,即使计算机配备了高性能CPU,但如果硬盘速度很慢、没有高速缓冲,且RAM容量小,则执行某些任务也会很慢。
1.时钟频率
计算机有一个系统时钟。与保存日期和时间的“实时时钟”不同,系统时钟用来定时发出脉冲,以控制所有系统操作的同步(节奏),设置数据传输和指令执行的速度或频率。
系统时钟的频率决定了计算机执行指令的速度,限制了计算机在一定时间内所能够执行的指令数。衡量时钟频率的单位是兆赫(MHz)。最初IBM PC的微处理器的时钟频率是4.77MHz,现在的微处理器的执行速度已经超过600MHz。CPU的时钟频率越高,就意味着处理速度越快。
2.字长
字长是CPU可以同时处理的位数,由CPU寄存器的大小和总线的数据线个数决定。例如,字长为32位的CPU被称为32位处理器,它的寄存器是32位的,可以同时处理32位数据。
字长较长的计算机在一个指令周期中要比字长短的计算机处理更多数据。单位时间内处理的数据越多,处理器的性能就越高。比如,最初的微机使用8位处理器,现在都是64位处理器。
3.高速缓冲存储器
影响CPU性能的另一个因素是高速缓冲存储器(见图2-8),这是一个特别的存储器。由于CPU的速度非常快,所以它的大部分时间都在等待与RAM传送数据。使用高速缓冲存储器可以使CPU一旦请求就可以迅速访问到数据。
图2-8 高速缓冲存储器
当启动某个任务的时候,计算机预测CPU可能会需要哪些数据,并将这些数据预先送到高速缓冲存储器区域。当指令需要数据的时候,CPU首先检查高速缓冲存储器中是否有所需要的数据。如果有,CPU就从高速缓冲存储器中直接读取数据而无须访问RAM。在其他条件相同的情况下,高速缓冲存储器越大,处理的速度就越快。
4.指令集的复杂性
随着计算机指令集的扩充,程序员开始使用越来越多的复杂指令,这些指令占用很多内存空间,执行它们所需要的时钟周期也更多。使用复杂指令集的CPU的计算机称为复杂指令集计算机(CISC,complex instruction set computer)。
1975年,IBM的一位科学家John Cocke发现微处理器中的大部分工作只需要指令集中的一小部分就可以完成。更进一步的研究发现,只要CISC的20%的指令就可以完成80%的工作。Cocke的研究结果导致了精简指令集微处理器(RISC,reduced instruction set computer)的开发。
精简指令集计算机的指令数量有限,但是这些指令的执行速度很快。因此,在理论上,RISC计算机要比CISC计算机快。有些计算机科学家相信,如果把RISC和CISC技术综合起来能够制造更有效和更灵活的计算机。
2.3.4 流水线和并行处理
单处理器的计算机以串行方式执行指令,也就是说一个时刻只执行一条指令。通常处理器必须完成指令周期中的四个步骤后才执行下一条指令。使用流水线技术,处理器就可以在完成上一条指令前开始执行另外一条指令,加快了处理速度,如图2-9所示。
图2-9 流水线允许计算机同时处理多条指令
具有多个处理器的计算机可以同时执行多条指令,并行处理方式增加了计算机单位时间内完成的任务。能够执行并行处理的计算机称为并行计算机,也称非冯·诺依曼计算机。
串行操作每次执行一条指令;流水线计算机在处理完一条指令之前,就开始处理下一条指令;并行处理则可以同时执行多条指令。
2.3.5 现代微处理器
Intel公司是当今世界上最大的芯片制造商,PC中相当多的微处理器都是由它制造的。1971年,Intel公司推出了世界上第一个微处理器4004。Intel的8088处理器曾为早期的IBM PC机带来了强大性能。自从1981年IBM PC登上历史舞台以来,Intel不断推出为多数计算机生产商所选用的微处理器。
AMD公司(Advanced Micro Devices)是Intel公司在PC芯片市场上最大的对手。通常AMD处理器要比同性能的Intel处理器便宜,而且在某些方面会有一些性能优势。
摩托罗拉公司和IBM公司曾经为苹果公司的计算机提供大部分芯片,但2005年苹果公司转投了Intel阵营。IBM为服务器和其他高性能计算机生产基于RISC技术的POWER处理器。
市场上与当前一系列计算机配套的微处理器基本都能满足商业、教育和娱乐应用等需求。通常当要进行计算机三维动画游戏、桌面出版、多曲目声音录制和视频编辑等需要大量使用微处理器的应用时,要考虑使用Intel公司或者AMD公司提供的最快的处理器。
虽然对计算机的微处理器进行升级在技术层面上说是可行的,但是很少有人这样做。因为只有计算机中所有部件都以高速工作时,微处理器才能达到较高功效。
有时会听说“超频”技术。超频(overclocking)是指提高计算机部件(如处理器、显卡、主板或内存)速度的技术。在超频成功后,能将较慢的部件的处理能力提升到与速度更快、价格更贵的部件相当。希望榨取计算机所有处理速度的游戏玩家就会对计算机进行超频。但是,超频具有一定风险,加在部件上的额外的电能会产生更多的热量。超频过的部件可能会过热,甚至可能引起火灾。为了保持安全的操作温度,一些玩家会安装额外的冷却系统,有时会使用耐用散热器、大风扇、液氮、干冰或其他制冷剂。
2.3.6 双核处理器
所谓双核处理器(Dual Core Processor),简单地说,就是在一块CPU基板上集成两个处理器核心,并通过并行总线将各处理器核心连接起来,从而提高计算能力,如图2-10所示。
双核心并不是一个新概念,而只是CMP(Chip Multi Processors,单芯片多处理器)中最基本、最简单、最容易实现的一种类型。其实在RISC处理器领域,双核心甚至多核心都早已经实现。CMP最早是由美国斯坦福大学提出的,其思想是在一块芯片内实现SMP(Symmetrical Multi-Processing,对称多处理)架构,且并行执行不同的进程。
图2-10 双核之间协调工作
早在20世纪末,惠普和IBM就已经提出双核处理器的可行性设计。IBM在2001年就推出了基于双核心的POWER4处理器,随后SUN和惠普公司也推出了基于双核架构的芯片,但此时双核心处理器架构还都是用在高端的RISC领域,直到Intel和AMD相继推出自己的双核心处理器,双核心才真正走入了主流的X86领域。
Intel和AMD之所以推出双核心处理器,最重要的原因是原有的单核处理器的频率难以提升,性能没有质的飞跃。因此,Intel在发布3.8GHz的产品以后只得宣布停止4GHz的产品计划;而AMD在实际频率超过2GHz以后也无法大幅度提升,3GHz成为了AMD无法逾越的一道坎。正是在这种情况下,为了寻找新的卖点,Intel和AMD都不约而同地使用了双核心技术。