欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于寄存器重命名的可用寄存器控制的制作方法

文檔序號:11828779閱讀:191來源:國知局
用于寄存器重命名的可用寄存器控制的制作方法與工藝

本公開涉及數(shù)據(jù)處理領域,尤其涉及寄存器重命名。



背景技術:

數(shù)據(jù)處理裝置可以支持寄存器重命名,其中,響應于指令,由該指令指定的架構寄存器區(qū)分符(architectural register specifier)被映射至所要訪問的物理寄存器。



技術實現(xiàn)要素:

至少一些示例可以提供數(shù)據(jù)處理裝置,該裝置包括:寄存器重命名電路,被配置為:響應于指令,將由所述指令指定的架構寄存器區(qū)分符映射至將被訪問的物理寄存器;可用寄存器控制電路,被配置為控制哪些物理寄存器可用于由所述寄存器重命名電路映射至架構寄存器區(qū)分符;其中,針對至少一個具有兩個或更多個物理寄存器的組,所述可用寄存器控制電路被配置為根據(jù)組追蹤指示信息來控制所述組的物理寄存器是否可用,所述組追蹤指示信息指示是否存在對所述組中的任意物理寄存器的至少一個待決訪問。

至少一些示例可以提供數(shù)據(jù)處理裝置,該裝置包括:用于映射的裝置,該裝置響應于指令,將由所述指令指定的架構寄存器區(qū)分符映射至將被訪問的物理寄存器;用于控制的裝置,該裝置控制哪些物理寄存器可用于由所述用于映射的裝置映射至架構寄存器區(qū)分符;其中,針對至少一個具有兩個或更多物理寄存器的組,所述用于控制的裝置被配置為根據(jù)組追蹤指示信息來控制所述組的物理寄存器是否可用,所述組追蹤指示信息指示是否存在對所述組中的任意物理寄存器的至少一個待決訪問。

至少一些示例可以提供數(shù)據(jù)處理方法,該方法包括:響應于指令,將 由所述指令指定的架構寄存器區(qū)分符映射至將被訪問的物理寄存器。該方法還包括,對于物理寄存器的至少一個組:維護組追蹤指示信息,該信息表示是否存在對所述組中的任意物理寄存器的至少一個待決訪問;根據(jù)所述組追蹤指示信息,控制所述組的物理寄存器是否在映射步驟中可用于映射至架構寄存器區(qū)分符。

附圖說明

從以下對于示例的描述中,結合附圖而理解,本技術的更多方面、特征和優(yōu)勢將變得明顯,在附圖中:

圖1示意地表述了包括寄存器重命名電路的數(shù)據(jù)處理裝置的一部分;

圖2示出了用于控制哪些寄存器電路可用于重命名的可用寄存器控制電路的示例;

圖3示出了發(fā)布隊列的示例,用于對等待發(fā)布用于執(zhí)行的指令進行排隊;

圖4示出了解碼邏輯的示例,用于對物理寄存器區(qū)分符進行解碼以生成用于使計數(shù)器遞增或遞減的信號;

圖5示出了用于追蹤通過待決指令仍在被讀取的物理寄存器的另一示例;

圖6和圖7示出了使用組計數(shù)器追蹤對一組物理寄存器的待決引用的方法;

圖8示出了使用組計數(shù)器以控制寄存器組是否可用于重命名的方法;

圖9示出了在架構寄存器區(qū)分符和物理寄存器之間生成新的寄存器映射的方法;

圖10示出了追蹤完成未完結(outstanding)寄存器寫入的方法;

圖11示出了追蹤在取消投機(speculative)指令之后為了恢復此前的狀態(tài)仍然可能需要哪些物理寄存器的方法;

圖12示出了控制哪些寄存器可用于重命名的方法;

圖13示出了具有用于待決指令的間隙(slot)的發(fā)布隊列的示例;

圖14和圖15示出了追蹤指示信息的其它示例,該信息用于追蹤對寄 存器的對應組的待決訪問。

具體實施方式

現(xiàn)在,本技術的一些示例將在以下被描述。

數(shù)據(jù)處理裝置可以具有寄存器重命名電路,用于響應于指令,將由該指令指定的架構寄存器區(qū)分符映射至被訪問的物理寄存器。盡管從程序員視角,該指令可能能夠指定某數(shù)量的架構寄存器區(qū)分符,但該裝置實際上可能具有更大量的物理寄存器。在沒有寄存器重命名時,對同一架構寄存器進行寫入的兩個指令將不得不按順序執(zhí)行以確保隨后的指令使用該架構寄存器的正確值。然而,通過使用寄存器重命名以將同一架構寄存器映射至用于兩個指令的不同物理寄存器,這可以允許兩個指令被同時執(zhí)行或亂序執(zhí)行,這將有助于提高性能。

一旦物理寄存器已被映射至架構寄存器區(qū)分符,在需要該物理寄存器的當前映射的指令已訪問該寄存器之前(在一些情況下還包括此后一段時間),可能希望避免該物理寄存器被重映射至另一架構寄存器區(qū)分符。因此,可以提供可用寄存器控制電路,以控制哪些物理寄存器可用于由寄存器重命名電路映射至架構寄存器區(qū)分符。

對哪些物理寄存器可用于重命名進行的控制可能較為復雜??赡艽嬖谝恍┡c控制電路相關的開銷,該控制電路用于監(jiān)視某些物理寄存器是仍然被需要還是應當被設為可用于重映射至其它架構寄存器區(qū)分符。更為精確的方法可能能夠以更高的準確度追蹤哪些已分配的物理寄存器仍然被需要,以使物理寄存器能更快地被重新請求,這將有助于提高性能,但是這可能有代價:實施更為精確的控制邏輯需要更大的電路面積和更大的泄漏。在另一方面,實施較不精確的技術在電路面積和能耗(泄漏)方面而言代價可能較低,但是如果它在使已分配的物理寄存器可用于再次重命名上更為保守,那么這可能需要更大量的物理寄存器以維持給定水平的性能,或者,對于給定數(shù)目的寄存器,如果物理寄存器不能在重命名后足夠快地可用,并且沒有足夠的物理寄存器來處理特定的一組指令,則可能限制性能。因此,在性能和能量效率之間需要實現(xiàn)平衡。

當確定寄存器重命名電路是否要使物理寄存器可用于映射至架構寄存器區(qū)分符時,存在可以考慮的各種因素。一個示例可以是:是否存在對物理寄存器的任何待決訪問。例如,待決訪問可以是響應于指令而從物理寄存器讀取數(shù)據(jù)值的讀取操作。

