第3章 奔騰系列微處理器課件_第1頁(yè)
第3章 奔騰系列微處理器課件_第2頁(yè)
第3章 奔騰系列微處理器課件_第3頁(yè)
第3章 奔騰系列微處理器課件_第4頁(yè)
第3章 奔騰系列微處理器課件_第5頁(yè)
已閱讀5頁(yè),還剩158頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章奔騰系列微處理器

掌握Pentium微處理器的原理結(jié)構(gòu)、基本寄存器組中各寄存器的組成和功能、Pentium工作的實(shí)模式、保護(hù)模式以及虛擬8086模式掌握Pentium微處理器的超標(biāo)量流水線技術(shù)熟悉存儲(chǔ)器的保護(hù)、浮點(diǎn)運(yùn)算部件以及與之相配套一起實(shí)現(xiàn)浮點(diǎn)運(yùn)算的浮點(diǎn)寄存器等了解Pentium微處理器的外部引腳了解PentiumProItanium的技術(shù)概況教學(xué)目的和教學(xué)要求重點(diǎn):

Pentium工作的實(shí)模式、保護(hù)模式以及虛擬8086模式的工作原理

Pentium微處理器的超標(biāo)量流水線技術(shù)

Pentium微處理器的原理結(jié)構(gòu)難點(diǎn):

Pentium微處理器的只分段、只分頁(yè)管理

Pentium微處理器的既分段又分頁(yè)管理存儲(chǔ)保護(hù)中的特權(quán)級(jí)保護(hù)方式本章重點(diǎn)、難點(diǎn)3.1Pentium性能和結(jié)構(gòu)特點(diǎn)

3.1.1

Pentium性能簡(jiǎn)介(1)

1993年3月Intel公司推出了第五代微處理器PentiumPentium是微處理器本質(zhì)上的一次創(chuàng)新Pentium采用了0.8μm雙極性互補(bǔ)金屬氧化半導(dǎo)體(BiCMOS)技術(shù),它屬于單芯片超標(biāo)量流水線微處理器,片內(nèi)集成了多達(dá)310萬(wàn)個(gè)晶體管,工作電壓+5V,功耗15W。片內(nèi)時(shí)鐘頻率(微處理器主頻)與外片主總線的時(shí)鐘頻率相等,均為60MHz或66MHz兩種

3.1.1

Pentium性能簡(jiǎn)介(2)1994年3月之后推出的Pentium(P54C)采用了0.6μm的CMOS技術(shù),工作電壓降為3.3V,功耗降至4W。主總線時(shí)鐘頻率有50MHz、60MHz以及66MHz等,經(jīng)倍頻后作為Pentium(P54C)內(nèi)部的時(shí)鐘頻率(主頻),表3-1列出了幾種Pentium(P54C)的主頻與工作電壓

表3-1幾種Pentium的主頻與工作電壓

號(hào)

主總線時(shí)鐘頻(MHz)倍數(shù)因子

主頻(MHz)

工作電壓

Pentium-90

601.5903.3V或2.9V

Pentium-100601.51003.3V

Pentium-1206021203.3VPentium-133

6021333.3VPentium-150

602.51503.3VPentium-166

662.51663.3VPentium-2006632003.3V3.1.1

Pentium性能簡(jiǎn)介(3)Pentium通往外部存儲(chǔ)器的數(shù)據(jù)總線為64位,CPU內(nèi)部主要寄存器的寬度仍然為32位,那么Pentium、Pentium(P54C)應(yīng)該是32位微處理器。外部64位數(shù)據(jù)總線(D63-D0)每次可同時(shí)傳輸8字節(jié)的二進(jìn)制信息,若選用主總線時(shí)鐘頻率66MHz計(jì)算,即存儲(chǔ)器總線的時(shí)鐘頻率也為66MHz,則Pentium與主存儲(chǔ)器交換數(shù)據(jù)的速率可為528MB/S3.1.2

Pentium的原理結(jié)構(gòu)(1)

一、PentiumCPU內(nèi)部的主要部件①總線接口部件②U流水線和V流水線③指令高速緩沖存儲(chǔ)器Cache④數(shù)據(jù)高速緩沖存儲(chǔ)器Cache⑤指令預(yù)取部件⑥指令譯碼器⑦浮點(diǎn)處理部件FPU⑧分支目標(biāo)緩沖器BTB⑨微程序控制器中的控制ROM⑩寄存器組Pentium微處理器的原理結(jié)構(gòu)圖如圖3-1所示PentiumCPU原理結(jié)構(gòu)圖3.1.2

Pentium的原理結(jié)構(gòu)(2)

二、原理結(jié)構(gòu)

在PentiumCPU中,總線接口部件實(shí)現(xiàn)CPU與系統(tǒng)總線之間的連接,其中包括64位雙向的數(shù)據(jù)線、32位地址線和所有的控制信號(hào)線,具有鎖存與緩沖等功能,總線接口部件實(shí)現(xiàn)CPU與外設(shè)之間的信息交換,并產(chǎn)生相應(yīng)的各類總線周期3.1.2

Pentium的原理結(jié)構(gòu)(3)1.互相獨(dú)立的指令Cache和數(shù)據(jù)CachePentium則在片內(nèi)設(shè)置了2個(gè)獨(dú)立的8KBCache,分別用于存放指令代碼與數(shù)據(jù)。指令Cache是內(nèi)存中一部分程序的副本,通過(guò)猝發(fā)方式從內(nèi)存中每次讀入一塊存入某一Cache行中,便于CPU執(zhí)行程序時(shí)取出并執(zhí)行,數(shù)據(jù)Cache是可以讀寫(xiě)的,雙端口結(jié)構(gòu),每個(gè)端口與U、V兩條指令流水線交換整數(shù)數(shù)據(jù),或者組合成64位數(shù)據(jù)端口,用來(lái)與浮點(diǎn)運(yùn)算部件交換浮點(diǎn)數(shù)據(jù),指令Cache與數(shù)據(jù)Cache均與CPU內(nèi)部的64位數(shù)據(jù)線以及32位地址線相連接3.1.2

Pentium的原理結(jié)構(gòu)(4)互相獨(dú)立的指令Cache和數(shù)據(jù)Cache有利于U、V兩條流水線的并行操作,它不僅可以同時(shí)與U、V兩條流水線分別交換數(shù)據(jù),而且使指令預(yù)取和數(shù)據(jù)讀寫(xiě)能無(wú)沖突地同時(shí)進(jìn)行可以通過(guò)硬件或軟件方法來(lái)禁止或允許使用PentiumCPU內(nèi)部的Cache3.1.2

Pentium的原理結(jié)構(gòu)(5)2.超標(biāo)量流水線Pentium有U、V兩條指令流水線,故稱之為超標(biāo)量流水線,超標(biāo)量流水線技術(shù)的應(yīng)用,使得PentiumCPU的速度較80486有很大的提高。因此,超標(biāo)量流水線是Pentium系統(tǒng)結(jié)構(gòu)的核心3.1.2

Pentium的原理結(jié)構(gòu)(6)U、V流水線中整數(shù)指令流水線均由5段組成。分別為預(yù)取指令(PF)、指令譯碼(D1)、地址生成(D2)、指令執(zhí)行(EX)和結(jié)果寫(xiě)回(WB)由于采用了指令流水線作業(yè),每條指令流水線可以在1個(gè)時(shí)鐘周期內(nèi)執(zhí)行一條指令。因此,最佳情況下一個(gè)時(shí)鐘周期內(nèi)可以執(zhí)行兩條整數(shù)指令3.1.2

Pentium的原理結(jié)構(gòu)(7)3.重新設(shè)計(jì)的浮點(diǎn)運(yùn)算部件

PentiumCPU內(nèi)部的浮點(diǎn)運(yùn)算部件在80486的基礎(chǔ)上進(jìn)行了重新設(shè)計(jì)。如圖3-1所示。浮點(diǎn)運(yùn)算部件內(nèi)有專門(mén)用于浮點(diǎn)運(yùn)算的加法器、乘法器和除法器,還有80位寬的8個(gè)寄存器構(gòu)成了寄存器堆,內(nèi)部的數(shù)據(jù)通路為80位。浮點(diǎn)運(yùn)算部件支持IEEE754標(biāo)準(zhǔn)的單、雙精度格式的浮點(diǎn)數(shù),還可以使用一種臨時(shí)實(shí)數(shù)的80位浮點(diǎn)數(shù)3.1.2

Pentium的原理結(jié)構(gòu)(8)Pentium對(duì)浮點(diǎn)數(shù)的一些常用指令,例如加法指令A(yù)DD,乘法指令MUL等,都采用了新的算法,并將新的算法用硬件來(lái)實(shí)現(xiàn),使得浮點(diǎn)數(shù)運(yùn)算的速度大大提高,其速度相當(dāng)于80486的10多倍

3.1.2

