Intel 80386 微處理器的系統結構

一、Intel 80X86微處理器系列
      1.從8080/8085到8086
      (1)8086 有16位寄存器和16位外部數據總線,20位地址總線,尋址爲1MB的地址空間;8080/8085有隻有8位,尋址地址空間爲64K。
      (2)8086有一個初級流水線結構,內部操作與對外操作具有並行性,即EU與BIU可分別獨立工作,8085則沒有這樣的功能。
      (3)具有里程碑的意義。

      2.從8086到8088 
      (1)8088 的外部數據總線爲8位,8086片內指令預取緩衝器深度爲6字節,8088只有4字節, 其他與8086是一樣的。 
      (2)8088易與已有的8位外圍芯片配合使用,且價格低,獲得了巨大的成功。

      3.80286、80386、80486
      (1)80286:16位結構,有16位寄存器和16位外部數據總線,24位地址總線,16MB尋址空間,支持保護方式,可執行多任務。
      (2)80386:32位結構,內部寄存器與數據總線都是32位的,但是段寄存器仍爲16位,32位地址總線,4GB尋址空間,支持保護虛地址方式,保留原有的實地址方式用於與8086兼容,可執行多任務。
      (3)80486:32位結構,有一個與80386相同結構的主處理器, 另外集成了浮點處理部件(FPU)部件和一個8K字節的高速緩衝存儲器(CACHE),速度比80386快很多。

二、Intel 80386 微處理器的基本結構

Intel 80386 微處理器功能結構如圖一,它是三部分組成:中央處理部件CPU、存儲管理部件MMU、總線接口部件BIU。


圖一 Intel 80386 微處理器功能結構

1.中央處理部件CPU:它由指令部件和執行部件組成。

(1)指令部件包括指令預取和指令譯碼兩部分,各有一個隊列,分別爲指令預取隊列和指令譯碼隊列。指令預取用從存儲器取出來的指令代碼臨時保存在指令預取隊列中,然後見過指令譯碼的預譯碼後放入到已譯碼指令隊列中,以供指令執行部件調用。執行部件由8個32位的通用寄存器、1個32位的算術運算單、1個64位的桶形移位器和乘/除硬件。80386採用微程序控制方式,所有80386指令對應的微程序存放在其內部的控制存儲器中。指令譯碼器從指令預取隊列中取指令,將操作碼譯成與該指令操作碼相對應的控制ROM的入口地址,並存入譯碼指令隊列中,該隊列可容納3條已譯碼指令。

(2)執行部件執行從譯碼指令隊列中取出的已譯碼指令。它包含8個32位通用寄存器、32位的算術運算單元ALU、1個64位的桶形移位器和乘/除硬件。由於採用微程序技術,所以一條80386指令的執行過程實際是逐條執行該指令所對應的微程序中的微指令。出於縮短微指令寬度,即簡化控制存儲器電路的需要,微指令中廣泛使用字段編譯法,因此在行微指令的過程中還需要譯碼,即控制單元要對微指令的字段進行譯碼,產生一條指令操作的時序控制信號(即微操作信號)。80386的各個功能部件既能獨立工作,又能與其他部件配合工作,因此80386可採用比8086並行度更高的流水線操作方式,如圖二所示,從圖中可以看出,總線接口部件、指令譯碼部件、執行部件及存儲器管理部件四個部件並行工作,因此80386的指令流水線爲4級。[1]

圖二 Intel 80386 流水線操作示意圖

2. 存儲管理部件(MMU)由分段部件和分頁機構組成,實現了從邏輯地址到物理地址的轉換,既支持段式存儲管理、頁式存儲管理,也支持段頁存儲管理。它存儲器採用段、頁式結構,80386首次將分頁機制引入到80X86結構,每頁大小爲4KB。

3.總線接口部件功能:它通過數據總線、地址總線、控制總線來與外部環境聯繫,包括從存儲器中預取指令、讀寫數據,從I/O端口讀寫數據,以及其他的控制功能。數據總線和地址總線都是32位的,由於它們是分開的,所以從存儲器中存儲數據最快也需要兩個時鐘週期內完成。

 

