当前位置:文档之家› 计算机硬件综述

计算机硬件综述

计算机硬件综述

徐光林整理

一、 CPU

1. 简介:

CPU全称为Center Processing Unit,即中央处理器。它好比是计算机的大脑,计算机中几乎所有的数据都要经过它处理。

提示:采用DMA(Direct Memory Access,直接存储器存取)方式,数据可以不经过CPU的处理就直接在存储器和输入输出设备之间进行传输。

2. 组成部分及功能:

图1-1 8086的逻辑结构

BIU(总线接口部件):从内存中取数据送给EU,并把EU处理好的数据送到内存。

ALU(Arithmetic and Logic Unit,算术逻辑运算器):完成算术或逻辑运算

EU(执行部件) 控制器:产生控制信号来控制各个部件,完成取指和执行指令等操作。

分析和执行指令 寄存器:用来保存计算所需数据和中间结果,具有极快的读写速度,数量很少。

(8086是PC的CPU家族中最简单的处理器)

通常的处理过程是:BIU从内存中读取指令和数据,送到EU,其中指令部分送到控制器进行译码、执行,数据部分送到ALU进行运算,最后的处理结果又送回内存中去。

从386开始,CPU的物理结构(元件的组成和实际布局)要较8086的复杂很多,但其逻辑结构(按功能抽象出来的结构)仍然和8086的相同。

486以后的CPU,由于时钟频率高于内存的时钟频率,所以在两者之间设置了缓存。缓存又分为一级缓存(L1 Cache)和二级缓存(L2 Cache),先前一级缓存做在CPU中,二级缓存做在主板上,后来为了提高CPU速度,把二级缓存也集成到了CPU的内部,以CPU同速或半速运行。CPU的高速缓存属于SRAM(参见第三章内存:3.内存的工作原理)。

FPU(Floationg Point Unit,浮点运算单元)是计算机中为提高浮点数据处理能力而增加的一块单独的芯片,称为数字协处理器(numeric coprocessor),例如Intel 80287和Intel 80387。从Intel 486处理器开始,FPU也集成到CPU之内了。

3. 封装和插座:

封装起着安装、密封、保护芯片及增强散热等作用。封装的不断改进实际上是要在同样的面积上安排更多的引脚。封装形式有以下几种:

 PLCC:引脚在CPU的四个边上,像286这种引脚很少的CPU采用了这种封装。

 SECC(单边接触卡式封装)、SEPP(单边处理器封装):在CPU的发展史上曾一度出现,实际上这只能看作是一种转接卡,CPU芯片实际上是BGA封装的,CPU焊接到了一块PCB(印刷电路板)上,PCB就成为CPU和主板之间的连接。PentiumⅡ和部分PentiumⅢ是采用此种封装。

 PGA(针状栅格阵列):这是大多数CPU采用的封装形式。它与BGA的区别在于它的引脚是针状的,便于反复插拔。这种封装的CPU根据其引脚数目的不同,对应的插座也不相同。如Socket 478有478个引脚,而Socket 423有423个引脚。

 BGA(球状栅格阵列):笔记本电脑的CPU很少使用插座,因为它几乎不存在更换的可能,所以通常使用BGA封装直接焊接在PCB上,此种封装只能由专门的设备焊接和拆下。

从386向后,主板通常能够支持多种不同频率的CPU,为了方便更换CPU,于是在主板上放置CPU的位置就焊上插座,但早期的CPU插座使用起来很不方便,容易损坏CPU的针脚。现在则使用了零插拔力插座(ZIP,Zero Force Insertion Socket),零插拔力插座设计上很特殊,普通用户也可以轻松的安装或取下CPU。

4. CPU的主要参数:

① 主频:CPU自身工作的时钟频率,是衡量它到底运行得有多快的一个标志;

② 外频:CPU与外部交换数据的时钟频率,也就是主板的运行频率(即系统频率);

③ 外部数据总线宽度:外部数据总线的位数越多,也就意味着在同一时钟周期内发送的数据位数就越多,数据量也就越大。

④ 内部数据总线宽度:CPU内部进行数据交换时的位宽。

Pentium处理器有64位外部数据总线,但是仍然是一个32位的处理器,因为它的内部寄存器、内部数据总线和运行的指令都是32位。Pentium处理器使用了所谓的超标量结构,具有两条32位的内部数据流水线,从某种意义上说就好像两个合在一起的32位处理器。最早采用超标量技术的x86处理器是Intel Pentium处理器,以后该技术被广泛用到x86处理器中。

