【计组】FPGA和ASIC--《深入浅出计算机组成原理》(七)

news2024/11/15 21:01:27

 课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 

目录

一、FPGA 

(一)FPGA 的解决方案步骤

1、用存储换功能实现组合逻辑

 2、对于需要实现的时序逻辑电路,在 FPGA 里面直接放上 D 触发器,作为寄存器

3、可编程逻辑布线

 二、ASIC

(一)选择ASCI还是FPGA

 (二)解读TPU--拆解一块ASCI芯片

1、深度学习模型的训练和推断有什么不同

2、TPU的设计

3、TPU的细节优化


一、FPGA 

PAL(Programmable Array Logic,可编程阵列逻辑),只能“编程”一次,把预先写好的程序一次性烧录到硬件里面,之后就不能再修改了。

FPGA,现场可编程门阵列(Field-Programmable Gate Array):可以通过编程,来控制硬件电路的芯片。

(一)FPGA 的解决方案步骤

1、用存储换功能实现组合逻辑

在实现 CPU 的功能的时候需要完成各种各样的电路逻辑。在 FPGA 里,这些基本的电路逻辑,不是采用布线连接的方式进行的,而是预先根据软件里设计的逻辑电路,算出对应的真值表然后存储到一个叫作 LUT(Look-Up Table,查找表)的电路里面。这个 LUT 呢,其实就是一块存储空间,里面存储了“特定的输入信号下,对应输出 0 还是 1”(存储各种情况下的结果,使用的时候根据实际需要查找结果)。

 2、对于需要实现的时序逻辑电路,在 FPGA 里面直接放上 D 触发器,作为寄存器

和 CPU 里的触发器没有本质的不同。不过,会把很多个 LUT 的电路和寄存器组合在一起,变成逻辑簇(Logic Cluster)。在 FPGA 里,这样组合了多个 LUT 和寄存器的设备,也被叫做 CLB(Configurable Logic Block,可配置逻辑块)

3、可编程逻辑布线

通过 LUT 和寄存器,我们能够组合出很多 CLB,FPGA 通过可编程逻辑布线,来连接各个不同的 CLB,最终实现需要实现的芯片功能。

 二、ASIC

 ASIC(Application-Specific Integrated Circuit),专用集成电路,为专门用途的场景,单独设计的芯片。如手机里专门用在摄像头里的芯片,录音笔里专门处理音频的芯片。

因为 ASIC 是针对专门用途设计的,跟CPU比起来,它的电路更精简,通常能耗也更低,单片的制造成本也更低。

ASIC 的一个典型设计思路,就是把确定的程序指令流程,变成固定的硬件电路

(一)选择ASCI还是FPGA

FPGA也可以做ASIC的事情,但它在硬件上有点浪费。一个 LUT 电路设计出来之后,既可以实现与门,又可以实现或门,自然用到的晶体管数量,比单纯连死的与门或者或门的要多得多。同时,因为用的晶体管多,它的能耗也比单纯连死的电路要大,单片 FPGA 的生产制造的成本也比 ASIC 要高不少。

FPGA的优点在于,它没有硬件研发成本。ASIC 的电路设计,需要仿真、验证,还需要经过流片(Tape out),变成一个印刷的电路版,最终变成芯片。整个从研发到上市的过程,最低花费也要几万美元,高的话,会在几千万乃至数亿美元。更何况,整个设计还有失败的可能。所以,如果设计的专用芯片,只是要制造几千片,那买几千片现成的 FPGA,可能远比花上几百万美元,来设计、制造 ASIC 要经济得多。

到底使用 ASIC 这样的专用芯片,还是采用 FPGA 这样可编程的通用硬件,核心的决策因素还是成本。不过这个成本,不只是单个芯片的生产制造成本,还要考虑总体拥有成本(Total Cost of Ownership),也就是说,除了生产成本之外,要把研发成本也算进去。如果只制造了一片芯片,那么成本就是“这枚芯片的成本 + 为了这枚芯片建的生产线的成本 + 芯片的研发成本”

单个 ASIC 的生产制造成本比 FPGA 低,ASIC 的能耗也比能实现同样功能的 FPGA 要低。能耗低,意味着长时间运行这些芯片,所用的电力成本也更低。但是,ASIC 有一笔很高的 NRE(Non-Recuring Engineering Cost,一次性工程费用)成本。这个成本,就是 ASIC 实际“研发”的成本。只有需要大量生产 ASIC 芯片的时候,才能摊薄这份研发成本。

 (二)解读TPU--拆解一块ASCI芯片

作为过去几年最知名、最具实用价值的ASCI,TPU是在深度学习的热潮里应运而生的。

深度学习中,计算量最大的不是进行深度学习的训练,而是深度学习的推断部分。

推断部分是指完成深度学习训练之后,把训练完成的模型存储下来。这个模型是许许多多个向量组成的参数。根据这些参数计算输入的数据,最终得到一个计算结果。这个推断过程,可能是在互联网广告领域,去推测某一个用户是否会点击特定的广告;也可能是我们在经过高铁站的时候,扫一下身份证进行一次人脸识别,判断一下是不是你本人。

