SoC前段(ARM)嵌入式系统开发实作训练(上)
图1 ARM core
■Pipeline结构
1.完整指令执行的管线作业
2.三层管线作业流程
在这情况下可知一个Cycle执行一个指令。
■CPU资料执行图
图2 CPU资料执行
CPU资料执行图说明
本文利用一简单的加法运算再搭配二个暂存器(Rm及Rn)来说明:
1.分别将(Rn及Rm)送到A BUS及B BUS。
2.在B BUS的Rm透过Barrel Shifter作位移运算后,结果与在A BUS的Rn在ALU整合作运算动作。
3.最后运算结果会由ALU BUS送回暂存器Rd做储存。
4.程式计数器结果则透过Address incrementer作更新再将值写回程式计数器。
5.此时Address BUS更新资料位址,进行下一步的命令撷取的动作;记忆体即会把指令送到Data BUS做进一步的指令解码及执行的准备。
■程式模式(Programmer Mode)
暂存器
ARM Mode暂存器共有37个,分别有31个32bit一般暂存器及6个状态暂存器,而于不同操作模式下分有不同的暂存器可供使用。
表1 ARM Mode暂存器
THUMB Mode暂存器是一个ARM状态暂存器的子集合,分别有21个32bit一般暂存器及6个状态暂存器,使用者可直接使用R0-R7和PC,stack pointer register(SP),link register(LR)、CPSR及SPSR。
在二种State的暂存器组中,有共用暂存器,也有各别暂存器,这就方便OS 的task switch 之程式参数转换用。
■忆体格式
ARM7TDMI对于记忆体内资料的存取以byte为单位,并由0开始线性向上存取的方式进行。也就是byte0~byte3会最先被存取为一个word(在ARM里,一个word等于32位元;也就是4个byte),接下来是byte4~byte7被存取...依此类推下去。而这样储存在记忆体中的一个word之4个byte,哪个会置于最高位置?哪个又会置于最低位置呢?这时,ARM则提供了两种格式供设计者来使用---Big Endian和Little Endian。
在Big Endian格式中,一个word里的最大有效位元组会储存到最低的位元组里,而最小有效位元组会储存到最高的位元组里。
表3 Big Endian格式
在Little Endian格式中,一个word里的最小有效位元组会储存到最低的位元组,而最大有效位元组会储存到最高的位元组里。
表4 Little Endian格式
操作模式
ARM7TDMI共支援7种操作模式。
表5 ARM7TDMI操作模式
模式改变
模式的改变可以由软体控制或是经由外部中断和例外事件的处理所产生。大多数的应用程式会在User模式下执行。非User模式,亦可称为特权模式,其通常用来执行中断服务、例外事件,或者是存取受保护的资源。
■例外事件
每当例外事件的产生,则程式的一般旗标则会暂时停止,在例外被处理之前,目前的处理程序状态必须被保留,最初的程式才能够被恢復。当中断被处理完时,其他的例外事件就会被接受处理,但它们会依照优先顺序处理。
表6 例外事件
SoC前段 CPU SoC ARM 嵌入式系统 Linux 相关文章:
- SoC前段(ARM)嵌入式系统开发实作训练(下)(02-28)
- DSP与单片机通信的多种方案设计(03-08)
- 如何采用FPGA协处理器实现算法加速(04-29)
- 嵌入式系统中“软外设”的研究 (07-12)
- 彻底看穿双核CPU Intel与AMD多核处理器剖解 (07-12)
- 基于自适应DVFS的SoC低功耗技术研究(06-19)