| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 芯片设计方向分类讲解 -> 正文阅读 |
|
[人工智能]芯片设计方向分类讲解 |
一、问题背景曾经有朋友问我一个问题(我们都是芯片设计岗):你的设计方向是什么? 我当时主要参与的项目是SLAM相关的模块硬化,显然很可能他并没听说过SLAM,因此也无法了解我做的是什么。 目前主流的芯片设计方向划分方式是按照业务来划分:例如芯片设计(图像处理方向)针对开发图像应用的设计人员,芯片设计(SOC)针对系统集成,芯片设计(机器学习)可能针对专门的AI加速器。 那么问题来了,一方面按业务来分类很难突出一个设计方向的重点(不可能所有芯片设计人员知识面完全一样);另一方面当处理业务比较冷门时,交流成本极高,例如我需要告诉别人我从事SLAM相关模块开发,首先要让别人理解SLAM(同时定位与地图构建)是什么。 因此经过分析与思考,我认为按照软硬件协同工作方式来进行划分十分有效,共划分为3类。 1、不可编程模块; 2、弱可编程模块; 3、强可编程模块; 一、不可编程模块首先“编程”的概念可以看做软件人员通过编写代码控制硬件的过程。“不可编程”指硬件在功能上不可改写,软件人员只能通过调节硬件参数等行为“微调”硬件,硬件是十分固定的。 如上图所示,按照数据来源分为“离线模块”,“在线模块”。即如果来源于不受软件控制的“第三方”,例如图像censor,称为“在线模块”。如果来源于受控的源头,例如从DDR中读取数据,则称为“离线模块”。 二、弱可编程模块弱可编程模块在不可编程模块基础上增加了硬件灵活性。硬件可以在一定程度上由软件支配,搭建出不同的功能电路。 ? 上图中可以搭配出ABC中任意组合的运算功能电路。ABC是需要很多cycle才可完成的运算,例如图像卷积(CONV)、图像切块(VCR)、数据搬运(DMA)等等。 由于电路功能变化多端,数据来源一般完全可控“离线模式”,默认来源DDR。 三、强可编程模块?强可编程模块进一步减小软件控制颗粒度。可以理解“弱可编程”模块中硬件接受的是“大指令”-每条指令可能花费几千cycle。而强可编程模块接受的“小指令”则是精确到cycle执行的指令。普通的CPU/DSP/MCU均是强可编程模块。 ? 每个强可编程模块都被ISA(指令集架构)抽象化,软件与硬件被ISA分开。硬件人员按照ISA设计电路,软件人员按照ISA开发应用,同弱可编程模块一样,强可编程模块肯定是离线模块。 四、总结?本文提出了一种划分芯片设计方向的方法,清楚的划分各个芯片设计岗位,可以直接根据岗位名称知道其知识面,大家可以参考。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 21:22:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |