【计算机组成原理Note】5.1 CPU的功能和基本结构

news2025/7/10 16:56:17
image-20221118205400539

5.1 CPU的功能和基本结构

image-20221118233909636

5.1.1 CPU的功能

image-20221118210309204
  1. 指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
  2. 操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPu管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件从而控制这些部件按指令的要求进行动作。
  3. 时间控制。对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
  4. 数据加工。对数据进行算术和逻辑运算。
  5. 中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。

以上功能都是CPU应该具有的功能,相应的分摊到CPU的两个部分。

  • 运算器负责对数据进行加工

  • 控制器负责协调并控制计算机各种部件执行程序的指令序列,基本功能包括取指令,分析指令,执行指令

    1. 取指令:自动形成指令地址;自动发出取指令的命令。
    2. 分析指令:操作码译码(分析本条指令要完成什么操作);
      产生操作数的有效地址。
    3. 执行指令:根据分析指令得到的“操作命令”和“操作数地址”,
      形成操作信号控制序列,控制运算器、存储器以及I/O设备完成相应的操作。
    4. 中断处理:管理总线及输入输出;处理异常情况(如掉电)和特殊请
      求(如打印机请求打印一行字符)。

5.1.2 运算器的基本结构

  1. 算数逻辑单元:主要功能是进行算数逻辑运算

    image-20221118211239957

    根据传过来的操作指令,对输入数据AB进行运算。(组合逻辑电路)

  2. 通用寄存器组:如AX、BX、CX、DX、SP等。用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。

    image-20221118211832643

    左边为一般理解上的寄存器组,右边也是寄存器组,知识表示不同,这种表示了解就行AH表示寄存器高字节,AL表示寄存器低字节,AX表示整个寄存器

ALU和GPRs之间的线路控制

数据需要从通用寄存器传输到ALU,每一个寄存器都可能给ALU两个操作数传输数据,因此每一个寄存器都需要和ALU两个操作数取得联系。具体有专用数据通路方式和单总线方式两种。

  1. 专用数据通路方式:基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现。 具体又有两种实现方式

    方法一:使用多路选择器,根据控制信号选哪一个寄存器给ALU传输数据

    image-20221118212705512

    方式二:使用三态门

    image-20221118212815081

    每一个寄存器都通过一个三态门链接ALU,每一个三态门上都有一个控制信号,控制线路是否通路(1通),通过每一个信号协同工作就能实现将目标寄存器数据传输到ALU

  2. 单总线方式:结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低。

    image-20221118213750831

    将寄存器数据传输都经过CPU内部总线,所以每一个寄存器都和总线有一组读写线,每一个寄存器对应两个读写控制信号,控制该时刻寄存器是否写入,是否读出。

    接下来如何将总线数据传输给ALU?

    image-20221118214706237

    如果是这种模式,那么ALU的两个操作数都是一样的,解决方式是,增加暂存寄存器,先将数据总线的数据存放在暂存寄存器中,接着将另外一个数据传输给B,暂存寄存器传输给A

    image-20221118214856127

    有时候需要将ALU计算出来的数据写回寄存器,怎么实现?

    image-20221118215720250

    如果是这样,那么ALU接收完AB两个操作数,由于是组合逻辑电路,ALU直接生成计算结果,返回总线,计算结果沿着总线又到ALU操作数,总线上的数据未来得及写入就被改变了,解决方法是使用暂存寄存器,并且通过三态门控制是否将数据传到总线

    image-20221118220032856

    常见的累加运算还会再总线上挂上累加寄存器ACC,用于存放ALU运算的结果信息

    image-20221118220352974

    此外对于ALU计算结果的溢出判断,是否等于零,可以通过程序状态寄存器(PSW)来实现。程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。

    并且程序状态寄存器是可以直接访问位的,而其他寄存器则每次只能读取出一个机器字(机器字长:计算机能直接处理的二进制数据的位数),或者说是字节的整数倍。

    image-20221118221444238

    此外像移位器,可以直接再暂存寄存器上进行功能扩展,也就是移位寄存器。计数器,控制乘除运算的操作步数。

5.1.3 控制器的基本结构