虽然训练一个深度学习的模型需要花的时间不少,但是实际在推断上花的时间要更多。所以,第一代的 TPU,首先优化的不是深度学习的模型训练,而是深度学习的模型推断。

1、深度学习模型的训练和推断有什么不同

第一,深度学习的推断工作更简单,对灵活性的要求也就更低。模型推断的过程,只需要计算一些矩阵的乘法、加法,调用一些类似Sigmoid 或者 RELU 的激活函数。这样的过程可能需要反复进行很多层,但也只是这些计算过程的简单组合。

第二、推断的性能首先要保障的指标是响应时间。计算机关注的性能指标,有响应时间(Response Time)和吞吐率(Throughput)。模型训练的时候,只需要考虑吞吐率问题就行了。因为一个模型训练少则好几分钟,多的话要几个月。而推断过程,像互联网广告的点击预测,我们往往希望能在几十毫秒乃至几毫秒之内就完成,而人脸识别也不希望会超过几秒钟。很显然,模型训练和推断对于性能的要求是截然不同的。

第三、深度学习的推断工作,希望在功耗上尽可能少一些。深度学习的训练,对功耗没有那么敏感,只是希望训练速度能够尽可能快,多费点电就多费点儿了。而深度学习的推断,要 7×24h 地跑在数据中心里面,对应的芯片要大规模地部署在数据中心。一块芯片减少 5% 的功耗,就能节省大量的电费。而深度学习的训练工作,大部分情况下只是少部分算法工程师用少量的机器进行。很多时候,只是做小规模的实验,尽快得到结果,节约人力成本。少数几台机器多花的电费,比起算法工程师的工资来说,只能算九牛一毛了。

2、TPU的设计

TPU 并没有设计成一个独立的“CPU“,而是设计成一块像显卡一样,插在主板 PCI-E 接口上的板卡,甚至没有设计自己对应的取指令的电路,需要通过 CPU才能向 TPU 发送需要执行的指令。

TPU模块图:

芯片模块图里面,有单独的矩阵乘法单元(Matrix Multiply Unit)、累加器(Accumulators)模块、激活函数(Activation)模块和归一化 / 池化(Normalization/Pool)模块。而且,这些模块是顺序串联在一起的。

这是因为,一个深度学习的推断过程,是由很多层的计算组成的。而每一个层(Layer)的计算过程,就是先进行矩阵乘法,再进行累加,接着调用激活函数,最后进行归一化和池化。

控制电路(Control)只占了 2%。是因为TPU 的计算过程基本上是一个固定的流程。不像 CPU ,有各种复杂的控制功能,比如冒险、分支预测等等。

比于矩阵乘法单元,累加器、实现激活函数和后续的归一 / 池化功能的激活管线(Activation Pipeline)也用得不多。是因为,在深度学习推断的过程中,矩阵乘法的计算量是最大的,计算也更复杂,所以比简单的累加器和激活函数要占用更多的晶体管。

统一缓冲区(Unified Buffer)由 SRAM 这样高速的存储设备组成。SRAM 一般被直接拿来作为 CPU 的寄存器或者高速缓存,比起内存使用的 DRAM 速度要快上很多,但是因为电路密度小,所以占用的空间要大很多。统一缓冲区之所以使用 SRAM,是因为在整个的推断过程中,它会高频反复地被矩阵乘法单元读写,来完成计算。

3、TPU的细节优化

除了整个 TPU 的模块设计和芯片布局之外,TPU 在各个细节上也充分考虑了自己的应用场景。譬如矩阵乘法单元(Matrix Multiply Unit),矩阵乘法单元没有用 32 Bits 来存放一个浮点数,而是只用了一个 8 Bits 来存放浮点数。是因为在实践的机器学习应用中,会对数据做归一化(Normalization)和正则化(Regularization)的处理。这两个操作会使得深度学习里面操作的数据都不会变得太大。通常来说呢,能控制在 -3 到 3 这样的范围之内。

 课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业清洗企业资质证书

工业清洗在美国、日本、新加坡、西欧等国发展较早,已经建立起专业化程度很高的化学清洗体系。我国的工业清洗发展很快,目前已经初步形成了新兴的清洗产业网络,清洗技术也已达到国际先进水平,具备了清洗大型设备的能力和经验。 工业…

CANoe-诊断控制台实现同一个目标ECU的物理寻址和功能寻址

接触过UDS诊断的人应该知道,诊断通信有两种方式:物理寻址和功能寻址。那什么是物理寻址和功能寻址呢? 简单点说,物理寻址是单播,功能寻址是多播。具体来说,由于UDS诊断通信的C/S模式(客户端Tester/服务器ECU),物理寻址是Tester发送的诊断请求,只有一个目标ECU回复诊…

MySQL模块

目录 1.在项目中操作数据库的步骤 2.安装与配置 mysql 模块 1.安装模块 2.配置mysql模块 3.测试模块是否正常工作 3.使用 mysql 模块操作 MySQL 数据库 查询数据: 插入数据: 快捷插入数据: 更新数据: 快捷更新数据&am…

