导图社区 ARM处理器
这是一篇关于ARM处理器的思维导图,主要内容包括:流水线,处理器工作模式,体系结构,功能结构,有助于理解ARM处理器的整体架构和运行机制。
编辑于2025-06-27 11:49:57这是一篇关于程序和库信息的思维导图,主要内容包括:(查看基础信息),获取ELF节的长度信息,显示可执行文件或库需要静态加载的动态库完整列表--显示加载时的依赖项,列出二进制文件的节信息,查看动态节,列出并查看段,查看重定位节,反汇编,列出库中未定义的符号,列出动态符号,列出二进制文件或库的符号表,查看节中的数据,符号的类型。
这是一篇关于设备驱动的思维导图,主要内容包括:主要功能,设备驱动模型。阐述了设备驱动的主要功能、信号定义、设备驱动模型等内容。
这是一篇关于算法的思维导图,主要内容包括:云计算,内存管理算法,分布式同步算法,避免死锁算法,进程调度算法,磁盘调度算法。
社区模板帮助中心,点此进入>>
这是一篇关于程序和库信息的思维导图,主要内容包括:(查看基础信息),获取ELF节的长度信息,显示可执行文件或库需要静态加载的动态库完整列表--显示加载时的依赖项,列出二进制文件的节信息,查看动态节,列出并查看段,查看重定位节,反汇编,列出库中未定义的符号,列出动态符号,列出二进制文件或库的符号表,查看节中的数据,符号的类型。
这是一篇关于设备驱动的思维导图,主要内容包括:主要功能,设备驱动模型。阐述了设备驱动的主要功能、信号定义、设备驱动模型等内容。
这是一篇关于算法的思维导图,主要内容包括:云计算,内存管理算法,分布式同步算法,避免死锁算法,进程调度算法,磁盘调度算法。
ARM处理器
流水线
三级流水线
取指级
取指级完成程序存储器中指令的读取 并存入指令流水线中 CPU通过控制总线发出读命令 并在地址总线上给出所取指令的地址 从存储器中取出的指令代码经过数据总线送到CPU的指令寄存器中
译码级
对指令进行译码 为一下周期准备数据路径需要的控制信号 (占有译码逻辑 而不占有数据路径)
执行级
指令占有数据路径 寄存器被读取 操作数在桶形移位器中被移位 ALU产生相应的运算结果并写回到目的寄存器中 ALU结果根据指令需要更改状态寄存器的条件位
指令周期
不连续周期
ARM请求传输到某个地址或者从某个地址传输 但这个地址跟前一个周期用到的地址没有联系 这种情况所需的时间称为访问一个非顺序的内存位置的周期(N周期)
连续周期
ARM请求传输到某个地址或者从某个地址传输 此地址或者同上一个周期的地址相同或者是上一个周期的地址之后一个字 这种情况所需的时间称为访问一个顺序的内存位置的周期(S周期)
内部周期
arm不请求一个传输 因为它执行一个内部功能 同时不执行有效的预取 这种情况所需的时间称为内部周期(I周期)
协处理器寄存器传输周期
arm希望通过数据总线同协处理器通信 ARM与一个协处理器之间在数据总线或协处理器总线上传送一个字的周期(C周期)
八级流水线
架构
Fe1-第一阶段指令提取和分支预测
Fe2-第一阶段指令提取和分支预测
De-指令解码
Iss-读寄存器和指令发射
Sh-移位阶段
MAC1-第一阶段乘法运算
ADD-目的地址生成
ALU-整数运算
MAC2-第二阶段乘法运算
数据Cache访问第一阶段
Sat-饱和运算
MAC3-第三阶段乘法运算
数据Cache访问第二阶段
WBex-回写数据
WBIs-将数据回写到存取单元
实例
流水线-乘法
流水线-内存访问
处理器工作模式
工作模式
用户模式-usr
ARM处理器正常的程序执行状态
快速中断模式-fiq
用于高速数据传输或通道处理 由外部通过对处理器上的nFIQ引脚输入低电平产生FIQ快速中断请求
外部中断模式-irq
用于通用的中断处理 通过对处理器的nIRQ引脚输入低电平产生IRQ中断请求 IRQ的优先级低于FIQ 当程序执行FIQ异常时 IRQ可能被屏蔽
管理模式-svc
操作系统使用的保护模式
上电复位
由外部其他控制信号引起的复位引脚上的复位脉冲
对系统电源检测过程发现过压或欠压引起的复位
时钟异常复位
由软件中断指令SWI引起
中止模式-abt
当数据或指令预取终止时进入该模式 用于虚拟存储以及存储保护
指令预取中止
指令预取访问存储器失败时产生的异常 此时存储器向ARM处理器发出存储器中止信号 预取的指令被标记为无效 但只有当处理器试图执行无效指令时 指令预取中止异常才会发生 如果指令未被执行 则指令预取中止不会发生
数据中止
处理器访问数据存储器失败时产生的异常 此时存储器向ARM处理器发出存储器中止信号 表明数据存储器不能识别处理器的读数据请求 系统的响应与指令的类型有关 数据中止异常发生在存储控制器或MMU指示访问了无效的存储器地址时 或当前代码在没有正确的访问权限时试图读写存储器
未定义指令模式-und
当未定义的指令执行时进入该模式 用于支持硬件协处理器的软件仿真
遇到一条无法执行的指令(此指令没有定义)
执行一条对协处理器的操作指令 但协处理器没有应答
模式切换
切换至管理模式
msr cpsr_c, #0xd3
切换至中断模式
msr cpsr_c, #0xd2
切换至快速中断模式
msr cpsr_c, #0xd1
切换至中止模式
msr cpsr_c, #0xd7
切换至未定义模式
msr cpsr_c, #0xdb
切换至系统模式
msr cpsr_c, #0xdf
体系结构
ARM内核数据流模型
虚拟化相关
分类
软件模拟虚拟化
类型
半虚拟化
全虚拟化
指令技术
解释执行技术
将虚拟机要执行的每一条命令都经由VMM实时解释执行 VMM把指令解释成能够在主机上运行的一个函数 该函数可以模拟出虚拟机希望的执行效果
优点
所有指令都在VMM的监控之下
缺点
原本CPU在一个机器周期内可以执行完成的普通指令 变成了复杂且耗时的内存读写操作
扫描与修补技术
扫描虚拟机所要执行的代码 保留普通指令并修补敏感指令 修补是指将敏感指令替换成一个外跳转(跳转到VMM空间 执行可以模拟敏感指令效果的安全代码块) 执行完之后在跳回虚拟机继续执行下一条指令
缺点
每次需要执行敏感指令时都需要跳转 导致代码的局部性差
二进制翻译技术
VMM在虚拟机启动时 预先将后续可能用到的代码翻译并存储在缓冲区中 翻译时 保留普通指令 替换敏感指令 最后形成一个可直接按顺序执行的代码
优点
缓冲区中翻译好的代码局部性高 直接执行速度快
缺点
占用内存较大
硬件辅助虚拟化
设计虚拟化专用指令 这些指令通过硬件电路实现
中断虚拟化
中断源的模拟
CPU本身产生的核间中断等中断请求由专门的模拟程序模拟 当虚拟CPU满足中断条件时 就模拟产生一个中断请求 而外部设备的中断则由VMM的中断程序识别判断后 直接分配给对应的虚拟机
中断控制器的模拟
虚拟中断控制器接收来自虚拟设备的中断请求 同时也接收来自VMM的中断请求 并以主动或被动的方式将其注入虚拟机
异常虚拟化
由虚拟机在低特权级运行了特权指令而造成的异常
这种异常将陷入VMM处理并返回虚拟机期望的正确结果
虚拟机自身程序存在问题导致执行指令出错引发的异常
对于此异常 VMM需要严格按照CPU数据手册所定义的异常产生条件和处理规则给予虚拟机响应
内存虚拟化
在虚拟执行环境中 虚拟存储器的虚拟化包括共享RAM中的物理内存以及为虚拟机动态分配内存 需要系统支持内存管理单元虚拟化 并且使其对客户机OS透明 (总共维护两级内存映射) -需要客户机OS维护从虚拟存储器到物理内存的映射 客户机OS仍然负责从虚拟地址到客户机物理地址的映射 但它不能直接访问实际机器内存 -需要VMM维护从物理内存到机器内存的映射 VMM负责将客户机物理地址映射到实际的机器内存上 实现从客户机物理地址到机器内存地址的变换 代表性技术由扩展页表和影子页表(为每台虚拟机创建一个影子页表 用于实现该虚拟机的使用的虚拟地址 到分配给它的机器内存地址之间的映射 当客户机OS修改了虚拟存储器到物理内存的映射时 VMM会及时更新影子页表)
IO虚拟化
全设备模拟
一个设备的所有功能或总线结构 都可以再软件中进行复制 改软件作为虚拟设备而处于VMM中 客户机OS的IO访问请求会陷入VMM中与IO设备进行交互
半虚拟化
采用分离式驱动模型 该模型由2部分组成:前端驱动和后端驱动 前端驱动运行在DomainU中 后端驱动运行在DomainO中 两者通过一块共享内存进行交互 前端驱动复制管理客户机OS的IO请求 后端驱动复制管理真实的IO设备并复用不同虚拟机的IO数据
直接IO
使虚拟机直接访问设备硬件
自虚拟化IO
所有与IO设备虚拟化相关的任务都被封装在SV-IO中 SV-IO提供虚拟设备 以及一个访问虚拟机的相关API和对VMM进行管理的API函数 SV-IO为每种类型的虚拟化IO设备定义了一个虚拟接口 客户机OS通过虚拟接口设备驱动同虚拟接口进行交互 每个虚拟接口均由2个消息队列构成: 一个对应OS向外流入设备的消息 另一个对应从设备向内流入OS的消息
多核虚拟化
可以在软件中指定可用的处理机数量
NUMA结构多处理机
CC-NUMA结构多处理机
功能结构
Cache
数据Cache
存放CPU最近使用的数据以提高数据存取速度 用户空间大小变化时更新页目录基址寄存器CR3来清空页表缓冲TLB 以防止地址错误
指令Cache
存放CPU最新使用的指令 以提高指令存取速度
指令预取单元IPU
存放放在存储器中的指令经总线接口单元BIU取到的16字节长的预取指令队列中 并向IDU传输指令
指令译码单元IDU
从IPU取出指令进行译码分析 然后将其放入IDU中的译码指令队列中 供EU使用
执行单元EU
包含指令流水线 浮点运算器和控制器 控制ROM等
MMU
分段单元SU
按指令要求 将指令中的逻辑地址转换为线性地址
分页单元PU
将SU产生的线性地址转换为物理地址 每页容量为4KB或者4MB 当系统不使用分页功能时 线性地址就是物理地址
总线接口单元BIU
通过数据总线 地址总线和控制总线来与外部环境联系 包括从存储器中预取指令 读写数据,从IO端口读写数据 以及其他控制功能
寄存器组
通用寄存器
数据寄存器
EAX
EBX
ECX
EDX
变址和指针寄存器
源变址寄存器ESI
目的变址寄存器EDI
栈顶寄存器ESP
始终指向栈顶
基址寄存器EBP
段寄存器
代码段寄存器CS
数据段寄存器DS
附加段寄存器ES
堆栈段寄存器SS
通用段寄存器FS GS
指令指针和标志寄存器
程序状态寄存器EFLAGS
指令指针寄存器EIP
EIP的内容是下一条要取入CPU的指令在内存中的偏移地址 当程序刚运行时 系统把EIP清0 每取入一条指令 EIP自动增加相应的字节数 指向下一条指令
系统地址寄存器
存储操作系统需要的保护信息和地址转换表信息 定义目前正在执行任务的环境 地址空间和中断向量空间
全局描述符表寄存器GDTR
用于保存全局描述符表的32位基地址和全局描述符表的16位表界限 全局描述符表GDT里的每一项都说明一个段的信息或者是一个局部描述符表LDT的相关信息
中断描述符表寄存器IDTR
用于保存中断描述符的32位基地址和中断描述符的16位界限
局部描述符表寄存器LDTR
用于保存局部描述符表的选择符 LDTR需要到GDT中找到对应的描述符才能定位相应的LDT
任务寄存器TR
用于保存任务状态段TSS选择符 TR需要到GDT中找到对应描述符才能定位相应TSS
控制寄存器
CR0
含有控制处理器操作模式和状态的系统控制标志 控制实模式和保护模式的切换 控制分页机制
标志位
CR0_PE-保护模式
CR0_MP-协处理器监控
CR0_EM-仿真
CR0_TS-任务已切换
CR0_ET-扩展类型
CR0_NE-协处理器错误
CR0_WP-写保护
CR0_AM-对齐检查掩码
CR0_NW-关闭写透方式
CR0_CD-关闭Cache
CR0_PG-分页
CR1
页故障线性地址寄存器CR2
保存最后一次出现页故障的32位线性地址
页目录基址寄存器CR3
保存页目录的物理地址 CR3的页目录基地址只有当CR0中PG=1时才有效 页目录总是放在以4KB为单位存储器边界上 因此CR3的低12位总是为0
CR4
PSE位表示页大小扩展 PSE=1时页大小可以扩展到4MB PSE=0时 页大小只能是4KB
标志位
CR4-PSE-允许页容量大小扩展位