首页> 中国专利> 中央处理器或微控制器的数据相关判别及选择传递电路

中央处理器或微控制器的数据相关判别及选择传递电路

摘要

一种用于精简指令集流水线结构的微控制器的数据相关判别电路及选择传递电路,数据相关判别电路包括两个地址比较器,分别用于把读操作数阶段及执行阶段的指令中的操作数地址与写结果阶段的指令中的目标地址进行比较,数据选择传递电路根据数据相关判别电路的比较结果把来自微控制器中的累加器、随机存取存储器、指令译码器。写结果寄存器和数学逻辑单元的选择性地输出到数学逻辑单元。

著录项

  • 公开/公告号CN1300005A

    专利类型发明专利

  • 公开/公告日2001-06-20

    原文格式PDF

  • 申请/专利权人 杭州华盛微电子有限公司;

    申请/专利号CN99124243.2

  • 发明设计人 谢卫国;严晓浪;滕强华;

    申请日1999-12-13

  • 分类号G06F9/28;

  • 代理机构上海专利商标事务所;

  • 代理人张政权

  • 地址 310012 浙江省杭州市文二路385号805室

  • 入库时间 2023-12-17 13:58:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-02-20

    未缴年费专利权终止 IPC(主分类):G06F9/38 授权公告日:20040505 终止日期:20111213 申请日:19991213

    专利权的终止

  • 2010-12-01

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/38 变更前: 变更后: 申请日:19991213

    专利权人的姓名或者名称、地址的变更

  • 2004-05-05

    授权

    授权

  • 2003-09-03

    专利申请权、专利权的转移专利申请权的转移 变更前: 变更后: 登记生效日:20030709 申请日:19991213

    专利申请权、专利权的转移专利申请权的转移

  • 2001-06-20

    公开

    公开

  • 2000-06-07

    实质审查请求的生效

    实质审查请求的生效

查看全部

说明书

本发明涉及精简指令集流水线结构的中央处理器(CPU)或微控制器(MCU),尤其涉及微控制器中的数据相关判别及选择传递电路。

在现代微电脑芯片设计中,精简指令集流水线结构越来越流行,采用流水线结构的目的是提高执行速度。现举例来说明。在一定的工艺技术条件下,如果一个微电脑芯片执行一条指令所需的平均时间为1μs,若不采用流水线结构,则其执行速度为平均1条指令/1μs;若采用4阶段的流水线结构,则其执行速度为平均4条指令/1μs。现以4阶段流水线结构为例来说明精简指令集流水线结构微控制器的工作原理。

参考图1来说明精简指令集流水线结构微控制器的工作原理。

第一阶段,取指令阶段(IF阶段):程序计数器101提供一个地址P1给指令只读存储器102。指令只读存储器102将输出一条与此地址相对应的指令向量P2。该指令向量包括操作数或操作数地址、目标地址及操作控制码等。

第二阶段,读操作数阶段(RD阶段):指令向量P2经指令寄存器103延时一个时钟周期后通过该寄存器103的输出端103a传送给指令译码器105。该译码器105将输入的指令向量译码后输出各种微代码向量P7、P8、P9、P10、P11等。向量P7、P8分别为两个操作数的地址。根据这些操作数地址,从随机存取存储器(RAM)107中取出相应的操作数P13、P14,并输送到数据选择传递电路109的输入端。数据选择传递电路109根据来自数据相关判别电路108的控制向量P15,选择两个适当的操作数并通过其输出端P16、P17输送给数学逻辑单元111。

第三阶段,执行运算阶段(EX阶段):数学逻辑单元(ALU)111根据操作控制代码P11,对操作数P16、P17进行相应的操作运算,并将运算结果通过其输出端111a输送给写结果寄存器106。

第四阶段,写结果阶段(WR阶段):将存在写结果寄存器106中的运算结果通过其输出端106a写入到RAM107中。

上述四阶段流水线结构的操作可用下表一来观察。

在周期0,指令1在取指令阶段,此时指令1已从指令存储器102中取出。在周期1,指令1移到读操作数阶段,根据指令1中规定的地址,读取操作数A、B。此时,指令2进入取指令阶段。在周期2,指令1进入执行阶段,将操作码提供给数学逻辑单元111并将执行规定的操作运算;指令2移到读操作数阶段,指令3进入取指令阶段。最后,在周期3,指令1进入写结果阶段,将数学逻辑单元111的运算结果写入到目标地址规定的存储单元中。

