我们正处于一个信息大暴发的时代,每天都能产生数以百万计的新闻资讯!
虽然有大数据推荐,但面对海量数据,通过我们的调研发现,在一个小时的时间里,您通常无法真正有效地获取您感兴趣的资讯!
头条新闻资讯订阅,旨在帮助您收集感兴趣的资讯内容,并且在第一时间通知到您。可以有效节约您获取资讯的时间,避免错过一些关键信息。
计算机是如何执行运算的呢?在之前的一篇分享中,我们提到了“二进制”(计算机里的“0”和“1”:二进制演绎了计算机的大千世界!),也就是说计算机是以二进制来进行通信的,使用“0”和“1”。计算机所讲的是一种“机器语言”,而我们人类所使用的语言是如中文、英语、西班牙语等的语言。若要同计算机进行沟通,我们则必须有类似于翻译字典的东西。正如在想要用英语表达当前所说的中文时,我们或许要查一下中英对照的字典,而计算机也有其内置的翻译参考书。
我们将深入探讨一下计算机如何将提供的信息转化为它能理解的指令。现在,你可能正在计算机上使用网络浏览器、音乐播放器、文本设置器或其他应用。我们每天都与这些应用进行交互,称之为(应用)程序(Programs)。程序是告诉计算机该做什么的基本指令。
从技术上讲,我们将程序存储在硬盘等持久介质上。我们可以想象一下各式各样菜肴的食谱,这些食谱都存储在一本烹饪书中,就像应用程序存储在硬盘上一样。
假如我们需要做很多不同的食物,因而雇了一位厨师,厨师会按照所提供的食谱制作出美味的佳肴。可想而知,厨师工作得越快,所能准备的食物就越多。在这里,厨师就好比计算机中的CPU,不停地处理我们发给他的食谱并制作出相应的食物。但是,厨师工作速度非常快,以至于其烹饪的速度超过了其阅读食谱的速度。所以,我们复制食谱,把它们放入RAM中。RAM是计算机的短期内存,将信息存储在CPU可以访问的位置,并且速度比使用硬盘更快。现在我们可以一次给到厨师一至两份食谱,而不是向他列举出整个食谱。例如,我们想做一个花生酱果冻三明治,在发现一个很好的食谱后,把它发送给厨师去制作。
因为厨师需要快速获取到制作的指令,所以这时并不是将整个食谱发给他,而是一次发送一行,如下所示:
1.准备两片面包。
2.将花生酱铺在其中一片面包上。
3.将果冻铺在另一片面包上。
4.将两片面包合在一起。
我们将视线从食物的制作转到计算机上,在计算机中,“厨师”只能通过“0”和“1”和我们进行沟通,因此我们需要向其发送的是一串“0”和“1”组成的代码(10001000、10101010、10101111、10101011……),而不是我们可直接理解的食谱(花生酱、果冻、面包……)。
实际上,这个过程还要更复杂一些。CPU不断地接收指令并执行它们,这些指令是用二进制编写的,但它们如何在计算机中传送呢?在计算机中,有一种叫做外部数据总线或EDB(ExternalDataBus)。这是一排连接计算机各部分的电线,就像我们身体中的静脉一样。当向其中一根导线发送电压时,导线的状态为“开”,或用“1”表示;如果没有电压,那么其状态是关闭的,用“0”表示。二进制信息也就在这个过程中不断地被计算机读取并进行处理。在之前的一篇文章(现代计算机的成长发展之路,一个从大到小的蜕变历程!)中,我们也简单了解了电压是通过晶体管进行传送的。
现在我们知道了“0”和“1”(或者“位”bit)信息是如何在计算机上传播的。EDB有不同大小的类型,8位、16位、32位甚至64位。如果有64根电线,那么可传输的数据也更多。
在以下示例中,我们会使用8位的EDB来进行说明,即一次发送1个字节(byte)(=8位bit)。假设CPU正在接收一个字节的数据,其内部有一些被称为寄存器的组件,让我们存储CPU处理的数据。例如,如果我们的CPU想要执行两个数字相加的运算,那么一个数字将存储在寄存器a中,另一个数字则存储在寄存器b中,而这两个数字相加的结果将存储在寄存器c中。这些寄存器相当于厨师的工作台,有此工作台厨师也就可以进行烹饪了。此时,厨师会使用翻译参考书将二进制文件翻译成能读懂的可执行的任务。
程序被复制到RAM中供CPU读取,RAM是随机访问的内存,允许CPU像读取任何其他部分一样快速地读取RAM的任何部分。我们实际上并没有通过EDB从RAM发送数据。RAM可以存储数百万甚至数十亿行数据。尽管我们有上述提到的简单的三明治例子,但大多数“食谱”一点也不简单。计算机中的程序可能有数千行。在处理它们时,实际上并没有按照任何特定的顺序进行。由于一次只能通过EDB发送一行数据,我们需要另一个部件的帮助,即内存控制器芯片(MCC:MemoryControllerChip)。
MCC是CPU和RAM之间的桥梁。我们可以把它想象成大脑中连接记忆的神经。CPU对MCC发出请求:我需要这个食谱的第三步说明。MCC在RAM中找到第三步的指令,获取数据,并通过EDB发送。在此过程中,还涉及到另一总线,即地址总线(AddressBus),连通CPU和MCC,发送数据的位置,但不发送数据本身。MCC在获取地址后进行数据的查找,再通过EDB发送数据。
然而,RAM并不是将更多数据传输到CPU进行处理的最快方式。CPU还使用了所谓的缓存(Cache)。
缓存比RAM还小,但它让我们可以存储经常使用的数据,并快速引用它。在RAM这一装满了食物的大冰箱里,进去很容易,但要想把东西弄出来需要时间。而缓存就像我们口袋里的东西,用于存储最近或频繁访问的数据。CPU中有三种不同的缓存级别:L1、L2和L3。L1是最小、最快的缓存。
现在我们明白了RAM是如何与CPU交互的。但CPU如何知道指令集何时结束,新的指令集何时开始呢?CPU有一个内部时钟,使其运行保持同步,它连接到一根叫做时钟线(Clockwire)的特殊电线上。当发送或接收数据时,它会向时钟线发送一个电压,让CPU知道可以开始进行运算。时钟每个滴答声的起落,CPU就执行一个操作周期。当向时钟线发送电压时,我们称之为时钟周期。若在某个命令中有大量数据需要处理,则需要运行很多时钟周期。
你是否在CPU上看到过这样的标签:3.4GHZ,这个数字指的是CPU的时钟速度,在一个特定时间段内,它可以在一个集合中处理的最大时钟周期数。3.40GHZ是每秒34亿个周期,这代表CPU能以这种速度运行,但并不意味着实际上按此速度工作,而是指它的速度不能超过此数字。尽管如此,这个数字并不能阻止一些人尝试。有一种方法可以在几乎任何设备上超过CPU上的时钟周期数,称之为超频,它会增加CPU时钟周期的速率,以便执行更多任务。这通常用于提高低端CPU的性能。一个游戏玩家想在游戏中有更好的图像和更少的延迟,在玩游戏时会使CPU超频,但这样做也有缺点,比如CPU可能过热。
简单总结一下,计算机的程序如何与相关的硬件进行交互,从二进制到我们所能读懂的信息是如何转换的:
程序发出指令,在EDB的帮助下这些指令可在计算机中进行传送,发送到CPU后进行处理,但由于指令数据量很大,它们会存放在RAM或Cache中,CPU可快速访问这些数据,从而进行处理。
这个过程会是非常复杂的,但我们对此有了一个整体的印象,也知道了在使用计算机时,那些五花八门的应用程序,如同一道又一道美味的佳肴,为科技的力量所演绎!
以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。
快照生成时间:2022-12-27 16:45:08
本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。
信息原文地址: