1.3 普林斯顿结构和哈佛结构

普林斯顿结构和哈佛结构是根据计算机的运算内核与程序存储器和数据存储器的不同连接方式而加以区分的两种计算机体系结构。

普林斯顿结构也称冯·诺伊曼结构,如图1-2所示,它是一种将程序存储器和数据存储器合并在一起的计算机结构,也就是说,程序存储器和数据存储器共用一条地址总线和数据总线。由于程序指令存储地址和数据存储地址指向同一个存储空间的不同物理位置,因此程序指令和数据的宽度相同,例如英特尔8086处理器的程序指令和数据都是16位。

图1-2 普林斯顿结构简化示意图

这种程序指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能提升的瓶颈,也影响了数据处理速度的提高。

使用普林斯顿结构的处理器包括英特尔公司的8086、Arm公司的Arm7、MIPS公司的MIPS处理器等。

哈佛结构是一种将程序指令存储和数据存储分开的计算机结构,如图1-3所示,也就是说,程序存储器和数据存储器使用各自独立的地址总线和数据总线。运算内核首先到程序存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,使程序指令和数据的数据宽度不同,如Microchip公司的PIC16芯片的程序指令是14位,而数据是8位。

图1-3 哈佛结构示意图

哈佛结构的处理器通常具有较高的执行效率,其独立的程序总线和数据总线使处理器很容易实现流水线操作,也就是在执行当前指令时可以预先读取下一条指令。使用哈佛结构的处理器有很多,例如Microchip公司的PIC单片机、ATMEL公司的AVR单片机和Arm公司的Arm9内核之后的处理器等,8051单片机也属于哈佛结构。

目前的高性能处理器的发展趋势是在芯片内部使用结构复杂、效率较高的哈佛结构,在芯片外部使用结构简单的普林斯顿结构。

本书使用的STM32微控制器使用了Arm公司的Cortex-M3内核,是一款采用哈佛结构的RISC处理器。