计算机组成原理知识点梳理-考试内容汇总和例题

本文深入探讨计算机组成原理,涵盖冯诺依曼计算机特点、程序执行的四个阶段、运算方法(原码、补码、反码、移码)、浮点数运算、指令周期、数据通路、存储层次结构以及I/O控制方式。通过实例解析了数据冒险、结构冒险的解决策略,阐述了存储器的不同层次及其特性,最后讨论了不同类型的I/O编址和数据传送控制方式。
摘要由CSDN通过智能技术生成

计算机组成原理知识点梳理

计算机组成原理习题,复习时可对照左边习题

计算机系统概论

冯诺依曼计算机的特点

1.采用“存储程序”的工作方式
2.计算机由运算器、控制器、存储器、输入设备、输出设备5个基本部件组成
(CPU、MainMemory、I/O)
3.存储器不仅能存放数据,而且能存放指令,计算机能区分它们;控制器应能控制指令的自动执行;运算器应能进行加、减、乘、除4种基本运算,也能进行逻辑运算;操作人员可通过输入输出设备使用计算机。
4.计算机内部以二进制形式表示指令和数据

计算机系统的层次结构

自然语言描述的一个应用(问题),首先将问题转化为算法,其次将算法转化为用编程语言实现的程序,然后由计算机将高级语言程序转换成计算机能够理解的机器语言程序,机器语言程序就是一个ISA(指令系统,也叫做微体系结构)规定的指令的序列,微体系结构最终由逻辑电路实现。

img

程序执行的过程

img
以c语言程序为例,分为以上四个阶段。

预处理阶段:预处理程序对源程序中以字符#开头的命令进行处理,例如将#include命令后面以.h文件嵌入到源程序文件中,结果还是一个源程序文件(以.i为扩展名)。
编译阶段:编译程序对预处理过的源程序进行编译,生成一个汇编语言源程序(以.s为扩展名)
汇编阶段:汇编程序as对汇编语言程序进行汇编,生成一个可重定位目标文件(以.o为扩展名),它是一种二进制文件。
链接阶段:链接程序ld将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,例如上图,hello.o和printf.o进行合并生成可执行文件hello(.exe)。


运算方法和运算器

原码、补码、反码、移码

原码:分为符号位和数值位,数值位正数和负数一样,符号位为1则为负,为0则为正,注意:+0和-0有两种表示方式,分别是10000000和00000000.
补码:正数与原码一样,负数为各位取反,末位+1.
反码:补码的末位-1
移码:设E为指数,其移码表示位数为n,则[E]移=2^(n-1)+E,
(1)E的范围为-2^(n-1) ~ 2^(n-1) - 1.
(2)移码0的真值为-2^(n-1),
[-2^(n-1)]移=000…0.

IEEE754单精度标准

尾数带一个隐藏位,偏置常数用2^(n-1)(127)。
这里不理解没关系,因为后面单精度浮点数运算时会涉及到。

数据的存放方式(大端存储与小端存储)

简单的判断方法是,看低地址存什么:

比如说有01 23 45 67H,这段数要存在0800H~0804H里面。

大端存储:低地址存高有效位(存高)(即0800H~0804H里面依次为: 01 23 45 67)

小端存储:低地址存低有效位(存低)(即0800H~0804H里面依次为: 67 45 23 01)

定点数的补码加减法和溢出判断

将定点数转化为补码相加,比如说-7-6转化为 -7的补码 加上 -6的补码(即1001+1100=10101).

溢出判断:

(1)若 符号位产生的进位最高数值位向符号位的进位 不同,则产生溢出。(2)若两个加数的符号位相同,且与和的符号位不同,则产生溢出。

用以上两种判别方法分别来试一下:

比如 四位二进制 为例,9+7=16,则如下:

01001+00111 = 10000,溢出。

单精度浮点数的运算

1.将十进制单精度浮点数化为二进制(32位分为1,8,23分别表示符号位、阶码、尾数),这里需要用到上面的移码的知识。
2.对阶,往高的对,然后小的一方尾数右移,然后尾数相加,接着规格化得到结果。


指令系统

指令周期的概念

将一条指令从取出到执行完毕所需要的时间称为指令周期。


中央处理机

CPU控制器的两种类型和特点

硬连线路控制器微程序控制器

硬连线路控制器
优点是速度快,适合于实现简单或规整的指令系统。
缺点是它是一个多输入/多输出的巨大逻辑网络,结构庞杂,实现困难,维护不易。
(单周期控制器和多周期控制器)

微程序控制器优点:简化设计、灵活、易修改、易维护;缺点:速度慢。

指令执行的具体过程(数据通路与控制信号)

