一.异构计算

1.背景
随着物联网、大数据、人工智能时代的到来,海量的数据分析和大量复杂的运算对CPU 的算力要求越来越高,CPU 的大部分资源用于缓存逻辑控制,适合运行各种复杂的串行程序,但是单核或者多核CPU处理性能的提升空间已经达到极限了(也就是说,单靠CPU很难满足现代科技发展的需求)。

2.异构计算简介
异构计算就是在SoC 芯片内部集成不同架构的Core,比如DSP、GPU、NPU、TPU、BPU等不同架构的处理单元,各个核心协同运算,等于CPU找来了一系列的伙伴来共同协助自己的工作。

CPU适合处理分支、跳转等复杂逻辑的程序。
GPU擅长处理图片、视频数据
NPU 和FPGA以及BPU负责人工智能领域

soc芯片介绍:
一般说来, SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。
core介绍:
Intel旗下的酷睿处理器
Core(酷睿)微体系架构,其针对桌面、笔记本和服务器推出的产品代号分别是,Conroe、Merom和Woodcrest,都拥有64位处理能力,并且是双核产品

3.部分处理器介绍:
GPU (Graphic Process Unit,图形处理单元)

GPU通俗的讲就是我们所说的显卡英伟达是其发明者,它主要用来处理图像数据。显卡将数字图像信号转换为模拟信号,并输出到屏幕上,早期的显卡都是直接集成到主板 上,只充当适配器的角色。处理一些简单的图像,CPU能够轻松应对,不需要显卡的参与,随着大型3D游戏、制图和视频渲染软件的流行,数据运算量成倍增加,CPU 已经越来越力不从心,独立显卡开始承担图像处理和视频渲染的工作。GPU 天然多线程,特别适合大数据并行处理,在现在的计算机中被广泛使用,目前最火的就是NVIDIA(英伟达)

DSP (Digital Signal Processing,数字信号处理器)

世界上第一个单片DSP芯片应当是1978年AMI公司发布的S2811,1979年美国Intel公司发布的商用可编程器件2920是DSP芯片的一个主要里程碑。

DSP主要用在音频信号处理和通信领域,相
比CPU, DSP 有三个优势:

1.DSP 采用哈弗架构指令和数据独立存储并行存取,执行效率更高。
2.对指令进行优化,提高了对信号的处理效率 , DSP 有专门的硬件乘法器,可以在一个时钟周期内完成乘法运算。
3.没有冗余的逻辑电路,功耗可以做得更小。

劣势:
DSP 的缺陷是只适合做大量重复运算,无法像CPU 那样提供一个通用的平台,DSP 处理器虽然有自己的指令集和C 语言编译器,但对操作系统的支持一般。目前DSP 市场被严重蚕食,在高速信号采集处理领域被FPGA 抢去一部分市场, 目前大多数以协处理器的形式与ARM 协同工作。

FPGA (Field Programmable Gate Array,现场可编程门阵列)


Xilinx (赛灵思)于 1984 年发明了世界首款 FPGA,主要用于数据处理,在专用集成电路领域中是以一种半定制电路的形式出现。

FPGA 芯片内部集成了大量的逻辑门电路和存储器,用户可以通过VHDL, Verilog 甚至高级语言编写代码来描述它们之间的连线,将这些连线配置文件写入芯片内部,就可以构成具有特定功能的电路。

FPGA直接将硬件描述语言翻译为晶体管门电路的组合,实现特定的算法和给能,可编程逻辑器件通过配套的集成开发工具,可以随时修改代码,下载到芯片内部,重新连线生成新的功能。

工作原理:
CPU 负责采集模拟信号,通过A/D 转换,将模拟信号转换成数字信号;然后将数字信号送到FPGA 进行处理;FPGA 依靠自身硬件电路的性能优势,对数字信号进行快速处理;最后将处理结果发送回CPU 处理器,以便CPU 做进一步的后续处理。

简而言之:FPGA是一个很灵活,并且能够跟其它芯片更好适配的一个处理器,在数字芯片验证、 ASIC 设计的前期验证、人工智能领域广受欢迎。

BPU(Brain Processor Unit,大脑处理器单元)

地平线科技提出的嵌入式人工智能处理器架构,第一代是高斯架构,第二代是伯努利架构,第三代是贝叶斯架构。

