stm32学习-嵌入式微处理器指令集架构(代码片段)

yangyu-iot yangyu-iot     2023-04-02     212

关键词:

指令集架构

  1. 指令和指令系统

    • 指令:微处理器依靠指令来进行计算和控制系统,指令是微处理器能够直接识别的底层机器编码。
    • 指令系统:微处理器在设计时规定了一系列与其硬件电路相配合的指令系统,称之为“指令集”或“指令集架构”(简称ISA)
  2. 指令集架构:

    • 计算机体系结构中与程序设计相关的一部分,包含了一系列的机器指令,基本数据类型,寄存器,寻址模式,存储体系,终端和异常处理等。

    • 是计算机软硬件之间的接口,整个计算机系统建立在指令集架构之上。

    • 每个指令集架构都有各自的开发生态圈(ECO-System),包括芯片设计公司、软件开发环境提供商、嵌入式操作系统提供商、中间件提供商、高校研究人员还有开源社区等

    • 可以分成复杂指令集(CISC)、精简指令集(RISC)、超长指令字指令集(VLIW)等

      • VLIW:将多条指令放入一个指令字中来实现指令级并行处理,从而提高运算效率。
      • CISC:通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改成用硬件的指令系统来实现,以此来提高计算机的执行速度。特点:(1)指令数目多且复杂,每条指令的长度不相等;(2)处理效率高但通用性和运行速度低
      • RISC:简化计算机指令功能,使指令的平均执行周期减少,从而提高计算机的工作主频。特点:(1)指令数目少,指令采用相同的字节长度;(2)寻址方式简化,大部分采用寄存器寻址;(3)主要采用寄存器间的数据操作;(4)简化处理器结构;(5)使用处理器并行技术,适合于流水线、超级流水线和超标量技术
    • 随着最近几年的发展,CISC和RISC指令集架构也在相互融合

  3. 几种常见的指令集架构:

    • X86:Intel公司主导,目前个人计算机等通用计算机系统的主流CISC架构,
    • ARM:ARM公司主导,嵌入式市场的主流RSIC架构,全球使用最多的32位嵌入式RISC处理器架构。
    • MIPS:”无内部互锁流水线的微处理器“,是一种精简指令集架构。在路由器、网关、机顶盒和游戏机中应用较多。
    • Power ISA:精简指令集架构。在汽车电子领域、网络通信、游戏平台和部分FPGA芯片中应用。
    • 8051:8位CISC架构
    • AVR:RISC架构
  4. Intel公司推出的Atom系统芯片是面向嵌入式应用市场,是采用x86 IA-32intel-64可变指令长度的复杂指令集架构的微控制器。

ARM

技术图片
  1. ARMv1架构:诞生于1985年,该版架构只在原型机ARM1出现过,只有26位的寻址空间(64MB),没有用于商业产品。

    ARMv2架构:诞生于1986年,首颗量产的ARM处理器ARM2就是基于该架构,包含了对32位乘法指令和协处理器指令的支持,但同样仍为26位寻址空间。其后还出现了变种ARMv2a,ARM3即采用了ARMv2a,是第一片采用片上Cache的ARM处理器。

    ARMv3架构:诞生于1990年,第一个采用ARMv3架构的微处理器是ARM6(610)以及ARM7,其具有片上高速缓存、MMU和写缓冲,寻址空间增大到32位(4GB)。

  2. ARMv4架构:诞生于1993年,ARM7(7TDMI)、ARM8、ARM9(9TDMI)和StrongARM采用了该架构。ARM在这个系列中引入了T变种指令集,即处理器可工作在Thumb状态。

    Thumb是一种16位的指令集模式。在Thumb模式下,其较短的操作码能提供更好的编码密度,从而能有效地使用有限的存储器带宽。ARM后来的架构都采用了Thumb技术。

  3. 从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:

    • ARM状态:此时处理器执行32位的字对齐的ARM指令;
    • Thumb状态:此时处理器执行16位的、半字对齐的Thumb指令。
  4. ARMv5架构:诞生于1998年,ARM7(EJ)、ARM9(E)、ARM10(E)和Xscale采用了该架构,这版架构改进了ARM/Thumb状态之间的切换效率。此外还引入了DSP指令和支持JAVA。

    • Jazelle技术通过硬件加速运行Java Bytecode。
    • VFP(矢量浮点)协处理器,提供单精度和多精度浮点运算能力,并完全兼容于ANSI/IEEE的二进制浮点算术标准。VFP提供了大多数适用于浮点运算的应用,如语音压缩与解压,3D图像以及数字音效等等。
  5. ARMv6架构:诞生于2001年,ARM11采用的是该架构,这版架构强化了图形处理性能。通过追加有效进行多媒体处理的SIMD将语音及图像的处理功能大大提高。此外ARM在这个系列中引入了混合16位/32位的Thumb-2指令集。

    • SIMD:单指令多数据。
    • Thumb-2 Mixed ISA:Thumb-2混合长度指令集。Thumb-2扩充了16位Thumb指令集,增加了额外的32位Thumb指令,微处理器无需在和Thumb状态之间来回切换。
    • TrustZone:专用的安全内核,提供硬件的存储控制来防止机密信息泄露。
  6. ARMv7架构:诞生于2004年,从这个时候开始ARM以Cortex来重新命名处理器,Cortex-M3/4/7,Cortex-R4/5/6/7,Cortex-A8/9/5/7/15/17都是基于该架构。该架构包括NEON技术扩展,可将DSP和媒体处理吞吐量提升高达400%,并提供改进的浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。

    • “A”系列:面向尖端的基于虚拟内存的操作系统和用户应用;
    • “R”系列:针对实时系统;
    • “M”系列:针对微控制器;
    • NEON技术:高级的SIMD扩展指令集,结合64位和128位的单指令多数据指令集,主要针对多媒体和信号处理,具有标准的加速功能;
    • Virtualization:虚拟化的扩展,从而实现虚拟机处理所需要的硬件加速功能,可以同时满足客户端和服务器设备对虚拟机中的复杂软件环境进行分区和管理的需求,并提供高效的软件虚拟机监控程序。
  7. ARMv6-M架构:2007年,为了实现超低功耗的嵌入式处理器,ARM公司基于ARMv6的Thumb指令集和ARMv7-M的异常和调试特性开发出了ARMv6-M架构。Cortex-M0/1/0+采用的该架构。

  8. ARMv8架构

    技术图片

    ARMv8-A 4+64位架构支持引入到ARM指令集架构中,其中包括64位的通用寄存器,堆栈指针寄存器和程序计数器以及64位数据处理和扩展的虚拟寻址,主要有两种执行态,AArch64执行态和AArch32执行态,AArch64针对64位处理技术引入了一个全新的指令集A64,而AArch32执行状态支持现有的ARM指令集,ARMv7全部特性都在ARMv8中得以保留

  9. AArch64 / AArch32支持三个指令集:

    • A32(或ARM):32位固定长度指令集
    • T32(Thumb):16位固定长度指令集,以及随后的Thumb-2 16位和32位混合长度指令集
    • 新增A64指令集:32位固定长度指令集,可执行64位的数据处理和计算

