首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CPU如何工作的?

CPU这么小小一个指甲盖大小的东西,为什么能够处理亿万级的数据,能够在极短的时间内完成各种运算操作?为什么机器人AlphaGo能够战胜人类?它们是如果工作的?

让我们来一步步揭开这一神秘的面纱,来看看CPU到底是如何运作的,看看它是不是它真的比人的大脑更聪明。

首先说说CPU的运作,这一定会想到平时我们使用电脑手机这些,都是把他们当成工具来使用,如果我们不使用它们,那它们就发挥不了任何作用,毕竟我们人才是使用它的主人。

那么这个时候就应该想到一个问题,CPU好像并不知道自己应该干什么,它的每一个动作行为都是我们告诉它,它才会去做。也就是说,我们需要给CPU下达一些特定的指令或者说是命令,CPU根据这些特定的命令才会去完成它的任务。

那么我们直接和它下达的命令,可能它自己根本听不懂,就好像两个国家的人,语言不通,那么这个时候就需要有个翻译人员,来将我的话翻译成CPU能够听懂的。

这也就是所谓的机器语言,那么什么是机器语言呢?大家已经都知道二进制,也就是010101这种数字,在计算机的世界里只有0和1这两个数,而为什么是这两个数,而不是56789这种数?

这就是计算机世界巧妙的地方了,这会在后面的讲解中慢慢体会到。我们先来说一下这个只有01,怎么存储数据,就比如我们现在玩的那些游戏,看的那些电视剧,只考01,这怎么能够做到,就纯靠0101拼出一个画面吗?

其实计算机内部也会有相应的翻译器,就比如我现在设计一个计算机,是个8位的计算机,也就是一次能够处理读取8位数据。也就是8个01的组合,现在我规定前面两个数指定了这个指令的行为。

这个怎么理解?就比如现在我写了8个数:00101001,在这个数里面,咱们暂时只看前面两个数,也就是00,前面这两个数是有它自己的含义的。只是你不知道这是什么意思,当然计算机也不知道,但是这是我设计的计算机,我在计算机内部放了一个表,计算机会对着这个数据去找00对应的是什么意思。我规定00代表加法,01代表减法,10代表除法,11代表乘法。

计算机知道了这个是什么意思之后,它就会继续执行下面的操作,刚刚说到8位数,现在只知道2位是什么意思,那么剩下的六位是什么呢?

计算机知道00是要做加法运算之后,还需要做的事情当然就是给它两个参加运算的数值,计算机只知道需要执行一个加法,不知道什么加什么,那永远都不会有一个结果给我们。

所以这个时候后面6位数就起到它们的作用了,它们就是代表着需要参加运算的数值的地址。这个应该怎么理解呢?

这个就好像每个人家,你住的什么地方都会有门牌号,就比方xx小区2号楼307室。而代码的后6位就是这个作用,00101001中的101001就是代表着门牌号,现在101001这个地方住着的是数字9,这个时候CPU就会带着数字9去找加法,一条代码它只带了一个数值,这个看起来很鸡肋。

但是这也是不得已的办法,因为6位的地址码它就决定了我们的内存能有多大,也就是2的6次方,也就是说我们的内存只能存放2的6次方也就64byte数据。如果在这个时候再加入一个操作数,比如现在规定00101001,其中00是加法知道了,这个时候因为要一次放入两个数值,也就是把101和001分别看做门牌号,这样是很好,假设101号住的是3,001号住的6,一次就把6+9计算出来了。

但是问题也来了,因为多了一个数值,本来是6位的地址码,现在变成3位地址码了,也就是内存变成了2的3次方就是8,就是说现在内存里只能放八个数据,本来64个数现在只能放8个,这就是不好的地方。

当然也可以单独把一条指令全当成地址码,这样就可以有2的8次方就是256,内存中可以存放256个byte数据。而这个内存影响到什么呢?

在x86平台中,前十几年的处理器都是32位,win7也是32位系统,这里32位影响的就是内存大小,上线大小就是2的32次方就是4294967296byte,换算成GB就是4GB,最大寻址范围就是4GB,所以那时候内存条最大只能到4GB,这是物理限制。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230315A037BR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券