第四章 16位微處理器_第1頁
第四章 16位微處理器_第2頁
第四章 16位微處理器_第3頁
第四章 16位微處理器_第4頁
第四章 16位微處理器_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章16位微處理器

微處理器(Microprocessor)是微機(jī)的運(yùn)算及控制部件,也稱中央處理單元(CPU)。它本身不構(gòu)成獨(dú)立的工作系統(tǒng),因而它不能獨(dú)立地執(zhí)行程序。通常,微處理器由算術(shù)邏輯部件(ALU)、控制部件、寄存器組和片內(nèi)總線等幾部分組成,這些都在前面幾章中講過了有了一定的基礎(chǔ)。4.116位微處理器概述2023/2/214.28086/8088CPU的結(jié)構(gòu)8086CPU從功能上可分為兩部分,即:總線接口部件BIU(Bus1nterfaceUnit)和執(zhí)行部件EU(ExecutionUnit)。8086的內(nèi)部結(jié)構(gòu)如圖4-1所示.2023/2/22圖4-18086CPU內(nèi)部結(jié)構(gòu)框圖2023/2/231.執(zhí)行部件

執(zhí)行部件(EU)的功能就是負(fù)責(zé)指令的執(zhí)行。將指令譯碼并利用內(nèi)部的寄存器和ALU對數(shù)據(jù)進(jìn)行所需的處理。從結(jié)構(gòu)圖4-1中,可見到執(zhí)行部件由下列部分組成:1)四個(gè)通用寄存器,即AX、BX、CX、DX;2)四個(gè)專用寄存器,即基數(shù)指針寄存器BP,堆棧指針寄存器SP,源變址寄存器SI,目的變址寄存器DI;3)標(biāo)志寄存器(FR);4)算述邏輯部件(ALU)。2023/2/248086/8088的EU有如下特點(diǎn):

1、四個(gè)通用寄存器既可以作為16位寄存器使用,也可以作為8位寄存器使用。當(dāng)BX寄存器作為8位寄存器時(shí),分為BH和BL、BH為高8位,BL為低8位。

2.AX寄存器也常稱為累加器,8086指令系統(tǒng)中有許多指令都是通過累加器的動(dòng)作來執(zhí)行的。當(dāng)累加器作為16位來使用時(shí),可以進(jìn)行按字乘操作、按字除操作、按字輸入/輸出和其它字傳送等;當(dāng)累加器作為8位來使用時(shí),可以實(shí)現(xiàn)按字節(jié)乘操作、按字節(jié)除操作、按字節(jié)輸入輸出和其它字節(jié)傳送,以及十進(jìn)制運(yùn)算等。2023/2/25

3.加法器是算術(shù)邏輯的主要部件,絕大部分指令的執(zhí)行都由加法器來完成。

4.標(biāo)志寄存器FR共有16位,其中7位未用,所用的各位含義如下:

根據(jù)功能,8086的標(biāo)志可分為兩類:狀態(tài)標(biāo)志——它是操作在執(zhí)行后,決定算術(shù)邏輯部ALU處在何種狀態(tài),這種狀態(tài)會影響后面的操作。控制標(biāo)志——它是人為設(shè)置的,指令系統(tǒng)中有專門的指令用于控制標(biāo)志的設(shè)置和清除,每個(gè)控制標(biāo)志都對每一種特定的功能起控制作用。2023/2/26

狀態(tài)標(biāo)志有六個(gè),即SF、ZF、PF、CF、AF和OF。表4-18086/8088標(biāo)志位表:

2023/2/272.總線接口部件BIU

總線接口部件的功能是負(fù)責(zé)與存儲器、I/O端口傳送數(shù)據(jù),即BIU管理在存儲器中存取程序和數(shù)據(jù)的實(shí)際處理過程。

總線接口部件由下列各部分組成:

(1)四個(gè)段地址寄存器,即

CS一16位代碼段寄存器,

DS一16位數(shù)據(jù)段寄存器,

ES一16位附加段寄存器,

SS一16位堆棧段寄存器。

(2)16位指令指針寄存器IP;

(3)20位的地址加法器;

(4)六字節(jié)的指令隊(duì)列。

2023/2/28

IP:指令指針寄存器。存放下一條要讀取的指令在代碼段內(nèi)的偏移地址。用戶程序不能直接訪問IP。注意PC與IP的區(qū)別。在程序執(zhí)行過程中,PC始終指向下一條要執(zhí)行的指令。因此可得結(jié)論:PC中的地址是需要轉(zhuǎn)移、循環(huán)、調(diào)用子程序等操作時(shí)的斷點(diǎn)。

8086CPU中有兩個(gè)功能部件,即總線接口部件BIU和執(zhí)行部件EU,BIU負(fù)責(zé)取指令,EU負(fù)責(zé)譯碼執(zhí)行。當(dāng)BIU執(zhí)行的六個(gè)字節(jié)裝滿后,EU開始從出??谌≈噶钸M(jìn)行譯碼執(zhí)行,同時(shí)BIU并行操作向入??谘a(bǔ)充一條取指令命令。指令指針I(yè)P則指向下條要取指的指令。而斷點(diǎn)則應(yīng)是要執(zhí)行的指令內(nèi)存地址,而不是IP內(nèi)的下一條要取指的指令地址,且IP比斷點(diǎn)超前了六個(gè)字節(jié)。由此可得結(jié)論:IP中并不是需要作轉(zhuǎn)移、循環(huán)等操作時(shí)的斷點(diǎn)。2023/2/29

