650 likes | 771 Views
149. Chapter 5 可規劃中斷控制器. 148. 為了不影響到微處理機處理能力,且又能夠充分的與這些週邊裝置做有效的溝通,一般在微處理機與 I/O 週邊之間所採取的處理方式有兩種分別是為:詢問 (polling) 方式及中斷 (interrupt) 式。. 149. 詢問式 (Polling). 微處理機必須有次序的去測試每一個裝置 (devicer) 且有效的詢問每一裝置是否需要服務。 CPU 於每隔一段時間必須去查詢週邊,嚴重影響系統中 CPU 的執行效率,而使得 CPU 的大部時間都花費在週邊裝置詢問上。
E N D
149 Chapter 5可規劃中斷控制器
148 為了不影響到微處理機處理能力,且又能夠充分的與這些週邊裝置做有效的溝通,一般在微處理機與I/O週邊之間所採取的處理方式有兩種分別是為:詢問 (polling) 方式及中斷 (interrupt) 式。
149 詢問式 (Polling) 微處理機必須有次序的去測試每一個裝置 (devicer) 且有效的詢問每一裝置是否需要服務。CPU於每隔一段時間必須去查詢週邊,嚴重影響系統中CPU的執行效率,而使得CPU的大部時間都花費在週邊裝置詢問上。 詢問方式是為由CPU採取主動方式.
150 需再等待下一週期的詢問方可被服務。 由上述中可發現到詢問式存在有下列的許多問題: 1. 詢問的週期應多久一次最恰當,另外,隨著週邊裝置 的增加,詢問週期也會增加,形成系統執行效率的降 低。 2. 每一個週邊裝置並非一定要經常且週期性的被詢問, 因此對每個週邊裝置則各別具有不同的被服務時間 表,會增加軟體的負荷。 3. 被詢問到的週邊裝置若不需要服務時,形同浪費相當可 惜;但急切被服務的裝置卻需等到被處理器詢問到時方 可產生動作,造成無法達到最大使用效率之目的。
151 中斷式 (Interrupt) 此方式是採取週邊需求主動要求方式,微處理機是處於被動地位,因此CPU不必隨時去查詢各週邊裝置是否需要服務,是為多數系統所採用的一種服務方式。 每一個裝置均可在任何的時間中提出被服務的要求,當處理器執行完正在執行的指令之後,便會依一定的程式跳到所需的服務程式中 .
152 中斷與中斷處理 在IBM PC/AT的系統中,產生中斷的方式有三種: 1. 硬體中斷 CPU中有二個硬體中斷輸入埠分別為可遮罩 的中斷輸入 (INTR) 及非遮罩的中斷輸入 (NMI)。 2. 軟體中斷,此種中斷方式的產生是由於CPU執行到INT XX時所產生的中斷,可由BIOS的中斷向量表中查得. 執行中的某些指令所造成,如於數值計算中的除零,當CPU執行到此指令時,會因除數為零而自動產生中斷.
153 中斷的處理過程 中斷控制信號依其動作 (active) 的方式可有準位觸發動作及邊緣觸發 (edge-trigger) 動作。一般而言INTR是為高準位動作,而NMI則是為正邊緣動作。
154 8259A可程式規劃中斷控制器 PC/AT中所使用的中斷控制器是為8259A可程式化中斷控制器 CPU提供八個向量優先中斷,並可在不同額外增加電路的情況下串接擴充到64個中斷向量。
154 8259A的工作原理 8259A的功能方塊圖分有八部分,其中較重要的部分為: 中斷要求暫存器 (interrupt request register, IRR); 中斷遮罩暫存器 (interrupt mask register, IMR); 正在服務暫存器 (in service request, IRS); 優先權調解器 (priority resolver, PR)。
154 IRR是用來儲存所有的中斷要求輸入,ISR儲存所有正在服務中的中斷要求,IMR則是用來決定那一中斷輸入被遮罩與否?而PR則是為縱觀上述三個暫存器以決定必須送出那一條中斷要求線的訊號,再透過控制邏輯單元發出中斷信號 (INT) 給處理器。
154 IRR (中斷要求暫存器) 一8位元暫存器,用來儲存中斷要求的輸入狀態,其中每一個位元對應著一個中斷要求.元是為“1”時,則表示該中斷輸入是被致能,亦即於8259A的中斷要求腳有中斷要求被提出,並且被閂鎖在內部暫存器。
156 IMR (中斷遮罩暫存器) 本暫存器也是為一具有8個位元的暫存器,IRR中的8個位元。也就是當要使某一中斷控制接腳被遮罩 可由IMR中所對應的位元予以設定為“1”,就可使該IRQ不被服務. IMR主要是由軟體來規劃設定的,若是M0~M7均為“1”即IMR之值為FFH時,表示8295A的8個中斷要求輸入IRQ0~IRQ7將全部沒有作用。
157 ISR (正在服務暫存器) 8個位元的暫存器,其主要的功能是儲存目前正在由系統所服務的最高優先權的中斷向量 ( 即IRQ0~IRQ7) 那一個中斷正在被執行。 圖5-7是為ISR與IRR及IMR三者之間的動作流程與相互關係。當有中斷要求提出時,則所相對於IRR中的位元被設定之,經由IMR的比對沒有被遮罩再由PR作優先權選擇之後,經由控制邏輯發出INT,由CPU認可之後,8259A會於 線上收到兩個負脈衝信號。
158 ◎ 第一個負脈衝發生時電路的動作為: 1. IRR將會被禁止,不再理會IRQ0~IRQ7線上新進入的信號。 2. IRR所相對應的最高優先權中之位元會被清除為0。 3. ISR的相對應位元會被設定為“1”,表示該中斷要求正要被服務。 ◎ 第二負向脈衝發出時的電路動作情形為: 1. 中斷向量指標會放在D0~D7資料匯流排上,CPU利用此位元組來計算中斷副程式的位址。 2. 由第一個INTA脈波所設定的ISR之位元會被取消 (1→0) 於收到EOI時。
158 PR (優先權分解器) 優先權分解器並非為一暫存器,而是為一邏輯電路,其功能是用以決定那一中斷輸入有最高的優先中斷權. 圖5-8為PR的動作流程圖,當有中斷要求進來時,先經由IMR的比對確定沒有被禁能時,此時中斷要求 ( 一或是數個 ) 再由PR來決定執行服務的優先權。
159 資料匯流排緩衝器 8259A系統方塊圖中,三個暫存器及PR之外,尚有三個部分加以分工合作以完成中斷控制器的動作. (一) 資料匯流排緩衝器 (二) 讀 / 寫控制邏輯電路 (三) 串聯緩衝器 / 比較器
160 中斷電路
162 CAS0、CAS1、CAS2 (cascade line) 三條線均可當作輸入或是輸出使用,是受制於8259A為何種工作型式而決定之。 被規劃為主中斷控制器時間,SP/EN接高態“H”,則此三條線就為輸入之用。各個串接的8259A之CAS0~CAS2是並列的接在一起,即構成為一8259A的私用匯流排,可用本指示在產生中斷時究竟是應由僕8259A的那一中斷裝置來產生中斷指標送到資料匯流排上。
163 串接中斷結構 8259A可以擴充到最多64個等級的中斷輸入要求,並且不需要額外的硬體電路. 當SP/EN為“H”時則表示8259A為主 (master) 中斷控制器;若是SP/EN接“L”時則是被當作僕 (slaver) 中斷控制器。 只有主8259A才可以對CPU發出中斷要求,其餘則是被當作僕8259A的中斷要求輸入.
164 中斷指標的產生 中斷的過程 1. 一個或多個I/O裝置提出中斷要求,在8259A的內部暫存器IRR的相對位元被設定為1。 2. 8259A的PR對中斷要求優先權作分解後,送出INT給處理機。 3. 處理機收到INT之後,若允許中斷的要求,則會回送兩個INTA脈波給8259A。
165 4. 當8259A收到第一個INTA信號時,其最高優先的ISR位元被設定為1,所對應的IRR位元被清除掉。 5. 接著8259A收到的第二個INTA時,8259A就送出一八位元預先規劃好的中斷指標於資料匯流排上。 6. CPU收到此中斷向量指標之後再予以轉換成記憶體位址而得到中斷副程式的實際位址。
中斷指標 此向量指標相當於間接位址指示,在記憶體的位址由00000H至003FFH,是分別存放這256個中斷指標的位址,每四個位元組代表一中斷指標,前兩個位元組為指令指標 (instruction point, IP),後兩個位元組為程式段落暫存器 (code segment, CS)
(b)所送出的中斷指標為50H是十六進位,若直接轉換成記憶體位址可由指標值乘四個位元組所組成(b)所送出的中斷指標為50H是十六進位,若直接轉換成記憶體位址可由指標值乘四個位元組所組成 50×4=140H 即 IP值存放在140H、141H處 CS值存放在142H、143H處
167 8259A的規劃 必須對8259A的兩個命令字組作規劃,分別是為: 1. 初始命令字組 (ICW):,一旦ICW被規劃到8259A以後,8259A才可以接受外部的中斷要求。 2. 操作命令字組 (OCW):這些命令字組可以控制8259A操作於不同的中斷模式: (1) 完全巢狀模式 (2) 可旋轉的優先模式 (3) 特殊遮罩模式 (4) 輪詢模式
167 初始命令字組 (ICW) ICW總共有四個,ICW1和ICW2是為一定要規劃定義的初始命令字組,而ICW3和ICW4則是視ICW1的內容而決定之。整個程序若要加以修改時,必須由ICW1開始,不能僅是對ICW2、ICW3或ICW4中的任何一個單獨為之。
169 ICW1 ICW1的設定之先決條件必須為位址腳 及控制字組的D4位元為1才可以。 D0位元是用來決定是否而要規劃ICW4命令字組,而ICW4是為CPU類型的決定。若 表示需要對ICW4規劃;反之若 則表示不需要規劃ICW4。
170 ICW2 ICW2命令字組是用來定義中斷向量位址,在MC 8080/8085型態中,呼叫位址間隔可有差4及差8兩種.若是所使用的CPU為時,因所採用的是中斷指標,故由D7~D3 (T7~T3) 來定義中斷向量值。
172 ICW3 ICW3是用來規劃8259串接有僕中斷控制器時,也就是當ICW1的位元1 (D1) 是為0時,則表示有串接8259A,才需對ICW3作規劃。 當有串接時,應分別對主8259A及僕 (slaver) 8259A之ICW3作規劃 .
173 ICW4 本命令字組是用來決定微處理機的類型、中斷的方式及巢狀模式等之定義。
175 操作命令字組 (OCW) 一旦初始命令字組 (ICW) 被規劃之後,8259A的IRQ0~IRQ7就準備接受外部的中斷。 ICW及OCW的互動關係流程說明。ICW是為使8259A處於固定的操作模式所必備之條件;而OCW的規劃則是為更加有效影響8259A的操作模式.
175 OCW1 OCW1是為用來定義中斷遮罩暫存器.其中之M0~M7位元,是為用來控制中斷要求 (IR) 輸入腳是否被遮罩。
176 OCW2 OCW2則是用來設定中斷要求輸入腳的EOI形式,以及中斷優先權是否旋轉及旋轉方式選擇。
旋轉優先權 D7 (R) 此位元是用來控制所有8259A的旋轉優先權操作方式,若此位元為1,則其優先權的順序是採旋轉的形式來執行,則是由EOI與SL來決定。若此位元為0則旋轉動作就不會被執行。
1. 非特定的中斷結束命令 (R、SL、EOI→0、0、1) 於字組的位元中,此命令是用來通知8259A,當一個中斷服務程式執行完畢之後,不需要特別指定那一個中斷等級,8259A就會在內部自動的決定要清除所對應的那一個ISR位元。