微型計(jì)算機(jī)原理與應(yīng)用-第11章%20
單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,,,*,*,第,11,章,32,位微處理器,,湯世平,,北京理工大學(xué),,目錄,,11.1 80386,微處理器的結(jié)構(gòu),,11.2 32,位微處理器的地址總線(xiàn)和數(shù)據(jù)總線(xiàn),,11.3 32,位微處理器的工作方式,,11.4,實(shí)地址方式,,11.5,保護(hù)方式,,11.6,虛擬,8086,方式,,11.7 80486,位微處理器的特點(diǎn)簡(jiǎn)介,,11.8 Pentium,微處理器,,2,,11.1 80386,微處理器的結(jié)構(gòu),,,,,3,,1,.,中央處理部件,(CPU),指令部件,,指令預(yù)取隊(duì)列,,已譯碼指令隊(duì)列,,執(zhí)行部件,,32,位的算術(shù)運(yùn)算單元,ALU,,8,個(gè),32,位通用寄存器組,,64,位的桶形移位器和乘/除硬件,,4,,2.,存儲(chǔ)管理部件,(MMU),分段部件,,分頁(yè)部件,,頁(yè)是機(jī)械劃分的,每,4KB,為一頁(yè),程序或數(shù)據(jù)均以頁(yè)為單位進(jìn)入實(shí)存,,存儲(chǔ)器按段來(lái)組織,每段包含若干個(gè)頁(yè),段的最大容量可達(dá),4000MB,,一個(gè)任務(wù)最多可包含,16K,個(gè)段,每個(gè)任務(wù)可使用,64MMB,的虛擬存儲(chǔ)空間,,高速緩沖存儲(chǔ)器,(cache),,構(gòu)成完整的,cache—,主存,—,輔存的,3,級(jí)存儲(chǔ)體系,,5,,3,.,總線(xiàn)接口部件,(BIU),數(shù)據(jù)總線(xiàn),,地址總線(xiàn),,控制總線(xiàn),,包括訪問(wèn)存儲(chǔ)器預(yù)取指令,讀/寫(xiě)數(shù)據(jù)和訪問(wèn),I,/,O,端口讀/寫(xiě)數(shù)據(jù)等全部操作及其他控制功能,,,6,,80386,的寄存器,,通用寄存器組,,段寄存器指令指針,,標(biāo)志寄存器,,控制寄存器,,系統(tǒng)地址寄存器,,調(diào)試寄存器,,測(cè)試寄存器,,,7,,11.2 32,位微處理器的地址總線(xiàn)和數(shù)據(jù)總線(xiàn),80X86CPU,對(duì)外的地址總線(xiàn)和數(shù)據(jù)總線(xiàn)都是,32,條,如何來(lái)進(jìn)行,16,位和,8,位數(shù)的傳送呢,?,,,8,,11.2.1,地址總線(xiàn),,80X86CPU,的,32,位地址總線(xiàn)是用,30,條地址線(xiàn),A,2,~A,31,加上,4,個(gè)字節(jié)允許符,BE,0,~BE,3,來(lái)實(shí)現(xiàn)。這,4,個(gè)字節(jié)允許符給出了兩個(gè)最低有效地址位和傳送寬度編碼。,,9,,11.2.2,數(shù)據(jù)總線(xiàn),32,位數(shù)據(jù)總線(xiàn)是,32,條三態(tài)雙向數(shù)據(jù)線(xiàn),D,0,~D,31,。,,D,0,~D,7,為最低字節(jié),,D,24,~D,31,為最高字節(jié)。,,可以使用,BS8,和,BS16,引腳輸入控制信號(hào)來(lái)改變數(shù)據(jù)總線(xiàn)的寬度,將數(shù)據(jù)傳送到,8,位或,16,位設(shè)備中去。使,32,位微處理器能直接與,32,位、,16,位或,8,位總線(xiàn)相連接。,,10,,11.2.3,總線(xiàn)傳送機(jī)制,,32,位微處理器的所有數(shù)據(jù)傳送都是由一個(gè)或多個(gè)總線(xiàn)周期來(lái)完成。,,1,字節(jié)、,2,字節(jié)或,4,字節(jié)的邏輯數(shù)據(jù)操作數(shù)可以在物理地址不對(duì)界的情況下傳送。在對(duì)界時(shí)的操作數(shù)只需要,1,個(gè)總線(xiàn)周期,而對(duì)于不對(duì)界時(shí)的操作數(shù)就需要,2,個(gè)或,3,個(gè)總線(xiàn)周期。,,80X86CPU,地址信號(hào)的設(shè)計(jì)可以簡(jiǎn)化外部系統(tǒng)的硬件。高位地址由,A,2,~A,31,提供。低位地址則以,BE,0,~BE,3,形式提供了,32,位數(shù)據(jù)總線(xiàn),4,個(gè)字節(jié)的選擇信號(hào)。,,有時(shí),對(duì)多總線(xiàn)接口需要,A0,和,A1,這兩個(gè)地址信號(hào),可由圖,11.11,所示的邏輯電路產(chǎn)生。這樣,由,A,2,~A,31,和,BE,0,~BE,3,就能形成了完整的,80X86CPU,的,32,條地址線(xiàn)。,,11,,圖,11.11,11.3 32,位微處理器的工作方式,,實(shí)地址方式,(real mode),,保護(hù)方式,(protected mode),,可訪問(wèn),2,32,字節(jié)的物理存儲(chǔ)空間,段長(zhǎng)為,2,32,字節(jié),而且還可以實(shí)施保護(hù)功能,,虛擬,8086,方式,(virtual 8086 mode),,既能有效利用保護(hù)功能,又能執(zhí)行,8086,代碼的工作方式,,CPU,與保護(hù)方式下的原理相同,但程序指定的邏輯地址與,8086 CPU,解釋相同,,運(yùn)行和轉(zhuǎn)換的關(guān)系如圖,11.12,所示,,13,,圖,11.12,,當(dāng),CPU,進(jìn)行啟動(dòng)或復(fù)位時(shí)首先進(jìn)入實(shí)地址方式工作。修改控制寄存器,CR,0,的機(jī)器狀態(tài)字時(shí),就可以由實(shí)地址方式轉(zhuǎn)換到保護(hù)方式工作。再執(zhí)行,IRET,指令或進(jìn)行任務(wù)轉(zhuǎn)換,就可由保護(hù)方式轉(zhuǎn)移到虛擬,8086,方式工作。,,任務(wù)轉(zhuǎn)換功能是,32,位微處理器的特點(diǎn)之一,采用中斷處理,就可再把,CPU,從虛擬,8086,方式返回到保護(hù)方式,以及實(shí)地址方式。,,,15,,,在實(shí)地址方式運(yùn)行時(shí),,32,位微處理器就像一個(gè)速度很快的,8086 CPU,,但是,對(duì)某些指令,它也可擴(kuò)展為,32,位。,,保護(hù)方式提供了復(fù)雜的存儲(chǔ)器管理和處理器的特權(quán)級(jí)能力。在保護(hù)方式運(yùn)行時(shí),可實(shí)現(xiàn)任務(wù)的切換,即切換到虛擬,8086,方式,允許執(zhí)行,8086,的操作系統(tǒng)和應(yīng)用程序,使,32,位微處理器實(shí)現(xiàn)多任務(wù)和多用戶(hù)的目標(biāo)。,,,16,,11.4,實(shí)地址方式,,32,位微處理器復(fù)位或加電后即處于實(shí)地址方式。實(shí)地址方式具有與,8086,相同的特性,但允許訪問(wèn),32,位寄存器組。其尋址機(jī)制、存儲(chǔ)器訪問(wèn)范圍和中斷控制等都與,8086 CPU,相同。,,32,位微處理器中分段存儲(chǔ)器管理的工作原理。,,在實(shí)地址方式中默認(rèn)的操作數(shù)是,16,位數(shù),段的大小是,64KB,。則,32,位有效地址必須是比,0000FFFFH,小的值。,,為了使用,32,位寄存器和尋址方式必須用超越前綴。,,實(shí)地址方式尋址方法如圖,11.13,所示。,,,17,,圖11.13,,實(shí)地址方式的首要目的是安排,32,位微處理器進(jìn)入保護(hù)方式。,,在實(shí)地址方式運(yùn)行時(shí),最大的存儲(chǔ)器訪問(wèn)范圍是,1MB,。因此,僅,A,0,~A,19,地址線(xiàn)有效,,A,20,~,A,31,地址線(xiàn)是高電平。,,19,,,在實(shí)地址方式運(yùn)行時(shí),不允許分頁(yè),物理地址是由相應(yīng)的段寄存器內(nèi)容:左移,4,位;再加上指定的偏移量而形成。與,8086 CPU,相同。,,在實(shí)地址方式中,存儲(chǔ)器內(nèi)保留兩個(gè)固定的區(qū)域,即系統(tǒng)初始化區(qū)和中斷向量表。,FFFFFFF0H,~,FFFFFFFFH,為系統(tǒng)初始化保留區(qū),,C0000H,~,003FFH,為中斷向量表,對(duì),256,級(jí)中斷的每一級(jí)都有一個(gè)相應(yīng)的,4,字節(jié)跳轉(zhuǎn)向量。,,20,,11.4.1 32,位微處理器的地址空間,,3,種不同方式的地址空間,,邏輯空間、線(xiàn)性空間和物理空間。,,可以訪問(wèn),2,32,字節(jié)的物理存儲(chǔ)器,但它支持多個(gè)任務(wù)時(shí),每個(gè)任務(wù)又能得到最大為,2,46,字節(jié)。,,這就出現(xiàn)了,2,32,字節(jié)的物理存儲(chǔ)器如何去分配給多個(gè)任務(wù)的存儲(chǔ)器管理問(wèn)題。,,物理存儲(chǔ)器是,CPU,可訪問(wèn)的存儲(chǔ)器空間,其容量由,CPU,的地址總線(xiàn)寬度所決定;而虛擬存儲(chǔ)器是程序占有的空間,它的容量是由,CPU,內(nèi)部結(jié)構(gòu)所決定。,,段部件將邏輯地址空間轉(zhuǎn)換為,32,位的線(xiàn)性地址空間。如果不使用分頁(yè)部件,則,32,位線(xiàn)性地址就對(duì)應(yīng)著物理地址。分頁(yè)部件能將線(xiàn)性地址空間轉(zhuǎn)換為物理地址空間。,,21,,,對(duì)于,8086 CPU,來(lái)說(shuō),程序占有的存儲(chǔ)器與,CPU,可以訪問(wèn)的存儲(chǔ)器是一致的,其容量都是,1MB,。,,對(duì),32,位微處理器來(lái)說(shuō),物理存儲(chǔ)器與虛擬存儲(chǔ)器是有區(qū)別的,其容量也不同。用戶(hù)在寫(xiě)程序時(shí),其程序是存在磁盤(pán)里,因此可寫(xiě),2,46,字節(jié)的程序。然而,在執(zhí)行程序時(shí),一定要把程序加載到物理存儲(chǔ)器。但是,物理存儲(chǔ)器的容量只有,2,32,字節(jié)。因此,存在著物理存儲(chǔ)器的如何分配問(wèn)題,即存儲(chǔ)器管理。這種存儲(chǔ)器管理是由操作系統(tǒng)進(jìn)行,但,32,位微處理器內(nèi)部固件就有支持存儲(chǔ)器管理的功能。,,我們?cè)趯?duì)程序進(jìn)行編碼時(shí),不可能直接指定物理存儲(chǔ)器地址。這時(shí),程序占有的是虛擬存儲(chǔ)器地址。該地址是由程序指定,所以也叫做“邏輯地址”。,,22,,,32,位微處理器中程序占有的虛擬存儲(chǔ)器如圖,11.14,所示。,,它與,8086 CPU,相同,程序可以是有多段構(gòu)成的。,,圖,11.14,只表示了一個(gè)有,OMEGA,變量,(,位置,),的數(shù)據(jù)段。在程序中,OMEGA,的虛擬存儲(chǔ)器地址由邏輯地址所決定。,,,23,,圖11.14,,例如,要把,AL,寄存器內(nèi)容傳送到這個(gè)位置,就要采用如下指令:,,,MOV FS,:,OMEGA,,,AL,,FS,:,OMEGA,是名為,OMEGA,的虛擬存儲(chǔ)器地址的邏輯地址格式。,,像,8086 CPU,那樣,,OMEGA,是存入該段的開(kāi)始地址到,OMEGA,位置的偏移量中。,,在,8086 CPU,中,段寄存器,FS,是段基地址;而在,32,位微處理器中,則是段選擇器。段選擇器的作用是間接地來(lái)指定段。,,25,,,用程序來(lái)處理的所有地址都是以邏輯地址格式指定的虛擬地址。,,32,位微處理器實(shí)際使用的,FS,寄存器是其中的高,14,位。,,因此,虛擬地址共可有,46,位,虛擬存儲(chǔ)器地址的空間范圍也就是,2,46,字節(jié)。,,26,,,32,位微處理器對(duì)程序指定的,46,位虛擬地址又是怎樣變換成為,32,位物理地址的呢,?,,在,32,位微處理器里有了一個(gè)“分段部件”,如圖,11.15,所示。,,它能把,46,位虛擬地址變換成為,32,位物理地址。,,,27,,圖11.15,,也可用,8086 CPU,中邏輯地址變換為物理地址的方法來(lái)理解,32,位微處理器的變換,如圖,11.16,所示。,,29,,圖11.16,,在,8086 CPU,中,段寄存器的內(nèi)容就是段的基地址,為了換算成起始地址,把它左移,4,位,(×16),即可。但對(duì),32,位微處理器,用,16,位段選擇器變換成為,32,位段地址就比較復(fù)雜。,,32,位,CPU,的選擇器寄存器共有,16,位,除上述高,14,位作為虛擬存儲(chǔ)器地址空間外,其最后兩位是請(qǐng)求保護(hù)特權(quán)級(jí),(RPL),。,,31,,11.4.2,描述符表,,在,32,位微處理器里,由虛擬地址變換為物理地址時(shí)需要用描述符表。,,描述符表與程序一起保存在虛擬存儲(chǔ)器中,程序執(zhí)行時(shí)都要裝入物理存儲(chǔ)器。,,在描述符表里描述符記載的僅是程序段數(shù),如圖,11.17,所示。,,描述符長(zhǎng)度由,8,個(gè)字節(jié)組成。它記載著段的起始地址、大小和屬性。,,CPU,根據(jù)虛擬地址的選擇器從描述符表選定一個(gè)描述符,讀取存于其描述符中的起始地址等參數(shù),進(jìn)行虛擬地址到物理地址的變換。,,32,,圖11.17,,32,位微處理器為了讀取描述符中的起始地址,一定先要知道描述符的物理地址。所以,在,CPU,中有描述符表寄存器,其中存有描述符表的起始地址。計(jì)算的方法如下:,,(,選擇器中高,13,位數(shù),)×8+(,描述符表的起始地址,)=,,描述符的物理地址,,其中,乘以,8,是因?yàn)槊枋龇?8,個(gè)字節(jié)組成。,,利用選擇器,從描述符表可以找到段的起始地址,也稱(chēng)為段基地址??梢哉f(shuō),選擇器的功能是用間接方法指定段的基地址,也可理解為選擇器在確定段地址時(shí),起到索引的作用。,,如上所述,,32,位微處理器的軟件在執(zhí)行時(shí)需要有把虛擬地址變換為物理地址的描述符表,而,8086 CPU,的代碼里不包含描述符表,因此,在保護(hù)方式時(shí)軟件不可能執(zhí)行。,,,34,,,操作系統(tǒng)的存儲(chǔ)器管理工作是包括段起始地址的管理,可以以段為單位把程序分配到物理存儲(chǔ)器。而,32,位微處理器的作用是根據(jù)描述符表把程序指定的虛擬地址變換為物理地址,它起到支持存儲(chǔ)器管理的功能。,,在,32,位微處理器中虛擬地址用以下格式表示:段寄存器:偏移量,例如:,,,FS,:,OMEGA,,FS,:,OMEGA,所表示的地址是虛擬存儲(chǔ)器中某位置的地址,不是實(shí)際物理地址,是虛擬地址,也稱(chēng)為邏輯地址。,,35,,11.4.3,段寄存器,,32,位微處理器是根據(jù)描述符表實(shí)現(xiàn)把虛擬地址變換成物理地址。訪問(wèn)描述符表就要花費(fèi)時(shí)間,使,CPU,速度降低。采用段寄存器來(lái)替代描述符表。,,32,位微處理器的段寄存器要比,8086 CPU,中復(fù)雜得多。它由,16,位選擇器寄存器與,64,位描述符寄存器構(gòu)成,描述符寄存器中內(nèi)容是復(fù)制記載在描述符表中的描述符。,,因?yàn)橹挥?CS,,,SS,,,DS,,,ES,,,FS,和,GS 6,個(gè)選擇器寄存器,所以也只能復(fù)制,6,條描述符,如圖,11.18,所示。,,36,,圖11.18,,CPU,把虛擬地址變換成物理地址變成為訪問(wèn)存儲(chǔ)器,實(shí)際上訪問(wèn)描述符寄存器,也就等于訪問(wèn)了描述符表,所以速度很快。,,例如:,,,MOV AH,,,FS,:,OMEGA,,把,FS,:,OMEGA,的虛擬地址變換成物理地址時(shí),要訪問(wèn),FS,描述符寄存器,使用保存在描述符寄存器中的段起始地址,如圖,11.19(a),所示。,,38,,圖11.19,,例,11.2,,PUSH EAX,,把,EAX,的內(nèi)容壓入堆棧,SS,:,ESP,的虛擬地址,但是存入,SS,描述符寄存器中的段起始地址加上,ESP,寄存器中內(nèi)容,(,偏移量,),形成物理地址如圖,11.19(b),所示。,,40,,11.4.4,描述符,,描述符的作用是描述段,由,8,個(gè)字節(jié)組成,如圖,11.20,所示。,,圖11.20,,41,,,其中,20,位記載段的大小,它等于段字節(jié)數(shù)減,1,,同時(shí)也限制各邏輯段的長(zhǎng)度不超過(guò),64KB,;,,32,位記載段的起始地址;,,8,位記載訪問(wèn)權(quán)字節(jié),用來(lái)定義該段的有關(guān)特性;,,還記載有,G,位,,D,位,,U,位和,1,位預(yù)約位。,,G,位為,0,時(shí),段的單位大小是,1,字節(jié);,,G,位為,1,時(shí),段的單位大小是,4KB,。,,因此,當(dāng),G,位為,0,時(shí),段的最大范圍是,1MB,;當(dāng),G,位為,1,時(shí),段的最大范圍是,4GB,。,,,42,,11.5,保護(hù)方式,,32,位微處理器的段寄存器從結(jié)構(gòu)到數(shù)據(jù)處理都比原來(lái)的要復(fù)雜得多,,為了多任務(wù)操作系統(tǒng)的需要,微處理器必須要有一種對(duì)數(shù)據(jù)處理有更為可靠的運(yùn)行方式,即保護(hù)方式,,特權(quán)級(jí)、存儲(chǔ)器保護(hù)功能和分頁(yè)管理,,,43,,11.5.1 32,位微處理器的保護(hù)機(jī)制,,支持多任務(wù)操作系統(tǒng),,以,4,個(gè)特權(quán)級(jí)來(lái)隔離或保護(hù)各用戶(hù)及操作系統(tǒng),,不同等級(jí)的特權(quán)級(jí)不能訪問(wèn)所規(guī)定區(qū)域外的單元,,數(shù)據(jù)也不能寫(xiě)到禁止寫(xiě)入的段里。,,44,,1.,特權(quán)級(jí)及特權(quán)級(jí)規(guī)則,PL (protected level)——,特權(quán)級(jí)。,32,位微處理器在保護(hù)方式運(yùn)行時(shí),分為,4,個(gè)特權(quán)級(jí),,PL0,級(jí)是最高級(jí),,PL3,級(jí)是最低級(jí)。,,RPL——,請(qǐng)求特權(quán)級(jí)。由選擇符提供的特權(quán)級(jí)請(qǐng)求符。,RPL,由選擇符的最低兩位決定。,,DPL——,特權(quán)級(jí)描述符。一個(gè)任務(wù)可以訪問(wèn)的描述符。,DPL,由選擇符所訪問(wèn)權(quán)字節(jié)的第,5,和第,6,兩位決定。,,32,位微處理器提供的保護(hù)機(jī)制不是通過(guò)復(fù)雜的外部硬件,而是使用,CPU,內(nèi)部固件來(lái)實(shí)現(xiàn)。它主要包括分段保護(hù)及分頁(yè)保護(hù)。,,CPL——,當(dāng)前特權(quán)級(jí),是當(dāng)前正在執(zhí)行任務(wù)的特權(quán)級(jí)。它相當(dāng)于正執(zhí)行代碼段的優(yōu)先級(jí)。,CPL,由檢測(cè),CS,寄存器的最低兩位來(lái)決定。,,EPL——,有效特權(quán)級(jí),是,RPL,和,DPL,的最低特權(quán)級(jí)。因?yàn)檩^小的特權(quán)級(jí)值代表了較高的特權(quán)級(jí),因此,,EPL,是,RPL,和,DPL,兩者中數(shù)值較大的那個(gè)特權(quán)級(jí)。,,45,,保護(hù)方式的概念,,32,位微處理器用保護(hù)權(quán)等級(jí)來(lái)劃分計(jì)算機(jī)中的各類(lèi)軟件。,4,級(jí)特權(quán)在計(jì)算機(jī)中形成的保護(hù)體制如圖所示。,,內(nèi)部的,PL=0,,I/O,系統(tǒng)的,PL=1,,操作系統(tǒng)的,PL=2,,應(yīng)用軟件的,PL=3,,由,CPU,強(qiáng)制實(shí)施,,,46,,特權(quán)級(jí)的運(yùn)作規(guī)則,,存儲(chǔ)在特權(quán)級(jí)為,PL,段中的數(shù)據(jù),僅可由至少像,PL,同樣特權(quán)級(jí)上執(zhí)行的代碼來(lái)訪問(wèn)。,,具有特權(quán)級(jí)為,PL,的代碼段或過(guò)程可由與,PL,相同或低于,PL,特權(quán)級(jí)的任務(wù)來(lái)調(diào)用。,,47,,11.5.2,保護(hù)方式的尋址方法,,32,位微處理器的保護(hù)方式可以擴(kuò)大線(xiàn)性地址空間,從,4GB(2,32,字節(jié),),擴(kuò)大到,64MMB(2,46,字節(jié)或,64,萬(wàn)億字節(jié),),,可運(yùn)行虛擬存儲(chǔ)器程序。另外,保護(hù)方式提供了精巧復(fù)雜的內(nèi)存管理和硬件輔助的保護(hù)機(jī)構(gòu)。,,保護(hù)方式和實(shí)地址方式間的主要差別是增加了地址空間和一個(gè)不同的尋址機(jī)制,,48,,,邏輯地址由兩部分來(lái)形成,,一個(gè),16,位的選擇符用來(lái)確定段的起始地址,,一個(gè),32,位的偏移,,形成一個(gè),32,位線(xiàn)性地址,這個(gè)線(xiàn)性地址就叫做,32,位物理地址。,,在保護(hù)方式下,選擇符用來(lái)指定一個(gè)查找由操作系統(tǒng)定義的一個(gè)表所需的變址,如圖,11.22,所示。這個(gè)表包含一個(gè)已給段的,32,位起始地址。從這表中得到的起始地址加上偏移就得到物理地址。,,49,,圖11.22,11.5.3,分頁(yè),,分頁(yè)是另一種存儲(chǔ)器管理方式。,,與分段不同,分頁(yè)是把程序分為許多大小相同的頁(yè);而分段是將程序和數(shù)據(jù)模塊化,劃成可變長(zhǎng)度的段。,,所以,頁(yè)與程序的邏輯結(jié)構(gòu)沒(méi)有直接關(guān)系。在任何時(shí)刻,每個(gè)任務(wù)所需激活的“頁(yè)”是很少的。,,“分頁(yè)”提供一種另外的內(nèi)存管理機(jī)制,只有在保護(hù)方式下才起作用,分頁(yè)提供了一個(gè)管理,32,位微處理器非常大的段的方法。,,分頁(yè)的作用是在分段的基礎(chǔ)上進(jìn)行的。,,分頁(yè)機(jī)制把來(lái)自分段單元保護(hù)線(xiàn)性地址轉(zhuǎn)換為一個(gè)物理地址,如圖,11.23,給出了在允許分頁(yè)條件下,32,位微處理器的尋址機(jī)制。,,51,,圖11.23,1.,分頁(yè)部件的結(jié)構(gòu),32,位微處理器用兩級(jí)表形式,在分頁(yè)部件中把線(xiàn)性地址轉(zhuǎn)換成物理地址。其工作機(jī)制如圖,11.24,所示。,,,53,,圖11.24,,由,3,部分組成,,頁(yè)目錄,,頁(yè)表,,頁(yè)面,,每一頁(yè)面的長(zhǎng)度均為,4K,。,,CR,2,是頁(yè)面故障線(xiàn)性地址寄存器,保存最近一次頁(yè)面故障的地址,(32,位線(xiàn)性地址,),。,,CR,3,是頁(yè)目錄物理基地址寄存器,存有頁(yè)目錄的物理起始地址。,,CR,3,中的低,12,位總為,0,,以保證頁(yè)目錄始終按頁(yè)面界對(duì)齊。,,55,,2.,頁(yè)目錄,頁(yè)目錄長(zhǎng)度為,4KB,。,,每一個(gè)頁(yè)目錄條目為,4,字節(jié),其內(nèi)容如圖,11.25(a),所示。,,頁(yè)目錄總共可容納,1024,個(gè)頁(yè)目錄條目。,,線(xiàn)性地址的高,10,位,(A,22,~,A,31,),用作要選取頁(yè)目錄條目的變址。,,56,,3.,頁(yè)表,頁(yè)表長(zhǎng)度也為,4KB,。,,每一個(gè)頁(yè)表?xiàng)l目為,4,字節(jié),其內(nèi)容如圖,11.25(b),所示。,,頁(yè)表總共也可容納,1024,個(gè)頁(yè)表?xiàng)l目,其地址,A,12,~,A,21,位用于在,1024,個(gè)頁(yè)表?xiàng)l目中選擇其一的變址。,,頁(yè)表?xiàng)l目中的高,20,位是頁(yè)面地址,把頁(yè)面地址加上線(xiàn)性地址的低,12,位,(,偏移,),就是分頁(yè)部件所得到的物理地址。,,57,,圖11.25,4.,頁(yè)面級(jí)保護(hù),兩級(jí)保護(hù),,用戶(hù)級(jí)保護(hù):相當(dāng)于分段機(jī)制保護(hù)的第,3,級(jí),,管理級(jí)保護(hù):相當(dāng)于,0,,,1,,,2,級(jí)。,,在頁(yè)表?xiàng)l目,(,見(jiàn)圖,11.25(b)),中的第,1,位,(R/W),和第,2,位,(U/S),可用來(lái)保護(hù)該頁(yè)面,,在頁(yè)目錄條目,(,見(jiàn)圖,11.25(a)),中的第,1,位,(R/W),和第,2,位,(U/S),可用來(lái)保護(hù)頁(yè)目錄中所包括的全部頁(yè)面。,,59,,,例如,在頁(yè)目錄條目中,其,U/S,和,R/W,位是,10,,而在頁(yè)表?xiàng)l目中,其,U/S,和,R/W,位是,01,;這時(shí),對(duì)頁(yè)的訪問(wèn)權(quán)應(yīng)在頁(yè)表?xiàng)l目中和頁(yè)目錄條目中取最大限制的,U/S,和,R/W,值來(lái)尋址該頁(yè),也就是這兩數(shù)值中的小者,即,01,。,,,60,,11.6,虛擬,8086,方式,,運(yùn)行,8086,應(yīng)用程序,,實(shí)地址方式,,虛擬,8086,方式,(,虛擬方式,),,虛擬方式為系統(tǒng)設(shè)計(jì)者提供了最大的靈活性。,,在虛擬方式下,可以盡量利用,32,位微處理器的保護(hù)機(jī)構(gòu)。,,尤其是允許同時(shí)執(zhí)行,8086,的操作系統(tǒng)及其應(yīng)用程序和,32,位微處理器操作系統(tǒng)的應(yīng)用程序。,,在一個(gè)多用戶(hù)的,80X86,計(jì)算機(jī)中,一個(gè)用戶(hù)可以運(yùn)行,Windows,版本,另一個(gè)用戶(hù)可以使用,MS-DOS,,而第,3,個(gè)用戶(hù)則可以運(yùn)行多個(gè),Unix,資源及其應(yīng)用程序等。,,在這種環(huán)境下的每一個(gè)用戶(hù)就好像完全擁有該計(jì)算機(jī)資源,如圖,11.26,所示。,,61,,圖11.26,1.,虛擬,8086,方式的尋址機(jī)制,實(shí)地址方式與保護(hù)方式的一個(gè)主要差別:對(duì)段選擇字的不同解釋。,,虛擬,8086,方式,段寄存器與實(shí)地址方式是一樣的。段寄存器的內(nèi)容左移,4,位后與偏移量相加形成段基本線(xiàn)性地址。,,32,位微處理器允許操作系統(tǒng)在每一個(gè)任務(wù)內(nèi)指定哪些程序使用,8086,方式的地址機(jī)構(gòu),哪些程序則使用保護(hù)方式尋址。,,利用分頁(yè),可以把虛擬方式任務(wù)的,1MB,地址空間映射到,32,位微處理器的,4GB,線(xiàn)性地址空間的任一空間中去。,,有效地址不能超出,64KB,。然而,這些限制并不是很重要的,因?yàn)榇蠖鄶?shù)在虛擬,8086,方式下運(yùn)行的程序是目前已有的,8086,應(yīng)用程序。,,63,,2.,虛擬,8086,方式下的分頁(yè),分頁(yè)硬件允許同時(shí)運(yùn)行多個(gè)虛擬任務(wù),并提供保護(hù)及操作系統(tǒng)隔離。,,運(yùn)行虛擬方式任務(wù)不一定要采用分頁(yè),但是對(duì)于運(yùn)行多個(gè)虛擬任務(wù)或把虛擬方式任務(wù)的地址重新分配到大于,1MB,的物理地址空間上時(shí)需要分頁(yè)部件。,,分頁(yè)機(jī)制把虛擬方式的程序產(chǎn)生的,20,位線(xiàn)性地址分成,256,個(gè)頁(yè)面。,,每一頁(yè)面可以安排在,32,位微處理器,4GB,物理地址空間的任何位置上。,,64,,,由于是通過(guò)一個(gè)任務(wù)的切換來(lái)裝載,CR,3,(,頁(yè)檢索基址寄存器,),的,所以每一個(gè)虛擬方式下的任務(wù)可以利用不同的映射方式把頁(yè)面映射到不同的物理地址上。,,分頁(yè)機(jī)制允許多個(gè),8086,應(yīng)用程序共享,8086,操作系統(tǒng)。,,圖,11.26,表示了,32,位微處理器分頁(yè)部件能使多個(gè),8086,程序在虛擬存儲(chǔ)器的情況下運(yùn)行,這就要求分頁(yè)系統(tǒng)。,,65,,3.,虛擬,8086,方式下的保護(hù),所有的虛擬,8086,方式程序都是在特權(quán)級(jí),3,下運(yùn)行的,這是最低特權(quán)級(jí)。,,虛擬,8086,方式程序要服從所有的保護(hù)方式所定義的保護(hù)檢查,,這與實(shí)地址方式不同,它是在特權(quán)級(jí),0,下執(zhí)行的,這是最高的特權(quán)級(jí),,在虛擬,8086,方式下,要想執(zhí)行一條賦予了特權(quán)級(jí)的指令會(huì)導(dǎo)致系統(tǒng)故障。,,66,,,有些特權(quán)級(jí)的指令,它們僅可在特權(quán)級(jí),0,下執(zhí)行的。,,要想使這些指令在虛擬,8086,方式下,(,或當(dāng),CPL>0),執(zhí)行將導(dǎo)致系統(tǒng)故障。,,對(duì)于應(yīng)用于多任務(wù)方式和保護(hù)方式的指令,只能在保護(hù)方式中執(zhí)行。,,要想使下面的指令在實(shí)地址方式或虛擬,8086,方式下執(zhí)行會(huì)產(chǎn)生系統(tǒng)故障。,,67,,4.,中斷處理,虛擬,8086,方式中的中斷是在一個(gè)獨(dú)特的方式中進(jìn)行處理的。,,當(dāng)在虛擬方式中運(yùn)行時(shí),所有的中斷都包括一個(gè)返回主,32,位微處理器操作系統(tǒng)的特權(quán)級(jí)變化。,,中斷是來(lái)自保護(hù)方式應(yīng)用程序還是虛擬方式程序是由,32,位微處理器操作系統(tǒng)通過(guò)檢查放在堆棧中的,EFLAGS,的映像中的,VM,位來(lái)加以確定的。,,68,,5.,線(xiàn)性地址變換成物理地址,在保護(hù)方式尋址時(shí),存儲(chǔ)器用分頁(yè)方式管理。,,把,1234056H,的線(xiàn)性地址變換為物理地址的實(shí)例如圖,11.27,所示。,,CR,3,寄存器內(nèi)存有頁(yè)目錄的物理地址,(5000H),。線(xiàn)性地址的,31,~,22,位,(12H),作為頁(yè)目錄的索引使用。將索引乘以,4,即,4×12H,,得到頁(yè)目錄項(xiàng)的偏移量。因此,頁(yè)目錄項(xiàng)的物理地址為,5048H,。,,69,,圖11.27,,求得的頁(yè)表的物理地址的,31,~,12,位,存入頁(yè)目錄項(xiàng),31,~,12,位,這頁(yè)目錄項(xiàng)的內(nèi)容為,0000BH,。,,線(xiàn)性地址的位,21,~,12(34H),為頁(yè)表的索引使用,與頁(yè)目錄項(xiàng)相同,求得頁(yè)表登記項(xiàng)的物理地址為,0B0D0H,。,,頁(yè)表項(xiàng)內(nèi)容的位,31,~,12(3000H),是物理存儲(chǔ)器的頁(yè)地址的位,31,~,12,。把作為線(xiàn)性地址的位,11,~,0(56H),的偏移量與頁(yè)地址相加,就形成物理地址,(3000056H),。,,71,,,上例說(shuō)明如何把段部件輸出的,4834056H,的線(xiàn)性地址由頁(yè)部件換算為,3000056H,的物理地址。,,計(jì)算物理地址時(shí),利用了存入物理存儲(chǔ)器的頁(yè)目錄與頁(yè)表。,,圖,11.27,中只畫(huà)出一個(gè)頁(yè)表,但頁(yè)表數(shù)最大為,1K,個(gè)。,,,72,,,操作系統(tǒng)通過(guò)對(duì)項(xiàng)目與頁(yè)表內(nèi)容的管理,把,2,32,字節(jié)的物理存儲(chǔ)器以頁(yè)為單位分配給每個(gè)任務(wù),每個(gè)任務(wù)擁有,2,46,字節(jié)的程序,并進(jìn)行管理。,,CPU,的頁(yè)管理部件由頁(yè)目錄與頁(yè)表把線(xiàn)性地址變換為物理地址。,,73,,11.7 80486,位微處理器的特點(diǎn)簡(jiǎn)介,除了有一般,32,位微處理器的保護(hù)功能、存儲(chǔ)器管理功能、任務(wù)轉(zhuǎn)換功能、分頁(yè)功能和片內(nèi)高速緩存器外,還具有浮點(diǎn)數(shù)運(yùn)算部件。因此,在計(jì)算機(jī)系統(tǒng)內(nèi)不再需要數(shù)字協(xié)處理器,是一種完整的,32,位微處理器。,,能運(yùn)行,Windows, DOS, OS/2,和,UNIX V/386,等操作系統(tǒng),它與,Intel,公司的,80X86,系列的各種微處理器保持二進(jìn)制兼容。,,具有完整的,RISC,內(nèi)核,使得常用的指令執(zhí)行時(shí)間都只要一個(gè)時(shí)鐘周期。,,采用,8KB,統(tǒng)一的代碼和數(shù)據(jù),cache(,高速緩沖存儲(chǔ)器,),,具有,160MB/s,的突發(fā)總線(xiàn),保證在整機(jī)中采用了廉價(jià)的,DRAM(,動(dòng)態(tài),RAM),能達(dá)到較高的系統(tǒng)流通量。,,內(nèi)部的自測(cè)試功能包括執(zhí)行代碼和訪問(wèn)數(shù)據(jù)時(shí)的斷點(diǎn)陷阱,會(huì)廣泛地測(cè)試片上邏輯、,cache,和分頁(yè)轉(zhuǎn)換,cache,。,,74,,11.8 Pentium,微處理器,,有兩組算術(shù)邏輯單元,(ALU),、兩條流水線(xiàn)、能同時(shí)執(zhí)行兩條指令;,,并且把數(shù)據(jù),cache(,高速緩沖存儲(chǔ)器,),和代碼,cache,分開(kāi);,,不僅提高了總線(xiàn)的速度;還將數(shù)據(jù)總線(xiàn)增加到,64,條;,,流水浮點(diǎn)部件提供了工作站的特性。,,因此它幾乎具有兩臺(tái),80X86,的功能。,,75,,11.8.1 Pentium,微處理器結(jié)構(gòu),,Pentium,微處理器的結(jié)構(gòu)方框如圖,11.28,所示。,,是一種雙,ALU,流水線(xiàn)工作的結(jié)構(gòu),使得每個(gè)時(shí)鐘周期可執(zhí)行兩條指令;并且把代碼,cache,和數(shù)據(jù),cache,分開(kāi),減少了,cache,的沖突。,,內(nèi)部是由總線(xiàn)部件、,cache,部件、代碼預(yù)取部件、指令譯碼部件、浮點(diǎn)數(shù)部件、頁(yè)部件、控制部件、執(zhí)行部件、分支目標(biāo)緩沖器等組成;其內(nèi)部數(shù)據(jù)總線(xiàn)為,64,位,同時(shí)可傳輸或處理,8,字節(jié)的數(shù)據(jù)。,,76,,圖11.28,11.8.2 Pentium,微處理器流水線(xiàn)的工作原理,微處理器流水線(xiàn)對(duì)指令操作一般分為以下,5,個(gè)步驟:,,① 預(yù)取,(PF),;,,② 指令譯碼,(D1),;,,③ 產(chǎn)生地址,(D2),;,,④ 執(zhí)行,ALU,和,cache,訪問(wèn),(EX),;,,⑤ 回寫(xiě),(WB),。,,以每個(gè)操作步驟均為,1,個(gè)時(shí)鐘周期的指令為例,其流水線(xiàn)工作過(guò)程如圖,11.29,所示。這種指令稱(chēng)為整數(shù)指令。,,Pentium,微處理器能支持并行執(zhí)行兩條指令。在并行執(zhí)行中也有,5,個(gè)流水操作步驟,它在流水線(xiàn)中執(zhí)行整數(shù)指令時(shí),即每一個(gè)步驟都只有一個(gè)時(shí)鐘周期,如圖,11.30,所示。,,78,,圖11.29,圖11.30,,Pentium,微處理器中的兩條流水線(xiàn)稱(chēng)為“,U”,和“,V”,流水線(xiàn)。,,并行發(fā)出兩條指令的過(guò)程稱(chēng)“配對(duì)”。,,當(dāng)指令配對(duì)時(shí),發(fā)到“,V”,流水線(xiàn)的指令總是發(fā)到“,U”,流水線(xiàn)這條指令后邊緊接著的一條指令。,,“,U”,流水線(xiàn)可以執(zhí)行,80X86CPU,結(jié)構(gòu)的任何指令,而“,V”,流水線(xiàn)執(zhí)行的只是簡(jiǎn)單的指令。,,所謂簡(jiǎn)單指令是指完全是由硬件實(shí)現(xiàn),不需任何代碼控制的指令。通常是在一個(gè)時(shí)鐘內(nèi)執(zhí)行完成一條整數(shù)指令。,,80,,11.8.3 Pentium,微處理器的數(shù)據(jù)總線(xiàn)和地址總線(xiàn),64,條數(shù)據(jù)總線(xiàn)是一般,32,位微處理器的一倍。這,64,條數(shù)據(jù)線(xiàn),D,0,~,D,63,是三態(tài)雙向數(shù)據(jù)線(xiàn)。,,它不采用,BS8,和,BS16,信號(hào)來(lái)改變數(shù)據(jù)總線(xiàn)的傳輸寬度,而是采用地址總線(xiàn)的接口電路來(lái)實(shí)現(xiàn),如圖,11.31,所示。,,32,位地址總線(xiàn)是用,29,條地址線(xiàn),A,3,~,A,31,加上,8,個(gè)字節(jié)允許符,BE,0,~,BE,7,來(lái)實(shí)現(xiàn)。,,地址總線(xiàn)提供內(nèi)存和,I/O,端口的物理地址。,32,位微處理器的物理尋址空間有,4GB,,即,2,32,字節(jié);而,I/O,地址空間只有,64KB,,即,2,16,字節(jié)。所以,,A,3,~,A,31,用來(lái)尋址到一個(gè),8,個(gè)字節(jié)的單元,而用,BE,0,~,BE,7,來(lái)標(biāo)識(shí)在當(dāng)前傳送操作中這,8,個(gè)字節(jié)單元的處理方法。,,64,位、,32,位、,16,位和,8,位存儲(chǔ)器尋址接口,如圖,11.32,所示。,,81,,圖11.31,圖11.32,11.8.4 Pentium,微處理器的存儲(chǔ)器結(jié)構(gòu),可以,64,位、,32,位、,16,位和,8,位的數(shù)據(jù)進(jìn)行訪問(wèn)。,,存儲(chǔ)器空間是按,64,位組成一個(gè)單位構(gòu)成的。每,64,位單元都有在存儲(chǔ)器地址上連續(xù)的,8,個(gè)獨(dú)立可尋址的字節(jié),如圖,11.33,所示。,,64,位存儲(chǔ)器構(gòu)成,4,字,(8,字節(jié),),陣列,,4,字的起始地址應(yīng)可被,8,除,所以可通過(guò),A,31,~,A,3,尋址。,,32,位存儲(chǔ)器構(gòu)成,2,字,(4,字節(jié),),陣列,雙字的起始地址應(yīng)可被,4,除,所以可通過(guò),A,31,~,A,3,和,A,2,對(duì)雙字尋址。,,16,位存儲(chǔ)器構(gòu)成字,(2,字節(jié),),陣列,字的起始地址應(yīng)可被,2,除,所以可通過(guò),A,31,~,A,3,和,A,2,、,A,1,對(duì)字尋址。,,,84,,圖11.33,11.8.5 Pentium,微處理器的分支預(yù)測(cè),用一個(gè)分支目標(biāo)緩沖器來(lái)預(yù)測(cè)分支指令的結(jié)果,,使得通過(guò)預(yù)取的指令順序所造成的流水拖延時(shí)間,減到最小。,,,,86,,11.8.7 Pentium,微處理器的外部中斷,外部中斷在指令邊界識(shí)別,指令邊界是指在指令流水線(xiàn)的執(zhí)行步驟中的第,1,個(gè)工作時(shí)鐘周期,即意味著在指令執(zhí)行之前。,,外部中斷優(yōu)先級(jí)自高到低的次序?yàn)椋?,BUSCHK——,總線(xiàn)檢查輸入;,,R/S——,異步中斷輸入;,,FLUSH——cache,清洗;,,SMI——,系統(tǒng)管理中斷;,,INIT——,啟動(dòng)中斷;,,NMI——,非屏蔽中斷;,,INTR——,可屏蔽中斷。,,87,,11.8.8 Pentium,微處理器的浮點(diǎn)數(shù)部件,預(yù)取,(PF),。,,指令譯碼,(D1),。,,產(chǎn)生地址,(D2),。,,存儲(chǔ)器和寄存器讀,(EX),;轉(zhuǎn)換浮點(diǎn)數(shù)為外部存儲(chǔ)器數(shù)據(jù)格式,并進(jìn)行存儲(chǔ)器寫(xiě)操作。,,浮點(diǎn)執(zhí)行步驟,1(X1),;轉(zhuǎn)換外部存儲(chǔ)器格式為內(nèi)部浮點(diǎn)數(shù)數(shù)據(jù)格式并進(jìn)行寫(xiě)操作,把數(shù)放到浮點(diǎn)數(shù)寄存器堆中。,,浮點(diǎn)數(shù)執(zhí)行步驟,2(X2),。,,執(zhí)行舍入和寫(xiě)浮點(diǎn)數(shù)結(jié)果到寄存器堆,(WF),。,,錯(cuò)誤報(bào)告或修改狀態(tài)字,(ER),,88,,11.8.9 Pentium,微處理器的高速緩沖存儲(chǔ)器,集成有,16KB,至,64KB,的,cache,,數(shù)據(jù),cache,和代碼,cache,各為一半。這些,cache,對(duì)應(yīng)用軟件透明以維持與,80X86 CPU,結(jié)構(gòu)的兼容性。,,數(shù)據(jù),cache,完全支持,MESI (modified/ exclusive/ shared/invalid),回寫(xiě),cache,一致性協(xié)議。代碼,cache,具有固有的寫(xiě)保護(hù)以避免偶然的錯(cuò)誤。,,每,8KB,的,cache,構(gòu)成為兩路組相關(guān)。在每個(gè),cache,中有,128,組,每組包含,2,行,(,每行都有其自己的標(biāo)記地址,),。每,cache,行是,32,字節(jié)寬。,,數(shù)據(jù)和指令兩,cache,的替換是通過(guò),LRU,機(jī)構(gòu)管理,在每個(gè),cache,中每組需要一位。,,指令和數(shù)據(jù),cache,可以同時(shí)訪問(wèn),,89,,11.8.10 Pentium,微處理器初始化方式,先驅(qū)動(dòng),RESET,引腳有效,迫使它處于啟動(dòng)狀態(tài)。,,在,RESET,下降沿對(duì)自測(cè)試,(BIST),,功能冗余度檢測(cè)和三態(tài)測(cè)試模式進(jìn)行選擇。,,除了,RESET,引腳外,,Pentium,微處理器還有一個(gè)初始化引腳,(INIT),,它使處理器在不破壞內(nèi)部,cache,內(nèi)容或浮點(diǎn)狀態(tài)的情況下,從一已知狀態(tài)開(kāi)始執(zhí)行。,,,90,,,1.,加電,加電期間,當(dāng),V,CC,接近正常工作電壓時(shí),,RESET,必須建立,(,此時(shí),CLK,必須翻轉(zhuǎn),),。,,在,V,CC,和,CLK,達(dá)到它們規(guī)定的電氣特性后,,RESET,必須保持,1ms,。,,91,,2.,測(cè)試,當(dāng),RESET,從高到低變化時(shí)采樣,INIT,,,FLUSH,和,FRCMC 3,個(gè)輸入引腳,以便確定,CPU,以下是進(jìn)行自測(cè)試,或者進(jìn)入三態(tài)測(cè)試模式或功能冗余度檢測(cè)模式。,,,92,,3. RESET,和,INIT,RESET,和,INIT,兩引腳是用于以?xún)煞N不同的方式來(lái)復(fù)位,Pentium,微處理器。,,前者是當(dāng),Pentium,微處理器開(kāi)始加電時(shí),與,RESET,建立有關(guān)的“冷”或“加電”復(fù)位。,,后者是當(dāng)V,CC,和,CLK,維持在規(guī)定的操作界限內(nèi),與,RESET,或,INIT,建立有關(guān)的“熱”復(fù)位。,,觸發(fā),RESET,或,INIT,引腳迫使,Pentium,微處理器從地址,FFFFFFF0H,開(kāi)始執(zhí)行。,,可用物理存儲(chǔ)器頂部的,ROM,初始化系統(tǒng)。,,93,,課后作業(yè),,11.1,,11.2,,11.5,,,94,,