80386系統(tǒng)原理課件_第1頁
80386系統(tǒng)原理課件_第2頁
80386系統(tǒng)原理課件_第3頁
80386系統(tǒng)原理課件_第4頁
80386系統(tǒng)原理課件_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章

80386條統(tǒng)原理

2005年1月

?2.180386系統(tǒng)的核心

?80386微處理機(jī)是Intel于1985年推出的第一個(gè)32

位微處理機(jī),也是第一個(gè)支持多任務(wù)的微處理機(jī)。

80386的體系結(jié)構(gòu)為用戶提供一組32位通用寄存

器。它們?cè)谑褂脮r(shí)不受任何限制,既可用來進(jìn)行

數(shù)值計(jì)算,又可用它形成存儲(chǔ)器地址。80386體

系結(jié)構(gòu)還給用戶提供了幾種存儲(chǔ)管理和尋址方式,

以滿足不同的要求。

?此外,80386還提供多種尋址方式、數(shù)據(jù)類型、

指令以及某些特殊的結(jié)構(gòu),便于高級(jí)語言實(shí)施。

2005年1月

?下圖示出了以80386為基礎(chǔ)的高性能系統(tǒng)的核

心。由圖可以看出,高性能系統(tǒng)的核心是:

?80386、

?數(shù)值協(xié)同處理器80387、

?外部設(shè)備控制器82380,

?高速緩沖存儲(chǔ)器Cache的控制器82385組成。

?下圖是高性能系統(tǒng)核心的構(gòu)成

2005年1月

2005年1月

?80387的作用是加速浮點(diǎn)操作

?而高速緩沖存儲(chǔ)器Cache的控制器82385,

對(duì)容量為32K字節(jié)的高速緩沖存儲(chǔ)器Cache

實(shí)施控制,并帶有總線監(jiān)視(Bus

Watching)這一高級(jí)特征。

?在外部設(shè)備控制器82380內(nèi)集若干系統(tǒng)功能

于一體,其中包括動(dòng)態(tài)RAM的更新、中斷

與計(jì)時(shí)器和32位直接存儲(chǔ)器存取控制。

?80386的高性能系統(tǒng)核心配備有兩種不同的

總線:

?一是80386的系統(tǒng)總線;

?二是80386的局部總線。

2005年1月

2.280386的體系結(jié)構(gòu)

?2.2.1寄存器組

?80386基本體系結(jié)構(gòu)包括寄存器組、CPU等。

?80386總共有34個(gè)寄存器,按其功能可分成以下幾類:

?通用寄存器(General-PurposeRegister)。

?段寄存器(SegmentRegister)。

?狀態(tài)和控制寄存器(StatusandControlRegister)。

?系統(tǒng)地址寄存器(SystemAddressRegister)。

?調(diào)試寄存器(DebugRegister)。

?測(cè)試寄存器(TestRegister)。

2005年1月

?通用寄存器(General-PurposeRegisterJ

?8個(gè)通用寄存器是8086和80286寄存器的超集,它們

的名字和用途分別為:

?EAX通常用作累加寄存器(Accumulator)

?EBX通常用作基址寄存器(Base)

?ECX通常用來記數(shù)(Count)

?EDX通常用來存放數(shù)據(jù)(Data)

?ESP通常用作堆棧指針(StackPointer)

?EBP通常用作基址指針(BasePointer)

?ESI通常用作源變址(SourceIndex)

?EDI通常用作目標(biāo)變址(DestinationIndex)

2005年1月

?8個(gè)通用寄存器中通常保存有32位數(shù)據(jù),但為進(jìn)行16位的操

作并提供與Intel系列16位微機(jī)兼容,它們的低位部分被當(dāng)成8

個(gè)16位的寄存器

?為了支持8位的操作還可進(jìn)一步把EAX、EBX、ECX、和

EDX寄存器的低位部分(AX,BX,CX,DX)再進(jìn)一步分成

8位一組的高端和低端兩個(gè)字節(jié),作為8個(gè)8位寄存器。

?這8個(gè)寄存器分別被命名為AH、BH、CH、DH和AL、BL、

CL、DLo對(duì)8位或16位寄存器的操作只會(huì)影響到相應(yīng)的寄存

器。

311615015870

AXEAXAHALAX

BXEBXBHBLBX

CXECXCHCLCX

DXEDXDHDLDX

SIESI

DIEDI

BPEBI

SPESP

2005年1月

-段寄存器(Segmentregister)

?80386配備有6個(gè)16位的段寄存器,段寄存器也稱段

選擇符(Selector),它們的名字和用途如下:

?CS代碼段寄存器(CodeSegment)

?DS數(shù)據(jù)段寄存器(DataSegment)

?SS堆棧段寄存器(StackSegment)

?ES附加數(shù)據(jù)段寄存器(ExtraSegment)

?FS附加數(shù)據(jù)段寄存器(ExtraSegment)

?GS附加數(shù)據(jù)段寄存器(ExtraSegment)

2005年1月

?80386用這6個(gè)16位的段寄存器,去選擇各

自的存儲(chǔ)區(qū)域。其中CS、DS和SS這3個(gè)段

寄存器用來對(duì)當(dāng)前的代碼段、數(shù)據(jù)段和堆

棧段進(jìn)行尋址。

-而剩下的那3個(gè)附加數(shù)據(jù)段寄存器則是被用

來對(duì)用戶定義的數(shù)據(jù)區(qū)域?qū)ぶ贰?/p>

150

代碼段CS

堆棧段SS

數(shù)據(jù)段DS

附加數(shù)據(jù)段ES

附加數(shù)據(jù)段FS

附加數(shù)據(jù)段GS

2005年1月

2005年1月

?而在保護(hù)方式下,16位代碼段地址一

16位數(shù)據(jù)段地址-----

?在段寄存器內(nèi)保存著16位堆棧段地址-------

16位ES段地址----------------

?的則是16位的地址。-------------------------------------------

?這個(gè)16位的地址就是16位GS段地址-----------

描述符表

?通常所說的選擇符

?選擇符指示著描述符代碼

?表中的某一項(xiàng),數(shù)據(jù)

