张冬:OpenPOWER CAPI为什么这么快?(一)

PMC公司数据中心存储架构师张冬

张冬,《大话存储》系列图书作者,PMC公司数据中心存储架构师。张冬先生是《大话存储》系列图书作者,该书屡次获奖,包括2008年十大IT畅销书排名第一,2009年全国技术品种畅销书。张冬在存储领域有多年的从业经验,主持并参与过多项创新存储技术的设计。

在第七届云计算大会的PMC技术专场上演讲嘉宾连续进行了七场技术演讲,其中,PMC数据中心存储架构师张冬没有过多谈论市场和行业问题,而是从底层技术出发,对OpenPowerCAPI进行了分析和阐述,为我们介绍了CAPI为什么能这么快。

之前,POWER CPU只是IBM在做小型机的时候使用,OpenPOWER开放后,成立了OpenPower基金会,基金会大部分成员都非常专注于CAPI(相干加速器处理器接口)上的利用,比如将外置的网络、GPU、闪存等设备通过CAPI直接与CPU相连接,并在此基础上根据不同的主流应用场景进行开放的、定制化的系统设计,PMC除了关注这些外,还关注CAPI与NVMe进行协作的问题。

传统架构的缺点和瓶颈

现在无论是2路、4路、8路还是32路服务器,他们架构中的CPU之间的互联有的是直联,有的通过NC(NC就类似以太网络里面的网桥)。核心之间要传输数据方式中,最高效的是共享内存,代码里写死。最低效的方法就是走网络,封装一堆的包出去,发送一个数据给远端的某个线程,调用一堆接口,走到协议栈,再到设备驱动,然后到网络,接着收包解析,这个过程非常慢。所以超级计算机没法做到CPU之间进行高速网络共享内存因为成本太高,没法将几万个CPU连接起来,只能走网络了,这也是松耦合系统的一个妥协。

没有CAPI的FPGA为什么也不太行

      面对现在大数据分析、模式匹配、热点识别等,要求非常大的计算量,传统CPU出现瓶颈。普通的CPU其实也能计算,但是计算速度太慢,比如,只有64位宽来处理1GB数据,那便需要循环拆分N次才能算完,普通的CPU无法迅速处理这么大的运算量。

       在多路CPU系统中,线程看到的都是单一的虚拟地址空间,这个虚拟地址空间会被操作系统映射到真实的物理空间里,但是所有的CPU看到都是同一份物理地址空间

  • 所有CPU看到单一物理地址空间;

  • 所有Threads看到单一虚拟地址空间;

  • PCIE物理地址空间映射到CPU物理地址空间;

  • CPU物理地址空间也映射到PCIE物理地址空间。

有人想到硬件加速,做法就是把某个专业计算在电路层面展开,展开成更宽的位宽,更多的并行计算单元,去除一些不必要的缓存优化和流水线优化等,其实这就是专用运算芯片所做的,FPGA(Field-ProgrammableGate Array,即现场可编程门阵列)是现场可编程的专用芯片上述就是所谓的硬加速。

在CAPI之前的FPGA怎么接入系统使用的呢?它是把FPGA做到一块PCIe卡里,FPGA通过CPU的PCIe控制器访问到主机内存空间。PCIe和CPU各自有各自的地址空间,CPU不能直接访问PCIe的地址,要先访问自己的地址,PCIE物理地址空间映射到CPU物理地址空间,反之CPU物理地址空间也需要映射到PCIE物理地址空间,这是个很费劲的过程。

在CAPI之前的FPGA怎么接入系统使用的呢?它是把FPGA做到一块PCIe卡里,FPGA通过CPU的PCIe控制器访问到主机内存空间。PCIe和CPU各自有各自的地址空间,CPU不能直接访问PCIe的地址,要先访问自己的地址,PCIE物理地址空间映射到CPU物理地址空间,反之CPU物理地址空间也需要映射到PCIE物理地址空间,这是个很费劲的过程。

数据出了ALU,面对复杂的路由网络,目的地址为内存地址,但是其相对外部网络的复杂性在于,目标的位置是不固定的,还可能有多份拷贝。Need Coherency!硬件透明搞定Cache Coherency。CC不负责多线程并发访问cache line时的互斥,互斥需要程序显式发出lock,底层硬件会锁住总线访问周期。

