專利名稱:數(shù)據(jù)儲(chǔ)存方法與應(yīng)用其的處理器的制作方法
數(shù)據(jù)儲(chǔ)存方法與應(yīng)用其的處理器
技本領(lǐng)域 本發(fā)明是有關(guān)于一種數(shù)據(jù)儲(chǔ)存方法與應(yīng)用其的處理器,且特別是有關(guān)于一種應(yīng)用
于具有管線化處理單元的處理器的數(shù)據(jù)儲(chǔ)存方法與其處理器。
背景技術(shù):
管線(pipeline)是一種能讓指令可以平行執(zhí)行的技術(shù),且能提高處理器的硬件 效能。亦即,使用管線處理方式的處理器將能增加指令的產(chǎn)出率(throughput)(產(chǎn)出率意 指每單位時(shí)間內(nèi)處理器所能完成的指令的數(shù)量)。而且,此種處理器還不會(huì)降低每個(gè)指令 所需的處理時(shí)間。 然而,于某些狀況下,對(duì)造成使用管線處理的處理器的執(zhí)行效能降低,此種狀況稱 之為處理器的危障(hazard)。 一種常見的危障是數(shù)據(jù)危障。舉例來說,在處理時(shí)段中,當(dāng) 處理器于管線中要擷取儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)時(shí),而此儲(chǔ)存數(shù)據(jù)正好為一個(gè)預(yù)定指令 (如加載指令)的執(zhí)行結(jié)果,此時(shí),若此預(yù)定指令尚未產(chǎn)生其執(zhí)行結(jié)果,便會(huì)發(fā)生數(shù)據(jù)危障。 此時(shí),處理器在處理儲(chǔ)存指令時(shí),便需要暫停(stall)此儲(chǔ)存指令的進(jìn)行。如此,將會(huì)造成 處理器的執(zhí)行效率降低。 因此,如何使處理器在發(fā)生數(shù)據(jù)危障時(shí)不需暫停儲(chǔ)存指令的進(jìn)行,來提高處理器 的執(zhí)行效率,乃業(yè)界所致力的課題之一。
發(fā)明內(nèi)容
本發(fā)明是有關(guān)于一種數(shù)據(jù)儲(chǔ)存方法與應(yīng)用其的處理器,能使處理器在發(fā)生數(shù)據(jù)危 障時(shí)不需暫停儲(chǔ)存指令的進(jìn)行。如此,將能增加處理器的指令產(chǎn)出率,減少處理器在執(zhí)行程 序時(shí)所需的時(shí)間,并能提高處理器的執(zhí)行效率。 根據(jù)本發(fā)明的第一方面,提出一種數(shù)據(jù)儲(chǔ)存方法,應(yīng)用于具有管線化(pipeline) 處理單元的處理器。管線化處理單元包括多個(gè)級(jí)(stage),該多個(gè)級(jí)至少包括一來源擷取級(jí) 與一數(shù)據(jù)寫入級(jí)。此方法包括下列步驟。首先,擷取(fetch)儲(chǔ)存指令,并解碼此儲(chǔ)存指令。 接著,使儲(chǔ)存指令進(jìn)入來源擷取級(jí),并判斷是否有遲完成指令(late-done instruction)位 于管線化處理單元中。遲完成指令不落后于儲(chǔ)存指令,且遲完成指令在進(jìn)入數(shù)據(jù)寫入級(jí)之 前產(chǎn)生遲來臨結(jié)果(late-coming result)。之后,若判定有遲完成指令位于管線化處理單 元中,則在儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí)之前,擷取遲來臨結(jié)果。然后,使儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫 入級(jí),并將所擷取的遲來臨結(jié)果儲(chǔ)存至儲(chǔ)存指令所對(duì)應(yīng)的目的存儲(chǔ)器。
根據(jù)本發(fā)明的第二方面,提出一種處理器,包括管線化處理單元及第一暫存單元。 管線化處理單元包括多個(gè)級(jí),該多個(gè)級(jí)至少包括一來源擷取級(jí)與一數(shù)據(jù)寫入級(jí)。管線化處 理單元用以擷取儲(chǔ)存指令,并解碼此儲(chǔ)存指令。管線化處理單元用以使儲(chǔ)存指令依序至少 進(jìn)入來源擷取級(jí)與數(shù)據(jù)寫入級(jí)。管線化處理單元還用以判斷是否有遲完成指令位于管線化 處理單元中。遲完成指令不落后于儲(chǔ)存指令,且遲完成指令在進(jìn)入數(shù)據(jù)寫入級(jí)之前產(chǎn)生遲 來臨結(jié)果。第一暫存單元設(shè)置于數(shù)據(jù)寫入級(jí)之前,用以儲(chǔ)存遲來臨結(jié)果。若管線化處理單元判定有遲完成指令位于管線化處理單元中,則管線化處理單元還用以在儲(chǔ)存指令進(jìn)入數(shù) 據(jù)寫入級(jí)之前,擷取遲來臨結(jié)果。管線化處理單元還用以當(dāng)儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí)時(shí),將 所擷取的遲來臨結(jié)果儲(chǔ)存至儲(chǔ)存指令所對(duì)應(yīng)的目的存儲(chǔ)器。 為讓本發(fā)明的上述內(nèi)容能更明顯易懂,下文特舉實(shí)施例,并配合所附圖式,作詳細(xì) 說明如下。
圖1繪示依照本發(fā)明一實(shí)施例的數(shù)據(jù)儲(chǔ)存方法的流程圖。 圖2繪示依照本發(fā)明一實(shí)施例的數(shù)據(jù)儲(chǔ)存方法的詳細(xì)步驟的流程圖。 圖3繪示乃應(yīng)用本發(fā)明的數(shù)據(jù)儲(chǔ)存方法的處理器的管線化處理單元及指令的處
理順序的一例的示意圖。 圖4繪示乃應(yīng)用本發(fā)明的數(shù)據(jù)儲(chǔ)存方法的處理器的管線化處理單元及指令的處 理順序的另一例的示意圖。 圖5繪示為應(yīng)用本發(fā)明的數(shù)據(jù)儲(chǔ)存方法的處理器的方塊圖。 [主要元件標(biāo)號(hào)說明]
500 :處理器
560 :第二暫存單元 ALU :運(yùn)算邏輯單元指令 I :指令擷取級(jí) M :存儲(chǔ)器存取級(jí) S :來源擷取級(jí) S222:流程步驟SW:儲(chǔ)存指令
320、420、520 :管線化處理單元 540 :第一暫存單元 580 :選擇單元
E :執(zhí)行級(jí) LW :加載指令
MEM :目的存儲(chǔ)器 S110 S140、S202
W :數(shù)據(jù)寫入級(jí)
具體實(shí)施例方式
請(qǐng)參照?qǐng)Dl,其繪示依照本發(fā)明一實(shí)施例的數(shù)據(jù)儲(chǔ)存方法的流程圖。此數(shù)據(jù)儲(chǔ)
存方法應(yīng)用于具有管線化(pipeline)處理單元的處理器。管線化處理單元包括多個(gè)級(jí)
(stage),而該多個(gè)級(jí)包括來源擷取級(jí)與數(shù)據(jù)寫入級(jí)。此方法包括下列步驟。 首先,如步驟S110所示,擷取(fetch)儲(chǔ)存指令,并解碼此儲(chǔ)存指令。 接著,如步驟S120所示,使儲(chǔ)存指令進(jìn)入來源擷取級(jí),并判斷是否有遲完成指令
(late-done instruction)位于管線化處理單元中。遲完成指令不落后于儲(chǔ)存指令,且遲完
成指令在進(jìn)入數(shù)據(jù)寫入級(jí)之前產(chǎn)生遲來臨結(jié)果(late-coming result)。 若判定有遲完成指令位于管線化處理單元中,則執(zhí)行步驟S130,在儲(chǔ)存指令進(jìn)入
數(shù)據(jù)寫入級(jí)之前,擷取遲來臨結(jié)果。接著,如步驟S140所示,使儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí),
并將所擷取的遲來臨結(jié)果儲(chǔ)存至儲(chǔ)存指令所對(duì)應(yīng)的目的存儲(chǔ)器。 茲將圖1的數(shù)據(jù)儲(chǔ)存方法的詳細(xì)步驟說明如下。請(qǐng)參照?qǐng)D2,其繪示依照本發(fā)明一 實(shí)施例的數(shù)據(jù)儲(chǔ)存方法的詳細(xì)步驟的流程圖。 首先,如步驟S202所示,擷取儲(chǔ)存指令。接著,如步驟S204所示,解碼此儲(chǔ)存指令。 解碼此儲(chǔ)存指令之后,便能取得儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器的索引值與用以儲(chǔ)存目的存儲(chǔ)器的地址的暫存器索引值。 然后,如步驟S206所示,使儲(chǔ)存指令進(jìn)入來源擷取級(jí)。接著,如步驟S208所示,判 斷是否有遲完成指令位于管線化處理單元中。 請(qǐng)注意,在一實(shí)施例中,于判斷是否有遲完成指令位于管線化處理單元中時(shí),步驟 S208可還包括下列詳細(xì)步驟首先,判斷儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器的索引值與遲 完成指令所對(duì)應(yīng)的目的地暫存器的索引值是否相同,其中目的地暫存器用以儲(chǔ)存遲來臨結(jié) 果。之后,判斷儲(chǔ)存指令進(jìn)入來源擷取級(jí)之時(shí),遲完成指令是否尚未產(chǎn)生遲來臨結(jié)果。然后, 判斷儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí)之前,遲完成指令是否已經(jīng)產(chǎn)生遲來臨結(jié)果。在一實(shí)施例中, 所產(chǎn)生的遲來臨結(jié)果被儲(chǔ)存于暫存單元中。 若有遲完成指令位于管線化處理單元中,則執(zhí)行步驟S210,將一旗標(biāo)設(shè)為未備妥。
若沒有遲完成指令位于管線化處理單元中,則執(zhí)行步驟S212,將旗標(biāo)設(shè)為已備妥。 接著,在儲(chǔ)存指令位于數(shù)據(jù)寫入級(jí)之前,執(zhí)行步驟S214,判斷旗標(biāo)是否被設(shè)為已備妥。 若旗標(biāo)并非被設(shè)為已備妥,則執(zhí)行步驟S216,從此暫存單元擷取遲來臨結(jié)果。然 后,如步驟S218所示,使儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí),并將所擷取的遲來臨結(jié)果儲(chǔ)存至儲(chǔ)存 指令所對(duì)應(yīng)的目的存儲(chǔ)器。 若旗標(biāo)被設(shè)為已備妥,則執(zhí)行步驟S220,從儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器中 擷取儲(chǔ)存數(shù)據(jù)。然后,如步驟S222所示,使儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí),并將儲(chǔ)存數(shù)據(jù)儲(chǔ)存至 儲(chǔ)存指令所對(duì)應(yīng)的目的存儲(chǔ)器,并結(jié)束本方法。 本發(fā)明的數(shù)據(jù)儲(chǔ)存方法可應(yīng)用于具有管線化處理單元的處理器中,上述的遲完 成指令可為任意指令。在一實(shí)施例中,遲完成指令為加載(load)指令或運(yùn)算邏輯單元 (Arithmetic Logic Unit)指令。茲以兩個(gè)例子將本發(fā)明的遲完成指令說明如下。
第一個(gè)例子 于第一個(gè)例子中,遲完成指令為加載指令LW,而遲完成指令所產(chǎn)生的遲完成結(jié)果 為加載指令LW所產(chǎn)生的加載數(shù)據(jù)。 請(qǐng)參照?qǐng)D3,其繪示乃應(yīng)用本發(fā)明的數(shù)據(jù)儲(chǔ)存方法的處理器的管線化處理單元 320及指令的處理順序的一例的示意圖。管線化處理單元320包括指令擷取級(jí)1、來源擷取 級(jí)S、執(zhí)行級(jí)E、存儲(chǔ)器存取級(jí)M、及數(shù)據(jù)寫入級(jí)W。 于圖3中,繪示為"時(shí)鐘"的方向是表示為時(shí)間的順序,其中,各處理時(shí)段C1 C6 所表示的長(zhǎng)度為一個(gè)機(jī)器周期(machine cycle)。換言之,管線化處理單元320的各級(jí)的處 理時(shí)段為一個(gè)機(jī)器周期。 于此例中,加載指令LW與儲(chǔ)存指令SW是依序被管線化處理單元320在指令擷取 級(jí)I中所擷取。所擷取的加載指令LW與儲(chǔ)存指令SW分別如下
"lw $1,0($2)"
"sw $1,0($3)" 其中,加載指令LW( "lw $1,0($2)")用以將加載數(shù)據(jù)(其被儲(chǔ)存于地址為[$2] 的目的存儲(chǔ)器中)加載至目的地暫存器(其暫存器索引值為$1)中,而儲(chǔ)存指令SW( "sw $1,0($3)")用以將儲(chǔ)存數(shù)據(jù)暫存器(其暫存器索引值為$1)中的數(shù)據(jù)儲(chǔ)存到地址為[$3] 的目的存儲(chǔ)器中。
依據(jù)步驟S208的詳細(xì)步驟,管線化處理單元320將會(huì)判定儲(chǔ)存指令SW所對(duì)應(yīng)的 儲(chǔ)存數(shù)據(jù)暫存器的索引值($1)與加載指令LW所對(duì)應(yīng)的目的地暫存器的索引值($1)是相 同。 再者,如圖3所示,加載數(shù)據(jù)為加載指令LW于進(jìn)入存儲(chǔ)器存取級(jí)M時(shí)(如處理時(shí)段 C4)所產(chǎn)生。故知,管線化處理單元320將會(huì)判定儲(chǔ)存指令SW進(jìn)入來源擷取級(jí)S之時(shí)(如 處理時(shí)段C3),加載指令LW尚未產(chǎn)生加載數(shù)據(jù)。而且,管線化處理單元320還判定儲(chǔ)存指令 SW進(jìn)入數(shù)據(jù)寫入級(jí)W之前(如處理時(shí)段C6之前),加載指令LW已經(jīng)產(chǎn)生加載數(shù)據(jù)。
故知,于第一個(gè)例子中,管線化處理單元320將會(huì)把上述的加載指令LW視為遲完 成指令,而判定有遲完成指令位于管線化處理單元320中。
第二個(gè)例子 于第二個(gè)例子中,遲完成指令為運(yùn)算邏輯單元指令A(yù)LU,而遲完成指令所產(chǎn)生的遲 完成結(jié)果為運(yùn)算邏輯單元指令A(yù)LU所產(chǎn)生的運(yùn)算結(jié)果。 請(qǐng)參照?qǐng)D4,其繪示乃應(yīng)用本發(fā)明的數(shù)據(jù)儲(chǔ)存方法的處理器的管線化處理單元 420及指令的處理順序的另一例的示意圖。于此例中,處理器為能同時(shí)執(zhí)行二個(gè)指令的處理 器,例如為雙通道(two way)的超純量(superscalar)微處理器。管線化處理單元420包 括并列的二個(gè)指令擷取級(jí)I 、 二個(gè)來源擷取級(jí)S、 二個(gè)執(zhí)行級(jí)E、 二個(gè)存儲(chǔ)器存取級(jí)M、及二個(gè) 數(shù)據(jù)寫入級(jí)W。 于此例中,運(yùn)算邏輯單元指令A(yù)LU與儲(chǔ)存指令LW同時(shí)被管線化處理單元420與 420'在指令擷取級(jí)I中所擷取。所擷取的運(yùn)算邏輯單元指令A(yù)LU與儲(chǔ)存指令LW分別如下
"add $1, $1, 1"
"sw $1,0($3)" 其中,運(yùn)算邏輯單元指令A(yù)LU( "add $1,$1,1")用以將儲(chǔ)存于暫存器索引值為$1 的暫存器中的數(shù)值加l,再將運(yùn)算結(jié)果儲(chǔ)存至目的地暫存器(其暫存器索引值為$1)中,而 儲(chǔ)存指令("sw $1,0($3)")用以將儲(chǔ)存數(shù)據(jù)暫存器(其暫存器索引值為$1)中的數(shù)據(jù)儲(chǔ) 存到地址為[$3]的目的存儲(chǔ)器中。 相仿于第一個(gè)例子地,管線化處理單元420亦會(huì)判定儲(chǔ)存指令SW所對(duì)應(yīng)的儲(chǔ)存數(shù) 據(jù)暫存器的索引值($1)與運(yùn)算邏輯單元指令A(yù)LU所對(duì)應(yīng)的目的地暫存器的索引值($1)是 相同。 再者,如圖4所示,運(yùn)算結(jié)果為運(yùn)算邏輯單元指令A(yù)LU于進(jìn)入執(zhí)行級(jí)E時(shí)(如處理 時(shí)段C3)所產(chǎn)生。故知,管線化處理單元420將會(huì)判定儲(chǔ)存指令SW進(jìn)入來源擷取級(jí)s之時(shí) (如處理時(shí)段C2),運(yùn)算邏輯單元指令A(yù)LU尚未產(chǎn)生運(yùn)算結(jié)果。而且,管線化處理單元420 還判定儲(chǔ)存指令SW進(jìn)入數(shù)據(jù)寫入級(jí)W之前(如處理時(shí)段C5之前),運(yùn)算邏輯單元指令A(yù)LU 已經(jīng)產(chǎn)生運(yùn)算結(jié)果。 故知,于第二個(gè)例子中,管線化處理單元420將會(huì)把上述的運(yùn)算邏輯單元指令A(yù)LU 視為遲完成指令,而判定有遲完成指令位于管線化處理單元420中。 于上述兩個(gè)例子中,當(dāng)判定有遲完成指令(如加載指令LW或運(yùn)算邏輯單元指令 ALU)位于管線化處理單元中時(shí),遲來臨結(jié)果(加載數(shù)據(jù)或運(yùn)算結(jié)果)將會(huì)被儲(chǔ)存于暫存單 元540(未繪示于圖3及4中)。之后,在儲(chǔ)存指令SW位于數(shù)據(jù)寫入級(jí)W之前,例如儲(chǔ)存指 令SW在位于存儲(chǔ)器存取級(jí)M或在執(zhí)行級(jí)E (如圖3或圖4的虛線所示)時(shí),再?gòu)拇藭捍鎲卧?40擷取遲來臨結(jié)果。然后,在儲(chǔ)存指令SW進(jìn)入數(shù)據(jù)寫入級(jí)W時(shí),此遲來臨結(jié)果被儲(chǔ)存 至儲(chǔ)存指令SW所對(duì)應(yīng)的目的存儲(chǔ)器。 如此,由圖3及4可知,即使儲(chǔ)存指令SW進(jìn)入來源擷取級(jí)S之時(shí)發(fā)生數(shù)據(jù)危障, 意即處理器尚未能取得遲來臨指令所產(chǎn)生的遲來臨結(jié)果,處理器亦不需暫停此儲(chǔ)存指令SW 的進(jìn)行,只要能在儲(chǔ)存指令SW位于數(shù)據(jù)寫入級(jí)W之前取得此遲來臨結(jié)果,便能完成儲(chǔ)存指 令SW所指示的操作。 因此,本發(fā)明能使處理器在發(fā)生數(shù)據(jù)危障時(shí)不需暫停儲(chǔ)存指令的進(jìn)行。如此,將能 增加處理器的指令產(chǎn)出率,減少處理器在執(zhí)行程序時(shí)所需的時(shí)間,并能提高處理器的執(zhí)行 效率。 此外,本發(fā)明還提出一種可應(yīng)用上述的數(shù)據(jù)儲(chǔ)存方法的處理器。請(qǐng)參照?qǐng)D5,其繪 示為應(yīng)用本發(fā)明的數(shù)據(jù)儲(chǔ)存方法的處理器500的方塊圖。 處理器500包括管線化處理單元520及第一暫存單元540、第二暫存單元560、及 選擇單元580。于一實(shí)施例中,處理器500是能依序處理指令的處理器,或是能同時(shí)執(zhí)行至 少二個(gè)指令的處理器。舉例來說,處理器500的管線化處理單元520可由圖3的能依序處 理執(zhí)令的管線化處理單元320所實(shí)現(xiàn),或可由圖4的能同時(shí)處理二個(gè)指令的管線化處理單 元420所實(shí)現(xiàn),或可由能同時(shí)多個(gè)指令的管線化處理單元所實(shí)現(xiàn)。 管線化處理單元520包括多個(gè)級(jí)。該多個(gè)級(jí)至少包括一來源擷取級(jí)S與一數(shù)據(jù)寫 入級(jí)W。管線化處理單元520用以擷取儲(chǔ)存指令SW,并解碼儲(chǔ)存指令SW。管線化處理單元 520用以使儲(chǔ)存指令SW依序至少進(jìn)入來源擷取級(jí)S與數(shù)據(jù)寫入級(jí)W。 管線化處理單元520還用以判斷是否有遲完成指令位于管線化處理單元520中。 此遲完成指令不落后于儲(chǔ)存指令SW,且遲完成指令在進(jìn)入數(shù)據(jù)寫入級(jí)W之前產(chǎn)生遲來臨結(jié) 果。此遲完成指令例如為上述兩個(gè)例子的加載指令LW或運(yùn)算邏輯單元指令A(yù)LU。
第一暫存單元540是設(shè)置于數(shù)據(jù)寫入級(jí)W之前。相仿地,第二暫存單元560與選 擇單元580亦可設(shè)置于數(shù)據(jù)寫入級(jí)W之前。 茲舉例將兩暫存單元540與560與選擇單元580的設(shè)置方式說明如下。于一實(shí)施 例中,管線化處理單元520的該多個(gè)級(jí)可還包括至少一管線處理級(jí),且此至少一管線處理 級(jí)是設(shè)置于來源擷取級(jí)S與數(shù)據(jù)寫入級(jí)W之間。 舉例來說,管線化處理單元520的該多個(gè)級(jí)可還包括如圖3或圖4所示的存儲(chǔ)器 存取級(jí)M與執(zhí)行級(jí)E。遲完成指令在位于存儲(chǔ)器存取級(jí)M時(shí)產(chǎn)生遲來臨結(jié)果。而儲(chǔ)存指令 SW在進(jìn)行執(zhí)行級(jí)E時(shí)產(chǎn)生對(duì)應(yīng)的目的存儲(chǔ)器MEM的地址。 由于存儲(chǔ)器存取級(jí)M與執(zhí)行級(jí)E皆設(shè)置于數(shù)據(jù)寫入級(jí)W之前,故第一暫存單元540 可設(shè)置于存儲(chǔ)器存取級(jí)M或執(zhí)行級(jí)E。相仿地,第二暫存單元560與選擇單元580亦可設(shè)置 于存儲(chǔ)器存取級(jí)M或執(zhí)行級(jí)E,在一實(shí)施例中,兩暫存單元540及560與選擇單元580是設(shè) 置在同一級(jí),其中,遲來儲(chǔ)存令在位子此級(jí)時(shí)產(chǎn)生遲來臨結(jié)果。 第一暫存單元540用以儲(chǔ)存遲來臨結(jié)果,其是由管線化處理單元520在遲完成指 令產(chǎn)生遲來臨結(jié)果時(shí)所儲(chǔ)存者。第二暫存單元560用以儲(chǔ)存儲(chǔ)存數(shù)據(jù),其是由管線化處理 單元520從儲(chǔ)存指令SW所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器中所擷取者。選擇單元580耦接至兩暫 存單元540及560,用以于管線化處理單元520的控制下提供遲來臨結(jié)果及儲(chǔ)存數(shù)據(jù)的其中之一。
管線化處理單元520還用以當(dāng)儲(chǔ)存指令SW位于來源擷取級(jí)S,而且有遲完成指令 位于管線化處理單元520中時(shí),將一旗標(biāo)設(shè)為未備妥。反之,若沒有遲完成指令位于管線化 處理單元520中時(shí),則管線化處理單元520將旗標(biāo)設(shè)為已備妥,并從儲(chǔ)存指令SW所對(duì)應(yīng)的 儲(chǔ)存數(shù)據(jù)暫存器中擷取儲(chǔ)存數(shù)據(jù),且儲(chǔ)存于第二暫存單元560中。 之后,若旗標(biāo)被設(shè)為未備妥,則管線化處理單元520還用以在儲(chǔ)存指令SW進(jìn)入數(shù) 據(jù)寫入級(jí)W之前,從第一暫存單元540擷取遲來臨結(jié)果。例如管線化處理單元520可控制 選擇單元580,以從第一暫存單元540擷取遲來臨結(jié)果。接著,管線化處理單元520在儲(chǔ)存 指令SW進(jìn)入數(shù)據(jù)寫入級(jí)W時(shí),將所擷取的遲來臨結(jié)果儲(chǔ)存至儲(chǔ)存指令SW所對(duì)應(yīng)的目的存 儲(chǔ)器MEM。 對(duì)應(yīng)地,若旗標(biāo)被設(shè)為已備妥,管線化處理單元520還用以在儲(chǔ)存指令SW進(jìn)入數(shù) 據(jù)寫入級(jí)W之前控制選擇單元580,以從第二暫存單元560擷取儲(chǔ)存數(shù)據(jù)。之后,管線化處 理單元520在儲(chǔ)存指令SW位于數(shù)據(jù)寫入級(jí)W之時(shí),將儲(chǔ)存數(shù)據(jù)儲(chǔ)存至儲(chǔ)存指令SW所對(duì)應(yīng) 的目的存儲(chǔ)器MEM。 于本發(fā)明上述實(shí)施例中,是以處理器具有如圖3或圖4所示的五級(jí)的管線處理單 元為例做說明,其是說明本發(fā)明之用,非用以限制本發(fā)明。本發(fā)明所揭露的數(shù)據(jù)儲(chǔ)存方法與 應(yīng)用其的處理器亦適用于其它類型的管線處理單元。 本發(fā)明上述實(shí)施例所揭露的數(shù)據(jù)儲(chǔ)存方法與應(yīng)用其的處理器,能使處理器在發(fā)生 數(shù)據(jù)危障時(shí)不需暫停儲(chǔ)存指令的進(jìn)行。如此,將能增加處理器的指令產(chǎn)出率,減少處理器在 執(zhí)行程序時(shí)所需的時(shí)間,并能提高處理器的執(zhí)行效率。 綜上所述,雖然本發(fā)明已以實(shí)施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所 屬技術(shù)領(lǐng)域中具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動(dòng)與潤(rùn) 飾。因此,本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。
權(quán)利要求
一種數(shù)據(jù)儲(chǔ)存方法,應(yīng)用于具有管線化處理單元的處理器,該管線化處理單元包括多個(gè)級(jí),該多個(gè)級(jí)至少包括一來源擷取級(jí)與一數(shù)據(jù)寫入級(jí),該方法包括擷取儲(chǔ)存指令,并解碼該儲(chǔ)存指令;使該儲(chǔ)存指令進(jìn)入該來源擷取級(jí),并判斷是否有遲完成指令位于該管線化處理單元中,該遲完成指令不落后于該儲(chǔ)存指令,該遲完成指令在進(jìn)入該數(shù)據(jù)寫入級(jí)之前產(chǎn)生遲來臨結(jié)果;若有該遲完成指令位于該管線化處理單元中,則在該儲(chǔ)存指令進(jìn)入該數(shù)據(jù)寫入級(jí)之前,擷取該遲來臨結(jié)果;以及使該儲(chǔ)存指令進(jìn)入該數(shù)據(jù)寫入級(jí),并將所擷取的該遲來臨結(jié)果儲(chǔ)存至該儲(chǔ)存指令所對(duì)應(yīng)的目的存儲(chǔ)器。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)儲(chǔ)存方法,其中判斷是否有該遲完成指令位于該管線化處理單元中的步驟包括判斷該儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器的索引值與該遲完成指令所對(duì)應(yīng)的目的地暫存器的索引值是否相同,其中該目的地暫存器用以儲(chǔ)存該遲來臨結(jié)果;判斷該儲(chǔ)存指令進(jìn)入該來源擷取級(jí)之時(shí),該遲完成指令是否尚未產(chǎn)生該遲來臨結(jié)果;以及判斷該儲(chǔ)存指令選入該數(shù)據(jù)寫入級(jí)之前,該遲完成指令是否已經(jīng)產(chǎn)生該遲來臨結(jié)果。
3. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)儲(chǔ)存方法,其中擷取該遲來臨結(jié)果的步驟前,該方法還包括當(dāng)該儲(chǔ)存指令位于該來源擷取級(jí),而且有該遲完成指令位于該管線化處理單元中時(shí),將一旗標(biāo)設(shè)為未備妥;以及若該旗標(biāo)被設(shè)為未備妥,則執(zhí)行在該儲(chǔ)存指令進(jìn)入該數(shù)據(jù)寫入級(jí)之前擷取該遲來臨結(jié)果的步驟。
4. 根據(jù)權(quán)利要求l所述的數(shù)據(jù)儲(chǔ)存方法,還包括當(dāng)該儲(chǔ)存指令位于該來源擷取級(jí),而且沒有該遲完成指令位于該管線化處理單元中時(shí),將一旗標(biāo)設(shè)為已備妥,并從該儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器中擷取儲(chǔ)存數(shù)據(jù);以及若該旗標(biāo)被設(shè)為已備妥,則在該儲(chǔ)存指令位于該數(shù)據(jù)寫入級(jí)時(shí),將該儲(chǔ)存數(shù)據(jù)儲(chǔ)存至該儲(chǔ)存指令所對(duì)應(yīng)的該目的存儲(chǔ)器,并結(jié)束本方法。
5. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)儲(chǔ)存方法,還包括在該遲完成指令產(chǎn)生該遲來臨結(jié)果時(shí),將該遲來臨結(jié)果儲(chǔ)存于第一暫存單元。
6. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)儲(chǔ)存方法,其中該多個(gè)級(jí)還包括至少一管線處理級(jí),該至少一管線處理級(jí)是設(shè)置于該來源擷取級(jí)與該數(shù)據(jù)寫入級(jí)之間。
7. —種處理器,包括管線化處理單元,包括多個(gè)級(jí),該多個(gè)級(jí)至少包括一來源擷取級(jí)與一數(shù)據(jù)寫入級(jí),該管線化處理單元用以擷取儲(chǔ)存指令,并解碼該儲(chǔ)存指令,該管線化處理單元用以使該儲(chǔ)存指令依序至少進(jìn)入該來源擷取級(jí)與該數(shù)據(jù)寫入級(jí),該管線化處理單元還用以判斷是否有遲完成指令位于該管線化處理單元中,該遲完成指令不落后于該儲(chǔ)存指令,該遲完成指令在進(jìn)入該數(shù)據(jù)寫入級(jí)之前產(chǎn)生遲來臨結(jié)果;以及第一暫存單元,設(shè)置于該數(shù)據(jù)寫入級(jí)之前,用以儲(chǔ)存該遲來臨結(jié)果;其中,若該管線化處理單元判定有該遲完成指令位于該管線化處理單元中,則該管線化處理單元還用以在該儲(chǔ)存指令進(jìn)入該數(shù)據(jù)寫入級(jí)之前,從該第一暫存單元擷取該遲來臨結(jié)果;其中,該管線化處理單元還用以當(dāng)該儲(chǔ)存指令進(jìn)入該數(shù)據(jù)寫入級(jí)時(shí),將所擷取的該遲來臨結(jié)果儲(chǔ)存至該儲(chǔ)存指令所對(duì)應(yīng)的目的存儲(chǔ)器。
8. 根據(jù)權(quán)利要求7所述的處理器,其中當(dāng)該管線化處理單元判斷是否有該遲完成指令位于該管線化處理單元中時(shí),該管線化處理單元判斷該儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器的索引值與該遲完成指令所對(duì)應(yīng)的目的地暫存器的索引值是否相同,其中該目的地暫存器用以儲(chǔ)存該遲來臨結(jié)果,該管線化處理單元還判斷該儲(chǔ)存指令進(jìn)入該來源擷取級(jí)之時(shí),該遲完成指令是否尚未產(chǎn)生該遲來臨結(jié)果,且該管線化處理單元還判斷該儲(chǔ)存指令進(jìn)入該數(shù)據(jù)寫入級(jí)之前,該遲完成指令是否已經(jīng)產(chǎn)生該遲來臨結(jié)果。
9. 根據(jù)權(quán)利要求7所述的處理器,其中該管線化處理單元還用以當(dāng)該儲(chǔ)存指令位于該來源擷取級(jí),而且有該遲完成指令位于該管線化處理單元中時(shí),將一旗標(biāo)設(shè)為未備妥;其中若該旗標(biāo)被設(shè)為未備妥,則該管線化處理單元在該儲(chǔ)存指令進(jìn)入該數(shù)據(jù)寫入級(jí)之前擷取該遲來臨結(jié)果。
10. 根據(jù)權(quán)利要求7所述的處理器,其中該管線化處理單元還用以當(dāng)該儲(chǔ)存指令位于該來源擷取級(jí),而且沒有該遲完成指令位于該管線化處理單元中時(shí),將一旗標(biāo)設(shè)為已備妥,并從該儲(chǔ)存指令所對(duì)應(yīng)的儲(chǔ)存數(shù)據(jù)暫存器中擷取儲(chǔ)存數(shù)據(jù);其中,若該旗標(biāo)被設(shè)為已備妥,則該管線化處理單元還用以當(dāng)該儲(chǔ)存指令位于該數(shù)據(jù)寫入級(jí)之時(shí),將該儲(chǔ)存數(shù)據(jù)儲(chǔ)存至該儲(chǔ)存指令所對(duì)應(yīng)的該目的存儲(chǔ)器,并不再將該遲來臨結(jié)果儲(chǔ)存至該目的存儲(chǔ)器。
11. 根據(jù)權(quán)利要求7所述的處理器,其中在該遲完成指令產(chǎn)生該遲來臨結(jié)果時(shí),該管線化處理單元將該遲來臨結(jié)果儲(chǔ)存于該第一暫存單元。
12. 根據(jù)權(quán)利要求7所述的處理器,該處理器為能同時(shí)執(zhí)行至少二個(gè)指令的處理器。
13. 根據(jù)權(quán)利要求7所述的處理器,其中該多個(gè)級(jí)還包括至少一管線處理級(jí),該至少一管線處理級(jí)是設(shè)置于該來源擷取級(jí)與該數(shù)據(jù)寫入級(jí)之間。
全文摘要
一種數(shù)據(jù)儲(chǔ)存方法,應(yīng)用于具有管線化處理單元的處理器。管線化處理單元包括多個(gè)級(jí),該多個(gè)級(jí)至少包括來源擷取級(jí)與數(shù)據(jù)寫入級(jí)。此方法包括下列步驟。首先,擷取并解碼儲(chǔ)存指令。接著,使儲(chǔ)存指令進(jìn)入來源擷取級(jí),并判斷是否有遲完成指令位于管線化處理單元中。遲完成指令不落后于儲(chǔ)存指令且在進(jìn)入數(shù)據(jù)寫入級(jí)之前產(chǎn)生遲來臨結(jié)果。之后,若判定有遲完成指令位于管線化處理單元中,則在儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí)之前,擷取遲來臨結(jié)果。然后,使儲(chǔ)存指令進(jìn)入數(shù)據(jù)寫入級(jí),并將所擷取的遲來臨結(jié)果儲(chǔ)存至儲(chǔ)存指令所對(duì)應(yīng)的目的存儲(chǔ)器。
文檔編號(hào)G06F9/38GK101782847SQ200910003578
公開日2010年7月21日 申請(qǐng)日期2009年1月20日 優(yōu)先權(quán)日2009年1月20日
發(fā)明者詹勝淵 申請(qǐng)人:瑞昱半導(dǎo)體股份有限公司