版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 教學(xué)提示:Intel 8086/8088 CPU誕生至今已經(jīng)20多年了,期間Intel公司又相繼推出了80286、80386、80486(統(tǒng)稱為80X86)及Pentium處理器。這些CPU都是向下兼容的,即它們的指令系統(tǒng)都包括前期處理器的全部指令,并分別進(jìn)行了指令擴(kuò)展,從而提供了更強(qiáng)大的功能。本章的主要學(xué)習(xí)目的是熟悉高性能微機(jī)技術(shù),了解高檔微處理器基本結(jié)構(gòu)和新增指令系統(tǒng)。 教學(xué)要求:通過(guò)本章的學(xué)習(xí),要了解386以上的CPU的寄存器、新增的指令集的知識(shí),了解計(jì)算機(jī)的發(fā)展趨勢(shì)。高檔微處理器介紹高檔微處理器介紹12.1 高性能微機(jī)技術(shù)簡(jiǎn)介高性能微機(jī)技術(shù)簡(jiǎn)介 隨著VLSI(超大規(guī)模集成電路)的出現(xiàn)
2、和發(fā)展,芯片集成度顯著提高,價(jià)格不斷下降,從而提高了計(jì)算機(jī)的性能價(jià)格比,使得過(guò)去在大、中、小型計(jì)算機(jī)中才采用的一些現(xiàn)代技術(shù)(例如,流水線技術(shù)、高速緩沖存儲(chǔ)器Cache和虛擬存儲(chǔ)器等)下移到微機(jī)系統(tǒng)中來(lái)。12.1.1 12.1.1 流水線技術(shù)流水線技術(shù) 流水線技術(shù)是一種同時(shí)進(jìn)行若干操作的并行處理方式。類似于工廠的流水作業(yè)裝配線。在計(jì)算機(jī)中把CPU的一個(gè)操作(分析指令,加工數(shù)據(jù)等)進(jìn)一步分解成多個(gè)可以單獨(dú)處理的子操作,使每個(gè)子操作在一個(gè)專門的硬件上執(zhí)行,這樣,一個(gè)操作需順序地經(jīng)過(guò)流水線中多個(gè)硬件的處理才能完成。但前后連續(xù)的幾個(gè)操作可以依次流入流水線中,在各個(gè)硬件間重疊執(zhí)行,這種操作的重疊提高了CP
3、U的效率。1.1. 標(biāo)量流水工作原理標(biāo)量流水工作原理 通常CPU按順序方式執(zhí)行指令,執(zhí)行完一條指令后,才取出下一條指令來(lái)執(zhí)行,而且,一條機(jī)器指令內(nèi)各個(gè)微操作也是順序串行執(zhí)行的。順序執(zhí)行的優(yōu)點(diǎn)是控制簡(jiǎn)單,但機(jī)器各部分的利用率不高。 假如把兩條指令或若干條指令在時(shí)間上重疊起來(lái)將大幅度提高程序的執(zhí)行速度。如圖12.1給出了一次重疊方式。所謂“一次重疊”指的是任何時(shí)候都只是“執(zhí)行K”與“分析K+1”重疊。由于這兩個(gè)子過(guò)程是分別由分析和執(zhí)行兩個(gè)獨(dú)立部件實(shí)現(xiàn)的,所以就不必等待上一條指令的“分析”、“執(zhí)行”子過(guò)程都完成后才送入下一條指令,而是可以在上條指令的“分析”子過(guò)程結(jié)束,轉(zhuǎn)入“執(zhí)行”子過(guò)程時(shí),就可接收
4、下一條指令進(jìn)入“分析”子過(guò)程。這樣,機(jī)器的吞吐率(這里指單位時(shí)間內(nèi)機(jī)器所能處理的指令數(shù)或是機(jī)器能輸出的結(jié)果數(shù)量),就由于把執(zhí)行一條指令的過(guò)程分解成兩個(gè)子過(guò)程而提高一倍。顯然,上述“重疊”和“流水”在概念上是密切聯(lián)系的??梢赃@樣看:“一次重疊”和“流水”的差別在于前者把一條指令的執(zhí)行過(guò)程只分解為兩個(gè)子過(guò)程,而后者則是分解成更多個(gè)子過(guò)程。也就是說(shuō),標(biāo)量流水是重疊方式的進(jìn)一步發(fā)展,如圖12.2所示。圖12.1 一次重疊方式 圖12.2 流水方式 若把執(zhí)行一條指令分解成“取指令碼”、“指令譯碼”、“取操作數(shù)”和“執(zhí)行”子過(guò)程,則指令執(zhí)行時(shí)空?qǐng)D如圖12.2所示。當(dāng)流水線正常流動(dòng)時(shí),是每隔Vt(=ti+1
5、-ti)就會(huì)流出一個(gè)結(jié)果;然而,在指令剛開始流動(dòng)時(shí),情況并不如此,由圖可看出,在t4之前(即首條指令流入后的4Vt時(shí)間內(nèi))流水線并沒有流出任何結(jié)果。也就是說(shuō),對(duì)首條指令來(lái)講,流水方式和順序方式是一樣的。 以上討論的是指令執(zhí)行流水線,經(jīng)常采用的還有運(yùn)算操作流水線,在這種流水線中,把運(yùn)算操作分成幾個(gè)子過(guò)程,每個(gè)子過(guò)程設(shè)置專門的邏輯電路完成指定的操作。和上述原理類似,可實(shí)現(xiàn)幾個(gè)子過(guò)程并行處理。2. 2. 超流水線超標(biāo)量方法超流水線超標(biāo)量方法 超流水線是指某些CPU內(nèi)部的流水線超過(guò)通常的56步以上,例如Pentium Pro的流水線就長(zhǎng)達(dá)14 步,Pentium 4為20步。將流水線設(shè)計(jì)的步(級(jí))數(shù)越
6、多,其完成一條指令的速度越快,因此才能適應(yīng)工作主頻更高的CPU。超標(biāo)量(Super Scalar)是指在CPU中有一條以上的流水線,并且每時(shí)鐘周期內(nèi)可以完成一條以上的指令,這種設(shè)計(jì)就叫超標(biāo)量技術(shù)。一般地,超級(jí)標(biāo)量機(jī)具有如下特點(diǎn)。 (1) 配置有多個(gè)性能不同的處理部件,采用多條流水線并行處理。 (2) 能同時(shí)對(duì)若干條指令進(jìn)行譯碼,將可以并行執(zhí)行的指令送往不同的執(zhí)行部件,從而達(dá)到在每個(gè)周期啟動(dòng)多條指令的目的。 (3) 在程序運(yùn)行期間,由硬件(通常是狀態(tài)記錄部件和調(diào)度部件)來(lái)完成指令調(diào)度。從原理上講,超級(jí)標(biāo)量機(jī)主要是借助硬件資源重復(fù)(例如有兩套譯碼器和ALU等)來(lái)實(shí)現(xiàn)空間的并行操作。 3. 3. 超
7、長(zhǎng)指令字技術(shù)超長(zhǎng)指令字技術(shù) 超長(zhǎng)指令字(Very Long Instruction Word,VLIW)方法是由美國(guó)耶魯大學(xué)的Fisher教授首先提出的,它與超級(jí)標(biāo)量方法有許多類似之處,但它以一條長(zhǎng)指令來(lái)實(shí)現(xiàn)多個(gè)操作的并行執(zhí)行,以減少對(duì)存儲(chǔ)器的訪問。這種長(zhǎng)指令往往長(zhǎng)達(dá)上百位,每條指令可以做幾種不同的運(yùn)算,這些運(yùn)算都要發(fā)送到各種功能部件上去完成,哪些操作可以并行執(zhí)行,這是在編譯階段選擇的。其主要特點(diǎn)如下所述。 (1) 只有一個(gè)控制器,每個(gè)周期啟動(dòng)一條長(zhǎng)指令。 (2) 超長(zhǎng)指令字被分成多個(gè)控制字段,每個(gè)字段直接獨(dú)立地控制每個(gè)功能部件。 (3) 含有大量的數(shù)據(jù)通路和功能部件,由于編譯器在編譯時(shí)已考慮
8、到可能出現(xiàn)的相關(guān)問題,故控制硬件較簡(jiǎn)單。 (4) 在編譯階段完成超長(zhǎng)指令中多個(gè)可并行執(zhí)行操作的調(diào)度。4 其他相關(guān)技術(shù)其他相關(guān)技術(shù) 1) 亂序執(zhí)行技術(shù) 亂序執(zhí)行(Out-Of-Order Execution)是指CPU采用了允許將多條指令不按程序規(guī)定的順序分開發(fā)送給各相應(yīng)電路單元處理的技術(shù)。比方說(shuō)程序某一段有7條指令,此時(shí)CPU將根據(jù)各單元電路的空閑狀態(tài)和各指令能否提前執(zhí)行的具體情況分析后,將能提前執(zhí)行的指令立即發(fā)送給相應(yīng)電路執(zhí)行。當(dāng)然,在各單元不按規(guī)定順序執(zhí)行完指令后,還必須由相應(yīng)電路再將運(yùn)算結(jié)果重新按原來(lái)程序指定的指令順序排列后才能返回程序。這種將各條指令不按順序拆散后執(zhí)行的運(yùn)行方式就叫亂序
9、執(zhí)行(也叫錯(cuò)序執(zhí)行)技術(shù)。采用亂序執(zhí)行技術(shù)的目的是為了使CPU內(nèi)部電路滿負(fù)荷運(yùn)轉(zhuǎn)并相應(yīng)提高了CPU的運(yùn)行程序的速度。 2) 分枝預(yù)測(cè)和推測(cè)執(zhí)行技術(shù) 分枝預(yù)測(cè)(Branch Prediction)和推測(cè)執(zhí)行(Speculation Execution) 是CPU動(dòng)態(tài)執(zhí)行技術(shù)中的主要內(nèi)容。采用分枝預(yù)測(cè)和動(dòng)態(tài)執(zhí)行的主要目的是為了提高CPU的運(yùn)算速度。推測(cè)執(zhí)行是依托于分枝預(yù)測(cè)基礎(chǔ)上的,在分枝預(yù)測(cè)程序是否分枝后所進(jìn)行的處理也就是推測(cè)執(zhí)行。程序轉(zhuǎn)移(分支)對(duì)流水線影響很大,尤其是在循環(huán)設(shè)計(jì)中。不僅在循環(huán)中對(duì)循環(huán)條件的判斷占用了大量的CPU時(shí)間,更重要的是循環(huán)轉(zhuǎn)移破壞了流水線的正常流水,影響了流水線的性能。
10、為此,Pentium用分支目標(biāo)緩沖器BTB(Branch Target Buffer,一個(gè)小的Cache)來(lái)動(dòng)態(tài)地預(yù)測(cè)程序分支。動(dòng)態(tài)分支預(yù)測(cè)算法推測(cè)性地在過(guò)去曾執(zhí)行過(guò)的相應(yīng)指令的地址處運(yùn)行取代碼周期,這樣的取代碼周期根據(jù)過(guò)去的執(zhí)行歷史來(lái)運(yùn)行,而不管檢索得到的指令是否與當(dāng)前執(zhí)行的指令序列有關(guān)。 當(dāng)指令導(dǎo)致程序分支時(shí),BTB就記下這條指令的地址和分支目標(biāo)的地址(即存儲(chǔ)過(guò)去的程序分支處的程序地址和轉(zhuǎn)移目標(biāo)地址)。當(dāng)預(yù)取部件取到新的分支時(shí),就與BTB中的所有信息作比較,若有相符的信息時(shí),即預(yù)測(cè)分支,分支預(yù)取部件開始從各處開始預(yù)?。环駝t,原預(yù)取部件繼續(xù)順序預(yù)取。 當(dāng)BTB判斷正確時(shí),分支程序即刻得到譯碼
11、。從循環(huán)程序來(lái)看,在開始進(jìn)入循環(huán)和退出循環(huán)時(shí),BTB會(huì)發(fā)生判斷錯(cuò)誤,需重新計(jì)算分支地址。循環(huán)10次,2次錯(cuò)誤8次正確,循環(huán)100次,2次錯(cuò)誤98次正確。因此,循環(huán)越多,BTB的效益越明顯。 3) 指令特殊擴(kuò)展技術(shù) 從最簡(jiǎn)單的計(jì)算機(jī)開始,指令序列便能取得運(yùn)算對(duì)象,并對(duì)它們執(zhí)行計(jì)算。對(duì)大多數(shù)計(jì)算機(jī)而言,這些指令同時(shí)只能執(zhí)行一次計(jì)算。如需完成一些并行操作,就要連續(xù)執(zhí)行多次計(jì)算。此類計(jì)算機(jī)采用的是“單指令單數(shù)據(jù)”(SISD)處理器。在介紹CPU性能中還經(jīng)常提到“擴(kuò)展指令”或“特殊擴(kuò)展”一說(shuō),這都是指CPU是否具有對(duì)X86指令集進(jìn)行指令擴(kuò)展而言。擴(kuò)展指令中最早出現(xiàn)的是Intel公司自己的“MMX”,其次
12、是AMD公司的“3D Now!”,最后是最近的Pentium III中的“SSE”及Pentium 4中的“SSE2”。12.1.2 RISC、SIMD簡(jiǎn)介簡(jiǎn)介 1. RISC CISC技術(shù)和RISC技術(shù)是以計(jì)算機(jī)指令系統(tǒng)的優(yōu)化方法來(lái)分類而形成的技術(shù)概念,它們代表著目前計(jì)算機(jī)指令系統(tǒng)的兩個(gè)截然不同的優(yōu)化方向。 最初,人們采用的優(yōu)化方法是增強(qiáng)計(jì)算機(jī)指令系統(tǒng)的功能,即設(shè)置一些功能復(fù)雜的指令,把一些原來(lái)由軟件實(shí)現(xiàn)的,常用的功能改用硬件的指令系統(tǒng)實(shí)現(xiàn),以提高計(jì)算機(jī)的執(zhí)行速度,這種計(jì)算機(jī)系統(tǒng)就被稱為復(fù)雜指令系統(tǒng)計(jì)算機(jī),即Complex Instruction Set Computer,簡(jiǎn)稱CISC。另一
13、種優(yōu)化方法是在20世紀(jì)80年代才發(fā)展起來(lái)的,其基本思想是盡量簡(jiǎn)化計(jì)算機(jī)指令功能,只保留那些功能簡(jiǎn)單、能在一個(gè)節(jié)拍內(nèi)執(zhí)行完成的指令,而把較復(fù)雜的功能用一段子程序來(lái)實(shí)現(xiàn),這種計(jì)算機(jī)系統(tǒng)就被稱為精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī),即Reduced Instruction Set Computer,簡(jiǎn)稱RISC。 RISC技術(shù)通過(guò)簡(jiǎn)化計(jì)算機(jī)指令功能,使指令的平均執(zhí)行周期減少,從而提高計(jì)算機(jī)的工作主頻,同時(shí)大量使用通用寄存器,來(lái)提高子程序執(zhí)行的速度。所以一般RISC計(jì)算機(jī)的速度是同等CISC計(jì)算機(jī)的3倍左右。2. SIMD2. SIMD技術(shù)技術(shù) 單指令多數(shù)據(jù)(Single Instruction Multiple Da
14、ta,SIMD)結(jié)構(gòu)的CPU有多個(gè)執(zhí)行部件,但都在同一個(gè)指令部件的控制下。SIMD在性能上有什么優(yōu)勢(shì)呢?以加法指令為例,單指令單數(shù)據(jù)(SISD)的CPU對(duì)加法指令譯碼后,執(zhí)行部件先訪問內(nèi)存,取得第一個(gè)操作數(shù);之后再一次訪問內(nèi)存,取得第二個(gè)操作數(shù);隨后才能進(jìn)行求和運(yùn)算。而在SIMD型CPU中,指令譯碼后幾個(gè)執(zhí)行部件同時(shí)訪問內(nèi)存,一次性獲得所有操作數(shù)進(jìn)行運(yùn)算。這個(gè)特點(diǎn)使得SIMD特別適合于多媒體應(yīng)用等數(shù)據(jù)密集型運(yùn)算。AMD公司的3D NOW!技術(shù)其實(shí)質(zhì)就是SIMD,這使K6-2處理器在音頻解碼、視頻回放、3D游戲等應(yīng)用中顯示出優(yōu)異性能。12.1.3 MMX12.1.3 MMX、SSESSE、SSE
15、2SSE2技術(shù)技術(shù)1. MMX技術(shù) MMX是為多媒體應(yīng)用而設(shè)計(jì)的,其實(shí),MMX的數(shù)據(jù)類型和指令系統(tǒng),不僅適合于多媒體操作,而且也適合于通信及信號(hào)處理等更寬的應(yīng)用領(lǐng)域,所以可以把它理解為多媒體與通信的擴(kuò)展(Multimedia and Modem eXtension,MMX)。 MMX是英語(yǔ)“多媒體指令集”的縮寫。共有57條指令,是Intel公司第一次對(duì)自1985年就定型的 X86指令集進(jìn)行的擴(kuò)展。MMX主要用于增強(qiáng)CPU對(duì)多媒體信息的處理,提高CPU處理3D圖形、視頻和音頻信息能力。MMX技術(shù)一次能處理多個(gè)數(shù)據(jù)。計(jì)算機(jī)的多媒體處理,通常是指動(dòng)畫再生、圖像加工和聲音合成等處理。在多媒體處理中,對(duì)
16、于連續(xù)的數(shù)據(jù)必須進(jìn)行多次反復(fù)的相同處理。利用傳統(tǒng)的指令集,無(wú)論是多小的數(shù)據(jù),一次也只能處理一個(gè)數(shù)據(jù),因此耗費(fèi)時(shí)間較長(zhǎng)。為了解決這一問題,在MMX中采用了SIMD(單指令多數(shù)據(jù)技術(shù)),可對(duì)一條命令多個(gè)數(shù)據(jù)進(jìn)行同時(shí)處理,它可以一次處理64bit任意分割的數(shù)據(jù)。其次,是數(shù)據(jù)可按最大值取齊。MMX的另一個(gè)特征是在計(jì)算結(jié)果超過(guò)實(shí)際處理能力的時(shí)候也能進(jìn)行正常處理。若用傳統(tǒng)的X86指令,計(jì)算結(jié)果一旦超出了CPU處理數(shù)據(jù)的限度,數(shù)據(jù)就要被截掉,而化成較小的數(shù)。而MMX利用所謂“飽和(Saturation)”功能,圓滿地解決了這個(gè)問題。計(jì)算結(jié)果一旦超過(guò)了數(shù)據(jù)大小的限度,就能在可處理范圍內(nèi)自動(dòng)變換成最大值。 MM
17、X技術(shù)擴(kuò)展了IA的指令系統(tǒng),大大增強(qiáng)了高級(jí)媒體和通信應(yīng)用的性能。這種擴(kuò)展(包括新的寄存器、數(shù)據(jù)類型和指令)與單指令多數(shù)據(jù)(SIMD)的并行執(zhí)行方式相結(jié)合,能顯著地加速如運(yùn)動(dòng)視頻、視頻圖形組合、圖像處理、音頻合成、語(yǔ)音合成與壓縮、電話技術(shù)、視頻會(huì)議以及2D與3D圖形等處理。這類處理的特點(diǎn)是使用密集的算法,對(duì)局部小型實(shí)型數(shù)組進(jìn)行重復(fù)操作。 MMX技術(shù)定義了一種簡(jiǎn)單靈活的軟件模型,它沒有新的操作模式,也沒有操作系統(tǒng)可見的狀態(tài)。現(xiàn)有各種軟件不用修改就可以在帶有MMX技術(shù)的IA處理器上正確運(yùn)行。 MMX技術(shù)對(duì)IA(Intel Architecture)編程環(huán)境的擴(kuò)展是: (1) 8個(gè)MMX寄存器(MM0
18、MM7)。 (2) 4種MMX數(shù)據(jù)類型(緊縮字節(jié)、緊縮字、緊縮雙字和4字)。 (3) MMX指令系統(tǒng)。 MMX寄存器。 MMX寄存器集由8個(gè)64位寄存器組成,如圖12.3所示。MMX指令使用寄存器名MM0MM7直接訪問MMX寄存器。這些寄存器只能用來(lái)對(duì)MMX數(shù)據(jù)類型進(jìn)行數(shù)據(jù)運(yùn)算,不能尋址存儲(chǔ)器。MMX指令中存儲(chǔ)器操作數(shù)的尋址仍使用標(biāo)準(zhǔn)的IA尋址方式和通用寄存器(EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP)來(lái)進(jìn)行。圖12.3 MMX寄存器集 盡管MMX寄存器在IA中是作為獨(dú)立寄存器來(lái)定義的,但是,它們是通過(guò)對(duì)FPU(Float Process Unit)數(shù)據(jù)寄存器堆棧(R0R
19、7)別名而來(lái)的。 MMX數(shù)據(jù)類型。 MMX技術(shù)定義了以下新的64位數(shù)據(jù)類型。 緊縮字節(jié):8個(gè)字節(jié)緊縮成一個(gè)64位;緊縮字:4個(gè)字緊縮成一個(gè)64位;緊縮雙字:2個(gè)雙字緊縮成一個(gè)64位;4字:一個(gè)64位,如圖12.4所示。 緊縮字節(jié)數(shù)據(jù)類型中字節(jié)的編號(hào)為07,第0字節(jié)在該數(shù)據(jù)類型的低有效位(位07),第7字節(jié)在高有效位(位5663)。緊縮字?jǐn)?shù)據(jù)類型中的字編號(hào)為03,第0字在該數(shù)據(jù)類型的位015,第3字在位4863。緊縮雙字?jǐn)?shù)據(jù)類型中的雙字編號(hào)為01,第0個(gè)雙字在位03l,第1個(gè)雙字在位3263。 圖12.4 數(shù)據(jù)格式和存儲(chǔ)方式 MMX指令可以用64位塊方式與存儲(chǔ)器進(jìn)行數(shù)據(jù)傳送,也可以用32位塊方式
20、與IA通用寄存器進(jìn)行數(shù)據(jù)傳送。但是,在對(duì)緊縮數(shù)據(jù)類型進(jìn)行算術(shù)或邏輯操作時(shí),MMX指令則對(duì)64位MMX寄存器中的字節(jié)、字或雙字進(jìn)行并行操作。 對(duì)緊縮數(shù)據(jù)類型的字節(jié)、字和雙字進(jìn)行操作時(shí),這些數(shù)據(jù)可以是帶符號(hào)的整型數(shù)據(jù),也可以是無(wú)符號(hào)的整型數(shù)據(jù)。 單指令多數(shù)據(jù)執(zhí)行方式。 MMX技術(shù)使用單指令多數(shù)據(jù)(SIMD)技術(shù)對(duì)緊縮在64位MMX寄存器中的字節(jié)、字或雙字實(shí)現(xiàn)算術(shù)和邏輯操作。例如,PADDSB指令將源操作數(shù)中的8個(gè)帶符號(hào)字節(jié)加到目標(biāo)操作數(shù)中的8個(gè)帶符號(hào)字節(jié)上,并將8字節(jié)的結(jié)果存儲(chǔ)到目標(biāo)操作數(shù)中。SIMD技術(shù)通過(guò)對(duì)多數(shù)據(jù)元素并行實(shí)現(xiàn)相同的操作來(lái)顯著地提高軟件性能。 MMX技術(shù)所支持的SIMD執(zhí)行方式可
21、以直接滿足多媒體、通信以及圖形應(yīng)用的需要,這些應(yīng)用經(jīng)常使用復(fù)雜算法對(duì)大量小數(shù)據(jù)類型(字節(jié)、字和雙字)數(shù)據(jù)實(shí)現(xiàn)相同操作。例如,大多數(shù)音頻數(shù)據(jù)都用16位(字)來(lái)量化,一條MMX指令可以對(duì)4個(gè)這樣的字同時(shí)進(jìn)行操作。視頻與圖形信息一般用8位(字節(jié))來(lái)表示,那么,一條MMX指令可以對(duì)8個(gè)這樣的字節(jié)同時(shí)進(jìn)行操作。 數(shù)據(jù)存放格式。 在向存儲(chǔ)器存儲(chǔ)字節(jié)、字和雙字時(shí),總是以緊縮數(shù)據(jù)類型存儲(chǔ)到連續(xù)的地址上,低有效數(shù)存儲(chǔ)在低地址區(qū)域,高有效數(shù)存儲(chǔ)在高地址區(qū)域。存儲(chǔ)器中的字節(jié)、字或雙字在排序時(shí),具有較低地址的字節(jié)總是較低的有效數(shù),具有較高地址的字節(jié)總是較高的有效數(shù)。當(dāng)考慮緊縮數(shù)據(jù)對(duì)界存儲(chǔ)時(shí),應(yīng)當(dāng)按4字節(jié)或8字節(jié)的邊界
22、對(duì)齊。 MMX寄存器中數(shù)的格式與存儲(chǔ)器中64位數(shù)的格式相同。MMX寄存器有兩種數(shù)據(jù)訪問模式:64位訪問模式與32位訪問模式。64位訪問模式用于64位存儲(chǔ)器訪問、MMX寄存器間的64位傳送、邏輯與算術(shù)運(yùn)算以及緊縮/展開指令。32位訪問模式僅用于32位存儲(chǔ)器訪問、32位傳送以及某些展開指令。 應(yīng)用舉例。 向量點(diǎn)積是對(duì)一些自然數(shù)據(jù)處理,如圖像、音頻、視頻數(shù)據(jù)等進(jìn)行處理時(shí),使用的基本算法之一。向量點(diǎn)積需要進(jìn)行大量的乘加法運(yùn)算,重復(fù)率高。采用MMX的緊縮乘加指令能有效地加速該類運(yùn)算。計(jì)算X= 。 ( )* ( )ia ib i程序如下: PXOR MM7,MM7Vloop: MOVQ MM0,EAX;取
23、a向量 MOVQ MM1,EBX ;取b向量 PMADDWD MM0,MM1;乘加 PADDD MM7,MM0 ADD EBX,8 ADD EAX,8 SUB ECX,4 JNZ Vloop MOVQ MM6,MM7;結(jié)果暫存 PSRLQ MM7,32;結(jié)果右移32位 PADDD MM7,MM6 MOVD result,MM7 ;存放32位結(jié)果2. SSE2. SSE技術(shù)技術(shù) SSE是英語(yǔ)“Internet Streaming SIMD Extensions因特網(wǎng)數(shù)據(jù)流單指令序列擴(kuò)展”的縮寫。SSE除保持原有的MMX指令外,又新增了70條指令,在加快浮點(diǎn)運(yùn)算的同時(shí),也改善了內(nèi)存的使用效率,使內(nèi)
24、存速度顯得更快一些。對(duì)游戲性能的改善十分顯著,按Intel的說(shuō)法,SSE對(duì)下述幾個(gè)領(lǐng)域的影響特別明顯:3D幾何運(yùn)算及動(dòng)畫處理、圖形處理(如Photoshop)、視頻編輯/壓縮/解壓(如MPEG和DVD)、語(yǔ)音識(shí)別以及聲音壓縮和合成等。 Intel的SSE是由一組隊(duì)結(jié)構(gòu)的擴(kuò)展所組成,它被設(shè)計(jì)為用以提高先進(jìn)的媒體和通信應(yīng)用程序的性能。該擴(kuò)展(包括新的寄存器、新的數(shù)據(jù)類型和新的指令)與單指令多數(shù)據(jù)(SIMD)技術(shù)相結(jié)合,有利于加速應(yīng)用程序的運(yùn)行。這個(gè)擴(kuò)展與MMX技術(shù)相結(jié)合,將顯著地提高多媒體應(yīng)用程序的效率。典型的應(yīng)用程序是:運(yùn)動(dòng)視頻,圖形和視頻的組合,圖像處理,音頻合成,語(yǔ)音的識(shí)別、合成與壓縮,電話
25、、視頻會(huì)議和2D、3D圖形。對(duì)于需要有規(guī)律地訪問大量數(shù)據(jù)的應(yīng)用程序,也可以從流式SIMD擴(kuò)展的高性能預(yù)取和存儲(chǔ)方面獲得好處。 SSE定義了一種簡(jiǎn)單靈活的軟件模式。這種新的模式引入了一種新的操作系統(tǒng)可視狀態(tài)。為了增強(qiáng)并行性,增加了一組新的寄存器?,F(xiàn)存的各種軟件,可在不做修改的情況下繼續(xù)在增加了SSE的IA處理器上正確運(yùn)行。 SSE引入了一組新的、通用的浮點(diǎn)指令。浮點(diǎn)指令對(duì)8個(gè)128位SIMD浮點(diǎn)寄存器組進(jìn)行操作。SSE指令系統(tǒng)使得程序設(shè)計(jì)人員能夠去設(shè)計(jì)這樣一類的算法,SSE指令和MMX指令兩者混合在一起的緊縮單精度浮點(diǎn)運(yùn)算和緊縮整型運(yùn)算的算法。SSE提供了一些新的指令以控制整個(gè)MMX數(shù)據(jù)類型和3
26、2位數(shù)據(jù)類型的可高速緩存性,新指令能將數(shù)據(jù)流直接送存儲(chǔ)器而不污染高速緩存,還提供了能夠預(yù)取數(shù)據(jù)的新指令。 SSE對(duì)于IA編程環(huán)境而言,提供了如下的新擴(kuò)展: (1) 8個(gè)SIMD浮點(diǎn)寄存器(XMM0XMM7)。 (2) SIMD浮點(diǎn)數(shù)據(jù)類型(128位緊縮浮點(diǎn)數(shù))。 (3) SSE指令系統(tǒng)。 SIMD浮點(diǎn)寄存器和數(shù)據(jù)類型在下面介紹。 SIMD浮點(diǎn)寄存器。 IA的SSE提供了8個(gè)128位的通用寄存器,每個(gè)寄存器可以直接尋址。這些寄存器是新的,需要能使用該類寄存器的操作系統(tǒng)支持。 SIMD浮點(diǎn)寄存器保存著緊縮的128位數(shù)據(jù)。流式SIMD擴(kuò)展指令訪問SIMD浮點(diǎn)寄存器時(shí),直接使用寄存器名XMM0XMM7
27、,如圖12.5所示。SIMD浮點(diǎn)寄存器可被用以完成數(shù)據(jù)計(jì)算,但不能用來(lái)尋址存儲(chǔ)器。尋址仍用整型寄存器來(lái)實(shí)現(xiàn),并且使用標(biāo)準(zhǔn)的IA尋址方式及通用寄存器名。圖12.5 XMM寄存器 MMX寄存器被映射為浮點(diǎn)寄存器。從MMX操作轉(zhuǎn)換到浮點(diǎn)操作需要執(zhí)行EMMS指令。由于SIMD浮點(diǎn)寄存器是一個(gè)獨(dú)立的寄存器文件,因此MMX指令和浮點(diǎn)指令都能與流式SIMD擴(kuò)展指令混合在一起,而不需要執(zhí)行如EMMS指令那樣的特殊操作。 SIMD浮點(diǎn)數(shù)據(jù)類型。 IA流式SIMD擴(kuò)展的基本數(shù)據(jù)類型是緊縮單精度浮點(diǎn)操作數(shù),準(zhǔn)確地說(shuō),是4個(gè)32位單精度浮點(diǎn)(SP-FP)數(shù),如圖12.6所示。圖12.6 32位單精度浮點(diǎn)新的SIMD整
28、型指令可以按緊縮字節(jié)、緊縮字或者緊縮雙字的數(shù)據(jù)類型進(jìn)行操作。新的預(yù)取指令是在32字節(jié)或者更大的數(shù)據(jù)規(guī)?;A(chǔ)之上工作的,不管這些數(shù)據(jù)是什么類型。4個(gè)32位單精度浮點(diǎn)數(shù)編號(hào)為03,第0個(gè)數(shù)據(jù)位于寄存器的低32位之中。 SSE與存儲(chǔ)器之間的緊縮數(shù)據(jù)(單精度的浮點(diǎn)雙字)傳送,按64位的塊或者按128位的塊來(lái)進(jìn)行。但是,當(dāng)按緊縮數(shù)據(jù)類型執(zhí)行算術(shù)操作或者邏輯操作時(shí),卻按SIMD浮點(diǎn)寄存器中4個(gè)獨(dú)立的雙字并行地進(jìn)行操作。新的SIMD整型指令遵循著MMX指令的慣例,并且按MMX寄存器的數(shù)據(jù)類型,而不是按SIMD浮點(diǎn)128位寄存器的數(shù)據(jù)類型進(jìn)行操作。 SIMD的執(zhí)行方式。 SSE使用單指令多數(shù)據(jù)(SIMD)技術(shù)
29、,按照128位浮點(diǎn)寄存器中的單精度浮點(diǎn)數(shù)來(lái)完成算術(shù)和邏輯操作。這種技術(shù)通過(guò)用一條指令并行地處理多個(gè)數(shù)據(jù)元素,以提高軟件的速度性能。流式SIMD擴(kuò)展支持緊縮的單精度浮點(diǎn)數(shù)據(jù)類型的操作,其SIMD整型指令支持緊縮整型數(shù)據(jù)類型(字節(jié)、字、雙字)的操作。SSE指令能在保護(hù)方式、實(shí)地址方式和虛擬8086方式下運(yùn)行。 數(shù)據(jù)格式。 SSE的緊縮128位數(shù)據(jù),編號(hào)為0127。位0為最低有效位(LSB),127為最高有效位(MSB)。當(dāng)存儲(chǔ)數(shù)據(jù)時(shí),128位的數(shù)據(jù)總是按“小端”法進(jìn)行排序,即低地址的字節(jié)為低有效字節(jié),高地址的字節(jié)為高有效字節(jié)。Pentium III處理器的SIMD浮點(diǎn)指令以32位單精度浮點(diǎn)數(shù)據(jù)為單
30、位進(jìn)行操作。在SIMD浮點(diǎn)寄存器中的值與存儲(chǔ)器中的128位數(shù)具有相同的格式。 在存儲(chǔ)器存儲(chǔ)實(shí)型數(shù)時(shí),單精度實(shí)型值按4個(gè)連續(xù)的字節(jié)存儲(chǔ)在存儲(chǔ)器中。128位的訪問方式用于128位的存儲(chǔ)器訪問、SIMD浮點(diǎn)寄存器之間的128位傳送、所有的邏輯展開/算術(shù)指令操作。32位的訪問方式用于32位的存儲(chǔ)器訪問、SIMD浮點(diǎn)寄存器之間的32位傳送以及各種算術(shù)指令操作。算術(shù)指令有128位操作的、也有32位操作的。 SIMD浮點(diǎn)控制/狀態(tài)寄存器。 控制/狀態(tài)寄存器MXCSR用來(lái)屏蔽/開放數(shù)值異常處理、設(shè)置舍入方式、設(shè)置清零方式和觀察狀態(tài)標(biāo)志。該寄存器的內(nèi)容可以用LDMXCSR和FXRSTOR指令來(lái)加載和用STMXS
31、CRR和FXSAVE指令將它存入存儲(chǔ)器。圖12.7示出了MXCSR寄存器中各個(gè)字段。位50表示是否檢測(cè)到SIMD。圖12.7 MXCSR寄存器 浮點(diǎn)數(shù)值異常。它們是“粘貼(sticky)”標(biāo)志,通過(guò)LDMXSCR指令對(duì)相應(yīng)字段寫0可以清除這些標(biāo)志。如果LDMXCSR指令清除了相應(yīng)的屏蔽位之后又對(duì)相應(yīng)的異常標(biāo)志置l,不會(huì)立即產(chǎn)生異常。只有在下一次SSE擴(kuò)展處理時(shí),出現(xiàn)了這種異常條件才會(huì)發(fā)生異常。SSE的每種異常只有一個(gè)異常標(biāo)志,因此一次緊縮數(shù)據(jù)(4個(gè)SP浮點(diǎn)數(shù))操作時(shí),不能為每個(gè)數(shù)據(jù)操作提供異常報(bào)告。在同一條指令之內(nèi)出現(xiàn)多個(gè)異常條件時(shí),則相關(guān)的異常標(biāo)志被修改并且指示著這些條件中最后一個(gè)異常條件所
32、發(fā)生的異常。當(dāng)復(fù)位時(shí),這些標(biāo)志被清除。 位127組成數(shù)值異常屏蔽。如果相應(yīng)的位置1,則該種異常被屏蔽,如果相應(yīng)的位清除,則該種異常開放。在復(fù)位時(shí),這些位全被置為l,意味著所有的數(shù)值異常被屏蔽。 位1413為舍入控制字段。舍入控制除提供定向舍入、截尾舍入之外,還控制著公用的就近舍入方式。當(dāng)復(fù)位時(shí),舍入控制被置為就近舍入。 位15(FZ)用來(lái)啟動(dòng)“清除為0(Flush To Zero)”方式。當(dāng)復(fù)位時(shí),該位被清除,則禁止“清除為0”方式。 MXCSR寄存器的其他位(位3l16和位6)定義為保留位并清除為0;試圖使用FXRSTOR或者LDMXCSR指令對(duì)保留位寫入非0值,則將引起通用保護(hù)異常。 啟動(dòng)
33、“清除為0”方式,在下溢情況下,有如下的效果: 回送0結(jié)果,且0值帶有真實(shí)結(jié)果的符號(hào)。 精度異常標(biāo)志和下溢異常標(biāo)志置為1。 在應(yīng)用程序中,下溢異常出現(xiàn)時(shí),希望能以精度的輕微損失為代價(jià)而換得應(yīng)用程序的快速運(yùn)行,因此采用“清除為0”方式。對(duì)于“清除為0”的下溢是這樣定義的:當(dāng)計(jì)算結(jié)果規(guī)格化之前,指數(shù)部分處于不可規(guī)格化范圍,則產(chǎn)生“清除為0”,而不管是否有精度損失。未屏蔽的下溢異常是早于“清除為0”方式產(chǎn)生的,這就意味著,當(dāng)下溢異常未被屏蔽時(shí),產(chǎn)生了下溢條件的SSE指令,將調(diào)用異常處理程序,而不管“清除為0”方式是否為使能。3. SSE2 技術(shù)技術(shù) Intel在PIV處理器中加入了SSE2指令集,P
34、entium III處理器采用的SSE指令集相比,目前Pentium 4的整個(gè)SEE2指令集共有144條,其中包括原有的68組SEE指令及新增加76組SEE2的指令。全新的SEE2指令除了將傳統(tǒng)整數(shù)MMX寄存器也擴(kuò)展成128位(128bit MMX),另外還提供了128位SIMD整數(shù)運(yùn)算操作和128位雙精密度浮點(diǎn)運(yùn)算操作。12.2 80X86/Pentium微處理器與新增指令簡(jiǎn)介微處理器與新增指令簡(jiǎn)介 與8086 微處理器相比,高檔微處理內(nèi)部結(jié)構(gòu)與尋址方式變化較大,不僅增加了數(shù)據(jù)總路線、地址總路線的位數(shù),而且采用了許多新技術(shù),增加了支持多媒體的指令集,使微處理器性能大大提高。12.2.1 80
35、286微處理器結(jié)構(gòu)和新增指令 1. 80286微處理器結(jié)構(gòu) 1) 80286的主要特性 1982年,Intel公司推出80286微處理器,與8086/8088相比,其速度更快,具備多任務(wù)功能,其主要性能: (1) 80286與8086/8088一樣具有軟件兼容性,在匯編源代碼一級(jí)兼容。 (2) 80286 CPU內(nèi)部的4個(gè)相互獨(dú)立的處理部件執(zhí)行部件(EU)、總線部件(BU)、指令部件(IU)和地址部件(AU)并行地進(jìn)行操作,大大提高了數(shù)據(jù)吞吐率,從而加快了處理速度。 (3) 80286的地址總線和數(shù)據(jù)信號(hào)線完全分開,不再采用分時(shí)復(fù)用的方式。 (4) 80286時(shí)鐘頻率已從早期的6MHz、8MH
36、z、12MHz提高到16MHz、20MHz、25MHz,遠(yuǎn)高于8086/8088的4.77MHz、8MHz和10MHz。 (5) 80286具有兩種基本的工作方式:即實(shí)方式和保護(hù)方式。內(nèi)外部數(shù)據(jù)總線都是16位,地址線24條,尋址范圍大幅擴(kuò)展,實(shí)模式下達(dá)到16MB,內(nèi)存虛擬地址空間達(dá)1GB。 (6) 與8086/8088 CPU相比,80286 CPU增加了一個(gè)機(jī)器狀態(tài)字寄存器MSW。此外,標(biāo)志寄存器Flags增加了兩個(gè)標(biāo)志。由于新增加內(nèi)容在程序設(shè)計(jì)中使用不多,故不再贅述。 2) 80286的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 80286的內(nèi)部結(jié)構(gòu)如圖12.8所示,80286微處理器由總線部件BU(Bus Un
37、it)、指令不見IU(instruction Unit)、執(zhí)行部件EU(Execute Unit)和地址部件AU(Address Unit)四個(gè)功能部件組成,增強(qiáng)了這些部件的并行操作能力,加快了微處理器的運(yùn)行速度。圖12.8 80286的內(nèi)部結(jié)構(gòu) 80286 CPU內(nèi)部的4個(gè)處理部件并行操作,形成了取指令、指令譯碼和指令執(zhí)行重疊進(jìn)行的流水線工作方式,提高了數(shù)據(jù)的吞吐率,加快了運(yùn)行處理速度。由于內(nèi)部具有存儲(chǔ)器管理和存儲(chǔ)器保護(hù)機(jī)構(gòu),可以適應(yīng)多用戶、多任務(wù)的需要。一個(gè)10MHz的80286比標(biāo)準(zhǔn)的5MHz的8086性能要高6倍。各個(gè)部件的主要功能簡(jiǎn)述如下所述。 (1) 總線部件BU:地址鎖存和驅(qū)動(dòng)器
38、講4位地址鎖存并加以驅(qū)動(dòng);預(yù)取器負(fù)責(zé)向存儲(chǔ)器取指令代碼并放到6個(gè)字節(jié)的預(yù)取隊(duì)列中;協(xié)處理器借口專門負(fù)責(zé)語(yǔ)0287協(xié)處理器的連接;數(shù)據(jù)收發(fā)器根據(jù)指令要求負(fù)責(zé)控制數(shù)據(jù)的輸入或輸出(控制方向);6個(gè)字節(jié)的指令隊(duì)列專門存放由預(yù)取器送來(lái)的指令;總線控制產(chǎn)生有關(guān)外部控制信號(hào)送到外部的總線控制器80288,以便組合產(chǎn)生存儲(chǔ)器或I/O的讀、寫控制信號(hào)。 (2) 指令部件IU:負(fù)責(zé)從預(yù)取隊(duì)列中取代碼并進(jìn)行譯碼,放入3條指令的指令隊(duì)列中。 (3) 地址部件AU:負(fù)責(zé)物理地址的生成。實(shí)地址模式下的80286只讀尋址1MB的存儲(chǔ)空間;在保護(hù)虛地址模式下,物理地址線是24條,段地址并不直接存放在四個(gè)段寄存器中,而存放在
39、段描述符中。通過(guò)描述符的數(shù)據(jù)結(jié)構(gòu)尋找24位段基址與6位偏移地址相加得到實(shí)際的物理地址,形成真正的24位物理地址。 (4) 指令部件EU:負(fù)責(zé)從譯碼指令隊(duì)列取出已經(jīng)譯碼的指令立即執(zhí)行。執(zhí)行指令時(shí)如果需要操作數(shù),可以向AU發(fā)出相應(yīng)的地址信息。2. 80286新增指令新增指令 1) 堆棧操作指令 (1) PUSH Imm16;Imm16為16位立即數(shù): 功能:將16位立即數(shù)壓入堆棧,該指令不影響狀態(tài)標(biāo)志位。 例如: PUSH5678H PUSH0BAH PUSHOK (2) PUSHA: 依次將通用寄存器AX,CX,DX,BX,SP,BP,SI,DI的內(nèi)容壓入堆棧。 (3) POPA: 功能:依次將
40、棧頂?shù)膬?nèi)容彈至DI,SI,BP,SP,BX,DX,CX,AX(次序與PUSHA指令相反) 例如:在子程序調(diào)用中,我們往往通過(guò)PUSH指令和POP指令來(lái)保護(hù)寄存器,但現(xiàn)在可用下述指令實(shí)現(xiàn): PUSHA CALL SUB1 POPA 2) 有符號(hào)數(shù)乘法指令 8086/8088的乘法指令只有一個(gè)操作數(shù),另一個(gè)操作數(shù)是隱含的,而80286可有兩個(gè)或三個(gè)操作數(shù),使乘法指令的功能更靈活。 (1) IMUL Reg,Imm;Reg只能是16位或32位通用寄存器。功能:RegRegImm,指令中原操作數(shù)和目的操作數(shù)的位數(shù)必須一致。 例如: IMUL BX,0BCDH (2) IMULReg1,Reg2/Mem
41、,Imm;Reg1和Reg2只能是16位通用寄存器。 功能:Reg1Reg2Imm或Reg1MemImm,指令中原操作數(shù)和目的操作數(shù)的位數(shù)必須一致。 例如: IMUL DX,BX,100H IMUL BX,200H,12H IMUL CX,SI,200H 3) 移位指令 8088/8086的移位指令在移位次數(shù)大于1時(shí),移位次數(shù)必須放入CL寄存器。而80286對(duì)此進(jìn)行了修改,當(dāng)移位次數(shù)為131時(shí),可直接用立即數(shù)表示移位次數(shù)。例如: SAL AX,2 RCRBX,412.2.2 80386微處理器結(jié)構(gòu)和新增指令微處理器結(jié)構(gòu)和新增指令1 80386微處理器結(jié)構(gòu) 1) 80386的主要特性 1985年
42、,Intel公司推出80386微處理器,其內(nèi)外部數(shù)據(jù)總線都是32位(80386SX CPU外部數(shù)據(jù)線為16位),地址線32條,實(shí)際尋址范圍為4GB,虛擬存儲(chǔ)空間達(dá)64TB。其主要性能: (1) 80386 CPU的內(nèi)部由總路線接口部件(BIU)、指令部件(IU)、執(zhí)行部件(EU)以及址部件(AU)四部分組成。 (2) 時(shí)鐘頻率分別有16MHz、20MHz、25MHz、33MHz、40MHz。 (3) 不僅與8086/80286全兼容,而且向上擴(kuò)展具有全32位數(shù)據(jù)處理能力,具有先進(jìn)的存儲(chǔ)管理部件,可進(jìn)行頁(yè)式、段式和段頁(yè)式存儲(chǔ)管理。(4) 80386的工作方式在80286基礎(chǔ)上作了向上兼容擴(kuò)充,一
43、方面它具有類似的實(shí)方式和保護(hù)方式的特點(diǎn),另一方面在保護(hù)方式的特點(diǎn),另一方面在保護(hù)方式下,通過(guò)新的頁(yè)面保護(hù)機(jī)制,提供更大的虛擬存儲(chǔ)空間(64T)和實(shí)際存儲(chǔ)空間(4G)。此外,在保護(hù)方式下支持一種新的虛擬8086方式(V86),允許多個(gè)8086代碼不作修改亦可運(yùn)行。 (5) 80386以流水線方式工作,共有6級(jí)流水線,即:取指、譯碼、執(zhí)行、二級(jí)存儲(chǔ)器管理和總線訪問,以及指令的并行處理,從而提高了運(yùn)行速度。 (6) 提供了32位外部總路線接口。總線接口支持動(dòng)態(tài)數(shù)據(jù)寬度控制,能動(dòng)態(tài)地在16位數(shù)據(jù)總路線和32位數(shù)據(jù)總路線之間進(jìn)行切換,以適應(yīng)不同位數(shù)的存儲(chǔ)器和I/O設(shè)備。 80386 CPU內(nèi)部寄存器共1
44、6個(gè),如圖12.9所示。它們是:圖12.9 32位寄存器示意圖 (1) 8個(gè)32位通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP。這些通用寄存器的低16位可作為16位寄存器單獨(dú)使用,這些16位寄存器就是AX、BX、CX、DX、SI、DI、SP和BP。而AX、BX、CX和DX又分別可拆分為兩個(gè)8位寄存器:AH、AL、BH、BL、CH、CL、DH和DL。這些32位寄存器在名稱與功能上同其對(duì)應(yīng)的16位寄存器相同。 (2) 6個(gè)16位段寄存器:CS、DS、SS、ES、FS、GS。與ES相似,F(xiàn)S和GS都是附加的段寄存器。 (3) 兩個(gè)32位專用寄存器:指令指針寄存器EIP和
45、標(biāo)志寄存器Flags。其中EIP的低16位為IP,它們都是指令指針寄存器,其功能是存放指令在代碼段中的偏移量。32位Flags的低16位與16位Flags完全相同,高16位中增加了8個(gè)標(biāo)志位。由于新增加的標(biāo)志位與本書內(nèi)容基本無(wú)關(guān),故不再介紹。 2) 80386的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 80386 CPU的內(nèi)部結(jié)構(gòu)如圖12.10所示,由總線接口部件、指令預(yù)取部件、指令譯碼部件、控制部件、數(shù)據(jù)部件、保護(hù)測(cè)試部件、分段部件和分頁(yè)部件等8個(gè)功能部件組成。控制部件、數(shù)據(jù)部件和保護(hù)測(cè)試部件共同組成執(zhí)行部件,分段不見和分頁(yè)部件合在一起稱為存儲(chǔ)器管理部件。主要部件的功能分析如下所述。圖12.10 80386的內(nèi)部
46、結(jié)構(gòu) (1) 總線接口部件BU:提供中央處理部件和系統(tǒng)之間的高速接口,負(fù)責(zé)CPU的外部總線與內(nèi)部部件之間的信息交換。此外,BU產(chǎn)生一些CPU總線周期所需要的信號(hào),包括地址、數(shù)據(jù)、控制信號(hào)等,用來(lái)與存儲(chǔ)器和輸入/輸出部件通信。 (2) 指令預(yù)取部件:負(fù)責(zé)預(yù)先從存儲(chǔ)器中取出指令,并存放在16字節(jié)的指令隊(duì)列中。它還管理一個(gè)線性地址指針和一個(gè)預(yù)取界限,這兩項(xiàng)內(nèi)容是從分段部件獲得的,分別作為預(yù)取指令指針和檢查是否違反分段界限。 (3) 指令譯碼部件:負(fù)責(zé)對(duì)指令進(jìn)行譯碼,可以完成從指令到微指令的轉(zhuǎn)換,譯碼后的指令放在譯碼器的指令隊(duì)列中,供執(zhí)行部件使用。 (4) 執(zhí)行部件:負(fù)責(zé)直接執(zhí)行指令。其中控制部件用于
47、控制ROM,在其中存有微代碼。譯碼器給控制部件提供微代碼的入口點(diǎn)(起始地址),控制部件按此微代碼執(zhí)行相應(yīng)的操作。數(shù)據(jù)部件包括寄存器組和算術(shù)/邏輯部件,負(fù)責(zé)進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。 (5) 存儲(chǔ)器管理部件MMU:由分段部件和分頁(yè)部件組成。分段部件將邏輯地址按執(zhí)行部件的要求變換成線性地址,實(shí)現(xiàn)有效地址的計(jì)算。分頁(yè)部件提供了對(duì)物理地址空間的管理,將物理地址送給總線接口部件,執(zhí)行存儲(chǔ)器或I/O存取。2. 80386新增指令新增指令 80386可對(duì)32位數(shù)據(jù)直接操作。其內(nèi)部寄存器也是32位。 80386有實(shí)地址模式、保護(hù)虛地址模式和虛擬8086模式三種工作方式,在DOS環(huán)境中只能工作于實(shí)地址模式。803
48、86 CPU具備以前CPU的各種尋址方式,同時(shí)80386增加了一種32位的內(nèi)存尋址方式。當(dāng)采用32位偏移量尋址存儲(chǔ)單元時(shí),其偏移地址由3部分構(gòu)成: 一個(gè)32位的基址寄存器,如EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP; 一個(gè)可以乘上1、2、4或8的32位變址寄存器,如EAX、EBX、ECX、EDX、ESI、EDI、EBP(除ESP); 一個(gè)32位的偏移量。可見,基址寄存器可以是8個(gè)通用寄存器中的任一個(gè),而變址寄存器可以是除ESP之外的任一個(gè)通用寄存器。其偏移地址計(jì)算公式如下: EA=32位基址寄存器+32位變址寄存器(1、2、3或8)+32位偏移量 由于32位尋址方式能使用
49、所有的通用寄存器,因而偏移地址中的寄存器組合與其他尋址方式就有所區(qū)別。主要有以下幾點(diǎn): (1) 32位偏移地址中,基址寄存器在前,變址寄存器在后。如EBX+ESI中EBX為基址寄存器,而ESI為變址寄存器;而在ESI+EBX中則相反。 (2) 默認(rèn)段寄存器的選擇取決于基址寄存器。如果基址寄存器是EBP或ESP,則默認(rèn)段寄存器為SS,否則默認(rèn)段寄存器為DS。 (3) 指令中如果使用段前綴的方式,則段前綴優(yōu)先。 下面是使用32位尋址方式的指令舉例: MOV EAX,345678H;默認(rèn)段寄存器為DS MOV EBX,ES:EAX;默認(rèn)段寄存器為ES MOV EBX,EBP+ESI;默認(rèn)段寄存器為S
50、S MOV EAX+100,ESI;默認(rèn)段寄存器為DS MOV ECX,GS:EAX*2+100H;默認(rèn)段寄存器為GS MOV EDX,FS:EAX+EBX*4+1000H;默認(rèn)段寄存器為FS 1) 數(shù)據(jù)傳送與填充指令數(shù)據(jù)傳送與填充指令 (1) MOVSX Reg,Reg/Mem 功能:將位數(shù)較少的源操作數(shù)傳送到位數(shù)較多的目的操作數(shù)中。目的操作可以是16位或32位寄存器;源操作數(shù)可以是寄存器或存儲(chǔ)器操作數(shù),其位數(shù)應(yīng)小于或等于目的操作數(shù)的位數(shù)。當(dāng)源操作數(shù)的位數(shù)少于目的操作數(shù)時(shí),目的操作數(shù)的高位用源操作數(shù)的符號(hào)位填充。該指令也稱為符號(hào)填充指令,不影響標(biāo)志位,適用于有符號(hào)數(shù)的傳送。例如: MOVSX
51、 CX,AL (2) MOVZX Reg,Reg/Mem 功能:與MOVSX功能基本相同,區(qū)別在于當(dāng)源操作數(shù)的位數(shù)少于目的操作數(shù)位數(shù)時(shí),目的操作數(shù)的高位用“0”填充。該指令也稱為0填充指令,不影響標(biāo)志位,適用于無(wú)符號(hào)數(shù)的傳送。例如: MOVZX AX,BL 例:已知CL=81H,執(zhí)行下列指令后AX和BX的值分別是多少? MOVSX AX,CL MOVZX BX,CL 解:由指令的功能可知,指令執(zhí)行完畢后,AX=0FF81H, BX=0081H。 2) 堆棧操作指令堆棧操作指令 (1) PUSH Imm32;Imm32為32位立即數(shù)。 功能:將32位立即數(shù)壓入堆棧。該指令執(zhí)行后SP的值將減4。
52、(2) PUSHAD 功能:將所有通用寄存器EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI的內(nèi)容依次壓入堆棧。執(zhí)行該指令后,ESP值減32。 (3) POPAD 將當(dāng)前棧頂內(nèi)容依次彈出至EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX,本指令與PUSHAD功能相反,需對(duì)稱使用。 (4) PUSHFD 功能:將32位標(biāo)志寄存器EFlags的內(nèi)容壓入堆棧。 (5) POPFD 功能:將當(dāng)前棧頂?shù)?字節(jié)內(nèi)容彈出至EFlags寄存器。 以上堆棧操作指令除POPFD以外,均不影響狀態(tài)標(biāo)志位。 3) 取段寄存器指令取段寄存器指令 (1) LFS Reg,Mem 功能:將源操作
53、數(shù)所指存儲(chǔ)單元的4字節(jié)或6字節(jié)內(nèi)容傳送到指定的寄存器及段寄存器FS。 當(dāng)Reg為16位寄存器時(shí),將4字節(jié)的存儲(chǔ)器操作數(shù)中的低兩字節(jié)送指定Reg,高兩字節(jié)送段寄存器FS;當(dāng)Reg為32位寄存器時(shí),將6字節(jié)的存儲(chǔ)器操作數(shù)中的低4節(jié)送指定Reg,高兩字節(jié)送段寄存器FS。該指令不影響狀態(tài)標(biāo)志位。 例如 LFS AX,BUFF (2) LGS Reg,Mem功能:與LFS指令基本相同,唯一區(qū)別在于,該指令所涉及的段寄存器為GS。 (3) LSS Reg,Mem功能:與LFS功能基本相同,唯一區(qū)別在于,該指令所涉及的段寄存器為SS。 4) 有符號(hào)數(shù)乘法指令有符號(hào)數(shù)乘法指令 格式:IMUL Reg1,Reg
54、2/Mem;Reg1和Reg2只能是16位或32位通用寄存器 功能:Reg1Reg1Reg2或Reg1Reg1Mem。指令中原操作數(shù)和目的操作數(shù)的位數(shù)必須一致。若乘積溢出,溢出部分將丟失,且將OF及CF置1,否則將OF及CF置0。 5) 符號(hào)擴(kuò)展指令符號(hào)擴(kuò)展指令 (1) CWDE 功能:將AX中16位有符號(hào)數(shù)的符號(hào)位擴(kuò)展到EAX的高16位中,即把AX的16位有符號(hào)數(shù)擴(kuò)展為32位后,送EAX。該指令不影響標(biāo)志位。 (2) CDQ 功能:將EAX中32位有符號(hào)數(shù)的符號(hào)位擴(kuò)展到EDX寄存器,使之成為64位有符號(hào)數(shù)EDX:EAX。 6) 移位指令移位指令 80386中增加了一組新的移位指令,它們可以把
55、指定的一組位左移或右移到一個(gè)操作數(shù)中去。 (1) SHLD Reg/Mem,Reg,CL/Imm 功能:將第一操作數(shù)(16位或32位通用寄存器或存儲(chǔ)器單元)左移若干位(左移位數(shù)由8位立即數(shù)Imm或CL指定),空出位用第二操作數(shù)(與第一操作數(shù)位數(shù)相同的通用寄存器)高位部分填充,但第二操作數(shù)的內(nèi)容不變,標(biāo)志位CF中保留第一操作數(shù)最后的移出位。受影響的標(biāo)志位有CF、OF、PF、SF和ZF。移位過(guò)程如圖12.11(a)所示。例如: MOV AX,1234H MOV DX,5678H SHLD AX,DX,2 SHLD AX,DX,7 (2) SHRD Reg/Mem,Reg,CL/Imm功能:將第一操
56、作數(shù)(16位或32位通用寄存器或存儲(chǔ)器單元)右移若干位(右移位數(shù)由CL或8位立即數(shù)指定),空出位用第二操作數(shù)(與第一操作數(shù)長(zhǎng)度相同的通用寄存器)低位部分填充,第二操作數(shù)內(nèi)容不變,CF標(biāo)志位中保留第一操作數(shù)最后的移出位。受影響的標(biāo)志位有CF、OF、PF、SF和ZF。移位過(guò)程如圖12.11(b)所示。 第一操作數(shù) CF 第二操作數(shù) 最高位 最高位 最低位 最低位 (a) SHLD指令操作示意圖 CF 第一操作數(shù) 第二操作數(shù) 最高位 最高位 最低位 最低位 (b) SHRD指令操作示意圖圖12.11 移位指令操作示意圖例如: MOV AX,0ABCDH MOV BX,5678H SHRD AX,BX
57、,2 7) 位操作指令 (1) 位掃描指令。 BSF Reg,Reg/Mem 功能:對(duì)第二操作數(shù)(16位或32位通用寄存器或存儲(chǔ)器)從最低位到最高位進(jìn)行掃描,將首先掃描到的“1”的位號(hào)送第一操作數(shù),且使ZF置1,否則ZF置0。 BSR Reg,Reg/Mem 功能:與BSF指令功能基本相同,唯一區(qū)別在于,該指令是從最高位到最低位進(jìn)行掃描。例如: MOV AX,5678H BSR CX,AX BSF CX,AX (2) 位檢測(cè)指令。 BT Reg/Mem,Reg/Mem 功能:第一操作數(shù)(16位或32位通用寄存器或存儲(chǔ)單元)指定要測(cè)試的內(nèi)容,第二操作數(shù)(與第一操作數(shù)同長(zhǎng)度的通用寄存器或8位立即數(shù)
58、)指定要測(cè)試的位,將被測(cè)內(nèi)容指定測(cè)試位的值送至CF。 例如:設(shè)BX=1234H,分別執(zhí)行下列指令后,CF和BX的值如下: BT BX,6;CF=0,BX=1274H BTC Reg/Mem,Reg/Mem 該指令在BT功能的基礎(chǔ)上,將被測(cè)試位取反。 BTC Reg/Mem,Reg/Mem 該指令在BT指令功能的基礎(chǔ)上,將被測(cè)位清0。 BTC Reg/Mem,Reg/Mem 該指令在BT指令功能基礎(chǔ)上,將被測(cè)位置1。 例如: MOV AX 5678H BT AX,6 BTC AX,6 BTR AX,6 BTS AX,6 位掃描指令通常用于檢查寄存器或存儲(chǔ)單元是否為0,而位檢測(cè)指令用于對(duì)指定位進(jìn)行
59、測(cè)試,因而可根據(jù)該位的值來(lái)對(duì)程序流程進(jìn)行控制。 8) 條件設(shè)置字節(jié)指令 條件設(shè)置字節(jié)指令是80386及其以后CPU特有的一組指令,用于測(cè)試指定的標(biāo)志位所處的狀態(tài),并根據(jù)測(cè)試結(jié)果,將指定的一個(gè)8位寄存器或內(nèi)存單元置1或置0。它們與條件轉(zhuǎn)移指令中的標(biāo)志位測(cè)試有一定的相似性,但它們不是轉(zhuǎn)移,而是根據(jù)測(cè)試結(jié)果將字節(jié)操作數(shù)置1或置0。 條件設(shè)置字節(jié)指令格式如下: SETnn Reg/Mem 其中nn表示測(cè)試條件,是指令助記符的一部分,用于指定要測(cè)試的標(biāo)志位。操作數(shù)則只能是8位寄存器或一個(gè)字節(jié)存儲(chǔ)單元。該指令的執(zhí)行不影響任何標(biāo)志位。該組指令助記符具體如下:SETZ/SETE;Reg/Mem =ZFSETN
60、Z/SETNE;Reg/Mem = NOT ZFSETS;Reg/Mem =SFSETNS;Reg/Mem = NOT SFSETO;Reg/Mem =OFSETNO;Reg/Mem = NOT OFSETP/SETPE;Reg/Mem =PFSETNP/SETPO;Reg/Mem = NOT PFSETC/SETB/SETNAE;Reg/Mem =CFSETNC/SETNB/SETAE;Reg/Mem = NOT CFSETNA/SETBE;Reg/Mem =CF OR ZFSETA/SETNBE;Reg/Mem = NOT (CF OR ZF)SETL/SETNGE;Reg/Mem =SF
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度個(gè)人創(chuàng)業(yè)貸款擔(dān)保合同模板3篇
- 2024年度大學(xué)真實(shí)就讀體驗(yàn)效果跟蹤監(jiān)督協(xié)議3篇
- 2024年房屋拆除及重建項(xiàng)目造價(jià)概算與監(jiān)理服務(wù)合同3篇
- 2024年度中小微企業(yè)科技創(chuàng)新合作協(xié)議3篇
- 2024年文化創(chuàng)意產(chǎn)業(yè)聘用合同規(guī)范文本3篇
- 2024印刷廠與印刷包裝企業(yè)年度印刷合作合同模板3篇
- 2024年太陽(yáng)能熱水器節(jié)能減排技術(shù)應(yīng)用合同3篇
- 2024年度旋挖樁基勞務(wù)分包及材料運(yùn)輸與儲(chǔ)存合同3篇
- 2024年度預(yù)算編制與執(zhí)行審計(jì)合同3篇
- 2024年度教育培訓(xùn)機(jī)構(gòu)課程買賣合同范本教育質(zhì)量3篇
- 2024-2025學(xué)年九年級(jí)化學(xué)人教版上冊(cè)檢測(cè)試卷(1-4單元)
- 服裝廠安全教育培訓(xùn)規(guī)章制度
- 車輛修理廠自查自糾整改方案及總結(jié)報(bào)告
- 湖北省八校2025屆高二生物第一學(xué)期期末質(zhì)量檢測(cè)模擬試題含解析
- 一例尿毒癥患者股骨頸骨折的臨床護(hù)理查房
- 期末測(cè)試卷(試題)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2023年小學(xué)二年級(jí)數(shù)學(xué)競(jìng)賽試題(后附答案)
- 七年級(jí)上冊(cè)道德與法治第1-4單元共4個(gè)單元復(fù)習(xí)教學(xué)設(shè)計(jì)
- 《數(shù)據(jù)可視化 》 課件全套 楊華 第1-9章 數(shù)據(jù)可視化概述- 可視化大屏
- GB/T 44146-2024基于InSAR技術(shù)的地殼形變監(jiān)測(cè)規(guī)范
- 出國(guó)柬埔寨勞務(wù)合同范本
評(píng)論
0/150
提交評(píng)論