BPU是一款典型的异构多指令多数据的系统,架构中心处理器是完整的系统,存储器架构设计进行了特别优化,能使数据自由传递,进行多种计算,让不同部件同时运转起来,提高AI运算的效率

BPU要做的不仅仅包括图像和视频感知,还包括语音、语义处理以及决策、规划等比较复杂比较高阶的人工智能程序

BPU架构能够在像素级别进行感知,能够更精确地分辨出路面、人体、汽车、建筑、树木等物体,进行图像分割。此外,更精准、更多路的感知结果将最终为环境的建模服务,可以从各个角度进行观测。

目前征程5芯片主要解决的三个痛点是算力浪费生态缺失数据风险

征程5芯片采用8核心ARM Cortex A55核心、两个贝叶斯架构BPU实现AI运算,还有安全岛设计,支持丰富的接口。在视频输入方面,单颗征程5芯片就能够实现16路视频输入,并且支持毫米波雷达、激光雷达、超声波雷达等多种传感器。

总结:
对于一颗自动驾驶芯片来说,最重要的就是AI计算,地平线征程5采用双核心贝叶斯架构BPU,能够实现大规模异构近存计算,以实现高效率计算;同时拥有高灵活大并发数据桥,片上带宽非常大;此外,还有脉动张量计算核心,得以实现高算力。

名称 简介
APU 加速处理器,AMD 推出的加速图像处理芯片
DPU 深鉴科技设计的深度学习处理器
EPU 情绪处理单元,通过情绪合成引擎让机器人具有情绪
FPU 浮点计算单元,通用处理器中的浮点运算模块
HPU 全息图像处理器,微软出品的全息计算芯片与设备
IPU Graphcore 公司 设计 的 AI 处理器
KPU 杭州嘉楠耘智推出的人工智能边缘计算芯片
MPU 微处理器
NPU 神经网络处理器
OPU 光流处理器
TPU 张量处理器,Google 公司推出的人工智能专用处理器
VPU 视频处理单元,主要用于视频硬解码
WPU 可穿戴处理片上系统芯片
XPU 百度与Xihnx 公司 在 2017 年Hotchips 大会上发布的FPGA 智能云加速
ZPU 由挪威Zylin 公司 推 出的一款 32 位开源处理器

二.总线和地址

CPU 与内存 、 各种外部设备等IP 之间都是通过总线相连,CPU 如果想访问内存,或控制外部设备的运行是通过地址访问。

1.地址简介
地址的本质就是由CPU 管脚发出的一组地址控制信号,这些信号是由CPU 管脚直接发出的,因此也被称为物理地址

在带有MMU的CPU 平台下,程序运行一般使用的是虚拟地址, MMU 会把虚拟地址转换为物理地址,然后通过CPU 管脚发送出去,地址信号通过译码,选中指定的内存存储单元,再进行读写操作。

MMU:
MMU是内存管理单元,它是一种负责处理CPU的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、CPU高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换。

译码器
一组输入信号,通过译码转换,会选中一个输出信号,输出信号可以是高电平、低电平,甚至是一个脉冲。计算机的内存简单点理解,其实就是将一系列存储单元和译码器组装在一起。内存中包含很多存储单元,为了方便管理,我们需要将这些存储单元进行编号管理,每一个存储单元对应一个编号。当CPU 想访问其中一个存储单元时,可通过CPU 管脚发出一组信号,经过译码器译码,选中与这个信号对应的存储单元,然后就可以直接读写这块内存了。CPU 管脚发出的这组信号,也就是存储单元对应的编号,即地址

2.总线简介
如果CPU 和内存RAM 直接相连,那么内存RAM 中的每一个存储单元的地址也就确定了。

现在的CPU一般通过总线与内容RAM、外部设备想连。CPU 和各个设备之间可以通过共享总线的方式进行通信。

总线其实就是各种数字信号的集合,包括地址信号、数据信号、控制信号等,由于遵循相同的总线协议和通信标准,不同厂家生产的显卡、CPU、鼠标、键盘等外设都能够即插即用。

也就是说CPU通过一些信号来和内存或者设备进行联系

3.总线编址方式
内存RAM 和外部设备都挂到同一个总线上,计算机一般采用两种编址 方式:统一编址和独立编址

统一编址:内存 RAM 和外部设备共享CPU 的寻址空间。
在统一编址模式下,CPU 可以像操作内存一样去读写外部
设备的寄存器和内部RAM。

