计算机基础第六章:高级CPU设计(Advanced CPU Designs_BiliBili)
高级CPU设计
一.前言
计算机几十年的发展历程,计算速度从一秒一次运算到现在一秒上亿次运算,CPU是如何做的越来越快的。
二.高级CPU设计
1.早期计算机的提速方式是:减少晶体管切换时间,晶体管组成了逻辑门,ALU 以及前几集的其他组件,但这种提速方法最终会碰到瓶颈,所以处理器厂商发明各种新技术来提升性能,不但让简单指令运行更快
2.单位面积提升晶体管的数量
用新技术,提升计算机运算性能的方式就是增加晶体管,这是现在工程师一直都在做的事情,但如何在最小的单位面积上面尽可能多的排放晶体管如今任然还是在不断突破的技术问题,目前可以达到的晶体管极限是7纳米,第一款7纳米芯片是苹果公司的Apple A12 Bionic(2018年量产),是如今最顶端的芯片。
3.现代处理器有专门电路来处理图形操作, 解码压缩视频, 加密文档等
我们说过最早期的CPU,ALU是不支持乘除法的,是通过程序的累加累减去实现的,为了提升性能,所以现代 CPU 直接在硬件层面设计了除法可以直接给 ALU 乘法和除法指令,这让 ALU 更大也更复杂一些,这样的操作带来的是会有更复杂的设计和更多的CPU指令,但也更厉害,复杂度 vs 速度 的平衡在计算机发展史上经常出现,英特尔 4004,第一个集成CPU,有 46 条指令,但现代处理器有上千条指令,有各种巧妙复杂的电路
4.加缓存
随着电路越来越复杂,超高的时钟速度带来另一个问题:如何快速传递数据给 CPU,就像有强大的蒸汽机 但无法快速加煤,即使RAM与CPU之间只用短短几十厘米的数据线连接,但 CPU 每秒可以处理上亿条指令,很小的延迟也会造成问题,一条"从内存读数据"的指令可能要多个时钟周期,这会导致CPU 空等数据,解决延迟的方法之一是给 CPU 加一个小的 RAM, -这个“RAM”叫“缓存”,我们买电脑查看配置的时候可能看过三级缓存这样的词语,那就是离CPU更近的“RAM”——缓存,缓存还有一级缓存,二级缓存,三级缓存,有了缓存CPU 从 RAM 拿数据时RAM 不用传一个,可以传一批,因为缓存离 CPU 近, 一个时钟周期就能给数据 - CPU 不用空等!,这样可以极大的提高读写效率,提升性能。就好比你出门时要带一个背包或者行李箱,其实道理是一样的,你会把最常用的生活用品放到行李箱,最最常用手机和钱包放到口袋,不怎么用到的东西就留在家里,假如把你的房子比作“RAM”,那你的行李箱就是“缓存”,你的口袋就是“寄存器”,如果你没有背包和口袋,那每次需要存取东西时你都得回家。如果想要的数据已经在缓存,叫 “缓存命中”,就是背包中正好有你想要的东西,如果想要的数据不在缓存,叫 “缓存未命中”,那你就得回趟家了。但是有了缓存,会带来一个新的问题,就是如何去同步缓存和RAM的数据,因此缓存里每块空间 有一个特殊标记叫 "脏位"(dirty bit),同步一般发生在 当缓存满了而 CPU 又要缓存时,在清理缓存腾出空间之前,会先检查 "脏位",如果是"脏"的, 在加载新内容之前, 会把数据写回 RAM
5."指令流水线"
想象下你要洗一整个酒店的床单,但只有 1 个洗衣机, 1 个干燥机
选择1:按顺序来,放洗衣机等 30 分钟洗完,这样1小时洗一批
选择1:30分钟洗完衣服后,接下来30分钟干燥机和洗衣机同时进行
CPU也一样,多个取值,解码,执行也可以合理的“并行运行”
和缓存一样,这也会带来一些问题,第一个问题是:指令之间的依赖关系。举个例子,你在读某个数据而正在执行的指令会改这个数据,因此流水线处理器 要先弄清数据依赖性,必要时停止流水线,避免出问题;第二个问题是 "条件跳转",比如上集的 JUMP NEGATIVE,很显然这种情况也不能用并行处理,为此CPU 厂商开发了复杂的方法来猜测哪条分支更有可能,叫"分支预测",现代 CPU 的"分支预测"正确率超过 90%。
不仅仅是从取“值,解码,执行”阶段去压缩时间,提升效率;
6.多ALU,多核心
我们还可以充分利用多条指令要 ALU 的不同部分,就多条同时执行,还可以增加多个ALU,多核CPU来并行处理一些程序命令。我们目前日常最常见的CPU应该就是两核心四线程,四核心八线程。八核心十六线程就已经是很好的电脑CPU配置了,但是如今大数据时代,很多高端服务器,比如我们的微信,LOL肯定会有更高配置的服务器CPU,有时人们有更高的性能要求,所以造了超级计算机!
2018年世界上最快的计算机——神威·太湖之光
中国无锡的国家超算中心,神威·太湖之光有 40960 个CPU,每个 CPU 有 256 个核心,总共超过1千万个核心,每个核心的频率是 1.45GHz
每秒可以进行 9.3 亿亿次浮点数运算。