嵌入式(二十七):arm

1、arm中国的网站:www.armchina.com
2、arm发展历程:
a、1978年CPU公司成立
b、1979年更名为Acorn computer ltd
c、1981年acorn risc machine(ARM1)诞生
d、1984年arm自己的电脑上市
e、1990年arm公司成立,与apple合作,此时的arm仅是一个公司的名称
3、arm的技术ip核:
a、改变他们的产品策略——不再生产芯片,而是以授权的方式,将芯片设计方案转让给其他公司,即partnership开放模式
b、开创了属于arm的全新时代
c、采取的是ip(知识产权)授权的商业模式,收取一次性技术授权费用和版税提成,还有技术支持和软件工具
4、arm授权方式:
a、处理器授权:合作厂商使用arm设计好的处理器,对方不能改变原有设计,但可以依据自己的需要调整产品的频率、功耗
b、pop(处理器优化包)授权:将优化后的处理器授权,合作厂商可以在特定工艺下设计、生产处性能有保障的处理器
c、架构授权:合作厂商使用arm的架构,根据自己的需要设计处理器
5、arm处理器的应用:
a、智能手机
b、平板设备
c、车载信息娱乐系统
d、无线路由
6、arm芯片具有risc的一般特点
a、大量存储器
b、绝大多数操作在寄存器中进行
c、寻址方式简单
d、固定长度指令格式
7、arm技术,保证高性能、减少芯片体积、减小功耗
a、同一条数据处理指令包含算数逻辑处理单元和位移处理
b、地址自动增加/减少来优化程序中的循环处理
c、load/store指令可批量传输数据,提高数据传输效率
d、所有指令可根据前指令执行结果,决定是否执行,提高指令执行效率
8、arm体系结构的基本版本命名规则
arm{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
a、T、D、M、I在arm7之后已经默认有了
b、x:序列号
c、y:内部存储管理/保护单元
d、z:内含有高速缓存cache
e、T:支持16位的thumb指令集
f、D:支持JTAG片上调试
g、M:支持用于长乘法(64位结果)的arm指令,包含快速乘法器
h、I:带有嵌入式追踪单元ETM,用来设置断点和观察点的调试硬件
i、E:增强型DSP指令(基于TDMI)
j、J:含有java加速器jazelle,与java虚拟机相比,java家岁起jazelle使java代码运行速度提高了8倍,功耗降低到原来的80%
k、F:相连浮点单元
l、S:可综合版本,意味着处理器内核是以源代码形式提供的,这种源代码形式又可以被编译成一种易于EDA工具使用的形式。
9、arm内核的数据流模型、
在这里插入图片描述
a、首先同寄存器(0-15)中去读数据
b、给ALU之前,先去桶形移位器,看一下能否用移位来实现运算结果,因为移位是很快的
10、带cache的简化冯诺依曼结构
在这里插入图片描述
11、带cache和TCM的简化哈佛结构
在这里插入图片描述
a、TCM是一个大小固定的ram,紧密耦合在内核里面,他的性能和cache相当。
b、由于cache的存在,导致指令的运行时间不可预测。
c、tcm的存在可以精确知道当前运行的指令位置,使指令的运行时间可预测,增加了实时控制的可能
12、arm处理器的运行模式
在这里插入图片描述
a、除了用户模式,其他的都是特权模式。可以访问任意资源
b、除了系统模式,其他的特权模式都可以统称为是异常模式
c、每个模式都有他既定的寄存器
d、进入系统模式不是通过异常过程进入的,而是用操作系统进行模式切换的。其他的模式是当发生异常的时候,由操作系统进行切换。
e、用户模式和系统模式使用完全相同的寄存器组
13、arm寄存器
在这里插入图片描述
a、arm有37个寄存器,其中31个通用,包括PC和6个状态寄存器
b、当发生模式切换的时候,有灰三角的寄存器会发生替换,以此来保证用户的数据不会发生损失
14、arm的cpsr
在这里插入图片描述
a、状态寄存器,是若干位,最开始都是置零的
b、当发生模式异常或者程序运行时,某些位会发生置位,导致模式切换
c、实际上就是我们的条件码和标志位,通过条件码和标志位才能进行跳转
d、保留位现在还没有用到
e、控制位如果被置位,将会切换到相对应的工作模式
f、工作状态位决定了当前所使用的的指令集
15、内核状态与指令集
在这里插入图片描述
a、内核状态决定了处理器将执行那种指令集和使用哪些寄存器
b、arm指令集(T位和J位为0,默认状态)
c、Thumb指令集(T置位)
d、jazelle指令集,是一个封闭指令集,现在还没有公开
e、指令集的指令不可混用
f、thumb指令基本上可以看成是arm指令的精简
g、使用BX指令将ARM7TDMI内核的操作状态在ARM和THUMB状态之间进行切换
h、lable为跳转地址标号,用于指令集之间的切换,后面的参数决定了切换到arm和thumb指令集中的哪一个

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/106437006