Pentium的原理結(jié)構(gòu)(9)4.以BTB實(shí)現(xiàn)動(dòng)態(tài)轉(zhuǎn)換預(yù)測(cè)Pentium采用了分支目標(biāo)緩沖器(branchtargetbuffer)實(shí)現(xiàn)動(dòng)態(tài)轉(zhuǎn)移預(yù)測(cè),可以減少指令流水作業(yè)中因分支轉(zhuǎn)移指令而引起的流水線斷流引入了轉(zhuǎn)移預(yù)測(cè)技術(shù),不僅能預(yù)測(cè)轉(zhuǎn)移是否發(fā)生,而且能確定轉(zhuǎn)移到何處去執(zhí)行程序例【3-1】下面是連續(xù)傳送100個(gè)字節(jié)的循環(huán)程序段

MOVSI,0200H;源數(shù)據(jù)區(qū)偏移地址給SIMOVDI,0500H;目的數(shù)據(jù)區(qū)偏移地址給DIMOVCX,64H;待傳送字節(jié)數(shù)為100,賦給CXABC:MOVAL,[SI];從源區(qū)取出一個(gè)字節(jié)MOV[DI],AL;存入目的數(shù)據(jù)區(qū)INCSI;源地址指針加1INCDI;目的地址指針加1DECCX;CX=CX-1JNZABC;若CX≠0,轉(zhuǎn)ABC·······從上述程序可以看出,許多分支轉(zhuǎn)移指令轉(zhuǎn)向每個(gè)分支的機(jī)會(huì)不是均等的,而且大多數(shù)分支轉(zhuǎn)移指令排列在循環(huán)程序段中,除了一次跳出循環(huán)體之外,其余轉(zhuǎn)移的目標(biāo)地址均在循環(huán)體內(nèi)。因此,分支轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址是可以預(yù)測(cè)的,預(yù)測(cè)的依據(jù)就是前一次轉(zhuǎn)移目標(biāo)地址的狀況,即根據(jù)歷史狀態(tài)預(yù)測(cè)下一次轉(zhuǎn)移的目標(biāo)地址。預(yù)測(cè)的準(zhǔn)確率不可能為100%,但是對(duì)于某些轉(zhuǎn)移指令預(yù)測(cè)的準(zhǔn)確率卻非常高3.2Pentium的寄存器

Pentium的寄存器可以分為三組:①基本寄存器組:包括通用寄存器、指令寄存器、標(biāo)示寄存器以及段寄存器②系統(tǒng)寄存器組:包括系統(tǒng)地址寄存器、控制寄存器③浮點(diǎn)部件寄存器組:包括數(shù)據(jù)寄存器堆、控制寄存器、狀態(tài)寄存器、指令指針寄存器和數(shù)據(jù)指針寄存器以及標(biāo)記字寄存器Pentium的基本寄存器包括通用寄存器、段寄存器、指令指針和標(biāo)志寄存器一、通用寄存器Pentium通用寄存器如圖3-2所示,它兼容8086CPU原來(lái)的8個(gè)16位通用寄存器以及原來(lái)的8個(gè)8位的寄存器,而且將原來(lái)的8個(gè)16位通用寄存器AX、BX、CX、DX、SI、DI、BP、SP均擴(kuò)展成32位的寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。既可以使用保留的8位和16位寄存器,還可以使用32位寄存器3.2.1基本寄存器組Pentium通用寄存器段寄存器及段描述符高速緩存器如圖3-3所示,Pentium有6個(gè)16位段寄存器,每個(gè)段寄存器對(duì)應(yīng)有一個(gè)64位的描述符,用戶不可見(jiàn)。6個(gè)段寄存器的長(zhǎng)度均為16位。除CS和SS分別是代碼段寄存器和堆棧段寄存器之外,其余的DS、ES、FS、GS都是數(shù)據(jù)段寄存器二、段寄存器及段描述符高速緩存器Pentium段寄存器及段描述符高速緩存器

每個(gè)段對(duì)應(yīng)一個(gè)段描述符(8個(gè)字節(jié)),6個(gè)段描述符存放在CPU內(nèi)的段描述符高速緩存器中,它們均由內(nèi)存的描述符表中拷貝而成,以便CPU訪問(wèn)某一段時(shí),均按存放在CPU內(nèi)該段的段描述符所描述的信息進(jìn)行操作。每個(gè)段描述符的具體組成如圖3-4所示1.6個(gè)段描述符圖3-4段描述符的組成

每個(gè)段寄存器的組成如圖3-5所示。在保護(hù)模式下,段寄存器被稱作為一個(gè)16位的段選擇字,其中b1、b0位為請(qǐng)求特權(quán)級(jí)RPL,可以請(qǐng)求特權(quán)層的級(jí)別0-3級(jí)2.6個(gè)16位段寄存器PentiumCPU中有一個(gè)32位的指令指(EIP)和一個(gè)32位的標(biāo)志寄存器(EFLAGS),如圖3-6所示三、指令指針和標(biāo)志寄存器EIP保存下一條待執(zhí)行指令所在代碼段內(nèi)的偏移值,也就是偏離代碼段首地址的字節(jié)地址數(shù)值。EIP的低16位為IP,供實(shí)地址方式下采用EFLAGS在808616位FLAGS基礎(chǔ)上擴(kuò)充了高16位,其中,F(xiàn)LAGSb11~b0中保留了8086CPU中6個(gè)狀態(tài)標(biāo)志和3個(gè)控制標(biāo)志,增加了NT與IOPL,高16位中新增了6個(gè)標(biāo)志位。這些擴(kuò)充標(biāo)志位的含義參考教材Pentium的系統(tǒng)寄存器組包括4個(gè)表所對(duì)應(yīng)的4個(gè)基地址寄存器GDTR、IDTR、LDTR、TR,也稱為4個(gè)段基地址寄存器,還包括5個(gè)控制寄存器CR0、CR1、CR2、CR3、CR4。系統(tǒng)寄存器組中的所有寄存器都不可能被用戶訪問(wèn),只能由特權(quán)級(jí)為0的操作系統(tǒng)程序訪問(wèn)3.2.2系統(tǒng)寄存器組

4個(gè)表基地址寄存器如圖3-7所示

(1)GDTR(GlobalDescriptorTableRegister),全局描述符表寄存器。共有48位,其中,高32位保存全局描述符表的線性基地址,低16位是表限字段,即表的最大長(zhǎng)度僅64KB(2)IDTR(InterruptDescriptorTableRegister),中斷描述符表寄存器。共有48位,其中高32位用于保存中斷描述符表IDT的32位線性基地址,低16位是表限字段,表的最大長(zhǎng)度也是64KB一、4個(gè)表基地址寄存器圖3-74個(gè)表基地址寄存器

(3)LDTR(LocalDescriptorTableRegister),局部描述符寄存器。包括16位段選擇符,不可編程的64位描述符寄存器。在64位描述符寄存器中,有32位LDT的線性基地址,20位的表限及12位的描述符屬性(4)TR,任務(wù)寄存器。包括16位段選擇符,64位描述符寄存器,其中,32位任務(wù)狀態(tài)段的線性基地址,20位的表限及12位的描述符屬性

1.CR0控制寄存器二、5個(gè)控制寄存器2.CR2頁(yè)故障線性地址寄存器用于保存最后出現(xiàn)頁(yè)故障的32位線性地址。操作系統(tǒng)中的頁(yè)異常處理程序可以通過(guò)檢查CR2的內(nèi)容,得知32位的線性地址。

3.CR3頁(yè)目錄基址寄存器其中高20位存放頁(yè)目錄表的物理基地址。在進(jìn)行分頁(yè)變換時(shí),加上10位線性地址×4,找到某一存儲(chǔ)容量為4B的頁(yè)描述符。在頁(yè)目錄基址寄存器的低12中,有PCD和PWT兩位控制位,其余10位保留

圖3-9控制寄存器CR2、CR34.CR4允許結(jié)構(gòu)擴(kuò)展的標(biāo)志寄存器32位CR4中僅使用了9個(gè)控制位,其余23位保留

5.模式專用寄存器Pentium取消了測(cè)試寄存器,而用一組專用寄存器來(lái)實(shí)現(xiàn)更多的功能。這組寄存器具有測(cè)試、跟蹤、性能檢測(cè)以及機(jī)器檢查等功能Pentium內(nèi)部有一個(gè)浮點(diǎn)運(yùn)算部件,與之配套一起實(shí)現(xiàn)浮點(diǎn)運(yùn)算的浮點(diǎn)寄存器有:8個(gè)數(shù)據(jù)寄存器1個(gè)標(biāo)記字寄存器1個(gè)狀態(tài)寄存器1個(gè)控制寄存器1個(gè)數(shù)據(jù)指針寄存器3.2.3浮點(diǎn)寄存器組1.8個(gè)數(shù)據(jù)寄存器

