微程序控制器的流水模型计算机设计.docx
《微程序控制器的流水模型计算机设计.docx》由会员分享,可在线阅读,更多相关《微程序控制器的流水模型计算机设计.docx(10页珍藏版)》请在冰豆网上搜索。
微程序控制器的流水模型计算机设计
课程设计:
微程序控制器的流水模型计算机设计
一、课程设计项目
1.实验目的
(1)通过知识的综合运用,加深对计算机系统各模块协同工作的认识,特别是对并行、流水的认识,加深计算机工作中“时间-空间”概念的理解,从而建立基本的流水计算机的概念。
(2)学习通过“固件升级”即改写微程序的方法来提高计算机系统性能的方法,体会设计方案优劣对性能发挥的重要性。
(3)培养科学研究的独立工作和创新能力,取得设计与调试的实践经验。
2.设计与调试任务
在常规微程序控制器实验的基础上,设计一台微程序控制的指令级标量流水模型计算机。
设计过程:
1微程序控制器逻辑图;
2微程序流程图;
3微程序代码表;
4元件排列图;
5总框图(数据通路图);
6调试小结;
3.实验设备
(1)TEC-4计算机组成原理实验仪一台
(2)逻辑测试笔一支
(3)集成电路若干片,取决于实际方案
二、指令系统
采用与模型机相同的指令系统,即12条机器指令。
考虑到复杂度和时间问题,一般应降低难度,采用该指令系统的子集:
去掉中断指令后的3条机器指令,只保留前面的9条指令。
⑴LDRRi,D
格式 7 4 3 2 1 0
0000
Ri
不用
D
功能:
Ri←M(D)
(2)STRRi,D
格式 7 4 3 2 1 0
0001
Ri
不用
D
功能:
M(D)←(Ri)
(3)ADDRi,Rj
格式 7 4 3 2 1 0
0010
Ri
Rj
功能:
Ri←(Ri)+(Rj)
(4)SUBRi,Rj
格式 7 4 3 2 1 0
0011
Ri
Rj
功能:
Ri←(Ri)-(Rj)
(5)ANDRi,Rj
格式 7 4 3 2 1 0
0100
Ri
Rj
功能:
Ri←(Ri)∧(Rj)
(6)ORRi,Rj
格式 7 4 3 2 1 0
0101
Ri
Rj
功能:
Ri←(Ri)∨(Rj)
(7)MULRi,Rj
格式 7 4 3 2 1 0
0110
Ri
Rj
功能:
Ri←(Ri)×(Rj)
(8)转移指令
格式 7 4 3 2 1 0
0111
条件
不用
D
功能:
条件码 00 无条件转移 PC←D
01 有进位转移 PC←D
10结果为0转移 PC←D
11结果为负转移 PC←D
⑼ IN Ri,Mj
格式 7 4 3 2 1 0
1001
Ri
Mj
其中Mj为设备地址,可以指定四种外围设备,当Mj=01时,选中实验箱的二进制代码开关。
功能:
⑽ OUT Ri,Mj
格式 7 4 3 2 1 0
1010
Ri
Mj
当Mj=10时,选中实验箱的显示灯。
功能:
三、设计要求
设计流水方案时,牢记设计的目的是提高系统性能。
没有性能改善、为流水而流水的方案是毫无意义的。
实验系统的时序发生器将一个微指令周期分为T1至T4四段,原则上,本次实验只利用四段划分,即仍使用T1-T4作为时序脉冲。
设计时,应充分考虑控制信号的综合和化简,出厂时的模型机提供了这方面的某些化简实例,但还可以进一步化简。
四、总体设计
指令级标量流水,是指机器指令的解析过程分解为取指、译码、访存、执行、写回等子过程,各子过程以流水方式运行。
考虑到复杂度,在实际设计中,可以分解得不那么细。
例如可只分为取指、执行、写回三个子过程。
要实现流水,至少需要具备两个条件:
(1)数据通路(包括其上的执行部件)要支持流水。
设计这种支持流水的数据通路时,需要解决几个主要问题:
①流水线各段争用总线的问题;
②各段之间互通信息、相互等待的问题;
③各段工作时序协调一致的问题;
④中断、程序转移的处理问题;
本实验仪采用了不少具有并行操作功能的器件,如存储器、寄存器组等,对支持流水有一定的帮助,但还需要使它们组成流水线。
从广义上理解并行,则流水是并行的一个特例,只有具备先后、因果关系的并行,才能称为流水。
例如,图12中,DR1和DR2可以并行操作,但它们的关系不是流水。
实际上,图12的数据通路已经基本布置好了流水线,它可以划分为如下功能部件:
①取指段:
包括RAM的右端口、AR2、MUX3、PC和IR;
②执行段:
包括ALU、DR1、MUX1、DR2、MUX2、RF、ER、RAM的左端口、AR1、IR、R4、MUX4、ALU2和PC;
③写回段:
包括ER、RF;
注意:
在数据通路中可能需要对写回寄存器选择信息进行缓冲,为此要增加如图14所示的缓冲寄存器(否则,WR1、WR0的信息会在写回操作之前改变)。
设计的方案不同,可能需要的缓冲寄存器也会有所不同。
图14操作数缓冲寄存器
也可采用别的划分,上述划分方法仅供参考。
(2)控制器要有能力驱动流水线。
在模型机中,使用的是常规的微程序控制器,虽然数据通路相同,但没有利用其中的流水功能,因此得到的整体系统仍是常规模型计算机。
本实验中,可能要对原有的微程序控制器进行必要的改进,使之称为流水微程序控制器。
五、流水微程序控制器
由于数据通路基本仍然沿用第二节图4,无须重新设计,因此本次实验的重点就集中在控制器的设计上。
这里使用指令系统的子集,只有9条指令。
由于流水控制中,对中断断点的处理会增加流水的复杂度,增大理解的难度,因此不包括中断部分。
相信善于思考的同学是可以设计出支持中断的方案的。
(1)微指令格式
在本实验中仍采用水平型微指令格式,这是由于采用垂直型微指令来控制并行度较高的流水线将会困难重重。
微命令编码仍然可以用直接表示法,后继地址用断定方式。
严格的说,没有中断控制,相应的控制信号可以省略,因此微指令字长可以缩短。
为了兼容模型机方案,仍需保留这些控制信号,以减少接线的难度。
(2)微程序控制器
支持流水并未对控制器的硬件结构提出更高的要求。
微程序控制器的逻辑结构与模型机的差异只是顺序控制部分,即微程序转移逻辑电路,原因是微程序需要重新设计,重新分配微地址。
新设计的微程序转移逻辑电路,可以用仪器上的ispLSI1032实现,也可用中小规模的标准数字器件实现。
(3)时空图
如果要从头设计一套流水系统,时空图应在设计数据通路之前确定,因为具体的流水线是跟时空图紧密相联的。
本实验是在已有的数据通路的基础上(已知该数据通路支持流水),通过改进控制来提升系统性能,因此将时空图放在控制器部分进行设计。
下面是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
图15参考时空图1
周期
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
图16参考时空图2
周期
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
图17参考时空图3
选用的时空图只要设计可以实现即可,不同的时空图直接影响系统的性能。
(4)微程序设计
控制器的强大与否,机器性能能发挥出多少,就取决于如何设计控制流程,并转化为微程序。
微程序设计包括了横向设计和纵向设计。
要实现流水控制,纵向设计仍然重要,而横行设计也同样需要仔细考虑。
因为流水线中要求尽量多的并行操作,以便充分利用硬件资源,减少闲置,横行设计中就应把不冲突的、可以同时实现的控制放在同一微指令中。
纵向设计中,考虑控制顺序要连同并发控制一起考虑,尤其是出现冲突时,需要前后错开。
此外就是注意在机器指令发生转移(无条件、有条件或中断)的地方,要丢弃已取的指令,重新做一次取指操作。
设计流水控制的微程序与设计常规的微程序相比,难度要大一些,主要是因为常规流程是单线索的,每一微指令周期要做什么,思路很清晰,而流水控制的流出则同时保护多重线索,每个微指令周期都可能含有两个以上不相干的操作,比较复杂,需要用并发的思维去考虑。
由于可能出现的情况大大增多,设计时容易出错,因此一定要细心,规划周全。
如果先设计出常规的微程序控制流程图,然后进行微指令合并,出错的可能性会比直接设计流水控制的微程序要小一些。
合并的方法是:
观察每个微指令周期和上一周期的操作是否冲突,不冲突则将本周期的操作叠加至上一周期。
流水控制的微程序流出必须涵盖所有可能的情况,为此可以用地址不同、操作类似的微指令来实现不同的分支。
前面所叙述的课程设计说明,是对学习“计算机系统结构”课程的计算机系所有学生的基本教学要求:
按给定的指令系统和指令格式,完成一台微程序控制的模型流水计算机的设计和调试。
六、组装与调试
对微程序控制器流水方案设计好了以后,形成初步的设计文件,然后按照设计文件进行组装与调试。
在调试过程中,往往会发现设计中的问题,需要修改设计,再根据修改后的设计进行调试,直到完全成功为止。
调试成功后,整理出最后的设计文件。
ALU计算模块:
设计思想:
预算模块要求5种运算,并且运算数据要求补码表示范围在-1≤X≤1―2―7
先将AND运算和OR运算的电路图做出来,这个比较简单:
AND运算:
OR运算:
加减法器:
设计思想:
符号浮点数的加减法与符号幅值的加减法相似,但两个有重要区别,首先由于有几个需要特别表示,因此浮点数加法算必须明确地检测出操作数的是否为0,正负无穷,或NaN(notanumber),移位,对齐,相加减的方法能处理大部分浮点数的加减法。
但它只能对规格化的浮点数进行处理,当操作数为0,正负无穷,或NaN时,浮点数算法必须作特殊处理。
所以,我们可以从符号加减法器开始,然后对结果进行修改,使之成为符号浮点加减法器。