540 likes | 659 Views
4. 5 微程序设计技术. 前面介绍了微程序控制器的工作原理及其组成,在实际微程序设计时,应考虑以下几个问题: 如何缩短微指令字长; 如何减少微程序长度; 如何提高微程序的执行速度 。 如何 提 高微程序设计的灵活性 本节将围绕这些问题讨论。. 微 命 令. 控 制 字 段 下 址 字 段. 4.5.1 微命令的编码方法. 一、直接表示法 (直接控制法) 在微指令的控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令,只要将控制字段相应位置 “1”或“0”。.
E N D
4.5 微程序设计技术 前面介绍了微程序控制器的工作原理及其组成,在实际微程序设计时,应考虑以下几个问题: • 如何缩短微指令字长; • 如何减少微程序长度; • 如何提高微程序的执行速度。 • 如何提高微程序设计的灵活性 本节将围绕这些问题讨论。
微 命 令 控 制 字 段 下 址 字 段 4.5.1 微命令的编码方法 一、直接表示法(直接控制法) 在微指令的控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令,只要将控制字段相应位置“1”或“0”。 特点:结构简单,并行性强,执行速度快,当微命令条数多时,微指令字长会很长,增加了控制存储器的容量。
微命令 微命令 微命令 译码器1 译码器2 译码器n 字段1 字段2 字段n 下址字段 二、编码表示法 • (1)字段直接编译法:选择相斥的微命令组成一个字段进行编码,然后通过字段译码器对每组编码进行译码,译码输出作为操作控制信号,其微指令结构如下。通常每个字段都留有一个编码表示本字段不发出任何微命令。 特点:缩短微指令的字长,微指令的执行速度稍慢些。
a1,2 a2,2 a7,2 a1,1 a2,1 a7,1 & & & & & & A B b1 b2 微命令译码器 微命令译码器 IR (2)字段间接编译法 控制字段需通过两级译码才可得到相应的微命令控制信号。即一个字段的某些微命令还受另一字段的制约。 特点:可进一步缩短微指令字长,但微指令的执行速度较低。
三、混合编码法与常数源字段 • 混合编码法:将字段编码法与直接控制法相结合,以综合考虑微指令字长、执行速度、灵活性等方面的要求。 • 此外,在微指令中还可附设一个常数源字段,如同指令中的直接操作数一样。该常数可作为操作数送入ALU运算,也可作为计数器初值以控制微程序循环次数。
“微命令字段的编译法”小结 • 1.直接控制法 • 直接用微指令字的一位作一个控制信号则简单且速度快,但会使微指令字变得很长。 • 2.字段直接编码法 • 把互斥的命令分在一组加以编码,经译码器给出命令,速度会稍慢,但可大大减短微指令字长度,确保互斥。 • 3.字段间接编码法 • 是对直接译码的的一种改进,可进一步缩短微指令字长度,即一个字段的某些微命令还受另一字段的制约。 • 4.混合编码法和常数源字段 • 混合编码法:将字段编码法与直接控制法相结合, • 常数源字段:微指令中分配几位,用于给出特定用途的有关数值。
4.5.2 微指令地址的形成 基本概念: • 现行微指令:当前正在执行的微指令。 • 现行微地址:现行微指令所在的控制存储器单元的 地址。 • 后继微指令:现行微指令执行完毕后,下一条将要执行的微指令。 • 后继微地址:后继微指令所在的控制存储器单元的地址。 • 微程序流的控制:如何控制产生后继微地址。
下地址字段的内容 得到下地址的方法: • 由指令操作码译码得到 • 微指令顺序执行 • 微指令必转或条件转移 • 多路微地址转移 • 微子程序调用和返回 • 按次数循环一段微程序 • 其他:如特定入口微地址 在微指令下地址字段中表示清楚: 使用哪种方法, 哪个(些)判断条件, 要用的有关地址等, 并用专门电路完成必要支持和处理, 微指令的下地址是微程序设计中要重点解决的问题之一, 技术、技巧性强, 应学得好些。 在教学计算机中,解决下地址使用了 Am2910 器件
一、产生后继微地址的几种方法 1.计数器方式(增量方式) 顺序执行微指令时,后续微指令地址由现行微地址加上一个增量来产生;非顺序执行时,则要由专门的电路产生转移微地址。在这种方法中,微地址寄存器通常改为计数器(微程序计数器PC),顺序执行的微指令必须安排在控制存储器的连续单元中。 特点:微地址产生机构简单,下址字段较短。但多路并行转移功能较弱,速度慢,灵活性较差。
IR 操作码 地址码 转移地址 译码器 转移条件 地址转移 逻辑 微程序入口 PC 控制存储器 +1 IR 控制字段 下址 译码器 计数器方式原理图 下址功能:选择三个输入源中的一个作为PC的内容。2位表示即可。
控制字段BCF BAF 微指令格式 2.增量与下址相结合方式 该方式的下址字段由两部分构成:转移控制字段BCF和转移地址字段BAF,当微程序满足转移条件实现转移时,将BAF送µPC,否则顺序执行下一条微指令( µPC+1)。 • BAF的长度有两种情况: • 与µPC的位数相同,可以从控制存储器的任一单元取微指令; 特点:转移灵活,但微指令字长度增加; • 比µPC短,考虑到转移点在现行微指令附近,或在控制存储器的某区域内,所以由原来µPC的若干位与BAF组合成转移微地址。 特点:转移地址受到限制,但缩短了微指令长度。
“增量与下址字段”方式的原理图 参见王爱英P197页图6.24
OP1 入口地址1 入口地址2 OP2 控制字段 下址高位 状态位 MAPROM OPn 入口地址n 3.多路转移方式 一条微指令存在多个分支的情况称为多路转移。 情况一:执行取指微指令后根据指令的操作码产生不同的后继微地址,通常由可编程只读存储器PROM或称映像只读存储器MAPROM来实现。 情况二:根据某些硬件的状态来决定后继微地址,如可根据运算结果的标志位(C、Z、V、S)、计数器状态、数据通路状态等。根据一个状态位可以实现两路转移,根据两个状态位可以实现四路转移。一般在下址的最后若干位作为转移微地址选择,下址字段的高位部分相同,与最后n位配合可实现2n路转移。
下址字段小结 1.计数器方式(增量方式) 顺序执行微指令时,后续微指令地址由现行微地址加上一个增量来产生;非顺序执行时,则要由专门的电路产生转移微地址。 2.增量与下址相结合方式 该方式的下址字段由两部分构成:转移控制字段BCF和转移地址字段BAF,当微程序实现转移时,将BAF送µPC,否则顺序执行下一条微指令( µPC+1)。 3.多路转移方式: 情况一:执行取指微指令后执行取指微指令后根据指令的操作码产生不同的后继微地址;情况二:根据某些硬件的状态来决定后继微地址。
操作码 地址码 译码器MAP 测试条件 AM2910 I0~I3 控制存储器 CM 控制字段 下址字段 二、 AM2910的组成与功能 AM2910是用于产生下一条微指令的地址,其长度为12位,可寻址4K字的控制存储器。 AM2910微程序控制器
D11~D0 /RLD CP /FULL 寄存器/计数器 R / C 装数 减量 保持 微堆桟指针 SP 出栈/入栈 保持/清零 R为零 零检 测 /CC 5字 * 12位 微堆桟 F 命令译码器 /CCEN 微程序计数器 PC D R F PC 多路选择器 I3~I0 清零 选择 增 量 器 /PL /MAP /VECT /OE CI Y11~Y0 AM2910的内部组成 条件输入 /CC允许信号 命令码 决定D的来源
完成功能 R/C R/C 使能 /CC=高 /CC=低 内容 操作 信号 Y输出 堆栈 Y输出 堆栈 AM2910命令码及其功能 0 初始化 /PL 0 清除 0 清除 1 条件转微子 /PL PC D 压入 2 功能分支 /MAP D D 3 条件微转移 /PL PC D 4 入栈与装数 注1 /PL PC 压入 PC 压入 6 读手拨开关 /VECT PC D 8 R/C 非零 减1 /PL F F 非零循环 零 /PL PC 弹出 PC 弹出 10 微子返回 /PL PC F 弹出 14 顺序执行 /PL PC PC 15 三路转移 非零 减1 /PL F PC 弹出 零 /PL D 弹出 PC 弹出
CI:增量器进位输入,当为低电平时,Y PC,当输入为高电平时,Y+1 PC。 2. AM2910引入线的定义 • D11~D0:外部输入的数据,既可作为寄存器/计数器的初值,也可直接经多路选择器输出,作为后继微地址。 • I3~I0: AM2910的命令码,来自微指令字的有关字段,用来选择下一条将要执行的微指令的地址。 • /CC:条件输入,若为低电平,则表示测试条件为真。 • /CCEN: /CC允许信号,若为低电平,则表示/CC有效。 • /RDL:寄存器/计数器装入信号,当为低电平时,不管AM2910执行的微命令和测试条件如何,都强制把输入D11~D0装入。
3. AM2910引出线的定义 • /OE:Y输出允许,低电平有效,当为高电平时,Y输出为高阻。 • CP:时钟脉冲信号,上升沿触发内部状态的变化。 • Y11~Y0:下一条微指令的地址。 • /FULL:堆栈满信号,低电平有效。 • /PL:当为低电平时,决定D来源于微指令的下址字段。 • /MAP:当为低电平时,D来源于MAPROM,给出相应指令的第一条微指令的地址。 • /VECT:当为低电平时,D来源于中断逻辑,给出中断处理微程序的入口地址。
控制字段 判别测试字段 下址字段 4.5.3 微指令的格式 一、水平型微指令 一条微指令中能定义并执行多个并行操作的微命令。 水平型微指令的一般格式: 特点:微指令字较长,用于解释一条机器指令的微程序 较短。
微操作码 微地址码 4.5.3 微指令的格式 二、垂直型微指令 微指令中设置微操作码字段,采用微操作码编码法,由微操作码规定微指令的功能。 垂直型微指令的一般格式: 特点:不强调实现微指令的并行控制功能,通常一条微指令只要求实现一、两种微操作,微指令字较短,用于解释一条机器指令的微程序较长。
0 1 2 3 - 7 8 - 12 13-15 0 1 2 3 - 7 8 - 12 13-15 0 0 0源寄存器编址 目标寄存器编址 其它 0 0 1左输入源编址 右输入源编址 ALU 0 1 2 3 - 7 8 - 12 13-15 0 1 0寄存器编址 移位次数 移位方式 垂直型微指令实例 设微指令字长16位,微操作码3位,有8条微指令如下: (1)寄存器——寄存器传送型微指令 (2)运算控制型微指令 (3)移位控制型微指令
0 1 2 3 - 7 8 - 12 13 14 15 0 1 1寄存器编址 存储器编址 读写 其它 0 1 2 3 - 14 15 1 0 0转移微地址D 转移类型S 0 1 2 3 - 11 12 -15 1 0 1转移微地址D 测试条件 垂直型微指令实例 (4)访问主存微指令 (5)无条件转移微指令 (6)条件转移微指令
水平型微指令与垂直型微指令比较 • 水平型微指令并行操作能力强、效率高、灵活性强,垂直型则较差。 • 水平型微指令执行一条指令的时间短,垂直型微指令执行时间则长。 • 由水平型微指令解释机器指令的微程序,具有微指令字较长而微程序短的特点,垂直型微指令则相反。 • 水平型微指令,用户难以掌握,而垂直型微指令与机器指令相似,较易掌握。
4.5.4 动态微程序设计 • 对应于一台计算机的机器指令只有一组微程序,这一组微程序设计好之后,一般无须改变而且也不好改变,这种微程序设计技术称为静态微程序设计。 • 采用EEPROM作为控制存储器,可以通过改变微指令和微程序来改变机器的指令系统,这种微程序设计技术称为动态微程序设计。
问 题 • 微命令有哪几种编码方法?各有什么特点? • 后继微地址有哪几种形成方式?各自的特点是什么? • 微指令分为几种格式,两者的特点是什么?
例 4.5 已知某计算机有80条指令,平均每条指令由12条微指令组成,其中有一条取指微指令是所有指令公用的,设微指令长度为32位。请计算控制存储器的容量(以字节为单位)。 解:机器中微指令的条数为:80×11+1=881 则需要的控存容量为:881×32位= 881×32/8=3524 字节 可以选择4K×8位的存储器或1K×4位的存储器
例 4.6 • 某计算机采用微程序控制方式,微指令字长24位,水平型微指令格式,控制字段采用字段直接编码法,下址字段采用增量与下址相结合方式(断定方式) ,共有30个微命令,构成4个相斥类,各包含4个、9个、14个和3个微命令,外部条件共3个,且可根据其下址字段实现全局转移。 • (1)控制存储器的容量应为多少? • (2)设计出微指令的具体格式。 • 解: (1)首先应分析微指令中控制字段的组成及长度,然后确定下址字段中BCF和BAF的长度。
××× ×××× ×××× ×× ×× 3:8译码器 4:16译码器 4:16译码器 2:4译码器 2:4译码器 9位 选4个微命令 选14个微命令 控制3个转移 转移地址 选9个微命令 选3个微命令 4个相斥类对应的编码长度分别应为: 4个:3位, 9个:4位, 14个:4位, 3个:2位 • 则控制字段的长度应为:3+4+4+2=13位 • 由于采用水平型微指令格式,所以下址字段的长度为: • 24-13=11位 • 由于外部条件为3个,所以BCF的编码长度应为2位 • 因此BAF字段的长度为:11-2=9位 • 因此计算控存容量应为:29×24位=512×24位 • (2)微指令的格式:
练 习与作业 练习:P182 11 作业:8
微命令字段 判别测试字段 下址字段 顺序控制 操作控制 作业 1. 已知某机采用微程序控制方式,其存储器容量为512×40(位),微程序在整个控制存储器中实现转移,可控制微程序的条件共12个,微指令采用水平格式,后继微地址采用断定方式(即增量与下址相结合方式),如下所示: 微指令中的三个字段分别应为多少位?说明为什么?
2.机器指令包括哪两个基本要素?微指令(水平型)又包括哪两个要素?机器指令与微指令两者有什么关系?程序靠什么实现顺序执行?靠什么实现转移?微程序中顺序执行和转移执行依靠什么方法?2.机器指令包括哪两个基本要素?微指令(水平型)又包括哪两个要素?机器指令与微指令两者有什么关系?程序靠什么实现顺序执行?靠什么实现转移?微程序中顺序执行和转移执行依靠什么方法? 3.简述微指令的两种基本格式,比较两者的特点。
7片28C64组成 4.5 TEC-2000 16位机微程序控制器的组成与设计 一、TEC-2000 16位机微程序控制器的实际组成
SA I8~I6 SB I5~I3 A3 ~A0 B3~B0 0 SST SSH SCI DC2 DC1 8位 8位 8位 8位 二.16位教学机微指令的构成及编码方法 • 下址字段16位:转移控制字段(8位)、微下址字段(8位) • 控制字段40位 • 下址字段编码方法:增量与下址相结合方式。 • 控制字段编码方法:字段直接编译法 微下地址CI3~CI0,SCC3~SCC0 0/MIO REQ /WE 0 I2~0 8位(BAF) 8位(BCF) 8位
1.TEC-2000 教学机微程序的下地址字段 分成 3 个子字段,总共使用17位码 (微指令中用16位)。 4位 1位 8位 4位 微下地址 2910的命令码 微转移条件 8 位微下地址字段用于直接给出下一条微指令的地址,常用 8 位, 使用微指令字中最高 8 位编码 。 最高一位用于扩展功能, 单独接线。 4 位的命令码,用于选择Am2910的16个命令, 如前一页的表格内容所示。 4 位的微转移条件给出微指令转移所依据的条件,与教学机具体设计有关。
2. 控制命令字段 给出计算机各功能部件协同运行所需要的控制信号,划分成若干字段,分别用于控制各部件 控制运算器部件 如:运算功能,数据来源,结果处理等 控制内部总线 把什么数据送到内部总线 控制主存、入出接口(设备) 如: 指出是主存读、写还是入出设备读、写, 控制几个寄存器的接收 (下地址字段) 如:指令寄存器、地址寄存器等
Y15~Y0用16个指示灯显示结果 各用四个指示灯显示状态 SST SCI Cy F=0 Over F15 Cin C Z V S 运 算 器 部 件 (4 片 Am2901) Gal 20V8 Gal 20V8 RAM15 RAM0 Q15 Q0 SSH D15~D0 用16个数据开关提供输入数据 I8~6 I2~0 I5~3 A3~0 B3~0 通过24位微型开关 提供控制信号 I8~6I5~3I2~0SST SCI SSH A口B口 (1) 对运算器部件的控制(脱机、联机)
Am2901 的9位控制码 I5~I3: 运算功能 I8~I6: 运算结果处理 I2~I0:数据来源 编码 000 001 010 011 100 101 110 111
对运算器的控制信号: 24位控制信号,同24位微型开关内容, A4~A0,B4~B0,I8~I6, I5~I3, I2~I0 SST2~0, SSH1~0, SCI1~0 多出两位SA、SB,用于选择A口、B口来源 SA=1 IR 的源操作数寄存器(SR的地址) SB=1 IR 的目的操作数寄存器 (DR的地址) SA =0 微指令 A口 字段 SB =0 微指令 B口 字段 寄存器分配: R4:SP R5: PC 约定用法:R0:I/O指令约定使用,也是通用累加器
(2) 读写主存储器 或 I/O 接口 从学习指令执行步骤考虑,理解对主存储器读写的控制,分成两步: 1. 传送主存地址,以选择被读写的存储单元; 2. 给出读写命令, 读操作时,把读出数据保存起来, 写操作时,还要给出写入的数据。 从学习指令执行步骤考虑,理解对接口电路读写的控制,分成两步: 1. 传送 IO 端口地址,以选择被读写的芯片; 2. 给出读写命令, 读操作时,把读出数据保存起来, 写操作时,还要给出写入的数据。
对内存和 I/O接口的读写(参见实验指导P86) • /MIO(0:有内存或串口读写,1:无) • REQ (0:读写内存, 1:读写串行口) • /WE (0:写操作, 1:读操作) 0 0 0 写内存 0 0 1 读内存 0 1 0 写串口 0 1 1 读串口 1 XX无内存和串口的读写操作
(3) 对内部总线的控制 总线是用于连接计算机各个功能部件的线路和连接线,通常由具有三态输出功能的器件构成,以便用分时地方式,在不同时刻把不同的数据发送到总线上,任何时刻仅能有一个数据发送到总线上; 总线上的数据可以被送到需要接收数据的部件或者线路,多个线路可以同时接收同一个数据数据。 计算机中总要使用 3 种类型的总线: 数据总线,地址总线,控制总线 教学计算机需要对送达内部总线多路数据来源进行选择,分配3位编码(标记为DC1。)
(4) 控制几个专用寄存器的接收操作 由 D 触发器构成的寄存器(SN74LS377),可以在时钟脉冲的上升沿把送到它的输入端的数据接收到寄存器中,这类寄存器有一个输入控制引脚 /G,用于寄存器是否接受输入的控制使用,当 /G低电平才允许接受输入数据,否则寄存器已有的内容不变。 例如: 对教学计算机的指令寄存器IR,地址寄存器AR等寄存器就需要实现这种控制。 思考,对程序计数器PC ,堆栈指针SP是如何控制的?
选择送内部总线的信息来源 DC12~0 信号名称 注释 000 /SWTOIB 来自开关 001 /RTOIB ALU的输出 010 /ETOIB IR低位字节 011 /FTOIB 状态位输出 100 /STOIB 符号扩展8位 101 /INTVH 中断向量的 110 /INTVL 高、低 8 位 111 NC 不用 控制指定寄存器接收信息 DC22~0 信号名称 注释 000 NC不用 001 /RIR指令寄存器 010 /GARL地址寄存器低8位 011 /GARH地址寄存器高8位 100 /INTR取原中断优先级 101 /INTN置新中断优先级 110 /EI开中断 111 /DI关中断 对内部总线和特定寄存器的控制器提供的控制信号
3. 微指令控制格式 • B55 ~ B48 • 微下地址 • B47 ~ B40 B39 ~ B32 • CI3 ~ CI0 SCC3~00/MIO REQ /WE0 I2~I0 • B31 ~ B24 B23 ~ B16 • SA I8~I6 SB I5~I3 B口 A口 • B15 ~ B8 B7 ~ B0 • 0 SST SSH SCI 0 DC2 0 DC1
三.16位机微程序控制器的设计实现 /Reset PC 0 AR PC PCPC+1 寄存器之间 运算与传送 A组 B组 IR(AR) AR地址 读、写内存 或 I/O 接口 /MAP B、C、D组 C组 D组 读、写内存 AR地址 读、写内存 PC地址 1. 16 位机的基本指令、扩展指令执行流程图 00 04-11 01 02 03
加电启动时, 执行 0PC 接下来的两步, 完成取指操作 按指令操作码, 读出相应微指令 按指令具体功能,再分别用 1、2、3、4步完成不同指令组的中各条指令的执行过程 最后检查中断请求信号,有请求时则响应中断,否则开始下一条指令的执行过程 2.16位机指令的微程序流程图
16位机微程序入口地址映射表 • 1.公操作微指令的地址 • 取指令:00-03H • 判中断:30H • 无中断:送下一条指令地址 31H • 2.各类基本指令的入口地址分配 • A组指令:04-11H • B组指令:12-24H(除21,22H) • D组指令:12-24H
00 0→PC、关中断 加电启动,按RESET按钮 01 PC→AR、PC+1→PC 02 31 MEM→IR 04 DR+SR→DR PC→AR、PC+1→PC 05 DR-SR→DR 06 DR and SR→DR 3A DR or SR→DR 07 03 伪中断处理,空操作 A组 08 DR xor SR→DR /MAP 09 DR-SR 有中断 30 0A DR and SR 无中断 0B STR Q SR→DR → 、判中断 0C DR+1→DR 0D B、D组 DR-1→DR 0E SHL DR 0F SHR DR 不转移 10 判断是否转移 11 转移 PC+OFFSET→PC B组 13 R0→IO PORT→AR 12 IO→R0 14 15 SP-1→SP、AR 16 17 FLAG→MEM SP→AR、SP+1→SP PC→MEM、Q→PC 22 18 MEM→FLAG 19 DR→AR 1A SR→MEM SR→AR 1B MEM→DR 1C PC→AR、PC+1→PC 1D D组 21 20 MEM→Q SP-1→SP、AR 1E PC→AR、PC+1→PC 24 MEM→PC PC→AR、PC+1→PC 1F 23 SP→AR、SP+1→SP 16 位机的基本指令执行流程图 参见实验指导P72