[發明專利]高速執行子程序轉移指令的程序變換裝置和處理器無效
| 申請號: | 96103712.1 | 申請日: | 1996-03-22 |
| 公開(公告)號: | CN1099074C | 公開(公告)日: | 2003-01-15 |
| 發明(設計)人: | 高山秀一;檜垣信生;富永宣輝;宮地信哉;漆原誠一 | 申請(專利權)人: | 松下電器產業株式會社 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45;G06F13/36 |
| 代理公司: | 中國專利代理(香港)有限公司 | 代理人: | 王勇,葉愷 |
| 地址: | 日本*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 高速 執行 子程序 轉移 指令 程序 變換 裝置 處理器 | ||
技術領域
本發明是一種關于將源程序翻譯為機器語言指令序列并進行連接的程序變換裝置,并且也與執行上述程序變換裝置所產生的機器語言指令序列的處理器有關,特別是與一種能避免在執行轉向子程序的控制轉移指令時所發生的流水線停頓的程序變換裝置和處理器有關。
背景技術
使CPU(以下簡稱“處理器”)處理高速化的基本技術之一便是流水線處理。流水線處理是將一條指令的處理劃分為多個較小的處理單位(流水線階段),利用各階段同時進行處理,從而提高處理速度的技術。但是,在執行轉移指令時,便會產生流水線停頓(混亂),使流水線處理的性能低于理想性能。這一現象,稱為轉移冒險(branch?hazard)。
圖1表示包括轉移冒險的指令序列的狀況。圖2是執行圖1的指令序列時將流水線用時鐘周期來表示的示意圖。流水線由三個階段組成(IF:取指令階段,DEC:指令譯碼階段,EX:指令執行及有效地址生成階段)。
現在假定指令1是一條轉移到首地址為A的子程序的轉移指令。在第一個時鐘周期時在IF階段所取得的指令1,要在第三個時鐘周期的EX階段才被執行,而在第四個時鐘周期,地址為A的指令A才在IF階段被取出,要執行這條指令,是在第六個時鐘周期。也就是說,從這個例子中,已經由流水線取入的指令2、3必須放棄,從指令1開始執行到指令A執行為止,需要三個時鐘周期。圖2中,用灰色來表示流水線停頓。
為避免這樣的轉移風險,作為先有技術,有稱為延遲轉移的方法(例如,David?A.Patterson和John?L.Hennesy的ComputerArchitecture:AQuantitative?Approach”,Morgan?KaufmannPublishers,1990)。按此延遲轉移方法,編譯程序在編譯時,對指令進行調整,例如,采用了這樣的方法,即將轉移目標指令預先移動到相當于轉移指令的后繼指令的位置(轉移延遲槽)。
圖3是轉移目標指令放到了轉移延遲槽時的指令序列的示意圖。作為轉移目標指令的指令A、B,作為轉移指令1的后續指令,被移動到地址2、3。圖4是圖3中所示的指令序列被執行時的流水線。從該圖可知,利用延遲轉移方法,不會取出無效的指令,不會產生圖2所示的流水線停頓,因而利用圖3的延遲轉移的調整方法,可以解決轉移冒險問題。但是,利用延遲轉移方法,并不一定能將轉移目標指令移動到轉移延遲槽中,并不總能消除轉移冒險這一問題。具體來說,在圖1所示的例中,有時編譯程序并不能識別出以地址A為首址的子程序。通常,編譯程序逐個對包含程序的文件進行翻譯,有時包含指令1的程序和包含指令A、B的子程序是處于不同的文件中。因此,當只給定包含有指令1的程序所在的文件時,編譯程序就不能將轉移目標指令A、B移動到轉移延遲槽中,因而不能進行調整。因此,當要轉移到處于其它文件中的指令時,仍舊會產生轉移冒險的問題。
為了避免上述問題,考慮過多種方法,例如在編輯程序時,盡量不要轉移到處于其它文件中的子程序,或者是預先對程序中發生轉移的位置進行調查,將有關的子程序都收集到同一個文件之中,在進行上述處理之后,再進行編譯。但是,這樣的方法,在設計程序時必須時常考慮到轉移目標處的指令配置,導致了程序的設計或開發的作業效率下降。進而,作為編譯單位的文件長度增大,使編譯的時間過長。
發明內容
本發明的目的,就是要提供一種變換裝置,對子程序調用指令和被調用的子程序來說,即使它們存儲在不同的文件中,也不會產生流水線停頓,該程序變換裝置就是要生成這樣的能夠調用子程序的可執行程序,本發明的另一個目的,是提供能夠執行前述可執行程序的處理器。
為了達到上述目的,下述的程序變換裝置以及執行它的可執行程序的處理器便可達到這一目的。
首先,在將程序翻譯為機器語言指令序列時,對程序中的各子程序,逐個地檢測出它們所需堆棧的長度,與機器語言指令序列同時保存到文件中。
其次,在連接分散在多個文件中的機器語言指令序列時,從機器語言程序中檢測出轉移到子程序的轉移指令,從包含有該轉移目標子程序的前述文件中,讀出該子程序所需的堆棧的長度,并將該轉移指令轉換為既包括轉移到轉移目標,又包括分配所需堆棧長度的堆棧空間而執行的一系列操作為內容的指令序列。
執行這樣的可執行目標程序的處理器,并不象通常的那樣在子程序的轉移指令執行之后,再取出分配堆棧的指令,而是連續取出子程序轉移指令和分配堆棧的指令。
此外,利用下述的程序變換裝置和執行其可執行目標程序的處理器,便可達到上述目的。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于松下電器產業株式會社,未經松下電器產業株式會社許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/96103712.1/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:丙烯聚合物組合物和熱模制品
- 下一篇:袋裝式多功能刀