独立编址:内存RAM 和外部设备的寄存器独立编址,分别占用不同的地址空间。

三.指令集与微架构

1).什么是指令集?
图灵原型机的基本思想是:任何复杂的运算都可以分解为有限个基本指令的组合来完成。 CPU的设计是只支持有限个基本的运算指令,如加、减、乘、与、或、 非、移位、跳转等。这些指令通过不同的组合,可以构成不同的指令序列(程序) ,实现不同的逻辑功能。

不同架构的处理器支持的指令类型是不同。

ARM 架构的处理器只支持ARM 指令,X86架构的处理器只支持X86 指令。如果你在ARM 架构的处理器上运行X86 指令,就无法运行,报未定义指令的错误,因为ARM 架构的处理器只支持ARM 指令集中定义的指令。

指令集作为CPU 和编译器的设计规范和参考标准,主要用来定义指令的格式、操作数的类型、 寄存器的分配、地址的格式等

CPU 支持的有限个指令的集合,我们称之为指令集。
指令集是芯片设计者制定的一种规范标准

2).指令集的基本构成

指令集不是一成不变的,随着迭代更新会不断扩充新的指令。
例如ARM指令集,已经从ARM V1发展到目前的ARM V8。

名称 介绍
ARM V1 初版本, 26 位寻址空间,无乘法指令,没有商业化。
ARM V2 加了乘法指令,支持协处理器。
ARM V3 址范围从26 位扩展到32 位。
ARM V4 次增加Thumb 指令集。
ARM V5 加了增强型DSP 指令、 Java 指令 。
ARM V6 首次增加60 多条SIMD 指令。
ARM V7 增加长乘法指令、NEON 指令。
ARM V8 首次增加64 位指令集、寄存器数量增加到31 个。

什么是微架构?
微架构,也就是处理器架构指令集在CPU处理器内部的具体硬件电路的实现,我们就称为微架构

设计微架构需要考虑的问题:
1.处理器是否支 持分支预测?
2.单发射还是多发射?
3.顺序执行还是乱序执行
4.流水线需要多少级?
5.主频需要多高?
6.Cache 需要多大?
7.需要几级Cache?

根据不同的配置选项,我们可以基于一套指令集设计出不同的微架构。

在X86 处理器领域, 目前能获得X86 指令集授权,并基于该指令集设计微架构和处理器的厂商有三家: Intel、AMD 和上海的兆芯

这三家厂商一般会根据新版本的X86 指令集设计出各自的
微架构,然后基于各自的微架构设计出不同的CPU。

X86微架构的缺点:
除了上述三家公司,其他公司一般无法获得授权去设计和生产自己的X86 处理器。

ARM 则不同,通过开放ARM 指令集授权,其他公司可以基于授权的指令集去设计自己的微架构和SoC芯片,或者基于 ARM 官方的微架构直接去设计自己的SoC处理器。

所以微架构一般也称为CPU内核。

题目:
选择题:
1.以下哪个是图形处理单元( )
a. IPU     b.VPU    c.GPU    d.APU2.目前地平线使用的微架构是( )
a.X86
b.SoC
c.Cortex-A8
d.ARM V8填空题
1.目前的微架构领域主要包括( )和( )。
2.计算机一般采用( )和( )编址方式。
3.地平线自研处理器叫( )。
4.目前公司采用的显卡名称叫( )。

