小说阅读网首页 言情小说 青春校园 玄幻小说 武侠小说 小说连载 灵异推理 网络小说 纪实文学 网游小说 全本小说 作家专区
文学博客网 >> 大杂烩 >> 科技/IT

《计算机组成原理课程设计》三

作者: yunji137   发表日期: 2008-09-07 20:09  点击数: 550


八、微程序控制器设计与实现

(一)、非常简单CPU微程序控制器的基本框图(见图12)

(图12 非常简单CPU的微程序控制器)
1、说明:
a)      共8条指令,17条微指令
b)      (指令操作码)IR   000¬----111
c)      MAP---映象逻辑确定访问的微子程序的入口地址(即执行周期第一条微指令)
d)      MUX实现操作码映象(S=1)和地址的绝对跳转(S=0)

(二)、为非常简单CPU生成正确序列并设计映象逻辑

1、给有限状态机的每种状态分配一个控存地址

  首先确定每条指令执行周期中的第一条微指令入口地址,对于本CPU为程序控制器可使用与硬布线控制器相同的映象函数1IR[754]0 可得。
例:LDI1     10000   16
STO1     10010   18
ADD1     10100   20      
OR1     10110   22
JUMP1   11000   24
JREL1   11010   26
SKIP1   11100   28
RST1     11110   30

(图 13   非常简单CPU微程序控制器的映射逻辑)

2、其余微指令的地址(剩下的状态)

连续的状态分配在控存中连续的存储单元

状态      地址
FETCH1      00000 (0)
FETCH2      00001 (1)
FETCH3      00010 (2)
LDI2      10000 (17)
STO2      10011 (19)
ADD2      10101 (21)
OR2      10111 (23)
JUMP2      11001 (25)
JREL2      11011 (27)
RST1      11111 (30)
    (图14 非常简单CPU微程序控制器的状态地址)

3、确定微指令中的选择域(SEL)和地址域(ADDR),即生成正确的微指令执行顺序。

1)、一般状态转换
例:为了从FETCH1转到FETCH2,微程序控制器将控存的0号单元分配给FETCH1,且设定SEL=0和ADDR=0001。这样,当SEL=0使微程序控制器从ADDR中得到下一条地址,因ADDR=0001。所以,使它转到状态FETCH2所对应的控存地址并取出相应的微指令。
2)、特别状态FETCH3的下一条地址的确定
当执行完FETCH3状态后,必须映象到指令执行周期的微子程序入口处。根据1IR[765]0
所算出的结果。所以要求SEL=1表示采用映象地址。(见图15)






状态      地址      SEL      ADDR
FETCH1      00000 (0)      0      00001
FETCH2      00001 (1)      0      00010
FETCH3      00010 (2)      1      ﹡﹡﹡﹡﹡(任意数)
LDI1      10000(16)      0      10000
LDI2      10000 (17)      0      00000
STO1      10010(18)      0      10011
STO2      10011 (19)      0      00000
ADD1      10100(20)      0      10101
ADD2      10101 (21)      0      00000
OR1      10110(22)      0      10111
OR2      10111 (23)      0      00000
JUMP1      11000(24)      0      11001
JUMP2      11001 (25)      0      00000
JREL1      11010(26)      0      11011
JREL2      11011 (27)      0      00000
SKI1      11100(28)      0      00000
RST1      11111 (30)      0      00000
        (图15 非常简单CPU微程序控制器的部分微代码)


(三)、生成正确的微操作及相应的控制信号( )

微程序控制器的两个任务:
①产生正确的微操作
②遵循正确的状态序列

  1、用水平型微指令生成微操作
  特征:微指令中的每一位代表一种操作。可见,微操作数量越多,微指令的长度就越长。非常简单CPU共有12种不同的微操作,所以 应有17位。
















1)、列出非常简单CPU为执行的所有微操作并为其分配助记符(共12种不同的微操作)。

助记符      微操作
ARPC      AR←PC
DRM      DR←M
PCIN      PC←PC+1
IRDR      IR←DR[7...5]
ACDR      AC ←DR
DRAC      DR←AC
MDR      M←DR
PLUS1      AC←AC+DR                                    
OR      AC←AC∨DR
PCDR      PC←DR
PLUS2      PC ←PC+DR
RST1      PC←0
RST2      AC
            (图16 非常简单CPU的微操作及它们的助记符)


2)结合图15和16,并填上微操作的值。可得最终的微指令格式如下图所示

