版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第 14 章章 x86系列微處理器的系列微處理器的發(fā)展發(fā)展本章介紹:14.1 AMD x86-64處理器14.2 Intel Itanium處理器14.3 x86系列的嵌入式處理器64位微處理器與嵌入式應(yīng)用,是x86系列微處理器的兩個(gè)重要的發(fā)展方向。十多億臺(tái)微型計(jì)算機(jī),使計(jì)算機(jī)的應(yīng)用已經(jīng)滲透和深入至政治、經(jīng)濟(jì)、科學(xué)技術(shù)、社會(huì)生活和人們?nèi)粘I畹母鱾€(gè)方面。網(wǎng)絡(luò)時(shí)代的來(lái)臨、多媒體信息的數(shù)字化等等,都使信息爆炸般增長(zhǎng)。信息的存儲(chǔ)、處理、交換,強(qiáng)烈地需求和促進(jìn)微處理器向64位時(shí)代過(guò)渡。 隨著Internet及其各種新的應(yīng)用如電子商務(wù)的發(fā)展,企業(yè)的信息量不斷增加,每年增長(zhǎng)16倍,這使得企業(yè)對(duì)數(shù)據(jù)存儲(chǔ)的
2、需求急劇增長(zhǎng)。調(diào)查顯示全球每年存儲(chǔ)設(shè)備約增長(zhǎng)110倍(對(duì)應(yīng)于不同的應(yīng)用環(huán)境),并成為計(jì)算機(jī)硬件系統(tǒng)購(gòu)買成本中占比例最大的部分。 數(shù)據(jù)已成為最寶貴的財(cái)富 數(shù)據(jù)是信息的符號(hào),數(shù)據(jù)的價(jià)值取決于信息的價(jià)值。由于越來(lái)越多的有價(jià)值的關(guān)鍵信息轉(zhuǎn)變?yōu)閿?shù)據(jù),數(shù)據(jù)的價(jià)值也就越來(lái)越高。對(duì)于很多行業(yè)甚至個(gè)人而言,保存在存儲(chǔ)系統(tǒng)中的數(shù)據(jù)是最為寶貴的財(cái)富。在很多情況下,數(shù)據(jù)要比計(jì)算機(jī)系統(tǒng)設(shè)備本身的價(jià)值高得多,尤其對(duì)金融、電信、商業(yè)、社保和軍事等部門來(lái)說(shuō)更是如此。設(shè)備壞了可以花錢再買,而數(shù)據(jù)丟失了對(duì)于企業(yè)來(lái)講,損失將是無(wú)法估量的,甚至是毀滅性的。因此,信息存儲(chǔ)系統(tǒng)的可靠性和可用性、數(shù)據(jù)備份和災(zāi)難恢復(fù)能力往往是企業(yè)用戶首先要
3、考慮的問(wèn)題。為防止地震、火災(zāi)和戰(zhàn)爭(zhēng)等重大事件對(duì)數(shù)據(jù)的毀壞,關(guān)鍵數(shù)據(jù)還要考慮異地備份和容災(zāi)問(wèn)題。 微處理器是現(xiàn)代計(jì)算機(jī)系統(tǒng)核心和引擎,它不僅提供計(jì)算機(jī)系統(tǒng)所需的處理能力,而且能夠管理緩存、內(nèi)存和互聯(lián)子系統(tǒng)、支持整個(gè)系統(tǒng)實(shí)現(xiàn)多處理器并行計(jì)算。 海量的信息,信息的存儲(chǔ)、處理和交換,都需要微處理器有更強(qiáng)大的能力,處理器從32位向64位過(guò)渡已經(jīng)是歷史的必然,微處理器已經(jīng)進(jìn)入了64位時(shí)代。64位的x86系列微處理器主要有兩種:Intel公司的Itanium處理器。AMD公司的x86-64處理器。14.1 AMD x86-64處理器處理器14.1.1 引言 AMD x86-64 體系結(jié)構(gòu)是簡(jiǎn)單的,然而它是與
4、工業(yè)標(biāo)準(zhǔn)(傳統(tǒng)的)x86體系結(jié)構(gòu)后向兼容的強(qiáng)有力的64位擴(kuò)展。它增加了64位尋址和擴(kuò)展了寄存器資源,已存在的傳統(tǒng)的 x86 體系結(jié)構(gòu)的16位和32位應(yīng)用程序和操作系統(tǒng)不需修改或重編譯就能在 x86-64體系結(jié)構(gòu)下運(yùn)行。對(duì)于重新編譯的 64 位程序可提供更高的性能。這是一種這樣的體系結(jié)構(gòu),它對(duì)于大量已存在的軟件和要求更高性能的新的64位應(yīng)用軟件兩者能提供無(wú)縫的高性能支持的處理器。 64 位 x86-64 體系結(jié)構(gòu)的需要是由例如高性能服務(wù)器、數(shù)據(jù)庫(kù)管理系統(tǒng)和CAD工具等的應(yīng)用程序,要求大型和高精度數(shù)據(jù)和大的虛擬和物理存儲(chǔ)器的地址范圍引出的。同時(shí)它們也從64位地址和增加的寄存器數(shù)得到好處。在傳統(tǒng)的
5、x86 體系結(jié)構(gòu)中可用的寄存器數(shù)少,在強(qiáng)計(jì)算的應(yīng)用程序中限制了其性能。寄存器數(shù)的增加對(duì)許多這樣的應(yīng)用程序提供了性能推進(jìn)。 1. 新功能新功能 x86-64 體系結(jié)構(gòu)引進(jìn)了以下新功能: 寄存器擴(kuò)展,如圖 14-1所示: - 8 個(gè)新通用寄存器 (GPR)。 - 所有 16個(gè) GPR 是 64 位寬。 - 8 個(gè)新 128位 XMM 寄存器。 - 為所有 GPR 可尋址的統(tǒng)一字節(jié)寄存器。 - 一新指令前綴 (REX) 可訪問(wèn)所有擴(kuò)展的寄存器。 長(zhǎng)模式,如表 14-1 所示: - 虛擬地址增至 64 位。 - 64 位指令指針(RIP)。 - 新的指令指針數(shù)據(jù)相對(duì)尋址模式。 - 平面的(不分段的)地
6、址空間。2. 寄存器寄存器表 14-2比較不同操作模式對(duì)應(yīng)用程序軟件可用的寄存器和堆棧資源。左邊的列顯示傳統(tǒng) x86 資源,它可用在 x86-64 體系結(jié)構(gòu)的傳統(tǒng)的和兼容的模式。右邊列顯示在 64 位模式可比較的資源?;谊幱爸甘驹谀J街g的不同。這些寄存器的不同(不包括堆棧寬度的不同)表示在圖 14-1 中顯示的寄存器擴(kuò)展中。 如表 14-2 所示,傳統(tǒng)的 x86 體系結(jié)構(gòu)(在 x86-64 體系結(jié)構(gòu)中稱為傳統(tǒng)模式)支持 8 個(gè) GPR。然而,在實(shí)際上至少四個(gè)寄存器(EBP、ESI、EDI 和 ESP)的通用性是折衷的,因?yàn)楫?dāng)執(zhí)行許多指令時(shí),他們是作為特殊目的寄存器使用。x86-64 體系結(jié)構(gòu)
7、增加的 8 個(gè)新 GPR和這些寄存器的寬度從32位增至64位允許編譯者充分地改進(jìn)軟件性能。在用寄存器保持變量上,編譯者有更大的靈活性。編譯者由在 GPR 寄存器內(nèi)工作也能使內(nèi)存開(kāi)銷最小化因此推進(jìn)了性能。3. 指令集指令集x86-64 體系結(jié)構(gòu)支持全部傳統(tǒng) x86 指令集,并增加了一些新的指令以支持長(zhǎng)模式(關(guān)于操作模式的小結(jié)見(jiàn)表 14-1)。應(yīng)用程序編程指令在以下子節(jié)中分組并描述: 通用指令(General-Purpose Instructions)這些是基本的 x86 整數(shù)指令,事實(shí)上在所有程序中都用。大多數(shù)這些指令裝入、存儲(chǔ)或操作存放在通用寄存器(GPR)或內(nèi)存中的數(shù)據(jù)。某些指令由分支至其他
8、程序單元以改變程序的順序流。 128-位媒體指令這些是 流 SIMD extension (SSE 和 SSE2) 指令,它們裝入、存儲(chǔ)或操作主要定位在 128 位 XMM 寄存器中的數(shù)據(jù)。它們對(duì)向量(組合的)和標(biāo)量數(shù)據(jù)類型執(zhí)行整數(shù)和浮點(diǎn)操作。因?yàn)橄蛄恐噶钅茉跀?shù)據(jù)的多個(gè)集上獨(dú)立地和并行地執(zhí)行單個(gè)操作,因而它們被稱為單指令多數(shù)據(jù)(SIMD)指令。它們對(duì)于在數(shù)據(jù)塊上操作的高性能多媒體和科學(xué)的應(yīng)用程序是有用的。 64-位媒體指令這些是多媒體擴(kuò)展(multimedia extension (MMX 技術(shù)))和 AMD 3DNow! 技術(shù)指令。它們裝入、存儲(chǔ)和操作主要定位在 64 位 MMX 寄存器中的
9、數(shù)據(jù)。像上面描述的 128 位數(shù)據(jù),它們?cè)谙蛄浚ńM合的)和標(biāo)量數(shù)據(jù)類型上執(zhí)行整數(shù)和浮點(diǎn)運(yùn)算。因此,它們也是 SIMD 指令,對(duì)于在數(shù)據(jù)塊上操作的多媒體應(yīng)用程序是有用的。 x87 浮點(diǎn)指令這些是在傳統(tǒng)的 x87 應(yīng)用程序中使用的浮點(diǎn)指令。它們裝入、存儲(chǔ)和操作定位在 x87 寄存器中的數(shù)據(jù)。這些應(yīng)用程序編程指令的某些跨兩個(gè)或多個(gè)上述指令集。例如,有在通用寄存器和 XMM 或 MMX 寄存器之間傳送數(shù)據(jù)的指令。許多整型向量(組合的)指令能在 XMM 或 MMX 寄存器上操作,雖然不是同時(shí)。若指令跨兩個(gè)或多個(gè)子集,他們的描述在應(yīng)用它們的子集中重復(fù)。4. 媒體指令媒體指令多媒體應(yīng)用程序例如圖像處理、音樂(lè)
10、合成、語(yǔ)音識(shí)別、全運(yùn)動(dòng)視頻和3D 圖形透視共享一定的功能: 他們處理大量的數(shù)據(jù)。 他們跨越數(shù)據(jù)常常重復(fù)執(zhí)行相同的操作序列。 數(shù)據(jù)常常用小的量表示,例如,對(duì)于像素值是 8 位,對(duì)于音頻采樣是 16 位和對(duì)于以浮點(diǎn)格式表示的對(duì)象是 32 位。 128 位和 64 位媒體指令的設(shè)計(jì)為加速這些應(yīng)用程序。指令用于已知的單指令多數(shù)據(jù)(SIMD)處理,用于向量(組合的)的并行處理。這樣的向量技術(shù)有以下功能: 單個(gè)寄存器能保持?jǐn)?shù)據(jù)的多個(gè)獨(dú)立片。例如,一單個(gè)128 位 XMM 寄存器能保持 16 個(gè) 8 位整型數(shù)據(jù)元素或四個(gè) 32 位單精度浮點(diǎn)數(shù)據(jù)元素。 向量指令能在一個(gè)寄存器中的所有數(shù)據(jù)元素上獨(dú)立地和同時(shí)操作
11、。例如,在 128 位 XMM 寄存器的兩個(gè)向量操作數(shù)的字節(jié)元素上操作的一 PADDB 指令執(zhí)行 16 個(gè)同時(shí)的加法并返回單個(gè)操作內(nèi)的 16 個(gè)獨(dú)立的結(jié)果。 128 位和 64 位媒體指令用 SIMD 向量技術(shù),進(jìn)一步跟隨由包括在多媒體應(yīng)用程序中找到的公共的操作的特殊指令。例如,一圖形應(yīng)用程序,它加兩個(gè)像素的亮度值,必須防止若結(jié)果使目的寄存器溢出而環(huán)繞至小的值。因?yàn)橐灰绯龅慕Y(jié)果能產(chǎn)生不可預(yù)料的影響,例如預(yù)料是亮的,但結(jié)果是暗的像素。128 位和 64 位多媒體指令包括飽和算術(shù)運(yùn)算指令以簡(jiǎn)化這種類型的運(yùn)算。代替由于上溢或下溢導(dǎo)致的圍繞,迫使飽和至目的寄存器能表示的最大或最小值。 5. 浮點(diǎn)指令浮
12、點(diǎn)指令x86-64 體系結(jié)構(gòu)用三種不同的寄存器集提供三個(gè)浮點(diǎn)指令子集: 128-位媒體指令 除了整數(shù)運(yùn)算外,支持 32 位單精度和 64 位雙精度浮點(diǎn)操作。同時(shí)支持在向量和標(biāo)量數(shù)據(jù)上的運(yùn)算,具有一專門的浮點(diǎn)異常報(bào)告機(jī)制。這些浮點(diǎn)運(yùn)算遵循 IEEE-754 標(biāo)準(zhǔn)。 64-位媒體指令 ( 3DNow! 技術(shù)指令的子集) 支持單精度浮點(diǎn)運(yùn)算。同時(shí)支持在向量和標(biāo)量數(shù)據(jù)上的運(yùn)算,但這些指令不支持報(bào)告浮點(diǎn)異常。 x87 浮點(diǎn)指令 支持單精度、雙精度和 80 位擴(kuò)展精度浮點(diǎn)指令運(yùn)算。只支持標(biāo)量數(shù)據(jù),帶有專門的浮點(diǎn)異常報(bào)告機(jī)制。x87 浮點(diǎn)指令包含執(zhí)行三角函數(shù)、對(duì)數(shù)和超越函數(shù)運(yùn)算的特殊指令。單精度和雙精度浮點(diǎn)
13、運(yùn)算遵循 IEEE-754 標(biāo)準(zhǔn)。 用 128 位媒體指令能達(dá)到最高的浮點(diǎn)運(yùn)算性能。一條這樣的向量指令能支持多至四個(gè)單精度(或兩個(gè)雙精度)運(yùn)算并行執(zhí)行。在 64 位模式, x86-64 體系結(jié)構(gòu)提供雙倍于傳統(tǒng)的 XMM 寄存器數(shù),從 8 個(gè)增至 16 個(gè)。用 64 位媒體和 x87 指令,應(yīng)用程序能得到附加的好處。由這些指令支持的分別的寄存器集減輕了可用于 128 位媒體指令對(duì) XMM 寄存器的壓力。這向應(yīng)用程序提供了三個(gè)不同的浮點(diǎn)寄存器集。此外,x86-64 體系結(jié)構(gòu)的某些高端實(shí)現(xiàn)用分別的執(zhí)行單元可以分別執(zhí)行 128 位媒體、64 位媒體和 x87 指令。 14.1.2 操作模式操作模式1.
14、 長(zhǎng)模式長(zhǎng)模式 長(zhǎng)模式是傳統(tǒng)的保護(hù)模式的擴(kuò)展。長(zhǎng)模式由兩個(gè)子模式:64 位 模式 和兼容模式(compatibility mode) 組成。 64 位模式支持 x86-64 體系結(jié)構(gòu)的所有新功能和寄存器擴(kuò)展。兼容模式支持與已存在的 16 位和 32 位應(yīng)用程序兼容。長(zhǎng)模式不支持傳統(tǒng)的實(shí)模式或虛擬 8086 模式也不支持硬件任務(wù)切換。2. 64 位模式位模式64 位模式長(zhǎng)模式的一個(gè)子模式支持 64 位虛擬尋址和寄存器擴(kuò)展功能的全部范圍。此模式在一分別的碼段基礎(chǔ)上啟用。因?yàn)?64 位模式支持 64 位虛擬地址空間,它要求一新的 64 位操作系統(tǒng)和工具鏈。已存在應(yīng)用程序二進(jìn)制碼能在兼容模式、在運(yùn)行在
15、 64 位模式中的操作系統(tǒng)下運(yùn)行而不需重編譯,或應(yīng)用程序也能重編譯以運(yùn)行在 64 位模式。尋址功能包括一 64 位指令指針(RIP)和一新的 RIP 相對(duì)數(shù)據(jù)尋址模式。此模式由于只支持平面地址空間,具有單個(gè)碼、數(shù)據(jù)和堆棧空間,從而適應(yīng)現(xiàn)代操作系統(tǒng)。(1) 寄存器擴(kuò)展寄存器擴(kuò)展 64 位模式通過(guò)一組新的稱為 REX 前綴的指令前綴實(shí)現(xiàn)寄存器擴(kuò)展。這些擴(kuò)展增加了八個(gè) GPR (R8R15)并使所有 GPR 寬度為 64 位,和增加了八個(gè) 128 位 XMM 寄存器 (XMM8XMM15)。(2) 64位地址和操作數(shù)位地址和操作數(shù)在 64 位模式,默認(rèn)的虛擬地址長(zhǎng)度是 64 位(實(shí)現(xiàn)可以用較少的位)
16、。對(duì)于大多整指令,默認(rèn)的操作數(shù)規(guī)模是 32 位。對(duì)于大多數(shù)指令,這些默認(rèn)能用指令前綴在每個(gè)指令的基礎(chǔ)上超越。REX 前綴規(guī)定 64 位操作數(shù)規(guī)模和新的寄存器。(3) RIP-相對(duì)數(shù)據(jù)尋址相對(duì)數(shù)據(jù)尋址64 模式支持相對(duì)于 64 位指令指針(RIP)的數(shù)據(jù)尋址。傳統(tǒng)的 x86 體系結(jié)構(gòu)支持 IP 相對(duì)尋址,這只適用于控制傳送指令。RIP 相對(duì)尋址改進(jìn)了位置獨(dú)立碼和尋址全局?jǐn)?shù)據(jù)碼的效率。(4) 操作碼操作碼少數(shù)指令操作碼和前綴字節(jié)是重定義的以允許寄存器擴(kuò)展和 64 位尋址。 3. 兼容模式兼容模式兼容模式長(zhǎng)模式的第二種子模式允許 64 位操作系統(tǒng)運(yùn)行現(xiàn)存的 16 位和 32 位 x86 應(yīng)用程序。這
17、些傳統(tǒng)的應(yīng)用程序在兼容模式運(yùn)行,不需要再編譯。運(yùn)行在兼容模式的應(yīng)用程序用 32 位或 16 位尋址并能訪問(wèn)虛擬地址空間的前 4GB。傳統(tǒng)的 x86 指令前綴在 16 位和 32 位地址和操作數(shù)規(guī)模之間切摸。 與 64 位模式一樣,兼容模式由操作系統(tǒng)在單個(gè)碼段的基礎(chǔ)上啟用。然而,不像 64 位模式, x86 段功能與在傳統(tǒng) x86 體系結(jié)構(gòu)相同,用 16 位和 32 位保護(hù)模式語(yǔ)義。從應(yīng)用程序的角度,兼容模式看上去像傳統(tǒng)的 x86 保護(hù)模式環(huán)境。然而,從操作系統(tǒng)觀點(diǎn),地址轉(zhuǎn)換、中斷和異常處理和系統(tǒng)數(shù)據(jù)結(jié)構(gòu)用 64 位長(zhǎng)模式機(jī)制。4. 傳統(tǒng)模式傳統(tǒng)模式傳統(tǒng)模式不只與已存在的 16 位和 32 位應(yīng)
18、用程序而且與已存在的 16 位和 32 位操作系統(tǒng)保持二進(jìn)制兼容。傳統(tǒng)模式由以下三個(gè)子模式組成: 保護(hù)模式(Protected Mode)保護(hù)模式支持 16 位和 32 位程序,具有內(nèi)存分段、任選的分頁(yè)和特權(quán)核查。運(yùn)行在保護(hù)模式的程序能訪問(wèn) 4GB 內(nèi)存空間。 虛擬-8086模式(Virtual-8086 Mode)虛擬8086 模式支持 16 位實(shí)模式程序作為保護(hù)模式的任務(wù)運(yùn)行。它用一簡(jiǎn)單形式的內(nèi)存段、任選的分頁(yè)和有限的特權(quán)核查。在虛擬 8086 模式運(yùn)行的程序能訪問(wèn)內(nèi)存空間的 1MB 。 實(shí)模式(Real Mode)實(shí)模式用簡(jiǎn)單的基于寄存器的內(nèi)存段支持 16 位程序。它不支持分頁(yè)或保護(hù)核查
19、。在實(shí)模式運(yùn)行的程序能訪問(wèn)內(nèi)存空間的 1MB。傳統(tǒng)模式與 x86 體系結(jié)構(gòu)的現(xiàn)存的32位處理器實(shí)現(xiàn)兼容。實(shí)現(xiàn) x86-64 體系結(jié)構(gòu)的處理器引導(dǎo)至傳統(tǒng)實(shí)模式,就像實(shí)現(xiàn)傳統(tǒng) x86 體系結(jié)構(gòu)的處理器那樣。 在本書(shū)中,涉及傳統(tǒng)模式就涉及全部三種子模式保護(hù)模式、虛假-8086模式 和 實(shí)模式。若一函數(shù)特定于這些子模式中的某一個(gè),于是用特定的子模式名代替?zhèn)鹘y(tǒng)模式名。 14.2 Intel Itanium處理器處理器Intel Itanium是Intel公司在Intel 32位體系結(jié)構(gòu)(IA-32)處理器的基礎(chǔ)上推出的64位體系結(jié)構(gòu)的處理器系列。Intel Itanium體系結(jié)構(gòu)是顯式并行、預(yù)測(cè)、推斷和
20、更多的創(chuàng)新的特性的極好的組合。此體系結(jié)構(gòu)設(shè)計(jì)高度的可伸縮性將填補(bǔ)各種服務(wù)器和工作站的不斷增長(zhǎng)的性能需求。Itanium體系結(jié)構(gòu)是一種64位指令集體系結(jié)構(gòu)(ISA-Instruction Set Architecture),它應(yīng)用了稱為EPIC-Explicity Parallel Instructure Computing(顯式并行指令計(jì)算)的新的處理器體系結(jié)構(gòu)技術(shù)。Itanium體系結(jié)構(gòu)的一個(gè)關(guān)鍵特性是與IA-32指令集兼容。本章概要描述Intel Itanium的特點(diǎn)。 14.2.1 Intel Itanium 體系結(jié)構(gòu)介紹體系結(jié)構(gòu)介紹Itanium體系結(jié)構(gòu)設(shè)計(jì)是為了克服傳統(tǒng)的體系結(jié)構(gòu)的性
21、能限制并為將來(lái)提供最大的發(fā)展空間。為此,Itanium體系結(jié)構(gòu)用創(chuàng)新的特性組設(shè)計(jì)以吸取更大的指令級(jí)平行,包括猜測(cè)、預(yù)測(cè)、大寄存器文件、寄存器堆棧、先進(jìn)的分支體系結(jié)構(gòu)和許多其他的特性。64位存儲(chǔ)器尋址能力以滿足數(shù)據(jù)倉(cāng)庫(kù)、電子商務(wù)和其他高性能服務(wù)器的增大的存儲(chǔ)器空間的需求。 Itanium有創(chuàng)新的浮點(diǎn)體系結(jié)構(gòu)和其他增強(qiáng)以支持工作站應(yīng)用程序例如數(shù)字內(nèi)容創(chuàng)建、設(shè)計(jì)工程和科學(xué)分析的高性能需求。Itanium體系結(jié)構(gòu)也提供與IA-32指令集的兼容?;贗tanium體系結(jié)構(gòu)的處理器在支持IA-32應(yīng)用程序執(zhí)行的基于Itanium的操作系統(tǒng)上能運(yùn)行IA-32應(yīng)用程序。若系統(tǒng)中存在平臺(tái)和固件支持,這樣的處理器
22、能運(yùn)行IA-32繼承的操作系統(tǒng)上的IA-32二進(jìn)制代碼。1. 操作環(huán)境操作環(huán)境Itanium體系結(jié)構(gòu)支持兩種操作系統(tǒng)環(huán)境: IA-32系統(tǒng)環(huán)境:支持IA-32 32位操作系統(tǒng)。 Itanium系統(tǒng)環(huán)境:支持基于Itanium操作系統(tǒng)。Itanium體系結(jié)構(gòu)也支持在單個(gè)基于Itanium操作系統(tǒng)中IA-32和基于Itanium應(yīng)用程序的混合。如圖 14-2 所示。2. 指令集轉(zhuǎn)換模型概要指令集轉(zhuǎn)換模型概要在Itanium系統(tǒng)環(huán)境中,處理器在任何時(shí)候能執(zhí)行IA-32或Itanium指令。為在IA-32和Itanium指令集之間轉(zhuǎn)換,定義了三條特定的指令和中斷。 jmpe(IA-32指令)跳轉(zhuǎn)至It
23、anium目標(biāo)指令并轉(zhuǎn)換至Itanium指令集。 br.ia(Itanium指令)分支至IA-32目標(biāo)指令,并改變指令集至IA-32。 rfi(Itanium指令)“從中斷返回”定義返回至IA-32或Itanium指令。 對(duì)于所有的中斷條件,中斷轉(zhuǎn)換處理器至Itanium指令集。Jmpe和br.ia提供一種低開(kāi)銷的機(jī)制以使控制在指令集之間轉(zhuǎn)換。這些指令典型地結(jié)合至“堆(thunks)”或“樁(stubs)”中,它們是實(shí)現(xiàn)所要求的調(diào)用連接和調(diào)用約定以調(diào)用動(dòng)態(tài)的或靜態(tài)的連接庫(kù)。 3. Intel Itanium 指令集特性指令集特性Itanium體系結(jié)構(gòu)基于以下原則: 顯式并行 在編譯器和處理器之
24、間的協(xié)同機(jī)制 取指令級(jí)并行的優(yōu)點(diǎn)的重大的資源 128個(gè)整型和浮點(diǎn)寄存器,64個(gè)1位預(yù)測(cè)寄存器,8個(gè)分支寄存器 支持多執(zhí)行單元和存儲(chǔ)器端口 增強(qiáng)指令級(jí)并行的特性 猜測(cè)(它使存儲(chǔ)器潛在影響最?。?預(yù)測(cè)(它刪除分支)。 具有低開(kāi)銷的循環(huán)的軟件流水線 分支預(yù)測(cè)使分支成本最小 集中的增強(qiáng)以改善軟件性能 軟件模塊化的特殊的支持 高性能浮點(diǎn)體系結(jié)構(gòu) 特殊的多媒體指令4. 指令級(jí)并行指令級(jí)并行指令級(jí)并行(ILP)是同時(shí)執(zhí)行多條指令的能力。為了并行執(zhí)行,Itanium允許獨(dú)立指令以集束(每集束三條指令)發(fā)出和每個(gè)時(shí)鐘發(fā)出多個(gè)集束。由大量的并行資源,例如大寄存器文件和多執(zhí)行單元的支持,Itanium體系結(jié)構(gòu)允許
25、編譯器管理工作進(jìn)行和調(diào)度多線程同時(shí)運(yùn)算。Itanium體系結(jié)構(gòu)合并有ILP優(yōu)點(diǎn)的機(jī)制。對(duì)于傳統(tǒng)體系結(jié)構(gòu)的編譯器常常限制于利用猜測(cè)信息的能力,因?yàn)樗荒鼙WC這些信息始終是正確的。Itanium體系結(jié)構(gòu)允許編譯器利用猜測(cè)信息而不犧牲應(yīng)用程序的正確執(zhí)行(見(jiàn)“猜測(cè)”)。在傳統(tǒng)體系結(jié)構(gòu)中,過(guò)程調(diào)用限制性能,因?yàn)榧拇嫫餍枰鞒龊吞钊?。Itanium體系結(jié)構(gòu)允許過(guò)程就寄存器的使用與處理器通信。這允許處理器甚至在低程度的ILP下調(diào)度過(guò)程寄存器操作。見(jiàn)“寄存器堆?!薄?5. 編譯器至處理器通信編譯器至處理器通信編譯程序與處理器的通信:Itanium體系結(jié)構(gòu)提供指令模版、轉(zhuǎn)移暗示和緩存暗示等機(jī)制,使編譯程序能夠把
26、編譯時(shí)的信息傳遞給處理器。此外,它允許編譯出的程序使用運(yùn)行時(shí)信息來(lái)管理處理器硬件,這一通信機(jī)制是最大限度地減少轉(zhuǎn)移開(kāi)銷和緩存不命中懲罰的關(guān)鍵:通過(guò)允許目標(biāo)程序在實(shí)際轉(zhuǎn)移前把有關(guān)該轉(zhuǎn)移的信息傳送給硬件,能夠大大減少轉(zhuǎn)移的開(kāi)銷;在Itanium體系結(jié)構(gòu)中每個(gè)內(nèi)存裝入和存儲(chǔ)指令有一個(gè)2位的緩存提示字段,編譯程序把對(duì)所訪問(wèn)的內(nèi)存區(qū)域空間位置的預(yù)測(cè)信息置入其中。IPF系列的處理器可以使用這一信息來(lái)確定所訪問(wèn)的內(nèi)存區(qū)域?qū)?yīng)緩存區(qū)域在緩存層次結(jié)構(gòu)中的位置,以提高緩存的利用效率。這一機(jī)制能夠大大減少緩存不命中懲罰;由允許代碼把分支信息在實(shí)際分支進(jìn)行中通信至硬件,使分支成本最小化。 6 猜測(cè)猜測(cè)猜測(cè)機(jī)制:IA-
27、64中有兩類猜測(cè)機(jī)制:控制猜測(cè)和數(shù)據(jù)猜測(cè)。其目的都是通過(guò)提前發(fā)送操作、從關(guān)鍵路徑中消除它的延遲,使編譯程序能夠提高指令級(jí)并行度(ILP)、最大限度地減少內(nèi)存延遲的影響。若有理由確信猜測(cè)是有益的,編譯器將發(fā)出猜測(cè)操作。要有益,宜保持兩個(gè)條件:(1)必須足夠頻繁(統(tǒng)計(jì)地)以至要求恢復(fù)的可能性很小,和(2)早一點(diǎn)發(fā)出操作宜進(jìn)一步顯示ILP增強(qiáng)優(yōu)化。對(duì)于編譯器由重疊利用統(tǒng)計(jì)的ILP,猜測(cè)是一種主要機(jī)制,因此容忍操作的延遲。(1) 控制猜測(cè)控制猜測(cè)控制猜測(cè)是指編譯程序把指令移動(dòng)到轉(zhuǎn)移指令的前面執(zhí)行。這允許提前執(zhí)行程序內(nèi)不命中緩存的裝入指令等延遲長(zhǎng)的操作、提高程序的執(zhí)行效率。但是,當(dāng)把指令移動(dòng)到轉(zhuǎn)移前時(shí),
28、可能會(huì)執(zhí)行本來(lái)不應(yīng)執(zhí)行的指令,編譯程序必須避免由此產(chǎn)生的副作用。為了解決這一問(wèn)題,IA-64引入了兩條新的指令:一條是猜測(cè)裝入(sload),另一條是猜測(cè)檢查(scheck)。當(dāng)出現(xiàn)一個(gè)意外條件時(shí),猜測(cè)裝入將把檢查寄存器的第65位置位,并對(duì)意外置之不理。猜測(cè)檢查指令檢查寄存器的第65位,如果置位,則發(fā)出意外信號(hào)。這允許把意外條件延遲到控制到達(dá)裝入指令原來(lái)所在塊時(shí)才加以處理,如果控制不到達(dá)該塊,則永遠(yuǎn)不加以處理,從而避免執(zhí)行不該執(zhí)行的指令。例如,對(duì)如下的條件語(yǔ)句: if (ab) load(ld_addr1,target1) else load(ld_addr2,target2) 由于編譯時(shí)不可
29、能知道a與b哪個(gè)大,如果提前執(zhí)行兩條load指令(即執(zhí)行線路猜測(cè)),雖然能夠得到減少延遲的好處,但也可能會(huì)產(chǎn)生副作用。為此,編譯程序按照上述的原理,對(duì)目標(biāo)作如下的調(diào)度:/* off critical path */ sload(ld_addr1,target1) sload(ld_addr2,target2) /* other operation including uses of target1/target2 */ if (ab) scheck(target1,recovery_addr1) scheck(target2,recovery_addr2) (2) 數(shù)據(jù)猜測(cè)數(shù)據(jù)猜測(cè)數(shù)據(jù)猜測(cè)是指
30、編譯程序?qū)膬?nèi)存中把數(shù)據(jù)讀入寄存器的指令(load指令)移動(dòng)到把數(shù)據(jù)從寄存器存儲(chǔ)到內(nèi)存的指令(store指令)前面執(zhí)行,從而提前從內(nèi)存中讀出數(shù)據(jù)、減少內(nèi)存延遲的影響。例如,編譯程序把下例中的load指令調(diào)度到store指令前面: store(st_addr,data)load (ld_addr,target) load (ld_addr,target)store(st_addr,data) use (target) 如果在程序執(zhí)行時(shí)ld_addr與st_arrd不一致,那么該程序?qū)⒛軌蛘_地享受到猜測(cè)的好處;但是,如果在執(zhí)行時(shí)兩個(gè)內(nèi)存地址重迭,則必須采取必要的補(bǔ)救措施,否則就會(huì)產(chǎn)生錯(cuò)誤的結(jié)果。
31、為了防止數(shù)據(jù)猜測(cè)帶來(lái)副作用,編譯程序在load指令原來(lái)位置上放置一條檢查指令,檢查兩個(gè)內(nèi)存地址是否重迭。如果重迭,則轉(zhuǎn)移到一段恢復(fù)程序、消除猜測(cè)所帶來(lái)的副作用。于是上面的指令段變成: /* off critical path */ aload (ld_addr, target) /* other operations including uses of target */ store (st_addr,data) acheck (target,recovery_addr) use (target) 7. 預(yù)測(cè)預(yù)測(cè)預(yù)測(cè)機(jī)制:眾所周知,在流水線機(jī)制的處理器中,轉(zhuǎn)移指令開(kāi)銷很大。傳統(tǒng)的體系結(jié)構(gòu)中條件
32、語(yǔ)句是通過(guò)轉(zhuǎn)移指令來(lái)實(shí)現(xiàn)的。如果程序中有大量條件判斷語(yǔ)句(如許多商業(yè)應(yīng)用軟件),將對(duì)處理器性能造成很大的影響。為此,IA-64引入預(yù)測(cè)機(jī)制來(lái)消除轉(zhuǎn)移指令: 首先,所有IA-64指令都包含一個(gè)預(yù)測(cè)寄存器作為附加的輸入,指令僅當(dāng)預(yù)測(cè)正確時(shí)才被執(zhí)行。因此,IA-64的指令實(shí)際上是“If(預(yù)測(cè)寄存器)指令操作”形式的,僅當(dāng)指令所引用的預(yù)測(cè)寄存器為真時(shí)指令操作才被執(zhí)行; 第二,為了支持預(yù)測(cè)機(jī)制,IA-64設(shè)置一條功能強(qiáng)大的比較指令來(lái)產(chǎn)生預(yù)測(cè)結(jié)果。該指令可以簡(jiǎn)化如下:pT,pF CMP(crel r2,r3) 這條比較指令使用crel給出比較規(guī)則(例如大于)比較r1和r2。比較的結(jié)果一般寫入預(yù)測(cè)寄存器pT
33、,它的相反狀態(tài)寫入預(yù)測(cè)寄存器pF。這給出兩個(gè)預(yù)測(cè)來(lái)控制if-then-else語(yǔ)句的兩邊; 第三,IA-64的預(yù)測(cè)機(jī)制允許在編譯時(shí)對(duì)程序作優(yōu)化,消除轉(zhuǎn)移、提高效率。例如,假定程序中原有如下的語(yǔ)句:if (ab) then c=c+1 else d=d*e+f 通過(guò)編譯的優(yōu)化,可以消除條件語(yǔ)句中的轉(zhuǎn)移指令,把它轉(zhuǎn)化成預(yù)測(cè)執(zhí)行: pT, pF = CMP(ab) if (pT) C=C+1 if (pF) d=d*e+f 于是,成功地實(shí)現(xiàn)了通過(guò)預(yù)測(cè)機(jī)制消除了轉(zhuǎn)移。此外,編譯程序還可以把pT和pF后的指令調(diào)度成讓處理器并行地執(zhí)行它們,然后視pT和pF的狀態(tài),采用一邊的結(jié)果。 另外值得注意的是有若干種
34、不同的比較指令,它們用不同方法寫預(yù)測(cè),包括無(wú)條件比較和并行比較。8. 寄存器堆棧寄存器堆棧Itanium體系結(jié)構(gòu)在過(guò)程調(diào)用和返回接口,通過(guò)編譯器控制的改名,避免寄存器不必要的流出和填入。IA-64增加了一個(gè)通用寄存器窗來(lái)支持高效的函數(shù)調(diào)用。這個(gè)128項(xiàng)的通用寄存器窗被分為一個(gè)32項(xiàng)的全程存儲(chǔ)器和一個(gè)96項(xiàng)的堆棧存儲(chǔ)器。IA-64允許編譯程序在被調(diào)用的函數(shù)過(guò)程入口,設(shè)置一條ALLOC指令創(chuàng)立一個(gè)最多包含96項(xiàng)的新寄存器堆棧,對(duì)于調(diào)用的過(guò)程可用新的寄存器幀,不需要寄存器的流出和填入(或者由調(diào)用者或者是被調(diào)用者)。寄存器訪問(wèn)發(fā)生,由在指令中的虛擬寄存器標(biāo)識(shí),通過(guò)一基寄存器改名為物理寄存器。 被調(diào)用者
35、可以自由地使用可用的寄存器而不需流出和最后恢復(fù)調(diào)用者的寄存器。在返回時(shí),恢復(fù)調(diào)用程序的寄存器堆棧幀。對(duì)編譯程序來(lái)說(shuō)似乎有長(zhǎng)度無(wú)限的物理寄存器堆棧,從而降低了函數(shù)調(diào)用的開(kāi)支、提高了效率;如果在調(diào)用和返回時(shí),沒(méi)有足夠的寄存器可供使用(堆棧溢出),那么處理器將被阻塞,等待卸出和裝入寄存器,直到有足夠的寄存器為止; 在返回側(cè),基寄存器存儲(chǔ)為調(diào)用者在調(diào)用前所訪問(wèn)的寄存器的值。若某些調(diào)用者的寄存器可能已經(jīng)由硬件流出而尚未恢復(fù)。在這種情況(堆棧下溢)下,返回暫停處理器直至處理器已經(jīng)恢復(fù)適當(dāng)?shù)恼{(diào)用者的寄存器數(shù)。硬件能利用顯式的寄存器堆棧幀信息以在寄存器堆棧和內(nèi)存間在最好的機(jī)會(huì)流出和填入寄存器(獨(dú)立于調(diào)用者和被
36、調(diào)用者過(guò)程)。 9. 分支分支除了通過(guò)使用預(yù)測(cè)刪除分支之外,提供了若干機(jī)制減少分支預(yù)測(cè)失敗的比率和保留預(yù)測(cè)失敗的分支的成本。這些機(jī)制提供方法使編譯器把關(guān)于分支條件的通信信息送至處理器。提供分支預(yù)測(cè)指令,它們能用于通信分支的目標(biāo)地址和單元的早期指示。編譯器試圖指示分支是否應(yīng)動(dòng)態(tài)地或靜態(tài)地預(yù)測(cè)。處理器能用此信息初始化分支預(yù)測(cè)體系結(jié)構(gòu),允許好的預(yù)測(cè),甚至在第一次遇到分支時(shí)。對(duì)于無(wú)條件分支或編譯器有關(guān)于可能的分支行為時(shí),這是有益的。 對(duì)于間接分支,一分支寄存器用于保持目標(biāo)地址。當(dāng)目標(biāo)地址能早些計(jì)算時(shí),分支預(yù)測(cè)指令提供哪個(gè)寄存器將用于這種情況。分支預(yù)測(cè)指令也能通知間接分支是過(guò)程返回,允許調(diào)用返回堆棧體系
37、結(jié)構(gòu)的有效使用。提供特殊的閉循環(huán)分支以加速計(jì)數(shù)的循環(huán)和模調(diào)度的循環(huán)。這些分支和它們的相關(guān)的分支預(yù)測(cè)指令提供允許很好預(yù)測(cè)循環(huán)終止的信息,因此,消除預(yù)測(cè)失敗的開(kāi)銷和減少循環(huán)開(kāi)銷。10. 寄存器旋轉(zhuǎn)寄存器旋轉(zhuǎn)軟件流水線:循環(huán)步之間相互獨(dú)立的循環(huán)可以象硬件流水線一樣執(zhí)行,即下一個(gè)循環(huán)步可以在上一個(gè)循環(huán)步結(jié)束前開(kāi)始執(zhí)行。這也可以稱為軟件流水線。傳統(tǒng)的體系結(jié)構(gòu)在同時(shí)執(zhí)行多個(gè)循環(huán)步時(shí),需要把循環(huán)拆開(kāi)和軟件重新命名寄存器。IA-64引入了兩個(gè)新特性:旋轉(zhuǎn)寄存器存儲(chǔ)器和蘊(yùn)含預(yù)測(cè)來(lái)支持軟件水線。IA-64能夠通過(guò)旋轉(zhuǎn)寄存器機(jī)制為每個(gè)循環(huán)步提供自己的寄存器,并且不需要把循環(huán)拆開(kāi),使得軟件流水線能夠適用于更加廣泛范圍
38、的循環(huán),包括小的和大的循環(huán),大大減少循環(huán)的附加開(kāi)銷11. 浮點(diǎn)體系結(jié)構(gòu)浮點(diǎn)體系結(jié)構(gòu)Itanium體系結(jié)構(gòu)定義浮點(diǎn)體系結(jié)構(gòu),它對(duì)于單精度、雙精度和擴(kuò)展的雙精度(80位)數(shù)據(jù)類型完全支持IEEE。某些擴(kuò)展,例如混合的乘法和加法操作、最小和最大功能和具有比擴(kuò)展的雙精度存儲(chǔ)格式范圍更大的寄存器文件格式等。定義了128個(gè)浮點(diǎn)寄存器。在這些中,96個(gè)寄存器是旋轉(zhuǎn)的(不堆棧的)能用于模調(diào)度循環(huán)。為猜測(cè)提供了多個(gè)浮點(diǎn)狀態(tài)寄存器。Itanium有并行的FP指令,它在兩個(gè)32位單精度數(shù)上操作,駐留在單個(gè)浮點(diǎn)寄存器中,并行且獨(dú)立。這些指令大大增強(qiáng)單精度浮點(diǎn)計(jì)算的吞吐率和增強(qiáng)了3D密集的應(yīng)用程序和游戲的性能。 12.
39、 多媒體支持多媒體支持Itanium體系結(jié)構(gòu)有多媒體指令,它把通用寄存器作為8個(gè)8位、4個(gè)16位或兩個(gè)32元素的級(jí)連。這些指令在每個(gè)元素上并行操作、相互獨(dú)立。它們對(duì)于建立由具有聲音和圖象的應(yīng)用程序使用的高性能壓縮解壓算法是很有用的。Itanium 多媒體指令是與HP的MAX-2多媒體技術(shù)和Intel的MMX技術(shù)指令和流SIMD擴(kuò)充指令技術(shù)語(yǔ)義兼容的。14.2.2 執(zhí)行環(huán)境執(zhí)行環(huán)境 Itanium體系結(jié)構(gòu)狀態(tài)由寄存器和內(nèi)存構(gòu)成。指令執(zhí)行的結(jié)果,按照一組執(zhí)行順序規(guī)則變成體系結(jié)構(gòu)可見(jiàn)的。本章描述對(duì)于應(yīng)用程序體系結(jié)構(gòu)可見(jiàn)的執(zhí)行順序狀態(tài)和規(guī)則。1. 應(yīng)用程序寄存器狀態(tài)應(yīng)用程序寄存器狀態(tài)以下是一組對(duì)于應(yīng)用
40、程序可見(jiàn)的寄存器清單,如圖 14-3 所示: 通用寄存器 General Register (GR)通用寄存器文件,GR0 GR127。當(dāng)執(zhí)行IA-32指令時(shí),IA-32的整型和段寄存器包含在GR8 FR31中。 浮點(diǎn)寄存器 Floating Register (FR)浮點(diǎn)寄存器文件,F(xiàn)R0 FR127。當(dāng)執(zhí)行IA-32指令時(shí),IA-32浮點(diǎn)和多媒體寄存器包含在FR8 FR31中。 預(yù)測(cè)寄存器 Predicate Register (PR)PR0 PR63,64個(gè)單位寄存器,用于預(yù)測(cè)和分支。 分支寄存器 Branch Register (BR)用于分支的寄存器,BR0 BR7。 指令指針 In
41、struction Pointer (IP)保持當(dāng)前執(zhí)行的指令集束的地址,或者當(dāng)前執(zhí)行的IA-32指令的字節(jié)地址。 當(dāng)前幀標(biāo)記 Current Frame Marker (CFM)描述當(dāng)前通用寄存器堆棧幀和FR/PR旋轉(zhuǎn)的狀態(tài)。 應(yīng)用寄存器 Aplication Register(AR)特殊目的寄存器的集合。 性能監(jiān)視器數(shù)據(jù)寄存器 Performance Monitor Data Register(PMD)用于性能監(jiān)視器硬件的數(shù)據(jù)寄存器。 用戶屏蔽 User Mask(UM)一組單位值集,用于對(duì)齊陷入、性能監(jiān)視器和監(jiān)視浮點(diǎn)寄存器使用。 處理器標(biāo)識(shí)符 Processor Identifiers(
42、CPUID)描述處理器實(shí)現(xiàn)有關(guān)特性的寄存器。IA-32應(yīng)用程序寄存器狀態(tài)整個(gè)地包含在更大的Itanium應(yīng)用程序寄存器集中且可由Itanium指令訪問(wèn)。IA-32指令不能訪問(wèn)Itanium寄存器集。未定義的寄存器或者是保留的或者是忽略的。訪問(wèn)保留的寄存器引起非法操作故障。對(duì)于忽略的寄存器的讀,返回0。軟件可以寫任何值至忽略的寄存器,而硬件忽略所寫的值。在可變尺寸的寄存器集中,在具體處理器中未實(shí)現(xiàn)的寄存器也是保留的寄存器。對(duì)于這些未實(shí)現(xiàn)的寄存器之一的訪問(wèn)引起保留的寄存器字段故障。在定義的寄存器內(nèi),未定義的字段或者是保留的或者是忽略的。對(duì)于保留的字段,在讀時(shí),硬件始終返回0。軟件對(duì)這些字段必須始終
43、寫0。在保留的字段中寫入非0的企圖,引起保留的寄存器字段故障。保留的字段將來(lái)可能使用。對(duì)于忽略的字段,在讀時(shí),硬件返回0,除非,有注釋。軟件可以寫任何值至這些字段,因?yàn)?,硬件忽略任何所寫的值。除了,另有注明。某些IA-32忽略的字段將來(lái)可能用。對(duì)于在寄存器中定義的字段,值未定義的是保留的。軟件必須始終寫定義的值至這些字段。寫保留的值的任何企圖,引起保留的寄存器字段故障。一些寄存器是只讀寄存器。對(duì)于只讀寄存器的寫,引起非法操作故障。當(dāng)字段標(biāo)記為保留的時(shí),它基本上是為了與將來(lái)的處理器兼容,軟件對(duì)待這些字好像有將來(lái),雖然不知結(jié)果。當(dāng)處理保留的字段時(shí),軟件宜遵循以下指南: 不依賴任一保留的字段的狀態(tài),
44、在測(cè)試前,屏蔽所有保留的字段。 當(dāng)存儲(chǔ)至內(nèi)存或寄存器時(shí),不依賴任一保留的字段的狀態(tài)。 不依賴得到寫至保留的或忽略的字段的信息的能力。 只要可能,用從相同的寄存器上次返回的值重新裝入保留的或忽略的字段;否則,裝入0。2. 通用寄存器通用寄存器一組128個(gè)(64位)通用寄存器為整型和整型多媒體計(jì)算提供中心資源。它們的編號(hào)是GR0至GR127,對(duì)在所有特權(quán)級(jí)的所有程序是可用的。每個(gè)通用寄存器有64位正常數(shù)據(jù)存儲(chǔ),加一個(gè)附加位,NaT(Not a Thing 不是一事件)位,它用以追蹤延遲推理異常。通用寄存器分成兩個(gè)子集。通用寄存器0至31稱為靜態(tài)通用寄存器。其中,GR0是特殊的,當(dāng)作為一個(gè)源操作數(shù),
45、終是讀回0,企圖寫GR0引起非法操作故障。通用寄存器32至127稱為堆棧的通用寄存器。堆棧的寄存器對(duì)于分配一由可編程的局部和輸出寄存器數(shù)構(gòu)成的寄存器堆棧幀的程序是有用的。通用寄存器8至31包含IA-32的整型、段選擇子和段描述符寄存器。3. 浮點(diǎn)寄存器浮點(diǎn)寄存器一組128個(gè)(82位)浮點(diǎn)寄存器用于所有浮點(diǎn)計(jì)算。它們的編號(hào)是FR0至FR127,對(duì)于在所有特權(quán)級(jí)的所有程序可用。浮點(diǎn)寄存器分成兩個(gè)子集。浮點(diǎn)寄存器0至31稱為靜態(tài)浮點(diǎn)寄存器。其中,F(xiàn)R0和FR1是特殊的。當(dāng)作為源操作數(shù)時(shí),F(xiàn)R0終是讀回0.0而FR1讀回1.0。若用它們中的任一個(gè)作為目的操作數(shù),則引起故障。用稱為NaTVal(Not
46、a Thing Value 不是一事件值)的特殊寄存器值記錄延遲推理異常。浮點(diǎn)寄存器32至127稱為旋轉(zhuǎn)的浮點(diǎn)寄存器。這些寄存器能有計(jì)劃地改名以加速循環(huán)。浮點(diǎn)寄存器8至31,當(dāng)執(zhí)行IA-32指令時(shí),包含IA-32浮點(diǎn)和多媒體寄存器。4. 預(yù)測(cè)寄存器預(yù)測(cè)寄存器一組64個(gè)(1位)預(yù)測(cè)寄存器用于保持比較指令的結(jié)果。它們的編號(hào)是PR0至PR63,對(duì)于所有特權(quán)級(jí)的所有程序可用。這些寄存器用于指令的條件執(zhí)行。預(yù)測(cè)寄存器分成兩個(gè)子集。預(yù)測(cè)寄存器0至15,稱為靜態(tài)預(yù)測(cè)寄存器。其中,PR0當(dāng)作為源操作數(shù)時(shí),始終讀回“1”;當(dāng)用作目的操作數(shù)時(shí),結(jié)果被廢棄。靜態(tài)預(yù)測(cè)寄存器也用在條件分支中。預(yù)測(cè)寄存器16至63,稱為
47、旋轉(zhuǎn)的預(yù)測(cè)寄存器。5. 分支寄存器分支寄存器一組8個(gè)(64位)分支寄存器用于保持分支信息。它們的編號(hào)是BR0至BR7,對(duì)于在所有特權(quán)級(jí)的所有程序可用。分支寄存器,對(duì)于間接分支,用于規(guī)定分支的目標(biāo)地址。6. 指令指針指令指針指令指針(IP)保持與當(dāng)前正執(zhí)行的指令集束的地址。IP用一mov ip指令可以直接讀。IP不能直接寫,但在指令執(zhí)行時(shí)增量并能用分支指令設(shè)置為一新值。因?yàn)橹噶罴?6字節(jié)且是16字節(jié)對(duì)齊的,IP的最低四位始終為0。對(duì)于IA-32指令集執(zhí)行時(shí),IP保持當(dāng)前正執(zhí)行的指令的零擴(kuò)展的32位虛擬線性地址。指令是字節(jié)對(duì)齊的,因此,對(duì)于IA-32指令集執(zhí)行時(shí),IP的最低四位是保留的。7.
48、當(dāng)前幀標(biāo)記當(dāng)前幀標(biāo)記每一個(gè)通用寄存器堆棧幀與一個(gè)幀標(biāo)記相聯(lián)系。幀標(biāo)記描述通用寄存器堆棧的狀態(tài)。當(dāng)前幀標(biāo)記(CFM)保持當(dāng)前堆棧幀的狀態(tài)。CFM不能直接讀或?qū)憽瑯?biāo)記包含堆棧幀的各部分的尺寸,加上三個(gè)寄存器改名基礎(chǔ)值(用在寄存器旋轉(zhuǎn)中)。幀標(biāo)記的布局,如圖14-3中所示,字段在表14-3中描述。8. 應(yīng)用寄存器應(yīng)用寄存器 應(yīng)用寄存器文件包括對(duì)于IA-32和Itanium指令集體系結(jié)構(gòu)兩者應(yīng)用程序可見(jiàn)的處理器功能的特殊目的的數(shù)據(jù)寄存器和控制寄存器。這些寄存器能被基于Itanium應(yīng)用程序訪問(wèn)(除了,另有注釋)。表14-6包含一應(yīng)用程序寄存器清單。14.3 x86系列的嵌入式處理器系列的嵌入式處理器
49、微處理器的嵌入式應(yīng)用(即把微處理器嵌入至某一智能設(shè)備例如,機(jī)頂盒、手機(jī)中),是微處理器發(fā)展最快、應(yīng)用最廣的一個(gè)方面。據(jù)統(tǒng)計(jì),全世界生產(chǎn)的大規(guī)模集成電路芯片,80%應(yīng)用于嵌入式系統(tǒng)中。AMD公司的Geode LX處理器是一種x86系列的嵌入式處理器,也是我國(guó)計(jì)劃重點(diǎn)發(fā)展的一種嵌入式處理器。我國(guó)科技部與AMD公司簽訂了 Geode系列處理器的芯片技術(shù)轉(zhuǎn)讓協(xié)議,從而為在我國(guó)大量生產(chǎn)與推擴(kuò)Geode系列處理器奠定了基礎(chǔ)。本章概要介紹Geode LX處理器的結(jié)構(gòu)與功能。14.3.1 通用描述通用描述AMD Geode LX處理器是完整的x86處理器,是為用于娛樂(lè)、教育和商業(yè)的功能強(qiáng)大的嵌入式設(shè)備特別設(shè)計(jì)
50、的。可以滿足消費(fèi)者和商業(yè)專業(yè)人員的需要。它是瘦客戶機(jī)、交互式機(jī)頂盒、單板計(jì)算機(jī)和移動(dòng)計(jì)算設(shè)備等嵌入式應(yīng)用的杰出解決方案。利用1.2V電壓的核,使功耗極低,導(dǎo)致電池壽命更長(zhǎng)、外形更小,可做到無(wú)風(fēng)扇設(shè)計(jì)。處理器核提供與大量的internet設(shè)備的最大的兼容性并具有若干其他功能,包括圖形和視頻的智能集成,提傳了真正的系統(tǒng)級(jí)多媒體解決方案。Geode LX 處理器的結(jié)構(gòu)如圖14-5所示: 14.3.2 體系結(jié)構(gòu)概要體系結(jié)構(gòu)概要Geode LX處理器能分成如圖14-2所示的主要功能塊:處理器核 GeodeLink控制處理器 GeodeLink接口單元 GeodeLink存儲(chǔ)控制器 圖形處理器 顯示控制器
51、 視頻處理器 TFT控制器/視頻輸出端口 視頻輸入端口 GeodeLink PCI橋 安全塊1. CPU核核x86核由整數(shù)單元、緩存存儲(chǔ)器子系統(tǒng)和與x87兼容的FPU(浮點(diǎn)單元)組成。整數(shù)單元包括指令流水線和相關(guān)的邏輯。存儲(chǔ)器子系統(tǒng)包括指令和數(shù)據(jù)緩存、轉(zhuǎn)換查找緩沖器(TLB)及至GeodeLink接口單元(GLIU)的接口。從功能來(lái)說(shuō),Geode LX處理器的功能結(jié)構(gòu)如圖14-6所示:從處理器內(nèi)部來(lái)說(shuō),主要由三部分組成:32位的類似386的處理器,它執(zhí)行整數(shù)運(yùn)算,實(shí)現(xiàn)實(shí)模式和保護(hù)模式兩種操作模式,片內(nèi)的MMU實(shí)現(xiàn)請(qǐng)頁(yè)式虛擬存儲(chǔ)器管理;類似x87的浮點(diǎn)處理器,實(shí)視浮點(diǎn)運(yùn)算與MMX指令;由64KB
52、指令緩存與64KB數(shù)據(jù)緩存組成的片內(nèi)一級(jí)緩存器(L1)和由128KB持令與數(shù)據(jù)說(shuō)一的二級(jí)片上緩存器(L2)。從性能上,由u與v兩條流水線組成更為強(qiáng)大的流水線功能。由核支持的指令集是Intel Pentium、AMD-K6微處理器(包含了8086的全部指令)和Athlon FPU與Geode LX處理器特定的指令的組合。(1) 整數(shù)單元整數(shù)單元整數(shù)單元由8段流水線和所有必需的支持硬件組成以保持流水線有效運(yùn)行。整數(shù)單元中的指令流水線由8段組成:1) 指令預(yù)取 原始指令數(shù)據(jù)從指令內(nèi)存緩存中取。2) 指令預(yù)譯碼 從原始指令數(shù)據(jù)中抽取前綴字節(jié)。此譯碼向前查找至下一指令。3) 指令譯碼 執(zhí)行指令數(shù)據(jù)的全譯
53、碼。把指令長(zhǎng)度回送至預(yù)取單元,允許預(yù)取單元移位適當(dāng)字節(jié)數(shù),以到達(dá)下一條指令的開(kāi)始。4) 指令隊(duì)列 FIFO包含譯碼的指令。允許指令譯碼繼續(xù)下去,甚至流水線是停止向下流。在此階段執(zhí)行數(shù)據(jù)操作數(shù)地址計(jì)算的寄存器讀。 5) 地址計(jì)算#1 - 計(jì)算操作數(shù)數(shù)據(jù)的線性地址(若要求)和向數(shù)據(jù)內(nèi)存緩存發(fā)出請(qǐng)求。微碼能超越流水線且若多盒指令要求附加的數(shù)據(jù)操作數(shù),在此處插入一微盒。6) 地址計(jì)算#2 操作數(shù)數(shù)據(jù)被返回(若要求)和若數(shù)據(jù)緩存命中,設(shè)置執(zhí)行階段。在數(shù)據(jù)操作數(shù)地址上執(zhí)行段界限檢查。為設(shè)置至執(zhí)行單元讀ROM。7) 執(zhí)行單元 - 為算術(shù)或邏輯運(yùn)算從寄存器和/或內(nèi)存讀取并饋至算術(shù)邏輯單元(ALU)。為從流水線
54、下來(lái)的第一條指令盒,ROM始終點(diǎn)火。若指令要求多個(gè)執(zhí)行單元階段完成,微碼能超越流水線和在此處插入附加的盒。8) 回寫 執(zhí)行單元階段的結(jié)果寫至寄存器文件或數(shù)據(jù)內(nèi)存。(2) 內(nèi)存管理單元內(nèi)存管理單元內(nèi)存管理單元(MMU)把由整數(shù)單元提供的線性地址轉(zhuǎn)換為物理地址,由緩存單元和內(nèi)部總線接口單元使用。內(nèi)存管理過(guò)程是與x86兼容的,堅(jiān)持標(biāo)準(zhǔn)的分頁(yè)機(jī)制。MMU也包合裝入(load)/存儲(chǔ)(store)單元,它有責(zé)任調(diào)度緩存和外部?jī)?nèi)存訪問(wèn)。此load/store單元合并了兩個(gè)性能增強(qiáng)特性: load-store重新排序 - 給由整數(shù)單元要求的讀優(yōu)先于寫至外部?jī)?nèi)存。 內(nèi)存讀旁路 由用從執(zhí)行單元的有效數(shù)據(jù)消除不必
55、要的內(nèi)存讀。(3) 緩存和緩存和TLB子系統(tǒng)子系統(tǒng)CPU核的緩存和TLB子系統(tǒng)用指令、數(shù)據(jù)和轉(zhuǎn)換的地址(當(dāng)需要時(shí))供給整數(shù)流水線。為支持指令的有效交付,緩存和子系統(tǒng)有單時(shí)鐘訪問(wèn)的64KB 16路組相關(guān)的指令緩存和16項(xiàng)全相關(guān)的TLB。當(dāng)在保護(hù)模式時(shí),此TLB執(zhí)行必需的地址轉(zhuǎn)換。對(duì)于數(shù)據(jù),有64KB 16路組相關(guān)的回寫緩存和16項(xiàng)全相關(guān)的TLB。當(dāng)指令或數(shù)據(jù)TLB有丟失時(shí),有第二級(jí)統(tǒng)一的(指令和數(shù)據(jù))64項(xiàng)2路組相關(guān)TLB,它用附加的時(shí)鐘訪問(wèn)。當(dāng)指令或數(shù)據(jù)緩存或TLB有丟失時(shí),訪問(wèn)必須進(jìn)至GeodeLink內(nèi)存控制器(GLMC)進(jìn)行處理。由啟用對(duì)兩種緩存的同時(shí)訪問(wèn),使指令和數(shù)據(jù)緩存和它們相關(guān)的T
56、LB全面地改進(jìn)了整數(shù)單元的效率。由128KB統(tǒng)一的L2緩存支持L1緩存。L2緩存能配置為保持?jǐn)?shù)據(jù)、指令或兩者。L2緩存是四路組相關(guān)的。(4) 總線控制單元總線控制單元總線控制單元提供從處理器至GLIU的橋。當(dāng)由于緩存丟失,要求外部?jī)?nèi)存儲(chǔ)器訪問(wèn)時(shí),物理地址傳遞至總線控制單元,它轉(zhuǎn)換周期為GeodeLink周期。(5) 浮點(diǎn)單元浮點(diǎn)單元浮點(diǎn)單元(FPU)是一流水線的算術(shù)單元,它執(zhí)行IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)運(yùn)算。支持的指令集是x87、MMX和3DNow。FPU是流水線機(jī)制具有指令的動(dòng)態(tài)調(diào)度以最小化由于數(shù)據(jù)依賴的停頓。它履行超出順序的執(zhí)行和寄存器改名。設(shè)計(jì)以支持從整數(shù)核的每時(shí)種的指令流出比。數(shù)據(jù)路徑
57、為單精度算術(shù)運(yùn)算優(yōu)化。擴(kuò)展的精度指令在微碼中處理和要求多遍通過(guò)流水線。有一執(zhí)行流水線和一load/store流水線。這允許load/store操作與算術(shù)運(yùn)算指令并行執(zhí)行。2. GeodeLink控制處理器控制處理器GeodeLink控制處理器(GLCP)用于復(fù)位控制、宏時(shí)鐘管理和在Geode LX處理器中提供的調(diào)試支持。它包含JTAG接口和掃描鏈控制邏輯。它支持芯片復(fù)位,包括啟動(dòng)PLL控制和編程和運(yùn)行時(shí)電源管理宏時(shí)鐘控制。JTAG支持包括依從IEEE 114914.3.1的TAP控制器。通過(guò)在TAP控制器中的JTAG接口能得到CPU控制和能訪問(wèn)所有的內(nèi)部寄存器包括核寄存器。通過(guò)此JTAG和TA
58、P控制器接口支持電路內(nèi)仿真(ICE)功能。GLCP也包括同伴設(shè)備接口。此同伴設(shè)備有若干獨(dú)特的信號(hào)連接至此模塊,以支持Geode LX處理器復(fù)位、中斷和系統(tǒng)電源管理。3. GeodeLink 接口單元接口單元兩個(gè)接口單元(GLIU0和GLIU1)一起構(gòu)成從GeodeLink體系結(jié)構(gòu)導(dǎo)出的內(nèi)部總線。GLIU0連接5個(gè)高帶寬模塊與第7個(gè)一起連接至GLIU1,它連接5個(gè)低帶寬模塊。4. GeodeLink 存儲(chǔ)器控制器存儲(chǔ)器控制器GeodeLink存儲(chǔ)器控制器(GLMC)是在典型的Geode LX處理器系統(tǒng)中需要的所有存儲(chǔ)器的源。GLMC支持具有64位的數(shù)據(jù)總線和支持200MHz、400MT/S DDR(雙數(shù)據(jù)速率)。需要存儲(chǔ)器的模塊是CPU核、圖形處理器、顯示控制器、視頻輸入端口和安全塊。因?yàn)镚LMC支持CPU核和顯示子系統(tǒng)兩者需要的存儲(chǔ)器,典型地稱為UMA(統(tǒng)一的存儲(chǔ)器體系結(jié)構(gòu))子系統(tǒng)。GLMC也支持對(duì)主存儲(chǔ)器的PCI訪問(wèn)。最多可有四個(gè)體,每個(gè)體中最多有8個(gè)設(shè)備,每個(gè)體支持最多512MB。四個(gè)體意味著在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化空間視角下合陽(yáng)縣南長(zhǎng)益村景觀設(shè)計(jì)研究
- 2025年北京科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年北京信息職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 網(wǎng)絡(luò)控制系統(tǒng)優(yōu)化-洞察分析
- 2025年蘭州外語(yǔ)職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年義烏工商職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年上海民航職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 藝術(shù)評(píng)論與媒體傳播-洞察分析
- 微服務(wù)API設(shè)計(jì)最佳實(shí)踐-洞察分析
- 藥酒與中藥結(jié)合研究-洞察分析
- 2025年八省聯(lián)考高考語(yǔ)文試題真題解讀及答案詳解課件
- 信息安全意識(shí)培訓(xùn)課件
- 美的MBS精益管理體系
- 中國(guó)高血壓防治指南(2024年修訂版)解讀課件
- 2024安全員知識(shí)考試題(全優(yōu))
- 中國(guó)大百科全書(shū)(第二版全32冊(cè))08
- 第六單元 中華民族的抗日戰(zhàn)爭(zhēng) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版八年級(jí)歷史上冊(cè)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗(yàn)收規(guī)范
- 知識(shí)庫(kù)管理規(guī)范大全
- 弘揚(yáng)教育家精神爭(zhēng)做四有好老師心得10篇
- 采油廠聯(lián)合站的安全管理對(duì)策
評(píng)論
0/150
提交評(píng)論