计算机组成与结构实验.docx
《计算机组成与结构实验.docx》由会员分享,可在线阅读,更多相关《计算机组成与结构实验.docx(96页珍藏版)》请在冰豆网上搜索。
计算机组成与结构实验
计算机组成与结构
实验及课程设计指导书
朱节云杨晨宜夏明亮
南京工程学院
二〇〇九年十月
第1章TEC-2教学机系统介绍
1.1TEC-2机系统概述
本课程采用的实验系统是由清华大学计算机系研制的TEC-2计算机组成原理教学机系统,系统支持64条基本指令,具有多种指令格式和多种寻址方式。
运算器采用位片结构,控制器采用微程序方案,支持动态微程序设计。
系统监控程序支持外设I/O操作的主要方式,能支持多种I/O接口电路,能接入多种外设。
系统能与PC机通过串行接口进行通讯,可实现PC机磁盘文件与TEC-2机的双向信息传送,并可在PC机上完成对TEC-2机汇编语言程序的交叉汇编。
TEC-2机具有较高的实验性能,能较好的完成计算机硬件系统各功能部件的教学实验,包括运算器部件、控制部件、主存储器部件、总线和几种最常用的外设接口实验,包括中断方式I/O与DMA方式I/O,几种主要外设的驱动等方面的实验。
TEC-2机的主要技术指标有:
1)字长为16位,即运算器、主存、数据与地址总线均为16位;
2)TEC-2机的指令系统,基本指令系统支持类PC机的64条指令,多种指令格式,7种基本寻址方式;其中53条指令已实现,用于编写监控程序,尚留11条指令供实验者实现;
3)主存支持64K字,通常用字寻址方式,有4KW的ROM,存放监控程序,2KW的RAM,存放用户程序及数据;
4)运算器由4片4位的位片结构的运算器器件级联而成,每片内由实现8种运算功能的ALU和16个双端子口读出、单端口写入的通用寄存器组成;另配有一片快速进位器件实现高速进位;
5)控制器采用微程序方案实现,控存字长56位,可用最大容量1024个字,由可读写的存储器芯片组成,支持动态微程序设计。
已实现的53条指令的微程序保存在2片单独的8位ROM中,加电过程中自动调入控存,以保证TEC-2机加电后能正常运行;
6)TEC-2机主机上安装有两个串行接口及配套电路,能直接与计算机终端或PC机相连,在监控程序控制下完成TEC-2机操作,或与另一台TEC-2机相连,完成TEC-2机之间的通信实验;
7)作为TEC-2机的扩展部分,TEC-2机通过一条50芯扁平电缆,可以与一块扩展板相连。
在扩展板上可以完成主存扩展,并行接口,实时钟,DMA接口,A/D或D/A转换;
8)TEC-2机主振通常用1.8432MH的分频脉冲给出,用户也可外接主振信号;
9)TEC-2机上安装有约26个扭子开关、3个按钮微动开关、16个发光二级管等,在不接入计算机终端与PC机的情况下,能在手动方式下完成全部的实验项目。
1.2TEC-2机的指令系统与汇编语言程序设计
TEC-2机类PC机基本指令系统,采用6位操作码,故最多支持64条基本指令,其中53条指令已由设计者实现,其相应微程序固化在ROM芯片中,其余11条将留给实验人员自行实现。
已实现的指令与实验人员实现的指令能方便地用在同一实验程序中,为控制器部件的实验带来很大方便。
TEC-2机的基本指令的格式比较固定。
从指令长度区分,有单字指令和双字指令,用户也可以实现三字指令;从地址码的个数区分,有零地址指令、一地址指令和二地址指令;从支持的基本寻址方式区分,有寄存器寻址、寄存器间接寻址、立即数寻址、变址寻址、相对寻址、绝对寻址和栈寻址等方式;从指令功能上看,最常用的指令类型和运算比较齐全。
TEC-2机上现有的软件,包括监控程序,都是用已实现的53条指令设计完成的,而且在PC机上实现的TEC-2机的交叉汇编程序,能在PC机中直接汇编生成TEC-2机的指令代码,即生成TEC-2机上的执行程序。
TEC-2机的指令格式如下:
1510987430
操作码
条件码
目的寄存器号
源寄存器号
I/O端口地址/相对转移的位移量
立即数/绝对地址/变址位移量
单字指令仅用一个指令字。
双字指令用两个指令字,第二个指令字的内容可能是立即数、一个绝对地址或一个变址位移量。
第一个指令字分为三个主要部分。
第10~15位是操作码,TEC-2机的基本指令是定长操作码结构,最多支持64条基本指令。
第8、9两位是条件码。
用作条件转移指令的判断条件。
这两位的值为00、01、10和11时,分别选择以处理机状态字中的C、Z、V和S的值作为判断条件。
可以认为这两位是指令的扩展操作码,由于除了条件转移指令外,其余指令均不使用这两位,故可以用这两位扩展新的指令,而不会影响原来的指令功能。
最低的8位有多种用法:
1)用于给出I/O端口地址。
2)用于给出相对寻址的位移量,其范围从-128到+128之间,因此相对地址应在当前指令地址向前向后总共256个字的范围之内。
实现相对地址计算时,这个位移量的最高位用作符号位,补码形式,与16位的当前指令地址相加时,这一符号位要扩展到15~8高8位上去。
3)这8位被分成两个4位的字段,用于给出所用的通用寄存器编号。
对二地址指令,这里可以给出目的与源两个操作数所在的寄存器编号。
对一地址指令,只用源或目的中的一个显式操作数,此时,可能用到某一个4位字段,另外一个4位字段则不用。
寄存器用于给出操作数、操作数地址,或用作变址寄存器。
1.2.1TEC-2机指令系统介绍
首先从地址码个数和指令功能两个角度,把TEC-2机基本指令区分为如下6类:
1)11条零地址指令
格式:
1510987430
OP
不用
不用
不用
指令:
汇编指令
实现功能
NOP
空操作
PSHF
状态字入栈
POPF
状态字出栈
EI
开中断,INTE←1
DI
关中断,INTE←0
STC
进位置1,C←1
CLC
进位清0,C←0
RET
子程序返回,PC←[SP],SP←SP+1
IRET
中断返回,STR←[SP],SP←SP+1
PC←[SP],SP←SP+1
LDMC
装入微指令代码,即把主存中的一段微代码写入控存中。
所用参数,R1:
微码在主存中首地址;R2:
微指令条数;R3:
微码写入的控存首地址
HALT
动态停机指令,PC←IP
2)12条一地址指令
一地址指令有两种格式。
格式1:
1510987430
OP
不用
不用
SR
指令:
汇编指令
实现功能
MULSR
无符号乘,R1*SR→R0R1,
根据R1的值置状态位
DIVSR
无符号除,R0R1/SR→R0(余数)R1(商),
根据R1的值置状态位
格式2:
1510987430
OP
不用
DR
不用
指令:
汇编指令
实现功能
PUSHDR
压入DR
POPDR
弹出DR
INCDR
DR←DR+1
DECDR
DR←DR-1
NOTDR
DR求反,DR←/DR
SHLDR
DR左移,最低位补0,最高位移入C
ASRDR
DR算术右移,最高位保持不变,最低位移入C
SHRDR
DR逻辑右移,最高位补0,最低位移入C
RCLDR
DR与C循环左移,C移入最低位,最高位移入C
RCRDR
DR与C循环右移,C移入最高位,最低位移入C
3)17条二地址指令
二地址指令有两种格式。
格式1:
1510987430
OP
不用
DR
SR
指令:
汇编指令
实现功能
ADDDR,SR
DR←DR+SR
ADCDR,SR
DR←DR+SR+C
SUBDR,SR
DR←DR-SR
SBBDR,SR
DR←DR-SR-C
CMPDR,SR
DR-SR
ANDDR,SR
DR←DRandSR
ORDR,SR
DR←DRorSR
XORDR,SR
DR←DRxorSR
TESTDR,SR
DRandSR
MOVDR,SR
DR←SR
MOVDR,[SR]
DR←[SR]
MOV[DR],SR
[DR]←SR
格式2:
1510987430
OP
不用
DR
SR
DATA/ADR
指令:
汇编指令
实现功能
MOVDR,DATA
DR←DATA
MOVDR,[ADR]
DR←[ADR]
MOV[ADR],SR
[ADR]←SR
MOVDR,DATA[SR]
DR←[DATA+SR]
MOVDATA[SR],DR
[DATA+SR]←DR
4)2条I/O指令
格式:
15109870
OP
不用
PORT
指令:
汇编指令
实现功能
INPORT
R0←[PORT],从外设读入一字节到R0低8位
OUTPORT
[PORT]←R0,把R0的低8位数据写到外设
5)6条转移指令
转移指令有三种格式。
格式1:
相对转移指令
15109870
OP
CND
位移量
指令:
汇编指令
实现功能
JRADR
无条件相对转移到ADR,
ADR为原PC值+位移量
JRCND,ADR
当条件满足时相对转移到ADR,
ADR为原PC值+位移量
格式2:
通过通用寄存器给出转移地址的转移指令
15109870
OP
CND
不用
SR
指令:
汇编指令
实现功能
JPSR
无条件相对转SR所指的地址
JPCND,SR
当条件满足时转SR所指的地址
格式3:
按绝对地址实现的转移指令
15109870
OP
CND
不用
不用
ADR
指令:
汇编指令
实现功能
JPADR
无条件相对转移到ADR
JPCND,ADR
当条件满足时转到ADR
6)2条子程序调用指令
子程序调用指令有两种格式。
格式1:
15109870
OP
不用
不用
SR
指令:
汇编指令
实现功能
CALLSR
调用SR指明的子程序,
SP←SP-1,[SP]←PC,PC←SR
格式2:
15109870
OP
不用
不用
不用
ADR
指令:
汇编指令
实现功能
CALLADR
调用通过ADR指明的子程序,
SP←SP-1,[SP]←PC,PC←ADR
上述指令说明中用到的符号包括:
SR——源操作数寄存器
PC——程序计数器
DR——目的操作数寄存器
IP——PC增量前的值,当前指令地址
OP——指令操作码
SP——堆栈指针
CND——条件转移指令所用的判断条件。
对于无条件转移指令,CND位无用。
条件码CND为两位,编码00、01、10、11分别表明要判C、Z、V、S四个标志位,而条件转移指令操作码的最低1位用来表明是按这某一标志位为0还是为1才实现转移,即同一条汇编指令名含两个操作码,如JPC,SR和JPNC,SR汇编指令名均为JP,但依据条件分别是C和NC,其指令操作码分别是100010和100011。
若只按实现的功能划分,可以把TEC-2机的基本指令划分为5类:
算术逻辑指令、传送指令、I/O指令、控制类指令和其它指令。
(1)19条算术逻辑指令
NOTDR
INCDR
DECDR
ADDDR,SR
ANDDR,SR
SUBDR,SR
ADCDR,SR
ORDR,SR
SBBDR,SR
CMPDR,SR
XORDR,SR
TESTDR,SR
ASRDR
SHLDR
RCLDR
SHRDR
RCRDR
MULSR
DIVSR
(2)12条传送指令
MOVDR,SR
MOVDR,DATA
MOVDR,DATA[SR]
MOVDR,[SR]
MOVDR,[ADR]
MOVDATA[SR],DR
MOV[DR],SR
MOV[ADR],SR
PSHF
PUSHDR
POPF
POPDR
(3)2条I/O指令
INPORT
OUTPORT
(4)17条控制类指令
JRADR
JPSR
JPADR
JRCND,ADR
JPCND,SR
JPCND,ADR
CALLSR
CALLADR
RET
IRET
EI
DI
CLS
STC
(5)3条其它指令
NOP
LDMC
HALT
1.2.2TEC-2机汇编语言程序设计
学习TEC-2机的汇编语言程序设计的目的,主要用于掌握TEC-2机的指令系统,即对TEC-2机每条指令的格式、功能、用法全面了解,为进一步学习计算机控制器设计,即TEC-2机的微程序设计打牢基础;此外,调试新指令的微程序,进行主存扩展实验,完成各种I/O接口实验,也要用到相应的程序段;第三个目的,是争取使同学有能力读懂TEC-2机的监控程序,它是用TEC-2机的汇编语句写成的,是最靠近硬件系统的软件。
读懂这样一个简单的监控程序,能深化对指令系统的认识,对掌握计算机整机系统的组成与运行原理,对加深理解计算机硬、软件的关系与配合情况都十分有益。
建立TEC-2机的汇编语言源程序,有两种途径。
第一种方法,是从TEC-2机的终端上,运行监控程序的A(ASSEMBLY)命令,其格式为:
A或A主存地址
打入A命令直接回车,通常TEC-2机会给出一个约定的主存地址;打入A命令并跟用户给出的一个主存地址,系统将用这一地址取代原约定的地址值。
接下去,实验者可逐条打入所要的汇编语句。
这种用法与PC机上的DEBUG很类似,系统会逐语句进行汇编,并将产生的执行码(TEC-2机指令代码)从给定地址逐条连续存放。
若发现给出的汇编语句有错,则指出错误位置,并要求重新打入正确的语句。
这个过程一直继续到实验者在应该输入语句的位置不再输入语句而直接打回车键结束。
例如:
建立一个从主存800H地址开始的小程序。
A800
800:
MOVR1,100
802:
MOVR2,R1
803:
ADDR2,R1
804:
RET
805:
在这种方式下,所有的数字都约定用16进制数,故数字后不能跟字符H,监控程序实现起来更简单。
每个程序的最后一个语句一定为RET汇编语句。
因为监控程序是用类似子程序调用方式使实验者的程序投入运行的,用户的程序只能用RET语句,使用户程序正常结束后,能正确返回到监控程序的下一指令,保证监控程序能继续控制TEC-2机的运行过程。
为了方便实验者进行程序设计,下表给出了监控程序实现与使用的10个子程序的调用地址,只要按要求提供正确的运行参数,便可以方便地使用它们。
同学也可以通过学习监控程序,找出并使用另外一些子程序。
子程序
名
调用
地址
输入
参数
输出
参数
修改
寄存器
功能
INCH
005AH
无
字符在R0低字节
无
输入一个字节到R0
OUTCH
009BH
字符在R0低字节
无
无
显示一字符
SHDW
020CH
R0
R0
无
R0右移8位
SHUP
0213H
R0
R0
无
R0左移8位
WSTR
021AH
R2:
字符串首地址
无
R2
显示字符串(以0结束)
INLNE
0224H
R2:
缓冲区首地址
R2:
字符个数
R2
输入字符串以回车结束
NUMASC
02C9H
R15:
待显示的数据
无
无
R15转四位ASCII显示
DISPCH
02DFH
R0:
四位十六进制数
R0:
相应的ASCII码
无
R0转换成ASCII显示
ASCNUM
02F0H
R10:
ASCII串字节地址
R15:
相应二进制数
R0
ASCII到二进制转换
UPCASE
0250H
R0:
ASCII码
R0:
大写ASCII码
无
大写转换
其中与I/O有关的子程序中,一切I/O操作只能在控制台进行,若需用非控制台进行I/O操作,则在调用这些子程序之前先把0F82H(表示控制台在哪个串行口)的值求反,然后再调用,调用之后再求反,恢复原来的值。
在类DEBUG方式下,汇编语言程序中的转移指令和子程序调用,只能用绝对地址,因为它不支持伪指令,即不能为地址定义符号名。
例如:
CALL005A;用于输入一个字符到R0低字节
CALL0224;用于输入一个以回车结束的字符串
;开始时,R2放串存放的首地址
;输入完成后,R2中为串的长度
第二种方法,是在PC机上建立TEC-2机源汇编程序,之后运行在PC机上的交叉汇编程序ASEC,从而得到一个TEC-2机的执行程序。
当PC机作为TEC-2机的仿真终端时,选择PC机与TEC-2机通讯功能,就可以把保存在PC机磁盘上的TEC-2机的执行程序装入TEC-2机主存,并使其开始执行。
这是编写较复杂的TEC-2机程序的更有效的方法。
例如,TEC-2机的监控程序本身就是用这种方法完成设计与调试的。
这种编程方法的好处主要体现在两个方面。
一是充分利用了IBM/PC机的已有功能,如较强的编辑功能,好用的文件系统和磁盘设备等。
二是我们在PC机上,用PC的指令系统为TEC-2机设计了一个很好的交叉汇编程序ASEC。
它是一个符号汇编程序,不仅能对TEC-2机所定义的53条指令进行汇编,而且还提供了6条非常有用的伪指令,并允许在汇编语句中使用语句标号,这就能有效地避免直接使用绝对地址值(在类DEBUG方式下是做不到的)。
下面对交叉汇编程序ASEC的用法进行说明。
(1)ASEC提供的6条伪指令:
1ORGexp定义程序首地址为exp值
2VarEQUexp定义标号Var的值为exp
3Var=exp同②
4adrDWexp以adr为首地址存储exp的值
5BLKn保留n个字单元
6END程序结束标志
其中exp可以是一个十进制或以H结尾的十六进制数值,也可以是一个表达式,表达式中可以有+、-、*、/四则运算,但不能有括号,而且运算次序一律从左至右逐项运算,即不存在不同运算符间的优先次序。
exp也可以是一个以单引号引起来的字符串。
任何一个TEC-2的汇编程序都必须有ORG和END伪指令,而且exp的值要在合理的范围内。
(2)交叉汇编ASEC的操作过程
在IBM/PC机上打入:
ASECFilename
其中的Filename为用编辑程序建好的TEC-2机的一个汇编语言程序的文件名,默认的扩展文件名为“.SRC”。
之后,系统会显示出:
ListFilename[NUL.LST]:
此时用户可直接回车,则系统不产生列表文件。
若打入一个文件名(通常同源文件名),则系统将产生一个以“.LST”为扩展名的列表文件并写入磁盘。
若打入的文件名为CON或PRN,则列表文件将显示在屏幕上或送往打印机打印出来。
汇编中无错,将产生TEC-2机的一个可执行程序,其文件名同源程序文件名,扩展名为“.COD”。
若在汇编过程中发现错误,则终止汇编,并显示出错行的行号及汇编状态(即汇编是处在第一遍还是第二遍扫描过程中),根据这些信息,用户就可以找出程序中的错误。
第一遍扫描中发现的错误,可能是:
1非法标号,即标号以非字母字符开头
2标号重定义
3ORGexp中的表达式的值溢出或没有定义
4找不到程序结束标志END等
第二遍扫描中发现的错误,可能是:
1标号没有定义
2表达式的值溢出
3相对转移超出-128到+127的规定范围等
1.3TEC-2机硬件系统的基本组成与实现
按教学大纲规定,计算机组成与结构课程的重点,是教授简单单台计算机的硬件基本组成与运行原理。
TEC-2机硬件系统的基本组成与实现是计算机组成与结构课程的一个很好的实践学习例子。
1.3.1TEC-2机硬件系统的基本组成
TEC-2机硬件的基本组成如图1-l所示。
图1-lTEC-2机基本组成
图中粗方框内部分,是TEC-2机的主体,被做在两块垂直插接在一起的大印刷电路板上,它包括计算机主机的3个重要组成部件:
运算器、控制器、主存储器。
此外,还配备了2个串行接口电路,可以接计算机终端、IBM/PC机或另一台TEC-2机等。
粗线框外的DMA接口、并行接口、实时钟设备是TEC-2机提供的3个任选件。
可以分别接软磁盘驱动器(要带接口驱动电路)、8位并行口打印机或其它8位I/O设备,并提供实时钟支持。
这为TEC-2机提供了强有力的I/O实验功能。
图中带虚线的4个框,表示的是计算机标准外设或PC机,需要时,可以将它们接入TEC-2机系统中,以进行相应的实验。
图中最右上角的框,表示的是TEC-2机的另外一个重要选件——扩展实验板。
通过一个50芯的扁平电缆与TEC-2机接通后,可以方便地进行诸如实时钟、并行口、DMA接口、主存扩展、中断等各种类型的实验。
1.3.2TEC-2机的简化逻辑框图
在详细讲解TEC-2机各部件的具体组成与运行原理之前,先看懂TEC-2机的简化逻辑框图是很有益处的,这对理解TEC-2计算机的整机结构、各功能部件之间的连接关系至关重要。
TEC-2机的简化逻辑框图如图1-2所示。
图1-2简化逻辑框图
从简化逻辑框图上可以看到:
1)TEC-2机的运算器部件,主要由4片AM2901芯片组成,还包括由一片Gal20v8组成的状态寄存器,以及其它一些附加电路。
请参见TEC-2的功能部件框图1-3。
运算器部件的详细讲解在第1.3.3节进行。
2)TEC-2机的控制器部件,主要由1片AM2910实现的微程序定序器、用7片6116芯片(RAM存储器芯片,8×2048容量)与2片8×2048容量的2716ROM芯片组成的控存、56位的微指令寄存器,以及16位的指令寄存器和用2片2716芯片组成的微控存地址映射部件等组成。
请注意,为了节省器件,把程序计数器PC用运算器中的一个通用寄存器R5实现,故它不出现在框图的控制器部件中。
请参见控制器部件框图1-4,控制器的详细讲解将在第1.3.4小节给出。
3)TEC-2机的主存储器部分主要由4KW的ROM区(放监控程序)和2KW的RAM区(放用户程序及数据)组成。
它的地址选择部分与读写等控制信号用到了两个译码器电路。
主存部件将在第1.3.5节详细说明。
图1-3运算器部件框图
4)总线部分。
框中给出两组总线,即地址总线和数据总线,其宽度均为16位地址总线,其输入信号仅有一组,即来自地址寄存器,而地址寄存器只能接收来自运算器的结果输出信号。
这种处理办法尽管不十分合理,但实现起来最节省器件,简便又易降低造价。
地址总线的输出,要送往主存,送往各外设的I/O接口,如串行接口、并行接口等。
由于TEC-2机只用8位的I/O端口地址,故在I/O指令中,只用到地址总线的低8位。
地址总线还用于微程序控制存储器的写入,这对LDMC(即装入用户设计的微指令)是必要的。
地址总线的第4个负载是驱动点亮发光二极管的