1.3 计算机组成、体系结构与嵌入式处理器

计算机组成主要是指计算机的硬件组成部件以及实现这些硬件功能所使用的材料、实现的理论与技术方法,以及各组成部分的逻辑关系,它决定着计算机的性能和功能。

目前正在使用的计算机是由电子来传递和处理信息的。电子在导线中传播的速度虽然比人们看到的任何运载工具的运动速度都快,但是,从发展高速率计算机来说,采用电子作传输信息载体还不能满足更快的要求,提高计算机运算速度也明显表现出它的能力是有限的。而光子计算机是以光子作为传递信息的载体,以光互连代替导线互连,以光硬件代替电子硬件,以光运算代替电子运算,利用激光来传送信号,并由光导纤维与各种光学元件等构成集成光路,从而进行数据运算、传输和存储。在光子计算机中,不同波长、频率、偏振态及相位的光代表不同的数据,这远胜于电子计算机中通过电子“0”“1”状态变化进行的二进制运算,可以对复杂度高、计算量大的任务实现快速的并行处理。光子计算机的主板中不存在电磁干扰,使信道的传输速率更快,将使运算速度远远高于现有的计算机速度。目前正在研究中的计算机还有量子计算机、超导计算机和多值计算机等。

计算机体系结构主要指计算机的系统化设计和构造,不同的计算机体系结构适用于不同的需求或应用。从传统意义的指令界面上来看,现代计算机的体系结构基本划分成两大类:复杂指令集计算机系统CISC体系(如x86芯片)和简化指令集计算机系统RISC体系(如ARM芯片)。

因此,可以说嵌入式处理器是一种结合了x86个人计算机的PC体系结构、实时控制系统的要求和简化指令集之后产生的,满足实时控制系统应用的计算机体系结构。以下将分别介绍冯·诺依曼结构、哈佛结构、精简指令集计算机(RISC)和流水线计算机等内容。

1.3.1 冯·诺依曼结构与哈佛结构

1.冯·诺依曼Von Neumann结构

冯·诺依曼结构的计算机由CPU和存储器构成,其程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置;采用单一的地址及数据总线,程序指令和数据的宽度相同。程序计数器(PC)是CPU内部指示指令和数据的存储位置的寄存器。

目前使用冯·诺依曼结构的CPU和微控制器的品种有很多,例如Intel公司的x86系列及其他CPU、ARM公司的ARM7、MIPS公司的MIPS处理器等。

2.哈佛Harvard结构

哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。系统中具有程序的数据总线与地址总线、数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字和操作数,从而提高执行速度,提高数据的吞吐率。又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠,具有较高的执行效率。

目前使用哈佛结构的CPU和微控制器品种有很多,除DSP处理器外,还有摩托罗拉公司的MC68系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11等。

1.3.2 精简指令集计算机(RISC)

1.2/8规律

早期的计算机采用复杂指令集计算机(CISC)体系。采用CISC体系结构的计算机各种指令的使用频率相差悬殊,统计表明,大概有20%比较简单的指令被反复使用,使用量约占整个程序的80%;而有80%左右的指令则很少使用,其使用量约占整个程序的20%,即指令的2/8规律。

2.RISC

精简指令集计算机(RISC)体系结构是20世纪80年代提出来的。目前Intel等公司都在研究和发展RISC技术,RISC已经成为计算机发展不可逆转的趋势。

3.RISC的特点

RISC是在CISC的基础上产生并发展起来的,RISC的着眼点不是简单地放在简化指令系统上,而是通过简化指令系统使计算机的结构更加简单合理,从而提高运算效率。

● 在RISC中,优先选取使用频率最高的、很有用但不复杂的指令,避免使用复杂指令。

● 固定指令长度,减少指令格式和寻址方式种类。

● 指令之间各字段的划分比较一致,各字段的功能也比较规整。

● 采用Load/Store指令访问存储器,其余指令的操作都在寄存器之间进行。

● 增加CPU中通用寄存器数量,算术逻辑运算指令的操作数都在通用寄存器中存取。

● 大部分指令控制在一个或小于一个机器周期内完成。

尽管RISC架构与CISC架构相比具有较多的优点,但RISC架构也不可以取代CISC架构。事实上,RISC和CISC各有优势。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC两者的优势,成为未来的CPU发展方向之一。在PC和服务器领域,CISC体系结构是市场的主流。

在嵌入式系统领域,由于注重的是实时性效果,要求在系统主频一定的情况下有较高的信息处理能力,精简指令集计算机(RISC)系统可以使所有的机器指令具有相同的长度,易于进行流水线处理,大大提高了计算机执行指令的速度。因此RISC结构的微处理器在该领域将占有重要的位置。

1.3.3 流水线计算机

1.流水线的基本概念

精简指令集计算机(RISC)为微处理器的指令流水线执行提供了先决条件。流水线技术应用于计算机体系结构的各个方面,其基本思想是将一个重复的时序分解成若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。

流水线结构的类型众多。指令流水线就是将一条指令分解成一连串执行的子过程,例如,把指令的执行过程细分为取指令、指令译码、取操作数和执行4个子过程,每个过程的执行时间相同。

