一般地说,本发明与微计算机有关。更确切地说,本发明涉及改进微计算机的指令周期,以有利于提高微计算机的处理速度。 现代单片微处理机通常使用流水线结构以便使指令的取周期和执行期相重叠。在取周期时,指令从存贮器中取出。每一条指令由一个操作码(op Code)和一个操作数组成。操作码存在只读存贮器中,例如可编程序只读存贮器(pROM)中。操作数也存在只读存贮器中,它可以指示存在随机存取存贮器(BAM)中的可变量。在常规的流水线结构中,取操作码和取操作数是在不同的指令执行周期完成的以下称作“指令周期”。例如,在一个器位的微计算机中为了取由一字节操作码和一字节操作数所构成的二字节指令,需要二个指令周期。在这种情况下,每个指令周期需要三个机器时钟周期。因此,这种常规的流水线结构的效率是不令人满意的。
一般来,取操作码或操作数的取周期比指令周期短。这就意味着,在执行周期中存在一段不执行任何取操作的时间。如果在这段时间内能取下一条指令元素,则机器的运行时间就能缩短。
因此,提供一个具有改进的取周期以缩短指令周期的微计算机是本发明的目的。
为了达到前面提到的及其它的目的,按照本发明,一个微计算机具有一个指令译码器和一个程序计数器。指令译码器对所取指令进行译码,并输出一个控制信号以控制所取指令的执行。从指令译码器输出的控制信号具有用以控制取周期的元素,在每个指令周期开始时触发取周期以取当前执行的指令的操作数,并在每个指令周期的中途取下一条指令的操作码。
当每个取周期被触发时,程序计数器便增加它的计数值,以便使计数值与在每个取周期中所存取的地址保持一致。
按照本发明原理,一个具有流水线结构的微计算机要允许在现行指令周期期间为后一个指令执行周期从内存中取指令数据,其工作方法包括下列步骤:
对需要一个以上字节的指令数据的指令预编程指令操作码(OP码),使之带有请求压缩时间取指令数据的信息。
在指令周期内紧跟着压缩时间取指令数据的请求从内存中取一个以上字节的指令数据。
指令数据由一个操作码字节和一个操作数字节构成,则在设置一个指令周期之前取操作码字节,取步骤包括在设置该指令周期的同时取与所取的操作码相关的操作数字节。另一种情况,指令数据由一个操作码字节和两个操作数字节组成,则在设置节一个指令周期之前取操作码字节,取步骤包括在设置第一个指令周期的同时取与所取指令操作码字节相关的第一个操作数字节,并在紧跟着取第一个操作数字节后此指令周期内进而取与第一个操作数字节相关的第二个操作数字节。
本发明的方法还包括执行指令的步骤,现在该指令周期内,在取新的操作码之前,执行由操作码和操作数字节所规定的指令。
从下面给出的详细描述和本发明的最佳实施方案附图将有利于更全面地理解本发明,然而,本发明并不局限于给定的实施方案,它们仅为了解释和理解。
在图中:
图1(A)和图1(B)是执行二字节指令时常规的和本发明的指令周期的时间图;
图2(A)和图2(B)是执行三字节指令时常规的和本发明的指令周期的时间图;
图3是根据本发明设计的一个微计算机系统的方块简图;
图4是常规的和最佳的指令执行过程的时间对比图,这里(B)表示在执行一字节指令期间程序计数器的值,(C)表示在执行二字节指令期间程序计数器的值;
图5(A)和5(B)图解说明按照常规的和本发明的处理过程执行二字节和三字节指令的指令周期的持续时间;
图6(A)和6(B)是常规的和本发明的指令译码器的实例。
现在参照附图,特别是1(A)和1(B),与常规的处理过程相对比,来描述本发明的最佳处理过程的一般的和基本的原理。图1(A)说明了先有技术的典型处理过程,图1(B)说明了按照本发明的最佳处理过程。两个图都用以执行二字节指令,该指令由一个八位操作码(op Code)组成,例如LDA,和一个八位操作数。在这种情况下,操作数是一个与待存取的随机存取存贮器地址相一致的地址码。在所示的例子中,指令命令所规定的随机存取存贮器地址的内容转移到或装载到累加器。
在图1(A)的常规处理下,在第一个指令周期开始之前取第二个指令周期的操作码LDA。在与第一个指令周期相重合的下一个取周期中,取出由操作数所指定的随机存取存贮器地址中的数据。在与第一个指令周期同时开始的取周期中所取的数据和在第一个指令周期之前所取的操作码LDA都在第二个指令周期内使用。
在如前所述的常规处理中,在每个指令周期结束时,程序计数器加一。因此,在操作码的取周期开始时,程序计数器值为pC。在第一个指令周期开始时,程序计数器加一,这样计数值变成pC+1。相类似,在第二个指令周期开始时,程序计数器加一,于是计数值变成PC+2。
在图1(B)的本发明处理过程中,第一个指令周期的操作码和前述的处理过程一样是在第一个指令周期开始之前取的。但是,这个二字节的操作码包含了一个压缩取周期的请求。在第一个指令周期的M2-M3期间,由操作数RAM指定的随机存取存贮器地址中的数据被取出。在第一个指令周期的M2-M3期间取出的操作数数据和在第一个指令周期之前所取的操作码均用以执行第一个指令周期。在本发明的处理中,第一指令周期的指令是在M2-M3期间所取的随机存取存贮器地址中的数据并在随后的M0-M1期间执行。
在如前所述的处理中,在每个指令周期结束时,程序计数器加一。响应每一个M3时钟脉冲,程序计数器的也加一。换句话说,在操作码的取周期结束时,程序计数器的值从pC增加到PC+1。响应第一个指令周期中的M8时钟,程序计数器加一,这样程序计数器值从PC+1变到Pc+2。此后,程序计数器随着在第一个指令周期结尾的M1时钟脉冲而再一次加一。
在第一个指令周期的M0-M1期间可以取下一个指令周期的操作码。
因此,由此可看出,按照本发明以最佳处理过程执行一个二字节指令仅需要一个指令周期。
图2(A)和2(B)表示另一个执行三字节指令的例子。所示的是一个程序调用的例子,借此程序控制跳到由二个字节,所规的程序地址,即一个高地址字节PH和一个低地址字节PL,因此指令是由一字节(八位)的操作码CALL和二字节的操作数PH和PL组成。
在图2(A)的常规处理中,在第三个指令周期内所执行的指令的操作码是在第一个指令周期开始前取的。在与第一个指令周期重合的下一个取周期内,取高地址字节PH。类似地,在第二个指令周期内,取低地址字节PL。在与第一个和第二个指令周期相重合的取周期内所取的高位和低位地址字节PH和PL,以及在第一个指令周期之前所取的操作码CALL均在第三个指令周期内被用来执行子程序调用指令。
在如前所述的处理过程中,在每个指令周期结束时,程序计数器加一。据此,在操作码的取周期结束时,程序计数器的值从PC加到PC+1。在第一个指令周期结束时,程序计数器加一,这样计数器值从PC+1增至PC+2。类似地,在第二个和第三个指令周期结束时,程序计数器加一。
在图2(B)所示的本发明的处理中,在第二个指令周期内执行的指令的操作码CALL在第一个指令周期开始之前取出。操作码CALL包含一个压缩相继的取周期的请求。在第一个指令周期内的M2-M3期间,取高位地址字节PH。在第一个指令周期内的M0-M1期间,取低位地址字节PL。在第一个指令周期内所取的地址字节PH和PL,以及在第一个指令周期之前所取的操作码CALL都在第二个指令周期内被用来执行子程序调用。
在如前所述的处理过程中,程序计数器在每个指令周期结束时加一。对于每个指令周期中途的M3时钟脉冲程序计数器也给予响应而加一。在操作码的取周期结束时,程序计数器值从PC增到PC+1。响应第一个指令周期内的M3时钟,程序计数器再加一,这样计数器值度为PC+2。此后,程序计数器响应在第一个指令周期结束时的M1时钟脉冲又加一,如此往复。
在第二个指令周期开始时,能取下一个指令的操作码。
因此,由此可看出,按照本发明的最佳处理方式执行一个三字节的指令仅需要二个指令周期。
图3表示按照本发明所设计的执行最佳处理的一个微计算机系统。一个微计算机的最佳实施方案由一个可编程序只该程序器(PROM)1,一个数据缓冲器2,一个指令案存器3,一个指令译码器4(举例来说,这可以是以可编程序逻辑陈列(PLA)为基准的),一个程序计数器5,一个随机存取存贮器的地址寄存器6和场效应晶体管(FET)7到9组成。
由上述构成的微计算机的最佳实施方案的工作原理将参考图4在下边描述。在图4中,(A)表示在每个指令周期期间所产生的M2、M3、M0和M1时钟脉冲;(B)表示在执行顺序的一字节指令期间在程序计数器5中的程序计数值,(C)表示在执行顺序的二字节指令期间在程序计数器5中的计数值的变化。
指令译码器输出一个程序计数器的增量信号PCUp和几个控制信号C1-C3,C1~C3控制信息在微计算机部件1-6之间的流通。控制信号C1、C2和C3分别与时钟脉冲M3、M1和M3‘与’以控制场效应管7、8和9。当场效应管7和8导通时允许数据,或是操作数或是操作码,从只读存贮器1锁存到数据缓冲器2或指令案存器3。当场效应管9导通时允许在数据缓冲器2中的操作数传输到数据总线。借此对装载、存贮或类似的命气的操作数能装到随机存取存贮器的地址案存器6中,对子程序调用等指令的操作数能装到程序计数器5中。
当操作码包含一个压缩时间取操作数的请求时,指令译码器4输出一个PCUP脉冲和C2、C3脉冲,以允许操作数响应下一个M1时钟脉冲而装载到数据缓冲器2和从数据缓冲器2中输出,并增加程序计数器的值使之指到下一个操作码。
在图4(B)所示的例子中,一个一字节指令在单一个指令周期内执行。当有C1从指令译码器4输出时,M1时钟脉冲的后沿启动,从可编程序只读存贮器1中取指令。同时,程序计数器5随PCUP信号而加一。所取的指令操作码被读到指令案存器3,并随之送到指令译码器4。指令译码器4译出所取的指令,并输出相应的信号C1、C2和C3。
M1时钟脉冲的后沿标志着指令周期开始,在此周期内执行前一个指令周期内所取的指令。在当前的指令周期内执行前一个周期内所取指令的同时,取下一个一字节指令。存取指令的可编程序只读存贮器的地址是由程序计数器的值(PC,PC+1,PC+2)表示的。程序计数器的值在M1时钟的每个后沿随PCUP信号加一。
在执行一字节指令期间,因为没有要求压缩时间取操作数的请求,指令译码器4输出的C2和C3仍旧不起作用。结果1场效应管8和9也保持不导通。在这时,因为在指令周期的中途不产生指令译码器4的PCUP信号,因而程序计数器5仅随M1时钟的后沿而增加。
如图4(C)所示,当执行由一字节操作码和一字节操作数构成的二字节指令时,在M1时钟后沿在取指令操作码之后,指令译码器4输出C2和C3脉冲。输出C2和C3使得场效应管8和9导通,以装载只读存贮器1输出的操作数并送到数据缓冲器2,程序计数器5和(或者)随机存取存贮器的地址寄存器6中。
在M3时钟的后沿,程序计数器5响应指令译码器4输出的PCUP信号加一。同时,例如,读出随机存取存贮器的地址寄存器6中的数据,并在M0-M1期间的执行指令中使用。
在M0-M1期间,从可编程序只读存贮器取下一个指令。在这种情况下,因为程序计数器5响应M3时钟的后沿随PCUP信号增加,因而由程序计数器值所表示的可编程序只读存贮器的地址将相应指向下一条指令的操作码地址。
在此可看出,按照如前所述的最佳处理步骤,为了能压缩取周期,数据的第二和1或第三个字节必须不包含操作码而只包含操作数,如数据或地址。因为在大多数四位微计算机中,指令仅包含一字节的操作码和一个或多个操作数字节,因此如前所述的最佳步骤适用于大多数这类微计算机。
如图5(A)和5(B)所示,按照本发明的最佳处理方法,常规执行需要二个指令周期的二字节指令能够从一个指令周期在流水线结构中执行。类似地,常规执行需要三个指令周期的三字节指令能够以二个指令周期执行。因此,由此易于理解,根据本发明的最佳处理有效地缩短了执行时间。
此外,图6(A)和6(B)图解表示在先有技术系统中指令译码器所要求的面积及根据本发明的系统中指令译码器所要求的面积。在此(A)表示常规系统,(B)表示根据本发明的系统。在图6(A)和6(B)中,垂直线表示与门选择线,水平线表示或门选择线。m1表示机器状态1选择器信号,m2表示机器状态2选择器输入,m3表示机器状态3选择器输入。
从图6(A)和6(B)可看出,在常规系统中执行一个三个指令周期的三字节指令需要三个机器状态。但根据本发明的最佳处理,执行一个三字节指令仅需要二个指令周期。因而,执行三个字节指令,指令译码器仅需要二个机器状态。因此,用以控制机器状态3信号线的或门选择线就没有必要了。结果有效地减少了与门选择线的长度,同样也减小了指令译码器的尺寸。
所以,本发明实现了为此追求的全部目的和优点。
为了有利于全面理解本发明,以上虽已公开了微处理机最佳实施方案的特定配置,但这种配置可根据所需要的操作而变化,因而可以看出,本发明并不是局限于给特定的实施方案而是包含所有可能的实施方案和那些并不违反由权利要求所要求的本发明的原理所实施的修正方案。