分享

电脑是怎样跑起来的(穿越计算机的迷雾)

 霃楓 2016-10-27

我们平常用电脑玩游戏、听歌、看电影、聊QQ,用电脑处理文件,好像我们懂电脑了,真的懂了吗?其运作的原理其实对于我们大多数人来说还是很神秘的一件事情。电子计算机的历史(1946年至今)特别是微型计算机的历史虽然短暂,但其中的每一次跨越都是那样的让人激动不已。

电脑无处不在,但对电脑非专业人士来说,对其基本运作原理却是知之甚少。对于稍有好奇心的我们来说,自然希望有更多的认知以解心中困惑。

电脑的软硬件以弱电为信息媒介,可以通过数以亿计的晶体管和电路连线,组合成复杂的逻辑电路而完成预定的逻辑运算和信息处理,同时通过键盘、鼠标等输入模块以及显示器、打印机等输出模块完成与人的交互。

1 机械计算

如何实现计算的自动化,是人类一直以来的梦想。机械的计算器是电子计算机出现之前的计算自动化的尝试,直到电的出现以及布尔运算和香农的开关电路作为电子计算机的理论基础,以及逻辑元件的数次更新换代,才产生了我们今天的电子计算机。

1642年,法国哲学家和数学家帕斯卡(Blaise Pascal)发明了世界上第一台加减法计算机。它是利用齿轮传动原理制成的机械式计算机,通过手摇方式操作运算。他称“这种算术机器所进行的工作,比动物的行为更接近人类的思维”。这一思想对以后计算机的发展产生了重大的影响。1671年,著名的德国数学家莱布尼兹(G.W.Leibnitz)制成了第一台能够进行加、减、乘、除四则运算的机械式计算机。

2 布尔运算和香农的开关电路(开关可以用来做逻辑运算)

17世纪德国哲学家、数学家莱布尼茨曾提出,一旦找到一种通用的精确的符号系统,一种代数,一种符号语言,所有概念就都可以分解为数量不多的原始概念,所有的知识就能够统一表达为一种演绎体系。基于这些数字和它们的组合规则,所有的问题都可以解决。到了19世纪,英国数学家乔治.布尔(G.Boole)才完成了莱布尼茨所言的这种演绎体系和组合规律。布尔认为推理即计算,他试图用符号演算来表达思维在推理活动中的基本规律,并创造了一种表达基本逻辑函数的二元代数,即今日所称的“布尔代数”,为开关电路和数字计算机设计奠定了数学基础。

布尔代数又称为逻辑代数,是一个关于0和1的代数系统。布尔用三个运算符号与、或、非代表逻辑关系,然后把所有的命题划分为两种类型,或者真,或者假,把命题组合起来就构成了真值表,显示了可以预言的模式。假如当两个命题都为真,结果永远是真;而一个真命题与一个假命题组合时,结果永远是假,真假关系就是计算机逻辑的核心。

布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律 。

用布尔代数来实现开关电路,才使得布尔代数成为数字电路的基础,所有的数学和逻辑运算,加、减、乘、除、乘方、开方等,全都能转换成二值的布尔运算;20世纪30年代,逻辑代数在电路系统上获得应用。1938年布尔提出了开关电路的概念。布尔和香农的这一系列的研究,与二进制是如此的契合,成为了二进制的电子计算机创建的重要的理论基础。

开关电路的进一步发展和继电器有着紧密的联系,继电器使开关的状态和电路的状态形成一种平等的关系,任意一个开关的状态都可以由其它的开关来控制,这是产生现代意义上的逻辑电路的基础,因此,开关电路的设计和逻辑电路的设计本质上是一致的,布尔代数是它们的共同基础,逻辑电路又构成了计算机的基础。

我们知道,电路是可以串联和并联的,电路的串联和并联对应逻辑运算的“与”运算和“或”运算。通过适当的连线与组合,复杂的电路就可以实现对应的各种逻辑运算了。

计算机运行的时候,程序就像一系列或真或假的命题,当命题进入电路时,电路将按布尔规定的逻辑关系打开或关闭。假如当两个真命题进入一个电路时,电路打开;但是当一个真命题和一个假命题进入一个电路时,电路关闭。利用布尔代数和开关电路,所有的数学问题都可以归结为逻辑问题,而逻辑问题又可以通过电气开关表现出来。人们可以把数以百计的电路结合起来,编写充满想像力的计算机程序。

3 信息的表达(符号化、数字化)

豪无疑问,我们的语言,不管是中文还是英文,其实都是一套符号系统,中文或英文所包含的丰富的信息,都是由各自的语法所约定俗成的。英文是由26个字母组合而成的拼音语言系统,盲文和莫尔斯电报只用点和短线两个符号,也可以完成信息的表达和传送。

