考研复试1 计算机组成原理 计算机系统结构

一、计算机系统概述

1. 冯诺依曼计算机和存储程序(stored programs)的概念

计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5 大部件组成。

(1)存储器:分为主存储器(内存储器)和辅助存储器(外存储器)。主存储器存放程序和数据,辅助存储器中的信息必须调入主存后才能被CPU访问。

(2)运算器:主要功能是进行算术运算和逻辑运算,核心是算数逻辑单元(ALU)。运算器包含若干通用寄存器

(3)控制器:计算机的指挥中心。由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成。

  1. 指令和数据以同等地位存储在存储器中,并可按地址寻访。
  2. 指令和数据均用二进制代码表示。
  3. 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数的地址。
  4. 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序。
  5. 早期的冯诺依曼机 以运算器为中心,输入/输出设备通过运算器与存储器传送数据。现代计算机以存储器为中心。
  6. “存储程序”:将指令以代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

程序内存空间(代码段、数据段、堆栈段)_EnjoyCodingAndGame的博客-CSDN博客_代码段数据段

BSS,Block Started by Symbol,也是一种数据段

堆和栈的区别

2. 计算机的工作过程

把程序和数据装入主存储器。 将源程序转换成可执行文件。 从可执行文件的首地址开始逐条执行指令。

3. 在计算机系统结构中,什么是编译?什么是解释?

编译型语言(Compiled language programs)写的程序在执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,如果源程序不变以后要运行的话就不用重新翻译。

解释则不同,解释性语言的程序不需要编译,在运行程序的时候才翻译,翻译一句执行一句,不生成目标程序,这样解释性语言每执行一次就要翻译一次,效率比较低。

.java文件->编译->.class文件,编译成字节码(.class),字节码需要JVM解释,然后解释执行。Java很特殊,Java程序需要编译但是没有直接编译成机器语言,即二进制语言,而是编译成字节码(.class)再用解释方式执行。java程序编译以后的.class属于中间代码,并不是可执行程序exe,不是二进制文件,所以在执行的时候需要一个中介来解释中间代码,这就是所谓的java虚拟机(JVM)。

C语言编译过程分成四个步骤: (1)由.c文件到.i文件,这个过程叫预处理(preprocessing),将#include包含的头文件(header file直接拷贝到hello.c当中;将#define定义的宏(macro进行替换,同时将代码中没用的注释部分删除等。(2)由.i文件到.s文件,这个过程叫编译。(3)由.s文件到.o文件,这个过程叫汇编(assembly。(4)由.o文件到可执行文件,这个过程叫链接,将翻译成的二进制与需要用到库绑定在一块。

4. 指令的操作类型

(1)数据传送。(2)算术和逻辑运算。(3)移位操作。(4)转移操作。(5)输入输出操作。

5. 计算机的主要性能指标?

机器字长:机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数,通常与CPU 的寄存器位数、加法器有关。因此,机器字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。计算机字长通常选定为字节(8 位)的整数倍。

数据通路带宽:数据通路带宽是指数据总线一次所能并行传送信息的位数。这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU 内部的数据总线宽度(内部寄存器的大小)有可能不同。各个子系统通过数据总线连接形成的数据传送路径称为数据通路。

主存容量:主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数x字长(如512Kx16 位)来表示存储容量。其中, MAR 的位数反映存储单元的个数, MAR 的位数反映可寻址范围的最大值(而不一定是实际存储器的存储容量)。

运算速度:(1)吞吐量:指系统在单位时间内处理请求的数量。它取决于信息能多快地输入内存,CPU能多快的取指令,数据能多快的从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。(2)响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。通常包括CPU 时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O 操作、操作系统开销等的时间)。(3)主频和CPU 时钟周期。 CPU 时钟周期:通常为节拍脉冲或T周期,即主频的倒数,它是CPU 中最小的时间单位,每个动作至少需要1个时钟周期。 主频:机器内部时钟的频率。

第二章 数据的表示和运算

1. C语言中的浮点数类型及类型转换

从int 转换为float 时,虽然不会发生溢出,但int 可以保留32位, float 保留24位,可能有数据舍入

从int 或float 转换为double 时,因为double 的有效位数更多,因此能保留精确值。

从double 转换为float 时,因为float 表示范围更小,因此可能发生溢出。此外,由于有效位数变少,因此可能被舍入。

从float 或double 转换为int 时,因为int 没有小数部分,所以数据可能会向0 方向被截断(仅保留整数部分),影响精度。另外,由于int 的表示范围更小,因此可能发生溢出。

2. 计算机在字长足够的情况下是否能经确表示所有数字?