■實(shí)際的段基地址則是Ma

?被存放在描述符表中附力rws

?的一個(gè)描述符中,

附加FS

,如圖所示。

附加GS

2005年1月

?段描述符寄存器

■對(duì)程序員來說,段描述符寄存器是不可見的,然而了解它

的存在和作用卻是非常有益的。在80386的內(nèi)部,描述符

寄存器與可見的各個(gè)段寄存器是相聯(lián)的,如圖2.6所示。

每個(gè)描述符寄存器中保存著32位的基地址、段界限以及段

的其他屬性。

2005年1月

?狀態(tài)和控制寄存器

?狀態(tài)和控制寄存器是由標(biāo)志寄存器EFLAGS、

指令指針EIP和4個(gè)控制寄存器CRO?CR3)

組成,如圖所示。

310

標(biāo)志寄存器(EFLAGS)

指令指針寄存器(EIP)

機(jī)器狀態(tài)寄存器(CR0)

保留(CR1)

頁故障地址寄存器(CR2)

災(zāi)目錄基址寄存器(CR3)

2005年1月

?1.指令指針寄存器

?在指令指針寄存器EIP中,存放著下一條要執(zhí)行指

令的偏移量(Offset),這個(gè)偏移量是相對(duì)目前

正在運(yùn)行的代碼段寄存器CS而言的。偏移量加上

當(dāng)前段的地址,形成了下一條指令的地址。EIP中

的低16位可以分開來訪問,給它起名叫做指令指

針I(yè)P(InstructionPointer)寄存器,用于16位尋

址操作。

?下圖是80386指令指針寄存器EIP和標(biāo)志寄存器

EFLAGS

IPEIP

FLAGSEFLAGS

2005年1月

?2.標(biāo)志寄存器

?標(biāo)志寄存器EFLAGS存放著有關(guān)80386微處

理機(jī)當(dāng)前狀態(tài)的信息,如圖所示。標(biāo)志寄

存器中的第1、3、5、15位及18?31位都

沒有定義。但是,當(dāng)使用SAHF指令或

PUSHF指令時(shí),或當(dāng)出現(xiàn)中斷處理時(shí),除

位1外,其余各位則全部是0。

?下圖是80386的標(biāo)志寄存器EFLAGS

2005年1月

?80386的標(biāo)志寄存器

311716151413121109876543210

I

VR0DITSZAP

00N0001C

???MFTPFFFFFFFFF

I

VM:虛擬8086模式(X)

RF:恢復(fù)標(biāo)志(X)——

NT:嵌套任務(wù)標(biāo)志(X)-

IOPL:I/O特權(quán)級(jí)標(biāo)志(X)

OF:溢出標(biāo)志(S)-------

DF:方向標(biāo)志(C)——

IF:允許中斷標(biāo)志

南自陷標(biāo)志(X)——

SF:符號(hào)標(biāo)志(S)-------

ZF:零標(biāo)志(S)-------

AF:輔助進(jìn)位標(biāo)志(S)

PF:奇偶校驗(yàn)標(biāo)志(S)

CF:進(jìn)位標(biāo)志(S)——

2005年1月

?標(biāo)志寄存器中的位0(CF位)是進(jìn)位標(biāo)志位。

?標(biāo)志寄存器中的位2(PF位)是奇偶校驗(yàn)標(biāo)志位

?標(biāo)志寄存器中的位4(AF位)是輔助進(jìn)位標(biāo)志位.

?標(biāo)志寄存器中的位6(ZF位)是零標(biāo)志位,當(dāng)結(jié)果為零

時(shí),被置成1;否則被置成0。

?標(biāo)志寄存器中的位7(SF位)是符號(hào)標(biāo)志位,當(dāng)結(jié)果為

負(fù)時(shí)被置成1;結(jié)果為正時(shí),則被置成0。

?標(biāo)志寄存器中的位8(TF位)是自陷標(biāo)志位,當(dāng)將其置

成1時(shí),則可以進(jìn)行單步執(zhí)行。當(dāng)指令執(zhí)行完后,就有

可能生成異常事故1的自陷。

?標(biāo)志寄存器中的位9(IF位)是中斷標(biāo)志位,是用來表

示允許或者禁止某些外部中斷。

?標(biāo)志寄存器中的位10(DF位)是定向標(biāo)志位。

2005年1月

?標(biāo)志寄存器中的位11(OF位)是溢出標(biāo)志位,用它表

示運(yùn)算時(shí)出現(xiàn)的進(jìn)位進(jìn)入了結(jié)果的高序位,可是高序位

卻沒有進(jìn)位輸出,或是高序位并沒有接受進(jìn)位輸入?yún)s產(chǎn)

生了進(jìn)位輸出。

?標(biāo)志寄存器中的位12、位13(IOPL位)是輸入/輸出特

權(quán)級(jí)位。

,標(biāo)志寄存器中的位14(NT位)是嵌套任務(wù)標(biāo)志位。

?標(biāo)志寄存器中的位16(RF位)是恢復(fù)標(biāo)志位,也是

80386新增添的一位標(biāo)志位。

,標(biāo)志寄存器中的位17(VM位)是虛擬8086方式標(biāo)志位

2005年1月

?3.控制寄存器

?80386還定義了由4個(gè)32位的控制寄存器CRO?

CR3組成一個(gè)寄存器組,如圖所示。

允許保護(hù)_________________________

監(jiān)控協(xié)處理器____________________

模擬協(xié)處理器----------------

任務(wù)轉(zhuǎn)換-------------

?—允許分頁處理機(jī)擴(kuò)展

3143215

PG保留機(jī)器狀態(tài)字MSWprrsiZMMPPE

保留CR1

頁故障線性地址寄存器CR2

3111109876543210

頁目錄基地址寄存器000000000000

2005年1月

?在這4個(gè)控制寄存器中保存著全局性和任務(wù)

無關(guān)的機(jī)器狀態(tài)。這些寄存器連同后面將

要說明的系統(tǒng)地址寄存器(System

AddressRegister)一起,保存影響系統(tǒng)中

所有任務(wù)的機(jī)器狀態(tài)。訪問控制寄存器時(shí),

