计算机组成原理-第五章 中央处理器【期末复习|考研复习】

本文主要是介绍计算机组成原理-第五章 中央处理器【期末复习|考研复习】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

总结整理不易,希望大家点赞收藏。

给大家整理了一下计算机组成原理中的重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王道的计算机组成原理和西电的计算机组成原理。


文章目录

  • 前言
  • 第5章 中央处理器及指令
    • 5.1 CPU的功能和基本结构
      • 5.1.1 CPU功能
    • 5.2 指令执行过程
      • 5.2.1 取指周期
      • 5.2.2 间址周期
      • 5.2.3 执行周期
      • 5.2.4 中断周期
    • 5.3 指令执行方案
    • 5.4 数据通路
      • 5.4.1 数据通路基本结构
    • 5.5 控制器
      • 5.5.1 CPU控制方式和功能
      • 5.5.2 硬布线控制器
      • 5.5.3 微程序控制器
      • 5.5.4 微指令的编码方式
      • 5.5.5 微指令的格式
      • 5.5.6 取指操作不同控制器流程
      • 5.5.7 微程序控制器和硬布线控制器
    • 5.6 指令流水线
      • 5.6.1 流水线
      • 5.6.2 影响流水线的因素
  • 6 练手题
    • 6.1
    • 6.2
    • 6.3
    • 6.4
    • 6.5
  • 总结


第5章 中央处理器及指令

5.1 CPU的功能和基本结构

5.1.1 CPU功能

CPU由运算器和控制器组成。
运算器由ACC累加器,MQ乘商寄存器,X通用寄存器,ALU算术逻辑单元构成。
控制器由PC程序计数器,IR指令寄存器,CU控制单元构成

5.2 指令执行过程

CPU从主存中取出并执行一条指令所需的全部时间称为指令周期 ,也就是CPU完成一条指令的时间。
一个指令周期通常包含若干机器周期,一个机器周期又包含若干时钟周期。一个完整的指令周期应包括取指、间址、执行和中断四个机器周期。
中断周期中进栈操作是将SP减1,和传统意义上的进栈操作相反,因为计算机的堆栈中都是向低地址增加,所以进栈操作是减1,不是加1。

5.2.1 取指周期

是根据PC中的内容从主存中取出指令代码并存放在指令寄存器IR中,取指令的同时,PC加1。
数据流向:
1、PC->MAR->地址总线->主存。
2、CU发出控制信号->控制总线->主存。
3、主存->数据总线->MDR->IR(存放指令)。
4、CU发出读命令->PC+1

5.2.2 间址周期

在有些需要间接寻址的情况下,取操作数有效地址。
数据流向:
1、Ad(IR)->MAR->地址总线->主存。
2、CU发出读命令->控制总线->主存。
3、主存->数据总线->MDR(存放有效地址)。

5.2.3 执行周期

是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。

5.2.4 中断周期

在有处理中断请求的时候,假设程序断点存入堆栈中,并用SP表示栈顶地址,而且进栈操作是先修改栈顶指针,后存入数据。
数据流向:
1、CU发送控制信号->SP-1->SP->MAR->地址总线->主存。
2、CU发送读命令->控制总线->主存。
3、PC->MDR->数据总线->主存(程序断点存入主存)。
4、CU发送读命令(中断服务程序的入口地址)->PC

5.3 指令执行方案

1、单指令周期 :对所有指令都选用相同的时间来完成,指令之间串行执行,指令周期取决于执行时间最长的指令的执行时间。
2、多指令周期 :指令之间串行执行,不再要求所有指令占用相同的执行时间。
3、流水线方案 :指令之间并行执行,尽量让多条指令同时执行,但各自处在不同的执行步骤中。

5.4 数据通路

数据在功能部件之间传送的路径称为 数据通路 ,其功能是 实现CPU内部的运算器和寄存器以及寄存器之间的数据交换 。
寄存器之间:PC->Bus->MAR
主存与CPU之间:
1、PC->Bus->MAR
2、CU发出读命令 1->R
3、MEM(MAR)->MDR
4、MDR->Bus->IR
执行算术或逻辑运算:(ALU必须在两个输入端同时有效的情况下才可以工作):
1、Ad(IR)->Bus->MAR
2、1->R
3、MEM(MAR)->数据线->MDR
4 、MDR->Bus->Y
5、(ACC)+(Y)->Z
6、Z->ACC

5.4.1 数据通路基本结构

1) CPU内部单总线方式:所有寄存器的输入端和输出端都连接到一条公共的通路上。结构简单,但数据传输中存在较多冲突现象,性能较低。
2)CPU内部三总线方式:所有寄存器的输入端和输出端都连接到多条公共的通路上。效率CPU内部单总线方式相对有所提高。
3)专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路,避免使用共享的总线。性能较高,但硬件量大。前两者为内部总线,第三个为专用数据总线

