本文主要是针对非计算机行业或是计算机小白,主要介绍了计算机是如何工作的,为什么写一下代码,计算机就可以实现我们想要实现的功能。

CPU如何运作
CPU内部的算术逻辑单元(Arithmetic and Logic Unit,ALU)是处理器最核心的部件,相当于CPU的大脑。理解了ALU的工作流程基本上也就理解了计算机的工作流程。ALU由算术单元和逻辑单元组成,算术单元主要负责数学运算,如加、减、乘等;逻辑单元主要负责逻辑运算,如与、或、非等。ALU只是纯粹的运算单元,要想完成一个指令运行的整个流程,还需要控制单元的协助。控制单元根据程序计数器PC中的地址,会不断地从内存RAM中取指令,放到指令寄存器中并进行译码,将指令中的操作码和操作数分别送到ALU,执行相应的运算。

示例
以两个整数A、B相加的指令为例,控制单元通过指令译码电路会将该指令分解为操作码和操作数,再根据操作数地址从内存RAM中加载(Load)数据A和B,传送到ALU的输入端,然后将操作运算类型(操作码)即加法也告诉ALU。ALU有了输入数据和操作类型,就可以直接进行相应的运算了,并输出运算结果。为了效率考虑,运算结果一般会先保存到寄存器中,然后由控制单元将该数据从寄存器存储(Store)到内存RAM中。执行到这一步,一个完整的加法指令执行流程结束,控制单元会继续取下一条指令,然后翻译指令、运行指令,周而复始。CPU内部有个程序计数器(Program Counter,PC),系统上电后默认初始化为0,控制单元会根据这个PC寄存器中的地址到对应的内存RAM中取指令,然后PC寄存器中的地址自动加一。通过这种操作,控制单元就可以不停地从内存RAM中取指令、翻译指令、运行指令,程序就可以源源不断地运行下去了。

早期CPU的工作频率和内存RAM相比,差距不是一般的大。控制单元从RAM中加载数据到CPU,或者将CPU内部的数据存储到RAM中,一般要经过多个时钟读写周期才能完成:找地址、取数据、配置、输出数据等。运算速度再快的CPU,也只能傻傻地干等几个时钟周期,等数据传输成功后才可以接着执行下面的指令。内存带宽的瓶颈会拖CPU的后腿,影响CPU的性能。为了提高性能,防止RAM拖后腿,CPU一般都会在内部配置一些寄存器,用来保存CPU在计算过程中的各种临时结果和状态值。ALU在运算过程中,当运算结果为0、为负、数据溢出时,也会有一些Flags标志位输出,这些标志位对控制单元特别有用,如一些条件跳转指令,其实就是根据运算结果的这些标志位进行跳转的。CPU跳转指令的实现其实也很简单:根据ALU的运算结果和输出的Flags标志位,直接修改PC寄存器的地址即可,控制单元会自动到PC指针指向的内存地址取指令、翻译指令和运行指令。跳转指令的实现,改变了程序按顺序逐步执行的线性结构,可以让程序执行更加灵活,可以实现更加复杂的程序逻辑,如程序的分支结构、循环结构等。

CPU所支持的加、减、乘、与、或、非、跳转、Load/Store、IN/OUT等基本指令,一般称为指令集。任何复杂的运算都可以分解为指令集中的基本指令。在软件层面上,我们可以把这些有限的基本指令进行不同的组合,实现各种不同的功能:播放视频、播放音乐、图片显示、网络传输。我们也可以基于这些基本指令实现新的指令,以除法运算为例,如果CPU在硬件电路上不支持除法指令,我们就可以基于CPU指令集中的原生加、减、移位等指令来模拟除法的实现,生成新的除法指令。

这种由基本指令组成的不同组合,我们称为程序。为了编程方便,我们给每个二进制指令起一个别名,使用一个助记符表示,这些助记符就是汇编语言,由助记符组成的指令序列就是汇编程序。汇编语言的可读性虽然比二进制的机器指令好了很多,但是当汇编程序很大、程序的逻辑很复杂时,维护也会变得无比艰难,这时候高级语言就开始问世了,如C、C++、Java等。高级语言的读写更符合人类习惯,更适合开发和阅读,编写好的高级语言程序通过编译器,就可以翻译成CPU所能识别的二进制机器指令。