嵌入式C语言自我修养分享课件相关推荐

  1. 嵌入式C语言自我修养:从芯片、编译器到操作系统(附送书籍)

    关注+星标公众号,不错过精彩内容 来源 | 宅学部落 最近,阅读了王工(王利涛)赠送的一本由他编著的书籍<嵌入式C语言自我修养>,感觉写的挺不错.今天分享一下这本书籍<嵌入式C语言自 ...

  2. 每日一书丨嵌入式C语言自我修养:从芯片、编译器到操作系统

    最近,阅读了王工(王利涛)赠送的一本由他编著的书籍<嵌入式C语言自我修养>,感觉写的挺不错.今天分享一下这本书籍<嵌入式C语言自我修养>:从芯片.编译器到操作系统. 从芯片.编 ...

  3. 跟涛哥一起学习嵌入式 33:《嵌入式C语言自我修养》书稿V1.0版

    经常有网友要我推荐一些关于嵌入式方面的书,尤其是一些转行学嵌入式的朋友,该看那些书能快速构建嵌入式学习所需要的知识体系呢?嵌入式是一门交叉学科,没有足够的知识储备,上来就学习的话,往往也就成了走过场, ...

  4. 嵌入式C语言自我修养:从芯片、编译器到操作系统-习题、笔记

    前沿 C语言测试(1):基本概念考查 什么是标识符.关键字和预定义标识符? 三者有何区别? 标识符(Identifier):由程序员定义,用来表示变量,包括了变量名.函数名.宏名.结构体名等. 标识符 ...

  5. 嵌入式C语言自我修养——从芯片、编译器到操作系统

    专门为嵌入式读者打造的C语言进阶学习.学习重点不再是C语言的基本语法,而是和嵌入式.C语言相关的一系列知识. 作者以C语言为切入点,分别探讨了嵌入式开发所需要的诸多核心理论和技能,力图帮助读者从零搭建 ...

  6. 嵌入式C语言自我修养 (11):有一种函数,叫内建函数

    11.1 什么是内建函数 内建函数,顾名思义,就是编译器内部实现的函数.这些函数跟关键字一样,可以直接使用,无须像标准库函数那样,要 #include 对应的头文件才能使用. 内建函数的函数命名,通常 ...

  7. 嵌入式C语言自我修养 04:Linux 内核第一宏:container_of

    4.1 typeof 关键字 ANSI C 定义了 sizeof 关键字,用来获取一个变量或数据类型在内存中所占的存储字节数.GNU C 扩展了一个关键字 typeof,用来获取一个变量或表达式的类型 ...

  8. 嵌入式C语言自我修养 (04):Linux 内核第一宏:container_of

    4.1 typeof 关键字 ANSI C 定义了 sizeof 关键字,用来获取一个变量或数据类型在内存中所占的存储字节数.GNU C 扩展了一个关键字 typeof,用来获取一个变量或表达式的类型 ...

  9. 嵌入式C语言自我修养 08:变参函数的格式检查

    8.1 属性声明:format GNU 通过 __atttribute__ 扩展的 format 属性,用来指定变参函数的参数格式检查. 它的使用方法如下: __attribute__(( forma ...

  10. 跟涛哥一起学嵌入式 20:后ARM时代,嵌入式工程师的自我修养

    1 嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox ...

最新文章

  1. 用于计算机视觉领域的python第三方库是什么_大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接...
  2. 为什么 Kubernetes 变得如此流行(2020版)
  3. 小师妹学JVM之:JDK14中JVM的性能优化
  4. 20220215-CTF-MISC-BUUCTF-镜子里面的世界-stegsolve工具的使用- Data Extract
  5. EntityFramework 动态构造排序 FuncIQueryableT, IOrderedQueryableT Dynamic
  6. salt把返回写入到mysql
  7. CSS基础——CSS样式的引入和规则【学习笔记】
  8. rapidxml解析xml文档
  9. ubuntu安装transmission下载BT
  10. matlab平滑处理例题,(完整word版)matlab中smooth函数平滑处理数据实例
  11. 宽带远端服务器无响应什么意思,宽带远程服务器无响应
  12. FPS显示和修改——unity3D
  13. 如何把excel表格的数据导入到MATLAB中去
  14. 紫光武汉新芯珠联璧合 引领存储“芯”篇章
  15. 微信公众号的附件链接怎么弄
  16. 体脂秤方案开发脂肪秤方案设计
  17. 常见的分类算法及分类算法的评估方法
  18. 在使用谷歌时发现一个诡异问题cookie传不过去
  19. ZUCC_编译语言原理与编译_实验04 语言与文法
  20. 关于神经网络中梯度概念的浅显易懂解释

热门文章

  1. 太牛了! GitHub大牛呕心沥血整理的5000页Java学习手册文档
  2. 【Modelsim】下载安装教程
  3. mysql数据库基础知识--一分钟让你数据库入门(sql基础语法篇)
  4. python萤火虫算法_萤火虫算法-python实现
  5. 清华大学刘知远:在深度学习时代用HowNet搞事情
  6. 9008刷机教程oppo_手机黑砖9006/9008救砖教程 通用救砖模式刷机修复方法
  7. JSinput上传图片文件转base64
  8. 用matlab做bp神经网络预测,matlab人工神经网络预测
  9. SQL替换字段中一部分字符串
  10. 算法设计与分析(第2版)屈婉玲 刘田 张立昂 王捍贫编著 第五章课后习题答案