《微型計(jì)算機(jī)原理》課件第2章_第1頁(yè)
《微型計(jì)算機(jī)原理》課件第2章_第2頁(yè)
《微型計(jì)算機(jī)原理》課件第2章_第3頁(yè)
《微型計(jì)算機(jī)原理》課件第2章_第4頁(yè)
《微型計(jì)算機(jī)原理》課件第2章_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第2章微處理器結(jié)構(gòu)及微型計(jì)算機(jī)工作原理2.1微型計(jì)算機(jī)的組成及工作原理

2.28086/8088及80286微處理器的功能結(jié)構(gòu)

2.380386微處理器的功能結(jié)構(gòu)

2.480486微處理器的功能結(jié)構(gòu)

2.5Pentium級(jí)微處理器簡(jiǎn)介2.1微型計(jì)算機(jī)的組成及工作原理圖2.1微型計(jì)算機(jī)的組成2.1.1微處理器微處理器(機(jī))簡(jiǎn)稱CPU,是用來(lái)實(shí)現(xiàn)運(yùn)算和控制功能的部件,由運(yùn)算器、控制器和寄存器3部分組成。運(yùn)算器用于完成數(shù)據(jù)的算術(shù)和邏輯運(yùn)算。CPU內(nèi)部的寄存器用來(lái)暫存參加運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。控制器通常由指令寄存器、指令譯碼器和控制電路組成。指令是一組二進(jìn)制編碼信息,主要包括兩個(gè)內(nèi)容:一是告訴計(jì)算機(jī)進(jìn)行什么操作;二是指出操作數(shù)或操作數(shù)地址。控制電路根據(jù)指令的要求向微型機(jī)各部件發(fā)出一系列相應(yīng)的控制信息,使它們協(xié)調(diào)有序地工作。2.1.2存儲(chǔ)器圖2.1中的存儲(chǔ)器是指微型計(jì)算機(jī)的內(nèi)存儲(chǔ)器,它通常由CPU之外的半導(dǎo)體存儲(chǔ)器芯片組成,用來(lái)存放程序、原始操作數(shù)、運(yùn)算的中間結(jié)果數(shù)據(jù)和最終結(jié)果數(shù)據(jù)。程序是按解題順序編排、用一系列指令表示的計(jì)算步驟。程序和數(shù)據(jù)在形式上均為二進(jìn)制碼,它們均以字節(jié)為單位存儲(chǔ)在內(nèi)存儲(chǔ)器中,一個(gè)字節(jié)占用一個(gè)存儲(chǔ)單元,并具有唯一的地址號(hào)。CPU可以對(duì)內(nèi)存儲(chǔ)器執(zhí)行讀/寫(xiě)兩種操作。讀存儲(chǔ)器操作是在控制部件發(fā)出的讀命令控制下,將內(nèi)存中某個(gè)存儲(chǔ)單元的內(nèi)容取出,送入CPU中某個(gè)寄存器;寫(xiě)存儲(chǔ)器操作是在控制部件發(fā)出的寫(xiě)命令控制下,將CPU中某寄存器內(nèi)容傳送到存儲(chǔ)器的某個(gè)存儲(chǔ)單元中。寫(xiě)操作執(zhí)行后,存儲(chǔ)單元內(nèi)容被改變;讀操作執(zhí)行后,存儲(chǔ)單元內(nèi)容不變。2.1.3輸入/輸出設(shè)備及其接口電路輸入/輸出(Input/Output,縮寫(xiě)為I/O)設(shè)備統(tǒng)稱外部設(shè)備,是微型計(jì)算機(jī)的重要組成部分。輸入設(shè)備的任務(wù)是將程序、原始數(shù)據(jù)及現(xiàn)場(chǎng)信息以計(jì)算機(jī)所能識(shí)別的形式送到計(jì)算機(jī)中,供計(jì)算機(jī)自動(dòng)計(jì)算或處理用。微型機(jī)中常用的輸入設(shè)備包括鍵盤(pán)、鼠標(biāo)器、數(shù)字化儀、掃描儀、A/D轉(zhuǎn)換器等。輸出設(shè)備的任務(wù)是將計(jì)算機(jī)的計(jì)算和處理結(jié)果或回答信號(hào)以人能識(shí)別的各種形式表示出來(lái)。微型機(jī)中常用的輸出設(shè)備包括顯示器、打印機(jī)、繪圖儀、D/A轉(zhuǎn)換器等。軟磁盤(pán)、硬磁盤(pán)及其驅(qū)動(dòng)器對(duì)微型機(jī)來(lái)說(shuō),既是輸入設(shè)備又是輸出設(shè)備。只讀激光盤(pán)(CD-ROM)及其驅(qū)動(dòng)器屬于微型機(jī)的輸入設(shè)備。軟磁盤(pán)、硬磁盤(pán)及光盤(pán)又統(tǒng)稱為計(jì)算機(jī)的外存儲(chǔ)器。

輸入/輸出設(shè)備的種類很多,有電子式、電動(dòng)式、機(jī)械式等,它們的工作速度一般較CPU要低。同時(shí),輸入/輸出設(shè)備處理的信息種類也與CPU不完全相同。CPU只能處理數(shù)字量,而外部設(shè)備不僅能處理數(shù)字量,還能處理模擬量等。因而,外部設(shè)備(簡(jiǎn)稱外設(shè))與CPU間的硬件連線和信息交換不能直接進(jìn)行,必須經(jīng)過(guò)接口電路進(jìn)行協(xié)調(diào)和轉(zhuǎn)換。接口電路是微處理器與輸入/輸出設(shè)備聯(lián)系的必經(jīng)之路,它的性能隨微處理器性能和外設(shè)種類的不同而有很大差異,其靈活性和應(yīng)用范圍是很大的。接口電路的主要職責(zé)是將微處理器和輸入/輸出設(shè)備之間的信息統(tǒng)一和聯(lián)系起來(lái)。

I/O接口電路(I/OInterface)的種類很多,常用的接口電路有8255可編程并行接口電路、8253可編程定時(shí)/計(jì)數(shù)電路、8251可編程串行接口電路、8237直接存儲(chǔ)器存取電路、82380多功能I/O接口電路等。2.1.4總線

1.數(shù)據(jù)總線DB(DataBus)

數(shù)據(jù)總線用來(lái)在CPU和其它部件間傳送信息(數(shù)據(jù)和指令代碼),具有三態(tài)控制功能,且是雙向的。這就是說(shuō),CPU可以通過(guò)數(shù)據(jù)總線接收來(lái)自其它部件的信息,也可以通過(guò)數(shù)據(jù)總線向其它部件發(fā)送信息。通常,總線中信號(hào)線的條數(shù)稱為總線寬度。數(shù)據(jù)總線的寬度與CPU中大多數(shù)操作的操作數(shù)字長(zhǎng)相同。因而,8位機(jī)、16位機(jī)、32位機(jī)、64位機(jī)數(shù)據(jù)總線的寬度分別為8位、16位、32位、64位。2.地址總線AB(AddressBus)

