第14章x86系列微處理器的發(fā)展_第1頁
第14章x86系列微處理器的發(fā)展_第2頁
第14章x86系列微處理器的發(fā)展_第3頁
第14章x86系列微處理器的發(fā)展_第4頁
第14章x86系列微處理器的發(fā)展_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第 14 章章 x86系列微處理器的系列微處理器的發(fā)展發(fā)展本章介紹:14.1 AMD x86-64處理器14.2 Intel Itanium處理器14.3 x86系列的嵌入式處理器64位微處理器與嵌入式應(yīng)用,是x86系列微處理器的兩個重要的發(fā)展方向。十多億臺微型計算機,使計算機的應(yīng)用已經(jīng)滲透和深入至政治、經(jīng)濟(jì)、科學(xué)技術(shù)、社會生活和人們?nèi)粘I畹母鱾€方面。網(wǎng)絡(luò)時代的來臨、多媒體信息的數(shù)字化等等,都使信息爆炸般增長。信息的存儲、處理、交換,強烈地需求和促進(jìn)微處理器向64位時代過渡。 隨著Internet及其各種新的應(yīng)用如電子商務(wù)的發(fā)展,企業(yè)的信息量不斷增加,每年增長16倍,這使得企業(yè)對數(shù)據(jù)存儲的

2、需求急劇增長。調(diào)查顯示全球每年存儲設(shè)備約增長110倍(對應(yīng)于不同的應(yīng)用環(huán)境),并成為計算機硬件系統(tǒng)購買成本中占比例最大的部分。 數(shù)據(jù)已成為最寶貴的財富 數(shù)據(jù)是信息的符號,數(shù)據(jù)的價值取決于信息的價值。由于越來越多的有價值的關(guān)鍵信息轉(zhuǎn)變?yōu)閿?shù)據(jù),數(shù)據(jù)的價值也就越來越高。對于很多行業(yè)甚至個人而言,保存在存儲系統(tǒng)中的數(shù)據(jù)是最為寶貴的財富。在很多情況下,數(shù)據(jù)要比計算機系統(tǒng)設(shè)備本身的價值高得多,尤其對金融、電信、商業(yè)、社保和軍事等部門來說更是如此。設(shè)備壞了可以花錢再買,而數(shù)據(jù)丟失了對于企業(yè)來講,損失將是無法估量的,甚至是毀滅性的。因此,信息存儲系統(tǒng)的可靠性和可用性、數(shù)據(jù)備份和災(zāi)難恢復(fù)能力往往是企業(yè)用戶首先要

3、考慮的問題。為防止地震、火災(zāi)和戰(zhàn)爭等重大事件對數(shù)據(jù)的毀壞,關(guān)鍵數(shù)據(jù)還要考慮異地備份和容災(zāi)問題。 微處理器是現(xiàn)代計算機系統(tǒng)核心和引擎,它不僅提供計算機系統(tǒng)所需的處理能力,而且能夠管理緩存、內(nèi)存和互聯(lián)子系統(tǒng)、支持整個系統(tǒng)實現(xiàn)多處理器并行計算。 海量的信息,信息的存儲、處理和交換,都需要微處理器有更強大的能力,處理器從32位向64位過渡已經(jīng)是歷史的必然,微處理器已經(jīng)進(jìn)入了64位時代。64位的x86系列微處理器主要有兩種:Intel公司的Itanium處理器。AMD公司的x86-64處理器。14.1 AMD x86-64處理器處理器14.1.1 引言 AMD x86-64 體系結(jié)構(gòu)是簡單的,然而它是與

4、工業(yè)標(biāo)準(zhǔn)(傳統(tǒng)的)x86體系結(jié)構(gòu)后向兼容的強有力的64位擴(kuò)展。它增加了64位尋址和擴(kuò)展了寄存器資源,已存在的傳統(tǒng)的 x86 體系結(jié)構(gòu)的16位和32位應(yīng)用程序和操作系統(tǒng)不需修改或重編譯就能在 x86-64體系結(jié)構(gòu)下運行。對于重新編譯的 64 位程序可提供更高的性能。這是一種這樣的體系結(jié)構(gòu),它對于大量已存在的軟件和要求更高性能的新的64位應(yīng)用軟件兩者能提供無縫的高性能支持的處理器。 64 位 x86-64 體系結(jié)構(gòu)的需要是由例如高性能服務(wù)器、數(shù)據(jù)庫管理系統(tǒng)和CAD工具等的應(yīng)用程序,要求大型和高精度數(shù)據(jù)和大的虛擬和物理存儲器的地址范圍引出的。同時它們也從64位地址和增加的寄存器數(shù)得到好處。在傳統(tǒng)的

5、x86 體系結(jié)構(gòu)中可用的寄存器數(shù)少,在強計算的應(yīng)用程序中限制了其性能。寄存器數(shù)的增加對許多這樣的應(yīng)用程序提供了性能推進(jìn)。 1. 新功能新功能 x86-64 體系結(jié)構(gòu)引進(jìn)了以下新功能: 寄存器擴(kuò)展,如圖 14-1所示: - 8 個新通用寄存器 (GPR)。 - 所有 16個 GPR 是 64 位寬。 - 8 個新 128位 XMM 寄存器。 - 為所有 GPR 可尋址的統(tǒng)一字節(jié)寄存器。 - 一新指令前綴 (REX) 可訪問所有擴(kuò)展的寄存器。 長模式,如表 14-1 所示: - 虛擬地址增至 64 位。 - 64 位指令指針(RIP)。 - 新的指令指針數(shù)據(jù)相對尋址模式。 - 平面的(不分段的)地

