《软硬件融合:超大规模云计算架构创新之路》之一:软硬件平台的协作(以CPU+GPU为例)

一般来说,除了CPU,其他平台通常都不是图灵完备的,需要和CPU一起协作来完成工作任务的处理。在本书中,我们约定如下:

  1. 如果一个任务由CPU执行,我们称之为软件执行;
  2. 如果一个任务(或任务的一部分)由协处理器、GPU、FPGA或ASIC执行,我们可以统称之为硬件“加速”执行;
  3. 如果一个任务,至少分为两个部分,一部分在CPU的软件执行,另一部分在协处理器、GPU、FPGA或ASIC硬件执行,并且这两者之间需要相互通信和协作,那我们可以称此任务是软硬件协作来完成。

       以基于CPU+GPU的异构计算架构为例。CUDA是NVIDIA创建的并行计算平台和应用程序编程接口(API)模型。CUDA允许软件开发人员使用具有支持CUDA功能的图形处理单元(GPU)进行通用处理。CUDA平台是一个软件层,可直接访问GPU的虚拟指令集和并行计算元素,以执行计算内核。

如图 2.6,CPU视角的CUDA的简单处理流程如下:

  1. CPU顺序执行任务,结束后把数据保存在CPU的内存中;
  2. 将待处理的数据从CPU内存复制到GPU内存(图中的①处理);
  3. CPU指示GPU工作,配置并启动CUDA内核(图中的②处理);
  4. 多个CUDA内核并行执行,来处理准备好的数据(图中的③处理);
  5. 处理完成后,将处理结果复制回CPU的内存(图中的④处理);
  6. CPU把GPU的结果继续进行后续处理,并继续后续的工作。

                   图 2.6 CUDA处理流程

注意:在GPU工作期间,CPU处于空闲状况,也可以把这段时间利用起来,用于处理其他工作任务。

如图 2.7所示,我们按照在软件运行的部分任务和在硬件运行的部分任务之间的关系来把软硬件协作分为两类:

  1. 平行的软硬件协作,如CUDA,像线程间通信或服务器/客户端的交互,虽然双方可能有主动(Master)和从动(Slave)的区别,但本质上是一个相互平等的交互。
  2. 而垂直的软硬件协作,如分层的网络协议栈或很多大规模分层系统的上下层之间的服务调用,是下层封装技术实现细节,提供接口供上层调用,以此下层给上层提供服务。

 

                                            图 2.7 平行和垂直的软硬件协作

  平行模式和垂直模式本质上是一样的,一方面双方各自完成自己的工作,另一方面双方通过交互达到交换数据和信息的目的,最终实现软硬件平台间的工作协作。而区别主要在于逻辑上的调用关系,垂直模式主要是基于下一层提供的服务来完成本层的功能,然后再为上一层提供服务;而水平模式则两者是相互调用、相互协作。

 

新技术层出不穷并且快速迭代,对云计算硬件架构形成巨大挑战。该如何根本性地解决这一挑战?看这本《软硬件融合》,解决方案全有了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章