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. Xcode7.2与iOS9之坑 (持续更新)

    GitHub地址 前几天升级OS X EI Capitan 10.11.1, 以及Xcode7.1,正好赶上公司新产品上线,要做iOS9的适配,遇到各种坑,各种查资料,随之记录总结一下遇到的坑. 先说 ...

  2. 论文笔记——N2N Learning: Network to Network Compression via Policy Gradient Reinforcement Learning

    论文地址:https://arxiv.org/abs/1709.06030 1. 论文思想 利用强化学习,对网络进行裁剪,从Layer Removal和Layer Shrinkage两个维度进行裁剪. ...

  3. c++ 交换两个容器(swap)

    #include <iostream> #include <vector> using namespace std; int main () { vector<,); / ...

  4. msgsrvmgr.cpp:5:37: fatal error: kdl_conversions/kdl_msg.h: No such file or directory #include <kdl_conversions/kdl_msg.h>

    /home/xxx/ros_workspace/src/bp_protocol_bridge/protospot/src/msgsrvmgr.cpp::: fatal error: kdl_conve ...

  5. 定义 S4 类

    S3 类仅用一个字符向量表示,与之不同的是,S4 类要求对类和方法有正式定义.为了定义一个 S4 类,我们需要调用 setClass( ),并提供一种类成员的表示,这种表示被称为字段(slots).通 ...

  6. 字符编码_Windows资料

    1. 1.1.MSDN 函数WideCharToMultiByte(...) https://msdn.microsoft.com/en-us/library/windows/desktop/dd37 ...

  7. Linux网络编程--洪水攻击详解

    洪水攻击详解 ①注解:洪水攻击(FLOOD ATTACK)是指利用计算机网络技术向目标主机发送大量无用的数据报文,使得目标主机忙于处理无用的数据报文而无法提供正常服务的网络行为. 主要原理:利用了网络 ...

  8. HDU - 4804 Campus Design 轮廓线dp

    题意:一个nm的矩阵被12的骨牌和11的骨牌完全覆盖,11的骨牌只能放c-d次,矩阵中有障碍物 题解:dp[i][j][k]表示到了第i行,第j个状态,放过k个11的骨牌,当前位有障碍物时只有一种转移 ...

  9. 使用Bus.js进行兄弟(非父子)组件通信

    首先需要在任意地方添加一个bus.js: 在bus.js里面 写入下面信息 import Vue from 'vue' export default new Vue; 在需要通信的组件都引入Bus.j ...

  10. Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api(二十)

    一:Swagger介绍 Swagger是当前最好用的Restful API文档生成的开源项目,通过swagger-spring项目 实现了与SpingMVC框架的无缝集成功能,方便生成spring r ...