±à¼ÍƼö: |
ÎÄÕÂÖØµã½éÉÜÁ½µã£ºÒ»¸öÊÇ»ùÓÚFPGAµÄÒì¹¹¼ÆËãµÄÒ»°ãÐÔÎÊÌ⣬ÁíÒ»¸ö»ùÓÚFPGAµÄÒì¹¹¼ÆËã·½°¸½øÐвûÊö£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚÔÆÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼ÍƼö¡£ |
|
1. ÍŶӽéÉÜ
Áª½Ý¼ÆËã¿Æ¼¼³ÉÁ¢ÓÚ2016Ä꣬ӢÎÄÃûCTAccel¡£Êµ¼ÊÉÏÎÒÃÇÍŶӴÓ2014Äê¾Í¿ªÊ¼Ñо¿ÕâÏî¼¼ÊõÁË£¬Ö÷ÒªÖÂÁ¦ÓÚÒÔFPGAÎªÔØÌåµÄÊý¾ÝÖÐÐĵÄÒì¹¹¼ÆË㣬ÈÃËüÄܰïÖúÎÒÃǽâ¾öһЩʵ¼ÊµÄÎÊÌâ¡£
2. Ö÷Ìâ
½ñÌì·ÖÏíµÄÖ÷Ìâ°üÀ¨Á½µã£¬Ò»¸öÊÇ»ùÓÚFPGAµÄÒì¹¹¼ÆËãµÄÒ»°ãÐÔÎÊÌ⣬ÁíÒ»¸ö¾ÍÊÇÎÒÃÇÍŶӣ¨CTAccel£©»ùÓÚFPGAµÄÒì¹¹¼ÆËã·½°¸¡£
2.1 »ùÓÚFPGAµÄÒì¹¹¼ÆËãµÄÒ»°ãÐÔÎÊÌâ

¶ÔÓÚFPGAÔÚÒì¹¹¼ÆËãµÄÒ»°ãÐÔÎÊÌ⣬½áºÏÎÒÃǵÄÈÏʶ£¬´ÓÒÔÏÂÎå¸ö·½ÃæÀ´Ëµ¡£
2.1.1 µ±Ç°´¦ÀíµÄÀ§¾³

ÉÏͼ×ó±ßÃèÊöµÄÊÇ2016ÄêAMD·¢²¼µÄÒ»¸ö±¨¸æ¡£IntelÐû²¼Í£Ö¹CPUµÄTick-Tock·¢Õ¹Ä£Ê½£¬Moore¶¨ÂɵÄʧЧÒâζ×ÅCPUÐÔÄܵÄÌáÉýÂýÓÚ֮ǰ18¸öÔÂΪһÖÜÆÚµÄËÙ¶È¡£µ«ÊÇÊý¾Ý¼ÆËãÐèÇóÔö³¤È´Ô½À´Ô½¿ì£¬¶Ô¼ÆËãµÄÐèÇóÔ½À´Ô½¶à¡£ÕâЩÐèÇó°üÀ¨¶àýÌåתÂ룬ËÑË÷¼ÆË㣬¼Ó½âÃÜÒÔ¼°¾ØÕóµÄ¼ÆËã¡£ÓÉÓÚ¼ÆËãÐèÇóÔ½À´Ô½´ó£¬¾ÍÐèҪеĵײãÓ²¼þÀ´Ö§³Ö´ó¹æÄ£¼ÆËã¡£

ÉÏͼÃèÊöµÄÊÇÍøÂçºÍ´æ´¢±¾ÉíµÄ¼¼Êõ·¢Õ¹£¬Êý¾ÝÖÐÐÄÄÚ²¿ÍøÂçËÙ¶ÈÔ½À´Ô½¿ì£¬´Ó×îÔçµÄ1Gbpsµ½ÏÖÔÚ100Gbps£»´æ´¢ËÙ¶ÈÒ²´Ó»úеӲÅ̵Ä0.7MB/s¼Ó¿ìµ½¹Ì̬Çý¶¯Æ÷µÄ1GB¡£µ«ÊÇCPU´¦ÀíIOµÄËÙ¶ÈûÓÐÄÇô¿ì£¬ÀýÈçAES256¼ÓÃܺÍSHA-1Ç©Ãû£¬Èç¹ûÊÇʹÓõ¥ºËCPU´¦Àí£¬´¦ÀíÄÜÁ¦Ö»ÓÐ100MB/s£¬Óë´æ´¢ËÙ¶ÈÖ®¼ä´æÔںܴóµÄ²î¾à¡£´ÓÍøÂçµÄ½Ç¶ÈÀ´½²£¬Èç½ñ´¦ÀíÍøÂ·ÐÒéËùÐèÒªµÄCPUºËÊýÒ²ÊǺܴóµÄ£¬CPU´¦ÀíËÙ¶ÈÊDz»ÄÜÆ¥ÅäÍøÂç´¦ÀíËٶȵġ£Èç¹û´ÓÓ²¼þ·½Ãæ½â¾ö´ËÎÊÌ⣬FPGA¿ÉÒÔÌṩһЩ°ïÖú¡£
2.1.2 FPGA¼°ÆäÀúÊ·