一種方法可以是:針對每個單獨的物理寄存器檢測訪問是否待決,并根據(jù)訪問是否待決來控制該物理寄存器的可用性。然而,一些系統(tǒng)可能具有較大數(shù)目的物理寄存器(例如,128個寄存器)且可以支持較大數(shù)目的未完結寄存器訪問,因此,檢驗每一個寄存器是否具有待決訪問在邏輯、范圍和能耗方面而言可能成本非常高。

替代地,可用寄存器控制電路可以具有至少一個組追蹤指示信息,該信息指示了是否存在對相應一組兩個或更多個寄存器中任一者的至少一個待決訪問。因此,對該組中的任意一個物理寄存器的訪問被利用公共的組指示信息來追蹤,與給每個寄存器提供單獨的追蹤相比,這在電路面積和能耗方面成本可以較低,因為不必辨別該組中的哪個特定寄存器具有該待決訪問。

例如,當用于一組物理寄存器(包括不可用的物理寄存器)的組追蹤指示信息表明存在對該組中的至少一個物理寄存器的至少一個待決訪問時,可用寄存器控制電路可以阻止不可用的物理寄存器變得可用。即使該待決訪問針對的是與該不可用的物理寄存器相同組中的另一寄存器,也可以防止使不可用的寄存器變得可用。

如果存在對同一組中任何寄存器的待決訪問,就阻止物理寄存器變得可用,這可能看來是反直覺的,因為看起來好像會限制性能——它可能不必要地阻止寄存器被重新請求(即使不存在對該寄存器的待決訪問)。然而,發(fā)明人發(fā)現(xiàn),在實際中,對寄存器的待決訪問的追蹤進行分組實際上不會顯著限制性能。雖然如果組追蹤指示信息的表明表示存在對該組中的一個寄存器的待決訪問,則組追蹤指示信息可以阻止不可用的寄存器變得可用,但是這不阻止同一組中已經(jīng)可用的寄存器被寄存器重命名電路選擇來重命名和映射至新的架構寄存器區(qū)分符。因此,實際上,只有在對該組中的任意寄存器的最后待決訪問完成之前該組中的所有寄存器都變得不可 用(這在實際中通常不會發(fā)生),才會出現(xiàn)對性能的影響。在許多情形下,對已分配的寄存器的待決讀取可以在同一組中的另一寄存器被重命名電路分配之前完成,因此在一組寄存器之間有效地共享單個計數(shù)器可以是更為有效的,所以對每個寄存器的待決訪問進行計數(shù)的額外開銷可能并不合理。

可以有多種方法追蹤對組中寄存器的待決訪問。一種可能性可以是提供追蹤值,如果存在對相應組中的任一寄存器的待決訪問,該追蹤值取第一值,而如果不存在待決訪問,該追蹤值取第二值。在這種情形下,追蹤指示信息可以僅僅表示二進制的是/否,表明是否存在對相應組寄存器的至少一個待決訪問,并且除了指出是否存在至少一個待決訪問以外,不需要辨別多少訪問是待決的。

然而,其它示例可以提供組計數(shù)器,用于計算對組中的任一物理寄存器組的待決訪問的總數(shù)。實施這一方法在實際中可能更為有效,因為它可以不需要解碼電路來解碼由每一個待決訪問指定的寄存器區(qū)分符。

例如,組追蹤指示信息可以追蹤處理流水線的某部分中待決的寄存器訪問。在一些情形下,該裝置可以包括寄存器讀取單元,對于至少一些指令,對寄存器的讀取訪問發(fā)生在該單元中。組計數(shù)器可以被提供,以表示寄存器讀取單元中的待決指令對相應的寄存器組中任一物理寄存器的引用的數(shù)目。當組計數(shù)器表示寄存器讀取單元中有待決指令引用該組中的寄存器之一時,可用寄存器控制電路可以阻止該組寄存器變得可用于重命名。例如,在一些系統(tǒng)中,數(shù)據(jù)值可以從寄存器讀取,而指令在發(fā)布隊列中待決,該隊列用于對等待執(zhí)行的指令進行排隊。在這種情形下,寄存器讀取單元可以是該發(fā)布隊列。在其它系統(tǒng)中,寄存器讀取可以直到流水線的執(zhí)行階段才發(fā)生,因此寄存器讀取單元可以是用于執(zhí)行指令的執(zhí)行單元。

用于追蹤未完結訪問的數(shù)目的一種方法可以是對寄存器讀取單元內(nèi)待決的每個指令內(nèi)的物理寄存器的引用進行解碼。然而,在實際中,寄存器讀取單元可能支持較大數(shù)目的待決指令,并且每個指令可能引用多個寄存器,因此這可能導致較大量的解碼邏輯,這可能增大電路面積和能耗。

在組追蹤指示信息是組計數(shù)器的情況下,更為有效的方法可以是檢測 由進入或離開寄存器讀取單元的待決指令對物理寄存器的引用,這可以在每個周期需要解碼更少的寄存器引用。例如,當引用給定組的任一寄存器的指令被提供給寄存器讀取單元時,針對該組的對應的組計數(shù)器可以被遞增。當引用該物理寄存器組之一的指令被從該寄存器讀取單元移除或者在該寄存器讀取單元中完成處理時,對應的組計數(shù)器可以被遞減。因為指令成功地在寄存器讀取單元中完成處理,或者因為指令已被取消(例如,由于錯誤預測分支、錯誤投機載入、對載入/存儲的取消、或意味著該指令不應當被執(zhí)行的其它事件),指令可以從寄存器讀取單元移除。一些指令可以指定多個寄存器,因此該指令在被提供給寄存器讀取單元或者從寄存器讀取單元移除時,可以使幾個組計時器被遞增或遞減。當在寄存器讀取單元中不存在待決指令(這些指令需要相應一組物理寄存器之一)時,組計數(shù)器可以被初始化為預定值。例如,該預定值可以為零(盡管也可以使用其它值)。當用于一組物理寄存器(包括不可用的物理寄存器)的組計數(shù)器具有不同于該預定值的任意值時,可用寄存器控制電路可以阻止該不可用的物理寄存器變得可用于重映射至另一架構寄存器區(qū)分符。

術語“遞增”和“遞減”在本申請中表示把組計數(shù)值調整預定的量,“遞增”和“遞減”之一對應于將該預定的量加到該計數(shù)值,另一者對應于從該計數(shù)值減去該預定的量。通常,該預定的量可以是1,“遞增”可以對應于將1加到計數(shù)值,且“遞減”可以對應于從計數(shù)值減1。然而,其它值也可以用作該預定的量,或者,在一些情形下,計數(shù)器可以起始于較高的值,且“遞增”對應于減法,“遞減”對應于加法。

