




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
8.1概述8.280486微處理器的邏輯結(jié)構(gòu)8.3虛擬存儲(chǔ)器的實(shí)現(xiàn)機(jī)制8.4多任務(wù)系統(tǒng)的實(shí)現(xiàn)機(jī)制8.5保護(hù)功能8.68086微處理器家族其它成員指令介紹8.7存儲(chǔ)器管理技術(shù)第8章高檔微機(jī)的某些新技術(shù)返回主目錄8.1概述第8章高檔微機(jī)的某些新技術(shù)返回1第8章高檔微機(jī)的某些新技術(shù)
8.1概述目前世界上有許多種型號(hào)的微型計(jì)算機(jī)系統(tǒng)在運(yùn)行。其中大多數(shù)微型計(jì)算機(jī)系統(tǒng)的微處理器屬于Intel公司的8086微處理器家族。各種微機(jī)系統(tǒng)的兼容性,即可以運(yùn)行同一目標(biāo)代碼的可執(zhí)行程序,且得到相同的結(jié)果,都是建立在8086微處理器家族成員具有相同的基本體系結(jié)構(gòu)基礎(chǔ)之上的。8086家族成員相同的基本體系結(jié)構(gòu)部分就是由8086微處理器和8087數(shù)學(xué)協(xié)處理器組成的體系結(jié)構(gòu)。這就是說(shuō),Intel8086家族的其它成員在體系結(jié)構(gòu)上可以有許多新發(fā)展,但必須包括8086和8087微處理器的基本體系結(jié)構(gòu)的功能,這就是兼容性的基礎(chǔ)。第8章高檔微機(jī)的某些新技術(shù)
2由微處理器8086和8087組成的最早微機(jī)系統(tǒng)是IBMPC系列機(jī)中的PC/XT機(jī)。本書(shū)前面各章的討論主要是以PC/XT為背景的,從中可以學(xué)習(xí)到計(jì)算機(jī)系統(tǒng),特別是微型計(jì)算機(jī)系統(tǒng)的基本組成和工作原理。但是,從Intel公司的8086、8087微處理器和IBMPC/XT微機(jī)系統(tǒng)問(wèn)世以來(lái)近20年時(shí)間里,與計(jì)算機(jī)相關(guān)的各個(gè)技術(shù)領(lǐng)域,集成電路技術(shù)、計(jì)算機(jī)體系結(jié)構(gòu)、系統(tǒng)軟件技術(shù)等,都經(jīng)歷了飛速的發(fā)展。就微處理器而言,Intel公司的產(chǎn)品已形成了8086微處理器家族。家族成員,除8086和8087之外,包括80186、80286、80287、80386、80387、80486、奔騰Pentium(80586)和PentiumⅡ、Ⅲ等。8086微處理器是以Intel公司的8位微處理器8080的體系結(jié)構(gòu)為基礎(chǔ)開(kāi)發(fā)出來(lái)的真正16位微處理器。由微處理器8086和8087組成的最3如前已經(jīng)討論的那樣,8086的內(nèi)部寄存器均為16位寬,其中有些寄存器還可以當(dāng)作兩個(gè)8位寄存器獨(dú)立訪問(wèn)。16位的寄存器結(jié)構(gòu)很容易構(gòu)成訪問(wèn)216=65536個(gè)地址空間的存儲(chǔ)器方案。但這樣容量的存儲(chǔ)空間太小了,是就選擇了能擴(kuò)大存儲(chǔ)空間容量又以16位尋址為基礎(chǔ)的尋址機(jī)制。8086(包括8088)的尋址空間為220B=1MB地址。為了實(shí)現(xiàn)由20位決定的1MB的地址空間能被由16位(因?yàn)榧拇嫫鳛?6位)的地址碼來(lái)訪問(wèn),整個(gè)地址空間劃分成段,每段216}=64KB地址。CPU可以在任何時(shí)候直接訪問(wèn)4個(gè)這樣的段,這4個(gè)段的地址分別由4個(gè)專用的段寄存器的內(nèi)容給出。如前已經(jīng)討論的那樣,8086的內(nèi)部寄存器均為4段寄存器是這樣指明在1MB地址空間中的地址的:段寄存器內(nèi)容乘以16(即左移4位)就是這個(gè)段的開(kāi)始地址。這樣,一個(gè)段內(nèi)的一個(gè)字節(jié)單元的地址由這個(gè)段的開(kāi)始地址和相對(duì)于開(kāi)始地址的16位偏移量?jī)刹糠纸o出。在不修改段寄存器內(nèi)容的情況下,CPU可以直接訪問(wèn)4個(gè)段的地址范圍,每段為64KB;為了訪問(wèn)1MB的全部地址空間,段寄存器的內(nèi)容必須加以改變。這樣的分段的編址和尋址體系結(jié)構(gòu)是8086微處理器家族的存儲(chǔ)器管理的核心內(nèi)容。由于8086芯片開(kāi)發(fā)時(shí),芯片封裝對(duì)引腳數(shù)量有所限制,最多只能有40個(gè)引腳,所以數(shù)據(jù)總線和地址總線分時(shí)復(fù)用共用的芯片引腳。這樣雖然節(jié)省了芯片的引腳,但使邏輯變得復(fù)雜,速度也降低了。段寄存器是這樣指明在1MB地址空間中的58086微處理器開(kāi)始開(kāi)發(fā)時(shí)就準(zhǔn)備與輔助處理器協(xié)同工作,以達(dá)到在某些特殊的應(yīng)用時(shí)有更好的性能。最早就考慮到同時(shí)開(kāi)發(fā)專用于數(shù)學(xué)計(jì)算的協(xié)處理器8087,把它加到8086的微機(jī)系統(tǒng)中,使浮點(diǎn)運(yùn)算得到了專用硬件的支持。當(dāng)時(shí)把整數(shù)運(yùn)算和浮點(diǎn)運(yùn)算分配在兩個(gè)芯片里完成,這是由于早期集成電路技術(shù)和經(jīng)濟(jì)原因造成的,直到家族成員80486問(wèn)世才結(jié)束了兩個(gè)芯片分立的狀態(tài),集成到了一個(gè)芯片里。其它家族成員組成的微機(jī)系統(tǒng)中,也有高效率高精度的浮點(diǎn)運(yùn)算能力,這是依靠每個(gè)系統(tǒng)機(jī)的主板上都有一個(gè)插座可以插入相應(yīng)協(xié)處理器而實(shí)現(xiàn)的。Intel公司的微處理器家族的最早成員是8086和8088。8086微處理器開(kāi)始開(kāi)發(fā)時(shí)就準(zhǔn)備與輔助處理6隨著在一個(gè)芯片內(nèi)集成更多電路并具有更多的功能成為可能,Intel8086體系結(jié)構(gòu)沿著兩個(gè)方向發(fā)展:一個(gè)方向發(fā)展的結(jié)果是開(kāi)發(fā)出80186(和80188);另一方向發(fā)展的結(jié)果是開(kāi)發(fā)出80286和后來(lái)的80386、80486等等。開(kāi)發(fā)80186、80188的指導(dǎo)思想是在一個(gè)微處理器芯片里同時(shí)集成更多的把處理器組合成一個(gè)計(jì)算機(jī)系統(tǒng)所必需的輔助電路,成為一個(gè)單片計(jì)算機(jī),并且增加某些指令和改善指令的功能。80286及以后的微處理器是沿著另一個(gè)指導(dǎo)思想開(kāi)發(fā)出來(lái)的,其著眼點(diǎn)是擴(kuò)大CPU(中央處理單元)本身的功能,從而使體系結(jié)構(gòu)發(fā)生了很大變化,使整機(jī)的功能大大增強(qiáng)。開(kāi)發(fā)80286時(shí)就提出了幾個(gè)設(shè)計(jì)目標(biāo),解決8086存在的問(wèn)題。首先,1MB的存儲(chǔ)器地址空間在很多應(yīng)用中顯得太小了(當(dāng)然DOS的早期版本也是限制存儲(chǔ)器地址空間的因素)應(yīng)該擴(kuò)大。隨著在一個(gè)芯片內(nèi)集成更多電路并具有更多的功能7其次,8086的硬件不適合在系統(tǒng)中同時(shí)運(yùn)行多道程序、執(zhí)行多個(gè)任務(wù)。但是,由于技術(shù)的發(fā)展,微處理器的硬件能像小型計(jì)算機(jī)、甚至大型計(jì)算機(jī)那樣,用于多任務(wù)也是可能的。所以要求新開(kāi)發(fā)的8086后繼者能適應(yīng)多任務(wù)的要求。第三,由于已經(jīng)存在相當(dāng)數(shù)量的軟件在8086系統(tǒng)機(jī)上運(yùn)行,為了不遺棄這些軟件資源,要求開(kāi)發(fā)的后繼者與8086兼容。8086的分段尋址結(jié)構(gòu)不能直接擴(kuò)大存儲(chǔ)器地址空間,也不適應(yīng)多任務(wù)的要求。為了達(dá)到上述設(shè)計(jì)目標(biāo),80286被設(shè)計(jì)成能在兩種不同的工作模式下工作的混合型微處理器。這兩種模式是:實(shí)地址模式和保護(hù)的虛地址模式,簡(jiǎn)稱保護(hù)模式。其次,8086的硬件不適合在系統(tǒng)中同時(shí)運(yùn)行多880286工作在實(shí)模式時(shí),對(duì)于程序員來(lái)說(shuō),只相當(dāng)于工作速度快的8086,寄存器結(jié)構(gòu)和尋址方式與8086相同。不同的是20位地址總線和16位數(shù)據(jù)總線不再分時(shí)復(fù)用芯片的引腳,并且增加了某些新指令。但原來(lái)在8086上運(yùn)行的程序都可在80286的系統(tǒng)上運(yùn)行。速度的提高有幾個(gè)因素:取指令特別是指令譯碼操作與前面指令執(zhí)行的操作有相當(dāng)程度的并行是因素之一;許多指令的執(zhí)行達(dá)到最佳是另一因素;當(dāng)然,地址總線與數(shù)據(jù)總線在芯片引腳上分開(kāi),使得地址碼和數(shù)據(jù)碼可以同時(shí)出現(xiàn),也對(duì)提高速度有益。80286的另一工作模式,即保護(hù)模式提供了許多新的功能。與實(shí)模式相比,最明顯的差別是存儲(chǔ)器空間擴(kuò)大到16MB,對(duì)應(yīng)于24位地址總線。從CPU內(nèi)部來(lái)看,這么大的存儲(chǔ)器空間顯然仍由段寄存器來(lái)控制,但段寄存器的作用已經(jīng)改變。80286工作在實(shí)模式時(shí),對(duì)于程序員來(lái)說(shuō),9段寄存器的內(nèi)容不再是段開(kāi)始地址的指針,而是用作由“虛擬段”組成的表的指針。80286CPU內(nèi)還包括很多硬件邏輯支持保護(hù)功能和多任務(wù)功能。虛擬的編址尋址機(jī)制、支持保護(hù)功能機(jī)制和多任務(wù)功能機(jī)制,是80286與8086的主要差別,也是其先進(jìn)之處。但是,8086的分段尋址體系結(jié)構(gòu)中,段內(nèi)用16位偏移量編址,在80286中保持不變。與80286配合使用的數(shù)學(xué)協(xié)處理器是80287,它基本與8087相同,但適應(yīng)80286的兩種工作模式。由于80287與存儲(chǔ)器之間交換數(shù)據(jù)時(shí)需要80286來(lái)控制,使得80286效率稍有降低。Intel公司8086微處理器家族成員中,第一個(gè)屬于真正的32位微處理器,是繼80286之后開(kāi)發(fā)的80386。微處理器32位意味著數(shù)據(jù)總線和內(nèi)部寄存器都是32位結(jié)構(gòu)。段寄存器的內(nèi)容不再是段開(kāi)始地址的指針,而是10從原理上,8086(和80286)中原始的分段編址方案,以16位碼對(duì)段內(nèi)偏移編址,在80386中已經(jīng)沒(méi)有必要。因80386中的32位寄存器自然能形成32位偏移地址,而32位地址直接編址的空間為2{32}B=4GB。但是,與8086家族早期成員8086和80286的兼密性是必須保證的。按照這種指導(dǎo)思想開(kāi)發(fā)出來(lái)的80386有3種工作模式:實(shí)模式。復(fù)位后自動(dòng)進(jìn)入這一模式,其工作模式與8086相同,地址總線仍為20位,數(shù)據(jù)總線為32位不與地址總線分時(shí)復(fù)用,內(nèi)部寄存器主要作為16位使用,也可以按32位使用。保護(hù)模式又分兩種:一種為286模式,即與80286的保護(hù)模式相同,尤其指操作數(shù)和段內(nèi)偏移地址保持為16位;另一種是386的保護(hù)模式,操作數(shù)和段內(nèi)的偏移地址都是32位,地址總線也是32位,物理地址空間為232B=4GB。從原理上,8086(和80286)中原始的分段11對(duì)于80386,在保護(hù)模式下的分段尋址體系,與操作系統(tǒng)相配合可以組成虛擬存儲(chǔ)器系統(tǒng),而且虛擬地址(即邏輯地址——編程使用的地址)空間遠(yuǎn)遠(yuǎn)大于物理空間,一個(gè)任務(wù)的最大虛擬空間可達(dá)246=64TB(1TB=1024GB)。與80286相比,在實(shí)現(xiàn)虛擬存儲(chǔ)器系統(tǒng)方面,80386的另一進(jìn)步是包括支持分頁(yè)功能的硬件。分頁(yè)功能使組成的虛擬存儲(chǔ)器系統(tǒng)更完善。與80386相配合的數(shù)學(xué)協(xié)處理器為80387。從程序設(shè)計(jì)的角度看,它與8087、80287相似,但速度快得多且增加一些新指令。對(duì)于80386,在保護(hù)模式下的分段尋址體系,1280486微處理器可以看作是速度更快的80386。這就是說(shuō),從邏輯功能上看它的工作模式與80386相同,速度更快的原因之一是數(shù)學(xué)協(xié)處理器已經(jīng)集成于80486芯片內(nèi)部,所以沒(méi)有“80487”。速度更快的其它重要原因是CPU邏輯設(shè)計(jì)時(shí)采用了許多RISC(ReducedInstructionSetComputer)技術(shù),其中包括流水線技術(shù)和CPU片內(nèi)集成高速緩沖存儲(chǔ)器(Cache,80486內(nèi)有8KCache)。8086微處理器家族中,80486的后繼成員為80586。由于部分廠商擔(dān)心80X86的品牌會(huì)為Intel公司一家所獨(dú)有,而逼得Intel公司將80586改名為Pentium,譯為“奔騰”。Pentium與8086家族的其它成員完全兼容,這是Intel公司推出新微處理器的首要特點(diǎn)。與80386、80486相比較,除了64位數(shù)據(jù)線寬度之外,Pentium的主要特點(diǎn)是速度快。這是由于采用了以下新技術(shù):80486微處理器可以看作是速度更快的813(1)采用全新設(shè)計(jì)的增強(qiáng)型浮點(diǎn)運(yùn)算器,浮點(diǎn)運(yùn)算速度比80486DX要快3至5倍。(2)利用超標(biāo)量流水線(SuperScalerPipeline)結(jié)構(gòu)理論,組成兩條流水線:U指令流水線和V指令流水線。在最佳狀態(tài)下,Pentium可在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行兩條指令。而80486只有一條指令流水線,最佳狀態(tài)只能一個(gè)時(shí)鐘周期執(zhí)行完一條指令。(3)采用雙重分離式高速緩沖存儲(chǔ)器(DualOnBoardCaches),把指令高速緩存和數(shù)據(jù)高速緩存分離,各自擁有8KB的高速緩存,使其同時(shí)工作,減少等待時(shí)間和數(shù)據(jù)搬移的次數(shù)。(4)采用了轉(zhuǎn)移目的緩沖器(BranchTargetBuffer)預(yù)測(cè)轉(zhuǎn)移指令。在指令流水線技術(shù)中,重要的問(wèn)題是如何處理轉(zhuǎn)移指令。(1)采用全新設(shè)計(jì)的增強(qiáng)型浮點(diǎn)運(yùn)算器,浮14假設(shè)在80486的指令流水線中,如果一條指令已經(jīng)執(zhí)行到第一階段(解碼階段),發(fā)現(xiàn)這是一條轉(zhuǎn)移指令,但此時(shí)相鄰的下一條指令已進(jìn)入取指令階段,那么這條指令必須取消而更改到轉(zhuǎn)移的目的指令。這樣的過(guò)程會(huì)使整個(gè)流水線混亂而停頓。Pentium中采用轉(zhuǎn)移目的緩沖器,在轉(zhuǎn)移指令進(jìn)入流水線之前,預(yù)先安排指令的順序,不致使流水線的運(yùn)行混亂或停頓。在Pentium之后,Intel公司又推出了高能奔騰處理器PentiumⅡ。它的數(shù)據(jù)總線和寄存器寬度與Pentium一樣,分別是64位和32位。地址總線寬度又增寬了4位,成為36位,物理地址空間也增大了16倍為64GB。它還采用了一些新技術(shù),這里不介紹了。假設(shè)在80486的指令流水線中,如果一15以上我們介紹了Intel公司推出的8086微處理器家族以及后續(xù)各成員的基本情況。本書(shū)作為微型計(jì)算機(jī)原理與應(yīng)用課的教材,沒(méi)必要也不應(yīng)該對(duì)80286及以后的微處理器及系統(tǒng)逐個(gè)詳細(xì)討論。我們把這些微處理器及其組成的系統(tǒng)的幾個(gè)先進(jìn)的方面,著眼于其邏輯功能,進(jìn)行綜合后在本章討論。這些先進(jìn)方面是:以80486為代表的邏輯結(jié)構(gòu)、虛擬存儲(chǔ)器的實(shí)現(xiàn)機(jī)制、多任務(wù)系統(tǒng)的實(shí)現(xiàn)機(jī)制和保護(hù)功能的實(shí)現(xiàn)機(jī)制。在介紹了一些新指令的功能之后,我們還介紹了內(nèi)存管理技術(shù),目的在于理解系統(tǒng)設(shè)置時(shí)經(jīng)常遇到的關(guān)于擴(kuò)充內(nèi)存和擴(kuò)展內(nèi)存的概念。以上我們介紹了Intel公司推出的8086168.280486微處理器的邏輯結(jié)構(gòu)
微處理器的邏輯結(jié)構(gòu)是微處理器功能和性能的基礎(chǔ)。在計(jì)算機(jī)系統(tǒng)中,硬件和軟件具有互相支持關(guān)系。有些功能既可以通過(guò)軟件來(lái)完成,又可以通過(guò)硬件來(lái)完成。這就存在一個(gè)問(wèn)題,在系統(tǒng)總的功能目標(biāo)下如何合理地把功能分配給硬件和軟件,使它們的互相支持達(dá)到最佳程度。80286及以后的微處理器與8086相比,最基本的特點(diǎn)是支持多任務(wù)。為了支持多任務(wù)就必須有大的存儲(chǔ)器空間,必須支持虛擬存儲(chǔ)器系統(tǒng);為了支持多任務(wù)就必須有保護(hù)功能。多任務(wù)要求操作系統(tǒng)是多任務(wù)的操作系統(tǒng)。同時(shí),也就要求微處理器以特殊的硬件邏輯支持多任務(wù)操作系統(tǒng)。本節(jié)以80486為代表,介紹其邏輯結(jié)構(gòu)。以后各節(jié),實(shí)際上是對(duì)邏輯結(jié)構(gòu)的進(jìn)一步分析,看看它們是如何支持多任務(wù)的。8.280486微處理器的邏輯結(jié)構(gòu)
17
8.2.180486的寄存器組織要理解微處理器的工作原理,首先要了解微處理器內(nèi)的寄存器功能。80486內(nèi)寄存器可分為以下幾組?;倔w系結(jié)構(gòu)寄存器組:包括通用寄存器、指令指針、標(biāo)志寄存器和段寄存器??梢钥闯?,8086中也有這些寄存器,它們是任何微處理器不可缺少的。還將看到80486中的這些寄存器與8086中的還是有些不同。系統(tǒng)級(jí)寄存器組:包括控制寄存器和系統(tǒng)地址寄存器。這些寄存器是實(shí)現(xiàn)保護(hù)模式功能的基礎(chǔ),控制著新的存儲(chǔ)器管理方式、多任務(wù)切換等功能的實(shí)現(xiàn)。8.2.180486的寄存器組織18浮點(diǎn)寄存器組:包括數(shù)據(jù)寄存器、標(biāo)志字寄存器、狀態(tài)字寄存器、指令和數(shù)據(jù)指針、控制字寄存器。80486微處理器內(nèi)包括數(shù)學(xué)計(jì)算協(xié)處理器(相當(dāng)于80387),這組寄存器用于實(shí)現(xiàn)協(xié)處理器功能。調(diào)試和測(cè)試寄存器:這些寄存器用于測(cè)試芯片邏輯、高速緩沖存儲(chǔ)器及頁(yè)面翻譯緩存,和用于調(diào)試微碼執(zhí)行、數(shù)據(jù)訪問(wèn)的斷點(diǎn)自陷。浮點(diǎn)寄存器組:包括數(shù)據(jù)寄存器、標(biāo)志字寄存器19圖8.1給出了80486CPU內(nèi)的屬于基本體系結(jié)構(gòu)的寄存器。它和8086的寄存器相比較有以下差別:(1)8個(gè)通用寄存器的位數(shù)擴(kuò)展為32位。前4個(gè)寄存器中的每一個(gè)在編程時(shí)可按位數(shù)不同分離為4個(gè)寄存器。以第1個(gè)為例,寄存器AL是指32位中的位0~位7,寄存器AH是指32位中的位8~位15,寄存器AX是指32位中的位0~位15,而寄存器EAX則指32位的全部。與此相似,SI、DI、BP和SP是指32位的低16位部分,分別擴(kuò)展成的ESI、EDI、EBP和ESP為32位的全部。(2)指令指針EIP為32位寄存器,存放下一條要執(zhí)行指令的地址的偏移值,這個(gè)偏移值總是相對(duì)于代碼段的基地址值而言的。EIP的低16位稱為IP,用于偏移值為16位的情況。圖8.1給出了80486CPU內(nèi)的屬于20微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件21(3)標(biāo)志寄存器也從8086的標(biāo)志寄存器(FLAGS)16位擴(kuò)展為32位,稱為EFLAGS。其中包括CF、PF、AF、ZF、SF、TF、IF、DF、OF狀態(tài)標(biāo)志和控制標(biāo)志位。此外,還定義了一些新的狀態(tài)標(biāo)志和控制標(biāo)志,是高檔微處理器特有的,在以后的有關(guān)討論中介紹。(4)段寄存器增加為6個(gè),除原來(lái)的CS、DS、ES和SS外,增加了FS和GS段寄存器也是用于定義數(shù)據(jù)段。它們都是16位。段寄存器在CPU處于保護(hù)模式時(shí)寄存的內(nèi)容稱為選擇符,所以有時(shí)也稱段寄存器為選擇器。選擇符的值不再是段地址的基值,而是獲得關(guān)于段地址基值和段的其它信息的指針。這就是說(shuō),沿著選擇符的指引可以從存儲(chǔ)器中取出8個(gè)字節(jié)的數(shù)據(jù),其中包括段的基地址和段的長(zhǎng)度等有關(guān)信息。(3)標(biāo)志寄存器也從8086的標(biāo)志寄22在實(shí)模式下,與8086相同,段的最大長(zhǎng)度為64KB。在保護(hù)模式下,段的最大長(zhǎng)度可達(dá)整個(gè)機(jī)器的物理地址空間4GB。顯然,段寄存器仍然是存儲(chǔ)器劃分為段和按段訪問(wèn)存儲(chǔ)器的硬件基礎(chǔ)。(5)段描述符高速緩沖寄存器。如圖8.2所示,段描述符高速緩沖寄存器可以看作是段寄存器的延伸,每個(gè)段寄存器“配”有一個(gè)這樣的緩沖寄存器64位,(8個(gè)字節(jié))。值得說(shuō)明的是這組寄存器是“隱蔽”的,沒(méi)有指令能直接訪問(wèn)它們。那么,它們的內(nèi)容是如何裝入和更新的呢?前面已經(jīng)說(shuō)過(guò),沿著段寄存器內(nèi)的選擇符的指引,可以從存儲(chǔ)器中取出8個(gè)字節(jié)的數(shù)據(jù),其中包括段的基地址和段的長(zhǎng)度等信息。在實(shí)模式下,與8086相同,段的最大長(zhǎng)23微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件24這8個(gè)字節(jié)一組的數(shù)據(jù)稱為一個(gè)段的描述符(Descriptor)。在存儲(chǔ)器里,若干個(gè)段的描述符匯集在一起就可以組成一個(gè)描述符表,用匯編語(yǔ)言的數(shù)據(jù)定義偽指令很容易建立這樣的表。表中的每一項(xiàng)8個(gè)字節(jié),每一項(xiàng)的開(kāi)始地址對(duì)應(yīng)一個(gè)選擇符。請(qǐng)?zhí)貏e注意,當(dāng)把一個(gè)選擇符用指令或其它操作裝入某個(gè)段寄存器(如DS)時(shí),這個(gè)選擇符所對(duì)應(yīng)的在描述符表里的一個(gè)描述符8個(gè)字節(jié)就會(huì)自動(dòng)地(硬件邏輯有此功能)被裝入這個(gè)段寄存器對(duì)應(yīng)的段描述符高速緩沖寄存器。硬件邏輯中有描述符高速緩沖寄存器的優(yōu)點(diǎn)是使訪問(wèn)存儲(chǔ)器的速度更快。這8個(gè)字節(jié)一組的數(shù)據(jù)稱為一個(gè)段的描述符25
2.系統(tǒng)級(jí)寄存器圖8.3給出了系統(tǒng)級(jí)寄存器的基本結(jié)構(gòu)。這組寄存器包括3個(gè)控制寄存器和4個(gè)段基址寄存器。1)控制寄存器3個(gè)控制寄存器分別為CR0、CR2和CR3(CR1留給后代CPU使用),這是8086中所沒(méi)有的。CR2、CR3的控制功能以后介紹,這里只介紹CR0的功能。CR0的低16位又稱機(jī)器狀態(tài)字,可以用指令裝入內(nèi)容。其中控制位的功能還可以分為5類:(1)對(duì)CPU工作方式進(jìn)行控制的有兩位:PE(位0)為保護(hù)模式允許位,該位置1,使CPU轉(zhuǎn)移到保護(hù)模式;該位為0時(shí),為實(shí)模式。2.系統(tǒng)級(jí)寄存器26微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件27PG(位31)為分頁(yè)功能允許位。分頁(yè)是在保護(hù)模式下對(duì)存儲(chǔ)器管理的一種方式(以后詳細(xì)說(shuō)明),可以利用這種方式,也可以不用這種方式。該位置1,表示利用這種方式,使CPU的有關(guān)邏輯按分頁(yè)方式連接。(2)對(duì)CPU內(nèi)高速緩沖存儲(chǔ)器Cache操作方式進(jìn)行控制的有兩位:CD(位30)為高速緩存禁止(即不允許)位。該位置1,表示片內(nèi)高速緩沖的功能處于不允許狀態(tài),不把主存內(nèi)容拷貝到高速緩存器。只有該位復(fù)位為0,高速緩存功能才處于允許狀NW(位29)為高速緩存通寫(xiě)方式禁止(即不允許)位。PG(位31)為分頁(yè)功能允許位。分頁(yè)是在保28為了保持高速緩存的內(nèi)容與它對(duì)應(yīng)的主存儲(chǔ)器部分內(nèi)容相同,在改變了高速緩存中的數(shù)據(jù)后,有兩種方法修改主存中的數(shù)據(jù)。一種方法為寫(xiě)回(writeback)法,另一種稱為通寫(xiě)(writethrough)法。NW位置1,意味著不用通寫(xiě)法;NW位為0,用通寫(xiě)法。(3)與協(xié)處理器或浮點(diǎn)運(yùn)算部件有關(guān)的控制位有TS、EM、MP和NE,這里不介紹。(4)對(duì)界屏蔽位AM。對(duì)界是指訪問(wèn)存儲(chǔ)器時(shí)數(shù)據(jù)類型與在存儲(chǔ)器內(nèi)起始地址的關(guān)系:如果訪問(wèn)存儲(chǔ)器中字型數(shù)據(jù)時(shí)其起始地址為奇地址,或訪問(wèn)雙字型數(shù)據(jù)時(shí),起始地址不是4的倍數(shù)的地址,或者訪問(wèn)4字型數(shù)據(jù)時(shí)起始地址不是8的倍數(shù)的地址,都是未對(duì)準(zhǔn)界限,或簡(jiǎn)稱未對(duì)界。為了保持高速緩存的內(nèi)容與它對(duì)應(yīng)的主存儲(chǔ)器部分29在前面介紹的標(biāo)志寄存器EFLAGS中,有一個(gè)控制標(biāo)志位AC(位18),稱為對(duì)界檢查標(biāo)志。該位設(shè)置為1,意味著要進(jìn)行對(duì)界檢查,并且當(dāng)檢查出未對(duì)界發(fā)生時(shí),CPU將產(chǎn)生一類型號(hào)為17的異常中斷;AC位0時(shí),意味著訪問(wèn)內(nèi)存時(shí)不進(jìn)行對(duì)界檢查。CR0中的AM位對(duì)FLAGS中的AC位進(jìn)行控制:如果AM位置1,使AC位具有所指定的控制作用;AM為0,表示AC位不再起控制作用,也就不會(huì)有類型號(hào)為17的異常中斷產(chǎn)生。(5)寫(xiě)保護(hù)控制位WP。在對(duì)存儲(chǔ)器管理采用分頁(yè)方式時(shí),WP對(duì)只讀頁(yè)面提供保護(hù)控制功能。如果設(shè)定WP位為1,在管理程序中出現(xiàn)了對(duì)只讀頁(yè)面寫(xiě)操作時(shí)將自動(dòng)產(chǎn)生故障中斷(類型號(hào)14);當(dāng)WP為0時(shí),允許有條件地對(duì)只讀頁(yè)面寫(xiě)操作。在前面介紹的標(biāo)志寄存器EFLAGS中,有302)系統(tǒng)地址寄存器為了實(shí)現(xiàn)保護(hù)模式的功能,系統(tǒng)軟件(操作系統(tǒng))需要在存儲(chǔ)器內(nèi)定義4種表或段。它們是:全局描述符表GDT,只有一個(gè)。中斷描述符表IDT,只有一個(gè)。局部描述符表LDT,每個(gè)任務(wù)一個(gè)。任務(wù)狀態(tài)段TSS,每個(gè)任務(wù)一個(gè)。在CPU芯片內(nèi),支持這種機(jī)制的4個(gè)寄存器分別為全局描述符表寄存器GDTR、中斷描述符表寄存器IDTR、局部描述符表寄存器LDTR和任務(wù)狀態(tài)段寄存器TR,如圖8.3所示。2)系統(tǒng)地址寄存器31其中GDTR和IDTR有相同的結(jié)構(gòu),分為兩個(gè)字段:32位線性基地址部分,直接指明GDT表段和IDT表段在存儲(chǔ)器的開(kāi)始地址,和16位表段的長(zhǎng)度。LDTR和TR也是唯一的,但LDT和TSS卻有多個(gè)。從另一意義上說(shuō),每個(gè)LDT和TSS都是由軟件定義的段,也有自己的選擇符和描述符。這就要求從概念上把一個(gè)LDT本身的描述符(描述LDT)和它(作為存儲(chǔ)器中的表)內(nèi)部包含的描述符區(qū)別開(kāi)來(lái)。所以LDTR和TR的結(jié)構(gòu)與段寄存器(CS、DS等)相似,可以由指令訪問(wèn)的只有16位,即選擇器部分,用以寄存正在執(zhí)行任務(wù)的LDT描述符(局部描述符表的描述符)的16位選擇符和正在執(zhí)行任務(wù)的TSS描述符(任務(wù)狀態(tài)段的描述符)的16位選擇符。其中GDTR和IDTR有相同的結(jié)構(gòu),分為兩個(gè)字32LDTR和TR也有相應(yīng)的描述符高速緩沖寄存器部分。當(dāng)某個(gè)LDT(或TSS)的選擇符裝入LDTR(或TR)的選擇器部分時(shí),將自動(dòng)地把這個(gè)LDT(或TSS)的描述符部分裝入相應(yīng)的描述符高速緩沖寄存器部分。關(guān)于浮點(diǎn)寄存器組和測(cè)試調(diào)試寄存器組本書(shū)不討論。LDTR和TR也有相應(yīng)的描述符高速緩沖寄33
8.2.2RISC介紹在80486CPU芯片里包含有相當(dāng)于80387的浮點(diǎn)協(xié)處理器,包含有8K字節(jié)的數(shù)據(jù)和指令混合型的高速緩存器(Cache),以及采用了某些RISC技術(shù),這是80486速度提高的最重要的三項(xiàng)技術(shù)措施。關(guān)于協(xié)處理器和Cache的概念已經(jīng)介紹過(guò)。這里介紹RISC技術(shù)的基本原理。RISC是ReducedInstructionSetComputer(精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī))的縮寫(xiě)。CISC是ComplexInstructionSetComputer(復(fù)雜指令系統(tǒng)計(jì)算機(jī))的縮寫(xiě)。CISC和RISC是促進(jìn)處理器體系結(jié)構(gòu)發(fā)展的兩種不同的理論或指導(dǎo)思想。CISC理論比RISC理論的歷史要悠久。80286以前的微處理器是按CISC理論設(shè)計(jì)的。CISC理論的要點(diǎn)如下:8.2.2RISC介紹34(1)增強(qiáng)單條指令的功能,使指令系統(tǒng)中不僅有許多常用指令,還包括功能很強(qiáng)的特殊指令。微處理器功能和性能的提高,依賴于增加指令系統(tǒng)中指令的條數(shù)和指令的功能。這樣做的結(jié)果雖然可以縮減程序的長(zhǎng)度以提高效率,但對(duì)于功能復(fù)雜指令的執(zhí)行卻加重了微處理器的負(fù)擔(dān),倒成了降低效率的因素。(2)具有種類多且復(fù)雜的存儲(chǔ)器尋址方式。其結(jié)果一方面增加了尋址功能,但另一方面使操作數(shù)有效地址的計(jì)算變得復(fù)雜。(1)增強(qiáng)單條指令的功能,使指令系統(tǒng)中不僅35(3)采用微程序結(jié)構(gòu)。微程序控制的概念可簡(jiǎn)要說(shuō)明如下:在CPU中,任何一條指令的功能都分若干步完成,每一步又包括若干個(gè)基本操作,這些基本操作稱為微操作。在采用微程序控制的CPU結(jié)構(gòu)中,把同時(shí)(即同一步)發(fā)出的控制信號(hào)所執(zhí)行的一組微操作稱為微指令。也就是說(shuō),把一條指令分解成若干條微指令,按順序執(zhí)行這些微指令,就可以實(shí)現(xiàn)這條指令的功能。計(jì)算機(jī)的程序由指令序列構(gòu)成,而每條指令的功能又由微指令序列解釋完成,這些微指令序列的集合稱為微程序。微程序控制器的組成和操作過(guò)程可用圖8.4來(lái)說(shuō)明。圖8.4表示微程序控制器由指令寄存器IR、操作譯碼器、控制存儲(chǔ)器和微指令寄存器組成。(3)采用微程序結(jié)構(gòu)。微程序控制的概念可36微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件37從存儲(chǔ)器取來(lái)的指令碼寄存于指令寄存器IR中。操作譯碼器只對(duì)指令的操作碼部分譯碼。由于控制存儲(chǔ)器中每個(gè)地址存儲(chǔ)著一條微指令的控制信號(hào)字段和下址字段(即相鄰下一條微指令在控制存儲(chǔ)器的地址),所以操作譯碼器只需譯出指令的首條微指令在控制存儲(chǔ)器的地址,這樣便可相繼取出一條指令的所有微指令到微指令寄存器執(zhí)行。微指令的控制字段的每一位都是完成特定操作控制信號(hào)的控制位。該位設(shè)置為1,將控制對(duì)應(yīng)信號(hào)產(chǎn)生。操作譯碼器和控制存儲(chǔ)器都用只讀存儲(chǔ)器實(shí)現(xiàn)。從存儲(chǔ)器取來(lái)的指令碼寄存于指令寄存器IR中。3880386及以后的微處理器的設(shè)計(jì)逐漸接受了RISC的指導(dǎo)思想。RISC理論的要點(diǎn)如下:(1)減少指令系統(tǒng)中的指令條數(shù),只使用應(yīng)用頻率高的簡(jiǎn)單指令;指令長(zhǎng)度固定,指令格式種類少,尋址方式種類少。這樣可以簡(jiǎn)化指令的存取,縮短指令碼譯碼及執(zhí)行的時(shí)間。顯然這是針對(duì)CISC的缺點(diǎn)想出的辦法。當(dāng)然,這樣設(shè)計(jì)指令系統(tǒng)必將使程序包含的指令條數(shù)增多。這個(gè)問(wèn)題由下面所說(shuō)的技術(shù)克服。(2)采用指令流水線技術(shù),擴(kuò)大并行處理范圍。在CISC技術(shù)中,指令的執(zhí)行是逐條相繼完成的,一條指令所包括的所有步(即所有微指令序列)執(zhí)行之后才能取下條指令并開(kāi)始執(zhí)行。RISC技術(shù)雖然也把一條指令分成若干步,例如分為取指令(F1)、譯碼(D)、取操作數(shù)(FO)、執(zhí)行(E)和寫(xiě)結(jié)果(W)5步。80386及以后的微處理器的設(shè)計(jì)逐漸接受了39但由于采用并行處理,指令的執(zhí)行時(shí)間就可如圖8.5所示那樣,一條指令的各步操作在不同的部件中完成,同一時(shí)間(如同一時(shí)鐘)各部件執(zhí)行著不同指令的操作,平均下來(lái),一條指令占用的時(shí)間就大大縮短了。80486CPU采用了指令流水線技術(shù),在最佳狀態(tài)下,一條指令平均一個(gè)時(shí)鐘周期完成。但由于采用并行處理,指令的執(zhí)行時(shí)間就可如圖40微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件41(3)增加CPU內(nèi)通用寄存器的數(shù)量,這樣就可以實(shí)現(xiàn),除從存儲(chǔ)器取數(shù)和向存儲(chǔ)器存數(shù)兩條指令訪問(wèn)存儲(chǔ)器之外,其余指令的操作都只在寄存器之間進(jìn)行,大部分指令都可在一個(gè)機(jī)器周期內(nèi)完成。(4)以硬布線控制邏輯為主,不用或少用如CISC中介紹的微程序控制所需的用只讀存儲(chǔ)器方式實(shí)現(xiàn)的譯碼器和控制存儲(chǔ)器。以上是RISC技術(shù)的要點(diǎn),80386及以后的CPU已利用了其中的某些技術(shù),從而大大提高了運(yùn)行速度。(3)增加CPU內(nèi)通用寄存器的數(shù)量,這樣就428.3虛擬存儲(chǔ)器的實(shí)現(xiàn)機(jī)制虛擬存儲(chǔ)器是通過(guò)管理把主存儲(chǔ)器(常稱為內(nèi)存)和輔助存儲(chǔ)器(常稱為外存,例如磁盤(pán))有機(jī)的結(jié)合起來(lái),使得程序員可以按比主存儲(chǔ)器容量大得多的空間編制程序。這時(shí),把程序員編程可用的空間稱為虛擬空間,把主存儲(chǔ)器的實(shí)際空間稱為物理空間。虛擬存儲(chǔ)器的實(shí)現(xiàn),允許同一程序的一部分在主存儲(chǔ)器中,其它部分在輔助存儲(chǔ)器里。運(yùn)行時(shí),可能頻繁地進(jìn)行著輔存部分裝入主存,主存部分傳至輔存。這就要有一套技術(shù)進(jìn)行管理。根據(jù)主存和輔存之間傳送信息的基本單位不同,可以把虛擬存儲(chǔ)器的管理分為分段管理、分頁(yè)管理和分段分頁(yè)相結(jié)合三種管理方式。8.3虛擬存儲(chǔ)器的實(shí)現(xiàn)機(jī)制虛擬存儲(chǔ)器43虛擬存儲(chǔ)器的管理是依靠軟件和硬件互相支持共同實(shí)現(xiàn)的。如果在CPU內(nèi)有專門適用于虛擬存儲(chǔ)器管理的硬件,就可減輕軟件的負(fù)擔(dān),使存儲(chǔ)器的訪問(wèn)速度大大加快。這是改善整機(jī)系統(tǒng)性能的重要因素。80486CPU有存儲(chǔ)器的分段管理模塊和分頁(yè)管理模塊。在保護(hù)模式下,可以采用分段管理方式,也可采用分段分頁(yè)結(jié)合方式實(shí)現(xiàn)虛擬存儲(chǔ)器的管理。所以在保護(hù)模式下,虛擬存儲(chǔ)空間最大可達(dá)246B(64TB),是物理存儲(chǔ)空間232B(4GB)的214倍。虛擬存儲(chǔ)器的管理是依靠軟件和硬件互相支持共44
8.3.1虛擬地址、物理地址和線性地址對(duì)于80486CPU的保護(hù)模式,有虛擬地址、線性地址和物理地址三種存儲(chǔ)器地址空間。虛擬地址(即邏輯地址)和物理地址的概念在第3章已經(jīng)介紹過(guò)了。在實(shí)模式下,和8086CPU相同,一個(gè)虛擬地址,即邏輯地址,是用它的段地址和段內(nèi)偏移地址兩部分表示的。由于任何由程序訪問(wèn)內(nèi)存的操作,總是要指明段地址和段內(nèi)偏移地址,所以也可以這樣理解虛擬地址:虛擬地址是程序訪問(wèn)存儲(chǔ)器時(shí)由程序指明的地址。物理存儲(chǔ)器是CPU可以訪問(wèn)的存儲(chǔ)器。物理存儲(chǔ)器空間的大小由CPU具有的地址總線的位數(shù)決定。8.3.1虛擬地址、物理地址和線性地址45對(duì)于8086CPU,地址總線為20位,其物理存儲(chǔ)空間為220B,即1MB地址。由8086CPU內(nèi)部邏輯決定的由虛擬地址變換成物理地址的規(guī)則是,16位段地址(在段寄存器中)左移4位與16位偏移地址相加,得到20位地址,即是物理地址。80486CPU保護(hù)模式下,虛擬地址仍由程序指明段的基地址(即段地址)和偏移地址兩部分表示,也就是說(shuō)任何由程序指明的訪問(wèn)存儲(chǔ)器操作,必須指明一個(gè)段的基地址和一個(gè)偏移地址。80486與8086的邏輯地址相比較,有以下不同之處:(1)段的基地址和偏移地址不再是16位,而是32位。對(duì)于8086CPU,地址總線為20位,其物理存46(2)段的基地址不直接由16位的段寄存器(CS,DS,ES,SS)提供,而是含在段的描述符(Descriptor)中。每個(gè)段描述符由8個(gè)字節(jié)組成,其中32位是這個(gè)段的基地址。段的描述符存儲(chǔ)于稱為描述符表的專門定義的存儲(chǔ)區(qū)內(nèi)。(3)16位的段寄存器,在保護(hù)模式下稱為段選擇器,其中寄存的內(nèi)容稱為段的選擇符。16位段選擇符中的14位用作索引號(hào),依據(jù)索引號(hào)可以找到在描述符表中對(duì)應(yīng)的段描述符,進(jìn)而在段描述符中獲得段的基地址。這就形成了一個(gè)(存于段寄存器的)段選擇符與(存儲(chǔ)于描述符表的)段描述符及段基地址的一一對(duì)應(yīng)關(guān)系。可見(jiàn),原來(lái)的實(shí)模式下直接寄存段地址的16位段寄存器,在保護(hù)模式下仍然是存儲(chǔ)器分段管理的基礎(chǔ)。(2)段的基地址不直接由16位的段寄存47圖8.6是80486CPU在保護(hù)模式下訪問(wèn)存儲(chǔ)器的基本尋址關(guān)系。從圖中可以看出,要訪問(wèn)存儲(chǔ)器時(shí),程序或指令按指令尋址方式的規(guī)則,總能產(chǎn)生32位(也允許16位)段內(nèi)偏移地址和16位的段選擇符。由選擇符中的14位索引(Index)值指向由操作系統(tǒng)定義的段描述表中的某一個(gè)描述符,取出該段描述符中的32位段基地址,這就得到了構(gòu)成一個(gè)虛擬地址的兩部分:段基地址和段內(nèi)偏移地址。由于虛擬地址是由程序或指令指明的,所以虛擬地址空間的大小也是由程序決定的。一個(gè)程序能占用的最大的虛擬存儲(chǔ)器空間是這樣計(jì)算出來(lái)的:由于段選擇符中有14位索引號(hào)(Index),就說(shuō)明它最多可以定義214個(gè)段。圖8.6是80486CPU在保護(hù)模式下訪48微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件4980486CPU的地址總線為32位,決定了物理存儲(chǔ)器地址空間為232B(4GB)。一個(gè)程序要占用的虛擬存儲(chǔ)器空間大于CPU可以直接訪問(wèn)的物理存儲(chǔ)器空間,這就出現(xiàn)了矛盾,這個(gè)矛盾的解決是虛擬存儲(chǔ)器空間可以擴(kuò)展到磁盤(pán)上。這就是說(shuō),虛擬存儲(chǔ)器空間是由磁盤(pán)等外部存儲(chǔ)器支持實(shí)現(xiàn)的。一個(gè)占用虛擬存儲(chǔ)器空間大于物理存儲(chǔ)器空間的程序,先存儲(chǔ)于磁盤(pán)上,在執(zhí)行時(shí)不能一次全部裝入物理存儲(chǔ)器中,而是根據(jù)需要?jiǎng)討B(tài)地部分裝入內(nèi)存或?qū)懟卮疟P(pán)。這種存儲(chǔ)器管理或存儲(chǔ)器分配一般是由操作系統(tǒng)進(jìn)行的,但CPU內(nèi)部結(jié)構(gòu)必須支持存儲(chǔ)器管理功能。80486CPU的地址總線為32位,決定5080486CPU內(nèi)的分段存儲(chǔ)管理機(jī)制和分頁(yè)管理機(jī)制為操作系統(tǒng)的虛擬存儲(chǔ)器管理提供了必要的硬件支持。線性地址的定義是:段的基地址與偏移地址之和稱為線性地址。由于段基地址和偏移地址都是32位,所以線性地址也是32位。80486CPU中,對(duì)于存儲(chǔ)器管理除分段機(jī)制外,還有分頁(yè)機(jī)制。在前節(jié)介紹的控制寄存器CR0中的PE位就是分頁(yè)機(jī)制控制位,該位設(shè)置為1,意味著分頁(yè)機(jī)制被使用;該位設(shè)置為0,表示分頁(yè)機(jī)制不使用。在分頁(yè)機(jī)制不被使用的方式下,段基地址與偏移地址相加產(chǎn)生的線性地址就是訪問(wèn)存儲(chǔ)器的物理地址。在分頁(yè)機(jī)制被使用的情況下,有一個(gè)線性地址變換成物理地址的過(guò)程,將在后面討論。80486CPU內(nèi)的分段存儲(chǔ)管理機(jī)制和分頁(yè)管51
8.3.2存儲(chǔ)器的分段管理對(duì)于程序而言,80486系統(tǒng)的任何信息(包括程序本身)都是分段存儲(chǔ)的。概括地說(shuō),存儲(chǔ)分段管理就是:任何信息都定義在某一段中;任何段都有說(shuō)明本段情況的描述符;描述符定義在描述符表中,描述符表是特殊的段;在描述符表中的每一描述符,有一個(gè)選擇符與其相對(duì)應(yīng)。這就是說(shuō),通過(guò)選擇符,可以找到它對(duì)應(yīng)的段描述符,從段描述符中可取出該段的基地址、段的長(zhǎng)度和關(guān)于該段的其它信息。支持這些操作的硬件,大部分是不可見(jiàn)(不是程序員編程直接控制)的邏輯,可見(jiàn)的邏輯主要是一組系統(tǒng)地址寄存器:GDTR、LDTR、IDTR和TR。為了理解分段管理,必須討論段的種類、段描述符、描述符表、描述符的選擇符,以及系統(tǒng)地址寄存器。8.3.2存儲(chǔ)器的分段管理52
1.段的種類和段描述符在8086系統(tǒng)中,信息也是按段存儲(chǔ)的,但段的種類很少,只有代碼段、數(shù)據(jù)段和堆棧段。而在80486系統(tǒng)中,保護(hù)模式下段的種類增多了,可用表8.1來(lái)概括。代碼段、一般數(shù)據(jù)段和堆棧段的意義與8086系統(tǒng)相同,不再說(shuō)明。在系統(tǒng)段中,全局描述符表GDT、局部描述符表LDT和中斷描述符表IDT是這樣特殊的段:它們具有表的結(jié)構(gòu)特點(diǎn),表的每一項(xiàng)為一個(gè)描述符,每個(gè)描述符有8個(gè)字節(jié)。所以表的長(zhǎng)度是所包含的描述符數(shù)乘以8。GDT和IDT在全系統(tǒng)中只能各有一個(gè),而LDT則可能有多個(gè)。1.段的種類和段描述符53微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件54描述符不是8位代碼的字符,只是由于它的英文為Descriptor,以or結(jié)尾,很多人把它翻譯成描述符。實(shí)際上描述符是一組8個(gè)字節(jié)的信息。描述符的分類有兩種方法:一種分類方法是把描述符分為段描述符和門描述符兩大類。這兩大類描述符的主要區(qū)別是,在8個(gè)字節(jié)的描述符格式中,段描述符有32位段的基地址,門描述符中有16位的指向其它描述符的選擇符。這是合理的,段描述符描述段的特征,其中最重要的兩個(gè)特征是段的基地址和段的長(zhǎng)度,它們?yōu)樵L問(wèn)段內(nèi)信息提供了基礎(chǔ)。描述符不是8位代碼的字符,只是由于它的英55如獲取代碼段內(nèi)的指令碼、訪問(wèn)數(shù)據(jù)段內(nèi)的數(shù)據(jù)、從描述符表(描述符表也是段)中獲取另一描述符等,都必須知道段的基地址。門描述符也簡(jiǎn)稱門,用于間接地控制轉(zhuǎn)移或任務(wù)切換。這里的“間接”意味著多一次從選擇符找到描述符的過(guò)程。所以門描述符中包含一個(gè)16位的段描述符的選擇符。圖8.7是這兩類描述符的簡(jiǎn)化格式。圖8.7中(a)、(b)的共同點(diǎn)是字節(jié)5都是訪問(wèn)權(quán)字節(jié)。圖8.7(a)的段描述符中字節(jié)2、3、4、7組成了32位段的基地址。字節(jié)0、1和字節(jié)6的低4位,共20位給出段的界限,即段的長(zhǎng)度。如獲取代碼段內(nèi)的指令碼、訪問(wèn)數(shù)據(jù)段內(nèi)的數(shù)據(jù)56
57字節(jié)6的位7(G位)是界限的輔助說(shuō)明位,若G=0,則界限值的單位為字節(jié),此時(shí)段的長(zhǎng)度最大值為220,即1MB;若G=1,則界限值的單位為4KB,此時(shí)段的長(zhǎng)度的最大值為232,即4GB。字節(jié)6的位6(D位)用于指明操作數(shù)和有效地址的長(zhǎng)度:D=1,采用32位操作數(shù)和32位尋址方式;D=0,采用16位操作數(shù)和16位尋址方式。在80286系統(tǒng)產(chǎn)生的代碼段在80486上運(yùn)行時(shí),D取0。圖8.7(b)中字節(jié)2、3是16位的選擇符,用于選擇一個(gè)段的描述符,進(jìn)而獲得段的基地址。字節(jié)0、1、6、7的32位偏移值與獲得的段的基地址相結(jié)合,形成一個(gè)將要訪問(wèn)的邏輯地址。字節(jié)6的位7(G位)是界限的輔助說(shuō)明位58另一種描述符分類方法是按描述符訪問(wèn)權(quán)字節(jié)(字節(jié)5)和字節(jié)6的高4位中有關(guān)字段分類的。字節(jié)5位4標(biāo)為S位,它的兩個(gè)狀態(tài)把描述符分為兩大類:S=1為代碼段、數(shù)據(jù)段和堆棧段描述符;S=0,則是系統(tǒng)段和門描述符。按S位把描述符分為兩大類后,訪問(wèn)權(quán)的TYPE字段(3位或4位)又把它們區(qū)分開(kāi)具體類型。圖8.8是兩大類訪問(wèn)權(quán)字節(jié)的格式。S=1時(shí)TYPE字段的3位(位3~位1)組合指明代碼段、數(shù)據(jù)段和堆棧段的不同類型。表8.2給出了位組合與類型關(guān)系。位3標(biāo)以E,用于區(qū)別代碼段和數(shù)據(jù)段。另一種描述符分類方法是按描述符訪問(wèn)權(quán)字節(jié)(字59微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件60在表8.2代碼段(E=1)時(shí),位2、位1標(biāo)以C和R,用于保護(hù)控制。在數(shù)據(jù)段(E=0)時(shí),位2標(biāo)以ED,用以區(qū)別一般數(shù)據(jù)段(ED=0)和堆棧段(ED=1),位1標(biāo)以W,也用于保護(hù)控制。關(guān)于保護(hù)功能在8.5節(jié)討論。S=0時(shí)TYPE字段為4位(位3~位0)組合。這4位組合代表的描述符又分為兩類:系統(tǒng)段系統(tǒng)段(LDT、TSS)描述符和門,如表8.3所示。圖8.8中訪問(wèn)權(quán)字節(jié)的P位,對(duì)于段描述符和門意義不同。在段描述符中的P位,指明該段當(dāng)前是否在內(nèi)存中,P位為1表示該段在內(nèi)存中;P位為0,表示該段不在內(nèi)存,而在輔助存儲(chǔ)器(磁盤(pán))中。在表8.2代碼段(E=1)時(shí),位2、位61微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件62微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件63訪問(wèn)權(quán)字節(jié)的DPL(位6、位5)字段指明描述符特權(quán)級(jí),用于系統(tǒng)保護(hù),將在8.5節(jié)討論。圖8.8(a)中訪問(wèn)權(quán)字節(jié)位0標(biāo)以A,借助對(duì)A位的操作,可以統(tǒng)計(jì)出近期該段被訪問(wèn)的頻繁程度。每當(dāng)這個(gè)代碼段或數(shù)據(jù)段描述符被訪問(wèn)時(shí),這個(gè)描述符(在描述符表中)的A位被置1。操作系統(tǒng)按一定周期查看記錄A位的狀態(tài)并使A位復(fù)位為0。在一段時(shí)間內(nèi)(當(dāng)然要大于查看A位的周期)對(duì)A位狀態(tài)的統(tǒng)計(jì),就可以知道近期內(nèi)該段被訪問(wèn)的頻度。在虛擬存儲(chǔ)器系統(tǒng)中,隨著程序的運(yùn)行,把存于磁盤(pán)上的段裝入內(nèi)存是常有的操作,自然也有從內(nèi)存中刪除某些段操作。根據(jù)什么原則從內(nèi)存中刪除某些段?一般的原則是刪除近期訪問(wèn)頻度低的段。這就是A位的意義。訪問(wèn)權(quán)字節(jié)的DPL(位6、位5)字段指64
2.描述符表描述符表是在存儲(chǔ)器中定義的用于存儲(chǔ)描述符的特殊的段。有三種描述符表,它們可以存儲(chǔ)的描述符種類如表8.4所示。全局描述符表GDT,存儲(chǔ)著系統(tǒng)中所有任務(wù)都可使用的描述符(除中斷門和陷阱門描述符)。每個(gè)系統(tǒng)只有一個(gè)GDT。通常,GDT包含操作系統(tǒng)使用的代碼段和數(shù)據(jù)段描述符,還包含各個(gè)任務(wù)的局部描述符表的描述符,以及各個(gè)任務(wù)狀態(tài)段TSS的描述符。由于GDT只有一個(gè),也就沒(méi)有GDT描述符存于某個(gè)描述符表中。后面將看到,GDT的“描述符”信息直接存于GDTR的高速緩存器中。2.描述符表65微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件66
后面將看到,GDT的“描述符”信息直接存于GDTR的高速緩存器中。局部描述符表LDT,存放只屬于某個(gè)任務(wù)的描述符。多任務(wù)操作系統(tǒng)管理的每一個(gè)任務(wù)常常由兩部分組成:一部分是與其它任務(wù)共用的部分;另一部分是本任務(wù)獨(dú)有的部分。反映在描述符表上,一部分描述符在全局描述符表GDT內(nèi),另一部分在局部描述符表LDT內(nèi)。所以每個(gè)任務(wù)都有一個(gè)LDT,每個(gè)LDT有一個(gè)LDT描述符,LDT描述符只能在GDT內(nèi)。GDT和LDT的長(zhǎng)度是可變的,最多可容納8192個(gè)描述符(64KB)。表內(nèi)的每個(gè)描述符有一個(gè)索引號(hào),索引號(hào)乘以8是該描述符在表內(nèi)的起始地址。索引號(hào)的編碼為13位(213=8192)。后面將看到,GDT的“描述符”信息直接存于67中斷描述符表IDT全系統(tǒng)只有一個(gè)。其作用和8086系統(tǒng)中的中斷向量表相對(duì)應(yīng)。中斷向量表中的每一項(xiàng)是4個(gè)字節(jié)的一個(gè)中斷向量:中斷服務(wù)程序入口的段地址和段內(nèi)偏移地址。IDT中的每一項(xiàng)是一個(gè)8個(gè)字節(jié)的描述符??赡艿拿枋龇兄袛嚅T描述符、陷阱門描述符和任務(wù)門描述符。中斷門和陷阱門描述符中包含的選擇符將指向段描述符,從而獲得中斷服務(wù)子程序入口的段地址;門描述中包含的偏移量即是中斷服務(wù)子程序入口的段內(nèi)偏移地址。這樣就獲得了中斷服務(wù)子程序入口的邏輯地址。任務(wù)門描述符中的選擇符將選出一個(gè)新任務(wù)的任務(wù)狀態(tài)段TSS,從而切換到新任務(wù)去。IDT最多可容納256個(gè)描述符(中斷類型號(hào)0~255),最多含2KB。中斷描述符表IDT全系統(tǒng)只有一個(gè)。其作用和68IDT中的每個(gè)描述符有一個(gè)索引號(hào),索引號(hào)乘8就是該描述符在表內(nèi)的偏移地址。內(nèi)、外中斷(包括INT指令)形成的中斷類型號(hào)將作為訪問(wèn)IDT內(nèi)描述符的索引號(hào)。
3.段選擇符、段寄存器和系統(tǒng)地址寄存器GDT和LDT表內(nèi)的每一個(gè)描述符都有一個(gè)對(duì)應(yīng)的選擇符。選擇符有16位,分為三個(gè)字段:高13位(位15~位3)為對(duì)應(yīng)描述符在描述符表內(nèi)的索引號(hào)。位2稱為表指示位TI,TI=0,指向GDT:TI=1,指向LDT。段選擇符與描述符表的關(guān)系如圖8.9所示。選擇符的位1和位0為請(qǐng)求者特權(quán)級(jí)RPL,后面討論。IDT中的每個(gè)描述符有一個(gè)索引號(hào),索引號(hào)69圖8.9選擇符與描述符表的關(guān)系圖8.9選擇符與描述符表的關(guān)系70從以上的討論可以得出這樣的邏輯關(guān)系:無(wú)論為取指令訪問(wèn)內(nèi)存還是讀寫(xiě)數(shù)據(jù)訪問(wèn)內(nèi)存,總要首先獲得段的開(kāi)始地址(即基地址)和段內(nèi)偏移地址。段內(nèi)偏移地址可由EIP提供或按指令的尋址方式計(jì)算產(chǎn)生,而獲得段的基地址卻要經(jīng)過(guò)這樣的過(guò)程:按段的選擇符訪問(wèn)描述符表找到段描述符,從描述符中獲得段基址。這就是說(shuō),為了獲得段的基地址似乎要經(jīng)過(guò)復(fù)雜的多次訪問(wèn)內(nèi)存的操作。若真是這樣,訪問(wèn)內(nèi)存的速度就要低了。事實(shí)上,80486CPU內(nèi)部硬件邏輯,保證了在大多數(shù)訪問(wèn)存儲(chǔ)器的操作時(shí),由寄存器提供段基址,從而大大加快了訪問(wèn)存儲(chǔ)器的速度。這部分硬件邏輯主要是段寄存器和系統(tǒng)地址寄存器。系統(tǒng)地址寄存器有全局描述符表寄存器GDTR和中斷描述符表寄存器IDTR(見(jiàn)圖8.3),它們分別寄存GDT和IDT的表基址和其長(zhǎng)度。從以上的討論可以得出這樣的邏輯關(guān)系:無(wú)論為71這兩個(gè)寄存器都有兩個(gè)字段:32位的表基地址和6位的表長(zhǎng)度。由于系統(tǒng)工作時(shí)只有一個(gè)GDT和一個(gè)IDT,所以在系統(tǒng)初始化階段,在轉(zhuǎn)入保護(hù)模式之前可以定義GDT和IDT并用指令LGDT和LIDT分別向GDTR和IDTR置入48位(32位表基址和16位表長(zhǎng)度)初值,而且不再改變。這就為GDT和IDT定了位。如果某個(gè)段描述符的選擇符是指向GDT的(T1=0),選擇符中的13位索引號(hào)乘以8就是對(duì)應(yīng)的段描述符在GDT內(nèi)的偏移地址。這里說(shuō)的段寄存器包括代碼段寄存器CS,數(shù)據(jù)段寄存器DS、ES、FS、GS,堆棧段寄存器SS和系統(tǒng)寄存器LDTR、TR(即TSSR)。這些段寄存器在結(jié)構(gòu)上和操作上都有共同特點(diǎn)。
這兩個(gè)寄存器都有兩個(gè)字段:32位的表基72在結(jié)構(gòu)上,如圖8.10所示,每個(gè)段寄存器都由兩部分組成:一部分為16位,寄存段描述符選擇符,可以用指令訪問(wèn),用指令裝入段選擇符(CS除外);另一部分為64位,稱為描述符高速緩沖寄存器,寄存前一部分選擇符對(duì)應(yīng)的段描述符。在操作上,描述符高速緩沖寄存器是“程序員不可見(jiàn)的”,就是不能用指令直接向其中賦值。描述符高速緩沖寄存器是在向寄存器的16位部分裝入描述符選擇符時(shí),自動(dòng)地把選擇符對(duì)應(yīng)的段描述符裝入其中的。它隱含地包括這些操作:當(dāng)向段寄存器的16位部分裝入選擇符時(shí),要依其TI位決定是訪問(wèn)GDTR還是LDT。選定GDT或LDT之后,由GDT或LDTR提供GDT或LDT的基地址。這個(gè)基地址與選擇符中13位索引號(hào)乘以8相加,便得到了所選描述符的開(kāi)始物理地址。在結(jié)構(gòu)上,如圖8.10所示,每個(gè)段寄存器73微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件74把這一地址開(kāi)始的連續(xù)8個(gè)字節(jié)的內(nèi)容取出,裝入對(duì)應(yīng)的描述符高速緩沖寄存器。這一系列操作是由硬件自動(dòng)完成的。代碼段寄存器CS不能用傳送指令修改其內(nèi)容,但JMP、CALL、IRET、INT指令和中斷操作等可以改變CS內(nèi)容。無(wú)論因什么改變CS的內(nèi)容,都只能把某個(gè)代碼段描述符的16位選擇符置入CS。至于DS、ES、GS、FS和SS,則可用MOV指令(如:MOVDS,AX)修改其內(nèi)容。同樣,它們的修改值必然是數(shù)據(jù)段或堆棧段描述符的選擇符。系統(tǒng)寄存器LDTR和TR,分別可用LLDT和LTR指令向其中裝入LDT描述符的選擇符和TSS描述符的選擇符,或者在任務(wù)切換過(guò)程(下節(jié)討論)中,向LDTR和TR裝入選擇符。把這一地址開(kāi)始的連續(xù)8個(gè)字節(jié)的內(nèi)容取出75系統(tǒng)寄存器LDTR和TR,分別可用LLDT和LTR指令向其中裝入LDT描述符的選擇符和TSS描述符的選擇符,或者在任務(wù)切換過(guò)程(下節(jié)討論)中,向LDTR和TR裝入選擇符。在多任務(wù)情況下,各種段(包括LDT和TSS)可能有多個(gè),但是只有上述段寄存器選擇的段才是當(dāng)前處于活動(dòng)狀態(tài)的段。段寄存器CS、LDTR或TR內(nèi)容的修改,要么是程序進(jìn)行段間轉(zhuǎn)移,要么是任務(wù)之間的切換。上面的討論回避了一個(gè)問(wèn)題,就是保護(hù)功能。存儲(chǔ)器的訪問(wèn)和段寄存器內(nèi)容的修改,都必須符合一定的規(guī)則,受一定的限制,這樣才能使任務(wù)之間隔離,應(yīng)用程序不至于破壞操作系統(tǒng),這就是保護(hù)的意義。8.5節(jié)將專門討論保護(hù)功能及實(shí)現(xiàn)方法。系統(tǒng)寄存器LDTR和TR,分別可用LLDT76存儲(chǔ)分段管理小結(jié):(1)系統(tǒng)中任務(wù)信息都是分段存儲(chǔ)的。除了代碼段、數(shù)據(jù)段和堆棧段之外,保護(hù)模式下還有些特殊的段:一個(gè)GDT段、一個(gè)IDT段、多個(gè)LDT段和多個(gè)TSS段。(2)任何段的定義,都必須同時(shí)定義一個(gè)屬于它的段描述符,并把描述符置于描述符表中。段描述符包含這個(gè)段的基地址、長(zhǎng)度和其它屬性信息。除了GDT和IDT段之外,其它所有的段,每個(gè)段的描述符都有一個(gè)選擇符,用以指明描述符在描述符表中的地址和訪問(wèn)特權(quán)。存儲(chǔ)分段管理小結(jié):77(3)CPU內(nèi)的段寄存器及隱蔽伴隨的描述符高速緩沖寄存器,寄存著當(dāng)前活動(dòng)段的描述符和描述符選擇符,從而使訪問(wèn)內(nèi)存的操作保持高速度。更換當(dāng)前活動(dòng)的段,是通過(guò)用指令(有些是中斷操作)修改段寄存器中的選擇符來(lái)實(shí)現(xiàn)的。(4)存儲(chǔ)器的尋址(在指令中體現(xiàn)出來(lái)的)等效成段選擇符和偏移地址兩部分,其中的選擇符隱含地給出段的基地址。(3)CPU內(nèi)的段寄存器及隱蔽伴隨的描述符78
8.3.3存儲(chǔ)器的分頁(yè)管理多任務(wù)操作系統(tǒng)需要虛擬存儲(chǔ)器管理機(jī)制的支持。除了前面討論的分段管理之外,80486CPU還支持分頁(yè)管理。分段管理是把程序、數(shù)據(jù)和其它信息(如描述符表等)都定義成長(zhǎng)度不定的段。根據(jù)需要,操作系統(tǒng)可以把完整的段從磁盤(pán)裝入內(nèi)存,或從內(nèi)存?zhèn)鞯酱疟P(pán)把該段在內(nèi)存的位置空閑起來(lái)。這就是說(shuō),在內(nèi)存和磁盤(pán)之間交換信息時(shí),段作為獨(dú)立的邏輯單位。分段管理的優(yōu)點(diǎn)是段的分界和程序的自然分界相對(duì)應(yīng);段的邏輯獨(dú)立性使它易于編譯、管理、修改和保護(hù),也便于多任務(wù)共享。分段管理的缺點(diǎn)來(lái)自于段長(zhǎng)度不固定不相同。段的起點(diǎn)和終點(diǎn)不定,對(duì)內(nèi)存空間分配帶來(lái)不便,每次對(duì)內(nèi)存清除騰空的段長(zhǎng)度必須大于將要從磁盤(pán)裝入的段,在內(nèi)存與磁盤(pán)多次交換段之后,內(nèi)存中將出現(xiàn)許多空余的零碎存儲(chǔ)空間無(wú)法利用而浪費(fèi)。8.3.3存儲(chǔ)器的分頁(yè)管理79分頁(yè)管理將克服單純分段管理的缺點(diǎn),把虛擬存儲(chǔ)空間和內(nèi)存物理空間都劃分長(zhǎng)度為4KB的頁(yè),頁(yè)的起點(diǎn)地址和終點(diǎn)地址都是固定的。無(wú)論是程序還是數(shù)據(jù),在內(nèi)存中存儲(chǔ)和在內(nèi)存與磁盤(pán)之間交換時(shí)都以4KB的頁(yè)作為單位來(lái)進(jìn)行。這就是說(shuō),一個(gè)程序或一個(gè)段都可以劃分為多個(gè)頁(yè),在劃分為多個(gè)頁(yè)時(shí),這些頁(yè)在內(nèi)存中不一定是地址相鄰的。在從磁盤(pán)向內(nèi)存調(diào)入一頁(yè)時(shí),只要內(nèi)存有空閑頁(yè)就可容納。唯一可能造成浪費(fèi)的存儲(chǔ)空間是程序最后一頁(yè)所留下的剩余空間。好在一頁(yè)的字節(jié)數(shù)只有4KB,所以剩余空間必然小于4KB。
80486CPU在保護(hù)模式下,首先利用分段管理機(jī)制,形成線性地址,然后由分頁(yè)機(jī)制把線性地址變換成物理地址。分頁(yè)管理將克服單純分段管理的缺點(diǎn),把虛擬存儲(chǔ)80分頁(yè)機(jī)制的使用是可選的。在控制寄存器CR0中,設(shè)置PG位(位31)為1時(shí),使分頁(yè)機(jī)制工作;設(shè)置PG位為0時(shí),分頁(yè)機(jī)制不工作。圖8.11是80486CPU使用分頁(yè)機(jī)制時(shí)的尋址過(guò)程。分頁(yè)機(jī)制的使用是可選的。在控制寄存器CR081微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件82
1.分頁(yè)時(shí)存儲(chǔ)器的組織存儲(chǔ)器的組織必須利于尋址。在分頁(yè)情況下,存儲(chǔ)器如何編址和尋址?其方法可以概括為以下幾點(diǎn):(1)把存儲(chǔ)器的物理空間劃分為每4KB為1頁(yè),頁(yè)與頁(yè)互不重疊,頁(yè)的開(kāi)始地址必須是地址碼低12位為全0,頁(yè)的最高地址必然是地址碼的低12位為全1。(2)任一個(gè)存儲(chǔ)單元的地址一定在某一頁(yè)內(nèi),而頁(yè)本身的地址是通過(guò)二級(jí)表結(jié)構(gòu)給出的,這二級(jí)表結(jié)構(gòu)分別為頁(yè)表和目錄,一個(gè)頁(yè)表也占4KB的一頁(yè),頁(yè)表中的項(xiàng)稱為頁(yè)表項(xiàng)。每一頁(yè)表項(xiàng)占4個(gè)字節(jié)單元,這4個(gè)字節(jié)中用20位給出一頁(yè)的開(kāi)始地址(頁(yè)的開(kāi)始地址低12位為全0,只需給出高20位),其余12位給出關(guān)于該頁(yè)的其它信息。1.分頁(yè)時(shí)存儲(chǔ)器的組織83可見(jiàn)一個(gè)頁(yè)表包含1024個(gè)頁(yè)表項(xiàng),每項(xiàng)對(duì)應(yīng)1頁(yè)。若訪問(wèn)任何一頁(yè),必須先獲得這個(gè)頁(yè)對(duì)應(yīng)的頁(yè)表項(xiàng)所在的頁(yè)表的地址和這個(gè)頁(yè)表項(xiàng)在頁(yè)表中的偏移地址。目錄是存儲(chǔ)頁(yè)表的表。目錄也是占4KB的頁(yè),目錄中的項(xiàng)稱為目錄項(xiàng)。每一目錄項(xiàng)也是4個(gè)字節(jié),其中20位是一個(gè)頁(yè)表的開(kāi)始地址,其余12位是關(guān)于該頁(yè)表的其它信息??梢?jiàn)每個(gè)目錄項(xiàng)對(duì)應(yīng)一個(gè)頁(yè)表,共有1024個(gè)目錄項(xiàng)。(3)CPU內(nèi)的控制寄存器CR3是目錄的物理基地址寄存器,它寄存著目錄的物理起始地址。CR3用其32位中的高20位給出目錄的起始地址(低12位全0)??梢?jiàn)一個(gè)頁(yè)表包含1024個(gè)頁(yè)表項(xiàng),每項(xiàng)對(duì)84從以上所述可以看出,對(duì)任何一個(gè)存儲(chǔ)單元的編址包含三部分信息:這個(gè)單元在頁(yè)內(nèi)的地址、對(duì)應(yīng)的頁(yè)表項(xiàng)在頁(yè)表中的地址以及對(duì)應(yīng)頁(yè)表在目錄中的地址。在使用分頁(yè)功能時(shí),80486CPU分段機(jī)構(gòu)形成的32位線性地址分成三個(gè)字段:位11~位0,共12位,指明頁(yè)內(nèi)的偏移地址;位21~位12,共10位,作為頁(yè)表項(xiàng)在頁(yè)表內(nèi)的索引號(hào),這個(gè)索引號(hào)乘以4,就是頁(yè)表項(xiàng)在頁(yè)表內(nèi)的偏移地址;位31~位22,共10位,作為目錄項(xiàng)在目錄中的索引號(hào),這個(gè)索引號(hào)乘以4,就是目錄項(xiàng)在目錄內(nèi)的偏移地址(已經(jīng)說(shuō)明目錄的起始地址在CR3中)。圖8.12給出了上述分頁(yè)機(jī)制的尋址關(guān)系。從以上所述可以看出,對(duì)任何一個(gè)存儲(chǔ)單元的編址85微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件86
2.目錄項(xiàng)和頁(yè)表項(xiàng)目錄項(xiàng)和頁(yè)表項(xiàng)的格式是相同的,如圖8.13所示。但它們描述的對(duì)象是不同的:目錄項(xiàng)描述的是一個(gè)頁(yè)表,而頁(yè)表項(xiàng)描述的是一頁(yè)。除了位31~位12(共20位)給出了頁(yè)表或頁(yè)的起始地址的高20位(低12位全0)外,位11~位0給出了有關(guān)信息:P(Present)位表示該項(xiàng)是否正確可用。P位為1,表示該目錄項(xiàng)或該頁(yè)表項(xiàng)正確,可在線性地址到物理地址變換中使用;P位為0,表示該項(xiàng)不可用,此時(shí),其它位已無(wú)意義。A(Access)位的意義和前面討論描述符內(nèi)的A位意義相同:在程序?qū)υ撃夸涰?xiàng)或頁(yè)表項(xiàng)描述的地址區(qū)域進(jìn)行訪問(wèn)時(shí),CPU的固件將A位置1,由軟件(操作系統(tǒng))周期性地將A位復(fù)位為0,這樣,對(duì)A位為1狀態(tài)的統(tǒng)計(jì)可以知道該頁(yè)的活動(dòng)情況。D(Dirty)位在目錄項(xiàng)中無(wú)意義,在頁(yè)表項(xiàng)中,當(dāng)程序向?qū)?yīng)頁(yè)寫(xiě)入數(shù)據(jù)時(shí),使D位置1。2.目錄項(xiàng)和頁(yè)表項(xiàng)87圖8.13目錄項(xiàng)和頁(yè)表項(xiàng)格式圖8.13目錄項(xiàng)和頁(yè)表項(xiàng)格式88和A位一樣,D位只能由操作系統(tǒng)復(fù)位為0,所以D位用于描述對(duì)應(yīng)頁(yè)被寫(xiě)入的情況。U/S(User/Suppervisor)位和R/W(Read/Write)位用于支持頁(yè)保護(hù)功能。標(biāo)有AVL(位11~位9)留給操作系統(tǒng)定義和使用。
3.TLBTLB是TranslationLookasideBuffer的縮寫(xiě),譯為轉(zhuǎn)換旁視緩沖器。TLB是80486CPU支持分頁(yè)管理機(jī)制的一部分硬件,具有高速緩沖存儲(chǔ)器結(jié)構(gòu)。TLB有32個(gè)項(xiàng),如圖8.14所示。每一項(xiàng)有兩個(gè)字段。一個(gè)字段存儲(chǔ)前面說(shuō)明過(guò)的頁(yè)表項(xiàng),包括一頁(yè)的物理開(kāi)始地址和相關(guān)信息。另一個(gè)字段為標(biāo)記(Tag),存放該頁(yè)表項(xiàng)對(duì)應(yīng)的線性地址的高20位(位31~位12)。TLB內(nèi)存放的頁(yè)表項(xiàng)被認(rèn)定為將要頻繁訪問(wèn)頁(yè)的頁(yè)表項(xiàng)。和A位一樣,D位只能由操作系統(tǒng)復(fù)位為0,所89微型計(jì)算機(jī)原理與應(yīng)用第8章高檔微機(jī)的某些新技術(shù)課件90很顯然,TLB的機(jī)制使得在線性地址變換成物理地址進(jìn)程中,減少了訪問(wèn)內(nèi)存的目錄和頁(yè)表的操作,而訪問(wèn)目錄和頁(yè)表操作是相當(dāng)費(fèi)時(shí)間的,從而大大提高了訪問(wèn)的速度。很顯然,TLB的機(jī)制使得在線性地址變換成物918.4多任務(wù)系統(tǒng)的實(shí)現(xiàn)機(jī)制8.4.1多道程序和多任務(wù)的基本概念任務(wù)(Task)是操作系統(tǒng)的最重要的概念,在很多資料中稱作進(jìn)程(Process)。任務(wù)(或進(jìn)程)有許多定義,從不同側(cè)面說(shuō)明了它的含義。1978年全國(guó)操作系統(tǒng)會(huì)議上,對(duì)進(jìn)程的描述是:“進(jìn)程是一個(gè)具有獨(dú)立功能的程序?qū)τ谀硞€(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)?!边@說(shuō)明,任務(wù)與程序有關(guān),又與程序不同。任務(wù)的概念出現(xiàn)于多道程序之后。為了充分利用系統(tǒng)資源,出現(xiàn)了主存儲(chǔ)器中同時(shí)存放并運(yùn)行多道程序的系統(tǒng)。例如,對(duì)實(shí)時(shí)性要求很高的系統(tǒng)中,常常把數(shù)據(jù)輸入、數(shù)據(jù)處理和數(shù)據(jù)輸出劃分為三個(gè)獨(dú)立的程序模塊(任務(wù)),借助中斷機(jī)制,使它們“同時(shí)”運(yùn)行。8.4多任務(wù)系統(tǒng)的實(shí)現(xiàn)機(jī)制8.4.1多道92又如,在一個(gè)多用戶系統(tǒng)中,主計(jì)算機(jī)連接多個(gè)終端,每個(gè)用戶在自己的終端上輸入命令,主計(jì)算機(jī)為每個(gè)用戶執(zhí)行“自己”的程序。多道程序系統(tǒng)的操作系統(tǒng)設(shè)計(jì)十分復(fù)雜,不僅要考慮到多道程序在系統(tǒng)中的并行性(并行運(yùn)行)、相互依賴和相互的制約性(資源的競(jìng)爭(zhēng)和協(xié)調(diào)),還要處理好系統(tǒng)內(nèi)部狀態(tài)不斷變化的動(dòng)態(tài)性(有的程序在處理器上運(yùn)行,有的程序等待某個(gè)事件的發(fā)生而無(wú)法運(yùn)行)。正是由于在多道程序系統(tǒng)中,程序之間有了并行、依賴制約和動(dòng)態(tài)的特性,使得原來(lái)的程序概念不能很好反映系統(tǒng)中的情況了。原來(lái)程序的概念只是完成某個(gè)功能的指令的集合,為靜態(tài)概念。所以,出現(xiàn)了進(jìn)程(任務(wù))的概念,用以描述多道程序系統(tǒng)中程序運(yùn)行的動(dòng)態(tài)特點(diǎn)。又如,在一個(gè)多用戶系統(tǒng)中,主計(jì)算機(jī)連接多個(gè)終93任務(wù)(進(jìn)程)是程序的執(zhí)行,是一次運(yùn)行活動(dòng),從開(kāi)始運(yùn)行到運(yùn)行完成,是一個(gè)生命過(guò)程。一個(gè)程序可能對(duì)應(yīng)多個(gè)進(jìn)程。例如同一個(gè)Fortran編譯程序可以對(duì)多個(gè)Fortran源程序同時(shí)進(jìn)行編譯,可以看作是該編譯程序在多個(gè)數(shù)據(jù)集(源程序)上運(yùn)行,是多個(gè)不同的進(jìn)程。如果把程序分為主程序和多個(gè)子程序(過(guò)程),主程序執(zhí)行過(guò)程中調(diào)用了子程序,從這一意義上,一個(gè)進(jìn)程,即“一次運(yùn)行活動(dòng)”,可以包含多個(gè)程序。在多道程序系統(tǒng)中,進(jìn)程的概念引入后,從編程的意義上一個(gè)重要的變化是:不僅要編排指令序列、定義數(shù)據(jù)和變量,而且要為每個(gè)進(jìn)程定義一個(gè)進(jìn)程控制塊。進(jìn)程控制塊是在內(nèi)存中定義的存儲(chǔ)格式確定的存儲(chǔ)區(qū)域,用于記錄進(jìn)程的有關(guān)信息。任務(wù)(進(jìn)程)是程序的執(zhí)行,是一次運(yùn)行活動(dòng),94任務(wù)(進(jìn)程)是程序的執(zhí)行,是一次運(yùn)行活動(dòng),從開(kāi)始運(yùn)行到運(yùn)行完成,是一個(gè)生命過(guò)程。一個(gè)程序可能對(duì)應(yīng)多個(gè)進(jìn)程。例如同一個(gè)Fortran編譯程序可以對(duì)多個(gè)Fortran源程序同時(shí)進(jìn)行編譯,可以看作是該編譯程序在多個(gè)數(shù)據(jù)集(源程序)上運(yùn)行,是多個(gè)不同的進(jìn)程。如果把程序分為主程序和多個(gè)子程序(過(guò)程),主程序執(zhí)行過(guò)程中調(diào)用了子程序,從這一意義上,一個(gè)進(jìn)程,即“一次運(yùn)行活動(dòng)”,可以包含多個(gè)程序。在多道程序系統(tǒng)中,進(jìn)程的概念引入后,從編程的意義上一個(gè)重要的變化是:不僅要編排指令序列、定義數(shù)據(jù)和變量,而且要為每個(gè)進(jìn)程定義一個(gè)進(jìn)程控制塊。進(jìn)程控制塊是在內(nèi)存中定義的存儲(chǔ)格式確定的存儲(chǔ)區(qū)域,用于記錄進(jìn)程的有關(guān)信息。任務(wù)(進(jìn)程)是程序的執(zhí)行,是一次運(yùn)行活動(dòng),95CPU中的寄存器LDTR(及其高速緩沖器)寄存著當(dāng)前任務(wù)的LDT描述符,它提供了當(dāng)前LDT的基地址。在任務(wù)切
溫馨提示
- 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è)用房短期出租合同范例
- 吊車吊裝協(xié)議合同范本
- 內(nèi)部裝修設(shè)計(jì)合同范例
- 合同范本中漏洞
- 司機(jī)補(bǔ)充協(xié)議合同范例
- 農(nóng)業(yè)養(yǎng)銷合同范本
- 中韓進(jìn)出口貿(mào)易合同范本
- 合同范例外墻涂料
- 商用桌椅購(gòu)買合同范本
- 2024年河北石家莊同濟(jì)醫(yī)學(xué)中等專業(yè)學(xué)校招聘教師考試真題
- 2025年牡丹江大學(xué)單招職業(yè)適應(yīng)性測(cè)試題庫(kù)及答案(典優(yōu))
- 2025年河南工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)審定版
- 施工現(xiàn)場(chǎng)應(yīng)對(duì)極端天氣的措施
- 江蘇2025年01月江蘇省揚(yáng)州生態(tài)科技新城管委會(huì)2025年招考6名勞務(wù)派遣人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年內(nèi)蒙古呼倫貝爾農(nóng)墾拉布大林上庫(kù)力三河蘇沁農(nóng)牧場(chǎng)招聘115人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 中學(xué)創(chuàng)客教育教學(xué)活動(dòng)計(jì)劃
- 《移動(dòng)通信市場(chǎng)推廣策略》課件
- 2025年四川成都職業(yè)技術(shù)學(xué)院招聘筆試參考題庫(kù)含答案解析
- 2025年國(guó)家藥品監(jiān)督管理局藥品審評(píng)中心招聘11人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫(kù)含必背答案
評(píng)論
0/150
提交評(píng)論