表一

 周期 取指令阶段 读操作数阶段 执行阶段 写结果阶段    0    指令1    1    指令2    指令1    2    指令3    指令2    指令1    3    指令4    指令3    指令2    指令1    4    指令5    指令4    指令3    指令2

从上述流水线图表中,可以看到,指令2与3中的操作数正在或已被读取时,指令1的结果被写入到存储单元中。如果指令2与3在读操作数或执行指令的阶段需要用指令1的运算结果,那么指令1的运算结果就必须被提前传递到数学逻辑单元111的输入端,否则,就会发生“数据灾难”(DATAHAZARD)或得到错误的结果。例如,若指令2要用指令1的结果,那么在周期3,指令1的结果在被写入存储器的同时必须被向前转送到指令2的执行阶段。(这种数据转送是通过下列方法来实现的:将读操作数阶段和执行阶段的操作数地址或位置与写结果阶段的目标地址或位置进行比较,并用一组多路选择开关将适当的操作数据传递给数学逻辑单元111。

考虑下列程序片段:

SUB A,B,C    ----A-B,结果存放到C

ADD D,C,F    ----D+C,结果存放到F

指令X

指令Y

上述程序片段的执行次序可用下表二的流水线图表来表示。

表二

 周期  取指令阶段 读操作数阶段   执行阶段  写结果阶段    0 SUB A,B,C    1 ADD D,C,F SUB A,B,C    2    指令X ADD D,C,F SUB A,B,C    3    指令Y    指令X ADD D,C,F SUB A,B,C

在周期3中,A-B的结果被写入C。可是在执行阶段,C却被用来计算D+C。因此,正常的读操作数路径必须被绕开,并必须将写结果阶段中的C值传递到执行阶段的数学逻辑单元的输入端。否则,就得不到预期的结果。

在复杂指令集微控制器中,由于相邻指令的执行在时间上是互不重叠的,即在当前这条指令执行完毕之后,下一条指令才被从指令存储器中取出并开始执行。但在精简指令集流水线结构微控制器中,由于相邻指令的执行在时间上是相互重叠的,如果某一条指令的操作数是相邻前一条或二条指令的执行结果(这种情况称为数据相关),那么就必须将这一个结果向前传递到执行阶段,否则,就会发生所谓的“数据灾难”(Data Hazard),也就不可能得到期望的运算结果。为了实现各阶段之间数据的正确传递,需要将读操作数阶段的指令和执行阶段的指令中的操作数地址与写结果阶段的指令中的目标地址进行比较;然后用比较的结果所产生的信号来控制一组多路选择开关,从而将适当的操作数传送到数学逻辑单元的数据输入口。为了准确无误地实现这种数据传递,就必须要用数据相关判别电路来判别相邻指令是否具有数据相关性。

目前,在普通的精简指令集流水线结构的控制器中所用的数据相关判别电路中,需要用4个地址比较器再加上其它逻辑组合及时序电路。

本发明提出了一种新的指令数据相关判别电路,在该电路中,只用了2个地址比较器,其余部分的电路也比过去的技术简单。

本发明的目的在于简化电路,提高可靠性,并缩小芯片面积,降低生产成本。本发明设计的4阶段流水线结构微控制器中数据相关判别电路仅采用2个地址比较器,而过去的技术需要用4个地址比较器。

从以下对本发明更详细的描述并结合附图将使本发明的目的、特征和优点变得更加明显起来,其中:

图1是说明已有技术的精简指令集流水线结构微控制器的工作原理的图。

图2是依据本发明的一个实施例的流水线结构微控制器的数据相关判别及选择传递电路的方框图。

图3是说明使用依据本发明的精简指令集流水线结构微控制器的工作原理图。

本发明提出了一种新的应用于流水线结构微控制器或中央处理器的数据相关判别及选择传递电路。

本发明提供了一种新的精简指令集流水线结构的微控制器,该微控制器包括一数据相关判别电路和一数据选择传递电路,其中数据相关判别电路包括第一和第二地址比较器,第一地址比较器用于把微控制器的读操作数阶段的指令中的操作数地址与写结果阶段的指令中的目标地址进行比较,第二地址比较器用于把微控制器的执行阶段的指令中的操作数地址与写结果阶段的指令中的操作数地址进行比较,数据选择传递电路用于根据数据相关判别电路的比较结果把来自微控制器中的累加器、随机存取存储器、指令译码器、写结果寄存器和数学逻辑单元的选择性地输出到数学逻辑单元。

本发明所涉及的微控制器的指令长度定义利用三个指令定义区域,其中用同一指令定义区域来规定立即数、操作数地址或目标地址,用另一指令定义区域来规定不同操作运算的操作码,以及用还有一个指令定义区域来规定用于识别指令中的操作数地址或位置及目标地址或位置从而控制精简指令集流水线结构中流水线各阶段之间的数据传递的识别控制码。

例如,一种指令长度为17位,其中把指令中的三位作为识别指令中的操作数地址或位置及目标地址或位置从而控制所述精简指令集流水线结构中流水线各阶段之间的数据传递的识别控制码;把该指令中的八位作为指令所执行的立即数、操作数地址或目标地址;以及把该指令中的六位作为规定不同操作运算的操作码。

例如,对于数学逻辑或循环移位运算,指令中的最低8位(第0位到第7位)表示立即数、操作数地址或目标地址;第8位到第13位表示操作码;第14位到第16位用来识别指令中操作数位置及目标位置。当第16位为‘1’时,表示有一个操作数从累加器中读出;当第16位为‘0’时,表示无操作数来自累加器。当第15位为‘1’时,表示有一个操作数从RAM中读取,当第15位为‘0’时,表示无操作数从RAM中读取。当第14位为‘1’时,表示目标是在RAM单元中,当第14位为‘0’时,表示写结果的目标是累加器。当然,其它形式的指令定义方案对本领域内的技术人员来说也是明显的,但为了清楚,以如上的指令定义方案为例来描述本发明,不应把此作为对本发明的限制。

本发明的技术方案可用图2来说明。参考图2,数据相关判别电路的各路输入信号分别为处于RD阶段的指令的最高三位(第14位到第16位)[图2中的n1(或i16)、n5(或i15)和n3(或i14)],最低8位(第0位到第7位)[即图2中的n7或i(7:0)],时钟信号n4(或clk)及控制信号n2(或e_alu)、n6(或w_alu)。信号e_alu、w_alu分别代表EX阶段及WR阶段指令的操作类别。例如,当e_alu或w_alu为‘1’时,表示相应指令执行的是数学、逻辑或循环移位操作;否则,表示相应指令执行的是其它操作(如跳转控制等)。

信号i14经寄存器REG1,延时一个时钟周期后输出信号n9及其反向信号n8;n9经寄存器REG3再延迟一个时钟周期后输出n15及反向信号n14。在数据选择传递电路209中,输入信号n19到n23分别为5个不同阶段、不同来源的数据;n19为写结果阶段的运算结果w_result;n20为执行阶段的运算结果e_result;n21为来自RAM的数据;n22为来自累加器的数据;n23为立即数。

根据前面关于i14、i15、i16的定义及流水线结构微控制器工作原理的叙述并结合图2,可以知道,当n8=‘1’时,表示EX阶段的写结果目标为累加器,当n14=‘1’时,表示WR阶段的写结果目标为累加器。当n1、n2、n8同时都等于‘1’时,则与门AND1的输出n12=‘1’;这表明RD阶段指令的来自累加器的操作数是EX阶段指令的运算结果,故必须将此运算结果提前传递给ALU 211的A口,否则将得出错误的结果。n12连接到多路选择器(MUX)1的控制端。因此时n12=‘1’,故EX阶段的运算结果n20(e_result)被传送到MUX1的输出端n24。因为n12=‘1’时,n25也等于‘1’,故e_result进而被传送到MUX 5的输出端n27。而n27将被传送到ALU 211的A口。同理,当n1、n6、n14同时为‘1’时,AND3的输出n18=‘1’,这表示RD阶段指令的来自累加器的操作数是WR阶段指令的运算结果。此时,如果n12=‘0’,则WR阶段指令的运算结果n19(w_result)将被传送到ALU211的A口。如果n12、n18同时等于‘1’,那么只有e_result被传送到ALU211的A口。这从图2所示的电路是很容易看出的。

继续参考图2,RD阶段指令中的地址n7(这里及以下所说的地址可以是操作数的地址,也可以是目标地址),与EX阶段指令中的地址n11输入到地址比较器COM1。此时,如果n2(即e_alu)为‘1’,则COM1将对上述两个地址进行比较,如果这两个地址相同,则比较器的输出n10=‘1’,否则n10=‘0’。

当n9=‘1’时,表示EX阶段指令的写结果目标为某一RAM单元。与此类似,当n15=‘1’时,表示W阶段指令的写结果目标为某一RAM单元。当n9、n5、n10同时都为‘1’时,则n13=‘1’,这表明RD阶段指令中的来自RAM单元的操作数是EX阶段指令的运算结果。故必须将此结果提前传送到ALU211的B口,否则,将会产生“数据灾难”(Data Hazard),从而得到错误的结果。

当n13=‘1’时,MUX3将e_result传送到输出端n30。因此时也等于‘1’,MUX 6选择n30,故e_result进而被送到其输出端n32并被送到ALU 211的B口。同理,如果n15、n5、n16同时等于‘1’,则n28=‘1’,这表明RD阶段指令中的来自RAM单元的操作数是WR阶段指令中的运算结果。此时,如果n13=‘0’,则w_result将被传送到ALU 211的B口。如果n13、n28同时等于‘1’,那么只有e_result被传送到ALU 211的A口。

如上所述,本发明与背景技术相比所具有的有益效果在于具有下列优点:电路更加简单,因而更加可靠;采用本发明的精简指令集流水线结构微控制器的芯片面积将相应缩小,因而成本也将随之降低。

现参考图3来说明在精简指令集流水线结构微控制器中应用本发明的实现方式。

(1)取指令阶段(时钟周期0):程序计数器201根据控制单元204输出的控制信号Q3,输出指令地址Q1。指令存储器202根据地址Q1输出对应的指令向量Q2(指令长度为17位)。

(2)读操作数阶段(时钟周期1):指令向量Q2经指令寄存器203延时一个时钟周期后通过该指令寄存器的输出端203a传送给指令译码器205。该指令译码器205将输入的指令向量译码后输出各种不同的微代码向量Q7、Q9、Q10、Q11。数据相关判别电路208根据来自指令译码器205的各种微代码向量,来判别在指令流水线中各阶段的数据的相关性,并据此输出数据选择传递控制代码向量Q15。数据选择传递电路209,根据控制代码向量Q15,从下列5个不同阶段、不同来源的数据中选出2个适当的数据并分别传递给数学逻辑单元(ALU)211的A口与B口:

a.数学逻辑单元211在其输出端211a处的运算结果输出;

b.累加器212的输出Q13;

b.写结果寄存器206在输出端206a处的输出:

d.随机存取存储器207的数据输出Q14;

e.指令译码器205的输出向量Q9(立即数)。

(3)执行阶段:ALU211根据操作控制码向量Q18对输入操作数Q16、Q17进行相应的运算,并从其输出端211a把运算结果输送给写结果寄存器206。

(4)写结果阶段:将存在写结果寄存器206中的运算结果通过其输出端206a写入随机存取存储器207或累加器212中。

以下是本发明的两个具体实施例子。

例一,考虑下列2条指令:

ADD A,X

SUB[m1],A

第一条指令所执行的运算是将立即数X与累加器A中的数据相加,并将结果存于A中。第二条指令所执行的操作是以m1为地址的RAM单元中的数据与累加器A中的数据相减,并将结果存于以m1为地址的RAM单元中。在此实例中,由于第2条指令中的操作数(即累加器中的数据)是第一条指令的运算结果,所以这两条指令之间存在着数据相关性。于是,当第二条指令处于读操作数阶段时,数据相关判别电208将据此而输出一个相应的数据选择控制代码Q15,此代码驱使数据选择传递电路209将其输出端211a处第一条指令的运算结果作为Q16直接前递(forwarding)给数学逻辑单元211的A口。

例二,考虑下列三条指令:

ADD[m1],A

INC[m2]

SUB A,[m2]

第一条指令执行的是以m1为地址的RAM单元中的数据与累加器中的数据相加并将结果存在以m1为地址的RAM单元中。第二条指令执行的是以m2为地址的RAM单元中的数据加1并将结果存在以m2为地址的RAM单元中。第三条指令所执行的是累加器中的数据与以m1为地址的RAM单元中的数据相减,并将结果存在累加器中。在此实例中,第一条指令与第二条指令无数据相关性,第二条指令与第三条指令也无数据相关性。但第一条指令与第三条指令存在着数据相关性。第三条指令的操作数[m1](即以m1为地址的RAM单元中的数据)是第一条指令的运算结果。当第三条指令处于读操作数阶段时,第一条指令处于写结果阶段,但此时其运算结果尚未写入以m1为地址的RAM单元中。于是,在第一条指令处于读操作数阶段时,数据相关判别电路208输出一个相应的数据选择控制代码Q15,此代码驱使数据选择传递电路209将其输出端206a处第一条指令的运算结果作为Q17传送到ALU211的B口。

上述例子仅是本发明的特定实例,决不能视为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号