陳紅艷
摘 要:隨著科學(xué)技術(shù)的不斷發(fā)展,如何提高軟件的使用性能逐漸成為研究人員較為關(guān)注的問題,同時也是軟建設(shè)計中的難點所在。因此,文章在問題分析的基礎(chǔ)上,通過對Intel平臺軟件性能的優(yōu)化,以Microsoft Visual C++的開發(fā)及例,對Intel處理器進行了分析,并對怎樣編寫適用特定Intel的處理器函數(shù)進行了編輯。
關(guān)鍵詞:Intel平臺 ?Visual C++ ?編譯器
中圖分類號:TP311 ? ?文獻標識碼:A 文章編號:1674-098X(2015)10(c)-0143-02
在系統(tǒng)軟件性能優(yōu)化處理的過程中,其項目的設(shè)計相對費時、而且工作的難度較大,是軟件開發(fā)高手的集聚地,使很多軟件公司中的員工望而卻步。但是,軟件性能在產(chǎn)品市場中的競爭力是否可以確定成功,都占據(jù)著十分重要的作用。由于現(xiàn)階段軟件開發(fā)的技術(shù)相對復(fù)雜,怎樣提高軟件的使用性能成為軟件工程是急需解決的問題。Intel的軟件技術(shù)中可以為開發(fā)技術(shù)提供一定的便利性,在提高操作技能的同時為程序的編輯提供科學(xué)化的依據(jù)。
1 Intel編譯器優(yōu)化程序的性能分析
對于Intel編譯器而言,優(yōu)化程序的過程中,必須在性能的分析上深入進行,否則將影響后續(xù)的應(yīng)用和開發(fā)工作。在目前,編輯器是一種非常重要的工具類型,其主要是服務(wù)于軟件技術(shù)的開發(fā)階段。一般而言,編輯器針對程序的基本性能,具有決定性的影響,其在具體的應(yīng)用過程中,能夠以最快的速度和最簡單的方法,針對程序做出有效的改變,從而更好的構(gòu)建出理想的編譯器。
隨著科學(xué)技術(shù)的不斷優(yōu)化,其功能性得到了一定的提升,對于一個性能好的編譯器可以根據(jù)其基本的特點,進行功能的自動優(yōu)化,技術(shù)開發(fā)人員也不用翻閱處理手冊,就可以得到軟件系統(tǒng)的有效開發(fā)。而Intel編譯器可以作為整個領(lǐng)域中的領(lǐng)導(dǎo)者,在現(xiàn)階段的開發(fā)和研究當中,通過選擇和應(yīng)用Intel 32位處理器,選擇應(yīng)用Intel64位處理器,在本質(zhì)上提高了編譯代碼的應(yīng)用效果,創(chuàng)造的經(jīng)濟效益和社會效益均有所提升。
2 使用Intel C++編譯器
在Intel架構(gòu)上實施軟件優(yōu)化,必須有效的使用Intel C++編譯器來完成。Intel C++編譯器主要是將高級語言,有效的翻譯為機器語言的有效程序類型。在目前的研究和應(yīng)用中,Intel C++編譯器是一個具有標準化特點,能夠與C++高度兼容的編譯環(huán)境,獲得了用戶的廣泛歡迎。同時,在使用Intel C++編譯器的過程中,可針對不同的CPU進行優(yōu)化處理,實現(xiàn)理想的效果。
在目前的Intel C++編譯器應(yīng)用當中,完全可根據(jù)用戶的需求和軟件優(yōu)化的目的,通過采取不同的手段來完成工作。例如,在操作過程中,VectorC就是比較常見的Intel C++編譯器形式,其在應(yīng)用過程中,僅僅支持純C。但是,其號稱是最快的編譯器,在很多情況下,都要強于其他的編譯器。VectorC在使用的過程中,本身具備交互式的優(yōu)化器,能夠幫助用戶,直接的觀察到C代碼對映的匯編代碼,在Intel架構(gòu)上優(yōu)化軟件時,效率和質(zhì)量均獲得了較大的保障。
Intel C++編譯器在應(yīng)用的過程中擁有很多的優(yōu)化特征,合理運用了處理器的特性以及先進性的特點,為整個技術(shù)的優(yōu)化及開發(fā)奠定了良好基礎(chǔ),在與其他軟件協(xié)調(diào)工作的同時提高了軟件的運用效率。以Microsoft Visual C++中Intel C++編譯器的應(yīng)用為例,對其開發(fā)的流程進行分析。當Intel C++編譯器在安裝結(jié)束之后,整個系統(tǒng)會自動集成到Microsoft Visual C++的環(huán)境之中,其中的Intel C++編輯器在運行的過程中可以支持Linux平臺,它的性質(zhì)與Windows的軟件功能基本相同。
3 針對于特定處理器的優(yōu)化
軟件體統(tǒng)開發(fā)及應(yīng)用的過程中,軟件技術(shù)人員系統(tǒng)通過處理器中的所有性能,就可以將程序更好的運用,逐漸提高軟件的應(yīng)用效率、編輯器在應(yīng)用的過程中是否可以支持新的處理指令以及代碼調(diào)度的基本規(guī)則,與其程序的特征有著緊密的聯(lián)系。Intel C++在應(yīng)用 的過程中可以支持行的處理指令,同時也可以充分尊重代碼調(diào)度指令,而且一些軟件在應(yīng)用的過程中只會應(yīng)用特殊的指令,例如,Pentium4處理器在后續(xù)技術(shù)操作的過程中,其單指令更多的會根據(jù)其數(shù)據(jù)流進行擴展,其中的編譯器可以在老式處理器的基礎(chǔ)上執(zhí)行相關(guān)的代碼。對于這些編譯器所輸出的程序而言,在其處理的過程中可以獲得更好的性能,為整個軟件的開發(fā)及應(yīng)用提供了系統(tǒng)性的依據(jù)。在Microsoft Visual C++ 6.0 中,這些選項可以從Microsoft Visual C++的Project Settings對話框中進行設(shè)置。
4 針對特定處理器函數(shù)的編寫分析
在Intel架構(gòu)上針對軟件進行優(yōu)化處理,需在特定處理函數(shù)的編寫上做出足夠的努力。在以往的工作中,雖然該方面有所研究,但總體上的深度不夠,促使軟件的優(yōu)化并沒有取得理想的成績。因此,在今后的工作中,必須針對特定處理器函數(shù)的編寫,做出深入的討論,需結(jié)合以往的工作成果和當下的需求來有效的完成,實現(xiàn)長久的發(fā)展。
該文認為,針對特定處理器函數(shù)的編寫工作,應(yīng)在以下幾個方面努力:首先,Intel技術(shù)的應(yīng)用過程中,為了能夠針對不同處理器本身所具有的基本性能,予以較強的滿足,建議在特定的環(huán)境下,編寫相應(yīng)的指令、函數(shù)。例如,在MMX指令內(nèi)容的編寫過程中,必須在特定的環(huán)境下才能完成,同時還要得到系統(tǒng)的支持,需要在CPU的監(jiān)測代碼下來進行指導(dǎo),否則很難得到理想的結(jié)果。其次,在調(diào)用該條指令的過程中,應(yīng)做出有效的處理,將EAX寄存器置1。最后,在指令執(zhí)行并且有效的完成后,處理器本身的信息,以及一些其他的信息,都可以在這個程序的支持下,通過利用不同的函數(shù)來選擇并完成。值得注意的是,Intel軟件的應(yīng)用過程中,比較簡單的方法是采用Intel C++的環(huán)境來進行相關(guān)的處理,有效的展現(xiàn)dispatch的具體特征,而編譯器則是在信息處理的過程中,直接生成具有高效性質(zhì)的檢測代碼,以此為處理器的具體執(zhí)行提供較多的幫助,促使函數(shù)在執(zhí)行的過程中,表現(xiàn)出簡單的特點。
5 使用SIMD指令
Intel軟件在具體的應(yīng)用過程中,SIMD指令的應(yīng)用,是非常重要的技術(shù)手段。從客觀的角度來分析,通過應(yīng)用SIMD指令,能夠促使程序的一些基本性能,獲得較大的提升,為用戶提供更加方便的操作和更好的應(yīng)用效果。但對于C語言或者是C++語言來講,其本身并沒有對方法進行系統(tǒng)性的應(yīng)用,總體上還是有待提升的。
在以往技術(shù)操作的過程中,知識通過手繪語言的編寫方式執(zhí)行SIMD的指令,這種技術(shù)主要是額外的技術(shù)開發(fā)形式,知識對整個程序起到了調(diào)試及維護的作用。相對而言,在指令的具體處理過程當中,Intel架構(gòu)的基礎(chǔ)上,有效利用C++編譯器,能夠較好的在C語言或者是C++語言當中,針對SIMD指令,給予較大的支持,促使整體的程序在應(yīng)用過程中,充分達到簡便的特點,創(chuàng)造出更大的價值。其指令可以分析以下幾點。
5.1 Automatic Vectorzation
對于Automatic Vectorzation而言,其主要是一種自動向量化的技術(shù),該技術(shù)在執(zhí)行過程中,主要的目的是自動使用SIMD指示的功能。從已經(jīng)掌握的方法和技術(shù)來看,Automatic Vectorzation主要是通過三種方法來完成操作的。首先,傳統(tǒng)方法。以往針對Intel架構(gòu)和軟件優(yōu)化的研究并不是特別深入,因此,Automatic Vectorzation的傳統(tǒng)方法受到了高度的重視。傳統(tǒng)方法,主要是針對語句的依賴關(guān)系進行分析,之后會結(jié)合循環(huán)分布技術(shù)、結(jié)合循環(huán)交換技術(shù),促使內(nèi)層循環(huán)的語句完成向量的有效執(zhí)行。其次,指令級并行。Automatic Vectorzation在獲得優(yōu)化后,指令級并行是應(yīng)用比較廣泛的超字并行,通過系列的操作,有效生成向量化的代碼。最后,模式匹配。Automatic Vectorzation為了進一步滿足用戶的需求,研究了模式匹配的引用方法,其在操作過程中,會按照既定的多種模式,在語句生成樹的模式匹配方法上,產(chǎn)生有效的操作擴展命令,進而完成相關(guān)的操作和處理。
在Intel架構(gòu)當中,Automatic Vectorzation是一種比較常見的處理方式,該處理方式在應(yīng)用過程中表現(xiàn)出了較大的積極意義。相對于其他的處理方式而言,利用Automatic Vectorzation以后,能夠促使Intel C++編譯器可以更好的應(yīng)用,尤其是在合理分析程序、合理執(zhí)行循環(huán)指令等方面,均具有突出的表現(xiàn)。另外,在實際的操作和應(yīng)用當中,Automatic Vectorzation能夠指導(dǎo)一些相關(guān)的選項,將具體的內(nèi)容,有效的通知給編譯器,以此來確保SIMD指令在應(yīng)用過程中,表現(xiàn)為安全的狀態(tài)。
5.2 支持SIMD 的C++類庫
Intel架構(gòu)的基礎(chǔ)上,軟件優(yōu)化是必須要執(zhí)行的措施和手段,只有將軟件不斷的進行優(yōu)化處理,才能確保日后的軟件使用獲得較大的價值提升。為此,在具體的研究過程中發(fā)現(xiàn),倘若在SIMD指令的使用過程中,能夠有效的支持C++類庫,勢必能夠?qū)θ粘5墓ぷ髯龀龈蟮呢暙I。就目前的研究而言,Intel C++編譯器的使用,其本身就包含了SIMD的數(shù)據(jù)類型,通過相關(guān)技術(shù)的應(yīng)用,能夠針對數(shù)據(jù)進行相應(yīng)的代碼控制。例如,在數(shù)據(jù)類型的變量分析過程中,通過增加適量的數(shù)據(jù)處理元素,能夠在本質(zhì)上,更好的減少程序循環(huán)的次數(shù),實現(xiàn)高效的運作,為日后的發(fā)展和工作提供較強的基礎(chǔ)。
5.3 Intrinsics
在Intel架構(gòu)上,開展軟件優(yōu)化的研究,Intrinsics是一項不可或缺的重要內(nèi)容。從客觀的工作來分析,Intel C++編譯器在應(yīng)用的過程中,針對Intrinsics函數(shù),會予以有效的支持。另外,通過對SIMD指令的有效執(zhí)行,實現(xiàn)更好的程序匯編效果。
6 結(jié)語
總而言之,文章通過對Intel C++編譯器使用程序的優(yōu)化分析,為其技術(shù)的優(yōu)化以及編程的優(yōu)化進行了系統(tǒng)性的分析,對于上述項目可以幫助程序開發(fā),及時發(fā)現(xiàn)程序出現(xiàn)的問題并對其進行修補。只有在程序需要調(diào)控的情況下,才可以為編譯器的優(yōu)化提供科學(xué)化的依據(jù),為其技術(shù)的應(yīng)用及優(yōu)化奠定良好的基礎(chǔ)。
參考文獻
[1] 深入理解C++11:C++ 11新特性解析與應(yīng)用[M].機械工業(yè)出版社,2013.
[2] (美)費希爾.編譯器構(gòu)造:C語言描述:英文版[Z].2005.