6、址空間。2. 寄存器寄存器表 14-2比較不同操作模式對應(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 個 GPR。然而,在實際上至少四個寄存器(EBP、ESI、EDI 和 ESP)的通用性是折衷的,因為當(dāng)執(zhí)行許多指令時,他們是作為特殊目的寄存器使用。x86-64 體系結(jié)構(gòu)

7、增加的 8 個新 GPR和這些寄存器的寬度從32位增至64位允許編譯者充分地改進(jìn)軟件性能。在用寄存器保持變量上,編譯者有更大的靈活性。編譯者由在 GPR 寄存器內(nèi)工作也能使內(nèi)存開銷最小化因此推進(jìn)了性能。3. 指令集指令集x86-64 體系結(jié)構(gòu)支持全部傳統(tǒng) x86 指令集,并增加了一些新的指令以支持長模式(關(guān)于操作模式的小結(jié)見表 14-1)。應(yīng)用程序編程指令在以下子節(jié)中分組并描述: 通用指令(General-Purpose Instructions)這些是基本的 x86 整數(shù)指令,事實上在所有程序中都用。大多數(shù)這些指令裝入、存儲或操作存放在通用寄存器(GPR)或內(nèi)存中的數(shù)據(jù)。某些指令由分支至其他

8、程序單元以改變程序的順序流。 128-位媒體指令這些是 流 SIMD extension (SSE 和 SSE2) 指令,它們裝入、存儲或操作主要定位在 128 位 XMM 寄存器中的數(shù)據(jù)。它們對向量(組合的)和標(biāo)量數(shù)據(jù)類型執(zhí)行整數(shù)和浮點操作。因為向量指令能在數(shù)據(jù)的多個集上獨立地和并行地執(zhí)行單個操作,因而它們被稱為單指令多數(shù)據(jù)(SIMD)指令。它們對于在數(shù)據(jù)塊上操作的高性能多媒體和科學(xué)的應(yīng)用程序是有用的。 64-位媒體指令這些是多媒體擴(kuò)展(multimedia extension (MMX 技術(shù)))和 AMD 3DNow! 技術(shù)指令。它們裝入、存儲和操作主要定位在 64 位 MMX 寄存器中的

9、數(shù)據(jù)。像上面描述的 128 位數(shù)據(jù),它們在向量(組合的)和標(biāo)量數(shù)據(jù)類型上執(zhí)行整數(shù)和浮點運算。因此,它們也是 SIMD 指令,對于在數(shù)據(jù)塊上操作的多媒體應(yīng)用程序是有用的。 x87 浮點指令這些是在傳統(tǒng)的 x87 應(yīng)用程序中使用的浮點指令。它們裝入、存儲和操作定位在 x87 寄存器中的數(shù)據(jù)。這些應(yīng)用程序編程指令的某些跨兩個或多個上述指令集。例如,有在通用寄存器和 XMM 或 MMX 寄存器之間傳送數(shù)據(jù)的指令。許多整型向量(組合的)指令能在 XMM 或 MMX 寄存器上操作,雖然不是同時。若指令跨兩個或多個子集,他們的描述在應(yīng)用它們的子集中重復(fù)。4. 媒體指令媒體指令多媒體應(yīng)用程序例如圖像處理、音樂

10、合成、語音識別、全運動視頻和3D 圖形透視共享一定的功能: 他們處理大量的數(shù)據(jù)。 他們跨越數(shù)據(jù)常常重復(fù)執(zhí)行相同的操作序列。 數(shù)據(jù)常常用小的量表示,例如,對于像素值是 8 位,對于音頻采樣是 16 位和對于以浮點格式表示的對象是 32 位。 128 位和 64 位媒體指令的設(shè)計為加速這些應(yīng)用程序。指令用于已知的單指令多數(shù)據(jù)(SIMD)處理,用于向量(組合的)的并行處理。這樣的向量技術(shù)有以下功能: 單個寄存器能保持?jǐn)?shù)據(jù)的多個獨立片。例如,一單個128 位 XMM 寄存器能保持 16 個 8 位整型數(shù)據(jù)元素或四個 32 位單精度浮點數(shù)據(jù)元素。 向量指令能在一個寄存器中的所有數(shù)據(jù)元素上獨立地和同時操作

11、。例如,在 128 位 XMM 寄存器的兩個向量操作數(shù)的字節(jié)元素上操作的一 PADDB 指令執(zhí)行 16 個同時的加法并返回單個操作內(nèi)的 16 個獨立的結(jié)果。 128 位和 64 位媒體指令用 SIMD 向量技術(shù),進(jìn)一步跟隨由包括在多媒體應(yīng)用程序中找到的公共的操作的特殊指令。例如,一圖形應(yīng)用程序,它加兩個像素的亮度值,必須防止若結(jié)果使目的寄存器溢出而環(huán)繞至小的值。因為一溢出的結(jié)果能產(chǎn)生不可預(yù)料的影響,例如預(yù)料是亮的,但結(jié)果是暗的像素。128 位和 64 位多媒體指令包括飽和算術(shù)運算指令以簡化這種類型的運算。代替由于上溢或下溢導(dǎo)致的圍繞,迫使飽和至目的寄存器能表示的最大或最小值。 5. 浮點指令浮

12、點指令x86-64 體系結(jié)構(gòu)用三種不同的寄存器集提供三個浮點指令子集: 128-位媒體指令 除了整數(shù)運算外,支持 32 位單精度和 64 位雙精度浮點操作。同時支持在向量和標(biāo)量數(shù)據(jù)上的運算,具有一專門的浮點異常報告機制。這些浮點運算遵循 IEEE-754 標(biāo)準(zhǔn)。 64-位媒體指令 ( 3DNow! 技術(shù)指令的子集) 支持單精度浮點運算。同時支持在向量和標(biāo)量數(shù)據(jù)上的運算,但這些指令不支持報告浮點異常。 x87 浮點指令 支持單精度、雙精度和 80 位擴(kuò)展精度浮點指令運算。只支持標(biāo)量數(shù)據(jù),帶有專門的浮點異常報告機制。x87 浮點指令包含執(zhí)行三角函數(shù)、對數(shù)和超越函數(shù)運算的特殊指令。單精度和雙精度浮點

13、運算遵循 IEEE-754 標(biāo)準(zhǔn)。 用 128 位媒體指令能達(dá)到最高的浮點運算性能。一條這樣的向量指令能支持多至四個單精度(或兩個雙精度)運算并行執(zhí)行。在 64 位模式, x86-64 體系結(jié)構(gòu)提供雙倍于傳統(tǒng)的 XMM 寄存器數(shù),從 8 個增至 16 個。用 64 位媒體和 x87 指令,應(yīng)用程序能得到附加的好處。由這些指令支持的分別的寄存器集減輕了可用于 128 位媒體指令對 XMM 寄存器的壓力。這向應(yīng)用程序提供了三個不同的浮點寄存器集。此外,x86-64 體系結(jié)構(gòu)的某些高端實現(xiàn)用分別的執(zhí)行單元可以分別執(zhí)行 128 位媒體、64 位媒體和 x87 指令。 14.1.2 操作模式操作模式1.

14、 長模式長模式 長模式是傳統(tǒng)的保護(hù)模式的擴(kuò)展。長模式由兩個子模式:64 位 模式 和兼容模式(compatibility mode) 組成。 64 位模式支持 x86-64 體系結(jié)構(gòu)的所有新功能和寄存器擴(kuò)展。兼容模式支持與已存在的 16 位和 32 位應(yīng)用程序兼容。長模式不支持傳統(tǒng)的實模式或虛擬 8086 模式也不支持硬件任務(wù)切換。2. 64 位模式位模式64 位模式長模式的一個子模式支持 64 位虛擬尋址和寄存器擴(kuò)展功能的全部范圍。此模式在一分別的碼段基礎(chǔ)上啟用。因為 64 位模式支持 64 位虛擬地址空間,它要求一新的 64 位操作系統(tǒng)和工具鏈。已存在應(yīng)用程序二進(jìn)制碼能在兼容模式、在運行在

