自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

evolone的专栏

每天一小步

  • 博客(98)
  • 收藏
  • 关注

原创 AI芯片:华为Ascend(昇腾)910结构分析

前几天,华为发布了最新的AI芯片,号称目前全球最强,算力吊打谷歌TPU3和英伟达Tesla V100。这么震撼人心,必须挺一波!!华为牛逼!!(这句5毛)下面来具体分析一下。一、昇腾910的整体结构我去华为官网查了一下,然后就得到这么一点信息:(之后截图补上,这是地址:https://e.huawei.com/cn/products/cloud-computing-dc/atlas/...

2019-08-26 17:24:08 22827 3

原创 AI芯片:清华天机芯片内部结构分析(TianJic)

最近,清华七年磨一剑,放出一大招,文章直接登上NATURE的封面。《Towards artificial general intelligence with hybrid Tianjic chip architecture》。文章介绍了整个TianJic的结构及具体应用。本文延续以往一贯的风格,仅仅研究文章中公开的内部计算架构。一、整体思路人工智能通常有两个主要方向:(1)一种是面向计...

2019-08-24 19:24:51 12544 1

原创 AI芯片:华为昇腾(ASCEND)310结构分析

华为的麒麟SOC中使用的是寒武纪的AI芯片模块。但是,华为自己也推出了自有的AI芯片架构。本文根据华为公布的信息,简单分析下其结构。所有信息都来自互联网,来自华为的官方信息。感谢华为的分享!!首先看看,华为发布的一张海报,如下图所示。整体采用华为自研的达芬奇架构,采用高性能的3D Cube计算引擎。因为兴趣及工作领域的因素,我更关注其芯片内部的AI 卷积核的设计。从海报中能够看出...

2019-05-18 17:09:28 16605 5

原创 AI芯片:清华大学可重构混合神经网络处理器结构分析

清华大学微纳电子系的尹首一等人于2018年发表论文《A 1.06-to-5.09 TOPS/W Reconfigurable Hybrid-Neural-Network Processor for Deep Learning Applications 》,介绍了他们的面向深度学习人工智能算法的AI芯片架构及性能参数。这是大学的AI芯片,代表了学术界的一种想法。下面分析一下其内部结构。当然,主要...

2019-02-16 00:11:24 3692 2

原创 AI芯片:寒武纪DianNao,英伟达NVDLA和谷歌TPU1的芯片运算架构对比分析

前面几篇博客分别分析了目前市面上能够找到的各家AI芯片的结构。下面做一个阶段性的对比分析及总结。AI芯片运算架构对比整体来看,NVDLA的架构与寒武纪的DianNao比较像。所以,单位资源的性能应该是差不多的。二者性能的区别,就看资源的多寡了。寒武纪的DianNao,共16个PE,每个PE可以计算一个神经元,每个周期最多计算出16个神经元。NVDLA共2个core。每个core有8个m...

2019-01-18 20:10:39 8143 4

原创 AI芯片:英伟达NVDLA结构分析

英伟达开源了深度学习硬件架构:NVDLA。包括完整的源代码:Verilog代码,C_Model代码,以及验证平台代码。英伟达官网上也有详细的文档。非常值得学习推敲。作为从业者,我更加关注NVDLA卷积核的实现方式。不过,文档中并没有详细的说明。于是,直接看代码,分析结构。好记性不如烂笔头。顺便将看代码的过程中学习到的东西,记录下来。1.NVDLA硬件架构...

2018-11-28 00:01:41 17180 19

原创 AI芯片:深鉴科技基于深度压缩的ESE方案分析

二、ESE这篇论文,将上文的Deep Compression技术在FPGA上具体实现。 为了达到更高的效率,本文从三个层次提高计算效率:算法优化,编译高效的调度程序,硬件加速。如Figure 2所示。 本文设计的语音识别系统中,最占用运算资源和存储资源的是LSTM算法。故本文着重优化LSTM算法的计算。 LSTM算法的数据流如图Figure 4所示。的确比较复杂。其中涉及到许多的...

2018-09-10 19:01:21 2088

原创 AI芯片:寒武纪Cambricon-X结构分析

五、Cambricon-X Cambricon-X是针对稀疏系数的矩阵计算架构。 深鉴科技的韩松等人的研究发现,可以将传统的深度学习网络模型的许多权重系数去掉,甚至能去掉90%以上,而并不影响模型的计算精度。如下图所示。 目前的深度学习模型的权重系数太多,造成需要的乘法计算非常多,计算时间长,速度慢。 相信,未来的模型会更加复杂,需要的计算更多,时间更久。 未来把模型进行系数删减,就...

2018-09-10 18:56:15 14661 12

原创 AI芯片:寒武纪ShiDianNao结构分析

四、ShiDianNao ShiDianNao的出现是寒武纪在深度学习处理器上细分领域的更加深入。 前面介绍的DianNao针对的是大部分的深度学习神经网络算法,包括CNN和RNN等。 目前比较火而且应用面非常广的领域是计算机视觉,若在这个领域的算法精度实现巨大突破,那么,就将开启广阔的应用领域。比如自动驾驶/安防等等,利润丰厚的领域。 图像识别,这类算法主要采用CNN结构。 于是乎,开...

2018-09-10 18:55:21 7132 3

原创 AI芯片:寒武纪PuDianNao结构分析

三、PuDianNao 上面的DianNao和DaDianNao,其实内部处理逻辑可以说是一样的。 这种架构,只能适用特定的算法类型,比如深度学习(CNN,DNN,RNN)等。 但是,深度学习只是机器学习中的某一类,整个机器学习,有很多其他种类的算法,和深度学习的不太一样,甚至经常用到除法等计算类型。这些算法,目前的应用范围也很广。 为了加快常用机器学习算法的运算,寒武纪又设计出专门针对这...

2018-09-10 18:54:33 5329 2

原创 AI芯片:寒武纪DaDianNao结构分析

二、DaDianNao DaDianNao的诞生稍晚于DianNao,同样也是在2014年。(这里仅仅指论文发表时间) 如果把DianNao看作是嵌入式终端使用的处理器,那么DaDianNao就是服务器上用的大规模高性能处理器。 DaDianNao其实就是采用的DianNao的NFU作为内核,然后在一块芯片上同时放置了16个NFU,于是乎,性能也就是DianNao的16倍。 文章说,在Da...

2018-09-10 18:53:18 8015

原创 AI芯片:寒武纪NPU设计分析(DianNao)

国内人工智能处理器独角兽寒武纪,在这个领域,算是走在了世界前沿,经过最近几年的迅猛发展,取得了辉煌的成果。 最近花了些时间研究了下寒武纪发表的一系列论文中介绍的NPU的结构。 记录下来,算是对最近学习内容的总结。寒武纪从2014年开始,发表了一系列的论文,本文仅分析其中几篇: (1)DianNao: A Small-Footprint High-Throughput Accelerato...

2018-06-22 22:31:11 23073 12

原创 AI芯片:深鉴科技基于深度压缩的FPGA设计

众所周知,深度学习属于计算密集型,模型中参数众多,占用很大的存储空间。这一特点,在嵌入式终端上应用时,因为硬件资源有限,就成了制约实际应用的瓶颈。 因此,减少模型需要的存储空间有着迫切的理论及现实意义。深鉴科技的创始人韩松,本科毕业于清华大学,斯坦福在读博士,一直研究深度压缩技术,并在FPGA上实现了基于深度压缩技术的ESE,成果发表为论文。 本文主要是分析韩松的2篇论文,来一窥深度压缩的...

2018-06-11 18:48:30 5081

原创 AI芯片:商汤科技基于winograd算法的FPGA方案分析

商汤科技2017年发表了一篇论文:Evaluating Fast Algorithms for Convolutional Neural Networks on FPGAs. 商汤科技的这篇论文,利用论文Fast Algorithms for Convolutional Neural Networks中研究的winograd算法大量减少乘法操作的优点,应用到卷积计算中去。 总体来说,商汤科技的...

2018-04-28 17:49:43 9012 3

原创 AI芯片:谷歌TPU1设计分析

前言(作者原创,未经允许不得转载。)最近在研究人工智能芯片架构,反复分析了谷歌公开的TPU ( Tensor Processing Unit) 专利,从中获得些许感悟,记录下来,以备之后查看,也方便广大知友查阅。特此感谢谷歌的分享。其实人工智能从06年深度学习的出现,就踏上了再次崛起之路。如果说,IMGNET的举办是快速推进深度学习的发展,让深度学习在图像识别领域大火特火。那...

2018-04-02 09:34:12 7366 17

原创 linux 命令 替换字符串

如何批量替换字符串?linux系统自带有shell脚本,比如bash.一些命令可以直接起到替换字符串的作用,非常方便!一起来学习下!sed这个命令就是替换字符串的作用。怎么用呢?想替换某个文本中的某个字符串为别的字符串。好办!1 sed ‘s/search_string/replace_string/’ a.v上面命令的作用是,在文件a.v中,每一行查找第一个“search_string”,并替换成“replace_string”字母s代表这是替换命令。不会把替换结果写入a.v。

2020-12-08 19:40:08 2930

原创 SVN常用命令

目录SVN 常用命令1、下载SVN远程文件库2、更新文件SVN 常用命令1、下载SVN远程文件库svn checkout xxx(远程目录地址)比如svn checkout https://1.2.3.4.5.6.7:8/a/b/c/ 回车2、更新文件svn update 更新当前目录下的所有文件svn update a.v 更新当前目录下的文件a.v到最新版本...

2020-12-08 17:24:56 262

原创 System Verilog的task与function,以及task的接口信号与function的返回值

最近写代码,调试过程中,踩了无数坑,摘取一些作为记录。以备之后查看。1.Task和function不同点:Task,只用来仿真调试,可以有延迟。Function,可以综合成一堆组合电路,所以,不能加延迟。相同点:内部信号包括global和local都是static的,所以就算有初值,也必须每次用的时候,重新赋值。(这与C语言等高级语言不同,C等语言,内部变量,都不是static,每次...

2019-11-15 14:44:31 3095 1

原创 github 修改远程仓库地址

首先查看github远程仓库的地址,比如:abc.git那么在仓库对应的本地文件夹abc中,输入命令:git remote set-url origin abc.git回车即可。

2019-11-01 16:42:39 1704

原创 github下载新的仓库

当需要下载新的仓库(地址:http://a/aa)。首先,在本地的某个路径下,建立一个文件夹a(你想要放置新的仓库的地方);然后,进入文件夹a,输入命令git clone http://a/aa/aa.git回车就可以了。...

2019-10-25 14:53:44 248

原创 cadence关于延迟的命令

在 irun 命令行中加上-define sequdp_delay可以让仿真器认为信号经过器件有延迟。比如有两个信号a和b。a有3个bufferb有1个buffer那么,会认为同一个信号经过a和b,a的延迟大,b的延迟小。...

2019-10-25 14:48:36 2148

原创 linux中如何创建及复制文件/文件夹的软链接?

在Windows中有快捷方式。对应的,在linux中有软链接。如何生成软链接呢?命令:ln -s a b其中,a代表想要进行软链接的单个原始文件,如果是多个文件,那么就包括文件路径及文件夹名。b 就是给软连接重新命名。比如:(1)单个文件ln -s a.c b(2)包含多个文件的文件夹ln -s c/a bc/a:代表C盘下的a文件夹...

2019-04-20 12:34:22 7567

原创 AI芯片:SystemVerilog Debug常用的参考数据--16进制数/半精度浮点数

作为AI芯片设计验证工程师,会用到SystemVerilog/Verilog等硬件语言去写设计代码。写好设计代码后,都会自己先简单测试一下。目前的AI芯片,不再选择传统的单精度和双精度浮点数作计算,而是选择半精度浮点数,如果做了量化,还会选用8bit的定点数。以下是一些常用到的测试数据。1. 16进制数16进制数:十进制数0000(0):00001(1):10010(2):200...

2019-03-29 10:50:15 1647

原创 SystemVerilog验证编译错误:关于动态变量的赋值问题

今天遇到一个编译错误,如下:Reference to automatic variable and elements of dynamic variables is not allowed outside procedual blocks.对应报错的那行语句是:assign a = model.path.a.value;其中,model是对应的寄存器模型。因为model.path.a...

2019-03-12 09:35:28 1986

原创 SystemVerilog计算规则:你真的懂赋值规则吗?

最基础的,往往最容易出错。最近,用到了SystemVerilog去写计算,然后,各种赋值规则,让人眼花缭乱,特此记录。int inta, intb, intc, intd;assign inta = -12;// 2进制:1111_1111_1111_1111_1111_1111_1111_0100 10进制:-12assign intb = -'d12;// ...

2018-11-22 19:30:34 6011

原创 磨刀不误砍柴工:开发Model,辅助设计DUT

论开发Model对设计DUT的重要性最近在设计一个模块。时间紧,任务重。一开始,觉得为了节约时间,没有先开发Model,直接去写DUT。整个模块分成三部分。在分别完成三个部分时,由于并不十分复杂,故都是手算的计算结果,然后验证DUT的功能。但是在三个模块一起联合调试时,由于前期理解不充分,设计需要修改,然后计算结果就变了,造成之前手算的结果报废。如果重新手算,就增加了不少的工作量,而且...

2018-10-19 19:38:02 584

原创 verilogHDL,system Verilog代码的多驱动问题

信号多驱动问题0.起因1.现象起源2.原因分析3.解决办法4.思维拓展(1)两个always块的时钟不同,条件互斥;(2)时钟相同,但是条件不互斥,可能发生冲突;(3)时钟不同,且条件不互斥;0.起因最近在项目设计时,遇到了信号多驱动问题。记录下来,提醒自己,方便他人。1.现象起源最近在设计YOLO—V3的模块逻辑。在准备上FPGA时,综合报错:信号多驱动错误。2.原因分析查看代码...

2018-09-27 19:18:14 9923 7

原创 调试代码模块功能的小技巧:化繁为简

实际项目中,设计往往有许多功能模块,设计人员会各自负责一个或几个功能模块。如何有效调试代码功能呢?下面就结合我最近的设计阶段,所经历的问题及解决问题的感悟。 只是我自己的一些经验心得,一家之言,姑且听之。第一阶段 站在设计人员的角度来看。 最起初,只有一个功能模块。 那么,设计人员自己先搭建一个简单的tb,验证代码的基础功能点。 由于时间有限,设计人员无法建立完备的验证mod...

2018-09-03 19:19:01 1169

原创 Linux中如何杀掉任务进程?

跑仿真时,因为各种原因,导致仿真软件没有了反应,而且点击关闭也无法响应。 这该怎么办? 百度了之后,从许多博客/经验/知道中提取了两个有用的命令。 特此记录,以备后续使用。第一步: ps -ef | grep XXXX 这个命令的意思是,显示当前服务器上,与关键字XXXX有关的任务。一般XXXX,可以是用户名. 比如用户名是abc,执行命令: ps -ef | grep abc...

2018-08-29 09:11:08 12187

原创 UVM register model 寄存器模型中:peek()与reg_model.reg_name.value获取的值不同的原因

最近因为项目需要,负责给基于UVM验证平台添加寄存器模型。 参考了张强的《UVM实战:卷1》中第七章的内容,并借鉴了其他项目的code。 总算实现了寄存器模型,利用predictor和adapter,实现了寄存器模型的前门访问。 然后进而实现后门访问。代码实现比较简单。但是之后验证功能时,发现与自己的预估有出入。 发现,对UVM寄存器模型的认识,更深入了。 特此将碰到情况及理解记录下来。...

2018-06-15 16:22:47 3207

原创 python中如何用序列(list())转化为矩阵(int())

今天练习写python代码时,遇到一个有趣的写法:def relu_fun(x): x[x0]=0 return x结合上下文发现x是矩阵,猜测函数功能是根据x的值若小于0,则对应位的x就置为0,否则直接返回原来x的值。想验证函数功能是否与自己的猜测相同,于是就自己去尝试添加激励。x = [[-2, -1, 2], [1, 2 ,-1]] print(r

2018-01-19 18:10:40 15595

原创 TensorFlow更新修改函数名

Tensorflow更新到1.0,对部分函数名进行了修改,导致之前的代码中调用的函数发生错误,程序不兼容。比如, tf.initialize_all_variables() ——> tf.global_variables_initializer()

2018-01-16 19:11:34 644

原创 因Python版本更新带来的错误集锦

python2和python3的变化很大,因此造成旧的python代码的各种运行错误。 总体来说,这些错误,大多数是由于python版本更新后,最新版的python对之前版本进行了修改更新,而且是不兼容的修改更新。 本python小白在学习网上教程时,跟着写python代码,然后运行发现了一些错误,匪夷所思,后来总算解决,记录下来,希望能对其他人有帮助。1.range()与xrange

2018-01-16 16:52:25 506

原创 基于python的机器学习人工智能入门之tensorflow / keras安装(Windows环境)

因为项目需要,研究基于机器学习的人工智能。 俗话说,工欲善其事,必先利其器。 学习人工智能,首先就要有一个开发环境,也就是写代码跑仿真的地方。 折腾了几天,终于成功建立了基于tensorflow和keras的开发环境。 中间遇到了许多问题,在同事及网络的帮助下,总算解决了,颇为不易。 虽然网上已经有很多的安装教程,但是这些教程在我的实际安装中依然出现问题,所以还是把我的安装的过程记录一下

2018-01-16 14:49:11 6424 2

原创 VHDL及Verilog,遇到的各种编译错误及修改办法

1.type mismatchsignal a : std_ulogic; signal b : std_ulogic; signal c : std_ulogic;a <= b and ( c = ‘1’);编译报错: and 左右两边类型不匹配。 b是std_ulogic,(c = ‘1’)返回值是bool类型。 所以报错。

2017-10-19 16:17:50 10055

原创 Linux中可执行文件

Linux中写脚本,运行前需要转换成可执行文件。例如: 写一个名为filename.sh的shell脚本。 运行脚本前,用命令: chmod +x filename.sh 然后就发现filename.sh变成了绿色的可执行文件。

2017-10-19 10:04:32 5535

原创 linux命令生成filelist

工程中,编译文件时,经常采用filelist列出所有需要编译的文件及路径。文件少的时候,可以直接手写/xx/xxx/a.c但是文件多了,手写效率低,易错。采用命令:(1) find -name “*.v” > filelist.f会将当前目录下及子目录中所有.v的文件及路径写到文件filelist.f中。(2) find dir -name “*.v” > filelist.f其中,dir

2017-10-18 20:02:00 13349

原创 VHDL & Verilog HDL 语言编程的经验之谈

1.最近debug代码,发现一个RAM的读有问题。 波形大意是: 首先一共给RAM写了16个数据,然后再去依次读取数据,这个时候问题就来了,前面十五个数据都能正确读出,最后一个数据非但不能正确读出,而且还显示是红色未知不确定的值(XXXXXX)。这是怎么回事?首先怀疑是没有正确写入。 去查看写入的代码及波形,并无异常。 其次,怀疑是没有正确读取,或许是读取地址有问题,读到未写值的地...

2017-07-27 20:12:40 3149

原创 IC设计笔记----记录我踩过的坑

1、Design设计功能模块。首先详细掌握模块功能。 然后定义接口信号,设计模块结构,尽可能复用逻辑资源。 最后再写代码。对于定义接口信号,多说几句。 (1)如果是一个人独自完成,那么其实定义信号接口没有那么紧迫,毕竟自己啥都知道,随时可以调整,完成代码后再完善接口定义也行。 (2)但是,如果是几个人合作,那么就必须在开始敲代码前,一定要定义好信号接口,...

2017-06-20 11:06:42 4751 1

原创 高性能CPU设计

CPU从出现到现在,已有几十年历史,经过多次迭代改进,由原始的五级流水扩展到现在的N级流水,从一次只能执行一条指令到现在的多核超标量处理器,CPU的性能得到巨大提升。当前,提升CPU的性能主要有两个方向: 第一,努力提升CPU单核core的性能,采用超标量技术,支持同时多线程; 第二,扩展多核并行计算技术;下面结合笔者的工作经验,多谈谈关于提升单核性能的看法。考核CPU的性能,就不得不考虑不同的

2017-06-15 20:26:20 2245 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除