2.2 Intel 80486 32位微處理器
80486微處理器是Intel公司于1989年推出的32位微處理器。它采用了1μm制造工藝,內部集成了120萬個晶體管;內外部數(shù)據(jù)總線和地址總線均為32位,可尋址4GB(232)的存儲空間,支持虛擬存儲管理技術,虛擬存儲空間為64TB;片內集成有浮點運算部件和8KB的Cache(L1 Cache),同時也支持外部Cache(L2 Cache);整數(shù)處理部件采用精簡指令集RISC,提高了指令的執(zhí)行速度;此外,80486微處理器還引進了時鐘倍頻技術和新的內部總線結構,從而使主頻可以超出100MHz。
2.2.1 Intel 80486微處理器內部結構
80486微處理器內部包括總線接口部件、指令預取部件、指令譯碼部件、控制和保護測試單元部件、整數(shù)執(zhí)行部件、分段部件、分頁部件,以及浮點運算部件和高速緩存(Cache)管理部件,其內部結構如圖2.10所示。
1.總線接口部件(BIU)
總線接口部件(BIU)與外部總線連接,用于管理訪問外部存儲器和I/O端口的地址、數(shù)據(jù)和控制總線。對處理器內部,BIU主要與指令預取部件和高速緩存部件交換信息,將預取指令存入指令代碼隊列。
BIU與Cache部件交換數(shù)據(jù)有三種情況:第一,向高速緩沖存儲器填充數(shù)據(jù),BIU一次從片外總線讀取16字節(jié)到Cache中;第二,如果高速緩沖存儲器的內容被處理器內部操作修改了,則修改的內容也由BIU寫回到外部存儲器中去;第三,如果一個讀操作請求所要訪問的存儲器操作數(shù)在高速緩沖存儲器中,則這個讀操作由BIU控制總線直接對外部存儲器進行操作。
在預取指令代碼時,BIU把從外部存儲器取出的指令代碼同時傳送給指令預取部件和內部高速緩沖存儲器,以便在下一次預取相同的指令時,可直接訪問高速緩沖存儲器。
2.指令預取部件(pre-fetcher)
80486 CPU內部有一個32字節(jié)的指令預取部件,在總線空閑周期,指令預取部件(prefetcher)形成存儲器地址,并向BIU發(fā)出預取指令請求。指令預取部件一次讀取16字的指令代碼存入指令代碼隊列中,指令代碼隊列遵循先進先出(FIFO,first in first out)的規(guī)則,自動地向輸出端移動。如果Cache在指令預取時命中,則不產(chǎn)生總線周期。當遇到跳轉、中斷、子程序調用等操作時,指令代碼隊列被清空。
3.指令譯碼部件(IDU)
指令譯碼部件(IDU,instruction decode unit)從指令代碼隊列中讀取指令并譯碼,將其轉換成相應控制信號。譯碼過程分兩步:首先,確定指令執(zhí)行時是否需要訪問存儲器,若需要,則立即產(chǎn)生總線訪問周期,使存儲器操作數(shù)在指令譯碼后能準備好;然后,產(chǎn)生對其他部件的控制信號。
4.控制和保護測試部件(CPTU)
控制部件(CPTU,control and protection test unit)對整數(shù)執(zhí)行部件、浮點運算部件和分段管理部件進行控制,使它們執(zhí)行已譯碼的指令。
5.整數(shù)執(zhí)行部件(IU)
整數(shù)執(zhí)行部件(IU,integer data-path unit)包括4個32位通用寄存器、兩個32位間址寄存器、兩個32位指針寄存器、一個標志寄存器、一個64位桶形移位寄存器和算術邏輯運算單元等。它能在一個時鐘周期內完成整數(shù)的傳送、加減運算、邏輯操作等。80486微處理器采用了RISC技術,并將微程序邏輯控制改為硬件布線邏輯控制,縮短了指令的譯碼和執(zhí)行時間,一些基本指令可在一個時鐘周期內完成。
兩組32位雙向總線將整數(shù)單元和浮點單元聯(lián)系起來,這些總線合起來可以傳送64位操作數(shù)。這組總線還將處理器單元與Cache聯(lián)系起來,通用寄存器的內容通過這組總線傳向分段單元,并用于產(chǎn)生存儲器單元的有效地址。
6.浮點運算部件(FPU)
80486微處理器內部集成了一個增強型80387數(shù)字協(xié)處理器,稱為浮點運算部件(FPU,floating point unit),用于完成浮點數(shù)運算。由于FPU與CPU集成封裝在一個芯片內,而且它與CPU之間的數(shù)據(jù)通道是64位的,所以當它在內部寄存器和片內Cache取數(shù)時,運行速度會極大提高。
7.分段部件(SU)和分頁部件(PU)
80486微處理器設置了分段部件(SU,segmentation unit)和分頁部件(PU,paging unit),實現(xiàn)存儲器保護和虛擬存儲器管理。分段部件將邏輯地址轉換成線性地址,采用分段Cache可以提高轉換速度。分頁部件用來完成虛擬存儲,把分段部件形成的線性地址進行分頁,轉換成物理地址。為了提高頁轉換速度,分頁部件中還集成了一個轉換后援緩沖器(TLB,the translation look-aside buffer)。
8.高速緩沖存儲器部件(CU)
80486微處理器內部集成了一個數(shù)據(jù)/指令混合型Cache,稱為高速緩沖存儲器部件(CU,cache unit)。在絕大多數(shù)的情況下,CPU都能在片內Cache中存取數(shù)據(jù)和指令,減少了CPU的訪問時間。在與80486 DX配套的主板設計中,采用128~256KB的大容量二級Cache來提高Cache的命中率,片內Cache(L1 Cache)與片外Cache(L2 Cache)合起來的命中率可達98%。CPU片內總線寬度高達128位,總線接口部件將以一次16字節(jié)的方式在Cache與內存之間傳輸數(shù)據(jù),大大提高了數(shù)據(jù)處理速度。80486微處理器中的Cache部件與指令預取部件緊密配合,一旦預取代碼未在Cache中命中,BIU就對Cache進行填充,從內存中取出指令代碼,同時送Cache部件和指令預取部件。
2.2.2 Intel 80486微處理器寄存器結構
80486微處理器的寄存器按功能可分為4類:基本寄存器、系統(tǒng)寄存器、調試和測試寄存器以及浮點寄存器。
80486微處理器的寄存器從總體上還可分為程序可見和不可見兩類。在程序設計期間要使用的、并可由指令來修改其內容的寄存器,稱為程序可見寄存器。在程序設計期間,不能直接尋址的寄存器,稱為程序不可見寄存器,但是在程序設計期間可以被間接引用。程序不可見寄存器用于保護模式下控制和操作存儲器系統(tǒng)。
1.基本寄存器(base architecture registers)
基本寄存器包括8個通用寄存器EAX、EBX、ECX、EDX、EBP、ESP、EDI和ESI;一個指令指針寄存器EIP;6個段寄存器CS、DS、ES、SS、FS和GS;一個標志寄存器EFLAGS。80486微處理器的基本寄存器組如圖2.11所示,它們都是程序可見寄存器。
(1)通用寄存器(GPR)
通用寄存器(GPR,general purpose registers)包括EAX,EBX,ECX,EDX,EBP,ESP,EDI和ESI。
EAX、EBX、ECX、EDX都可以作為32位寄存器、16位寄存器或者8位寄存器使用。EAX可作為累加器用于乘法、除法及一些調整指令。對于這些指令,累加器常表現(xiàn)為隱含形式。EAX寄存器也可以保存被訪問存儲器單元的偏移地址。EBX常用于地址指針,保存被訪問存儲器單元的偏移地址。ECX經(jīng)常用作計數(shù)器,用于保存指令的計數(shù)值。ECX寄存器也可以保存訪問數(shù)據(jù)所在存儲器單元的偏移地址。用于計數(shù)的指令包括重復的串指令、移位指令和循環(huán)指令。移位指令用CL計數(shù),重復的串指令用CX計數(shù),循環(huán)指令用CX或ECX計數(shù)。EDX常與EAX配合,用于保存乘法形成的部分結果,或者除法操作前的被除數(shù),它還可以尋址存儲器數(shù)據(jù)。
EBP和ESP是32位寄存器,也可作為16位寄存器BP、SP使用,常用于堆棧操作。EDI和ESI常用于串操作,EDI用于尋址目標數(shù)據(jù)串,ESI用于尋址源數(shù)據(jù)串。
(2)指令指針寄存器(EIP)
指令指針寄存器(EIP,extra instruction pointer)存放指令的偏移地址。微處理器工作在實地址模式下,EIP與IP(16位)寄存器相同。80486 CPU工作于保護模式時,EIP為32位寄存器。EIP總是指向程序的下一條指令,(即ESP的內容自動加1,指向下一個存儲單元)。EIP用于微處理器在程序中順序地尋址代碼段內的下一條指令。當遇到跳轉指令或調用指令時,指令指針寄存器的內容需要修改。
(3)標志寄存器(EFR)
標志寄存器(EFR,extra flags register)包括狀態(tài)位、控制位和系統(tǒng)標志位,用于指示微處理器的狀態(tài)并控制微處理器的操作。80486 CPU標志寄存器如圖2.12所示。
① 狀態(tài)標志位:包括進位標志CF、奇偶標志PF、輔助進位標志AF、零標志ZF、符號標志SF和溢出標志OF。
② 控制標志位:包括陷阱標志(單步操作標志)TF、中斷標志IF和方向標志DF。80486 CPU標志寄存器中的狀態(tài)標志位和控制標志位與8086 CPU標志寄存器中的狀態(tài)標志位和控制標志位的功能完全一樣,這里不再贅述。
③ 系統(tǒng)標志位和IOPL字段:在EFR寄存器中的系統(tǒng)標志位和IOPL字段,用于控制操作系統(tǒng)或執(zhí)行某種操作。它們不能被應用程序修改。
IOPL(I/O privilege level field):輸入/輸出特權級標志位。它規(guī)定了能使用I/O敏感指令的特權級。在保護模式下,利用這兩位編碼可以分別表示0,1,2,3這4種特權級,0級特權最高,3級特權最低。在80286以上的處理器中有一些I/O敏感指令,如CLI(關中斷)、STI(開中斷)、IN(輸入)、OUT(輸出)。IOPL的值規(guī)定了能執(zhí)行這些指令的特權級。只有特權級高于IOPL的程序才能執(zhí)行I/O敏感指令;而特權級低于IOPL的程序,如果企圖執(zhí)行敏感指令,則會引起異常中斷。
NT(nested task flag):任務嵌套標志。在保護模式下,指示當前執(zhí)行的任務嵌套于另一任務中。當任務被嵌套時,NT=1;否則NT=0。
RF(resume flag):恢復標志。與調試寄存器一起使用,用于保證不重復處理斷點。當RF=1時,即使遇到斷點或故障,也不產(chǎn)生異常中斷。
VM(virtual-8086 mode flag):虛擬8086模式標志,用于在保護模式系統(tǒng)中選擇虛擬操作模式。VM=1,啟用虛擬8086模式;VM=0,返回保護模式。
AC(alignment check flag):隊列檢查標志。如果在不是字或雙字的邊界上尋址一個字或雙字,則隊列檢查標志被激活。
(4)段寄存器(SR)
80486微處理器包括6個段寄存器(SR,segment registers),分別存放段基址(實地址模式)或選擇符(保護模式),與微處理器中的其他寄存器聯(lián)合生成存儲器單元的物理地址。80486微處理器段寄存器如圖2.13所示。
① 代碼段寄存器CS:代碼段是一個保存微處理器程序代碼(程序和過程)的存儲區(qū)域。CS存放代碼段的起始地址。在實地址模式下,它定義一個64KB存儲器段的起點。在保護模式下工作時,它選擇一個描述符。這個描述符描述程序代碼所在存儲器單元的起始地址和長度。在保護模式下,代碼段的長度為4GB。
② 數(shù)據(jù)段寄存器DS:數(shù)據(jù)段是一個存儲數(shù)據(jù)的存儲區(qū)域,程序中使用的大部分數(shù)據(jù)都在數(shù)據(jù)段中。DS用于存放數(shù)據(jù)段的起始地址。可以通過偏移地址或者其他含有偏移地址的寄存器,尋址數(shù)據(jù)段內的數(shù)據(jù)。在實地址模式下工作時,它定義一個64KB數(shù)據(jù)存儲器段的起點。在保護模式下,數(shù)據(jù)段的長度為4GB。
③ 堆棧段寄存器SS:SS用于存放堆棧段的起始地址。堆棧指針寄存器ESP確定堆棧段內當前的入口地址。EBP寄存器也可以尋址堆棧段內的數(shù)據(jù)。
④ 附加段寄存器ES:ES存放附加數(shù)據(jù)段的起始地址,常用于存放數(shù)據(jù)段的段基址或者在串操作中作為目標數(shù)據(jù)段的段基址。
⑤ 附加段寄存器FS和GS:FS和GS是附加的數(shù)據(jù)段寄存器,作用與ES相同,以便允許程序訪問兩個附加的數(shù)據(jù)段。
在保護模式下,每個段寄存器都含有一個程序不可見區(qū)域。這些寄存器的程序不可見區(qū)域通常稱為描述符的高速緩沖存儲器(descriptor cache),因此它也是存儲信息的小存儲器。這些描述符高速緩沖存儲器與微處理器中的一級或二級高速緩沖存儲器不能混淆。每當段寄存器中的內容改變時,基地址、段限和訪問權限就裝入段寄存器的程序不可見區(qū)域。例如,當一個新的段基址存入段寄存器時,微處理器就訪問一個描述符表,并把描述符表裝入段寄存器的程序不可見的描述符高速緩沖存儲器區(qū)域內。這個描述符一直保存在此處,并在訪問存儲器時使用,直到段基址再次改變。這就允許微處理器在重復訪問一個內存段時,不必每次都去查詢描述符表,因此稱為描述符高速緩沖存儲器。
2.系統(tǒng)寄存器(system-level registers)
在保護模式下操作時,存儲器系統(tǒng)中增加了全局描述符表、局部描述符表和中斷描述符表。為了訪問和指定這些表的地址,80486微處理器系統(tǒng)寄存器包括4個系統(tǒng)地址寄存器和4個控制寄存器。
(1)系統(tǒng)地址寄存器(system address registers)
系統(tǒng)地址寄存器包括全局描述符表寄存器(GDTR,global descriptor table register)、局部描述符表寄存器(LDTR,local descriptor table register)、中斷描述符表寄存器(IDTR,interrupt descriptor table register)和任務寄存器(TR,task register)。這些寄存器都是程序不可見的寄存器。80486微處理器系統(tǒng)地址寄存器如圖2.14所示。
系統(tǒng)地址寄存器和段寄存器一起,為操作系統(tǒng)完成內存管理、多任務環(huán)境、任務保護提供硬件支持。
① GDTR是一個48位的寄存器,在存儲器中定義了一個全局描述表(GDT,global descriptor table)。GDTR用來存放全局描述符表GDT的32位基地址和16位段限值。16位段限值規(guī)定了全局描述符表GDT的大小(按字節(jié)計算)。段限值要比表的實際值小1。例如,如果表長為256個字節(jié),那么,段限值等于00FFH。GDTR中的32位基地址,指示GDT在存儲器中的起始地址。
② IDTR是一個48位的寄存器,與GDTR一樣,在存儲器中定義了一個中斷描述符表IDT(interrupt descriptor table)。IDTR用來存放中斷描述符表IDT的32位基地址和16位段限值。80486微處理器為每個中斷定義了一個中斷描述符,所有的中斷描述符集中存放在中斷描述符表IDT中,IDTR指出中斷描述符表IDT在內存中的位置。
③ LDTR是一個80位的寄存器,由16位段選擇符(程序可見部分)和64位描述符(程序不可見部分)組成,用于保存局部描述符表(LDT,local descriptor table)的32位基地址、16位段限值和16位訪問權限等。
④ TR是一個80位的寄存器,由16位段選擇符和64位描述符組成,提供任務狀態(tài)段(TSS,task-state segment)在內存中的位置。在微機中,任務通常就是程序的進程或應用程序。任務狀態(tài)寄存器完成任務的切換。任務切換允許微處理器在足夠短的時間內實現(xiàn)任務之間的切換,也允許多任務系統(tǒng)以簡單而規(guī)則的方式,從一個任務切換到另一個任務。
(2)控制寄存器(CR,control registers)
80486微處理器中有4個32位控制寄存器CR0~CR3,用來保存全局性與任務無關的機器狀態(tài)。其中,CR1為與后續(xù)的Intel CPU兼容而保留,CR2中存放頁故障的線性地址。下面對CR0、CR3的格式及功能進行說明。
① 控制寄存器CR0
CR0中包含系統(tǒng)操作模式控制位和系統(tǒng)狀態(tài)控制位,共定義了11位,如圖2.15所示。
PE(protection enable):保護模式允許位。PE=1,系統(tǒng)在保護模式下運行;PE=0,系統(tǒng)在實地址模式下運行。
MP(monitor coprocessor):監(jiān)視協(xié)處理器位。MP=1,表示系統(tǒng)中有一個協(xié)處理器;否則MP=0。
EM(emulation):仿真協(xié)處理器位。EM=1,表示微處理器中沒有仿真協(xié)處理器;否則EM=0。
TS(task switched):任務轉換位。每次任務轉換操作完成時,主處理器都自動將TS位置1。在執(zhí)行浮點運算指令時,需要對該位進行測試。
ET(extension type):協(xié)處理器類型標志,用于指示系統(tǒng)中協(xié)處理器的類型。ET=1,表示系統(tǒng)使用與80387兼容的32位協(xié)處理器。
NE(numeric error):數(shù)值異常位。控制浮點運算中未被屏蔽的異常事故。NE=1,允許報告浮點數(shù)值異常。當NE=0,且WP(write protect):寫保護。WP=1,表示禁止系統(tǒng)對用戶級只讀頁的訪問,實行寫保護;WP=0,允許系統(tǒng)對用戶級只讀頁進行訪問。
AM(alignment mask):對齊標志位。AM=1,允許自動對齊檢查;AM=0,不允許。
NW(not write-through):不通寫位。當NW=0,CD=0時,允許對命中的Cache進行通寫,這是Cache工作的必要條件;當NW=1,CD=1時,不允許通寫。
CD(cache disable):允許Cache位。當CD=0時,系統(tǒng)內部的Cache允許使用。當CD=1時,若訪問Cache“脫靶”,則不填充Cache;但是,若訪問Cache“命中”,則Cache仍可正常工作。若要完全使Cache停止工作,則必須刷新Cache。
PG(paging):允許分頁位。PG位用來指示分頁管理機構是否進行工作。PG=1,分頁管理機構工作,允許分頁;PG=0,分頁管理機構不工作。
② 控制寄存器CR3
CR3為CPU提供當前任務的頁目錄表地址。只有當CR0中的PG=1時,才能使用CR3,其中高20位存放頁目錄表的物理基地址。CR3中的PCD和PWT位僅對80486微處理器有效。控制寄存器CR3如圖2.16所示。
PWT(page-level writes transparent):頁級通寫位。對內部Cache而言,PWT控制現(xiàn)行頁目錄下某些Cache頁回寫,某些Cache頁通寫。PWT=1,Cache頁進行通寫;PWT=0,Cache頁進行回寫。PWT位驅動PWT引腳,以控制內部Cache通寫或回寫。
PCD(page-level cache disable):禁止頁高速緩沖位。PCD=1,對頁目錄不進行高速緩存;PCD=0,進行高速緩存。PCD位驅動PCD引腳控制外部Cache是否工作。
3.調試寄存器和測試寄存器(debug and test registers)
80486微處理器提供了8個32位可編程調試寄存器DR0~DR7和8個32位可編程測試寄存器TR0~TR7,用于支持系統(tǒng)的調試功能。
(1)調試寄存器(DR,debug registers)
8個32位的可編程調試寄存器DR0~DR7,用來支持系統(tǒng)的Debug調試功能。DR0~DR3為斷點寄存器,用來存放斷點的線性地址,各個斷點的發(fā)生條件可由調試寄存器DR7分別設定;DR4、DR5保留未用;DR6是調試狀態(tài)寄存器,用來說明是哪一種性質的斷點及斷點異常是否發(fā)生;DR7為斷點控制寄存器,指明斷點發(fā)生的條件及斷點的類型。8個調試寄存器如圖2.17所示。
① 調試控制寄存器(debug control register)DR7
DR7用于指示中斷發(fā)生的條件及斷點的類型。
L3~L0(local breakpoint enable flags):局部斷點使能標志位。當Li(i=0~3)為1時,表示i號斷點局部允許使用,斷點僅在某一任務內發(fā)生,Li位在任務轉換時清0。若要使某個斷點在某個任務中有效,則該任務在TSS中的T位應置為1;此后,在任務轉換取得CPU控制權時發(fā)生異常,可在其處理程序中將Li位置1,以保證該斷點在此任務內有效。
G3~G0(global breakpoint enable flags):全局斷點使能標志位。當Gi(i=0~3)為1時,表示i號斷點全局允許使用,無論是操作系統(tǒng)還是某一任務,只要滿足條件便會產(chǎn)生中斷。
LE和GE(local and global exact breakpoint enable flags):局部斷點、全局斷點類型標志位。當LE=1,GE=1時,表示全局斷點或局部斷點為精明斷點。精明斷點為立即報告的斷點。非精明斷點為可以隔若干條指令后再報告或不報告的斷點。
GD(general detect enable flag):調試寄存器保護標志位。當GD=1時,調試寄存器處于保護狀態(tài),并產(chǎn)生中斷。
R/W3~R/W0(read/Write fields):發(fā)生中斷時系統(tǒng)讀/寫標志位。R/W3~R/W0分別指示L3~L0局部斷點和G3~G0全局斷點發(fā)生中斷時,系統(tǒng)在進行何種操作。
LEN3~LEN0(length fields):斷點地址存放的數(shù)據(jù)長度。LEN3~LEN0分別指示斷點地址寄存器DR3~DR0在存儲器中存放的情況。
② 調試狀態(tài)寄存器(debug status register)DR6
DR6指示調試程序時異常發(fā)生的原因,當調試異常發(fā)生時,DR6的有關位自動置1。為避免在識別各種調試異常時的混亂,調試服務程序返回前應復位DR6。
B3~B0(breakpoint condition detected flags):斷點異常發(fā)生指示位。當Bi(i=0~3)為1時,表示對應斷點的異常已經(jīng)發(fā)生。
BD(debug register access detected flag):調試寄存器處理檢測位。當BD=1時,表明下一條指令將讀/寫調試寄存器。
BS(single step flag):單步異常標志位。當BS=1時,表示異常是由標志寄存器中TF=1時單步自陷引起的。
BT(task switch flag):任務轉換標志位。當BT=1時,表示因為轉換而發(fā)生異常。
這些調試寄存器給80486微處理器帶來了先進的調試功能,如設置數(shù)據(jù)斷點、代碼斷點(包括ROM斷點)和對任務轉換進行調試。
(2)測試寄存器TR
80486微處理器提供了5個32位測試寄存器(test registers)TR3~TR7,用于存放測試控制命令。其中,TR3、TR4和TR5用于高速緩存Cache的測試,TR6和TR7用于轉換后援緩沖器TLB的測試。
4.浮點寄存器(floating-point registers)
80486微處理器包括8個80位通用寄存器,兩個48位寄存器(指令指針寄存器和數(shù)據(jù)指針寄存器),三個16位寄存器(控制寄存器、狀態(tài)寄存器和標志寄存器)。這些寄存器主要用于浮點運算。以上寄存器在80486微處理器不同工作模式下的應用情況見表2.5。
表2.5 80486微處理器寄存器在不同工作模式下的應用情況表
80486微處理器采用PGA封裝形式,共有168個引腳,其中包括30個地址引腳、32個數(shù)據(jù)引腳、35個控制引腳、24個VCC引腳、28個VSS引腳和19個空腳。80486微處理器引腳信號如圖2.18所示。
1.時鐘信號
CLK(clock):時鐘信號,為CPU提供基本的定時信號和工作頻率。
2.地址總線(address bus)
A31~A2(address lines):32位地址總線,三態(tài),輸出。
A31~A2與
i=0~3)有效時,選擇相應的存儲體,然后由A31~A2選擇相應的字節(jié)進行讀/寫操作。尋址I/O空間時,只有A15~A2和
i=0~3)有效,尋址64KB的I/O空間。
3.數(shù)據(jù)總線(data bus)
D31~D0(data lines):32位雙向數(shù)據(jù)總線,可以傳輸8位、16位和32位數(shù)據(jù)。
4.數(shù)據(jù)奇偶校驗(data parity)
DP3~DP0(data parity):數(shù)據(jù)奇偶校驗信號,雙向。DP3~DP0分別對應32位數(shù)據(jù)中字節(jié)3至字節(jié)0的校驗位。
5.數(shù)據(jù)總線寬度控制(bus size control)
6.總線周期定義(bus cycle definition)
表2.6 總線周期編碼表
8.突發(fā)控制(burst control)
9.中斷控制(interrupts)
RESET(reset):復位信號,輸入,高電平有效。當RESET有效時,系統(tǒng)復位。系統(tǒng)復位后,內部寄存器的值見表2.7。
表2.7 系統(tǒng)復位后內部寄存器的值
NMI(non-maskable interrupt):非屏蔽中斷請求信號,輸入,上升沿有效。當NMI有效時,表明外部有非屏蔽中斷請求信號輸入。
10.總線仲裁(bus arbitration)
HOLD(bus hold request):總線請求信號,輸入,高電平有效。HOLD信號由另一個總線主控設備產(chǎn)生,請求CPU讓出對總線的控制權。
HLDA(hold acknowledge):總線請求響應信號,輸出,高電平有效。HLDA信號是對HOLD信號的應答,當HLDA為高電平時,表示CPU已讓出對總線的控制權。
BREQ(bus request):內部總線請求信號,輸出,高電平有效。當BREQ為高電平時,表明CPU內部提出一個總線請求,此時CPU正在控制總線。
11.高速緩存無效(cache invalidation)
AHOLD(address hold):地址保持請求信號,輸入,高電平有效。AHOLD信號決定地址線A31~A4是否接受地址輸入。此信號在高速緩存無效周期時有效。
12.頁面高速緩存控制(page cache ability)
PWT(page write-through):頁面通寫控制信號,輸出,高電平有效。當PWT為高電平時,規(guī)定當前Cache頁為通寫方式;當PWT為低電平時,規(guī)定當前Cache頁為回寫方式。由于80486微處理器片內Cache規(guī)定為通寫方式,因此PWT信號只對外部Cache有效。它反映CR3、頁目錄項或頁表項中PWT位的狀態(tài)。
PCD(page cache disable):頁面高速緩存禁止信號,輸出,高電平有效。當PCD為高電平時,禁止在Cache頁面中進行緩存;當PCD為低電平時,允許Cache頁面進行緩存。它反映CR3、頁目錄項或頁表項中PCD位的狀態(tài)。
13.高速緩存控制(cache control)
14.地址屏蔽(address mask)
20及以上地址,使8048微處理器仿真808微處理器的1MB存儲器地址。只有CPU工作在實地址模式下,
2.2.4 Intel 80486微處理器的存儲器組織及輸入/輸出結構
1.存儲器組織與I/O結構
80486微處理器有32條地址總線,可尋址232=4GB的存儲器空間,地址范圍為00000000H~FFFFFFFFH。32條地址總線中的低16位地址用于對64K I/O端口的尋址,地址范圍為0000H~FFFFH。80486微處理器存儲器與I/O地址空間如圖2.19所示。
2.存儲器尋址
80486 CPU的地址總線A31~A2與字節(jié)允許信號1和A0這兩條地址線,其實是,在CPU內部利用A1和A0這兩條地址線經(jīng)譯碼,產(chǎn)生了字節(jié)允許信號
31~A2與字節(jié)允許信號
表2.8 A31~A2與
表2.9 由于80486微處理器的數(shù)據(jù)總線為32位,所以存儲器和I/O地址空間都是針對32位數(shù)據(jù)寬度來組織的,如圖2.20所示。
2.2.5 Intel 80486微處理器的工作模式
從操作系統(tǒng)的角度看,Intel 80486微處理器有三種工作模式:實地址模式、保護模式和虛擬8086模式。當微處理器復位后,系統(tǒng)自動進入實地址模式。通過設置控制寄存器CR0中的保護模式允許位PE,可以進行實地址模式和保護模式之間的轉換。執(zhí)行IRET指令或進行任務切換,可由保護模式轉移到虛擬8086模式。
虛擬8086模式是一種既有保護功能又能執(zhí)行16位微處理器軟件的工作方式。虛擬8086模式的工作原理與保護模式相同,但程序指定的邏輯地址與8086微處理器相同。虛擬8086模式可以看作保護模式的一種子方式。
1.實地址模式(real mode)
實地址模式是最基本的工作模式。實地址模式與16位微處理器8086/8088的實地址模式保持兼容,原有16位微處理器的程序不加任何修改就可以在80486微處理器實地址模式下運行。80486微處理器的實地址模式具有更強的功能,增加了寄存器,擴充了指令,可進行32位操作。
8088/8086只能工作于實地址模式,80286及其以上的微處理器可工作于實地址模式、保護模式和虛擬8086模式。
實地址模式操作方式只允許微處理器尋址第一個1MB存儲器空間,存儲器中第一個1MB存儲單元稱為實地址模式存儲器或常規(guī)內存。DOS操作系統(tǒng)要求微處理器工作于實地址模式。當80486微處理器工作于實地址模式時,存儲器的管理方式與8086微處理器存儲器的管理方式完全相同,這里不再贅述。
2.保護模式(protected virtual address mode/protected mode)
通常在程序運行過程中,應防止以下情況的發(fā)生:
① 應用程序破壞系統(tǒng)程序;
② 某一應用程序破壞了其他應用程序;
③ 錯誤地把數(shù)據(jù)當作程序運行。
為了避免以上情形的發(fā)生,所采取的措施稱作“保護”。
保護模式的特點是引入虛擬存儲器的概念,同時可使用附加的指令集,所以80486微處理器支持多任務操作。在保護模式下,80486微處理器可訪問的物理存儲空間為4GB(232),程序可用的虛擬存儲空間為64TB(246)。
在保護模式下,存儲器尋址(80286及其以上的微處理器)允許訪問第一個1MB及其以上的存儲器內的數(shù)據(jù)和程序。尋址這個擴展的存儲器段,需要更改用于實地址模式存儲器尋址的段基址加偏移地址的機制。
在保護模式下,當尋址擴展內存中的數(shù)據(jù)和程序時,仍然使用偏移地址訪問位于存儲器段內的信息。與實地址模式的區(qū)別是:實地址模式下的段基址由段寄存器提供;而在保護模式下,段寄存器里存放著一個選擇符(selector),用于選擇描述符表內的一個描述符(descriptor)。描述符描述存儲器段的位置、長度和訪問權限。由于段基址加偏移地址仍然用于訪問第一個1MB存儲器內的數(shù)據(jù),因此保護模式下的指令和實地址模式下的指令完全相同。
保護模式和實地址模式的不同之處在于存儲器地址空間的擴大(由1MB擴展到4GB),以及存儲器管理機制的不同。
3.虛擬8086模式(virtual 8086 mode)
80486微處理器允許在實地址模式和虛擬8086模式下執(zhí)行8086的應用程序。虛擬8086模式為系統(tǒng)設計人員提供了80486微處理器保護模式的全部功能,因而具有更大的靈活性。有了虛擬8086模式,80486微處理器不僅可以執(zhí)行80486微處理器操作系統(tǒng)及其應用程序,同時還可以執(zhí)行8086微處理器操作系統(tǒng)及其應用程序。在一臺多用戶的80486微處理器的計算機中,多個用戶可以同時使用計算機。
在虛擬8086模式下,允許以實地址模式相同的形式應用段寄存器,形成現(xiàn)行基地址。通過使用分頁功能,就可以把虛擬8086模式下的1MB地址空間映射到80486微處理器的4GB的物理空間中的任何位置。
2.2.6 Intel 80486微處理器總線操作
1.總線
總線是計算機各部件之間傳遞信息的通道,按其作用不同,分為以下三類。
① 內部總線:CPU芯片與其他芯片之間的連線。
② 系統(tǒng)總線:各集成電路板之間的連線。
③ 外部總線:微機系統(tǒng)與其他設備之間的連線。
2.總線操作
微機系統(tǒng)各部件之間的信息交換是通過總線操作周期完成的,一個總線周期通常分為以下4個階段。
① 總線請求和仲裁階段:當有多個模塊提出總線請求時,必須由仲裁機構仲裁,以確定將總線的使用權分配給哪個模塊。
② 尋址階段:取得總線控制權的模塊即主模塊,經(jīng)總線發(fā)出本次要訪問的存儲器或I/O端口的地址和相關命令。
③ 數(shù)據(jù)傳送階段:主模塊與其他模塊之間進行數(shù)據(jù)傳送。
④ 結束階段:主模塊將有關信息從總線上撤除,主模塊交出對總線的控制權。
3.時鐘周期、總線周期和指令周期
① 時鐘周期:CPU執(zhí)行指令的最小時間單位,又稱T狀態(tài)。它通常與微機的主頻有關。
② 總線周期:CPU對存儲器或I/O端口完成一次讀/寫操作所需的時間。例如,8086微處理器的基本總線周期由4個時鐘周期T1~T4組成,而80486微處理器的基本總線周期由T1和T2兩個時鐘周期組成。當外設速度較慢時,可插入等待周期Tw。
③ 指令周期:CPU執(zhí)行一條指令所需要的時間。指令周期由若干個總線周期組成,不同指令執(zhí)行的時間不同。同一功能的指令,當尋址方式不同時,所需要的時間也不同。
CPU執(zhí)行不同指令時,時間有很大的差別,但每條指令都有各自固定的時序,大多數(shù)指令由存儲器讀/寫、I/O端口讀/寫、中斷響應等基本的總線周期組成。