地址總線用于傳送CPU要訪問(wèn)的存儲(chǔ)單元或I/O接口的地址信號(hào)。地址信號(hào)一般由CPU發(fā)出送往其它芯片,故屬單向總線,但也具有三態(tài)控制功能。地址總線的寬度視CPU所能直接訪問(wèn)的存儲(chǔ)空間的容量而定。大多數(shù)8位微型機(jī)的地址總線16位,存儲(chǔ)空間容量64KB;16位微型機(jī)地址總線的寬度相互間存在差異。對(duì)8086/8088CPU來(lái)說(shuō),地址總線20位,存儲(chǔ)空間容量1MB;對(duì)80286CPU來(lái)說(shuō),地址總線24位,存儲(chǔ)空間容量16MB。32位機(jī)和64位機(jī)的地址總線分別為32位和36位。3.控制總線CB(ControlBus)

控制總線是CPU向其它部件傳送控制信號(hào),以及其它部件向CPU傳送狀態(tài)信號(hào)及請(qǐng)求信號(hào)(如中斷請(qǐng)求信號(hào))的一組通信線??刂瓶偩€的寬度對(duì)不同的CPU來(lái)說(shuō),有較大的差異。2.1.5微型計(jì)算機(jī)整機(jī)工作原理簡(jiǎn)述CPU中的指令指針用來(lái)存放下一條要取出指令的存儲(chǔ)單元地址。指令指針的存在對(duì)一條指令的執(zhí)行來(lái)說(shuō)是必不可少的,也是基本的。通常,程序中的指令是按順序執(zhí)行的。當(dāng)需要將欲執(zhí)行的指令碼取出時(shí),首先把指令指針的內(nèi)容經(jīng)地址鎖存器送地址總線,選中存儲(chǔ)器中某一存儲(chǔ)單元,然后再?gòu)拇舜鎯?chǔ)單元取出欲執(zhí)行的指令碼。與此同時(shí),指令指針的內(nèi)容送地址鎖存器后,便被自動(dòng)加1,以便為取出下一條指令碼作好準(zhǔn)備。若一條指令碼不止一個(gè)字節(jié),則每個(gè)字節(jié)的取出過(guò)程與此相同。CPU中指令寄存器通過(guò)數(shù)據(jù)總線接收來(lái)自程序存儲(chǔ)區(qū)的指令碼,并將其寄存起來(lái)。指令寄存器中的操作碼直接送指令譯碼器,經(jīng)譯碼產(chǎn)生操作碼譯碼信號(hào)。

此譯碼信號(hào)被送入控制部件,控制部件在該譯碼信號(hào)控制下按照一定的時(shí)間順序發(fā)出一系列控制信號(hào),以使指令的各種微操作(如取數(shù)、運(yùn)算、存數(shù)等)按順序正確執(zhí)行。當(dāng)遇到轉(zhuǎn)移指令時(shí),該轉(zhuǎn)移指令執(zhí)行過(guò)程中將要轉(zhuǎn)移到的指令地址置入指令指針,形成下條指令地址。當(dāng)前指令執(zhí)行完后,由于指令指針內(nèi)容已指向下條指令地址,隨著計(jì)算機(jī)時(shí)序周期的連續(xù)運(yùn)行,便可根據(jù)下條指令地址取出下條指令碼。然后將操作碼譯碼信號(hào)送控制部件,發(fā)出控制信號(hào),以便執(zhí)行下條指令……

周而復(fù)始,直至程序執(zhí)行完為止。至于一個(gè)程序的起始地址和終止信號(hào)均可由系統(tǒng)軟件進(jìn)行選擇和控制。2.28086/8088及80286微處理器的功能結(jié)構(gòu)圖2.2串行處理和流水處理(a)串行處理;(b)流水處理2.2.18086/8088CPU的功能結(jié)構(gòu)

8086CPU為典型的16位微處理器,它具有16位的內(nèi)部數(shù)據(jù)總線和16位的外部數(shù)據(jù)總線。8088CPU的內(nèi)部數(shù)據(jù)總線也是16位,但外部數(shù)據(jù)總線卻只有8位,因而稱為準(zhǔn)16位機(jī)。這兩種微處理器在其它方面幾乎完全相同。例如,它們都為40條引腳的雙列直插式組件,采用單一+5V電源和5MHz單相時(shí)鐘;均具有20位地址總線,可尋址1MB的內(nèi)存地址空間和64KB的I/O地址空間;二者具有完全兼容的指令系統(tǒng),并均能與8087數(shù)學(xué)協(xié)處理器相連提高數(shù)據(jù)的運(yùn)算速度和范圍等。1.8086/8088CPU的內(nèi)部結(jié)構(gòu)圖2.38086/8088CPU的結(jié)構(gòu)框圖2.指令流隊(duì)列(InstructionStreamQueue)

指令流隊(duì)列實(shí)際上是一個(gè)內(nèi)部的存儲(chǔ)器陣列,它類似一個(gè)先進(jìn)先出的棧。8086/8088CPU的指令流隊(duì)列最多能保存6個(gè)/4個(gè)指令字節(jié),且只要隊(duì)列出現(xiàn)2個(gè)/1個(gè)空字節(jié),同時(shí)EU也未要求BIU進(jìn)入存取操作數(shù)的總線周期,BIU便自動(dòng)從內(nèi)存單元順序取指令字節(jié),并填滿指令流隊(duì)列。當(dāng)執(zhí)行轉(zhuǎn)移指令時(shí),BIU使指令流隊(duì)列復(fù)位,并從新的地址單元取出指令,立即送EU執(zhí)行,然后,自動(dòng)取出后繼指令字節(jié)以填滿指令流隊(duì)列。由于EU在執(zhí)行一條指令時(shí)必須等待BIU從存儲(chǔ)器或I/O接口取操作數(shù)后方能運(yùn)算,因而當(dāng)BIU同時(shí)收到EU請(qǐng)求存取操作數(shù)和預(yù)取指令請(qǐng)求時(shí),BIU將先進(jìn)行存取操作數(shù)的操作。3.存儲(chǔ)器的分段結(jié)構(gòu)和物理地址的形成

8086/8088CPU的地址總線20位,可尋址的最大內(nèi)存空間1MB(220個(gè)字節(jié))。每個(gè)存儲(chǔ)單元的地址信號(hào)均為20位二進(jìn)制碼,稱為物理地址。8086/8088CPU的內(nèi)存儲(chǔ)器采用分段結(jié)構(gòu),將1MB的內(nèi)存空間分為若干段,每個(gè)段的字節(jié)數(shù)視需要而定,可多可少,但最多為64KB。段的起始地址(段首址)規(guī)定為:最低4位為0,高16位為段寄存器內(nèi)容(稱為段基址)。段內(nèi)存儲(chǔ)單元的地址可以用相對(duì)于段首址的16位偏移量來(lái)表示,這個(gè)偏移地址稱為當(dāng)前段內(nèi)的偏移地址。

用段地址(段寄存器內(nèi)容)及偏移地址來(lái)指明某一內(nèi)存單元地址時(shí),稱為以邏輯地址表示內(nèi)存地址。邏輯地址的表示格式為:段地址:偏移地址。例如,C018:FE7F表示段地址為C018H,偏移地址為FE7FH。已知邏輯地址,可求出對(duì)應(yīng)的20位物理地址(見(jiàn)圖2.4(a)):物理地址=段地址×10H+偏移地址因此,若邏輯地址為C018:FE7F,則物理地址為CFFFFH,見(jiàn)圖2.4(b)。存儲(chǔ)器的分段結(jié)構(gòu)在編程中稍嫌麻煩,但為模塊化程序、多道程序及多用戶程序的設(shè)計(jì)提供了方便。圖2.420位物理地址的構(gòu)成舉例(a)20位物理地址的形成;(b)字節(jié)地址構(gòu)成舉例2.2.280286CPU的功能結(jié)構(gòu)

