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