带有指令标识装置的数据处理系统的制作方法

文档序号:6405957阅读:199来源:国知局
专利名称:带有指令标识装置的数据处理系统的制作方法
技术领域
本发明涉及数据处理系统,特别是具有执行一个单独顺序指令的多处理单元的数据处理系统。
在现代Von Neuman体系结构中遇到的一个共同问题是从相同的存储器中存取指令和数据。在现代数据处理系统中,访问存储器与在处理单元中执行指令相比是非常费时间的。访问存储器带来的费时问题由于采用高速缓冲存储器而在一定程度上缓和了,这是一种速度非常快的存储器,与数据处理系统相连,保持频繁使用的信息。然而,如果在高速缓冲存储器中得不到要访问的信息,那么就需要另外的时间去访问主存储器。在传统的流水线数据处理系统中,指令是按顺序、但是是以一种伪并行方式执行的。每条指令被分成几个阶段执行,当执行一个指令阶段时,其它指令的其它阶段也被并行执行。作为流水线处理的结果,指令按顺序并发执行,而指令的顺序关系保持不变。然而,通常当一条指令需要从存储器中提取数据时,数据从存储器中提取时流水线是停止的,这样,在流水线处理中并发式并行执行指令的许多优点就不存在了。本发明的目的就是为了减小由访问存储器而造成的损失。
过去采用的解决这个问题的方法是对一个寄存器进行标识,该寄存器是装入操作的目标(即,寄存器接收从存储器来的数据)。这一技术在1988年12月16日递交的共同未决再申请07/285.827号中讨论过,该申请源于最初是1984年5月31日递交的美国专利4,630,195号。根据该专利申请中阐述的原理,处理机的每个寄存器包括一个标识符存储装置。当指令被执行而不需要从被标识的寄存器中取数据时,指令被允许继续执行。然而,如果执行指令的过程取决于存储在被标识的寄存器中的数据,并且寄存器并没有收到被标识符指出的数据,指令就不能被执行。
本发明的目的是为包括多个处理机的数据处理系统提供一个标识装置,其中在第一处理机中执行指令,而由第二处理机为指令提取所需的数据。本发明通过允许顺序执行流水线指令,从而提供顺序执行指令的能力,同时能够从存贮器中提取数据。
根据本发明,有一个数据处理系统,它包括一个指令执行电路,用于执行第一型指令。取出电路用来从存储器中取出指令,并且根据第二型指令,从存储器中取出数据。还包括一个指令解码器,它对取出的指令解码,并将第一型指令送给指令排队电路,将第二型指令送给取出电路。当执行这些指令所需的数据还未被取出时,指令排队电路存储被解码的第一型指令,并标识这些第一型指令。当执行指令所需的数据已经取出时,清除这些指令的标识符。指令排队电路将去掉标识的指令逐次送给指令执行电路执行。
在最佳实施例中,有一个多处理系统,其中存储器存有指令和数据。在这个最佳实施例中,有两个处理机,用于执行从指令控制单元来的指令。在这个最佳实施例中,第一型指令是浮点指令,它仅仅可以由一个浮点处理机执行。第二型指令是装入指令,用于向浮点处理机寄存器提供浮点数据,并且由定点处理机执行。定点处理机实际上计算放在与存储器相连的总线上的地址,以便存取浮点数据。此外,在最佳实施例中,第一队列用来存储寄存器至寄存器指令和寄存器至存储器指令,而第二队列用来存储存储器至寄存器指令。最佳实施例中的指令解码装置具有对多条并行指令解码的能力。装入指令存储在一个指令队列中(存储器至寄存器队列),与另外的存储在另外队列中的浮点算术指令分开。当浮点算术指令需要数据、而该数据作为装入指令的结果正在被装入时,浮点算术指令在其指令队列中被标识。当一条指令没有标识符,它便提供给浮点处理机执行。
通过参照附图对体现本发明的最佳方式的详细描述,可以更好地理解本发明的上述内容以及其它目的、方面和优点。其中

