Arm:自定义指令集的灵活性与生态一致性可以兼得
扫描二维码
随时随地手机看文章
除了指令空间,自定义指令对应的程序出入口也有严格限制。自定义指令在使用过程中出现任何错误时,Arm的工具链都能及时对其进行识别、提取,并且进行相应的控制。目前也已经有第三方编译器,可以识别自定义指令集可能会出现的错误。专用与通用,或可定制与标准化之间孰优孰劣,并无定论,行业发展的总体趋势就是在两个方向上左右摇摆。一种新型产品在诞生之初,往往是定制化专用应用,以满足新应用对性能、功耗与成本的特殊要求,当该应用逐渐被用户接受,成为主流时,就会走向标准化,成为通用的产品或功能,当这种通用产品逐渐跟不上时代发展时,则为新的专用产品诞生孕育了机会。
以处理器为例,在PC端与手机端的市场格局已基本固化,所以这两个市场均由通用型处理器主导,而近年来的一些新兴应用涌现,也促使厂商推出相应的处理器来应对,例如为人工智能应用优化的NPU,为显示优化的DPU,以及音频专用处理器APU等。
近日,Arm公司就宣布推出两款机器学习处理器Ethos-N57 与 Ethos-N37 NPU,一款为入门设备与小型显示屏幕适配的显示处理器Mali D37 DPU,以及一款更新的图像处理器Mali-G57 GPU。
Arm市场营销副总裁 Ian Smythe表示,针对不同应用及工作负载差异,用户可以选择不同的CPU、GPU、NPU等处理器组合来满足需求,组合不同,在不同应用场景与任务模式下的性能与能效会有较大的差异,用户在深度理解Arm不同内核特性的基础上灵活配置,就能实现最佳性能、功耗与成本均衡。
Ian Smythe在2019Arm科技论坛上海站演讲
如果上述处理器组合仍然不能满足应用定制化需求,Arm还提供了自定义指令集,以满足用户对具体应用的极致优化需求。Arm自定义指令集于10月9日2019Arm科技论坛美国圣何塞站上首次对外公布,在2019Arm科技论坛上海站,Ian Smythe接受探索科技(techsugar)采访,详细解读了用户关心的Arm自定义指令集状况。
免费
Ian Smythe指出,Arm用户采用自定义指令集并不需要额外付费。Arm会首先在Arm Cortex-M33上支持自定义指令集,凡是购买了Arm Cortex-M33内核IP授权的用户,都可以申请自定义指令集开发。目前已经有意法半导体、恩智浦与Silicon Labs等公司在开发采用自定义指令集的Arm处理器,首批支持自定义指令集的Arm处理器将于2020年问世。后续Arm还会在所有Armv8-M处理器上开放自定义指令集,用户同样不需要为自定义指令集额外付费。
用户自行开发、验证,无须提交Arm认证
Arm并不会去对客户自定义的指令进行复核,指令的完整性由Arm工具链与开发该指令的客户来保证。Ian Smythe表示,客户在使用自定义指令集的时候,必须要负责对其所有相关硬件进行完整的验证工作,无须将指令集提交给Arm认证。“Arm的工作就是向客户提供开发自定义指令集所需支持的逻辑以及专门的架构,以帮助客户更加顺利地完成自定义指令的集成过程。具体的实现工作由客户自己来完成,自定义指令集在应用时产生的风险也是客户自己承担。”
限定的指令空间与自定义指令程序出入口
如此看来,在带来效率提升的同时,自定义指令也会带来潜在的风险或额外的成本。例如,可能需要增加额外的逻辑电路来实现相应的指令,这将增加开发成本;此外,由于指令集不同,可能会影响到现有系统架构,软件需要从底到顶全部重新设计;还有,编译器以及后续的软件开发工具如果不支持用户自定义指令,可能还需要更改开发工具以支持自定义指令集。
Arm的处理方式是将自定义指令集限制在一定范围内。“Arm的自定义指令集将客户限制在一定的空间之内进行开发,我们提供的是T32这个指令集架构,在T32基础之上,客户可以根据自己的需求进行指令集的定制。我们希望客户在使用Arm自定义指令集的时候,能够保证其产品的稳定性,同时也并不会因为自定义指令集的开发,而影响ArmCPU的完整性和可控性。”Ian Smythe告诉探索科技(techsugar),除了指令空间,自定义指令对应的程序出入口也有严格限制。自定义指令在使用过程中出现任何错误时,Arm的工具链都能及时对其进行识别、提取,并且进行相应的控制。目前也已经有第三方编译器,可以识别自定义指令集可能会出现的错误。
这样严格的限定,在发挥自定义指令灵活性的同时,最大程度上保证了Arm生态的一致性。使用支持Arm自定义指令集芯片的用户,并不需要更换工具链,或大幅修改软件设计,为用户节约了大量的再开发成本。
如前所述,芯片行业始终为之奋斗的目标,就是在性能、功耗与成本之间达到完美均衡。完全自定义可实现最佳性能,但通常带来不可承受的开发与应用成本;完全标准化可以用最短时间与最小成本实现产品开发,但只能是同质化性能平庸的产品。Arm推出自定义指令集,为开发者带来了增加产品差异性的可能,或也带来了选择的烦恼。