我们从小霸王学习机的故事开始,为大家分享了计算机的一些较为基础的硬件知识。
小霸王学习机能够使用性能非常低下的硬件,运行精彩刺激的游戏,并展示多变的画面,这依赖于程序员充分考虑到硬件的软件设计,也就是最初的软硬件融合设计思维。
实际上,与现在具备每秒万亿次计算性能的服务器相比,小霸王学习机并没有实质上的功能缺失,这也就是所谓的“图灵完备”。有了图灵完备,集成了运算器与控制器的CPU之后,为CPU添加运行程序所依赖的存储器,就可以构成冯·诺伊曼定义的计算机。
在现代计算机中,为了更好地控制内存,让内存的访问相对于开发者而言是透明的,CPU外部增加了内存控制器。同时,由于静态内存SRAM的价格昂贵,工程师们又发明了静态DRAM,牺牲一部分存取性能来获取更大的容量。
在386时代之后,由于DRAM的性能制约了整机的性能提升,工程师们在计算机中增加了少量的SRAM作为缓存,当CPU读写数据的时候,先看数据是否在SRAM缓存中,如果不在,再去DRAM中寻址访问。由于计算机访问过的数据及其附近的数据,大概率近期还会再访问到,使用缓存能够显著有效地提升存储器的访问性能。这一机制叫做时间局部性和空间局部性。
在多处理器系统中(如服务器中的至强可扩展多核处理器),需要对缓存的访问做充分的优化。如果不同处理器都需要访问同一块内存,需要解决写入这块内存的时候,其对应的缓存的一致性问题,也就是保证写入的原子化、串行化和序列化。部分多核处理器集成了CCIX组件,能够在硬件电路中比较好地解决这一问题,而对于部分没有集成该组件的多核处理器,只能简单地在一个核心写入缓存后,其他核心对应该内存地址的缓存置为失效,从而影响多核处理器协作的性能。对于这一问题,可以在程序中,尽量避免多核同时写入同一地址,从而缓解其带来的性能损失问题。
实际上,对系统性能影响最大的核心指标,还是处理器的时钟频率,也就是所谓的主频。计算机的主频是通过数字信号控制的锁相环,将主板上产生的基准频率升频而来的,升频的倍数是所谓的“倍频”。倍频是可以动态调整的,也就是所谓的“睿频”。为了避免过高的睿频倍数造成处理器工作异常(死机)甚至硬件损毁,计算机硬件又增加了所谓的“温度墙”。它是一种负反馈机制,如温度超标会让CPU降频降电压运行,甚至停机。
计算机中的耗电和散热大户除了CPU以外,还有GPU。GPU的功能是并行计算一些图形相关的算法,如三角函数和卷积等。由于GPU往往具有成千上万个运算单元,也经常被利用来批量执行SHA256一类的区块链验证算法,俗称“挖矿”。
在现实场景中,往往不需要批量执行SHA256算法,更需要的是RAS密钥算法或AES256密钥算法的批量执行。对于此种情况,我们可以在计算机中引入更为定制化的专用硬件,以软硬件融合的方式来解决这一问题。
这是我们下一部分将涉及的主题——DPU。