15、 64 位模式中的操作系統(tǒng)下運行而不需重編譯,或應(yīng)用程序也能重編譯以運行在 64 位模式。尋址功能包括一 64 位指令指針(RIP)和一新的 RIP 相對數(shù)據(jù)尋址模式。此模式由于只支持平面地址空間,具有單個碼、數(shù)據(jù)和堆??臻g,從而適應(yīng)現(xiàn)代操作系統(tǒng)。(1) 寄存器擴(kuò)展寄存器擴(kuò)展 64 位模式通過一組新的稱為 REX 前綴的指令前綴實現(xiàn)寄存器擴(kuò)展。這些擴(kuò)展增加了八個 GPR (R8R15)并使所有 GPR 寬度為 64 位,和增加了八個 128 位 XMM 寄存器 (XMM8XMM15)。(2) 64位地址和操作數(shù)位地址和操作數(shù)在 64 位模式,默認(rèn)的虛擬地址長度是 64 位(實現(xiàn)可以用較少的位)

16、。對于大多整指令,默認(rèn)的操作數(shù)規(guī)模是 32 位。對于大多數(shù)指令,這些默認(rèn)能用指令前綴在每個指令的基礎(chǔ)上超越。REX 前綴規(guī)定 64 位操作數(shù)規(guī)模和新的寄存器。(3) RIP-相對數(shù)據(jù)尋址相對數(shù)據(jù)尋址64 模式支持相對于 64 位指令指針(RIP)的數(shù)據(jù)尋址。傳統(tǒng)的 x86 體系結(jié)構(gòu)支持 IP 相對尋址,這只適用于控制傳送指令。RIP 相對尋址改進(jìn)了位置獨立碼和尋址全局?jǐn)?shù)據(jù)碼的效率。(4) 操作碼操作碼少數(shù)指令操作碼和前綴字節(jié)是重定義的以允許寄存器擴(kuò)展和 64 位尋址。 3. 兼容模式兼容模式兼容模式長模式的第二種子模式允許 64 位操作系統(tǒng)運行現(xiàn)存的 16 位和 32 位 x86 應(yīng)用程序。這

17、些傳統(tǒng)的應(yīng)用程序在兼容模式運行,不需要再編譯。運行在兼容模式的應(yīng)用程序用 32 位或 16 位尋址并能訪問虛擬地址空間的前 4GB。傳統(tǒng)的 x86 指令前綴在 16 位和 32 位地址和操作數(shù)規(guī)模之間切摸。 與 64 位模式一樣,兼容模式由操作系統(tǒng)在單個碼段的基礎(chǔ)上啟用。然而,不像 64 位模式, x86 段功能與在傳統(tǒng) x86 體系結(jié)構(gòu)相同,用 16 位和 32 位保護(hù)模式語義。從應(yīng)用程序的角度,兼容模式看上去像傳統(tǒng)的 x86 保護(hù)模式環(huán)境。然而,從操作系統(tǒng)觀點,地址轉(zhuǎn)換、中斷和異常處理和系統(tǒng)數(shù)據(jù)結(jié)構(gòu)用 64 位長模式機制。4. 傳統(tǒng)模式傳統(tǒng)模式傳統(tǒng)模式不只與已存在的 16 位和 32 位應(yīng)

18、用程序而且與已存在的 16 位和 32 位操作系統(tǒng)保持二進(jìn)制兼容。傳統(tǒng)模式由以下三個子模式組成: 保護(hù)模式(Protected Mode)保護(hù)模式支持 16 位和 32 位程序,具有內(nèi)存分段、任選的分頁和特權(quán)核查。運行在保護(hù)模式的程序能訪問 4GB 內(nèi)存空間。 虛擬-8086模式(Virtual-8086 Mode)虛擬8086 模式支持 16 位實模式程序作為保護(hù)模式的任務(wù)運行。它用一簡單形式的內(nèi)存段、任選的分頁和有限的特權(quán)核查。在虛擬 8086 模式運行的程序能訪問內(nèi)存空間的 1MB 。 實模式(Real Mode)實模式用簡單的基于寄存器的內(nèi)存段支持 16 位程序。它不支持分頁或保護(hù)核查

19、。在實模式運行的程序能訪問內(nèi)存空間的 1MB。傳統(tǒng)模式與 x86 體系結(jié)構(gòu)的現(xiàn)存的32位處理器實現(xiàn)兼容。實現(xiàn) x86-64 體系結(jié)構(gòu)的處理器引導(dǎo)至傳統(tǒng)實模式,就像實現(xiàn)傳統(tǒng) x86 體系結(jié)構(gòu)的處理器那樣。 在本書中,涉及傳統(tǒng)模式就涉及全部三種子模式保護(hù)模式、虛假-8086模式 和 實模式。若一函數(shù)特定于這些子模式中的某一個,于是用特定的子模式名代替?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ù)測、推斷和

20、更多的創(chuàng)新的特性的極好的組合。此體系結(jié)構(gòu)設(shè)計高度的可伸縮性將填補各種服務(wù)器和工作站的不斷增長的性能需求。Itanium體系結(jié)構(gòu)是一種64位指令集體系結(jié)構(gòu)(ISA-Instruction Set Architecture),它應(yīng)用了稱為EPIC-Explicity Parallel Instructure Computing(顯式并行指令計算)的新的處理器體系結(jié)構(gòu)技術(shù)。Itanium體系結(jié)構(gòu)的一個關(guān)鍵特性是與IA-32指令集兼容。本章概要描述Intel Itanium的特點。 14.2.1 Intel Itanium 體系結(jié)構(gòu)介紹體系結(jié)構(gòu)介紹Itanium體系結(jié)構(gòu)設(shè)計是為了克服傳統(tǒng)的體系結(jié)構(gòu)的性

21、能限制并為將來提供最大的發(fā)展空間。為此,Itanium體系結(jié)構(gòu)用創(chuàng)新的特性組設(shè)計以吸取更大的指令級平行,包括猜測、預(yù)測、大寄存器文件、寄存器堆棧、先進(jìn)的分支體系結(jié)構(gòu)和許多其他的特性。64位存儲器尋址能力以滿足數(shù)據(jù)倉庫、電子商務(wù)和其他高性能服務(wù)器的增大的存儲器空間的需求。 Itanium有創(chuàng)新的浮點體系結(jié)構(gòu)和其他增強以支持工作站應(yīng)用程序例如數(shù)字內(nèi)容創(chuàng)建、設(shè)計工程和科學(xué)分析的高性能需求。Itanium體系結(jié)構(gòu)也提供與IA-32指令集的兼容?;贗tanium體系結(jié)構(gòu)的處理器在支持IA-32應(yīng)用程序執(zhí)行的基于Itanium的操作系統(tǒng)上能運行IA-32應(yīng)用程序。若系統(tǒng)中存在平臺和固件支持,這樣的處理器

