介紹 它採用了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把從外部存儲器取出的指令代碼同時傳送給代碼預取部件和內部高速緩衝存儲器,以便在下一次預取相同的指令時,可直接訪問高速緩衝存儲器。
80486 CPU內部有一個32位元組的指令預取佇列,在匯流排空閒周期,指令預取部件(pre-fetcher)形成
存儲器地址 ,並向BIU發出
預取指令 請求。預取部件一次讀取16個
位元組 的指令代碼存入預取佇列中,指令佇列遵循先進先出FIFO(first in first out)的規則,自動地向輸出端移動。如果cache在指令預取時命中,則不產生
匯流排周期 。當遇到跳轉、中斷、
子程式 調用等操作時,預取佇列被清空。
指令解碼部件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聯繫起來,通用暫存器的內容通過這組匯流排傳向分段單元,並用於產生存儲器單元的
有效地址 。
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用於微處理器在程式中順序地
定址
代碼段 內的下一條指令。當遇到跳轉指令或調用指令時,指令
指針 暫存器的內容需要修改。
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):佇列檢查標誌。如果在不是字或雙字的邊界上定址一個字或雙字,佇列檢查標誌將被激活。
80486
微處理器 包括六個段暫存器,分別存放段基址(實地址模式)或選擇符(保護模式),用於與微處理器中的其他暫存器聯合生成
存儲器 單元的物理地址。存器結構
① 代碼段暫存器CS。
代碼段 是一個用於保存微處理器程式代碼(程式和過程)的存儲區域。CS存放代碼段的起始地址。在實模式下,它定義一個64KB存儲器段的起點。在保護模式下工作時,它選擇一個描述符,這個描述符描述程式代碼所在存儲器單元的起始地址和長度。在保護模式下,代碼段的長度為4GB。
② 數據段暫存器DS。
數據段 是一個存儲數據的
存儲區域 ,程式中使用的大部分數據都在數據段中。DS用於存放數據段的起始地址。可以通過
偏移地址 或者其他含有偏移地址的暫存器,
定址 數據段內的數據。在實模式下工作時,它定義一個64KB數據
存儲器 段的起點。在保護模式下,數據段的長度為4GB。
③ 堆疊
段暫存器 。堆疊段暫存器SS用於存放堆疊段的起始地址,堆疊指針暫存器ESP確定堆疊段內當前的入口地址。EBP
暫存器 也可以定址
堆疊段 內的數據。
④ 附加段暫存器ES。ES存放附加數據段的起始地址。常用於存放數據段的段基址或者在串操作中作為目標數據段的段基址。
⑤ 附加段暫存器FS和GS。FS和GS是附加的數據
段暫存器 ,作用與ES相同,以便允許程式訪問兩個附加的數據段。
在保護模式下,每個段暫存器都含有一個程式不可見區域。這些暫存器的程式不可見區域通常稱為描述符的
高速緩衝存儲器 (descriptor cache),因此它也是存儲信息的小存儲器。這些描述符高速緩衝存儲器與微處理器中的一級或二級高速緩衝存儲器不能混淆。每當段暫存器中的內容改變時,基地址、段限和訪問許可權就裝入段暫存器的程式不可見區域。例如當一個新的段基址存入段暫存器時,微處理器就訪問一個描述符表,並把描述符表裝入段暫存器的程式不可見的描述符高速緩衝存儲器區域內。這個描述符一直保存在此處,並在訪問
存儲器 時使用,直到段號再次改變。這就允許
微處理器 在重複訪問一個記憶體段時,不必每次都去查詢描述符表,因此稱為描述符
高速緩衝存儲器 。