深度探索嵌入式操作系统:从零开始设计、架构和开发
上QQ阅读APP看书,第一时间看更新

3.2.1 ARM920T CPU结构

mini2440开发板采用了S3C2440A芯片,而S3C2440A芯片又采用了ARM公司设计的ARM920T CPU。上次研究了计算平台——mini2440开发板。发现上面有个叫S3C2440A的黑盒子,并打开了它,发现它里面又有许多黑盒子,并且对其中一些黑盒子做了简要的介绍,如图3-1所示。另外,为了便于阅读,把2-4的图又搬过来,笔者觉得虽然增加篇幅,但是节省了回去翻书的时间。

图3-1就是S3C2440A这个黑盒子内部结构图,其实早已看过,不过上次我们没有继续拆开它里面的黑盒子。其中有个非常重要的黑盒子——ARM920T,它才是这次要关注的重点,下面打开它,看看它里面又有什么,如图3-2所示。

图3-1 S3C2440A逻辑结构视图

图3-2 ARM920T逻辑结构视图

ARM920T里面的黑盒子以及功能单元如下:

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

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

3)指令、数据MMU:包括两个C13一起处理内存地址映射的。

4)指令、数据Cache:包括写回PATAG RAM、写缓冲,一起完成高速缓存的功能。

5)CP15:这里是用于控制MMU和Cache的,还可以控制别的器件,不同的系统配置下是不同的。

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

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

不过不需要把所有的东西都弄得一清二楚。我们主要关注4个部分:①CPU内核:和ARM920T内部的其他部件一起工作,用来运行程序。包括操作系统内核和应用程序。②MMU:映射内存,主要用于实现虚拟内存,什么是虚拟内存后面会介绍的。③Cache:缓存内存中的指令和数据,它比内存小很多但快很多,把内存中的一部分内容放在Cache里面,这样可以加快程序的运行速度,后面也会详细介绍的。④CP15:它在ARM920T内部称为协处理器,在这里是专门用于控制MMU和Cache的。可以看到ARM920T还能通过外部协处理器接口增加其他协处理器。

CPU内核对应于图3-2中的ARM9TMDI。操作系统和应用程序都需要它执行,所以我们写操作系统内核之前,必须先仔细了解它,以及ARM920T的其他组件。后面会重点研究ARM920T的程序员模型,即指令集、工作模式、寄存器等。

MMU对应于图3-2中的指令MMU、数据MMU。为什么有两个MMU,通常情况下一个MMU不就够了吗?是的,大部分CPU确实只有一个MMU,然而这里有两个,这是因为ARM920T内部采用了哈佛架构。哈佛架构是一种将程序指令存储和数据存储分开的存储器架构。是一种并行体系架构,指令和数据可以独立存取,这样就大大提高了程序的运行性能。

Cache对应于图3-2中的指令Cache、数据Cache,同样也是因为哈佛架构才会有两个Cache。它们都是16KB。关于Cache的工作机制,后面会专门介绍,现在只要知道它是用来缓存内存中的数据的,速度比内存快很多。

CP15对应于图3-2中的CP15,称为协处理器。在ARM920T中,CP15控制着MMU和Cache,比如我们要打开或者关闭MMU、改变地址映射关系、打开或者关闭Cache、锁定Cache中的内容、使Cache中的数据变为无效等。这些功能都将通过操作CP15协处理器而达到,后面会专门详细介绍它。