图1是数据处理系统的框图;
图2是表示位于浮点单元中的指令队列的框图;
图3是表示与浮点单元16中的指令队列互连的指令解码逻辑电路的框图;
图4是表示标识过程的流程图;
图5是表示通过标识过程的指令流的状态图;
图6A是指令的第一序列;
图6B表示图6A中指令序列的流水线执行过程的时序图;
图7A是第二指令序列;
图7B表示图7A中指令序列的流水线执行过程的时序图;
图8A是第三指令序列;
图8B表示图8A中指令序列的流水线执行过程的时序图。
图1表示数据处理系统的框图,该系统包括一个与指令单元12相连的存储器10。指令单元12的输出是两种指令,它们被供给定点处理单元14或浮点处理单元16。定点处理单元包括一个指令队列27,称作“顺序指令执行队列”。浮点处理单元16包括一个指令队列34,它是由定点处理单元14在第二队列30中执行的同步指令,指令队列30包括称作“异步指令”的指令。除了“同步指令”之外,浮点处理单元16的指令执行过程与定点处理单元14的指令执行过程无关。“同步指令”包括装入数据指令,它们将存储器20的数据提供给浮点处理单元16的寄存器。定点处理单元14完成对这些装入指令的地址计算,比如一条索引装入指令的定点计算。定点处理单元14从存储器10中取出数据。然后数据经数据高速缓冲存储器18送至浮点处理单元16中的寄存器。浮点处理单元16的装入数据指令被包含在队列34和27中。装入指令存储的协调通过线29完成。
图2表示一个框图及一个浮点处理单元16。指令由预取缓冲控制器20进行检查,确定这些指令是否有效。如果一条指令是一条有效指令,就将其存储在浮点指令队列22中。然后,这些指令在解码逻辑电路24的控制下,二条指令同时在解码器26和28中被解码。被解码的指令然后送至指令队列30和34,并被放入第一个适用的缓冲器中。除装入数据指令以外的浮点处理单元指令被存储在指令队列30中。这包括所有的浮点处理单元寄存器至寄存器以及寄存器至存储器的操作。浮点处理单元16存储器至寄存器的操作(装入数据指令)存储在指令队列34中。执行控制单元32在适当的时候调度队列30和34中的指令。
在操作过程中,指令队列30中的指令可能要求数据存于浮点处理单元寄存器中。该数据必须在这些指令可以被调度执行之前存储。本发明的标识装置为这些指令的适当管理提供了保证,保证当指令调度时,为这些指令所需的数据已经适当地存于寄存器中。
图3表示本发明的标识机构。该发明由浮点单元16中的电路组成。在浮点单元16中,解码器0的寄存器26和解码器1的寄存器28存储被解码的指令。在解码过程中,利用比较器40、42、44、46和48进行比较,确定正在被解码的任何指令是否依赖于存储在装入指令队列34中(图3中表示为队列存储单元70和72)的装入指令的执行。队列存储单元70和72都包括一个六位“T”描述符,它是浮点执行单元16中的寄存器地址,正在被装入指令装入。这些寄存器地址被输入比较器40、42、44、46和48,与由解码电路26和28中的指令指定的寄存器进行比较。应该懂得,在最佳实施例中,一个浮点指令最多包括三个源寄存器和一个目的寄存器。源寄存器以“A”、“B”和“C”表示。目的寄存器或目标寄存器以“T”表示。在最佳实施例中,浮点执行单元16提供的指令执行乘法和加法即“A*B+C”。根据该格式,乘法/加法运算的结果放入一个目标寄存器“T”中。
如果对任何正在被解码的指令中带有寄存器指示符的寄存器进行正比较,那么当在指令缓冲器62中存储指令时,设置合适的标识符。标识符在标识符控制电路68的控制下存储在一个两位缓冲器64中。缓冲器50、54、58和62对应于图2中的指令队列30。当每条指令被解码,它就存储在第一个可适用的缓冲器中(从用于装入指令的缓冲器72和用于所有其它浮点指令的缓冲器62开始)。因此,所有异步指令(这些指令在浮点执行单元16中执行,不依赖于定点单元14中的指令执行情况)首先存储在缓冲器50中。此外,就存储在缓冲器50、54、58和62中的指令而言,它们各自的标识符分别传送至标识符存储器52、56、60和64。当指令被调度,它便被送至执行电路66。连接标识符控制逻辑电路68,从存储器总线8接收数据准备就绪信号。当接收到数据准备就绪信号时,相应的标识符便变为零。并且,当缓冲器存储单元64中的两个标识符位都为零时,标识符控制逻辑电路将调度缓冲器存储单元62中的指令。用这样的方法,本发明管理指令队列中指令的顺序,保证执行指令要用到的数据在要执行的指令真正被调度之前,已经正确地取出,并且是有效的。
图4以流程图形式表示标识过程。在步骤100确定解码电路中是否存在一条有效指令。如果不是的话,则控制成一回路状,直到存在一条有效指令为止。接下来,在步骤102确定在装入队列1中是否存在一条有效指令。如果在装入队列1中不存在一条有效指令,那么控制回路返回步骤102的开始处。如果在队列1中存在一条有效指令,那么控制进行到步骤106,确定正在取出的操作数对正在解码的指令来说是否是合适的操作数。如果是的话,则控制进行到步骤110,设置指令标识符位1等于1。如果不是的话,则控制进行到步骤112,设置指令标识符位1等于0。以并行的方式,在步骤104,控制确定装入队列0中是否存在一条有效指令。如果不是的话,则控制回路返回步骤104的开始处。如果有一条有效的装入指令存在,则控制进行到步骤108,确定正在取出的操作数对正在解码的指令来说是否是合适的操作数。如果是的话,在步骤114,指令标识符位0设置为1。否则,在步骤116,指令标识符位0设置为0。
参照图3应该懂得,对于存储在四个指令缓冲器50、54、58或62其中之一的指令,可能需要操作数已经被装入,而这些操作数作为存储在缓冲器72和70中的两条装入指令的结果正在被装入。在这种情况下,对于其各自的指令缓冲器50、54、58或62来说,位存储缓冲器52、56、60或64中的两位将包括一个1。当缓冲器72中的装入操作移到执行单元74时,缓冲器70中的操作向下移到缓冲器72,并且标识符缓冲器52、56、60或64的最左边的位移到最右边的位置。因此,如果两个位位置都是1,那么这表明存储在指令缓冲器70和72中的两条装入指令请求数据。同样,如果两个位位置都是0,那么这表明不需要任何正在装入的数据,并且指令可以进行调度以便执行。
图5表示标识顺序以及中止的指令执行的状态图。在第一状态120,当一条指令依赖于在装入缓冲器70中执行的装入指令时,标识符设置为1X,其中“X”表示“不理会”。执行状态置于0,表示指令不能进行调度以便执行。只要那个操作数的数据准备就绪信号是0,过程就保持这一状态。一旦那个操作数的数据准备就绪信号收到了,过程进行到状态122。这表明装入指令从图3中的装入指令缓冲器70传送到装入指令缓冲器72。过程再一次保持122状态,直至收到下一个数据准备就绪信号,这时,过程进行到状态124,其中标识符设置为00,执行状态变为1,表明指令已经被调度以便执行。
图6A表示一个指令序列。在通常的按顺序执行的流水线处理系统的操作中,第一条指令LD0(表示装入寄存器0)将首先被调度以便执行。所有下面的指令都将等待这一条装入寄存器0的指令完成。接下来,乘法指令表示将寄存器2中的内容与寄存器3中的内容相乘,并将结果存于寄存器2中。乘法指令之后是一条装入指令,表示装入寄存器1。最后是一条加法指令,表示将寄存器0中的内容与寄存器1中的内容相加,并将结果存于寄存器4中。
为了这一实例的目的,我们假定奇存器2和3预先已经装入数据。参照图3,在周期0(图6B)装入寄存器0的指令寄存在解码器0寄存器26中,乘法指令寄存在解码器1寄存器28中。在周期2中,由于不依赖于数据,装入寄存器0的指令传送至未完成的装入队列1的寄存器72,并且乘法指令经异步指令缓冲器50、54、58和62传送至执行单元66,以便执行。
在周期1中,装入寄存器1的指令放在解码器0的寄存器26中,并且加法指令放在解码器1的寄存器28中。在周期1,装入寄存器0的指令依然保持在未完成的装入指令队列1的寄存器72中,并且装入寄存器1的指令放在未完成的装入指令队列0的寄存器70中。加法指令放在缓冲器0的寄存器62中,并且标识符寄存器64设置为11,表明加法指令依赖于存储在寄存器70和72中的指令的完成。在周期3,由数据准备就绪线150指示收到了数据准备就绪信号。这表明数据送给浮点执行单元16,以便存储在合适的寄存器中。装入指令依然存储在它们合适的未完成的装入指令队列中寄存器70和72中,并且加法指令依然存储在寄存器62中,同时它的标识符存在标识符存储器60中。在周期4,装入寄存器0的指令从寄存器72中移出,因为它已经完成并被从寄存器70来的装入寄存器1的指令代替。当加法指令在寄存器62中保持时,寄存器64中的标识符复位为01,表明一个装入指令已经完成,该指令所依赖的未完成的装入现在存储在寄存器72中。在周期5,线150上收到第二个数据准备就绪信号。在周期6,由于浮点执行单元16收到了第二条数据,所以加法标识符置于00,并且加法指令调度给执行单元66。
图7A是与图6A类似的第二指令序列。然而,图7A中的指令序列包括一条与乘法指令相反的除法指令。除法指令意味着要比乘法指令占用多得多的周期来完成。在图6B中,乘法指令用一个周期就完成了。而在图7B表示的实例中,除法指令要用七个周期完成。
在周期0,装入指令和除法指令和以前一样放在解码寄存器26和28中(图6A和6B)。在周期1,从解码寄存器28来的除法指令直接存放在执行单元66中。装入寄存器0的指令放在未完成的装入指令队列1的寄存器72中。同样,装入寄存器1的指令放在解码器0的寄存器26中,并且加法指令放在解码器1的寄存器28中。在周期2,装入寄存器1的指令存放在未完成的装入指令队列0的寄存器70中,并且加法指令放在缓冲器0的寄存器62中。此时,标识符控制逻辑电路在寄存器70和72中的装入指令完成时设置标识符,在周期3,线152指出,收到一个数据准备就绪信号。
在周期4,装入寄存器0的指令已经无用了,因为它已经完成,并且数据已经存放在适合的浮点处理单元寄存器中。然后装入寄存器1的指令从寄存器70移至寄存器72。然后标识符控制逻辑电路68将在标识符存储器64中的标识符复位成01,表明数据仅依赖于一条单独的装入指令,并且该装入指令存储在寄存器72中。在周期5,收到第二个数据准备就绪信号。在周期6,在寄存器72中装入1的指令已经无用了,因为它已经完成,并且数据已经存放在适合的浮点处理单元中。标识符控制逻辑电路68将暂时存储在标识符存储器64中的标识符复位成00,表明存储在寄存器58中的加法指令不依赖于数据。然而,除法指令继续执行。在周期7,除法指令仍旧继续执行,因此,缓冲器1的寄存器62中的加法指令不能被调度到执行单元66。在周期8,除法指令终于完成,并且加法指令被调度,在纯粹的顺序执行中保留总共3个周期。
图8A包括第三指令序列,其中两条装入指令被解码,其后是加法指令和乘法指令。这个指令序列的目的是说明不依赖数据的指令(不依赖于未完成的装入的完成)能够被调度至执行单元。在图8B中,装入寄存器0的指令和装入寄存器1的指令分别调度至解码器0的寄存器26和解码器1的寄存器28中。在周期1,装入寄存器0的指令放在未完成的装入指令队列0的寄存器72中。装入寄存器1的指令放在未完成的装入指令队列0的寄存器70中。加法和乘法指令分别放在解码器0的寄存器26和解码器1的寄存器28中。注意加法和乘法指令依赖于装入寄存器0的数据。为了说明该实例的目的,假定已经提供了为这些指令所需要的其它数据(在寄存器5和7中)。在周期2,装入寄存器1的指令和装入寄存器0的指令分别保持在寄存器70和72中,而乘法指令放在缓冲器1的寄存器58中,并且加法指令放在缓冲器0的寄存器62中。由于加法和乘法指令都依赖于寄存器72中正在完成的装入指令,所以二者的标识符都设置为01。这些相应指令的标识符存储在寄存器60和64中。在周期3,线154上收到一个数据准备就绪信号。在周期4,加法指令的标识符在暂时存储的存储器64中复位成00,并且加法指令被调度至指令执行单元66。同时,乘法指令移至缓冲器0的寄存器62,并且其标识符跟着从标识符存储器60移至标识符存储器64。如同加法指令一样,乘法指令的标识符复位成00,表明不依赖数据。同样,在周期4,已经完成的装入0指令无用了。装入寄存器1的指令传送至未完成的装入指令队列1的寄存器72。在周期5,乘法指令调度至执行单元66,而装入寄存器1的指令等待完成。最后,在周期8,线154上收到一个数据准备就绪信号,表明装入寄存器1的指令已经完成。
虽然根据最佳实施例对本发明进行了具体的展示和描述,但是本领域的技术人员应该懂得,在不偏离本发明的范围和精神的前提下,可以在形式和细节上做各种修改。
权利要求
1.一个数据处理系统,其特征在于包括用于执行第一指令的指令执行装置;取出装置,该装置用于从一个存储器中取出指令和根据第二指令从该存储器中取出数据;指令解码装置,用于对取出的指令解码,将所说的第一指令分配给一个指令排队装置,并且将所说的第二指令分配给所说的取出装置;以及所说的指令排队装置,用于存储被解码的第一指令,当为执行所需要的数据还没有被取出时,标识被存储的第一指令,当为执行所需要的数据被取出时,清除所说的第一指令的标识符,并且逐次将去掉标识的第一指令提供给指令执行装置。
2.根据权利要求1的数据处理系统,其特征在于所说的指令排队装置包括一个第一排队装置,用于存储寄存器至寄存器的指令和寄存器至存储器的指令,还包括一个第二排队装置,用于存储存储器至寄存器的指令。
3.根据权利要求2的数据处理系统,其特征在于所说的指令解码装置包括第一和第二指令解码电路装置,用于同时对两条指令解码。
4.根据权利要求3的数据处理系统,其特征在于所说的取出装置包括一个第二指令队列,用于当根据第二指令从存储器中取出数据时,存储所说的第二指令,并且所说的指令排队装置包括这样的装置,它用于存储存储在所说的第二指令队列中的第二指令,与第一指令的存储分开。
5.根据权利要求4的数据处理系统,其特征在于所说的取出装置包括这样的装置,它把根据第二指令取出的数据提供给指令执行装置。
6.根据权利要求5的数据处理系统,其特征在于当为第一指令所需要的数据已经由取出装置存储在指令执行装置中时,所说的指令排队装置清除存储的第一指令的标识符。
7.根据权利要求6的数据处理系统,其特征在于所说的指令解码装置包括比较装置,在执行每条被解码的第一指令时,用于确定是否需要来自于存储在指令排队装置中的第二指令的数据。
8.根据权利要求7的数据处理系统,其特征在于所说的指令排队装置包括多个有序的第一指令存储锁存器,这些锁存器包括第一指令标识符锁存器,用于以一个有序的序列存储第一指令连同各自的标识符,并且所说的指令排队装置还包括这样的装置,它根据第二指令的执行情况,改变所说存储的第一指令和相应标识符的次序。
全文摘要
本数据处理系统包括执行第一型指令的指令执行电路,根据第二型指令从存储器中取指令和数据的取出电路,一个指令解码器用于对取出的指令解码,并将第一型指令分配给指令排队电路,将第二型指令分配给取出电路。当执行第一型指令所需的数据未被取出时,指令排队电路能够存储被解码的第一型指令,同时将这些指令标识;当数据取出时,该电路清除这些指令的标识符,指令排队电路逐次将去掉标识的第一型指令提供给指令执行电路。
文档编号G06F15/16GK1052740SQ90109188
公开日1991年7月3日 申请日期1990年11月17日 优先权日1989年12月20日
发明者特罗伊·奈尔·希克斯, 麦鸿·尼古元福 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1