在另一示例中,寄存器讀取單元可以具有若干間隙用于存儲待決寄存器讀取的指示信息,并且該組追蹤指示信息可以是哪些間隙保持待決寄存器讀取(這些讀取指定來自相應組的寄存器)的指示信息。當組追蹤指示信息表示有寄存器讀取單元的至少一個間隙存儲了對相應的組中的任一物理寄存器的待決寄存器讀取的指示信息時,能夠阻止不可用的寄存器變得可用于重命名。

每一組中的寄存器的數(shù)目可以被選擇來在性能與電路面積或能量效率之間平衡??梢赃x擇較大或較小的組,取決于特定實施的需求。

在一種極端情形下,寄存器的組可以包括所有物理寄存器,使得僅一組寄存器被提供,并且單組追蹤指示信息追蹤對該組中的任何寄存器的待決訪問。在這種情形下,如果確實存在對任何物理寄存器的待決訪問,可以避免釋放此前分配的物理寄存器。這一點可能看起來反直覺,但是如以上所提到的,這仍然可以允許分配可用的物理寄存器,并且僅當所有的寄存器變?yōu)椴豢捎脮r,組追蹤指示信息才會阻止釋放寄存器(如果存在任何未完結待決訪問),而這不可能經(jīng)常發(fā)生(如果分配所有的寄存器需要一些時間的話)。由于這一方法中與組追蹤指示信息以及相關邏輯有關的面積和泄漏開銷是最小的,所以在一些實施方式中,在開始再次重新分配寄存器之前有偶爾的延遲以清除積壓的未完成的寄存器訪問可能是值得的。

然而,在其它實施方式中,可以存在兩個或更多個寄存器組,每個組具有對應的組追蹤指示信息和可用寄存器控制電路,該電路根據(jù)對應的組計數(shù)器來控制該組的物理寄存器是否可用。

例如,對于組計數(shù)器的示例,如果存在Z個物理寄存器,每一組包括G個物理寄存器,其中2≤G≤Z,并且寄存器讀取單元能夠處理多達M個待決寄存器讀取,那么可以提供Z/G個組計數(shù)器,并且每個組計數(shù)器可以具有至少N位,其中N是大于或等于log2(M×G+1)的最小整數(shù)。N位計數(shù)器足以對對物理寄存器組的待決寄存器讀取進行計數(shù),即使寄存器讀取單元中的每個待決寄存器讀取都指定同一組內(nèi)的寄存器。相比而言,如果每個寄存器具有單獨的計數(shù)器,那么這將需要Z個或更多個log2(M+1)位的計數(shù)器,這將需要更多能耗高的電路,不僅由于具有更多計數(shù)器,而且由于具有更復雜的邏輯以解碼指令內(nèi)的寄存器區(qū)分符并將它們映射至對應的控制信號(以遞增或遞減這些計數(shù)器)。

追蹤對組內(nèi)寄存器的訪問的一個優(yōu)勢在于,當更新該至少一個組追蹤指示信息時,需要考慮的寄存器區(qū)分符的比特可以更少。例如,如果用R位寄存器區(qū)分符來標識物理寄存器,其中R為整數(shù),則響應于檢測到特定的寄存器引用,基于寄存器區(qū)分符的少于R位,可用寄存器控制電路即可以選擇哪個組追蹤指示信息要被升級。這可以降低用于對寄存器區(qū)分符進行解碼和對組追蹤指示信息進行更新所需的解碼電路的量。例如,如果寄 存器被分組為8個一組,那么可以無需考慮寄存器區(qū)分符的最低3位。

當確定哪些寄存器可用于由寄存器重命名電路選擇時,除了考慮是否存在對各組物理寄存器的任何待決訪問以外,可用寄存器控制電路還可以考慮其它因素。因此,當確定可以使哪些寄存器可用于重命名時,組追蹤指示信息可以不是被考慮的唯一信息。因此,盡管如果相應的組追蹤指示信息表示存在對相應的組中的寄存器的待決訪問,則可以阻止寄存器變得可用時,但反過來不一定成立——即使組追蹤指示信息表示不存在對寄存器的對應組的待決訪問,這也不一定意味著可以使該寄存器可用??梢源嬖谄渌蛴糜诒A艏拇嫫饕员Wo它們不被重分配。

例如,當確定是否可以使寄存器可用于重命名時,除(一個或多個)組追蹤指示信息以外,也可以考慮以下參數(shù)中的任一個:

●物理寄存器當前是否被映射至架構寄存器區(qū)分符的指示信息;

如果物理寄存器當前被映射至架構寄存器區(qū)分符,則該物理寄存器中存儲的數(shù)據(jù)值代表當前的架構狀態(tài),如果允許后續(xù)指令寫入同一寄存器,則該架構狀態(tài)可能丟失。通過指示出當前被映射至架構寄存器區(qū)分符的物理寄存器為不可用于重命名,可以避免這種情況。

●是否存在對物理寄存器的未完成寫入的指示信息;

在寫入物理寄存器的任何待決被完成之前都阻止該寄存器變得可用于重命名,這可以保護免受寫入之后寫入(write-after-write)的風險,在該風險中,兩個寫入操作以錯誤順序完成可能導致其它指令訪問錯誤的值。

●表示是否存在未解決的投機指令的指示信息,該投機指令指定此前被映射至該物理寄存器的架構寄存器區(qū)分符。

一些系統(tǒng)可以支持一些指令的投機執(zhí)行。例如,可以用分支預測器預測分支的輸出結果,并且取決于該分支被預測采用或不采用,一些指令可以在該分支之后被投機地執(zhí)行。其它投機指令可以包括載入/存儲指令,這些指令可以被投機地執(zhí)行(例如,假定不存在由于訪問權限不足而造成的異常)。指令如果跟隨在另一投機性指令之后,則也可以被認為是投機性的。如果對給定指令的投機結果是正確的,則性能得以提升,因為確定該指令是否應當被執(zhí)行所需的延遲并未延遲該指令的實際執(zhí)行。然而,如果 確定該投機結果是錯誤的,該指令不應當執(zhí)行或者指令的結果是不正確的,則該指令的執(zhí)行可以被取消,并可能需要恢復此前的寄存器狀態(tài)。因此,當針對由投機指令指定的架構寄存器生成新的寄存器映射時,此前被映射至同一架構寄存器的物理寄存器的指示信息可以被保持,并且可以使該物理寄存器不可用于被寄存器重命名電路選擇,從而,如果該投機指令必須被取消,物理寄存器內(nèi)的數(shù)據(jù)值也可以用于恢復此前的寄存器狀態(tài)。