´«Í³µÄFPGA¸ÅÄ¾ÍÏñͼÖÐËùʾ¡£Êµ¼ÊÊǰѵç·°åÉÏһЩСµÄÃŵç·£¬°²×°ÔÚоƬÉÏͨ¹ý¸Ä±äÁ¬ÏßÀ´¸Ä±äËüµÄ¹¦ÄÜ£¬½Ð×öÏÖ³¡¿É±à³ÌÃÅÁÐÕó¡£ËüÆäʵÊÇÒ»¸ö°ë¶¨ÖÆ»¯×¨Óü¯³Éµç·£¬ÀïÃæÒѾÓÐһЩ»ù±¾Ãŵç·£¬Ò²»áÓÐһЩ´¥·¢Æ÷£¬ÒÔ¼°»¥Áª×ÊÔ´¡£Í¨¹ý¸Ä±äÕâЩ»¥Á¬×ÊÔ´¶ÔÃŵç·¡¢´¥·¢Æ÷µÄÁ¬½Ó·½Ê½À´¸Ä±ä¹¦ÄÜ£¬ÕâÑù¾Í¿ÉÄÜʵÏÖÀýÈçÊý×ÖÂ˲¨Æ÷¡¢¾ØÕó±ä»»µÈ»ù±¾¹¦ÄÜ¡£ÏÖÔÚµÄFPGAÏà½Ï֮ǰÒѾ·¢ÉúÁ˾޴óµÄ¸Ä±ä¡£Ö®Ç°Ö»ÓÐÃŵç·¡¢´¥·¢Æ÷£¬»¥Á¬×ÊÔ´£¬µ«ÊÇÏÖÔÚÀïÃæÒѾ°üº¬Á˱Ƚϸ߲ãÒ»µãµÄ¹¦ÄÜÄ£¿é£¬ÀýÈçÔö¼Ódsp¡¢bram£¬ÉõÖÁ°üÀ¨ddr¿ØÖÆÆ÷¡¢pcie¿ØÖÆÆ÷¡¢serdes¡¢¹â¿Ú£¬ÒÔ¼°arm¡¢powerpc¡¢gpuµÈϵͳ¼¶µÄµ¥Ôª¡£