數(shù)據(jù)寄存器R7-R0均為80位寬,在每個(gè)80位寄存器中,均有1位數(shù)符位,15位階碼位,64位尾數(shù)位2.標(biāo)記字寄存器16位寬的標(biāo)記字寄存器分成8個(gè)2位,分別對(duì)應(yīng)8個(gè)數(shù)據(jù)寄存器,如圖3-11所示。標(biāo)記字寄存器的b1、b0位對(duì)應(yīng)R0數(shù)據(jù)寄存器,b3、b2位對(duì)應(yīng)R1數(shù)據(jù)寄存器,顯然b15、b14位對(duì)應(yīng)數(shù)據(jù)寄存器R7,用兩位二進(jìn)制數(shù)作標(biāo)記,以便CPU只須通過(guò)檢查標(biāo)記位,就可以知道數(shù)據(jù)寄存器是否空等圖3-11Pentium的浮點(diǎn)寄存器16位寄存器都被用來(lái)指示FPU當(dāng)前所處的狀態(tài)(1)IE,若IE置1,表示產(chǎn)生了無(wú)效操作,指示這是非法操作產(chǎn)生的故障(2)DE,若DE為1,表示操作數(shù)不符合規(guī)范產(chǎn)生的故障(3)ZE,若ZE=1,則指示除數(shù)為0引起的故障(4)PE,若PE=1,則指示運(yùn)算結(jié)果不符合精度規(guī)格(5)SP,堆棧故障標(biāo)志位,當(dāng)IE=1且SF=1時(shí),若C1=1則表示堆棧上溢引起無(wú)效故障。若C1=0,則指示堆棧下溢引起無(wú)效故障三、狀態(tài)寄存器(6)ES,錯(cuò)誤標(biāo)志位,以上任何一個(gè)故障都會(huì)使ES=1,且使CPU引腳信號(hào)變?yōu)榈碗娖剑?)C0-C3,條件碼,這4位條件碼可以用SAHF指令進(jìn)行設(shè)置,也可用FSTSW指令讀取,該4位二進(jìn)制的狀態(tài)使FPU實(shí)現(xiàn)某種選擇。C0還和SF配合使用表示堆棧的狀態(tài)(8)TOP,堆棧棧頂指針(9)B,用來(lái)指示FPU當(dāng)前是否處于忙狀態(tài),當(dāng)B=1時(shí),表示忙,反之處于不忙狀態(tài)(1)PM~I(xiàn)M低6位控制位,分別用來(lái)控制6種異常能否允許產(chǎn)生中斷,這6種控制位分別用來(lái)屏蔽狀態(tài)寄存器中的低6種狀態(tài)位,即IM位用來(lái)屏蔽IE位,DM位用于屏蔽DE位等(2)2位PC位,用作精度控制,當(dāng)2位PC位為00時(shí),作24位單精度運(yùn)算,10時(shí)為53位雙精度運(yùn)算,11時(shí)為擴(kuò)展的雙精度運(yùn)算,即64位運(yùn)算,01未用(3)2位RC位,用作舍入控制四、FPU的控制寄存器圖3-13FPU的控制寄存器3.3Pentium的虛擬存儲(chǔ)器3.3.1Pentium的工作模式簡(jiǎn)介

Pentium的虛擬存儲(chǔ)器(VivtualStorage)技術(shù)、高速緩存(Cache)技術(shù)以及超標(biāo)量流水線技術(shù)是微型計(jì)算機(jī)系統(tǒng)的三大支柱,虛擬存儲(chǔ)器的目標(biāo)是如何高速允許多個(gè)軟件進(jìn)程共享并使用主存儲(chǔ)器這一容量有限的存儲(chǔ)資源。虛擬存儲(chǔ)器的實(shí)現(xiàn)不僅僅體現(xiàn)在計(jì)算機(jī)硬件系統(tǒng)上的完美無(wú)缺,而且虛擬存儲(chǔ)器技術(shù)是操作系統(tǒng)的核心技術(shù),操作系統(tǒng)中存儲(chǔ)器管理程序的主要任務(wù)就是要將有限的主存儲(chǔ)器不斷地動(dòng)態(tài)分配給各活動(dòng)進(jìn)程

Pentium的工作模式分為:實(shí)模式、保護(hù)模式、虛擬86模式、平展模式、線性空間以及系統(tǒng)管理模式共五種。Pentium外部的地址總線寬度36位,由控制寄存器CR4中物理地址擴(kuò)充允許位PAE控制所使用的物理空間,一般設(shè)PAE=0,禁止地址的擴(kuò)充,只使用32位的物理地址,32位地址由A31-A3及8個(gè)字節(jié)選擇信號(hào)BE7-BE0組成,因此,最大物理地址空間是4GB。PentiumCPU外部數(shù)據(jù)總線寬度為64位,但CPU內(nèi)部寄存器仍為32位,Pentium微處理器是32位微處理器3.3.2Pentium工作的保護(hù)模式保護(hù)模式是受保護(hù)的虛擬地址模式(ProtectedVirtualAddressMode)的簡(jiǎn)稱。從80386CPU開(kāi)始,就具有了保護(hù)模式,PentiumCPU內(nèi)部也設(shè)有存儲(chǔ)器管理部件MMU,其中,仍然包括分段部件SU和分頁(yè)部件PU,通過(guò)系統(tǒng)程序員編程,Pentium可以工作在只分段或只分頁(yè)或既分段又分頁(yè)三種方式。這三種方式的關(guān)鍵建立在分段地址轉(zhuǎn)換與分頁(yè)地址轉(zhuǎn)換的基礎(chǔ)之上

1.利用GDTR與LDTR分別訪問(wèn)GDT與LDT48位的全局描述符表寄存器包括32位全局描述符表的基地址和16位的表界限,GDT的長(zhǎng)度不超過(guò)64KB。在保護(hù)模式下,Pentium支持多任務(wù)的運(yùn)行,如果某一任務(wù)要訪問(wèn)GDT時(shí),則以GDTR中32位基地址作為全局描述符表的基地址,再由每個(gè)任務(wù)選擇符的高13位左移3位后作為GDT的偏移地址,指向所要訪問(wèn)的8字節(jié)的描述符一、分段地址轉(zhuǎn)換每個(gè)任務(wù)有各自的代碼段CS、數(shù)據(jù)段DS、還可能有附加的數(shù)據(jù)段ES、FS、GS以及堆棧段等,每個(gè)段有一個(gè)64位的段描述符,如圖3-7所示,各個(gè)任務(wù)組成了自己的局部描述符表LDT,因此,在內(nèi)存中有多個(gè)LDT各任務(wù)公用的代碼段、數(shù)據(jù)段的段描述符以及任務(wù)狀態(tài)段TSS等系統(tǒng)段的描述符組成了全局描述符表GDT,內(nèi)存中只有一個(gè)GDT。當(dāng)前任務(wù)訪問(wèn)LDT時(shí),由LDTR中對(duì)應(yīng)的64位描述符高速緩存器中32位基地址作為L(zhǎng)DT的基地址,再由段選擇符的高13位左移3位后作為L(zhǎng)DT的偏移地址,指向所要訪問(wèn)的8字節(jié)的段描述符。如圖3-14所示,其中的描述符也就是圖3-4所示的描述符

圖3-14由LDTR由訪問(wèn)LDT當(dāng)任務(wù)發(fā)生切換時(shí),由LDTR中選擇符的高13位左移三位后,作為GDT中的偏移地址,在GDT中取出該任務(wù)的LDT描述符,并裝入到LDT對(duì)應(yīng)的描述符高速緩存器,于是在LDTR中的高速緩存器中,存入了當(dāng)前LDT的基地址,表界限以及性屬性等,如圖3-15所示圖3-15由GDTR訪問(wèn)GDT在LDT中查到的描述符,其32位基地址如果只分段不分頁(yè)的話,此32位基地址加上指令中的32位偏移量址,就求得32位的物理地址。在GDT中查到的描述符,其32位基地址表示當(dāng)前LDT的基地址,該描述符一定會(huì)由硬件自動(dòng)存入高速緩存器中由于Pentium內(nèi)部寄存器是32位,由于Pentium芯片組成的微機(jī)為32位機(jī),訪問(wèn)存儲(chǔ)器的指令仍然有直接尋址、寄存器尋址、基址尋址、變址尋址、基址加變地尋址等