在一些情形下,可用性寄存器可以被提供,該寄存器包括若干位,每一位表示對應的物理寄存器是可用還是不可用。(一個或多個)上述組追蹤指示信息和參數(shù)可以用于控制可用寄存器中針對給定物理寄存器的位是否可以從第一值改變至第二值,該第一值表示該寄存器不可用,該第二值表示該寄存器可用。因此,如果組追蹤指示信息(該信息針對包括相應寄存器的組)表示不存在對該組中的任意寄存器的待決訪問,并且如果其它參數(shù)也表示不存在保留該物理寄存器的其它原因,則可用寄存器的位可以被改變至第二值。當選擇物理寄存器映射至架構寄存器時,寄存器重命名電路可以選擇這些寄存器之一,可用寄存器中針對該寄存器的相應比特具有該第二值。

圖1示意性地圖示了數(shù)據(jù)處理裝置2中的處理流水線的一部分。該流水線包括若干階段(stage),包括獲取(fetch)階段4、解碼階段6、重命名階段8、發(fā)布階段10、執(zhí)行階段12和寫回階段14。要處理的指令從一階段移到另一階段,并且一個指令可以在流水線的一個階段待決,同時另一指令在另一階段待決。應當理解,這只是可能的流水線的一個示例,其它示例可以具有其它階段或安排。

獲取階段4從指令緩存或存儲器獲取程序指令。解碼階段6解碼所獲取的指令以生成被解碼的指令,該指令被傳遞至流水線的其余階段用于處理。對于一些指令,從存儲器獲取的單個指令可以被解碼成沿著流水線被傳遞的單個被解碼指令。然而,對于其他更復雜的指令,單個被獲取的指令可以被解碼成被稱為“微操作”的多個被解碼指令。例如,用于觸發(fā)要被執(zhí)行的一系列操作(例如“載入多個”(load multiple)指令)的指令可以被解碼成各個微操作,每個微操作對應于這些操作之一。因此,流水線 的以后階段8、10、12、14看到的“指令”可以不同于從存儲器獲取的指令,且術語“指令”應當被解釋為涵蓋了微操作。

裝置2具有若干可用于存儲數(shù)據(jù)值的物理寄存器20。寄存器重命名階段8針對經(jīng)解碼指令(或微操作)施行寄存器重命名,以將由這些指令指定的架構寄存器區(qū)分符映射到標識物理寄存器20之一的物理寄存器區(qū)分符。該指令集結構可以支持某個數(shù)目的對程序員可見的架構寄存器。例如,指令編碼中的4或5位的寄存器字段可以指定16個或32個不同的架構寄存器區(qū)分符之一。然而,為了能夠解決指定同一架構寄存器區(qū)分符的指令之間的風險或允許指令的亂序或并行處理,可以提供更大數(shù)目的物理寄存器,且寄存器重命名階段8可以將經(jīng)解碼指令中的架構寄存器區(qū)分符映射至相應的物理寄存器。

現(xiàn)在指定物理寄存器區(qū)分符的經(jīng)重命名的指令被傳遞至發(fā)布隊列10,它們在該隊列中被排隊,同時等待執(zhí)行。指令保持在發(fā)布隊列中,直到它們的運算對象可用,此時該指令被發(fā)布到執(zhí)行階段12以執(zhí)行。指令可以按不同于原始程序順序(指令以該順序被獲取階段4獲取)的順序被發(fā)布以執(zhí)行。例如,盡管一個指令因為它的運算對象還不可用而被擱置,但后面的指令(該指令的運算對象可用)可以被提前發(fā)布。

執(zhí)行階段12可以包括各種處理單元,用于響應于指令而執(zhí)行處理操作。例如,處理單元可以包括用于執(zhí)行算術或邏輯操作的算術/邏輯單元(ALU)、用于執(zhí)行從存儲器載入數(shù)據(jù)值并將其置于物理寄存器中的載入操作或用于執(zhí)行將當前存儲于物理寄存器中的數(shù)據(jù)值存儲到存儲器中的存儲操作的載入/存儲單元、用于對包括多個數(shù)據(jù)元素的數(shù)據(jù)值執(zhí)行向量操作的向量處理單元、用于對浮點值執(zhí)行操作的浮點電路、或任何其它類型的處理電路。在一些情形下,執(zhí)行階段12可以包括若干用于處理不同種類指令的并行執(zhí)行流水線。

在執(zhí)行階段12中,當指令的執(zhí)行被完成時,指令被傳遞至寫回階段14,該寫回階段將指令的結果寫入物理寄存器20。

在圖1所示的示例中,對于經(jīng)重命名的指令(這些指令指定一個或多個物理寄存器,數(shù)據(jù)值將從該物理寄存器被讀取),在該指令在該發(fā)布隊 列10中待決的同時,該物理寄存器的讀取發(fā)生。然而,替代地,其它實施例可以在執(zhí)行階段12讀取物理寄存器20,如圖1中的虛線所示。

可用寄存器控制電路30被提供,用于控制哪一個物理寄存器可以被重命名階段8選擇以映射至架構寄存器區(qū)分符。下文會更詳細描述可用寄存器控制邏輯30,但是一般地,可用寄存器控制電路30可以向重命名階段8提供指示哪些物理寄存器可用或不可用于選擇的指示信息。當向寄存器進行寫入的指令從解碼階段6被接收時,重命名階段8針對被指定為該指令的目的地寄存器的架構寄存器生成新的寄存器映射。重命名階段8選擇被可用寄存器控制電路30表示為可用的物理寄存器,并更新重命名表32以包括將目的地架構區(qū)分符映射至所選的物理寄存器的重命名條目。

流水線2支持指令的投機執(zhí)行。在知道指令是否應當被執(zhí)行之前,或者在確定指令的結果有效之前,一些指令可以被投機地執(zhí)行。例如,在分支指令之后,基于對該分支被采用還是不被采用的預測,一些指令可以在知道實際的分支輸出結果之前被投機地執(zhí)行。當投機正確時,投機執(zhí)行可以通過消除下述延遲來提高性能:如果直到知道指令應當被執(zhí)行或其結果會有效之后才執(zhí)行該指令,則會出現(xiàn)該延遲。然而,如果投機結果不正確,則指令的執(zhí)行可能需要被取消,且架構狀態(tài)可能需要被恢復為最后的有效狀態(tài)。

異常存儲器34被提供用于追蹤此前的寄存器狀態(tài),該寄存器狀態(tài)可以在錯誤投機的事件中被恢復。在由重命名階段8為給定的架構寄存器區(qū)分符生成新的寄存器映射時,此前的映射被寫到異常存儲器34中。例如,在圖1的示例中,當架構寄存器A1到物理寄存器P102的新映射在重命名表32中被生成時,此前被映射到架構寄存器A1的物理寄存器P48被寫到異常FIFO中。此前的物理寄存器P48繼續(xù)存儲在即將執(zhí)行指令的時間點與架構寄存器A1相關的數(shù)據(jù)值。因此,如果對于指定了架構寄存器A1的指令存在錯誤投機,則重命名表32中針對架構寄存器A1的當前映射被基于異常存儲器34中的對應映射而更新,使得架構寄存器A1現(xiàn)在再次映射至物理寄存器P48。在寄存器之間傳送數(shù)據(jù)以恢復架構狀態(tài)不是必要的,因為僅僅在重命名表32中更新寄存器映射就足以使讀取架構寄存 器A1的后續(xù)指令訪問被恢復的物理寄存器P48中此前的數(shù)據(jù)。

