亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于堆棧式寄存器堆的寄存器保存引擎的后備存儲緩沖器的制作方法

文檔序號:6569995閱讀:230來源:國知局
專利名稱:用于堆棧式寄存器堆的寄存器保存引擎的后備存儲緩沖器的制作方法
技術領域
本發(fā)明大體來說涉及處理器領域,且更特定來說涉及用于堆棧式寄存器堆架構中 的寄存器保存引擎的后備存儲緩沖器。
背景技術
RISC處理器的特征是相對較小的指令集,其中每一指令執(zhí)行單個指令,例如, 算術、邏輯或載入/存儲操作。算術及邏輯指令從一個或一個以上通用寄存器(GPR) 獲得其操作數(shù)并將其結(jié)果寫入到所述通用寄存器。GPR是架構式寄存器。也就是說, 其包括以指令集架構明確識別且由指令直接尋址的離散存儲器位置。GPR在硬件中通常實施為高速、多端口寄存器陣列,每一寄存器均具有所述指令 集所界定的字寬(例如,32或64個位)。此物理寄存器陣列稱作物理寄存器堆。在直 接映射的寄存器實施方案中,所述物理寄存器堆中寄存器的數(shù)目與架構式GPR的數(shù)目 精確地匹配,且每一邏輯GPR識別符均映射到一特定硬件寄存器。為獲得較高性能, 且為支持超標量管線,許多調(diào)制解調(diào)器處理器將邏輯GPR識別符從物理寄存器堆中的 物理寄存器去耦。寄存器重命名、緩沖器重排序等等是所屬技術領域中已知的用于將 邏輯GPR識別符從物理寄存器去耦的技術。無論是直接映射還是重命名,跨越許多軟 件程序管理物理寄存器堆是一個設計挑戰(zhàn),且通常是一個性能瓶頸。多數(shù)現(xiàn)代軟件在本質(zhì)上都是模塊化的。也就是說, 一個程序可"調(diào)用"或?qū)⒖刂?轉(zhuǎn)移給另一程序(可不同地稱作函數(shù)、子例程、子模塊等等)。所調(diào)用的程序又可調(diào) 用另一程序,依此類推,從而導致程序嵌套,通常到一相當大的深度。在處理器的執(zhí) 行期間,每一程序(也稱作上下文)均分配有某些處理器資源,其中包含若干GPR。 分配給程序的GPR數(shù)目可通過編譯器對所述程序中指令的分析來確定,且可介于從少 數(shù)GPR到整個架構式集合的GPR的范圍內(nèi)。當?shù)谝怀绦蛘{(diào)用第二程序(也稱作上下 文交換)時,所述第一 (或調(diào)用)程序變?yōu)椴换顒?,而所述第?(或被調(diào)用)程序分 配有單獨的資源(其中包含其自身的GPR組)并開始執(zhí)行。當?shù)诙绦蛲瓿蓤?zhí)行時, 將其資源解除分配、將資源重新分配給調(diào)用程序(如果必要)、且調(diào)用程序再繼續(xù)執(zhí)行。在某些現(xiàn)有技術處理器(例如英特爾(Intel) /~960)中,上下文交換或新程序促 使所述處理器將物理寄存器堆的全部內(nèi)容存儲到存儲器,從而使所述新程序可獲得整 個物理寄存器堆。當被調(diào)用程序完成執(zhí)行并將控制返回到其調(diào)用程序時,先前保存的 寄存器值恢復到物理寄存器堆,且調(diào)用程序的執(zhí)行繼續(xù)。將物理寄存器堆內(nèi)容保存到"后備存儲器",例如系統(tǒng)存儲器(RAM)。當所述后備存儲器包括芯片外RAM時, 為減輕每一上下文交換的多個芯片外存儲器存取的性能影響, 一處理器可提供一個或 —個以上"影子"或"高速緩存"寄存器堆(其可包括實際寄存器或者可包括芯片上 高速緩沖存儲器)用以存儲物理寄存器堆的內(nèi)容。然而,即使在影子寄存器存儲裝置 的情形下,也必須一次性地存儲/檢索整個物理寄存器堆,從而施加性能沖擊。
一種由許多調(diào)制解調(diào)器處理器采用的消除一次性存儲及檢索整個物理寄存器堆 的需要的技術稱作堆棧式寄存器堆架構,在堆棧式寄存器堆架構中,高級處理器控制 器將物理寄存器堆視為具有無限深度的邏輯堆棧。通過在程序被調(diào)用時向所述程序遞 增地分配寄存器并在必要時保存先前分配的寄存器的內(nèi)容來將此邏輯無限堆桟實施于 物理寄存器堆中。
圖1繪示代表性堆棧式寄存器堆架構實施方案的功能性方塊圖。物理寄存器堆1 包括高速多端口物理寄存器陣列,所述陣列包含至少與指令集架構中存在的GPR —樣 多的寄存器。例如,物理寄存器堆l可包括從底部的物理寄存器O (PRO)到頂部的物 理寄存器127 (PR127)范圍內(nèi)的128個寄存器。兩個邏輯指針實施堆棧管理堆棧頂 部指針及保存/恢復指針。
最初將這兩個指針設定為PR0。隨著程序被調(diào)用并向其分配寄存器,所述堆棧頂 部指針向上移動。當幾乎所有可獲得的物理寄存器均己被分配,且一新調(diào)用程序需要 的寄存器數(shù)目多于物理寄存器堆l中剩余的未經(jīng)分配的寄存器數(shù)目時,所述堆棧頂部 指針將"繞回",且開始從物理寄存器堆1的底部分配寄存器,從PRO開始。然而, 在此發(fā)生之前,必須將物理寄存器堆1底部充足數(shù)目的寄存器的內(nèi)容保存到后備存儲 器3,例如系統(tǒng)存儲器(RAM)。
寄存器保存引擎2中斷處理器,并執(zhí)行必要的用于執(zhí)行寄存器讀取及存儲器存儲 操作的指令來將物理寄存器堆1底部的最近分配的寄存器的內(nèi)容保存到后備存儲器3。 寄存器保存引擎2使保存/恢復指針遞增,這可指示所述指針下方的寄存器可供用于分 配給新調(diào)用的程序。當寄存器保存引擎2完成寄存器保存操作并放棄對處理器的控制 時,所述處理器控制器向下一程序分配寄存器并使堆棧頂部指針遞增,從而在內(nèi)容已 保存到后備存儲器3的寄存器已被重新分配且由所調(diào)用程序利用時使所述指針繞回并 使其遞增以越過所述寄存器。
類似地,當所調(diào)用程序完成執(zhí)行并將控制返回給調(diào)用程序時,所述堆棧退棧,且 將分配給所調(diào)用程序的寄存器解除分配或使其可供用于分配給其它程序。如果不是所 有與調(diào)用程序相關聯(lián)的數(shù)據(jù)都仍在物理寄存器堆1中一也就是說,如果調(diào)用程序的寄 存器中的一個或一個以上已被重新分配一則寄存器保存引擎2再次中斷處理器、從后 備存儲器3中檢索多數(shù)最近所保存的寄存器的內(nèi)容、將數(shù)據(jù)恢復到物理寄存器堆1、 將所述寄存器分配給調(diào)用程序、并使保存/恢復指針遞增以指示所述寄存器已被分配且 含有有效數(shù)據(jù)。
堆棧式寄存器堆系統(tǒng)以較大的物理寄存器堆1、以相對狹窄的程序嵌套深度且/或以分配給每一程序的相對較少的寄存器來提供最佳性能。在這些條件下,堆棧頂部 指針僅穿越物理寄存器堆1向上及向下移動,視需要沒有延遲地將寄存器分配給程序 并將其解除分配。然而,隨著程序的數(shù)目增加,且/或一個或一個以上程序需要大量寄 存器,處理器遭受到寄存器保存引擎2做出的許多次中斷以保存來自物理寄存器堆1 中的寄存器的數(shù)據(jù)并將所述數(shù)據(jù)恢復到所述寄存器,以便可將寄存器重新分配給新的 程序。
一種增加堆棧式寄存器堆系統(tǒng)的性能的方式是僅增加物理寄存器堆1的大小。雖 然這樣的確提供較高性能,但物理寄存器堆l中的寄存器通常是高速多端口寄存器。 每一寄存器可包含(例如)三到五個讀取及寫入端口。此外,為獲得操作調(diào)度及寄存 器分配的靈活性,每一物理寄存器的讀取端口都必須路由到每一管線中的每一執(zhí)行管 道階段,且每一管線中的回寫管道階段都必須連接到物理寄存器堆中的每一寄存器的 寫入端口。因此,增加物理寄存器堆1的大小在門數(shù)及布線復雜度方面是昂貴的。在 任何既定的時間,僅有一個程序正在執(zhí)行,從而僅存取物理寄存器堆l中的寄存器的 一個小子集。因此,增加物理寄存器堆l的大小招致大量的面積及復雜度成本,以及 對昂貴硬件的較低應用。

