目前,各种微型计算机的硬件均由微处理器、存储器、输入/输出接口以及输入/输出设备这几部分组成,其硬件结构框图如图1-6所示。
图1-6中的微处理器包含图1-5中的运算器和控制器,RAM和ROM为存储器,外部设备为输入设备、输出设备的总称。各组成部分之间通过数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus)连接在一起。微型计算机的这种硬件结构称为三总线结构,也称为总线结构。总线结构使得内部系统构成方便,并具有很好的可维护性和可扩展性。
图1-6 微型计算机的硬件结构框图
根据总线的组织方式,可把微型计算机的硬件结构分为单总线结构、双总线结构和双层总线结构。
单总线结构的微型计算机如图1-7所示。存储器和I/O接口(接外部设备)使用一组总线(系统总线,含AB、DB和CB)传输信息,微处理器对I/O接口和存储器的访问只能分时进行,随着I/O接口与微处理器之间信息量增大,可使系统的吞吐量趋于饱和,从而导致系统性能下降。目前在许多单片机系统中仍采用这种结构,因为它结构简单,成本低,并易于实现。
图1-7 单总线结构的微型计算机
双总线结构微型计算机如图1-8所示。I/O接口和存储器各使用一组总线与微处理器进行信息传输,微处理器可同时访问I/O接口和存储器。这种结构的优点是,微处理器可以分别在两套总线上同时与存储器和I/O接口进行信息传输,相当于提高了信息传输速率。但由于微处理器要同时管理它与I/O接口和存储器之间的信息通信,故增加了微处理器自身的负担。为解决这一矛盾,可选用专门的I/O处理芯片来完成与I/O接口的管理任务。
图1-8 双总线结构微型计算机
双层总线结构微型计算机如图1-9所示。该结构中,可有多个微处理器和其他主控设备(如DMA控制器)。微处理器可通过局部总线访问局部存储器和局部I/O接口,其工作方式与单总线情况一样。当某微处理器需要访问全局存储器和全局I/O接口时,必须由总线控制逻辑部件统一进行安排。当该微处理器作为系统主控设备,使用全局存储器和全局I/O时,其他微处理器可以通过局部总线访问局部存储器和局部I/O接口。故该结构可实现双层总线上的并行工作,由此可提高系统数据处理和系统传输效率。
图1-9 双层总线结构微型计算机
所谓总线,实际上是一组专门用于信息传输的公共信号线,各相关部件都被连接在这组公共线路上,采用分时操作进行控制,实现独立的信息传送。按传输信息类别区分,总线分为传输数据信息的数据总线DB、传输地址信息的地址总线AB和传输控制信息的控制总线CB。按传输信息方向区分,总线分为只能单方向传输信息的单向总线和可以双向传送信息的双向总线。
1.数据总线DB
数据总线用于传输数据信息,是双向总线。它可实现微处理器与存储器、微处理器与I/O接口之间的数据传送。DB总线的位数与微处理器的字长密切相关,DB总线的位数越宽,一次性传输数据的信息量就越大,计算机的整体执行速度就会越快。例如8位数据总线,一次只能传输1个字节的数据信息,而64位的数据总线则一次可以传输8个字节的数据信息。
2.地址总线AB
地址总线用于传送CPU发出的地址信息,是单向总线。地址信息用于找寻存储器或外部设备,AB总线的位数决定了外界存储器最大的存储容量。AB总线的位数越宽,可以寻址的内存空间就越大。通常8位微处理器的地址总线为16位,即有AB 15 ~AB 0 共16条地址线,内存空间寻址范围为2 16 =64KB;32位微处理器的地址总线通常是32位,即可以寻址4GB的内存物理存储空间。
3.控制总线CB
控制总线是微处理器向各部件发出的控制信息、时序信息以及外部设备发送到微处理器的请求信息的总称,这些信息起控制作用。它包括微处理器向存储器发送的读选通信号 、写选通信号 ,以及外部设备向微处理器发送的中断请求信号NMI和INTR等。控制总线中每一根线的方向都是一定的且是单向的,但作为整体来看则是双向的,所以图1-6~图1-9中的控制总线仍然以双向表示,而实际情况与数据总线的双向会有所不同。
1.微处理器
微处理器的内部结构如图1-10所示。
图1-10 微处理器的基本组成
微处理器是微型计算机的运算和控制指挥中心,主要由运算器、控制器、寄存器组(阵列)以及内总线组成,合称为中央处理器CPU(Central Processing Unit)。微型计算机的中央处理器由于体积微小也称为微处理器MPU(Microprocessor Unit)。
(1)运算器
运算器是执行算术运算和逻辑运算的部件,由累加器ACC(Accumulator)、暂存器TMP(Temporary)、算术逻辑单元ALU(Arithmetic Logic Unit)、标志寄存器FR(Flag Registers)和一些逻辑电路组成。
1)累加器ACC:用于寄存运算前的数据及运算结果。
2)暂存器TMP:用于暂存运算前的数据。
3)算术逻辑单元ALU:ALU是运算器的核心,它主要完成算术运算与逻辑运算操作。它以累加器ACC的内容为第一运算操作数,暂存器TMP的内容为第二运算操作数,并将运算后的结果送入累加器ACC中。
4)标志寄存器FR:用于反映运算过程和运算结果的某些状态或特征,例如运算过程中是否产生了进/借位,运算结果是正还是负、是否为零等。每种状态或特征都用FR中一个相应的标志位来表示。FR中的状态标志常为CPU执行后续指令时所用,如根据运算结果是否满足条件来决定程序是顺序执行还是跳转执行。
在80386以上的微处理器中,FR除存放状态标志外,还存放控制标志和系统标志。
(2)控制器
控制器是指令执行部件,包括取指令、分析指令(指令译码)和执行指令,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器(Operate Control)三个部件组成。这三个部件是整个微处理器的指挥控制中心,对协调微型计算机有序工作极为重要。
CPU根据用户预先编好的程序,依次逐条从存储器中将指令取出来放在IR,由ID进行译码分析,确定应该进行什么操作后,操作控制电路根据译码结果,定时向相应的部件发出控制信号,完成指令指定的操作。
(3)寄存器组
在微处理器内部的寄存器组中,主要由通用寄存器和专用寄存器组成。
1)通用寄存器。通用寄存器的作用是暂时存放ALU需要用到的数据,方便完成各种数据操作。通用寄存器的数目主要因微处理器的结构而异,通常8位机、16位机的数量较少,32位机、64位机的数量较多,通用寄存器的数量越多越有利于减少CPU访问普通存储器的次数,有利于加快数据处理速度。
由于寄存器的存取速度比存储器快,通用寄存器可用于存放某些需要重复使用的操作数或中间结果,从而避免了对存储器的频繁访问,缩短了指令的执行时间,加快了CPU的运算处理速度,但由于CPU的处理速度以及内部结构的限制,其内部寄存器的数量也是有限的。
2)专用寄存器。专用寄存器一般不会用于存放进行数据运算时的数据和运算结果,它们在程序的执行过程中有特殊功能,如程序计数器PC(Program Counter)、堆栈指示器SP(Stack Pointer)等。
①程序计数器PC。程序计数器PC用于存放下一条要执行的指令在存储器中存放的地址,通常称为PC指针。程序中的各条指令一般均顺序存放在存储器中,一个程序开始执行时,PC中保存的二进制信息为该程序第一条指令所在存储单元的地址。微处理器总是以当前PC的值为指针,从所指定的存储单元中取指令。每从存储器中取出一个字节的指令,PC指针的内容就自动加1,当从存储器中取完一条指令的所有字节进入执行指令时,PC中所存放的信息便是下一条将要执行的指令的地址。这样,在多数情况下程序的各条指令得到顺序执行。若要实现程序转移操作,只要在前一指令的执行过程中,把转移目标的新地址装入PC,就可使微处理器从目标地址开始执行程序。
②堆栈及堆栈指示器SP。堆栈是指一片特殊的具有记忆功能的存储空间,它可以由微处理器内部的寄存器构成,也可以由软件在内存中开辟一个特定区域构成。由寄存器组成的堆栈称为硬件堆栈,由一片特定的存储区构成的堆栈称为软件堆栈。目前,绝大多数CPU都支持软件堆栈。
堆栈一旦形成就必须遵循先进后出FILO(First In Last Out)的原则对栈区的数据进行操作。堆栈区中的每个数据被称为堆栈元素,如图1-11中的22H、11H、00H、05H。将数据存入堆栈区称为“压栈”(PUSH),从栈区中取出数据称为“弹栈”(POP),最后压入堆栈区的数据称为栈顶元素,如图1-11中的05H。由于堆栈区只有一个数据出入口,因此压栈和弹栈操作总在栈顶进行。
堆栈指示器SP是一个16位的地址寄存器,它的内容始终是当前堆栈栈顶元素所在位置的地址,如图1-11所示。由于对堆栈的操作始终是在栈顶进行的,所以栈顶元素所在位置的地址也不是固定不变的,即随着对堆栈的一次压栈或弹栈操作的进行,SP的内容就会自动变化,其变化的方向因栈区的编址方式而异。
图1-11 堆栈区示意图
堆栈区的编址方式有两种,即向下增长型和向上增长型。对于向下增长型堆栈,一次压栈操作,数据压入栈区后,SP自动减量,向上浮动指示新的栈顶;一次弹栈操作,数据弹出栈区后,SP自动增量,向下浮动指示新的栈顶。对于向上增长型堆栈其SP变化方向相反。
堆栈增减量的大小因操作数类型而异,如字节型数据增减量为1、字型数据增减量为2。
2.存储器
存储器是计算机中存储程序和数据的部件。存储器由半导体存储单元构成,每个存储单元可存放一个8位二进制数据。存储器的性能通常用存储容量和存取速度来描述。
存储容量是描述存储器存储二进制信息量多少的指标。存储二进制信息的基本单位是位(Bit),但在计算存储容量时常用字节Byte(8位二进制信息)和字Word(16位二进制信息)作单位,并且将2 10 =1024个字节称为1KB,1024KB称为1MB,1024MB称为1GB,1024GB称为1TB。通常所称的计算机内存容量就是指能存放的最大字节数。每个存储单元的查找是通过地址进行管理,存储容量越大,需要的地址线也就越多。例如1MB的存储容量需要A 19 ~A 0 共20条地址线;若有32条地址线则能管理4GB的内存容量。存储器单元与地址之间的关系如图1-12所示。
图1-12 存储器单元与地址的关系
存取速度是描述存储器工作快慢程度的指标,指信息存入存储器和从存储器中取出所需要的时间。微型计算机CPU的运行速度远大于内存读取速度。因此,内存的存取速度快慢会对计算机的整体运行速度产生较大影响。通常内存的速度是以频率来表示的,比如533MHz的内存条等,选用频率高的内存条有利于提高整机速度。
3.输入/输出接口
CPU需要与外部设备进行数据交换,但由于CPU与外部设备存在速度配合及信号不匹配等问题,不能直接与外部设备连接,因此引入计算机输入/输出接口。该接口是CPU与外部设备之间交换信息的连接电路,它们通过总线与CPU相连,简称I/O接口。
常见输入/输出接口有VGA接口、标准视频输入(RCA)接口、USB接口、RS-232C串口以及音频输入/输出接口等。
4.输入/输出设备
使用微型计算机就必须进行人机交互,将外部信息传送到微型计算机称为输入;将微型计算机的运行结果传送出来称为输出。能完成信息输入或输出的设备称为输入/输出设备,二者也合称为外部设备,简称外设。
输入设备的作用是把信息送入计算机。最常用的输入设备是键盘和鼠标,还有摄像头、图形扫描仪和条形码读入器等。
输出设备的作用是将计算机的运算结果通过图像、数据和打印等方式输出出来。最常用的输出设备是显示器和打印机。
也有些设备既是输入设备,又是输出设备,如触摸式一体化微型机的触摸屏。
计算机的核心是CPU,了解CPU的工作过程对于理解计算机内部工作原理非常重要。为了便于理解,下面以模型机为例加以说明。
指令是规定计算机执行某种特定操作的命令。程序是由若干条指令按特定次序组成的。计算机一条条地执行指令,从而完成程序所设定的特定功能。
每条指令由操作码和操作数构成。操作码代表着指令的命令本身,是每条指令不可缺少的部分;操作数是指令操作的对象,有的指令的操作对象隐含在操作码中,故可以没有操作数。
CPU的工作过程是在内部时钟的控制下,循环往复进行取指令、分析指令和执行指令这三步操作,来完成一条一条的指令规定动作,最终完成程序所设定的功能。
计算机内部由系统时钟来控制时序逻辑电路的执行动作。计算机内部的最小时间单位是1个时钟周期 T ,即CPU主频的倒数。所以主频越高,CPU执行速度越快。
完成一个机器动作所需要的时间叫作机器周期。例如取指周期,通常一个机器周期需要4个时钟周期 T 来完成。
完成一条指令所需要的时间叫作指令周期。每条指令由一个或多个机器周期构成。有的指令在一个机器周期内能完成,叫作单周期指令;有的指令需要多个机器周期才能完成,叫作多周期指令。
现以下面简单程序为例,说明程序的执行过程:
本段程序已放入内存指定位置,内部结构如图1-13所示。
图1-13 假想模型机与程序执行示例
执行过程如下:
PC指针将0100H送地址寄存器MAR,然后自动加1,变成0101H。
MAR将地址0100H放到地址总线并通过地址译码器选中0100H单元。
CPU发出读命令,将内存中的值B0H放数据总线。
操作码送指令寄存器IR,至此完成取操作码周期。
(操作码经指令译码器ID译码后,知道下一步须将操作数送累加器,发出相应的控制信号,为下一步操作做好准备。)
PC指针将0101H送地址寄存器MAR,然后自动加1,变成0102H。
MAR将地址0101H放到地址总线并通过地址译码器选中0101H单元。
CPU发出读命令,将内存中操作数的值04H放数据总线。
操作数04H送累加器A,至此完成取操作数并执行。
(这样,通过取操作码、取操作数两个机器周期,完成了第一条MOV A,04H指令的执行。)
PC指针将0102H送地址寄存器MAR,然后自动加1,变成0103H。
MAR将地址0102H放到地址总线并通过地址译码器选中0102H单元。
CPU发出读命令,将内存中的操作码的值FEH放数据总线。
操作码送指令寄存器IR,至此完成取操作码周期。
(操作码已说明需将累加器A的值减1,无须其他操作数,立即执行,完成了本条指令。)
以此类推,反复重复上述操作,CPU总是将第一个数据作为操作码送入指令寄存器IR,并由取到的操作码确定后续动作的执行方式。连续执行后,最终完成本段程序。
应特别注意的是,当本条指令取指完成后才能去执行当前指令,而此时PC指针已经自动加1,指向了下一条指令处。