一旦對應的指令已被解決,條目可以從異常存儲器34移除。當投機指令被提交(即,知道該指令應當已執(zhí)行,且該投機指令的結果會有效)時,對應條目可以從異常存儲器34移除,因為它不再被需要用于恢復重命名表32中的映射。類似地,當投機指令被取消時,一旦重命名表32已被基于異常存儲器34中的對應條目中所指示的映射而更新,那么該對應條目可以被移除。特定的投機指令應當被提交還是取消將取決于一個或多個更早指令的輸出結果,且這可以在該投機指令的實際執(zhí)行之前或之后被解決。異常存儲器34可以作為先入先出(FIFO)存儲器來管理,以使得條目以與它們被分配到該寄存器的相同順序移除。因此,即使指令已被提交或取消,它的對應條目也可能直到任何更早的指令已被解決才被從異常FIFO 34移除。

圖2示出了可用寄存器控制電路30的一部分。保留寄存器50指示哪些物理寄存器20當前可用于被重命名階段8選擇或不可用(被保留)。保留寄存器50包括多個位字段52,每個對應于物理寄存器20之一。當位字段具有1的值時,那么對應的寄存器被保留且不可用于重命名,而如果針對特定寄存器的位字段具有0的值,那么該寄存器可用于重命名。當重命名階段8需要生成新的寄存器映射時,讀取階段8選擇寄存器20之一,該寄存器在保留寄存器50中的位字段52等于0。當存在多個可用于重命名的物理寄存器20時,各種技術可被用于控制哪個物理寄存器被選擇。例如,隨機或循環(huán)(round robin)選擇策略可以被使用。

當重命名階段8選擇用于重命名的物理寄存器時,保留寄存器中的對應位字段52被設置為1以指示該寄存器被保留。該物理寄存器然后維持不可用于重命名,直到保留寄存器中的對應位字段52被清除?;诙鄠€狀態(tài)寄存器62、64、66、68,寄存器釋放控制邏輯60控制特定的寄存器何時可以再次可用。狀態(tài)寄存器62、64、66、68的每一個對應于可以阻止已分配的物理寄存器被釋放的特定條件。

在該示例中,狀態(tài)寄存器包括已分配的寄存器62、無效寄存器64、異常FIFO狀態(tài)寄存器66和未讀寄存器68,寄存器62指示物理寄存器當 前是否在重命名表32中被分配給架構寄存器區(qū)分符;寄存器64指示寄存器是否仍然要在流水線中的寫回階段14被尚未完成的待決指令寫入;寄存器66指示物理寄存器當前是否在異常FIFO 34的某一條目中被指示;寄存器68指示任何寄存器是否可能是未完結讀取操作的主體。

狀態(tài)寄存器的每一個包括若干位字段,每一個位字段對應于相應的物理寄存器20。當在狀態(tài)寄存器62、64、66、68的任一個中,針對給定物理寄存器的位字段為1時,保留寄存器50的相應位字段不能被清除為0。如果狀態(tài)寄存器62、64、66、68的每一個中對應的位字段均為0,則寄存器釋放控制邏輯60清除保留寄存器50中的位字段。例如,邏輯或(OR)操作可以通過邏輯OR操作將狀態(tài)寄存器62、64、66、68的對應位字段組合,并且如果OR操作的結果為零,則保留寄存器50中的對應位字段52可以被清除。因此,對于已分配的物理寄存器,如果它當前在重命名表32中沒有被分配、如無效寄存器64所示不存在對該寄存器的待決寫入、如異常FIFO寄存器66所示當前未在異常FIFO中被表示、且如未讀寄存器68所示不存在可能的未完結讀取,則它可以僅被釋放以使得它可用于再次重命名。

未讀寄存器68與若干寄存器組計數(shù)器70相關,每個寄存器組計數(shù)器對應于一組物理寄存器20。在圖2的示例中,每一組包括4個寄存器,使得一個計數(shù)器70被提供用于寄存器0至3,另一計數(shù)器被提供用于寄存器4至7,以此類推。每一個計數(shù)器70的計數(shù)值指示了發(fā)布隊列10中多少個待決的寄存器讀取指定一個對應組的寄存器。如果對相應組寄存器中的任一者都沒有待決讀取,則計數(shù)器70的計數(shù)值為零。如果計數(shù)值具有零的值,那么取決于其它狀態(tài)寄存器62、64、66的內(nèi)容,未讀寄存器68中針對相應組寄存器的位字段均被設置為0,使得這些寄存器可能被釋放用于重命名。如果計數(shù)值具有除零以外的任意值,那么未讀寄存器68中針對該相應組的每個寄存器的位字段被設置為1,以防止這些寄存器被釋放用于重命名。因此,即使對該組中的僅一個寄存器存在待決的未完結讀取,這仍會阻止相應組的所有寄存器被釋放用于重命名。然而,當針對一組寄存器的未讀取位被設為1時,雖然這阻止了已經(jīng)不可用的寄存器(例如, 它在保留寄存器50中具有為1的保留位)被釋放,但是它不阻止該組內(nèi)可用的寄存器(該寄存器在保留寄存器50中具有為0的保留位)被選擇用于重命名。

例如,在圖2中,如保留寄存器50中的對應位字段所示,物理寄存器126當前不可用。針對該組寄存器127-124的計數(shù)器70為1,所以對這些寄存器之一的待決讀取還在發(fā)布隊列10中未完結。這意味著未讀寄存器68中針對寄存器127-124的對應位字段被設為1。因此,直到未讀寄存器68中的對應位被清除(直到當該未完結讀取已被完成時,針對寄存器組127-124的組計數(shù)器70再次變?yōu)?,這才會發(fā)生),物理寄存器126才能被重新要求并可用于重命名。然而,物理寄存器124、125和127仍然在保留寄存器50中被指示為可用,且因此可以被選擇用于由重命名階段8重命名,但是一旦被選擇就不能被釋放,直到對應的組計數(shù)器70再次變?yōu)榱恪?/p>

