众所周知,云桌面的架构就是将所有计算集中到中心服务器上,终端只负责与客户交互的部分,这样中心服务器server和客户端client之间通过硬件通道来回传用户的各种交互性数据。比如鼠标通道,键盘通道一般是上行数据通道,把用户在终端上的操作行为上传到server端,而显示通道则是下行数据通道,把server端界面更新命令下传到client端,显示给用户。

很明显,中心的服务器出了要完成各种运算外,还要处理各种与用户终端的交互通道的数据处理,而在这所有的数据通道中,最耗资源的要数显示器的显示通道了,显示数据,如图片,视频,3D等如果用CPU去处理,那简直是一种浪费,所以笔者提出了一种针对显示数据的优化理论,那就是用GPU去分担CPU的任务。

GPU为什么能够分担CPU的任务呢?GPU相对CPU有哪些自己的优势呢?为了更深入理解这一点,我们先讲讲GPU和CPU各自的特点。

GPU+显存其实就是一个计算机,只不过这个计算机是专有计算机,是完成专有计算的,而CPU+主存(内存)架构则是一个通用计算机,是完成通用计算的,为了简化描述,下文我们分别简称为GPU架构和CPU架构

首先,从形式上,指令长度和指令执行周期都有各自的特点,CPU的指令长度的变化区间比较大抛除多媒体指令,指令长度可以是单字节,双字节,四字节等,而GPU的指令就比较规整,一般为某个确定的指令长度,如四字节,八字节等,对于指令周期来说,CPU指令周期也是比较宽泛,单条指令的机器周期变化多端,可以是一个机器周期,两个机器周期,或四个机器周期,而GPU的指令周期则一般变化不大,

CPU架构的指令处理数据的并发度显然没有GPU架构指令处理数据的并发度大,虽然计算机发展到现在,通用计算机依靠指令流水线的方式使得CPU有了一定的并发度,但由于CPU处理的数据的特点(即通用计算),使得这种并发度一直不高,而GPU显然没有这种瓶颈,GPU处理的数据格式仅仅是图像数据,所以这种并发度可以很高。

指令的复杂度不同,由于CPU执行的是通用计算,要考虑各种功能各种形式的指令,这就造成指令集超级复杂,而GPU不同,GPU执行的是专有计算,指令集的特点就是指令少,指令结构简单。

综上CPU和GPU架构的特点,很容易得出一个结论,那就是专业的人做专业的事,CPU强项是通用计算,那么就让其完成一些流程控制的通用计算任务,而对图像,视频,3D等桌面颜色数据的处理,则交由GPU去完成是比较合适的,尤其是在云桌面系统中,计算集中在中心服务器的前提下选择合适的方法让GPU去分流CPU的计算任务显得尤其重要。