發(fā)明內(nèi)容
在一個或一個以上實施例中,后備存儲緩沖器插置在堆棧式寄存器堆架構中的物 理寄存器堆與后備存儲器之間。所述后備存儲緩沖器允許將來自分配給不活動程序的 寄存器的數(shù)據(jù)臨時存儲在芯片上,釋放物理寄存器堆中的寄存器以重新分配給新的程 序。當程序完成并將控制返回給先前的不活動程序時,可從后備存儲緩沖器檢索與所 述不活動程序相關聯(lián)的數(shù)據(jù)(如果先前已保存),并將其恢復到物理寄存器堆中的寄存 器以及重新分配給所述不活動程序的寄存器。當后備存儲緩沖器己滿時,僅需將數(shù)據(jù)
寫入到后備存儲器,從而招致需用于芯片外RAM存取的大量性能降級及功率消耗。
一個實施例涉及一種用于管理具有專用后備存儲緩沖器的堆棧式寄存器堆系統(tǒng) 的方法。將來自物理寄存器堆的一個或一個以上寄存器分配給第一程序,且將與所述 第一程序相關聯(lián)的數(shù)據(jù)存儲在所分配的寄存器中。將與第一程序相關聯(lián)的數(shù)據(jù)選擇性 地保存到所述專用后備存儲緩沖器,且釋放分配給第一程序的一個或一個以上寄存器 用以分配給第二程序。在第一程序的繼續(xù)執(zhí)行之前,將與第一程序相關聯(lián)的數(shù)據(jù)從專 用后備存儲緩沖器恢復到一個或一個以上寄存器并將所述寄存器重新分配給第一程 序。
另一實施例涉及處理器。所述處理器包含一物理寄存器堆,所述物理寄存器堆包 括至少與處理器指令集架構中界定的通用寄存器的數(shù)目一樣多的寄存器。所述寄存器 動態(tài)地分配給軟件程序。所述處理器還包含一寄存器保存引擎,所述寄存器保存引擎 操作以選擇性地保存來自分配給不活動程序的寄存器的數(shù)據(jù)并在所述程序變?yōu)榛顒又皩?shù)據(jù)恢復到所述寄存器。所述處理器進一步包含一后備存儲緩沖器,所述后備存 儲緩沖器專用于寄存器保存引擎且操作以存儲從分配給不活動程序的寄存器保存的數(shù) 據(jù)。