8086/8088的BIU有如下特點(diǎn):1·8086的指令隊(duì)列為六個(gè)字節(jié),8088的指令隊(duì)列為四個(gè)字節(jié)。不管是8086還是8088,都會在執(zhí)行指令的同時(shí),從內(nèi)存中取下一條指令或下幾條指令,取來的指令就放在指令隊(duì)列中。這樣,一般情況下,CPU執(zhí)行完一條指令就可以立即執(zhí)行下一條指令,而不需要象以往的計(jì)算機(jī)那樣,讓CPU輪番進(jìn)行取指令和執(zhí)行指令的操作,從而提高了CPU的效率。2023/2/2102·地址加法器用來產(chǎn)生20位地址。上面已經(jīng)提到,8086可用20位地址尋址:1M字節(jié)的內(nèi)存空間,但8086內(nèi)部所有的寄存器都是16位的,所以需要由一個(gè)附加的機(jī)構(gòu)來根據(jù)16位寄存器提供的信息計(jì)算出20位的物理地址,這個(gè)機(jī)構(gòu)就是20位的地址加法器。

例如,一條指令的物理地址就是根據(jù)代碼段寄存器CS和指令指針寄存器IP的內(nèi)容得到的。具體計(jì)算時(shí),要將段寄存器的內(nèi)容左移4位,然后再與IP的內(nèi)容相加。假設(shè):CS=0FE00H,IP=0400H,此時(shí)指令的物理地址為0FE400H。2023/2/211

總線接口部件和執(zhí)行部件并不是同步工作的,它們是按以下流水線技術(shù)原則管理:

(1)每當(dāng)8086的指令隊(duì)列中有兩個(gè)空字節(jié),或者8088的指令隊(duì)列中有一個(gè)空字節(jié)時(shí),總線接口部件就會自動(dòng)把指令取到指令隊(duì)列中。

(2)每當(dāng)執(zhí)行部件準(zhǔn)備執(zhí)行一條指令時(shí),它會從總線接口部件的指令隊(duì)列前部取出指令的代碼,然后用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在執(zhí)行指令的過程中,如果必須訪問存儲器或者輸入/輸出設(shè)備,那么,執(zhí)行部件就會請求總線接口部件,進(jìn)入總線周期,完成訪問內(nèi)存或者輸入/輸出端口的操作;如果此時(shí)總線接口部件正好處于空閑狀態(tài),那么,會立即響應(yīng)執(zhí)行部件的總線請求。2023/2/212

但有時(shí)會遇到這樣的情況,執(zhí)行部件請求總線接口部件訪問總線時(shí),總線接口部件正在將某個(gè)指令字節(jié)取到指令隊(duì)列中,此時(shí)總線接口部件將首先完成這個(gè)取指令的總線周期,然后再去響應(yīng)執(zhí)行部件發(fā)出的訪問總線的請求。

(3)當(dāng)指令隊(duì)列已滿,而且執(zhí)行部件又沒有總線訪問時(shí),總線接口部件便進(jìn)入空閑狀態(tài)。2023/2/213

(4)在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時(shí),下面要執(zhí)行的指令就不是在程序中緊接著的那條指令了,而總線接口部件往指令隊(duì)列裝人指令時(shí),總是按順序進(jìn)行的,這樣,指令隊(duì)列中已經(jīng)裝入的字節(jié)就沒有用了。遇到這種情況,指令隊(duì)列中的原有內(nèi)容被自動(dòng)消除,總線接口部件會接著往指令隊(duì)列中裝入另一個(gè)程序段中的指令。2023/2/214

3.存儲器結(jié)構(gòu)

8086/8088系統(tǒng)中存儲器按字節(jié)編址,可尋址的存儲器空間為1M字節(jié),由于1M字節(jié)為220,因此每個(gè)字節(jié)所對應(yīng)的地址應(yīng)是20位,這20位的地址稱為物理地址。

(1)存儲器的分段20位的物理地址在CPU內(nèi)部就應(yīng)有20位的地址寄存器,而機(jī)內(nèi)的寄存器是16位的(16位機(jī)),16位寄存器只能尋址64K字節(jié)。8086/8088系統(tǒng)中把1M存儲空間分成若干個(gè)邏輯段,每個(gè)邏輯段容量(64K字節(jié)),因此1M的存儲空間可分成16個(gè)邏輯段(0一15)。

2023/2/215

允許邏輯段在整個(gè)存儲空間浮動(dòng),即段與段之間可以部分重疊、完全重疊、連續(xù)排列、斷續(xù)排列非常靈活,在整個(gè)存儲空間中可設(shè)置若干個(gè)邏輯段,如圖4-2所示。2023/2/216

