5.5 微程序设计技术
在本章节中,我们将深入探讨微程序设计的技术细节,主要包括微指令的设计与优化方法。我们之前已经了解了微程序控制器的基本原理,现在将聚焦于如何有效地构建和优化微指令结构,以达到以下设计目标:
- 缩短微指令字长度;
- 减小控制存储器的容量;
- 提高微程序的执行速度;
- 便于微指令的修改;
- 增强微程序设计的灵活性。
一、微命令编码
微命令编码关键在于如何表示微指令中的操作控制字段。下面介绍三种常见的编码方法:
1. 直接表示法
直接表示法中,操作控制字段的每一位直接代表一个微命令。这种方法的优点在于它的简单性和直观性,因为其输出可以直接用于控制操作。然而,这种方法的主要缺点是微指令字较长,从而导致控制存储器的容量较大。直接表示法适用于指令简单、控制信号较少的场景。
2. 编码表示法
编码表示法将一组互斥的微命令信号组合成一个字段,然后通过字段译码器对每个微命令信号进行译码,其输出作为操作控制信号。例如,使用3位二进制位可以表示7个微命令,而4位则可以表示15个微命令。与直接表示法相比,编码表示法可以显著减少微指令的长度,尽管它可能略微降低执行速度,但由于其能有效减少控制存储器的容量,因此广泛应用于设计中。
3. 混合表示法
混合表示法结合了直接表示法和编码表示法的优点,以达到一个平衡点,综合考虑微指令字长、灵活性和执行速度等多个方面。这种方法适用于复杂度较高且对执行速度有一定要求的微程序控制器设计。
附加设计元素
在微指令中,还可以设定一个常数字段,该字段可以用作ALU的操作数,或者作为计数器的初值以控制微程序的循环次数。这为微程序提供了更多的灵活性和功能性。
通过上述技术,微程序设计不仅能够满足基本的功能需求,还可以在保证性能的前提下,提供更高的灵活性和可维护性。
二、微地址的形成方法
微指令执行的顺序控制问题实质是如何确定下一条微指令的地址的问题。一般来说,有以下几种产生后继微地址的方法:
1. 计数器方式
这种方法和机器指令地址生成类似。顺序执行微指令时,后继微地址由当前微地址加一个增量产生。若是跳转执行,则需通过转移指令来定位下一条微指令的地址。这种方式要求微指令序列在控制存储器中是连续排列的。其特点是顺序控制字段较短,微地址生成结构简单;但转移功能较弱,速度慢,灵活性差。
2. 增量方式与判定方式结合
这种方法将微指令的顺序控制分为两个部分:条件选择字段和转移地址字段。根据条件转移时,将转移地址送入微程序计数器(μPC)。若无转移需求,则按顺序执行下一条微指令(μPC加1)。该方法的图示(图5.32(a))展示了微程序控制器的组成原理,而微指令格式(图5.32(b))由微命令控制字段、条件选择字段和转移地址字段组成。
μPC是控制存储器CM的地址寄存器,具有计数和并行接收数据的功能,μIR是微指令寄存器。当μIR中的转移控制字段指示进行跳转时,转移地址字段的内容会送入μPC,而条件选择字段则控制一个多路开关,根据外部状态条件信号来确定是否触发μPC的并行数据输入。
3. 多路转移方式
当一条微指令能够根据不同的操作码或条件分支出多个微地址时,称之为多路转移。在不产生分支时,后继微地址由顺序控制字段直接提供;若产生分支,则有多个可选的后继微地址。该方式的特点是可以通过较短的顺序控制字段来实现多路并行转移,具有很好的灵活性和较快的速度,但其转移地址逻辑需要通过组合逻辑来设计。
【例3】的解答:
该例子要求设计微地址转移逻辑,微地址寄存器(μA₀-μAn)可以通过设置某位来修改内容,以适应不同的分支需求。根据给定的设计条件和判别测试,微程序的转移逻辑可以通过逻辑门电路来实现,每个转移条件对应一个逻辑表达式。这些表达式确定了在CPU周期的最后一个节拍脉冲时哪一位地址寄存器应该被置位。实际的逻辑门电路设计需要根据这些逻辑表达式来构建。
以上就是基于所提供的图像内容对微地址形成方法的详细解读。这些方法和原理构成了微程序设计的核心,是计算机体系结构和微处理器设计中非常重要的部分。
微程序顺序器AM2910的设计和应用
在现代微程序控制器的设计中,集成电路的使用是不可或缺的。一个典型的例子是AM2910微程序顺序器,这是一种位片式的大规模TTL集成电路芯片,广泛应用于微程序控制器的核心部分,主要负责生成下一条微指令的地址。AM2910的结构框图如图5.33所示,整体设计保证了数据通路和所有器件的宽度均为12位,这意味着它能够寻址4K字的控制存储空间。
AM2910的功能特点
AM2910提供了多种功能和模块来处理微指令地址的生成:
1. 地址生成
AM2910有一个四输入的多路地址开关,用于从以下源选择下一条微指令的地址:
- 寄存器/计数器(R)
- 直接输入地址(D)
- 微程序计数器(μPC)
- 微堆栈(F)
2. 寄存器/计数器
由12个D触发器组成的寄存器/计数器在作为寄存器时保存微地址,以实现微程序的分支;作为计数器时,它具有“减1”功能,用于控制微程序循环的次数。
3. 微程序计数器
μPC包括一个12位的增量器和一个12位寄存器。当增量器的CI输入为高电平时,地址多路开关的输出会加1并装入μPC,实现微程序的顺序执行。当CI为低电平时,多路开关输出直接装入μPC,可用于重复执行一条微指令。
4. 微堆栈
微堆栈包括一个5字×12位的寄存器堆和一个微堆栈指示器μSP,用于保存微子程序调用的返回地址和循环的首地址。μSP总指向最新压入的数据,允许在不执行弹出操作的情况下直接访问栈顶。当堆栈满时会发出信号。
控制信号
AM2910的控制信号复杂,主要包括:
- PL、MAP、VECT:这些使能控制信号决定直接输入D的来源,包括微指令下地址字段、控制存储器或中断向量。
- D₁-D₀:外部直接输入的数据,可以作为寄存器/计数器的初值,或者直接作为下一条微指令的地址。
- Y₁₁-Y₀:下一条微指令地址,直接作为控制存储器的地址。
- I₃—I₀:AM2910命令码,选择其中一条16条命令来确定下一条要执行的微指令地址。
- CC:条件输入,低电平表示条件满足。
- CCEN:CC使能信号,低电平表示CC有效。
- RLD:寄存器/计数器装入信号,低电平表示无视AM2910的命令和测试条件,直接输入D。
- OE:地址多路开关输出使能信号,高电平时输出为高阻态。
- CP:时钟脉冲信号,触发所有内部寄存器的变化。
中断处理和指令转移
AM2910还能处理中断和从机器指令到相应微程序的转移。例如,当接收到中断请求时,可以通过中断向量(VECT)输入来响应中断处理。此外,它还支持从控制存储器的转移(通过MAP)以及微指令的下地址字段实现微程序转移(通过PL)。
总结
AM2910是微程序控制器设计中的关键组件,它通过精巧的电路设计来实现微指令地址的多种生成方式。该芯片提供的灵活性和功能性使它成为了微程序控制器设计中不可或缺的一环。通过有效地控制和生成微指令地址,AM2910使微程序的执行更加高效和灵活。
微指令格式设计:水平型与垂直型微指令
微指令的设计是微程序控制器架构中至关重要的一环。微指令的格式取决于其编译方法,这通常是基于速度和成本的考量。总体来说,微指令格式可以分为两大类:水平型微指令和垂直型微指令。
一、水平型微指令
水平型微指令在单条指令中定义并执行多个并行操作,其一般格式由控制字段、判别测试字段和下地址字段组成。根据控制字段的编码方法的不同,水平型微指令又可分为全水平型、字段译码法水平型以及直接和译码相混合的水平型微指令。
特点和分类
- 全水平型微指令:每个控制位直接表示一个操作,没有使用译码。
- 字段译码法水平型微指令:将控制位分组并通过译码器进行操作的指示。
- 直接和译码混合型:结合了上述两种方式,旨在提高灵活性和减少微指令宽度。
二、垂直型微指令
垂直型微指令包含了微操作码字段,并使用微操作码编译法来规定指令的功能。这种格式与机器指令结构类似,每条指令只执行一到两个操作,且每个操作的功能较为简单。因此,实现同样功能的微程序,在使用垂直型微指令时会比水平型微指令长得多。
结构和例子
设微指令字长为16位,微操作码为3位,可以有如下几种垂直型微指令格式:
- 寄存器-寄存器传送型:用于将源寄存器的数据传送到目标寄存器。
- 运算控制型:指定ALU的输入端信息和运算功能。
- 访问主存型:涉及主存单元信息与寄存器之间的数据传输。
- 条件转移型:根据测试条件,决定是跳转到指定微地址还是顺序执行下一条微指令。
三、水平型与垂直型微指令的比较
水平型微指令
- 并行操作能力强:能同时定义多个并行操作的微命令。
- 执行效率高:较少的微指令数量实现功能,缩短执行时间。
- 灵活性好:可控制多个并行信息传送通路。
- 微程序短,微指令字长:虽然单条指令宽度大,但整个微程序较短。
- 难以掌握:用户需要深入了解机器结构和微命令才能有效使用。
垂直型微指令
- 并行操作能力低:通常一次只完成一个操作。
- 执行效率低:需要更多微指令来实现同一功能。
- 微程序长,微指令字短:使用较短的微指令,但整个微程序较长。
- 易于掌握:类似于机器指令,更容易被理解和编写。
总结
水平型微指令和垂直型微指令在设计微程序控制器时都有各自的优势和局限性。在选择微指令格式时,设计师需要考虑具体的应用场景、成本、性能需求和用户友好性,以确定哪一种微指令格式最适合其系统架构。
串行微程序控制与并行微程序控制
微程序控制器是执行微程序的专门硬件,其操作方式影响着微指令的执行周期及整体系统的效率。我们可以区分两种基本的控制方式:串行微程序控制和并行微程序控制。
一、串行微程序控制
在串行微程序控制中,当前微指令的执行和下一条微指令的取指操作是顺序进行的。这意味着,在当前微指令执行的同时,系统不会取出下一条微指令。因此,串行微程序控制下的微指令周期是由只读存储器的读取周期和微操作执行时间的总和决定的。
特点
- 微指令周期较长:因为取指和执行是顺序进行的,所以整个周期被延长。
- 控制简单:由于不需要同时处理多条指令,控制逻辑相对简单。
- 硬件要求低:串行控制不需要同时读取和执行多条指令的硬件支持。
二、并行微程序控制
与串行控制相对,如果将取指令和执行指令的操作在时间上重叠,即同时进行,那么就形成了并行微程序控制的概念。在并行控制方式中,系统在执行当前微指令的同时,已经在预取下一条微指令了。这种方式的目的是节省取指的时间,从而微指令周期仅由执行微操作的时间决定。
特点
- 微指令周期缩短:通过重叠取指令和执行指令的操作,减少了总的微指令周期。
- 增加微指令寄存器:为了不干扰当前指令的执行,需要一个额外的寄存器来暂存预取的下一条指令。
- 转移问题:在发生微程序转移时,可能需要特殊的逻辑来处理由当前指令的结果决定的下一条指令的地址。
比较与实践选择
在实际的微程序控制器设计中,选择串行或并行控制方式需要权衡各种因素,包括成本、复杂性、速度和技术可行性。如果速度是关键要求,而成本和复杂性可以容忍,那么并行微程序控制通常是优选。然而,对于那些对成本敏感、或者不需要极致性能的应用,串行微程序控制可能更合适。
微程序控制方式的选择也受到具体系统设计、技术要求和预期应用场景的影响。在系统资源有限的情况下,可能会偏向于使用串行控制,而在追求高性能的场景中,比如高端服务器或者专业图形处理领域,可能会更多采用并行控制。每种方式都有其优势和劣势,设计者需要根据具体情况作出最合适的选择。
毫微程序设计(Nano-Programming)
毫微程序设计是微程序设计的一种更加细粒度的形式,引入了两级控制存储器的概念:微存储器和毫微存储器。这种设计在一些高端计算机体系结构中被采用,用以实现更加复杂和精细的控制。
一、基本概念
微程序和毫微程序
- 微程序:在传统的微程序设计中,微指令直接对硬件进行控制。
- 毫微程序:在毫微程序设计中,微指令不直接控制硬件,而是由存储在第二级控制存储器中的毫微指令来解释执行微指令。
控制存储器层级
- 微存储器:第一级控制存储器,存储微程序,它定义了机器指令的高级操作。
- 毫微存储器:第二级控制存储器,直接控制硬件的是毫微指令。
二、毫微程序设计的优点
高并行性
毫微程序设计可以通过少量的微存储空间实现高度的并行性。微程序可以采用更高级的垂直格式编码,节省空间,而毫微程序则利用高度并行的水平格式,尽管毫微存储器字长很长,但由于毫微程序的长度一般较短,因此它们占用的空间较少。
功能细分
毫微程序设计使得计算机的内部逻辑结构可以根据需要进行更精细的调整。毫微指令执行的操作更低级,从而可以实现对计算机操作的更细致的控制,特别是在总线源和目的地的控制上。
三、毫微程序设计的缺点
增加的延迟
毫微程序设计引入了额外的时间延迟。由于需要读取两级控制存储器,这增加了指令的执行时间。
复杂性
设计和实现一个支持毫微程序的CPU要比传统微程序更加复杂。需要考虑的因素增多,包括控制逻辑、存储器管理和指令流的调度。
四、仿真其他计算机
毫微程序计算机没有自己固有的机器语言,在指令级别上可以通过毫微程序来仿真其他计算机的指令集。这种特性使得毫微程序计算机可以在软件开发、系统迁移和新技术试验等领域发挥重要作用。
结论
毫微程序设计是计算机体系结构中的一种高级设计技术,通过在传统微程序的基础上加入更为精细的控制层,它为计算机操作提供了更丰富的控制手段。尽管带来了额外的设计复杂性和时间延迟,但其对于提升系统性能、扩展功能以及实现指令集的仿真能力方面,有着不可忽视的贡献。