CPU内部结构及工作原理相关推荐

  1. CPU的cache工作原理

    CPU的cache工作原理 博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来指教共同探讨,谢谢!博主最近的工作是CPU集成设计,所以接下来的篇章将以CPU的学习讲解 ...

  2. CPU GPU设计工作原理《转》

    我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...

  3. CPU GPU设计工作原理

    转自:http://blog.csdn.net/claien/article/details/6965135 要说到设计的复杂程度,那还是CPU了!这个不用讨论,很简单的道理你看看显卡芯片的更新速度和 ...

  4. 三极管在ad中的原理图库_555时基电路内部结构及其工作原理

    555时基电路特点 时基电路是一种常用的模数混合型集成电路.由它组成的振荡器.单稳态触发器.双稳态触发器和各类电子开关等都被十分广泛地应用在各类电路之中.它具有定时精度高.响应速度快.温漂小.输出驱动 ...

  5. pwm控制舵机转动角度程序_舵机的内部结构及工作原理

    一.舵机实物图 舵机是机器人旋转关节中的常用部件,尤其是小型机器人.其实物就像下面这张图,相信大家都不会陌生.大家一定见过春晚上哪个跳舞的小机器人,其全身各关节都是有舵机组成.我们常见到的舵机就是这个 ...

  6. CPU结构及工作原理

    CPU结构 中央处理器(CPU,Central Processing Unit)的功能主要是解释计算机指令以及处理计算机软件中的数据. 图1 CPU主要结构 CPU从逻辑上可以划分成3个模块,分别是控 ...

  7. 计算机组成之cpu组成及工作原理

    计算机由五部分组成,分别为存储器,控制器,运算器,输入设备和输出设备. 早期的处理器(CPU)是由控制器和运算器组成,而现代的CPU为了提升性能则在早期CPU的基础上增加了内部寄存器,用来暂时存放参与 ...

  8. cpu与外设工作原理

    总结来说,就是插上外设后,cpu就可以检测和连接到外设上的寄存器,把它当成内存来使用,然后就是对这些寄存器进行读写,写控制寄存器来控制外设,读状态寄存器来检测外设状态(外设会把当前状态信息放到指定寄存 ...

  9. Tomcat内部结构及工作原理学习

    概览 Tomcat原本是Servlet/JSP的一个调试工具,后来才发展为一个Servlet/JSP的容器(不要轻视你写的工具,说不定会变成一个有用的轮子呢). Tomcat作为Servlet容器,负 ...

最新文章

  1. Android开发中Handler的经典总结
  2. C# 泛型(Generic)
  3. JAVA比较两个List集合的方法
  4. 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包
  5. react antd 更改table 表头和表行样式
  6. JavaScript 执行覆盖测试分析
  7. 3号团队-团队任务5:项目总结会
  8. QQ解封地址大全集合
  9. 2021年深圳市坪山区贴息贴保资助申请条件及材料,补贴100万元
  10. javaweb验证码明明输入正确却还是提示错误,验证码session不同步、不一致问题
  11. android数字转汉字,【原创】最精简的中文数字和阿拉伯数字互相转换函数
  12. MIME类型是什么意思
  13. 浅谈区块链技术对未来行业的影响
  14. 励志!从职高到杭电、浙大、MIT计算机博士!
  15. 国家统计局2020年6月30日最新省/市/县三级json数据(不包含港澳台)
  16. 七麦研究院首发AR产品数据报告,数读App Store上的AR世界
  17. vue开发环境、正式环境的配置及原理
  18. 水平导航栏和垂直导航栏
  19. 项目沟通与干系人管理:沟通渠道选择、干系人权力/利益方格
  20. 关于在杭州滨江区租房的一些建议

热门文章

  1. 不解,排名靠前那么多的人为什么抄袭我的activit博文??
  2. 开发平台之美:10分钟内实现一个销售订单功能的增删改查
  3. Mac上如何提取图片上的文字?
  4. DEEPIN 安装软件的方法
  5. 怎样获取上传至腾讯开放平台app的下载链接
  6. ntp和chronyd
  7. Android开发艺术探索——第十四章:JNI和NDK编程
  8. XDSL-V/G SHDSL(台湾)
  9. Eclipse不提示的解决办法
  10. 熔断器hystrix的使用