1.80286CPU的主要性能

80286CPU是比8086/8088CPU更為先進(jìn)的16位微處理器。芯片上共集成13.5萬(wàn)只晶體管,具有68個(gè)引腳,采用四列直插式封裝,地址線和數(shù)據(jù)線不再?gòu)?fù)用,分開(kāi)設(shè)置16條數(shù)據(jù)線和24條地址線,時(shí)鐘頻率為8MHz~10MHz。80286CPU具有存儲(chǔ)器管理和保護(hù)機(jī)構(gòu)。它采用分段的方法管理存儲(chǔ)器,每段最大為64KB,且支持虛擬存儲(chǔ)器。這就是說(shuō),80286CPU有兩種工作方式:實(shí)地址方式和虛地址方式。運(yùn)行實(shí)地址方式時(shí),相當(dāng)于一個(gè)快速的8086CPU。從邏輯地址到物理地址的轉(zhuǎn)換與8086CPU相同,物理地址空間為1MB。運(yùn)行虛擬保護(hù)方式時(shí),可尋址16MB物理地址,提供1GB(230

字節(jié))的虛地址空間,并能實(shí)現(xiàn)段寄存器保護(hù)、存儲(chǔ)器訪問(wèn)保護(hù)及特權(quán)級(jí)保護(hù)和任務(wù)之間的保護(hù)等。因而,80286CPU能可靠地持多用戶系統(tǒng)。2.80286CPU的內(nèi)部結(jié)構(gòu)圖2.580286CPU的結(jié)構(gòu)框圖2.380386微處理器的功能結(jié)構(gòu)80386CPU是32位微處理器,具有132條引腳,并以網(wǎng)絡(luò)陣列方式封裝。其中數(shù)據(jù)總線及地址總線各32條,時(shí)鐘頻率為12.5MHz及16MHz。

80386CPU具有段頁(yè)式存儲(chǔ)器管理部件,4級(jí)保護(hù)機(jī)構(gòu),并支持虛擬存儲(chǔ)器。它有3種工作方式:①實(shí)地址方式。此方式下80386CPU相當(dāng)于一個(gè)高速8086/8088CPU。②虛地址保護(hù)方式。此方式下存儲(chǔ)器按段組織,每段最長(zhǎng)4GB(232個(gè)字節(jié))。同時(shí),在該方式下,80386CPU可尋址4GB物理地址及64TB(246字節(jié))虛擬地址空間。因而,對(duì)64TB虛擬存儲(chǔ)空間允許每個(gè)任務(wù)最多可用16K個(gè)段。③虛擬8086方式。此方式可在實(shí)地址方式運(yùn)行8086應(yīng)用程序的同時(shí),利用80386CPU的虛擬保護(hù)機(jī)構(gòu)運(yùn)行多用戶操作系統(tǒng)及程序,即可同時(shí)運(yùn)行多個(gè)用戶程序,并能得到保護(hù),使每個(gè)用戶都感到自己擁有一臺(tái)完整的計(jì)算機(jī),非常靈活。

80386CPU有兩種類型芯片:80386SX和80386DX。80386DX芯片內(nèi)部數(shù)據(jù)總線和外部數(shù)據(jù)總線均為32位,可尋址4GB存儲(chǔ)空間。其配接的數(shù)學(xué)協(xié)處理器為80387。80386SX的內(nèi)部數(shù)據(jù)總線32位,外部數(shù)據(jù)總線16位,可尋址16MB存儲(chǔ)空間。配接的數(shù)學(xué)協(xié)處理器為80287。80386SX為準(zhǔn)32位機(jī)。2.3.180386CPU的功能結(jié)構(gòu)圖2.680386功能結(jié)構(gòu)框圖1.總線接口部件總線接口部件BIU由請(qǐng)求判優(yōu)控制器、地址驅(qū)動(dòng)器、流水線總線寬度控制、多路轉(zhuǎn)換MUX/收發(fā)器等部件組成,主要用于將CPU與外部總線連接起來(lái)。CPU內(nèi)部的其它部件都能與BIU直接通信,并將它們的總線請(qǐng)求傳給BIU。這樣,指令、立即數(shù)和存儲(chǔ)器偏移量均可在指令執(zhí)行的不同階段從存儲(chǔ)器取出送至CPU內(nèi)。但當(dāng)多個(gè)總線請(qǐng)求同時(shí)發(fā)生時(shí),為使程序的執(zhí)行不被延誤,BIU經(jīng)請(qǐng)求優(yōu)先控制器將優(yōu)先數(shù)據(jù)傳輸請(qǐng)求(包括立即數(shù)傳輸及偏移地址傳輸)。只有當(dāng)不執(zhí)行數(shù)據(jù)傳輸操作時(shí),BIU方可滿足預(yù)取代碼的請(qǐng)求。2.指令預(yù)取部件

80386CPU中指令代碼的預(yù)取不再由BIU負(fù)責(zé),而由一個(gè)獨(dú)立的指令代碼預(yù)取部件完成。指令預(yù)取部件由預(yù)取器及預(yù)取隊(duì)列組成。預(yù)取器管理著一個(gè)預(yù)取指令指針和段預(yù)取界限。從分段部件來(lái)的線性地址和分段界限分別送到這里。當(dāng)BIU不執(zhí)行屬于指令執(zhí)行部分的總線周期時(shí),若預(yù)取隊(duì)列有空單元或發(fā)生一次控制轉(zhuǎn)移時(shí),預(yù)取器便通過(guò)分頁(yè)部件向BIU發(fā)出指令預(yù)取請(qǐng)求。分頁(yè)部件將預(yù)取指令指針?biāo)统龅木€性地址變?yōu)槲锢淼刂?,再由BIU及系統(tǒng)總線從內(nèi)存單元中預(yù)取出指令代碼,放入預(yù)取隊(duì)列中。80386CPU的預(yù)取隊(duì)列可存放16字節(jié)的指令代碼。進(jìn)入預(yù)取隊(duì)列的指令代碼將被送指令譯碼器部件譯碼。預(yù)取器保持預(yù)取隊(duì)列總是滿的。3.指令譯碼部件指令譯碼部件包括指令譯碼器及已譯碼指令隊(duì)列兩部分。它從代碼預(yù)取部件的預(yù)取隊(duì)列中讀預(yù)取的指令字節(jié)并譯碼,變成很寬的內(nèi)部編碼,放入三層次的已譯碼指令隊(duì)列中。這些內(nèi)部編碼中包含了控制其它處理部件的各種控制信號(hào)。因而,指令譯碼部件為指令的執(zhí)行做好了準(zhǔn)備。只要已譯碼指令隊(duì)列中有空隙,而且預(yù)取隊(duì)列中有指令字節(jié),指令譯碼部件便以一個(gè)時(shí)鐘周期譯碼一個(gè)指令字節(jié)的速度進(jìn)行譯碼。如果指令中有立即數(shù)和操作數(shù)偏移地址,它們也從預(yù)取隊(duì)列中取出,而且,不管一個(gè)立即數(shù)和一個(gè)操作數(shù)偏移地址的長(zhǎng)度有多少個(gè)字節(jié),譯碼部件處理它們只需要一個(gè)時(shí)鐘周期。4.執(zhí)行部件

