0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

cpu工程师该何去何从

电子工程师 来源:网络整理 作者:工程师2 2018-06-06 11:16 次阅读

对可怜的处理器设计师表示同情。他们的工作以前非常简单。在每一半导体新工艺代中,每平方毫米的晶体管数量都会加倍,速度会有很大的提高,同时总功耗也会降低。设计师的黄金规则是“保持体系结构不变,在实现上稍作调整。”

但现在完全不同了。速度提高的越来越小,功耗降低的也越来越少。您再也不能简单的提高时钟了:设计师不得不使用所有新晶体管来研究实现并行功能。但是怎样找到并行功能呢? 首先,我们找到了现成的好方法:通过超标量体系结构自动实现指令级并行功能。然后,有了更多的晶体管,使用了大部分指令并行功能,矢量处理器进行数据并行处理,宏单元级指令并行——线程,采用多线程,然后是多核CPU

但是,我们突然发现自己身处无尽的“暗硅片”中。所有这些晶体管的功率密度增加非常快,如果它们都同时全速运行,根本没法对其进行散热。我们使用时钟选通,然后是电源选通,最后降低晶体管封装密度,以避免互联走线被熔化。但是,这限制了我们采用越来越多的晶体管实现数据和算法的并行处理。看起来这一过程要慢慢停下来了。

年初的热点芯片大会上就提出了这类问题。虽然在克服困难方面已经取得了很大的成就,但是芯片设计师仍然展示了还有继续创新的空间:找到能够进行并行处理的地方,使用所有晶体管的方法,以及使其保持较低温度的技术。

找到好方法

很显然,如果我们继续使用所有这些晶体管,那么,我们必须降低能耗。这意味着,减少信息的传送:数据移动和复制少了,指令读取的少了。不仅DRAM周期能耗比较高,而且在高级进程中,数据通过阻抗越来越大的片内互联也是问题。在传统的体系结构中,我们能够传送大量的数据:最近的估算表明,SoC中80%的活动硅片用于连接或者缓冲互联,而不是用于逻辑功能。

信息传送的少了,意味着需要围绕数据内部结构来组织处理单元——这是热点芯片大会论文最明显的观点。我们特别关注一下四种情形。第一,搜索引擎加速,处理大量的非结构和独立数据元素。第二种情形,矢量处理,处理高度结构化的数据,其元素之间会有相关性。第三种,有很多线程的问题,但不一定是并行数据处理。最后一种情形,单线程加速。

搜索引擎加速

对于并行执行而言,网络搜索既带来了很多难题,也创造了机会。数据中心设计师不仅仅需要多核x86 CPU,他们考虑更多的是数据的非结构、独立特性——基本上,网页上到处都是。在热点芯片大会上,微软资深研究硬件设计工程师Andrew Putnam介绍了他的团队在加速必应搜索引擎方面的工作。

Putnam简要介绍了搜索问题的关键阶段流程,页面评定(图1)。在第一阶段,服务器群——大量的服务器,选择候选页面:含有某些搜索字符串元素的页面。这些页面被送入评定引擎,本身包括三级:特性提取、自由形式表达评估,以及机器学习评分。

cpu工程师该何去何从

图1.在专用处理单元群中实现页面评定流水线,加速必应搜索。

Putnam说,特性提取是由54个硬件状态机阵列完成的,即,规则表达匹配和结果列表。使用状态机避免了指令获取和解码操作带来的能耗问题。为进一步降低能耗,页面内容不会通过特性提取器:只有记录特性出现、位置和频率的表格数据被传送至下一级。

表达式评估器是另一阵列,但这次是特殊的多线程处理器阵列。这些处理器,以240个单元为一群,读取来自提取器的表格数据,从中计算出非常复杂的数字表达值,这可能会包括超越函数。必应开发人员调整了算法,因此,这些表达式会有所变化,无法对其进行硬线连接。这一级的输出是页面评定,为从搜索字符串中提取出的元特性分配一个数字。

这一数据随后被送入机器学习级,Putnam对此并没有介绍,这可能需要大量的并行神经网络仿真。正是这一可训练级为页面产生最终的评定分。

