专利名称:等待管线式总线要求的占用的制作方法
技术领域:
本发明是有关于一种管线式处理,且较特别的是,有关于一种具有可占用等待管线式总线要求的管线式电路的一种微处理器。
背景技术:
管线式处理(pipeline processing)是一种信息(information)处理的方法。管线(pipeline)是由在信息上执行工作的不同单元所组成。信息是在管线的每一个单元中工作。在第一个单元完成其在信息上的工作之后,第一个单元会将信息传递到另一单元。在该信息上的工作会持续进行,直到信息通过管线中的所有单元为止。
管线的优点是可以增加单位时间的处理量。使得在较少的周期(cycle)之内,可以处理更多的指令(instruction)。
虽然管线式处理可以增加指令处理的速度,但其在处理向量(vector)或分支(branch)指令时,仍具有相当问题。分支或向量指令需要微处理器要求与已要求的指令不同的指令顺序。因此会导致不再需要已在管线中的指令。
图1绘示了一个使用管线式处理的现有的微处理器100的方块图。读取单元(fetch unit)连接到译码单元115、向量要求信号165、分支要求信号170、和总线接口单元(BIU)135。译码单元115连接到执行单元120。执行单元120连接到数据存储器存取单元125和读取单元110。数据存储器存取单元125连接到寄存器回写单元(register write-back unit)130和一个存储器160。寄存器文件105连接到读取单元110、译码单元115、执行单元120、和寄存器回写单元130。各单元之间保持通信联络。
总线接口单元135使用一个存储器要求140,同时也被称为读取要求140、一个地址_大小_控制线145、一个指令总线150、和一个等待线155,与读取单元110沟通。
总线接口单元135是一个用来获得和保持预取(prefetched)指令的存储器存储装置。读取单元110从总线接口单元135,要求和读取指令。译码单元115译码所读取的指令。执行单元120执行所译码的指令。数据存储器存取单元125存取存储器160。寄存器回写单元130将从数据存储器存取单元125所接收的结果,写入寄存器文件105。向量要求信号165代表有向量发生。分支要求信号170代表有分支发生。
微处理器100一般会接收指令(如图2所示的n到n+9),将其当成输入信号。读取单元110会从总线接口单元135,要求和拾取指令。如上所述,总线接口单元135会获得并且存储这些指令。总线接口单元135用来降低读取单元110读取一个指令所需的时间。藉由在总线接口单元135中的指令,读取单元110寻找指令并不需要花费额外的时间周期。
当读取单元110拾取指令时,也会同时要求另一个指令。在需要之前先要求指令,就是一般所知的预取(prefetching)。藉由要求总线接口单元135预取指令,可以更加降低读取单元110等待接收指令所需的时间。在读取单元110已经要求指令之后,总线接口单元135在接下来的时间周期期间,会提供有效指令或是等待读取单元110。
每当所要求的指令无法立即提供给读取单元110时,数据接口总线135会藉由驱动启动等待线155,并且等待读取单元110。这意味着读取单元110必须等待以接收要求,而且在做其它预取要求之前,必须等待。然而,读取单元110在接收等待线155之前,已经做第二个要求。因此,在读取单元110取样等待线155,并且将其当成启动之前,已经做了两个要求。
当读取单元110从数据接口总线135接收指令n时,读取单元110接下来会要求指令n+1。在下个时间周期,如果等待线155还未由总线接口单元135驱动启动,则读取单元110会要求n+2。读取单元110接收n+1,译码单元115接收n。这种处理会在微处理器100中持续进行,直到n通过每一个单元,而且结果被写入寄存器文件105为止。
如果在这个处理期间,等待线155已经由总线接口单元135驱动启动,则会迫使读取单元110在接收所要求的指令之前先等待。这个动作会短暂地暂停通过所有单元的指令流。
如前所述,指令会在微处理器100中的各个单元中前进。有些时候,到达执行单元120的指令是一个分支或向量指令。如上所述,分支或向量指令需要微处理器100要求一个不同的指令顺序。因此,在向量或分支指令发生之前,由管线所预取,而且存在管线中的任何指令,目前都不再需要用到。
管线式处理的问题是无法避免不需要的预取指令在管线中继续前进。即使并不需要,但是仍然会处理这些指令,所以这些不需要的指令会降低微处理器的速度。
图2绘示了一个时序图,用来说明在没有向量或分支指令时,发生在微处理器100中的处理。时钟脉冲(clock)205显示时间周期,而地址、大小、控制信号145代表相关的指令要求信息信号。读取要求140识别读取单元110所要求的指令。等待信号155代表总线接口单元135需要额外的时间以获得指令。指令总线150代表读取单元110已经读取有效指令。
如图2所示,除了在n+4指令之外,每一个读取要求140都是在下一个时间周期才被读取。在n+4时,当总线接口单元135寻找n+4和n+5时,会要求一个等待信号155。因此,虽然n+4是在时间周期5被要求,在时间周期7之前,读取单元110并未完全接收该指令。因为指令n+4接收一个启动的等待信号155,在被读取单元110得到之前,读取要求140n+5同时也会被延迟一个额外的时间周期。
图3绘示了一个时序图,用来说明现有的微处理器100如何处理一个不需要的预取指令。向量标示信号(vector indicated)305识别其上发生向量的时钟脉冲信号。如前所述,当向量或分支指令发生时,需要来自总线接口单元135的新指令。因为目前的向量或分支指令需要新指令,所以之前预取的指令将不再被用到。
在图3中,指令n已经被读取单元110所要求。当总线接口单元135正在获得n时,读取单元110会要求n+1。总线接口单元135会传送一个等待信号155给读取单元110,表示目前正在获得n。因此,不会要求在n+1之外的额外指令。在时钟脉冲周期5,n已经被读取,而n+1正在进行中。然而在时间周期3,有一个向量发生,所以必须向总线接口单元135要求新指令。在时间周期6,已经要求新指令V。因为有向量发生,所以不再需要指令n+1。所需要的下一指令是V。然而,图1中的微处理器110在读取指令V之前,依旧会读取不需要的指令n+1。即始并不需要n+1,但是因为仍然必须处理n+1,所以会减慢微处理器100的速度。
已经有一种方法被发展出来解决这种问题,该方法藉由获得两个可能的接下来的指令,其中一个指令是分支指令,而另一个指令是非分支指令,加快管线执行单元的处理速度。然而,这种方法需要同时获得这两个指令。
本发明的实施例是针对用来克服一个或多个前述的问题。
发明内容
为符合本发明,以下将详细说明本发明的实施例。本发明的实施例包括一个管线式处理微处理器。该管线式处理微处理器包括一个存储单元,用来存储指令;以及一个读取单元,用来要求和读取在存储单元中的指令,其中在中断条件时,读取单元会删除一个正在进行中断条件的之前要求的指令。
为符合本发明,以下将详细说明本发明的实施例。本发明的实施例包括一个处理指令的方法。该方法包括下列步骤存储指令;读取和要求所存储的指令;而且在中断条件时,删除一个正在进行所要求指令的之前要求的指令。
图1绘示了一个使用管线式处理的现有的微处理器的方块图。
图2绘示了一个当没有向量或分支指令时,图1中的现有的微处理器的时序图。
图3绘示了一个当有向量或分支指令时,图1中的现有的微处理器的时序图。
图4绘示了一个根据本发明的微处理器的方块图。
图5绘示了一个根据本发明的读取单元和总线接口单元。
图6绘示了一个图5中根据本发明的读取单元和总线接口单元动作的时序图。
附图标记说明100微处理器105寄存器文件110读取单元115译码单元120执行单元125数据存储器存取单元
130寄存器回写单元135总线接口单元140存储器要求(读取要求)145地址_大小_控制线150指令总线155等待线160存储器165向量要求信号170分支要求信号205时钟脉冲305向量标示信号400微处理器405寄存器文件410读取单元415译码单元420执行单元425数据存储器存取单元430寄存器回写单元435总线接口单元440存储器要求(读取要求)445地址_大小_控制线450指令总线455等待线460存储器465向量要求信号470分支要求信号500总线接口单元505下次总线要求组合译码逻辑507等待延迟_1信号510第一多任务器515第二多任务器
517第一D型触发器520第二D型触发器525与门530向量标示信号535下次要求信号540只读取要求信号555FRASC信号560多任务器565D型触发器570译码逻辑具体实施方式
为让本发明的上述和其它目的、特征、和优点能明显易懂,下文特举一优选实施例,并配合所附图式,作详细说明如下。
图4绘示了一个根据本发明的微处理器。读取单元410连接到译码单元415、向量要求信号465、和分支要求信号470。译码单元415连接到执行单元420。执行单元420连接到数据存储器存取单元425,并再接回读取单元410。数据存储器存取单元425连接到寄存器回写单元430和一个存储器460。寄存器文件405连接到读取单元410、译码单元415、执行单元420、和寄存器回写单元430。各单元之间保持通信联络。
总线接口单元435使用一个存储器要求440,同时也被称为读取要求440、地址_大小_控制线445、一个指令总线450、和一个等待线455,与读取单元410沟通。
总线接口单元435是一个用来获得和保持预取指令的存储装置。读取单元410从总线接口单元435,要求和读取指令。译码单元415译码所读取的指令。执行单元420执行所译码的指令。数据存储器存取单元425存取存储器460。寄存器回写单元430将从数据存储器存取单元425所接收的结果,写入寄存器文件405。向量要求信号465代表有向量发生。分支要求信号470代表有分支发生。
读取单元410和总线接口单元435,在本发明中被架构来占用一个等待管线总线要求。
图5绘示了一个根据本发明的读取单元和总线接口单元500。读取单元410可以包括组合译码逻辑(combinational decode logic)505、第一多任务器510、第二多任务器515、第一D型触发器(D flip-flop)517、第二D型触发器520、与门(AND gate)525、和向量标示信号(vector indicated signal)530。下次要求信号(NEXT REQUEST signal)535、只读取要求信号(only FETCHREQUEST)540、向量要求信号465、分支要求信号470、等待线55、和读取要求,地址,大小和控制信号(简称FRASC信号)555代表总线接口单元435从读取单元410所接收的信号。如前所述,FRASC信号同时也被称为图4中的存储器要求440,和地址_大小_控制线信号445。
总线接口单元435包括多任务器560、D型触发器565、和译码逻辑570。
在图5的读取单元410中,分支要求信号465和向量要求信号470连接到下次总线要求组合译码逻辑505。下次总线要求组合译码逻辑505通过向量标示信号530,连接到第一多任务器510的选择控制端,也通过下次要求信号535,连接到第一多任务器510的“1”输入端和第二多任务器515的“0”输入端,并且连接到第二D型触发器520的“Q”输出端。第二多任务器515的输出端连接到第一多任务器510的“0”输入端。第二多任务器515的选择控制端,通过等待延迟_1信号(wait_delay_1)507,连接到第二D型触发器520的“Q”输出端。第二多任务器515的“1”输入端连接到第一D型触发器517的“Q”输出端。第一多任务器510的输出端连接到第一D型触发器517的“D”输入端,并且通过只读取要求信号540,连接到与门525两个输入端的其中之一。第一多任务器510的输出端同时也通过FRASC信号555,传送到总线接口单元435。与门525同时也通过等待线455,将其另一输入连接到总线接口单元435。与门525的输出则喂给第二D型触发器520的“D”输入端。
下次总线要求组合译码逻辑505和第一多任务器510的选择端之间的通信连接是靠向量标示信号530。下次总线要求组合译码逻辑505和第一多任务器510的“1”输入端之间的通信连接是靠下次要求信号535。第一多任务器510的输出端和与门525的输入端之间的通信连接是靠只读取要求信号540。第一多任务器510的输出端和总线接口单元435之间的通信连接是靠FRASC信号555。
分支要求信号465和向量要求信号470,是用来告知下次总线要求组合译码逻辑505,分支或向量指令的要求已经被提出。下次总线要求组合译码逻辑505会送出一个指令要求,本领域技术人员当知其动作。译码逻辑570用来表示在做额外的要求之前,读取单元410必须等待,而且本领域技术人员当知其动作。
在图5的总线接口单元435中,从读取单元410中的第一多任务器510输出的FRASC信号555,会送给多任务器560的“0”输入端。多任务器560的输出端连接到D型触发器565的“D”输入端。D型触发器565的“Q”输出端连接到译码逻辑570,并且接回到多任务器560的“1”输入端。译码逻辑570连接到多任务器565的选择端(toggle),并且输入读取单元410中的与门525。从译码逻辑570到读取单元410中的与门525的一个输入端之间的连接信号,就是熟知的等待信号455。
图6绘示了一个时序图,用来说明图5所示的读取单元410和总线接口单元435的动作。在时脉周期1,执行一个对n的读取要求(存储器要求)440。下次总线要求组合译码逻辑505会产生这个要求。因此,对n的要求会出现在第二多任务器515的“0”输入端和第一多任务器510的“1”输入端。等待延迟1信号507的默认值是逻辑低(low),而且因为等待信号455还未启动,所以第二多任务器515会选择其“0”输入端的信号,并且输出n。在时脉周期1并没有向量标示,因此向量标示信号530会选择第一多任务器510的“0”输入端。第一多任务器510的“0”输入端是由要求n所驱动,所以要求n会是第一多任务器510的输出。
首先,要求n会出现在D型触发器517的“D”输入端。因为没有标示任何等待,所以读取单元410的与门525会有一个来自读取要求信号540的逻辑高输入,和一个来自等待信号455的逻辑低输入。因此,第二D型触发器520的“D”输入端会接收一个逻辑低输入。
因为等待信号455还未启动,所以总线接口单元435的多任务器560会选择“0”输入端的信号。因此,要求n会出现在D型触发器565的“D”输入端。
在时脉周期2,n+1被要求。要求n+1目前会出现在第二多任务器515的“0”输入端和第一多任务器510的“1”输入端。此时,D型触发器517已经被时脉控制住(clocked),而且要求n会出现在其“Q”输出端和第二多任务器515的“1”输入端。因为第二D型触发器520已经被时脉控制在逻辑低,其“Q”输出端会使第二多任务器515选择其“0”输入端的信号。因此,要求n+1会输出到第一多任务器510。因为没有向量标示,所以向量标示信号530是逻辑低。因此,第一多任务器510会选择其“0”输入端的信号,并且输出要求n+1。D型触发器565的“Q”输入端已经将n当成要求用时脉控制,因此会将等待信号455的位准变成逻辑高(high)。因为等待信号455是逻辑高位准,所以多任务器560会切换到逻辑高,并且将n输出到D型触发器565的“D”输入端。逻辑高位准的等待信号455会产生一个逻辑高位准的信号输入到第二D型触发器520的“D”输入端。
在时脉周期3,一个向量已经被标示,因此向量标示信号530是逻辑高。指令V被要求,而且等待信号455是逻辑高。多任务器515的“0”输入端是V。多任务器510的“1”输入端是V。因为第一D型触发器517将要求n+1的值用时脉控制在从其“D”输入端到其“Q”输出端,所以第二多任务器515的“1”输入端是n+1。因为第二D型触发器520用时脉控制在从其前一个“D”输入端到其“Q”输出端,所以等待延迟1信号507是逻辑高。因此,第二多任务器515选择其“1”输入端,并且将n+1输出到第一多任务器510的“0”输入端,而第一多任务器510则选择其“1”输入端,并且输出V。要求V现在会驱动多任务器560的“0”输入端。然而,因为等待信号455仍然是在逻辑高,所以多任务器560选择其“1”输入端,并且输出n。此时,第二D型触发器520的“D”输入端是逻辑高,而第一D型触发器517的“D”输入端是V。
在下一个时间周期(时间周期4),因为D型触发器517将驱动第二多任务器515的“1”输入端,所以仍然要求V,而等待延迟1信号507将是逻辑高,因此导致V驱动第二多任务器515的输出端和第一多任务器510的“0”输入端。因为向量标示信号530目前是逻辑低,所以第一多任务器510的“0”输入端被选取,造成要求V驱动第一多任务器510的输出端。总线接口单元435将持续驱动启动等待信号455,直到其获得要求n的有效指令值为止。这种等待状态的个数会根据实际的应用状况而改变。本领域技术人员应该可以适当地设计等待信号455产生逻辑,以确保适当的运作。
在第五个时脉,仍然是要求V,而且等待信号455将会是逻辑低,代表总线接口单元435将要求n的有效指令值提供给读取单元410。多任务器560的“0”输入端会被选取,而且D型触发器565将会时脉锁住要求V。第二D型触发器520将会时脉锁在逻辑低。
在第六个时钟脉冲周期期间,等待延迟_1信号507是逻辑低,向量标示信号也是逻辑低,而且要求V+1会在FRASC信号555上作多任务。
在第九个时间周期中,等待信号455再一次变成停用(inactive),代表总线接口单元435将要求V的有效指令值提供给读取单元410。
经由占用等待管线总线要求,传送到总线接口单元435的要求中的n+1已经被消除。因此,如图5所示,所读取的要求只会是n和V。
虽然本发明已以一优选实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神与范围内,当可作些许的变动与润饰,因此本发明的保护范围当视所附权利要求所界定者为准。
权利要求
1.一种管线式处理微处理器,包括一存储单元,用来存储多个指令;以及一读取单元,用来从该存储单元的这些指令中,要求和读取一指令,其中,当一中断条件发生时,该读取单元会将该中断条件之前所要求的一指令删除。
2.如权利要求1所述的管线式处理微处理器,其中该存储单元提取这些存储的指令。
3.如权利要求1所述的管线式处理微处理器,其中该读取单元要求该存储单元内提取的这些存储的指令。
4.如权利要求1所述的管线式处理微处理器,其中该存储单元会延迟该读取单元。
5.如权利要求1所述的管线式处理微处理器,其中该中断条件是一向量指令。
6.如权利要求1所述的管线式处理微处理器,其中该中断条件是一分支指令。
7.如权利要求1所述的管线式处理微处理器,其中该微处理器还包括一译码单元,用来译码该指令。
8.如权利要求7所述的管线式处理微处理器,其中该微处理器还包括一执行单元,用来执行该译码过的指令。
9.如权利要求1所述的管线式处理微处理器,其中该微处理器还包括一存储器存取单元,用来存取一存储器。
10.如权利要求1所述的管线式处理微处理器,其中该微处理器还包括一回写单元,用来将一执行过的结果,写入一寄存器文件。
11.如权利要求1所述的管线式处理微处理器,其中该读取单元包括一译码逻辑,用来产生一所要求的指令到该存储单元;以及一存储器,用来存储该所要求的指令和该先前要求的指令。
12.如权利要求11所述的管线式处理微处理器,其中该读取单元还包括一第一D型触发器,耦合到一第一多任务器和一第二多任务器;其中,该第一D型触发器的一输入端,耦合到该第一多任务器的一输出端;其中,该第一D型触发器的一输出端,耦合到该第二多任务器的一输入端;一分支要求信号、一向量要求信号、一第二D型触发器的一输出端、该第二多任务器的一选择控制端、该第二多任务器的另一输入端、该第一多任务器的一输入端、和该第一多任务器的一选择控制端,全都耦合到该译码逻辑;其中,该第二D型触发器的该输出端,也耦合到该第二多任务器的该选择控制端;该第二多任务器的一输出端,耦合到该第一多任务器的另一输入端;一逻辑门的一输出端,耦合到该第二D型触发器的一输入端;该逻辑门的一输入端,耦合到该第一多任务器的该输出端;以及该第一多任务器的该输出端和该逻辑门的另一输入端,一起耦合到该存储单元。
13.如权利要求12所述的管线式处理微处理器,其中该逻辑门是一与门。
14.如权利要求1所述的管线式处理微处理器,其中该存储单元包括一译码逻辑,用来更新来自该读取单元的该所要求的指令;以及一存储器,用来存储该所要求的指令和该先前要求的指令。
15.如权利要求14所述的管线式处理微处理器,其中该存储单元还包括该存储单元的一多任务器的一输出端,耦合到该存储单元的一D型触发器的一输入端;该存储单元的该多任务器的一输入端,耦合到该读取单元;以及该存储单元的该D型触发器的一输出端,耦合到该存储单元的该多任务器的另一输入端和该存储单元的该译码逻辑,其中,该存储单元的该译码逻辑,耦合到该读取单元。
16.一种指令处理方法,包括存储多个指令;读取和要求这些所存储的指令;以及当一中断条件发生时,将该中断条件之前要求的一指令删除。
17.如权利要求16所述的指令处理方法,还包括译码这些所读取的指令。
18.如权利要求17所述的指令处理方法,还包括执行这些所译码的指令。
19.如权利要求18所述的指令处理方法,还包括存取一存储器。
20.如权利要求19所述的指令处理方法,还包括将所执行的结果写入一寄存器文件。
全文摘要
一种改善由分支或向量指令所导致的处理器低效率的方法。因为向量或分枝指令会产生新指令,所以不再需要某些预取的指令。本发明揭露一种占用预取指令,以及使用向量或分支指令取代其的方法。
文档编号G06F9/32GK1460927SQ03148680
公开日2003年12月10日 申请日期2003年6月17日 优先权日2002年11月15日
发明者保罗·J·佩特承, 威廉·V·米勒 申请人:威盛-赛瑞斯公司