目录

文章目录

  • 目录
  • CPU-GPU 异构计算系统
  • 分离式架构

CPU-GPU 异构计算系统

在现代的异构计算系统中,GPU 是以 PCIe 卡的形式作为 CPU 的辅助计算设备。根据 CPU 和 GPU 是否共享了内存,可分为两种类型的 CPU-GPU 异构计算架构:

  1. 分离式架构:CPU 和 GPU 拥有各自独立的缓存和内存,两者之间通过 PCIe 总线通信。目前主要做计算机、智能手机中使用。
  2. 耦合式架构:CPU 和 GPU 共享内存和缓存。AMD 的 APU 采用的就是这种结构,目前主要使用在游戏主机中。

分离式架构

分离式架构的缺点在于 PCIe 传输成了其中的性能瓶颈,例如:PCIe Gen3 x1 理论带宽约为 1000MB/s,所以对于 Gen3 x32 的最大带宽约为 32GB/s,而受限于本身的实现机制,有效带宽往往只有理论值的 2/3,甚至更低。

由于,CPU 与 GPU 之间的通信开销是比较大的。而针对 GPU 之间的互连,Nvidia 推出 NVLink 技术替代传统 PCIe 总线的方式,根据 Nvidia 官网数据,GPU 性能提升了 5 倍。

下图是分离式架构的资源管理模型:

  • MMIO(Memory Mapped IO),设备上的寄存器或存储,CPU 以内存读写指令来进行直接访问。

    • CPU 与 GPU 的交流就是通过 MMIO 进行的。CPU 通过 MMIO 访问 GPU 的寄存器状态。
    • DMA 传输大量的数据就是通过 MMIO 进行命令控制的。
    • I/O 端口可用于间接访问 MMIO 区域,像 Nouveau 等开源软件从来不访问它。
  • GPU Context

    • GPU Context 代表了 GPU 计算的状态。
    • 在 GPU 中拥有自己的虚拟地址。
    • GPU 中可以并存多个活跃态下的 Context。
  • GPU Channel

    • 任何命令都是由 CPU 发出。
    • 命令流(Command stream)被提交到硬件单元,也就是 GPU Channel。
    • 每个 GPU Channel 关联一个 Context,而一个 GPU Context 可以有多个 GPU Channel。
    • 每个 GPU Context 包含相关 Channel 的 GPU Channel Descriptors,每个 Descriptor 都是 GPU Memory 中的一个对象。
    • 每个 GPU Channel Descriptor 存储了 Channel 的设置,其中就包括 Page Table 。
    • 每个 GPU Channel 在 GPU Memory 中分配了唯一的命令缓存,这通过 MMIO 对 CPU 可见。
    • GPU Context Switching 和命令执行都在 GPU 硬件内部调度。
  • GPU Page Table

    • GPU Context 在虚拟基地空间由 Page Table 隔离其它的 Context。
    • GPU Page Table 隔离 CPU Page Table,位于 GPU Memory 中。
    • GPU Page Table 的物理地址位于 GPU Channel Descriptor 中。
    • GPU Page Table 不仅仅将 GPU 虚拟地址转换成 GPU 内存的物理地址,也可以转换成 CPU 的物理地址。因此,GPU Page Table 可以将 GPU 虚拟地址和 CPU 内存地址统一到 GPU 统一虚拟地址空间来。
  • PCIe BAR

    • GPU 设备通过 PCIe 总线接入到主机上。BARs(Base Address Registers)是 MMIO 的窗口,在 GPU 启动时候配置。
    • GPU 的控制寄存器和内存都映射到了 BARs 中。
    • GPU 设备内存通过映射的 MMIO 窗口去配置 GPU 和访问 GPU Memory。
  • PFIFO Engine

    • PFIFO 是 GPU 命令提交通过的一个特殊的部件。
    • PFIFO 维护了一些独立命令队列,也就是 Channel。
    • 此命令队列是 Ring Buffer,有 PUT 和 GET 的指针。
    • 所有访问 Channel 控制区域的执行指令都被 PFIFO 拦截下来。
    • GPU 驱动使用 Channel Descriptor 来存储相关的 Channel 设定。
    • PFIFO 将读取的命令转交给 PGRAPH Engine。
  • Buffer Object

    • Buffer Object 是内存的一个块(Block),能够用于存储纹理(Texture)、渲染目标(Render Target)、着色代码(shader code)等等。