image-20221118232043764

  1. 程序计数器:用于指出下一条指令在主存中的存放地址。CPU就是根据PC的内容去主存中取指令的。因程序中指令(通常)是顺序执行的,所以PC有自增功能。

  2. 指令寄存器IR:用于保存当前正在执行的那条指令。分位操作码和地址码。指令由总线传入。地址码需要传回总线进行寻址,操作码传给指令译码器ID

  3. 指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号。传出的信号并非直接传给各个部件,因为部件不仅需要控制内容,还要控制顺序,所以要将移码结果传给位操作信号发生器

  4. 微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。

  5. 时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到。

  6. 存储器地址寄存器:用于存放所要访问的主存单元的地址。

  7. 存储器数据寄存器:用于存放向主存写入的信息或从主存中读出的信息。

    MAR和MDR是CPU和主存进行交流的中介,属于存储器,单硬件上是寄存器,放在CPU内部

5.1.4 CPU基本结构

image-20221118233209449

可以发现CPU内部都是由寄存器来存储数据,其中橙色部分为用户可见的。而灰色部分则是用户不可见的寄存器,由系统自动完成这些寄存器的读写。

CPU可以看成由这四部分构成(CU为控制系统,中断系统还没有画出)

image-20221118233520642

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端JS基础第一篇:执行上下文与执行栈

目录 执行上下文与执行栈 引言 什么是执行上下文? 执行上下文生命周期 变量对象 执行上下文的类型 执行上下文的特点 执行栈 执行栈示例 执行上下文与执行栈 引言 对于我们前端开发者来说理解JS程序内部执行机制是必要的,其中一个关键概念就是Js的执行上…

使用QEMU调试ARM64 Linux内核v6.0.9

环境准备 开发环境:Ubuntu 20.04.5 LTS,推荐修改阿里云的apt源,遇到编译依赖方便安装。 环境准备:在Windows上基于WSL2搭建Linux开发环境 本文用到的软件选用的是截至当前(2022-11-19)官网发布的最新的release版本,详…

JavaEE之HTTPS

文章目录HTTPS加密引入证书总结HTTPS 加密 HTTPS 就是在 HTTP 的基础上进行了 加密 , 进一步的来保证用户的信息安全~ 举个例子: 83 版 <<火烧圆明园>> , 有人要谋反干掉慈禧太后. 恭亲王奕䜣给慈禧递的折子. 折子内容只是扯一扯家常,但套上一张挖了洞的纸就能看…

ESP32的BLE使用学习

UUID生成网站&#xff1a; Online UUID Generator Tool 0.前言 什么是低功耗蓝牙&#xff1f; BLE之所以被称为低功耗蓝牙&#xff0c;就是需要通讯的时候才握手&#xff0c;数据传输完成后&#xff0c;就断开连接。在通讯过程中&#xff0c;主动方是客户端&#xff0c;由客…

中微SC8F5771模拟IIC通信——指令运行速度的探索(附编译软件与烧录软件)

文章目录一、中微单片机烧录与使用编译软件烧录软件下载地址烧录软件二、模拟IIC三、逻辑分析仪下的时序一、中微单片机烧录与使用 编译软件 中微所使用编译软件为SCMCU_IDE&#xff0c;不过个人不推荐使用这个软件写代码&#xff08;十分不好用&#xff0c;不能跳转&#xf…

Linux搜索查找命令【详细整理】

目录Linux下文件搜索、查找、查看命令findfind 【搜索范围】【选项】​ find /home -name ‘hello.txt’​ find /home -user root​ find / -size 100Mlocate特别说明&#xff1a;locate 文件名whichwhich lsgrep​ 基本语法&#xff1a;grep [选项] 查找内容 源文件grep -niL…

第六章 图论 8 AcWing 1624. 地铁地图

第六章 图论 8 AcWing 1624. 地铁地图 原题链接 AcWing 1624. 地铁地图 算法标签 图论 单源最短路 dijkstra spfa 思路 若采用邻接矩阵存储 超出本题空间限制&#xff0c;因此无法采用邻接矩阵存储&#xff0c;可采用邻接表存储 若采用常规建图方式&#xff08;即相邻两…

微信小程序|基于小程序实现人脸融合

文章目录一、文章前言二、具体流程及准备三、开发步骤四、完整代码一、文章前言 此文主要通过小程序实现人脸图像融合&#xff0c;将检测到的两张人脸进行融合&#xff0c;输出一张融合后的人脸。 二、具体流程及准备 2.1、注册百度开放平台及微信公众平台账号。 2.2、下载及安…

