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

用于管理返回堆棧的方法和設(shè)備的制作方法

文檔序號(hào):6567029閱讀:121來源:國知局
專利名稱:用于管理返回堆棧的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明大體上涉及微處理器,且確切地說,涉及管理某些類型的微處理器使用的硬 件返回堆棧以便加速從程序調(diào)用的返回。
背景技術(shù)
由于在要求復(fù)雜功能性的不斷增加的應(yīng)用陣列中部署微處理器,所以需要提高微處 理器的執(zhí)行速度。此外,在例如具有有限電池電力的便攜式電子裝置的嵌入式應(yīng)用中, 需要減少微處理器的電力消耗。然而,簡單地提高微處理器的時(shí)鐘速度可能不會(huì)產(chǎn)生所 要的系統(tǒng)性能提高,因?yàn)楦鞣N輸入/輸出瓶頸會(huì)對(duì)微處理器的現(xiàn)實(shí)性能強(qiáng)加約束。舉例來 說,芯片外存儲(chǔ)器存取一般比芯片上存儲(chǔ)器存取運(yùn)行得慢,從而導(dǎo)致使用指令和數(shù)據(jù)高 速緩存技術(shù)。精簡指令集計(jì)算機(jī)(RISC) —般在每個(gè)時(shí)鐘循環(huán)發(fā)布一個(gè)或一個(gè)以上指令, 且通常使用指令高速緩存來增強(qiáng)性能。管線RISC處理器可在每個(gè)時(shí)鐘循環(huán)發(fā)布多個(gè)指 令,且通常大量使用數(shù)據(jù)和指令高速緩存。指令高速緩存("預(yù)取")預(yù)測未來指令并在微處理器執(zhí)行所述指令之前將其放入芯 片上指令高速緩沖存儲(chǔ)器中。當(dāng)預(yù)取了正確的指令時(shí),預(yù)取可消除與較慢芯片外指令存 儲(chǔ)器相關(guān)的大部分延遲。大部分指令依序執(zhí)行,且可有把握地預(yù)取。條件分支指令可"采 用"或不"采用"分支,這取決于通常僅在管線深處評(píng)估的分支條件。為了避免等待此 評(píng)估的延遲,通常在管線早期預(yù)測分支指令的行為,且從預(yù)測的分支目標(biāo)地址預(yù)取指令。 指令預(yù)取方法包含靜態(tài)和動(dòng)態(tài)指令預(yù)取兩者。動(dòng)態(tài)指令預(yù)取依賴于指令執(zhí)行歷史,且可能涉及(例如)追蹤給定數(shù)目的最新近條 件分支指令的先前采用或未采用預(yù)測的準(zhǔn)確性。靜態(tài)預(yù)取一般不依賴于執(zhí)行歷史,且可 (例如)在首次遇到條件分支時(shí)使用。靜態(tài)預(yù)取為其提供性能優(yōu)點(diǎn)的一種類型的分支指 令是來自被調(diào)用程序的返回指令,其中對(duì)所述程序的返回地址進(jìn)行預(yù)測以支持對(duì)在所述 預(yù)測返回地址處開始的指令進(jìn)行預(yù)取??墒褂?返回堆棧"來支持對(duì)程序調(diào)用返回指令的返回地址的靜態(tài)預(yù)測。典型的返 回堆棧包括多層級(jí)緩沖區(qū)。當(dāng)預(yù)測或辨別程序調(diào)用指令時(shí),可將相應(yīng)的返回地址從微處 理器的指令管線的執(zhí)行級(jí)中取出并推到返回堆棧上。相反,當(dāng)預(yù)測或辨別程序返回指令 時(shí),將當(dāng)前位于返回堆桟頂部的返回地址從堆棧上托,并用作所預(yù)測的用于指令預(yù)取的
返回地址。因此,在常規(guī)的管理返回堆棧的方法中,當(dāng)遇到程序調(diào)用時(shí)將相應(yīng)的預(yù)測返回地址 依序推到返回堆棧上。相反,當(dāng)遇到程序返回指令時(shí),將返回地址依序從堆棧上托。這 種常規(guī)方法不正確地預(yù)測多層級(jí)程序調(diào)用中的程序返回地址,其中連續(xù)程序調(diào)用"串" 在一起,因?yàn)榇械拿恳浑S后程序調(diào)用的返回指令均指回到前一程序調(diào)用的返回指令。最佳地,應(yīng)當(dāng)針對(duì)所述串中的最后程序的返回指令預(yù)測的返回地址是對(duì)應(yīng)于所述串 中的第一程序調(diào)用的返回地址。然而,由于連續(xù)程序調(diào)用導(dǎo)致將每一嵌套程序調(diào)用的返 回地址依序推到返回堆棧上,因而針對(duì)最后程序調(diào)用的返回指令上托的返回地址是所述 串中的緊接在前的調(diào)用程序的返回地址。如果從所述地址繼續(xù)預(yù)取,那么接下來預(yù)取的 指令將是另一返回,其將再次上托返回堆棧。以此方式連續(xù)上托返回堆棧不必要地降低 了處理器性能且浪費(fèi)了電力。發(fā)明內(nèi)容本發(fā)明包括一種使得微處理器能夠正確地預(yù)測多層級(jí)程序調(diào)用中的初始頂部層級(jí)調(diào) 用程序的返回地址的方法和設(shè)備。此類多層級(jí)程序調(diào)用包括一串兩個(gè)或兩個(gè)以上連續(xù)程 序調(diào)用,其中每一隨后程序的返回地址均指回到緊接在前的程序的返回指令。根據(jù)本發(fā) 明的一個(gè)或一個(gè)以上實(shí)施例的返回堆棧電路不是提供最后推入的返回地址作為串中調(diào)用 的最后程序中的返回指令的目標(biāo),而是從堆棧依序上托某一數(shù)目的返回地址,所述數(shù)目 等于連續(xù)調(diào)用程序串中的返回層級(jí)的數(shù)目。這樣做時(shí),返回堆棧電路檢索初始調(diào)用程序 的返回地址,可將所述返回地址提供到指令預(yù)取單元作為指令預(yù)取的目標(biāo)。因此,在一個(gè)實(shí)施例中,本發(fā)明包括一種基于以下操作來管理返回堆棧的方法確 定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目,且將所述數(shù)目的返回地址從返回堆棧上托??蓪?最后上托的地址提供到指令預(yù)取單元作為用于指令預(yù)取的目標(biāo)地址。將從堆棧上托以獲 得給定返回指令的預(yù)測返回地址的返回地址數(shù)目可從與返回指令相關(guān)聯(lián)的靜態(tài)層級(jí)指示 符值中讀取,或者可在程序執(zhí)行期間在運(yùn)行中確定。在一個(gè)實(shí)施例中,層級(jí)指示符可包括嵌入在返回指令中的字段或標(biāo)簽,其值已在編 譯時(shí)間處確定。因此,本發(fā)明包含一種程序編譯方法,其中編譯器邏輯確定與返回指令 相關(guān)聯(lián)的返回層級(jí)數(shù)目,并將與返回指令相關(guān)聯(lián)的返回層級(jí)指示符設(shè)置成對(duì)應(yīng)于所述數(shù) 目的值。為了確定返回層級(jí)數(shù)目,編譯器可對(duì)成串程序調(diào)用序列中的程序調(diào)用數(shù)目計(jì)數(shù)。 一般來說,編譯器通過以下操作來確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目檢測成串的 程序調(diào)用;追蹤給定程序調(diào)用串的嵌套深度;以及根據(jù)所述嵌套深度設(shè)置給定程序調(diào)用
串中的最后返回指令的返回層級(jí)數(shù)目。在另一實(shí)施例中,微處理器中的返回堆棧電路或其它支持邏輯在運(yùn)行時(shí)間動(dòng)態(tài)地確 定與給定返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目。通過這種配置,沒有必要在編譯時(shí)間存儲(chǔ)返 回層級(jí)指示符。對(duì)返回層級(jí)的運(yùn)行時(shí)間確定可基于與用于編譯時(shí)間實(shí)施例的方法相似的 方法。舉例來說,支持邏輯可對(duì)成串程序調(diào)用序列中的程序調(diào)用數(shù)目計(jì)數(shù),并基于所述 計(jì)數(shù)為最后調(diào)用的程序的返回指令設(shè)置返回層級(jí)值。更一般來說,動(dòng)態(tài)運(yùn)行時(shí)間追蹤包 括檢測成串的程序調(diào)用;追蹤給定程序調(diào)用串的嵌套深度;以及根據(jù)所述嵌套深度設(shè) 置給定程序調(diào)用串中的最后返回指令的返回層級(jí)數(shù)目。


