1.2 微型计算机基本结构
1946年,美籍匈牙利数学家冯·诺依曼(John Von Neumann)等人在一篇名为《关于电子计算仪器逻辑设计的初步探讨》的论文中,第一次提出了计算机组成和工作的基本思想。其主要思想是:
① 计算机应由运算器、控制器、存储器、输入和输出设备这五部分组成。
② 存储器不但能存放数据,而且也能存放程序。数据和指令均以二进制数的形式存放,计算机具有区分指令和数据的能力。
③ 编好的程序先存入存储器,在指令计数器的控制下,自动高速运行(执行程序)。
以上几点可归纳为“程序存储,程序控制”的构思。数十年来,虽然计算机已取得了惊人的进展,相继出现了各种结构形式的计算机,但究其本质仍属冯·诺依曼结构体系。
1.2.1 微型计算机基本结构
微型计算机是由硬件(Hardware)和软件(Software)两大部分组成的。硬件是指那些为组成计算机而有机联系的电子、电磁、机械、光学元件、部件或装置的总和,它是有形的物理实体。软件是相对于硬件而言的,从狭义的角度看,软件包括计算机运行所需要的各种程序;而从广义角度讲,软件还包括手册、说明书和有关资料。
1.微型计算机硬件结构
微型计算机在硬件上由运算器、控制器、存储器、输入设备及输出设备五大部分组成,如图1-2所示。
图1-2 微型计算机硬件结构框图
运算器是计算机处理信息的主要部分;控制器控制计算机各部件自动地、协调一致地工作;存储器是存放数据与程序的部件;输入设备用来输入数据与程序,常用的输入设备有键盘、光电输入机等;输出设备将计算机的处理结果用数字、图形等形式表示出来,常用的输出设备有显示终端、数码管、打印机、绘图仪等。
通常把运算器、控制器、存储器这三部分称为计算机的主机,而输入、输出设备则称为计算机的外部设备(简称外设)。由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元CPU(Central Process Unit)。
2.微型计算机的软件
上面所述的微型计算机设备称为硬件。计算机能够脱离人的直接控制而自动地操作与运算,还必须要有软件。软件是指使用和管理计算机的各种程序(Program),而程序是由一条条指令(Instruction)组成的。程序的集合构成了计算机中的软件系统。
(1)指令
控制计算机完成各种操作的命令称为指令。
例如,将寄存器A的内容与数38相加的指令称为加法指令,书写形式为
ADD A,#38
指令分成操作码和操作数两大部分。操作码表示该指令执行何种操作,操作数表示参加运算的数据或数据所在的地址。
(2)程序
为了计算一个数学式,或者控制一个生产过程,需要事先制定计算机的计算步骤或操作步骤。计算步骤是由一条条指令来实现的。这种一系列指令的有序集合称为程序。编制程序的过程称为程序设计。
【例1-1】 计算63+56+36+14=?
【解】 编制的程序如下:
MOV A,#63 ;数63送入寄存器A ADD A,#56 ;A的内容63与数56相加,其和119送回A ADD A,#36 ;A的内容119与数36相加,其和155送回A ADD A,#14 ;A的内容155与数14相加,其和169保存在A中
为了使机器能自动进行计算,要预先用输入设备将上述程序输入计算机存放。计算机启动后,在控制器的控制下,CPU按照顺序依次取出程序的一条条指令,加以译码和执行。程序中的加法操作是在运算器中进行的。运算结果可以保存在A中,也可以通过输出设备从计算机中输出。
如上所述,计算机的工作是由硬件、软件紧密结合、共同完成的,这与一般的数字电路系统不同。
(3)机器语言、汇编语言和高级语言
编制程序可使用汇编语言或高级语言。
上面介绍的用助记符(通常是指令功能的英文缩写)表示操作码,用字符(字母、数字、符号)表示操作数的指令称为汇编指令。用汇编指令编制的程序称为汇编语言程序。这种程序占用存储器单元较少,执行速度较快,能够准确掌握执行时间,可实现精细控制,因此特别适用于实时控制。然而汇编语言是面向机器的语言,各种计算机的汇编语言是不同的,必须对所用机器的结构、原理和指令系统比较清楚才能编写出它的各种汇编语言程序,而且不能通用于其他机器,这是汇编语言的不足之处。
高级语言是面向过程的语言,常用的高级语言有BASIC、FORTRAN、PASCAL等。用高级语言编写程序时主要着眼于算法,而不必了解计算机的硬件结构和指令系统,因此易学易用。高级语言是独立于机器的,一般来说,同一个程序可在任何种类的机器中使用。高级语言适用于科学计算、数据处理等。
现在在计算机应用编程中,出现了另外一种语言——C语言,很多人将它称之为“中级语言”。C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备了汇编语言的功能。C语言是为了能够胜任系统程序设计的要求而开发的,因此有很强的表达能力,能够用于描述系统软件各方面的特性。它具有较高的可移植性,提供了种类丰富的运算符和数据类型,极大地方便了程序设计。同时它有功能丰富的库函数,运算速度快、编译效率高,且可以直接实现对系统硬件的控制。它具有完善的模块程序结构,在软件开发中可以采用模块化程序设计方法。目前,使用C语言进行程序设计已成为软件开发的主流之一。
计算机中只能存放和处理二进制信息,所以无论是高级语言程序还是低级语言程序,都必须转换成二进制代码形式后才能送入计算机,这种二进制代码形式的程序就是机器语言程序。二进制代码形式的指令又称为机器指令或机器码。汇编指令与机器指令具有一一对应的关系。表1-1是用汇编语言和机器语言编写的同一段程序。
表1-1 汇编语言和机器语言对照表
(4)汇编、编译与解释程序
汇编语言程序与高级语言程序又统称为源程序,而机器语言程序称为目标程序。
机器语言只有0、1 两个符号,用它来直接编写程序十分困难。因此,往往先用汇编语言或高级语言编写程序,然后再转换成目标程序。将汇编语言程序翻译成目标程序的过程称为汇编,汇编时用到的软件称为汇编程序。高级语言转换成机器语言的工作只能由计算机完成,转换时所用的软件称为编译程序或解释程序。这两种程序都远比汇编程序复杂,占用存储器单元多,这是应用高级语言的缺点。
编译与解释程序是系统软件的重要分支。
若把表1-1所示的目标程序存入容量为256个单元的存储器,且从地址为00000000的单元开始存放,则存放顺序如图1-3所示。
图1-3 存储器中的程序
指令机器码第一个字节所在单元的地址(00000000、00000010、00000100、00000110)称为指令地址。第一条指令的地址(00000000)称为该程序的首地址,又称程序的入口地址。带有二进制地址和机器码的程序示例如下:
地址 机器码汇编 指令 00000000 01110100 00111111 MOV A,#63 00000010 00100100 00111000 ADD A,#56 00000100 00100100 00100100 ADD A,#36 00000110 00100100 00001110 ADD A,#14
二进制位数多,书写和识读不便,所以地址和机器码实际上多以十六进制数表示。
(5)操作系统
操作系统是系统软件中最重要的软件。
计算机是由硬件和软件组成的一个复杂系统,可供使用的硬件和软件均称为计算机的资源。要让计算机有条不紊地工作,就需要对这些资源进行管理。用于管理计算机软、硬件资源,监控计算机及程序的运行过程的软件系统,称为操作系统(Operation System)。操作系统对计算机是至关重要的,没有它计算机就不能启动。目前广泛使用的微机操作系统有DOS(Disk Operation System)、Windows、Linux、UNIX等。DOS是单用户操作系统,Windows是具有图形界面、操作方便的系统,UNIX是具有多用户、多任务功能的操作系统,Linux是目前日趋流行的操作系统。
系统软件还包括连接程序、装入程序、诊断与调试程序等。连接程序能把要执行的程序与库文件及其他已编译的程序模块连在一起,成为机器可以执行的程序;装入程序能把程序从磁盘中取出来并装入内存,以便执行;调式程序能够让用户监督和控制程序的执行过程;诊断程序能在机器启动过程中,对机器的硬件配置和完好性进行监测和诊断。
(6)应用软件
应用软件(即应用程序)是为了完成某一特定任务而编制的程序,其中有一些是通用的软件,如数据库系统(DBS)、办公自动化软件Office、图形图像处理软件PhotoShop等。
3.硬件和软件的关系
微机系统是硬件和软件有机结合的整体。计算机的硬件和软件是密不可分但又相互独立的。硬件是计算机工作的基础,没有硬件的支持,软件将无法正常工作;软件是计算机的灵魂,没有软件,硬件就是一个空壳,不能做任何工作。没有软件的计算机称为裸机,操作系统给裸机以灵魂,使它成为真正可用的工具。一个应用程序在计算机中运行时,受操作系统的管理与监控,在必要的系统软件的协助之下,完成用户交给它的任务。可见,裸机是微机系统的物质基础,操作系统为它提供了一个运行环境。系统软件中,各种语言处理程序为应用软件的开发和运行提供了方便。用户并不直接和裸机打交道,而是使用各种外设,如键盘和显示器等,通过应用软件与计算机交流信息。
1.2.2 微处理器、微型计算机、微型计算机系统
微处理器、微型计算机、微型计算机系统是不同的概念,有必要对它们加以说明。
1.微处理器(CPU)
微处理器是利用微电子技术将计算机的核心部件(运算器和控制器)集中做在一块集成电路上的一个独立芯片。它具有解释指令、执行指令和与外界交换数据的能力。该芯片称为微处理器或微处理机(Microprocessor),也称中央处理器(CPU,Central Processing Unit)。在目前情况下,无论哪种CPU,内部基本组成总是大同小异的,其内部包括三部分:运算器、控制器、内部寄存器阵列(工作寄存器组)。典型的8位微处理器结构如图1-4所示。
图1-4 典型的8位微处理器结构图
(1)运算器
运算器是对信息进行加工、处理及运算的逻辑部件。它由算术逻辑运算单元ALU、累加器A、暂存寄存器TR、标志寄存器F、二-十进制调整电路等组成。新型CPU的运算器还可以完成各种高精度的浮点运算。
① 算术逻辑运算单元和累加器
算术逻辑运算单元ALU是微型计算机执行算术运算和逻辑运算的主要部件。它有两个输入端:一个输入端与累加器A相连,另一个输入端与暂存器TR相连。ALU的输出端与内部总线相连。
累加器A是一个8位寄存器,很多8位双操作数运算都要用到累加器A。例如,执行“ADD A,#24H”、“ADD A,R0”、“ANL A,R1”等指令时,一个操作数来自A,运算结果又送回A,所以累加器A是一个使用十分频繁的寄存器。另一个操作数可来自CPU内部的工作寄存器,也可来自存储器或接口电路。无论是哪一种情况,它总是通过内部总线送来的。由于总线只能分时传送数据,故用暂存寄存器在内部总线与ALU之间起缓冲作用。在执行上面的指令时,内部总线先传送一个操作数至TR,然后由控制器控制ALU对A和TR中的内容进行运算,运算结果再通过内部总线传送到累加器A。
② 标志寄存器
标志寄存器F又称为状态寄存器,用来存放ALU运算结果的一些特征,如溢出、进位/借位、辅助进位/借位、奇偶、结果为0等。
③ 二-十进制调整电路
计算机在进行二-十进制数运算时,要对运算结果进行调整,这由二-十进制(BCD)调整电路来实现。
(2)控制器
控制器包括指令寄存器IR、指令译码器ID和定时与控制电路三部分。
计算机工作时,由定时与控制电路按照一定的时间顺序发出一系列控制信号,使计算机各部件能按一定的时间节拍协调一致地工作。
一条指令的执行分成取指令和执行指令两个阶段。具体步骤如下:
① 从存储器中取回该指令的机器码,送指令寄存器暂存,直至该指令执行完毕。
② 由指令译码器译码,以识别该指令需要实施何种操作。
③ 由定时与控制电路产生一系列控制信号,送到计算机各部件以执行这一指令。
定时与控制电路除了接收译码器送来的信号外,还接收CPU外部送来的信号,如中断请求信号、复位信号等,这些信号由控制总线送入。定时与控制电路产生的控制信号一部分用于CPU内部,控制CPU各部件的工作,另一部分通过控制总线输出,用于控制存储器和I/O接口电路的工作。
控制器是计算机控制和调度的中心,计算机的各种操作都是在控制器的控制下进行的。
(3)内部寄存器阵列
内部寄存器阵列由多个功能不同的寄存器构成,用以存放参加处理和运算的操作数、数据处理的中间结果和最终结果等。寄存器可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,如堆栈指针寄存器、标志寄存器、指令指针寄存器等;而通用寄存器可由编程者依据需要规定其用途。多次使用的操作数和中间结果可暂时存放在寄存器中,避免对存储器的频繁访问,从而缩短指令执行时间,同时也给编程者带来很大的方便。
在使用CPU时,用户主要关注的是,在了解CPU功能的基础上对CPU内部寄存器的使用。因此,要正确使用CPU,就必须掌握CPU内部寄存器的名字(符号)、大小(存放的二进制位数)及特殊功能。
程序计数器(PC,Program Counter)是管理程序执行次序的特殊功能寄存器。程序的执行有两种情况——按照顺序执行和跳转。为此,程序计数器具有下述三种功能:
① 复位功能:计算机通电时有上电复位,运行时有操作复位(按钮复位)。复位时计算机进入初始状态,PC的内容将自动为初值。
② 计数功能:CPU读取一条指令时,总是将PC的内容作为指令地址,并经地址总线送到存储器,从而从该地址单元中取回指令的机器码,送到指令寄存器。同时,每取回指令代码的一个字节,PC的内容自动加1(加法计数)。因此,在取回指令进入执行指令的阶段,PC的内容已是按顺序排列的下一条指令的地址。
③ 直接置位功能:PC也能直接接收内部总线送来的数据,并用该数据取代其原来的内容。
2.微型计算机
微型计算机由CPU、存储器、输入/输出(I/O)接口电路构成,各部分芯片之间通过总线(Bus)连接,如图1-5所示。
图1-5 微型计算机结构
(1)CPU
CPU是微型计算机的核心,它的性能决定了整个微型计算机的各项关键指标。微处理器本身不能构成独立工作的系统,也不能独立执行程序,必须配上存储器、外部输入/输出接口构成一台微型计算机方能工作。CPU的基本问题已在前面说明。
(2)存储器
存储器是微型计算机的重要组成部分,是用来存放程序和数据的,计算机有了存储器才具备记忆能力。
存储器是由许多存储单元组成的,存储单元中存放的是二进制数。每个存储器单元可以存放一个8位二进制数,即一个字节(Byte,简写为B)的二进制信息。一个存储器单元存放的信息称为该存储单元的内容。数据和程序均是以二进制数形式存放的,不论是8位还是16位机,都是以8位二进制数作为一个字节存放在存储器中的。
为了区分不同的存储单元,按一定的规律和顺序对每个存储单元进行排列编号,这个编号称为存储单元的地址。在计算机中,地址也是用二进制数来表示的,每个存储单元具有一个唯一的地址。对存储单元的操作就是对该地址的操作。关于对存储器的编址问题,将在第8章详细讨论。
从应用的角度讲,计算机工作时,CPU对存储器的操作只有“读”和“写”操作。CPU将数据存入存储器的过程称为“写”操作,CPU从存储器中取数据的过程为“读”操作。写入存储单元的数据取代了原数据,而且在下一个新的数据写入之前一直保留着,即存储器具有记忆的功能。在执行“读”操作后,存储单元中原有的内容不变,即存储器的读出是非破坏性的。
(3)输入/输出接口电路
输入/输出接口电路是微型计算机的重要组成部件,是微型计算机连接外部输入、输出设备及各种控制对象并与外界进行信息交换的逻辑控制电路。由于外设种类繁多,其运行速度、数据格式、电平等各不相同,常常与CPU不一致,所以要用I/O接口作为桥梁,起到信息转换与协调的作用。
微型计算机是通过I/O接口电路与外设相连的,CPU只有通过I/O电路才能与外设传送信息,只要选中I/O电路就能找到相应的外设。从应用的角度讲,计算机工作时,CPU对I/O接口的操作只有“读”和“写”。CPU对输入口的操作称为“读操作”,对输出口的操作称为“写操作”,在操作时是对所选择的I/O接口的口地址的操作。因此CPU必须对I/O接口电路编址,这种编址就是I/O接口的地址。每个I/O接口所拥有的“地址”也是唯一的和固定的。
(4)总线
所谓总线,就是在微型计算机各芯片之间或芯片内部各部件之间传输信息的一组公共通信线。微型计算机采用总线结构后,芯片之间不需要单独走线,这就大大减少了连接线的数量。采用总线结构后,系统中各功能部件间的相互关系转变为各部件面向总线的单一关系,符合总线标准的设备都可以连接到系统中,使系统功能得到扩展。
微型计算机总线的种类非常多,从使用的角度可分为内部总线、元件级总线、系统总线、外部总线四大类,在微型计算机中使用比较多的是元件级总线。计算机元件级总线包括地址总线AB(Address Bus)、数据总线DB(Data Bus)、控制总线CB(Control Bus)三种。
① 地址总线:地址总线是CPU用来向存储器或I/O接口传送地址信息的,是三态单向总线。地址总线的宽度决定了CPU可直接寻址的内存容量。8条地址线用A7~A0表示,A7为最高位地址线,A0为最低位地址线,最大寻址范围为28=256;16条地址线用A15~A0表示,A15为最高位地址线,A0为最低位地址线,最大寻址范围为216=65536=64K。通过地址总线确定要操作的存储单元或I/O接口的地址。
② 数据总线:数据总线是CPU与存储器及外设交换数据的通路,是三态双向总线。数据总线的位数与微处理器的位数相同,一般有8位、16位、32位等。8位数据线用D7~D0表示,D7为最高有效位,D0为最低有效位;16位数据线用D15~D0表示,D15为最高有效位,D0为最低有效位。最高有效位用MSB表示,最低有效位用LSB表示。
③ 控制总线:控制总线是用来传输控制信号的,传送方向依据具体控制信号而定,如CPU向存储器或I/O接口电路输出读信号、写信号、地址有效信号,而I/O接口部件向CPU输入复位信号、中断请求信号等。控制总线的宽度根据系统需要而定。
将微处理器、存储器、I/O接口电路以及简单的输入、输出设备组装在一块印制电路板上,称为单板微型计算机,简称单板机。将微处理器、存储器、I/O接口电路集成在一块芯片上,称为单片微型计算机,简称单片机。
3.微型计算机系统
以微型计算机为主体,配上外部输入/输出设备、电源、系统软件一起构成应用系统,称为微型计算机系统。
图1-6概括了微处理器、微型计算机、微型计算机系统三者的关系。
图1-6 微型计算机系统结构
1.2.3 微型计算机的主要术语及性能指标
一台微机性能的优劣,主要是由它的系统结构、硬件组成、系统总线、外设及软件配置等因素来决定的。具体体现在以下几个方面。
(1)位
开关的闭合或电位电平的高低,可以代表两种状态:0 和1。因此可以把一个开关或电位称之为一“位”,用bit表示。在计算机中,位是计算机中所能表示的最基本和最小的数据单位,是一个二进制数。
(2)字节(Byte)
一个开关可以表示“0”或“1”两种状态,两个开关可以表示“00”、“01”、“10”、“11”四种状态,也就是可以表示0到3,计算机中通常用8位同时计数,故可以表示0~255。这8位就称之为一个字节(Byte),1Byte=8bit。
在微型计算机中,数据是以字节为单位进行存放的。通常把1024个字节称为1KB(1KB=1024Byte,1MB=1024×1024Byte=1024KB,1GB=1024MB,1TB=1024GB)。
(3)字(word)
字是由两个字节构成的,即表示16位二进制数。
(4)字长
指计算机能一次处理二进制数码位数的多少,它与微处理器内部寄存器及CPU内部数据总线的宽度是一致的。如MCS-51单片机是8位机,字长是8位;以80586为微处理器的计算机是32位机,其字长是32位。
字长越长,所表示的数据精度就越高。在完成同样精度的数据运算时,字长较长的微处理器比字长短的微处理器运算速度快。大多数微处理器内部的数据总线与微处理器外部引脚的宽度是相同的,但也有少数例外,例如Intel 8088微处理器的内部数据总线是16位,而芯片外部数据引脚只有8位;Intel 80386SX微处理器内部是32位数据总线,而外部数据引脚是16位。对这类芯片仍然以它们内部数据总线的宽度为字长,但把它们称为“准XX位”芯片。例如8088被称为“准16位”微处理器芯片,80386被称为“准32位”微处理器芯片。
(5)主存容量
主存容量是主存储器所能存储的二进制信息的总量,它反映了微机处理信息时容纳数据量的能力。主存容量越大,微机工作时主、外存储器间的交换次数越少,处理速度就越快。主存容量常以字节(Byte)为单位,并定义KB、MB、GB、TB为派生单位。
另外,在微型计算机中还有指令执行时间、系统总线、外设配置、系统软件配置等性能指标需要关注。