計(jì)算機(jī)軟件課次_第1頁
計(jì)算機(jī)軟件課次_第2頁
計(jì)算機(jī)軟件課次_第3頁
計(jì)算機(jī)軟件課次_第4頁
計(jì)算機(jī)軟件課次_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)軟件課次第1頁,共48頁,2023年,2月20日,星期四圖3.10數(shù)據(jù)在存儲(chǔ)器中的存放第2頁,共48頁,2023年,2月20日,星期四若存放的是字型數(shù)據(jù)(16位二進(jìn)制數(shù)),則將字的低位字節(jié)存放在低地址單元,高位字節(jié)存放在高地址單元。如從地址0011FH開始的兩個(gè)連續(xù)單元中存放一個(gè)字型數(shù)據(jù),則該數(shù)據(jù)為DF46H,記為:(0011FH)=DF46H。若存放的是雙字型數(shù)據(jù)(32位二進(jìn)制數(shù),這種數(shù)一般作為地址指針,其低位字是被尋址地址的偏移量,高位字是被尋址地址所在段的段地址),這種類型的數(shù)據(jù)要占用連續(xù)的4個(gè)存儲(chǔ)單元,同樣,低字節(jié)存放在低地址單元,高字節(jié)存放在高地址單元。如從地址E800AH開始的連續(xù)4個(gè)存儲(chǔ)單元中存放了一個(gè)雙字型數(shù)據(jù),則該數(shù)據(jù)為66A65E65H,記為:(E800AH)=66A65E65H。第3頁,共48頁,2023年,2月20日,星期四

2.存儲(chǔ)器的段結(jié)構(gòu)8086/8088CPU中有關(guān)可用來存放地址的寄存器如IP、SP等都是16位的,故只能直接尋址64KB。為了對(duì)1M個(gè)存儲(chǔ)單元進(jìn)行管理,8086/8088采用了段結(jié)構(gòu)的存儲(chǔ)器管理方法。8086/8088將整個(gè)存儲(chǔ)器分為許多邏輯段,每個(gè)邏輯段的容量小于或等于64KB,允許它們在整個(gè)存儲(chǔ)空間中浮動(dòng),各個(gè)邏輯段之間可以緊密相連,也可以互相重疊。用戶編寫的程序(包括指令代碼和數(shù)據(jù))被分別存儲(chǔ)在代碼段、數(shù)據(jù)段、堆棧段和附加數(shù)據(jù)段中,這些段的段地址分別存儲(chǔ)在段寄存器CS、DS、SS和ES中,而指令或數(shù)據(jù)在段內(nèi)偏移地址可由對(duì)應(yīng)的地址寄存器或立即數(shù)給出,如表3.8所示。第4頁,共48頁,2023年,2月20日,星期四表3.8存儲(chǔ)器操作時(shí)段地址和段內(nèi)偏移地址的來源

存儲(chǔ)器操作類型

段地址

偏移地址

正常來源

其他來源取指令

CS

IP

存取操作數(shù)

DSCS、ES、SS

有效地址EA通過BP尋址存取操作數(shù)

SS

CS、ES、SS

有效地址EA堆棧操作

SS

BP、SP

源字符串

DS

CS、ES、SS

SI

目的字符串

ES無

