计算机系统结构专业是软件还是硬件,计算机体系结构中软硬件和架构设计有哪些机会?...

软件和硬件的架构设计

在编程的时候可以通过程序提高系统的运行效率。当前最为流行的编程方法是运用现代高级语言和脚本语言,如Java、Python等。它们采用解释型执行,支持动态类型,并具有很高的灵活性来支持复用。这类编程语言对程序员非常友好,可以用于快速开发大型工程,但它们的执行效率不高。另一方面,在硬件层面,也可以通过改进架构来提升性能。但这个方向上 的唯一出路是转变为领域专用架构,而非继续保持通用性。当然可以为一套特征相近的任务专门定制一种系统架构的设计,以达到最佳的性能。事实上,工程师也可以结合软件和硬件,协同设计一门领域专用的编程语言,支持其特别优化的系统架构。

在软件层面,麻省理工学院一个团队的论文“There’s plenty of room at the Top”里提到,当前我们常用的软件编程环境的效率尚有很大的提升空间。他们选择了一个小规模但具有足够代表性的应用——矩阵相乘。比较的基准是一个Python 的实现版本。首先,他们用C语言实现了同样的算法,得到了47倍的加速;然后在C语言版本的基础上把循环并行化,得到了额外的8倍提速;接着,引入缓存和内存访问等相关优化,使性能再次提高了20倍;最后,通过采用x86架构上的SIMD指令,又获得了10倍加速。结合以上的所有软件优化技术,最终的实现版本比原始的Python基准快了约63000倍。不得不说这是一个极大的性能提升。虽然这个程序只是一个比较易于优化的例子,但我认为它揭示了许多通过改进软件实现系统效率提升的机会。

那么,领域专用的硬件架构又拥有什么样的机 会呢?这类架构通过针对特定应用领域的定制化设计来达到更高的效率,支持整个领域的应用,而不只是单一的一个应用。它们是可编程的,这是与专用的ASIC(专用应用集成电路,Application-Specific Integrated Circuits)芯片的不同之处。后者常见于手机等设备之上,通常用来执行唯一的固定任务,例如调制解调等,并不能通过编程来完成其他功能,而领域专用架构可以支持一系列相似的应用。但是与通用处理器相比,设计此类架构需要更多的领域专用知识,需要深入理解应用的特征才能得到好的性能。这里也 存在着一个权衡:更灵活、更通用意味着更低的性能;更高性能则需要更加专注于特定领域。一个典型的可能也是目前最大的例子,就是深度学习类的应用:现代神经网络处理器可以用于模型训练和任务推理。又如GPU,革命性地改变了图形学应用的性能。好消息是,虽然这类领域专用处理器不够通用,但在这些特定领域中,需要持续追求更高的性能。实际上,机器学习也许是目前最重要、甚至唯一的新型编程方式:对数据进行“编程”来产生有潜力的应用,而不是按传统的方式去写许多代码。深度学习正在引发一场机器学习的革命。现在,这一领域每周发表的论文数量已经达到了一百篇左右。机器学习方向发表的论文数量,正如同摩尔定律一般飞速增长。人们对这一领域充满着兴趣和热情,这就是一场新的革命。

edb1da2496a71ed10a82b2bdac6d7808.png

领域专用架构

以典型的英特尔多核处理器中的一个核心为例,我们来分析其上每条指令执行时所产生的能量消耗,例如一条从一级缓存中读取数据至寄存器的指令,或者是一条完成一次浮点数乘法的指令。可以注意到,在这两种情况下,多于一半的能量是被控制逻辑所消耗的。另外,从缓存中访问指令也耗费了许多能量。所以,有高达60%~80%的能耗都是来源于获取指令和解析其相应的控制行为。如果可以改善这几部分,那将带来极大的能效提升。

1. 领域专用架构可以采用更简单的并行方式来 处理一个特定应用领域的问题,以减少所需的硬件控制逻辑。通用处理器中60%以上的能量都消耗在控制上。通过利用更简单的并行方式,我们可以减少控制逻辑,从而减少处理指令的额外开销。这包括两种方法:一是从传统多核处理器的 MIMD 架构(多指令多数据,即每个核心独立获取其指令流)转向所谓的SIMD架构(单指令多数据,即将一条指令广播至多个运算单元以并行处 理多个数据)。由于取指令的数量大大减少,效率 将大幅提升。二是采用所谓的VLIW(超长指令字)架构,用更宽的指令来配置各个单元,以取代现代通用多核处理器中的猜测执行和乱序执行方式。后者被广泛用于英特尔处理器和高端的ARM处理器中,但其需要大量的控制逻辑。因此可以再一次在控制方面取得了优势,降低了能耗。

2. 领域专用架构可以更加有效地利用片上和片外的存储带宽,以用户显式控制的存储来取代传统缓存。当无法预知程序代码的行为时,缓存对于通用处理器是非常灵活和高效的,但它们也有非常高的额外开销。对比之下,当应用程序具有非常明确的数据流动模式时,则可以采用让用户显式控制的存储系统来达到更高的效率。所以可以将传统的缓存系统替换成处理器结合显式存储的结构,并在需要时采用高效的片外数据预取。总之,正是由于可以明确知道应用程序的特征,使得工程师可以完成上述的优化设计。

3. 降低不必要的精度。IEEE的浮点数标准支持很高的精度,但也有很大的代价,可以将其替换成低精度的浮点数格式。类似地,也可以将32比特和64比特的整数降为8比特或16比特。例如,对于机器学习应用,可以用小浮点数做模型训练,用小整数做任务推理。

4. 领域专用的编程模型,无论是TensorFlow还是CUDA等,都可以将上层应用与下层架构相匹配。

结合以上方法,领域专用架构完全可以在晶体管的使用效率和功耗开销上取得显著的优势。

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值