1.6 计算机体系结构
计算机体系结构定义了计算机系统的设计思路和功能。微型计算机的组件被设计为可以彼此交互,并且这种交互在整个系统的运行中起着重要的作用。
1.6.1 微型计算机的组成
标准微型计算机由CPU、总线、存储器、并行输入/输出(Input/Output,I/O)接口、串行I/O接口、可编程中断和直接存储器访问(Direct Memory Access,DMA)等部分组成,图1-16为微型计算机的组成。
图1-16 微型计算机的组成
CPU是计算机的“大脑”,负责接收各输入设备的数据,将数据处理成信息并传送至存储器和输出设备。CPU主要由算术逻辑单元(Arithmetic and Logic Unit,ALU)、寄存器和控制单元构成。
ALU的功能是执行算术运算,如加法、减法、乘法、除法以及与、或、非等逻辑运算,ALU示意如图1-17所示。
图1-17 ALU示意
控制单元的功能是控制I/O设备,产生控制信号给计算机的其他组件,如读/写信号、执行指令等。信息从内存传输到寄存器,然后寄存器将信息传递给ALU进行算术或逻辑运算。
微处理器与CPU的功能一样。如果将ALU、寄存器和控制单元封装在一个IC中,则该单元被称为微处理器,否则该单元被称为CPU。在本书中不对两者进行区别。
1.6.2 CPU架构
目前,CPU主要有两种架构:复杂指令集计算机(Complex Instruction Set Computer,CISC)和精简指令集计算机(Reduced Instruction Set Computer,RISC)。
CISC以Intel公司、AMD公司的X86 CPU为代表。80×86 CPU也称作CISC,包含了早期Intel公司CPU的指令。CISC的主要特点有:①大量的指令;②多种寻址模式;③可变长度的指令;④大多数指令可以操纵内存中的操作数;⑤控制单元微程序(微码)。
RISC以Acorn公司的ARM、IBM公司的IBM Power为代表,其设计的初衷是针对CISC CPU复杂的弊端,选择一些可以在单个CPU周期完成的指令,以降低CPU的复杂度,将复杂性交给编译器。因为指令很简单,所以RISC的一个优点是可以非常快地执行它们的指令。另外,与CISC芯片相比,RISC芯片需要的晶体管更少。RISC的主要特点有:① 所有指令的长度都相同(可以轻松解码);② 大多数指令可在一个机器时钟周期内执行;③ 控制单元为硬连线;④ 很少的寻址模式;⑤ 大量的寄存器。
CISC和RISC的主要区别见表1-14。具体地,CISC和RISC有以下区别。
表1-14 CISC和RISC的主要区别
① 指令系统:RISC设计者把主要精力放在经常使用的指令上,尽量使它们具有简单高效的特色,对不常用的功能,常通过组合指令来完成,因此,在RISC上实现特殊功能时,效率可能较低,需要利用流水线技术和超标量技术来改进和弥补;CISC的指令系统比较丰富,有专用指令来完成特定的功能,因此,处理特殊任务效率较高。
② 存储器操作:RISC对存储器操作有限制,使控制简单化;而CISC的存储器操作指令多,操作直接。
③ 程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。
④ 中断:RISC在指令执行的适当地方可以响应中断;而CISC只能在一条指令执行结束后响应中断。
⑤ CPU:RISC架构的CPU包含较少的单元电路,因而面积小、功耗低;而CISC架构的CPU包含丰富的电路单元,因而功能强、面积大、功耗大。
⑥ 设计周期:RISC微处理器结构简单、布局紧凑、设计周期短,且易于采用最新技术;CISC微处理器结构复杂、设计周期长。
⑦ 用户使用:RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
⑧ 应用范围:由于RISC指令系统的确定与特定的应用领域有关,故RISC更适合专用机;而CISC则更适合通用机。
1.6.3 计算机总线
计算机总线是计算机各部件之间传递信息的基本通道,一般由多条连线组成,传输同一类信息。微型计算机最常见的总线是地址总线、数据总线和控制总线。
1.地址总线
地址总线用于传输地址的信息。地址通常由CPU提供,所以地址总线一般为单向传输。地址总线通过2n定义存储器IC中可寻址位置的数量,其中n为地址总线的数量。如果地址总线由3条线组成,则有23=8个可寻址的存储单元,如图1-18所示。地址总线的数量直接决定了CPU可以访问的最大存储单元数。
图1-18 具有3条地址线和4条数据线的存储器
2.数据总线
数据总线用于传递数据信息。此处的“数据”为广义数据,既可以是一般意义上的数据(如送往打印机的打印数据),也可以是指令代码(如将磁盘上的程序加载到内存),还可以是状态或控制信息(如外部设备送往CPU的状态信息)。数据总线可双向传输,CPU既可以向其他部件发送数据,也可以接收来自其他部件的数据。
3.控制总线
控制总线用于传送控制信号。如CPU向内存或I/O接口电路发出的读/写信号、I/O接口电路向CPU发送的用于同步工作的联络信号等。部分控制信号如下。
读信号:从存储器或I/O设备读取信息。
写信号:用于将数据写入存储器。
中断:表示一个中断请求。
总线请求:用于设备向计算机请求使用总线。
总线允许:授予请求设备使用计算机总线的权限。
I/O读/写:用于读取或写入I/O设备。
1.6.4 CPU结构
Architecture表示架构、结构,这个词用于CPU的时候有两层意思:CPU架构,指大的层面,分为两类——CISC和RISC;CPU结构,层面较小,指CPU接受和处理信号的方式及其内部元件的组织方式。目前,CPU结构主要有两种类型:冯·诺依曼结构和哈佛结构。
冯·诺依曼结构又称为普林斯顿(Princetion)体系结构,如图1-19所示。1945年,冯·诺依曼首先提出了“存储程序”的概念和二进制原理,后来,在这种概念和原理的基础上设计的电子计算机系统统称为“冯·诺依曼结构”计算机。
图1-19 冯·诺依曼结构
在冯·诺依曼结构中,指令和数据共享同一总线。在典型情况下,完成一条指令需要3个步骤:指令获取、指令译码和指令执行,这种结构使信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。冯·诺依曼结构是现代计算机的基础,现在大多数计算机仍是冯·诺依曼结构计算机。
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如图1-20所示。CPU首先从程序指令存储器读取程序指令内容,解码后得到数据地址,再从相应的数据存储器读取数据,并进行下一步操作。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。
图1-20 哈佛结构
哈佛结构的微处理器通常具有较高的执行效率。由于程序指令和数据指令是分开组织和存储的,所以执行指令时可以预先读取下一条指令。但哈佛结构复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。所以,早期通用CPU难以采用这种结构。目前,使用哈佛结构的CPU有很多,除了Microchip公司的PIC系列芯片,还有Motorola公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11等。
两种结构的最大区别是程序空间和数据空间是否为一体。早期的微处理器大多采用冯·诺依曼结构,典型代表是Intel公司的X86微处理器,取指令和取操作数都在同一总线上,通过分时服务的方式进行。缺点是在高速运行时,不能同时取指令和取操作数,从而形成了传输过程的瓶颈。哈佛结构由于芯片内部程序空间和数据空间分开,允许同时取指令和取操作数,从而大大提高了运算能力,典型应用以DSP和ARM为代表。
在结合两者特点的基础上出现了改进型哈佛结构,如图1-21所示,其结构特点为:① 使用两个独立的存储器(程序存储器和数据存储器),分别存储指令和数据,每个存储器都不允许指令和数据并存;② 具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储器,公用数据总线则被用来完成程序存储器或数据存储器与CPU之间的数据传输;③ 两条总线由程序存储器和数据存储器分时复用。
图1-21 改进型哈佛结构
改进型哈佛结构应用范围很广。虽然51单片机的程序指令存储和数据存储是分开的,但总线是分时复用的,所以属于改进型哈佛结构。现代的处理器虽然从外部总线上看为冯·诺依曼结构,但是由于内部缓存的存在,已经类似改进型哈佛结构。