计算机采用二进制来表示数据,字长足够时可以精确表示任何一个整数,但是不能精确表示所有小数,比如0.1无法精确的用二进制表示,只能无限逼近。

3. 字长相同时,浮点数和定点数表示范围和精度

字长相同时,浮点数取字长的一部分作为阶码,所以表示的范围比定点数要大,也代表尾数部分的有效位数减少;而定点数字的全部位都用来表示数值本身,精度要比同字长的浮点数更大。

第三章 存储系统

1. 多级存储系统

为了解决存储系统大容量、高速度和低成本3 个相互制约的矛盾,在计算机系统中,通常采用多级存储器结构,在图中由上至下,位价越来越低,速度越来越慢,容量越来越大, CPU 访问的频度也越来越低。

实际上,存储系统层次结构主要体现在"Cache-主存”层次和“主存-辅存”层次。前者主要解决CPU 和主存速度不匹配的问题,后者主要解决存储系统的容量问题。在存储体系中, Cache 、主存能与CPU 直接交换信息,辅存则要通过主存与CPU 交换信息;主存与CPU 、Cache 、辅存都能交换信息。

存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。从CPU 的角度看, "Cache—主存”层次速度接近于Cache, 容量和位价却接近于主存。从“主存—辅存”层次分析,其速度按近于主存,容量和位价动接近于辅存。这就解决了速度、容量、成本这三者之间的矛盾。

在“主存—辅存”这一层次的不断发展中,逐渐形成了虚拟存储系统,在这个系统中程序员编程的地址范围与虚拟存储器的地址空间相对应。对具有虚拟存储器的计算机系统而言,编程时可用的地址空间远大于主存间。

存储器的三级结构

(1)高速缓冲存储器简称cache,它是计算机系统中的一个高速小容量半导体存储器。

(2)主存储器简称主存,是计算机系统的主要存储器,用来存放计算机运行期间的大量程序和数据。

(3)外存储器简称外存,它是大容量辅助存储器。

2. 半导体随机存储器

主存储器由DRAM 实现,靠处理器的那一层(Cache)则由SRAM 实现,它们都属于易失性存储器,只要电源被切断,原来保存的信息便会丢失。DRAM 的每比特成本低低于SRAM, 速度也慢于SRAM, 价格差异主要是因为制造DRAM 需要更多的硅。而ROM 属于非易失性存储器。

静态RAM靠触发器原理存储信息,只要电源不掉电,信息就不丢失;动态RAM靠电容存储电荷原理存储信息,即使电源不掉电,由于电容要放电,信息也会丢失,故需再生刷新。

(1)SRAM 的工作原理

通常把存放一个二进制位的物理器件称为存储元,它是存储器的最基本的构件。地址码相同时多个存储元构成一个存储单元。若干存储单元的集合构成存储体。

静态随机存储器(SRAM) 的存储元是用双稳态触发器(六晶体管MOS) 来记忆信息的,因此即使信息被读出后,它仍保持其原状态而不需要再生(非破坏性牍出)。SRAM 的存取速度快,但集成度低,功耗较大,所以一般用来组成高速缓冲存储器。

(2)DRAM 的工作原理

与SRAM 的存储原理不同,动态随机存储器(DRAM)是利用存储元电路中栅极电容上的电荷来存储信息的, DRAM 的基本存储元通常只使用一个晶体管,所以它比SRAM 的密度高很多。DRAM 电容上的电荷一般只能维持1~2ms, 因此即使电源不断电,信息也会自动消失。为此,每隔一定时间必须刷新,通常取2ms, 这个时间称为刷新周期。常用的刷新方式有3 种:集中刷新、分散刷新和异步刷新

  1. 集中式:在最大刷新间隔时间内,集中安排一段时间进行刷新,存在CPU访存死时间。
  2. 分散式:在每个读/写周期之后插入一个刷新周期,无CPU访存死时间。
  3. 异步式:是集中式和分散式的折中。

(3)只读存储器(ROM)的特点

ROM 和RAM 都是支持随机存取的存储器,其中SRAM 和DRAM 均为易失性半导体存储器。而ROM 中一旦有了信息,就不能轻易改变,即使掉电也不会丢失,它在计算机系统中是只供读出的存储器。ROM 器件有两个显著的优点:结构简单,所以位密度比可读写存储器的高;具有非易失性,所以可靠性高。

3. 有哪些技术能够提高CPU访存速度

为了提高CPU 访问存储器的速度,可以采用双端口存储器、多模块存储器等技术,它们同属并行技术,前者为空间并行,后者为时间并行。

