数据储存方法及装置 【技术领域】
本发明是有关于一种数据储存方法与应用其的处理器,且特别是有关于一种应用于具有管线化处理单元的处理器的数据储存方法与其处理器。
背景技术
管线(pipeline)是一种能让指令可以平行执行的技术,且能提高处理器的硬件效能。亦即,使用管线处理方式的处理器将能增加指令的产出率(throughput)(产出率意指:每单位时间内处理器所能完成的指令的数量)。而且,此种处理器还不会降低每个指令所需的处理时间。
然而,于某些状况下,对造成使用管线处理的处理器的执行效能降低,此种状况称之为处理器的危障(hazard)。一种常见的危障是数据危障。举例来说,在处理时段中,当处理器于管线中要撷取储存指令所对应的储存数据时,而此储存数据正好为一个预定指令(如加载指令)的执行结果,此时,若此预定指令尚未产生其执行结果,便会发生数据危障。此时,处理器在处理储存指令时,便需要暂停(stall)此储存指令的进行。如此,将会造成处理器的执行效率降低。
因此,如何使处理器在发生数据危障时不需暂停储存指令的进行,来提高处理器的执行效率,乃业界所致力的课题之一。
【发明内容】
本发明是有关于一种数据储存方法与应用其的处理器,能使处理器在发生数据危障时不需暂停储存指令的进行。如此,将能增加处理器的指令产出率,减少处理器在执行程序时所需的时间,并能提高处理器的执行效率。
根据本发明的第一方面,提出一种数据储存方法,应用于具有管线化(pipeline)处理单元的处理器。管线化处理单元包括多个级(stage),该多个级至少包括一来源撷取级与一数据写入级。此方法包括下列步骤。首先,撷取(fetch)储存指令,并解码此储存指令。接着,使储存指令进入来源撷取级,并判断是否有迟完成指令(late‑done instruction)位于管线化处理单元中。迟完成指令不落后于储存指令,且迟完成指令在进入数据写入级之前产生迟来临结果(late‑coming result)。之后,若判定有迟完成指令位于管线化处理单元中,则在储存指令进入数据写入级之前,撷取迟来临结果。然后,使储存指令进入数据写入级,并将所撷取的迟来临结果储存至储存指令所对应的目的存储器。
根据本发明的第二方面,提出一种数据储存装置,包括:撷取储存指令并解码该储存指令的部件;使该储存指令进入该来源撷取级并判断是否有迟完成指令位于该管线化处理单元中的部件,该迟完成指令不落后于该储存指令,该迟完成指令在进入该数据写入级之前产生迟来临结果;若有该迟完成指令位于该管线化处理单元中则在该储存指令进入该数据写入级之前撷取该迟来临结果的部件;以及使该储存指令进入该数据写入级并将所撷取的该迟来临结果储存至该储存指令所对应的目的存储器的部件。
根据本发明的另一方面,提出一种处理器,包括管线化处理单元及第一暂存单元。管线化处理单元包括多个级,该多个级至少包括一来源撷取级与一数据写入级。管线化处理单元用以撷取储存指令,并解码此储存指令。管线化处理单元用以使储存指令依序至少进入来源撷取级与数据写入级。管线化处理单元还用以判断是否有迟完成指令位于管线化处理单元中。迟完成指令不落后于储存指令,且迟完成指令在进入数据写入级之前产生迟来临结果。第一暂存单元设置于数据写入级之前,用以储存迟来临结果。若管线化处理单元判定有迟完成指令位于管线化处理单元中,则管线化处理单元还用以在储存指令进入数据写入级之前,撷取迟来临结果。管线化处理单元还用以当储存指令进入数据写入级时,将所撷取的迟来临结果储存至储存指令所对应的目的存储器。
为让本发明的上述内容能更明显易懂,下文特举实施例,并配合所附图式,作详细说明如下。
【附图说明】
图1绘示依照本发明一实施例的数据储存方法的流程图。
图2绘示依照本发明一实施例的数据储存方法的详细步骤的流程图。
图3绘示乃应用本发明的数据储存方法的处理器的管线化处理单元及指令的处理顺序的一例的示意图。
图4绘示乃应用本发明的数据储存方法的处理器的管线化处理单元及指令的处理顺序的另一例的示意图。
图5绘示为应用本发明的数据储存方法的处理器的方块图。
[主要元件标号说明]
320、420、520:管线化处理单元 500:处理器
540:第一暂存单元 560:第二暂存单元
580:选择单元 ALU:运算逻辑单元指令
E:执行级 I:指令撷取级
LW:加载指令 M:存储器存取级
MEM:目的存储器 S:来源撷取级
S110~S140、S202~S222:流程步骤 SW:储存指令
W:数据写入级
【具体实施方式】
请参照图1,其绘示依照本发明一实施例的数据储存方法的流程图。此数据储存方法应用于具有管线化(pipeline)处理单元的处理器。管线化处理单元包括多个级(stage),而该多个级包括来源撷取级与数据写入级。此方法包括下列步骤。
首先,如步骤S110所示,撷取(fetch)储存指令,并解码此储存指令。
接着,如步骤S120所示,使储存指令进入来源撷取级,并判断是否有迟完成指令(late‑done instruction)位于管线化处理单元中。迟完成指令不落后于储存指令,且迟完成指令在进入数据写入级之前产生迟来临结果(late‑coming result)。
若判定有迟完成指令位于管线化处理单元中,则执行步骤S130,在储存指令进入数据写入级之前,撷取迟来临结果。接着,如步骤S140所示,使储存指令进入数据写入级,并将所撷取的迟来临结果储存至储存指令所对应的目的存储器。
兹将图1的数据储存方法的详细步骤说明如下。请参照图2,其绘示依照本发明一实施例的数据储存方法的详细步骤的流程图。
首先,如步骤S202所示,撷取储存指令。接着,如步骤S204所示,解码此储存指令。解码此储存指令之后,便能取得储存指令所对应的储存数据暂存器的索引值与用以储存目的存储器的地址的暂存器索引值。
然后,如步骤S206所示,使储存指令进入来源撷取级。接着,如步骤S208所示,判断是否有迟完成指令位于管线化处理单元中。
请注意,在一实施例中,于判断是否有迟完成指令位于管线化处理单元中时,步骤S208可还包括下列详细步骤:首先,判断储存指令所对应的储存数据暂存器的索引值与迟完成指令所对应的目的地暂存器的索引值是否相同,其中目的地暂存器用以储存迟来临结果。之后,判断储存指令进入来源撷取级之时,迟完成指令是否尚未产生迟来临结果。然后,判断储存指令进入数据写入级之前,迟完成指令是否已经产生迟来临结果。在一实施例中,所产生的迟来临结果被储存于暂存单元中。
若有迟完成指令位于管线化处理单元中,则执行步骤S210,将一旗标设为未备妥。若没有迟完成指令位于管线化处理单元中,则执行步骤S212,将旗标设为已备妥。
接着,在储存指令位于数据写入级之前,执行步骤S214,判断旗标是否被设为已备妥。
若旗标并非被设为已备妥,则执行步骤S216,从此暂存单元撷取迟来临结果。然后,如步骤S218所示,使储存指令进入数据写入级,并将所撷取的迟来临结果储存至储存指令所对应的目的存储器。
若旗标被设为已备妥,则执行步骤S220,从储存指令所对应的储存数据暂存器中撷取储存数据。然后,如步骤S222所示,使储存指令进入数据写入级,并将储存数据储存至储存指令所对应的目的存储器,并结束本方法。
本发明的数据储存方法可应用于具有管线化处理单元的处理器中,上述的迟完成指令可为任意指令。在一实施例中,迟完成指令为加载(load)指令或运算逻辑单元(Arithmetic Logic Unit)指令。兹以两个例子将本发明的迟完成指令说明如下。
第一个例子
于第一个例子中,迟完成指令为加载指令LW,而迟完成指令所产生的迟完成结果为加载指令LW所产生的加载数据。
请参照图3,其绘示乃应用本发明的数据储存方法的处理器的管线化处理单元320及指令的处理顺序的一例的示意图。管线化处理单元320包括指令撷取级I、来源撷取级S、执行级E、存储器存取级M、及数据写入级W。
于图3中,绘示为“时钟”的方向是表示为时间的顺序,其中,各处理时段C1~C6所表示的长度为一个机器周期(machine cycle)。换言之,管线化处理单元320的各级的处理时段为一个机器周期。
于此例中,加载指令LW与储存指令SW是依序被管线化处理单元320在指令撷取级I中所撷取。所撷取的加载指令LW与储存指令SW分别如下:
“lw $1,0 ($2)”
“sw $1,0 ($3)”
其中,加载指令LW(“lw $1,0 ($2)”)用以将加载数据(其被储存于地址为[$2]的目的存储器中)加载至目的地暂存器(其暂存器索引值为$1)中,而储存指令SW(“sw $1,0 ($3)”)用以将储存数据暂存器(其暂存器索引值为$1)中的数据储存到地址为[$3]的目的存储器中。
依据步骤S208的详细步骤,管线化处理单元320将会判定储存指令SW所对应的储存数据暂存器的索引值($1)与加载指令LW所对应的目的地暂存器的索引值($1)是相同。
再者,如图3所示,加载数据为加载指令LW于进入存储器存取级M时(如处理时段C4)所产生。故知,管线化处理单元320将会判定储存指令SW进入来源撷取级S之时(如处理时段C3),加载指令LW尚未产生加载数据。而且,管线化处理单元320还判定储存指令SW进入数据写入级W之前(如处理时段C6之前),加载指令LW已经产生加载数据。
故知,于第一个例子中,管线化处理单元320将会把上述的加载指令LW视为迟完成指令,而判定有迟完成指令位于管线化处理单元320中。
第二个例子
于第二个例子中,迟完成指令为运算逻辑单元指令ALU,而迟完成指令所产生的迟完成结果为运算逻辑单元指令ALU所产生的运算结果。
请参照图4,其绘示乃应用本发明的数据储存方法的处理器的管线化处理单元420及指令的处理顺序的另一例的示意图。于此例中,处理器为能同时执行二个指令的处理器,例如为双通道(two way)的超纯量(superscalar)微处理器。管线化处理单元420包括并列的二个指令撷取级I、二个来源撷取级S、二个执行级E、二个存储器存取级M、及二个数据写入级W。
于此例中,运算逻辑单元指令ALU与储存指令LW同时被管线化处理单元420与420’在指令撷取级I中所撷取。所撷取的运算逻辑单元指令ALU与储存指令LW分别如下:
“add $1,$1,1”
“sw $1,0 ($3)”
其中,运算逻辑单元指令ALU(“add $1,$1,1”)用以将储存于暂存器索引值为$1的暂存器中的数值加1,再将运算结果储存至目的地暂存器(其暂存器索引值为$1)中,而储存指令(“sw $1,0 ($3)”)用以将储存数据暂存器(其暂存器索引值为$1)中的数据储存到地址为[$3]的目的存储器中。
相仿于第一个例子地,管线化处理单元420亦会判定储存指令SW所对应的储存数据暂存器的索引值($1)与运算逻辑单元指令ALU所对应的目的地暂存器的索引值($1)是相同。
再者,如图4所示,运算结果为运算逻辑单元指令ALU于进入执行级E时(如处理时段C3)所产生。故知,管线化处理单元420将会判定储存指令SW进入来源撷取级S之时(如处理时段C2),运算逻辑单元指令ALU尚未产生运算结果。而且,管线化处理单元420还判定储存指令SW进入数据写入级W之前(如处理时段C5之前),运算逻辑单元指令ALU已经产生运算结果。
故知,于第二个例子中,管线化处理单元420将会把上述的运算逻辑单元指令ALU视为迟完成指令,而判定有迟完成指令位于管线化处理单元420中。
于上述两个例子中,当判定有迟完成指令(如加载指令LW或运算逻辑单元指令ALU)位于管线化处理单元中时,迟来临结果(加载数据或运算结果)将会被储存于暂存单元540(未绘示于图3及4中)。之后,在储存指令SW位于数据写入级W之前,例如储存指令SW在位于存储器存取级M或在执行级E(如图3或图4的虚线所示)时,再从此暂存单元540撷取迟来临结果。然后,在储存指令SW进入数据写入级W时,此迟来临结果被储存至储存指令SW所对应的目的存储器。
如此,由图3及4可知,即使储存指令SW进入来源撷取级S之时发生数据危障,意即处理器尚未能取得迟来临指令所产生的迟来临结果,处理器亦不需暂停此储存指令SW的进行,只要能在储存指令SW位于数据写入级W之前取得此迟来临结果,便能完成储存指令SW所指示的操作。
因此,本发明能使处理器在发生数据危障时不需暂停储存指令的进行。如此,将能增加处理器的指令产出率,减少处理器在执行程序时所需的时间,并能提高处理器的执行效率。
此外,本发明还提出一种可应用上述的数据储存方法的处理器。请参照图5,其绘示为应用本发明的数据储存方法的处理器500的方块图。
处理器500包括管线化处理单元520及第一暂存单元540、第二暂存单元560、及选择单元580。于一实施例中,处理器500是能依序处理指令的处理器,或是能同时执行至少二个指令的处理器。举例来说,处理器500的管线化处理单元520可由图3的能依序处理执令的管线化处理单元320所实现,或可由图4的能同时处理二个指令的管线化处理单元420所实现,或可由能同时多个指令的管线化处理单元所实现。
管线化处理单元520包括多个级。该多个级至少包括一来源撷取级S与一数据写入级W。管线化处理单元520用以撷取储存指令SW,并解码储存指令SW。管线化处理单元520用以使储存指令SW依序至少进入来源撷取级S与数据写入级W。
管线化处理单元520还用以判断是否有迟完成指令位于管线化处理单元520中。此迟完成指令不落后于储存指令SW,且迟完成指令在进入数据写入级W之前产生迟来临结果。此迟完成指令例如为上述两个例子的加载指令LW或运算逻辑单元指令ALU。
第一暂存单元540是设置于数据写入级W之前。相仿地,第二暂存单元560与选择单元580亦可设置于数据写入级W之前。
兹举例将两暂存单元540与560与选择单元580的设置方式说明如下。于一实施例中,管线化处理单元520的该多个级可还包括至少一管线处理级,且此至少一管线处理级是设置于来源撷取级S与数据写入级W之间。
举例来说,管线化处理单元520的该多个级可还包括如图3或图4所示的存储器存取级M与执行级E。迟完成指令在位于存储器存取级M时产生迟来临结果。而储存指令SW在进行执行级E时产生对应的目的存储器MEM的地址。
由于存储器存取级M与执行级E皆设置于数据写入级W之前,故第一暂存单元540可设置于存储器存取级M或执行级E。相仿地,第二暂存单元560与选择单元580亦可设置于存储器存取级M或执行级E,在一实施例中,两暂存单元540及560与选择单元580是设置在同一级,其中,迟来储存令在位于此级时产生迟来临结果。
第一暂存单元540用以储存迟来临结果,其是由管线化处理单元520在迟完成指令产生迟来临结果时所储存者。第二暂存单元560用以储存储存数据,其是由管线化处理单元520从储存指令SW所对应的储存数据暂存器中所撷取者。选择单元580耦接至两暂存单元540及560,用以于管线化处理单元520的控制下提供迟来临结果及储存数据的其中之一。
管线化处理单元520还用以当储存指令SW位于来源撷取级S,而且有迟完成指令位于管线化处理单元520中时,将一旗标设为未备妥。反之,若没有迟完成指令位于管线化处理单元520中时,则管线化处理单元520将旗标设为已备妥,并从储存指令SW所对应的储存数据暂存器中撷取储存数据,且储存于第二暂存单元560中。
之后,若旗标被设为未备妥,则管线化处理单元520还用以在储存指令SW进入数据写入级W之前,从第一暂存单元540撷取迟来临结果。例如:管线化处理单元520可控制选择单元580,以从第一暂存单元540撷取迟来临结果。接着,管线化处理单元520在储存指令SW进入数据写入级W时,将所撷取的迟来临结果储存至储存指令SW所对应的目的存储器MEM。
对应地,若旗标被设为已备妥,管线化处理单元520还用以在储存指令SW进入数据写入级W之前控制选择单元580,以从第二暂存单元560撷取储存数据。之后,管线化处理单元520在储存指令SW位于数据写入级W之时,将储存数据储存至储存指令SW所对应的目的存储器MEM。
于本发明上述实施例中,是以处理器具有如图3或图4所示的五级的管线处理单元为例做说明,其是说明本发明之用,非用以限制本发明。本发明所揭露的数据储存方法与应用其的处理器亦适用于其它类型的管线处理单元。
本发明上述实施例所揭露的数据储存方法与应用其的处理器,能使处理器在发生数据危障时不需暂停储存指令的进行。如此,将能增加处理器的指令产出率,减少处理器在执行程序时所需的时间,并能提高处理器的执行效率。
综上所述,虽然本发明已以实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视所附的权利要求范围所界定者为准。