ÔÚ30¶àÄêµÄʱ¼äÀFPGA´óÖÂÓÐËĸö·¢Õ¹½×¶Î£¬´Ó1984ÄêÈüÁé˼·¢Ã÷FPGAµ½1991ÄêÕâ¶Îʱ¼äµÄÖ÷Òª·¢Õ¹ÌåÏÖÊÇоƬ¾§Ìå¹ÜÊýÄ¿µÄÖð½¥Ôö¶à£¬Ö÷Òª½â¾öµÄÎÊÌâÊÇÈçºÎÀ©´óµç·µÄ¹æÄ£¡£´Ó1992Äêµ½1999ÄêÊÇFPGAµÄÀ©ÕŽ׶Σ¬ÕâÒ»½×¶ÎÒÀÈ»ÔÚ̽ÇóÀ©´óµç·¹æÄ£µÄ·½·¨¡£ÓÉÓÚµ±Ê±Ð¾Æ¬¹æÄ£ÒÀÈ»½ÏС£¬ÎªÊµÏÖ¸´ÔÓ¹¦ÄÜ£¬ÕâÒ»½×¶Î½â¾öµÄÁíÒ»¸öÎÊÌâ¾ÍÊÇͨ¹ýÈí¼þ½øÐÐоƬ¼äµÄ¹¦ÄÜ·ÖÖΡ£µÚÈý½×¶ÎÊÇ´Ó2000Äêµ½2007Ä꣬µ±Ê±FPGAµÄ¹æÄ£ÒѾÏà¶Ô½Ï´ó£¬ÕâÒ»½×¶ÎÖ÷Òª½â¾öµÄÊÇÊý×ÖÐźŴ¦Àí·½ÃæµÄÎÊÌ⣬±ÈÈçÈí¼þ¶Ô»¥Á¬×ÊÔ´µÄ²¼¾Ö²¼Ïߣ¬ÈçºÎ³ä·ÖÀûÓþ§Ìå¹ÜµÈÎÊÌâ¡£´Ó2008Ä꿪ʼ½øÈëµ½FPGAµÄתÐͽ׶Σ¬ÕâÒ»½×¶Î²»½ö°üº¬¿É±à³ÌÂß¼£¬»¹°üÀ¨Ethernet
MACºÍPCI ExpressÒÔ¼°Ò»Ð©¸ßËÙ½Ó¿Ú¡¢Î¢´¦ÀíÆ÷£¬ÉõÖÁ°üÀ¨GPU¡¢¸¡µã¼ÆËãÆ÷µ¥Ôª¡£FPGAÔÚ³¯×Åϵͳ»¯·½Ïò·¢Õ¹£¬¹æÄ£Ô½À´Ô½´ó£¬Îª¼ÆËã»úÌṩ×îµ×²ãµÄ¼¼Êõ»ù´¡¡£ÔÚ²»¶Ï·¢Õ¹µÄ¹ý³ÌÖУ¬FPGAµÄ¹¦ºÄÔ½À´Ô½Ð¡£¬ÈÝÁ¿Ô½À´Ô½´ó£¬ËÙ¶ÈÒ²Ô½À´Ô½¿ì£¬ÕâÒ²ÊÇËüÏÖÔÚ¿ÉÒÔÓÃÓÚÊý¾ÝÖÐÐĵļ¼Êõ»ù´¡¡£
2.1.3 »ùÓÚFPGAµÄÒì¹¹¼ÆËãµÄÌØµã

CPU¡¢GPU¶¼»ù±¾²ÉÓ÷ëŵÒÀÂü¼Ü¹¹£¬ËüµÄ×é³É²¿¼þ°üÀ¨Ö¸Áî´æ´¢¡¢Êý¾Ý´æ´¢¡¢ÒëÂëÂß¼¡¢ËãÊýÂß¼µ¥ÔªÒÔ¼°¹²ÏíÄÚ´æ¡£ËüµÄ¹¤×÷ÔÀíÊǽ«È¡µÃµÄÖ¸ÁîºÍÊý¾Ý½øÐÐÖ¸ÁîÒëÂ룬ȻºóÖ´Ðзµ»Ø½á¹û¡£
CPU¡¢GPU¶¼ÊǵäÐ͵ĵ¥Ö¸Áî¶àÊý¾ÝµÄÄ£ÐÍ¡£CPUÖÐALUÊýÁ¿ÓÐÏÞ£¬¿ÉÒÔÖ§³Ö¸´ÔӵĿØÖÆÂß¼£¬¶ÔÓ¦µÄ»º´æÈÝÁ¿Ò²½Ï´ó¡£ÔÚGPUÖУ¬ËãÊõÂß¼µ¥Ôª½Ï¶à£¬µ«ÊÇ¿ÉÍê³ÉµÄ¿ØÖÆÖÖÀà½ÏÉÙ£¬ÏàÓ¦»º´æÈÝÁ¿Ò²ÓÐÏÞ¡£Á½Õß½â¾öµÄÎÊÌⲻͬ£¬µ«ËûÃǵÄ×îСִÐе¥Ôª¶¼ÊÇÖ¸Áî¡£±à³ÌµÄ±¾ÖʾÍÊǽ«Ëã·¨ºÍÒµÎñÂß¼²ð½âΪ˳ÐòÖ´ÐеÄÖ¸ÁîµÄ¹ý³Ì¡£

