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

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

有了CAPI的FPGA是怎么做的?

首先认识一下这个体系里的三个角色:

AFU(Acceleration Function Unit),主加速逻辑部分就是FPAG的加速芯片,用户可以把自己的加速逻辑和Firmware写进去。

PSL—Power Service Layer,提供接口给AFU用于读写主存和V2P地址翻译(与CPU侧使用同一个页表,并包含TLB),同时负责Probe CAPP实现全局cc,并提供Cache。PSL由IBM作为硬核IP提供给FPGA开发者。

CAPP—Coherent Attached Processor Proxy,相当于FPGA侧的ccAgent,但是被放在了CPU侧,其维护一个filter目录并接受来自其他CPU的Probe,未过滤掉的Probe转发PSL。

操作要点可以简要的概括为以下6点:

  • 针对专用场景、PCIE专用加速卡进行优化;

  • FPGA直接访问当前进程的全部虚拟地址空间,无需转成PCIE地址;

  • 加速卡上可以使用Cache并通过CAPP的Probe操作自动与主存cc;

  • 加速卡与CPU看到同样的地址空间并且cc;

  • 提供API,包括打开设备、传递任务描述信息等,相当于驱动程序;

  • PSL由IBM提供,硬核IP。AFU通过opcode及地址控制PSL收发数据。

在此过程中,CAPI致力于把FPGA当成CPU的对等端,但这是一个特殊的CPU,对计算加速非常快的,非常高效的一个CPU。优势在于:两边看到了一样的地址空间,FPGA看到的不再是PCIe空间了,所以就省去了映射地址这一环节。再就是FPGA一侧可以有Cache,可以缓存主存里的数据,而且Cache是与主存一致的。

现在FPGA可直接访问主存空间,但它不会访问所有的物理空间,因为CAPI 1.0每个时刻只能给一个进程来用,CAPI会为进程会提供一个接口,打开FPGA之后发数据和指令。CAPI 2.0会让FPGA有一个分时复用机制,比如,每10毫秒跳一个线程,但是当前的FPGA不具备这个功能,只能是谁用谁打开。谁打开了FPGA就看到谁的虚拟空间。有了这种机制以后就不需要映射了,再就是可以直接访问内存地址了。还有Cache,基本就融入了所有的CPU了,就是一个对等、对称的关系。

性能能提高多少?

硬件配置是这样的:

IBM Power8 Server, S822L

Ubuntu, kernel 3.18.0-14-generic

Nallatech 385 CAPI card

Samsung SM1715 1.6TB NVM ExpressSSD

测试时,ŸPMC工程师用FPGA制作了一个文本搜索引擎,如上图。

测试过程中,Host端主程序从NVMe SSD读入数据,并生成任务描述链表,ŸAFU采用pooling的方式访问主存获取任务描述链表并执行搜索任务,Snooper用来debug和性能监控。

性能 – P8<->AFU

当队列深度60时的时候,获得一个极限吞吐量,接近6GB/s的带宽,带宽非常大。

延时也很小,只有1.5微秒,平均90%读写在1.5微秒完成。

CAPI1.0暂时做不到的事情