相比而言,對于圖2的示例中的物理寄存器2,該寄存器當前在保留寄存器50被指示為不可用,但是現(xiàn)在狀態(tài)寄存器62、64、66、68的每一個中的對應位字段為零(因為針對寄存器3至0的對應組計數(shù)器70為零),因此寄存器釋放控制邏輯60可以通過清除保留寄存器50中針對物理寄存器2的位字段52來釋放該寄存器。另一方面,即使針對寄存器3至0的組計數(shù)器70具有0的值,物理寄存器3也不可用且不能被釋放,因為如異常FIFO狀態(tài)寄存器66中的對應比特所示,它仍然在異常FIFO 34中被指定。

圖3和圖4示出了基于被提供給發(fā)布隊列10以及從發(fā)布隊列10移除的指令來更新組計數(shù)器的示例。如圖3中所示,發(fā)布隊列10每個周期可以接收某個數(shù)目的指令,并且每個周期可以有某個數(shù)目的指令向執(zhí)行單元12發(fā)布。在圖3中,每個周期有兩個指令被發(fā)布隊列10接收,并且每個周期有兩個指令向執(zhí)行單元發(fā)布,但是其它的示例可以具有其他的數(shù)目,并且應當理解,每個周期被發(fā)布用于執(zhí)行的指令不一定需要與每個周期被提供給發(fā)布隊列的指令的數(shù)目相等。每一個指令可以指定多個要被讀取的寄存器。例如,在圖3中,每一個指令可以包含多達4個對要被讀取的物 理寄存器的引用,使得在每一個周期中,多達8個寄存器引用可以被添加到發(fā)布隊列中,且多達8個寄存器引用可以從該發(fā)布隊列移除。這些寄存器引用中的每一個可以被依次解碼以遞增或遞減對應的組計數(shù)器70。

圖4示出了用于解碼特定寄存器引用的解碼邏輯80的示例。解碼邏輯80包括二進制到獨熱碼(onehot)的解碼邏輯,用于把被指定為二進制數(shù)的寄存器引用解碼成包括一組比特84的獨熱碼信號82,其中,在任何時刻,多個位84中僅一個可以為1,而其他位為0。哪個信號被設為1取決于二進制寄存器區(qū)分符的值。獨熱碼82的每一位84對應于組計數(shù)器70之一,且如果二進制寄存器區(qū)分符R具有對應于對應寄存器組內(nèi)的任意寄存器的值,該位84將被設為1。例如,如果如圖2所示,寄存器被分組為4個寄存器一組,如果寄存器區(qū)分符R指示寄存器0至3之一,則最低位84可以被設置;如果寄存器區(qū)分符R指示寄存器4至7之一,則下一位84可以被設置;以此類推。

對進入發(fā)布隊列10的每一個寄存器引用,解碼邏輯80被提供以將該寄存器引用轉換成獨熱碼信號82,每個組計數(shù)器70響應于獨熱碼信號82的對應位84而被遞增。對于離開發(fā)布隊列的每一個寄存器引用,解碼邏輯80被提供以將寄存器引用轉換成獨熱碼信號82,每個組計數(shù)器70響應于獨熱碼信號82的對應位84而被遞減。

盡管所需解碼邏輯80的數(shù)量與每個周期進入或離開發(fā)布隊列10的寄存器引用的數(shù)目有關,但與對發(fā)布隊列10中待決的每個寄存器引用都追蹤相比,這通常會需要少得多的電路。例如,如果發(fā)布隊列10包括用于16個待決指令的條目,這些指令的每一個可以指定多達4個寄存器,那么每個周期將需要對64個寄存器引用進行編碼,而非如圖3和4的示例中的16個寄存器引用。

解碼邏輯80的數(shù)量還取決于所提供的計數(shù)器70的數(shù)目。因此,每一組中寄存器的數(shù)目越大,所需的解碼邏輯80越少。通過追蹤各組中待決的寄存器讀取的數(shù)目,而非單獨追蹤對每個寄存器的讀取,獨熱碼解碼邏輯80的復雜度可以被顯著降低,讀取計數(shù)器值和控制未讀寄存器68的對應位所需要的邏輯和計數(shù)器70都更少。

圖5示出了未讀寄存器68的替代性示例。在該示例中,不是對于每一個物理寄存器20具有單獨的位字段,而是可以給未讀寄存器68包括對于每一組寄存器的位字段,使得同一組中的所有寄存器由單個位代表,如果對相應組的寄存器存在至少一個待決訪問,則該單個位具有第一值;如果不存在對該組的任何寄存器的待決訪問,則該單個位具有第二值。該寄存器釋放控制邏輯60可以針對每一個對應組的寄存器,基于未讀寄存器68中針對該組的單個位字段,控制保留寄存器50中對應的位字段52是否被清除。在圖5的示例中,每一組寄存器包括8個寄存器,而非如圖2中的4個。

更一般地,如果有Z個可尋址的物理寄存器20,并且發(fā)布隊列10中待決寄存器引用的最大值為M個(對應于:每個指令中被指定的寄存器的數(shù)目乘以發(fā)布條目的最大值),那么如果寄存器被分組為G個寄存器一組(其中G為2或更大值),那么所有的寄存器引用可以使用N位的Z/G個計數(shù)器70而被追蹤,其中N為大于或等于log2(M×G+1)的最小整數(shù)。相比而言,如果針對單獨的寄存器(即,G=1)追蹤寄存器引用,那么將需要Z個log2(M+1)位的計數(shù)器。

將這一點應用到具有16條目的發(fā)布隊列大小的實際示例中,每個指令4個讀取寄存器,128個可尋址的物理寄存器,即,M=64,Z=128:

如果每一個寄存器被單獨地計數(shù)(G=1),那么N=upper(log2(65))=7位,并且128個7位的計數(shù)器的每一個將需要大量的解碼邏輯80和其它的控制電路。

相比而言,對G=8,可接受的較不精確的解決方案可以具有N=upper(log2(64*8+1))=10位以及128/8=16個計數(shù)器。16個10位的計數(shù)器的每一個需要少得多的電路面積,不僅減少了計數(shù)器位的數(shù)目(160位而非896位),還大為減少了對應的解碼邏輯。

在極端情形下只有一個組(G=128),則N=upper(log2(64*128+1))=14位,所以僅存在1個14位的計數(shù)器,對于以上給出的特定示例,該計數(shù)器提供最小的電路面積和泄漏開銷。

因此,組大小G可以取決于針對特定實施的需求而選擇,以在性能與 電能消耗和電路面積之間獲得平衡。

在此前的實施方式中,對單獨寄存器計數(shù)已被認為對于實際系統(tǒng)過于昂貴,因此用于保護仍然將被讀取而不由重命名階段8重分配的物理寄存器的其它技術已被使用。例如,一些技術阻止異常FIFO 34的條目被移除,直到對應指令已被執(zhí)行(而不是當指令被提交時就能從異常FIFO 34移除條目,這可能在該指令的實際執(zhí)行之前發(fā)生)。然而,阻止從異常FIFO 34彈出條目可能導致異常FIFO 34更早填滿,這可能導致流水線的額外擱置和降低性能。替代地,通過對寄存器的組中待決的寄存器讀取計數(shù),可以使得計數(shù)器70和解碼邏輯80的控制開銷較低,因此直到讀取完成之前都不必阻止異常FIFO,這可以達到性能和能耗之間更好的平衡。

