ARM架构复习知识点
本文只是记录ARM相关的复习知识点,具体详细知识点请查找相关博客和手册:
1、
参考博客:https://blog.****.net/shinezhang86/article/details/48393203
精简指令集(Complex Instruction Set Computer,CISC):x86, C51
复杂指令集(Reduced Instruction Set Computing,RISC):arm, mips,powerpc, avr, pic
2、
CISC架构:不同指令所需的时钟周期是不同的(例如乘法和加法的周期就不太可能相同);允许数据处理指令对内存进行操作,因此需要的寄存器数目会减少,且X86架构支持CPU对非对齐的内存地址访问;X86下的IO空间和内存空间是分开的,IO空间使用完全不同的指令来访问。
RISC架构:不同指令opcode的长度是相等的,大部分的指令都可以在一个时钟周期内完成,这应该可以降低指令流水线设计的复杂度;RISC在结构设计上是一个载入/存储(load/store)的构架,只有载入和存储指令可以访问内存,数据处理指令只对寄存器的内容进行操作;为了加速程序的运算,RISC会设定多组的寄存器,并且指定特殊用途的寄存器;RISC架构则不区分IO空间和内存空间,都是直接把IO空间映射到内存空间,直接用内存空间的访问方式来操作。
3、CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:
(1)指令系统:RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2)存储器操作:RISC对存储器操作有限制,使控制简单化;而CISC机器的存储器操作指令多,操作直接。
(3)程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。
(4)中断:RISC机器在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断。
(5)CPU:RISCCPU包含有较少的单元电路,因而面积小、功耗低;而CISCCPU包含有丰富的电路单元,因而功能强、面积大、功耗大。
(6)设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC微处理器结构复杂,设计周期长。
(7)用户使用:RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
(8)应用范围:由于RISC指令系统的确定与特定的应用领域有关,故RISC机器更适合于通用机;而CISC机器则更适合于专用机。
4、ARM 介绍:
参考博客:https://blog.****.net/GitChat/article/details/78410083
(1)ARM 提供:在系统芯片(SoC)上的系统级IP,以及物理IP,确保其可制造性开发工具,帮助设计和制造系统架构和软件。
(2)现在有两大产品系列,Cortex-M系列主要用于注重成本节约的微控制器;Cortex-R系列,提供非常高的性能和吞吐量,同时保持精准的时序属性和可预测的中断延时,通常用于时序关键的应用中,如引擎管理系统和硬盘驱动器控制器。
(3)
由于 ARM 核心只有两个中断输入,最常见的外设就是某种中断控制器,在外设内部,各组件通过芯片上互联总线架构相互连接,对于极大多数基于ARM的设备而言,这就是标准的 AMBA 互联。
AMBA 指定了两个总线,称为AXI的高性能系统总线,和称为APB的低功耗外设总线,APB通常用于连接所有外设,AXI则用于存储器和其他发高速设备,大多数设备都有一定数量的芯片上存储以及连接外设存储器设备的接口,但是注意,与设备的外部连接并不是AMBA总线,这仅在设备内部使用,并不外露。
ARM是RISC架构,保留了传统上与RISC架构相关的许多特性,例如大多数指令在一个周期内执行,寄存器集基本上是正交的,而且指令集实施加载存储式架构,也就意味着能够直接处理内存中内容的指令只有加载和存储指令,如果需要对内存中的值执行任何处理,程序必须将这些值加载到寄存器中,执行所需的处理,然后将结果存回到内存中,其他常见架构则能够直接操控或修改内存中的内容
谈到指令集时,你会发现 ARM 核心不只有一个指令集,所有 ARMv7-A 和 ARMv7-R 核心都支持32位原生 ARM 指令集和 Thumb 指令集,后者中的指令可以是32位或者16位的。
ARM 指令集释放了内核的完整性能潜力,而Thumb指令集则提供了更出色的代码密度,我们把ARM和Thumb指令间切换这一过程称为“交互工作”,不要担心,编译器和链接器会处理它们。
ARM内核通常支持七种基本运行模式,每种模式有权访问自己的堆栈空间,以及一组不同的寄存器子集,除一个外其余都是由特权的模式。
上图仅适用于 Cortex-A 和 Cortex-R 处理器,Cortex-M 微控制器的模式结构则全然不同。ARMv7-M 架构配置仅定义了两种模式,如下图,分别是 Thread 模式和 Handler 模式,Thread 模式没有特权,用于应用程序代码, Handler 模式有特权,用于异常处理程序,当系统复位时在 Thread 模式中开始执行,遇到异常时自动变为 Handler 模式,处理程序完成后再回到 Thread 模式。