选择域        微操作域      下址域
      1位           11位             5位














根据这一格式可得这12条微指令如下图17:
           1位      13位      5位
状态      地址      SEL      A
R
PC      D
R
M      P
C
I
N
     I
R
D
R      A
C
D
R      D
R
A
C      M
D
R      P
L
U
S
1      O
R      P
C
D
R      P
L
U
S2      R
S
T
1      R
S
T
2      A
D
D
R
FETCH1      00000
(0)      0      1      0      0      0      0      0      0      0      0      0      0      0      0      00001
FETCH2      00001
(1)      0      0      1      1      0      0      0      0      0      0      0      0      0      0      00010
FETCH3      00010
(2)      1      1      0      0      1      0      0      0      0      0      0      0      0      0      ﹡﹡﹡﹡﹡(任意数)
LDI1      10000
(16)      0      0      1      0      0      0      0      0      0      0      0      0      0      0      10001
LDI2      10001
(17)      0      0      0      0      0      1      0      0      0      0      0      0      0      0      00000
STO1      10010
(18)      0      0      0      0      0      0      1      0      0      0      0      0      0      0      10011
STO2      10011
(19)      0      0      0      0      0      0      0      1      0      0      0      0      0      0      00000
ADD1      10100
(20)      0      0      1      0      0      0      0      0      0      0      0      0      0      0      10101
ADD2      10101
(21)      0      0      0      0      0      0      0      0      1      0      0      0      0      0      00000
OR1      10110
(22)      0      0      1      0      0      0      0      0      0      0      0      0      0      0      10111
OR2      10111
(23)      0      0      0      0      0      0      0      0      0      0      1      0      0      0      00000
JUMP1      11000
(24)      0      0      1      0      0      0      0      0      0      0      0      0      0      0      11001
JUMP2      11001
(25)      0      0      0      0      0      0      0      0      0      0      1      0      0      0      00000
JREL1      11010
(26)      0      0      1      0      0      0      0      0      0      0      0      0      0      0      11011
JREL2      11011
(27)      0      0      0      0      0      0      0      0      0      0      0      1      0      0      00000
SKI1      11100
(28)      0      0      0      1      0      0      0      0      0      0      0      0      0      0      00000
RST1      11111
(30)      0      0      0      0      0      0      0      0      0      0      0      0      1      1      00000
      (图17 非常简单CPU微程序控制器基本的水平微代码)
3)控存总容量(1+13+5)×17=19×17=323位。
4)优化后的水平型微指令(图18)
分析图17可知,RST1和RST2的值相同,可用一个输出RST来驱动这两个操作。
此时,控存的总容量为(1+12+5)×17=306位。


           1位      12位      5位
状态      地址      S
E
L      A
R
P
C      D
R
M      P
C
I
N
     I
R
D
R      A
C
D
R      D
R
A
C      M
D
R      P
L
U
S
1      O
R      P
C
D
R      P
L
U
S2      R
S
T
     A
D
D
R
FETCH1      00000
(0)      0      1      0      0      0      0      0      0      0      0      0      0      0      00001
FETCH2      00001
(1)      0      0      1      1      0      0      0      0      0      0      0      0      0      00010
FETCH3      00010
(2)      1      1      0      0      1      0      0      0      0      0      0      0      0      ﹡﹡﹡﹡﹡(任意数)
LDI1      10000
(16)      0      0      1      0      0      0      0      0      0      0      0      0      0      10001
LDI2      10001
(17)      0      0      0      0      0      1      0      0      0      0      0      0      0      00000
STO1      10010
(18)      0      0      0      0      0      0      1      0      0      0      0      0      0      10011
STO2      10011
(19)      0      0      0      0      0      0      0      1      0      0      0      0      0      00000
ADD1      10100
(20)      0      0      1      0      0      0      0      0      0      0      0      0      0      10101
ADD2      10101
(21)      0      0      0      0      0      0      0      0      1      0      0      0      0      00000
OR1      10110
(22)      0      0      1      0      0      0      0      0      0      0      0      0      0      10111
OR2      10111
(23)      0      0      0      0      0      0      0      0      0      0      1      0      0      00000
JUMP1      11000
(24)      0      0      1      0      0      0      0      0      0      0      0      0      0      11001
JUMP2      11001
(25)      0      0      0      0      0      0      0      0      0      0      1      0      0      00000
JREL1      11010
(26)      0      0      1      0      0      0      0      0      0      0      0      0      0      11011
JREL2      11011
(27)      0      0      0      0      0      0      0      0      0      0      0      1      0      00000
SKI1      11100
(28)      0      0      0      1      0      0      0      0      0      0      0      0      0      00000
RST1      11111
(30)      0      0      0      0      0      0      0      0      0      0      0      0      1      00000
(图18 非常简单CPU的微程序控制器优化后的水平型微指令)