要用存、取這一類傳送指令,例如MOV

CR0指令。

?控制寄存器CR0包含6個(gè)預(yù)定義標(biāo)志,表示

和控制機(jī)器的狀態(tài)。其中0?15位叫做機(jī)器

狀態(tài)字MSW(MachineStatusWord),

這使得80386在保護(hù)方式下能與80286兼容。

2005年1月

控制寄存器CRO中的位0是允許保護(hù)位PE(ProtectonEnable),用

于啟動(dòng)微處理機(jī)的保護(hù)方式。如果PE被置成1,保護(hù)方式啟動(dòng);如果

PE位被置成0,則微處理機(jī)在實(shí)地址方式下運(yùn)行。

CR0中的位1是監(jiān)控協(xié)處理器位MP(MonitorCoprocessor)。

它與TS位一起決定:當(dāng)TS=1時(shí)操作碼WAIT是否產(chǎn)生一個(gè)“協(xié)處理器

不能使用”的出錯(cuò)信息。

CR0的位2是模擬協(xié)處理器位EM(EmulateCoprocessor)。

如果EM=1,則所有協(xié)處理器的操作碼都將產(chǎn)生“協(xié)處理器不能使

用”的出錯(cuò)誤信號(hào)。如果EM=0,則所有協(xié)處理器的操作碼都能在

80287或80387協(xié)處理器上執(zhí)行。

CR0的位3是任務(wù)轉(zhuǎn)換位TS(TaskSwitched)。

當(dāng)一個(gè)任務(wù)轉(zhuǎn)換完成之后自動(dòng)把它置成1。隨著TS被置成1,協(xié)處理

器的操作碼將會(huì)引起一個(gè)協(xié)處理器不能使用的陷阱。

CR0中的位4是微處理機(jī)的擴(kuò)充類型位ET(ProcessorExtension

Type),其內(nèi)保存著微處理機(jī)擴(kuò)充類型的信息。如果ET=0,表示系

統(tǒng)內(nèi)用的是80387浮點(diǎn)協(xié)處理器。這樣,設(shè)計(jì)人員可選擇使用80287

和80387。

CR0的位31是允許分頁位PE(PagingEnable)。

它表示芯片上的分頁部件是否允許PG位和PE位配對(duì),給80386提供

選擇操作環(huán)境的4種組合方式。由PG位和PE位定義的操作方式在表

給予詳細(xì)說明。

2005年1月

?表:PG、PE位的4種組合

?PG位PE位方式

?-00實(shí)方式,8086操作

-~-0i保護(hù)方式,確切的80286的語義加

?上32位擴(kuò)充(在擴(kuò)充的80286/80386

?保護(hù)方式范圍內(nèi),還定義了一個(gè)支

?持虛擬8086的子環(huán)境)__________

?10未被定義,如果試圖利用這一組合,

?___________________________則將發(fā)出一個(gè)一般保護(hù)故障

?11“分頁環(huán)境”允許保護(hù)方式下的所有設(shè)

?施都能分頁

2005年1月

?R1是未定義的控制寄存器,用作備用。

?CR2是頁故障線性地址寄存器,保存

最后出現(xiàn)頁故障的全32位的線性地址。

?CR3是頁目錄基址寄存器,保存頁目錄表

的物理基地址。因?yàn)?0386的頁目錄表是按

頁排列的,所以低12位不起作用,即使寫

上了內(nèi)容,也不被理會(huì)。

2005年1月

?系統(tǒng)地址寄存器

?80386有4個(gè)系統(tǒng)地址寄存器,如圖所示,它

保存操作系統(tǒng)需要的保護(hù)信息和地址轉(zhuǎn)換表

4732位線性基地址1615界限0

GDTR

IDTR

選擇符TR

選擇符LDTR

2005年1月

■這4個(gè)專用的寄存器用于引用80386在保護(hù)方式下所需要的

表或段。這4個(gè)系統(tǒng)地址寄存器名字和作用如下:

?全局描述符表寄存器GDTR(GlobalDescriptorTableRegister)

?是32位寄存器,用來保存全局描述符表(GDT)的32位線

性基址和16位GDT的界限。

?中斷描述符表寄存器IDTR(InterruptDescriptorTableRegister)

?是32位寄存器,用來保存中斷描述符表(IDT)的32位線

性地址和IDT的16位界限。

?局部描述符表寄存器LDTR(LocaLDescriptorTableRegister)

?是16位寄存器,其內(nèi)保存著16位的局部描述符表LDT段的

速擇符。

■任務(wù)狀態(tài)寄存器TR(TaskStateRegister)

?是16位寄存器,其內(nèi)保存任務(wù)狀態(tài)段TSS的16位選擇符。

2005年1月

圖80386的調(diào)試寄存器

310

線性斷點(diǎn)地址0DR0

線性斷點(diǎn)地址1DR1

線性斷點(diǎn)地址2DR2

線性斷點(diǎn)地址3DR3

Intel保留DR4

Intel保留DR5

斷點(diǎn)狀態(tài)DR6

斷點(diǎn)控制___________DR7

2005年1月

?2.2.280386的CPU

?為使80386體系結(jié)構(gòu)有很高的性能指標(biāo),設(shè)計(jì)

人員精心安排了微體系結(jié)構(gòu)。增強(qiáng)CPU的性

能可通過下列途徑:

?(1)使用先進(jìn)的工藝過程和電路。

?(2)提高時(shí)鐘的速度。

?(3)增加數(shù)據(jù)寬度。

?(4)使用先進(jìn)的系統(tǒng)和總線結(jié)構(gòu)。

?(5)使用先進(jìn)的微體系結(jié)構(gòu)。

2005年1月

?80386微處理機(jī)的特點(diǎn)之一是采用流水線技術(shù),

因此增大了系統(tǒng)的信息流量,在時(shí)鐘頻率為

16MHz下,系統(tǒng)信息的流量每秒達(dá)3?4M指令。

?存儲(chǔ)器接口的信息流量每秒可達(dá)32MB,因而能高

速地提供代碼。

