足够好的计算能力

云脑智库 2022-05-22 00:00


来源 | 悦智网

智库 | 云脑智库(CloudBrain-TT)

云圈 | “云脑智库微信群”,请加微信:15881101905,备注您的研究方向

声明 | 本号聚焦相关知识分享,内容观点不代表本号立场,可追溯内容均注明来源,若存在版权等问题,请联系(15881101905,微信同号)删除,谢谢

伏尔泰曾写道:“至善者,善之敌。”

这只是表述“完美主义并非总是美德”的众多说法之一。然而,如今的计算机则是坚定不移的完美主义者,这是因为即使是其输出结果中的罕见缺陷也可能造成高昂的代价,甚至带来灾难性的后果。例如,英特尔P5奔腾芯片中的一个漏洞曾致使该公司损失近5亿美元,尽管在90亿次计算中,它仅给出了一次略微不准确的答案。
计算机超凡的稳定性使它们在处理许多任务时大有助益,尤其是我们易犯错误的普通人永远无法做好的那些工作。但是这一绝妙品质需要付出代价——能源。为了确保错误率极低,以至于我们可以放心地假设错误永远不会发生,计算机消耗了大量能源。
这种几近完美的准确性在1971年时已成定局,当时首个商用微处理器——英特尔4004横空出世。在接下来的30年间,微处理器设计人员的主要目标是在维持该属性的同时,在每个芯片内填充更多的晶体管;能效并不在当时考虑范畴内。然而在今天,出于若干原因,能源使用已处于芯片设计人员思维的前沿和中心。
首先,我们都爱不释手的移动计算机(如智能手机和平板电脑)中的处理器必须高效节能,以节省电池。超级计算机和数据中心内安装的芯片需要同样地节能,因为运行这些设施所需的电费通常能达到一年数百万美元。并且不同于1971年的情况,设计人员不可以再依靠半导体技术的进步,年复一年地大幅提升晶体管的能效。
事实上,他们目前正面临着“黑硅”问题:尽管“摩尔定律”仍牢不可破,即每一代新的制造技术都不断地为芯片增加更多晶体管,但微处理器无法同时使用这些新增晶体管。其中仅有一部分可以在芯片变得无法冷却之前通电。因此芯片设计人员必须做出相应安排,在特定时刻让微处理器的许多的晶体管处于不通电的状态,即“变黑”——硅晶体世界的“轮流停电”。
在这个能耗受限的时代,各路计算机科学家需要重新审视计算机投入能量的每项工作,包括无差错运行。在能源不是问题时,绝对的准确是极佳的特性。但是,现在是时候接受偶尔的疏忽了。
牺牲准确性看起来可能是一个危险的策略。毕竟,当电脑犯错误时,结果可能是灾难性的。因此如果允许它们犯更多错误,是否会导致它们变得毫无用处?不见得。诀窍在于控制可能发生错误的时机。有时它们不会造成问题,因为我们今天使用计算机处理的许多事情并不要求严格的准确性。
例如,在长途飞行途中用平板电脑看电影。当原始电影文件被压缩时,编码软件将每一帧上不重要的细节丢掉,生成一个小很多的文件。如果在平板电脑上运行的软件解码器在回放电影时弄乱了几个像素,你大概不会反对——尤其是如果这意味着在影片结束时会剩下更多的电量。
这种情况不仅出现在媒体播放器上。对于许多种软件来说(例如语音识别、增强现实、机器学习、大数据分析以及游戏图形),完美的输出并非目标,事实上,为当前问题计算出完全正确的答案是不可能或不可行的。所有这一切所需的只是一个“近似”的答案。而当今天的完美主义计算机执行这些根本上属于近似的程序时,它们其实是在挥霍能源。
要想抓住机遇,面对能源浪费现象,计算机设计人员可以根据需求,建造能够切换到节能模式的机器——尽管在某种程度上易于出错。比如说,这种机器可能会调低CPU电压,允许出现一些算数计算错误。降低动态随机访问存储器(DRAM)芯片的刷新率也可以节约能源,代价是产生少数不必要的位翻转。另外,如果允许出现一些通信错误,无线设备也可以减少对功率的需求。
许多研究人员正在研究这类节能式硬件的改造。我们一直在探索程序员如何可以利用这类修改。为此,我们在西雅图华盛顿大学的研究小组已经开发了一种计算机语言,允许偶尔产生一些良性错误,同时阻止灾难性错误的发生。我们将其称之为“EnerJ”。这是我们为“近似计算”——一种新的能效提高方法作出的贡献。

