计算机组成原理——第五章中央处理器(上)

news2024/11/17 11:30:27

半生风雨半生伤,半醉半醒半心凉

文章目录

  • 前言
  • 5.1 CPU的功能和基本结构
  • 5.2 指令周期的数据流
  • 5.3.1 单总线结构
  • 5.3.2 专用通路结构


前言

之前我们就说过CPU主要包括两个部分,运算器和控制器,运算器主要是实现算数运算.逻辑运算,
运算器若是再细分,则可分为ACC累加器,用于存放操作数,或者运算结果,MQ:乘商寄存器,在乘,除运算时,用于存放操作数或者运算结果,MQ乘商寄存器,在乘除运算时,用于存放操作数或运算结果,X 通用的操作数寄存器,用于存放操作数,ALU 算数逻辑单元,通过内部复杂的电路实现算数运算,逻辑运算
控制器可分为CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加1功能,完成一个指令需要取指令PC 分析指令IR 执行指令CU
本章主要讲的问题就是如何控制数据在这些元件之间进行流动的,CU又是如何确定每一步需要做些什么的呢

5.1 CPU的功能和基本结构

cpu的功能
请添加图片描述
运算器和控制器的功能
请添加图片描述
运算器的基本结构
之前我们说过运算器的核心部件是ALU,但是ALU,我们提供操作数,通过ALU 这个逻辑电路的处理可以输出数据,很多时候我们需要把参与的数据提前存放于通用寄存器中
堆栈寄存器SP 保存了堆栈指针,堆栈指针的作用是函数的运行过程中可以会发生函数的调用,程序的执行流发生改变,为了能够使得程序间的相互调用能够完成 堆栈指针指明了当前正在运行的地址在什么位置,因为R0既可以从A输入数据又可以从B 输入数据,所以需要两个线,若是寄存器可以存放16bit的数据,应该是通过十六个线并行的送到ALU的端口的,这种就是称为专用数据通路方式,但是这样也就意味这电路太多,并且可能会有一种情况就是多个寄存器同时并且一直向ALU传输数据,解决方法1,使用多路选择器,根据控制信号选择一路输出,
请添加图片描述
CPU内部总线方式
将所有寄存器的输入端输出端都连接到一条公共的通路上,可以从数据总线上获取输出数据,但是也有一个缺点若是同时通过总线送,则会导致ALU无法判断A,与B的值,一个方法就是设置一个暂存寄存器,先把一个数据送到暂存寄存器中存储起来,不能读入其他通用寄存器是因为其他通用寄存器也可能存放后面需要使用的数据,同时R0给的输入信号不稳定之前,ALU 就会输出信号,此时都在数据总线上 可能会发生冲突,我们的方法是ALU的输出端再加一个暂存寄存器,先把计算的结果放在暂存寄存器中,同时运算器内部还需要一个计数器,如乘的时候需要控制加的次数
请添加图片描述
控制器的基本结构
我们取出一个指令之后要把这个指令存放于IR中,把指令的操作码部分作为指令译码器的输入,然后经过指令译码器中的逻辑电路就能判断出当前是什么指令,然后产生微操作序列,然后我们还需要一个时序系统来产生一个时序信号,注意mar的连线只有一个输入的连线没有输出的连线,当有一个地址信息来到MAR中,这个地址指明了在主存中的地址,我们需要外部的地址总线传送给主存,然后通过外部的数据总线将数据存放于MDR中,我们注意到MDR中加E的表示从外部数据总线 上的输入输出是有效的,不加E的是内部输入输出有效的
用户可以通过条件转移指令或者无条件转移指令来修改PC的值,我们之前说过之前条件转移的时候就使用到PSW的值 ,或者使用CMP比较两个数的时候也会直接影响PSW的值
请添加图片描述

5.2 指令周期的数据流

