摘要:要放在早几年,很多计算机玩家哪怕没吃过猪肉,也见过猪跑。那时候攒机风盛行,谁家电脑不是自己配的?CPU、主板、显卡、内存,全靠一双手和一张价目表。久而久之,“一台电脑配一个CPU”,就成了天经地义的共识。
又是一个推送话题 #为什么电脑就只能安装一个CPU呢#为什么电脑就只能安装一个CPU?
这话一听,就有点没见识了。
要放在早几年,很多计算机玩家哪怕没吃过猪肉,也见过猪跑。那时候攒机风盛行,谁家电脑不是自己配的?CPU、主板、显卡、内存,全靠一双手和一张价目表。久而久之,“一台电脑配一个CPU”,就成了天经地义的共识。
但最近几年,情况变了。越来越少的人需要每天坐在电脑前,发朋友圈、剪视频、办公、娱乐——随便找台手机就可以全干了。
再过几年,恐怕真就成了“没吃过猪肉,也没见过猪跑”的时代。
诚然,个人计算机的黄金年代,正在谢幕。
年轻一代的小孩儿们对主板插槽、电源瓦数、双通道内存甚至CPU风扇这些词,恐怕就已经没有任何画面感了。
可是恰恰这种话题就推给了W君……那咱就开始聊聊吧。
因为,在很长很长的一段W君使用计算机的经历中,家里的计算机并不是只有一个CPU。
最最最早,W君自己的计算机就是一台Apple II,那已经是很多很多年前的事情了。
很小很小的时候W君的编程入门就是在这台机器上完成的。这里就有很熟悉Apple电脑的人说了,Apple II上应该是6502或者65C02 的CPU,就是一块CPU啊!
原因在于使用Apple并不方便,早期的APPLE实际上只有一个内置的basic解释器,如果想用一些更先进的功能就不太适合了。但是在apple上是可以像现在插显卡一样插入扩展卡,完成一些本身apple II不能做的事情,当年W君的Apple机上就装了一块叫做Z-80卡的东西。
插入这个卡就可以利用Apple II来执行一些CP/M操作系统上的应用程序。
这时候有意思的事情就来了,看上面卡片照片最大的那块电路 Z80的CPU!
激活这块扩展卡之后,apple本身的CPU就被屏蔽掉了,整机就会使用这个Z80 CPU来工作——那时候的人就是这么野!
不过虽然当时这么“野”,但是切换CPU的过程现在看很笨,用软盘引导——开机之前先把CP/M的引导盘放到软驱中,开机引导程序会激活这个扩展卡,如果想用本体的CPU怎么办?关机,把软盘拿出来呗。和咱现在alt+tab这样的切换形式来比,差不多就是在原始社会的感觉。
但,事情就这么奇怪,一台电脑里面有两个CPU!
只不过,这两个CPU并不可能同时工作。这块扩展卡只是利用了苹果的总线接管了总线上的其他设备。打个不恰当的比方——Z-80卡替代了我们从CPU插座上拔下CPU进行替换的过程。
这里就有一个很重要的计算机概念——总线(Bus)。
简单说,总线就是电脑里所有部件之间“说话”的那根大喇叭线。CPU要访问内存、显卡要读数据、硬盘要写文件,全得经过这根总线。
它不只是“连线”,更像一个调度中心——谁先说话、谁得闭嘴,都得听总线仲裁。
总线的设计源自于电力系统的“汇流排”(Busbar)
通常,在配电箱中配备的几根十分粗大的金属导体,它的作用就是把零、火、地线进行统一分配。在我们日常生活中,如果打开家里的强电箱就大概率的可以看到汇流排。
人类的技术应用是相似的,不仅仅可以使用统一的线路进行电力的分配,当然也可以使用统一的线路进行数字信号的共同传输。这样计算机的结构就可以大幅度的简化。
所以,在我们打开计算机机箱的时候往往可以看到一大堆扩展卡接口。这些接口其实就是最直观的总线接入点。
而Z-80那块扩展卡之所以能“接管”Apple II,就是因为它插在了总线上。一旦激活,Z-80通过总线信号把6502“请出会场”,自己上台主持全场运算。所以,如果从硬件结构上看,它并不是扩展卡上的Z80CPU在协助主板上的6502 CPU工作,而是Z80在系统中直接“篡位”,原来的那块6502CPU变成了太上皇在后宫颐养天年不问世事了。
在总线上运行的不只是电流,还有逻辑信号、控制信号、地址信号、数据信号全都在上面完成传输。这就像一辆在固定路线运行的公交车,数据和指令在不同“站点”上下车。
于是,人们给它起了个最朴素的名字:Bus,在汉语言的术语中很难解释为什么在计算机机箱里有一辆“公交车”,于是我们就造出了“总线”这个词汇,而在繁体中文使用地区则把“总线”叫做了“汇流排”。
为什么讲到“总线”呢?其实这里面还有说法。
我们在一台计算机的总线上加两个显示卡没毛病吧?
相较于单一显卡,双显卡基本上可以让游戏的视频性能提高170%左右。
我们在一台计算机的总线上接两个键盘或者两个鼠标也没毛病吧?虽然没什么实际意义,但这件事是可以这样做的。
其实计算机上的大部分配件都可以随心所欲的往上加,例如W君家里的一台存储服务器,经过扩展扩展再扩展,已经硬生生的装进去了37块硬盘。
既然都能“无限”加,那么凭什么只能加一块CPU呢?这里就得说到CPU的“片选”(Chip Select)功能了。在CPU上有一个引脚叫做CS
通常这个引脚被设置为低电位的时候,这个CPU开始工作。这样就避免了多颗CPU在总线上相互打架(冲突)。实际上和遥远年代中Z80卡做的事情是一样的。只不过在高频信号的处理过程中,CPU CS引脚的变化极快,就会让人有两颗CPU同时工作的错觉。
而且,现代设计的计算机CPU一般会对多处理器联动的功能进行优化,在cs选定后CPU进行快速的通讯,拿到需要做的工作后就会释放选定,然后在内部进行计算处理,等到下一次cs选定后会将处理结果经过总线输出——这样一来就几乎是并行的计算了。这个技术就叫做“多处理器协同”
其实现实生活中,W君自己用的大部分X86体系的计算机都是多CPU的。
一般都是这样的货色,在主板上插入2-4颗CPU。
这样做的好处就是有更大的处理能力,在进行一些分析和数值运算的时候速度更快,坏处也有,就是耗电量太大,而且多处理器的计算机体积往往更大,在一般个人家庭中使用就太占空间了。
所以,在今天的大多数消费级计算机中,其实并不存在真正意义上的“多CPU”。
厂商采用了一种更现实、也更优雅的折衷方式——多核心(Multi-Core)。
它的思路非常简单:
既然一台主板上插多颗处理器太占地方、不经济,那就把几颗CPU“封”进同一块硅片里。
每个核心都有独立的算术逻辑单元(ALU)、寄存器和一级缓存,通过共享的二级缓存和系统总线进行通讯。
从物理上看,它们是一块芯片;从逻辑上看,它们就是一台“多处理器计算机”的微缩版。
随着 CPU 制造工艺的不断提升,这些年的变化其实非常明显。
最早那种“两个内核的CPU”几乎已经消失了——取而代之的,是越来越抽象的逻辑处理器(Logical Processor)。也就是说,我们看到的“多核”早已不再只是几颗物理内核,而是经过调度单元、超线程技术(Hyper-Threading)和流水线优化后虚拟出来的逻辑执行单元。
在一颗 CPU 里,可能存在十几个甚至几十个逻辑处理器,它们在操作系统眼中就像独立的核心。更进一步,如今的芯片厂商又引入了“大小核架构”(big.LITTLE),让高性能核心(Performance Core)负责计算密集型任务,让能效核心(Efficiency Core)承担后台与轻负载运行。
这已经不再是单纯的“多核”,而是一种分工式智能协作体系。
所以说,今天很多人看到主板上只有一块 CPU,就理所当然地以为——计算机也就只有一块 CPU。可事实上,这恰恰是一个巨大的误解。在这块小小的硅片之中,已经塞进了几十个核心、上百条指令流水线、成千上万个逻辑处理单元。
只是这些核心都被封装到了一个元件中,普通人就只是“一块”罢了。
于是,电脑看上去只装了一块 CPU,但实际上,它早已不止一块。电脑安装一个CPU?别逗,这并不是天经地义的事情!
不过,有一说一:如果你真用过多CPU主机,再看这些“封在一颗里的多处理器”,那种感觉,就像吃惯了整牛排的人,被端上一份碎牛肉饼,这种感觉你得真用过才能体会到。
来源:军武数据库