具有指令预取转向中断服务的数据处理器控制部件的制作方法

文档序号:102461阅读:303来源:国知局
专利名称:具有指令预取转向中断服务的数据处理器控制部件的制作方法
本发明涉及数据处理电路,更确切地说,它涉及数据处理器的中断执行。
在程序步骤的执行中,数据处理器会被外围设备异步中断。通常中断请求通过如下二种方法之一或其变化来处理。微处理器通常采取的第一种方法是改变程序计数器内容的矢量中断法。在这种方法中,对中断请求不是立即服务,而是把它悬置起来,直到指令执行边界出现为止。因此,必定是在当前指令执行完毕后,才对中断服务。在指令边界处,程序计数器的内容是返回地址即若不发生中断时它要执行的下一指令的地址。然后将返回地址及其它信息的变化数值自动地保存在栈存贮器内。被保护的其它信息可包括条件码寄存器、数据寄存器和地址寄存器。而后,用中断服务程序的起始地址替代先前的程序计数器内容,从而使程序流转到中断服务程序。程序计数器的替代值可用各种方法生成。一种常用的方法是使微处理器产生一中断应答信号。在响应中断应答信号时,请求中断服务的外设提供一中断矢量号,它指导微处理器,从一存贮器表中查找中断服务程序的起始地址。中断服务程序的起始地址被装入程序计数器,且处理器取出中断程序的第一条指令并译码及执行。通过执行“从中断返回”(RTI)指令来结束中断服务程序。RTI指令使处理器先前的状态恢复,并使返回地址重新装入程序计数器,从而恢复正常程序的执行。
由于处理中断要求附加的周期开销,前述中断执行方法速度慢。等待现行指令执行完毕总要使中断服务延迟一段时间。因为检索中断矢量的内容也需要时间,所以确定起始中断地址也效率不高。进而,在起始地址装入程序计数器后,也需要一定时间来取出中断服务程序的第一条指令并进行译码,然后才能执行它。在替换程序计数器内容改变操作流时,由于强制处理器空闲,就使处理器的效率下降。最后,执行RTI指令也有延时,因为恢复处理器先前的状态条件并使之转到正常指令流也需要时间。
有人通过减小中断对所需保护的寄存器的数量使这种中断处理方法的开销减少。另一些人简化了取得中断服务程序起始地址所需的步骤。代替采用计算中断服务程序起始地址的方法,有人把起始地址存贮在程序存贮区的某固定位置,或者强制处理器立即跳转到一固定位置。尽管这些技术减小了中断开销,但效率仍然不高。现代处理器的取指令、指令译码及执行常常采用流水线方式,以便通过提前取指令及指令译码,使指令予取能与指令执行相重迭。结果,当收到中断请求时,指令管线(流水线)通常是满的。因此,在执行中断时必须放弃管线中的指令,当在一不同的地址执行中断服务程序,进行取指令,译指令及执行指令时就会有延时。在流水线式数据处理器中,这种操作流的改变会造成执行周期的损失。
执行中断的第二种常用方法称为指令塞入法。在此方法中,中断请求并不立即被服务,而是搁置到指令执行边界。在现行指令执行完成时,处理器给外设一中断应答信号。响应这一信号时,请求中断的外围设备给出一条如“转到子程序”的指令并使它挤入到指令寄存器。执行该转到子程序指令就使中断服务程序的起始地址装入程序计数器。中断服务程序完成时,RTI指令将把返回地址装入程序计数器。若塞入的指令不是转到子程序指令,塞入的指令将作为单指令服务程序执行,它隐含有从中断返回(RTI)。在指令塞入时,程序计数器的当前内容暂时不变。这可以在没有返回地址时也能恢复正常程序的继续执行。
在中断塞入技术中,处理器要等待现行指令结束才用中断应答信号取塞入的中断服务程序指令。处理器也必须等待塞入的中断服务程序指令执行结束才能取正常程序的下一条指令。这两种操作流的改变都会产生浪费掉的开销周期。而且,在指令塞入式中断系统中,请求中断的外围设备必须针对指令处理器专门设计以便使它能提供具有正确定时的有效塞入的中断指令。这就限制了某些商用处理器与各种外围设备的兼容性。
因此,本发明的目的是要提供一种具有指令予取换向以改进中断服务的数据处理器。
本发明的另一目的是提供一种服务请求设备的改进的中断数据处理器程序执行的方法。
本发明的再一目的是提供一种改进的方法,当数据处理器执行中断及返回主程序时,使数据处理器取指令及翻译指令时开销的执行周期损失最小。
在实现本发明的上述及其它目的时,给出了一种控制部件,它提供指令给数据处理器执行。在外围设备没有中断请求时,控制部件有选择地提供予取的常规指令。在响应中断请求时,它提供予定数量的予取中断指令。予取指令在提供给数据处理器之前就被译码。本发明提供了一种方法消除数据处理器不执行任何指令而开销掉的执行周期。开销是伴随响应中断请求时,中断的指令流转去执行中断服务程序而发生的。中断控制电路收到中断请求时,就中断从控制部件到数据处理器的常规指令流。常规指令予取就转到至少一条中断指令予取。在予取的常规指令完成执行之前,并且在确定最后取出的常规指令是否为还没予取完毕的多字长指令以前,就启动中断指令予取。然后,中断指令予取又转向到常规指令予取。在予取的中断指令完成执行以前,并且在对中断指令译码以确定是不是还没予取完的多字长指令以前,就启动了常规指令予取。
随着结合附图的详细说明,可以更清楚地了解本发明的这些及其它目的、特性和优点。
图1以表格方式说明了熟知的数据处理器中的指令处理流。
图2以表格方式说明了另一种熟知的数据处理器中的指令处理流。
图3以表格方式说明了又一种熟知的数据处理器中的指令处理流。
图4以框图形式说明了采用本发明指令予取换向的数据处理器。
图5以表格方式说明了本发明数据处理器的指令处理流。
图1所示的是许多不带指令予取的商用已知数据处理器的指令流图。它画出了18个指令周期,其中,执行指令n-1,n,n+1,n+2期间,执行了中断指令i。在执行常规程序指令期间的任何时刻,都可能收到外围设备的中断请求。仅为了说明,假定在指令n的执行周期(指令周期6)的某一时刻收到了中断请求。图1所示的数据处理系统是这样工作的它把中断请求搁置到一指令执行边界的开头,以保证现行指令执行完毕。在指令周期边界服务中断可使数据处理器的状态限定为每一指令结束时的状态。已知的机器状态也简化了服务中断前必须保护的信息。但是在真正响应中断请求前存在几个周期的延时。与每条指令相联系的是三个固有操作,它们是取指令、翻译指令和执行操作。可以容易地看出,对指令执行的每一周期,有二个周期(以“X”标识)并不执行指令。并且在取相应于要执行的中断程序的中断起始地址或矢量号的中断过程中,也有延时(图1中未示)。在每一以“X”标志的空闲执行周期内,或者取下一条要执行的指令,或者取下条指令译码。机器对中断指令(i)及从中断返回指令(RTI)的处理与其它常规程序指令的执行方法一样。除了中断请求的延时外,图1所示的数据处理器执行每一条指令都有二个周期的开销,因此效率低。
图2所示的是另一种用不同的称为指令塞入中断的中断技术的数据处理器的指令流图。可以容易地看出,它完成同样数目的程序指令和中断指令只需15个指令周期,而图1中则要18个指令周期才能完成它。仅为了说明,假定在指令n的执行周期(第六指令周期)期间的某一时刻收到了异步中断请求。并且,在现行指令执行结束前一直把中断请求挂起来。在采用指令塞入的处理器中,请求中断的外设必须把一有效指令放到处理器的指令寄存器中,以便向处理器塞入一中断指令。处理器应该用中断状态码来响应外围设备。所以中断的外围设备必须是处理器指定的。虽然每三个指令周期只执行一条指令,但当中断指令被塞入指令寄存器时,不必执行从中断返回指令。所以,与图1的处理器相比,执行同样数目的指令所需的周期数就少三个。但是,因为在指令周期边界出现之前不取中断指令及译码,以及中断服务程序完成以前也不取常规程序指令并译码,所以这种技术也存在开销掉的周期。
图3所示的是一种带指令予取的具有指令流水线结构的数据处理器的流图。在图3的数据处理器中,指令予取是为了在指令需要译码时指令就已准备好了。该予取技术消除了伴随指令取及译码产生的延时。这是假定指令是顺序执行的。它执行图1及图2的处理器执行的同样数目的指令只需要12个指令周期。为说明的便利,假定中断请求在指令n的执行周期(第4指令周期)的某一时刻出现。并且,中断指令也不立即取出,而是在现行指令完成后才取出。由于具有予取能力,在执行一条指令时,下一指令被译码,再下一指令被取出。但在第一条中断指令被取出及译码时,并没有指令可被执行。结果在中断指令执行前后,总共四个周期内不执行任何指令。在指令流操作改变时,指令予取不能消除开销的周期。然而,指令予取实际上减小了完成图1和2处理器所完成的同样数目指令时所要求的指令周期数。
图4是依据本发明的数据处理器的程序控制部件10。程序计数器14具有第一端子,它经程序地址总线16与程序存贮器15的输入相连。程序计数器15的输出经程序数据总线19与予取寄存器18的第一输入相连。予取寄存器18的第一输出连到指令译码器22的第一输入。指令译码器22的输出连到指令寄存器24的第一输入。予取寄存器18的第二输出连到指令译码器22及指令寄存器24的第二输入。指令寄存器24的控制输出连到程序计数器14的第一输入。栈存贮寄存器26具有一输入/输出端连接到程序计数器14的第一输入/输出端。程序计数器14的第二输入连接到增量电路28的输入及程序地址总线16。增量电路28的输出连到予取计数器30的第一输入。予取计数器30的输出连到程序地址总线16。中断请求信号连到中断予取控制电路34的输入并连到中断地址发生电路36的第一输入。中断予取控制电路34的输出提供中断予取信号并连到中断地址发生电路36的第二输入、予取计数器30的第二输入及予取寄存器18的第二输入。
关于操作,首先考虑没有中断请求时控制部件10的功能。指令寄存器24存贮有等待数据处理器执行的指令,它是数据处理器要执行的下条指令。程序计数器14用于存贮紧接着指令寄存器24中指令的下条指令的指令地址,并把它经程序地址总线16送到程序存贮器15。程序存贮器15是一种存贮器,它向数据处理器提供相应程序地址的要执行的程序指令。栈26是一种存贮寄存器,它可有选择地存贮并提供程序计数器14的地址内容。予取计数器30的功能类似于程序计数器14,只是予取计数器30指向程序计数器14的下一个指令地址,其作用是在程序地址总线16上向程序存贮器15提供指令地址。当予取计数器30经程序地址总线16把下条指令予取地址送到程序存贮器15时,它同时经地址总线16把下条指令予取地址送到程序计数器14及增量器28。增量器28把已取指令地址增1并把已增量的指令地址送到予取计数器30使之更新。以这种方法,予取计数器30总是指向数据处理器正执行指令的下二条指令地址。当指令顺序执行时,予取计数器30是指令取地址的常规源。当改变操作流时,程序计衡器14是指令取地址的第二源。而在指令被指令寄存器24存贮之前,从程序存贮器15来的指令被送入予取寄存器18及指令译码器22。予取寄存器18及指令译码器22的功能是联合起来有选择地存贮并把译码的指令送到指令寄存器24。以这种方法,控制部件10起着处理并提供被数据处理器执行的予定程序指令的作用。
现假定与数据处理器相连的外围设备想要中断数据处理器的工作而要求服务。外围设备发生中断请求信号到中断予取控制电路34和中断地址发生电路36。中断予取控制电路34的功能是识别外围设备的中断请求,并使予取计数器30的指令予取操作改变方向。为实现这一功能,中断予取控制电路34发生中断取信号它使取操作转到取予定数目的指令字并控制这种予取机构的操作。中断取信号接到中断地址发生器36,予取计数器30及予取寄存器18。在响应中断请求信号及中断取信号时,中断地址发生器36产生中断地址它指向中断指令在程序存贮器15中的位置。中断请求信号送到中断地址发生器36是表示实际请求的是地址发生器36所寻址的那个中断程序。中断取信号实际上控制允许中断地址发生器36向程序地址总线16发生中断地址的时间。中断取信号也在中断地址发生器36提供地址时,使予取计数器30不向程序地址总线16发指令地址。
予定数目的中断指令地址可经过程序地址总线16及程序存贮器15塞入到指令流里。尽管中断地址发生器36实际上已产生了中断地址,但在开始执行中断程序之前,由于取中断指令并译码需要时间,所以数据处理器仍可执行几条(常规)指令。中断予取控制电路34及中断地址发生电路36可以有选择地把服务任何种类中断所需的予定数目的指令地址塞入到指令流里。当中断地址被塞入指令流并送到指令寄存器24时,指令寄存器24在响应中断信号时就产生一保持信号,它使程序计数器14的内容保持恒定。应注意在收到中断请求信号后,程序计数器并不立即保持不变,而是继续增量并按指令处理直到最后一条指令结束才执行中断程序。中断取信号也用于指示予取寄存器18中的指令是中断指令。中断指令的内容及中断信号指示一起送到指令译码器22然后送到指令寄存器24。一收到中断信号,指令寄存器24就给程序计数器14保持信号。一旦地址发生器36产生了中断地址,中断取信号就使地址发生器不起作用,并使予取计数器30生效。而中断程序一执行完毕,予取计数器30将指向数据处理器应继续执行的下一条常规程序指令。将又允许予取计数器30通过程序地址总线16提供常规程序指令地址,程序计数器14将不再保持其所存的地址值。
构成图4控制部件10的每一电路都可以用熟知的商用电路很容易实现。中断予取控制电路34可用多种方法实现。控制电路34可设计成在固定的取周期数目(比如1或2)内暂时改变取指令流的方向。控制电路也可用寄存器实现,以便在每次中断时,安排予定数目的取操作。另一方法,是在控制电路30中用计数器来计一定数目的中断指令取。实现控制电路34及地址发生器36所需的上述功能还有许多其他方法。
图5所示的是采用图4的控制部件10时指令周期执行情况流图的例子。可以看出,当在指令n的执行周期(指令周期n)的某一时刻发生中断请求时,它仍可执行连续多条(常规)指令。与前述电路不同,本发明的电路可在无任何周期损失的情况下执行常规程序指令及异步中断请求。控制电路10识别中断请求时,它立即使指令取操作改变方向而不必等待指令边界的末尾。同样,中断服务程序取操作一结束,取指令序列立即转向并开始常规程序指令的取操作及译码,这些操作在中断服务程序执行完之前完成。由于取指令地址的操作不是在指令边界处进行,与等待现行指令执行完毕才开始中断服务相关的开销就减小了。
本发明能消除额外指令周期开销,基本上是由于不必等待现行指令执行结束完成就进行指令予取。因为在中断请求之后,要尽快把中断指令塞入到管线指令流,对电路的工作有一些必须的限制。不难理解这些限制在很大程度上取决于实现本发明所选的特定电路,因此限制也会相应变化。
首先,为保证现行正执行的指令能完成执行而不使该指令的一部分丢掉或不执行,所有指令的字长都不要大于程序存贮器15与数据处理器之间的指令流水线的寄存器数。这就保证了已开始执行的任何指令都被完整地执行,因为该指令已被完整地取出来了。在控制部件的原理图中,程序存贮器15与数据处理器间的寄存器数是2,用寄存器18及24表示。所以,控制器10可处理的指令的字长不能大于2。对于诸如微处理器(MPU),简化指令组计算机(RISC))或数字信号处理器(DSP)等这类典型的单字长指令的数据处理器,这种指令长度限制没有意义。对于要求指令字长大于2的应用场合,指令管线中可另外增加存贮寄存器。
其次,所有被处理的指令一般都具有操作码部分和信息部分。操作码部分总是由指令的第一个字表示。信息部分包含在第一指令及若有的话,第二指令字内。指令寄存器24必须决定指令寄存器中的操作码应开始执行还是放弃执行。指令寄存器24从指令译码器22接收译码的指令长度,并经予取寄存器18来的中断信号,接收一指示信号表示予取寄存器18中有一条中断指令。若指令完全包含在指令寄存器24内,指令可开始执行。若指令寄存器24中包括的不是完整的一条指令,它就从予取寄存器18请求第二指令字,予取寄存器18来的中断信号指示予取寄存器18包含的不是第二指令字。若中断信号指示的是常规指令取操作,由于整个指令字都已取出了,就可启动这一新指令的执行,若中断信号指示的是一中断指令取操作,必须放弃该指令而不执行,并且中断指令取操作的第一指令字予取就完成了。在该举例中,为重取被放弃的指令字,应使用程序计数器14而不是予取计数器30来进行第一条常规指令的取操作。放弃指令的执行将损失一个执行周期的时间,但它对性能的影响可忽略不计,因为大多数指令只有一个字长。若所有指令都是一字长,指令绝不会放弃执行。
第三、假定常规指令流中的某些指令是使指令改变执行方向的变向指令。比如,变向指令可使程序执行跳转到程序存贮器15中某予定的子程序。典型的变向指令将使数据处理器放弃予取寄存器18的内容,并把跳转地址经程序地址总线16送到程序计数器14。指令译码器22通过指令的操作码部分可以很容易地知道是变向指令或是正常指令。当变向指令在指令寄存器24中时,指令寄存器24收到一中断信号,正如常规指令处理中所述的原因,不能放弃予取寄存器18的内容。否则,就会永远放弃予取寄存器18中的中断指令而永不理睬中断请求。
最后,在中断指令流中也会出现比如转到子程序这类变向指令。在我们考虑的系统中,中断予取的数目一般是一或二个取操作。这可使用快速中断服务程序,这里一条指令就是以对请求中断的外部设备进行服务。对长中断服务程序,可把转入子程序指令作为中断指令流的第一条指令。这就变向到长中断服务程序,它可按常规指令流一样执行。若指令寄存器24的指令操作码是一变向指令,且它又是中断指令,若予取寄存器包含的是一正常指令,则可将它放弃。若予取寄存器18中是一中断指令,则予取寄存器中的内容不能放弃。如前所述,这就保证了中断请求不能被遗漏。
到此你可以清楚地看到,控制部件可使处理器的开销最小。这种控制处理器可使每一指令周期内使处理器的有关功能得到最大限度的利用。用这种方法,与一般的一字或二字指令组的MPU、RISC及DSP数据处理器一起使用,可有效实现特快速中断服务。
当一具体装置用某些假定参数来提示出来时,应该知道,对于熟悉这方面的人来说,对给定电路或参数作些修正是很容易的,而本发明的范围将只限于后附权项所列的范围。
权利要求
1.在一具有执行指令的数据处理器及将所述指令送给数据处理器的控制部件的数据处理系统中,该控制部件有选择地在外围设备无中断请求时提供予取的常规指令并在响应中断时提供予取的中断指令,一种在响应中断时,伴随着指令流的中断而转去执行中断服务程序,使数据处理器不执行任何指令的执行周期得以消除的方法,其特征是有如下步骤接收一中断控制部件到数据处理器的常规指令流的请求信号;改变常规指令予取的方向以提供至少一条中断指令予取。该至少一条中断指令的予取操作在该常规指令执行完成以前就被启动了;改变该至少一条中断指令予取的方向到继续进行常规指令予取,在所述至少一条予取的中断指令完成执行之前就开始了所述常规指令的予取操作。
2.如权利要求
1所述的方法,其进一步特征是具有步骤在对最新予取出的常规指令进行译码以确定它是不是还没予取完毕的多字长指令之前,就启动所述至少一个中断指令的予取操作。
3.如权利要求
1所述的方法,其特征还在于在对最近予取的中断指令进行译码以决定其是不是还没取完的多字长指令以前,就启动所述常规指令的予取操作。
4.在一具有执行指令的数据处理器及向数据处理器提供所述指令的控制部件的数据处理系统中,该控制部件通过提供指令地址,经程序地址总线来寻址来执行的指令,并把寻址的指令放到程序地址总线的方法来予取指令,还对指令译码,一种使伴随着外围设备请求数据处理器进行中断服务而使到数据处理器指令流中断所带来的开销减小的方法,其特征是包括如下步骤收到一中断从控制部件到数据处理器的常规指令流的请求;通过在现行执行的指令,若有的话,完成之前提供至少一个予定的中断指令地址到程序地址总线来改变常规指令予取流的方向;在响应至少一个中断指令地址时,对至少一条中断指令予取并译码;在完成至少一条中断指令译码及执行以前,把予取中断指令流的方向改变到继续把常规指令地址送到程序地址总线,从而消除数据处理器无指令执行的指令周期。
5.在数据处理系统中,一种能提供予取的常规指令供数据处理器执行,并把被中断请求信号所中断以提供至少一条予取的中断指令的控制部件,它包括一传送常规指令地址及中断指令地址的程序地址总线;与程序地址总线相接并能有选择地接收、存贮并提供常规指令地址的程序地址存贮装置;其特征为与程序地址总线相接并能有选择地存贮并提供常规指令地址的予取地址存贮装置;具有一输出与程序地址总线相连,输出与予取地址存贮装置相连的增量装置,它可有选择地使存贮在予取地址存贮装置中的地址增量以得到连续的指令地址;一种能在常规指令完成执行以前及在对最新予取出的常规指令译码以确定它是不是还没予取完毕的多字长指令之前,提供一中断取控制信号的中断控制装置,所述中断取控制信号控制什么时候把多个中断地址中的予定的中断地址送到程序地址总线上;与程序地址总线及中断控制装置相连的中断地址装置,它在收到中断请求信号及中断取信号时,可有选择地提供多个中断地址中的一予定的中断地址到程序地址总线上;程序存贮装置,其输入接程序地址总线,其输出分别响应常规指令地址提供予取的常规指令、响应中断指令地址提供予取的中断指令;第一指令存贮装置,其输入接程序存贮装置及中断控制装置,可有选择地接收、贮存及提供指令,并提供中断应答信号,以指示已贮存了一条中断指令;指令译码装置,其第一输入接第一指令存贮装置以接收中断应答信号,第二输入接第一指令存贮装置以有选择地接收指令,其输出有选择地提供已译码指令;第二指令存贮装置,其第一输入接指令译码装置的输出,其第二输入接中断应答信号,其输出有选择地把已译码指令送给数据处理器。
6.如权利要求
5所述的数据处理器控制部件,其中,所述第二指令存贮装置具有第二输出与所述程序地址存贮装置相连,以便有选择地维持程序地址存贮装置内容恒定不变。
专利摘要
一种数据处理器控制部件(10),提供指令供数据处理器执行并使指令周期损失的开销最小。它使用流水线式指令流(16),把指令地址有选择地从程序计数器(14)及预取计数器(30)送到程序存贮器(15),后者提供实际指令。指令被存贮在预取寄存器(18),译码后装入指令寄存器(24)并送到数据处理器。当外围设备向处理器请求中断服务时,预取指令流立即变向,并在常规指令执行完成之前,通过中断地址发生器把预定数目的中断指令字预取出来。
文档编号G06F9/38GK86107934SQ86107934
公开日1987年8月12日 申请日期1986年11月26日
发明者克温·L·克洛克 申请人:莫托罗拉公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1