开发者社区> 流楚丶格念> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

中央处理器——CPU的功能和基本结构

简介: 中央处理器——CPU的功能和基本结构
+关注继续查看

CPU的功能


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


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


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


  1. 数据加工。对数据进行算术和逻辑运算。


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


运算器和控制器的功能


  • 运算器:对数据进行加工


  • 控制器


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


取指令:自动形成指令地址;自动发出取指令的命令。


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


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


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


更形象点,如下图:


image


运算器的基本结构


运算器包括:算术逻辑单元与通用寄存器组。


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


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


例如下图:(当然没有这么简单,这只是个概图,肯定不是这么简单的了,大家可以先参考一下)


image


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


问题探究


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


那肯定是不行的呀,这样数据不就传输混乱的嘛,那么我们怎样解决呢?


解决方法1. 使用多路选择器


根据控制信号选择一路输出


image


解决方法2. 使用三态门


可以控制每一路是否输出


如:


R0out为1时R$中的数据输出到A端,
R0out为0时R$中的数据无法输出到A端


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


运算器真正的基本结构


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


image


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


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


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


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


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


  1. 移位器:对运算结果进行移位运算。


  1. 计数器:控制乘除运算的操作步数。


优缺点


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


控制器的基本结构


image


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


  1. 指令寄存器:用于保存当前正在执行的那条指令。


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


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


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


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


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


我们上面运算器与控制器合起来,构成一个CPU。


CPU整体的基本结构


image


我们将标注上ALU 寄存器 CU 中断系统后是这个样子。


image


小结


image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
签到功能,用 MySQL 还是 Redis ?
签到功能,用 MySQL 还是 Redis ?
27 0
赞!推荐一款仙女颜值的 Redis 客户端工具
赞!推荐一款仙女颜值的 Redis 客户端工具
31 0
【Redis破障之路】二:Redis安装和基本数据结构
【Redis破障之路】二:Redis安装和基本数据结构
35 0
SWPU CTF题解
本博客为西南石油大学(南充校区)CTF团队赛的题解 所有题目网址:http://47.106.87.69:9000/game 今天我是流泪狗狗头 解压后发现压缩包中是一个带有密码的图片,winhex分析二进制,发现文件数据区的全局加密为00 00,但压缩源文件目录区的全局方位标记为09 00,...
1476 0
redis-server进程CPU百分百问题
结论: 待确认是否为redis的BUG,原因是进程实际占用的内存远小于配置的最大内存,所以不会是内存不够需要淘汰。 CPU百分百redis-server进程集群状态: slave 解决办法: 使用gdb将d.ht[0].used的值改为0 问题原因: dictGetRandomKey()过程中, 无法走到分支“if (dictSize(d) == 0) return NULL;”, 导致函数dbRandomKey()进入死循环。
2536 0
Win8 Metro(C#)数字图像处理--2.69中点滤波器
原文:Win8 Metro(C#)数字图像处理--2.69中点滤波器 [函数代码] /// /// Mid-point filter.
976 0
Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果
原文:Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果  [函数名称] RGB分量调整         RGBAdjustProcess(WriteableBitmap src, i...
815 0
[b]PHP开发Web服务[/b]
[align=center][b]PHP开发Web服务[/b][/align]WSO2 WSF/PHP(WSO2 Web Services Framework/PHP,WSO2 Web服务框架) 是一个PHP扩展,允许用来创建和使用Web服务。
732 0
+关注
流楚丶格念
csdn平台优质创作者,51cto TOP博主,360图书馆科技博主,燕山大学目前大三在读,日拱一卒,功不唐捐,加油!!!
1010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载