[發明專利]用于解決有害孿生問題的方法和結構無效
| 申請號: | 201080010412.3 | 申請日: | 2010-04-13 |
| 公開(公告)號: | CN102356377A | 公開(公告)日: | 2012-02-15 |
| 發明(設計)人: | 沙伊倫德爾·喬杜里;馬克·特倫布萊 | 申請(專利權)人: | 甲骨文股份有限公司 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30 |
| 代理公司: | 北京律盟知識產權代理有限責任公司 11287 | 代理人: | 章蕾 |
| 地址: | 美國加利*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 解決 有害 孿生 問題 方法 結構 | ||
沙伊倫德爾·喬杜里(Shailender?Chaudhry)
馬克·特倫布萊(Marc?Tremblay)
技術領域
本發明大體上涉及微處理器的寄存器堆,且更明確地說,涉及同時支持多個寄存器大小的寄存器堆。
背景技術
隨著處理器已變得更強大,此類處理器所處理的數據單元的大小已連續增加。舉例來說,較早的處理器中的一些處理器包含若干個寄存器堆,其中每一寄存器條目存儲一數據字節。一些處理器中的寄存器堆中的寄存器大小是每一寄存器六十四位。
通常,當引入新的處理器時,所述處理器經配置以處理針對具有較小寄存器大小的較早處理器而寫入的計算機代碼以及針對在新的處理器中可用的最大寄存器大小而寫入的計算機代碼,即,在新的處理器中維持了計算機程序的向后兼容性。圖1是寄存器堆100的實例,其中寄存器的大小從一代處理器到下一代所述處理器已翻倍。舉例來說,較舊的處理器利用三十二個三十二位的寄存器,f0到f31。新的處理器利用三十二個六十四位的寄存器d0到d31。
如圖1中所示,寄存器d0的最低有效三十二個位是寄存器f0,且寄存器d0的最高有效三十二個位是寄存器f1。因此,寄存器d0包含寄存器f0和寄存器f1。本文中,將寄存器f1稱為寄存器f0的雙生物。寄存器d0到d15中的每一者包含兩個三十二位的寄存器,且因此寄存器d0到d15中的每一者包含雙生寄存器(twin?registers)。
在六十四位寄存器的最高有效位中的三十二位寄存器被稱為所述六十四位寄存器的最低有效位中的三十二位寄存器的有害孿生(evil?twin)。使用寄存器堆100來用于執行使用三十二位和六十四位寄存器兩者的指令可能產生問題,所述問題被稱為“有害孿生”問題。
如果兩個指令通過六十四位寄存器的最高有效位中的三十二位寄存器而耦合,即,通過有害孿生寄存器而耦合,那么處理器通常不會檢測到所述耦合。因此,由于有害孿生問題的緣故,可能會獲得不正確的結果。
舉例來說,用于使用六十四位操作數的指令的比較器沒有將使用所述六十四位寄存器的三十二個最高有效位的指令檢測為目的地。圖1B是計算機程序150的片段,所述片段包含耦合的指令,但比較器并未檢測到所述耦合,且因此計算機程序150遭受有害孿生問題。
在圖1B中,加載指令1d加載寄存器f1中的值,寄存器f1是寄存器d0的三十二個最高有效位,且為有害孿生寄存器。在下一行中,浮點雙精度加法指令(floating?pointing?double?precision?add?instruction)fdadd使寄存器d0中的值與寄存器d4中的值相加,并將所得的值放置在寄存器d8中。如圖1A中所指示,寄存器d0是六十四位寄存器,且因此包含寄存器f1中的任何值。
然而,用于確定浮點雙精度加法指令fdadd所依賴的指令的比較器沒有檢測到浮點雙精度加法指令fdadd對有害孿生寄存器f1中的加載指令1d的結果的相依性。因此,可在加載指令1d完成之前執行浮點雙精度加法指令fdadd。在此情況下,浮點雙精度加法指令fdadd的結果的準確性是未知的,且很有可能是不正確的,因為指令1d的結果不在有害孿生寄存器f1中。
類似地,也如圖1A中所示,六十四位寄存器d8包含三十二位的寄存器f17。浮點加法指令fadd使寄存器f15中的值與有害孿生寄存器f17中的值相加,并將所得的值放置在寄存器f23中。然而,寄存器f17直到在浮點雙精度加法指令fdadd完成之后才包含正確的值。
比較器沒有檢測到浮點加法指令fadd對浮點雙精度加法指令fdadd的結果的相依性。因此,可在浮點雙精度加法指令fdadd完成之前執行浮點加法指令fadd。在此情況下,浮點加法指令fadd的結果的準確性是未知的,且很有可能是不正確的,因為指令fdadd的結果不在有害孿生寄存器f17中。
在這些例子中的每一者中,問題在于處理器不能夠檢測到指令對有害孿生寄存器中的值的相依性。如所注意,此問題被稱為有害孿生問題。
在此實例中,寄存器f1、f3……中的每一者分別被稱為寄存器f0、f2的有害孿生。此有害孿生問題已經是公認的,因為不同大小的寄存器到同一寄存器堆的映射使寄存器堆所需要的面積最小化,同時允許在處理器上執行不同代的計算機代碼。此外,為了避免有害孿生問題,舉例來說,一些處理器直到已完成所有單精度指令之后才允許發起雙精度指令,且直到已完成所有雙精度指令之后才允許發起單精度指令。發起的延遲使管線停止,直到完成對一個指令集的執行為止。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于甲骨文股份有限公司,未經甲骨文股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201080010412.3/2.html,轉載請聲明來源鉆瓜專利網。





