ARM 公司是微处理器行业的一家知名企业,它是知识产权供应商,设计基于ARM体系的处理器;公司并不生产芯片,也不出售芯片,它转让设计方案给半导体厂商,由半导体厂商生产soc,并销售,同时提供一些其他设计服务,比如物理IP,图形内核和开发工具的设计。ARM微处理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore、以及Intel的StrongARM、XScale和其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。
ARM的体系结构或处理器结构主要体现在:ARM微处理器的寄存器结构、异常处理、存储器结构、指令系统、接口等方面。
1、寄存器结构:
共有37个寄存器,被分为若干个组(BANK),这些寄器包括:
● 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。
● 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。
(1)处理器运行模式:
ARM微处理器支持7种运行模式,分别为:
● usr(用户模式):ARM处理器正常程序执行模式。
● fiq(快速中断模式):用于高速数据传输或通道处理
● irq(外部中断模式):用于通用的中断处理
● svc(管理模式):操作系统使用的保护模式
● abt (数据访问终止模式): 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
● sys(系统模式): 运行具有特权的操作系统任务。
● und(未定义指令中止模式):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。
大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。
除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式;其中除去用户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况。
ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集,它是ARM技术的一大特色。
Thumb是ARM体系结构的扩展。它有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码。这能带来很高的代码密度。
支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令集。
ARM指令集对比Thumb指令集:
· 完成相同的操作,Thumb指令通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合;
· Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。
的工作状态由程序状态寄存器CPSR的D5位的值控制,ARM指令集和Thumb指令集都设有处理器工作状态切换指令,以供程序在执行过程中对处理器进行状态切换。启动时,处理器默认状态为ARM状态。
Thumb指令与ARM指令的时间效率和空间效率对比:
· Thumb代码所需的存储空间为ARM代码的60%~70%;
· Thumb代码使用的指令数比ARM代码多30%~40%;
· 使用32位的存储器,ARM代码比Thumb代码快约40%;
· 若使用16位存储器,则Thumb代码比ARM代码快40%~50%;
· 与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%。
若对系统的性能有较高要求,则应使用32位存储系统和ARM指令集;若对系统的成本及功耗有较高要求,则应使用16位存储系统和Thumb指令集。当然,若两者结合使用,充分发挥各自的优点,则会取得更好的效果。