和硬、软件功能分配发生变化,对指令的解释和执行是通过运行微程序来实现的。利用程序设计技术和扩大微程序的容量,可以使原来属于软件级的一些功能纳入微程序一级中。微程序被固化在只读存储器中。从信息形态上讲,微程序类似于软件;从器件形态上讲,它固化在硬件芯片内;从逻辑功能上讲,它属于硬件CPU的范畴,因而称为固件。现在也常采用软件固化的策略,将系统软件的核心部分(如操作系统的内核、常用软件中可固定不变部分)固化在存储芯片之中。从用户看,它们是系统硬件(如系统板)的一部分。
如果说系统设计者必须关心软、硬件之间的界面,即哪些功能由硬件实现,哪些功能由软件实现,用户则更关心系统能提供哪些功能。当然,实现这些功能的途径不同,其执行速度一般是不同的。
1.4 计算机的体系结构、组成和实现
计算机的体系结构(Computer Architecture)主要是研究硬件和软件功能的划分,确定硬件和软件的界面,即哪些功能应由硬件子系统完成,哪些功能应由软件子系统完成。
计算机组成(Computer Organization)是依据计算机体系结构,在确定并分配了硬件子系统的概念结构和功能特性的基础上,设计计算机各部件的具体组成及它们之间的连接关系,实现机器指令级的各种功能和特性。从这个意义上说,计算机组成是计算机体系结构的逻辑实现。为了实现相同的计算机体系结构所要求的功能,可以有多种不同的计算机组成设计方案,这是由于半导体器件性能的提高、新技术成果的面市,或者新的性能/价格比的需求出现,都会带来计算机组成的变化。
计算机实现(Computer Implementation)是计算机组成的物理实现。包括中央处理机、主存储器、输入/输出接口和设备的物理结构,所选用的半导体器件的集成度和速度,器件、模块、插件、底板的划分,电源、冷却、装配等技术,生产工业和系统调试等各种问题。总之,就是把完成逻辑设计的计算机组成方案转换成真实的计算机,也就是把满足设计和运行、价格等各项要求的计算机系统真正地制作并调试出来。
1.5 计算机系统中的信息活动
本节介绍程序和数据进入计算机系统,在计算机系统中被传送、存储和加工,以及将信息通过输出设备输出的过程。信息的输入、输出,以及信息在计算机内的传送、存储和被加工,这些就是信息在计算机系统中的主要活动。
1.5.1 硬信息和软信息
计算机系统所包含的信息,按其来源和产生信息的方法可分为两类,即硬信息和软信息。所谓硬信息就是当打开主机电源后,计算机硬件自己产生的信息;或在计算机运行过程中,按下Reset键后计算机硬件产生的信息;或在计算机运行过程中,不是根据程序,而是根据外设请求而进入相应的状态周期(DMA周期或中断周期),在此状态周期内计算机6
第1章 计算机系统概论 硬件所产生的信息。所谓软信息就是程序和数据,以及CPU根据程序产生的控制信息。程序和数据都是从计算机系统之外输入的。本章所涉及的信息主要是指软信息。
1.5.2 信息进出计算机系统
计算机系统之外的信息是人们可以识别的符号、图形或声音。但计算机系统内部却只能识别二进制信息。那么,如何将系统之外人们可以识别的信息转换为计算机内的二进制信息,这就是输入设备所要完成的工作。同理,如何将计算机内的二进制信息,转变为能够在屏幕上显示的图形、动画,能够通过喇叭播放的语言、歌曲;或转变为可以控制卫星运行、火箭发射的控制信息;或转变为其他各种各样的控制信息,以控制被控对象按人们预定的方式工作,这是输出设备要实现的功能。
输入设备和输出设备各有自己的控制系统,它们依靠自己的控制系统来实现计算机内的二进制信息和相应设备产生(输入设备)或需要的信息(输出设备)之间的转换。不同的输入设备实现不同的外部信息的转换,如键盘实现将按的那个键转换为对应字符的ASCII码(二进制代码)。对输出设备来说,就正好相反,即将二进制信息转换为不同外围设备所需要的控制信息。如显示器实现将二进制信息转换为屏幕上显示的图形、动画、文字。
显然,实现二进制信息与外围设备产生(输入设备)或需要的信息(输出设备)的转换是在外围设备内部进行的。外围设备完成这种信息转换是需要时间的,计算机主机要确认它是否已经完成了这一转换,就需要在外围设备与主机之间增加一个接口电路。只要有一个外围设备,就需要一个对应的接口。计算机连接了多少个外围设备,就需要相应数量的外围设备接口。不同外围设备的接口一般是不同的,甚至差别很大,因为不同的外围设备需要进行不同的信息转换,并且完成这种信息转换的时间也不相同。例如,人们什么时候在键盘上按下一个键,这显然是随机的;打印机什么时候打印完一个字符,不同的打印机所需的时间并不一样。所以在接口中至少包含两类寄存器,即数据寄存器和状态寄存器。当我们按下一个键后,由键盘自己产生一个字节的字符代码,然后送到接口的数据寄存器中,并将状态寄存器中的完成标志位置1,此时,计算机主机(CPU)可以从接口数据寄存器中取走数据,并将完成标志位清0。当计算机主机(CPU)将要打印字符的ASCII码送到打印机接口,并将完成标志清0后,启动打印机开始打印;打印机打印完这个字符后,就将完成标志位置1,告诉计算机主机(CPU)可以送来下一个要打印的字符代码。由此可见,计算机主机(CPU)是通过接口寄存器中的完成标志位来了解外围设备目前的工作状况的,而主机与外围设备之间的数据交换又是通过接口中的数据寄存器来完成的。所以说,不同外围设备的共同点就是,都有数据寄存器,也都有状态寄存器。
一般说来,主机与外围设备可以并行工作。例如,当CPU运行程序的时候,并不影响我们在相同时刻按键盘上的键,因为我们按那个键后所产生的二进制代码是存放在接口数据寄存器中的,并不影响CPU运行程序。然而,如果在按另一个键以前,CPU还没有取走已经存放在数据寄存器中的数据,那么,当按下另一个键之后,数据寄存器中原有的数据就会丢失。为什么我们平时无论用多快的速度从键盘上输入数据,都不会丢失数据呢?这是因为:我们手工按键的速度相对于CPU取走一个字符数据的速度来说实在是太慢了。CPU取走一个字符的时间大约为几十个毫微秒,而按一个键至少需要几十个毫秒。CPU可以采
7
用不同的方法,及时感知接口中的完成标志位,从而取走已经输入的字符。同样,打印机在打印一个字符的时候,也不影响CPU运行程序,因为打印机正在打印的字符,已经在此之前由CPU送到接口的数据寄存器中了。打印机在打印完一个字符之后,便将接口中的标志位置1,此后处于等待状态,直到CPU根据接口中的标志位得知打印机已经打印完了原来的字符,送来第二个字符的代码,并将接口中的标志位清0,才又开始打印第二个字符。打印机打印完一个字符需要的最短时间是几十毫秒,而CPU送一个字符代码到打印机的接口数据寄存器的时间大约为几十个毫微秒。如果CPU不管打印机接口标志位的状态,不停地或随机地将字符代码送到接口数据寄存器中,打印机便无所适从,不知道要干什么,于是就会打印出乱码,或报告错误。
1.5.3 信息在主机系统中的活动
主机系统包括运算器、控制器、内存储器和外围设备接口。在此范围内,通常情况下可以说,所有控制信号都来自控制器。控制器控制的最远点就是外设接口。所有外围设备能完成的功能,都是在它们自己的控制系统的控制下实现的。它们可以在脱机状态下独立工作。在联机状态下,控制器只是向它们发送命令,启动它们工作;从它们的接口接收数据,或向它们的接口发送数据。
1. 主机系统中的信息类型
主机中的信息有数据信息、地址信息和控制信息3种类型。地址信息用来选择发出数据的源地址或接收信息的目标地址。地址信息一般是由程序计数器PC发出的,或是对指令的地址码部分加工的结果。数据信息分两种情况:第一种情况是,它就是要加工处理的数据;第二种情况是,当一条指令从内存中取出来的时候,依然作为普通数据来传送。控制信息是由控制器发出的,一般是对指令操作码部分的加工结果。
当信息存储在寄存器和内存中的时候是静态的,一般就称信息。当信息传送的时候就表现为信号,信号只在传送过程或加工中才存在于总线上,传送或加工过程一结束就从总线消失了。
2. 主机系统中的信息活动
主机系统中的信息活动,可以概括为传送、存储和加工。为了存储信息,主机系统中就需要有存储部件。所谓传送信息就是把信息从一个存储单元传送到另一个存储单元,这两个存储单元可能位于同一个存储部件中,也可能位于不同的两个存储部件中。主机系统中的存储部件主要有三大类,一类称为内存储器,另一类称为接口寄存器,还有一类则称为CPU寄存器组。位于CPU中的存储部件和位于外围设备接口中的存储部件一般称为寄存器,数量不多。位于CPU中的存储部件,一部分属于运算器,一部分属于控制器。内存储器中的一个存储单元相当于一个寄存器,通常存放一个字节(8个二进制位)的数据;但内存储器的存储原理与寄存器的存储原理一般不同。
信息的传输通常使用总线来完成。若是控制信息,通常由控制器的微命令发生器上的引脚输出,直接用导线连接到需要控制部件的相应引脚。若是选择内存地址的信息,通常8
第1章 计算机系统概论 是由控制器的MAR寄存器发出;若是选择接口寄存器地址的信息,通常也是由MAR寄存器发出,不过只取其若干低位,因为接口寄存器的存储单元比内存储器的存储单元少得多。若是选择CPU内部寄存器,一般由CPU内部属于控制器的指令寄存器的地址码部分的寄存器选择字段,经过译码器输出进行。若是传输数据,那么数据总线的一端连接在源存储部件数据输出端,另一端则连接在目的存储部件的数据输入端。一般来说,数据在两个直接相连的存储部件之间传送信息,那么,源端和目的端中必有一个是寄存器;当然,也可能源与目标都是寄存器。下面分两种情况来分析主机中信息的基本活动。
1) 信息传送
信息传送分三种情况:源和目标都是CPU寄存器;源和目标中一个是CPU寄存器,另一个是内存;源和目标都是内存。
(1) 源和目标都是CPU寄存器。由源寄存器选择信号选择出一个寄存器中的数据,将其放置在CPU内部总线上,在本时钟周期末的节拍脉冲前沿,将数据打入目标寄存器。
(2) 源和目标中一个是CPU寄存器,另一个是内存。又分两种情况:若源是CPU寄存器,则在第一个时钟周期里将寄存器的数据打入CPU内的MBR寄存器;而在下一个时钟周期里将MBR中的数据写入内存。若源是内存,则在第一个时钟周期里,从内存读出数据,存入CPU的MBR寄存器;而在下一个时钟周期里将MBR寄存器中的数据打入目标寄存器。
(3) 源和目标都是内存。在第一个时钟周期里,从内存读出数据,存放在MBR寄存器中;在下一个时钟周期里,则将MBR中的数据写入内存。
由此可见,若在源与目标之间要经过许多中间存储单元,那么传送要依次进行。可以粗略地说,每两个直接相连的存储单元之间传送一次数据需要一个时钟周期,源与目标之间经过的存储部件越多,传送需要的总时间就越多。一条指令执行的时间长短,常常取决于数据传送需要经过的中间存储节点数。
2) 信息在传送过程中被加工
信息的加工是在其传送过程中实现的,但这个传输部件就不是一般的数据总线了。它通常是一个被称为ALU的运算部件,由逻辑门电路组成。这个运算部件有两个数据输入端,分别用来输入两个要加工的数据(如加、减、乘、除);有若干个控制信号输入,用来控制对输入数据的加工。ALU的输出端便是对数据加工的结果。当然,也可以只对一个数据进行加工,此时,可以从两个数据输入端中的任何一个输入端输入要加工的数据。
这里有这样几个问题:被加工的数据来自何处;加工好了的数据去往何处;从数据进入ALU、加工信息作用于ALU开始,要经过多少时间后,才能输出稳定的加工好了的数据。
(1) 被加工的数据来自何处。分三种情况:来自CPU寄存器;来自内存;一个来自CPU寄存器,另一个来自内存。
(2) 加工好了的数据去往何处。分两种情况:打入CPU寄存器;写入内存。 (3) 从数据进入ALU、加工信息作用于ALU开始,一般是经过一个时钟周期后,才能输出稳定的加工好了的数据。
9
1.5.4 计算机系统中信息传送的通路
在计算机系统中,并不是任意两个存储空间之间都可以直接传送信息的。换句话说,只有某些存储空间之间才能直接交换信息。图1-4所示为计算机系统中信息传送的主要通路。由图可知,CPU寄存器是信息传送的中心。
图1-4 计算机系统中信息传送通路
按照传送信息的传送信号是如何产生的,可以将计算机系统中的信息传送分为三类,即软传送、硬传送和隐含传送。
(1) 软传送。即指令传送,传送信号是根据执行的指令产生的。此时,要根据指令操作码和地址码产生读(在源端)写(在目标端)信号和地址信号(源与目标)。内存与大多数CPU寄存器之间的信息传送、CPU寄存器与接口寄存器之间的信息传送,都是软传送。CPU内部寄存器之间通过执行指令所进行的信息传送当然也是软传送。
(2) 硬传送。即非指令传送,传送信号不是根据执行的指令,而是由硬件电路自身所产生的。显然,硬传送不受程序控制。接口与外围设备之间的信息传送就是硬传送。在这里,不仅传送信号由硬件电路产生,而且被传送的信息本身还要改变其存在方式。如磁盘与磁盘接口寄存器之间的信息传送就是硬传送的典型例子。
计算机系统中所存在的另一类硬传送,就是发生在磁盘接口寄存器与内存之间的直接信息传送,即DMA传送。在DMA传送时,无论是作用于接口寄存器的地址信号和读/写信号,还是作用于内存的地址信号和读/写信号,都是由DMA控制器产生的,而不是由CPU执行指令产生的。此外,在中断周期中,由CPU操作所进行的数据传送,也属于硬传送。
(3) 隐含传送。隐含传送是指这样一类传送:传送信号既不是由硬件电路直接产生的,也不是根据一条指令的操作码和地址码产生的,而是程序运行的某一时刻必定要产生的。隐含传送虽然不可编程,却又与程序运行紧密相关,并且在程序运行的某一时刻注定要发生。如一般的取指操作就是隐含传送。在大多数情况下,取指操作并不是执行指令本身的目标,而是执行一条指令的前提:指令必须先从内存取出放入CPU的指令寄存器中,然后才能被执行。图1-4中,MBR寄存器对用户是不可见的(不可编程),然而无论是取指令还是取操作数,或是从CPU寄存器向内存写入数据,都要通过MBR,所以通过MBR的数据传送,从某种意义上来说,都可以看做隐含传送。
1.5.5 CPU对三类信息的加工
计算机运行主要就是执行指令,而执行指令是为了对信息进行传送、存储和加工。但10