5.5 控制器

在这里插入图片描述

5.5.1 CPU控制方式和功能

CPU的控制方式
控制器的主要功能有:
1)从主存中取出一条指令,并指出下一条指令在主存中的位置。
2)对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。
3)指挥并控制CPU、主存、输入和输出设备之间的数据流动方向。

5.5.2 硬布线控制器

硬布线控制器由复杂的组合逻辑门电路和一些触发器构成,因此又称为组合逻辑控制器。

5.5.3 微程序控制器

微程序控制器采用存储逻辑实现 ,也就是把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器(控制存储器)中, 微操作控制信号由微指令产生。微指令是若干微命令的集合,存放微指令的控制存储器的单元地址称为微地址。若指令系统中具有n种机器指令,则控制存储器中的微程序数至少是n+1个(1为公共的取指微程序)。微命令(控制序列的最小单位),微操作(最小操作,微命令和微操作一一对应),微指令(若干微命令的集合),微周期(读取并执行微指令的时间),微程序(微指令的有序集合)

5.5.4 微指令的编码方式

微指令的编码方式又称为微指令的控制方式 ,指如何对微指令的控制字段进行编码,以形成控制信号。目标是在保证速度的情况下,尽量缩短微指令字长。
1)直接编码(直接控制)方式。
2)字段直接编码方式:将微指令的微命令字段分成若干个小字段,把互斥性微命令组合在同一字段中,把相容性微命令组合在不同的字段中。
3)字段间接编码方式,又称隐式编码。

5.5.5 微指令的格式

1)水平型微指令:指令字中的一位对应一个控制信号,有输出时为1,否则为0。一条水平型微指令定义并执行几种并行的基本操作。优点是微程序短,执行速度快;缺点是微指令长,编写微程序较麻烦。
2)垂直型微指令:类似机器指令操作码的方式,设置微操作码字段,由微操作码规定微指令的功能。一条垂直型微指令只能定义并执行一种基本操作。优点是微指令短、简单、规整,便于编写微程序;缺点是微程序长,执行速度慢,工作效率低。
3)混合型微指令

5.5.6 取指操作不同控制器流程

硬布线控制器:
在这里插入图片描述
微程序控制器:
在这里插入图片描述

5.5.7 微程序控制器和硬布线控制器

在这里插入图片描述
在这里插入图片描述

5.6 指令流水线

一条指令的执行过程:
1、取指 :根据PC内容访问主存储器,取出一条指令送到IR中。
2、分析 :对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。
3、执行 :根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。
指令处理方式:
1、顺序执行方式:前一条指令执行完后,才启动下一条指令,T=3nt。
2、流水线执行方式:把取第k+1条指令提前到分析第k条指令的期间完成,而将分析第k+1条指令与执行第k条指令同时进行,T=(2+n)t

5.6.1 流水线

在这里插入图片描述
在这里插入图片描述

5.6.2 影响流水线的因素

1)结构相关(资源冲突):由于多条指令在同一时刻争用同一资源而形成的冲突
解决办法:
a. 前一指令访存时,使后一条相关指令(以及其后续指令)暂停一个时钟周期。
b. 单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行,这属于资源重复配置。
2)数据相关(数据冲突,数据冒险):必须等前一条指令执行完才能执行后一条指令的情况---->主要情况
a. 把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,可分为硬件阻塞(stall)和软件插入"NOP"指令两种方法。
b. 设置相关专用通路,即不等前一条指令把计算结果返回寄存器组,下一条指令也不再读寄存器组,而是直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程,使本来需要暂停的操作可以继续执行,称为数据旁路技术。
c. 通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关。
3)控制相关(控制冲突,控制冒险):遇到转移指令和其他改变PC值得指令而造成断流
a. 对转移指令进行分支预测,分为简单(静态)预测和动态预测,静态预测总是预测条件不满足,即继续执行后续指令;动态预测根据程序执行的历史情况,进行动态预测调整。
b. 预取转移成功和不成功两个控制流方向上的目标指令。
c. 加快和提前形成条件码。
d. 提高转移方向的猜准率。

6 练手题

去年并没有相关的考点,但是大家学过计组,都知道这里算是非常重要的,我也不敢轻易断言今年不考,我就找几个期末试题里的大家练练手。
难度是不是一下就上来了,加油!

6.1

在这里插入图片描述
在这里插入图片描述

6.2

在这里插入图片描述
在这里插入图片描述

6.3

在这里插入图片描述
在这里插入图片描述

6.4

微指令也来上几道练练手感
在这里插入图片描述
在这里插入图片描述

6.5

在这里插入图片描述
在这里插入图片描述

总结

相信这一章干货也是满满,有问题打在评论区哦

这篇关于计算机组成原理-第五章 中央处理器【期末复习|考研复习】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767645

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们