购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1.1 CPU

中央处理器是SoC负责读取指令、对指令译码并执行指令的核心部件。CPU的功能主要为处理指令、执行操作、控制时间、处理数据。在微处理器体系结构中,CPU是对微处理器的所有硬件资源进行控制、执行通用运算的核心硬件单元。微处理器系统中所有软件层的操作最终将通过指令集映射到CPU的操作。

对于CPU而言,影响性能的指标主要有CPU主频、CPU位宽、CPU缓存和CPU内核数等。CPU主频是指CPU的时钟频率,它直接决定了CPU的性能。CPU位宽指处理器一次能够处理的数据位数。通常情况下,CPU的位宽越高,CPU的运算速度就会越快。CPU缓存是在CPU内部用于存储指令和数据的存储空间。CPU内核数决定单位时间内CPU并行处理任务的能力。

通常来讲,CPU在结构上大致分为运算器、控制器和高速缓存等。

1.运算器

运算器是负责执行各种算术计算和逻辑操作的部件。运算器包括算术逻辑部件(Arithmetic and Logic Unit,ALU)、移位部件、浮点处理单元(Floating-Point Processing Unit,FPU)、向量运算部件、寄存器等。其中,复杂运算(如乘、除、开方及浮点运算)可用程序实现或由运算器实现。寄存器既可用于保存数据,也可用于保存地址。运算器还可用于设置条件码寄存器等专用寄存器。条件码寄存器用于保存当前运算结果的状态,如运算结果是正数、负数还是零,是否溢出等。

运算器经历了从简单到复杂的过程。最初的运算器只能完成简单的定点加减和基本逻辑运算,复杂运算(如乘、除)通过加减、移位指令构成的数学库完成;后来出现了硬件定点乘法器和除法器。在早期的微处理器中,浮点运算器以协处理器(如Intel 8087协处理器)的形式出现在计算机中,可以完成二进制浮点数的加、减、乘、除等运算,现代的通用微处理器则普遍包含完整的浮点运算部件。从20世纪90年代开始,微处理器中出现了单指令流多数据流(Single-Instruction Stream Multiple-Data Stream,SIMD)的向量运算器,部分处理器还实现了超越函数的硬件运算单元,支持正弦、余弦、指数和对数的计算。部分用于处理银行业务的计算机(如IBM Power系列)还实现了十进制定点数、浮点数的运算器。

随着晶体管集成度的不断提升,CPU中集成的运算器的数量持续增加。通常将具有相近属性的一类运算器组织在一起,构成一个运算单元。不同的CPU有不同的运算单元。有的CPU中,每个单元大而全;有的CPU中,每个单元的功能相对单一。CPU中包含的运算单元数量也从早期的单个逐渐增加到多个。由于运算单元都需要从寄存器中读取操作数,并把结果写回寄存器,因此CPU中运算单元的个数主要受限于寄存器堆的读写端口个数。运算单元一般按照定点、浮点、访存、向量等类型组织,也有混合的,如SIMD部件既能完成定点运算也能完成浮点运算,定点部件也可以完成访存地址计算等。

2.控制器

控制器是CPU中控制指令执行的核心部件。它规定指令的执行顺序,生成控制指令,控制运算器、存储器和其他部件的运行,并负责处理紧急情况产生的中断。控制器包含程序计数器和指令寄存器等。程序计数器存放当前执行的指令的地址,指令寄存器存放当前正在执行的指令。指令通过译码产生控制信号,用于控制运算器、存储器、I/O设备的工作以及后续指令的获取。为了获得高指令吞吐率,可以采用指令重叠执行的流水线技术,以及同时执行多条指令的超标量技术。当遇到执行时间较长或不具备条件的指令时,提前执行具备条件的后续指令(称为乱序执行)可以提高流水线效率。控制器还产生一定频率的时钟脉冲,用于计算机各组成部分的同步。

