80486

80486

80486微處理器的暫存器 (1)通用暫存器(gen 指令指針暫存器EIP(extra


Inte80486是Intel公司1989年推出的32位微處理器。它採用了1mm製造工藝,內部集成了120萬個電晶體。內外部數據匯流排是32位,地址匯流排為32位,可定址4GB的存儲空間,支持虛擬存儲管理技術,虛擬存儲空間為64TB。片內集成有浮點運算部件和8KB的cache(L1 Cache),同時也支持外部cache(L2 cache)。整數處理部件採用精簡指令集RISC結構,提高了指令的執行速度。此外,80486微處理器還引進了時鐘倍頻技術和新的內部匯流排結構,從而使主頻可以超出100MHz。
Intel 80486微處理器內部結構
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微處理器的暫存器
按功能可分為四類:基本暫存器、系統暫存器、調試和測試暫存器以及浮點暫存器。
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),因此它也是存儲信息的小存儲器。這些描述符高速緩衝存儲器與微處理器中的一級或二級高速緩衝存儲器不能混淆。每當段暫存器中的內容改變時,基地址、段限和訪問許可權就裝入段暫存器的程式不可見區域。例如當一個新的段基址存入段暫存器時,微處理器就訪問一個描述符表,並把描述符表裝入段暫存器的程式不可見的描述符高速緩衝存儲器區域內。這個描述符一直保存在此處,並在訪問存儲器時使用,直到段號再次改變。這就允許微處理器在重複訪問一個記憶體段時,不必每次都去查詢描述符表,因此稱為描述符高速緩衝存儲器。

相關搜尋

熱門詞條

聯絡我們