對于任何一個(gè)物理地址,可以唯一地被包含在一個(gè)邏輯段中,也可包含在多個(gè)相互重疊的邏輯段中,只要有段地址和段內(nèi)偏移地址就可以訪問到這個(gè)物理地址所對應(yīng)的存儲空間,如圖4-3所示。

在8086/8088存儲空間中,把16字節(jié)的存儲空間稱作一節(jié)(Paragraph)。為了簡化操作,要求各個(gè)邏輯段從節(jié)的整數(shù)邊界開始,也就是說段首地址低4位應(yīng)該是“0”,因此就把段首地址的高16位稱為“段基址”,存放在段寄存器DS或CS或SS或ES中,段內(nèi)的偏移地址存放在IP或SP中。2023/2/217

若已知當(dāng)前有效的代碼段、數(shù)據(jù)段、附加段和堆棧段的段基址分別為1055H、250AH、8FFBH和EFF0H,那么它們在存儲器中的分布情況如圖4-4所示。2023/2/218(2)存儲器中的邏輯地址和物理地址

任何一個(gè)20位物理地址,也稱為絕對地址,都是由兩部分組成。采用分段結(jié)構(gòu)的存儲器中,任何一個(gè)邏輯地址由段基址和偏移地址兩個(gè)部分構(gòu)成,它們都是無符號的16位二進(jìn)制數(shù)。任何一個(gè)存儲單元對應(yīng)一個(gè)20位的物理地址,也可稱為絕對地址,它是由邏輯地址變換得來的,當(dāng)CPU需要訪問存儲器時(shí),必須完成如下的地址運(yùn)算:

物理地址=段基址*16+偏移地址

2023/2/219

物理地址的形成如圖4-5所示,它是通過CPU的總線接口部件BIU的地址加法器來實(shí)現(xiàn)的。2023/2/220

例如,代碼段寄存器CS=2000H,指令指針寄存器存放的是偏移地址IP=2200H,存儲器的物理地址為20000H+2200H=22200H

我們可以把每一個(gè)存儲單元看成是具有兩種類型的地址:物理地址和邏輯地址,物理地址就是實(shí)際地址,它具有20位的地址值,它是唯一標(biāo)識1M字節(jié)存儲空間的某一個(gè)字節(jié)的地址。邏輯地址由段基址和偏移地址組成。程序以邏輯地址編址,而不是用物理地址編址。

2023/2/221

四個(gè)段寄存器分別指向四個(gè)現(xiàn)行可尋址的分段的起始字節(jié)單元。一般指令程序存放在代碼段中,段地址來源于代碼段寄存器,偏移地址來源于指令指針I(yè)P。當(dāng)涉及到一個(gè)堆棧操作時(shí),段地址寄存器為SS,偏移地址來源于棧指針寄存器SP。當(dāng)涉及到一個(gè)操作數(shù)時(shí),則由數(shù)據(jù)段寄存器DS或附加段寄存器ES作為段寄存器,而偏地址是由16位偏移量得到。16位偏移量可以是指令中的偏移量加上16位地址寄存器的值組成,取決于指令的尋址方式。2023/2/2224.8086總線的工作周期

為了取得指令和傳送數(shù)據(jù)的協(xié)調(diào)工作,就需要CPU的總線接口部件執(zhí)行一個(gè)總線周期。在8086/8088中,一個(gè)最基本的總線周期由四個(gè)時(shí)鐘周期組成,時(shí)鐘周期是CPU的基本時(shí)間計(jì)量單位,它由計(jì)算機(jī)主頻決定。例如,8086的主頻為10MHz一個(gè)時(shí)鐘周期就是100ns。在一個(gè)最基本的總線周期中,常將四個(gè)時(shí)鐘周期分別稱為四個(gè)狀態(tài),即T1狀態(tài)、T2狀態(tài)、T3狀態(tài)。T4狀態(tài)。2023/2/223

典型的8086總線周期序列見圖4-6。

在T1狀態(tài):CPU往多路復(fù)用總線上發(fā)出地址信息,以指出要尋址的存儲單元或外設(shè)端口的地址。

在T2狀態(tài):CPU從總線上撤消地址,而使總線的低16位浮置成高阻狀態(tài),為傳輸數(shù)據(jù)做準(zhǔn)備??偩€的最高四位(A16—A19)用來輸出本總線周期狀態(tài)信息。這些狀態(tài)信息用來表示中斷允許狀態(tài),當(dāng)前正在使用的段寄存器名等。2023/2/224在T3狀態(tài):多路總線的高4位繼續(xù)提供狀態(tài)信息,而多路總線的低16位(8088則為低8位)上出現(xiàn)由CPU寫出的數(shù)據(jù)或者CPU從存儲器或端口讀入的數(shù)據(jù)。

在有些情況下,被寫入數(shù)據(jù)或者被讀取數(shù)據(jù)的外設(shè)或存儲器不能及時(shí)地配合CPU傳送數(shù)據(jù)。這時(shí),外設(shè)或存儲器會通過“READY”信號線在T3狀態(tài)啟動(dòng)之前,向CPU發(fā)一個(gè)“數(shù)據(jù)未準(zhǔn)備好”信號,于是CPU會在T3之后插入一個(gè)或多個(gè)附加的時(shí)鐘周期Tw,Tw也叫等待狀態(tài),在Tw狀態(tài),總線上的信息情況和T3狀態(tài)的信息情況一樣。當(dāng)指定的存儲器或外設(shè)完成數(shù)據(jù)傳送時(shí),便在“READY”線上發(fā)出“準(zhǔn)備好”信號,CPU接收到這一信號后,會自動(dòng)脫離TW狀態(tài)而進(jìn)入T4狀態(tài)。2023/2/225在T4狀態(tài):總線周期結(jié)束。