由于控制器和运算器紧密耦合,因此通常把控制器和运算器集成在一起,称为中央处理器,即CPU。随着芯片集成度的不断提高,除了控制器和运算器外,现代CPU常常还集成了其他部件,如高速缓存(cache)部件、内存控制器等。

计算机执行指令的一般过程如下。

从存储器取指令并对取回的指令进行译码,从存储器或寄存器读取执行指令所需要的操作数,执行指令,把执行结果写回存储器或寄存器。上述过程称为一个指令周期。计算机不断重复指令周期,直到完成程序的执行。关于体系结构的一个永恒主题就是不断缩短上述指令周期,从而提高计算机运行程序的效率。控制器对提高指令执行效率起着至关重要的作用。

现代CPU的控制器都通过指令流水线技术提高指令执行效率。指令流水线把一条指令的执行划分为若干阶段(如取指、译码、执行、访存、写回阶段)来减轻每个时钟周期的工作量,从而提高主频;同时允许多条指令的不同阶段重叠执行,以实现并行处理(如一条指令处于执行阶段,另一条指令处于译码阶段)。虽然同一条指令的执行时间没有变短,但是CPU在单位时间内执行的指令数增加了。

计算机中的取指部件、运算部件、访存部件都在流水线的调度下执行指令规定的具体操作。运算部件的个数和延时,访存部件的存储层次、容量和带宽,以及取指部件的转移猜测算法等是决定微架构性能的重要因素。

3.高速缓存

高速缓存是一种在主存储器和CPU之间,对程序员透明的快速小容量存储器,可用于提高存储器的有效传输率。高速缓存的主要作用是减少CPU访问内存的次数,从而提高系统的整体性能。高速缓存根据存储需求和性能优化目标分为指令高速缓存(Instruction Cache,I-Cache)和数据高速缓存(Data Cache,D-Cache),这是两种不同类型的高速缓存。

指令高速缓存主要用于存储程序指令,即CPU执行的操作代码。当一个程序运行时,它的指令需要被频繁访问,而直接从主存(内存或磁盘)中读取这些指令会非常慢。为了提高执行速度,CPU会将这些被频繁访问的指令存储在指令高速缓存中。

指令高速缓存的特点如下。

● 采用顺序访问模式,因为程序通常按顺序执行指令。

● 容量较小,因为指令通常是固定的,不像数据那样多变。

● 当程序改变(例如,通过编译或在运行过程中修改)时,需要刷新或替换指令高速缓存中的内容。

● 数据高速缓存主要用于存储程序运行中需要频繁访问的数据。与指令高速缓存不同,数据高速缓存中的数据是可变的,并且经常根据程序的需要进行读写操作。

数据高速缓存的特点如下。

● 采用随机访问模式,因为程序可能会根据需要读取或写入任何数据。

● 容量通常比指令高速缓存的容量大(因为数据的多样性)。

● 当修改数据时,数据高速缓存需要相应地更新这些数据,以保证CPU操作的正确性。

在多核处理器中,保持指令高速缓存和数据高速缓存的一致性是一个挑战。例如,当一个内核修改了数据时,其他内核需要知道这个修改以确保它们读取的数据是最新的。这通常通过高速缓存一致性协议实现,确保所有内核看到的高速缓存状态是一致的。在现代计算机体系结构中,除了L1高速缓存、L2高速缓存和L3高速缓存外,还有更高级的高速缓存策略和设计,如用于加速虚拟地址到物理地址转换的变换先行缓冲器(Translation Lookahead Buffer,TLB)。

指令高速缓存和数据高速缓存是互补的,各自优化不同类型的访问模式。了解它们的区别与作用对于深入理解计算机体系结构和优化程序性能至关重要。通过合理配置和使用这些高速缓存,可以显著提高系统的整体性能。 /P7Pczro5KGqyt1es9JunGrqviaWHe3tXSeMzTsE+ASsDpTv9jDmlhozFzWxYzI5

点击中间区域
呼出菜单
上一章
目录
下一章
×