嵌入式C语言自我修养分享课件

一.异构计算

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全息图像处理器,微软出品的全息计算芯片与设备
IPUGraphcore 公司 设计 的 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.APU

2.目前地平线使用的微架构是( )
a.X86
b.SoC
c.Cortex-A8 
d.ARM V8

填空题
1.目前的微架构领域主要包括( )和( )。
2.计算机一般采用( )和( )编址方式。
3.地平线自研处理器叫( )。
4.目前公司采用的显卡名称叫( )。

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论
宋宝华嵌入 C/C++语言精华文章集锦 C/C+语言 struct 深层探索 ............................................................................2 C++中 extern "C"含义深层探索........................................................................7 C 语言高效编程的几招...............................................................................11 想成为嵌入程序员应知道的 0x10 个基本问题 .........................................................15 C 语言嵌入系统编程修炼...........................................................................22 C 语言嵌入系统编程修炼之一:背景篇 ............................................................22 C 语言嵌入系统编程修炼之二:软件架构篇 ........................................................24 C 语言嵌入系统编程修炼之三:内存操作 ..........................................................30 C 语言嵌入系统编程修炼之四:屏幕操作 ..........................................................36 C 语言嵌入系统编程修炼之五:键盘操作 ..........................................................43 C 语言嵌入系统编程修炼之六:性能优化 ..........................................................46 C/C++语言 void 及 void 指针深层探索 .................................................................50 C/C++语言可变参数表深层探索 .......................................................................54 C/C++数组名与指针区别深层探索 .....................................................................60 C/C++程序员应聘常见面试题深入剖析(1) ..............................................................62 C/C++程序员应聘常见面试题深入剖析(2) ..............................................................67 一道著名外企面试题的抽丝剥茧 ......................................................................74 C/C++结构体的一个高级特性――指定成员的位数 .......................................................78 C/C++中的近指令、远指针和巨指针 ...................................................................80 从两道经典试题谈 C/C++中联合体(union)的使用 ......................................................81 基于 ARM 的嵌入 Linux 移植真实体验 ................................................................83 基于 ARM 的嵌入 Linux 移植真实体验(1)――基本概念 ...........................................83 基于 ARM 的嵌入 Linux 移植真实体验(2)――BootLoader .........................................96 基于 ARM 的嵌入 Linux 移植真实体验(3)――操作系统 ..........................................111 基于 ARM 的嵌入 Linux 移植真实体验(4)――设备驱动 ..........................................120 基于 ARM 的嵌入 Linux 移植真实体验(5)――应用实例 ..........................................135 深入浅出 Linux 设备驱动编程 .......................................................................144 1.Linux 内核模块..............................................................................144 2.字符设备驱动程序 ...........................................................................146 3.设备驱动中的并发控制 .......................................................................151 4.设备的阻塞与非阻塞操作 .....................................................................157

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

菠萝印象威

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值