|
|
|
[合著] 一台模型计算机的设计与调试(二):微程序控制器流水方案
[ 2007-06-27 17:17:13 ]
引言/提要:与白中英老师等合著,《计算机组成原理题解、题库与实验》第三版,科学出版社,2000年。
关键词:计算机组成原理,实验仪,实验教材
一、教学目的、任务与实验设备
(一)教学目的
(1)通过知识的综合运用,加深对计算机系统各模块协同工作的认识,特别是对并行、流水的认识,加深计算机工作中“时间-空间”概念的理解,从而建立基本的流水计算机的概念。
(2)学习通过“固件升级”即改写微程序的方法来提高计算机系统性能的方法,体会设计方案优劣对性能发挥的重要性。
(3)培养科学研究的独立工作和创新能力,取得设计与调试的实践经验。
(二)设计与调试任务
(1)在上一实验(第一方案)的基础上,设计一台微程序控制的指令级标量流水模型计算机。
(2)根据设计图纸,在通用实验台上进行组装,或对第一方案的模型机进行改装,并调试成功。
(3)在组装调试成功的基础上,整理出设计图纸和其他文件。包括的文件同第一方案。
(三)实验设备
(1)JYS-4计算机组成原理实验仪一台
(2)双踪示波器一台
(3)直流万用表一只
(4)逻辑测试笔一支
(5)集成电路若干片,取决于设计方案。
二、指令系统
采用与第一方案相同的指令系统,即11条机器指令。同样考虑到复杂度和时间问题,一般应降低难度,采用该指令系统的子集:去掉中断指令后的9条机器指令。教材中给出的参考方案,是采用9条机器指令的。
三、设计要求
设计流水方案时,牢记设计的目的是提高系统性能。没有性能改善、为流水而流水的方案是毫无意义的。
实验仪的时序发生器将一个微指令周期分为T1至T4四段,利用QA至QD的关系,利用逻辑门还可以进一步细分。原则上,本次实验尽量只利用四段划分(参考方案中就是这样)。但若设计中碰到不可克服的冲突,允许将数据通路部分的时序细分,控制器部分不准细分。
细分后,若发现数据通路部分的所有操作实质上都是常规串行操作(即同一时刻只有一个操作),该方案将被判为失败。
四、总体设计
指令级标量流水,是指把机器指令的解析过程分解为取指、译码、访存、执行、写回等子过程,各子过程以流水方式运行。考虑到复杂度,在实际设计中,可以分解得不那么细。例如后面给出的参考方案中,只分了取指、执行、写回三个子过程。
要实现流水,至少需要具备两个条件:
(1)数据通路(包括其上的执行器件)要支持流水。
设计这种支持流水的数据通路时,需要解决几个主要问题:
1、 流水线各段争用总线的问题;
2、各段之间互通信息、互相等待的问题;
3、各段工作时序协调一致的问题;
4、中断、程序转移的处理问题。
本实验仪采用了不少具有并行操作功能的器件,如存储器、寄存器组等,对支持流水有一定的帮助,但还需要使它们组成流水线。从广义上理解并行,则流水是并行的一个特例,只有具备先后、因果关系的并行,才能称为流水。例如,图9.16中,DR1和DR2可以并行操作,但它们的关系不是流水。
实际上,图9.16的数据通路已经布置好了流水线,它可以划分为如下功能部件:
1、取指段:包括RAM的右端口、AR2、MUX3、PC、IR。
2、执行段:包括ALU、DR1、MUX1、DR2、MUX2、RF、ER、RAM的左端口、AR1、IR、DR4、MUX4、ALU3、PC。
3、写回段:包括ER、RF,还需要对写回寄存器选择信息进行缓冲,为此要增加如图9.22的缓冲寄存器(否则,WR1、WR0的信息会在写回操作之前改变)。注意,设计的方案不同,可能需要的缓冲寄存器也会有所不同。
也可采用别的划分,上述划分方法仅供参考。
(2)控制器要有能力驱动流水线。
在第一方案中,我们使用的是常规的微程序控制器,虽然数据通路相同,但没有利用其中的流水功能,因此得到的整体系统仍然是常规模型计算机。本实验采用的第二方案,我们就要对原有的微程序控制器进行必要的改进,使之成为微程序流水控制器。
五、微程序流水控制器
由于数据通路仍然沿用图9.16,无须重新设计,因此本次实验的重点就集中在控制器的设计上。这里给出的参考方案,使用指令系统的子集,只有9条指令系统。因为流水控制中,对中断断点的处理会增加流程的复杂度,增大理解的难度,不宜作为参考方案。相信善于思考的同学是可以设计出支持中断的方案的。
第二方案所使用的控制信号,与第一方案基本相同。可以预料,在微指令等方面的设计都会十分类似。
(1)微指令格式
若在第一方案中采用了垂直型微指令,在本实验中需要改用水平型,因为用垂直型微指令来控制并行度较高的流水线将会困难重重。微命令编码仍然可以用直接表示法和字段直接译码法相结合,后继地址用断定方式。事实上,本参考方案的微指令格式与参考的第一方案完全一致。
严格地说,本方案没有中断控制,相应的控制信号可以省略,因此微指令字长可以缩短。但为了兼容第一方案,仍然保留了这些控制信号。其实第一方案也有保留的控制信号,例如M1、M2等。
(2)微程序控制器
微程序控制器的逻辑结构与第一方案几乎完全一致,有差异的只是顺序控制部分,即微程序转移逻辑电路,原因是微程序需要重新设计,重新分配微地址。只采用1片EPROM(或FLASH RAM)同样是可以的。支持流水并未对控制器的硬件结构提出更高的要求。
(3)时空图
如果是要从头设计一套流水系统,时空图应在设计数据通路之前确定,因为具体的流水线是跟时空图紧密相联的。本实验是在已有的数据通路的基础上(已知该数据通路支持流水),通过改进控制来提升系统性能,因此将时空图放在控制器部分进行设计。
参考方案的时空图如下,数字表示该时刻所处理的机器指令序号:
周期 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
取指 |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
|
|
执行 |
|
1 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
6 |
7 |
7 |
8 |
8 |
|
写回 |
|
|
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
这并不是唯一的方案。同样的数据通路,时空图也可以设计成这样:
周期 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
功能段1 |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
6 |
7 |
7 |
8 |
8 |
|
功能段2 |
|
1 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
6 |
7 |
7 |
8 |
8 |
或者这样:
周期 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
功能段1 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
|
|
功能段2 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
|
功能段3 |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
功能段4 |
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
等等,只要设计可以实现即可。不同的时空图直接影响系统的性能。
(4)微程序设计
这里是第二方案中的关键。控制器的强大与否,对机器性能发挥出多少,就取决于如何设计控制流程,并转化为微程序。
前面说过,微程序设计包括了横向设计和纵向设计。要实现流水控制,纵向设计仍然重要,而横向设计也同样需要仔细考虑。因为流水线中要求尽量多的并行操作,以便充分利用硬件资源,减少闲置。横向设计中就应把不冲突的、可以同时实现的控制,放在同一微指令中。纵向设计中,考虑控制顺序要连同并发控制一起考虑,尤其是出现冲突时,需要前后错开。此外就是注意在机器指令发生转移(无条件、有条件或中断)的地方,要丢弃已取的指令,重新做一次取指操作。
设计流水控制的微程序与设计常规的微程序相比,难度要大一些,主要是因为常规流程是单线索的,每一微指令周期要做什么,思路很清晰,而流水控制的流程则同时包含多重线索,每个微指令周期都可能含有两个以上不相干的操作,比较复杂,需要用并发的思维去考虑。由于可能出现的情况大大增多,设计时容易出错,因此一定要细心,规划周全。如果先设计出常规的微程序控制流程图(即前面的第一方案),然后进行微指令合并,出错的可能性会比直接设计流水控制的微程序要小一些。
图9.20是第二方案的参考流程图,它是以图9.18(省略中断指令)为基础,经过微指令合并后得到的。合并方法是:观察每个微指令周期和上一周期的操作是否冲突,不冲突则将本周期的操作叠加至上一周期。例如图9.20中地址为35的微指令,就是图9.18中地址为35和05的两个微指令合并而成的(没有中断的情况下,35后面紧跟着的是05)。
流水控制的微程序流程必须涵盖所有可能的情况,为此可以用地址不同、操作类似的微指令来实现不同的分支。例如图9.20中,地址为20、10的两个微指令是相似的,分别表示上一机器指令中需要和不需要WRD操作的情况。至于转移指令的处理,图9.20中已经很清楚,注意一下即可。
控制台指令与第一方案的完全相同,不再赘述。对照9.18思考一个问题:在KLD的循环中,第二方案比第一方案多插入了一个空指令(微地址2F),有什么作用,去掉它会怎么样?
六、组装与调试
如果事先没有做第一方案的实验,或者已经拆除了第一方案中的接线,则参照前面第一方案的介绍,进行数据通路、时序产生器和微程序控制器的组装和分调试。如果已经有现成的第一方案的模型机,则无须重新组装,只作必要的电路修改即可。对修改过的部分仍然要先进行分调试。
总调试中,要求连续执行多种机器指令,检查流水线是否真正起作用,要特别注意条件转移、无条件转移的操作是否正确。
我们不妨计算一下参考的第二方案比第一方案时间性能提高了多少。一条k段的流水线完成n个连续任务的加速比为:
将k=3代入公式,以1拍为单位时间,我们得到
S = 4n / [4 + 2(n-1)]
= 2n / (n+1)
= 2 - 2/(n+1)
当n趋向于无穷大时,S趋向于2。就是说,没有冲突、转移的理想情况下,第二方案执行指令的速度无限接近于第一方案的两倍。
可见,在数据通路不变的情况下,单靠改写微程序,并相应地对控制器略作修改,就能提高系统的性能。若考虑上述方案的微程序控制器电路中,微程序转移逻辑部分使用可编程器件,如GAL、ISP等,则整个控制器都无须进行线路改动,就能实现第一方案到第二方案的升级。由于微程序、ABEL程序等又被称作固件(介乎传统的硬件和软件之间),这样的升级可称为固件升级。目前许多计算机配件带有FLASH RAM,通过改写FLASH RAM可提高系统的性能,这些就是固件升级在真实的计算机系统中的例子。
七、更高水平的课程设计
前面所叙述的课程设计说明,是对学习“计算机系统结构”课程的计算机系所有学生的基本教学要求:按给定的指令系统和指令格式,完成一台微程序控制的模型流水计算机的设计和调试。
本小节提出的所谓更高水平的课程设计,是指更高的教学要求,这些要求是
(1)仍然使用图9.16所提供的数据通路;
(2)学生自己拟定指令格式和微指令格式;
(3)只使用一片EPROM或FLASH RAM作控制存储器;
(4)增加对中断的支持;
(5)将流水线细分为四段、五段或更多。
前面三项在第一方案中已经介绍过,后面两项仍然是任选项。第(4)项要求增加中断后,性能不应下降太多,不能又还原为常规控制。第(5)项要求是基于增加流水线分段数可提高性能的考虑,设计时要注意减少冲突,否则性能会不升反降。若要对时序信号进行细分,必须遵守前面的设计要求。
我们给出微程序流水控制器的关键部分设计作为参考。
(1)微指令格式 见图9.17
(2)微程序控制器 见图9.21
(3)微程序流程 见图9.20
(4)微程序代码表 见表9.16
|
|
|
相关文章:
[合著] 一台模型计算机的设计与调试(一):微程序控制器方案 [2007-06-27] [合著] 中断原理实验 [2007-06-26] [合著] CPU组成与机器指令执行实验 [2007-06-26] [合著] 微程序控制器组成实验 [2007-06-25] [合著] 数据通路组成实验(旧) [2007-06-25] [合著] 数据通路组成实验 [2007-06-25]
最新留言:
[2014-10-16] [2014-10-16] [2014-06-04] [2014-06-04] [2013-12-08] [2013-11-29]
|
|
相关链接 |
|