近似计算面临的主要困难是,即使是近似程序,有时也需要产生绝对准确的结果,比如说图片浏览器。尽管少数不正确的像素不会破坏一个大的图像,但该文件JPEG标题中的一个错误比特可能会导致输出结果毫无用处。

这种二分法对于许多种软件都很常见:一个程序的某些部分可以容许偶尔的错误或不精确,而其他部分必须始终精确执行,不出现任何错误。近似计算机需要同时支持两种模式,而近似程序必须在可行的情况下使用节能模式,同时避免导致灾难性故障的错误。
但是一台计算机如何区别一个程序中可以容许近似结果的部分和不能容许的部分?至少在这一阶段,程序员需要通过使用一种可以提供区分机制的语言,指导计算机进行区分。
原型语言EnerJ允许程序员将数据标记为“近似”或“精确”。请注意,我们在本文使用这些术语时有些不够严谨。这两类数据的差异可能仅在于数值精度——即用于保持一个值所需的比特数,或者表现在是否容易出现错误上:一个“近似”数据可能有较小但却不可忽视的概率成为“垃圾”数据,而一个“精确”数据可能实际上被视为无误差。我们一直在研究的一些硬件将这两种节能方法混合使用,在最不重要的比特内允许出现误差,同时确保最重要的比特始终正确。
EnerJ是Java编程语言的一种扩展,但是其整体设计可应用于大多数需要程序员明确声明数据类型的语言。这类声明用于指示某一数据元是否旨在保持一个布尔值(真/假)、字节、32位整数、64位整数、32位浮点数,64位浮点数,或者其他各种可能性。每当程序员声明一个Java数据元时,他/她可以通过在声明前方书写“@Approx”,将其标记为“近似”。没有添加此类注释而声明的数据类型为“精确”数据。换言之,该系统仅在程序员特别允许的情况下使用近似值。
举一个具体的例子,假设你想要编写某种代码,用于计算一个1000×1000像素的黑白图像的平均色度。你的代码可能从第一行的第一个像素开始,并标注其值。然后计算第一行的第二个像素,并将其值与第一个像素相加。然后以同样的方法处理第三个像素,以此类推,每次将像素的值添加到运算总和(将其存储在某个变量中)——我们称之为“TOTAL(总数)”。当计算完第一行的第1000个像素后,该程序开始计算第二行的像素,并以同样的方式继续,直到第1000行的第1000个像素。最后,它用总数除以100万来计算平均像素值。非常简单。
除了变量“TOTAL”外,该代码需要两个计数变量:一个用于记录行数,另一个用于表示增加到总和的像素所在的列数。在列计数达到999后,代码复位到0并前进到下一行。当行和列的计数都达到999后,该程序可以除以100万,得出平均值。
如果在这过程中,100万个像素中的一个有些偏移或没有正确地添加到总和中,那么没有太大关系:答案会受到影响,但不是很大。然而,如果一个行或列的计数没有正确地增加,该程序可能会显示一个错误,停止运算,甚至会进入一个死循环。
而采用EnerJ,程序员只需在说明“TOTAL”和保持像素值的矩阵时,将其标记为“@Approx”即可。两个计数变量(我们称之为“I”和“J”)仍保持精确。
有待建成的、可运行EnerJ程序的节能计算机将被允许不加区别地使用近似计算——前提是不影响该程序的精确数据。例如,该计算机可能在不可靠、低刷新率的DRAM中存储单个像素值,但它将不得不使用其正常可靠的内存部分存储I和J。或者,将像素值加入TOTAL的加法运算可以在较低电压下运行,因为这两个操作数都是近似值,但是增加两个计数变量的操作则必须在正常的电压下运行,以便它们总是得到精确计算。也就是说,仅仅通过在代码中对类型说明进行标注,程序员就指定了哪些地方可以使用近似存储和操作,以及哪些地方严禁使用近似。

