1.2 微型计算机的基本结构和工作原理
现在的计算机采用冯·诺依曼结构,由运算器、控制器、存储器、输入设备和输出设备五大部分组成。微型计算机是计算机发展到一定阶段的产物,由于大规模集成电路技术的发展,使得能够把运算器和控制器集成在一块集成电路芯片内,我们把集成运算器和控制器的这一块集成电路称为中央处理器或微处理器,简称CPU。微型计算机(Micro Computer)是指以中央处理器为核心,配上存储器、输入/输出接口电路等所组成的计算机。微型计算机系统(Micro Computer System)是指以微型计算机为中心,配以相应的外围设备、电源和辅助电路以及指挥计算机工作的系统软件所构成的系统。
1.2.1 微型计算机的发展
微型计算机的出现,是计算机技术发展史上的一个新的里程碑,为计算机技术的发展和普及开辟了崭新的途径。我们日常生活中使用的大部分都是微型计算机。
说到微型计算机,必须要提到Intel公司。Intel公司是一个生产微处理器CPU的公司,1971年诞生的第一台微型计算机就是用Intel公司生产的Intel 4004为处理器的。Intel公司在整个微型计算机的发展中都起着非常重要的主导作用,正是Intel公司不断开发的新型、功能强大的微处理器,推动微型计算机不断的向前发展。微型计算机按CPU字长和功能一般分为以下几代。
第一代(1971——1973年):4位和低档8位微处理器,代表产品:4004→4040→8008。
第二代(1974——1977年):中高档8位微处理器,代表产品:Z80、I8085、MC6800,Apple-Ⅱ微机。
第三代(1978——1984年):16位微处理器,代表产品:8086→8088→80286,IBM PC系列机。1981年8月12日,IBM正式推出IBM 5150,它的CPU是Intel 8088,IBM将5150称为Personal Computer(个人计算机),不久,“个人计算机”的缩写“PC”成为所有个人计算机的代名词。另外,Intel公司后来生产的微处理器都以8086为基础,包含8086指令,所以统一称为80x86系列。
第四代(1985——1992年):32位微处理器,代表产品:80386→80486。
第五代(1993——1999年):超级32位Pentium(奔腾)微处理器,代表产品:Pentium→PentiumⅡ →Pentium III →Pentium 4,32位PC、Macintosh机、PS/2机。
第六代(2000年以后):64位高档微处理器,代表产品:Itanium、64位RISC微处理器芯片、微机服务器、工程工作站、图形工作站。
目前,Intel生产的CPU一直占据市场的统治地位,也确立了80x86架构的行业标准。AMD是CPU厂商中的后起之秀,生产的CPU兼容x86指令,与Intel的竞争一直没有停歇,始终都是此起彼伏。近年来尤其在桌面和笔记本电脑的市场,AMD仍在继续提高自己的份额。微型计算机的发展趋势就是速度越来越快、容量越来越大、功能越来越强。
1.2.2 微型计算机的基本结构
微型计算机由中央处理器、存储器、输入/输出设备和系统总线等组成,典型的微型计算机基本结构如图1.5所示。
1.中央处理器
微型计算机中的运算器和控制器合起来称为中央处理器(Central Processing Unit,CPU),又因为CPU已经能集成在一块集成电路芯片上,这就是微处理器(microprocessor),又称微处理机。CPU是微型计算机的心脏,它的性能决定了整个微型机的各项关键指标。
图1.5 微型计算机基本结构图
2.存储器
存储器是用来存放程序和数据的记忆装置。存储器包括随机存储器(RAM)和只读存储器(ROM)。在微型计算机工作过程中,CPU从存储器中取出程序执行或取出数据进行加工处理。这种由存储器取出的过程称为读出数据,而将数据或程序存放于存储器的过程称为写入数据。
3.输入/输出设备及I/O接口电路
输入设备是向计算机输入原始数据和程序的装置。它的功能是,将数据、程序按人们熟悉的形式送入计算机并经过计算机转换为可识别的二进制数的形式存入存储器中。常用的输入设备有键盘、鼠标、光笔、模数转换器、扫描仪、话筒和数码相机等。
输出设备是计算机向外界输出信息的装置。计算机通过输出设备将它处理过的信息以人们熟悉、方便的形式输送出来。常用的输出设备有显示器、打印机、绘图仪、数模转换器及音箱等。输入设备和输出设备一起称为计算机的外部设备,有的设备既是输入设备又是输出设备。
I/O接口电路是外部设备和微型机之间传送信息的部件。微型计算机广泛地应用于各个部门和领域,所连接的外部设备是各式各样的,它们不仅要求不同的电平、电流,而且要求不同的速率,有时还要考虑是模拟信号还是数字信号。同时,计算机与外部设备之间还需要询问和应答信号,用来通知外设做什么或告诉计算机外设的状况。就需要在计算机和外部设备之间接上一个中间部件来进行连接和控制信息交换过程,这就是接口电路。接口电路主要实现数据缓冲、信号变换、速度匹配、设备选择等功能。
4.总线
总线是连接多个设备或功能部件的一簇公共信号线,它是计算机各组成部件之间信息交换的通道。微型计算机硬件组织上采用总线(Bus)结构,微型计算机的各大功能部件通过总线相连。
1.2.3 微处理器
微型计算机的核心是微处理器,主要由运算器、控制器、寄存器组和片内总线组成。不同的微处理器内部结构也有所区别,典型的微处理器8086结构如图1.6所示。
8086微处理器的内部分为两个部分:执行单元(EU)和总线接口单元(BIU)。
图1.6 8086微处理器的内部结构框图
1.执行单元EU
执行部件由运算器(ALU)、通用寄存器、标志寄存器和EU控制系统等组成。EU从BIU的指令队列中获得指令,然后执行该指令,完成指令所规定的操作。EU用来对寄存器内容和指令操作数进行算术和逻辑运算,以及进行内存有效地址的计算。EU负责全部指令的执行,向BIU提供数据和内存单元或I/O端口的地址,并对通用寄存器、标志寄存器和指令操作数进行管理。
2.总线接口单元BIU
总线接口部件BIU由段寄存器、指令指针寄存器、地址形成逻辑、总线控制逻辑和指令队列等组成。总线接口部件负责从内部存储器的指定区域中取出指令送到指令队列中去排队;执行指令时所需要的操作数(内部存储器操作数和I/O端口操作数)也由总线接口部件从相应的内存区域或I/O端口中取出,传送给执行部件EU。如果指令执行的结果需要存入内部存储器,也是由BIU写入相应的内存区域的。总之,总线接口部件BIU同外部总线连接,为执行部件EU完成全部的总线操作,并且计算、形成20位的内部存储器的物理地址,达到寻址1MB内存地址空间的目的。
3.内部寄存器
8086 CPU有14个16位寄存器,如图1.7所示,这14个寄存器分为5个组,其中有3个组各包含有4个寄存器,即由AX、BX、CX和DX组成的通用寄存器组,由SP、BP、SI和DI组成的指针和变址寄存器组,以及由CS、DS、SS和ES组成的段寄存器组,指令指针寄存器和标志寄存器自成一组。这些寄存器中,除指令指针寄存器外,其他寄存器均可直接访问。
(1)通用寄存器组
通用寄存器可以暂存操作数和中间结果,是一些可以快速访问的单元。8086有4个16位的通用寄存器AX,BX,CX和DX,可用来存放16位的数据或地址。也可把它们当作8个8位寄存器来使用,也就是把每个通用寄存器的高半部分和低半部分分开:低半部分被命名为AL、BL、CL和DL;高半部分被命名为AH、BH、CH和DH。8位寄存器只能存放数据而不能存放地址。
图1.7 8086的内部寄存器
AX称为累加器,是算术运算时使用的主要寄存器,所有外部设备的输入/输出指令只能使用AL或AX作为数据寄存器。
BX称为基址寄存器,可以用作数据寄存器,在访问存储器时,可以存放被读/写的存储单元的地址,是具有双重功能的寄存器。
CX称为计数寄存器,可以用作数据寄存器,在字符串操作、循环操作和移位操作时用作计数器。
DX称为数据寄存器,它可以用作数据寄存器,在乘、除法中作为辅助累加器,在输入/输出操作中存放接口的地址。
(2)指针和变址寄存器组
指针和变址寄存器组主要用来存放操作数的偏移地址(即操作数的段内地址)。
SP称为堆栈指针寄存器,在堆栈操作中存放栈顶的偏移地址。
BP称为基址指针寄存器,常用作堆栈区的基地址寄存器。
SI称为源变址寄存器,主要用于在字符串操作中存放源操作数的偏移地址。
DI称为目的变址寄存器,主要用于在字符串操作中存放目的操作数的偏移地址。
在字符串操作时,变址寄存器内存放的地址在当前数据传送完成后,具有自动修改的功能,传送1字节数据自动加1(或减1),传送2字节数据自动加2(或减2),为下次传送做好准备,变址寄存器因此得名。
(3)段寄存器组
段寄存器用来存放段的基址(即段的起始地址的高16位)。
CS称为代码段段寄存器,代码段用来存放程序代码。程序代码超过64KB时,需要分成几个代码段存放。CS中存放当前正在执行的代码段的段基址。
DS称为数据段段寄存器,数据段用于存放当前使用的数据。DS中存放当前数据段的段基址。
SS称为堆栈段段寄存器,堆栈段是内存中一段特殊的存储区,通过专门的方法使用,当中的数据按“先入后出”的方法管理。SS中存放堆栈段的段基址。
ES称为附加数据段段寄存器,程序需要第二个数据段时,可以使用ES存放该数据段的段基址。
(4)指令指针寄存器
指令指针寄存器IP(Instruction Pointer)是一个16位的寄存器,IP存放下一条要执行的指令的偏移地址。在8086中,由CS和IP控制程序的执行顺序。在程序执行时,由EU控制器控制,通过BIU部件从CS和IP指向的内部存储器中取出当前执行的指令送执行部件执行,在取出的同时,指令指针寄存器IP会自动调整(加上当前指令的字节数)以指向下一条指令,以便程序能自动往后执行。当程序发生转移时,就必须把新的指令地址(目标地址)装入CS和IP,这通常由转移指令来实现。
(5)标志寄存器
标志寄存器FLAGS共有9个标志位,其中6个为状态标志位,3个为控制标志位。如图1.8所示,这些标志位的含义如下:
图1.8 标志寄存器
C——进位标志位。当做加法时出现进位或做减法时出现借位,则该标志位置1;否则清0。移位和循环指令也影响该标志位。
P——奇偶标志位。当结果的低8位中1的个数为偶数,则该标志位置1;否则清0。
A——半加标志位。在做加法时,当低4位向高4位进位,或在做减法时低4位向高4位借位时,该标志位置1;否则清0。该标志位通常用于对BCD算术运算结果进行调整。
Z——零标志位。运算结果的所有位均为0时,该标志位置1;否则清0。
S——符号标志位。当运算结果的最高位为1时,该标志位置1;否则清0。
T——陷阱标志位(单步标志位)。当该位置1时,将使8086进入单步执行工作方式。在每条指令执行结束时,CPU总是去测试T标志位是否为1。如果为1,那么在本指令执行后将产生陷阱中断,从而执行陷阱中断处理程序。该标志通常用于程序的调试。例如,在系统调试软件DEBUG中的T命令,就是利用该标志位来进行程序的单步跟踪的。
I——中断允许标志位。如果该位置1,则处理器可以响应可屏蔽中断请求;否则就不能响应可屏蔽中断请求。
D——方向标志位。当该位置1时,串操作指令为自动减量指令,即从高地址到低地址处理字符串;否则串操作指令为自动增量指令。
O——溢出标志位。在算术运算中,当带符号数的运算结果超出了8位或16位带符号数所能表达的范围时,该位置1。即字节运算大于+127或小于-128,字运算大于+32767或小于-32768。
1.2.4 存储器
这里介绍的存储器是指内部存储器(又称主存或内存)。它是微型计算机的存储和记忆装置,用来存放微型计算机执行的程序和数据。在计算机内部,程序和数据都以二进制数形式表示,8位二进制代码为1字节。为了便于对存储器进行访问,存储器通常被划分为许多单元,每个存储单元存放1字节的二进制信息,每个存储单元分别赋予一个编号,称为地址。如图1.9所示,地址为3003H的存储单元中存放了一个8位二进制信息00111011B。
1.存储器的基本结构
在微型计算机中,为了保证计算机的运行速度,内部存储器通常由半导体存储器组成。半导体存储器的基本结构如图1.10所示,它主要由地址译码器、存储矩阵、控制逻辑和三态双向缓冲器等部分组成。存储器的主体就是存储矩阵,它是由一个个的存储单元组成的。每个存储单元可以存放8位(1字节)二进制信息。为了区分不同的存储单元,给每个存储单元提供了一个编号,这就是它们的地址,存储器是按字节编址的。
图1.9 内存单元的地址与内容
图1.10 存储器结构图
假定地址总线是8位的,则经过地址译码器译码之后可寻址28=256个存储单元。即给定任何一个8位的地址数据,就可以从256个存储单元中找到与之对应的某一个存储单元,对这个存储单元的内容进行操作。对内存单元的操作有两种:读和写。
(1)读操作
若要将地址为05H存储单元的内容读出,首先要求CPU给出地址号05H,然后通过地址总线送至存储器,存储器中的地址译码器对它进行译码,找到05H号存储单元;再要求CPU发出读的控制命令,于是05H号存储单元中的内容2BH就出现在数据总线上,如图1.11所示。信息从存储单元读出后,存储单元的内容并不改变,只有把新的内容写入该单元时,才由新的内容代替旧的内容。
(2)写操作
若要将数据寄存器中的内容1AH写入到地址为06H的存储单元中,首先也要求CPU给出地址号06H,然后通过地址总线送至存储器,经地址译码器译码后,找到06H号存储单元;然后把数据寄存器中的内容1AH经数据总线送给存储器,且CPU发出写的控制命令,于是数据总线上的信息1AH就可以写入到06H号存储单元中,如图1.12所示。
图1.11 存储器读操作示意图
图1.12 存储器写操作示意图
2.存储器的分类
按数据的读/写工作方式,存储器可分为两大类:随机存储器RAM(Random Access Memory)和只读存储器ROM(Read Only Memory)。
随机存储器,CPU既可读取里面的信息,也可向里面写入信息,它用于存放将要被CPU执行的用户程序、数据及部分系统程序。断电后,其中存放的所有信息将丢失。
只读存储器中的信息只能被CPU读取,而不能由CPU任意地写入。断电后,其中的信息不会丢失。它用于存放永久性的程序和数据,如系统引导程序、监控程序及操作系统中的基本输入/输出管理程序(BIOS)等。
3.8086中的存储器
8086的存储器可由随机存储器RAM和只读存储器ROM组成,总存储空间为1MB,需要20位地址。它们的访问方法相同,只是ROM中的数据只能读出不能改写,而RAM中的数据既能读出也能改写。
由于8086的寄存器都是16位的,不能直接提供20位地址,因此,为了管理方便,8086把1MB空间分成若干块(称为“逻辑段”),各个逻辑段之间可在实际存储空间中完全分开,也可以部分重叠,甚至可以完全重叠。每个逻辑段容量不超过64KB,这样就可用16位寄存器提供地址访问。
在8086系统中,把16字节的存储空间称作一节(paragraph)。规定每个逻辑段必须从节的整数边界开始,也就是说,每个逻辑段段首地址的高16位可能不同,而低4位肯定都为0000。一般将段首地址的高16位地址码称作“段基址”,存放在相应的段寄存器中;而段内单元相对于段首的地址则称作“偏移地址”。
一个存储单元的地址可由段基址和偏移地址组成,这个地址称为逻辑地址,一般表示为“段基址:偏移地址”。而1MB存储空间中的20位地址称为物理地址。逻辑地址是程序中使用的地址,物理地址是访问存储器的实际地址。
逻辑地址向物理地址的转换可由下面公式实现
物理地址=段基址×16+段内偏移地址
8086中是通过BIU部件中的地址加法器完成该运算的,过程如图1.13所示。
图1.13 逻辑地址向物理地址的转换图
例如,段基址:偏移地址分别是1200H:0345H,则物理地址=1200H×16+0345H=12345H。
1.2.5 输入/输出设备及I/O接口电路
输入/输出设备是微型计算机的重要组成部分。外部设备是多种多样的,其工作原理不同,有机械式、电子式、机电式、电磁式或其他形式;传送信息类型多样,有数字量、模拟量、开关量或脉冲量;传送速度差别极大,有秒级的,也有微秒级的;传送方式不同,有串行传送、并行传送;编码方式也不尽相同,有二进制数、BCD码、ASCII码等,因此CPU与外部设备的信息交换是比较复杂的问题。
在微型计算机中,CPU与外部设备的信息交换是通过输入/输出(I/O)接口实现的,既包含硬件部件——输入/输出(I/O)接口电路,也包含软件部分——相应的驱动程序,两者相互配合,缺一不可。接口电路是实现CPU与外部设备相连的硬件电路,驱动程序是在硬件基础上编制的访问硬件接口电路实现外部设备与CPU之间进行数据传送的程序。外部设备通过I/O接口电路把信息传送给微处理器进行处理,微处理器将处理完的信息通过I/O接口电路传送给外部设备。
1.I/O接口的功能
由于计算机的外围设备品种繁多,CPU在与I/O设备进行数据交换时存在速度不匹配、时序不匹配、信息格式不匹配、信息类型不匹配等问题,因此,CPU与外设之间的数据交换必须通过接口来完成,接口通常实现以下功能。
(1)数据的寄存和缓冲功能
外部设备的工作速度都比CPU要慢,为了适应CPU与外设之间的速度差异,接口通常包含一些缓冲器和锁存器,使之成为数据交换的中转站。在输入时,输入设备先将输入数据送缓冲器暂存,当CPU选通该输入接口时,CPU再从缓冲器中读取输入的数据。在输出时,CPU先将输出数据送接口的锁存器锁存,再通过接口的锁存器送输出设备进行处理。这样解决了CPU与外部设备的速度匹配问题,同时,在外部设备与接口进行数据传送时,又不妨碍CPU和总线去处理其他事务。
(2)信号转换功能
由于外设所需的控制信号和它所能提供的状态信号往往同微机的总线信号不兼容,计算机只能识别“0”、“1”TTL电平(0~0.4V为“0”,2.4~5.0V为“1”)或CMOS电平(0~1.7V为“0”,3.3~5.0V为“1”),常需要接口电路来完成信号的电平转换。信号转换包括逻辑关系、时序配合及电平匹配上的转换,另外还包含串/并转换、模数(A/D)转换和数模(D/A)转换等。
(3)设备选择功能
设备选择功能是指对I/O设备进行寻址的功能。在一个微机系统中,通常会有多个I/O设备,而在任何时候只能有一个外部设备与CPU进行数据交换。这就需要I/O接口中有相应的译码电路译码以选定不同的外设,只有被选定的外部设备才能与CPU进行数据交换或通信。
(4)外设的控制和监测功能
接口电路能够接收CPU送来的命令字或控制信号,实施对外部设备的控制与管理。外部设备的工作状况则以状态字或应答信号通过接口电路返回给CPU,通过“握手联络”的过程来保证主机与外设输入/输出操作的同步。
(5)中断或DMA管理功能
在一些实时性要求较高的微机应用系统中,为了满足实时性以及主机与外设并行工作的要求,需要采用中断传送的方式;而在一些高速的数据采集或传输系统中,为了提高数据的传输速率,有时还必须采用DMA传送方式,这就要求相应的接口电路有产生中断请求和DMA请求的能力以及中断和DMA管理的能力,如中断请求信号的发送与响应、中断源的屏蔽、中断优先级的管理等。
(6)可编程功能
现在的接口芯片大多数都是可编程的,均有多种工作方式供用户选择,在不改变硬件的情况下,只需修改程序就可以改变接口的工作方式,大大增加了接口的灵活性和可扩充性,使接口向智能化方向发展。
2.外部设备与CPU之间的数据传送方式
外部设备与微机之间的信息传送方式一般有无条件传送方式、查询传送方式、中断控制方式等。
(1)无条件传送方式
无条件传送方式是指CPU直接和外部设备之间进行数据传送。在这种方式下,在数据传送之前CPU不对外设的工作状态进行任何检测,默认外设始终处于“就绪”状态,只要CPU需要,随时进行输入或输出操作。无条件传送方式是一种最简单的程序控制传送方式。它适用于外部控制过程的各种动作时间是固定的且已知的场合。
(2)查询传送方式
查询传送方式又称条件传送方式,是指CPU通过查询I/O设备的状态决定是否进行数据传输的方式。在这种方式中,CPU在数据传送之前对外部设备的状态进行查询,当输入外设处于已准备好状态或输出外设为空闲状态时,CPU才与外设进行数据交换,否则,一直处于查询等待状态。
(3)中断控制方式
中断是一种使CPU暂停正在执行的程序而转去处理特殊事件的操作。即当外设的输入数据准备好,或输出设备可以接收数据时,便主动向CPU发出中断请求,CPU可中断正在执行的程序,转去执行为外设服务的操作,服务完毕,CPU再继续执行原来的程序。被中断的原程序称为主程序;为外设服务的输入/输出程序称为中断服务程序,中断服务程序事先存放在内存中的某个区域,其起始地址称为中断服务程序的入口地址;主程序的返回地址称为断点。因此,采用中断传送时,CPU和外设可以并行工作,只有外设请求数据传输,CPU才可能与外设进行数据传输,从而大大提高了CPU的效率。另外,对于系统可能遇到的一些随机事件,如突然断电、机器出现某种故障、运算错误等无法预测的情况,也要求CPU能具有实时响应和处理随机事件的能力,这也需要采用中断传送方式。
3.8086中的常用接口电路简介
8086微型计算机系统中,外部设备与CPU之间的常见接口电路有8255A、8253、8251A、8259A等。
8255A是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口;具有无条件输入/输出、选通输入/输出和双向选通输入/输出3种方式;每个口都有一个数据输入寄存器和一个数据输出寄存器,输入时有缓冲功能,输出时有锁存功能;各口功能可由软件选择,使用灵活,通用性强。在8086系统中采用8255A作为键盘、扬声器、打印机等外设的接口电路芯片。
8253是Intel公司生产的可编程计数/定时器接口芯片,有3个独立的16位定时/计数器通道;每个定时/计数器通道有6种工作方式,可在程序运行过程中根据当时的需要随时修改;每个定时/计数器都能按二进制或十进制计数或定时操作,计数范围为0000H~FFFFH或0~9999;每个定时/计数器的最高计数时钟频率为2.6MHz;所有的输入/输出都与TTL电平兼容;由单一的+5V电源供电。在8086系统中,8253为系统电子钟提供时间基准,为动态RAM刷新提供定时信号以及作为扬声器的声源等。
8251A是Intel公司生产的可编程串行通信接口芯片。内部采用全双工、双缓冲器的接收/发送器;可工作在同步或异步工作方式,同步方式工作时波特率在0~64kbps范围内,异步方式时波特率在0~9.2kbps范围内;具有奇偶、溢出和帧出错等功能。在8086系统中通过8251A与其他设备实现串行通信。
8259A是Intel公司生产的可编程中断控制器芯片。单个的8259A能管理8级向量优先级中断;在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统;具有中断判优逻辑功能,且对每级中断都可以屏蔽或允许;中断响应后,可以给每个中断源提供中断类型号,并及时清除中断标志,以供别的中断源申请中断;8259A有多种工作方式,通过编程可以随意选择,从而能方便地满足多种类型微机中断系统的需要。在8086系统中通过8259A芯片管理8个可屏蔽中断源。
1.2.6 总线
在微机系统中,有各式各样的总线。这些总线可以从不同的层次和角度进行分类。
按总线在微机结构中所处的位置不同,可把总线分为以下4类。
①片内总线:CPU芯片内部的寄存器、算术逻辑单元(ALU)与控制部件等功能单元电路之间传输数据所用的总线。
②片级总线:也称为芯片总线、内部总线,是微机内部CPU与各外围芯片之间的总线,用于芯片一级的互连。例如I2C(Inter-IC)总线、SPI(Serial Peripheral Interface)总线、SCI(Serial Communication Interface)总线等。
③系统总线:也称为板级总线,是微机中各插件板与系统板之间进行连接和传输信息的一组信号线,用于插件板一级的互连。例如ISA(Industrial Standard Architecture)总线、EISA(Extended ISA)总线、MCA(Micro Channel Architecture)总线、VESA(Video Electronics Standard Association)总线、PCI(Peripheral Component Interconnect)总线、Compact PCI总线、AGP(Accelerated Graphics port)总线等。
④外部总线:也称为通信总线,是系统之间或微机系统与电子仪器和其他设备之间进行通信的一组信号线,用于设备一级的互连。例如RS-232-C总线、RS-485总线、IEEE-488总线、USB(Universal Serial Bus)总线等。
按总线功能来划分又可分为地址总线(Address Bus)、数据总线(Date Bus)和控制总线(Control Bus)三类。我们通常所说的总线都包括这3个组成部分。
①地址总线(AB):输出将要访问的内存单元或I/O端口的地址,地址线的多少决定了系统直接寻址存储器的范围。如8086的地址总线有20条(A19~A0),它可以寻找从00000H~FFFFFH共220=1M个存储单元,可以寻址64K个外设端口。地址总线是单向的。
②数据总线(DB):用于在CPU与存储器和I/O端口之间的数据传输,数据线的多少决定了一次能够传送数据的位数。16位机的数据总线是16条,32位机的数据总线是32条,8086的数据总线是16条。数据总线是双向的。
③控制总线(CB):用于传送各种状态控制信号,协调系统中各部件的操作,有CPU发出的控制信号,也有向CPU输入的状态信号。有的信号线为输出有效,有的输入有效;有的信号线为单向的,有的是双向的;有的信号线为高电平有效,有的低电平有效;有的信号线为上升沿有效,有的下降沿有效。控制总线决定了系统总线的特点,如功能、适应性等。
1.2.7 微型计算机工作过程
冯·诺依曼型计算机工作原理的核心是“存储程序”和“程序控制”,即事先把程序装载到计算机的存储器中,当启动运行后,计算机便会按照程序的要求自动进行工作。
介绍微机的工作原理前,先了解一下计算机的指令和指令系统。指令是指计算机完成一个基本操作的命令。指令系统是一个计算机所能够处理的全部指令的集合。不同的计算机内部结构不同,指令系统也不一样。指令系统指明了一个计算机能够接收哪些命令,运行什么样的程序。
一条指令一般包括两个部分:操作码和操作数。操作码用于指明指令的功能,告诉计算机需要执行的是哪一条指令,具体的是什么操作;操作数用于指明操作的数据或数据的地址,主要包括源操作数和目的操作数,在某些指令中,操作数可以部分或全部省略,比如一条空指令就只有操作码而没有操作数。在计算机内部只能识别用二进制编码形式表示的机器语言指令,所有采用汇编语言或高级语言编出的程序,都需要汇编或翻译(编译或解释)成为机器语言后才能被计算机运行。
为了说明微型计算机的工作过程,下面以模型机上运行一个简单的例子来介绍。例如,计算3+5=?虽然这是一个相当简单的加法运算,但是,计算机却无法理解。用计算机来处理时,人们必须要先编写一段程序,以计算机能够理解的语言告诉它如何一步一步地去做,直到每个细节都详尽无误,计算机才能正确地理解与执行,如用汇编语言或高级语言编写的程序还需要汇编或翻译(编译或解释)成为机器语言程序。程序编写好后送入存储器中,执行程序才能实现。为此,在执行程序之前需要做好如下几项工作:
①用助记符号指令(汇编语言)编写程序(源程序);
②用汇编软件(汇编程序)将源程序汇编成计算机能识别的机器语言程序;
③将数据和程序通过输入设备送入存储器中存放。
假设上面例子的汇编语言源程序和机器语言程序如下:
汇编语言 机器语言 功能 MOV AL,03H 1011 0000 0000 0011B ;把01送入累加器A ADD AL,05H 0000 0100 0000 0101B ;02与A中内容相加,结果存入A HLT 11110100B ;停止操作
编译好的机器语言程序有5字节,存放于存储器地址为00H开始的单元处。
1.执行第一条指令的过程
给程序计数器PC(或IP)赋以第一条指令的地址00H,就进入第一条指令执行过程。指令执行分两步:取指令和执行指令,具体操作过程如下。
(1)取第一条指令
如图1.14所示。
①当前程序计数器PC或IP内容(00H)送地址寄存器AR。
②PC自动加1,等于01H,指向下一个存储器单元。这里指向第一条指令的操作数。
③地址寄存器AR的内容00H通过地址总线AB送至存储器,经地址译码器译码选中相应的00H单元。
④CPU发出存储器“读”命令。
⑤在读命令的控制下,所选中的00H单元的内容读至数据总线DB上。
⑥读出的内容经数据总线DB送至数据寄存器DR。
⑦指令译码。因为取出来的是指令的操作码,所以数据寄存器DR的内容被送至指令寄存器IR中,然后再送至指令译码器ID,译码后由控制器发出执行这条指令的各种控制命令。
图1.14 取第一条指令的操作示意图
(2)执行第一条指令
当指令译码器ID对操作码B0H译码后,CPU就知道这是一条把下一个存储单元的数据(操作数)送至累加器AL的指令,所以,执行该指令就把下一个存储器单元中的数据取出来送累加器AL。如图1.15所示,操作过程如下。
①将当前程序计数器PC或IP的内容01H送至地址寄存器AR。
②PC自动加1,等于02H,这里指向下一条指令,为取下一条指令做准备。
图1.15 执行第一条指令的操作示意图
③地址寄存器AR的内容01H通过地址总线AB送至存储器,经地址译码器译码后选中存储器01H单元。
④CPU发出存储器“读”命令。
⑤在读命令的控制下,所选中的01H存储单元的内容01H读至数据总线DB上。
⑥读出的内容经数据总线DB送至数据寄存器DR。
⑦因为经过译码已经知道读出送到累加器AL,所以数据寄存器DR的内容01H通过内部数据总线送至累加器AL。于是第一条指令执行完毕,操作数01H被送到累加器AL中。
2.执行第二条指令的过程
第一条指令执行完毕以后,程序计数器PC的值为02H,指向第二条指令在存储器中的首地址,计算机再次重复取指令和执行指令,就进入第二条指令的执行过程。
(1)取第二条指令
这个过程与取第一条指令的过程相似,这里不再重复,取第二条指令后程序计数器PC的内容为03H。
(2)执行第二条指令
当第二条指令的操作码04H取出送指令译码器ID译码后,CPU就知道这是一条加法指令,用于把下一个存储单元的内容与累加器AL中的内容相加,加得的结果送累加器AL。所以,执行该指令就把下一个存储单元中的数据取出来送ALU的一端,累加器AL的内容送ALU的另一端,相加后经ALU送回累加器AL中。如图1.16所示,操作过程如下。
①将当前程序计数器PC或IP的内容03H送至地址寄存器AR。
②PC自动加1,等于04H,这里指向下一条指令,为取下一条指令做准备。
③AR通过地址总线把地址03H送至存储器,经过译码,选中相应的单元,
④CPU发出存储器“读”命令。
⑤在读命令的控制下,所选中的03H存储单元的内容02H读至数据总线DB上。
⑥读出的内容经数据总线DB送至数据寄存器DR。
⑦数据寄存器DR的内容通过内部数据总线送至ALU的一个输入端。
图1.16 执行第二条指令的操作示意图
⑧累加器AL中的内容01H送ALU的另一个输入端,在ALU中执行加法操作。
⑨相加的结果03H由ALU输出至累加器AL中。
3.执行第三条指令的过程
第二条指令执行结束后,程序计数器PC的值为04H,指向第三条指令在存储器中的首地址,进入第三条指令的执行过程。第三条指令的处理与前面完全相同,第三条指令的操作码F4H(HLT)取出经译码器译码后就停机。整个程序执行完毕。
综上所述,计算机的工作过程就是执行程序、执行指令的过程,用计算机解决问题,应先根据问题用计算机语言编写出相应的程序,程序再通过输入设备输入存储器,最后在存储器和中央处理器CPU之间运行程序从而达到目的。计算机执行指令的过程可看成是控制信息(包括数据信息与指令信息)在计算机各组成部件之间的有序流动过程。信息在流动过程中得到相关部件的加工和处理。