指令执行所用到的元件有两类:组合逻辑元件(也称操作元件)和存储元件(也称状态元件)。连接这些元件的方式有两种:总线方式和分散连接方式。
数据通路 就是由操作元件和存储元件通过总线或分散方式连接而成的进行数据存储、处理和传送的路径。

可以简单地分别是哪种类型的指令:R-type型使用两个寄存器作为源寄存器,I-type型只使用一个寄存器作为源寄存器,J-type型是跳转型指令。

以下给出几个数据通路的例子(注意红色字母,那是用来控制部件是如何执行的):

上图是R-type型指令的数据通路的add例子,汇编程序:add rd,rs,rt

rs的值通过busA,rt的值通过busB分别进入ALU,然后进行加运算后将结果返回到寄存器rd。

在这里插入图片描述

上图是I-type型指令的数据通路的 或运算例子,rd和rt通过一个多路选择器,给出目的寄存器的地址送Rw,rs的值通过busA送ALU,另一边立即数扩展后也通过多路选择器送入ALU(这里的busB的传输被多路选择器挡了),在ALU中进行 或运算后将结果通过busW送寄存器(Rw)。

在这里插入图片描述

上图中,rs中的内容和立即数(16位扩展成32位)分别通过busA和busB进入ALU进行加法运算,得到的结果通过Adr送到DataMemory中得到对应内容,再送到多路选择器再送到寄存器rt中。

在这里插入图片描述

上图中,rs的值通过busA送ALU,rt的值通过busB送ALU(ALUSrc=0),进行减运算得到零标志位,送零标志位,如果为0,则与立即数运算更改pc的值进行跳转。

下面给出一个例子验证一下你自己是否看懂,如果上面理解了以下的也很简单:

在这里插入图片描述


指令流水线

流水线冒险的几种类型:资源冲突、数据相关、控制相关(改变指令流的执行方向)

三种冒险方式

数据冒险结构冒险控制冒险

在这里插入图片描述

结构冒险的解决方式

每个部件只在特定周期使用、设置多个部件避免冲突、将寄存器的读口与写口区别开。

数据冒险的解决方式

有五种:硬件阻塞、软件插入“NOP”指令、合理实现寄存器堆的读/写操作(前一半写后一半读)、转发(旁路)技术、编译优化(调整指令顺序)。
这里主要讲转发+阻塞

数据冒险的种类:相关的数据是ALU结果,可以通过转发解决;
转发(旁路):把数据从流水段寄存器中直接取到ALU的输入端

例子:
在这里插入图片描述

画出流水线:

在这里插入图片描述

相关的数据是DM读出的内容,随后的指令被阻塞一个时钟
在这里插入图片描述

需要阻塞的满足条件:前面指令为Load并且前面指令的目的寄存器等于当前刚取出指令的源寄存器:

在这里插入图片描述


存储器

各种存储器的特点

这里只提下面四个

寄存器高速缓存主存外存

寄存器:封装在CPU里,用于存放当前正在执行的指令和使用的数据;用触发器实现,速度快、容量小(几十个)
高速缓存(cache):位于CPU内部或附近,用来存放当前要执行的局部程序段和数据;速度可与CPU匹配,容量第二小(几MB)
内存(MainMemory):位于CPU之外,用来存放已被启动的程序及所用的数据;
用DRAM(注:DRAM每隔一段时间要刷新一次)实现,速度较快,容量较大(几GB)
辅存(外存):位于主机之外,用来存放暂不运行的程序、数据或存档文件;
用磁表面或光存储器实现,容量大速度慢

存储层次结构

在这里插入图片描述
这部分硬记下来,越靠近CPU越快。

Cache-主存地址三种映射方法,以及命中

直相联全相联N路-组相联
唯一映射任意映射N-路映射

例题如下:

在这里插入图片描述

在这里插入图片描述

二路组相联映射:

在这里插入图片描述


I/O部分

I/O编址的两种编址方式

独立编址统一编址

独立编址对所有的I/O端口单独进行编号,使它们成为一个独立的I/O地址空间。这种情况下,指令系统中需要有专门的输入输出指令来访问I/O端口,输入输出指令中地址码部分给出I/O端口号。

统一编址:I/O地址空间与主存地址空间统一编址,即主存地址空间分出一部分地址给I/O端口进行编号,因为I/O端口和主存单元再同一个地址空间的不同分段中,根据地址范围就可区分访问的是I/O端口还是主存单元,因而无须设置专门的I/O指令,只要用一般的方寸指令就可以存取I/O端口。

IO数据传送控制方式(三种)

程序直接控制、中断控制和DMA控制。
DMA全称Direct Memory Access,DMA控制器向CPU请求的是总线使用权,DMA方式需要用中断处理进行辅助操作。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值