计算机的工作原理
本文为科普性质,适合非计算机行业工作者阅读
自1946年第一台计算机埃尼阿克(ENIAC)问世以来,计算机已经成为社会发展和日常生活不可获取的一部分。他不仅是工作,科研的好助手,也是娱乐,生活的好朋友。大部分人都可以熟练使用计算机,可大家知道计算机是如何工作的吗?
有人会问,知道这些有什么用,掌握处理文件,照片,浏览网页,查看视频的方法不就够了吗,为何要去了解这些理论的东西?
其实,了解计算机是有好处的。了解计算机工作原理后,我们在挑选计算机的时候就能够更有针对性。我们在计算机卡顿,空间不足或者出现各种故障的时候就能有一个基本的判断。
而如果你是一个计算机工作者,了解计算机原理就更加重要了。你可以让你的软件充分利用计算机资源获得更好的性能。同时也不至于因为错误使用资源而造成软件故障。
那么,让我们开始了解自己的计算机吧。
认识计算机
百度百科中将计算机定义为"一种用于高速计算的电子计算机器",通常又可称为"电脑",我们日常中最常见的计算机包括台式计算机和便携式的笔记本电脑。大家提到的计算机通常就指这些。当然除了这些常见的计算机,还有大型科研机构使用的超级计算机,以及手机,智能手表等各种智能设备中嵌入的计算机。计算机已经渗透到我们的生活中,无处不在。
虽然这些计算机的外观形态差异很大,但基本结构都是类似的。任何计算机,我们都可以把他简单分为三部分:
- 输入单元 鼠标,键盘,触摸板,触摸屏,麦克风,这些都属于输入单元。我们利用输入单元,传递信号给计算机,让其按照我们的想法工作。
- 处理单元 这一块在计算机内部,我们通常是看不到的,它可以处理各种复杂的运算逻辑。例如,根据最近7天的天气预报预测未来的天气走势。
- 输出单元 通常,计算机需要将计算结果返回给使用者。显示屏,扬声器,打印机都属于输出单元。
输入单元和输出单元都是可见的,也比较好理解,相信大家一定很好奇处理单元是什么。为什么我们动一动鼠标键盘,输出单元就会呈现丰富多彩的结果。下面我们就来一探究竟。
计算和存储
再复杂的计算机也离不开两个基本功能,计算和存储。我们以使用excel软件为例,说明这两个功能的作用。
老师让小明统计一下班上同学的考试成绩,并给出班级平均分,排名以及各种分析报告。小明打开excel软件,从老师的纸质成绩单中把信息录入进软件中,并通过excel的公式计算功能得到了详细的分析报告,然后他利用打印机将结果输出并给了老师,得到了老师的表扬。
我们想一下,上面的案例需要用到计算机的哪些能力。 计算和存储功能是怎么发挥作用的?
首先,小明打开excel软件,在里面录入了信息。注意,哪怕我们关闭计算机,下次开机时还能够打开并拥有其中的数据,这说明数据以一种持久化的形式保存下来了。这就是计算机的存储能力。
其次,小明利用excel的公式计算能力,得到了班级同学的平均值和排名。这些信息并不是小明输入进去的。说明计算机可以加工数据,并产生新的数据,这就是计算机的计算能力。
那计算机究竟是如何计算和存储的呢,我们接着往下看。
CPU,内存,硬盘
CPU(Central Processing Unit), 中文名叫“中央处理器”,是计算机的核心。我们通常把它比作计算机的大脑,由它处理各种复杂的行为和逻辑。
内存,是一种存储单元。用于数据暂存,CPU在处理问题时会频繁和内存交互,从内存中读取数据或者写入数据。一旦掉电,内存中的数据将丢失。
硬盘,属于外存的一种。它也是一种存储单元,和内存不同的是,它的数据掉电不会丢失,提供数据持久化存储的能力。硬盘容量通常比内存大的多,但是性能也会差得多。我们平时的文件,照片,电影啥的,都是存储在硬盘中的。
有人把CPU当做计算设备,内存和硬盘当做存储设备,其实并不准确,其实CPU也有一定的存储能力。我们看一下CPU的结构:
CPU架构
CPU由控制单元,存储单元和运算单元组成。
有的同学看到架构图可能要不耐烦了,说好的科普呢,怎么净画一些看不懂的图。为了便于大家理解,我们还是回到前文提到的excel的例子,想一想CPU的这些单元是怎么互相协作的。
想象一下,小明选中表格中的所有分数,计算平均值这个操作。excel当然不会直接告诉CPU,“请给我计算平均值”。这样的指令实在是太复杂了,我们的CPU没有那么智能。
excel软件会处理这些复杂的工作,把“求平均值”这种操作转化为一大堆小型操作,例如“取一个数”啦, “两个数相加”啦这些。
CPU读取这些基本指令,并作出相应的操作。控制单元在这里发挥了“指挥官”的角色,他不直接进行计算,但它控制指令的读取流程,并分配任务给具体的运算单元。
运算单元就是干苦力的了,什么加减乘除,逻辑运算等等乱七八糟的事情,全是它完成的。 至于具体怎么计算,就涉及到逻辑门电路的知识了,我们不再往下延伸。
存储单元,是用来保存一些中间数据的。它的性能比内存还要快上许多倍。它的成本也非常昂贵。受到芯片面积和集成度的影响,它的容量比较小。但是,相信我们的CPU会把最贵的资源用在刀刃上的~
CPU不仅会合理利用内部的存储单元,还在其他方面做了优化,例如指令并行执行。这些知识比较深,对于一篇科普性的文章来说显然超纲了。如果你真的感兴趣,不妨找一本《计算机组成原理》好好看一看,一定能解开很多疑惑的。
CPU的运算速度
不同CPU处理单条指令的运算速度,以及处理海量指令的运算能力都是不一样的。这和很多因素相关,例如CPU的架构设计,缓存容量,主频大小,CPU数量有关。
买过电脑的人一定听过主频这个词,并且大概知道主频越高,性能越好。那主频到底是个啥东西呢。为了了解这个问题,我们需要再深入一点,从逻辑电路的角度了解下CPU是如何计算的。
不同于我们日常生活使用的十进制计算,计算机采用的是二进制。(10进制的2+2=4, 翻译成二进制就是10+10=100),使用二进制最大的好处就是每一位只有两种状态0和1, 我们可以通过某种物理特性的高和低,来定义这两种状态。
在模拟电路中,我们通过“电平”来标识0或者1。例如对于5V的CMOS器件而言,高电平指的是3.5V~5.0V,低电平指的是1.5V以下。那我们完全可以设定一个阈值,比如大于2.5V的为高电平(用1表示),低于2.5V的为低电平(用0表示)。
设想一下, 如果计算机用十进制计算,你就需要给具体的电子元器件10个状态,每个状态的范围必然就很小,这就势必造成潜在的风险。 比如由于工艺上的差别,如果元器件把状态6和状态7搞错了,往往会造成想象不到的损害。
可以说,一切的计算,都是通过0和1来完成的,CPU是一个大规模的集成电路,其中数以亿计的晶体管。CPU工作的时候,其实就是不断的改变这些晶体管的信号(0变成1,1变成0)而信号改变的快慢就决定了CPU的运算速度。这个信号改变的快慢由主频决定。
CPU的运算速度还和CPU架构和CPU核心数有关,通常新一代架构的运算能力都会超越老一代架构。这里面水比较深,笔者也不甚了解,从略。
CPU核心数也是一个重要指标,不过它往往没有你想象中那么大。比如8核电脑的运算能力是4核的2倍吗?其实根本达不到。多核CPU的好处是可以让软件把独立的多条指令发给多个CPU处理,这实际上要看软件的写法。而大部分软件使用单核CPU就足够了。所以单核的性能也是非常重要的。
这些比较底层的知识,卖电脑的人往往不会告诉你。他们只会跟你说,我给你推荐一个CPU, 10核的,比你这个便宜,性能还好。这种情况下,如果你相信他,八成就被坑了。
当然,如果你从这篇文章里学到一点皮毛后就自以为很懂电脑,也是很容易被坑的。好在现在是信息时代,你可以在互联网的各种专业网站上查看每个配件的性能或者排名,这会让你更加从容。
聊聊存储
聊完了CPU的运算能力, 我们再聊聊存储。
上文提到了计算机的存储分为内存和外存(硬盘,移动硬盘等)。实际上, CPU内部还有一个性能更高的存储单元。
我们怎么样去理解这些存储单元呢。
实际上,对于我们来说,直接使用的都是外存,比如硬盘,移动硬盘,U盘这些,它们持久化了我们的数据。而内存和CPU存储单元这些都是计算机内部的操作,我们无需关心。
为了便于理解计算机关于存储的工作方式,我们还是举一个例子来说明。
举个栗子
假设你临时租了一个公共办公室。办公室里有一张桌子,和一组柜子。楼下还有一个仓库。当你离开办公室的时候,房间里的东西都会被清理掉。而楼下的仓库可以长时间存储你的资料。
可以想想一下大家会如何工作。首先从仓库里取一些资料带入办公室,最常用的那些放在桌子上随手可取。 比较常用的放在柜子里,需要的时候查阅。 其实计算机也是这样工作的。
有不少朋友会觉得4G内存的计算机(手机)比2G内存的计算机(手机)快一倍,其实这个认知是完全错误的。内存大的设备,处理数据会更加从容。而内存小的设备,处理起来往往捉襟见肘,每当内存快用完时,就要呼叫“清理工”,清理一些废弃数据,腾出可用的内存空间。如果清理工的速度不够快,软件就会因为内存资源耗尽而停止工作。
当然,如果你的软件不需要暂留太多中间数据,你的内存永远也占不满,那么你的内存再大也不会让你的运算速度变快。
还有一个问题就是为什么要定期做内存清理呢,尤其对于我们的手机而言。对于软件来说,它不仅能在前台接收你的指令,展示计算结果。还有可能在后台进行各种计算,这些计算产生的数据都是要占用内存空间的。如果你不及时关闭他们,他们就一直占用空间。
有些比较流氓的软件还会占用比较多的空间,最终导致你正在使用的软件空间都不够用了。所以,及时清理是一个比较好的习惯。
说到内存,笔者自己遇到过一个很有趣的例子。
有人曾找我说自己电脑性能很差,打开一个excel都会内存不足。我第一反应就是不可能。等我亲自试验后,发现果然如此,excel占用了大量的内存资源。
是什么原因导致的呢, 我仔细看了一下文件大小,发现excel占用的硬盘空间达到上百兆字节。真的有这么多数据吗,其实是由于误操作导致的(错误的拖拽导致了大量的空行和空列),去掉这些空行空列后,文件操作的性能瞬间就正常的。
最为滑稽的是,这一份文件被很多人使用过几个月之久,没人发现其中的问题,反而抱怨电脑越来越卡了。
是不是懂一点电脑知识,对日常工作生活很重要呢~
这篇文章主要给大家聊了一下计算机的基本组成,以及计算和存储这两个功能涉及到的一些基本知识。本文作为一篇科普文章,基本是点到即止,如果大家想更深入的了解相关知识,建议阅读《计算机组成与结构》,笔者当年用的教材是下面这本书。
计算机组成与结构