企业网站策划书,如何做一网站,淘宝客新增网站,保险网站 源码嵌入式领域#xff0c;使用ARM架构的芯片公司可不占少数吧#xff0c;intel的x86架构主要占据PC、服务器市场#xff0c;ARM架构主要占据移动市场。x86架构和ARM架构不同的主要原因#xff0c;是背后使用的计算机指令集不同。计算机有自己的语言系统#xff08;汇编#…嵌入式领域使用ARM架构的芯片公司可不占少数吧intel的x86架构主要占据PC、服务器市场ARM架构主要占据移动市场。x86架构和ARM架构不同的主要原因是背后使用的计算机指令集不同。计算机有自己的语言系统汇编进一步地mov等指令也得翻译成相应二进制码众多指令的集合称为指令集架构Instruction Set Architecture, ISA计算机发展历史终指令集形成两种风格即复杂指令集计算机CISCComplex Instruction Set Computer精简指令集计算机RISCReduced Instruction Set ComputerARM架构就是使用RSIC这里插一句使用不同指令集CPU就设计成不同架构吗还真是一定程度上可以说软件/指令集决定硬件架构RSIC能流行起来一个原因就是因为按照RSIC指令集能降低硬件设计成本
1 架构
1.1 架构种类
有些人将“指令集体系结构”称为架构于是有ARMv8架构ARMv7-A架构等等这些都是ARM设计的一些RISC指令集。 所谓指令集体系结构就是ARM公司推出的一整套精简指令它是计算机最底层的命令如APP从内存读取数据最终就是通过调用ARM设计的指令实现内存存取。
为了清楚表达ARM应用实例所使用的指令集ARM公司定义了几种重要的ARM指令集架构版本以版本号v1-v8表示。 ARM采用IP授权的商业模式收取一次性技术授权费用和版税提成有三种授权模式使用层级授权模式内核层级授权模式架构层级使用模式。
ARMv7架构开始命名方式有所改变分为三个系列Cortex-ACortex-RCortex-M Cortex-A针对高性能计算。如现在手机常出现Cortex-A76等 Cortex-R针对实时操作处理主要是面向嵌入式实时处理器。在汽车电子制动系统工控等领域常见 Cortex-M专为低功耗低成本系统设计。目前火热的IoT领域常用该系列。
1.2 ARM微处理器特点
1、ARM指令都是32位定长的 2、寄存器数量丰富37个 3、普通的Load/Store指令 4、多寄存器的Load/Store指令 5、指令的条件执行 6、单个时钟周期中的单条指令完成数据移位操作和ALU操作 7、通过变种和协处理器来扩展ARM处理器功能 8、扩展了16位的Thumb指令来提高代码密度
1.3 ARM状态和Thumb状态
1.3.1 状态简介
ARM状态ARM处理器工作于32位指令的状态所有指令都是32位。 Thumb状态ARM处理器执行16位指令的状态。 Thumb-2状态这是ARM7版本处理器所具有的的状态thumb-2内核技术兼有16位及32位指令实现了更高的性能更有效的功耗及更少地占用内存。
1.3.2 ARM状态和Thumb状态的切换
1由ARM状态切换到Thumb状态 寄存器最低位置为1 BX指令R0[0]1则执行BX R0指令将进入Thumb状态 2由Thumb状态切换到ARM状态 寄存器最低位设置为0 BX指令R0[0]0则执行BX R0将进入ARM状态
当处理器进行异常处理时则从异常向量地址开始执行自动进入ARM状态。 注意 ARM处理器复位后开始执行时总是处于ARM状态 Cortex-M3只有Thumb-2状态和调试状态 由于Thumb-2具有16/32位指令功能因此有Thumb-2就无需Thumb了此外具有Thumb-2技术的ARM处理器也无需在ARM状态和thumb状态之间切换了因为thumb-2具有32位和16位指令功能。
1.3.3 为什么需要Thumb状态模式
ARM体系结构除了支持执行效率很高的32位ARM指令集外为了兼容总线宽度为16位的应用系统所以也支持16位的Thumb指令集。Thumb指令集是ARM指令系统的一个子集允许指令编码长度为16位。Thumb指令集大大节省了存储空间。
2 编程模型
2.1 ARM数据类型
在ARM体系结构中字Word的长度为32位半字Half-Word长度为16位字节字节长度为8位。
2.2 ARM处理器的工作状态
1、ARM状态处理器执行32位的字对齐ARM指令绝大部分工作在此状态 2、Thumb状态处理器执行16位的半字对齐Thumb指令。
2.3 ARM处理器工作模式
1、用户模式usrUser ModeARM处理器正常执行程序 2、快速中断模式fiqFast Interrupt Request Mode用于高速数据传输或通道处理当触发快速中断时进入此模式 3、外部中断模式irqInterrupt Request Mode用于通常中断处理当触发外部中断时进入此模式 4、管理模式svcSupervisor Mode操作系统使用的保护模式在系统复位或执行软中断时进入此模式 5、数据访问中止模式abtAbort Mode数据或指令预取中止时进入此模式可用于虚拟存储及存储保护 6、系统模式sysSystem Mode运行具有特权的操作系统任务 7、未定义指令中止模式undUndefined Mode未定义的指令执行时进入该模式可用于支持硬件协处理器的软件仿真 除用户模式外其余六种都是特权模式。除用户模式和系统模式外其余五种都是异常模式。在特权模式下可以访问所有系统资源。
2.4 ARM处理器寄存器组织
ARM处理器有37个32位寄存器其中31个是通用寄存器6个状态寄存器。 在所有寄存器中有些是各模式共用同一个物理寄存器有些是各模式自己独立拥有的物理寄存器。
r0-r3主要用于子程序间传递参数 r4-r11用于保存局部变量但在Thumb状态下通常只能使用r4-r7保存局部变量 r12是子程序间的scratch寄存器即ip寄存器 r13通常用于栈指针即sp r14是连接寄存器lr用于保存子程序和中断返回地址 r15即程序计数器pcARM采用流水线机制该寄存器存储下一条指令地址。
不分组寄存器r0-r7 在所有运行模式下都是同一个物理寄存器系统未把它们用做特殊用途。
分组寄存器r8-r14 FIQ模式下使用r8_fiq-r12fiq其他模式下还是使用r8-r12 对于r13,r14每个寄存器对应6个不同的物理寄存器系统模式和用户模式使用r13,r14其他模式都有自己独立的物理寄存器
SPSR Saved program status register备份的程序状态寄存器除usrsys外用于保存CPSR的备份异常时保存CPSR值异常退出时将该值恢复到CPSR。五种异常模式都有各自的物理寄存器。 CPSR Current program status register当前程序状态寄存器可以在任何模式下被访问包括条件标志位中断禁止位。 N两整数运算时1表示结果为负数0表示结果为0或正数 Z1表示结果为0。对于CMP指令1表示两数相等。 CV代表溢出。 I1表示禁止外部硬件中断irq F1表示禁止快速中断fiq T1表示Thumb状态0表示ARM状态默认都是ARM状态 M[4:0]用来设置处理器的工作模式。
3 其他知识 当年知道ARM这么收钱的时候有点纳闷又有点无语包括现在也对版权这个东西感到不可思议还能这样收费。它不用造个成品出来就是一套知识点而且最麻烦的是能一直收费不是像买个东西比如手机一次交完就行了。即便是买手机我下次买那你厂商也得再造个新手机出来和之前的手机是俩东西了而这套知识点第一次买长这样下次买还长这样但就是能一直收费。顺便在吐槽一句也不知道啥时候我们国家比如听歌啥的也开始版权收费了一次又一次的交不要说这是贴近西方西方也不是文明的代名词也不是绝对权威我一直感觉这基本就是西方搞得一种无赖收费方式你但凡是那种花了一次钱买了就行了也不会说啥毕竟给予知识创造者回馈是正常的但这种一劳永逸的在我感觉就是很奇葩而且这样能收费的话我真替中西方古往今来各个领域研究出东西的先贤感到不值毕竟我们现在生活用的的所有包括衣食住行琴棋书画数理医艺等肯定都是在先贤研究的基础上发展得到的他们的版权费呢找谁要要不要给他们后代我是理工科的有点对资本这方面嗤之以鼻尤其是前几年看到新闻ARM公司被其股东卖来卖去时候感到痛心一个叱咤风云的技术公司被所谓股东说卖就卖无语到令人想笑很多东西和钱/利益挂钩后就很难纯粹了真切感觉每个人或者说整个人类在近现代被金钱控制的有点离谱了所有的道义等品质都被金钱破坏了感觉都在像金钱看齐这样下去的话即便人类科技在进步也会是生活在冰冷麻木的社会中。不好意思有点愤青了扯得有点远大家就当看个热闹。