執(zhí)行部件由控制部件、數(shù)據(jù)處理部件和保護(hù)測(cè)試部件組成。它的任務(wù)是將已譯碼指令隊(duì)列中的內(nèi)部編碼變成按時(shí)間順序排列的一系列控制信息,并發(fā)向處理器的其它處理部件,以便完成一條指令的執(zhí)行。80386CPU中控制部件還用專門(mén)硬件來(lái)加速某種類型的操作,例如乘法、除法和有效地址的計(jì)算等。數(shù)據(jù)處理部件在控制部件控制下執(zhí)行數(shù)據(jù)操作和處理。它包含一個(gè)算術(shù)邏輯部件ALU、8個(gè)32位通用寄存器、一個(gè)64位桶形移位器和一個(gè)乘法器等。64位桶形移位器在一個(gè)時(shí)鐘周期可執(zhí)行多個(gè)位的移動(dòng);乘法器為早結(jié)束乘法器,當(dāng)沒(méi)有有效數(shù)字可處理時(shí)提前結(jié)束乘法運(yùn)算,以便加快計(jì)算機(jī)運(yùn)行速度。

保護(hù)測(cè)試部件用來(lái)監(jiān)視存儲(chǔ)器的訪問(wèn)操作是否違反程序靜態(tài)分段的有關(guān)規(guī)則。這就是說(shuō),在保護(hù)方式下,對(duì)存儲(chǔ)器的任何訪問(wèn)操作,包括運(yùn)算,都將被嚴(yán)格控制。執(zhí)行部件中還設(shè)有一條附加的32位內(nèi)部總線和專門(mén)的控制邏輯部件,并提供同時(shí)執(zhí)行兩條指令所需要的控制回路,可使每條訪問(wèn)存儲(chǔ)器的指令的執(zhí)行與前一條指令的執(zhí)行部分地重疊起來(lái)并行執(zhí)行。這又一次提高了CPU對(duì)指令的執(zhí)行速度。5.分段部件分段部件由三輸入地址加法器、段描述符高速緩沖存儲(chǔ)器及界限和屬性檢驗(yàn)用可編程邏輯陣列PLA(ProgrammableLogicArray)組成。它的任務(wù)是把邏輯地址轉(zhuǎn)換成線性地址。轉(zhuǎn)換操作是在執(zhí)行部件請(qǐng)求下由三輸入專用加法器快速完成的,同時(shí)還采用段描述符高速緩沖存儲(chǔ)器來(lái)加速轉(zhuǎn)換。在邏輯地址向線性地址轉(zhuǎn)換過(guò)程中,分段部件還要進(jìn)行分段的違章檢驗(yàn)。邏輯地址一旦轉(zhuǎn)換成線性地址,便被送入分頁(yè)部件。6.分頁(yè)部件分頁(yè)部件由加法器、頁(yè)高速緩沖存儲(chǔ)器及控制和屬性PLA組成。它的任務(wù)是將分段部件或代碼預(yù)取部件產(chǎn)生的線性地址轉(zhuǎn)換成物理地址。在操作系統(tǒng)軟件控制下,若分頁(yè)部件處于允許狀態(tài),便執(zhí)行線性地址向物理地址的轉(zhuǎn)換,同時(shí)還需檢驗(yàn)標(biāo)準(zhǔn)存儲(chǔ)器訪問(wèn)與頁(yè)屬性是否一致。若分頁(yè)部件處于禁止?fàn)顟B(tài),則線性地址即為物理地址。從線性地址到物理地址的轉(zhuǎn)換實(shí)際上是將線性地址表示的存儲(chǔ)空間再進(jìn)行分頁(yè)。頁(yè)高速緩沖存儲(chǔ)器也稱轉(zhuǎn)換旁視緩沖存儲(chǔ)器TLB(TranslationLookasideBuffer),它用來(lái)加速線性地址到物理地址的轉(zhuǎn)換。頁(yè)是一個(gè)大小固定的存儲(chǔ)塊,每頁(yè)存儲(chǔ)空間有4KB。物理地址一旦由分頁(yè)部件形成,立即送BIU以便進(jìn)行存儲(chǔ)器訪問(wèn)操作。2.3.280386CPU的寄存器圖2.780386CPU的基本寄存器集1.通用寄存器

4個(gè)通用寄存器是EAX、EBX、ECX、EDX。它們均是32位,且低16位被獨(dú)立命名為AX、BX、CX、DX。這樣,80386CPU便可與8086CPU、80286CPU的寄存器集兼容,再加上它們指令系統(tǒng)的兼容性,使得在8086CPU、80286CPU上編寫(xiě)的程序可以不加修改地在80386CPU上運(yùn)行。EAX、EBX、ECX、EDX是在原16位通用寄存器集上擴(kuò)充為32位時(shí),加入代表擴(kuò)充前綴的“E”形成的,并且它們的高16位沒(méi)有獨(dú)立命名,也不能獨(dú)立訪問(wèn)。16位通用寄存器AX、BX、CX、DX的每一個(gè)既可當(dāng)作一個(gè)16位寄存器,又可當(dāng)作兩個(gè)獨(dú)立的8位寄存器進(jìn)行訪問(wèn)。這4個(gè)16位通用寄存器的高8位被分別命名為AH、BH、CH、DH;低8位分別被命名為AL、BL、CL、DL。這樣,80386CPU中4個(gè)通用寄存器EAX、EBX、ECX、EDX的每一個(gè)既可當(dāng)作32位寄存器,又可將低16位當(dāng)作一個(gè)16位寄存器或兩個(gè)獨(dú)立的8位寄存器被訪問(wèn)。而且,對(duì)16位寄存器、32位寄存器低位上的操作不影響高8位或高16位的內(nèi)容。4個(gè)32位通用寄存器既可用來(lái)存放操作數(shù),也可用來(lái)存放操作數(shù)地址,而且在形成地址的過(guò)程中還可進(jìn)行加減運(yùn)算。然而,4個(gè)16位通用寄存器在8086方式運(yùn)行時(shí),主要用來(lái)存放操作數(shù),只有BX寄存器可用來(lái)存放操作數(shù)地址。在串操作及乘除法操作中,常采用隱含(即不用顯式指定寄存器名存放操作數(shù))的方法,從固定的寄存器中取一個(gè)或多個(gè)操作數(shù)。例如,32位乘法指令便隱含地規(guī)定用EAX存放被乘數(shù),而EDX:EAX存放乘積。80386CPU中通用寄存器的設(shè)計(jì)雖然對(duì)它們的使用沒(méi)有什么限制,但是EAX(或AX或AL)通常還是用作累加器(Accumulator),存放參加運(yùn)算的一個(gè)操作數(shù)及其運(yùn)算結(jié)果。同時(shí),大多數(shù)I/O指令和一些串操作需要EAX(或AX或AL)寄存器來(lái)存放操作數(shù)。EBX(或BX)通常用作基址寄存器(BaseRegister),存放偏移地址。ECX(或CX)通常用來(lái)計(jì)數(shù)(Count),在循環(huán)指令及重復(fù)串操作指令中它用來(lái)對(duì)循環(huán)次數(shù)計(jì)數(shù)。EDX(或DX)通常用來(lái)存放數(shù)據(jù),并可用來(lái)存放I/O指令中的端口地址。2.變址寄存器變址寄存器包括源地址(SourceIndex)寄存器ESI和目的地址(DestinationIndex)寄存器EDI。它們都是32位寄存器,并且其低16位分別被命名為SI和DI,以便和8086,80286相兼容。在串操作指令(如MOVS)中,ESI(或SI)常用來(lái)存放源操作數(shù)的偏移地址,而EDI(或DI)常用來(lái)存放目標(biāo)操作數(shù)的地址。在變址尋址方式中,ESI(或SI)及EDI(或DI)用作地址計(jì)算,稱為變址寄存器,存放存儲(chǔ)器操作數(shù)的偏移地址。

