计算机硬件综述
                              徐光林整理
一、 CPU
1. 简介:
CPU全称为Center Processing Unit,即中央处理器。它好比是计算机的大脑,计算机中几乎所有的数据都要经过它处理。
提示:采用DMADirect Memory Access,直接存储器存取)方式,数据可以不经过CPU的处理就直接在存储器和输入输出设备之间进行传输。
2. 组成部分及功能:
1-1 8086的逻辑结构
  BIU(总线接口部件):从内存中取数据送给EU,并把EU处理好的数据送到内存。
                  ALU(Arithmetic and Logic Unit,算术逻辑运算器):完成算术或逻辑运算
EU执行部件)  控制器:产生控制信号来控制各个部件,完成取指和执行指令等操作。
分析和执行指令  寄存器:用来保存计算所需数据和中间结果,具有极快的读写速度,数量很少。
  8086PCCPU家族中最简单的处理器)
通常的处理过程是:BIU从内存中读取指令和数据,送到EU,其中指令部分送到控制器进行译码、执行,数据部分送到ALU进行运算,最后的处理结果又送回内存中去。
386开始,琦玉老师CPU的物理结构(元件的组成和实际布局)要较8086的复杂很多,但其逻辑结构(按功能抽象出来的结构)仍然和8086的相同。
486以后的CPU,由于时钟频率高于内存的时钟频率,所以在两者之间设置了缓存。缓存
又分为一级缓存(L1 Cache)和二级缓存(L2 Cache),先前一级缓存做在CPU中,二级缓存做在主板上,后来为了提高CPU速度,把二级缓存也集成到了CPU的内部,以CPU同速或半速运行。CPU的高速缓存属于SRAM(参见第三章内存:3.内存的工作原理)。
FPUFloationg 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 478478个引脚,而Socket 423423个引脚。
BGA(球状栅格阵列):笔记本电脑的CPU很少使用插座,因为它几乎不存在更换的可能,所以通常使用BGA封装直接焊接在PCB上,此种封装只能由专门的设备焊接和拆下。
386向后,主板通常能够支持多种不同频率的CPU,为了方便更换CPU,于是在主板上放置CPU的位置就焊上插座,但早期的CPU插座使用起来很不方便,容易损坏CPU的针脚。现在则使用了零插拔力插座(ZIPZero Force Insertion Socket),零插拔力插座设计上很特殊,普通用户也可以轻松的安装或取下CPU
4. CPU的主要参数:
1 主频:CPU自身工作的时钟频率,是衡量它到底运行得有多快的一个标志;
2 外频:CPU与外部交换数据的时钟频率,也就是主板的运行频率(即系统频率);
3 外部数据总线宽度:外部数据总线的位数越多,也就意味着在同一时钟周期内发送的数据位数就越多,数据量也就越大。
4 内部数据总线宽度:CPU内部进行数据交换时的位宽。
  Pentium处理器有64位外部数据总线,但是仍然是一个32位的处理器,因为它的内部寄存器、内部数据总线和运行的指令都是32位。Pentium处理器使用了所谓的超标量结构,具有两条32位的内部数据流水线,从某种意义上说就好像两个合在一起的32位处理器。最早采用超标量技术的x86处理器是Intel Pentium处理器,以后该技术被广泛用到x86处理器中。
5 地址总线宽度:地址总线宽度决定了CPU“可寻址空间”的大小。
可寻址空间=2地址总线宽度
例如:Pentium处理器地址总线宽度为32绣球小苗位,可寻址空间为232=22*230=4*10243=4G
6 MIPS:指令执行速度是经典的处理器性能表示方法,常用MIPS(百万条指令执行时间)来表示。
MIPS=Fz*IPC
          FzCPU的主频,IPC为每个时钟周期平均执行的指令条数,时钟周期=1/主频。
          但是指令执行速度也不能完全反映出处理器的真实性能。原因是:a,CPU的各个指令执行起来所需时间各有不同;b,不同指令的使用概率也不一样。
      高速缓存容量:一级缓存容量和二级缓存容量。
