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

1.3.1 考点精讲

1.计算机体系结构分类

计算机体系结构分类有多种方式,其中最为常见的是:Flynn分类法与冯氏分类法。而考试中主要考查的是Flynn分类法。

Flynn分类法是根据指令流、数据流和多倍性 3 方面来进行分类的,如表 1-1 所示。

表 1-1 Flynn分类法

2.计算机的硬件组成

计算机硬件系统是依照冯·诺伊曼所设计的体系结构,即由运算器、控制器、存储器、输入设备和输出设备 5 大部件组成,如图 1-2 所示。

其中运算器和控制器组成中央处理器(CPU)。运算器负责完成算术、逻辑运算功能,通常由ALU(算术/逻辑单元)、寄存器、多路转换器、数据总线组成;控制器则负责依次访问程序指令,进行指令译码,并协调其他设备,通常由程序计数器(PC)、指令寄存器、指令译码器、状态/条件寄存器、时序发生器、微操作信号发生器组成。

下面介绍几个主要部件的功能。

程序计数器 :用于存放下一条指令所在单元的地址的地方。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加 1。当遇到转移指令时,后继指令的地址(即PC的内容)必须从指令寄存器中的地址字段取得。在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。因此程序计数器的结构是具有寄存信息和计数两种功能的结构。

图 1-2 计算机硬件组成结构示意图

指令寄存器 :用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器中,然后再传送至指令寄存器。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的(下一词条将详细介绍其工作过程)。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。

指令译码器 :译码是编码的逆过程,在编码时,每一种二进制代码都赋予了特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义“翻译”出来的过程叫作译码,实现译码操作的电路称为译码器。或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其原来含义的电路。

3.指令系统基础

在计算机中,CPU都会定义出自己特定的指令系统,不过都遵循着统一的标准格式。指令的基本格式是由操作码和地址码两个部分组成的。操作码指出该指令要完成什么操作,地址码则是提供原始的数据。指令系统中定义操作码的方式可以分为规整型(定长编码)和非规整型(变长编码)两种,如表 1-2 所示。

表 1-2 指令系统操作码定义分类方法比较表

而在指令系统中用来确定如何提供操作数或提供操作数地址的方式称为寻址方式和编址方式。操作数可以存放在CPU中的寄存器(用寄存器名操作)、主存储器(指出存储单元地址)、堆栈(先进后出的存储机制,用栈顶指针SP来标出其当前位置)、外存储器或外围设备中。不过在运算时,数据均在主存储器中,操作数可以采用以下几种寻址方式。

(1)立即寻址方式

指令的地址字段指出的不是操作数的地址,而是操作数本身。这种方式的特点是指令执行时间很短,不需要访问内存取数。题目中所说的“操作数包含在指令中的寻址方式”就是立即寻址。

例如,单地址的移位指令格式为:

这里D不是地址,而是一个操作数。F为标志位,当F=1 时,操作数进行右移;当F=0时,操作数进行左移。

(2)直接寻址方式

直接寻址方式的特点是:在指令格式的地址字段中直接指出操作数在内存的地址D。

采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,即E=D。因此通常把形式地址D又称为直接地址。此时,由寻址模式给予指示。如果用S表示操作数,那么直接寻址的逻辑表达式为S=(E)=(D)。

(3)间接寻址方式

间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。

如果把直接寻址和间接寻址结合起来,指令有如下形式。

寻址特征位I=0,表示直接寻址,这时有效地址E=D;I=1,表示间接寻址,这时有效地址E=(D)。

间接寻址方式是早期计算机中经常采用的方式,但由于两次访问内存,影响指令执行速度,现在已不大使用。

(4)寄存器寻址方式和寄存器间接寻址方式

当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。这也就是题目中所说的“操作数在寄存器中的寻址方式”。

寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。这也就是题目中所说的“操作数的地址在寄存器中的寻址方式”。

(5)相对寻址方式

相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言的。

采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。

此时形式地址D通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。

4.CISC与RISC