三、80386的寄存器結構

80386微處理器共有7類34個寄存器,通用寄存器組、段寄存器、指令指針和標誌寄存器、系統地址寄存器、控制寄存器、調試寄存器、測試寄存器。前四類寄存器的示意圖三。

圖三 通用寄存器組、段寄存器、指令指針和標誌寄存器、系統地址寄存器示意圖 

 

(1)通用寄存器組:共有8個32位寄存器,EAX, EBX,ECX,EDX,ESP,EBP,ESI,EDI。它們由8086的16位寄存器擴展而來,它們的低16位與8086使用方法相同。

(2)段寄存器:共有6個16位的段寄存器CS、DS、SS、ES、FS、GS。與這6個段寄存器對應的有6個64位描述符寄存器,它是80X86處理器提供的一種附加的非編程的寄存器,用來裝64的段描述符,每當一個段選擇符被裝入段寄存器是,相應的段描述符就由內存裝入到對應的非編程的CPU寄存器。其中CS、DS、SS、ES與8086的段寄存器完全相同,在實地址方式下,使用方法也與8086相同;在虛地址保護方式下,這些寄存器中的值是“段選擇符”,需要查全局描述符表(GDT)或者局部描述符表(LDT)來獲得段的基地址,再加上偏移地址才能得到線性地址。 FS和GS是新加的附加數據段寄存器,可以由用戶將FS、GS定義爲其他數據段。

(3)指令指針和標誌寄存器:指令指針寄存器EIP,由8086的IP寄存器擴展而來。標誌寄存器EFLAGS包含一組狀態標誌、一個控制標誌、一組系統標誌,圖四定義該寄存器中的標誌位。

 

圖四 標誌寄存器EFLAGS的標準位

 

標誌寄存器EFLAGS的低12位與8086的標誌寄存器FLAGS一樣。IOPL位表示特權標誌位,定義當前任務的特權層。NT位表示任務嵌套標誌位,當NT位爲1時表明當前執行的任務嵌套在另外一個任務中,否則NT位爲0。RF位表示重新啓動標誌位,與調試寄存器一起用於斷點和單步操作,RF位爲1時表明下一條指令的調試故障將被忽略,不產生中斷異常;RF位位0時表示調試故障被接受併產生中斷異常。由於調測失敗後強迫程序恢復執行;在每條指令成功執行後,RF自動復位。VM位表示虛擬模式標誌位,VM位爲1時表明80386工作在保護虛擬地址方式。前4個定義從80286開始,後面的2個定義從80386開始存在。另外的三個標誌是Pentium以後的CPU纔有的。VIF(Virtual interrupt flag)表示虛擬中斷標誌。當VIF=1時,可以使用虛擬中斷,當VIF=0時不能使用虛擬中斷。該標誌要和下面的VIP和CR4中的VME配合使用。VIP(Virtual interrupt pending flag)表示虛擬中斷掛起標誌。當VIP=1時,VIF有效,VIP=0時VIF無效。ID(Identification flag)表示鑑別標誌。該標誌用來只是Pentium CPU是否支持CPUID的指令。[2]
(4) 系統地址寄存器和系統段寄存器:系統地址寄存器有全局描述符表寄存器GDTR、中斷描述符表寄存器IDTR。系統段寄存器有局部描述符表寄存器LDTR和任務寄存器TR。這些寄存器保存相應的描述符表的地址。
(5) 控制寄存器:4個32位的控制寄存器CR0,CR1,CR2,CR3,它們保存全局性的機器狀態,其基本定義如圖五。從Pentium開始,又增加了一個CR4。下面來簡單介紹控制寄存器中的位。[2]

圖五 控制寄存器的基本定義