DI第5頁,共48頁,2023年,2月20日,星期四如果從存儲(chǔ)器中讀取指令,則段地址來源于代碼段寄存器CS,偏移地址來源于指令指針寄存器IP。如果從存儲(chǔ)器讀/寫操作數(shù),則段地址通常由數(shù)據(jù)段寄存器DS提供(必要時(shí)可通過指令前綴實(shí)現(xiàn)段超越,將段地址指定為由CS、ES或SS提供),偏移地址則要根據(jù)指令中所給出的尋址方式確定,這時(shí),偏移地址通常由寄存器BX、SI、DI以及立即數(shù)等提供,這類偏移地址也被稱為“有效地址”(EA)。如果操作數(shù)是通過基址寄存器BP尋址的,則此時(shí)操作數(shù)所在段的段地址由堆棧段段寄存器SS提供(必要時(shí)也可指定為CS、SS或ES)(詳見第4章“尋址方式”一節(jié))。第6頁,共48頁,2023年,2月20日,星期四如果使用堆棧操作指令(PUSH或POP)進(jìn)行進(jìn)棧或出棧操作,以保護(hù)斷點(diǎn)或現(xiàn)場,則段地址來源于堆棧段寄存器SS,偏移地址來源于堆棧指針寄存器SP?(詳見本節(jié)“4.堆棧操作”)。如果執(zhí)行的是字符串操作指令,則源字符串所在段的段地址由數(shù)據(jù)段寄存器DS提供(必要時(shí)可指定為CS、ES或SS),偏移地址由源變址寄存器SI提供;目的字符串所在段的段地址由附加數(shù)據(jù)段寄存器ES提供,偏移地址由目的變址寄存器DI提供。以上這些存儲(chǔ)器操作時(shí)段地址和偏移地址的約定是由系統(tǒng)設(shè)計(jì)時(shí)事先已規(guī)定好的,編寫程序時(shí)必須遵守這些約定。第7頁,共48頁,2023年,2月20日,星期四3.邏輯地址與物理地址由于采用了存儲(chǔ)器分段管理方式,8080/8088CPU在對(duì)存儲(chǔ)器進(jìn)行訪問時(shí),根據(jù)當(dāng)前的操作類型(取指令或存取操作數(shù))以及讀取操作數(shù)時(shí)指令所給出的尋址方式,CPU就可確定要訪問的存儲(chǔ)單元所在段的段地址以及該單元在本段內(nèi)的偏移地址(如表3.8所示)。我們把通過段地址和偏移地址來表示的存儲(chǔ)單元的地址稱為邏輯地址,記為:段地址:偏移地址。CPU在對(duì)存儲(chǔ)單元進(jìn)行訪問時(shí),必須在20位的地址總線上提供一個(gè)20位的地址信息,以便選中所要訪問的存儲(chǔ)單元。我們把CPU對(duì)存儲(chǔ)器進(jìn)行訪問時(shí)實(shí)際尋址所使用的20位地址稱為物理地址。

第8頁,共48頁,2023年,2月20日,星期四物理地址是由CPU內(nèi)部總線接口單元BIU中的地址加法器根據(jù)邏輯地址產(chǎn)生的。由邏輯地址形成20位物理地址的方法為:段地址10H+偏移地址。其形成過程如圖3.3所示。圖3.11給出了存儲(chǔ)器分段示意。如果當(dāng)前的(IP)=1000H,那么,下一條要讀取的指令所在存儲(chǔ)單元的物理地址為:(CS)10H+(IP)=1000H10H+1000H=11000H如果某操作數(shù)在數(shù)據(jù)段內(nèi)的偏移地址為8000H,則該操作數(shù)所在存儲(chǔ)單元的物理地址為(DS)10H+8000H=2A0FH10H+8000H=320F0H第9頁,共48頁,2023年,2月20日,星期四存儲(chǔ)器分段示意圖第10頁,共48頁,2023年,2月20日,星期四

4.堆棧操作堆棧是在存儲(chǔ)器中開辟的一個(gè)特定區(qū)域。開辟堆棧的目的主要有以下兩點(diǎn):(1)存放指令操作數(shù)(變量)。此時(shí),對(duì)操作數(shù)進(jìn)行訪問時(shí),段地址由堆棧段寄存器SS來提供,操作數(shù)在該段內(nèi)的偏移地址由基址寄存器BP來提供。(2)保護(hù)斷點(diǎn)和現(xiàn)場。此為堆棧的主要功能。

第11頁,共48頁,2023年,2月20日,星期四