GPU — CPU-GPU 异构计算系统相关推荐

  1. 超级全能CPU+GPU异构超算平台

    异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式.常见的计算单元类别包括CPU.GPU等协处理器.DSP.ASIC.FPGA等.异构计算是一种并行和分布式计算,它或是用能同时支 ...

  2. CPU+GPU:高性能计算到桌面

    很好的想法啊 原文地址:CPU+GPU:高性能计算到桌面 作者:孙永杰 CPU+GPU:高性能计算到桌面 日前,作为中国国产品牌服务器市场老大的浪潮发布了业界首款万亿次桌面超级计算机--"倚 ...

  3. 异构计算 — CPU+GPU

    目录 文章目录 目录 CPU+GPU 异构计算 分离式架构 CPU+GPU 异构计算 在现代的异构计算系统中,GPU 是以 PCIe 卡的形式作为 CPU 的辅助计算设备.根据 CPU 和 GPU 是 ...

  4. CPU+GPU异构计算完全解析

    原文链接:http://bj.beareyes.com.cn//2/lib/201106/20/20110620416_1.htm 工欲善其事,必先利其器.有一个好的计算工具是必须的! 并行计算:让处 ...

  5. 异构计算(CPU + GPU)编程简介

    异构计算(CPU + GPU)编程简介 1.概念 所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算.一般我们的程序,是在CPU上计算.但是,当大量的数据需要计算时,CP ...

  6. CPU+GPU异构计算编程简介

    异构计算(CPU + GPU)编程简介 1. 概念 所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算.一般我们的程序,是在CPU上计算.但是,当大量的数据需要计算时,C ...

  7. [转帖]双剑合璧:CPU+GPU异构计算完全解析

    引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml 这篇文章写的深入浅出,把异构计算的思想和行业趋势描述的非常清楚,难得 ...

  8. 双剑合璧:CPU+GPU异构计算完全解析

    转自 http://www.beareyes.com.cn/2/lib/201106/20/20110620416_0.htm 并行计算:让处理的速度变得更快 相对于串行计算,并行计算可以划分成时间并 ...

  9. CPU/GPU/TPU/NPU...XPU都是什么意思?

    CPU/GPU/TPU/NPU-XPU都是什么意思? 现在这年代,技术日新月异,物联网.人工智能.深度学习等概念遍地开花,各类芯片名词GPU, TPU, NPU,DPU层出不穷-都是什么鬼?与CPU又 ...

最新文章

  1. Power Query
  2. 迷宫收集星星 并查集解答
  3. Markdown-基础语法
  4. adf4351使用方法_ADF:使用HTTP POST方法进行URL任务流调用
  5. $_server['php_self'] 漏洞,Discuz! $_SERVER['PHP_SELF'] XSS Vulnerability
  6. VMware虚拟机安装Linux系统(详解版)
  7. 工作任务(2012-01-03)
  8. irule jar包无法导入_poi表格的导入导出
  9. 为什么用clojure作为storm 的主要开发语言
  10. Echarts数据可视化series-pie饼图,开发全解+完美注释
  11. delphi互联网消息服务器,Delphi2010中采用DataSnap的三层网络架构服务器获取客户端ip,端口信息...
  12. ADB命令和Monkey命令
  13. 正确区分LJMP、AJMP、SJMP、JMP指令()
  14. K-均值聚类算法通俗讲解
  15. uni-app快速上手顺序
  16. python中判断无向图是否有环_数据结构与算法:17 图
  17. 堆和栈的区别,有一个64k的字符串,是放到堆上,还是放到栈上,为什么?
  18. 过了所有技术面,却倒在 HR 一个问题上
  19. PDF防传播防复制一机一码制作教程版权在我手
  20. Java并发编程实战读书笔记

热门文章

  1. 分享Kali Linux 2016.2第50周镜像文件
  2. android h5使用缓存_程序员必须了解的之小程序 与 App 与 H5 之间的区别
  3. 用户未登录重定向到登录界面_Linux 用户登录记录
  4. efcore调用函数_EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand
  5. javascript实战pdf_《TypeScript开发实战》总结
  6. linux数组shell数组添加内容,shell数组的定义与应用
  7. BCI里程碑!脑机接口首次让患者输出完整句子
  8. 10-20国际电极标准系统
  9. Vertebrae 发布了新的SDK!
  10. PSVR开发者需要了解的9件事