为了让CPU更好卖,英特尔将硬件变“软”了

2017-06-28  

china0513-624x468

来源:内容整理自互联网 ,谢谢。

这是一篇极具可读性的短文,有趣地揭示了英特尔x86指令集架构(ISA)最近发生的事情。我们看到了扩展的数量和复杂度的急剧增加,及其对系统研究人员(和英特尔)产生的一些有趣的影响。我们也看到越来越多的微代码的使用模糊了ISA作为硬件和软件之间的界限这一角色。

我们认为,这些扩展现在正在逼近类似软件层面的复杂程度,但同时也包含了硬件实现的所有缺点,以及缓慢的部署周期。我们怀疑当前的路径可能是不可持续的,并假设了一个可替代的未来,最终目标是将新的ISA特性与底层硬件分离。

过去:稳定且可控的增长

386参考手册列出了96条指令。随着时间的推移,新的指令在诸如浮点支持,向量扩展,加密加速器,64位等领域都在不断增加。至关重要的是:

……过去的系统设计人员极大程度上忽略了这种变化……除了64位模式和虚拟化扩展之外,x86系统开发人员偶尔也会进行一些调整,以提高性能或纠正明显的缺点,但除此之外,其他方面都被忽略了。即使是64位模式也不会显著增加架构的复杂性……

为什么要购买新CPU?

随着摩尔定律的放缓,英特尔传统的两年“Tick-Tock”发展模式也在放缓。这就提出了一个显而易见的问题:

……如果没有微架构方面的改进,他们的CPU就不会有大幅提速,也不会有更高的效率,而且他们相同价位的CPU的核心数量与先前的CPU完全相同。为什么会有人购买新的CPU?

如果你站在英特尔的角度思考一会儿,你就能明白为什么会有这样的麻烦。你还能做些什么可以让购买新CPU变得有吸引力呢?

英特尔似乎正在转向的一个理由是:如果新的CPU实现了一个重要的ISA扩展——例如,软件提出了一个需求,因为它对于安全至关重要——消费者就会有一个强大的理由去升级。

换言之,加快发布速度很可能是英特尔有意让我们继续购买的策略。结果……

在过去的两年里,ISA的复杂性急剧地增加了(例如:在下图中,我们可以看到架构手册的大小),在此过程中有更多的扩展。

china0513-624x468

图1:英特尔x86 CPU和ISA的复杂性的增加

上图仍然遵循摩尔定律(注意左侧坐标轴上的对数刻度),最近公布的节奏放缓尚未出现。在手册中使用文字作为复杂性的代表,我们可以看到在2015-16年间因Skylake引入的而引起的大幅增长。

(出于兴趣,我估计手册有200万词,平均阅读速度为每分钟200词,以每周阅读40小时计算,需要一个月才能读完,而这仅仅是为了阅读一份手册!)

下表总结了最近的ISA扩展以及引入的新指令的数量。

china0513-624x468

复杂性的增加不仅仅来自于新指令的数量,更重要的是来自于与现有指令的交互:

这些最近的扩展引入了新的系统级功能,这经常改变现有指令的语义,并与其他扩展和先前的体系结构特性进行复杂的交互。

SGX和CET示例

鲍曼引用SGX和CET扩展作为主要例子。我们以前一定在《晨报》上看到过SGX很多次吧。

功能强大的组合以及强大的物理安全(内存加密)使得SGX对研究人员和从业者都有吸引力……但是,SGX引入了大量的复杂性:用近200页的英文/伪代码规范描述了26条指令。

在这200页中,有近20页专门用于介绍SGX与先前架构特征的交互。而事实证明,其中一种交互可能会破坏SGX寻求提供的安全保障。这对我来说是新鲜的,尽管我读过很多关于研究SGX系统的文章。

如果你感兴趣的话,你可以在这里参考“防止页面错误告诉你的秘密”(CCS’16)。攻击依赖于操作系统控制下的侧面通道(因此在SGX威胁模型中被认为是攻击者的控制):页面错误。通过在几乎每条指令上诱导一个页面错误,足够的信息被泄漏出去,平均27%的密钥位可以恢复,如果使用OpenSSL和libgcrypt的加密密钥则可以恢复100%的密钥位。

