2014年計(jì)算機(jī)三級PC技術(shù)要點(diǎn):輸入輸出控制
在PC機(jī)中,實(shí)際上只有10條地址線(A0~A9)參加I/O端口地址譯碼,因此實(shí)際能訪問的I/O端口數(shù)為1024。相應(yīng)的地址空間為000H~3FFH,其中000H~1FFH分配給系統(tǒng)板上的I/O端口,200H~3FFH分配給I/O插卡。所以當(dāng)?shù)刂肪€A9為高電平時(shí),表示PC機(jī)的系統(tǒng)總線與I/O插卡交換數(shù)據(jù);A9為低電平時(shí),系統(tǒng)總線為主板上的I/O端****換數(shù)據(jù)。
區(qū)分訪問內(nèi)存與外設(shè)的控制信號是M/IO,當(dāng)其為低電平時(shí),表示CPU訪問I/O設(shè)備。為區(qū)分讀操作或?qū)懖僮鲬?yīng)利用CPU相應(yīng)控制信號,如IOR表示讀I/O端口,IOW表示寫I/O端口。在I/O端口的地址譯碼電路中,還必須使用AEN信號參與譯碼,AEN是DMA允許地址輸出信號,高電平時(shí)表示DAM控制器接管地址總線,只有當(dāng)ANE為低電平時(shí),才表示是CPU接管地址總線,在地址總線上送來的CPU是訪問I/O端口的地址,才允許I/O端口進(jìn)行譯碼輸出。
2.計(jì)算機(jī)與外設(shè)交換信息的方式
計(jì)算機(jī)與外設(shè)交換信息的方式有4種:直接程序傳送方式、程序查詢方式、程序中斷方式和DMA(直接訪問存儲器)方式。
直接程序傳送方式適合于開關(guān)和數(shù)碼顯示器等比較簡單,可以直接向其輸入或輸出的器件。程序查詢方式適用于那些數(shù)據(jù)有一個(gè)準(zhǔn)備與就緒過程的外設(shè),只有外設(shè)準(zhǔn)備好了,CPU才能進(jìn)行數(shù)據(jù)的讀寫。
程序中斷方式使CPU與外設(shè)能同時(shí)并行地工作,以提高CPU的利用率。DMA方式是計(jì)算機(jī)與外設(shè)高速交換信息的方式,這種方式在DMA控制器的控制下,讓外設(shè)與內(nèi)存之間不通過CPU而直接交換數(shù)據(jù)。由于DMA是用硬件實(shí)現(xiàn)這種數(shù)據(jù)交換的,所以速度很高,并且可以批量傳輸,適用于高速外設(shè)。在DMA開始之前要用程序?qū)MA控制器芯片進(jìn)行初始化;在DMA傳輸結(jié)束后,也要用程序進(jìn)行有關(guān)數(shù)據(jù)的處理工作。
3.計(jì)算機(jī)與外設(shè)之間交換信息的內(nèi)容
計(jì)算機(jī)與外設(shè)之間交換信息的類型有3種:外設(shè)的狀態(tài)、計(jì)算機(jī)給外設(shè)的命令、雙方交換的信息。
4.查詢I/O方式
查詢方式的程序設(shè)計(jì)包括如下步驟:①輸入I/O設(shè)備的狀態(tài)信息;
②判斷I/O設(shè)備就緒否?若未就緒,則重新取設(shè)備狀態(tài)繼續(xù)判斷;③若I/O設(shè)備已就緒,則執(zhí)行I/O數(shù)據(jù)傳輸。
查詢方式所需硬件、軟件都很簡單,但浪費(fèi)了大量的CPU時(shí)間。為了提高查詢方式中CPU的工作效率,可以讓CPU依次對多個(gè)外設(shè)查詢,即輪詢。
5.程序中斷I/O方式
在計(jì)算機(jī)中專門負(fù)責(zé)中斷處理的硬件和軟件稱為中斷系統(tǒng)。不同類型的CPU,其中斷系統(tǒng)的機(jī)能不同。
從主程序轉(zhuǎn)向I/O中斷服務(wù)程序的過程稱為中斷響應(yīng),I/O中斷響應(yīng)是通過硬件實(shí)現(xiàn)的。其任務(wù)是:
①保存主程序的返回地址;
②轉(zhuǎn)向中斷服務(wù)程序的入口地址。中斷服務(wù)程序的任務(wù)是:①保護(hù)CPU現(xiàn)場;
②開中斷(在響應(yīng)中斷的過程中要關(guān)中斷,以區(qū)分一次響應(yīng)中斷的過程。若在本次處理中斷的過程中允許響應(yīng)更高級別的中斷,則需及時(shí)開中斷);③中斷服務(wù)處理;
④恢復(fù)主程序的CPU現(xiàn)場;
⑤在80X86系統(tǒng)中,要向8259發(fā)EOI(中斷結(jié)束)命令,以便執(zhí)行中斷嵌套功能;⑥返回主程序的斷點(diǎn)處,以便繼續(xù)執(zhí)行主程序。
6.80X86的中斷系統(tǒng)
80X86CPU設(shè)有256種中斷類型,其中斷類型號為0~255。中斷服務(wù)程序的入口地址集中放在內(nèi)存的中斷向量表中,每個(gè)中斷向量(即中斷服務(wù)程序入口地址)要占4字節(jié),因此,內(nèi)存的中斷向量表共占1KB,分布在內(nèi)存地址區(qū)間0~3FFH中。
已知中斷類型號為n,則相應(yīng)的中斷向量地址為4n,在4n和4n+1地址單元中存放該中斷服務(wù)程序入口地址的偏移量,在4n+2和4n+3單元中存放中斷服務(wù)程序入口的段地址。
7.8259中斷控制器芯片
一片8259可提供8個(gè)I/O中斷源,在286以上的PC機(jī)中用兩片8259級聯(lián),可提供15個(gè)I/O中斷源。在8259中,用中斷服務(wù)寄存器ISR存放正在服務(wù)的中斷源標(biāo)志。8259的全嵌套中斷工作方式是允許在中斷服務(wù)程序的執(zhí)行過程中響應(yīng)更高級別中斷請求的方式,它要求中斷服務(wù)程序在中斷返回之前,向8259發(fā)EOI(中斷結(jié)束)命令,以便8259清除ISR寄存器中該中斷源的對應(yīng)位,轉(zhuǎn)去處理級別較低的中斷服務(wù)。
8259在其8個(gè)中斷源IRQ0~I(xiàn)RQ7中,規(guī)定其優(yōu)先級別是:IRQ0最高,IRQ1次之,……IRQ7最低。
通過設(shè)置初始化命令字可以改變中斷源的優(yōu)先級別,甚至可以使優(yōu)先權(quán)在各中斷源之間輪流旋轉(zhuǎn)。
8.8259的初始化命令字
8259的初始化命令字共有4個(gè),ICW1~I(xiàn)CW4必須按順序?qū)懭搿?259只有2個(gè)端口地址,即一個(gè)為偶數(shù)的地址和一個(gè)為奇數(shù)的地址,ICW1應(yīng)寫入偶地址,ICW2~I(xiàn)CW4均是奇地址。ICW1用于設(shè)置8259的基本工作方式。
ICW2用于設(shè)置中斷類型,使中斷源IRQ號與CPU的中斷類型號建立一一對應(yīng)的關(guān)系。ICW3用于設(shè)置8259級聯(lián)的具體方式。
ICW4用于設(shè)置中斷結(jié)束方式、緩沖方式、特殊的全嵌套方式等。
中斷結(jié)束方式分為自動(dòng)中斷結(jié)束方式和非自動(dòng)中斷結(jié)束方式,前者適用于無中斷嵌套的情況,8259中ISR的中斷源標(biāo)志在CPU響應(yīng)中斷請求后由8259自動(dòng)清除,在中斷服務(wù)序中無需向8259發(fā)EOI命令;后者適用于中斷嵌套的情況,在中斷服務(wù)程序結(jié)束前,要8259發(fā)EOI命令,以便清除ISR中相應(yīng)的中斷源標(biāo)志位。在PC機(jī)中采用非自動(dòng)中斷結(jié)束式,即中斷程序在返回主程序之前,必須向8259發(fā)EOI命令。
緩沖方式指8259和系統(tǒng)的數(shù)據(jù)總線之間經(jīng)緩沖器相連;非緩沖方式則是直接相連。
當(dāng)8259級聯(lián)工作時(shí),應(yīng)采用特殊的全嵌套方式,允許主片響應(yīng)同級的中斷請求。一8259(主片)的8個(gè)IR輸入端最多可經(jīng)8個(gè)8259(從片)擴(kuò)展為64個(gè)輸入端。用2片8259則將中斷源輸入端擴(kuò)展為15個(gè)。
9.DMA控制器芯片8237
8237通過HRQ向80X86CPU的HOLD發(fā)出DMA請求,CPU通過HLDA向8237作出確認(rèn),同時(shí)CPU將總線控制權(quán)交給8237。
在8237中有4個(gè)DMA通道,每個(gè)通道都可以連接一個(gè)獨(dú)立的I/O設(shè)備,它們不能同時(shí)工作,優(yōu)先順序?yàn)橥ǖ?~通道3。在每個(gè)通道中都有2個(gè)端口:一個(gè)16位的地址寄存器和一個(gè)16位的字節(jié)計(jì)數(shù)器,前者用來指示進(jìn)行DMA數(shù)據(jù)傳輸時(shí)在內(nèi)存中的起始地址,后者用來對傳輸?shù)腄MA數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù),以便控制DMA傳送的結(jié)束。因此一片8237共有8個(gè)端口。
8237可以通過DREQ(連次級的HRQ)和DACK(連次級的HLDA)來實(shí)現(xiàn)級聯(lián),這樣,用5片8237(1個(gè)主片,4個(gè)從片)就可以使MDA通道數(shù)擴(kuò)大到16個(gè)。10.擴(kuò)大DMA可尋址的內(nèi)存空間
由于8237的地址寄存器為16位,因此可尋址的內(nèi)存空間為64KB,為了擴(kuò)大DMA可尋址的內(nèi)存空間,可在8237外建立頁面地址寄存器,設(shè)頁面地址寄存器為12位,則DMA總的可尋址空間為216+12=256MB,可滿足現(xiàn)行PC機(jī)的要求。