進(jìn)棧和出棧操作過程在執(zhí)行進(jìn)棧和出棧操作時(shí),段地址由堆棧段寄存器SS提供,段內(nèi)偏移地址由堆棧指針寄存器SP提供,SP始終指向棧頂,當(dāng)堆??諘r(shí),SP指向棧底。如圖3.12所示,設(shè)在存儲(chǔ)器中開辟了100H個(gè)存儲(chǔ)單元的堆棧段,當(dāng)前(SS)=2000H,堆棧空時(shí)(SP)=0100H,即此時(shí)SP指向棧底(如圖3.12(a)所示)。由于PUSH和POP指令要求操作數(shù)為字型數(shù)據(jù),因此,每進(jìn)行一次進(jìn)棧操作,SP值減2(如圖3.12(b)所示),每進(jìn)行一次出棧操作,SP值加2(如圖3.12(c)所示)。在進(jìn)棧和出棧操作過程中,SP始終指向棧頂。第12頁,共48頁,2023年,2月20日,星期四圖3.12進(jìn)棧與出棧操作示意圖第13頁,共48頁,2023年,2月20日,星期四

5.8086/8088存儲(chǔ)器結(jié)構(gòu)8086的1MB存儲(chǔ)空間實(shí)際上分為兩個(gè)512KB的存儲(chǔ)體,又稱存儲(chǔ)庫,分別叫高位庫和低位庫,如圖3.13所示。低位庫與數(shù)據(jù)總線D7D0相連,該庫中每個(gè)存儲(chǔ)單元的地址為偶數(shù)地址;高位庫與數(shù)據(jù)總線D15D8相連,該庫中每個(gè)存儲(chǔ)單元的地址為奇數(shù)地址。地址總線A19A1可同時(shí)對(duì)高、低位庫的存儲(chǔ)單元尋址,A0和BHE用于對(duì)庫的選擇,分別連接到庫選擇端SEL上。當(dāng)A0=0時(shí),選擇偶數(shù)地址的低位庫;當(dāng)BHE=0時(shí),選擇奇數(shù)地址的高位庫;當(dāng)兩者均為0時(shí),則同時(shí)選中高低位庫。利用A0和BHE這兩個(gè)控制信號(hào),既可實(shí)現(xiàn)對(duì)兩個(gè)庫進(jìn)行讀/寫(即16位數(shù)據(jù)),也可單獨(dú)對(duì)其中一個(gè)庫進(jìn)行讀/寫(8位數(shù)據(jù)),如表3.9所示。第14頁,共48頁,2023年,2月20日,星期四圖3.138086存儲(chǔ)器高低位庫的連接第15頁,共48頁,2023年,2月20日,星期四表3.98086存儲(chǔ)器高低位庫選擇

A0

對(duì)應(yīng)操作

0

0

同時(shí)訪問兩個(gè)存儲(chǔ)體,讀/寫一個(gè)字的信息

0

1

只訪問奇地址存儲(chǔ)體,讀/寫高字節(jié)的信息

1

0

只訪問偶地址存儲(chǔ)體,讀/寫低字節(jié)的信息

1

1