圖1是現(xiàn)有技術堆棧式寄存器堆的方塊圖。 圖2是處理器的功能性方塊圖。
圖3是其中包含后備存儲緩沖器的堆棧式寄存器堆的功能性方塊圖。 圖4是一種用于管理堆棧式寄存器堆架構的方法的流程圖。
具體實施例方式
圖2繪示處理器10的功能性方塊圖。處理器10根據(jù)控制邏輯14來執(zhí)行指令執(zhí) 行管線12中的指令。管線12可以是具有多個并行管線(例如,12a及12b)的超標量 設計。每一管線12a、 12b均包含組織成若干管道階段的各種寄存器或鎖存器16,及 一個或一個以上算術邏輯單元(ALU) 18。管線12a、 12b從指令高速緩存器(I-高速 緩存器或1$ ) 20提取指令,其中存儲器尋址及許可由指令側(cè)轉(zhuǎn)換后備緩沖器(ITLB) 22來管理。
從數(shù)據(jù)高速緩存器(D-高速緩存器或DS ) 24存取數(shù)據(jù),其中存儲器尋址及許可 由主轉(zhuǎn)換旁視緩沖器(TLB) 26管理。在各種實施例中,ITLB 22可包括部分TLB 26 的副本?;蛘?,ITLB 22與TLB 26可集成在一起。類似地,在處理器10的各種實施 例中,可將I-高速緩存器20和D-高速緩存器24集成或聯(lián)合在一起。在存儲器介面34 的控制下,I-高速緩存器20及/或D-高速緩存器24中的失誤導致對主(芯片外)存儲 器36的存取。
管道階段寄存器或鎖存器16及ALU 18可從物理寄存器堆28中的寄存器讀取操 作數(shù)并/或?qū)⒔Y(jié)果寫入到所述寄存器。物理寄存器堆28由含有后備存儲緩沖器32的寄 存器保存引擎30來管理。后備存儲緩沖器32經(jīng)由存儲器接口 34連接到主存儲器36。 下文將更詳細描述物理寄存器堆28、寄存器保存引擎30及后備存儲緩沖器32的操作。
處理器10可包含輸入/輸出(I/O)接口38,其控制對各種外圍裝置40、 42的存 取。所屬技術領域的技術人員應認識到,可以對處理器10做出許多變化。例如,處理 器10可包含用于I及D高速緩存器中的一者或兩者的第二階層(L2)高速緩存器。 另外,可將所繪示的位于處理器10中的一個或一個以上功能塊從一特定實施例中省 去。
圖3繪示處理器10的堆棧式寄存器堆架構的功能性方塊圖。邏輯無限寄存器堆 棧實施于物理寄存器堆28中,物理寄存器堆28包含至少與處理器的指令集架構所界 定的GPR—樣多的物理寄存器。隨著將多個寄存器群組分配給新調(diào)用的程序,堆棧頂
7部指針遞增。將堆棧頂部指針下方(及保存/恢復指針上方)的寄存器分配給程序,并 釋放堆棧頂部指針上方(及保存/恢復指針下方)的寄存器用以分配給新程序。隨著程 序完成執(zhí)行并將控制返回給其調(diào)用程序,堆棧頂部指針遞增分配給已完成程序的寄存 器的數(shù)目。當程序被調(diào)用并請求分配比物理寄存器堆28中剩余的未經(jīng)分配的寄存器的數(shù)目更多的寄存器時,寄存器保存引擎30保存來自物理寄存器堆28的與不活動程序相關 聯(lián)的數(shù)據(jù),也就是存儲在分配給不活動程序的寄存器中的數(shù)據(jù)。寄存器保存引擎30 使保存/恢復指針遞增。這可指示保存/恢復指針下方(及堆棧頂部指針上方)的物理寄 存器可供用于分配給新的程序。在激活不活動程序之前,寄存器保存引擎30檢驗物理寄存器堆28以確保已分配 給不活動程序的所有寄存器均保持分配給所述不活動程序,且因此含有與所述不活動 程序相關聯(lián)的數(shù)據(jù)。如果已重新分配一個或一個以上先前分配給不活動程序的寄存器, 則寄存器保存引擎30將所保存的數(shù)據(jù)恢復到物理寄存器堆28中可獲得的寄存器。一 旦恢復所述數(shù)據(jù),寄存器保存引擎30即使保存/恢復指針遞增所恢復寄存器的數(shù)目, 這可指示保存/恢復指針上方(及堆棧頂部指針下方)的寄存器分配給一程序。然后可 激活不活動程序,其中先前分配給所述不活動程序的所有寄存器均含有與去激活所述 程序時其含有的數(shù)據(jù)相同的數(shù)據(jù)。所屬技術領域中的技術人員應注意,在此論述中, 為方便起見使用術語在指針"上方"及"下方",參照圖3。實際上,堆棧頂部指針及 保存/恢復中的一者或兩者可"繞回",且其相關位置顛倒。為避免與將物理寄存器的內(nèi)容直接保存及恢復到后備存儲器36 (例如,芯片外 RAM)的現(xiàn)有技術實踐相關聯(lián)的延遲及功率消耗,在一個或一個以上實施例中,寄存 器保存引擎30包含后備存儲緩沖器32。后備存儲緩沖器32臨時存儲從物理寄存器堆 28中的寄存器保存及恢復到所述寄存器的數(shù)據(jù)。寄存器保存引擎30僅需存取后備存 儲器36以在后備存儲緩沖器32已滿或趨近其容量時保存來自后備存儲緩沖器32的數(shù) 據(jù)。如果加上后備存儲緩沖器32的存儲容量,物理寄存器堆28的大小大于或等于平 均堆棧深度,則對后備存儲器36的芯片外存取顯著減小。為獲得更高的性能,在一個實施例中,后備存儲緩沖器32構建為存儲位置陣列 (例如,寄存器、鎖存器或SRAM陣列),所述存儲位置具有比物理寄存器堆28中的 寄存器較大的位寬度。特別地,后備存儲緩沖器32中的條目可具有是物理寄存器堆 28寬度的整數(shù)倍的位寬度。此允許將來自兩個或兩個以上物理寄存器的數(shù)據(jù)并排存儲 在單個后備存儲緩沖器32條目中。在一個實施例中,所述位寬度的整數(shù)倍等于物理寄存器堆28中的讀取端口的數(shù) 目。例如,如果物理寄存器堆28包含三個讀取端口,則后備存儲緩沖器32配置為存 儲單元陣列,每一存儲單元均具有是物理寄存器堆28中寄存器的位寬度三倍的位寬 度,如圖3所繪示。在此配置中,寄存器保存引擎30可從三個物理寄存器同時讀取數(shù) 據(jù)(也就是,在單個循環(huán)中)且可在單個寫入循環(huán)中將來自所有三個寄存器的數(shù)據(jù)寫入到單個后備存儲緩沖器32。當將寄存器從不活動程序解除分配時,這將使保存來自 物理寄存器堆28的數(shù)據(jù)的性能開銷最小化。類似地,如果物理寄存器堆28另外地包 含三個寫入端口,則一旦將數(shù)據(jù)恢復到物理寄存器堆28,寄存器保存引擎30即可在 單個循環(huán)中從單個后備存儲緩沖器32條目中讀取將要恢復到三個物理寄存器的數(shù)據(jù)。 可在單個循環(huán)中將這些數(shù)據(jù)寫入到物理寄存器堆28中的三個寄存器。
后備存儲緩沖器32可實施于若干技術及操作配置中。例如,后備存儲緩沖器32 可包括簡易的單端口高速寄存器或鎖存器陣列。或者,后備存儲緩沖器32可實施為 SRAM陣列,所述陣列配置為nxm陣列,其中n是每一后備存儲緩沖器32條目的位 寬度,且m是這些條目的數(shù)目。無論其硬件配置如何,可以各種操作配置實施后備存 儲緩沖器32,例如堆棧、FIFO、由與數(shù)據(jù)相關聯(lián)的程序的上下文ID加索引的高速緩 沖存儲器。
然而,不論其物理或操作配置如何,后備存儲緩沖器32專用于寄存器保存引擎 30。也就是說,后備存儲緩沖器32中的存儲器存儲位置不是指令集架構的一部分,且 可不由指令來尋址。另外,當分配有所述寄存器的程序變?yōu)椴换顒訒r,后備存儲緩沖 器32僅存儲物理寄存器堆28中的寄存器中所含有的數(shù)據(jù)。也就是說,后備存儲緩沖 器32均與暫存寄存器、高速緩沖存儲器或任何其它處理器存儲器或存儲位置分離,無 論是芯片上還是芯片外。本文中所使用術語"專用"后備存儲緩沖器指示后備存儲緩 沖器32與處理器10其余部分的此物理及功能隔離。
在一個實施例中,后備存儲緩沖器32以操作方式配置為堆棧。寄存器保存引擎 30從物理寄存器堆28讀取數(shù)據(jù)并將所述數(shù)據(jù)推到所述堆棧頂部上。相反地,寄存器 保存引擎30使堆棧退棧以檢索將要恢復到物理寄存器堆28的數(shù)據(jù)。隨著后備存儲緩 沖器32填滿或(在某些實施例中)趨近容量,寄存器保存引擎30從堆棧底部讀取數(shù) 據(jù)并將所述數(shù)據(jù)存儲到后備存儲器36,后備存儲器36可包括Ll或L2高速緩存器或 主系統(tǒng)存儲器(例如,RAM),如圖2所繪示。當寄存器保存引擎30將充足的數(shù)據(jù)從 后備存儲緩沖器32恢復到物理寄存器堆28、釋放掉后備存儲緩沖器32中的容量時, 寄存器保存引擎30從后備存儲器36讀取先前所保存的數(shù)據(jù),將所述數(shù)據(jù)寫入到后備 存儲緩沖器32中的堆棧的底部。注意,將后備存儲緩沖器32操作為堆棧與后備存儲 緩沖器32條目的位寬度無關。
在其中將后備存儲緩沖器32操作為堆棧的一個實施例中,為獲得最佳性能,將 后備存儲緩沖器32配置為類似于上文針對物理寄存器堆28描述的寄存器的雙端口寄 存器陣列,其中堆棧的頂部及底部由指針維持。例如,這將允許寄存器保存引擎30 在將數(shù)據(jù)從后備存儲緩沖器32堆棧的底部保存到后備存儲器36的同時將從物理寄存 器堆28保存的數(shù)據(jù)推到后備存儲緩沖器32堆棧的頂部上。類似地,可在數(shù)據(jù)從堆棧 頂部退棧以恢復到物理寄存器堆28的同時將數(shù)據(jù)從后備存儲器36恢復到后備存儲緩 沖器32的底部。
在替代實施例中,為減小電路復雜度及硅面積,后備存儲緩沖器32堆棧由單端口寄存器構建而成,其中寄存器保存引擎30調(diào)度約在從寄存器堆28保存數(shù)據(jù)及將數(shù) 據(jù)恢復到寄存器堆28的操作時寫入到后備存儲器并從后備存儲器讀取。圖4中的流程圖中繪示了一種根據(jù)一個實施例操作堆棧式寄存器堆架構的方法。 最初,可包括寄存器保存引擎(RSE) 30的堆棧式寄存器控制器接收分配物理寄存器 堆(PRF) 28中一個或一個以上寄存器的請求以供程序?qū)iT用來寫入及讀取數(shù)據(jù),例 如算術或邏輯指令的操作數(shù)或其結(jié)果(方塊40)。 RSE 30確定PRF 28中是否剩余有 充足的未經(jīng)分配的寄存器(方塊42)。最初,PRF28中剩余有充足的所述未經(jīng)分配的 寄存器,且將所要求數(shù)目的PRF28寄存器分配給新程序(方塊50)。此過程可隨著每 一程序調(diào)用連續(xù)的程序而重復數(shù)次(方塊40)。在某一時刻調(diào)用程序并請求寄存器分配(方塊40),但PRF28中剩余的未經(jīng)分配 的寄存器不足以滿足所述請求(方塊42)。然后,RSE 30確定必須釋放掉PRF 28中 的多少寄存器來滿足所述請求,并確定后備存儲緩沖器(BSB) 32中是否可獲得伴隨 的自由空間量(方塊44)。如果可獲得,則通過將分配給一個或一個以上當前不活動 程序的至少充足數(shù)目的寄存器的內(nèi)容保存到BSB 32來將所述寄存器解除分配(方塊 48)。然后,RSE30可將這些已解除分配的寄存器連同PRF28中現(xiàn)有的已解除分配的 寄存器分配給請求中的新程序(方塊50),所述新程序可繼續(xù)進行執(zhí)行并將數(shù)據(jù)存儲 在其所分配的PRF28寄存器中。如果已調(diào)用了充足的新程序,且/或如果所述新程序需要大量分配寄存器,則BSB 32可填滿或趨近其容量,在此情形下, 一旦新程序做出請求(方塊40),如果PRF28 中存在的寄存器不充足(方塊42)且BSB中存在的自由空間不充足(方塊44),則 RSE 30將較舊的條目從BSB 32保存到后備存儲器(BS) 36,例如芯片外RAM (方 塊46)。然后,可將數(shù)據(jù)從PRF 28保存到BSB 32 (方塊48),且將被釋放的PRF 28 寄存器分配給新程序(方塊50)。此過程可隨著新程序的調(diào)用而重復(方塊40)。在某一時刻,活動的程序?qū)⒔K止并將控制返回到其將需要重新激活的調(diào)用程序 (方塊52),而不是調(diào)用新的程序(方塊40)。 RSE 30將檢驗以確定是否所有最初分 配給不活動程序的寄存器在PRF28中仍保持分配給所述不活動程序(方塊54)。如果 是,則在所述程序調(diào)用另一程序并變?yōu)椴换顒又?,由所述程序?qū)懭氲乃袛?shù)據(jù)均保 持在PRF54中且所述程序可重新激活并再繼續(xù)執(zhí)行(方塊62)。如果RSE 30保存來自最初分配給不活動程序的一個或一個以上寄存器的數(shù)據(jù)并 將所述寄存器分配給另一程序,則RSE 30檢驗以了解所述數(shù)據(jù)是否存儲在BSB 32中。 如果是,則RSE 30至少讀取來自BSB 32的與不活動程序相關聯(lián)的數(shù)據(jù),并將其寫入到 PRF28中的寄存器,從而將所述寄存器分配給所述不活動程序(方塊60)。然后重新 激活所述不活動程序(方塊62)。如果己經(jīng)從PRF28中保存了與不活動程序相關聯(lián)的數(shù)據(jù)(方塊54),且沒有將所 述數(shù)據(jù)存儲在BSB32中(方塊56),則已將所述數(shù)據(jù)從BSB 32保存到BS 36。在此 情形下,RSE 30至少讀取來自BS 36的與不活動程序相關聯(lián)的數(shù)據(jù)并將其寫入到BSB32 (方塊58)。然后,RSE30將所述數(shù)據(jù)從BSB32恢復到PRF28,從而在重新激活 所述程序(方塊62)之前將正在接收的寄存器分配給不活動程序(方塊60)。然后, 重新激活的程序可調(diào)用另一程序(方塊40),或可獨自完成執(zhí)行并將控制返回給先前 調(diào)用程序(方塊52)。
根據(jù)本發(fā)明教示,所屬技術領域的技術人員應認識到對上述程序的許多明顯的變 化及最優(yōu)化。例如,當數(shù)據(jù)已全部保存到BS36且需用于重新激活程序時,RSE30可 繞過BSB32并將數(shù)據(jù)從BS36直接寫入到PRF28中的寄存器。另外,尤其在本文中 所描述的實施例(其中每一 BSB 32條目的寬度均為PRF28寄存器的寬度乘以PRF28 讀取端口數(shù)目)中,數(shù)據(jù)將不會沿程序邊界從PRF28(或BSB32)存儲或恢復到PRF 28(或BSB 32)。也就是說,并非所有與不活動程序相關聯(lián)的數(shù)據(jù)均可同時地從PRF 28 保存。類似地,當將與一個不活動程序相關聯(lián)的數(shù)據(jù)恢復到PRF28時,RSE30可另 外地恢復與另一程序相關聯(lián)的數(shù)據(jù)(其中與另一程序相關聯(lián)的另外的數(shù)據(jù)保持存儲在 BSB 32或BS 36中)。
通過提供專用局部高速存儲裝置,后備存儲緩沖器32允許寄存器保存引擎30保 存及恢復來自物理寄存器堆28的數(shù)據(jù),而不會招致與將所保存數(shù)據(jù)寫入到芯片外后備 存儲器相關聯(lián)的大量降級及功率消耗。后備存儲緩沖器32是增大物理寄存器堆28的 大小的經(jīng)濟的替代方案,因為后備存儲緩沖器32無需為多端口且無需連接到一個或一 個以上執(zhí)行管線中的管道級。
事實上,后備存儲緩沖器32的存在允許物理寄存器堆28僅包含所界定的與指令 集架構中的GPR相同數(shù)目的寄存器。也就是說,由于一程序在理論上可分配有所有界 定的GPR,所述指令集架構中GPR的數(shù)目對物理寄存器堆28的大小做出了下限。本 發(fā)明的后備存儲緩沖器32允許所述相同數(shù)目充當對物理寄存器堆28的大小做出的上 限以包含硅面積及布線復雜度,且同時獲得高性能及避免或最小化到后備存儲器38 的芯片外存取時的低功率消耗。
雖然在本文中已參照本發(fā)明的特定特征、方面及實施例對本發(fā)明進行了描述,但 顯而易見的是,在本發(fā)明的廣泛范圍內(nèi)可實現(xiàn)許多變化、修改及其他實施例,且因此 所有的變化、修改及實施例均視為在本發(fā)明范圍內(nèi)。因此,應在所有方面將本發(fā)明實 施例視為說明性而非限定性,且包含在隨附權利要求書的含義及等效范圍內(nèi)的所有改 變均涵蓋在隨附權利要求范圍內(nèi)。
1權利要求
1、一種管理具有專用后備存儲緩沖器的堆棧式寄存器堆系統(tǒng)的方法,所述方法包括將來自物理寄存器堆的一個或一個以上寄存器分配給第一程序,且將與所述第一程序相關聯(lián)的數(shù)據(jù)存儲在所述分配的寄存器中;將與所述第一程序相關聯(lián)的數(shù)據(jù)選擇性地保存到所述專用后備存儲緩沖器,并釋放分配給所述第一程序的一個或一個以上寄存器以供分配給第二程序;及在繼續(xù)執(zhí)行所述第一程序之前,將與所述第一程序相關聯(lián)的數(shù)據(jù)從所述專用后備存儲緩沖器恢復到一個或一個以上寄存器并將所述寄存器重新分配給所述第一程序。
2、 如權利要求1所述的方法,其進一步包括將與所述第一程序相關聯(lián)的數(shù)據(jù) 從所述專用后備存儲緩沖器保存到后備存儲器,且隨后在將所述與所述第一程序相關 聯(lián)的數(shù)據(jù)恢復到一個或一個以上寄存器之前從所述后備存儲器中檢索所述與所述第一 程序相關聯(lián)的數(shù)據(jù)。
3、 如權利要求1所述的方法,其中所述后備存儲緩沖器中每一可尋址存儲位置 的位寬度均為所述寄存器的位寬度的整數(shù)倍,且其中將存儲在多個寄存器中的與所述 第一程序相關聯(lián)的數(shù)據(jù)保存到所述后備存儲緩沖器中的單個可尋址存儲位置。
4、 如權利要求3所述的方法,其中所述整數(shù)倍是所述物理寄存器堆的讀取端口 的數(shù)目。
5、 如權利要求4所述的方法,其中同時從所述物理寄存器堆讀取所述整數(shù)倍數(shù) 目的寄存器并在單個寫入操作中將其寫入到所述后備存儲緩沖器。
6、 如權利要求2所述的方法,其中將所述后備存儲緩沖器實施為堆棧,其中當將與所述第一程序相關聯(lián)的數(shù)據(jù)從所述寄存器保存到所述后備存儲緩沖器時,將所述 數(shù)據(jù)推到所述后備存儲緩沖器的頂部上,且其中當所述后備存儲緩沖器己滿時,將與 所述第一程序相關聯(lián)的數(shù)據(jù)從所述后備存儲緩沖器的底部保存到所述后備存儲器。
7、 如權利要求2所述的方法,其中將所述后備存儲緩沖器實施為專用于所述堆 棧式寄存器堆的芯片上RAM。
8、 如權利要求1所述的方法,其中將與所述第一程序相關聯(lián)的數(shù)據(jù)選擇性地保 存到所述專用后備存儲緩沖器包括僅當所述物理寄存器堆中剩余不足以分配給所述 第二程序的未經(jīng)分配的寄存器時,才將與所述第一程序相關聯(lián)的數(shù)據(jù)保存到所述專用 后備存儲緩沖器。
9、 如權利要求1所述的方法,其中將與所述第一程序相關聯(lián)的數(shù)據(jù)選擇性地保存到所述專用后備存儲緩沖器包括僅將與所述第一程序相關聯(lián)的數(shù)據(jù)保存到所述專用后備存儲緩沖器。
10、 一種處理器,其包括物理寄存器堆,其包括至少與所述處理器指令集架構中所界定的通用寄存器的數(shù) 目一樣多的寄存器,所述寄存器被動態(tài)地分配給軟件程序;寄存器保存引擎,其操作以選擇性地保存來自分配給不活動程序的寄存器的數(shù)據(jù)并在所述程序變?yōu)榛顒又皩?shù)據(jù)恢復到所述寄存器;及后備存儲緩沖器,其專用于所述寄存器保存引擎且操作以存儲來自所述分配給不 活動程序的寄存器的所述已保存數(shù)據(jù)。
11、 如權利要求10所述的處理器,其中所述后備存儲緩沖器中的可尋址條目所 具有的位寬度是所述物理寄存器堆中寄存器的位寬度的整數(shù)倍。
12、 如權利要求11所述的處理器,其中所述物理寄存器堆是多端口的,且其中 所述整數(shù)倍是所述物理寄存器堆的讀取端口的數(shù)目。
13、 如權利要求12所述的處理器,其中所述寄存器保存引擎操作以從所述物理 寄存器堆同時讀取所述整數(shù)倍數(shù)目的寄存器,并在單個寫入操作中將數(shù)據(jù)從所述整數(shù) 倍數(shù)目的寄存器寫入到所述后備存儲緩沖器。
14、 如權利要求10所述的處理器,其進一步包括后備存儲器,所述后備存儲器 操作以在所述后備存儲緩沖器已滿時存儲來自所述分配給不活動程序的寄存器的已保 存數(shù)據(jù)。
15、 如權利要求14所述的處理器,其中所述后備存儲緩沖器實施為堆棧,所述 堆棧操作以存儲來自一個或一個以上寄存器的被推到所述堆棧的頂部上的數(shù)據(jù)并將從 所述堆棧的頂部退棧的數(shù)據(jù)恢復到一個或一個以上物理寄存器。
16、 如權利要求15所述的處理器,其中所述后備存儲緩沖器進一步操作以在所 述后備存儲緩沖器趨近容量時將數(shù)據(jù)從所述堆棧底部存儲到所述后備存儲器,且操作 以在所述后備存儲緩沖器通過將數(shù)據(jù)恢復到所述物理寄存器堆中的寄存器來獲得容量 時將數(shù)據(jù)從所述后備存儲器檢索到所述堆棧的底部。
17、 如權利要求14所述的處理器,其中所述后備存儲緩沖器實施為專用于所述 寄存器保存引擎的芯片上RAM。
18、 如權利要求14所述的處理器,其中所述后備存儲器是高速緩沖存儲器。
19、 如權利要求14所述的處理器,其中所述后備存儲器是芯片外RAM。
全文摘要
一種后備存儲緩沖器插置在堆棧式寄存器堆架構中的物理寄存器堆與后備存儲器之間。寄存器保存引擎臨時存儲來自所述物理寄存器堆中分配給芯片上不活動程序的寄存器的數(shù)據(jù),從而釋放將要重新分配給新程序的寄存器。當程序完成并將控制返回給先前不活動的程序時,所述寄存器存儲引擎將與所述不活動程序相關聯(lián)的數(shù)據(jù)從所述后備存儲緩沖器檢索到所述物理寄存器堆中的寄存器,且所述寄存器被重新分配給所述不活動程序。僅當所述后備存儲緩沖器已滿且必須從所述物理寄存器堆保存更多的數(shù)據(jù)時,所述寄存器保存引擎才將數(shù)據(jù)從所述后備存儲緩沖器保存到所述后備存儲器,從而招致芯片外RAM存取所需的顯著性能降級及功率消耗。
文檔編號G06F9/30GK101331448SQ200680047000
公開日2008年12月24日 申請日期2006年10月20日 優(yōu)先權日2005年10月20日
發(fā)明者博胡斯拉夫·雷赫利克 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1