2.分段地址的轉(zhuǎn)換例【3-2】幾條訪問(wèn)內(nèi)存指令MOVAL,[18887777H]MOVAX,[EBX]MOVEAX,[ESI]MOVECX,[EBX+EDI]MOVDX,[EBP]只有最后一條指令訪問(wèn)堆找段SS,其余指令均訪問(wèn)數(shù)據(jù)段DS,構(gòu)成邏輯地址為DS:32位偏移量或SS:32位偏移量,在32位機(jī)中,我們將邏輯地址稱為虛擬地址,段寄存器稱之為段選擇符Pentium的分段地址轉(zhuǎn)換過(guò)程圖如圖3-16所示。根據(jù)段寄存器即段選擇符中b2位TI,確定訪問(wèn)當(dāng)前LDT(TI=1)或GDT(TI=0),如果訪問(wèn)LDT,將13位索引值左移3位后,作為L(zhǎng)DT基地址的偏移量,指向8B的段描述符,段描述符中的32位基地址加上指令中的32位偏移量成為32位線性地址,如果不分頁(yè)只分段,結(jié)果為該機(jī)器指令所尋址的物理地址,如果還需要分頁(yè),此線性地址分為三段,即頁(yè)目錄(號(hào))、頁(yè)面(號(hào))和偏移量如果TI=0,則訪問(wèn)GDT,與前述相同。在圖3-7中,系統(tǒng)還有一個(gè)48位的中斷描述符表寄存器,其中32位的基地址是全系統(tǒng)中僅有的一個(gè)中斷描述符表IDT的基地址。Pentium機(jī)中所有的中斷,包括軟中斷、硬件中斷以及CPU內(nèi)部的異常中斷,每個(gè)中斷在IDT中均有一個(gè)描述符,IDT中最多可有256個(gè)描述符。每個(gè)中斷描述符也是8字節(jié),主要包括中斷服務(wù)程序的入口地址,還有其他屬性等信息。

圖3-16分段地址轉(zhuǎn)換過(guò)程圖

分頁(yè)地址轉(zhuǎn)換由CPU內(nèi)的分頁(yè)部件PU來(lái)實(shí)現(xiàn),它將32位的線性地址轉(zhuǎn)換成32位的物理地址。這32位線性地址可能來(lái)自分段部件SU(既分段又分頁(yè)方式),也可能是不分段只分頁(yè)的情況,程序不提供段選擇符,只由指令寄存器提供的32位地址作為線性地址,即10位的頁(yè)目錄(號(hào))、10位的頁(yè)表(號(hào))和12位的頁(yè)內(nèi)偏移量在控制寄存器CR4中頁(yè)面長(zhǎng)度控制位PSE的控制下,Pentium的分頁(yè)部件PU可以按80386/80486每頁(yè)4KB分頁(yè)(PSE=0),也可按每頁(yè)4MB分頁(yè)(PSE=1)二、分頁(yè)地址轉(zhuǎn)換

4KB分頁(yè)方式采用兩級(jí)分頁(yè)方式,第一級(jí)有一個(gè)4KB的頁(yè)目錄表,可存放1024個(gè)頁(yè)目錄項(xiàng),稱之為高級(jí)管理,第二級(jí)有一個(gè)4KB的頁(yè)表,可以存放1024個(gè)頁(yè)表項(xiàng),稱之為低級(jí)管理。頁(yè)目錄項(xiàng)與頁(yè)表項(xiàng)均為32位(4字節(jié)),如圖3-17所示1.4KB分頁(yè)方式圖3-17頁(yè)目錄項(xiàng)與頁(yè)表項(xiàng)①P,存在位

P=1表示該頁(yè)表/頁(yè)存在,P=0,表示不存在②PWT,通寫(xiě)位用于片外Cache的寫(xiě)控制,PWT=1時(shí),片外Cache采用通寫(xiě)法,PWT=0時(shí),片外cache使用回寫(xiě)法③PCD,頁(yè)Cache禁止位用于對(duì)分頁(yè)高速緩沖存儲(chǔ)器的控制。若PCD=1時(shí),CPU內(nèi)部Cache被禁用④A,訪問(wèn)位表示該目錄項(xiàng)或頁(yè)表項(xiàng)所對(duì)應(yīng)的頁(yè)面是否在近期被訪問(wèn)過(guò)。當(dāng)A=1時(shí)表示近期被訪問(wèn)過(guò),過(guò)一段時(shí)間后由操作系統(tǒng)清除為0,當(dāng)頁(yè)面調(diào)度程序需要調(diào)出一些頁(yè)面時(shí),通過(guò)檢查A位狀態(tài),就可以知道各頁(yè)的使用情況,并根據(jù)調(diào)度算法確定調(diào)出哪些頁(yè)⑤D,寫(xiě)標(biāo)志位僅頁(yè)表項(xiàng)中的D位有意義。當(dāng)頁(yè)表項(xiàng)所涉及到的頁(yè)面被改寫(xiě)過(guò),D位由硬件置成1,一直保持為1狀態(tài),直到該頁(yè)被調(diào)出內(nèi)存。當(dāng)調(diào)度程序要調(diào)出此頁(yè)時(shí),首先檢查D標(biāo)志,若D=1,則把內(nèi)存中的此頁(yè)拷貝回外存相應(yīng)位置,以刷新外存上的本頁(yè)內(nèi)容。若D=0,表示此頁(yè)沒(méi)有被改寫(xiě),調(diào)度程序不必將它拷貝回外存,只是簡(jiǎn)單地丟棄本頁(yè)內(nèi)容,因而D位也被稱之為“臟位”⑥PS(PageSize),—頁(yè)大小位。只有頁(yè)表項(xiàng)中有此位。PS=1,頁(yè)面大小按4MB分頁(yè),PS=0,頁(yè)面大小按4KB分頁(yè)⑦U/S,用戶/管理員。頁(yè)面保護(hù)屬性位⑧R/W,讀/寫(xiě)。頁(yè)保護(hù)屬性位U/S與R/W結(jié)合起來(lái),實(shí)現(xiàn)頁(yè)保護(hù)。在分頁(yè)部件中,具有頁(yè)保護(hù)功能,將使用對(duì)象分為特權(quán)級(jí)3的用戶以及特權(quán)級(jí)2、1、0的管理員用戶,管理員用戶不受頁(yè)的保護(hù)

Pentium4KB分頁(yè)方式地址轉(zhuǎn)換如圖3-18所示。將32位線性地址定義為三個(gè)字段,頁(yè)目錄(號(hào))、頁(yè)面(號(hào))以及偏移量,分別為10位、10位和12位圖3-18Pentium4KB分頁(yè)方式地址轉(zhuǎn)換圖例【3-3】假設(shè)線性地址是3C445566H,CR3=11223000H解:①取線性地址的高10位作為頁(yè)目錄(號(hào)),求得0011110001B,乘以4(左移2位)作為頁(yè)目錄項(xiàng)指針,結(jié)果為001111000100B=3C4H②查找頁(yè)目錄項(xiàng)的物理地址:11223000H+3C4H=112233C4H例【3-4】設(shè)所查找到頁(yè)表項(xiàng)中20位頁(yè)面基地址是12345H,線性地址仍然取3C445566H解:轉(zhuǎn)換后最終物理地址:12345000H+566H=12345566H①

存儲(chǔ)器分頁(yè)管理通過(guò)CPU內(nèi)部寄存器CR3和兩級(jí)頁(yè)表來(lái)實(shí)現(xiàn),頁(yè)目錄表稱為高級(jí)管理,頁(yè)表稱為低級(jí)管理

將物理內(nèi)存按4KB劃分為一頁(yè),稱為一個(gè)頁(yè)面,每1024頁(yè)為一個(gè)低級(jí)管理,由線性地址的中間10位地址確定。每頁(yè)有一個(gè)起始地址,存放在頁(yè)表中,由頁(yè)表項(xiàng)中20位基址作為物理地址的高20位地址,低12位補(bǔ)0。共有1024頁(yè),每頁(yè)的20位基地址排列存放在頁(yè)表中,整個(gè)頁(yè)表占4KB③

在低級(jí)管理的上面是高級(jí)管理,由高級(jí)管理(頁(yè)目錄表)對(duì)1024個(gè)頁(yè)表進(jìn)行管理,每個(gè)頁(yè)表有一個(gè)起始地址,由頁(yè)目錄項(xiàng)中20位基地址作高20位地址,低位補(bǔ)12個(gè)0,求得頁(yè)表的起始地址,頁(yè)目錄表共計(jì)有1024個(gè)頁(yè)表項(xiàng),分別用于存放1024個(gè)頁(yè)表的基地址,構(gòu)成了頁(yè)目錄表,每個(gè)頁(yè)目錄項(xiàng)占4B,頁(yè)目錄表也占4KB④

將線性地址分為10位、10位、12位三個(gè)字段,選用兩級(jí)管理可管理內(nèi)存210×210×212B=4GB⑤

如果將32位線性地址分成兩個(gè)字段,低12位為偏移量不變,一頁(yè)仍為4KB大小,高20位僅為一個(gè)字段,僅采用單級(jí)頁(yè)表,那么,將會(huì)有220個(gè)頁(yè)表項(xiàng)(省去頁(yè)目錄表),即頁(yè)表中有1M個(gè)頁(yè)表項(xiàng),同樣可以管理220×212B=4GB內(nèi)存,但是若每個(gè)頁(yè)表項(xiàng)同樣占4B,那么頁(yè)表共計(jì)占4MB,這是不可取的