(1)双端口存储器:双端口RAM 是指同一个存储器有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元,如图所示。当两个端口的地址不相同时,在两个端口上进行读写操作一定不会发生冲突。

(2)多模块存储器:常用的有单体多字存储器、多体并行存储器。

<1> 单体多字存储器

单体多字系统的特点是存储器中只有一个存储体,每个存储单元存储m 个字,总线宽度也为m 个字。一次并行读出m 个字,地址必须顺序排列并处于同一存储单元。单体多字系统在一个存取周期内从同一地址取出m条指令,然后将指令逐条送至CPU执行,即每隔1/m 存取周期, CPU 向主存取一条指令。显然,这增大了存储器的带宽,提高了单体存储器的工作速度。

缺点:指令和数据在主存内必须是连续存放的,一旦遇到转移指令,或操作数不能连续存放,这种方法的效果就不明显。

<2> 多体并行存储器:多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。多体并行存储器分为高位交叉编址(顺序方式)和低位交叉编址(交叉方式)两种。

4. 缓存机制

(1)使用Cache改善系统性能的依据是程序的局部性原理。时间局部性是指如果一个存储项被访问,则可能该项会很快被再次访问。空间局部性是指如果一个存储项被访问,则该项及其邻近的项也可能很快被访问。

(2)替换算法: 当Cache产生了一次访问未命中之后,相应的数据应同时读入CPU和Cache。但是当Cache已存满数据后,新数据必须替换(淘汰)Cache中的某些旧数据。最常用的替换算法有随机算法、先进先出算法(FIFO)和近期最少使用算法(LRU)

(3)写操作: 因为需要保证缓存在Cache中的数据与内存中的内容一致

<1> 写回法:当CPU写Cache命中时,只修改Cache的内容,而不立即写入主存,只有当此行被换出时才写回主存。这样减少了访存次数。

若未命中,则使用写分配法:加载主存中的块到Cache中,然后在Cache中更新,最后同步到主存。

<2> 全写法:当写Cache命中时,Cache与主存同时发生写修改。

若未命中,则使用非写分配法:只写入主存而不调入Cache。

(4)与主存的映射方式:

<1> 直接映射:主存数据块只能装入Cache中的唯一位置

<2> 全相联映射:可以把主存数据块装入Cache 中的任何位置

<3> 组相联映射:将Cache分为若干组,一个数据块可以装入一组内的任何一个位置。组相联的映射关系可以定义为 j = i mod Q. j 为Cache的组号,i 为主存的块号,Q是Cache的组数。假设每组有 r 个 Cache 行,则称之为 r 路组相联。

(5)指令和数据是放在同一个Cache中吗?

一级Cache的指令和数据一般分开存放,而二级Cache的指令和数据放在一起,因此有 L1 data Cache 和 L1 code Cache。

(6)标记项

每个Cache行有一个标记项,由有效位、修改位(脏位)、替换控制位、主存标记位

5. 虚拟存储器

(1)虚拟存储器的基本概念

虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩存的一种存储器系统

(2)页式虚拟存储器

页式管理:是把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置。页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映射机构将虚页号转换成主存的实际页号。

页式管理用一个页表,包括页号,每页在主存中起始位置、装入位等。页表是虚拟页号与物理页号的映射表.页式管理由操作系统进行,对应用程序员的透明的.

(3)段式虚拟存储器

段式管理: 把主存按段分配的存储管理方式。它是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间。段长可以任意设定,并可放大和缩小.

系统中通过一个段表指明各段在主存中的位置。段表中包括段名(段号)、段起点、装入位和段长等,段表本身也是一个段,段一般是按程序模块分的.

(4)段页式虚拟存储器

段页式管理:是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行。段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

(5)TLB(快表)

在虚拟存储器中进行地址变换时,需要虚页号变换成主存中实页号的内部地址变换这一过程。

缓存时首先要到主存查页表,然后才能根据主存物理地址访问主存的存取指令或数据。因此采用虚拟存储器机制后,访存的次数增加了。为了减少访存的次数,往往将页表中最活跃的几个页表项复制到高速缓存中,这种在高速缓存中的页表项称为快表(translation look aside buffer)

查表时,根据虚页表同时查找快表和慢表,当在快表中查到该虚页号时,就能很快找到对应的实页号,将其送入主存实地址寄存器,同时使慢表(页表)的查找作废,这使主存的访问速度没降低多少。如果在快表中查不到,则经过一个访主存的时间延迟后,将从慢表中查到的实页送入实地址寄存器,同时将此虚页号和对应的实页号送入快表。

6. 读内存和写内存