¶ÔÓÚFPGAÀ´½²£¬ËüÊÇ×ÔÓÉÖ¸Áî¼Ü¹¹£¬±¾ÉíÖ»Ìṩ²¿¼þ³Ø¡£×é³É²¿¼þ°üÀ¨CLB£¨¿É±à³ÌÂß¼µ¥Ôª£©¡¢BRAM¡¢DSPµ¥Ôª¡¢PCIE¿ØÖÆÆ÷¡¢Ê±ÖÓµ¥Ôª¡¢¸ßËÙÊÕ·¢Æ÷µÈ¡£¿ÉÒÔͨ¹ýÉè¼Æ£¬ÀûÓÃÕâЩ²¿¼þʵÏÖ²»Í¬¹¦ÄÜ¡£¹¤×÷Á÷³ÌÒ²¿É¸ù¾ÝÓ¦Óö¨ÖÆ¡£´Ó¼ÆËãµÄ½Ç¶ÈÀ´½²£¬Ëü¿ÉÒÔÖ§³Öµ¥²Ù×÷¶àÊý¾Ý£¬ÒòΪËü²»ÐèÒªÒëÂ룬¹ÊÒ²²»´æÔÚÖ¸ÁîµÄ¸ÅÄͬʱËüÒ²Ö§³Öµ¥Êý¾Ý¶à²Ù×÷£¬¿É¶ÔͬһÊý¾Ý¶à´Î²Ù×÷¡£FPGAµÄ×îСִÐе¥Î»ÊǼĴæÆ÷ºÍËãÊõÂß¼µ¥Ôª£¬FPGA±à³ÌµÄ±¾ÖÊÊǽ«Ëã·¨ºÍÒµÎñÂß¼Ó³Éäµ½FPGA»ù±¾²¿¼þ£¬ÕâÓëCPUÒ²ÊDz»Í¬µÄ¡£

»ùÓÚFPGAµÄ¼ÆËã¹ý³Ì£¬Ïà±ÈÓÚCPU/GPUµÄÓŵ㣺
1£©ÑÓʱµÍÎȶ¨ÐÔÇ¿
FPGA¿É¶¨ÖƵ¥²Ù×÷¶àÊý¾Ý¡¢µ¥Êý¾Ý¶à²Ù×÷ÒÔ¼°»ìºÏÄ£ÐÍ£¬¿ÉÐγɸüϸÁ£¶ÈµÄ²Ù×÷¡¢Á÷Ë®ºÍ²¢ÐС£²¢ÇÒÓÉÓÚÊý¾ÝÁ÷¶¯Â·¾¶¹Ì¶¨£¬´¦ÀíÑÓ³ÙÒ²Êǹ̶¨µÄ¡£Òò´Ë£¬Ëü»áÓеÍÑÓʱǿÎȶ¨µÄÓŵ㡣
2£©¹¦ºÄµÍ
¾§Ìå¹ÜÈ«²¿ÓÃÓÚËã·¨ºÍÒµÎñ´¦Àí£¬ÈßÓàÉÙ£¬ÀûÓÃÂʸü¸ß¡£
3£©²¢·¢¶È¸ß
¶ÔÓÚFPGA£¬Ð¾Æ¬×ÊÔ´ÊÇ×ã¹»¿ØÖƲ¢ÐкÍ˳ÐòÖ´ÐÐÖ®¼äƽºâµÄ¡£ÔÚFPGAµÄÓ¦Óõ¥ÔªºÍCPU¡¢GPUÓÐЧÂÊÀûÓúËÊýÏ൱ʱ£¬ÓÉÓÚÑÓʱ¸üµÍ£¬ËùÒÔFPGA²¢·¢¶È¸ü¸ß¡£
4£©IO×ÊÔ´·á¸»
FPGAÓиßËÙ½Ó¿Ú£¬ÉõÖÁ°üÀ¨¹â¿Ú¡¢ÒÔÌ«Íø½Ó¿Ú£¬¿ÉÒÔÖ§³Å¿¿½ü½Ó¿ÚµÄ¼ÆËã¡£

ÏÂÃæ½«ÒÔ×î»ù±¾µÄ±à½âÂëÔÀíÀ´ËµÃ÷FPGAÊʺÏͼÏñ±àÂëµÄÔÒò¡£ÉÏͼÃèÊöÁËÊÓÆµ±àÂëµÄ¹ý³Ì¡£Ê×ÏȽ«ÊÓÆµ»®·ÖΪ²»Í¬±àÂëµ¥Ôª£¬È»ºó¶Ôÿ¸öµ¥Ôª½øÐбàÂ룬ÏȾ¹ý±ä»»È»ºó½øÐÐÁ¿»¯£¬Ö®ºó½øÐз´Á¿»¯·´±ä»¯£¬µÃµ½Öع¹µÄÊý¾ÝÔÙºÍÔÊý¾Ý½øÐÐÔ¤²â±àÂ룬¶ÔÁ¿»¯µÄ²Ð²îÊý¾Ý½øÐÐìØ±àÂë¡£¹¦Äܵ¥ÔªµÄ»®·ÖºÍÿ¸öµ¥ÔªµÄ´¦ÀíÊÇ´®ÐеĹý³Ì£»¶ø´¦Àí¹ý³ÌµÄÔ¤²â¡¢±ä»»¡¢Á¿»¯¶¼ÊǾØÕó³ËµÄ¹ý³Ì£¬ÓÖÊDz¢Ðйý³Ì£»ìرàÂëÒ²ÊÇ´®Ðеġ£ÕûÌå¹ý³ÌÊÇ´®Ðв¢ÐÐÏà½áºÏµÄ£¬CPU¡¢GPUÄÑÒÔÖ§³ÅÕâ¸ö¹ý³Ì£¬FPGAÖпÉÓɲ»Í¬µç·Íê³É¡£

