文章目录

  • 前言
  • 计算机的发展史
  • 冯诺依曼体系
  • 什么是CPU(中央处理器)
    • 算数逻辑单元ALU
      • 算数单元
      • 逻辑单元
      • ALU符号
    • 寄存器和内存
    • 控制单元CU
    • 指令
    • CPU的工作流程
    • CPU的中断模式
  • 编程语言
  • 总结

前言

当前计算机技术获得了迅猛发展,广泛的应用于人们的日常生活中,给人类的生活带来了巨大的便利,随着社会发展,越来越多的人对计算机产生了浓厚的兴趣,下面我就带大家来揭开计算机的神秘面纱,学习计算机是如何工作的!


计算机的发展史

关于计算机的发展史,不得不说,如果让我来写,我可能写三天三夜也写不完,历史是人类宝贵的财富,而将计算机和历史联系在一起又能产生怎样的火花呢?下面这篇文章就会告诉我们:

来自 涛歌依旧 的:《古今计算机发展简史》
古今计算机发展简史

冯诺依曼体系

现代计算机之父----冯诺依曼

约翰·冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。冯·诺依曼是罗兰大学数学博士,是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”。

那什么是冯诺依曼体系呢?

冯诺依曼结构图如下:

  • CPU 中央处理器: 进行算术运算和逻辑判断.
  • 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储).
  • 输入设备: 向计算机输入数据和信息的设备.
  • 输出设备: 计算机硬件系统的终端设备.

什么是CPU(中央处理器)

CPU是计算机的心脏,负责执行提供给它们的指令,它的主要任务是执行算术运算和逻辑运算,并将指令协调在一起。

算数逻辑单元ALU

ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。ALU的基本功能包括加,减,乘,除四则运算,与,或,非,异或等逻辑运算,以及移位,求补等操作。

算数单元

算数单元:算数单元就是负责计算机里的所有数字操作,比如四则运算等。
接下来我们通过实现一个8位数加法器来理解算数单元。
半加器

全加器

上面介绍了半加器和全加器,8位数加法器就是由半加器和全加器组合而成的,如下图所示:

逻辑单元

逻辑单元:逻辑单元主要用来进行逻辑操作,最基本的操作就是与、或、非、异或操作,它还能做简单的数值测试,比如利用许多个“或门”来检测一个8位数是否为“0”。

判断一个8位数不为0

判断一个8位数为0

ALU符号

一个8位的ALU可能会需要数百个逻辑门,所以科学家们用一个特殊的符号来代表它,它的形状就像一个大写的V。

寄存器和内存

AND-OR锁存器
之所以叫“锁存”,是因为它锁定了一个值,放入数据的动作叫“写入”,拿出数据的动作叫“读取”。

但是它有两条输入线,为了方便使用,我们希望它只有一条输入线,所以就出现了“门锁”这个概念,对于门锁来说,当允许写入线被置为0时,数据输入线不论是1还是0,数据输出不变,而当允许写入线被置为1时,数据输入1,输出就为1,数据输入0,输出就为0。

寄存器就是由一组锁存器构成的,如下图所示为一个8位寄存器:

内存(RAM)的构建基本原理和寄存器是一致的:

控制单元CU

控制单元:控制单元CU是CPU部件之一,有时也安装于CPU外部,其基本功能是从内存取指令、分析指令和执行指令。
控制单元结构:

从上图可以看出控制单元CU分为输入信号和输出信号。
输入信号:指令寄存器、标志、时钟、来自系统总线的控制信号(中断请求)。
输出信号:CUP内部的控制信号、到系统总线的控制信号(读写,中断响应)。

指令

指令:所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。
如下图所示:

CPU的工作流程

CUP的操作流程如下:

  1. 取码阶段:CU根据PC寄存器的值,去内存的响应位置,把数据(指令)读取到 IR 寄存器中,正常情况下,PC寄存器中的值自动+1;
  2. 解码阶段:CU按照预先设定的指令集解读指令数据(opcode+操作数),例如上述的:0010 1110,人为规定:0010是opcode,查询指令表,知道0010代表的意思是,从后边地址指定内存处,将数据读取到A寄存器,1110代表地址为14的内存处;
  3. 执行阶段:LOAD指令应该由CU执行,所以按照规定执行指令:从内存的14地址处,将数据读取到A寄存器中。

关于PC寄存器:

  • 由于硬件中PC在自动+1,所以我们的代码变成的指令才能顺序的的往下去执行
  • 代码中的一条语句,很可能是需要多条指令才能完成的
  • PC寄存器中的值在这个指令周期中很关键,可以控制执行哪里的指令
  • 通过CPU中预先规定的指令,可以修改PC中的值(带条件修改),进而影响执行流

CPU的中断模式

在正常模式下,CPU可以顺序执行,可以分支执行,但总归只能按照既定的顺序执行,但现实中,很多时候需要暂时中断CPU的当前执行流,先让CPU去做其他工作,再回头来继续原来的执行流。

CPU中提供了一种机制让CPU停下:

  1. 保存当前的PC的值到内存的某个位置
  2. 修改PC的值,让执行其他执行流
  3. 其他执行流执行结束之后,通过刚才保存的PC值恢复到PC寄存器
  4. 继续原来的执行流