Putnam说,微软选择在大规模FPGA的2D平面内实现三级评定引擎。每一FPGA位于中间电路板上,插入到微软标准服务器机柜的服务器刀片中。Putnam观察到,可以采用ASIC来很好的均衡速度和功耗。但是由于必应评定算法的多变性,需要具备重新配置能力。他提醒说,否则,特殊的硬件很快就会成为程序员面临的瓶颈问题,最终不得不依赖数据中心来解决问题。

微软的设计人员建立了硬件引擎的很多例化,允许异步运行,研究页面评定的固有并行特性。尽可能减少指令获取和解码操作。定义了任务,因此,只有很少量的数据在流水线级之间传送。在不同的环境中应用相同的原理,会导致完全不同的体系结构。

矢量处理器

搜索引擎使用的数据集有两个重要的特性(除了巨大的规模之外)。首先,数据元素是独立的。即,一个页面的评定分值对任何其他页面的分值没有影响,因此,打分任务互不影响。其次,数据元素是非结构化的:两个页面不必有相同的格式。

但是仍然有其他大量的数据集具有严格的结构。例如,在大气模型中,每一点都会是矢量,包括了坐标、温度、入射射线、各种气体的压力分量,以及悬浮颗粒的浓度等。计算模型的下一状态需要对同一矢量算法进行大量的重复。

这些问题非常适合采用矢量处理器来解决:很多同样的算法流水线工作在锁定步骤,同时完成相同的运算,但是针对不同的数据——即,经常使用的术语,单指令多数据(SIMD)机制。很显然,这些机制并行完成很多运算,从而提高了性能。通过减少指令获取数据流,也降低了能耗。

在热点芯片大会上,NEC开发经理Shintaro Momose介绍了他所在单位的下一代芯片设计,包括NEC长远的SX系列矢量超级计算机:SX-ACE。Momose重点介绍了两个特殊问题:存储器带宽和粒度。

Momose解释了很多大规模应用——包括天气预报、例子物理、流体动力学,以及结构分析等,为提高计算性能,这需要很高的存储器带宽,计算机每完成一次浮点运算都需要与存储器交换一个字节。而矢量处理器芯片达到了数十GFLOPS,对DRAM的要求越来越高——足以填满芯片的任何总线。相应的,NEC把DRAM控制器——16个独立的DDR3 SDRAM控制器,直接放到矢量处理器管芯中,大量的管芯交叉开关连接所有DRAM通道和任何矢量处理单元。这一决定使得单芯片总带宽达到256 GBps。

粒度是更有趣的一个问题。并行体系结构最近的发展趋势是——可能受到图形处理单元(GPU)进行高性能计算的影响,由非常简单的处理器构成大规模阵列。而Momose看到,这类体系结构虽然概念上很简单,但是在实际中,要求程序员发现足够的并行功能,使这些小CPU工作起来,让每一个任务保持同步或者互相锁定。他认为,更好的是采用一些功能更强大的矢量内核而不是很多小内核。

这就是SX-ACE所采用的方法。每一芯片中的每个内核都包括标量处理单元、矢量处理单元和1 MB的共享快速RAM。矢量单元有16个处理模块,每个模块包括了两个加法流水线,两个乘法流水线,以及一个除法/平方根流水线,一个逻辑流水线,以及一个屏蔽流水线。每一芯片有四个内核,因此,每一芯片总峰值达到256 GFLOPS,与存储器总带宽相匹配。在大规模本地存储器周围布置快速控制处理器和16个算术模块,NEC找到了大规模并行和实际代码编程的最佳平衡点,这些代码与实际的数据有很大的相关性。

需要大量流水线的应用

与数据并行的很多问题相比,数据中的一些问题看起来很难解决,但是可以编程,产生很多线程。在这种情况下,您仍然可以实现很多并行执行,但是每一线程可以完成不同的工作,因此,矢量处理体系结构的价值不大。对于这些情形,ARM® CTO Mike Muller在他的主题演讲中建议了一种不同的策略:他称之为异构计算/同构体系结构。