这一小节中我们对指令的阶段进行一个细化,我们会分析每一个阶段数据流的流向,并且如何安排多条指令的执行
指令周期
取指令是需要访问内存的,也就需要而时间较多,分析指令是cpu来处理的,也就会很快能够完成指令的译码,有的执行指令需要访存 有的不需要,所以导致执行指令的时间差别很大,一个机器周期完成一个较小的子工作,一个指令周期又会包含多个机器周期,并且包含的机器周期数也可能不一样请添加图片描述
如下图左部分 cpu为了区分这四个阶段,也就是设置四个触发器
请添加图片描述
取指周期的一个数据流向
请添加图片描述
间址周期
这里Ad(MDR)->MAR能成功是因为我们取指的时候是先将MDR中的地址先放在MDR中,然后IR在复制一份的,所以MDR中存储的是当前执行的指令的一个信息
请添加图片描述
执行周期
执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行的结果,不同的指令的执行周期操作不同,因此没有统一的数据流向
中断周期
之前我们就说过在每一个进程,每一个程序运行的过程中,操作系统都会给程序在主存中开辟一个空间作为运行堆栈,堆栈指针SP会指向当前的栈顶元素,这里与数据结构中有区别,数据结构中地址是从下往上画的,但是操作系统是从上往下画的,也就是我们的栈顶指针是指向低地址部分,所以我们要将一个数压入栈中,就需要先减,此时我们是想把pC的值写入栈顶,CU 通过控制总线启动主存做写操作
请添加图片描述
指令执行方案
单指令周期:对所有的指令都选用相同的执行时间来完成,时间较短的会导致浪费较长的时间,从而导致效率低
多指令周期:其实也就是一个指令执行完了就执行另外一个,
流水线方案:不同指令在不同的时间用到的部件可能不同,所以并行也是存在可行性
请添加图片描述
本节回顾
请添加图片描述

5.3.1 单总线结构

无论我们执行的是什么操作,数据的流向都是不外乎三种,寄存器与寄存器之间,寄存器与主存之间,寄存器与算术逻辑单元之间进行数据交换,无论是数据的输出还是输入操作都是由这个微操作信号发生器来控制的,之前我们说过的一种CPU内部单总线方式,这种也就意味着同一时刻内部总线只允许两个部件之间进行数据交换,为了解决这个问题,有的计算机就设计三个总线,或若是两个会进行数据交换,则在此部件之间设置一个专用的数据通路方式,这里选哟注意执行算数运算的时候,ALU需要两个输入信号必须同时有效,而我们CPU的内部总线同一时刻只能有一个输入信号,我们只有将一个操作数存放于暂存寄存器Y中,若是使用多总线则可不设置暂存寄存器
请添加图片描述

5.3.2 专用通路结构

也就是假如元件之间有数据的交流,则其中的控制信号有效就好,这里用灰色是因为有的并不会给你指令寄存器到cu的通路
请添加图片描述
多路选择器:如下图中的MAR,当有多个输入的时候,可以接一个多路选择器,选择让哪一个输入通过,还有就是使用三态门,只有微操作信号发生器发出一个信号之后,输入的通路才会被导通,
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
本节回顾
请添加图片描述

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

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

相关文章

python正则表达式与re模块

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 python正则表达式与re模块 正则表达式元字符① . 通配符② ^③ $④ *⑤ ⑥ ?⑦ {}⑧ []⑨ \ 转义符⑩…

python 怎么使用pip进行包管理

包管理工具是用来对一些应用程序的包进行管理的工具,比如nodejs使用npm,yarn来进行包管理,linux使用apt来进行包管理。python包管理工具或许不如他们有名(实际上pip的大名比前几位更响亮),但绝对比他们好用…

java超市会员积分管理系统

本课题要求采用B/S结构和主流的jsp技术,以java为开发语言,结合后台数据库mysql,并配合使用了MyEclipse等工具软件,完成超市会员管理系统的设计与后台管理功能开发。 该系统主要功能如下: 会员信息的管理:包…

MySQL数据库:数据库表的设计

一、ER实体关系图 1.概念 百度百科: ER图是用来描述某一组织(单位)的概念模型,提供了表示实体、属性和联系的方法。构成ER图的基本要素是实体、属性和关系。 ER图是用来描述某一组织(单位)的概念模型,提供了表示实体、属性和联系的方法。构…

asp.net房屋租赁管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net房屋租赁管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net房屋租赁管理系统VS开发s…

如何搭建用户生命周期模型

如何搭建用户生命周期模型 摘要一、问题背景二、用户生命周期模型1、用户生命周期模型简介2、对用户生命周期认知的几点误区 三、如何搭建并应用用户生命周期模型1、使用场景2、搭建步骤(1)梳理用户成长路径(2)寻找驱动用户进入下…

【动力节点】springsecurity课程笔记6-13章