Cortex-M3/4微处理器

  1. Cortex-M处理器采用的是ARMv6-M和ARMv7-M架构,采用较为简单的编程模式,专门为微控制器市场所设置,Cortex-M3/4内核基于ARMv7-M指令集架构。

  2. Cortex-M4可以看作是Cortex-M3的升级版本,两者都是基于32位RISC指令集架构,采用32位寄存器和32位内部数据总线,和其他系列ARM处理器内核不同的是采用的是Thumb-2指令集架构并且不支持传统的ARM指令集。Cortex-M4处理器还支持DSP指令操作和单精度浮点指令,在DSP应用方面具有较高的精度和性能

  3. Cortex-M3/4微处理器内核采用三级流水线设计,分别是指令获取,解码和执行,并且采用哈佛总线架构,即支持指令和数据的同时存取。微处理器采用32位编址,支持4G bit的统一内存地址空间。

  4. 微处理器架构:指令集架构(指令集,编程模型和调试方法等)+微架构(设计实现的技术细节包括接口信号,指令执行时序,流水线设计等)

  5. Cortex-M3/4微处理器除了处理器内核之外,还包括嵌套向量中断控制器NVIC

    NVIC:寄存器可访问,因此是可编程的。NVIC主要负责异常和中断处理的配置,支持中断优先级和多达240个中断请求源,NVIC依照优先级的顺序处理所有支持的异常和中断,所有的中断和大多数异常可以配置成不同的优先级。当中断发生时,NVIC将比较新中断与当前中断的优先级,如果新中断优先级高,则立即处理新中断,当前正在执行的任务会被暂停,这个过程叫做”抢占“或”中断嵌套“。当异常或中断发生时,Cortex-M处理器会从中断向量表中自动定位异常处理的入口,无需软件进行操作,从而降低从异常发生到处理之间的延时。

  6. 基于ARM微处理器的微控制器一般采用AMBA片上总线架构。AMBA高级微控制器总线架构( Advanced Microcontroller Bus Architecture)是用于ARM架构下系统芯片设计中的总线架构。

    一个基于AMBA的微控制器内部总线结构包括一个高性能的快速总线AHB或者ASB,为所连接的微处理器、DMA控制器和片上RAM和片外内存之间提供足够的系统带宽,AHB或ASB通过一个总线桥(BRIDGE)外设总线APB连接,APB总线主要提供外部设备接口电路之间的互联,所提供的系统带宽一般比较低。

  7. 微处理器内部还有一个可选的嵌入式跟踪宏单元ETM,ETM宏单元为ARM微处理器提供实时指令跟踪和数据跟踪,跟踪软件工具使用ETM生产的信息可以重现全部或者部分程序执行情况。

    ETM:解决系统实时调试问题,程序执行时,ETM通过产生对处理器地址、数据及控制总线活动的追踪来获得处理器的全速操作情况。

mipsel汇编指令学习