存储器的读出过程是:CPU先给出有效地址,然后给出片选信号和读命令,将被选中的存储单元内的信息读至数据线上,完成了读操作。

存储器的写入过程是:CPU先给出有效地址,然后给出片选信号和写命令,将写入的信息送至存储器的数据线上,这样,信息便可写入到被选中的存储单元。

7. 虚拟存储器的页面设置

(1)页面太小,页内剩余空闲空间较小,可节省存储空间,但会使得页表增大,而且页面太小时不能充分利用访存的空间局部性来提高命中率。

(2)页面太大,会减少页表空间,但页内剩余空闲空间较大,会浪费较多存储空间,页面太大还会使页面调入/调出的时间较长

8. 发生取指令 Cache 缺失的处理过程

(1)程序计数器恢复当前指令的值

(2)对主存进行读的操作

(3)将读入的指令写入 Cache 中,更改有效位和主存标记位。

(4)重新执行当前命令。

9. 其他 Cache

(1)多级 Cache。CPU 执行指令时,先到速度最快的一级 Cache 中寻找指令或数据;找不到时,再到速度次快的二级 Cache 中找;最后到主存中找。

(2)指令 Cache 和 数据 Cache. 指令和数据可以分别存储在不同的 Cache 中。其他电视允许 CPU 在同一个 Cache 存储周期内同时提取指令和数据,由于指令执行过程取指和取数据都有可能访问 Cache,因此这一特性可以保证不同的指令同时访存。

第四章 指令系统

1. 指令概述

一条指令包括操作码和地址码两部分:

操作码:分为定长操作码和不定长操作码。告诉要做什么操作(比如,加减乘除);

地址码:又称操作数字段,其任务是:指出操作数的地址、运算结果需存放的地址、下一条指令的地址。

一条指令的执行分为三个阶段:取指、分析和执行

2. 定长操作码和不定长操作码

(1)定长操作码:在指令字的最高位部分分配固定的若干位表示操作码。对于具有n位操作码字段的指令系统,最多能够表示2^n条指令。

(2)不定长操作码:操作码的长度随地址码个数的减少而增加,不同的地址数的指令可以具有不同长度的操作码。这样子可以在满足需要的前提下有效的缩指令字长。需要注意的是:不允许较短的操作码是较长的操作码的前缀;各条指令的操作码一定不可以重复。

3. 数据寻址方式

(1)隐含寻址:不明显地给出操作数的地址,而在指令中隐含操作数的地址。

(2)立即数寻址:指令的地址字段指出的不是操作数的地址,而是操作数本身,又称立即数。数据采用补码形式存放。

(3)直接寻址。指令字中的形式地址A是操作数的真实地址EA,即EA=A.

(4)间接寻址:间接寻址是相对于直接寻址而言的,指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,即 EA = (A).

(5)寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即 EA = R_i,操作数在由R_i所指的寄存器内。

(6)寄存器间接寻址:寄存器R_i中给出的不是一个操作数,而是操作数所在主存单元的地址,即 EA = (R_i)。用于结构体、数组、二维数组。

(7)相对寻址:把程序计数器(PC)的内容加上指令格式的形式地址A而形成的操作数的有效地址,即 EA = (PC) + A.

(8)基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A而形成操作数的有效地址,即 EA = (BR) + A.

(9)变址寻址:有效地址 EA 等于指令字的形式地址 A 与变址寄存器 IX 的内容之和,即 EA = (IX) + A,其中 IX 为变址寄存器(专用寄存器),也可用通用寄存器作为变址寄存器。

(10)堆栈寻址。

<1> 堆栈:存储器或专用寄存器组中一块儿特定的、按后进先出原则管理的存储区,该存储区中读/写单元的地址是用一个特定的寄存器给出的,该寄存器成为堆栈指针(SP)。

<2> 硬堆栈 指 寄存器堆栈,成本较高不适合做大容量的堆栈;从主存中划出一段区域来做堆栈是最合算且最常用的方法,这种堆栈成为软堆栈。

4. CISC和RISC的基本概念

1. CISC的主要特点

(1) 指令系统复杂庞大

(2) 指令长度不固定,指令格式种类多,寻址方式种类多;

(3) 可以访存的指令不受限制(RISC只有取数/存数指令访问存储器);

(4) 由于80%的程序只是用20%的指令,因此CISC各指令的使用频率差距太大

(5) 各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成

(6) 控制器大多数采用微程序控制

(7) 难以用优化编译生成高效的目标代码程序。

2. 80-20定律

典型程序中80%的语句都是使用计算机中20%的指令,而这20%的指令都属于简单指令。

3. RISC的主要特点

