推荐序2
软件还是硬件,这是一个问题。软件的灵活性和硬件的高性能都是我们希望得到的,但是,考虑到实现代价,我们必须在软件实现和硬件实现之间进行折中选择。
传统上,软件和硬件有一个相对明晰的区分:但凡通用处理器能够高效处理的功能,都用软件实现(并在通用处理器硬件上执行);但凡通用处理器不能高效处理的功能,都用专用硬件实现,如各种基于ASIC或FPGA的硬件加速器。
但是,随着需求的多样化和系统的复杂化,尤其是云计算环境的出现,我们需要将不同功能的软件和不同种类的硬件集成起来,使它们协同工作。在这种情况下,采用软件还是硬件,同时采用哪种软件或硬件来进行实现,就变得异常复杂。而分层抽象则是一种解决复杂问题行之有效的方法。
黄朝波老师长期从事云计算架构相关工作,并且颇有心得,他从实际云计算工作需求出发,尝试采用软硬件多级分层抽象和接口标准化的方法来解决软硬件协同工作的问题,这个问题体现在如下两个方面。
(1)多级分层模型。随着系统变得越来越复杂,我们已经不能简单地采用软件和硬件两个层次来对复杂系统进行分层,而应该对传统的软件层和硬件层进行进一步分层。目前,软件多级分层的思想已经被广泛接受,而硬件多级分层的驱动力来自日益多样性的硬件(如不同类型的处理器和面向不同目的的加速器)。为了能够从全系统的角度更好地进行硬件资源的分配与调度,我们应该进一步对不同的硬件进行分层抽象。
(2)接口标准化。软件接口标准化可以带来互操作性方面的好处,而某类硬件接口的标准化(如硬件总线协议)也可以带来互操作性方面的极大便利。如何基于多样性硬件的分层抽象来定义层间的标准化接口以支持高效的互操作性,是一个值得深入并持续探讨的问题。硬件接口标准化目前已经有了一些趋势,如RISC-V。RISC-V尝试定义一套标准化的ISA,以使不同硬件厂商的处理器硬件和不同软件厂商的操作系统、编译器及应用软件都能实现互操作,从而摆脱二进制翻译和虚拟机等复杂且不高效的互操作机制。
随着技术的进步,传统意义上的硬件加速器可能会逐渐成为标准化的功能,从而进入通用处理领域(被通用处理器吸收,如向量和多媒体功能),采用软件实现。同时,随着需求的变化,传统意义上可以由软件实现的功能也会有更高的性能要求,从而需要用专用硬件实现。软硬件的多级分层抽象和接口标准化的另一个好处在于,我们可以在不影响其他层次的前提下,根据技术的进步或需求的变化,自由地替换某一层次的具体实现方式。
本书系统地探讨了以上问题,并将相关思想实际应用于包含复杂软硬件的云计算系统,提出了多级分层抽象的软硬件融合系统模型,对云计算的架构设计有着实际的指导意义。
——NVIDIA Principal Architect蒋江