从零开始学ARM
上QQ阅读APP看书,第一时间看更新

1.1.2 计算机结构

计算机的核心是CPU,CPU结构主要有两种:哈佛结构、冯·诺依曼体系结构。现代计算机绝大多数基于冯·诺依曼体系结构。

1.冯·诺依曼体系结构

冯·诺依曼体系结构也被称为普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。如Intel公司的8086中央处理器的程序指令和数据都是16位宽。

冯·诺依曼体系结构主要包括以下几部分。

(1)包含算术逻辑部件(ALU)和处理器寄存器的运算器单元,用来完成各种算术和逻辑运算。

(2)包含指令寄存器和程序计数器(PC)的控制器单元,通常用来控制在不同条件下程序的分支和跳转,在现代计算机里,控制器单元和运算器单元共同组成了CPU。

(3)内存单元,用于存储数据和指令。

(4)各种输入设备和输出设备。

现代计算机也都是基于这个体系结构来设计开发的,冯·诺依曼体系结构模型如图1-5所示。

图1-5 冯·诺依曼体系结构模型

计算机程序最主要的思想就是存储程序并顺序执行,对其有以下规定。

(1)把需要的程序和数据送至计算机中。

(2)必须具有长期记忆程序、数据、中间结果和最终运算结果的能力。

(3)能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。

(4)能够根据需要控制程序走向,并能根据指令控制机器的各部件使其协调操作。

(5)能够按照要求将处理结果输出给用户。

其实所有的计算机程序,其功能都可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。而无论是高级语言还是低级语言的程序,也都是基于这样一个抽象体系结构来进行运作的。

2.哈佛结构

冯·诺依曼体系结构和哈佛结构是有区别的。在冯·诺依曼体系结构中,程序指令存储器和数据存储器都可以放到内存中,被统一编码,而在哈佛结构中它们被分开编码。

哪些处理器是哈佛结构?哪些处理器是冯·诺依曼体系结构?

MCU(单片机)绝大多数采用哈佛结构,例如广泛使用的51单片机、典型的STM32单片机(核心是ARM Cortex-M系列的)。

PC和服务器芯片(如Intel AMD),ARM Cortex-A系列嵌入式芯片(如三星Exynos 4412,华为的麒麟970等手机芯片)采用冯·诺依曼体系结构。因为这些系统都需要大量内存,且其为DRAM(动态随机存储器),所以它们更适合使用冯·诺依曼体系结构。

实际上,现代的CPU准确地说叫作SoC(单片系统),绝大多数不是纯粹的哈佛结构或冯·诺依曼体系结构,而是混合结构。

例如基于Exynos 4412的开发板上配备了1GB的DDR SDRAM(双倍数据速率同步动态随机存储器)和8GB的eMMC(闪存)。正常工作时所有的程序和数据都从eMMC加载到DDR SDRAM中,也就是说不管是程序还是数据都存储在eMMC中,运行在DDR SDRAM中,再通过高速缓存寄存器将它们送给CPU加工处理。这就是典型的冯·诺依曼体系结构。但是,Exynos 4412内部仍然有一定容量的64KB IROM和64KB IRAM,这些IROM和IRAM用于引导和启动SoC,上电后芯片首先会执行内部IROM中固化的程序,此时Exynos 4412就好像一个MCU(微控制器),这又是典型的哈佛结构。因此,Exynos 4412就是混合式结构设计。