無操作第16頁,共48頁,2023年,2月20日,星期四在8086系統(tǒng)中,存儲(chǔ)器這種分體結(jié)構(gòu)對(duì)用戶來說是透明的。當(dāng)用戶需要訪問存儲(chǔ)器中某個(gè)存儲(chǔ)單元,以便進(jìn)行字節(jié)型數(shù)據(jù)的讀/寫操作時(shí),指令中的地址碼經(jīng)變換后得到20位的物理地址,該地址可能是偶地址,也可能是奇地址。如果是偶地址(A0=0),BHE=1,這時(shí)由A0選定偶地址存儲(chǔ)體,通過A19A1從偶地址存儲(chǔ)體中選中某個(gè)單元,并啟動(dòng)該存儲(chǔ)體,讀/寫該存儲(chǔ)單元中一個(gè)字節(jié)信息,通過數(shù)據(jù)總線的低8位傳送數(shù)據(jù),如圖3.14(a)所示;如果是奇地址(A0)=1,則偶地址存儲(chǔ)體不會(huì)被選中,也就不會(huì)啟動(dòng)它。為了啟動(dòng)奇地址存儲(chǔ)體,系統(tǒng)將自動(dòng)產(chǎn)生BHE=0,作為奇地址存儲(chǔ)體的選體信號(hào),與A19A1一起選定奇地址存儲(chǔ)體中的某個(gè)存儲(chǔ)單元,并讀/寫該單元中的一個(gè)字節(jié)信息,通過數(shù)據(jù)總線的高8位傳送數(shù)據(jù),如圖3.14(b)所示??梢钥闯觯瑢?duì)于字節(jié)型數(shù)據(jù),不論它存放在偶地址的低位庫,還是奇地址的高位庫,都可通過一個(gè)總線周期完成數(shù)據(jù)的讀/寫操作。第17頁,共48頁,2023年,2月20日,星期四如果用戶需要訪問存儲(chǔ)器中某兩個(gè)存儲(chǔ)單元,以便進(jìn)行字型數(shù)據(jù)的讀/寫時(shí),可分兩種情況來討論。一種情況是用戶要訪問的是從偶地址開始的兩個(gè)連續(xù)存儲(chǔ)單元(即字的低字節(jié)在偶地址單元,高字節(jié)在奇地址單元),這種存放稱為規(guī)則存放,這樣存放的字稱為規(guī)則字。對(duì)于規(guī)則存放的字可通過一個(gè)總線周期完成讀/寫操作,這時(shí)A0=0,BHE=0,如圖3.14(c)所示;另一種情況是用戶要訪問的是從奇地址開始的兩個(gè)存儲(chǔ)單元(即字的低字節(jié)在奇地址單元,高字節(jié)在偶地址單元),這種存放稱為非規(guī)則存放,這樣存放的字稱為非規(guī)則字,對(duì)于非規(guī)則存放的字需要通過兩個(gè)總線周期才能完成讀/寫操作,即第一次訪問存儲(chǔ)器時(shí)讀/寫奇地址單元中的字節(jié),第二次訪問存儲(chǔ)器時(shí)讀/寫偶地址單元中的字節(jié),如圖3.14(d)所示。顯然,為了加快程序的運(yùn)行速度,希望字型數(shù)據(jù)在存儲(chǔ)器中規(guī)則存放。第18頁,共48頁,2023年,2月20日,星期四圖3.14從8086存儲(chǔ)器的偶數(shù)和奇數(shù)地址讀字節(jié)和字讀偶地址單元中的字節(jié);(b)讀奇地址單元中的字節(jié);(c)讀偶地址單元中的字;(d)讀奇地址單元中的字第19頁,共48頁,2023年,2月20日,星期四在8088系統(tǒng)中,可直接尋址的存儲(chǔ)空間同樣也是1MB,但其存儲(chǔ)器的結(jié)構(gòu)與8086有所不同,它的1MB存儲(chǔ)空間同屬于一個(gè)單一的存儲(chǔ)體,即存儲(chǔ)體為1M8位。它與總線之間的連接方式很簡單,其20根地址線A19A0與8根數(shù)據(jù)線分別與8088CPU對(duì)應(yīng)的地址線和數(shù)據(jù)線相連。8088CPU每訪問一次存儲(chǔ)器只能讀/寫一個(gè)字節(jié)信息,因此在8088系統(tǒng)的存儲(chǔ)器中,字型數(shù)據(jù)需要兩次訪問存儲(chǔ)器才能完成讀/寫操作。第20頁,共48頁,2023年,2月20日,星期四3.3.28086/8088的I/O組織8086/8088系統(tǒng)和外部設(shè)備之間是通過I/O接口電路來聯(lián)系的。每個(gè)I/O接口都有一個(gè)或幾個(gè)端口。在微機(jī)系統(tǒng)中每個(gè)端口分配一個(gè)地址號(hào),稱為端口地址。一個(gè)端口通常為I/O接口電路內(nèi)部的一個(gè)寄存器或一組寄存器。第21頁,共48頁,2023年,2月20日,星期四8086/8088CPU用地址總線的低16位作為對(duì)8位I/O端口的尋址線,所以8086/8088系統(tǒng)可訪問的8位I/O端口有65536(64K)個(gè)。兩個(gè)編號(hào)相鄰的8位端口可以組成一個(gè)16位的端口。一個(gè)8位的I/O設(shè)備既可以連接在數(shù)據(jù)總線的高8位上,也可以連接到數(shù)據(jù)總線的低8位上。一般為了使數(shù)據(jù)/地址總線的負(fù)載平衡,希望接在數(shù)據(jù)/地址總線高8位和低8位的設(shè)備數(shù)目最好相等。當(dāng)一個(gè)I/O設(shè)備接在數(shù)據(jù)總線的低8位(AD7AD0)上時(shí),這個(gè)I/O設(shè)備所包括的所有端口地址都將是偶數(shù)地址(A0=0);若一個(gè)I/O設(shè)備接在數(shù)據(jù)總線的高8位(AD15AD8)上時(shí),那么該設(shè)備包含的所有端口地址都是奇數(shù)地址(A0=1)。如果某種特殊I/O設(shè)備既可使用偶地址又可使用奇地址時(shí),此時(shí)必須將A0和BHE兩個(gè)信號(hào)結(jié)合起來作為I/O設(shè)備的選擇線。第22頁,共48頁,2023年,2月20日,星期四8086CPU對(duì)I/O設(shè)備的讀/寫操作與對(duì)存儲(chǔ)器的讀/寫操作類似。當(dāng)CPU與偶地址的I/O設(shè)備實(shí)現(xiàn)16位數(shù)據(jù)的存取操作時(shí),可在一個(gè)總線周期內(nèi)完成;當(dāng)CPU與奇地址的I/O設(shè)備實(shí)現(xiàn)16位數(shù)據(jù)的存取操作時(shí),要占用兩個(gè)總線周期才能完成。需要說明的是,8086/8088CPU的I/O指令可以用16位的有效地址A15A0來尋址0000FFFFH共64K個(gè)端口,但I(xiàn)BMPC系統(tǒng)中只使用了A9A010位地址來作為I/O端口的尋址信號(hào),因此,其I/O端口的地址僅為0003FFH共1K個(gè)。第23頁,共48頁,2023年,2月20日,星期四3.4從80286到Pentium系列的技術(shù)發(fā)展3.4.180x86寄存器組

