紧配合的多处理器指令同步的制作方法

文档序号:6405645阅读:179来源:国知局
专利名称:紧配合的多处理器指令同步的制作方法
技术领域
本发明涉及数据处理系统,更具体地说,涉及包括多个独立处理单元的数据处理。
传统的数据处理系统一个一个地执行一个序列的指令。在包括多个处理单元的处理系统中,通常对指令的译码是集中地进行的,以保证每个指令按其在序列中的位置进行译码。
1982年8月出版的第25卷,编号为3B的IBM技术公开报告的1637-1638上,刊登过一篇题为“多处理器同步设计方法”(MultiprocessorSynchronigationDesignMethocl”)的文章,该文公开了一种进程,从而可以同时确定许多处理器之中任何处理器是否是在一个指定的状态。在进程结束时,所有处理器已就其当前的相互间的状况达成协议。
题为“用于高度平行多处理器系统的同步处理部件”(IBM技术公开报告,30卷,第7号,1987,12,第98-99页)公开了一种利用一个同步处理部件增强多处理计算机的体系结构而使在一个高平行多处理计算机系统中同步开销最小的技术。
题为“用于分布式处理同步和地址计算的运行一时间算法”(“Run-TimeAlgorithmforDistributedProcessingSynchromizntionandAddressCalculations”,见IBM技术公开报告,29卷,NO.110,1987,3,4658-4687页)介绍第用第一度在一个分布式处理体系结构的每个分布处理部件中所用的算法。这些算法以与在一个网络中的其它分布处理部件协调的方式为每个分布处理部件安排地址计算。
本发明的目的是为了提供这样一种多处理系统即使系统中的各个处理器实际上可能并非顺序地执行各个指令,而此多处理系统却似乎在顺序地执行一个序列的指令。
本发明的数据处理系统包括一个用于贮存要求由二个处理器操作的一序列指令的指令存贮电路;至少要有二个处理器,每个用来执行来自上述指令存贮电路的指令;一个指令分布电路用来将每个指令分派给至少其中一个处理器;至少其中一个处理器包括一个用于在由另一个处理器执行在指令序列中的上述的指令之前执行所分派的指令的电路。
在本发明的最佳实施例中的数据处理系统中,包括用于贮存指令缓冲器。在该序列中至少一个指令要求至少由两个分开的处理器进行操作。指令贮存电路与两个处理器相连。每个处理器执行来自存贮电路的指令。另外还包括一个用来将每个指令分派给至少其中一个处理器的指令分派电路。至少一个处理器在另一处理器执行指令序列中的上述指令前具有执行所分派的指令的能力。
在该最佳实施例中,第一个处理器是定点运算处理器。第二个处理器是一个浮点运算处理器。指令序列包括由定点处理器本身执行的和由浮点处理器本身执行的指令。然而,在本最佳实施例中,指令序列也包括为定点处理器和浮点处理器的操作两者均所需的浮点装入和贮存指令。具体地说,定点处理器实行地址计算,以便完成浮点指令的装入和贮存操作。
在该实施例中,具有在由其它的处理器执行上述的指令前执行所分配的指令的能力的一个处理器还具有这样一种能力当指令序列的首指令的执行需要由另一个处理器完成一个操作时,则延迟对其指令的执行。在该例中,如果浮点指令要求定点操作处理器,则浮点处理器将不完成浮点指令。
此外,在本实施例中,一个处理器除了具有在由另一个处理器执行上述指令前执行所分配的指令的能力外,还具有延迟执行一条可中断指令(即一种可给处理器产生一个中断条件的指令),直至在执行其它指令的适当序列位置上执行该可中断指令的这样的能力。
本发明的具有新颖性的特征在权利要求书中作了描述。然而,在结合附图阅读了下面对本发明的最佳实施例的介绍之后,读者将会对本发明本身以及其它的特征和特点有更好的理解。


