我们知道,CPU 是电脑的心脏,是整个系统的核心,它往往也代表着电脑的档次,如昔日的 286 、386、486,到今天的 I5、I7等。回顾 CPU 发展的历史长河,从雏形到今天,制造技术已有极大提高,主要表现在集成电子元件越来越多。6 Y A$ B* s3 W8 |! H$ f
4 q1 b& [$ Y( l. @3 _
6 D. V L0 R* ~' a
开始时集成几千个晶体管,现在有几亿个晶体管,这么多晶体管,你一定会问,它们是如何实现电脑功能、处理电脑数据的?如果你对这个话题感兴趣,让我带你揭开 CPU 工作的神秘面纱。* C$ A5 g1 D+ B' k1 @* m5 l1 F. p
1 z8 ~5 `" N8 U/ `
在了解 CPU 工作之前,先简单谈谈 CPU 是如何生产出来的。其实 CPU 是用特别纯净的硅材料制造出来的,一个 CPU 芯片包含几亿个精巧的晶体管,人们在一块如同指甲盖大小的硅片上,用化学方法蚀刻或光刻出晶体管。; w( b! z9 H: |5 S0 I7 H' ^* M& K
( I! j2 \# f1 o6 c0 i7 f
一、CPU 原始工作模式——由简单的 0、1 开始
8 W% ^- j, c0 B! |) C; N7 y% B/ l7 {, ]& T
想必大家也清楚,CPU 正是由晶体管组合而成,了解晶体管的运作,对了解 CPU 的工作有莫大帮助。 简单而言,晶体管就是微型的电子开关,它们是构建 CPU 的基石。你可以把一个晶体管想象成一个电灯开关,它们有个操作位,分别代表两种状态:
2 A# U. D/ s2 `. h
}, W/ P8 K+ W5 i2 \& o j8 O' i% F ON(开)和 OFF(关)。这一开一关就相当于晶体管的 连通与断开,而这两种状态正好与二进制中的基础状态 0 和 1 是对应的。
/ {7 T6 C4 ^ e2 O9 D- _' P6 _. @- _! D+ g) N1 \
但只是 0 和 1 状态的晶体管原理并不简单,它们的发展经过了多年的辛苦研究。在晶体管之前,计算机依靠速度缓慢、低效率的真空电子管和机械开关来处理信息。后来,科研人员把两个晶体管放置到一个硅晶体中,这样便创作出第一个集成电路,后来才有了中央处理器。
7 h! C( K# q4 ]2 }9 w/ W" B2 z- \; K$ }9 I/ K! l+ T( m; [
看到这里,你一定想知道,晶体管是如何利用 0 和 1 这两种电子信号来执行指令和处理数据的呢? {:6_160:}
* z3 L' f0 J1 B( E h7 i% c% H! R% t2 D
所有电子设备都有自己的电路和开关,电子在电路中流动或断开,完全由开关来控制,如果将开关设置为 OFF,电子停止流动,如果再将其设置为 ON,电子又会继续流动。晶体管这种 ON 与 OFF 的切换只由电子信号控制,我们可以将晶体管称之为二进制设备。
% Q( f4 B8 m2 V6 R- r( T- X4 p" q. u# `8 ^3 d4 A
晶体管的 ON 状态用 1 来表示,而 OFF 状态则用 0 来表示,这样就可以组成最简单的二进制数。众多晶体管产生的多个 1 与 0 的特殊次序和模式能代表不同情况,将其定义为字母、数字、颜色和图形。
8 Y+ [0 E2 t) d+ Z- ?* N2 F& S8 { e2 E$ C2 o7 N4 e
举个例子,十进位中的 1 在二进位模式时也是 1 ,2 在二进位模式时将是 10,3 将是 11,4 将是 100,5 将是 101,6 将是 110 等,依此类推,这就组成了计算机工作采用的二进制语言和数据。人多力量大,成组的晶体管联合起来可存储数值,也能进行逻辑运算和数字运算。加上石英时钟的控制,晶体管组就像一部复杂的机器那样同步地执行它们的功能。; q7 F8 F v% z2 e; h' t' ?. ?
7 L" k0 h: U# T! |2 p! a& q( U
) I0 ]. j$ s; _$ ]/ @ 二、CPU 的基本工作过程——就像产品加工那样简单
9 D* R# k# K2 I3 [$ G* J; b
% q! k2 n8 e* n 由晶体管组成的 CPU 是处理数据和执行程序的核心,其英文全称为:Central Processing Unit,也就是中央处理器。虽然由几亿个晶体管组成,但其工作原理并不是想象中那么深奥,只要归纳起来稍加分析就会一目了然。
; j, h$ |3 H4 M% `. _8 |3 y& f& w0 _7 w: w8 t3 H- b
首先,CPU 的内部结构可以分为控制单元,逻辑运算单元和存储单元(包括内部总线及缓冲器)三大部分,各施其职。CPU 的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(程序指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元),生产出成品(处理后的数据)后,再存储在仓库(存储单元)中,最后等着拿到市场上去卖(交由应用程序使用)。
+ ~3 }2 W, a! C# |/ S: P7 y( f$ O
5 K+ h7 x0 ?. \. k2 a9 t
- H2 O1 O3 K6 k; v 在这个过程中,我们注意到从控制单元开始,CPU 就开始了正式的工作,中间的过程是通过逻辑运算单元来进行运算处理,交到存储单元代表工作的结束。# A* m+ r+ j) d3 l; f
+ n: I* ]& m! H" X 这个过程看起来相当长,其实只是一瞬间发生的事情。换另外一种表达方式,也可以这样理解:CPU 只执行三种基本的操作,分别是读出数据、处理数据和往内存写数据。它的标称速度一般用 Hz 来表示,但 CPU 其他方面,比如芯片设计,对于 CPU 性能也起着非常重要的作用。/ E" z8 X/ g4 s# O9 D. f* a& n
8 p, ]8 H, i; J( K' h/ i
三、CPU 内部结构简述
$ {8 g) J: `. j$ m, B2 E- A
3 ^ L9 m. F3 d- v: ]1 V 现在已经大概知道CPU需要负责些什么事情,但具体由哪些部件负责处理数据和执行程序呢?先来看看 CPU 主要部件的功能:! k. z4 ^3 R n+ u0 x
! {: x1 S; G1 q
1.算术逻辑单元ALU(Arithmetic Logic Unit)
3 I1 T5 o; q# v- m
b6 x' \; {+ T3 k1 m, A4 o x6 u ALU 是运算器核心。它是以全加器为基础,辅之以移位寄存器及相应控制逻辑组合而成的电路,在控制信号的作用下可完成加、减、乘、除四则运算和各种逻辑运算。就像刚才提到的,这里就相当于工厂中的生产线,负责运算数据。4 k; ?' I5 O: N- h2 g
' H( t6 u; ?4 ~& U3 D
2.寄存器组RS(Register Set 或Registers)
0 k, Y/ o6 f0 T, p- \' G1 b6 h2 X4 _# M4 w; e! g
RS 实际是CPU 暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU 访问寄存器所用时间要比访问内存的时间短。采用寄存器,可减少CPU访问内存次数,从而提高CPU的工作速度。0 M6 ^ c: _( d$ h5 l
! x' f: | b" R P& I5 B
但因受到芯片面积和集成度所限,寄存器组容量不可能很多。寄存器组又可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应数据。而通用寄存器用途广泛并可由程序员规定其用途。通用寄存器的数目因中央处理器而异。9 x. h- ~. ]7 ]- k6 L' {
7 ] j5 f3 X% C9 N* Y3 x9 J$ B
# ~; l& h- O3 ~3 `5 R5 u' i$ U5 J 通用寄存器除可高效地存储数据外,还可作为间址、基址、变址寻址时的地址指针,从而缩短指令长度和指令执行时间,加快CPU 的运算处理速度,同时也给编程带来方便。因此,高档微机CPU 的设计中无不对通用寄存器进行精心设计,RISC 结构CPU 的设计更将其发挥得淋漓尽致。
) h0 c9 F$ N/ D0 g! j, N$ V1 P; ^) z3 w6 t
3.控制单元(control unit)/ I) o$ o6 `2 h! I% O
8 W% T4 P3 F* p3 o
正如工厂的物流分配部门,控制单元是整个 CPU 的指挥控制中心,由指令寄存器(IR —— Instruction Register)、指令译码器(ID —— Instruction Decoder)和操作控制器(OC —— Operation Controller)三个部件组成,对协调整个微型计算机有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器 IR 中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器 OC ,按确定的时序,向相应的部件发出微操作控制信号。$ M; @9 d" Q( j1 a/ c
- V2 M+ d! i2 g: `- v W5 ^# L: u, N& c" q* W2 H5 G$ A
操作控制器 OC 中主要包括有节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。$ T- T" Y5 i. k) [0 |6 F# U
- ^3 {/ X: J- v; J# { 4.总线(Bus)8 |: f. Y/ ? Q. O0 y* A' A* b
& r% f4 R2 `7 H n 就像工厂中各部门之间的联系渠道,总线实际上是一组导线,是各种公共信号线的集合,用于作为PC 中所有各组成部分传输信息共同使用的公路。直接和 CPU 相连的总线可称为局部总线。其中包括:数据总线(DB —— Data Bus)、地址总线(AB —— Address Bus)、控制总线(CB —— Control Bus)。其中,数据总线用来传输数据信息,地址总线用于传送 CPU 发出的地址信息,控制总线用来传送控制信号、时序信号和状态信息等。
" C# U) y! L) b9 C% L: I- ~
9 T" @" H0 L( ^* `2 H* F 四、数据与指令在 CPU 中的运转
& c( Q3 j, d# b+ t/ e- X! W2 H E: E4 \
刚才已经为大家介绍了 CPU 的基本原理及部件情况,现在来看看数据是怎样被 CPU 进行处理的。 我们知道,数据从输入设备输入内存,等待 CPU 处理,这些将要处理的信息是按字节存储的,也就是以 8 位二进制数或 8 比特为 1 个单元存储,这些信息可以是数据或指令。数据是用二进制表示的字符、数字或颜色等。而指令告诉 CPU 对数据执行哪些操作,比如完成加法、减法或移位运算。
5 t4 i+ t5 j# O# E+ p
/ K1 \0 v' O8 g9 M" O1 Y2 ]- E 假设在内存中的数据是最简单的原始数据。首先,指令指针(instruction pointer)会通知 CPU 将要执行的指令在内存中的存储位置。因为内存中的每个存储单元都有编号,称为地址,可以根据这 些地址把数据取出,通过地址总线送到控制单元中,指令译码器(instruction decoder )从指令寄存 器(IR —— Instruction Register)中拿来指令,翻译成 CPU 可以执行的形式,然后决定完成该指令需 要哪些必要的操作,它将告诉算术逻辑单元(A L U )什么时候计算,告诉指令读取器什么时候获取数值,告诉指令译码器什么时候翻译指令等。7 d6 r ~& w& G% W q5 o r" {
: J7 m" J9 e7 a$ K
假如数据被送往算术逻辑单元,数据将会执行指令中规定的算术运算和其他各种运算。当数据处理完毕后,将回到寄存器中,通过不同的指令将继续处理数据或者通过数据总线送到数据缓存器中。' @: j% T( @- l, C
3 g/ o) ~+ J# {/ ~
基本上,CPU 就是这样去执行读出数据、处理数据和往内存写数据三项基本工作。但在通常情况 下,一条指令可以包含按明确顺序执行的许多操作,CPU 的工作就是执行这些指令,完成一条指令 后,CPU 的控制单元又将告诉指令读取器从内存中读取下一条指令来执行。这个过程不断快速地重复,快速地执行一条又一条指令,产生你在显示器上所看到的结果。& D5 T8 f- [( ^
8 R7 L7 t! H1 F+ ^; {- z
' f2 m4 W4 S4 S 事实上,即使是一个简单的应用程序,需要处理的数据也是相当庞大和复杂的。6 c9 S% }: S# t. U/ S; r* `) C
+ J- D; ?& L$ E+ G6 F2 w5 H- T
我们很容易想到,在处理这么多指令和数据的同时,由于数据转移时差和 CPU 处理时差,肯定会出现混乱处理的情况。为了保证每个操作准时发生,CPU 需要一个时钟。时钟控制着 CPU 所执行的每一个动作。时钟就像一个节拍器,它不停地发出脉冲,决定 CPU 的步调和处理时间。目前,脉冲周期一般达到了每秒20-30亿赫兹,这就是我们所熟悉的 CPU 标称速度,也称为主频。主频数越高, 表明 CPU 的工作速度越快。# m+ Z0 O! R- x: X+ x
- o4 Q( c9 P) U8 y q& U2 f$ P9 V |
0 ~% H$ o" S* v# O* o- n 在其他条件相同的情况下,一个主频为 3.2GHz 的 CPU 工作速度比 2.2GHz 的 CPU 要快。当然,具体决定电脑的速度还要看其他相关的配件。 `! P2 r% F9 p# Y' C1 T; L3 G
1 U# O3 ~$ Y- U6 o. g' O 五、怎样提高 CPU 的工作效率
+ p1 j4 [+ S8 g: k8 C! A0 M3 s, B: g" a3 h6 f. o& i9 _
既然 CPU 的主要工作是执行指令和处理数据,那么工作效率将成为 CPU 的最主要内容,因此,各CPU 厂商也尽力使 CPU 处理数据速度更快。
+ z0 h) Y$ c1 Z0 A$ O' @! E4 q( Z( L v5 P l' R0 L# N5 c
根据 CPU 的内部运算结构,一些制造厂商在 CPU 内增加了另一个算术逻辑单元(ALU),或另外再设 置一个处理非常大和非常小数据的浮点运算单元(FPU —— Floating Point Unit),这样就大大加快了数据运算的速度。 而在执行效率方面,一些厂商通过流水线方式或以几乎并行工作的方式执行指令以提高指令的执行速度。
( K }& H% j3 U( }" m* L9 s- z6 x
刚才我们提到,指令的执行需要许多独立的操作,诸如取指令和译码等。最初CPU在执行下一条指令之前必须全部执行完上一条指令,而现在则由分布式的电路各自执行操作。也就是说,当这部分的电路完成了一件工作后,第二份工作立即占据了该电路,这样就大大增加了执行方面的效率。
/ p' }9 a' E, X
' G+ L; @7 H5 E# I9 q5 @ 另外,为了让指令与指令之间的连接更加准确,现在的CPU通常会采用多种预测方式来控制指令更高效率地执行。 8 {* H% f* G; M1 a) ?% R9 A: o
{:7_174:}
# j8 ]! e5 M0 _$ J
7 K. _3 d' P0 r0 J3 p |