ESI、EDI、SI、DI也可與通用寄存器一樣,用來(lái)存放32位或16位操作數(shù)。3.指針寄存器

80386CPU的指針寄存器包括基地址指針(BasePointer)寄存器EBP、堆棧指針(StackPointer)寄存器ESP和指令指針寄存器EIP。

EBP及ESP的低16位也分別被獨(dú)立命名為BP和SP。這兩個(gè)指針寄存器都是為堆棧區(qū)的數(shù)據(jù)操作而設(shè)置的,用來(lái)存放堆棧區(qū)的偏移地址。

堆棧是一組寄存器或一個(gè)存儲(chǔ)區(qū)域,用來(lái)存放調(diào)用子程序或響應(yīng)中斷時(shí)的主程序斷點(diǎn)地址,以及其它寄存器的內(nèi)容。比如,當(dāng)主程序需要調(diào)用子程序時(shí),有一組中間結(jié)果及標(biāo)志位的狀態(tài)需分別保留在通用寄存器及標(biāo)志寄存器中,但被調(diào)用的子程序執(zhí)行時(shí),也需占用這些通用寄存器并影響標(biāo)志,這樣,除了在執(zhí)行調(diào)用指令時(shí)將斷點(diǎn)地址(調(diào)用指令后緊接著的一條指令地址)保存到堆棧中外,還必須將原主程序中保留在通用寄存器的中間結(jié)果和標(biāo)志位的狀態(tài)保存到堆棧中,直到子程序執(zhí)行完畢,返回主程序時(shí)再將這些中間結(jié)果及標(biāo)志位狀態(tài)送回通用寄存器及標(biāo)志寄存器中。圖2.8子程序的嵌套圖2.98086堆棧形式

堆棧操作有兩種,一種叫壓入或推入(PUSH),另一種叫彈出(POP)或拉出(PULL)。對(duì)8086、80286CPU來(lái)說(shuō),每次壓入或彈出一個(gè)字;對(duì)80386CPU來(lái)說(shuō),每次可以壓入或彈出兩個(gè)字。任何微處理器不允許每次壓入或彈出一個(gè)字節(jié)。最后壓入堆棧的字總是最先彈出來(lái)。堆棧的這種后進(jìn)先出的特點(diǎn)由堆棧指示器SP來(lái)控制。SP必須具有自動(dòng)步進(jìn)增量和減量的功能。在向下生成方式中,棧底占用較高地址,棧頂占用較低地址。當(dāng)需要把一個(gè)字壓入堆棧時(shí),首先SP自動(dòng)減2,指向新的棧頂兩個(gè)空單元,然后將要壓入堆棧的一個(gè)字送入棧頂兩個(gè)空單元中。當(dāng)要將堆棧中棧頂兩個(gè)單元的一個(gè)字彈出堆棧時(shí),先將SP所指棧頂兩個(gè)單元的內(nèi)容彈出,然后再將SP加2指向新的棧頂。4.段寄存器和段描述符寄存器段寄存器即段地址寄存器(SegmentAddressRegister)。80386中有6個(gè)16位段寄存器,它們是代碼段寄存器CS(CodeSegment)、數(shù)據(jù)段寄存器DS(DataSegment)、堆棧段寄存器SS(StackSegment)及附加數(shù)據(jù)段寄存器(ExtraDataSegment)ES、FS和GS。其中CS、DS、SS及ES與8086/8088、80286中的段寄存器完全一樣。80386運(yùn)行在8086實(shí)地址方式時(shí),把1MB的存儲(chǔ)空間劃分為若干個(gè)邏輯段。每個(gè)邏輯段的長(zhǎng)度為64KB,并規(guī)定每個(gè)邏輯段20位起始地址的最低4位為0000B。這樣,在20位段起始地址中只有高16位為有效數(shù)字。稱這高16位有效數(shù)字為段的基地址(簡(jiǎn)稱段基址),并存放于段寄存器中。80386的6個(gè)段寄存器可同時(shí)存放6個(gè)段的基地址,它們規(guī)定了6個(gè)邏輯段,其中CS用來(lái)存放當(dāng)前代碼段的基地址,要執(zhí)行的指令代碼均存放在當(dāng)前代碼段中。DS用來(lái)存放當(dāng)前數(shù)據(jù)段的基地址,指令中所需操作數(shù)常放于當(dāng)前數(shù)據(jù)段中。SS用來(lái)存放當(dāng)前堆棧段的基地址,堆棧操作所處理的數(shù)據(jù)均存放在當(dāng)前堆棧段中。ES、FS、GS用來(lái)存放當(dāng)前附加段的基地址,附加段通常也用來(lái)存放存儲(chǔ)器操作數(shù)。

在虛地址保護(hù)方式下,80386的段基地址和段內(nèi)偏移地址為32位。這時(shí)6個(gè)16位段寄存器的內(nèi)容稱為段選擇器。處理器將根據(jù)段選擇器確定段基地址,并經(jīng)分段部件和分頁(yè)部件計(jì)算存儲(chǔ)器的線性地址和物理地址。為了加快線性地址的轉(zhuǎn)換計(jì)算速度,80386內(nèi)部為每個(gè)段寄存器設(shè)置了一個(gè)程序員不可見(jiàn)的段描述符寄存器(也稱段描述符高速緩沖寄存器),見(jiàn)圖2.10。當(dāng)段寄存器內(nèi)容(段選擇器)被指令確定后,80386硬件便依段選擇器作索引,從內(nèi)存的某一個(gè)相應(yīng)的段描述表中取出一個(gè)8字節(jié)的段描述符裝入該段寄存器對(duì)應(yīng)的段描述符寄存器中。段描述符包含有4個(gè)字節(jié)的段基地址,這個(gè)段基地址便可作為分段部件進(jìn)行線性地址轉(zhuǎn)換計(jì)算用。由于采用了硬件方式尋址,加快了存儲(chǔ)器訪問(wèn)速度。圖2.10段寄存器及段描述符寄存器5.標(biāo)志寄存器EFLAGS圖2.1180386的EFLAGS寄存器1)狀態(tài)標(biāo)志狀態(tài)標(biāo)志用來(lái)寄存ALU運(yùn)算結(jié)果的特殊信息。每個(gè)特殊信息用EFLAGS中的一位來(lái)表示。運(yùn)算類指令執(zhí)行之后,處理器自動(dòng)置位適當(dāng)?shù)臓顟B(tài)標(biāo)志位,并可用程序?qū)ζ錅y(cè)試和判斷。

