文章目录
- 起步:认识计算机
- 一、计算机发展历程
- 1.1、什么是计算机系统
- 1.2、计算机硬件的发展
- 1.2.1、总览四代发展
- 1.2.2、四代发展详细介绍
- 1.2.3、计算机硬件的发展历史
- 1.2.4、摩尔定律介绍
- 1.3、计算机软件的发展
- 1.3.1、软件的发展
- 1.3.2、目前的发展趋势
- 知识回顾与重要考点
- 二、计算机的层次结构
- 2.1、计算机硬件的基本组成
- 2.1.1、冯诺依曼基本思想及特点(以运算器为中心,包含五大部件)
- 2.1.2、现代计算机的结构(以存储器为中心)
- 知识点回顾与重要考点
- 2.2、各个硬件的工作原理
- 2.2.1、主存储器的基本组成
- 2.2.2、运算器的基本组成
- 2.2.3、控制器的基本组成
- 2.2.4、计算机的工作过程
- 高级语言示例并分析指令执行
- ①第一条指令:执行取数指令
- ②第二条指令:执行乘法指令
- ③第三条指令:执行加法指令
- ④第四条指令:执行存储操作
- 知识点回顾与总结
- 2.3、计算机系统的层次结构
- 2.3.1、计算机的层次结构
- 2.3.2、三种级别的语言(机器、汇编与高级语言,汇编、编译与解释程序)
- 知识回顾与重要考点
- 2.4、计算机体系结构vs计算机组成原理
- 三、计算机的性能指标
- 3.1、存储器的性能指标
- 3.2、CPU的性能指标
- 3.3、系统整体的性能指标
- 3.4、基准程序(整体的性能指标,动态测试)
- 关于电脑机器性能好是否只由主频、CPI或者基准测试程序分数决定?
- 知识点回顾与重要考点
起步:认识计算机
计算机中通过电信号来传递数据:计算机识别二进制数据的原理
熟悉硬件:
- 主板上的印刷电路如何传输数据:可以看到有多个电路,这个就是各个部件之间传输电路的通道。
一、计算机发展历程
1.1、什么是计算机系统
软件的分类:
计组中主要去探究硬件部分!
1.2、计算机硬件的发展
1.2.1、总览四代发展
主要是利用电路来进行运算,下面是各个时代发展阶段:
1.2.2、四代发展详细介绍
第一代:电子管时代
在这一代时,程序员都是使用机器语言来进行编程
第二代:晶体管时代,替代了电子管
体积减小、功耗降低,计算速度也达到了质的飞跃,此时出现面向过程的语言:FORTRAN,有了操作系统雏形。
第三代:中小规模集成电路时代,集成电路
计算机变得越来越小,功耗变低,集成电路比手动焊接的晶体管的可靠性更好,此时高级语言迅速发展,此时有了分时操作系统。
- 其实就是将晶体管、电容元器件高密度的存在了电路板上。
此时阶段主要用于科学计算,暂时还没有步入个人生活:
第四代:大规模,超大规模集成电路
随着集成电路的提升,出现第四代,此时开始出现微处理器,也就是CPU,例如苹果的A13。
芯片技术的进步导致微处理器的诞生,同时也导致微型计算机的诞生,之后微型计算机开始逐步步入每一个人的生活。
看一下Intel公司处理器的发展:
- 例如采用8080的8位CPU处理16位字长,则需要处理两次,而采用8086则只需要处理一次即可。
1.2.3、计算机硬件的发展历史
1.2.4、摩尔定律介绍
摩尔定律出自仙童公司的摩尔提出的:
1.3、计算机软件的发展
1.3.1、软件的发展
1.3.2、目前的发展趋势
知识回顾与重要考点
二、计算机的层次结构
2.1、计算机硬件的基本组成
2.1.1、冯诺依曼基本思想及特点(以运算器为中心,包含五大部件)
早期的冯诺依曼机器:
原本的手动接线需要程序员或操作员先去手动的操作布线,之后才操作完成之后才能够进行运算。
而冯诺依曼提出了存储程序的概念,提前可以将二进制代码输入计算机的主存储器,之后按照存储器的首地址执行程序的第一条指令,接着就往后执行其他指令直到结束。
- 存储器->控制器中的传输线:控制器从存储器中读取指令的一个数据流
对于同一个功能可以使用软件来实现,也可以使用硬件来实现。
- 软件实现成本更低,效率更低。
- 硬件实现成本更高,效率更高。
冯诺依曼计算机特点:
以运算器为中心,那么相当于所有的数据都要经过运算器,那么就会导致效率降低,针对于这个问题,现代计算机做了优化,实际加工厂例子:
- 有些计算机的指令可执行多个地址码的,例如一条指令包含两条地址,这种指令被称为二地址指令。
- 存储程序:在程序运行之前,会将指令与数据提前存储到内存当中。
2.1.2、现代计算机的结构(以存储器为中心)
优化之前冯诺依曼以运算器为核心的架构,现代计算机的机构是以存储器为核心,如下图:
输入设备的数据是直接放入到存储设备中去的,当运算器处理完毕之后,输出设备也会直接从存储器中取出数据,此时就可以更多的解放运算器的时间,让运算器进行更多的计算。
注:由于运算器、控制器之间的逻辑关系十分紧密,在大规模集成电路工艺出现了之后,这两个部件通常是集成到同一个部件上的,整合了整两个部件就是现在的CPU。
看一下硬件的组成部分及主机、IO设备的包含范围:
知识点回顾与重要考点
2.2、各个硬件的工作原理
寄存器也是存放二进制数据,MAR是存放与地址相关的二进制数据,MDR是存放实际的数据
2.2.1、主存储器的基本组成
左边是主存储器的结构,而右边则是去仿照主存储器来说明的现实应用:
接下来理解一下MAR与MDR的作用:
对于存储器来说,CPU可以指明要写入到哪个位置(放入到MAR),写入的哪个数据(放入到MDR),最后CPU会通过控制总线告诉主存储器说这次要进行的操作是写操作,那么主存储器根据CPU发出的这三个信息,就可以往对应的位置写入CPU想要写的数据了。
接着来理解下存储体:一个存储体包含多个存储单元,一个存储单元对应一个地址
- 一个字的大小要看主存储器的计算机硬件如何设计,有8、16、32位的。不要将其和1个字节混淆,还有1B、1b。
额外扩展:例如宽带的100Mbps换算对应的迅雷下载为B,则中间有8倍的关系,实际下载为10MB/s。
2.2.2、运算器的基本组成
主要有三个不可或缺的寄存器以及一个核心部件。
运算器里面制造成本最高的是ALU,其他基本都是存放操作数的。
2.2.3、控制器的基本组成
在控制器中CU才是真正的核心,很多时候会将PC、IR统称为取指阶段,CU表示为执行阶段:
2.2.4、计算机的工作过程
高级语言示例并分析指令执行
下面执行一段程序,我们来看在计算机硬件部分是如何运行的:
接下来看一下对于一条y=a*b+c指令在硬件指令的运行过程:
①第一条指令:执行取数指令
执行主存地址0的一条指令流程:其是一条取数指令,包含下面的多个硬件执行步骤
初步:PC(0):取出地址为0的指令并执行。
#1:(PC)->MAR:会导致(MAR)=0,控制器向主存指明了接下来要访问的是0号地址的这一串数据,同时控制器会通过控制总线告诉主存储器这次要进行的是读操作,接下来主存储器会根据MAR记录的这条地址去存储器里找出0号地址所对应的二进制数据,并将二进制数据放入到MDR当中。
- (MAR)有括号,表示的是里面的内容。
#3 M(MAR)->MDR:表示将主存储器中的MAR地址中的数据放入到MDR当中。
- M(MAR):表示的是主存储器里的MAR
#4 (MDR)->IR:会将当前MDR中的数据放入到IR寄存器中。
#5 OP(IR)->CU:会将IR的前6位送到CU中,CU识别6位二进制为取数指令。
#6 Ad(IR)->MAR:此时会将在IR中的地址码送到MAR中,导致(MAR)=5
#8 M(MAR)->MDR:表示将主存储器中的MAR地址中的数据放入到MDR当中。
最终在控制单元的操作下,会将MDR的数据传输到ACC中。
#9 (MDR)->ACC:将MDR中的值传输到ACC累加器中。
上面的多个步骤实际上可分为取指令、分析指令以及执行指令:
此时当一条指令执行完成之后,PC会自动+1,也就是说会去执行主存地址为1的指令。
②第二条指令:执行乘法指令
接下来执行第二条指令:很明显中间过程也是让CU去处理识别操作码000100,即为乘法指令,对应的地址码指定主存地址为6的
执行第二条指令的完成步骤如下图所示:
注意在这一个阶段将MDR中的数据会传输到MQ当中去,此时b=3。
接着会将对应的被乘数2,也就是(ACC)->x,将ACC中的值放入到x中,令(x)=2。
最终执行由ALU执行完乘法操作,(MQ)*(x)->ACC,将乘法求得的数放置到ACC中。
注意:其中的取指令、分析指令过程与执行指令一一致,对于执行xx指令的步骤不相似。
③第三条指令:执行加法指令
上面第二条指令执行完毕之后,PC同样会加1,此时开始执行主存地址为2的PC指令:
在执行加法的时候,X中存放被加数,ACC中存放加数。
④第四条指令:执行存储操作
第三条指令执行完成后,执行主存地址为3的指令:实际就是将之前的y=a*b+c=2*3+1=7
存储到指定0000000000000111地址空间中
第五条指令:执行停机指令
知识点回顾与总结
2.3、计算机系统的层次结构
2.3.1、计算机的层次结构
上面计算机工作过程中执行多条指令中的一个指令的多个命令,实际上就是微指令:
像这里的层次结构(与操作系统有些不同)更多的是从编程人员与硬件设计人员角度来考虑的。
2.3.2、三种级别的语言(机器、汇编与高级语言,汇编、编译与解释程序)
部分语言并不是直接通过编译程序来进行一步步编译到机器语言的,而是通过解释程序来翻译成与之对等的机器语言程序。
编译程序与解释程序区别:
- 编译程序是可以编译成.exe文件来最终执行的。(只需要翻译一次)
- 解释程序则是翻译一句就立即执行,每次执行都要翻译。(每次执行都要翻译一次)
知识回顾与重要考点
2.4、计算机体系结构vs计算机组成原理
两者的不同点:
- 计算机体系结构:探讨的指令系统怎么设计,我设计的计算机需要对上层的程序员提供什么样的指令,有无乘法指令,若是不提供乘法指令,那么想要实现乘法功能的程序员,那么就只能通过执行多次加法来得到最终结果。
- 计算机组成原理:如果我要给上层提供乘法指令,那么对于乘法指令我如何用硬件来实现。
三、计算机的性能指标
3.1、存储器的性能指标
主要包含MAR与MDR:
注意下下面的一些注意点:
点1:MAR的位数可以直接表示实际的容量,也就是按照最大值来算就可以了。
- 因为在现实情况中并不是都有满的容量情况,考试直接按照最大来算即可。
点2:关于MAR多少位,为什么就可以直接使用232来计算呢?
3.2、CPU的性能指标
指标:CPU时钟频率、CPU主频、CPI
主频越高,速度也越快,很大程度上反应了CPU的性能。并不是只有主频才会影响CPU运行,还有如CPI等一些指标。
CPI
:不同的指令,CPI也有可能会不同,甚至是相同的指令,也会有变化。
- 一般来说我们都是去计算的一条指令平均耗时:
一条指令的耗时 = CPI x CPU的时钟周期
此时我们可以做一题示例:
- 其中3* (1 / 1000)就是一条指令的耗时,那么100条指令耗时就得到了上面的式子。
指标:IPS、FLOPS
- 例如:2MIPS表示每秒钟2百万条指令。2GIPS表示每秒二十亿条指令。
- 3TFLOPS:表示3万亿次的浮点运算,拆分为3、T、FLOPS。
3.3、系统整体的性能指标
3.4、基准程序(整体的性能指标,动态测试)
本质上就是给你设计好了一大段程序代码,在这段代码中包含了各种各样的指令,各种指令出现的频次,频率是不一样的,会根据你电脑所运行指令的耗时来评定打分。
关于电脑机器性能好是否只由主频、CPI或者基准测试程序分数决定?
结论:决定执行指令速度的快慢与主频、CPI(一条指令执行的时间)、指令系统(不同的指令系统指令不一样都有,例如若是乘法指令没有就需要执行多条加法指令)有关
**问1:主频高CPU一定比主频低CPU快?**并不是,若是CPI快,后者可能执行的指令也很快!
问2:若是问1中CPI一样呢,是否还是主频高的CPU快?
问3:基准程序跑分越好,电脑机器性能越好?
分数越高未必越好,要根据你的实际用途来进行测试,例如你的电脑对于运算十分擅长,但是你却用来进行显卡测试,明显不会高分。
知识点回顾与重要考点
整理者:长路 时间:2023.5.20-21