所以,世间万物的编码可以用26字母,也可以用0-9十个数字,如何用最少的符号去编码表示世间万物?其实从盲文和莫尔斯电报我们就可以知道,只需两个符号就可以了,剩下的就是如何通过排列组合去表达复杂的信息罢了。这就是二进制系统,只有两个符号,“0”和“1”,n位的二进制数便可以表示2的n次幂的事物了。事情的复杂性和简单性就是这样,一方面它复杂了,但是从另一个角度去看,他变得简单了。二进制表示的信息看起来很复杂,不够直观,但是实现二进制表示事物的元器件实现起来却是最简单和最稳定的,最不可思议的是,它竟与我们的逻辑运算有天然的对应一致的关系。世界上不可能有比二进制更简单的计数方法,二进制除了是一种计数的方法外,还可以表示逻辑的是与非。

所以,一切信息都可以数字化为“0”和“1”;

我们日常使用的十进制数很容易就可以转化为0和1;

文字字符也可以通过编码规则方便地成二进制数据;

人类所有的文字信息,包括我们正在电脑上阅读的这本书,都能以比特的方式“数字化生存”在电脑的磁盘里。

电脑是怎样跑起来的(穿越计算机的迷雾)

声音或音乐信息目前正在朝着全面数字化的方向挺进。声音其实是一种空气中的振动,声音通过话筒(利用电磁感应原理)转变为时间上连续的电流(电压波),电流(电压波)与引起电流(电压波)的声波的变化规律是一致的,因此可以利用电流(电压波)来模拟声音信号,这种电流(电压波)被称为模拟音频信号。对模拟信号采样、量化,便可以将模拟音频信号转化为一组用来表示声音的二进制数字序列-数字音频。至此,我们就成功地将声音数字化了。当我们听音乐时则是一个相反的过程。只要你听过CD激光唱片播放的立体音乐,对此就会有切身的感受。CD激光盘上布满了极其微波的凹坑,每一个凸凹分别表示“0”,“1”的信息,音乐或声音就以这一系列的凸凹方式,“数字化生存于光盘表面。

图像和照片同样能够数字化。黑白图像就好比在其表面划分出精细的小方格,每一方格称为一个像素。若把全白的像素设定为11111111,全黑的像素设定为00000000,具有不同明暗的灰色介于两者之间,则8比特就具有256种灰度的一个像素数字化的基础。你完全可以使用更多的比特来保存一个像素的信息,这些信息既可以代表黑白层次,也能够代表不同的彩色。事实上,多媒体电脑屏幕上每一像素的颜色已经超过数百万种之多,十分逼真地接近自然色泽。把所有的像素组合起来,图像或照片也就“数字化生存”于电脑屏幕、数字电视屏幕或彩色打印机纸上。

一幅一幅静态的图像连续播放,又可构成动态的卡通片。配上悦耳动听的音乐,附上文字字幕,再经过压缩和解压,电影、电视和多媒体电子图书既能在光盘或磁盘上“数字化生存”,也可以通过互联网络传输到每一角落,“数字化生存”于整个地球。

数字、文字、声音、图像,信息的所有媒体都呈现出“数字化”的特征,比特数字是世界上最数字系统,也是最易于实现、最为可靠的技术。

4 电的作用

1732年,美国的科学家富兰克林终于认识了电,开始让其走向历史的舞台。

我们知道,电作为能量或动力(4.9V以上电压),利用电的光热效应,电可以转为能量,如电灯、电热器、电动机等,这也就是我们常说的电工电路。

电流的速度等于光的速度,且电能生磁,磁能生电。利用这两个特性,我们似乎可以用电作为传输媒介(4.9V以下电压)来做点其它的事情,最先出现的就是莫尔斯电报,利用电流的这两个特性远距离传输由“点”、“划”组成的符号。然后就是我们现在的电子计算机了,因为电子管、晶体管等开关部件的切换速度相对于机械的继电器来说,速度来得是如此之快。

以电作为信号传输媒介的电子电路与上述的电工电路,两者在电脑中其实是有混合使用的。如电脑的风扇系统、硬盘、光驱就是电工电路。

另外,有电流的地方,就会有光电效应,就会产生热能,所以现在20纳米芯片的制程工艺由此带来巨大的挑战,因此如此高密度的元件和线路所带来的热量,如果没有充分的散热措施,连集成电路本身都会被熔化。

人们发现,布尔函数只有计算或处理能力,没有记忆能力。但是通过逻辑门电路的组合,引入循环电路,记忆能力也能实现,实现电脑所需的存储功能,也就是电脑的内部存储器,或叫内存。