(1)進(jìn)位標(biāo)志CF(CarryFlag)。ALU進(jìn)行加法運(yùn)算時(shí),若運(yùn)算結(jié)果最高位有進(jìn)位,CF=1;否則CF=0。ALU進(jìn)行減法運(yùn)算時(shí),若運(yùn)算結(jié)果最高位有借位,CF=1;否則CF=0。因而,CF標(biāo)志通常作為無(wú)符號(hào)數(shù)加法運(yùn)算有無(wú)溢出及比較兩數(shù)大小的判別標(biāo)志,并支持多精度的加、減運(yùn)算。對(duì)壓縮型BCD數(shù)進(jìn)行運(yùn)算時(shí),CF及AF標(biāo)志用來(lái)支持其修正操作。一些移位和循環(huán)指令的執(zhí)行也影響CF標(biāo)志。(2)奇偶標(biāo)志PF(ParityFlag)。PF表示算術(shù)或邏輯運(yùn)算結(jié)果低8位中1的個(gè)數(shù)的奇偶性。若1的個(gè)數(shù)為偶,則PF=1;否則PF=0。奇偶標(biāo)志常用來(lái)檢驗(yàn)數(shù)據(jù)傳送是否出錯(cuò)。檢驗(yàn)方法可用偶校驗(yàn)或奇校驗(yàn)。例如,利用偶校驗(yàn)碼進(jìn)行數(shù)據(jù)傳送時(shí),在傳送過(guò)程中若正確無(wú)誤,則PF=1,否則PF=0。

(3)輔助進(jìn)位標(biāo)志AF(AuxiliaryFlag)。ALU進(jìn)行加減運(yùn)算時(shí),AF標(biāo)志反映運(yùn)算結(jié)果中第3位向第4位的進(jìn)位或借位。有進(jìn)位(或借位)時(shí)AF=1,否則AF=0。AF標(biāo)志常用于BCD數(shù)的校正運(yùn)算中。(4)零標(biāo)志ZF(ZeroFlag)。當(dāng)ALU操作結(jié)果為全零,則零標(biāo)志ZF=1。這對(duì)于算術(shù)運(yùn)算或邏輯運(yùn)算都適用。ZF標(biāo)志的功用也很多,例如,在“比較”操作和“異或”操作之后使用ZF標(biāo)志可判斷二數(shù)是否全等,或數(shù)據(jù)在輸入輸出傳送中是否出錯(cuò)等。

(5)符號(hào)標(biāo)志SF(SignFlag)。符號(hào)標(biāo)志又稱負(fù)數(shù)標(biāo)志。在數(shù)的補(bǔ)碼表示法中,數(shù)的最高位表示符號(hào)位。因此,若ALU運(yùn)算結(jié)果的最高位是1,表示是負(fù)數(shù),則符號(hào)標(biāo)志SF=1,否則SF=0。(6)溢出標(biāo)志OF(OverflowFlag)。帶符號(hào)數(shù)加減運(yùn)算的結(jié)果產(chǎn)生溢出時(shí),OF=1;否則OF=0。帶符號(hào)數(shù)的溢出判別法則采用1.1節(jié)中所敘述的雙高位判別法。當(dāng)CsCp=1時(shí)產(chǎn)生溢出,CsCp=0時(shí)不產(chǎn)生溢出(其中Cs表示符號(hào)位的進(jìn)位,Cp表示有效數(shù)字最高位向符號(hào)位的進(jìn)位)。若要判別兩個(gè)帶符號(hào)數(shù)a與b的大小(a-b),必須采用如下規(guī)則進(jìn)行判斷:⊕⊕2)控制標(biāo)志控制標(biāo)志可用程序來(lái)置位或清零,具有一定的控制功能。80386共有7個(gè)控制標(biāo)志位,分三類。

(1)與8086/8088、80286兼容的控制標(biāo)志位共3個(gè)。①陷阱標(biāo)志TF(TrapFlag),又稱單步操作標(biāo)志。該標(biāo)志用于控制單步陷阱。當(dāng)TF=1時(shí),如果執(zhí)行指令就產(chǎn)生單步陷阱。即CPU每執(zhí)行一條指令便自動(dòng)產(chǎn)生一個(gè)陷阱異常,使微處理器轉(zhuǎn)去執(zhí)行一個(gè)服務(wù)程序,以便為用戶提供該條指令執(zhí)行后各寄存器的狀況等。單步陷阱用于程序調(diào)試過(guò)程中。②中斷允許標(biāo)志IF(InterruptEnableFlag)。該標(biāo)志用于控制可屏蔽中斷。IF=1,可接受并響應(yīng)可屏蔽中斷;IF=0,不能接受可屏蔽中斷。③方向標(biāo)志DF(DirectionFlag)。該標(biāo)志用于指定字符串處理指令的步進(jìn)方向。當(dāng)DF=1時(shí),字符串處理指令以遞減方式由高地址向低地址方向進(jìn)行。當(dāng)DF=0時(shí),字符串處理指令以遞增方式由低地址向高地址方向進(jìn)行。(2)保護(hù)方式標(biāo)志。與80286一樣,80386有兩個(gè)保護(hù)方式標(biāo)志。它們只在保護(hù)方式下有效,8086仿真方式(實(shí)方式)下無(wú)效。兩個(gè)保護(hù)方式標(biāo)志也可用程序來(lái)設(shè)置以便控制處理器的運(yùn)行,也屬控制標(biāo)志。①輸入/輸出特權(quán)水平標(biāo)志IOPL(I/OPrivilegeLevel)。該標(biāo)志占用兩位二進(jìn)制位,四個(gè)狀態(tài),用來(lái)確定需要執(zhí)行的I/O操作的特權(quán)水平。IOPL為00時(shí),表示特權(quán)水平最高;IOPL為11時(shí),表示特權(quán)水平最低。若當(dāng)前特權(quán)水平在數(shù)值上小于或等于IOPL(亦即當(dāng)前特權(quán)水平高于等于IOPL所表示的特權(quán)水平),I/O指令可以執(zhí)行。否則,便產(chǎn)生一個(gè)保護(hù)異常。②嵌套任務(wù)標(biāo)志NT。NT標(biāo)志用來(lái)控制返回指令的運(yùn)行。若NT=0,表明發(fā)生中斷時(shí)或執(zhí)行調(diào)用指令時(shí)沒(méi)有發(fā)生任務(wù)切換,因而,返回指令執(zhí)行常規(guī)的從中斷或過(guò)程返回主程序的操作(同一任務(wù)的返回);若NT=1,表明發(fā)生中斷時(shí)或執(zhí)行調(diào)用指令時(shí)發(fā)生了任務(wù)切換,亦即當(dāng)前任務(wù)正嵌套在另一任務(wù)中,因而,返回操作通過(guò)任務(wù)切換來(lái)執(zhí)行,處理器將把控制返回給調(diào)用該任務(wù)的任務(wù)(不同任務(wù)間的返回)。(3)80386新增的控制標(biāo)志。共有兩個(gè)這類標(biāo)志。①重新啟動(dòng)標(biāo)志RF(ResumeFlag)。RF標(biāo)志亦稱調(diào)整恢復(fù)標(biāo)志,用來(lái)控制調(diào)試故障是否能被接受。當(dāng)RF=0時(shí),調(diào)試故障被接受并應(yīng)答;當(dāng)RF=1時(shí),調(diào)試故障被忽略。②虛擬8086方式標(biāo)志VM(Virtual8086ModeFlag)。VM標(biāo)志用來(lái)控制處理器在哪種保護(hù)方式下運(yùn)行。若VM=1,處理器將在虛擬8086方式下運(yùn)行;若VM=0,處理器將在一般方式下運(yùn)行。6.控制寄存器(ControlRegister)圖2.1280386的控制寄存器組(1)允許保護(hù)標(biāo)志PE(ProtectionEnable)。它用于控制微處理器是否進(jìn)入保護(hù)方式。若PE置位,則80386轉(zhuǎn)換成保護(hù)方式。只要處理器在保護(hù)方式下,PE標(biāo)志就一直置位。PE標(biāo)志一旦置位,只能通過(guò)系統(tǒng)復(fù)位重新啟動(dòng)微處理器的方法來(lái)清除。PE標(biāo)志復(fù)位后,微處理器回到實(shí)地址方式。系統(tǒng)加電后,微處理器總是初始化為實(shí)地址方式。

