[發明專利]優化線程棧存儲器的管理的系統、方法和計算機程序產品無效
| 申請號: | 201310675015.3 | 申請日: | 2013-12-11 |
| 公開(公告)號: | CN103870242A | 公開(公告)日: | 2014-06-18 |
| 發明(設計)人: | 阿德里安娜·瑪麗亞·蘇斯內亞;維諾德·格羅弗;肖恩·揚孫·李 | 申請(專利權)人: | 輝達公司 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30 |
| 代理公司: | 北京市磐華律師事務所 11336 | 代理人: | 謝栒;魏寧 |
| 地址: | 美國加利*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 優化 線程 存儲器 管理 系統 方法 計算機 程序 產品 | ||
技術領域
本發明涉及編譯器,并且更具體地,涉及存儲器分配中的優化。
背景技術
可用于程序的執行的本地存儲器是系統架構中的重要資源。該資源的適當管理對于程序的高效執行是至關重要的。理想地,在程序的執行期間,僅分配包括用于當前指令和未來指令的數據的存儲器,而包含使用在先前被執行的指令中的數據的任何存儲器被解除分配并被返回到自由存儲器池。可由程序設計員來管理某一存儲器,諸如通過在采用C++所寫的程序中使用malloc和free指令以明確地分配和釋放存儲器塊。
然而,就線程棧存儲器(即充當后進先出(LIFO)隊列的分配給程序線程的存儲器的一部分)而言,程序設計員典型地不管理線程棧存儲器。相反,線程棧存儲器隨程序執行而動態地得以分配。當前編譯器通常不解決對于線程棧存儲器的高效管理的優化。因此,存在對于解決該問題和/或與現有技術相關聯的其他問題的需要。
發明內容
公開了用于優化線程棧存儲器分配的系統、方法和計算機程序產品。方法包括以下步驟:接收用于程序的源代碼,將源代碼轉譯成中間表示,分析中間表示以標識可使用線程棧存儲器中的第一所分配存儲器空間的至少兩個對象,以及通過以對至少兩個對象中的第二對象的引用替換對至少兩個對象中的第一對象的引用來修改中間表示。
附圖說明
圖1示出根據一個實施例的、用于優化線程棧存儲器的分配的方法的流程圖;
圖2示出根據一個實施例的、用于優化線程棧存儲器的分配的系統;
圖3A示出根據一個實施例的、用于示范性程序的源代碼;
圖3B示出根據一個實施例的、與圖3A的示范性程序相對應的中間表示;
圖3C示出根據一個實施例的、是圖3B的中間表示的經修改版本的中間表示;
圖4示出根據一個實施例的、用于分析中間表示以確定哪些對象可以被分配到線程棧存儲器中的相同的存儲器空間的方法的流程圖;
圖5示出根據一個實施例的并行處理單元;
圖6示出根據一個實施例的、圖5的流多處理器;以及
圖7示出在其中可實現各先前實施例的各架構和/或功能性的示例性系統。
具體實施方式
一些常規編譯器通過實施數據流分析和將程序指令以使得某些寄存器可以被重新用來在程序執行中的不同時刻存儲不同的值的方式進行排序,而在一定程度上優化寄存器的分配。編譯器典型地將源代碼(例如采用諸如C++的高級語言所寫的程序)轉譯成中間表示(IR),該IR是表示程序的意義(包括執行次序)的數據結構。IR可以是用于抽象機器的中間語言。IR在生成要由處理器執行的機器代碼之前使編譯器能夠實施數據流分析和重新排列程序的次序。
上文關于寄存器分配所描述的優化不能以相同方式應用到線程棧中的較大存儲器結構。在線程棧中所分配的對象的大小可以變化。相反,寄存器具有定義明確的大小,諸如32位。當包括在程序中的指令將值存儲在寄存器中時,值必需覆寫先前分配到該寄存器的所有數據。線程棧存儲器中的對象的表現不同。當值被存儲在對象的元素諸如數組的一個條目中時,值覆寫先前被存儲在該條目中的數據。然而,對象的其它條目可能仍然是有效的并且分配給先前被存儲在對象中的數據。嘗試跟蹤線程棧中的每個條目的數據流分析將變得非常復雜并且本將能夠達到的優化可能無效。
下文所描述的算法實施一個不同類型的數據流分析,其跟蹤分配到線程棧存儲器的對象(即配棧對象(stack?allocated?object))在程序的不同部分是否是“活的”。下面的定義貫穿本公開而使用。在本描述的上下文中,如果存儲在對象中的數據潛在地由當前指令或未來指令所需要,那么對象在程序中的某個點(即指令)處是活的。對象的def是將數據存儲在對象中的指令。對象的def的示例包括存儲指令、在指令的左邊(LHS)具有指向對象的變量的指令等。指令不需要覆寫分配給對象的整個存儲器,而僅需要將數據寫入對象的一部分中。針對對象的存儲器的分配不是對象的def(因為對象中的數據未被初始化)。對象的use是使用具有對配棧對象的訪問權的變量的指令。對象的use的示例包括加載指令、涉及指向對象的指針的二進制操作等。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于輝達公司,未經輝達公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310675015.3/2.html,轉載請聲明來源鉆瓜專利網。