´Óʵ²âÊý¾ÝÀ´¿´£¬ÉÏͼÖù״ͼչʾÁËJPEGͼѹËõµ½Ò»¶¨´óСʱ£¬FPGAºÍGPU·½Ê½ÏÂQPSÖµµÄ´óС¡£¿ÉÒÔ¿´³ö£¬ÎÞÂÛÔÚºÎÖÖÇé¿öÏ£¬FPGAÏà¶ÔÀ´ËµÊÇÓÐÒ»¶¨ÓÅÊÆµÄ¡£ÕâÖÖÓÅÊÆÀ´Ô´ÓÚËüµÄµ×²ã¼¼Êõ¼Ü¹¹¡£
2.1.4 FPGAÒì¹¹¼ÆËãµÄϵͳ¼¶ÎÊÌâ

FPGA¿ÉÒÔ´øÀ´Ò»¶¨ÓÅÊÆ£¬µ«ÈÔÈ»´æÔÚÐí¶àÐèÒª½â¾öµÄÎÊÌâ¡£ÔÚµ¥¸ö¹¦ÄÜÉÏ£¬ËüÓкܴóµÄÓÅÊÆ£¬µ«ÊÇ´ÓϵͳӦÓÃÀ´¿´£¬ÕâÖÖÓÅÊÆ»á´ó´òÕÛ¿Û£¬ÒòΪËüÓкܶàϵͳÏÞÖÆÌõ¼þ¡£
Ëã·¨ºÍÒµÎñÂß¼ÔÚFPGAÓ³ÉäÉÏ»¹Ðè½øÐÐÓÅ»¯ÒÔ³ä·ÖÀûÓÃÉî¶ÈÁ÷Ë®ÏßÓë²¢ÐС£
¼ÓËÙ¿¨ÉϵÄ×ÊÔ´Åä±ÈÈÔ´æÔÚÎÊÌ⣬×öͼÏñÊÓÆµ±à½âÂë³£ÐèҪʹÓÃÍⲿ»º´æ£¬¶ø»º´æµÄÈÝÁ¿¡¢´ø¿íµÈÊÇÐèÒªÓë֮ƥÅäµÄ£¬Êý¾Ý´«ÊäµÄÑÓ³ÙÒ²»á¶ÔÐÔÄܲúÉúÓ°Ï졣ͬʱ²¿·ÖËã·¨ÐèҪʹÓ÷dz£´óÈÝÁ¿µÄƬÄڿ黺´æ¡£
FPGAÔÚϵͳ¼¶±ðµÄ×ÊÔ´Åä±È£¬Hostµ÷¶ÈÉÏÒ²»á´æÔÚÒ»¶¨µÄЧÂÊÎÊÌâ¡£ÎÒÃÇÈçºÎÔÚÓû§ÎÞ¸ÐÖªµÄÇé¿öÏ£¬¶Ôϵͳ״̬½øÐÐ¼à¿Ø£¬ÕâÊÇÎÒÃÇÔÚÈí¼þ²àÒª½â¾öµÄÎÊÌ⡣ΪÊÊÓ¦²¿ÊðÐèÇ󣬻¹ÐèÒª½â¾öÐéÄâ»úÖ§³ÖºÍdocker²¿Êð·½ÃæµÄÎÊÌâ¡£
´Ó²úÆ·²àÀ´½²£¬ÏµÍ³ÔÚFPGAÒì¹¹¿¨¡¢Íø¿¨¡¢ssdÓëÆäËûÒ칹ƽ̨֮¼äÄÜ·ñP2P´«µÝÊý¾Ý£¬ÈÃϵͳ¸üÓÐЧҲÊÇÐèÒª¿¼Âǵġ£FPGAÓëHostÖ®¼äÄÜ·ñÓÐЧ´«µÝÊý¾ÝÒ²ÊÇÎÒÃÇÑо¿µÄÒ»²¿·Ö£¬²¢ÇÒÒ²³¢ÊÔÁ˲»Í¬µÄ¼¼Êõ¡£
2.1.5 FPGAÒì¹¹¼ÆËãµÄ¿ª·¢Á÷³ÌºÍ·½·¨Ñ§