如图所示是个四核CPU,每个CPU内部还有很多东西,每一个CPU的每个核心都有各自的缓存控制器,三级缓存控制器,每个CPU还包含内存控制器,PCIe控制器,QPI控制器(互联CPU相关),还有缓存一致性的控制器,他们全都接入一个高速的总线里面。多个线程看到的数据应该是时刻一致的,需要广播许多信息,这就是CacheCoherencyCache Coherency Agent 负责把消息推送出去以及接受其他CPU发出的探寻。

      多CPU之间广播量非常大,所以需要一个目录来记录本地的核心里面都有哪些缓存地址被缓存下来了。其他的CPU如果发广播来探寻,本地直接把目录查一下,如果没有命中缓存就直接不再往后端核心缓存控制器发消息,这样可以提升性能。所以说CC(Cache Coherency)很重要的,要确保线程看到同样的东西,同一个时刻,这叫实时一致性,且不允许异步。但是它不负责两个线程,如果互相都在写这份数据,会出现相互覆盖,这要靠(CacheConsistancy)软件解决。PCIe写内存也需要做CC(Cache Coherency),写入数据到某一地址,这个地址在其他的CPU缓存里,要把它作废掉。

在把FPGA做在一张PCIe卡上,PCIe卡总线接到CPU的情况下,PCIe要做哪些工作呢?

PCIe设备与CPU交互

  • BusDriver将PCIE设备地址空间映射到CPU物理地址空间并将PCIE地址空间写入PCIE设备寄存器;

  • HostDriver读出PCIE设备寄存器获取该设备对应的PCIE物理地址空间并ioremap()到内核虚拟地址空间;

  • HostDriver 申请DMA缓存并向PCIE设备映射的虚拟地址空间写入控制字、基地址等,这些信息便被写入设备寄存器,从而触发PCIE设备根据基地址从主存DMA拿到需要的指令和数据后进行处理;

  • PCIE设备对主存DMA时,RC自动执行Probe操作以保证Cache Coherency。

按照上面的过程走下来,缺点非常明显:

首先执行路径长而且全软件参与:应用call、传输协议栈、Host驱动、PCIe设备、DMA、中断服务、Host驱动、传输协议栈(如有)、应用buffer。

再就是PCIE设备和CPU看到不同的物理地址空间,RC进行映射和转换。驱动程序申请内存之后得用pci_map_single()映射成PCIE物理地址。虽然对于诸如Intel体系下,两个空间映射成一样的地址,但是仍需要在软件里做映射,这对性能有一定的影响。

另外,用户态程序必须主动从内核地址空间mmap()才可以直接与PCIE设备DMA互传数据。用户态程序必须区分不同的地址段,要分清哪一块内存是DMA映射的,哪一块是自己私有的的。

最后,FPGA上不能有Cache(缓存),FPGA自己可以有自己的Cache,但是不能把主存里的数据放在自己这边,每次访问内存都要用复杂的过程访问主存里,这也是一个关键的缺点。

所以我们看到为了让FPGA做一件事,进行了太多操作,开销很大,很费时间,这需要别的技术来解决之。