把一条指令的串行执行子过程变为若干条指令的子过程在CPU中重叠执行。如果能做到每条指令均分解为m个子过程,且每个子过程的执行时间都一样,则利用此条流水线可将一条指令的执行时间由原来的T缩短为T/m。指令流水线处理的时空图如图1-1所示,其中的1、2、3、4、5表示要处理的5条指令。从图1-1中可见采用流水方式可同时执行多条指令。

图1-1 五级流水线指令执行示意图

2.流水线处理机的主要指标

(1)吞吐率

在单位时间内,流水线处理机流出的结果数称为吞吐率。对指令而言就是单位时间内执行的指令数。如果流水线的子过程所用时间不一样长,则吞吐率P应为最长子过程的倒数,即

P=1/max{Δt0,Δt1,…,Δtm}

(2)建立时间

流水线开始工作,须经过一定时间才能达到最大吞吐率,这就是建立时间。若m个子过程所用时间一样,均为t0,则建立时间T0=mΔt0

1.3.4 嵌入式微处理器的信息存储方式

1.大端和小端存储方式

大多数计算机使用8位数据块作为最小的可寻址存储器单位,称为1字节。存储器的每一个字节都用一个唯一的地址(address)来标识。所有可能地址的集合称为存储器空间。

对于软件而言,它将存储器看作一个大的字节数组,称为虚拟存储器。在实际应用中,虚拟存储器可以划分成不同单元,用来存放程序、指令和数据等信息。例如,在C语言中定义的整型数据变量:int x,表示变量x在内存中占有4字节。

在微处理器中,使用字长(word)来表明整数和指令数据的大小。字长决定了微处理器的寻址能力,即虚拟地址空间的大小。对于一个字长为n位的微处理器,它的虚拟地址范围为0~2n-1。例如一个32位的微处理器,可访问的虚拟地址空间为232,即4GB。

对于一个多字节类型的数据,在存储器中有两种存放方式:小端方式与大端方式。

小端方式:是指低字节数据存放在内存低地址位置处,高字节数据存放在内存高地址位置处,称为小端字节顺序存储法或简称小端方式。

大端方式:是指高字节数据存放在低地址位置处,低字节数据存放在高地址位置处,称为大端字节顺序存储法或简称大端方式。

例如,假设在一个32位字长的微处理器上定义一个int类型的常量a,其内存地址位于0x1000处,其值用十六进制表示为0x12345678。如果按小端方式存储,则其最低字节数据0x78存放在内存低地址0x1000处,最高字节数据0x12存放在内存高地址0x1003处,如图1-2a所示。如果按大端方式存储,则其最高字节数据0x12存放在内存的低地址0x1000处,而最低字节数据0x78存放在内存的高地址0x1003处,如图1-2b所示。

图1-2 数据存储的小端与大端存储方式

a)小端方式存储数据格式 b)大端方式存储数据格式

采用大端存储方式还是小端存储方式,各处理器厂商的立场和习惯不同,并不存在技术原因。Intel公司x86系列微处理器都采用小端存储法,而IBM、Motorola和Sun Microsystems公司的大多数微处理器采用大端存储法。此外,还有一些微处理器,如ARM、MIPS和Motorola的PowerPC等,可以通过芯片上电启动时确定的字节存储顺序规则,来选择存储模式。

另外,是大端存储方式还是小端存储方式,不但可以由计算机系统的硬件决定,也可以由工具语言的编译器来决定。

对于大多数程序员而言,机器的字节存储顺序是完全不可见的,无论哪一种存储方式的微处理器编译出的程序都会得到相同的结果。不过,当不同存储方式的微处理器之间通过网络传送二进制数据时,在有些情况下,字节顺序会成为问题,会出现所谓的“UNIX”问题。字符“UNIX”在16位字长的微处理器上被表示为两个字节,当被传送到不同存储模式的机器上时,则会变为“NUXI”。

为了避免这类问题,网络应用程序代码编写必须遵循已建立好的网络信道传输数据的字节顺序的协议,以保证发送方微处理器先在其内部将发送的数据转换成网络标准,而接收方微处理器再将网络标准转换为它的内部表示。也就是说,不管网络主机本身采用何种存储方式,网络工具软件采用何种存储方式,在网络信道上必须遵循统一的规则或称协议。

2.可移植性问题

当在不同存储顺序的微处理器间进行程序移植时,要特别注意存储模式的影响。把从软件得到的二进制数据写成一般的数据格式往往会涉及存储顺序的问题。

在多台不同存储顺序的主机之间共享信息可以有两种方式:一种是以单一存储方式共享数据,另一种是允许主机以不同的存储方式共享数据。使用单一存储方式只要解释一种格式,解码简单。使用多种存储方式不需要对数据的原顺序进行转化,使得编码容易。当编码器和解码器采用同一种存储方式时,因为不需要变换字节顺序,能提高通信效率。

3.网络信道中的字节顺序问题

在网络通信中,Internet协议(IP)定义了标准的网络字节顺序。该字节顺序被用于所有设计使用在IP上的数据包、高级协议和文件格式上。

很多网络设备也存在存储顺序问题,即字节中的位采用大端法(最重要的位优先)或小端法(最不重要的位优先)发送。这取决于OSI模型最底层的数据链路层。

在以太网络的网卡中,字节数据的传输顺序同书写顺序,相当于大端方式,数据高位在前、低位在后。