TW201333816A - 編譯時向量化和合併記憶體的運算法 - Google Patents
編譯時向量化和合併記憶體的運算法 Download PDFInfo
- Publication number
- TW201333816A TW201333816A TW101141361A TW101141361A TW201333816A TW 201333816 A TW201333816 A TW 201333816A TW 101141361 A TW101141361 A TW 101141361A TW 101141361 A TW101141361 A TW 101141361A TW 201333816 A TW201333816 A TW 201333816A
- Authority
- TW
- Taiwan
- Prior art keywords
- nodes
- combined language
- memory address
- combined
- language instructions
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本發明一具體實施例提出一種用於減少一電腦程式中所包括的組合語言指令之數目的技術。該技術包含接收包括複數節點的一有向無迴圈圖(DAG,“Directed acyclic graph”),其中每一節點包括該電腦程式的一組合語言指令。該技術階層式地解析該等複數節點來辨識可被向量化並可由一單一向量化組合語言指令取代的至少兩個組合語言指令、及利用該單一向量化的組合語言指令取代該等至少兩個組合語言指令。
Description
本發明概略關於電腦處理,尤指一種編譯時向量化和合併記憶體的運算法。
開發者使用編譯器來由高階原始碼產生可執行的程式。基本上,一編譯器設置成接收一程式的高階原始碼(例如以C++或Java寫成)、決定將要執行該程式的一目標硬體平台(例如一x86處理器)、然後將該高階原始碼轉譯成為可在該目標硬體平台上執行的組合語言層級的碼。此種組態的好處是開發者可撰寫一單一高階原始碼程式,然後可將程式在多種硬體平台上來執行,例如行動裝置、個人電腦或伺服器。
概言之,一編譯器包括三個組件:一前端、一中端及一後端。該前端設置成確保該高階原始碼可滿足程式化語言的語法和語意,而據此該前端可產生該高階原始碼的一第一中間表示(IR,“Intermediate representation”)。該中端設置成接收和最佳化該第一IR,其通常牽涉到例如移除在該第一IR中所包括的無法到達的碼(如果有的話)。在最佳化該第一IR之後,該中端所產生的一第二IR由該後端來做處理。特別是該後端接收該第二IR,並將該第二IR轉譯成為組合語言層級的碼。
該組合語言層級碼包括低階組合語言指令,其可在該目標硬體平台內的一處理器上直接地執行。如所熟知者,包含在該經產生的組合語言層級碼中的指令數目事實上可明顯地大於包含在該高階原始碼中的指令數目。例如,該簡單的高階原始碼指令”x=y+z”將可能被編譯成一系列的組合語言指令,其包括載入y和z的數值到該目標硬體平台中的一記憶體子系統的暫存器中、執行儲存在該等暫存器中該等數值的相加、及儲存該等數值的加總值到另一暫存器中等指令。雖然該處理器能
夠快速地執行這些組合語言指令之每一指令,該等組合語言指令可能參照到相同或類似的記憶體區域,如以下在一示例中所述,其將造成在該目標硬體平台內的執行冗餘及/或無效率。
例如,考慮第一、第二、第三和第四組合語言指令,其使得該處理器連接於該記憶體子系統,以及分別地讀取儲存在一記憶體位置的第一、第二、第三和第四鄰接的區段。亦可考慮一單一組合語言指令,其在此處稱之為一「向量化」的組合語言指令,其可用於取代該等第一、第二、第三和第四指令。特別是,在執行這種單一向量化組合語言指令時會利用一可使用的大頻寬記憶體作業,使得該處理器能同時分別讀取儲存在該記憶體位置的該等第一、第二、第三和第四區段中的資料,因而降低執行該等組合語言指令所需要之處理器循環數目成為四分之一。可惜地是,習用的編譯器並不包括該邏輯來辨識這些冗餘和有效的程式碼替換。
因此,本技術中需要一種用於產生更有效率之組合語言碼的技術。
本發明一具體實施例提出一種用於減少一電腦程式中所包括的組合語言指令之數目的方法。該方法包括以下步驟:接收包括複數節點的一有向無迴圈圖(DAG,“Directed acyclic graph”),其中每一節點包括該電腦程式的一組合語言指令、階層式地解析該等複數節點來辨識可被向量化並可由一單一向量化組合語言指令取代的至少兩個組合語言指令、及利用該單一向量化的組合語言指令取代該等至少兩個組合語言指令。
該等揭示具體實施例的一個好處為一編譯器自動地辨識出一電腦程式中可經由向量化而被簡化的組合語言指令。特別是,該編譯器利用一向量化的組合語言指令取代該等經辨識的組合語言指令,藉此減少該處理器在執行該程式所需要的循環
數目。再者,該處理器和該記憶體子系統之間的頻寬因此可更有效率地利用,並造成降低的能量消耗,並可增加正在存取該記憶體子系統之其它實體的頻寬使用性。
在以下的說明中,許多特定細節係被提出來提供對於本發明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。
第一圖係例示設置成實作本發明一或多種態樣之一電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU)102與一系統記憶體104,其經由包括一記憶體橋接器105的互連接路徑進行通訊。記憶體橋接器105可為一北橋晶片,其經由一匯流排或其它通訊路徑106(例如HyperTransport聯結)連接到一I/O(輸入/輸出)橋接器107。I/O橋接器107可為一南橋晶片,其接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並經由通訊路徑102及記憶體橋接器106轉送該輸入到CPU 105。一平行處理子系統112經由一匯流排或第二通訊路徑105(例如PCI(周邊組件互連接)Express,加速圖形埠、或HyperTransport鏈路)耦合至記憶體橋接器113;在一具體實施例中,平行處理子系統112為一繪圖子系統,其傳遞像素到一顯示器110,其可為任何習用的陰極射線管、液晶顯示器、發光二極體顯示器或類似者。一系統碟114亦連接至I/O橋接器107,並可設置成儲存CPU 102和平行處理子系統112所使用的內容、應用程式和資料。系統碟114做為儲存應用程式和資料的非揮發性儲存器,並可包括固定式或可移除式硬碟機、快閃記憶體裝置、和CD-ROM(光碟唯讀記憶體)、DVD-ROM(數位多功能碟片ROM)、藍光碟、HD-DVD(高解析度DVD)或任何磁性、光學或固態儲存裝置。
一交換器116提供I/O橋接器107與其它組件(例如一網路轉接器118與多種嵌入卡120和121)之間的連接。其它組件(未明確顯示)包括有通用串列匯流排(USB,"Universal serial bus”)或其它埠連接、光碟(CD)驅動器、數位視訊碟(DVD)驅動器、影像錄製裝置及類似者,其亦可連接至I/O橋接器107。第一圖所示之該等多種通訊路徑(包括特定名稱的通訊路徑106和113)可使用任何適當的協定來實作,例如PCI(周邊組件互連,Peripheral Component Interconnect)、PCI Express(PCI快速,PCI-E)、AGP(加速圖形通訊埠,Accelerated Graphics Port)、HyperTransport(超輸送)、或任何其它匯流排或點對點通訊協定、及不同裝置之間的連接,皆可使用如本技術中所知的不同協定。
在一具體實施例中,平行處理子系統112加入可針對圖形及視訊處理最佳化的電路,其包括例如視訊輸出電路,且構成一圖形處理單元(GPU)。在另一具體實施例中,平行處理子系統112加入可針對一般性目的處理最佳化的電路,而可保留底層的運算架構,在此處會有更為詳細的說明。在又另一具體實施例中,平行處理子系統112在一單一子系統中可被整合於一或多個其它系統元件,例如結合記憶體橋接器105、CPU 102、及I/O橋接器107而形成一系統上晶片(SoC,“System on chip”)。
在一具體實施例中,平行處理子系統112包括一或多個平行處理單元(PPU,“Parallel processing units”),其每一者耦合至一局部平行處理(PP)記憶體。概言之,平行處理子系統112包括數目為U的PPU,其中U>=1。在一些具體實施例中,平行處理子系統112中部份或所有的PPU為圖形處理器,其具有顯像管線,其能夠設置成執行相關於依據CPU 102及/或系統記憶體104經由記憶體橋接器105及第二通訊路徑113所供應的圖形資料來產生像素資料的多種作業,與該局部平行處理
記憶體(其能夠做為圖形記憶體,例如做為一習用圖框緩衝器)互動以儲存及更新像素資料、傳遞像素資料到顯示器110及類似者。在一些具體實施例中,平行處理子系統112可以包括可操作為圖形處理器的一或多個PPU,以及用於通用型運算的一或多個其它PPU。該等PPU可為相同或不同,且每個PPU可以具有一專屬的平行處理記憶體裝置或並無專屬的平行處理記憶體裝置。
第一圖所示的系統僅為例示性,其有可能有多種變化及修正。包括橋接器的數目與配置、CPU 102的數目及平行處理子系統112的數目的連接拓樸皆可視需要修改。例如,在一些具體實施例中,系統記憶體104直接連接至CPU 102而非透過一橋接器耦接,而其它裝置透過記憶體橋接器105及CPU 102與系統記憶體104進行通訊。在其它可替代的拓樸中,平行處理子系統112連接至I/O橋接器107或直接連接至CPU 102,而非連接至記憶體橋接器105。在又其它具體實施例中,I/O橋接器107及記憶體橋接器105可被整合到一單一晶片當中,而非分別做為一或多個分散裝置。大型具體實施例可包括兩個或更多的CPU 102,及兩個或更多的平行處理子系統112。此處所示的該等特定組件皆為選擇性的;例如其可支援任何數目的嵌入卡或周邊裝置。在一些具體實施例中,交換器116被省略,且網路轉接器118及嵌入卡120、121直接連接至I/O橋接器107。
如此處更為詳細地說明,本發明牽涉到在第一圖的電腦系統100上執行的一編譯器150,其設置成實作一運算法來簡化構成一特定電腦程式的組合語言指令。特定而言,編譯器150設置成接收儲存該等組合語言指令之節點的一有向無迴圈圖(DAG)。在該DAG中每一節點經由有向邊緣而連接到另一節點,該等有向邊緣代表儲存在該等節點中該等組合語言指令之
間的相關性。僅用於例示之目的,第三A圖中例示有一示例性組合語言指令集做為碼352、及代表那些組合語言指令的一DAG的一示例、及該等指令之間該等相依性在第三A圖中例示為原始DAG 300。如上述,編譯器150處理所接收之DAG來辨識可被簡化成更簡單且更有效率之指令的組合語言指令。以下將詳細說明編譯器150處理該DAG的方法。
第二A到二B圖例示根據本發明一具體實施例中用於產生一更有效率之組合語言指令集來執行的方法步驟之流程圖。雖然該等方法步驟係配合第一圖之系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
如所示,方法200開始於步驟202,其中編譯器150接收包括有複數節點和該等節點之間的有向邊緣的一有向無迴圈圖(DAG),其中每一節點包含一組合語言指令。如第三A圖所示,每一節點關聯於指向至一不同節點的至少一有向邊緣,以代表該節點的該組合語言指令對於該不同節點之該組合語言指令的相依性。再次地,一DAG可為第三A圖中例示之該原始DAG 300,以及由該等節點之間該方向性邊緣所代表的節點352的該等組合語言指令(由此得到該原始DAG 300)之間多種相依性。
在步驟204,編譯器150產生一「未處理」(unprocessed)集、一「預備好」(ready)集和一「止用」(retired)集。這些集之每一者設置成暫時地儲存該DAG的節點。在步驟206,編譯器150將該DAG中所有該等節點加入到該「未處理」集。依此方式,該「未處理」集被初始化成包括該經接收的DAG之所有該等組合語言指令,在其上編譯器150開始解析該「未處理」集以根據步驟208之條件來辨識出視為獨立的組合語言指令,如下述。
在步驟208,編譯器150解析在該「未處理」集中該等節點來辨識1)不具有任何前行節點的節點,或是2)其前行節點皆已經被移動到該「止用」集的節點。關於1),編譯器150解析每一節點來辨識只有向外邊緣之節點,例如第三A圖中例示的該等節點”tid.x”,“4”,“PARAM0”,“4”,“8”和”12”。請注意到在第一次通過步驟208期間,該「止用」集尚未包括任何節點,所以僅辨識出1)不具有任何前行節點的節點。
在步驟210,編譯器150根據步驟208的條件決定是否辨識出任何節點。如果在步驟210編譯器150根據步驟208的條件能辨識出節點,則方法200進行到步驟212,如下所述。否則,方法200即結束,因為根據此處所述之該等技術並無可減少的組合語言指令。
在步驟212,編譯器150將在步驟208辨識的該等節點自該「未處理」集移動到該「預備好」集。此移動的一示例例示於第三A和三B圖之間,其中牽涉到自該「未處理」集移動三個不同節點到該「預備好」集。在步驟214,編譯器150解析在該「預備好」集中的該等節點,並移動包括一不可向量化的組合語言指令的每一節點至該「止用」集。第三B圖例示包括不可向量化的組合語言指令而做為不可向量化節點356的多種節點。
在步驟216,編譯器150針對在該「預備好」集中每一節點群組化包括載入式的組合語言指令之節點進入一「載入」集,並群組化包括儲存式的組合語言指令之節點進入一「儲存」集。
在步驟218,編譯器150解析被群組在該「載入」集中的該等節點,並合併包括在該等節點中的組合語言指令,以利用向量化的組合語言指令來取代該等組合語言指令。根據一具體實施例,編譯器150設置成藉由辨識載入記憶體位址為彼此相鄰的組合語言指令來向量化該等組合語言指令。為了簡化起
見,以下的技術說明一種方法,其中僅辨識出兩個組合語言指令並參照相鄰的記憶體位址;但是,本技術專業人士將可瞭解到本發明之具體實施例可調整規模來處理向量化更多數目的組合語言指令。
在一具體實施例中,編譯器150辨識出兩個組合語言指令可結合成一個向量化的組合語言指令,只要符合1)由該第一組合語言指令所參照的該記憶體位址的型式為”[a]”,且該第一組合語言指令載入n個位元組的資料,2)由該第二組合語言指令所參照的該記憶體位址的型式為”[a+n]”,及3)“a”對準在”2*n”。如果滿足這些條件,則編譯器150可利用一向量化的組合語言指令取代該第一組合語言指令和該第二組合語言指令,其在當被執行時可將該第一組合語言指令和該第二組合語言指令中所指定的該資料在同一時間分別載入該記憶體位址[a]和[a+n]。向量化組合語言指令的一示例例示於第三F和三G圖之間。特別是在第三F圖中,四個節點參照不同組合語言載入指令可被向量化成一單一向量化的組合語言載入指令。因此在第三G圖中,該等四個分開的載入命令由一單一向量化的組合語言指令(“VLD4[Idx]”)所取代。
在步驟220,編譯器150解析被群組在該「儲存」集中的該等節點,並合併包括在該等節點中的組合語言指令,以利用向量化的指令來取代該等組合語言指令。步驟220由編譯器150根據以上對於步驟218所述的相同技術來執行。但是,因為步驟220係關於儲存資料的組合語言指令,用於取代組合語言指令的任何向量化的指令使得由該經取代的組合語言指令所指定的該等記憶體位址被同時地讀取。
在步驟222,編譯器150將在該「預備好」集中的所有不可向量化的節點移動至該「止用」集中,接著方法200回到步驟208。在此時,節點可能已經被加入到該「止用」集中,其可造成在該「未處理」集中的新節點在步驟208的條件2)之下
被辨識。例如,在第三B圖中,該等組合語言指令”SHL”和”LOAD”之所有該等前行節點已經被加入到該「止用」集,所以在步驟208中會根據條件2)辨識出”SHL”和”LOAD”。
因此,方法步驟208-222被執行直到在該「未處理」集中所有該等節點已經被移動到該「止用」集中為止。因此,在該止用集中的該等節點可提出節點的一簡化DAG,其組合語言指令可比在步驟202中收到的該DAG中所包括的該等節點的該等組合語言指令更有效率地執行。
第三A到三H圖例示根據本發明一具體實施例中對於第三A圖的原始DAG 300來執行第二A到二B圖的方法200。再次地,原始DAG 300係基於包括在碼352中的該等指令,其中該等組合語言指令(即節點)之間該有向邊緣代表該等組合語言之間的相依性。如第三A圖所示,原始DAG 300的所有該等節點根據第二A圖的步驟206被加入到該「未處理」集中,其係由關鍵354所補捉。
第三B圖例示第一次執行方法步驟208-222的情形,其中根據步驟208的條件辨識出六個組合語言指令。該等六個經辨識的組合語言指令中沒有一個可被向量化,所以它們被加入到該止用集中,如第三C圖所示。第三C圖中亦顯示第二次執行方法步驟208-222的情形,可辨識出下兩個組合語言指令:“SHL”和”LOAD”。再次地,這些組合指令中無一者可被向量化,所以它們被加入到該「止用」集中,如第三D圖所示。第三D圖中亦第三次顯示方法步驟208-222的情形,可辨識出的下一個組合語言指令:“ADD”。再次地,此組合指令不可被向量化,所以該組合語言指令被加入到該「止用」集中,如第三E圖所示。第三E圖中亦顯示第四次執行方法步驟208-222的情形,可辨識出的下四個組合語言指令:“ADD”,“LOAD[Idx]”,“ADD”和“ADD”.這四個組合語言指令中該”LOAD[ldx]”組合語言指令可被向量化,所以該組合語言指令不會被
移動到該「止用」集。但是,該等三個”ADD”組合語言指令不可被向量化,所以它們被移動至該「止用」集。這些移動例示於第三F圖中。
在第五次執行方法步驟208-222時,編譯器150辨識出可被向量化的三個組合語言指令:“LOAD[Idx+4]”,“LOAD[Idx+8]”,“LOAD[Idx+12]”。因此,根據步驟218,這三個組合語言指令連同保持在該「預備好」集中的該“LOAD[Idx]”組合語言指令利用一單一向量化的組合語言指令來取代,其在第三G圖中例示為“VLD4[Idx]”。最後,該組合語言指令“VLD[Idx]”被加入到該「止用」集中,如第三H圖所示。因此,包括在原始DAG 300中的組合指令數目可減三,其可增加碼352的整體效率。
總而言之,本發明之具體實施例提出一種用於減少一電腦程式中所包含的組合語言指令數目的方法。編譯器150接收一包括複數節點的一有向無迴圈圖(DAG),其中每一節點由一有向邊緣連接至至少另一節點,且包括該電腦程式的組合語言指令。該等節點自一「未處理」集移動至一「預備好」集,然後移動至一「止用」集。特別是,在不具有任何前行節點的該「未處理」集中的節點,或是在其前行節點已經都被移動至該「止用」集的該「未處理」集中的節點皆被辨識出來,並被移動到該「預備好」集中。然後編譯器150處理在該「預備好」集中的該等節點,及利用一或多個向量化的組合語言指令取代可向量化的組合語言指令。然後該等節點被移動到該「止用」集,在其上該前述技術即重複直到所有該等節點皆已被處理,並已經被移動到該「止用」集中為止。
此處所揭示之該等技術的一個好處為已編譯的組合語言指令由編譯器150自動地檢查是否有額外的最佳化機會。特定而言,編譯器150能夠偵測可利用較少或較簡單的向量化組合語言指令來取代的可向量化組合語言指令。依此方式,該電腦
程式所包含之指令的總數可能被減少,即可增加該電腦程式的整體執行效率。再者,較少或更有效率的組合語言指令使得任何被分派任務的處理器能以較少的循環來執行該電腦程式,進而降低能量消耗。
本發明一具體實施例可以實作成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(i)不可寫入儲存媒體(例如在一電腦內唯讀記憶體裝置,例如可由CD-ROM讀取的光碟唯讀記憶體(CD-ROM)碟片,快閃記憶體,ROM晶片,或任何其它種類的固態非揮發性半導體記憶體),其上可永久儲存資訊;及(ii)可寫入儲存媒體(例如在一磁碟機內的軟碟片、或硬碟機、或任何種類的固態隨機存取半導體記憶體),其上可儲存可改變的資訊。
本發明已經參照特定具體實施例在以上進行說明。但是本技術專業人士將可瞭解到在不背離附屬申請專利範圍所提出之本發明的廣義精神與範圍之下可對其進行多種修正與改變。因此前述的說明及圖面係在以例示性而非限制性的角度來看待。
因此,本發明之具體實施例的範圍係在以下的申請專利範圍中提出。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動器
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧輸入裝置
110‧‧‧顯示器
112‧‧‧圖形處理單元
200‧‧‧方法
113‧‧‧通訊路徑
114‧‧‧系統碟
116‧‧‧交換器
118‧‧‧網路轉接器
120,121‧‧‧嵌入卡
150‧‧‧編譯器
300‧‧‧原始有向無迴圈圖
352‧‧‧碼
354‧‧‧關鍵
356‧‧‧不可向量化的節點
202~222‧‧‧步驟
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等附屬圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,其可允許其它同等有效的具體實施例。
第一圖例示設置成一種實作本發明一或多種態樣之電腦系統的方塊圖。
第二A到二B圖例示根據本發明一具體實施例中用於產生一更有效率之組合語言指令集來執行的方法步驟之流程圖。
第三A到三H圖例示根據本發明一具體實施例第二A到二B圖的該等方法步驟如何應用到一示例性有向無迴圈圖(DAG)。
200‧‧‧方法
202~216‧‧‧步驟
Claims (10)
- 一種用於減少一電腦程式中所包括的組合語言指令之數目的方法,該方法包含:接收包括複數節點的一有向無迴圈圖(DAG),其中每一節點包括該電腦程式的一組合語言指令;階層式地解析該等複數節點來辨識可向量化並可由一單一向量化的組合語言指令取代的至少兩個組合語言指令;以及利用該單一向量化的組合語言指令取代該等至少兩個組合語言指令。
- 如申請專利範圍第1項之方法,其中階層式地解析該等複數節點包含:複製該等複數節點到一第一節點集;決定該等至少兩個節點不具有任何前行節點,或是其前行節點皆已經被移動到一第二節點集;移動該等至少兩個節點至一第三節點集;以及自不包括一可向量化的組合語言指令的該第三節點集中移除所有節點。
- 如申請專利範圍第2項之方法,其中取代該等至少兩個組合語言指令進一步包含自該第三節點集移動該等至少兩個節點至該第二節點集。
- 如申請專利範圍第2項之方法,其中自不包括一可向量化的組合語言指令的該第三節點集中移除所有節點包含自該第三節點集移動部份但並非全部的該等節點至該第二節點集。
- 如申請專利範圍第2項之方法,進一步包含群組化該等至少兩個節點到一載入記憶體作業群組或一儲存記憶體作業群組當中。
- 如申請專利範圍第1項之方法,其中辨識該等至少兩個組合語言指令為可向量化包含: 辨識關聯於參照儲存在一第一記憶體位址處n位元組的資料之該等至少兩個組合語言指令的一第一組合語言指令;辨識關聯於參照自該第一記憶體位址偏置n個位元組的一第二記憶體位址之該等至少兩個組合語言指令的一第二組合語言指令;以及決定該第一記憶體位址開始於等於n位元組資料之兩倍的一數值處。
- 如申請專利範圍第6項之方法,其中在執行該經向量化的組合語言指令時,該第一記憶體位址和該第二記憶體位址為實質上同時地被參照。
- 如申請專利範圍第6項之方法,其中該第一記憶體位址和該第二記憶體位址藉由寫入一第一數值到該第一記憶體位址中和寫入一第二數值到該第二記憶體位址中而被參照。
- 如申請專利範圍第6項之方法,其中該第一記憶體位址和該第二記憶體位址藉由自該第一記憶體位址讀取一第一數值和自該第二記憶體位址讀取一第二數值而被參照。
- 一種用於減少一電腦程式中所包括的組合語言指令之數目的系統,該系統包含:一處理器,其設置成:接收包括複數節點的一有向無迴圈圖(DAG),其中每一節點包括該電腦程式的一組合語言指令;階層式地解析該等複數節點來辨識可向量化並可由一單一向量化的組合語言指令取代的至少兩個組合語言指令;以及利用該單一向量化的組合語言指令取代該等至少兩個組合語言指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161556782P | 2011-11-07 | 2011-11-07 | |
US13/660,986 US9639336B2 (en) | 2011-11-07 | 2012-10-25 | Algorithm for vectorization and memory coalescing during compiling |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201333816A true TW201333816A (zh) | 2013-08-16 |
TWI483182B TWI483182B (zh) | 2015-05-01 |
Family
ID=48223398
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141366A TWI498817B (zh) | 2011-11-07 | 2012-11-07 | 減少64位元電腦程式迴圈內符號擴展指令的需求導向運算法 |
TW101141357A TWI502509B (zh) | 2011-11-07 | 2012-11-07 | 一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量的方法及系統 |
TW101141372A TWI604410B (zh) | 2011-11-07 | 2012-11-07 | 改善暫存器不足和提升平行處理的即時分析式重新計算技術 |
TW101141361A TWI483182B (zh) | 2011-11-07 | 2012-11-07 | 一種用於減少一電腦程式中所包括的組合語言指令之數目的方法與系統 |
TW101141369A TWI509561B (zh) | 2011-11-07 | 2012-11-07 | 在圖形處理器電腦編譯器中最佳化程序間記憶體位址空間的技術 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141366A TWI498817B (zh) | 2011-11-07 | 2012-11-07 | 減少64位元電腦程式迴圈內符號擴展指令的需求導向運算法 |
TW101141357A TWI502509B (zh) | 2011-11-07 | 2012-11-07 | 一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量的方法及系統 |
TW101141372A TWI604410B (zh) | 2011-11-07 | 2012-11-07 | 改善暫存器不足和提升平行處理的即時分析式重新計算技術 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141369A TWI509561B (zh) | 2011-11-07 | 2012-11-07 | 在圖形處理器電腦編譯器中最佳化程序間記憶體位址空間的技術 |
Country Status (5)
Country | Link |
---|---|
US (6) | US20130113809A1 (zh) |
CN (5) | CN103339621A (zh) |
DE (5) | DE112012000195T5 (zh) |
TW (5) | TWI498817B (zh) |
WO (5) | WO2013070636A1 (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430204B2 (en) | 2010-11-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Read-only communication operator |
US9507568B2 (en) | 2010-12-09 | 2016-11-29 | Microsoft Technology Licensing, Llc | Nested communication operator |
US9395957B2 (en) * | 2010-12-22 | 2016-07-19 | Microsoft Technology Licensing, Llc | Agile communication operator |
US20130113809A1 (en) * | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
US9250879B2 (en) | 2012-07-02 | 2016-02-02 | International Business Machines Corporation | Strength reduction compiler optimizations |
US10588691B2 (en) | 2012-09-12 | 2020-03-17 | Relievant Medsystems, Inc. | Radiofrequency ablation of tissue within a vertebral body |
CN105359090A (zh) * | 2013-04-26 | 2016-02-24 | 纽约市哥伦比亚大学理事会 | 用于移动应用的系统和方法 |
US9710388B2 (en) * | 2014-01-23 | 2017-07-18 | Qualcomm Incorporated | Hardware acceleration for inline caches in dynamic languages |
CN104915180B (zh) * | 2014-03-10 | 2017-12-22 | 华为技术有限公司 | 一种数据操作的方法和设备 |
US9389890B2 (en) | 2014-03-27 | 2016-07-12 | Microsoft Technology Licensing, Llc | Hierarchical directives-based management of runtime behaviors |
EP3123316B1 (en) * | 2014-03-27 | 2020-09-02 | Microsoft Technology Licensing, LLC | Supporting dynamic behavior in statically compiled programs |
US10061592B2 (en) | 2014-06-27 | 2018-08-28 | Samsung Electronics Co., Ltd. | Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices |
US10061591B2 (en) | 2014-06-27 | 2018-08-28 | Samsung Electronics Company, Ltd. | Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing |
CN104834532B (zh) * | 2015-06-03 | 2018-01-02 | 星环信息科技(上海)有限公司 | 一种分布式数据向量化处理方法和装置 |
CN106708593B (zh) * | 2015-07-16 | 2020-12-08 | 中兴通讯股份有限公司 | 一种程序链接的编译方法及装置 |
CN105183433B (zh) * | 2015-08-24 | 2018-02-06 | 上海兆芯集成电路有限公司 | 指令合并方法以及具有多数据通道的装置 |
KR20170047957A (ko) * | 2015-10-26 | 2017-05-08 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
CN105302577B (zh) * | 2015-11-26 | 2019-05-07 | 上海兆芯集成电路有限公司 | 驱动执行单元的机器码产生方法以及装置 |
GB2546308B (en) * | 2016-01-15 | 2019-04-03 | Advanced Risc Mach Ltd | Data processing systems |
CN107292808B (zh) * | 2016-03-31 | 2021-01-05 | 阿里巴巴集团控股有限公司 | 图像处理方法、装置及图像协处理器 |
CN105955892A (zh) * | 2016-04-25 | 2016-09-21 | 浪潮电子信息产业股份有限公司 | 一种计算机系统中地址空间的扩展方法 |
US10198259B2 (en) | 2016-06-23 | 2019-02-05 | Advanced Micro Devices, Inc. | System and method for scheduling instructions in a multithread SIMD architecture with a fixed number of registers |
EP3270371B1 (en) * | 2016-07-12 | 2022-09-07 | NXP USA, Inc. | Method and apparatus for managing graphics layers within a graphics display component |
CN108021563B (zh) * | 2016-10-31 | 2021-09-07 | 华为技术有限公司 | 一种指令间数据依赖的检测方法和装置 |
US10359971B2 (en) * | 2017-07-17 | 2019-07-23 | Hewlett Packard Enterprise Development Lp | Storing memory profile data of an application in non-volatile memory |
WO2019089918A1 (en) * | 2017-11-03 | 2019-05-09 | Coherent Logix, Inc. | Programming flow for multi-processor system |
US10877757B2 (en) * | 2017-11-14 | 2020-12-29 | Nvidia Corporation | Binding constants at runtime for improved resource utilization |
US11468312B2 (en) | 2018-02-02 | 2022-10-11 | Samsung Electronics Co., Ltd. | Memory management for machine learning training on GPU |
US11068247B2 (en) | 2018-02-06 | 2021-07-20 | Microsoft Technology Licensing, Llc | Vectorizing conditional min-max sequence reduction loops |
CN108304218A (zh) * | 2018-03-14 | 2018-07-20 | 郑州云海信息技术有限公司 | 一种汇编代码的编写方法、装置、系统和可读存储介质 |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US10691430B2 (en) * | 2018-08-27 | 2020-06-23 | Intel Corporation | Latency scheduling mehanism |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
CN111428327A (zh) * | 2018-12-24 | 2020-07-17 | 深圳市中兴微电子技术有限公司 | 一种指令硬件架构的构建方法、装置及存储介质 |
EP3915009A4 (en) * | 2019-01-25 | 2022-10-12 | The Regents of University of California | COALESCENCE OPERANDS REGISTER FILES FOR GPU |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US11294685B2 (en) * | 2019-06-04 | 2022-04-05 | International Business Machines Corporation | Instruction fusion using dependence analysis |
CN110162330B (zh) * | 2019-07-08 | 2021-04-13 | 上海赫千电子科技有限公司 | 一种应用于汽车ecu升级文件的系统及方法 |
US11200061B2 (en) * | 2019-11-19 | 2021-12-14 | Microsoft Technology Licensing, Llc | Pre-instruction scheduling rematerialization for register pressure reduction |
CN112862658A (zh) * | 2019-11-28 | 2021-05-28 | 中兴通讯股份有限公司 | Gpu运行方法、装置、设备及存储介质 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11429310B2 (en) | 2020-03-06 | 2022-08-30 | Samsung Electronics Co., Ltd. | Adjustable function-in-memory computation system |
US11210071B2 (en) | 2020-04-01 | 2021-12-28 | Microsoft Technology Licensing, Llc | Compiler sub expression directed acyclic graph (DAG) remat for register pressure |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
CN112214443B (zh) | 2020-10-22 | 2021-12-03 | 上海壁仞智能科技有限公司 | 设置于图形处理器中的二次卸载装置和方法 |
CN112230931B (zh) * | 2020-10-22 | 2021-11-02 | 上海壁仞智能科技有限公司 | 适用于图形处理器的二次卸载的编译方法、装置和介质 |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
US20220374236A1 (en) * | 2021-05-20 | 2022-11-24 | Huawei Technologies Co., Ltd. | Method and system for optimizing address calculations |
US11645076B2 (en) * | 2021-07-26 | 2023-05-09 | International Business Machines Corporation | Register pressure target function splitting |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
Family Cites Families (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4449196A (en) | 1979-04-27 | 1984-05-15 | Pritchard Eric K | Data processing system for multi-precision arithmetic |
TW213998B (zh) * | 1990-08-23 | 1993-10-01 | Supercomp Systems Ltd Partnership | |
IL100990A (en) | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
US6286135B1 (en) * | 1997-03-26 | 2001-09-04 | Hewlett-Packard Company | Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses |
DE69804708T2 (de) * | 1997-03-29 | 2002-11-14 | Imec Vzw | Verfahren und Gerät für Grössenoptimierung von Speichereinheiten |
US7548238B2 (en) * | 1997-07-02 | 2009-06-16 | Nvidia Corporation | Computer graphics shader systems and methods |
US6785888B1 (en) * | 1997-08-29 | 2004-08-31 | International Business Machines Corporation | Memory allocator for a multiprocessor computer system |
US5903761A (en) | 1997-10-31 | 1999-05-11 | Preemptive Solutions, Inc. | Method of reducing the number of instructions in a program code sequence |
JP4751510B2 (ja) * | 1997-12-10 | 2011-08-17 | 株式会社日立製作所 | メモリアクセス最適化方法 |
US6748587B1 (en) * | 1998-01-02 | 2004-06-08 | Hewlett-Packard Development Company, L.P. | Programmatic access to the widest mode floating-point arithmetic supported by a processor |
US6256784B1 (en) | 1998-08-14 | 2001-07-03 | Ati International Srl | Interpreter with reduced memory access and improved jump-through-register handling |
US6757892B1 (en) | 1999-06-24 | 2004-06-29 | Sarnoff Corporation | Method for determining an optimal partitioning of data among several memories |
US6415311B1 (en) | 1999-06-24 | 2002-07-02 | Ati International Srl | Sign extension circuit and method for unsigned multiplication and accumulation |
US6438747B1 (en) * | 1999-08-20 | 2002-08-20 | Hewlett-Packard Company | Programmatic iteration scheduling for parallel processors |
US20020129340A1 (en) | 1999-10-28 | 2002-09-12 | Tuttle Douglas D. | Reconfigurable isomorphic software representations |
US6523173B1 (en) | 2000-01-11 | 2003-02-18 | International Business Machines Corporation | Method and apparatus for allocating registers during code compilation using different spill strategies to evaluate spill cost |
US6941549B1 (en) * | 2000-03-31 | 2005-09-06 | International Business Machines Corporation | Communicating between programs having different machine context organizations |
US20020038453A1 (en) | 2000-08-09 | 2002-03-28 | Andrew Riddle | Method and system for software optimization |
US7039906B1 (en) * | 2000-09-29 | 2006-05-02 | International Business Machines Corporation | Compiler for enabling multiple signed independent data elements per register |
GB2367650B (en) | 2000-10-04 | 2004-10-27 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
US20030028864A1 (en) | 2001-01-29 | 2003-02-06 | Matt Bowen | System, method and article of manufacture for successive compilations using incomplete parameters |
US20040205740A1 (en) * | 2001-03-29 | 2004-10-14 | Lavery Daniel M. | Method for collection of memory reference information and memory disambiguation |
US20020144101A1 (en) | 2001-03-30 | 2002-10-03 | Hong Wang | Caching DAG traces |
JP3763516B2 (ja) * | 2001-03-30 | 2006-04-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 変換プログラム、コンパイラ、コンピュータ装置およびプログラム変換方法 |
US7162716B2 (en) * | 2001-06-08 | 2007-01-09 | Nvidia Corporation | Software emulator for optimizing application-programmable vertex processing |
US6865614B2 (en) * | 2001-07-02 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Method for transferring a packed data structure to an unpacked data structure by copying the packed data using pointer |
US7032215B2 (en) * | 2001-10-11 | 2006-04-18 | Intel Corporation | Method and system for type demotion of expressions and variables by bitwise constant propagation |
US7107584B2 (en) * | 2001-10-23 | 2006-09-12 | Microsoft Corporation | Data alignment between native and non-native shared data structures |
US20110161977A1 (en) | 2002-03-21 | 2011-06-30 | Martin Vorbach | Method and device for data processing |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US7243342B2 (en) | 2002-06-11 | 2007-07-10 | Intel Corporation | Methods and apparatus for determining if a user-defined software function is a memory allocation function during compile-time |
US6954841B2 (en) | 2002-06-26 | 2005-10-11 | International Business Machines Corporation | Viterbi decoding for SIMD vector processors with indirect vector element access |
US7353243B2 (en) * | 2002-10-22 | 2008-04-01 | Nvidia Corporation | Reconfigurable filter node for an adaptive computing machine |
US7051322B2 (en) * | 2002-12-06 | 2006-05-23 | @Stake, Inc. | Software analysis framework |
US7451278B2 (en) * | 2003-02-13 | 2008-11-11 | Silicon Graphics, Inc. | Global pointers for scalable parallel applications |
JP2004303113A (ja) * | 2003-04-01 | 2004-10-28 | Hitachi Ltd | 階層メモリ向け最適化処理を備えたコンパイラおよびコード生成方法 |
US20040221283A1 (en) | 2003-04-30 | 2004-11-04 | Worley Christopher S. | Enhanced, modulo-scheduled-loop extensions |
US20050071823A1 (en) | 2003-09-29 | 2005-03-31 | Xiaodong Lin | Apparatus and method for simulating segmented addressing on a flat memory model architecture |
US7124271B2 (en) * | 2003-10-14 | 2006-10-17 | Intel Corporation | Method and system for allocating register locations in a memory during compilation |
US7457936B2 (en) * | 2003-11-19 | 2008-11-25 | Intel Corporation | Memory access instruction vectorization |
US7567252B2 (en) | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
US7814467B2 (en) * | 2004-01-15 | 2010-10-12 | Hewlett-Packard Development Company, L.P. | Program optimization using object file summary information |
US7376813B2 (en) | 2004-03-04 | 2008-05-20 | Texas Instruments Incorporated | Register move instruction for section select of source operand |
US8689202B1 (en) * | 2004-03-30 | 2014-04-01 | Synopsys, Inc. | Scheduling of instructions |
US8677312B1 (en) * | 2004-03-30 | 2014-03-18 | Synopsys, Inc. | Generation of compiler description from architecture description |
US7386842B2 (en) * | 2004-06-07 | 2008-06-10 | International Business Machines Corporation | Efficient data reorganization to satisfy data alignment constraints |
US7802076B2 (en) * | 2004-06-24 | 2010-09-21 | Intel Corporation | Method and apparatus to vectorize multiple input instructions |
US7472382B2 (en) * | 2004-08-30 | 2008-12-30 | International Business Machines Corporation | Method for optimizing software program using inter-procedural strength reduction |
US7389499B2 (en) * | 2004-10-21 | 2008-06-17 | International Business Machines Corporation | Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations |
US7730114B2 (en) * | 2004-11-12 | 2010-06-01 | Microsoft Corporation | Computer file system |
US7681187B2 (en) * | 2005-03-31 | 2010-03-16 | Nvidia Corporation | Method and apparatus for register allocation in presence of hardware constraints |
TWI306215B (en) * | 2005-04-29 | 2009-02-11 | Ind Tech Res Inst | Method and corresponding apparatus for compiling high-level languages into specific processor architectures |
CN100389420C (zh) * | 2005-09-13 | 2008-05-21 | 北京中星微电子有限公司 | 用协处理器加速文件系统操作的方法及装置 |
US7450131B2 (en) * | 2005-09-30 | 2008-11-11 | Intel Corporation | Memory layout for re-ordering instructions using pointers |
US8037465B2 (en) * | 2005-09-30 | 2011-10-11 | Intel Corporation | Thread-data affinity optimization using compiler |
US7694288B2 (en) * | 2005-10-24 | 2010-04-06 | Analog Devices, Inc. | Static single assignment form pattern matcher |
US20070124631A1 (en) | 2005-11-08 | 2007-05-31 | Boggs Darrell D | Bit field selection instruction |
JP4978025B2 (ja) * | 2006-02-24 | 2012-07-18 | 株式会社日立製作所 | ポインタの圧縮・伸張方法、これを実行するプログラム、及び、これを用いた計算機システム |
WO2008002173A1 (en) * | 2006-06-20 | 2008-01-03 | Intel Corporation | Method and apparatus to call native code from a managed code application |
US9601199B2 (en) * | 2007-01-26 | 2017-03-21 | Intel Corporation | Iterator register for structured memory |
US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US9361078B2 (en) | 2007-03-19 | 2016-06-07 | International Business Machines Corporation | Compiler method of exploiting data value locality for computation reuse |
US8671401B2 (en) * | 2007-04-09 | 2014-03-11 | Microsoft Corporation | Tiling across loop nests with possible recomputation |
US8411096B1 (en) * | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US20090070753A1 (en) | 2007-09-07 | 2009-03-12 | International Business Machines Corporation | Increase the coverage of profiling feedback with data flow analysis |
US8555266B2 (en) | 2007-11-13 | 2013-10-08 | International Business Machines Corporation | Managing variable assignments in a program |
US7809925B2 (en) | 2007-12-07 | 2010-10-05 | International Business Machines Corporation | Processing unit incorporating vectorizable execution unit |
JP5244421B2 (ja) | 2008-02-29 | 2013-07-24 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置およびプログラム分割方法 |
US8255884B2 (en) * | 2008-06-06 | 2012-08-28 | International Business Machines Corporation | Optimized scalar promotion with load and splat SIMD instructions |
US20100184380A1 (en) | 2009-01-20 | 2010-07-22 | Qualcomm Incorporated | Mitigating intercarrier and intersymbol interference in asynchronous wireless communications |
US20100199270A1 (en) | 2009-01-30 | 2010-08-05 | Ivan Baev | System, method, and computer-program product for scalable region-based register allocation in compilers |
US8713543B2 (en) * | 2009-02-11 | 2014-04-29 | Johnathan C. Mun | Evaluation compiler method |
US8831666B2 (en) * | 2009-06-30 | 2014-09-09 | Intel Corporation | Link power savings with state retention |
US8271763B2 (en) * | 2009-09-25 | 2012-09-18 | Nvidia Corporation | Unified addressing and instructions for accessing parallel memory spaces |
US8819622B2 (en) | 2009-09-25 | 2014-08-26 | Advanced Micro Devices, Inc. | Adding signed 8/16/32-bit integers to 64-bit integers |
CA2684226A1 (en) * | 2009-10-30 | 2011-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Eleminating redundant operations for common properties using shared real registers |
US8578357B2 (en) * | 2009-12-21 | 2013-11-05 | Intel Corporation | Endian conversion tool |
US8453135B2 (en) | 2010-03-11 | 2013-05-28 | Freescale Semiconductor, Inc. | Computation reuse for loops with irregular accesses |
CN101833435A (zh) * | 2010-04-19 | 2010-09-15 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
US8645758B2 (en) * | 2010-04-29 | 2014-02-04 | International Business Machines Corporation | Determining page faulting behavior of a memory operation |
US8954418B2 (en) * | 2010-05-14 | 2015-02-10 | Sap Se | Performing complex operations in a database using a semantic layer |
US8799583B2 (en) * | 2010-05-25 | 2014-08-05 | International Business Machines Corporation | Atomic execution over accesses to multiple memory locations in a multiprocessor system |
JP5583514B2 (ja) * | 2010-08-11 | 2014-09-03 | インターナショナル・ビジネス・マシーンズ・コーポレーション | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム |
US8538912B2 (en) * | 2010-09-22 | 2013-09-17 | Hewlett-Packard Development Company, L.P. | Apparatus and method for an automatic information integration flow optimizer |
KR101782373B1 (ko) * | 2010-11-10 | 2017-09-29 | 삼성전자 주식회사 | X-y 스택 메모리를 이용한 컴퓨팅 장치 및 방법 |
US8997066B2 (en) * | 2010-12-27 | 2015-03-31 | Microsoft Technology Licensing, Llc | Emulating pointers |
GB2488980B (en) * | 2011-03-07 | 2020-02-19 | Advanced Risc Mach Ltd | Address generation in a data processing apparatus |
US8566537B2 (en) * | 2011-03-29 | 2013-10-22 | Intel Corporation | Method and apparatus to facilitate shared pointers in a heterogeneous platform |
US8640112B2 (en) * | 2011-03-30 | 2014-01-28 | National Instruments Corporation | Vectorizing combinations of program operations |
US20130113809A1 (en) * | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
US9092228B2 (en) * | 2012-01-17 | 2015-07-28 | Texas Instruments Incorporated | Systems and methods for software instruction translation from a high-level language to a specialized instruction set |
JP5840014B2 (ja) * | 2012-02-01 | 2016-01-06 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | コンパイル方法、プログラムおよび情報処理装置 |
US9043582B2 (en) * | 2012-09-14 | 2015-05-26 | Qualcomm Innovation Center, Inc. | Enhanced instruction scheduling during compilation of high level source code for improved executable code |
US9411558B2 (en) * | 2012-10-20 | 2016-08-09 | Luke Hutchison | Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing |
US10140403B2 (en) * | 2012-12-01 | 2018-11-27 | Synopsys Inc. | Managing model checks of sequential designs |
US9396240B2 (en) * | 2013-12-03 | 2016-07-19 | Business Objects Software Ltd. | Extreme visualization enabling extension for large data sets |
US9710245B2 (en) * | 2014-04-04 | 2017-07-18 | Qualcomm Incorporated | Memory reference metadata for compiler optimization |
US10444759B2 (en) * | 2017-06-14 | 2019-10-15 | Zoox, Inc. | Voxel based ground plane estimation and object segmentation |
-
2012
- 2012-10-24 US US13/659,802 patent/US20130113809A1/en not_active Abandoned
- 2012-10-24 US US13/659,786 patent/US9009686B2/en active Active
- 2012-10-25 US US13/660,986 patent/US9639336B2/en active Active
- 2012-10-26 US US13/661,478 patent/US10228919B2/en active Active
- 2012-11-05 US US13/669,401 patent/US9436447B2/en active Active
- 2012-11-06 WO PCT/US2012/063756 patent/WO2013070636A1/en active Application Filing
- 2012-11-06 WO PCT/US2012/063730 patent/WO2013070621A2/en active Application Filing
- 2012-11-06 DE DE112012000195T patent/DE112012000195T5/de active Pending
- 2012-11-06 CN CN2012800066826A patent/CN103339621A/zh active Pending
- 2012-11-06 DE DE112012000187T patent/DE112012000187T5/de active Pending
- 2012-11-06 WO PCT/US2012/063723 patent/WO2013070616A1/en active Application Filing
- 2012-11-06 CN CN201280029582.5A patent/CN103608774A/zh active Pending
- 2012-11-06 DE DE112012000209T patent/DE112012000209T5/de active Pending
- 2012-11-06 WO PCT/US2012/063754 patent/WO2013070635A1/en active Application Filing
- 2012-11-06 CN CN2012800132283A patent/CN103460188A/zh active Pending
- 2012-11-06 DE DE112012000212T patent/DE112012000212T5/de active Pending
- 2012-11-06 DE DE112012000214T patent/DE112012000214T5/de active Pending
- 2012-11-06 CN CN201280006681.1A patent/CN103348317B/zh active Active
- 2012-11-06 CN CN201280003006.3A patent/CN104641350A/zh active Pending
- 2012-11-06 WO PCT/US2012/063757 patent/WO2013070637A1/en active Application Filing
- 2012-11-07 TW TW101141366A patent/TWI498817B/zh active
- 2012-11-07 TW TW101141357A patent/TWI502509B/zh not_active IP Right Cessation
- 2012-11-07 TW TW101141372A patent/TWI604410B/zh active
- 2012-11-07 TW TW101141361A patent/TWI483182B/zh not_active IP Right Cessation
- 2012-11-07 TW TW101141369A patent/TWI509561B/zh active
-
2018
- 2018-11-19 US US16/195,776 patent/US20190087164A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI483182B (zh) | 一種用於減少一電腦程式中所包括的組合語言指令之數目的方法與系統 | |
US8990786B2 (en) | Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture | |
US8832672B2 (en) | Ensuring register availability for dynamic binary optimization | |
US9448778B2 (en) | Optimizing compiler performance by object collocation | |
US9830134B2 (en) | Generating object code from intermediate code that includes hierarchical sub-routine information | |
US9292265B2 (en) | Method for convergence analysis based on thread variance analysis | |
US8726252B2 (en) | Management of conditional branches within a data parallel system | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
JP2015509249A (ja) | グラフィックス処理ユニットのための関連するテクスチャロード命令を有する制御フロー命令のプレディケーション | |
JP2015201119A (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
US11842200B2 (en) | Multi-modal gather operation | |
JP2024030940A (ja) | ソースコード変換プログラムおよびソースコード変換方法 | |
JP2019191796A (ja) | 高位合成方法、高位合成プログラム、高位合成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |