计算机组成原理-中央处理器详细讲解(持续更新中)

news2025/1/17 4:48:37

 CPU的功能和基本结构

CPU由运算器和控制器两大部分组成

  CPU的功能

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

运算器和控制器的功能

运算器主要对数据进行加工。

控制器主要是协调并控制计算机各部件执行程序的指令序列,基本功能包括取指令、分析指令、执行指令

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

运算器的基本结构

  1.  算术逻辑单元:主要功能是进行算术/逻辑运算。
  2. 通用寄存器组:如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果和地址信息等)。SP是堆栈指针,用于指示栈顶的地址。
  3. 暂存寄存器:用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容。
  4. 累加寄存器:它是一个通用寄存器,用于暂时存放ALU的运算的结果信息,用于实现加法操作。
  5. 程序状态字寄存器:保留有由算出逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CP)等。PSW中的这些位参与并决定微操作的形成。
  6. 移位器:对运算结果进行移位运算。
  7. 计数器:控制乘除运算的操作步数。

寄存器组与ALU的连接方式有两种。

第一种:专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路。

 如果直接用导线连接,相当于多个寄存器同时并且一直向ALU传输数据,如何解决?

解决方法1.使用多路选择器根据控制信号选择一路输出

 左边的00表示让R0的数据通过作为第一个操作数,右边的01表示让R1的数据通过作为第二个操作数。

解决方法2.使用三态门可以控制每一路是否输出 

如:R0out为1时R0中的数据输出到A端,R0out为0时R0中的数据无法输出到B端。

使用专用数据通路方式性能较高,基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现。

第二种:CPU内部单总线方式:将所有的寄存器的输入端和输出端都连接到一条公共的通路上。

 通过控制Rin/Rout的信号来控制输入输出信号,比如想要R0的数据复制到R1,就需要将R0out和R1in输入高电平。

这个方式结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低。比如现在进行加法操作,R0的数据和R1的数据都进入到了总线,产生冲突,如何分别哪个是A哪个是B呢。

解决方法:在一端加入暂存寄存器,首先将R0的输出端接通,将R0的数据传输到总线然后存入暂存寄存器中,然后撤销R0输出端信号,使输出失效,然后接通R1的输出端,通过总线运送到B端,进行加法操作。

 此外ALU的输出端也需要加上一个暂存寄存器,为了防止由于信号不稳定导致存回数据冲突的错误。

 控制器的基本结构

 CPU的结构基本结构

用户可见的寄存器:通用寄存器、程序状态字寄存器PSW、程序计数器PC

用户不可见的寄存器:MAR、MDR、IR、暂存寄存器

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

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

相关文章

FPGA学习笔记(八)同步/异步信号的打拍分析及处理