...用处理器指令体系MIPSI、MIPSII、MIPSIII、MIPSIV、MIPSV,以及嵌入式指令体系MIPS16、MIPS32到MIPS64的发展。  MIPS32的架构是一种基于固定长度的定期编码指令集,并采用导入/存储(load/store)数据模型。经改进,这种架构可支持高级语... 查看详情

三种主流芯片架构

...)体积小、低功耗、低成本、高性能——ARM被广泛应用在嵌入式系统中的最重要的原因支持Thumb(16位)/ARM(32位) 查看详情

stm32的arm内核和cortex架构到底是啥意思?有啥区别?求指教!

...处理器:英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为AdvancedRISCMachine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。cortex架构:ARM公司在... 查看详情

《嵌入式-嵌入式大杂烩》处理器架构与指令集

大家天天都在使用手机,你知道你的手机使用的什么处理器?处理器又是何种架构呢?今天笔者就来谈谈处理器的架构和指令集。我们知道一台手机最重要的就是处理器,也就是处理器,那么什么是处理器呢&#... 查看详情

loongarch架构之指令集(代码片段)

...的帮助文档文章目录前言一、龙芯架构是什么?二、指令编码格式1.指令编码要求2.指令汇编助记格式前言龙芯架构LoongArch是一种精简指令集计算机(RISC)。提示:以下是本篇文章正文内容,下面案例可供参考... 查看详情

用arm实现音乐电子相册

(前段时间在做嵌入式的课程设计,特将学习心得整理如下)一、开发工具及环境介绍1、ARM处理器ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。ARM处理器特点:体积小、低功耗、低成... 查看详情

关于arm架构的一些知识

...写软件来实现浮点运算。有与没有之间产生了两个不同的嵌入式应用程序二进制接口(EABI):软浮点与矢量浮点(VFP)。但是软浮点(softfloat)和硬浮点(hardfloat)之间有向前兼容却没有向后兼容的能力,也就是软浮点的二进... 查看详情

蜂鸟e203内核解析chap.1risc-v指令集架构与硬件结构(代码片段)

...,如需转载请联系我并标注引用参考。分享仅供大家学习和交流。1.指令集架构  处理器(CentralProcessingUni,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。其组成分为... 查看详情

armv8架构与指令集.学习笔记(代码片段)

目录http://blog.csdn.net/forever_2015/article/details/50285865第1章ARMv8简介.31.1基础认识.31.2相关专业名词解释.3第2章ExecutionState42.1提供两种ExecutionState42.2决定ExecutionState的条件.4第3章ExceptionLevel53.1ExceptionLevel与Securi 查看详情

usb通讯stm32

...闪存微控制器基于突破性的ARMCortex-M3内核,这是一款专为嵌入式应用而开发的内核。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集,大幅度提高的中断响应,而且所有... 查看详情

ios指令集arm64、armv7s、armv7、i386、x86_64

...x86_64是Mac处理器的指令集。i386通常被用来作为对Intel32位微处理器的统称。X86-64可在同一时间内处理64位的整数运算,并兼容X86-32架构,x86_64是针对x86架构的64位处理器。当使用iOS模拟器的时候会遇到i386|x86_64,iOS模拟器没有运行 查看详情

20175327《信息安全系统设计基础》第4周学习总结(代码片段)

20175327《信息安全系统设计基础》第4周学习总结教材学习内容总结了解ISA抽象的作用掌握ISA,并能举一反三学习其他体系结构了解流水线和实现方式ISA包含:指令集指令集编码基本数据类型一组编程规范寄存器寻址模式存储体系... 查看详情

《嵌入式-深入剖析stm32》stm32启动流程详解(代码片段)

...;操作系统已经提供了一个合适的运行环境,然而对于嵌入式设备而言 查看详情

《嵌入式-深入剖析stm32》深入理解stm32内存管理(代码片段)

在讨论STM32的内存之前,先来看看STM32的存储器系统,我们知道,STM32大都属于Cortex-M系列的处理器,可以对32的存储器进行寻址,因此存储器的寻址空间能够达到4G,这就意味着指定和数据共用相同的地址空... 查看详情

《嵌入式-深入剖析stm32》深入理解stm32内存管理(代码片段)

在讨论STM32的内存之前,先来看看STM32的存储器系统,我们知道,STM32大都属于Cortex-M系列的处理器,可以对32的存储器进行寻址,因此存储器的寻址空间能够达到4G,这就意味着指定和数据共用相同的地址空... 查看详情

沁恒ch32学习——risc-v架构学习笔记

...精简指令集是由手,腿的动作组合而成。而我这次的学习的重点并不是围绕着指令集&#x 查看详情

《嵌入式-深入剖析stm32》详解stm32位带操作(代码片段)

我相信很多朋友在学习单片机之前都学习过51单片机,假设在51单片机的P1.1的IO口上挂了一个LED,那么你单独对LED的操作就是P1.1=0或P1.1=1,这样你就可以单独的对P1端的第一个IO口进行上下拉操作,然而对于STM... 查看详情

《嵌入式-深入剖析stm32》stm32启动流程详解(gcc)(代码片段)

...;操作系统已经提供了一个合适的运行环境,然而对于嵌入式设备而言,在设备上电后,所有的一 查看详情