需要指出的是,只有在CPU和內(nèi)存或I/O接口之間傳輸數(shù)據(jù),以及填充指令隊(duì)列時(shí),CPU才執(zhí)行總線周期。可見,如果在一個(gè)總線周期之后,不立即執(zhí)行下一個(gè)總線周期,那么系統(tǒng)總線就處在空閑狀態(tài),此時(shí),執(zhí)行空閑周期。在空閑周期中,可以包含一個(gè)或多個(gè)時(shí)鐘周期。在這期間,高4位上,CPU仍然驅(qū)動(dòng)前一個(gè)總線周期的狀態(tài)信息,而且,如果前一個(gè)總線周期為寫周期,那么,CPU會在總線低16位上繼續(xù)驅(qū)動(dòng)數(shù)據(jù)信息;如果前一個(gè)總線周期為讀周期,則在空閑周期中,總線低16位處于高阻狀態(tài)。2023/2/226

4.38086/8088CPU的引腳和工作模式

(一)8086和8088的引腳如圖4-7所示:圖4-78086/8088引腳信號圖(括號內(nèi)為最大模式時(shí)的引腳名)2023/2/2278086/8088各引腳信號的:功能如下:

1.AD15一AD0。(AddressDatabus)地址/數(shù)據(jù)復(fù)用引腳(雙向工作)

作為復(fù)用引腳,在總線周期的T1狀態(tài)用來輸出要訪問的存儲器或I/O端口地址。T2一T3狀態(tài),對讀周期來說,處于浮空狀態(tài);對寫周期來說,則是傳輸數(shù)據(jù)。

2023/2/228地址狀態(tài)分時(shí)復(fù)用引腳A19/S6A16/S3:引腳3538,輸出、三態(tài)總線。采用分時(shí)輸出,即在T1狀態(tài)作地址線用,T2T4狀態(tài)輸出狀態(tài)信息。訪問存儲器時(shí),T1狀態(tài)輸出由A19A16(訪問I/O端口時(shí),不使用A19A16,它們保持為0)與AD15AD0一起構(gòu)成的20位物理地址。狀態(tài)信息位中,S6為0用來表示8086CPU當(dāng)前與總線相連,所以在T2T4狀態(tài),S6總為0;S5表示(可屏蔽)中斷允許標(biāo)志位IF的當(dāng)前設(shè)置,IF=1時(shí),S5為1,否則為0;S4S3用來指示當(dāng)前正在使用哪個(gè)段寄存器,如下表所示:2.A19/S6一A16/S3(Address/Status)地址/狀態(tài)復(fù)用引腳(輸出)2023/2/229S4與S3組合代表的正在使用的寄存器S4S3當(dāng)前正在使用的段寄存器00110101ESSSCS或未使用任何段寄存器DS2023/2/230

3.NMI(Non一Maskab1einterrupt)非屏蔽中斷引腳(輸入)

非屏蔽中斷信號是不受中斷允許標(biāo)志IF的影響,也不能用軟件進(jìn)行屏蔽。每當(dāng)NMI端進(jìn)入一個(gè)正沿觸發(fā)信號時(shí),CPU就會在結(jié)束當(dāng)前指令后,進(jìn)入對應(yīng)于中斷類型號為2的非屏蔽中斷處理程序。

4.INTR(1nterruptRequest)可屏蔽中斷請求信號引腳(輸入)

可屏蔽中斷請求信號為高電平有效,CPU在執(zhí)行每條指令的最后一個(gè)時(shí)鐘周期會對INTR信號進(jìn)行采樣,如果CPU中的中斷允許標(biāo)志為1,并且又接收到INTR信號,那么,CPU就會在結(jié)束當(dāng)前指令后,響應(yīng)中斷請求,進(jìn)入一個(gè)中斷處理子程序。2023/2/2314.CLK(Clock)時(shí)鐘引腳(輸入)

5.RESET(Reset)復(fù)位信號引腳(輸入)引腳21,復(fù)位信號,輸入,高電平有效。復(fù)位信號使處理器馬上結(jié)束現(xiàn)行操作,對處理器內(nèi)部寄存器進(jìn)行初始化。8086/8088要求復(fù)位脈沖寬度不得小于4個(gè)時(shí)鐘周期。復(fù)位后,內(nèi)部寄存器的狀態(tài)如下表所示:內(nèi)部寄存器狀態(tài)標(biāo)志寄存器IPCSDSSSES指令隊(duì)列緩沖器其余寄存器0000H0000HFFFFH0000H0000H0000H空0000H2023/2/2326.TEST測試信號引腳(輸入)

