面向摩尔定律设计

计算机设计师的一个永恒的问题就是摩尔定律(Moore’s law)。摩尔定律指出,集成电路上可容纳的晶体管数每18~24个月翻一番。摩尔定律是Intel公司创始人之一戈登 摩尔在1965年对集成电路集成度做出的预测。由于计算机设计通常需要几年时间,因此项目结束时芯片的集成度较之项目开始时,很容易翻一番甚至翻两番。像双向飞碟射击运动员一样,计算机体系结构设计师应当预测设计完成时的工艺和技术水平,而不是设计开始时的工艺。

半导体行业大致按照摩尔定律发展了半个多世纪,对二十世纪后半叶的世界经济增长做出了贡献,并驱动了一系列科技创新、社会改革、生产效率的提高和经济增长。个人电脑、因特网、智能手机等技术改善和创新都离不开摩尔定律的延续。如今单个处理器已经很难适应摩尔定律了(主要包括随着更多晶体管被装入芯片当中,相应会出现电子能量外泄和热量散发的现象),但云计算兴起,算力网络起飞,在某种程度延续了摩尔定律。

使用抽象简化设计

计算机架构师和程序员都必须发明技术来提高自己的生产力,否则设计时间会随着摩尔定律的资源增长而显着延长。提高硬件和软件生产率的主要技术之一是使用++抽象(abstraction)++来表征不同级别的设计。从而,低层将细节隐蔽起来,呈现给高层的只是一个简化的模型。

抽象思维一直推动着计算机技术不断向前发展,科学技术本身就是现实世界的抽象和演绎:

电路信号->01二进制->指令汇编->高级编程->模块设计->框架设计->单机系统->分布式系统–>云计算,计算机领域有句名言:“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”。

加速经常性事件

使常见情况变得更快往往会比优化罕见情况更有效地提高性能。具有讽刺意味的是,经常性事件通常比罕见情形更简单,因而更易于对其进行优化以提高性能。加速经常性事件意味着设计者需要知道哪些事件是经常发生的, 这要经过仔细的实验与测量过程。

通过并行提高性能

从计算诞生开始,计算机架构师就给出了通过并行执行操作来提高性能的设计方案。

通过流水线提高性能

在计算机体系结构中,有一种并行技术非常普遍,这种技术有一个特殊的名字: 流水线(pipelining) 。例如,许多西部电影中有这样的场景,在消防车出现之前,人们用“水桶队列”来灭火一一小镇居民们一个接一个排成长队,接力将水桶快速从水源传至火场,而不是让每个人来回奔跑运水灭火。

通过预测提高性能

遵循谚语“请求宽恕胜于寻求许可" ,下一个伟大的思想是预测( prediction) 。假设预测错误后恢复的代价不大, 并且预测的准确率相对较高,那么通过预测的方式提前开始工作,要比等到确定知道能执行时才启动要效率高一些。

存储层次

现如今,计算机价格的很大一部分来自于存储器的开销。存储器对程序执行有很大的影响,其速度影响着程序的性能, 其容量限制了可解决问题的规模。因此,程序员总是希望存储器速度更快、容量更大、价格更便宜。计算机架构师发现,通过存储层次(hierarchy of memory) 可以来缓解这些相互矛盾的需求。在存储器层次中,位于顶层的存储器速度最快、容量最小, 但价格最昂贵。反之,处于最底层的存储器速度最慢、容量最大,但价格最便宜。例如,高速缓存可以给程序员造成一种假象,让他们感觉自己所使用的主存既有存储器层次中顶层的高速度,又和底层存储器一样价格便宜、容量大。

通过冗余提高可靠性

计算机工作时不仅要快,还要稳定可靠。由于任何物理设备都有可能发生故障,因此可以通过引入冗余组件来提高系统的可靠性 。该组件在系统发生故障时可以替代故障组件并帮助检测故障。例如,牵引式挂车后轴每边都有两个双轮胎,当一个轮胎出问题时,另一个轮胎保证卡车仍然可以继续行使。