张冬:OpenPOWER CAPI为什么这么快?(一)相关推荐

  1. 浪潮互联网峰会张冬技术报告

    高密度.可扩展数据中心存储解决方案 9月10日的浪潮峰会上,PMC公司的资深存储架构师.<大话存储>系列丛书的作者张冬应邀作题为<高密度.可扩展数据中心存储解决方案>的演讲. ...

  2. 11张网络安全思维导图,快收藏!

    更多专业文档请访问 www.itilzj.com 本文包含以下思维导图: ● 网络安全绪论 ● 扫描与防御技术 ● 网络监听及防御技术 ● 口令破解及防御技术 ● 欺骗攻击及防御技术 ● 拒绝服务供给 ...

  3. android 视网膜黄斑检查 amsler,一张图检测黄斑病变,快来测试一下!

    健康的视网膜重要吗?重要. 健康的黄斑呢?特别重要,如果黄斑发生病变,将对视力产生极大影响.黄斑变性就是黄斑病变的一种,也是造成老年人失明的元凶之一,与白内障导致的失明不同,黄斑变性造成的失明不可逆. ...

  4. 怎么设置能使电脑运行更快

    1.设定虚拟内存 硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快 ...

  5. 希望得到学术会议的及时回复该怎么说_张烨:在“选矿”博士的世界里,脚踏实地从来都不是说说而已!| 中南达人NO.188...

    张烨 资源加工与生物工程学院 矿业工程2017级博士 中南大学2019年大学生年度人物之一 获奖经历(部分) 2016年 中南大学FMG奖励金优秀学生奖 2017年 中南大学优秀毕业生 2018年 中 ...

  6. 2019 年,开发者如何占领快应用技术风向的高地?

    就在2019年Q1的末尾,TEF2019快应用开发者大会在北京召开,其现场火爆程度用"座无虚席"形容并不夸张,通过快应用开发者大会发布的内容,或许我们也能够看到快应用生态平台释放出 ...

  7. 教你如何用思维导图把一本书内容绘制成一张A4纸!

    教你如何用思维导图把一本书内容绘制成一张A4纸! 如何把一本书变成一张纸.如果一本书的关键内容能够体现在一张A4纸上那无疑是为我们节省了很多的时间,不光可以快速地理解书里的内容而且还能够体会作者想表达 ...

  8. ​张雪峰离京:1500万、14年、37岁,北漂生活......

    我是「猿码天地」,一个热爱技术.热爱编程的IT猿.技术是开源的,知识是共享的! 写作是对自己学习的总结和记录,如果您对Java.分布式.微服务.中间件.Spring Boot.Spring Cloud ...

  9. 关于 AIOps 的过去与未来,微软亚洲研究院给我们讲了这些故事

    作者 | 贾凯强 出品 | AI科技大本营(ID:rgznai100) 在过去的15年里,云计算实现了飞速发展,而这种发展也为诸多的前沿技术奠定了基础,AIOps便在此环境中获得了良好的发展契机.在数 ...

  10. Tianchi发布最新AI知识树!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 来源:Tianchi,方向:AI内容 近期Tianchi开放了9大训练营 ...

最新文章

  1. git安装,windows下git bash默认目录更改
  2. 懒惰的JSF Primefaces数据表分页–第2部分
  3. cap理论具体含义_架构设计之「 CAP 定理 」
  4. 大数据之-Hadoop3.x_Yarn_工作机制---大数据之hadoop3.x工作笔记0142
  5. hardmard积 用什么符号表示_表面粗糙度=表面光洁度?数值为什么用0.8、1.6、3.2等表示?...
  6. flutter 返回指定界面_Flutter 即学即用系列博客——04 Flutter UI 初窥
  7. 2021高考成绩已出城市查询,2021年青海高考成绩什么时候出来 公布时间
  8. 手机电脑自适应导航源码php,自适应各终端懒人网址导航源码 v1.6
  9. VS2008+Vassistx使用技巧
  10. 开源java微博系统_ThinkSNS 开源微博系统 v4.6.0.0
  11. [转]制作一个64M的U盘启动盘(mini linux + winpe +dos toolbox)
  12. 计算机一级安装包怎么升级,详细教您win7如何升级为sp1
  13. Android安全之使用root权限绕过检测机制,强行自动允许应用的悬浮窗/应用后台弹出界面等权限
  14. 电脑硬件知识入门之显卡篇
  15. heu oj 1011 square
  16. Jmeter导出性能测试报告
  17. Winform像菜单一样弹出自定义内容实现示例
  18. C#实现指派问题的匈牙利算法(运筹学)
  19. 移动网络的切换、重选和重定向
  20. 假期福利! 经典O'Reilly图书免费送, 搞懂DApp生态就靠它了!

热门文章

  1. 群晖NAS同步阿里云盘
  2. 100行代码实现HarmonyOS“画图”应用,eTS开发走起
  3. 使用HBuilder mui将图片保存到手机相册(移动端将图片、文件保存至手机相册)
  4. 计算机科学与技术导论结课报告,计算机科学与技术导论论文提纲范文模板 计算机科学与技术导论论文框架怎样写...
  5. Python基于Django的汽车维修保养系统(源码调试+讲解+文档)
  6. java 如何读取解析 mac 下的 pages 文稿,实现数据库正向工程
  7. 微型计算机硬件性能主要取决于什么,微型计算机硬件系统的性能主要取决于
  8. 量子信息与量子计算_为什么2020年代属于量子计算
  9. fNIRS | 非平稳波形的预处理方法
  10. 美国大学工程计算机排名,想从事编程?2019年USNews美国大学计算机工程专业排名值得一看...