EnerJ还可以帮助程序员避免一些漏洞,以免近似计算损害需要保持精确的数据。具体来说,它禁止程序将近似数据放入精确的变量。继续来看我们的示例,以下赋值属于非法赋值:

I=TOTAL;
由于I是精确值,EnerJ确保不可使用近似值进行计算。TOTAL是近似值,因此将其值复制到I中会在程序员希望保持精确、无错的那部分程序中引入近似值。而另一方面,相反的赋值则没有这一问题:
TOTAL=I;
像这样把精确值赋给近似值的操作不会违反精确保证原则,因为它们仅影响近似数据。
通过在允许一类赋值的同时禁止其他赋值,EnerJ确保数据只在一个方向上移动。这种约束的作用就像一个单向阀:精确数据可以自由流动到近似程序的一部分,反之则不行。
开发了可以执行单向数据移动(称为信息流跟踪)系统的研究人员对节能并不感兴趣。他们关注软件的安全性,希望其程序可以区分低完整性(可能遭到破坏的)数据与被视为具有高完整性的数据。
信息流语言可以防止一种被称为SQL注入的计算机攻击。(结构化查询语言,简称SQL,用于数据库管理。)在这里,攻击者在系统等待一些简单输入数据时,为其提供了一个数据库命令。然后系统执行该命令——可能在此过程中造成巨大损害。信息流跟踪可以通过确保没有从用户流到SQL语句的输入,防止此类攻击。EnerJ借鉴了这一概念,避免精确的数据受到不精确或罕见错误的破坏。
但是近似数据还有另一种方式可以影响精确数据:通过控制流语句。请看下面的代码:

if (TOTAL>0.0)

I=1;

else                 

I=2;
这里没有非法赋值,但近似值“TOTAL”仍影响了精确变量“I”。这种情况被称为“隐式信息流”,也必须予以避免。
EnerJ可简单直接地防止隐式信息流:禁止任何控制流语句中出现近似条件。“TOTAL>0.0”属于近似的表达式,因为其中的一个操作数是近似值。因此编译器(这种软件可以将EnerJ语句转换成低级别代码,任何机器上都可以运行)在看到以“if”进行陈述的表达时,会显示一个错误。
但是EnerJ在近似值和精确值之间执行的严格隔离在某些情况下可能过于局限。有时,程序产生的近似数据需要被移至程序的精确部分,例如,用于检查或输出。我们尝试使用一个可以读取条形码的智能手机应用程序,这个程序运用了多个近似容错图像分析算法,从一个QR代码的图片中产生了一连串比特。然后计算出“校验和”——一个用于确保一些其他数据块完整性的数值。
校验和在检测错误时非常方便。这里有一个简单的例子:比方说你有100万个字节(一个字节由8个比特组成),希望以不完全精确的方式进行传送。你可能首先计算这100万字节的总和,然后丢掉答案中最不重要的8个比特。结果就是校验和,在发送数据后发送。单字节校验和现在可用于判断传输后的数据完整性。只需在远端重新计算校验和,并与已发送的值进行比较即可。即便数据只有一个比特在传输过程中损坏了,原始校验和与重新计算的校验和也不会匹配。
对于条形码读取应用来说,我们希望保持校验和计算结果的精确性,以捕获因别处使用的近似计算而可能突然出现的错误。但是这需要近似计算(条形码读取算法)的输出流入精确计算——校验和中。通常情况下,这是不可能实现的。但是EnerJ提供了一个“应急出口”,其形式称为“背书”——一个标记表明程序员允许打破EnerJ执行的严格隔离。