5)、由微操作信号产生该CPU所需的控制信号(剩余部分)
①、所需的控制信号
②、控制信号与微操作的关系
主要原理:根据满足什麽条件时需把信息载入寄存器来确定控制信号发出的时刻,见下图

控制信号      值
ARLOAD      ARPC
PCLOAD      PCDR
PCINC      PCIN
DRLOAD      DRM
ACLOAD      ACDR∨PLUS1∨OR
IRLOAD      IRDR
ALUSEL1      PLUS1
ALUSEL2      PLUS2∨OR
MEMBUS      DRM
PCBUS      ARPC
DRBUS      IRDR∨ACDR∨MDR∨OR∨PLUS1∨PLUS2
READ      DRM
        (图19   非常简单CPU的控制信号值)


第四部分   设计体会

一、实验心得

  这份课程设计是针对《计算机组成原理》的一个延伸。当初,我在学习该课程的过程中,总是把各个部分分开来了解,所以学完之后,总觉得有点欠缺,好像连不起来。但是在做了这个CPU的课程设计之后,我才知道原来一切是这么回事,有种豁然开朗的感觉。
  在暑假做这份作业时,开始有很多不懂的地方,进展得不是很顺利;但是随着思考问题角度的深入,便渐渐地掌握了问题的本源,做起来也更得心应手一些。不过,还是有一些地方想不透彻,所以存在一些错误的地方,希望老师能够帮我圈点出来。总的来讲,我还是非常喜欢有这种教学方法的,希望以后技术性比较强的课程都能设定类似于课程设计的教案,加强我们学生对知识的理解和掌握,而不仅仅局限于课本,我们更希望得到现实技术的操作,这样,我们的学习兴趣也会加深。




二、完成以下四题单选题

1、你认为这样的课程设计(A)
A、很有必要 B、有必要 C、无意见 D、无比要
2、所选择内容难度(B)
A、很难   B、适中   C、无意见 D、大容易
3、你认为本学期所实施的《计算机组成原理》课程改革是否有必要?(B)
A、很有必要 B、有必要 C、无意见 D、无比要
4、你认为经过一个学期的努力是否已实现教学的三个目标?如果不能实现是什么原因造成?教学应该作哪些改进?(C)
A、完全能   B、基本能 C、无意见 D、不可能

第五部分   参考资料

[1]白中英 《计算机组成原理》(第三版•网络版) 北京:科学教育出版社,2000,11
[2]郑存陆 《计算机组成原理讲义》2006,8
[3]John D.Carpinelli《计算机系统组成与体系结构》北京:人民邮电出版社,2003,8
回复(5) | 投票支持
欢迎到yunji137的博客主页看更多内容
共5条回复
guest 发表于 2008-09-09 12:22
#5
晕,雪地裸体跪求完整版!!
guest 发表于 2008-09-08 21:39
#4
真是郁闷到极点,我知道有问题啊,只是没办法的办法,不过你们也.......
guest 发表于 2008-09-08 13:15
#3
计算机学院06本四班的同学普遍认为你的课程设计似乎有问题,哪里出了问题就不方便提出,因为不想大篇幅阐述!~~
guest 发表于 2008-09-08 13:15
#2
这题目理解错了,STO、ADD、OR你直接送到a这个单元里,
而非送到M[a]这个单元里,注意:a和M[a]是有区别的!讲义里有这个例子的!
图片和表格不见是可能因为这个论坛不支持发图片和表格或者要用特殊的格式才能发。

                                        --郑存陆的学生上
yunji137 发表于 2008-09-07 20:12
#1
真是郁闷!为什么发上去的时候图片不见了,表格也变形了呢?看得懂才怪呢
共5条回复

发表关于《《计算机组成原理课程设计》三》的评论

请输入验证码:

本分类其它博客文章

小说阅读网》作品展示

小说阅读网》精品小说

联系我们 | 服务条款 | 隐私保护 | 人员招聘 | 投诉建议 | 友情链接