分析向量化的潛在效益的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的實(shí)施例一般地設(shè)及數(shù)據(jù)處理的技術(shù)領(lǐng)域,并且更具體地設(shè)及分析對(duì)可執(zhí) 行指令進(jìn)行向量化的潛在效益。
【背景技術(shù)】
[0002] 本文提供的背景描述是為了一般地呈現(xiàn)本公開的上下文的目的。目前被指名的發(fā) 明人的工作,在本【背景技術(shù)】章節(jié)中對(duì)其進(jìn)行描述的程度上,W及在提交時(shí)可能不W其它方 式被限定為現(xiàn)有技術(shù)的描述的各方面既不明確地也不隱含地被承認(rèn)為抵觸本公開的現(xiàn)有 技術(shù)。除非本文中另行指示,否則本章節(jié)中描述的方法不是對(duì)于本公開中的權(quán)利要求的現(xiàn) 有技術(shù),并且不會(huì)通過(guò)被包括在本章節(jié)中而被承認(rèn)為是現(xiàn)有技術(shù)。
[000引對(duì)諸如單指令、多數(shù)據(jù)("SIMD")指令的向量化的指令的支持正在計(jì)算架構(gòu)中擴(kuò) 展。然而,被向量化(例如,轉(zhuǎn)換為SIMD)W利用該擴(kuò)展的計(jì)算機(jī)代碼的百分比仍然很低。盡 管存在用于針對(duì)向量化機(jī)會(huì)而分析源代碼的工具,但是源代碼可能不總是可用的,并且在 一些情況下,僅非人類可讀的、容易可執(zhí)行的指令,諸如二進(jìn)制指令(例如,機(jī)器代碼)和/或 字節(jié)代碼可用。
【附圖說(shuō)明】
[0004] 通過(guò)結(jié)合附圖的W下詳細(xì)描述將容易地理解實(shí)施例。為了便于該描述,同樣的參 考標(biāo)號(hào)指明同樣的結(jié)構(gòu)元件。作為示例而不是作為附圖的各圖中的限制來(lái)圖示實(shí)施例。
[0005] 圖1示意性地圖示了根據(jù)各種實(shí)施例的可W在向量化效益分析期間被標(biāo)識(shí)的可 執(zhí)行指令的示例群組。
[0006] 圖2示意性地圖示了根據(jù)各種實(shí)施例的用于針對(duì)向量化機(jī)會(huì)而分析可執(zhí)行指令 的執(zhí)行的示例系統(tǒng)。
[0007] 圖3示意性地描繪了根據(jù)各種實(shí)施例的可W被生成并且用于向量化效益分析的 示例控制流程圖。
[0008] 圖4示意性地描繪了根據(jù)各種實(shí)施例的可W被生成并且用于向量化效益分析的 相關(guān)性鏈。
[0009] 圖5示意性地描繪了根據(jù)各種實(shí)施例的可W被生成W提供向量化效益分析的結(jié) 果的示例報(bào)告。
[0010] 圖6示意性地描繪了根據(jù)各種實(shí)施例的可W被實(shí)現(xiàn)為執(zhí)行向量化效益分析的示 例方法。
[0011] 圖7示意性地圖示了根據(jù)各種實(shí)施例的用于向量化效益分析的另一示例系統(tǒng)。
[0012] 圖8示意性地描繪了根據(jù)各種實(shí)施例的在其上可W實(shí)現(xiàn)所公開的方法和計(jì)算機(jī) 可讀介質(zhì)的示例計(jì)算設(shè)備。
【具體實(shí)施方式】
[0013] 在W下的【具體實(shí)施方式】中,參考形成其部分的附圖,其中貫穿全文同樣的標(biāo)號(hào)指 明同樣的部分,并且其中通過(guò)圖示的方式示出可W實(shí)踐的實(shí)施例。要理解,可W利用其它實(shí) 施例,并且可W進(jìn)行結(jié)構(gòu)或邏輯改變,而不背離本公開的范圍。因此,下面的詳細(xì)描述不要 W限制性的意義來(lái)理解,并且實(shí)施例的范圍由所附權(quán)利要求及其等同物來(lái)限定。
[0014] 可WW最有助于理解要求保護(hù)的主題的方式來(lái)依次將各種操作描述為多個(gè)分立 的動(dòng)作或操作。然而,描述的次序不應(yīng)當(dāng)被解釋為暗示該些操作必定是次序相關(guān)的。具體 地,該些操作可W不W呈現(xiàn)的次序來(lái)執(zhí)行??蒞W不同于所描述的實(shí)施例的次序來(lái)執(zhí)行所 描述的操作??蒞執(zhí)行各種附加的操作和/或可W在附加實(shí)施例中省略所描述的操作。
[001引出于本公開的目的,短語(yǔ)"A和/或B"意指(AX(B)或(A和B)。出于本公開的目 的,短語(yǔ)"A、B和 / 或C"意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
[0016] 描述可W使用短語(yǔ)"在實(shí)施例中"或"在多個(gè)實(shí)施例中",其可W各自指代一個(gè)或多 個(gè)相同或不同的實(shí)施例。此外,如關(guān)于本公開的實(shí)施例使用的術(shù)語(yǔ)"包括"、"包含"、"具有" 等是同義的。
[0017] 如本文所使用的,術(shù)語(yǔ)"模塊"和/或"邏輯"可W指代W下各項(xiàng)、是W下各項(xiàng)的部 分或者包括W下各項(xiàng);專用集成電路("ASIC")、電子電路、執(zhí)行一個(gè)或多個(gè)軟件或固件程 序的處理器(共享的、專用的或群組)和/或存儲(chǔ)器(共享的、專用的或群組)、組合邏輯電路 和/或提供所描述的功能性的其它合適的組件。
[0018] 本文中描述了用于向量化效益分析的技術(shù)。如本文所使用的,"向量化效益分析" 可W指針對(duì)向量化機(jī)會(huì)而分析多個(gè)可執(zhí)行指令的執(zhí)行和/或提供向量化的潛在效益的指 示。如本文所使用的,"多個(gè)可執(zhí)行指令"通??蒞指容易地可執(zhí)行(例如,不需要完全編譯) 的計(jì)算機(jī)程序。容易地可執(zhí)行的多個(gè)可執(zhí)行指令可W包括非人類可讀指令,諸如二進(jìn)制指 令(例如,機(jī)器代碼)、字節(jié)代碼(例如,通過(guò)軟件解釋器可執(zhí)行的)等。與此相反,人類可讀的 源代碼(例如,WC、C++等編寫的)將不會(huì)被認(rèn)為是"容易地可執(zhí)行的",因?yàn)槠湓跊](méi)有至少 一些編譯的情況下不可執(zhí)行。容易地可執(zhí)行的多個(gè)可執(zhí)行指令的另一示例可W附加地或替 代地包括計(jì)算機(jī)程序跟蹤(trace),諸如指令的在先執(zhí)行的動(dòng)態(tài)跟蹤(例如,從監(jiān)視指令的 實(shí)際執(zhí)行或從W任何形式的所記錄的跟蹤而生成的)。在各種實(shí)施例中,可W提供向量化的 潛在效益的指示W(wǎng)用于向用戶報(bào)告和/或作為對(duì)另一系統(tǒng)或過(guò)程的輸入。
[0019]圖1描繪了根據(jù)各種實(shí)施例的示出了可W在向量化效益分析的各個(gè)階段被標(biāo)識(shí) 和/或檢測(cè)的可執(zhí)行指令的各種集合和子集的維恩圖解100。指明為{A}的可執(zhí)行指令的 第一集合可W包括被分析的計(jì)算機(jī)程序或跟蹤中的所有可執(zhí)行指令,并且可W用作向量化 效益分析的開始點(diǎn)。集合巧}-巧}表示{A}和/或彼此的子集。如將在下面更詳細(xì)描述的, 腳可W包括位于{A}的相對(duì)執(zhí)行密集的點(diǎn)(例如,頻繁執(zhí)行的循環(huán))中的可執(zhí)行指令。似 可W包括位于一個(gè)或多個(gè)循環(huán)中的可執(zhí)行指令,諸如被包含在循環(huán)中的巧}中的可執(zhí)行指 令。{D}可W包括沒(méi)有向量相關(guān)性(ckpendency)的可執(zhí)行指令,諸如沒(méi)有迭代間相關(guān)性的 (口中的可執(zhí)行指令。巧}可W包括適合于向量化(例如,轉(zhuǎn)換為單指令多數(shù)據(jù)或"SIMD"指 令)作為封裝的可執(zhí)行指令。該些可W包括具有規(guī)則的操作數(shù)存儲(chǔ)器訪問(wèn)模式的可執(zhí)行指 令,諸如具有寄存器操作數(shù)的指令或W恒定或可預(yù)測(cè)的間隔訪問(wèn)存儲(chǔ)器的指令。
[0020] 在各種實(shí)施例中,向量化效益分析可W包括標(biāo)識(shí)適合于向量化的多個(gè)可執(zhí)行指令 的子集。在各種實(shí)施例中,如果指令可轉(zhuǎn)換為一個(gè)或多個(gè)SIMD指令,則例如形成基本塊的 可執(zhí)行指令的群組可W適合于向量化。各種指令集架構(gòu)("ISA")可W包括向量/SIMD指 令,包括但不限于高級(jí)向量擴(kuò)展("AVX")、AVX2和流式SIMD擴(kuò)展("SSE"),該全部經(jīng)由加利 福巧亞州圣克拉拉的Intel?公司。
[0021] 參考圖2,在各種實(shí)施例中,用于向量化效益分析的系統(tǒng)200可W包括被配置為對(duì) 多個(gè)可執(zhí)行指令的執(zhí)行進(jìn)行仿真的仿真器202。仿真器202可W包括硬件和軟件的任何組 合。各種現(xiàn)有工具可W用作仿真器202。例如,在一些實(shí)施例中,一個(gè)或多個(gè)Pin-一動(dòng)態(tài) 二進(jìn)制插粧工具和軟件開發(fā)仿真器("SDE")(二者都經(jīng)由Intel?)可W用作仿真器202。在 一些實(shí)施例中,用于分析指令跟蹤的工具,諸如化ncsim,可W用作仿真器202。該些示例并 不意味著是限制性的,并且其它工具可W用作仿真器202。
[0022] 在各種實(shí)施例中,效能評(píng)測(cè)器(profiler) 204可W被配置為監(jiān)視{A}中的可執(zhí)行 指令的執(zhí)行,并且采用各種二進(jìn)制轉(zhuǎn)化和/或編譯器技術(shù)來(lái)檢測(cè)一個(gè)或多個(gè)執(zhí)行密集點(diǎn), 也被稱為"熱點(diǎn)"或"熱區(qū)"。熱點(diǎn)可WW各種方式來(lái)標(biāo)識(shí)。在一些實(shí)施例中,熱點(diǎn)可W包 括被執(zhí)行多于計(jì)算機(jī)程序的總操作時(shí)間和/或操作周期的闊值百分比的可執(zhí)行指令的序 列和/或群組。例如,如果可執(zhí)行指令集的執(zhí)行構(gòu)成計(jì)算機(jī)程序或指令跟蹤的總周期的多 于40%,則該指令集可W被表征為熱點(diǎn)。給定較高的執(zhí)行速率,對(duì)熱點(diǎn)可執(zhí)行指令進(jìn)行向量 化的潛在效益可W大于例如對(duì)不太經(jīng)常執(zhí)行的可執(zhí)行指令進(jìn)行向量化的潛在效益。在圖1 中,指明為巧}的{A}內(nèi)的可執(zhí)行指令的子集被標(biāo)識(shí)為在(多個(gè))熱區(qū)內(nèi)。
[0023] 在各種實(shí)施例中,效能評(píng)測(cè)器204可W被配置為生成關(guān)于可執(zhí)行指令的執(zhí)行的其 它信息。例如,在各種實(shí)施例中,效能評(píng)測(cè)器204可W被配置為生成動(dòng)態(tài)分支方向簡(jiǎn)檔、動(dòng) 態(tài)存儲(chǔ)器(例如,加載/存儲(chǔ)地址)簡(jiǎn)檔、指令字節(jié)(例如,使用X86編碼器解碼器或"XED"所 解碼的)等。在各種實(shí)施例中,動(dòng)態(tài)分支方向簡(jiǎn)檔可W包括關(guān)于在{A}和/或{B}的執(zhí)行期 間遵循哪些分支的數(shù)據(jù)。在各種實(shí)施例中,動(dòng)態(tài)加載/存儲(chǔ)地址簡(jiǎn)檔可W包括關(guān)于在{A} 和/或巧}的執(zhí)行期間訪問(wèn)的存儲(chǔ)器位置的地址的數(shù)據(jù)。在各種實(shí)施例中,指令字節(jié)可W 包括關(guān)于在{A}和/或巧}的執(zhí)行期間執(zhí)行哪些操作(例如,操作碼,諸如添加、分支、減去 等)的數(shù)據(jù)。
[0024] 在各種實(shí)施例中,系統(tǒng)200可W包括分析器206,分析器206被配置為分析由效能 評(píng)測(cè)器204生成的信息。在各種實(shí)施例中,分析器206可W被配置為確定通過(guò)對(duì)多個(gè)可執(zhí) 行指令中的至少一些可執(zhí)行指令進(jìn)行向量化可W獲得的效益。作為該分析的部分,在各種 實(shí)施例中,分析器206可W被配置為標(biāo)識(shí)在圖1中被指明為忙}-巧}的群組中的一個(gè)或多 個(gè)。
[0025] 例如,在各種實(shí)施例中,分析器206可W被配置為檢測(cè)在圖1中被指明為似的一 個(gè)或多個(gè)循環(huán)中的可執(zhí)行指令。為了檢測(cè)循環(huán),在各種實(shí)施例中,分析器206可W采用諸如 構(gòu)建控制流程圖并且然后在該圖上執(zhí)行后沿檢測(cè)的技術(shù)。
[0026] 在圖3中示出了示例控制流程圖300。在該示例中,控制可W開始于被標(biāo)明為 "BB1"的指令的第一基本塊。然后,控制可W沿著路徑302向下流到被標(biāo)明為"BB6"的指令 的基本塊或者沿著路徑304向下到被標(biāo)明為"BB2"的指令的另一基本塊??刂瓶蒞沿著路 徑306向下從BB2流到被標(biāo)明為"BB3"