专用硬件是一种什么东西?(150504)
闵应骅
我在摩尔定律死了怎么办?(150406)一文中已经明确地说了:基于CMOS技术的摩尔定律死了,问题是以后怎么办?权威专家们说28纳米的节点以每个晶体管的成本计算是最便宜的,工艺尺子并不是越小越好。这一趋势对整个计算领域都有深远影响。今后的系统结构主要是增加功能和更强的功耗约束。特别是智能手机,要增加功能,可又要保持电池寿命。而通用计算机满足不了更紧张的能量-性能约束。所以,集成电路要专用化。一谈到专用硬件马上使人想起ASIC(Application Specific Integrated Circuit),对特定应用的集成电路批量比较小,太缺乏通用性。而专用硬件(Specialized Computing)则是从体系结构入手来寻求折中的办法。2015/4 CACM发表文章,谈谷歌、英特尔和斯坦福大学等帕洛阿尔托(Palo Alto)人在美国国防部先进研究项目局项目的支持下开展的此项研究。
改进能量-有效性的办法是专用化,就是说设计有一定编程能力、能满足应用要求的特色部件。通用CPU为了其灵活性和可编程在能量方面的浪费最高达到99%。为了减少这种浪费,需要把数据存储、计算机结构及它们的连接转向数据流和数据定位模式。在通用计算机上完成一个特定任务比专用硬件要多1000倍能量,专用硬件用很小硅片,其性能可以高几百倍,取消了许多冗余的数据传输,指令和数据的存取都更近了。
大家知道,GPU对计算摄影、图像处理、视频加工,比用CPU要快,所以超级计算机里面GPU的数量比CPU还要多。可是,GPU为什么能快又节能呢?不搞这方面专业的人不懂,我也不懂。通用CPU指令开销浪费能量,包括取指、译码、流水线管理、程序定序等。要省电就要做到两条:1。每条指令应该做几百个操作;2。处理器应该存取很少的数据。
CACM这篇文章,介绍了一种技术可以提供高有效性,即卷积引擎(Convolution Engine)。卷积是分析数学中一种重要的运算。在泛函分析中,卷积、旋积或摺积(英语:Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分的面积。一个可编程卷积引擎用1D或2D模板,和1D或2D的数据阵列做卷积。一个2D图像是典型的例子。模板比图形小得多,它只要3X3像素,而图形则有亿万像素。其大小可编程。每一条指令要求做几百个ALU操作。它把下一帧图像的存取变成大量的ALU操作。真要说它的数学模型,一大堆数学公式,不适宜在博客上谈。许多卷积流应用基于高能量消耗的乘法操作。搞上128个ALU,让它们并行。卷积引擎本身是一个处理器,其指令可以用C编译完成。所以,卷积引擎可编程。从而达到一定的灵活性。
专用硬件由于把数据存储结构转换为数据流和算法的数据定位功能而得到其有效性。卷积使用了许多数据移动。譬如一个可编程卷积引擎用1D或2D模板,和1D或2D的数据阵列做卷积。一个2D图像是典型的例子。模板比图形小得多,它只要3X3像素,而图形则有亿万像素。其大小可编程。已用于移动平台,大量图象处理,又省电。你可以想像,一个几十、几百兆的文件从存储器读写既慢又浪费能量,是很笨的办法。大型图像要存取存储器。但这些存储在卷积类型和模具已知以后是可以按已定义的模式预先计算的,只要运行足够高速,就可以最小化不必要的存取,而减少电源消耗。卷积引擎既不是国定功能的硬件,也不是通用硬件。其出发点有两点:一个用户实现和一个带SIMD(单指令多数据)指令的通用处理器扩展。SIMD指令类似于INTEL的SIMD流扩展,和ARM的NEON扩展。卷积引擎比有SIMD指令的通用处理器能耗和硅片有效性提高8-15倍,而用户单元只占1/2-1/3。该文把SIMD引擎作为16路8位数据通路,有时也作为8路16位通路。卷积引擎结构紧密结合基于卷积算法的数据流,指令流的变化很小。卷积引擎比SIMD处理器节省能量8-15倍。但是对其他应用只节省2-3倍,而硅片面积增加2倍。这种结构不但由于路由和多路复用增加了许多逻辑,而且引起漏电流的增加。所以它也有缺点。灵活的功能单元提供了低开销的灵活性。
专用硬件是目前限制能耗的体系结构的主要途径,希望尽可能使用专用引擎。但这又影响灵活性和用户可接近性。这是有矛盾的。在广泛领域关注关键数据流和数据定位模式,使我们可能建造高能源有效性引擎,同样用户可编程。基于类似于卷积模式的计算摄影、图像处理和视频加工,包括各种大小、维度、计算类型的卷积。为了节省能源,卷积引擎抓住数据重用模式,取消数据传送开销,大量增加每周期内操作的数量。
这使我想起一件事。当摩尔定律死了以后,中国人在想摩尔定律或者还可以活几年,或者在某些范围不死。而外国人想的是死了以后怎么办、我们如何前进。就像超级计算机受INTEL芯片进口限制,中国人想这对我们影响不大,或者说没有影响,很少有人说在这种情况下,我们怎么办?我们的思维常常诉诸伦理,缺乏建设性。人家知道了通用CPU面临的问题,从体系结构入手设法解决。这就是建设性的。我们不是说,计算机体系结构几十年都是老样子吗!其实,创新就从这里开始。创新有两个要素:一个是敢于提出问题;一个是提出解决问题的办法。缺一个就创不了新,只能修修补补了。
转载本文请联系原作者获取授权,同时请注明本文来自闵应骅科学网博客。
链接地址:https://wap.sciencenet.cn/blog-290937-887161.html?mobile=1
收藏