(2)監(jiān)控?cái)?shù)學(xué)協(xié)處理器擴(kuò)充標(biāo)志MP(MonitorProcessorExtensionFlag)。它用來(lái)表示數(shù)學(xué)協(xié)處理器是否存在,因而,MP也稱數(shù)學(xué)協(xié)處理器存在標(biāo)志(MathPresentFlag)。若系統(tǒng)中有一個(gè)數(shù)學(xué)協(xié)處理器存在,MP置位;否則MP清零。(3)仿真協(xié)處理器擴(kuò)充標(biāo)志EM(EmulateProcessorExtensionFlag)。它用來(lái)表示是否用軟件來(lái)仿真數(shù)學(xué)協(xié)處理器。如果EM=1,表示將采用軟件仿真數(shù)學(xué)協(xié)處理器的功能,因而,系統(tǒng)對(duì)所有協(xié)處理器的操作碼都產(chǎn)生一個(gè)“協(xié)處理器不能使用”的出錯(cuò)信號(hào);如果EM=0,表示未用軟件仿真數(shù)學(xué)協(xié)處理器的功能,因而,所有協(xié)處理器的操作碼都能在實(shí)際的數(shù)學(xué)協(xié)處理器80387或80287上執(zhí)行。(4)任務(wù)轉(zhuǎn)換標(biāo)志TS(TaskSwitchedFlag)。該標(biāo)志由硬件置位而由軟件復(fù)位。當(dāng)一個(gè)任務(wù)轉(zhuǎn)換完成之后,TS標(biāo)志自動(dòng)置1。TS標(biāo)志一旦置位,下一條企圖使用數(shù)學(xué)協(xié)處理器的指令將產(chǎn)生一個(gè)“無(wú)數(shù)學(xué)協(xié)處理器”的異常。TS標(biāo)志的這一功能使系統(tǒng)軟件在允許其它任務(wù)使用協(xié)處理器之前,具有保存協(xié)處理器狀態(tài)的機(jī)會(huì)。以上4個(gè)系統(tǒng)標(biāo)志和80286相兼容。(5)擴(kuò)充類型標(biāo)志ET(ExtensionTypeFlag)。該標(biāo)志是80386新增加的,它用來(lái)表示系統(tǒng)中所使用的數(shù)學(xué)協(xié)處理器的類型。該標(biāo)志設(shè)置的必要性在于80386DX既可支持80287,又可支持80387DX。若系統(tǒng)內(nèi)使用的數(shù)學(xué)協(xié)處理器是80387,則ET=1;若系統(tǒng)中使用的數(shù)學(xué)協(xié)處理器為80287或沒(méi)有使用數(shù)學(xué)協(xié)處理器,則ET=0。當(dāng)EM置位時(shí),ET標(biāo)志無(wú)效。(6)允許分頁(yè)標(biāo)志PG(PagingFlag)。該標(biāo)志表示處理器是否允許對(duì)存儲(chǔ)器線性地址進(jìn)行分頁(yè),并進(jìn)行物理地址轉(zhuǎn)換。若PG=1,允許分頁(yè),并由分頁(yè)部件將線性地址轉(zhuǎn)換成物理地址;若PG=0,禁止分頁(yè),這時(shí)線性地址直接當(dāng)作物理地址來(lái)使用。

CR1是未定義的控制寄存器,供以后微處理器升級(jí)用。

CR2

是頁(yè)故障線性地址寄存器,它保存最后出現(xiàn)頁(yè)故障的全32位線性地址,以便當(dāng)產(chǎn)生頁(yè)故障時(shí),用來(lái)報(bào)告錯(cuò)誤信息。

CR3是頁(yè)目錄基地址寄存器,用來(lái)保存頁(yè)目錄表的物理基地址。由于一頁(yè)存儲(chǔ)空間為4KB(212=4K),頁(yè)目錄及頁(yè)表中只要分別給出頁(yè)表地址和頁(yè)的首址,并不涉及頁(yè)內(nèi)的12位地址信息,故頁(yè)目錄基地址寄存器中的低12位不起作用,即使寫(xiě)入信息,處理器也不理會(huì)。7.系統(tǒng)地址寄存器(SystemAddressRegister)圖2.1380386系統(tǒng)地址寄存器(1)全局描述符表寄存器GDTR(GlobalDescriptorTableRegister)。GDTR為48位寄存器,用來(lái)保存全局描述符表的32位線性基址和16位界限。

(2)中斷描述符表寄存器IDTR(InterruptDescriptorTableRegister)。IDTR也為48位寄存器,用來(lái)保存中斷描述符表的32位線性地址和16位界限。

(3)局部描述符表寄存器LDTR(LocalDescripterTableRegister)。LDTR為16位寄存器,用來(lái)保存當(dāng)前任務(wù)的LDT(局部描述符表)的16位選擇符。

(4)任務(wù)狀態(tài)寄存器TR(TaskStateRegister)。TR為16位寄存器,用來(lái)保存當(dāng)前任務(wù)的TSS(任務(wù)狀態(tài)段)的16位選擇符。8.調(diào)試寄存器(DebugRegister)圖2.1480386的調(diào)試寄存器9.測(cè)試寄存器(TestRegister)圖2.1580386的測(cè)試寄存器2.480486微處理器的功能結(jié)構(gòu)圖2.1680486CPU框圖2.4.1總線接口部件80486的總線接口部件BIU負(fù)責(zé)與處理器外部總線的連接。但是與其它處理器不同的是,在處理器內(nèi)部,BIU只與高速緩存部件和指令預(yù)取部件交換數(shù)據(jù),從其它處理部件來(lái)的存儲(chǔ)器訪問(wèn)請(qǐng)求首先要經(jīng)過(guò)高速緩沖存儲(chǔ)器部件。對(duì)總線訪問(wèn)的所有請(qǐng)求,包括預(yù)取指令、讀存儲(chǔ)器和填充高速緩沖存儲(chǔ)器都由BIU判優(yōu)和執(zhí)行。在向高速緩沖存儲(chǔ)器填充數(shù)據(jù)時(shí),BIU一次便可從外部總線讀16個(gè)字節(jié)數(shù)據(jù)到高速緩沖部件。如果高速緩存的內(nèi)容被處理器內(nèi)部操作修改了,則修改的內(nèi)容也由BIU寫(xiě)回到外部存儲(chǔ)器中去。如果一個(gè)讀請(qǐng)求所要訪問(wèn)的存儲(chǔ)器操作數(shù)不在高速緩存中,則這個(gè)讀操作便由BIU控制直接對(duì)外部存儲(chǔ)器進(jìn)行。

