《第七章 微序列控制单元设计精选文档.ppt》由会员分享,可在线阅读,更多相关《第七章 微序列控制单元设计精选文档.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七章微序列控制单元设计本讲稿第一页,共九十七页微序列控制器:微序列控制器:把控制信号存储在一个查找表把控制信号存储在一个查找表ROMROM,即微代码存储器中。按照正确的次序访问,即微代码存储器中。按照正确的次序访问ROMROM中的内容,查找表中的内容,查找表ROMROM就可以以适当的顺序发就可以以适当的顺序发出控制信号,从而实现处理器指令集中的指令出控制信号,从而实现处理器指令集中的指令。本讲稿第二页,共九十七页几个基本概念几个基本概念1.1.微操作控制信号微操作控制信号:如如:PCLOADPCLOAD、ACINCACINC2.2.微操作:微操作:由微操作控制信号控制实现的最基本操作。由微操
2、作控制信号控制实现的最基本操作。一个微操作是在一组微操作控制信号的控制下实现的。一个微操作是在一组微操作控制信号的控制下实现的。如:如:ARPC ARLOADARPC ARLOAD、PCBUSPCBUS3.3.微指令:微指令:控制完成一组微操作的二进制编码字。控制完成一组微操作的二进制编码字。4.4.微程序或微代码:微程序或微代码:一系列微指令的有序集合。一系列微指令的有序集合。每一条机器指令对应着一段微程序,通过解释每一条机器指令对应着一段微程序,通过解释执行这段微程序,完成指令规定的操作功能。执行这段微程序,完成指令规定的操作功能。本讲稿第三页,共九十七页机器指令机器指令ADDADD(在主
3、存中)(在主存中)一段微程序一段微程序(在控制存储器(在控制存储器ROM中)中)FETCH1FETCH1(0 0)100000000 100000000 微指令微指令FETCH2FETCH2(1 1)001010000 001010000 微指令微指令FETCH3FETCH3(2 2)010001000 010001000 微指令微指令ADD1ADD1(8 8)000001000 000001000 微指令微指令ADD2ADD2(9 9)000000100 000000100 微指令微指令本讲稿第四页,共九十七页7.1.1 微序列控制器的操作1典型微序列控制器的组成 寄存器存储的值与寄存器存储
4、的值与CPUCPU状态图中的一个状态相对状态图中的一个状态相对 应,且当作地址输入到微代码存储器中。应,且当作地址输入到微代码存储器中。存储器的输出是一条微指令,即那个地址对应的存储器的输出是一条微指令,即那个地址对应的 存储单元内容。所有微指令集中组成存储单元内容。所有微指令集中组成CPUCPU的微代的微代 码或微程序。码或微程序。下址产生模块产生所有可能的下一地址或下址,下址产生模块产生所有可能的下一地址或下址,然后从中选择一个正确的下址送入寄存器中。然后从中选择一个正确的下址送入寄存器中。7.1 微序列控制器设计基础本讲稿第五页,共九十七页典型微序列控制器的组成典型微序列控制器的组成本讲
5、稿第六页,共九十七页2微指令的组成微指令由几个域组成,其微指令由几个域组成,其bitbit位可分为两组。位可分为两组。微操作(微序列控制器的微序列部分)微操作(微序列控制器的微序列部分)或者输入到组合逻辑以生成或者输入到组合逻辑以生成CPUCPU 的控制信号,或者直接产生控制信号。的控制信号,或者直接产生控制信号。下一个地址(微序列控制器的序列控制部分)下一个地址(微序列控制器的序列控制部分)用来产生存储到寄存器中的下一个地址,用来产生存储到寄存器中的下一个地址,这些位连同指令的操作码和标志值一起输入这些位连同指令的操作码和标志值一起输入到组合逻辑以产生下一条微指令的地址。到组合逻辑以产生下一
6、条微指令的地址。本讲稿第七页,共九十七页3.微程序控制器的工作过程 启动取指令微程序启动取指令微程序 (PC)MAR (PC)MAR,读出机器指令,读出机器指令IRIR,PCPC增量增量 根据根据IRIR中的操作码,通过微地址形成电路产生该指令中的操作码,通过微地址形成电路产生该指令 的微程序的起始微地址,并送入的微程序的起始微地址,并送入MARMAR中。中。MAR MAR中的微地址经译码、驱动,从被选的控存单元中的微地址经译码、驱动,从被选的控存单元 中取出一条微指令。中取出一条微指令。微指令的操作控制字段经译码或直接产生一组微操作微指令的操作控制字段经译码或直接产生一组微操作 控制信号并送
7、往有关的功能部件,控制其完成所规定控制信号并送往有关的功能部件,控制其完成所规定 的微操作。的微操作。本讲稿第八页,共九十七页 微指令的地址控制字段及有关状态条件送往微地址微指令的地址控制字段及有关状态条件送往微地址 形成电路,产生下条微指令的地址,再去读取并执形成电路,产生下条微指令的地址,再去读取并执 行下条微指令。如此循环,直到一条机器指令的微行下条微指令。如此循环,直到一条机器指令的微 程序全部执行完毕。程序全部执行完毕。一条指令的微程序执行结束,再启动取指令微指令或微一条指令的微程序执行结束,再启动取指令微指令或微程序,读取下条机器指令。根据该指令码形成起始微地程序,读取下条机器指令
8、。根据该指令码形成起始微地址,又转入执行它的一段微程序。址,又转入执行它的一段微程序。本讲稿第九页,共九十七页程序、指令、微程序、微指令、微操作控制信号、微操作的关程序、指令、微程序、微指令、微操作控制信号、微操作的关系系本讲稿第十页,共九十七页4下址的产生四种常用方法:四种常用方法:当前地址加当前地址加1 1:微代码存储器中的下一地址,微代码存储器中的下一地址,即当前地址加即当前地址加1 1。微代码程序在微代码存储器中顺序存放。微代码程序在微代码存储器中顺序存放。(提高可读性、微程序易于调试)(提高可读性、微程序易于调试)本讲稿第十一页,共九十七页 绝对地址:绝对地址:由微代码存储器提供。由
9、微代码存储器提供。映射逻辑映射逻辑 每个微序列控制器必须能够访问正确的执每个微序列控制器必须能够访问正确的执 行周期,这功能可用映射逻辑来实现。行周期,这功能可用映射逻辑来实现。(1)(1)已读取指令的操作码输入到一个已读取指令的操作码输入到一个映射硬件,映射硬件,此硬件将该操作码转换或映射成该指令执行此硬件将该操作码转换或映射成该指令执行 周期的第一条微指令所在的地址;周期的第一条微指令所在的地址;(2)(2)把这一地址装载到寄存器,微序列控制器就把这一地址装载到寄存器,微序列控制器就 能转入到正确的执行过程。能转入到正确的执行过程。本讲稿第十二页,共九十七页 在取指令周期的末端使用一次。在
10、取指令周期的末端使用一次。微子程序微子程序 子程序入口地址:由微代码存储器给出绝对地址。子程序入口地址:由微代码存储器给出绝对地址。返回地址(当前地址加返回地址(当前地址加1 1):存储在微子程序寄存器):存储在微子程序寄存器 或硬件堆栈中,此地址或硬件堆栈中,此地址 用从微子程序中返回。用从微子程序中返回。本讲稿第十三页,共九十七页7.1.2 微指令的格式1典型的微指令格式 选择域:选择域:指明下一条微指令地址的来源指明下一条微指令地址的来源 地址域:地址域:指明一个绝对地址指明一个绝对地址 微操作域:微操作域:一个或多个一个或多个 本讲稿第十四页,共九十七页2微操作的三种编码方法 水平微代
11、码水平微代码微指令太长,大部分微操作位不是有效的。微指令太长,大部分微操作位不是有效的。l 列出列出CPUCPU所要执行的每一个微操作所要执行的每一个微操作 l 将微指令微操作域中的一位分配给每个微操作将微指令微操作域中的一位分配给每个微操作例如:例如:一个一个CPUCPU需要执行需要执行5050个微操作,个微操作,它的每一条微指令的微操作域将占用它的每一条微指令的微操作域将占用5050位。位。本讲稿第十五页,共九十七页 垂直微代码垂直微代码 所有微操作组合成组,组中的每个微操作所有微操作组合成组,组中的每个微操作 被分配一个唯一的编码值。被分配一个唯一的编码值。例如:例如:1616个微操作个
12、微操作 四位二进制来编码四位二进制来编码 微指令位数少,但需要译码器。微指令位数少,但需要译码器。控制信号的直接生成控制信号的直接生成 微代码将微操作组合在一起,不同的是,它微代码将微操作组合在一起,不同的是,它 把控制信号值直接存储在微指令中。把控制信号值直接存储在微指令中。代码的可读性差,调试困难。代码的可读性差,调试困难。本讲稿第十六页,共九十七页7.2 非常简单微序列控制器的设计和实现采用微序列控制器重新设计第六章所讨论的非采用微序列控制器重新设计第六章所讨论的非常简单常简单CPUCPU。指令集、有限状态机、数据通路和指令集、有限状态机、数据通路和ALUALU单元都单元都是相同的,是相
13、同的,CPUCPU内部的数据流也没有变化,只有控内部的数据流也没有变化,只有控制信号的产生方法有所改变。制信号的产生方法有所改变。本讲稿第十七页,共九十七页步骤:1.1.确定基本结构确定基本结构 下地址来源下地址来源 微代码存储器的地址宽度微代码存储器的地址宽度2.2.编写微程序编写微程序 顺序控制部分:地址域、选择域顺序控制部分:地址域、选择域 操作控制部分:微操作域操作控制部分:微操作域3.3.产生微操作控制信号产生微操作控制信号本讲稿第十八页,共九十七页7.2.1基本布局1.非常简单微序列控制器的基本结构本讲稿第十九页,共九十七页2.只用到两种可能的下址方式为什么可以这样做?为什么可以这
14、样做?考虑第六章所示的该考虑第六章所示的该CPUCPU的状态图。的状态图。取指令周期的最后一个状态取指令周期的最后一个状态FETCH3FETCH3可以转到可以转到 四个执行周期中的一个,这必须通过映射输四个执行周期中的一个,这必须通过映射输 入来实现。入来实现。剩余的每一状态都必须转到一个具体的次态,剩余的每一状态都必须转到一个具体的次态,可以通过绝对跳转来实现。可以通过绝对跳转来实现。l操作码映射操作码映射l绝对跳转绝对跳转本讲稿第二十页,共九十七页必须确定必须确定CPUCPU的几件事情:的几件事情:从微代码存储器输出的绝对地址宽度有几位?从微代码存储器输出的绝对地址宽度有几位?CPU CP
15、U的状态图中共有九种状态,每种状态代表的状态图中共有九种状态,每种状态代表 一条微指令,从中选择的话最少需要一条微指令,从中选择的话最少需要4 4位绝对位绝对 地址。既然映射硬件也生成同样宽度的地址,地址。既然映射硬件也生成同样宽度的地址,那么输出的地址就是那么输出的地址就是4 4位宽度。位宽度。多路选择器输出到寄存器的输入、以及寄存器多路选择器输出到寄存器的输入、以及寄存器 输出到微代码存储器的输入,也都是输出到微代码存储器的输入,也都是4 4位宽度。位宽度。本讲稿第二十一页,共九十七页7.2.2 生成正确序列并设计映射逻辑设计控制有限状态机状态转换的微代码。设计控制有限状态机状态转换的微代
16、码。1给有限状态机的每种状态分配一个微代码地址着重考虑:着重考虑:每一执行周期的第一个状态的地址分配每一执行周期的第一个状态的地址分配 (它决定了实现映射功能的逻辑)(它决定了实现映射功能的逻辑)(1)(1)映射函数与映射逻辑映射函数与映射逻辑 映射函数:映射函数:1 1IRIR1.001.00 状态状态ADD1ADD1、AND1AND1、JMP1JMP1和和INC1 INC1 1000 1000、10101010、11001100和和11101110 (即(即8 8,1010,1212和和1414)本讲稿第二十二页,共九十七页 映射逻辑映射逻辑本讲稿第二十三页,共九十七页(2)(2)非常简单
17、微序列控制器的状态地址表非常简单微序列控制器的状态地址表本讲稿第二十四页,共九十七页2 2.生成正确的微代码序列为了无条件转移到一种具体的状态,微序列为了无条件转移到一种具体的状态,微序列 控制器通过地址域和选择域来提供状态的地址。控制器通过地址域和选择域来提供状态的地址。例如:例如:FETCH1 FETCH2FETCH1 FETCH2 0 0号单元:号单元:SEL=0 ADDR=0001SEL=0 ADDR=0001l0 0号单元对应于状态号单元对应于状态FETCH1FETCH1lSEL=0SEL=0使微序列控制器从地址域得到它的下一地址使微序列控制器从地址域得到它的下一地址l把地址域置为把
18、地址域置为00010001,使它转到状态,使它转到状态FETCH2FETCH2所对应所对应 的单元。的单元。本讲稿第二十五页,共九十七页除了除了FETCH3FETCH3,状态图中的每一种状态都可以这么设置。,状态图中的每一种状态都可以这么设置。FETCH3FETCH3必须映射到正确的执行周期,所以要求必须映射到正确的执行周期,所以要求SEL=1SEL=1,表示采用映射地址。表示采用映射地址。本讲稿第二十六页,共九十七页本讲稿第二十七页,共九十七页7.2.3 用水平微代码生成微操作1非常简单CPU的微操作及它们的助记符1-1-微操作发生微操作发生0-0-不发生不发生本讲稿第二十八页,共九十七页2
19、非常简单微序列控制器初步的水平微代码本讲稿第二十九页,共九十七页3非常简单微序列控制器优化后的水平微代码优化微代码:优化微代码:在所有的状态中,在所有的状态中,ARDRARDR和和IRDRIRDR的值是相同的。的值是相同的。用一个输出用一个输出AIDRAIDR来驱动这两个微操作。来驱动这两个微操作。AIDR AIDR组合了两个微操作组合了两个微操作ARDR5.0ARDR5.0和和 IRDR7.6 IRDR7.6本讲稿第三十页,共九十七页本讲稿第三十一页,共九十七页4产生所需的控制信号 ARPC;ARDR5.0PCPC1;PCDR5.0DRMIRDR7.6ACACDR;ACACDR;ACAC1本
20、讲稿第三十二页,共九十七页7.2.4 用垂直微代码生成微操作一、从垂直微代码中生成微操作的一般情况在垂直微代码中,所有的微操作被分组到不在垂直微代码中,所有的微操作被分组到不 同的域中,使得任何状态一个域中最多只有一种同的域中,使得任何状态一个域中最多只有一种 微操作是有效的,然后域中的每个微操作被赋予微操作是有效的,然后域中的每个微操作被赋予 一个唯一的域值。一个唯一的域值。例如:例如:8 8种不同的微操作种不同的微操作 3 3位二进制位二进制 (从(从000000到到111111之间的任何一个值)之间的任何一个值)本讲稿第三十三页,共九十七页 微操作域位从微代码存储器输出到一个译码器,微操
21、作域位从微代码存储器输出到一个译码器,译码器的输出就是在水平微代码中直接产生的微操译码器的输出就是在水平微代码中直接产生的微操作。作。本讲稿第三十四页,共九十七页本讲稿第三十五页,共九十七页二、为非常简单CPU设计垂直微代码 任务:任务:给各种微操作分配不同的域给各种微操作分配不同的域 1.指导性原则指导性原则 (1)(1)对于同一状态下发生的两个不同的微操作,对于同一状态下发生的两个不同的微操作,将它们分配到不同的域中。每个域在一个将它们分配到不同的域中。每个域在一个 周期中只能输出唯一一个微操作的值,如周期中只能输出唯一一个微操作的值,如 果两个微操作要同时出现,则它们不可能果两个微操作要
22、同时出现,则它们不可能 在同一个域中。在同一个域中。(2)(2)必要的话在每个域中包括一个必要的话在每个域中包括一个NOPNOP操作操作 本讲稿第三十六页,共九十七页 (3)(3)分配剩下的微操作以便充分地利用微操作的分配剩下的微操作以便充分地利用微操作的 域位。域位。(4)(4)把修改相同的寄存器的微操作组合在同一个把修改相同的寄存器的微操作组合在同一个 域中域中。2.2.步骤步骤(1)将微操作分组将微操作分组 DRM DRM和和PCINPCIN都在都在FETCH2FETCH2状态下发生,那么状态下发生,那么 这两种微操作必须被分配到不同的域中。这两种微操作必须被分配到不同的域中。则该则该C
23、PUCPU的微操作至少需要两个域,把它的微操作至少需要两个域,把它本讲稿第三十七页,共九十七页 标记为标记为M1M1和和M2M2。包括包括NOPNOP操作在内每个域的微操作如下:操作在内每个域的微操作如下:M1 M2NOPNOPDRMPCIN(FETCH2:DRM,PCPC1)PCINPCIN和和PCDRPCDR都能修改都能修改PCPC值,所以我们现在把值,所以我们现在把PCDRPCDR 也加到也加到M2M2中。中。本讲稿第三十八页,共九十七页 把剩下的微操作任意分配给这两个域,但要注意把剩下的微操作任意分配给这两个域,但要注意把那些改变同一个寄存器值的微操作放到同一个域中。把那些改变同一个寄
24、存器值的微操作放到同一个域中。产生如下的分配产生如下的分配 M1 M2NOPNOPDRMPCINACINPCDRPLUSARPCANDAIDR本讲稿第三十九页,共九十七页(2)(2)每个域有五种微操作,因此每个域需要每个域有五种微操作,因此每个域需要3 3位。位。(3)(3)对这种分配进行一些调整,对这种分配进行一些调整,减少总的位数。减少总的位数。AIDRAIDR:M2M1M2M1 M2 M2的微操作数从的微操作数从5 5变到变到4 4,而,而M1M1的从的从5 5变变 到到6 6。这时,。这时,M1M1仍需要仍需要3 3位,但是位,但是M2M2现在只现在只 需要需要2 2位,微代码的宽度就
25、减少了位,微代码的宽度就减少了1 1位。位。ARPCARPC和和PCDRPCDR :M2M1M2M1 M1 M1:8 8种微操作,需要种微操作,需要3 3位位 M2M2:两种微操作,需要两种微操作,需要1 1位位 总共总共4 4位位(最少)(最少)本讲稿第四十页,共九十七页本讲稿第四十一页,共九十七页三、生成该CPU的最终微代码 本讲稿第四十二页,共九十七页四、增加硬件把这些位值转换为所代表的微操作l M1 M1:把这个域输入到一个:把这个域输入到一个3-83-8译码器中译码器中 例如:例如:输出输出2 2 微操作微操作ARPCARPCl M2 M2:只有:只有1 1位,不需要用译码器,直接驱
26、动位,不需要用译码器,直接驱动PCINPCIN。本讲稿第四十三页,共九十七页本讲稿第四十四页,共九十七页实践视角:毫微指令 毫微存储器与毫微指令毫微存储器与毫微指令本讲稿第四十五页,共九十七页用毫微存储器可以减少微序列控制器中存储器的用毫微存储器可以减少微序列控制器中存储器的总的大小。总的大小。如果如果1010种不同的微指令有完全相同的微操作,那种不同的微指令有完全相同的微操作,那么所有这些微指令可以指向毫微存储器的同一个单元。么所有这些微指令可以指向毫微存储器的同一个单元。例如:例如:一个有一个有128128条微指令和条微指令和3232个不同微操作的个不同微操作的微序列控制器。微序列控制器。
27、水平微代码的微序列控制器水平微代码的微序列控制器 128*32=4,096 128*32=4,096 位存储器位存储器 本讲稿第四十六页,共九十七页假设:这假设:这128128条微指令中只有条微指令中只有1616种不同的微操作组合,种不同的微操作组合,在一个在一个16*3216*32的毫微存储器中存储这的毫微存储器中存储这1616种模式。每条种模式。每条 微指令需要一个微指令需要一个4 4位的域来指向毫微存储器中的一个位的域来指向毫微存储器中的一个 正确的模式。正确的模式。毫微存储器毫微存储器 16*32=512 16*32=512位位 微代码存储器微代码存储器 额外的额外的128*4=512
28、128*4=512位的指针位的指针 共共512512位位512512位位 1,024 1,024位位本讲稿第四十七页,共九十七页7.2.5 从微代码直接产生控制信号1.直接输出控制信号 微序列控制器为每个控制信号保留一位,以微序列控制器为每个控制信号保留一位,以 代替水平微代码设计中的微操作和垂直微代码代替水平微代码设计中的微操作和垂直微代码 设计中的设计中的M1M1和和M2M2。对微代码存储器的每个字来说,如果信号对微代码存储器的每个字来说,如果信号 有效,则相应的控制位置有效,则相应的控制位置1 1,否则置,否则置0 0。本讲稿第四十八页,共九十七页例如:例如:FETCH2:DRM和和PC
29、PC+1 DRM PCPC+1PCPC+1:使:使PCINCPCINC信号有效信号有效 微指令的其他信号置微指令的其他信号置0 0l 使使READREAD信号有效信号有效 以便从存储器里输出数据以便从存储器里输出数据l 使使MEMBUSMEMBUS信号有效信号有效 使此数据输入到内部系统总线上使此数据输入到内部系统总线上l 使使DRLOADDRLOAD信号有效信号有效 以便把数据从总线上装载到以便把数据从总线上装载到DRDR中中本讲稿第四十九页,共九十七页2.非常简单微序列控制器直接产生控制信号的微代码本讲稿第五十页,共九十七页3.优化直接生成控制信号的微操作DRLOADDRLOAD、MEMB
30、USMEMBUS和和READREAD信号总有相同的值,把信号总有相同的值,把 这些信号组合起来。用这些信号组合起来。用1 1位(位(DMRDMR)驱动这)驱动这3 3个信号。个信号。本讲稿第五十一页,共九十七页直接产生控制信号与前两种方法相比:直接产生控制信号与前两种方法相比:优点:优点:不需要额外的硬件将微代码存储器的输出转不需要额外的硬件将微代码存储器的输出转 换成控制信号换成控制信号缺点:缺点:可读性差,难于调试。可读性差,难于调试。本讲稿第五十二页,共九十七页7.3.1 修改状态图考虑:条件跳转的取指令周期末尾考虑:条件跳转的取指令周期末尾 设计两种新的状态:设计两种新的状态:JMPZ
31、1JMPZ1和和JPNZ1JPNZ1 使使FETCH3FETCH3映射到这两个状态上映射到这两个状态上 这两种状态再依据这两种状态再依据Z Z的值转移到正确的流程上的值转移到正确的流程上7.3 相对简单微序列控制器的设计和实现设计一个用于相对简单设计一个用于相对简单CPUCPU的微序列控制单元。的微序列控制单元。类似非常简单类似非常简单CPUCPU,这一设计用到的指令集、数据通,这一设计用到的指令集、数据通 道、以及道、以及ALUALU都与硬布线控制设计中的相同。都与硬布线控制设计中的相同。本讲稿第五十三页,共九十七页本讲稿第五十四页,共九十七页7.3.2 设计顺序硬件和微代码 1增加完成条件
32、分支的能力新增加的两个状态新增加的两个状态JMPZ1JMPZ1和和JPNZ1JPNZ1能根据能根据Z Z的值的值 正确转移到两个下一地址之一:正确转移到两个下一地址之一:l 条件满足:条件满足:转移到转移到ADDRADDR域所指的地址域所指的地址l 条件不满足条件不满足 :转移到微代码存储器的下一地址转移到微代码存储器的下一地址 (当前地址加(当前地址加1 1)2微序列控制器的基本结构有三种可能的下一地址。有三种可能的下一地址。用一个两输入控制端的多路选择器作出选择。用一个两输入控制端的多路选择器作出选择。本讲稿第五十五页,共九十七页4组合逻辑电路本讲稿第五十六页,共九十七页3相对简单微序列控
33、制器的状态分配 映射函数和映射逻辑映射函数和映射逻辑 状态图有状态图有3939种状态,要一个种状态,要一个6 6位的地址。位的地址。映射函数:映射函数:IRIR3.0003.000本讲稿第五十七页,共九十七页相对简单微序列控制器的状态分配相对简单微序列控制器的状态分配 本讲稿第五十八页,共九十七页4下址的产生状态状态JMPZ1JMPZ1和和JPNZ1JPNZ1各自都用到两个下址之一。各自都用到两个下址之一。分两步实现:分两步实现:(1)(1)用一个多路选择器选择所期望的条件用一个多路选择器选择所期望的条件 Z Z和和Z Z可能在可能在JMPZ1JMPZ1和和JPNZ1JPNZ1状态下用到,状态
34、下用到,也可以把一个硬布线的也可以把一个硬布线的1 1作为无条件跳转的作为无条件跳转的 输入,多路选择器选择其中的一个值作为条输入,多路选择器选择其中的一个值作为条 件值输出。件值输出。本讲稿第五十九页,共九十七页条件值条件值 微代码存储器提供条件选择信号用来决定使微代码存储器提供条件选择信号用来决定使 用哪个条件用哪个条件 本讲稿第六十页,共九十七页(2)(2)用组合逻辑将这些条件值,连同微序列控制器提供的用组合逻辑将这些条件值,连同微序列控制器提供的 一种分支类型,转换成恰当的选择信号以选择下一地一种分支类型,转换成恰当的选择信号以选择下一地 址的正确源。址的正确源。给定分支类型给定分支类
35、型 分支类型的形式:分支类型的形式:IF(condition)THENNextAddress=SOURCE1ELSENextAddress=SOURCE2或者是或者是REGARDLESSOFconditionNextAddress=SOURCE本讲稿第六十一页,共九十七页 确定准确的分支类型确定准确的分支类型 映射和无条件转移的处理很容易,有条件的跳转映射和无条件转移的处理很容易,有条件的跳转 就取决于微代码的布局。就取决于微代码的布局。JMPZ1JMPZ1和和JPNZ1JPNZ1会转移到两个地址之一:会转移到两个地址之一:一个分支地址、当前地址加一个分支地址、当前地址加1 1 一种分支类型:
36、一种分支类型:IF(condition)THENNextAddress=ADDRELSENextAddress=CurrentAddress+1本讲稿第六十二页,共九十七页本讲稿第六十三页,共九十七页 根据分支类型和条件值,为下址多路选择器设计根据分支类型和条件值,为下址多路选择器设计 出产生选择信号的逻辑。出产生选择信号的逻辑。表中列出了期望的值,它导致:表中列出了期望的值,它导致:S1=BTS1=BT,S0=BTS0=BT(条件值)(条件值)本讲稿第六十四页,共九十七页本讲稿第六十五页,共九十七页5实现微代码的顺序部分本讲稿第六十六页,共九十七页7.3.3 用水平微代码完成设计 一、形成微
37、操作表考察每种状态,列出微操作。考察每种状态,列出微操作。把把2222种微操作合并为微代码的几个域,种微操作合并为微代码的几个域,然后为这些域赋值。然后为这些域赋值。本讲稿第六十七页,共九十七页相对简单微序列控制器的微操作相对简单微序列控制器的微操作本讲稿第六十八页,共九十七页二、生成CPU的控制信号本讲稿第六十九页,共九十七页本讲稿第七十页,共九十七页三、相对简单CPU的部分控制信号值 本讲稿第七十一页,共九十七页介绍两种利用冗余来减少控制单元所需的微指令介绍两种利用冗余来减少控制单元所需的微指令数的方法。数的方法。7.4 减少微指令数1.用微子程序把重复的微操作合并成一个微指令块,这个微指
38、令块可供两个或更多个执行周期访问。2.用微代码的跳转来访问可供两个或多个周期共享 的微指令。本讲稿第七十二页,共九十七页7.4.1 微子程序微子程序微子程序:微码中供多个周期执行的一组动作序列。微码中供多个周期执行的一组动作序列。优点:优点:减少微代码所需的存储单元数量减少微代码所需的存储单元数量 缺点:缺点:微序列控制器的硬件必须增强以实现微子微序列控制器的硬件必须增强以实现微子 程序的调用和返回程序的调用和返回 为了说明微子程序是怎样工作的,我们修改为了说明微子程序是怎样工作的,我们修改 相对简单相对简单CPUCPU的设计。的设计。1.把一些状态用微子程序实现本讲稿第七十三页,共九十七页考
39、虑:考虑:状态状态LDAC1LDAC1、LDAC2LDAC2、LDAC3LDAC3分别和状态分别和状态STAC1STAC1、STAC2 STAC2、STAC3STAC3执行相同的微操作执行相同的微操作 (从存储器获得一个(从存储器获得一个1616位的地址,并把它存入位的地址,并把它存入ARAR中)中)LDAC1、STAC1:DRM,PCPC1,ARAR1LDAC2、STAC2:TRDR,DRM,PCPC1LDAC3、STAC3:ARDR,TR本讲稿第七十四页,共九十七页 修改最初的设计,把这些状态用一个微子程序实现。修改最初的设计,把这些状态用一个微子程序实现。增加两个哑状态:增加两个哑状态:
40、LDAC0LDAC0和和STAC0STAC0l 当当LDACLDAC或或STACSTAC指令译码时,指令译码时,FETCH3FETCH3映射到这两映射到这两 个状态中的一个。个状态中的一个。l 两个哑状态不执行微操作,只是去调用微子程两个哑状态不执行微操作,只是去调用微子程 序。序。l 当完成时,微子程序返回到下一地址。当完成时,微子程序返回到下一地址。(包含(包含LDAC4LDAC4或或STAC4STAC4的地址)的地址)本讲稿第七十五页,共九十七页 用微子程序修改用微子程序修改LDACLDAC和和STACSTAC指令的执行周期指令的执行周期本讲稿第七十六页,共九十七页 相对简单相对简单CP
41、UCPU修改后的状态分配修改后的状态分配 SUB1SUB1、SUB2SUB2、SUB3SUB3分分 别与别与LDAC1LDAC1(STAC1STAC1)、)、LDAC2LDAC2(STAC2STAC2)、)、LDAC3LDAC3(STAC3STAC3)执行执行同样的微操作。同样的微操作。本讲稿第七十七页,共九十七页2.修改微序列控制器 微子程序的地址由微代码存储器的地址域微子程序的地址由微代码存储器的地址域ADDRADDR 输出提供。输出提供。微序列控制器必须将返回地址存储起来,一旦微序列控制器必须将返回地址存储起来,一旦 微子程序结束,它才能继续执行。微子程序结束,它才能继续执行。进行如下修
42、改:进行如下修改:增加一个微子程序寄存器以保存返回地址增加一个微子程序寄存器以保存返回地址 (当前地址加(当前地址加1 1)本讲稿第七十八页,共九十七页4本讲稿第七十九页,共九十七页 修改下一地址生成硬件,把微子程序寄存器包括修改下一地址生成硬件,把微子程序寄存器包括 进去,作为产生下一地址的一个可能的源。进去,作为产生下一地址的一个可能的源。修改下一地址多路选择器的选择逻辑,使之能够修改下一地址多路选择器的选择逻辑,使之能够 考虑可能的返回地址。这个逻辑也必须产生一个控考虑可能的返回地址。这个逻辑也必须产生一个控 制微子程序寄存器的装载信号。制微子程序寄存器的装载信号。必须扩充分支转移类型的
43、列表,使之包括微子程必须扩充分支转移类型的列表,使之包括微子程 序调用和返回的类型。序调用和返回的类型。必须修改微代码,使之能够正确的访问微子程序。必须修改微代码,使之能够正确的访问微子程序。本讲稿第八十页,共九十七页修改后的微序列控制器硬件修改后的微序列控制器硬件 本讲稿第八十一页,共九十七页3.修改分支转移类型 修改后有四种分支转移类型:修改后有四种分支转移类型:l 条件转移条件转移l 无条件映射无条件映射l 微子程序调用微子程序调用l 微子程序返回微子程序返回 把把BTBT扩充为两位,以便于在四种类型中进行选择。扩充为两位,以便于在四种类型中进行选择。本讲稿第八十二页,共九十七页相对简单
44、微序列控制器修改后的分支类型相对简单微序列控制器修改后的分支类型 本讲稿第八十三页,共九十七页 产生下一地址多路选择器的控制信号产生下一地址多路选择器的控制信号S S1 1和和S S0 0以及微以及微 子程序寄存器的装载信号子程序寄存器的装载信号L L:S1BT0S2BT1(BT0条件值条件值)LBT1BT0本讲稿第八十四页,共九十七页4.修改执行周期微代码相对简单微序列控制器修改后的微指令相对简单微序列控制器修改后的微指令000000本讲稿第八十五页,共九十七页7.4.2 微代码跳转 1.修改状态图无条件转移和条件转移指令有几个状态执行无条件转移和条件转移指令有几个状态执行 同样的微操作。同
45、样的微操作。修改状态图使这些指令可以直接访问相同的修改状态图使这些指令可以直接访问相同的 状态。一个状态集将执行跳转,而另一个状态集状态。一个状态集将执行跳转,而另一个状态集 将处理不发生跳转的条件转移,于是这些周期将将处理不发生跳转的条件转移,于是这些周期将 会转移到正确的状态。会转移到正确的状态。本讲稿第八十六页,共九十七页JUMP1:DRM,ARAR+1JUMP2:TRDR,DRMJUMP3:PCDR,TRJMPZ:当当Z=1时:时:JMPZY1:DRM,ARAR1JMPZY2:TRDR,DRMJMPZY3:PCDR,TR当当Z=0时:时:JMPZN1:PCPC1JMPZN2:PCPC1
46、JPNZ指令的状态:指令的状态:当当Z=0时:时:JPNZY1:DRM,ARAR1JPNZY2:TRDR,DRMJPNZY3:PCDR,TR当当Z=1时:时:JPNZN1:PCPC1JPNZN2:PCPC1本讲稿第八十七页,共九十七页JUMPJUMP、JMPZJMPZ和和JPNZJPNZ指令修改后的状态图指令修改后的状态图本讲稿第八十八页,共九十七页2.相对简单微序列控制器进一步修改后的微代码 本讲稿第八十九页,共九十七页7.5.1 指令集的复杂性1.随着指令条数的增加,产生控制信号的硬件复 杂性也随之增加。例如:例如:越来越多的指令会导致越来越多的发出越来越多的指令会导致越来越多的发出累加器
47、装载信号的微操作,于是就增加累加器装载信号的微操作,于是就增加了产生这一控制信号需要的逻辑。了产生这一控制信号需要的逻辑。对硬布线控制来说有更多状态要发出这些微对硬布线控制来说有更多状态要发出这些微 操作,会导致用来生成寄存器装载、加操作,会导致用来生成寄存器装载、加1 1以以7.5 微程序控制和硬布线控制的比较本讲稿第九十页,共九十七页 清除信号所需的组合逻辑的增加。清除信号所需的组合逻辑的增加。对水平型的微序列控制器来说每个微操作对应一位对水平型的微序列控制器来说每个微操作对应一位 微代码。使同一个微操作更加频繁地发出,这不会微代码。使同一个微操作更加频繁地发出,这不会 改变产生实际控制信
48、号的组合逻辑的复杂性,因为改变产生实际控制信号的组合逻辑的复杂性,因为 对每个状态来说只需检查同一位。然而,拥有更多对每个状态来说只需检查同一位。然而,拥有更多 的导致同一个寄存器装载的不同微操作,将会增加的导致同一个寄存器装载的不同微操作,将会增加 逻辑的复杂性,因为会有更多的微代码位需要检查。逻辑的复杂性,因为会有更多的微代码位需要检查。本讲稿第九十一页,共九十七页 垂直型微序列控制器控制逻辑的复杂性也会增加。垂直型微序列控制器控制逻辑的复杂性也会增加。使同一寄存器装载的数目增多的微操作,导致的是使同一寄存器装载的数目增多的微操作,导致的是 组合起来以产生装载信号的微代码位数的增加。微组合
49、起来以产生装载信号的微代码位数的增加。微 操作的个数越多,需要的译码器的个数或位数就越操作的个数越多,需要的译码器的个数或位数就越 多,因为译码器要把这些微操作域转变成相应的微多,因为译码器要把这些微操作域转变成相应的微 操作。操作。对于直接生成控制信号的微序列控制器来说增加的对于直接生成控制信号的微序列控制器来说增加的 微操作并不需要增加硬件。不管多少微操作要生成微操作并不需要增加硬件。不管多少微操作要生成 该信号,每个控制信号只对应微代码中的一位。该信号,每个控制信号只对应微代码中的一位。本讲稿第九十二页,共九十七页7.5.2 修改的容易度修改的容易度:修改的容易度:指指CPUCPU设计的
50、可扩展性设计的可扩展性 硬布线控制单元需要修改硬件来扩充硬布线控制单元需要修改硬件来扩充CPUCPU 微代码控制单元常常只需改变微程序微代码控制单元常常只需改变微程序 修改微代码比重新设计硬件要容易的多。修改微代码比重新设计硬件要容易的多。7.5.3 时钟速度硬布线硬布线CPUCPU运行的速度通常比微代码控制运行的速度通常比微代码控制CPUCPU的要快。的要快。本讲稿第九十三页,共九十七页IntelIntel公司的奔腾微处理器(大部分)使用的是微公司的奔腾微处理器(大部分)使用的是微代码控制。代码控制。1.内部组成7.6 实例:一个(大部分是)微代码的CPU 奔腾微处理器本讲稿第九十四页,共九