ARM920T一些功能单元

1)JTAG:一种调试或者测试芯片的接口,可以通过JTAG接口访问CPU的内部寄存器和挂在总线上的设备,如Flash、RAM等。

2)ARM9TMDI:它才是真正运行程序的。

3)指令、数据MMU:包括两个C13一起处理内存地址映射的。为什么有两个MMU,通常情况下一个MMU不就够了吗?是的,大部分CPU确实只有一个MMU,然而这里有两个,这是因为ARM920T内部采用了哈佛架构。哈佛架构是一种将程序指令存储和数据存储分开的存储器架构。是一种并行体系架构,指令和数据可以独立存取,这样就大大提高了程序的运行性能。

4)指令、数据Cache:包括写回PATAG RAM、写缓冲,一起完成高速缓存的功能。因为哈佛架构才会有两个Cache。它们都是16KB。关于Cache的工作机制,后面会专门介绍,现在只要知道它是用来缓存内存中的数据的,速度比内存快很多。

5)CP15:协处理器。这里是用于控制MMU和Cache的,还可以控制别的器件,不同的系统配置下是不同的。CP15控制着MMU和Cache,比如我们要打开或者关闭MMU、改变地址映射关系、打开或者关闭Cache、锁定Cache中的内容、使Cache中的数据变为无效等。小端模式、大端模式也是通过协处理器进行控制。

6)外部协处理器接口:ARM920T可以加入多达15个协处理器,如增加一个浮点运算处理器等。

7)AMBA总线接口:ARM920T内部就是通过它和外部内存及其他设备通信的。

类TMF类架构_类TMF类架构

                                                                ARM920T逻辑结构视图

ARM920T CPU特性

ARM920T CPU支持特性如下:

·支持16位Thumb压缩指令集。

·支持片上Debug(调试)。

·内嵌硬件乘法器。

·嵌入式ICE,支持片上辅助断点调试。

ARM920T CPU是RISC体系但也改进了RISC体系。RISC体系特性及ARM改进的特性如下:

·指令长度固定。

·有大量的寄存器。

·大多数操作都在寄存器中进行。

·通过装载、存储两个操作,在寄存器和内存之间交换数据。

·内存寻址方式简单。

·ARM改进了,在一条数据处理指令中同时加入算术、逻辑、移位等操作。

·使用地址自动增加或者减少技术,ARM改进和优化了程序中的循环处理。

·ARM改进了装载和存储指令,使之能一次装载或者存储多个内存字,由此增加了数据传送性能。

·ARM还让大部分指令能根据前一条指令执行的结果状态,决定是否执行当前这条指令。这大大提高了程序的运行效率。

ARM920T处理器有两种状态

        ARM状态和Thumb状态。这两种状态之间可以通过软件或者硬件来回切换。ARM920T处理器根据CPSR寄存器中的T位来分辨这两种状态。

  • ·CPSR中T位为0:表示ARM920T运行在ARM状态。
  • ·CPSR中T位为1:表示ARM920T运行在Thumb状态。

        当ARM920T处于ARM状态时(关于ARM状态和Thumb状态后面会有介绍),ARM920T运行的是ARM指令集,每条指令长度都是32位,即一个字。这时写入PC寄存器(即程序指针寄存器中的值)如果不是字对齐的,要么程序的运行结果不可预知,要么地址的最低两个二进制位被硬件忽略。当ARM920T处于Thumb状态时,ARM920T运行的是Thumb指令集,每条指令长度都是16位,即一个半字。这时写入PC寄存器中的值如果不是半字对齐的。也和ARM状态时一样,要么程序的运行结果不可预知,或者地址的最低二进制位被硬件忽略。

在以下几种情况下,ARM920T处理器会自动进入ARM状态。

  • ·第一次上电时:处理器完成自身硬件初始化后,进入ARM状态从0地址开始读取第一条指令并开始运行。
  • ·响应中断和异常时:当处理器响应外部硬件中断和处理器异常时,ARM920T会自动切换到ARM状态。

        处于Thumb状态时,ARM920T运行的都是16位的指令,指令地址是半字对齐的,即指令地址的最低一位二进制位为0。这些指令都是对ARM的一些指令进行重新编码得到的一个ARM指令集的子集,只能访问系统中有限的寄存器和资源。因为Thumb状态时的指令都是16位的长度,所以也大大减小了程序运行时的存储空间,同时这对16位的存储系统很有效。Thumb指令并没有改变ARM底层的设计模型,只是在高层增加了一些限制,它的数据操作和程序寻址还是32位的。ARM920T处理器不会从任何状态自动切换到Thumb状态。这需要程序员手动切换,用BX指令,可以从ARM状态切换到Thumb状态,执行一段Thumb指令的程序,然后从Thumb状态返回到ARM状态。如果在Thumb状态中运行Thumb程序时产生中断或者异常,处理器自动进入ARM状态,处理完中断或者异常,然后可以从ARM状态中返回Thumb状态下继续运行。