性能测试软件:ZD Labs实验室的CPUmarkSPEC CPU2000WCPUID
5. 如何提高运算速度:
1 通过提高数据总线宽度(位宽)来提高数据处理能力;
2 外频不易提高,因此通过倍频电路对外频进行提升,获得几倍至几十倍于外频的频率,这个频率叫主频;
3 通过流水线作业、分支预测(Multiple Branch Prediction)和乱序执行(Out-Of-Order Execution)等技术让每个部件都充分工作。流水线的概念估计大家都很熟悉,这里不再多说。分支预测的功能是指遇到跳转指令就对它的结果进行推测,从而保证流水线不发生中断,为了提高预测的命中率(准确度),CPU采用了两条预取指令队列。流水线队列中有些指令具有独立性,先处理后处理并不影响整个执行过程。因此当预测失误时,就取出这些具有独立性的指令,让执行部件去执行它们,以便让执行部件充分利用工作时间,这种技术就叫做乱序执行
4 多媒体扩展指令:在许多多媒体程序的运算过程中经常出现一些循环多次、但每次循环处理的数据量却很小的操作。对于这种运算,如果采用CPU原先的一些指令来完成,需要耗费大量的运算时间,因为一条指令只能处理一个数据,多次循环就需要多条指令来完成。多媒体扩展指令出现后,一条新指令可以代替以前得多条指令,它将多个少量数据组合成一个大数据包,采用并行的方式进行处理,这样就加快了运算速度,这种处理方法叫做“单指令多数据”(SIMD)。
6. 高速缓存的工作原理:
1 高速缓存控制器预测CPU下一步操作需要的数据,并把该数据从内存中取出放入高速缓存中。一级高速缓存和二级高速缓存的命中率通常都在90%左右,也就是说CPU中考成绩怎么查询2020正常工作时有90%的时间是以全速访问一级缓存,有9%的时间是访问速度稍慢的二级缓存,只有1%的时间是访问内存的,因此它对提高系统性能的意义非常大。
 
2 高速缓存和内存之间的映象方式:即内存中的块(Block)按什么规则放到对应的Cache(缓存)块中。
为了便于进行替换和管理,高速缓存和主存之间被分成大小相同的块,即使处理器需要的仅仅是一块数据中的一部分,也会将整个块读入Cache
A.全相联映象方式非常简单,也就是内存中的任意一个数据块都可以装入Cache内的任意一块位置上 Cache容量越大,查效率越低。
B.直接映象方式就是内存中的每一块只能放到Cache中唯一确定的一个位置。它的映象机制就是把内存按Cache的大小分成很多区,每一个分区内的块数与Cache的块数正好相等,
各个区中相对块号相同的那些块映象到Cache中同一块号的那个待定块中。查效率较全相联映象高,但是Cache的利用率降低了。
C.组相联映象方式是目前在Cache中用的比较多的一种方式。它是介于全相联映象和直接映象之间的一种折中方案。组相联映象与前两种映象方式相比除了把内存和Cache也按同样大小划分成块外,还把内存和Cache按同样大小划分成组(Set),每一组由相同的块数组成。从内存的组到Cache的组之间采用直接映象方式;在内存中的一组与Cache中的一组之间建立了直接映象关系之后,在两个对应的组内部(即两个组的块之间)就采用全相联映象方式。组相联映象比全相联映象实现起来容易得多,但Cache的命中率与全相联映象方式很相近,因此得到广泛应用。其灵活性介于全相联映象方式和直接映象方式之间。在组相联映象方式中,当每组只有一个块时,就成了直接映象方式;当Cache只包含一个组时,就成了全相联映象方式。
在进行分组时,每组所包含的块数都是取2的幂。例如,P4L2 Cache每组包含8英雄联盟吸血鬼出装个块,就称为八路组相联(8-way set associative),有的地方也译为“八路联合”。
3 通写和写回
以上讨论的都是读Cache的情况。写Cache的过程与读Cache基本类似,只是复杂一些。
Cache中保存的是内存中某些数据的副本,但内存中某些单元的内容却可能在一段时间内和Cache中对应单元的内容不一致。解决Cache与内存信息不一致的问题,目前主要是两种写策略:通写(write through)和写回(write back)。通写策略是指在写Cache的同时,也写内存。它的优点是能随时保持内存与Cachesnh48成员数据的一致性,可靠性很高,缺点是增加了数据传送量,并且写内存要花费较长的时间。写回策略只写Cache,不写内存。只有当数据块要被替换掉时,才把它写回内存。这种策略的优点是缩短了写操作所用的时间,效率更高,缺点是内存中可能会存在过时的数据。
7. 指令集和扩展指令集:
CISC(Complex Instruction Set Computer)复杂指令集计算机,特点是使用功能丰富而复杂的指令集,其中有些特殊的指令能完成复杂的功能,但是这些指令码非常复杂,指令的执行时间也就比较长。其代表有IntelPentiumXeon,主要用于个人计算机和低端服务器。
RISC(Reduced Instruction Set Computer)精简指令集计算机,特点是将指令的长度缩短,因此很多复杂指令都被去除,剩下的都是一些简单而常用的指令,因而每条指令都能在很短的时间内执行完,不过实现一个复杂的功能时需要执行很多的简单指令。其代表有IBM PowerHP PA-RISCCompaq AlphaSUNUltra-SPARCCGI MIPS,全部是高端服务器。
Intel8086/8088286386处理器都属于CISC,从486开始的处理器引入很多RISC的设计思想,而其中最重要的就是指令流水线设计。