?為使指令能以高速執(zhí)行,在指令流水線內(nèi)采用了

指令預(yù)取技術(shù)。

?高速尋址流水線能非常迅速地生成有效地址、線

性地址和物理地址。一些專門的優(yōu)化措施,像早

期啟動(dòng)指令、早期乘法輸出以及早期數(shù)據(jù)周期指

示等,可使性能進(jìn)一步提高。

2005年1月

?80386的8個(gè)邏輯部件分別叫做

?總線接口部件、

?預(yù)取部件、

?指令譯碼部件、

?控制部件、

?數(shù)據(jù)部件、

■保護(hù)測(cè)試部件、

?分段部件和分頁部件。

?控制部件、數(shù)據(jù)部件和保護(hù)測(cè)試部件共同

組成80386CPU的執(zhí)行部件。80386的8個(gè)

邏輯部件間邏輯關(guān)系如下圖所示。

2005年1月

■圖80386流水線結(jié)構(gòu)

2005年1月

,揩令淡水餞(instructionpipeline)

,80386的指令流水線由三個(gè)邏輯部件構(gòu)成:

一,總線接口部件;

,二,預(yù)取部件;

,三.是指令譯碼部件。

,總線接口部件執(zhí)行存儲(chǔ)器周期并向預(yù)取部

件傳遞指令代碼。預(yù)取部件把來自存儲(chǔ)器

的指令代碼以16字節(jié)指令代碼隊(duì)列格式存

放起來。指令譯碼則是從16字節(jié)的指令代

碼隊(duì)列中提取代碼,形成最后指令,且以

三個(gè)字為一條指令按序排好。

2005年1月

?1.總線接口部件BIU(BusinterfaceUnit)

?Bill是CPU和整個(gè)計(jì)算機(jī)系統(tǒng)之間的高速接口。它控

制著同步多路32位的數(shù)據(jù)和地址總線。

?其功能是:當(dāng)取指令、取數(shù)據(jù)、分頁部件請(qǐng)求以及

分段部件請(qǐng)求時(shí),能有效地滿足CPU對(duì)外部總線的

傳送要求。因此,必須把總線接口部件設(shè)計(jì)成能接

受多人內(nèi)部總線請(qǐng)求,并且能按優(yōu)先權(quán)加以選擇,

能最大限度地利用可以利用的總線寬度,為這些請(qǐng)

求服務(wù)。

?這些動(dòng)作與當(dāng)前進(jìn)行的任何總線交換操作都可以重

疊進(jìn)行。80386總線周期只用兩個(gè)時(shí)鐘。如果使用流

水線操作方式,80386總線還能夠在完成當(dāng)前總線

操作以前,就開始形成一個(gè)新總線周期的下一個(gè)地

址。不論什么時(shí)候,在沒有總線傳送請(qǐng)求時(shí),即沒

有操作蓼請(qǐng)求傳送時(shí),預(yù)取部件就利用這空閑周期,

把下一藜指令讀到預(yù)取部件的預(yù)取隊(duì)列中。

2005年1月

?2.預(yù)取部件(PrefetchUnit)

?它有一個(gè)能容納16條指令的隊(duì)列。預(yù)取部件把對(duì)齊了的指令

存放在隊(duì)列中,以便于指令譯碼部件有效譯碼。

它還管理一個(gè)線性地址指針和一個(gè)段預(yù)取界限。這兩項(xiàng)內(nèi)容

是在開始時(shí)從分段部件那兒獲得的,分別作為預(yù)取指令的指

針和用來檢查是否違反了分段界限。

預(yù)取部件采取把預(yù)取總線周期的請(qǐng)求信號(hào)通過分頁部件發(fā)送

給總線接口部件的辦法,力圖使其指令隊(duì)列裝滿代碼的有效

字節(jié)。每當(dāng)預(yù)取代碼隊(duì)列中有一部分已經(jīng)變空,或者發(fā)生一

次控制褒移2后,預(yù)取部件就發(fā)出預(yù)取總線周期的請(qǐng)求信號(hào)。

預(yù)取部件總線周期請(qǐng)求的優(yōu)先級(jí)別低于與執(zhí)行有關(guān)的取/存

操作數(shù)的總線周期請(qǐng)求的級(jí)別,同時(shí)也低于頁面沒有命中時(shí)

的處理過程、以及分段專用的總線周期請(qǐng)求的優(yōu)先級(jí)別。在

零等待狀態(tài)下預(yù)取總線周期和數(shù)據(jù)總線周期互不干擾。空閑

的總線周期就從存儲(chǔ)器預(yù)取指令代碼,并保持代碼隊(duì)列總是

滿的。

2005年1月

?3.一金譯Z3部件(InstructionDecodeUnit)

?指令譯碼部件的職責(zé)是對(duì)指令進(jìn)行譯碼,并且作

好供執(zhí)行部伴進(jìn)行處理的濯備工作。

?在預(yù)取部件中保管一人能容納16條指令的字節(jié)隊(duì)

歹限指令譯碼部件取來這些字并且把它們擴(kuò)展成

內(nèi)部編碼。每當(dāng)指令部件本身隊(duì)列中有一部分變

空,或者說指令流水線的管道中部分變空時(shí),它

就從預(yù)取部件的指令隊(duì)列中取出指令字節(jié),對(duì)它

們進(jìn)行譯碼,并且作好其他準(zhǔn)備,然后把譯好的

碼存到自己能容納3條已譯好碼的指令隊(duì)列中。

?譯過碼的指令隊(duì)列是很寬的,它們包含執(zhí)行部件

能立即執(zhí)行、不需進(jìn)一步譯碼的所有指令段。預(yù)

取部件/指令部件二者組合的流水操作是在兩個(gè)時(shí)

鐘周期內(nèi)完成的。但是,指令部件可以按操作碼

字節(jié)以一個(gè)時(shí)鐘的速度譯碼。

2005年1月

?222.2執(zhí)行部件(ExecutionUnit)

?執(zhí)行部件是由包括控制ROM(CROM)在內(nèi)

的控制部件、帶有一些寄存器和算術(shù)運(yùn)算與邏

