本发明总的来说涉及数据处理系统,特别是涉及用于实现流水线和微编程数据处理系统的装置和方法。该装置和方法使当前执行的微指令序列中断并去执行一个具有较高优先权的程序,然后,返回到该中断时正在执行的程序序列。 参看图1,图中示出了一种典型的数据处理系统。数据处理系统包括至少一个中央处理机或子系统10(或11)、至少一个输入/输出装置或子系统13(或14)、主存贮器或子系统15和用于连接多个装置或子系统的系统总线19。根据存贮在软件或固件中的程序指令序列,中央处理机处理成徂的逻辑信号。逻辑信号组一般存贮在存贮器中,程序本身通常也存贮在存贮器中。输入/输出装置在该数据处理系统和需要连接到该数据处理系统的终端设备、大容量存贮器、通讯设备以及其它装置之间提供接口。为了使数据处理系统初始化、控制测试和诊断程序並在该系统运行之后用作一个终端设备,可以把一个操作台装置连接到中央处理机。通过在数据处理系统的子系统之间进行连接所提供的系统总线提供了一种用于改变该数据处理系统配置以适应各种处理需要的方便的技术手段。
在如图1中所示的数据处理系统中,对数据信号徂的实际处理是在通常称为一个程序的一徂相关指令的控制下发生的。这些指令是按顺序被执行的。下面参看图2a,图中示出了根据相关技术对一系列指令的执行情况。在第一个时间间隔T0期间,由中央处理机子系统执行指令1。在第一个指令执行以后,在该序列中的下一指令2由中央处理机子系统在第二个时间间隔T0期间执行。指令2一完成,数据处理机就在时间间隔T0期间处理指令3。为了保持顺序地执行指令,用于由该数据处理机执行任何指令的间隔需要有一个予定地时间周期。如果用于一个指令的执行时间可以具有可变的长度,那末在中央处理机中必需包括复杂的装置,以便配合在中央处理机和该数据处理系统的其它子系统之间的数据信号徂的交换。因此,用于执行三个指令的周期一般为基准时间周期的三倍。可以清楚地看出,基准时间间隔必须具有足够的持续时间,以便能够执行指令系统中最长的指令。
为了使数据处理系统能更快地运行,已经发明了一种技术用于把对一个指令的执行分成对多个指令段的执行,通过以适当方式配置执行这些段的装置,可以以一种重叠方式实现对指令的执行。这种技术称为指令系统的“流水线”执行。尽管执行每一个流水线指令所占用的时间周期长于执行一个非流水线指令的时间周期,但由于具有把一个指令分成指令段所需要的附加装置,所以,一个指令流还是能以比未分段指令所可能的更快的速度被执行。在图2b中示出了把一个指令分成多个段的情况。可以理解每个段都涉及在中央处理机中一个分隔的和单独操作的成分组。根据在数据处理系统设计中众所周知的方法,寄存器和门电路把执行一个特定段的成分组的操作分隔开。用于每个段的子间隔t0心需具有足够的时间周期,以便能够执行每个装置组中的所有可能的段。
下面参看图2c,图中示出了可以通过利用流水线技术对一个序列的指令执行中最后得到的速度上的提高。现在,指令1在等于n个时间t0的新的(可能较长的)时间周期T0′中完成了。其中,t0是用于执行每个指令段所需要的子间隔,n是用于执行每个指令所需的指令段的数量。在该序列中的下一指令-指令2从指令1开始后的一个间隔t0开始。在该序列中的第2个指令-指令3再从其后的一个间隔开始。每一个指令都可能占用一个用于执行该指令的时间增量。但是,一旦用于完成第一个指令的那个最初间隔过去,则每个间隔t0之后都完成一个指令。因此,对于一个指令序列来说,即使执行单个指令占用的时间可能增加,但执行该序列却可以加速。
下面参看图3,图中示出了用于对一个指令序列实现流水线执行的中央处理机的配置。该中央处理机分成指令子单元31、相关的控制器32、执行子单元33和隐含(或机内)存贮器子单元34。隐含存贮器子单元34连接到系统总线19上,並且在控制器32的控制下通过系统总线与数据处理系统的其它子系统交换逻辑信号组。执行子单元再在控制器32的控制下实现对由正被执行的指令所确定的数据信号组的处理。指令子单元31接收要执行的指令,並以一种可以用来控制中央处理机10的操作的方式对指令重排格式。该重排格式的指令或至少是其中的区段加到控制器32上,从而构成数据处理机10的逻辑单元的配置,以便执行由该指令确定的操作。
上面叙述的结构保证了使用微指令去执行微指令。根据复杂程度、中央处理机装置的性能和相似的参数,微指令可以由一个单一的微指令或由多个微指令执行。如图2b所示,这是一种被分成微指令段的指令。
参看图3中数据处理机的简化区分。为了说明本发明,为完成指令执行的一个区段而用于中央处理机每个单元的时间长度将采用相等的时间长度。因此,对要由数据处理机执行的指令来说,图2c中示出了对指令组的执行情况。在第一个间隔t0期间,由指令单元处理第一个指令。在第二个间隔t0期间,数据处理机的执行子单元33处理第一个指令,而该中央处理机的指令子单元31同时处理第二个指令。在第三个间隔t0期间,隐含存贮器单元处理指令1,执行单元同时处理指令2,而指令单元还同时处理指令3。只要指令进入指令单元,这种三级流水线就连续操作。
可以清楚地看出把数据处理机分成已经简单说明的功能单元通常还不足以构成实用的流水线配量。每个上述的功能单元都可能需要多个子操作去完成每个必要的操作,从而去完成对每个指令的执行。为了说明,一个包括四个段而不是如图3叙述的包括3个段的流水线将用来叙述本发明。
因此,认为需要能在流水线式指令序列中的该序列的中断点处连续执行指令序列的装置和方法。
本发明的一个目的是提供一种改进的数据处理系统。
本发明的一个进一步的目的是提供一种用于在中断以后,在该序列产生中断之处继续执行指令序列的技术。
根据本发明,通过下述方案可以实现上述的和其它的目的。提供一个存贮单元,用于存贮微指令的地址以及和来自导致一个微指令产生的译码器单元的每个地址相关的标记字段信号,这些存贮操作在中断程序开始执行时也处于执行之中。通过在标记信号不在存贮器中时利用存贮器中的地址和通过使指令序列和对应于存贮单元中标记字段内的标记信号并来自译码器单元的地址相互同步,使得原始的微指令序列得以重新建立。
在阅读下面的说明和附图之后就能理介本发明上述和其它特征。
图1是能够利用本发明的数据处理系统的方框图。
图2是把指令分成段的示意图。
图3是可以用于控制使用分段指令的中央处理机的控制器的方框图。
图4是正在执行中的指令序列示意图,该执行通过识别陷阱条件而中断。
图5是根据本发明用于对被陷的微地址重新排除的电路的方框图。
图6是存贮译码标记信号的装置的方框图。
图7是表示译码标记信号如何提供译码器选择信号的装置的方框图。
图8是表示产生微陷阱返回状态信号的方框图。
图1、图2和图3在叙述相关技术时已经说明了。
参看图4,图中示出了对微地址重新排除的要求。在执行指令4010期间识别出陷阱条件。在图示实例中,该陷阱是在第四段时识别的,因此指令4011,4012和4013已经开始执行,而紧跟在后的指令4014由于设置了陷阱条件而未被执行。在跟着识别出陷阱条件的那个段后面的下个段的始端,执行包括指令5000至5020的陷阱例行程序。陷阱例行程序的最后一个指令5020是终止该陷阱例行程序的陷阱返回指令。因为微指令4011、4012、4013和4014已经完全失效,所以为了恢复执行原始程序,必须使这些指令重新进入微指令序列。
下面参看图5,图中示出了涉及使用本发明的装置的方框图。可控门电路或多路转换器51选择一组最终加到控制存贮器56的地址信号。被选择信号可以是带有译码器选择信号的微编码下一地址,可以是来自微地址贮仓57的信号,也可以是来自微栈55的信号。微编码下一地址是用于正常微程序序列的地址信号。用于控制多路转换器54的译码器选择信号也用作一个标记,並被存贮在该贮仓的标记字段中。来自微栈55的信号是调用地址序列的子程序,该子程序在一个微子程序的执行完成之后就能返回到调用微程序。微地址贮仓57保存在陷阱例行程序之后对正在执行的程序重新排除所需的信号。由可控门电路或多路转换器51选出的信号通过微地址源选择逻辑58确定。
从多路转换器51输出的信号加到微转移逻辑单元52。微转移逻辑单元52还接收微转移条件信号,根据予先制定的算法在微转移逻辑单元中对这些信号组进行处理。微转移逻辑单元52的输出信号加到可控门电路或多路转换器53和微地址贮仓57。通过上述的微指令产生的转移条件能够形成图4中的从4011至4014的任何地址。因为在整个的陷阱例行程序的执行期间这些条件没有保存和恢复,所以,所有得到的从4011至4014的地址都必需保存和重新排队,而不是让微转移逻辑去重新产生它们。多路转换器53还接收微陷阱向量信号,由多路转换器53选出並在其输出端形成的信号组由是否存在全局微陷阱信号(当识别出陷阱条件时所产生的信号)确定。
多路转换器53的输出信号加到微栈55和可控门电路或多路转换器54。多路转换器54还接收译码器微地址信号,在多路转换器54输出端上的被选信号是通过译码器选择信号的确立来决定的。从多路转换器54输出的信号作为地址加到控制存贮器56。从控制存贮器56输出的信号用于控制中央处理机的状态。
下面参看图6,图中示出了微地址贮仓57的内容。由识别出陷阱条件时正在执行的微指令的数量确定该贮仓的大小。参看图4,在微指令4010的第4段中识别出陷阱条件时,指令4011、4012和4013还在执行,跟着要执行4014,因此,需要一个4层深度的贮仓(具有存贮单元601、602、603和604)。被陷阱例行程序5000置换的指令4014的地址就保存在贮仓中紧跟在指令4011的地址(在存贮单元601中),指令4012的地址(在存贮单元602中)和指令4013的地址(在存贮单元603中)之后的存贮单元604中。贮仓57中每个存贮单元的内容包括微地址字段和(单一位单元的)标记字段。图6还表示了本发明的一个特征,即标记字段与取代了译码器曾用地址的那个地址相关联。
下面参看图7,多路转换器或可控门电路71在一个输入端接收译码器标记信号,在第二个输入端接收译码器下一信号。在陷阱返回信号出现的持续时间中,一个伴随陷阱返回指令产生的信号选择译码器标记信号。在陷阱返回信号消失之后,门电路71从控制存贮器56中选出译码器下一信号。经过一些处理之后,多路转换器71的输出信号成为译码器选择信号。该信号加到多路转换器54的控制端,並用作微地址贮仓57的输入信号被存贮作为标记信号。
下面参考图8,图中示出了贮仓中用于选择或不选择地址的装置。贮仓57中一个存贮单元的标记字段信号加到逻辑“与”门81的一个反相输入端,而当微陷阱返回指令出现时,则把一个信号加到逻辑“与”门81的第二个输入端。逻辑“与”门81的输出端连到延迟网络82的输入端和状态装置84的“置位”端。延迟网络82的输出端连到逻辑“或”门83的第一个输入端,而逻辑“或”门83的第二个输入端接收标记字段信号。逻辑“或”门83的输出端连到状态装置84的“复位”端。当出现微陷阱返回信号和标记字段信号时,在状态装置84的输出端上信号未确立,並阻止贮仓57把地址加到控制存贮器56。当出现微陷阱返回信号而未出现标记字段信号时,状态装置被置位,其结果是把贮仓57中的地址字段用于对控制存贮器56的寻址。状态装置84将在网络82的延迟时间内被置位。该延迟时间由贮仓的深度确定。在本实例中,延迟为三个时钟周期,並连同一个周期长的陷阱返回信号一起,可以用于对保存在贮仓中的四个微地址重新排队。在这个周期中,如果在贮仓的任何存贮单元中发现标记信号被确立,那末,状态装置84通过逻辑“或”门83复位,因此,阻止了其后的重新排队。
参照图5可以理解本发明的工作。控制存贮器56提供用于在指令序列执行时控制有关装置的信号。在执行期间,如果产生需要执行一个特定指令序列的任何原因,则当前执行的序列必须被中断,对该特定的序列给予优先,並且该特定的序列一完成就可以恢复原始的序列。当通称为陷阱条件的那种条件在数据处理机中被识别出时,则产生全局微陷阱信号。全局微陷阱信号使多路转换器53把适合于该陷阱条件的微陷阱向量信号加到控制存贮器单元56,並借此配制中央处理机以便执行该陷阱程序。此外,全局微陷阱信号还使微地址贮仓57的内容在该陷阱程序执行的持续时间内冻结。
在没有全局微陷阱信号的情况下,控制存贮器的地址由多路转换器电路53和多路转换器电路54确定。在一个指令序列正常执行期间,加到控制存贮器单元56的地址由微转移条件、微编码下一地址、译码器选择信号和调用存贮在微栈101中地址的子程序确定。在从陷阱程序返回时,继续执行被中断的微程序序列的微地址来自微地址贮仓57。在中央处理机的正常运行期间,加到控制存贮器单元的地址连同其标记信号一起存贮在贮仓57中,並可用于恢复在识别陷阱条件时中央处理机原有的状态。
由本发明执行的对存贮的微地址进行重新排队具有下述的优先权。第一优先权是用译码器标记信号同步指令序列。需要这种同步的理由解释如下。译码器选择信号使多路转换器或可控门电路54选择从对当时的或后面的微指令进行译码而产生的译码器处理过的微地址。一旦在译码器的微地址开始的程序被执行,存贮在贮仓中的地址就不需要了,並且甚至是错误的。由译码器选择信号导出並存贮在贮仓57的标记字段区段中的译码器标记信号在对来自贮仓57的微地址进行重新排队时可以获得,並在此时判定译码器的微地址是否应比来自贮仓57的地址优先被选择。这种判定是用图7中所示的选择装置进行的。因此,在贮仓中出现译码器标记信号使指令序列用微指令序列同步。换句话说,当标记信号在贮仓57的第一个位置601中,並且该信号被加到图7中的选择装置时,该指令序列看来好象在前的指令(中断返回指令)已经请求来自译码器的下一微指令地址。如果译码器标记信号出现在微地址贮仓的标记字段中的除第一个位置以外的其它位置中(即602,603,或604中),该标记信号仅用于阻止使用存贮在贮仓中剩余的地址。产生译码器下一信号的对应的在前指令在重新排除时正常地导致对译码器微地址的选择,就象它在陷阱时的操作一样。当在贮仓中没有标记信号时,产生对所有存贮在微地址贮仓57中的地址重新排除的优先状态。其结果是在中断之后可以正确地恢复原始的指令序列。
上述说明用于解释最佳实施方案的工作,但並不意味着限定本发明的保护范围。本发明的保护范围仅由权利要求限定。从上面说明明显地看出对本专业的那些技术人员来说可以进行许多由本发明的精神和保护范围所包含的改变。