Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511937
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: LINUX

2009-04-01 12:44:54

ARM处理器基础
程序员可以把ARM内核看作是由数据总线连接的各功能单元组成的集合:

如图所示,是ARM内核的数据流模型,它说明了数据流向,也说明了组成ARM内核的各个逻辑要素。
数据通过数据总线进入处理器核,数据可能是一条指令或一个数据项,这是冯.诺依曼(von Neumann)结构的ARM实现——数据和指令共享同一总线;在后来的哈佛结构的ARM实现使用二条不同的总线。
指令译码器在指令执行前先将它们翻译。
与所有的RISC处理器一样,ARM处理器采用LOAD-STORE体系结构,只有两种类型的指令用于把数据移入/移出处理器。数据处理只能在寄存器里进程。
数据项存储在寄存器文件里——一组32位的寄存器存储体(storage bank)。符号扩展硬件把8位和16位的有符号数转换成32位。
典型的ARM指令通常有2个源寄存器Rn和Rm, 1个结果或目的寄存器Rd。源操作数分别通过内部总线A和B从寄存器文件中读出。
ALU(算术逻辑单元)或MAC(乘累加单元)通过总线A和B得到寄存器值并计算出结果,数据处理指令把Rd中的计算结果写到寄存器文件。LOAD-STORE指令使用ALU来产生一个地址,这个地址将被保存到地址寄存器并发送到地址总线上。
ARM的一个重要特征是,寄存器Rm可以选择在进入ALU前是否经过桶形移位器预处理。
在经过有关功能单元后,Rd寄存器里的结果值通过结果总线(result bus)写回到寄存器文件。对于LOAD-STORE指令,在内核从下连续的存储单元装载数据到下一个寄存器,或写入下一个寄存器的值到下一个连续的存储单元之前,地址加法器会自动更新地址寄存器。处理器连续执行指令,知道发生异常或中断而改变了正常的执行流。

CPSR
注:Q位是有DSP扩展指令集的内核才有的;J位是指有Jazelle指令集(用于JAVA字节码)的内核才有的。
一般而言,CPSR = NZCVIFT_SVC


阅读(1007) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~