当前位置: 首页 > news >正文

2023.6.8小记——嵌入式系统初识、什么是ARM架构?

今天还挺充实的,早上在图书馆本来想学一下notion,结果看李沐老师的动手深度学习看到十点半,在电脑上配置了李沐老师的d2l和jupyter,等后续有时间的时候再继续学。

下午看了一下notion的使用方法,这玩意初学者用起来是真的麻烦,如果每天没有很多事情需要schedule的话,用这个我认为反而是个累赘,还不如mac自带的提醒事项。

然后去健身房练了腿🏋️‍♀️,100kg深蹲,再做两组固定器械就去洗澡了。晚上在图书馆复习了一下嵌入式,最近因为看老石的视频,感觉复习嵌入式的时候也有了些动力。

现在回来写一下一天的总结~ 👇👇👇


1. 什么是嵌入式系统?

老师PPT中给出的定义是:

以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量、功耗严格要求的专用计算机系统。

简单来说,就是含有处理器的、专用的软硬件系统,具有自主的信息处理能力。

看一下嵌入式系统的体系结构:
请添加图片描述

其中,硬件层是使用硬件描述语言——verilog完成的电路设计,将代码烧到FPGA上,快速进行调试。除了FPGA之外,还有专用集成芯片ASIC的存在。FPGA的速度没有ASIC快,但是可以快速成品而且价格便宜。因此在当前行业里,FPGA几乎是所有电子系统的必要部件。

2. 嵌入式系统的两种设计方法

分别是传统设计方法和系统级设计方法。

在传统设计中,硬件和软件是分离设计的,过程如下:
请添加图片描述

而在系统级设计方法中,强调软硬件的协同设计和系统整合,可以更好地管理复杂性并提高设计效率。

3. 什么是ARM?

我还是想引用一下chatgpt对ARM的解释,我觉得写的很不错:

ARM 的全称是 “Advanced RISC Machines”,意为 “高级精简指令集计算机”。ARM 是一种广泛使用的处理器架构和系列,由 ARM Holdings(现为 Arm Limited)开发和授权给各个芯片制造商使用。

ARM 架构采用精简指令集计算机(Reduced Instruction Set Computing,RISC)的设计理念,旨在提供高效、低功耗的处理器解决方案。ARM 处理器广泛应用于移动设备、嵌入式系统、智能手机、平板电脑、物联网设备和消费电子产品等领域。

ARM 提供了多个处理器系列,包括 Cortex-A 系列、Cortex-R 系列和 Cortex-M 系列。Cortex-A 系列用于高性能应用,如移动设备和嵌入式系统;Cortex-R 系列用于实时应用,如汽车电子和工业控制;Cortex-M 系列用于低功耗、低成本的嵌入式系统,如微控制器和传感器设备。

复习之后,我认为ARM最大的特点就是:

  • 采用精简指令集,用简单的指令实现复杂的功能
  • 体积小、低功耗、低成本、高性能
  • 支持thumb(16位,半字)和arm(32位,一个字)的双指令集
  • 大量使用寄存器,指令执行速度快
  • 寻址方式简单
  • 指令长度固定

迄今为止,arm定义了8个版本,用1-8来表示。每一个版本下又有不一样的额外版本。命名规则如下:
请添加图片描述
请添加图片描述

其中,老师要求重点掌握的是ARM7和ARM9。

ARM7的主要特点如下:

  • 采用冯诺依曼结构,数据存储器和指令存储器合并到一起
  • 采用三级流水,包含:取指、译码、执行
  • 其中,执行包含了很多操作,如移位操作、读通用寄存器内容、输出结果、写通用寄存器等。

这就导致三级流水存在很严重的问题:执行单元的工作占用很多时钟周期,并且数据存储器和指令存储器的合并会导致流水线阻断的情况,从而影响流水性能。

所以引入了采用五级流水的ARM9,将数据存储器和指令存储器给分开

其中,五级流水的功能如下:
请添加图片描述

本质就是把原来执行单元所做的工作给细分了两个出来,一个是存储器访问,一个是寄存器回写,这样就减少了每个时钟周期内必须完成的工作。
同时将数据存储器和指令存储器给分开也解决了三级流水中访存在指令执行阶段的延迟问题。


今天时间不早了,就先写那么多,没有把复习的内容全部写完,我发现上面写的东西还是过多了,有点不够精简。但是我又觉得每部分都比较重要,唉。。。

http://www.lryc.cn/news/93171.html

相关文章:

  • 分布式运用之ELK企业级日志分析系统
  • 【华为OD机试真题 C语言】8、停车场车辆统计 | 机试真题+思路参考+代码解析
  • c++ MES 对接(XML、JSON、SOAP)
  • idea导入java web项目带jar
  • 【第55天|● 392.判断子序列 ● 115.不同的子序列 】
  • Dockerfile创建镜像
  • 基于 opencv 的人脸识别上课考勤系统,附源码,可作为毕业设计
  • .editorconfig 配置
  • Spring 高级依赖注入 —— Bean的延迟依赖查找功能,ObjectFactory 和 ObjectProvider
  • VSCode--Config
  • 代码随想录刷题第48天|LeetCode198打家劫舍、LeetCode213打家劫舍II、LeetCode337打家劫舍III
  • C# NTS 获取MuliiLineString中的所有线
  • CodeWhisperer插件使用体验
  • 机器学习笔记 - 多实例学习(MIL)弱监督学习
  • SQL Server 2008 定时自动备份和自动删除方法
  • 代码生成器实现
  • 【Python基础】Python函数(基本函数)
  • Vue3 + TS + Vite —— 大屏可视化 项目实战
  • EasyExcel 批量导入并校验数据
  • 亚马逊、Allegro卖家建立属于自己的测评系统,实现批量优质账号养成
  • springboot的目录结构作用
  • 微信小程序基础使用-请求数据并渲染
  • 代码随想录训练营Day55| 392.判断子序列 ;115.不同的子序列
  • 网络作业9【计算机网络】
  • C++ QT 上传图片至mysql数据库
  • 2023去水印小程序saas系统源码修复独立版v1.0.3+uniapp前端
  • 【ChatGPT】数据科学 ChatGPT Cheat Sheet 书籍分享(阿里云盘下载)
  • 使用 Docker-compose 搭建lnmp
  • chatgpt赋能python:Python中的矩阵合并方法:介绍和使用方法
  • Java动态代理:优化静态代理模式的灵活解决方案