视频版详解版请在视频号/抖音/小红书/B 站上搜索:修饼 文字版请搜索公众号:修饼 我的书:京东、抖音、视频号、淘宝均有售 我的科技科学专栏: 我的电影专栏: 我的微信:xiubing234
视频版详解版请在视频号和抖音上搜索:修饼 文字版请搜索公众号:修饼 我的书:京东、抖音、视频号、淘宝均有售 我的科技科学专栏: 我的电影专栏: 我的微信:xiubing234
视频版详解版请在视频号和抖音上搜索:修饼 文字版请搜索公众号:修饼 我的书:京东、抖音、视频号、淘宝均有售 我的科技科学专栏: 我的电影专栏:
视频版详解版请在视频号和抖音上搜索:修饼 文字版请搜索公众号:修饼 我的书:京东、抖音、视频号、淘宝均有售 我的科技科学专栏: 我的电影专栏: 微信号:xiubing234
我们每天都在用计算机,但我估计大部分人都不知道CPU和GPU有什么区别?内存和硬盘有什么区别?显存和缓存,显卡和主板,芯片这些到底都是什么? 我们了解这些名词的目的,并不是做名词解释,而是要理解计算机的本质,计算机不光是一个机器,更是一种结构,这种结构能够让思考或者逻辑运算,在机器中有序地展开。这种结构,最早就来源于冯诺依曼的架构。 [图片] 冯诺伊曼被誉为现代计算机之父,其实在他那个时代,已经有了计算机,计算机不是他发明的,但是当时的计算机有很大的缺陷,比如 1946 年宾夕法尼亚大学生产的埃尼阿克,这台计算有 30吨,占地 170 平方米,就像一个发电站一样,非常耗电。 [图片] 它之所以如此庞大,是因为那个时候的计算机是没有软件的概念的,它的算法或者程序非常依赖于硬件,电路搭建的方式,就决定了它的计算方式。我打个比方哈,这个计算机本来是计算炮弹轨迹的,但现在你让它计算天气,那你就只能把原来的几千根电缆拔掉,重新设计电路。 [图片] 所以当时一台计算机只能服务一种类型的计算,并不能通用,你要切换算法,只能对硬件进行物理改造,而且计算方式越复杂,电路就越复杂,以至于设备的体积都非常大。基于当时计算机的这个缺陷,冯诺依曼就想啊,有没有可能,存在一种通用的计算机,在不改变硬件条件的情况下,一台电脑可以运行不同的程序。 于是,他提出了一个非常天才的构思,让程序和数据一样,都可以被保存在机器的记忆里,机器可以自动读取程序的指令,再按照指令执行计算,程序可以被复制,被删改,可以脱离硬件,那么一台计算机就运行不同的程序了,理论上也可以让通用计算机的体积缩小。这个想法其实就是软件的雏形。 为了实现这个构想,冯诺依曼提出了一个架构,这个架构一直沿用到现在。当我们理解了这个构架以后,就能理解计算机是怎么运行的。 [图片] 这个架构分为五个模块,第一个模块是输入系统。 在以前是一些开关面板或者穿孔的纸带,现在我们用键盘、鼠标、摄像头这些设备。 [图片] [图片] 它们最重要的作用,是把不同模态的信号,包括文字音频视频,全部翻译成数字信号,也就是 0 和 1 ,我在上一期也详细讲了,计算机只能读懂2 个数字, 一个是 0 ,一个是 1,而0 和1 是可以反映在电压上的,我们可以通过电流或电压的状态来区分 0 和1,比如让通电或者高压代表1,断电或者低压代表0。 当你在键盘上打下一个文字,比如 A,键盘不会把“A 的形状”发送给电脑。它只发送一串数字:01000001,这串数字就是A 的二进制写法,科学家们给每个文字都约定好了它在数字世界的表达方式,比如中文字 你,它翻译成二进制就是11100100 10111101 10100000,这样一串数字。 [图片] 无论你发送的是图片,还是语音视频,都有约定好的编码方法,再复杂的信息,都能翻译成 0 和 1。这就是输入系统。 第二个模块是存储系统。 冯诺依曼最重要的思想就在这里,他认为程序和信息没有本质区别,都是 0 和 1,都可以被存进同一个存储器里。那存储器是怎么“存”的呢? 存储器也只认得0 和 1 两种状态,比如有一类存储器,它里面排着密密麻麻的微型电容:当电容里有电的时候,就代表 1,电容里没电,就代表 0。 你可以把整个存储器想象成一个巨大的“电容棋盘”,当一个信息被存进去时,它会被拆解成成千上万个 0 和 1, 然后这些 0 和 1 会被一格一格地写进这些电容里:有电,就点亮一个格子; 没电,就熄灭一个格子。 [图片] 用电荷的有与无,来固定住信息的形状,那么,存储器的这片区域就会被占用,这就是“存储”的本质,而没有被占用的存储区域,它们的 0 和 1(也就是电容的状态)是可以随时被修改的。当然,就算是你存储的数据,也是可以被删除,被重写的。 [图片] 早年,只有存储器这个概念,但随着技术的演化,后面出现了内存和硬盘。 硬盘是有长期记忆的,它可以存储大量不需要马上运行的东西,当它断电以后,硬盘里面的信息也不会消失,而内存是短期的记忆,它存放哪些正在运行的程序,以及一些临时任务,它的速度比硬盘快很多。 [图片] 硬盘就好像书柜,内存就好像工作台,你要办公的时候,从书柜上拿资料到工作台上使用,用完以后,资料被放回书柜,临时工作台就可以腾出来给别的应用,它断电以后数据会消失,所以你要在关机前保存文件。这就是现在的存储系统。 第三个模块是控制器。 它就像一个计算机的指挥官,控制着计算的秩序和步骤。它会先去存储器里的程序里,取下一个条要执行的指令,然后读懂这个指令,读完以后,开始发号施令,如果要运算,就交给运算的执行部门,如果要取数据,就从内存去拿数据,它的职能就像是在做统筹分配。 [图片] 第四个模块,是运算器。 如果控制器是工头,负责发号施令,那运算器就是负责干活的工人,控制器说要做加法,运算器就开始做加法,控制器说要做乘法,运算器就做乘法 在冯诺依曼的架构里,是没有 CPU 和 GPU 的概念的,它们也是技术演化的结果。CPU 最早承担着控制器和运算器的两个职能,它在执行任务的时候,会不停地做判断,它会判断这一步算完了吗?会判断是否要跳到另一段代码?等等。它是按照顺序的逻辑来完成任务的。 [图片] 但是,当它在处理图像的时候就会出现问题,一张 1080p 图像有 200 万个像素,每个像素都要重复做同样的计算,这些计算不需要任何复杂的逻辑判断,但数据量会大到 CPU 根本算不过来。这里就会面临一个问题,这不是聪不聪明的问题,而是劳动密集型的问题。 于是,科学家们就想,有没有可能开辟一个新的计算部门,这个部门的成员都不用太聪明,但是很擅长干重复劳动,并且可以同时处理多个计算任务,于是就诞生了 GPU。 [图片] 一张CPU芯片里,通常有几个到几十个核心,每个核心都非常聪明,计算能力都很强,它们要严密地按步骤处理问题。 但是 GPU 的核心非常多,通常是 几千到几万 个,每个核心都相对简单,它们不用做复杂的逻辑判断,只需要对海量数据做简单计算,这个计算不是依次按顺序来的,而是同时并行的,它们可以大大提高运算速度,提供了大量算力。 所以 GPU 很适合处理图像渲染这类问题,特别是适用于 AI,因为 AI 的深度学习最重要的操作是矩阵乘法,矩阵乘法的本质就是无数个加法和无数个乘法,需要大量的计算,所以 GPU 天然比 CPU 更适合AI。 这就是为什么英伟达一家做游戏显卡的公司,反而成了 AI 时代的王者,因为游戏的画面渲染需要用到 GPU 的并行计算,这恰好 也是 AI 需要的,大模型时代推高了整个 GPU 产业。 [图片] 你看哈, CPU 起到了控制器和一部分需要复杂逻辑判断的计算功能,而GPU 就是纯运算,特别是处理图形这种大规模运算。 当一切计算完成的以后,控制器把信号传送给第五个模块,输出设备。 也就是屏幕,扬声器,打印机这样的东西,它们负责把 0 和 1 翻译成物理世界我们能看得懂的信息。 [图片] 除了 CPU、GPU、硬盘、内存,这些概念以外,我们还经常听到显存、缓存、芯片、主板、显卡这些词,它们到底又是什么意思呢? 显存是 GPU 的贴身内存,它只负责给 GPU存数据,因为 GPU 的计算量太大,一秒能发起几十万亿次运算。如果 GPU 每算一次都跑去内存里拿数据,很容易发生延迟和带宽不够的情况。 所以 GPU 必须有一个,在物理距离上离它很近,带宽很高,延迟很低的专属记忆体,要保证 GPU 的运算速度。 [图片] 而CPU 也有自己的贴身内存,叫缓存,它只存 CPU 经常打开的、马上要用的数据,也是为了让 CPU 的运行速度变快。 [图片] 显存、缓存、内存,都是短期的存储器,它们三个的存储范围是不一样的,显存存 GPU 的运行数据,缓存存 CPU 的运行数据,内存存整个正在运行的程序的数据,它们在断电后就会清空,只有硬盘是真正的长期记忆,它很慢,但容量最大,存放所有需要沉淀下来的数据和软件。 那显卡是什么呢? 我们经常听到大家囤积英伟达显卡的故事,显卡其实包含 GPU和显存,还有一些供电和散热的模块。GPU 是它最核心的部件,它被封装在显卡里面的。 [图片] 主板,是把显卡、内存、硬盘、电源、声卡网卡这些部件连接起来的硬件,它上面有不同的卡槽,CPU 插槽,内存插槽,显卡的接口等等,让所有的零件连成一个整体。然后在它们之间分发电力,传输数据。 [图片] 上面讲的所有板块,都离不开一个最核心的东西,那就是芯片。 芯片有一个用硅生成的底座,叫做硅基底,硅基底上面布满了密密麻麻的晶体管,晶体管是用半导体做的,半导体最大的特征就是它们的导电能力是可以调节的,它介于导体和绝缘体之间,可以通过控制电压的方式,让晶体管的状态在导电和不导电之间切换。所以它可以做成开关,控制电流的通断。 [图片] 再把这些晶体管,排列组合成不同的电路,一张芯片上可能存在几百亿或者上千亿个晶体管,它们组成了一个巨大的迷宫网路,迷宫里有无数条路,每条岔路口上都有一个开关,你输入不同的指令和信号,电流就会被分流到不同的方向,最终就会走出不一样的行动路径,得到不一样的计算结果。 [图片] 不同类型的芯片,原理都类似,都是在硅片上刻出巨量的晶体管,让它们组合成电路。只不过这个电路的设计思路是不一样的,有些侧重于存储,有些侧重于做大量简单的计算,有些侧重于做精密复杂的计算。 [图片] [图片] 相比起冯诺依曼的时代,计算机已经进化迭代了很多,但基础架构依然是来自于他,因为他那些大胆的想法,程序才可以脱离硬件,计算机才可能变得小巧和通用,我们普通人才可能用上这样神奇的工具。 连上我上一期讲的布尔代数和香农的逻辑电路,再加上今天讲的冯诺依曼的架构,就搭建了现代计算机的非常基础的理论体系,布尔代数让人的抽象思维变成了可以计算的数学逻辑,香农让数学逻辑变成了物理世界的电路,冯诺依曼让电路变成通用的可以编程的计算机。每一次都是非常精彩的思想革命。 从这之后,人类开始有了外挂的大脑,我们的一些思考外包给了计算机,所有的编程语言、操作系统、AI 大模型,都是在这之上演化出来的。于是,我们开始有了硅基文明。 ***广而告之 一、我的书《迷你物理学》上架中~这是我出版的第一本书,前不久中科院物理所推荐了这本书哟! 上册写了 100 个常见的物理知识点,下册记录了我感兴趣的物理哲学和科学的思维方式。微信、京东、抖音、淘宝等平台均有销售 二、我的电影音频专栏《那些电影里的治愈时刻》上架了!(有订阅读者社群) 选取了 12 部曾经治愈过我的电影,结合我的个体经验,探讨电影里的情感母题,希望大家能在焦虑的环境中,找到平静和温暖。👇 三、我的连载前沿科技·科学专栏《静止的量子》已更新两年,未来会继续更新,我会陪伴大家一起探索世界的美妙。(有订阅读者社群) [图片] 我的微信:xiubing234 (欢迎跟我分享有价值的东西)
你有没有想过,我们每天用的电脑,其实在做一件非常神奇的事,那就是用电流去思考逻辑。这就很奇怪啊,电流没有大脑,它不懂数学,不会理解,它只是一个物理过程,为什么它能执行逻辑、能做运算呢? 如果你理解了这个问题,你就会意识到一个非常震撼的事实:那就是人类的思维结构、数学的逻辑结构、物理世界的结构,竟然是同一种结构,它们是可以相互转换的。 那计算机是如何用电流来进行计算的呢? 首先第一步,要把人类的思维先转化成可计算的数学逻辑;第二步再把数学逻辑转化成电流;第三步让电流学会运算,让它看起来像是可以思考一样。 那我们先来看第一步,把思维转化成数学逻辑,人类的思维听起来是非常抽象的,也是很发散的,它跟数学又有什么关系呢? 我们每天会讲很多话,有一些话是天然带有可以被计算的特征的,而有一些没有。 比如我问你今天会下雨吗?这是一个疑问句,它没有任何推理,也不具备可以计算的逻辑结构。 又比如我说,啊!今天雨好大啊!这是个感叹句,它的功能是抒发情绪,同样也不具备可以被计算的逻辑结构。 但是我说:如果今天小雨,我就带伞。这句话就具有可以被计算的特征。 它的特征是:用条件推导出了结果。像这种句子,它就能直接翻译成计算机的语言。 当然,逻辑学家是不关心下雨,也不关心伞的,他们只关心这句话的结构。 所以我们把这句话的“下雨“替换成 A,”带伞“替换成B,这句话的结构就是如果A,那么推导出 B。 在逻辑上,这句话可以用 A 箭头 B 来表示: A→B. 但重点来了,这种推导关系其实并不是逻辑中最基础的东西,它只是一种结构而已, 真正构成这个结构的最小单元是A 和 B 这两个条件,推导只是把A 和 B 连接起来的一种关系形式。 如果要让这条结构变得可以被计算,有一个非常重要的前提,那就是:A 和 B 必须能够判断真假。 比如“今天在下雨”这句话,你只要推开窗户就能判断它是真的还是假的。“我有没有带伞”这个行为,你只要看看自己的手就能验证真假了。 只有当 A 和 B 都能判断真假的时候,整个 A → B 的逻辑结构才具备“可计算性”。 那为什么计算一定要能判断真假呢? 因为每一次计算,本质上都是在做选择,就像你在路口要判断走左边还是走右边,看到红灯,你要判断走还是停,你滑手机的时候,也在判断要不要继续看。 有判断,你才能选择下一个行动路径是什么,没有判断,就没有下一步。 你想一想,你自己在做每一个行动的背后,是不是都包含着一次判断?而判断的本质就是二选一。 比如是或否、成立或者不成立、做或者不做等等,逻辑学家做了一件非常天才的事情,他们把所有的判断全部统一抽象成了两个符号:真或假。 这个时候就要进入下一个阶段: 不仅 A 和 B 要能判断真假,A→ B这个逻辑结构,也要能够判断真假,只有这样,计算机才能判断这条指令到底成不成立,如果成立,它就走下一步,如果不成立,它要走另一条分支。 那还是这句话,“如果今天下雨,我就带伞”,该怎么判断真假呢? 要回答这个问题,我们必须把现实中所有可能发生的情况,都列举出来,一共有四种情况。 第一种情况,下雨了,并且我带伞了。这种情况在数学上写成A∧B,它表明A 和 B 这两个条件同时成立,在这个时候,“如果下雨就带伞”的逻辑就是真的。 第二种情况,下雨了,但我没有带伞,在数学上写成 A∧¬B。非B表示B 的反面的意思,在这何种情况下,雨下了,但带伞的动作没有执行,所以逻辑是假的。 第三种情况,没有下雨,我带伞了,在数学上写成 ¬A∧B,非 A 表示 A 的反面的意思,由于下雨的前提就没有发生,所以没有打破逻辑,逻辑依然是真的。 第四种情况,没有下雨,你也没有带伞,在数学上写成¬A∧¬B。同样,由于在原逻辑里没有设定不下雨的情况,所以这条也没有打破承诺,逻辑依然是真的。 [图片] 现在所有情况都贴上了真假的标签,但是,真和假是语言,计算机是没有办法理解的,于是数学家又做了进一步的抽象,把真替换成了数字 1,把假替换成了数字 0。 于是,整个逻辑世界就变成了数学世界,刚才的那四情况也有了更完整的数学表达。 [图片] 到这一步,你就会发现,语言、逻辑、数学都就连上了。 好了,更加神奇的地方来了,我们可以再进一步推理这句话。 “如果下雨,我就带伞” 这句话的意思其实完全等价于 “要么不下雨,要么我带伞”。 你可以慢慢地想一想,是不是这么回事? 这两句话的等价关系,在数学上,就可以写成这样: A→B≡¬A∨B 这里面的“或”∨ ,表示 A 和 B 其中至少有一个成立。 再进一步,我们还可以推导出下面这个结论:“今天下雨,而且我带伞了”其实等价于“ 不是( 不下雨 或者 不带伞)。 这句话听起来有点绕,你可以仔细想一想,是不是这样? 这句话里的“而且” 对应着数学上的与∧,这句话里的不 对应着数学上的非¬,这里话里的 或者 对应着数学上的 或 ∨。 那么,上面一整句话的数学逻辑就可以写成这样: A∧B=¬(¬A∨¬B),是不是很神奇。 到这里你会发现,这句普普通通日常语言,无论怎么变化,都可以拆分成 与 或 非这三个最基础的逻辑操作。 不仅如此,逻辑学家还发现,不光是这一句,而是“所有”的逻辑语言,不管多复杂,都可以用与 或 非 拼凑出来,它们就像色彩里面有三原色,红绿蓝可以混合成所有颜色,与或非可也以汇合出所有逻辑,不信你自己可以试一试。 [图片] 所以在这里,我就可以下一个定义: 所有可以被计算的逻辑 = 与、或、非 的无限组合。 与或非这三样东西,再加上 0 和1,这就是计算机能听懂的唯一语言。 这其实就是计算机的核心数学基础布尔代数,它是由数学家乔治布尔发明的。他第一次把可以计算的逻辑和数学系统性地统一了起来。 [图片] 讲到这里,我们的思维,已经被抽象成了数学逻辑,接下来就要用电流来执行这个逻辑了。怎么执行呢? 有一个科学家叫做克劳德香农,他提供了非常天才的构想。 [图片] 他认为呢,计算机做的所有操作,本质上只有两件事:通电和断电。 这两个操作正好能够对应逻辑学里的真和假,以及 数学上的 1和 0。所以通电代表 1,断电代表 0。 通电 = 真=1 断电 = 假=0 那与或非该怎么表示呢? 现在,你来想象一下,如果我们把两个开关串联,只有当两个开关都打开的时候,电才能通过,这就是 与门,它代表的是“同时成立”。 [图片] 如果我们把两个开关并联,只要其中有一个通电,电流就能通过,这就是 或门。它代表“至少有一个成立”。 [图片] 而非门,就是一个反向执行的开关,就像有一个灯泡,本来你按下它的开关,它应该就会亮,松开开关灯就会灭,但反向开关是反着来的,当你按下开关时,灯灭掉,当你松开开关时,灯反而会亮起来。它输出的结果永远跟输入的相反,这就是非门。 [图片] 这些开关就是芯片里面的一个个晶体管,晶体管的串联、并联、反向组合,就是计算机的逻辑门,成千上万个逻辑门的排列组合,就是计算机的电路。 当然,有了与门、或门、非门,是不够的,还得让它们进行运算。 那该如何运算呢? 我们先来看一下最简单的计算,1+1 等于几。 我们都知道,在十进制里面1+1=2,但是计算机是二进制的,那么,在计算机里1 + 1 = 10,这个 “10” 其实包含两层意思: 右边的这一位(0),叫做结果位,它是当前这一位确定下来的结果。 左边的这一位(1),叫进位,它是当前这一位“溢出”后要传递到下一位的信号。 就像你在装箱子,如果是十进制的,那每个箱子可以装 0-9 个球,第十个球的时候就要溢出传递给左边的箱子,结果位变成0,进位变成 1。 但由于这里是二进制的,每个箱子最多只能装一个球,如果有两个球,就会溢出来,要把多出来的球交给左边的箱子,结果位变成0,进位变成 1。 [图片] 而且计算机只认得 0 和1,与或非,所以,运算的前提,就是把复杂的文字和数学,全部变成最简单的0和 1 、与或非。 1+1 其实就是 两个 1 的信号,彼此相加。 加法在计算机里也是不存在的,它必须得置换成逻辑门,置换以后,加法其实等于:异或(XOR) + 与(AND)的叠加操作。 加法=异或(XOR)+与(AND) 也就是两个信号要同时通过“与门”和“异或门”。 与门很好理解,当两个条件同时成立的时候,也就是当两个信号都为 1 的时候,输出就是 1。 你可以想象这样一个场景, 一个信号控制一个开关,另一个信号控制另一个开关,这两个信号通过控制电压的方式,来决定自己的这个开关是否打开,由于这两个开关是串联的,只有当它们同时都打开,电路才导通,信号输出为 1。 [图片] 在加法器里,这个信号决定了进位的数值,也就溢出的部分。 你想想啊,0+0 不需要进位,0+1 也不需要进位,1+0 也不需要,只有 1+1 的时候才需要进位,恰恰是两个信号都为 1 的时候才进位,所以与门的规则就是进位的规则,与门就是进位检测器。 [图片] 异或门稍微复杂一点,它是一个复合门,是被基本门组合而成的,它的意思是:如果两个信号不同,输出为1 ,如果两个信号相同,输出为 0。 你可以把它理解成一个“翻转逻辑”:当它接收到两个信号,一个亮、一个灭 → 输出亮; 当两个信号都亮的时候 → 输出灭。 [图片] 异或门决定了结果位,为什么呢? 因为在数学里,如果是 0+0,结果位是 0;如果是0+1 或者 1+0,结果位是 1;如果是 1+1,因为两个挤不下,会发生进位,于是结果位剩下0。 你看啊,只有当两个数字不一样的时候,结果为才是 1,所以二进制加法的结果位的规则恰好跟异或门的规则是一模一样。 那我们来看 1+1 的计算过程。 你想象一下,有两个都是 1 的信号,要通过异或门和与门这两个电路, 由于结果位的数值由异或门的规则决定,两个相同的信号,输出是 0。 进位由与门的规则决定,两个都是1 的信号,输出是 1,那么把这两条电信号拼在一起,得出的结果是 10,换算成二进制,就等于 2。 [图片] 这是计算机里做最简单的算法。 那更复杂的计算呢?比如乘法、除法、甚至处理文字、处理图片、又怎么来的。 我们见到的所有信息,其实都可以编码成0 和 1。 比如图片,它其实就是一张巨大的表格:每个格子就是一个像素,每个像素都可以编码成一个数字。 整张图就是 0 和 1 的数字矩阵。 [图片] [图片] 比如字母,就拿A来说,你可以把它编码成数字65,65 的二进制写法是01000001,这就是 A 在计算机里的表示。 A=65=01000001 又比如声音,它是机械波,有震动的频率和振幅,就可以测量出这些振幅的大小,并且用数字来记录,再把数字转成 二进制写法,变成 0 和 1,这样就可以用计算机处理了。 [图片] 包括乘法除法,或者更复杂的运算,本质上跟加法一样,都是不同逻辑门的排列组合,就像乐高积木,再怎么复杂,都是由一块块小积木搭建起来的。 所以你看,我们从“如果下雨我就带伞”的这句话,推导出了整个计算机的运算逻辑。 当你理解了整个过程以后,你会发现,人类的思维、数学、物理,本就是同一个东西的不同表现形式。计算机也是人类思维的一种映射。 所以爱因斯坦有一句名言:这个世界最不可理解的地方,就是它竟然是可以被理解的。 就好像万事万物存在一个源代码,共享着同一个结构。这个结构太精妙了,太简约了,以至于我做科普的时候经常都会感叹,宇宙的法则真厉害。 这期我讲了计算机是如何让电流来执行逻辑的,但要让它有秩序的思考,还需要有非常天才的架构,下一期我讲讲计算机的架构和配置,来感受一下逻辑的计算是如何在机器中展开的。
与播客爱好者一起交流
添加微信好友,获取更多播客资讯
播放列表还是空的
去找些喜欢的节目添加进来吧