在預(yù)取指令代碼時(shí),BIU把從外部存儲(chǔ)器取來(lái)的指令代碼同時(shí)傳送給代碼預(yù)取部件和內(nèi)部高速緩沖,以便在緊密編碼循環(huán)中,下一次預(yù)取相同的指令,可直接訪問(wèn)高速緩存。

BIU采用寫(xiě)緩沖寄存器先將寫(xiě)操作數(shù)據(jù)暫存起來(lái),等待外部存儲(chǔ)器或I/O端口來(lái)取。當(dāng)寫(xiě)操作的數(shù)據(jù)被緩沖寄存時(shí),處理器便可執(zhí)行其它操作,此稱為寫(xiě)緩沖。80486BIU可緩沖4個(gè)到存儲(chǔ)器的32位寫(xiě)傳輸。地址、數(shù)據(jù)和控制信息都能被緩沖,這無(wú)疑將提高處理器的運(yùn)行速度。2.4.2高速緩沖存儲(chǔ)部件高速緩沖存儲(chǔ)部件用來(lái)管理80486芯片上的8KB高速緩沖RAM。處理器中其它部件產(chǎn)生的所有總線訪問(wèn)請(qǐng)求在送達(dá)BIU之前,先經(jīng)過(guò)高速緩存部件。如果總線訪問(wèn)請(qǐng)求能在高速緩存中得以解決,則該總線訪問(wèn)請(qǐng)求將立即得以滿足,且BIU不必再產(chǎn)生總線周期,這種情況稱為高速緩存命中。如果總線訪問(wèn)請(qǐng)求不能在高速緩存中得以解決,便稱為高速緩存未命中。這時(shí)BIU將以一次16字節(jié)的傳輸方式將請(qǐng)求的存儲(chǔ)單元內(nèi)容送至高速緩存,這稱為高速緩存的行填充。寫(xiě)操作時(shí),檢查整個(gè)高速緩存,若發(fā)現(xiàn)寫(xiě)操作的目標(biāo),則立即修改高速緩存的內(nèi)容,并開(kāi)始一個(gè)寫(xiě)總線周期,把修改的數(shù)據(jù)寫(xiě)回存儲(chǔ)器,此稱為高速緩沖存儲(chǔ)器寫(xiě)通。2.4.3代碼預(yù)取部件在總線空閑周期時(shí),代碼預(yù)取部件向BIU發(fā)出預(yù)取指令的請(qǐng)求。預(yù)取的存儲(chǔ)器地址由預(yù)取部件自身產(chǎn)生。預(yù)取周期將一次讀16個(gè)字節(jié)的指令代碼,并存入32個(gè)字節(jié)的預(yù)取隊(duì)列中。如果高速緩沖存儲(chǔ)器在指令預(yù)取時(shí)能命中,則不需要產(chǎn)生總線周期。當(dāng)遇到跳轉(zhuǎn)、中斷、子程序調(diào)用等操作時(shí),預(yù)取隊(duì)列被清空。2.4.4指令譯碼部件指令譯碼部件的功能是從指令預(yù)取隊(duì)列取機(jī)器碼,并將其轉(zhuǎn)換成對(duì)其它處理部件的控制信號(hào)等。譯碼過(guò)程分兩步:首先要決定指令執(zhí)行時(shí)是否需要訪問(wèn)存儲(chǔ)器,若需要便立即產(chǎn)生總線訪問(wèn)周期,使存儲(chǔ)器操作數(shù)在譯碼結(jié)束后能準(zhǔn)備好;然后進(jìn)行譯碼過(guò)程的第二步,產(chǎn)生對(duì)其它處理部件的控制信號(hào)等,為指令執(zhí)行做好準(zhǔn)備。由于采用兩步譯碼,且大多數(shù)指令都在一個(gè)時(shí)鐘周期內(nèi)譯碼完畢,80486的指令譯碼部件中沒(méi)有已譯碼指令隊(duì)列。2.4.5控制部件

80486中控制部件單獨(dú)設(shè)置而沒(méi)有放在執(zhí)行部件中。控制部件對(duì)整數(shù)部件、浮點(diǎn)部件和段部件等進(jìn)行控制,使它們完成已譯碼指令的執(zhí)行。2.4.6整數(shù)部件整數(shù)部件包括處理器的4個(gè)32位通用寄存器、2個(gè)32位變址寄存器、2個(gè)32位指針寄存器、64位桶形移位器、算術(shù)和邏輯運(yùn)算部件和標(biāo)志寄存器等。它能在一個(gè)時(shí)鐘周期內(nèi)完成整數(shù)的傳輸,加、減運(yùn)算,邏輯運(yùn)算等。2.4.7分段部件和分頁(yè)部件與80386一樣,分段部件與分頁(yè)部件一起構(gòu)成存儲(chǔ)器管理部件,用來(lái)實(shí)現(xiàn)存儲(chǔ)器保護(hù)和虛擬存儲(chǔ)器管理。分段部件用來(lái)將邏輯地址轉(zhuǎn)換成線性地址,且采用段高速緩存器來(lái)提高轉(zhuǎn)換速度。分頁(yè)部件用來(lái)完成虛擬存儲(chǔ)器管理,把線性地址進(jìn)行分頁(yè)變?yōu)槲锢淼刂?。為了提高線性地址到物理地址的轉(zhuǎn)換速度,80486的分頁(yè)部件中也有轉(zhuǎn)換旁視高速緩沖存儲(chǔ)器(TLB)。2.4.8浮點(diǎn)部件

80486DX的浮點(diǎn)部件與外部數(shù)學(xué)協(xié)處理器的功能完全一樣,但當(dāng)所需要的操作數(shù)存放在處理器內(nèi)部的通用寄存器或內(nèi)部的高速緩存器中時(shí),運(yùn)行速度便會(huì)得到極大提高。如果操作數(shù)的存取需要訪問(wèn)外部存儲(chǔ)器,為了減少運(yùn)行時(shí)間,80486采取成組傳輸數(shù)據(jù)的方法來(lái)提高效率。

486SX稱為沒(méi)有數(shù)學(xué)協(xié)處理器的80486。這實(shí)際上是將486DX中的浮點(diǎn)部件機(jī)械地禁止了(大多因?yàn)楦↑c(diǎn)部件有故障),而處理器的其它功能未變。與486SX相配的數(shù)學(xué)協(xié)處理器487SX,實(shí)際上是一個(gè)完整的486DX芯片再加上幾個(gè)控制信號(hào)。486SX與487SX相配使用時(shí)功能與486DX相同。2.5Pentium級(jí)微處理器簡(jiǎn)介2.5.1Pentium微處理器

奔騰微處理器采用了超標(biāo)量流水線技術(shù)。所謂超標(biāo)量流水線技術(shù)是指在芯片內(nèi)設(shè)置多個(gè)相互獨(dú)立的執(zhí)行單元,使處理器在一個(gè)指令周期內(nèi)執(zhí)行多條指令。奔騰微處理器內(nèi)設(shè)置了兩條超標(biāo)量流水線:U流水線和V流水線,見(jiàn)圖2.17。每條流水線有自己獨(dú)立的地址生成邏輯、算術(shù)邏輯部件及數(shù)據(jù)高速緩存器。奔騰芯片內(nèi)U流水線和V流水線都能執(zhí)行整數(shù)指令,但V流水線卻不能執(zhí)行浮點(diǎn)指令(FXCH

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論