图1为与一个公用指令缓冲存储器和一个公用存储器相连的两个处理单元的方框图;
图2为说明用于浮点处理器的控制功能的流程图;
图3为说明用于定点处理器的控制功能的流程图;
图4为不产生中断的浮点和定点指令表;
图5为用来执行图4的指令序列的定时图;
图6为包括单个可中断的指令的指令序列表;
图7为用来说明执行图6中的指令序列的定时图;
图8为包括一条实际上不产生中断的可中断指令的一个指令序列;及图9为用来说明执行图8中的指令序列的的定时图。
本发明要解决多处理器的同步问题。具体说来,在所示的本发明的最佳实施例中,要解决在一个定点处理器和一个浮点处理器之间实现同步的问题。这是因为定点处理器必须为在浮点处理器中执行浮点装入和存贮操作而进行地址计算。要执行同步的另一因素则是由于浮点处理器要有能在定点处理器前头执行可中断指令的能力。
图1示出了通过一条代表多控制信号的控制线29与一个浮点处理器8相连的一个定点处理器6。定点处理器6和浮点处理器8又与一个公用指令缓冲存储器10和单个存储器80相连。定点处理器6包括一个与指令缓冲存储器10相连的指令预取缓冲器20。指令预取缓冲器20接收来自指令缓冲存贮器10的指令序列。来自指令预取缓冲器20的指令在译码电路22中被译码,以便向寄存器存储器22和控制电路30提供信息。在该实施例中,定点处理器6的寄存器存储器24包括32个可单独编址的寄存器。寄存器存储器24的输出送至算术逻辑单元26(ALU)。ALU24输出又被送回寄存器存储器24。定点处理器6还包括一个与寄存器存储器24和控制电路30相连的输入/输出电路(I/O)28I/O电路28与外部存储器80相连。定点处理器6的控制电路30控制定点处理器6的内部操作,控制由I/O电路28对外部存储器80的存取及控制与浮点处理器8的同步。
浮点处理器8包括一个与指令缓冲存储器10相连的指令预取缓冲器40。译码电路42对来自指令预取缓冲器40的指令进行译码。译码电路42给浮点处理器控制电路52和寄存器存储器44提供输入信号。寄存器存储器44将其输出信号送至指数加法器电路50和乘法电路48。乘法电路48的输出信号送至加法器54,加法器54随后又将其输出送至舎入电路56。控制电路52还将控制信号输入到指数加法器50、乘法器48、加法器54和舍入电路56。在本实施中,指数加法器为浮点计算实行指数运算,并为乘法器48提供移位控制。乘法器48是一个采用保留进位加法器结构的华莱士树状乘法器。指数加法电路50是一个用来作指数相加或相减的加法电路,进行相乘运算。该指数信息用来补偿加法操作,使加法中引入乘法算子。
舍入电路56递进加法器54的运算结果,从而向寄存器存储器44提供一个经舎入后的结果。浮点处理器8也包括一个与外存储器80相连的输入/输出电路(I/O)46。I/O电路46还与控制电路52相连。如同在定点处理器6一样,控制电路52提供在浮点处理器8中实行的浮点运算的内部控制。此外,浮点控制器52通过线29与定点处理器控制器30相连以便接收来自定点处理器6的诸同步信号。
在本实施例中,如果需要的话,存储器80可用作在定点处理器6和浮点处理器8之间进行数据通信的装置。此外,指令缓冲存储器10为定点处理器6和浮点处理器8两者贮存指令序列。在本实施中指令序列均送至定点处理器6的指令预取缓冲器20和浮点处理器8的指令预取缓冲器40。换言之,两个预取缓冲器20和40均接收同样的指令。
在本实施例中,定点处理器6是一个32位宽的处理单元,而浮点处理器8则是64位宽的处理单元。
图2示出了在浮点处理器的控制单元52中的流程图。具体地说该控制流程表示了在定点处理器6和浮点处理器8之间的同步功能的控制。首先,在图2的步骤100中,将来自指令预取缓冲器40的一条指令转移到译码电路42中。在步骤102中,该指令被译码。在步骤104中,对译出的指令就是否为一条可中断的指令进行判断。为了解释的目的,只认为用于浮点处理器8的装入和贮存的指令是可中断的。如果已译出的指令不是可中断的,则在步骤106中,对该指令就是否为一条浮点指令作出判断。如果不是,控制功能回到步骤100(如果正在翻译的指令实际上是一条定点算法指令,就会发生这种情形),回到步骤106,如果被翻译的指令是一条浮点指令的话,则该指令在步骤108被执行,并在该指令执行完毕后控制功能回到步骤100。
再回来说步骤104。如果译出的指令为一个可中断性指令,则控制电路52进到步骤110以监视清除和同步信号。所述清除和同步信号在图1中用连接定点处理器6的控制电路30和浮点处理器8的控制电路52的线29予以表示。在步骤112中,对是否收到清除信号进行判断,如果是,则所有在指令预取缓冲器40中的指令在步骤116被擦去,而控制流程回到步骤100。如果清除信号还未收到,则在步骤114中对同步信号是否已经出现作出判断。如果同步信号还未出现,则控制流程返回步骤110,去再次监视这两个信号。如果收到了同步信号,则步骤114将控制流程进到步骤106,由步骤106确定要执行的指令是否为浮点指令。以这种方式,浮点处理器8从定点处理器6中接收同步信号。然而应该理解到,如果一个指令是不可中断的,则浮点处理器不需要来自定点处理器中的同步信号。因此按照本发明,可使浮点处理器8在来自由定点处理器6执行的指令的序列前执行诸指令。
在图3中,示出了用于定点处理器6的控制流程。在步骤200中,来自指令预取缓冲器20的下条指令被转移到译码电路22。该指令在步骤202中被译码。在步骤204中,对该指令是一条定点单元指令还是一条浮点单元指令作出判断,如果该指令不是一条定点单元指令,则控制流程进到步骤200。然而,如果该指令系一条定点单元指令,则控制流程进到步骤206。应该认识到,一条浮点装入和一条浮点贮存指令均被定点处理器6考虑成为定点指令,这是因为,它们均需要由定点处理器6作定点地址计数。因此,任何不需要在定点处理器6中进行操作的浮点指令将返回到控制流程的步骤200。另一方面,任何要求定点处理器6进行操作的定点单元指令,或者一条浮点装入或贮存指令将使控制流程进到步骤206去执行该指令。在步骤208中,对该指令是否执行完毕作出判断,如果尚未完毕,则在步骤206中继续执行。一旦指令执行完毕,则流程进到步骤210去确定是否该指令事实上是可中断的。如果该指令是不可中断的,则控制流程返回到步骤200。然而,如果该指令是可中断的,则在步骤212中就一个指令中断实际已否发生作与判断。如果中断尚未发生,则控制流程进到步骤214,由此(见图1)将线29上的同步信号送至浮点处理器8的控制电路52,然后控制流程返回到步骤200。
如果指令中断已经发生,则控制流程进到步骤216,由步骤216,将图1中线29上的清除信号送至浮点处理器8的控制电路52,并清除指令预取缓冲器20。一旦完成步骤216,控制流程返回步骤200。
应该认识到,一个中断之所以造成清除指令缓冲器20和40是因为中断处理软件将被执行,因此留在指令预取缓冲器中的、在该中断发生前就存在的指令将不再被执行。通过清除指令预取缓冲器20和40,指令缓冲存储器10然后就可重新装入在中断过后要执行的合适的指令。
说到图3还要注意的一点是,如果指令是可中断的,则将在步骤216中产生一个清除信号或在步骤214中产生一个同步信号。回忆一下图2,如果一个指令是不可中断的话,则浮点单元将不等待接收任何来自定点处理器6中的同步信号。在图4和5中,示出了两个处理器6和8的操作。图4中示出了一列指令,及其要求执行所列指令的周期号和这些指令是否为可中断的。在图4所列的例子中,没有一个指令是可中断的。然而,其中一个指令(FXU-MUL3)要用4个周期执行。图中FPU代表为一条浮点单元指令,而FXU则代表一条定点单元指令。因此,浮点单元指令将在浮点处理器8中被执行,而定点单元指令则将在定点处理器6中被执行。
图5为用以说明几个周期(1至10)的定点单元处理器6(FXU)和浮点处理器(FPU)的流水线操作的定时图。流水线操作包括转移,译码和执行。同步和清除两项用以说明是否出现同步或清除信号。
参阅图5,在周期1,由定点单元和浮点单元指令预取缓冲器220和40分别都接收指令ADD1。在周期2中,ADD1被译码,而ADD2被转移到预取缓冲器20和40。在周期3中,多指令(MUL3)被转移到缓冲器20和40。ADD2指令都由处理器6和8译码。然而,ADD1指令仅被浮点处理器8执行,因该指令是一个浮点指令。在周期4中,ADD4指令被转移,MUL3指令被译码,而ADD2指令则由定点处理器6执行,因为它是一个定点指令。在周期5中,ADD5指令被转移到缓冲器20和40中。处理器6和8均对ADD4指令进行译码,而MUL3指令则在定点处理器6中被执行。在周期6,ADD5指令保留在缓冲器20中而ADD6指令则被装入到浮点处理器8的缓冲器40中。在定点处理器6中的ADD5指令如其在浮点处理器8中一样被译码。多指令(MUL3)继续在定点处理器6中被执行。应该注意到,虽然浮点指令ADD4为序列之首,该ADD4指令仍要有浮点处理器8来执行。在周期7中,在ADD6指令正在浮点处理器8中被译码的同时,MUL3指令继续在被执行。在周期8,MUL3指令继续在定点处理器6中被执行,而ADD6指令则在浮点处理器8中被执行。在周期9中,虽然ADD6指令已经被浮点处理器执行过,它在定点处理器6中的定点单元中还要被译码。此外,ADD5指令还要在定点处理器6中执行。在周期10中,因为ADD6指令是一条浮点指令,而该指令实际上是在ADD5指令之前被执行的,因而无论哪个处理器将不再会执行任何流水线操作。
图6和图7再次示出了一个用于定点处理器6和浮点处理器8的指令流的例子。然而,在该例子,有一条浮点装入指令要执行。图7示出了以类似于图5中的方式所实行的流水线式操作。因此,对浮点装入操作以前所实行那些流水线操作将不再介绍,因为那些操作同图5中的是一样的。在周期5中,将浮点装入指令装入指令装入到缓冲器20和40。在周期6中,该指令被译码。然而,请注意,此时定点处理器6正在执行一条需要三个周期的多指令MUL3。因此,在周期7中,虽然该装入指令已在浮点处理器中被译出,该指令仍等待在定点处理器6中被执行,因而在该周期中,该装入指令由于要等待在定点处理器6中作地址计算而不能在浮点处理器8中被执行。然而,继该装入指令到达的一条ADD6指令在周期7中被不译码。在周期8中,一旦在定点处理器6中完成装入操作,定点处理器6即给出一个同步信号。一经出现同步信号,浮点处理器8即为装入指令而执行其操作。最后,在周期9,浮点处理器执行ADD6指令。
图8和9又给出了一个指令序列的例子。该指令序列类似于图6,不同之处是,在图6中的只是可中断的一条浮点装入指令,而在图8中现在则是一条可产生中断的定点装入指令。图9又示出了图8指令列的定时图。图9和图7的不同处是在周期8。请注意,在该周期中,定点处理器6发出了一条清除指令,因为此时那条定点装入指令已发生了中断。一旦接收到清除信号,浮点处理器8即清除指令预取缓冲器40中的内容。同时,一旦产生清除信号,定点处理器6将清除其指令预取缓冲器20中的内容。
在本实施例中,如果发生一个页面错误(即不在存储器中),则就会发生对于装入和贮存指令的中断。换言之,就需要有一个数据缓冲存储器,并且如果待装入的一条指令不在数据缓冲存储器或存储器中,则就需实行从一个外部存储器中拿取该数据的操作。从外存取数的操作要占用许多周期,而用于此取数操作的指令序列放置在中断处理程序内。因此,一旦发生中断,指令缓冲存储器10将包含用来完成取数的中断处理程序操作。
虽然本发明已参照上述实施例作了介绍,但这不应被解释为是对本发明的限制。显而易见,熟悉本技术领域的人们还可参考本发明的上述描述,对所公开的实施例作各种修改,因此,毋容置疑,这种修改型或实施例均在本发明的权利要求所载明的确定范围内。
权利要求
1.一种数据处理系统,其特征在于包括一个指令存贮装置,用来贮存至少要求由两个处理器装置实行的指令序列;多个处理器装置,用来执行来自所述指令存贮器装置的指令;指令分配装置,用来向至少一个上述处理器装置分配指令;至少其中一个上述处理器装置包括一种用来在由另一个处理器装置执行指令序列中的一个上述指令前可执行所分配的指令的装置。
2.一个根据权利要求1的数据处理系统,其中所述用于在执行上述指令前执行所分配的指令的装置还包括用于当所述指令要求由另一处理器装置操作时延迟执行序列的首指令的装置。
3.一个根据权利要求1的数据处理系统,其中所述用于在执行上述指令前执行所分配的指令的装置还包括用于延迟执行一条可给所述处理装置产生一个中断条件的可中断指令,直到在顺序执行其它指令的过程中该可中断指令按序被执行为止。
4.一个根据权利要求3的系统,其中上述指令分配装置包括用于检测发生中断、并根据此检测以在中断发生前所分配的次序分配指令序列的装置。
5.根据权利要求4的一个数据处理系统,其中所述用于在执行上述指令前执行所分配的指令的装置还包括用于当所述指令需要由另一处理器装置进行操作时延迟首指令的装置。
6.根据权利要求5的数据处理系统,其中所述指令存储装置贮存有用于至少两个处理器装置的指令序列,而指令分配装置则将每个指令分配给至少两个处理器装置。
7.根据权利要求6的数据处理系统,其中所述的指令序列包括至少一条要求由两个处理器进行操作的指令。
全文摘要
数据系统包括一贮存至少需由两个处理器操作的指令存储缓冲器。二个处理器执行缓冲器中的指令。指令分配电路向处理器分配指令。至少一个处理器具有在由另一个处理器执行指令序列中的上述指令前执行所分配的指令的能力。至少一个处理器具有延迟执行一条可中断指令直到该指令在序列中的适当序列号中能被执行时为止的能力。一旦出现中断,处理器能立即清除缓冲器以存储要执行的中断软件指令。
文档编号G06F9/48GK1044177SQ8910916
公开日1990年7月25日 申请日期1989年12月9日 优先权日1989年1月13日
发明者格里高里·弗雷德里克·格罗霍斯基, 杰姆斯·阿兰·卡尔, 迈洪·恩古岩浮, 大卫·斯科特·雷 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1