计算机是如何工作的?

本文概述了计算机从电子管到现代集成电路的发展历程,介绍了冯诺依曼体系的构成,详细解释了CPU的工作原理,包括指令、操作码、执行过程等,以及不同架构的CPU特点。
摘要由CSDN通过智能技术生成

1-计算机发展史

计算机的发展从一般的计算工具到机械计算机到目前的电子计算机的发展历程,这是百度百科的解释

  1. 第一代计算机(1946-1958年):采用电子管作为逻辑元件,体积庞大、笨重、耗电多、可靠性差、速度慢、维护困难。主要用于军事目的和科学研究
  2. 第二代计算机((1959-1964年):采用晶体管作为逻辑元件,体积减小、功能增强,开始用高级语言编写程序,并出现了管理程序。电脑的应用从军事领域和科学计算扩展到数据处理和事务处理。
  3. 第三代计算机((1965-1970年):采用中小规模集成电路作为逻辑元件,采用微程序技术和流水线技术提高了电脑的灵活性和运行速度。软件方面管理程序已经发展为操作系统,并出现了诊断程序。主要用于科学计算、数据处理以及过程控制。
  4. 第四代计算机((1971年至今):采用大规模和超大规模的集成电路作为逻辑元件,使得计算机体积更小,功耗更低,性能更强。软件情况为网络操作系统和面向对象程序设计使用了。

那从现代定义什么是计算机?手机,电脑,路由器....等一系列,但是大体上主要分为三个部分

1.终端设备;台式机,手机,ipad,平时用户所使用的设备

2.服务器:主要是开发人员所涉及到,服务器也就是大一点的计算机,拥有更大的内存,硬盘空间,更快的CPU,更优秀的显卡,更卓越的设备所组成的一台计算机

2.冯诺依曼体系

冯诺依曼体系是由冯-诺伊曼创建,在成为计算机大神之前就已经是数学家,物理学家,化学家,还是博弈论之父,还参与过“曼哈顿计划”,后续参与了第一台通用计算机(ENIAC)的研究,计算机这时的主要作用就是计算弹道轨迹,近似计算数值,计算机就应运而生,冯大佬就创建出了冯诺依曼体系

冯诺依曼体系是从第二代计算机开始一直在支持的体系,主要由输入设备,CPU(运算器+控制器),存储器,输出设备组成

CPU中央处理器:进行算术运算和逻辑判断

CPU的占用率:相当于老板让你8小时完成工作,你四小时完成了工作,那么占用率就是50%,主要由硬件的性能以及程序的运行与否有关,想要达到100%的占用率,可以在Linux系统上进行程序运行,在Linux系统中,目前电脑基本都是多核CPU,CPU的占用率就是简单的相加,会超过100%

CPU的频率:可以简单的理解为1秒CPU执行多少次指令,这里可以理解为完成三条指令(一个指令周期的数量)所需要的时间,2.24Ghz可以简单理解为下面的指令一秒执行22.4亿轮指令

CPU频率主要是两个概念:基础频率(保底有多少)和最大频率(拉满的频率多少)

也可以参考如下文章

存储器:分为内存和外存,用于存储数据(使用二进制方式存储)

输入设备:用户给计算机发号施令的设备

输出设备:计算机给用户汇报结果的设备

存储空间的读写速度:寄存器>缓存(CPU)>内存(RAM)>硬盘>软盘,而存储空间的大小则刚好相反

3.指令(Instruction)

3.1介绍CPU大致种类

指令可以简单的理解为CPU被设计的时候,给程序员提供的一些“程序接口”,近似理解成CPU给程序员提供的API,不同的CPU,提供的指令是不一样的,虽然不相同,但是还是有几套标准的

最主流的一套标准是x86架构的CPU,intel和amd生产的pc/服务器都属于是x86系列的cpu

留一套也非常流行的标准是arm架构,手机,平板,各种嵌入式设备,苹果的M1芯片,M2芯片

arm架构,论性能不及x86,但是功耗比较低(省电),比较适合移动设备

不同架构的CPU指令是不同的,在上个世纪70年代左右,Intel就发布了8086CPU,学校里可能会讲到,80286,80386,80486...支持的指令和内部的构造大同小异,都被称为x86系列,现在Intel不生产这个,现在生产酷睿系列,但是仍然属于x86体系下的cpu,amd为了和Intel兼容,也搞得x86架构的CPU

不同场景下的cpu可能名字不一样,但是内核都是一样的,例如AMD搞得家用端叫锐龙,服务端就叫做霄龙

我们写的程序最后会被机器识别,那么指令在CPU上会找到指令集,这个指令集是在造电脑的时候厂家自动加上的,类似于jvm可以识别Java的字节码文件

所谓指令,即指导 CPU 进⾏⼯作的命令,主要有操作码 + 被操作数组成。

3.2CPUopcode(操作码)

下列opcode就是

指令(instruction)功能说明4位opcode操作的地址或者寄存器
LOAD_A从RAM的指定地址,将数据加载到A寄存器00104位RAM地址
LOAD_B从RAM的指定地址,将数据加载到B寄存器00014位RAM地址
STORE_A将数据A寄存器写入RAM的指定地址01004位RAM地址
ADD计算两个指定寄存器的数据的和,并将结果放入第二个寄存器1000

2位的寄存器ID

2位的寄存器ID

3.3CPU执行指令的过程

CPU执行分为三个阶段:取码阶段,解码阶段,执行阶段,这三个阶段完成也被称作一个指令周期,CPU不是靠自己来驱动这个周期的运转,而是靠背后一个时钟进行周期驱动,中央处理器也包含很多:ALU+CU+寄存器+时钟

1. CPU 中的 PC 寄存器,是决定 CPU 要执⾏哪条指令的关键

2. 指令是由 动作 + 操作对象组成

3. CPU 眼中只有指令,没有其他的概念

在读取指令时会非常复杂,我们简化这个模型

在上编译原理这门课时,我们会详细了解到这些具体模型的知识

取码阶段:也就是读指令,在把代码加载到内存上时,CPU就可以读到内存上的数据转化为指令,

解析指令:理解当前指令要做啥

执行指令:顾名思义就是让cpu去执行指令

上图是一个指令表,CPU会按照内存地址按顺序进行读取数据,

3.4CPU执行指令的具体过程

从0地址开始 数据时00101110,按照我们上面所说,每四个是一个单位,那么0010 1110就是LOAD_A操作(把数据放在A寄存器)+1110数据,也就是将1110加载到1110地址处

1地址 数据为0001 1111,把数据加载到B寄存器,数据为1111

2地址处1000 0100,将前两个寄存器上的值相加 也就是1111+1110,并且将结果放在B寄存器上

3地址处0100 1101 把1101存储到A寄存器.....等等操作均是操作码+操作数

这些操作一直到 0 0 0 0 0 0 0 0 指令表上没写,这是结束的标志

综上我们理解了CPU的朴素的工作原理,虽然我们平时用不到,但是在程序出问题时我们可以写一个特定的程序(修改内存数据)从CPU执行指令的过程中进行跳转,从而解决bug

通过这篇文章我们基本理解了计算机的架构以及CPU底层的执行逻辑,对CPU有了进一步的理解,未来我们将介绍操作系统引出线程的概念,敬请期待!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值