寄存器在計(jì)算機(jī)中起著非常重要的作用,每個(gè)寄存器相當(dāng)于運(yùn)算器中的一個(gè)存儲(chǔ)單元,但由于寄存器位于CPU內(nèi)部,對(duì)它們進(jìn)行訪問時(shí)不需要啟動(dòng)一個(gè)總線周期,因此其存取速度要比存儲(chǔ)器快得多。寄存器用來存放計(jì)算過程中所需要的或所得到的各種信息,包括操作數(shù)地址、操作數(shù)以及運(yùn)算的中間結(jié)果等。第24頁,共48頁,2023年,2月20日,星期四對(duì)程序設(shè)計(jì)人員來講,了解CPU內(nèi)部寄存器結(jié)構(gòu)并掌握其使用方法是進(jìn)行匯編語言程序設(shè)計(jì)的關(guān)鍵和基礎(chǔ)。寄存器可分為程序可見寄存器和程序不可見寄存器兩大類。所謂程序可見寄存器,是指在匯編語言程序設(shè)計(jì)中可以通過指令來訪問的寄存器。程序不可見寄存器是指一般用戶程序中不能訪問而由系統(tǒng)所使用的寄存器。本節(jié)將從程序設(shè)計(jì)角度介紹80x86CPU內(nèi)部程序可見寄存器的結(jié)構(gòu)和使用方法,而對(duì)于那些程序不可見寄存器將在隨后介紹CPU結(jié)構(gòu)時(shí)對(duì)其做必要說明。第25頁,共48頁,2023年,2月20日,星期四從本章3.2.2節(jié)“8086/8088寄存器結(jié)構(gòu)”中可以看出,8086/8088CPU中程序可見寄存器可分為三類:通用寄存器、段寄存器和控制寄存器。80286之后的CPU中寄存器同樣也分為上述三類,只不過有關(guān)寄存器的功能和位數(shù)有所擴(kuò)充而已。圖3.15給出了80x86的程序可見寄存器組,下面分別加以說明。第26頁,共48頁,2023年,2月20日,星期四1.通用寄存器對(duì)于80386及其后續(xù)機(jī)型則是圖3.15中所示的完整的寄存器,它們是32位的通用寄存器,包括EAX、EBX、ECX、EDX、ESP、EBP、ESI和EDI。這些寄存器可以用來存放不同寬度的數(shù)據(jù)。其中,EAX、EBX、ECX和EDX可作為32位寄存器來用,其低16位既可作為一個(gè)16位寄存器來用(分別記為AX、BX、CX和DX),也可作為兩個(gè)8位寄存器來用(分別記為AH/AL、BH/BL、CH/CL和DH/DL);ESP、EBP、ESI和EDI可作為32位寄存器來用,其低16位也可用做一個(gè)16位寄存器(分別記為SP、BP、SI和DI)。需要注意的是,這些寄存器以字節(jié)或字的形式被訪問時(shí),不被訪問的其他部分不受影響。如訪問AH時(shí),EAX的高16位和低8位不受影響。第27頁,共48頁,2023年,2月20日,星期四圖3.1580x86CPU內(nèi)部程序可見寄存器組第28頁,共48頁,2023年,2月20日,星期四此外,在8086/8088以及80286進(jìn)行存儲(chǔ)器尋址時(shí),8個(gè)通用寄存器中只有地址指針寄存器(SP和BP)、變址寄存器(SI和DI)以及基址寄存器BX這5個(gè)寄存器可以用來存放操作數(shù)在存儲(chǔ)器段內(nèi)的偏移地址。在80386及其后續(xù)機(jī)型中,所有這8個(gè)32位通用寄存器既可以存放數(shù)據(jù),也可以存放地址,也就是說,這些寄存器都可以用來提供操作數(shù)在段內(nèi)的偏移地址。對(duì)于這8個(gè)通用寄存器的專用特性,80386及其后續(xù)機(jī)型的32位通用寄存器的專用特性與8086/8088以及80286的16位通用寄存器的專用特性是相同的,如ECX的計(jì)數(shù)特性,ESI和EDI分別作為字符串操作指令中源串和目的串的地址寄存器等。第29頁,共48頁,2023年,2月20日,星期四2.控制寄存器8086/8088和80286的控制寄存器包括指令寄存器IP和FLAGS兩個(gè)16位寄存器。80286中的這兩個(gè)寄存器與前面介紹的8086/8088中相同,只不過80286中的標(biāo)志寄存器FLAGS比8086/8088中的FLAGS多定義了兩個(gè)標(biāo)志,如圖3.16所示。80386及其后續(xù)機(jī)型也有兩個(gè)32位專用寄存器EIP和EFLAGS。它們的作用與相應(yīng)的16位寄存器相同。標(biāo)志寄存器FLAGS各位的定義如圖3.16所示,其中新定義位的作用將在后面涉及時(shí)介紹。第30頁,共48頁,2023年,2月20日,星期四圖3.1680x86標(biāo)志寄存器第31頁,共48頁,2023年,2月20日,星期四3.段寄存器與8086/8088CPU相同,80286CPU中也有4個(gè)段寄存器CS、DS、SS和ES,它們的功能在本章前面“8086/8088寄存器結(jié)構(gòu)”一節(jié)中已做了詳細(xì)介紹,在此不再贅述。在80386及其以后的80x86CPU中,除上述4個(gè)段寄存器外,又增加了2個(gè)段寄存器FS和GS,它們也是附加的數(shù)據(jù)段寄存器,如圖3.15所示。除非專門指定,一般情況下,各段在存儲(chǔ)器中的分配是由操作系統(tǒng)負(fù)責(zé)的。在80x86中,段寄存器和與其對(duì)應(yīng)存放偏移地址的寄存器之間有一種默認(rèn)的組合關(guān)系,這種默認(rèn)關(guān)系,80286與8086/8088相同(見表3.2),80386及其后續(xù)CPU中段寄存器與提供段內(nèi)偏移地址的寄存器之間的默認(rèn)組合如表3.10所示。第32頁,共48頁,2023年,2月20日,星期四表3.1080386及其后續(xù)CPU中段寄存器與提供段內(nèi)偏移地址的寄存器之間的默認(rèn)組合