⑤ 地址总线宽度:地址总线宽度决定了CPU“可寻址空间”的大小。

可寻址空间=2地址总线宽度

例如:Pentium处理器地址总线宽度为32位,可寻址空间为232=22*230=4*10243=4G。

⑥ MIPS:指令执行速度是经典的处理器性能表示方法,常用MIPS(百万条指令执行时间)来表示。

MIPS=Fz*IPC

Fz为CPU的主频,IPC为每个时钟周期平均执行的指令条数,时钟周期=1/主频。

但是指令执行速度也不能完全反映出处理器的真实性能。原因是:a,CPU的各个指令执行起来所需时间各有不同;b,不同指令的使用概率也不一样。

⑦ 高速缓存容量:一级缓存容量和二级缓存容量。

性能测试软件:ZD Labs实验室的CPUmark,SPEC CPU2000,WCPUID。

5. 如何提高运算速度:

① 通过提高数据总线宽度(位宽)来提高数据处理能力;

② 外频不易提高,因此通过倍频电路对外频进行提升,获得几倍至几十倍于外频的频率,这个频率叫主频;

③ 通过流水线作业、分支预测(Multiple Branch Prediction)和乱序执行(Out-Of-Order Execution)等技术让每个部件都充分工作。流水线的概念估计大家都很熟悉,这里不再多说。分支预测的功能是指遇到跳转指令就对它的结果进行推测,从而保证流水线不发生中断,为了提高预测的命中率(准确度),CPU采用了两条预取指令队列。流水线队列中有些指令具有独立性,先处理后处理并不影响整个执行过程。因此当预测失误时,就取出这些具有独立性的指令,让执行部件去执行它们,以便让执行部件充分利用工作时间,这种技术就叫做乱序执行。

④ 多媒体扩展指令:在许多多媒体程序的运算过程中经常出现一些循环多次、但每次循环处理的数据量却很小的操作。对于这种运算,如果采用CPU原先的一些指令来完成,需要耗费大量的运算时间,因为一条指令只能处理一个数据,多次循环就需要多条指令来完成。多媒体扩展指令出现后,一条新指令可以代替以前得多条指令,它将多个少量数据组合成一个大数据包,采用并行的方式进行处理,这样就加快了运算速度,这种处理方法叫做“单指令多数据”(SIMD)。

6. 高速缓存的工作原理:

① 高速缓存控制器预测CPU下一步操作需要的数据,并把该数据从内存中取出放入高速缓存中。一级高速缓存和二级高速缓存的命中率通常都在90%左右,也就是说CPU正常工作时有90%的时间是以全速访问一级缓存,有9%的时间是访问速度稍慢的二级缓存,只有1%的时间是访问内存的,因此它对提高系统性能的意义非常大。

② 高速缓存和内存之间的映象方式:即内存中的块(Block)按什么规则放到对应的Cache(缓存)块中。

为了便于进行替换和管理,高速缓存和主存之间被分成大小相同的块,即使处理器需要的仅仅是一块数据中的一部分,也会将整个块读入Cache。

A.全相联映象方式非常简单,也就是内存中的任意一个数据块都可以装入Cache内的任意一块位置上 。Cache容量越大,查找效率越低。

B.直接映象方式就是内存中的每一块只能放到Cache中唯一确定的一个位置。它的映象机制就是把内存按Cache的大小分成很多区,每一个分区内的块数与Cache的块数正好相等,各个区中相对块号相同的那些块映象到Cache中同一块号的那个待定块中。查找效率较全相联映象高,但是Cache的利用率降低了。

C.组相联映象方式是目前在Cache中用的比较多的一种方式。它是介于全相联映象和直接映象之间的一种折中方案。组相联映象与前两种映象方式相比除了把内存和Cache也按同样大小划分成块外,还把内存和Cache按同样大小划分成组(Set),每一组由相同的块数组成。从内存的组到Cache的组之间采用直接映象方式;在内存中的一组与Cache中的一组之间建立了直接映象关系之后,在两个对应的组内部(即两个组的块之间)就采用全相联映象方式。组相联映象比全相联映象实现起来容易得多,但Cache的命中率与全相联映象方式很相近,因此得到广泛应用。其灵活性介于全相联映象方式和直接映象方式之间。在组相联映象方式中,当每组只有一个块时,就成了直接映象方式;当Cache只包含一个组时,就成了全相联映象方式。