輯運(yùn)算部件的數(shù)據(jù)部件,以及能對(duì)復(fù)雜的存儲(chǔ)

器的保護(hù)功能進(jìn)行快速測(cè)試的測(cè)試部件組成。

2005年1月

?指令隊(duì)列內(nèi)有一個(gè)字段,這個(gè)字段是那條指令在控制ROM中微

程序的開始地址。

?寄存器的地址或直接來自控制ROM,或間接來自指令隊(duì)列。在

兩個(gè)時(shí)鐘周期內(nèi),從寄存器內(nèi)可誘出兩個(gè)值送入算術(shù)運(yùn)算和邏輯

運(yùn)算部件ALU,并把結(jié)果寫回到蓄存器上。

?從流水線結(jié)構(gòu)角度看,指令譯碼部件后的邏輯部件就是執(zhí)行部件。

前面曾提及,執(zhí)行部件是由控制部件(ControlUnit)>數(shù)據(jù)處

理部件(DataUnit)和保護(hù)測(cè)試部件(ProFectionTestUnit)

組成。它的職責(zé)是執(zhí)行交給它的所有指令。

?控制部件由一個(gè)微代碼驅(qū)動(dòng)的機(jī)構(gòu)組成。它配備有一個(gè)專門硬件

......................―一處理鄢件也稱數(shù)據(jù)通道,它包

括所有寄存器、一個(gè)算術(shù)及邏輯運(yùn)算部件ALU、1個(gè)桶形移位器

(BarrelShifter)>乘/除硬件以及專用控制邏輯。

?微機(jī)構(gòu)的執(zhí)行延遲是兩個(gè)時(shí)鐘時(shí)間。但是,通過把微指令的取才日

令和執(zhí)行指令重疊起來,再通過使用延遲的微轉(zhuǎn)跳技術(shù),它所提

供的執(zhí)行速率實(shí)際是每個(gè)周期只需一個(gè)時(shí)鐘(在16MHz時(shí)鐘頻率

下為62.5ns)o

?為進(jìn)一步提高執(zhí)行部件對(duì)有效指令的處理速率,而采用了指令并

行的或重疊的執(zhí)行方法。

2005年1月

?2.2.2.3地tit流水線(AddrssPipeline)

?地址流水線由分段部件、分頁部件和與指令流水線

共享的總線接口部件組成。

?存儲(chǔ)器地址是在微程序控制下產(chǎn)生的。首先發(fā)送兩

個(gè)32位值。

?例如,一個(gè)來自指令隊(duì)列的立即數(shù),另一個(gè)是寄存

器的值。把它們送到分段部件的加法器中,就可以

形成一個(gè)有效地址。然后,經(jīng)另一個(gè)加法器在段中

再定位,就形成了一個(gè)線性地址。同時(shí)還要在一個(gè)

32位減法器中與段的界限進(jìn)行比較,看是否越界。

最后,經(jīng)由一個(gè)請(qǐng)求式分頁轉(zhuǎn)換旁視緩沖存儲(chǔ)器TLB,

把線性地址進(jìn)行了分頁轉(zhuǎn)換,即形成物理地址。以

上操作可在1.5個(gè)時(shí)鐘周期時(shí)間內(nèi)完成。

2005年1月

?L分段部件(SegmentationUnit)

?這個(gè)部件應(yīng)執(zhí)行部件的請(qǐng)求去計(jì)算有效地址。是它把邏輯地

址轉(zhuǎn)換成線性地址。

?在分段情況下,用戶看到的指令地址叫做邏輯地址。48位的

邏輯地址是由一個(gè)16位的段選擇符和一個(gè)32位的段偏移量構(gòu)

成的。段選擇符是段描述符表的索引,也就是說,它指向的

是描述符表中的一個(gè)描述符。

■這個(gè)段描述符內(nèi)包括有基址、界限、存取權(quán)(如僅讀、讀/寫)

和規(guī)定所許可訪問類型的“特權(quán)”信息。為保持高速運(yùn)行,

在程序的初始化階段就自動(dòng)地把當(dāng)前的段選擇符和段描述符

裝進(jìn)6個(gè)段寄存器CS、DS、ES、FS、GS、和SS之內(nèi)。

?分段部件把48位的邏輯地址轉(zhuǎn)換成32位的線性地址。這種轉(zhuǎn)

換是通過把32位段偏移量加上段寄存器中的段基地址值完成

的,如圖2.14所示。

2005年1月

■圖線性地址的計(jì)算

邏輯地址

2005年1月

?2.分頁部件(PagingUnit)

■分頁部件的職責(zé)是把由分段部件或代碼預(yù)取部件產(chǎn)生的線性地址

轉(zhuǎn)痍成物理地址(PhysicalAddress)o對(duì)天苗數(shù)指令來說,分

段部件都是從段寄存器和描述符寄存器得到轉(zhuǎn)換和保護(hù)數(shù)據(jù)的。

在操作系統(tǒng)軟件的控制下,如果分頁部件是允許狀態(tài),就把分段

部件產(chǎn)生的線性地址送到分頁部件轉(zhuǎn)換成物理地址,并且還要檢

驗(yàn)核準(zhǔn)訪問是否與頁屬性一致。如果分頁部件是處于不允許狀態(tài)

(禁止?fàn)顟B(tài)),則不必轉(zhuǎn)換就是線性地址。

-頁是一個(gè)大小固定的塊,為4K個(gè)字節(jié)。由于提供了統(tǒng)一的分配和

再分配部件,分頁簡化了交換系統(tǒng)。于是,當(dāng)分段部件用來構(gòu)造

邏輯地址空間時(shí),分頁部件用來管理物理地址。

?分頁是由以存儲(chǔ)器為基礎(chǔ)的兩級(jí)頁表和內(nèi)部寄疊器實(shí)現(xiàn)的,如圖

2.15所示。在一級(jí)的頁表是頁的映像,高一級(jí)的是個(gè)頁目錄,它

又是頁表的映像。頁目錄中的一項(xiàng)(口領(lǐng)得項(xiàng))或頁表中的一

項(xiàng)(血頁裊項(xiàng))大小都是4個(gè)字節(jié),而每一頁目宗和每一頁表大