圖6至12示出了用于追蹤哪些寄存器可用于重命名的方法。這些方法的每一個可以被并行執(zhí)行。

圖6示出了針對給定的寄存器組遞增組計數(shù)器70的方法。在步驟100,引用特定寄存器X的指令被分配到發(fā)布隊列10。解碼邏輯80解碼寄存器引用,并在步驟102中對于包括寄存器X的寄存器組觸發(fā)組計數(shù)器70的遞增。

圖7示出了針對給定的寄存器組遞減組計數(shù)器的方法。在步驟104,引用寄存器X的指令離開發(fā)布隊列10,表明對寄存器X的待決讀取已完成。解碼邏輯80解碼該寄存器引用,并在步驟106對于包括寄存器X的寄存器組觸發(fā)組計數(shù)器70的遞減。

圖8示出了控制未讀狀態(tài)寄存器68的方法。在步驟110,檢測針對寄存器組Y的組計數(shù)器70是否為0。如果是,那么在步驟112,對于寄存器組Y中的每個物理寄存器,未讀位被清除(設為0)。如果組計數(shù)器70不為0,那么在步驟114,對于寄存器組Y中的每一個物理寄存器,未讀位被設置(為1)。當未讀位被設置時,如果保留寄存器50表明它們當前不可用,則將阻止對應的寄存器變?yōu)榭捎糜谥孛撬鼈儾粫柚挂呀?jīng)可用的寄存器被重命名階段8選擇。

圖9示出了重命名階段8選擇用于重命名的物理寄存器的方法。在步驟120,重命名階段8遇到將架構寄存器區(qū)分符指定為目的地寄存器的指 令,因此物理寄存器將被選擇以映射至該架構寄存器區(qū)分符。在步驟122,重命名階段8向異常FIFO 34添加條目(該條目指定了重命名表32中針對被指定的架構寄存器區(qū)分符的當前映射),選擇物理寄存器20(保留寄存器50中針對該物理寄存器的保留位字段52被清除(=0)),并更新重命名表32以使得被指定的架構寄存器區(qū)分符現(xiàn)在被映射至所選的物理寄存器20。在步驟124,保留寄存器50中針對所選的寄存器的保留位52被設為1,以指示該寄存器現(xiàn)在不可用于重命名。在步驟126,已分配寄存器62中對應于所選的物理寄存器的已分配位被設為1。在步驟128,已分配寄存器62中針對此前被映射至同一架構寄存器的物理寄存器的已分配位被清除,并且異常FIFO寄存器66中針對該寄存器的異常FIFO位被設置,以表明該物理寄存器現(xiàn)在在該異常FIFO 34中(而不是在重命名表32中)被指示。在步驟130,在無效寄存器64中針對在步驟122所選擇的物理寄存器設置無效位,以表明存在針對該物理寄存器未完結的待決寫入。

圖10示出了控制無效寄存器64的方法。在步驟140,在寫回階段14,對物理寄存器i的寫入被完成。在步驟142,在無效寄存器64中,針對寄存器i的無效位被清除。通過保持無效位被設置(直到對寄存器i的寫入完成),避免了寫入之后寫入的風險。

圖11示出了控制異常FIFO狀態(tài)寄存器66的方法。在步驟154,在異常FIFO 34中,條目被無效化,這可以發(fā)生在對應的投機指令被解決(被提交或取消)時。當投機指令被提交時,得知對應的異常FIFO中的物理寄存器將不再被需要,因為在重命名表32中指示的寄存器映射現(xiàn)在將代表被指定的架構寄存器的有效內(nèi)容。當該指令被取消時,在異常FIFO映射被恢復到重命名表之后,異常FIFO條目不再被需要。為了追蹤哪個指令對應于哪個異常FIFO條目,異常FIFO條目可以利用對應指令的指示信息而被標記,或者,流水線2中的指令可以利用對應的異常FIFO條目的指示信息被標記。響應于異常FIFO 34中的條目在步驟154被無效化,在步驟156,與被無效條目中指定的物理寄存器相對應的異常FIFO狀態(tài)寄存器66的位被清除,以指示該物理寄存器不再被異常FIFO 34所需要。

圖12示出了將此前已分配的物理寄存器釋放的控制方法。在步驟160,在已分配的寄存器62、無效寄存器64、異常FIFO寄存器66和未讀寄存器68的每一個中,寄存器釋放控制邏輯60確定針對特定寄存器j的控制位是否清除(=0)。如果不是,則保留寄存器50中的對應位52保持不變,所以如果寄存器j已被保留,那么它將維持被保留。如果在狀態(tài)寄存器62、64、66、68中,針對寄存器j的所有位被清除,那么在步驟162,寄存器釋放控制邏輯60清除保留寄存器50中的對應位,以指示該寄存器現(xiàn)在可以再次被重命名階段8選擇。通過這種方式,寄存器在以下情形之前不能被重映射至另一架構寄存器區(qū)分符:它不再被重命名表32中的當前映射需要、不存在對該寄存器的未完結寫入,在投機指令被取消的情形下不需要保留該寄存器、不存在對該寄存器或同一組內(nèi)的其它寄存器的待決讀取。

雖然在圖2示出的示例中,保留寄存器利用位字段值1來指示,可用的寄存器利用位字段0來指示,但其它示例可以使用相反的對應關系。在該情形下,保留寄存器50可以替代地被解釋為“可用寄存器”,其中,用位字段1指示的寄存器是可用的,而用位字段0指示的寄存器是不可用的。狀態(tài)寄存器62、64、66、68也可以使用相反的對應關系,用值0指示寄存器應當保持不可用。在該情形下,寄存器釋放控制邏輯60可以包括與(AND)門,與門使用AND操作來組合針對給定寄存器的各個狀態(tài)位,使得僅當狀態(tài)寄存器62、64、66、68中每一者都指示可以使該寄存器可用時,可用位才被設為1。

同樣,盡管圖3示出了對進入和離開發(fā)布隊列10的寄存器引用進行計數(shù)的示例,但如果另一單元(例如執(zhí)行單元12)執(zhí)行寄存器讀取,則進入和離開該單元的寄存器引用可以采用類似的方式被計數(shù)。