ARM920T处理器的7种工作模式

ARM920T处理器一共有7种工作模式,如下:(以下这7种工作模式除用户模式外,其他6种模式都可以称为特权模式)

(1)系统管理模式

系统管理模式,是一种特权模式,在这种模式下软件程序可以自由访问所有硬件资源,还可以自由切换到其他工作模式。当ARM920T处理器第一次上电时,就会自动进入这种模式,如果用户模式下软件执行SWI指令(即软中断指令),处理器执行完指令后就会切换到系统管理模式。这种工作模式通常用于执行操作系统内核代码。

(2)数据访问终止模式

当ARM920T处理器操作、访问数据时,数据的地址不存在,或者这个地址上的数据不允许被操作或者访问,这时处理器就会自动进入数据访问终止模式。它也是一种特权模式,在这种模式下程序可以自由访问所有硬件资源,也可以自由切换到其他工作模式。这种工作模式通常被操作系统用于虚拟内存管理。比如,对操作系统的内存空间进行保护,不允许应用程序访问系统代码数据的内存空间。

(3)未定义指令终止模式

当ARM920T处理器执行程序时,执行到一条未定义的指令,即它不认识这条指令时,处理器就会自动进入未定义指令终止模式。此工作模式也是一种特权模式,在这种模式下程序可以自由访问所有硬件资源,同时可以自由切换到其他工作模式。这种工作模式通常被系统用于支持软件仿真硬件协处理器。比如,用软件仿真硬件浮点计算单元,假如我们在程序指令数据中放一个处理器不认识的数据充当未定义的指令,处理器就自动切换这个工作模式,最后我们在这种模式下用软件模拟完成浮点计算任务。

(4)外部中断模式

当ARM920T处理器外部中断引脚有电子信号时,并且ARM920T处理器这时允许响应外部中断时,处理器就会自动进入外部中断模式。这种工作模式也是一种特权模式。在这种模式下,程序可以自由访问所有硬件资源,同时可以自由切换到其他工作模式。这种工作模式通常被系统用于普通的外部设备中断,以便和外部设备进行通信。

(5)快速中断模式

当ARM920T处理器快速中断引脚有电子信号时,并且ARM920T处理器这时允许响应快速中断时,处理器就会自动进入快速中断模式。这种工作模式也是一种特权模式,在这种模式下程序可以自由访问所有硬件资源,同时可以自由切换到其他工作模式。这种工作模式通常被系统用于高速的外部设备中断或者要求实时性响应的设备,以便处理器可以快速、实时地和外部设备进行通信。

(6)系统模式

系统模式除了有特权外,其他都和用户模式一样,但要切换到这种模式下,一定要在其他特权模式下,通过程序手动切换。这种工作模式有特权,所以这种模式下程序可以自由访问所有硬件资源,同时还可以自由切换到其他工作模式。通常用于运行操作系统服务程序,这种程序像普通的应用软件,但是它需要自由访问硬件和系统资源。这种工作模式就刚好派上用场了。

(7)用户模式

用户模式没有特权,不能访问和操作硬件资源,同样也不能自由地切换到其他特权模式,但是若出现下列三种情况,ARM920T处理器就会自动切换到其他特权模式。

  • 1)数据访问和未定义指令异常。在用户模式下处理器操作数据和执行程序若遇到这两种情况,处理器会分别切换到数据访问终止模式或者未定义指令终止模式。
  • 2)外部中断。在用户模式下处理器快速中断和外部中断引脚上有信号,并且处理器允许响应它们。处理器会分别切换到快速中断模式或者外部中断模式。
  • 3)SWI指令。在用户模式下处理器若执行SWI软中断指令,处理器会切换到系统管理模式。

用户模式最大的优点是能有效地保护系统资源,防止恶意软件的不良行为。所以专门用于运行应用软件,使构建现代意义的操作系统成为可能。