** 6 密码处理 6.1 为什么要加密? csdn 密码泄露事件 泄露事件经过:https://www.williamlong.info/archives/2933.html 泄露数据分析:https://blog.csdn.net/crazyhacking/article/details/10443849 6.2加密方案 密码加密一般使用散列函…

ATTCK v12版本战术实战研究——提权(二)

一、前言 前几期文章中,我们介绍ATT&CK 14项战术中提权战术(二),包括提权前7项子技术。那么从前文中介绍的相关提权技术来开展测试,进行更深一步的分析。本文主要内容是介绍攻击者在运用提权技术时,在…

ZLMediaKit实现按需拉流时rtsp流地址不对addStreamProxy返回0,接口流id参数踩坑记录

场景 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放: 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_霸道流氓气质的博客-CSDN博客 基于上面实现拉取视…

vue_02

文章目录 安装axios配置响应拦截器(对响应做统一处理)解决跨域问题登录token问题首先在Login.vue中添加下列代码然后在api.js中添加请求拦截器 页面加载动画的添加请求方式的全局配置在api.js中添加四种请求在main.js中配置全局 Login.vue完成代码 安装a…

前端实战(三):element-ui的二次封装

目录 二次封装 Switch 开关 原始效果 设计效果 实现步骤 在日常开发过程中,大多数项目主要以 vue 为主,并且现在很多公司仍在使用着 vue。但在使用element-ui组件时通常会遇到一些问题:如组件样式与设计不符合、组件不存在某个功能等等&a…

都已经那么卷了,用户还需要开源的 API 管理工具么

关于 API 管理工具,如今的市场已经把用户教育的差不多了,毫不夸张地说,如果我随机抽取一位幸运读者,他都能给我罗列出一二三四款大家耳熟能详的工具。可说到开源的 API 管理工具,大家又能知道多少呢? 我们是…

计算机网络复习题+答案

文章目录 导文题目一、单项选择题二、填空题三、判断改错题,判断下列命题正误,正确的在其题干后的括号内打“√”,错误的打“”,并改正。四、名词解释五、简答题六、应用题导文 计算机网络复习题 题目 一、单项选择题 在应用层协议中,主要用于IP地址自动配置的协议是: (…

一文讲清莱迪斯 LCMXO2-4000HC-4BG256I 可编程逻辑FPGA 特性及运用领域

一文讲清lattice莱迪斯深力科 LCMXO2-4000HC-4BG256I 可编程逻辑FPGA 特性及运用领域 适用于低成本的复杂系统控制和视频接口设计开发,满足了通信、计算、工业、消费电子和医疗市场所需的系统控制和接口应用。 瞬时启动,迅速实现控制——启动时间小于1m…

605. 种花问题

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0…

Mybatis核心组件简介

文章目录 前言一、Configuration二、MappedStatement三、SqlSession四、Executor五、StatementHandler六、ParameterHandler七、ResultSetHandler八、TypeHandler总结 前言 SqlSession是MyBatis提供的面向用户的操作数据库API。那么MyBatis底层是如何工作的呢?为了…

2. VBA Excel宏

在本章中,我们来学习如何逐步编写一个简单的宏。 第1步 - 首先,在Excel 2016中启用“开发者”菜单。要完成这个设置,请点击左上角菜单:文件 -> 选项。如下图所示 - 第2步 - 点击“自定义功能区”选项卡并选中“开发工具”。然…

Pulumi实战 | 一款架构即代码的开源产品

新钛云服已累计为您分享741篇技术干货 本篇文章,主要介绍 Pulumi 是什么以及它的相关原理,并且使用它搭建一个 Nacos 和 SpringBoot 的环境! 一、Pulumi 诞生 (一)诞生原因 Pulumi 是一个架构即代码的开源产品&#xf…

学系统集成项目管理工程师(中项)系列09_收尾管理

1. 广义 1.1. 项目验收工作 1.2. 项目总结工作 1.3. 系统维护工作 1.4. 项目后评价工作 1.5. 项目团队成员的后续工作 2. 狭义 2.1. 项目验收工作 3. 项目验收 3.1. 首要环节 3.2. 包括验收项目产品、文档及已经完成的交付成果 3.3. 需要完成正式的验收报告 3.3.1.…

STM32使用PWM(脉冲宽度调制)

STM32使用PWM(脉冲宽度调制) 一、PWM概述二、STM32的PWM分析三、PWM产生的流程示例代码 一、PWM概述 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出(…