处理器市场最终会被统一吗?
扫描二维码
随时随地手机看文章
· ARM 32位架构现在是淘汰8位架构的最强大候选人。
· 由于32位处理器依赖于更小的工艺结点,因此增加了获得相同价格与能效的机会。
· 每种处理器大小与类型都能最好地服务于一个特定的问题领域,确定了获得最佳目标设备与软件的开销。
· 创新可以来自任何方式—甚至可能包括为提高速度而减小尺度。
· 单一开发方案可能会限制那些可能发现并解决新机会的类型。
某个处理器会一统天下吗?这种想法是否是一个好主意?
嵌入式计算的生态系统非常类似于《指环王》中的中土大陆,只不过其中没有精灵、矮人、霍比特人和人类自身, 而是栖息着所有类型的处理架构。各种微处理器、数字信号处理器以及微控制器的优化组合,满足了设计人员庞大的设计需求。
我的这一类比源于最近读的一些文章和在线讨论。总体上,它们都问着两个问题:是否8位处理器正在消亡?ARM是否在赢得处理器大战?这两个问题潜意识都在期望着一种统一的架构。这些文章和讨论都认为,ARM架构将成为较小位宽微控制器棺材上的最后一根钉子,甚至可能在一些应用中挤占其它32位微处理器的空间。在这个快速变幻的生态系统中,ARM架构确实可以一统天下吗?
这种类比只是对这些问题及相关讨论中普遍蕴含的统一架构主题的一种描述,而不意味着对所讨论处理器架构或支持这些架构的生态系统公司的一种断言。但至少对我来说,这种类比提供了一个可见且几乎触手可及的图像,从中可以看出,不久以后的某天,单一处理器架构可能最终宣告8位和16位架构的死亡,并可能抢夺传统上归属于32位和更大微处理器的应用。
这种处理架构的一统天下是可能的吗?这是我们想要的结果吗?
让我们开始如下的演练:约定就成本、工作负荷能力及功耗等方面而言, 某款3 2 位处理器已经获得或超越了用于某特定工作负荷的某款8位处理器的性能。在这里用“约定”这个措辞,并非要避免数据表争议,而是为了强调任何处理器对其它处理器的替代都是基于个例完成的,是以显式工作负荷(预期或已经实现)为背景,在显式替代者之间做的区分。当替代者超过现有实现者时,就存在着一个向替代者迁移的机会。
然而,在工作负荷以及可用处理选择生命周期内将某个工作负荷迁移到一款替代器件上,并不等同于将它迁移到一个特定的替代器件上,因为现有处理器的宽度或架构实现都会被逐步废弃。
举个例子,考虑长期以来有关FPGA的类似争议,即所谓FPGA会把DSP逼上绝路。过去已经反复多次证明了,FPGA可以任意完成广泛的信号处理工作,比专用DSP更快也更高效。但对确定的工作负荷,如果某种处理器包含了用于特定工作负荷实现的最优执行单元类型与数量,则FPGA将不再具备性能与效率的优势。
事实上,当前信号处理工作的真实情况是这样的:最初,某个待开发的工作负荷是在一个高性能微处理器或DSP上,以仿真和原型方式用软件实现。随着工作负荷实现的变动与不确定性趋于稳定,开发人员会将其迁移到一个FPGA,做性能、价格与功耗的优化。一旦设计人员使工作负荷适应了很多大批量设计,半导体公司就可能决定生产一种专用处理器或协处理器,其中包含了用于特定工作负荷的微处理器或DSP;而这个开发工作也将决定工作负荷的另一次迁移,这次是将软件实现迁移到上述器件上。这些迁移没有一条是造成微处理器、FPGA 或DSP趋于过时的原因。
最有效点
实现这些不同的处理(微处理器、DSP和FPGA)的真实体验是,其中的“最佳选择”要取决于目标处理的类型,因此在相同设计中,它们通常是平等的。同样地,“8 位何时死亡”这个问题也是指不同环境吗?
借助于各种处理的最有效点的分布图(图1)有助于给出这些迁移事件可能出现差异的方式与原因。图中将每种处理器的架构映像到一个二维空间,将一个设计的处理复杂性表示为计算或工作强度与一个系统必须管理的环境量的函数。
工作强度表示在横轴,可以表示在一个单位时间或能量内,系统需要的处理性能峰值、总量或持续量。处于分布范围最左端的工作负荷优化到了一个有限的能量预算,而最右端的则优化为有限的完成时间预算。
竖轴表示一个系统必须管理的环境量,可以是系统内部状态、系统输入输出数量(无论结构上是分级还是汇聚),甚至可以是系统必须支持的可能状态或条件控制流水平。
对两种复杂性的量度使得主要处理器架构能够映射到它们最适于工作的区域内。尽管这一范围为每种类型处理架构选择都给出了特定区域,但各个区域的边界之间通常有明显的重叠,图1中各区之间的重叠未明确标示出,是为了不使本已繁复的图像显得更凌乱。在每个确定的区域内,落在该区内的处理方法都有相同的架构特性,不同于其它区域中的器件(见附文:“架构的差异”)。
与已确定的最有效点区不同的是,不同处理器的位宽并非互斥到专门的处理器架构上(图2)。但显然,4位和8位处理器仅落在微控制器区(FPGA中用作微控制器的8位软核是技术例外),特别是32位微控制器,它被认为篡夺了8位微控制器的地位,因此也强化了8位处理器正趋死亡问题的正确性。
4位处理器位于最有效点分布的左下方(图2),它们被显式包含的原因是,各家公司都仍在批量制造4位处理器,尽管缺乏供应商与用户的公开营销。事实上,各公司对4位市场的参与都遮遮掩掩,主要是出于竞争原因。但我通过与业内人士的深入交流,梳理出了一些不为人知的有用内幕。
这些公司并不向公共开发人员社区售卖自己的4位处理器,这不同于8位、16位和32位处理器通常的市场营销方式。与那些提供技术前沿处理器(在分布图的最右边)的公司一样,4位处理器提供商也会主动地寻找并辨识那些能最好地利用自己处理器的设计人员,而忽视其他人。一家4位处理器提供商会去接近一位潜在的开发人员,研究特定的实现细节,证明其4位器件可以为该开发人员的设计与最终产品提供差异化特点。
4位处理器只为特定的大批量产品而生产。有些(甚至所有)4位处理器仅以ROM器件方式提供。为适应验证掩膜套件的高强度人工劳动,这类器件供应商限制只供给那些会有超大批量的客户。
此外,4位处理器仅以汇编语言编程。软件开发工具的费用在1万美元区间,而那些告知我这些信息的公司说,供应商会向其客户出租开发工具,而不是出售工具。
4 位处理器的最有效点是单电池应用,其典型寿命为10年,器件也许只在1%的时间内工作,而其它99%的时间都是处于待机模式。4位处理器一个有意思的差异化因素是它们可以在0.6V下工作,这样就拥有了较8位处理器的功耗优势。另外,4位处理器自1990年以来就已经能支持能量采集设计,而8位、16位和32位处理器供应商在近几年才刚刚开始提供开发与演示套件。
努力获得正确的尺寸
我们正看到32位微控制器的价格与能耗都达到了与8位微控制器相同的水平,甚至已在这些参数上超越后者,这是可能的吗?
先看价格。32位器件的生产采用了最新的工艺尺度,而8位器件仍使用较大工艺结点,在基本被弃用的工厂里制造。虽然32位核心的总线要宽四倍,但当两个工艺结之间的距离增加时,每个CPU所消耗的相对硅片面积却几乎相同。另外,在较大器件中,核心本身占用硅片份额表现出减少趋势,内存与外设会占据主要的硅片面积。事实上,32位微控制器在多年前就突破了1美元屏障,而最小的器件甚至突破了50美分的价格点,达到了与8位微控制器相当的价格区间。
不过,有些成本是32位微控制器必须负担,而8位器件可以避免的。我们提到过生产设施的折旧。此外,由于我们假设的32位器件是一款ARM微控制器,其价格还必须包含使用ARM IP(知识产权)的授权费用,这进一步削减了相对边际。
还有个事实也有相同效果,那就是32位器件要有更集中的支持,因此使用32位IP使半导体公司通过与其它公司共享开发资源,以均衡某些支持成本。8位器件的支持成本较低,因为目标应用无论在范围和规模上都很简单,工作在“低”时钟速率,并且除供应商以外,还有极具专业和合作性的开发者/用户社区支持。简言之,当一款32位器件因价格均等而展现出真实威胁时,可能有多个领域让8位供应商仍踌躇在价格与制造上。
当32 位处理器达到或超过8 位微控制器的功耗性能时,情况会怎样?此时,32位器件会采用一种双重打击法去挑战8位器件:代码密度,以及完成一次唤醒/睡眠循环的时间。
恩智浦半导体公司微控制器业务架构与系统高级总监Rob Cosaro表示,该公司的基准测量研究表明,当在一只Cortex-M0级处理器上运行一个8051 上的相同算法时,代码密度下降了50%。但如果基准测试不能反映出设计实际使用的代码,那就只是个花招而已。例如,EEMBC(嵌入微处理器基准联盟)的Coremark中包含了用于测试8位、16位和32位CPU的函数,但你不会考虑在一只8位器件上运行像双链接表和矩阵运算这类函数。
当一只8 位处理器的使用超出了其理想区域时, 32 位甚至16 位处理器就有了提供更好代码密度的机会,例如运行数据大于8位(因为需要多次数据访问才能操作一个数据);工作数据集超过了16KB~64KB地址空间;工作在高时钟速率(高于20MHz~50 MHz ),甚至要支持繁重的网络通信栈。在这些情况下,应用可能无法与8位处理器相配合,因为几年来,与维护有关的功能增长已经逐渐进入了系统。
在能量敏感的嵌入式设计中,微控制器大部分时间处于小功率的睡眠模式, 定期唤醒来完成其任务。与代码密度情况类似,如果8位微控制器做的任务失配,32位微控制器就能够以足够快的速度做唤醒并完成任务,然后返回睡眠状态,而消耗的能量少于8位器件。
8位微控制器较可能替代它的32位处理器有一个关键性优点,这就是8位器件能够以一个高的成本效率和能效水平完成工作,而这方面32位要替代8位器件还有几年时间。小型处理器细分市场的兴奋点定位在最小处理器,把成本与能耗推到了可能的极限。我们所称的小功率是一个不断在变化的目标。在支持那些小型任务方面,较小数据宽度将总是明显领先于较宽的数据宽度。
在相同价格和功耗性能的8位和32位器件之间做选择时,还有一个数据表上没有,却有一定影响的因素:行业专业知识。虽然做8位器件编程可能要熟练掌握汇编甚至C语言,但一名开发人员最重要的还是行业知识。
想想为什么COBOL程序仍有需求,尽管大多数人把COBOL看作一种已被淘汰的编程语言。这种语言很直观,易于理解。对专业COBOL程序员的假设(也是他们的价值所在)是他们了解COBOL程序要解决的商务问题。
同样,8位微控制器所面对的问题不同于32位器件,并且32位系统开发人员面临的行业领域也不同于8位开发人员。例如,一个正确的8位应用不存在难以处理的存储器限制,因为应用能完全理解并填满架构的自然极限。32位应用可以处理多得多的不确定性,可以通过动态存储方式利用和管理更大的存储空间,而8位开发人员根本不用考虑这种方式。
数据的大小应反映出处理器的自然位数,对一款并未设计浮点运算的器件,不应用于密集地处理大量浮点运算。8位处理器最适合用于简单或约束性任务。采用操作系统和中间件的系统是为了提高开发人员效率,因为系统太复杂,不能从头开发,而从头建立一个简单的日程表则相对简单直接。
最终,每种类型的处理器架构都需要设计者在建立系统时采用一种不同的思考过程。只要存在着尽可能获得更低能耗预算的新开发需求,只要处理供应商还会积极地提供这些小宽度器件的设计支持,8位器件就有市场,哪怕是临时性的。如果我们不把低功耗、小数据宽度处理器与较大的32位处理器等同起来,事件就会容易得多,因为它们解决的是不同问题。
附文:架构的差异
图1通过计算负荷与环境量的关系反映了处理器最有效点的特性。工作负荷可以是峰值大小、总量,或在给定时间或能量情况下, 系统需要维持的处理性能数量。环境量可以表示内部系统状态、系统输入输出数,或系统必须支持的可能环境量。
各种确定的处理器类型都会以不同进度随时代演进,每种类型都会对一个或多个性能度量做出折中权衡以获得最大的一个或多个性能指标。
微控制器是专用处理器,它以牺牲灵活性和工作负荷处理量为代价,提供了成本与能效上的优势。它们提供成本优势的方法是在一个封装内集成存储器与外设。
它们提供能效优势的部分方法是面向那些以较低时钟速率运行的工作负荷,另外也是由于它们仅用电路实现的最小集合来完成控制处理工作。如果一个设计需要有灵活性,如更多或更少存储器、不同外设集,或更高的时钟速率,则设计者必须换用一种不同的处理器。有些微控制器通过放弃缓存或流水线的方法,提供了确定性的运算与操作。微控制器通常面向那些有频繁和优先级环境切换的系统控制工作负荷。
DSP也以工作负荷灵活性为代价,专注于获得最佳成本与能效。它们牺牲了处理环境转换的效率,以最大限度获得连续计算和可重复计算的性能。它们并不集成很多外设,因为它们的结构本身就不适合用于处理环境切换,而这是很多外设的可能要求。最常用的集成外设是ADC,DSP用它获取一个真实世界数据流,供自己做处理。
DSP采用多总线和多存储器结构,这样它们就可以完成同步存储器操作,支持连续的单周期乘法/累加操作。
它们采用了专用寄存器,以尽量减少存储器访问时间,能够实现零开销循环。DSP用于那些有连续数据流的系统,用于完成连续的信号处理,通常结合使用硬件加速器或FPGA,以分担繁重的密集计算负荷。
DSC(数字信号控制)专注于优化成本和能效上的方法是将DSP功能与微控制器结合在一只处理器中,能够胜任同时处理环境切换与信号处理的工作。这些器件提供较DSP更好的工作负荷灵活性,同时针对连续数据流,仍然保持了高效完成重复性工作负荷的能力。
FPGA提供了一种高度灵活的可编程硬件平台,可以充分利用任意宽度的信号处理算法,并用做硬件加速块。FPGA能很好地完成信号处理工作,此时它有较少的决策状态,以及大量的数据点处理工作。
协处理器类别依赖于硬件,加快工作负荷的处理速度, 减少能耗。协处理器通常不是单独使用,而是与其它处理器相连接,或共同集成到一个封装内(如与DSP或微处理器)。
微处理器采用通用架构,能够完成相当大范围的处理工作,极具工作负荷的灵活性。它们处理环境切换时不如微控制器那么快或那么确定,同时做循环处理时也不如DSP快速和有效率。但当要处理那些未知内容时,例如一个支持用户加载应用的系统,微处理器就是最理想选择。
微处理器通常能支持大量的存储地址空间,采用大规模的片上缓存,以补偿访问片外存储器所带来的时间损失。当成本与能效的重要性低于短时间开发周期时,它们很适合于做“临时应急”的原型,或概念验证研究。
微处理器
ARM处理器在移动设备中的爆炸性发展,使一些人产生了疑问:是否在其它市场中,ARM也会替代其它微处理器架构。不过,现有的微处理器架构也拥有类似于8位微控制器的秘密武器,这就是行业知识,它深深地埋藏在当前架构以及生态系统之中。
想想某个微处理器架构的特殊变型,其特性已经过开发、测试和微调,因此该变型特别适用于目标应用的特定需求。再考虑为既定市场服务的软件实体,一个强大的既有微处理器架构非常类似于8位微控制器,它周围是一个强大而成熟的生态系统,包括开发人员、工具、操作系统以及中间件,这是现有处理器应对挑战者的缓冲器。
有关当前处理器优势有一个特殊例子,就是哪款微处理器架构将最终赢得平板电脑世界。ARM架构现在拥有显然的优势,因为很多平板设计将其当作一部大型智能手机, 而ARM架构在智能手机市场有着多年的软硬件支持史,拥有很多相关设计知识。如果平板电脑继续保持智能手机模式,则ARM架构就是最佳定位。不过现在也有基于其它微处理器的平板产品,它们对平板的定义是有差异的。例如,如果微软可以重新调整平板电脑市场,充分利用自己Windows OS的生态系统,则今天的平板市场就可能完全是不同面貌了。
据一些估计,过去数十年来,供应商提出了超过200种处理器架构。其中大多数已经销声匿迹,或被其它架构吸收。现在只有10 个左右架构仍在为开发人员提供工具和方法,以创建出今天包含处理器与开发工具复杂生态系统的应用,并且有行业针对性的工程与软件支持。如果再从这些里面精选几个,开发人员市场是否能得到更好的服务呢?
处理器市场这种巨大混沌的状态说明,要找到服务该市场的正确方式是多么的复杂和困难。不确定性并非源于过去,今天的技术相当大一部分也存在着不确定性。这种不确定性的一种表示就是关于8位是否死亡的无尽问题。
我最近刚知道,有些公司正在悄悄地探索能明显提高原生处理性能的方式,即在某些DSP应用中减少数据的大小。一部分挑战是要做出可接受的权衡,一方面是短字长所带来的问题,另一方面是较低功耗下组合较高性能的好处。今天有些DSP支持在较大执行引擎内的8 × 8 MAC(乘法累加)。简言之,我们的未来会有8位DSP吗?你永远不知道下一个好想法来自哪里。如果你可选的处理器架构不多,产生疯狂思想的机会也就不多,例如冒出来一个8位DSP。
很多评论家争辩说,如果我们的架构选择少,软件代码会更容易维护,因为有更庞大的开发人员群体来获取、使用和维护它。那么,一个统一架构会改进现有行业知识的可转移性吗?更重要的是,能有利于新行业知识的发展吗?
据我所观察的大型半导体公司的所作所为,我很怀疑,有限的架构选择会导致更慢的创新,因为在开发支持生态系统中,有足够多的资源来解决最大批量应用的工程化问题。这可能对发现新兴应用的努力造成负面影响,这种努力可能代替现有的大批量应用。
正如中土地球的不同竞争一样,每个现有处理器架构都包含着自己独特的行业文化或开发生态系统,使之在完成某些任务方面优于其它替代品。大多数设计已经采用了多处理器,而广泛的处理器选择使开发人员能够在自己的设计中挑选并使用同类最佳器件与软件。单一架构成功地一统天下,也许会是提升开发人员生产力的关键,但也可能成为一种桎梏,过分强求一致性, 却限制了创新的方向与机会。