当前位置: 首页 > news >正文

CPU的功能和基本结构

1.CPU的功能

①指令控制

完成取指令、分析指令和执行指令的操作,即程序的顺序控制。 

②操作控制

一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件从而控制这些部件按指令的要求进行动作。 

③时间控制

对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。 

④数据加工

对数据进行算术和逻辑运算。 

⑤中断处理 

对计算机运行过程中出现的异常情况和特殊请求进行处理。 

2.运算器的功能

对数据进行加工  

3.运算器的基本结构

算术逻辑单元ALU

主要功能是进行算术/逻辑运算。


暂存寄存器

用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容


通用寄存器组

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

 


累加寄存器ACC

它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。

 


程序状态字寄存器PSW

保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。

 

 

移位器

对运算结果进行移位运算。

计数器 

控制乘除运算的操作步数。

4.控制器的功能

①取指令

 自动形成指令地址;自动发出取指令的命令。即PC+"1"。

②分析指令

 操作码译码(分析本条指令要完成什么操作);产生操作数的有效地址。

③执行指令 

 根据分析指令得到的“操作命令”和“操作数地址”形成操作信号控制序列,控制运算器、存储器以及I/0设备完成相应的操作。

④中断处理

管理总线及输入输出;处理异常情况(如掉电)和特殊请求(如打印机请求打印一行字符)。 

5.控制器的基本结构 

 

 

程序计数器PC

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

指令寄存器IR

 用于保存当前正在执行的那条指令

指令译码器

仅对操作码字段进行译码,向控制器提供特定的操作信号。

时序系统

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

微操作信号发生器

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

存储器地址寄存器MAR

 用于存放所要访问的主存单元的地址。

存储器数据寄存器MDR 

用于存放向主存写入的信息或从主存中读出的信息。 

 

6.数据通路的基本结构 

管理多条通路:多路选择器:可以根据控制信号来决定那一路是否输出

 

使用三态门 :可以控制每一路是否输出

 

MUX与三态门 

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

 

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

内部总线 

结构简单,容易实现,但是数据传输存在较多冲突现象,性能较低。 

7.寄存器 

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 优思学院|六西格玛实施关键:如何整合定性与定量数据
  • 10-使用sentinel流控
  • 免费Excel数据批量转Word工具
  • Affine Transformations仿射变换
  • Android的日志工具Log
  • 负载均衡---相关概念介绍(一)
  • 华为AR1220配置GRE隧道
  • 国外有哪些好用的AI工具?
  • 【MySQL】索引和事务
  • SQLite 创建表
  • Linux | Linux开发工具链全攻略:yum、vim、gcc/g++、GDB、Makefile与git版本控制
  • 解密!抖音百万粉丝博主三维地图视频都用到了什么GIS数据和技术
  • c++----简单了解string
  • 利用keepalived达成服务高可用
  • Git使用方法(二)---常用命令-半小时学会git
  • $translatePartialLoader加载失败及解决方式
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Apache Pulsar 2.1 重磅发布
  • Git 使用集
  • HTML-表单
  • Java 多线程编程之:notify 和 wait 用法
  • Vue.js源码(2):初探List Rendering
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 排序算法学习笔记
  • 深入 Nginx 之配置篇
  • 用jquery写贪吃蛇
  • 再次简单明了总结flex布局,一看就懂...
  • 自动记录MySQL慢查询快照脚本
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #### golang中【堆】的使用及底层 ####
  • #{}和${}的区别?
  • #NOIP 2014#Day.2 T3 解方程
  • #pragma once与条件编译
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (1) caustics\
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (23)Linux的软硬连接
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (二)WCF的Binding模型
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (十七)Flink 容错机制
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bashrc在哪里,alias妙用
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别