5 计算理论与实践交替前行,奇迹即将产生。

1833年,英国科学家巴贝奇(Charles Babbage)提出了制造自动化计算机的设想,他所设计的分析机,引进了程序控制的概念。尽管由于当时技术上和工艺上的局限性,这种机器未能完成制造,但它的设计思想,可以说是现代计算机的雏型。

1944年,艾肯(HowardAiken)在美国国际商用机器公司(IBM)的赞助下领导研制成功了世界上第一台数字式自动计算机Mark I,实现了当年巴贝奇的设想。这台机器使用了三千多个继电器(开关作为逻辑部件,其切换其实是机械的切换,只是利用了电的电磁特性而已),故有继电器计算机之称。

6 存储程序与自动执行

早期的计算机无法实现高度的自动化和通用性,冯诺依曼提出了存储程序概念,这也是我们现在计算机的理论雏形。

如何来实现通用性呢?当时有两种思路。第一种称为“直接编程”,即在计算一道题之前,先由操作人员手工把多个部件用电线按一定方式连接起来,再设置一些开关。第二种称为“存储程序”,即先把题目所需要的计算指令序列输入到电脑中存起来,由这些指令来自动地联接部件和设置开关。现今我们使用的计算机都是采用“存储程序”的思路。

前面提到,通过循环电路可以实现电的内部存储,其优势是存了速度快,但缺点也显而易见,断电后数据就不复存在。由此,为了实现数据的较长时间存储(一般10年左右),有了现在的磁存储,如现在的硬盘、光存储,如光盘。

7 通用计算机的五大部件

1945年,冯.诺依曼针对世界上最一台电脑Eniac的不足,起草ENIAC(电子离散变量自动计算机)设计报告初稿,确定计算机的结构,采用存储程序以及二进制编码。明确规定出计算机的五大部件:运算器、逻辑控制器、存储器、输入装置、输出装置,并描述了五大部件的功能和相互关系。其最大的改进就是巧妙地想出“储存程序”的办法:改外插型计算程序为内置,程序也被他巧妙地当作数据存进了机器内部,以便电脑一条接着一条地依次执行指令,再也不必去接通什么线路,从而使整个计算过程完全由电子计算机自动控制。

电脑是怎样跑起来的(穿越计算机的迷雾)

电脑是怎样跑起来的(穿越计算机的迷雾)

电脑是怎样跑起来的(穿越计算机的迷雾)

8 寻找更好的开关

计算机硬件和软件最基本的常识-电脑的“心脏”,其实就是“开关”和控制“开关”动作的程序。从第一台计算机诞生之日开始,计算机界的科学家,都把目光聚焦于“开关”的改进。“开关”不断地革故鼎新,引出了现代电脑五十余年“改朝换代”的历史-从电子管、晶体管直到集成电路。

9 计算机由大到小,由昂贵到便宜

最早的计算机,堪称巨无霸,需要大的房间才可以放得下来,其价格自然也不菲,普通老百姓或家庭自若很难拥有。随着电子逻辑元件的更新换代,芯片工艺的逐步发展,计算机的尺寸也是越来越小,价格也越来越便宜,计算机也就变得越来越普及。

10 操作系统的作用

电脑的操作以及程序的开发变得更加容易;如果没有操作系统,一切对电脑的控制和管理都得从零开始,电脑的操作系统给电脑提供了最基础的功能,最作用就相当于一个城市的基础设施,如果没有城市的基础设施,我们的衣食住行将困难得无法想像。

11 电脑语言

电脑所能识别的只能是0和1表示的状态的组合,所以我们控制电脑的指令也只能是0和1的序列。如果将我们用比较接近自然语言的指令系统去对应相应的0和1的序列,这就是由计算机高级语言所考虑的指令解释或编译,其对应的规则就是计算机高级语言,实现的解释或编译就是由语言设计者所设计的解释器或编译器(两者都是一个程序),由计算机去自动完成这一解释或编译的过程。

12 程序是如何开发出来的

编程所要考虑的方面有:

  1. 程序运行的硬件平台:CPU指令系统;

  2. 程序运行的操作系统平台;

  3. 需要处理的数据有哪些?找到数据的规律或让其更有规律;(数据结构)

  4. 怎样将数据输入到内存?

  5. 数据如何处理?(算法实现)

  6. 数据如何从内存输出到显示屏或打印机?

  7. 选择计算机高语言和对应的开发工具,将上述的步骤用计算机高级语言描述出来?

  8. 用计算机语言对应的的编译器编译成计算机能理解的由“0”和“1”组成的二进制代码(也可是程序运行时直接用计算机语言对应的解释器直接解释成二进制代码)。