在进行分组时,每组所包含的块数都是取2的幂。例如,P4的L2 Cache每组包含8个块,就称为八路组相联(8-way set associative),有的地方也译为“八路联合”。

③ 通写和写回

以上讨论的都是读Cache的情况。写Cache的过程与读Cache基本类似,只是复杂一些。

Cache中保存的是内存中某些数据的副本,但内存中某些单元的内容却可能在一段时间内和Cache中对应单元的内容不一致。解决Cache与内存信息不一致的问题,目前主要是两种写策略:通写(write through)和写回(write back)。通写策略是指在写Cache的同时,也写内存。它的优点是能随时保持内存与Cache数据的一致性,可靠性很高,缺点是增加了数据传送量,并且写内存要花费较长的时间。写回策略只写Cache,不写内存。只有当数据块要被替换掉时,才把它写回内存。这种策略的优点是缩短了写操作所用的时间,效率更高,缺点是内存中可能会存在过时的数据。

7. 指令集和扩展指令集:

CISC(Complex Instruction Set Computer)复杂指令集计算机,特点是使用功能丰富而复杂的指令集,其中有些特殊的指令能完成复杂的功能,但是这些指令码非常复杂,指令的执行时间也就比较长。其代表有Intel的Pentium、Xeon,主要用于个人计算机和低端服务器。

RISC(Reduced Instruction Set Computer)精简指令集计算机,特点是将指令的长度缩短,因此很多复杂指令都被去除,剩下的都是一些简单而常用的指令,因而每条指令都能在很短的时间内执行完,不过实现一个复杂的功能时需要执行很多的简单指令。其代表有IBM Power、HP PA-RISC、Compaq Alpha、SUNUltra-SPARC、CGI MIPS,全部是高端服务器。

Intel8086/8088、286、386处理器都属于CISC,从486开始的处理器引入很多RISC的设计思想,而其中最重要的就是指令流水线设计。

图 1-2 多媒体扩展指令的发展

Intel: SSESSE2

MMX(Intel)

AMD:3Dnow! 3Dnow! Professional(兼容SSE)

8. 构成控制命令的方式:

① 微程序控制:由控制器发出取指令、分析指令和执行指令的控制命令,这些控制命令叫微指令,一系列的微指令就构成了微程序。微程序存储在CPU内部的存储器中,具有灵活性、可维护等很多优点,并且简化了CPU的设计。

② 组合逻辑控制:使用逻辑电路来构成。相对于前者,速度更高。

PⅡ以后的高性能CPU同时采用了以上这两种控制方式,即对于常用的简单指令使用组合逻辑控制,而对其他复杂的指令就采用微程序控制方式。

9. 相关内容:

① 1971年由Intel公司推出的4004芯片是历史上第一枚CPU,基于10微米工艺,其时钟频率是0.108MHz,集成了2300个晶体管,体积约为指甲大小,但计算能力却和1946年的第一台电子计算机ENIAC相当。而现在Intel公司推出的最新CPU ,基于0.13微米工艺,时钟频率达3.4GHz。

② 什么是x86 PC:x86 PC这一名称源于这种计算机的CPU所采用的x86指令集,它是Intel公司为其第一块16位CPU(8086)专门开发的指令系统。IBM公司1981年推出的第一台PC机CPU——8088(8086的简化版)使用的也是x86指令集,同一时期计算机中为提高浮点数据处理能力而增加的FPU则额外采用x87指令集,后来FPU并到CPU中时,x87指令集也被并到x86指令集中。虽然Intel公司随后陆续推出80286、80386、80486、Pentium、PentiumⅡ、PentiumⅢ、Pentium4等新型CPU,但为了保证它能够继续运行以前开发的各种程序,它们仍然使用x86指令集。此外,AMD、VIA等其他CPU厂商也都生产使用该指令集的CPU,它们和Intel一起组成了庞大的x86阵容。

提示:在计算机领域中,平台这个概念通常是指CPU指令集和操作系统,一个软件可以跨平台意味着它可以运行在不同的操作系统和指令集上。

相关主题