除了控制釋放已分配寄存器用于重命名以外,由組計數(shù)器70提供的信息還可以在一些示例中被用于其它目的。例如,它們可以被用來追蹤經(jīng)過流水線2的某些指令的進度。例如,在包括多于一個流水線2的裝置中,第一流水線2中的組計數(shù)器70可以提供訪問一組寄存器的指令的進度的指示信息,該指示信息可以被其它流水線2使用以將它對指令的執(zhí)行 與第一流水線2的指令執(zhí)行相聯(lián)系。例如,一些系統(tǒng)可以具有用于執(zhí)行一個或多個具體類型指令的數(shù)據(jù)引擎流水線,和用于執(zhí)行其它類型指令的通用流水線,組計數(shù)器70允許對其它流水線中的進度進行某些追蹤。

圖13示出了發(fā)布隊列10的示例,該發(fā)布隊列包括多個發(fā)布間隙180,用于保持等待發(fā)布的待決指令的指示信息。每個間隙180包括指令類型的指示信息(例如操作碼)182,以及零個、一個或多個對物理寄存器(在重命名階段8后被重命名)進行標識的寄存器區(qū)分符184,這些物理寄存器將響應于該指令而被讀取。在圖13的示例中,每個發(fā)布間隙180可以指定多達4個物理寄存器區(qū)分符。也可以指定該指令的目的地寄存器以及與該指令相關的任何其它控制信息(為了簡潔,這些在圖13中未被示出)。

圖14和15示出了由可用寄存器控制電路30提供的組追蹤指示信息的進一步示例,這些指示信息用于追蹤發(fā)布隊列10中對相應一組物理寄存器中任一者的待決處理器訪問??梢蕴峁┻@些信息來代替組計數(shù)器70,而寄存器50、62、64、66、68以類似于以上所討論的示例的方式被使用。

在圖14和15中,組追蹤指示信息指示了哪個發(fā)布間隙180保持著需要對相應組寄存器中的任一寄存器進行訪問的指令。在圖14的示例中,提供了多個發(fā)布間隙狀態(tài)寄存器200。每個發(fā)布間隙狀態(tài)寄存器200對應于發(fā)布隊列的間隙180之一,并包括多個位字段202,每個位字段202對應于相應一組兩個或更多個物理寄存器。例如,在該示例中,每個組包括8個寄存器,所以存在針對寄存器0至7的一個位字段202、針對寄存器8至15的另一個位字段202、以此類推。如果相應的發(fā)布間隙180中的指令引用相應組寄存器中的寄存器,則各個位字段202取第一值(例如1),否則取第二值(例如0)。例如,在圖13中,間隙0中的指令指定了寄存器R7、R12、R54,因此該間隙的狀態(tài)寄存器200-0中針對寄存器組0-7、8-15和49-55的位字段202被設為1,寄存器200-0中的其它位字段202被設為0。如果在任一間隙狀態(tài)寄存器200中,與包括給定寄存器的一組寄存器相對應的任一位字段202被設為1,則可用寄存器控制電路30可以阻止給定寄存器變得可用于重命名(即,阻止清除保留狀態(tài)寄存器50中的 對應位字段)。雖然圖14示出了每個發(fā)布間隙180對應一個間隙狀態(tài)寄存器200的示例,但是在其它示例中,可以給發(fā)布隊列中指定的每個寄存器引用提供一個狀態(tài)寄存器200。在實踐中,解碼邏輯的數(shù)量可以類似,因為為了給每個間隙180確定位字段202,可能需要對該間隙中的每個寄存器區(qū)分符184進行解碼。

圖15示出了另一示例,其中,每個寄存器組具有對應的狀態(tài)寄存器204,且每個狀態(tài)寄存器204具有多個位字段206,每個位字段對應于一個發(fā)布間隙180,以指示對應的發(fā)布間隙180是否包含對于與該狀態(tài)寄存器204相對應的組中任何寄存器的寄存器引用。如果對應于特定一組寄存器的狀態(tài)寄存器204內(nèi)的位字段206都為設為0,表明在任一個發(fā)布間隙206都不存在對該組寄存器的待決引用,則可以使該組寄存器的不可用寄存器可用。注意,圖15中所顯示的信息事實上是圖14中所顯示的同一信息,但是位字段206按寄存器組分組,而不是按發(fā)布間隙180分組。在其他示例中,可以給發(fā)布隊列中的每個寄存器區(qū)分符184(而不是每個發(fā)布間隙180)設置位字段206。

因此,圖14或圖15中所顯示的組追蹤指示信息200、204可以用于設置或清除圖2或圖5中所示的未讀狀態(tài)寄存器68的對應位字段,未讀狀態(tài)寄存器68可以通過與以上所討論類似的方式來影響對保留狀態(tài)寄存器50的清除。

計數(shù)器70的實施例在許多情形下可能更有效,因為如圖3所示,只有進入和離開發(fā)布隊列的寄存器引用需要被解碼,而不是需要對每個發(fā)布間隙中的引用進行解碼。然而,在具有較少的待決寄存器引用的較小發(fā)布隊列10的示例中,圖14和15的示例可能是優(yōu)選的。在任何情形下,與追蹤對每個單獨的寄存器的訪問(而不是如圖14和15所示追蹤對寄存器組的訪問)相比,圖14和15中所示的方法所需的解碼邏輯仍然可以少得多。一個原因在于,當以組來追蹤寄存器(而不是單獨地追蹤)時,只需考慮寄存器區(qū)分符的較少位來確定更新哪個追蹤指示信息。

在本申請中,短語“被配置為…”表示裝置的元素具有能夠執(zhí)行所限定的操作的配置。在這一上下文中,“配置”表示硬件或軟件的互連的結 構或方式。例如,該裝置可以具有專門的硬件,該硬件提供該所限定的操作,或者可以對處理器或其它處理設備編程以執(zhí)行該功能?!氨慌渲脼椤辈⒉话凳驹撗b置要素需要以任何方式改變以提供所限定的操作。

雖然本申請已經(jīng)參考附圖詳細描述了本發(fā)明的示例性實施例,但應當理解,本發(fā)明不限于這些確切的實施例,本領域的技術人員可以在不脫離如所附權利要求所限定的本發(fā)明的范圍和主旨的情況下實施各種改變和修改。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
延庆县| 聂拉木县| 嘉义市| 宁津县| 卫辉市| 右玉县| 灵寿县| 华蓥市| 浏阳市| 江达县| 志丹县| 泌阳县| 兰溪市| 邛崃市| 湖口县| 海淀区| 大余县| 长岛县| 北流市| 玉田县| 东光县| 嘉义市| 乌鲁木齐县| 望谟县| 嘉荫县| 蒙自县| 安陆市| 洮南市| 安新县| 获嘉县| 濉溪县| 威信县| 泊头市| 云龙县| 云安县| 普兰店市| 九龙县| 黎川县| 军事| 交口县| 临湘市|