80486

80486

80486是Intel公司1989年推出的32位微處理器。

介紹


80486
80486
它採用了1μm(微米)製造工藝,內部集成了120萬個晶體管。內外部數據匯流排是32位,地址匯流排為32位,可定址4GB的存儲空間,支持虛擬存儲管理技術,虛擬存儲空間為64TB。片內集成有浮點運算部件和8KB的cache(L1 cache),同時也支持外部cache(L2 cache)。整數處理部件採用精簡指令集RISC結構,提高了指令的執行速度。此外,80486微處理器還引進了時鐘倍頻技術和 新的內部匯流排結構,從而使主頻可以超出100MHz。

內部結構


80486 CPU內部包括匯流排介面部件、指令預取部件、指令解碼部件、控制和保護測試單元部件、整數執行部件、分段部件、分頁部件,以及浮點運算部件和高速緩存(cache)管理部件。
1.匯流排介面部件:
匯流排介面部件(BIU)與外部匯流排連接,用於管理訪問外部存儲器和I/O埠的地址、數據和控制匯流排。對處理器內部,BIU主要與指令預取部件和高速緩存部件交換信息,將預取指令存入指令代碼隊列。
BIU與cache部件交換數據有三種情況:一是向高速緩衝存儲器填充數據,BIU一次從片外匯流排讀取16個位元組到cache;二是如果高速緩衝存儲器的內容被處理器內部操作修改了,則修改的內容也由BIU寫回到外部存儲器中去;三是如果一個讀操作請求所要訪問的存儲器操作數不在高速緩衝存儲器中,則這個讀操作便由BIU控制匯流排直接對外部存儲器進行操作。
在預取指令代碼時,BIU把從外部存儲器取出的指令代碼同時傳送給代碼預取部件和內部高速緩衝存儲器,以便在下一次預取相同的指令時,可直接訪問高速緩衝存儲器。
2.指令預取部件:
80486 CPU內部有一個32位元組的指令預取隊列,在匯流排空閑周期,指令預取部件(pre-fetcher)形成存儲器地址,並向BIU發出預取指令請求。預取部件一次讀取16個位元組的指令代碼存入預取隊列中,指令隊列遵循先進先出FIFO(first in first out)的規則,自動地向輸出端移動。如果cache在指令預取時命中,則不產生匯流排周期。當遇到跳轉、中斷、子程序調用等操作時,預取隊列被清空。
3.指令解碼部件:
指令解碼部件IDU(instruction decode unit)從指令預取隊列中讀取指令並解碼,將其轉換成相應控制信號。解碼過程分兩步:首先確定指令執行時是否需要訪問存儲器,若需要則立即產生匯流排訪問周期,使存儲器操作數在指令解碼后能準備好;然後產生對其他部件的控制信號。
4.控制和保護測試單元部件:
控制部件CPTU(control and protection test unit)對整數執行部件、浮點運算部件和分段管理部件進行控制,使它們執行已解碼的指令。
5.整數執行部件:
整數執行部件IU(integer data-path unit)包括四個32位通用寄存器、兩個32位間址寄存器、兩個32位指針寄存器、一個標誌寄存器、一個64位桶形移位寄存器和算術邏輯運算單元等。它能在一個時鐘周期內完成整數的傳送、加減運算、邏輯操作等。80486 CPU採用了RISC技術,並將微程序邏輯控制改為硬體布線邏輯控制,縮短了指令的解碼和執行時間,一些基本指令可在一個時鐘周期內完成。
兩組32位雙向匯流排將整數單元和浮點單元聯繫起來,這些匯流排合起來可以傳送64位操作數。這組匯流排還將處理器單元與cache聯繫起來,通用寄存器的內容通過這組匯流排傳向分段單元,並用於產生存儲器單元的有效地址。
6.浮點運算部件:
80486 CPU內部集成了一個增強型80487數學協處理器,稱為浮點運算部件FPU(floating point unit),用於完成浮點數運算。由於FPU與CPU集成封裝在一個晶元內,而且它與CPU之間的數據通道是64位的,所以當它在內部寄存器和片內Cache取數時,運行速度會極大提高。
7.分段部件和分頁部件:
80486 CPU設置了分段部件SU(segmentation unit)和分頁部件PU(paging unit),實現存儲器保護和虛擬存儲器管理。分段部件將邏輯地址轉換成線性地址,採用分段cache可以提高轉換速度。分頁部件用來完成虛擬存儲,把分段部件形成的線性地址進行分頁,轉換成物理地址。為提高頁轉換速度,分頁部件中還集成了一個轉換後援緩衝器TLB(the translation look-aside buffer)。
8.Cache管理部件:
80486 CPU內部集成了一個數據/指令混合型cache稱為高速緩衝存儲器管理部件CU(cache unit)。在絕大多數的情況下,CPU都能在片內cache中存取數據和指令,減少了CPU的訪問時間。在與80486 DX配套的主板設計中,採用128KB~256KB的大容量二級cache來提高cache的命中率,片內cache(L1 cache)與片外cache(L2 cache)合起來的命中率可達98%。CPU片內匯流排寬度高達128位,匯流排介面部件將以一次16個位元組的方式在cache和內存之間傳輸數據,大大提高了數據處理速度。80486 CPU中的cache部件與指令預取部件緊密配合,一旦預取代碼未在cache中命中,BIU就對cache進行填充,從內存中取出指令代碼,同時送給cache部件和指令預取部件。