小都是4K個(gè)字節(jié)。所以每一級(jí)都有1024項(xiàng)。因此只需要一個(gè)頁

目錄就能映像1024個(gè)頁表,從而映射了全部4G個(gè)字節(jié)的線性地

址。

2005年1月

圖80386兩級(jí)分頁圖解

線性地址

頁目錄

311211~9876543210

頁表地址31?12OS00DA00URP

保留

SW

2005年1月

?3.分段部件與分頁部件集于一體

?把分段部件與分頁部件集成于同一芯片上有以下優(yōu)點(diǎn):

?(1)可以把從形成有效地址到產(chǎn)生線性地址和物理地址的各

個(gè)步驟都重疊起來,充分利用流水線與并行執(zhí)行的優(yōu)點(diǎn)。即

當(dāng)前操作還在總線上進(jìn)行的時(shí)候,下一個(gè)存儲(chǔ)器地址就已經(jīng)

知道了。邏輯地址向物理地址的轉(zhuǎn)換過程在很多情況下可以

與其他總線周期重疊進(jìn)行,并且能在當(dāng)前總線周期結(jié)束之前

完成轉(zhuǎn)換。如果把MMU放在片外執(zhí)行以上過程,顯然是比較

困難的。

?(2)為了實(shí)現(xiàn)MMU的轉(zhuǎn)換,無需在總線周期上增加時(shí)鐘個(gè)

數(shù)。又因?yàn)榇鎯?chǔ)管理功能是在芯片內(nèi)進(jìn)行的,所以它不是外

部總線的一部分。

?(3)分段部件和分頁部件集成于一體,使系統(tǒng)的復(fù)雜性和價(jià)

格降低了,同時(shí)也簡化了電路的設(shè)計(jì),提高了可靠性和速度,

在芯片之外也不再需要存儲(chǔ)管理元件。

2005年1月

■圖80386較詳細(xì)的流水線結(jié)構(gòu)

段部件頁部件總線控制

有效地址總線32位3輸入加法器請(qǐng)求

加法器判優(yōu)

控制器[NTRHOLD

理r-fNMIHLDA#

描述符頁高速二BUSY#

有效地址總線32位址.

寄存器緩沖器二ERROR#

Q一RESET

界限控制控

和屬性PLA——*和屬性制

PLA

位移總線線性

—*A2-A31

動(dòng)

保受警內(nèi)部控制總線器

部件一漲

線D0-D31

桶形移位預(yù)取器/界限

器加法器指令譯碼器」檢驗(yàn)器線

譯碼和時(shí)序?qū)?/p>

-乘/除~達(dá)態(tài)

志指令流—TTT邙一度

寄存器燃已譯碼的三二指令隊(duì)列

控制ROM指令隊(duì)列32位

ALU控制控制指令預(yù)譯碼指令預(yù)取制

ALU32位

專用ALU總線MU

2005年1月

2.380387的體系結(jié)構(gòu)

?由于引入了80387協(xié)處理器可進(jìn)行80位的實(shí)型數(shù)據(jù)的運(yùn)算,

使處理機(jī)處理數(shù)據(jù)的]

大增力口。在進(jìn)行浮點(diǎn)算/|、心畀口」,3儂山,XL月M九/I勿卜'沖處些理珀器刃、

統(tǒng)比僅用微處理機(jī)進(jìn)行運(yùn)算其速度要高出50700倍。

?80287和80387都使用80位內(nèi)部結(jié)構(gòu),實(shí)現(xiàn)了IEEE浮點(diǎn)格

式。

?其中包括32位單精度實(shí)數(shù)、

?64位的雙精度實(shí)型數(shù)、

?80位的擴(kuò)展實(shí)型數(shù)、

?16位字整型數(shù)、32位短整型數(shù)、64位長整型數(shù)

?18位的BCD整數(shù)等七種數(shù)據(jù)類型的運(yùn)算。80287/80387

還擴(kuò)充了80286/80386的指令系統(tǒng)。所增加的指令有三角

函數(shù)、對(duì)數(shù)、指數(shù)和針對(duì)所有數(shù)據(jù)類型的算術(shù)運(yùn)算指令。

另外,80387協(xié)處理器還支持寫80386數(shù)據(jù)總線的全部32

位接口,支持正以正總和余弦三種二應(yīng)圄數(shù)運(yùn)算。而

80287僅支持從0度?45度的正切函數(shù)運(yùn)算。

2005年1月

?圖2.17示出80386/80387系統(tǒng)結(jié)構(gòu)。由圖可

以看出,80386CPU是整個(gè)系統(tǒng)的核心。系

統(tǒng)內(nèi)還有82384時(shí)鐘發(fā)生器和80387(或

80287)數(shù)值協(xié)同處理器,系統(tǒng)內(nèi)并無總線

控制芯片。82384向80386提供時(shí)鐘、復(fù)位、

準(zhǔn)備好等信號(hào)。因?yàn)?2384信號(hào)源為32MHz

時(shí)鐘,所以80386和80387的時(shí)鐘頻率為

16MHZo

2005年1月

?2.3.380387外部特性

?80386CPU把80387看成是一個(gè)從屬的協(xié)處理

器。CPU向協(xié)處理器寫操作碼和操作數(shù),并

且還要執(zhí)行存儲(chǔ)器的事務(wù)處理。用80386的存

儲(chǔ)管理硬件對(duì)全部存儲(chǔ)器數(shù)值操作數(shù)進(jìn)行訪問,

所以80386的整個(gè)存儲(chǔ)保護(hù)機(jī)構(gòu)就被完好無損

地維持下來了。并且還簡化了用戶存儲(chǔ)管理方

案。圖2.17示出80386與80387的接口.

2005年1月

?可以把80387的體系統(tǒng)結(jié)構(gòu)想像成是由兩個(gè)

不同的部件組合而成:一個(gè)是總線控制邏

輯部件(BusControlLogicUnit),可把它

當(dāng)成80387的專用總線控制器用;另一個(gè)是

80387核心(Core)部件,用它來完成各種

