[發(fā)明專(zhuān)利]用于從代碼語(yǔ)句生成SIMD代碼的方法和系統(tǒng)在審
| 申請(qǐng)?zhí)枺?/td> | 201410698631.5 | 申請(qǐng)日: | 2014-11-27 |
| 公開(kāi)(公告)號(hào): | CN104731556A | 公開(kāi)(公告)日: | 2015-06-24 |
| 發(fā)明(設(shè)計(jì))人: | E·阿米里;C·M·巴頓;D·M·帕梅洛;R·希爾韋拉 | 申請(qǐng)(專(zhuān)利權(quán))人: | 國(guó)際商業(yè)機(jī)器公司 |
| 主分類(lèi)號(hào): | G06F9/30 | 分類(lèi)號(hào): | G06F9/30 |
| 代理公司: | 北京市中咨律師事務(wù)所 11247 | 代理人: | 于靜;張亞非 |
| 地址: | 美國(guó)*** | 國(guó)省代碼: | 美國(guó);US |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 用于 代碼 語(yǔ)句 生成 simd 方法 系統(tǒng) | ||
技術(shù)領(lǐng)域
本公開(kāi)一般地涉及用于代碼生成的軟件開(kāi)發(fā)工具,更具體地說(shuō),涉及編譯代碼以便在針對(duì)單指令多數(shù)據(jù)(SIMD)執(zhí)行配置的機(jī)器上執(zhí)行。
背景技術(shù)
SIMD配置的計(jì)算機(jī)包括多個(gè)處理元件,它們同時(shí)針對(duì)多個(gè)數(shù)據(jù)點(diǎn)執(zhí)行相同的操作。SIMD處理元件通常用于同時(shí)對(duì)多組數(shù)值進(jìn)行相加或相乘,以便實(shí)現(xiàn)多媒體編碼和呈現(xiàn)以及科學(xué)應(yīng)用。在沒(méi)有編譯器支持的情況下使用SIMD指令實(shí)現(xiàn)算法可能需要用戶(hù)知道有關(guān)數(shù)據(jù)對(duì)齊、體系架構(gòu)特定指令集和SIMD寄存器大小的限制。編譯器可以允許用戶(hù)通過(guò)從用戶(hù)的標(biāo)量代碼生成支持SIMD的代碼,利用SIMD處理元件的速度。
發(fā)明內(nèi)容
本公開(kāi)的各實(shí)施例公開(kāi)一種用于從包括非同構(gòu)代碼語(yǔ)句的代碼語(yǔ)句生成SIMD代碼的方法、計(jì)算機(jī)程序產(chǎn)品和系統(tǒng)。一個(gè)或多個(gè)處理器接收多個(gè)代碼語(yǔ)句,每個(gè)代碼語(yǔ)句具有采用相應(yīng)操作符順序的一個(gè)或多個(gè)操作符。每個(gè)操作符具有類(lèi)型和關(guān)聯(lián)的操作數(shù)。所述多個(gè)代碼語(yǔ)句中的至少兩個(gè)代碼語(yǔ)句在不同操作符順序位置中具有相同類(lèi)型的操作符。所述一個(gè)或多個(gè)處理器在所述至少兩個(gè)代碼語(yǔ)句的每一個(gè)中,針對(duì)所述相同類(lèi)型的操作符標(biāo)識(shí)第一操作符順序位置。對(duì)于所述至少兩個(gè)代碼語(yǔ)句的每一個(gè),所述一個(gè)或多個(gè)處理器針對(duì)操作符順序位置在所述第一操作符順序位置之前的操作符及其關(guān)聯(lián)的操作數(shù)生成代碼。所述一個(gè)或多個(gè)處理器至少基于所標(biāo)識(shí)的第一操作符順序位置、對(duì)應(yīng)的操作符類(lèi)型,以及與所標(biāo)識(shí)的操作符順序位置處的操作符類(lèi)型關(guān)聯(lián)的操作數(shù),生成SIMD代碼。
附圖說(shuō)明
從以下將結(jié)合附圖閱讀的對(duì)本發(fā)明的示例性實(shí)施例的詳細(xì)說(shuō)明,本發(fā)明的特性和優(yōu)點(diǎn)將變得顯而易見(jiàn)。附圖的各種特性不按比例,因?yàn)楦鲌D是為了清晰起見(jiàn),促進(jìn)所屬技術(shù)領(lǐng)域的技術(shù)人員結(jié)合詳細(xì)說(shuō)明理解本發(fā)明。在附圖中:
圖1示出顯示根據(jù)本公開(kāi)的一個(gè)實(shí)施例的標(biāo)量代碼語(yǔ)句的數(shù)據(jù)并行表示和標(biāo)量代碼語(yǔ)句的數(shù)據(jù)并行機(jī)會(huì)的示例性包;
圖2示出根據(jù)本公開(kāi)的一個(gè)實(shí)施例的SIMD優(yōu)化編譯器環(huán)境的功能框圖;
圖3是示出根據(jù)本公開(kāi)的一個(gè)實(shí)施例的有序選擇準(zhǔn)備例程的操作的流程圖;
圖4是根據(jù)本公開(kāi)的一個(gè)實(shí)施例的示例性包的示意圖;
圖5a和5b是示出根據(jù)本公開(kāi)的一個(gè)實(shí)施例的選擇例程的操作的流程圖;
圖6-14示出根據(jù)本公開(kāi)的一個(gè)實(shí)施例的用于從數(shù)據(jù)并行機(jī)會(huì)中選擇操作符匹配以便優(yōu)化的包的示例性處理;
圖15示出根據(jù)本公開(kāi)的一個(gè)實(shí)施例的SIMD優(yōu)化編譯器環(huán)境的計(jì)算設(shè)備的組件的框圖。
具體實(shí)施方式
在計(jì)算中,代碼的基本塊是程序中具有僅一個(gè)入口點(diǎn)和僅一個(gè)出口點(diǎn)的代碼部分。編譯器通常將程序分解為其基本塊,作為生成編譯代碼的第一步。生成支持SIMD的代碼的典型編譯器從標(biāo)量代碼的基本塊中的“同構(gòu)”代碼模式生成支持SIMD的代碼。當(dāng)代碼的基本塊中的多個(gè)代碼語(yǔ)句或同構(gòu)代碼語(yǔ)句全部按照相同順序在多個(gè)代碼語(yǔ)句中包含相同操作符(例如乘法),并且將操作符應(yīng)用于存儲(chǔ)器相鄰操作數(shù)時(shí),存在同構(gòu)代碼模式。某些編譯器可以通過(guò)剝離和展開(kāi)循環(huán),將循環(huán)中的代碼主體分解為基本塊,作為一種用于在展開(kāi)的循環(huán)主體中標(biāo)識(shí)同構(gòu)代碼語(yǔ)句的方式。這些同構(gòu)代碼語(yǔ)句可以表示數(shù)據(jù)并行機(jī)會(huì),以便編譯器使用SIMD指令進(jìn)行優(yōu)化。
本公開(kāi)的各實(shí)施例可以允許編譯器擴(kuò)展數(shù)據(jù)并行機(jī)會(huì)以便進(jìn)行SIMD優(yōu)化。各種實(shí)施例可以有利地優(yōu)化來(lái)自非同構(gòu)代碼語(yǔ)句以及同構(gòu)代碼語(yǔ)句的代碼,以便生成SIMD指令。本公開(kāi)的各實(shí)施例可以使用標(biāo)量代碼的數(shù)據(jù)并行表示(以下稱(chēng)為“包(pack)”),以便生成支持SIMD的代碼。不同于僅打包來(lái)自同構(gòu)標(biāo)量代碼的代碼語(yǔ)句的典型編譯器,本公開(kāi)的某些實(shí)施例可以打包同構(gòu)和非同構(gòu)語(yǔ)句兩者的數(shù)據(jù)并行表示。
圖1示出顯示根據(jù)本公開(kāi)的一個(gè)實(shí)施例的同構(gòu)和非同構(gòu)標(biāo)量代碼語(yǔ)句110的數(shù)據(jù)并行表示以及標(biāo)量代碼語(yǔ)句110的數(shù)據(jù)并行機(jī)會(huì)190的示例性包180。如下面詳細(xì)描述的那樣,包創(chuàng)建器210從標(biāo)量代碼語(yǔ)句110創(chuàng)建包180和數(shù)據(jù)并行機(jī)會(huì)190。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于國(guó)際商業(yè)機(jī)器公司;,未經(jīng)國(guó)際商業(yè)機(jī)器公司;許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410698631.5/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
- 遙控器代碼格式結(jié)構(gòu)及其收發(fā)信方法及裝置
- 在虛擬機(jī)中驗(yàn)證代碼模塊的方法及裝置
- 一種用于代碼的管理方法及裝置
- 虛擬代碼提供系統(tǒng)、生成裝置、驗(yàn)證裝置、提供方法
- 一種自動(dòng)化代碼質(zhì)量檢查方法及系統(tǒng)
- 代碼掃描方法、裝置、計(jì)算設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)
- 用于更新代碼的方法和裝置
- 前端代碼打包方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種代碼審查服務(wù)同步方法、裝置及計(jì)算機(jī)設(shè)備
- 一種高效智能源代碼安全管理平臺(tái)
- 基于聊天大數(shù)據(jù)知識(shí)庫(kù)的機(jī)器人對(duì)話控制方法和系統(tǒng)
- 基于大數(shù)據(jù)搜索的幽默型機(jī)器人對(duì)話控制方法和系統(tǒng)
- 基于對(duì)話知識(shí)庫(kù)的機(jī)器人對(duì)話控制方法和系統(tǒng)
- 一種自然語(yǔ)言語(yǔ)句評(píng)價(jià)方法及裝置
- 句子級(jí)雙語(yǔ)對(duì)齊方法及系統(tǒng)
- 一種獲取相似語(yǔ)句的方法、裝置、存儲(chǔ)介質(zhì)及電子設(shè)備
- 一種翻譯模型結(jié)果重排序的方法及裝置
- 用于輸出信息的方法、裝置、設(shè)備以及存儲(chǔ)介質(zhì)
- 搜索推薦方法和裝置、服務(wù)器、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 文本識(shí)別方法、裝置、電子設(shè)備和可讀存儲(chǔ)介質(zhì)