圖1是說明微處理器的方框圖。圖2是說明圖1的微處理器中使用的返回堆棧的方框圖。 圖3是說明包括連續(xù)成串的程序調(diào)用的多層級(jí)程序調(diào)用的程序指令流程圖。 圖4是說明借以根據(jù)給定多層級(jí)程序調(diào)用中的返回層級(jí)數(shù)目上托返回堆棧的過程的 邏輯流程圖。圖5是包含嵌入式返回層級(jí)指示符的編譯器產(chǎn)生的返回指令的方框圖。圖6是說明借以將返回堆棧上托由嵌入在給定返回指令中或與所述返回指令相關(guān)聯(lián)的層級(jí)指示符指示的次數(shù)的過程的邏輯流程圖。圖7是說明用于檢測多層級(jí)程序調(diào)用、追蹤此類多層級(jí)程序調(diào)用內(nèi)的調(diào)用嵌套深度并基于所追蹤的深度設(shè)置返回層級(jí)的過程的邏輯流程圖。
具體實(shí)施方式
圖1至少部分說明微處理器10,其包括處理器內(nèi)核12、指令預(yù)取單元14、指令高 速緩沖存儲(chǔ)器16、指令高速緩沖存儲(chǔ)器控制器18、加載/存儲(chǔ)單元20、數(shù)據(jù)高速緩沖存 儲(chǔ)器22、數(shù)據(jù)高速緩沖存儲(chǔ)器控制器24以及主翻譯后備緩沖區(qū)26。以非限制性方式舉 例來說,微處理器10可以是基于精簡指令集計(jì)算機(jī)(RISC)結(jié)構(gòu)的管線處理器。在一個(gè)或一個(gè)以上實(shí)施例中,內(nèi)核12包含指令執(zhí)行單元(未圖示),所述單元包括 一個(gè)或一個(gè)以上多級(jí)指令管線。在操作中,內(nèi)核12執(zhí)行程序指令,并進(jìn)行相應(yīng)的加載/ 存儲(chǔ)數(shù)據(jù)操作。翻譯后備緩沖區(qū)26接受來自內(nèi)核12的輸入,并向內(nèi)核12提供輸出。更 確切地說,翻譯后備緩沖區(qū)26將內(nèi)核12分別介接到指令高速緩沖存儲(chǔ)器16和數(shù)據(jù)高速 緩沖存儲(chǔ)器22。指令和數(shù)據(jù)高速緩沖存儲(chǔ)器16和22包括快速板上存儲(chǔ)器,且微處理器 10經(jīng)由指令和數(shù)據(jù)高速緩沖存儲(chǔ)器控制器18和24使用指令和數(shù)據(jù)預(yù)取,以保持高速緩
沖存儲(chǔ)器填充有接下來需要的指令和數(shù)據(jù)。確切地說,微處理器IO的指令預(yù)取操作包含對(duì)從被調(diào)用程序的返回的指令流進(jìn)行預(yù) 測。預(yù)測程序返回的地址通過使得微處理器IO能夠在完成程序之后開始預(yù)取最可能需要 的指令來改進(jìn)性能。圖2說明內(nèi)核12用來預(yù)測程序返回指令的目標(biāo)地址的返回堆棧電路30的一個(gè)實(shí)施 例。所說明的返回堆棧電路30包括返回堆棧32和相關(guān)聯(lián)的返回堆??刂破?4。臨時(shí)存 儲(chǔ)寄存器可在返回堆棧控制器34的控制下以邏輯方式鏈接在一起以形成返回堆棧32。 可實(shí)施各種緩沖區(qū)布置,但在一個(gè)實(shí)施例中,返回堆棧32被配置為后進(jìn)先出存儲(chǔ)器堆棧。當(dāng)內(nèi)核的指令管線(未圖示)中的指令執(zhí)行單元預(yù)測或另外方面辨別程序調(diào)用時(shí), 返回堆??刂破?4接收相應(yīng)的返回地址,并將其推到返回堆棧32上。返回堆??刂破?34因此在預(yù)測程序調(diào)用時(shí)將程序返回地址一次一個(gè)地依序推到返回堆棧32上。當(dāng)遇到 或預(yù)測到程序返回指令時(shí),返回堆??刂破?4通常上托程序返回地址,從而將其提供到 指令預(yù)取單元14。然而,與常規(guī)的返回堆棧管理方法相反,返回堆??刂破?4不是始終通過一次只從 返回堆棧32上托一個(gè)返回地址來為指令預(yù)取獲得返回地址。事實(shí)上,返回堆棧控制器 34 —般經(jīng)配置以將返回地址依序推到返回堆棧32上,并從返回堆棧32依序上托返回地 址,但其經(jīng)特別配置以確定與給定返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目,且將所述數(shù)目的返 回地址從返回堆棧32上托。接著,將最后上托的返回地址作為預(yù)測的程序返回地址提供 到預(yù)取單元14。一次從返回堆棧32上托一個(gè)以上返回地址的能力允許返回堆棧控制器34正確地預(yù) 測多層級(jí)程序調(diào)用中的初始頂部層級(jí)調(diào)用程序的返回地址。此類多層級(jí)程序調(diào)用包括一 串兩個(gè)或兩個(gè)以上連續(xù)程序調(diào)用,其中每一隨后程序的返回地址指回到緊接在前的程序 的返回指令。圖3說明一系列程序指令,其包含包括多層級(jí)程序調(diào)用在內(nèi)的許多程序調(diào)用。根據(jù) 所說明的程序流,"主"程序包含對(duì)稱為"procl"的程序的調(diào)用。Procl程序包含對(duì)稱為 "proc2"的程序的調(diào)用。Proc2程序包含對(duì)稱為"proc3"的程序的調(diào)用。因此,procl包括連續(xù)程序調(diào)用鏈接串中的第一頂部層級(jí)程序。程序串的特征在于, 每一連續(xù)調(diào)用的程序中的返回指令的返回地址"指"回到緊接在前的程序的返回指令。 也就是說,proc3的返回指令的返回地址是proc2的返回指令的地址,且proc2的返回指 令的返回地址是初始調(diào)用程序procl之后的下一指令的地址。
圖4說明圖3的程序流的返回堆??刂破?4的操作。主程序包含地址"bl"處的對(duì) 程序procl的調(diào)用指令,因此返回堆??刂破?4將返回地址bl + l推到返回堆棧32上 (步驟100)。依次地,程序procl包含地址"b2"處的對(duì)程序proc2的調(diào)用指令,因此 返回堆棧控制器34將返回地址b2+l推到返回堆棧32上(步驟102)。最后,程序proc2 包含地址b3處的對(duì)程序proc3的調(diào)用指令,因此返回堆棧控制器34將返回地址b3 + l 推到返回堆棧32上(步驟104)。所述推入序列導(dǎo)致返回堆棧32保持返回地址b3 + l、 b2+l以及bl + l,其中b3+l保持在返回堆棧32的頂部。對(duì)于proc3的返回指令,常規(guī)的返回堆棧管理方法將上托最頂部的堆棧值b3+l,且 將所述值用作用于指令預(yù)取的預(yù)測返回地址。所述地址將取出proc2的返回指令,從而 導(dǎo)致返回堆棧32上托地址b2+l,所述地址b2+l將取出procl的返回指令,從而導(dǎo)致 返回堆棧32上托bl + l。此連續(xù)返回堆棧上托和指令預(yù)取既浪費(fèi)電力又浪費(fèi)處理器執(zhí)行 時(shí)間,從而對(duì)性能造成負(fù)面影響。由于連續(xù)程序調(diào)用的成串性質(zhì),實(shí)際返回地址位置是 初始頂部層級(jí)調(diào)用程序procl中的bl + l。因此,返回堆??刂破?4通過確定其必須從 返回堆棧32上托的層級(jí)數(shù)目來獲得proc3的返回指令的正確頂部層級(jí)返回地址(步驟 106)而優(yōu)化性能。返回堆??刂破?4從返回堆棧32上托所述數(shù)目的返回地址(步驟108),并使用最 后上托的返回地址(此處為bl + l)作為用于預(yù)取單元(PFU) 14的預(yù)測返回地址(步 驟110)。盡管本論述按照將返回地址推到返回堆棧32上和從返回堆棧32上托出返回地 址來構(gòu)造操作描述,但應(yīng)了解,此類操作可根據(jù)需要基于在邏輯上移動(dòng)堆棧指針,使得 返回堆棧32中的指向值代表用于指令預(yù)取的返回地址。圖4是返回堆??刂破髟陬A(yù)測到或另外遇到連續(xù)程序調(diào)用串中的最后程序的返回指 令時(shí)跳過存儲(chǔ)在返回堆棧32上的中間返回地址并提供對(duì)應(yīng)于所述串中的第一頂部層級(jí) 程序的返回地址的能力的非限制性實(shí)例。更一般來說,返回堆??刂破?4經(jīng)配置以確定 與給定返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目,并將返回堆棧32上托相應(yīng)次數(shù)以獲得用于指令 預(yù)取的返回地址。圖5說明一種用于確定與任何給定返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目的機(jī)制,其中所 述返回指令包含返回層級(jí)指示符或與所述返回層級(jí)指示符相關(guān)聯(lián),所述返回層級(jí)指示符 的值指示返回層級(jí)數(shù)目。因此,在一個(gè)或一個(gè)以上實(shí)施例中,由微處理器10辨別和使用 的指令集包含返回指令,所述返回指令包括返回操作碼("操作碼")和與所述操作碼一 起嵌入或另外鏈接到所述操作碼的返回層級(jí)指示符字段或標(biāo)簽。因此,如圖6所示,確 定與任何給定返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目包括讀取指令的返回層級(jí)字段或標(biāo)簽。返回堆??刂破?4可經(jīng)配置以實(shí)施圖6的處理邏輯,其中返回堆??刂破?4確定 給定返回指令是否包含返回層級(jí)指示符或是否與所述指示符相關(guān)聯(lián)(步驟120)。如果是 (步驟122),那么返回堆棧控制器34將返回堆棧32上托相應(yīng)次數(shù)(步驟124)以獲得 用于指令預(yù)取的返回地址。如果不是(步驟122),那么返回堆??刂破?4將返回堆棧 32上托默認(rèn)次數(shù)(步驟126)以獲得用于指令預(yù)取的返回地址。舉例來說,默認(rèn)次數(shù)可 以是一次。在一個(gè)實(shí)施例中,程序編譯器可經(jīng)配置以為每個(gè)返回指令產(chǎn)生返回層級(jí)指示符,且 返回堆??刂破?4可因此始終經(jīng)配置以為每個(gè)返回指令讀取相應(yīng)的返回層級(jí)指示符值 并相應(yīng)地控制返回堆棧上托。然而,如圖6所示,程序編譯器可僅在返回層級(jí)數(shù)目超出 默認(rèn)值"一"的情況下產(chǎn)生返回層級(jí)指示符。換句話說,第一類型的返回指令并不包含 返回層級(jí)指示符,且返回堆棧控制器34經(jīng)配置以將其辨別為返回堆棧32應(yīng)被上托一次 的隱含指示符。第二類型的返回指令確實(shí)包含返回層級(jí)指示符,且返回堆??刂破鹘?jīng)配 置以使用所述返回層級(jí)指示符的值來控制堆棧上托。程序編譯器的一個(gè)或一個(gè)以上實(shí)施例可經(jīng)配置以根據(jù)圖7中說明的處理邏輯產(chǎn)生用 于返回指令的返回層級(jí)指示符。所述編譯器可經(jīng)配置以確定兩個(gè)或兩個(gè)以上連續(xù)程序調(diào) 用是否串在一起成為多層級(jí)程序調(diào)用(步驟130)。編譯器可(例如)通過確定被調(diào)用程序的返回指令是否指回到調(diào)用程序的返回指令來辨別多層級(jí)程序調(diào)用。如果給定程序調(diào)用不是多層級(jí)程序調(diào)用串的一部分,那么編譯器可清除例如調(diào)用層 級(jí)計(jì)數(shù)器等的返回層級(jí)追蹤信息(步驟132),并根據(jù)需要繼續(xù)進(jìn)行正常編譯操作。然而, 如果編譯器檢測到多層級(jí)程序調(diào)用,那么其追蹤所述多層級(jí)程序調(diào)用的嵌套(調(diào)用)深 度。 一種追蹤嵌套深度的方法包括對(duì)連續(xù)成串的程序調(diào)用計(jì)數(shù)(步驟134)。因此,編譯 器可維持計(jì)數(shù)器以累計(jì)多層級(jí)程序的調(diào)用深度。當(dāng)檢測到串中的最后程序的返回指令(步驟136)時(shí),編譯器基于所追蹤的計(jì)數(shù)為 所述指令設(shè)置返回層級(jí)指示符(步驟138)。因此,如上文解釋的,編譯器可基于所累計(jì) 的計(jì)數(shù)為所述最后程序的返回指令設(shè)置返回層級(jí)指示符的值。因此,在編譯時(shí)間設(shè)置這 個(gè)值使得返回堆??刂破?4能夠在運(yùn)行時(shí)間(即,當(dāng)微處理器IO正在執(zhí)行所編譯的程 序碼時(shí))執(zhí)行多層級(jí)返回地址預(yù)測。還應(yīng)了解,圖7的處理邏輯可實(shí)施為由返回堆??刂破?4或由微處理器10內(nèi)的其 它支持邏輯實(shí)行的動(dòng)態(tài)運(yùn)行時(shí)間處理。舉例來說,返回堆??刂破?4可經(jīng)配置以在運(yùn)行 時(shí)間處理期間與內(nèi)核的指令執(zhí)行單元或其它邏輯協(xié)作以檢測多層級(jí)程序,追蹤那些程序 的調(diào)用深度,并產(chǎn)生適當(dāng)?shù)姆祷貙蛹?jí)指示符以用于預(yù)測頂部層級(jí)返回地址。因此,返回 堆??刂破?4或內(nèi)核12內(nèi)的其它電路可配置有必需的邏輯和存儲(chǔ)器電路元件,需要用 所述邏輯和存儲(chǔ)器電路元件來辨別成串程序調(diào)用、追蹤/計(jì)數(shù)成串程序調(diào)用的調(diào)用深度和 產(chǎn)生相應(yīng)的返回層級(jí)指示符值以用于控制返回地址預(yù)測。一般來說,可在編譯時(shí)間或在運(yùn)行時(shí)間確定返回層級(jí)數(shù)目。在任一情況下,均可通 過對(duì)成串序列中的程序調(diào)用計(jì)數(shù)來確定與給定指令相關(guān)聯(lián)的返回層級(jí)數(shù)目,使得針對(duì)所 述串中的最后程序的返回指令預(yù)測的返回地址是頂部層級(jí)的初始調(diào)用程序的返回地址, 而不是所述串中的緊接在前的程序的地址。在任何情況下,微處理器IO均基于用成串程序調(diào)用序列中的第一程序調(diào)用的返回地 址代替所述成串程序調(diào)用序列中的最后程序調(diào)用的返回地址并提供所述代替的返回地址 以用于指令預(yù)取,來實(shí)施一種為成串程序調(diào)用序列預(yù)測用于指令預(yù)取的返回地址的方法。 可通過辨別出對(duì)于給定的當(dāng)前程序過程而言對(duì)下一程序過程的調(diào)用是所述當(dāng)前程序的返 回指令之前的最后指令,來檢測到成串的程序調(diào)用。以此方式,微處理器10的性能在對(duì) 成串程序調(diào)用的執(zhí)行方面得到優(yōu)化,因?yàn)槎嘤嗟闹虚g返回指令不被取入微處理器的指令 管線中并加以執(zhí)行。所屬領(lǐng)域的技術(shù)人員應(yīng)了解,對(duì)一個(gè)或一個(gè)以上實(shí)施例的在前論述以及附圖均不限 制本發(fā)明。而是,本發(fā)明只受所附權(quán)利要求書及其合法等效物限制。
權(quán)利要求
1.一種管理返回堆棧的方法,其包括確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目;以及從所述返回堆棧上托所述數(shù)目的返回地址。
2. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包括將從所述返回堆棧最后上托的返回地址 提供到指令預(yù)取單元作為所預(yù)測的用于指令預(yù)取的返回地址。
3. 根據(jù)權(quán)利要求l所述的方法,其中確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目包括讀取 與所述返回指令相關(guān)聯(lián)的返回層級(jí)指示符值。
4. 根據(jù)權(quán)利要求3所述的方法,其中讀取與所述返回指令相關(guān)聯(lián)的返回層級(jí)指示符值 包括讀取嵌入在所述返回指令中的值。
5. 根據(jù)權(quán)利要求1所述的方法,其中確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目包括確定 返回指令是否包含嵌入的返回層級(jí)指示符,如果包含的話,通過讀取所述返回層級(jí) 指示符來確定所述返回層級(jí)數(shù)目,如果不包含的話,基于針對(duì)所述返回堆棧的默認(rèn) 返回層級(jí)設(shè)置來確定返回層級(jí)指示符的數(shù)目。
6. 根據(jù)權(quán)利要求5所述的方法,其進(jìn)一步包括將針對(duì)所述返回堆棧的所述默認(rèn)返回層 級(jí)設(shè)置設(shè)置成一,使得所述返回堆棧為缺乏嵌入的返回層級(jí)指示符的返回指令從所 述返回堆棧上托一個(gè)返回地址,且為包含嵌入的返回層級(jí)指示符的返回地址從所述 返回堆棧上托所指示數(shù)目的返回地址。
7. 根據(jù)權(quán)利要求1所述的方法,其中確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目包括對(duì)成 串的程序調(diào)用序列中的程序調(diào)用數(shù)目進(jìn)行計(jì)數(shù)。
8. 根據(jù)權(quán)利要求1所述的方法,其中確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目包括檢 測成串的程序調(diào)用,追蹤給定程序調(diào)用串的嵌套深度,以及根據(jù)所述嵌套深度設(shè)置 用于所述給定程序調(diào)用串中最后一個(gè)返回指令的返回層級(jí)數(shù)目。
9. 一種返回堆棧電路,其包括返回堆棧,其經(jīng)配置以存儲(chǔ)多個(gè)返回地址;返回堆??刂破?,其大體上經(jīng)配置以將返回地址依序推到所述返回堆棧上且從所 述返回堆棧依序上托返回地址,且特別經(jīng)配置以確定與給定返回指令相關(guān)聯(lián)的返回 層級(jí)數(shù)目且從所述返回堆棧上托所述數(shù)目的返回地址。
10. 根據(jù)權(quán)利要求9所述的返回堆棧電路,其中所述返回堆棧控制器進(jìn)一步經(jīng)配置以將從所述返回堆棧最后上托的返回地址提供到指令預(yù)取單元作為所預(yù)測的用于指令 預(yù)取的返回地址。
11. 根據(jù)權(quán)利要求9所述的返回堆棧電路,其中所述返回堆??刂破鹘?jīng)配置以通過讀取 與返回指令相關(guān)聯(lián)的返回層級(jí)指示符值來確定與所述給定返回指令相關(guān)聯(lián)的返回 層級(jí)數(shù)目。
12. 根據(jù)權(quán)利要求11所述的返回堆棧電路,其中所述返回堆??刂破鹘?jīng)配置以讀取嵌入 在所述給定返回指令中的值作為所述返回層級(jí)指示符。
13. 根據(jù)權(quán)利要求9所述的返回堆棧電路,其中所述返回堆??刂破鹘?jīng)配置以通過確定 所述給定返回指令是否包含嵌入的返回層級(jí)指示符來確定與所述給定返回指令相 關(guān)聯(lián)的返回層級(jí)數(shù)目,如果包含的話,通過讀取所述返回層級(jí)指示符來確定所述返 回層級(jí)數(shù)目,如果不包含的話,基于針對(duì)所述返回堆棧的默認(rèn)返回層級(jí)設(shè)置來確定 返回層級(jí)指示符的數(shù)目。
14. 根據(jù)權(quán)利要求13所述的返回堆棧電路,其進(jìn)一步包括將針對(duì)所述返回堆棧的所述 默認(rèn)返回層級(jí)設(shè)置設(shè)置成一,使得所述返回堆棧為缺乏嵌入的返回層級(jí)指示符的返 回指令從所述返回堆棧上托一個(gè)返回地址,且為包含嵌入的返回層級(jí)指示符的返回 指令從所述返回堆棧上托所指示數(shù)目的返回地址。
15. 根據(jù)權(quán)利要求9所述的返回堆棧電路,其中所述返回堆??刂破鹘?jīng)配置以通過對(duì)成 串程序調(diào)用序列中的程序調(diào)用數(shù)目進(jìn)行計(jì)數(shù)來確定與所述給定返回指令相關(guān)聯(lián)的 所述返回層級(jí)數(shù)目。
16. 根據(jù)權(quán)利要求9所述的返回堆棧電路,其中所述返回堆棧控制器經(jīng)配置以通過以下 操作來確定與所述給定返回指令相關(guān)聯(lián)的所述返回層級(jí)數(shù)目檢測成串的程序調(diào) 用,追蹤給定程序調(diào)用串的嵌套深度,以及根據(jù)所述嵌套深度設(shè)置用于所述給定程 序調(diào)用串中最后一個(gè)返回指令的返回層級(jí)數(shù)目。
17. —種計(jì)算機(jī)程序編譯方法,其包括確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目;以及將與所述返回指令相關(guān)聯(lián)的返回層級(jí)指示符設(shè)置成對(duì)應(yīng)于所述數(shù)目的值。
18. 根據(jù)權(quán)利要求17所述的方法,其中確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目包括對(duì) 成串程序調(diào)用序列中的程序調(diào)用數(shù)目進(jìn)行計(jì)數(shù)。
19. 根據(jù)權(quán)利要求17所述的方法,其中確定與返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目包括 檢測成串的程序調(diào)用;追蹤給定程序調(diào)用串的嵌套深度;以及根據(jù)所述嵌套深度設(shè)置用于所述給定程序調(diào)用串中最后一個(gè)返回指令的返回層級(jí)數(shù)目。
20. 根據(jù)權(quán)利要求17所述的方法,其中將與所述返回指令相關(guān)聯(lián)的返回層級(jí)指示符設(shè) 置成對(duì)應(yīng)于所述數(shù)目的值包括設(shè)置嵌入在所述返回指令中的值。
21. —種為成串程序調(diào)用序列預(yù)測用于指令預(yù)取的返回地址的方法,其包括用所述成串程序調(diào)用序列中的第一程序調(diào)用的返回地址代替所述成串程序調(diào)用 序列中的最后程序調(diào)用的返回地址;以及 提供所述代替的返回地址以用于指令預(yù)取。
22. 根據(jù)權(quán)利要求22所述的方法,其進(jìn)一步包括通過辨別出對(duì)于給定的當(dāng)前程序過程 而言對(duì)下一程序過程的調(diào)用是所述當(dāng)前程序的返回指令之前的最后指令來檢測成 串程序調(diào)用序列。
23. 根據(jù)權(quán)利要求22所述的方法,其進(jìn)一步包括在程序編譯期間檢測成串程序調(diào)用序 列。
24. 根據(jù)權(quán)利要求22所述的方法,其進(jìn)一步包括在程序執(zhí)行期間檢測成串程序調(diào)用序 列。
25. 根據(jù)權(quán)利要求21所述的方法,其中用所述成串程序調(diào)用序列中的第一程序調(diào)用的 返回地址代替所述成串程序調(diào)用序列中的最后程序調(diào)用的返回地址包括對(duì)于所述 成串程序調(diào)用序列中的連續(xù)程序調(diào)用,將返回地址依序推到返回堆棧上;以及響應(yīng) 于所述最后程序調(diào)用的返回指令,將所述返回堆棧上托獲得所述第一程序調(diào)用的返 回地址所需的次數(shù)。
全文摘要
一種處理器包含用來預(yù)測程序返回地址以用于指令預(yù)取的返回堆棧電路,其中返回堆??刂破鞔_定與給定返回指令相關(guān)聯(lián)的返回層級(jí)數(shù)目,并將所述數(shù)目的返回地址從所述返回堆棧上托。將多個(gè)返回地址從所述返回堆棧上托允許所述處理器預(yù)取連續(xù)程序調(diào)用串中的初始調(diào)用程序的返回地址。在一個(gè)實(shí)施例中,所述返回堆??刂破鲝那度朐谒龇祷刂噶钪械闹抵凶x取所述返回層級(jí)數(shù)目。補(bǔ)充編譯器在編譯時(shí)間為給定返回指令計(jì)算返回層級(jí)值,并將那些值嵌入在所述返回指令中。在另一實(shí)施例中,所述返回堆棧電路通過對(duì)連續(xù)程序調(diào)用串中的程序調(diào)用(分支)進(jìn)行計(jì)數(shù)來動(dòng)態(tài)地追蹤所述返回層級(jí)數(shù)目。
文檔編號(hào)G06F9/38GK101156135SQ200680011577
公開日2008年4月2日 申請(qǐng)日期2006年2月17日 優(yōu)先權(quán)日2005年2月18日
發(fā)明者托馬斯·安德魯·薩托里烏斯, 杰弗里·托德·布里奇斯, 羅德尼·韋恩·史密斯, 詹姆斯·諾里斯·迪芬德爾費(fèi)爾 申請(qǐng)人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1