計(jì)算,80387的邏輯框圖如圖2.18所示。

2005年1月

?圖2.1880387邏輯框圖

2005年1月

?2.3.480387內(nèi)部結(jié)構(gòu)

■1.80387寄存器

■80387擁有8個(gè)80位的通用寄存器,如圖2.19所示。它們

各自獨(dú)立地進(jìn)行尋址,另又增加了3個(gè)16位寄存器和2個(gè)

48位寄存器。通用寄存器是以堆棧形式組織起來的。堆棧

的棧頂用80387的狀態(tài)字寄存器的TOP字段標(biāo)明。數(shù)字指

令在對(duì)這8個(gè)通用寄存器進(jìn)行尋址時(shí),就以堆棧棧頂為基

礎(chǔ)。為敘述方便起見,用ST表示堆棧棧頂,用ST(i)表

示從棧頂起的第i個(gè)寄存器。

?狀態(tài)字寄存器、

?控制字寄存器

■和標(biāo)記字寄存器。

■80387的所有狀態(tài)都存放在狀態(tài)字內(nèi)。控制字寄存器用于

控制處理80387的選擇。標(biāo)記字表示通用寄存器堆棧中每

個(gè)寄存器的內(nèi)容。

2005年1月

?圖2.1980387的寄存器組

標(biāo)志字段

79786463010

R0符號(hào)指數(shù)有效數(shù)位

R1

R2

R3

R4

R5

R6

R7

■標(biāo)記字的功能優(yōu)化了80387的性能,利用它可

以處理堆棧,以辨別寄存器存儲(chǔ)單元是空的

還是不空。它還允許異常處理程序檢驗(yàn)堆棧

存儲(chǔ)單元的內(nèi)容,而且不必對(duì)實(shí)際數(shù)據(jù)執(zhí)行

復(fù)雜的譯碼操作。

2005年1月

?2、80387內(nèi)部結(jié)構(gòu)

?圖2.18示出80387協(xié)處理器的內(nèi)部結(jié)構(gòu)。從中可

以看出80387有3個(gè)主要的功能部件,它們分別是:

?(1)總線控制邏輯部件。

?(2)數(shù)據(jù)接口與控制部件。

?(3)浮點(diǎn)運(yùn)算部件(FPU)。

?總之,80387的核心是浮點(diǎn)運(yùn)算部件和數(shù)據(jù)接口

與控制部件的組合,總線控制邏輯的通信則可獨(dú)

自地與CPU共用I/O總線周期,在執(zhí)行浮點(diǎn)指令時(shí),

由CPU自動(dòng)啟動(dòng)I/O總線周期。這個(gè)部件依靠CPU

實(shí)現(xiàn)整個(gè)存儲(chǔ)器周期操作。總線狀態(tài)經(jīng)過譯碼識(shí)

別后方可決定是向80386傳送數(shù)據(jù),還是從80386

向80387傳送數(shù)據(jù)。整個(gè)80386流水線總線周期都

給予支持。

2005年1月

?2.4高速緩沖存儲(chǔ)器

?2.4.1高速緩沖存儲(chǔ)器Cache

?高速緩沖存儲(chǔ)器Cache是位于CPU和主存

儲(chǔ)器間規(guī)模較小、速度很高的存儲(chǔ)器。它

是32位微計(jì)算機(jī)必不可少的組成部分。

Cache既可以是實(shí)際的,也可以是虛擬的;

既可以是直接映像形式的,也可以是N路相

聯(lián)形式的;既可以是指令和數(shù)據(jù)共用同一

個(gè)Cache,也可以是指令和數(shù)據(jù)分開的分離

式Cache。

2005年1月

?Cache是速度較低的主存儲(chǔ)器和高速微處理機(jī)間

的橋梁。Cache提供CPU所需的能快速進(jìn)行訪問

的指令和數(shù)據(jù)。

?為使Cache更加有效,要求程序有高度的暫時(shí)性

和訪問的局部性。這就是說,假設(shè)剛?cè)〕鲆粭l指

令,在很短的周期時(shí)間內(nèi)便還要再取。像經(jīng)常使

用的循環(huán)、頻繁使用某些變量和子程序就有高度

的暫時(shí)性和訪問局部性。若程序在取出一條指令

后,馬上又到同一存儲(chǔ)單元再取這條指令,就是

訪問的局部性,若一個(gè)程序使用一系列的順序指

令,而且那些變量在存儲(chǔ)器中又是相鄰的,這樣

的程序就是具有訪問局部性的程序。

?Cache保存主存儲(chǔ)器的部分副本。主機(jī)訪問

Cache的速度可以像主機(jī)一樣。

2005年1月

?下面解分Cache的一些術(shù)語。

?高速緩沖存儲(chǔ)器(Cache)

?Cache存儲(chǔ)器是放置在主存儲(chǔ)器和CPU之間的

一個(gè)速度非常快而規(guī)模較小的一種存儲(chǔ)器。使

用Cache可以增加存儲(chǔ)器的傳輸速率和處理的

效能。它的名字源于:這種存儲(chǔ)器感覺不到,

但對(duì)程序設(shè)計(jì)人員來說又是透明的。

?反向復(fù)制(Copy-back)

?這是一項(xiàng)減少訪問主存儲(chǔ)器的技術(shù)。當(dāng)把

Cache中的數(shù)據(jù)塊替換出Cache時(shí),同時(shí)也把

數(shù)據(jù)塊寫回到主存儲(chǔ)器中。

2005年1月

?直接映像的Cache

?這是一項(xiàng)Cache交換技術(shù)。為主存儲(chǔ)器中每

一存儲(chǔ)單元,對(duì)應(yīng)分配Cache中惟一的一個(gè)

存儲(chǔ)單元。

?FIFO替換算法

?即先進(jìn)先出的替換算法。當(dāng)所需的存儲(chǔ)空

間較大時(shí),駐留在Cache中最深的那個(gè)數(shù)據(jù),

最先從Cache傳送出來。

?命中率(HitRate)

?用百分?jǐn)?shù)表示的一種概率,是CPU訪問

Cache時(shí),它所找到的與要找的信息的百分

比。

2005年1月