EnerJ的数据型注释、背书以及它们提供的隔离保证使其可以充分利用近似计算编写程序,同时保留足够的精确计算,以保持稳定性。这些特性让程序员可以放心地牺牲一些精度和严格的准确性,提高能源效率。正如程序员习惯于优化软件,以提高性能,EnerJ让他们通过优化来节约能源。

能节省多少能源呢?这一点很难说,因为还没有人建造运行EnerJ所需要的双模、节能计算机。但是我们的研究小组已编写了多个EnerJ程序,并在模拟环境中运行——模拟内存或中央处理中具有各种节能功能的硬件。根据程序类别以及模拟硬件试图降低能耗的努力程度,EnerJ可节省10%~40%的能耗。
我们最新开发的计算机语言在这些试验中表现出色,这让我们感到非常高兴。同时,我们还惊喜地发现,许多种程序都有部分允许近似计算。EnerJ可以完美地适用到图像渲染和图像识别上。信号处理算法和3D游戏中的几何问题在应用EnerJ方面不太明显,但它们也可以很容易地拆分为近似和精确两类组件。事实上,当你拥有EnerJ或另一种近似计算“利器”时,任何程序都看起来“迎刃而解”了。
我们现在需要一种切合实际的CPU设计,在运行EnerJ程序时可以节省能源。与我们在华盛顿大学的前同事哈迪•艾斯梅尔沙德(Hadi Esmaeilzadeh)和微软设计院的道格•伯格(Doug Burger)一道,我们已经开始设计能够在两个电压等级上运行的处理器。当某个程序需要无差错行为时,使用较高的电压。对于可以容许偶尔的小差错的计算来说,处理器切换至较低的电压,节省能源。同时,我们还在探索一些更加彻底变革的硬件设计,使之能够作为专用的近似协同处理器。
为了推动近似计算的发展,程序员还需要一些工具,帮助他们理解牺牲精度换取节能过程中涉及的权衡取舍。编程语言的研究人员,包括那些我们小组内的此类人员,开始设计一些工具,类似于今天的调试器和性能分析器。有了这些工具,程序员可以回答以下问题:“如果我将媒体播放器的这一部分标记为‘近似’,那么视频文件的播放质量会发生什么变化?”正确的工具应该能让程序员节省大量能源,而用户则甚至不会注意到任何差别。
事实上,由于如今的软件已经包含了不完善之处——表现为易出错的数据或近似输出,计算机为避免错误所耗费的能源(即使是最罕见的小错误)看起来也是越来越浪费。为了纠正这一局面,计算行业需要一些新的近似编程语言、新的近似硬件设计以及工具,帮助程序员理解如何最有效地利用它们。总之,它们应该帮助计算机变得更接近人类大脑,虽不完美,但却具有惊人的能源效率。
作者:Adrian Sampson, Luis Ceze, Dan Grossman

- The End

版权声明:欢迎转发本号原创内容,转载和摘编需经本号授权并标注原作者和信息来源为云脑智库。本公众号目前所载内容为本公众号原创、网络转载或根据非密公开性信息资料编辑整理,相关内容仅供参考及学习交流使用。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请跟我们联系删除。我们致力于保护作者知识产权或作品版权,本公众号所载内容的知识产权或作品版权归原作者所有。本公众号拥有对此声明的最终解释权。

投稿/招聘/推广/合作/入群/赞助 请加微信:15881101905,备注关键词

“阅读是一种习惯,分享是一种美德,我们是一群专业、有态度的知识传播者

 阅读原文加入知识星球,发现更多精彩内容.

 分享💬 点赞👍 在看❤️@以“三连”行动支持优质内容!

云脑智库 努力是一种生活态度,与年龄无关!专注搬运、分享、发表雷达、卫通、通信、化合物半导体等技术应用、行业调研、前沿技术探索!专注相控阵、太赫兹、微波光子、光学等前沿技术学习、分享
评论
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 98浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 91浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 94浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 55浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 123浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 90浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 77浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 84浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 93浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 81浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 119浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