22、能運行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)也支持在單個基于Itanium操作系統(tǒng)中IA-32和基于Itanium應(yīng)用程序的混合。如圖 14-2 所示。2. 指令集轉(zhuǎn)換模型概要指令集轉(zhuǎn)換模型概要在Itanium系統(tǒng)環(huán)境中,處理器在任何時候能執(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指令。 對于所有的中斷條件,中斷轉(zhuǎn)換處理器至Itanium指令集。Jmpe和br.ia提供一種低開銷的機制以使控制在指令集之間轉(zhuǎn)換。這些指令典型地結(jié)合至“堆(thunks)”或“樁(stubs)”中,它們是實現(xiàn)所要求的調(diào)用連接和調(diào)用約定以調(diào)用動態(tài)的或靜態(tài)的連接庫。 3. Intel Itanium 指令集特性指令集特性Itanium體系結(jié)構(gòu)基于以下原則: 顯式并行 在編譯器和處理器之

24、間的協(xié)同機制 取指令級并行的優(yōu)點的重大的資源 128個整型和浮點寄存器,64個1位預(yù)測寄存器,8個分支寄存器 支持多執(zhí)行單元和存儲器端口 增強指令級并行的特性 猜測(它使存儲器潛在影響最?。?。 預(yù)測(它刪除分支)。 具有低開銷的循環(huán)的軟件流水線 分支預(yù)測使分支成本最小 集中的增強以改善軟件性能 軟件模塊化的特殊的支持 高性能浮點體系結(jié)構(gòu) 特殊的多媒體指令4. 指令級并行指令級并行指令級并行(ILP)是同時執(zhí)行多條指令的能力。為了并行執(zhí)行,Itanium允許獨立指令以集束(每集束三條指令)發(fā)出和每個時鐘發(fā)出多個集束。由大量的并行資源,例如大寄存器文件和多執(zhí)行單元的支持,Itanium體系結(jié)構(gòu)允許

25、編譯器管理工作進(jìn)行和調(diào)度多線程同時運算。Itanium體系結(jié)構(gòu)合并有ILP優(yōu)點的機制。對于傳統(tǒng)體系結(jié)構(gòu)的編譯器常常限制于利用猜測信息的能力,因為它不能保證這些信息始終是正確的。Itanium體系結(jié)構(gòu)允許編譯器利用猜測信息而不犧牲應(yīng)用程序的正確執(zhí)行(見“猜測”)。在傳統(tǒng)體系結(jié)構(gòu)中,過程調(diào)用限制性能,因為寄存器需要流出和填入。Itanium體系結(jié)構(gòu)允許過程就寄存器的使用與處理器通信。這允許處理器甚至在低程度的ILP下調(diào)度過程寄存器操作。見“寄存器堆?!?。 5. 編譯器至處理器通信編譯器至處理器通信編譯程序與處理器的通信:Itanium體系結(jié)構(gòu)提供指令模版、轉(zhuǎn)移暗示和緩存暗示等機制,使編譯程序能夠把

26、編譯時的信息傳遞給處理器。此外,它允許編譯出的程序使用運行時信息來管理處理器硬件,這一通信機制是最大限度地減少轉(zhuǎn)移開銷和緩存不命中懲罰的關(guān)鍵:通過允許目標(biāo)程序在實際轉(zhuǎn)移前把有關(guān)該轉(zhuǎn)移的信息傳送給硬件,能夠大大減少轉(zhuǎn)移的開銷;在Itanium體系結(jié)構(gòu)中每個內(nèi)存裝入和存儲指令有一個2位的緩存提示字段,編譯程序把對所訪問的內(nèi)存區(qū)域空間位置的預(yù)測信息置入其中。IPF系列的處理器可以使用這一信息來確定所訪問的內(nèi)存區(qū)域?qū)?yīng)緩存區(qū)域在緩存層次結(jié)構(gòu)中的位置,以提高緩存的利用效率。這一機制能夠大大減少緩存不命中懲罰;由允許代碼把分支信息在實際分支進(jìn)行中通信至硬件,使分支成本最小化。 6 猜測猜測猜測機制:IA-

27、64中有兩類猜測機制:控制猜測和數(shù)據(jù)猜測。其目的都是通過提前發(fā)送操作、從關(guān)鍵路徑中消除它的延遲,使編譯程序能夠提高指令級并行度(ILP)、最大限度地減少內(nèi)存延遲的影響。若有理由確信猜測是有益的,編譯器將發(fā)出猜測操作。要有益,宜保持兩個條件:(1)必須足夠頻繁(統(tǒng)計地)以至要求恢復(fù)的可能性很小,和(2)早一點發(fā)出操作宜進(jìn)一步顯示ILP增強優(yōu)化。對于編譯器由重疊利用統(tǒng)計的ILP,猜測是一種主要機制,因此容忍操作的延遲。(1) 控制猜測控制猜測控制猜測是指編譯程序把指令移動到轉(zhuǎn)移指令的前面執(zhí)行。這允許提前執(zhí)行程序內(nèi)不命中緩存的裝入指令等延遲長的操作、提高程序的執(zhí)行效率。但是,當(dāng)把指令移動到轉(zhuǎn)移前時,

28、可能會執(zhí)行本來不應(yīng)執(zhí)行的指令,編譯程序必須避免由此產(chǎn)生的副作用。為了解決這一問題,IA-64引入了兩條新的指令:一條是猜測裝入(sload),另一條是猜測檢查(scheck)。當(dāng)出現(xiàn)一個意外條件時,猜測裝入將把檢查寄存器的第65位置位,并對意外置之不理。猜測檢查指令檢查寄存器的第65位,如果置位,則發(fā)出意外信號。這允許把意外條件延遲到控制到達(dá)裝入指令原來所在塊時才加以處理,如果控制不到達(dá)該塊,則永遠(yuǎn)不加以處理,從而避免執(zhí)行不該執(zhí)行的指令。例如,對如下的條件語句: if (ab) load(ld_addr1,target1) else load(ld_addr2,target2) 由于編譯時不可

29、能知道a與b哪個大,如果提前執(zhí)行兩條load指令(即執(zhí)行線路猜測),雖然能夠得到減少延遲的好處,但也可能會產(chǎn)生副作用。為此,編譯程序按照上述的原理,對目標(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ù)猜測數(shù)據(jù)猜測數(shù)據(jù)猜測是指