现在CPU的线程看不到AFU上的地址空间(MMIO控制寄存器地址除外)。而且,AFU只能给一个进程使用。如果未来可以把FPGA直接接入CPU的FSB,是不是会更快?



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

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

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

  2. origin如何将多个曲线放在一张图_Origin入门教程(十二):误差棒棒棒棒儿

    精选回顾 ◀ 干货满满!计算狗「模拟计算干货」汇总大放送,你想要的都在这里~ ◀ 免费干货丨测试狗透射电子显微镜(TEM)资料汇总「TEM全家福」,从入门 到精通! ◀ SCI论文写作大全来啦!助你早 ...

  3. 【Python-利用动态二维码传输文件(四)】使用pyautogui库录屏(连续截图),然后利用OpenCV逐张读取截图,识别当中的二维码信息,并把信息重组成原文件

    程序示意图 目录 一.使用pyautogui库,对电脑屏幕进行录屏 二.使用OpenCV库对100帧截图进行识别,并与原29帧二维码图片内含信息进行比对 三.把获取的100帧二维码信息去重,并保持原来 ...

  4. 张小白的渗透之路(二)——SQL注入漏洞原理详解

    SQL注入漏洞简介 乱七八糟的就不多说了,自己百度去 SQL注入原理 想要更好的学习SQL注入,那么我们就必须要深入的了解每种数据库的SQL语法及特性.下面通过一个经典的万能密码的例子带大家来拨开一下 ...

  5. 由一张血管图片引发的算法分析(二)

    最近用opencv接触到很多好的想法,之前的纯粹用C++编程,相比下用opencv库自带的函数快捷很多,算法接着上面项目来说,不仅仅是要测量血管的外壁,要更改血管的内壁,无奈之下,又重新考虑. 至于为 ...

  6. python两张图片无缝合成一张_使用python拼接多张图片.二三事

    前几日在博客上看到一篇"使用python拼接多张图片"的Blog[具体是能将的图片名字必须是形如xx_1.png ... xx_100.png或者xx_001.png ... xx ...

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

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

  8. 张小二求职记之 单例模式(二)

    z:大侠,我又回来了. M: 内部类懂了,其实设计模式很多考察的都是基础知识,一个学生能有什么项目工程经验呢?你很上进.咱们聊聊内部类,特别是单例模式中的静态内部类.我们开始吧: M.什么时内部类? ...

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

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

  10. 《绝冬城之夜2》(Neverwinter Nights 2 CHT) 国际中文版(增加简体补丁)

    http://www.verycd.com/topics/118396/ <绝冬城之夜2>(Neverwinter Nights 2 CHT) 国际中文版(增加简体补丁) 状态: 精华资源 ...

最新文章

  1. 独立开发者:新手做2D手游该用哪些工具?
  2. 简单免杀绕过和利用上线的 GoCS
  3. django学习之Model(四)MakingQuery
  4. centos-安装python3.6环境并配置虚拟环境
  5. Solidity 官方文档中文版 2_Ethereum 智能合约介绍
  6. 【线性代数本质】1:向量究竟是什么
  7. RAII(Resource Acquisition Is Initialization:资源获取即初始化)
  8. 【HDOJ】3500 Fling
  9. 普通文件的上传(表单上传和ajax文件异步上传)
  10. python截屏截图
  11. 5G网络演进行业及市场发展需求
  12. 阿里云商标注册流程是怎么样的(注册步骤详细教程)
  13. 几何平均数,代数平均数: 调和是什么意思,调和平均数 点火公式 平面曲线弧长(代数方程,参数方程,极坐标方程) 旋转曲面面积 旋转体体积 拉格朗日乘数法求最值;
  14. 分享一个特别好用的站长在线工具箱
  15. Trained Ternary Quantization
  16. 大话西游java正版_大话西游手游
  17. unity基础学习九,Unity常用API
  18. 图片数据增强的方法——收藏
  19. 《从0到1:CTFer成长之路》1.3 任意文件读取漏洞
  20. 华南理工网络教育计算机平时作业,2017年华南理工大学网络教育计算机应用基础平时作业...

热门文章

  1. 摄像机高精度标定的一些方法
  2. 百度地图api设置点的自定义图标不显示
  3. 运筹帷幄之中决胜千里之外 菜鸟初识代码编程规范二 命名规范
  4. H3C光模块专题笔记
  5. xz (压缩文件格式)
  6. 高阶篇:4.2.5)DFMEA建议措施及后续完备
  7. 开源一个 Python 中文数据结构和算法教程
  8. postgresql 不区分大小写 模糊查询
  9. 计算机网络学习笔记(九)——网络层IP地址
  10. 深度学习-TextDetection