ÉÏͼչʾÁËÒ칹ϵͳ¿ª·¢µÄÁ÷³Ì¡£×óͼչÏÖÁË´«Í³FPGAµÄ¿ª·¢Á÷³Ì£¬¿ÉÒÔ¿´³öºÍоƬµÄ¿ª·¢Á÷³ÌÊÇÏàÏñµÄ£¬ÓÉÓÚÊÇÓ²¼þ¿ª·¢£¬ËùÒÔÐèÒª´úÂëת»»µÄ¹ý³Ì£¬»¹ÐèÒª·ÖÎöµç·ÊÇ·ñÂú×ãÒªÇó£¬Òª×ö·ÂÕæ¡¢²âÊÔ¡¢ÓÅ»¯£¬×îºó²ÅÄܵõ½Âú×ãÒªÇóµÄÉè¼Æ½øÐа弶²âÊÔ¡£ÎªÁËÂú×ãÊý¾ÝÖÐÐĵĿìËÙÂ䵨µÄÐèÇó£¬FPGAÐèÒªÓõ½¸ü¸ß²ãµÄ¹¤¾ßºÍ±à³ÌÓïÑÔ¡£

³ýÁ˹¤¾ß¡¢¿ª·¢Á÷³Ì£¬Æ½Ì¨Ò²ÊÇÒ»¸ö·½Ãæ¡£ÔÚÎÒÃǵĿª·¢ÖУ¬Óй̶¨µÄhdkºÍsdk£¬»áÌṩ¶ÔÓ¦µÄ½Ó¿Ú²Ù×÷»ù±¾Çý¶¯¡¢hdkÀïµÄ¼à¿Ø½Ó¿Ú¡£ÕæÕýµÄÉè¼ÆÔÚÓÚ¹¦ÄܵÄÉè¼Æ¡£
´Ó²úÆ·µÄ½Ç¶È½²£¬ÎÒÃÇÖ÷Òª¿¼ÂÇÊý¾Ý¿ÉÓᢽӿڿÉÓá¢ÏµÍ³Îȶ¨Ò×Óá¢Ç¨ÒƳɱ¾µÍ¡¢ÐÔÄÜÕâÎå¸öά¶È¡£Ó¦ÓÃÒªÄÜÌṩ×ã¹»¶àµÄ½Ó¿Ú¶Ô½ÓÔÓеÄÈí¼þÉú̬¡£ÏµÍ³Îȶ¨ÊÇ×î»ù±¾µÄ£¬ÄÜ·ñÒ»¼üÉý¼¶¡¢Ò»¼ü²¿ÊðÒ²ÊÇÐèÒª¿¼Âǵġ£ÁíÍâÇ¨ÒÆ³É±¾°üÀ¨Ð޸ĽӿڶÔÓû§Á÷³ÌµÄÓ°Ï죬¶Ë¶Ô¶ËÕûÌå·ÖÎö²ÅÄÜÈ·¶¨ÏµÍ³ÐÔÄܵÄÌáÉýÁ¿¡£´ÓÐÔÄÜÖ¸±êÀ´¿´£¬£¬³ýÁËÍÌÍ£¬»¹ÓÐÑÓʱ¡¢ÈÎÎñ¹¤×÷ʱ³¤¡¢CPUÀûÓÃÂʵȡ£µ±µ¥¿¨ÎÞ·¨ÊµÏÖ¹¦ÄÜʱ£¬¶àÕÅ¿¨Ö®¼äµÄµ÷¶È¡¢¹¦ÄÜÇз֣¬ÒÔ¼°Ê¹Óö࿨ʱÐÔÄÜÊÇ·ñÄÜÏßÐÔÔö³¤¶¼ÊÇÐèÒª¿¼Á¿µÄ¡£
2.2 CTAccel»ùÓÚFPGAµÄÒì¹¹¼ÆËã·½°¸