測試信號為低電平有效。TEST信號是和指令WAIT結(jié)合起來使用的,在CPU執(zhí)行WAIT指令時(shí),CPU處于空轉(zhuǎn)狀態(tài)進(jìn)行等待;當(dāng)8086的TEST信號有效時(shí),等待狀態(tài)結(jié)束,CPU繼續(xù)往下執(zhí)行被暫停的指令。7.MN/MX(Minimum/MaximumModeControl)最?。畲竽J娇刂菩盘栆_(輸入)

它是最大模式及最小模式的選擇控制端。此引腳固定接為+5V時(shí),CPU處于最小模式;如果接地,則CPU處于最大模式。2023/2/2338、INTA(1nterruptAcknowledge)中斷響應(yīng)信號(輸出)

9、ALE(AddressLatchEnable)地址鎖存允許信號(輸出)這是8086/8088提供給地址鎖存器8282/8283的控制信號,高電平有效。

10、:引腳32,讀控制信號,輸出。當(dāng)=0時(shí),表示將要執(zhí)行一個(gè)對存儲器或I/O端口的讀操作。到底是從存儲單元還是從I/O端口讀取數(shù)據(jù),取決于(8086)或(8088)信號。2023/2/234

11.:引腳34,8086高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳,輸出。在總線周期的T1狀態(tài)時(shí)輸出,為低電平時(shí),表示當(dāng)前數(shù)據(jù)總線上高8位數(shù)據(jù)有效。該引腳和地址引腳A0配合表示當(dāng)前數(shù)據(jù)總線的使用情況。S7為備用狀態(tài)信號線。

8086系統(tǒng)中,若要讀/寫從奇地址單元開始的一個(gè)字,需要兩個(gè)總線周期。數(shù)據(jù)總線的使用情況00110101011016位字傳送(偶地址開始的兩個(gè)存儲器單元的內(nèi)容)在數(shù)據(jù)總線高8位(D15D8)和奇地址單元間進(jìn)行字節(jié)傳送在數(shù)據(jù)總線低8位(D7D0)和偶地址單元間進(jìn)行字節(jié)傳送無效從奇地址開始讀/寫一個(gè)字(在第一個(gè)總線周期將低8位數(shù)字送到AD15~AD8;在第二個(gè)總線周期將高8位數(shù)字送到AD7~AD0)2023/2/235M/IODT/RSS0操作100發(fā)中斷響應(yīng)信號101讀I/O端口110寫I/O端口111暫停000取指令001讀內(nèi)存010寫內(nèi)存011無源狀態(tài)對于8088,對外只有8位數(shù)據(jù)總線,沒有高8位數(shù)據(jù)總線,因而不需要BHE信號,第34號引腳為SS0。SS0、M/IO和DT/R組合起來,決定了當(dāng)前總線周期的操作,具體對應(yīng)關(guān)系如表所示。2023/2/236

12.READY:引腳22,準(zhǔn)備就緒信號,輸入,高電平有效。該信號由8284時(shí)鐘發(fā)生器同步后產(chǎn)生。CPU在每個(gè)總線周期的T3狀態(tài)的上升沿對READY引腳采樣,若為高電平,說明數(shù)據(jù)已準(zhǔn)備好,進(jìn)入T4狀態(tài)完成數(shù)據(jù)傳送過程,結(jié)束當(dāng)前總線周期;若為低電平,則CPU在T3狀態(tài)之后自動(dòng)插入一個(gè)或幾個(gè)等待狀態(tài)TW,直到READY變?yōu)楦唠娖?。無源狀態(tài):當(dāng)S2、S1、S0都為高電平時(shí)表明操作過程即將結(jié)束,而另外iayige新的總線周期尚未開始,這時(shí)稱為無源狀態(tài)(最大工作模式下)。2023/2/237(二)8086/8088CPU工作模式

8086/8088的工作模式完全是由硬件決定的。

為了盡可能適應(yīng)各種使用場合,在設(shè)計(jì)8086/8088CPU芯片時(shí),就使得它們可以在兩種模式下工作,即最大模式和最小模式。所謂最小模式,就是在系統(tǒng)中只有8086/8088一個(gè)微處理器。在這種系統(tǒng)中,所有的總線控制信號都直接由8086/8088產(chǎn)生,因此,系統(tǒng)中的總線控制邏輯電路被減到最少。

2023/2/238

8087是一種專用于數(shù)值運(yùn)算的處理器,它能實(shí)現(xiàn)多種類型的數(shù)值操作,例如高精度的整數(shù)和浮點(diǎn)運(yùn)算,也可以進(jìn)行超越函數(shù)(如:三角函數(shù)、對數(shù)函數(shù))的計(jì)算。

最大模式是相對最小模式而言,它用在中等規(guī)模的或者大型的8086/8088系統(tǒng)中,在此系統(tǒng)中,包含兩個(gè)或多個(gè)微處理器,其中一個(gè)主處理器就是8086/8088,其它的處理器稱為協(xié)處理器·它們是協(xié)助主處理器工作的。和8086/8088配合的協(xié)處理器有兩個(gè),一個(gè)是數(shù)值運(yùn)算協(xié)處理器8087,一個(gè)是輸入/輸出協(xié)處理器8089。2023/2/239