30、編譯程序?qū)膬?nèi)存中把數(shù)據(jù)讀入寄存器的指令(load指令)移動到把數(shù)據(jù)從寄存器存儲到內(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í)行時ld_addr與st_arrd不一致,那么該程序?qū)⒛軌蛘_地享受到猜測的好處;但是,如果在執(zhí)行時兩個內(nèi)存地址重迭,則必須采取必要的補救措施,否則就會產(chǎn)生錯誤的結(jié)果。

31、為了防止數(shù)據(jù)猜測帶來副作用,編譯程序在load指令原來位置上放置一條檢查指令,檢查兩個內(nèi)存地址是否重迭。如果重迭,則轉(zhuǎn)移到一段恢復(fù)程序、消除猜測所帶來的副作用。于是上面的指令段變成: /* 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ù)測預(yù)測預(yù)測機制:眾所周知,在流水線機制的處理器中,轉(zhuǎn)移指令開銷很大。傳統(tǒng)的體系結(jié)構(gòu)中條件

32、語句是通過轉(zhuǎn)移指令來實現(xiàn)的。如果程序中有大量條件判斷語句(如許多商業(yè)應(yīng)用軟件),將對處理器性能造成很大的影響。為此,IA-64引入預(yù)測機制來消除轉(zhuǎn)移指令: 首先,所有IA-64指令都包含一個預(yù)測寄存器作為附加的輸入,指令僅當(dāng)預(yù)測正確時才被執(zhí)行。因此,IA-64的指令實際上是“If(預(yù)測寄存器)指令操作”形式的,僅當(dāng)指令所引用的預(yù)測寄存器為真時指令操作才被執(zhí)行; 第二,為了支持預(yù)測機制,IA-64設(shè)置一條功能強大的比較指令來產(chǎn)生預(yù)測結(jié)果。該指令可以簡化如下:pT,pF CMP(crel r2,r3) 這條比較指令使用crel給出比較規(guī)則(例如大于)比較r1和r2。比較的結(jié)果一般寫入預(yù)測寄存器pT

33、,它的相反狀態(tài)寫入預(yù)測寄存器pF。這給出兩個預(yù)測來控制if-then-else語句的兩邊; 第三,IA-64的預(yù)測機制允許在編譯時對程序作優(yōu)化,消除轉(zhuǎn)移、提高效率。例如,假定程序中原有如下的語句:if (ab) then c=c+1 else d=d*e+f 通過編譯的優(yōu)化,可以消除條件語句中的轉(zhuǎn)移指令,把它轉(zhuǎn)化成預(yù)測執(zhí)行: pT, pF = CMP(ab) if (pT) C=C+1 if (pF) d=d*e+f 于是,成功地實現(xiàn)了通過預(yù)測機制消除了轉(zhuǎn)移。此外,編譯程序還可以把pT和pF后的指令調(diào)度成讓處理器并行地執(zhí)行它們,然后視pT和pF的狀態(tài),采用一邊的結(jié)果。 另外值得注意的是有若干種

34、不同的比較指令,它們用不同方法寫預(yù)測,包括無條件比較和并行比較。8. 寄存器堆棧寄存器堆棧Itanium體系結(jié)構(gòu)在過程調(diào)用和返回接口,通過編譯器控制的改名,避免寄存器不必要的流出和填入。IA-64增加了一個通用寄存器窗來支持高效的函數(shù)調(diào)用。這個128項的通用寄存器窗被分為一個32項的全程存儲器和一個96項的堆棧存儲器。IA-64允許編譯程序在被調(diào)用的函數(shù)過程入口,設(shè)置一條ALLOC指令創(chuàng)立一個最多包含96項的新寄存器堆棧,對于調(diào)用的過程可用新的寄存器幀,不需要寄存器的流出和填入(或者由調(diào)用者或者是被調(diào)用者)。寄存器訪問發(fā)生,由在指令中的虛擬寄存器標(biāo)識,通過一基寄存器改名為物理寄存器。 被調(diào)用者

35、可以自由地使用可用的寄存器而不需流出和最后恢復(fù)調(diào)用者的寄存器。在返回時,恢復(fù)調(diào)用程序的寄存器堆棧幀。對編譯程序來說似乎有長度無限的物理寄存器堆棧,從而降低了函數(shù)調(diào)用的開支、提高了效率;如果在調(diào)用和返回時,沒有足夠的寄存器可供使用(堆棧溢出),那么處理器將被阻塞,等待卸出和裝入寄存器,直到有足夠的寄存器為止; 在返回側(cè),基寄存器存儲為調(diào)用者在調(diào)用前所訪問的寄存器的值。若某些調(diào)用者的寄存器可能已經(jīng)由硬件流出而尚未恢復(fù)。在這種情況(堆棧下溢)下,返回暫停處理器直至處理器已經(jīng)恢復(fù)適當(dāng)?shù)恼{(diào)用者的寄存器數(shù)。硬件能利用顯式的寄存器堆棧幀信息以在寄存器堆棧和內(nèi)存間在最好的機會流出和填入寄存器(獨立于調(diào)用者和被

36、調(diào)用者過程)。 9. 分支分支除了通過使用預(yù)測刪除分支之外,提供了若干機制減少分支預(yù)測失敗的比率和保留預(yù)測失敗的分支的成本。這些機制提供方法使編譯器把關(guān)于分支條件的通信信息送至處理器。提供分支預(yù)測指令,它們能用于通信分支的目標(biāo)地址和單元的早期指示。編譯器試圖指示分支是否應(yīng)動態(tài)地或靜態(tài)地預(yù)測。處理器能用此信息初始化分支預(yù)測體系結(jié)構(gòu),允許好的預(yù)測,甚至在第一次遇到分支時。對于無條件分支或編譯器有關(guān)于可能的分支行為時,這是有益的。 對于間接分支,一分支寄存器用于保持目標(biāo)地址。當(dāng)目標(biāo)地址能早些計算時,分支預(yù)測指令提供哪個寄存器將用于這種情況。分支預(yù)測指令也能通知間接分支是過程返回,允許調(diào)用返回堆棧體系

37、結(jié)構(gòu)的有效使用。提供特殊的閉循環(huán)分支以加速計數(shù)的循環(huán)和模調(diào)度的循環(huán)。這些分支和它們的相關(guān)的分支預(yù)測指令提供允許很好預(yù)測循環(huán)終止的信息,因此,消除預(yù)測失敗的開銷和減少循環(huán)開銷。10. 寄存器旋轉(zhuǎn)寄存器旋轉(zhuǎn)軟件流水線:循環(huán)步之間相互獨立的循環(huán)可以象硬件流水線一樣執(zhí)行,即下一個循環(huán)步可以在上一個循環(huán)步結(jié)束前開始執(zhí)行。這也可以稱為軟件流水線。傳統(tǒng)的體系結(jié)構(gòu)在同時執(zhí)行多個循環(huán)步時,需要把循環(huán)拆開和軟件重新命名寄存器。IA-64引入了兩個新特性:旋轉(zhuǎn)寄存器存儲器和蘊含預(yù)測來支持軟件水線。IA-64能夠通過旋轉(zhuǎn)寄存器機制為每個循環(huán)步提供自己的寄存器,并且不需要把循環(huán)拆開,使得軟件流水線能夠適用于更加廣泛范圍

38、的循環(huán),包括小的和大的循環(huán),大大減少循環(huán)的附加開銷11. 浮點體系結(jié)構(gòu)浮點體系結(jié)構(gòu)Itanium體系結(jié)構(gòu)定義浮點體系結(jié)構(gòu),它對于單精度、雙精度和擴(kuò)展的雙精度(80位)數(shù)據(jù)類型完全支持IEEE。某些擴(kuò)展,例如混合的乘法和加法操作、最小和最大功能和具有比擴(kuò)展的雙精度存儲格式范圍更大的寄存器文件格式等。定義了128個浮點寄存器。在這些中,96個寄存器是旋轉(zhuǎn)的(不堆棧的)能用于模調(diào)度循環(huán)。為猜測提供了多個浮點狀態(tài)寄存器。Itanium有并行的FP指令,它在兩個32位單精度數(shù)上操作,駐留在單個浮點寄存器中,并行且獨立。這些指令大大增強單精度浮點計算的吞吐率和增強了3D密集的應(yīng)用程序和游戲的性能。 12.

39、 多媒體支持多媒體支持Itanium體系結(jié)構(gòu)有多媒體指令,它把通用寄存器作為8個8位、4個16位或兩個32元素的級連。這些指令在每個元素上并行操作、相互獨立。它們對于建立由具有聲音和圖象的應(yīng)用程序使用的高性能壓縮解壓算法是很有用的。Itanium 多媒體指令是與HP的MAX-2多媒體技術(shù)和Intel的MMX技術(shù)指令和流SIMD擴(kuò)充指令技術(shù)語義兼容的。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)可見的。本章描述對于應(yīng)用程序體系結(jié)構(gòu)可見的執(zhí)行順序狀態(tài)和規(guī)則。1. 應(yīng)用程序寄存器狀態(tài)應(yīng)用程序寄存器狀態(tài)以下是一組對于應(yīng)用

40、程序可見的寄存器清單,如圖 14-3 所示: 通用寄存器 General Register (GR)通用寄存器文件,GR0 GR127。當(dāng)執(zhí)行IA-32指令時,IA-32的整型和段寄存器包含在GR8 FR31中。 浮點寄存器 Floating Register (FR)浮點寄存器文件,F(xiàn)R0 FR127。當(dāng)執(zhí)行IA-32指令時,IA-32浮點和多媒體寄存器包含在FR8 FR31中。 預(yù)測寄存器 Predicate Register (PR)PR0 PR63,64個單位寄存器,用于預(yù)測和分支。 分支寄存器 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)一組單位值集,用于對齊陷入、性能監(jiān)視器和監(jiān)視浮點寄存器使用。 處理器標(biāo)識符 Processor Identifiers(

42、CPUID)描述處理器實現(xiàn)有關(guān)特性的寄存器。IA-32應(yīng)用程序寄存器狀態(tài)整個地包含在更大的Itanium應(yīng)用程序寄存器集中且可由Itanium指令訪問。IA-32指令不能訪問Itanium寄存器集。未定義的寄存器或者是保留的或者是忽略的。訪問保留的寄存器引起非法操作故障。對于忽略的寄存器的讀,返回0。軟件可以寫任何值至忽略的寄存器,而硬件忽略所寫的值。在可變尺寸的寄存器集中,在具體處理器中未實現(xiàn)的寄存器也是保留的寄存器。對于這些未實現(xiàn)的寄存器之一的訪問引起保留的寄存器字段故障。在定義的寄存器內(nèi),未定義的字段或者是保留的或者是忽略的。對于保留的字段,在讀時,硬件始終返回0。軟件對這些字段必須始終

43、寫0。在保留的字段中寫入非0的企圖,引起保留的寄存器字段故障。保留的字段將來可能使用。對于忽略的字段,在讀時,硬件返回0,除非,有注釋。軟件可以寫任何值至這些字段,因為,硬件忽略任何所寫的值。除了,另有注明。某些IA-32忽略的字段將來可能用。對于在寄存器中定義的字段,值未定義的是保留的。軟件必須始終寫定義的值至這些字段。寫保留的值的任何企圖,引起保留的寄存器字段故障。一些寄存器是只讀寄存器。對于只讀寄存器的寫,引起非法操作故障。當(dāng)字段標(biāo)記為保留的時,它基本上是為了與將來的處理器兼容,軟件對待這些字好像有將來,雖然不知結(jié)果。當(dāng)處理保留的字段時,軟件宜遵循以下指南: 不依賴任一保留的字段的狀態(tài),

44、在測試前,屏蔽所有保留的字段。 當(dāng)存儲至內(nèi)存或寄存器時,不依賴任一保留的字段的狀態(tài)。 不依賴得到寫至保留的或忽略的字段的信息的能力。 只要可能,用從相同的寄存器上次返回的值重新裝入保留的或忽略的字段;否則,裝入0。2. 通用寄存器通用寄存器一組128個(64位)通用寄存器為整型和整型多媒體計算提供中心資源。它們的編號是GR0至GR127,對在所有特權(quán)級的所有程序是可用的。每個通用寄存器有64位正常數(shù)據(jù)存儲,加一個附加位,NaT(Not a Thing 不是一事件)位,它用以追蹤延遲推理異常。通用寄存器分成兩個子集。通用寄存器0至31稱為靜態(tài)通用寄存器。其中,GR0是特殊的,當(dāng)作為一個源操作數(shù),

45、終是讀回0,企圖寫GR0引起非法操作故障。通用寄存器32至127稱為堆棧的通用寄存器。堆棧的寄存器對于分配一由可編程的局部和輸出寄存器數(shù)構(gòu)成的寄存器堆棧幀的程序是有用的。通用寄存器8至31包含IA-32的整型、段選擇子和段描述符寄存器。3. 浮點寄存器浮點寄存器一組128個(82位)浮點寄存器用于所有浮點計算。它們的編號是FR0至FR127,對于在所有特權(quán)級的所有程序可用。浮點寄存器分成兩個子集。浮點寄存器0至31稱為靜態(tài)浮點寄存器。其中,F(xiàn)R0和FR1是特殊的。當(dāng)作為源操作數(shù)時,F(xiàn)R0終是讀回0.0而FR1讀回1.0。若用它們中的任一個作為目的操作數(shù),則引起故障。用稱為NaTVal(Not

46、a Thing Value 不是一事件值)的特殊寄存器值記錄延遲推理異常。浮點寄存器32至127稱為旋轉(zhuǎn)的浮點寄存器。這些寄存器能有計劃地改名以加速循環(huán)。浮點寄存器8至31,當(dāng)執(zhí)行IA-32指令時,包含IA-32浮點和多媒體寄存器。4. 預(yù)測寄存器預(yù)測寄存器一組64個(1位)預(yù)測寄存器用于保持比較指令的結(jié)果。它們的編號是PR0至PR63,對于所有特權(quán)級的所有程序可用。這些寄存器用于指令的條件執(zhí)行。預(yù)測寄存器分成兩個子集。預(yù)測寄存器0至15,稱為靜態(tài)預(yù)測寄存器。其中,PR0當(dāng)作為源操作數(shù)時,始終讀回“1”;當(dāng)用作目的操作數(shù)時,結(jié)果被廢棄。靜態(tài)預(yù)測寄存器也用在條件分支中。預(yù)測寄存器16至63,稱為

47、旋轉(zhuǎn)的預(yù)測寄存器。5. 分支寄存器分支寄存器一組8個(64位)分支寄存器用于保持分支信息。它們的編號是BR0至BR7,對于在所有特權(quán)級的所有程序可用。分支寄存器,對于間接分支,用于規(guī)定分支的目標(biāo)地址。6. 指令指針指令指針指令指針(IP)保持與當(dāng)前正執(zhí)行的指令集束的地址。IP用一mov ip指令可以直接讀。IP不能直接寫,但在指令執(zhí)行時增量并能用分支指令設(shè)置為一新值。因為指令集束是16字節(jié)且是16字節(jié)對齊的,IP的最低四位始終為0。對于IA-32指令集執(zhí)行時,IP保持當(dāng)前正執(zhí)行的指令的零擴(kuò)展的32位虛擬線性地址。指令是字節(jié)對齊的,因此,對于IA-32指令集執(zhí)行時,IP的最低四位是保留的。7.

48、當(dāng)前幀標(biāo)記當(dāng)前幀標(biāo)記每一個通用寄存器堆棧幀與一個幀標(biāo)記相聯(lián)系。幀標(biāo)記描述通用寄存器堆棧的狀態(tài)。當(dāng)前幀標(biāo)記(CFM)保持當(dāng)前堆棧幀的狀態(tài)。CFM不能直接讀或?qū)憽瑯?biāo)記包含堆棧幀的各部分的尺寸,加上三個寄存器改名基礎(chǔ)值(用在寄存器旋轉(zhuǎn)中)。幀標(biāo)記的布局,如圖14-3中所示,字段在表14-3中描述。8. 應(yīng)用寄存器應(yīng)用寄存器 應(yīng)用寄存器文件包括對于IA-32和Itanium指令集體系結(jié)構(gòu)兩者應(yīng)用程序可見的處理器功能的特殊目的的數(shù)據(jù)寄存器和控制寄存器。這些寄存器能被基于Itanium應(yīng)用程序訪問(除了,另有注釋)。表14-6包含一應(yīng)用程序寄存器清單。14.3 x86系列的嵌入式處理器系列的嵌入式處理器

49、微處理器的嵌入式應(yīng)用(即把微處理器嵌入至某一智能設(shè)備例如,機頂盒、手機中),是微處理器發(fā)展最快、應(yīng)用最廣的一個方面。據(jù)統(tǒng)計,全世界生產(chǎn)的大規(guī)模集成電路芯片,80%應(yīng)用于嵌入式系統(tǒng)中。AMD公司的Geode LX處理器是一種x86系列的嵌入式處理器,也是我國計劃重點發(fā)展的一種嵌入式處理器。我國科技部與AMD公司簽訂了 Geode系列處理器的芯片技術(shù)轉(zhuǎn)讓協(xié)議,從而為在我國大量生產(chǎn)與推擴(kuò)Geode系列處理器奠定了基礎(chǔ)。本章概要介紹Geode LX處理器的結(jié)構(gòu)與功能。14.3.1 通用描述通用描述AMD Geode LX處理器是完整的x86處理器,是為用于娛樂、教育和商業(yè)的功能強大的嵌入式設(shè)備特別設(shè)計

50、的??梢詽M足消費者和商業(yè)專業(yè)人員的需要。它是瘦客戶機、交互式機頂盒、單板計算機和移動計算設(shè)備等嵌入式應(yīng)用的杰出解決方案。利用1.2V電壓的核,使功耗極低,導(dǎo)致電池壽命更長、外形更小,可做到無風(fēng)扇設(shè)計。處理器核提供與大量的internet設(shè)備的最大的兼容性并具有若干其他功能,包括圖形和視頻的智能集成,提傳了真正的系統(tǒng)級多媒體解決方案。Geode LX 處理器的結(jié)構(gòu)如圖14-5所示: 14.3.2 體系結(jié)構(gòu)概要體系結(jié)構(gòu)概要Geode LX處理器能分成如圖14-2所示的主要功能塊:處理器核 GeodeLink控制處理器 GeodeLink接口單元 GeodeLink存儲控制器 圖形處理器 顯示控制器

51、 視頻處理器 TFT控制器/視頻輸出端口 視頻輸入端口 GeodeLink PCI橋 安全塊1. CPU核核x86核由整數(shù)單元、緩存存儲器子系統(tǒng)和與x87兼容的FPU(浮點單元)組成。整數(shù)單元包括指令流水線和相關(guān)的邏輯。存儲器子系統(tǒng)包括指令和數(shù)據(jù)緩存、轉(zhuǎn)換查找緩沖器(TLB)及至GeodeLink接口單元(GLIU)的接口。從功能來說,Geode LX處理器的功能結(jié)構(gòu)如圖14-6所示:從處理器內(nèi)部來說,主要由三部分組成:32位的類似386的處理器,它執(zhí)行整數(shù)運算,實現(xiàn)實模式和保護(hù)模式兩種操作模式,片內(nèi)的MMU實現(xiàn)請頁式虛擬存儲器管理;類似x87的浮點處理器,實視浮點運算與MMX指令;由64KB

52、指令緩存與64KB數(shù)據(jù)緩存組成的片內(nèi)一級緩存器(L1)和由128KB持令與數(shù)據(jù)說一的二級片上緩存器(L2)。從性能上,由u與v兩條流水線組成更為強大的流水線功能。由核支持的指令集是Intel Pentium、AMD-K6微處理器(包含了8086的全部指令)和Athlon FPU與Geode LX處理器特定的指令的組合。(1) 整數(shù)單元整數(shù)單元整數(shù)單元由8段流水線和所有必需的支持硬件組成以保持流水線有效運行。整數(shù)單元中的指令流水線由8段組成:1) 指令預(yù)取 原始指令數(shù)據(jù)從指令內(nèi)存緩存中取。2) 指令預(yù)譯碼 從原始指令數(shù)據(jù)中抽取前綴字節(jié)。此譯碼向前查找至下一指令。3) 指令譯碼 執(zhí)行指令數(shù)據(jù)的全譯

53、碼。把指令長度回送至預(yù)取單元,允許預(yù)取單元移位適當(dāng)字節(jié)數(shù),以到達(dá)下一條指令的開始。4) 指令隊列 FIFO包含譯碼的指令。允許指令譯碼繼續(xù)下去,甚至流水線是停止向下流。在此階段執(zhí)行數(shù)據(jù)操作數(shù)地址計算的寄存器讀。 5) 地址計算#1 - 計算操作數(shù)數(shù)據(jù)的線性地址(若要求)和向數(shù)據(jù)內(nèi)存緩存發(fā)出請求。微碼能超越流水線且若多盒指令要求附加的數(shù)據(jù)操作數(shù),在此處插入一微盒。6) 地址計算#2 操作數(shù)數(shù)據(jù)被返回(若要求)和若數(shù)據(jù)緩存命中,設(shè)置執(zhí)行階段。在數(shù)據(jù)操作數(shù)地址上執(zhí)行段界限檢查。為設(shè)置至執(zhí)行單元讀ROM。7) 執(zhí)行單元 - 為算術(shù)或邏輯運算從寄存器和/或內(nèi)存讀取并饋至算術(shù)邏輯單元(ALU)。為從流水線

54、下來的第一條指令盒,ROM始終點火。若指令要求多個執(zhí)行單元階段完成,微碼能超越流水線和在此處插入附加的盒。8) 回寫 執(zhí)行單元階段的結(jié)果寫至寄存器文件或數(shù)據(jù)內(nèi)存。(2) 內(nèi)存管理單元內(nèi)存管理單元內(nèi)存管理單元(MMU)把由整數(shù)單元提供的線性地址轉(zhuǎn)換為物理地址,由緩存單元和內(nèi)部總線接口單元使用。內(nèi)存管理過程是與x86兼容的,堅持標(biāo)準(zhǔn)的分頁機制。MMU也包合裝入(load)/存儲(store)單元,它有責(zé)任調(diào)度緩存和外部內(nèi)存訪問。此load/store單元合并了兩個性能增強特性: load-store重新排序 - 給由整數(shù)單元要求的讀優(yōu)先于寫至外部內(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ù)流水線。為支持指令的有效交付,緩存和子系統(tǒng)有單時鐘訪問的64KB 16路組相關(guān)的指令緩存和16項全相關(guān)的TLB。當(dāng)在保護(hù)模式時,此TLB執(zhí)行必需的地址轉(zhuǎn)換。對于數(shù)據(jù),有64KB 16路組相關(guān)的回寫緩存和16項全相關(guān)的TLB。當(dāng)指令或數(shù)據(jù)TLB有丟失時,有第二級統(tǒng)一的(指令和數(shù)據(jù))64項2路組相關(guān)TLB,它用附加的時鐘訪問。當(dāng)指令或數(shù)據(jù)緩存或TLB有丟失時,訪問必須進(jìn)至GeodeLink內(nèi)存控制器(GLMC)進(jì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)由于緩存丟失,要求外部內(nèi)存儲器訪問時,物理地址傳遞至總線控制單元,它轉(zhuǎn)換周期為GeodeLink周期。(5) 浮點單元浮點單元浮點單元(FPU)是一流水線的算術(shù)單元,它執(zhí)行IEEE 754標(biāo)準(zhǔn)的浮點運算。支持的指令集是x87、MMX和3DNow。FPU是流水線機制具有指令的動態(tài)調(diào)度以最小化由于數(shù)據(jù)依賴的停頓。它履行超出順序的執(zhí)行和寄存器改名。設(shè)計以支持從整數(shù)核的每時種的指令流出比。數(shù)據(jù)路徑

57、為單精度算術(shù)運算優(yōu)化。擴(kuò)展的精度指令在微碼中處理和要求多遍通過流水線。有一執(zhí)行流水線和一load/store流水線。這允許load/store操作與算術(shù)運算指令并行執(zhí)行。2. GeodeLink控制處理器控制處理器GeodeLink控制處理器(GLCP)用于復(fù)位控制、宏時鐘管理和在Geode LX處理器中提供的調(diào)試支持。它包含JTAG接口和掃描鏈控制邏輯。它支持芯片復(fù)位,包括啟動PLL控制和編程和運行時電源管理宏時鐘控制。JTAG支持包括依從IEEE 114914.3.1的TAP控制器。通過在TAP控制器中的JTAG接口能得到CPU控制和能訪問所有的內(nèi)部寄存器包括核寄存器。通過此JTAG和TA

58、P控制器接口支持電路內(nèi)仿真(ICE)功能。GLCP也包括同伴設(shè)備接口。此同伴設(shè)備有若干獨特的信號連接至此模塊,以支持Geode LX處理器復(fù)位、中斷和系統(tǒng)電源管理。3. GeodeLink 接口單元接口單元兩個接口單元(GLIU0和GLIU1)一起構(gòu)成從GeodeLink體系結(jié)構(gòu)導(dǎo)出的內(nèi)部總線。GLIU0連接5個高帶寬模塊與第7個一起連接至GLIU1,它連接5個低帶寬模塊。4. GeodeLink 存儲器控制器存儲器控制器GeodeLink存儲器控制器(GLMC)是在典型的Geode LX處理器系統(tǒng)中需要的所有存儲器的源。GLMC支持具有64位的數(shù)據(jù)總線和支持200MHz、400MT/S DDR(雙數(shù)據(jù)速率)。需要存儲器的模塊是CPU核、圖形處理器、顯示控制器、視頻輸入端口和安全塊。因為GLMC支持CPU核和顯示子系統(tǒng)兩者需要的存儲器,典型地稱為UMA(統(tǒng)一的存儲器體系結(jié)構(gòu))子系統(tǒng)。GLMC也支持對主存儲器的PCI訪問。最多可有四個體,每個體中最多有8個設(shè)備,每個體支持最多512MB。四個體意味著在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論