也许具有讽刺意味的是,已知的最优方法利用了与事务内存扩展的看似无意的交互:事务中止而不是页面错误,因此操作系统不能观察事务性的扩展内存访问。

老实说,CET(控制流程执行技术)扩展听起来很酷。它通过维护影子堆栈和间接分支跟踪来防御代码重用攻击(如ROP)。影子堆栈只包含返回地址,并且无法访问正常代码。在返回的时候,来自常规和影子堆栈的地址会被弹出并进行比较——如果它们不匹配,就会有麻烦了!

CET承诺为不安全的C / C ++代码增加强大的防御,代价是牺牲大量的架构复杂度……主要的复杂性来自于功能交互。在x86上的控制传输已经非常复杂,包括许多调用和返回的形式,比如对不同的段或特权级别的调用。总共有9条指令(其中一些有很多变体,如JMP)被CET修改。

我们能保持这种速度吗?

随着复杂交互的系统级特性的复杂性的快速增长,我们看到了很高的变化速度。然而,“x86语义的忠实实现对于x86兼容的处理器、虚拟机、仿真器、JIT编译器、动态翻译器、反汇编器、调试器、评测器等都是至关重要的。”

……我们不得不质疑,在许多实现中,x86承诺的无限向后兼容性是否可持续。

当改进通过新的指令进行时,取得收益需要更长的时间

第一个SGX规格发布于2013年,首颗实现它的CPU直到2015年才发货,而支持SGX的服务器级CPU仍然在2017年初出现。另外再加上充分部署的时间,那么从初始规格到广泛适用便需要10年时间。在这个周期的某个时刻,软件开发人员将能够以合理的假设来开始SGX的开发。

这代表了软件开发人员的一个艰难的权衡;之前ISA扩展也花了很长时间部署,但是它们通常只能加速现有的功能;具有像SGX这样的功能,开发人员面临着一个严峻的选择;无限期地为安全性而等待,或者立即就部署它。

加上这个软件的滞后,我们可能会看到,新功能的普遍开发大概需要十多年的时间。

硬件和软件之间的界限正在变得模糊

仔细阅读英特尔的专利,你会看到,SGX指令完全以微代码实现。如果新的ISA功能是新的微代码,那么就可以在现有的CPU上支持它们。例如,或许(许多)新指令的(性能较差的)版本可以通过这种方式实现,从而为新特性的采用提供了一个更快的途径。它的许可和收入模式是一个开放的问题(与出售新CPU的愿望的相互作用)。

……现在比以往任何时候都更需要重新考虑指令集的概念,它不再是硬件和软件之间的界限,而是堆栈中的另一个翻译层。

今天是《半导体行业观察》为您分享的第1319期内容,欢迎关注。

摩尔邀请您加入精英微信群

关注微信公众号 半导体行业观察,后台回复关键词获取更多内容

回复 雄心 ,看《苹果的芯片帝国雄心》

回复 张汝京 ,看《中国半导体教父张汝京的“三落三起”》

回复 国产 ,看《国产手机崛起背后的最大受益者》

回复 ASR ,看《ASR收购Marvell MBU背后:一段有关RDA的爱恨情仇》

回复 IC ,看《一文看懂 IC 产业结构及竞争关系》

回复 展会 ,看《2017最新半导体展会会议日历》

回复 投稿 ,看《如何成为“半导体行业观察”的一员 》

回复 搜索 ,还能轻松找到其他你感兴趣的文章!

china0513-624x468

【关于转载】:转载仅限全文转载并完整保留文章标题及内容,不得删改、添加内容绕开原创保护,且文章开头必须注明:转自“半导体行业观察icbank”微信公众号。谢谢合作!

china0513-624x468

【关于征稿】:欢迎半导体精英投稿(包括翻译、整理),一经录用将署名刊登,红包重谢!签约成为专栏专家更有千元稿费!来稿邮件请在标题标明“投稿”,并在稿件中注明姓名、电话、单位和职务。欢迎添加我的个人微信号 MooreRen001或发邮件到 jyzhang@moore.ren

china0513-624x468

责任编辑:mooreelite
文章来源于:半导体行业观察    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。