这种想法来自于ARM的big.LITTLE概念。如果一项任务有很多线程,一个或者两个线程真正需要大量的计算,而很多线程并不需要。big.LITTLE概念就是把一些小规模的低功耗处理器,以及使用相同的指令集而功能强大的大规模处理器组织起来。然后,硬核线程可以在高速大功率CPU上运行,线程完成后,可以选通电源供电。在较慢的低功耗CPU上运行简单线程。

在热点芯片大会上,Muller进一步延伸了这一概念,他建议,除了big和LITTLE ARM内核,集群还可以含有ARM的MALI GPU内核,以及单指令多线程处理器,一些实例目前已经在ARM的研究实验室中开始规划了(图2)。所有处理器会共享公共编程语言,甚至是某些对象代码,共享主存储器,透明、动态的进行线程分配,降低了对显式数据传送的需求。通过把每一线程分配给低功耗处理器,满足了线程目前的性能需求,这类系统降低了总任务的能耗。

cpu工程师该何去何从

图2.ARM的异构计算同构体系结构结合了完全不同的微体系结构内核,可以共享相同的源代码。

单线程性能

聪明的程序员发现并应用了数据并行执行功能,梳理好代码中的所有线程后,仍然存在单线程执行的问题。但是,我们已经把时钟频率、超标量体系结构、分支预测以及很多其他方法发挥到了极限。还有什么其他好办法吗?在一篇介绍新Denver CPU内核的文章中,Nvidia CPU设计师Darrell Boggs说,有。

丹佛很可能是ARM V8所要采用的(图3)。这是一种七路超标量体系结构,含有整数、整数/负载存储和NEON浮点执行流水线。它使用了硬件预获取单元,每一周期解码8条指令。这实际源自很早的CPU体系结构的一种特性:丹佛完成动态随时微代码优化功能。

cpu工程师该何去何从

图3.在您深入了解指令获取单元之前,Nvidia的丹佛CPU看起来像是传统的超标量CPU。

Boggs解释说;“执行和分支单元在执行期间对代码进行分析。把分析信息传送给硬件优化器,解开循环,重新命名寄存器,重新组织指令。然后,优化后的代码以微代码的形式存储器在特殊高速缓存中。”

Boggs解释说,第一次通过循环,丹佛构建了代码的微代码版本,优化了数千条指令。在后续的步骤中,读取单元装入来自优化高速缓存而不是指令高速缓存的微代码,旁路指令解码器,把微代码直接送入执行单元。结果,对于迭代代码,丹佛在遇到新代码之前会尽可能只使用最初的指令流。会很快开始处理大部分微代码。

Boggs宣称,这一方法提高了执行速度。他展示了结果,在标准测试中,2.5 GHz丹佛接近甚至超越了Intel的Haswell。

Boggs说,丹佛还解决了功耗问题。除了时钟选通和电源轨选通之外,CPU还支持低电压“保持”模式,保持CPU和高速缓存状态,有效的降低了泄漏电流。通过避免CPU检查点和高速缓存泛洪问题,保持模式提供了空闲间隙降低功耗的方法,这些间隙非常短,无法完全进行电源选通,通过这些方法处理泛洪和状态恢复问题。

对高性能和低功耗的需求会持续不断,半导体技术再也不能以简单的方式来满足这些需求。而解决方案越来越专门针对应用的特殊性,算法编程,以及数据的本质结构等。最终,所有体系结构都会更加专用化,通用CPU这一术语的含义也会逐渐变化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19157

    浏览量

    229094
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211126
  • 工程师
    +关注

    关注

    59

    文章

    1566

    浏览量

    68439
收藏 人收藏

    评论

    相关推荐

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    用二创,1:1复刻工程师的职场现状

    工程师
    扬兴科技
    发布于 :2024年07月19日 18:30:07

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件工程师是软件开发领域中的一种专业工程师,他们主要负责设计和开发嵌入式软件,
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    如何入门硬件工程师

    想跨行业做硬件设计工程师,应该如何学习规划呢
    发表于 03-17 21:49

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    如何搞崩一个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    #人工智能 #FPGA 怎么成为一个合格的FPGA工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年12月18日 21:19:01

    电子工程师第一天上班就暴揍师傅。。。#科普 #示波器 #电子工程师 #打工日记

    电子工程师示波器
    安泰小课堂
    发布于 :2023年12月18日 17:36:12