寄存器


按功能可分為四類:基本寄存器、系統寄存器、調試和測試寄存器以及浮點寄存器。
80486 CPU的寄存器總體上可分為程序可見和不可見兩類。在程序設計期間要使用的、並可由指令來修改其內容的寄存器,稱為程序可見寄存器。在程序設計期間,不能直接定址的寄存器,稱為程序不可見寄存器,但是在程序設計期間可以被間接引用。程序不可見寄存器用於保護模式下控制和操作存儲器系統。
1.基本寄存器(base architecture registers)
基本寄存器包括八個通用寄存器EAX, EBX, ECX, EDX, EBP, ESP, EDI, ESI;一個指令指針寄存器EIP;六個段寄存器CS, DS, ES, SS, FS和GS;一個標誌寄存器EFLAGS。80486 CPU的基本寄存器如圖2.11所示,它們都是程序可見寄存器。
(1)通用寄存器(general purpose registers)
通用寄存器包括EAX, EBX, ECX, EDX, EBP, ESP, EDI和ESI。
圖2.11 80486 CPU的基本寄存器組
EAX, EBX, ECX, EDX都可以作為32位寄存器、16位寄存器或者8位寄存器使用。EAX可作為累加器用於乘法、除法及一些調整指令,對於這些指令,累加器常表現為隱含形式。EAX寄存器也可以保存被訪問存儲器單元的偏移地址。EBX常用於地址指針,保存被訪問存儲器單元的偏移地址。ECX經常用作計數器,用於保存指令的計數值。ECX寄存器也可以保存訪問數據所在存儲器單元的偏移地址。用於計數的指令包括重複的串指令、移位指令和循環指令。移位指令用CL計數,重複的串指令用CX計數,循環指令用CX或ECX計數。EDX常與EAX配合,用於保存乘法形成的部分結果,或者除法操作前的被除數,它還可以保存定址存儲器數據。
EBP和ESP是32位寄存器,也可作為16位寄存器BP, SP使用,常用於椎棧操作。EDI和ESI常用於串操作,EDI用於定址目標數據串,ESI用於定址源數據串。
(2)指令指針寄存器
指令指針寄存器EIP(extra instruction pointer)存放指令的偏移地址。微處理器工作於實模式下,EIP是IP(16位)寄存器。80486 CPU工作於保護模式時EIP為32位寄存器。EIP總是指向程序的下一條指令(即EIP的內容自動加1,指向下一個存儲單元)。EIP用於微處理器在程序中順序地
定址代碼段內的下一條指令。當遇到跳轉指令或調用指令時,指令指針寄存器的內容需要修改。
(3)標誌寄存器EFR
EFR(extra flags register)包括狀態位、控制位和系統標誌位,用於指示微處理器的狀態並控制微處理器的操作。80486 CPU標誌寄存器如圖2.12所示。
① 狀態標誌位:包括進位標誌CF、奇偶標誌PF、輔助進位標誌AF、零標誌ZF 、符號標誌SF和溢出標誌OF。
② 控制標誌位:包括陷阱標誌(單步操作標誌)TF、中斷標誌IF和方向標誌DF。80486 CPU標誌寄存器中的狀態標誌位和控制標誌位與8086 CPU標誌寄存器中的狀態標誌位和控制標誌位的功能完全一樣,這裡就不再贅述。
③ 系統標誌位和IOPL欄位:在EFR寄存器中的系統標誌和IOPL欄位,用於控制操作系統或執行某種操作。它們不能被應用程序修改。
IOPL(I/O privilege level field):輸入/輸出特權級標誌位。它規定了能使用I/O敏感指令的特權級。在保護模式下,利用這兩位編碼可以分別表示0, 1, 2, 3這四種特權級,0級特權最高,3級特權最低。在80286以上的處理器中有一些I/O敏感指令,如CLI(關中斷指令)、STI(開中斷指令)、IN(輸入)、OUT(輸出)。IOPL的值規定了能執行這些指令的特權級。只有特權高於IOPL的程序才能執行I/O敏感指令,而特權低於IOPL的程序,若企圖執行敏感指令,則會引起異常中斷。
NT(nested task flag):任務嵌套標誌。在保護模式下,指示當前執行的任務嵌套於另一任務中。當任務被嵌套時,NT=1,否則NT=0。
RF(resume flag):恢復標誌。與調試寄存器一起使用,用於保證不重複處理斷點。當RF=1時,即使遇到斷點或故障,也不產生異常中斷。
VM(virtual 8086 mode flag):虛擬8086模式標誌。用於在保護模式系統中選擇虛擬操作模式。VM=1,啟用虛擬8086模式;VM=0,返回保護模式。
AC(alignment check flag):隊列檢查標誌。如果在不是字或雙字的邊界上定址一個字或雙字,隊列檢查標誌將被激活。
(4)段寄存器
80486微處理器包括六個段寄存器,分別存放段基址(實地址模式)或選擇符(保護模式),用於與微處理器中的其他寄存器聯合生成存儲器單元的物理地址。存器結構
① 代碼段寄存器CS。代碼段是一個用於保存微處理器程序代碼(程序和過程)的存儲區域。CS存放代碼段的起始地址。在實模式下,它定義一個64KB存儲器段的起點。在保護模式下工作時,它選擇一個描述符,這個描述符描述程序代碼所在存儲器單元的起始地址和長度。在保護模式下,代碼段的長度為4GB。
② 數據段寄存器DS。數據段是一個存儲數據的存儲區域,程序中使用的大部分數據都在數據段中。DS用於存放數據段的起始地址。可以通過偏移地址或者其他含有偏移地址的寄存器,定址數據段內的數據。在實模式下工作時,它定義一個64KB數據存儲器段的起點。在保護模式下,數據段的長度為4GB。
堆棧段寄存器。堆棧段寄存器SS用於存放堆棧段的起始地址,堆棧指針寄存器ESP確定堆棧段內當前的入口地址。EBP寄存器也可以定址堆棧段內的數據。
④ 附加段寄存器ES。ES存放附加數據段的起始地址。常用於存放數據段的段基址或者在串操作中作為目標數據段的段基址。
⑤ 附加段寄存器FS和GS。FS和GS是附加的數據段寄存器,作用與ES相同,以便允許程序訪問兩個附加的數據段。
在保護模式下,每個段寄存器都含有一個程序不可見區域。這些寄存器的程序不可見區域通常稱為描述符的高速緩衝存儲器(descriptor cache),因此它也是存儲信息的小存儲器。這些描述符高速緩衝存儲器與微處理器中的一級或二級高速緩衝存儲器不能混淆。每當段寄存器中的內容改變時,基地址、段限和訪問許可權就裝入段寄存器的程序不可見區域。例如當一個新的段基址存入段寄存器時,微處理器就訪問一個描述符表,並把描述符表裝入段寄存器的程序不可見的描述符高速緩衝存儲器區域內。這個描述符一直保存在此處,並在訪問存儲器時使用,直到段號再次改變。這就允許微處理器在重複訪問一個內存段時,不必每次都去查詢描述符表,因此稱為描述符高速緩衝存儲器。