一、计算机基础
一、计算机基础
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
计算机是20世纪最先进的科学技术发明之一,对人类的生产活动和社会活动产生了极其重要的影响。它的应用领域从最初的军事科研应用扩展到社会的各个领域,已形成了规模巨大的计算机产业,带动了全球范围的技术进步,由此引发了深刻的社会变革。
1.1、计算机如何工作的?
1.1.1、字节与二进制
二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。逢二进一,电路只能实现二进制的逻辑运算。
首先要了解字节和二进制。字节(Byte)是计算机信息技术用于计量的存储单位。计算机中表示数据的最小单位是 bit(位),其值可以取 0 或 1 ,一个字节占有8个比特位。
0000 0001 0000 0001 0000 0010
1.1.2、1+1如何计算的
我们以1+1为例:我曾经一个女朋友问过我一个特别简单的问题:1+1计算机是如何计算到2的?
CPU 有一个指令指挥官,他负责指令的分类与调度。例如,他看到指令是「010100010010」,首先从前 4 位 0101 判断,这是一个寄存器设置命令,于是就打电话通知寄存器来领取数据;如果看到前 4 位是 1010,就知道这是一个加法指令,就通知算术运算单位的加法器来领取任务。待加法器计算完了,他又会将运算结果发给寄存器保存。
加法器就是一个电路系统,如下:
注:在上图中,A、B 是输入,S 是结果,C 是进位结果。
其中异或门的逻辑是这样的:
负负得负、正负得正、负正得正、正正得负
1.1、计算机发展
1943年,此时正是二战时期,美国为了实验新式火炮,需要计算火炮的弹道表。需要进行大量计算。一张弹道表需要计算近4000条弹道,每条弹道需要计算750此乘法和更多的加减法,工作量巨大。 你可以想象这样一个场景:一发炮弹打出去,100多人用一种手摇计算机算个不停,还经常出错,费力不讨好。当时任职宾夕法尼亚大学莫尔电机工程学院的莫希利(John Mauchly)于 1942年提出了试制第一台电子计算机的初始设想——“高速电子管计算装置的使用”,期望用电子管代替继电器以提高机器的计算速度。
美国军方得知这一设想后,拨款成立了一个以莫希利、埃克特(John Eckert)为首的研制小组。终于在1946年2月14日,世界上第二台电子计算机,世界上第一台通用计算机 (多个行业都可以使用)埃历阿克”(ENIAC,译成中文是“电子数字积分和计算机”)诞生于美国宾夕法尼亚大学。
ENIAC长30.48米,宽6米,高2.4米,占地面积约170平方米,30个操作台,重达30英吨,耗电量150千瓦,造价48万美元。它包含了17,468根真空管(电子管)7,200根晶体二极管,1,500 个中转,70,000个电阻器,10,000个电容器,1500个继电器,6000多个开关。 每秒能进行5000次加法运算(据测算,人最快的运算速度每秒仅 5次加法运算),每秒400次乘法运算,是使用继电器运转的机电式计算机的1000倍、手工计算的20万倍。。它还能进行平方和立方运算,计算正弦和余弦等三角函数的值及其它一些更复杂的运算。 以我们的眼光来看,这当然很微不足道。但这在当时可是很了不起的成就!原来需要20多分钟时间才能计算出来的一条弹道,现在只要短短的30秒!
ENIAC
奠定了电脑的发展基础,开辟了计算机科学技术的新纪元,有人将其称为人类第三次产业革命开始的标志。
根据计算机所采用的物理器件的发展,一般把电子计算机的发展分成四个阶段。
-
电子管计算机时代(1946~1958)
特点:逻辑元件采用的是电子管,软件方面采用的是机器语言、汇编语言。缺点是体积大、功耗高、可靠性差。速度慢(一般为每秒数千次至数万次)、价格昂贵。
- 晶体管计算机时代(1956-1963)
特点:软件方面的操作系统、高级语言及其编译程序应用领域以科学计算和事务处理为主,并开始进入工业控制领域。特点是体积缩小、能耗降低、可靠性提高、运算速度提高(一般为每秒数10万次,可高达300万次)、性能比第1代计算机有很大的提高。
- 集成电路计算机时代(1964-1971)
特点:硬件方面,逻辑元件采用中、小规模集成电路(MSI、SSI),主存储器仍采用磁芯。软件方面出现了分时操作系统以及结构化、规模化程序设计方法。特点是速度更快(一般为每秒数百万次至数千万次),而且可靠性有了显著提高,价格进一步下降,产品走向了通用化、系列化和标准化等。应用领域开始进入文字处理和图形图像处理领域。
逻辑门数小于10门(或含元件数小于100个)
第一台集成电路的计算机IBM360
1970年4月,英特尔公司的泰德·霍夫主持设计了世界上第一款商用计算机微处理器—“intel4004”。它在片上集成了2250个晶体管,每秒运算6万次,成本不到100美元,被视作“一件划时代的作品”。
1.2、计算机硬件组成
- CPU
其中,CPU包括运算器和控制器,相当于计算机的大脑,是计算机的运算核心和控制核心。
(1) 运算器是用来进行数据运算加工的。运算器的主要部件:
(1)数据缓冲器:分为输入缓冲和输出缓冲,输入缓冲暂时存放外设送过来的数据,输出缓冲暂时存放送往外设的数据.
(2)ALU(算数逻辑单元):是运算器的主要部件,能完成常见的位运算(左移,右移,与,或非等)和算术运算(加减乘除等).
(3)状态字寄存器:存放运算状态(条件码,进位,溢出,结果正负等)和运算控制信息.
(4)通用寄存器:暂时存放或传送数据或指令,保存ALU的运算中间结果.
(2) 控制器是是计算机的指挥中心,负责决定执行程序的顺序,给出执行指令时机器各部件所需要的操作控制命令,用于协调和控制计算机的运行。控制器的主要部件:
(1)程序计数器(Program Counter):简称PC,用来存储从内存提取的下一条指令的地址.当CPU执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为"取指令".与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址,此后经过分析指令,执行指令,完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令,保证程序能够连续地执行下去.
(2)时序发生器:用于发送时序脉冲,CPU依据不同的时序脉冲有节奏地进行工作,类似于CPU的节拍器.
(3)指令编译器:用于翻译指令及控制传输指令包含的数据.
(4)指令寄存器:用于缓存从内存或高速缓存里取出的指令,CPU执行指令时,就可以从指令寄存器中取出相关指令来进行执行.
(5)主存地址寄存器:保存当前CPU正要访问的内存单元的地址,通过总线跟主存通信.
(6)主存数据寄存器:保存当前CPU正要读或写的主存数据,通过总线与主存通信.
(7)通用寄存器:用于暂时存放或传送数据或指令.
- 存储器
储存器可分为内储存器和外储存器两部分:内存属于内储存器,内存是CPU与硬盘之间的桥梁,只负责在CPU与硬盘之间做数据预存加速的功能。断电后即会被清除。输入设备的数据是从设备接口进去到端口缓冲器的,再经主板的输入输出总线(I/O总线)直接到CPU的,不经过内存。
外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据。常见的外存储器有硬盘、软盘、光盘、U盘等。
- 输入输出设备
输入设备就是键盘、鼠标、麦克风、扫描仪等等,向电脑输入信息。输入设备则相反,电脑向外部输出信息,如显示器、打印、音像、写入外存等。
1.3、冯-诺伊曼计算机
提到计算机,就不得不提及在计算机的发展史上做出杰出贡献的著名应用数学家冯诺依曼(Von Neumann,是他带领专家提出了一个全新的存储程序的通用电子计算机方案。这个方案规定了新机器由5个部分组成:运算器、逻辑控制装置、存储器、输入和输出。并描述了这5个部分的职能和相互关系。
早期的ENIAC有一个致命的缺点就是程序与计算两分离。在埃历阿克ENIAC尚未投入运行前,冯·诺依曼就已开始着手起草一份新的设计报告,要对这台电子计算机进行脱胎换骨的改造。他把新机器的方案命名为“离散变量自动电子计算机”,英文缩写译音是“埃德瓦克”(EDVAC)。1945年6月,冯·诺依曼与戈德斯坦、勃克斯等人,为埃德瓦克方案联名发表了一篇长达101页纸洋洋万言的报告,即计算机史上著名的“101页报告”。这份报告奠定了现代电脑体系结构坚实的根基,直到今天,仍然被认为是现代电脑科学发展里程碑式的文献。报告明确规定出计算机的五大部件**(输入系统、输出系统、存储器、运算器、控制器)**,并用**二进制替代十进制运算**,大大方便了机器的电路设计。埃德瓦克方案的革命意义在于**“存储程序”**──程序也被当作数据存进了机器内部,以便电脑能自动依次执行指令,再也不必去接通什么线路。 人们后来把根据这一方案思想设计的机器统称为“诺依曼机”。自冯·诺依曼设计的埃德瓦克始,直到今天我们用“奔腾”芯片制作的多媒体计算机为止,电脑一代又一代的“传人”,大大小小千千万万台计算机,都没能够跳出诺依曼机的掌心。在这个意义上,冯·诺依曼是当之无愧的“计算机之父”。而
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu
、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。