?訪問的局部性(LocaltyofReference)

■臨時(shí)查尋數(shù)據(jù)和指令成功的可能性,或者

說這些被查找的數(shù)據(jù)和指令與程序是密切

相關(guān)的。

?LRU替換算法

?這是一種比FIFO算法更有效的算法。當(dāng)需

要較大的存儲(chǔ)空間時(shí),用最近經(jīng)常要用的

數(shù)據(jù)替換Cache中最近最少使用的數(shù)據(jù)。

2005年1月

?實(shí)Cache(RealCache)

?實(shí)Cache是一種位于存儲(chǔ)管理部件MMU和主存儲(chǔ)

器之間的Cache。存儲(chǔ)管理部件MMU在把地址傳

到Cache之前,要把虛擬地址轉(zhuǎn)換成實(shí)際地址。

?虛擬Cache

?是駐留在CPU和存儲(chǔ)管理部件MMU間的Cache存

儲(chǔ)器。要訪問Cache的存儲(chǔ)單元是以CPU的虛擬

地址為基礎(chǔ)。

?統(tǒng)一的Cache

?給CPU存儲(chǔ)數(shù)據(jù)和指令的Cache。

?分離的Cache

?數(shù)據(jù)和指令各自獨(dú)立分開存儲(chǔ)的Cache。

2005年1月

?N路相聯(lián)的Cache

?這是一項(xiàng)Cache映像技術(shù)。對(duì)主存儲(chǔ)器中的每一存

儲(chǔ)單元,在Cache中就有好幾個(gè)可用存儲(chǔ)單元與其

對(duì)應(yīng)。

?交換(Swapping)

?即Cache存儲(chǔ)器與主存儲(chǔ)器間的數(shù)據(jù)傳送。由于

Cache存儲(chǔ)器規(guī)模較小,就有可能把給定數(shù)據(jù)塊傳

送回主存儲(chǔ)器。主存儲(chǔ)器要為CPU所需數(shù)據(jù)塊內(nèi)的

數(shù)據(jù)騰出地方。

?標(biāo)記(Tag)

-是CPU用來與一個(gè)關(guān)鍵字進(jìn)行比較的相聯(lián)存儲(chǔ)器的

那一部分。通過比較確定與主存儲(chǔ)器存儲(chǔ)單元相對(duì)

應(yīng)的Cache中的哪一個(gè)字在CPU進(jìn)行訪問時(shí)是有效

的。

2005年1月

?一致性:

?指的是Cache中每一地址上的數(shù)據(jù)與存儲(chǔ)器

中相應(yīng)的存儲(chǔ)單元中的數(shù)據(jù)是一樣的。欲

使主存儲(chǔ)器與Cache間協(xié)調(diào)一致,通常有三

種寫方案可供選擇,如圖220所示。

?(1)寫貫穿(WriteThrough):這是在所

有寫操作時(shí)修改主存儲(chǔ)器和Cache存儲(chǔ)器的

一種方法。在向Cache寫數(shù)據(jù)的同時(shí),把相

同數(shù)據(jù)也寫到主存儲(chǔ)器中去。

2005年1月

圖2.20Cache三種寫方案

寫貫穿Cache

2005年1月

?(2)寫回:

?這種寫方案是一種用來更新Cache的寫方法,

只有當(dāng)Cache中的某一存儲(chǔ)塊被刷新時(shí),才把

這一存儲(chǔ)塊寫回到主存儲(chǔ)器中去。

?(3)記入式寫:

?這種寫方案是把寫到Cache中的數(shù)據(jù)復(fù)制到一

個(gè)緩沖存儲(chǔ)器中去,然后再把這個(gè)副本寫回主

存儲(chǔ)器。實(shí)際上,這種方案就是帶有緩沖的寫

貝牙。

2005年1月

?2.4.2Cache/痙制器

?1.Cache控制器82385

?Cache控制器82385是專為80386設(shè)計(jì)的高性能32位外圍支持芯

片。它與靜態(tài)RAM(簡稱SRAM)芯片一起構(gòu)成高速緩沖存儲(chǔ)

器,保存處理機(jī)最近常要使用的指令和數(shù)據(jù)的副本。CPU幾乎

可以在無等待狀態(tài)下從Cache取出數(shù)據(jù)。82385可以對(duì)整個(gè)4G

字節(jié)的主存儲(chǔ)器進(jìn)行尋址。

?由于82385芯片上有緩沖存儲(chǔ)器的目錄索引,因此,可以支持

32K字節(jié)雙總線結(jié)構(gòu)。

?82385的總線監(jiān)視(BusWatching)功能。

?Cache控制器82385不需特殊軟件,對(duì)軟件是透明的。Cache的

控制過程完全由硬件實(shí)現(xiàn),可以與80386在相同主題下并駕齊

驅(qū)工作。由于82385把支持外部32K字節(jié)Cache存儲(chǔ)體需要的目

錄存儲(chǔ)區(qū)以及其他管理邏輯集成在同一芯片上,使得Cache子

系統(tǒng)非常簡單,大大減少了80386系統(tǒng)芯片的數(shù)目。

2005年1月

?82385是由局部總線接口、處理機(jī)接口、

Cache目錄存儲(chǔ)器以及Cache控制邏輯等部件

構(gòu)成的,如圖2.21所示。

80386地址總

監(jiān)視總線

Cache控制

總線

2005年1月

?2.80386/82385系統(tǒng)

?圖2.22示出直接映像的Cache系統(tǒng)邏輯框圖。

整個(gè)系統(tǒng)可分為3個(gè)部分:

?處理機(jī)部分、

?Cache存儲(chǔ)器及其控制部分、

?系統(tǒng)總線接口部分。

?處理機(jī)包括80386處理機(jī)與82384時(shí)鐘發(fā)生

器。Cache存儲(chǔ)器及其控制部分包括82385

控制器、外部動(dòng)態(tài)存儲(chǔ)器、Cache地址鎖存

器。系統(tǒng)總線接口部分包括系統(tǒng)總線、數(shù)

據(jù)收發(fā)器、地址鎖存器等。

2005年1月

?在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論