首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

复合指令集核心处理器的设计简析

如何在单一指令集的基础上实现多指令集异构系统?程序在不同指令集核心之间的迁移是一个非常困难而且开销巨大的工作。不同的指令集之间具有极大的差异,主要包含以下方面:不同的机器码、不同的数据格式、不同的寄存器集合、不同的堆栈框架布局以及其他部署问题(多供应商的许可证、法律障碍、验证开销、应用程序二进制接口(ABD)的不同、异构内存模型一致性等)。于是我们提出了一个大胆的想法:使用一个指令集的超集,能够提供所有需要的指令,这个集合是由原有不同指令集的子集组合而成,这个子集只需要完成一部分工作,多个子集组合在一起成为一个异构系统。这就是复合指令集异构系统的设计,其特点在于:去除了绝大多数二进制兼容问题(几乎不再需要二进制翻译);具有更多的细粒度的指令集选项,之前几乎都是在ARM、Thumb和x86-64之间进行选择,而现在我们可以拥有更广的选择范围;消除了一些非技术层面的问题,如许可证、测试、内存一致性模型等问题。

在这样的设计模式中,我们要面对的新问题是:利用这样一个复合指令集方法,我们是否可以得到与使用完整的异构指令集获得的类似的收益呢?这需要解决很多问题,包括:如何选择指令集特性,如何选择核心的类型,如何编译以及完成迁移。复合指令集内核设计主要包含三方面工作:指令集特性选择,即如何选择指令集和机器语言;编译和运行时策略,即如何将高级语言与汇编语言转换成为可以被支持的机器指令;设计空间探索与优化,针对选择支持的指令集子集找到CPU微结构层的最优配置。

首先,指令集特性选择阶段首先要选择基础指令集(x86),然后对它进行扩展。可以选择26种指令集的子集对其进行扩展,设计中要考虑寄存器深度、寄存器宽度、寻址模式的复杂性、预测机制数据并行处理等五方面因素。在编译过程中,我们没有设计一种能够支持26种指令的fat binary,而是提供了一种策略能够让编译器决定在执行过程中需要哪些资源,包括:是否支持数据并行执行的SIMD指令;寄存器深度可选32位和64位;地址空间模型可选micro x86和x86;寄存器可选8位、16位、32位、64位等;预测机制可选部分预测和全预测机制。需要说明的是,通常情况下,我们认为在软件中包含的任何指令都可以在核心中找到对应的硬件支持,但是在这里却不一定能够成立。针对这样的指令,我们给出两种迁移方案。第一种是向上迁移,将代码迁移到指令更全的核心中,这是一种常见的方法,而且不会有二进制翻译。另一种方法是向下迁移,使用所需指令集的子集加上少量的二进制翻译以完成功能,平均性能影响只有0.46%。

接下来是体系结构设计空间。现在可以提供26个ISA,我们可以尝试所有的指令集结构设计,来决定哪一个是最好的传统多核异构系统,哪一个是最好的单一指令集多核异构系统,哪一个是最好的多指令集异构系统,哪一个是复合指令集异构系统(Composite-ISA)。而我们的问题仍然是能否将复合指令集异构系统设计得像多指令集异构系统一样具有优越的性能,如果可以,复合指令集系统将成为一个性能优越的多核异构系统,因为它相对于多指令集异构系统来说更易实现。由于指令集的自由组合,使得一个核心有4680种配置方案,而一个四核的处理器有102万亿种配置。我们在圣迭戈的超级计算机平台上做了大量的实验,寻求多个指令集结构组合的最优解。实验结果表明复合指令集的设计方案在同样的能耗约束下可以得到更好的性能。复合指令集的设计优势有两个方面:多种特性的代码亲和力,不同的代码段拥有其本身对一种或几种指令集特性的亲和力;指令集微结构的联合设计,即在相同的限制下能压缩进更多高性能的核心。在能耗方面,这样的设计方案能够节省31%的能耗,并且减少35%的能延积。

高效的执行需要一定数量的专用硬件支持,以达到提效节能的效果。我们通过异构体系结构可以同时支持通用计算和专用计算两种不同的需求。单一指令集的设计往往不能充分发挥异构体系结构的优势,而使用多指令集异构时,程序在多个指令集之间必须实现高效的迁移。多指令集的设计提供了更多对安全攻击的防护手段。我们在很多情况下,可以通过集成指令集子集这种更加保守的方法来获得完整指令集异构的所有优点。因此,节能高效和可编程性、易用性并不是互相矛盾的设计优化方向。事实上,这种使用专用核心来设计通用处理器的方法反而增强了通用处理器的“通用性”。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191221A07G8J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券