node.js(3)--线程和进程、node简介

目录 进程和线程 Node.js 简介 历史 进程和线程 进程 负责为程序的运行提供必备的环境就相当于工厂中的车间(专门存放代码的地方) 线程 计算机中最小的计算单位,线程负责进程中的程序就相当于工厂中的工人 单线程 JS是单线程 多线程 …

ansible (第三天)

2.6 lineinfile模块 lineinfile模块,确保"某一行文本"存在于指定的文件中,或者确保从文件中删除指定的"文本"(即确保指 定的文本不存在于文件中),还可以根据正则表达式,替换"某一…

测牛学堂:软件测试python基础学习之数据类型详解(一)

python数据类型详解 为什么需要数据类型呢? 我们人脑可以轻松的区别不同类型的数据,比如看到1你就知道是数字,但是计算机做不到。 计算机工作的过程就是完成不同的类型的计算,例如做数学运算,做文件存储,逻…

【技术分享】Windows平台低延迟RTMP、RTSP播放器接口设计探讨

背景我们看过了太多介绍RTSP、RTMP播放相关的技术资料,大多接口设计简约,延迟和扩展能力也受到一定的局限,好多开发者希望我们能从接口设计的角度,大概介绍下大牛直播SDK关于RTMP、RTSP播放器开发设计,本文以Windows平…

redis 运维讲解02

一、数据持久化 1、为什么要持久化 redis 重启后,redis 存在内存数据中数据丢失,不管之前是多少G数据,秒丢,而且无法恢复,数据在内存中 [root86-5-master ~]# redis-cli -p 6379 127.0.0.1:6379> MSET k1 v1 k2…

浏览器相关知识

本文主要进行浏览器相关知识的整理总结。 一、浏览器的存储 浏览器的存储包括cookie,session,LocalStorage,sessionStorage,indexedDB。 作用cookiesessionsessionStorageLocalStorageindexedDB储存时间设置或不设置默认30分钟仅…

就只有这么简单?全自动加药装置远程维护解决方案

一、行业背景说起工业生产,给人们的普遍印象都是浓烟,废水,环境污染。尤其是石油、化工、发电厂等一些具有大型设备的地方,确实常常都会有浓烟和污水产出,让人看了恨不得离得越远越好!但是随着现代科技的发…

java和vue开发的电子书系统自动检测敏感词小说网站

简介 电子书系统,注册用户上传txt,系统自动检测敏感词汇并且自动生成章节。管理员审核电子书,管理电子书分类和用户,评论等。注册用户可以搜索浏览电子书,在线阅读和下载电子书。 演示视频:https://www.b…

Java设计模式-单例模式Singleton

介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如 Hibernate 的 SessionFactory,它充当数据存储源的代理&#xff0…

系分 - 案例分析 - 系统规划

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分 - 案例分析 - 系统规划典型例题 1题目描述参考答案典型例题 2题目描述参考答案典型例题 3题目描述参考答案系分 - 案例分析 - 系统规划 典型例题 1 题目描述 某软件开发企业受对外贸易公司委托开发…

STM32F429连接USB飞行摇杆

本文介绍如何使用stm32连接usb接口的飞行摇杆。开发环境硬件: STM32F429IGT6开发板,USB接口的飞行摇杆。软件:STM32CubeIDE 1.11仿真器:stlink参考书:《圈圈教你玩USB》USB设备描述符一个USB设备只有一个设备描述符。USB主机通过不…

springboot3.0+GraalVM搭建云原生环境

1.首先下载安装GraalVM 选择java17.windows(amd64),最好选择VPN下载 下载完成以后解压,如图 然后配置环境变量 配置GRAALVM_HOME,如图 然后在PATH里面添加 %GRAALVM_HOME%\bin 配置完成以后,在cmd里面执行java -version,可以看到jdk已经是…

Apache Shiro教程(2)

Shiro实战教程 1、权限的管理 1.1、什么是权限管理 1、基本上涉及到用户参与的系统都需要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资…

【 uniapp - 黑马优购 | 加入购物车】如何配置 vuex、加入购物车功能并持久化

个人名片: 🐼作者简介:一名大二在校生,讨厌编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…

ABP VNext 的日志机制 + SeriLog

** ABP VNext 的日志机制 ** 正用ABP VNext做个系统,由于框架默认带来日志处理机制,开发阶段基本能用,也一直没有去动它,快要上线了,思考了一下正式环境的日志管理流程,由于系统不大,预计访问…

第一章.机器学习基本概念

第一章.机器学习基本概念 1.1 第一章.机器学习基本概念 机器学习的本质就是:寻找一个函数。 1.不同种类的函数 1).Regression:The function outputs a scalar 说明:根据今天的PM2.5的一些参数来预测明天PM2.5值 2).Classification:Given option(classes…

STL vector 模拟实现

vector 概述 vector 的数据结构安排及操作方式,与原生数组十分相似,两者唯一的差别在于空间运用的灵活性。原生数组是静态空间,一旦配置了就不能改变大小;vector 是动态空间,可以在插入过程中动态调整空间大小。vecto…