由以上可知,1 开发的程序会有硬件和操作系统平台的兼容问题;2 编程也是需要较多的考虑指令与数据在内存中的存取;

13 程序是如何运行的

  1. 程序安装或解压缩到硬盘;

  2. 程序代码启动后转存到内存;

  3. CPU的控制器解释指令,控制算术单元的运算及数据的传输;

14 电脑的运转

电脑的运转其实也就是电脑五大部件的协调运行,输入输出设备完成出人的交互(没有完整的输入输出设备的电脑也可以完成诸如自动控制的一些功能,一般叫做单片机),存储器、控制器、运算器完成内部的逻辑运算和数据处理。

电脑开机后,最先运行的是一段BIOS程序,然后运行操作系统一些基本的程序(当然要由硬盘进驻到内存),这样电脑就具有一些最基本的功能。然后用户就可以运行应用程序了,当然这些应用程序也是需要由外部存储器进驻到内存的。

15 其它想说的

确实,计算机科学作为一门交叉科学,涉及到数学、逻辑学、电磁学,以及硬件和软件的高度融合和协同发展,有其较高的复杂性。

计算机涉及到太多的知识点,想简单通俗地说明白,说透彻是我所力求的,奈何力有未逮!

16 附:

谁发明了计算机?计算理论与设备的创建及他们的天才灵感。

  • 1621年,英国人冈特发明计算尺,这是世界上最早的模拟计算工具。

  • 1623年,德国科学家希克尔德Wilhelm Schickard率先研制出了欧洲第一台计算设备,这是一个能进行六位以内数加减法,并能通过铃声输出答案的“计算钟”。使用转动齿轮来进行操作。

  • 1642年,法国数学家Pascal 在WILLIAM Oughtred计算尺的基础上,将计算尺加以改进,能进行八位计算。

  • 1673年,德国数学家莱布尼兹发明乘法机,这是第一台可以运行完整的四则运算的计算机。莱布尼兹同时还提出了“可以用机械代替人进行繁琐重复的计算工作”的伟大思想,这一思想至今鼓舞着人们探求新的计算机。

  • 1801年,Joseph Marie Jacquard对织布机的设计进行了改进,其中他使用了一系列打孔的纸卡片来作为编织复杂图案的程序。Jacquard式织布机,尽管并不被认为是一台真正的计算机,但是它的出现确实是现代计算机发展过程中重要的一步。

  • 1822年,英国数学家、发明家查尔斯·巴贝尔Babbage设计了分析机;

  • 1847和1854年,英国数学家布尔发表了两部重要著作《逻辑的数学分析》和《思维规律的研究》,创立了逻辑代数。逻辑代数系统采用二进制,是现代电子计算机的数学和逻辑基础。

  • 1888年,美国人赫尔曼·霍勒斯发明了制表机,它采用穿孔卡片进行数据处理,并用电气控制技术取代了纯机械装置。

  • 1936年,24岁的英国数学家图灵发表著名论文《论可计算数及其在密码问题的应用》,提出了“理想计算机”,后人称之为“图灵机”。图灵通过数学证明得出理论上存在“通用图灵机”,这为可计算性的概念提供了严格的数学定义,图灵机成为现代通用数字计算机的数学模型,它证明通用数字计算机是可以制造出来的。

  • 1937年,美国人克劳德·艾尔伍德·香农(Claude Shannon)发表了他的伟大论文《对继电器和开关电路中的符号分析》,文中首次提及数字电子技术的应用。他向人们展示了如何使用开关来实现逻辑和数学运算。

  • 1938年,德国人Zuse完成了Z1电子机械二进制计算机;

  • 1942年,美国人阿坦那索夫和贝利设计了完全采用真空管作为存储与运算元件的计算机ABC(Atanasoff Berry Computer);

  • 1944年5月,美国人艾肯Aiken成功地研制出马克一号(Mark I);

  • 1944年6月,英国人弗劳尔斯(T. Flowers)发明了Colossus computer,被用它来破译德国人的密码;

  • 1945年,美国人w Mauchly和 Eckert研制完成第一台全数字电子计算机ENIAC;

  • 1949年,英国人威尔克斯(Maurice Vincent Wilkes)领导、设计和制造EDSAC(Electronic Delay Storage Automatic Calculator,电子延迟存储自动计算机)是世界上首次实现存储程序计算机。

  • 1951年,冯·诺伊曼领导设计了EDVAC (Electronic Discrete variable Automatic Computer)。:(1)采用了二进制,不但数据采用二进制,指令也采用二进制;(2)建立了存储程序,指令和数据便可一起放在存储器里,并作同样处理.简化了计算机的结构,大大提高了计算机的速度。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多