(1) 把复杂指令的功能用使用频率较高的简单指令实现

(2) 指令长度固定,指令格式种类少,寻址方式种类少;

(3) 只有取数/存数指令访问存储器,其余的指令操作在寄存器中完成;

(4) CPU中有多个通用寄存器(比CISC的多);

(5) 一定采用流水线技术,大部分指令在一个时钟周期内完成

(6) 控制器采用组合逻辑控制,不用微程序控制

(7) 采用优化的编译程序

4.  CISC与RISC

(1)CISC大多能实现软件兼容,即高档机包含了低档机的全部指令,并可加以扩充。

(2)RISC有更强的实用性。但是,早起很多软件都是根据CISC设计的,单纯的RISC将无法兼容。此外,现代CISC结构的CPU已经融合了很多RISC的成分,其性能的差距已经越来越小。

(3)CISC可提供更多的功能。

5. 中央处理器

1. CPU中的主要寄存器

可分为运算器中的寄存器和控制器中的寄存器

运算器中的寄存器

(1) 暂存寄存器:暂存从主存读来的数据,对程序员透明(用户不可见);

(2) 累加寄存器(ACC):是一个通用寄存器,用户可见,暂时存放ALU运算的结果信息,至少要有一个;

(3) 通用寄存器组:存放操作数和各种地址信息,用户可见;

(4) 状态寄存器(PSW):保存由算数指令和逻辑指令运行或测试的结果建立的各种条件码内容,用户可见。

控制器中的寄存器

(1) 程序计数器(PC):确定下一条指令的地址,具有寄存信息和计数两种功能;

(2) 指令寄存器(IR):保存当前正在执行的指令,指令划分为操作码和地址码字段,由二进制数字组成;

(3) 存储器数据寄存器(MDR):暂时存放由主存读出的一条指令或一个数据字,可作为CPU、内存和外部设备之间信息传送的中转站,并且补偿三者速度上的差别,此外在单累加结构的运算器中,存储器数据寄存器还可兼作操作数寄存器;

(4) 存储器地址寄存器(MAR):保存当前CPU所访问的内存单元的地址。

2. 数据通路

数据在功能部件之间传送的路径称为数据通路,它的功能是实现CPU内部的运算器和寄存器,以及寄存器之间的数据交换

数据通路的基本结构的两种方式

(1)CPU内部总线方式:将所有寄存器的输入端和输出端都连接到一条或多条公共的通路上。包括单总线结构(连接各部件的总线只有一条)和双总线结构和多总线结构(CPU中有两条或多条总线,此时数据的传递可以同时进行)。这种结构比较简单,但是数据传输存在较多的冲突现象,性能较低。

(2)专用数据通路方式:根据指令执行过程中的数据和地址的流动安排连接线路。避免了使用共享的执行,性能较高,但硬件量较大。

常见数据通路的数据传送

(1)寄存器之间的数据传送(by CPU内部总线);

(2)主存与CPU之间的数据传送(by CPU内部总线);

(3)执行算数或逻辑运算(算数逻辑单元ALU没有内部存储功能,因此执行算数逻辑运算时,要求ALU的两个输入端同时有效)。

3. 控制单元(CU)的设计

两种设计方式的对比

组合逻辑控制(硬布线逻辑控制):控制器处理速度块,但电路庞杂导致难以扩展,制造周期长,不灵活,可维护性差。

微程序控制:仿照程序设计的方法编制每个机器指令对应的微程序,每个微程序由若干条微指令构成,各微指令包含若干条微命令。扩展单元设计简单,指令添加容易(灵活),可维护性好,但速度较慢。

微程序控制的相关概念

微命令与微操作:一条机器指令可以分解成一个微操作序列(不可再分)。微命令是由控制部件向执行部件发出的各种控制命令,是构成控制序列的最小单位。微命令和微操作一一对应,微命令是微操作的控制信号,微操作是微命令的执行过程。

主存储器和控制存储器:主存储器用于存放程序和数据,在CPU外部,用RAM实现;控制存储器(CM)用于存放微操作,在CPU内部,用ROM实现。

微指令的编码方式

(1)直接编码(直接控制)方式:在微指令的微命令字段中每一位都代表一个微命令,不需要译码,因此简单、直观,执行速度快,操作并行性好。但微指令字长过长,造成控制存储器容量极大。

(2)字段直接编码方式:将微指令的微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,把相容性微命令组合在不同字段中。缩短了微指令字长,但是要通过译码电路后再发出微命令,比较慢。