系列文章目录 一、FPGA学习笔记(一)入门背景、软件及时钟约束 二、FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三、FPGA学习笔记(三) 流水灯入门FPGA设计流程 四、FPGA学习笔记(四&…

花十分钟用Python写了个蹭WiFi的软件,于是获取了隔壁单身妹子的WiFi试了试效果,居然发现...

Python写一个免费蹭WiFi的神器前因后果注意事项主要代码效果展示怎么学好Python?前因后果 昨晚十点学姐跟我发消息说她家的WiFi 不知道为什么今天就很慢,让我赶紧去她家帮她看看,当时我就怒了,这大晚上的我都要睡觉了还给我整这破…

Qt翻译(本地化)坑总结

文章目录坑1:无法生成ts文件坑2:ts文件的中文乱码坑3:不能直接翻译全局变量、静态变量、符号常量字符串官方文档 Internationalization with Qt 贴一个比较好的总结 Qt中,软件多语言国际化翻译的方法与步骤 坑1:无法生…

[Redis] Redis实战

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

[附源码]java毕业设计实践教学管理系统

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

Echarts:好玩的timeline

Echarts是一个开源的可视化图表库,支持丰富的图表,官网中还有大量示例可以选择使用、参考。 其中比较有趣的一个特性是可以把数据随时间变化而变化,其效果与一些视频中比较不同国家的国力随时间变化的排名变化的效果相似。 接下啦我们就实现…

linux下golang环境安装教程(学习笔记)

linux下golang环境安装教程(学习笔记) SSH远程登录linux服务器 安装 mercurial包 [rootlocalhost ~]# yum install mercurial 安装git包 [rootlocalhost ~]# yum install git 安装gcc【一般自带安装好了的】 [rootlocalhost ~]# yum install gcc …

黑*头条_第3章_文章详情前后端成形记

黑*头条_第3章_文章详情前后端成形记 文章目录黑*头条_第3章_文章详情前后端成形记文章详情前后端成形记1 分布式主键封装1.1 依赖导入1.2 配置文件1.3 枚举封装1.4 序列封装1.5 Client封装1.6 Config封装1.7 Sequences封装1.8 使用案例1.9 扩展自增表2 App文章详情2.1 功能需求…

Spring IOC源码:registerBeanPostProcessors 详解

前言 上篇文章介绍了后置处理器BeanFactoryPostProcessor的注册、实例化及执行操作,这节介绍一下另外一个后置处理器BeanPostProcessor。前者是针对BeanFactory工厂对象进行增上改查操作,在bean实例化之前,我们可以修改其定义。后者是对实例…

电脑重装系统蓝屏是什么原因

​电脑蓝屏是由于系统故障、致命的系统错误或系统崩溃而导致的现象,要想修复电脑蓝屏,关键是找出原因所在。为此,下面小编就给大家整理电脑蓝屏是什么原因。 原因1、虚拟内存不足造成系统多任务运算错误: 虚拟内存是Windows系统所…

(免费分享)基于springboot健康运动-带论文

源码获取:关注文末gongzhonghao,输入013领取下载链接 ​开发工具:IDEA, mysql5.7 技术:springbootmybatis-plus 健康管理包括:健康体检、健康评估、健康促进和健康服务四大部分。具体来说健康管理就是由健康管理顾问…

13.4 GAS与攻击

目录1. 由GA砍出的第一刀2. 挥剑时的命中检测3. 完善:UI显示当前血量参考:1. 由GA砍出的第一刀 有了前面章节的经验,我们可以很容易创建一个专用于攻击的GA: 其中PlayMontageAndWait任务节点负责攻击动画及相应回调的绑定。 但是…

向毕业妥协系列之深度学习笔记(二)深层神经网络

目录 一.深层神经网络 二.前向和反向传播 三.深层网络中的前向传播 四.核对矩阵的维数 五.为什么使用深层表示 六.参数VS超参数 一.深层神经网络 就是好多层。 二.前向和反向传播 三.深层网络中的前向传播 四.核对矩阵的维数 略 五.为什么使用深层表示 我们都知道深度…

在淘宝开店后,如何发布宝贝?从哪发布?

近期,有几位在淘宝新开店的店主,来向我们咨询了一些问题,总结来说可以将问题归为一个:在淘宝开店后,怎样上传宝贝?从哪上传?下面,小编来给大家简单的说一下发布宝贝时要注意什么&…

AD域 - 自动为域颁发证书

自动为域用户颁发数字证书 ———————————— 进入CA证书颁发机构 在“证书颁发机构”窗口中,鼠标右键点击“证书模板”,在弹出的快捷菜单中点击“管理” 在“证书模板控制台”窗口中,鼠标右键点击右侧列表中的“用户”,在弹出的快捷菜单中点击“复制模板

【Redis】Redis数据库的实现原理

在之前的文章我们介绍过,Redis服务器在启动之初,会初始化RedisServer的实例,在这个实例中存在很多重要的属性结构,同理本篇博客中介绍的数据库实现原理也会和其中的某些属性相关,我们继续看一下吧。 1.服务器和客户端…

【设计模式】 - 创建者模式 - 原型模式

目录标题1. 原型模式1.1 概述1.2 结构1.3 实现1.4 浅克隆Demo1:基本类型Demo2:引用类型浅克隆总结:1.5 深克隆实现方式1:浅克隆嵌套1. Address类实现Cloneable接口,重写clone方法;2. 在Customer类的clone方法中调用Add…

[附源码]SSM计算机毕业设计智慧教室预约JAVA

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

2019年1+X 证书 Web 前端开发中级理论考试——易错题、陌生但又会考到的题目原题+答案

文章目录 🎯关于1X标准 🎯关于中级考点 ❗❗❗注意: 理论题题型包括单选题、多选题、判断题。 ❗注意:题目序号没有修改 ❗红色的选项才是正确答案 ❗如果题目后面没有红色的选项,那么括号里面的答案是正确的 …

Unity游戏Mod/插件制作教程01 - BepInEx的安装和使用

前言 本章节为没有使用过BepInEx的同学进行BepInEx的安装和使用方面的介绍,如果你之前已经使用过并了解如何使用,可以直接跳过本章节。 BepInEx下载 BepInEx的Github链接 https://github.com/BepInEx/BepInEx/releases 一共有3种版本,BepIn…