TWI502509B - 一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量的方法及系統 - Google Patents
一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量的方法及系統 Download PDFInfo
- Publication number
- TWI502509B TWI502509B TW101141357A TW101141357A TWI502509B TW I502509 B TWI502509 B TW I502509B TW 101141357 A TW101141357 A TW 101141357A TW 101141357 A TW101141357 A TW 101141357A TW I502509 B TWI502509 B TW I502509B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- expression
- value
- memory address
- address offset
- 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)
Description
本發明概略關於電腦處理,尤指一種最佳化64位元位址模式的運算法。
開發者使用編譯器來由高階原始碼產生可執行的程式。基本上,一編譯器設置成接收一程式的高階原始碼(例如以C++或Java寫成)、決定將要執行該程式的一目標硬體平台(例如一x86處理器)、然後將該高階原始碼轉譯成為可在該目標硬體平台上執行的組合語言層級的碼。此種組態的好處是開發者可撰寫一單一高階原始碼程式,然後可將程式在多種硬體平台上來執行,例如行動裝置、個人電腦或伺服器。
概言之,一編譯器包括三個組件:一前端、一中端及一後端。該前端設置成確保該高階原始碼可滿足程式化語言的語法和語意,而據此該前端可產生該高階原始碼的一第一中間表示(IR,“Intermediate representation”)。該中端設置成接收和最佳化該第一IR,其通常牽涉到例如移除在該第一IR中所包括的無法到達的碼(如果有的話)。在最佳化該第一IR之後,該中端所產生的一第二IR由該後端來做處理。特別是該後端接收該第二IR,並將該第二IR轉譯成為組合語言層級的碼。
為了有效率地產生組合語言層級的碼,需要同時降低該組合語言層級的碼中所參照的暫存器數目以及位址運算碼的數量。要達成這些降低所使用的一種方法稱為「暫存器加偏置量」(“register plus offset”)方法,其中包含產生參照一基礎位址暫存器和一固定偏置量的組合語言層級的指令。例如,在CUDATM
架構中,經由該組合語言層級的指令“ld.global.f32 f12,[rd12+64]”將一數值自通用記憶體載入到一暫存器”f12”,其中”rd12”為該基礎位址暫存器,而”64”為該固定偏置量。這種方法的優點是多個記憶體位址能夠共用同一基礎位址暫存
器”rd12”。例如,當”rd12”儲存該數值”16”時,該表達式[rd12+64]使得儲存在記憶體位址[80]中的該數值被載入到該通用記憶體位址”f12”。同樣地,當”rd12”儲存該數值”20”時,該表達式[rd12+64]使得儲存在記憶體位址[84]中的該數值被載入到該通用記憶體位址”f12”。因此,編譯器需要能夠辨識出可被降低至實作該「暫存器加偏置量」方法的組合語言層及指令的高階指令。
根據上述方法,可被降低的常見型式之高階指令包括參照由一32位元表達式偏置的一64位元基礎記憶體位址的高階指令。此格式的一示例為”64位元基礎位址+(uint64_t)(32位元表達式)”,其中該32位元表達式被型別轉換成64位元(經由”unit64_t”類型轉換記號),所以該32位元表達式的結果值為64位元。可實作上述格式的一高階指令的示例為“&p+(uint64_t)(-20 * x+30 * y+1100)”。關於上述之「暫存器加偏置量」方法,其需要決定是否可由該高階指令中的表達式“(-20 * x+30 * y+1100)”中擷取一固定偏置量。可惜地是,該64位元類別的轉換在做出這樣的決定時會引發數個複雜的問題,特別是當該表達式包括無符號整數算數時。特別是,數種程式化語言標準,例如C/C++的標準,其設計無符號的運算來在當發生溢位時產生環繞式數值。因此,習用的編譯器通常無法有效地將合法的高階指令轉譯成組合語言層級的指令來實作該「暫存器加偏置量」方法。
因此,本技術中需要允許自高階指令擷取的固定偏置量用於產生組合語言層級的指令,以實作該「暫存器加偏置量」之方法。
本發明一具體實施例提出一種自包括在一電腦程式的高階原始碼中的一64位元類別轉換表達式中擷取一記憶體位址偏置量的方法。該方法包括以下步驟:接收該64位元類別轉
換表達式,其中該64位元類別轉換表達式包括一或多個32位元表達式、針對該等一或多個32位元表達式之每一者決定一範圍、藉由加總該等32位元表達式的該等範圍來計算一整體範圍、決定該整體範圍為一32位元無符號整數的一範圍內之子集合、基於該等一或多個32位元表達式的該等範圍計算該記憶體位址偏置量、及產生參照該記憶體位址偏置量的至少一組合語言層級的指令。
該等揭示具體實施例的一個好處為一編譯器設置成自一電腦程式的高階指令擷取記憶體位址固定偏置量,所以它們可用於組合語言層級的指令中來實作此處所述的該「暫存器加偏置量」方法。因此,其可整體減少該電腦程式所參照的暫存器數目,以及整體地降低其中所包括的該等位址運算的複雜度。較佳地是,該電腦程式可以在處理器上更有效率地執行,並可允許其它電腦程式利用該等經空出的暫存器。
在以下的說明中,許多特定細節係被提出來提供對於本發明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。
系統概述
第一圖係例示設置成實作本發明一或多種態樣之一電腦系統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。
最佳化64位元位址模式
如此處更為詳細地說明者,本發明之具體實施例包含在第一圖的電腦系統100上執行的一編譯器150,其設置成實做一運算法來自動地將一電腦程式的高階指令自動地轉譯成組合語言層級的指令來實作先前所述的「暫存器加偏置量」方法。特定而言,編譯器150接收該電腦程式的高階原始碼,並辨識出參照由一32位元表達式所偏置的一64位元基礎位址的至少一高階指令。在辨識時,編譯器150決定一固定偏置量是否能自該32位元表達式安全地擷取,其中該固定偏置量係包括在實作該「暫存器加偏置量」方法而產生的組合語言層級的指令中。如上所述,執行此技術可以整體地減少被該電腦程式所參照的暫存器之數目,以及整體地降低其中所包括的該等位址運算的複雜度。較佳地是,由一系統的觀點而言,該電腦程式可更有效率地執行,並可允許在該系統內執行的其它電腦程式來利用由本發明揭示技術所空出的該等暫存器。
第二A到二B圖例示根據本發明一具體實施例中用於自一電腦程式的一高階指令擷取使用在組合語言層級的指令中的一固定偏置量來實作該「暫存器加偏置量」方法的方法步驟200之流程圖。雖然該等方法步驟係配合第一圖之系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
如所示,一方法200開始於步驟202,其中編譯器150辨識由編譯器150接收的高階原始碼中一64位元類別轉換,其型式為:“(e1+e2+...+eM)”,其中每一eM為一32位元整數常數或表達式。64位元類別轉換中的一高階指令的一示例為“&p+(uint64_t)(-20 * x+30 * y+1100)”,其中&p為一64位元基礎位址、“-20 * x”和“30 * y”為32位元整數表達式、
“1100”為一32位元整數常數、及“(uint64_t)”為該64位元類別轉換。
在步驟204,編譯器150針對每一表達式e1,e2,...,eM計算一範圍。在一具體實施例中,編譯器150設置成辨識每一表達式eM的最不可能的數值以及針對每一表達式eM的最有可能的數值。當該表達式eM為一32位元常數時,該範圍簡單地就等於該32位元常數值,例如”1100”,而該最不可能的數值等於該最有可能的數值。但是,當該表達式eM為一實際的32位元表達式時,例如“-20 * x”,編譯器150解析該高階碼來藉由同時決定”x”的最不可能的數值及”x”的最有可能的數值來決定該範圍,然後執行由該32位元表達式所定義的該算術來建立一最終範圍。例如,如果編譯器150決定該32位元表達式“-20 * x”中”x”的範圍為[0,100],則該32位元表達式的範圍為[-20 * 100,-20 * 0]=[-200,0]。如以下進一步的詳細說明,這些計算出的範圍由編譯器150用來決定一固定偏置量是否可由該64位元類別轉換來安全地擷取,如果是,則決定該固定偏置量的該正確數值。
在步驟205,編譯器150將e1,e2,...,eM的該等範圍加總在一起,以決定包括在該經接收的高階原始碼中該表達式的整體範圍(即e1,e2,...,eM的整體範圍)。在步驟206,編譯器150決定該整體範圍是否為該無符號32位元數值範圍([0,UINT32MAX])的一子集合。如果在步驟206編譯器150決定該整體範圍為該無符號32位元數值範圍([0,UINT32MAX])的一子集合時,則方法200進行到步驟208,如下所述。否則,高階方法200即結束,因為並無固定偏置量可自該64位元類別轉換安全地擷取。
在步驟208,編譯器150將該等變數“Constant_Val”和“Preserved_Val”設定為數值0。在步驟210,編譯器150該第一表達式e1設定為一目前表達式。在一具體實施例中,該目
前表達式被實作成一指向至一表達式eM的指標,所以該編譯器可以有效率地解析包括在該64位元類別轉換中的每一eM。
在步驟212,編譯器150決定該目前表達式是否為一常數。請注意在第一次通過步驟212時,該目前表達式指向至該表達式e1。如果在步驟212編譯器150決定該目前表達式為一常數(例如”1100”),則方法200進行到步驟514,其中編譯器150將該目前表達式的該常數數值加入到該“Constant_Val”變數。
如果在步驟212編譯器150決定該目前表達式並非常數,則編譯器150知道該目前表達式事實上為一表達式(例如“-20 * x”)。因此,方法200進行到步驟216,其中編譯器150決定該目前表達式的該範圍之下限是否小於零。如果在步驟216編譯器150決定該目前表達式的該範圍之下限為小於零,則方法200進行到步驟218。在步驟218,編譯器150自該變數“Preserved_Val”減去該目前表達式的該範圍之下限。然後方法200進行到步驟220,如下述。
請注意到如果步驟212和步驟216的決定結果皆為否,則該目前表達式對於該“Constant_Val”變數和該“Preserved_Val”變數的該等數值皆沒有影響。此時方法進行到步驟220,其中編譯器150分析包括在該64位元類別轉換中的下一個表達式eM(如果有的話)。
在步驟220,編譯器150決定該類別轉換要求中是否包括額外的表達式。如果在步驟220編譯器150決定該類別轉換要求中包括額外的表達式,則方法200進行到步驟222。否則,方法200進行到步驟224,如下述。
在步驟222,編譯器150將該目前表達式設定為包括在該類別轉換要求中的下一個表達式。例如,如果該目前表達式指向到e1,則在步驟222該目前表達式被更新為指向到e2。
在步驟224,編譯器150決定該“Constant_Val”變數是否小於或等於該“Preserved_Val”變數。如果在步驟224編譯器150
決定該“Constant_Val”變數小於或等於該“Preserved_Val”變數,則方法200進行到步驟226,其中編譯器150傳回一零的固定偏置量值。否則,方法200進行到步驟228,其中編譯器150擷取一固定偏置量值,其等於該Preserved_Val變數減去該Constant_Val變數後之值。
因此,如果透過方法步驟200,編譯器150能夠擷取一固定偏置量值,則該固定偏置量值可被包括在實作該「暫存器加偏置量」方法的組合語言層級的指令中。
總而言之,本發明之具體實施例提出一種自包括在一電腦程式的高階原始碼中的一64位元類別轉換表達式中擷取一記憶體位址偏置量的技術。編譯器150接收該64位元類別轉換表達式,其包括一或多個32位元表達式,例如“-20 * x”,“30 * y”
和“1100”
。編譯器1500根據上述之方法200的步驟204針對該等一或多個32位元表達式之每一者來決定一範圍,然後決定該等一或多個32位元表達式之每一者的該範圍是否為一32位元無符號整數的該範圍的一子集合。假設該等範圍符合此子集合要求,編譯器150基於該等一或多個32位元表達式的該等範圍計算一記憶體位址偏置量,如方法200之步驟212-228中所述。
此處所揭示之該等技術的一項好處為編譯器150設置成自動地轉譯一電腦程式的高階指令成為組合語言層級的指令來實作該「暫存器加偏置量」方法,其如此處所述可提供數種優點。再次地,這些優點可包括可整體減少該電腦程式所參照的暫存器數目,以及整體地降低其中所包括的該等位址運算的複雜度。因此,該電腦程式可以在處理器上更有效率地執行,並可允許其它電腦程式利用該等經空出的暫存器,其增加並行執行的可能性。
本發明一具體實施例可以實作成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體
上。例示性的電腦可讀取儲存媒體包括但不限於:(i)不可寫入儲存媒體(例如在一電腦內唯讀記憶體裝置,例如可由CD-ROM讀取的光碟唯讀記憶體(CD-ROM)碟片,快閃記憶體,ROM晶片,或任何其它種類的固態非揮發性半導體記憶體),其上可永久儲存資訊;及(ii)可寫入儲存媒體(例如在一磁碟機內的軟碟片、或硬碟機、或任何種類的固態隨機存取半導體記憶體),其上可儲存可改變的資訊。
本發明已經參照特定具體實施例在以上進行說明。但是本技術專業人士將可瞭解到在不背離附屬申請專利範圍所提出之本發明的廣義精神與範圍之下可對其進行多種修正與改變。因此前述的說明及圖面係在以例示性而非限制性的角度來看待。
因此,本發明之具體實施例的範圍係在以下的申請專利範圍中提出。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動器
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧輸入裝置
110‧‧‧顯示器
112‧‧‧圖形處理單元
113‧‧‧通訊路徑
114‧‧‧系統碟
116‧‧‧交換器
118‧‧‧網路轉接器
120,121‧‧‧嵌入卡
150‧‧‧編譯器
200‧‧‧方法
202~228‧‧‧步驟
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等附屬圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,其可允許其它同等有效的具體實施例。
第一圖例示設置成一種實作本發明一或多種態樣之電腦系統的方塊圖。
第二A到二B圖例示根據本發明一具體實施例中用於自一電腦程式的一高階指令擷取使用在組合語言層級的指令中的一固定偏置量來實作該「暫存器加偏置量」方法的方法步驟之流程圖。
200‧‧‧方法
202~218‧‧‧步驟
Claims (10)
- 一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量之方法,該方法包含:接收該64位元類別轉換表達式,其中該64位元類別轉換表達式包括一或多個32位元表達式;針對該等一或多個32位元表達式之每一者決定該32位元表達式的一範圍;藉由加總該等32位元表達式的該等範圍來計算一整體範圍;決定該整體範圍為一32位元無符號整數的一範圍內的一子集合;基於該等一或多個32位元表達式的該等範圍計算該記憶體位址偏置量;以及產生參照該記憶體位址偏置量的至少一組合語言層級的指令。
- 如申請專利範圍第1項之方法,其中包括在該等一或多個32位元表達式中的一第一32位元表達式包含一常數值。
- 如申請專利範圍第2項之方法,其中決定該第一32位元表達式的該範圍包含擷取關聯於該第一32位元表達式的該常數值。
- 如申請專利範圍第2項之方法,其中包括在該等一或多個32位元表達式中的一第二32位元表達式包括至少一變數。
- 如申請專利範圍第4項之方法,其中決定該第二32位元表達式的該範圍包含:解析該高階原始碼來決定將在該電腦程式的執行期間被指定給該至少一變數的一最小值;以及將該第二32位元表達式的該範圍之一下限設為該最小值。
- 如申請專利範圍第5項之方法,其中基於該等一或多個32 位元表達式的該等範圍計算該記憶體位址偏置量包含:建立一第一變數和一第二變數成為具有等於零的數值;將關聯於該第一32位元表達式的該常數值加入到該第一變數;自該第二數值減去關聯於該第二32位元表達式的該下限;以及當該第一數值小於或等於該第二數值時將該記憶體位址偏置量設定為該第二數值和該第一數值之間的差值;或當該第一數值大於該第二數值時將該記憶體位址偏置量設定為零。
- 如申請專利範圍第1項之方法,其中該記憶體位址偏置量係在該至少一組合語言層級的指令之行內做參照。
- 如申請專利範圍第1項之方法,其中該組合語言層級的指令在由一處理器執行時使得該處理器進行:從一基礎暫存器載入一第一數值;將該第一數值加入到該記憶體位址偏置量來產生一第二數值;以及參照由該第二數值所索引的一記憶體位址。
- 一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量之系統,該系統包含:一處理器,其設置成:接收該64位元類別轉換表達式,其中該64位元類別轉換表達式包括一或多個32位元表達式;針對該等一或多個32位元表達式之每一者決定該32位元表達式的一範圍;藉由加總該等32位元表達式的該等範圍來計算一整體範圍;決定該整體範圍為一32位元無符號整數的一範圍的一 子集合;基於該等一或多個32位元表達式的該等範圍計算該記憶體位址偏置量;以及產生參照該記憶體位址偏置量的至少一組合語言層級的指令。
- 如申請專利範圍第9項之系統,其中包括在該等一或多個32位元表達式中的一第一32位元表達式包含一常數值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161556782P | 2011-11-07 | 2011-11-07 | |
US13/659,786 US9009686B2 (en) | 2011-11-07 | 2012-10-24 | Algorithm for 64-bit address mode optimization |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201337764A TW201337764A (zh) | 2013-09-16 |
TWI502509B true TWI502509B (zh) | 2015-10-01 |
Family
ID=48223398
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141357A TWI502509B (zh) | 2011-11-07 | 2012-11-07 | 一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量的方法及系統 |
TW101141369A TWI509561B (zh) | 2011-11-07 | 2012-11-07 | 在圖形處理器電腦編譯器中最佳化程序間記憶體位址空間的技術 |
TW101141366A TWI498817B (zh) | 2011-11-07 | 2012-11-07 | 減少64位元電腦程式迴圈內符號擴展指令的需求導向運算法 |
TW101141361A TWI483182B (zh) | 2011-11-07 | 2012-11-07 | 一種用於減少一電腦程式中所包括的組合語言指令之數目的方法與系統 |
TW101141372A TWI604410B (zh) | 2011-11-07 | 2012-11-07 | 改善暫存器不足和提升平行處理的即時分析式重新計算技術 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141369A TWI509561B (zh) | 2011-11-07 | 2012-11-07 | 在圖形處理器電腦編譯器中最佳化程序間記憶體位址空間的技術 |
TW101141366A TWI498817B (zh) | 2011-11-07 | 2012-11-07 | 減少64位元電腦程式迴圈內符號擴展指令的需求導向運算法 |
TW101141361A TWI483182B (zh) | 2011-11-07 | 2012-11-07 | 一種用於減少一電腦程式中所包括的組合語言指令之數目的方法與系統 |
TW101141372A TWI604410B (zh) | 2011-11-07 | 2012-11-07 | 改善暫存器不足和提升平行處理的即時分析式重新計算技術 |
Country Status (5)
Country | Link |
---|---|
US (6) | US20130113809A1 (zh) |
CN (5) | CN103348317B (zh) |
DE (5) | DE112012000209T5 (zh) |
TW (5) | TWI502509B (zh) |
WO (5) | WO2013070621A2 (zh) |
Families Citing this family (53)
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 |
US9164743B2 (en) | 2012-07-02 | 2015-10-20 | International Business Machines Corporation | Strength reduction compiler optimizations for operations with unknown strides |
US10588691B2 (en) | 2012-09-12 | 2020-03-17 | Relievant Medsystems, Inc. | Radiofrequency ablation of tissue within a vertebral body |
WO2014176587A2 (en) * | 2013-04-26 | 2014-10-30 | The Trustees Of Columbia University In The City Of New York | Systems and methods for mobile applications |
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 | 华为技术有限公司 | 一种数据操作的方法和设备 |
WO2015148424A1 (en) * | 2014-03-27 | 2015-10-01 | Microsoft Technology Licensing, Llc | Supporting dynamic behavior in statically compiled programs |
US9389890B2 (en) | 2014-03-27 | 2016-07-12 | Microsoft Technology Licensing, Llc | Hierarchical directives-based management of runtime behaviors |
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 |
EP3704572A1 (en) * | 2017-11-03 | 2020-09-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 | 深圳市中兴微电子技术有限公司 | 一种指令硬件架构的构建方法、装置及存储介质 |
CN113330422A (zh) * | 2019-01-25 | 2021-08-31 | 加利福尼亚大学董事会 | 用于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 |
CN113362878A (zh) | 2020-03-06 | 2021-09-07 | 三星电子株式会社 | 用于存储器内计算的方法和用于计算的系统 |
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 |
CN112230931B (zh) | 2020-10-22 | 2021-11-02 | 上海壁仞智能科技有限公司 | 适用于图形处理器的二次卸载的编译方法、装置和介质 |
CN112214443B (zh) | 2020-10-22 | 2021-12-03 | 上海壁仞智能科技有限公司 | 设置于图形处理器中的二次卸载装置和方法 |
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 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102658A1 (en) * | 2003-10-14 | 2005-05-12 | Intel Corporation | Method and system for allocating register locations in a memory during compilation |
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 |
US20110078406A1 (en) * | 2009-09-25 | 2011-03-31 | Nickolls John R | Unified Addressing and Instructions for Accessing Parallel Memory Spaces |
US20110271170A1 (en) * | 2010-04-29 | 2011-11-03 | International Business Machines Corporation | Determining page faulting behavior of a memory operation |
Family Cites Families (94)
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 |
TW237529B (zh) * | 1990-08-23 | 1995-01-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 |
EP0867808B1 (en) * | 1997-03-29 | 2002-04-10 | IMEC vzw | Method and apparatus for size optimisation of storage units |
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 |
US6401187B1 (en) * | 1997-12-10 | 2002-06-04 | Hitachi, Ltd. | Memory access optimizing method |
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 |
US6415311B1 (en) | 1999-06-24 | 2002-07-02 | Ati International Srl | Sign extension circuit and method for unsigned multiplication and accumulation |
US6757892B1 (en) | 1999-06-24 | 2004-06-29 | Sarnoff Corporation | Method for determining an optimal partitioning of data among several memories |
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 |
JP3763516B2 (ja) * | 2001-03-30 | 2006-04-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 変換プログラム、コンパイラ、コンピュータ装置およびプログラム変換方法 |
US20020144101A1 (en) | 2001-03-30 | 2002-10-03 | Hong Wang | Caching DAG traces |
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 |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US20110161977A1 (en) | 2002-03-21 | 2011-06-30 | Martin Vorbach | Method and device for data processing |
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 |
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 |
US8677312B1 (en) * | 2004-03-30 | 2014-03-18 | Synopsys, Inc. | Generation of compiler description from architecture description |
US8689202B1 (en) * | 2004-03-30 | 2014-04-01 | Synopsys, Inc. | Scheduling of instructions |
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 |
CN100389420C (zh) * | 2005-09-13 | 2008-05-21 | 北京中星微电子有限公司 | 用协处理器加速文件系统操作的方法及装置 |
US8037465B2 (en) * | 2005-09-30 | 2011-10-11 | Intel Corporation | Thread-data affinity optimization using compiler |
US7450131B2 (en) * | 2005-09-30 | 2008-11-11 | Intel Corporation | Memory layout for re-ordering instructions using pointers |
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 |
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 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
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/063730 patent/WO2013070621A2/en active Application Filing
- 2012-11-06 CN CN201280006681.1A patent/CN103348317B/zh active Active
- 2012-11-06 WO PCT/US2012/063757 patent/WO2013070637A1/en active Application Filing
- 2012-11-06 CN CN201280003006.3A patent/CN104641350A/zh active Pending
- 2012-11-06 WO PCT/US2012/063756 patent/WO2013070636A1/en active Application Filing
- 2012-11-06 DE DE112012000209T patent/DE112012000209T5/de active Pending
- 2012-11-06 DE DE112012000195T patent/DE112012000195T5/de active Pending
- 2012-11-06 CN CN2012800132283A patent/CN103460188A/zh active Pending
- 2012-11-06 WO PCT/US2012/063754 patent/WO2013070635A1/en active Application Filing
- 2012-11-06 CN CN2012800066826A patent/CN103339621A/zh active Pending
- 2012-11-06 DE DE112012000214T patent/DE112012000214T5/de active Pending
- 2012-11-06 WO PCT/US2012/063723 patent/WO2013070616A1/en active Application Filing
- 2012-11-06 DE DE112012000212T patent/DE112012000212T5/de active Pending
- 2012-11-06 DE DE112012000187T patent/DE112012000187T5/de active Pending
- 2012-11-06 CN CN201280029582.5A patent/CN103608774A/zh active Pending
- 2012-11-07 TW TW101141357A patent/TWI502509B/zh not_active IP Right Cessation
- 2012-11-07 TW TW101141369A patent/TWI509561B/zh active
- 2012-11-07 TW TW101141366A patent/TWI498817B/zh active
- 2012-11-07 TW TW101141361A patent/TWI483182B/zh not_active IP Right Cessation
- 2012-11-07 TW TW101141372A patent/TWI604410B/zh active
-
2018
- 2018-11-19 US US16/195,776 patent/US20190087164A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102658A1 (en) * | 2003-10-14 | 2005-05-12 | Intel Corporation | Method and system for allocating register locations in a memory during compilation |
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 |
US20110078406A1 (en) * | 2009-09-25 | 2011-03-31 | Nickolls John R | Unified Addressing and Instructions for Accessing Parallel Memory Spaces |
US20110271170A1 (en) * | 2010-04-29 | 2011-11-03 | International Business Machines Corporation | Determining page faulting behavior of a memory operation |
Non-Patent Citations (1)
Title |
---|
" A PTX Code Generator for LLVM", Saarbrücken, Germany, Saarland University, 2010 * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502509B (zh) | 一種用於自包括在一電腦程式的高階原始碼中一64位元類別轉換表達式擷取一記憶體位址偏置量的方法及系統 | |
US8745111B2 (en) | Methods and apparatuses for converting floating point representations | |
TWI306215B (en) | Method and corresponding apparatus for compiling high-level languages into specific processor architectures | |
US20120272224A1 (en) | Inline function linking | |
CN106415496A (zh) | 统一中间表示 | |
KR20140139516A (ko) | 그래픽 프로세싱 유닛에 대한 애플리케이션들의 밸리데이션 | |
US20100149193A1 (en) | Method And System For Enabling Managed Code-Based Application Program To Access Graphics Processing Unit | |
US8655937B1 (en) | High precision integer division using low precision hardware operations and rounding techniques | |
JP2010530996A (ja) | プログラム・コードを変換するためのコンピュータ・システム、方法、及びコンピュータ可読記録媒体 | |
US20120284701A1 (en) | Efficient conditional flow control compilation | |
CN110352400B (zh) | 用于处理报文的方法和装置 | |
WO2012129446A1 (en) | Register allocation for graphics processing | |
US10599406B2 (en) | Generating executable files through compiler optimization | |
CN105335203B (zh) | 共享库的二进制翻译执行方法和装置 | |
US20130321436A1 (en) | Method and apparatus for unifying graphics processing unit computation languages | |
US11842200B2 (en) | Multi-modal gather operation | |
US8700887B2 (en) | Register, processor, and method of controlling a processor using data type information | |
JP6545406B2 (ja) | 高位合成装置、高位合成方法および高位合成プログラム | |
US9811339B1 (en) | Testing hybrid instruction architecture | |
JP2013171551A (ja) | 情報処理装置、情報処理方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |