《微處理器》PPT課件
《《微處理器》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《微處理器》PPT課件(189頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第二章 微處理器,,,2.1 內(nèi)部結(jié)構(gòu) 2.2 寄存器組 2.4 工作模式 2.5 中斷與異常 2.6 存儲(chǔ)管理 2.7 多任務(wù)與多處理 2.8 高速緩存 2.9 引腳和功能 2.10 總線周期,本章學(xué)習(xí)目標(biāo),80486各部件的功能和相互關(guān)系,Pentium在體系結(jié)構(gòu)上的新特點(diǎn)。 32位CPU的寄存器以及和16位CPU的區(qū)別。 在保護(hù)模式下中斷和異常。 在實(shí)模式、保護(hù)模式和虛擬8086模式下存儲(chǔ)管理。 任務(wù)設(shè)置,任務(wù)轉(zhuǎn)換過(guò)程及檢查的內(nèi)容。 80486和Pentium高速緩存的結(jié)構(gòu)和功能。 80486和Pentium引腳的功能及差別。 80486和Pentium主要總線周期時(shí)序、總線狀態(tài)變化及區(qū)
2、別。,2.1 內(nèi)部結(jié)構(gòu),2.1.1 80486的內(nèi)部結(jié)構(gòu) 2.1.1 Pentium的內(nèi)部結(jié)構(gòu),2.1.1 80486的內(nèi)部結(jié)構(gòu),2.1.1 80486的內(nèi)部結(jié)構(gòu),BIU:與芯片總線、指令預(yù)取部件、Cache部 件相連,執(zhí)行總線訪問(wèn)請(qǐng)求。 讀:預(yù)取指令、讀內(nèi)存、Cache行填充 寫(xiě):寫(xiě)M和I/O、Cache通寫(xiě)寫(xiě)內(nèi)存;寫(xiě)緩沖(432b)。 指令預(yù)?。嚎偩€空閑時(shí)產(chǎn)生存儲(chǔ)器地址向Cache或通過(guò)BIU向內(nèi)存取16B代碼命中Cache放入32B的指令隊(duì)列中產(chǎn)生預(yù)取周期 跳轉(zhuǎn)、中斷、調(diào)子程時(shí)清空預(yù)取隊(duì)列。,2.1.1 80486的內(nèi)部結(jié)構(gòu),指令譯碼:從指令預(yù)取隊(duì)列取機(jī)器碼轉(zhuǎn)換成控制信號(hào)。 兩步譯碼:
3、指令執(zhí)行時(shí)要訪存,產(chǎn)生 總線 周期取存儲(chǔ)器操作數(shù)。 指令譯碼由機(jī)器碼產(chǎn)生對(duì)其 它處理部件的控制信號(hào)。 控制部件:對(duì)整數(shù)、浮點(diǎn)運(yùn)算和分段部件控制 整數(shù)部件:9個(gè)32位REG、1個(gè)64位桶形移位 器、ALU 。 1T內(nèi)完成整數(shù)傳送、加減運(yùn)算和邏輯操作,分段和分頁(yè)部件:進(jìn)行存儲(chǔ)器保護(hù)和虛存管理,FPU:增強(qiáng)80387,Cache:L1Cache:8KB 數(shù)據(jù)和指令Cache。 L2Cache:128KB256KB,邏輯地址,,分段,段Cache,2.1.1 80486的內(nèi)部結(jié)構(gòu),線性地址,,分頁(yè),TLB,物理地址,CPU,,64位,FPU,,64位,Cache,MEM,BIU,
4、,32位,,32位,成組傳送,L1Cache,,128b,命中,預(yù)取部件,,不命中,內(nèi)存,,,,未命中行填充,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),2.1.2 Pentium的內(nèi)部結(jié)構(gòu),8KB的指令Cache和8KB數(shù)據(jù)Cache 各自的TLB Cache和BIU的DB是64位 支持突發(fā)式總線周期和流水線總線周期,1. 哈佛結(jié)構(gòu)的Cache,預(yù)取順序請(qǐng)求 預(yù)取B1 線性預(yù)取 無(wú)分支 BTB預(yù)測(cè) 有分支 動(dòng)態(tài)分支預(yù)測(cè)算法 預(yù)取B2 預(yù)取分支后指令,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),,,,,,,,,,,,,,記錄分支地址,,,,,,一 個(gè) 工 作,從Cache或 內(nèi)
5、存預(yù)取指令,2. BTB和預(yù)取B,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),2. BTB和預(yù)取B,預(yù)取順序請(qǐng)求,,預(yù)取B1,,BTB預(yù)測(cè),,動(dòng)態(tài)分支預(yù)測(cè)算法,無(wú)分支,,有分支,,,,,線性預(yù)取,,,,預(yù)取分支后指令,預(yù)取B2,,,,,,紀(jì)錄分支地址,分支指令,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),指令 控制信號(hào) 預(yù)取B 指令譯碼器 CU IU、FPU 微碼 控制ROM IU(U、V流水線) 操作序列,,,,,,,,,3. 指令譯碼、控制ROM和CU,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),4. 超標(biāo)量體系結(jié)構(gòu)IU 超標(biāo)量處
6、理機(jī):1T內(nèi)同時(shí)發(fā)射多條指令,資源重復(fù),空間并行,提高指令執(zhí)行的平均速度。 超流水線處理器:1T內(nèi)分時(shí)發(fā)射多條指令,時(shí)間重迭,時(shí)間并行,提高指令執(zhí)行的平均執(zhí)行速度桶形移位器。 U流水線:地址生成、REG、ALU、數(shù)據(jù)Cache接口;整數(shù)或浮點(diǎn)指令/1T共享。 V流水線:地址生成、REG、ALU、數(shù)據(jù)Cache接口;簡(jiǎn)單整數(shù),F(xiàn)XCH/1T 5. 流水線式FPU 組成:控制器、 REGS 、加法器、乘法器、除法器、80位寬通道 速度:8級(jí)流水線,每T完成12個(gè)浮點(diǎn)運(yùn)算,快80486十倍以上,2.2 寄存器組,通用寄存器從16位 32位。 段寄存器仍為16位,增加2個(gè):FS、GS; 每
7、個(gè)段寄存器都有一個(gè)描述符寄存器。 32位EIP和EFLAGS。 增加了CR、DR、TR、系統(tǒng)地址寄存器和 Pentium的專用模型寄存器。,,2.2.1 通用寄存器,2.2.2 段寄存器和描述符寄存器,2.2.3 指令指針,IP:16位操作方式:實(shí)地址模式、虛擬8086模式。 EIP:32位操作方式:保護(hù)模式。 (E)IP保存下一條將要執(zhí)行的指令相對(duì)于段基址的偏移量。,2.2.4 標(biāo)志寄存器EFLAGS,32位中位1為1,位31位22,位15,位5,位3為0。 其它16位分為狀態(tài)標(biāo)志,控制標(biāo)志(DF)和系統(tǒng)標(biāo)志。 21 20 19 18 17 16 14 1312 11 10 9 8 7 6
8、4 2 0,2.2.5 控制寄存器,2.2.5 控制寄存器,MOV CRX,r32; MOV r32,CRX 1. CR0 控制或指示用于整個(gè)系統(tǒng)條件的標(biāo)志,低16位為MSW。 0 PE:保護(hù)模式允許 PE1 系統(tǒng)在保護(hù)模式下工作 PE0 系統(tǒng)在實(shí)地址模式工作,2.2.5 控制寄存器,1 MP:監(jiān)視協(xié)處理器 MP1并且TS1,WAIT指令發(fā)生異常7:協(xié)處理器不可用Fault。 2 EM:仿真協(xié)處理器(80386用80486以上FPU在片內(nèi))。 系統(tǒng)有FPU:EM0,MP1 系統(tǒng)無(wú)FPU:EM1,MP0 遇到ESC前綴的FDU指令,發(fā)生異常7。異常7程序:模擬ESC指令在無(wú)FPU時(shí)
9、執(zhí)行協(xié)處理器。 3 TS:任務(wù)轉(zhuǎn)換。任務(wù)切換完成,CPU自動(dòng)把TS置1。 若MP1,在遇到FPU opcode或Wait指令可正常工作。 任務(wù)轉(zhuǎn)換時(shí)未切換FPU的運(yùn)行狀態(tài),只是在新任務(wù)需要FPU時(shí)才進(jìn)行切換。,2.2.5 控制寄存器,4 ET:協(xié)處理器類型(僅對(duì)80386) ET1,F(xiàn)PU為與80387兼容的32位FPU。 ET0,F(xiàn)PU為與80386兼容的32位FPU。 上電時(shí)檢測(cè)80387的 引腳,設(shè)置ET。 軟件設(shè)置ET。 31 PG:頁(yè)管理使能 PG1 分頁(yè)存儲(chǔ)管理 線性地址 頁(yè)變換 物理地址。 PG0 無(wú)分頁(yè)管理 線性地址 物理地址。,,,,,2.2.5 控
10、制寄存器,以下各位對(duì)80486/Pentium有效 5 NE:數(shù)據(jù)錯(cuò)誤異??刂莆?NE1 數(shù)字錯(cuò)誤引起異常16,實(shí)現(xiàn)與80386兼容的數(shù)字異。 NE0 0,忽略數(shù)字異常。 1,CPU停止工作,等待由 。 產(chǎn)生的中斷模擬8087/80387的 。 16 WP:寫(xiě)保護(hù) WP1 核心代碼不能對(duì)用戶級(jí)頁(yè)面進(jìn)行改寫(xiě)。 WP0 核心代碼能夠?qū)τ脩艏?jí)只讀頁(yè)進(jìn)行改寫(xiě)。,,2.2.5 控制寄存器,18 AM:對(duì)齊標(biāo)志控制位 AM1 允許對(duì)齊檢查 CPU對(duì)齊檢查,非對(duì)齊 EFLAGS的AC1 時(shí),要產(chǎn)生異常17, CPL3的MEM操作 對(duì)齊檢查異常。 29 不通寫(xiě)
11、位 NW(Not Writethrough) NW0:允許通寫(xiě),既寫(xiě)Cache,又寫(xiě)內(nèi)存。 NW1,不許通寫(xiě)(此時(shí)CD1,Cache不使 能)。,,2.2.5 控制寄存器,30 CD:Cache不使能。 CD0,Cache使能。 CD1,Cache作廢 訪問(wèn)Cache未命中,則不填充Cache。 訪問(wèn)Cache命中,Cache仍可工作。 完全使Cache停止工作,要刷新Cache。 CD0,NW0,Cache才能正常工作,產(chǎn)生Cache的有效周期。 2. CR2:頁(yè)故障的線性地址。 CR0中PG1時(shí)CR2才有效 某頁(yè)不在內(nèi)存中,頁(yè)轉(zhuǎn)換時(shí)發(fā)生分頁(yè)錯(cuò)誤,這是CPU將缺頁(yè)的
12、線性地址保存在CR2中。,,2.2.5 控制寄存器,3. CR3:頁(yè)目錄表基址及頁(yè)級(jí)外Cache使能和寫(xiě)屬性。CR0中PG1時(shí)CR3才有效。 位4:頁(yè)外Cache不使能PCD位,控制使外部頁(yè)Cache是否工作的引腳PCD。 PCD1,對(duì)頁(yè)目錄不進(jìn)行外部高速緩存。 PCD0,對(duì)頁(yè)目錄進(jìn)行外部高速緩存。 PCD位驅(qū)動(dòng)CPUPCD引腳控制外部Cache工作。 位3:頁(yè)通寫(xiě)位PWT。 PWT1,外部Cache對(duì)頁(yè)目錄通寫(xiě),PWT0,回寫(xiě)。 PWT位驅(qū)動(dòng)CPUPWT引腳控制外部Cache工作 位31位12:當(dāng)前任務(wù)的頁(yè)目錄表基址。,2.2.5 控制寄存器,4. CR4:Pentium擴(kuò)充,位31位
13、7保留。 0 VME:虛擬8086模式擴(kuò)充。 VME=1,允許虛擬8086模式擴(kuò)充,即允許虛擬8086中斷,在VM8086下,VME=1,支持VIF。 1 PVI:保護(hù)模式虛擬中斷。 PVI=1,允許保護(hù)模式虛擬中斷。在保護(hù)模式下,VME=1,支持VIF。 2 TSD:禁止RDTSC指令,時(shí)間日期標(biāo)記禁止。 TSD=0,讀時(shí)間標(biāo)志計(jì)數(shù)器指令RDTSC可在任何特權(quán)級(jí)上執(zhí)行。 TSD =1,RDTSC僅在CPL=0的程序執(zhí)行,否則發(fā)生異常13,即RDTSC為特權(quán)指令。,2.2.5 控制寄存器,3 DE:允許調(diào)試擴(kuò)充(Debug Extensions)。 DE=1,允許支持I/O斷點(diǎn),I/
14、O斷點(diǎn)有效。 4 PSE:允許頁(yè)面大小擴(kuò)充。 PSE=1,允許采用4MB、2MB頁(yè)。 5 PAE:允許物理地址擴(kuò)充。 PAE=1,允許采用32位以上物理地址,否則 只用232物理地址。 6 MCE:允許機(jī)器檢查異常。 MCE=1,允許機(jī)器檢查異常功能有效。,2.2.6 系統(tǒng)地址寄存器,2.2.7 調(diào)試寄存器DR,CPL=0的代碼段MOV DRx,r32 MOV r32,DRx 1. 斷點(diǎn)寄存器:DR0DR3 每個(gè)寄存器存放一個(gè)斷點(diǎn)的線性地址。 斷點(diǎn)的發(fā)生條件由DR7分別設(shè)定。 2. 調(diào)試控制:DR7 (1)4個(gè)斷點(diǎn)發(fā)生的條件和訪問(wèn)類型。 (2)I/O斷點(diǎn)。 (3)精確斷點(diǎn)。
15、 (4)GD位使能由DR6.BD標(biāo)志的調(diào)試寄存器保護(hù)狀態(tài)。 GD位進(jìn)入調(diào)試異常處理程序時(shí)由CPU清0,這允許 處理程序任意訪問(wèn)調(diào)試寄存器。,2.2.7 調(diào)試寄存器DR,3. 調(diào)試狀態(tài):DR6 (1)B3B0:在DR、LEN、R/W中的條件為真,Bi置1,即使斷 點(diǎn)未被G或者L允許,說(shuō)明斷點(diǎn)已經(jīng)發(fā)生,不一定能夠進(jìn)入 調(diào)試異常程序。 (2)BD:下條指令將讀/寫(xiě)調(diào)試寄存器,而它們又被Intel在線仿 真器使用時(shí)置1,并發(fā)生異常1(一般檢測(cè)故障)。 (3)BS:為1表示異常1是由EFLAGS中TF1時(shí)單步陷阱引起的。 單步方式是最高優(yōu)先級(jí)的調(diào)試異常。當(dāng)BS1時(shí),
16、任何其他 調(diào)試狀態(tài)位也能被置。 (4)BT:為1表示因轉(zhuǎn)換到一個(gè)TSS中T1的任務(wù)而發(fā)生的異 常1。DR7中沒(méi)有允許/不允許這種異常的位。僅受TSS中T位 使能。,2.2.7 調(diào)試寄存器DR,4. DR4和DR5 當(dāng)CR4.DE0時(shí),Pentium用DR4和DR作為 DR6和DR7的別名寄存器。 當(dāng)CR4.DE1時(shí),引用DR4和DR5將產(chǎn)生未定義的操作的異常。,2.2.8 測(cè)試寄存器,TR0:未定義。 TR1:奇偶校驗(yàn)?zāi)婕拇嫫鳌?TR2:指令Cache結(jié)束位。 TR3、TR4、TR5:Cache數(shù)據(jù)、狀態(tài)、控制測(cè)試寄存器。 TR6、TR7:TLB命令,數(shù)據(jù)測(cè)試寄存器。
17、,2.2.9 Pentium模型專用寄存器,控制:可測(cè)試性、執(zhí)行跟蹤、性能檢測(cè)、機(jī)器檢查錯(cuò)誤。 R/W:用MOV指令直接訪問(wèn)其中TR會(huì)發(fā)生異常6,使用指令 RDMSR和WRMSR。,2.4 工作模式,Intel的32位微處理器有三種工作模式: 實(shí)地址模式 保護(hù)模式 虛擬8086模式。,2.4.1 實(shí)地址模式,1. 實(shí)模式的復(fù)位進(jìn)入 RESET=15T 當(dāng) 復(fù)位:350T400T,控制ROM和大部分隨機(jī)邏輯 當(dāng) RESET=78T 自測(cè)試:220T,然后復(fù)位 且 Pentium INIT 或 80486 AHOLD 或 80386,,,,,,,,,,,,,,,,
18、2.4.1 實(shí)地址模式,寄存器的狀態(tài) EDX 80486: 00000400分級(jí)ID Pentium:00000500分級(jí)ID CR0,0 1 1 0 0 0 1 0 0 0 0,2.4.1 實(shí)地址模式,2. Pentium復(fù)位和自測(cè)試啟動(dòng) (1)Pentium的復(fù)位方式,2.4.1 實(shí)地址模式,(2)REGS的狀態(tài) 見(jiàn)表2.4 (3)引腳的狀態(tài) 高電平: 低電平:HLPA、BREQ、BP3、BP2、PRDY、IBT、IU、IV、BT3BT0 高阻抗:D3D0、DP7DP0 未定義:A31A3、AP、 、PM0/BP0、PM1
19、/BP1、W/ 、M/ 、PCD、PWT、 、TDO、SCYC,PCHK,,2.4.1 實(shí)地址模式,(4)內(nèi)部自測(cè)試 時(shí)間:220 組成:硬件自測(cè)試和微代碼自測(cè)試 方法:對(duì)Cache、TLB和BTB進(jìn)行兩項(xiàng)陣列測(cè)試:原碼和補(bǔ)碼。 常數(shù)ROM測(cè)試:使用微代碼增加不同常數(shù),檢查結(jié)果值與存儲(chǔ)值是否相等。 復(fù)位結(jié)束時(shí),程序從FFFFFFF0H開(kāi)始執(zhí)行, 段間調(diào)用/轉(zhuǎn)移指令時(shí),轉(zhuǎn)到000FFFFFH以內(nèi)的地址。,2.4.2 保護(hù)模式,選擇符,,描述符,描述符的分類:,,段描述符 系統(tǒng)控制描述符,,數(shù)據(jù)段描述符 代碼段描述符,,堆棧段描述符 一般數(shù)據(jù)段描述符,,系統(tǒng)描述符
20、門(mén)描述符,,任務(wù)狀態(tài)段描述符 特殊系統(tǒng)段描述符,,任務(wù)門(mén)描述符 調(diào)用門(mén)描述符 中斷門(mén)描述符 陷阱門(mén)描述符,,,,,,,,,2.4.2 保護(hù)模式,1. 選擇符 2. 段描述符:數(shù)組、把邏輯地址變換成物理地址,定義MEM用法,控制轉(zhuǎn)移,切換任務(wù),2.4.2 保護(hù)模式,(1)段基址:段起始的32位線性地址 (2)段限長(zhǎng):20位限長(zhǎng)與G位共同計(jì)算 (3)G:G0 限長(zhǎng)單位為1B 限長(zhǎng)1MB 最大地址000FFFFFH。 G1 限長(zhǎng)單位為1P(4KB)限長(zhǎng)4GB 最大地址 FFFFFFFFH 表中20位段限長(zhǎng)值左移12位(即乘以212或1000H)加FFFH。 (4)D/B D 代碼
21、段:1 32位操作和尋址;0 16位操作和尋址。 B 數(shù)據(jù)段:1 32位數(shù)據(jù) ;0 16位數(shù)據(jù)。 堆棧段:1 32位堆棧操作,ESP ;0 16位堆棧操作,SP。 (5)訪問(wèn)權(quán)限:,2.4.2 保護(hù)模式,P 存在位:P1,段在內(nèi)存中;P0,段不在內(nèi)存中,訪問(wèn)該段引起異常。 DPL:描述符特權(quán)級(jí),該段被訪問(wèn)的特權(quán)級(jí),從0到3特權(quán)級(jí)降低。 S 描述符類型: S1,代碼段,數(shù)據(jù)段,堆棧段。 S0,系統(tǒng)控制,TSS、LDT、 門(mén)描述符。 E 段可行性: E1,代碼段,可執(zhí)行;E0,數(shù)據(jù)段,不可執(zhí)行。,2.4.2 保護(hù)模式,ED/C和W/R 數(shù)據(jù)段:ED W ED:擴(kuò)展方向
22、 ED0 向上 偏移量段限長(zhǎng)。 W:可寫(xiě)性 W0 不可寫(xiě);W1可寫(xiě) 代碼段:C R C(Confirming):C1 要證實(shí)代碼段,訪問(wèn)和被訪問(wèn)特 權(quán)級(jí)不總是相同; C0 非證實(shí)代碼段,訪問(wèn)和被訪問(wèn)特 權(quán)級(jí)總是相同 A(Accessed):訪問(wèn)過(guò) A1 段被訪問(wèn)過(guò);A0 段未被訪問(wèn)過(guò),2.4.2 保護(hù)模式,3. 系統(tǒng)描述符(與門(mén)描述符一起包含在系統(tǒng)控制和描述符中) 段基址、段限長(zhǎng)、G位和段描述符相同 訪問(wèn)權(quán)限字節(jié)不都相同,2.4.2 保護(hù)模式,2.4.2 保護(hù)模式,4. 中斷描述符(又稱門(mén)描述符),2.4.2 保護(hù)模式,P 門(mén)描述符符的
23、有效性:P1,有效;P0,無(wú)效 DPL:描述符特權(quán)級(jí) TYPE:4,6,7 286調(diào)用門(mén)、中斷門(mén)、異常門(mén) C,E,F(xiàn) 32位調(diào)用門(mén)、中斷門(mén)、異常門(mén) 5 任務(wù)門(mén) 字計(jì)數(shù):調(diào)子時(shí),須從調(diào)用程序級(jí)堆??截惖阶映碳?jí)堆棧去的參數(shù)個(gè)數(shù)(16/32棧分別指字/雙字個(gè)數(shù)),2.4.2 保護(hù)模式,選擇符和偏移量 對(duì)中斷、異常、調(diào)用門(mén)表示服務(wù)程序或子程的首址。 對(duì)于任務(wù)門(mén),偏移量無(wú)效,選擇符指向任務(wù)的TSS描述符。 TSSD時(shí)系統(tǒng)描述符:段線性基址、限長(zhǎng)和屬性 段線性基址和限長(zhǎng)確定TSS的位置和大小 中斷,異常,調(diào)用門(mén)中的選擇符選中某一個(gè)代碼段描述符代碼段D中的32位線性基 址門(mén)D中的32位偏移
24、量形成例程或子程的首地址。,2.4.2 保護(hù)模式,5. 描述符表,2.4.2 保護(hù)模式,2.4.2 保護(hù)模式,6. 保護(hù):特權(quán)級(jí)保護(hù)、存儲(chǔ)器保護(hù)、OS保護(hù) (1)特權(quán)級(jí)保護(hù):數(shù)據(jù)存儲(chǔ)、控制轉(zhuǎn)移、指令集的限制,軟件之 間實(shí)現(xiàn)隔離。 (最高) PL0 PL1 PL2 PL3 (最低) OS內(nèi)核 系統(tǒng)服務(wù) OS擴(kuò)展 App 特權(quán)級(jí)低的程序 允許向外提取數(shù)據(jù) 調(diào)用特權(quán)級(jí)高的過(guò)程,,,2.4.2 保護(hù)模式,特權(quán)級(jí) 32位微處理器采用4級(jí)特權(quán)級(jí),操作系統(tǒng)為0級(jí),系統(tǒng)服務(wù)為1級(jí),操作系統(tǒng)擴(kuò)展為2級(jí),用戶程序?yàn)?級(jí)。 CPL
25、:當(dāng)前代碼段具有的訪問(wèn)特權(quán)級(jí),CS中最低2位。通過(guò)描述符轉(zhuǎn)移控制到新代碼段時(shí),CPL改變。CPL0的任務(wù)能夠訪問(wèn)GDT及任務(wù)LDT中描述符對(duì)應(yīng)的數(shù)據(jù)段。 DPL:段被訪問(wèn)特權(quán)級(jí) 非證實(shí)代碼段 CPLDPL。 DPL0或LDT中描述符,CPL0的程序可訪問(wèn)。 DPL3,所有程序都可以訪問(wèn)。,2.4.2 保護(hù)模式,RPL:選擇符的特權(quán)級(jí),指向同一描述符的選擇 符可有不 同RPL對(duì)描述符指向段的訪問(wèn)須RPLIOPL時(shí),執(zhí)行I/O敏感執(zhí)令產(chǎn)生保 護(hù)異常13。 IN、OUT、INS、OUTS、STI、CLI和 LOCK前綴 EPL:有效特權(quán)級(jí) EPLMAX(CPL
26、、RPL),特權(quán)級(jí)檢查的原則 數(shù)據(jù)段:只允許同級(jí)和高級(jí)的代碼段訪問(wèn)。 代碼段:只允許向同級(jí)和更高級(jí)別的代碼段轉(zhuǎn)移控制。 堆棧段:其特權(quán)級(jí)和執(zhí)行代碼段相同,控制轉(zhuǎn)移時(shí)隨之變化 。 特權(quán)級(jí)檢查的規(guī)則 a. 讀/寫(xiě)數(shù)據(jù)類段規(guī)則 現(xiàn)行代碼段堆棧操作: CPLDPL 現(xiàn)行代碼段R/W數(shù)據(jù)段:CPL<=DPL,否則發(fā)生異常13。,2.4.2 保護(hù)模式,2.4.2 保護(hù)模式,b. 數(shù)據(jù)類段寄存器裝入規(guī)則 裝入堆棧段選擇符:CPLRPLDPL,否則發(fā)生異常12。 裝入數(shù)據(jù)類段選擇符:EPL=中斷/異常處理程序DPL 異常:異常門(mén)的DPL=CPL 通過(guò)門(mén)的段間調(diào)用:EPL=代碼段的DPL 任務(wù)
27、轉(zhuǎn)換時(shí),轉(zhuǎn)入任務(wù)的CPL<=任務(wù)門(mén)的DPL JMP:只能轉(zhuǎn)移到與CPL具有相同級(jí)的段 CALL:使用調(diào)用門(mén)把控制轉(zhuǎn)移到更高級(jí)代碼段 RET:把控制轉(zhuǎn)移到更低級(jí)代碼段,2.4.2 保護(hù)模式,d. IOPL規(guī)則 IO敏感指令:IN、OUT、INS、OUTS、STI、CLI和LOCK前綴 CPL<=IOPL TSS的I/O位圖允許,否則將發(fā)生異常13。 e. 特權(quán)級(jí)指令使用規(guī)則 僅CPL0的代碼段才能執(zhí)行如下特權(quán)指令,否則發(fā)生異常13。 CLTS、HLT、LGDT、LIDT、LLDT、LMSW、LTR; 涉及CR、DR、TR的MOV指令,RDMSR、WRMSR f. 頁(yè)訪問(wèn)規(guī)則 違反頁(yè)表項(xiàng)、頁(yè)
28、目錄項(xiàng)規(guī)定權(quán)限或訪問(wèn)不存在頁(yè)將發(fā)生異常14。,2.4.2 保護(hù)模式,(2)存儲(chǔ)器保護(hù) MOV、POP、LDS、LES、LFS、LGS、LSS指令將選擇符裝入DS、ES、FS、GS、SS; JMP、CALL、RET、IRET指令進(jìn)行段間轉(zhuǎn)移、更新CS時(shí) 保護(hù)檢查:段類型、R/W權(quán)限、段限長(zhǎng)、存在性。 段類型檢查 代碼段選擇符 CS 可寫(xiě)數(shù)據(jù)段選擇符 SS 可讀代碼段/數(shù)據(jù)段選擇符 DS、ES、GS、FS 讀寫(xiě)權(quán)限檢查 代碼段/只讀數(shù)據(jù)段不能寫(xiě) 不可讀代碼段不能讀 違反讀寫(xiě)權(quán)限將發(fā)生異常13,,,,2.4.2 保護(hù)模式,段限長(zhǎng)檢查 對(duì)數(shù)據(jù)段和代碼段,ED0,向上擴(kuò)
29、展,偏移量段限長(zhǎng); 堆棧段越限發(fā)生異常12,其它數(shù)據(jù)段越限發(fā)生異常13。 存在性檢查 將P0的段選擇符 SS,發(fā)生異常12; 將P0的段選擇符 其它段REG/中斷門(mén)/異常門(mén), 發(fā)生異常11; 訪問(wèn)的段無(wú)效(段選擇符為全0)時(shí),發(fā)生異常13; 訪問(wèn)的頁(yè)不在內(nèi)存時(shí),發(fā)生異常14。,,,2.4.2 保護(hù)模式,(3)對(duì)OS的保護(hù) 子程在要證實(shí)代碼段,用戶程序調(diào)用它時(shí),CPL不變化。 有效保護(hù)OS的數(shù)據(jù)結(jié)構(gòu)。 子程在非證實(shí)代碼段,用戶通過(guò)調(diào)用門(mén)進(jìn)入子程時(shí),CPL將提高到非證實(shí)代碼段的0級(jí)。用戶程序可以破壞未加保護(hù)的OS的數(shù)據(jù)結(jié)構(gòu),子程可以防止用戶程序?qū)S的破壞。 PROC FAR
30、MOV EBP,ESP EBP0處是EIP的值 MOV AX,WORD PTREBP4 ;0級(jí)堆棧中斷點(diǎn)處CS值取調(diào)用者的CPL ARPL SELECTOR-PARM,AX ;CPL與用戶傳給OS的指針選擇符RPL比較,使指針選擇符的RPL為兩者特權(quán)級(jí)低者 用戶傳給OS的指針中選擇符RPL與調(diào)用者段選擇符中的CPL比較取特權(quán)級(jí)低者。,2.4.2 保護(hù)模式,(4)保護(hù)模式下的轉(zhuǎn)子與返回 無(wú)任務(wù)轉(zhuǎn)換時(shí)段間調(diào)用的轉(zhuǎn)子與返回 CALL 段值:偏移量 子程的段選擇符值 段描述符中C 代碼段證實(shí)性 子程在證實(shí)代碼段,調(diào)子不改變CPL,段選擇符 子程段描述符
31、 子程在非證實(shí)代碼段,若CPLDPL,段選擇符 子程段描述符 若CPLDPL,段選擇符 調(diào)用門(mén)描述符 此時(shí)要進(jìn)行系列保護(hù)屬性檢查:調(diào)用非證實(shí)代碼段中更高級(jí)子程 序。,,,,,,,2.4.2 保護(hù)模式,現(xiàn)行程序CS,16位可見(jiàn)選擇符,不可見(jiàn)描述符 CPL,,,CALL選擇符,目標(biāo)段選擇符 RPL,,選擇符裝入CS并指向調(diào)用門(mén)(在GDT或LDT中),調(diào)用門(mén)描述符,可執(zhí)行段描述符,Selector Offset Offset DPL Count,,,,調(diào)用門(mén)是實(shí)現(xiàn)任務(wù)從CPL級(jí)到更高級(jí)的 間接控制轉(zhuǎn)換,它的目標(biāo)選擇符又裝入 CS,指向調(diào)用的代碼,Base Limit
32、Base Limit DPL Base,段描述符,它又被緩存。它的基址和 調(diào)用門(mén)中偏移量定位被調(diào)用的子程 入口地址,,,,,2.4.2 保護(hù)模式,調(diào)用門(mén)檢查 調(diào)用程序 CPL<=調(diào)用門(mén)DPL。 調(diào)用程序選擇符中RPL<=調(diào)用門(mén)DPL,否則發(fā)生異常13。 調(diào)用門(mén)中P1,否則發(fā)生異常11。 調(diào)用門(mén)不越限,否則發(fā)生異常13。 子程代碼段檢查,不合法時(shí)發(fā)生異常13。 選擇符非全0 描述符不越限 可執(zhí)行代碼段 選擇符中RPL<=DPL 子程的首址中新EIP不越限,2.4.2 保護(hù)模式,子程序堆棧段檢查 下列條件都要符合,否則發(fā)生異常10。 選擇符非全0;選擇符中RPL子程代碼段D
33、PL; 堆棧段DPL子程代碼段DPL;堆棧段為可寫(xiě)數(shù)據(jù)段。 下列條件都要符合,否則會(huì)發(fā)生異常12。 描述不越限;堆棧段須存在; 堆棧段地址空間=參數(shù)個(gè)數(shù)416B(32位模式) =參數(shù)個(gè)數(shù)48B(16位模式) CALL指令的堆棧操作 從TSS中取具有子程特權(quán)級(jí)的堆指針 SS:ESP,,2.4.2 保護(hù)模式,壓調(diào)用程序的: 全0 舊棧SS選擇符 舊棧ESP值 壓調(diào)用門(mén)中的: 參數(shù)1 “字計(jì)數(shù)” 。。。 參數(shù)M 壓調(diào)用程序的: 全0 斷點(diǎn)CS選擇符 斷點(diǎn)EIP 從調(diào)用門(mén)中取子程所在段選擇符 CS 子程
34、代碼段中DPL CS中CPL 子程代碼段偏移量 EIP RET m中m使參數(shù)個(gè)數(shù)的4倍,,,,,,,2.4.2 保護(hù)模式,2.4.3 虛擬8086模式,1. 虛擬8086模式與實(shí)模式的區(qū)別 虛擬8086模式是保護(hù)模式,可運(yùn)行多個(gè)OS 實(shí)模式是整個(gè)CPU的工作模式,CPU相當(dāng)快速8086 虛擬8086模式下各段特權(quán)級(jí)為3,執(zhí)行特權(quán)指令發(fā)生異常13; LIDT,LGDT,LMSW,CLTS,HLT,INVD,WBINVD,INVLPG及傳給CR、TR、 DR的MOV,RDMSR,WRMSR 都不能使用下列指令,否則發(fā)生異常6(非法操作碼) APRL,LAR,LSL,VERR,
35、VERW,STR,LTR,SLDT,LLST 在虛擬8086模式下,當(dāng)IOPL<3時(shí),執(zhí)行I/O敏感指令發(fā)生異常13 CLI,STI,PUSHF,POPF,INT n,IRET,帶LOCK的指令 在虛擬8086模式下,IOPL3,當(dāng)I/O位圖不允許時(shí),執(zhí)行I/O指令也發(fā)生異常13 IN,OUT,INS,OUTS 虛擬8086模式下,CR4.TSD0不允許執(zhí)行RDTSC,否則發(fā)生異常13,2.4.3 虛擬8086模式,2. 虛擬8086模式與保護(hù)模式的區(qū)別 (1)VM8086在形成20位線性地址與實(shí)模式一樣,不需要像保護(hù)模式那樣使用段描述符的基址和限長(zhǎng)及屬性 (2)各種描述表中不會(huì)有VM80
36、86的段描述符 3. 虛擬8086模式的進(jìn)入與退出 (1)32位CPU進(jìn)入虛擬8086模式 0級(jí)代碼段:EFLAGS.VM=1的堆棧映像,IRET把棧映像壓入EFLAGS和CS:IP。 任務(wù)轉(zhuǎn)換:32位新任務(wù):EFLAGS.VM=1(在高位字b17中) TSS保存的值裝入段寄存器:段基址,限長(zhǎng),屬性 (2)32位CPU退出虛擬8086模式 虛擬8086模式下的中斷/異常使CPU退出該模式:中斷/異常處理程序?yàn)?級(jí)保護(hù)模式代碼段,EFLAGS.VM = 0,,2.4.3 虛擬8086模式,任務(wù)轉(zhuǎn)換 32位新任務(wù):TSS中相應(yīng)項(xiàng)裝入EFLAGS VM0,表明新任務(wù)已退出虛擬
37、8086模式,2.4.4 工作模式的轉(zhuǎn)換,1. 實(shí)模式 保護(hù)模式 建立數(shù)據(jù)結(jié)構(gòu)和初始化GDTR,IDTR和TR CR0.PE1: MOV CR0,REG 進(jìn)入保護(hù)模式后:用CPL0的程序重裝段寄存器,,2.4.4 工作模式的轉(zhuǎn)換,2. 保護(hù)模式 實(shí)模式 CR0.PE0:MOV CR0,REG 保護(hù)模式下的分頁(yè)轉(zhuǎn)移過(guò)程 使線性地址、GDT,IDT映射到實(shí)模式;CR0.PG0;CR30, 清洗TLB 設(shè)CS段限長(zhǎng)為64KB,使GDT,IDT在1MB內(nèi) 選擇符裝入SS、DS、ES、FS、GS時(shí),段基址任意,描述符 中限長(zhǎng)64KB G0,E0,W1,P1 CLI屏蔽INTR,外部屏蔽NM
38、I CR0.PE0 遠(yuǎn)程JMP跳轉(zhuǎn)到實(shí)模式 LIDT指令裝實(shí)模式下中斷向量表的基址和限長(zhǎng) STI開(kāi)中斷 實(shí)模式下的代碼裝段寄存器,,2.5 中斷與異常,在程序正常執(zhí)行過(guò)程中,為了處理外部事件和報(bào)告錯(cuò)誤或異常狀態(tài)而中止現(xiàn)行程序的運(yùn)行,將CPU的控制權(quán)轉(zhuǎn)向處理程序,待處理完以后再繼續(xù)執(zhí)行被中斷程序的過(guò)程稱為中斷。 32位微處理器的中斷分為兩大類:中斷(Interrupt)和 異常(Exception).,2.5.1 中斷與異常的類型,中斷:由外部設(shè)備引起的異步事件(外中斷、硬 中斷) INTR:受TF影響(STI/CLI),由PIC接入 NMI:不受TF影響,處理器設(shè)有防止NMI的機(jī)制,
39、 系統(tǒng)可屏蔽,NMI服務(wù)程序由2號(hào)中斷描述 符確定,,,,2.5.1 中斷與異常的類型,異常:指令執(zhí)行期間,處理機(jī)響應(yīng)檢測(cè)的某種狀態(tài)的同步事件 微處理器檢測(cè)的異常(內(nèi)中斷、軟中斷) Trap:出現(xiàn)異常的指令后邊界檢測(cè),出現(xiàn)異常立即報(bào) 告,返回執(zhí)行下條指令。像INT n、INTO,單步. Fault:出現(xiàn)異常的指令前邊界檢測(cè),異常處理后的返 回地址是引起異常指令,可以重啟動(dòng)。 Abort:出現(xiàn)異常的指令無(wú)須精確定位,無(wú)法重啟 動(dòng),例如:將控制轉(zhuǎn)移到0號(hào)、10號(hào)、12號(hào)或13號(hào)異常時(shí)又發(fā)生一個(gè)異常, 為雙異常;硬件錯(cuò)。
40、 可編程的異常:INT 3、INTO、INT n、BOUND 指令引起異常、稱為軟中斷,處理器當(dāng)作異常處理,,,,,,,,0 Divide Error 除法錯(cuò)異常 DIV or IDIV指令的除法為0,F(xiàn)ault 商太大使目標(biāo)寄存器容納不下。 入 棧是指令的段值和指針,0號(hào)中斷是除法指令的一部分。 1 Debug Exceptions 調(diào)試異常 排錯(cuò)異常 Fault:DR中的斷點(diǎn)與代碼段中指令地址一致時(shí)發(fā)生的調(diào)試異常。 Trap:?jiǎn)尾綀?zhí)行 數(shù)據(jù)斷點(diǎn),I/O斷點(diǎn),任務(wù)轉(zhuǎn)換斷點(diǎn)引起調(diào)試Trap。,2.5.2 32位CPU的中斷與異常,2 NMI 非屏蔽中斷,響應(yīng)時(shí)直接轉(zhuǎn)入INT 2
41、處理程序,不受IF影響。 3 INT3 Breakpoint Instruction Trap 單字節(jié)斷點(diǎn)指令 斷點(diǎn)指令的操作碼是單字節(jié)。 調(diào)試程序裝斷點(diǎn):一條指令的第一個(gè)操作碼字節(jié)置換成斷點(diǎn)指令的操作碼(CCH)。 程序執(zhí)行到斷點(diǎn)處,INT3的執(zhí)行調(diào)用異常處理程序,返回地址應(yīng)是指向INT3指令后的指令的第一個(gè)字節(jié),但處理程序應(yīng)該在返回時(shí),把原被CCH置換出去的斷點(diǎn) 處指令的第一個(gè)操作碼字節(jié)再置換回來(lái),以便斷點(diǎn)處的指令能夠執(zhí)行。 INT3的作用: 16位處理器中用于設(shè)置指令斷點(diǎn); 32位CPU用調(diào)試寄存器設(shè)置指令斷點(diǎn)。 調(diào)用其它異常處理程序。
42、 設(shè)置比調(diào)試寄存器允許的更多的斷點(diǎn)。 置于開(kāi)發(fā)程序的源代碼中。,2.5.2 32位CPU的中斷與異常,4 INTO Overflow Trap 溢出中斷 溢出陷阱 OF1 INT 4 溢出中斷處理程序 INTO CPU要了解符號(hào)數(shù)的運(yùn)算是否發(fā)生了溢出 5 Bounds Check Fault 邊界檢查故障 執(zhí)行Bound指令的處理器發(fā)現(xiàn)操作數(shù)超越指令的界限 Bound r16,m16取指,訪存;Fault 頁(yè)故障。 有特殊格式的錯(cuò)誤碼 (1)CR0.PG=1,在線性地址轉(zhuǎn)換成物理地址時(shí)CPU檢測(cè)下列狀態(tài) 地址轉(zhuǎn)換所需的頁(yè)目錄項(xiàng)或頁(yè)表項(xiàng)中P
43、0,指示頁(yè)表或包含 操作數(shù)的頁(yè)不在物理存儲(chǔ)器 程序沒(méi)有足夠的特權(quán)訪問(wèn)指向的頁(yè) 用不適當(dāng)?shù)脑L問(wèn)類型訪問(wèn)一內(nèi)存頁(yè) (2)頁(yè)級(jí)保護(hù)違反引起異常,這時(shí) 頁(yè)目錄項(xiàng)中訪問(wèn)位A1 頁(yè)表項(xiàng)中訪問(wèn)位A1時(shí)是沒(méi)有頁(yè)級(jí)保護(hù)違反,2.5.2 32位CPU的中斷與異常, 頁(yè)故障錯(cuò)誤碼在堆棧上 P0,頁(yè)Fault由頁(yè)不在內(nèi)存引起,P1,頁(yè)故障是由頁(yè)級(jí)保護(hù)違反引起 W/R0,F(xiàn)ault由R操作,W/R1,F(xiàn)ault由W操作 U/S0,CPU在SuperVisor(0,1,2級(jí)),U/S1,CPU在用戶級(jí) (3)用32位線性地址裝入CR2引起異常 異常處理程序能用此地址定位相應(yīng)的頁(yè)目錄項(xiàng)和
44、頁(yè)表項(xiàng),在頁(yè)故障處理程 序執(zhí)行時(shí)發(fā)生了另一個(gè)頁(yè)故障,處理程序?qū)袰R2的內(nèi)容推向堆棧。 (4)頁(yè)故障是可以重新啟動(dòng)的異常,一旦引起頁(yè)故障的原因在處理程序中被排 除,即可由IRET返回,重新執(zhí)行產(chǎn)生過(guò)故障的指令。,2.5.2 32位CPU的中斷與異常,16 FloatingPoint Error CR0.NE=1,非屏蔽數(shù)的浮點(diǎn)異常將產(chǎn)生異常16。在執(zhí)行下一條非控制的的浮點(diǎn) 指令或WAIT指令。 CR0.NE=0 1 CPU在執(zhí)行下一條非控制浮點(diǎn)指令或WAIT指令前凍結(jié)系統(tǒng)外 部中斷(由響應(yīng) 引起的)帶出不管NE值,非屏蔽的數(shù)值
45、 異常而引起 0這時(shí)外部中斷能夠調(diào)用異常處理程序。 0,CPU將忽略數(shù)字異常。 數(shù)字異常處理的基本步驟 a.存FPU環(huán)境:控制、狀態(tài)和標(biāo)記字,操作數(shù)和指令指針。 b.清狀態(tài)字中的異常位。 c.如果是由于INTR、NMI、SMI異常屏蔽了中斷時(shí)使能它。 d.由存在環(huán)境中的狀態(tài)和控制字檢查標(biāo)識(shí)異常。 e.為糾正(rectify)異常進(jìn)行一些依賴系統(tǒng)的活動(dòng)。 f.返回被中斷的程序繼續(xù)正常執(zhí)行。,,,,2.5.2 32位CPU的中斷與異常,17 Alignment Check Fault (1)訪問(wèn)非對(duì)齊的操作數(shù)產(chǎn)生對(duì)齊檢查故障 地址能被2整除的
46、數(shù)據(jù)類型:字、選擇符、32位段指針。 地址能被4整除的數(shù)據(jù)類型:雙字、短實(shí)數(shù)、48位段指針、32位Flat指針、 48位偽描述符(描述符表基寄存器內(nèi)容的MEM映像)。 地址能被8整除的數(shù)據(jù)類型:長(zhǎng)實(shí)數(shù)、TEMPREAL。 地址能被4或2(取決于操作數(shù)的尺度)的數(shù)據(jù)類型。 FSTENV/FLDENV save area FSAVE/FRSTOR save area (2)對(duì)齊檢查的條件:CR0.AM=1;EFLAGS.AC=1;CPL3 存儲(chǔ)器引用(references)約定在CPL0,為段描述符裝入不會(huì)產(chǎn)生對(duì)齊檢查Fault,即使是在用戶模式下引起的存儲(chǔ)器引用。,
47、2.5.2 32位CPU的中斷與異常,18 Machine Check Fault Pentium處理器的模型專用寄存器產(chǎn)生的異常。 CPUID:當(dāng)EAX1時(shí),執(zhí)行后,EDX(7) 機(jī)器檢查異常處理。 當(dāng)CR4.MCE=1,系統(tǒng)可執(zhí)行機(jī)器檢查異常處理。 Pentium中 輸入,當(dāng) <0,通知CPU發(fā)生了讀數(shù)據(jù)檢驗(yàn)錯(cuò); 或 輸入,當(dāng) <0,通知CPU發(fā)生了總線周期錯(cuò)。 當(dāng)前總線周期地址 MSR00H:MCA 機(jī)器檢查地址R 當(dāng)前總線周期類型 MSR01H:MCT 機(jī)器檢查類型R 63 4 3 2 1 0 數(shù)據(jù)
48、鎖存到MCT:CHK1,讀MCT:CHK0 用RDMSR讀MCA和MCT EDX:EAX MSRECX MOV ECX,Imm; Imm代表寄存器編號(hào),如00H,01H RDMSR,,,,Lock M/IO D/C W/R CHK,,2.5.2 32位CPU的中斷與異常,,,,,2.5.3中斷和異常的處理過(guò)程,,1、中斷檢測(cè)和響應(yīng) (1)外部中斷請(qǐng)求在指令后邊界檢測(cè)。 (2)Trap異常也在指令后邊界檢測(cè)。 (3)Fault異常在指令前邊界檢測(cè)。 2、中斷處理和服務(wù) 實(shí)地址模式下的中斷如圖:,2.5.3 中斷和異常的處理過(guò)程,2.5.4 實(shí)模式下的中斷和異常,32位微處理器運(yùn)行在
49、實(shí)地址下,可以響應(yīng)和處理異常0、1、3、4、5、6、7、8、9、12、13、16。,2.中斷向量表,位于內(nèi)存地址0000 : 0000開(kāi)始的1KB范圍內(nèi)。,按中斷類型號(hào)順序存放中斷向量。,3.中斷向量指針,指向存放中斷向量地址第一字節(jié)的指針。,中斷向量指針=中斷類型號(hào)4。,軟件中斷中自由中斷的中斷向量需用戶自己裝入。,1.中斷向量,對(duì)應(yīng)中斷類型號(hào)的中斷服務(wù)程序入口地址。,每個(gè)中斷向量占4字節(jié)。,實(shí)模式下中斷向量表,2.5.5 保護(hù)模式下的中斷和異常,1、中斷的處理 (1)通過(guò)中斷門(mén)和異常門(mén)的中斷處理,中斷/異常:向量號(hào)8,。。。,中斷/異常 門(mén)描述符,。。。,。。。,代碼段描述符,CS段選擇符
50、,描述符高速緩存器,。。。,代碼段,,,,,,,,,,,,,,,,,,,門(mén)選擇符,段選擇符,段偏移量,段選擇符,段基址、段限長(zhǎng)、 訪問(wèn)權(quán)限,段基址,程序入口,段限長(zhǎng),,IDT,,GDT/ LDT,15,0,63,0,,,中斷/異常 門(mén)描述符,IDT,GDT/ LDT,代碼段描述符,,,CS段選擇符,,,描述符高速緩存器,,,,,,代碼段,代碼段,(2)中斷/異常后的堆棧結(jié)構(gòu),2.5.5 保護(hù)模式下的中斷和異常,(3)通過(guò)任務(wù)門(mén)的中斷處理,2.5.5 保護(hù)模式下的中斷和異常,中斷:向量號(hào)8,。。。,任務(wù) 門(mén)描述符,。。。,。。。,描述符,CS段選擇符,描述符高速緩存器,。。。,中斷任務(wù)的 ,,,
51、,,,,,,,,,,,,,,,門(mén)選擇符,TSS選擇符,TSS選擇符,TSS段基址、段限長(zhǎng),TSS段基址,TSS段限長(zhǎng),,IDT,,GDT,15,0,63,0,,,IDT,任務(wù) 門(mén)描述符,,,,GDT,描述符,,,CS段選擇符,,,描述符高速緩存器,,,中斷任務(wù)的 ,,,中斷任務(wù)的 ,2、特權(quán)級(jí)保護(hù) 通過(guò)中斷門(mén)或異常門(mén)的轉(zhuǎn)移控制,目標(biāo)代碼段DPL=現(xiàn)行代碼段CPL。 通過(guò)任務(wù)門(mén)的中斷不對(duì)目標(biāo)代碼段的特權(quán)級(jí)進(jìn)行檢查。 對(duì)INT N和INTO指令產(chǎn)生的中斷:門(mén)的DPL=現(xiàn)行代碼段CPL。 對(duì)于外部中斷和異常,不進(jìn)行門(mén)的特權(quán)級(jí)的檢查。,2.5.5 保護(hù)模式下的中斷和異常,優(yōu)點(diǎn):中斷任務(wù)和被中斷任務(wù)完全
52、隔離。 缺點(diǎn):中斷響應(yīng)過(guò)程耗時(shí)長(zhǎng)。,2.5.6 虛擬8086模式下的中斷和異常,(1)要求中斷和異常處理程序必須具有0級(jí)特權(quán)級(jí)。 (2)保存現(xiàn)場(chǎng)時(shí)壓入堆棧的內(nèi)容增多,按32位操作來(lái)保存現(xiàn)場(chǎng)。 (3)將EFLAGS寄存器內(nèi)容壓棧后將17位清0。 (4)執(zhí)行IRET時(shí),檢測(cè)CPL的特權(quán)級(jí)。,2.6 存儲(chǔ)管理,三種工作模式下如何完成存儲(chǔ)管理?,2.6.1 實(shí)模式存儲(chǔ)管理,1. 物理地址的形成,2.6.1 實(shí)模式存儲(chǔ)管理,2. 段式存儲(chǔ)管理 CR0.PG=0:頁(yè)部件不工作,線性地址即物理地址。 段值16 相應(yīng)描述符的段基址(Base190) 段限長(zhǎng):64KB,P1,G0,ED0 代碼段:C
53、PL0,R1,C0 其他段:DPL0,W1,數(shù)據(jù)段:ED0, FFFF 0000H偏移量 限長(zhǎng) 段基址 0000 堆棧段 ED1 段基址 FFFF 0000 限長(zhǎng)+1 偏移量 FFFFH,,,,,,。。,。。,2.6.2 保護(hù)模式存儲(chǔ)管理,CR0.PE=1,CPU處于保護(hù)模式。 存儲(chǔ)器的保護(hù)機(jī)制。 分段機(jī)制不同,引入虛存概念。 1. 段式存儲(chǔ)管理 (1)地址空間變換 虛擬(邏輯)存儲(chǔ)空間:21423224664TB 實(shí)模式:21624216220216,2.6.2 保護(hù)模式存儲(chǔ)管理,(2)虛擬地址到線性地址的變換,GDTR(TI=0)
54、/LDTR(TI=1),,索引,TI,RPL,偏移量,,,,虛擬地址,,,,,,段描述符,,,,,,,,段基址,段限長(zhǎng),屬 址,段Cache (8B),,,,索引8,,,,,,,線形地址,GDT/LDT基址,,,,,,,,,,,索引,TI,GDTR(TI=0)/LDTR(TI=1),GDT/ LDT,段描述符,偏移量,2.6.2 保護(hù)模式存儲(chǔ)管理,2. 頁(yè)式存儲(chǔ)管理 CR0.PG1,頁(yè)部件自動(dòng)將線性地址轉(zhuǎn)換成物理地址 段長(zhǎng)可變:04GB 頁(yè)長(zhǎng)固定:CR4.PSE=1,頁(yè)4MB; CR4.PSE0,頁(yè)4KB 物理地址:CR4.PAE=1,超過(guò)32位 (1)頁(yè)變換原理,2.6.2 保護(hù)模式存儲(chǔ)管
55、理,,,,,,,,,,,,,,,,,,物理地址,Y 不分頁(yè),頁(yè)目錄表基址,,CR3,段管理部件,選擇符,偏移量,,,,,PG=0?,,,,,,,頁(yè)目錄號(hào)(10位),頁(yè)號(hào)(10位),偏移量(12位),,0,,,虛擬地址,線性地址,,,,,,,,,,,,,,頁(yè)表項(xiàng),4KB,,,31,0,31,0,7,0,1023,1023,,,線形頁(yè)號(hào),,,分頁(yè) N,0,0,,,31,21,22,12,11,0,段管理部件,物理地址,Y 不分頁(yè),分頁(yè) N,頁(yè)目錄表基址,,頁(yè)目錄號(hào)(10位),,頁(yè)號(hào)(10位),偏移量(12位),,2.6.2 保護(hù)模式存儲(chǔ)管理, CR3(頁(yè)目錄基址)線性地址高10位(頁(yè)目錄號(hào))4
56、 頁(yè)目錄項(xiàng)低位地址;得到頁(yè)表基址 頁(yè)表基址線性地址中10位(頁(yè)號(hào))4 頁(yè)表項(xiàng)低位地址;得到頁(yè)基址 頁(yè)基址線性地址低12位(偏移量) 頁(yè)內(nèi)單元的偏移地址 頁(yè)變換:線性地址高20位的線性頁(yè)號(hào)變換為物理頁(yè)號(hào) 頁(yè)內(nèi)的偏移量不變換。,,,,,,2.6.2 保護(hù)模式存儲(chǔ)管理, P 存在: P1,頁(yè)目錄項(xiàng)/頁(yè)表項(xiàng)在內(nèi)存中; P0則表示其不在內(nèi)存中 。 R/W 讀/寫(xiě): R/W1,頁(yè)目錄項(xiàng)/頁(yè)表項(xiàng)可讀、寫(xiě)、執(zhí)行; R/W0,頁(yè)目錄項(xiàng)/頁(yè)表項(xiàng)可讀、執(zhí)行。 U/S 用戶/監(jiān)控: U/S1,頁(yè)的用戶級(jí)段的PL3。
57、 U/S0,頁(yè)的監(jiān)控級(jí)段的PL0,PL1, PL2 。,(2)頁(yè)目錄項(xiàng)和頁(yè)表項(xiàng),2.6.2 保護(hù)模式存儲(chǔ)管理, PWT 頁(yè)通寫(xiě)(外部Cache):PWT1,當(dāng)前頁(yè)通寫(xiě); PWT0,當(dāng)前頁(yè)回寫(xiě)。 PCD為頁(yè)Cache禁止位。PCDl表示禁止片上Cache;PCD0表示允許片上Cache工作。 A 訪問(wèn)性:A1,頁(yè)表項(xiàng)/頁(yè)中內(nèi)容被訪問(wèn)。 A0,頁(yè)表項(xiàng)/頁(yè)中內(nèi)容未被訪問(wèn)。 D 頁(yè)修改位:D1,頁(yè)被修改過(guò)。 (二級(jí)頁(yè)表) D0,頁(yè)未被修改過(guò)。 AVAIL 保留附加信息 (對(duì)應(yīng)頁(yè)表或頁(yè))。,2.6.2 保護(hù)模式存儲(chǔ)管理,(3)轉(zhuǎn)換后
58、援緩沖器TLB TLB是頁(yè)部件中的相聯(lián)存儲(chǔ)器。 CPU近期訪問(wèn)過(guò)的32個(gè)頁(yè)的有關(guān)信息: 線性頁(yè)號(hào)、物理頁(yè)號(hào)、D、A、U/S、R/W、P。 線性頁(yè)號(hào)在TLB中,找出物理頁(yè)號(hào),快速完成轉(zhuǎn)換,有效 線性頁(yè)號(hào)不在TLB中,查頁(yè)目錄表、頁(yè)表、頁(yè)方式訪問(wèn)內(nèi)存,注意P、A、R/W屬性將其線性頁(yè)號(hào)、物理頁(yè)號(hào)、屬性 調(diào)入TLB。 當(dāng)TLB滿時(shí),按LRU算法調(diào)出最近最少使用的頁(yè)信息及調(diào)入剛訪問(wèn)的頁(yè)。 程序局部性和數(shù)據(jù)的簇聚性可使CPU訪問(wèn)TLB的命中率在 98以上。,2.6.2 保護(hù)模式存儲(chǔ)管理, 線性地址高17位當(dāng)作TAG,在同一組號(hào)的4項(xiàng)中按內(nèi)容相聯(lián)查找; 若命中,找出其20位物理頁(yè)號(hào)拼接線性地
59、址低12位形成物理地 址,表TLB中有符合的項(xiàng),但權(quán)限及頁(yè)目錄項(xiàng)/頁(yè)表項(xiàng)中P0, 產(chǎn)生異常14。 產(chǎn)生異常的線性地址 CR2 錯(cuò)誤代碼 異常14處理程序的堆棧中 關(guān)鍵程序和數(shù)據(jù)常駐內(nèi)存,使頁(yè)請(qǐng)求虛擬存儲(chǔ)系統(tǒng)能正常工作 頁(yè)目錄表。如: IDT、GDT、TSS及0級(jí)堆棧及其頁(yè)表。 頁(yè)Fault處理程序代碼和數(shù)據(jù)及其頁(yè)表。,,,2.6.2 保護(hù)模式存儲(chǔ)管理,,2.6.2 保護(hù)模式存儲(chǔ)管理,段寄存器,選擇符,RPL,分段部件,分頁(yè)部件,物理存儲(chǔ)器,,,,有效地址,邏輯地址,,線性地址,,,,,分頁(yè),不分頁(yè),物理地址,選擇符,,,14,,分段部件,,分頁(yè)部件,物理地址,,,物理存儲(chǔ)器,
60、物理存儲(chǔ)器,2.6.3 虛擬8086模式存儲(chǔ)管理,1. 段式管理 與實(shí)模式下存儲(chǔ)管理相同:段基址=段R值16,Limit=FFFFH,DPL=3,P=1,代碼段C=0,E=1,R 數(shù)據(jù)段:ED=1,R=1,W 2. 頁(yè)式管理 (1)多個(gè)VM8086任務(wù)的1MB線性地址空間映射到物理空間的不同區(qū)域 (2)VM8086地址偏移量超過(guò)1MB時(shí),可仿真實(shí)現(xiàn)8086地址回繞 (3)頁(yè)請(qǐng)求虛擬存儲(chǔ)系統(tǒng)和調(diào)頁(yè)Fault(異常14)在虛擬空間的內(nèi)存和外存 之間實(shí)現(xiàn)頁(yè)的調(diào)度 (4)多個(gè)VM8086任務(wù)共享8086 OS或ROM代碼 (5)由存儲(chǔ)器映射I/O編址的設(shè)備,其端口地址可對(duì)應(yīng)不同線性地址,2.7
61、 多任務(wù)與多處理,,2.7.1 任務(wù)狀態(tài)段TSS 2.7.2 TSS D、Task G、TR 2.7.3 任務(wù)轉(zhuǎn)換 2.7.4 32位CPU的多處理,2.7.1 任務(wù)狀態(tài)段TSS,需要重存一個(gè)任務(wù)的處理器狀態(tài)信息被存于一種叫做TSS的段類型 1. 動(dòng)態(tài)域:每個(gè)任務(wù)轉(zhuǎn)換時(shí)處理器更新 通用寄存器(EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI) 段寄存器(ES、CS、SS、DS、FS、GS) 標(biāo)志寄存器(EFLAGS) 指令指針(EIP) 老任務(wù)TSS選擇符(僅當(dāng)返回執(zhí)行時(shí)更新) 在TSS0102H:Link與NT1配合返回調(diào)用/被中斷程序,2.7.1 任務(wù)狀態(tài)段TSS,2. 靜
62、態(tài)域:處理器可以讀,但不改變;這些域在任務(wù)建立時(shí)設(shè)置 任務(wù)的LDT的選擇符 CR3寄存器(DDBR:頁(yè)目錄基址寄存器) 特權(quán)級(jí)0、1、2堆棧的邏輯地址 SS0:ESP0 SS1:ESP1 SS2:ESP2 調(diào)試陷阱位T 當(dāng)T1(偏移量64H的0位),在任務(wù)轉(zhuǎn)換發(fā)生時(shí),在新任務(wù)第一條指令執(zhí)行前,處理器將發(fā)生一個(gè)調(diào)試異常,使軟件在任務(wù)之間根據(jù)需要有效地共享調(diào)試寄存器,2.7.1 任務(wù)狀態(tài)段TSS,I/O允許位圖和中斷重定向位圖基址 基址指向I/O位圖開(kāi)始處及中斷重定向的結(jié)束處。 CPLIOPL I/O位圖對(duì)應(yīng)位為0的端口,否則產(chǎn)生異常13。 位圖偏移量:位圖首地址,TSSD的Limi
63、t限制長(zhǎng)度,最后全1字節(jié),在限長(zhǎng)內(nèi)。 關(guān)于分頁(yè) 避免頁(yè)邊界放在TSS內(nèi),如果頁(yè)邊界放在TSS內(nèi),那么邊界的每一個(gè)邊都要同時(shí)在TSS內(nèi)。 當(dāng)分頁(yè)使用時(shí),老任務(wù)的TSS、新任務(wù)的TSS和描述符表項(xiàng)都應(yīng)該被標(biāo)記為存在和可讀/寫(xiě),處理器開(kāi)始讀TSS后再收到一個(gè)頁(yè)故障或一般保護(hù)異常將是一個(gè)不可恢復(fù)的錯(cuò)誤。,2.7.2 TSS D、Task G、TR,1. TSSD 忙的任務(wù)是現(xiàn)行運(yùn)行或等待運(yùn)行的任務(wù) 駐留在GDT中,,2.7.2 TSS D、Task G、TR,2. Task G,2.7.2 TSS D、Task G、TR,(1)DPL控制對(duì)任務(wù)轉(zhuǎn)換的門(mén)描述符的訪問(wèn) 當(dāng)一個(gè)過(guò)程的CPL和選擇符R
64、PL數(shù)值小于等于TSS D的DPL時(shí),這個(gè)過(guò)程不需要選擇門(mén)描述符來(lái)實(shí)現(xiàn)任務(wù)轉(zhuǎn)換。這防止低優(yōu)先級(jí)的過(guò)程引起一個(gè)任務(wù)轉(zhuǎn)換。 當(dāng)任務(wù)門(mén)被用時(shí),目標(biāo)TSS D的DPL不用。CPL,RPL只和門(mén)DPL比較。,2.7.2 TSS D、Task G、TR,(2)Task G和TSS D滿足多項(xiàng)要求,一個(gè)任務(wù)僅有一個(gè)忙位,忙位存在TSS D中,每個(gè)任務(wù)都只有一個(gè)TSS D。 任務(wù)門(mén)能夠在LDT中:門(mén)的DPL與TSS D中 DPL不同,沒(méi)有足夠的特權(quán)使用GDT中TSS D(DPL0)的過(guò)程能夠訪問(wèn)LDT中的任務(wù)門(mén),用任務(wù)門(mén),OS能夠限制任務(wù)轉(zhuǎn)換到特殊的任務(wù)。 任務(wù)門(mén)在IDT中:當(dāng)中斷或異常的向量指向IDT中
65、的任務(wù)門(mén)時(shí),中斷或異常能夠引起任務(wù)轉(zhuǎn)換。 多個(gè)任務(wù)門(mén)可以指向同一個(gè)任務(wù)。 任務(wù)門(mén)中指向TSS D的選擇符其RPL不用,門(mén)中偏移量也不用。 任務(wù)門(mén)可以在GDT、LDT和IDT中,但TSS D只能在GDT中,TSS可以定 位在內(nèi)存中任何位置 。,2.7.2 TSS D、Task G、TR,3. TR,,,,,,,,,,,,,,,2.7.2 TSS D、Task G、TR,(1)LTR 16位段選擇符裝入TR的可見(jiàn)部分,指向GDT中的TSS D。 48位的段基址和段限長(zhǎng)從TSS D中裝入TR不可見(jiàn)部分段Cache。 特權(quán)指令,僅在CPL0程序中執(zhí)行。 用于系統(tǒng)初始化時(shí)給TR賦初值,以后由引起
66、任務(wù)轉(zhuǎn)換的時(shí) 間改變其中的內(nèi)容。 (2)STR TR中的可見(jiàn)部分存入存儲(chǔ)器或通用寄存器。 非特權(quán)指令,可以在任務(wù)特權(quán)級(jí)程序中運(yùn)行。,2.7.3 任務(wù)轉(zhuǎn)換,1. 任務(wù)轉(zhuǎn)換的啟動(dòng) 段間JMP或CALL指令操作數(shù)選擇符直接選擇GDT中TSS D 段間JMP或CALL指令操作數(shù)選擇符通過(guò)Task G選擇符指向 GDT中TSS D。 中斷或異常指向IDT中的任務(wù)門(mén),Task G選擇GDT中TSSD。 注意:索引IDT中的中斷門(mén)或陷阱門(mén)不會(huì)發(fā)生任務(wù)轉(zhuǎn)換。 當(dāng)EFLAGS.NT1時(shí)現(xiàn)行任務(wù)執(zhí)行IRET/IRETD指令。返回任務(wù)的選擇符在現(xiàn)行任務(wù)的TSS的Link字段中(Old TSS Selector)。,2.7.3 任務(wù)轉(zhuǎn)換,2. 任務(wù)轉(zhuǎn)換的過(guò)程,檢查現(xiàn)行任務(wù)允許轉(zhuǎn)換到新任務(wù)。數(shù)據(jù)訪問(wèn)特權(quán)規(guī)則應(yīng)用到JMP、CALL。 CALL、JMP:現(xiàn)行CPL,選擇符RPL67H,B0(即Type9)。 存現(xiàn)行任務(wù)的狀態(tài)TSS中:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI、ES、CS、SS、DS、FS、GS、EFLAGS、EIP(引起任務(wù)轉(zhuǎn)換指令的下一條指 令)。
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六年級(jí)科學(xué)下冊(cè)第三單元宇宙5太陽(yáng)系課件(教科版)
- 餐飲服務(wù)意識(shí)
- 第3章 鋼筋和混凝土的材料力學(xué)性能
- 《遠(yuǎn)離有毒物質(zhì)》課件-(市優(yōu))2022年九年級(jí)化學(xué)課件
- 綠色發(fā)展答辯
- 師德修養(yǎng)及相關(guān)法律法規(guī)介紹 (2)
- 汽車檢測(cè)診斷技術(shù)與設(shè)備第9章-汽車前照燈的檢測(cè)與檢測(cè)設(shè)備-PPT
- 消費(fèi)行為與廣告心理專業(yè)基礎(chǔ)知識(shí)
- 備戰(zhàn)2010高考課件:2009年全國(guó)高考名句名篇默寫(xiě)匯總
- 信息倫與編碼
- 奔馳傳奇歷史
- 鮑曼不動(dòng)桿菌專家共識(shí)解讀課件
- 衛(wèi)生系統(tǒng)績(jī)效評(píng)價(jià)培訓(xùn)課件
- 高考數(shù)學(xué)二輪復(fù)習(xí)第1部分重點(diǎn)強(qiáng)化專題專題1三角函數(shù)與平面向量突破點(diǎn)1三角函數(shù)問(wèn)題課件文
- 小兒腹瀉講解匯總