鏈接后優(yōu)化在龍芯上的實(shí)現(xiàn)
發(fā)布時(shí)間:2020-04-08 03:50
【摘要】: 龍芯是由中國科學(xué)院計(jì)算技術(shù)研究所自主研制開發(fā)的一個(gè)通用芯片系列。龍芯1號(hào)是其第一個(gè)產(chǎn)品。在龍芯1上運(yùn)行的是Linux系統(tǒng),使用的編譯器是GCC。GCC編譯的SPEC2000程序的性能相對(duì)同主頻的其他處理器比較差。造成這個(gè)問題的一個(gè)方面的原因是因?yàn)辇埿旧螱CC編譯器的性能不理想。為提高龍芯上程序的性能,需要為龍芯開發(fā)一個(gè)編譯優(yōu)化器。 鏈接后優(yōu)化技術(shù)是在程序鏈接完成后再對(duì)整個(gè)程序進(jìn)行優(yōu)化的一種技術(shù),它克服了傳統(tǒng)編譯優(yōu)化局限于在分析一個(gè)函數(shù)或者一個(gè)模塊的基礎(chǔ)上做優(yōu)化的缺點(diǎn),能夠?qū)旌瘮?shù)中的代碼或定義于其他已經(jīng)編譯好的模塊中的函數(shù)和調(diào)用它函數(shù)一起做優(yōu)化。國外已經(jīng)有一些鏈接后優(yōu)化器,ALTO是其中的比較成功的一個(gè)。ALTO系統(tǒng)是由美國ARIZON大學(xué)為ALPHA處理器設(shè)計(jì)的鏈接后優(yōu)化器。由于ALPHA與龍芯同樣是采用RISC結(jié)構(gòu),同樣具有較小的指令集和尋址方式,因此將ALTO作為在龍芯上實(shí)現(xiàn)鏈接后優(yōu)化器的參照。 本文從介紹在龍芯上實(shí)現(xiàn)鏈接后優(yōu)化的意義開始,隨后以ALTO為例分析了鏈接后優(yōu)化器的基本系統(tǒng)架構(gòu),并結(jié)合龍芯中ELF文件格式的知識(shí)逐步介紹了系統(tǒng)中每個(gè)模塊在龍芯上實(shí)現(xiàn)的詳細(xì)過程。分別分析了每個(gè)環(huán)節(jié)中碰到的問題,并提出了相應(yīng)的解決方法。最后對(duì)完成的系統(tǒng)系進(jìn)行了測試,并對(duì)測試結(jié)果做了分析。
【圖文】:
圖 2.1 ELF 文件結(jié)構(gòu)圖由上圖可以看出在一個(gè)目標(biāo)文件中,在文件的開始存放著一個(gè) ELF 頭,描述了該文件的組織情況。節(jié)(section)保存著目標(biāo)文件的鏈接信息:包括指令,數(shù)據(jù),符號(hào)表,重定位信息,特別的節(jié)的描述會(huì)在本章的第二部分介紹。本章的第三部分討論了段(segment)和從程序的執(zhí)行角度看文件。如果存在一個(gè)程序頭表(program header table),那么它告訴系統(tǒng)如何來創(chuàng)建一個(gè)進(jìn)程的內(nèi)存映象。被用來建立進(jìn)程映像(執(zhí)行一個(gè)程序)的文件必須要有一個(gè)程序頭表(program header table),可重定位文件不需要這個(gè)頭表。一個(gè)節(jié)頭表(section header table)描述了文件中節(jié)的信息。每個(gè)節(jié)在這個(gè)表中有一項(xiàng),每項(xiàng)都是一個(gè)節(jié)頭結(jié)構(gòu),給出了該節(jié)的名字,大小等信息。在鏈接過程中的文件必須有一個(gè)節(jié)頭表,其他文件可要可不要這個(gè)節(jié)頭表。在 Linux 中 ELF 頭的具體結(jié)構(gòu)如下所示:#define EI_NIDENT 16typedef struct {
18圖 3.1 節(jié)的識(shí)別示意圖根據(jù)上一章的介紹,如上圖所示,ELF 文件開頭存放的是 ELF 頭,先將 ELF 頭讀到一個(gè) ELF 頭(ELF32_Ehdr)結(jié)構(gòu)中。而這個(gè)結(jié)構(gòu)中的 e_shoff 表明了文件中節(jié)頭表在文件中的偏移,,e_shnum 表明節(jié)頭表中節(jié)頭的個(gè)數(shù)。按照這個(gè)偏移值將節(jié)頭表讀取到一
【學(xué)位授予單位】:中國科學(xué)院研究生院(計(jì)算技術(shù)研究所)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2004
【分類號(hào)】:TP332;TP314
本文編號(hào):2618849
【圖文】:
圖 2.1 ELF 文件結(jié)構(gòu)圖由上圖可以看出在一個(gè)目標(biāo)文件中,在文件的開始存放著一個(gè) ELF 頭,描述了該文件的組織情況。節(jié)(section)保存著目標(biāo)文件的鏈接信息:包括指令,數(shù)據(jù),符號(hào)表,重定位信息,特別的節(jié)的描述會(huì)在本章的第二部分介紹。本章的第三部分討論了段(segment)和從程序的執(zhí)行角度看文件。如果存在一個(gè)程序頭表(program header table),那么它告訴系統(tǒng)如何來創(chuàng)建一個(gè)進(jìn)程的內(nèi)存映象。被用來建立進(jìn)程映像(執(zhí)行一個(gè)程序)的文件必須要有一個(gè)程序頭表(program header table),可重定位文件不需要這個(gè)頭表。一個(gè)節(jié)頭表(section header table)描述了文件中節(jié)的信息。每個(gè)節(jié)在這個(gè)表中有一項(xiàng),每項(xiàng)都是一個(gè)節(jié)頭結(jié)構(gòu),給出了該節(jié)的名字,大小等信息。在鏈接過程中的文件必須有一個(gè)節(jié)頭表,其他文件可要可不要這個(gè)節(jié)頭表。在 Linux 中 ELF 頭的具體結(jié)構(gòu)如下所示:#define EI_NIDENT 16typedef struct {
18圖 3.1 節(jié)的識(shí)別示意圖根據(jù)上一章的介紹,如上圖所示,ELF 文件開頭存放的是 ELF 頭,先將 ELF 頭讀到一個(gè) ELF 頭(ELF32_Ehdr)結(jié)構(gòu)中。而這個(gè)結(jié)構(gòu)中的 e_shoff 表明了文件中節(jié)頭表在文件中的偏移,,e_shnum 表明節(jié)頭表中節(jié)頭的個(gè)數(shù)。按照這個(gè)偏移值將節(jié)頭表讀取到一
【學(xué)位授予單位】:中國科學(xué)院研究生院(計(jì)算技術(shù)研究所)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2004
【分類號(hào)】:TP332;TP314
【相似文獻(xiàn)】
相關(guān)碩士學(xué)位論文 前4條
1 陳瑜;龍芯2號(hào)鏈接后優(yōu)化器的實(shí)現(xiàn)與分析[D];中國科學(xué)院研究生院(計(jì)算技術(shù)研究所);2006年
2 劉玲;鏈接后優(yōu)化在龍芯上的實(shí)現(xiàn)[D];中國科學(xué)院研究生院(計(jì)算技術(shù)研究所);2004年
3 王輝;P2P VoIP中的中繼節(jié)點(diǎn)選擇算法及安全機(jī)制研究[D];北京郵電大學(xué);2011年
4 樊華;基于單次查詢的P2P應(yīng)用層流量優(yōu)化技術(shù)研究與仿真分析[D];北京郵電大學(xué);2011年
本文編號(hào):2618849
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2618849.html
最近更新
教材專著