Download presentation
Presentation is loading. Please wait.
1
第4章 指令、指令系统和控制器部件
2
向整机每个部件(包括控制器本身)提供协同运行所需的控制信号
控制器的作用: 向整机每个部件(包括控制器本身)提供协同运行所需的控制信号 计算机最本质的功能 : 连续执行指令,而每一条指令往往分成几个步骤来完成。
3
依据当前正在执行的指令和它所处的执行步骤,形成并提供在这一时刻整机各部件要用到的控制信号。
控制器的基本功能 : 依据当前正在执行的指令和它所处的执行步骤,形成并提供在这一时刻整机各部件要用到的控制信号。 执行一条指令要经过读取指令、分析指令、执行指令三个阶段,控制器要保证按程序设定的指令运行次序,自动地连续执行指令序列。
4
控制器的组成: 控制器组成及其在整机中的地位(见下页) ① 程序计数器PC 提供指令在内存中的地址,并接受下一条要执行的指令的地址。
② 指令寄存器IR 保存指令本身的信息。 ③ 脉冲源和启停控制逻辑、步骤标记线路 给出每条指令的各执行步骤的相对次序关系 ④ 控制信号产生部件 提供在指令执行各步骤,当前各部件要用到的控制信号 微程序控制器 控制器的分类 组合逻辑控制器(硬布线控制器) 控制器组成及其在整机中的地位(见下页)
5
控制 存储器 主振 微程序 方案的 控制器 映射 下地址 IR PC 启停 微指令寄存器 主 存 运算器 输出 设备 输入 部件 地址寄存器
数据总线 地址总线 控制总线 …. 控制条件 微指令寄存器 主振 微程序 方案的 控制器
6
时序控制 信号 形成部件 控制器信号 主振 硬布线 方案的 控制器 时序 IR PC 启停 运算器 控制条件 译码 …. 数据总线 控制总线
地址寄存器 地址总线 输出 设备 输入 设备 主 存 运算器 部件
7
4.1 指令格式和指令系统概述 指令代码(机器指令)—— 计算机能直接识别和运行的软件程序 计算机指令——
CPU 硬件 主存 输入/输出设备 系统软件 软件 用户程序软件 指令代码(机器指令)—— 计算机能直接识别和运行的软件程序 计算机指令—— 是用户使用计算机与计算机运行的最小功能单位。是一台 计算机支持的全部指令构成该机的指令系统。 指令系统直接与计算机的性能和硬件结构的复杂程度密切 相关。 计算机系统
8
(1)指令系统的完备性,常用指令齐全,编程方便;
设计与评价指令系统应考虑的方面: (1)指令系统的完备性,常用指令齐全,编程方便; (2)指令系统的高效性,指令占用内存空间少,运 行速度快; (3)指令系统的规整性,指令和数据使用规则统一 简单,易学易记; (4)指令系统的兼容性,同一系列低档计算机的程序能 在高档机上直接运行。
9
2000年7月试题 二、1.在设计指令系统时,通常应从哪4个方面考虑?
答:(1)指令系统的完备性,常用指令齐全,编程方便; (2)指令系统的高效性,程序占用内存空间少,运行速度快。 (3)指令系统的规整性,指令和数据使用规则统一简化,易学易记; (4)指令系统的兼容性,同一系列的低档计算机的程序能放到新的高档机上直接运行。
10
地址码:指明被操作的信息(指令数据)的地址 包括:操作数的地址,运算结果的保存地址 程序的转移地址,子程序的入口地址
指令格式 操作码:指明本条指令的操作功能。 例如:算术加运算,算术减运算 逻辑与运算,逻辑或运算 读内存,写内存 程序转移,子程序调用和返回 地址码:指明被操作的信息(指令数据)的地址 包括:操作数的地址,运算结果的保存地址 程序的转移地址,子程序的入口地址 操作码 地址码
11
4.1.1 操作码的组织与编码 三种编码方案: (1)定长的操作码 (2)变长的操作码 (3)操作码与操作数地址交叉
12
(1)定长的操作码 用指令高位部分表示操作码 例如8位,可有256个编码状态,表示256条指令 应用于字长位数多的计算机 优点:简化计算机的硬件设计,提高指令译码和识别速度
13
(2)变长的操作码 不同的指令操作码长度不同 对常用的、操作码地址位数多的指令,操作码位数少; 对操作码位数少的指令,操作码的位数可多;无操作数指令,整个指令字均用作操作码,可表示较多的指令条数。 应用于字长短的计算机。
14
(3)操作码与操作数地址交叉 操作码与操作数地址有所交叉, 不很常用
15
作业2.1.一条指令通常由哪两部分组成?指令的操作码一般有哪几种组织形式?各自应用在什么场合?各自的优点是什么?
答:一条指令通常由操作码和操作数地址组成。 指令的操作码组织形式有定长操作码、变长的操作码和操作码字段与操作数地址交叉的形式。 定长操作码应用于字位数长的计算机。优点是利于简化计算机的硬件设计,提高指令译码和识别的速度。缺点是会使操作数的地址不足。 变长操作码应用于字位数短的计算机。优点是可给操作数地址留给更多的位数,对操作数位数要求较少的指令分配多几位操作码,既能表示出比较多的指令条数,又能尽量满足给出相应的操作数地址要求。 操作码字段与操作数地址交叉的形式比较特殊,不很常用。特点是操作码与表示操作数地址的一些字段交叉。
16
1. 操作数的个数 (1)无操作数指令 (2)单操作数指令 (3)双操作数指令 (4)多操作数指令
操作数的个数、来源、去向和地址安排 1. 操作数的个数 (1)无操作数指令 (2)单操作数指令 (3)双操作数指令 (4)多操作数指令
17
不涉及操作数的地址。如停机指令,空操作指令,关中断指令;或 约定了操作数的指令。
(1)无操作数指令 用于: 不涉及操作数的地址。如停机指令,空操作指令,关中断指令;或 约定了操作数的指令。 (2)单操作数指令 用于: 只用一个操作数的指令,如寄存器内容加1,减1 ; 约定了某个操作数的指令。如读外设指令,写外设指令。 约定目的操作数的指令。例如加、减运算指令约定被加数、被减数在累加器。
18
用于算术运算和逻辑运算指令。给出目的操作数和源操作数的地址。目的操作数还保存运算结果。
(3)双操作数指令 用于算术运算和逻辑运算指令。给出目的操作数和源操作数的地址。目的操作数还保存运算结果。 (4)多操作数指令(如3个操作数) 分别给出目的操作数、源操作数和运算结果的地址。
19
2.操作数的来源、去向和地址安排 ① 通用寄存器 ② 外设接口中的一个寄存器 ③ 内存中的一个存储单元
指令中给出寄存器编号(寄存器名), 通用寄存器的的数量一般为几个、十几个,为其分配2、3、4、5位表示一个寄存器。寄存器的内容可以是数据,也可以是操作数的地址。 ② 外设接口中的一个寄存器 用外设编号或I/O端口地址表示,因为外设接口较少,可以在一个指令中直接给出地址。 ③ 内存中的一个存储单元 指令给出存储单元地址,在指令中操作数地址字段给出。
20
4.1.3 指令的分类 按指令完成的功能进行分类 (1)算术和逻辑运算指令 (2)移位操作命令 (3)数据传送指令
(4)转移指令、子程序调用与返回指令 (5)特权指令 (6)其它指令
21
(1)算术和逻辑运算指令 给出算术和逻辑运算的结果,以及结果的有关特征。 (2)移位操作命令 包括算术移位、逻辑移位、循环移位。 (3)数据传送指令 用于实现通用寄存器之间、通用寄存器与内存单元之间、内存不同存储单元之间、通用寄存器与外设接口之间的数据传送功能
22
(4)转移指令、子程序调用与返回指令 用于改变程序中指令的执行次序 无条件转移指令 转移指令 条件转移指令 无条件转移指令——必定执行转移 条件转移指令——根据程序状态字中的C、Z、V、S的值转移到指定地址
23
转入子程序段执行指令,其最后一条指令必定是返回指令, 程序运行结束后,返回到调用指令之后的那条指令继续执行。
子程序调用与返回指令 转入子程序段执行指令,其最后一条指令必定是返回指令, 程序运行结束后,返回到调用指令之后的那条指令继续执行。 一般的转移指令不存在再次转移回来的问题。 (5)特权指令 用于操作系统或其它系统软件的指令,不提供给用户使用 (6)其它指令 如:动态停机指令, 空操作指令, 开中断指令 关中断指令, 堆栈操作指令 用于完成某些特定的处理功能
24
作业2.4. 为读写输入/输出设备,通常有哪几种常用的方式用以指定被读写的设备? 可以在指令字中用设备编号或设备入出口地址或设备映像地址(与内存地址统一编址的一个设备地址编号)来指定被读写的设备。设备编号或设备入出口地址位数较少,可以在第一个指令字直接给出;设备映像地址的处理方案与处理一个内存单元地址的办法相同。
25
作业2.5. CISC(复杂指令系统计算机)和RISC(精简指令系统计算机)计算机的指令系统的区别表现在哪里?它们各自追求的目标是什么?
26
寻址方式是指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。
4.2 寻址方式概述与应用实例 寻址方式是指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。 形成地址——表示在指令中的操作数地址; 物理(有效)地址——操作数在存储器中的存储单元地址。
27
(1) 立即数寻址 (2) 直接寻址 (3) 寄存器寻址、寄存器间接寻址 (4) 变址寻址 (5) 相对寻址 (6) 基地址寻址
八种寻址方式: (1) 立即数寻址 (2) 直接寻址 (3) 寄存器寻址、寄存器间接寻址 (4) 变址寻址 (5) 相对寻址 (6) 基地址寻址 (7) 间接寻址 (8) 堆栈寻址
28
操作数直接给出在指令字中,即指令字中直接给出的不是操作数地址,而是操作数本身。 主要用法:把一个确定的数据传送到一个通用寄存器中。
1. 立即数寻址 操作数直接给出在指令字中,即指令字中直接给出的不是操作数地址,而是操作数本身。 主要用法:把一个确定的数据传送到一个通用寄存器中。 单指令字: 双指令字: 操作码 Ri 立即数 操作码 Ri 立即数
29
在指令的操作码地址字段直接给出操作数在存储器中的地址 单字指令
2. 直接寻址 在指令的操作码地址字段直接给出操作数在存储器中的地址 单字指令 双指令字 操作码 Ri 直接地址
30
(3)寄存器寻址、寄存器间接寻址 寄存器寻址 寄存器中存放操作数,指令中给出寄存器编号(名字、地址),寄存器寻址在指令中占用位数少,有利于缩短指令字长度,取数、保存结果迅速方便,是最基本、最简单的寻址方式。
31
寄存器间接寻址 寄存器中存放操作数的地址,根据该地址去读写存储器,形式地址为寄存器编号(名字) 操作数的地址 存储器 操作数 通用寄存器
操作码 Ri
32
形式地址为寄存器名(编号)和变址偏移量,两者之和为操作数地址,用于读写存储器。
(4)变址寻址 形式地址为寄存器名(编号)和变址偏移量,两者之和为操作数地址,用于读写存储器。 存储器 操作数 变址寄存器 操作码 Ri 变址偏移量 通用寄存器
33
(5)相对寻址 形式地址为相对寻址偏移量,该数值与程序计数器PC的内容相加,得到操作数的地址转移指令的转移地址。所用寄存器为PC,无需在指令中指定,相对地址偏移量可正可负。 程序计数器PC 操作码 变址偏移量 相加 存储器 操作数或指令
34
(6)基地址寻址 把程序中所用的地址与一个特定的寄存器(称为基地址寄存器)的内容相加作为操作数的地址或指令的地址。 与变址寻址、相对寻址形式上有某些类似之处。主要用于为多道程序或浮动地址程序定位存储空间。 基地址寄存器中的值是由系统程序用特权指令设定的,用户不能在自己的程序中对其进行修改。
35
(7)间接寻址 形式地址是操作数(或指令)地址的地址。 读写数据需两次访问存储器。 操作码 地址字段 操作数 存储器 操作数地址
36
存储区,该存储区被读写单元的地址(称为“栈顶”)由一个特 定的寄存器(称为“堆栈指针”)SP给出的。或者说,SP总是指 向栈顶。
(8)堆栈寻址 堆栈——是存储器中一块特定的按“后进先出”原则管理的 存储区,该存储区被读写单元的地址(称为“栈顶”)由一个特 定的寄存器(称为“堆栈指针”)SP给出的。或者说,SP总是指 向栈顶。 存储器 栈顶 堆栈 SP × × × × 已入栈 的数据 × × × ×
37
数据入栈时,先执行 SP←SP—1 的操作,使堆栈指针指向一个空的存储单元,然后再压入数据。
堆栈寻址,通常在形式中给出入栈数据所在的寄存器名(或编号)或接收出栈数据的寄存器名(或编号)。指令中不直接给出内存地址,而默认堆栈指针的内容为存储器的地址。读写堆栈总是伴随修改堆栈指针的操作。 数据入栈时,先执行 SP←SP—1 的操作,使堆栈指针指向一个空的存储单元,然后再压入数据。 数据出栈时,先将栈顶数据弹出到指定的寄存器,然后执行 SP ←SP+1,使堆栈指针SP指向新的栈顶。
38
作业2.2 计算机指令中要用到的操作数一般可来自哪些部件?如何在指令中表示这些操作数的地址?通常使用哪些寻址方式?
答:计算机指令中要用到的操作数一般可来自:①CPU内部的通用寄存器,应在字中给出用的的寄存器编号(寄存器名);②外围设备(接口)中的一个寄存器,通常在指令字中用设备编号设备入出端口地址来表示;③内存储器的一个单元,应在指令字中给出该存储单元的地址。 通常使用立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、基地址寻址、间接寻址和堆栈寻址等寻址方式。
39
作业2.3.什么是形式地址?简述对变址寻址、相对寻址、基地址寻址应在指令中给出什么信息?如何得到相应的实际(有效)地址?各自有什么样的主要用法?
答:表示在指令中的操作数地址通常称为形式地址。 变址寻址应在指令中给出个数值(变址偏移量)与指定的一个寄存器(变址寄存器)编号(寄存器名)。把变址寄存器中的内容与变址偏移值相加得到相应的实际地址(操作数地址)。其主要用法是将变址偏移量作为基准地址,变址寄存器的内容作为修改量,通过修改寄存器的内容可以访问数组、表格、字符串等中的不同元素。
40
相对寻址应在指令中给出一个数值(相对地址偏移量)。相对地址偏移量与程序计数器PC内容相加之和即为相应的实际地址(操作数地址或转移指令的地址)。其主要用法是用作程序转移。
基地址寻址应在指令中给出一个寄存器(基地址寄存器)。基地址寄存器的内容与程序中所用到的地址相加之和即为相应的实际地址(操作数的地址或指令的地址)。其主要用法是为多道程序或浮动地址程序定位存储器空间。
41
2001年7月试题 二、2 在计算机硬件系统中,在指令的操作数字段中所表示的内存地址被称为( ),用它计算出来的送到内存用以访问一个存储器单元的地址被称为( )。 A. 有效地址 B.内存地址 C.形式地址 D.文件地址 E.物理地址 F.逻辑地址 H.指令地址 I.指令地址 J.CACHE地址 答案:C A
42
模拟试题 二、2 (试题五 二、1) (8分) 举例说明计算机中常用的四种寻址方式(寄存器寻址,寄存器间接寻址,变址寻址,堆栈寻址),从形式地址到得到操作数的寻址处理过程。 答案: (1)寄存器寻址,形式地址为寄存器名(或编号),寄存器中的内容为操作数; (2)寄存器间接寻址,形式地址为寄存器名(或编号),寄存器中的内容为操作数的地址,再读一次内存得到操作数;
43
(3)变址寻址,形式地址为变址寄存器名(或编号)和变址偏移值,把变址寄存器中的内容与变址偏移值相加得到操作数的地址,再读一次内存得到操作数;
(4)堆栈寻址,通常形式地址为将写入堆栈的、或接收堆栈读出内容的寄存器名(或编号),指令中不直接给出内存地址,而是选用默认的堆栈指针寄存器中的内容为内存地址,读写堆栈总伴有修改堆栈指针的操作。
44
4.2.2 寻址方式应用举例(了解)
45
4.3 指令系统和汇编语言设计举例 4.3.1 教学计算机的指令系统说明 1 . 确定教学计算机指令系统的原则 (1)尽量少的指令集,指令数目要少,较短的指令格式,简化的寻址方式,单字节指令为主,每条指令的广泛内尽量简单。这样可简化结构。减低成本,容易讲清楚指令系统,实现控制器设计。 (2)指令系统有一定的完备程度,有较好的典型性, 指令格式适当规范,指令分类合理,指令执行步骤容易理解。 (3)适当的扩充性,能让学生通过实验扩展新的指令。 (4)符合教学计算机的特定要求。对16位机,操作码为固定长度,寄存器寻址使用4位的形式地址。
46
2005年1月试题 1.简单说明确定16位教学机指令系统的原则。 答:
(1)尽可能小的指令集,指令数目要适当地少,较短的指令格式,简化的寻址方式,单字指令为主,每条指令的功能要尽可能地简单。 (2)令系统要有一定的完备程度,有较好的典型性。 (3)适当的扩充性。 (4)符合教学计算机的特定要求。
47
作业2.7. 8位的教学计算机系统的指令的特点是什么?为什么必须采用操作码扩展技术?为什么只能用4个通用寄存器?为什么要采用16位的地址总线?
8位的教学计算机系统的指令的特点是:指令集较小;指令系统有一定的完备程度和较好的典型性;有适当的扩展性;指令的操作码部分选用逐位扩展技术。 采用操作码扩展技术,可结合所选用的运算器部件Am2901芯片内含的16个通用寄存器的特点,可以在指令中使用多个专用的寄存器,以便最大程度地缩短指令字的长度,简化指令流程设计。
48
在双操作数指令中,由于受到指令字长度的限制,只能为每个寄存器分配2位地址编码,故只能使用4个通用寄存器和4位操作码。其余的寄存器用作专用寄存器,如程序计数器PC、堆栈指针SP、16位的内存地址和转移指令的地址或子程序调用的入口地址。 采用16位的地址总线,可使系统有较大的存储空间,使存储空间达到64k。
49
2. 16位TEC-2000机的指令系统说明与指令分类 按指令长度分类 双字节指令 三字节指令 单操作数指令 按操作数个数分类 双操作数指令
单字节指令 按指令长度分类 双字节指令 三字节指令 单操作数指令 按操作数个数分类 双操作数指令 无操作数指令 寄存器寻址 寄存器间址 立即数寻址 按寻址方式分类 直接寻址 相对寻址 堆栈寻址
50
算术和逻辑运算 类指令 读写内存类指令 输入/ 输出类指令 转移指令 按指令功能分类 子程序调用/ 返回指令 数据传送指令 移位指令 置进位标志/清进位标志指令
51
按指令功能和它们的执行步骤,可把指令分为4组
A组指令:基本指令有 ADD,SUB,AND,OR,XOR,TEST,MVRR,,DEC,INC,SHL,SHR,JR,JRC,JRNC,JRZ,JRNZ 扩展指令有ADC,SBB,RCL,RCR,ASR,NOT,CLC,STC,EI,DI,TRS,JRNS,JMPS,JMPR B组指令:基本指令有JMPA。LDRR,STRR,PUSH,POP,PSHF,POPF,MVRD,IN,OUT,RET C组指令:扩展指令有CALR,LDRA,STRA,LDRX,STRX D组指令:基本指令有CALA 扩展指令有IRET
52
A组指令完成的是通用寄存器之间的数据运算或传送或其他几项,取指令和可一步完成。
B组指令完成的是一次内存或I/O读写操作,取指以后分两步完成,第一步把要使用的地址传送到地址寄存器AR中,第二步执行内存或I/O读、写操作。 C组指令在取指以后可分三步完成,其中CALR指令在用两步完成写内存之后,第三步执行寄存器间的数据传送;而其他指令是第一步置地址寄存器AR,第二步读内存(即取地址操作数)并且计算内存地址再次写入地址寄存器AR,第三步读、写内存。 D组指令完成的是两次读写内存操作,在取指之后分四步完成。
53
3. 16位教学机指令汇总表 (1)基本指令 ——A组指令 指令格式 汇编语言 操作数 个数 C Z V S 功能说明
DRSR ADD DR,SR 2 * * * * DR←DR+SR DRSR SUB DR,SR DR←DR-SR DRSR AND DR,SR DR←DR∧SR DRSR CMP DR,SR DR-SR DRSR XOR DR,SR DR←DR⊙SR DRSR TEST DR,SR DR∧SR DRSR OR DR,SR DR←DR∨SR DRSR MVRR DR,SR DR←SR
54
3. 16位教学机指令汇总表 (1)基本指令 ——A组指令(续) 指令格式 汇编语言 操作数 个数 C Z V S 功能说明
DR0000 DEC DR 1 * * * * DR←DR-1 DR0000 INC DR DR←DR+1 DR0000 SHL DR * DR←DR*2 DR0000 SHR DR DR←DR/2 OFFSET JR ADR 无条件跳转的ADR OFFSET JRC ADR C=1 时跳转的ADR OFFSET JRNC ADR C=0 时跳转的ADR OFFSET JRZ ADR Z=1 时跳转的ADR OFFSET JRNZ ADR Z=0 时跳转的ADR
55
3. 16位教学机指令汇总表 (1)基本指令 ——B组指令 指令格式 汇编语言 操作数 个数 C Z V S 功能说明
ADR(16位) JMPA ADR 1 无条件跳转到ADR DRSR LDRR DR,[SR] 2 DR←[SR] I/O PORT IN I/O PORT R0←[I/O,PORT] DRSR STRR [DR],SR [DR] ←SR PSHF FLAG入栈 SR PUSH SR SR 入栈 I/O PORT OUT I/O POR [I/O,PORT] ← R0 DR0000 POP DR DS ←出栈 DR0000 DATA(16位) MVRD DATA DR ←DATA POPF FLAG ←出栈 RET 子程序返回
56
3. 16位教学机指令汇总表 (1)基本指令 ——D组指令 说明: 运算器中有16个通用寄存器(累加器)R0~R15,其中:
R4用作16位的堆栈指针SP; R5用作16位的程序计数器PC; 其余寄存器用作通用寄存器,即有关指令中的DR,SR。 指令格式 汇编语言 操作数 个数 C Z V S 功能说明 ADR(16位) CALL ADR 1 调用首地址为ADR的子程序
57
3. 16位教学机指令汇总表 (1)扩展指令——A组指令 指令格式 汇编语言 操作数 个数 CZVS 功能说明 00100000 DRSR
ADC DR,SR 2 * * * * DR←DR+SR+C DRSR SBB DR,SR DR←DR-SR-C DR0000 RCL DR 1 * DR←DR带进位C循环左移 DR0000 RCR DR DR←DR带进位C循环右移 DR0000 ASR DR DR←DR算术右移 DR0000 NOT DR DR←/DR SR JMPR SR 跳转到SR指明的地址 OFFSET JRS ADR S=1 跳转到ADR OFFSET JRNS ADR S=0 跳转到ADR CLC C=0 STC C=1 EI 开中断,INTE ←1 DI 关中断,INTE ←0
58
3. 16位教学机指令汇总表 (1)扩展指令——C组指令 指令格式 汇编语言 操作数 个数 CZVS 功能说明
SR CALR SR 1 调用SR指明的子程序 DR0000 ADR(16位) LDRA DR,[ADR] 2 DR←[ADR] DRSR OFFSET(16位) LDRX DR, OFFSET[SR] DR←[OFFSETT+SR] DRSR STRX DR, [OFFSETT+SR] ← DR SR STRA [ADR],SR [ADR] ←SR D组指令 IRET 中断返回
59
16位教学机的指令,支持单字和双字指令,第一个指令字的高8位是指令操作码字段,低8位和双指令字的第二个指令字扭送操作数地址字段。
4. 教学计算机的指令格式 16位教学机的指令,支持单字和双字指令,第一个指令字的高8位是指令操作码字段,低8位和双指令字的第二个指令字扭送操作数地址字段。 操作码 IO端口地址/相对偏移量 DR SR 立即数/直接内存地址/变址偏移量
60
(1)8位指令操作码(记作“IR15~IR8)的含义
①IR15、IR14用于区分指令主,0X表示A组,10表示B组,11表示C、D组;IR11用于区分C、D组,IR11=0为C组,IR11=1为D组。 ②IR13用于区分基本指令和扩展指令,基本指令为0,扩展指令为1。 ③IR12用于简化控制器实现,暂定为0。 ④IR10~IR8用于区分同一指令组的不同指令。
61
(2)16位机根据指令字长、操作数不同所划分的5种指令格式
①单字、无操作数指令 格式: 基本指令及功能: PSHF ;状态标志(C、Z、V、S、P1、P0、0、0)入栈。 POPF ;弹出状态标志送状态标志寄存器。 RET ;子程序返回。 扩展指令及其功能:] CLC ;清进位标志,C=0 STC ;置进位标志,C=1 EI ;开中断,置字段运行标志位INTE=1 DI ;关中断,置字段运行标志位INTE=0 IRET ;中断返回 操作码
62
②单字、单操作数指令 格式: DR 0000 操作码 0000 SR OFFSET I/O PORT 基本指令及功能:
DEC DR ;DR←DR-1,置标志位 INC DR ;DR←DR+1,置标志位 SHL DR ;DR逻辑左移,最低位补0,最高位移入C SH6 DR ;DR逻辑右移,最高位补0,最低位移入C JR ADR ;无条件跳转到ADR,ADR=PC值+OFFSET JRC ADR ;当C=1时 跳转到ADR,ADR=PC值+OFFSET JRNC ADR ;当C=0时 跳转到ADR,ADR=PC值+OFFSET JRZ ADR ;当Z=1时 跳转到ADR,ADR=PC值+OFFSET JRNZ ADR ;当Z=0时 跳转到ADR,ADR=PC值+OFFSET 操作码 DR 0000 SR OFFSET I/O PORT
63
②单字、单操作数指令 格式: DR 0000 基本指令及功能: 操作码 0000 SR
IN I/O PORT ;R0←[I/O PORT],从I/O端口读入数据到R0低字节 OUT I/O PORT; [I/O PORT] ← R0,R0低字节的数据写入I/O端口 PUSH SR ;入栈 POP DR ;弹出堆栈顶数据送DR 操作码 DR 0000 SR OFFSET I/O PORT
64
②单字、单操作数指令 格式: 扩展指令及功能: RCL DR ;DR与C循环左移,C移入最低位,最高位移入C
RCR DR; DR与C循环右移,C移入最高位,最低位移入C ASR DR;DR算术右移,最该位保持不变,置低位移入C。 操作码 DR 0000 SR OFFSET I/O PORT DR C DR C DR C
65
②单字、单操作数指令 格式: 扩展指令及功能: NOT DR ;DR求反,即DR←/DR DR 0000 操作码 0000 SR
JMPR SR ;无条件跳转到SR指向的地址 CALR SR ;调用SR指向的子程序 JSR ADR ;当S=1时,跳转到ADR,ADR=PC值+OFFSET JNSR ADR ;当S=0时,跳转到ADR,ADR=PC值+OFFSET 操作码 DR 0000 SR OFFSET I/O PORT
66
③单字、双操作数指令 格式: 基本指令及功能: ADD DR,SR ;DR←DR+SR,置标志位 操作码 DR SR
SUB DR,SR ;DR←DR-SR,置标志位 AND DR,SR ;DR←DR and SR,置标志位 CMP DR,SR ;DR←DR-SR XOR DR,SR ;DR←DR xor SR,置标志位 TEST DR,SR ;DR←DR and SR OR DR,SR ;DR←DR or SR,置标志位 MVRR DR,SR ;DR←SR LDRR DR,[SR] ;DR←[SR] STRR [DR],SR ;[DR]←SR 操作码 DR SR
67
③单字、双操作数指令 格式: 扩展指令及功能: ADC DR,SR ;DR←DR+SR+C,置标志位 操作码 DR SR
SBB DR,SR ;DR←DR-SR-C,置标志位 操作码 DR SR
68
④双字、单操作数指令 格式: 基本指令及功能: JMPA ADR ;无条件跳转到地址ADR 操作码
CALA ADR ;跳转到首地址为ADR的子程序 操作码 ADR
69
4.3.2 教学计算机的汇编程序设计举例 1.指令功能与在程序中的作用 例1.在显示器屏幕上循环显示95个(包括空格字符)可打印字符的程序。
教学计算机的汇编程序设计举例 1.指令功能与在程序中的作用 例1.在显示器屏幕上循环显示95个(包括空格字符)可打印字符的程序。 A ;从内存的2000单元开始建立用户的第一个程序 MVRD R1,7E ;向寄存器传送直接数 2002 MVRD R0, 20 ; OUT ;通过串行接口输出R0低位字节内容到显示器屏幕 2005 PUSH R ;保存R0寄存器的内容到堆栈中 2006 IN ;读串行口的状态寄存器的内容到寄存器R0 2007 SHR R0 ;R0寄存器的内容右移一位,最低位的值移入标志位C 2008 JRNC ;条件转移指令,当标志位C不是1时就转移到2006地址 POP ;从堆栈中恢复R0寄存器的原内容 200A CMP R0,R1 ;比较两个寄存器的内容,若相同置标志位Z=1 200B JRZ ;条件转移指令,当标志位Z=1时,转移到2000地址 200C INC R ;R0寄存器内容增加1 200D JR ;无条件转移指令,转移到2000地址 200E RET ;程序结束
70
例2.下面的程序的功能是首先把字符“A”~”F”写到内存的2031~2036单元,之后再读出来显示在屏幕上。
2020 MVRD R3,06 ;给出写内存操作的次数 2022 MVRD R2, ; 2024 MVRD R1,40 ; 2026 INC R ;给出写内存操作的内存地址 2007 INC R ;给出写内存操作的数据内容(初始字母为“A”) 2028 STRR [R2],R1;写寄存器R1的内容到由R2指定地址的内存单元中 2029 LDRR R0,[R2] ;读出内存单元的内容到R0寄存器 202A OUT ;通过串行接口输出R0低位字节内容到显示器屏幕 202B IN ;读串行口的状态寄存器的内容到寄存器R0 202C SHR R ; R0寄存器的内容右移一位,最低位的值移入标志位C 202D JRNC 202B ;条件转移指令,当标志位C不是1时就转移到2006地址 202E DEC R ;检查6次写内存操作是否完成 202F JRNZ ;未完成开始小一次写内存操作 RET ;程序结束
71
例3.下面的程序的功能是从键盘输入字符送到显示器屏幕上显示,其中使用了子程序调用指令和转移指令,在子程序中,可以完成变英文大写字母为小写字母并将其显示出来。
A2040 IN ;读串行口的状态寄存器的内容到寄存器R0 SHR RO ; R0寄存器的内容右移一位,最低位的值移入标志位C SHR R ; R0寄存器的内容右移一位,最低位的值移入标志位C JRNC ;条件转移指令,当标志位C不是1时就转移到2040地址 IN ;把从键盘输入的一个字符送到R0低字节 OUT ;输出R0低字节内容到屏幕显示 PUSH R0 ;暂存R0到堆栈 IN ;读串行口的状态寄存器的内容到寄存器R0 SHR R ; R0寄存器的内容右移一位,最低位的值移入标志位C JRNC ;条件转移指令,当标志位C不是1时就转移到2047地址 204A POP R ;恢复堆栈中原R0内容到R0 204B CALA ;调用子程序,子程序入口地址为2050 204D JMPA ;转移指令,转移地址为2040 204F RET ;主程序结束 ;以下是一个子程序 MVRD R1,20;将小写字母与大写字母的ASCII码差值送R1寄存器 ADD R0,R1 ;将小写字母变为大写字母 OUT ;将R0中的大写字母送屏幕显示 RET
72
2. 汇编语言程序设计中的有关概念 (1)教学计算机的机器语言 用机器语言编程,即是用二进制的机器指令编写程序。
机器语言:是用二进制编码的指令。( P131表给出了各种指令的二进制编码,即机器指令。) 用机器语言编程,即是用二进制的机器指令编写程序。 因为机器指令难学难用,一般不用机器语言编程。
73
(2)教学计算机的汇编语言 在不使用作为仿真终端,而是使用计算机终端设备时,使用的PC机时,一般使用监控程序提供的单条汇编命令A,通过计算机的终端,逐跳输入一个汇编语句。具体操作步骤是: A跟一个空格字符再跟指定的内存地址并回车 功能:完成单条指令的汇编操作,把产生出来的执行代码放入对应的内存单元中。命令名后的地址是头一条汇编语言的执行码的内存单元地址。 每条语句汇编完成后,系统自动修改地址,以便处理下条汇编语句。在应输入汇编语句时,若不给出汇编语句而直接回车,结束A命令。
74
例1:设计一个程序,实现在屏幕上输出显示一个字符“6”。
A ;地址从十六进制的2000开始 2000 MVRD R0,0036 ;把字符“6”的ASCII码送R0 2002 OUT ;在屏幕上输出显示字符“6”,80为串行口地址 2003 RET ;每个用户程序都必须用RET指令结束 2004 (按回车键即结束源程序的输入过程)
75
例2 设计一个程序,实现用次数在屏幕上输出0到9这10个数字符。
例2 设计一个程序,实现用次数在屏幕上输出0到9这10个数字符。 A 2020 MVRD R2, 000A ;送入输出字符的个数 MVRD R0, ;0字符的ASCII码送寄存器R0 OUT ;输出保存在R0低字节的字符 DEC R ;输出字符数减1 JRZ E ;判10个字符输出完否,已完,则转移到程序结束处 PUSH R ;未完,保存R0到堆栈中 (2028) IN ;查询串行接口状态,判断字符的串行输出过程结束否 SHR R ;R0右移一位,最低位移入状态标志位C JRNC ;未完成,则循环等待 POP R ;已完成,准备继续输出下一字符,从堆栈恢复R0的值 INC R ;将R0中的ASCII码加1,得到下一个要输出的字符 JR ;转去生产字符 (202E) RET
76
例3 设计一个程序,实现从键盘上连续输入多个属于0到9 范围的苏子符并在屏幕上此时,遇非数字符结束程序.
例3 设计一个程序,实现从键盘上连续输入多个属于0到9 范围的苏子符并在屏幕上此时,遇非数字符结束程序. A 2040 MVRD R2, ;用于判断数字符的下界值 MVRD R3, ;用于判断数字符的上界值 (2044) IN ;判断键盘上是否按了一个键 SHR R ;R0右移一位,最低位移入状态标志位C SHR R ;即串行口是否有了输入的字符 JRNC ;尚没有输入则循环测试 IN ;把输入字符读到R0低字节 MVRD R1, 00FF ; AND R0, R ;将R0的高字节清0 CMP R0, R2 ;判断输入的字符<字符0否 JRNC ;是, 转到程序结束处 CMP R3, R0 ;判断输入的字符>字符9否 JRC ;是, 转到程序结束处 OUT ;输出刚输入的数字符 JMPA ;转去程序前边等待输入下一 个字符 (2053) RET
77
例4 设计一个程序,计算1到10的累加和. A 2060 MVRD R1, 0000 ;置累加和的初值为0
例4 设计一个程序,计算1到10的累加和. A 2060 MVRD R1, ;置累加和的初值为0 MVRD R2, 000A ;最大的加数 SUB R3, R ;预参加累加的数为0 (2065) INC R ;得到下一个参加累加的数 ADD R1, R ;累加计算 CMP R3, R ;判断是否累加完 JRNZ ;未完,开始下轮累加 RET
78
例5 设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示在屏幕上,转换为小写字母后再写回存储器的原存储单元.
E 20F0 (送入将被显示的6个字符“A”~”F”的ASCII码到内存20F0开始的存储区域中) 41,42,43,44,45,46 A 2080 MVRD R3, ;指定被读数据的字符 MVRD R2, 20F0 ;指定被读写数据的内存区首地址 (2084) LDRR R0, [R2] ;低内存中的一个字母到R0寄存器 CALL ;调用子程序,入口地址为2100,完成显示和字符转换及写入 ;内存功能 DEC R ;检查输出的字符个数 JRZ B ;完成输出则结束程序的执行过程 INC R ;未完成修改内存地址 JR ;转移到程序的2084处,循环执行规定的处理
79
例5 设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示在屏幕上,转换为小写字母后再写回存储器的原存储单元.
A 2100 OUT ;输出保存在R0寄存器中的字符 MVRD R ;转换保存在R0中的大写字母为小写字母 ADD R0, R1 ; STRR [R2], R0 ;写R0的字符到内存,地址用LDRR所用的地址 (2105) IN ;测试串行接口是否完成输出过程 SHR R ; JNRC ;未完成输出过程则循环测试 RET
80
(3) 教学计算机的交叉汇编语言(了解) Pentium II机的指令系统(了解) Ultra SPARC II 机的指令系统(了解)
81
4.4 控制器的功能、组成和指令执行步骤 3.4.1 控制器部件的功能和组成概述 控制器的作用: 控制信号 计算机最本质的功能:
4.4 控制器的功能、组成和指令执行步骤 3.4.1 控制器部件的功能和组成概述 控制器的作用: 向整机每个部件(包括控制器本身)提供协同运行所需的 控制信号 计算机最本质的功能: 连续执行指令,而每一条指令往往分成几个步骤来完成。 控制器的基本功能: 依据当前正在执行的指令和它所处的执行步骤,形成并提 供在这一时刻整机各部件要用到的控制信号。 执行一条指令要经过读取指令、分析指令、执行指令三个 阶段,控制器要保证按程序设定的指令运行次序,自动地连续 执行指令序列。
82
控制器的组成: ① 程序计数器PC 提供指令在内存中的地址,并接受下一条要执行的指令的地址。 ② 指令寄存器IR 保存指令本身的信息。
③ 脉冲源和启停控制逻辑、步骤标记线路 给出每条指令的各执行步骤的相对次序关系 ④控制信号产生部件 提供在指令执行各步骤,当前各部件要用到的控 制信号 微程序控制器 控制器的分类 组合逻辑控制器(硬布线控制器)
83
时序控制 信号 形成部件 控制器信号 主振 硬布线 方案的 控制器 时序 IR PC 启停 运算器 控制条件 译码 …. 数据总线 控制总线
地址寄存器 地址总线 输出 设备 输入 设备 主 存 运算器 部件
84
2005年1月试题 2.简述计算机的控制器(组合逻辑或微程序控制器,二者选一)的组成及每个子部件的作用。1. 答:以组合逻辑控制器为例:
2.简述计算机的控制器(组合逻辑或微程序控制器,二者选一)的组成及每个子部件的作用。1. 答:以组合逻辑控制器为例: (1)组合逻辑控制器由4个主要部件组成:程序计数器PC,指令寄存器,脉冲源和启停控制逻辑、节拍发生器,时序控制信号产生部件。 (2)程序计数器PC,用于保存一条指令在内存中的地址;指令寄存器IR,用于保存从内存读出的指令内容。脉冲源和启停控制逻辑向计算机各部件提供连续(单个)的主振脉冲;节拍发生器用于标记每个指令的执行步骤的相对次序关系。时序控制信号产生部件,用于形成并提供计算机各部件当前时刻要用到的控制信号。
85
4.4.2 指令的执行步骤概述 (1)指令的操作码指明该条指令的操作功能。指令的操作数及转移指令用到的指令地址,由指令的操作数地址字段提供。指令中涉及的操作数和指令地址,主要保存在运算器中的累加器、内存储器的存储单元以及输入输出设备接口的寄存器中。 (2)累加器的内容可以是操作数、操作数的地址、指令的地址或用于完成寻址计算的有关内容等,读写累加器通常总是要通过运算器中的ALU才能完成。 (3)读写内存某一单元的内容要用两个步骤:第一步,将存储单元地址送地址寄存器以驱动地址总线,以选择某一存储单元;第二步,向内存发出读写命令。读操作时,读出的内容保存到指令寄存器;写操作时,要写入内存的数据要先送到数据总线。
86
4.4.2 指令的执行步骤概述 (4)输入输出设备接口的寄存器读写控制,主要出现在输入输出指令。多数情况下是在CPU与相应设备的接口卡的某一寄存器之间完成。通常执行两个步骤:第一步,将输入输出设备的入出口送到地址寄存器以驱动地址总线,以选择某一接口电路中的一个寄存器;第二步,向接口卡发出读写命令。读操作时,读出的内容保存到相关的寄存器中;写操作时,要写入接口的数据要先送到数据总线。 读写内存与读写输入输出设备的区别:读写内存所用到的地址位数多,读写输入输出设备所用的地址位数少,前者有多种不同的寻址方式,后者直接IN、OUT指令的低位字段给出I/O端口地址。
87
为了理解指令的执行步骤,请看一段小程序:
ADD R0,R1 ;两个累加器求和并保存结果R0 MVRR R2,R0 ;两寄存器之间传送数据 MVRD R9, 2008 ;把十六进制数传送到R9字指令 STRR [R9], R2 ;写R2的内容到R9给出地址的内存单元中 IN, ;从串行口(键盘)读进输入的数据到R0低字节 JRC ;若进位C为1,则相对转移到2000地址 F RET ;子程序调用返回指令,教学机必须用RET技术程序 每条指 令在内 存中的 地址 机器 指令 代码 每条指令的 汇编指令代 码 指令的注释, 描述指令的功能 操 作 码 寻址 信息
88
指令执行步骤示意图: 读取指令 指令地址(在PC中)送到地址寄存器 读主存,读出内容(指令代码)送入 指令寄存器IR 形成下一条指令
的地址并放到 PC中 读取指令 指令地址(在PC中)送到地址寄存器 读主存,读出内容(指令代码)送入 指令寄存器IR 分析指令 执行指令 用一到几个执行步骤,完成指令的运 算、操作功能,不同指令用到步骤数 和要求的运算、操作功能均不相同 检查有无 中断请求 无中断请求,进入下一条指令的执行过程
89
指令执行步骤举例: 加法指令 ADD R0,R1 (1)AR←PC, PC ←PC+1 ;送指令地址, 并形成下一条指令的地址
(2)读主存,IR←读出内容 ;读取数据的指令寄存器 (3)R0←R0+R1,保存状态信息 ;双累加器完成相加运算 本指令结束,检查中断请求,无中断请求, 进入下一条指令的执行过程 传送指令 MVRR R9,R0 (1)AR←PC, PC ←PC+1 (2)读主存,IR←读出内容 PC←PC+1 (3)R0←R ;寄存器之间传送数据 本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程
90
指令执行步骤举例: 取立即数指令 MVRD R9,2008 (1)AR←PC,PC←PC+1 (2)读主存,IR←读出内容
;取出立即数(在指令的第二字节), 本指令 结束,检查中断请求,无中断请求,进入下一条指令的执行过程 写内存指令 STRR [R9],R2 (3)AR←R ;用两步分别送地址和执行操作 (4)写主存:数据总线←R ;送内存地址(保存在R9中)的AR, ;写R2的内容的内存储器指定单元 本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程。
91
输入指令: IN 80 (1)AR←PC, PC←PC+1 (2)读主存,IR←读出内容 (3)AR←I/O PORT ;送外设I/O端口地址的到地址寄存器 (4)读外设,数据总线←读出内容 ;读外设送来的数据到寄存器R0 R0 ←数据总线内容+0 本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程。 相对条件转移指令 JRC 20 (3)若C=1,则PC ←指令地址+相对寻址偏移量(在IR的低字节中), 否则本步什么操作都不做(即保持PC内容不变,仍为顺序执行) 本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程
92
子程序返回指令 RET (1)AR←PC, PC←PC+1 (2)读主存,IR←读出内容 (3)AR ←SP ;堆栈指针内容送地址寄存器 SP ←SP ;修改堆栈地址内容 (4)读主存,PC ←读出内容 ;读出保存在堆栈中的程序断点到PC中 本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程
93
2000年7月试题 二、2 简要说明减法指令SUB R3,R2和子程序调用指令的执行步骤。
答:(1)减法指令执行流程: ① AR←PC ,PC←PC+1 ② 读内存,IR←读出的内容 ③ R3←R3—R2,保存状态信息 本指令结束,检查中断请求,无中断请求,进入下一条指令的执行过程。 (2)子程序调用指令执行流程; ③ AR←SP—1 ④ 写内存,PC内容进栈保存 ⑤ PC←子程序入口地址
94
2001年7试题 三、1 按你自己的理解和想象的计算机的硬件(应有中断功能)组成,写出完成下面给定指令格式的指令的执行流程。 (1)累加器内容完成“异或”运算。“异或”指令格式: 操作码 DR SR (2)把一个内存单元中的的内容读到所选择的一个累加器中。“读内存”指令格式: 操作码 DR SR
95
(1)累加器内容完成“异或”运算。“异或”指令格式: 操作码 DR SR
答:(1)指令流程: ① AR←PC ,PC←PC+1 ② 读内存,IR←读出的内容 ③ R3←R3 ⊙R2,保存状态信息 ④ 检查有无中断请求,有,则进行相应处理;无,则转入下一条指令的执行过程。 (2)把一个内存单元中的的内容读到所选择的一个累加器中。“读内存”指令格式:操作码 DR SR ③ 地址寄存器AR(寄存器间接寻址方式) ← SR的内容 ④ 读内存, DR ←读出的数据 ④检查有无中断请求,有,则响应中断,无则转入下一条指令的执行过程。
96
模拟试题 二、2 6. 原理性地说明ADD R0,R1指令、条件相对转移指令的指令格式和执行步骤。
模拟试题 二、2 6. 原理性地说明ADD R0,R1指令、条件相对转移指令的指令格式和执行步骤。 答案:(1) ADD R0,R1,指令中给出操作码和R0、R1的编号, 指令执行步骤: ① AR←PC ,PC←PC+1 ② 读内存,IR←读出的内容 ③ R3←R3∧R2,保存状态信息 ④ 检查有无中断请求,有,则进行相应处理;无,则转入下一条指令的执行过程。 (2)执行条件转移指令时,要判别指定的条件,若为真,才执行:尚未修改的PC内容送ALU,相对转移偏移值送ALU, ALU执行加操作,结果送入PC;否则顺序地进入下一条指令的执行过程;检查有无中断请求,有,则响应中断,无则转入下一条指令的执行过程。
97
4.5 微程序控制器部件 4.5.1 微程序控制器的基本组成和工作原理
4.5 微程序控制器部件 4.5.1 微程序控制器的基本组成和工作原理 微程序控制器的功能:通过几条微指令来“解释执行”一条机器指令。一条机器指令的执行过程包括的内容有:到内存储器读取一条机器指令,接着分析这条指令并执行其操作运算功能,最后检查有无中断,有中断请求并且优先级较高,则响应中断并转入中断处理,负责进入下一条机器指令的执行过程。
98
微指令控制器的工作原理: 用一条微指令的控制命令字段,来提供一条机器指令的一个执行步骤所需要的控制信号,用这条指令的下地址字段,指明下一条微指令在控制存储器中的地址,以便在控制存储器中读出下一条微命令。即每一条微指令对应一条机器指令的一个执行步骤。 一条微指令具有两项功能: (1)提供一条机器指令的一个执行步骤所需要的控制信号,以实现该执行步骤的操作功能。 (2)提供读出下一条待用微指令的地址,以便自动有序地读出每一条微指令,解决机器指令各执行步骤之间的正确的接续关系。
99
微程序控制器的组成: 程序计数器PC 指令寄存器IR 控制存储器 微指令寄存器 下地址形成逻辑 微程序控制器
100
控制 存储器 主振 微程序 方案的 控制器 映射 下地址 IR PC 启停 微指令寄存器 主 存 运算器 输出 设备 输入 部件 地址寄存器
数据总线 地址总线 控制总线 …. 控制条件 微指令寄存器 主振 微程序 方案的 控制器
101
微程序控制器的流程 下地址字段 (微指令寄存器)控制命令字段 控制存储器 (存放微程序) 下地址形成部件 当前微指令信号 下一条微指令信号
状态 指令操作码
102
控制存储器的组成和功能 控制存储器通常由ROM器件实现。其功能是存储微程序控制器的全部微程序(几百到上千条)。每一个存储单元(几十到一二百位)保存一条微指令,每一次读操作可取得一条微指令的内容。每一条微指令由两个字段组成:控制命令字段由执行一条指令的一个步骤用到的全部控制信号组成;下地址字段由指明下一条将读出的指令在控制存储器中的地址信息组成。 计算机的这种执行方式,通常被称为用几条微指令“解释执行”机器指令。解释执行一条机器指令的几条微指令构成一个(段)微程序(微程序段)。“解释执行”指令系统中全部指令的全体微程序就组成一台计算机的完整微程序。
103
微指令寄存器的功能: 用以保存从控制寄存器中读出的一条微指令。它支持相邻运行的两条微指令同时存在,当前的微指令(已保存在该寄存器中)正在发挥控制作用的期间,可以把下一条微指令读出来并送到该寄存器的输入端,以解决执行当前指令与读出下一条微指令的流水线处理问题。 下地址形成逻辑的能够: 用多种组合方式,为自己形成并提供下一次要用到的微指令在控制存储器中的地址。
104
4.5.2 微程序设计中下地址形成逻辑的硬件技术 1. 得到下一条微指令地址的有关技术 ① 微程序顺序执行时,下地址为本条微指令地址加1。
微程序设计中下地址形成逻辑的硬件技术 1. 得到下一条微指令地址的有关技术 ① 微程序顺序执行时,下地址为本条微指令地址加1。 ② 在微程序必定转向某一微地址时,可以在微指令字中下地址字段中给出该地址值。 ③ 按微指令(上一条或本条)的某一执行结果的状态,选择顺序执行或转向某一地址,此时必须在微指令中指明需判断的所依据的条件及转移地址。要判断的条件,可以是运算器的标志位状态,控制器的执行状态,如多次的微指令循环是否结束,外设是否请求中断等。 ④ 微指令的调用及返回控制,会用到堆栈。 ⑤ 依条件判断转向多条微指令地址中的某一地址的控制。 ⑥依据取来的机器指令车组码,找到对应该条指令的执行过程的一端微程序的入口地址。
105
2000年7月试题 二、3.2001年1月试题 二、3) 在微程序控制系统中,通常有哪5种得到下一条微指令地址的方式? 答:在微程序控制系统中,通常有以下5种得到下一条微指令地址的方式: (1)微程序顺序执行时,下地址为本条微地址加1。 (2)在微程序必定转向某一微地址时,可以在微指令中的相关字段中给出该地址值。 (3)按微指令(上一条或本条)的某一执行结果的状态,选择顺序执行或转向某一地址。 (4)从微堆栈中取出从微子程序返回到微主程序断点的返回地址,用于微子程序返回处理。 (5)依条件判断转向多条微指令地址中的某一地址控制。
106
得到下一条微指令地址的实现方法: ① 在微指令字中,分配相应的几个字段,用于给出微指令转移地址(完整的一个地址或部分的多个地址),并且指明是顺序执行,或无条件转移或条件转移及其判断条件,以及是否功能分支转移,是否微子程序调用及返回等。 ② 应有相应的专门的硬件支持,用于实现微指令地址加1,按判断条件给出判定结果为真还是假,给出微堆栈组织并实现入栈及出栈管理,解决指令操作码与各自的微程序段入口地址的对应关系以及实现微程序中的功能分支转移等。
107
2. 形成下一条微指令地址的核心硬件 ——Am2901器件 D R F μ PC /MAP /PL I3~I0 /CCEN /CC
2. 形成下一条微指令地址的核心硬件 ——Am2901器件 /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP 寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /RLD /VECT /OE Y11~Y0 CI
108
AM2901能提供12位微指令地址,器件内部部件的位数也是12位,最大寻址空间为4096个字。
① 4输入的多路选择器 用于选则以下数据来源: a. 计数器/寄存器(R/C)输出 b. 直接输入D11~D0 c. 微程序计数器寄存器μPC的输出 d. 微堆栈F的输出
109
微程序定序器Am2910芯片的组成 D R F μ PC /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP
寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /RLD /VECT /OE Y11~Y0 CI
110
② 计数器/寄存器 由12个D触发器构成,其作用是: a. 作寄存器时,用于保存一个微地址,实现微程序转移。 b. 作计数器时,具有减1功能,用于控制微程序的循环次数,若装入的初值微为N,则可执行N+1次循环。 ③ 微程序计数器 由12位增量器和12位寄存器μPC组成。其作用是: a. 具有μPC← Y+1功能,实现微程序的顺序执行(CI=1时) b. 具有μPC←Y功能,实现同一微程序的多次执行( μPC← Y )。(CI=0时)
111
微程序定序器Am2910芯片的组成 D R F μ PC /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP
寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /RLD /VECT /OE Y11~Y0 CI
112
由5字×12位的寄存器堆栈和微堆栈指针μSP组成。其作用是: a. 保存微子程序调用时的返回地址 b. 保存微程序循环的首地址
④ 微堆栈 由5字×12位的寄存器堆栈和微堆栈指针μSP组成。其作用是: a. 保存微子程序调用时的返回地址 b. 保存微程序循环的首地址 微堆栈指针总是指向最后一次压入的数据,执行微循环时,允许不执行弹出操作而直接访问微堆栈的栈顶。当微堆栈数据达到5 个时,就发出堆栈已满信号 ,此后任何压入操作都将覆盖栈顶原有的数据。
113
微程序定序器Am2910芯片的组成 D R F μ PC /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP
寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /RLD /VECT /OE Y11~Y0 CI
114
命令译码器接收外部送来的命令码I3~I0、条件输入码
⑤ 命令译码器及3个使能信号 命令译码器接收外部送来的命令码I3~I0、条件输入码 和条件允许 信号,并对其译码,产生片内工作所需要的控制信号和外部要用到的3个控制选择信号/PL ,/MAP,/VECT,这3个输出信号用于决定外部直接输入D的数据来源。 /PL 为0时,D来源于微指令的下地址字段,用于给出微程序转移地址; /MAP 为0时,D来源于MAPROM,用于实现从机器指令操作码找到相应的微程序段首地址。 /VECT 为0时,原意是D来源于其它一路外部输入,(本机目前未使用)。
115
微程序定序器Am2910芯片的组成 D R F μ PC /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP
寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /RLD /VECT /OE Y11~Y0 CI
116
(2)Am2910引脚的意义 输入信号 D11~D0 外部直接输入的数据,既可作寄存器/计数器的初值,也可经多路选择器直接从Y 输出,作为下一条微指令的地 址。 I3~I 命令码,来自微指令字的有关字段,用于选择16条命令之一。 /CCEN /CC 共同确定测试条件是否通过,若/CCEN=0且 /CC=1,说明测试失效;若/CCEN=1或/CC=0, 均表明测试通过。 若把/CCEN接地,则/CC=0是测试通过; /CC=1则测试失效。(教学机采用后一用法)
117
微程序定序器Am2910芯片的组成 D R F μ PC /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP
寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /RLD /VECT /OE Y11~Y0 CI
118
/PLD 寄存器/计数器装入信号,为0时强行
将D11~D0装入寄存器/计数器 CI 增量器进位输入,CI=1时, μPC← Y+1;CI=0时, μPC←Y /OE Y输出允许信号,/OE=0时,Y允许输 出;/OE=1时,Y为高阻态。 CP 时钟触发信号,上升沿触发所有的内 部状态变化。
119
微程序定序器Am2910芯片的组成 D R F μ PC /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP
寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /RLD /VECT /OE Y11~Y0 CI
120
三个使能信号,用于决定直接决定输入D 的来源
输出信号 Y11~Y 下一条微指令地址,它直接用作读控 制存储器的地址。 /FULL 微堆栈满信号,低电平有效 /PL /MAP /VECT 三个使能信号,用于决定直接决定输入D 的来源
121
微程序定序器Am2910芯片的组成 D R F μ PC /MAP /PL I3~I0 /CCEN /CC /FULL D11~D0 CP
寄存器和 计数器R/C D R F μ PC 多路地址选择器 零检测 微堆栈 指针μSP 5字×12位 微程序计数器 寄存器μPC 增量器 命 令 译 码 器 /PLD /VECT /OE Y11~Y0 CI
122
(3) Am2910的功能具体用法 Am2910器件的部分功能及其控制条件 完成功能 R/C 内容 操 作 使能 信号 /CCEN=0
Y输出 堆栈 初始化 / /PL 清除 2 指令功能分支 /MAP D 3 条件微转移 μPC 14 顺序执行 弹出
123
说明: 0号命令:用于初始化,即无条件清除内部微堆栈,使Y输出 一定为0。系统加电时 确保系统从0号微地址开始执行微程序。 2号命令:用于指令功能分支,即输出信号 /MAP为低,使D输入信号从 MAPROM(微地址映射部件)得到,并作为输出微地址Y的值,实现从指令操作码找 到对应该指令的 微程序段的入口地址。 3号命令:用于条件转移控制,当/CC=0时,将微指令字中的下地址字段(转移地址)经过D送Y输出,实现指令转移。当/CC=1时,微指令顺序执行,即PC← μPC+1。 14号命令: 顺序执行,即执行紧跟在本条微指令后面的那条微指令。
124
在以下的前提下,使微程序控制器也能正常运行: ① 不变更控制器之外的几个功能部件的设计; ② 不变更指令格式和指令系统;
TEC-2000教学计算机微程序控制器的实际组成 设计思想: 在以下的前提下,使微程序控制器也能正常运行: ① 不变更控制器之外的几个功能部件的设计; ② 不变更指令格式和指令系统; ③ 不变更已有全部软件。 因此,必须协调、折中地处理两种处理器之间的各种技术问题。
125
TEC-3机的微程序控制器的基本组成 微命令 微下地址 … 9 微指令寄存器 /VECT 地址 8 /PL /MAP CP 微指令 /OE
CI3~CI0 微地址映射部件 MAPROM 微程序定序器 Am2910 控制存储器 μCM 微地址 /OE /CCEN CP CC IR15~IR8 指令寄存器 条件判断线路 SCC
126
说明: 1)微程序定序器Am2910和下地址形成逻辑 作用是形成下一条微指令在控制存储器中的地址。 ①/OE端接地,使输出Y11~Y0总保持有效。 ②/CCEN接地,使Am2910的的条件判断只取决于/CC。 ③CI接电源,使微指令地址加1总能执行。 ④分别用/MAP、/PL两个使能信号把MAPROM输出的微地址和微指令下地址字段输出的微地址送到Am2910的D输入端,从而形成D输入端的二选一 逻辑功能。 ⑤与Am2910配套的电路,主要包括指令微地址映射部件(MAPROM)和用于形成/CC信号逻辑值的条件判定线路SCC 。它们共同构成了微指令下地址形成逻辑。
127
TEC-3机的微程序控制器的基本组成 微命令 微下地址 … 9 微指令寄存器 /VECT 地址 8 /PL /MAP CP 微指令 /OE
CI3~CI0 微地址映射部件 MAPROM 微程序定序器 Am2910 控制存储器 μCM 微地址 /OE /CCEN CP CC IR15~IR8 指令寄存器 条件判断线路 SCC
128
2)微指令地址映射部件 MAPROM 教学机中由一片28C64静态存储器芯片实现,记作“MAPROM”。 MAPROM的地址输入为指令寄存器IR给出但外指令操作码IR15~IR8,其输出内容为当前指令对应的微程序段的入口地址。 MAPROM的输出允许/OE引脚与微程序定序器Am2910的/MAP引脚相连,仅当使用Am2910的2号命令时,才会把MAPROM的输出作为读取控制存储器的微指令的地址使用。
129
TEC-3机的微程序控制器的基本组成 微命令 微下地址 … 9 微指令寄存器 /VECT 地址 8 /PL /MAP CP 微指令 /OE
CI3~CI0 微地址映射部件 MAPROM 微程序定序器 Am2910 控制存储器 μCM 微地址 /OE /CCEN CP CC IR15~IR8 指令寄存器 条件判断线路 SCC
130
3)微指令转移的条件判断线路 教学机中用一片GAL20V8器件实现,记作“SCC GAL”。其功能有两个:
(1)产生清零信号,完成对微程序定序器Am2910初始化操作。 当按下“RESET”按键时,SCC产生一 清零信号CLR,使控制信号CI3~CI0=0000,微程序定序器仅到初始化状态,确保从00h微地址开始执行微程序。 (2)产生微程序定序器Am2910的/CC信号。 根据控制信号SCC3~SCC0规定的判断条件C、Z、V、S的取值,结合指令操作码,给出CC信号的取值。
131
TEC-3机的微程序控制器的基本组成 微命令 微下地址 … 9 微指令寄存器 /VECT 地址 8 /PL /MAP CP 微指令 /OE
微地址 控制存储器 μCM 微指令寄存器 微程序定序器 Am2910 条件判断线路 CI3~CI0 /CCEN /MAP /VECT 地址 8 … 微命令 微指令 CP /PL IR15~IR8 微地址映射部件 MAPROM 指令寄存器 CC SCC
132
是微程序控制器的核心的部分。使用7片28C64(8位×8192字)ROM芯片实现,用于存放微程序。
4) 控制存储器μCM 是微程序控制器的核心的部分。使用7片28C64(8位×8192字)ROM芯片实现,用于存放微程序。 微程序定序器Am2910的地址输出Y7~Y0用作微程序控制器的地址线A7~A0;7片控制存储器芯片的数据线D7~D0给出56位控制信号(实际使用53位)。 5) 微指令寄存器PLR 存放从控制器读出来的微指令。
133
TEC-3机的微程序控制器的基本组成 微命令 8 选 通 门 … 9 PLR 微指令 寄存器 /VECT 地址 /PL 8 /MAP /PL
/OE CP 微指令 IR 8 MAPROM OP 指令寄存器 /MAP Am2910 控制存储器 μCM 微地址 9 /CCEN CI3~CI0 CP /CC(条件判定电路) GAL20V8
134
2. 微指令格式和控制信号设计 1)控制信号组成情况 (1)运算器部件所需的控制信号 先复习一下运算器的组成(见下页)
135
二选一 B 16个 A 通用寄存器 三选一 A L U R S B锁存器 A锁存器 乘商寄存器Q Cn /OE Q3 Q0 RAM0
F 输出Y F3 F=0000 OVR Cn+4 输入D A口地址 B口地址 组成 算逻运算部件 16 个 累加器 乘商寄存器 Q 功能 8种运算功能 8种数据组合 8种结果处理 I5~I3 I2~I0 I8~I6 Am2901内部组成
136
Am2901芯片之外的线路设计 SCi SSH SSH SST Y15~0 Cy F=0 OVR F15 C Z V S 四位标志位
来自内部总线 SCi Y15~0 Cy F=0 OVR F15 C Z V S 四位标志位 FLAG GAL 最低位进位 SHIFT GAL 1 C 16位的 运算器 Cin 0,1,RAM0 Q0,RAM15 C Q15 右移输入信号 SHIFT GAL 左移输入信号 SHIFT GAL C Cy RAM0 RAM0 Q0 RAM15 Q15 CP D15~0 B A I8~I0 地址 SSH SSH
137
4位的A口地址,4位的B口地址,用于选择读写的通用寄存器(累加器)。
3组3位的控制码I8~I6、I5~I3、I2~I0,用于选择结果处理方案、运算功能、数据来源。 I8~I6用于选择结果处理方案 选 择 码 处 理 方 式 I8 I7 I6 通用寄存器 Q寄存器 Y输出 F→Q F F→B A F/2→B Q/2→Q 2F→B 2Q→Q
138
I5~I3用于选择运算功能 选 择 码 运 算 功 能 I5 I4 I3 R+S S-R R-S R∨S R∧S R⊙S
139
I2~I0用于选择数据来源 选 择 码 数 据 来 源 I2 I1 I0 R端 S端 0 0 0 A Q 0 0 1 B 0 1 0
数 据 来 源 I2 I1 I0 R端 S端 A Q B D
140
3位SST,用于控制记忆ALU的状态标志位
3组共7位的控制信号,控制配套的两片GAL20V8。 3位SST,用于控制记忆ALU的状态标志位 选 择 码 标志寄存器内容变化 说 明 SST2 SST1 SST0 C Z V S 4个标志位的值保持不变 Cy F=0 OVR F15 接收ALU的标志位输出的值 内部总线对硬的一位 恢复标志位原来的现场值 Z V S C置“0”,另3个标志位不变 Z V S C置“1”,另3个标志位不变 RAM0 Z V S 右移操作,另3个标志位不变 RAM15Z V S 左移操作,另3个标志位不变 Q Z V S 联合右移,另3个标志位不变
141
2位SCI,用于控制产生运算器产生最低位的进位输入信号
3组共7位的控制信号,控制配套的两片GAL20V8。 2位SCI,用于控制产生运算器产生最低位的进位输入信号 选 择 码 指 令 举 例 Cin SCI1 SCI0 ADD,SUB INC,DEC 1 ADC,SBB C
142
3组共7位的控制信号,控制配套的两片GAL20V8。 (3)左、右移位时,最高、最低位的移位输入信号的形成
控 制 码 SSH 左 移 右 移 说 明 RAM Q0 RAM Q15 0 0 × × 通用寄存器逻辑移位 0 1 C × 通用寄存器与C循环移位 1 0 Q / F15 C y RAM0 原码除(左移) 原码乘(右移) 1 1 × × F RAM0 OVR 右移用于补码乘法
143
(2)内存储器和I/O接口部件所需的控制信号
用3位编码区分读/写内存,读写接口 / MIO REQ / WE 操作功能 内存写 1 内存读 I / O写 I / O读 × 无读写
144
(3)CPU内部总线数据来源所需的控制信号 用3位DC1编码内部总线数据来源
译码信号 操 作 说 明 000 / SWTOIB 送开关内容到CPU内部总线 001 / RTOIB 送ALU输出到CPU内部总线 010 / ETOIB 16位机送IR低字节内容到数据总线 011 / FTOIB 送程序状态字到内部总线 100 / STOIB 16位机中不用 101 /INTVH 110 / INTV 送中断向量到内部总线 111 / DI 无操作功能,不向内部总线发送数据
145
(4)CPU内部特定寄存器接受输入所需的控制信号
用3位DC2编码控制特定寄存器接受输入 DC2 译码信号 操 作 说 明 000 NC 不操作 001 / GIR 指令寄存器接收 010 / GAR 地址寄存器接收 011 /INTR 恢复原中断优先级 100 /INTN 接收新中断优先级 110 /EI 开中断 111 /DI 关中断
146
小结:需要控制器形成并提供的几个功能部件的33位时序控制信号:
用于运算器的24位; 用于内存和I/O接口的3位; 用于内部总线的3位; 用于几个特定寄存器的3位。
147
2)微程序控制器专用的控制信息,即16位下地址字段的内容
/OE 9 微下地址 微地址 控制存储器 μCM 微指令寄存器 微程序定序器 Am2910 条件判断线路 CI3~CI0 /CCEN /MAP /VECT 地址 8 … 微命令 微指令 CP /PL IR15~IR8 微地址映射部件 MAPROM 指令寄存器 CC SCC
148
(1)8位的微下地址:给出当前微指令的转移操作用到的转移地址,但仅当Am2910D的输出信号/PL有效时,该值才有意义(被使用)。
完成功能 R/C 内容 操 作 使能 信号 /CCEN=0 /CC高 /CC低 Y输出 堆栈 初始化 / /PL 清除 2 指令功能分支 /MAP D 3 条件微转移 μPC 14 顺序执行 弹出
149
2)微程序控制器专用的控制信息,即16位下地址字段的内容
/OE 9 微下地址 微地址 控制存储器 μCM 微指令寄存器 微程序定序器 Am2910 条件判断线路 CI3~CI0 /CCEN /MAP /VECT 地址 8 … 微命令 微指令 CP /PL IR15~IR8 微地址映射部件 MAPROM 指令寄存器 CC SCC
150
(2) CI3~CI0 :为Am2910提供的命令码CI3~CI0。使用最多的是以下4种命令码:
CI3~CI0确定Am2901使用16个命令中的哪一个命令,当其为0000时,给出的下地址字段为全0,与8位的其它另外两个字段(微下地址字段和判断条件SCC)无关。当其为0010时,从MAPROM取下地址,也与另外两个字段无关,当其为1110时,一定是顺序执行,当其为0011时,是条件转移,用SCC字段给出是否转移所依据的条件,因8位的下地址给出转移地址,条件成立时执行转移指令,条件不成立时则顺序执行。 CI3 CI2 CI1CI0 完成功能 初始化 MAPROM映射 条件微转移 顺序执行
151
2)微程序控制器专用的控制信息,即16位下地址字段的内容
/OE 9 微下地址 微地址 控制存储器 μCM 微指令寄存器 微程序定序器 Am2910 条件判断线路 CI3~CI0 /CCEN /MAP /VECT 地址 8 … 微命令 微指令 CP /PL IR15~IR8 微地址映射部件 MAPROM 指令寄存器 /CC SCC
152
指出Am2910使用的/CC信号所依据的判断条件。
(3)SCC3~SCC0: 指出Am2910使用的/CC信号所依据的判断条件。 以上3项内容共16位,构成一条微指令的下地址字段,其作用是形成下一条指令的地址。 SCC3 SCC2 SCC1 SCC0 (CI3~CI0=0011) 功 能 (下面的条件满足时,使/CC=00) 0000 必转移 0010 /INT=0时,转移 0100 JRC,JRNC,JRZ ,JNRZ条件不成立时,转移 0101 JRS,JRNS 条件不成立时,转移 0110 IRH2=0时,转移 0111 IRH0=1时,转移
153
(4)SA、SB:用于指定运算器A口、B口的地址信号是由微指令中的A3~A0、B3~B0字段给出,还是由当前指令的操作数地址字段给出。
微指令控制器所提供的全部控制信号: 运算器:24位 内存和I/O接口:3位 内部总线:3位 特定寄存器:3位 微程序控制器:16位 A、B口地址:2位 编 码 SA SB A口 B口 微指令A口 微指令B口 IR的SR字段 IR的DR字段 51位
154
将33位控制信号和16位下地址划分成若干小段,分配到微指令字的相应位置。
51位控制信号在微程序控制器中的安排: 将33位控制信号和16位下地址划分成若干小段,分配到微指令字的相应位置。 尽量将每4位或每3位信息的字段划分到同一字节的半个字节中,以便于阅读和理解。 51位控制信号在微程序控制器中的安排 微下地址 CI3~CI0,SCC3~SCC0 0, /MIO,REQ, /WE,0,I2~I0 SA,I8~I6,SB,I5~I3 8位 2位备用, 使用8位 A3~A0, B3~B0 0, SST,SSH, SCI 0, DC2, DC1 8位 1位备用, 使用7位
155
3. 16位TEC-2000机的微程序设计 16位机基本指令微程序流程图 (见下页)
156
各组指令所用的执行步骤: A组指令各用一个执行步骤(对应一条微指令),完成CPU内部的寄存器之间的数据运算和传送操作。 B组指令各用两个执行步骤(对应两条微指令)完成主存储器的、或者I/O接口的读写操作。 D组指令用4个执行步骤(对应4条微指令)完成两次主存储器的读写操作。
157
公用于全部指令的几条读取指令: 00地址:是控制存储器的第一条微指令,完成把0值传送到PC中,实现教学机加电启动时,从主存储器的0地址开始运行,主存储器从0地址开始的8千字的存储空间是ROM存储区,固化的是教学计算机的监控程序。 01,02地址:完成读取指令操作,是一次读主存储器的操作; 03地址:通过指令的操作码,映射出相应指令的微地址,并从控制存储器中读出这条微指令到微指令寄存器,接下来变开始这条微指令的具体操作。
158
关于对中断请求的处理的说明: 每条指令在结束本身所要求的运算、操作功能后,开始下一条指令执行之前,都要检查是否有中断请求不进行相应的处理。在讲授有关中断的知识之前,这里暂安排一个假的中断处理过程(伪中断指令)。
159
16 加电启动, 按RESET按钮 0→PC, 关中断 PC →AR, PC+1 →PC MEM →IR /MAP DR+SR→DR
DR and SR→DR DR or SR→DR DR → SR DR xor SR→DR DR and SR SR →DR DR+1 →DR DR-1 →DR SHL DR SHR DR 判断是否转移 PC+OFFSET →PC PORT→AR SP-1 →SP,AR SP →AR,SP+1 →SP DR→AR PC→AR ,PC+1 →PC SR →AR SP→AR ,SP+1 →SP 伪中断指令,空操作 STR →Q, 判中断 R0→IO IO →R0 FLAG →MEM MEM→FLAG MEM→DR SR →MEM MEM →Q MEM →PC PC→MEM ,Q →PC SP-1→SP , AR 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 15 17 19 1B 1D 1E 1F 23 13 14 16 18 1A 1C 20 24 加电启动, 按RESET按钮 转移 不转移 31 3A 30 B、D组 B组 D组 A组
160
2)16位微程序入口地址映射表 序号 指令 编码 入口地址 备注 1 ADD DR, SR 04 A组 2 SUB DR, SR 05 3 AND DR, SR 06 4 OR DR, SR 07 5 XOR DR, SR 08 6 CMP DR, SR 09 7 TEST DR, SR 0A 8 MVRR DR, SR 0B 9 INC DR 0C 10 DEC DR 0D 11 SHL DR 0E 12 SHR DR 0F 13 JRC OFFSET 14 JRNC OFFSET
161
2)16位微程序入口地址映射表 序号 指令 编码 入口地址 备注 15 JRZ OFFSET 10 A组 16 JRNZ OFFSET 17 JR OFFSET 11 18 IN PORT 12 B组 19 OUT PORT 20 PSHF 21 PUSH SR 22 POP DR 23 POPF 24 STRR [DR], SR 25 LDRR DR, [SR] 1B 26 MVRD DR, DATA 1D 27 JMPA ADR 1E 28 CALA ADR 0E C组 29 RET
162
控制存储器存储单元分配的情况: 对A组指令为每条指令用到的一条微指令各自分配一个控制存储器单元,它们之间不存在制约关系,可以从空闲的单元依次向后存放,因此A组的12条指令对应的12 条微指令被依次分配到04~0F的控存单元中。 对B组指令,理论上说,每条指令用到两条微指令;对D组指令,每条指令用到4条微指令。但考虑到有些微指令可以同时用于几条指令,适当设计好它们之间的衔接关系,可少用一些控制存储器单元。这是减少控制存储器容量的有效措施之一。几条不同指令的微程序段可以有相同的入口地址,不同指令的微程序段可能用到相同的微指令。
163
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 选 择 码 数 据 来 源 I2 I1 I0 R端 S端 A Q B D (1)对运算器的控制 I2~I0必须为001 I5~I3必须为000 I8~I6为011(或010) SST的值应为001(见下页) SCI为00 SSH为00 SA、SB应为1
164
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 选 择 码 运 算 功 能 I5 I4 I3 R+S S-R R-S R∨S R∧S R⊙S (1)对运算器的控制 I2~I0必须为001 I5~I3必须为000 I8~I6为011(或010) SST的值应为001(见下页) SCI为00 SSH为00 SA、SB应为1
165
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 I8 I7 I6 通 用 寄存器 Q Y 输出 0 0 0 F→Q F 0 0 1 0 1 0 F→B A 0 1 1 1 0 0 F/2→B Q/2→Q 1 0 1 1 1 0 2F→B 2Q→Q 1 1 1 (1)对运算器的控制 I2~I0必须为001 I5~I3必须为000 I8~I6为011(或010) SST的值应为001(见下页) SCI为00 SSH为00 SA、SB应为1
166
二选一 B 16个 A 通用寄存器 三选一 A L U R S B锁存器 A锁存器 乘商寄存器Q Cn /OE Q3 Q0 RAM0
F 输出Y F3 F=0000 OVR Cn+4 输入D A口地址 B口地址 组成 算逻运算部件 16 个 累加器 乘商寄存器 Q 功能 8种运算功能 8种数据组合 8种结果处理 I5~I3 I2~I0 I8~I6 Am2901内部组成
167
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器的控制 I2~I0必须为001 I5~I3必须为000 I8~I6为011(或010) SST的值应为001(见下页) SCI为00 SSH为00 SA、SB应为1
168
选 择 码 标志寄存器内容变化 说 明 SST2 SST1 SST0 C Z V S 4个标志位的值保持不变 Cy F=0 OVR F15 接收ALU的标志位输出的值 内部总线对硬的一位 恢复标志位原来的现场值 Z V S C置“0”,另3个标志位不变 Z V S C置“1”,另3个标志位不变 RAM0 Z V S 右移操作,另3个标志位不变 RAM15Z V S 左移操作,另3个标志位不变 Q Z V S 联合右移,另3个标志位不变
169
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器的控制 I2~I0必须为001 I5~I3必须为000 I8~I6为011(或010) SST的值应为001 SCI为00 SSH为00 SA、SB应为1 选 择 码 指 令 举 例 Cin SCI1 SCI0 ADD,SUB INC,DEC 1 ADC,SBB C
170
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器的控制 I2~I0必须为001 I5~I3必须为000 I8~I6为011(或010) SST的值应为001 SCI为00 SSH为00 SA、SB应为1 SSH 左 移 右 移 说 明 RAM0 Q0 RAM15 Q15 0 0 × × 逻辑移位 0 1 C × C × 与C循环移位 1 0 Q15 / F15 C y RAM0 原码除(左移) 原码乘(右移) 1 1 × × F RAM0 OVR 右移用于 补码乘法
171
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器的控制 I2~I0必须为001 I5~I3必须为000 I8~I6为011(或010) SST的值应为001 SCI为00 SSH为00 SA、SB应为1 编 码 SA SB A口 B口 微指令A口 微指令B口 IR的SR字段 IR的DR字段
172
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令 0,
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器之外的部件的控制 /MIO为1,REQ和/W为无关位 无专用寄存器接收 无其它数据送内部总线 / MIO REQ / WE 操作功能 内存写 1 内存读 I / O写 I / O读 × 无读写
173
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令 0,
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 DC2 译码信号 操 作 说 明 000 NC 不操作 001 / GIR 指令寄存器接收 010 / GAR 地址寄存器接收 011 /INTR 恢复原中断优先级 100 /INTN 接收新中断优先级 110 /EI 开中断 111 /DI 关中断 (1)对运算器之外的部件的控制 /MIO为1,REQ和/W为无关位 无专用寄存器接收 无其它数据送内部总线
174
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令 0,
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器之外的部件的控制 /MIO为1,REQ和/W为无关位 无专用寄存器接收, 无其它数据送内部总线时把数据开关 内容送到IB.(见下页)
175
DC1码 译码信号 操 作 说 明 000 / SWTOIB 送开关内容到CPU内部总线 001 / RTOIB 送ALU输出到CPU内部总线 010 / ETOIB 16位机送IR低字节内容到数据总线 011 / FTOIB 送程序状态字到内部总线 100 / STOIB 16位机中不用 101 /INTVH 110 / INTV 送中断向量到内部总线 111 / DI 无操作功能,不向内部总线发送数据
176
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令 0,
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器之外的部件的控制 /MIO为1,REQ和/W为无关位 无专用寄存器接收, 无其它数据送内部总线 下一条指令应转移到检查是否有中断请求,因此下地址字段 的内容应为30
177
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令 0,
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器之外的部件的控制 /MIO为1,REQ和/W为无关位 无专用寄存器接收, 无其它数据送内部总线 下一条指令应转移到检查是否有 中断请求,因此下地址字段的内容 应为30 CI3~CI0应为0011,指明是条件微转移 CI3 ~CI0 完成功能 初始化 MAPROM映射 条件微转移 顺序执行
178
4. 对设计结果的有关说明(见P166表4.6) 1)完成“R0←R0+R1”的 “ADD R0, R1”双操作数指令的微指令 0,
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1000 B口 A口 SSH, SCI DC2 DC1 (1)对运算器之外的部件的控制 /MIO为1,REQ和/W为无关位 无专用寄存器接收, 无其它数据送内部总线 下一条指令应转移到检查是否有中断请求,因此下地址字段的内容 应为30 CI3~CI0应为0011,指明是条件微转移 SCC3~SCC0应为0000,指明必定转移(见下页)
179
SCC3 SCC2 SCC1 SCC0 (CI3~CI0=0011) 功 能 (下面的条件满足时,使/CC=00) 0000 必转移 0010 /INT=0时,转移 0100 JRC,JRNC,JRZ ,JNRZ条件不成立时,转移 0101 JRS,JRNS 条件不成立时,转移 0110 IRH2=0时,转移 0111 IRH0=1时,转移
180
4. 对设计结果的有关说明(见P166表4.6) 1)完成 “OR R0, R1”双操作数指令的微指令 (1)对运算器的控制
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 B口 A口 SSH, SCI DC2 DC1 选 择 码 运 算 功 能 I5 I4 I3 R+S S-R R-S R∨S R∧S R⊙S (1)对运算器的控制 I2~I0必须为001 I5~I3必须为011 I8~I6为011(或010) SST的值应为001(见下页) SCI为00 SSH为00 SA、SB应为1
181
4. 对设计结果的有关说明(见P166表4.6) 1)完成 “AND R0, R1”双操作数指令的微指令 (1)对运算器的控制
I2~I0 04 操作功能 下址 微址 指令 CI3~ CI0 DR+SR→DR ADD 0011 30 SCC3~ SCC0 0,SST 0000 0, /M, R, /W 0100 0001 SA, I8~I6 1011 SB, I5~I3 1100 B口 A口 SSH, SCI DC2 DC1 选 择 码 运 算 功 能 I5 I4 I3 R+S S-R R-S R∨S R∧S R⊙S (1)对运算器的控制 I2~I0必须为001 I5~I3必须为100 I8~I6为011(或010) SST的值应为001(见下页) SCI为00 SSH为00 SA、SB应为1
182
对指令的理解,我们只是略举了“ADD DR,SR”为例进行说明。还有很多指令,限于时间关系,没有一一讲解,同学们可按此方法自行去理解。理解一条指令要花费很多的时间,要翻阅前面将过的各种控制信号的功能表,所以理解一两条指令就可以了。注意理解指令不是教学重点,教学要求的关键是掌握微程序控制器的具体组成以及各组成的功能。
183
模拟试题 二、3 说明计算机的组合逻辑控制器和微程序控制器在组成和运行原理两个方面的同异之处,比较它们的优缺点。 答案: 组合逻辑的控制器和微程序的控制器是计算机中两种不同类型的控制器,其共同点是:基本功能都是提供计算机各个部件协同运行所需要的控制信号,组成部分都有程序计数器PC,指令寄存器IR,都分成几个执行步骤完成每一条指令的具体功能;
184
不同点主要表现在:处理指令执行步骤的办法,提供控制信号的方案不一样,组合逻辑控制器是用节拍发生器指明指令执行步骤,用组合逻辑电路直接给出应提供的控制信号,其优点是运行速度明显地快,缺点是设计与实现复杂些,但随着大规模现场可编程集成电路的出现,该缺点已得到很大缓解;微程序的控制器是通过微指令地址的衔接区分指令执行步骤,应提供的控制信号是从控制存储器中读出来的,并经过一个微指令寄存器送到被控制部件的,其缺点是运行速度要慢一些,优点是设计与实现简单些,易于用于实现系列计算机产品的控制器,理论上可实现动态微程序设计。
185
2003年1月试题 三、6.在微程序的控制器中,使用哪个部件来接续每条指令不同的执行步骤?有哪些从当前微指令找到下一条微指令地址的办法(至少说出3种)?(9分)
答:在微程序的控制器中,使用微程序定序器来接续每条指令不同的执行步骤。 在微程序控制系统中,通常有以下办法找到下一条微指令地址:①微程序顺序执行时,下地址为本条微地址加1;②在微程序必定转向某一微地址时,可以在微指令中的相关字段中给出该地址值;③按微指令(上一条或本条)的某一执行结果的状态,选择顺序执行或转向某一地址;④从微堆栈中取出从微子程序返回到微主程序断点的返回地址,用于微子程序返回处理;⑤依条件判断转向多条微指令地址中的某一地址控制。
186
2004年7月试题 4.微程序控制器中,机器指令与微指令的关系是( )。 A.每一条机器指令由一条微指令来执行
4.微程序控制器中,机器指令与微指令的关系是( )。 A.每一条机器指令由一条微指令来执行 B.每一条机器指令由一段微指令编成的微程序来执行 C.一段机器指令组成的程序可由一条微指令来执行 D.一条微指令由若干条机器指令组成 答案:B
187
2004年1月试题 4.微指令是指( )。 A.一段机器指令 B.一条语句指令 C.一个微指令字 D.一条伪指令 答案:C
188
4.6 硬连线控制器部件 硬布线方案的控制器又称组合逻辑控制器。 基本运行原理:
4.6 硬连线控制器部件 硬布线方案的控制器又称组合逻辑控制器。 基本运行原理: 把指令的操作码、指令执行步骤编码、以及其它的控制条件作为输入,使用大量的组合逻辑门电路,直接提供出控制计算机各功能部件协同运行所需要的控制信号。 优点:形成控制信号所需的信号传输延迟时间少,对提高系统运行有利。 缺点:设计与实现复杂,变动设计很不方便。但随着大规模可编程器件的出现,该缺点已得到很大缓解。
189
作业2.6. 简述计算机的控制器的功能和基本组成。微程序的控制器和组合逻辑的控制器在组成和运行原理方面的相同、不同之出表现在哪里?
答案: 计算机的控制器的基本功能是提供计算机各个部件协同运行所需要的控制信号,组成部分都有程序计数器PC,指令寄存器IR,脉冲源和启停控制逻辑,时序控制信号产生部件。
190
组合逻辑的控制器和微程序的控制器是计算机中两种不同类型的控制器,其共同点是:基本功能都是提供计算机各个部件协同运行所需要的控制信号,组成部分都有程序计数器PC,指令寄存器IR,都分成几个执行步骤完成每一条指令的具体功能;
191
不同点主要表现在:处理指令执行步骤的办法,提供控制信号的方案不一样,组合逻辑控制器是用节拍发生器指明指令执行步骤,用组合逻辑电路直接给出应提供的控制信号,其优点是运行速度明显地快,缺点是设计与实现复杂些,但随着大规模现场可编程集成电路的出现,该缺点已得到很大缓解;
192
微程序的控制器是通过微指令地址的衔接区分指令执行步骤,应提供的控制信号是从控制存储器中读出来的,并经过一个微指令寄存器送到被控制部件的,其缺点是运行速度要慢一些,优点是设计与实现简单些,易于用于实现系列计算机产品的控制器,理论上可实现动态微程序设计。
193
时序控制 信号 形成部件 控制器信号 4.6.1 组合逻辑控制器的组成和运行原理简介 硬布线 方案的 控制器 主振 时序 PC 启停 运算器
控制条件 时序控制 信号 形成部件 主振 译码 时序 OP PC …. 启停 控制器信号 +1 DB数据总线 CB控制总线 地址寄存器 AB地址总线 输出 设备 输入 设备 主 存 运算器 部件
194
主要部件组成: ① 程序计数器PC: ② 指令寄存器IR: ③ 脉冲源和启停控制逻辑、 节拍发生器 ④ 时序控制信号产生部件
195
② 指令寄存器IR:保存从内存读来的指令内容,以便提供执行指令过程中要用到的指令本身的主要信息。
① 程序计数器PC:用于保存一条指令在内存中的地址,服务于读取指令,通常有自行增量功能,并可接收下一条要执行的指令的地址。 ② 指令寄存器IR:保存从内存读来的指令内容,以便提供执行指令过程中要用到的指令本身的主要信息。 ③ 脉冲源和启停控制逻辑、节拍发生器 脉冲源和启停控制逻辑用于向各部件提供连续(单个)的主振脉冲。节拍发生器用于标记每条指令的各执行步骤的相对次序关系。 ④ 时序控制信号产生部件 依据指令的操作码、指令的执行步骤以及条件信号形成各部件当前时刻要用到的控制信号。
196
2000年7月试题 二、4. 简要说明组合逻辑控制器应由哪几个功能部件组成?
答:组合逻辑控制器应由4 个功能部件组成: (1)程序计数器PC,用于保存一条指令在内存中的地址; (2)指令寄存器IR,用于保存从内存读出的指令内容; (3 脉冲源和启停控制逻辑、节拍发生器,前者向计算机各部件提供连续(单个)的主振脉冲,后者用于标记每个指令的执行步骤的相对次序关系。 (4)时序控制信号产生部件,用于形成并提供计算机各部件当前时刻要用到的控制信号。
197
① 划分每一指令的执行步骤及在每一执行步骤下的具体操作功能;
设计控制器部件需经过三个阶段: ① 划分每一指令的执行步骤及在每一执行步骤下的具体操作功能; ② 确定在实现这一操作功能时,相关部件要使用哪些控制信号; ③ 需用什么具体逻辑电路,用什么处理方案来形成并向各部件提供这些控制信号。
198
如何区分和表示指令的执行步骤? 用节拍发生器几个节拍信号来区分。 为每一个执行步骤分配确定的节拍状态信号,执行完一个节拍的操作后,能自动地变换为下一节拍状态,表明本节拍操作的结束和新的一个节拍操作的开始。
199
如何确定各功能部件使用哪些控制信号? 依据各功能部件本身的组成和控制要求来确定其需要的 控制信号。例如运算器Am2901需要24位控制信号。 组合逻辑控制器的时序控制信号形成部件如何提供各部 件的控制信号? 依据正在执行的指令操作码(保存在指令寄存器IR 中), 当前指令所处的执行步骤(由节拍发生器的节拍状态标记) 和某个(些)条件(状态标志位)等作为输入信号,用“与— 或”逻辑门形成本节拍用到的控制信号(组合逻辑门)。 在控制信号的作用下,各功能部件完成预期的操作功能。 在教学机中,用现场可编程大规模集成电路实现。
200
4.6.2 TEC-2000教学计算机硬连线控制器的组成、设计与实现
1. 硬连线控制器的实际组成 教学计算机的特点: ① 16位字长,常规指令由1(或2)个字节组成。 ②运算器部件采用位片结构的器件Am2901芯片实现,内有16个通用寄存器,规定R4作为堆栈指针(SP),R5作为程序计数器(PC),能作通用寄存器使用的只有14个寄存器。 ③地址寄存器和地址总线为16位,可访问64K的存储空间。
201
二选一 B 16个 A 通用寄存器 三选一 A L U R S B锁存器 A锁存器 乘商寄存器Q Cn /OE Q3 Q0 RAM0
F 输出Y F3 F=0000 OVR Cn+4 输入D A口地址 B口地址 组成 算逻运算部件 16 个 累加器 乘商寄存器 Q 功能 8种运算功能 8种数据组合 8种结果处理 I5~I3 I2~I0 I8~I6 Am2901内部组成
202
教学计算机的组合逻辑控制器组成框图 GAL1 GAL20V8 GAL2 GAL20V8 GAL3 GAL20V8 GAL5 GAL20V8
全部时序控制信号 程序计数器 (在运算器内部) 节拍发生器 (5位触发器) MACH4 指令寄存器 (8位)
203
组成说明: 程序计数器PC 由Am2901的通用寄存器R5构成。 指令寄存器IR(8位) 节拍发生器(5位触发器的节拍状态) 时序信号形成部件 现场可编程大规模集成电路MACH4 现场可编程大规模集成电路GAL20V8(7片) MACH4:产生已有指令的全部时序控制信号。 75片GAL20V8:用于产生扩展指令的全部时序控制信号。 大规模可编程器件内部由两级组合逻辑门电路组成。 输入信号:指令寄存器IR的内容; 节拍发生器的状态信号。 输出信号:全部时序控制信号。
204
2. 16位机的执行流程与节拍发生器设计 一条指令执行过程分为4个阶段:
位机的执行流程与节拍发生器设计 一条指令执行过程分为4个阶段: 读取指令;完成“地址寄存器←指令地址”,修改PC内容,使其指向下一条用执行的指令,读内存实现“指令寄存器←读出的指令”。 执行指令,通用寄存器之间运算或传送,可1步完成:读、写内存或读、写外设操作,通常用2步完成。 判断中断请求,有中断请求则转去响应中断并处理,无中断请求则开始下一条指令的执行过程。
205
TEC-2000机指令按功能分组为A、B、C、D四组:
(1)A组基本指令:ADD、SUB、OR、XOR、CMP、MVRR、INC、DEC、SHR、SHL、JR、JRC、JRNC、JRZ、JRNZ。 功能:完成通用寄存器之间的数据运算或操作。 (2)B组基本指令:LDRR、STRR、 PUSH、 POP、PSHF、POPF、MVRD,IN、OUT、JMAP、RET 功能:完成一次读、写内存操作,或一次I/O设备的读、写操作。分2步完成,第一步向地址寄存器传送16位的(或8位的)内存(或I/O端口)地址,第二步完成内存或外围设备的读、写操作。
206
TEC-2000机指令按功能分组为A、B、C、D四组:
CALR,SR(调用SR指明的子程序) LDRA DR,[ADR] (DR←[ADR]) LDRX DR,OFFSET[SR] ( DR←[OFFSET+SR] ) STRX DR,OFFSET[SR] ( [OFFSET+SR] ← DR ) STRA [ADR],SR ([ADR] ←SR} 功能:完成两次内存储器的读、写操作。 正常情况下要用4步完成,每一次读写内存操作都要经过传送地址和数据读写这两步。但后4条指令只需3步,因为头一次读出的数据就是下一次读写操作要使用到的地址信息,读出以后直接(或经过加法运算)将其写入地址寄存器。CALR指令先用两步保存PC内容的堆栈,第三步把子程序的入口地址传送的PC中。
207
TEC-2000机指令按功能分组为A、B、C、D四组:
D组基本指令:CALA ADR (调用首地址为ADR的子程序) D组扩展指令:IRET (中断返回) 功能:完成两次读、写内存的操作,取指后可4步完成。 对16位TEC-2000机控制器设计,首先进行的是划分基本指令执行步骤和安排每个步骤执行的处理功能的设计,得到设计结果即该机的指令执行流程。 (见下页)
208
0101 R5←0,关中断 PC←AR, PC ←PC+1 读内存, IR ←读出内容 寄存器之间的 数据运算或传送 传送地址, AR ←地址 读写内存回 寄存器间传送 读、写内存 或读写外设 响应与处理 按RESET键 B、C、D组指令 1000 0000 0010 0011 0110 0111 0100 A组指令 C组指令 D组指令 TEC-2000机的基本指令流程图
209
对TEC-2000机的基本指令流程图的说明 每一个方框代表指令的一个执行步骤,即一个节拍,方框中的文字说明该节拍应完成的主要操作功能。
方框左上角的4位数字,是该节拍的节拍状态编码。 1000状态,完成把0值送入PC,用于加电后按RESET键启动固化中ROM中的监控程序,正常执行时不会进入这个步骤。 0000和0010状态完成读取指令操作,公用于所有指令,与指令的操作码无关。读取指令的两个节拍之间的状态转换不受外界条件制约,是无条件的。 虚线框表示响应中断的操作功能,这一 执行过程同样公用于所有指令的结束处理。每一条指令结束前,CPU都测试有无中断请求出现,有并且其优先级较高,则响应中断,否则进入下一条指令的执行过程。
210
0101 R5←0,关中断 PC←AR, PC ←PC+1 读内存, IR ←读出内容 寄存器之间的 数据运算或传送 传送地址, AR ←地址 读写内存回 寄存器间传送 读、写内存 或读写外设 响应与处理 按RESET键 B、C、D组指令 1000 0000 0010 0011 0110 0111 0100 A组指令 C组指令 D组指令 TEC-2000机的基本指令流程图
211
对TEC-2000机的基本指令流程图的说明 A组指令将进入标记为0011状态的节拍,用一步完成寄存器之间的数据运算或传送。 A组基本指令:ADD、SUB、OR、XOR、CMP、MVRR、INC、DEC、SHR、SHL、JR、JRC、JRNC、JRZ、JRNZ。 功能:完成通用寄存器之间的数据运算或操作。
212
0101 R5←0,关中断 PC←AR, PC ←PC+1 读内存, IR ←读出内容 寄存器之间的 数据运算或传送 传送地址, AR ←地址 读写内存回 寄存器间传送 读、写内存 或读写外设 响应与处理 按RESET键 B、C、D组指令 1000 0000 0010 0011 0110 0111 0100 A组指令 C组指令 D组指令 TEC-2000机的基本指令流程图
213
对TEC-2000机的基本指令流程图的说明 B组指令将先进入标记为0110状态的节拍,再经过标记为0100的节拍,分两步完成一次对主存储器或IO设备的读写操作。 B组基本指令:LDRR、STRR、 PUSH、 POP、PSHF、POPF、MVRD,IN、OUT、JMAP、RET 功能:完成一次读、写内存操作,或一次I/O设备的读、写操作。分2步完成,第一步向地址寄存器传送16位的(或8位的)内存(或I/O端口)地址,第二步完成内存或外围设备的读、写操作。
214
0101 R5←0,关中断 PC←AR, PC ←PC+1 读内存, IR ←读出内容 寄存器之间的 数据运算或传送 传送地址, AR ←地址 读写内存回 寄存器间传送 读、写内存 或读写外设 响应与处理 按RESET键 B、C、D组指令 1000 0000 0010 0011 0110 0111 0100 A组指令 C组指令 D组指令 TEC-2000机的基本指令流程图
215
对TEC-2000机的基本指令流程图的说明 C组扩展指令: CALR,SR(调用SR指明的子程序)
LDRA DR,[ADR] (DR←[ADR]) LDRX DR,OFFSET[SR] ( DR←[OFFSET+SR] ) STRX DR,OFFSET[SR] ( [OFFSET+SR] ← DR ) STRA [ADR],SR ([ADR] ←SR} 功能:完成两次内存储器的读、写操作。 正常情况下要用4步完成,每一次读写内存操作都要经过传送地址和数据读写这两步。但后4条指令只需3步,因为头一次读出的数据就是下一次读写操作要使用到的地址信息,读出以后直接(或经过加法运算)将其写入地址寄存器。CALR指令先用两步保存PC内容的堆栈,第三步把子程序的入口地址传送的PC中。
216
对TEC-2000机的基本指令流程图的说明 D组指令将先进入标记为0110状态的节拍,再经过标记为0100的节拍、0111节拍、0101的节拍,用4步完成两次内存储器的读写操作。 D组基本指令:CALA ADR (调用首地址为ADR的子程序) D组扩展指令:IRET (中断返回) 功能:完成两次读、写内存的操作,取指后可4步完成。
217
0101 R5←0,关中断 PC←AR, PC ←PC+1 读内存, IR ←读出内容 寄存器之间的 数据运算或传送 传送地址, AR ←地址 读写内存回 寄存器间传送 读、写内存 或读写外设 响应与处理 按RESET键 B、C、D组指令 1000 0000 0010 0011 0110 0111 0100 A组指令 C组指令 D组指令 TEC-2000机的基本指令流程图
218
对TEC-2000机的基本指令流程图的说明 ——各个节拍完成的基本操作:
0011节拍主要完成寄存器之间的数据(地址)运算或传送。 0110、0111节拍主要完成运算和传送内存储器或IO接口的地址到地址寄存器中。 0100、0101节拍主要完成内存储器或IO接口的读写操作。 0000、0010节拍完成读内存储器的操作,只是规定由程序计数器PC提供内存储器的地址,读出的内容传送到指令寄存器中。
219
0101 R5←0,关中断 PC←AR, PC ←PC+1 读内存, IR ←读出内容 寄存器之间的 数据运算或传送 传送地址, AR ←地址 读写内存回 寄存器间传送 读、写内存 或读写外设 响应与处理 按RESET键 B、C、D组指令 1000 0000 0010 0011 0110 0111 0100 A组指令 C组指令 D组指令 TEC-2000机的基本指令流程图
220
2)节拍发生器的逻辑设计与线路实现 考虑的主要问题:
(1)触发器的输出能组合出的状态数,能大于、等于为指令系统全部指令所分配的执行状态的数目。本设计中节拍发生器由4位触发器组成。 (2)合理为各节拍状态分配编码(遵循3个原则) ①从一个状态变化到另一个状态时,状态发生器变化的触发器应尽量少,以有利于简化节拍发生器的逻辑线路和改善节拍发生器输出信号的译码波形。 ②安排的节拍应有利于简化时序控制信号形成部件的设计,有利于简化时序控制信号的逻辑表达式。 ③必须清楚地指出节拍状态变化所依据的条件。例如,在完成读取指令之后,要依据指令分组规定,先按A组和非A组指令进行分支,对非A组指令,之后还要依据B、C、D组进一步进行分支。
221
0101 R5←0,关中断 PC←AR, PC ←PC+1 读内存, IR ←读出内容 寄存器之间的 数据运算或传送 传送地址, AR ←地址 读写内存回 寄存器间传送 读、写内存 或读写外设 响应与处理 按RESET键 B、C、D组指令 1000 0000 0010 0011 0110 0111 0100 A组指令 C组指令 D组指令 TEC-2000机的基本指令流程图
222
2)节拍发生器的逻辑设计与线路实现 节拍发生器的线路实现 先写出每位触发器状态转换的逻辑图,即把每位触发器在状态图在的全部状态变化,用一个由与、或两级逻辑组成的表达式完整地表示出来,最后由可编程逻辑电路实现。
223
3. 16位机的时序控制信号形成部件设计 1)设计指令流程中各时序控制信号的状态值 时序控制信号形成部件的功能机输入输出信号:
时序控制信号形成部件的功能是为计算机各个执行部件(包括控制器本身)提供指令每一个执行步骤协调运行所需要的控制信号。它的输入信号包括指令寄存器的输出(操作码和操作数形成地址),节拍发生器的输出(指令执行步骤信号)和条件转移指令所依据的条件判断信号,其输出是计算机各部件允许所需要的控制信号。
224
3. 16位机的时序控制信号形成部件设计 1)设计指令流程中各时序控制信号的状态值 时序控制信号与微指令命令控制字段的异同:
相同点:两种控制器需要控制的除控制器本身之外的的控制对象完全相同。 不同点:两种控制器对控制器本身的控制办法有所差别。微程序控制器是通过微指令的下地址字段处理不同微指令之间的接续关系来实现指令执行步骤的顺序关系;而硬连线控制器则是通过节拍发生器的节拍状态转换来实现指令执行步骤的顺序关系。
225
3. 16位机的时序控制信号形成部件设计 1)设计指令流程中各时序控制信号的状态值
在划分完指令执行步骤(流程),确定好全部时序控制信号的组成之后,接下来的工作是根据每每条指令每一个节拍所执行的功能,设计要求它所提供的控制信号的状态值。 这里要做的工作就是依据已经完成的指令执行流程,把33位控制信号的取值情况(与微程序控制器中一条微指令的控制命令字段的内容相同)填到指令流程表中每一个方格中去,也就是依据指令流程中每一个节拍应完成的操作功能,找出需要使用的各个(组)控制信号的编码值。(见P181表4.7)
226
3. 16位机的时序控制信号形成部件设计 2)时序信号形成部件的逻辑设计和线路实现
写出时序信号的逻辑表达式,主要是设计用于控制计算机其它功能部件的每一个时序信号的逻辑表达式。其做法上把指令流程表中每一个控制信号的全部情形完整地表达出来(某控制信号若取值为1,写原变量,若取值为0,则写反变量),即哪一条指令(操作码)的哪一个执行步骤(节拍发生器的状态)、在什么条件才要求这一控制信号的值为1(或为0),用一个“与”把这几项要求组合在一起够成一个乘积项,再用“或”关系把这个控制信号设计的全部乘积项汇总成一个逻辑表达式。(过程省略)
227
3. 16位机的时序控制信号形成部件设计 2)时序信号形成部件的逻辑设计和线路实现
完成设计并充分检查设计结果的正确性之后,就可以用编程器将设计的逻辑表达式写到先的由两级逻辑门电路组成的现场可编程器件中,再安装到计算机主版上进行调试,最后得到能运行正确的控制器部件。
228
2003年1月试题 三、7 从原理上讲,若不计算读取指令和检查有无中断请求的处理过程,下述类型的指令各自要用几个执行步骤来完成相应的操作要求,并写出每一步完成的具体功能。(每个3分,共9分) a.CPU内部的寄存器和寄存器之间的数据运算与传送。 b.主存储器的一个存储单元与一个累加器之间的数据传送。 c.主存储器的2个存储单元之间的数据传送
229
a.CPU内部的寄存器和寄存器之间的数据运算与传送。
b.主存储器的一个存储单元与一个累加器之间的数据传送。 ①将存放源操作数的主存储器单元地址送地址寄存器;②将存放源操作数的主存储器单元内容送累加器。 c.主存储器的2个存储单元之间的数据传送。 ①将存放源操作数的主存储器单元地址送地址寄存器;②将存放源操作数的主存储器单元内容送累加器;③将目的主存储器单元目的地址送地址寄存器;④将累加器内容送目的地址指定的存储单元。
230
2001年1月试题 二、2 简要说明条件转移指令和无条件转移指令的相同点和不同点?子程序调用指令与转移指令的区别是什么? 答:(1)条件转移指令和无条件转移指令的相同点是必须在指令中给出转移地址,不同点在于条件转移指令还必须在指令中给出判断是否执行转移所依据的条件。 (2)子程序调用指令与转移指令的区别在于子程序调用指令转移之后还有一个对应的返回过程,而一般的转移指令并不涉及转移走后是否如何再次转移回来。
231
2001年1月试题 二、4. 简要说明组合逻辑控制器中的节拍发生器的作用是什么?简述它的运行原理。 答案: (1)组合逻辑控制器中的节拍发生器的作用是提供执行每一条指令的步骤(时序)的标记信号和时序脉冲信号。 (2) 它是用时序逻辑方式运行的,依据当前的时序状态信息,指令的操作码信息,可能还看指令执行状态的有关信息等,确定出下一个时序状态的值。
232
2001年7月试题 二、2 在组合逻辑有控制器中,节拍发生器[TIMING]的作用在于指明指令的执行( ),它是一个典型的( )逻辑电路,从一个节拍状态变至下一个节拍状态时,同时翻转的触发器数目以尽可能的( )为好。 A. 快 B.时序 C.多 D.组合 E.数据 F.控制 G.类型 H.少 I.次序 J.状态 K.过程 L.步骤 答案:L B H
233
2002年7月试题 三、3.在组合逻辑的控制器中,是哪个部件并通过什么办法来区分每条指令不同的执行步骤?在教学实验中,要扩展加进几条新指令,需要经过哪几个设计步骤?又是通过什么办法并如何来协调原有指令与扩展指令用到的不同控制信号的关系?(9分) 答:在组合逻辑的控制器中,是用节拍发生器来区分每条指令不同的执行步骤的。节拍发生器提供执行每一条指令的步骤(时序)的标记信号和时序脉冲信号;它能按时序逻辑方式运行,依据当前的时序状态信息,指令的操作码信息,可能还看指令执行状态的有关信息等,确定出下一个时序状态的值。
234
在教学实验中,要扩展加进几条新指令,需要经过如下设计步骤:①定义新指令的格式和功能;②设计指令的执行流程;选择具体实现中采用的逻辑线路;③设计可编程器件的信息组成和内容等。
实验时应正确处理原有指令与扩展指令用到的控制信号的关系:①在指令格式、指令分组等安排上,新设计的指令应该和已有的指令基本相同,至少不能相互冲突;②对新设计的指令,只实现其流程中具体执行步骤的控制信号,读取指令、检查中断请求等共同操作部分使用已有指令中提供的控制信号;③节拍发生器可能需要变化和修改,例如增加一个节拍状态,但不能破坏原有指令的执行;④新老指令应该在同一个程序中正常执行。
235
试题六 三、7.从概念上讲,有哪几种指令会通过给出一个新的指令地址来改变指令顺序执行的情况?通常可以采用什么方案在指令中给出新的指令地址(至少说出3种)和其它有关信息?(9分)
答:无条件转移指令,条件转移指令,子程序调用指令和子程序返回指令,中断返回指令等可以改变指令执行的次序(不再是顺序执行);在指令字中,可以通过给出寄存器编号,把该寄存器的内容作为新的指令地址;可以用指令的第二个字直接给出一个新的指令地址;也可以通过给出一个偏移值(可以为正或负值)与当前指令地址相加求得新指令的地址(相对转移)。对条件转移指令,还应该在指令字中给出依据什么条件判定是否应该转移的信息,仅在条件成立时才转移,否则顺序执行下一条相邻指令。
236
2002年1月 三、1 1.在教学计算机中,设计者只实现了约30条指令,留下另外约30条指令,交由实验人员选择其中若干条自己来设计指令格式、功能和执行流程,并在教学机上调试正确。请回答:你在设计与实现自己的指令过程中,是怎样看待和处理你的指令和已经实现的指令的关系的?至少举例说明3点。(7分)
237
答案: 实验时应正确处理扩展指令与已有指令的关系: (1)在指令格式、指令分组等安排上,新设计的指令应该和已有的指令基本相同,至少不能相互冲突; (2)对新设计的指令,只实现其流程中具体执行步骤的控制信号,读取指令、检查中断请求等共同操作部分使用已有指令中提供的控制信号; (3)节拍发生器可能需要变化和修改,例如增加一个节拍状态,但不能破坏原有指令的执行; (4)新老指令应该在同一个程序中正常执行。
Similar presentations