段寄存器

提供段內(nèi)偏移地址的寄存器CS

EIP

DS

EAX、EBX、ECX、EDX、ESI、EDI或一個(gè)8位或32位數(shù)

SS

ESP或EBP

ES

EDI(用于字符串操作指令)

FS

無默認(rèn)

GS無默認(rèn)第33頁,共48頁,2023年,2月20日,星期四3.4.280x86存儲(chǔ)器管理存儲(chǔ)器管理是由微處理器的存儲(chǔ)器管理部件MMU提供的對(duì)系統(tǒng)存儲(chǔ)器資源進(jìn)行管理的機(jī)制,其目的是方便程序?qū)Υ鎯?chǔ)器的應(yīng)用。本節(jié)從應(yīng)用角度出發(fā),介紹80x86系列微處理器的存儲(chǔ)器管理機(jī)制。從8086/8088到Pentium,80x86系列微處理器的存儲(chǔ)器管理機(jī)制有了較大變化。8086/8088只有一種存儲(chǔ)器管理方式,即實(shí)地址方式(簡稱實(shí)方式);80286CPU具有兩種工作方式,即實(shí)方式和保護(hù)虛地址方式(簡稱保護(hù)方式);80386及其以后的CPU有三種工作方式,即實(shí)方式、保護(hù)方式和虛擬8086方式。第34頁,共48頁,2023年,2月20日,星期四

