1一月二月三月产品名称数量金额利润产品名称数量金额利润产品名称数量金额利润合计合计合计四月五月六月产品名称数量金额利润产品名称数量金额利润产品名称数量金额利润合计合计合计数据库系统工程师考试考点分析与真题详解(第4版)第1章计算机组成与结构根据考试大纲,本章要求考生掌握以下知识点:CPU和存储器的组成、性能、基本工作原理。常用I/O设备、通信设备的性能,以及基本工作原理。I/O接口的功能、类型和特点。CISC/RISC、流水线操作、多处理机及并行处理。1.1计算机组成中央处理器是计算机的控制、运算中心,它主要通过总线和其他设备进行联系。另外,在嵌入式系统设计中,外部设备也常常直接连接到中央处理器的外部I/O(Input/Output,输入/输出)脚的相关引脚上。中央处理器的类型和品种异常丰富,各种中央处理器的性能也差别很大,有不同的内部结构及不同的指令系统。但都是基于冯·诺依曼结构,因而其基本组成部分相似。1.1.1运算器运算器的主要功能是在控制器的控制下完成各种算术运算、逻辑运算和其他操作。一个计算过程需要用到加法器/累加器、数据寄存器、状态寄存器等。加法是运算器的基本功能,在大多数中央处理器中,其他计算也是经过变换后使用加法进行的,一个位加法的逻辑图如图1-1所示。图1-1位加法逻辑图其中Xi、Yi是加数和被加数,Ci+1是低位进位,Ci是进位,Zi是和。为完成多位数据加法,可以通过增加电路和部件,使简单的加法器能够变为串行、并行加法器,超前进位加法器等。运算器的位数,即运算器一次能对多少位的数据做加法。这是衡量中央处理器的一个重要指标。1.1.2控制器控制器是中央处理器的核心,它控制和协调整个计算机的动作,其组成如图1-2所示。控制通常需要程序计数器(ProgramCounter,PC)、指令寄存器(InstructionRegister,IR)、指令译码器(InstructionDecoder,ID)、定时和控制电路,以及脉冲源、中断(在图1-2中未表示)等共同组成。图1-2控制器的组成控制器各组件的说明如下。指令寄存器(IR):中央处理器,执行的操作码存放在这里。指令译码器(ID):将操作码解码,告诉中央处理器该做什么。定时和控制电路(Timing/ControlCircuit):用来产生各种微操作控制信号。程序计数器(PC):程序计数器中存放的是下一条指令的地址。由于多数情况下程序是顺序执行,所以程序计算数器设计成能自动加1.当出现转移指令、中断等情况时,就需要重填程序计数器。程序计数器可能是下一条指令的绝对地址,也可能是相对地址,即地址偏移量。标志寄存器(FlagsRegister,FR):这个寄存器通常记录运算器的重要状态或特征,包括是否溢出、结果为0、被0除等。这个寄存器的每一位表示一个特征。标志寄存器的典型应用是作为跳转指令的判断条件。堆栈和堆栈指针(StackPointer,SP):堆栈可以由一组寄存器或在存储器内的特定区域组成。由于寄存器数量总是有限的,所以大多数系统采用了使用存储器的软件堆栈。指向堆栈顶部的指针称为堆栈指针。寄存器组:上面提及的程序计数器、标志寄存器等为专用寄存器,都有特定的功能和用途。通用寄存器的功能由程序指令决定,最常见的应用是放置计算的中间结果,减少对存储器的访问次数。通常寄存器的宽度和运算器的位数是一致的。1.1.3存储器系统这里的存储器是指中央处理器通过总线直接能访问的存储器,通常称为内存。硬盘等需通过I/O接口访问的存储器常称为外存或者辅存。存储器的作用显然是存储数据,包括指令、指令带的数据(这正是冯·诺依曼结构的特点之一)和中央处理器处理后的结果(包括中间结果)。中央处理器对存储器的访问需通过控制地址、数据总线进行。存储器的数据组织是线性的,所存储的数据都有整齐的编号,即访问地址。存储器一般每个存储单元中有8位数据,其容量是其存储单元的总和。存储器的性能指标如下。存取时间:指的是从中央处理器发出指令到操作完成的时间。传输率:或称为数据传输带宽,指单位时间内写入或读取的数据的多少,显然,存取时间越少,则传输率越高。存储密度:在单位面积中的存储容量,人们在不断增加这个值。有关存储器系统的详细内容,请阅读本书第2章。1.1.4时序产生器和控制方式为了使得计算机各部件同步工作,计算机中都有一个脉冲源,通常是晶振。这个脉冲源产生主振脉冲,主振脉冲的时间间隔为主振周期,即时钟周期。中央处理器执行指令的时间(包括取指)为指令周期,由于指令可能有不同的复杂度,所以,每种指令的指令周期可能不同。CPU(CentralProcessUnit)周期也称机器周期,一般是从内存中读一个指令的最短时间。CPU周期又由若干个时钟周期组成。指令周期与时钟周期的关系如图1-3所示。图1-3指令周期与时钟周期通常把CPU执行指令的各个微操作遵循的时间顺序叫时序。时序图是形象地表示信号线上信息变化的时间序列的图形。组合逻辑控制和微程序控制是两种基本的控制方式。1.组合逻辑控制使用专门逻辑电路的控制方式,它的实现有硬件接线控制和可编程逻辑阵列两种。硬件连线法最直接,可以用较少的元件实现最快的速度,但是如果要更改,只有重新设计。可编程逻辑阵列采用低成本大规模集成电路的方式。组合逻辑控制灵活性很差,在复杂指令系统计算机中难以处理不断增加的复杂指令,但是它使用的电子原件少,在精简指令计算机中发挥了很大的作用。2.微程序控制为提高控制的灵活性,许多中央处理器采用了微程序控制的控制方法,先看如下的几个概念。微程序:微程序对应一组机器指令,若干个微指令序列形成一段微程序。而微指令又可细分为若干个微操作。微程序存在控制内存内。微操作:微操作是最基本的操作,可分为相容性微操作和不相容性微操作,这两种微操作的区别在于:是否能在一个CPU周期内并行执行。3.微指令格式微指令格式如图1-4所示。图1-4微指令的格式在如图1-4所示的前半部分,存放着对各种控制门进行激活或关闭的控制信息;后半部分是后续微指令的地址。微指令格式实现了数据结构中的单向列表。操作控制字段的格式有如下两种。水平型微指令:操作控制字段的每一位控制不同的控制门,可以在一个微指令中定义。执行多个并行的微操作的优点是效率高、灵活,执行时间短。垂直型微指令:与水平型微指令相比,其格式要短,一条微指令中包括的微操作少,只有1~2个。由于其指令字短,所以比较容易掌握。在实践中也常常使用混合型微指令,即水平型微指令和垂直型微指令的混合。1.1.5指令流、数据流和计算机的分类首先介绍指令流和数据流的定义。指令流:机器执行的指令序列。数据流:由指令流调用的数据序列,包括输入数据和中间结果。1.计算机根据多倍性的分类按照计算机在一个执行阶断能执行的指令或能处理数据的最大可能个数,人们把计算机分成4种,如表1-1所示。表1-1多倍性分类SISD(SingleInstructionSingleData,单指令流单数据流):这是最简单的方式,计算机每次处理一条指令,并只对一个操作部件分配数据。SIMD(SingleInstructionMultipleData,单指令流多数据流):具备SIMD点的常常是并行处理机,这种处理机具备多个处理单元,每次都执行同样的指令,对不同的数据单元进行处理。这种计算机非常适合于处理矩阵计算等。MISD(MultipleInstructionSingleData,多指令流单数据流):这种处理方式比较难以想象,有多个处理单元,同时执行不同的指令,但针对的是单一数据。有资料认为流水线处理机,是每个数据由不同操作部件对其进行处理。MIMD(MultipleInstructionMultipleData,多指令流多数据流):这是一种全面的并行处理,典型的是多处理机。这种计算机的设计和控制都很复杂。2.计算机按照程序流程机制的分类1)控制流计算机这是通常见到的计算机,使用程序计数器(PC)来确定下一条指令的地址。指令程序流由程序员直接控制,其主存是共享的,存储区可以为多指令修改(后面将会提到),这容易产生数据相关性,对并行性不利。2)数据流计算机在冯·诺依曼体系中,计算机是指令流驱动的,而数据流则是处于被动地位,这看起来合理,但在某些时候也不尽然。相对比的是数据流驱动,即一旦数据准备好,则立即开始执行相关的指令,这种非冯·诺依曼体系仍然在探索中。目前,对冯·诺依曼体系的改良已有相当的成果,即流水线技术和并行计算机。在数据流计算机中,数据不在共享的存储器中,而是在指令间传送,成为令牌。当需要使用该数据的指令收到令牌,开始执行之后,该令牌即消失,执行的指令将执行的结果数据当做新的令牌发送。这种方式不再需要程序计数器及共享的存储器,但需要检测数据可用性的专门部件,以建立、识别、处理数据令牌标记所需要的时间和空间。在其他一些方面,数据流计算机还有一些困难需要克服。例如,在数据流计算机中,由于没有程序计数器,使得程序的调试和诊断变得困难。因为没有共享的存储器,也就无法控制其分配,无法支持数组、递归等操作。3)归约机(ReductionsMachine)亦称需求驱动,是对一个操作结果的需求而启动的。归约机采用一种惰性计算的方式,操作只有在另一条指令需要这个操作的结果时才执行。例如,当计算5+(6×2-10)时,归约机并非先去计算6×2,而是先计算整个算式,碰到(6×2-10)再启动一个过程去计算它,最后碰到需要计算6×2,计算后一层层退回,得到整个算术的值。由于需求驱动可减少那些不必要的求值操作,因而可以提高系统效率。归约机是一种面向函数式语言,或以函数式语言为机器语言的机器。函数式语言程序没有诸如指令计数器、数据存储器和程序当前状态之类的概念。这种语言的程序是纯数学意义上的函数,它作用于程序的输入,得到的结果值就是程序的输出。因此它不具有副作用,保证了程序各部分的并发执行。1.1.6处理器性能计算机系统是一个极其复杂的系统,不同的指令系统、不同的体系实现方式、不同数量的硬件及不同部件的组合,都对计算机的性能造成这样或那样的影响。而且不同的应用对处理器的性能方面有不同的要求。这就要求对处理器性能评价需要综合考虑,全面地衡量处理器的性能。1.影响处理器性能的因素1)基本字长运算器进行计算的位数称为基本字长。字长越长,处理器计算的精度就越高,复杂度也越高。这是因为基本字长增加不但要增加运算器的复杂度,而且需要同时增加寄存器和总线的宽度。2)数据通路宽度数据通路宽度指的是数据总线一次所能并行传送的位数。它体现了信息的传送能力,从而影响计算机的有效处理速度。在处理器内部,数据通路的宽度一般是基本字长,而外部总线的数据通路宽度则不一定。如果外部数据通路宽度小于基本字长,那么运算器需要的数据,必需多次通过总线从主存传递到处理器内部。3)指令系统不同的指令系统对处理器的性能也有非常大的影响。在前面已经讨论过精简指令系统和复杂指令系统之间的不同。另外,有的处理器对一些专门的应用增加了专门的指令,使得这些处理器在处理专门任务时能够得心应手.4)时钟频率通常来说,提高处理器的时钟频率能够提高系统的性能,因为在同样的时间内,提高时钟频率,使得时钟周期减少,从而指令的执行时间减少。5)流水线技术处理器使用流水线技术能够使不同指令的不同执行部分,使用不同的处理单元同时执行。例如,将一个指令的取指、移码、取操作数、执行、写结果分别由不同的处理单元处理,能有效地提高处理器的性能。另外,处理器把这些不同的处理单元在硬件上重复,形成多条流水线,以期更加提高性能。无疑,流水线增加了处理器的复杂度,不但处理单元要分开,而且需要增加流水线管理部分的电路。6)内部数据/指令缓存使用存储器内部的数据或指令缓存,能够减少处理器访问较慢的内存的次数,从而提高处理器的性能。缓存当然越大越好。在缓存命令失败时,就需要从主存提取数据,这个判断需要增加控制电路。如果缓存太小或管理不当,有可能对性能造成负面影响。2.处理器性能的评价评价处理器性能可以是直接给出处理器每条指令的执行时间,或者是指令系统中的指令执行时间的某