(3)字段间接编码方式:一个字段的某些微命令需由另一个字段中的某些微命令来解释,而不是靠字段直接译码发出微命令。可以进一步缩短微指令字长,但削弱了微指令的并行能力。

(4)混合编码方式。

微指令的格式

(1)水平型微指令:一条水平型微指令定义并执行几种并行的基本操作。指令字中的一位对应一个控制信号,有输出时为1,否则为0。

(2)垂直型微指令采用类似机器指令方式,在微指令中设置微操作码、目的地址和源地址字段

(3)混合型微指令

4. 中断

什么是中断?

在CPU运行过程中,由于内部或外部某个随机事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,完成后返回原来的程序继续执行

设计中断系统需考虑哪些主要问题?

(1) 设立必要的中断源,确定它们提出的中断请求的方式

(2) 根据急迫程度的不同,规定好中断源的优先级别,以确定当几个中断源同时请求时,处理机能有一个先后响应次序

(3) 当处理机响应中断后,需要把被中断程序的现场,断点保存起来,以便中断处理结束后能返回原程序

(4) 恢复现场,返回原程序.

什么是中断隐指令?有哪些功能?

答:在一周期中依靠硬件实现程序切换,并不需要执行程序指令,即不需要程序员编程序实现,所以称为中断隐指令操作。 1)关中断;2)保存断点到堆栈;3)引出中断服务程序,即取出中断服务程序的入口地址送程序计数器(PC)。

什么是多重中断?实现多重中断的必要条件是什么?

多重中断是指:当CPU执行某个中断服务程序的过程中,发生了更高级、更紧迫的事件,CPU暂停现行中断服务程序的执行,转去处理该事件的中断,处理完返回现行中断服务程序继续执行

实现多重中断的必要条件是:在现行中断服务期间,中断允许触发器为1,即开中断。

中断屏蔽技术

在多重中断系统中,CPU响应中断后不希望有级别的其他中断请求的干扰,采用屏蔽技术可屏蔽本级和更低级的中断请求,使中断处理可靠进行。

第六章 总线

1. 基本概念

总线基本概念

总线定义:多个部件分时共享的公共信息传送线路(物理线路)

特点:分时+共享。

注意,某个总线周期内,总线上只能有一个主设备控制总线,选择一个从设备与之进行通信,或对所有设备进行广播通信,不存在多对主从设备同时通信。

2. 总线仲裁

总线仲裁:即确定哪个设备可以使用总线

(1) 链式查询方式:总线上的所有部件公用一根总线请求线,当由部件请求使用总线时,均需经此线发送请求信息到总线控制器,若总线不忙,则允许请求,否则等待。

优先级判别方式:离总线控制器越近的部件,其优先级越高。

(2) 计数器查询方式:采用一个计数器控制总线的使用权。

优先级判别方式:当总线控制器接收到总线请求信号判断总线不忙时,计数器开始计数,计数值通过一组地址线发向各个部件。当地址线上的计数值与请求使用总线设备的地址一致时,该设备获得总线控制权。同时,终止计数器的计数及查询工作。

(3) 独立请求方式:每一个设备均有一对总线请求信号和总线同意信号。

优先级判别方式:在总线控制器中排队,等待批准。

3. 总线定时

同步定时方式 :系统采用一个统一的时钟信号来协调发送和接受双方的传送定时关系。时钟信号通常由中央处理器的总线控制器发出,然后送到总线上的所有部件。

异步定时方式 :允许各模块的速度不一致,没有公共的时钟标准,不要求所有部件严格地统一操作时间,而是采用应答方式(需要在主从模块之间增加两条应答线)。

半同步通信总线方式,保留同步通信的特点,又能采用异步应答方式连接速率相差较大的设备。

4. 总线的优缺点

(1)优点

  1. 简化系统结构,减少连线数目
  2. 便于接口设计,所有与总线连接的设备均采用类似的接口
  3. 便于系统的扩充、软件设计、故障诊断维修

(2)缺点

  1. 总线所有设备分时共享同一总线,总线上多个设备同时要求使用总线就会导致总线的冲突

计算机系统结构

一、 流水线技术

1. 流水线概述(王道考研)

<1> 流水线方式特点

  1. 流水线每个功能段部件后面都要有一个缓冲寄存器,或称锁存器,起作用是保存本流水段的执行结果,供给下一流水段使用
  2. 流水线中个功能段的时间应尽量相等,否则将引起堵塞、断流
  3. 只有连续不断地提供同一种任务时才能发挥流水线的效率,所以在采用流水线方式工作的处理机中,要在软件和硬件设计等多方面尽量为流水线提供连续的任务
  4. 流水线需要有装入时间和排空时间。装入时间是指第一个任务进入流水线到输出流水线的时间。排空是指最后一个任务进入流水线到输出流水线的时间。