由于在通常情況下,這些運(yùn)算往往通過軟件方法來實(shí)現(xiàn),而8087是用硬件方法來完成這些運(yùn)算的,所以在系統(tǒng)中加入?yún)f(xié)處理器8087之后,會提高系統(tǒng)的數(shù)值運(yùn)算速度。

8089在原理上有點(diǎn)兒象帶有兩個(gè)DMA通道的處理器,它有一套專門用于輸入/輸出操作的指令系統(tǒng),但8089又和DMA的控制器不同,它可以直接為輸入/輸出設(shè)備服務(wù),使8086/8088不再承擔(dān)這類工作。所以在系統(tǒng)中增加協(xié)處理器8089后,會提高主處理器的效率,尤其是在輸入輸出頻繁的場合。2023/2/2408086最小工作模式的典型配置2023/2/241

在最小模式下其硬件包括:一片8284A

作為時(shí)鐘發(fā)生器。它有三個(gè)功能:產(chǎn)生時(shí)鐘信號對READY和RESET信號進(jìn)行同步。三片8282或74LS373

。(8282是8位的,而8086/8088系統(tǒng)采用20位地址,再加上BHE信號,所以需要三片8282),用來作為地址鎖存器(由于采用地址數(shù)據(jù)分式復(fù)用總線,而CPU對存儲器或I/O接口進(jìn)行存取操作時(shí),要求在整個(gè)總線周期內(nèi)保持穩(wěn)定的地址信息,因而必須在總線周期內(nèi)的T1狀態(tài)中將地址信息鎖存起來)。當(dāng)系統(tǒng)中所連的存儲器和外設(shè)較多時(shí),需要增加數(shù)據(jù)總線的驅(qū)動(dòng)能力,這時(shí)用兩片8286作為總線收發(fā)器,也常稱為總線驅(qū)動(dòng)器。

2023/2/242在最小方式下,第2431引腳的功能如下:

(2)ALE:引腳25,地址鎖存允許信號,輸出。它是8086/8088提供給地址鎖存器的控制信號,高電平有效。

(1)

:引腳24,中斷響應(yīng)信號,輸出。該信號用于對外設(shè)的中斷請求作出響應(yīng)。

(3)

:引腳26,數(shù)據(jù)允許信號,輸出。當(dāng)使用數(shù)據(jù)總線收發(fā)器時(shí),該信號為收發(fā)器提供一個(gè)控制信號,決定是否允許數(shù)據(jù)通過數(shù)據(jù)總線收發(fā)器。2023/2/243在DMA方式,以上三個(gè)引腳被浮置為高阻狀態(tài)。

(4)

:引腳27,數(shù)據(jù)發(fā)送/接收信號,輸出。該信號用來控制數(shù)據(jù)的傳送方向。

(5)

:引腳28,存儲器I/O端口控制信號,輸出。該信號用來區(qū)分CPU是進(jìn)行存儲器訪問還是I/O端口訪問。

(6)

:引腳29,寫信號,輸出。表示CPU當(dāng)前正在進(jìn)行存儲器或I/O寫操作(取決于M/IO信號)。2023/2/244數(shù)據(jù)傳送方式M/IORDWRI/O讀001I/O寫010存儲器讀101存儲器寫1108086最小模式數(shù)據(jù)傳送方式2023/2/245

(7)HOLD:引腳31,總線保持請求信號,輸入。當(dāng)8086/8088CPU之外的總線主設(shè)備要求占用總線時(shí),通過該引腳向CPU發(fā)一個(gè)高電平的總線保持請求信號。

(8)HLDA:引腳30,總線保持響應(yīng)信號,輸出。當(dāng)CPU接收到HOLD信號后,這時(shí)如果CPU允許讓出總線,就在當(dāng)前總線周期完成時(shí),在T4狀態(tài)發(fā)出高電平有效的HLDA信號給以響應(yīng)。2023/2/2468086最大工作模式的典型配置2023/2/247

在最大模式下,一般包括2個(gè)或多個(gè)處理器,這樣就要解決主處理器和協(xié)處理器之間的協(xié)調(diào)工作問題和對總線的共享控制問題。在最大模式下,CPU不直接產(chǎn)生總線控制信號,而是將總線開始的狀態(tài)信息等信號經(jīng)一個(gè)控制信號轉(zhuǎn)換電路,即8288總線控制器。

另外,在最大模式系統(tǒng),一般還有中斷優(yōu)先管理部件,即8289A,在8086多處理器系統(tǒng)中,除8086CPU外還有8089和8087,他們也是采用分時(shí)方式來占用總線。因此,在多處理器系統(tǒng)中必須采用總線仲裁器8289配合總線控制器8288來確定每一個(gè)時(shí)刻的總線使用權(quán)賦予優(yōu)先級別較高的處理器使用。2023/2/248在最大方式下,第2431引腳的功能如下:

(1)QS1、QS0:引腳24、25,指令隊(duì)列狀態(tài)信號,輸出。QS1、QS0兩個(gè)信號電平的不同組合指明了8086/8088內(nèi)部指令隊(duì)列的狀態(tài)。QS1QS0含義00無操作01從指令隊(duì)列的第一字節(jié)中取走代碼10隊(duì)列為空11除第一字節(jié)外,還取走了后續(xù)字節(jié)中的代碼2023/2/249

