ARM是一家什么公司,它跟其它关联的公司是什么关系?何为三级流水?指令集的什么特点使之有条件实现三级流水?51单片机也能实现吗?哪些寄存器是在各种模式下通用的,哪些是专用的,各有何用途?何为异常向量表?当系统运行在用户模式下发生IRQ中断异常时,进入异常和退出异常,分别进行了哪些操作?指令按对齐方式存储有何意义?32位的地址线按字节存储有大的存储空间?半字呢?字呢?为什么?
时间: 2023-05-28 21:02:10 浏览: 185
ARM是一家英国半导体芯片设计公司,目前是全球最大的嵌入式CPU架构和IP供应商之一。ARM与其它关联公司的关系是:ARM Holdings是ARM有限公司的持有者,ARM有限公司授权ARM Cortex-A/M/R等系列处理器的架构给第三方公司制造和销售。
三级流水是指在CPU中,将指令处理分为三级不同的流程,以提高CPU效率的一种技术。ARM指令集具有条件执行的特点,就是在执行一条指令时,可以先判断条件是否成立,若条件不成立,则跳过该指令,直接进入下一条指令的执行。这样,ARM CPU就可以在不出现分支预测错误的情况下,实现三级流水处理。
51单片机也可以实现流水处理技术,但不同于ARM的条件执行,51的条件跳转需要先执行指令,才能判断条件是否成立,效率相对较低。
在ARM的不同模式下,有些寄存器是通用的,比如R0-R12是通用寄存器,可以在各种模式下使用;而一些寄存器是专用的,比如SP(堆栈指针)、LR(链接寄存器)、PC(程序计数器)等,它们在不同模式下具有不同的用途。例如,在用户模式下,系统使用的是用户模式的堆栈,所以SP指向的是用户模式堆栈的栈顶;而在中断模式下,系统使用的是中断模式的堆栈,所以SP指向的是中断模式堆栈的栈顶。
异常向量表存储了所有可能的CPU异常向量的入口地址。在CPU启动时,会将异常向量表中的所有地址加载到异常向量表寄存器中,当CPU发生异常时,会通过异常向量表寄存器得到对应的入口地址,完成异常处理程序的调用。
当系统运行在用户模式下发生IRQ中断异常时,进入异常时,系统先自动将CPSR压入中断模式堆栈,然后将PC压入中断模式堆栈。接着,将中断处理程序的地址加载到PC寄存器中,执行中断处理程序。在退出异常时,系统先将中断模式堆栈的PC和CPSR出栈,然后将PC和CPSR回到用户模式原有的值,恢复原有的执行状态。
指令按对齐方式存储是指,在存储器中按指令长度的整数倍存储指令。这样做的好处是为了加快CPU的执行速度,因为CPU读取存储器的操作是以一个单位为基础,按指令长度对齐存储,相当于可以提高读取存储器的效率。
32位的地址线按字节存储有更大的存储空间,每个地址线可以寻址的地址数量是2的32次方,也就是可以寻址4GB的存储空间;半字(16位)存储空间为2的16次方,也就是可以寻址64KB;字(32位)存储空间为2的32次方,也就是可以寻址4GB。因此,按字存储可以寻址的空间最大,半字最小。
这是因为CPU在访问存储器时,是以一个字(32位)为基本单位进行访问的,如果按照半字存储,需要进行地址对齐等额外的处理,效率比较低。同时,尽管按字存储可以扩展地址空间,但存储器的速度和成本等也需要考虑。
阅读全文