




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章微型計算機系統結構本章學習目標.了解匯編語言程序設計的源程序總體結構和指令的執行過程。.理解微型計算機8086/8088CPU的內部結構和外部引腳的含義。.充分理解微型計算機8086/8088CPU的工作模式和適用的范圍。.理解8086/8088CPU系統總線時序、總線周期的組成和完成的目標任務。.掌握8086/8088CPU內部段寄存器和通用寄存器的隱含及替代使用方法。.熟練掌握8086/8088CPU標志寄存器中的各標志位所表示的具體意義和產生的條件。2.18086/8088微處理器2.1.1CPU結構為了說明8086CPU的結構,需要先了解CPU的功能,然后考慮需要什么樣的結構才能夠實現這種功能。這樣的一種學習思路可以使讀者更容易理解CPU的各個組成結構。
CPU的功能概括起來就是“執行指令”。一個程序有很多條指令,放在內存中的。那么把它取出來送給CPU就是“取指”過程。指令本身的執行在CPU內部,“執行過程”跟接口沒有關系。執行完畢,要將結果輸出到內存或者端口,這就是“輸出結果”過程。將上述指令執行的過程概括一下,可以分為3個步驟:①“取指”過程;②“執行”過程;③“輸出結果”過程。執行過程在CPU內部完成,部件稱為執行部件EU;“取指”和“輸出結果”過程則是由總線接口部件BIU來完成的。
8086CPU內部結構如圖2-1所示。從功能上可將8086分為兩個部分,即總線接口單元BIU(BusInterfaceUnit)和執行單元EU(ExecutionUnit).1.總線接口單元BIU
總線接口單元的功能是負責完成與存儲器或I/O設備之間的數據傳送。其具體任務是:BIU要從內存取指令送到指令隊列緩沖器;CPU執行指令時,總線接口單元要配合執行單元從指定的內存單元或外設端口中取數據,將數據傳送給執行單元,或者把執行單元的操作結果傳送到指定的內存單元或外設端口中。
BIU內有4個16位段地址寄存器CS(代碼段寄存器)、DS(數據段寄存器)、SS(堆棧段寄存器)和ES(附加段寄存器),16位指令指針IP(InstructionPointer),6字節指令隊列緩沖器,20位地址加法器和總線控制電路。下面對總線接口單元作3點說明。
(1)指令隊列緩沖器
8086的指令隊列為6個字節,而8088的指令隊列為4個字節。不管是8086還是8088,都會在執行指令的同時,從內存中取下面一條或幾條指令,取來的指令就依次放在指令隊列中。它們采用“先進先出”的原則,按順序存放,并順序到EU中去執行,且遵循下列原則。
1)取指時,每當指令隊列緩沖器中存滿一條指令時,EU就立即開始執行。
2)指令隊列緩沖器中只要空出兩個字節,BIU便自動執行取指操作,直到填滿為止。
3)在EU執行指令的過程中,指令需要對存儲器或I/O設備存取數據時,BIU將在執行完現行取指的存儲器周期后的下一個存儲器周期時,對指定的內存單元或I/O設備進行存取操作,交換的數據經BIU由EU進行處理。
4)當EU執行完轉移、調用和返回指令時,則要清除指令隊列緩沖器,并要求BIU從新的地址重新開始取指令,新取的第一條指令將直接經指令隊列送到EU去執行,隨后取來的指令將填入指令隊列緩沖器。由于BIU和EU是分開并獨立工作的,因此,在一般情況下,CPU執行完一條指令后就可以執行下一條指令,而不需要像以往8位CPU那樣重復地進行先取指令、后執行指令的串行操作。16位CPU這種并行重疊操作的特點,提高了總線的信息傳輸效率和整個系統的執行速度。如圖2-2所示為8086/8088CPU程序的執行過程。(2)地址加法器和段寄存器
8086有20條地址線,但CPU內部寄存器只有16位,那么如何用16位寄存器實現20位地址的尋址呢?分別用16位的段寄存器與16位的偏移量巧妙地解決了這一矛盾。即各個段寄存器分別用來存放各段的起始地址。由IP提供或由EU按尋址方式計算出尋址單元的16位偏移地址(又稱為邏輯地址)后,將與左移4位后的段寄存器的內容同時送到地址加法器進行相加,形成一個20位的實際地址(又稱為物理地址),以對存儲單元尋址。實際地址的產生過程如圖2-3所示。例如,要形成某指令碼的實際地址,就需將IP的值與代碼段寄存器CS(CodeSegment)左移4位后的內容相加。假設CS=ECOOH,IP=0800H,此時指令的物理地址為EC800H。(3)16位指令指針IPIP的功能與8位CPU類似。正常運行時,IP中含有BIU要取的下一條指令(字節)的偏移地址。IP在程序運行中能自動加1修正,使之指向要執行的下一條指令。有些指令能使IP值改變或使IP值壓入堆棧,或由堆棧彈出恢復原值。2.執行單元EU
執行單元不與系統直接相連,它的功能只是負責執行指令;執行的指令從BIU的指令隊列緩沖器中取得,而且執行指令的結果或執行指令所需要的數據都由EU向BIU發出請求,再由BIU對存儲器或外設存取。EU由下列部分組成。
1)16位算術邏輯單元(ALU):它可以用于進行算術、邏輯運算,也可以按指令尋址方式計算出尋址單元的16位偏移量。
2)16位標志寄存器F:它用來反映CPU運算的狀態特征或存放控制標志。
3)數據暫存寄存器:它協助ALU完成運算,暫存參加運算的數據。
4)通用寄存器組:它包括4個16位數據寄存器AX,BX,CX,DX和4個16位指針與變址寄存器SP,BP,SI,DI.5)EU控制電路:它是控制、定時各種狀態邏輯電路,接收從BIU中指令隊列取來的指令,經過指令譯碼形成各種定時控制信號,對EU的各個部件實現特定的定時操作。
EU中所有的寄存器和數據通道(除隊列總線為8位外)都是16位的寬度,可實現數據的快速傳遞。2.1.2寄存器結構寄存器是CPU在運算時一些中間數據的暫存地址,按照其用途的不同可以分為通用寄存器、指令指針寄存器、標志寄存器和段寄存器4類。8086/8088的內部寄存器編程結構如圖2-4所示。它共有14個16位寄存器,其中標志寄存器只用了9位。下面根據寄存器用途的不同對各種寄存器進行詳細介紹。
1.通用寄存器
8086/8088的通用寄存器分為兩組。(1)數據寄存器
EU中有4個16位數據寄存器AX,BX,ON和DX。每個數據寄存器分為高字節H和低字節L,它們均可作為8位數據寄存器獨立尋址、獨立使用。多數情況下,這些數據寄存器用在算術運算或邏輯運算指令中,用來進行算術邏輯運算。而在有些指令中,它們則有特定的用途:如AX作累加器;BX作基址寄存器,在查表指令XLAT中存放表的起始地址;CX作計數寄存器,在數據串操作指令的REP中存放數據串元素的個數;DX作數據寄存器,在字的除法運算指令DIV中存放余數。這些寄存器在指令中隱含使用。有關數據寄存器的隱含使用操作如表2-1所示。
(2)指針寄存器和變址寄存器指針寄存器SP和BP稱為P組,變址寄存器SI和DI稱為I組,它們都是16位寄存器,一般用來存放地址的偏移量(即相對于段起始地址的距離)。偏移量在BIU的地址加法器中和左移4位的段寄存器內容相加產生20位的物理地址。指針寄存器SP和BP用來指示存取位于當前堆棧段中的數據所在的地址,但SP和BP在使用上有區別。入棧(PUSH)和出棧((POP)指令是由SP給出棧頂的偏移地址,故稱為堆棧指針,BP則是存放位于堆棧段中一個數據區的基地址,故稱為基址指針寄存器(數據區首地址的偏移量)。變址寄存器SI和DI是存放當前數據段的偏移地址的。源操作數地址的偏移放于SI中,所以SI稱為源變址寄存器;目的操作數地址的偏移地址放于DI中,故DI稱為目的變址寄存器。例如在數據串操作指令中,被處理數據串地址的偏移地址由SI給出,處理后的結果數據串地址的偏移地址則由DI給出。
2.指令指針寄存器指令指針寄存器IP用來存放下一條待執行指令在代碼段中的偏移地址。與CS(代碼段寄存器)相結合形成指向指令存放單元的物理地址。3.標志寄存器
16位標志寄存器F只用了其中的9位作標志位,即6個狀態標志位,3個控制標志位。如圖所示。狀態標志位用來反映算術或邏輯運算后結果的狀態,以記錄CPU的狀態特征,分別為:CF,PF,AF,ZF,SF,OF.1)CF(CarryFlag)進位標志:當執行一個加法或減法運算使最高位(即D15位或D7位)產生進位或借位時,則CF為1,否則為0。在進行多字節數的加減運算時,要使用到該標志位;在比較無符號數大小時,也用到該標志位。此外,循環指令也會影響它。
2)PF(PrityFlag)奇偶標志:當指令執行結果的低8位中含有偶數個1時,則PF為1,否則為0。利用PF可進行奇偶校驗檢查,或產生奇偶效驗位,在串行通信中也用到PF位。
3)AF(AuxiliaryCarryFlag)輔助進位標志:當執行一個加法或減法運算使結果中低字節的低4位向高4位有進位或借位時,則AF為1,否則為0.4)ZF(ZeroFlag)零標志位:若當前的運算結果為0,則ZF為1,否則為0.5)SF(SignFlag)符號標志:它和運算結果的最高位(根據D15位或D7位判斷)相同。當數據用補碼表示時,負數的最高位為1,正數的最高位為0.
6)OF(OverflowFlag)溢出標志:此標志用于反映有符號數加減運算是否引起溢出。如運算結果超過了8位或16位有符號數的表示范圍,即在字節運算時大于+127或小于-128,在字運算時大于+32767或小于-32768,稱為溢出。當補碼運算有溢出時,OF為1;否則為0。對OF的取值可以采用簡易的辦法來求解:字節運算,C6和C7位的異或;字運算,則用C14和C15位的異或
C,表示進行加減運算時第i位向第i+1位的進位或借位。標志寄存器中的3個控制標志位分別為DF,IF和TF。
1)DF(DirectionFlag)方向標志:它用來控制數據串操作指令的步進方向。若用STD指令將DF置1,則串操作過程中地址會自動遞減;若用CLD指令將DF清零,則串操作過程中地址會自動遞增。
2)IF(InterruptEnableFlag)中斷允許標志:它是控制可屏蔽中斷的標志。若用STI指令將IF置1,則表示允許CPU接受外部從INTR引線上發來的可屏蔽中斷請求信號;若用CLI指令將IF清零,則禁止CPU接受可屏蔽中斷請求信號。IF的狀態不影響非屏蔽中斷(NM)請求,也不影響CPU響應內部的中斷請求。
3)TF(TrapFlag)跟蹤(陷阱)標志:它是為調試程序方便而設置的。若將TF置1,則8086/8088CPU處于單步工作狀態方式;否則,將正常執行程序。8086/8088沒有專門設置和清除TF標志的指令,要通過其他方法設置和清除。中斷時標志寄存器自動地壓入了堆棧,故可以在中斷服務程序中,用BP間址找到標志寄存器存放的內存單元,并進行改變,當IRET指令使堆棧中存放的原標志寄存器內容自動地彈回到CPU中去時,其中的TF已是新的狀態“1”了。
4.段寄存器
8086/8088CPU具有尋址存儲空間1MB的能力,但是8086/8088指令中給出的地址碼僅有16位,指針寄存器和變址寄存器也只有16位,即用16位長度二216=64K不能使CPU直接尋址220=1MB空間。為此,8086/8088用一組段寄存器將這1MB存儲空間分成若干個邏輯段,每個邏輯的長度為64K。這些邏輯段可被任意設置在整個存儲空間上下浮動。
8086/8088CPU的BIU中有4個16位段寄存器(CS,SS,DS,ES),分別稱為代碼段寄存器CS、堆棧段寄存器SS、數據段寄存器DS和附加段寄存器ES,用來存放各段的起始地址,它們被稱為“段基址”寄存器。代碼段寄存器CS用來存放程序當前使用的代碼段的段基址,CPU執行的指令將從代碼段取得;堆棧段寄存器SS用來存放程序當前使用的堆棧段的段基址,堆棧操作的數據就在這個段中;數據段寄存器DS用來存放程序當前使用的數據段的段基址。一般來說,程序使用的數據放在數據段中;附加段寄存器ES用來存放程序當前使用的附加段的段基址,它通常也用來存放數據,典型用法是存放處理后的數據。段的概念(強調)
8086/8088CPU的指令指針IP和堆棧指示器SP都是16位,故只能直接尋址64K.為了能尋址1MB存儲空間,引入了分段的新概念。在8086/8088系統中,1MB存儲空間被分為若干邏輯段,其實際存儲器中段的位置如圖2-6所示。每段最多可包含64K長度的連續存儲單元。每個段的起始地址又叫基址,它是一個能被16整除的數,即最后4位為0,基址是用軟件設置的。段和段之間可以是連續的、分開的、部分重疊或完全重疊的。一個程序所用的具體存儲空間可以為一個邏輯段,也可以為多個邏輯段。如果段不重疊且連續只能有16個段,216×24=1M段的基址存放在段寄存器CS,DS,SS和ES中。程序可以從4個段寄存器給出的邏輯段中存取代碼和數據。若要對另外的段而不是當前可尋址的段進行存取信息,程序必須首先改變對應的段寄存器,將其設置成所要存取的段的基址。有關段寄存器的使用約定如表2-2所示。
8086與8088的區別:內部結構和性能基本上是相同的。主要區別在于:8086是真正的標準16位CPU,它有16條數據線和20條地址線;
8088是在8位微處理器8080和8085基礎上發展起來的一種準16位微處理器,它的內部寄存器、運算單元和內部操作都是16位的,可處理16位數據,也能處理8位數據,但它的數據總線只有8條,它同樣也有20條地址線。
8086CPU的內部指令隊列緩沖器為6字節長,而8088CPU的內部指令隊列緩沖器為4字節長。2.1.38086/8088的引腳介紹
CPU引腳需要連接總線??偩€又包括地址總線、數據總線、控制總線。一個引腳只能連接總線的一根線,引腳實質上和總線的位數相對應。為了減小引腳數量,8086的引腳設計采用過分時復用的方法,使得引腳的數量減少了一半。地址總線有20位,其中16位是地址/數據總線分時復用,另4位是地址/狀態總線分時復用。其次就是CPU和一些控制信號線進行數據交換:一方面CPU的控制指令通過這些引腳發送出去;另一方面外部的一些狀態要通過這些引腳反饋回來。1.8086/8088系統總線時序由于CPU的引腳具有分時復用功能,在了解CPU各引腳功能之前首先要了解系統總線的時序結構。微處理器是在統一的時鐘信號CLK控制下,按節拍進行工作的。8086/8088的時鐘頻率為5MHz,故時鐘周期為200ns,CPU每執行一條指令,至少要通過總線對存儲器訪問一次(取指令)。
8086/8088CPU通過總線對外部(存儲器或I/O接口)進行一次訪問所需的時間稱為一個總線周期。一個總線周期至少包含4個時鐘周期即T1,T2,T3,T4,處在這些基本時鐘周期中的總線狀態稱為T狀態。
8086/8088CPU采用分時復用的地加數據總線。在一個總線周期內,首先利用總線傳送地址,然后再利用同一總線傳送數據。具體來說,在T1狀態,BIU把要訪問的存儲單元或I/O端口的地址輸出到總線上。若為讀周期,在T2中使總線處于浮動的(高阻)緩沖狀態,以使CPU有足夠的時間從輸出地址方式轉變為輸入(讀)數據方式,然后在T3狀態的開始,CPU從總線上讀入數據。T4結束本總線周期.若為寫周期,由于輸出地址和輸出數據都是寫總線過程,CPU不必轉變讀寫工作方式,因而不需要緩沖區,CPU在T2~T4中把數據輸出到總線上,考慮到CPU和慢速的存儲器或I/O接口之間傳送的實際情況,CPU會在總線周期的T3和T4之間插入若干個附加時鐘周期。這附加周期稱為等待周期TW.
需要特別指出,僅當BIU需要填補指令隊列的空缺,或者當EU在執行指令過程中需要申請一個總線周期時,BIU才一會進入執行總線周期的工作狀態。在兩個總線周期之間,可能出現一些沒有BIU活動的時鐘周期T1,處于這種時鐘周期中的總線狀態被稱為空閑狀態,或者簡稱T1狀態。如圖2-7所示為典型的總線周期序列。只有第28腳不同2.8086/8088CPU的引腳信號
8086和8088的引腳信號如圖2-8所示。它們的40條引線按功能可分為以下5類
(1)地址/數據總線AD15-AD0
這是分時復用的存儲器或端口地址和數據總線。三態,雙向輸入/輸出。808616位數據,8088只能傳輸8位數據,所以只有AD7~AD08條地址數據線,A15~A8只用來輸出地址。作為復用引腳,在總線周期的T1狀態用來輸出要尋址的存儲器或I/O端口地址;在T2狀態浮置成高阻狀態,為傳輸數據做準備;在T3狀態,用于傳輸數據;T4狀態結束總線周期。當CPU響應中斷以及系統總線“保持響應”時,復用線都被置為高阻狀態。(2)地址狀態總線A19/S6-A16/S3
地址/狀態總線為輸出、三態總線,采用分時輸出,即T1狀態輸出地址的最高4位,T2-T4狀態輸出狀態信息。當訪問存儲器時,T1狀態時輸出高4位的地址A19-A16送到鎖存器(8282)鎖存,與AD15-AD0組成20位的地址信號;訪問I/O端口時,A19-A16=0。狀態信息S6為0用來指示8086/8088當前與總線相連,所以,在T2-T4狀態,S6總等于0,表示當前連總線上。S5表示中斷允許標志位IF的當前設置。S4和S3用來指示當前正在使用哪個段寄存器,如表2-3。當系統總線處于“保持響應”狀態時,這些引線置為高阻狀態。
(3)控制總線
1)/BHE/S7:/BHE高8位數據總線允許/狀態復用引腳三態、輸出。/BHE在總線周期的T1狀態時輸出,S7在T2~T4時輸出。在8086中,當/BHE/S7引腳上輸出/BHE信號時,表示總線高8位AD15-AD8上的數據有效。在8088中,第34引腳不是/BHE/S7,而是被賦予另外的信號:在最小工作模式時,它為/SS0,和DT//R、/M/IO一起決定了8088當前總線周期的讀/寫動作;在最大工作模式時,它恒為高電平。
S7在當前的8086芯片設計中未被定義,作備用狀態信號線。
2)/RD:讀控制信號,三態,輸出。當/RD=0時,表示將要執行一個對存儲器或I/O端口的讀操作。到底是對內存單元還是對I/O端口讀取數據,取決于/M/IO信號。在一個讀操作的總線周期中,/RD信號在T2,T3和Tw狀態均為低電平。在系統總線進入“保持響應”期間,/RD被浮空。
3)READY:“準備好”信號線,輸入。它實際上是由所尋址的存儲器或I/O端口發來的響應信號,高電平有效。當READY=1時,表示所尋址的內存或I/O設備己準備就緒,馬上就可以進行一次數據傳輸。CPU在每個總線周期的T3狀態開始對READY信號采樣。如果檢測到READY為低電平,表示存儲器或I/O設備尚未準備就緒,則CPU在T3狀態之后自動插入一個或幾個等待狀態Tw直到READY變為高電平,才進入T4狀態,完成數據傳送,結束當前總線周期。
4)/TEST:等待退出測試信號,輸入。它用于多處理器系統中且只有在執行WAIT指令時才使用。當CPU執行WAIT指令時,每隔5個時鐘周期對該線輸入進行一次測試;若/TEST=1時,CPU將停止取下條指令而進入等待狀態,重復執行WAIT指令,直至/TEST=0.等待狀態結束,CPU才繼續往下執行被暫停的指令。等待期間允許外部中斷。
/TEST與WAIT配合使用。WAIT處理器控制指令,相當于暫停
5)INTR:可屏蔽中斷請求信號,輸入,高電平有效。當1NTR=1時,表示外設提出了中斷請求,8086/8088在每個指令周期的最后一個T狀態采樣此信號。若IF=1,則CPU響應中斷,停止執行指令序列,并轉去執行中斷服務程序。
6)NMI:非屏蔽中斷請求信號,輸入,上升沿觸發。此請求不受IF狀態的影響,也不能用軟件屏蔽,只要此信號一出現,就在現行指令結束后引起中斷。
7)RESET:復位信號,輸入,高電平有效。通常與8284A復位輸出端相連,8086/8088要求復位脈沖寬度不得小于4個時鐘周期,接通電源時不能小于50uS;復位后,內部寄存器狀態如表2-4所示。程序執行時,RESET線保持低電平。interrupt
request
中斷請求不可屏蔽中斷(NonMaskableInterrupt)
8)CLK:系統時鐘,輸入。通常與8284A時鐘發生器的時鐘輸出端CLK相連,該時鐘信號的低/高之比常采用2:1(占空度1/3)。
(4)電源線VCC和地線GNDVCC:電源,輸入,第40腳。8086/8088CPU采用單一的+5V電壓。
GND:接地引腳,第1,20腳。向CPU提供參考地電平,有兩個接地引腳。
(5)其他控制線(24~31引腳)由于8086/8088CPU可以工作在不同的工作模式(最大/最?。?,其他引腳功能都相同,只有24~31引腳在不同的工作模式下功能各不相同。2.2工作模式
8086/8088CPU芯片可以在兩種模式下工作,即最小模式和最大模式。所謂最小模式就是系統中只有一個8086/8088微處理器。在這種情況下,所有總線控制信號都是直接由8086/8088CPU產生的,系統中的總線控制邏輯電路被減到最少,該模式適用于規模較小的微機應用系統。最大模式是相對于最小模式而言的,最大模式用于中、大規模的微機應用系統中。在最大模式下,系統中至少包含兩個微處理器,其中一個為主處理器,即8086/8088CPU,其他的微處理器稱為協處理器(如8087),協助主處理器工作。
MN//MX是最?。畲竽J皆O置信號,輸入,第33腳。該輸入引腳電平的高、低決定了CPU工作在最小模式還是最大模式。當MN//MX=1時,8086/8088工作在最小工作模式(MN)。在此方式下,全部控制信號由CPU本身提供。(主要介紹)當MN//MX=0時,8086/8088工作在最大工作模式下。這時系統的控制信號由8288總線控制器提供,而不是由8086/8088直接提供。(了解)不同的工作模式只有這8個引腳不同括號內是最大模式2.2.1最小工作模式和系統總線周期時序當MN//MX=1時,接電源電壓,系統工作于最小工作模式。最小工作模式系統的系統總線結構如圖2-9。
在最小工作模式下,第24~31腳的信號含義如下所述。
1./INTA(InterruptAcknowledge)中斷響應信號輸出它用于對外設的中斷請求作出響應。當外部中斷源通過INTR引腳向CPU發出中斷請求信號后,如果中斷允許標志位IF=1(即CPU處于開中斷)時,CPU在當前指令執行完后,響應中斷。中斷響應周期時序如圖2-10所示。是兩個連續的負脈沖。第1個負脈沖通知外設接口,中斷請求己獲允許;外設接口收到第2個負脈沖后,把中斷類型號放到AD0-AD7總線上,而在這兩個總線周期的其余時間里,AD0-AD7處于浮空。CPU讀入中斷類型碼后,可以在中斷矢量表中找到該外設的服務程序入口地址,從而轉入中斷服務。
2.ALE(AddressLatchEnable)地址鎖存信號輸出它是8086/8088提供給地址鎖存器8282/8283(74LS373,74LS374)的控制信號,高電平有效。在任何一個總線周期的T1狀態,ALE輸出有效電平,以表示當前在地址/數據復用總線上輸出的是地址信息,地址鎖存器將ALE作為鎖存信號,對地址進行鎖存。
3./DEN(DataEnable)數據允許信號輸出當用8286/8287(74LS244,74LS245)作為數據總線收發器時,/DEN為收發器提供一個控制信號,表示CPU當前準備發送或接收一個數據??偩€收發器將/DEN作為輸出允許信號,即在每個存儲器的訪問周期以及中斷響應周期均為低電平;在DMA(直接內存訪問)方式時,被浮置為高阻狀態。
4.DT//R(DataTransmit/Receive)數據收發輸出在使用8286/8287作為數據總線收發器時,DT//R信號用來控制8286/8287的數據傳送方向。當DT//R為高電平時,則進行數據發送;當DT//R為低電平時,則進行數據接收。在DMA方式時,它被浮置為高阻狀態。
【資料】DMA方式,Direct
Memory
Access,也稱為成組數據傳送方式。
工作原理:
一個設備接口試圖通過總線直接向另一個設備發送數據(一般是大批量的數據),它會先向CPU發送DMA請求信號。外設通過DMA的一種專門接口電路――DMA控制器(DMAC),向CPU提出接管總線控制權的總線請求,CPU收到該信號后,在當前的總線周期結束后,會按DMA信號的優先級和提出DMA請求的先后順序響應DMA信號。CPU對某個設備接口響應DMA請求時,會讓出總線控制權。于是在DMA控制器的管理下,外設和存儲器直接進行數據交換,而不需CPU干預。數據傳送完畢后,設備接口會向CPU發送DMA結束信號,交還總線控制權。
實現DMA傳送的基本操作如下:
(1)外設可通過DMA控制器向CPU發出DMA請求:
(2)CPU響應DMA請求,系統轉變為DMA工作方式,并把總線控制權交給DMA控制器;
(3)由DMA控制器發送存儲器地址,并決定傳送數據塊的長度;
(4)執行DMA傳送;
(5)DMA操作結束,并把總線控制權交還CPU。
注意:
DMA請求信號可能會打斷一條指令的執行,使它暫時停止執行,數據傳送完畢后才恢復該指令的執行。
用途:
DMA方式主要適用于一些高速的I/O設備。這些設備傳輸字節或字的速度非常快。對于這類高速I/O設備,如果用輸入輸出指令或采用中斷的方法來傳輸字節信息,會大量占用CPU的時間,同時也容易造成數據的丟失。而DMA方式能使I/O設備直接和存儲器進行成批數據的快速傳送。
DMA控制器或接口一般包括四個寄存器:
狀態控制寄存器、數據寄存器、地址寄存器和字節計數器。
這些寄存器在信息傳送之前需要進行初始化設置。即在輸入輸出程序中用匯編語言指令對各個寄存器寫入初始化控制字。
5.M//IO(Memory/InputandOutput)存儲器/輸入、輸出控制信號輸出如為高電平,則表示CPU和存儲器之間進行數據傳輸;如為低電平,則表示CPU和輸入/輸出設備之間進行數據傳輸。一般在前一總線周期的T4狀態,M//IO就成為有效電平,然后開始一個新的總線周期,且一直保持有效電平,直到本周期的T4狀態為止。在DMA方式時,M//IO被浮置為高阻狀態。
6./WR(Write)寫信號輸出
/WR有效時,表示CPU當前正在進行存儲器或I/O寫操作,到底為哪種寫操作,則由M//IO信號決定。對任何寫周期,/WR在T2、T3、TW期間有效。在DMA方式時,被浮置為高阻狀態。
7.HOLD(HoldRequest)總線保持請求信號輸入
8.HLDA(HoldAcknowledge)總線保持響應信號輸出當系統中CPU之外的另一個主模塊要求占用總線時,通過HOLD向CPU發一個高電平的請求信號。如果CPU允許讓出總線,就在當前總線周期完成時,于T4狀態從HLDA腳發出一個回答信號,同時,CPU使地址/數據總線和控制總線處于浮空狀態??偩€請求部件收到HLDA信號后,就獲得了總線控制權。在此后一段時間,HOLD和HLDA都保持高電平。在總線占有部件用完總線之后,會把HOLD信號變為低電平,表示現己放棄對總線的占有。8086/8088收到低電平的HOLD信號后,也將HLDA變為低電平,于是CPU又重新獲得對總線的占有權。圖2-11所示為8086最小工作模式時讀和寫總線周期時序圖??刂?286收發器/BHE---高8位數線有效若在系統中應用了收發器8286,則要利用控制信號DT//R和/DEN。由于是讀,故DT//R應為低電平,/DEN信號也在T2狀態有效,8286處于反向傳送。如果存儲器或IO接口可以立即完成數據準備而不需要等待狀態,則T3狀態期間將數據放到系統數據總線上。CPU在T3狀態結束時從AD15S-AD0上讀取數據后,在T4狀態前期使/RD變為無效,存儲器或I/O接口檢測到這個跳變后,便認為這次傳送結束,撤去數據。對于寫總線周期,則必須給出寫信號,因此,/WR信號在T2狀態變成有效低電平,并在撤銷地址后,立即把數據送上AD15-AD0。由于是寫操作,DT//R應為高電平,/DEN為低電平,8286處于正向傳送。如果存儲器或I/O接口可以完成數據寫入而不需要等待狀態,CPU在T3狀態前期使/WR變為無效并撤銷輸出的數據信號。不管是讀總線周期,還是寫總線周期,DEN在T4狀態都變為無效,從而關閉收發器8286。在讀總線周期或寫總線周期中,若所使用的存儲器或外設的工作速度較慢,不能滿足上述基本時序的要求,則可利用READY信號產生電路產生READY信號并經時鐘8284同步后加到CPU的READY線上,使CPU在T3和T4之間插入一個或幾個TW狀態,來解決CPU與存儲器或外設之間的時間配合。
8086在T3狀態的開始測試READY線,若發現READY信號為有效高電平,T3狀態之后即進入T4狀態;若發現READY信號為低電平,則在T3狀態結束后不進入T4狀態,而插入一個TW狀態。以后在每一個TW狀態的開始都測試READY線,只有發現它為有效高電平時,才在這個TW狀態結束進入T4狀態。在8088最小工作模式系統讀寫總線周期中,M//IO為IO//M,/BHE/S7是/SS0且與IO//M同時變化,AD15~AD8為A15~A8,僅用于輸出地址,只有AD7~AD0傳送數據。其他同8086。2.2.2最大工作模式
8086/8088也都可以按最大工作模式來配置系統。當MN//MX線接地時,系統就工作于最大工作模式了。最大工作模式和最小工作模式區別。最小模式系統中,
CPU的引腳直接提供所有必須的總線控制信號,這種方式適合于單處理器組成的小系統。在最小工作模式中,作為單處理器的8086/8088CPU通??刂浦到y總線,但也允許系統中的其他主控設備—DMA控制器占用系統總線。DMA控制器通過占用系統總線可實現外部設備和存儲器之間直接數據傳送。
DMA控制器雖然通過挪用總線周期實現外部設備與存儲器之間的直接數據傳送,提高了整個系統的能力,但DMA控制器卻不能執行命令,其能力是相當有限的。
假如系統中有兩個或多個同時執行指令的處理器,這樣的系統就稱為多處理器系統。增加的處理器可以是8086/8088處理器,也可以是數字數據處理器8087或I/O處理器8089。在設計多處理器系統時,除了解決對存儲器和I/O設備的控制、中斷管理、DMA傳送時總線控制權外,還必須解決多處理器對系統總線的爭用問題和處理器之間的通信問題。因為多個處理器通過公共系統總線共享存儲器和I/O設備,所以必須增加相應的邏輯電路,以確保每次只有一個處理器占用系統總線。為了使一個處理器能夠把任務分配給另一個處理器或者從另一個取回執行結果,就必須提供一種明確的方法來解決兩個處理器之間的通信。多處理器系統可以有效地提高整個系統的性能。
8086/8088的最大工作模式就是專門為實現多處理器系統而設計的。
IBMPC系列機系統中的微處理器工作于最大工作模式,系統中配置了一個作為協處理的數字數據處理器8087、以提高系統數據處理的能力。
為了滿足多處理器系統的需求,又不增加引腳個數,在最大模式下的8086/8088采用了對控制引腳譯碼的方法以產生更多控制信號。CPU有8個控制引腳且各自有獨立的意義,經過分組譯碼后產生具體控制信號。CPU的8個控制引腳24~31的功能定義如下。
1.QS1,QS0(輸出24、25腳)指令隊列狀態輸出線。它們用來提供8086/8088內部指令隊列的狀態。8086/8088內部在執行當前指令的同時,從存儲器預先取出后面的指令,并將其放在指令隊列中,QS1和QS0便提供指令隊列的狀態信息,以便提供外部邏輯跟蹤8086/8088內部指令序列。QS1和QS0表示的狀態情況如表2-5所示。外部邏輯通過監視總線狀態和隊列狀態,可以模擬CPU的指令執行過程并確定當前正在執行哪一條指令。有了這種功能,8086/8088才能告訴協處理器何時準備執行指令。在PC中,這兩條線與8087協處理器的QS1和QS0相連。2./S2,/S1,/S0(輸出,三態,26、27、28腳)狀態信號輸出線,這3位狀態的組合表示CPU當前總線周期的操作類型。8288總線控制器接收這3位狀態信息,產生訪問存儲器和I/O端口的控制信號及對8282.8286的控制信號。如表2-6所示為這3位狀態信號的編碼和由8288產生的對應信號。
3./LOCK(輸出,三態29)總線鎖定信號,低電平有效。CPU輸出此信號表示不允許總線上的主控設備占用總線。該信號由系統指令前綴LOCK使其有效,并維持到下一條指令執行完畢為止。此外,CPUINTR引腳上的中斷請求也會使LOCK引腳從第一個INTA脈沖開始直至第二個INTA脈沖結束保持低電平。這樣就保證在中斷響應周期之后,其他主控設備才能占用總線。4./RQ//GT1,/RQ//GT0(輸入/輸出30、31)
在最大模式下有兩對總線輸入輸出請求和應答線,請求和應答是共用一條線都是低電平有效,在最小模式下只有一對HOLD和HLDA
這兩條引腳都是雙向的,低電平有效,用于輸入總線請求信號和輸出總線授權信號,/RQ//GT0優先級高于/RQ//GT1。主要用于不同處理器之間連接控制用。在IBMPC系列機系統中,把CPU的/RQ//GT1引腳接至8087協處理器的/RQ//GT0端,這樣8087就可根據其指令的執行情況,用這條線向8088發出總線請求信號,以便能夠控制總線,當8088通過這條線向8087發出總線授權信號后,8087就獲得了對總線的控制權。當8087用完總線后,又通過此線向8088發出釋放總線控制權的控制信號,8088在下一個時鐘周期開始,便重新獲得對總線的控制權。在IMBPC系列機系統中,把CPU的/RQ//GT0引腳接至+5V,即使其處于無效狀態。最大工作模式和最小工作模式系統之間的主要區別是增加了一個控制信號轉換電路——Intel8288總線控制器。8288根據/S2,/S1和/S0狀態組合產生相應的存儲器或I/O讀寫命令和總線控制命令信號,用于控制數據傳送以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江高考試試題及答案
- 母乳喂養與配方奶的營養比較試題及答案
- 稅務師考試目標設定與管理試題及答案
- 網絡與通信基礎知識試題及答案
- 理解兒童玩具的教育意義試題及答案
- 2025年稅務師考試科目對比試題及答案
- 精準風格測試題及答案解析
- 系統架構設計師考試學習資源與實踐分享試題及答案
- 系統架構設計師考試行業發展的關鍵趨勢試題及答案
- 數據庫優化技術與實踐試題及答案
- 2025年中國汽車道路救援行業發展潛力分析及投資方向研究報告
- 學校食堂安全風險管控清單
- 品牌管理塑造、傳播與維護課件 第7章 品牌傳播管理
- 2025年河北省衡水市九年級中考模擬預測歷史試題(含答案)
- 2025保安證考試模擬試卷及答案
- 腹部腫瘤患者的護理
- (高清版)DB11∕T2326-2024油氣管道高后果區識別與管理規范
- 《證券投資學》形考題庫考試題及標準答案
- 高血壓科普健康宣教課件
- 上海市建設工程施工圖設計文件勘察設計質量疑難問題匯編(2024 版)
- 2025年寧波職業技術學院高職單招職業技能測試近5年??及鎱⒖碱}庫含答案解析
評論
0/150
提交評論