概论_第2章随机变量及其概率分布__离散型随机变量之二项分布

二项分布是离散型随机变量的内容 一. 定义&#xff1a; 若随机变量X的可能取值为0, 1, ... ,n, 而X的分布值为 , k0,1,…n 其中&#xff0c;0<p<1, q 1-p, 称X服从参数为n, p的二项分布&#xff0c; 简记为 X ~ B(n, p) 1. 当n1时&#xff0c; X服从0-1分布, …

想进入游戏建模行业,这4点必须了解

“游戏行业不关心你的专业&#xff0c;只关心你的作品”&#xff0c;想要进入游戏行业就记住这句话&#x1f44d; 这一年可是越来越多人想要进入游戏行业啦&#xff5e;造成了汤多肉少的情况&#xff0c;咱们怎样才能在一群竞争者中脱颖而出呢❓有4⃣大点你要注意的&#xff1…

决策树算法在计算机视觉中的应用附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

利用SpringBoot和vue+elementui做一个简单的书本信息管理系统

目录 1.准备工作 1.1.数据库准备 1.2.前端准备工作 1.3.后端准备工作 2.后台代码的编写 2.1.修改配置文件 2.2. 编写service层 2.3.编写Controller层 3.前台代码的编写 3.1.在src里面的api里面的action.js 3.2.搜索栏&#xff0c;表单 3.3.表格 3.4.弹出新增的模态…

[附源码]SSM计算机毕业设计整形美容咨询网站JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【考研复试】计算机专业考研复试英语常见问题二(研究方向/前沿技术/本科毕设篇)

相关链接&#xff1a; 【考研复试】计算机专业考研复试英语常见问题一&#xff08;家庭/家乡/学校篇&#xff09;【考研复试】计算机专业考研复试英语常见问题二&#xff08;研究方向/前沿技术/本科毕设篇&#xff09;【考研复试】计算机专业考研复试英语常见问题三&#xff0…

助老服务机器人结构设计

目 录 摘要 I Abstract II 第1章 绪论 1 1.1 课题背景 1 1.2 国外助老服务机器人的研究 1 1.2.1 爱尔兰PAM-AID 助老服务机器人 1 1.2.2 美国SmartCane 助老服务机器人 2 1.2.3 韩国WAR 助老服务机器人 3 1.2.4 日本助老服务机器人 4 1.2.5 可穿戴的外骨骼式助老服务机器人 4 …

(九)Spring之Bean的循环依赖问题

文章目录环境什么是Bean的循环依赖singleton下的set注入产生的循环依赖prototype下的set注入产生的循环依赖构造注入产生的循环依赖singleton下的构造注入prototype下的构造注入Spring解决循环依赖的机理&#xff08;底层实现&#xff09;上一篇&#xff1a;&#xff08;八&…

注释写的好,文档不潦草.

大家好&#xff0c;long time no see&#xff01;这次聊一聊「注释」。写「注释」的好处众所周知&#xff0c;但有时在实现一些「公共代码」后&#xff0c;需要编写「文档」&#xff0c;其中「注释」和「文档」的内容是大致相同的&#xff0c;比如param和returns等(相信有不少同…

Java_抽象类和接口(一)

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE领域博主 专栏&#xff1a;JavaSE 作者简介&#xff1a;大三学生&#xff0c;希望跟大家一起进步&#xff01; 文章目录 目录 文章目录 一、抽象类 1.1 抽象类概念 1.2 抽象类语句 1.3 抽象类特性 1.4 抽象类和普通类的区别 1.5 抽…

赞不绝口!仅靠阿里P9分享的 Redis 工作手册,拿到60W年薪Offer

昨晚有六七位小伙伴告诉我说&#xff1a;“大佬&#xff0c;有没有Redis的面试教程啊&#xff0c;最近面试被问到好多” 这就帮小伙伴们专门整理了一份资料&#xff08;不仅仅是面试题&#xff09;&#xff0c;从Redis核心原理到Redis设计与源码帮助大家梳理体系&#xff0c;快…

教你自己写Arcpy批处理程序

自己写Arcpy批处理栅格和矢量 先上代码&#xff0c;讲解各行代码的意思&#xff0c;从而达到自己写代码的目的 #....Edit by Longhao Wang.... import arcpy from arcpy import env from arcpy.sa import * import os import os.path import sys arcpy.env.workspace"D:…