將32位線性地址分為2個(gè)字段,頁(yè)面(號(hào))10位,偏移量22位,采用單級(jí)頁(yè)表分頁(yè)方式,由于頁(yè)面(號(hào))僅10位,頁(yè)表中共有1024個(gè)頁(yè)表項(xiàng),每個(gè)頁(yè)表項(xiàng)32位,頁(yè)表僅占4KB,這是Pentium較80386/80486增加的分頁(yè)方式。全系統(tǒng)只有一個(gè)頁(yè)表,由控制寄存器CR3指向頁(yè)表的起始地址。4MB分頁(yè)方式的地址轉(zhuǎn)換如圖3-19所示2.4MB分頁(yè)方式4MB分頁(yè)方式地址的轉(zhuǎn)換過(guò)程如下:首先,10位頁(yè)面(號(hào))左移2位,與32位CR3相加產(chǎn)生頁(yè)表項(xiàng)的物理地址,注意,所尋址頁(yè)表項(xiàng)中僅有高10位為頁(yè)面基地址,而不是4KB分頁(yè)方式中的20位為頁(yè)面基地址。將此10位地址左移22位,相當(dāng)于低22位補(bǔ)0,然后與線性地址中的22位偏移量相加,最終產(chǎn)生32位的物理地址

圖3-19Pentium4MB分頁(yè)方式的地址轉(zhuǎn)換過(guò)程圖

1.只分段不分頁(yè)從分段地址轉(zhuǎn)換過(guò)程圖(圖3-16)可以看出,分段不分頁(yè)由16位的段選擇符和一個(gè)32位的偏移地址組成,段選擇符的低2位用于保護(hù),高14位指示段,因此,一個(gè)進(jìn)程可允許的最大虛擬空間為214+32=64TB。段管理部件SU將段選擇符與32位虛地址轉(zhuǎn)換成32位線性地址,由于只分段不分頁(yè),此線性地址就是最終的32位物理地址。不需要分頁(yè),也就不需要經(jīng)過(guò)頁(yè)目錄表與頁(yè)表的轉(zhuǎn)換,地址轉(zhuǎn)換速度快。缺點(diǎn)是段的頻繁調(diào)入調(diào)出,耗時(shí)多,內(nèi)存管理性能稍差一點(diǎn)三、保護(hù)模式的三種方式

Pentium在頁(yè)管理部件PU的管理下,可以對(duì)存儲(chǔ)器只實(shí)行分頁(yè)管理,分段部件SU不工作。如前面所述,可以按4KB和4MB兩種大小不同的頁(yè)面分頁(yè)。與程序的段選擇符無(wú)關(guān),僅將指令提供的32位虛地址看成是32位的線性地址,無(wú)論按4KB分頁(yè)或是按4MB分頁(yè),均可形成32位物理地址,進(jìn)程所擁有的最大虛存空間都是232=4GB。這種只分頁(yè)不分段的保護(hù)模式也稱為平展地址模式,比只分段不分頁(yè)模式靈活。在WindowsNT和Windows95操作系統(tǒng)中采用了這種模式2.只分頁(yè)不分段

分段分頁(yè)方式是先分段后分頁(yè),在分段的基礎(chǔ)上進(jìn)行分頁(yè),分段所形成的32位線性地址不是最后的物理地址,而是提供給分頁(yè)部件,作為頁(yè)目錄(號(hào))、頁(yè)表(號(hào))以及頁(yè)內(nèi)偏移量,按4KB大小分頁(yè)。一個(gè)進(jìn)程的最大虛地址空間與只分段的虛地址模式相同,也是64TB,兼有分段與分頁(yè)的優(yōu)點(diǎn),UNIXSystemV和OS/2操作系統(tǒng)使用了這種保護(hù)模式3.既分段又分頁(yè)圖3-20分段分頁(yè)地址轉(zhuǎn)換過(guò)程圖(1)由于段選擇符中TI=1,所以從64KB的局部描述符表中查找對(duì)應(yīng)的段描述符,該段描述符的指針等于LDTR中32位基地址+段選擇符高13位×8(2)由段描述符中32位段基地址+虛地址中32位偏移量=32位線性地址。線性地址的高10位為頁(yè)目錄(號(hào)),中間10位為頁(yè)表(號(hào)),低12位為偏移量(3)以CR3中32位基地址為頁(yè)目錄表中基地址,按4KB大小分頁(yè),其分頁(yè)的原理與圖3-18中分頁(yè)原理完全相同3.3.3Pentium工作的實(shí)模式實(shí)模式是實(shí)地址模式的簡(jiǎn)稱。所謂實(shí)模式,是8088/8086CPU工作的一種模式,指令中只允許出現(xiàn)邏輯地址,邏輯地址由16位段值與16位偏移地址組成,將16位段值乘以16,并加上16位偏移地址值,便產(chǎn)生20位的物理地址,這由CPU中總線接口單元的20位地址形成部件產(chǎn)生。產(chǎn)生地址信號(hào)A19-A0共20根,可尋址最大物理空間為1MB。MS-DOS操作系統(tǒng)僅支持實(shí)模式,PentiumCPU工作在Windows下,可以通過(guò)切換進(jìn)入到DOS狀態(tài),運(yùn)行采用實(shí)模式的16位應(yīng)用程序

8086的存儲(chǔ)器尋址是將16位的段寄存器左移4位后,形成20位的段基地址,然后同16位的偏移量相加,最后產(chǎn)生20位的物理地址,可以尋址1MB內(nèi)存空間,當(dāng)相加產(chǎn)生的20位物理地址超出20位時(shí),超出位被丟棄,即出現(xiàn)地址環(huán)繞現(xiàn)象

例【3-5】設(shè)8086的邏輯地址是FFFFHFFFFH,求其物理地址。解:PA=FFFFH×16+FFFFH=10FFEFH丟棄最高位1,則PA=0FFEFH例【3-6】當(dāng)32位機(jī)工作在實(shí)模式下,設(shè)DS=1002H,F(xiàn)S=2000H,BX=3000H,求下列兩條指令的邏輯地址分別是什么?①M(fèi)OVAX,DS:[BX]②MOVEAX,F(xiàn)S:[BX]解:邏輯地址表達(dá)方式為:段選擇符:偏移量,那么兩條指令的邏輯地址分別如下:第①條1002H:00003000H第②條2000H:00003000H注意:中括號(hào)內(nèi)的偏移量只允許為16位,不能為32位,例如不允許下列指令工作在實(shí)模式下:MOVAX,DS:[EBX]MOVECX,F(xiàn)S:[ESI]32位機(jī)(80386/80486/Pentium)工作在實(shí)模式下的地址轉(zhuǎn)換圖如圖3-21所示。32位機(jī)工作在實(shí)模式下,最大物理空間仍為1MB。MS-DOS采用實(shí)模式,Windows3.X也可以運(yùn)行于實(shí)模式,在實(shí)模式下,CPU與內(nèi)存可以交換32位數(shù)據(jù)指令中涉及到的段寄存器(例如DS、FS)在這兒被稱之為段選擇符,指令中32位偏移量的高16位補(bǔ)0,形成了32位偏移量,將段選擇符中的值乘以16設(shè)置到段寄存器的描述符高速緩存器的基地址字段,作為訪問(wèn)存儲(chǔ)器的基地址,而把一個(gè)段的大小固定為64K字節(jié),設(shè)置在描述符高速緩存器的段界字段圖3-21實(shí)模式下的地址轉(zhuǎn)換過(guò)程圖3.3.4Pentium工作的虛擬8086模式虛擬8086模式簡(jiǎn)稱虛擬86(V86)模式,它是在32位保護(hù)模式下支持16位實(shí)模式應(yīng)用程序的一種保護(hù)模式在一般保護(hù)模式下,32位標(biāo)志寄存器EFLAGS中的b17=0,即VM位=0,當(dāng)VM=1時(shí),切換到V86方式

V86模式和實(shí)模式下的地址轉(zhuǎn)換方式基本相同。虛擬86模式下的地址轉(zhuǎn)換圖如圖3-22所示。如果在V86模式下禁止分頁(yè),那么其地址轉(zhuǎn)換方式完全相同于實(shí)模式下的地址轉(zhuǎn)換方式。如果允許分頁(yè)功能的話,可以通過(guò)分頁(yè)機(jī)制,在4GB的物理地址范圍內(nèi)分配多個(gè)8086的1MB地址空間

在進(jìn)行地址轉(zhuǎn)換時(shí),把段寄存器的描述符高速緩存器中的基地址同偏移量相加而得到的地址稱為線性地址,將線性地址再通過(guò)分頁(yè)機(jī)制進(jìn)行分頁(yè)轉(zhuǎn)換,就可以產(chǎn)生最終的物理地址

