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



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


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


有了CAPIFPGA是怎么做的?

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

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

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

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

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

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

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

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

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

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

  • PSLIBM提供,硬核IPAFU通过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直接接入CPUFSB,是不是会更快?


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值