1.實(shí)地址方式(簡稱實(shí)方式)實(shí)方式是80x86系列CPU共有的存儲(chǔ)器管理模式,而8086/8088CPU只能工作在此方式下,正如3.3節(jié)所介紹的那樣,8086/8088CPU通過對(duì)存儲(chǔ)器分段來實(shí)現(xiàn)對(duì)1M個(gè)存儲(chǔ)器單元的直接訪問。CPU中BIU單元的地址加法器根據(jù)指令中給出的段地址和段內(nèi)偏移地址,通過將段地址乘以10H(16),即左移4位,再與段內(nèi)偏移量相加得到一個(gè)20位的物理地址,該20位的物理地址加載到20位的地址總線上,即可實(shí)現(xiàn)對(duì)8086/8088系統(tǒng)1M個(gè)存儲(chǔ)單元的訪問。第35頁,共48頁,2023年,2月20日,星期四80286、80386、80486以及Pentium的地址總線位數(shù)分別增加為24、32、32、36(見表3.1),但在實(shí)方式下,它們都只能使用低20位地址線,它們所能尋址的存儲(chǔ)空間與8086/8088一樣,也只有1MB。在實(shí)方式下,CPU把從指令中得到的邏輯地址(段地址:段內(nèi)偏移地址)轉(zhuǎn)換為20位物理地址。不管CPU的實(shí)際地址引腳有多少根,在此方式下工作時(shí),只能用其低20根地址線對(duì)1M個(gè)存儲(chǔ)單元進(jìn)行訪問。第36頁,共48頁,2023年,2月20日,星期四2.保護(hù)虛擬地址方式(簡稱保護(hù)方式)在實(shí)方式下,80286及其后續(xù)CPU只相當(dāng)于一個(gè)快速的8086,沒有真正發(fā)揮這些高性能CPU的作用。而這些CPU的特點(diǎn)是能可靠地支持多用戶系統(tǒng),即使是單用戶,也可支持多任務(wù)操作,這就要求用新的存儲(chǔ)器管理機(jī)制——保護(hù)方式對(duì)存儲(chǔ)器系統(tǒng)進(jìn)行管理。1)虛擬存儲(chǔ)器的概念虛擬存儲(chǔ)器(VirtualMemory)是一種存儲(chǔ)器管理技術(shù)。它提供比物理存儲(chǔ)器大得多的存儲(chǔ)空間,使程序設(shè)計(jì)人員在編寫程序時(shí),不用考慮計(jì)算機(jī)內(nèi)存的實(shí)際容量,就可以編寫并運(yùn)行比實(shí)際配置的物理存儲(chǔ)器空間大得多的用戶程序。第37頁,共48頁,2023年,2月20日,星期四虛擬存儲(chǔ)器由存儲(chǔ)器管理機(jī)制以及一個(gè)大容量的快速硬盤存儲(chǔ)器(內(nèi)存)或光盤支持。在程序運(yùn)行時(shí),只把虛擬地址空間的一小部分映射到主存儲(chǔ)器中,其余暫不使用部分則仍存儲(chǔ)在硬盤上。當(dāng)訪問主存儲(chǔ)器的范圍發(fā)生變化時(shí),再把虛擬存儲(chǔ)器的對(duì)應(yīng)部分從磁盤調(diào)入內(nèi)存,而對(duì)主存中目前不再使用的部分,可根據(jù)一定的替換策略將其從主存儲(chǔ)器送回到硬盤。虛擬存儲(chǔ)器地址是一種概念性的邏輯地址。虛擬存儲(chǔ)器系統(tǒng)是在存儲(chǔ)器體系層次結(jié)構(gòu)(輔存—主存—高速緩存)的基礎(chǔ)上,通過CPU內(nèi)的存儲(chǔ)器管理部件MMU,進(jìn)行虛擬地址和實(shí)地址自動(dòng)變換而實(shí)現(xiàn)的,對(duì)每個(gè)編程者是透明的,變址空間很大。第38頁,共48頁,2023年,2月20日,星期四2)虛擬存儲(chǔ)器的基本結(jié)構(gòu)按照主存(或內(nèi)存)與外存(輔助存儲(chǔ)器)之間信息交換時(shí)信息傳送單位的不同,虛擬存儲(chǔ)器可分為段式虛擬存儲(chǔ)器、頁式虛擬存儲(chǔ)器和段頁式虛擬存儲(chǔ)器三種。(1)段式虛擬存儲(chǔ)器。段是利用程序的模塊化性質(zhì),按照程序的邏輯結(jié)構(gòu)劃分成的多個(gè)相對(duì)獨(dú)立的部分。段作為獨(dú)立的邏輯單位可被其他程序段調(diào)用,這樣就形成段間連接,產(chǎn)生規(guī)模較大的程序,因此,把段作為信息單位在主存與外存之間傳送和定位是比較合理的。一般用段表來指明各段在主存中的位置。段表是由操作系統(tǒng)產(chǎn)生并存儲(chǔ)在主存中的一個(gè)可再定位段。第39頁,共48頁,2023年,2月20日,星期四把主存按段分配的存儲(chǔ)器管理方式稱為段式管理。段式管理系統(tǒng)的優(yōu)點(diǎn)是段的分界與程序的自然分界相對(duì)應(yīng);段的邏輯獨(dú)立性使它易于編譯、管理、修改和保護(hù),也便于多道程序共享;某些類型的段(如堆棧、隊(duì)列等)具有動(dòng)態(tài)可變長度,允許自由調(diào)度以便有效利用主存空間,但是,正因?yàn)槎蔚拈L度各不相同,段的起點(diǎn)和終點(diǎn)不定,給主存空間的分配帶來麻煩,而且容易在段間留下許多空余的存儲(chǔ)空間不好利用,造成浪費(fèi)。第40頁,共48頁,2023年,2月20日,星期四圖3.17給出了段式虛擬存儲(chǔ)器地址變換的原理。為了把虛擬地址(段號(hào):段內(nèi)偏移地址)變換為實(shí)存地址,需要一個(gè)段表,其格式如圖3.17的上半部分所示。裝入位為“1”表示該段已調(diào)入主存,為“0”則表示該段不在主存中;段的長度可大可小(其長度因程序而異),所以,段表中需要有長度指示。在訪問某段時(shí),如果段內(nèi)偏移地址值超過段的長度,則發(fā)生地址越界中斷。圖3.17下半部分表示了虛擬地址向?qū)嵈娴刂返霓D(zhuǎn)換過程。第41頁,共48頁,2023年,2月20日,星期四圖3.17段式虛擬存儲(chǔ)器地址變換第42頁,共48頁,2023年,2月20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論