<2> 流水线的分类

(1)按照使用级别分类

  1. 部件功能级:将复杂的算术逻辑运算组成流水线流水线工作方式。如将浮点加法操作分为求阶差、对阶、尾数相加和结果规格化等四个子过程
  2. 处理机级:把一条指令解释过程分成多个子过程,如取指、译码、执行、访存和写回五个子过程。
  3. 处理机间流水级:宏流水,其中每个处理机完成某一专门任务,各个处理机得到的结果需存放在下一个处理机共享的存储器中。

(2)按功能

  1. 单功能流水线、多功能流水线

(3)按照连接方式

  1. 静态流水线:流水线的各段只能按同一种功能的连接方式工作。
  2. 动态流水线:当某个段正在实现某种运算时,另一些段正在进行另一种运算。

(4)按各个功能段之间是否有反馈信号

  1. 线性流水线:从输入到输出,每个功能段只允许经过一次,不存在反馈回路
  2. 非线性流水线:存在反馈回路,从输入到输出的过程中,某些功能段将数次通过流水线,比如适合进行线性递归的运算。

<3> 影响流水线的因素

(1)数据冲突(数据冒险):下一条指令会用到这一条指令的运算结果

  1. 把遇到数据相关的指令及其后续指令都暂停一至几个周期。如硬件阻塞(stall)和软件插入“NOP”指令两种方法。
  2. 设置相关专用通路,即不等前一条指令把计算机过写回寄存器组,下一条指令也不再都寄存器组,而直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算。这叫数据旁路技术。
  3. 通过编译器对数据相关的指令编译优化的方法,调整指令顺序解决数据相关

(2)控制冲突(控制冒险)

一条指令要确定下一条指令的位置,比如执行转移、调用或返回等指令时会改变PC值,造成断流。

  1. 延迟转移技术和指令取消技术(单流水线处理机)
  2. 对转移指令进行分支预测,尽早生成转移目标地址。
    1. 静态预测:转移预测的方向是确定的;在程序实际执行过程中,转移预测的方向不能改变。
      1. 软件“猜测法”:通过编译器尽量降低转移成功的概率
      2. 硬件“猜测法”:通过改变硬件结构来降低转移指令对流水线的影响
      3. 两个先行指令缓冲栈:预取转移成功和不成功两个控制流方向上的指令目标
    2. 动态预测:根据程序执行的历史情况,进行动态预测调整,有较高的预测准确率。
      1. 在指令Cache中记录转移历史信息(记录最近一两次转移是否成功的历史信息)
      2. 设置转移目标地址缓冲栈(用高速缓冲栈保存最近k条转移指令的“转移历史表”和转移目标地址)
  3. 加快和提前形成条件码:可在运算开始或中间产生条件码
  4. 提高转移方向的猜准率

<4> 超标量流水线

(1)超标量流水线技术

每个时钟周期内可并发多条独立指令,即以并行操作方式将两条或多条指令编译并执行,为此需配置多个功能部件。

超标量计算机不能调整指令的执行顺序,因此通过编译优化技术,把可并行执行的指令搭配起来。

(2)超流水线技术

在一个时钟周期内再分段,在一个功能部件使用多次。不能调整指令的执行顺序,靠编译程序解决优化问题。

(3)超长指令字

由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令合成一条具有多个操作码字段的超长指令字。

2. 重叠技术

指令有三次执行方式:顺序执行、一次重叠、二次重叠

3. 先行控制技术

(1)处理机内部的并行性:

  1. 空间并行性:即在一个处理机内设置多个独立的操作部件,并让这些操作部件并行工作,这种处理机称为多操作部件处理机和超标量处理机
  2. 时间并行性:采用流水线技术。

(2)一条指令的执行分为三个阶段:取指、分析和执行。

(3)基本思想:

  1. 使分析部件和执行部件能分别连续不断地分析和执行指令,为了保证分析和 执行部件的连续工作,在系统中通常要增设指令缓冲栈、先行操作栈、数据缓冲栈等 。
  2. 是预处理技术和缓冲技术的结合,即通过对指令流的先行控制,使指令分析器和执行部件能尽量地连续工作。其缓冲部件一般采用先进先出的工作方式。