½ÓÏÂÀ´£¬ÎÒ½²Ò»ÏÂÕë¶ÔÒÔÉÏ̸µ½µÄÒ»°ãÎÊÌ⣬ÎÒÃÇÍŶÓËù×öµÄ·½°¸¡£ËäÈ»ÊǾßÌåÓ¦Ó㬵«ÊÇËü²»»áÎ¥±³ÎÒÃÇ֮ǰ·ÖÎöµÄÎÊÌâ¡£¾ßÌå´ÓĿǰÖ÷Òª²úÆ·¼°²úÆ·ÐÎ̬¡¢¶àýÌåͼÏñµÄ´¦Àí£¬ºÍÊÓÆµÊÓÆµÒÔ¼°Ä¿Ç°ÒÑÂ䵨ӦÓõÄÇé¿öËĸö·½Ãæ·ÖÏí¡£
2.2.1 CTAccelÖ÷Òª²úÆ·ºÍ²úÆ·ÐÎ̬

Ŀǰ£¬CTAccelÖ÷ÒªÓÐÁ½¿î²úÆ·¡£Ò»¸öÓÃÓÚͼÏñ´¦Àí£¬Ò»¸öÓÃÓÚÊÓÆµ¡£²úÆ·Éè¼ÆµÄÖ÷ҪĿµÄÊÇΪÁËÌáÉý¼ÆËãÐÔÄÜ£¬Ìá¸ßÓû§ÌåÑé¡£½ÚÊ¡¿Í»§Í¶×ÊÒ²ÊÇÎÒÃDzúÆ·µÄÓŵãÖ®Ò»¡£

ÎÒÃǵIJúÆ·ÓÐÁ½ÖÖÐÎ̬£¬Ò»ÖÖÊÇ»ùÓÚÓ²¼þ¿¨ÐÎ̬µÄ¡£ÕâÖÖÖ÷Òª¼¯ÖÐÓÚ˽Óв¿Êð£¬ÓÃÓÚ¿Í»§ÓÐ×Ô¼ºµÄÊý¾ÝÖÐÐÄ»òÕß×Ô¼ºµÄ·þÎñÆ÷µÄÇé¿ö¡£¿Í»§¿ÉÒÔ×ÔÐйºÂòÓ²¼þ¿¨²åÈë·þÎñÆ÷£¬½«ÎÒÃǵÄÈí¼þ°²×°ÔÚ¿¨ÉϾͿÉÒÔʹÓÃÎÒÃǵIJúÆ·¡£ÁíÒ»ÖÖÊÇ»ùÓÚ¹«ÓÐÔÆµÄ¡£ÎÒÃǵIJúÆ·¿ÉÒÔÖ§³Ö²»Í¬µÄÔÆÆ½Ì¨¡£
2.2.2 CTAccelµÄͼÏñ´¦Àí·½°¸

ͼÏñ´¦ÀíÖ÷ÒªÓÐÈý¸ö¹¦ÄÜ£¬·Ö±ðÊǽâÂëÆ÷£¬ÏñËØ´¦Àí£¬±àÂëÆ÷¡£ÏñËØ´¦ÀíÉÏ£¬ÎÒÃÇÖ÷Òª×öËõ·Å¡¢Ðýת¡¢²Ã¼ô¡¢Ë®Ó¡¡¢È¥ÔëµÈ´¦Àí¡£¹¦ÄÜ¿ÉÒÔ´®Ðе÷Óã¬Ò²¿ÉÒÔ˳Ðòµ÷ÓᣱàÂëÆ÷Ŀǰ¿ÉÖ§³ÖJPEG£¬Webp£¬HEIC¡£ÕâЩ¶¼ÊÇÓÐËðѹËõ£¬Ï໥֮¼ä¿ÉÒÔͨ¹ý±à½âÂ뻥ת¡£³ý×î»ù±¾µÄÒÔÍ⣬JPEGĿǰ»¹¿ÉÒÔʵÏÖ½¥½øÊ½×ªÂë¡£LeptonÊÇרÃÅÓÃÓÚÎÞËðѹËõµÄ£¬Ëü¿É¶ÔJPEG¸ñʽµÄͼƬÔÙÒ»´ÎѹËõ£¬´ïµ½¸üºÃµÄѹËõЧ¹û£¬Ö÷ÒªÓÃÓÚ´æ´¢¡£Èí¼þÕ»¿ÉÒÔÖ§³ÖOpenCV¡¢ImageMagick¡¢GraphicsMagick¡¢LeptonÒÔ¼°ffmpeg£¬ÎÒÃÇĿǰ»¹ÔÚÉè¼ÆÖ§³Örestful
web APIµÄÈí¼þ¡£ÎÒÃÇÒ²×öÁËÒ»¸öͼƬ´¦Àí·þÎñµÄÉè¼Æ¹©´ó¼Ò²Î¿¼¡£×îÓÒ²àµÄͼչÏÖÁËÎÒÃDzúÆ·µÄ·Ö²¼£¬°üÀ¨AFUºÍService&DriverÒÔ¼°OpenCVµÈ½Ó¿Ú¡£¿Í»§¿ÉÒÔÖ±½Óµ÷ÓÃÍâÃæµÄ½Ó¿Ú£¬Èç¹ûÐèÒªWEB½Ó¿ÚµÄ»°£¬ÎÒÃÇÒ²¿ÉÒÔÔÙ·â×°Ò»²ã¡£