(2)

:引腳26、27、28,總線周期狀態(tài)信號,輸出,低電平有效。這三個(gè)狀態(tài)信號連接到總線控制器8288的輸入端,8288對這些信號進(jìn)行譯碼后產(chǎn)生內(nèi)存及I/O端口的讀寫控制信號。0000111100110011010101018288產(chǎn)生的控制信號對應(yīng)操作發(fā)中斷響應(yīng)信號

讀I/O端口

寫I/O端口暫停取指令讀內(nèi)存寫內(nèi)存無源狀態(tài)

無2023/2/250(3)

:引腳29,總線封鎖信號,輸出。低電平有效。當(dāng)它為低電平時(shí),其它總線主控部件不能占用總線。在DMA期間,

被浮空而處于高阻狀態(tài)。

信號由前綴指令“LOCK”產(chǎn)生,LOCK指令后面的一條指令執(zhí)行完后,便撤消

信號。(4)

:引腳30、31,總線請求信號(輸入)/總線請求允許信號(輸出),低電平有效雙向信號。該信號用以多處理器之間對總線使用權(quán)的控制。的優(yōu)先級高于。2023/2/251在最大模式下,8086/8088也提供了總線主模塊之間傳遞總線控制權(quán)的手段。CPU以外的其他總線主模塊包括協(xié)處理器、DMA控制器,它們可以連接在局部總線上,去共享CPU和系統(tǒng)總線之間的接口,即共享地址鎖存器、數(shù)據(jù)總線收發(fā)器、總線控制器,當(dāng)然也共享系統(tǒng)總線。與最小模式下不同的是,在最大模式下,總線控制信號不再是HOLD和HLDA,而是將這兩個(gè)信號引腳變成能更加完善的兩個(gè)雙向信號引腳RQ/GT0和RQ/GT1,它們都稱為總線請求/總線允許信號端,可以分別連接兩個(gè)其他的總線主模塊。

RQ/GT0和RQ/GT1有著完全相同的功能,但是RQ/GT0比RQ/GT1的優(yōu)先級要高。也就是說,如果RQ/GT0和RQ/GT1都連接了其他總線主模塊,當(dāng)兩條引腳上同時(shí)出現(xiàn)總線請求時(shí),CPU會在RQ/GT0先發(fā)出允許信號,等到CPU再次得到總線控制權(quán)時(shí),才響應(yīng)RQ/GT1引腳上的請求。不過,如果CPU已經(jīng)把總線控制權(quán)讓給連接RQ/GT1的主模塊,此時(shí)又在RQ/GT0引腳上收到另一個(gè)主模塊的總線請求,那么,要等前一個(gè)主模塊釋放總線后,CPU收回了總線控制權(quán),才會去響應(yīng)RQ/GT0引腳上的總線請求??梢奀PU對總線請求的處理并不是像對中斷請求的處理那樣允許“嵌套”。

2023/2/252

①當(dāng)CPU以外的一個(gè)總線主模塊要求使用系統(tǒng)總線時(shí),從RQ/GT(即RQ/GT0或者RQ/GT1,以下類同)線上往CPU發(fā)一個(gè)負(fù)脈沖,寬度為一個(gè)時(shí)鐘周期。

②CPU在每個(gè)時(shí)鐘周期的上升沿處對RQ/GT引腳進(jìn)行檢測,如果測得外部有一個(gè)負(fù)脈沖,則在T4狀態(tài)或下個(gè)T1狀態(tài)從同一引腳RQ/GT上往請求總線使用權(quán)的主模塊發(fā)一個(gè)允許脈沖,這個(gè)允許脈沖的寬度也相當(dāng)于一個(gè)時(shí)鐘周期。不過要注意,總線請求負(fù)脈沖是外部發(fā)給CPU的,而總線允許脈沖是由CPU發(fā)給其他外部主模塊的。CPU一旦發(fā)出了響應(yīng)脈沖,各地址/數(shù)據(jù)引腳、地址/狀態(tài)引腳以及RD、LOCK、S2、S1、S0、BHE/S7便處于高阻狀態(tài),于是在邏輯上暫時(shí)和總線斷開。

③協(xié)處理器或其他總線主模塊收到CPU發(fā)出的脈沖后,便得到了總線控制權(quán),于是它可以對總線占用一個(gè)或幾個(gè)總線周期。

④當(dāng)外部主模塊準(zhǔn)備釋放總線時(shí),便在RQ/GT線上往CPU發(fā)一個(gè)釋放脈沖,釋放脈沖的寬度也為一個(gè)時(shí)鐘周期。CPU檢測到釋放脈沖后,在下一個(gè)時(shí)鐘周期便收回了總線控制權(quán)。2023/2/2531.總線控制器8288

2023/2/254

2.總線仲裁控制器8289