當(dāng)CPU工作在實(shí)模式下,其工作的代碼位于特權(quán)級(jí)0,保護(hù)機(jī)構(gòu)不工作。在V86模式下的代碼則位于特權(quán)級(jí)3,保護(hù)機(jī)構(gòu)工作,這要求預(yù)先在保護(hù)方式下對(duì)CR0的PG位置成1,即b31=1,于是就允許分頁(yè)

在虛擬86方式下,分頁(yè)地址轉(zhuǎn)換的過(guò)程如圖3-23所示。由例【3-5】可知,32位線性地址的最大值為0010FFEFH,高11位恒為0,那么b31~b22這高10位一定全為0,線性地址的高10位作為頁(yè)目錄項(xiàng)的基地址,所以V86方式下,只訪問(wèn)頁(yè)目錄表中的第1個(gè)頁(yè)目錄項(xiàng),本來(lái)可以有1024個(gè)頁(yè)目錄項(xiàng)

線性地址的中間10位地址中,一般情況下高2位(b21、b20)均為0,所以只有低8位是有效位,那么可以訪問(wèn)256個(gè)頁(yè)表項(xiàng),考慮到FFFFH×16+FFFFH=10FFEFH的特殊情況,則相加后產(chǎn)生上溢出,使得b20上溢出為1,在b20=1的溢出情況下,而b19~b0只有000H~00FH共16種可能,所以可查找的頁(yè)表項(xiàng)增加16個(gè),變?yōu)?56+16=272個(gè)。本來(lái)共計(jì)可查找1024個(gè)頁(yè)表項(xiàng),但是虛擬86模式下只可查找272個(gè)頁(yè)表項(xiàng)

圖3-22虛擬86模式下不分頁(yè)地址轉(zhuǎn)換過(guò)程圖在V86模式下,如果禁止分頁(yè),存儲(chǔ)器尋址空間僅為1MB。這與8086基本上相同,每段存儲(chǔ)空間最大為64KB由于V86模式只能查找到一個(gè)頁(yè)目錄項(xiàng),而不是1024個(gè),所以V86模式可尋址物理空間,由頁(yè)表項(xiàng)中的20位基地址與線性地址的低12位相拼而成為32位的物理地址,因此,可訪問(wèn)4GB存儲(chǔ)空間

在V86模式允許分頁(yè)的情況下,物理頁(yè)的大小為4KB,即按4KB大小分頁(yè),多任務(wù)中的每一個(gè)任務(wù)所用的全部頁(yè)面可以定位在一個(gè)物理空間,這個(gè)空間大小為1MB,不同任務(wù)的代碼定義在不同的1MB內(nèi)存空間,4GB物理空間可以定義若干個(gè)虛擬8086的地址空間(1MB),把4GB物理存儲(chǔ)器虛擬化了,這就是取名為虛擬8086模式的緣由

圖3-23虛擬86模式下分頁(yè)地址轉(zhuǎn)換過(guò)程圖3.3.5三種工作模式的相互轉(zhuǎn)換

三種工作模式可以相互轉(zhuǎn)換,如圖3-24所示。CPU上電或復(fù)位后就進(jìn)入實(shí)地址模式,通過(guò)對(duì)控制寄存器CR0中的b0位置1,即保護(hù)允許位PE置1,于是系統(tǒng)進(jìn)入保護(hù)模式,若使PE復(fù)位,則返回到實(shí)地址模式。通過(guò)執(zhí)行IRETD指令或者進(jìn)行任務(wù)轉(zhuǎn)換時(shí),則從保護(hù)模式轉(zhuǎn)變?yōu)閂86模式,通過(guò)中斷可以從V86模式轉(zhuǎn)變到保護(hù)模式。在V86模式下可以復(fù)位到實(shí)地址模式圖3-24三種工作模式的相互轉(zhuǎn)換3.3.6Pentium的存儲(chǔ)保護(hù)80386/80486/Pentium采用虛擬存儲(chǔ)器技術(shù)的目的是為了更有效地使用有限的主存儲(chǔ)器資源。在程序運(yùn)行過(guò)程中,為了防止應(yīng)用程序破壞系統(tǒng)程序,某一應(yīng)用程序破壞其他應(yīng)用程序,錯(cuò)誤地把數(shù)據(jù)當(dāng)作程序運(yùn)行等故障的發(fā)生等,所采取的各種措施都稱之為存儲(chǔ)保護(hù),最典型的存儲(chǔ)保護(hù)是采用稱之為特權(quán)級(jí)的保護(hù)方式一、特權(quán)級(jí)的級(jí)別

特權(quán)級(jí)保護(hù)是將系統(tǒng)中所有的程序分配相應(yīng)的級(jí)別,特權(quán)級(jí)0的特權(quán)級(jí)別最高,操作系統(tǒng)(OS)的特權(quán)級(jí)為0,特權(quán)級(jí)別也就最高。特權(quán)級(jí)保護(hù)功能的主要目的是不準(zhǔn)任何應(yīng)用程序修改操作系統(tǒng)的數(shù)據(jù),而又允許程序調(diào)用操作系統(tǒng)中提供的各種服務(wù)子程序Pentium四個(gè)特權(quán)級(jí)的保護(hù)示意圖如圖3-25。操作系統(tǒng)處于最內(nèi)層,具有最高特權(quán)級(jí)0,依次向外,特權(quán)級(jí)降低,最外層特權(quán)級(jí)最低,而PL值最大,即PL=3。最外層一般是應(yīng)用程序?qū)?,享有最低特?quán)級(jí)。

Pentium特權(quán)級(jí)所應(yīng)遵循的規(guī)則有2條:①特權(quán)級(jí)高的數(shù)據(jù)段不能被特權(quán)級(jí)低的代碼段訪問(wèn)②特權(quán)級(jí)高的代碼段不能向特權(quán)級(jí)低的代碼段轉(zhuǎn)移調(diào)用,反之是允許的圖3-25Pentium四個(gè)特權(quán)級(jí)的分層1.CPL(CurrentPL),當(dāng)前特權(quán)級(jí)。CPL是當(dāng)前運(yùn)行程序或任務(wù)的特權(quán)級(jí),分別被保存在段寄存器CS即段選擇符的b1b0位和當(dāng)前任務(wù)寄存器的b1b0位2.DPL(DiscriptorPL),描述符特權(quán)級(jí)。它表示該段或任務(wù)門(mén)的特權(quán)級(jí),分別被保存在段描述符和門(mén)描述符的DPL域中,段描述符的DPL具體在訪問(wèn)權(quán)字節(jié)中的b6b5位3.RPL(RequestedPL)請(qǐng)求特權(quán)級(jí)。用于表示段選擇符的另一種特權(quán)級(jí),它保存在段選擇符的b1b0位。表示本次訪問(wèn)所要求的特權(quán)級(jí)二、三種類型特權(quán)級(jí)Pentium的數(shù)據(jù)段寄存器有DS、ES、FS、GS以及堆棧段寄存器SS,為了訪問(wèn)某一數(shù)據(jù)段的內(nèi)容,必須通過(guò)MOV、LDS、LES等指令將數(shù)據(jù)段的選擇符裝入相應(yīng)的段寄存器中,Pentium在將選擇符裝載到段寄存器之前,必須要將當(dāng)前運(yùn)行程序和任務(wù)的CPL,所要請(qǐng)求的RPL與要訪問(wèn)的數(shù)據(jù)段描述符中DPL進(jìn)行比較,DPL中值要大于或等于CPL以及RPL的值,才能將選擇符裝載到段寄存器中,也就是要滿足如下公式的要求:DPL數(shù)據(jù)段描述符≥MAX(CPL當(dāng)前代碼段,RPL數(shù)據(jù)段選擇符)(3-1)例【3-7】三種特權(quán)級(jí)的應(yīng)用舉例

設(shè)數(shù)據(jù)段描述符的特權(quán)級(jí)為2,設(shè)有四個(gè)當(dāng)前程序,當(dāng)前代碼段特權(quán)級(jí)CPL分別為0、1、2、3,而段選擇符的請(qǐng)求級(jí)RPL分別為3、1、2、3,求出哪一個(gè)段選擇符可以裝入段寄存器中?根據(jù)公式(3-1),分析結(jié)果如表3-3所示表3-3CPL、RPL、DPL之間的關(guān)系當(dāng)前代碼段CPL段選擇符請(qǐng)求級(jí)RPL數(shù)據(jù)段描述符DPL訪問(wèn)與否原因032否RPL>DPL112可以DPL>CPL、RPL222可以DPL=CPL、RPL332否DPL<CPL、RPL3.4Pentium的超標(biāo)量流水線

