“These are eight great ideas that computer architects have invented in the last 60 years of computer design. They are so powerful they have lasted long after the first computer that used them, with newer architects demonstrating their admiration by imitating their predecessors.”
---大卫 A.帕特森博士
大卫 A.帕特森博士,自 1977 年加入该学院以来, David A. Patterson博士一直在加州大学伯克利分校教授计算机体系结构,并担任 Pardee 计算机科学主席。他的教学曾获得加州大学杰出教学奖、ACM 卡尔斯特伦奖、IEEE穆里根教育奖章和本科教学奖,世界上最大的技术进步专业协会。Patterson 博士因对 RISC 的贡献而获得 IEEE 技术成就奖和 ACM Eckert-Mauchly 奖,并因对 RAID 的贡献而分享了 IEEE 约翰逊信息存储奖。他还与合著者 John Hennessy 博士分享了 IEEE 约翰·冯·诺依曼奖章和 C&C 奖。
计算机设计师的一个常数是快速变化,这在很大程度上是由摩尔定律驱动的。它指出,集成电路资源每 18-24 个月翻一番。摩尔定律源于 1965 年英特尔创始人之一戈登·摩尔 (Gordon Moore) 对 IC 容量增长的预测。由于计算机设计可能需要数年时间,因此在项目开始和结束之间,每个芯片的可用资源很容易翻倍或四倍。就像飞碟射手一样,计算机架构师必须预测设计完成时技术的位置,而不是设计开始的位置。我们使用“向上和向右”摩尔定律图来表示快速变化的设计。
半导体行业大致按照摩尔定律发展了半个多世纪,对二十世纪后半叶的世界经济增长做出了贡献,并驱动了一系列科技创新、社会改革、生产效率的提高和经济增长。个人电脑、因特网、智能手机等技术改善和创新都离不开摩尔定律的延续。如今单个处理器已经很难适应摩尔定律了(主要包括随着更多晶体管被装入芯片当中,相应会出现电子能量外泄和热量散发的现象),但云计算兴起,算力网络起飞,在某种程度延续了摩尔定律。
计算机架构师和程序员都必须发明技术来提高自己的生产力,否则设计时间会随着摩尔定律的资源增长而显着延长。硬件和软件的主要生产力技术是使用抽象来表示不同表示级别的设计。隐藏较低级别的细节以在较高级别提供更简单的模型。我们将使用抽象绘画图标来代表第二个伟大的想法。
抽象思维一直推动着计算机技术不断向前发展,科学技术本身就是现实世界的抽象和演绎:
电路信号->01二进制->指令汇编->高级编程->模块设计->框架设计->单机系统->分布式系统-->云计算,计算机领域有句名言:“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”。
使常见情况变得更快往往会比优化罕见情况更有效地提高性能。具有讽刺意味的是,常见情况通常比罕见情况更简单,因此通常更容易增强。这种常识性建议意味着您知道常见情况是什么,这只有通过仔细的实验和测量才能实现。我们使用跑车作为快速制作普通案例的图标,因为最常见的旅行只有一两个乘客,而且制作快速轿车肯定比快速小型货车更容易。
计算机大多数时间都是运作在常见情况下,符合2/8定律,所以首先我们针对常见情况进行优化改进,加速大概率事件,效果更快。
自从计算出现以来,计算机架构师就提供了通过并行执行操作来获得更高性能的设计。我们将在本书中看到许多并行性的例子。我们使用飞机的多个喷气发动机作为并行性能的标志。
并行设计思想一直是提升性能的核心思想,多进程,多线程,多核-SMP,SIMD,NUMA,MIPS,向量机,GPU等等。
一种特殊的并行模式在计算机体系结构中如此普遍,以至于它有自己的名字:流水线。例如,在消防车出现之前,“水桶大队”会对火灾做出反应,许多牛仔电影都会以这种方式来应对恶棍的卑鄙行为。城镇居民形成一条人链来携带水源生火,因为他们可以更快地将水桶向上移动,而不是个人来回奔跑。我们的管道图标是一系列管道,每个部分代表管道的一个阶段。
不管硬件设计还是软件设计,流水线设计(pipeline)都是计算机领域最重要设计思想之一,这种思想是一种用面积换速度的思想,用更多的资源来实现高速。
遵循“请求宽恕比请求许可更好”的说法,下一个好主意是预测。在某些情况下,假设从错误预测中恢复的机制不是太昂贵并且您的预测相对准确,那么平均而言,猜测并开始工作可能比等到您确定知道时更快。我们使用算命先生的水晶球作为我们的预测图标。
现在流行大数据+AI算法预测和CPU的分支预测技术在思想上是不是有异曲同工之妙。
程序员希望内存快速、大且便宜,因为内存速度通常会影响性能,容量限制了可以解决的问题的大小,而今天的内存成本通常是计算机成本的大部分。架构师发现他们可以通过内存层次结构来解决这些相互冲突的需求,在层次结构的顶部,每比特最快、最小和最昂贵的内存,而在底部每比特最慢、最大和最便宜的内存。高速缓存给程序员一种错觉,即主存储器几乎与层次结构的顶部一样快,并且几乎与层次结构的底部一样大且便宜。我们使用分层的三角形图标来表示内存层次结构。形状表示速度、成本和大小:越靠近顶部,内存越快,每比特成本越高;层的底部越宽。
cache层次思想是计算机软硬件非常伟大思想,一直延伸到现在redis缓存MySQL,本地缓存远端网络等等。
计算机不仅需要速度快;他们需要可靠。由于任何物理设备都可能发生故障,因此我们通过包含冗余组件来使系统可靠,这些组件可以在发生故障时接管并帮助检测故障。我们使用拖拉机拖车作为我们的标志,因为其后轴两侧的双轮胎允许卡车在一个轮胎失效的情况下继续行驶。(据推测,卡车司机会立即前往维修设施,以便修复漏气的轮胎,从而恢复冗余!)
提高可靠性最笨的办法,也是最有效的方法就是冗余设计,大到飞机的双引擎设计,小到数据库冗余备份模型,服务器热备,冷备,异地多活等等。
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8