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

news2024/11/23 18:49:07

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

文章目录

  • 前言
  • 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/424862.html

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

相关文章

React 搜索时遇到的坑

一、业务场景: 最近在优化React的天枢项目里面,搜索时遇到了一些问题。为了大家后面遇到和我一样的问题,给大家分享一下 二、问题描述: 1.点击搜索按钮,报以下错误。 TypeError: Converting circular structure to J…

全景丨0基础学习VR全景制作,平台篇:如何从素材库发布VR漫游

大家好欢迎观看蛙色平台使用教程 大家可以将创建作品理解成搭建房子,建房子需要基础的砖块、木头、钉子等原材料,房子成品是多种原材料的有机组合,而蛙色VR平台在创建作品前,也需要先准备对应的基础原材料。当前蛙色VR素材上传类型…

C++实现前缀树

文章目录1. 什么是前缀树2. 前缀树的实现2.1 前缀树的基本结构2.2 插入2.3 word出现了几次2.3 word作为前缀出现几次2.4 删除1. 什么是前缀树 假设这里有一个字符串数组,和一个树的根结点: 这个结点的pass意思是:有几个字符通过了这个结点。…

Golang中是否可以无限开辟协程以及如何控制协程的数量?

文章目录1. Golang中是否可以无限开辟协程?2. 不控制goroutine数量引发的问题3. 如何控制goroutine的数量?⭐️3.1 只用有buffer的channel3.2 channel与sync同步组合方式3.3 利用无缓冲channel与任务发送/执行分离方式1. Golang中是否可以无限开辟协程&a…

腾讯轻联中多维表记录id是什么?如何获取记录id?

在腾讯文档智能表、金山轻维表、维格表需要去【更新表格数据】的时候,经常会需要输入记录id(英文record id),很多用户也会有疑问,什么是记录id,如何获取记录id等。 金山、维格表、腾讯文档的记录ID是什么&a…

字节跳动CVPR 2023论文精选来啦(内含一批图像生成新研究)

计算机视觉领域三大顶会之一的 CVPR 今年已经开奖啦。 今年的 CVPR 将于六月在加拿大温哥华举办,和往年一样,字节跳动技术团队的同学们收获了不少中选论文,覆盖文本生成图像、语义分割、目标检测、自监督学习等多个领域,其中不少…

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解Camera的使用

🍇 博主主页: 【Systemcall小酒屋】🍇 博主追寻:热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是林群院士说过的一句话,另外“成就是最好的老师”,技术…

SVN利用 AS 进行代码对比的方法

第 1 种:如果我们是从 SVN 检出的项目,并且想比较本地代码与从 SVN 检出时的代码相比都有那些区别,可以按如下步骤操作 如上图所示,在代码编辑区,右键唤出功能菜单,然后选择Subversion,进而会展…

沉浸式翻译 – 支持 PDF、EPUB、网页,可同时显示原文与译文的双语翻译工具

使用的理由 自从谷歌翻译不再对大陆用户提供服务后。内心是一阵酸痛的,毕竟我认识单词单词不认识我啊,这简直是天书一般的存在。 期间网络中的很多大神也是推荐了不少方法让我再次拥抱谷歌翻译,比如教我修改 host 文件什么的,但这…

谁能真正替代你?AI辅助编码工具深度对比(chatGPT/Copilot/Cursor/New Bing)

写在开头 这几个月AI相关新闻的火爆程度大家都已经看见了,作为一个被裹挟在AI时代浪潮中的程序员,在这几个月里我也是异常兴奋和焦虑。甚至都兴奋的不想拖更了。不仅仅兴奋于AI对于我们生产力的全面提升,也焦虑于Copilot等AI辅助编码工具&am…

VUE3 学习笔记(八-1)中 EasyUI 组件的使用方法

目录 一、首先看官方 Accordion 文档说明 二、如何使用 Props 属性 三、如何使用 Methods(方法) 四、如何使用Methods(方法) 1. 通过 ref 给Vue3中的标签添加引用 2. 在script setup lang"ts"中定义变量引用 3. 增…

全面剖析OpenAI发布的GPT-4比其他GPT模型强在哪里

最强的文本生成模型GPT-4一、什么是GPT-4二、GPT-4的能力三、和其他GPT模型比较3.1、增加了图像模态的输入3.2、可操纵性更强3.3、复杂任务处理能力大幅提升3.4、幻觉、安全等局限性的改善3.6、风险和缓解措施改善更多安全特性3.7、可预测的扩展四、与之前 GPT 系列模型比较五、…

边缘计算那些事儿—边缘智能技术

0 背景 边缘智能是边缘计算中一个非常重要的方向。它将边缘计算和人工智能算法结合起来,在边缘设备上就近处理目标检测、物体跟踪,识别等任务。这种处理方式可以降低时延,减少数据上送云端对回传网络的冲击,同时保证数据的隐私和安…

「线性DP-步入」最大子串和

最大子串和 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 样例 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…

计算机组成原理第五章输入输出系统---概述笔记

我们都知道,外部设备和计算机是不能直接相连的,因为设备是多种多样的,都是通过一个接口设备和主存相连的,主机对外部设备有两种控制方式,程序查询方式和程序中断方式,第三种是DMA方式,这三种方式都是从CPU工作效率的角…

HTML表单和CSS属性以及DOM实现网页版计算器

目录 1、效果展示 2、源码 2.1HTMLCSS源码 2.2JS源码 3、CSS属性 3.1width、height属性 3.2font-size属性 3.3margin属性 3.4padding属性 3.5background-color属性 3.6border属性 3.7border-radius属性 3.8text-align属性 4、DOM 4.1根据id获取元素 4.2根据nam…

06 - 深度学习处理器原理

一、通用计算机架构 1. 冯诺依曼架构 冯诺依曼架构的特点:(1)使用存储程序的概念,即数据和指令都存储在内存中;(2)由 CPU、内存、输入/输出设备和总线组成,其中 CPU 包括控制单元、算术逻辑单元和寄存器;(3)控制单元按照取指(Fetch)- 译码(Decode)- 执行(Exec…

IM即时通讯-7-如何设计通知提醒

本文大纲 本文从为什么做通知提醒, 以及如何设计通知提醒, 以及如何衡量通知提醒三方面解释了如何设计通知提醒。 对于重点的如何设计通知提醒, 通过拆分前台和后台, 前台采用自建或者二方通道, 后台采用厂商信令通道…

电厂人员定位怎么做?智慧电厂人员定位系统解决方案告诉你答案

伴随着“泛在电力物联网建设”的提出,构建智慧电厂引起重大关注,全国各地纷纷响应。传统电力企业一直面临着人员管控难、生产环境复杂且危险多等问题,物联网技术的兴起使得电厂的数字化和智慧化转型已成为电力企业保障生产作业安全、提升生产…

工具及方法 - Linux下串口工具Minicom

因为调试设备所以需要打开两个串口,也许是开了Ubuntu虚拟机的影响,或其他的问题,经常有一个或两个串口设备工作不正常,需要重启电脑,很麻烦。 原因大概就是设备驱动问题,比如使用MobaXterm这个工具&#x…