中断的应用:

  • IO设备的处理
  • 操作系统中用来作进程调度

编程语言

程序:所谓程序,就是一组指令以及这组指令要处理的数据。狭义上来说,程序对我们来说,通常表现为一组文件。

程序 = 指令 + 指令要处理的数据


总结

以上就是今天要讲的内容,本文仅仅简单介绍了CPU,实际上计算机中的结构是非常复杂的,要花费更多的时间才能学习透彻,如果觉得本文对你有帮助的话,就留下你的

揭晓计算机的神秘面纱——计算机是如何工作的(一)相关推荐

  1. 计算机精准教学,“精准教学”一定要平板电脑?看看他们如何因陋就简,揭开精准教学的神秘面纱...

    原标题:"精准教学"一定要平板电脑?看看他们如何因陋就简,揭开精准教学的神秘面纱 10月28日上午,丽水经济开发区第一中(小)学邀请了两位来自上海的教育技术专家来校,就关于如何开展 ...

  2. 四川音乐学院计算机音乐创作,大学生计算机音乐创作类决赛揭晓 浙音6件作品均获奖...

    4个获奖作品被推荐为北京国际电子音乐节演出系列作品,这在以往的9届中国大学生计算机设计大赛计算机音乐创作类比赛中从未出现过.浙江音乐学院侯智鹏作品<错音>和伍真.刘志良作品<悬空的琴 ...

  3. 了解黑客的关键工具---揭开Shellcode的神秘面纱

    2019独角兽企业重金招聘Python工程师标准>>> ref:  http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开 ...

  4. 揭开人类语言的神秘面纱:从理解到处理自然语言

    https://www.toutiao.com/a6709740042509615619/ 随着人工智能的进步和技术变得越来越复杂,我们希望现有的概念能够接受这种变化或者改变自己.同样,在自然语言的计 ...

  5. python可以干什么-Python可以用来做什么 为你揭开python神秘面纱

    Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24     来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...

  6. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍

    揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...

  7. 未来已来?揭开量子计算机的神秘面纱

    从第一台现代计算机ENIAC的诞生到个人PC时代的降临,从互联网概念的提出到移动互联的疾跑,在这个信息年代里,变革正以前所未有的速度改变着我们熟悉的世界.熟悉的生活. 作为个人,我们早已习惯于智能计算 ...

  8. python可以给你干什么-Python可以用来做什么 为你揭开python神秘面纱

    Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24     来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...

  9. linux操作系统说课稿,信息技术《揭开LINUX的神秘面纱》教案范文

    信息技术<揭开LINUX的神秘面纱>教案范文 教学目标: 1.会启动LINUX系统: 2.会关闭LINUX系统: 3.LINUX基本界面的认识. 教学重点: 1.会启动LINUX系统: 2 ...

最新文章

  1. JQuery轻量级网页编辑器 选中即可编辑
  2. git 常用命令使用
  3. Linux网络安装(PXE + DHCP+TFTP+ Kickstart+ FTP)
  4. Linux之部署虚拟环境、安装系统
  5. java String类 常用函数
  6. android 代码 lut,Android BitmapFactory.decodeResource()错误或用于加载大LUT的替代选项...
  7. python 调用rpc服务_在Django项目中对Python函数进行RPC调用的优雅方式
  8. 【转】javascript判断浏览器是不是IE
  9. Pannellum:实例之在部分视角内展示全景图
  10. QT 控件动态效果之QPropertyAnimation
  11. 【SaaS】企业微信裂变系统引流变现系统产品介绍
  12. 【PowerBI】钉钉邮箱已经不能注册 Power BI 账号
  13. 扫描微信小程序体验版二维码无法打开
  14. Spurious vs Harmonics
  15. 内网渗透-信息收集整合
  16. java fx scen,java基础:10.2 Java FX之显示图片
  17. R语言使用Epi包的的ROC函数对多变量进行ROC分析并可视化ROC曲线、寻找最佳阈值(threshold、cutoff)、在可视化曲线中添加最佳阈值点
  18. Log Parser 2.2 + Log Parser Lizard GUI 分析IIS日志示例
  19. Halcon知识:binocular_disparity(双目视差)
  20. JsPlumb获取线数据

热门文章

  1. python怎么算一元二次方程_python如何解一元二次方程
  2. 人行征信2.0对接服务:全业务种类数据,精细您的征信业务管理!
  3. 《进化——我们在互联网上奋斗的故事》一一1.11 OKRs在J公司
  4. 电子产品高温贮存试验的价格-第三方检测机构
  5. 浅谈地面生产系统智能化配电室的应用与研究
  6. html第一个子元素选择,css选中父元素下的第一个子元素(:first-child)
  7. Mysql 删除的数据恢复
  8. Python机器学习、深度学习库总结
  9. Leetcode打卡四:将给定的单链表L: L 0→L 1→…→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→… 要求使用原地算法,并且不改变节点的
  10. nginx设置禁止访问某个页面及只允许域名访问或某个ip禁止访问