2023/2/2558289有兩種優(yōu)先級控制,構(gòu)成系統(tǒng)的處理器都要通過主控器總線來共享總線上的資源。在某一時(shí)刻,只允許一個(gè)處理器使用主控系統(tǒng)總線。為此,利用8289可以實(shí)現(xiàn)優(yōu)先級控制。主要有兩種。BREQ——總線請求BPRN——總線優(yōu)先權(quán)輸入CBRQ——公共總線請求BUSY——總線忙2023/2/256BPRO——總線優(yōu)先權(quán)輸出BPRN——總線優(yōu)先權(quán)輸入CBRQ——公共總線請求BUSY——總線忙2023/2/257總線操作1.最小工作模式下的總線操作2023/2/2582023/2/2592.最大工作模式下的總線操作2023/2/2602023/2/261中斷操作中斷的基本概念

1.中斷的定義在CPU執(zhí)行程序的過程中,出現(xiàn)了某種緊急或異常的事件(中斷請求),CPU需暫停正在執(zhí)行的程序,轉(zhuǎn)去處理該事件(執(zhí)行中斷服務(wù)程序),并在處理完畢后返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行被暫停的程序。返回主程序時(shí)執(zhí)行的第一條指令的地址。2023/2/262圖:中斷過程示意圖2023/2/263注意:在進(jìn)行現(xiàn)場保護(hù)和現(xiàn)場恢復(fù)之前要先關(guān)閉中斷系統(tǒng),以屏蔽其他中斷請求。待現(xiàn)場保護(hù)和現(xiàn)場恢復(fù)完成后,為了使系統(tǒng)具有中斷嵌套功能,再次開放中斷。中斷處理流程圖對于一個(gè)中斷源的中斷處理過程應(yīng)包括中斷請求、中斷響應(yīng)、保護(hù)斷點(diǎn)、中斷處理和中斷返回。2023/2/264中斷的主要用途:

實(shí)現(xiàn)輸入/輸出操作 電源掉電或其他情況的報(bào)警 控制臺或人工干預(yù) 多處理機(jī)系統(tǒng)中各處理機(jī)之間的協(xié)調(diào) 控制操作系統(tǒng)2023/2/2652.中斷源任何能夠引發(fā)中斷的事件都稱為中斷源,可分為硬件中斷源和軟件中斷源兩類。硬件中斷源主要包括外設(shè)、數(shù)據(jù)通道、時(shí)鐘電路和故障源等;軟件中斷源主要包括為調(diào)試程序設(shè)置的中斷(如斷點(diǎn)、單步執(zhí)行等)、中斷指令(INT21H)以及指令執(zhí)行過程出錯(cuò)(如除法運(yùn)算時(shí)除數(shù)為零)等。2023/2/266中斷請求是中斷源向CPU發(fā)出的請求中斷的要求。軟件中斷源是在CPU內(nèi)部由中斷指令或程序出錯(cuò)直接引發(fā)中斷;而硬件中斷源必須通過專門的電路將中斷請求信號傳送給CPU,CPU也有專門的引腳接收中斷請求信號。可屏蔽中斷不可屏蔽中斷INTRNMI2023/2/267軟件中斷軟件中斷是用一條指令使CPU進(jìn)入中斷處理子程序。在進(jìn)入中斷時(shí),不需要執(zhí)行中斷響應(yīng)總線周期,也不從數(shù)據(jù)總線讀取中斷類型碼,不受中斷允許標(biāo)志IF的影響,也就是不管IF為0還是1,任何一個(gè)軟件中斷都可執(zhí)行。但是軟件中斷信號仍會受標(biāo)志寄存器中另外一個(gè)標(biāo)志TF的影響,只有TF為1時(shí),才能執(zhí)行單步中斷。正在執(zhí)行軟件中斷時(shí),如果有非屏蔽中斷請求,則會在執(zhí)行完當(dāng)前指令后立即給與響應(yīng);如果有可屏蔽中斷請求,且在這之前在中斷處理子程序中執(zhí)行了開放中斷指令,而是中斷標(biāo)志IF為1,則也會在當(dāng)前指令執(zhí)行完后響應(yīng)可屏蔽中斷請求。2023/2/268非屏蔽中斷一般用來處理系統(tǒng)的重大故障,比如系統(tǒng)掉電處理常常通過非屏蔽中斷處理程序來執(zhí)行。非屏蔽中斷服務(wù)程序一般采取以下措施:(1)把現(xiàn)場的的數(shù)據(jù)立即轉(zhuǎn)移到非易失性的存儲器中,等電源恢復(fù)后繼續(xù)執(zhí)行中斷前的程序。(2)啟動(dòng)備用電源,在盡量短的時(shí)間內(nèi)用備用電源來維持微機(jī)系統(tǒng)的工作。非屏蔽中斷從NMI引腳上引入,它不受中斷允許標(biāo)志IF的影響,它的中斷類型號是2。2023/2/2692023/2/270中斷向量表中斷向量:中斷服務(wù)程序的入口地址。對于8086/8088系統(tǒng),所有中斷服務(wù)程序的入口地址都存放在中斷向量表中,每種中斷對應(yīng)一個(gè)中斷類型號,與一個(gè)中斷服務(wù)程序的入口地址相對應(yīng)。每個(gè)中斷服務(wù)程序的入口地

溫馨提示

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

評論

0/150

提交評論