640 likes | 900 Views
第 4 章 数值的机器运算. 第 6 章 中央处理器 ( 下 ). 6.4 微程序控制原理. 微指令 1. 微程序. 微程序设计技术的实质是用软件思想方法来产生控制信号,即将微操作控制信号按一定规则进行信息编码(代码化),形成控制字(微指令),. 微操作命令 1. …. 10100000. 完成 一条机器指令. 微操作命令 m. …. …. 微指令 n. 微操作命令 n. 00010010. 再把微程序,存放在一个 只读的控制存储器中 。
E N D
第4章数值的机器运算 第6章 中央处理器(下)
6.4 微程序控制原理 微指令 1 微程序 微程序设计技术的实质是用软件思想方法来产生控制信号,即将微操作控制信号按一定规则进行信息编码(代码化),形成控制字(微指令), 微操作命令 1 … 10100000 完成一条机器指令 微操作命令 m … … 微指令 n 微操作命令 n 00010010 再把微程序,存放在一个只读的控制存储器中。 这样执行一条指令的过程,就成为取一条微指令──获得一组控制信号──再取下一条微指令,又获得一组控制信号的过程。直到实现该指令的功能。
⑴ 微操作、微命令 一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的、不可再分解的操作。微命令是对微操作的控制信号。 2.基本术语 (2) 微指令 指令流程中每一步操作所需的若干微命令,以代码的形式编排就构成一条微指令。一条微指令放在控制存储器的一个单元中,用以产生一组微命令,实现指令执行中的一步操作。 (3)微程序: 实现一条机器指令所需要的微指令序列构成微程序段。通常可以利用传统的程序设计技巧来设计微程序,如顺序、转移、公用微子程序段,微堆栈等。 (4) 控制存储器: 存放微程序的专用存储器,简称微控存。在控制存储器中每一个单元存放一条微指令,其地址称为微地址。 控制通常用只读存储器ROM实现。对控存的主要要求是速度快,工作可靠。
用户程序和数据 可以修改 主存 ADD SUB AND . . . 每条指令对应一段微指令构成的微程序 DATA 运算部件 AND 微程序 CPU 控存 ADD 微程序 SUB 微程序 图 6- 12 机器指令与微程序的关系
一条机器指令 一个微程序 微指令n 微指令2 微指令1 微命令m 微命令2 微命令1 微操作 微操作 微操作 微程序\微指令\微命令\微操作的关系 • 将指令的执行转换为微程序的执行 • 微程序是一个微指令序列; • 每条微指令是一个0/1序列,其中包含若干个微命令(即:控制信号)
程序与微程序的关系: 主存 控存 IR
6.4.2 微指令的编码方法 微指令格式 下地址字段 控制命令字段 每一条微指令要完成二个作用: • 提供一个执行步骤所需要的控制信号(微命令),以实现该执行步骤的操作功能; • 提供下一条待用微指令的地址,以便自动有序地读出各条微指令。 控制字段——用于安排微命令(控制信号)。; 下址字段——用于控制间接形成或直接给出下条微指令在控存中的地址。 控制字段的编码方法:通常为水平型的格式
在这种形式的微指令字中,操作控制字段的每一个独立的二进制位代表一个微命令,该位为“1”表示这个微命令有效,为“0”则表示这个微命令无效。每个微命令对应并控制数据通路中的一个微操作。 1. 水平型的直接控制法(不译码法) 控制信号 … C20 C19 C18 … …………… C4 C3 C2 C1 下地址 操作控制 产生控制信号的速度最快 • 优点: • 并行控制能力强,不必译码,故执行速度快。 • 编制的微程序短。 • 缺点: • 微指令字很长,可能多达几百位。 • 编码空间利用率低。(几百位中可能只有几位为1)
控制信号 … … … 译码 译码 译码 下地址 操作控制 2. 水平型的字段编码法 • 基本思想: • 将微指令分成若干字段,每个字段对包含的若干微命令编码把互斥微命令组合在同一字段,相容微命令组合在不同字段一条微指令中最多可同时发出的微命令个数就是字段数 相容微操作:能同时进行的微操作,称为相容的。 互斥微操作:不能同时进行的微操作,称为互斥的。如:ALU运算(+、- 、or… ),存储器操作( 读、写 ) 你还能想出哪些互斥微操作吗? • 优点: • 与直接控制编码法相比微指令短,能压缩到直接法的1/2到1/3,节省控存容量。 • 缺点: • 增加译码线路,并开销一部分时间。 图6-13 字段直接编码法
直接控制法和字段直接编译法举例 • 例1:假定图所示单总线数据通路有4个通用寄存器R0,R1,R2和R3, 16种ALU操作,主存和CPU间采用“异步”方式通信,存取操作有Read和Write信号控制。要求:分别写出采用直接控制法和字段直接编码法的微操作码格式。 寄存器和总线间传送信号三组共17个: Rin:R0in, R1in, R2in, R3in, Yin, PCin, IRin Rout:R0out, R1out, R2out, R3out, Zout, PCout, MARout, MDRout MRin:MARin, MDRin ALU操作类型16种:add/sub/or/and/xor/…/mov ALU进位信号1个:1→C0 图6-13 单总线结构 暂存器Y清0信号1个:ClearY 存储器信号3个:Read、Write、WMFC 结束信号1个:End
直接控制法和字段直接编译法举例 • 直接控制法 • 控制字段的长度 = 控制信号的总个数 共有17+16+1+1+3+1=40个控制信号(微命令) • 微操作码字段共40位。某位为1,对应微命令有效,否则对应微命令无效。 • 字段直接编码法 • 哪些微操作之间是互斥的? • Rout中信号之间:某时刻只能有一个寄存器输出到总线; • ALU操作控制信号间:某时刻ALU只能做一种操作 • 主存读/写信号:不能同时读和写,有些节拍中没有读和写(No action) • 如何分组? • 按互斥关系分组:上述3个互斥组在3个不同字段中 如Rin,MRin(这两组间可能同时发生) • 其余的需直接控制(无需编码):如1→C0, Clear Y, WMFC, END等 • 共分9组, 控制字段仅有3+3+2+4+1+1+1+1+1=17位, • 9组中有3组进行了编码,执行微指令时需译码.
思考: 已知某计算机有80条指令,平均每条指令由10条微指令解释执行,其中有二条取指微指令是所有指令公用的,设微指令长度为32位,请算出控制存储器的所需容量是多少字节?
例题:某计算机有8条微指令,每条微指令发出的微命令如下表所示,试对这些微指令进行编码以使得微指令的控制字段最短而且保持微程序应有的并行性。例题:某计算机有8条微指令,每条微指令发出的微命令如下表所示,试对这些微指令进行编码以使得微指令的控制字段最短而且保持微程序应有的并行性。 经分析:e、f、h是互斥的, b、i、j是互斥的, 其余的微命令 a、c、d、 g是相容的。
X X X X X X X X 所以,定义微指令控制字段格式: a c d g 00 不操作 01 b 10 i 11 j 00 不操作 01 e 10 f 11 h I5 0110 0101 I6 1111 1000 I1 0101 1110 I2 1000 1011 I3 1101 0000 I4 0000 0100 I7 1100 0110 I8 1101 1000
6.4.4 微程序地址的形成 • 选择下条要执行的微指令有三种情况: • 顺序执行:在每条机器指令的微程序执行过程中顺序取出下条微指令执行。 • 分支执行:在遇到按条件转移到不同微指令执行时。 • 微程序的入口:每条机器指令的执行都对应一段微程序,所以每条机器指令取到,就需要转移到下条机器指令所对应的第一条微指令。 • 1. 怎样控制微程序后继微指令的执行顺序? • 通过在本条微指令中明显或隐含地指定下条微指令在控存中的地址来控制。 • 微指令地址的产生方法有两种: • 增量(计数器)法:下条微指令地址由微程序计数器μPC产生。 • 断定(下址字段)法:在本条微指令中明显地指定下条微指令的地址。
例如,某机有16条机器指令,指令操作码由4位二进制数表示,现以字母表示操作码,令微程序的入口地址为:例如,某机有16条机器指令,指令操作码由4位二进制数表示,现以字母表示操作码,令微程序的入口地址为: 1 1 B 00H 公用段 03H 07H 3FH MOV ADD * * * … 指令 指令 指令 0 3 H 2. 如何找到每条机器指令微程序的首地址? (1). 用逻辑电路控制转换得到。 (2). 用查表法,可以用ROM来实现一个映射表,其入口为指令操作码输入,而输出为每条指令对应的微指令序列的首条微指令在控存中的地址。根据这个地址到控存中取出第一条微指令执行即可。 SUB指令 MOV指令 0 0 0 1 0 0 0 0 1 1 0 0 1 0 ADD指令 B 7 各微程序的入口地址相差4个单元。
1.微程序控制器的基本组成 6.4.3 微程序控制器的组成和工作流程 微程序控制器下指令的执行流程为 ⑴ 执行取指令公操作。取指令的公共操作通常 由一段取指微程序来完成。 取指微程序的入口地址一般为CM的0号单元, 当取指微程序执行完后,从主存中取出的机器指 令就已存入指令寄存器IR中了。 ⑴控制存储器(CM) 这是微程序控制器的核心部件,用来存放微程序。 ⑵微指令寄存器(IR) 用来存放从CM中取出的微指令。 ⑶微地址形成部件 用来产生初始微地址和后继微地址。 ⑷微地址寄存器(MAR) 接受微地址形成部件送来的微地址,为在CM中读取微指令做准备。 • ⑵ 由机器指令的操作码字段通过微地址形成部件 • 产生出该机器指令所对应的微程序的入口地址, • 并送入MAR。 • ⑶ 从CM中逐条取出对应的微指令并执行之。 • ⑷ 执行完对应于一条机器指令的一段微程序后又 • 回到取指微程序的入口地址,继续第⑴步,以完 • 成取下条机器指令的公共操作。 • 以上是一条机器指令的执行过程,如此周而复始,直到整个程序执行完毕为止。 图6-13 微程序控制器的基本结构
6-19 已知某计算机采用微程序控制方式,其控制存储器容量512*48位,微程序可以整个控制存储器中实现转移,可控制转移的条件共4个,微指令采用水平型格式,后继指令地址采用断定方式,指令格式如图所示: 问3个字段各是多少位? 解:因为控制转移的条件共4个,则判别测试字段为2位,因为控制容量为512个单元,所以下地址字段应为9位;微命令字段的位数=(48-9-2)=37位。
教学计算机的微程序控制器举例 微下地址 (8位) CI3~CI0, SCC3~SCC0 (8位) MIO REQ WE I2~0 I8 I7 (8位) I6 I5~I3 A3~A0 (8位) B3~B0 SST2~0 SSH (8位) SCI1~0 DC2 DC1 (8位) 教学计算机的微指令长48位,其中微下地址占16位,其余32位为微命令控制字段.
下址的控制字段 16位下地址字段 用两片E2PROM 32位操作控制字段 用一片可编程逻辑器件实现 构成 48 位的控制存储器
微下址定序器 微地址入口 映像ROM E2PROM存放 16位下地址字段 存放32位微操作控制码
(1)运算器需要的控制信号(共23位) • /MIO(0:有内存或串口读写,1:无) • REQ (0:读写内存, 1:读写串行口) • /WE (0:写操作, 1:读操作) 0 0 0 写内存 0 0 1 读内存 0 1 0 写串口 0 1 1 读串口 1 XX 无内存和串口的读写操作 1. 微命令控制字段的内容 • 数据来源( I2 I1 I0)功能代码( I5 I4 I3)结果处理( I8 I7 I6) • A口地址B口地址 • 最低位进位控制信号(SCi) • 状态寄存器接收信号(SST) • 移位控制信号(SSH) (2)对内存和 I/O接口的读写(共3位)
2. 下地址的形成方式(微程序流的控制) 共四种情况 : • 根据指令操作码,用查表法得到该指令的微程序入口地址; • 顺序执行下一条微指令,下地址为本条微指令地址+1; • 无条件转移到某条微指令,下地址应该在微指令的下地址字段给出; • 根据某一条件实现转移,选择顺序执行或转向某一地址。
IR OP 微地址 形成部件 微程序入口值 标志 … 控制信号 分支 逻辑 … 转移方式 下地址 µIR µPC 微地址译码 控制存储器 入口地址、后断地址的断定法和增量法结合起来使用: 微程序初值 地址 选择 + 1
分成 3 个子字段,总共使用微指令中的16位。 4位 8位 4位 微下地址 2910的命令码 微转移条件 所以,教学计算机微指令的下地址字段的内容为: 8位微下地址字段用于直接给出下一条微指令的地址,使用微指令字中最高8位编码 。 4 位的命令码,用于选择Am2910的16个命令. 4 位的微转移条件给出微指令转移所依据的条件,与教学机具体设计有关。
4位命令码及其功能 命令号
4位转移条件: SCC SC /CC 注释 000 / 0 条件成立,必转 001 / 1 条件不成立,不转 010 0 /FS1 3 个功能控制开关, 011 0 /FS2 选择教学机 100 0 /FS3 不同运行方式 101 0 /WAIT 等待按STEP键的操作 010 1 C 状态寄存器的 4 个 011 1 Z 标志位CZVS的值, 100 1 V 用微指令设置, 101 1 S 在微指令中使用 110 1 /INT 中断请求信号 4位的微转移条件给出转移依据的条件,用这4位控制形成Am2910 使用的 /CC的值。 用于3号命令!!
MAPROM是一片ROM芯片,它的输入地址是指令的操作码,该地址选中的存储单元存放的是指令所对应的微程序的入口地址。MAPROM是一片ROM芯片,它的输入地址是指令的操作码,该地址选中的存储单元存放的是指令所对应的微程序的入口地址。 MAPROM地址 MAPROM内容 (操作码) (微程序入口地址) 00000000 04H 00000001 05H 00000010 06H … … 用于2号命令!!
3. 教学计算机的微程序控制器的结构 B 口二选一 A 口二选一 IR.DR IR.SR 微指令转移的控制条件 0MRW SA I8~6 B口 0SST DC2 0 I2~0 SB I5~3 A口 SSHSCI DC1 SCC Gal /G 微指令寄存器 /CC CP Am2910 控制存储器( ROM) MAPROM 指令操作码 读命令
指令执行流程举例 ADD DR, SRMVRR DR, SR IN IO-PORTCALA ADR 下址 CI3~0 SCC3~0 0MRW 0 I2~0 SAI8~6 SBI5~3 B口 A口 0 SST SSH SCI DC2 DC1 00 1110 0000 0100 0011 0010 0000 0101 0101 0000 00010011 0000 00 1110 0000 0001 0000 0001 0000 0000 0000 0000 0000 0001 0000 00 0010 0000 0100 0000 0001 0000 0000 0000 0000 0000 0000 0000 第 1 条微指令和第 2 条微指令用于完成读取指令,具体操作功能是: 第 1 条微指令PCAR,PC+1PC;PC是 R5,A口 和 B口 均选5,R5+1 送 R5;输出A口的内容送MAR寄存器。 第 2 条微指令:读主存,读出内容 IR ; 微指令都是顺序执行,故2910选 14# 命令。 第 3 条微指令按读出的指令的操作码,形成相应微指令的地址,读出该条微指令并将其写入微指令寄存器, 2910选 2# 命令,控制运算器的 I8~I6 选 001 码,保证运算器的各寄存器内容不变化。无存储器和IO读写,故/MIO REQ /WE 选 100 码。
指令执行流程举例 ADD DR, SRMVRR DR, SR IN IO-PORT CALA ADR 下址 CI3~0 SCC3~0 0MRW 0 I2~0 SAI8~6 SBI5~3 B口 A口 0SST SSH SCI DC2 DC1 00 1110 0000 0100 0011 0010 0000 0101 0101 0000 0001 0011 0000 00 1110 0000 0001 0000 0001 0000 0000 0000 0000 0000 0001 0000 00 0010 0000 0100 0000 0001 0000 0000 0000 0000 0000 0000 0000 ADD DR, SR MVRR DR, SR 3000110000 0100 0001 1011 1 000 0000 0000 0001 0000 0000 0000 30 0011 0000 0100 01001011 1000 0000 0000 0000 0000 0000 0000 第 4 条微指令,用于完成两个寄存器之间的相加。 具体操作是:两寄存器相加,DR+SRDR,A口和B口 编码来自指令寄存器,故SA 和 SB都给 1 值;下条微指令转判中断请求, 故2910选 3# 命令且 SCC 为 0000, 必转 30。其它不用的微指令段都用0来填充。 第 5 条微指令,完成两寄存器之间的数据传送,SR的内容和 0相加,存入DR寄存器中,不保存标志位的值,故SST为000,无存储器和 IO读写。这两条微指令内容有些类似。
指令执行流程举例 00 1110 0000 0100 0011 0010 0000 0101 0101 0000 0001 0011 0000 00 1110 0000 0001 0000 0001 0000 0000 0000 0000 0000 0001 0000 00 0010 0000 0100 0000 0001 0000 0000 0000 0000 0000 0000 0000 IN IO-PORT( ①MARI/O port ②读内存,读出内容→R0 ) CALA ADR(① MARPC PCPC+1②读,Q读出内容 ③SPSP-1 , ARSP ④ 写入内存PC , PCQ 30 0011 0000 0100 0001 1011 1000 0000 0000 0001 0000 0000 0000 30 0011 0000 0100 0100 1011 1000 0000 0000 0000 0000 0000 0000 14 00110000 0100 0000 0001 0000 0000 0000 0000 0000 0011 0010 30 0011 0000 0011 0111 0011 0000 0000 0000 0000 0000 0000 0000 00 1110 0000 0100 0011 0010 0000 0101 0101 0000 0001 0011 0000 00 1110 0000 0001 0111 0000 0000 0000 0000 0000 0000 0000 0000 00 1110 0000 0100 0011 0011 00010100 0000 0000 0000 0011 0000 30 0011 0000 0000 0010 0010 00000101 0101 0000 0000 0000 0001 下址 CI3~0 SCC3 MRW 0 I2~0 SAI8~6 SBI5~3 B口 A口 0SST SSH SCI DC2 DC1 下址 CI3~0 SCC3 MRW 0 I2~0 SAI8~6 SBI5~3 B口 A口 0SST SSH SCI DC2 DC1
运算器 主振 脉冲 4275 C Z V S 微程序定序器 ALU + 控制 存储器 PC 3041 2000 操作数 地址 映射 2001 1234 乘商寄存器 6688 寄存器组 0001 微指令寄存器 指令寄存器 R9 MAR 操作码 IR . 地址寄存器 2000 下地址字段内容 用于运算器 数据总线 控制总线 地址总线 2000 0001 0001 0790 微程序控制器 8800 接口 2007 8309 输入/出设备 8280 8F00 2007 xxxx 主存储器
C2 M D R C11 C12 AC C9 C3 C10 C5 PC IR C6 C8 C7 控制 信号 ALU C0 C4 … C1 M A R CU 标志 … … 时钟 控制信号 6.5 控制单元的设计(组合逻辑控制器) 6.5.1 简单的CPU模型及其主要的控制信号 CPU 内部结构采用非总线、单累加器结构。其中Ci是控制信号。
C2 C3 C0 C4 … C1 … … 控制信号作用 以取指周期为例: 每一个控制信号控制相应的数据通路打开,实现相应的微操作! M D R M D R AC PC PC IR IR 控制 信号 ALU M A R M A R CU CU 标志 时钟 控制信号
IR 单总线结构CPU 请与单总线结构的CPU相比,并加以区分!
6.5.2 组合逻辑控制器的设计 主振 组合逻辑 控制器 状态信息 控制信号 产生部件 译码 节拍 PC IR …. 启停 控制器信号 数据总线 控制总线 地址寄存器 地址总线 主 存 输出 设备 输入 设备 运算器 部件
n位操作码 … 0 1 2n-1 T0 节拍发生器 T1 CLK 标志信息 … … (机器主频) Tn C0 Cn C1 一、控制信号发生器外特性框图: IR 操作码译码 控制信号发生器 控制信号 Ci = F( Ij ,Tk ,Sl )
FE IND EX INT D D D D CLK 1 FE 1 IND 1 EX 1 INT 二、控制信号发生器设计步骤 1 。简单CPU的指令周期 首先要从指令周期划分为机器周期开始,若每个指令周期分成以下三个机器周期为例: 取 指令 取指周期 取 操作数的地址 间址周期(操作数采用存储器间接寻址方式) 存、取 操作数 执行周期 CPU 的3个机器周期由3个触发器的状态来区分:
取指周期 执行周期 取指周期 执行周期 取指周期 间址周期 执行周期 取指周期 执行周期 列出以下三类指令: 非访存指令: CLA、COM 、INC、SHR 访存指令:ADD、SUB、LDA、STA 转移指令:JMP、JZ、JN、JC 其中访存指令又分为操作数直接访存、间接访存 非访存指令周期 直接访存指令周期 间接访存指令周期 转移指令周期
T0 T1 T2 T3 T0 T1 T2 T3 T0 T1 T2 T3 机器周期 机器周期 机器周期 (取指令) (取有效地址) (执行指令) 指令周期 2。 分析指令流程,安排微操作的时序 在同步方式中,任一微操作均由 统一基准的时序信号控制。 CLK 原则一 微操作的 先后顺序不得随意 更改; 原则二 被控对象不同的微操作尽量安排在一个节拍内完; 原则三 占用 时间较短的微操作尽量安排在 一个节拍内完成并允许有先后顺序。
PC MAR M ( MAR ) MDR ( PC ) + 1 PC MDR IR OP ( IR ) ID Ad ( IR ) MAR M ( MAR ) MDR MDR MAR (1). 取指周期微操作的 节拍安排 T0 原则二、原则三 Read T1 原则二 T2 原则三 (2). 间址周期微操作的 节拍安排 T0 Read T1 T2 ;操作数的地址送到MAR
0 AC AC AC R ( AC ) AC (3) 执行周期微操作的 节拍安排 ① CLA T0 T1 T2 ② COM T0 T1 T2 ③ SHR T0 T1 T2
④ADD X 、Read T0 Ad ( IR ) MAR T1 M ( MAR ) MDR T2 MDR AC ⑤STA X T0 T1 T2 、Write Ad ( IR ) MAR M ( MAR ) MDR ⑥LDA X T0 、Read ( AC ) + ( MDR ) AC T1 Ad ( IR ) MAR T2 AC MDR MDR M ( MAR )
Ad ( IR ) PC Z0 • Ad ( IR ) + Z0•PC PC ⑦JMP X T0 T1 T2 ⑧JZ X T0 T1 T2
工作周期标记 节拍 状态条件 控制信号 CLA COM ADD STA LDA JMP FE 取指 T0 PC MAR 1 Read 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 T1 M(MAR) MDR ( PC ) +1 PC T2 MDR IR OP( IR ) ID I 1 IND 1 EX I 2、控制信号发生器设计步骤(续) 2) 列出操作时间表 1 1 1 1 1 1 1 1 1 1