ÎÒÃÇ×öÁ˺ܶàµÄ¹¦ÄÜ£¬Ò²¾Û½¹Á˼¸¸öÖ÷ÒªÓ¦ÓÃÁìÓò¡£ÆäÖÐÒ»¸öÊÇAIÔ¤´¦Àí¡£ÔÚGPU´¦ÀíÆ÷ǰ£¬ÐèÒª¶ÔͼÏñ½øÐнâÂ룬ѹËõµ½¹æ¶¨³ß´ç£¬»¹ÓÐһЩ¹éÒ»»¯´¦Àí¡£Õë¶ÔÕâ¸öÎÊÌ⣬ÎÒÃÇÏ£ÍûÄܶÔͼÏñ½øÐÐÁ÷Á¿ÇåÏ´´¦Àí£¬Ö±½ÓµÃµ½¿ÉÒÔ±»GPU´¦ÀíµÄͼƬ¡£Í¼ÏñתÂëµÄÓ¦Ó㬼´¸÷ÖÖ¸ñʽͼÏñ½øÐл¥×ª¡£Í¼Ïñ´æ´¢Ö÷ÒªÓÃLepton¸ñʽ¡£

ÕâÕÅͼչÏÖÁËÎÒÃDzúÆ·ÓŵãÌåÏÖÔÚÄÄÀͨ¹ý¼ÆËã¼ÓËÙ£¬Õû¸öÁ´Â·ÑÓʱ»áËõ¶Ì¡£¶ÔÓÚ¼ÆËã×ÊÔ´ÏûºÄ´óµÄÎÊÌ⣬ͨ¹ýÓÅ»¯¿ÉÒÔÔö´óϵͳµÄÍÌÍÂÁ¿¡£¿ÉÒÔ¿´³ö£¬´æ´¢ÉϵÄÓŵãÊÇÃ÷ÏԵģ¬×ÊԴѹËõµ½Ô½Ð¡£¬Ô½½ÚÊ¡¿Õ¼ä¡£

ͨ¹ýʹÓÃFPGA¿¨Ô¤´¦Àí£¬¿ÉÒÔ¸üºÃµÄÓëGPUÆ¥Å䣬¸üºÃµÄ·¢»ÓGPUÐÔÄÜ¡£ÏÂÃæÊÇһЩ¾ßÌåµÄ°¸Àý¼°ÆäÐÔÄÜ¡£
JPEGתÂëWebP°¸Àý


JPEGÓëLepton»¥×ª°¸Àý



JPEGתÂëJPEG°¸Àý


HeicתÂëJPEG°¸Àý



AI»¥×ªÆ¥ÅäÇé¿ö

2.2.3 CTAccelµÄÊÓÆµ´¦Àí·½°¸

ÊÓÆµ´¦Àí·½°¸°üÀ¨H264£¬H265µÄ±à½âÂë´¦ÀíÒÔ¼°Ò»Ð©ÏñËØ´¦Àí¡£Èí¼þÖ§³ÖffmpegºÍgstreamer¡£




2.2.4 Â䵨ӦÓÃ
1£©ÊÖ»úÂ䵨ӦÓÃ

2£©O2Oƽ̨Â䵨ӦÓÃ

3£©Éç½»ÍøÕ¾Â䵨ӦÓÃ

4£©Ö±²¥Æ½Ì¨Â䵨ӦÓ㨲âÊÔÖУ©

|