论文部分内容阅读
摘要:本文介绍了CAPI技术,并给出基于CAPI应用的三个案例。本文网络版地址:http://www.eepw.com.cn/article/281881.htm
关键词:CAPI;CPU;FPGA
DOI:10.3969/j.issn.1005-5517.2015.10.005
1.向第二代分布计算演进
最早的时候计算机系统单任务的,随着数据量的增加,单计算任务的处理能力已不足以满足人们日益增长的需求,所以计算机系统逐渐演进到多任务的计算环境,同时有多个CPU运行(图1),这就产生一个访问内存中的数据,数据的一致性是要急需解决的问题。那么什么是数据一致性的问题呢?当一个CPU对一个数据进行操作之后,另外一个CPU需要拿到正确的数据。
在系统里面,电脑是用硬件来保证数据一致性,同时保证另外一个线程在读取数据的时候能读取到正确的数据。如图2所示,图2中有6个CPU核,每个CPU核都有自己的缓存,他们共享了一个更大的主存。图2展示第一个POWER上面的崭新的应用,要对地址为1000的应用进行操作。第一个应用会把这个地址为1000的数据从主存里面读到自己的缓存上面,并且对它进行修改,比如把它修改成绿色,有另外一个应用跑在了第三个CPU核上面,它也是读取地址为1000的数据,应该期望的是它读到的是绿色的数据而不是原来白色的数据。同样第三个核上的应用会把这个数据进行改写,比如改写成红色,这时候如果还有另外一个应用跑在了第四个第五个核上面的应用,它也会去读取这个数据,也应该期望它能够读到红色的数据,这背后都是由一个内存通知器硬件来帮软件完成这些数据的一致性,保证它们读到的数据都是最新的数据。当计算机系统从一个单CPU系统进化到多CPU系统的时候,它的性能功耗比其实是在下降的,所以现在可以用这样的系统处理更多的数据,比如在线交易业务、企业ERT业务、数据库业务等。
随着互联网的普及,数据量比以往更多。对于系统来说需要更强的硬件计算能力,来处理更多的数据。常见的解决方案是在CPU核上,开辟更多个硬件的线程,用这些线程来提高其处理能力,来帮助它对I/O端口过来的数据进行更好的处理,同时加入了GPU和FPGA,使用这些硬件来帮助系统处理数据(图3)。但是传统上GPU和FPGA都是以I/O设备的形式挂载在这个系统上面,为了使用I/O设备,需要提高技能,如编程人员需要学习硬件知识,需要懂得内核的人为I/O设备进行驱动的开发,同时由于它们是I/O设备,没有和CPU共享内存,所以需要内核代码帮助他们做数据传输。摆在面前的另外一个难题就是半导体技术的性价比不再持续增长,现在已经到了一个拐点,不能依赖于半导体技术的增长使系统更快更强,需要从硬件还有固件、操作系统、设备应用等多角度考虑,寻求一个更好的解决方案。
为了解决这种需求,现在引入FPGA使用CAPI(相干加速器处理器接口)接入系统更快更好地处理数据。随着移动互联网的发展,这样数据会比以往更多,所以我们需要硬件来帮助系统处理数据。当然整个系统不是IBM提供的封闭系统,虽然IBM也有一个192线程的机器,再加上FPGA的板卡,但是IBM没有提供这样一个封闭系统,相反IBM会有更多的合作伙伴,比如中太数据的服务器、NVIDIA的GPU、赛灵思的FPGA芯片、恒扬的FPGA板卡解决方案,还有Ubuntu的操作系统解决方案、三星提供的存储解决方案。以一个合作伙伴的形式,向更多的企业提供应用,提供服务。
CAPI可以使FPGA连接到系统上面(如图4),通过在FPGA上面内嵌了一点处理逻辑,使FPGA上面的硬件可以和CPU线程共同共享一段虚拟的地址空间,在CPU上的线程会产生数据,同时也会产生一个任务队列,队列可以定义指导FPGA上面硬件如何对数据进行操作。在新一代的系统里面,允许FPGA硬件和CPU上面软件共享虚拟的地址空间,并且它们的一致性是由硬件来进行维护。通过一个调动CPU上的软件可以触发IPA硬件去任务队列里面获取任务的描述,然后FPGA通过共享的存储空间来读取内存上面的数据,并产生结果,这些结果和数据都可以被CPU上软件直接访问的。IBM已有系统是工作在这样的模式。用CAPI技术不再需要面对之前麻烦,但是因为FPGA软件员不需要再去了解具体的硬件是如何工作,FPGA工作在协处理器的模式共享内存。
图5是一个OpenPOWER的机器,在红色的两个圈子里是两个POWER8的处理器模块,绿色的地方是可以插两个CAPI板卡的地方。
2.解决方案的案例
CAPI可以在哪里应用呢?向大家介绍三个案例,癌症的治疗方案、银行欺诈的检测、零售业水平的分析。
2.1癌症治疗方案
医生可以把一些药物注入到癌细胞里面,癌细胞吸收了药物之后就有可能被治疗,看上去也非常好,但是有一个问题,当癌细胞多了以后,很难区分跟正常机体的区别,所以导致药物有可能误伤。为了让治疗更加安全高效,医生需要模拟这种药物在人体生效的过程,传统理念针对一个人需要模拟大概两周的时间,给病人制定一个最佳的治疗方案。现在,为了模拟这种情况,使用一种叫做FullMonte蒙特卡罗模拟的方法,模拟光子在吸收前在体内的散射情况,对这种行为进行建模并且进行模拟。在蒙特卡罗模拟里面(图6),每个光子大概需要1000多次循环,模拟它在人体中的飞行,同时会有更多的光子需要在并行的被模拟,通过CAPI接口使用FPGA硬件来对这样的行为模拟。现在已经可以通过FPGA加速大大缩短时间,两个小时就可以完成这样的模拟,如果使用传统的计算机结构再加上PCI的FPGA,可以获得比软件快4倍的能力,如果使用CAPI再加上POWER8机器的话,可以获得64倍性能的提升。
2.2银行欺诈检测
开户的时候,在身份证或者护照上都会有照片,还有文档上会写地址等信息,拿着身份证或护照信息来到银行,就可以开户。这个问题就在于如果这个人使用同样一张照片但是用不同的名字,他可以去到另外一个地方的另外一家银行,可能会开一个新的账号,如此反复他就可以用不同的身份去开更多个帐号。银行解决这个问题的唯一办法就是因为他们会使用同样一张照片,银行可以对这些照片进行存储,这样银行会有存储数百万张人脸的照片。
使用CAPI,可以实现一个训练的引擎,神经网络还有视频等算法把这些图片变成一个数据库。使用这样的方式可能在很短的时间内从数百万张照片里匹配出一个指定的人脸。这样当有一个新用户来到银行的时候,他就可以把新用户的脸形跟所有数据库里面数百万张照片进行匹配,可以发现他是匹配还是不匹配。在系统里使用CAPI,它不是以I/O设备存在这个系统,而是像一个协处理器之间来处理数据,软件线程只需要做一些初始化的设置,然后全部的计算任务都交给CAPI上面的加速器来进行计算(图7)。
2.3零售业视频分析
还有另外一个例子,把安全摄像头系统接入到CAPI系统上面,CAPI系统可以实时地对视频上面的各种目标进行识别,比如你可以查询在某一个时间段之内有多少蓝色的汽车停靠。可以使用人脸识别对人的表情进行识别,比如识别这个人高兴、伤心还是意外,通过对脸的表情进行训练的话,可以迅速对一个实时的人脸进行识别。还可以展示另外一个场景,推着这个购物车的时候可以对货架上的商品进行识别。当推着这个购物车在货架前走过的时候,通过实时的视频分析,可以知道哪个货架上已经缺货,货品已经被卖光了,或者通过视频分析得知某一件商品被放到了不应该被的位置上面,同时结合前面介绍的人脸分析,当一个人把东西从货架拿起来的时候,可以知道他是否满意商品,假设他把这个商品放到购物车里面,可以知道这个人对这个商品很满意,同时如果识别出他对这个货品并不感兴趣,把这个物品又放回到货架上面,那就会知道这个人对这个货品并不满意。但是可以通过给他更高的折扣来吸引他。想象一下SV可以通过这样一个场景来帮助这样的零售商做更好的客户开发。
关键词:CAPI;CPU;FPGA
DOI:10.3969/j.issn.1005-5517.2015.10.005
1.向第二代分布计算演进
最早的时候计算机系统单任务的,随着数据量的增加,单计算任务的处理能力已不足以满足人们日益增长的需求,所以计算机系统逐渐演进到多任务的计算环境,同时有多个CPU运行(图1),这就产生一个访问内存中的数据,数据的一致性是要急需解决的问题。那么什么是数据一致性的问题呢?当一个CPU对一个数据进行操作之后,另外一个CPU需要拿到正确的数据。
在系统里面,电脑是用硬件来保证数据一致性,同时保证另外一个线程在读取数据的时候能读取到正确的数据。如图2所示,图2中有6个CPU核,每个CPU核都有自己的缓存,他们共享了一个更大的主存。图2展示第一个POWER上面的崭新的应用,要对地址为1000的应用进行操作。第一个应用会把这个地址为1000的数据从主存里面读到自己的缓存上面,并且对它进行修改,比如把它修改成绿色,有另外一个应用跑在了第三个CPU核上面,它也是读取地址为1000的数据,应该期望的是它读到的是绿色的数据而不是原来白色的数据。同样第三个核上的应用会把这个数据进行改写,比如改写成红色,这时候如果还有另外一个应用跑在了第四个第五个核上面的应用,它也会去读取这个数据,也应该期望它能够读到红色的数据,这背后都是由一个内存通知器硬件来帮软件完成这些数据的一致性,保证它们读到的数据都是最新的数据。当计算机系统从一个单CPU系统进化到多CPU系统的时候,它的性能功耗比其实是在下降的,所以现在可以用这样的系统处理更多的数据,比如在线交易业务、企业ERT业务、数据库业务等。
随着互联网的普及,数据量比以往更多。对于系统来说需要更强的硬件计算能力,来处理更多的数据。常见的解决方案是在CPU核上,开辟更多个硬件的线程,用这些线程来提高其处理能力,来帮助它对I/O端口过来的数据进行更好的处理,同时加入了GPU和FPGA,使用这些硬件来帮助系统处理数据(图3)。但是传统上GPU和FPGA都是以I/O设备的形式挂载在这个系统上面,为了使用I/O设备,需要提高技能,如编程人员需要学习硬件知识,需要懂得内核的人为I/O设备进行驱动的开发,同时由于它们是I/O设备,没有和CPU共享内存,所以需要内核代码帮助他们做数据传输。摆在面前的另外一个难题就是半导体技术的性价比不再持续增长,现在已经到了一个拐点,不能依赖于半导体技术的增长使系统更快更强,需要从硬件还有固件、操作系统、设备应用等多角度考虑,寻求一个更好的解决方案。
为了解决这种需求,现在引入FPGA使用CAPI(相干加速器处理器接口)接入系统更快更好地处理数据。随着移动互联网的发展,这样数据会比以往更多,所以我们需要硬件来帮助系统处理数据。当然整个系统不是IBM提供的封闭系统,虽然IBM也有一个192线程的机器,再加上FPGA的板卡,但是IBM没有提供这样一个封闭系统,相反IBM会有更多的合作伙伴,比如中太数据的服务器、NVIDIA的GPU、赛灵思的FPGA芯片、恒扬的FPGA板卡解决方案,还有Ubuntu的操作系统解决方案、三星提供的存储解决方案。以一个合作伙伴的形式,向更多的企业提供应用,提供服务。
CAPI可以使FPGA连接到系统上面(如图4),通过在FPGA上面内嵌了一点处理逻辑,使FPGA上面的硬件可以和CPU线程共同共享一段虚拟的地址空间,在CPU上的线程会产生数据,同时也会产生一个任务队列,队列可以定义指导FPGA上面硬件如何对数据进行操作。在新一代的系统里面,允许FPGA硬件和CPU上面软件共享虚拟的地址空间,并且它们的一致性是由硬件来进行维护。通过一个调动CPU上的软件可以触发IPA硬件去任务队列里面获取任务的描述,然后FPGA通过共享的存储空间来读取内存上面的数据,并产生结果,这些结果和数据都可以被CPU上软件直接访问的。IBM已有系统是工作在这样的模式。用CAPI技术不再需要面对之前麻烦,但是因为FPGA软件员不需要再去了解具体的硬件是如何工作,FPGA工作在协处理器的模式共享内存。
图5是一个OpenPOWER的机器,在红色的两个圈子里是两个POWER8的处理器模块,绿色的地方是可以插两个CAPI板卡的地方。
2.解决方案的案例
CAPI可以在哪里应用呢?向大家介绍三个案例,癌症的治疗方案、银行欺诈的检测、零售业水平的分析。
2.1癌症治疗方案
医生可以把一些药物注入到癌细胞里面,癌细胞吸收了药物之后就有可能被治疗,看上去也非常好,但是有一个问题,当癌细胞多了以后,很难区分跟正常机体的区别,所以导致药物有可能误伤。为了让治疗更加安全高效,医生需要模拟这种药物在人体生效的过程,传统理念针对一个人需要模拟大概两周的时间,给病人制定一个最佳的治疗方案。现在,为了模拟这种情况,使用一种叫做FullMonte蒙特卡罗模拟的方法,模拟光子在吸收前在体内的散射情况,对这种行为进行建模并且进行模拟。在蒙特卡罗模拟里面(图6),每个光子大概需要1000多次循环,模拟它在人体中的飞行,同时会有更多的光子需要在并行的被模拟,通过CAPI接口使用FPGA硬件来对这样的行为模拟。现在已经可以通过FPGA加速大大缩短时间,两个小时就可以完成这样的模拟,如果使用传统的计算机结构再加上PCI的FPGA,可以获得比软件快4倍的能力,如果使用CAPI再加上POWER8机器的话,可以获得64倍性能的提升。
2.2银行欺诈检测
开户的时候,在身份证或者护照上都会有照片,还有文档上会写地址等信息,拿着身份证或护照信息来到银行,就可以开户。这个问题就在于如果这个人使用同样一张照片但是用不同的名字,他可以去到另外一个地方的另外一家银行,可能会开一个新的账号,如此反复他就可以用不同的身份去开更多个帐号。银行解决这个问题的唯一办法就是因为他们会使用同样一张照片,银行可以对这些照片进行存储,这样银行会有存储数百万张人脸的照片。
使用CAPI,可以实现一个训练的引擎,神经网络还有视频等算法把这些图片变成一个数据库。使用这样的方式可能在很短的时间内从数百万张照片里匹配出一个指定的人脸。这样当有一个新用户来到银行的时候,他就可以把新用户的脸形跟所有数据库里面数百万张照片进行匹配,可以发现他是匹配还是不匹配。在系统里使用CAPI,它不是以I/O设备存在这个系统,而是像一个协处理器之间来处理数据,软件线程只需要做一些初始化的设置,然后全部的计算任务都交给CAPI上面的加速器来进行计算(图7)。
2.3零售业视频分析
还有另外一个例子,把安全摄像头系统接入到CAPI系统上面,CAPI系统可以实时地对视频上面的各种目标进行识别,比如你可以查询在某一个时间段之内有多少蓝色的汽车停靠。可以使用人脸识别对人的表情进行识别,比如识别这个人高兴、伤心还是意外,通过对脸的表情进行训练的话,可以迅速对一个实时的人脸进行识别。还可以展示另外一个场景,推着这个购物车的时候可以对货架上的商品进行识别。当推着这个购物车在货架前走过的时候,通过实时的视频分析,可以知道哪个货架上已经缺货,货品已经被卖光了,或者通过视频分析得知某一件商品被放到了不应该被的位置上面,同时结合前面介绍的人脸分析,当一个人把东西从货架拿起来的时候,可以知道他是否满意商品,假设他把这个商品放到购物车里面,可以知道这个人对这个商品很满意,同时如果识别出他对这个货品并不感兴趣,把这个物品又放回到货架上面,那就会知道这个人对这个货品并不满意。但是可以通过给他更高的折扣来吸引他。想象一下SV可以通过这样一个场景来帮助这样的零售商做更好的客户开发。