提纲
本章考点分布
(一)计算机发展历程
计算机的产生和发展
计算机的产生和发展大体过程如下:
但是学术界其实对这个划分为多少代是有争议的,有的划分为上面的五代有的划分为七代,但是大家都很统一的都认为前三代是毫无争议的。
1946年诞生了第一台电子计算机ENIAC:
然后晶体管诞生了,推进了计算机的发展:
微型计算机的出现和发展
这里就要提到一个IT届一个很出名的定律了:摩尔定律
软件技术的兴起与发展
机器语言就是0101这样的一串儿数字,复杂度可想而知。
所以为了解决机器语言的复杂性,人们又研究出了高级一点儿的汇编语言。其实汇编就是将机器语言的01数字给替换成了一些更能让人理解的字符。但是其也有一个问题就是,对于不同的机器,我们可能会需要不同的汇编语言(也就是会汇编指令去写程序)。所以后来我们又有了更高级的语言,也就是现在经常使用的编程语言。
但是计算机并不会识别高级语言,它会将我们用高级语言写的程序通过一定手段的编译过后将其转换为机器语言进行运行。
软件还能划分为如下:
数据库管理系统属于系统软件而不是应用软件,这个很容易记错。
计算机应用范围
计算机的展望
(二)计算机层次结构(重点)
计算机体系结构和计算机组成
上面的图已经蛮清楚的了我觉得…
计算机系统基本组成
这也差不多是我们这本书的教学顺序了。
计算机硬件的基本组成
提到计算机硬件的基本组成,肯定要提的就是冯诺依曼的计算机结构了,他设计的计算机是我们现代计算机的一个原型,是祖师爷。
我们来看一下各个结构的作用是什么:
运算器:进行算数运算和逻辑运算
存储器:存放数据和程序
控制器:指挥程序运行
输入设备:将信息转换为机器能识别的形式
输出设备:将结果转换为人们所熟悉的形式
冯诺依曼计算机结构的特点:
1、计算机由五大部件组成(运算/存储/控制/输入/输出)
2、指令和数据以同等地位存放于存储器内,并可按地址访问
3、指令和数据用二进制表示(0、1)
这种二进制表示法由冯诺依曼开创,在冯诺依曼之前的机器都用的十进制表示,因为二进制更符合机器的开关规则嘛,这样机器会运算更快一些,所以得到了广泛应用
4、指令由操作码和地址码组成
对于冯诺依曼计算机来说,它的指令由操作码和地址码共同组成,对于每一个指令来说,它可能没有地址码,但是一定会有操作码。
5、指令在存储器中按顺序存放
6、冯诺依曼机器以运算器为中心(现代计算机以存储器为中心)
现代计算机结构框图
现代计算机结构的另外一种表现形式:
计算机软件和硬件的关系
计算机的工作过程(重点)
粗略的过程如下:
高级语言程序先在计算机中被翻译(也就是编译)过后变成目标程序,然后目标程序才可以在我们计算机中去被运行,然后输出结果。
详细过程如下:
这个对于我们经常给写程序的人来说应该很容易理解了,我们在将程序输入给计算机之前,肯定会先考虑代码如何写:
写好之后的代码我们会交给计算机运行,而计算机会将我们的代码翻译成一条一条的指令去运行,如下面的程序举例:
对于每一条指令所要做的操作由操作码表示,而要对哪一个数据进行操作则由地址码来表示,地址码和操作码合起来成为一条指令:
上图中左边是指令格式的一个举例(使用了汇编语言写法),而左侧的对于例题的计算过程则采用的是程序在机器中的抽象表示,我来解释一下:
表格从上到下,从左到右来看。
“主存地址”其实指的就是类似于一个人的住址的门牌号,也就是在计算机中的地址位置表示。
“指令”很好解释了,就是每一条指令的构成内容,由操作码和地址码共同表示。
“注释”还能是啥,不就是注释吗?
然后之前也提过,程序和指令在存储器中都是按顺序存放,所以我们从上往下看地址就是顺序下来的,0,1,2,3,4…
一般情况下,前面存放的都是指令区,即表中的0~7都是指令区,而8到12的位置则是数据区。
从最开始的主存地址为0的位置开始,可以知道该地址存储的是一条000001指令,即取数指令,该指令的操作码为0000001000,将其翻译为十进制则表示的内存地址为8,则由图可知,取的是主存地址为8中的x数据变量,所以这条指令的意思就是将内存地址为8中的x变量取出放入ACC累加寄存器中。
第二条类似,操作码为000100,即乘法指令(这里为了方便,就这么认为),地址为0000001001,即换算成十进制为9,则取的是主存地址为9中的数据,由表可知为a数据变量,则将a执行乘法操作得ax再放入ACC中,下面以此类推。
值得一提的是表中的停机操作一栏只有操作码而无地址码是正常的,之前说过的,指令可以只有操作码而无地址码。
上机前的准备工作结束之后,我们进行第二步,上机运行:
上面的执行顺序中的很多英文看不懂很正常,这些在以后的学习中都会慢慢学会和看懂的。
(三)计算机性能指标
计算机的性能指标主要由以下三部分标准来评估:
下面来分别介绍一下:
机器字长
存储容量
这个该好好唠唠,这是后面的基础啊我靠。
辅存容量到现在为止已经可以开的很大了,上T都行,但是主存还是有限制。主存始终是我们计算机性能的一个技术瓶颈,另外上面的图有一点模糊的地方,就是主要是主存容量表示了存放二进制信息的总位数。对于主存容量来说有两个指标来描述:MAR(地址寄存器)和MDR(数据寄存器)。
MAR地址寄存器的大小反映了我们的主存一共有多少个门牌号,有多少个地址单元,即图中说的反映了存储单元的个数
MDR数据寄存器的大小反映了每一个门牌号中住的人数多少,即每个地址单元中能放多少个数据
这里有个概念辨析:机器字长和存储字长区别
机器字长指的是运算器在处理数据的时候同时能处理多少位,而存储字长指的是存储器在存储的时候每一个存储单元中能存储多少字长的二进制位
明白上面的内容后,那么主存容量是可以通过MAR和MDR来计算的。
MAR即存储单元个数,而MDR即存储字长,两个相乘即可得到该型号主存的容量大小,但是注意不能直接相乘,因为MAR的每一位既可以表示0也可以表示1(因为我们求的是所有存储单元的空间嘛,所以肯定要把所有空间都计算到),所以应该转换成二进制来计算,而MDR不用转化为二进制,因为它是随情况不同而呈现的不同位数,并不需要穷尽所有可能性。
以上面图中的例子为例,一个主存的存储单元个数为10,而存储字长为8,求它的主存容量。
那么就是将10转化为二进制即2的10次方,为1024b即1K,所以主存容量为1K * 8位。
我们也可以用字节数来表示大小,一个字节等于8个位,即1Byte = 8bit,
所以2的13次方 就等于 1KB。