(4)先行缓冲栈

  1. 先行指令缓冲栈:在主存 - 指令分析器之间的一个缓冲部件,用于平滑主存和指令分析器的工作。保证指令分析器顺序取指令的都能从先行指令栈中取出,而不是从内存取。
  2. 先行操作栈:在运算控制 - 指令分析器之间的一个缓冲部件。指令分析器每预处理完一条指令,就把指令送入先行操作栈运算器运行当前指令后,从先行操作栈中取下一条指令。
  3. 先行读数栈:在运算器 - 内存之间的一个缓冲存储器。
  4. 后行写数栈:在内存 - 运算器之间的一个缓冲部件。

4. 相关

(1)概念

在程序中相近的指令之间存在某种关系,这种关系可能影响流水线的执行。

(2)数据相关:

在执行本条指令的过程中,如果用到的操作数是前面指令的执行结果,则必须等到前面的指令把结果写到主存或通用寄存器中后,本条指令才能执行。

  1. 写读数据相关
  2. 读写数据相关
  3. 写写数据相关

(3)控制相关:

条件分支指令,转子程序指令、中断等引起的相关。

  1. 由条件转移或程序中断引起的相关被称为全局相关。在流水线中,全局相关对流水线的吞吐率和效率的影响大得多。
  2. 条件转移指令在一般程序中所占的比例相当大。
  3. 中断发生在程序中的哪一条指令,发生在指令执行过程中的哪一个功能段都是不确定的。
  4. 关键问题:要确保流水线能够正常 工作,减少因“断流”引起的吞吐率和效率的下降。

5. 流水线处理机

(1)指令流水线

是使得多条指令重叠执行的一种处理器实现技术。

  1. 指令执行分成若干个阶段——流水级;
  2. 每个流水级由各自独立的功能部件(流水功能部件)完成,任一时刻各流水级并行地对不同指令作不同阶段的操作;
  3. 各流水级在同一时钟控制下在同一时刻将本级的输出数据(信号)送到下一流水级;

(2)非线性流水线的调度

非线性流水线中,一个任务可能要使用同一功能段多次,因此,可能发生流水线的冲突。为了避免冲突,需要找出一个最小的循环周期来对任务进行调度。

(3)乱序流动

  1. 为了充分发挥流水线的效率,在发生数据相关时,要允许没有数据相关的后 续指令进入相关指令所占用的功能段执行,并超越相关的指令继续往前流动, 这种控制方式称为乱序流动方式。
  2. 在流水线的输入端,指令是按照它的地址从小到大顺序进入流水线的;但在流水线的输出端,指令执行完成的顺序可能是混乱的;

二、超标量处理机

1. 超标量处理机特征

1.1 单发射与多发射

(1)单发射:一个时钟周期内只从存储器中取出一条指令(IF),并且只对一条指令进行译码(ID),只执行一条指令(EX),只写回一个运算结果。

(2)多发射:一个时钟周期内能够同时发射多条指令的处理机。

1.2 超标量处理机基本结构

(1)最基本要求: 必须有两套或两条以上完整的指令执行部件。

(2)典型结构:多个操作部件+比较大的通用寄存器堆+高速缓存

(3)必须解决多流水线的调度和操作部件的资源冲突等问题。

2. 超标量处理机的设计考虑

(1)指令级并行性和机器并行性

  1. 指令级并行性:顺序中的指令时独立的并可通过重叠来并行执行
  2. 机器并行性:处理器获取指令级并行性好处的能力大小

(2)指令发射策略——多流水线调度

  1. 多条流水线同时工作时,指令的发射顺序和完成顺序对提高超标量处理机的性能非常重要。
  2. 如果指令的发射顺序是按照程序中的指令排列顺序进行的,称为顺序发射,否则,称为乱序发射。
  3. 如果指令的完成顺序必须按照程序中的指令排列顺序进行,称为顺序完成;否则,称为乱序完成。
  4. 主要有三种发射策略:顺序发射顺序完成、顺序发射乱序完成、乱序发射乱序完成

(3)转移预测

  1. Intel 80486:既取位于转移指令之后的下一顺序指令又推测地取转移目标指令
  2. RISC机器采用延迟转移策略
  3. 超标量机器较少采用延迟转移策略。原因: 多条指令需要在延迟槽中执行,会引起几个指令相关性问题。超标量机器又转回到RISC以前的技术——转移预测。

三、向量处理机

1. 向量流水的主要特点

一个向量中各个元素是互不相关的,对向量中的各个元素(即 标量)一般又都执行同一种操作,只要存储器能及时供应数据,由于结果不影响到其他向量元素,就能充分发挥流水线的效能,每拍从流水线流出一个结果。

因此,把向量数据表示和流水线技术相结合,就能形成具有较高性能价格比的向量流水处理机。这种处理机不仅能处理单条流水线上的数据,还能并行地处理多条流水线上独立无关的数据。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值