Pentium具有兩條關(guān)于指令的標(biāo)量流水線,所以稱之為超標(biāo)量流水線。每條指令流水線分為5段,CPU在一個(gè)時(shí)鐘周期內(nèi)可以執(zhí)行兩條指令。它兼有復(fù)雜指令系統(tǒng)計(jì)算機(jī)(CISC)與精減指令系統(tǒng)計(jì)算機(jī)兩者的特性Pentium整數(shù)指令流水線的結(jié)構(gòu)請(qǐng)參考圖3-1。兩條整數(shù)流水線分別稱之為U流水線和V流水線。兩條指令流水線同時(shí)執(zhí)行先后兩條相鄰的指令,先一條在U流水線中執(zhí)行,后一條在V流水線中執(zhí)行,“U”、“V”有先后順序及相鄰的意思3.4.1Pentium的超標(biāo)量流水線結(jié)構(gòu)一、兩條指令流水線共用部件⒈超標(biāo)量流水結(jié)構(gòu)中有兩個(gè)預(yù)取緩沖器,均為32字節(jié),負(fù)責(zé)從CPU內(nèi)部Cache或主存中預(yù)先取出指令并緩存⒉指令譯碼器要完成對(duì)指令的譯碼、相鄰兩條指令的配對(duì)檢查等操作。如果遇到轉(zhuǎn)移指令,要在譯碼之后,將轉(zhuǎn)移指令地址送到轉(zhuǎn)移目標(biāo)緩沖器BTB中進(jìn)行查找⒊微程序控制器中的控制ROM存儲(chǔ)了若干條機(jī)器指令的微程序⒈U、V兩個(gè)地址生成部件,分別用于產(chǎn)生存儲(chǔ)器操作數(shù)的地址,Pentium工作在不同模式下的邏輯地址都要轉(zhuǎn)換成物理地址以便訪問(wèn)數(shù)據(jù)Cache,轉(zhuǎn)換后援緩沖器TLB可用來(lái)加快這種地址的轉(zhuǎn)換速度⒉8KB的數(shù)據(jù)Cache是雙端口結(jié)構(gòu),可同時(shí)由U、V兩條流水線訪問(wèn),一個(gè)時(shí)鐘周期內(nèi)能存取兩個(gè)32位數(shù)據(jù),或者是64位的浮點(diǎn)數(shù)二、非公用的流水部件⒊兩個(gè)32位的ALU對(duì)簡(jiǎn)單指令的運(yùn)算均只需要一個(gè)時(shí)鐘周期。簡(jiǎn)單指令指ADDEAX,EBX之類指令,不涉及到訪問(wèn)存儲(chǔ)器的運(yùn)算指令。流水線中還包括8個(gè)32位通用寄存器,即EAX、EBX、ECX、EDX、EBP、ESI、EDI、ESP3.4.2U、V流水線及其分工策略一、U、V流水線的基本原理U、V流水線都由5段組成,前兩段U、V流水線共享,后3段分離進(jìn)行。U、V流水線工作的基本原理圖見(jiàn)圖3-26所示第一段是預(yù)取段——PF,在這一段要從指令Cache中取出指令,并將取出的指令存入預(yù)取緩沖器中第二段是指令譯碼1段——D1,在這一段,要確認(rèn)指令的操作碼、尋址方式以及完成指令的配對(duì)檢查和轉(zhuǎn)移指令的預(yù)測(cè),前后連續(xù)的兩條指令i1和i2都要被譯碼完成,最終要判斷這兩條指令能否并行發(fā)射到下一段第三段是指令譯碼2段——D2,在這一段,要計(jì)算并產(chǎn)生存儲(chǔ)器操作數(shù)的地址,不是所有指令都要計(jì)算存儲(chǔ)器操作數(shù),但每條指令都必須流經(jīng)這一段

第四段是執(zhí)行段——EX,此段主要在ALU、桶形移位器和其他功能部件中完成指定的運(yùn)算。第五段是寫(xiě)回段——WB,將計(jì)算結(jié)果寫(xiě)回到標(biāo)志寄存器、目的寄存器以及其他目的地方。

圖3-26U、V流水線工作的基本原理D1段是流水線中的關(guān)鍵段,這一對(duì)指令經(jīng)譯碼后同時(shí)發(fā)射到下一段必須要滿足下列4個(gè)條件:⒈兩條指令都是簡(jiǎn)單指令⒉相鄰兩條指令之間不能有數(shù)據(jù)相關(guān)的問(wèn)題共計(jì)有三類數(shù)據(jù)相關(guān)沖突,即寫(xiě)后讀(RAW)、讀后寫(xiě)(WAR)以及寫(xiě)后寫(xiě)(WAW)相關(guān)⒊兩條指令不同時(shí)含有立即數(shù),不同時(shí)都是含有偏移量的相對(duì)尋址指令⒋只有i1條指令允許帶有前綴例【3-8】MOVAX,BXMOVECX,ESI1NCAXADDEBX,EDI

前兩條指令與后兩條指令都是簡(jiǎn)單指令,都可以同時(shí)發(fā)射到下一段例【3-9】寫(xiě)后讀數(shù)據(jù)相關(guān)(RAW)舉例i1條ADDAX,BXi2條MOVCX,AX

從上看出,i2條指令在i1條指令結(jié)果尚未寫(xiě)入AX中之前,就要讀AX中的值,應(yīng)該是先將運(yùn)算結(jié)果存入到AX中,后由i2條指令讀AX,由于兩條指令同時(shí)進(jìn)入流水線就發(fā)生寫(xiě)后讀數(shù)據(jù)相關(guān)沖突例【3-10】讀后寫(xiě)數(shù)據(jù)相關(guān)(WAR)舉例i1條MOV[EBX],AXi2條MOVAX,BX

由于兩條指令同時(shí)進(jìn)入流水線,i1條中AX尚未存入內(nèi)存,也就是AX中值尚未取出時(shí),i2條指令就要把BX中值存入AX中,發(fā)生這種數(shù)據(jù)相關(guān)稱之為讀后寫(xiě)(WAR)相關(guān),這兩條也不能同時(shí)發(fā)射到下一段例【3-12】寫(xiě)后寫(xiě)數(shù)據(jù)相關(guān)舉例i1條MULAX,BXi2條ADDAX,CX

由于i2條指令執(zhí)行時(shí)間比i1條指令執(zhí)行時(shí)間短,i2條指令提前把加法運(yùn)算結(jié)果寫(xiě)入AX中,發(fā)生了WAW數(shù)據(jù)相關(guān)

U、V兩條流水線的功能是不一樣的,U流水線能執(zhí)行指令系統(tǒng)中的所有指令,而V流水線只能執(zhí)行簡(jiǎn)單的整數(shù)指令和少數(shù)浮點(diǎn)數(shù)指令。Pentium對(duì)U、V流水線的調(diào)度策略采用按序發(fā)射與按序完成的策略。圖3-27描述按序發(fā)射按序完成的調(diào)度策略二、Pentium對(duì)U、V流水線的調(diào)度策略圖3.27按序發(fā)射按序完成的調(diào)度策略如圖中的i5、i6兩條指令,也是因?yàn)閕2指令延長(zhǎng)了一個(gè)時(shí)鐘周期,i5和i6在第4個(gè)時(shí)鐘周期處于停頓狀態(tài),在第7個(gè)時(shí)鐘周期,由于i3指令延長(zhǎng)了一個(gè)時(shí)鐘周期,所以i5、i6均停頓了一個(gè)時(shí)鐘周期,U流水線中的i5條指令在EX段能按時(shí)完成,所以在第9個(gè)時(shí)鐘周期寫(xiě)回結(jié)果,但i6條指令因EX段的延時(shí),在第10個(gè)時(shí)鐘周期才寫(xiě)回結(jié)果;反過(guò)來(lái),如果i6執(zhí)行快于i5的話,則i6要停頓等待U流水線中的i5條指令,即V流水線不得早于U流水線就結(jié)束一條指令的執(zhí)行過(guò)程

3.5Pentium的引腳信號(hào)

Pentium的主要引腳信號(hào)按其功能可分為10類,在圖3-28中,給出了各類所包含的引腳信號(hào)及其I/O方向