为了提高操作系统的效率,人们最初选择了向指令系统中添加更多、更复杂的指令,而随着不断的升级和向后兼容的需要,指令集也越来越大。这种类型的计算机,我们称之为复杂指令计算机CISC。而后来研究发现,计算机指令系统如果使用少量结构简单的指令会提高计算机的性能,这就是精简指令集计算机RISC。计算机执行程序所需的时间 P 由 3 方面因素决定:编译后产生的机器指令数 I 、执行每条指令所需的平均周期数CPI,以及每个机器周期的时间 T 。它们的关系是 P = I ×CPI× T 。RISC正是通过简化指令的途径使计算机结构更合理,减少指令执行周期数,提高运算速度。虽然RISC编译后产生的机器指令数( I )增多了,但指令所需的周期数(CPI)和每个周期的时间( T )都可以减少。它与CISC可谓各有特色,如表 1-3 所示。

表 1-3 指令系统操作码定义分类方法比较表

典型的RISC处理器包括:DEC的Alpha 21164、IBM的Power PC620、HP的PA-8000、SGI MIPS分部的TS、Sun的Ultra SPARC。目前RISC处理器技术的发展方向是采用并行处理技术(包括超级流水线、超级标量、超长指令字)大幅度提高运算速度。

5.流水线

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。

指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称为流水级或流水节拍,这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。

如图 1-3 所示,IF、ID、EX、WD分别是流水线的流水部件。

图 1-3 几个部件组成的流水线

流水线要求所有的流水级部件必须在相同的时间内完成各自的子过程。在流水线中,指令流动一步便是一个机器周期,机器周期的长度必须由最慢的流水级部件处理子过程所需的时间来决定。

那么我们为什么要提出流水线这个概念,以及流水线是如何提高系统吞吐量的呢?下面我们来看几个图,概念自然就清楚了。

图 1-4 是一个非流水线结构系统执行指令时空图。

图 1-4 非流水线结构系统执行指令时空图

从图 1-4 中可以看到,任意一个系统时间都有大量的设备处于空闲状态,如第一个时间段有ID、EX、WB空闲,则第二个时间段有IF、EX、WB空闲。

再来看采用了流水线结构指令的时空图,如图 1-5 所示。

图 1-5 流水线结构指令时空图

显然,采用流水线可以大大提升系统资源的利用率,以及整个系统的吞吐量。

在考试中,流水线方面的考题主要考查两个知识点:计算流水线执行时间和分析影响流水线的因素。

(1)计算流水线执行时间

假定有某种类型的任务,共可分成 N 个子任务,执行每个子任务需要时间 t ,则完成该任务所需的时间即为 Nt 。若以传统的方式,则完成 k 个任务所需的时间是 kNt ;而使用流水线技术执行,花费的时间是 Nt +( k −1) t 。也就是说,除了第一个任务需要完整的时间外,其他都通过并行,节省下了大量的时间,只需一个子任务的单位时间就够了。

另外要注意的是,如果每个子任务所需的时间不同,则其速度取决于其执行顺序中最慢的那个(也就是流水线周期值等于最慢的那个指令周期),要根据实际情况进行调整。

例如,指令流水线把一条指令分为取指、分析和执行 3 部分,且 3 部分的时间分别是取指 2ns,分析 2ns,执行 1ns。那么,最长的是 2ns,因此 100 条指令全部执行完毕需要的时间就是:(2ns+2ns+1ns) +(100−1 )×2ns=203ns。

另外,还应该掌握几个关键的术语:流水线的吞吐率(等于任务数/完成时间),加速比(不采用流水线的执行时间/采用流水线的执行时间)。

(2)影响流水性的主要因素

如图 1-5 所示,流水线的关键在于“重叠执行”,因此如果这个条件不能够满足,流水线就会被破坏。这种破坏主要来自两种情况。

●转移指令:因为前面的转移指令还没有完成,流水线无法确定下一条指令的地址,因此也就无法向流水线中添加这条指令。从这里的分析可以看出,无条件跳转指令是不会影响流水线的。

●共享资源访问的冲突:也就是后一条指令需要使用的数据,与前一条指令发生的冲突,或者相邻的指令使用了相同的寄存器,这也会使得流水线失败。

● 响应中断:当有中断请求时,流水线也会停止。对于这种情况有两种响应方式,一种是立即停止——精确断点法,能够立即响应中断;另一种是流水线中的指令继续执行,不再新增指令到流水线——不精确断点法。 zua7gKkrjdnx7G5mnCu1tdD3amadKOLK1F7EE2d/5Z6Jqcw/m3H9orb2iTSrMfVn

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