ARM_Linux_NOTE_1

ARM_Linux NOTE_1

Vine Farer

2016.08.05


1、基本结构

  • 内核 ——— CPU

  • 软件

    • Linux:功能较多,较复杂

    • VX Works:稳定性高,用于航天和军用

    • μ COS:轻量级OS,因结构简单,也较稳定

  • 硬件

    • ARM

    • MSP430

    • Mips:功耗很低

    • PowerPC


2、计算机系统硬件组成

  • 输入设备

  • 输出设备

  • 存储器

    CPU(寄存器组)<—>高速缓存cache<—>主存储器RAM<—>辅助存储器ROM

    (速度 快———————————————–>>>慢)

    • cache 本身由 SRAM 组成

    • cache 常和 wite buffer 一起使用,起作用就是为了针对高速的CPU和低速的主存之间速率不匹配的问题,进行缓冲

    • MMU (存储管理单元):程序编译时将虚拟地址转为物理地址,多个程序可以有相同的虚拟地址(0~4G),但各自是不同的物理地址映射

    RAM :
       > SRAM
       > DRAM(SDRAM)

    ROM:
       > EPROM
       > EEPROM
       > Flash:nand型、nor型

    磁盘、硬盘

    光盘

    相变

  • 运算器ALU

  • 控制器

  • 总线

    • 单总线结构:效率低,低档单片机

    • 多总线结构:效率高,成本高,高档单片机


3、数据和指令类型

  • ARM数据类型

    byte 8bit

    halfword 16bit

    word 32bit

    doubleword 64bit

  • 指令集:

    ARM指令集:32bit,4字节对齐

    Thumb指令集:16bit,2字节对齐

    cortex-a

    thumb-2 : arm + thumb

    java:8bit,4字节对齐

    thumb-ee



4、ARM处理器工作模式

  • 八种内核工作模式:

    user: 用户模式(非特权模式)。正常执行时用此模式

    system:系统模式,和user共享相同资源(即公用一套寄存器组)

    fiq:快速中断模式。高优先级中断介入时进入此模式

    irq:普通中断模式。通常中断处理

    supervisor{svc}:特权模式。复位、swi软中断

    abort:数据访问终止模式。读取数据失败,加载指令失败

    undef:未定义指令终止模式

    cortex-a: monitor:监控模式。在安全与非安全模式间切换

    (除user,其他7种均为特权模式)

  • fiqirq快的原因

    FIQ 优先级比 IRQ 高,不会被中断

    FIQ有自己的专属寄存器:r8~r12,不用对通用寄存器入栈保护,可以加快速度

    FIQ位于异常向量表的末尾0x1c,故无需跳转,可以在这里直接放置异常处理函数



5、ARM寄存器

Contex-A8有40个32位寄存器

8种内核工作模式,每个模式对应一组相应寄存器组

32个通用寄存器

7个状态寄存器:1个CPSR(当前)、6个SPSR(备份)

1个PC(程序计数器)

程序状态寄存器结构(面试常考)

条件标志位:N(负数)、Z(0)、C(进位)、V(溢出)

大小端控制位:E

中断禁止位:I(普通中断)、F(快速中断)

状态位:T(选择ARM指令或Thumb指令)

模式控制位:M[ 4:0 ] 确定内核处于哪种工作模式(8种)



6、异常处理

———— 操作程序状态寄存器

  • 异常类型

    ResetData AbortFIQIRQPrefetch AbortSWIUndefined instruction

    Reset异常优先级最高

  • 异常产生:

    1)拷贝CPSRSPSR_

    2)设置CPSR

    设置第 5 位,进入ARM

    设置M[4:0],改变内核模式

    设置第 6、7 位的中断禁止位,禁止相应中断响应
    (为防止中断嵌套,一旦irq中断执行过程中另一个irq中断到来,pc被保存到lr中跳转到下个中断。但irq模式下的lr只有一个,一旦改变就被覆盖了,会丢失usr下原函数的返回地址,中断结束后无法返回)

    3)保存返回地址到LR_(设置r14

    4)设置PC为相应的异常向量

  • 异常返回:

    1)从SPSR_恢复CPSR

    2)从LR_恢复PC

    (这些操作仅在ARM态下进行)



7、流水线(Pipeline)

———— 改善硬件资源使用率和处理器吞吐量

  • 3级流水线(如ARM7系列):

    取指令fetch:从存储器中读指令

    译码decode:解码指令中用到的寄存器

    执行execute:寄存器读、移位和ALU操作、寄存器写

  • 5级流水线:

    取指令 <—> 译码 <—> 执行 <—> 缓冲 / 数据 <—> 回写

  • 流水线工作实例

    1) 最佳流水线( F—>D—>E )

    6个周期执行6条指令

    所有操作在寄存器中

    指令周期数CPI = 1

    2) LDR流水线( F、D、E、M、W )

    M:将数据从内存读到CPU; W:将读到的数据写回寄存器

    6个周期4条指令

    CPI = 1.5

    3) 分支流水线( F、D、E、L、A )

    L:设置LR = PC_old; A:硬件自动PC = PC_old - 4

    需要对BL跳转语句做处理,所以流水线被阻断

    内核运行在ARM态

    4) 中断流水线( F、D、E、DI、EI、L、A )

    DI:解码中断指令; EI:处理中断

    中断到来,跳转到中断向量表,执行相应地址内的跳转语句,跳转到下个地址执行中断处理函数

    IRQ中断的反应时间最小是 7 个周期



你可能感兴趣的:(ARM,arm,计算机,结构,硬件)