FPGA以计算速度快、资源丰富、可编程著称,之前一直应用于高速数字信号领域和ASIC验证。随着逻辑资源的丰富和编程工具的改进,FPGA在机器学习和硬件加速上得到越来越多的重视,目前数据中心已经大量采用,大数据、云计算领域逐步采用FPGA器件。但是除了这些对计算能力和逻辑资源要求很高的应用,市面上还有很多功能简单的小型应用,如果采用现有的“大而全”的FPGA产品,不仅价格昂贵,而且资源浪费。于是有人想到了定制化服务,这样可以让工程师根据产品需求定制合适的FPGA产品,从而达到节约成本和功耗的目的,嵌入式FPGA有望解决这一问题。

最近,Achronix为其eFPGA IP解决方案推出Speedcore custom blocks定制单元块。其市场营销副总裁Steve Mentor介绍,“Speedcore custom blocks定制单元块可以大幅度地提升性能、功耗和面积效率,并支持以前在FPGA独立芯片上无法实现的功能。利用Speedcore custom blocks定制单元块,客户可以获得ASIC级的效率并同时保持FPGA的灵活性,从而带来了一种可以将功耗和面积降至最低、同时将数据流通量最大化的高效实现方式。”

通过两层裁剪让芯片面积缩小多达6倍

FPGA用户都指导,标准FPGA不仅包含FPGA内核中的逻辑设计、各种存储器、DSP以及布线,而且还包含内核以外的可编程I/O、SerDes以及各种接口控制器,这就使得芯片资源丰富,但体积庞大,成本昂贵,因此要实现成本的缩减就要裁掉设计中不必要的资源。Achronix的做法是进行了两层裁剪:

如图所示,第一层裁剪将外部的可编程I/O、SerDes以及各种接口控制器进行裁剪,只留下FPGA内核,这样面积可以缩小50%。

如图所示,裁剪掉外围模块以后,FPGA内核是否可以进一步缩小?那么,先从FPGA内核的结构分析,Steve Mentor指出,“Microsoft在其有关Catapult项目的白皮书中讲了一种云规模的加速架构,包括壳(shell)和应用(Application),其中shell布局IO及与电路板相关的逻辑电路,应用是核心逻辑,Shell占据了44%的总面积。”

Achronix进行了第二层裁剪,将shell去掉,剩下由用户定义功能的Fusion Custom Block定制单元块,包含在Speedcore的可编程结构中。经过这道裁剪,芯片面积缩减高达75%。

如何定义Fusion Custom Block单元块?

如何实现定义,这是很多用户最关心的问题。Steve Mentor解释,“Achroinx使用内部工具来分析客户的设计,以识别出可以用Fusion Custom Block单元块开进行优化的潜在功能,比如经常使用的重复性功能,从而实现面积缩减、性能提高和功耗降低。现在,Achronix eFPGA IP产品在添加了Speedcore custom blocks定制单元块以后,就使其在拥有可编程性的同时还能够拥有ASIC级的性能以及高片芯面积效率。”

FPGA设计中开发工具很关键,Achronix也提供了ACE设计工具,可以全面支持Speedcore custom blocks定制单元块,可以与存储器和DSP单元块相同的方式,提供从设计捕获到比特流生产和系统调试等功能。

Achronix为每个Speedcore custom blocks定制单元块创建了一种独有图形化用户接口(GUI),它可以管理所有的配置规则。ACE拥有Speedcore custom blocks定制单元块所有配置的完整的时序细节,支持ACE去完成各种设计基于时序的布局和布线。客户可以用强大的版图规划器来优化设计,并为所有的单元实例去制定局域或者定点的任务安排。ACE还包括一个关键路径分析工具,它可以支持客户去分析时序。客户还可以使用ACE强大的Snapshot嵌入式逻辑分析仪,去创建复杂的触发器并展示Speedcore内的实时信号。

eFPGA既然如此灵活,那么它是否会在未来代替FPGA?Steve Mentor表示,“目前来看,标准FPGA的市场占有率大概是80%,eFPGA是20%,复杂应用的客户中有人愿意在ASIC设计中加入eFPGA,简单应用的客户有些愿意用eFPGA来代替标准FPGA完成设计,但是两者针对的客户群不同,会长期共存。”

“正是eFPGA的市场需求旺盛,Achronix在2017年实现了强劲的销售收入及业务增长,预计销售将超过1亿美元。与TSMC和做的16nm产品已经量产,7nm产品预计在2018年上半年完成测试芯片和首批设计。” Steve Mentor补充。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号

扫描二维码关注杭州卿萃科技FPGA极客空间