1)CR0的低16位包含了與80286的MSW一致的位定義,保持了和80286的兼容,同時也兼容了從80286開始的兩條指令LMSW/SMSW。指令LMSW和SMSW分別用於裝入和保存機器狀態字信息,可以通過MOV指令對CR0進行讀寫操作。CR0中各位含義如下:
PE(Protection Enable)保護模式允許位,用來啓動CPU進入虛地址保護方式。PE=0表示CPU工作在實地址方式;PE=1表示CPU工作在虛地址保護方式。
MP(Monitor Coprocessor)監控協處理器,MP=1表示協處理器在工作;MP=0表示協處理器未工作。 
EM(Emulation)協處理器仿真,當MP=0,EM=1時,表示正在使用軟件仿真協處理器工作。 
TS(Task Switched)任務轉換,每當進行任務轉換時,TS=1;任務轉換完畢,TS=0。TS=1時不允許協處理器工作。  
ET(Extension Type)處理器擴展類型,反映了所擴展的協處理器的類型,ET=0爲80287,ET=1爲80387。 
PG(Paging)頁式管理機制使能,PG=1時頁式管理機制工作,否則不工作。
NE(Numeric Error)數值異常中斷控制,NE=1時,如果運行協處理器指令發生故障,則用異常中斷處理,NE=0時,則用外部中斷處理。 
WP(Write Protect)寫保護,當WP=1時,對只讀頁面進行寫操作會產生頁故障。
AM(Alignment Mask)對齊標誌,AM=1時,允許對齊檢查,AM=0時不允許,關於對齊,在EFLAGS的AC標誌時介紹過,在80486以後的CPU中,CPU進行對齊檢查需要滿足三個條件,AC=1、AM=1並且當前特權級爲3。 
NW(Not Write-through)和CD(Cache Disable),這兩個標誌都是用來控制CPU內部的CACHE的,當NW=0且CD=0時,CACHE使能,其它的組合比較複雜。
前4個定義從80286開始,接着的2個定義從80386開始存在, 後面4個是從80486開始定義的。

2)CR1寄存器用來保留給Intel微處理器將來開發使用;CR2寄存器包含一個32位的線性地址,指向發生最後一次也故障的地址,只有在PG=1時,CR2纔有效,當頁故障處理程序被激活時,壓入頁故障處理程序堆棧中的錯誤碼提供頁故障的狀態信息;CR3寄存器中包含頁物理目錄表的物理基地址,由於每4KB爲一頁,80386中的頁目錄表總在頁的整數邊界上,CR3的低13位總是爲0,只有當CR0中的PG=1時,CR3的頁目錄基地址纔有效。
(6) 調試寄存器:共8個排錯寄存器DR0~DR7。DR0~DR3可以分別設置4個斷點的線性地址,DR4~DR5保留未用,DR6是斷點狀態寄存器,DR7是斷點控制寄存器(包括斷點類型、斷點長度,斷點開放/禁止)。[2]
(7) 測試寄存器:2個32位的測試寄存器TR6和TR7,用於控制轉換後援緩衝器中的RAM測試,其中TR6爲命令測試寄存器,TR7爲測試數據寄存器。[2]

 

四、80386/80486微處理器的存儲器管理

80386三種工作方式:實地址方式,虛地址保護方式,虛擬8086方式。由於這三種方式的介紹又可以寫一篇blog了,這裏就不詳述了。

 

五、80486微處理器的的特點簡介

(1)將80386處理器的指令譯碼和執行部件擴展成五級流水線。
      (2)採用突發總線(Burst Bus)同內存進行高速數據交換。
      (3)採用8KB統一的代碼和數據CACHE(高速緩衝存儲器)。
      (4)首次將浮點處理部件80X87 FPU集成到了微處理器內。
      (5)具有完整的RISC內核,指令執行單元採用RISC技術和流水線技術,大部分基本指令執行時間爲1個時鐘週期。
      (6)內部的自測試功能包括執行代碼和訪問數據時的斷點陷阱,廣泛地測試片上邏輯、CACHE、分頁轉換CACHE。
      (7)軟件向下兼容。

 

參考及引用資料:

[1]http://www.timesk.com/?action-viewnews-itemid-80945

[2]http://hengch.blog.163.com/blog/static/107800672009029104144323/

轉載自http://blog.csdn.net/scucj/article/details/4252906

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章