圖3-28Pentium的主要引腳信號(hào)(1)A20M*,用于屏蔽含A20以上的地址線(2)A1~A31,29位地址線(3)ADS*,指示地址狀態(tài)輸出有效,即總線周期開(kāi)始(4)AP,地址整體偶校驗(yàn)位輸出線,雙向(5)APCHK*,地址的偶校驗(yàn)出錯(cuò)指示信號(hào),輸出線,低電平有效一、地址線及其控制信號(hào)(1)D63~D0,64位數(shù)據(jù)線(2)BE7*~BE0*,8位字節(jié)允許信號(hào),低電平允許(3)DP7~DP0,奇偶校驗(yàn)信號(hào)(4)PCHK*,數(shù)據(jù)奇偶校驗(yàn)出錯(cuò)信號(hào),輸出(5)PEN*,數(shù)據(jù)奇偶校驗(yàn)允許信號(hào),輸入。二、數(shù)據(jù)線及其控制信號(hào)(1)CACHE*,Cache控制信號(hào),輸出,低電平有效(2)EADS*,外部地址有效信號(hào)。輸入,低電平有效(3)HIT*,Cache命中信號(hào)。輸出,低電平有效,當(dāng)其有效,表示Cache被命中(4)HITM*,Cache修改信號(hào)。輸出,低電平有效,當(dāng)其有效,表示當(dāng)前命中的Cache已被修改過(guò)(5)1NV,無(wú)效請(qǐng)求信號(hào)。若此輸入信號(hào)為高電平,使Cache區(qū)域不可再使用,這是因?yàn)?NV為高電平,使得Cache已處于無(wú)效狀態(tài)三、Cache控制信號(hào)(6)PCD,Cache禁止信號(hào)。輸出,高電平有效(7)PWT,CPU外部Cache的控制信號(hào)。PWT=1時(shí),主板上Cache使用通寫(xiě)方式,PWT=0時(shí),主板上Cache則使用回寫(xiě)法(8)FLUSH*,Cache擦除信號(hào)。輸出,低電平有效(9)KEN*,Cache允許信號(hào)。輸入,低電平有效,(10)WB/WT*,CPU內(nèi)Cache寫(xiě)選擇信號(hào)(11)AHOLD,地址保持/請(qǐng)求信號(hào)。輸入,高電平有效(1)D/C*,數(shù)據(jù)/控制信號(hào)。輸出線,為高電平時(shí),表示當(dāng)前總線周期傳輸?shù)氖菙?shù)據(jù),為低電平時(shí),指示當(dāng)前總線周期傳輸?shù)氖侵噶睿?)M/IO*,存儲(chǔ)器/輸入輸出訪問(wèn)信號(hào)。輸出線,為高電平時(shí),指示當(dāng)前總線周期訪問(wèn)存儲(chǔ)器,為低電平時(shí),則為訪問(wèn)I/O端口(3)W/R*,讀/寫(xiě)控制信號(hào)。輸出線,為高電平時(shí),表示當(dāng)前總線周期為CPU寫(xiě)存儲(chǔ)器或?qū)戄敵龆丝?,為低電平時(shí),指示為讀存儲(chǔ)器或讀輸入端口四、總線周期控制信號(hào)(4)LOCK*,總線封鎖信號(hào)。輸出,低電平有效,當(dāng)其有效時(shí),當(dāng)前總線被鎖定,使得其他主模塊不能獲得總線控制權(quán),從而確保PentiumCPU當(dāng)前對(duì)總線的控制權(quán)(5)SCYS,分割周期信號(hào)。輸出,高電平有效(6)NA*,下一個(gè)地址有效信號(hào)。輸入,低電平有效(7)BRDY*,突發(fā)就緒信號(hào)。輸入,低電平有效,當(dāng)其有效,表示外設(shè)已處于突發(fā)傳輸準(zhǔn)備好狀態(tài)(1)INTR,可屏蔽中斷請(qǐng)求輸入信號(hào)。(2)NMR,非屏蔽中斷請(qǐng)求輸入信號(hào)。(3)RESET,系統(tǒng)復(fù)位信號(hào)。輸入,高電平復(fù)位(4)CLK,系統(tǒng)時(shí)鐘信號(hào)。輸入,由主板上提供時(shí)鐘脈沖(5)INIT,初始化信號(hào)。輸入,高電平有效五、系統(tǒng)控制信號(hào)(1)BUSCHK*,總線檢查信號(hào)。輸入,低電平有效(2)IERR*,內(nèi)部奇偶出錯(cuò)或功能性冗余校驗(yàn)出錯(cuò)信號(hào)(3)FERR*,浮點(diǎn)運(yùn)算出錯(cuò)信號(hào)。輸出,低電平有效(4)FRCMC*,冗余校驗(yàn)控制信號(hào)。輸入,低電平有效當(dāng)其有效,CPU進(jìn)行冗余校驗(yàn)(5)IGNNE*,忽略浮點(diǎn)運(yùn)算錯(cuò)誤的信號(hào)。輸入,低電平有效

六、檢測(cè)與處理信號(hào)(1)HOLD,總線請(qǐng)求信號(hào)。輸入,高電平請(qǐng)求(2)HLDA,總線請(qǐng)求響應(yīng)信號(hào)。輸出,高電平有效,當(dāng)其有效,表示CPU已讓出總線控制權(quán)七、總線仲裁信號(hào)(3)BREQ,總線周期請(qǐng)求信號(hào)。輸出,高電平有效,此信號(hào)有效時(shí),表示CPU已提出了一個(gè)總線請(qǐng)求,并正在占用總線。此信號(hào)用于告示其他能控制總線的主模塊(4)BOFF*,強(qiáng)制讓出總線信號(hào)。輸入,低電平有效,CPU采樣到為低電平時(shí),立即放棄總線控制權(quán),直到變?yōu)闊o(wú)效電平時(shí),CPU才啟動(dòng)被暫停的總線周期(1)SMI*,系統(tǒng)管理模式中斷請(qǐng)求信號(hào)。使CPU進(jìn)入系統(tǒng)管理模式的中斷請(qǐng)求輸入信號(hào)(2)SMLACT*,系統(tǒng)管理模式信號(hào)。輸出,低電平有效,當(dāng)其有效,表示當(dāng)前CPU處于系統(tǒng)管理模式

八、系統(tǒng)管理模式信號(hào)(1)PM1~PM0及BP3~BP0,PM1~PM0是性能監(jiān)測(cè)信號(hào),BP3~BP0是與調(diào)試寄存器DR3~DR0中的斷點(diǎn)相匹配的而輸出到外部的信號(hào)(2)BT3~BT0,分支地址輸出信號(hào)(3)IU,指令U流水線信號(hào)。高電平有效,有效時(shí)表示此時(shí)U流水線正在完成指令的執(zhí)行過(guò)程九、跟蹤和檢查信號(hào)(4)IV,指令V流水線信號(hào)。高電平有效,有效時(shí)表示此時(shí)V流水線正在完成指令的執(zhí)行過(guò)程(5)IBT,輸出,高電平有效,有效時(shí),表示指令發(fā)生分支(6)R/S*,探針信號(hào)。輸出,此信號(hào)由高電平跳變到低電平時(shí),將會(huì)使CPU停止執(zhí)行指令而進(jìn)入空閑狀態(tài)(7)PRDY,R/S*的響應(yīng)信號(hào)。輸出,高電平有效,有效時(shí)表示CPU當(dāng)前已停止指令的執(zhí)行,可以進(jìn)入測(cè)試狀態(tài)(1)TCK,測(cè)試時(shí)鐘信號(hào)輸入端(2)TDI,串行測(cè)試數(shù)據(jù)輸入端(3)TDO,測(cè)試數(shù)據(jù)結(jié)果輸出端(4)TMS,測(cè)試方式選擇端(5)TRST*,測(cè)試復(fù)位輸入端。當(dāng)輸入低電平后,復(fù)位測(cè)試狀態(tài),即系統(tǒng)退出測(cè)試狀態(tài)十、測(cè)試信號(hào)

3.6PentiumPro~Itanium的技術(shù)概述自1993年P(guān)entium問(wèn)世之后,Intel公司相繼推出了PentiumPro(1995)PentiumⅡ(1997年)PentiumⅢ(1998年)Pentium4(2000年)等微處理器,近幾年又推出了64位的微處理器Itanium(安騰)英特爾微處理器芯片80386PentiumPentium43.6.1PentiumPro微處理器簡(jiǎn)介

PentiumPro具有如下的主要技術(shù)特點(diǎn):(1)PentiumPro內(nèi)部配置了L2Cache256KB或512KB(2)不需要額外的邏輯電路就可以支持多達(dá)4個(gè)CPU,特別有利于服務(wù)器系統(tǒng)的組成(3)CPU有36位地址線,可尋址物理地址空間64GB,虛存空間為64TB。CPU外部數(shù)據(jù)總線仍為64位(4)PentiumPro最重要的技術(shù)是采用了RISC技術(shù)(5)外型使用了長(zhǎng)方形387管腳陶瓷封裝。微處理器要插接到Socket8型插座上。PentiumPro是為服務(wù)器和工作站而設(shè)計(jì)的3.6.2PentiumⅡ微處理器簡(jiǎn)介PentiumⅡ微處理器是面向個(gè)人計(jì)算機(jī)和工作站而設(shè)計(jì)的。PⅡ微處理器所提供的整數(shù)運(yùn)算和浮點(diǎn)運(yùn)算的功能以及多媒體新技術(shù)等三方面的優(yōu)勢(shì),特別適合于三維圖形、圖像及多媒體應(yīng)用程序的執(zhí)行(1)微處理器內(nèi)部有2級(jí)高速緩存:L1Cache容量32KB,L2Cache容量512KB。PentiumⅡ采用單邊接觸的卡盒式封裝,C

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論