解决标准FPGA资源丰富却浪费的问题的更多相关文章

  1. FPGA资源平民化的新晋- F9 技术解析

    FPGA (现场可编程门阵列)由于其硬件并行加速能力和可编程特性,在传统通信领域和IC设计领域大放异彩.一路走来,FPGA并非一个新兴的硬件器件,由于其开发门槛过高,硬件加速算法的发布和部署保护要求非 ...

  2. kubernetes 降本增效标准指南| 资源利用率提升工具大全

    背景 公有云的发展为业务的稳定性.可拓展性.便利性带来了极大帮助.这种用租代替买.并且提供完善的技术支持和保障的服务,理应为业务带来降本增效的效果.但实际上业务上云并不意味着成本一定较少,还需适配云上 ...

  3. Oracle解锁,解决“ora00054:资源正忙”错误

    Oracle解锁,解决“ora00054:资源正忙”错误 一.处理步骤:--1.获取被锁对象的session_idSELECT session_id FROM v$locked_object; --2 ...

  4. nodejs 构建本地web测试服务器 以及 解决访问静态资源的问题!

    直接打开html文件,是以file:///方式打开的,这种方式很多时候会遇到跨域的问题,因此我们一般会搭建一个简易的本地服务器,来运行测试页面. 一.构建静态服务器 1.使用express模块 建立个 ...

  5. apache如何解决跨域资源访问

    很多时候,大中型网站为了静态资源分布式部署,加快访问速度,减轻主站压力,会把静态资源(例如字体文件.图片等)放在独立服务器或者CDN上,并且使用独立的资源域名(例如res.test.com) 但是在实 ...

  6. php用apc实现的临界区 解决并发,资源互斥同步访问

    在面对线程或进程的互斥同步的控制问题时,常用的解决办法是:临界区,互斥锁,信号量 临界区保证在某一时刻只有一个线程能够访问到所需资源的方法. 任何时候,只能至多有一个线程处于临界区中.如果多个线程要求 ...

  7. 【spring】ApplicationListener传递参数到页面(解决静态+动态资源路径+静态文件的缓存控制)

    一.相对路径还是绝对路径的问题 前端页面加载资源或者请求的时候到底是使用相对路径还是绝对路径,想必大家都很清楚,用的是当然是相对路径,因为这样增加了项目的灵活性,不需要经常的改动.那既然是相对路径就需 ...

  8. 浅谈FPGA资源评估

    在使用FPGA过程中,通常需要对资源做出评估,下面简单谈谈如何评估FPGA的资源. FF和LUT的数目: 这个在写出具体代码之前,初学者通常没法估算,但资深FPGA工程师会估算出一个数量级.通常的做法 ...

  9. 白话skynet第三篇:通过队列解决多线程竞争资源

    今天遇到一个问题,在大厅服务中,如果一个请求使用到了一个公共的变量,如何保证其一致性? 虽然请求是挨个运行的,但是skynet.call会阻塞. "同一个 skynet 服务中的一条消息处理 ...

随机推荐

  1. 线程访问ui,托管

    1.在类中声明 delegate void setDebugDelegate(string info);//线程访问textbox委托函数 private void setDebug(string i ...

  2. [fastjson] - fastjson中 JSONObject 和 JSONArray

    /** * 对jsonObject对象进行key的获取 * @param jsonObject */ public ArrayList<String> jsonKeyRecursion(J ...

  3. POJ 1061 青蛙的约会(扩展欧几里得算法)

    http://poj.org/problem?id=1061 思路: 搞懂这个扩展欧几里得算法花了不少时间,数论真的是难啊. 含义:找出一对整数,使得ax+by=gcd(a,b). 接下来看这道题目, ...

  4. pybedtools --bedtools的python包

    http://daler.github.io/pybedtools/ 用个下面这个 >>> fn = pybedtools.example_filename('test.fa') & ...

  5. python 判断列表的包含关系

    def is_Sublist(l, s): sub_set = False if s == []: sub_set = True elif s == l: sub_set = True elif le ...

  6. python 操作Excel表格,解压zip包,压缩zip包,目录遍历

    import zipfile import os,shutil import openpyxl file_list_pos="" fileName="" zip ...

  7. JavaScript Number() Vs new Number()

    最近在优化一个页面时候.IDEA 提示我错误的使用了包装类.当时感觉很诧异. 随后.我上Stack Overflow上面查了一下,终于发现了问题所在. new Number('123') 与 Numb ...

  8. SSM(Spring+SpringMVC+Mybatis)+Mysql 框架整合搭建流程以及其间注意事项

    复习SSM框架,太久没用自己手动撘一个,发现自己还是有很多地方忘记了和没注意的事项... 首先,直接给出总流程: 零.引jar包 1.引包(或者写maven.pom) 一.数据库部分 设计数据库各表结 ...

  9. UVALive-3268 Jamie's Contact Groups (最大流,网络流建模)

    题目大意:你的手机通讯录里有n个联系人,m个分组,其中,有的联系人在多个分组里.你的任务是在一些分组里删除一些联系人,使得每个联系人只在一个分组里并且使人数最多的那个分组人数最少.找出人数最多的那个分 ...

  10. thread.event说明

    Python中的threading.Event()操控多线程的过程有: - 定义事件:man_talk_event = threading.Event() - 创建线程,传入对应事件:t1 = thr ...