TH-union
计算机组成原理基本实验指导
杨西珊 李志平 关桂霞 编
首都师范大学
2006 年 03 月
目 录
TH-union 计算机组成原理实验系统概述
一、H-union 教学计算机系统概述 ……………………………………………… 1
二、H-union 教学计算机的主要功能部件…………………………………………1
三、H-union 教学计算机的指令系统介绍…………………………………………3
基 本 实 验
实验一、教学计算机认识与简单汇编程序设计实验…………………………… 9
实验二、运算器部件实验(1) ……………………………………………………14
实验三、运算器部件实验(2) ……………………………………………………18
实验四、存储器部件扩展实验……………………………………………………19
实验五、教学计算机指令系统与汇编程序设计实验……………………………23
实验六、组合逻辑控制器部件实验………………………………………………26
实验七、微程序控制器部件实验…………………………………………………37
实验八、多级中断实验……………………………………………………………53
附录: 16 位机基本指令执行流程表
16 位机基本指令微程序表
0
1
TH-union 计算机组成原理实验系统概述
一、TH-union 教学计算机系统概述
TH-Union 教学机由清华大学计算机系研制、并且已经通过教育部主持的成果
鉴定,重点用于计算机组成原理和计算机系统结构等课程的教学实验过程。它的
功能设计和实现技术,都紧紧地围绕着对课程教学内容的覆盖程度和所能完成的
教学实验项目的质量与水平来进行安排。其突出特点是:
(1)硬件、软件的基本配置比较完整;
(2)体现出的知识与技术能覆盖相关课程主要教学内容;
(3)支持的教学实验项目多且水平高;
(4)硬件系统的实现兼有中小规模集成度的半导体器件、大规模可编程门
阵列器件两种方案。
软件:监控程序、汇编语言支持、解释 BASIC 语言。
硬件:运算器、控制器(多种实现:微程序或组合逻辑控制器)
主存储器,总线,接口, 输入设备,输出设备
硬件电路:中小规模逻辑器件或大规模可编程器件实现
图 1.1 实际的教学计算机系统
从图 1.1 可以看到,该计算机硬件系统组成中,功能部件是完整齐备的,运
算器、控制器、存储器、计算机总线、输入输出接口等配备齐全,还可以连接通
用微机作为仿真终端执行输入输出操作,同时实现了微程序和组合逻辑两种方案
的控制器。从 CPU 的具体设计和实现技术区分,既支持用中小规模芯片实现 CPU
的方案,也支持大规模现场可编程 FPGA 门阵列器件实现 CPU 的方案,体现了现
代电子设计技术在 CPU 系统设计方面应用的最新水平。
从计算机组成原理课程教学实验的角度看,该计算机软件系统组成也是完整
的,支持简单的高级语言 BASIC(包括浮点运算指令和基本函数运算功能),汇
编语言(支持基本伪指令功能)和二进制的机器语言,配有自己的监控程序以及
PC 机仿真终端程序等。
二、TH-union 教学计算机的主要功能部件
作为教学和教学实验使用的计算机,其结构和组成设计要比较好地体现出尽
可能多的主要教学内容,包括功能部件划分清晰,设计合理,它们之间连接关系
适当规范等。
2
以下是硬件的各主要部分的说明:
1.运算器:在选用中小规模逻辑器件实现的 CPU 系统中,运算器部件设计
选用了 4 片位片结构的运算器芯片 AM2901,该芯片内含功能比较合理的 ALU,双
端口控制读出、单端口控制写入的 16 个寄存器,和完成乘除法运算的乘商寄存
器等功能部件,从而构成 16 位字长的运算器。运算器除了完成全部的算术运算
与逻辑运算外,还完成几种寻址方式的实际地址计算,另外它也是主要的数据、
地址传送的通路。特别要说明一点,堆栈指针 SP 和控制器中的程序计数器 PC,
都是选用这里的几个通用寄存器实现的,主要目的是为了节省器件。
2.控制器:控制器分别用微程序方式与组合逻辑方式两种方案实现,通过
一个开关简单地完成两种控制器之间的切换。在选用器件时,微程序方案中选用
了美国 AMD 公司的微程序定序器 AM2910 芯片,控制存储器选用只读存储器芯片
+现场可编程序的 MACH 器件实现。组合逻辑方案中,控制信号形成部件选用现
场可编程序的 MACH 器件,这对简化控制器的逻辑设计与实现至关重要,也有利
于学生进一步了解和学习数字系统设计自动化的新知识。
3.主存储器:在教学计算机存储器部件设计中,出于简化设计和容易实现
的目的,选用静态存储器芯片实现内存储器系统,包括了 8K 字只读存储器 ROM
和 2K 字随机读写存储 RAM 两部分。ROM 芯片用来存放监控程序, RAM 芯片用
来存放用户程序和数据,以及用作监控程序临时数据和堆栈区。另外还配置 2 个
存储器芯片插座,可方便地完成主存储器的扩展实验。
存储器扩展时,用户可以任选 28C64 或与其兼容的 EEPROM 芯片,也可以使
用 6116 或 6164 的 SRAM 芯片中的一种使用,但这几种芯片的管脚定义不完全兼
容,为了能在 1 个芯片插座上兼容多种存储器芯片,可通过跳线插针的设置来实
现不同芯片的存储器扩展。
教学计算机的内存地址空间分配关系如下:
0000H~1FFFH:监控程序;
2600H~27FFH:监控程序临时数据和堆栈;
2000H~25FFH:用户区,可存放用户的程序和数据;
4000H~FFFFH:用户扩展区,可存放用户的程序和数据;
4.总线部件:实现了单总线结构,数据总线、地址总线和控制总线比较简
单,保证教学机的正常运行并体现出总线设计的基本原理。
数据总线,它的一端直接与主存储器芯片和 IO 接口芯片的数据线引脚相
连,用于完成对这些芯片在进行读写操作时的数据传送。
地址总线,用于 CPU 系统向主存储器或者 I/O 接口提供地址信息。16 位的主
存储器地址中的最高 3 位被连接到产生片选信号的 3-8 译码器,低 13 位地址被
连接到相应芯片的地址线引脚,用于选择每个芯片内的 8K 个存储单元。而对于
小于 8K 容量的存储器芯片则根据需要连接所需的地址引脚。
3
控制总线,用于给出总线周期的类型和一次读、写操作是否结束的信号。在
教学计算机中,由于使用的系统时钟频率特别低,一个 CPU 周期一定可以完成
CPU 与主存或者串行接口的读写操作,不必判断读写操作是否完成,只需给出总
线周期的类型即可,故 CPU 给出的控制信号由/MIO、REQ 和/WE 组成。
5.接口线路:教学计算机提供了串行接口(INTEL 8251),可以接入 PC 机作
为教学计算机的仿真终端完成输入输出操作。
串口的数据端口地址(数据缓冲寄存器)为 80H,而状态或命令端口(命令
状态寄存器)地址为 81H。
特别注意在输入输出操作中,其状态寄存器的最低位若是 1,则表示串行口
中的数据已经输出完毕,可以向串行口送入输出的下一个字符。(若不检查前一
个字符是否已经从串行口送走,就向串口传送输出的下一个字符,会造成输出的
错误)。若不检查该位状态,有可能造成输出错误。
串行口状态寄存器的次低位若是 1,表明键盘输入的字符已送入数据缓冲寄
存器,CPU 可以读这个字符了。若不检查该位的状态就直接读接口中的数据,会
造成输入错误。
6.中断处理:支持 3 级中断并允许中断嵌套,可以完成常规的中断处理操
作,中断优先级编码与排队,中断响应和现场切换等。
三、TH-union 教学计算机的指令系统
1.指令功能和指令格式的设计
合理地确定一台计算机的指令系统,无论对计算机厂家还是对最终用户来说
都是十分重要的,它密切关系到计算机设计与实现的复杂程度和生产成本、计算
机使用的难易程度和运行效率。对主要用于教学和教学实验目的的计算机,确定
其指令系统,更多地应关注它在教学过程中的作用和使用方法,至少应解决好以
下几个问题。
(1) 指令格式和功能的典型性。做到指令格式和功能有良好的典型性,同
学比较容易接受,讲课时更容易完整地讲解清楚这套指令系统和控制器的设计,
也有利于教学内容的整体安排。
(2) 适当靠拢 RISC 的设计思想,做到尽可能小的指令集,简化的寻址方
式。这样做不仅使教学计算机的结构简化,实现简单,也易于实现指令流水。
(3) 指令系统要有一定的完备程度,给出的指令格式适当规范,指令分类
合理,指令执行步骤容易理解,符合人们通常的编程使用习惯。总之,有较好的
易学易用性。确保选用这套指令系统,能方便地设计教学计算机的配套软件。
(4) 更高的可扩充性,即为学生添加各种新的指令留下比较充足的余地,
为此可以把完整的系统中指令划分为必备的(约 30 条)基本指令(设计者已经
实现)和待扩展的(约 20 条)保留指令(留给实验者设计实现)两大类;在扩
4
展新的指令时,实现手段要适当简单,但要有比较多的设计内容和选择余地,以
便更好地培养学生的创新意识和开创能力,有利于深化教学内容。
(5) 符合教学计算机的特定要求。对 16 位字长的计算机,指令的操作码部
分可以选择为固定长度;再结合我们所选用的运算器器件 Am2901 芯片内含 16 个
通用寄存器的特点,寄存器寻址方式需要使用 4 位的形式地址。如果需要,还可
以指定 16 个通用寄存器中的几个为专用寄存器,以便最大程度地简化教学机硬
件组成,简化指令执行流程的设计。
遵照上述思路,最终确定了教学计算机指令系统的具体组成和指令格式。指
令格式如图 1.2 所示。从图中可以看到,指令中包括单字指令和双字指令,第一
个指令字的高 8 位是指令操作码字段,低 8 位和双字指令的第二个指令字是操作
数地址字段,分别有 3 种用法。
8 位 4 位 4 位
操作码
DR
SR
IO 端口地址 / 相对偏移量
立即数 / 直接内存地址 / 变址偏移量
图 1.2 16 位教学机的指令格式
1 表示扩展指令;
0 X 表示 A 组,
1 0 表示 B 组,
1 1 表示 C、D 组;
其中 8 位指令操作码(记作“IR15~IR8”),各位的含义如下:
IR15、IR14 用于区分指令组:
IR13 用于区分基本指令和扩展指令:0 表示基本指令
IR12 用于简化控制器的实现,暂定该位的值为 0;
IR11~IR8 用于区分同一指令组中的不同指令(最多 16 条);
IR11 还用于区分 C、D 组指令(每组最多 8 条):
0 表示 C 组
1 表示 D 组。
第一个指令字中的操作数地址字段可以给出:
4 位的通用寄存器编号(DR 代表目的寄存器,SR 代表源寄存器);
8 位的 I/O 端口地址;
8 位的相对变址的偏移量。
第二个指令字用于给出:
16 位的立即数;
16 位的直接内存地址;
16 位的变址偏移量。
5
2.指令系统的分类情况
按不同的分类标准,可以把 16 位机的指令划分成不同的指令类型。例如:
从指令长度区分:有单字指令和双字指令,也允许定义和使用 3 字指令。
从操作数的个数区分:有双操作数指令、单操作数指令和无操作数指令。
从使用的寻址方式区分:有采用寄存器寻址、寄存器间接寻址、立即数寻
址、直接寻址、变址寻址、相对寻址、堆栈寻址等多种基本寻址方式的不同类别
指令。
从指令功能区分:有算术和逻辑运算类指令、读写内存类指令、输入/输出
类指令、转移指令、子程序调用和返回类指令,还有传送、移位、置进位标志和
清进位标志等指令。
JRS、JRNS、JMPR
SHL、SHR、JR、JRC、JRNC、JRZ、JRNZ
依照指令的执行步骤,可以把教学计算机的指令划分为如下 4 组:
A 组:基本指令 ADD、SUB、AND、OR、XOR、CMP、TEST、MVRR、DEC、INC、
A 组:扩展指令 ADC、SBB、RCL、RCR、ASR、NOT、CLC、STC、EI、CI、
B 组:基本指令 JMPA、LDRR、STRR、PUSH、POP、PSHF、POPF、MVRD、IN、
C 组:扩展指令 CALR、LDRA、STRA、LDRX、STRX
D 组:基本指令 CALA
D 组:扩展指令 IRET
这种分类办法,是为了突出指令执行步骤的划分结果,有利于讲解控制器设
OUT、RET
计技术。
A 组指令完成的是通用寄存器之间的数据运算或传送,或其它几项特殊的操
作,在取指之后可一步完成。
B 组指令完成的是一次内存或 I/O 读、写操作,在取指之后可两步完成,第
一步把要使用的地址传送到地址寄存器 AR 中,第二步执行内存或 I/O 的读、写
操作。
C 组指令在取指之后可三步完成,其中 CALR 指令在用两步完成一次写内存之
后,第三步执行寄存器之间的数据传送;而其它指令在第一步置地址寄存器 AR,
第二步读内存(即取得一个内存单元的地址)并传送到地址寄存器 AR,第三步执
行另外一次读、写内存的操作。
D 组指令完成的是两次读、写内存操作,在取指之后可四步完成。
十六位字长的教学计算机系统,实现了上面 4 组中的 29 条基本指令,用于
支持教学机的监控程序和简单的汇编语言程序设计。保留了其余 19 条扩展指
令,供学生在教学实验中进行扩展,即完成对这些指令的设计与调试,当然,还
可以扩展另外一些指令。
3.指令的汇编助记符
6